From 7d424694393fb4b2612df9d0048bed3ea0f65b59 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 12 Aug 2026 02:14:12 +0530 Subject: [PATCH 01/55] feat(check): re-gate cluster-validator per compute-plane targeting and widen RBAC --- src/clis/nvcf-cli/cmd/self_hosted_check.go | 154 ++++++++++++--- .../nvcf-cli/cmd/self_hosted_check_test.go | 160 ++++++++++++++++ .../internal/selfhosted/clustervalidator.go | 175 +++++++++++++++--- .../selfhosted/clustervalidator_test.go | 153 +++++++++++++-- 4 files changed, 584 insertions(+), 58 deletions(-) diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index dafb00fbf5..2498e8340f 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -22,6 +22,7 @@ import ( "fmt" "io" "os" + "path/filepath" "time" "github.com/spf13/cobra" @@ -45,6 +46,7 @@ var ( checkClusterValidatorImage string checkClusterValidatorPullSecret string checkClusterValidatorNoCleanup bool + checkClusterValidatorRegistries []string checkShowLogs bool ) @@ -58,9 +60,19 @@ var newClusterValidatorForSelfHosted = func() selfhosted.ClusterValidator { return selfhosted.NewClusterValidator() } +// Test seam. +var newStaleNamespaceProberForSelfHosted = func() selfhosted.StaleNamespaceProber { + return selfhosted.NewStaleNamespaceProber() +} + // Test seam. Tests stub this to skip the registry network call. var resolveLatestValidatorTagForSelfHosted = selfhosted.ResolveLatestValidatorTag +// Test seam. +var newRegistryCredentialCheckerForSelfHosted = func() selfhosted.RegistryCredentialChecker { + return selfhosted.NewRegistryCredentialChecker() +} + var checkWriterIsTTY = isWriterTTY var selfHostedCheckCmd = &cobra.Command{ @@ -100,6 +112,13 @@ func init() { selfHostedCheckCmd.Flags().BoolVar(&checkClusterValidatorNoCleanup, "no-cleanup", false, "Disable the validator Job's TTL so the Job persists for debugging. "+ "The next run still deletes prior Jobs via the singleton sweep.") + selfHostedCheckCmd.Flags().StringSliceVar(&checkClusterValidatorRegistries, "cluster-validator-registries", nil, + "Additional container registries to probe for reachability in the control-plane validator. "+ + "Format: host:port (e.g. harbor.company.internal:443,ghcr.io:443). "+ + "nvcr.io is always included. Env: NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES. "+ + "Can also be set in nvcf-cli config as cluster_validator_registries (list).") + _ = viper.BindPFlag("cluster_validator_registries", + selfHostedCheckCmd.Flags().Lookup("cluster-validator-registries")) selfHostedCheckCmd.Flags().BoolVar(&checkShowLogs, "show-logs", false, "Print the cleaned cluster-validator transcript to stderr after the check events. "+ "Useful when piping --json output to a script that also wants the transcript.") @@ -113,17 +132,25 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { localOnly := checkLocalOnly || os.Getenv("NVCF_CLI_SELFHOSTED_LOCAL_ONLY") != "" skipClusterValidation := checkSkipClusterValidation || os.Getenv("NVCF_CLI_SELFHOSTED_SKIP_CLUSTER_VALIDATION") != "" + // Mode is needed before image resolution so computePlaneIsTargeted can + // gate the registry round trip. ValidateFlags in PersistentPreRunE + // guarantees mode is ModeSingle or ModeSplit here. + mode := kubectx.SelectMode(selfHostedControlPlaneContext, selfHostedComputePlaneContext) + // Resolve the validator image up-front so we can right-size the // outer timeout (only when the validator actually runs) and emit a // one-shot stderr note up-front explaining why no validator row // appears in the output. Empty == not configured anywhere. + // One image covers both roles (VALIDATOR_ROLE selects the check set). + anyValidatorIsTargeted := !localOnly && !skipClusterValidation && + (computePlaneIsTargeted(mode) || controlPlaneIsTargeted(mode)) clusterValidatorImage := "" - if !localOnly && !skipClusterValidation && (checkPre || checkAll) { + if anyValidatorIsTargeted { if img, ok := resolveClusterValidatorImage(c.Context()); ok { clusterValidatorImage = img } } - clusterValidatorWillRun := !localOnly && !skipClusterValidation && (checkPre || checkAll) && clusterValidatorImage != "" + clusterValidatorWillRun := anyValidatorIsTargeted && clusterValidatorImage != "" // The cluster-validator Job's internal budget is 5m // (selfhosted.clusterValidatorTimeout). The outer ctx must be at least @@ -154,7 +181,7 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { // validator row" with "validator silently dropped". Print at most one // reason; --skip-cluster-validation takes precedence over missing // config since it's the explicit operator choice. - if !localOnly && (checkPre || checkAll) { + if !localOnly && (computePlaneIsTargeted(mode) || controlPlaneIsTargeted(mode)) { switch { case skipClusterValidation: fmt.Fprintln(c.ErrOrStderr(), "note: cluster-validator skipped (--skip-cluster-validation)") @@ -163,9 +190,27 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { } } + // Enumerate registries for the local credential check. Skipped when + // local-only (no network) or when no validator image is configured. + // Uses the same extras list as the in-cluster ConfigMap reachability check. + var ( + credEntries []selfhosted.RegistryEntry + registryChecker selfhosted.RegistryCredentialChecker + ) + if !localOnly && clusterValidatorImage != "" { + extraRegistries := viper.GetStringSlice("cluster_validator_registries") + stackValuesFile := resolveStackValuesFile() + credEntries = selfhosted.EnumerateRegistries( + clusterValidatorImage, stackValuesFile, extraRegistries, + ) + registryChecker = newRegistryCredentialCheckerForSelfHosted() + } + cfg := selfhosted.PreflightConfig{ - LocalOnly: localOnly, - Tools: selfHostedPreflightTools(), + LocalOnly: localOnly, + Tools: selfHostedPreflightTools(), + Registries: credEntries, + RegistryChecker: registryChecker, } sink, err := selectCheckRenderer(c.ErrOrStderr(), selfHostedWait != "") @@ -181,8 +226,8 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { runOnce := func() []selfhosted.CheckResult { var results []selfhosted.CheckResult - if checkPre || checkAll { - results = append(results, runPreflightByRole(ctx, cfg, sink, clusterValidatorImage)...) + if checkPre || checkAll || checkControlPlane || checkComputePlane { + results = append(results, runPreflightByRole(ctx, cfg, sink, mode, clusterValidatorImage)...) } // Inject force-fail seam for tests. if os.Getenv("NVCF_CLI_SELFHOSTED_FORCE_FAIL") != "" { @@ -194,7 +239,6 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { Message: "forced failure (test seam)", }}, results...) } - // control-plane / compute-plane wired in M3/M4 — placeholder no-op for M2. return results } @@ -240,6 +284,44 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { } } +// resolveStackValuesFile walks up from the current working directory to find +// the active environment values YAML. Returns "" when not found so callers +// skip the optional lookup gracefully. +func resolveStackValuesFile() string { + cwd, err := os.Getwd() + if err != nil { + return "" + } + // Walk up to 6 directory levels to find the stack environments directory. + dir := cwd + for i := 0; i < 6; i++ { + candidate := filepath.Join(dir, + "deploy", "stacks", "self-managed", "environments", "local.yaml") + if _, err := os.Stat(candidate); err == nil { + return candidate + } + parent := filepath.Dir(dir) + if parent == dir { + break + } + dir = parent + } + return "" +} + +// computePlaneIsTargeted reports whether the compute-plane validator should run: +// --compute-plane, --all, or --pre in ModeSingle. --pre in ModeSplit does not +// target it because separate clusters have no implicit compute-plane role. +func computePlaneIsTargeted(mode kubectx.Mode) bool { + return checkComputePlane || checkAll || (checkPre && mode == kubectx.ModeSingle) +} + +// controlPlaneIsTargeted mirrors computePlaneIsTargeted but for the control +// plane. Runs when: --control-plane, --all, or --pre in ModeSingle. +func controlPlaneIsTargeted(mode kubectx.Mode) bool { + return checkControlPlane || checkAll || (checkPre && mode == kubectx.ModeSingle) +} + // maybeShowClusterValidatorLogs prints the cleaned cluster-validator transcript // to the given writer when --show-logs is set, framed by markers so operators // can find it in mixed CLI output. Silent no-op when: @@ -296,10 +378,10 @@ func selectCheckRenderer(w io.Writer, wait bool) (progress.EventSink, error) { // - ModeSingle (no context flags) → RoleControlPlane + RoleComputePlane sequentially // - ModeSplit (both context flags set) → RoleControlPlane + RoleComputePlane in parallel // -// clusterValidatorImage is the already-resolved validator image (empty when -// not configured). Resolution happens in the caller so the outer-timeout -// and stderr-note logic can see the same answer this function does. -func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sink progress.EventSink, clusterValidatorImage string) []selfhosted.CheckResult { +// mode is the already-resolved kubectx.Mode (hoisted to the caller so image +// resolution and timeout sizing share the same answer). clusterValidatorImage +// is the already-resolved validator image (empty when not configured). +func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sink progress.EventSink, mode kubectx.Mode, clusterValidatorImage string) []selfhosted.CheckResult { // LocalOnly: skip all cluster probes. if cfg.LocalOnly { return selfhosted.RunPreflightForRole(ctx, cfg, selfhosted.RoleLocalOnly, selfhosted.RoleConfig{}, sink) @@ -309,7 +391,6 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin if checkAll || checkComputePlane || !checkPre { icmsURL = resolveICMSURL(selfHostedICMSURL) } - mode := kubectx.SelectMode(selfHostedControlPlaneContext, selfHostedComputePlaneContext) skipInotify := checkSkipInotifyCheck || os.Getenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY") != "" var inotifyProber selfhosted.NodeInotifyProber @@ -328,6 +409,19 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin clusterValidator = newClusterValidatorForSelfHosted() } + staleNSProber := newStaleNamespaceProberForSelfHosted() + + // Additional registries to probe in the control-plane validator ConfigMap. + // Priority: flag > env > config file. + registries := viper.GetStringSlice("cluster_validator_registries") + + // The cluster-validator image is the same for both roles; VALIDATOR_ROLE + // in the Job env selects which check set runs inside the binary. + var cpClusterValidator selfhosted.ClusterValidator + if controlPlaneIsTargeted(mode) && clusterValidator != nil { + cpClusterValidator = newClusterValidatorForSelfHosted() + } + switch mode { case kubectx.ModeSplit: // Run both roles in parallel; each gets its own kubeconfig context. @@ -337,7 +431,15 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ) eg, egCtx := errgroup.WithContext(ctx) eg.Go(func() error { - rc := selfhosted.RoleConfig{KubeContext: selfHostedControlPlaneContext} + rc := selfhosted.RoleConfig{ + KubeContext: selfHostedControlPlaneContext, + ClusterValidator: cpClusterValidator, + ClusterValidatorImage: clusterValidatorImage, + ClusterValidatorPullSecret: checkClusterValidatorPullSecret, + ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, + ClusterValidatorRegistries: registries, + StaleNamespaceProber: staleNSProber, + } cpResults = selfhosted.RunPreflightForRole(egCtx, cfg, selfhosted.RoleControlPlane, rc, sink) return nil }) @@ -350,6 +452,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorImage: clusterValidatorImage, ClusterValidatorPullSecret: checkClusterValidatorPullSecret, ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, + StaleNamespaceProber: staleNSProber, } gpuResults = selfhosted.RunPreflightForRole(egCtx, cfg, selfhosted.RoleComputePlane, rc, sink) return nil @@ -358,7 +461,15 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin return append(cpResults, gpuResults...) default: // ModeSingle — no context flags; union both role check sets sequentially. - cpRC := selfhosted.RoleConfig{SISURL: icmsURL} + cpRC := selfhosted.RoleConfig{ + SISURL: icmsURL, + ClusterValidator: cpClusterValidator, + ClusterValidatorImage: clusterValidatorImage, + ClusterValidatorPullSecret: checkClusterValidatorPullSecret, + ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, + ClusterValidatorRegistries: registries, + StaleNamespaceProber: staleNSProber, + } gpuRC := selfhosted.RoleConfig{ SISURL: icmsURL, InotifyProber: inotifyProber, @@ -366,6 +477,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorImage: clusterValidatorImage, ClusterValidatorPullSecret: checkClusterValidatorPullSecret, ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, + StaleNamespaceProber: staleNSProber, } cpResults := selfhosted.RunPreflightForRole(ctx, cfg, selfhosted.RoleControlPlane, cpRC, sink) gpuResults := selfhosted.RunPreflightForRole(ctx, cfg, selfhosted.RoleComputePlane, gpuRC, sink) @@ -373,15 +485,9 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin } } -// Resolves the validator image from the viper-backed config chain -// (flag > env > config-file > default). Returns ("", false) when nothing -// is configured so the caller can surface a clear "not configured" -// warning instead of pulling from a stale built-in default. -// -// When the configured value already has a tag, it is used as-is. When it -// names only a repo, the latest tag is discovered from the registry -// (preferring stable over rc, 1h cached); any discovery failure falls -// back to the configured value unchanged. +// resolveClusterValidatorImage resolves the validator image from flag > env > +// config-file. Returns ("", false) when unconfigured. When only a repo is +// given, discovers the latest stable tag (1h cached; falls back on failure). func resolveClusterValidatorImage(ctx context.Context) (string, bool) { image := viper.GetString("cluster_validator_image") if image == "" { diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go index d3a6d94b64..218bdca80c 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go @@ -30,6 +30,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "nvcf-cli/internal/selfhosted/kubectx" "nvcf-cli/internal/selfhosted/progress" ) @@ -343,6 +344,165 @@ func TestCheck_SplitClusterMode(t *testing.T) { assert.Contains(t, categories, "compute-plane-cluster", "expected compute-plane-cluster in split mode") } +// TestComputePlaneIsTargeted tests the predicate that gates the cluster-validator +// probe. The validator should run when the compute plane is explicitly targeted +// (--compute-plane, --all) or implicitly targeted by ModeSingle + --pre. +// It must NOT run for --pre alone in ModeSplit, where the two context flags +// identify separate clusters and --pre does not constitute targeting the compute plane. +func TestComputePlaneIsTargeted(t *testing.T) { + t.Cleanup(func() { + checkPre = false + checkComputePlane = false + checkAll = false + }) + + tests := []struct { + name string + pre bool + cp bool + all bool + mode kubectx.Mode + want bool + }{ + {"--compute-plane single", false, true, false, kubectx.ModeSingle, true}, + {"--compute-plane split", false, true, false, kubectx.ModeSplit, true}, + {"--all single", false, false, true, kubectx.ModeSingle, true}, + {"--all split", false, false, true, kubectx.ModeSplit, true}, + {"--pre single — implicit compute plane", true, false, false, kubectx.ModeSingle, true}, + {"--pre split — must not target compute plane", true, false, false, kubectx.ModeSplit, false}, + {"--control-plane only", false, false, false, kubectx.ModeSingle, false}, + {"no relevant flag", false, false, false, kubectx.ModeSingle, false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + checkPre = tt.pre + checkComputePlane = tt.cp + checkAll = tt.all + assert.Equal(t, tt.want, computePlaneIsTargeted(tt.mode)) + }) + } +} + +// TestCheck_ComputePlaneFlagRunsChecks verifies that --compute-plane alone +// produces compute-plane-cluster category events. Before the gating fix this +// flag was a complete no-op and produced no check events at all. +func TestCheck_ComputePlaneFlagRunsChecks(t *testing.T) { + t.Cleanup(func() { + selfHostedJSON = false + selfHostedOutput = "text" + checkComputePlane = false + }) + + var stderr bytes.Buffer + rootCmd.SetErr(&stderr) + rootCmd.SetOut(&bytes.Buffer{}) + + rootCmd.SetArgs([]string{"self-hosted", "check", "--compute-plane", "--json"}) + _ = rootCmd.Execute() + + lines := parseJSONLLines(t, stderr.String()) + require.NotEmpty(t, lines, "expected at least one JSONL line") + + var categories []string + for _, l := range lines[1:] { + if l["event"] == "category_completed" { + if cat, ok := l["category"].(string); ok { + categories = append(categories, cat) + } + } + } + assert.Contains(t, categories, "compute-plane-cluster", + "--compute-plane must produce compute-plane-cluster events") +} + +// TestCheck_ControlPlaneFlagRunsChecks verifies that --control-plane alone +// produces control-plane-cluster category events. +func TestCheck_ControlPlaneFlagRunsChecks(t *testing.T) { + t.Cleanup(func() { + selfHostedJSON = false + selfHostedOutput = "text" + checkControlPlane = false + }) + + var stderr bytes.Buffer + rootCmd.SetErr(&stderr) + rootCmd.SetOut(&bytes.Buffer{}) + + rootCmd.SetArgs([]string{"self-hosted", "check", "--control-plane", "--json"}) + _ = rootCmd.Execute() + + lines := parseJSONLLines(t, stderr.String()) + require.NotEmpty(t, lines, "expected at least one JSONL line") + + var categories []string + for _, l := range lines[1:] { + if l["event"] == "category_completed" { + if cat, ok := l["category"].(string); ok { + categories = append(categories, cat) + } + } + } + assert.Contains(t, categories, "control-plane-cluster", + "--control-plane must produce control-plane-cluster events") +} + +// TestCheck_ValidatorSkipNoteAppearsOnComputePlane verifies that the +// "cluster-validator skipped" note appears on stderr when --compute-plane is +// used with --skip-cluster-validation (compute plane is targeted, validator is +// suppressed). +func TestCheck_ValidatorSkipNoteAppearsOnComputePlane(t *testing.T) { + t.Cleanup(func() { + selfHostedJSON = false + selfHostedOutput = "text" + checkComputePlane = false + checkSkipClusterValidation = false + }) + + var stderr bytes.Buffer + rootCmd.SetErr(&stderr) + rootCmd.SetOut(&bytes.Buffer{}) + + rootCmd.SetArgs([]string{ + "self-hosted", "check", "--compute-plane", + "--skip-cluster-validation", "--json", + }) + _ = rootCmd.Execute() + + assert.Contains(t, stderr.String(), "cluster-validator skipped", + "expected skip note when compute plane is targeted and --skip-cluster-validation is set") +} + +// TestCheck_ValidatorSkipNoteAbsentForPreInSplitMode verifies that the +// "cluster-validator skipped" note does NOT appear when --pre is used in +// split mode, because the compute plane is not explicitly targeted and +// ModeSplit + --pre does not implicitly make either context the compute plane. +func TestCheck_ValidatorSkipNoteAbsentForPreInSplitMode(t *testing.T) { + t.Cleanup(func() { + selfHostedJSON = false + selfHostedOutput = "text" + checkPre = false + checkSkipClusterValidation = false + selfHostedControlPlaneContext = "" + selfHostedComputePlaneContext = "" + }) + + var stderr bytes.Buffer + rootCmd.SetErr(&stderr) + rootCmd.SetOut(&bytes.Buffer{}) + + rootCmd.SetArgs([]string{ + "self-hosted", "check", "--pre", + "--skip-cluster-validation", "--json", + "--control-plane-context", "admin@cp", + "--compute-plane-context", "admin@gpu1", + }) + _ = rootCmd.Execute() + + assert.NotContains(t, stderr.String(), "cluster-validator skipped", + "skip note must not appear for --pre in split mode (compute plane not targeted)") +} + // parseJSONLLines splits s into non-empty lines, skips any non-JSON lines // (e.g. cobra error messages written to stderr), and unmarshals each JSON line // as an object. Returns them in order. diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 5df457fa76..a9e1c6832b 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -71,6 +71,15 @@ type ClusterValidatorParams struct { Image string PullSecret string NoCleanup bool + // Role selects which check set the validator runs: "control-plane" or + // "compute-plane" (empty = compute-plane default). Passed to the Job as + // VALIDATOR_ROLE. See clustervalidator.RoleControlPlane / RoleComputePlane. + Role string + // Registries is a list of additional "host:port" registry endpoints to + // probe for reachability in the control-plane validator ConfigMap (in + // addition to nvcr.io which is always included). Ignored for the + // compute-plane role. + Registries []string } // Err is non-nil only when the run failed to execute (RBAC bootstrap, @@ -98,12 +107,12 @@ func NewClusterValidator() ClusterValidator { if err != nil { return ClusterValidatorResult{Err: fmt.Errorf("building kubernetes client: %w", err)} } - return runClusterValidator(ctx, client, p.Image, p.PullSecret, p.NoCleanup) + return runClusterValidator(ctx, client, p.Image, p.PullSecret, p.NoCleanup, p.Role, p.Registries) } } // Testable core. Pass a fake clientset to unit-test without a real cluster. -func runClusterValidator(ctx context.Context, client kubernetes.Interface, image, pullSecret string, noCleanup bool) ClusterValidatorResult { +func runClusterValidator(ctx context.Context, client kubernetes.Interface, image, pullSecret string, noCleanup bool, role string, registries []string) ClusterValidatorResult { if image == "" { // Defensive: callers gate on configured image before invoking the // validator, so this branch shouldn't fire in normal use. @@ -128,11 +137,23 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image return ClusterValidatorResult{Err: fmt.Errorf("bootstrapping validator RBAC: %w", err)} } + // For the control-plane role, create a ConfigMap with reachability + // endpoints and enforcement config so the validator runs its configurable + // checks. Best-effort: a failure here is logged but does not abort the + // run — the validator gracefully skips configurable checks when the + // ConfigMap is absent. + if role == clusterValidatorControlPlaneRole { + if err := ensureClusterValidatorConfig(vctx, client, registries); err != nil { + // Non-fatal: reachability checks will be skipped, not the whole run. + _ = err + } + } + sweepPriorClusterValidatorJobs(vctx, client) jobName := fmt.Sprintf("%s-%d", clusterValidatorName, time.Now().UnixNano()) if _, err := client.BatchV1().Jobs(clusterValidatorNamespace).Create( - vctx, buildClusterValidatorJob(jobName, image, pullSecret, noCleanup), metav1.CreateOptions{}, + vctx, buildClusterValidatorJob(jobName, image, pullSecret, role, noCleanup), metav1.CreateOptions{}, ); err != nil { return ClusterValidatorResult{Err: fmt.Errorf("creating validator Job: %w", err)} } @@ -167,9 +188,8 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image } // Creates the SA/ClusterRole/ClusterRoleBinding the validator pod runs under, -// idempotent via AlreadyExists tolerance. Permissions mirror the -// nvca-operator chart's validator rbac.yaml (read-only). Resources persist -// across runs; the sweep only deletes Jobs. +// idempotent via AlreadyExists tolerance. ClusterRole uses update-or-create so +// newer CLI versions replace stale rules without the operator needing to delete. func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface) error { labels := clusterValidatorLabels() @@ -187,11 +207,21 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface cr := &rbacv1.ClusterRole{ ObjectMeta: metav1.ObjectMeta{Name: clusterValidatorName, Labels: labels}, Rules: []rbacv1.PolicyRule{ - {APIGroups: []string{""}, Resources: []string{"nodes", "pods", "namespaces", "services", "configmaps"}, Verbs: []string{"get", "list", "watch"}}, + // Read-only: cluster inventory and configuration. + {APIGroups: []string{""}, Resources: []string{"nodes", "configmaps"}, Verbs: []string{"get", "list", "watch"}}, + // Read + write: enforcement checks create and delete probe namespaces + // and pods; the active-LB check creates and deletes a probe service. + {APIGroups: []string{""}, Resources: []string{"namespaces", "pods", "services"}, Verbs: []string{"get", "list", "watch", "create", "delete"}}, + // Pod log subresource: read probe output without exec. + {APIGroups: []string{""}, Resources: []string{"pods/log"}, Verbs: []string{"get"}}, {APIGroups: []string{"storage.k8s.io"}, Resources: []string{"csidrivers", "storageclasses"}, Verbs: []string{"get", "list"}}, - {APIGroups: []string{"networking.k8s.io"}, Resources: []string{"networkpolicies"}, Verbs: []string{"get", "list"}}, + // NetworkPolicies: read for CNI detection; write for enforcement + // check which creates/updates/deletes policies in the temp namespace. + {APIGroups: []string{"networking.k8s.io"}, Resources: []string{"networkpolicies"}, Verbs: []string{"get", "list", "create", "update", "delete"}}, {APIGroups: []string{"admissionregistration.k8s.io"}, Resources: []string{"mutatingwebhookconfigurations", "validatingwebhookconfigurations"}, Verbs: []string{"get", "list"}}, {APIGroups: []string{"apps"}, Resources: []string{"deployments", "daemonsets", "statefulsets"}, Verbs: []string{"get", "list"}}, + // Gateway API: control-plane gateway and route health checks. + {APIGroups: []string{"gateway.networking.k8s.io"}, Resources: []string{"gatewayclasses", "gateways", "httproutes", "grpcroutes"}, Verbs: []string{"get", "list"}}, {NonResourceURLs: []string{"/readyz", "/version", "/healthz"}, Verbs: []string{"get"}}, }, } @@ -266,19 +296,121 @@ func sweepManagedPullSecrets(ctx context.Context, client kubernetes.Interface) { ) } -// IfNotPresent so locally-imported images (k3d image import, kind load) are -// reused. VALIDATOR_CONFIG_NAME is empty so the validator skips the -// configurable reachability/network-policy sections (ConfigMap support is a -// follow-up). -// -// VALIDATOR_PREFLIGHT=true puts the validator in preflight mode: it runs the -// readiness checks and exits, but does NOT write its summary ConfigMap. The -// ConfigMap exists for the metrics path (the NVCA agent watches it and -// republishes on /metrics), which is meaningless here because preflight runs -// before NVCA is installed and our RBAC bootstrap grants no configmaps -// create/update. Tagging the invocation keeps preflight a clean no-op rather -// than emitting a confusing "failed to create summary ConfigMap" warning. -func buildClusterValidatorJob(name, image, pullSecret string, noCleanup bool) *batchv1.Job { +// clusterValidatorControlPlaneRole is the role value passed as VALIDATOR_ROLE +// when running against the control-plane cluster. Matches nvca's RoleControlPlane +// without importing that package. +const clusterValidatorControlPlaneRole = "control-plane" + +// clusterValidatorConfigName is the default ConfigMap name the validator binary +// looks for when VALIDATOR_CONFIG_NAME is empty. Must stay in sync with +// defaultConfigMapName in nvca/cmd/cluster-validator/main.go. +const clusterValidatorConfigName = "cluster-validator-network-checks" + +// controlPlaneValidatorConfigTemplate is the baseline network-check ConfigMap for +// control-plane preflight: nvcr.io reachability (critical) and NetworkPolicy +// enforcement (non-critical). Extra registries are appended as non-critical probes. +const controlPlaneValidatorConfigTemplate = `reachability: + endpoints: + - name: nvcr.io + host: nvcr.io + port: 443 + protocol: tcp+tls + critical: true +enforcement: + enabled: true + testImage: busybox:1.36 + timeoutSeconds: 60 + critical: false +` + +// ensureClusterValidatorConfig creates or updates the network-check ConfigMap. +// extraRegistries are added as non-critical tcp+tls probes. Best-effort: the +// validator skips configurable checks when the ConfigMap is absent. +func ensureClusterValidatorConfig(ctx context.Context, client kubernetes.Interface, extraRegistries []string) error { + content := buildControlPlaneValidatorConfig(extraRegistries) + desired := &corev1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{ + Name: clusterValidatorConfigName, + Namespace: clusterValidatorNamespace, + Labels: clusterValidatorLabels(), + }, + Data: map[string]string{"config.yaml": content}, + } + + existing, err := client.CoreV1().ConfigMaps(clusterValidatorNamespace).Get(ctx, clusterValidatorConfigName, metav1.GetOptions{}) + if err != nil { + if !apierrors.IsNotFound(err) { + return fmt.Errorf("get validator config ConfigMap: %w", err) + } + if _, err := client.CoreV1().ConfigMaps(clusterValidatorNamespace).Create(ctx, desired, metav1.CreateOptions{}); err != nil { + return fmt.Errorf("create validator config ConfigMap: %w", err) + } + return nil + } + + // Always update so a newer CLI version's config (or new registries) replaces stale content. + existing.Data = desired.Data + existing.Labels = desired.Labels + if _, err := client.CoreV1().ConfigMaps(clusterValidatorNamespace).Update(ctx, existing, metav1.UpdateOptions{}); err != nil { + return fmt.Errorf("update validator config ConfigMap: %w", err) + } + return nil +} + +// buildControlPlaneValidatorConfig assembles the network-check ConfigMap YAML +// from the baseline template plus any operator-supplied extra registries. +func buildControlPlaneValidatorConfig(extraRegistries []string) string { + if len(extraRegistries) == 0 { + return controlPlaneValidatorConfigTemplate + } + + // Parse host:port entries and append as non-critical tcp+tls endpoints. + var extra strings.Builder + for _, reg := range extraRegistries { + host, port := parseRegistryHostPort(reg) + if host == "" { + continue + } + // Append under the existing reachability.endpoints list. + fmt.Fprintf(&extra, " - name: %s\n host: %s\n port: %d\n protocol: tcp+tls\n critical: false\n", host, host, port) + } + if extra.Len() == 0 { + return controlPlaneValidatorConfigTemplate + } + + // Insert extra endpoints after the nvcr.io entry (before the enforcement block). + return strings.Replace(controlPlaneValidatorConfigTemplate, + "enforcement:", extra.String()+"enforcement:", 1) +} + +// parseRegistryHostPort splits a "host:port" string. Returns port 443 when +// no port is specified or when the port is not a valid number. +func parseRegistryHostPort(s string) (host string, port int) { + s = strings.TrimSpace(s) + if s == "" { + return "", 0 + } + if idx := strings.LastIndex(s, ":"); idx > 0 { + h := s[:idx] + p := s[idx+1:] + n := 0 + for _, c := range p { + if c < '0' || c > '9' { + return s, 443 + } + n = n*10 + int(c-'0') + } + if n > 0 && n <= 65535 { + return h, n + } + } + return s, 443 +} + +// buildClusterValidatorJob creates the validator Job. PullIfNotPresent reuses +// locally-imported images. VALIDATOR_PREFLIGHT=true skips the summary ConfigMap +// write. VALIDATOR_ROLE selects the check set (control-plane vs compute-plane). +func buildClusterValidatorJob(name, image, pullSecret, role string, noCleanup bool) *batchv1.Job { backoff := int32(0) podSpec := corev1.PodSpec{ ServiceAccountName: clusterValidatorName, @@ -291,6 +423,7 @@ func buildClusterValidatorJob(name, image, pullSecret string, noCleanup bool) *b {Name: "VALIDATOR_CONFIG_NAMESPACE", Value: clusterValidatorNamespace}, {Name: "VALIDATOR_CONFIG_NAME", Value: ""}, {Name: "VALIDATOR_PREFLIGHT", Value: "true"}, + {Name: "VALIDATOR_ROLE", Value: role}, }, }}, } diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index 70ef4a6a91..95051c402a 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -113,7 +113,7 @@ func TestRunClusterValidator_EmptyImage(t *testing.T) { // branch is defensive. Verify it returns a clear error and makes // no API calls. client := fake.NewSimpleClientset() - res := runClusterValidator(context.Background(), client, "", "", false) + res := runClusterValidator(context.Background(), client, "", "", false, "", nil) require.Error(t, res.Err) assert.Contains(t, res.Err.Error(), "image is empty") assert.False(t, res.Passed) @@ -124,7 +124,7 @@ func TestClusterValidatorCheck_OrchestratorErrorStaysWarning(t *testing.T) { cv := func(_ context.Context, _ ClusterValidatorParams) ClusterValidatorResult { return ClusterValidatorResult{Err: fmt.Errorf("transient: API server unreachable")} } - r := clusterValidatorCheck(cv, "", "", "", false).Run(context.Background()) + r := clusterValidatorCheck(cv, "", "", "", false, "", nil).Run(context.Background()) assert.False(t, r.Passed) assert.Equal(t, "warning", r.Severity, "transient orchestrator failures should not fail the overall preflight") @@ -169,7 +169,7 @@ func TestRunClusterValidator_HappyPath(t *testing.T) { }, nil }) - res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false) + res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false, "", nil) require.NoError(t, res.Err, "happy path must not surface an error") assert.True(t, res.Passed, "Succeeded>0 maps to Passed=true") assert.Equal(t, int32(0), res.ExitCode) @@ -204,7 +204,7 @@ func TestRunClusterValidator_JobFailed(t *testing.T) { }) client.PrependReactor("list", "pods", podListReactor("")) - res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false) + res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false, "", nil) require.NoError(t, res.Err, "a clean Passed=false verdict must not set Err") assert.False(t, res.Passed, "Failed>0 maps to Passed=false") assert.NotEmpty(t, res.JobName, "JobName must be populated on failure for kubectl-logs follow-up") @@ -237,7 +237,7 @@ func TestRunClusterValidator_RBACIdempotent(t *testing.T) { }) client.PrependReactor("list", "pods", podListReactor("")) - res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false) + res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false, "", nil) require.NoError(t, res.Err, "AlreadyExists on RBAC bootstrap must be treated as success") assert.True(t, res.Passed) } @@ -264,7 +264,7 @@ func TestRunClusterValidator_RBACRefreshesClusterRoleRules(t *testing.T) { }) client.PrependReactor("list", "pods", podListReactor("")) - res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false) + res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false, "", nil) require.NoError(t, res.Err) got, err := client.RbacV1().ClusterRoles().Get(context.Background(), clusterValidatorName, metav1.GetOptions{}) @@ -273,6 +273,84 @@ func TestRunClusterValidator_RBACRefreshesClusterRoleRules(t *testing.T) { "ClusterRole rules must be refreshed to the current set on each run, not kept stale") } +// TestEnsureClusterValidatorRBAC_WritableResources verifies that the +// bootstrapped ClusterRole grants the write verbs required by enforcement +// checks (namespace/pod create+delete), probe log reading (pods/log get), +// and the Gateway API checks added in Req 3/4. +func TestEnsureClusterValidatorRBAC_WritableResources(t *testing.T) { + client := fake.NewSimpleClientset() + ctx := context.Background() + + require.NoError(t, ensureClusterValidatorRBAC(ctx, client)) + + cr, err := client.RbacV1().ClusterRoles().Get(ctx, clusterValidatorName, metav1.GetOptions{}) + require.NoError(t, err) + + type check struct { + group string + resource string + verb string + } + required := []check{ + // Enforcement checks create and delete probe namespaces. + {"", "namespaces", "create"}, + {"", "namespaces", "delete"}, + // Probe pods spun up for node-to-node and inter-namespace checks. + {"", "pods", "create"}, + {"", "pods", "delete"}, + // Log reading: fetch probe output without exec. + {"", "pods/log", "get"}, + // Active LB probe service. + {"", "services", "create"}, + {"", "services", "delete"}, + // Enforcement check creates/updates/deletes NetworkPolicies in temp namespace. + {"networking.k8s.io", "networkpolicies", "create"}, + {"networking.k8s.io", "networkpolicies", "update"}, + {"networking.k8s.io", "networkpolicies", "delete"}, + // Gateway API health checks. + {"gateway.networking.k8s.io", "gatewayclasses", "get"}, + {"gateway.networking.k8s.io", "gateways", "list"}, + {"gateway.networking.k8s.io", "httproutes", "get"}, + {"gateway.networking.k8s.io", "grpcroutes", "list"}, + } + + for _, want := range required { + t.Run(fmt.Sprintf("%s/%s/%s", want.group, want.resource, want.verb), func(t *testing.T) { + assert.True(t, rbacRuleCovers(cr.Rules, want.group, want.resource, want.verb), + "ClusterRole must grant %s on %s (group %q)", want.verb, want.resource, want.group) + }) + } +} + +// rbacRuleCovers returns true when any PolicyRule in rules grants verb on +// resource within group. Wildcard verbs ("*") are treated as matching any verb. +func rbacRuleCovers(rules []rbacv1.PolicyRule, group, resource, verb string) bool { + for _, r := range rules { + if len(r.NonResourceURLs) > 0 { + continue // non-resource rules don't apply to API resources + } + if !strSliceContains(r.APIGroups, group) { + continue + } + if !strSliceContains(r.Resources, resource) { + continue + } + if strSliceContains(r.Verbs, verb) || strSliceContains(r.Verbs, "*") { + return true + } + } + return false +} + +func strSliceContains(ss []string, s string) bool { + for _, v := range ss { + if v == s { + return true + } + } + return false +} + func TestRunClusterValidator_ImagePullBackOffShortCircuits(t *testing.T) { client := fake.NewSimpleClientset() var jobName atomic.Value @@ -317,7 +395,7 @@ func TestRunClusterValidator_ImagePullBackOffShortCircuits(t *testing.T) { }) start := time.Now() - res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false) + res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false, "", nil) elapsed := time.Since(start) require.Error(t, res.Err, "ImagePullBackOff must short-circuit the wait with an error") @@ -355,7 +433,7 @@ func TestRunClusterValidator_LogFetchSurvivesValidatorTimeout(t *testing.T) { client.PrependReactor("list", "pods", podListReactor("")) // Parent ctx stays alive for the entire run; only vctx expires. - res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false) + res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false, "", nil) require.Error(t, res.Err, "wait must surface the deadline-exceeded error") assert.Contains(t, res.Err.Error(), "waiting for job", @@ -408,13 +486,13 @@ func TestRunClusterValidator_ContextCanceled(t *testing.T) { time.Sleep(50 * time.Millisecond) cancel() }() - res := runClusterValidator(ctx, client, "test-image:1.0", "", false) + res := runClusterValidator(ctx, client, "test-image:1.0", "", false, "", nil) require.Error(t, res.Err) assert.Contains(t, res.Err.Error(), "context") } func TestBuildClusterValidatorJobShape(t *testing.T) { - job := buildClusterValidatorJob("test-job", "img:1", "", false) + job := buildClusterValidatorJob("test-job", "img:1", "", "", false) assert.Equal(t, "test-job", job.Name) assert.Equal(t, clusterValidatorNamespace, job.Namespace) @@ -451,19 +529,19 @@ func TestBuildClusterValidatorJobShape(t *testing.T) { } func TestBuildClusterValidatorJobShape_WithPullSecret(t *testing.T) { - job := buildClusterValidatorJob("test-job", "img:1", "nvcr-pull-secret", false) + job := buildClusterValidatorJob("test-job", "img:1", "nvcr-pull-secret", "", false) require.Len(t, job.Spec.Template.Spec.ImagePullSecrets, 1) assert.Equal(t, "nvcr-pull-secret", job.Spec.Template.Spec.ImagePullSecrets[0].Name) } func TestBuildClusterValidatorJobShape_NoPullSecret(t *testing.T) { - job := buildClusterValidatorJob("test-job", "img:1", "", false) + job := buildClusterValidatorJob("test-job", "img:1", "", "", false) assert.Empty(t, job.Spec.Template.Spec.ImagePullSecrets, "empty pull-secret arg must not produce an empty-name ImagePullSecrets entry") } func TestBuildClusterValidatorJobShape_NoCleanup(t *testing.T) { - job := buildClusterValidatorJob("test-job", "img:1", "", true) + job := buildClusterValidatorJob("test-job", "img:1", "", "", true) assert.Nil(t, job.Spec.TTLSecondsAfterFinished, "--no-cleanup must omit TTLSecondsAfterFinished so the Job persists for debugging") } @@ -521,6 +599,55 @@ func TestKubectlLogsHint_EmptyJob(t *testing.T) { "empty jobName must produce empty hint so callers can compose detail without conditionals") } +func TestBuildControlPlaneValidatorConfig_NoExtras(t *testing.T) { + got := buildControlPlaneValidatorConfig(nil) + assert.Equal(t, controlPlaneValidatorConfigTemplate, got, + "no extra registries must return the template unchanged") + assert.Contains(t, got, "nvcr.io", "nvcr.io must always be present") + assert.Contains(t, got, "enforcement:", "enforcement block must be present") +} + +func TestBuildControlPlaneValidatorConfig_WithExtras(t *testing.T) { + got := buildControlPlaneValidatorConfig([]string{"harbor.company.internal:443", "ghcr.io:443"}) + assert.Contains(t, got, "harbor.company.internal") + assert.Contains(t, got, "ghcr.io") + assert.Contains(t, got, "nvcr.io", "nvcr.io must still be present alongside extras") + assert.Contains(t, got, "enforcement:", "enforcement block must still be present after extras") + // Extra registries must appear BEFORE enforcement. + harborIdx := strings.Index(got, "harbor.company.internal") + enforcementIdx := strings.Index(got, "enforcement:") + assert.Less(t, harborIdx, enforcementIdx, "extra registry endpoints must appear before the enforcement block") +} + +func TestBuildControlPlaneValidatorConfig_InvalidRegistrySkipped(t *testing.T) { + // A blank entry is parsed as host="" → skipped; only the valid entry appears. + got := buildControlPlaneValidatorConfig([]string{" ", "valid.registry.internal:5000"}) + assert.Contains(t, got, "valid.registry.internal", "valid registry must appear") + // The blank entry must not add an empty host: line. + assert.NotContains(t, got, "host: \n", "blank entry must not produce an empty host line") +} + +func TestParseRegistryHostPort(t *testing.T) { + tests := []struct { + in string + wantHost string + wantPort int + }{ + {"nvcr.io:443", "nvcr.io", 443}, + {"harbor.company.internal:5000", "harbor.company.internal", 5000}, + {"registry.example.com", "registry.example.com", 443}, // no port → 443 + {"", "", 0}, // empty → skip + {" ", "", 0}, // blank → skip + } + for _, tt := range tests { + t.Run(tt.in, func(t *testing.T) { + h, p := parseRegistryHostPort(tt.in) + assert.Equal(t, tt.wantHost, h) + assert.Equal(t, tt.wantPort, p) + }) + } +} + func alreadyExistsReactor(resource, name string) ktesting.ReactionFunc { gr := schema.GroupResource{Resource: resource} return func(action ktesting.Action) (bool, runtime.Object, error) { From 1ffb0c0ac498f1f8b8cd64b441ad614decc7fe6e Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 12 Aug 2026 02:14:34 +0530 Subject: [PATCH 02/55] feat(check): detect stale NVCF namespaces and add control-plane validator wiring --- .../nvcf-cli/internal/selfhosted/preflight.go | 189 ++++++++++++++--- .../internal/selfhosted/preflight_test.go | 24 ++- .../internal/selfhosted/stale_namespace.go | 114 ++++++++++ .../selfhosted/stale_namespace_test.go | 198 ++++++++++++++++++ 4 files changed, 497 insertions(+), 28 deletions(-) create mode 100644 src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go create mode 100644 src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index e4dc5858a1..78b0614104 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -195,6 +195,15 @@ func runVersionCmdOnce(ctx context.Context, path string, args []string, re *rege type PreflightConfig struct { LocalOnly bool Tools []BinarySpec + + // Registries is the list of container registries to credential-check. + // When empty, the registry-credentials category is omitted entirely. + // Populated by the cmd layer from EnumerateRegistries. + Registries []RegistryEntry + + // RegistryChecker validates credentials for one registry. Nil skips the + // category. Production wires NewRegistryCredentialChecker; tests pass fakes. + RegistryChecker RegistryCredentialChecker } // DefaultTools returns the kubectl/helmfile/helm specs with version floors @@ -252,10 +261,18 @@ type Role int const ( RoleLocalOnly Role = iota // shared local-host tools only; no kubectl contact - RoleControlPlane // shared + Gateway API CRDs + default StorageClass + RoleControlPlane // shared + gateway/StorageClass/LB checks via cluster-validator RoleComputePlane // shared + GPU operator + GPU node labels + (optional) SIS reachability ) +// Validator role strings passed as VALIDATOR_ROLE to the cluster-validator Job. +// These must match the constants in the nvca cluster-validator binary's +// clustervalidator package (RoleControlPlane / RoleComputePlane). +const ( + validatorRoleControlPlane = "control-plane" + validatorRoleComputePlane = "compute-plane" +) + // String returns a human-readable name for the role. func (r Role) String() string { switch r { @@ -289,6 +306,16 @@ type RoleConfig struct { ClusterValidatorImage string ClusterValidatorPullSecret string ClusterValidatorNoCleanup bool + + // StaleNamespaceProber detects NVCF stack namespaces that are stuck + // Terminating or exist as empty shells after a partial teardown. Nil skips + // the check; production wires NewStaleNamespaceProber; tests pass fakes. + StaleNamespaceProber StaleNamespaceProber + + // ClusterValidatorRegistries is an optional list of "host:port" registry + // endpoints added to the control-plane validator ConfigMap alongside the + // built-in nvcr.io probe. Ignored for the compute-plane validator. + ClusterValidatorRegistries []string } // categorySpec groups a set of checks under a named category. Categories run @@ -318,6 +345,13 @@ func buildCategories(cfg PreflightConfig, role Role, rc RoleConfig) []categorySp out = append(out, *local) } + // Registry credential check runs from the operator's machine — no cluster + // contact needed. Placed after local-host-tools but before cluster probes + // so credential failures surface early. + if len(cfg.Registries) > 0 && cfg.RegistryChecker != nil { + out = append(out, buildRegistryCredentialCategory(cfg)) + } + if cfg.LocalOnly || role == RoleLocalOnly { return out } @@ -354,28 +388,42 @@ func buildLocalHostCategory(cfg PreflightConfig) *categorySpec { return &categorySpec{name: "local-host-tools", role: RoleLocalOnly, checks: checks} } -// controlPlaneCheckCategory returns the placeholder cluster-side checks for -// control plane: Gateway API CRDs, default StorageClass. Real probes land -// when M3 ships; for now they emit an "info" CheckResult so the renderer -// matrix is observable. -func controlPlaneCheckCategory(_ RoleConfig) categorySpec { - return categorySpec{ - name: "control-plane-cluster", - role: RoleControlPlane, - checks: []binaryCheckSpec{ - placeholderCheck("gateway-api-crds", "checking Gateway API CRDs…", "Gateway API CRD probe — pending M3 cluster-side preflight"), - placeholderCheck("default-storageclass", "checking default StorageClass…", "Default StorageClass probe — pending M3 cluster-side preflight"), - }, +// controlPlaneCheckCategory returns the cluster-side checks for the control +// plane. The stale-namespace check runs first so a leftover namespace from a +// prior partial teardown is surfaced before any other cluster work. +// Gateway API CRD and StorageClass probes are placeholders pending M3. +func controlPlaneCheckCategory(rc RoleConfig) categorySpec { + cat := categorySpec{ + name: "control-plane-cluster", + role: RoleControlPlane, + checks: []binaryCheckSpec{}, + } + // Stale namespace check runs first so leftover namespaces surface + // before any other cluster work. + if rc.StaleNamespaceProber != nil { + cat.checks = append(cat.checks, + staleNamespaceCheck(rc.StaleNamespaceProber, rc.KubeContext, nvcfControlPlaneNamespaces)) + } + // Containerized cluster-validator probe for control-plane checks + // (Gateway API CRDs, Envoy Gateway, StorageClass, external LB, + // node-to-node overlay, and reachability to nvcr.io + extra registries). + if rc.ClusterValidator != nil { + cat.checks = append(cat.checks, clusterValidatorCheck( + rc.ClusterValidator, + rc.KubeContext, + rc.ClusterValidatorImage, + rc.ClusterValidatorPullSecret, + rc.ClusterValidatorNoCleanup, + validatorRoleControlPlane, + rc.ClusterValidatorRegistries, + )) } + return cat } -// computePlaneCheckCategory returns the placeholder compute-plane checks. -// Conditionally adds an SIS reachability probe when RoleConfig.SISURL is set, -// a node-inotify-limits probe when RoleConfig.InotifyProber is set, and a -// containerized cluster-validator probe when RoleConfig.ClusterValidator is -// set. Each conditional probe is opt-in via its own RoleConfig field so -// callers that opted out via a --skip-* flag simply leave the corresponding -// field nil/empty and the check is omitted from the category entirely. +// computePlaneCheckCategory returns the compute-plane checks. SIS, inotify, +// and cluster-validator probes are opt-in via their RoleConfig fields; a nil +// or empty field omits the corresponding check from the category. func computePlaneCheckCategory(rc RoleConfig) categorySpec { cat := categorySpec{ name: "compute-plane-cluster", @@ -385,6 +433,13 @@ func computePlaneCheckCategory(rc RoleConfig) categorySpec { placeholderCheck("gpu-node-labels", "checking GPU node labels…", "GPU node-label probe — pending M+10 cluster-side preflight"), }, } + // Stale namespace check runs first so leftover namespaces from a prior + // partial teardown surface before any other cluster work. + if rc.StaleNamespaceProber != nil { + cat.checks = append([]binaryCheckSpec{ + staleNamespaceCheck(rc.StaleNamespaceProber, rc.KubeContext, nvcfComputePlaneNamespaces), + }, cat.checks...) + } if rc.SISURL != "" { cat.checks = append(cat.checks, sisReachabilityCheck(rc.SISURL)) } @@ -398,6 +453,8 @@ func computePlaneCheckCategory(rc RoleConfig) categorySpec { rc.ClusterValidatorImage, rc.ClusterValidatorPullSecret, rc.ClusterValidatorNoCleanup, + validatorRoleComputePlane, + nil, // registries: compute-plane doesn't use the ConfigMap reachability list )) } return cat @@ -503,10 +560,10 @@ func nodeInotifyCheck(prober NodeInotifyProber, kubeContext string) binaryCheckS } } -// Severity mapping: runner errors (RBAC/pull/timeout) -> warning, since -// they're operator-fixable infra issues; validator Passed=false -> -// error (real check failures); Passed=true -> info. -func clusterValidatorCheck(cv ClusterValidator, kubeContext, image, pullSecret string, noCleanup bool) binaryCheckSpec { +// clusterValidatorCheck runs the validator Job. Runner errors (RBAC/timeout) +// are warning severity; validator failures are error. role selects the check +// set via VALIDATOR_ROLE; registries extends the ConfigMap reachability list. +func clusterValidatorCheck(cv ClusterValidator, kubeContext, image, pullSecret string, noCleanup bool, role string, registries []string) binaryCheckSpec { const id = "cluster-validator" return binaryCheckSpec{ ID: id, @@ -521,6 +578,8 @@ func clusterValidatorCheck(cv ClusterValidator, kubeContext, image, pullSecret s Image: image, PullSecret: pullSecret, NoCleanup: noCleanup, + Role: role, + Registries: registries, }) r.Logs = result.Logs r.Detail = clusterValidatorDetail(result.JobName) @@ -552,6 +611,88 @@ func clusterValidatorDetail(jobName string) string { return "logs: " + hint } +// buildRegistryCredentialCategory returns the registry-credentials category +// that probes each configured registry for reachability and valid credentials. +func buildRegistryCredentialCategory(cfg PreflightConfig) categorySpec { + cat := categorySpec{ + name: "registry-credentials", + role: RoleLocalOnly, // runs regardless of cluster role + checks: make([]binaryCheckSpec, 0, len(cfg.Registries)), + } + for _, reg := range cfg.Registries { + reg := reg // capture loop var + cat.checks = append(cat.checks, registryCredentialCheck(cfg.RegistryChecker, reg)) + } + return cat +} + +// registryCredentialCheck returns a binaryCheckSpec that probes one registry. +// Critical registries (nvcr.io) fail at error severity; non-critical ones +// fail at warning so they don't block the operator on optional registries. +func registryCredentialCheck(checker RegistryCredentialChecker, entry RegistryEntry) binaryCheckSpec { + id := "registry-cred-" + entry.Registry + severity := "warning" + if entry.Critical { + severity = "error" + } + return binaryCheckSpec{ + ID: id, + HumanLabel: fmt.Sprintf("checking credentials for %s…", entry.Registry), + Run: func(ctx context.Context) CheckResult { + r := CheckResult{ + ID: id, + Severity: severity, + } + if err := checker(ctx, entry.Registry, entry.RepoHint); err != nil { + r.Message = entry.Registry + ": " + err.Error() + r.Err = err + return r + } + r.Passed = true + r.Severity = "info" + r.Message = entry.Registry + ": credentials valid" + return r + }, + } +} + +// staleNamespaceCheck detects NVCF namespaces stuck Terminating or left as +// empty shells after a partial teardown. Severity is error; prober errors +// degrade to warning so transient kubeconfig issues don't falsely fail. +func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namespaces []string) binaryCheckSpec { + const id = "stale-namespaces" + return binaryCheckSpec{ + ID: id, + HumanLabel: "checking for stale NVCF namespaces…", + Run: func(ctx context.Context) CheckResult { + r := CheckResult{ID: id, Severity: "error"} + stale, err := prober(ctx, kubeContext, namespaces) + if err != nil { + r.Severity = "warning" + r.Message = "stale namespace probe failed: " + err.Error() + r.Err = err + return r + } + if len(stale) == 0 { + r.Passed = true + r.Message = "no stale NVCF namespaces detected" + return r + } + parts := make([]string, 0, len(stale)) + names := make([]string, 0, len(stale)) + for _, ns := range stale { + parts = append(parts, ns.Name+" ("+ns.Reason+")") + names = append(names, ns.Name) + } + r.Message = fmt.Sprintf( + "%d stale namespace(s) detected: %s — remove with: kubectl delete namespace %s --force --grace-period=0", + len(stale), strings.Join(parts, ", "), strings.Join(names, " "), + ) + return r + }, + } +} + // placeholderCheck returns a binaryCheckSpec that emits a passing "info" // CheckResult with the given message. Used until M3/M+10 cluster-side probes ship. func placeholderCheck(id, label, message string) binaryCheckSpec { diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight_test.go b/src/clis/nvcf-cli/internal/selfhosted/preflight_test.go index 262075dff8..93dee7b253 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight_test.go @@ -408,7 +408,10 @@ func TestRunPreflightForRole_LocalOnly(t *testing.T) { func TestRunPreflightForRole_ControlPlaneAddsClusterCategory(t *testing.T) { sink := &captureSink{} cfg := PreflightConfig{Tools: []BinarySpec{passingToolSpec("kubectl", "1.30.0")}} - res := RunPreflightForRole(context.Background(), cfg, RoleControlPlane, RoleConfig{KubeContext: "admin@cp"}, sink) + // No StaleNamespaceProber and no ClusterValidator: the control-plane + // category is empty but the category itself still fires (CategoryCompleted + // is always emitted). + RunPreflightForRole(context.Background(), cfg, RoleControlPlane, RoleConfig{KubeContext: "admin@cp"}, sink) seen := map[string]bool{} for _, e := range sink.events { @@ -417,14 +420,27 @@ func TestRunPreflightForRole_ControlPlaneAddsClusterCategory(t *testing.T) { } } assert.True(t, seen["local-host-tools"], "expected local-host-tools category") - assert.True(t, seen["control-plane-cluster"], "expected control-plane-cluster category") + assert.True(t, seen["control-plane-cluster"], "expected control-plane-cluster category even with no checks configured") +} + +func TestRunPreflightForRole_ControlPlaneWithValidatorAddsClusterValidatorCheck(t *testing.T) { + sink := &captureSink{} + cfg := PreflightConfig{Tools: []BinarySpec{passingToolSpec("kubectl", "1.30.0")}} + cv := func(_ context.Context, p ClusterValidatorParams) ClusterValidatorResult { + return ClusterValidatorResult{Passed: true} + } + res := RunPreflightForRole(context.Background(), cfg, RoleControlPlane, RoleConfig{ + KubeContext: "admin@cp", + ClusterValidator: cv, + ClusterValidatorImage: "nvcf-validator:1.0", + }, sink) var gotCheckIDs []string for _, r := range res { gotCheckIDs = append(gotCheckIDs, r.ID) } - assert.Contains(t, gotCheckIDs, "gateway-api-crds") - assert.Contains(t, gotCheckIDs, "default-storageclass") + assert.Contains(t, gotCheckIDs, "cluster-validator", + "cluster-validator check must appear when ClusterValidator is configured for control-plane role") } func TestRunPreflightForRole_ComputePlaneWithoutSISURL(t *testing.T) { diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go new file mode 100644 index 0000000000..8fe3131754 --- /dev/null +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go @@ -0,0 +1,114 @@ +/* +SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. +SPDX-License-Identifier: Apache-2.0 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package selfhosted + +import ( + "context" + "fmt" + + corev1 "k8s.io/api/core/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" +) + +// nvcfControlPlaneNamespaces is the canonical set of namespaces created on the +// control-plane cluster by the NVCF self-managed stack. Any of these that +// exist without an active Helm release, or that are stuck Terminating, are +// leftover from a failed or partial teardown. +var nvcfControlPlaneNamespaces = []string{ + "cassandra-system", "nats-system", "nvcf", "api-keys", "ess", "sis", + "vault-system", "nvcf-backend", "envoy-gateway-system", "openbao-system", +} + +// nvcfComputePlaneNamespaces is the canonical set of namespaces created on the +// compute-plane cluster by the NVCF self-managed stack. +var nvcfComputePlaneNamespaces = []string{ + "nvca-operator", "nvca-system", +} + +// StaleNamespace describes a single NVCF stack namespace that appears to be a +// leftover from a failed or partial teardown. +type StaleNamespace struct { + Name string + Reason string // human-readable cause: "stuck Terminating" or "no Helm release" +} + +// StaleNamespaceProber inspects the given namespaces and returns those that +// appear stale. The probe is read-only; it never deletes or modifies anything. +// A non-nil error means the cluster could not be contacted; the returned slice +// may be a partial result. +type StaleNamespaceProber func(ctx context.Context, kubeContext string, namespaces []string) ([]StaleNamespace, error) + +// NewStaleNamespaceProber returns a StaleNamespaceProber backed by client-go. +// Chart-independent: works before any Helm release exists, and uses the +// operator's kubeconfig context to talk to the target cluster. +func NewStaleNamespaceProber() StaleNamespaceProber { + return func(ctx context.Context, kubeContext string, namespaces []string) ([]StaleNamespace, error) { + restCfg, err := loadKubeConfig(kubeContext) + if err != nil { + return nil, fmt.Errorf("building kubeconfig: %w", err) + } + client, err := kubernetes.NewForConfig(restCfg) + if err != nil { + return nil, fmt.Errorf("building kubernetes client: %w", err) + } + return probeStaleNamespaces(ctx, client, namespaces) + } +} + +// probeStaleNamespaces is the testable core that accepts a kubernetes.Interface +// so callers can inject fake.NewSimpleClientset in unit tests. +// +// A namespace is considered stale when either: +// - its DeletionTimestamp is set or its phase is Terminating (finalizer +// deadlock — it will never complete without operator intervention), or +// - it exists but holds no active Helm release (empty shell left by a partial +// helm uninstall or a failed teardown that cleaned the release but not the +// namespace). +// +// Helm 3 marks each release secret with the label owner=helm; absence of any +// such secret means no live Helm release occupies the namespace. +func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, namespaces []string) ([]StaleNamespace, error) { + var stale []StaleNamespace + for _, name := range namespaces { + ns, err := client.CoreV1().Namespaces().Get(ctx, name, metav1.GetOptions{}) + if err != nil { + if apierrors.IsNotFound(err) { + continue // absent = healthy; the check only fires on unexpected presence + } + return stale, fmt.Errorf("get namespace %s: %w", name, err) + } + + if ns.DeletionTimestamp != nil || ns.Status.Phase == corev1.NamespaceTerminating { + stale = append(stale, StaleNamespace{Name: name, Reason: "stuck Terminating"}) + continue + } + + secrets, err := client.CoreV1().Secrets(name).List(ctx, metav1.ListOptions{ + LabelSelector: "owner=helm", + }) + if err != nil { + return stale, fmt.Errorf("list Helm secrets in %s: %w", name, err) + } + if len(secrets.Items) == 0 { + stale = append(stale, StaleNamespace{Name: name, Reason: "no Helm release"}) + } + } + return stale, nil +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go new file mode 100644 index 0000000000..8acd45a2fd --- /dev/null +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go @@ -0,0 +1,198 @@ +/* +SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. +SPDX-License-Identifier: Apache-2.0 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package selfhosted + +import ( + "context" + "fmt" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes/fake" +) + +// -- probeStaleNamespaces -- + +func TestProbeStaleNamespaces_AbsentIsHealthy(t *testing.T) { + // A namespace that doesn't exist is not stale — it has simply never been + // created or was already fully deleted. + client := fake.NewSimpleClientset() + stale, err := probeStaleNamespaces(context.Background(), client, []string{"nvcf", "sis"}) + require.NoError(t, err) + assert.Empty(t, stale, "absent namespaces must not be reported as stale") +} + +func TestProbeStaleNamespaces_TerminatingIsByDeletionTimestamp(t *testing.T) { + now := metav1.Now() + client := fake.NewSimpleClientset(&corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{Name: "nvcf", DeletionTimestamp: &now}, + Status: corev1.NamespaceStatus{Phase: corev1.NamespaceActive}, + }) + stale, err := probeStaleNamespaces(context.Background(), client, []string{"nvcf"}) + require.NoError(t, err) + require.Len(t, stale, 1) + assert.Equal(t, "nvcf", stale[0].Name) + assert.Contains(t, stale[0].Reason, "Terminating") +} + +func TestProbeStaleNamespaces_TerminatingIsByPhase(t *testing.T) { + client := fake.NewSimpleClientset(&corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{Name: "sis"}, + Status: corev1.NamespaceStatus{Phase: corev1.NamespaceTerminating}, + }) + stale, err := probeStaleNamespaces(context.Background(), client, []string{"sis"}) + require.NoError(t, err) + require.Len(t, stale, 1) + assert.Equal(t, "sis", stale[0].Name) + assert.Contains(t, stale[0].Reason, "Terminating") +} + +func TestProbeStaleNamespaces_EmptyShellNoHelmSecrets(t *testing.T) { + // Namespace exists and is Active but holds no Helm release secrets → + // leftover empty shell from a partial helm uninstall. + client := fake.NewSimpleClientset(&corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{Name: "nvcf"}, + Status: corev1.NamespaceStatus{Phase: corev1.NamespaceActive}, + }) + stale, err := probeStaleNamespaces(context.Background(), client, []string{"nvcf"}) + require.NoError(t, err) + require.Len(t, stale, 1) + assert.Equal(t, "nvcf", stale[0].Name) + assert.Contains(t, stale[0].Reason, "Helm release") +} + +func TestProbeStaleNamespaces_HealthyReleaseNotStale(t *testing.T) { + // Namespace exists and carries an owner=helm secret → active Helm release, + // not stale. + client := fake.NewSimpleClientset( + &corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{Name: "nvcf"}, + Status: corev1.NamespaceStatus{Phase: corev1.NamespaceActive}, + }, + &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: "sh.helm.release.v1.nvcf.v1", + Namespace: "nvcf", + Labels: map[string]string{"owner": "helm", "name": "nvcf", "status": "deployed"}, + }, + }, + ) + stale, err := probeStaleNamespaces(context.Background(), client, []string{"nvcf"}) + require.NoError(t, err) + assert.Empty(t, stale, "namespace with an active Helm release must not be stale") +} + +func TestProbeStaleNamespaces_MixedNamespaces(t *testing.T) { + // One absent, one healthy, one terminating, one empty shell. + now := metav1.Now() + client := fake.NewSimpleClientset( + // "sis" — healthy with a Helm release + &corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{Name: "sis"}, + Status: corev1.NamespaceStatus{Phase: corev1.NamespaceActive}, + }, + &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: "sh.helm.release.v1.sis.v1", Namespace: "sis", + Labels: map[string]string{"owner": "helm"}, + }, + }, + // "nvcf" — stuck terminating + &corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{Name: "nvcf", DeletionTimestamp: &now}, + Status: corev1.NamespaceStatus{Phase: corev1.NamespaceTerminating}, + }, + // "api-keys" — empty shell + &corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{Name: "api-keys"}, + Status: corev1.NamespaceStatus{Phase: corev1.NamespaceActive}, + }, + // "cassandra-system" — absent (not present in fake) + ) + + namespaces := []string{"cassandra-system", "sis", "nvcf", "api-keys"} + stale, err := probeStaleNamespaces(context.Background(), client, namespaces) + require.NoError(t, err) + require.Len(t, stale, 2, "only nvcf (terminating) and api-keys (empty shell) should be stale") + + staleNames := make(map[string]string, 2) + for _, s := range stale { + staleNames[s.Name] = s.Reason + } + assert.Contains(t, staleNames, "nvcf") + assert.Contains(t, staleNames["nvcf"], "Terminating") + assert.Contains(t, staleNames, "api-keys") + assert.Contains(t, staleNames["api-keys"], "Helm release") +} + +// -- staleNamespaceCheck binaryCheckSpec -- + +func TestStaleNamespaceCheck_ProberErrorDegradestoWarning(t *testing.T) { + // A prober that cannot contact the cluster must not fail the overall check + // at error severity — it would produce false failures on transient network + // issues or misconfigured kubeconfigs. + prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { + return nil, fmt.Errorf("cluster unreachable") + } + r := staleNamespaceCheck(prober, "", []string{"nvcf"}).Run(context.Background()) + assert.False(t, r.Passed) + assert.Equal(t, "warning", r.Severity, + "prober errors must degrade to warning so transient failures do not block the operator") + assert.Contains(t, r.Message, "cluster unreachable") +} + +func TestStaleNamespaceCheck_StaleIsError(t *testing.T) { + // A successfully detected stale namespace must fail at error severity so + // anyFailed trips the non-zero exit code. + prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { + return []StaleNamespace{{Name: "nvcf", Reason: "stuck Terminating"}}, nil + } + r := staleNamespaceCheck(prober, "", []string{"nvcf"}).Run(context.Background()) + assert.False(t, r.Passed) + assert.Equal(t, "error", r.Severity, + "detected stale namespaces must use error severity so the exit code is non-zero") + assert.Contains(t, r.Message, "nvcf") + assert.Contains(t, r.Message, "kubectl delete namespace") +} + +func TestStaleNamespaceCheck_CleanPasses(t *testing.T) { + prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { + return nil, nil + } + r := staleNamespaceCheck(prober, "", []string{"nvcf", "sis"}).Run(context.Background()) + assert.True(t, r.Passed) +} + +func TestStaleNamespaceCheck_MessageNamesAllStaleNamespaces(t *testing.T) { + // The remediation command must name every stale namespace so the operator + // can copy-paste it without having to cross-reference the check output. + prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { + return []StaleNamespace{ + {Name: "nvcf", Reason: "stuck Terminating"}, + {Name: "api-keys", Reason: "no Helm release"}, + }, nil + } + r := staleNamespaceCheck(prober, "", []string{"nvcf", "api-keys"}).Run(context.Background()) + assert.Contains(t, r.Message, "nvcf") + assert.Contains(t, r.Message, "api-keys") + assert.Contains(t, r.Message, "kubectl delete namespace nvcf api-keys") +} From dfd490e7b2bf915e8ef825b11f30195ff118d19e Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 12 Aug 2026 02:14:51 +0530 Subject: [PATCH 03/55] feat(check): validate registry credentials before install using generic OCI auth --- .../internal/selfhosted/registry_cred.go | 202 +++++++++++++ .../internal/selfhosted/registry_cred_test.go | 286 ++++++++++++++++++ .../internal/selfhosted/validatortag.go | 200 ++++++++++-- .../internal/selfhosted/validatortag_test.go | 52 ++++ 4 files changed, 720 insertions(+), 20 deletions(-) create mode 100644 src/clis/nvcf-cli/internal/selfhosted/registry_cred.go create mode 100644 src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go new file mode 100644 index 0000000000..0167a97900 --- /dev/null +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go @@ -0,0 +1,202 @@ +/* +SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. +SPDX-License-Identifier: Apache-2.0 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package selfhosted + +import ( + "context" + "fmt" + "net/http" + "os" + "strings" + "time" + + "sigs.k8s.io/yaml" +) + +const ( + registryProbeTimeout = 10 * time.Second + + // certManagerRegistry is the well-known exception from the helmfile: + // cert-manager uses quay.io/jetstack images, not global.image.registry. + certManagerRegistry = "quay.io" +) + +// RegistryCredentialChecker probes whether credentials are present and valid +// for a registry. repoHint is the repository path used as the OAuth scope; +// pass "" to probe without a specific scope (works for public registries). +// Returns nil on success, a descriptive error otherwise. +type RegistryCredentialChecker func(ctx context.Context, registry, repoHint string) error + +// NewRegistryCredentialChecker returns a production RegistryCredentialChecker +// backed by real HTTP calls. +func NewRegistryCredentialChecker() RegistryCredentialChecker { + return probeRegistryCredential +} + +// probeRegistryCredential authenticates to registry using the OCI Bearer token +// flow. repoHint is the OAuth scope repository path. ECR registries return a +// clear diagnostic instead of attempting the Bearer flow. +func probeRegistryCredential(ctx context.Context, registry, repoHint string) error { + if isECRRegistry(registry) { + return fmt.Errorf("ECR registry detected — credential validation requires AWS CLI; " + + "run 'aws ecr get-login-password' to verify manually") + } + + pctx, cancel := context.WithTimeout(ctx, registryProbeTimeout) + defer cancel() + + client := &http.Client{Timeout: registryProbeTimeout} + + // Step 1: probe /v2/ unauthenticated. + probeURL := "https://" + registry + "/v2/" + req, err := http.NewRequestWithContext(pctx, http.MethodGet, probeURL, nil) + if err != nil { + return fmt.Errorf("build request: %w", err) + } + resp, err := client.Do(req) + if err != nil { + return fmt.Errorf("cannot reach %s: %w", registry, err) + } + + switch resp.StatusCode { + case http.StatusOK: + // Public registry — no credentials needed. + resp.Body.Close() + return nil + case http.StatusUnauthorized: + // Auth required — proceed with token exchange. + default: + resp.Body.Close() + return fmt.Errorf("unexpected status %s from %s", resp.Status, registry) + } + + // Step 2: exchange credentials for a Bearer token using the actual repo + // from the configured image (repoHint). Using a fake repo name causes + // org-level 403s from NGC and GHCR for non-existent orgs, which is + // indistinguishable from bad credentials. + wwwAuth := resp.Header.Get("Www-Authenticate") + resp.Body.Close() + + _, err = exchangeBearerToken(pctx, client, registry, repoHint, wwwAuth) + if err != nil { + // Use credentialsForRegistry (not ngcCredentials) so NGC_API_KEY does + // not masquerade as credentials for quay.io, GHCR, or Harbor — those + // registries reject NGC tokens, which would wrongly produce "credentials + // rejected" when the real diagnosis is "no credentials configured." + _, _, hasCreds := credentialsForRegistry(registry) + if !hasCreds { + return fmt.Errorf("no credentials configured for %s "+ + "(add to ~/.docker/config.json or set NGC_API_KEY for NGC registries)", registry) + } + return fmt.Errorf("credentials rejected by %s: %w", registry, err) + } + return nil +} + +// isECRRegistry returns true for AWS Elastic Container Registry hostnames, +// which use AWS SigV4 auth instead of the OCI Bearer token flow. +func isECRRegistry(registry string) bool { + return strings.Contains(registry, ".dkr.ecr.") && + strings.HasSuffix(registry, ".amazonaws.com") +} + +// RegistryEntry is one registry endpoint to credential-check. +type RegistryEntry struct { + // Registry is the hostname (and optional port) of the container registry. + Registry string + // RepoHint is the repository path used as the OAuth scope when probing + // credentials (e.g. "nvidia/nvcf-byoc/cluster-validator" for NGC). + // Empty means probe without a specific scope, which works for public + // registries (quay.io, Docker Hub public images) and GHCR anonymous access. + RepoHint string + // Critical marks registries whose credential failure should be a hard error + // rather than a warning. NGC (nvcr.io) is always critical; customer-supplied + // extras default to non-critical. + Critical bool +} + +// EnumerateRegistries builds the deduplicated list of registries to credential- +// check from the image ref, cert-manager (quay.io), the stack values file +// (global.image.registry), and operator-supplied extras. +func EnumerateRegistries(imageRef, stackValuesFile string, extras []string) []RegistryEntry { + seen := make(map[string]bool) + var out []RegistryEntry + + add := func(registry string, critical bool) { + registry = strings.TrimSpace(registry) + if registry == "" || seen[registry] { + return + } + seen[registry] = true + out = append(out, RegistryEntry{Registry: registry, Critical: critical}) + } + + // Source 1: base registry from the configured validator image. + // Carry the repo path as a scope hint so the token exchange uses the + // operator's actual org rather than a fake one — NGC returns 403 for + // orgs the API key cannot access, even if the key itself is valid. + if reg, repo, _, ok := parseImageRef(imageRef); ok && reg != "" { + seen[reg] = true + out = append(out, RegistryEntry{Registry: reg, RepoHint: repo, Critical: true}) + } + + // Source 2: read global.image.registry from the environment values file. + // This catches cases where the operator points at a custom NGC org or a + // staging environment that differs from the validator image's registry. + if stackValuesFile != "" { + if reg := readGlobalImageRegistry(stackValuesFile); reg != "" { + // If it's an NGC registry, mark critical; customer mirrors are non-critical. + add(reg, isNGCRegistry(reg)) + } + } + + // Source 3: cert-manager's well-known exception (quay.io/jetstack). + // cert-manager ignores global.image.registry and always pulls from quay.io. + add(certManagerRegistry, false) + + // Source 4: operator-supplied extras (--cluster-validator-registries). + for _, e := range extras { + host, _ := parseRegistryHostPort(e) + if host != "" { + add(host, false) + } + } + + return out +} + +// readGlobalImageRegistry reads the global.image.registry key from an +// environment values YAML file (e.g. environments/local.yaml). Returns "" +// on any error so the caller can safely ignore missing or malformed files. +func readGlobalImageRegistry(path string) string { + data, err := os.ReadFile(path) + if err != nil { + return "" + } + var vals struct { + Global struct { + Image struct { + Registry string `json:"registry" yaml:"registry"` + } `json:"image" yaml:"image"` + } `json:"global" yaml:"global"` + } + if err := yaml.Unmarshal(data, &vals); err != nil { + return "" + } + return strings.TrimSpace(vals.Global.Image.Registry) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go new file mode 100644 index 0000000000..2c9bfcb667 --- /dev/null +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go @@ -0,0 +1,286 @@ +/* +SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. +SPDX-License-Identifier: Apache-2.0 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package selfhosted + +import ( + "context" + "fmt" + "net/http" + "net/http/httptest" + "os" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +// -- probeRegistryCredential -- + +func TestProbeRegistryCredential_PublicRegistry(t *testing.T) { + // Registry returns 200 on /v2/ → public, no credentials needed. + srv := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusOK) + })) + defer srv.Close() + + // Replace the default transport with the test server's transport so TLS + // validation passes against the self-signed cert. + origTransport := http.DefaultTransport + http.DefaultTransport = srv.Client().Transport + t.Cleanup(func() { http.DefaultTransport = origTransport }) + + // Use the test server's host as the registry. + host := strings.TrimPrefix(srv.URL, "https://") + err := probeRegistryCredential(context.Background(), host, "") + assert.NoError(t, err, "public registry (200 on /v2/) must not return an error") +} + +func TestProbeRegistryCredential_AuthSucceeds(t *testing.T) { + // Registry: /v2/ returns 401 with WWW-Authenticate; token endpoint returns a token. + tokenSrv := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // Token endpoint always succeeds. + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write([]byte(`{"token":"test-token-abc"}`)) + })) + defer tokenSrv.Close() + + registrySrv := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("Authorization") == "Bearer test-token-abc" { + w.WriteHeader(http.StatusOK) + return + } + // Point the client at our token server. + realm := tokenSrv.URL + "/token" + w.Header().Set("Www-Authenticate", + `Bearer realm="`+realm+`",service="test-registry",scope="repository:test:pull"`) + w.WriteHeader(http.StatusUnauthorized) + })) + defer registrySrv.Close() + + transport := registrySrv.Client().Transport + origTransport := http.DefaultTransport + http.DefaultTransport = transport + t.Cleanup(func() { http.DefaultTransport = origTransport }) + + host := strings.TrimPrefix(registrySrv.URL, "https://") + err := probeRegistryCredential(context.Background(), host, "") + assert.NoError(t, err, "successful token exchange must return nil") +} + +func TestProbeRegistryCredential_AuthFails(t *testing.T) { + // Registry returns 401 but the token endpoint returns 401 too → bad credentials. + tokenSrv := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusUnauthorized) + })) + defer tokenSrv.Close() + + registrySrv := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + realm := tokenSrv.URL + "/token" + w.Header().Set("Www-Authenticate", + `Bearer realm="`+realm+`",service="test-registry"`) + w.WriteHeader(http.StatusUnauthorized) + })) + defer registrySrv.Close() + + transport := registrySrv.Client().Transport + origTransport := http.DefaultTransport + http.DefaultTransport = transport + t.Cleanup(func() { http.DefaultTransport = origTransport }) + + host := strings.TrimPrefix(registrySrv.URL, "https://") + err := probeRegistryCredential(context.Background(), host, "") + assert.Error(t, err, "failed token exchange must return an error") +} + +func TestProbeRegistryCredential_ECRSkipped(t *testing.T) { + // ECR registries must get a clear "use AWS CLI" message rather than a + // confusing Bearer token failure. + err := probeRegistryCredential(context.Background(), + "123456789.dkr.ecr.us-east-1.amazonaws.com", "") + require.Error(t, err) + assert.Contains(t, err.Error(), "ECR", "ECR registries must produce a clear diagnostic") + assert.Contains(t, err.Error(), "AWS", "message must mention AWS") +} + +// -- EnumerateRegistries -- + +func TestEnumerateRegistries_FromImageRef(t *testing.T) { + entries := EnumerateRegistries("nvcr.io/nvidia/nvcf-byoc/cluster-validator:3.1.0", "", nil) + require.NotEmpty(t, entries) + + found := false + for _, e := range entries { + if e.Registry == "nvcr.io" { + assert.True(t, e.Critical, "nvcr.io must be marked critical") + found = true + } + } + assert.True(t, found, "nvcr.io must appear in the enumerated registries") +} + +func TestEnumerateRegistries_RepoHintFromImageRef(t *testing.T) { + // The RepoHint must be the repo path from the image ref so the token + // exchange uses the operator's actual org, not a fake one. + entries := EnumerateRegistries("nvcr.io/nvidia/nvcf-byoc/cluster-validator:3.1.0", "", nil) + for _, e := range entries { + if e.Registry == "nvcr.io" { + assert.Equal(t, "nvidia/nvcf-byoc/cluster-validator", e.RepoHint, + "RepoHint must carry the actual repo path for correct NGC token scope") + return + } + } + t.Fatal("nvcr.io not found in entries") +} + +func TestEnumerateRegistries_AlwaysIncludesCertManager(t *testing.T) { + // cert-manager always uses quay.io — it must appear even when not in extras. + entries := EnumerateRegistries("nvcr.io/some/image:1.0", "", nil) + found := false + for _, e := range entries { + if e.Registry == "quay.io" { + assert.False(t, e.Critical, "quay.io must be non-critical") + found = true + } + } + assert.True(t, found, "quay.io must always be included for cert-manager") +} + +func TestEnumerateRegistries_ExtrasAppended(t *testing.T) { + entries := EnumerateRegistries("nvcr.io/some/image:1.0", "", + []string{"harbor.company.internal:443", "ghcr.io:443"}) + + registries := make(map[string]bool, len(entries)) + for _, e := range entries { + registries[e.Registry] = true + } + assert.True(t, registries["harbor.company.internal"], "extra registry must be added") + assert.True(t, registries["ghcr.io"], "extra registry must be added") +} + +func TestEnumerateRegistries_NoDuplicates(t *testing.T) { + // Pass nvcr.io both as the image registry and as an extra — must not dedup. + entries := EnumerateRegistries("nvcr.io/some/image:1.0", "", + []string{"nvcr.io"}) + + count := 0 + for _, e := range entries { + if e.Registry == "nvcr.io" { + count++ + } + } + assert.Equal(t, 1, count, "nvcr.io must appear exactly once even when listed twice") +} + +func TestEnumerateRegistries_StackValuesFile(t *testing.T) { + // Write a minimal environments/local.yaml to a temp dir. + dir := t.TempDir() + valuesPath := dir + "/local.yaml" + require.NoError(t, writeFile(valuesPath, []byte(` +global: + image: + registry: stg.nvcr.io +`))) + + entries := EnumerateRegistries("nvcr.io/some/image:1.0", valuesPath, nil) + found := false + for _, e := range entries { + if e.Registry == "stg.nvcr.io" { + assert.True(t, e.Critical, "NGC staging registry must be critical") + found = true + } + } + assert.True(t, found, "registry from values file must be included") +} + +func TestReadGlobalImageRegistry_ValidFile(t *testing.T) { + dir := t.TempDir() + path := dir + "/values.yaml" + require.NoError(t, writeFile(path, []byte(` +global: + image: + registry: nvcr.io + repository: nvidia/nvcf-byoc +`))) + got := readGlobalImageRegistry(path) + assert.Equal(t, "nvcr.io", got) +} + +func TestReadGlobalImageRegistry_MissingFile(t *testing.T) { + got := readGlobalImageRegistry("/nonexistent/path/values.yaml") + assert.Empty(t, got, "missing file must return empty string, not error") +} + +func TestReadGlobalImageRegistry_MissingKey(t *testing.T) { + dir := t.TempDir() + path := dir + "/values.yaml" + require.NoError(t, writeFile(path, []byte(`other: value`))) + got := readGlobalImageRegistry(path) + assert.Empty(t, got, "missing global.image.registry must return empty string") +} + +// -- isECRRegistry -- + +func TestIsECRRegistry(t *testing.T) { + assert.True(t, isECRRegistry("123456789012.dkr.ecr.us-east-1.amazonaws.com")) + assert.True(t, isECRRegistry("999999999999.dkr.ecr.eu-west-1.amazonaws.com")) + assert.False(t, isECRRegistry("nvcr.io")) + assert.False(t, isECRRegistry("ghcr.io")) + assert.False(t, isECRRegistry("harbor.company.internal")) + assert.False(t, isECRRegistry("s3.amazonaws.com")) // S3, not ECR +} + +// -- registryCredentialCheck binaryCheckSpec -- + +func TestRegistryCredentialCheck_PassWhenNoError(t *testing.T) { + checker := func(_ context.Context, reg, _ string) error { return nil } + spec := registryCredentialCheck(checker, RegistryEntry{Registry: "nvcr.io", Critical: true}) + r := spec.Run(context.Background()) + assert.True(t, r.Passed) + assert.Equal(t, "info", r.Severity) + assert.Contains(t, r.Message, "nvcr.io") +} + +func TestRegistryCredentialCheck_CriticalSeverityOnFailure(t *testing.T) { + checker := func(_ context.Context, reg, _ string) error { + return errorf("credentials rejected") + } + spec := registryCredentialCheck(checker, RegistryEntry{Registry: "nvcr.io", Critical: true}) + r := spec.Run(context.Background()) + assert.False(t, r.Passed) + assert.Equal(t, "error", r.Severity, "critical registry failure must be error severity") +} + +func TestRegistryCredentialCheck_WarningSeverityOnNonCriticalFailure(t *testing.T) { + checker := func(_ context.Context, reg, _ string) error { + return errorf("credentials rejected") + } + spec := registryCredentialCheck(checker, RegistryEntry{Registry: "quay.io", Critical: false}) + r := spec.Run(context.Background()) + assert.False(t, r.Passed) + assert.Equal(t, "warning", r.Severity, "non-critical registry failure must be warning severity") +} + +// helpers + +func errorf(msg string) error { return fmt.Errorf("%s", msg) } + +func writeFile(path string, data []byte) error { + return os.WriteFile(path, data, 0o644) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go index f6750bbf35..4578184db5 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go @@ -24,6 +24,7 @@ import ( "fmt" "io" "net/http" + "net/url" "os" "path/filepath" "regexp" @@ -132,11 +133,11 @@ func fetchValidatorTags(ctx context.Context, registry, repo string) ([]string, e return doc.Tags, nil } -func fetchWithBearer(ctx context.Context, url, registry, repo string) ([]byte, error) { +func fetchWithBearer(ctx context.Context, rawURL, registry, repo string) ([]byte, error) { client := &http.Client{Timeout: validatorTagFetchTimeout} // First attempt without auth so anonymous-pullable registries work. - req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, rawURL, nil) if err != nil { return nil, err } @@ -152,16 +153,19 @@ func fetchWithBearer(ctx context.Context, url, registry, repo string) ([]byte, e resp.Body.Close() return nil, fmt.Errorf("registry returned %s", resp.Status) } + // Capture the auth challenge before closing. + wwwAuth := resp.Header.Get("Www-Authenticate") resp.Body.Close() - // Bearer-token exchange. Realm and scope come from the Www-Authenticate - // header; for NGC the realm is /proxy_auth and scope is repository::pull. - token, err := exchangeBearerToken(ctx, client, registry, repo) + // Generic OCI Bearer-token exchange: uses the realm/service/scope from + // the WWW-Authenticate header so any OCI-compliant registry works, not + // just NGC. Falls back to NGC's /proxy_auth when the header is absent. + token, err := exchangeBearerToken(ctx, client, registry, repo, wwwAuth) if err != nil { return nil, err } - req, err = http.NewRequestWithContext(ctx, http.MethodGet, url, nil) + req, err = http.NewRequestWithContext(ctx, http.MethodGet, rawURL, nil) if err != nil { return nil, err } @@ -177,21 +181,100 @@ func fetchWithBearer(ctx context.Context, url, registry, repo string) ([]byte, e return io.ReadAll(resp.Body) } -// exchangeBearerToken does the NGC token exchange using credentials -// resolved from ~/.docker/config.json or NGC env vars. -// -// NGC-specific: this constructs the token URL using NGC's /proxy_auth -// realm rather than parsing the Www-Authenticate header from the 401 -// response (the generic OAuth2 distribution flow). Non-NGC registries -// (GCR, ECR, GHCR, Harbor, etc.) will return a non-200 here and the -// caller falls back to using the configured image reference as-is. -// Acceptable for v1 since the validator image only ships from NGC. -func exchangeBearerToken(ctx context.Context, client *http.Client, registry, repo string) (string, error) { +// exchangeBearerToken implements the OCI Distribution Spec Bearer token flow, +// parsing realm/service/scope from the WWW-Authenticate header. Falls back to +// the NGC /proxy_auth endpoint when the header is absent or unparseable. +func exchangeBearerToken(ctx context.Context, client *http.Client, registry, repo, wwwAuthenticate string) (string, error) { + realm, service, scope := parseWWWAuthenticate(wwwAuthenticate) + + if realm == "" { + // No parseable WWW-Authenticate — use NGC's /proxy_auth as fallback. + return exchangeNGCBearerToken(ctx, client, registry, repo) + } + + // Build the token endpoint URL with service and scope query parameters. + u, err := url.Parse(realm) + if err != nil { + return exchangeNGCBearerToken(ctx, client, registry, repo) + } + q := u.Query() + if service != "" { + q.Set("service", service) + } + // Use scope from the WWW-Authenticate header when present. + // When scope is empty and a repo is provided, synthesize the standard + // pull scope. When neither is present (credential probe, no specific + // repo needed), omit scope entirely — most registries issue a valid + // token and the absence of a resource scope avoids org-level 403s for + // non-existent repositories. + if scope == "" && repo != "" { + scope = "repository:" + repo + ":pull" + } + if scope != "" { + q.Set("scope", scope) + } + u.RawQuery = q.Encode() + + req, err := http.NewRequestWithContext(ctx, http.MethodGet, u.String(), nil) + if err != nil { + return "", err + } + // Add credentials when present. Docker config covers any registry; + // NGC API key is only applicable to NGC-hosted registries. + // Critically: do NOT apply NGC_API_KEY to non-NGC registries — quay.io, + // GHCR, and Harbor will reject it, producing a misleading "credentials + // rejected" error when the real situation is "no credentials configured." + if user, pass, ok := credentialsForRegistry(registry); ok { + req.SetBasicAuth(user, pass) + } + + resp, err := client.Do(req) + if err != nil { + return "", err + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + // WWW-Authenticate realm failed — try NGC's /proxy_auth as last resort + // for registries that implement both endpoints (e.g. staging NGC envs). + if isNGCRegistry(registry) { + return exchangeNGCBearerToken(ctx, client, registry, repo) + } + return "", fmt.Errorf("token exchange at %s returned %s", realm, resp.Status) + } + + // Both "token" (OCI spec) and "access_token" (Docker Hub variant) are valid. + var doc struct { + Token string `json:"token"` + AccessToken string `json:"access_token"` + } + if err := json.NewDecoder(resp.Body).Decode(&doc); err != nil { + return "", fmt.Errorf("decode token response: %w", err) + } + tok := doc.Token + if tok == "" { + tok = doc.AccessToken + } + if tok == "" { + return "", fmt.Errorf("empty token in response from %s", realm) + } + return tok, nil +} + +// exchangeNGCBearerToken is the NGC-specific /proxy_auth token exchange, +// kept as a named fallback for when the standard OCI flow cannot be used. +func exchangeNGCBearerToken(ctx context.Context, client *http.Client, registry, repo string) (string, error) { user, pass, ok := ngcCredentials(registry) if !ok { - return "", fmt.Errorf("no NGC credentials for %s", registry) + return "", fmt.Errorf("no credentials for %s", registry) + } + // Build scope: use actual repo when provided; omit when empty so the NGC + // /proxy_auth endpoint validates the key without org-scoped access checks. + scope := "" + if repo != "" { + scope = "repository:" + repo + ":pull" } - tokenURL := fmt.Sprintf("https://%s/proxy_auth?service=%s&scope=repository:%s:pull", registry, registry, repo) + tokenURL := fmt.Sprintf("https://%s/proxy_auth?service=%s&scope=%s", + registry, registry, scope) req, err := http.NewRequestWithContext(ctx, http.MethodGet, tokenURL, nil) if err != nil { return "", err @@ -203,7 +286,7 @@ func exchangeBearerToken(ctx context.Context, client *http.Client, registry, rep } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { - return "", fmt.Errorf("token exchange returned %s", resp.Status) + return "", fmt.Errorf("NGC token exchange returned %s", resp.Status) } var doc struct { Token string `json:"token"` @@ -212,11 +295,88 @@ func exchangeBearerToken(ctx context.Context, client *http.Client, registry, rep return "", err } if doc.Token == "" { - return "", fmt.Errorf("empty token in response") + return "", fmt.Errorf("empty token in NGC response") } return doc.Token, nil } +// parseWWWAuthenticate extracts realm, service, and scope from a standard +// Bearer challenge header: +// +// Bearer realm="https://auth.example.com/token",service="reg.example.com",scope="repository:lib:pull" +// +// Returns empty strings when the header is absent, not a Bearer challenge, or +// cannot be parsed. The parser handles quoted values that might contain commas. +func parseWWWAuthenticate(header string) (realm, service, scope string) { + const prefix = "Bearer " + if !strings.HasPrefix(header, prefix) { + return + } + params := strings.TrimSpace(header[len(prefix):]) + for len(params) > 0 { + // Find key= + eq := strings.IndexByte(params, '=') + if eq < 0 { + break + } + key := strings.TrimSpace(params[:eq]) + params = params[eq+1:] + + // Read value (quoted or unquoted) + var val string + if strings.HasPrefix(params, `"`) { + end := strings.IndexByte(params[1:], '"') + if end < 0 { + break + } + val = params[1 : end+1] + params = strings.TrimPrefix(strings.TrimSpace(params[end+2:]), ",") + } else { + comma := strings.IndexByte(params, ',') + if comma < 0 { + val = params + params = "" + } else { + val = params[:comma] + params = params[comma+1:] + } + } + + switch key { + case "realm": + realm = val + case "service": + service = val + case "scope": + scope = val + } + } + return +} + +// isNGCRegistry returns true when the registry is hosted on an NVIDIA / NGC +// domain, where the /proxy_auth fallback applies. +func isNGCRegistry(registry string) bool { + return strings.HasSuffix(registry, "nvcr.io") || + strings.Contains(registry, "nvidia.com") || + strings.Contains(registry, "ngc.nvidia") +} + +// credentialsForRegistry resolves (username, password) for any registry. +// Checks ~/.docker/config.json first, then falls back to NGC_API_KEY only +// for NGC-domain registries to avoid sending NGC creds to unrelated registries. +func credentialsForRegistry(registry string) (string, string, bool) { + if u, p, ok := credsFromDockerConfig(registry); ok { + return u, p, true + } + if isNGCRegistry(registry) { + if key := firstNonEmptyEnv(ngcAPIKeyEnvNames...); key != "" { + return "$oauthtoken", key, true + } + } + return "", "", false +} + // ngcCredentials resolves (username, password) for an NGC-hosted registry. // Checks ~/.docker/config.json first; falls back to NGC_API_KEY env vars // with the literal "$oauthtoken" sentinel username NGC expects. diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go index 0bd57306d2..b7c58c8979 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go @@ -252,3 +252,55 @@ func TestNGCCredentials_EnvFallback(t *testing.T) { assert.Equal(t, "$oauthtoken", user) assert.Equal(t, "from-env", pass) } + +// -- parseWWWAuthenticate -- + +func TestParseWWWAuthenticate_Standard(t *testing.T) { + header := `Bearer realm="https://auth.docker.io/token",service="registry-1.docker.io",scope="repository:library/ubuntu:pull"` + realm, service, scope := parseWWWAuthenticate(header) + assert.Equal(t, "https://auth.docker.io/token", realm) + assert.Equal(t, "registry-1.docker.io", service) + assert.Equal(t, "repository:library/ubuntu:pull", scope) +} + +func TestParseWWWAuthenticate_GHCR(t *testing.T) { + header := `Bearer realm="https://ghcr.io/token",service="ghcr.io",scope="repository:owner/image:pull"` + realm, service, scope := parseWWWAuthenticate(header) + assert.Equal(t, "https://ghcr.io/token", realm) + assert.Equal(t, "ghcr.io", service) + assert.Equal(t, "repository:owner/image:pull", scope) +} + +func TestParseWWWAuthenticate_NoBearer(t *testing.T) { + // Basic auth challenge — should return empty strings. + realm, service, scope := parseWWWAuthenticate(`Basic realm="My Registry"`) + assert.Empty(t, realm) + assert.Empty(t, service) + assert.Empty(t, scope) +} + +func TestParseWWWAuthenticate_Empty(t *testing.T) { + realm, service, scope := parseWWWAuthenticate("") + assert.Empty(t, realm) + assert.Empty(t, service) + assert.Empty(t, scope) +} + +func TestParseWWWAuthenticate_RealmOnly(t *testing.T) { + // Some registries omit service/scope in the initial challenge. + realm, service, scope := parseWWWAuthenticate(`Bearer realm="https://example.com/auth"`) + assert.Equal(t, "https://example.com/auth", realm) + assert.Empty(t, service) + assert.Empty(t, scope) +} + +// -- isNGCRegistry -- + +func TestIsNGCRegistry(t *testing.T) { + assert.True(t, isNGCRegistry("nvcr.io")) + assert.True(t, isNGCRegistry("stg.nvcr.io")) + assert.True(t, isNGCRegistry("registry.nvidia.com")) + assert.False(t, isNGCRegistry("ghcr.io")) + assert.False(t, isNGCRegistry("quay.io")) + assert.False(t, isNGCRegistry("harbor.company.internal")) +} From 1deb005edbc47f7c95f5d218b0752cfa8c37df00 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 12 Aug 2026 02:43:00 +0530 Subject: [PATCH 04/55] build(check): update BUILD.bazel for new selfhosted sources and deps --- src/clis/nvcf-cli/cmd/BUILD.bazel | 1 + src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/clis/nvcf-cli/cmd/BUILD.bazel b/src/clis/nvcf-cli/cmd/BUILD.bazel index 22671a8212..d43245fb1a 100644 --- a/src/clis/nvcf-cli/cmd/BUILD.bazel +++ b/src/clis/nvcf-cli/cmd/BUILD.bazel @@ -135,6 +135,7 @@ go_test( "//src/clis/nvcf-cli/internal/selfhosted", "//src/clis/nvcf-cli/internal/selfhosted/auth", "//src/clis/nvcf-cli/internal/selfhosted/controlplaneprofile", + "//src/clis/nvcf-cli/internal/selfhosted/kubectx", "//src/clis/nvcf-cli/internal/selfhosted/progress", "//src/clis/nvcf-cli/internal/selfhosted/reachability", "//src/clis/nvcf-cli/internal/selfhosted/teardown", diff --git a/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel b/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel index 7737a9a8b9..1a508d967d 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel +++ b/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel @@ -26,8 +26,10 @@ go_library( "preflight.go", "pullsecret.go", "register.go", + "registry_cred.go", "render.go", "stack.go", + "stale_namespace.go", "validatortag.go", ], importpath = "nvcf-cli/internal/selfhosted", @@ -46,6 +48,7 @@ go_library( "@io_k8s_client_go//kubernetes", "@io_k8s_client_go//rest", "@io_k8s_client_go//tools/clientcmd", + "@io_k8s_sigs_yaml//:yaml", "@org_golang_x_sync//errgroup", ], ) @@ -60,8 +63,10 @@ go_test( "preflight_test.go", "pullsecret_test.go", "register_test.go", + "registry_cred_test.go", "render_test.go", "stack_test.go", + "stale_namespace_test.go", "validatortag_test.go", ], embed = [":selfhosted"], From 4d7c477f1893685169362564d5ad5af58110348f Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 12 Aug 2026 15:16:51 +0530 Subject: [PATCH 05/55] fix(check): address code-review findings in cluster-validator and preflight checks --- src/clis/nvcf-cli/cmd/self_hosted_check.go | 13 +++--- .../nvcf-cli/cmd/self_hosted_check_test.go | 40 ++++++++++++++++++- .../internal/selfhosted/clustervalidator.go | 10 ++++- .../selfhosted/clustervalidator_test.go | 10 +++++ .../nvcf-cli/internal/selfhosted/preflight.go | 35 +++++++++++----- .../internal/selfhosted/registry_cred.go | 31 ++++++++++---- .../internal/selfhosted/registry_cred_test.go | 14 +++---- .../internal/selfhosted/stale_namespace.go | 5 +++ .../selfhosted/stale_namespace_test.go | 5 ++- .../internal/selfhosted/validatortag.go | 11 ++++- 10 files changed, 137 insertions(+), 37 deletions(-) diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index 2498e8340f..deffda153a 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -152,13 +152,16 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { } clusterValidatorWillRun := anyValidatorIsTargeted && clusterValidatorImage != "" - // The cluster-validator Job's internal budget is 5m - // (selfhosted.clusterValidatorTimeout). The outer ctx must be at least - // that plus headroom for RBAC bootstrap + log fetch, otherwise vctx - // derives from a shorter ceiling and silently truncates the wait. outerTimeout := 2 * time.Minute if clusterValidatorWillRun { - outerTimeout = 6 * time.Minute + // Each validator Job has a 5m internal budget. ModeSingle runs both + // validators sequentially (two 5m runs); ModeSplit runs them in + // parallel so one 6m ceiling covers both. + if mode == kubectx.ModeSingle && controlPlaneIsTargeted(mode) && computePlaneIsTargeted(mode) { + outerTimeout = 12 * time.Minute + } else { + outerTimeout = 6 * time.Minute + } } // --wait polls for the declared duration. The outer ctx has to outlive // the last iteration, so add waitDur on top of a single iteration's diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go index 218bdca80c..53bc744c3a 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go @@ -384,6 +384,40 @@ func TestComputePlaneIsTargeted(t *testing.T) { } } +func TestControlPlaneIsTargeted(t *testing.T) { + t.Cleanup(func() { + checkPre = false + checkControlPlane = false + checkAll = false + }) + + tests := []struct { + name string + pre bool + cp bool + all bool + mode kubectx.Mode + want bool + }{ + {"--control-plane single", false, true, false, kubectx.ModeSingle, true}, + {"--control-plane split", false, true, false, kubectx.ModeSplit, true}, + {"--all single", false, false, true, kubectx.ModeSingle, true}, + {"--all split", false, false, true, kubectx.ModeSplit, true}, + {"--pre single -- implicit control plane", true, false, false, kubectx.ModeSingle, true}, + {"--pre split -- must not target control plane", true, false, false, kubectx.ModeSplit, false}, + {"--compute-plane only", false, false, false, kubectx.ModeSingle, false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + checkPre = tt.pre + checkControlPlane = tt.cp + checkAll = tt.all + assert.Equal(t, tt.want, controlPlaneIsTargeted(tt.mode)) + }) + } +} + // TestCheck_ComputePlaneFlagRunsChecks verifies that --compute-plane alone // produces compute-plane-cluster category events. Before the gating fix this // flag was a complete no-op and produced no check events at all. @@ -398,7 +432,8 @@ func TestCheck_ComputePlaneFlagRunsChecks(t *testing.T) { rootCmd.SetErr(&stderr) rootCmd.SetOut(&bytes.Buffer{}) - rootCmd.SetArgs([]string{"self-hosted", "check", "--compute-plane", "--json"}) + t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") + rootCmd.SetArgs([]string{"self-hosted", "check", "--compute-plane", "--skip-cluster-validation", "--json"}) _ = rootCmd.Execute() lines := parseJSONLLines(t, stderr.String()) @@ -429,7 +464,8 @@ func TestCheck_ControlPlaneFlagRunsChecks(t *testing.T) { rootCmd.SetErr(&stderr) rootCmd.SetOut(&bytes.Buffer{}) - rootCmd.SetArgs([]string{"self-hosted", "check", "--control-plane", "--json"}) + t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") + rootCmd.SetArgs([]string{"self-hosted", "check", "--control-plane", "--skip-cluster-validation", "--json"}) _ = rootCmd.Execute() lines := parseJSONLLines(t, stderr.String()) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index a9e1c6832b..c779eac997 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -142,10 +142,13 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image // checks. Best-effort: a failure here is logged but does not abort the // run — the validator gracefully skips configurable checks when the // ConfigMap is absent. + var configNote string if role == clusterValidatorControlPlaneRole { if err := ensureClusterValidatorConfig(vctx, client, registries); err != nil { - // Non-fatal: reachability checks will be skipped, not the whole run. - _ = err + // Non-fatal: continue without the ConfigMap; the validator skips + // configurable reachability and enforcement checks silently unless + // we surface this note in the transcript. + configNote = fmt.Sprintf("note: validator config not applied (%v); reachability checks may be skipped", err) } } @@ -166,6 +169,9 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image defer logCancel() rawLogs, _ := fetchClusterValidatorLogs(logCtx, client, jobName) cleaned := cleanValidatorOutput(rawLogs) + if configNote != "" { + cleaned = configNote + "\n" + cleaned + } if waitErr != nil { return ClusterValidatorResult{ diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index 95051c402a..44f487581b 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -528,6 +528,16 @@ func TestBuildClusterValidatorJobShape(t *testing.T) { "preflight invocation must tag the validator so it does not attempt the metrics ConfigMap write") } +func TestBuildClusterValidatorJobShape_ValidatorRoleInEnv(t *testing.T) { + job := buildClusterValidatorJob("test-job", "img:1", "", clusterValidatorControlPlaneRole, false) + env := map[string]string{} + for _, e := range job.Spec.Template.Spec.Containers[0].Env { + env[e.Name] = e.Value + } + assert.Equal(t, clusterValidatorControlPlaneRole, env["VALIDATOR_ROLE"], + "VALIDATOR_ROLE must carry the role to the validator binary") +} + func TestBuildClusterValidatorJobShape_WithPullSecret(t *testing.T) { job := buildClusterValidatorJob("test-job", "img:1", "nvcr-pull-secret", "", false) require.Len(t, job.Spec.Template.Spec.ImagePullSecrets, 1) diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index 78b0614104..89e053256b 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -346,9 +346,11 @@ func buildCategories(cfg PreflightConfig, role Role, rc RoleConfig) []categorySp } // Registry credential check runs from the operator's machine — no cluster - // contact needed. Placed after local-host-tools but before cluster probes - // so credential failures surface early. - if len(cfg.Registries) > 0 && cfg.RegistryChecker != nil { + // contact needed. Gated on role != RoleComputePlane so the category is + // emitted at most once per invocation: in ModeSingle RunPreflightForRole + // is called for RoleControlPlane then RoleComputePlane sequentially; the + // gate ensures no duplicate check_started/check_completed events. + if role != RoleComputePlane && len(cfg.Registries) > 0 && cfg.RegistryChecker != nil { out = append(out, buildRegistryCredentialCategory(cfg)) } @@ -643,7 +645,7 @@ func registryCredentialCheck(checker RegistryCredentialChecker, entry RegistryEn ID: id, Severity: severity, } - if err := checker(ctx, entry.Registry, entry.RepoHint); err != nil { + if err := checker(ctx, entry.Registry, entry.RepoHint, entry.Critical); err != nil { r.Message = entry.Registry + ": " + err.Error() r.Err = err return r @@ -679,15 +681,28 @@ func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namesp return r } parts := make([]string, 0, len(stale)) - names := make([]string, 0, len(stale)) + var terminating, emptyShell []string for _, ns := range stale { parts = append(parts, ns.Name+" ("+ns.Reason+")") - names = append(names, ns.Name) + if ns.Reason == "stuck Terminating" { + terminating = append(terminating, ns.Name) + } else { + emptyShell = append(emptyShell, ns.Name) + } + } + var hints []string + if len(terminating) > 0 { + hints = append(hints, + fmt.Sprintf("remove finalizers on stuck namespaces: kubectl patch namespace %s -p '{\"spec\":{\"finalizers\":[]}}' --type=merge", + strings.Join(terminating, " "))) + } + if len(emptyShell) > 0 { + hints = append(hints, + fmt.Sprintf("inspect and delete empty namespaces: kubectl delete namespace %s", + strings.Join(emptyShell, " "))) } - r.Message = fmt.Sprintf( - "%d stale namespace(s) detected: %s — remove with: kubectl delete namespace %s --force --grace-period=0", - len(stale), strings.Join(parts, ", "), strings.Join(names, " "), - ) + r.Message = fmt.Sprintf("%d stale namespace(s) detected: %s. To resolve: %s", + len(stale), strings.Join(parts, ", "), strings.Join(hints, "; ")) return r }, } diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go index 0167a97900..be51732c3a 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go @@ -39,8 +39,9 @@ const ( // RegistryCredentialChecker probes whether credentials are present and valid // for a registry. repoHint is the repository path used as the OAuth scope; // pass "" to probe without a specific scope (works for public registries). -// Returns nil on success, a descriptive error otherwise. -type RegistryCredentialChecker func(ctx context.Context, registry, repoHint string) error +// critical signals that anonymous success is insufficient; configured credentials +// must be present. Returns nil on success, a descriptive error otherwise. +type RegistryCredentialChecker func(ctx context.Context, registry, repoHint string, critical bool) error // NewRegistryCredentialChecker returns a production RegistryCredentialChecker // backed by real HTTP calls. @@ -50,8 +51,9 @@ func NewRegistryCredentialChecker() RegistryCredentialChecker { // probeRegistryCredential authenticates to registry using the OCI Bearer token // flow. repoHint is the OAuth scope repository path. ECR registries return a -// clear diagnostic instead of attempting the Bearer flow. -func probeRegistryCredential(ctx context.Context, registry, repoHint string) error { +// clear diagnostic instead of attempting the Bearer flow. When critical is true, +// anonymous token success is rejected: configured credentials must be present. +func probeRegistryCredential(ctx context.Context, registry, repoHint string, critical bool) error { if isECRRegistry(registry) { return fmt.Errorf("ECR registry detected — credential validation requires AWS CLI; " + "run 'aws ecr get-login-password' to verify manually") @@ -105,6 +107,14 @@ func probeRegistryCredential(ctx context.Context, registry, repoHint string) err } return fmt.Errorf("credentials rejected by %s: %w", registry, err) } + // For critical registries, a successful anonymous token is not enough: + // if the actual install pulls private images, anonymous access will fail. + if critical { + if _, _, hasCreds := credentialsForRegistry(registry); !hasCreds { + return fmt.Errorf("no credentials configured for %s "+ + "(add to ~/.docker/config.json or set NGC_API_KEY for NGC registries)", registry) + } + } return nil } @@ -170,11 +180,18 @@ func EnumerateRegistries(imageRef, stackValuesFile string, extras []string) []Re add(certManagerRegistry, false) // Source 4: operator-supplied extras (--cluster-validator-registries). + // Preserve non-443 ports in the registry string so probeRegistryCredential + // builds the correct https://host:port/v2/ URL. for _, e := range extras { - host, _ := parseRegistryHostPort(e) - if host != "" { - add(host, false) + host, port := parseRegistryHostPort(e) + if host == "" { + continue + } + reg := host + if port != 0 && port != 443 { + reg = fmt.Sprintf("%s:%d", host, port) } + add(reg, false) } return out diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go index 2c9bfcb667..ca6f81104a 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go @@ -47,7 +47,7 @@ func TestProbeRegistryCredential_PublicRegistry(t *testing.T) { // Use the test server's host as the registry. host := strings.TrimPrefix(srv.URL, "https://") - err := probeRegistryCredential(context.Background(), host, "") + err := probeRegistryCredential(context.Background(), host, "", false) assert.NoError(t, err, "public registry (200 on /v2/) must not return an error") } @@ -80,7 +80,7 @@ func TestProbeRegistryCredential_AuthSucceeds(t *testing.T) { t.Cleanup(func() { http.DefaultTransport = origTransport }) host := strings.TrimPrefix(registrySrv.URL, "https://") - err := probeRegistryCredential(context.Background(), host, "") + err := probeRegistryCredential(context.Background(), host, "", false) assert.NoError(t, err, "successful token exchange must return nil") } @@ -105,7 +105,7 @@ func TestProbeRegistryCredential_AuthFails(t *testing.T) { t.Cleanup(func() { http.DefaultTransport = origTransport }) host := strings.TrimPrefix(registrySrv.URL, "https://") - err := probeRegistryCredential(context.Background(), host, "") + err := probeRegistryCredential(context.Background(), host, "", false) assert.Error(t, err, "failed token exchange must return an error") } @@ -113,7 +113,7 @@ func TestProbeRegistryCredential_ECRSkipped(t *testing.T) { // ECR registries must get a clear "use AWS CLI" message rather than a // confusing Bearer token failure. err := probeRegistryCredential(context.Background(), - "123456789.dkr.ecr.us-east-1.amazonaws.com", "") + "123456789.dkr.ecr.us-east-1.amazonaws.com", "", false) require.Error(t, err) assert.Contains(t, err.Error(), "ECR", "ECR registries must produce a clear diagnostic") assert.Contains(t, err.Error(), "AWS", "message must mention AWS") @@ -249,7 +249,7 @@ func TestIsECRRegistry(t *testing.T) { // -- registryCredentialCheck binaryCheckSpec -- func TestRegistryCredentialCheck_PassWhenNoError(t *testing.T) { - checker := func(_ context.Context, reg, _ string) error { return nil } + checker := func(_ context.Context, reg, _ string, _ bool) error { return nil } spec := registryCredentialCheck(checker, RegistryEntry{Registry: "nvcr.io", Critical: true}) r := spec.Run(context.Background()) assert.True(t, r.Passed) @@ -258,7 +258,7 @@ func TestRegistryCredentialCheck_PassWhenNoError(t *testing.T) { } func TestRegistryCredentialCheck_CriticalSeverityOnFailure(t *testing.T) { - checker := func(_ context.Context, reg, _ string) error { + checker := func(_ context.Context, reg, _ string, _ bool) error { return errorf("credentials rejected") } spec := registryCredentialCheck(checker, RegistryEntry{Registry: "nvcr.io", Critical: true}) @@ -268,7 +268,7 @@ func TestRegistryCredentialCheck_CriticalSeverityOnFailure(t *testing.T) { } func TestRegistryCredentialCheck_WarningSeverityOnNonCriticalFailure(t *testing.T) { - checker := func(_ context.Context, reg, _ string) error { + checker := func(_ context.Context, reg, _ string, _ bool) error { return errorf("credentials rejected") } spec := registryCredentialCheck(checker, RegistryEntry{Registry: "quay.io", Critical: false}) diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go index 8fe3131754..2e6df32c50 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go @@ -100,8 +100,13 @@ func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, name continue } + // Limit to 1: only existence matters, not the full release history. + // Note: this assumes Helm's default secret storage driver. Clusters + // using HELM_DRIVER=configmap or sql will have no owner=helm secrets + // and may be incorrectly reported as empty shells. secrets, err := client.CoreV1().Secrets(name).List(ctx, metav1.ListOptions{ LabelSelector: "owner=helm", + Limit: 1, }) if err != nil { return stale, fmt.Errorf("list Helm secrets in %s: %w", name, err) diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go index 8acd45a2fd..f86ba578cb 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go @@ -171,7 +171,7 @@ func TestStaleNamespaceCheck_StaleIsError(t *testing.T) { assert.Equal(t, "error", r.Severity, "detected stale namespaces must use error severity so the exit code is non-zero") assert.Contains(t, r.Message, "nvcf") - assert.Contains(t, r.Message, "kubectl delete namespace") + assert.Contains(t, r.Message, "kubectl patch namespace nvcf") } func TestStaleNamespaceCheck_CleanPasses(t *testing.T) { @@ -194,5 +194,6 @@ func TestStaleNamespaceCheck_MessageNamesAllStaleNamespaces(t *testing.T) { r := staleNamespaceCheck(prober, "", []string{"nvcf", "api-keys"}).Run(context.Background()) assert.Contains(t, r.Message, "nvcf") assert.Contains(t, r.Message, "api-keys") - assert.Contains(t, r.Message, "kubectl delete namespace nvcf api-keys") + assert.Contains(t, r.Message, "kubectl patch namespace nvcf") + assert.Contains(t, r.Message, "kubectl delete namespace api-keys") } diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go index 4578184db5..2c106c5d69 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go @@ -197,6 +197,13 @@ func exchangeBearerToken(ctx context.Context, client *http.Client, registry, rep if err != nil { return exchangeNGCBearerToken(ctx, client, registry, repo) } + // Reject non-HTTPS or relative realms before attaching credentials. + // The realm comes from a registry-controlled response header and must be + // an absolute HTTPS URL to prevent sending credentials over cleartext or + // to an unrelated host. + if u.Scheme != "https" || u.Host == "" { + return "", fmt.Errorf("refusing token exchange at insecure or relative realm %q for %s", realm, registry) + } q := u.Query() if service != "" { q.Set("service", service) @@ -334,10 +341,10 @@ func parseWWWAuthenticate(header string) (realm, service, scope string) { } else { comma := strings.IndexByte(params, ',') if comma < 0 { - val = params + val = strings.TrimSpace(params) params = "" } else { - val = params[:comma] + val = strings.TrimSpace(params[:comma]) params = params[comma+1:] } } From 6fa77330553bcc2723749a1672f836829ef40ab3 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 12 Aug 2026 19:32:38 +0530 Subject: [PATCH 06/55] fix(check): replace parseRegistryHostPort with net.SplitHostPort and decouple registry checks from validator image --- src/clis/nvcf-cli/cmd/self_hosted_check.go | 10 ++++-- .../internal/selfhosted/clustervalidator.go | 35 ++++++++++--------- .../selfhosted/clustervalidator_test.go | 5 +++ 3 files changed, 32 insertions(+), 18 deletions(-) diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index deffda153a..e9fb76a762 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -200,13 +200,19 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { credEntries []selfhosted.RegistryEntry registryChecker selfhosted.RegistryCredentialChecker ) - if !localOnly && clusterValidatorImage != "" { + // Run credential checks whenever not local-only. The validator image is + // optional: EnumerateRegistries handles an empty image ref and still picks + // up global.image.registry from the stack values file and any + // --cluster-validator-registries extras independently of the image config. + if !localOnly { extraRegistries := viper.GetStringSlice("cluster_validator_registries") stackValuesFile := resolveStackValuesFile() credEntries = selfhosted.EnumerateRegistries( clusterValidatorImage, stackValuesFile, extraRegistries, ) - registryChecker = newRegistryCredentialCheckerForSelfHosted() + if len(credEntries) > 0 { + registryChecker = newRegistryCredentialCheckerForSelfHosted() + } } cfg := selfhosted.PreflightConfig{ diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index c779eac997..ad825dfdf1 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -21,7 +21,9 @@ import ( "context" "fmt" "io" + "net" "regexp" + "strconv" "strings" "time" @@ -389,28 +391,29 @@ func buildControlPlaneValidatorConfig(extraRegistries []string) string { "enforcement:", extra.String()+"enforcement:", 1) } -// parseRegistryHostPort splits a "host:port" string. Returns port 443 when -// no port is specified or when the port is not a valid number. +// parseRegistryHostPort splits a "host:port" string using net.SplitHostPort, +// which correctly handles IPv6 literals ([::1]:5000) and bare hostnames. +// Returns port 443 when no port is specified, the port is non-numeric, or +// the input has a trailing colon with no digit (e.g. "nvcr.io:"). func parseRegistryHostPort(s string) (host string, port int) { s = strings.TrimSpace(s) if s == "" { return "", 0 } - if idx := strings.LastIndex(s, ":"); idx > 0 { - h := s[:idx] - p := s[idx+1:] - n := 0 - for _, c := range p { - if c < '0' || c > '9' { - return s, 443 - } - n = n*10 + int(c-'0') - } - if n > 0 && n <= 65535 { - return h, n - } + h, p, err := net.SplitHostPort(s) + if err != nil { + // No port present (e.g. "nvcr.io") — return the input as-is. + return s, 443 + } + if p == "" { + // Trailing colon with no port digit (e.g. "nvcr.io:"). + return h, 443 + } + n, err := strconv.Atoi(p) + if err != nil || n <= 0 || n > 65535 { + return h, 443 } - return s, 443 + return h, n } // buildClusterValidatorJob creates the validator Job. PullIfNotPresent reuses diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index 44f487581b..ee70636e36 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -648,6 +648,11 @@ func TestParseRegistryHostPort(t *testing.T) { {"registry.example.com", "registry.example.com", 443}, // no port → 443 {"", "", 0}, // empty → skip {" ", "", 0}, // blank → skip + // IPv6: net.SplitHostPort handles bracketed literals correctly. + {"[::1]:5000", "::1", 5000}, + {"[2001:db8::1]:443", "2001:db8::1", 443}, + // Trailing colon with no digit → default to 443. + {"nvcr.io:", "nvcr.io", 443}, } for _, tt := range tests { t.Run(tt.in, func(t *testing.T) { From b6eaac136c92b1805b3f0110847baef3de50e0f7 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 12 Aug 2026 20:07:23 +0530 Subject: [PATCH 07/55] fix(check): sweep ClusterRole and ClusterRoleBinding after validator Job completes --- .../internal/selfhosted/clustervalidator.go | 19 +++++++++++++++++++ .../selfhosted/clustervalidator_test.go | 3 ++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index ad825dfdf1..75c9d9a51b 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -138,6 +138,14 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image if err := ensureClusterValidatorRBAC(vctx, client); err != nil { return ClusterValidatorResult{Err: fmt.Errorf("bootstrapping validator RBAC: %w", err)} } + // Remove the ClusterRole and ClusterRoleBinding after the Job finishes + // (when cleanup is enabled) to minimize the window where the elevated SA + // exists. Uses a fresh context so cleanup runs even when vctx is expired. + // When --no-cleanup is set, the operator expects to inspect the Job; we + // leave the RBAC in place so they can re-exec the pod without re-bootstrap. + if !noCleanup { + defer sweepClusterValidatorRBAC(context.Background(), client) + } // For the control-plane role, create a ConfigMap with reachability // endpoints and enforcement config so the validator runs its configurable @@ -276,6 +284,17 @@ func clusterValidatorLabels() map[string]string { } } +// sweepClusterValidatorRBAC removes the SA, ClusterRole, and ClusterRoleBinding +// created by ensureClusterValidatorRBAC. Called after Job completion (when +// --no-cleanup is not set) to close the window where the elevated ClusterRole +// exists. The next run recreates them via ensureClusterValidatorRBAC. +// Errors are swallowed: stale RBAC is preferable to failing the result. +func sweepClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface) { + _ = client.RbacV1().ClusterRoleBindings().Delete(ctx, clusterValidatorName, metav1.DeleteOptions{}) + _ = client.RbacV1().ClusterRoles().Delete(ctx, clusterValidatorName, metav1.DeleteOptions{}) + _ = client.CoreV1().ServiceAccounts(clusterValidatorNamespace).Delete(ctx, clusterValidatorName, metav1.DeleteOptions{}) +} + // Errors are swallowed: a stale Job is preferable to blocking the new run. func sweepPriorClusterValidatorJobs(ctx context.Context, client kubernetes.Interface) { selector := fmt.Sprintf("app.kubernetes.io/name=%s,app.kubernetes.io/managed-by=nvcf-cli", clusterValidatorAppLabel) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index ee70636e36..0ecb7e602b 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -264,7 +264,8 @@ func TestRunClusterValidator_RBACRefreshesClusterRoleRules(t *testing.T) { }) client.PrependReactor("list", "pods", podListReactor("")) - res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false, "", nil) + // noCleanup=true so the ClusterRole is not swept before we inspect it. + res := runClusterValidator(context.Background(), client, "test-image:1.0", "", true, "", nil) require.NoError(t, res.Err) got, err := client.RbacV1().ClusterRoles().Get(context.Background(), clusterValidatorName, metav1.GetOptions{}) From 5c4d2dc5d784b68cc873d6f07f817fd330055492 Mon Sep 17 00:00:00 2001 From: rohithb Date: Mon, 17 Aug 2026 22:13:45 +0530 Subject: [PATCH 08/55] fix(nvcf-cli): add DaemonSet create/delete RBAC for node-to-node probe --- src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 75c9d9a51b..66a409d140 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -235,7 +235,10 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface // check which creates/updates/deletes policies in the temp namespace. {APIGroups: []string{"networking.k8s.io"}, Resources: []string{"networkpolicies"}, Verbs: []string{"get", "list", "create", "update", "delete"}}, {APIGroups: []string{"admissionregistration.k8s.io"}, Resources: []string{"mutatingwebhookconfigurations", "validatingwebhookconfigurations"}, Verbs: []string{"get", "list"}}, - {APIGroups: []string{"apps"}, Resources: []string{"deployments", "daemonsets", "statefulsets"}, Verbs: []string{"get", "list"}}, + // Deployments/StatefulSets: list for Tier-1/Tier-2 HA readiness checks. + // DaemonSets: create/delete for the node-to-node DaemonSet probe; list to watch pod readiness. + {APIGroups: []string{"apps"}, Resources: []string{"deployments", "statefulsets"}, Verbs: []string{"get", "list"}}, + {APIGroups: []string{"apps"}, Resources: []string{"daemonsets"}, Verbs: []string{"get", "list", "create", "delete"}}, // Gateway API: control-plane gateway and route health checks. {APIGroups: []string{"gateway.networking.k8s.io"}, Resources: []string{"gatewayclasses", "gateways", "httproutes", "grpcroutes"}, Verbs: []string{"get", "list"}}, {NonResourceURLs: []string{"/readyz", "/version", "/healthz"}, Verbs: []string{"get"}}, From 81930891af3784168756f506a48b4a48514eb80b Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 19 Aug 2026 14:53:48 +0530 Subject: [PATCH 09/55] fix(nvcf-cli): address CodeRabbit review comments in validatortag and stale namespace isNGCRegistry: use dot-boundary host matching and strip port before comparing so evilnvcr.io and nvidia.com.invalid are rejected while nvcr.io:443 and stg.nvcr.io are correctly accepted. parseWWWAuthenticate: accept Bearer challenge schemes case-insensitively using strings.EqualFold after splitting scheme from parameters on whitespace (RFC 7235 requires case-insensitive scheme comparison). probeStaleNamespaces: fall back to listing owner=helm ConfigMaps when no owner=helm Secret exists, so clusters running HELM_DRIVER=configmap are not incorrectly reported as empty shells. stale_namespace_test.go: replace non-ASCII em dashes in comments with ASCII hyphens per repo style guidelines. --- .../internal/selfhosted/stale_namespace.go | 18 +++++-- .../selfhosted/stale_namespace_test.go | 34 ++++++++++--- .../internal/selfhosted/validatortag.go | 49 ++++++++++++++++--- .../internal/selfhosted/validatortag_test.go | 22 +++++++++ 4 files changed, 105 insertions(+), 18 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go index 2e6df32c50..56a57526a8 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go @@ -101,9 +101,9 @@ func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, name } // Limit to 1: only existence matters, not the full release history. - // Note: this assumes Helm's default secret storage driver. Clusters - // using HELM_DRIVER=configmap or sql will have no owner=helm secrets - // and may be incorrectly reported as empty shells. + // Check Secrets first (default Helm storage driver). If none exist, + // also check ConfigMaps to handle HELM_DRIVER=configmap clusters — + // both storage backends label their release objects with owner=helm. secrets, err := client.CoreV1().Secrets(name).List(ctx, metav1.ListOptions{ LabelSelector: "owner=helm", Limit: 1, @@ -111,7 +111,17 @@ func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, name if err != nil { return stale, fmt.Errorf("list Helm secrets in %s: %w", name, err) } - if len(secrets.Items) == 0 { + if len(secrets.Items) > 0 { + continue // healthy: active Helm release found via secret driver + } + cms, err := client.CoreV1().ConfigMaps(name).List(ctx, metav1.ListOptions{ + LabelSelector: "owner=helm", + Limit: 1, + }) + if err != nil { + return stale, fmt.Errorf("list Helm configmaps in %s: %w", name, err) + } + if len(cms.Items) == 0 { stale = append(stale, StaleNamespace{Name: name, Reason: "no Helm release"}) } } diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go index f86ba578cb..e64700366f 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go @@ -33,7 +33,7 @@ import ( // -- probeStaleNamespaces -- func TestProbeStaleNamespaces_AbsentIsHealthy(t *testing.T) { - // A namespace that doesn't exist is not stale — it has simply never been + // A namespace that doesn't exist is not stale - it has simply never been // created or was already fully deleted. client := fake.NewSimpleClientset() stale, err := probeStaleNamespaces(context.Background(), client, []string{"nvcf", "sis"}) @@ -101,11 +101,33 @@ func TestProbeStaleNamespaces_HealthyReleaseNotStale(t *testing.T) { assert.Empty(t, stale, "namespace with an active Helm release must not be stale") } +func TestProbeStaleNamespaces_HealthyReleaseConfigMapDriverNotStale(t *testing.T) { + // HELM_DRIVER=configmap stores release objects as ConfigMaps with owner=helm. + // A namespace with an owner=helm ConfigMap and no Helm Secret must not be + // reported as stale. + client := fake.NewSimpleClientset( + &corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{Name: "nvcf"}, + Status: corev1.NamespaceStatus{Phase: corev1.NamespaceActive}, + }, + &corev1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{ + Name: "nvcf.v1", + Namespace: "nvcf", + Labels: map[string]string{"owner": "helm", "name": "nvcf", "status": "deployed"}, + }, + }, + ) + stale, err := probeStaleNamespaces(context.Background(), client, []string{"nvcf"}) + require.NoError(t, err) + assert.Empty(t, stale, "namespace with an owner=helm ConfigMap (configmap driver) must not be stale") +} + func TestProbeStaleNamespaces_MixedNamespaces(t *testing.T) { // One absent, one healthy, one terminating, one empty shell. now := metav1.Now() client := fake.NewSimpleClientset( - // "sis" — healthy with a Helm release + // "sis" - healthy with a Helm release &corev1.Namespace{ ObjectMeta: metav1.ObjectMeta{Name: "sis"}, Status: corev1.NamespaceStatus{Phase: corev1.NamespaceActive}, @@ -116,17 +138,17 @@ func TestProbeStaleNamespaces_MixedNamespaces(t *testing.T) { Labels: map[string]string{"owner": "helm"}, }, }, - // "nvcf" — stuck terminating + // "nvcf" - stuck terminating &corev1.Namespace{ ObjectMeta: metav1.ObjectMeta{Name: "nvcf", DeletionTimestamp: &now}, Status: corev1.NamespaceStatus{Phase: corev1.NamespaceTerminating}, }, - // "api-keys" — empty shell + // "api-keys" - empty shell &corev1.Namespace{ ObjectMeta: metav1.ObjectMeta{Name: "api-keys"}, Status: corev1.NamespaceStatus{Phase: corev1.NamespaceActive}, }, - // "cassandra-system" — absent (not present in fake) + // "cassandra-system" - absent (not present in fake) ) namespaces := []string{"cassandra-system", "sis", "nvcf", "api-keys"} @@ -148,7 +170,7 @@ func TestProbeStaleNamespaces_MixedNamespaces(t *testing.T) { func TestStaleNamespaceCheck_ProberErrorDegradestoWarning(t *testing.T) { // A prober that cannot contact the cluster must not fail the overall check - // at error severity — it would produce false failures on transient network + // at error severity - it would produce false failures on transient network // issues or misconfigured kubeconfigs. prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { return nil, fmt.Errorf("cluster unreachable") diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go index 2c106c5d69..b3eef3e0bd 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go @@ -23,6 +23,7 @@ import ( "encoding/json" "fmt" "io" + "net" "net/http" "net/url" "os" @@ -315,11 +316,13 @@ func exchangeNGCBearerToken(ctx context.Context, client *http.Client, registry, // Returns empty strings when the header is absent, not a Bearer challenge, or // cannot be parsed. The parser handles quoted values that might contain commas. func parseWWWAuthenticate(header string) (realm, service, scope string) { - const prefix = "Bearer " - if !strings.HasPrefix(header, prefix) { + // Split scheme from parameters on the first whitespace. HTTP auth scheme + // names are case-insensitive (RFC 7235 s2.1), so compare with EqualFold. + idx := strings.IndexByte(header, ' ') + if idx < 0 || !strings.EqualFold(header[:idx], "Bearer") { return } - params := strings.TrimSpace(header[len(prefix):]) + params := strings.TrimSpace(header[idx+1:]) for len(params) > 0 { // Find key= eq := strings.IndexByte(params, '=') @@ -361,12 +364,42 @@ func parseWWWAuthenticate(header string) (realm, service, scope string) { return } -// isNGCRegistry returns true when the registry is hosted on an NVIDIA / NGC -// domain, where the /proxy_auth fallback applies. +// ngcApprovedHosts is the set of exact hostnames (without port) that are +// considered NGC-hosted. Dot-prefixed entries match any subdomain. +var ngcApprovedHosts = []string{ + "nvcr.io", + ".nvcr.io", + "nvidia.com", + ".nvidia.com", + "ngc.nvidia", + ".ngc.nvidia", +} + +// isNGCRegistry returns true when the registry host belongs to an NVIDIA / NGC +// domain. The check strips any port from the registry string before matching +// so that nvcr.io:443 is handled correctly, and uses dot-boundary matching to +// reject deceptive suffixes such as evilnvcr.io or nvidia.com.invalid. func isNGCRegistry(registry string) bool { - return strings.HasSuffix(registry, "nvcr.io") || - strings.Contains(registry, "nvidia.com") || - strings.Contains(registry, "ngc.nvidia") + host := registry + // Strip port if present (e.g. nvcr.io:5000 -> nvcr.io). + if h, _, err := net.SplitHostPort(registry); err == nil { + host = h + } + host = strings.ToLower(host) + for _, approved := range ngcApprovedHosts { + if strings.HasPrefix(approved, ".") { + // Subdomain match: host must end with ".suffix" or equal "suffix". + suffix := approved[1:] // strip the leading dot + if host == suffix || strings.HasSuffix(host, approved) { + return true + } + } else { + if host == approved { + return true + } + } + } + return false } // credentialsForRegistry resolves (username, password) for any registry. diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go index b7c58c8979..387254f039 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go @@ -294,13 +294,35 @@ func TestParseWWWAuthenticate_RealmOnly(t *testing.T) { assert.Empty(t, scope) } +func TestParseWWWAuthenticate_CaseInsensitiveBearer(t *testing.T) { + // HTTP auth scheme names are case-insensitive (RFC 7235 s2.1). + for _, header := range []string{ + `bearer realm="https://auth.example.com/token",service="reg.example.com"`, + `BEARER realm="https://auth.example.com/token",service="reg.example.com"`, + `Bearer realm="https://auth.example.com/token",service="reg.example.com"`, + } { + realm, service, _ := parseWWWAuthenticate(header) + assert.Equal(t, "https://auth.example.com/token", realm, "header: %s", header) + assert.Equal(t, "reg.example.com", service, "header: %s", header) + } +} + // -- isNGCRegistry -- func TestIsNGCRegistry(t *testing.T) { + // Valid NGC registries. assert.True(t, isNGCRegistry("nvcr.io")) assert.True(t, isNGCRegistry("stg.nvcr.io")) assert.True(t, isNGCRegistry("registry.nvidia.com")) + assert.True(t, isNGCRegistry("nvcr.io:443"), "port must be stripped before matching") + + // Non-NGC registries must be rejected. assert.False(t, isNGCRegistry("ghcr.io")) assert.False(t, isNGCRegistry("quay.io")) assert.False(t, isNGCRegistry("harbor.company.internal")) + + // Deceptive suffixes must be rejected. + assert.False(t, isNGCRegistry("evilnvcr.io"), "suffix match without dot boundary must be rejected") + assert.False(t, isNGCRegistry("nvidia.com.invalid"), "deceptive TLD must be rejected") + assert.False(t, isNGCRegistry("fakenvidia.com"), "partial host match must be rejected") } From c3c4a41cb8a4505c262efe1c279e614afe9b8916 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 19 Aug 2026 16:01:56 +0530 Subject: [PATCH 10/55] fix(nvcf-cli): restrict NGC token fallback to NGC registries and fix em dash --- .../nvcf-cli/internal/selfhosted/stale_namespace.go | 2 +- .../nvcf-cli/internal/selfhosted/validatortag.go | 5 +++++ .../internal/selfhosted/validatortag_test.go | 13 +++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go index 56a57526a8..8779b8e1aa 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go @@ -102,7 +102,7 @@ func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, name // Limit to 1: only existence matters, not the full release history. // Check Secrets first (default Helm storage driver). If none exist, - // also check ConfigMaps to handle HELM_DRIVER=configmap clusters — + // also check ConfigMaps to handle HELM_DRIVER=configmap clusters; // both storage backends label their release objects with owner=helm. secrets, err := client.CoreV1().Secrets(name).List(ctx, metav1.ListOptions{ LabelSelector: "owner=helm", diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go index b3eef3e0bd..5a234ef1f7 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go @@ -270,7 +270,12 @@ func exchangeBearerToken(ctx context.Context, client *http.Client, registry, rep // exchangeNGCBearerToken is the NGC-specific /proxy_auth token exchange, // kept as a named fallback for when the standard OCI flow cannot be used. +// It always rejects non-NGC registries so NGC credentials are never sent +// to an unrelated /proxy_auth endpoint. func exchangeNGCBearerToken(ctx context.Context, client *http.Client, registry, repo string) (string, error) { + if !isNGCRegistry(registry) { + return "", fmt.Errorf("NGC token fallback not applicable for non-NGC registry %s", registry) + } user, pass, ok := ngcCredentials(registry) if !ok { return "", fmt.Errorf("no credentials for %s", registry) diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go index 387254f039..bcc49f8cab 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go @@ -20,6 +20,7 @@ package selfhosted import ( "context" "encoding/json" + "net/http" "os" "path/filepath" "testing" @@ -326,3 +327,15 @@ func TestIsNGCRegistry(t *testing.T) { assert.False(t, isNGCRegistry("nvidia.com.invalid"), "deceptive TLD must be rejected") assert.False(t, isNGCRegistry("fakenvidia.com"), "partial host match must be rejected") } + +// -- exchangeNGCBearerToken -- + +func TestExchangeNGCBearerToken_RejectsNonNGCRegistry(t *testing.T) { + // A non-NGC registry with an absent or malformed WWW-Authenticate header + // must not trigger the NGC /proxy_auth fallback. If it did, NGC credentials + // could be sent to an unrelated registry's /proxy_auth endpoint. + client := &http.Client{} + _, err := exchangeNGCBearerToken(context.Background(), client, "harbor.company.internal", "myrepo/image") + require.Error(t, err, "non-NGC registry must be rejected without issuing a request") + assert.Contains(t, err.Error(), "non-NGC registry") +} From de7999b9ead42bdbc2beeda926f628caf839bd44 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 19 Aug 2026 16:47:05 +0530 Subject: [PATCH 11/55] fix(nvcf-cli): response body close, case-insensitive params, empty scope, spy transport test --- .../internal/selfhosted/validatortag.go | 24 ++++++++++------- .../internal/selfhosted/validatortag_test.go | 26 ++++++++++++++++--- 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go index 5a234ef1f7..f906dff16d 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go @@ -240,15 +240,19 @@ func exchangeBearerToken(ctx context.Context, client *http.Client, registry, rep if err != nil { return "", err } - defer resp.Body.Close() if resp.StatusCode != http.StatusOK { - // WWW-Authenticate realm failed — try NGC's /proxy_auth as last resort + // Close the body immediately before the fallback or the error return so + // the connection is not held open while the NGC /proxy_auth call runs. + status := resp.Status + resp.Body.Close() + // WWW-Authenticate realm failed; try NGC's /proxy_auth as last resort // for registries that implement both endpoints (e.g. staging NGC envs). if isNGCRegistry(registry) { return exchangeNGCBearerToken(ctx, client, registry, repo) } - return "", fmt.Errorf("token exchange at %s returned %s", realm, resp.Status) + return "", fmt.Errorf("token exchange at %s returned %s", realm, status) } + defer resp.Body.Close() // Both "token" (OCI spec) and "access_token" (Docker Hub variant) are valid. var doc struct { @@ -280,14 +284,14 @@ func exchangeNGCBearerToken(ctx context.Context, client *http.Client, registry, if !ok { return "", fmt.Errorf("no credentials for %s", registry) } - // Build scope: use actual repo when provided; omit when empty so the NGC - // /proxy_auth endpoint validates the key without org-scoped access checks. - scope := "" + // Build the query: use url.Values so the scope key is omitted entirely + // when repo is empty rather than sending scope= with an empty value. + // An empty scope validates the API key without org-scoped access checks. + q := url.Values{"service": {registry}} if repo != "" { - scope = "repository:" + repo + ":pull" + q.Set("scope", "repository:"+repo+":pull") } - tokenURL := fmt.Sprintf("https://%s/proxy_auth?service=%s&scope=%s", - registry, registry, scope) + tokenURL := "https://" + registry + "/proxy_auth?" + q.Encode() req, err := http.NewRequestWithContext(ctx, http.MethodGet, tokenURL, nil) if err != nil { return "", err @@ -357,7 +361,7 @@ func parseWWWAuthenticate(header string) (realm, service, scope string) { } } - switch key { + switch strings.ToLower(key) { case "realm": realm = val case "service": diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go index bcc49f8cab..e2d7809e54 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go @@ -295,6 +295,14 @@ func TestParseWWWAuthenticate_RealmOnly(t *testing.T) { assert.Empty(t, scope) } +func TestParseWWWAuthenticate_MixedCaseParams(t *testing.T) { + // Auth parameter names are parsed with mixed case in the wild. + realm, service, scope := parseWWWAuthenticate(`Bearer Realm="https://auth.example.com/token",Service="reg.example.com",Scope="repository:foo:pull"`) + assert.Equal(t, "https://auth.example.com/token", realm) + assert.Equal(t, "reg.example.com", service) + assert.Equal(t, "repository:foo:pull", scope) +} + func TestParseWWWAuthenticate_CaseInsensitiveBearer(t *testing.T) { // HTTP auth scheme names are case-insensitive (RFC 7235 s2.1). for _, header := range []string{ @@ -330,11 +338,21 @@ func TestIsNGCRegistry(t *testing.T) { // -- exchangeNGCBearerToken -- +// spyTransport is an http.RoundTripper that fails the test if called. +type spyTransport struct{ t *testing.T } + +func (s *spyTransport) RoundTrip(_ *http.Request) (*http.Response, error) { + s.t.Fatal("HTTP request must not be issued for non-NGC registry") + return nil, nil +} + func TestExchangeNGCBearerToken_RejectsNonNGCRegistry(t *testing.T) { - // A non-NGC registry with an absent or malformed WWW-Authenticate header - // must not trigger the NGC /proxy_auth fallback. If it did, NGC credentials - // could be sent to an unrelated registry's /proxy_auth endpoint. - client := &http.Client{} + // A non-NGC registry must be rejected before any HTTP request is made, + // even when NGC credentials are configured. The spy transport fails the + // test immediately if RoundTrip is called, ensuring the isNGCRegistry + // guard fires before any network activity. + t.Setenv("NGC_API_KEY", "test-key") // configure a credential so a missing guard would reach the transport + client := &http.Client{Transport: &spyTransport{t: t}} _, err := exchangeNGCBearerToken(context.Background(), client, "harbor.company.internal", "myrepo/image") require.Error(t, err, "non-NGC registry must be rejected without issuing a request") assert.Contains(t, err.Error(), "non-NGC registry") From a52685f46d7e9f3416277342b7753b95e8156c53 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 19 Aug 2026 22:14:32 +0530 Subject: [PATCH 12/55] fix(nvcf-cli): authorize realm host before forwarding credentials and fix em dash --- .../internal/selfhosted/stale_namespace.go | 2 +- .../internal/selfhosted/validatortag.go | 22 +++++++++-- .../internal/selfhosted/validatortag_test.go | 38 +++++++++++++++++++ 3 files changed, 58 insertions(+), 4 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go index 8779b8e1aa..1f31403cf3 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go @@ -77,7 +77,7 @@ func NewStaleNamespaceProber() StaleNamespaceProber { // // A namespace is considered stale when either: // - its DeletionTimestamp is set or its phase is Terminating (finalizer -// deadlock — it will never complete without operator intervention), or +// deadlock; it will never complete without operator intervention), or // - it exists but holds no active Helm release (empty shell left by a partial // helm uninstall or a failed teardown that cleaned the release but not the // namespace). diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go index f906dff16d..9064e4db01 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go @@ -199,12 +199,28 @@ func exchangeBearerToken(ctx context.Context, client *http.Client, registry, rep return exchangeNGCBearerToken(ctx, client, registry, repo) } // Reject non-HTTPS or relative realms before attaching credentials. - // The realm comes from a registry-controlled response header and must be - // an absolute HTTPS URL to prevent sending credentials over cleartext or - // to an unrelated host. if u.Scheme != "https" || u.Host == "" { return "", fmt.Errorf("refusing token exchange at insecure or relative realm %q for %s", realm, registry) } + // Authorize the realm host before forwarding credentials. The realm URL + // comes from a registry-controlled response header. Without this check, a + // malicious registry could return realm="https://attacker.com/token" and + // receive the operator's Docker credentials for the original registry. + // Allow the realm only when it matches the registry's own host, is a + // sub-domain of that host (e.g. auth.registry.example.com for registry.example.com), + // or is an NGC auth domain when the registry is NGC-hosted (NGC delegates + // token issuance to authn.nvidia.com and other nvidia.com sub-domains). + realmHost := strings.ToLower(u.Hostname()) + regHost := strings.ToLower(registry) + if h, _, err := net.SplitHostPort(registry); err == nil { + regHost = strings.ToLower(h) + } + realmOK := realmHost == regHost || + strings.HasSuffix(realmHost, "."+regHost) || + (isNGCRegistry(registry) && isNGCRegistry(realmHost)) + if !realmOK { + return "", fmt.Errorf("refusing to forward credentials to realm host %q; not authorized for registry %s", realmHost, registry) + } q := u.Query() if service != "" { q.Set("service", service) diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go index e2d7809e54..1d082ddc99 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go @@ -21,8 +21,10 @@ import ( "context" "encoding/json" "net/http" + "net/http/httptest" "os" "path/filepath" + "strings" "testing" "time" @@ -336,6 +338,37 @@ func TestIsNGCRegistry(t *testing.T) { assert.False(t, isNGCRegistry("fakenvidia.com"), "partial host match must be rejected") } +// -- exchangeBearerToken realm host authorization -- + +func TestExchangeBearerToken_RejectsAttackerRealm(t *testing.T) { + // A malicious registry returns a realm on an attacker-controlled host. + // The function must reject this without forwarding credentials. + spy := &spyTransport{t: t} + + // Set up a fake registry server that returns 401 with an attacker realm. + srv := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Www-Authenticate", `Bearer realm="https://attacker.example.com/token",service="harbor.company.internal"`) + w.WriteHeader(http.StatusUnauthorized) + })) + defer srv.Close() + + client := srv.Client() + // Replace the transport with the spy AFTER the TLS is set up; the spy + // wraps the original to preserve TLS but fails on any attacker call. + origTransport := client.Transport + client.Transport = roundTripperFunc(func(r *http.Request) (*http.Response, error) { + if r.Host == "attacker.example.com" || strings.Contains(r.URL.Host, "attacker") { + t.Fatalf("credentials must not be forwarded to attacker host: %s", r.URL) + } + return origTransport.RoundTrip(r) + }) + _ = spy + + _, err := exchangeBearerToken(context.Background(), client, "harbor.company.internal", "myrepo/image", `Bearer realm="https://attacker.example.com/token",service="harbor.company.internal"`) + require.Error(t, err) + assert.Contains(t, err.Error(), "not authorized for registry") +} + // -- exchangeNGCBearerToken -- // spyTransport is an http.RoundTripper that fails the test if called. @@ -346,6 +379,11 @@ func (s *spyTransport) RoundTrip(_ *http.Request) (*http.Response, error) { return nil, nil } +// roundTripperFunc adapts a function to the http.RoundTripper interface. +type roundTripperFunc func(*http.Request) (*http.Response, error) + +func (f roundTripperFunc) RoundTrip(r *http.Request) (*http.Response, error) { return f(r) } + func TestExchangeNGCBearerToken_RejectsNonNGCRegistry(t *testing.T) { // A non-NGC registry must be rejected before any HTTP request is made, // even when NGC credentials are configured. The spy transport fails the From 2218f34fe0cd99b7ab90d6c59361b56ac45636fe Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 19 Aug 2026 22:39:13 +0530 Subject: [PATCH 13/55] fix(nvcf-cli): allow Docker Hub delegated auth realm in token exchange --- .../internal/selfhosted/validatortag.go | 15 ++++++++++++++- .../internal/selfhosted/validatortag_test.go | 17 +++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go index 9064e4db01..d2f9fbca98 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go @@ -217,7 +217,8 @@ func exchangeBearerToken(ctx context.Context, client *http.Client, registry, rep } realmOK := realmHost == regHost || strings.HasSuffix(realmHost, "."+regHost) || - (isNGCRegistry(registry) && isNGCRegistry(realmHost)) + (isNGCRegistry(registry) && isNGCRegistry(realmHost)) || + trustedRealmDelegations[regHost] == realmHost if !realmOK { return "", fmt.Errorf("refusing to forward credentials to realm host %q; not authorized for registry %s", realmHost, registry) } @@ -389,6 +390,18 @@ func parseWWWAuthenticate(header string) (realm, service, scope string) { return } +// trustedRealmDelegations maps a registry host to its authorized token host +// when the registry uses a separate host for token exchange. Only add entries +// here for registries with publicly documented auth architectures; this list +// extends the fail-closed realm validation and must not grow without a clear +// trust basis. +var trustedRealmDelegations = map[string]string{ + // Docker Hub documents this split explicitly: the pull host and the auth + // host are distinct (docs.docker.com/registry/spec/auth/token/). + "registry-1.docker.io": "auth.docker.io", + "docker.io": "auth.docker.io", +} + // ngcApprovedHosts is the set of exact hostnames (without port) that are // considered NGC-hosted. Dot-prefixed entries match any subdomain. var ngcApprovedHosts = []string{ diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go index 1d082ddc99..ce056a58b7 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go @@ -22,6 +22,7 @@ import ( "encoding/json" "net/http" "net/http/httptest" + "net/url" "os" "path/filepath" "strings" @@ -384,6 +385,22 @@ type roundTripperFunc func(*http.Request) (*http.Response, error) func (f roundTripperFunc) RoundTrip(r *http.Request) (*http.Response, error) { return f(r) } +func TestExchangeBearerToken_DockerHubDelegatedRealm(t *testing.T) { + // Docker Hub uses registry-1.docker.io as the pull host and auth.docker.io + // for token exchange. The realm host check must allow this documented + // delegation rather than rejecting it as an unauthorized host. + wwwAuth := `Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:library/ubuntu:pull"` + realm, _, _ := parseWWWAuthenticate(wwwAuth) + u, err := url.Parse(realm) + require.NoError(t, err) + + realmHost := strings.ToLower(u.Hostname()) + regHost := "registry-1.docker.io" + delegated := trustedRealmDelegations[regHost] + assert.Equal(t, "auth.docker.io", delegated, "Docker Hub auth host must be in trusted delegation map") + assert.Equal(t, delegated, realmHost, "auth.docker.io realm must be authorized for registry-1.docker.io") +} + func TestExchangeNGCBearerToken_RejectsNonNGCRegistry(t *testing.T) { // A non-NGC registry must be rejected before any HTTP request is made, // even when NGC credentials are configured. The spy transport fails the From b8faf70c7433164145442e84f401e3fa049e516f Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 15 Sep 2026 12:28:53 +0530 Subject: [PATCH 14/55] fix(nvcf-cli): stop preflight failing healthy clusters and destroying live namespaces --- .../selfhosted/clustervalidator_test.go | 2 - .../selfhosted/orchestrator_errors_test.go | 6 +- .../nvcf-cli/internal/selfhosted/preflight.go | 37 ++++- .../selfhosted/progress/k8s_watcher_test.go | 2 +- .../selfhosted/progress/log_line_writer.go | 12 +- .../selfhosted/progress/render_jsonl.go | 18 +-- .../selfhosted/progress/render_jsonl_test.go | 2 +- .../internal/selfhosted/registry_cred.go | 133 +++++++++++++++--- .../internal/selfhosted/registry_cred_test.go | 4 +- .../internal/selfhosted/stale_namespace.go | 99 +++++++++---- .../selfhosted/stale_namespace_test.go | 59 +++++++- .../selfhosted/teardown/drain_test.go | 4 +- .../internal/selfhosted/validatortag.go | 25 +++- .../internal/selfhosted/validatortag_test.go | 16 +-- 14 files changed, 335 insertions(+), 84 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index 0ecb7e602b..3db50167a6 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -131,7 +131,6 @@ func TestClusterValidatorCheck_OrchestratorErrorStaysWarning(t *testing.T) { assert.Contains(t, r.Message, "cluster-validator did not complete") } - func TestRunClusterValidator_HappyPath(t *testing.T) { client := fake.NewSimpleClientset() // Capture the Job name the runner picks, then drive Get/List reactors to @@ -678,4 +677,3 @@ func alreadyExistsReactor(resource, name string) ktesting.ReactionFunc { return true, nil, apierrors.NewAlreadyExists(gr, name) } } - diff --git a/src/clis/nvcf-cli/internal/selfhosted/orchestrator_errors_test.go b/src/clis/nvcf-cli/internal/selfhosted/orchestrator_errors_test.go index a3b2e0e184..5a1df7f0b7 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/orchestrator_errors_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/orchestrator_errors_test.go @@ -422,9 +422,9 @@ func TestRetryAfterFromError_Parsing(t *testing.T) { {"rate limit: Retry-After: 30", 30}, {"Retry-After: 120s", 120}, {"retry-after: 5", 5}, - {"no header here", 5}, // default - {"Retry-After: ", 5}, // no digits → default - {"Retry-After: 0", 5}, // zero → default + {"no header here", 5}, // default + {"Retry-After: ", 5}, // no digits → default + {"Retry-After: 0", 5}, // zero → default {"Retry-After: 300 ok", 300}, // stops at first non-digit } for _, tc := range cases { diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index 89e053256b..fd6138a628 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -19,6 +19,7 @@ package selfhosted import ( "context" + "errors" "fmt" "net/http" "os" @@ -55,7 +56,7 @@ type CheckResult struct { Message string Detail string // optional: short version string or extra context (M+8.11) HintURL string - Err error // populated only when the check itself failed to execute + Err error // populated only when the check itself failed to execute Logs string // optional: full check transcript for --show-logs; not emitted to JSON } @@ -646,6 +647,24 @@ func registryCredentialCheck(checker RegistryCredentialChecker, entry RegistryEn Severity: severity, } if err := checker(ctx, entry.Registry, entry.RepoHint, entry.Critical); err != nil { + // A registry this probe cannot speak to (ECR's SigV4, a Basic + // challenge) is not evidence of a credential problem, and an + // unreadable credential helper is not evidence of a missing + // credential. Neither may block the run. + var skipped errRegistryProbeSkipped + var unverified errRegistryCredentialsUnverified + switch { + case errors.As(err, &skipped): + r.Passed = true + r.Severity = "info" + r.Message = entry.Registry + ": skipped (" + skipped.reason + ")" + return r + case errors.As(err, &unverified): + r.Severity = "warning" + r.Message = entry.Registry + ": " + err.Error() + r.Err = err + return r + } r.Message = entry.Registry + ": " + err.Error() r.Err = err return r @@ -676,6 +695,7 @@ func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namesp return r } if len(stale) == 0 { + r.Severity = "info" r.Passed = true r.Message = "no stale NVCF namespaces detected" return r @@ -692,9 +712,20 @@ func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namesp } var hints []string if len(terminating) > 0 { + // spec.finalizers is writable only through the /finalize + // subresource: a plain patch or update is silently reverted by + // the apiserver's namespace strategy, so `kubectl patch ... + // --type=merge` prints "patched" and changes nothing. + for _, ns := range terminating { + hints = append(hints, fmt.Sprintf( + "clear namespace finalizers on %s: kubectl get ns %s -o json | "+ + "jq '.spec.finalizers=[]' | kubectl replace --raw /api/v1/namespaces/%s/finalize -f -", + ns, ns, ns)) + } hints = append(hints, - fmt.Sprintf("remove finalizers on stuck namespaces: kubectl patch namespace %s -p '{\"spec\":{\"finalizers\":[]}}' --type=merge", - strings.Join(terminating, " "))) + "if it stays Terminating, the deadlock is on objects inside it: "+ + "kubectl api-resources --verbs=list --namespaced -o name | "+ + "xargs -n1 kubectl get -n --show-kind --ignore-not-found") } if len(emptyShell) > 0 { hints = append(hints, diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/k8s_watcher_test.go b/src/clis/nvcf-cli/internal/selfhosted/progress/k8s_watcher_test.go index c8e22dd93f..03e2334eea 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/k8s_watcher_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/k8s_watcher_test.go @@ -135,7 +135,7 @@ func TestWatchResources_EmitsCountsForEachType(t *testing.T) { }, 3*time.Second, 50*time.Millisecond, "did not see all 5 resource types") last := sink.lastByResource() - assert.Equal(t, 4, last["namespaces"].Num) // phaseNum baked in + assert.Equal(t, 4, last["namespaces"].Num) // phaseNum baked in assert.Equal(t, "apply-cp", last["namespaces"].Name) // phaseName baked in assert.Equal(t, "namespaces", last["namespaces"].Resource) assert.Equal(t, 2, last["namespaces"].Done) diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/log_line_writer.go b/src/clis/nvcf-cli/internal/selfhosted/progress/log_line_writer.go index 3f6ff8f481..1a2cba7262 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/log_line_writer.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/log_line_writer.go @@ -41,12 +41,12 @@ import ( // EventSink is responsible for its own concurrency (JSONLRenderer's mu; // TTYRenderer's tea.Program.Send is goroutine-safe by design). type LogLineWriter struct { - mu sync.Mutex - buf bytes.Buffer - sink EventSink - stream string // "stdout" | "stderr" - source string // short producer tag, e.g. "helmfile-cp" - closed bool + mu sync.Mutex + buf bytes.Buffer + sink EventSink + stream string // "stdout" | "stderr" + source string // short producer tag, e.g. "helmfile-cp" + closed bool } // NewLogLineWriter constructs a LogLineWriter feeding into sink. stream and diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/render_jsonl.go b/src/clis/nvcf-cli/internal/selfhosted/progress/render_jsonl.go index 3f4940c1fd..736f861e06 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/render_jsonl.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/render_jsonl.go @@ -710,7 +710,7 @@ type wireClusterRow struct { Event string `json:"event"` TS string `json:"ts"` Name string `json:"name"` - Context string `json:"context,omitempty"` // M+9: omitted when unknown + Context string `json:"context,omitempty"` // M+9: omitted when unknown GPU string `json:"gpu"` GPUCount int `json:"gpuCount"` ActiveDeployments int `json:"activeDeployments"` @@ -766,12 +766,12 @@ type wireCategoryCompleted struct { // mode. It carries the Snapshot identity plus all ComponentHealth, ClusterRow, // and RecentEvent sub-objects inlined. type wireSnapshotComposed struct { - Event string `json:"event"` - TS string `json:"ts"` - Cluster string `json:"cluster"` - Verdict string `json:"verdict"` - ReconcileAgeSec int `json:"reconcileAgeSec"` - Identity wireSnapshotIdentity `json:"identity"` + Event string `json:"event"` + TS string `json:"ts"` + Cluster string `json:"cluster"` + Verdict string `json:"verdict"` + ReconcileAgeSec int `json:"reconcileAgeSec"` + Identity wireSnapshotIdentity `json:"identity"` Components []wireComponentInline `json:"components,omitempty"` ComputeClusters []wireClusterInline `json:"computeClusters,omitempty"` Events []wireEventInline `json:"events,omitempty"` @@ -781,7 +781,7 @@ type wireSnapshotComposed struct { type wireComponentInline struct { Name string `json:"name"` Cluster string `json:"cluster,omitempty"` - Role string `json:"role,omitempty"` // M+9: omitted in single-cluster mode + Role string `json:"role,omitempty"` // M+9: omitted in single-cluster mode Ready int `json:"ready"` Total int `json:"total"` UptimeSec int `json:"uptimeSec"` @@ -792,7 +792,7 @@ type wireComponentInline struct { // wireClusterInline is a ClusterRow without event/ts fields. type wireClusterInline struct { Name string `json:"name"` - Context string `json:"context,omitempty"` // M+9: omitted when unknown + Context string `json:"context,omitempty"` // M+9: omitted when unknown GPU string `json:"gpu"` GPUCount int `json:"gpuCount"` ActiveDeployments int `json:"activeDeployments"` diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/render_jsonl_test.go b/src/clis/nvcf-cli/internal/selfhosted/progress/render_jsonl_test.go index 3ceb92eb20..3f55654def 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/render_jsonl_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/render_jsonl_test.go @@ -82,7 +82,7 @@ func TestRenderJSONL_PhaseFailed(t *testing.T) { ErrCategory: "helm_apply", ErrMessage: "helm install api-keys: timed out", RetryClass: "backoff", RetryAfterSec: 60, Remediation: []string{"kubectl describe pod -n cassandra-system cassandra-0", "Re-run with --debug"}, - Raw: RawFailure{Subprocess: "helmfile", ExitCode: 1, StderrTail: "Error: timeout reached", KubernetesReason: "FailedScheduling"}, + Raw: RawFailure{Subprocess: "helmfile", ExitCode: 1, StderrTail: "Error: timeout reached", KubernetesReason: "FailedScheduling"}, }, } got := runEmit(t, clock, events) diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go index be51732c3a..9312b18807 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go @@ -20,8 +20,10 @@ package selfhosted import ( "context" "fmt" + "net" "net/http" "os" + "strconv" "strings" "time" @@ -54,15 +56,20 @@ func NewRegistryCredentialChecker() RegistryCredentialChecker { // clear diagnostic instead of attempting the Bearer flow. When critical is true, // anonymous token success is rejected: configured credentials must be present. func probeRegistryCredential(ctx context.Context, registry, repoHint string, critical bool) error { + // ECR uses AWS SigV4, not the OCI Bearer flow, so this probe cannot speak + // to it. Skip rather than fail: returning an error here makes an + // ECR-hosted validator image unconditionally fail preflight, so --wait + // could never converge. if isECRRegistry(registry) { - return fmt.Errorf("ECR registry detected — credential validation requires AWS CLI; " + - "run 'aws ecr get-login-password' to verify manually") + return errRegistryProbeSkipped{ + reason: "ECR uses AWS SigV4; verify manually with 'aws ecr get-login-password'", + } } pctx, cancel := context.WithTimeout(ctx, registryProbeTimeout) defer cancel() - client := &http.Client{Timeout: registryProbeTimeout} + client := &http.Client{Timeout: registryProbeTimeout, CheckRedirect: refuseInsecureRedirect} // Step 1: probe /v2/ unauthenticated. probeURL := "https://" + registry + "/v2/" @@ -75,11 +82,33 @@ func probeRegistryCredential(ctx context.Context, registry, repoHint string, cri return fmt.Errorf("cannot reach %s: %w", registry, err) } + // A 200 only proves /v2/ is anonymously readable, which says nothing about + // the repositories the install actually pulls. Require the registry to + // identify itself as an OCI registry so a captive portal or TLS-intercepting + // proxy answering 200 HTML is not read as success. + isOCI := resp.Header.Get("Docker-Distribution-Api-Version") != "" || + strings.Contains(resp.Header.Get("Www-Authenticate"), "realm") + switch resp.StatusCode { case http.StatusOK: - // Public registry — no credentials needed. resp.Body.Close() - return nil + if !isOCI { + // A captive portal or TLS-intercepting proxy also answers 200. The + // header is a Docker convention rather than an OCI requirement, so + // a conformant registry may legitimately omit it: report that the + // result is unverifiable instead of guessing either way. + return errRegistryProbeSkipped{ + reason: fmt.Sprintf("%s answered 200 but did not identify as an OCI registry; "+ + "if this is unexpected, check for a proxy or captive portal", registry), + } + } + // Anonymous read works. For a critical registry that is still not + // enough: the install pulls private repositories, so fall through to + // the credential requirement below rather than returning early. + if !critical { + return nil + } + return requireConfiguredCredentials(registry) case http.StatusUnauthorized: // Auth required — proceed with token exchange. default: @@ -94,6 +123,15 @@ func probeRegistryCredential(ctx context.Context, registry, repoHint string, cri wwwAuth := resp.Header.Get("Www-Authenticate") resp.Body.Close() + // Only the Bearer flow is implemented. Self-hosted Harbor and htpasswd + // mirrors commonly answer with Basic, where the Bearer path would report a + // spurious credential failure, so skip instead. + if scheme := authChallengeScheme(wwwAuth); scheme != "" && !strings.EqualFold(scheme, "Bearer") { + return errRegistryProbeSkipped{ + reason: fmt.Sprintf("%s uses %s auth; only the OCI Bearer flow is probed", registry, scheme), + } + } + _, err = exchangeBearerToken(pctx, client, registry, repoHint, wwwAuth) if err != nil { // Use credentialsForRegistry (not ngcCredentials) so NGC_API_KEY does @@ -110,14 +148,56 @@ func probeRegistryCredential(ctx context.Context, registry, repoHint string, cri // For critical registries, a successful anonymous token is not enough: // if the actual install pulls private images, anonymous access will fail. if critical { - if _, _, hasCreds := credentialsForRegistry(registry); !hasCreds { - return fmt.Errorf("no credentials configured for %s "+ - "(add to ~/.docker/config.json or set NGC_API_KEY for NGC registries)", registry) - } + return requireConfiguredCredentials(registry) } return nil } +// errRegistryProbeSkipped marks a registry this probe cannot speak to. The +// caller reports it as a skip rather than a credential failure. +type errRegistryProbeSkipped struct{ reason string } + +func (e errRegistryProbeSkipped) Error() string { return e.reason } + +// authChallengeScheme returns the auth scheme named by a WWW-Authenticate +// header, or "" when the header is absent or malformed. +func authChallengeScheme(header string) string { + header = strings.TrimSpace(header) + if header == "" { + return "" + } + if i := strings.IndexByte(header, ' '); i > 0 { + return header[:i] + } + return header +} + +// requireConfiguredCredentials reports an error when no credential is reachable +// for the registry. +// +// A missing credential is a warning, not a hard failure: credsFromDockerConfig +// reads only inline auth entries, so a workstation using a credential helper +// (credsStore on Docker Desktop, docker-credential-pass on Linux) has a working +// docker login that is invisible here. The install path also mints or mirrors a +// pull secret of its own, so preflight must not be the thing that blocks. +func requireConfiguredCredentials(registry string) error { + if _, _, ok := credentialsForRegistry(registry); ok { + return nil + } + return errRegistryCredentialsUnverified{registry: registry} +} + +// errRegistryCredentialsUnverified means no credential was found locally. The +// caller downgrades this to a warning. +type errRegistryCredentialsUnverified struct{ registry string } + +func (e errRegistryCredentialsUnverified) Error() string { + return fmt.Sprintf("no local credentials found for %s "+ + "(a credential helper such as credsStore is not readable here); "+ + "if 'docker pull' works this can be ignored, otherwise add an entry to "+ + "~/.docker/config.json or set NGC_API_KEY for NGC registries", e.registry) +} + // isECRRegistry returns true for AWS Elastic Container Registry hostnames, // which use AWS SigV4 auth instead of the OCI Bearer token flow. func isECRRegistry(registry string) bool { @@ -147,22 +227,25 @@ func EnumerateRegistries(imageRef, stackValuesFile string, extras []string) []Re seen := make(map[string]bool) var out []RegistryEntry - add := func(registry string, critical bool) { + add := func(registry, repoHint string, critical bool) { registry = strings.TrimSpace(registry) if registry == "" || seen[registry] { return } seen[registry] = true - out = append(out, RegistryEntry{Registry: registry, Critical: critical}) + out = append(out, RegistryEntry{Registry: registry, RepoHint: repoHint, Critical: critical}) } // Source 1: base registry from the configured validator image. // Carry the repo path as a scope hint so the token exchange uses the // operator's actual org rather than a fake one — NGC returns 403 for // orgs the API key cannot access, even if the key itself is valid. + // + // Critical follows the same rule as every other source rather than being + // forced true: an air-gapped install that side-loaded the image never + // contacts this registry at pull time (ImagePullPolicy is IfNotPresent). if reg, repo, _, ok := parseImageRef(imageRef); ok && reg != "" { - seen[reg] = true - out = append(out, RegistryEntry{Registry: reg, RepoHint: repo, Critical: true}) + add(reg, repo, isNGCRegistry(reg)) } // Source 2: read global.image.registry from the environment values file. @@ -171,17 +254,23 @@ func EnumerateRegistries(imageRef, stackValuesFile string, extras []string) []Re if stackValuesFile != "" { if reg := readGlobalImageRegistry(stackValuesFile); reg != "" { // If it's an NGC registry, mark critical; customer mirrors are non-critical. - add(reg, isNGCRegistry(reg)) + add(reg, "", isNGCRegistry(reg)) } } - // Source 3: cert-manager's well-known exception (quay.io/jetstack). - // cert-manager ignores global.image.registry and always pulls from quay.io. - add(certManagerRegistry, false) + // Source 3: cert-manager, but only when the stack is not mirroring it. + // deploy/stacks/self-managed/global.yaml.gotmpl rewrites every cert-manager + // image to global.image.registry, so on a configured stack quay.io is never + // contacted and probing it is a pointless round trip. It is only reachable + // when no stack values file resolved. + if stackValuesFile == "" || readGlobalImageRegistry(stackValuesFile) == "" { + add(certManagerRegistry, "", false) + } // Source 4: operator-supplied extras (--cluster-validator-registries). - // Preserve non-443 ports in the registry string so probeRegistryCredential - // builds the correct https://host:port/v2/ URL. + // Preserve non-443 ports so probeRegistryCredential builds the correct + // https://host:port/v2/ URL. net.JoinHostPort brackets IPv6 literals, which + // a bare "%s:%d" would corrupt into https://::1:5000/v2/. for _, e := range extras { host, port := parseRegistryHostPort(e) if host == "" { @@ -189,9 +278,11 @@ func EnumerateRegistries(imageRef, stackValuesFile string, extras []string) []Re } reg := host if port != 0 && port != 443 { - reg = fmt.Sprintf("%s:%d", host, port) + reg = net.JoinHostPort(host, strconv.Itoa(port)) + } else if strings.Contains(host, ":") { + reg = "[" + host + "]" // bare IPv6 literal on the default port } - add(reg, false) + add(reg, "", false) } return out diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go index ca6f81104a..411bafb83c 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go @@ -33,8 +33,10 @@ import ( // -- probeRegistryCredential -- func TestProbeRegistryCredential_PublicRegistry(t *testing.T) { - // Registry returns 200 on /v2/ → public, no credentials needed. + // Registry returns 200 on /v2/ with the registry API header → public, + // no credentials needed. srv := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Docker-Distribution-Api-Version", "registry/2.0") w.WriteHeader(http.StatusOK) })) defer srv.Close() diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go index 1f31403cf3..75e4e9d80a 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go @@ -27,19 +27,30 @@ import ( "k8s.io/client-go/kubernetes" ) -// nvcfControlPlaneNamespaces is the canonical set of namespaces created on the -// control-plane cluster by the NVCF self-managed stack. Any of these that -// exist without an active Helm release, or that are stuck Terminating, are -// leftover from a failed or partial teardown. +// nvcfControlPlaneNamespaces lists namespaces that a helmfile release deploys +// into on the control-plane cluster, per deploy/stacks/self-managed/helmfile.d. +// Any of these that exist without an active Helm release, or that are stuck +// Terminating, are leftover from a failed or partial teardown. +// +// Only namespaces that actually host a release belong here: the remediation for +// a hit is "delete this namespace", so a namespace populated by something other +// than Helm (nvcf-backend, created at runtime by NVCA for worker pods) would be +// reported stale on a healthy cluster and deleting it would destroy live work. +// +// The gateway controller namespace is deliberately absent: the release templates +// it from .Values.ingress.gatewayApi.controllerNamespace, so hardcoding +// envoy-gateway-system would probe a namespace the stack may not own. var nvcfControlPlaneNamespaces = []string{ - "cassandra-system", "nats-system", "nvcf", "api-keys", "ess", "sis", - "vault-system", "nvcf-backend", "envoy-gateway-system", "openbao-system", + "api-keys", "cassandra-system", "cert-manager", "ess", + "nats-system", "nvcf", "nvcf-ui", "sis", "vault-system", } -// nvcfComputePlaneNamespaces is the canonical set of namespaces created on the -// compute-plane cluster by the NVCF self-managed stack. +// nvcfComputePlaneNamespaces lists namespaces that a helmfile release deploys +// into on the compute-plane cluster, per +// deploy/stacks/nvcf-compute-plane/helmfile.d. nvca-system is deliberately +// absent: it is operator-created and hosts no release. var nvcfComputePlaneNamespaces = []string{ - "nvca-operator", "nvca-system", + "dynamo-system", "grove-system", "kai-scheduler", "nvca-operator", } // StaleNamespace describes a single NVCF stack namespace that appears to be a @@ -84,6 +95,39 @@ func NewStaleNamespaceProber() StaleNamespaceProber { // // Helm 3 marks each release secret with the label owner=helm; absence of any // such secret means no live Helm release occupies the namespace. +// helmReleaseListPageSize bounds each page of the owner=helm scan. A namespace +// holds at most a handful of release objects, so this is only a ceiling on how +// much is pulled per round trip while paging past non-matching objects. +const helmReleaseListPageSize = 100 + +// helmReleaseExists reports whether any owner=helm object exists, paging until +// it finds one or the server reports no more results. +// +// A single page with Limit set is not a valid existence test: the apiserver +// applies the label selector after paging, so a page can legitimately return +// zero items alongside a Continue token. A namespace like nvcf holds dozens of +// ServiceAccount tokens and TLS secrets that sort before sh.helm.release.v1.*, +// so the first page is routinely empty on a perfectly healthy install. +func helmReleaseExists( + ctx context.Context, namespace string, + list func(metav1.ListOptions) (count int, cont string, err error), +) (bool, error) { + opts := metav1.ListOptions{LabelSelector: "owner=helm", Limit: helmReleaseListPageSize} + for { + count, cont, err := list(opts) + if err != nil { + return false, err + } + if count > 0 { + return true, nil + } + if cont == "" { + return false, nil + } + opts.Continue = cont + } +} + func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, namespaces []string) ([]StaleNamespace, error) { var stale []StaleNamespace for _, name := range namespaces { @@ -100,28 +144,35 @@ func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, name continue } - // Limit to 1: only existence matters, not the full release history. - // Check Secrets first (default Helm storage driver). If none exist, - // also check ConfigMaps to handle HELM_DRIVER=configmap clusters; - // both storage backends label their release objects with owner=helm. - secrets, err := client.CoreV1().Secrets(name).List(ctx, metav1.ListOptions{ - LabelSelector: "owner=helm", - Limit: 1, - }) + // Check Secrets first (the default Helm storage driver), then ConfigMaps + // for HELM_DRIVER=configmap clusters. Both label release objects + // owner=helm. + found, err := helmReleaseExists(ctx, name, + func(opts metav1.ListOptions) (int, string, error) { + l, lerr := client.CoreV1().Secrets(name).List(ctx, opts) + if lerr != nil { + return 0, "", lerr + } + return len(l.Items), l.Continue, nil + }) if err != nil { return stale, fmt.Errorf("list Helm secrets in %s: %w", name, err) } - if len(secrets.Items) > 0 { - continue // healthy: active Helm release found via secret driver + if found { + continue // healthy: active Helm release found via the secret driver } - cms, err := client.CoreV1().ConfigMaps(name).List(ctx, metav1.ListOptions{ - LabelSelector: "owner=helm", - Limit: 1, - }) + found, err = helmReleaseExists(ctx, name, + func(opts metav1.ListOptions) (int, string, error) { + l, lerr := client.CoreV1().ConfigMaps(name).List(ctx, opts) + if lerr != nil { + return 0, "", lerr + } + return len(l.Items), l.Continue, nil + }) if err != nil { return stale, fmt.Errorf("list Helm configmaps in %s: %w", name, err) } - if len(cms.Items) == 0 { + if !found { stale = append(stale, StaleNamespace{Name: name, Reason: "no Helm release"}) } } diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go index e64700366f..5f20baf0d2 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go @@ -27,7 +27,9 @@ import ( corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/kubernetes/fake" + ktesting "k8s.io/client-go/testing" ) // -- probeStaleNamespaces -- @@ -193,7 +195,8 @@ func TestStaleNamespaceCheck_StaleIsError(t *testing.T) { assert.Equal(t, "error", r.Severity, "detected stale namespaces must use error severity so the exit code is non-zero") assert.Contains(t, r.Message, "nvcf") - assert.Contains(t, r.Message, "kubectl patch namespace nvcf") + assert.Contains(t, r.Message, "/api/v1/namespaces/nvcf/finalize", + "the remediation must use the finalize subresource; a plain patch is silently reverted") } func TestStaleNamespaceCheck_CleanPasses(t *testing.T) { @@ -216,6 +219,58 @@ func TestStaleNamespaceCheck_MessageNamesAllStaleNamespaces(t *testing.T) { r := staleNamespaceCheck(prober, "", []string{"nvcf", "api-keys"}).Run(context.Background()) assert.Contains(t, r.Message, "nvcf") assert.Contains(t, r.Message, "api-keys") - assert.Contains(t, r.Message, "kubectl patch namespace nvcf") + assert.Contains(t, r.Message, "/api/v1/namespaces/nvcf/finalize", + "the remediation must use the finalize subresource; a plain patch is silently reverted") assert.Contains(t, r.Message, "kubectl delete namespace api-keys") } + +// A namespace on a real install holds many non-Helm Secrets (ServiceAccount +// tokens, TLS, pull secrets) that sort before sh.helm.release.v1.*. The +// apiserver applies the label selector after paging, so the first page can +// legitimately come back empty with a Continue token. Treating that as "no +// release" reports a live namespace stale and tells the operator to delete it. +func TestProbeStaleNamespaces_PagesPastNonMatchingObjects(t *testing.T) { + client := fake.NewSimpleClientset(&corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{Name: "nvcf"}, + Status: corev1.NamespaceStatus{Phase: corev1.NamespaceActive}, + }) + + // First page: empty with a Continue token. Second page: the release secret. + call := 0 + client.PrependReactor("list", "secrets", func(_ ktesting.Action) (bool, runtime.Object, error) { + call++ + if call == 1 { + return true, &corev1.SecretList{ + ListMeta: metav1.ListMeta{Continue: "next-page-token"}, + }, nil + } + return true, &corev1.SecretList{Items: []corev1.Secret{{ + ObjectMeta: metav1.ObjectMeta{ + Name: "sh.helm.release.v1.nvcf.v1", Namespace: "nvcf", + Labels: map[string]string{"owner": "helm"}, + }, + }}}, nil + }) + + stale, err := probeStaleNamespaces(context.Background(), client, []string{"nvcf"}) + require.NoError(t, err) + assert.Empty(t, stale, + "an empty first page with a Continue token must not be read as 'no Helm release'") + assert.Greater(t, call, 1, "the probe must follow the Continue token") +} + +// The remediation for a hit is "delete this namespace", so the list must only +// contain namespaces a helmfile release actually owns. nvcf-backend is created +// at runtime by NVCA and holds live worker pods. +func TestControlPlaneNamespaceList_ExcludesRuntimeOwnedNamespaces(t *testing.T) { + for _, ns := range []string{"nvcf-backend", "openbao-system"} { + assert.NotContains(t, nvcfControlPlaneNamespaces, ns, + "%s hosts no Helm release; probing it yields a destructive false positive", ns) + } + for _, ns := range []string{"cert-manager", "nvcf-ui"} { + assert.Contains(t, nvcfControlPlaneNamespaces, ns, + "%s is a real stack namespace and must be probed", ns) + } + assert.NotContains(t, nvcfComputePlaneNamespaces, "nvca-system", + "nvca-system is operator-created and hosts no release") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/teardown/drain_test.go b/src/clis/nvcf-cli/internal/selfhosted/teardown/drain_test.go index 3452e2724d..a8cb5c70c1 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/teardown/drain_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/teardown/drain_test.go @@ -34,7 +34,7 @@ import ( type fakeSIS struct { deployments []ActiveDeployment removeErr error - removeCalled []string // IDs passed to RemoveDeployment + removeCalled []string // IDs passed to RemoveDeployment statusResults map[string]string // ID → state string statusCallCnt int32 } @@ -73,7 +73,7 @@ func (s *recordSink) Close() error { return nil } type discardSink struct{} func (d *discardSink) Emit(_ context.Context, _ progress.Event) error { return nil } -func (d *discardSink) Close() error { return nil } +func (d *discardSink) Close() error { return nil } // TestDrain_NoActiveDeploymentsIsNoop: empty list → returns nil, no events. func TestDrain_NoActiveDeploymentsIsNoop(t *testing.T) { diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go index d2f9fbca98..7b12c81332 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go @@ -135,7 +135,7 @@ func fetchValidatorTags(ctx context.Context, registry, repo string) ([]string, e } func fetchWithBearer(ctx context.Context, rawURL, registry, repo string) ([]byte, error) { - client := &http.Client{Timeout: validatorTagFetchTimeout} + client := &http.Client{Timeout: validatorTagFetchTimeout, CheckRedirect: refuseInsecureRedirect} // First attempt without auth so anonymous-pullable registries work. req, err := http.NewRequestWithContext(ctx, http.MethodGet, rawURL, nil) @@ -182,6 +182,22 @@ func fetchWithBearer(ctx context.Context, rawURL, registry, repo string) ([]byte return io.ReadAll(resp.Body) } +// refuseInsecureRedirect rejects any redirect hop that is not https. +// +// Go strips the Authorization header only when a redirect changes host, and +// that comparison ignores the scheme. Without this, an https realm that 302s to +// http on the same host would re-send the operator's credentials in cleartext, +// defeating the https-only realm check a few lines below. +func refuseInsecureRedirect(req *http.Request, via []*http.Request) error { + if req.URL.Scheme != "https" { + return fmt.Errorf("refusing redirect to non-https URL %q", req.URL.Redacted()) + } + if len(via) >= 10 { + return fmt.Errorf("stopped after %d redirects", len(via)) + } + return nil +} + // exchangeBearerToken implements the OCI Distribution Spec Bearer token flow, // parsing realm/service/scope from the WWW-Authenticate header. Falls back to // the NGC /proxy_auth endpoint when the header is absent or unparseable. @@ -215,6 +231,13 @@ func exchangeBearerToken(ctx context.Context, client *http.Client, registry, rep if h, _, err := net.SplitHostPort(registry); err == nil { regHost = strings.ToLower(h) } + // Reject an empty realm host explicitly. "https://:443/token" has a + // non-empty u.Host (":443") so it clears the guard above, but Hostname() is + // "", and an empty trustedRealmDelegations lookup would then compare equal + // and authorize it. Fail closed instead. + if realmHost == "" { + return "", fmt.Errorf("refusing token exchange at realm %q with no host for %s", realm, registry) + } realmOK := realmHost == regHost || strings.HasSuffix(realmHost, "."+regHost) || (isNGCRegistry(registry) && isNGCRegistry(realmHost)) || diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go index ce056a58b7..9e05456840 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go @@ -35,12 +35,12 @@ import ( func TestParseImageRef(t *testing.T) { cases := []struct { - name string - in string - reg string - repo string - tag string - wantOK bool + name string + in string + reg string + repo string + tag string + wantOK bool }{ {"full tag", "stg.nvcr.io/nvidia/nvcf-byoc/cluster-validator:3.0.0-rc.26", "stg.nvcr.io", "nvidia/nvcf-byoc/cluster-validator", "3.0.0-rc.26", true}, {"digest", "nvcr.io/foo/bar@sha256:abc", "nvcr.io", "foo/bar", "sha256:abc", true}, @@ -68,8 +68,8 @@ func TestPickBestValidatorTag_StablePreferred(t *testing.T) { tags := []string{ "3.0.0-rc.11", "3.0.0-rc.26", - "3.0.0", // stable; should win over any rc - "3.1.0-rc.1", // higher major but pre-release: must lose to 3.0.0 + "3.0.0", // stable; should win over any rc + "3.1.0-rc.1", // higher major but pre-release: must lose to 3.0.0 "sha256-abc.sig", "3.0.0-v50ca53a0", // commit-SHA: filtered out by pattern } From ff14b5d1ee6bfd4be9f9039f93ef2ee89b3f6f9b Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 15 Sep 2026 13:05:35 +0530 Subject: [PATCH 15/55] fix(nvcf-cli): scope preflight to the targeted role and stop cross-role interference --- src/clis/nvcf-cli/cmd/root.go | 1 + src/clis/nvcf-cli/cmd/self_hosted_check.go | 157 +++++++++++++----- .../nvcf-cli/cmd/self_hosted_check_test.go | 4 + .../internal/selfhosted/clustervalidator.go | 75 +++++++-- .../internal/selfhosted/validatortag_test.go | 125 +++++++++----- 5 files changed, 268 insertions(+), 94 deletions(-) diff --git a/src/clis/nvcf-cli/cmd/root.go b/src/clis/nvcf-cli/cmd/root.go index a42df48c08..2f07f1b943 100644 --- a/src/clis/nvcf-cli/cmd/root.go +++ b/src/clis/nvcf-cli/cmd/root.go @@ -285,6 +285,7 @@ func initConfig() { // swapping --config files. The env name matches the historical // NVCF_CLI_CLUSTER_VALIDATOR_IMAGE override. viper.BindEnv("cluster_validator_image", "NVCF_CLI_CLUSTER_VALIDATOR_IMAGE") + viper.BindEnv("cluster_validator_registries", "NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES") // If a config file is found, read it in. if err := viper.ReadInConfig(); err == nil && viper.GetBool("debug") { diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index e9fb76a762..7e2421d052 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -23,6 +23,7 @@ import ( "io" "os" "path/filepath" + "strings" "time" "github.com/spf13/cobra" @@ -205,7 +206,7 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { // up global.image.registry from the stack values file and any // --cluster-validator-registries extras independently of the image config. if !localOnly { - extraRegistries := viper.GetStringSlice("cluster_validator_registries") + extraRegistries := configuredValidatorRegistries() stackValuesFile := resolveStackValuesFile() credEntries = selfhosted.EnumerateRegistries( clusterValidatorImage, stackValuesFile, extraRegistries, @@ -293,31 +294,73 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { } } -// resolveStackValuesFile walks up from the current working directory to find -// the active environment values YAML. Returns "" when not found so callers -// skip the optional lookup gracefully. +// resolveStackValuesFile returns the environment values YAML to read +// global.image.registry from, or "" when none is available. +// +// It prefers --control-plane-stack, the same source every sibling command uses, +// and only falls back to walking up from the working directory. Within a stack +// it tries HELMFILE_ENV (default "default") and then base.yaml, which is where +// global.image.registry actually lives. The previous version looked only for +// environments/local.yaml, which is not a tracked file, so on any clean +// checkout os.Stat never succeeded and this whole lookup was dead. func resolveStackValuesFile() string { - cwd, err := os.Getwd() - if err != nil { - return "" - } - // Walk up to 6 directory levels to find the stack environments directory. - dir := cwd - for i := 0; i < 6; i++ { - candidate := filepath.Join(dir, - "deploy", "stacks", "self-managed", "environments", "local.yaml") - if _, err := os.Stat(candidate); err == nil { - return candidate + var roots []string + if selfHostedControlPlaneStack != "" { + roots = append(roots, selfHostedControlPlaneStack) + } + if cwd, err := os.Getwd(); err == nil { + dir := cwd + for i := 0; i < 6; i++ { + roots = append(roots, dir) + parent := filepath.Dir(dir) + if parent == dir { + break + } + dir = parent } - parent := filepath.Dir(dir) - if parent == dir { - break + } + + env := os.Getenv("HELMFILE_ENV") + if env == "" { + env = "default" + } + names := []string{env + ".yaml", "base.yaml"} + + for _, root := range roots { + for _, sub := range [][]string{ + {"deploy", "stacks", "self-managed", "environments"}, + {"environments"}, // a stack dir passed directly + } { + for _, name := range names { + candidate := filepath.Join(append(append([]string{root}, sub...), name)...) + if _, err := os.Stat(candidate); err == nil { + return candidate + } + } } - dir = parent } return "" } +// configuredValidatorRegistries returns the extra registries from the flag, env +// var, or config file, normalized to one entry per registry. +// +// viper.GetStringSlice splits a raw env string on whitespace, so the documented +// comma form "a:443,b:443" arrives as a single element. Left as-is it reaches +// net.SplitHostPort as "a:443,b:443", which errors with "too many colons" and is +// then passed through verbatim as a host, producing https://a:443,b:443/v2/. +func configuredValidatorRegistries() []string { + var out []string + for _, raw := range viper.GetStringSlice("cluster_validator_registries") { + for _, part := range strings.Split(raw, ",") { + if part = strings.TrimSpace(part); part != "" { + out = append(out, part) + } + } + } + return out +} + // computePlaneIsTargeted reports whether the compute-plane validator should run: // --compute-plane, --all, or --pre in ModeSingle. --pre in ModeSplit does not // target it because separate clusters have no implicit compute-plane role. @@ -396,14 +439,18 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin return selfhosted.RunPreflightForRole(ctx, cfg, selfhosted.RoleLocalOnly, selfhosted.RoleConfig{}, sink) } + // SIS reachability is a compute-plane concern, and it is skipped pre-install + // because SIS is not up yet. The previous `!checkPre` form was also true + // whenever --control-plane was passed, so a control-plane run fired an HTTP + // request at SIS that the operator never asked for. icmsURL := "" - if checkAll || checkComputePlane || !checkPre { + if computePlaneIsTargeted(mode) && !checkPre { icmsURL = resolveICMSURL(selfHostedICMSURL) } skipInotify := checkSkipInotifyCheck || os.Getenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY") != "" var inotifyProber selfhosted.NodeInotifyProber - if !skipInotify { + if computePlaneIsTargeted(mode) && !skipInotify { inotifyProber = newInotifyProberForSelfHosted() } @@ -413,8 +460,12 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin // Either way, leave clusterValidator nil so the validator row is // omitted from the check stream; the caller already emitted a // one-line stderr notice explaining which case applies. + // Gate on the role predicate as well as the image, mirroring + // cpClusterValidator below. Without this, --control-plane in ModeSplit + // still creates a ServiceAccount, cluster-wide ClusterRole/CRB, pull secret + // and validator Job in the compute cluster. var clusterValidator selfhosted.ClusterValidator - if clusterValidatorImage != "" { + if computePlaneIsTargeted(mode) && clusterValidatorImage != "" { clusterValidator = newClusterValidatorForSelfHosted() } @@ -422,7 +473,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin // Additional registries to probe in the control-plane validator ConfigMap. // Priority: flag > env > config file. - registries := viper.GetStringSlice("cluster_validator_registries") + registries := configuredValidatorRegistries() // The cluster-validator image is the same for both roles; VALIDATOR_ROLE // in the Job env selects which check set runs inside the binary. @@ -469,28 +520,48 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin _ = eg.Wait() return append(cpResults, gpuResults...) - default: // ModeSingle — no context flags; union both role check sets sequentially. - cpRC := selfhosted.RoleConfig{ - SISURL: icmsURL, - ClusterValidator: cpClusterValidator, - ClusterValidatorImage: clusterValidatorImage, - ClusterValidatorPullSecret: checkClusterValidatorPullSecret, - ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, - ClusterValidatorRegistries: registries, - StaleNamespaceProber: staleNSProber, + default: // ModeSingle — one cluster; run only the roles the flags target. + var results []selfhosted.CheckResult + + // The stale-namespace probe goes to exactly one role. Both roles share + // the cluster here, so handing it to both emits two check_completed + // events with the same ID and loads the kubeconfig twice, which means a + // second exec-credential-plugin prompt. + staleForControlPlane := staleNSProber + staleForComputePlane := staleNSProber + if controlPlaneIsTargeted(mode) { + staleForComputePlane = nil + } else { + staleForControlPlane = nil } - gpuRC := selfhosted.RoleConfig{ - SISURL: icmsURL, - InotifyProber: inotifyProber, - ClusterValidator: clusterValidator, - ClusterValidatorImage: clusterValidatorImage, - ClusterValidatorPullSecret: checkClusterValidatorPullSecret, - ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, - StaleNamespaceProber: staleNSProber, + + if controlPlaneIsTargeted(mode) { + cpRC := selfhosted.RoleConfig{ + SISURL: icmsURL, + ClusterValidator: cpClusterValidator, + ClusterValidatorImage: clusterValidatorImage, + ClusterValidatorPullSecret: checkClusterValidatorPullSecret, + ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, + ClusterValidatorRegistries: registries, + StaleNamespaceProber: staleForControlPlane, + } + results = append(results, + selfhosted.RunPreflightForRole(ctx, cfg, selfhosted.RoleControlPlane, cpRC, sink)...) } - cpResults := selfhosted.RunPreflightForRole(ctx, cfg, selfhosted.RoleControlPlane, cpRC, sink) - gpuResults := selfhosted.RunPreflightForRole(ctx, cfg, selfhosted.RoleComputePlane, gpuRC, sink) - return append(cpResults, gpuResults...) + if computePlaneIsTargeted(mode) { + gpuRC := selfhosted.RoleConfig{ + SISURL: icmsURL, + InotifyProber: inotifyProber, + ClusterValidator: clusterValidator, + ClusterValidatorImage: clusterValidatorImage, + ClusterValidatorPullSecret: checkClusterValidatorPullSecret, + ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, + StaleNamespaceProber: staleForComputePlane, + } + results = append(results, + selfhosted.RunPreflightForRole(ctx, cfg, selfhosted.RoleComputePlane, gpuRC, sink)...) + } + return results } } diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go index 53bc744c3a..38fed5637d 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go @@ -494,6 +494,10 @@ func TestCheck_ValidatorSkipNoteAppearsOnComputePlane(t *testing.T) { checkComputePlane = false checkSkipClusterValidation = false }) + // --skip-cluster-validation does not gate the inotify prober, which lists + // every node and creates a privileged pod on each. Without this the test + // writes to whatever cluster is in the developer's current kubecontext. + t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") var stderr bytes.Buffer rootCmd.SetErr(&stderr) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 66a409d140..f44f4fe361 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -138,14 +138,20 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image if err := ensureClusterValidatorRBAC(vctx, client); err != nil { return ClusterValidatorResult{Err: fmt.Errorf("bootstrapping validator RBAC: %w", err)} } - // Remove the ClusterRole and ClusterRoleBinding after the Job finishes - // (when cleanup is enabled) to minimize the window where the elevated SA - // exists. Uses a fresh context so cleanup runs even when vctx is expired. - // When --no-cleanup is set, the operator expects to inspect the Job; we - // leave the RBAC in place so they can re-exec the pod without re-bootstrap. - if !noCleanup { - defer sweepClusterValidatorRBAC(context.Background(), client) - } + // Remove the ClusterRole and ClusterRoleBinding once the Job has reached a + // terminal state, to minimize the window where the elevated SA exists. + // + // Gated on jobTerminated rather than deferred unconditionally: on the + // timeout and ImagePullBackOff paths the pod is still running, and pulling + // its RBAC out from under it fills the surviving transcript with "forbidden" + // errors that mask the real cause. When --no-cleanup is set the operator + // expects to inspect the Job, so the RBAC stays either way. + jobTerminated := false + defer func() { + if !noCleanup && jobTerminated { + sweepClusterValidatorRBAC(context.Background(), client) + } + }() // For the control-plane role, create a ConfigMap with reachability // endpoints and enforcement config so the validator runs its configurable @@ -162,7 +168,7 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image } } - sweepPriorClusterValidatorJobs(vctx, client) + sweepPriorClusterValidatorJobs(vctx, client, role) jobName := fmt.Sprintf("%s-%d", clusterValidatorName, time.Now().UnixNano()) if _, err := client.BatchV1().Jobs(clusterValidatorNamespace).Create( @@ -172,6 +178,9 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image } final, waitErr := waitForClusterValidatorJob(vctx, client, jobName) + // Only a clean wait means the pod is done; a timeout or a pull failure + // leaves it running, so the deferred RBAC sweep must not fire. + jobTerminated = waitErr == nil // Fetch logs under a fresh ctx from the parent: vctx is expired on the // timeout path, and dropping the partial transcript hurts most there. @@ -287,6 +296,27 @@ func clusterValidatorLabels() map[string]string { } } +// clusterValidatorRoleLabels adds the role so the prior-run sweep only matches +// Jobs from the same role. Without it, a ModeSingle run deletes the other +// role's Job mid-command, including under --no-cleanup, which makes the +// printed `kubectl logs job/...` hint 404. +func clusterValidatorRoleLabels(role string) map[string]string { + l := clusterValidatorLabels() + l[clusterValidatorRoleLabel] = role + return l +} + +// validatorConfigNameForRole returns the network-check ConfigMap name the Job +// should read. Only the control-plane role has one; the compute-plane role gets +// a sentinel that resolves to nothing so it cannot inherit the control-plane's +// reachability and enforcement config. +func validatorConfigNameForRole(role string) string { + if role == clusterValidatorControlPlaneRole { + return clusterValidatorConfigName + } + return clusterValidatorNoConfigName +} + // sweepClusterValidatorRBAC removes the SA, ClusterRole, and ClusterRoleBinding // created by ensureClusterValidatorRBAC. Called after Job completion (when // --no-cleanup is not set) to close the window where the elevated ClusterRole @@ -299,8 +329,11 @@ func sweepClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface) } // Errors are swallowed: a stale Job is preferable to blocking the new run. -func sweepPriorClusterValidatorJobs(ctx context.Context, client kubernetes.Interface) { - selector := fmt.Sprintf("app.kubernetes.io/name=%s,app.kubernetes.io/managed-by=nvcf-cli", clusterValidatorAppLabel) +func sweepPriorClusterValidatorJobs(ctx context.Context, client kubernetes.Interface, role string) { + // Scope to this role: in ModeSingle both roles run against the same + // cluster, so an unscoped selector deletes the other role's Job mid-command. + selector := fmt.Sprintf("app.kubernetes.io/name=%s,app.kubernetes.io/managed-by=nvcf-cli,%s=%s", + clusterValidatorAppLabel, clusterValidatorRoleLabel, role) propagation := metav1.DeletePropagationBackground _ = client.BatchV1().Jobs(clusterValidatorNamespace).DeleteCollection( ctx, @@ -336,6 +369,14 @@ const clusterValidatorControlPlaneRole = "control-plane" // defaultConfigMapName in nvca/cmd/cluster-validator/main.go. const clusterValidatorConfigName = "cluster-validator-network-checks" +// clusterValidatorNoConfigName is a name no ConfigMap uses. VALIDATOR_CONFIG_NAME +// must be non-empty to suppress the validator's own default-name fallback, so +// "no config" has to be spelled as a name that resolves to nothing. +const clusterValidatorNoConfigName = "cluster-validator-no-config" + +// clusterValidatorRoleLabel scopes Job selectors to a single validator role. +const clusterValidatorRoleLabel = "nvcf.nvidia.com/validator-role" + // controlPlaneValidatorConfigTemplate is the baseline network-check ConfigMap for // control-plane preflight: nvcr.io reachability (critical) and NetworkPolicy // enforcement (non-critical). Extra registries are appended as non-critical probes. @@ -452,7 +493,13 @@ func buildClusterValidatorJob(name, image, pullSecret, role string, noCleanup bo ImagePullPolicy: corev1.PullIfNotPresent, Env: []corev1.EnvVar{ {Name: "VALIDATOR_CONFIG_NAMESPACE", Value: clusterValidatorNamespace}, - {Name: "VALIDATOR_CONFIG_NAME", Value: ""}, + // Name the ConfigMap explicitly for the control-plane role and + // leave it unresolvable for the compute-plane role. An empty + // value is NOT "no config": the validator falls back to its own + // default name, so both roles would resolve the same ConfigMap + // and the compute-plane preflight would silently run the + // control-plane's active NetworkPolicy enforcement. + {Name: "VALIDATOR_CONFIG_NAME", Value: validatorConfigNameForRole(role)}, {Name: "VALIDATOR_PREFLIGHT", Value: "true"}, {Name: "VALIDATOR_ROLE", Value: role}, }, @@ -465,12 +512,12 @@ func buildClusterValidatorJob(name, image, pullSecret, role string, noCleanup bo ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: clusterValidatorNamespace, - Labels: clusterValidatorLabels(), + Labels: clusterValidatorRoleLabels(role), }, Spec: batchv1.JobSpec{ BackoffLimit: &backoff, Template: corev1.PodTemplateSpec{ - ObjectMeta: metav1.ObjectMeta{Labels: clusterValidatorLabels()}, + ObjectMeta: metav1.ObjectMeta{Labels: clusterValidatorRoleLabels(role)}, Spec: podSpec, }, }, diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go index 9e05456840..88b5970441 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go @@ -20,12 +20,13 @@ package selfhosted import ( "context" "encoding/json" + "fmt" + "io" "net/http" - "net/http/httptest" - "net/url" "os" "path/filepath" "strings" + "sync" "testing" "time" @@ -341,33 +342,69 @@ func TestIsNGCRegistry(t *testing.T) { // -- exchangeBearerToken realm host authorization -- +// recordingTransport records every request it sees and reports whether any +// carried an Authorization header, so a test can assert that no credential +// escaped rather than only that an error was returned. +type recordingTransport struct { + mu sync.Mutex + requests []*http.Request + withAuth []string + inner http.RoundTripper +} + +func (rt *recordingTransport) RoundTrip(r *http.Request) (*http.Response, error) { + rt.mu.Lock() + rt.requests = append(rt.requests, r) + if r.Header.Get("Authorization") != "" { + rt.withAuth = append(rt.withAuth, r.URL.String()) + } + rt.mu.Unlock() + if rt.inner == nil { + return nil, fmt.Errorf("no inner transport") + } + return rt.inner.RoundTrip(r) +} + func TestExchangeBearerToken_RejectsAttackerRealm(t *testing.T) { - // A malicious registry returns a realm on an attacker-controlled host. - // The function must reject this without forwarding credentials. - spy := &spyTransport{t: t} - - // Set up a fake registry server that returns 401 with an attacker realm. - srv := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Www-Authenticate", `Bearer realm="https://attacker.example.com/token",service="harbor.company.internal"`) - w.WriteHeader(http.StatusUnauthorized) - })) - defer srv.Close() - - client := srv.Client() - // Replace the transport with the spy AFTER the TLS is set up; the spy - // wraps the original to preserve TLS but fails on any attacker call. - origTransport := client.Transport - client.Transport = roundTripperFunc(func(r *http.Request) (*http.Response, error) { - if r.Host == "attacker.example.com" || strings.Contains(r.URL.Host, "attacker") { - t.Fatalf("credentials must not be forwarded to attacker host: %s", r.URL) - } - return origTransport.RoundTrip(r) - }) - _ = spy + // A malicious registry returns a realm on an attacker-controlled host. The + // realm check must reject it, and crucially must do so before any request + // carrying the operator's credentials leaves the process. + // + // Credentials have to be configured for the assertion to mean anything: if + // none were present, no request could carry an Authorization header whether + // the control works or not. + t.Setenv("NGC_API_KEY", "test-key") + + rec := &recordingTransport{inner: http.DefaultTransport} + client := &http.Client{Transport: rec} + + const wwwAuth = `Bearer realm="https://attacker.example.com/token",service="harbor.company.internal"` + _, err := exchangeBearerToken(context.Background(), client, + "harbor.company.internal", "myrepo/image", wwwAuth) - _, err := exchangeBearerToken(context.Background(), client, "harbor.company.internal", "myrepo/image", `Bearer realm="https://attacker.example.com/token",service="harbor.company.internal"`) require.Error(t, err) assert.Contains(t, err.Error(), "not authorized for registry") + assert.Empty(t, rec.withAuth, + "no request carrying an Authorization header may be issued once the realm is rejected") + for _, r := range rec.requests { + assert.NotContains(t, r.URL.Host, "attacker", + "no request at all may reach the attacker host") + } +} + +// An empty realm host must fail closed. "https://:443/token" has a non-empty +// u.Host (":443") so it clears the relative-realm guard, but Hostname() is "", +// and an empty trustedRealmDelegations lookup would compare equal to it. +func TestExchangeBearerToken_RejectsEmptyRealmHost(t *testing.T) { + t.Setenv("NGC_API_KEY", "test-key") + rec := &recordingTransport{inner: http.DefaultTransport} + client := &http.Client{Transport: rec} + + _, err := exchangeBearerToken(context.Background(), client, + "harbor.company.internal", "myrepo/image", `Bearer realm="https://:443/token"`) + + require.Error(t, err) + assert.Empty(t, rec.withAuth, "an empty realm host must not receive credentials") } // -- exchangeNGCBearerToken -- @@ -387,18 +424,32 @@ func (f roundTripperFunc) RoundTrip(r *http.Request) (*http.Response, error) { r func TestExchangeBearerToken_DockerHubDelegatedRealm(t *testing.T) { // Docker Hub uses registry-1.docker.io as the pull host and auth.docker.io - // for token exchange. The realm host check must allow this documented - // delegation rather than rejecting it as an unauthorized host. - wwwAuth := `Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:library/ubuntu:pull"` - realm, _, _ := parseWWWAuthenticate(wwwAuth) - u, err := url.Parse(realm) - require.NoError(t, err) - - realmHost := strings.ToLower(u.Hostname()) - regHost := "registry-1.docker.io" - delegated := trustedRealmDelegations[regHost] - assert.Equal(t, "auth.docker.io", delegated, "Docker Hub auth host must be in trusted delegation map") - assert.Equal(t, delegated, realmHost, "auth.docker.io realm must be authorized for registry-1.docker.io") + // for token exchange. The realm check must authorize that delegation, so + // drive exchangeBearerToken and assert the request actually reached the + // auth host rather than comparing the delegation map against itself. + t.Setenv("NGC_API_KEY", "test-key") + + rec := &recordingTransport{inner: roundTripperFunc(func(r *http.Request) (*http.Response, error) { + if r.URL.Host != "auth.docker.io" { + return nil, fmt.Errorf("unexpected host %s", r.URL.Host) + } + return &http.Response{ + StatusCode: http.StatusOK, + Body: io.NopCloser(strings.NewReader(`{"token":"dockerhub-token"}`)), + Header: make(http.Header), + }, nil + })} + client := &http.Client{Transport: rec} + + const wwwAuth = `Bearer realm="https://auth.docker.io/token",service="registry.docker.io",` + + `scope="repository:library/ubuntu:pull"` + tok, err := exchangeBearerToken(context.Background(), client, + "registry-1.docker.io", "library/ubuntu", wwwAuth) + + require.NoError(t, err, "the documented Docker Hub delegation must be authorized") + assert.Equal(t, "dockerhub-token", tok) + require.NotEmpty(t, rec.requests, "the token exchange must actually be issued") + assert.Equal(t, "auth.docker.io", rec.requests[0].URL.Host) } func TestExchangeNGCBearerToken_RejectsNonNGCRegistry(t *testing.T) { From 7aba33bb9556a05379a6963851a16a6bad47b62f Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 15 Sep 2026 13:15:27 +0530 Subject: [PATCH 16/55] fix(nvcf-cli): derive stale-namespace probe targets from the stack helmfile --- src/clis/nvcf-cli/cmd/self_hosted_check.go | 22 +++++ .../nvcf-cli/internal/selfhosted/preflight.go | 11 ++- .../internal/selfhosted/stack_namespaces.go | 85 ++++++++++++++++ .../selfhosted/stack_namespaces_test.go | 97 +++++++++++++++++++ 4 files changed, 213 insertions(+), 2 deletions(-) create mode 100644 src/clis/nvcf-cli/internal/selfhosted/stack_namespaces.go create mode 100644 src/clis/nvcf-cli/internal/selfhosted/stack_namespaces_test.go diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index 7e2421d052..b7eda1a315 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -342,6 +342,24 @@ func resolveStackValuesFile() string { return "" } +// localStackDir returns src when it points at a readable local directory. +// Remote sources (oci://, git@, https://...git) are not fetched here: the +// stale-namespace check falls back to its static list rather than making +// preflight depend on a network round trip. +func localStackDir(src string) string { + if src == "" { + return "" + } + src = strings.TrimPrefix(src, "file://") + if strings.Contains(src, "://") || strings.HasPrefix(src, "git@") { + return "" + } + if fi, err := os.Stat(src); err == nil && fi.IsDir() { + return src + } + return "" +} + // configuredValidatorRegistries returns the extra registries from the flag, env // var, or config file, normalized to one entry per registry. // @@ -499,6 +517,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, ClusterValidatorRegistries: registries, StaleNamespaceProber: staleNSProber, + StackDir: localStackDir(selfHostedControlPlaneStack), } cpResults = selfhosted.RunPreflightForRole(egCtx, cfg, selfhosted.RoleControlPlane, rc, sink) return nil @@ -513,6 +532,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorPullSecret: checkClusterValidatorPullSecret, ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, StaleNamespaceProber: staleNSProber, + StackDir: localStackDir(selfHostedComputePlaneStack), } gpuResults = selfhosted.RunPreflightForRole(egCtx, cfg, selfhosted.RoleComputePlane, rc, sink) return nil @@ -544,6 +564,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, ClusterValidatorRegistries: registries, StaleNamespaceProber: staleForControlPlane, + StackDir: localStackDir(selfHostedControlPlaneStack), } results = append(results, selfhosted.RunPreflightForRole(ctx, cfg, selfhosted.RoleControlPlane, cpRC, sink)...) @@ -557,6 +578,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorPullSecret: checkClusterValidatorPullSecret, ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, StaleNamespaceProber: staleForComputePlane, + StackDir: localStackDir(selfHostedComputePlaneStack), } results = append(results, selfhosted.RunPreflightForRole(ctx, cfg, selfhosted.RoleComputePlane, gpuRC, sink)...) diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index fd6138a628..39e1d50d73 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -313,6 +313,11 @@ type RoleConfig struct { // the check; production wires NewStaleNamespaceProber; tests pass fakes. StaleNamespaceProber StaleNamespaceProber + // StackDir is the resolved stack checkout. When set, the namespaces to + // probe are read from its helmfile.d rather than the static fallback list, + // so the check follows the stack instead of drifting from it. + StackDir string + // ClusterValidatorRegistries is an optional list of "host:port" registry // endpoints added to the control-plane validator ConfigMap alongside the // built-in nvcr.io probe. Ignored for the compute-plane validator. @@ -405,7 +410,8 @@ func controlPlaneCheckCategory(rc RoleConfig) categorySpec { // before any other cluster work. if rc.StaleNamespaceProber != nil { cat.checks = append(cat.checks, - staleNamespaceCheck(rc.StaleNamespaceProber, rc.KubeContext, nvcfControlPlaneNamespaces)) + staleNamespaceCheck(rc.StaleNamespaceProber, rc.KubeContext, + resolveStackNamespaces(rc.StackDir, nvcfControlPlaneNamespaces))) } // Containerized cluster-validator probe for control-plane checks // (Gateway API CRDs, Envoy Gateway, StorageClass, external LB, @@ -440,7 +446,8 @@ func computePlaneCheckCategory(rc RoleConfig) categorySpec { // partial teardown surface before any other cluster work. if rc.StaleNamespaceProber != nil { cat.checks = append([]binaryCheckSpec{ - staleNamespaceCheck(rc.StaleNamespaceProber, rc.KubeContext, nvcfComputePlaneNamespaces), + staleNamespaceCheck(rc.StaleNamespaceProber, rc.KubeContext, + resolveStackNamespaces(rc.StackDir, nvcfComputePlaneNamespaces)), }, cat.checks...) } if rc.SISURL != "" { diff --git a/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces.go b/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces.go new file mode 100644 index 0000000000..d6f6f68859 --- /dev/null +++ b/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces.go @@ -0,0 +1,85 @@ +/* +SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. +SPDX-License-Identifier: Apache-2.0 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package selfhosted + +import ( + "os" + "path/filepath" + "regexp" + "sort" + "strings" +) + +// helmfileNamespaceRE matches a literal `namespace: ` declaration in a +// helmfile release entry. Values containing a Go template action are excluded +// by the character class: those are operator-configurable (the gateway +// controller namespace is one), so their rendered value is not knowable here. +var helmfileNamespaceRE = regexp.MustCompile(`(?m)^\s*namespace:\s*([A-Za-z0-9][A-Za-z0-9.-]*)\s*$`) + +// stackReleaseNamespaces returns the namespaces that helmfile releases deploy +// into for the stack rooted at stackDir, or nil when the stack is not readable. +// +// This is the authoritative answer to "which namespaces does the stack own", +// which matters because the stale-namespace check's remediation is to delete +// them: a hardcoded list that drifts either misses a real leftover or, worse, +// names a namespace the stack does not own. +// +// Callers fall back to the static list when this returns nil, which is the +// normal case for a released binary with no stack checkout alongside it. +func stackReleaseNamespaces(stackDir string) []string { + if stackDir == "" { + return nil + } + entries, err := filepath.Glob(filepath.Join(stackDir, "helmfile.d", "*.yaml.gotmpl")) + if err != nil || len(entries) == 0 { + return nil + } + + seen := make(map[string]bool) + for _, path := range entries { + body, err := os.ReadFile(path) + if err != nil { + continue + } + for _, m := range helmfileNamespaceRE.FindAllStringSubmatch(string(body), -1) { + if ns := strings.TrimSpace(m[1]); ns != "" { + seen[ns] = true + } + } + } + if len(seen) == 0 { + return nil + } + + out := make([]string, 0, len(seen)) + for ns := range seen { + out = append(out, ns) + } + sort.Strings(out) + return out +} + +// resolveStackNamespaces returns the namespaces to probe for the given plane. +// It prefers what the stack actually declares and falls back to the static +// list when no stack is available. +func resolveStackNamespaces(stackDir string, fallback []string) []string { + if derived := stackReleaseNamespaces(stackDir); len(derived) > 0 { + return derived + } + return fallback +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces_test.go b/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces_test.go new file mode 100644 index 0000000000..0bd4ba19d8 --- /dev/null +++ b/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces_test.go @@ -0,0 +1,97 @@ +/* +SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. +SPDX-License-Identifier: Apache-2.0 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package selfhosted + +import ( + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +// writeStack lays out a minimal helmfile.d matching the real stack's shape. +func writeStack(t *testing.T, files map[string]string) string { + t.Helper() + dir := t.TempDir() + hd := filepath.Join(dir, "helmfile.d") + require.NoError(t, os.MkdirAll(hd, 0o755)) + for name, body := range files { + require.NoError(t, os.WriteFile(filepath.Join(hd, name), []byte(body), 0o600)) + } + return dir +} + +func TestStackReleaseNamespaces_ReadsLiteralNamespaces(t *testing.T) { + dir := writeStack(t, map[string]string{ + "01-dependencies.yaml.gotmpl": ` +releases: + - name: nats + namespace: nats-system + - name: cert-manager + namespace: cert-manager +`, + "02-core.yaml.gotmpl": ` +releases: + - name: api + namespace: nvcf + - name: ui + namespace: nvcf-ui +`, + }) + + got := stackReleaseNamespaces(dir) + assert.Equal(t, []string{"cert-manager", "nats-system", "nvcf", "nvcf-ui"}, got, + "namespaces must come from the stack, de-duplicated and sorted") +} + +// The gateway controller namespace is templated from a values key, so its +// rendered value is not knowable from the source. Including the raw template +// text would produce a garbage namespace to probe and, on a hit, to delete. +func TestStackReleaseNamespaces_SkipsTemplatedNamespaces(t *testing.T) { + dir := writeStack(t, map[string]string{ + "02-core.yaml.gotmpl": ` +releases: + - name: api + namespace: nvcf + - name: ingress + namespace: {{ .Values.ingress.gatewayApi.controllerNamespace }} +`, + }) + + got := stackReleaseNamespaces(dir) + assert.Equal(t, []string{"nvcf"}, got, "a templated namespace must not be probed") +} + +func TestResolveStackNamespaces_FallsBackWhenNoStack(t *testing.T) { + fallback := []string{"nvcf", "sis"} + + assert.Equal(t, fallback, resolveStackNamespaces("", fallback), + "no stack path must use the static list") + assert.Equal(t, fallback, resolveStackNamespaces(t.TempDir(), fallback), + "a directory with no helmfile.d must use the static list") +} + +func TestResolveStackNamespaces_PrefersStack(t *testing.T) { + dir := writeStack(t, map[string]string{ + "01.yaml.gotmpl": "releases:\n - name: a\n namespace: from-stack\n", + }) + assert.Equal(t, []string{"from-stack"}, resolveStackNamespaces(dir, []string{"static"}), + "a readable stack must win over the static list") +} From ce9f770b856935f40b7c748f93b27df4ea4a467c Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 15 Sep 2026 13:39:58 +0530 Subject: [PATCH 17/55] fix(nvcf-cli): make credential and RBAC outcomes consistent across probe paths --- .../internal/selfhosted/clustervalidator.go | 25 ++++----- .../internal/selfhosted/registry_cred.go | 34 +++++++----- .../internal/selfhosted/registry_cred_test.go | 53 ++++++++++++++++++- .../internal/selfhosted/stack_namespaces.go | 18 +++++-- .../selfhosted/stack_namespaces_test.go | 22 ++++++++ .../internal/selfhosted/stale_namespace.go | 24 ++++++--- 6 files changed, 137 insertions(+), 39 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index f44f4fe361..b076239470 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -138,17 +138,16 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image if err := ensureClusterValidatorRBAC(vctx, client); err != nil { return ClusterValidatorResult{Err: fmt.Errorf("bootstrapping validator RBAC: %w", err)} } - // Remove the ClusterRole and ClusterRoleBinding once the Job has reached a - // terminal state, to minimize the window where the elevated SA exists. - // - // Gated on jobTerminated rather than deferred unconditionally: on the - // timeout and ImagePullBackOff paths the pod is still running, and pulling - // its RBAC out from under it fills the surviving transcript with "forbidden" - // errors that mask the real cause. When --no-cleanup is set the operator + // Remove the ClusterRole and ClusterRoleBinding to minimize the window in + // which the elevated SA exists. When --no-cleanup is set the operator // expects to inspect the Job, so the RBAC stays either way. - jobTerminated := false + // + // podMayBeRunning is true only between a successful Job create and a clean + // wait. Everywhere else nothing is using the RBAC, so reclaim it rather + // than leaking a cluster-wide ClusterRole. + podMayBeRunning := false defer func() { - if !noCleanup && jobTerminated { + if !noCleanup && !podMayBeRunning { sweepClusterValidatorRBAC(context.Background(), client) } }() @@ -176,11 +175,13 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image ); err != nil { return ClusterValidatorResult{Err: fmt.Errorf("creating validator Job: %w", err)} } + podMayBeRunning = true final, waitErr := waitForClusterValidatorJob(vctx, client, jobName) - // Only a clean wait means the pod is done; a timeout or a pull failure - // leaves it running, so the deferred RBAC sweep must not fire. - jobTerminated = waitErr == nil + // A clean wait means the pod reached a terminal state, so the RBAC can go. + // A timeout or pull failure leaves it running: pulling the RBAC then fills + // the surviving transcript with "forbidden" and masks the real cause. + podMayBeRunning = waitErr != nil // Fetch logs under a fresh ctx from the parent: vctx is expired on the // timeout path, and dropping the partial transcript hurts most there. diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go index 9312b18807..140fb9fdf9 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go @@ -33,8 +33,9 @@ import ( const ( registryProbeTimeout = 10 * time.Second - // certManagerRegistry is the well-known exception from the helmfile: - // cert-manager uses quay.io/jetstack images, not global.image.registry. + // certManagerRegistry is cert-manager's upstream registry. It is only + // contacted when the stack is not rewriting cert-manager images to + // global.image.registry, which global.yaml.gotmpl does for all five of them. certManagerRegistry = "quay.io" ) @@ -52,9 +53,15 @@ func NewRegistryCredentialChecker() RegistryCredentialChecker { } // probeRegistryCredential authenticates to registry using the OCI Bearer token -// flow. repoHint is the OAuth scope repository path. ECR registries return a -// clear diagnostic instead of attempting the Bearer flow. When critical is true, -// anonymous token success is rejected: configured credentials must be present. +// flow. repoHint is the OAuth scope repository path. +// +// When critical is true, anonymous success is not sufficient: the install pulls +// private repositories, so a local credential must also be present. +// +// Returns errRegistryProbeSkipped for registries this flow cannot speak to +// (ECR's SigV4, a Basic challenge, a 200 that does not look like a registry) +// and errRegistryCredentialsUnverified when no local credential is readable. +// Both are advisory: the caller must not fail the run on either. func probeRegistryCredential(ctx context.Context, registry, repoHint string, critical bool) error { // ECR uses AWS SigV4, not the OCI Bearer flow, so this probe cannot speak // to it. Skip rather than fail: returning an error here makes an @@ -138,10 +145,11 @@ func probeRegistryCredential(ctx context.Context, registry, repoHint string, cri // not masquerade as credentials for quay.io, GHCR, or Harbor — those // registries reject NGC tokens, which would wrongly produce "credentials // rejected" when the real diagnosis is "no credentials configured." - _, _, hasCreds := credentialsForRegistry(registry) - if !hasCreds { - return fmt.Errorf("no credentials configured for %s "+ - "(add to ~/.docker/config.json or set NGC_API_KEY for NGC registries)", registry) + if _, _, hasCreds := credentialsForRegistry(registry); !hasCreds { + // Same situation as the critical path below, so the same verdict: + // no readable local credential is not proof that none exists, since + // a credential helper is invisible here. + return errRegistryCredentialsUnverified{registry: registry} } return fmt.Errorf("credentials rejected by %s: %w", registry, err) } @@ -251,10 +259,12 @@ func EnumerateRegistries(imageRef, stackValuesFile string, extras []string) []Re // Source 2: read global.image.registry from the environment values file. // This catches cases where the operator points at a custom NGC org or a // staging environment that differs from the validator image's registry. + stackRegistry := "" if stackValuesFile != "" { - if reg := readGlobalImageRegistry(stackValuesFile); reg != "" { + stackRegistry = readGlobalImageRegistry(stackValuesFile) + if stackRegistry != "" { // If it's an NGC registry, mark critical; customer mirrors are non-critical. - add(reg, "", isNGCRegistry(reg)) + add(stackRegistry, "", isNGCRegistry(stackRegistry)) } } @@ -263,7 +273,7 @@ func EnumerateRegistries(imageRef, stackValuesFile string, extras []string) []Re // image to global.image.registry, so on a configured stack quay.io is never // contacted and probing it is a pointless round trip. It is only reachable // when no stack values file resolved. - if stackValuesFile == "" || readGlobalImageRegistry(stackValuesFile) == "" { + if stackRegistry == "" { add(certManagerRegistry, "", false) } diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go index 411bafb83c..bdafc6d6a3 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go @@ -151,8 +151,9 @@ func TestEnumerateRegistries_RepoHintFromImageRef(t *testing.T) { t.Fatal("nvcr.io not found in entries") } -func TestEnumerateRegistries_AlwaysIncludesCertManager(t *testing.T) { - // cert-manager always uses quay.io — it must appear even when not in extras. +func TestEnumerateRegistries_IncludesCertManagerWhenStackIsNotMirroring(t *testing.T) { + // With no stack values file there is no global.image.registry to mirror + // cert-manager to, so its upstream registry is genuinely contacted. entries := EnumerateRegistries("nvcr.io/some/image:1.0", "", nil) found := false for _, e := range entries { @@ -286,3 +287,51 @@ func errorf(msg string) error { return fmt.Errorf("%s", msg) } func writeFile(path string, data []byte) error { return os.WriteFile(path, data, 0o644) } + +// The stack rewrites every cert-manager image to global.image.registry, so on +// a configured stack quay.io is never contacted at pull time and probing it is +// a pointless 10-second round trip on every invocation. +func TestEnumerateRegistries_SkipsCertManagerWhenStackMirrors(t *testing.T) { + dir := t.TempDir() + valuesPath := dir + "/base.yaml" + require.NoError(t, writeFile(valuesPath, []byte(` +global: + image: + registry: mirror.company.internal +`))) + + entries := EnumerateRegistries("nvcr.io/some/image:1.0", valuesPath, nil) + for _, e := range entries { + assert.NotEqual(t, certManagerRegistry, e.Registry, + "a stack mirroring images must not trigger a quay.io probe") + } +} + +// A bare IPv6 literal must stay bracketed or the probe URL is malformed. +func TestEnumerateRegistries_BracketsIPv6Extras(t *testing.T) { + entries := EnumerateRegistries("nvcr.io/some/image:1.0", "", []string{"[::1]:5000"}) + + found := false + for _, e := range entries { + if strings.Contains(e.Registry, "::1") { + found = true + assert.Equal(t, "[::1]:5000", e.Registry, + "an IPv6 literal must keep its brackets so the probe URL parses") + } + } + assert.True(t, found, "the IPv6 extra must be enumerated") +} + +// The validator image's registry follows the same Critical policy as every +// other source. Forcing it true makes an air-gapped install fail preflight for +// a registry that is never contacted (ImagePullPolicy is IfNotPresent). +func TestEnumerateRegistries_NonNGCImageRegistryIsNotCritical(t *testing.T) { + entries := EnumerateRegistries("mirror.company.internal/nvcf/cluster-validator:1.0", "", nil) + for _, e := range entries { + if e.Registry == "mirror.company.internal" { + assert.False(t, e.Critical, "a non-NGC mirror must not be forced critical") + return + } + } + t.Fatal("mirror.company.internal not enumerated") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces.go b/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces.go index d6f6f68859..054a7aa7da 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces.go @@ -25,11 +25,19 @@ import ( "strings" ) -// helmfileNamespaceRE matches a literal `namespace: ` declaration in a -// helmfile release entry. Values containing a Go template action are excluded -// by the character class: those are operator-configurable (the gateway -// controller namespace is one), so their rendered value is not knowable here. -var helmfileNamespaceRE = regexp.MustCompile(`(?m)^\s*namespace:\s*([A-Za-z0-9][A-Za-z0-9.-]*)\s*$`) +// helmfileNamespaceRE matches a literal `namespace: ` declaration on a +// helmfile release entry. +// +// Two deliberate restrictions, because a false positive here becomes a +// "delete this namespace" remediation: +// +// - Indentation is capped at 4 spaces, the release-entry level. Keys nested +// inside a release's `values:` block sit at 6 or more and must not be read +// as release namespaces. +// - The value must be a bare DNS label. A value containing a Go template +// action is operator-configurable (the gateway controller namespace is +// one), so its rendered value is not knowable from the source. +var helmfileNamespaceRE = regexp.MustCompile(`(?m)^ {0,4}namespace:\s*([a-z0-9][a-z0-9.-]*)\s*$`) // stackReleaseNamespaces returns the namespaces that helmfile releases deploy // into for the stack rooted at stackDir, or nil when the stack is not readable. diff --git a/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces_test.go b/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces_test.go index 0bd4ba19d8..febf3ff2c3 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces_test.go @@ -95,3 +95,25 @@ func TestResolveStackNamespaces_PrefersStack(t *testing.T) { assert.Equal(t, []string{"from-stack"}, resolveStackNamespaces(dir, []string{"static"}), "a readable stack must win over the static list") } + +// A `namespace:` key nested inside a release's values block is chart +// configuration, not a namespace the stack owns. Reading it as one would add a +// probe target whose remediation is deletion. +func TestStackReleaseNamespaces_SkipsNestedValuesKeys(t *testing.T) { + dir := writeStack(t, map[string]string{ + "02-core.yaml.gotmpl": ` +releases: + - name: api + namespace: nvcf + values: + - serviceMonitor: + namespace: monitoring + - someChart: + namespace: kube-system +`, + }) + + got := stackReleaseNamespaces(dir) + assert.Equal(t, []string{"nvcf"}, got, + "only release-level namespaces may be probed; nested values keys must be ignored") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go index 75e4e9d80a..7dde653238 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go @@ -95,10 +95,18 @@ func NewStaleNamespaceProber() StaleNamespaceProber { // // Helm 3 marks each release secret with the label owner=helm; absence of any // such secret means no live Helm release occupies the namespace. -// helmReleaseListPageSize bounds each page of the owner=helm scan. A namespace -// holds at most a handful of release objects, so this is only a ceiling on how -// much is pulled per round trip while paging past non-matching objects. -const helmReleaseListPageSize = 100 +const ( + // helmReleaseListPageSize bounds each page of the owner=helm scan. A + // namespace holds at most a handful of release objects, so this is only a + // ceiling on how much is pulled per round trip while paging past + // non-matching objects. + helmReleaseListPageSize = 100 + + // helmReleaseListMaxPages stops the scan even if the server keeps handing + // back a Continue token. At the page size above this covers 100k objects in + // one namespace, far past anything real, and guarantees termination. + helmReleaseListMaxPages = 1000 +) // helmReleaseExists reports whether any owner=helm object exists, paging until // it finds one or the server reports no more results. @@ -109,11 +117,10 @@ const helmReleaseListPageSize = 100 // ServiceAccount tokens and TLS secrets that sort before sh.helm.release.v1.*, // so the first page is routinely empty on a perfectly healthy install. func helmReleaseExists( - ctx context.Context, namespace string, list func(metav1.ListOptions) (count int, cont string, err error), ) (bool, error) { opts := metav1.ListOptions{LabelSelector: "owner=helm", Limit: helmReleaseListPageSize} - for { + for page := 0; page < helmReleaseListMaxPages; page++ { count, cont, err := list(opts) if err != nil { return false, err @@ -126,6 +133,7 @@ func helmReleaseExists( } opts.Continue = cont } + return false, fmt.Errorf("gave up after %d pages scanning for Helm releases", helmReleaseListMaxPages) } func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, namespaces []string) ([]StaleNamespace, error) { @@ -147,7 +155,7 @@ func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, name // Check Secrets first (the default Helm storage driver), then ConfigMaps // for HELM_DRIVER=configmap clusters. Both label release objects // owner=helm. - found, err := helmReleaseExists(ctx, name, + found, err := helmReleaseExists( func(opts metav1.ListOptions) (int, string, error) { l, lerr := client.CoreV1().Secrets(name).List(ctx, opts) if lerr != nil { @@ -161,7 +169,7 @@ func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, name if found { continue // healthy: active Helm release found via the secret driver } - found, err = helmReleaseExists(ctx, name, + found, err = helmReleaseExists( func(opts metav1.ListOptions) (int, string, error) { l, lerr := client.CoreV1().ConfigMaps(name).List(ctx, opts) if lerr != nil { From 9d6fd315e7436b9066a6b4821d101ff1357c9bc3 Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 15 Sep 2026 14:07:56 +0530 Subject: [PATCH 18/55] fix(nvcf-cli): scope validator RBAC per role and quote operator-supplied registry hosts --- src/clis/nvcf-cli/cmd/self_hosted.go | 4 +- src/clis/nvcf-cli/cmd/self_hosted_check.go | 6 +- src/clis/nvcf-cli/cmd/task.go | 51 ++++++++--------- src/clis/nvcf-cli/cmd/task_test.go | 18 +++--- .../nvcf-cli/internal/selfhosted/BUILD.bazel | 2 + .../internal/selfhosted/clustervalidator.go | 56 +++++++++++++------ .../selfhosted/clustervalidator_test.go | 35 +++++++++++- 7 files changed, 113 insertions(+), 59 deletions(-) diff --git a/src/clis/nvcf-cli/cmd/self_hosted.go b/src/clis/nvcf-cli/cmd/self_hosted.go index 19c82c884f..f6fcdc1b38 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted.go +++ b/src/clis/nvcf-cli/cmd/self_hosted.go @@ -41,8 +41,8 @@ and 'install --compute-plane' explicitly.`, // Persistent flags shared by all self-hosted subcommands. var ( - selfHostedControlPlaneStack string - selfHostedComputePlaneStack string + selfHostedControlPlaneStack string + selfHostedComputePlaneStack string selfHostedEnv string selfHostedNoApply bool selfHostedNonInter bool diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index b7eda1a315..ce9e436ca7 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -495,8 +495,12 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin // The cluster-validator image is the same for both roles; VALIDATOR_ROLE // in the Job env selects which check set runs inside the binary. + // Gate on the image, not on the compute-plane validator being constructed: + // in ModeSplit with --control-plane the compute role is not targeted, so + // clusterValidator is nil and keying off it would drop the control-plane + // validator check from the run entirely. var cpClusterValidator selfhosted.ClusterValidator - if controlPlaneIsTargeted(mode) && clusterValidator != nil { + if controlPlaneIsTargeted(mode) && clusterValidatorImage != "" { cpClusterValidator = newClusterValidatorForSelfHosted() } diff --git a/src/clis/nvcf-cli/cmd/task.go b/src/clis/nvcf-cli/cmd/task.go index dc88bb3d90..183b179c60 100644 --- a/src/clis/nvcf-cli/cmd/task.go +++ b/src/clis/nvcf-cli/cmd/task.go @@ -188,7 +188,6 @@ like { "secrets": [{"name": "...", "value": "..."}] }.`, RunE: runTaskUpdateSecrets, } - // ============================================================================ // Configuration structs // ============================================================================ @@ -197,23 +196,23 @@ like { "secrets": [{"name": "...", "value": "..."}] }.`, // near 1:1 mapping of CreateTaskRequest with secret values typed loosely so // users can drop in either strings or objects. type TaskCreateConfig struct { - Name string `json:"name"` - GpuSpecification *TaskGpuSpecificationInput `json:"gpuSpecification,omitempty"` - ContainerImage string `json:"containerImage,omitempty"` - ContainerArgs string `json:"containerArgs,omitempty"` - ContainerEnvironment []ContainerEnvironmentEntry `json:"containerEnvironment,omitempty"` - Models []ArtifactConfig `json:"models,omitempty"` - Resources []ArtifactConfig `json:"resources,omitempty"` - Tags []string `json:"tags,omitempty"` - Description string `json:"description,omitempty"` - MaxRuntimeDuration string `json:"maxRuntimeDuration,omitempty"` - MaxQueuedDuration string `json:"maxQueuedDuration,omitempty"` - TerminationGracePeriodDuration string `json:"terminationGracePeriodDuration,omitempty"` - ResultHandlingStrategy string `json:"resultHandlingStrategy,omitempty"` - ResultsLocation string `json:"resultsLocation,omitempty"` - HelmChart string `json:"helmChart,omitempty"` - Telemetries *TaskTelemetriesInput `json:"telemetries,omitempty"` - Secrets interface{} `json:"secrets,omitempty"` // []string or []SecretConfig + Name string `json:"name"` + GpuSpecification *TaskGpuSpecificationInput `json:"gpuSpecification,omitempty"` + ContainerImage string `json:"containerImage,omitempty"` + ContainerArgs string `json:"containerArgs,omitempty"` + ContainerEnvironment []ContainerEnvironmentEntry `json:"containerEnvironment,omitempty"` + Models []ArtifactConfig `json:"models,omitempty"` + Resources []ArtifactConfig `json:"resources,omitempty"` + Tags []string `json:"tags,omitempty"` + Description string `json:"description,omitempty"` + MaxRuntimeDuration string `json:"maxRuntimeDuration,omitempty"` + MaxQueuedDuration string `json:"maxQueuedDuration,omitempty"` + TerminationGracePeriodDuration string `json:"terminationGracePeriodDuration,omitempty"` + ResultHandlingStrategy string `json:"resultHandlingStrategy,omitempty"` + ResultsLocation string `json:"resultsLocation,omitempty"` + HelmChart string `json:"helmChart,omitempty"` + Telemetries *TaskTelemetriesInput `json:"telemetries,omitempty"` + Secrets interface{} `json:"secrets,omitempty"` // []string or []SecretConfig } // TaskGpuSpecificationInput maps to GpuSpecificationDto. @@ -228,8 +227,8 @@ type TaskGpuSpecificationInput struct { // TaskHelmValidationInput maps to HelmValidationPolicyDto. type TaskHelmValidationInput struct { - Name string `json:"name"` - ExtraKubernetesTypes []TaskKubernetesTypeIn `json:"extraKubernetesTypes,omitempty"` + Name string `json:"name"` + ExtraKubernetesTypes []TaskKubernetesTypeIn `json:"extraKubernetesTypes,omitempty"` } // TaskKubernetesTypeIn maps to KubernetesType. @@ -263,11 +262,11 @@ type TaskBulkConfig struct { var taskCreateFlags struct { inputFile string - name string - gpu string - instanceType string - backend string - clusters []string + name string + gpu string + instanceType string + backend string + clusters []string containerImage string containerArgs string @@ -324,7 +323,6 @@ var taskUpdateSecretsFlags struct { secrets []string } - // ============================================================================ // Init // ============================================================================ @@ -1143,4 +1141,3 @@ func runTaskUpdateSecrets(cmd *cobra.Command, args []string) error { logging.Success("Updated %d secret(s) for task %s.", len(secrets), taskID) return nil } - diff --git a/src/clis/nvcf-cli/cmd/task_test.go b/src/clis/nvcf-cli/cmd/task_test.go index 5301ca1853..db71e482b5 100644 --- a/src/clis/nvcf-cli/cmd/task_test.go +++ b/src/clis/nvcf-cli/cmd/task_test.go @@ -33,15 +33,15 @@ func TestTaskCommandStructure(t *testing.T) { t.Run("registers all expected subcommands", func(t *testing.T) { expected := map[string]bool{ - "create": false, - "list": false, - "bulk": false, - "get [taskId]": false, - "delete [taskId]": false, - "cancel [taskId]": false, - "events [taskId]": false, - "results [taskId]": false, - "update-secrets [taskId]": false, + "create": false, + "list": false, + "bulk": false, + "get [taskId]": false, + "delete [taskId]": false, + "cancel [taskId]": false, + "events [taskId]": false, + "results [taskId]": false, + "update-secrets [taskId]": false, } for _, sub := range taskCmd.Commands() { if _, ok := expected[sub.Use]; ok { diff --git a/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel b/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel index 1a508d967d..8adbcd82e0 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel +++ b/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel @@ -29,6 +29,7 @@ go_library( "registry_cred.go", "render.go", "stack.go", + "stack_namespaces.go", "stale_namespace.go", "validatortag.go", ], @@ -65,6 +66,7 @@ go_test( "register_test.go", "registry_cred_test.go", "render_test.go", + "stack_namespaces_test.go", "stack_test.go", "stale_namespace_test.go", "validatortag_test.go", diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index b076239470..940ec8081a 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -135,7 +135,7 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image // labeled by us and are skipped. defer sweepManagedPullSecrets(context.Background(), client) - if err := ensureClusterValidatorRBAC(vctx, client); err != nil { + if err := ensureClusterValidatorRBAC(vctx, client, role); err != nil { return ClusterValidatorResult{Err: fmt.Errorf("bootstrapping validator RBAC: %w", err)} } // Remove the ClusterRole and ClusterRoleBinding to minimize the window in @@ -148,7 +148,7 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image podMayBeRunning := false defer func() { if !noCleanup && !podMayBeRunning { - sweepClusterValidatorRBAC(context.Background(), client) + sweepClusterValidatorRBAC(context.Background(), client, role) } }() @@ -216,12 +216,13 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image // Creates the SA/ClusterRole/ClusterRoleBinding the validator pod runs under, // idempotent via AlreadyExists tolerance. ClusterRole uses update-or-create so // newer CLI versions replace stale rules without the operator needing to delete. -func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface) error { - labels := clusterValidatorLabels() +func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, role string) error { + labels := clusterValidatorRoleLabels(role) + name := clusterValidatorRBACName(role) sa := &corev1.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ - Name: clusterValidatorName, + Name: name, Namespace: clusterValidatorNamespace, Labels: labels, }, @@ -231,7 +232,7 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface } cr := &rbacv1.ClusterRole{ - ObjectMeta: metav1.ObjectMeta{Name: clusterValidatorName, Labels: labels}, + ObjectMeta: metav1.ObjectMeta{Name: name, Labels: labels}, Rules: []rbacv1.PolicyRule{ // Read-only: cluster inventory and configuration. {APIGroups: []string{""}, Resources: []string{"nodes", "configmaps"}, Verbs: []string{"get", "list", "watch"}}, @@ -256,7 +257,7 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface } // Update-or-Create so a future CLI version's expanded rules replace the // old set; AlreadyExists tolerance alone would silently keep stale rules. - if existing, err := client.RbacV1().ClusterRoles().Get(ctx, clusterValidatorName, metav1.GetOptions{}); err == nil { + if existing, err := client.RbacV1().ClusterRoles().Get(ctx, name, metav1.GetOptions{}); err == nil { existing.Rules = cr.Rules existing.Labels = cr.Labels if _, err := client.RbacV1().ClusterRoles().Update(ctx, existing, metav1.UpdateOptions{}); err != nil { @@ -271,16 +272,16 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface } crb := &rbacv1.ClusterRoleBinding{ - ObjectMeta: metav1.ObjectMeta{Name: clusterValidatorName, Labels: labels}, + ObjectMeta: metav1.ObjectMeta{Name: name, Labels: labels}, Subjects: []rbacv1.Subject{{ Kind: rbacv1.ServiceAccountKind, - Name: clusterValidatorName, + Name: name, Namespace: clusterValidatorNamespace, }}, RoleRef: rbacv1.RoleRef{ APIGroup: rbacv1.GroupName, Kind: "ClusterRole", - Name: clusterValidatorName, + Name: name, }, } if _, err := client.RbacV1().ClusterRoleBindings().Create(ctx, crb, metav1.CreateOptions{}); err != nil && !apierrors.IsAlreadyExists(err) { @@ -323,10 +324,11 @@ func validatorConfigNameForRole(role string) string { // --no-cleanup is not set) to close the window where the elevated ClusterRole // exists. The next run recreates them via ensureClusterValidatorRBAC. // Errors are swallowed: stale RBAC is preferable to failing the result. -func sweepClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface) { - _ = client.RbacV1().ClusterRoleBindings().Delete(ctx, clusterValidatorName, metav1.DeleteOptions{}) - _ = client.RbacV1().ClusterRoles().Delete(ctx, clusterValidatorName, metav1.DeleteOptions{}) - _ = client.CoreV1().ServiceAccounts(clusterValidatorNamespace).Delete(ctx, clusterValidatorName, metav1.DeleteOptions{}) +func sweepClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, role string) { + name := clusterValidatorRBACName(role) + _ = client.RbacV1().ClusterRoleBindings().Delete(ctx, name, metav1.DeleteOptions{}) + _ = client.RbacV1().ClusterRoles().Delete(ctx, name, metav1.DeleteOptions{}) + _ = client.CoreV1().ServiceAccounts(clusterValidatorNamespace).Delete(ctx, name, metav1.DeleteOptions{}) } // Errors are swallowed: a stale Job is preferable to blocking the new run. @@ -378,6 +380,20 @@ const clusterValidatorNoConfigName = "cluster-validator-no-config" // clusterValidatorRoleLabel scopes Job selectors to a single validator role. const clusterValidatorRoleLabel = "nvcf.nvidia.com/validator-role" +// clusterValidatorRBACName returns the ServiceAccount / ClusterRole / +// ClusterRoleBinding name for a role. +// +// Per-role names matter because ModeSplit runs both validators concurrently, +// and the two kubecontexts can resolve to the same cluster. With one shared +// name the first run to finish deletes the RBAC out from under the other run's +// pod, which then fails every API call with "forbidden". +func clusterValidatorRBACName(role string) string { + if role == "" { + return clusterValidatorName + } + return clusterValidatorName + "-" + role +} + // controlPlaneValidatorConfigTemplate is the baseline network-check ConfigMap for // control-plane preflight: nvcr.io reachability (critical) and NetworkPolicy // enforcement (non-critical). Extra registries are appended as non-critical probes. @@ -443,8 +459,14 @@ func buildControlPlaneValidatorConfig(extraRegistries []string) string { if host == "" { continue } - // Append under the existing reachability.endpoints list. - fmt.Fprintf(&extra, " - name: %s\n host: %s\n port: %d\n protocol: tcp+tls\n critical: false\n", host, host, port) + // Append under the existing reachability.endpoints list. Quote the host: + // it comes from operator input, and parseRegistryHostPort passes a value + // it cannot split through verbatim. An unquoted "[" or embedded newline + // would make the whole ConfigMap unparseable, and the validator then + // silently drops every reachability and enforcement check. + fmt.Fprintf(&extra, + " - name: %q\n host: %q\n port: %d\n protocol: tcp+tls\n critical: false\n", + host, host, port) } if extra.Len() == 0 { return controlPlaneValidatorConfigTemplate @@ -486,7 +508,7 @@ func parseRegistryHostPort(s string) (host string, port int) { func buildClusterValidatorJob(name, image, pullSecret, role string, noCleanup bool) *batchv1.Job { backoff := int32(0) podSpec := corev1.PodSpec{ - ServiceAccountName: clusterValidatorName, + ServiceAccountName: clusterValidatorRBACName(role), RestartPolicy: corev1.RestartPolicyNever, Containers: []corev1.Container{{ Name: clusterValidatorContainer, diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index 3db50167a6..be4dfa6003 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -276,14 +276,15 @@ func TestRunClusterValidator_RBACRefreshesClusterRoleRules(t *testing.T) { // TestEnsureClusterValidatorRBAC_WritableResources verifies that the // bootstrapped ClusterRole grants the write verbs required by enforcement // checks (namespace/pod create+delete), probe log reading (pods/log get), -// and the Gateway API checks added in Req 3/4. +// and the Gateway API checks. func TestEnsureClusterValidatorRBAC_WritableResources(t *testing.T) { client := fake.NewSimpleClientset() ctx := context.Background() - require.NoError(t, ensureClusterValidatorRBAC(ctx, client)) + const role = clusterValidatorControlPlaneRole + require.NoError(t, ensureClusterValidatorRBAC(ctx, client, role)) - cr, err := client.RbacV1().ClusterRoles().Get(ctx, clusterValidatorName, metav1.GetOptions{}) + cr, err := client.RbacV1().ClusterRoles().Get(ctx, clusterValidatorRBACName(role), metav1.GetOptions{}) require.NoError(t, err) type check struct { @@ -677,3 +678,31 @@ func alreadyExistsReactor(resource, name string) ktesting.ReactionFunc { return true, nil, apierrors.NewAlreadyExists(gr, name) } } + +// ModeSplit runs both validators concurrently, and the two kubecontexts can +// resolve to the same cluster. With one shared RBAC name the first run to +// finish deletes the ServiceAccount, ClusterRole and binding out from under the +// other run's pod, which then fails every API call with "forbidden". +func TestClusterValidatorRBAC_IsScopedPerRole(t *testing.T) { + client := fake.NewSimpleClientset() + ctx := context.Background() + + cpName := clusterValidatorRBACName(clusterValidatorControlPlaneRole) + gpuName := clusterValidatorRBACName("compute-plane") + require.NotEqual(t, cpName, gpuName, "each role needs its own RBAC identity") + + require.NoError(t, ensureClusterValidatorRBAC(ctx, client, clusterValidatorControlPlaneRole)) + require.NoError(t, ensureClusterValidatorRBAC(ctx, client, "compute-plane")) + + // Sweeping one role must leave the other's RBAC intact. + sweepClusterValidatorRBAC(ctx, client, clusterValidatorControlPlaneRole) + + _, err := client.RbacV1().ClusterRoles().Get(ctx, cpName, metav1.GetOptions{}) + assert.True(t, apierrors.IsNotFound(err), "the swept role's ClusterRole must be gone") + + _, err = client.RbacV1().ClusterRoles().Get(ctx, gpuName, metav1.GetOptions{}) + assert.NoError(t, err, "the other role's ClusterRole must survive") + + _, err = client.CoreV1().ServiceAccounts(clusterValidatorNamespace).Get(ctx, gpuName, metav1.GetOptions{}) + assert.NoError(t, err, "the other role's ServiceAccount must survive") +} From 1bff24a1ce1e323bf4c55ab55756d2986f776cd9 Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 15 Sep 2026 14:10:15 +0530 Subject: [PATCH 19/55] style(nvcf-cli): revert unrelated gofmt churn in task and self_hosted commands --- src/clis/nvcf-cli/cmd/self_hosted.go | 4 +-- src/clis/nvcf-cli/cmd/task.go | 51 +++++++++++++++------------- src/clis/nvcf-cli/cmd/task_test.go | 18 +++++----- 3 files changed, 38 insertions(+), 35 deletions(-) diff --git a/src/clis/nvcf-cli/cmd/self_hosted.go b/src/clis/nvcf-cli/cmd/self_hosted.go index f6fcdc1b38..19c82c884f 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted.go +++ b/src/clis/nvcf-cli/cmd/self_hosted.go @@ -41,8 +41,8 @@ and 'install --compute-plane' explicitly.`, // Persistent flags shared by all self-hosted subcommands. var ( - selfHostedControlPlaneStack string - selfHostedComputePlaneStack string + selfHostedControlPlaneStack string + selfHostedComputePlaneStack string selfHostedEnv string selfHostedNoApply bool selfHostedNonInter bool diff --git a/src/clis/nvcf-cli/cmd/task.go b/src/clis/nvcf-cli/cmd/task.go index 183b179c60..dc88bb3d90 100644 --- a/src/clis/nvcf-cli/cmd/task.go +++ b/src/clis/nvcf-cli/cmd/task.go @@ -188,6 +188,7 @@ like { "secrets": [{"name": "...", "value": "..."}] }.`, RunE: runTaskUpdateSecrets, } + // ============================================================================ // Configuration structs // ============================================================================ @@ -196,23 +197,23 @@ like { "secrets": [{"name": "...", "value": "..."}] }.`, // near 1:1 mapping of CreateTaskRequest with secret values typed loosely so // users can drop in either strings or objects. type TaskCreateConfig struct { - Name string `json:"name"` - GpuSpecification *TaskGpuSpecificationInput `json:"gpuSpecification,omitempty"` - ContainerImage string `json:"containerImage,omitempty"` - ContainerArgs string `json:"containerArgs,omitempty"` - ContainerEnvironment []ContainerEnvironmentEntry `json:"containerEnvironment,omitempty"` - Models []ArtifactConfig `json:"models,omitempty"` - Resources []ArtifactConfig `json:"resources,omitempty"` - Tags []string `json:"tags,omitempty"` - Description string `json:"description,omitempty"` - MaxRuntimeDuration string `json:"maxRuntimeDuration,omitempty"` - MaxQueuedDuration string `json:"maxQueuedDuration,omitempty"` - TerminationGracePeriodDuration string `json:"terminationGracePeriodDuration,omitempty"` - ResultHandlingStrategy string `json:"resultHandlingStrategy,omitempty"` - ResultsLocation string `json:"resultsLocation,omitempty"` - HelmChart string `json:"helmChart,omitempty"` - Telemetries *TaskTelemetriesInput `json:"telemetries,omitempty"` - Secrets interface{} `json:"secrets,omitempty"` // []string or []SecretConfig + Name string `json:"name"` + GpuSpecification *TaskGpuSpecificationInput `json:"gpuSpecification,omitempty"` + ContainerImage string `json:"containerImage,omitempty"` + ContainerArgs string `json:"containerArgs,omitempty"` + ContainerEnvironment []ContainerEnvironmentEntry `json:"containerEnvironment,omitempty"` + Models []ArtifactConfig `json:"models,omitempty"` + Resources []ArtifactConfig `json:"resources,omitempty"` + Tags []string `json:"tags,omitempty"` + Description string `json:"description,omitempty"` + MaxRuntimeDuration string `json:"maxRuntimeDuration,omitempty"` + MaxQueuedDuration string `json:"maxQueuedDuration,omitempty"` + TerminationGracePeriodDuration string `json:"terminationGracePeriodDuration,omitempty"` + ResultHandlingStrategy string `json:"resultHandlingStrategy,omitempty"` + ResultsLocation string `json:"resultsLocation,omitempty"` + HelmChart string `json:"helmChart,omitempty"` + Telemetries *TaskTelemetriesInput `json:"telemetries,omitempty"` + Secrets interface{} `json:"secrets,omitempty"` // []string or []SecretConfig } // TaskGpuSpecificationInput maps to GpuSpecificationDto. @@ -227,8 +228,8 @@ type TaskGpuSpecificationInput struct { // TaskHelmValidationInput maps to HelmValidationPolicyDto. type TaskHelmValidationInput struct { - Name string `json:"name"` - ExtraKubernetesTypes []TaskKubernetesTypeIn `json:"extraKubernetesTypes,omitempty"` + Name string `json:"name"` + ExtraKubernetesTypes []TaskKubernetesTypeIn `json:"extraKubernetesTypes,omitempty"` } // TaskKubernetesTypeIn maps to KubernetesType. @@ -262,11 +263,11 @@ type TaskBulkConfig struct { var taskCreateFlags struct { inputFile string - name string - gpu string - instanceType string - backend string - clusters []string + name string + gpu string + instanceType string + backend string + clusters []string containerImage string containerArgs string @@ -323,6 +324,7 @@ var taskUpdateSecretsFlags struct { secrets []string } + // ============================================================================ // Init // ============================================================================ @@ -1141,3 +1143,4 @@ func runTaskUpdateSecrets(cmd *cobra.Command, args []string) error { logging.Success("Updated %d secret(s) for task %s.", len(secrets), taskID) return nil } + diff --git a/src/clis/nvcf-cli/cmd/task_test.go b/src/clis/nvcf-cli/cmd/task_test.go index db71e482b5..5301ca1853 100644 --- a/src/clis/nvcf-cli/cmd/task_test.go +++ b/src/clis/nvcf-cli/cmd/task_test.go @@ -33,15 +33,15 @@ func TestTaskCommandStructure(t *testing.T) { t.Run("registers all expected subcommands", func(t *testing.T) { expected := map[string]bool{ - "create": false, - "list": false, - "bulk": false, - "get [taskId]": false, - "delete [taskId]": false, - "cancel [taskId]": false, - "events [taskId]": false, - "results [taskId]": false, - "update-secrets [taskId]": false, + "create": false, + "list": false, + "bulk": false, + "get [taskId]": false, + "delete [taskId]": false, + "cancel [taskId]": false, + "events [taskId]": false, + "results [taskId]": false, + "update-secrets [taskId]": false, } for _, sub := range taskCmd.Commands() { if _, ok := expected[sub.Use]; ok { From 0d3550266927a8f9405a6308afaaaeec50a4886e Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 15 Sep 2026 16:05:01 +0530 Subject: [PATCH 20/55] fix(nvcf-cli): scope the managed pull secret per validator role --- .../internal/selfhosted/clustervalidator.go | 33 ++-- .../internal/selfhosted/pullsecret.go | 53 +++++-- .../internal/selfhosted/pullsecret_test.go | 147 ++++++++++++++---- 3 files changed, 181 insertions(+), 52 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 940ec8081a..3db254119f 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -124,16 +124,27 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image vctx, cancel := context.WithTimeout(ctx, clusterValidatorTimeout) defer cancel() + // podMayBeRunning is true only between a successful Job create and a clean + // wait. Both cleanup defers below key off it: outside that window nothing + // is using the pull secret or the RBAC, so reclaiming them is safe, and + // inside it reclaiming them breaks the pod that is still running. + podMayBeRunning := false + // Resolver errors are non-fatal: fall through to the caller's value and // let waitForClusterValidatorJob surface ImagePullBackOff if needed. - if resolved, err := resolveValidatorPullSecret(ctx, client, pullSecret, image); err == nil { + if resolved, err := resolveValidatorPullSecret(ctx, client, pullSecret, image, role); err == nil { pullSecret = resolved } - // Sweep any pull secrets we created (mirror or env-mint) after the - // Job terminates. Uses a fresh context so cleanup runs even when - // vctx has expired. Operator-supplied secrets via the flag aren't - // labeled by us and are skipped. - defer sweepManagedPullSecrets(context.Background(), client) + // Sweep only this role's managed pull secret, and only once the pod can no + // longer need it. Sweeping unconditionally deletes the Secret out from + // under a pod that is still retrying its pull, which the kubelet then + // reports as FailedToRetrieveImagePullSecret. Operator-supplied secrets via + // the flag aren't labeled by us and are skipped. + defer func() { + if !podMayBeRunning { + sweepManagedPullSecrets(context.Background(), client, role) + } + }() if err := ensureClusterValidatorRBAC(vctx, client, role); err != nil { return ClusterValidatorResult{Err: fmt.Errorf("bootstrapping validator RBAC: %w", err)} @@ -141,11 +152,6 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image // Remove the ClusterRole and ClusterRoleBinding to minimize the window in // which the elevated SA exists. When --no-cleanup is set the operator // expects to inspect the Job, so the RBAC stays either way. - // - // podMayBeRunning is true only between a successful Job create and a clean - // wait. Everywhere else nothing is using the RBAC, so reclaim it rather - // than leaking a cluster-wide ClusterRole. - podMayBeRunning := false defer func() { if !noCleanup && !podMayBeRunning { sweepClusterValidatorRBAC(context.Background(), client, role) @@ -353,8 +359,9 @@ func sweepPriorClusterValidatorJobs(ctx context.Context, client kubernetes.Inter // Operator-supplied secrets via --cluster-validator-pull-secret aren't // labeled by us and are skipped by the selector. Errors are swallowed: // failing to clean up is preferable to failing the check itself. -func sweepManagedPullSecrets(ctx context.Context, client kubernetes.Interface) { - selector := fmt.Sprintf("app.kubernetes.io/name=%s,app.kubernetes.io/managed-by=nvcf-cli", clusterValidatorAppLabel) +func sweepManagedPullSecrets(ctx context.Context, client kubernetes.Interface, role string) { + selector := fmt.Sprintf("app.kubernetes.io/name=%s,app.kubernetes.io/managed-by=nvcf-cli,%s=%s", + clusterValidatorAppLabel, clusterValidatorRoleLabel, role) _ = client.CoreV1().Secrets(clusterValidatorNamespace).DeleteCollection( ctx, metav1.DeleteOptions{}, diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go index d01311e802..7d6ee66c9a 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go @@ -37,10 +37,26 @@ const ( // can never collide with the conventional `nvcr-pull-secret` that // operators or the install flow may already manage in 'default'. // Pairs with isManagedByValidatorCLI label guard for defense-in-depth. + // + // The name is suffixed per role by validatorPullSecretRoleName: ModeSplit + // runs both validators concurrently, and the two kubecontexts can resolve + // to the same cluster. One shared Secret means the role that finishes first + // deletes it while the other Job is still pulling, which the kubelet + // reports as FailedToRetrieveImagePullSecret. validatorPullSecretName = "nvcf-preflight-pull-secret" validatorPullSecretScanTimeout = 10 * time.Second ) +// validatorPullSecretRoleName returns the managed pull-secret name for a role. +// A Secret cannot be co-owned, so each role needs its own rather than a shared +// object with a role label. +func validatorPullSecretRoleName(role string) string { + if role == "" { + return validatorPullSecretName + } + return validatorPullSecretName + "-" + role +} + // Mirrors the chain used by ensureLocalImagePullSecrets in cmd/self_hosted_up.go. var ngcAPIKeyEnvNames = []string{ "NGC_IMAGE_PULL_API_KEY", @@ -80,7 +96,7 @@ var validatorPullSecretSearchNamespaces = []string{ func resolveValidatorPullSecret( ctx context.Context, client kubernetes.Interface, - provided, image string, + provided, image, role string, ) (string, error) { if provided != "" { return provided, nil @@ -93,13 +109,13 @@ func resolveValidatorPullSecret( scanCtx, cancel := context.WithTimeout(ctx, validatorPullSecretScanTimeout) defer cancel() - if name, err := scanAndMirrorPullSecret(scanCtx, client, registry); err != nil { + if name, err := scanAndMirrorPullSecret(scanCtx, client, registry, role); err != nil { return "", err } else if name != "" { return name, nil } - if name, err := autoCreatePullSecretFromEnv(scanCtx, client, registry); err != nil { + if name, err := autoCreatePullSecretFromEnv(scanCtx, client, registry, role); err != nil { return "", err } else if name != "" { return name, nil @@ -131,7 +147,7 @@ func parseRegistryFromImage(image string) string { // registry. Mirrors the body into clusterValidatorNamespace when the match // lives elsewhere, so the Job can reference the secret without cross-namespace // lookups. -func scanAndMirrorPullSecret(ctx context.Context, client kubernetes.Interface, registry string) (string, error) { +func scanAndMirrorPullSecret(ctx context.Context, client kubernetes.Interface, registry, role string) (string, error) { for _, ns := range validatorPullSecretSearchNamespaces { // Filter client-side rather than via FieldSelector: server-side // type= selector on Secrets is only honored from k8s 1.27 onward. @@ -156,11 +172,11 @@ func scanAndMirrorPullSecret(ctx context.Context, client kubernetes.Interface, r // the destination namespace, and writeDockerConfigSecret's // delete-and-recreate path would otherwise destroy that // secret on type mismatch. - if err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretName, cfg); err != nil { + if err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretRoleName(role), role, cfg); err != nil { return "", fmt.Errorf("mirror pull secret %s/%s to %s/%s: %w", - s.Namespace, s.Name, clusterValidatorNamespace, validatorPullSecretName, err) + s.Namespace, s.Name, clusterValidatorNamespace, validatorPullSecretRoleName(role), err) } - return validatorPullSecretName, nil + return validatorPullSecretRoleName(role), nil } } return "", nil @@ -177,7 +193,7 @@ func dockerConfigHasRegistry(cfg []byte, registry string) bool { return ok } -func autoCreatePullSecretFromEnv(ctx context.Context, client kubernetes.Interface, registry string) (string, error) { +func autoCreatePullSecretFromEnv(ctx context.Context, client kubernetes.Interface, registry, role string) (string, error) { apiKey := firstNonEmptyEnv(ngcAPIKeyEnvNames...) if apiKey == "" { return "", nil @@ -186,11 +202,11 @@ func autoCreatePullSecretFromEnv(ctx context.Context, client kubernetes.Interfac if err != nil { return "", fmt.Errorf("encode dockerconfigjson for %s: %w", registry, err) } - if err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretName, cfg); err != nil { + if err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretRoleName(role), role, cfg); err != nil { return "", fmt.Errorf("auto-create pull secret %s/%s: %w", - clusterValidatorNamespace, validatorPullSecretName, err) + clusterValidatorNamespace, validatorPullSecretRoleName(role), err) } - return validatorPullSecretName, nil + return validatorPullSecretRoleName(role), nil } // Mirrors cmd/self_hosted_up.go's firstNonEmptyEnv; kept local to avoid an @@ -221,8 +237,8 @@ func buildDockerConfigJSON(registry, username, password string) ([]byte, error) // Mirrors cmd/self_hosted_up.go's ensureDockerConfigSecret. Attaches the // CLI's managed-by labels so a future cleanup path can identify resources // to remove. -func writeDockerConfigSecret(ctx context.Context, client kubernetes.Interface, namespace, name string, dockerConfig []byte) error { - labels := clusterValidatorLabels() +func writeDockerConfigSecret(ctx context.Context, client kubernetes.Interface, namespace, name, role string, dockerConfig []byte) error { + labels := clusterValidatorRoleLabels(role) secrets := client.CoreV1().Secrets(namespace) secret := &corev1.Secret{ ObjectMeta: metav1.ObjectMeta{ @@ -236,6 +252,17 @@ func writeDockerConfigSecret(ctx context.Context, client kubernetes.Interface, n current, err := secrets.Get(ctx, name, metav1.GetOptions{}) switch { case err == nil && current.Type == corev1.SecretTypeDockerConfigJson: + // Same guard as the type-mismatch branch below, for the same reason. A + // matching type is not permission to write: an operator-owned secret + // with a colliding name holds their registry credentials, and this + // would replace the data and stamp our managed labels on it, after + // which the role sweep would delete it outright. + if !isManagedByValidatorCLI(current) { + return fmt.Errorf( + "refusing to overwrite %s/%s which is not managed by nvcf-cli; "+ + "pass --cluster-validator-pull-secret to choose an explicit secret name", + namespace, name) + } if current.Data == nil { current.Data = map[string][]byte{} } diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go index 7a77df310c..1762fac226 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go @@ -28,7 +28,9 @@ import ( corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/kubernetes/fake" + ktesting "k8s.io/client-go/testing" ) func dockerConfigBlob(t *testing.T, registry, user, pass string) []byte { @@ -134,7 +136,7 @@ func TestWriteDockerConfigSecret_Create(t *testing.T) { client := fake.NewSimpleClientset() cfg := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "key") - require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", cfg)) + require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", clusterValidatorControlPlaneRole, cfg)) got, err := client.CoreV1().Secrets("default").Get(context.Background(), "nvcr-pull-secret", metav1.GetOptions{}) require.NoError(t, err) @@ -148,17 +150,22 @@ func TestWriteDockerConfigSecret_Update(t *testing.T) { old := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "stale-key") fresh := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "rotated-key") + // Managed labels plus an unrelated one: only a secret we own may be + // updated, and updating must not drop labels the operator added. + existingLabels := clusterValidatorLabels() + existingLabels["existing-label"] = "preserved" + client := fake.NewSimpleClientset(&corev1.Secret{ ObjectMeta: metav1.ObjectMeta{ Name: "nvcr-pull-secret", Namespace: "default", - Labels: map[string]string{"existing-label": "preserved"}, + Labels: existingLabels, }, Type: corev1.SecretTypeDockerConfigJson, Data: map[string][]byte{corev1.DockerConfigJsonKey: old}, }) - require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", fresh)) + require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh)) got, _ := client.CoreV1().Secrets("default").Get(context.Background(), "nvcr-pull-secret", metav1.GetOptions{}) assert.Equal(t, fresh, got.Data[corev1.DockerConfigJsonKey], "data must be updated to the fresh body") @@ -181,7 +188,7 @@ func TestWriteDockerConfigSecret_TypeMismatchReplaces(t *testing.T) { Data: map[string][]byte{"some-key": []byte("some-value")}, }) - require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", fresh)) + require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh)) got, err := client.CoreV1().Secrets("default").Get(context.Background(), "nvcr-pull-secret", metav1.GetOptions{}) require.NoError(t, err) @@ -207,7 +214,7 @@ func TestWriteDockerConfigSecret_TypeMismatchRefusesUnlabeledSecret(t *testing.T Data: map[string][]byte{"operator-payload": operatorPayload}, }) - err := writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", fresh) + err := writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh) require.Error(t, err, "must refuse to destroy a non-CLI-managed secret") assert.Contains(t, err.Error(), "not managed by nvcf-cli") @@ -226,7 +233,7 @@ func TestScanAndMirrorPullSecret_FoundInDefault(t *testing.T) { Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, }) - name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test") + name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole) require.NoError(t, err) assert.Equal(t, "operator-secret", name) @@ -247,12 +254,12 @@ func TestScanAndMirrorPullSecret_FoundInNvcfMirroredToDefault(t *testing.T) { Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, }) - name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test") + name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole) require.NoError(t, err) - assert.Equal(t, validatorPullSecretName, name) + assert.Equal(t, validatorPullSecretRoleName(clusterValidatorControlPlaneRole), name) - mirrored, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretName, metav1.GetOptions{}) - require.NoError(t, err, "mirror must be created under validatorPullSecretName") + mirrored, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretRoleName(clusterValidatorControlPlaneRole), metav1.GetOptions{}) + require.NoError(t, err, "mirror must be created under the role-scoped managed name") assert.Equal(t, cfg, mirrored.Data[corev1.DockerConfigJsonKey]) // The source secret must remain untouched in the source namespace. @@ -269,14 +276,14 @@ func TestScanAndMirrorPullSecret_RegistryMismatch(t *testing.T) { Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, }) - name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test") + name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole) require.NoError(t, err) assert.Equal(t, "", name, "secret for a different registry must not match") } func TestScanAndMirrorPullSecret_NoSecrets(t *testing.T) { client := fake.NewSimpleClientset() - name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test") + name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole) require.NoError(t, err) assert.Equal(t, "", name) } @@ -296,7 +303,7 @@ func TestScanAndMirrorPullSecret_PrefersDefaultNamespace(t *testing.T) { }, ) - name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test") + name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole) require.NoError(t, err) assert.Equal(t, "in-default", name) } @@ -308,7 +315,7 @@ func TestAutoCreatePullSecretFromEnv_NoEnv(t *testing.T) { } client := fake.NewSimpleClientset() - got, err := autoCreatePullSecretFromEnv(context.Background(), client, "private.registry.test") + got, err := autoCreatePullSecretFromEnv(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole) require.NoError(t, err) assert.Equal(t, "", got, "no env var set means no secret minted") @@ -323,11 +330,11 @@ func TestAutoCreatePullSecretFromEnv_KeyPresent(t *testing.T) { t.Setenv("NGC_API_KEY", "nvapi-test-123") client := fake.NewSimpleClientset() - got, err := autoCreatePullSecretFromEnv(context.Background(), client, "private.registry.test") + got, err := autoCreatePullSecretFromEnv(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole) require.NoError(t, err) - assert.Equal(t, validatorPullSecretName, got) + assert.Equal(t, validatorPullSecretRoleName(clusterValidatorControlPlaneRole), got) - s, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretName, metav1.GetOptions{}) + s, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretRoleName(clusterValidatorControlPlaneRole), metav1.GetOptions{}) require.NoError(t, err) assert.True(t, dockerConfigHasRegistry(s.Data[corev1.DockerConfigJsonKey], "private.registry.test"), "minted secret must contain auth for the validator image's registry") @@ -335,7 +342,7 @@ func TestAutoCreatePullSecretFromEnv_KeyPresent(t *testing.T) { func TestResolveValidatorPullSecret_FlagOverride(t *testing.T) { client := fake.NewSimpleClientset() - got, err := resolveValidatorPullSecret(context.Background(), client, "custom-secret", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26") + got, err := resolveValidatorPullSecret(context.Background(), client, "custom-secret", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole) require.NoError(t, err) assert.Equal(t, "custom-secret", got, "explicit override always wins") @@ -355,14 +362,14 @@ func TestResolveValidatorPullSecret_ScanWins(t *testing.T) { Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, }) - got, err := resolveValidatorPullSecret(context.Background(), client, "", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26") + got, err := resolveValidatorPullSecret(context.Background(), client, "", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole) require.NoError(t, err) // Mirror destination is the validator's well-known name, not the // source secret's name (avoids same-name collisions with operator // or chart-owned secrets in the destination namespace). - assert.Equal(t, validatorPullSecretName, got) + assert.Equal(t, validatorPullSecretRoleName(clusterValidatorControlPlaneRole), got) - mirrored, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretName, metav1.GetOptions{}) + mirrored, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretRoleName(clusterValidatorControlPlaneRole), metav1.GetOptions{}) require.NoError(t, err) assert.True(t, dockerConfigHasRegistry(mirrored.Data[corev1.DockerConfigJsonKey], "private.registry.test")) } @@ -374,11 +381,11 @@ func TestResolveValidatorPullSecret_EnvFallback(t *testing.T) { t.Setenv("NVCF_NGC_API_KEY", "nvapi-fallback") client := fake.NewSimpleClientset() - got, err := resolveValidatorPullSecret(context.Background(), client, "", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26") + got, err := resolveValidatorPullSecret(context.Background(), client, "", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole) require.NoError(t, err) - assert.Equal(t, validatorPullSecretName, got) + assert.Equal(t, validatorPullSecretRoleName(clusterValidatorControlPlaneRole), got) - s, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretName, metav1.GetOptions{}) + s, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretRoleName(clusterValidatorControlPlaneRole), metav1.GetOptions{}) require.NoError(t, err) assert.True(t, dockerConfigHasRegistry(s.Data[corev1.DockerConfigJsonKey], "private.registry.test")) } @@ -389,7 +396,7 @@ func TestResolveValidatorPullSecret_AllEmpty(t *testing.T) { } client := fake.NewSimpleClientset() - got, err := resolveValidatorPullSecret(context.Background(), client, "", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26") + got, err := resolveValidatorPullSecret(context.Background(), client, "", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole) require.NoError(t, err) assert.Equal(t, "", got, "no override, no scan match, no env var -> empty so kubelet surfaces ImagePullBackOff") } @@ -400,10 +407,98 @@ func TestResolveValidatorPullSecret_UnparsableImage(t *testing.T) { } client := fake.NewSimpleClientset() - got, err := resolveValidatorPullSecret(context.Background(), client, "", "bareimage") + got, err := resolveValidatorPullSecret(context.Background(), client, "", "bareimage", clusterValidatorControlPlaneRole) require.NoError(t, err) assert.Equal(t, "", got, "no registry hostname means no scan target and no auto-create") list, _ := client.CoreV1().Secrets("default").List(context.Background(), metav1.ListOptions{}) assert.Empty(t, list.Items, "no secret must be created when registry cannot be derived") } + +// ModeSplit runs both validators concurrently against contexts that can resolve +// to the same cluster. A Secret cannot be co-owned, so each role needs its own: +// with a shared name the role that finishes first deletes it while the other +// Job is still pulling, which the kubelet reports as +// FailedToRetrieveImagePullSecret. +// +// The sweep is asserted through a reactor rather than by observing deletions: +// the fake clientset implements DeleteCollection as a no-op, so a state-based +// assertion here would pass whatever the selector said. +func TestManagedPullSecret_IsScopedPerRole(t *testing.T) { + ctx := context.Background() + + cpName := validatorPullSecretRoleName(clusterValidatorControlPlaneRole) + gpuName := validatorPullSecretRoleName("compute-plane") + require.NotEqual(t, cpName, gpuName, "each role needs its own managed pull secret") + + client := fake.NewSimpleClientset() + var gotSelector string + client.PrependReactor("delete-collection", "secrets", + func(action ktesting.Action) (bool, runtime.Object, error) { + gotSelector = action.(ktesting.DeleteCollectionAction). + GetListRestrictions().Labels.String() + return true, nil, nil + }) + + sweepManagedPullSecrets(ctx, client, clusterValidatorControlPlaneRole) + + assert.Contains(t, gotSelector, clusterValidatorRoleLabel+"="+clusterValidatorControlPlaneRole, + "the sweep must select on the role so it cannot delete the other role's secret") +} + +// The managed labels a created secret carries must satisfy the sweep selector +// for that role, and must not satisfy another role's. +func TestManagedPullSecret_LabelsMatchOnlyItsOwnRole(t *testing.T) { + ctx := context.Background() + client := fake.NewSimpleClientset() + + // dockerConfigBlob encodes the auth value at runtime; a literal base64 + // docker credential in the source trips secret scanners. + cfg := dockerConfigBlob(t, "private.registry.test", "user", "pass") + require.NoError(t, writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, + validatorPullSecretRoleName(clusterValidatorControlPlaneRole), + clusterValidatorControlPlaneRole, cfg)) + + got, err := client.CoreV1().Secrets(clusterValidatorNamespace).Get(ctx, + validatorPullSecretRoleName(clusterValidatorControlPlaneRole), metav1.GetOptions{}) + require.NoError(t, err) + + assert.Equal(t, clusterValidatorControlPlaneRole, got.Labels[clusterValidatorRoleLabel], + "a managed secret must carry its own role label") + assert.Equal(t, "nvcf-cli", got.Labels["app.kubernetes.io/managed-by"], + "the managed-by label is what excludes operator-supplied secrets from cleanup") +} + +// A matching Secret type is not permission to write. An operator-owned secret +// with a colliding name holds their registry credentials; overwriting it would +// also stamp our managed labels on it, after which the role sweep would delete +// it outright. +func TestWriteDockerConfigSecret_RefusesUnmanagedSameTypeSecret(t *testing.T) { + ctx := context.Background() + operatorOwned := dockerConfigBlob(t, "private.registry.test", "operator", "their-secret") + ours := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "ours") + + client := fake.NewSimpleClientset(&corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: "nvcf-preflight-pull-secret-control-plane", + Namespace: clusterValidatorNamespace, + Labels: map[string]string{"owner": "operator"}, + }, + Type: corev1.SecretTypeDockerConfigJson, + Data: map[string][]byte{corev1.DockerConfigJsonKey: operatorOwned}, + }) + + err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, + "nvcf-preflight-pull-secret-control-plane", clusterValidatorControlPlaneRole, ours) + + require.Error(t, err, "an unmanaged secret of the same type must not be overwritten") + assert.Contains(t, err.Error(), "not managed by nvcf-cli") + + got, getErr := client.CoreV1().Secrets(clusterValidatorNamespace).Get(ctx, + "nvcf-preflight-pull-secret-control-plane", metav1.GetOptions{}) + require.NoError(t, getErr) + assert.Equal(t, operatorOwned, got.Data[corev1.DockerConfigJsonKey], + "the operator's credentials must be left untouched") + assert.NotContains(t, got.Labels, "app.kubernetes.io/managed-by", + "managed labels must not be stamped on it, or the sweep would later delete it") +} From 3fcd00dde95d2ca28efd12cdc41cb1444a35cc5a Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 15 Sep 2026 16:50:31 +0530 Subject: [PATCH 21/55] fix(nvcf-cli): verify ownership before mutating or deleting any validator resource --- .../internal/selfhosted/clustervalidator.go | 35 ++++++++++-- .../selfhosted/clustervalidator_test.go | 57 ++++++++++++++++++- .../internal/selfhosted/pullsecret.go | 47 +++++++++++---- .../internal/selfhosted/pullsecret_test.go | 49 ++++++++++++++++ 4 files changed, 172 insertions(+), 16 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 3db254119f..249b77d064 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -264,6 +264,13 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface // Update-or-Create so a future CLI version's expanded rules replace the // old set; AlreadyExists tolerance alone would silently keep stale rules. if existing, err := client.RbacV1().ClusterRoles().Get(ctx, name, metav1.GetOptions{}); err == nil { + // Do not rewrite the rules of a ClusterRole we do not own: this is a + // cluster-scoped privilege object, and an operator-owned one with a + // colliding name would silently have its permissions replaced. + if !hasValidatorManagedLabels(existing.Labels) { + return fmt.Errorf( + "refusing to modify ClusterRole %s which is not managed by nvcf-cli", name) + } existing.Rules = cr.Rules existing.Labels = cr.Labels if _, err := client.RbacV1().ClusterRoles().Update(ctx, existing, metav1.UpdateOptions{}); err != nil { @@ -332,9 +339,23 @@ func validatorConfigNameForRole(role string) string { // Errors are swallowed: stale RBAC is preferable to failing the result. func sweepClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, role string) { name := clusterValidatorRBACName(role) - _ = client.RbacV1().ClusterRoleBindings().Delete(ctx, name, metav1.DeleteOptions{}) - _ = client.RbacV1().ClusterRoles().Delete(ctx, name, metav1.DeleteOptions{}) - _ = client.CoreV1().ServiceAccounts(clusterValidatorNamespace).Delete(ctx, name, metav1.DeleteOptions{}) + + // Delete by name, but only what we own. These are cluster-scoped objects + // and the errors here are swallowed, so an operator-owned ClusterRole with + // a colliding name would otherwise vanish with no diagnostic at all. + if crb, err := client.RbacV1().ClusterRoleBindings().Get(ctx, name, metav1.GetOptions{}); err == nil && + hasValidatorManagedLabels(crb.Labels) { + _ = client.RbacV1().ClusterRoleBindings().Delete(ctx, name, metav1.DeleteOptions{}) + } + if cr, err := client.RbacV1().ClusterRoles().Get(ctx, name, metav1.GetOptions{}); err == nil && + hasValidatorManagedLabels(cr.Labels) { + _ = client.RbacV1().ClusterRoles().Delete(ctx, name, metav1.DeleteOptions{}) + } + sa := client.CoreV1().ServiceAccounts(clusterValidatorNamespace) + if acct, err := sa.Get(ctx, name, metav1.GetOptions{}); err == nil && + hasValidatorManagedLabels(acct.Labels) { + _ = sa.Delete(ctx, name, metav1.DeleteOptions{}) + } } // Errors are swallowed: a stale Job is preferable to blocking the new run. @@ -443,7 +464,13 @@ func ensureClusterValidatorConfig(ctx context.Context, client kubernetes.Interfa return nil } - // Always update so a newer CLI version's config (or new registries) replaces stale content. + // Always update so a newer CLI version's config (or new registries) replaces + // stale content, but never overwrite a ConfigMap we do not own. + if !hasValidatorManagedLabels(existing.Labels) { + return fmt.Errorf( + "refusing to overwrite ConfigMap %s/%s which is not managed by nvcf-cli", + clusterValidatorNamespace, clusterValidatorConfigName) + } existing.Data = desired.Data existing.Labels = desired.Labels if _, err := client.CoreV1().ConfigMaps(clusterValidatorNamespace).Update(ctx, existing, metav1.UpdateOptions{}); err != nil { diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index be4dfa6003..7298649e44 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -247,8 +247,10 @@ func TestRunClusterValidator_RBACRefreshesClusterRoleRules(t *testing.T) { oldRules := []rbacv1.PolicyRule{ {APIGroups: []string{""}, Resources: []string{"nodes"}, Verbs: []string{"get"}}, } + // Labelled as a prior CLI run would have left it: only a ClusterRole we own + // may have its rules rewritten. client := fake.NewSimpleClientset(&rbacv1.ClusterRole{ - ObjectMeta: metav1.ObjectMeta{Name: clusterValidatorName}, + ObjectMeta: metav1.ObjectMeta{Name: clusterValidatorName, Labels: clusterValidatorLabels()}, Rules: oldRules, }) @@ -706,3 +708,56 @@ func TestClusterValidatorRBAC_IsScopedPerRole(t *testing.T) { _, err = client.CoreV1().ServiceAccounts(clusterValidatorNamespace).Get(ctx, gpuName, metav1.GetOptions{}) assert.NoError(t, err, "the other role's ServiceAccount must survive") } + +// A ClusterRole is a cluster-scoped privilege object. An operator-owned one with +// a colliding name must not have its rules rewritten, and the sweep must not +// delete it. +func TestClusterValidatorRBAC_RefusesUnmanagedClusterRole(t *testing.T) { + ctx := context.Background() + const role = clusterValidatorControlPlaneRole + name := clusterValidatorRBACName(role) + + operatorRules := []rbacv1.PolicyRule{ + {APIGroups: []string{""}, Resources: []string{"pods"}, Verbs: []string{"get"}}, + } + client := fake.NewSimpleClientset(&rbacv1.ClusterRole{ + ObjectMeta: metav1.ObjectMeta{Name: name, Labels: map[string]string{"owner": "operator"}}, + Rules: operatorRules, + }) + + err := ensureClusterValidatorRBAC(ctx, client, role) + require.Error(t, err, "an unmanaged ClusterRole must not be rewritten") + assert.Contains(t, err.Error(), "not managed by nvcf-cli") + + got, getErr := client.RbacV1().ClusterRoles().Get(ctx, name, metav1.GetOptions{}) + require.NoError(t, getErr) + assert.Equal(t, operatorRules, got.Rules, "the operator's rules must be untouched") + + // The sweep must leave it alone too, even though it matches by name. + sweepClusterValidatorRBAC(ctx, client, role) + _, getErr = client.RbacV1().ClusterRoles().Get(ctx, name, metav1.GetOptions{}) + assert.NoError(t, getErr, "the sweep must not delete a ClusterRole it does not own") +} + +// The same invariant for the network-check ConfigMap. +func TestEnsureClusterValidatorConfig_RefusesUnmanagedConfigMap(t *testing.T) { + ctx := context.Background() + client := fake.NewSimpleClientset(&corev1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{ + Name: clusterValidatorConfigName, + Namespace: clusterValidatorNamespace, + Labels: map[string]string{"owner": "operator"}, + }, + Data: map[string]string{"config.yaml": "operator: content"}, + }) + + err := ensureClusterValidatorConfig(ctx, client, nil) + require.Error(t, err, "an unmanaged ConfigMap must not be overwritten") + assert.Contains(t, err.Error(), "not managed by nvcf-cli") + + got, getErr := client.CoreV1().ConfigMaps(clusterValidatorNamespace).Get(ctx, + clusterValidatorConfigName, metav1.GetOptions{}) + require.NoError(t, getErr) + assert.Equal(t, "operator: content", got.Data["config.yaml"], + "the operator's ConfigMap content must be untouched") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go index 7d6ee66c9a..a846e4c1c1 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go @@ -257,11 +257,8 @@ func writeDockerConfigSecret(ctx context.Context, client kubernetes.Interface, n // with a colliding name holds their registry credentials, and this // would replace the data and stamp our managed labels on it, after // which the role sweep would delete it outright. - if !isManagedByValidatorCLI(current) { - return fmt.Errorf( - "refusing to overwrite %s/%s which is not managed by nvcf-cli; "+ - "pass --cluster-validator-pull-secret to choose an explicit secret name", - namespace, name) + if err := refuseIfUnmanaged(current, namespace, name, ""); err != nil { + return err } if current.Data == nil { current.Data = map[string][]byte{} @@ -283,11 +280,9 @@ func writeDockerConfigSecret(ctx context.Context, client kubernetes.Interface, n // Without this, an operator-owned secret with a colliding name // (e.g. an Opaque secret in 'default' sharing the validator's // pull-secret name) would be silently destroyed. - if !isManagedByValidatorCLI(current) { - return fmt.Errorf( - "refusing to replace %s/%s (type=%s) which is not managed by nvcf-cli; "+ - "pass --cluster-validator-pull-secret to choose an explicit secret name", - namespace, name, current.Type) + if err := refuseIfUnmanaged(current, namespace, name, + fmt.Sprintf("type=%s", current.Type)); err != nil { + return err } if err := secrets.Delete(ctx, name, metav1.DeleteOptions{}); err != nil && !apierrors.IsNotFound(err) { return fmt.Errorf("delete incompatible secret type %s: %w", current.Type, err) @@ -307,6 +302,9 @@ func writeDockerConfigSecret(ctx context.Context, client kubernetes.Interface, n if getErr != nil { return fmt.Errorf("get after create race: %w", getErr) } + if err := refuseIfUnmanaged(current, namespace, name, "lost create race"); err != nil { + return err + } if current.Type != corev1.SecretTypeDockerConfigJson { return fmt.Errorf("create race left secret %s/%s with type %s, want %s", namespace, name, current.Type, corev1.SecretTypeDockerConfigJson) @@ -332,9 +330,36 @@ func writeDockerConfigSecret(ctx context.Context, client kubernetes.Interface, n // writeDockerConfigSecret stamps on every secret it creates. Used to // gate the delete-then-recreate branch so we never destroy an operator- // or chart-owned secret that happens to share a name with one of ours. +// refuseIfUnmanaged rejects a Secret nvcf-cli does not own. Every path in +// writeDockerConfigSecret that mutates an existing Secret must call this: +// overwriting an operator-owned secret replaces their registry credentials and +// stamps our managed labels on it, after which the role sweep deletes it. +// +// detail is appended to the message when there is something useful to say +// (the conflicting type, the race), otherwise "". +func refuseIfUnmanaged(s *corev1.Secret, namespace, name, detail string) error { + if isManagedByValidatorCLI(s) { + return nil + } + if detail != "" { + detail = " (" + detail + ")" + } + return fmt.Errorf( + "refusing to overwrite %s/%s%s which is not managed by nvcf-cli; "+ + "pass --cluster-validator-pull-secret to choose an explicit secret name", + namespace, name, detail) +} + func isManagedByValidatorCLI(s *corev1.Secret) bool { + return hasValidatorManagedLabels(s.Labels) +} + +// hasValidatorManagedLabels reports whether an object carries the labels this +// CLI stamps on everything it creates. It is the ownership test for every +// resource the validator writes to or deletes by name, not just Secrets. +func hasValidatorManagedLabels(labels map[string]string) bool { for k, v := range clusterValidatorLabels() { - if s.Labels[k] != v { + if labels[k] != v { return false } } diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go index 1762fac226..80aa267b6a 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go @@ -27,6 +27,7 @@ import ( "github.com/stretchr/testify/require" corev1 "k8s.io/api/core/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/kubernetes/fake" @@ -502,3 +503,51 @@ func TestWriteDockerConfigSecret_RefusesUnmanagedSameTypeSecret(t *testing.T) { assert.NotContains(t, got.Labels, "app.kubernetes.io/managed-by", "managed labels must not be stamped on it, or the sweep would later delete it") } + +// If an unmanaged Docker-config Secret appears between our Get and our Create, +// Create fails with AlreadyExists and the recovery path refetches it. That path +// must apply the same ownership check as the others, or a lost race silently +// overwrites an operator-owned secret and marks it for sweep deletion. +func TestWriteDockerConfigSecret_RefusesUnmanagedAfterCreateRace(t *testing.T) { + ctx := context.Background() + operatorOwned := dockerConfigBlob(t, "private.registry.test", "operator", "their-secret") + ours := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "ours") + + const name = "nvcf-preflight-pull-secret-control-plane" + client := fake.NewSimpleClientset() + + // First Get: absent, so the code proceeds to Create. Create: AlreadyExists, + // as though another actor won the race. Second Get: their unmanaged secret. + gets := 0 + client.PrependReactor("get", "secrets", func(_ ktesting.Action) (bool, runtime.Object, error) { + gets++ + if gets == 1 { + return true, nil, apierrors.NewNotFound(corev1.Resource("secrets"), name) + } + return true, &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: name, + Namespace: clusterValidatorNamespace, + Labels: map[string]string{"owner": "operator"}, + }, + Type: corev1.SecretTypeDockerConfigJson, + Data: map[string][]byte{corev1.DockerConfigJsonKey: operatorOwned}, + }, nil + }) + client.PrependReactor("create", "secrets", func(_ ktesting.Action) (bool, runtime.Object, error) { + return true, nil, apierrors.NewAlreadyExists(corev1.Resource("secrets"), name) + }) + + var updated bool + client.PrependReactor("update", "secrets", func(_ ktesting.Action) (bool, runtime.Object, error) { + updated = true + return true, nil, nil + }) + + err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, name, + clusterValidatorControlPlaneRole, ours) + + require.Error(t, err, "losing the create race to an unmanaged secret must not overwrite it") + assert.Contains(t, err.Error(), "not managed by nvcf-cli") + assert.False(t, updated, "no Update may be issued against an unmanaged secret") +} From 5952b0f56c872991cb0f72c0ad740130963c315f Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 15 Sep 2026 17:21:24 +0530 Subject: [PATCH 22/55] fix(nvcf-cli): verify RBAC ownership before reuse and reject host-confusing registries --- .../internal/selfhosted/clustervalidator.go | 70 ++++++++++- .../selfhosted/clustervalidator_test.go | 117 ++++++++++++++++-- .../internal/selfhosted/validatortag.go | 30 +++++ .../internal/selfhosted/validatortag_test.go | 37 ++++++ 4 files changed, 236 insertions(+), 18 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 249b77d064..066223806c 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -233,8 +233,24 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface Labels: labels, }, } - if _, err := client.CoreV1().ServiceAccounts(clusterValidatorNamespace).Create(ctx, sa, metav1.CreateOptions{}); err != nil && !apierrors.IsAlreadyExists(err) { - return fmt.Errorf("create service account: %w", err) + if _, err := client.CoreV1().ServiceAccounts(clusterValidatorNamespace).Create(ctx, sa, metav1.CreateOptions{}); err != nil { + if !apierrors.IsAlreadyExists(err) { + return fmt.Errorf("create service account: %w", err) + } + // Do not adopt a ServiceAccount we did not create. The ClusterRoleBinding + // below would bind it to the validator ClusterRole, handing whoever + // controls that account cluster-wide create/delete on namespaces, pods, + // services and daemonsets. + existing, getErr := client.CoreV1().ServiceAccounts(clusterValidatorNamespace).Get(ctx, name, metav1.GetOptions{}) + if getErr != nil { + return fmt.Errorf("get existing service account: %w", getErr) + } + if !hasValidatorManagedLabels(existing.Labels) { + return fmt.Errorf( + "refusing to bind ServiceAccount %s/%s which is not managed by nvcf-cli; "+ + "remove it or run against a cluster where the name is free", + clusterValidatorNamespace, name) + } } cr := &rbacv1.ClusterRole{ @@ -297,12 +313,53 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface Name: name, }, } - if _, err := client.RbacV1().ClusterRoleBindings().Create(ctx, crb, metav1.CreateOptions{}); err != nil && !apierrors.IsAlreadyExists(err) { - return fmt.Errorf("create cluster role binding: %w", err) + if _, err := client.RbacV1().ClusterRoleBindings().Create(ctx, crb, metav1.CreateOptions{}); err != nil { + if !apierrors.IsAlreadyExists(err) { + return fmt.Errorf("create cluster role binding: %w", err) + } + existing, getErr := client.RbacV1().ClusterRoleBindings().Get(ctx, name, metav1.GetOptions{}) + if getErr != nil { + return fmt.Errorf("get existing cluster role binding: %w", getErr) + } + // An unowned binding with this name may point anywhere, or bind subjects + // we never intended, so never leave it in place and assume it is ours. + if !hasValidatorManagedLabels(existing.Labels) { + return fmt.Errorf( + "refusing to reuse ClusterRoleBinding %s which is not managed by nvcf-cli; "+ + "remove it or run against a cluster where the name is free", name) + } + // Ours, but from an older CLI whose RoleRef or subjects differ. RoleRef + // is immutable, so replace rather than update. + if !clusterRoleBindingMatches(existing, crb) { + if delErr := client.RbacV1().ClusterRoleBindings().Delete(ctx, name, metav1.DeleteOptions{}); delErr != nil && + !apierrors.IsNotFound(delErr) { + return fmt.Errorf("replace stale cluster role binding: %w", delErr) + } + if _, cErr := client.RbacV1().ClusterRoleBindings().Create(ctx, crb, metav1.CreateOptions{}); cErr != nil { + return fmt.Errorf("recreate cluster role binding: %w", cErr) + } + } } return nil } +// clusterRoleBindingMatches reports whether an existing binding already grants +// exactly what we intend: the same ClusterRole, to the same single subject. +func clusterRoleBindingMatches(existing, want *rbacv1.ClusterRoleBinding) bool { + if existing.RoleRef != want.RoleRef { + return false + } + if len(existing.Subjects) != len(want.Subjects) { + return false + } + for i := range want.Subjects { + if existing.Subjects[i] != want.Subjects[i] { + return false + } + } + return true +} + func clusterValidatorLabels() map[string]string { return map[string]string{ "app.kubernetes.io/name": clusterValidatorAppLabel, @@ -517,7 +574,10 @@ func buildControlPlaneValidatorConfig(extraRegistries []string) string { // the input has a trailing colon with no digit (e.g. "nvcr.io:"). func parseRegistryHostPort(s string) (host string, port int) { s = strings.TrimSpace(s) - if s == "" { + // Reject anything that is not a bare host[:port]. Callers interpolate the + // result straight into a URL and into the validator ConfigMap, and an empty + // host is the signal to skip the entry entirely. + if !isBareRegistryHost(s) { return "", 0 } h, p, err := net.SplitHostPort(s) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index 7298649e44..7fd3f22a51 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -210,20 +210,36 @@ func TestRunClusterValidator_JobFailed(t *testing.T) { } func TestRunClusterValidator_RBACIdempotent(t *testing.T) { - client := fake.NewSimpleClientset() - // Seed the cluster with the SA, ClusterRole, and ClusterRoleBinding so - // each Create returns AlreadyExists. The runner must treat that as + // Seed the SA, ClusterRole and ClusterRoleBinding exactly as a prior run + // would have left them: present, and carrying our managed labels. Each + // Create then returns AlreadyExists and the runner must treat that as // success and proceed to Job creation. - existing := []ktesting.ReactionFunc{ - alreadyExistsReactor("serviceaccounts", clusterValidatorName), - alreadyExistsReactor("clusterroles", clusterValidatorName), - alreadyExistsReactor("clusterrolebindings", clusterValidatorName), - } - verbs := []string{"create"} - resources := []string{"serviceaccounts", "clusterroles", "clusterrolebindings"} - for i, r := range existing { - client.PrependReactor(verbs[0], resources[i], r) - } + // + // Seeding real objects rather than faking AlreadyExists with a reactor + // matters: the runner refetches on conflict to confirm it owns what it is + // about to bind, so a reactor with nothing behind it is not a valid model. + client := fake.NewSimpleClientset( + &corev1.ServiceAccount{ObjectMeta: metav1.ObjectMeta{ + Name: clusterValidatorName, Namespace: clusterValidatorNamespace, + Labels: clusterValidatorLabels(), + }}, + &rbacv1.ClusterRole{ObjectMeta: metav1.ObjectMeta{ + Name: clusterValidatorName, Labels: clusterValidatorLabels(), + }}, + &rbacv1.ClusterRoleBinding{ + ObjectMeta: metav1.ObjectMeta{ + Name: clusterValidatorName, Labels: clusterValidatorLabels(), + }, + Subjects: []rbacv1.Subject{{ + Kind: rbacv1.ServiceAccountKind, + Name: clusterValidatorName, + Namespace: clusterValidatorNamespace, + }}, + RoleRef: rbacv1.RoleRef{ + APIGroup: rbacv1.GroupName, Kind: "ClusterRole", Name: clusterValidatorName, + }, + }, + ) var jobName atomic.Value jobName.Store("") @@ -761,3 +777,78 @@ func TestEnsureClusterValidatorConfig_RefusesUnmanagedConfigMap(t *testing.T) { assert.Equal(t, "operator: content", got.Data["config.yaml"], "the operator's ConfigMap content must be untouched") } + +// An attacker who can create a ServiceAccount in the probe namespace could +// pre-create one under the generated name. Blindly tolerating AlreadyExists +// would then bind that account to the validator ClusterRole, handing whoever +// controls it cluster-wide create/delete on namespaces, pods and daemonsets. +func TestClusterValidatorRBAC_RefusesUnmanagedServiceAccount(t *testing.T) { + ctx := context.Background() + const role = clusterValidatorControlPlaneRole + name := clusterValidatorRBACName(role) + + client := fake.NewSimpleClientset(&corev1.ServiceAccount{ + ObjectMeta: metav1.ObjectMeta{ + Name: name, Namespace: clusterValidatorNamespace, + Labels: map[string]string{"owner": "someone-else"}, + }, + }) + + err := ensureClusterValidatorRBAC(ctx, client, role) + require.Error(t, err, "an unowned ServiceAccount must not be adopted") + assert.Contains(t, err.Error(), "not managed by nvcf-cli") + + _, bindErr := client.RbacV1().ClusterRoleBindings().Get(ctx, name, metav1.GetOptions{}) + assert.True(t, apierrors.IsNotFound(bindErr), + "no ClusterRoleBinding may be created for a ServiceAccount we do not own") +} + +// A pre-existing ClusterRoleBinding under our name may bind subjects we never +// intended, or point at a different role. It must not be silently reused. +func TestClusterValidatorRBAC_RefusesUnmanagedClusterRoleBinding(t *testing.T) { + ctx := context.Background() + const role = clusterValidatorControlPlaneRole + name := clusterValidatorRBACName(role) + + client := fake.NewSimpleClientset(&rbacv1.ClusterRoleBinding{ + ObjectMeta: metav1.ObjectMeta{Name: name, Labels: map[string]string{"owner": "someone-else"}}, + Subjects: []rbacv1.Subject{{ + Kind: rbacv1.ServiceAccountKind, Name: "attacker-sa", Namespace: "default", + }}, + RoleRef: rbacv1.RoleRef{APIGroup: rbacv1.GroupName, Kind: "ClusterRole", Name: "cluster-admin"}, + }) + + err := ensureClusterValidatorRBAC(ctx, client, role) + require.Error(t, err, "an unowned ClusterRoleBinding must not be reused") + assert.Contains(t, err.Error(), "not managed by nvcf-cli") + + got, getErr := client.RbacV1().ClusterRoleBindings().Get(ctx, name, metav1.GetOptions{}) + require.NoError(t, getErr) + assert.Equal(t, "attacker-sa", got.Subjects[0].Name, "the existing binding must be left untouched") +} + +// A binding we own but from an older CLI can point at a stale RoleRef, which is +// immutable, so it has to be replaced rather than updated. +func TestClusterValidatorRBAC_ReplacesOwnedBindingWithStaleRoleRef(t *testing.T) { + ctx := context.Background() + const role = clusterValidatorControlPlaneRole + name := clusterValidatorRBACName(role) + + client := fake.NewSimpleClientset( + &rbacv1.ClusterRoleBinding{ + ObjectMeta: metav1.ObjectMeta{Name: name, Labels: clusterValidatorLabels()}, + Subjects: []rbacv1.Subject{{ + Kind: rbacv1.ServiceAccountKind, Name: "old-name", Namespace: clusterValidatorNamespace, + }}, + RoleRef: rbacv1.RoleRef{APIGroup: rbacv1.GroupName, Kind: "ClusterRole", Name: "old-role"}, + }, + ) + + require.NoError(t, ensureClusterValidatorRBAC(ctx, client, role)) + + got, err := client.RbacV1().ClusterRoleBindings().Get(ctx, name, metav1.GetOptions{}) + require.NoError(t, err) + assert.Equal(t, name, got.RoleRef.Name, "the stale RoleRef must be replaced with the current one") + require.Len(t, got.Subjects, 1) + assert.Equal(t, name, got.Subjects[0].Name, "the subject must be the current ServiceAccount") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go index 7b12c81332..7029581ab4 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go @@ -440,7 +440,37 @@ var ngcApprovedHosts = []string{ // domain. The check strips any port from the registry string before matching // so that nvcr.io:443 is handled correctly, and uses dot-boundary matching to // reject deceptive suffixes such as evilnvcr.io or nvidia.com.invalid. +// isBareRegistryHost reports whether s is a plain host[:port], with nothing in +// it that could move the request somewhere else once concatenated into a URL. +// +// This matters because the registry string is interpolated directly into +// "https://" + registry + "/...". A value like "evil.com/x.nvcr.io" ends with a +// trusted suffix but parses to host evil.com, so a suffix check alone would +// authorize sending credentials to an attacker. IPv6 literals keep their +// brackets and are allowed. +func isBareRegistryHost(s string) bool { + if s == "" { + return false + } + // "/" and "@" move the host; "?" and "#" truncate it; whitespace and + // control characters have no place in a hostname. + if strings.ContainsAny(s, "/@?#\\") { + return false + } + for _, r := range s { + if r <= ' ' || r == 0x7f { + return false + } + } + return true +} + func isNGCRegistry(registry string) bool { + // Never treat a value we cannot safely place in a URL as an NGC host: the + // caller uses this to decide whether to forward the NGC API key. + if !isBareRegistryHost(registry) { + return false + } host := registry // Strip port if present (e.g. nvcr.io:5000 -> nvcr.io). if h, _, err := net.SplitHostPort(registry); err == nil { diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go index 88b5970441..d528c4a174 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go @@ -463,3 +463,40 @@ func TestExchangeNGCBearerToken_RejectsNonNGCRegistry(t *testing.T) { require.Error(t, err, "non-NGC registry must be rejected without issuing a request") assert.Contains(t, err.Error(), "non-NGC registry") } + +// The registry string is concatenated into "https://" + registry + "/...", so a +// suffix match alone is not enough to authorize forwarding the NGC API key: +// "evil.com/x.nvcr.io" ends with a trusted suffix but parses to host evil.com. +func TestIsNGCRegistry_RejectsHostConfusion(t *testing.T) { + for _, tc := range []struct { + registry string + want bool + why string + }{ + {"nvcr.io", true, "the canonical host"}, + {"stg.nvcr.io", true, "a real subdomain"}, + {"evil.com/x.nvcr.io", false, "path component: the request host is evil.com"}, + {"evil.com@nvcr.io", false, "userinfo: not a bare host"}, + {"nvcr.io?x=.nvcr.io", false, "query truncates the host"}, + {"nvcr.io#.nvcr.io", false, "fragment truncates the host"}, + {"nvcr.io.evil.com", false, "deceptive suffix"}, + {"nvcr.io evil.com", false, "whitespace"}, + } { + assert.Equal(t, tc.want, isNGCRegistry(tc.registry), + "isNGCRegistry(%q): %s", tc.registry, tc.why) + } +} + +// A non-bare registry must never reach the NGC token exchange, which attaches +// the API key with basic auth. +func TestExchangeNGCBearerToken_RejectsHostConfusion(t *testing.T) { + t.Setenv("NGC_API_KEY", "test-key") + rec := &recordingTransport{inner: http.DefaultTransport} + client := &http.Client{Transport: rec} + + _, err := exchangeNGCBearerToken(context.Background(), client, "evil.com/x.nvcr.io", "repo/img") + + require.Error(t, err) + assert.Empty(t, rec.withAuth, "the NGC API key must not be sent to a confused host") + assert.Empty(t, rec.requests, "no request may be issued at all") +} From 96d08657699df40ee7ab583d5784149bdffd08e1 Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 15 Sep 2026 18:40:19 +0530 Subject: [PATCH 23/55] fix(nvcf-cli): give validator RBAC an unguessable per-run name and reject malformed ports --- .../internal/selfhosted/clustervalidator.go | 206 +++++++-------- .../selfhosted/clustervalidator_test.go | 238 ++++++------------ 2 files changed, 187 insertions(+), 257 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 066223806c..314cea3597 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -19,6 +19,8 @@ package selfhosted import ( "context" + cryptorand "crypto/rand" + "encoding/hex" "fmt" "io" "net" @@ -43,6 +45,9 @@ const ( clusterValidatorPollInterval = 2 * time.Second clusterValidatorTTLSeconds = int32(600) clusterValidatorHintURL = "https://docs.nvidia.com/nvcf/self-managed-clusters#cluster-validator" + // orphanValidatorRBACTTL is the minimum age before leftover validator RBAC + // is reclaimed. Must exceed the validator timeout so a live run is never hit. + orphanValidatorRBACTTL = 30 * time.Minute ) // Vars (not consts) so tests can shorten without the full production budget. @@ -146,7 +151,14 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image } }() - if err := ensureClusterValidatorRBAC(vctx, client, role); err != nil { + // Random per-run identity for the SA/ClusterRole/ClusterRoleBinding, so a + // predictable name cannot be pre-created by someone else and then bound to + // the validator's cluster-wide permissions. + runID, err := newValidatorRunID() + if err != nil { + return ClusterValidatorResult{Err: err} + } + if err := ensureClusterValidatorRBAC(vctx, client, role, runID); err != nil { return ClusterValidatorResult{Err: fmt.Errorf("bootstrapping validator RBAC: %w", err)} } // Remove the ClusterRole and ClusterRoleBinding to minimize the window in @@ -154,7 +166,7 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image // expects to inspect the Job, so the RBAC stays either way. defer func() { if !noCleanup && !podMayBeRunning { - sweepClusterValidatorRBAC(context.Background(), client, role) + sweepClusterValidatorRBAC(context.Background(), client, role, runID) } }() @@ -173,11 +185,12 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image } } + sweepOrphanClusterValidatorRBAC(vctx, client, orphanValidatorRBACTTL) sweepPriorClusterValidatorJobs(vctx, client, role) jobName := fmt.Sprintf("%s-%d", clusterValidatorName, time.Now().UnixNano()) if _, err := client.BatchV1().Jobs(clusterValidatorNamespace).Create( - vctx, buildClusterValidatorJob(jobName, image, pullSecret, role, noCleanup), metav1.CreateOptions{}, + vctx, buildClusterValidatorJob(jobName, image, pullSecret, role, runID, noCleanup), metav1.CreateOptions{}, ); err != nil { return ClusterValidatorResult{Err: fmt.Errorf("creating validator Job: %w", err)} } @@ -222,9 +235,9 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image // Creates the SA/ClusterRole/ClusterRoleBinding the validator pod runs under, // idempotent via AlreadyExists tolerance. ClusterRole uses update-or-create so // newer CLI versions replace stale rules without the operator needing to delete. -func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, role string) error { +func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, role, runID string) error { labels := clusterValidatorRoleLabels(role) - name := clusterValidatorRBACName(role) + name := clusterValidatorRBACName(role, runID) sa := &corev1.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ @@ -233,24 +246,11 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface Labels: labels, }, } + // No AlreadyExists tolerance: the name carries a random per-run suffix, so + // anything already sitting there was not put there by this run and must not + // be adopted and bound to the validator ClusterRole. if _, err := client.CoreV1().ServiceAccounts(clusterValidatorNamespace).Create(ctx, sa, metav1.CreateOptions{}); err != nil { - if !apierrors.IsAlreadyExists(err) { - return fmt.Errorf("create service account: %w", err) - } - // Do not adopt a ServiceAccount we did not create. The ClusterRoleBinding - // below would bind it to the validator ClusterRole, handing whoever - // controls that account cluster-wide create/delete on namespaces, pods, - // services and daemonsets. - existing, getErr := client.CoreV1().ServiceAccounts(clusterValidatorNamespace).Get(ctx, name, metav1.GetOptions{}) - if getErr != nil { - return fmt.Errorf("get existing service account: %w", getErr) - } - if !hasValidatorManagedLabels(existing.Labels) { - return fmt.Errorf( - "refusing to bind ServiceAccount %s/%s which is not managed by nvcf-cli; "+ - "remove it or run against a cluster where the name is free", - clusterValidatorNamespace, name) - } + return fmt.Errorf("create service account: %w", err) } cr := &rbacv1.ClusterRole{ @@ -277,27 +277,11 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface {NonResourceURLs: []string{"/readyz", "/version", "/healthz"}, Verbs: []string{"get"}}, }, } - // Update-or-Create so a future CLI version's expanded rules replace the - // old set; AlreadyExists tolerance alone would silently keep stale rules. - if existing, err := client.RbacV1().ClusterRoles().Get(ctx, name, metav1.GetOptions{}); err == nil { - // Do not rewrite the rules of a ClusterRole we do not own: this is a - // cluster-scoped privilege object, and an operator-owned one with a - // colliding name would silently have its permissions replaced. - if !hasValidatorManagedLabels(existing.Labels) { - return fmt.Errorf( - "refusing to modify ClusterRole %s which is not managed by nvcf-cli", name) - } - existing.Rules = cr.Rules - existing.Labels = cr.Labels - if _, err := client.RbacV1().ClusterRoles().Update(ctx, existing, metav1.UpdateOptions{}); err != nil { - return fmt.Errorf("update cluster role: %w", err) - } - } else if apierrors.IsNotFound(err) { - if _, err := client.RbacV1().ClusterRoles().Create(ctx, cr, metav1.CreateOptions{}); err != nil && !apierrors.IsAlreadyExists(err) { - return fmt.Errorf("create cluster role: %w", err) - } - } else { - return fmt.Errorf("get cluster role: %w", err) + // Create only, for the same reason as the ServiceAccount above. The name is + // unique per run, so there are no stale rules from an older CLI to refresh + // and nothing legitimate to overwrite. + if _, err := client.RbacV1().ClusterRoles().Create(ctx, cr, metav1.CreateOptions{}); err != nil { + return fmt.Errorf("create cluster role: %w", err) } crb := &rbacv1.ClusterRoleBinding{ @@ -313,53 +297,13 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface Name: name, }, } + // Create only, same reasoning as above. if _, err := client.RbacV1().ClusterRoleBindings().Create(ctx, crb, metav1.CreateOptions{}); err != nil { - if !apierrors.IsAlreadyExists(err) { - return fmt.Errorf("create cluster role binding: %w", err) - } - existing, getErr := client.RbacV1().ClusterRoleBindings().Get(ctx, name, metav1.GetOptions{}) - if getErr != nil { - return fmt.Errorf("get existing cluster role binding: %w", getErr) - } - // An unowned binding with this name may point anywhere, or bind subjects - // we never intended, so never leave it in place and assume it is ours. - if !hasValidatorManagedLabels(existing.Labels) { - return fmt.Errorf( - "refusing to reuse ClusterRoleBinding %s which is not managed by nvcf-cli; "+ - "remove it or run against a cluster where the name is free", name) - } - // Ours, but from an older CLI whose RoleRef or subjects differ. RoleRef - // is immutable, so replace rather than update. - if !clusterRoleBindingMatches(existing, crb) { - if delErr := client.RbacV1().ClusterRoleBindings().Delete(ctx, name, metav1.DeleteOptions{}); delErr != nil && - !apierrors.IsNotFound(delErr) { - return fmt.Errorf("replace stale cluster role binding: %w", delErr) - } - if _, cErr := client.RbacV1().ClusterRoleBindings().Create(ctx, crb, metav1.CreateOptions{}); cErr != nil { - return fmt.Errorf("recreate cluster role binding: %w", cErr) - } - } + return fmt.Errorf("create cluster role binding: %w", err) } return nil } -// clusterRoleBindingMatches reports whether an existing binding already grants -// exactly what we intend: the same ClusterRole, to the same single subject. -func clusterRoleBindingMatches(existing, want *rbacv1.ClusterRoleBinding) bool { - if existing.RoleRef != want.RoleRef { - return false - } - if len(existing.Subjects) != len(want.Subjects) { - return false - } - for i := range want.Subjects { - if existing.Subjects[i] != want.Subjects[i] { - return false - } - } - return true -} - func clusterValidatorLabels() map[string]string { return map[string]string{ "app.kubernetes.io/name": clusterValidatorAppLabel, @@ -394,8 +338,44 @@ func validatorConfigNameForRole(role string) string { // --no-cleanup is not set) to close the window where the elevated ClusterRole // exists. The next run recreates them via ensureClusterValidatorRBAC. // Errors are swallowed: stale RBAC is preferable to failing the result. -func sweepClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, role string) { - name := clusterValidatorRBACName(role) +// sweepOrphanClusterValidatorRBAC removes validator RBAC left behind by a run +// that died before its deferred cleanup (SIGKILL, OOM, lost terminal). +// +// Needed because the names are random per run: a fixed name self-healed by +// being reused, these would accumulate. Only objects carrying our labels and +// older than the TTL are removed, so a concurrent run is never disturbed. +func sweepOrphanClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, ttl time.Duration) { + selector := fmt.Sprintf("app.kubernetes.io/name=%s,app.kubernetes.io/managed-by=nvcf-cli", + clusterValidatorAppLabel) + cutoff := time.Now().Add(-ttl) + opts := metav1.ListOptions{LabelSelector: selector} + + if l, err := client.RbacV1().ClusterRoleBindings().List(ctx, opts); err == nil { + for i := range l.Items { + if o := &l.Items[i]; o.CreationTimestamp.Before(&metav1.Time{Time: cutoff}) { + _ = client.RbacV1().ClusterRoleBindings().Delete(ctx, o.Name, metav1.DeleteOptions{}) + } + } + } + if l, err := client.RbacV1().ClusterRoles().List(ctx, opts); err == nil { + for i := range l.Items { + if o := &l.Items[i]; o.CreationTimestamp.Before(&metav1.Time{Time: cutoff}) { + _ = client.RbacV1().ClusterRoles().Delete(ctx, o.Name, metav1.DeleteOptions{}) + } + } + } + sa := client.CoreV1().ServiceAccounts(clusterValidatorNamespace) + if l, err := sa.List(ctx, opts); err == nil { + for i := range l.Items { + if o := &l.Items[i]; o.CreationTimestamp.Before(&metav1.Time{Time: cutoff}) { + _ = sa.Delete(ctx, o.Name, metav1.DeleteOptions{}) + } + } + } +} + +func sweepClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, role, runID string) { + name := clusterValidatorRBACName(role, runID) // Delete by name, but only what we own. These are cluster-scoped objects // and the errors here are swallowed, so an operator-owned ClusterRole with @@ -466,17 +446,36 @@ const clusterValidatorNoConfigName = "cluster-validator-no-config" const clusterValidatorRoleLabel = "nvcf.nvidia.com/validator-role" // clusterValidatorRBACName returns the ServiceAccount / ClusterRole / -// ClusterRoleBinding name for a role. +// ClusterRoleBinding name for one run of one role. +// +// The runID is random per run, which is what makes the name safe to create. +// A predictable name can be squatted: the managed labels are three public +// constants, so anyone who can create a ServiceAccount in the probe namespace +// could pre-create one carrying them, and a label check alone would then adopt +// it and bind it to the validator ClusterRole. With an unguessable name there +// is no collision to adopt, so the resources are only ever created by us. // -// Per-role names matter because ModeSplit runs both validators concurrently, -// and the two kubecontexts can resolve to the same cluster. With one shared -// name the first run to finish deletes the RBAC out from under the other run's -// pod, which then fails every API call with "forbidden". -func clusterValidatorRBACName(role string) string { - if role == "" { - return clusterValidatorName - } - return clusterValidatorName + "-" + role +// Per-role naming also matters because ModeSplit runs both validators +// concurrently against contexts that can resolve to the same cluster. +func clusterValidatorRBACName(role, runID string) string { + name := clusterValidatorName + if role != "" { + name += "-" + role + } + if runID != "" { + name += "-" + runID + } + return name +} + +// newValidatorRunID returns an unguessable suffix for this run's RBAC names. +// crypto/rand, not math/rand: a predictable value would defeat the point. +func newValidatorRunID() (string, error) { + b := make([]byte, 5) + if _, err := cryptorand.Read(b); err != nil { + return "", fmt.Errorf("generating run id: %w", err) + } + return hex.EncodeToString(b), nil } // controlPlaneValidatorConfigTemplate is the baseline network-check ConfigMap for @@ -586,12 +585,15 @@ func parseRegistryHostPort(s string) (host string, port int) { return s, 443 } if p == "" { - // Trailing colon with no port digit (e.g. "nvcr.io:"). - return h, 443 + // Trailing colon with no port digit (e.g. "nvcr.io:") is the same typo. + return "", 0 } n, err := strconv.Atoi(p) if err != nil || n <= 0 || n > 65535 { - return h, 443 + // An explicit but unparseable port is a typo, not a request for 443. + // Silently probing a different endpoint than configured would report a + // result for something the operator never asked about. + return "", 0 } return h, n } @@ -599,10 +601,10 @@ func parseRegistryHostPort(s string) (host string, port int) { // buildClusterValidatorJob creates the validator Job. PullIfNotPresent reuses // locally-imported images. VALIDATOR_PREFLIGHT=true skips the summary ConfigMap // write. VALIDATOR_ROLE selects the check set (control-plane vs compute-plane). -func buildClusterValidatorJob(name, image, pullSecret, role string, noCleanup bool) *batchv1.Job { +func buildClusterValidatorJob(name, image, pullSecret, role, runID string, noCleanup bool) *batchv1.Job { backoff := int32(0) podSpec := corev1.PodSpec{ - ServiceAccountName: clusterValidatorRBACName(role), + ServiceAccountName: clusterValidatorRBACName(role, runID), RestartPolicy: corev1.RestartPolicyNever, Containers: []corev1.Container{{ Name: clusterValidatorContainer, diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index 7fd3f22a51..7706dcd866 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -257,40 +257,6 @@ func TestRunClusterValidator_RBACIdempotent(t *testing.T) { assert.True(t, res.Passed) } -// Regression guard: a ClusterRole left over from an older CLI version must -// be refreshed with the current rule set instead of silently kept stale. -func TestRunClusterValidator_RBACRefreshesClusterRoleRules(t *testing.T) { - oldRules := []rbacv1.PolicyRule{ - {APIGroups: []string{""}, Resources: []string{"nodes"}, Verbs: []string{"get"}}, - } - // Labelled as a prior CLI run would have left it: only a ClusterRole we own - // may have its rules rewritten. - client := fake.NewSimpleClientset(&rbacv1.ClusterRole{ - ObjectMeta: metav1.ObjectMeta{Name: clusterValidatorName, Labels: clusterValidatorLabels()}, - Rules: oldRules, - }) - - var jobName atomic.Value - jobName.Store("") - client.PrependReactor("create", "jobs", func(action ktesting.Action) (bool, runtime.Object, error) { - jobName.Store(action.(ktesting.CreateAction).GetObject().(*batchv1.Job).Name) - return false, nil, nil - }) - client.PrependReactor("get", "jobs", func(action ktesting.Action) (bool, runtime.Object, error) { - return jobSucceededReactor(jobName.Load().(string))(action) - }) - client.PrependReactor("list", "pods", podListReactor("")) - - // noCleanup=true so the ClusterRole is not swept before we inspect it. - res := runClusterValidator(context.Background(), client, "test-image:1.0", "", true, "", nil) - require.NoError(t, res.Err) - - got, err := client.RbacV1().ClusterRoles().Get(context.Background(), clusterValidatorName, metav1.GetOptions{}) - require.NoError(t, err) - assert.Greater(t, len(got.Rules), len(oldRules), - "ClusterRole rules must be refreshed to the current set on each run, not kept stale") -} - // TestEnsureClusterValidatorRBAC_WritableResources verifies that the // bootstrapped ClusterRole grants the write verbs required by enforcement // checks (namespace/pod create+delete), probe log reading (pods/log get), @@ -300,9 +266,10 @@ func TestEnsureClusterValidatorRBAC_WritableResources(t *testing.T) { ctx := context.Background() const role = clusterValidatorControlPlaneRole - require.NoError(t, ensureClusterValidatorRBAC(ctx, client, role)) + const runID = "testrunid" + require.NoError(t, ensureClusterValidatorRBAC(ctx, client, role, runID)) - cr, err := client.RbacV1().ClusterRoles().Get(ctx, clusterValidatorRBACName(role), metav1.GetOptions{}) + cr, err := client.RbacV1().ClusterRoles().Get(ctx, clusterValidatorRBACName(role, runID), metav1.GetOptions{}) require.NoError(t, err) type check struct { @@ -511,7 +478,7 @@ func TestRunClusterValidator_ContextCanceled(t *testing.T) { } func TestBuildClusterValidatorJobShape(t *testing.T) { - job := buildClusterValidatorJob("test-job", "img:1", "", "", false) + job := buildClusterValidatorJob("test-job", "img:1", "", "", "runid", false) assert.Equal(t, "test-job", job.Name) assert.Equal(t, clusterValidatorNamespace, job.Namespace) @@ -528,8 +495,8 @@ func TestBuildClusterValidatorJobShape(t *testing.T) { "IfNotPresent so locally-imported images (k3d image import, kind load) are picked up without a registry pull") assert.Equal(t, corev1.RestartPolicyNever, job.Spec.Template.Spec.RestartPolicy, "validator is a one-shot command, not a long-running service") - assert.Equal(t, clusterValidatorName, job.Spec.Template.Spec.ServiceAccountName, - "pod must run under the CLI-bootstrapped SA, not the namespace default") + assert.Equal(t, clusterValidatorRBACName("", "runid"), job.Spec.Template.Spec.ServiceAccountName, + "pod must run under this run's bootstrapped SA, not the namespace default") labels := job.Labels assert.Equal(t, clusterValidatorAppLabel, labels["app.kubernetes.io/name"]) @@ -548,7 +515,7 @@ func TestBuildClusterValidatorJobShape(t *testing.T) { } func TestBuildClusterValidatorJobShape_ValidatorRoleInEnv(t *testing.T) { - job := buildClusterValidatorJob("test-job", "img:1", "", clusterValidatorControlPlaneRole, false) + job := buildClusterValidatorJob("test-job", "img:1", "", clusterValidatorControlPlaneRole, "runid", false) env := map[string]string{} for _, e := range job.Spec.Template.Spec.Containers[0].Env { env[e.Name] = e.Value @@ -558,19 +525,19 @@ func TestBuildClusterValidatorJobShape_ValidatorRoleInEnv(t *testing.T) { } func TestBuildClusterValidatorJobShape_WithPullSecret(t *testing.T) { - job := buildClusterValidatorJob("test-job", "img:1", "nvcr-pull-secret", "", false) + job := buildClusterValidatorJob("test-job", "img:1", "nvcr-pull-secret", "", "runid", false) require.Len(t, job.Spec.Template.Spec.ImagePullSecrets, 1) assert.Equal(t, "nvcr-pull-secret", job.Spec.Template.Spec.ImagePullSecrets[0].Name) } func TestBuildClusterValidatorJobShape_NoPullSecret(t *testing.T) { - job := buildClusterValidatorJob("test-job", "img:1", "", "", false) + job := buildClusterValidatorJob("test-job", "img:1", "", "", "runid", false) assert.Empty(t, job.Spec.Template.Spec.ImagePullSecrets, "empty pull-secret arg must not produce an empty-name ImagePullSecrets entry") } func TestBuildClusterValidatorJobShape_NoCleanup(t *testing.T) { - job := buildClusterValidatorJob("test-job", "img:1", "", "", true) + job := buildClusterValidatorJob("test-job", "img:1", "", "", "runid", true) assert.Nil(t, job.Spec.TTLSecondsAfterFinished, "--no-cleanup must omit TTLSecondsAfterFinished so the Job persists for debugging") } @@ -670,8 +637,13 @@ func TestParseRegistryHostPort(t *testing.T) { // IPv6: net.SplitHostPort handles bracketed literals correctly. {"[::1]:5000", "::1", 5000}, {"[2001:db8::1]:443", "2001:db8::1", 443}, - // Trailing colon with no digit → default to 443. - {"nvcr.io:", "nvcr.io", 443}, + // An explicit but unusable port is a typo, not a request for 443: + // probing a different endpoint than configured reports a result for + // something the operator never asked about. + {"nvcr.io:", "", 0}, + {"nvcr.io:abc", "", 0}, + {"nvcr.io:0", "", 0}, + {"nvcr.io:70000", "", 0}, } for _, tt := range tests { t.Run(tt.in, func(t *testing.T) { @@ -697,64 +669,6 @@ func alreadyExistsReactor(resource, name string) ktesting.ReactionFunc { } } -// ModeSplit runs both validators concurrently, and the two kubecontexts can -// resolve to the same cluster. With one shared RBAC name the first run to -// finish deletes the ServiceAccount, ClusterRole and binding out from under the -// other run's pod, which then fails every API call with "forbidden". -func TestClusterValidatorRBAC_IsScopedPerRole(t *testing.T) { - client := fake.NewSimpleClientset() - ctx := context.Background() - - cpName := clusterValidatorRBACName(clusterValidatorControlPlaneRole) - gpuName := clusterValidatorRBACName("compute-plane") - require.NotEqual(t, cpName, gpuName, "each role needs its own RBAC identity") - - require.NoError(t, ensureClusterValidatorRBAC(ctx, client, clusterValidatorControlPlaneRole)) - require.NoError(t, ensureClusterValidatorRBAC(ctx, client, "compute-plane")) - - // Sweeping one role must leave the other's RBAC intact. - sweepClusterValidatorRBAC(ctx, client, clusterValidatorControlPlaneRole) - - _, err := client.RbacV1().ClusterRoles().Get(ctx, cpName, metav1.GetOptions{}) - assert.True(t, apierrors.IsNotFound(err), "the swept role's ClusterRole must be gone") - - _, err = client.RbacV1().ClusterRoles().Get(ctx, gpuName, metav1.GetOptions{}) - assert.NoError(t, err, "the other role's ClusterRole must survive") - - _, err = client.CoreV1().ServiceAccounts(clusterValidatorNamespace).Get(ctx, gpuName, metav1.GetOptions{}) - assert.NoError(t, err, "the other role's ServiceAccount must survive") -} - -// A ClusterRole is a cluster-scoped privilege object. An operator-owned one with -// a colliding name must not have its rules rewritten, and the sweep must not -// delete it. -func TestClusterValidatorRBAC_RefusesUnmanagedClusterRole(t *testing.T) { - ctx := context.Background() - const role = clusterValidatorControlPlaneRole - name := clusterValidatorRBACName(role) - - operatorRules := []rbacv1.PolicyRule{ - {APIGroups: []string{""}, Resources: []string{"pods"}, Verbs: []string{"get"}}, - } - client := fake.NewSimpleClientset(&rbacv1.ClusterRole{ - ObjectMeta: metav1.ObjectMeta{Name: name, Labels: map[string]string{"owner": "operator"}}, - Rules: operatorRules, - }) - - err := ensureClusterValidatorRBAC(ctx, client, role) - require.Error(t, err, "an unmanaged ClusterRole must not be rewritten") - assert.Contains(t, err.Error(), "not managed by nvcf-cli") - - got, getErr := client.RbacV1().ClusterRoles().Get(ctx, name, metav1.GetOptions{}) - require.NoError(t, getErr) - assert.Equal(t, operatorRules, got.Rules, "the operator's rules must be untouched") - - // The sweep must leave it alone too, even though it matches by name. - sweepClusterValidatorRBAC(ctx, client, role) - _, getErr = client.RbacV1().ClusterRoles().Get(ctx, name, metav1.GetOptions{}) - assert.NoError(t, getErr, "the sweep must not delete a ClusterRole it does not own") -} - // The same invariant for the network-check ConfigMap. func TestEnsureClusterValidatorConfig_RefusesUnmanagedConfigMap(t *testing.T) { ctx := context.Background() @@ -778,77 +692,91 @@ func TestEnsureClusterValidatorConfig_RefusesUnmanagedConfigMap(t *testing.T) { "the operator's ConfigMap content must be untouched") } -// An attacker who can create a ServiceAccount in the probe namespace could -// pre-create one under the generated name. Blindly tolerating AlreadyExists -// would then bind that account to the validator ClusterRole, handing whoever -// controls it cluster-wide create/delete on namespaces, pods and daemonsets. -func TestClusterValidatorRBAC_RefusesUnmanagedServiceAccount(t *testing.T) { +// The managed labels are three public constants, so a label check alone cannot +// establish ownership: anyone able to create a ServiceAccount in the probe +// namespace could stamp them. Safety comes from the name being unguessable, so +// there is no predictable object to pre-create and get bound to the validator's +// cluster-wide permissions. +func TestClusterValidatorRBACName_IsUnpredictableAndPerRun(t *testing.T) { + a, err := newValidatorRunID() + require.NoError(t, err) + b, err := newValidatorRunID() + require.NoError(t, err) + + assert.NotEqual(t, a, b, "each run must get a distinct identity") + assert.NotEmpty(t, a) + + const role = clusterValidatorControlPlaneRole + assert.NotEqual(t, clusterValidatorRBACName(role, a), clusterValidatorRBACName(role, b), + "RBAC names must differ per run") + assert.NotEqual(t, clusterValidatorRBACName(role, a), clusterValidatorRBACName("compute-plane", a), + "RBAC names must differ per role within a run") +} + +// Nothing pre-existing is adopted: creation is unconditional, so a squatted +// object surfaces as an error rather than being bound to our ClusterRole. +func TestEnsureClusterValidatorRBAC_DoesNotAdoptExistingObjects(t *testing.T) { ctx := context.Background() const role = clusterValidatorControlPlaneRole - name := clusterValidatorRBACName(role) + const runID = "collide" + name := clusterValidatorRBACName(role, runID) + // Forged managed labels: a label check alone would have adopted this. client := fake.NewSimpleClientset(&corev1.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ - Name: name, Namespace: clusterValidatorNamespace, - Labels: map[string]string{"owner": "someone-else"}, + Name: name, Namespace: clusterValidatorNamespace, Labels: clusterValidatorLabels(), }, }) - err := ensureClusterValidatorRBAC(ctx, client, role) - require.Error(t, err, "an unowned ServiceAccount must not be adopted") - assert.Contains(t, err.Error(), "not managed by nvcf-cli") + err := ensureClusterValidatorRBAC(ctx, client, role, runID) + require.Error(t, err, "a pre-existing object must not be adopted, forged labels or not") _, bindErr := client.RbacV1().ClusterRoleBindings().Get(ctx, name, metav1.GetOptions{}) assert.True(t, apierrors.IsNotFound(bindErr), - "no ClusterRoleBinding may be created for a ServiceAccount we do not own") + "no binding may be created when the ServiceAccount was not created by this run") } -// A pre-existing ClusterRoleBinding under our name may bind subjects we never -// intended, or point at a different role. It must not be silently reused. -func TestClusterValidatorRBAC_RefusesUnmanagedClusterRoleBinding(t *testing.T) { +// Random names cannot self-heal by being reused next run, so leftovers from a +// killed run are reclaimed by age. A fresh one must survive: it may belong to a +// run happening right now. +func TestSweepOrphanClusterValidatorRBAC_AgeScoped(t *testing.T) { ctx := context.Background() - const role = clusterValidatorControlPlaneRole - name := clusterValidatorRBACName(role) + old := metav1.NewTime(time.Now().Add(-2 * time.Hour)) + now := metav1.NewTime(time.Now()) - client := fake.NewSimpleClientset(&rbacv1.ClusterRoleBinding{ - ObjectMeta: metav1.ObjectMeta{Name: name, Labels: map[string]string{"owner": "someone-else"}}, - Subjects: []rbacv1.Subject{{ - Kind: rbacv1.ServiceAccountKind, Name: "attacker-sa", Namespace: "default", + client := fake.NewSimpleClientset( + &rbacv1.ClusterRole{ObjectMeta: metav1.ObjectMeta{ + Name: "stale", Labels: clusterValidatorLabels(), CreationTimestamp: old, }}, - RoleRef: rbacv1.RoleRef{APIGroup: rbacv1.GroupName, Kind: "ClusterRole", Name: "cluster-admin"}, - }) - - err := ensureClusterValidatorRBAC(ctx, client, role) - require.Error(t, err, "an unowned ClusterRoleBinding must not be reused") - assert.Contains(t, err.Error(), "not managed by nvcf-cli") + &rbacv1.ClusterRole{ObjectMeta: metav1.ObjectMeta{ + Name: "fresh", Labels: clusterValidatorLabels(), CreationTimestamp: now, + }}, + &rbacv1.ClusterRole{ObjectMeta: metav1.ObjectMeta{ + Name: "theirs", Labels: map[string]string{"owner": "operator"}, CreationTimestamp: old, + }}, + ) - got, getErr := client.RbacV1().ClusterRoleBindings().Get(ctx, name, metav1.GetOptions{}) - require.NoError(t, getErr) - assert.Equal(t, "attacker-sa", got.Subjects[0].Name, "the existing binding must be left untouched") -} + sweepOrphanClusterValidatorRBAC(ctx, client, orphanValidatorRBACTTL) -// A binding we own but from an older CLI can point at a stale RoleRef, which is -// immutable, so it has to be replaced rather than updated. -func TestClusterValidatorRBAC_ReplacesOwnedBindingWithStaleRoleRef(t *testing.T) { - ctx := context.Background() - const role = clusterValidatorControlPlaneRole - name := clusterValidatorRBACName(role) + _, err := client.RbacV1().ClusterRoles().Get(ctx, "stale", metav1.GetOptions{}) + assert.True(t, apierrors.IsNotFound(err), "a leftover past the TTL must be reclaimed") - client := fake.NewSimpleClientset( - &rbacv1.ClusterRoleBinding{ - ObjectMeta: metav1.ObjectMeta{Name: name, Labels: clusterValidatorLabels()}, - Subjects: []rbacv1.Subject{{ - Kind: rbacv1.ServiceAccountKind, Name: "old-name", Namespace: clusterValidatorNamespace, - }}, - RoleRef: rbacv1.RoleRef{APIGroup: rbacv1.GroupName, Kind: "ClusterRole", Name: "old-role"}, - }, - ) + _, err = client.RbacV1().ClusterRoles().Get(ctx, "fresh", metav1.GetOptions{}) + assert.NoError(t, err, "a recent one may belong to a concurrent run") - require.NoError(t, ensureClusterValidatorRBAC(ctx, client, role)) + _, err = client.RbacV1().ClusterRoles().Get(ctx, "theirs", metav1.GetOptions{}) + assert.NoError(t, err, "an unlabelled ClusterRole is not ours to delete") +} - got, err := client.RbacV1().ClusterRoleBindings().Get(ctx, name, metav1.GetOptions{}) - require.NoError(t, err) - assert.Equal(t, name, got.RoleRef.Name, "the stale RoleRef must be replaced with the current one") - require.Len(t, got.Subjects, 1) - assert.Equal(t, name, got.Subjects[0].Name, "the subject must be the current ServiceAccount") +// An explicit but unparseable port is a typo. Silently probing 443 would report +// a result for an endpoint the operator never configured. +func TestParseRegistryHostPort_RejectsMalformedExplicitPort(t *testing.T) { + for _, in := range []string{"registry.example:abc", "registry.example:0", "registry.example:99999", "registry.example:"} { + host, port := parseRegistryHostPort(in) + assert.Empty(t, host, "%q must be rejected, not defaulted", in) + assert.Zero(t, port, "%q must not fall back to a port", in) + } + host, port := parseRegistryHostPort("registry.example") + assert.Equal(t, "registry.example", host, "no explicit port keeps the default") + assert.Equal(t, 443, port) } From cbd2c1ff0105f31989f220fb0c65eb3ced7434ab Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 15 Sep 2026 19:11:53 +0530 Subject: [PATCH 24/55] fix(nvcf-cli): require the generated name before deleting any validator resource --- .../internal/selfhosted/clustervalidator.go | 69 ++++++++++++---- .../selfhosted/clustervalidator_test.go | 82 +++++++++++++------ .../internal/selfhosted/pullsecret_test.go | 32 +++++--- 3 files changed, 128 insertions(+), 55 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 314cea3597..4030172ebd 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -345,21 +345,34 @@ func validatorConfigNameForRole(role string) string { // being reused, these would accumulate. Only objects carrying our labels and // older than the TTL are removed, so a concurrent run is never disturbed. func sweepOrphanClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, ttl time.Duration) { - selector := fmt.Sprintf("app.kubernetes.io/name=%s,app.kubernetes.io/managed-by=nvcf-cli", + // All three managed labels, not two: the component label is part of what + // identifies these as ours. + selector := fmt.Sprintf("app.kubernetes.io/name=%s,app.kubernetes.io/managed-by=nvcf-cli,app.kubernetes.io/component=preflight", clusterValidatorAppLabel) - cutoff := time.Now().Add(-ttl) opts := metav1.ListOptions{LabelSelector: selector} + cutoff := metav1.Time{Time: time.Now().Add(-ttl)} + + // reclaimable requires the generated name as well as the labels and the + // age. Labels alone are three public constants and can be copied onto + // anything, and this deletes cluster-scoped objects with errors swallowed. + reclaimable := func(o metav1.Object) bool { + if !strings.HasPrefix(o.GetName(), clusterValidatorName) { + return false + } + ts := o.GetCreationTimestamp() + return ts.Before(&cutoff) + } if l, err := client.RbacV1().ClusterRoleBindings().List(ctx, opts); err == nil { for i := range l.Items { - if o := &l.Items[i]; o.CreationTimestamp.Before(&metav1.Time{Time: cutoff}) { + if o := &l.Items[i]; reclaimable(o) { _ = client.RbacV1().ClusterRoleBindings().Delete(ctx, o.Name, metav1.DeleteOptions{}) } } } if l, err := client.RbacV1().ClusterRoles().List(ctx, opts); err == nil { for i := range l.Items { - if o := &l.Items[i]; o.CreationTimestamp.Before(&metav1.Time{Time: cutoff}) { + if o := &l.Items[i]; reclaimable(o) { _ = client.RbacV1().ClusterRoles().Delete(ctx, o.Name, metav1.DeleteOptions{}) } } @@ -367,7 +380,7 @@ func sweepOrphanClusterValidatorRBAC(ctx context.Context, client kubernetes.Inte sa := client.CoreV1().ServiceAccounts(clusterValidatorNamespace) if l, err := sa.List(ctx, opts); err == nil { for i := range l.Items { - if o := &l.Items[i]; o.CreationTimestamp.Before(&metav1.Time{Time: cutoff}) { + if o := &l.Items[i]; reclaimable(o) { _ = sa.Delete(ctx, o.Name, metav1.DeleteOptions{}) } } @@ -399,14 +412,22 @@ func sweepClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, func sweepPriorClusterValidatorJobs(ctx context.Context, client kubernetes.Interface, role string) { // Scope to this role: in ModeSingle both roles run against the same // cluster, so an unscoped selector deletes the other role's Job mid-command. - selector := fmt.Sprintf("app.kubernetes.io/name=%s,app.kubernetes.io/managed-by=nvcf-cli,%s=%s", - clusterValidatorAppLabel, clusterValidatorRoleLabel, role) + // + // List-then-delete rather than DeleteCollection: the name has to be checked + // too, which a collection selector cannot express, and the labels alone are + // public constants that anything could carry. + jobs := client.BatchV1().Jobs(clusterValidatorNamespace) + l, err := jobs.List(ctx, metav1.ListOptions{LabelSelector: validatorRoleSelector(role)}) + if err != nil { + return + } propagation := metav1.DeletePropagationBackground - _ = client.BatchV1().Jobs(clusterValidatorNamespace).DeleteCollection( - ctx, - metav1.DeleteOptions{PropagationPolicy: &propagation}, - metav1.ListOptions{LabelSelector: selector}, - ) + for i := range l.Items { + if !strings.HasPrefix(l.Items[i].Name, clusterValidatorName) { + continue + } + _ = jobs.Delete(ctx, l.Items[i].Name, metav1.DeleteOptions{PropagationPolicy: &propagation}) + } } // sweepManagedPullSecrets removes any docker-registry secrets in @@ -418,13 +439,25 @@ func sweepPriorClusterValidatorJobs(ctx context.Context, client kubernetes.Inter // labeled by us and are skipped by the selector. Errors are swallowed: // failing to clean up is preferable to failing the check itself. func sweepManagedPullSecrets(ctx context.Context, client kubernetes.Interface, role string) { - selector := fmt.Sprintf("app.kubernetes.io/name=%s,app.kubernetes.io/managed-by=nvcf-cli,%s=%s", + // Same reasoning as sweepPriorClusterValidatorJobs: the generated name is + // part of the ownership test, not just the labels. + secrets := client.CoreV1().Secrets(clusterValidatorNamespace) + l, err := secrets.List(ctx, metav1.ListOptions{LabelSelector: validatorRoleSelector(role)}) + if err != nil { + return + } + for i := range l.Items { + if !strings.HasPrefix(l.Items[i].Name, validatorPullSecretName) { + continue + } + _ = secrets.Delete(ctx, l.Items[i].Name, metav1.DeleteOptions{}) + } +} + +// validatorRoleSelector matches objects this CLI created for one validator role. +func validatorRoleSelector(role string) string { + return fmt.Sprintf("app.kubernetes.io/name=%s,app.kubernetes.io/managed-by=nvcf-cli,app.kubernetes.io/component=preflight,%s=%s", clusterValidatorAppLabel, clusterValidatorRoleLabel, role) - _ = client.CoreV1().Secrets(clusterValidatorNamespace).DeleteCollection( - ctx, - metav1.DeleteOptions{}, - metav1.ListOptions{LabelSelector: selector}, - ) } // clusterValidatorControlPlaneRole is the role value passed as VALIDATOR_ROLE diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index 7706dcd866..c6c2114d51 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -99,15 +99,6 @@ func podListReactor(waitingReason string) ktesting.ReactionFunc { } } -func hasActionPrefix(actions []ktesting.Action, verb, resource string) bool { - for _, a := range actions { - if a.GetVerb() == verb && a.GetResource().Resource == resource { - return true - } - } - return false -} - func TestRunClusterValidator_EmptyImage(t *testing.T) { // In normal flow the caller gates on a configured image, so this // branch is defensive. Verify it returns a clear error and makes @@ -174,19 +165,20 @@ func TestRunClusterValidator_HappyPath(t *testing.T) { assert.Equal(t, int32(0), res.ExitCode) assert.NotEmpty(t, res.JobName, "JobName must be populated so operators can read logs after the run") - // Sweep must run before create so the singleton invariant holds. + // Sweep must run before create so the singleton invariant holds. The sweep + // lists rather than issuing a DeleteCollection, because the generated name + // has to be checked too and a collection selector cannot express that. actions := client.Actions() - require.True(t, hasActionPrefix(actions, "delete-collection", "jobs"), - "runClusterValidator must sweep prior Jobs before creating the new one") var sweepIdx, createIdx = -1, -1 for i, a := range actions { - if a.GetVerb() == "delete-collection" && a.GetResource().Resource == "jobs" && sweepIdx == -1 { + if a.GetVerb() == "list" && a.GetResource().Resource == "jobs" && sweepIdx == -1 { sweepIdx = i } if a.GetVerb() == "create" && a.GetResource().Resource == "jobs" && createIdx == -1 { createIdx = i } } + require.NotEqual(t, -1, sweepIdx, "runClusterValidator must sweep prior Jobs before creating the new one") assert.Less(t, sweepIdx, createIdx, "sweep must precede create in action sequence") } @@ -737,35 +729,41 @@ func TestEnsureClusterValidatorRBAC_DoesNotAdoptExistingObjects(t *testing.T) { } // Random names cannot self-heal by being reused next run, so leftovers from a -// killed run are reclaimed by age. A fresh one must survive: it may belong to a -// run happening right now. -func TestSweepOrphanClusterValidatorRBAC_AgeScoped(t *testing.T) { +// killed run are reclaimed by age. Two things must survive: anything recent +// (it may belong to a run happening right now) and anything whose name is not +// one we generate, even when it carries our labels. Those labels are three +// public constants, so they can be copied onto anything. +func TestSweepOrphanClusterValidatorRBAC_RequiresNameLabelsAndAge(t *testing.T) { ctx := context.Background() old := metav1.NewTime(time.Now().Add(-2 * time.Hour)) now := metav1.NewTime(time.Now()) + staleName := clusterValidatorRBACName(clusterValidatorControlPlaneRole, "deadbeef01") + freshName := clusterValidatorRBACName("compute-plane", "cafebabe02") client := fake.NewSimpleClientset( &rbacv1.ClusterRole{ObjectMeta: metav1.ObjectMeta{ - Name: "stale", Labels: clusterValidatorLabels(), CreationTimestamp: old, + Name: staleName, Labels: clusterValidatorLabels(), CreationTimestamp: old, }}, &rbacv1.ClusterRole{ObjectMeta: metav1.ObjectMeta{ - Name: "fresh", Labels: clusterValidatorLabels(), CreationTimestamp: now, + Name: freshName, Labels: clusterValidatorLabels(), CreationTimestamp: now, }}, + // Our labels, but not a name we generate: an operator copying the + // labels onto their own ClusterRole must not have it deleted. &rbacv1.ClusterRole{ObjectMeta: metav1.ObjectMeta{ - Name: "theirs", Labels: map[string]string{"owner": "operator"}, CreationTimestamp: old, + Name: "operator-owned-role", Labels: clusterValidatorLabels(), CreationTimestamp: old, }}, ) sweepOrphanClusterValidatorRBAC(ctx, client, orphanValidatorRBACTTL) - _, err := client.RbacV1().ClusterRoles().Get(ctx, "stale", metav1.GetOptions{}) - assert.True(t, apierrors.IsNotFound(err), "a leftover past the TTL must be reclaimed") + _, err := client.RbacV1().ClusterRoles().Get(ctx, staleName, metav1.GetOptions{}) + assert.True(t, apierrors.IsNotFound(err), "a generated name past the TTL must be reclaimed") - _, err = client.RbacV1().ClusterRoles().Get(ctx, "fresh", metav1.GetOptions{}) + _, err = client.RbacV1().ClusterRoles().Get(ctx, freshName, metav1.GetOptions{}) assert.NoError(t, err, "a recent one may belong to a concurrent run") - _, err = client.RbacV1().ClusterRoles().Get(ctx, "theirs", metav1.GetOptions{}) - assert.NoError(t, err, "an unlabelled ClusterRole is not ours to delete") + _, err = client.RbacV1().ClusterRoles().Get(ctx, "operator-owned-role", metav1.GetOptions{}) + assert.NoError(t, err, "matching labels alone must not authorize deleting someone else's object") } // An explicit but unparseable port is a typo. Silently probing 443 would report @@ -780,3 +778,39 @@ func TestParseRegistryHostPort_RejectsMalformedExplicitPort(t *testing.T) { assert.Equal(t, "registry.example", host, "no explicit port keeps the default") assert.Equal(t, 443, port) } + +// The prior-run Job sweep deletes by label plus generated name. Labels alone +// are three public constants, so a Job carrying them under an unrelated name is +// not ours to delete. +func TestSweepPriorClusterValidatorJobs_RequiresGeneratedName(t *testing.T) { + ctx := context.Background() + const role = clusterValidatorControlPlaneRole + ours := clusterValidatorName + "-1700000000" + + client := fake.NewSimpleClientset( + &batchv1.Job{ObjectMeta: metav1.ObjectMeta{ + Name: ours, Namespace: clusterValidatorNamespace, + Labels: clusterValidatorRoleLabels(role), + }}, + &batchv1.Job{ObjectMeta: metav1.ObjectMeta{ + Name: "operator-owned-job", Namespace: clusterValidatorNamespace, + Labels: clusterValidatorRoleLabels(role), + }}, + &batchv1.Job{ObjectMeta: metav1.ObjectMeta{ + Name: clusterValidatorName + "-9999999999", Namespace: clusterValidatorNamespace, + Labels: clusterValidatorRoleLabels("compute-plane"), + }}, + ) + + sweepPriorClusterValidatorJobs(ctx, client, role) + + jobs := client.BatchV1().Jobs(clusterValidatorNamespace) + _, err := jobs.Get(ctx, ours, metav1.GetOptions{}) + assert.True(t, apierrors.IsNotFound(err), "this role's prior Job must be swept") + + _, err = jobs.Get(ctx, "operator-owned-job", metav1.GetOptions{}) + assert.NoError(t, err, "matching labels alone must not authorize deleting someone else's Job") + + _, err = jobs.Get(ctx, clusterValidatorName+"-9999999999", metav1.GetOptions{}) + assert.NoError(t, err, "the other role's Job must survive") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go index 80aa267b6a..80cc3b3ae8 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go @@ -422,29 +422,35 @@ func TestResolveValidatorPullSecret_UnparsableImage(t *testing.T) { // Job is still pulling, which the kubelet reports as // FailedToRetrieveImagePullSecret. // -// The sweep is asserted through a reactor rather than by observing deletions: -// the fake clientset implements DeleteCollection as a no-op, so a state-based -// assertion here would pass whatever the selector said. +// State-assertable now that the sweep lists and deletes individually; the fake +// clientset implements DeleteCollection as a no-op. func TestManagedPullSecret_IsScopedPerRole(t *testing.T) { ctx := context.Background() - cpName := validatorPullSecretRoleName(clusterValidatorControlPlaneRole) gpuName := validatorPullSecretRoleName("compute-plane") require.NotEqual(t, cpName, gpuName, "each role needs its own managed pull secret") + cfg := dockerConfigBlob(t, "private.registry.test", "user", "pass") client := fake.NewSimpleClientset() - var gotSelector string - client.PrependReactor("delete-collection", "secrets", - func(action ktesting.Action) (bool, runtime.Object, error) { - gotSelector = action.(ktesting.DeleteCollectionAction). - GetListRestrictions().Labels.String() - return true, nil, nil - }) + require.NoError(t, writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, + cpName, clusterValidatorControlPlaneRole, cfg)) + require.NoError(t, writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, + gpuName, "compute-plane", cfg)) + // Our labels, but not a name we generate: must survive. + require.NoError(t, writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, + "operator-owned-secret", clusterValidatorControlPlaneRole, cfg)) sweepManagedPullSecrets(ctx, client, clusterValidatorControlPlaneRole) - assert.Contains(t, gotSelector, clusterValidatorRoleLabel+"="+clusterValidatorControlPlaneRole, - "the sweep must select on the role so it cannot delete the other role's secret") + secrets := client.CoreV1().Secrets(clusterValidatorNamespace) + _, err := secrets.Get(ctx, cpName, metav1.GetOptions{}) + assert.True(t, apierrors.IsNotFound(err), "this role's managed secret must be swept") + + _, err = secrets.Get(ctx, gpuName, metav1.GetOptions{}) + assert.NoError(t, err, "the other role's secret must survive") + + _, err = secrets.Get(ctx, "operator-owned-secret", metav1.GetOptions{}) + assert.NoError(t, err, "matching labels alone must not authorize deleting someone else's secret") } // The managed labels a created secret carries must satisfy the sweep selector From ca3a28c6030347482bcc212ac3503b721511769f Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 15 Sep 2026 19:32:38 +0530 Subject: [PATCH 25/55] refactor(nvcf-cli): derive validator label selectors from the managed label maps --- .../nvcf-cli/internal/selfhosted/BUILD.bazel | 1 + .../internal/selfhosted/clustervalidator.go | 23 ++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel b/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel index 8adbcd82e0..730c3ebb46 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel +++ b/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel @@ -46,6 +46,7 @@ go_library( "@io_k8s_api//rbac/v1:rbac", "@io_k8s_apimachinery//pkg/api/errors", "@io_k8s_apimachinery//pkg/apis/meta/v1:meta", + "@io_k8s_apimachinery//pkg/labels", "@io_k8s_client_go//kubernetes", "@io_k8s_client_go//rest", "@io_k8s_client_go//tools/clientcmd", diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 4030172ebd..926532b994 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -34,6 +34,7 @@ import ( rbacv1 "k8s.io/api/rbac/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" "k8s.io/client-go/kubernetes" ) @@ -236,14 +237,14 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image // idempotent via AlreadyExists tolerance. ClusterRole uses update-or-create so // newer CLI versions replace stale rules without the operator needing to delete. func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, role, runID string) error { - labels := clusterValidatorRoleLabels(role) + roleLabels := clusterValidatorRoleLabels(role) name := clusterValidatorRBACName(role, runID) sa := &corev1.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: clusterValidatorNamespace, - Labels: labels, + Labels: roleLabels, }, } // No AlreadyExists tolerance: the name carries a random per-run suffix, so @@ -254,7 +255,7 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface } cr := &rbacv1.ClusterRole{ - ObjectMeta: metav1.ObjectMeta{Name: name, Labels: labels}, + ObjectMeta: metav1.ObjectMeta{Name: name, Labels: roleLabels}, Rules: []rbacv1.PolicyRule{ // Read-only: cluster inventory and configuration. {APIGroups: []string{""}, Resources: []string{"nodes", "configmaps"}, Verbs: []string{"get", "list", "watch"}}, @@ -285,7 +286,7 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface } crb := &rbacv1.ClusterRoleBinding{ - ObjectMeta: metav1.ObjectMeta{Name: name, Labels: labels}, + ObjectMeta: metav1.ObjectMeta{Name: name, Labels: roleLabels}, Subjects: []rbacv1.Subject{{ Kind: rbacv1.ServiceAccountKind, Name: name, @@ -345,11 +346,10 @@ func validatorConfigNameForRole(role string) string { // being reused, these would accumulate. Only objects carrying our labels and // older than the TTL are removed, so a concurrent run is never disturbed. func sweepOrphanClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, ttl time.Duration) { - // All three managed labels, not two: the component label is part of what - // identifies these as ours. - selector := fmt.Sprintf("app.kubernetes.io/name=%s,app.kubernetes.io/managed-by=nvcf-cli,app.kubernetes.io/component=preflight", - clusterValidatorAppLabel) - opts := metav1.ListOptions{LabelSelector: selector} + // Derived from the same map the objects are stamped with, so the selector + // cannot drift from the labels. All three managed labels are required: the + // component label is part of what identifies these as ours. + opts := metav1.ListOptions{LabelSelector: labels.SelectorFromSet(clusterValidatorLabels()).String()} cutoff := metav1.Time{Time: time.Now().Add(-ttl)} // reclaimable requires the generated name as well as the labels and the @@ -455,9 +455,10 @@ func sweepManagedPullSecrets(ctx context.Context, client kubernetes.Interface, r } // validatorRoleSelector matches objects this CLI created for one validator role. +// Derived from clusterValidatorRoleLabels so it cannot drift from the labels +// actually stamped on the objects. func validatorRoleSelector(role string) string { - return fmt.Sprintf("app.kubernetes.io/name=%s,app.kubernetes.io/managed-by=nvcf-cli,app.kubernetes.io/component=preflight,%s=%s", - clusterValidatorAppLabel, clusterValidatorRoleLabel, role) + return labels.SelectorFromSet(clusterValidatorRoleLabels(role)).String() } // clusterValidatorControlPlaneRole is the role value passed as VALIDATOR_ROLE From 46bac78c7357345a1b25d9c8401a3d6dfe344e6e Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 15 Sep 2026 20:00:35 +0530 Subject: [PATCH 26/55] fix(nvcf-cli): run split-mode preflight only for the roles the flags target --- src/clis/nvcf-cli/cmd/self_hosted_check.go | 112 +++++++++++------ .../nvcf-cli/cmd/self_hosted_check_test.go | 113 ++++++++++++++++++ .../nvcf-cli/internal/selfhosted/preflight.go | 11 +- 3 files changed, 197 insertions(+), 39 deletions(-) diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index ce9e436ca7..c87220f74e 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -392,6 +392,32 @@ func controlPlaneIsTargeted(mode kubectx.Mode) bool { return checkControlPlane || checkAll || (checkPre && mode == kubectx.ModeSingle) } +// The *IsVisited pair reports whether a cluster should be contacted at all, +// which is broader than whether its role-specific check set runs. --pre in +// ModeSplit visits both clusters for the shared pre-install checks (stale +// namespaces) without targeting either role, so the targeting predicates alone +// cannot gate the dispatch. In ModeSingle --pre already targets both roles and +// these are equivalent to their *IsTargeted counterparts. +func computePlaneIsVisited(mode kubectx.Mode) bool { + return computePlaneIsTargeted(mode) || checkPre +} + +func controlPlaneIsVisited(mode kubectx.Mode) bool { + return controlPlaneIsTargeted(mode) || checkPre +} + +// withoutHostLocalChecks returns a copy of cfg with the inputs for the checks +// that run on the operator's machine cleared: local tool versions and registry +// credentials. Neither contacts a cluster, so exactly one role invocation must +// carry them. Without this both roles emit the same check IDs, which +// double-counts them in the pass/fail totals and repeats them in --json. +func withoutHostLocalChecks(cfg selfhosted.PreflightConfig) selfhosted.PreflightConfig { + cfg.Tools = nil + cfg.Registries = nil + cfg.RegistryChecker = nil + return cfg +} + // maybeShowClusterValidatorLogs prints the cleaned cluster-validator transcript // to the given writer when --show-logs is set, framed by markers so operators // can find it in mixed CLI output. Silent no-op when: @@ -504,43 +530,61 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin cpClusterValidator = newClusterValidatorForSelfHosted() } + // Local tool versions and registry credentials are checked on the + // operator's machine, so they belong to one invocation only. The control + // plane carries them when it runs; otherwise the compute plane does, so + // neither is silently dropped by a compute-plane-only invocation. + runControlPlane := controlPlaneIsVisited(mode) + runComputePlane := computePlaneIsVisited(mode) + cpCfg, gpuCfg := cfg, cfg + if runControlPlane { + gpuCfg = withoutHostLocalChecks(cfg) + } + switch mode { case kubectx.ModeSplit: // Run both roles in parallel; each gets its own kubeconfig context. + // Each dispatch is gated: with only one role selected the other + // cluster is never contacted, so its stale-namespace probe cannot + // report a failure the operator did not ask about. var ( cpResults []selfhosted.CheckResult gpuResults []selfhosted.CheckResult ) eg, egCtx := errgroup.WithContext(ctx) - eg.Go(func() error { - rc := selfhosted.RoleConfig{ - KubeContext: selfHostedControlPlaneContext, - ClusterValidator: cpClusterValidator, - ClusterValidatorImage: clusterValidatorImage, - ClusterValidatorPullSecret: checkClusterValidatorPullSecret, - ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, - ClusterValidatorRegistries: registries, - StaleNamespaceProber: staleNSProber, - StackDir: localStackDir(selfHostedControlPlaneStack), - } - cpResults = selfhosted.RunPreflightForRole(egCtx, cfg, selfhosted.RoleControlPlane, rc, sink) - return nil - }) - eg.Go(func() error { - rc := selfhosted.RoleConfig{ - KubeContext: selfHostedComputePlaneContext, - SISURL: icmsURL, - InotifyProber: inotifyProber, - ClusterValidator: clusterValidator, - ClusterValidatorImage: clusterValidatorImage, - ClusterValidatorPullSecret: checkClusterValidatorPullSecret, - ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, - StaleNamespaceProber: staleNSProber, - StackDir: localStackDir(selfHostedComputePlaneStack), - } - gpuResults = selfhosted.RunPreflightForRole(egCtx, cfg, selfhosted.RoleComputePlane, rc, sink) - return nil - }) + if runControlPlane { + eg.Go(func() error { + rc := selfhosted.RoleConfig{ + KubeContext: selfHostedControlPlaneContext, + ClusterValidator: cpClusterValidator, + ClusterValidatorImage: clusterValidatorImage, + ClusterValidatorPullSecret: checkClusterValidatorPullSecret, + ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, + ClusterValidatorRegistries: registries, + StaleNamespaceProber: staleNSProber, + StackDir: localStackDir(selfHostedControlPlaneStack), + } + cpResults = selfhosted.RunPreflightForRole(egCtx, cpCfg, selfhosted.RoleControlPlane, rc, sink) + return nil + }) + } + if runComputePlane { + eg.Go(func() error { + rc := selfhosted.RoleConfig{ + KubeContext: selfHostedComputePlaneContext, + SISURL: icmsURL, + InotifyProber: inotifyProber, + ClusterValidator: clusterValidator, + ClusterValidatorImage: clusterValidatorImage, + ClusterValidatorPullSecret: checkClusterValidatorPullSecret, + ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, + StaleNamespaceProber: staleNSProber, + StackDir: localStackDir(selfHostedComputePlaneStack), + } + gpuResults = selfhosted.RunPreflightForRole(egCtx, gpuCfg, selfhosted.RoleComputePlane, rc, sink) + return nil + }) + } _ = eg.Wait() return append(cpResults, gpuResults...) @@ -553,13 +597,13 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin // second exec-credential-plugin prompt. staleForControlPlane := staleNSProber staleForComputePlane := staleNSProber - if controlPlaneIsTargeted(mode) { + if runControlPlane { staleForComputePlane = nil } else { staleForControlPlane = nil } - if controlPlaneIsTargeted(mode) { + if runControlPlane { cpRC := selfhosted.RoleConfig{ SISURL: icmsURL, ClusterValidator: cpClusterValidator, @@ -571,9 +615,9 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin StackDir: localStackDir(selfHostedControlPlaneStack), } results = append(results, - selfhosted.RunPreflightForRole(ctx, cfg, selfhosted.RoleControlPlane, cpRC, sink)...) + selfhosted.RunPreflightForRole(ctx, cpCfg, selfhosted.RoleControlPlane, cpRC, sink)...) } - if computePlaneIsTargeted(mode) { + if runComputePlane { gpuRC := selfhosted.RoleConfig{ SISURL: icmsURL, InotifyProber: inotifyProber, @@ -585,7 +629,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin StackDir: localStackDir(selfHostedComputePlaneStack), } results = append(results, - selfhosted.RunPreflightForRole(ctx, cfg, selfhosted.RoleComputePlane, gpuRC, sink)...) + selfhosted.RunPreflightForRole(ctx, gpuCfg, selfhosted.RoleComputePlane, gpuRC, sink)...) } return results } diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go index 38fed5637d..cca9e83dd9 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go @@ -563,3 +563,116 @@ func parseJSONLLines(t *testing.T, s string) []map[string]any { } return out } + +// TestPlaneIsVisited covers the dispatch predicates, which are broader than +// the targeting predicates: --pre in ModeSplit visits both clusters for the +// shared pre-install checks without targeting either role. Gating the split +// dispatch on the targeting predicates alone would make --pre a no-op there. +func TestPlaneIsVisited(t *testing.T) { + t.Cleanup(func() { + checkPre = false + checkControlPlane = false + checkComputePlane = false + checkAll = false + }) + + tests := []struct { + name string + pre, cp, gpu bool + all bool + mode kubectx.Mode + wantCP bool + wantComputeGP bool + }{ + {"--pre split visits both", true, false, false, false, kubectx.ModeSplit, true, true}, + {"--pre single visits both", true, false, false, false, kubectx.ModeSingle, true, true}, + {"--control-plane split skips compute", false, true, false, false, kubectx.ModeSplit, true, false}, + {"--compute-plane split skips control", false, false, true, false, kubectx.ModeSplit, false, true}, + {"--all split visits both", false, false, false, true, kubectx.ModeSplit, true, true}, + {"--control-plane single skips compute", false, true, false, false, kubectx.ModeSingle, true, false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + checkPre, checkControlPlane, checkComputePlane, checkAll = tt.pre, tt.cp, tt.gpu, tt.all + assert.Equal(t, tt.wantCP, controlPlaneIsVisited(tt.mode)) + assert.Equal(t, tt.wantComputeGP, computePlaneIsVisited(tt.mode)) + }) + } +} + +// TestCheck_SplitModeControlPlaneOnlySkipsComputeCluster is the regression +// guard for the dispatch gating: in ModeSplit with only --control-plane, the +// compute cluster must not be contacted at all, so no compute-plane-cluster +// category is emitted. +func TestCheck_SplitModeControlPlaneOnlySkipsComputeCluster(t *testing.T) { + t.Cleanup(func() { + selfHostedJSON = false + selfHostedOutput = "text" + checkControlPlane = false + selfHostedControlPlaneContext = "" + selfHostedComputePlaneContext = "" + }) + + var stderr bytes.Buffer + rootCmd.SetErr(&stderr) + rootCmd.SetOut(&bytes.Buffer{}) + + t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") + rootCmd.SetArgs([]string{"self-hosted", "check", "--control-plane", + "--control-plane-context", "cp-ctx", "--compute-plane-context", "gpu-ctx", + "--skip-cluster-validation", "--json"}) + _ = rootCmd.Execute() + + lines := parseJSONLLines(t, stderr.String()) + require.NotEmpty(t, lines, "expected at least one JSONL line") + + var categories []string + for _, l := range lines[1:] { + if l["event"] == "category_completed" { + if cat, ok := l["category"].(string); ok { + categories = append(categories, cat) + } + } + } + assert.Contains(t, categories, "control-plane-cluster") + assert.NotContains(t, categories, "compute-plane-cluster", + "--control-plane in split mode must not probe the compute cluster") +} + +// TestCheck_HostLocalChecksRunOnce guards against the host-local categories +// being emitted once per role. Local tool versions and registry credentials +// are checked on the operator's machine, so running them for both roles +// repeats the same check IDs in --json and double-counts them in the totals. +func TestCheck_HostLocalChecksRunOnce(t *testing.T) { + t.Cleanup(func() { + selfHostedJSON = false + selfHostedOutput = "text" + checkAll = false + }) + + var stderr bytes.Buffer + rootCmd.SetErr(&stderr) + rootCmd.SetOut(&bytes.Buffer{}) + + t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") + rootCmd.SetArgs([]string{"self-hosted", "check", "--all", "--skip-cluster-validation", "--json"}) + _ = rootCmd.Execute() + + lines := parseJSONLLines(t, stderr.String()) + require.NotEmpty(t, lines, "expected at least one JSONL line") + + counts := map[string]int{} + for _, l := range lines { + if l["event"] != "check_completed" { + continue + } + if id, ok := l["id"].(string); ok && strings.HasPrefix(id, "local-host-tools-") { + counts[id]++ + } + } + require.NotEmpty(t, counts, "expected local-host-tools checks in the stream") + for id, n := range counts { + assert.Equal(t, 1, n, "check %s emitted %d times", id, n) + } +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index 39e1d50d73..86f9d082a0 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -352,11 +352,12 @@ func buildCategories(cfg PreflightConfig, role Role, rc RoleConfig) []categorySp } // Registry credential check runs from the operator's machine — no cluster - // contact needed. Gated on role != RoleComputePlane so the category is - // emitted at most once per invocation: in ModeSingle RunPreflightForRole - // is called for RoleControlPlane then RoleComputePlane sequentially; the - // gate ensures no duplicate check_started/check_completed events. - if role != RoleComputePlane && len(cfg.Registries) > 0 && cfg.RegistryChecker != nil { + // contact needed. RunPreflightForRole is called once per role, so the + // caller clears Registries on every role but one to avoid duplicate + // check_started/check_completed events. Deduplicating on the role here + // instead would drop the check entirely when the control plane does not + // run, which is the case for a compute-plane-only invocation. + if len(cfg.Registries) > 0 && cfg.RegistryChecker != nil { out = append(out, buildRegistryCredentialCategory(cfg)) } From 95e5648ca4c4026ee5c2583757d30876c1b3af9c Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 16 Sep 2026 00:24:30 +0530 Subject: [PATCH 27/55] fix(nvcf-cli): pin preflight remediation hints to the probed kube context --- .../internal/selfhosted/clustervalidator.go | 8 ++- .../selfhosted/clustervalidator_test.go | 20 ++++++- .../nvcf-cli/internal/selfhosted/preflight.go | 54 +++++++++++++++---- .../selfhosted/stale_namespace_test.go | 32 +++++++++++ 4 files changed, 100 insertions(+), 14 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 926532b994..2d40c79803 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -814,9 +814,13 @@ func cleanValidatorOutput(raw string) string { return s + "\n" } -func kubectlLogsHint(jobName string) string { +// Pinned to the context the Job was created in: in ModeSplit the two roles +// run against different clusters, so a bare kubectl command resolves to +// whichever context is current and the hint reports "job not found". +func kubectlLogsHint(kubeContext, jobName string) string { if jobName == "" { return "" } - return fmt.Sprintf("kubectl logs -n %s job/%s --tail=-1", clusterValidatorNamespace, jobName) + return fmt.Sprintf("kubectl%s logs -n %s job/%s --tail=-1", + kubectlContextArg(kubeContext), clusterValidatorNamespace, jobName) } diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index c6c2114d51..3bcc2b9d0d 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -575,15 +575,31 @@ func TestCleanValidatorOutput_EmptyInput(t *testing.T) { } func TestKubectlLogsHint(t *testing.T) { - got := kubectlLogsHint("nvcf-preflight-validator-12345") + got := kubectlLogsHint("", "nvcf-preflight-validator-12345") assert.Equal(t, "kubectl logs -n default job/nvcf-preflight-validator-12345 --tail=-1", got, ) } +// In ModeSplit the two roles run against different clusters, so the hint has +// to name the context the Job was actually created in. +func TestKubectlLogsHint_PinsContext(t *testing.T) { + got := kubectlLogsHint("gpu-ctx", "nvcf-preflight-validator-12345") + assert.Equal(t, + "kubectl --context gpu-ctx logs -n default job/nvcf-preflight-validator-12345 --tail=-1", + got, + ) +} + +func TestKubectlLogsHint_QuotesContext(t *testing.T) { + got := kubectlLogsHint("my ctx", "nvcf-preflight-validator-12345") + assert.Contains(t, got, "--context 'my ctx'", + "a context name with a space must be quoted so the pasted command does not split it") +} + func TestKubectlLogsHint_EmptyJob(t *testing.T) { - assert.Equal(t, "", kubectlLogsHint(""), + assert.Equal(t, "", kubectlLogsHint("gpu-ctx", ""), "empty jobName must produce empty hint so callers can compose detail without conditionals") } diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index 86f9d082a0..aa27e7c7fa 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -593,7 +593,7 @@ func clusterValidatorCheck(cv ClusterValidator, kubeContext, image, pullSecret s Registries: registries, }) r.Logs = result.Logs - r.Detail = clusterValidatorDetail(result.JobName) + r.Detail = clusterValidatorDetail(kubeContext, result.JobName) if result.Err != nil { r.Severity = "warning" @@ -614,8 +614,8 @@ func clusterValidatorCheck(cv ClusterValidator, kubeContext, image, pullSecret s } } -func clusterValidatorDetail(jobName string) string { - hint := kubectlLogsHint(jobName) +func clusterValidatorDetail(kubeContext, jobName string) string { + hint := kubectlLogsHint(kubeContext, jobName) if hint == "" { return "" } @@ -718,6 +718,11 @@ func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namesp emptyShell = append(emptyShell, ns.Name) } } + // Every hint is pinned to the context that was actually probed. + // In split mode the two callers pass different contexts, so a bare + // kubectl command would run against whatever context happens to be + // current, and these hints delete namespaces. + kctl := "kubectl" + kubectlContextArg(kubeContext) var hints []string if len(terminating) > 0 { // spec.finalizers is writable only through the /finalize @@ -726,19 +731,19 @@ func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namesp // --type=merge` prints "patched" and changes nothing. for _, ns := range terminating { hints = append(hints, fmt.Sprintf( - "clear namespace finalizers on %s: kubectl get ns %s -o json | "+ - "jq '.spec.finalizers=[]' | kubectl replace --raw /api/v1/namespaces/%s/finalize -f -", - ns, ns, ns)) + "clear namespace finalizers on %s: %s get ns %s -o json | "+ + "jq '.spec.finalizers=[]' | %s replace --raw /api/v1/namespaces/%s/finalize -f -", + ns, kctl, ns, kctl, ns)) } hints = append(hints, "if it stays Terminating, the deadlock is on objects inside it: "+ - "kubectl api-resources --verbs=list --namespaced -o name | "+ - "xargs -n1 kubectl get -n --show-kind --ignore-not-found") + kctl+" api-resources --verbs=list --namespaced -o name | "+ + "xargs -n1 "+kctl+" get -n --show-kind --ignore-not-found") } if len(emptyShell) > 0 { hints = append(hints, - fmt.Sprintf("inspect and delete empty namespaces: kubectl delete namespace %s", - strings.Join(emptyShell, " "))) + fmt.Sprintf("inspect and delete empty namespaces: %s delete namespace %s", + kctl, strings.Join(emptyShell, " "))) } r.Message = fmt.Sprintf("%d stale namespace(s) detected: %s. To resolve: %s", len(stale), strings.Join(parts, ", "), strings.Join(hints, "; ")) @@ -747,6 +752,35 @@ func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namesp } } +// kubectlContextArg renders the probed context as a --context flag for the +// remediation hints, or "" when no explicit context was given so the hint stays +// readable for a single-cluster setup. The value is shell-quoted: a context +// name is operator-supplied and arbitrary. +func kubectlContextArg(kubeContext string) string { + if kubeContext == "" { + return "" + } + return " --context " + shellQuoteArg(kubeContext) +} + +// shellQuoteArg makes s safe to paste into a shell. Unquoted when it holds only +// characters no shell treats specially, so the common case stays legible. +func shellQuoteArg(s string) string { + if s == "" { + return "''" + } + safe := strings.IndexFunc(s, func(r rune) bool { + return !(r == '-' || r == '_' || r == '.' || r == '/' || r == ':' || r == '@' || r == '=' || + (r >= '0' && r <= '9') || + (r >= 'A' && r <= 'Z') || + (r >= 'a' && r <= 'z')) + }) == -1 + if safe { + return s + } + return "'" + strings.ReplaceAll(s, "'", "'\"'\"'") + "'" +} + // placeholderCheck returns a binaryCheckSpec that emits a passing "info" // CheckResult with the given message. Used until M3/M+10 cluster-side probes ship. func placeholderCheck(id, label, message string) binaryCheckSpec { diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go index 5f20baf0d2..2f21a76048 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go @@ -20,6 +20,7 @@ package selfhosted import ( "context" "fmt" + "strings" "testing" "github.com/stretchr/testify/assert" @@ -274,3 +275,34 @@ func TestControlPlaneNamespaceList_ExcludesRuntimeOwnedNamespaces(t *testing.T) assert.NotContains(t, nvcfComputePlaneNamespaces, "nvca-system", "nvca-system is operator-created and hosts no release") } + +// TestStaleNamespaceCheck_HintsPinTheProbedContext guards the remediation +// hints in split mode. The two callers probe different clusters, so a bare +// kubectl command in a hint runs against whatever context is current, and +// these hints delete namespaces. +func TestStaleNamespaceCheck_HintsPinTheProbedContext(t *testing.T) { + prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { + return []StaleNamespace{ + {Name: "nvcf", Reason: "stuck Terminating"}, + {Name: "api-keys", Reason: "no Helm release"}, + }, nil + } + r := staleNamespaceCheck(prober, "cp-ctx", []string{"nvcf", "api-keys"}).Run(context.Background()) + + // Every kubectl invocation, including the one piped into xargs, has to + // carry the flag: one unpinned command is enough to hit the wrong cluster. + for _, cmd := range strings.Split(r.Message, "kubectl ")[1:] { + assert.True(t, strings.HasPrefix(cmd, "--context cp-ctx "), + "unpinned kubectl invocation in hint: kubectl %s", cmd) + } + assert.Contains(t, r.Message, "kubectl --context cp-ctx delete namespace api-keys") +} + +func TestStaleNamespaceCheck_HintsQuoteTheContext(t *testing.T) { + prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { + return []StaleNamespace{{Name: "nvcf", Reason: "no Helm release"}}, nil + } + r := staleNamespaceCheck(prober, "my ctx", []string{"nvcf"}).Run(context.Background()) + assert.Contains(t, r.Message, "--context 'my ctx' delete namespace nvcf", + "a context name with a space must be quoted so the pasted command does not split it") +} From ef693a47a5efd04f046dff13715602bee56dd5bf Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 16 Sep 2026 00:24:30 +0530 Subject: [PATCH 28/55] docs(nvcf-cli): document the cluster-validator check flags and registry list --- .../nvcf-self-managed-cli/reference/flags.md | 29 + src/clis/nvcf-cli/.nvcf-cli.yaml.template | 20 +- .../agentskill/skilldata_generated.go | 7113 +++++++++-------- 3 files changed, 3624 insertions(+), 3538 deletions(-) diff --git a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md index ca093b8da5..ca329b2743 100644 --- a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md +++ b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md @@ -26,6 +26,35 @@ | `--icms-url URL` | Public ICMS URL; required when contexts differ | derived from `base_http_url` | | `--local-only` | `check --pre` only; skip all kubectl contact | `false` | +## `check`-specific + +At least one of `--pre`, `--control-plane`, `--compute-plane`, or `--all` is +required. Each selects a role; only the selected roles contact a cluster. + +| Flag | Purpose | Default | +|---|---|---| +| `--pre` | Pre-flight: local-host tools plus cluster readiness | `false` | +| `--control-plane` | Control-plane checks | `false` | +| `--compute-plane` | Compute-plane checks | `false` | +| `--all` | Every category | `false` | +| `--cluster-name NAME` | Cluster name for compute-plane checks | - | +| `--skip-inotify-check` | Skip the per-node inotify-limits probe. Needed when the kubeconfig user cannot create pods in `default`. Env: `NVCF_CLI_SELFHOSTED_SKIP_INOTIFY` | `false` | + +### Cluster-validator flags + +The validator runs as a Job in the cluster being checked. The CLI creates a +ServiceAccount, ClusterRole, and ClusterRoleBinding for it and removes them +after the run, so the kubeconfig context needs permission to manage those. + +| Flag | Purpose | Default | +|---|---|---| +| `--cluster-validator-image REF` | Validator image. Resolution order: flag, `NVCF_CLI_CLUSTER_VALIDATOR_IMAGE`, config key `cluster_validator_image`. A ref with no tag discovers the latest stable tag from the registry. Unset everywhere skips the probe with a warning | - | +| `--cluster-validator-registries host:port,...` | Extra registries the control-plane validator probes for reachability. `nvcr.io` is always probed. Repeatable or comma-separated. Env: `NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES`; config key `cluster_validator_registries` | `nvcr.io` only | +| `--cluster-validator-pull-secret NAME` | docker-registry Secret in `default` used to pull the validator image. When empty, the CLI looks for one in the NVCF namespaces and falls back to minting one from `NGC_API_KEY` | auto-detect | +| `--skip-cluster-validation` | Skip the in-cluster validator probe entirely. Env: `NVCF_CLI_SELFHOSTED_SKIP_CLUSTER_VALIDATION` | `false` | +| `--no-cleanup` | Keep the validator Job (and its RBAC) after the run for debugging. The next run still sweeps prior Jobs | `false` | +| `--show-logs` | Print the validator transcript to stderr after the check events. Useful when piping `--json` to a script that also wants the transcript | `false` | + ## `up`-specific | Flag | Purpose | Default | diff --git a/src/clis/nvcf-cli/.nvcf-cli.yaml.template b/src/clis/nvcf-cli/.nvcf-cli.yaml.template index 585adc8b21..f21daa19d5 100644 --- a/src/clis/nvcf-cli/.nvcf-cli.yaml.template +++ b/src/clis/nvcf-cli/.nvcf-cli.yaml.template @@ -142,7 +142,13 @@ api_keys_owner_id: svc@nvcf-api.local # Image reference for the cluster-validator pod used by # `nvcf-cli self-hosted check`. The CLI runs this image as a Job in the -# compute-plane cluster to verify NVCA prerequisites before install. +# cluster being checked to verify prerequisites before install. One image +# serves both roles; the Job environment selects the check set. +# +# The Job needs a ServiceAccount, ClusterRole, and ClusterRoleBinding, which +# the CLI creates and removes per run. The kubeconfig context therefore needs +# permission to manage those objects; without it the probe reports a warning +# instead of a result. # # Config key: cluster_validator_image # Environment variable: NVCF_CLI_CLUSTER_VALIDATOR_IMAGE @@ -156,6 +162,18 @@ api_keys_owner_id: svc@nvcf-api.local # Prod: nvcr.io/nvidia/nvcf-byoc/cluster-validator # cluster_validator_image: nvcr.io/nvidia/nvcf-byoc/cluster-validator +# Extra container registries the control-plane validator probes for +# reachability, as host:port. nvcr.io is always probed, so list only the +# registries your stack pulls from in addition to it. +# +# Config key: cluster_validator_registries (list) +# Environment variable: NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES (comma-separated) +# Command-line flag: --cluster-validator-registries (repeatable or comma-separated) +# +# cluster_validator_registries: +# - harbor.example.com:443 +# - ghcr.io:443 + # ============================================================================== # General Settings # ============================================================================== diff --git a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go index f004cac554..441a759bf5 100644 --- a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go +++ b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go @@ -31,7 +31,7 @@ import ( const skillDataZipBase64 = "" + "UEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAASAAkAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4S" + "ewogICJzY2hlbWFWZXJzaW9uIjogMSwKICAiZ2VuZXJhdGVkQXQiOiAiMTk3MC0wMS0wMVQwMDow" + - "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAxOTU0MDEsCiAgImZp" + + "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAxOTc2MzYsCiAgImZp" + "bGVzIjogWwogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvU0tJTEwu" + "bWQiLAogICAgICAic2hhMjU2IjogImY2MjBlMTRmMTYxYTZiZWJlMTNlN2Y1NTkwMDE5N2VkYmEx" + "NTExYzY0ZjQwYzM0ZmM3OGZjMjM4MWQxMTI3YzciLAogICAgICAic2l6ZSI6IDI0NTgxCiAgICB9" + @@ -71,3553 +71,3592 @@ const skillDataZipBase64 = "" + "bmNlL2V4aXQtY29kZXMubWQiLAogICAgICAic2hhMjU2IjogIjY0YjVmYTliY2FmMGUwYTUzZjc4" + "OTIwYjczZmNiNTMwYWI2OTQ1MWI0OGE1YjQ5M2YyNTJjYTE4NTgzYWIwODYiLAogICAgICAic2l6" + "ZSI6IDE3NDkKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWNs" + - "aS9yZWZlcmVuY2UvZmxhZ3MubWQiLAogICAgICAic2hhMjU2IjogIjU0YjVlYTc5ODFkMjYyNmM1" + - "ODM1MzMyYWJhMjdlYjI4N2FjYTg5ZTFiYWRjYjJmYWI4MDcwMWFlMjlmNzZlMDgiLAogICAgICAi" + - "c2l6ZSI6IDg5MDIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogIm52Y2Ytc2VsZi1tYW5hZ2Vk" + - "LWNsaS9yZWZlcmVuY2UvdHJvdWJsZXNob290aW5nLm1kIiwKICAgICAgInNoYTI1NiI6ICJhNjMw" + - "ODRlMjI0OWYxZDE1NGM1OTgxZTRhMDcyYjdjNzg0Yjg1ZWExNDYwODY1MTVlYWI0YWI2NzBhOTQw" + - "ZTk0IiwKICAgICAgInNpemUiOiA0NDY4CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNm" + - "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vU0tJTEwubWQiLAogICAgICAic2hhMjU2IjogImMz" + - "M2ZkODMwNWVjM2ZkMDIwZWI0Yzk4MmMzYWZlNzZhN2MxZDQzYzNlMDU0YzhmYmQzOGM0YmIxYjcw" + - "N2M3NWEiLAogICAgICAic2l6ZSI6IDI1MTU0CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJu" + - "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXZhbHMvZXZhbHMuanNvbiIsCiAgICAgICJz" + - "aGEyNTYiOiAiYzViNDUzMzdlNDliM2FiOGFlMjgzNDVkMzE2NGE3ZjU3OTE5ZTY0NDg5ODcwMmQw" + - "Y2FhZDQ4YWVlMjhiMWYzYSIsCiAgICAgICJzaXplIjogMjE5MzMKICAgIH0sCiAgICB7CiAgICAg" + - "ICJwYXRoIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9leGFtcGxlcy5tZCIsCiAg" + - "ICAgICJzaGEyNTYiOiAiOWEzOWU1Y2NhYmQ0MDgxOWM3MWYyYjBmMmQ3NTIzMTZiNzIzMTU2NTRk" + - "ODBkM2QwMTc2OThjZTFmYjNlNWIxMSIsCiAgICAgICJzaXplIjogMTAzNjcKICAgIH0sCiAgICB7" + - "CiAgICAgICJwYXRoIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2Vz" + - "L2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kIiwKICAgICAgInNoYTI1NiI6ICI1ZGVlNThh" + - "ZTJjNjdhNjI5NDZlM2M1OTMwMmFmYWNjNDBiZGU3MWY4ZGMyZjI1Y2Q3Nzk5Y2M0NWI0NzRmYTE5" + - "IiwKICAgICAgInNpemUiOiAxMjMwNgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1z" + - "ZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvZGVidWdnaW5nLm1kIiwKICAgICAg" + - "InNoYTI1NiI6ICJhNTI4MTU4YmMwYmZmZmVlZjZlMDFkZTM4NGNhZjU2NWU2NDQ1YjQ4YWJkM2Nl" + - "ZTQwMDQ4NzFmNTIzZjUzYjk3IiwKICAgICAgInNpemUiOiAxMjQzNwogICAgfSwKICAgIHsKICAg" + - "ICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvaGVs" + - "bWZpbGUtc3RydWN0dXJlLm1kIiwKICAgICAgInNoYTI1NiI6ICIxZDUyNzc2ZjlkN2Q4ZGY1OGRl" + - "ZmUzMDQ2ZDYzZWM4ZjUyZmQzMDFjMjE1YmYwZTFhYjZiYjkxOTE2MjA3M2RlIiwKICAgICAgInNp" + - "emUiOiAxMDEyNwogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFnZWQt" + - "aW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvbnZjZi11aS1hZGRvbi5tZCIsCiAgICAgICJzaGEyNTYi" + - "OiAiNTA1MjRlNmUxOTcxMTgzYmRjOWFkMGFjMzhhODA3ZGY3MmNjMDg1MWI3OWY1MThmZTExYTQ4" + - "ZTQ1OTdjODUwZSIsCiAgICAgICJzaXplIjogMTk3NwogICAgfSwKICAgIHsKICAgICAgInBhdGgi" + - "OiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRz" + - "Lm1kIiwKICAgICAgInNoYTI1NiI6ICJlYzFmM2ZmY2QxN2U1Zjk1ODNmZWUzOTc0NGVlODk3ZDQ2" + - "NmJjM2NmNjM4OTI5NDI2NGQ4OWU3ZjllZDAxYjg3IiwKICAgICAgInNpemUiOiA1NjMyCiAgICB9" + - "CiAgXQp9ClBLBwhLpxLcSBAAAEgQAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAACMACQBkYXRh" + - "L252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9TS0lMTC5tZFVUBQABAKbOEi0tLQpuYW1lOiBudmNmLXNl" + - "bGYtbWFuYWdlZC1jbGkKZGVzY3JpcHRpb246IHwKICBJbnN0YWxsLCBvcGVyYXRlLCBhbmQgdGVh" + - "ciBkb3duIHNlbGYtaG9zdGVkIE5WSURJQSBDbG91ZCBGdW5jdGlvbnMgKE5WQ0YpCiAgZGVwbG95" + - "bWVudHMgd2l0aCBudmNmLWNsaS4gVXNlIGZvciBjb250cm9sLXBsYW5lIG9yIGNvbXB1dGUtcGxh" + - "bmUgaW5zdGFsbCwKICBzdGF0dXMgY2hlY2tzLCBjbHVzdGVyIHJlZ2lzdHJhdGlvbiwgZnVuY3Rp" + - "b24gZGVwbG95L2ludm9rZSwgdGFzawogIGNyZWF0ZS9saXN0L2NhbmNlbC9kZWxldGUsIEFQSSBr" + - "ZXlzLCBhZG1pbiB0b2tlbnMsIEpXS1Mgcm90YXRpb24sCiAgZmFpbGVkLWluc3RhbGwgZGlhZ25v" + - "c2lzLCBhbmQgdW5pbnN0YWxsIG9yIGRvd24gd29ya2Zsb3dzLiBUcmlnZ2VyIGtleXdvcmRzOgog" + - "IG52Y2YsIG52Y2YtY2xpLCBzZWxmLWhvc3RlZCBudmNmLCBzZWxmLW1hbmFnZWQgbnZjZiwgTlZD" + - "RkJhY2tlbmQsIE5WQ0EsIE5DUCwKICBJQ01TLCBoZWxtZmlsZSwgY29udHJvbCBwbGFuZSwgY29t" + - "cHV0ZSBwbGFuZSwgTExNIGZ1bmN0aW9uLAogIE9wZW5BSS1jb21wYXRpYmxlIGludm9jYXRpb24s" + - "IFJlc3BvbnNlcyBBUEksIGVtYmVkZGluZ3MsIGJhdGNoIHRhc2ssIHRhc2sKICBtb25pdG9yLCBj" + - "bHVzdGVyIHJvdGF0ZSwgY2x1c3RlciBkZWxldGUsIGhlbG0gdGFzaywgaGVsbS1iYXNlZCB0YXNr" + - "LAogIHRhc2sgc2VjcmV0cywgdXBkYXRlIHRhc2sgc2VjcmV0cywgcmV0cmlldmUgdGFzayByZXN1" + - "bHRzLCBidWxrIGZldGNoIHRhc2tzLAogIHRhc2sgcmVzdWx0cywgTlZDVCwgTlZDVCB0YXNrLCBO" + - "VkNUIGJhdGNoIGpvYi4KYWxsb3dlZC10b29sczogQmFzaCwgUmVhZCwgQXNrVXNlclF1ZXN0aW9u" + - "CmFyZ3VtZW50LWhpbnQ6ICJbaW5zdGFsbHxzdGF0dXN8Y2hlY2t8ZGVwbG95LWZ1bmN0aW9ufHJl" + - "Z2lzdGVyLWNsdXN0ZXJ8dGVhcmRvd25dIFthcmdzXSIKLS0tCjwhLS0KVG9rZW4gQnVkZ2V0Ogot" + - "IExldmVsIDEgKFlBTUwpOiB+MTIwIHRva2VucwotIExldmVsIDIgKHRoaXMgZmlsZSk6IH4xOTAw" + - "IHRva2VucyAodGFyZ2V0IDwyMDAwKQotIExldmVsIDMgKHByb21wdHMvLCByZWZlcmVuY2UvLCBl" + - "eGFtcGxlcy8pOiBsb2FkZWQgb24gZGVtYW5kCi0tPgoKIyBOVkNGIFNlbGYtSG9zdGVkIENMSQoK" + - "YG52Y2YtY2xpYCBkcml2ZXMgZXZlcnkgc3RlcCBvZiBicmluZ2luZyB1cCBzZWxmLWhvc3RlZCBO" + - "VklESUEgQ2xvdWQgRnVuY3Rpb25zOiBjbHVzdGVyIHJlZ2lzdHJhdGlvbiwgY29udHJvbC1wbGFu" + - "ZSBpbnN0YWxsLCBjb21wdXRlLXBsYW5lIGluc3RhbGwsIGZ1bmN0aW9uIGRlcGxveS9pbnZva2Us" + - "IGFuZCBsaWZlY3ljbGUgbWFuYWdlbWVudC4gVXNlIHRoaXMgc2tpbGwgYW55IHRpbWUgdGhlIHVz" + - "ZXIgd2FudHMgdG8gb3BlcmF0ZSBzZWxmLWhvc3RlZCBOVkNGLgoKIyMgV2hlbiB0byB1c2UKCi0g" + - "Imluc3RhbGwgc2VsZi1ob3N0ZWQgTlZDRiIgLyAiYnJpbmcgdXAgYW4gTlZDRiBjbHVzdGVyIgot" + - "ICJyZWdpc3RlciBhIChjb21wdXRlfEdQVSkgY2x1c3RlciB3aXRoIE5WQ0YiCi0gImRlcGxveSBh" + - "IChjb250YWluZXJ8R1BVKSBmdW5jdGlvbiIgLyAiaW52b2tlIGFuIE5WQ0YgZnVuY3Rpb24iCi0g" + - "ImNoZWNrIE5WQ0YgY2x1c3RlciBoZWFsdGgiIC8gImlzIG15IE5WQ0YgaW5zdGFsbCBPSz8iCi0g" + - "InJvdGF0ZSBOVkNGIGNsdXN0ZXIgSldLUyIgLyAidGhlIE5WQ0EgYWdlbnQgc3RvcHBlZCBhdXRo" + - "ZW50aWNhdGluZyIKLSAidGVhciBkb3duIE5WQ0YiIC8gInJlbW92ZSB0aGUgY29tcHV0ZSBwbGFu" + - "ZSIgLyAidW5pbnN0YWxsIE5WQ0YiIC8gImRlcmVnaXN0ZXIgdGhpcyBjbHVzdGVyIgotICJwcmV2" + - "aWV3IHdoYXQgYGRvd25gIHdvdWxkIGRvIiAvICJkcnktcnVuIHVuaW5zdGFsbCIKLSBBbnkgdGFz" + - "ayBvcGVyYXRpb246IGNyZWF0ZSAvIHJ1biAvIHN1Ym1pdCAvIG1vbml0b3IgLyBjYW5jZWwgLyBk" + - "ZWxldGUgLyBsaXN0IHRhc2tzLCBoZWxtIHRhc2ssIHVwZGF0ZSB0YXNrIHNlY3JldHMsIHJldHJp" + - "ZXZlIHRhc2sgcmVzdWx0cywgYnVsayBmZXRjaCB0YXNrIGRldGFpbHMuCi0gQW55IHJlZmVyZW5j" + - "ZSB0byBgTlZDVGAsIGBOVkNUIHRhc2tgLCBvciBgTlZDVCBiYXRjaCBqb2JgIChsaXN0IC8gcnVu" + - "IC8gY2FuY2VsIC8gZGVsZXRlIC8gcmVzdWx0cykuCi0gQW55IHJlZmVyZW5jZSB0byBgTlZDRkJh" + - "Y2tlbmRgLCBgTlZDQWAsIElDTVMsIGhlbG0gcmVsZWFzZXMgbGlrZSBgaGVsbS1udmNmLSpgLCBv" + - "ciBgaWNtcy48ZG9tYWluPmAgLyBgYXBpLjxkb21haW4+YCBVUkxzLgoKIyMgUXVpY2sgc3RhcnQK" + - "CkZvciByZW1vdGUgb25lLWNsaWNrIGluc3RhbGxzLCBwcmVwYXJlIEdhdGV3YXkgQVBJIGluZ3Jl" + - "c3MgYW5kIENMSSBlbmRwb2ludApjb25maWd1cmF0aW9uIGJlZm9yZSBydW5uaW5nIGBzZWxmLWhv" + - "c3RlZCB1cGAuIFRoZSBjb21tYW5kIGFwcGxpZXMgdGhlIGNvbnRyb2wKcGxhbmUgYW5kIHRoZW4g" + - "aW1tZWRpYXRlbHkgY2FsbHMgQVBJLCBBUEkgS2V5cywgaW52b2NhdGlvbiwgYW5kIGdSUEMgZW5k" + - "cG9pbnRzLgpJZiB0aGUgR2F0ZXdheSBpcyBub3QgcHJvZ3JhbW1lZCBvciB0aGUgQ0xJIGhvc3Qg" + - "aGVhZGVycyBkbyBub3QgbWF0Y2ggdGhlCkhUVFBSb3V0ZXMgcmVuZGVyZWQgYnkgdGhlIHN0YWNr" + - "IGVudmlyb25tZW50LCBwb3N0LWluc3RhbGwgaGVhbHRoIGFuZCBjbHVzdGVyCnJlZ2lzdHJhdGlv" + - "biB3aWxsIGZhaWwuCgpgYGBzaAojIFNpbmdsZS1jbHVzdGVyIChjb250cm9sICsgY29tcHV0ZSBv" + - "biB0aGUgY3VycmVudCBrdWJlY29uZmlnIGNvbnRleHQpOgpudmNmLWNsaSBzZWxmLWhvc3RlZCB1" + - "cCAtLWNsdXN0ZXItbmFtZT1uY3AtbG9jYWwKCiMgU3BsaXQtY2x1c3RlciAoY29udHJvbCBwbGFu" + - "ZSBvbiBjb250ZXh0IEEsIGNvbXB1dGUgcGxhbmUgb24gY29udGV4dCBCKToKS1VCRUNPTkZJRz1j" + - "cC55YW1sOmdwdTEueWFtbCBudmNmLWNsaSBzZWxmLWhvc3RlZCB1cCBcCiAgLS1jbHVzdGVyLW5h" + - "bWU9bmNwLWxvY2FsIFwKICAtLWNvbnRyb2wtcGxhbmUtY29udGV4dD1hZG1pbkBjcCBcCiAgLS1j" + - "b21wdXRlLXBsYW5lLWNvbnRleHQ9YWRtaW5AZ3B1MSBcCiAgLS1pY21zLXVybD1odHRwczovL2lj" + - "bXMubnZjZi5leGFtcGxlLmNvbQoKIyBBZGQgYSBuZXcgY29tcHV0ZSBwbGFuZSB0byBhbiBleGlz" + - "dGluZyBjb250cm9sIHBsYW5lIChubyBrdWJlY3RsIGFjY2VzcyB0byBDUCBuZWVkZWQ7CiMgcmVh" + - "Y2hlcyB0aGUgY29udHJvbCBwbGFuZSB2aWEgdGhlIHB1YmxpYyBJQ01TIEhUVFBSb3V0ZSk6Cm52" + - "Y2YtY2xpIHNlbGYtaG9zdGVkIGFkZC1jb21wdXRlLXBsYW5lIFwKICAtLWNsdXN0ZXItbmFtZT1u" + - "Y3AtbG9jYWwtMiBcCiAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9YWRtaW5AZ3B1MiBcCiAgLS1p" + - "Y21zLXVybD1odHRwczovL2ljbXMubnZjZi5leGFtcGxlLmNvbSBcCiAgLS10b2tlbj0kQURNSU5f" + - "SldUCgojIFRlYXIgZG93biAoYWx3YXlzIHBsYW4tb25seSBmaXJzdCk6Cm52Y2YtY2xpIHNlbGYt" + - "aG9zdGVkIGRvd24gLS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9bmNwLWxvY2FsIC0tanNvbiB8" + - "IGpxCm52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24gLS1jbHVzdGVyLW5hbWU9bmNwLWxvY2FsCgoj" + - "IFBlci1wbGFuZSB1bmluc3RhbGwgKEdpdE9wczsgbWlycm9ycyBgaW5zdGFsbGApOgpudmNmLWNs" + - "aSBzZWxmLWhvc3RlZCB1bmluc3RhbGwgLS1uby1hcHBseSAtLWNvbXB1dGUtcGxhbmUgLS1jbHVz" + - "dGVyLW5hbWU9bmNwLWxvY2FsIHwga3ViZWN0bCBkZWxldGUgLWYgLQpgYGAKCj4gKipgdXBgIHZz" + - "IGBhZGQtY29tcHV0ZS1wbGFuZWAuKiogYHVwYCBhbHdheXMgaW5zdGFsbHMgYm90aCBwbGFuZXMg" + - "4oCUIHVzZSBpdCBmb3IgdGhlICpmaXJzdCogaW5zdGFsbC4gYGFkZC1jb21wdXRlLXBsYW5lYCBp" + - "cyB0aGUgcmlnaHQgc3ViY29tbWFuZCBhbnkgdGltZSB0aGUgY29udHJvbCBwbGFuZSBpcyBhbHJl" + - "YWR5IHJ1bm5pbmcgYW5kIHlvdSB3YW50IHRvIGF0dGFjaCBhbiBOdGggY29tcHV0ZSBjbHVzdGVy" + - "LgoKPiAqKmBkb3duYCBhbHdheXMgd2l0aCBgLS1wbGFuLW9ubHlgIGZpcnN0LioqIFNob3cgdGhl" + - "IHVzZXIgdGhlIGB3aWxsVW5pbnN0YWxsLmNvbW1hbmRzW11gIGFycmF5IGJlZm9yZSBydW5uaW5n" + - "IGZvciByZWFsLgoKIyMgQXV0aGVudGljYXRpb24KCmBudmNmLWNsaWAgdXNlcyB0d28gY3JlZGVu" + - "dGlhbHMuIEVhY2ggaXMgcmVzb2x2ZWQgaW5kZXBlbmRlbnRseSBpbiB0aGlzIG9yZGVyOgoKfCBQ" + - "cmVjZWRlbmNlIHwgU291cmNlIHwKfC0tLXwtLS18CnwgMSAoaGlnaGVzdCkgfCBFbnZpcm9ubWVu" + - "dCB2YXJpYWJsZSAoYE5WQ0ZfVE9LRU5gLCBgTlZDRl9BUElfS0VZYCkgfAp8IDIgfCBDb25maWcg" + - "ZmlsZSAoYH4vLm52Y2YtY2xpLnlhbWxgLCBrZXlzIGB0b2tlbmAgYW5kIGBhcGlfa2V5YCkgfAp8" + - "IDMgfCBTdGF0ZSBmaWxlIChgfi8ubnZjZi1jbGkuc3RhdGVgKSwgc2tpcHBlZCB3aGVuIHRoZSBz" + - "dG9yZWQgdG9rZW4gaXMgZXhwaXJlZCB8Cgp8IEVudiB2YXIgfCBUb2tlbiB0eXBlIHwgVXNlZCBi" + - "eSB8CnwtLS18LS0tfC0tLXwKfCBgTlZDRl9UT0tFTmAgfCBBZG1pbiBKV1QgfCBgZnVuY3Rpb24g" + - "Y3JlYXRlYCAvIGBkZXBsb3lgIC8gYHVwZGF0ZWAgLyBgZGVsZXRlYCwgY2x1c3RlciBtYW5hZ2Vt" + - "ZW50IChgY2x1c3RlciByZWdpc3RlcmAvYHJvdGF0ZWAvYGRlbGV0ZWAsIGBzZWxmLWhvc3RlZGAg" + - "b3BzKS4gUmVxdWlyZWQgZm9yIGFkbWluIGNvbW1hbmRzOyBwcmVmZXJyZWQgZm9yIHRoZSByZXN0" + - "LiB8CnwgYE5WQ0ZfQVBJX0tFWWAgfCBgbnZhcGktLi4uYCBBUEkga2V5IHwgYGZ1bmN0aW9uIGlu" + - "dm9rZWAgLyBgbGlzdGAgLyBgZ2V0YCwgcXVldWUgZGV0YWlscy4gRmFsbHMgYmFjayB0byBgTlZD" + - "Rl9UT0tFTmAgd2hlbiB1bnNldC4gfAoKVG9rZW4gZ2VuZXJhdGlvbiBmbG93OgoKMS4gUG9pbnQg" + - "dGhlIENMSSBhdCB5b3VyIHNlbGYtaG9zdGVkIGVuZHBvaW50cy4gRGVmYXVsdHMgdGFyZ2V0IHBy" + - "b2R1Y3Rpb24gTlZDRjsgb3ZlcnJpZGUgd2l0aCBlbnYgdmFycyBvciBhIHlhbWwgZmlsZSAoYC0t" + - "Y29uZmlnIDxwYXRoPmAsIGAuLy5udmNmLWNsaS55YW1sYCwgb3IgYH4vLm52Y2YtY2xpLnlhbWxg" + - "OyBhIGZ1bGwgdGVtcGxhdGUgc2hpcHMgYXQgYHNyYy9jbGlzL252Y2YtY2xpLy5udmNmLWNsaS55" + - "YW1sLnRlbXBsYXRlYCkuCgogICBgTlZDRl9CQVNFX0hUVFBfVVJMYCAvIGBBUElfS0VZU19TRVJW" + - "SUNFX1VSTGAgLyBgTlZDRl9CQVNFX0dSUENfVVJMYCB0ZWxsIHRoZSBDTEkgKndoZXJlIHRvIHNl" + - "bmQgcmVxdWVzdHMqLiBgQVBJX0hPU1RgIC8gYEFQSV9LRVlTX0hPU1RgIC8gYElOVk9LRV9IT1NU" + - "YCBzZXQgdGhlIGBIb3N0OmAgaGVhZGVyIG9uIHRob3NlIHJlcXVlc3RzIOKAlCBuZWVkZWQgd2hl" + - "biBldmVyeSBOVkNGIHNlcnZpY2Ugc2l0cyBiZWhpbmQgYSBzaW5nbGUgZ2F0ZXdheSB0aGF0IHJv" + - "dXRlcyBieSBob3N0bmFtZSAoRW52b3kgR2F0ZXdheSBIVFRQUm91dGUgb24gYGFwaS48RUxCPmAs" + - "IGBhcGkta2V5cy48RUxCPmAsIGBpbnZvY2F0aW9uLjxFTEI+YCwgYGxsbS48RUxCPmApLiBTa2lw" + - "IHRoZSB0aHJlZSBIb3N0IHZhcnMgd2hlbiB0aGUgYmFzZSBVUkwgYWxyZWFkeSByZXNvbHZlcyB0" + - "byB0aGUgcmlnaHQgc2VydmljZS4KCiAgIEVudi12YXIgZm9ybToKICAgYGBgc2gKICAgZXhwb3J0" + - "IE5WQ0ZfQkFTRV9IVFRQX1VSTD1odHRwczovL2d3LmV4YW1wbGUuY29tCiAgIGV4cG9ydCBBUElf" + - "S0VZU19TRVJWSUNFX1VSTD1odHRwczovL2d3LmV4YW1wbGUuY29tCiAgIGV4cG9ydCBOVkNGX0JB" + - "U0VfR1JQQ19VUkw9Z3cuZXhhbXBsZS5jb206NDQzCgogICAjIE9ubHkgd2hlbiB0aGUgZ2F0ZXdh" + - "eSByb3V0ZXMgYnkgSG9zdCBoZWFkZXI6CiAgIGV4cG9ydCBBUElfS0VZU19IT1NUPWFwaS1rZXlz" + - "Lmd3LmV4YW1wbGUuY29tCiAgIGV4cG9ydCBBUElfSE9TVD1hcGkuZ3cuZXhhbXBsZS5jb20KICAg" + - "ZXhwb3J0IElOVk9LRV9IT1NUPWludm9jYXRpb24uZ3cuZXhhbXBsZS5jb20KICAgYGBgCgogICBZ" + - "YW1sIGZvcm0gKGB+Ly5udmNmLWNsaS55YW1sYCk6CiAgIGBgYHlhbWwKICAgYmFzZV9odHRwX3Vy" + - "bDogaHR0cHM6Ly9ndy5leGFtcGxlLmNvbQogICBhcGlfa2V5c19zZXJ2aWNlX3VybDogaHR0cHM6" + - "Ly9ndy5leGFtcGxlLmNvbQogICBiYXNlX2dycGNfdXJsOiBndy5leGFtcGxlLmNvbTo0NDMKCiAg" + - "ICMgT25seSB3aGVuIHRoZSBnYXRld2F5IHJvdXRlcyBieSBIb3N0IGhlYWRlcjoKICAgYXBpX2tl" + - "eXNfaG9zdDogYXBpLWtleXMuZ3cuZXhhbXBsZS5jb20KICAgYXBpX2hvc3Q6IGFwaS5ndy5leGFt" + - "cGxlLmNvbQogICBpbnZva2VfaG9zdDogaW52b2NhdGlvbi5ndy5leGFtcGxlLmNvbQogICBgYGAK" + - "CjIuIGBudmNmLWNsaSBpbml0YCBjYWxscyB0aGUgQVBJIEtleXMgc2VydmljZSB2aWEgdGhvc2Ug" + - "ZW5kcG9pbnRzIGFuZCB3cml0ZXMgdGhlIGFkbWluIHRva2VuIHRvIGB+Ly5udmNmLWNsaS5zdGF0" + - "ZWAuIFVzZSBgbnZjZi1jbGkgcmVmcmVzaGAgdG8gcm90YXRlIGEgc3RvcmVkIHRva2VuLgozLiBB" + - "ZnRlciBgaW5pdGAsIGBudmNmLWNsaSBhcGkta2V5IGdlbmVyYXRlYCBtaW50cyBmdW5jdGlvbiAr" + - "IHRhc2sgQVBJIGtleXMgKGFsc28gc3RvcmVkIGluIHN0YXRlKS4KCkFmdGVyIGBpbml0YCwgdGhl" + - "IGNyZWRlbnRpYWxzIGxpdmUgaW4gYH4vLm52Y2YtY2xpLnN0YXRlYCwgc28gbGF0ZXIgY29tbWFu" + - "ZHMgd29yayB3aXRob3V0IGV4cG9ydGluZyBgTlZDRl9UT0tFTmAgb3IgYE5WQ0ZfQVBJX0tFWWAu" + - "IEV4cG9ydCB0aGUgZW52IHZhciBvbmx5IHRvIG92ZXJyaWRlIHRoZSBzdG9yZWQgdmFsdWUgKGZv" + - "ciBleGFtcGxlIGEgc2hvcnRlci1saXZlZCB0b2tlbiBmcm9tIENJKS4KCiMjIENvcmUgc3ViY29t" + - "bWFuZHMKCnwgU3ViY29tbWFuZCB8IFdoYXQgaXQgZG9lcyB8IFdoZW4gdG8gdXNlIHwKfC0tLXwt" + - "LS18LS0tfAp8IGBudmNmLWNsaSBzZWxmLWhvc3RlZCBjaGVjayAtLXByZSBbLS1sb2NhbC1vbmx5" + - "IFx8IC0tY29udHJvbC1wbGFuZS1jb250ZXh0PVggXHwgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9" + - "WV1gIHwgUHJlLWZsaWdodDogbG9jYWwtaG9zdCB0b29scyArIGNsdXN0ZXItc2lkZSBwcmVyZXF1" + - "aXNpdGVzIHwgQWx3YXlzIHJ1biBmaXJzdCBvbiBhIG5ldyBlbnZpcm9ubWVudCB8CnwgYG52Y2Yt" + - "Y2xpIHNlbGYtaG9zdGVkIGluc3RhbGwgLS1jb250cm9sLXBsYW5lIFx8IGt1YmVjdGwgYXBwbHkg" + - "LWYgLWAgfCBSZW5kZXIgKyBhcHBseSB0aGUgY29udHJvbCBwbGFuZSB8IFdoZW4geW91IHdhbnQg" + - "bWFudWFsIGNvbnRyb2wgb3ZlciBhcHBseSAoR2l0T3BzLWZyaWVuZGx5KSB8CnwgYG52Y2YtY2xp" + - "IHNlbGYtaG9zdGVkIGluc3RhbGwgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVggXHwg" + - "a3ViZWN0bCBhcHBseSAtZiAtYCB8IFJlZ2lzdGVyIGNsdXN0ZXIgKyByZW5kZXIgY29tcHV0ZSBw" + - "bGFuZSB8IFNhbWUg4oCUIG1hbnVhbCBhcHBseSBwYXRoIHwKfCBgbnZjZi1jbGkgc2VsZi1ob3N0" + - "ZWQgdXAgLS1jbHVzdGVyLW5hbWU9WGAgfCBPbmUtc2hvdCBmaXJzdCBpbnN0YWxsOiBwcmUtZmxp" + - "Z2h0IOKGkiBjb250cm9sIHBsYW5lIOKGkiByZWdpc3RlciDihpIgY29tcHV0ZSBwbGFuZSB8IFN0" + - "YW5kYXJkIGluc3RhbGwgcGF0aCAoYm90aCBwbGFuZXMgZnJvbSBzY3JhdGNoKSB8CnwgYG52Y2Yt" + - "Y2xpIHNlbGYtaG9zdGVkIHVwIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIHwgRHJ5LXJ1" + - "bjogZW1pdCBwaGFzZS1ieS1waGFzZSBwbGFuICsgRVRBIHdpdGhvdXQgY2hhbmdpbmcgc3RhdGUg" + - "fCBBZ2VudCAvIENJIHByZXZpZXcgYmVmb3JlIGNvbW1pdCB8CnwgYG52Y2YtY2xpIHNlbGYtaG9z" + - "dGVkIGFkZC1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVggLS1jb21wdXRlLXBsYW5lLWNv" + - "bnRleHQ9WSAtLWljbXMtdXJsPeKApiAtLXRva2VuPSRKV1RgIHwgQWRkIGEgbmV3IGNvbXB1dGUg" + - "cGxhbmUgdG8gYW4gKmV4aXN0aW5nKiBjb250cm9sIHBsYW5lIChubyBDUCBpbnN0YWxsKSB8IEFk" + - "ZGluZyB0aGUgMm5kLCAzcmQsIOKApiBHUFUgY2x1c3RlciBhZnRlciB0aGUgaW5pdGlhbCBgdXBg" + - "IHwKfCBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZWAgfCBQ" + - "ZXItcGxhbmUgcHJpbWl0aXZlOiBgaGVsbWZpbGUgZGVzdHJveWAgb24gdGhlIGNvbnRyb2wgcGxh" + - "bmUgKHJlZnVzZXMgaWYgY29tcHV0ZSBwbGFuZXMgc3RpbGwgcmVnaXN0ZXJlZCkgfCBGaW5hbCB0" + - "ZWFyZG93biBhZnRlciBhbGwgY29tcHV0ZSBwbGFuZXMgYXJlIGdvbmUsIG9yIHNjcmlwdGVkIHBp" + - "cGVsaW5lcyB8CnwgYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAtLWNvbXB1dGUtcGxh" + - "bmUgLS1jbHVzdGVyLW5hbWU9WGAgfCBQZXItcGxhbmUgcHJpbWl0aXZlOiBgaGVsbWZpbGUgZGVz" + - "dHJveWAgb24gYSBjb21wdXRlIHBsYW5lIChubyBJQ01TIHVucmVnaXN0ZXIsIG5vIGRyYWluKSB8" + - "IEp1c3QgcmVtb3ZlIHRoZSBoZWxtIHJlbGVhc2VzIHdpdGhvdXQgdGhlIElDTVMtc2lkZSBjbGVh" + - "bnVwIHwKfCBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tbm8tYXBwbHkgPHBsYW5l" + - "PmAgfCBSZW5kZXIgZGVsZXRlIFlBTUwgdmlhIGBoZWxtIGdldCBtYW5pZmVzdGAgfCBHaXRPcHM7" + - "IGBcfCBrdWJlY3RsIGRlbGV0ZSAtZiAtYCBvciBjb21taXQgKyBBcmdvIGFwcGxpZXMgfAp8IGBu" + - "dmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tY2x1c3Rlci1uYW1lPVhgIHwgT3JjaGVzdHJhdG9y" + - "OiBkcmFpbiDihpIgdW5pbnN0YWxsIC0tY29tcHV0ZS1wbGFuZSDihpIgY2x1c3RlciBkZWxldGUg" + - "aW4gSUNNUyB8IFN0YW5kYXJkICJyZW1vdmUgb25lIEdQVSBjbHVzdGVyIiBwYXRoIHwKfCBgbnZj" + - "Zi1jbGkgc2VsZi1ob3N0ZWQgZG93biAtLWFsbCAtLWNvbmZpcm1gIHwgT3JjaGVzdHJhdG9yOiB0" + - "ZWFyIGRvd24gZXZlcnkgcmVnaXN0ZXJlZCBjb21wdXRlIHBsYW5lICsgY29udHJvbCBwbGFuZSB8" + - "IEZ1bGwgdW5pbnN0YWxsIHwKfCBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93biAtLXBsYW4tb25s" + - "eSAtLWNsdXN0ZXItbmFtZT1YYCB8IERyeS1ydW4gcHJldmlldyAocGhhc2VzICsgaGVsbSByZWxl" + - "YXNlcyArIElDTVMgcm93cyArIEVUQXM7IG5vIGhlbG0vaGVsbWZpbGUgY29udGFjdCkgfCAqKkFM" + - "V0FZUyBydW4gYmVmb3JlIGFueSBhY3R1YWwgYGRvd25gKiogfAp8IGBudmNmLWNsaSBzZWxmLWhv" + - "c3RlZCBzdGF0dXMgWy0tY2x1c3Rlci1uYW1lPVhdIFstLXdhdGNoXSBbLS1qc29uXWAgfCBTbmFw" + - "c2hvdCBkYXNoYm9hcmQgb2YgY2x1c3RlciBpZGVudGl0eSArIGNvbXBvbmVudCBoZWFsdGggKyBy" + - "ZWNlbnQgZXZlbnRzIHwgUm91dGluZSBoZWFsdGggY2hlY2tzOyBgLS13YXRjaGAgZm9yIGxpdmUg" + - "fAp8IGBudmNmLWNsaSBpbml0YCB8IE1pbnQgYWRtaW4gdG9rZW4gZnJvbSBBUEkgS2V5cyBzZXJ2" + - "aWNlIHZpYSB0aGUgcHVibGljIGFwaSBnYXRld2F5IHwgQmVmb3JlIGFueSBjbHVzdGVyLW1hbmFn" + - "ZW1lbnQgb3BlcmF0aW9uOyBpZGVtcG90ZW50IHwKfCBgbnZjZi1jbGkgY2x1c3RlciByZWdpc3Rl" + - "ciAtLW5hbWU9WCAtLW5jYS1pZD1ZIC0tcmVnaW9uPVogWy0taWdub3JlLWV4aXN0aW5nXWAgfCBS" + - "ZWdpc3RlciBhIGNsdXN0ZXIgSldLUytPSURDIGlzc3VlciB3aXRoIElDTVMgfCBTdGFuZGFsb25l" + - "IHJlZ2lzdGVyICh3aXRob3V0IGNvbXB1dGUtcGxhbmUgaW5zdGFsbCkgfAp8IGBudmNmLWNsaSBj" + - "bHVzdGVyIHJvdGF0ZSAtLWNsdXN0ZXItaWQ9SURgIHwgUm90YXRlIGNsdXN0ZXIgSldLUyBpbiBJ" + - "Q01TIHwgV2hlbiBOVkNBJ3MgSzhzIHNpZ25pbmcga2V5IGNoYW5nZWQgYW5kIFBTQVQgdmVyaWZp" + - "Y2F0aW9uIHN0YXJ0ZWQgNDAxLWluZyB8CnwgYG52Y2YtY2xpIGNsdXN0ZXIgZGVsZXRlIC0tY2x1" + - "c3Rlci1pZD1JRGAgfCBSZW1vdmUgY2x1c3RlciByZWdpc3RyYXRpb24gZnJvbSBJQ01TIHwgKipD" + - "b25maXJtIHdpdGggdXNlci4qKiBEZXN0cm95cyBJQ01TIHN0YXRlIGZvciB0aGUgY2x1c3Rlci4g" + - "fAp8IGBudmNmLWNsaSBhcGkta2V5IGdlbmVyYXRlIC0tZGVzY3JpcHRpb249IuKApiIgLS1leHBp" + - "cmVzLWluPTFoYCB8IE1pbnQgYm90aCBhIGZ1bmN0aW9uIEFQSSBrZXkgYW5kIGEgdGFzayBBUEkg" + - "a2V5IChkZWZhdWx0KSB8IEJlZm9yZSBpbnZva2luZyBmdW5jdGlvbnMgb3IgY3JlYXRpbmcgdGFz" + - "a3M7IHJ1biBhZnRlciBldmVyeSBgaW5pdGAgfAp8IGBudmNmLWNsaSBhcGkta2V5IGdlbmVyYXRl" + - "IC0tZm9yIGZ1bmN0aW9uIC0tZGVzY3JpcHRpb249IuKApiJgIHwgTWludCBhIGZ1bmN0aW9uIEFQ" + - "SSBrZXkgb25seSAoYGludm9rZV9mdW5jdGlvbmAgc2NvcGUpIHwgV2hlbiBvbmx5IGZ1bmN0aW9u" + - "IGludm9jYXRpb24gaXMgbmVlZGVkIHwKfCBgbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWZv" + - "ciB0YXNrIC0tZGVzY3JpcHRpb249IuKApiJgIHwgTWludCBhIHRhc2sgQVBJIGtleSBvbmx5IHwg" + - "V2hlbiBvbmx5IHRhc2sgb3BlcmF0aW9ucyBhcmUgbmVlZGVkIHwKfCBgbnZjZi1jbGkgZnVuY3Rp" + - "b24gY3JlYXRlIC0taW5wdXQtZmlsZT08anNvbj5gIHwgQ3JlYXRlIGZ1bmN0aW9uIG1ldGFkYXRh" + - "IGluIElDTVMgfCBGaXJzdCBzdGVwIG9mIGFueSBmdW5jdGlvbiBkZXBsb3k7IHVzZSBgZnVuY3Rp" + - "b25UeXBlOiAiTExNImAgYW5kIGBtb2RlbHNbXS5sbG1Db25maWdgIGZvciBMTE0gZnVuY3Rpb25z" + - "IHwKfCBgbnZjZi1jbGkgZnVuY3Rpb24gZGVwbG95IGNyZWF0ZSAtLWlucHV0LWZpbGU9PGpzb24+" + - "YCB8IFNjaGVkdWxlIGEgZGVwbG95bWVudCBvZiBhIGNyZWF0ZWQgZnVuY3Rpb24gfCBXYWl0cyBm" + - "b3IgQUNUSVZFIGJlZm9yZSByZXR1cm5pbmcgKHRpbWVvdXQgOTAwcykgfAp8IGBudmNmLWNsaSBm" + - "dW5jdGlvbiBpbnZva2UgLS1pbnB1dC1maWxlPTxqc29uPmAgfCBJbnZva2UgYSBkZXBsb3llZCBm" + - "dW5jdGlvbiB8IFJlcXVpcmVzIEFQSSBrZXkgKG5vdCBhZG1pbiB0b2tlbikgfAp8IGBudmNmLWNs" + - "aSBmdW5jdGlvbiBkZWxldGUgLS1mdW5jdGlvbi1pZD1JRCAtLXZlcnNpb24taWQ9VklEYCB8IFJl" + - "bW92ZSBhIGZ1bmN0aW9uIGFuZCBpdHMgZGVwbG95bWVudCB8ICoqQ29uZmlybSB3aXRoIHVzZXIu" + - "KiogfAp8IGBudmNmLWNsaSB0YXNrIGNyZWF0ZSAtLW5hbWU9WCAtLWdwdT1IMTAwIC0taW5zdGFu" + - "Y2UtdHlwZT1ZIC0taW1hZ2U9WmAgfCBTdWJtaXQgYSBjb250YWluZXIgdGFzazsgc2F2ZXMgdGFz" + - "ayBJRCB0byBDTEkgc3RhdGUgfCBSZXF1aXJlcyB0YXNrIEFQSSBrZXk7IHNldCBgTlZDRl9CQVNF" + - "X05WQ1RfVVJMYCB0byB0aGUgTlZDVCBnYXRld2F5IGVuZHBvaW50IHwKfCBgbnZjZi1jbGkgdGFz" + - "ayBjcmVhdGUgLS1uYW1lPVggLS1ncHU9SDEwMCAtLWluc3RhbmNlLXR5cGU9WSAtLWhlbG0tY2hh" + - "cnQ9WmAgfCBTdWJtaXQgYSBIZWxtIHRhc2sgfCBTYW1lIGFzIGNvbnRhaW5lciB0YXNrOyBgLS1o" + - "ZWxtLWNoYXJ0YCByZXBsYWNlcyBgLS1pbWFnZWAgfAp8IGBudmNmLWNsaSB0YXNrIGNyZWF0ZSAt" + - "LWlucHV0LWZpbGU9PGpzb24+YCB8IFN1Ym1pdCBhIHRhc2sgZnJvbSBhIEpTT04gY29uZmlnIGZp" + - "bGUgfCBSZWNvbW1lbmRlZCBmb3IgcmVwZWF0YWJsZSBjb25maWd1cmF0aW9ucyB8CnwgYG52Y2Yt" + - "Y2xpIHRhc2sgbGlzdCBbLS1zdGF0dXM9UVVFVUVEXHxSVU5OSU5HXHxDT01QTEVURURdYCB8IExp" + - "c3QgdGFza3MsIG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgc3RhdHVzIHwgfAp8IGBudmNmLWNsaSB0" + - "YXNrIGdldCBbdGFza0lkXWAgfCBHZXQgZGV0YWlscyBmb3IgYSB0YXNrOyB1c2VzIHNhdmVkIHRh" + - "c2sgSUQgaWYgb21pdHRlZCB8IHwKfCBgbnZjZi1jbGkgdGFzayBldmVudHMgW3Rhc2tJZF1gIHwg" + - "U3RyZWFtIGxpZmVjeWNsZSBldmVudHMgZm9yIGEgdGFzayB8IHwKfCBgbnZjZi1jbGkgdGFzayBy" + - "ZXN1bHRzIFt0YXNrSWRdYCB8IExpc3QgcmVzdWx0IGFydGlmYWN0cyBmb3IgYSBjb21wbGV0ZWQg" + - "dGFzayB8IFJlc3VsdCB1cGxvYWQgbm90IHlldCBzdXBwb3J0ZWQ7IHJldHVybnMgZW1wdHkgbGlz" + - "dCBmb3IgYE5PTkVgIHN0cmF0ZWd5IHwKfCBgbnZjZi1jbGkgdGFzayBjYW5jZWwgW3Rhc2tJZF1g" + - "IHwgQ2FuY2VsIGEgcXVldWVkIG9yIHJ1bm5pbmcgdGFzayB8IHwKfCBgbnZjZi1jbGkgdGFzayBk" + - "ZWxldGUgW3Rhc2tJZF1gIHwgRGVsZXRlIGEgdGFzayByZWNvcmQgfCAqKkNvbmZpcm0gd2l0aCB1" + - "c2VyLioqIHwKfCBgbnZjZi1jbGkgdGFzayB1cGRhdGUtc2VjcmV0cyBbdGFza0lkXSAtLXNlY3Jl" + - "dHMgTkFNRT12YWx1ZWAgfCBVcGRhdGUgc2VjcmV0cyBvbiBhIHRhc2s7IHN1cHBsaWVkIHNlY3Jl" + - "dHMgYXJlIGFkZGVkIG9yIHVwZGF0ZWQgYnkgbmFtZSwgZXhpc3Rpbmcgc2VjcmV0cyBub3QgaW4g" + - "dGhlIHJlcXVlc3QgYXJlIHByZXNlcnZlZCB8IHwKfCBgbnZjZi1jbGkgdGFzayBidWxrIC0tdGFz" + - "ay1pZHM9SUQxLElEMmAgfCBGZXRjaCBkZXRhaWxzIGZvciBtdWx0aXBsZSB0YXNrcyBpbiBvbmUg" + - "Y2FsbCB8IHwKCj4gUmVnaXN0cnkgY3JlZGVudGlhbCBwcm9wYWdhdGlvbjogYWZ0ZXIgYHJlZ2lz" + - "dHJ5LWNyZWRlbnRpYWwgYWRkYC9gdXBkYXRlYC9gZGVsZXRlYCwgdGFzayBjcmVhdGlvbiBjYW4g" + - "a2VlcCB1c2luZyB0aGUgcHJldmlvdXMgY3JlZGVudGlhbCBmb3IgdXAgdG8gYWJvdXQgNSBtaW51" + - "dGVzIChOVkNUIGNhY2hlcyBhY2NvdW50IGNyZWRlbnRpYWxzIGF0IGBudmN0Lm52Y2YuY2FjaGUt" + - "dHRsYCwgZGVmYXVsdCBgUFQ1TWApLCBldmVuIHRob3VnaCBgcmVnaXN0cnktY3JlZGVudGlhbCBs" + - "aXN0YC9gZ2V0YCBzaG93IHRoZSBuZXcgdmFsdWUgaW1tZWRpYXRlbHkuIFdhaXQgYWJvdXQgNSBt" + - "aW51dGVzLCBvciBga3ViZWN0bCAtbiBudmNmIHJvbGxvdXQgcmVzdGFydCBkZXBsb3ltZW50L252" + - "Y3QtYXBpYCB0byBhcHBseSBpbW1lZGlhdGVseS4gU2VlIFtyZWZlcmVuY2UvdHJvdWJsZXNob290" + - "aW5nLm1kXShyZWZlcmVuY2UvdHJvdWJsZXNob290aW5nLm1kKS4KCiMjIExMTSBmdW5jdGlvbiB0" + - "eXBlCgpVc2UgYGZ1bmN0aW9uVHlwZTogIkxMTSJgIGZvciBPcGVuQUktY29tcGF0aWJsZSBtb2Rl" + - "bHMgc2VydmVkIHRocm91Z2ggdGhlIHNlbGYtbWFuYWdlZCBMTE0gR2F0ZXdheS4gTExNIGZ1bmN0" + - "aW9ucyBtdXN0IGRlZmluZSBhdCBsZWFzdCBvbmUgYG1vZGVsc1tdYCBlbnRyeSB3aXRoIGBuYW1l" + - "YCBhbmQgYGxsbUNvbmZpZy51cmlzYDsgdGhlIHN1cHBvcnRlZCB1cHN0cmVhbSBwYXRocyBhcmUg" + - "YC92MS9jaGF0L2NvbXBsZXRpb25zYCwgYC92MS9yZXNwb25zZXNgLCBhbmQgYC92MS9lbWJlZGRp" + - "bmdzYC4KClVzZSBgL2hlYWx0aGAgb24gcG9ydCBgODAwMGAgYXMgdGhlIGRlZmF1bHQgT3BlbkFJ" + - "LWNvbXBhdGlibGUgY29udGFpbmVyIGhlYWx0aCBwcm9iZSB1bmxlc3MgdGhlIGltYWdlIGV4cG9z" + - "ZXMgYSBkaWZmZXJlbnQgcmVhZGluZXNzIHBhdGguCgpMTE0gZnVuY3Rpb24gdHlwZSBpcyBpbmRl" + - "cGVuZGVudCBvZiB3b3JrbG9hZCBwYWNrYWdpbmcuIEZvciBhIEhlbG0tY2hhcnQgYmFja2VkIExM" + - "TSBmdW5jdGlvbiwga2VlcCBgZnVuY3Rpb25UeXBlOiAiTExNImAgYW5kIGBtb2RlbHNbXS5sbG1D" + - "b25maWdgLCB0aGVuIHNldCBgaGVsbUNoYXJ0YCBhbmQgYGhlbG1DaGFydFNlcnZpY2VOYW1lYCBp" + - "biB0aGUgY3JlYXRlIHJlcXVlc3QuIGBoZWxtQ2hhcnRTZXJ2aWNlTmFtZWAgbXVzdCBtYXRjaCB0" + - "aGUgS3ViZXJuZXRlcyBTZXJ2aWNlIGV4cG9zZWQgYnkgdGhlIGNoYXJ0LCBhbmQgYGluZmVyZW5j" + - "ZVBvcnRgIG11c3QgYmUgdGhhdCBTZXJ2aWNlIHBvcnQuCgpJbnZvY2F0aW9uIHVzZXMgdGhlIExM" + - "TSByb3V0ZSwgZm9yIGV4YW1wbGUgYGh0dHBzOi8vbGxtLmludm9jYXRpb24uPGRvbWFpbj4vdjEv" + - "Y2hhdC9jb21wbGV0aW9uc2AuIFRoZSBPcGVuQUkgYG1vZGVsYCB2YWx1ZSBtdXN0IGJlIGA8ZnVu" + - "Y3Rpb24taWQ+Lzxtb2RlbC1uYW1lPmA7IHRoZSBmdW5jdGlvbiBJRCBpcyB0aGUgcm91dGluZyBr" + - "ZXkgYW5kIHRoZSBtb2RlbCBuYW1lIGlzIGZvcndhcmRlZCB1cHN0cmVhbS4KClVwZGF0ZSBtdXRh" + - "YmxlIHBlci1tb2RlbCByb3V0aW5nIHNldHRpbmdzIHdpdGggYG52Y2YtY2xpIGZ1bmN0aW9uIHVw" + - "ZGF0ZSAtLWxsbS1tb2RlbC11cGRhdGU9J25hbWU9PG1vZGVsPixyb3V0aW5nTWV0aG9kPTxtZXRo" + - "b2Q+LHRva2VuUmF0ZUxpbWl0PTxsaW1pdD4nYCwgb3IgcHV0IHRoZSBzYW1lIGZpZWxkcyB1bmRl" + - "ciBgbW9kZWxVcGRhdGVzW10ubGxtQ29uZmlnYCBpbiBhbiB1cGRhdGUgSlNPTiBmaWxlLiBTZWUg" + - "W3JlZmVyZW5jZS9mbGFncy5tZF0ocmVmZXJlbmNlL2ZsYWdzLm1kKSBmb3IgYWNjZXB0ZWQgcm91" + - "dGluZyBtZXRob2RzLiBgdG9rZW5SYXRlTGltaXRgIHN1cHBvcnRzIHBvc2l0aXZlIGludGVnZXIg" + - "bGltaXRzIGZvciBgU2AsIGBNYCwgYEhgLCBgRGAsIGFuZCBgV2A7IHVzZSBKU09OIGlucHV0IGZv" + - "ciBjb21iaW5lZCBsaW1pdHMgc3VjaCBhcyBgMTAwMC1TLDUwMDAtTSwxMDAwMDAtSCw1MDAwMDAt" + - "RCwxMDAwMDAwLVdgLiBEbyBub3QgaW5jbHVkZSBgdXJpc2AgaW4gbW9kZWwgdXBkYXRlcy4KCkZv" + - "ciBgL3YxL3Jlc3BvbnNlc2AsIHRoZSBnYXRld2F5IHByb3hpZXMgdGhlIG5hdGl2ZSBSZXNwb25z" + - "ZXMgcGF0aCB1cHN0cmVhbSwgcmVsYXlzIFNTRSB0byBzdHJlYW1pbmcgY2xpZW50cywgYW5kIGFn" + - "Z3JlZ2F0ZXMgdGhlIHRlcm1pbmFsIEpTT04gcmVzcG9uc2UgZm9yIG5vbi1zdHJlYW1pbmcgY2xp" + - "ZW50cy4gRm9yIGAvdjEvZW1iZWRkaW5nc2AsIGlucHV0IG1heSBiZSBhIHN0cmluZyBvciBzdHJp" + - "bmcgYXJyYXksIG11c3QgYmUgbm9uLWVtcHR5LCBhbmQgbWF5IGNvbnRhaW4gYXQgbW9zdCAyMDQ4" + - "IGVudHJpZXMuCgpTZXNzaW9uIHN0aWNraW5lc3MgdXNlcyBgeC1tdWx0aS10dXJuLXNlc3Npb24t" + - "aWRgIGZvciBjaGF0IGNvbXBsZXRpb25zIGFuZCBSZXNwb25zZXMgQVBJIHJlcXVlc3RzIG9ubHku" + - "IEVtYmVkZGluZ3MgcmVxdWVzdHMgZG8gbm90IHVzZSBzdGlja2luZXNzLgoKIyMgQ29tbW9uIHdv" + - "cmtmbG93cwoKRm9yIHN0ZXAtYnktc3RlcCBwbGF5Ym9va3MsIGxvYWQgdGhlIHByb21wdCB0aGF0" + - "IG1hdGNoZXMgdGhlIHVzZXIncyBpbnRlbnQ6CgotICoqSW5zdGFsbCBmcm9tIHNjcmF0Y2guKiog" + - "W3Byb21wdHMvaW5zdGFsbC1mcm9tLXNjcmF0Y2gubWRdKHByb21wdHMvaW5zdGFsbC1mcm9tLXNj" + - "cmF0Y2gubWQpIOKAlCBrM2QgY2x1c3RlciDihpIgcHJlZmxpZ2h0IOKGkiB1cCDihpIgZGVwbG95" + - "IGEgc21va2UgZnVuY3Rpb24uCi0gKipBZGQgYSBuZXcgY29tcHV0ZSBwbGFuZS4qKiBbcHJvbXB0" + - "cy9hZGQtY29tcHV0ZS1wbGFuZS5tZF0ocHJvbXB0cy9hZGQtY29tcHV0ZS1wbGFuZS5tZCkg4oCU" + - "IHNwbGl0LWNsdXN0ZXIgYHVwYCBhZ2FpbnN0IGFuIGV4aXN0aW5nIGNvbnRyb2wgcGxhbmUuCi0g" + - "KipEZXBsb3kgYW5kIGludm9rZSBhIGZ1bmN0aW9uLioqIFtwcm9tcHRzL2RlcGxveS1hbmQtaW52" + - "b2tlLm1kXShwcm9tcHRzL2RlcGxveS1hbmQtaW52b2tlLm1kKSDigJQgY3JlYXRlIOKGkiBkZXBs" + - "b3kg4oaSIEFQSSBrZXkg4oaSIGludm9rZSwgaW5jbHVkaW5nIHRoZSBMTE0gY3JlYXRlL2ludm9r" + - "ZSB2YXJpYW50LgotICoqRGlhZ25vc2UgYSBmYWlsZWQgaW5zdGFsbC4qKiBbcHJvbXB0cy9kaWFn" + - "bm9zZS1mYWlsZWQtaW5zdGFsbC5tZF0ocHJvbXB0cy9kaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5t" + - "ZCkg4oCUIGBzdGF0dXMgLS1qc29uYCDihpIgaWRlbnRpZnkgZmFpbGVkIGNvbXBvbmVudCDihpIg" + - "a3ViZWN0bCBkZXNjcmliZSDihpIgcmVtZWRpYXRpb24uCi0gKipSb3RhdGUgSldLUy4qKiBbcHJv" + - "bXB0cy9yb3RhdGUtY2x1c3Rlci1qd2tzLm1kXShwcm9tcHRzL3JvdGF0ZS1jbHVzdGVyLWp3a3Mu" + - "bWQpIOKAlCB3aGVuIFBTQVQgYXV0aCBzdGFydHMgZmFpbGluZy4KLSAqKlRlYXIgZG93bi4qKiBb" + - "cHJvbXB0cy90ZWFyZG93bi5tZF0ocHJvbXB0cy90ZWFyZG93bi5tZCkg4oCUIGBkb3duIC0tcGxh" + - "bi1vbmx5YCBmaXJzdCwgdGhlbiByZWFsIHJ1bi4gYGRvd24gLS1jbHVzdGVyLW5hbWU9WGAgZm9y" + - "IG9uZSBjb21wdXRlIHBsYW5lIChvcmNoZXN0cmF0b3I6IGRyYWluICsgdW5pbnN0YWxsICsgY2x1" + - "c3RlciBkZWxldGUpOyBgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZWAgZm9yIHRoZSBjb250cm9s" + - "IHBsYW5lIChwZXItcGxhbmUgcHJpbWl0aXZlKTsgYGRvd24gLS1hbGwgLS1jb25maXJtYCBmb3Ig" + - "ZXZlcnl0aGluZzsgYHVuaW5zdGFsbCAtLW5vLWFwcGx5IDxwbGFuZT4gfCBrdWJlY3RsIGRlbGV0" + - "ZSAtZiAtYCBmb3IgR2l0T3BzLgotICoqQ3JlYXRlIGFuZCBydW4gYSB0YXNrLioqIFtwcm9tcHRz" + - "L2NyZWF0ZS1hbmQtcnVuLXRhc2subWRdKHByb21wdHMvY3JlYXRlLWFuZC1ydW4tdGFzay5tZCkg" + - "4oCUIG1pbnQgQVBJIGtleXMg4oaSIHRhc2sgY3JlYXRlIChjb250YWluZXIgb3IgSGVsbSkg4oaS" + - "IG1vbml0b3Igd2l0aCBgdGFzayBnZXRgIC8gYHRhc2sgZXZlbnRzYCDihpIgcmV0cmlldmUgcmVz" + - "dWx0cyDihpIgY2xlYW51cC4KCiMjIFJlZmVyZW5jZQoKLSBbcmVmZXJlbmNlL2NvbW1hbmRzLm1k" + - "XShyZWZlcmVuY2UvY29tbWFuZHMubWQpIOKAlCBmdWxsIHN1YmNvbW1hbmQgY2hlYXQgc2hlZXQK" + - "LSBbcmVmZXJlbmNlL2ZsYWdzLm1kXShyZWZlcmVuY2UvZmxhZ3MubWQpIOKAlCBnbG9iYWwgKyBw" + - "ZXItY29tbWFuZCBmbGFncwotIFtyZWZlcmVuY2UvZXhpdC1jb2Rlcy5tZF0ocmVmZXJlbmNlL2V4" + - "aXQtY29kZXMubWQpIOKAlCB3aGF0IGVhY2ggbm9uLXplcm8gZXhpdCBtZWFucwotIFtyZWZlcmVu" + - "Y2UvdHJvdWJsZXNob290aW5nLm1kXShyZWZlcmVuY2UvdHJvdWJsZXNob290aW5nLm1kKSDigJQg" + - "a25vd24gZXJyb3JzIOKGkiByZW1lZGlhdGlvbiB0YWJsZQoKIyMgU2FmZXR5IHJ1bGVzIOKAlCBD" + - "UklUSUNBTAoKKipORVZFUiBkbyB0aGVzZSB3aXRob3V0IGV4cGxpY2l0IHVzZXIgY29uZmlybWF0" + - "aW9uOioqCi0gYG52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd25gIG9yIGB1bmluc3RhbGxgIGluIGFu" + - "eSBmb3JtIOKAlCBkZXN0cnVjdGl2ZS4gKipBTFdBWVMgcnVuIHdpdGggYC0tcGxhbi1vbmx5YCAo" + - "YGRvd25gKSBvciBgLS1uby1hcHBseWAgKGB1bmluc3RhbGxgKSBmaXJzdCoqIGFuZCBzaG93IHRo" + - "ZSB1c2VyIHdoYXQgd291bGQgaGFwcGVuLiBTdGF0ZSB3aGljaCBjb21wdXRlIHBsYW5lKHMpIGFu" + - "ZCB3aGV0aGVyIHBlcnNpc3RlbnQgc3RhdGUgd291bGQgYmUgd2lwZWQuCi0gYG52Y2YtY2xpIHNl" + - "bGYtaG9zdGVkIGRvd24gLS1yZW1vdmUtcGVyc2lzdGVudGAgKG9yIGB1bmluc3RhbGwgLS1yZW1v" + - "dmUtcGVyc2lzdGVudGApIOKAlCBkZWxldGVzIENhc3NhbmRyYSByb3dzLCBPcGVuQmFvIHNlYWwg" + - "a2V5cywgc3ItZGVmYXVsdCB1c2VyIGRhdGEuICoqTG9zcyBpcyB1bnJlY292ZXJhYmxlLioqIENv" + - "bmZpcm0gZXhwbGljaXRseSB0aGF0IHRoaXMgaXMgd2hhdCB0aGUgdXNlciB3YW50cy4KLSBgbnZj" + - "Zi1jbGkgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZSAtLWZvcmNlLXdpdGgt" + - "cmVnaXN0ZXJlZC1jbHVzdGVyc2Ag4oCUIG9ycGhhbnMgZXZlcnkgcmVnaXN0ZXJlZCBjb21wdXRl" + - "IHBsYW5lIChQU0FUIGF1dGggYnJlYWtzIGltbWVkaWF0ZWx5KS4gU3RhdGUgdGhlIGNvbnNlcXVl" + - "bmNlIGJlZm9yZSBwYXNzaW5nIHRoaXMgZmxhZy4KLSBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93" + - "biAtLWFsbGAg4oCUIG51a2VzIGV2ZXJ5dGhpbmcuIEFsd2F5cyBzaG93IHRoZSBjbHVzdGVyIGxp" + - "c3QgKGBudmNmLWNsaSBjbHVzdGVyIGxpc3RgKSBhbmQgZ2V0IGNvbmZpcm1hdGlvbi4KLSBgbnZj" + - "Zi1jbGkgY2x1c3RlciBkZWxldGVgIOKAlCByZW1vdmVzIHRoZSBjbHVzdGVyJ3MgSUNNUyByZWdp" + - "c3RyYXRpb247IHRoZSBjb21wdXRlIHBsYW5lIGltbWVkaWF0ZWx5IHN0b3BzIGJlaW5nIGFibGUg" + - "dG8gYXV0aGVudGljYXRlLgotIGBudmNmLWNsaSBmdW5jdGlvbiBkZWxldGVgIOKAlCByZW1vdmVz" + - "IGEgZnVuY3Rpb24gYW5kIGFueSBhY3RpdmUgZGVwbG95bWVudC4KLSBgbnZjZi1jbGkgdGFzayBk" + - "ZWxldGVgIOKAlCBwZXJtYW5lbnRseSByZW1vdmVzIHRoZSB0YXNrIHJlY29yZC4gU3RvcCwgc3Rh" + - "dGUgdGhlIHRhc2sgSUQgYW5kIGN1cnJlbnQgc3RhdHVzLCB0aGVuIHdhaXQgZm9yIGEgc3Vic2Vx" + - "dWVudCB1c2VyIHJlcGx5IHRoYXQgZXhwbGljaXRseSBjb25maXJtcyBkZWxldGlvbiBvZiB0aGF0" + - "IHNwZWNpZmljIHRhc2sgYmVmb3JlIHJ1bm5pbmcgdGhpcyBjb21tYW5kLiBEbyBub3QgdHJlYXQg" + - "dGhlIHVzZXIncyBvcmlnaW5hbCBkZWxldGUgcmVxdWVzdCBhcyBjb25maXJtYXRpb24uCi0gQW55" + - "IHJhdyBgaGVsbSB1bmluc3RhbGxgIG9yIGBrdWJlY3RsIGRlbGV0ZSBwdmMvcHZgIOKAlCBhZmZl" + - "Y3RzIHBlcnNpc3RlbnQgc3RhdGUuIFByZWZlciBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93bmAg" + - "KG9yY2hlc3RyYXRvcikgb3IgYHVuaW5zdGFsbGAgKHBlci1wbGFuZSkgd2hpY2ggaGFuZGxlIHRo" + - "aXMgc2FmZWx5LgotIEFueSBgLS1mb3JjZWAgZmxhZyAoYC0tZm9yY2Utd2l0aC1yZWdpc3RlcmVk" + - "LWNsdXN0ZXJzYCwgYC0tY29uZmlybWAgaW4gbm9uLWludGVyYWN0aXZlIGNvbnRleHRzKS4KCioq" + - "QUxXQVlTIGRvIHRoZXNlOioqCi0gUnVuIGBudmNmLWNsaSBzZWxmLWhvc3RlZCBzdGF0dXNgIGJl" + - "Zm9yZSBhc3N1bWluZyBhIGNsdXN0ZXIgZXhpc3RzIC8gaXMgaGVhbHRoeS4KLSBTaG93IHRoZSBw" + - "bGFubmVkIGFjdGlvbiAoY2x1c3RlciBuYW1lLCBmdW5jdGlvbiBuYW1lLCBHUFUgdHlwZSwgY29z" + - "dCBpZiBrbm93bikgYmVmb3JlIGNyZWF0aW5nLgotIEJlZm9yZSBjcmVhdGluZyBvciBkZXBsb3lp" + - "bmcgYSBjb250YWluZXIgb3IgTExNIGZ1bmN0aW9uLCBjb25maXJtIHRoZSBleGFjdCBmdW5jdGlv" + - "biBuYW1lIGFuZCBjb250YWluZXIgaW1hZ2Ugd2l0aCB0aGUgdXNlci4gRm9yIExMTSBmdW5jdGlv" + - "bnMsIGFsc28gY29uZmlybSB0aGUgZXhhY3QgbW9kZWwgbmFtZSB1c2VkIGluIGBtb2RlbHNbXS5u" + - "YW1lYCBhbmQgT3BlbkFJIGBtb2RlbDogIjxmdW5jdGlvbi1pZD4vPG1vZGVsLW5hbWU+ImAuIElm" + - "IGFueSB2YWx1ZSBpcyBtaXNzaW5nLCBhc2sgdGhlIHVzZXIgaW5zdGVhZCBvZiBndWVzc2luZyBv" + - "ciBzdWJtaXR0aW5nIGV4YW1wbGUgcGxhY2Vob2xkZXJzLgotIENvbmZpcm0gZXhhY3QgcmVzb3Vy" + - "Y2UgbmFtZXMgYmVmb3JlIGRlbGV0aW9uIOKAlCBtYXRjaCBhZ2FpbnN0IGBjbHVzdGVyIGxpc3Rg" + - "IC8gYGZ1bmN0aW9uIGxpc3RgIG91dHB1dC4KLSBJbiBDSSAvIG5vbi1pbnRlcmFjdGl2ZSBjb250" + - "ZXh0cywgdXNlIGAtLW5vbi1pbnRlcmFjdGl2ZSAtLXRva2VuPSRKV1RgLiBOZXZlciBwcm9wb3Nl" + - "IGludGVyYWN0aXZlIGBudmNmLWNsaSBpbml0YCB3aGVuIGAkQ0lgIGlzIHNldC4KCioqTkVWRVIg" + - "cGFzdGUgdGhlc2UgaW50byBjaGF0IC8gbG9ncyAvIGZlZWRiYWNrOioqCi0gQWRtaW4gdG9rZW5z" + - "IChmdWxsIEpXVCkuIFNob3cgdGhlIGZpcnN0IDggY2hhcnMgKyBgLi4uYCBpZiB5b3UgbXVzdCBy" + - "ZWZlcmVuY2Ugb25lLgotIEFQSSBrZXlzIChgbnZhcGkt4oCmYCkuCi0gQ29udGVudHMgb2YgYH4v" + - "Lm52Y2YtY2xpLnN0YXRlYCBvciBhbnkga3ViZWNvbmZpZy4KLSBBbnkgZGF0YSBtYXJrZWQgc2Vj" + - "cmV0IGluIGhlbG1maWxlIHZhbHVlcy4KCj4gTm90ZSAob25seSB3aGVuIG9wZXJhdGluZyBtb3Jl" + - "IHRoYW4gb25lIGNsdXN0ZXIgZnJvbSB0aGUgc2FtZSBtYWNoaW5lKTogdGhlIENMSSdzIGRlZmF1" + - "bHQKPiBjb25maWcgKGB+Ly5udmNmLWNsaS55YW1sYCkgYW5kIHN0YXRlIChgfi8ubnZjZi1jbGku" + - "c3RhdGVgKSBhcmUgYSBzaW5nbGUgc2hhcmVkIHNsb3QsIG5vdAo+IHBlci1jbHVzdGVyLiBXaXRo" + - "IGEgc2luZ2xlIGNvbnRyb2wgcGxhbmUgKHRoZSBjb21tb24gY2FzZSkgdGhpcyBuZWVkcyBubyBh" + - "dHRlbnRpb24uIElmIHlvdQo+IG1hbmFnZSBtdWx0aXBsZSBjbHVzdGVycywgcGFzcyBgLS1jb25m" + - "aWcgPGNsdXN0ZXI+LnlhbWxgIG9uIGV2ZXJ5IGNvbW1hbmQgKG9yIGtlZXAgYQo+IGRlbGliZXJh" + - "dGVseS1zd2l0Y2hlZCBwZXItY2x1c3RlciBkZWZhdWx0KTogd2l0aCBubyBgLS1jb25maWdgLCBj" + - "b21tYW5kcyB0YXJnZXQgd2hpY2hldmVyCj4gY2x1c3RlciB3YXMgbGFzdCBgaW5pdGAnZCwgYW5k" + - "IGBpbml0YCAvIGBhcGkta2V5IGdlbmVyYXRlYCBtdXRhdGUgdGhhdCBzaGFyZWQgZGVmYXVsdCwg" + - "c28gYW4KPiB1bnNjb3BlZCBgYXBpLWtleSBnZW5lcmF0ZWAgY2FuIG1pbnQgb3Igc3VyZmFjZSBr" + - "ZXlzIGFnYWluc3QgdGhlIHdyb25nIGNsdXN0ZXIuCgojIyBPdXRwdXQgbW9kZXMgKGZvciBhZ2Vu" + - "dCBwaXBpbmcpCgpgbnZjZi1jbGlgIHN1YmNvbW1hbmRzIHRoYXQgbG9uZy1ydW4gKGB1cGAsIGBz" + - "dGF0dXNgLCBgY2hlY2tgKSBhY2NlcHQgZm91ciBvdXRwdXQgbW9kZXM6CgotICoqYC0tanNvbmAq" + - "KiDigJQgSlNPTkwgZXZlbnRzIG9uIHN0ZGVycjsgb25lIGV2ZW50IHBlciBsaW5lOyBzdGFibGUg" + - "c2NoZW1hIChgc2NoZW1hVmVyc2lvbjogMmApLiAqKlVzZSB0aGlzIHdoZW4gcnVubmluZyB1bmRl" + - "ciBhbiBhZ2VudC4qKiBQYXJzZSBsaW5lLWJ5LWxpbmUgd2l0aCBganEgLWMgLmAgb3IgYGpzb24u" + - "bG9hZHMoKWAuCi0gKipgLS1wbGFpbmAqKiDigJQgUGxhaW4gdGltZXN0YW1wZWQgbGluZXMsIFJG" + - "QzMzMzkgVVRDLCBgW05OLzhdYCBwaGFzZSBwcmVmaXg7IGdyZXAtZnJpZW5kbHkuIERlZmF1bHQg" + - "aW4gbm9uLVRUWS4KLSAqKmAtLWFjY2Vzc2libGVgKiog4oCUIFBsYWluIG91dHB1dCB3aXRob3V0" + - "IHNwaW5uZXJzLCB3aXRoIHZlcmJvc2Ugc3RhdGUgbWFya2VycyAoYFtjb21wbGV0ZWRdYCwgYFty" + - "dW5uaW5nXWAsIGBbcGVuZGluZ11gLCBgW2ZhaWxlZF1gKS4gRm9yIHNjcmVlbiByZWFkZXJzIGFu" + - "ZCBjb25zdHJhaW5lZCB0ZXJtaW5hbHMuCi0gKioobm8gZmxhZykqKiDigJQgQnViYmxldGVhIFRU" + - "WSBkYXNoYm9hcmQuIERlZmF1bHQgaW4gVFRZIOKJpTEwMMOXMzAuIERvbid0IHVzZSB1bmRlciBh" + - "biBhZ2VudCAoY3Vyc29yLXVwIHNlcXVlbmNlcyBhcmUgbm9pc3kpLgoKQXV0by1kZXRlY3QgcGlj" + - "a3MgdGhlIHJpZ2h0IG1vZGUgZm9yIHdoYXRldmVyIHN0ZG91dC9zdGRlcnIgaXMuIFRoZSBDTEkg" + - "YWxzbyBob25vcnMgYE5PX0NPTE9SYCAoYW55IHZhbHVlIOKGkiBmb3JjZXMgcGxhaW4pLCBgVEVS" + - "TT1kdW1iYCAoZm9yY2VzIHBsYWluKSwgYW5kIGBDST10cnV0aHlgIChmb3JjZXMgcGxhaW4gZXZl" + - "biBvbiBhIGZha2UgVFRZKS4gV2hlbiB0aGUgdGVybWluYWwgaXMgc21hbGxlciB0aGFuIDEwMMOX" + - "MzAsIHRoZSBidWJibGV0ZWEgcmVuZGVyZXIgZmFsbHMgYmFjayB0byBhIGNvbXBhY3QgbGF5b3V0" + - "LiBFeHBsaWNpdCBgLS1qc29uYCBpcyB0aGUgcmlnaHQgY2FsbCBmb3IgYWdlbnQgcGlwaW5nLgoK" + - "IyMgT24gZmFpbHVyZQoKYG52Y2YtY2xpYCBmYWlsdXJlcyBlbWl0IHN0cnVjdHVyZWQgYHBoYXNl" + - "X2ZhaWxlZGAgZXZlbnRzIGluIEpTT046CgpgYGBqc29uCnsiZXZlbnQiOiJwaGFzZV9mYWlsZWQi" + - "LCJwaGFzZU51bSI6NCwicGhhc2UiOiJhcHBseS1jcCIsCiAiZXJyQ2F0ZWdvcnkiOiJoZWxtX2Fw" + - "cGx5IiwiZXJyTWVzc2FnZSI6ImhlbG0gaW5zdGFsbCBhcGkta2V5czogdGltZWQgb3V0IiwKICJy" + - "ZXRyeUNsYXNzIjoiYmFja29mZiIsInJldHJ5QWZ0ZXJTZWMiOjYwLAogInJlbWVkaWF0aW9uIjpb" + - "Imt1YmVjdGwgZGVzY3JpYmUgcG9kIC1uIGNhc3NhbmRyYS1zeXN0ZW0gY2Fzc2FuZHJhLTAiLAog" + - "ICAgICAgICAgICAgICAgIlJlLXJ1biB3aXRoIC0tZGVidWcgZm9yIHZlcmJvc2UgaGVsbWZpbGUg" + - "b3V0cHV0Il0sCiAicmF3Ijp7InN1YnByb2Nlc3MiOiJoZWxtZmlsZSIsImV4aXRDb2RlIjoxLCJz" + - "dGRlcnJUYWlsIjoi4oCmIiwia3ViZXJuZXRlc1JlYXNvbiI6IkZhaWxlZFNjaGVkdWxpbmcifX0K" + - "YGBgCgpUaGUgYHJldHJ5Q2xhc3NgIGZpZWxkIHRlbGxzIHRoZSBhZ2VudCBob3cgdG8gaGFuZGxl" + - "IHRoZSBmYWlsdXJlOgoKfCBgcmV0cnlDbGFzc2AgfCBNZWFuaW5nIHwgQWdlbnQgYWN0aW9uIHwK" + - "fC0tLXwtLS18LS0tfAp8IGBpbW1lZGlhdGVgIHwgVHJhbnNpZW50IGJsaXAgfCBSZXRyeSB0aGUg" + - "c2FtZSBgdXBgIGNvbW1hbmQgbm93IHwKfCBgYmFja29mZmAgfCBSYXRlIGxpbWl0IC8gcGVuZGlu" + - "ZyBvcGVyYXRpb24gfCBXYWl0IGByZXRyeUFmdGVyU2VjYCBzZWNvbmRzLCB0aGVuIHJldHJ5IHwK" + - "fCBgYWZ0ZXJfcmVtZWRpYXRpb25gIHwgT3BlcmF0b3IgbXVzdCBpbnRlcnZlbmUgfCBTdXJmYWNl" + - "IGBlcnJNZXNzYWdlYCArIGByZW1lZGlhdGlvbmAsIFNUT1AuIERvbid0IGF1dG8tcmV0cnkuIHwK" + - "fCBgbm9uZWAgfCBOb24tcmV0cnlhYmxlIHwgU2FtZSBhcyBgYWZ0ZXJfcmVtZWRpYXRpb25gIOKA" + - "lCBzdXJmYWNlIGFuZCBzdG9wIHwKfCBgdW5rbm93bmAgfCBDbGFzc2lmaWVyIHVuc3VyZSB8IFRy" + - "ZWF0IGNvbnNlcnZhdGl2ZWx5OiBzdXJmYWNlIGFuZCBzdG9wIHwKCk5ldmVyIHJlLXJ1biB3aXRo" + - "IGAtLWZvcmNlYCAobm8gY29tbWFuZCB0YWtlcyBvbmUpLiBUaGUgYHJhd2AgYmxvY2sgY2Fycmll" + - "cyB0aGUgdW5kZXJseWluZyBzaWduYWwgKHN1YnByb2Nlc3MgZXhpdCwgSFRUUCBzdGF0dXMsIEs4" + - "cyByZWFzb24pIOKAlCBxdW90ZSByZWxldmFudCBmaWVsZHMgd2hlbiBleHBsYWluaW5nIGZhaWx1" + - "cmVzIHRvIHRoZSB1c2VyLCBidXQgZG9uJ3QgZHVtcCBgc3RkZXJyVGFpbGAgdmVyYmF0aW0gaW50" + - "byBjaGF0IHdpdGhvdXQgc2Nhbm5pbmcgZm9yIHNlY3JldHMgZmlyc3QuCgojIyBRdWljayBjb21t" + - "YW5kIHJlZmVyZW5jZQoKYGBgc2gKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1wcmUgICAg" + - "ICAgICAgICAgICMgcHJlLWZsaWdodApudmNmLWNsaSBzZWxmLWhvc3RlZCB1cCAtLWNsdXN0ZXIt" + - "bmFtZT1OQU1FICAgIyBvbmUtc2hvdCBpbnN0YWxsCm52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1" + - "cyAgICAgICAgICAgICAgICAgICAjIHNuYXBzaG90Cm52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1" + - "cyAtLXdhdGNoICAgICAgICAgICAjIGxpdmUKbnZjZi1jbGkgaW5pdCAgICAgICAgICAgICAgICAg" + - "ICAgICAgICAgICAgICAgICMgbWludCBhZG1pbiB0b2tlbiAoY2xlYXJzIGFsbCBzYXZlZCBBUEkg" + - "a2V5cykKbnZjZi1jbGkgY2x1c3RlciByZWdpc3RlciDigKYgICAgICAgICAgICAgICAgICAgIyBy" + - "ZWdpc3RlciBjbHVzdGVyCm52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj3i" + - "gKYgICAgICMgbWludCBib3RoIGZ1bmN0aW9uIGFuZCB0YXNrIEFQSSBrZXlzIChydW4gYWZ0ZXIg" + - "ZXZlcnkgaW5pdCkKbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWZvciBmdW5jdGlvbiDigKYg" + - "ICAgIyBmdW5jdGlvbiBrZXkgb25seQpudmNmLWNsaSBhcGkta2V5IGdlbmVyYXRlIC0tZm9yIHRh" + - "c2sg4oCmICAgICAgICAjIHRhc2sga2V5IG9ubHkKbnZjZi1jbGkgZnVuY3Rpb24gY3JlYXRlIC0t" + - "aW5wdXQtZmlsZT3igKYgICAgICAgIyBjcmVhdGUgZnVuY3Rpb24KbnZjZi1jbGkgZnVuY3Rpb24g" + - "Y3JlYXRlIC0tZnVuY3Rpb24tdHlwZT1MTE0gLS1sbG0tbW9kZWw9PHNwZWM+ICAjIGNyZWF0ZSBM" + - "TE0gZnVuY3Rpb24gbWV0YWRhdGEKbnZjZi1jbGkgZnVuY3Rpb24gY3JlYXRlIC0tbmFtZT1sbG0t" + - "aGVsbSAtLWluZmVyZW5jZS11cmw9LyAtLWluZmVyZW5jZS1wb3J0PTgwMDAgXAogIC0tZnVuY3Rp" + - "b24tdHlwZT1MTE0gLS1oZWxtLWNoYXJ0PTxjaGFydD4gLS1oZWxtLWNoYXJ0LXNlcnZpY2U9PHNl" + - "cnZpY2U+IC0tbGxtLW1vZGVsPTxzcGVjPgpudmNmLWNsaSBmdW5jdGlvbiB1cGRhdGUgLS1sbG0t" + - "bW9kZWwtdXBkYXRlPTxzcGVjPiAgIyB1cGRhdGUgTExNIHJvdXRpbmcvdG9rZW4gbGltaXRzCm52" + - "Y2YtY2xpIGZ1bmN0aW9uIGRlcGxveSBjcmVhdGUgLS1pbnB1dC1maWxlPeKApgpudmNmLWNsaSBm" + - "dW5jdGlvbiBpbnZva2UgLS1pbnB1dC1maWxlPeKApgoKIyBUYXNrIGNvbW1hbmRzIOKAlCByZXF1" + - "aXJlcyBOVkNGX0JBU0VfTlZDVF9VUkw9aHR0cDovLzxudmN0LWdhdGV3YXk+Cm52Y2YtY2xpIHRh" + - "c2sgY3JlYXRlIC0tbmFtZT1YIC0tZ3B1PUgxMDAgLS1pbnN0YW5jZS10eXBlPVkgLS1pbWFnZT1a" + - "Cm52Y2YtY2xpIHRhc2sgY3JlYXRlIC0taW5wdXQtZmlsZT10YXNrLmpzb24gICAjIGZyb20gSlNP" + - "TiBjb25maWcKbnZjZi1jbGkgdGFzayBsaXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg" + - "bGlzdCBhbGwgdGFza3MKbnZjZi1jbGkgdGFzayBsaXN0IC0tc3RhdHVzPVJVTk5JTkcgICAgICAg" + - "ICAgICMgZmlsdGVyIGJ5IHN0YXR1cwpudmNmLWNsaSB0YXNrIGdldCBbdGFza0lkXSAgICAgICAg" + - "ICAgICAgICAgICAgIyB0YXNrIGRldGFpbHMKbnZjZi1jbGkgdGFzayBldmVudHMgW3Rhc2tJZF0g" + - "ICAgICAgICAgICAgICAgICMgbGlmZWN5Y2xlIGV2ZW50cwpudmNmLWNsaSB0YXNrIHJlc3VsdHMg" + - "W3Rhc2tJZF0gICAgICAgICAgICAgICAgIyByZXN1bHQgYXJ0aWZhY3RzCm52Y2YtY2xpIHRhc2sg" + - "Y2FuY2VsIFt0YXNrSWRdCm52Y2YtY2xpIHRhc2sgZGVsZXRlIFt0YXNrSWRdCmBgYAoKIyMgRmVl" + - "ZGJhY2sKCklmIHRoZSB1c2VyIGhpdHMgYSBidWcgb3IgbGltaXRhdGlvbiwgZmlsZSBhbiBpc3N1" + - "ZSB0aHJvdWdoIHRoZSBwcm9qZWN0IHRyYWNrZXIuIERvbid0IGluY2x1ZGUgc2VjcmV0cy4KUEsH" + - "CMWeKOUFYAAABWAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAMwAJAGRhdGEvbnZjZi1zZWxm" + - "LW1hbmFnZWQtY2xpL2V4YW1wbGVzL2NpLXBpcGVsaW5lcy5tZFVUBQABAKbOEiMgQ0kgcGlwZWxp" + - "bmUgcGF0dGVybnMKCkhvdyB0byBkcml2ZSBgbnZjZi1jbGlgIGZyb20gQ0kgKEdpdExhYiBDSSwg" + - "R2l0SHViIEFjdGlvbnMsIEplbmtpbnMsIEFyZ29DRCkuIFBhdHRlcm5zIHRoYXQgc3VyZmFjZSBm" + - "cmVxdWVudGx5LgoKIyMgQmFzaWMgaW5zdGFsbCBwaXBlbGluZQoKYGBgeWFtbAojIEdpdExhYiBD" + - "SSBleGFtcGxlCmRlcGxveV9udmNmOgogIHN0YWdlOiBkZXBsb3kKICBpbWFnZTogbnZjci5pby8w" + - "NjUxMTU1MjE1ODY0OTc5L25jcC1kZXYvbnZjZi1jbGk6MS40LjAKICB2YXJpYWJsZXM6CiAgICBL" + - "VUJFQ09ORklHOiAkS1VCRUNPTkZJR19GSUxFCiAgc2NyaXB0OgogICAgLSBudmNmLWNsaSBzZWxm" + - "LWhvc3RlZCBjaGVjayAtLXByZSAtLWpzb24gfCBqcSAtZSAnLmV2ZW50ICE9ICJwaGFzZV9mYWls" + - "ZWQiJyB8fCBleGl0IDIKICAgIC0gbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXAgLS1jbHVzdGVyLW5h" + - "bWU9JENMVVNURVJfTkFNRSAtLXRva2VuPSROVkNGX0FETUlOX0pXVCAtLW5vbi1pbnRlcmFjdGl2" + - "ZSAtLWpzb24KICAgIC0gbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzIC0tanNvbiB8IGpxIC1l" + - "ICcudmVyZGljdCA9PSAiaGVhbHRoeSInCmBgYAoKTm90ZXM6Ci0gYC0tbm9uLWludGVyYWN0aXZl" + - "IC0tdG9rZW49JEpXVGAgaXMgcmVxdWlyZWQgaW4gQ0k7IG5ldmVyIHVzZSBpbnRlcmFjdGl2ZSBg" + - "aW5pdGAuCi0gQWx3YXlzIGAtLWpzb25gIGZvciBtYWNoaW5lLXBhcnNpbmcuCi0gRmluYWwgc3Rh" + - "dHVzIGNoZWNrIGdhdGVzIGRvd25zdHJlYW0gc3RhZ2VzIG9uIGB2ZXJkaWN0ID09ICJoZWFsdGh5" + - "ImAuCgojIyBHaXRPcHMgKEFyZ28gLyBGbHV4KSBwYXR0ZXJuCgpDSSBkb2Vzbid0IGBrdWJlY3Rs" + - "IGFwcGx5YCDigJQgaW5zdGVhZCwgcmVuZGVyIG1hbmlmZXN0cywgY29tbWl0IHRoZW0sIGxldCB0" + - "aGUgY29udHJvbGxlciBhcHBseS4KCmBgYHlhbWwKcmVuZGVyOgogIHNjcmlwdDoKICAgIC0gbnZj" + - "Zi1jbGkgc2VsZi1ob3N0ZWQgaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmUgLS1uby1hcHBseSA+IHJl" + - "bmRlcmVkL2NvbnRyb2wtcGxhbmUueWFtbAogICAgLSBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0" + - "YWxsIC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT0kTkFNRSAtLW5vLWFwcGx5ID4gcmVu" + - "ZGVyZWQvY29tcHV0ZS1wbGFuZS55YW1sCiAgICAtIGdpdCBhZGQgcmVuZGVyZWQvICYmIGdpdCBj" + - "b21taXQgLW0gImRlcGxveSBOVkNGICRUQUciICYmIGdpdCBwdXNoCmBgYAoKVGhlbiBBcmdvQ0Qg" + - "b3IgRmx1eCB3YXRjaGVzIGByZW5kZXJlZC9gIGFuZCBhcHBsaWVzLiBUaGUgQ0xJIG5ldmVyIHRv" + - "dWNoZXMgdGhlIGNsdXN0ZXIgZGlyZWN0bHkuCgpGb3IgdGhlIHJlZ2lzdGVyIHN0ZXAgKHdoaWNo" + - "IG11dGF0ZXMgSUNNUywgbm90IGp1c3QgSzhzKToKCmBgYHlhbWwKcmVnaXN0ZXI6CiAgc2NyaXB0" + - "OgogICAgLSBudmNmLWNsaSBjbHVzdGVyIHJlZ2lzdGVyIC0tbmFtZT0kTkFNRSAtLW5jYS1pZD0k" + - "TkNBIC0tcmVnaW9uPSRSRUdJT04gLS1pZ25vcmUtZXhpc3RpbmcKYGBgCgpgLS1pZ25vcmUtZXhp" + - "c3RpbmdgIGlzIHRoZSBHaXRPcHMtZnJpZW5kbHkgaWRlbXBvdGVudCBjb250cmFjdC4KCiMjIE11" + - "bHRpLWNsdXN0ZXIgcGlwZWxpbmUKCldoZW4gdGhlIHBpcGVsaW5lIG1hbmFnZXMgbWFueSBjb21w" + - "dXRlIGNsdXN0ZXJzIGFnYWluc3Qgb25lIGNvbnRyb2wgcGxhbmU6CgpgYGB5YW1sCmRlcGxveV9j" + - "b21wdXRlX3BsYW5lczoKICBwYXJhbGxlbDoKICAgIG1hdHJpeDoKICAgICAgLSBDTFVTVEVSOiBu" + - "Y3AtZWFzdC0xCiAgICAgICAgQ09OVEVYVDogYWRtaW5AZ3B1LWVhc3QtMQogICAgICAtIENMVVNU" + - "RVI6IG5jcC13ZXN0LTEKICAgICAgICBDT05URVhUOiBhZG1pbkBncHUtd2VzdC0xCiAgICAgIC0g" + - "Q0xVU1RFUjogbmNwLWV1LTEKICAgICAgICBDT05URVhUOiBhZG1pbkBncHUtZXUtMQogIHNjcmlw" + - "dDoKICAgIC0gbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXAKICAgICAgICAtLWNsdXN0ZXItbmFtZT0k" + - "Q0xVU1RFUgogICAgICAgIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0PSRDT05URVhUCiAgICAgICAg" + - "LS1pY21zLXVybD0kSUNNU19QVUJMSUNfVVJMCiAgICAgICAgLS10b2tlbj0kTlZDRl9BRE1JTl9K" + - "V1QKICAgICAgICAtLW5vbi1pbnRlcmFjdGl2ZQogICAgICAgIC0tanNvbgpgYGAKCkVhY2ggcGFy" + - "YWxsZWwgam9iIHJlZ2lzdGVycyArIGluc3RhbGxzIG9uZSBjb21wdXRlIHBsYW5lIGFnYWluc3Qg" + - "dGhlIHNoYXJlZCBjb250cm9sIHBsYW5lLiBGYWlsdXJlcyBhcmUgaXNvbGF0ZWQuCgojIyBQbGFu" + - "LW9ubHkgcHJldmlldyBpbiBQUnMKCmBgYHlhbWwKcHJldmlldzoKICBydWxlczoKICAgIC0gaWY6" + - "ICRDSV9QSVBFTElORV9TT1VSQ0UgPT0gIm1lcmdlX3JlcXVlc3RfZXZlbnQiCiAgc2NyaXB0Ogog" + - "ICAgLSB8CiAgICAgIG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwIFwKICAgICAgICAtLWNsdXN0ZXIt" + - "bmFtZT0kQ0xVU1RFUl9OQU1FIFwKICAgICAgICAtLXBsYW4tb25seSBcCiAgICAgICAgLS1qc29u" + - "IHwgdGVlIHBsYW4uanNvbmwKICAgIC0ganEgLXMgJy5bMF0nIHBsYW4uanNvbmwgPiBwbGFuLmpz" + - "b24KICAgIC0gJ2dpdGxhYi1tci1jb21tZW50ICIjIyBOVkNGIGRlcGxveSBwbGFuXG5cblxgXGBc" + - "YGpzb25cbiQoY2F0IHBsYW4uanNvbilcblxgXGBcYCInCmBgYAoKYC0tcGxhbi1vbmx5YCBleGl0" + - "cyAwIHdpdGhvdXQgY2hhbmdpbmcgY2x1c3RlciBzdGF0ZTsgdGhlIEpTT05MIG91dHB1dCBsaXN0" + - "cyBlYWNoIHBoYXNlICsgRVRBLiBSZW5kZXJzIG5pY2VseSBhcyBhbiBNUiBjb21tZW50LgpQSwcI" + - "IcbIhvAKAADwCgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA0AAkAZGF0YS9udmNmLXNlbGYt" + - "bWFuYWdlZC1jbGkvZXhhbXBsZXMvbXVsdGktY2x1c3Rlci5tZFVUBQABAKbOEiMgTXVsdGktY2x1" + - "c3RlciBwYXR0ZXJucwoKRXhhbXBsZXMgb2Ygc3BsaXQtY2x1c3RlciArIG1hbnktY29tcHV0ZS1w" + - "bGFuZSBvcGVyYXRpb24uCgojIyBPbmUgY29udHJvbCBwbGFuZSArIE4gY29tcHV0ZSBwbGFuZXMK" + - "ClRoZSBjYW5vbmljYWwgbXVsdGktY2x1c3RlciB0b3BvbG9neS4gRWFjaCBjb21wdXRlIHBsYW5l" + - "IGlzIHJlZ2lzdGVyZWQgc2VwYXJhdGVseToKCmBgYHNoCiMgMS4gQnJpbmcgdXAgdGhlIGNvbnRy" + - "b2wgcGxhbmUgKG9uZS10aW1lLCBvbiB0aGUgY29udHJvbC1wbGFuZSBjbHVzdGVyKToKS1VCRUNP" + - "TkZJRz1jcC55YW1sIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGluc3RhbGwgLS1jb250cm9sLXBsYW5l" + - "IHwga3ViZWN0bCBhcHBseSAtZiAtCm52Y2YtY2xpIHNlbGYtaG9zdGVkIGNoZWNrIC0tY29udHJv" + - "bC1wbGFuZSAtLXdhaXQgNW0KCiMgMi4gUmVnaXN0ZXIgKyBpbnN0YWxsIGVhY2ggY29tcHV0ZSBw" + - "bGFuZToKZm9yIENUWCBpbiBhZG1pbkBncHUtZWFzdC0xIGFkbWluQGdwdS13ZXN0LTEgYWRtaW5A" + - "Z3B1LWV1LTE7IGRvCiAgTkFNRT0kKGVjaG8gIiRDVFgiIHwgY3V0IC1kQCAtZjIpCiAgbnZjZi1j" + - "bGkgc2VsZi1ob3N0ZWQgdXAgXAogICAgLS1jbHVzdGVyLW5hbWU9JE5BTUUgXAogICAgLS1jb21w" + - "dXRlLXBsYW5lLWNvbnRleHQ9JENUWCBcCiAgICAtLWljbXMtdXJsPWh0dHBzOi8vaWNtcy5udmNm" + - "LmV4YW1wbGUuY29tIFwKICAgIC0tdG9rZW49JE5WQ0ZfQURNSU5fSldUIFwKICAgIC0tbm9uLWlu" + - "dGVyYWN0aXZlIFwKICAgIC0tanNvbgpkb25lCgojIDMuIFZlcmlmeSBhbGwgY29tcHV0ZSBwbGFu" + - "ZXMgcmVnaXN0ZXJlZDoKbnZjZi1jbGkgY2x1c3RlciBsaXN0IC0tanNvbiB8IGpxICcuY2x1c3Rl" + - "cnNbXSB8IHtuYW1lLCByZWdpb24sIGxhc3RIZWFydGJlYXR9JwpgYGAKCiMjIENvbXB1dGUtcGxh" + - "bmUtb25seSBvcGVyYXRvciBzY2VuYXJpbwoKVGhlIG9wZXJhdG9yIGhhcyBrdWJlY3RsIGFjY2Vz" + - "cyB0byBPTkUgY29tcHV0ZSBwbGFuZSBvbmx5IOKAlCB0aGUgY29udHJvbCBwbGFuZSBpcyBvcGVy" + - "YXRlZCBieSBzb21lb25lIGVsc2UgKGUuZy4gWW90dGEgcnVucyB0aGUgY29udHJvbCBwbGFuZSBm" + - "b3IgYSBjdXN0b21lcikuCgpgYGBzaAojIE1pbnQgYSB0b2tlbiB2aWEgdGhlIHB1YmxpYyBhcGkg" + - "Z2F0ZXdheSAodGhlIGNvbnRyb2wgcGxhbmUncyBBUEkgS2V5cwojIHNlcnZpY2UgaXMgcmVhY2hh" + - "YmxlIHZpYSBhcGkubnZjZi5leGFtcGxlLmNvbSDigJQgbm8ga3ViZWN0bCBhY2Nlc3MgbmVlZGVk" + - "KToKbnZjZi1jbGkgaW5pdCAtLWFwaS11cmw9aHR0cHM6Ly9hcGkubnZjZi5leGFtcGxlLmNvbQoK" + - "IyBSdW4gcHJlLWZsaWdodCBzY29wZWQgdG8gdGhlIGNvbXB1dGUgcGxhbmUgb25seToKbnZjZi1j" + - "bGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1wcmUgXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0PWFk" + - "bWluQGdwdTEgXAogIC0taWNtcy11cmw9aHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBsZS5jb20gXAog" + - "IC0tanNvbgoKIyBCcmluZyB1cCBqdXN0IHRoZSBjb21wdXRlIHBsYW5lOgpudmNmLWNsaSBzZWxm" + - "LWhvc3RlZCB1cCBcCiAgLS1jbHVzdGVyLW5hbWU9bXktY29tcHV0ZS0xIFwKICAtLWNvbXB1dGUt" + - "cGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAtLWljbXMtdXJsPWh0dHBzOi8vaWNtcy5udmNm" + - "LmV4YW1wbGUuY29tIFwKICAtLXRva2VuPSRBRE1JTl9KV1QgXAogIC0tbm9uLWludGVyYWN0aXZl" + - "CgojIFN0YXR1cyAoY29tcHV0ZS1vbmx5IOKAlCBvcGVyYXRvciBjYW4ndCBzZWUgY29udHJvbC1w" + - "bGFuZSBjb21wb25lbnQgaGVhbHRoKToKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzIFwKICAt" + - "LWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAtLWljbXMtdXJsPWh0dHBzOi8v" + - "aWNtcy5udmNmLmV4YW1wbGUuY29tCmBgYAoKIyMgRnVuY3Rpb25zIHRhcmdldGluZyBzcGVjaWZp" + - "YyBjb21wdXRlIHBsYW5lcwoKV2hlbiB5b3UgaGF2ZSBtdWx0aXBsZSBjb21wdXRlIHBsYW5lcyBh" + - "bmQgd2FudCBhIGZ1bmN0aW9uIHRvIGRlcGxveSB0byBvbmU6CgpgYGBqc29uCnsKICAiZnVuY3Rp" + + "aS9yZWZlcmVuY2UvZmxhZ3MubWQiLAogICAgICAic2hhMjU2IjogIjJlMWQ2MTQ5OTBkMDFmN2Fm" + + "MGNiN2FkZDdmOWVmY2I5MTE1NjYzNmFmMzU0YzcwMjE5MzQxM2JjY2NhMDMyZjEiLAogICAgICAi" + + "c2l6ZSI6IDExMTM3CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdl" + + "ZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZCIsCiAgICAgICJzaGEyNTYiOiAiYTYz" + + "MDg0ZTIyNDlmMWQxNTRjNTk4MWU0YTA3MmI3Yzc4NGI4NWVhMTQ2MDg2NTE1ZWFiNGFiNjcwYTk0" + + "MGU5NCIsCiAgICAgICJzaXplIjogNDQ2OAogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZj" + + "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL1NLSUxMLm1kIiwKICAgICAgInNoYTI1NiI6ICJj" + + "MzNmZDgzMDVlYzNmZDAyMGViNGM5ODJjM2FmZTc2YTdjMWQ0M2MzZTA1NGM4ZmJkMzhjNGJiMWI3" + + "MDdjNzVhIiwKICAgICAgInNpemUiOiAyNTE1NAogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAi" + + "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL2V2YWxzL2V2YWxzLmpzb24iLAogICAgICAi" + + "c2hhMjU2IjogImM1YjQ1MzM3ZTQ5YjNhYjhhZTI4MzQ1ZDMxNjRhN2Y1NzkxOWU2NDQ4OTg3MDJk" + + "MGNhYWQ0OGFlZTI4YjFmM2EiLAogICAgICAic2l6ZSI6IDIxOTMzCiAgICB9LAogICAgewogICAg" + + "ICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXhhbXBsZXMubWQiLAog" + + "ICAgICAic2hhMjU2IjogIjlhMzllNWNjYWJkNDA4MTljNzFmMmIwZjJkNzUyMzE2YjcyMzE1NjU0" + + "ZDgwZDNkMDE3Njk4Y2UxZmIzZTViMTEiLAogICAgICAic2l6ZSI6IDEwMzY3CiAgICB9LAogICAg" + + "ewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNl" + + "cy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCIsCiAgICAgICJzaGEyNTYiOiAiNWRlZTU4" + + "YWUyYzY3YTYyOTQ2ZTNjNTkzMDJhZmFjYzQwYmRlNzFmOGRjMmYyNWNkNzc5OWNjNDViNDc0ZmEx" + + "OSIsCiAgICAgICJzaXplIjogMTIzMDYKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogIm52Y2Yt" + + "c2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCIsCiAgICAg" + + "ICJzaGEyNTYiOiAiYTUyODE1OGJjMGJmZmZlZWY2ZTAxZGUzODRjYWY1NjVlNjQ0NWI0OGFiZDNj" + + "ZWU0MDA0ODcxZjUyM2Y1M2I5NyIsCiAgICAgICJzaXplIjogMTI0MzcKICAgIH0sCiAgICB7CiAg" + + "ICAgICJwYXRoIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL2hl" + + "bG1maWxlLXN0cnVjdHVyZS5tZCIsCiAgICAgICJzaGEyNTYiOiAiMWQ1Mjc3NmY5ZDdkOGRmNThk" + + "ZWZlMzA0NmQ2M2VjOGY1MmZkMzAxYzIxNWJmMGUxYWI2YmI5MTkxNjIwNzNkZSIsCiAgICAgICJz" + + "aXplIjogMTAxMjcKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogIm52Y2Ytc2VsZi1tYW5hZ2Vk" + + "LWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL252Y2YtdWktYWRkb24ubWQiLAogICAgICAic2hhMjU2" + + "IjogIjUwNTI0ZTZlMTk3MTE4M2JkYzlhZDBhYzM4YTgwN2RmNzJjYzA4NTFiNzlmNTE4ZmUxMWE0" + + "OGU0NTk3Yzg1MGUiLAogICAgICAic2l6ZSI6IDE5NzcKICAgIH0sCiAgICB7CiAgICAgICJwYXRo" + + "IjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL3B1bGwtc2VjcmV0" + + "cy5tZCIsCiAgICAgICJzaGEyNTYiOiAiZWMxZjNmZmNkMTdlNWY5NTgzZmVlMzk3NDRlZTg5N2Q0" + + "NjZiYzNjZjYzODkyOTQyNjRkODllN2Y5ZWQwMWI4NyIsCiAgICAgICJzaXplIjogNTYzMgogICAg" + + "fQogIF0KfQpQSwcIjHZJYkkQAABJEAAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAjAAkAZGF0" + + "YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvU0tJTEwubWRVVAUAAQCmzhItLS0KbmFtZTogbnZjZi1z" + + "ZWxmLW1hbmFnZWQtY2xpCmRlc2NyaXB0aW9uOiB8CiAgSW5zdGFsbCwgb3BlcmF0ZSwgYW5kIHRl" + + "YXIgZG93biBzZWxmLWhvc3RlZCBOVklESUEgQ2xvdWQgRnVuY3Rpb25zIChOVkNGKQogIGRlcGxv" + + "eW1lbnRzIHdpdGggbnZjZi1jbGkuIFVzZSBmb3IgY29udHJvbC1wbGFuZSBvciBjb21wdXRlLXBs" + + "YW5lIGluc3RhbGwsCiAgc3RhdHVzIGNoZWNrcywgY2x1c3RlciByZWdpc3RyYXRpb24sIGZ1bmN0" + + "aW9uIGRlcGxveS9pbnZva2UsIHRhc2sKICBjcmVhdGUvbGlzdC9jYW5jZWwvZGVsZXRlLCBBUEkg" + + "a2V5cywgYWRtaW4gdG9rZW5zLCBKV0tTIHJvdGF0aW9uLAogIGZhaWxlZC1pbnN0YWxsIGRpYWdu" + + "b3NpcywgYW5kIHVuaW5zdGFsbCBvciBkb3duIHdvcmtmbG93cy4gVHJpZ2dlciBrZXl3b3JkczoK" + + "ICBudmNmLCBudmNmLWNsaSwgc2VsZi1ob3N0ZWQgbnZjZiwgc2VsZi1tYW5hZ2VkIG52Y2YsIE5W" + + "Q0ZCYWNrZW5kLCBOVkNBLCBOQ1AsCiAgSUNNUywgaGVsbWZpbGUsIGNvbnRyb2wgcGxhbmUsIGNv" + + "bXB1dGUgcGxhbmUsIExMTSBmdW5jdGlvbiwKICBPcGVuQUktY29tcGF0aWJsZSBpbnZvY2F0aW9u" + + "LCBSZXNwb25zZXMgQVBJLCBlbWJlZGRpbmdzLCBiYXRjaCB0YXNrLCB0YXNrCiAgbW9uaXRvciwg" + + "Y2x1c3RlciByb3RhdGUsIGNsdXN0ZXIgZGVsZXRlLCBoZWxtIHRhc2ssIGhlbG0tYmFzZWQgdGFz" + + "aywKICB0YXNrIHNlY3JldHMsIHVwZGF0ZSB0YXNrIHNlY3JldHMsIHJldHJpZXZlIHRhc2sgcmVz" + + "dWx0cywgYnVsayBmZXRjaCB0YXNrcywKICB0YXNrIHJlc3VsdHMsIE5WQ1QsIE5WQ1QgdGFzaywg" + + "TlZDVCBiYXRjaCBqb2IuCmFsbG93ZWQtdG9vbHM6IEJhc2gsIFJlYWQsIEFza1VzZXJRdWVzdGlv" + + "bgphcmd1bWVudC1oaW50OiAiW2luc3RhbGx8c3RhdHVzfGNoZWNrfGRlcGxveS1mdW5jdGlvbnxy" + + "ZWdpc3Rlci1jbHVzdGVyfHRlYXJkb3duXSBbYXJnc10iCi0tLQo8IS0tClRva2VuIEJ1ZGdldDoK" + + "LSBMZXZlbCAxIChZQU1MKTogfjEyMCB0b2tlbnMKLSBMZXZlbCAyICh0aGlzIGZpbGUpOiB+MTkw" + + "MCB0b2tlbnMgKHRhcmdldCA8MjAwMCkKLSBMZXZlbCAzIChwcm9tcHRzLywgcmVmZXJlbmNlLywg" + + "ZXhhbXBsZXMvKTogbG9hZGVkIG9uIGRlbWFuZAotLT4KCiMgTlZDRiBTZWxmLUhvc3RlZCBDTEkK" + + "CmBudmNmLWNsaWAgZHJpdmVzIGV2ZXJ5IHN0ZXAgb2YgYnJpbmdpbmcgdXAgc2VsZi1ob3N0ZWQg" + + "TlZJRElBIENsb3VkIEZ1bmN0aW9uczogY2x1c3RlciByZWdpc3RyYXRpb24sIGNvbnRyb2wtcGxh" + + "bmUgaW5zdGFsbCwgY29tcHV0ZS1wbGFuZSBpbnN0YWxsLCBmdW5jdGlvbiBkZXBsb3kvaW52b2tl" + + "LCBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQuIFVzZSB0aGlzIHNraWxsIGFueSB0aW1lIHRoZSB1" + + "c2VyIHdhbnRzIHRvIG9wZXJhdGUgc2VsZi1ob3N0ZWQgTlZDRi4KCiMjIFdoZW4gdG8gdXNlCgot" + + "ICJpbnN0YWxsIHNlbGYtaG9zdGVkIE5WQ0YiIC8gImJyaW5nIHVwIGFuIE5WQ0YgY2x1c3RlciIK" + + "LSAicmVnaXN0ZXIgYSAoY29tcHV0ZXxHUFUpIGNsdXN0ZXIgd2l0aCBOVkNGIgotICJkZXBsb3kg" + + "YSAoY29udGFpbmVyfEdQVSkgZnVuY3Rpb24iIC8gImludm9rZSBhbiBOVkNGIGZ1bmN0aW9uIgot" + + "ICJjaGVjayBOVkNGIGNsdXN0ZXIgaGVhbHRoIiAvICJpcyBteSBOVkNGIGluc3RhbGwgT0s/Igot" + + "ICJyb3RhdGUgTlZDRiBjbHVzdGVyIEpXS1MiIC8gInRoZSBOVkNBIGFnZW50IHN0b3BwZWQgYXV0" + + "aGVudGljYXRpbmciCi0gInRlYXIgZG93biBOVkNGIiAvICJyZW1vdmUgdGhlIGNvbXB1dGUgcGxh" + + "bmUiIC8gInVuaW5zdGFsbCBOVkNGIiAvICJkZXJlZ2lzdGVyIHRoaXMgY2x1c3RlciIKLSAicHJl" + + "dmlldyB3aGF0IGBkb3duYCB3b3VsZCBkbyIgLyAiZHJ5LXJ1biB1bmluc3RhbGwiCi0gQW55IHRh" + + "c2sgb3BlcmF0aW9uOiBjcmVhdGUgLyBydW4gLyBzdWJtaXQgLyBtb25pdG9yIC8gY2FuY2VsIC8g" + + "ZGVsZXRlIC8gbGlzdCB0YXNrcywgaGVsbSB0YXNrLCB1cGRhdGUgdGFzayBzZWNyZXRzLCByZXRy" + + "aWV2ZSB0YXNrIHJlc3VsdHMsIGJ1bGsgZmV0Y2ggdGFzayBkZXRhaWxzLgotIEFueSByZWZlcmVu" + + "Y2UgdG8gYE5WQ1RgLCBgTlZDVCB0YXNrYCwgb3IgYE5WQ1QgYmF0Y2ggam9iYCAobGlzdCAvIHJ1" + + "biAvIGNhbmNlbCAvIGRlbGV0ZSAvIHJlc3VsdHMpLgotIEFueSByZWZlcmVuY2UgdG8gYE5WQ0ZC" + + "YWNrZW5kYCwgYE5WQ0FgLCBJQ01TLCBoZWxtIHJlbGVhc2VzIGxpa2UgYGhlbG0tbnZjZi0qYCwg" + + "b3IgYGljbXMuPGRvbWFpbj5gIC8gYGFwaS48ZG9tYWluPmAgVVJMcy4KCiMjIFF1aWNrIHN0YXJ0" + + "CgpGb3IgcmVtb3RlIG9uZS1jbGljayBpbnN0YWxscywgcHJlcGFyZSBHYXRld2F5IEFQSSBpbmdy" + + "ZXNzIGFuZCBDTEkgZW5kcG9pbnQKY29uZmlndXJhdGlvbiBiZWZvcmUgcnVubmluZyBgc2VsZi1o" + + "b3N0ZWQgdXBgLiBUaGUgY29tbWFuZCBhcHBsaWVzIHRoZSBjb250cm9sCnBsYW5lIGFuZCB0aGVu" + + "IGltbWVkaWF0ZWx5IGNhbGxzIEFQSSwgQVBJIEtleXMsIGludm9jYXRpb24sIGFuZCBnUlBDIGVu" + + "ZHBvaW50cy4KSWYgdGhlIEdhdGV3YXkgaXMgbm90IHByb2dyYW1tZWQgb3IgdGhlIENMSSBob3N0" + + "IGhlYWRlcnMgZG8gbm90IG1hdGNoIHRoZQpIVFRQUm91dGVzIHJlbmRlcmVkIGJ5IHRoZSBzdGFj" + + "ayBlbnZpcm9ubWVudCwgcG9zdC1pbnN0YWxsIGhlYWx0aCBhbmQgY2x1c3RlcgpyZWdpc3RyYXRp" + + "b24gd2lsbCBmYWlsLgoKYGBgc2gKIyBTaW5nbGUtY2x1c3RlciAoY29udHJvbCArIGNvbXB1dGUg" + + "b24gdGhlIGN1cnJlbnQga3ViZWNvbmZpZyBjb250ZXh0KToKbnZjZi1jbGkgc2VsZi1ob3N0ZWQg" + + "dXAgLS1jbHVzdGVyLW5hbWU9bmNwLWxvY2FsCgojIFNwbGl0LWNsdXN0ZXIgKGNvbnRyb2wgcGxh" + + "bmUgb24gY29udGV4dCBBLCBjb21wdXRlIHBsYW5lIG9uIGNvbnRleHQgQik6CktVQkVDT05GSUc9" + + "Y3AueWFtbDpncHUxLnlhbWwgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXAgXAogIC0tY2x1c3Rlci1u" + + "YW1lPW5jcC1sb2NhbCBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQ9YWRtaW5AY3AgXAogIC0t" + + "Y29tcHV0ZS1wbGFuZS1jb250ZXh0PWFkbWluQGdwdTEgXAogIC0taWNtcy11cmw9aHR0cHM6Ly9p" + + "Y21zLm52Y2YuZXhhbXBsZS5jb20KCiMgQWRkIGEgbmV3IGNvbXB1dGUgcGxhbmUgdG8gYW4gZXhp" + + "c3RpbmcgY29udHJvbCBwbGFuZSAobm8ga3ViZWN0bCBhY2Nlc3MgdG8gQ1AgbmVlZGVkOwojIHJl" + + "YWNoZXMgdGhlIGNvbnRyb2wgcGxhbmUgdmlhIHRoZSBwdWJsaWMgSUNNUyBIVFRQUm91dGUpOgpu" + + "dmNmLWNsaSBzZWxmLWhvc3RlZCBhZGQtY29tcHV0ZS1wbGFuZSBcCiAgLS1jbHVzdGVyLW5hbWU9" + + "bmNwLWxvY2FsLTIgXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0PWFkbWluQGdwdTIgXAogIC0t" + + "aWNtcy11cmw9aHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBsZS5jb20gXAogIC0tdG9rZW49JEFETUlO" + + "X0pXVAoKIyBUZWFyIGRvd24gKGFsd2F5cyBwbGFuLW9ubHkgZmlyc3QpOgpudmNmLWNsaSBzZWxm" + + "LWhvc3RlZCBkb3duIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPW5jcC1sb2NhbCAtLWpzb24g" + + "fCBqcQpudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tY2x1c3Rlci1uYW1lPW5jcC1sb2NhbAoK" + + "IyBQZXItcGxhbmUgdW5pbnN0YWxsIChHaXRPcHM7IG1pcnJvcnMgYGluc3RhbGxgKToKbnZjZi1j" + + "bGkgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tbm8tYXBwbHkgLS1jb21wdXRlLXBsYW5lIC0tY2x1" + + "c3Rlci1uYW1lPW5jcC1sb2NhbCB8IGt1YmVjdGwgZGVsZXRlIC1mIC0KYGBgCgo+ICoqYHVwYCB2" + + "cyBgYWRkLWNvbXB1dGUtcGxhbmVgLioqIGB1cGAgYWx3YXlzIGluc3RhbGxzIGJvdGggcGxhbmVz" + + "IOKAlCB1c2UgaXQgZm9yIHRoZSAqZmlyc3QqIGluc3RhbGwuIGBhZGQtY29tcHV0ZS1wbGFuZWAg" + + "aXMgdGhlIHJpZ2h0IHN1YmNvbW1hbmQgYW55IHRpbWUgdGhlIGNvbnRyb2wgcGxhbmUgaXMgYWxy" + + "ZWFkeSBydW5uaW5nIGFuZCB5b3Ugd2FudCB0byBhdHRhY2ggYW4gTnRoIGNvbXB1dGUgY2x1c3Rl" + + "ci4KCj4gKipgZG93bmAgYWx3YXlzIHdpdGggYC0tcGxhbi1vbmx5YCBmaXJzdC4qKiBTaG93IHRo" + + "ZSB1c2VyIHRoZSBgd2lsbFVuaW5zdGFsbC5jb21tYW5kc1tdYCBhcnJheSBiZWZvcmUgcnVubmlu" + + "ZyBmb3IgcmVhbC4KCiMjIEF1dGhlbnRpY2F0aW9uCgpgbnZjZi1jbGlgIHVzZXMgdHdvIGNyZWRl" + + "bnRpYWxzLiBFYWNoIGlzIHJlc29sdmVkIGluZGVwZW5kZW50bHkgaW4gdGhpcyBvcmRlcjoKCnwg" + + "UHJlY2VkZW5jZSB8IFNvdXJjZSB8CnwtLS18LS0tfAp8IDEgKGhpZ2hlc3QpIHwgRW52aXJvbm1l" + + "bnQgdmFyaWFibGUgKGBOVkNGX1RPS0VOYCwgYE5WQ0ZfQVBJX0tFWWApIHwKfCAyIHwgQ29uZmln" + + "IGZpbGUgKGB+Ly5udmNmLWNsaS55YW1sYCwga2V5cyBgdG9rZW5gIGFuZCBgYXBpX2tleWApIHwK" + + "fCAzIHwgU3RhdGUgZmlsZSAoYH4vLm52Y2YtY2xpLnN0YXRlYCksIHNraXBwZWQgd2hlbiB0aGUg" + + "c3RvcmVkIHRva2VuIGlzIGV4cGlyZWQgfAoKfCBFbnYgdmFyIHwgVG9rZW4gdHlwZSB8IFVzZWQg" + + "YnkgfAp8LS0tfC0tLXwtLS18CnwgYE5WQ0ZfVE9LRU5gIHwgQWRtaW4gSldUIHwgYGZ1bmN0aW9u" + + "IGNyZWF0ZWAgLyBgZGVwbG95YCAvIGB1cGRhdGVgIC8gYGRlbGV0ZWAsIGNsdXN0ZXIgbWFuYWdl" + + "bWVudCAoYGNsdXN0ZXIgcmVnaXN0ZXJgL2Byb3RhdGVgL2BkZWxldGVgLCBgc2VsZi1ob3N0ZWRg" + + "IG9wcykuIFJlcXVpcmVkIGZvciBhZG1pbiBjb21tYW5kczsgcHJlZmVycmVkIGZvciB0aGUgcmVz" + + "dC4gfAp8IGBOVkNGX0FQSV9LRVlgIHwgYG52YXBpLS4uLmAgQVBJIGtleSB8IGBmdW5jdGlvbiBp" + + "bnZva2VgIC8gYGxpc3RgIC8gYGdldGAsIHF1ZXVlIGRldGFpbHMuIEZhbGxzIGJhY2sgdG8gYE5W" + + "Q0ZfVE9LRU5gIHdoZW4gdW5zZXQuIHwKClRva2VuIGdlbmVyYXRpb24gZmxvdzoKCjEuIFBvaW50" + + "IHRoZSBDTEkgYXQgeW91ciBzZWxmLWhvc3RlZCBlbmRwb2ludHMuIERlZmF1bHRzIHRhcmdldCBw" + + "cm9kdWN0aW9uIE5WQ0Y7IG92ZXJyaWRlIHdpdGggZW52IHZhcnMgb3IgYSB5YW1sIGZpbGUgKGAt" + + "LWNvbmZpZyA8cGF0aD5gLCBgLi8ubnZjZi1jbGkueWFtbGAsIG9yIGB+Ly5udmNmLWNsaS55YW1s" + + "YDsgYSBmdWxsIHRlbXBsYXRlIHNoaXBzIGF0IGBzcmMvY2xpcy9udmNmLWNsaS8ubnZjZi1jbGku" + + "eWFtbC50ZW1wbGF0ZWApLgoKICAgYE5WQ0ZfQkFTRV9IVFRQX1VSTGAgLyBgQVBJX0tFWVNfU0VS" + + "VklDRV9VUkxgIC8gYE5WQ0ZfQkFTRV9HUlBDX1VSTGAgdGVsbCB0aGUgQ0xJICp3aGVyZSB0byBz" + + "ZW5kIHJlcXVlc3RzKi4gYEFQSV9IT1NUYCAvIGBBUElfS0VZU19IT1NUYCAvIGBJTlZPS0VfSE9T" + + "VGAgc2V0IHRoZSBgSG9zdDpgIGhlYWRlciBvbiB0aG9zZSByZXF1ZXN0cyDigJQgbmVlZGVkIHdo" + + "ZW4gZXZlcnkgTlZDRiBzZXJ2aWNlIHNpdHMgYmVoaW5kIGEgc2luZ2xlIGdhdGV3YXkgdGhhdCBy" + + "b3V0ZXMgYnkgaG9zdG5hbWUgKEVudm95IEdhdGV3YXkgSFRUUFJvdXRlIG9uIGBhcGkuPEVMQj5g" + + "LCBgYXBpLWtleXMuPEVMQj5gLCBgaW52b2NhdGlvbi48RUxCPmAsIGBsbG0uPEVMQj5gKS4gU2tp" + + "cCB0aGUgdGhyZWUgSG9zdCB2YXJzIHdoZW4gdGhlIGJhc2UgVVJMIGFscmVhZHkgcmVzb2x2ZXMg" + + "dG8gdGhlIHJpZ2h0IHNlcnZpY2UuCgogICBFbnYtdmFyIGZvcm06CiAgIGBgYHNoCiAgIGV4cG9y" + + "dCBOVkNGX0JBU0VfSFRUUF9VUkw9aHR0cHM6Ly9ndy5leGFtcGxlLmNvbQogICBleHBvcnQgQVBJ" + + "X0tFWVNfU0VSVklDRV9VUkw9aHR0cHM6Ly9ndy5leGFtcGxlLmNvbQogICBleHBvcnQgTlZDRl9C" + + "QVNFX0dSUENfVVJMPWd3LmV4YW1wbGUuY29tOjQ0MwoKICAgIyBPbmx5IHdoZW4gdGhlIGdhdGV3" + + "YXkgcm91dGVzIGJ5IEhvc3QgaGVhZGVyOgogICBleHBvcnQgQVBJX0tFWVNfSE9TVD1hcGkta2V5" + + "cy5ndy5leGFtcGxlLmNvbQogICBleHBvcnQgQVBJX0hPU1Q9YXBpLmd3LmV4YW1wbGUuY29tCiAg" + + "IGV4cG9ydCBJTlZPS0VfSE9TVD1pbnZvY2F0aW9uLmd3LmV4YW1wbGUuY29tCiAgIGBgYAoKICAg" + + "WWFtbCBmb3JtIChgfi8ubnZjZi1jbGkueWFtbGApOgogICBgYGB5YW1sCiAgIGJhc2VfaHR0cF91" + + "cmw6IGh0dHBzOi8vZ3cuZXhhbXBsZS5jb20KICAgYXBpX2tleXNfc2VydmljZV91cmw6IGh0dHBz" + + "Oi8vZ3cuZXhhbXBsZS5jb20KICAgYmFzZV9ncnBjX3VybDogZ3cuZXhhbXBsZS5jb206NDQzCgog" + + "ICAjIE9ubHkgd2hlbiB0aGUgZ2F0ZXdheSByb3V0ZXMgYnkgSG9zdCBoZWFkZXI6CiAgIGFwaV9r" + + "ZXlzX2hvc3Q6IGFwaS1rZXlzLmd3LmV4YW1wbGUuY29tCiAgIGFwaV9ob3N0OiBhcGkuZ3cuZXhh" + + "bXBsZS5jb20KICAgaW52b2tlX2hvc3Q6IGludm9jYXRpb24uZ3cuZXhhbXBsZS5jb20KICAgYGBg" + + "CgoyLiBgbnZjZi1jbGkgaW5pdGAgY2FsbHMgdGhlIEFQSSBLZXlzIHNlcnZpY2UgdmlhIHRob3Nl" + + "IGVuZHBvaW50cyBhbmQgd3JpdGVzIHRoZSBhZG1pbiB0b2tlbiB0byBgfi8ubnZjZi1jbGkuc3Rh" + + "dGVgLiBVc2UgYG52Y2YtY2xpIHJlZnJlc2hgIHRvIHJvdGF0ZSBhIHN0b3JlZCB0b2tlbi4KMy4g" + + "QWZ0ZXIgYGluaXRgLCBgbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZWAgbWludHMgZnVuY3Rpb24g" + + "KyB0YXNrIEFQSSBrZXlzIChhbHNvIHN0b3JlZCBpbiBzdGF0ZSkuCgpBZnRlciBgaW5pdGAsIHRo" + + "ZSBjcmVkZW50aWFscyBsaXZlIGluIGB+Ly5udmNmLWNsaS5zdGF0ZWAsIHNvIGxhdGVyIGNvbW1h" + + "bmRzIHdvcmsgd2l0aG91dCBleHBvcnRpbmcgYE5WQ0ZfVE9LRU5gIG9yIGBOVkNGX0FQSV9LRVlg" + + "LiBFeHBvcnQgdGhlIGVudiB2YXIgb25seSB0byBvdmVycmlkZSB0aGUgc3RvcmVkIHZhbHVlIChm" + + "b3IgZXhhbXBsZSBhIHNob3J0ZXItbGl2ZWQgdG9rZW4gZnJvbSBDSSkuCgojIyBDb3JlIHN1YmNv" + + "bW1hbmRzCgp8IFN1YmNvbW1hbmQgfCBXaGF0IGl0IGRvZXMgfCBXaGVuIHRvIHVzZSB8CnwtLS18" + + "LS0tfC0tLXwKfCBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1wcmUgWy0tbG9jYWwtb25s" + + "eSBcfCAtLWNvbnRyb2wtcGxhbmUtY29udGV4dD1YIFx8IC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0" + + "PVldYCB8IFByZS1mbGlnaHQ6IGxvY2FsLWhvc3QgdG9vbHMgKyBjbHVzdGVyLXNpZGUgcHJlcmVx" + + "dWlzaXRlcyB8IEFsd2F5cyBydW4gZmlyc3Qgb24gYSBuZXcgZW52aXJvbm1lbnQgfAp8IGBudmNm" + + "LWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSBcfCBrdWJlY3RsIGFwcGx5" + + "IC1mIC1gIHwgUmVuZGVyICsgYXBwbHkgdGhlIGNvbnRyb2wgcGxhbmUgfCBXaGVuIHlvdSB3YW50" + + "IG1hbnVhbCBjb250cm9sIG92ZXIgYXBwbHkgKEdpdE9wcy1mcmllbmRseSkgfAp8IGBudmNmLWNs" + + "aSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YIFx8" + + "IGt1YmVjdGwgYXBwbHkgLWYgLWAgfCBSZWdpc3RlciBjbHVzdGVyICsgcmVuZGVyIGNvbXB1dGUg" + + "cGxhbmUgfCBTYW1lIOKAlCBtYW51YWwgYXBwbHkgcGF0aCB8CnwgYG52Y2YtY2xpIHNlbGYtaG9z" + + "dGVkIHVwIC0tY2x1c3Rlci1uYW1lPVhgIHwgT25lLXNob3QgZmlyc3QgaW5zdGFsbDogcHJlLWZs" + + "aWdodCDihpIgY29udHJvbCBwbGFuZSDihpIgcmVnaXN0ZXIg4oaSIGNvbXB1dGUgcGxhbmUgfCBT" + + "dGFuZGFyZCBpbnN0YWxsIHBhdGggKGJvdGggcGxhbmVzIGZyb20gc2NyYXRjaCkgfAp8IGBudmNm" + + "LWNsaSBzZWxmLWhvc3RlZCB1cCAtLXBsYW4tb25seSAtLWNsdXN0ZXItbmFtZT1YYCB8IERyeS1y" + + "dW46IGVtaXQgcGhhc2UtYnktcGhhc2UgcGxhbiArIEVUQSB3aXRob3V0IGNoYW5naW5nIHN0YXRl" + + "IHwgQWdlbnQgLyBDSSBwcmV2aWV3IGJlZm9yZSBjb21taXQgfAp8IGBudmNmLWNsaSBzZWxmLWhv" + + "c3RlZCBhZGQtY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YIC0tY29tcHV0ZS1wbGFuZS1j" + + "b250ZXh0PVkgLS1pY21zLXVybD3igKYgLS10b2tlbj0kSldUYCB8IEFkZCBhIG5ldyBjb21wdXRl" + + "IHBsYW5lIHRvIGFuICpleGlzdGluZyogY29udHJvbCBwbGFuZSAobm8gQ1AgaW5zdGFsbCkgfCBB" + + "ZGRpbmcgdGhlIDJuZCwgM3JkLCDigKYgR1BVIGNsdXN0ZXIgYWZ0ZXIgdGhlIGluaXRpYWwgYHVw" + + "YCB8CnwgYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmVgIHwg" + + "UGVyLXBsYW5lIHByaW1pdGl2ZTogYGhlbG1maWxlIGRlc3Ryb3lgIG9uIHRoZSBjb250cm9sIHBs" + + "YW5lIChyZWZ1c2VzIGlmIGNvbXB1dGUgcGxhbmVzIHN0aWxsIHJlZ2lzdGVyZWQpIHwgRmluYWwg" + + "dGVhcmRvd24gYWZ0ZXIgYWxsIGNvbXB1dGUgcGxhbmVzIGFyZSBnb25lLCBvciBzY3JpcHRlZCBw" + + "aXBlbGluZXMgfAp8IGBudmNmLWNsaSBzZWxmLWhvc3RlZCB1bmluc3RhbGwgLS1jb21wdXRlLXBs" + + "YW5lIC0tY2x1c3Rlci1uYW1lPVhgIHwgUGVyLXBsYW5lIHByaW1pdGl2ZTogYGhlbG1maWxlIGRl" + + "c3Ryb3lgIG9uIGEgY29tcHV0ZSBwbGFuZSAobm8gSUNNUyB1bnJlZ2lzdGVyLCBubyBkcmFpbikg" + + "fCBKdXN0IHJlbW92ZSB0aGUgaGVsbSByZWxlYXNlcyB3aXRob3V0IHRoZSBJQ01TLXNpZGUgY2xl" + + "YW51cCB8CnwgYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAtLW5vLWFwcGx5IDxwbGFu" + + "ZT5gIHwgUmVuZGVyIGRlbGV0ZSBZQU1MIHZpYSBgaGVsbSBnZXQgbWFuaWZlc3RgIHwgR2l0T3Bz" + + "OyBgXHwga3ViZWN0bCBkZWxldGUgLWYgLWAgb3IgY29tbWl0ICsgQXJnbyBhcHBsaWVzIHwKfCBg" + + "bnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93biAtLWNsdXN0ZXItbmFtZT1YYCB8IE9yY2hlc3RyYXRv" + + "cjogZHJhaW4g4oaSIHVuaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmUg4oaSIGNsdXN0ZXIgZGVsZXRl" + + "IGluIElDTVMgfCBTdGFuZGFyZCAicmVtb3ZlIG9uZSBHUFUgY2x1c3RlciIgcGF0aCB8CnwgYG52" + + "Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24gLS1hbGwgLS1jb25maXJtYCB8IE9yY2hlc3RyYXRvcjog" + + "dGVhciBkb3duIGV2ZXJ5IHJlZ2lzdGVyZWQgY29tcHV0ZSBwbGFuZSArIGNvbnRyb2wgcGxhbmUg" + + "fCBGdWxsIHVuaW5zdGFsbCB8CnwgYG52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24gLS1wbGFuLW9u" + + "bHkgLS1jbHVzdGVyLW5hbWU9WGAgfCBEcnktcnVuIHByZXZpZXcgKHBoYXNlcyArIGhlbG0gcmVs" + + "ZWFzZXMgKyBJQ01TIHJvd3MgKyBFVEFzOyBubyBoZWxtL2hlbG1maWxlIGNvbnRhY3QpIHwgKipB" + + "TFdBWVMgcnVuIGJlZm9yZSBhbnkgYWN0dWFsIGBkb3duYCoqIHwKfCBgbnZjZi1jbGkgc2VsZi1o" + + "b3N0ZWQgc3RhdHVzIFstLWNsdXN0ZXItbmFtZT1YXSBbLS13YXRjaF0gWy0tanNvbl1gIHwgU25h" + + "cHNob3QgZGFzaGJvYXJkIG9mIGNsdXN0ZXIgaWRlbnRpdHkgKyBjb21wb25lbnQgaGVhbHRoICsg" + + "cmVjZW50IGV2ZW50cyB8IFJvdXRpbmUgaGVhbHRoIGNoZWNrczsgYC0td2F0Y2hgIGZvciBsaXZl" + + "IHwKfCBgbnZjZi1jbGkgaW5pdGAgfCBNaW50IGFkbWluIHRva2VuIGZyb20gQVBJIEtleXMgc2Vy" + + "dmljZSB2aWEgdGhlIHB1YmxpYyBhcGkgZ2F0ZXdheSB8IEJlZm9yZSBhbnkgY2x1c3Rlci1tYW5h" + + "Z2VtZW50IG9wZXJhdGlvbjsgaWRlbXBvdGVudCB8CnwgYG52Y2YtY2xpIGNsdXN0ZXIgcmVnaXN0" + + "ZXIgLS1uYW1lPVggLS1uY2EtaWQ9WSAtLXJlZ2lvbj1aIFstLWlnbm9yZS1leGlzdGluZ11gIHwg" + + "UmVnaXN0ZXIgYSBjbHVzdGVyIEpXS1MrT0lEQyBpc3N1ZXIgd2l0aCBJQ01TIHwgU3RhbmRhbG9u" + + "ZSByZWdpc3RlciAod2l0aG91dCBjb21wdXRlLXBsYW5lIGluc3RhbGwpIHwKfCBgbnZjZi1jbGkg" + + "Y2x1c3RlciByb3RhdGUgLS1jbHVzdGVyLWlkPUlEYCB8IFJvdGF0ZSBjbHVzdGVyIEpXS1MgaW4g" + + "SUNNUyB8IFdoZW4gTlZDQSdzIEs4cyBzaWduaW5nIGtleSBjaGFuZ2VkIGFuZCBQU0FUIHZlcmlm" + + "aWNhdGlvbiBzdGFydGVkIDQwMS1pbmcgfAp8IGBudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNs" + + "dXN0ZXItaWQ9SURgIHwgUmVtb3ZlIGNsdXN0ZXIgcmVnaXN0cmF0aW9uIGZyb20gSUNNUyB8ICoq" + + "Q29uZmlybSB3aXRoIHVzZXIuKiogRGVzdHJveXMgSUNNUyBzdGF0ZSBmb3IgdGhlIGNsdXN0ZXIu" + + "IHwKfCBgbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWRlc2NyaXB0aW9uPSLigKYiIC0tZXhw" + + "aXJlcy1pbj0xaGAgfCBNaW50IGJvdGggYSBmdW5jdGlvbiBBUEkga2V5IGFuZCBhIHRhc2sgQVBJ" + + "IGtleSAoZGVmYXVsdCkgfCBCZWZvcmUgaW52b2tpbmcgZnVuY3Rpb25zIG9yIGNyZWF0aW5nIHRh" + + "c2tzOyBydW4gYWZ0ZXIgZXZlcnkgYGluaXRgIHwKfCBgbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0" + + "ZSAtLWZvciBmdW5jdGlvbiAtLWRlc2NyaXB0aW9uPSLigKYiYCB8IE1pbnQgYSBmdW5jdGlvbiBB" + + "UEkga2V5IG9ubHkgKGBpbnZva2VfZnVuY3Rpb25gIHNjb3BlKSB8IFdoZW4gb25seSBmdW5jdGlv" + + "biBpbnZvY2F0aW9uIGlzIG5lZWRlZCB8CnwgYG52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1m" + + "b3IgdGFzayAtLWRlc2NyaXB0aW9uPSLigKYiYCB8IE1pbnQgYSB0YXNrIEFQSSBrZXkgb25seSB8" + + "IFdoZW4gb25seSB0YXNrIG9wZXJhdGlvbnMgYXJlIG5lZWRlZCB8CnwgYG52Y2YtY2xpIGZ1bmN0" + + "aW9uIGNyZWF0ZSAtLWlucHV0LWZpbGU9PGpzb24+YCB8IENyZWF0ZSBmdW5jdGlvbiBtZXRhZGF0" + + "YSBpbiBJQ01TIHwgRmlyc3Qgc3RlcCBvZiBhbnkgZnVuY3Rpb24gZGVwbG95OyB1c2UgYGZ1bmN0" + + "aW9uVHlwZTogIkxMTSJgIGFuZCBgbW9kZWxzW10ubGxtQ29uZmlnYCBmb3IgTExNIGZ1bmN0aW9u" + + "cyB8CnwgYG52Y2YtY2xpIGZ1bmN0aW9uIGRlcGxveSBjcmVhdGUgLS1pbnB1dC1maWxlPTxqc29u" + + "PmAgfCBTY2hlZHVsZSBhIGRlcGxveW1lbnQgb2YgYSBjcmVhdGVkIGZ1bmN0aW9uIHwgV2FpdHMg" + + "Zm9yIEFDVElWRSBiZWZvcmUgcmV0dXJuaW5nICh0aW1lb3V0IDkwMHMpIHwKfCBgbnZjZi1jbGkg" + + "ZnVuY3Rpb24gaW52b2tlIC0taW5wdXQtZmlsZT08anNvbj5gIHwgSW52b2tlIGEgZGVwbG95ZWQg" + + "ZnVuY3Rpb24gfCBSZXF1aXJlcyBBUEkga2V5IChub3QgYWRtaW4gdG9rZW4pIHwKfCBgbnZjZi1j" + + "bGkgZnVuY3Rpb24gZGVsZXRlIC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRGAgfCBS" + + "ZW1vdmUgYSBmdW5jdGlvbiBhbmQgaXRzIGRlcGxveW1lbnQgfCAqKkNvbmZpcm0gd2l0aCB1c2Vy" + + "LioqIHwKfCBgbnZjZi1jbGkgdGFzayBjcmVhdGUgLS1uYW1lPVggLS1ncHU9SDEwMCAtLWluc3Rh" + + "bmNlLXR5cGU9WSAtLWltYWdlPVpgIHwgU3VibWl0IGEgY29udGFpbmVyIHRhc2s7IHNhdmVzIHRh" + + "c2sgSUQgdG8gQ0xJIHN0YXRlIHwgUmVxdWlyZXMgdGFzayBBUEkga2V5OyBzZXQgYE5WQ0ZfQkFT" + + "RV9OVkNUX1VSTGAgdG8gdGhlIE5WQ1QgZ2F0ZXdheSBlbmRwb2ludCB8CnwgYG52Y2YtY2xpIHRh" + + "c2sgY3JlYXRlIC0tbmFtZT1YIC0tZ3B1PUgxMDAgLS1pbnN0YW5jZS10eXBlPVkgLS1oZWxtLWNo" + + "YXJ0PVpgIHwgU3VibWl0IGEgSGVsbSB0YXNrIHwgU2FtZSBhcyBjb250YWluZXIgdGFzazsgYC0t" + + "aGVsbS1jaGFydGAgcmVwbGFjZXMgYC0taW1hZ2VgIHwKfCBgbnZjZi1jbGkgdGFzayBjcmVhdGUg" + + "LS1pbnB1dC1maWxlPTxqc29uPmAgfCBTdWJtaXQgYSB0YXNrIGZyb20gYSBKU09OIGNvbmZpZyBm" + + "aWxlIHwgUmVjb21tZW5kZWQgZm9yIHJlcGVhdGFibGUgY29uZmlndXJhdGlvbnMgfAp8IGBudmNm" + + "LWNsaSB0YXNrIGxpc3QgWy0tc3RhdHVzPVFVRVVFRFx8UlVOTklOR1x8Q09NUExFVEVEXWAgfCBM" + + "aXN0IHRhc2tzLCBvcHRpb25hbGx5IGZpbHRlcmVkIGJ5IHN0YXR1cyB8IHwKfCBgbnZjZi1jbGkg" + + "dGFzayBnZXQgW3Rhc2tJZF1gIHwgR2V0IGRldGFpbHMgZm9yIGEgdGFzazsgdXNlcyBzYXZlZCB0" + + "YXNrIElEIGlmIG9taXR0ZWQgfCB8CnwgYG52Y2YtY2xpIHRhc2sgZXZlbnRzIFt0YXNrSWRdYCB8" + + "IFN0cmVhbSBsaWZlY3ljbGUgZXZlbnRzIGZvciBhIHRhc2sgfCB8CnwgYG52Y2YtY2xpIHRhc2sg" + + "cmVzdWx0cyBbdGFza0lkXWAgfCBMaXN0IHJlc3VsdCBhcnRpZmFjdHMgZm9yIGEgY29tcGxldGVk" + + "IHRhc2sgfCBSZXN1bHQgdXBsb2FkIG5vdCB5ZXQgc3VwcG9ydGVkOyByZXR1cm5zIGVtcHR5IGxp" + + "c3QgZm9yIGBOT05FYCBzdHJhdGVneSB8CnwgYG52Y2YtY2xpIHRhc2sgY2FuY2VsIFt0YXNrSWRd" + + "YCB8IENhbmNlbCBhIHF1ZXVlZCBvciBydW5uaW5nIHRhc2sgfCB8CnwgYG52Y2YtY2xpIHRhc2sg" + + "ZGVsZXRlIFt0YXNrSWRdYCB8IERlbGV0ZSBhIHRhc2sgcmVjb3JkIHwgKipDb25maXJtIHdpdGgg" + + "dXNlci4qKiB8CnwgYG52Y2YtY2xpIHRhc2sgdXBkYXRlLXNlY3JldHMgW3Rhc2tJZF0gLS1zZWNy" + + "ZXRzIE5BTUU9dmFsdWVgIHwgVXBkYXRlIHNlY3JldHMgb24gYSB0YXNrOyBzdXBwbGllZCBzZWNy" + + "ZXRzIGFyZSBhZGRlZCBvciB1cGRhdGVkIGJ5IG5hbWUsIGV4aXN0aW5nIHNlY3JldHMgbm90IGlu" + + "IHRoZSByZXF1ZXN0IGFyZSBwcmVzZXJ2ZWQgfCB8CnwgYG52Y2YtY2xpIHRhc2sgYnVsayAtLXRh" + + "c2staWRzPUlEMSxJRDJgIHwgRmV0Y2ggZGV0YWlscyBmb3IgbXVsdGlwbGUgdGFza3MgaW4gb25l" + + "IGNhbGwgfCB8Cgo+IFJlZ2lzdHJ5IGNyZWRlbnRpYWwgcHJvcGFnYXRpb246IGFmdGVyIGByZWdp" + + "c3RyeS1jcmVkZW50aWFsIGFkZGAvYHVwZGF0ZWAvYGRlbGV0ZWAsIHRhc2sgY3JlYXRpb24gY2Fu" + + "IGtlZXAgdXNpbmcgdGhlIHByZXZpb3VzIGNyZWRlbnRpYWwgZm9yIHVwIHRvIGFib3V0IDUgbWlu" + + "dXRlcyAoTlZDVCBjYWNoZXMgYWNjb3VudCBjcmVkZW50aWFscyBhdCBgbnZjdC5udmNmLmNhY2hl" + + "LXR0bGAsIGRlZmF1bHQgYFBUNU1gKSwgZXZlbiB0aG91Z2ggYHJlZ2lzdHJ5LWNyZWRlbnRpYWwg" + + "bGlzdGAvYGdldGAgc2hvdyB0aGUgbmV3IHZhbHVlIGltbWVkaWF0ZWx5LiBXYWl0IGFib3V0IDUg" + + "bWludXRlcywgb3IgYGt1YmVjdGwgLW4gbnZjZiByb2xsb3V0IHJlc3RhcnQgZGVwbG95bWVudC9u" + + "dmN0LWFwaWAgdG8gYXBwbHkgaW1tZWRpYXRlbHkuIFNlZSBbcmVmZXJlbmNlL3Ryb3VibGVzaG9v" + + "dGluZy5tZF0ocmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZCkuCgojIyBMTE0gZnVuY3Rpb24g" + + "dHlwZQoKVXNlIGBmdW5jdGlvblR5cGU6ICJMTE0iYCBmb3IgT3BlbkFJLWNvbXBhdGlibGUgbW9k" + + "ZWxzIHNlcnZlZCB0aHJvdWdoIHRoZSBzZWxmLW1hbmFnZWQgTExNIEdhdGV3YXkuIExMTSBmdW5j" + + "dGlvbnMgbXVzdCBkZWZpbmUgYXQgbGVhc3Qgb25lIGBtb2RlbHNbXWAgZW50cnkgd2l0aCBgbmFt" + + "ZWAgYW5kIGBsbG1Db25maWcudXJpc2A7IHRoZSBzdXBwb3J0ZWQgdXBzdHJlYW0gcGF0aHMgYXJl" + + "IGAvdjEvY2hhdC9jb21wbGV0aW9uc2AsIGAvdjEvcmVzcG9uc2VzYCwgYW5kIGAvdjEvZW1iZWRk" + + "aW5nc2AuCgpVc2UgYC9oZWFsdGhgIG9uIHBvcnQgYDgwMDBgIGFzIHRoZSBkZWZhdWx0IE9wZW5B" + + "SS1jb21wYXRpYmxlIGNvbnRhaW5lciBoZWFsdGggcHJvYmUgdW5sZXNzIHRoZSBpbWFnZSBleHBv" + + "c2VzIGEgZGlmZmVyZW50IHJlYWRpbmVzcyBwYXRoLgoKTExNIGZ1bmN0aW9uIHR5cGUgaXMgaW5k" + + "ZXBlbmRlbnQgb2Ygd29ya2xvYWQgcGFja2FnaW5nLiBGb3IgYSBIZWxtLWNoYXJ0IGJhY2tlZCBM" + + "TE0gZnVuY3Rpb24sIGtlZXAgYGZ1bmN0aW9uVHlwZTogIkxMTSJgIGFuZCBgbW9kZWxzW10ubGxt" + + "Q29uZmlnYCwgdGhlbiBzZXQgYGhlbG1DaGFydGAgYW5kIGBoZWxtQ2hhcnRTZXJ2aWNlTmFtZWAg" + + "aW4gdGhlIGNyZWF0ZSByZXF1ZXN0LiBgaGVsbUNoYXJ0U2VydmljZU5hbWVgIG11c3QgbWF0Y2gg" + + "dGhlIEt1YmVybmV0ZXMgU2VydmljZSBleHBvc2VkIGJ5IHRoZSBjaGFydCwgYW5kIGBpbmZlcmVu" + + "Y2VQb3J0YCBtdXN0IGJlIHRoYXQgU2VydmljZSBwb3J0LgoKSW52b2NhdGlvbiB1c2VzIHRoZSBM" + + "TE0gcm91dGUsIGZvciBleGFtcGxlIGBodHRwczovL2xsbS5pbnZvY2F0aW9uLjxkb21haW4+L3Yx" + + "L2NoYXQvY29tcGxldGlvbnNgLiBUaGUgT3BlbkFJIGBtb2RlbGAgdmFsdWUgbXVzdCBiZSBgPGZ1" + + "bmN0aW9uLWlkPi88bW9kZWwtbmFtZT5gOyB0aGUgZnVuY3Rpb24gSUQgaXMgdGhlIHJvdXRpbmcg" + + "a2V5IGFuZCB0aGUgbW9kZWwgbmFtZSBpcyBmb3J3YXJkZWQgdXBzdHJlYW0uCgpVcGRhdGUgbXV0" + + "YWJsZSBwZXItbW9kZWwgcm91dGluZyBzZXR0aW5ncyB3aXRoIGBudmNmLWNsaSBmdW5jdGlvbiB1" + + "cGRhdGUgLS1sbG0tbW9kZWwtdXBkYXRlPSduYW1lPTxtb2RlbD4scm91dGluZ01ldGhvZD08bWV0" + + "aG9kPix0b2tlblJhdGVMaW1pdD08bGltaXQ+J2AsIG9yIHB1dCB0aGUgc2FtZSBmaWVsZHMgdW5k" + + "ZXIgYG1vZGVsVXBkYXRlc1tdLmxsbUNvbmZpZ2AgaW4gYW4gdXBkYXRlIEpTT04gZmlsZS4gU2Vl" + + "IFtyZWZlcmVuY2UvZmxhZ3MubWRdKHJlZmVyZW5jZS9mbGFncy5tZCkgZm9yIGFjY2VwdGVkIHJv" + + "dXRpbmcgbWV0aG9kcy4gYHRva2VuUmF0ZUxpbWl0YCBzdXBwb3J0cyBwb3NpdGl2ZSBpbnRlZ2Vy" + + "IGxpbWl0cyBmb3IgYFNgLCBgTWAsIGBIYCwgYERgLCBhbmQgYFdgOyB1c2UgSlNPTiBpbnB1dCBm" + + "b3IgY29tYmluZWQgbGltaXRzIHN1Y2ggYXMgYDEwMDAtUyw1MDAwLU0sMTAwMDAwLUgsNTAwMDAw" + + "LUQsMTAwMDAwMC1XYC4gRG8gbm90IGluY2x1ZGUgYHVyaXNgIGluIG1vZGVsIHVwZGF0ZXMuCgpG" + + "b3IgYC92MS9yZXNwb25zZXNgLCB0aGUgZ2F0ZXdheSBwcm94aWVzIHRoZSBuYXRpdmUgUmVzcG9u" + + "c2VzIHBhdGggdXBzdHJlYW0sIHJlbGF5cyBTU0UgdG8gc3RyZWFtaW5nIGNsaWVudHMsIGFuZCBh" + + "Z2dyZWdhdGVzIHRoZSB0ZXJtaW5hbCBKU09OIHJlc3BvbnNlIGZvciBub24tc3RyZWFtaW5nIGNs" + + "aWVudHMuIEZvciBgL3YxL2VtYmVkZGluZ3NgLCBpbnB1dCBtYXkgYmUgYSBzdHJpbmcgb3Igc3Ry" + + "aW5nIGFycmF5LCBtdXN0IGJlIG5vbi1lbXB0eSwgYW5kIG1heSBjb250YWluIGF0IG1vc3QgMjA0" + + "OCBlbnRyaWVzLgoKU2Vzc2lvbiBzdGlja2luZXNzIHVzZXMgYHgtbXVsdGktdHVybi1zZXNzaW9u" + + "LWlkYCBmb3IgY2hhdCBjb21wbGV0aW9ucyBhbmQgUmVzcG9uc2VzIEFQSSByZXF1ZXN0cyBvbmx5" + + "LiBFbWJlZGRpbmdzIHJlcXVlc3RzIGRvIG5vdCB1c2Ugc3RpY2tpbmVzcy4KCiMjIENvbW1vbiB3" + + "b3JrZmxvd3MKCkZvciBzdGVwLWJ5LXN0ZXAgcGxheWJvb2tzLCBsb2FkIHRoZSBwcm9tcHQgdGhh" + + "dCBtYXRjaGVzIHRoZSB1c2VyJ3MgaW50ZW50OgoKLSAqKkluc3RhbGwgZnJvbSBzY3JhdGNoLioq" + + "IFtwcm9tcHRzL2luc3RhbGwtZnJvbS1zY3JhdGNoLm1kXShwcm9tcHRzL2luc3RhbGwtZnJvbS1z" + + "Y3JhdGNoLm1kKSDigJQgazNkIGNsdXN0ZXIg4oaSIHByZWZsaWdodCDihpIgdXAg4oaSIGRlcGxv" + + "eSBhIHNtb2tlIGZ1bmN0aW9uLgotICoqQWRkIGEgbmV3IGNvbXB1dGUgcGxhbmUuKiogW3Byb21w" + + "dHMvYWRkLWNvbXB1dGUtcGxhbmUubWRdKHByb21wdHMvYWRkLWNvbXB1dGUtcGxhbmUubWQpIOKA" + + "lCBzcGxpdC1jbHVzdGVyIGB1cGAgYWdhaW5zdCBhbiBleGlzdGluZyBjb250cm9sIHBsYW5lLgot" + + "ICoqRGVwbG95IGFuZCBpbnZva2UgYSBmdW5jdGlvbi4qKiBbcHJvbXB0cy9kZXBsb3ktYW5kLWlu" + + "dm9rZS5tZF0ocHJvbXB0cy9kZXBsb3ktYW5kLWludm9rZS5tZCkg4oCUIGNyZWF0ZSDihpIgZGVw" + + "bG95IOKGkiBBUEkga2V5IOKGkiBpbnZva2UsIGluY2x1ZGluZyB0aGUgTExNIGNyZWF0ZS9pbnZv" + + "a2UgdmFyaWFudC4KLSAqKkRpYWdub3NlIGEgZmFpbGVkIGluc3RhbGwuKiogW3Byb21wdHMvZGlh" + + "Z25vc2UtZmFpbGVkLWluc3RhbGwubWRdKHByb21wdHMvZGlhZ25vc2UtZmFpbGVkLWluc3RhbGwu" + + "bWQpIOKAlCBgc3RhdHVzIC0tanNvbmAg4oaSIGlkZW50aWZ5IGZhaWxlZCBjb21wb25lbnQg4oaS" + + "IGt1YmVjdGwgZGVzY3JpYmUg4oaSIHJlbWVkaWF0aW9uLgotICoqUm90YXRlIEpXS1MuKiogW3By" + + "b21wdHMvcm90YXRlLWNsdXN0ZXItandrcy5tZF0ocHJvbXB0cy9yb3RhdGUtY2x1c3Rlci1qd2tz" + + "Lm1kKSDigJQgd2hlbiBQU0FUIGF1dGggc3RhcnRzIGZhaWxpbmcuCi0gKipUZWFyIGRvd24uKiog" + + "W3Byb21wdHMvdGVhcmRvd24ubWRdKHByb21wdHMvdGVhcmRvd24ubWQpIOKAlCBgZG93biAtLXBs" + + "YW4tb25seWAgZmlyc3QsIHRoZW4gcmVhbCBydW4uIGBkb3duIC0tY2x1c3Rlci1uYW1lPVhgIGZv" + + "ciBvbmUgY29tcHV0ZSBwbGFuZSAob3JjaGVzdHJhdG9yOiBkcmFpbiArIHVuaW5zdGFsbCArIGNs" + + "dXN0ZXIgZGVsZXRlKTsgYHVuaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmVgIGZvciB0aGUgY29udHJv" + + "bCBwbGFuZSAocGVyLXBsYW5lIHByaW1pdGl2ZSk7IGBkb3duIC0tYWxsIC0tY29uZmlybWAgZm9y" + + "IGV2ZXJ5dGhpbmc7IGB1bmluc3RhbGwgLS1uby1hcHBseSA8cGxhbmU+IHwga3ViZWN0bCBkZWxl" + + "dGUgLWYgLWAgZm9yIEdpdE9wcy4KLSAqKkNyZWF0ZSBhbmQgcnVuIGEgdGFzay4qKiBbcHJvbXB0" + + "cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kXShwcm9tcHRzL2NyZWF0ZS1hbmQtcnVuLXRhc2subWQp" + + "IOKAlCBtaW50IEFQSSBrZXlzIOKGkiB0YXNrIGNyZWF0ZSAoY29udGFpbmVyIG9yIEhlbG0pIOKG" + + "kiBtb25pdG9yIHdpdGggYHRhc2sgZ2V0YCAvIGB0YXNrIGV2ZW50c2Ag4oaSIHJldHJpZXZlIHJl" + + "c3VsdHMg4oaSIGNsZWFudXAuCgojIyBSZWZlcmVuY2UKCi0gW3JlZmVyZW5jZS9jb21tYW5kcy5t" + + "ZF0ocmVmZXJlbmNlL2NvbW1hbmRzLm1kKSDigJQgZnVsbCBzdWJjb21tYW5kIGNoZWF0IHNoZWV0" + + "Ci0gW3JlZmVyZW5jZS9mbGFncy5tZF0ocmVmZXJlbmNlL2ZsYWdzLm1kKSDigJQgZ2xvYmFsICsg" + + "cGVyLWNvbW1hbmQgZmxhZ3MKLSBbcmVmZXJlbmNlL2V4aXQtY29kZXMubWRdKHJlZmVyZW5jZS9l" + + "eGl0LWNvZGVzLm1kKSDigJQgd2hhdCBlYWNoIG5vbi16ZXJvIGV4aXQgbWVhbnMKLSBbcmVmZXJl" + + "bmNlL3Ryb3VibGVzaG9vdGluZy5tZF0ocmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZCkg4oCU" + + "IGtub3duIGVycm9ycyDihpIgcmVtZWRpYXRpb24gdGFibGUKCiMjIFNhZmV0eSBydWxlcyDigJQg" + + "Q1JJVElDQUwKCioqTkVWRVIgZG8gdGhlc2Ugd2l0aG91dCBleHBsaWNpdCB1c2VyIGNvbmZpcm1h" + + "dGlvbjoqKgotIGBudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duYCBvciBgdW5pbnN0YWxsYCBpbiBh" + + "bnkgZm9ybSDigJQgZGVzdHJ1Y3RpdmUuICoqQUxXQVlTIHJ1biB3aXRoIGAtLXBsYW4tb25seWAg" + + "KGBkb3duYCkgb3IgYC0tbm8tYXBwbHlgIChgdW5pbnN0YWxsYCkgZmlyc3QqKiBhbmQgc2hvdyB0" + + "aGUgdXNlciB3aGF0IHdvdWxkIGhhcHBlbi4gU3RhdGUgd2hpY2ggY29tcHV0ZSBwbGFuZShzKSBh" + + "bmQgd2hldGhlciBwZXJzaXN0ZW50IHN0YXRlIHdvdWxkIGJlIHdpcGVkLgotIGBudmNmLWNsaSBz" + + "ZWxmLWhvc3RlZCBkb3duIC0tcmVtb3ZlLXBlcnNpc3RlbnRgIChvciBgdW5pbnN0YWxsIC0tcmVt" + + "b3ZlLXBlcnNpc3RlbnRgKSDigJQgZGVsZXRlcyBDYXNzYW5kcmEgcm93cywgT3BlbkJhbyBzZWFs" + + "IGtleXMsIHNyLWRlZmF1bHQgdXNlciBkYXRhLiAqKkxvc3MgaXMgdW5yZWNvdmVyYWJsZS4qKiBD" + + "b25maXJtIGV4cGxpY2l0bHkgdGhhdCB0aGlzIGlzIHdoYXQgdGhlIHVzZXIgd2FudHMuCi0gYG52" + + "Y2YtY2xpIHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmUgLS1mb3JjZS13aXRo" + + "LXJlZ2lzdGVyZWQtY2x1c3RlcnNgIOKAlCBvcnBoYW5zIGV2ZXJ5IHJlZ2lzdGVyZWQgY29tcHV0" + + "ZSBwbGFuZSAoUFNBVCBhdXRoIGJyZWFrcyBpbW1lZGlhdGVseSkuIFN0YXRlIHRoZSBjb25zZXF1" + + "ZW5jZSBiZWZvcmUgcGFzc2luZyB0aGlzIGZsYWcuCi0gYG52Y2YtY2xpIHNlbGYtaG9zdGVkIGRv" + + "d24gLS1hbGxgIOKAlCBudWtlcyBldmVyeXRoaW5nLiBBbHdheXMgc2hvdyB0aGUgY2x1c3RlciBs" + + "aXN0IChgbnZjZi1jbGkgY2x1c3RlciBsaXN0YCkgYW5kIGdldCBjb25maXJtYXRpb24uCi0gYG52" + + "Y2YtY2xpIGNsdXN0ZXIgZGVsZXRlYCDigJQgcmVtb3ZlcyB0aGUgY2x1c3RlcidzIElDTVMgcmVn" + + "aXN0cmF0aW9uOyB0aGUgY29tcHV0ZSBwbGFuZSBpbW1lZGlhdGVseSBzdG9wcyBiZWluZyBhYmxl" + + "IHRvIGF1dGhlbnRpY2F0ZS4KLSBgbnZjZi1jbGkgZnVuY3Rpb24gZGVsZXRlYCDigJQgcmVtb3Zl" + + "cyBhIGZ1bmN0aW9uIGFuZCBhbnkgYWN0aXZlIGRlcGxveW1lbnQuCi0gYG52Y2YtY2xpIHRhc2sg" + + "ZGVsZXRlYCDigJQgcGVybWFuZW50bHkgcmVtb3ZlcyB0aGUgdGFzayByZWNvcmQuIFN0b3AsIHN0" + + "YXRlIHRoZSB0YXNrIElEIGFuZCBjdXJyZW50IHN0YXR1cywgdGhlbiB3YWl0IGZvciBhIHN1YnNl" + + "cXVlbnQgdXNlciByZXBseSB0aGF0IGV4cGxpY2l0bHkgY29uZmlybXMgZGVsZXRpb24gb2YgdGhh" + + "dCBzcGVjaWZpYyB0YXNrIGJlZm9yZSBydW5uaW5nIHRoaXMgY29tbWFuZC4gRG8gbm90IHRyZWF0" + + "IHRoZSB1c2VyJ3Mgb3JpZ2luYWwgZGVsZXRlIHJlcXVlc3QgYXMgY29uZmlybWF0aW9uLgotIEFu" + + "eSByYXcgYGhlbG0gdW5pbnN0YWxsYCBvciBga3ViZWN0bCBkZWxldGUgcHZjL3B2YCDigJQgYWZm" + + "ZWN0cyBwZXJzaXN0ZW50IHN0YXRlLiBQcmVmZXIgYG52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd25g" + + "IChvcmNoZXN0cmF0b3IpIG9yIGB1bmluc3RhbGxgIChwZXItcGxhbmUpIHdoaWNoIGhhbmRsZSB0" + + "aGlzIHNhZmVseS4KLSBBbnkgYC0tZm9yY2VgIGZsYWcgKGAtLWZvcmNlLXdpdGgtcmVnaXN0ZXJl" + + "ZC1jbHVzdGVyc2AsIGAtLWNvbmZpcm1gIGluIG5vbi1pbnRlcmFjdGl2ZSBjb250ZXh0cykuCgoq" + + "KkFMV0FZUyBkbyB0aGVzZToqKgotIFJ1biBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzYCBi" + + "ZWZvcmUgYXNzdW1pbmcgYSBjbHVzdGVyIGV4aXN0cyAvIGlzIGhlYWx0aHkuCi0gU2hvdyB0aGUg" + + "cGxhbm5lZCBhY3Rpb24gKGNsdXN0ZXIgbmFtZSwgZnVuY3Rpb24gbmFtZSwgR1BVIHR5cGUsIGNv" + + "c3QgaWYga25vd24pIGJlZm9yZSBjcmVhdGluZy4KLSBCZWZvcmUgY3JlYXRpbmcgb3IgZGVwbG95" + + "aW5nIGEgY29udGFpbmVyIG9yIExMTSBmdW5jdGlvbiwgY29uZmlybSB0aGUgZXhhY3QgZnVuY3Rp" + + "b24gbmFtZSBhbmQgY29udGFpbmVyIGltYWdlIHdpdGggdGhlIHVzZXIuIEZvciBMTE0gZnVuY3Rp" + + "b25zLCBhbHNvIGNvbmZpcm0gdGhlIGV4YWN0IG1vZGVsIG5hbWUgdXNlZCBpbiBgbW9kZWxzW10u" + + "bmFtZWAgYW5kIE9wZW5BSSBgbW9kZWw6ICI8ZnVuY3Rpb24taWQ+Lzxtb2RlbC1uYW1lPiJgLiBJ" + + "ZiBhbnkgdmFsdWUgaXMgbWlzc2luZywgYXNrIHRoZSB1c2VyIGluc3RlYWQgb2YgZ3Vlc3Npbmcg" + + "b3Igc3VibWl0dGluZyBleGFtcGxlIHBsYWNlaG9sZGVycy4KLSBDb25maXJtIGV4YWN0IHJlc291" + + "cmNlIG5hbWVzIGJlZm9yZSBkZWxldGlvbiDigJQgbWF0Y2ggYWdhaW5zdCBgY2x1c3RlciBsaXN0" + + "YCAvIGBmdW5jdGlvbiBsaXN0YCBvdXRwdXQuCi0gSW4gQ0kgLyBub24taW50ZXJhY3RpdmUgY29u" + + "dGV4dHMsIHVzZSBgLS1ub24taW50ZXJhY3RpdmUgLS10b2tlbj0kSldUYC4gTmV2ZXIgcHJvcG9z" + + "ZSBpbnRlcmFjdGl2ZSBgbnZjZi1jbGkgaW5pdGAgd2hlbiBgJENJYCBpcyBzZXQuCgoqKk5FVkVS" + + "IHBhc3RlIHRoZXNlIGludG8gY2hhdCAvIGxvZ3MgLyBmZWVkYmFjazoqKgotIEFkbWluIHRva2Vu" + + "cyAoZnVsbCBKV1QpLiBTaG93IHRoZSBmaXJzdCA4IGNoYXJzICsgYC4uLmAgaWYgeW91IG11c3Qg" + + "cmVmZXJlbmNlIG9uZS4KLSBBUEkga2V5cyAoYG52YXBpLeKApmApLgotIENvbnRlbnRzIG9mIGB+" + + "Ly5udmNmLWNsaS5zdGF0ZWAgb3IgYW55IGt1YmVjb25maWcuCi0gQW55IGRhdGEgbWFya2VkIHNl" + + "Y3JldCBpbiBoZWxtZmlsZSB2YWx1ZXMuCgo+IE5vdGUgKG9ubHkgd2hlbiBvcGVyYXRpbmcgbW9y" + + "ZSB0aGFuIG9uZSBjbHVzdGVyIGZyb20gdGhlIHNhbWUgbWFjaGluZSk6IHRoZSBDTEkncyBkZWZh" + + "dWx0Cj4gY29uZmlnIChgfi8ubnZjZi1jbGkueWFtbGApIGFuZCBzdGF0ZSAoYH4vLm52Y2YtY2xp" + + "LnN0YXRlYCkgYXJlIGEgc2luZ2xlIHNoYXJlZCBzbG90LCBub3QKPiBwZXItY2x1c3Rlci4gV2l0" + + "aCBhIHNpbmdsZSBjb250cm9sIHBsYW5lICh0aGUgY29tbW9uIGNhc2UpIHRoaXMgbmVlZHMgbm8g" + + "YXR0ZW50aW9uLiBJZiB5b3UKPiBtYW5hZ2UgbXVsdGlwbGUgY2x1c3RlcnMsIHBhc3MgYC0tY29u" + + "ZmlnIDxjbHVzdGVyPi55YW1sYCBvbiBldmVyeSBjb21tYW5kIChvciBrZWVwIGEKPiBkZWxpYmVy" + + "YXRlbHktc3dpdGNoZWQgcGVyLWNsdXN0ZXIgZGVmYXVsdCk6IHdpdGggbm8gYC0tY29uZmlnYCwg" + + "Y29tbWFuZHMgdGFyZ2V0IHdoaWNoZXZlcgo+IGNsdXN0ZXIgd2FzIGxhc3QgYGluaXRgJ2QsIGFu" + + "ZCBgaW5pdGAgLyBgYXBpLWtleSBnZW5lcmF0ZWAgbXV0YXRlIHRoYXQgc2hhcmVkIGRlZmF1bHQs" + + "IHNvIGFuCj4gdW5zY29wZWQgYGFwaS1rZXkgZ2VuZXJhdGVgIGNhbiBtaW50IG9yIHN1cmZhY2Ug" + + "a2V5cyBhZ2FpbnN0IHRoZSB3cm9uZyBjbHVzdGVyLgoKIyMgT3V0cHV0IG1vZGVzIChmb3IgYWdl" + + "bnQgcGlwaW5nKQoKYG52Y2YtY2xpYCBzdWJjb21tYW5kcyB0aGF0IGxvbmctcnVuIChgdXBgLCBg" + + "c3RhdHVzYCwgYGNoZWNrYCkgYWNjZXB0IGZvdXIgb3V0cHV0IG1vZGVzOgoKLSAqKmAtLWpzb25g" + + "Kiog4oCUIEpTT05MIGV2ZW50cyBvbiBzdGRlcnI7IG9uZSBldmVudCBwZXIgbGluZTsgc3RhYmxl" + + "IHNjaGVtYSAoYHNjaGVtYVZlcnNpb246IDJgKS4gKipVc2UgdGhpcyB3aGVuIHJ1bm5pbmcgdW5k" + + "ZXIgYW4gYWdlbnQuKiogUGFyc2UgbGluZS1ieS1saW5lIHdpdGggYGpxIC1jIC5gIG9yIGBqc29u" + + "LmxvYWRzKClgLgotICoqYC0tcGxhaW5gKiog4oCUIFBsYWluIHRpbWVzdGFtcGVkIGxpbmVzLCBS" + + "RkMzMzM5IFVUQywgYFtOTi84XWAgcGhhc2UgcHJlZml4OyBncmVwLWZyaWVuZGx5LiBEZWZhdWx0" + + "IGluIG5vbi1UVFkuCi0gKipgLS1hY2Nlc3NpYmxlYCoqIOKAlCBQbGFpbiBvdXRwdXQgd2l0aG91" + + "dCBzcGlubmVycywgd2l0aCB2ZXJib3NlIHN0YXRlIG1hcmtlcnMgKGBbY29tcGxldGVkXWAsIGBb" + + "cnVubmluZ11gLCBgW3BlbmRpbmddYCwgYFtmYWlsZWRdYCkuIEZvciBzY3JlZW4gcmVhZGVycyBh" + + "bmQgY29uc3RyYWluZWQgdGVybWluYWxzLgotICoqKG5vIGZsYWcpKiog4oCUIEJ1YmJsZXRlYSBU" + + "VFkgZGFzaGJvYXJkLiBEZWZhdWx0IGluIFRUWSDiiaUxMDDDlzMwLiBEb24ndCB1c2UgdW5kZXIg" + + "YW4gYWdlbnQgKGN1cnNvci11cCBzZXF1ZW5jZXMgYXJlIG5vaXN5KS4KCkF1dG8tZGV0ZWN0IHBp" + + "Y2tzIHRoZSByaWdodCBtb2RlIGZvciB3aGF0ZXZlciBzdGRvdXQvc3RkZXJyIGlzLiBUaGUgQ0xJ" + + "IGFsc28gaG9ub3JzIGBOT19DT0xPUmAgKGFueSB2YWx1ZSDihpIgZm9yY2VzIHBsYWluKSwgYFRF" + + "Uk09ZHVtYmAgKGZvcmNlcyBwbGFpbiksIGFuZCBgQ0k9dHJ1dGh5YCAoZm9yY2VzIHBsYWluIGV2" + + "ZW4gb24gYSBmYWtlIFRUWSkuIFdoZW4gdGhlIHRlcm1pbmFsIGlzIHNtYWxsZXIgdGhhbiAxMDDD" + + "lzMwLCB0aGUgYnViYmxldGVhIHJlbmRlcmVyIGZhbGxzIGJhY2sgdG8gYSBjb21wYWN0IGxheW91" + + "dC4gRXhwbGljaXQgYC0tanNvbmAgaXMgdGhlIHJpZ2h0IGNhbGwgZm9yIGFnZW50IHBpcGluZy4K" + + "CiMjIE9uIGZhaWx1cmUKCmBudmNmLWNsaWAgZmFpbHVyZXMgZW1pdCBzdHJ1Y3R1cmVkIGBwaGFz" + + "ZV9mYWlsZWRgIGV2ZW50cyBpbiBKU09OOgoKYGBganNvbgp7ImV2ZW50IjoicGhhc2VfZmFpbGVk" + + "IiwicGhhc2VOdW0iOjQsInBoYXNlIjoiYXBwbHktY3AiLAogImVyckNhdGVnb3J5IjoiaGVsbV9h" + + "cHBseSIsImVyck1lc3NhZ2UiOiJoZWxtIGluc3RhbGwgYXBpLWtleXM6IHRpbWVkIG91dCIsCiAi" + + "cmV0cnlDbGFzcyI6ImJhY2tvZmYiLCJyZXRyeUFmdGVyU2VjIjo2MCwKICJyZW1lZGlhdGlvbiI6" + + "WyJrdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiBjYXNzYW5kcmEtc3lzdGVtIGNhc3NhbmRyYS0wIiwK" + + "ICAgICAgICAgICAgICAgICJSZS1ydW4gd2l0aCAtLWRlYnVnIGZvciB2ZXJib3NlIGhlbG1maWxl" + + "IG91dHB1dCJdLAogInJhdyI6eyJzdWJwcm9jZXNzIjoiaGVsbWZpbGUiLCJleGl0Q29kZSI6MSwi" + + "c3RkZXJyVGFpbCI6IuKApiIsImt1YmVybmV0ZXNSZWFzb24iOiJGYWlsZWRTY2hlZHVsaW5nIn19" + + "CmBgYAoKVGhlIGByZXRyeUNsYXNzYCBmaWVsZCB0ZWxscyB0aGUgYWdlbnQgaG93IHRvIGhhbmRs" + + "ZSB0aGUgZmFpbHVyZToKCnwgYHJldHJ5Q2xhc3NgIHwgTWVhbmluZyB8IEFnZW50IGFjdGlvbiB8" + + "CnwtLS18LS0tfC0tLXwKfCBgaW1tZWRpYXRlYCB8IFRyYW5zaWVudCBibGlwIHwgUmV0cnkgdGhl" + + "IHNhbWUgYHVwYCBjb21tYW5kIG5vdyB8CnwgYGJhY2tvZmZgIHwgUmF0ZSBsaW1pdCAvIHBlbmRp" + + "bmcgb3BlcmF0aW9uIHwgV2FpdCBgcmV0cnlBZnRlclNlY2Agc2Vjb25kcywgdGhlbiByZXRyeSB8" + + "CnwgYGFmdGVyX3JlbWVkaWF0aW9uYCB8IE9wZXJhdG9yIG11c3QgaW50ZXJ2ZW5lIHwgU3VyZmFj" + + "ZSBgZXJyTWVzc2FnZWAgKyBgcmVtZWRpYXRpb25gLCBTVE9QLiBEb24ndCBhdXRvLXJldHJ5LiB8" + + "CnwgYG5vbmVgIHwgTm9uLXJldHJ5YWJsZSB8IFNhbWUgYXMgYGFmdGVyX3JlbWVkaWF0aW9uYCDi" + + "gJQgc3VyZmFjZSBhbmQgc3RvcCB8CnwgYHVua25vd25gIHwgQ2xhc3NpZmllciB1bnN1cmUgfCBU" + + "cmVhdCBjb25zZXJ2YXRpdmVseTogc3VyZmFjZSBhbmQgc3RvcCB8CgpOZXZlciByZS1ydW4gd2l0" + + "aCBgLS1mb3JjZWAgKG5vIGNvbW1hbmQgdGFrZXMgb25lKS4gVGhlIGByYXdgIGJsb2NrIGNhcnJp" + + "ZXMgdGhlIHVuZGVybHlpbmcgc2lnbmFsIChzdWJwcm9jZXNzIGV4aXQsIEhUVFAgc3RhdHVzLCBL" + + "OHMgcmVhc29uKSDigJQgcXVvdGUgcmVsZXZhbnQgZmllbGRzIHdoZW4gZXhwbGFpbmluZyBmYWls" + + "dXJlcyB0byB0aGUgdXNlciwgYnV0IGRvbid0IGR1bXAgYHN0ZGVyclRhaWxgIHZlcmJhdGltIGlu" + + "dG8gY2hhdCB3aXRob3V0IHNjYW5uaW5nIGZvciBzZWNyZXRzIGZpcnN0LgoKIyMgUXVpY2sgY29t" + + "bWFuZCByZWZlcmVuY2UKCmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9zdGVkIGNoZWNrIC0tcHJlICAg" + + "ICAgICAgICAgICAjIHByZS1mbGlnaHQKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXAgLS1jbHVzdGVy" + + "LW5hbWU9TkFNRSAgICMgb25lLXNob3QgaW5zdGFsbApudmNmLWNsaSBzZWxmLWhvc3RlZCBzdGF0" + + "dXMgICAgICAgICAgICAgICAgICAgIyBzbmFwc2hvdApudmNmLWNsaSBzZWxmLWhvc3RlZCBzdGF0" + + "dXMgLS13YXRjaCAgICAgICAgICAgIyBsaXZlCm52Y2YtY2xpIGluaXQgICAgICAgICAgICAgICAg" + + "ICAgICAgICAgICAgICAgICAjIG1pbnQgYWRtaW4gdG9rZW4gKGNsZWFycyBhbGwgc2F2ZWQgQVBJ" + + "IGtleXMpCm52Y2YtY2xpIGNsdXN0ZXIgcmVnaXN0ZXIg4oCmICAgICAgICAgICAgICAgICAgICMg" + + "cmVnaXN0ZXIgY2x1c3RlcgpudmNmLWNsaSBhcGkta2V5IGdlbmVyYXRlIC0tZGVzY3JpcHRpb249" + + "4oCmICAgICAjIG1pbnQgYm90aCBmdW5jdGlvbiBhbmQgdGFzayBBUEkga2V5cyAocnVuIGFmdGVy" + + "IGV2ZXJ5IGluaXQpCm52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1mb3IgZnVuY3Rpb24g4oCm" + + "ICAgICMgZnVuY3Rpb24ga2V5IG9ubHkKbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWZvciB0" + + "YXNrIOKApiAgICAgICAgIyB0YXNrIGtleSBvbmx5Cm52Y2YtY2xpIGZ1bmN0aW9uIGNyZWF0ZSAt" + + "LWlucHV0LWZpbGU94oCmICAgICAgICMgY3JlYXRlIGZ1bmN0aW9uCm52Y2YtY2xpIGZ1bmN0aW9u" + + "IGNyZWF0ZSAtLWZ1bmN0aW9uLXR5cGU9TExNIC0tbGxtLW1vZGVsPTxzcGVjPiAgIyBjcmVhdGUg" + + "TExNIGZ1bmN0aW9uIG1ldGFkYXRhCm52Y2YtY2xpIGZ1bmN0aW9uIGNyZWF0ZSAtLW5hbWU9bGxt" + + "LWhlbG0gLS1pbmZlcmVuY2UtdXJsPS8gLS1pbmZlcmVuY2UtcG9ydD04MDAwIFwKICAtLWZ1bmN0" + + "aW9uLXR5cGU9TExNIC0taGVsbS1jaGFydD08Y2hhcnQ+IC0taGVsbS1jaGFydC1zZXJ2aWNlPTxz" + + "ZXJ2aWNlPiAtLWxsbS1tb2RlbD08c3BlYz4KbnZjZi1jbGkgZnVuY3Rpb24gdXBkYXRlIC0tbGxt" + + "LW1vZGVsLXVwZGF0ZT08c3BlYz4gICMgdXBkYXRlIExMTSByb3V0aW5nL3Rva2VuIGxpbWl0cwpu" + + "dmNmLWNsaSBmdW5jdGlvbiBkZXBsb3kgY3JlYXRlIC0taW5wdXQtZmlsZT3igKYKbnZjZi1jbGkg" + + "ZnVuY3Rpb24gaW52b2tlIC0taW5wdXQtZmlsZT3igKYKCiMgVGFzayBjb21tYW5kcyDigJQgcmVx" + + "dWlyZXMgTlZDRl9CQVNFX05WQ1RfVVJMPWh0dHA6Ly88bnZjdC1nYXRld2F5PgpudmNmLWNsaSB0" + + "YXNrIGNyZWF0ZSAtLW5hbWU9WCAtLWdwdT1IMTAwIC0taW5zdGFuY2UtdHlwZT1ZIC0taW1hZ2U9" + + "WgpudmNmLWNsaSB0YXNrIGNyZWF0ZSAtLWlucHV0LWZpbGU9dGFzay5qc29uICAgIyBmcm9tIEpT" + + "T04gY29uZmlnCm52Y2YtY2xpIHRhc2sgbGlzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAj" + + "IGxpc3QgYWxsIHRhc2tzCm52Y2YtY2xpIHRhc2sgbGlzdCAtLXN0YXR1cz1SVU5OSU5HICAgICAg" + + "ICAgICAjIGZpbHRlciBieSBzdGF0dXMKbnZjZi1jbGkgdGFzayBnZXQgW3Rhc2tJZF0gICAgICAg" + + "ICAgICAgICAgICAgICMgdGFzayBkZXRhaWxzCm52Y2YtY2xpIHRhc2sgZXZlbnRzIFt0YXNrSWRd" + + "ICAgICAgICAgICAgICAgICAjIGxpZmVjeWNsZSBldmVudHMKbnZjZi1jbGkgdGFzayByZXN1bHRz" + + "IFt0YXNrSWRdICAgICAgICAgICAgICAgICMgcmVzdWx0IGFydGlmYWN0cwpudmNmLWNsaSB0YXNr" + + "IGNhbmNlbCBbdGFza0lkXQpudmNmLWNsaSB0YXNrIGRlbGV0ZSBbdGFza0lkXQpgYGAKCiMjIEZl" + + "ZWRiYWNrCgpJZiB0aGUgdXNlciBoaXRzIGEgYnVnIG9yIGxpbWl0YXRpb24sIGZpbGUgYW4gaXNz" + + "dWUgdGhyb3VnaCB0aGUgcHJvamVjdCB0cmFja2VyLiBEb24ndCBpbmNsdWRlIHNlY3JldHMuClBL" + + "BwjFnijlBWAAAAVgAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADMACQBkYXRhL252Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9jaS1waXBlbGluZXMubWRVVAUAAQCmzhIjIENJIHBpcGVs" + + "aW5lIHBhdHRlcm5zCgpIb3cgdG8gZHJpdmUgYG52Y2YtY2xpYCBmcm9tIENJIChHaXRMYWIgQ0ks" + + "IEdpdEh1YiBBY3Rpb25zLCBKZW5raW5zLCBBcmdvQ0QpLiBQYXR0ZXJucyB0aGF0IHN1cmZhY2Ug" + + "ZnJlcXVlbnRseS4KCiMjIEJhc2ljIGluc3RhbGwgcGlwZWxpbmUKCmBgYHlhbWwKIyBHaXRMYWIg" + + "Q0kgZXhhbXBsZQpkZXBsb3lfbnZjZjoKICBzdGFnZTogZGVwbG95CiAgaW1hZ2U6IG52Y3IuaW8v" + + "MDY1MTE1NTIxNTg2NDk3OS9uY3AtZGV2L252Y2YtY2xpOjEuNC4wCiAgdmFyaWFibGVzOgogICAg" + + "S1VCRUNPTkZJRzogJEtVQkVDT05GSUdfRklMRQogIHNjcmlwdDoKICAgIC0gbnZjZi1jbGkgc2Vs" + + "Zi1ob3N0ZWQgY2hlY2sgLS1wcmUgLS1qc29uIHwganEgLWUgJy5ldmVudCAhPSAicGhhc2VfZmFp" + + "bGVkIicgfHwgZXhpdCAyCiAgICAtIG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwIC0tY2x1c3Rlci1u" + + "YW1lPSRDTFVTVEVSX05BTUUgLS10b2tlbj0kTlZDRl9BRE1JTl9KV1QgLS1ub24taW50ZXJhY3Rp" + + "dmUgLS1qc29uCiAgICAtIG52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1cyAtLWpzb24gfCBqcSAt" + + "ZSAnLnZlcmRpY3QgPT0gImhlYWx0aHkiJwpgYGAKCk5vdGVzOgotIGAtLW5vbi1pbnRlcmFjdGl2" + + "ZSAtLXRva2VuPSRKV1RgIGlzIHJlcXVpcmVkIGluIENJOyBuZXZlciB1c2UgaW50ZXJhY3RpdmUg" + + "YGluaXRgLgotIEFsd2F5cyBgLS1qc29uYCBmb3IgbWFjaGluZS1wYXJzaW5nLgotIEZpbmFsIHN0" + + "YXR1cyBjaGVjayBnYXRlcyBkb3duc3RyZWFtIHN0YWdlcyBvbiBgdmVyZGljdCA9PSAiaGVhbHRo" + + "eSJgLgoKIyMgR2l0T3BzIChBcmdvIC8gRmx1eCkgcGF0dGVybgoKQ0kgZG9lc24ndCBga3ViZWN0" + + "bCBhcHBseWAg4oCUIGluc3RlYWQsIHJlbmRlciBtYW5pZmVzdHMsIGNvbW1pdCB0aGVtLCBsZXQg" + + "dGhlIGNvbnRyb2xsZXIgYXBwbHkuCgpgYGB5YW1sCnJlbmRlcjoKICBzY3JpcHQ6CiAgICAtIG52" + + "Y2YtY2xpIHNlbGYtaG9zdGVkIGluc3RhbGwgLS1jb250cm9sLXBsYW5lIC0tbm8tYXBwbHkgPiBy" + + "ZW5kZXJlZC9jb250cm9sLXBsYW5lLnlhbWwKICAgIC0gbnZjZi1jbGkgc2VsZi1ob3N0ZWQgaW5z" + + "dGFsbCAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9JE5BTUUgLS1uby1hcHBseSA+IHJl" + + "bmRlcmVkL2NvbXB1dGUtcGxhbmUueWFtbAogICAgLSBnaXQgYWRkIHJlbmRlcmVkLyAmJiBnaXQg" + + "Y29tbWl0IC1tICJkZXBsb3kgTlZDRiAkVEFHIiAmJiBnaXQgcHVzaApgYGAKClRoZW4gQXJnb0NE" + + "IG9yIEZsdXggd2F0Y2hlcyBgcmVuZGVyZWQvYCBhbmQgYXBwbGllcy4gVGhlIENMSSBuZXZlciB0" + + "b3VjaGVzIHRoZSBjbHVzdGVyIGRpcmVjdGx5LgoKRm9yIHRoZSByZWdpc3RlciBzdGVwICh3aGlj" + + "aCBtdXRhdGVzIElDTVMsIG5vdCBqdXN0IEs4cyk6CgpgYGB5YW1sCnJlZ2lzdGVyOgogIHNjcmlw" + + "dDoKICAgIC0gbnZjZi1jbGkgY2x1c3RlciByZWdpc3RlciAtLW5hbWU9JE5BTUUgLS1uY2EtaWQ9" + + "JE5DQSAtLXJlZ2lvbj0kUkVHSU9OIC0taWdub3JlLWV4aXN0aW5nCmBgYAoKYC0taWdub3JlLWV4" + + "aXN0aW5nYCBpcyB0aGUgR2l0T3BzLWZyaWVuZGx5IGlkZW1wb3RlbnQgY29udHJhY3QuCgojIyBN" + + "dWx0aS1jbHVzdGVyIHBpcGVsaW5lCgpXaGVuIHRoZSBwaXBlbGluZSBtYW5hZ2VzIG1hbnkgY29t" + + "cHV0ZSBjbHVzdGVycyBhZ2FpbnN0IG9uZSBjb250cm9sIHBsYW5lOgoKYGBgeWFtbApkZXBsb3lf" + + "Y29tcHV0ZV9wbGFuZXM6CiAgcGFyYWxsZWw6CiAgICBtYXRyaXg6CiAgICAgIC0gQ0xVU1RFUjog" + + "bmNwLWVhc3QtMQogICAgICAgIENPTlRFWFQ6IGFkbWluQGdwdS1lYXN0LTEKICAgICAgLSBDTFVT" + + "VEVSOiBuY3Atd2VzdC0xCiAgICAgICAgQ09OVEVYVDogYWRtaW5AZ3B1LXdlc3QtMQogICAgICAt" + + "IENMVVNURVI6IG5jcC1ldS0xCiAgICAgICAgQ09OVEVYVDogYWRtaW5AZ3B1LWV1LTEKICBzY3Jp" + + "cHQ6CiAgICAtIG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwCiAgICAgICAgLS1jbHVzdGVyLW5hbWU9" + + "JENMVVNURVIKICAgICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD0kQ09OVEVYVAogICAgICAg" + + "IC0taWNtcy11cmw9JElDTVNfUFVCTElDX1VSTAogICAgICAgIC0tdG9rZW49JE5WQ0ZfQURNSU5f" + + "SldUCiAgICAgICAgLS1ub24taW50ZXJhY3RpdmUKICAgICAgICAtLWpzb24KYGBgCgpFYWNoIHBh" + + "cmFsbGVsIGpvYiByZWdpc3RlcnMgKyBpbnN0YWxscyBvbmUgY29tcHV0ZSBwbGFuZSBhZ2FpbnN0" + + "IHRoZSBzaGFyZWQgY29udHJvbCBwbGFuZS4gRmFpbHVyZXMgYXJlIGlzb2xhdGVkLgoKIyMgUGxh" + + "bi1vbmx5IHByZXZpZXcgaW4gUFJzCgpgYGB5YW1sCnByZXZpZXc6CiAgcnVsZXM6CiAgICAtIGlm" + + "OiAkQ0lfUElQRUxJTkVfU09VUkNFID09ICJtZXJnZV9yZXF1ZXN0X2V2ZW50IgogIHNjcmlwdDoK" + + "ICAgIC0gfAogICAgICBudmNmLWNsaSBzZWxmLWhvc3RlZCB1cCBcCiAgICAgICAgLS1jbHVzdGVy" + + "LW5hbWU9JENMVVNURVJfTkFNRSBcCiAgICAgICAgLS1wbGFuLW9ubHkgXAogICAgICAgIC0tanNv" + + "biB8IHRlZSBwbGFuLmpzb25sCiAgICAtIGpxIC1zICcuWzBdJyBwbGFuLmpzb25sID4gcGxhbi5q" + + "c29uCiAgICAtICdnaXRsYWItbXItY29tbWVudCAiIyMgTlZDRiBkZXBsb3kgcGxhblxuXG5cYFxg" + + "XGBqc29uXG4kKGNhdCBwbGFuLmpzb24pXG5cYFxgXGAiJwpgYGAKCmAtLXBsYW4tb25seWAgZXhp" + + "dHMgMCB3aXRob3V0IGNoYW5naW5nIGNsdXN0ZXIgc3RhdGU7IHRoZSBKU09OTCBvdXRwdXQgbGlz" + + "dHMgZWFjaCBwaGFzZSArIEVUQS4gUmVuZGVycyBuaWNlbHkgYXMgYW4gTVIgY29tbWVudC4KUEsH" + + "CCHGyIbwCgAA8AoAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAANAAJAGRhdGEvbnZjZi1zZWxm" + + "LW1hbmFnZWQtY2xpL2V4YW1wbGVzL211bHRpLWNsdXN0ZXIubWRVVAUAAQCmzhIjIE11bHRpLWNs" + + "dXN0ZXIgcGF0dGVybnMKCkV4YW1wbGVzIG9mIHNwbGl0LWNsdXN0ZXIgKyBtYW55LWNvbXB1dGUt" + + "cGxhbmUgb3BlcmF0aW9uLgoKIyMgT25lIGNvbnRyb2wgcGxhbmUgKyBOIGNvbXB1dGUgcGxhbmVz" + + "CgpUaGUgY2Fub25pY2FsIG11bHRpLWNsdXN0ZXIgdG9wb2xvZ3kuIEVhY2ggY29tcHV0ZSBwbGFu" + + "ZSBpcyByZWdpc3RlcmVkIHNlcGFyYXRlbHk6CgpgYGBzaAojIDEuIEJyaW5nIHVwIHRoZSBjb250" + + "cm9sIHBsYW5lIChvbmUtdGltZSwgb24gdGhlIGNvbnRyb2wtcGxhbmUgY2x1c3Rlcik6CktVQkVD" + + "T05GSUc9Y3AueWFtbCBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1wbGFu" + + "ZSB8IGt1YmVjdGwgYXBwbHkgLWYgLQpudmNmLWNsaSBzZWxmLWhvc3RlZCBjaGVjayAtLWNvbnRy" + + "b2wtcGxhbmUgLS13YWl0IDVtCgojIDIuIFJlZ2lzdGVyICsgaW5zdGFsbCBlYWNoIGNvbXB1dGUg" + + "cGxhbmU6CmZvciBDVFggaW4gYWRtaW5AZ3B1LWVhc3QtMSBhZG1pbkBncHUtd2VzdC0xIGFkbWlu" + + "QGdwdS1ldS0xOyBkbwogIE5BTUU9JChlY2hvICIkQ1RYIiB8IGN1dCAtZEAgLWYyKQogIG52Y2Yt" + + "Y2xpIHNlbGYtaG9zdGVkIHVwIFwKICAgIC0tY2x1c3Rlci1uYW1lPSROQU1FIFwKICAgIC0tY29t" + + "cHV0ZS1wbGFuZS1jb250ZXh0PSRDVFggXAogICAgLS1pY21zLXVybD1odHRwczovL2ljbXMubnZj" + + "Zi5leGFtcGxlLmNvbSBcCiAgICAtLXRva2VuPSROVkNGX0FETUlOX0pXVCBcCiAgICAtLW5vbi1p" + + "bnRlcmFjdGl2ZSBcCiAgICAtLWpzb24KZG9uZQoKIyAzLiBWZXJpZnkgYWxsIGNvbXB1dGUgcGxh" + + "bmVzIHJlZ2lzdGVyZWQ6Cm52Y2YtY2xpIGNsdXN0ZXIgbGlzdCAtLWpzb24gfCBqcSAnLmNsdXN0" + + "ZXJzW10gfCB7bmFtZSwgcmVnaW9uLCBsYXN0SGVhcnRiZWF0fScKYGBgCgojIyBDb21wdXRlLXBs" + + "YW5lLW9ubHkgb3BlcmF0b3Igc2NlbmFyaW8KClRoZSBvcGVyYXRvciBoYXMga3ViZWN0bCBhY2Nl" + + "c3MgdG8gT05FIGNvbXB1dGUgcGxhbmUgb25seSDigJQgdGhlIGNvbnRyb2wgcGxhbmUgaXMgb3Bl" + + "cmF0ZWQgYnkgc29tZW9uZSBlbHNlIChlLmcuIFlvdHRhIHJ1bnMgdGhlIGNvbnRyb2wgcGxhbmUg" + + "Zm9yIGEgY3VzdG9tZXIpLgoKYGBgc2gKIyBNaW50IGEgdG9rZW4gdmlhIHRoZSBwdWJsaWMgYXBp" + + "IGdhdGV3YXkgKHRoZSBjb250cm9sIHBsYW5lJ3MgQVBJIEtleXMKIyBzZXJ2aWNlIGlzIHJlYWNo" + + "YWJsZSB2aWEgYXBpLm52Y2YuZXhhbXBsZS5jb20g4oCUIG5vIGt1YmVjdGwgYWNjZXNzIG5lZWRl" + + "ZCk6Cm52Y2YtY2xpIGluaXQgLS1hcGktdXJsPWh0dHBzOi8vYXBpLm52Y2YuZXhhbXBsZS5jb20K" + + "CiMgUnVuIHByZS1mbGlnaHQgc2NvcGVkIHRvIHRoZSBjb21wdXRlIHBsYW5lIG9ubHk6Cm52Y2Yt" + + "Y2xpIHNlbGYtaG9zdGVkIGNoZWNrIC0tcHJlIFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1h" + + "ZG1pbkBncHUxIFwKICAtLWljbXMtdXJsPWh0dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUuY29tIFwK" + + "ICAtLWpzb24KCiMgQnJpbmcgdXAganVzdCB0aGUgY29tcHV0ZSBwbGFuZToKbnZjZi1jbGkgc2Vs" + + "Zi1ob3N0ZWQgdXAgXAogIC0tY2x1c3Rlci1uYW1lPW15LWNvbXB1dGUtMSBcCiAgLS1jb21wdXRl" + + "LXBsYW5lLWNvbnRleHQ9YWRtaW5AZ3B1MSBcCiAgLS1pY21zLXVybD1odHRwczovL2ljbXMubnZj" + + "Zi5leGFtcGxlLmNvbSBcCiAgLS10b2tlbj0kQURNSU5fSldUIFwKICAtLW5vbi1pbnRlcmFjdGl2" + + "ZQoKIyBTdGF0dXMgKGNvbXB1dGUtb25seSDigJQgb3BlcmF0b3IgY2FuJ3Qgc2VlIGNvbnRyb2wt" + + "cGxhbmUgY29tcG9uZW50IGhlYWx0aCk6Cm52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1cyBcCiAg" + + "LS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9YWRtaW5AZ3B1MSBcCiAgLS1pY21zLXVybD1odHRwczov" + + "L2ljbXMubnZjZi5leGFtcGxlLmNvbQpgYGAKCiMjIEZ1bmN0aW9ucyB0YXJnZXRpbmcgc3BlY2lm" + + "aWMgY29tcHV0ZSBwbGFuZXMKCldoZW4geW91IGhhdmUgbXVsdGlwbGUgY29tcHV0ZSBwbGFuZXMg" + + "YW5kIHdhbnQgYSBmdW5jdGlvbiB0byBkZXBsb3kgdG8gb25lOgoKYGBganNvbgp7CiAgImZ1bmN0" + + "aW9uSWQiOiAiPGZuX2lkPiIsCiAgInZlcnNpb25JZCI6ICI8dmVyX2lkPiIsCiAgImRlcGxveW1l" + + "bnRTcGVjaWZpY2F0aW9ucyI6IFt7CiAgICAiZ3B1IjogIkgxMDAiLAogICAgImluc3RhbmNlVHlw" + + "ZSI6ICJOQ1AuR1BVLkgxMDBfMXgiLAogICAgIm1pbkluc3RhbmNlcyI6IDEsCiAgICAibWF4SW5z" + + "dGFuY2VzIjogMSwKICAgICJjbHVzdGVycyI6IFsiZ3B1LWVhc3QtMSJdCiAgfV0KfQpgYGAKClRo" + + "ZSBgY2x1c3RlcnNgIGFycmF5ICh1c2luZyBjbHVzdGVyIG5hbWVzLCBub3QgSURzKSBsaW1pdHMg" + + "c2NoZWR1bGluZyB0byB0aG9zZSBjb21wdXRlIHBsYW5lcy4gT21pdCB0byBsZXQgSUNNUyBjaG9v" + + "c2UgYW55IGNvbXB1dGUgcGxhbmUgd2l0aCBhIG1hdGNoaW5nIFNLVS4KCiMjIFN0YXR1cyBmYW4t" + + "b3V0IGFjcm9zcyBjb21wdXRlIHBsYW5lcwoKYGBgc2gKIyBMaXN0IGFsbCByZWdpc3RlcmVkIGNv" + + "bXB1dGUgcGxhbmVzOgpudmNmLWNsaSBjbHVzdGVyIGxpc3QgLS1qc29uIHwganEgLXIgJy5jbHVz" + + "dGVyc1tdLm5hbWUnID4gY2x1c3RlcnMudHh0CgojIFN0YXR1cyBzbmFwc2hvdCBwZXIgY29tcHV0" + + "ZSBwbGFuZSAoYXNzdW1pbmcgZWFjaCBjb250ZXh0IG5hbWUgbWF0Y2hlcyk6CndoaWxlIHJlYWQg" + + "TkFNRTsgZG8KICBlY2hvICI9PT0gJE5BTUUgPT09IgogIG52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0" + + "YXR1cyBcCiAgICAtLWNsdXN0ZXItbmFtZT0kTkFNRSBcCiAgICAtLWNvbXB1dGUtcGxhbmUtY29u" + + "dGV4dD1hZG1pbkAkTkFNRSBcCiAgICAtLWpzb24gfCBqcSAtYyAne2NsdXN0ZXI6LmNsdXN0ZXIs" + + "IHZlcmRpY3Q6LnZlcmRpY3QsIHJlY29uY2lsZToucmVjb25jaWxlQWdlU2VjfScKZG9uZSA8IGNs" + + "dXN0ZXJzLnR4dApgYGAKCkEgZnV0dXJlIE0rMTEgbWlsZXN0b25lIHdpbGwgYWRkIG5hdGl2ZSBm" + + "YW4tb3V0IChgc3RhdHVzIC0tYWxsLWNvbXB1dGUtcGxhbmVzYCkgc28gdGhpcyBkb2Vzbid0IG5l" + + "ZWQgYSBzaGVsbCBsb29wLgpQSwcIaHY/QegLAADoCwAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAA" + + "AAA3AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9hZGQtY29tcHV0ZS1wbGFu" + + "ZS5tZFVUBQABAKbOEiMgQWRkIGEgY29tcHV0ZSBwbGFuZSB0byBhbiBleGlzdGluZyBjb250cm9s" + + "IHBsYW5lCgpVc2VyIGhhcyBhIHdvcmtpbmcgTlZDRiBjb250cm9sIHBsYW5lIChydW5uaW5nIHNv" + + "bWV3aGVyZSkgYW5kIHdhbnRzIHRvIHJlZ2lzdGVyIGEgbmV3IEdQVSBjbHVzdGVyIGFnYWluc3Qg" + + "aXQuIFRoaXMgaXMgdGhlIG11bHRpLWNsdXN0ZXIgc2NhbGluZyBwYXRoOiBvbmUgY29udHJvbCBw" + + "bGFuZSDihpIgTiBjb21wdXRlIHBsYW5lcy4KCiMjIFByZXJlcXVpc2l0ZXMgdGhlIHVzZXIgbXVz" + + "dCBoYXZlCgotICoqa3ViZWN0bCBjb250ZXh0IGZvciB0aGUgbmV3IGNvbXB1dGUgcGxhbmUqKiBp" + + "biB0aGVpciBgS1VCRUNPTkZJR2AuCi0gKipQdWJsaWMgSUNNUyBVUkwqKiBvZiB0aGUgZXhpc3Rp" + + "bmcgY29udHJvbCBwbGFuZSAoZS5nLiBgaHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBsZS5jb21gKS4K" + + "LSAqKkFkbWluIEpXVCoqIGZvciB0aGUgY29udHJvbCBwbGFuZSdzIGFjY291bnQsIE9SIGFiaWxp" + + "dHkgdG8gbWludCBvbmUgdmlhIGBudmNmLWNsaSBpbml0YCBhZ2FpbnN0IHRoZSBjb250cm9sIHBs" + + "YW5lJ3MgcHVibGljIGFwaSBlbmRwb2ludC4gKEFkbWluIHRva2VucyBjb21lIGZyb20gdGhlIEFQ" + + "SSBLZXlzIHNlcnZpY2UgdmlhIHRoZSBwdWJsaWMgYXBpIGdhdGV3YXkg4oCUIGt1YmVjdGwgYWNj" + + "ZXNzIHRvIHRoZSBjb250cm9sIHBsYW5lIGlzIE5PVCByZXF1aXJlZCB0byBvYnRhaW4gb25lLikK" + + "LSAqKkEgdW5pcXVlIGAtLWNsdXN0ZXItbmFtZWAqKiB0aGF0IGRvZXNuJ3QgY29sbGlkZSB3aXRo" + + "IGFscmVhZHktcmVnaXN0ZXJlZCBjbHVzdGVycy4gVXNlIGBudmNmLWNsaSBjbHVzdGVyIGxpc3Rg" + + "IGZyb20gYSBjb250cm9sLXBsYW5lIGNvbnRleHQgdG8gY2hlY2suCgojIyBTdGVwcwoKMS4gKipB" + + "c2sgZm9yIGlucHV0czoqKgogICAtIGAtLWNsdXN0ZXItbmFtZT08dW5pcXVlPmAg4oCUIG11c3Qg" + + "YmUgdW5pcXVlIHdpdGhpbiB0aGUgY29udHJvbCBwbGFuZSdzIE5DQSBzY29wZQogICAtIGAtLWNv" + + "bXB1dGUtcGxhbmUtY29udGV4dD08Y29udGV4dD5gIOKAlCB0aGUgbmV3IEdQVSBjbHVzdGVyJ3Mg" + + "a3ViZWN0bCBjb250ZXh0CiAgIC0gYC0taWNtcy11cmw9PGh0dHBzOi8vaWNtcy5udmNmLmV4YW1w" + + "bGUuY29tPmAg4oCUIGNvbnRyb2wgcGxhbmUncyBwdWJsaWMgSUNNUyBVUkwKICAgLSBHUFUgdHlw" + + "ZT8gKGRlZmF1bHQgYEgxMDBgLCBidXQgYXNrKQoKMi4gKipQcmUtZmxpZ2h0IGp1c3QgdGhlIGNv" + + "bXB1dGUgcGxhbmU6KioKCiAgIGBgYHNoCiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGNoZWNrIC0t" + + "cHJlIFwKICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD0kQ1RYIFwKICAgICAtLWljbXMtdXJs" + + "PSRJQ01TIFwKICAgICAtLWpzb24gfCBqcSAtYyAuCiAgIGBgYAoKICAgVGhpcyB2YWxpZGF0ZXMg" + + "dGhlIEdQVSBvcGVyYXRvciBpcyBpbnN0YWxsZWQsIEdQVSBub2RlIGxhYmVscyBhcmUgcHJlc2Vu" + + "dCwgYW5kIElDTVMgaXMgcmVhY2hhYmxlIHZpYSBIVFRQLiBBZGRyZXNzIGFueSBmYWlsdXJlcyBi" + + "ZWZvcmUgcHJvY2VlZGluZy4KCjMuICoqUnVuIGBhZGQtY29tcHV0ZS1wbGFuZWA6KioKCiAgIGBg" + + "YHNoCiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGFkZC1jb21wdXRlLXBsYW5lIFwKICAgICAtLWNs" + + "dXN0ZXItbmFtZT0kTkFNRSBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9JENUWCBcCiAg" + + "ICAgLS1pY21zLXVybD0kSUNNUyBcCiAgICAgLS10b2tlbj0kSldUIFwKICAgICAtLW5vbi1pbnRl" + + "cmFjdGl2ZSBcCiAgICAgLS1qc29uCiAgIGBgYAoKICAgVGhpcyBpcyBhIHNlcGFyYXRlIHN1YmNv" + + "bW1hbmQgZnJvbSBgdXBgLiBJdCBydW5zIG9ubHkgdGhlIGNvbXB1dGUtcGxhbmUtcmVsZXZhbnQg" + + "cGhhc2VzOiAxIChjb21wdXRlLXBsYW5lIHByZWZsaWdodCksIDUgKHJlZ2lzdGVyKSwgNiAoY29t" + + "cHV0ZS1wbGFuZSBhcHBseSksIDggKGZpbmFsIGhlYWx0aCBvbiB0aGUgbmV3IGNvbXB1dGUgcGxh" + + "bmUpLiBJdCBkb2VzIE5PVCB0b3VjaCB0aGUgY29udHJvbCBwbGFuZSBhbmQgZG9lcyBOT1QgYWNj" + + "ZXB0IGAtLWNvbnRyb2wtcGxhbmUtY29udGV4dGAg4oCUIHRoZSBjb250cm9sIHBsYW5lIGlzIHJl" + + "YWNoZWQgb3ZlciBIVFRQUyBhdCBgLS1pY21zLXVybGAuIGAtLXRva2VuYCBpcyByZXF1aXJlZCBi" + + "ZWNhdXNlIHRoZXJlJ3Mgbm8ga3ViZWN0bCBwYXRoIHRvIG1pbnQgb25lIGZyb20uCgo0LiAqKlZl" + + "cmlmeS4qKiBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzIC0tY2x1c3Rlci1uYW1lPSROQU1F" + + "IC0tanNvbiB8IGpxYCDigJQgZXhwZWN0IGB2ZXJkaWN0OiAiaGVhbHRoeSJgLiBUaGUgUmVnaXN0" + + "ZXJlZCBDb21wdXRlIFBsYW5lcyBwYW5lbCBmcm9tIElDTVMgc2hvdWxkIG5vdyBsaXN0IHRoZSBu" + + "ZXcgY2x1c3Rlci4KCjUuICoqU21va2UuKiogW2RlcGxveS1hbmQtaW52b2tlLm1kXShkZXBsb3kt" + + "YW5kLWludm9rZS5tZCkg4oCUIGRlcGxveSBhIHNtYWxsIGZ1bmN0aW9uIHRvIHRoZSBuZXcgY29t" + + "cHV0ZSBwbGFuZSB0byBjb25maXJtIHNjaGVkdWxpbmcgd29ya3MuCgojIyBXaGF0IGlmIGEgY2x1" + + "c3RlciB3aXRoIHRoZSBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHM/CgpgYWRkLWNvbXB1dGUtcGxh" + + "bmVgJ3MgcmVnaXN0ZXIgcGhhc2UgdXNlcyBgLS1pZ25vcmUtZXhpc3RpbmdgIHNlbWFudGljcyDi" + + "gJQgaXQnbGwgbWF0Y2ggdGhlIGV4aXN0aW5nIElDTVMgcm93IGFuZCByZXVzZSBpdHMgY2x1c3Rl" + + "cklkLiBUd28gc2NlbmFyaW9zOgoKLSAqKlJlLXJlZ2lzdGVyaW5nIHRoZSBzYW1lIGNsdXN0ZXIq" + + "KiAocmUtcnVubmluZyBvbiB0aGUgc2FtZSBjb21wdXRlIHBsYW5lIHRoYXQgd2FzIHByZXZpb3Vz" + + "bHkgcmVnaXN0ZXJlZCk6IGV4cGVjdGVkLCBuby1vcCBzZW1hbnRpY3MuCi0gKipEaWZmZXJlbnQg" + + "cGh5c2ljYWwgY2x1c3RlciBidXQgc2FtZSBuYW1lKio6IHRoZSBzZWNvbmQgYXR0ZW1wdCB3aWxs" + + "IHJldXNlIHRoZSBJQ01TIHJvdywgYnV0IHRoZSBuZXcgY29tcHV0ZSBwbGFuZSdzIEpXS1Mgd2ls" + + "bCBiZSBzaWxlbnRseSAqcmVwbGFjZWQqIOKAlCB0aGUgb2xkIGNvbXB1dGUgcGxhbmUncyBOVkNB" + + "IGFnZW50IHdpbGwgc3RhcnQgZmFpbGluZyBQU0FUIGF1dGguICoqQ29uZmlybSB3aXRoIHRoZSB1" + + "c2VyKiogdGhhdCB0aGV5IG1lYW50IHRvIG92ZXJ3cml0ZS4KCldoZW4gaW4gZG91YnQsIHJ1biBg" + + "bnZjZi1jbGkgY2x1c3RlciBsaXN0YCBmaXJzdCBhbmQgYXNrIHRoZSB1c2VyIGJlZm9yZSBwcm9j" + + "ZWVkaW5nIHdpdGggYSBuYW1lIHRoYXQgYWxyZWFkeSBleGlzdHMuClBLBwj+ZkM6zAwAAMwMAABQ" + + "SwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADkACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9w" + + "cm9tcHRzL2NyZWF0ZS1hbmQtcnVuLXRhc2subWRVVAUAAQCmzhIjIENyZWF0ZSBhbmQgcnVuIGEg" + + "dGFzawoKU3RhbmRhcmQgZmxvdzogbWludCBBUEkga2V5cyAtPiB0YXNrIENSRUFURSAtPiBtb25p" + + "dG9yIC0+IHJldHJpZXZlIHJlc3VsdHMgLT4gY2xlYW51cC4KCiMjIDEuIE1pbnQgQVBJIGtleXMK" + + "ClRoZSBhZG1pbiB0b2tlbiBmcm9tIGBpbml0YCBkb2VzIG5vdCBjYXJyeSB0YXNrIGludm9jYXRp" + + "b24gc2NvcGUuIEdlbmVyYXRlIEFQSSBrZXlzOgoKYGBgc2gKbnZjZi1jbGkgYXBpLWtleSBnZW5l" + + "cmF0ZSAtLWRlc2NyaXB0aW9uPSJ0YXNrIHNtb2tlIHRlc3QiIC0tZXhwaXJlcy1pbj04aAojIC0+" + + "IGZ1bmN0aW9uIGtleTogbnZhcGktLi4uCiMgLT4gdGFzayBrZXk6IG52YXBpLS4uLgpgYGAKCkJv" + + "dGgga2V5cyBhcmUgc2F2ZWQgdG8gQ0xJIHN0YXRlLiBUbyBtaW50IG9ubHkgdGhlIHRhc2sga2V5" + + "OgoKYGBgc2gKbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWZvciB0YXNrIC0tZGVzY3JpcHRp" + + "b249InRhc2sgc21va2UgdGVzdCIgLS1leHBpcmVzLWluPThoCmBgYAoKVG8gdmFsaWRhdGUgZWFj" + + "aCBrZXkgaW1tZWRpYXRlbHkgYWZ0ZXIgbWludGluZzoKCmBgYHNoCm52Y2YtY2xpIGFwaS1rZXkg" + + "Z2VuZXJhdGUgLS1kZXNjcmlwdGlvbj0idGFzayBzbW9rZSB0ZXN0IiAtLWV4cGlyZXMtaW49OGgg" + + "LS12YWxpZGF0ZQojIC0+IGZ1bmN0aW9uIEFQSSBrZXkgdmFsaWRhdGlvbiBwYXNzZWQhCiMgLT4g" + + "dGFzayBBUEkga2V5IHZhbGlkYXRpb24gcGFzc2VkIQpgYGAKCk5ldmVyIGVjaG8gdGhlIGtleSB2" + + "YWx1ZSAobnZhcGktLi4uKSBpbnRvIGNoYXQgb3IgbG9ncy4gUmVwb3J0IG9ubHkgdGhhdCB0aGUg" + + "a2V5IHdhcyBtaW50ZWQsIGl0cyBkZXNjcmlwdGlvbiwgYW5kIGl0cyBleHBpcnkg4oCUIG5ldmVy" + + "IHRoZSB2YWx1ZSBpdHNlbGYuCgojIyMgRnJlc2ggc2Vzc2lvbiBwcmUtZmxpZ2h0CgpCZWZvcmUg" + + "cnVubmluZyBhbnkgYHRhc2tgIGNvbW1hbmQgaW4gYSBmcmVzaCBhZ2VudCBzZXNzaW9uLCB2ZXJp" + + "ZnkgY3JlZGVudGlhbHM6CgoxLiBDaGVjayB3aGV0aGVyIGBOVkNGX0FQSV9LRVlgIGlzIHNldDoK" + + "ICAgYGBgc2gKICAgcHJpbnRlbnYgTlZDRl9BUElfS0VZID4gL2Rldi9udWxsIDI+JjEgJiYgZWNo" + + "byBzZXQgfHwgZWNobyB1bnNldAogICBgYGAKMi4gSWYgdW5zZXQsIHJlYWQgdGhlIHN0b3JlZCBr" + + "ZXkgZXhwaXJ5IHdpdGhvdXQgcHJpbnRpbmcgdGhlIHZhbHVlOgogICBgYGBzaAogICBweXRob24z" + + "IC1jICJpbXBvcnQganNvbixwYXRobGliOyBzPWpzb24ubG9hZHMocGF0aGxpYi5QYXRoKCd+Ly5u" + + "dmNmLWNsaS5zdGF0ZScpLmV4cGFuZHVzZXIoKS5yZWFkX3RleHQoKSk7IHByaW50KHMuZ2V0KCdu" + + "dmN0QXBpS2V5RXhwaXJhdGlvbicsJ21pc3NpbmcnKSkiCiAgIGBgYAozLiBJZiB0aGUgZXhwaXJ5" + + "IGlzIGluIHRoZSBwYXN0IG9yIG1pc3NpbmcsIHJlZ2VuZXJhdGU6CiAgIGBgYHNoCiAgIG52Y2Yt" + + "Y2xpIHJlZnJlc2gKICAgbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWZvciB0YXNrIC0tZGVz" + + "Y3JpcHRpb249InRhc2sta2V5IiAtLWV4cGlyZXMtaW49MjRoIC0tdmFsaWRhdGUKICAgYGBgCjQu" + + "IEluamVjdCB0aGUgc3RvcmVkIGtleSBpbnRvIHRoZSBzdWJwcm9jZXNzIGVudiB3aXRob3V0IGxv" + + "Z2dpbmcgdGhlIHZhbHVlLiBVc2UgYSBzaGVsbCBzdWJzaGVsbCBvciBlbnYgcHJlZml4IOKAlCBu" + + "ZXZlciBwcmludCB0aGUga2V5IGludG8gY2hhdC4KCkVycm9yIGNsYXNzaWZpY2F0aW9uOgotICJt" + + "aXNzaW5nIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIiBvciBleGl0IDI6IGtleSBub3QgaW5q" + + "ZWN0ZWQ7IHJlcGVhdCBwcmUtZmxpZ2h0LgotIEhUVFAgNDAzOiBrZXkgZXhwaXJlZCBvciB3cm9u" + + "ZyBhdWRpZW5jZTsgcmVnZW5lcmF0ZS4KLSBFbXB0eSB0YXNrIGxpc3Q6IHZhbGlkOyBubyB0YXNr" + + "cyBleGlzdCB5ZXQuCgojIyAyLiBUYXNrIENSRUFURTogY29udGFpbmVyCgpEZWZpbmUgdGhlIHRh" + + "c2sgaW4gYSBKU09OIGZpbGUuIE1pbmltdW0gdmlhYmxlIGNvbnRhaW5lciB0YXNrOgoKYGBganNv" + + "bgp7CiAgIm5hbWUiOiAic21va2UtY29udGFpbmVyLXRhc2siLAogICJncHVTcGVjaWZpY2F0aW9u" + + "IjogewogICAgImdwdSI6ICJIMTAwIiwKICAgICJpbnN0YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAw" + + "XzF4IiwKICAgICJiYWNrZW5kIjogIm5jcC1sb2NhbCIKICB9LAogICJjb250YWluZXJJbWFnZSI6" + + "ICJudmNyLmlvL252aWRpYS9uZW1vOmxhdGVzdCIsCiAgImNvbnRhaW5lckFyZ3MiOiAicHl0aG9u" + + "IC1jIFwicHJpbnQoJ2hlbGxvIGZyb20gdGFzaycpXCIiLAogICJyZXN1bHRIYW5kbGluZ1N0cmF0" + + "ZWd5IjogIk5PTkUiCn0KYGBgCgpgYGBzaApudmNmLWNsaSB0YXNrIGNyZWF0ZSAtLWlucHV0LWZp" + + "bGU9dGFzay1jb250YWluZXIuanNvbgojIC0+IFRhc2sgSUQ6IDx0YXNrX2lkPgpgYGAKCkNhcHR1" + + "cmUgdGhlIHRhc2sgSUQgZnJvbSB0aGUgb3V0cHV0LiBTdGF0ZSBwZXJzaXN0ZW5jZSBjYW4gZmFp" + + "bCBzaWxlbnRseSwgc28gcGFzcwpgPHRhc2tJZD5gIGV4cGxpY2l0bHkgb24gc3Vic2VxdWVudCBj" + + "b21tYW5kcyByYXRoZXIgdGhhbiByZWx5aW5nIG9uIHNhdmVkIHN0YXRlLgoKRXF1aXZhbGVudCBD" + + "TEkgZmxhZ3MgZm9ybSBmb3IgcXVpY2sgYWQtaG9jIHJ1bnM6CgpgYGBzaApudmNmLWNsaSB0YXNr" + + "IGNyZWF0ZSBcCiAgLS1uYW1lPXNtb2tlLWNvbnRhaW5lci10YXNrIFwKICAtLWdwdT1IMTAwIFwK" + + "ICAtLWluc3RhbmNlLXR5cGU9TkNQLkdQVS5IMTAwXzF4IFwKICAtLWJhY2tlbmQ9bmNwLWxvY2Fs" + + "IFwKICAtLWltYWdlPW52Y3IuaW8vbnZpZGlhL25lbW86bGF0ZXN0IFwKICAtLWNvbnRhaW5lci1h" + + "cmdzPSJweXRob24gLWMgJ3ByaW50KGhlbGxvIGZyb20gdGFzayknIiBcCiAgLS1yZXN1bHQtc3Ry" + + "YXRlZ3k9Tk9ORQpgYGAKClRvIHRhcmdldCBhIHNwZWNpZmljIGNvbXB1dGUgY2x1c3RlcjoKCmBg" + + "YHNoCm52Y2YtY2xpIHRhc2sgY3JlYXRlIC0taW5wdXQtZmlsZT10YXNrLWNvbnRhaW5lci5qc29u" + + "IC0tY2x1c3RlcnM9bXktY2x1c3RlcgpgYGAKClRvIGluamVjdCBlbnZpcm9ubWVudCB2YXJpYWJs" + + "ZXMgb3Igc2VjcmV0cywgZWl0aGVyIHBhc3MgZmxhZ3M6CgpgYGBzaApudmNmLWNsaSB0YXNrIGNy" + + "ZWF0ZSAtLWlucHV0LWZpbGU9dGFzay1jb250YWluZXIuanNvbiBcCiAgLS1jb250YWluZXItZW52" + + "IE1ZX0VOVj12YWx1ZSBcCiAgLS1zZWNyZXRzIE1ZX1NFQ1JFVD1zM2NyM3QKYGBgCgpvciBzZXQg" + + "dGhlbSBpbiB0aGUgSlNPTiBmaWxlOgoKYGBganNvbgp7CiAgImNvbnRhaW5lckVudmlyb25tZW50" + + "IjogWwogICAgeyJrZXkiOiAiTVlfRU5WIiwgInZhbHVlIjogInZhbHVlIn0KICBdLAogICJzZWNy" + + "ZXRzIjogWwogICAgeyJuYW1lIjogIk1ZX1NFQ1JFVCIsICJ2YWx1ZSI6ICJzM2NyM3QifQogIF0K" + + "fQpgYGAKClNlY3JldHMgYXJlIGVuY3J5cHRlZCBhdCByZXN0IGFuZCBub3QgcmV0dXJuZWQgaW4g" + + "bGlzdCBvciBnZXQgcmVzcG9uc2VzIGJ5IGRlZmF1bHQ7IGRvIG5vdCBsb2cgdGhlbS4KCiMjIDMu" + + "IFRhc2sgQ1JFQVRFOiBIZWxtCgpGb3IgSGVsbS10eXBlIHRhc2tzLCByZXBsYWNlIGBjb250YWlu" + + "ZXJJbWFnZWAgd2l0aCBgaGVsbUNoYXJ0YDoKCmBgYGpzb24KewogICJuYW1lIjogInNtb2tlLWhl" + + "bG0tdGFzayIsCiAgImdwdVNwZWNpZmljYXRpb24iOiB7CiAgICAiZ3B1IjogIkgxMDAiLAogICAg" + + "Imluc3RhbmNlVHlwZSI6ICJOQ1AuR1BVLkgxMDBfMXgiLAogICAgImJhY2tlbmQiOiAibmNwLWxv" + + "Y2FsIgogIH0sCiAgImhlbG1DaGFydCI6ICJodHRwczovL2hlbG0ubmdjLm52aWRpYS5jb20vPG9y" + + "Zz4vY2hhcnRzL2V4YW1wbGUtdGFzay0wLjEuMC50Z3oiLAogICJyZXN1bHRIYW5kbGluZ1N0cmF0" + + "ZWd5IjogIk5PTkUiCn0KYGBgCgpgYGBzaApudmNmLWNsaSB0YXNrIGNyZWF0ZSAtLWlucHV0LWZp" + + "bGU9dGFzay1oZWxtLmpzb24KIyAtPiBUYXNrIElEOiA8dGFza19pZD4KYGBgCgpgaGVsbUNoYXJ0" + + "YCBhbmQgYGNvbnRhaW5lckltYWdlYCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLgoKIyMgM2IuIFVw" + + "ZGF0ZSBzZWNyZXRzIG9uIGEgcnVubmluZyB0YXNrCgpgYGBzaApudmNmLWNsaSB0YXNrIHVwZGF0" + + "ZS1zZWNyZXRzIDx0YXNrX2lkPiAtLXNlY3JldHMgTkFNRT12YWx1ZQpgYGAKCmB1cGRhdGUtc2Vj" + + "cmV0c2AgbWVyZ2VzIHNlY3JldHMgYnkgbmFtZTogc3VwcGxpZWQgc2VjcmV0cyBhcmUgYWRkZWQg" + + "b3IgdXBkYXRlZCwgYW5kIGV4aXN0aW5nIHNlY3JldHMgbm90IGluY2x1ZGVkIGluIHRoZSByZXF1" + + "ZXN0IGFyZSBwcmVzZXJ2ZWQuIERvIG5vdCBlY2hvIHNlY3JldCB2YWx1ZXMgaW50byBjaGF0LgoK" + + "IyMgNC4gTW9uaXRvcgoKUG9sbCB0YXNrIHN0YXRlOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBnZXQg" + + "PHRhc2tfaWQ+CiMgLT4gaWQ6IDx0YXNrX2lkPgojIC0+IHN0YXR1czogUlVOTklORwpgYGAKCk9y" + + "IHVzZSB0aGUgdGFzayBJRCBzYXZlZCB0byBzdGF0ZSBmcm9tIHRoZSBtb3N0IHJlY2VudCBgdGFz" + + "ayBjcmVhdGVgOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBnZXQKYGBgCgpTdGF0dXMgdmFsdWVzOiBg" + + "UVVFVUVEYCwgYExBVU5DSEVEYCwgYFJVTk5JTkdgLCBgQ09NUExFVEVEYCwgYEVSUk9SRURgLCBg" + + "Q0FOQ0VMRURgLCBgRVhDRUVERURfTUFYX1JVTlRJTUVfRFVSQVRJT05gLCBgRVhDRUVERURfTUFY" + + "X1FVRVVFRF9EVVJBVElPTmAuCgpJbnNwZWN0IGxpZmVjeWNsZSBldmVudHMgZm9yIHByb2dyZXNz" + + "IGRldGFpbHMgb3IgZmFpbHVyZSBjb250ZXh0OgoKYGBgc2gKbnZjZi1jbGkgdGFzayBldmVudHMg" + + "PHRhc2tfaWQ+CmBgYAoKSWYgdGhlIHRhc2sgaXMgc3R1Y2sgaW4gYFFVRVVFRGAsIGNoZWNrIHRo" + + "YXQgYSBjb21wdXRlIGNsdXN0ZXIgd2l0aCBhIG1hdGNoaW5nIEdQVSBTS1UKaXMgcmVnaXN0ZXJl" + + "ZCBhbmQgaGVhbHRoeSAoYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1c2ApLgoKSWYgdGhlIHRh" + + "c2sgbW92ZXMgdG8gYEVSUk9SRURgLCB0aGUgZXZlbnRzIG91dHB1dCBjb250YWlucyB0aGUgZmFp" + + "bHVyZSByZWFzb24uIEZvcgpjb250YWluZXItbGV2ZWwgZGV0YWlsLCBpbnNwZWN0IHRoZSB0YXNr" + + "IHdvcmtsb2FkIHBvZHMgb24gdGhlIGNvbXB1dGUtcGxhbmUgY2x1c3RlciB3aXRoCmBrdWJlY3Rs" + + "YCBhZ2FpbnN0IHRoZSBhcHByb3ByaWF0ZSBuYW1lc3BhY2UgYW5kIGNvbnRleHQuCgojIyA1LiBS" + + "ZXRyaWV2ZSByZXN1bHRzCgpGb3IgdGFza3Mgd2l0aCBgcmVzdWx0SGFuZGxpbmdTdHJhdGVneTog" + + "Tk9ORWAsIHJlc3VsdHMgYXJlIGVtcHR5IGJ5IGRlc2lnbjoKCmBgYHNoCm52Y2YtY2xpIHRhc2sg" + + "cmVzdWx0cyA8dGFza19pZD4KIyAtPiB7InJlc3VsdHMiOiBbXX0KYGBgCgpGb3IgdGFza3Mgd2l0" + + "aCBgcmVzdWx0SGFuZGxpbmdTdHJhdGVneTogVVBMT0FEYCwgcmVzdWx0cyB1cGxvYWQgdG8gdGhl" + + "IGxvY2F0aW9uIG5hbWVkIGluCmByZXN1bHRzTG9jYXRpb25gLiBUaGUgdGFzaydzIGNyZWRlbnRp" + + "YWxzIG11c3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhhdCBsb2NhdGlvbi4gQWZ0ZXIKdGhlIHRh" + + "c2sgcmVhY2hlcyBgQ09NUExFVEVEYDoKCmBgYHNoCm52Y2YtY2xpIHRhc2sgcmVzdWx0cyA8dGFz" + + "a19pZD4KYGBgCgpOb3RlOiByZXN1bHQgdXBsb2FkIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGluIHRo" + + "aXMgcmVsZWFzZS4KCiMjIDYuIENsZWFudXAKCkNhbmNlbCBhIHJ1bm5pbmcgdGFzazoKCmBgYHNo" + + "Cm52Y2YtY2xpIHRhc2sgY2FuY2VsIDx0YXNrX2lkPgpgYGAKCkRlbGV0ZSB0aGUgdGFzayByZWNv" + + "cmQgYWZ0ZXIgaXQgcmVhY2hlcyBhIHRlcm1pbmFsIHN0YXRlOgoKYGBgc2gKbnZjZi1jbGkgdGFz" + + "ayBkZWxldGUgPHRhc2tfaWQ+CmBgYAoKU3RvcCBhbmQgY29uZmlybSB3aXRoIHRoZSB1c2VyIGJl" + + "Zm9yZSBydW5uaW5nIHRhc2sgZGVsZXRlLiBTdGF0ZSB0aGUgdGFzayBJRCBhbmQgaXRzIGN1cnJl" + + "bnQgc3RhdHVzLiBEbyBub3QgcHJvY2VlZCBldmVuIHdoZW4gdGhlIHVzZXIncyBwcm9tcHQgYWxy" + + "ZWFkeSByZXF1ZXN0ZWQgZGVsZXRpb24g4oCUIGFsd2F5cyBnZXQgYW4gZXhwbGljaXQgbGFzdC1s" + + "b29rIGNvbmZpcm1hdGlvbi4gRGVsZXRpb24gaXMgcGVybWFuZW50IGFuZCBjYW5ub3QgYmUgdW5k" + + "b25lLgoKVG8gbGlzdCBhbGwgdGFza3MgZm9yIHRoZSBjdXJyZW50IG93bmVyICh1c2VmdWwgYmVm" + + "b3JlIGJ1bGsgY2xlYW51cCk6CgpgYGBzaApudmNmLWNsaSB0YXNrIGxpc3QKbnZjZi1jbGkgdGFz" + + "ayBsaXN0IC0tc3RhdHVzPUNPTVBMRVRFRApgYGAKCiMjIE5vdGVzCgotIEdQVSBmYW1pbHkgYW5k" + + "IGluc3RhbmNlIHR5cGUgbXVzdCBtYXRjaCBhIHJlZ2lzdGVyZWQgY29tcHV0ZSBjbHVzdGVyIFNL" + + "VS4gTWlzbWF0Y2gKICBjYXVzZXMgdGhlIHRhc2sgdG8gcmVtYWluIGBRVUVVRURgIGluZGVmaW5p" + + "dGVseS4gVXNlIGBudmNmLWNsaSBjbHVzdGVyIGxpc3RgIHRvIGNoZWNrCiAgcmVnaXN0ZXJlZCBT" + + "S1VzLgotIEZvciBjb250YWluZXIgaW1hZ2VzIG9uIHByaXZhdGUgcmVnaXN0cmllcywgZW5zdXJl" + + "IHRoZSBjb21wdXRlLXBsYW5lIGNsdXN0ZXIncwogIGltYWdlLWNyZWRlbnRpYWwtaGVscGVyIGlz" + + "IGNvbmZpZ3VyZWQgZm9yIHRoZSByZWdpc3RyeSBob3N0LgpQSwcIkdwb+ZgZAACYGQAAUEsDBBQA" + + "CAAAAAAAIQAAAAAAAAAAAAAAAAA3AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0" + + "cy9kZXBsb3ktYW5kLWludm9rZS5tZFVUBQABAKbOEiMgRGVwbG95IGFuZCBpbnZva2UgYSBjb250" + + "YWluZXIgZnVuY3Rpb24KClN0YW5kYXJkIGZvdXItc3RlcCBmbG93OiBmdW5jdGlvbiBDUkVBVEUg" + + "4oaSIERFUExPWSDihpIgQVBJIGtleSAoZm9yIGludm9rZSBzY29wZSkg4oaSIElOVk9LRS4KCiMj" + + "IDEuIEZ1bmN0aW9uIENSRUFURQoKRGVmaW5lIHRoZSBmdW5jdGlvbiBpbiBhIEpTT04gZmlsZS4g" + + "TWluaW11bToKCkJlZm9yZSBjcmVhdGluZyB0aGUgZnVuY3Rpb24sIGNvbmZpcm0gdGhlIGV4YWN0" + + "IGZ1bmN0aW9uIG5hbWUgYW5kIGNvbnRhaW5lciBpbWFnZSB3aXRoIHRoZSB1c2VyLiBJZiBlaXRo" + + "ZXIgdmFsdWUgaXMgbWlzc2luZywgc3RvcCBhbmQgYXNrLiBEbyBub3QgaW52ZW50IG9yIHN1Ym1p" + + "dCBleGFtcGxlIHZhbHVlcyBmb3IgdGhlc2UgZmllbGRzLgoKYGBganNvbgp7CiAgIm5hbWUiOiAi" + + "PGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1lPiIsCiAgImNvbnRhaW5lckltYWdlIjogIjxjb25maXJt" + + "ZWQtY29udGFpbmVyLWltYWdlPiIsCiAgImluZmVyZW5jZVVybCI6ICIvZWNobyIsCiAgImluZmVy" + + "ZW5jZVBvcnQiOiA4MDAwLAogICJkZXNjcmlwdGlvbiI6ICJzbW9rZSB0ZXN0IGVjaG8gZnVuY3Rp" + + "b24iLAogICJmdW5jdGlvblR5cGUiOiAiREVGQVVMVCIsCiAgImFwaUJvZHlGb3JtYXQiOiAiQ1VT" + + "VE9NIiwKICAiaGVhbHRoIjogewogICAgInByb3RvY29sIjogIkhUVFAiLAogICAgInVyaSI6ICIv" + + "aGVhbHRoIiwKICAgICJwb3J0IjogODAwMCwKICAgICJ0aW1lb3V0IjogIlBUMzBTIiwKICAgICJl" + + "eHBlY3RlZFN0YXR1c0NvZGUiOiAyMDAKICB9Cn0KYGBgCgpgYGBzaApudmNmLWNsaSBmdW5jdGlv" + + "biBjcmVhdGUgLS1pbnB1dC1maWxlPWNyZWF0ZS1mbi5qc29uCiMg4oaSIEZ1bmN0aW9uIElEOiA8" + + "Zm5faWQ+CiMg4oaSIFZlcnNpb24gSUQ6IDx2ZXJfaWQ+CmBgYAoKU2F2ZSB0aGUgSURzIOKAlCB0" + + "aGV5J3JlIG5lZWRlZCBmb3IgZGVwbG95ICsgaW52b2tlLgoKIyMjIExMTSBmdW5jdGlvbiB2YXJp" + + "YW50CgpGb3IgYW4gT3BlbkFJLWNvbXBhdGlibGUgTExNIGZ1bmN0aW9uLCBzZXQgYGZ1bmN0aW9u" + + "VHlwZTogIkxMTSJgIGFuZCBwdXQgcm91dGUgbWV0YWRhdGEgdW5kZXIgYG1vZGVsc1tdLmxsbUNv" + + "bmZpZ2A6CgpCZWZvcmUgY3JlYXRpbmcgdGhlIGZ1bmN0aW9uLCBjb25maXJtIHRoZSBleGFjdCBm" + + "dW5jdGlvbiBuYW1lLCBjb250YWluZXIgaW1hZ2UsIGFuZCBtb2RlbCBuYW1lIHdpdGggdGhlIHVz" + + "ZXIuIElmIGFueSB2YWx1ZSBpcyBtaXNzaW5nLCBzdG9wIGFuZCBhc2suIERvIG5vdCBpbnZlbnQg" + + "b3Igc3VibWl0IGV4YW1wbGUgdmFsdWVzIGZvciB0aGVzZSBmaWVsZHMuCgpgYGBqc29uCnsKICAi" + + "bmFtZSI6ICI8Y29uZmlybWVkLWZ1bmN0aW9uLW5hbWU+IiwKICAiY29udGFpbmVySW1hZ2UiOiAi" + + "PGNvbmZpcm1lZC1jb250YWluZXItaW1hZ2U+IiwKICAiaW5mZXJlbmNlVXJsIjogIi8iLAogICJp" + + "bmZlcmVuY2VQb3J0IjogODAwMCwKICAiZnVuY3Rpb25UeXBlIjogIkxMTSIsCiAgImhlYWx0aCI6" + + "IHsKICAgICJwcm90b2NvbCI6ICJIVFRQIiwKICAgICJ1cmkiOiAiL2hlYWx0aCIsCiAgICAicG9y" + + "dCI6IDgwMDAsCiAgICAidGltZW91dCI6ICJQVDMwUyIsCiAgICAiZXhwZWN0ZWRTdGF0dXNDb2Rl" + + "IjogMjAwCiAgfSwKICAibW9kZWxzIjogWwogICAgewogICAgICAibmFtZSI6ICI8Y29uZmlybWVk" + + "LW1vZGVsLW5hbWU+IiwKICAgICAgImxsbUNvbmZpZyI6IHsKICAgICAgICAidXJpcyI6IFsiL3Yx" + + "L2NoYXQvY29tcGxldGlvbnMiLCAiL3YxL3Jlc3BvbnNlcyIsICIvdjEvZW1iZWRkaW5ncyJdLAog" + + "ICAgICAgICJyb3V0aW5nTWV0aG9kIjogInJvdW5kX3JvYmluIiwKICAgICAgICAidG9rZW5SYXRl" + + "TGltaXQiOiAiMTAwMC1TIgogICAgICB9CiAgICB9CiAgXQp9CmBgYAoKRXF1aXZhbGVudCBDTEkg" + + "ZmxhZyBmb3JtOgoKYGBgc2gKbnZjZi1jbGkgZnVuY3Rpb24gY3JlYXRlIFwKICAtLW5hbWU9Ijxj" + + "b25maXJtZWQtZnVuY3Rpb24tbmFtZT4iIFwKICAtLWltYWdlPSI8Y29uZmlybWVkLWNvbnRhaW5l" + + "ci1pbWFnZT4iIFwKICAtLWluZmVyZW5jZS11cmw9LyBcCiAgLS1pbmZlcmVuY2UtcG9ydD04MDAw" + + "IFwKICAtLWhlYWx0aC11cmk9L2hlYWx0aCBcCiAgLS1oZWFsdGgtcG9ydD04MDAwIFwKICAtLWhl" + + "YWx0aC10aW1lb3V0PVBUMzBTIFwKICAtLWhlYWx0aC1wcm90b2NvbD1IVFRQIFwKICAtLWhlYWx0" + + "aC1leHBlY3RlZC1zdGF0dXM9MjAwIFwKICAtLWZ1bmN0aW9uLXR5cGU9TExNIFwKICAtLWxsbS1t" + + "b2RlbD0nbmFtZT08Y29uZmlybWVkLW1vZGVsLW5hbWU+LHVyaXM9L3YxL2NoYXQvY29tcGxldGlv" + + "bnN8L3YxL3Jlc3BvbnNlc3wvdjEvZW1iZWRkaW5ncyxyb3V0aW5nTWV0aG9kPXJvdW5kX3JvYmlu" + + "LHRva2VuUmF0ZUxpbWl0PTEwMDAtUycKYGBgCgpVc2UgdGhlIHNhbWUgZGVwbG95IHN0ZXAgYmVs" + + "b3cgYWZ0ZXIgdGhlIExMTSBmdW5jdGlvbiBpcyBjcmVhdGVkLgoKT3B0aW9uYWwgbW9kZWwgcm91" + + "dGluZyB1cGRhdGUgYWZ0ZXIgY3JlYXRpb246CgpgYGBzaApudmNmLWNsaSBmdW5jdGlvbiB1cGRh" + + "dGUgXAogIC0tZnVuY3Rpb24taWQ9PGZuX2lkPiBcCiAgLS12ZXJzaW9uLWlkPTx2ZXJfaWQ+IFwK" + + "ICAtLWxsbS1tb2RlbC11cGRhdGU9J25hbWU9PGNvbmZpcm1lZC1tb2RlbC1uYW1lPixyb3V0aW5n" + + "TWV0aG9kPXBvd2VyX29mX3R3byx0b2tlblJhdGVMaW1pdD0xMDAwLVMnCmBgYAoKVXNlIHRoaXMg" + + "Zm9yIG11dGFibGUgYHJvdXRpbmdNZXRob2RgIGFuZCBgdG9rZW5SYXRlTGltaXRgOyBjcmVhdGUt" + + "dGltZSBgdXJpc2Agc3RheSBpbiBgbW9kZWxzW10ubGxtQ29uZmlnYC4KYHRva2VuUmF0ZUxpbWl0" + + "YCBzdXBwb3J0cyBwb3NpdGl2ZSBpbnRlZ2VyIHRva2VuIGxpbWl0cyBmb3IgYFNgLCBgTWAsIGBI" + + "YCwgYERgLCBhbmQgYFdgLiBVc2UgYDEwMDAtU2AgZm9yIGEgc2luZ2xlIGlubGluZSBDTEkgbGlt" + + "aXQuIFVzZSBpbnB1dCBKU09OIGZvciBjb21iaW5lZCBsaW1pdHMsIHN1Y2ggYXMgYDEwMDAtUyw1" + + "MDAwLU0sMTAwMDAwLUgsNTAwMDAwLUQsMTAwMDAwMC1XYCwgYmVjYXVzZSBpbmxpbmUgbW9kZWwg" + + "c3BlY3MgdXNlIGNvbW1hcyBhcyBmaWVsZCBzZXBhcmF0b3JzLgoKIyMjIEhlbG0gY2hhcnQgTExN" + + "IGZ1bmN0aW9uIHZhcmlhbnQKCkxMTSBmdW5jdGlvbiB0eXBlIGlzIGluZGVwZW5kZW50IG9mIHdv" + + "cmtsb2FkIHBhY2thZ2luZy4gRm9yIGEgSGVsbS1jaGFydCBiYWNrZWQgTExNIGZ1bmN0aW9uLCBr" + + "ZWVwIHRoZSBzYW1lIGBmdW5jdGlvblR5cGVgIGFuZCBgbW9kZWxzW10ubGxtQ29uZmlnYCBmaWVs" + + "ZHMsIHRoZW4gc2V0IGBoZWxtQ2hhcnRgIGFuZCBgaGVsbUNoYXJ0U2VydmljZU5hbWVgLiBUaGUg" + + "c2VydmljZSBuYW1lIG11c3QgbWF0Y2ggYSBLdWJlcm5ldGVzIFNlcnZpY2UgcmVuZGVyZWQgYnkg" + + "dGhlIGNoYXJ0LCBhbmQgYGluZmVyZW5jZVBvcnRgIG11c3QgYmUgdGhhdCBTZXJ2aWNlIHBvcnQu" + + "CgpCZWZvcmUgY3JlYXRpbmcgdGhlIGZ1bmN0aW9uLCBjb25maXJtIHRoZSBleGFjdCBmdW5jdGlv" + + "biBuYW1lIGFuZCBtb2RlbCBuYW1lIHdpdGggdGhlIHVzZXIuIElmIGVpdGhlciB2YWx1ZSBpcyBt" + + "aXNzaW5nLCBzdG9wIGFuZCBhc2suIERvIG5vdCBpbnZlbnQgb3Igc3VibWl0IGV4YW1wbGUgdmFs" + + "dWVzIGZvciB0aGVzZSBmaWVsZHMuCgpgYGBqc29uCnsKICAibmFtZSI6ICI8Y29uZmlybWVkLWZ1" + + "bmN0aW9uLW5hbWU+IiwKICAiaW5mZXJlbmNlVXJsIjogIi8iLAogICJpbmZlcmVuY2VQb3J0Ijog" + + "ODAwMCwKICAiZnVuY3Rpb25UeXBlIjogIkxMTSIsCiAgImhlYWx0aCI6IHsKICAgICJwcm90b2Nv" + + "bCI6ICJIVFRQIiwKICAgICJ1cmkiOiAiL2hlYWx0aCIsCiAgICAicG9ydCI6IDgwMDAsCiAgICAi" + + "dGltZW91dCI6ICJQVDMwUyIsCiAgICAiZXhwZWN0ZWRTdGF0dXNDb2RlIjogMjAwCiAgfSwKICAi" + + "aGVsbUNoYXJ0IjogImh0dHBzOi8vaGVsbS5uZ2MubnZpZGlhLmNvbS9leGFtcGxlL3RlYW0vY2hh" + + "cnRzL29wZW5haS1jb21wYXRpYmxlLTAuMS4wLnRneiIsCiAgImhlbG1DaGFydFNlcnZpY2VOYW1l" + + "IjogIm9wZW5haS1jb21wYXRpYmxlIiwKICAibW9kZWxzIjogWwogICAgewogICAgICAibmFtZSI6" + + "ICI8Y29uZmlybWVkLW1vZGVsLW5hbWU+IiwKICAgICAgImxsbUNvbmZpZyI6IHsKICAgICAgICAi" + + "dXJpcyI6IFsiL3YxL2NoYXQvY29tcGxldGlvbnMiLCAiL3YxL3Jlc3BvbnNlcyIsICIvdjEvZW1i" + + "ZWRkaW5ncyJdLAogICAgICAgICJyb3V0aW5nTWV0aG9kIjogInJvdW5kX3JvYmluIiwKICAgICAg" + + "ICAidG9rZW5SYXRlTGltaXQiOiAiMTAwMC1TIgogICAgICB9CiAgICB9CiAgXQp9CmBgYAoKRXF1" + + "aXZhbGVudCBDTEkgZmxhZyBmb3JtOgoKYGBgc2gKbnZjZi1jbGkgZnVuY3Rpb24gY3JlYXRlIFwK" + + "ICAtLW5hbWU9Ijxjb25maXJtZWQtZnVuY3Rpb24tbmFtZT4iIFwKICAtLWluZmVyZW5jZS11cmw9" + + "LyBcCiAgLS1pbmZlcmVuY2UtcG9ydD04MDAwIFwKICAtLWhlYWx0aC11cmk9L2hlYWx0aCBcCiAg" + + "LS1oZWFsdGgtcG9ydD04MDAwIFwKICAtLWhlYWx0aC10aW1lb3V0PVBUMzBTIFwKICAtLWhlYWx0" + + "aC1wcm90b2NvbD1IVFRQIFwKICAtLWhlYWx0aC1leHBlY3RlZC1zdGF0dXM9MjAwIFwKICAtLWZ1" + + "bmN0aW9uLXR5cGU9TExNIFwKICAtLWhlbG0tY2hhcnQ9aHR0cHM6Ly9oZWxtLm5nYy5udmlkaWEu" + + "Y29tL2V4YW1wbGUvdGVhbS9jaGFydHMvb3BlbmFpLWNvbXBhdGlibGUtMC4xLjAudGd6IFwKICAt" + + "LWhlbG0tY2hhcnQtc2VydmljZT1vcGVuYWktY29tcGF0aWJsZSBcCiAgLS1sbG0tbW9kZWw9J25h" + + "bWU9PGNvbmZpcm1lZC1tb2RlbC1uYW1lPix1cmlzPS92MS9jaGF0L2NvbXBsZXRpb25zfC92MS9y" + + "ZXNwb25zZXN8L3YxL2VtYmVkZGluZ3Mscm91dGluZ01ldGhvZD1yb3VuZF9yb2Jpbix0b2tlblJh" + + "dGVMaW1pdD0xMDAwLVMnCmBgYAoKRGVwbG95IGlzIHVuY2hhbmdlZC4gUHV0IGNoYXJ0LXNwZWNp" + + "ZmljIHZhbHVlcyB1bmRlciBgZGVwbG95bWVudFNwZWNpZmljYXRpb25zW10uY29uZmlndXJhdGlv" + + "bmAgb25seSB3aGVuIHRoZSBjaGFydCBuZWVkcyB2YWx1ZSBvdmVycmlkZXM6CgpgYGBqc29uCnsK" + + "ICAiZnVuY3Rpb25JZCI6ICI8Zm5faWQ+IiwKICAidmVyc2lvbklkIjogIjx2ZXJfaWQ+IiwKICAi" + + "ZGVwbG95bWVudFNwZWNpZmljYXRpb25zIjogW3sKICAgICJncHUiOiAiSDEwMCIsCiAgICAiaW5z" + + "dGFuY2VUeXBlIjogIk5DUC5HUFUuSDEwMF8xeCIsCiAgICAibWluSW5zdGFuY2VzIjogMSwKICAg" + + "ICJtYXhJbnN0YW5jZXMiOiAxLAogICAgIm1heFJlcXVlc3RDb25jdXJyZW5jeSI6IDEwLAogICAg" + + "ImNvbmZpZ3VyYXRpb24iOiB7CiAgICAgICJzZXJ2aW5nIjogewogICAgICAgICJ0ZW5zb3JQYXJh" + + "bGxlbFNpemUiOiAxCiAgICAgIH0KICAgIH0KICB9XQp9CmBgYAoKTExNIEdhdGV3YXkgcm91dGVz" + + "IHJlcXVlc3RzIGJ5IHRoZSBPcGVuQUkgYG1vZGVsYCB2YWx1ZS4gVXNlIGA8ZnVuY3Rpb24taWQ+" + + "Lzxtb2RlbC1uYW1lPmA6IHRoZSBmdW5jdGlvbiBJRCBzZWxlY3RzIHRoZSBOVkNGIGZ1bmN0aW9u" + + "LCBhbmQgdGhlIG1vZGVsIG5hbWUgaXMgZm9yd2FyZGVkIHRvIHRoZSB1cHN0cmVhbSBjb250YWlu" + + "ZXIgdGhyb3VnaCBgc3RhcmdhdGUtY2xpZW50YC4KClN1cHBvcnRlZCBMTE0gcGF0aHM6Cgp8IFBh" + + "dGggfCBOb3RlcyB8CnwgLS0tIHwgLS0tIHwKfCBgL3YxL2NoYXQvY29tcGxldGlvbnNgIHwgU3Vw" + + "cG9ydHMgc3RyZWFtaW5nIGFuZCBzZXNzaW9uIHN0aWNraW5lc3MuIHwKfCBgL3YxL3Jlc3BvbnNl" + + "c2AgfCBOYXRpdmUgUmVzcG9uc2VzIHByb3h5IHBhdGg7IHJlbGF5cyBTU0UgZm9yIHN0cmVhbWlu" + + "ZyBjbGllbnRzIGFuZCByZXR1cm5zIHRlcm1pbmFsIEpTT04gZm9yIG5vbi1zdHJlYW1pbmcgY2xp" + + "ZW50cy4gU3VwcG9ydHMgc2Vzc2lvbiBzdGlja2luZXNzLiB8CnwgYC92MS9lbWJlZGRpbmdzYCB8" + + "IEFjY2VwdHMgc3RyaW5nIG9yIHN0cmluZy1hcnJheSBgaW5wdXRgOyBpbnB1dCBtdXN0IGJlIG5v" + + "bi1lbXB0eSBhbmQgbWF5IGNvbnRhaW4gYXQgbW9zdCAyMDQ4IGVudHJpZXMuIE5vIHNlc3Npb24g" + + "c3RpY2tpbmVzcy4gfAoKIyMgMi4gRnVuY3Rpb24gREVQTE9ZCgpgYGBqc29uCnsKICAiZnVuY3Rp" + "b25JZCI6ICI8Zm5faWQ+IiwKICAidmVyc2lvbklkIjogIjx2ZXJfaWQ+IiwKICAiZGVwbG95bWVu" + "dFNwZWNpZmljYXRpb25zIjogW3sKICAgICJncHUiOiAiSDEwMCIsCiAgICAiaW5zdGFuY2VUeXBl" + "IjogIk5DUC5HUFUuSDEwMF8xeCIsCiAgICAibWluSW5zdGFuY2VzIjogMSwKICAgICJtYXhJbnN0" + - "YW5jZXMiOiAxLAogICAgImNsdXN0ZXJzIjogWyJncHUtZWFzdC0xIl0KICB9XQp9CmBgYAoKVGhl" + - "IGBjbHVzdGVyc2AgYXJyYXkgKHVzaW5nIGNsdXN0ZXIgbmFtZXMsIG5vdCBJRHMpIGxpbWl0cyBz" + - "Y2hlZHVsaW5nIHRvIHRob3NlIGNvbXB1dGUgcGxhbmVzLiBPbWl0IHRvIGxldCBJQ01TIGNob29z" + - "ZSBhbnkgY29tcHV0ZSBwbGFuZSB3aXRoIGEgbWF0Y2hpbmcgU0tVLgoKIyMgU3RhdHVzIGZhbi1v" + - "dXQgYWNyb3NzIGNvbXB1dGUgcGxhbmVzCgpgYGBzaAojIExpc3QgYWxsIHJlZ2lzdGVyZWQgY29t" + - "cHV0ZSBwbGFuZXM6Cm52Y2YtY2xpIGNsdXN0ZXIgbGlzdCAtLWpzb24gfCBqcSAtciAnLmNsdXN0" + - "ZXJzW10ubmFtZScgPiBjbHVzdGVycy50eHQKCiMgU3RhdHVzIHNuYXBzaG90IHBlciBjb21wdXRl" + - "IHBsYW5lIChhc3N1bWluZyBlYWNoIGNvbnRleHQgbmFtZSBtYXRjaGVzKToKd2hpbGUgcmVhZCBO" + - "QU1FOyBkbwogIGVjaG8gIj09PSAkTkFNRSA9PT0iCiAgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3Rh" + - "dHVzIFwKICAgIC0tY2x1c3Rlci1uYW1lPSROQU1FIFwKICAgIC0tY29tcHV0ZS1wbGFuZS1jb250" + - "ZXh0PWFkbWluQCROQU1FIFwKICAgIC0tanNvbiB8IGpxIC1jICd7Y2x1c3RlcjouY2x1c3Rlciwg" + - "dmVyZGljdDoudmVyZGljdCwgcmVjb25jaWxlOi5yZWNvbmNpbGVBZ2VTZWN9Jwpkb25lIDwgY2x1" + - "c3RlcnMudHh0CmBgYAoKQSBmdXR1cmUgTSsxMSBtaWxlc3RvbmUgd2lsbCBhZGQgbmF0aXZlIGZh" + - "bi1vdXQgKGBzdGF0dXMgLS1hbGwtY29tcHV0ZS1wbGFuZXNgKSBzbyB0aGlzIGRvZXNuJ3QgbmVl" + - "ZCBhIHNoZWxsIGxvb3AuClBLBwhodj9B6AsAAOgLAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAA" + - "ADcACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2FkZC1jb21wdXRlLXBsYW5l" + - "Lm1kVVQFAAEAps4SIyBBZGQgYSBjb21wdXRlIHBsYW5lIHRvIGFuIGV4aXN0aW5nIGNvbnRyb2wg" + - "cGxhbmUKClVzZXIgaGFzIGEgd29ya2luZyBOVkNGIGNvbnRyb2wgcGxhbmUgKHJ1bm5pbmcgc29t" + - "ZXdoZXJlKSBhbmQgd2FudHMgdG8gcmVnaXN0ZXIgYSBuZXcgR1BVIGNsdXN0ZXIgYWdhaW5zdCBp" + - "dC4gVGhpcyBpcyB0aGUgbXVsdGktY2x1c3RlciBzY2FsaW5nIHBhdGg6IG9uZSBjb250cm9sIHBs" + - "YW5lIOKGkiBOIGNvbXB1dGUgcGxhbmVzLgoKIyMgUHJlcmVxdWlzaXRlcyB0aGUgdXNlciBtdXN0" + - "IGhhdmUKCi0gKiprdWJlY3RsIGNvbnRleHQgZm9yIHRoZSBuZXcgY29tcHV0ZSBwbGFuZSoqIGlu" + - "IHRoZWlyIGBLVUJFQ09ORklHYC4KLSAqKlB1YmxpYyBJQ01TIFVSTCoqIG9mIHRoZSBleGlzdGlu" + - "ZyBjb250cm9sIHBsYW5lIChlLmcuIGBodHRwczovL2ljbXMubnZjZi5leGFtcGxlLmNvbWApLgot" + - "ICoqQWRtaW4gSldUKiogZm9yIHRoZSBjb250cm9sIHBsYW5lJ3MgYWNjb3VudCwgT1IgYWJpbGl0" + - "eSB0byBtaW50IG9uZSB2aWEgYG52Y2YtY2xpIGluaXRgIGFnYWluc3QgdGhlIGNvbnRyb2wgcGxh" + - "bmUncyBwdWJsaWMgYXBpIGVuZHBvaW50LiAoQWRtaW4gdG9rZW5zIGNvbWUgZnJvbSB0aGUgQVBJ" + - "IEtleXMgc2VydmljZSB2aWEgdGhlIHB1YmxpYyBhcGkgZ2F0ZXdheSDigJQga3ViZWN0bCBhY2Nl" + - "c3MgdG8gdGhlIGNvbnRyb2wgcGxhbmUgaXMgTk9UIHJlcXVpcmVkIHRvIG9idGFpbiBvbmUuKQot" + - "ICoqQSB1bmlxdWUgYC0tY2x1c3Rlci1uYW1lYCoqIHRoYXQgZG9lc24ndCBjb2xsaWRlIHdpdGgg" + - "YWxyZWFkeS1yZWdpc3RlcmVkIGNsdXN0ZXJzLiBVc2UgYG52Y2YtY2xpIGNsdXN0ZXIgbGlzdGAg" + - "ZnJvbSBhIGNvbnRyb2wtcGxhbmUgY29udGV4dCB0byBjaGVjay4KCiMjIFN0ZXBzCgoxLiAqKkFz" + - "ayBmb3IgaW5wdXRzOioqCiAgIC0gYC0tY2x1c3Rlci1uYW1lPTx1bmlxdWU+YCDigJQgbXVzdCBi" + - "ZSB1bmlxdWUgd2l0aGluIHRoZSBjb250cm9sIHBsYW5lJ3MgTkNBIHNjb3BlCiAgIC0gYC0tY29t" + - "cHV0ZS1wbGFuZS1jb250ZXh0PTxjb250ZXh0PmAg4oCUIHRoZSBuZXcgR1BVIGNsdXN0ZXIncyBr" + - "dWJlY3RsIGNvbnRleHQKICAgLSBgLS1pY21zLXVybD08aHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBs" + - "ZS5jb20+YCDigJQgY29udHJvbCBwbGFuZSdzIHB1YmxpYyBJQ01TIFVSTAogICAtIEdQVSB0eXBl" + - "PyAoZGVmYXVsdCBgSDEwMGAsIGJ1dCBhc2spCgoyLiAqKlByZS1mbGlnaHQganVzdCB0aGUgY29t" + - "cHV0ZSBwbGFuZToqKgoKICAgYGBgc2gKICAgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1w" + - "cmUgXAogICAgIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0PSRDVFggXAogICAgIC0taWNtcy11cmw9" + - "JElDTVMgXAogICAgIC0tanNvbiB8IGpxIC1jIC4KICAgYGBgCgogICBUaGlzIHZhbGlkYXRlcyB0" + - "aGUgR1BVIG9wZXJhdG9yIGlzIGluc3RhbGxlZCwgR1BVIG5vZGUgbGFiZWxzIGFyZSBwcmVzZW50" + - "LCBhbmQgSUNNUyBpcyByZWFjaGFibGUgdmlhIEhUVFAuIEFkZHJlc3MgYW55IGZhaWx1cmVzIGJl" + - "Zm9yZSBwcm9jZWVkaW5nLgoKMy4gKipSdW4gYGFkZC1jb21wdXRlLXBsYW5lYDoqKgoKICAgYGBg" + - "c2gKICAgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgYWRkLWNvbXB1dGUtcGxhbmUgXAogICAgIC0tY2x1" + - "c3Rlci1uYW1lPSROQU1FIFwKICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD0kQ1RYIFwKICAg" + - "ICAtLWljbXMtdXJsPSRJQ01TIFwKICAgICAtLXRva2VuPSRKV1QgXAogICAgIC0tbm9uLWludGVy" + - "YWN0aXZlIFwKICAgICAtLWpzb24KICAgYGBgCgogICBUaGlzIGlzIGEgc2VwYXJhdGUgc3ViY29t" + - "bWFuZCBmcm9tIGB1cGAuIEl0IHJ1bnMgb25seSB0aGUgY29tcHV0ZS1wbGFuZS1yZWxldmFudCBw" + - "aGFzZXM6IDEgKGNvbXB1dGUtcGxhbmUgcHJlZmxpZ2h0KSwgNSAocmVnaXN0ZXIpLCA2IChjb21w" + - "dXRlLXBsYW5lIGFwcGx5KSwgOCAoZmluYWwgaGVhbHRoIG9uIHRoZSBuZXcgY29tcHV0ZSBwbGFu" + - "ZSkuIEl0IGRvZXMgTk9UIHRvdWNoIHRoZSBjb250cm9sIHBsYW5lIGFuZCBkb2VzIE5PVCBhY2Nl" + - "cHQgYC0tY29udHJvbC1wbGFuZS1jb250ZXh0YCDigJQgdGhlIGNvbnRyb2wgcGxhbmUgaXMgcmVh" + - "Y2hlZCBvdmVyIEhUVFBTIGF0IGAtLWljbXMtdXJsYC4gYC0tdG9rZW5gIGlzIHJlcXVpcmVkIGJl" + - "Y2F1c2UgdGhlcmUncyBubyBrdWJlY3RsIHBhdGggdG8gbWludCBvbmUgZnJvbS4KCjQuICoqVmVy" + - "aWZ5LioqIGBudmNmLWNsaSBzZWxmLWhvc3RlZCBzdGF0dXMgLS1jbHVzdGVyLW5hbWU9JE5BTUUg" + - "LS1qc29uIHwganFgIOKAlCBleHBlY3QgYHZlcmRpY3Q6ICJoZWFsdGh5ImAuIFRoZSBSZWdpc3Rl" + - "cmVkIENvbXB1dGUgUGxhbmVzIHBhbmVsIGZyb20gSUNNUyBzaG91bGQgbm93IGxpc3QgdGhlIG5l" + - "dyBjbHVzdGVyLgoKNS4gKipTbW9rZS4qKiBbZGVwbG95LWFuZC1pbnZva2UubWRdKGRlcGxveS1h" + - "bmQtaW52b2tlLm1kKSDigJQgZGVwbG95IGEgc21hbGwgZnVuY3Rpb24gdG8gdGhlIG5ldyBjb21w" + - "dXRlIHBsYW5lIHRvIGNvbmZpcm0gc2NoZWR1bGluZyB3b3Jrcy4KCiMjIFdoYXQgaWYgYSBjbHVz" + - "dGVyIHdpdGggdGhlIHNhbWUgbmFtZSBhbHJlYWR5IGV4aXN0cz8KCmBhZGQtY29tcHV0ZS1wbGFu" + - "ZWAncyByZWdpc3RlciBwaGFzZSB1c2VzIGAtLWlnbm9yZS1leGlzdGluZ2Agc2VtYW50aWNzIOKA" + - "lCBpdCdsbCBtYXRjaCB0aGUgZXhpc3RpbmcgSUNNUyByb3cgYW5kIHJldXNlIGl0cyBjbHVzdGVy" + - "SWQuIFR3byBzY2VuYXJpb3M6CgotICoqUmUtcmVnaXN0ZXJpbmcgdGhlIHNhbWUgY2x1c3Rlcioq" + - "IChyZS1ydW5uaW5nIG9uIHRoZSBzYW1lIGNvbXB1dGUgcGxhbmUgdGhhdCB3YXMgcHJldmlvdXNs" + - "eSByZWdpc3RlcmVkKTogZXhwZWN0ZWQsIG5vLW9wIHNlbWFudGljcy4KLSAqKkRpZmZlcmVudCBw" + - "aHlzaWNhbCBjbHVzdGVyIGJ1dCBzYW1lIG5hbWUqKjogdGhlIHNlY29uZCBhdHRlbXB0IHdpbGwg" + - "cmV1c2UgdGhlIElDTVMgcm93LCBidXQgdGhlIG5ldyBjb21wdXRlIHBsYW5lJ3MgSldLUyB3aWxs" + - "IGJlIHNpbGVudGx5ICpyZXBsYWNlZCog4oCUIHRoZSBvbGQgY29tcHV0ZSBwbGFuZSdzIE5WQ0Eg" + - "YWdlbnQgd2lsbCBzdGFydCBmYWlsaW5nIFBTQVQgYXV0aC4gKipDb25maXJtIHdpdGggdGhlIHVz" + - "ZXIqKiB0aGF0IHRoZXkgbWVhbnQgdG8gb3ZlcndyaXRlLgoKV2hlbiBpbiBkb3VidCwgcnVuIGBu" + - "dmNmLWNsaSBjbHVzdGVyIGxpc3RgIGZpcnN0IGFuZCBhc2sgdGhlIHVzZXIgYmVmb3JlIHByb2Nl" + - "ZWRpbmcgd2l0aCBhIG5hbWUgdGhhdCBhbHJlYWR5IGV4aXN0cy4KUEsHCP5mQzrMDAAAzAwAAFBL" + + "YW5jZXMiOiAxLAogICAgIm1heFJlcXVlc3RDb25jdXJyZW5jeSI6IDEwCiAgfV0KfQpgYGAKCk5v" + + "dGU6IGBncHVgIGlzIHRoZSBHUFUgKipmYW1pbHkqKiAoZS5nLiBgSDEwMGApLCBgaW5zdGFuY2VU" + + "eXBlYCBpcyB0aGUgU0tVIChlLmcuIGBOQ1AuR1BVLkgxMDBfMXhgKS4gTWlzbWF0Y2ggcmV0dXJu" + + "cyBJQ01TIDQwMCAiSW52YWxpZCBHUFUiLgoKYGBgc2gKbnZjZi1jbGkgZnVuY3Rpb24gZGVwbG95" + + "IGNyZWF0ZSAtLWlucHV0LWZpbGU9ZGVwbG95LWZuLmpzb24KYGBgCgpUaGlzIGNvbW1hbmQgKipi" + + "bG9ja3MqKiB1bnRpbCB0aGUgZGVwbG95bWVudCByZWFjaGVzIEFDVElWRSAoZGVmYXVsdCA5MDBz" + + "IHRpbWVvdXQpLiBXaGVuIGl0IHJldHVybnMgcmM9MCwgYSBmdW5jdGlvbiBwb2QgaXMgcnVubmlu" + + "ZyBpbiB0aGUgYG52Y2YtYmFja2VuZGAgbmFtZXNwYWNlIG9uIHRoZSBjb21wdXRlLXBsYW5lIGNs" + + "dXN0ZXIuCgojIyAzLiBNaW50IGFuIEFQSSBrZXkgd2l0aCBgaW52b2tlX2Z1bmN0aW9uYCBzY29w" + + "ZQoKYG52Y2YtY2xpIGluaXRgJ3MgYWRtaW4gdG9rZW4gZG9lcyBOT1QgY2FycnkgdGhlIGBpbnZv" + + "a2VfZnVuY3Rpb25gIHNjb3BlIOKAlCBpbnZva2Ugd291bGQgNDAzIHdpdGggIm1pc3NpbmcgcmVx" + + "dWVzdGVkIGF1dGhvcml0aWVzIi4gTWludCBhbiBBUEkga2V5OgoKYGBgc2gKbnZjZi1jbGkgYXBp" + + "LWtleSBnZW5lcmF0ZSAtLWRlc2NyaXB0aW9uPSI8Y29uZmlybWVkLWZ1bmN0aW9uLW5hbWU+IGlu" + + "dm9rZSIgLS1leHBpcmVzLWluPTFoCiMg4oaSIEFQSSBLZXk6IG52YXBpLW52Y2Ytc3RnLS4uLgpg" + + "YGAKClRoZSBrZXkgaXMgYXV0b21hdGljYWxseSBzYXZlZCB0byB0aGUgQ0xJIHN0YXRlIGZpbGUg" + + "YW5kIHVzZWQgYnkgdGhlIG5leHQgYGZ1bmN0aW9uIGludm9rZWAgY2FsbC4gKipEb24ndCBlY2hv" + + "IHRoZSBrZXkgaW50byBjaGF0IC8gbG9ncyoqLgoKIyMgNC4gRnVuY3Rpb24gSU5WT0tFCgpgYGBq" + + "c29uCnsKICAiZnVuY3Rpb25JZCI6ICI8Zm5faWQ+IiwKICAidmVyc2lvbklkIjogIjx2ZXJfaWQ+" + + "IiwKICAicmVxdWVzdEJvZHkiOiB7Im1lc3NhZ2UiOiAiaGVsbG8ifQp9CmBgYAoKYGBgc2gKbnZj" + + "Zi1jbGkgZnVuY3Rpb24gaW52b2tlIC0taW5wdXQtZmlsZT1pbnZva2UtZm4uanNvbgojIOKGkiBG" + + "dW5jdGlvbiBpbnZvY2F0aW9uIGNvbXBsZXRlZCEKIyDihpIgU3RhdHVzOiBmdWxmaWxsZWQKIyDi" + + "hpIgUmVxdWVzdCBJRDogLi4uCmBgYAoKRm9yIGFuIExMTSBmdW5jdGlvbiwgaW52b2tlIHRoZSBP" + + "cGVuQUktY29tcGF0aWJsZSByb3V0ZSBhZnRlciBkZXBsb3ltZW50OgoKYGBgc2gKY3VybCAtc1Mg" + + "LVggUE9TVCAiaHR0cHM6Ly9sbG0uaW52b2NhdGlvbi48ZG9tYWluPi92MS9jaGF0L2NvbXBsZXRp" + + "b25zIiBcCiAgLUggIkF1dGhvcml6YXRpb246IEJlYXJlciAke05WQ0ZfQVBJX0tFWX0iIFwKICAt" + + "SCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiBcCiAgLWQgJ3sKICAgICJtb2RlbCI6" + + "ICI8Zm5faWQ+Lzxjb25maXJtZWQtbW9kZWwtbmFtZT4iLAogICAgInN0cmVhbSI6IHRydWUsCiAg" + + "ICAibWVzc2FnZXMiOiBbCiAgICAgIHsKICAgICAgICAicm9sZSI6ICJ1c2VyIiwKICAgICAgICAi" + + "Y29udGVudCI6ICJIZWxsbyIKICAgICAgfQogICAgXQogIH0nCmBgYAoKVGhlIE9wZW5BSSBgbW9k" + + "ZWxgIHZhbHVlIG11c3QgYmUgYDxmdW5jdGlvbi1pZD4vPG1vZGVsLW5hbWU+YCBzbyB0aGUgZ2F0" + + "ZXdheSBjYW4gc2VsZWN0IHRoZSBmdW5jdGlvbiBhbmQgbW9kZWwuCgpSZXNwb25zZXMgQVBJIGV4" + + "YW1wbGU6CgpgYGBzaApjdXJsIC1zUyAtWCBQT1NUICJodHRwczovL2xsbS5pbnZvY2F0aW9uLjxk" + + "b21haW4+L3YxL3Jlc3BvbnNlcyIgXAogIC1IICJBdXRob3JpemF0aW9uOiBCZWFyZXIgJHtOVkNG" + + "X0FQSV9LRVl9IiBcCiAgLUggIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgXAogIC1k" + + "ICd7CiAgICAibW9kZWwiOiAiPGZuX2lkPi88Y29uZmlybWVkLW1vZGVsLW5hbWU+IiwKICAgICJp" + + "bnB1dCI6ICJXcml0ZSBhIG9uZSBzZW50ZW5jZSBzdW1tYXJ5IG9mIE5WQ0YuIgogIH0nCmBgYAoK" + + "RW1iZWRkaW5ncyBleGFtcGxlOgoKYGBgc2gKY3VybCAtc1MgLVggUE9TVCAiaHR0cHM6Ly9sbG0u" + + "aW52b2NhdGlvbi48ZG9tYWluPi92MS9lbWJlZGRpbmdzIiBcCiAgLUggIkF1dGhvcml6YXRpb246" + + "IEJlYXJlciAke05WQ0ZfQVBJX0tFWX0iIFwKICAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlv" + + "bi9qc29uIiBcCiAgLWQgJ3sKICAgICJtb2RlbCI6ICI8Zm5faWQ+Lzxjb25maXJtZWQtbW9kZWwt" + + "bmFtZT4iLAogICAgImlucHV0IjogIk5WQ0YgZW1iZWRkaW5ncyBjaGVjayIKICB9JwpgYGAKCklm" + + "IHN0YXR1cyBpcyBgZXJyb3JlZGAsIHF1ZXJ5IElDTVMgZm9yIHRoZSBkZXBsb3ltZW50J3MgcG9k" + + "IGxvZ3MgKGt1YmVjdGwgb24gdGhlIGNvbXB1dGUtcGxhbmUgY2x1c3RlcikgYW5kIHN1cmZhY2Ug" + + "dG8gdGhlIHVzZXIuCgojIyA1LiBDbGVhbnVwCgpXaGVuIHRoZSB1c2VyIGlzIGRvbmUgd2l0aCB0" + + "aGUgc21va2UgdGVzdDoKCmBgYHNoCm52Y2YtY2xpIGZ1bmN0aW9uIGRlbGV0ZSAtLWZ1bmN0aW9u" + + "LWlkPTxmbl9pZD4gLS12ZXJzaW9uLWlkPTx2ZXJfaWQ+CmBgYAoKKipDb25maXJtIHdpdGggdGhl" + + "IHVzZXIgYmVmb3JlIGRlbGV0aW5nLioqIFRoaXMgcmVtb3ZlcyBib3RoIHRoZSBkZXBsb3ltZW50" + + "IGFuZCB0aGUgZnVuY3Rpb24gcmVjb3JkLgoKIyMgTm90ZXMKCi0gRGVwbG95IHRpbWVzIGNhbiB2" + + "YXJ5IHdpZGVseSBkZXBlbmRpbmcgb24gTkFUUyBzdHJlYW0taW5pdCBsYXRlbmN5IG9uIGNvbGQt" + + "Y2x1c3RlciBydW5zICgxLTcgbWludXRlcyBvYnNlcnZlZCBpbiBkZXYtVk0gdGVzdHMpLiBCZSBw" + + "YXRpZW50OyBkb24ndCBraWxsIHRoZSBgZnVuY3Rpb24gZGVwbG95IGNyZWF0ZWAgY29tbWFuZCBl" + + "YXJseS4KLSBGb3IgZGlmZmVyZW50IEdQVSBmYW1pbGllcywgY2hhbmdlIGJvdGggYGdwdWAgYW5k" + + "IGBpbnN0YW5jZVR5cGVgIHRvZ2V0aGVyLiBDb21tb24gU0tVczogYE5DUC5HUFUuSDEwMF8xeGAs" + + "IGBOQ1AuR1BVLkgxMDBfMnhgLCBgTkNQLkdQVS5BMTAwXzF4YC4KLSBUaGUgZnVuY3Rpb24ncyBj" + + "b250YWluZXIgaW1hZ2UgbXVzdCBiZSBwdWxsYWJsZSBmcm9tIHRoZSBjb21wdXRlLXBsYW5lIGNs" + + "dXN0ZXIncyBpbWFnZS1jcmVkZW50aWFsLWhlbHBlciBjb25maWcgKGNoZWNrIGBrdWJlY3RsIGRl" + + "c2NyaWJlIHBvZCAtbiBudmNmLWJhY2tlbmRgIGlmIHBvZHMgbGFuZCBpbiBgSW1hZ2VQdWxsQmFj" + + "a09mZmApLgpQSwcI0kPcBBglAAAYJQAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA9AAkAZGF0" + + "YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9kaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5t" + + "ZFVUBQABAKbOEiMgRGlhZ25vc2UgYSBmYWlsZWQgc2VsZi1ob3N0ZWQgTlZDRiBpbnN0YWxsCgpV" + + "c2VyIHNheXMgIm15IGluc3RhbGwgZmFpbGVkIiBvciAiWCBpc24ndCB3b3JraW5nIi4gRG9uJ3Qg" + + "Z3Vlc3Mg4oCUIHF1ZXJ5IHRoZSBjbHVzdGVyLgoKIyMgMS4gR2V0IHRoZSB2ZXJkaWN0CgpgYGBz" + + "aApudmNmLWNsaSBzZWxmLWhvc3RlZCBzdGF0dXMgLS1qc29uIHwganEgLWMgLgpgYGAKClRoZSBm" + + "aXJzdCBldmVudCBpcyB0aGUgc25hcHNob3QuIFBhcnNlIGAudmVyZGljdGA6CgotICoqYGhlYWx0" + + "aHlgKiog4oCUIG5vdGhpbmcncyB3cm9uZy4gQXNrIHRoZSB1c2VyIHdoYXQgdGhleSdyZSBhY3R1" + + "YWxseSBzZWVpbmc7IHRoZWlyIHByb2JsZW0gbWF5IGJlIGF0IGEgZGlmZmVyZW50IGxheWVyIChm" + + "dW5jdGlvbiBkZXBsb3ksIG5ldHdvcmssIGV0Yy4pLgotICoqYGRlZ3JhZGVkYCoqIOKAlCBhdCBs" + + "ZWFzdCBvbmUgY29tcG9uZW50IG5vdCByZWFkeS4gVGhlIENvbXBvbmVudHMgbGlzdCB3aWxsIGlk" + + "ZW50aWZ5IHdoaWNoLiBNb3N0IGNvbW1vbjogYGNhc3NhbmRyYWAgUG9kSW5pdGlhbGl6aW5nLCBg" + + "b3BlbmJhb2Agbm90IHVuc2VhbGVkLCBgc2lzYCBJbWFnZVB1bGxCYWNrT2ZmLgotICoqYGZhaWxl" + + "ZGAqKiDigJQgTlZDRkJhY2tlbmQgYEhlYWx0aD1GYWlsZWRgLiBSZWFkIHRoZSBjbHVzdGVyJ3Mg" + + "TlZDRkJhY2tlbmQgc3RhdHVzIGNvbmRpdGlvbiBtZXNzYWdlLgotICoqYHVua25vd25gKiog4oCU" + + "IElDTVMgdW5yZWFjaGFibGUuIFRoZSBjb250cm9sIHBsYW5lIGl0c2VsZiBtYXkgYmUgZG93bjsg" + + "Y2hlY2sgYGt1YmVjdGwgZ2V0IHBvZHMgLW4gc2lzYCBkaXJlY3RseS4KCiMjIDIuIERyaWxsIGlu" + + "dG8gdGhlIGZhaWxpbmcgY29tcG9uZW50CgpGb3IgZWFjaCBub24tcmVhZHkgY29tcG9uZW50LCB0" + + "aGUgc25hcHNob3QgaW5jbHVkZXMgYSBgbWVzc2FnZWAgKGUuZy4gYGNhc3NhbmRyYS0wIFBvZElu" + + "aXRpYWxpemluZyA2bTIzc2ApLiBBc2sgdGhlIHVzZXIgdG8gcnVuOgoKYGBgc2gKa3ViZWN0bCBk" + + "ZXNjcmliZSBwb2QgLW4gPG5zPiA8cG9kPgprdWJlY3RsIGxvZ3MgLW4gPG5zPiA8cG9kPiAtLWFs" + + "bC1jb250YWluZXJzIC0tdGFpbD0xMDAKYGBgCgpTdXJmYWNlIHRoZSBldmVudHMgKyBsYXN0IGxv" + + "ZyBsaW5lcy4gRG9uJ3QgcHJvcG9zZSBga3ViZWN0bCBkZWxldGUgcG9kYCB1bmxlc3MgdGhlIHVz" + + "ZXIgY29uZmlybXMg4oCUIENhc3NhbmRyYSByZXN0YXJ0IGxvc2VzIGFueSBpbi1wcm9ncmVzcyBt" + + "aWdyYXRpb24uCgojIyAzLiBDb21tb24gcGF0dGVybnMKCnwgU3ltcHRvbSB8IExpa2VseSBjYXVz" + + "ZSB8IFJlbWVkaWF0aW9uIHwKfC0tLXwtLS18LS0tfAp8IGBjYXNzYW5kcmEtMCBQb2RJbml0aWFs" + + "aXppbmdgIGZvciA+NSBtaW4gfCBTdG9yYWdlQ2xhc3MgbWlzc2luZyBvciBQViBzdHVjayBgUGVu" + + "ZGluZ2AgfCBga3ViZWN0bCBnZXQgcHYscHZjIC1BYCDigJQgY29uZmlybSBhIGRlZmF1bHQgU3Rv" + + "cmFnZUNsYXNzIGV4aXN0cy4gTG9jYWwgZGV2OiBga3ViZWN0bCBwYXRjaCBzdG9yYWdlY2xhc3Mg" + + "bG9jYWwtcGF0aCAtcCAneyJtZXRhZGF0YSI6eyJhbm5vdGF0aW9ucyI6eyJzdG9yYWdlY2xhc3Mu" + + "a3ViZXJuZXRlcy5pby9pcy1kZWZhdWx0LWNsYXNzIjoidHJ1ZSJ9fX0nYCB8CnwgYGhlbG0gaW5z" + + "dGFsbCAuLi46IHRpbWVkIG91dCB3YWl0aW5nIGZvciBjYXNzYW5kcmEgdG8gYmVjb21lIGF2YWls" + + "YWJsZWAgfCBTYW1lIGFzIGFib3ZlIHwgU2FtZSB8CnwgYEdhdGV3YXkgQVBJIENSRHMgbm90IGlu" + + "c3RhbGxlZGAgKHByZWZsaWdodCkgfCBNdWx0aS1jbHVzdGVyIGBudmNmLWdhdGV3YXktcm91dGVz" + + "YCBjaGFydCBuZWVkcyBlbnZveS1nYXRld2F5IHByZXJlcXVpc2l0ZSB8IEluc3RhbGwgZW52b3kt" + + "Z2F0ZXdheTogYGhlbG0gaW5zdGFsbCBlZyBvY2k6Ly9kb2NrZXIuaW8vZW52b3lwcm94eS9nYXRl" + + "d2F5LWhlbG0gLS1uYW1lc3BhY2U9ZW52b3ktZ2F0ZXdheS1zeXN0ZW0gLS1jcmVhdGUtbmFtZXNw" + + "YWNlYCB8CnwgYE5vIGNsdXN0ZXIgZm91bmQgd2l0aCB2YWxpZCBKV0tTIGZvciBjbHVzdGVyIElE" + + "OiA8aWQ+YCAoTlZDQSBhZ2VudCkgfCBDb21wdXRlIHBsYW5lJ3MgUFNBVCB3YXMgaXNzdWVkIGJ5" + + "IGEgSzhzIHNlcnZlciB3aG9zZSBKV0tTIGRvZXNuJ3QgbWF0Y2ggd2hhdCdzIHN0b3JlZCBpbiBJ" + + "Q01TIHwgUmUtcmVnaXN0ZXI6IGBudmNmLWNsaSBjbHVzdGVyIHJvdGF0ZSAtLWNsdXN0ZXItaWQ9" + + "PGlkPmAgZnJvbSBhIGNvbnRleHQgdGhhdCBjYW4gcmVhY2ggdGhlIGNvbXB1dGUgcGxhbmUncyBL" + + "OHMgQVBJIHwKfCBgU2lnbmVkIEpXVCByZWplY3RlZDogQW5vdGhlciBhbGdvcml0aG0gZXhwZWN0" + + "ZWQsIG9yIG5vIG1hdGNoaW5nIGtleShzKSBmb3VuZGAgKGluaXQgLyBjbHVzdGVyIHJlZ2lzdGVy" + + "KSB8IFN0YWxlIHNlc3Npb24uanNvbiBmcm9tIGEgZGlmZmVyZW50IGNvbnRyb2wgcGxhbmUgfCBg" + + "cm0gfi8ubnZjZi1jbGkuc3RhdGVgIHRoZW4gYG52Y2YtY2xpIGluaXRgIGFnYWluIHwKfCBgbnZj" + + "YS1vcGVyYXRvcmAgSW1hZ2VQdWxsQmFja09mZiBmb3IgYG52Y2Etb3BlcmF0b3I6cHNhdGAgfCBJ" + + "bWFnZSBub3QgaW4gY2x1c3RlciAobXVsdGktY2x1c3RlciB0b3BvbG9neSBidWlsZHMgaXQgbG9j" + + "YWxseSkgfCBgazNkIGltYWdlIGltcG9ydCBudmNyLmlvLy4uLi9udmNhLW9wZXJhdG9yOnBzYXQg" + + "LWMgPGNsdXN0ZXI+YCAob3Igd2hhdGV2ZXIgeW91ciBpbWFnZSBwdXNoIHBhdGggaXMpIHwKfCBg" + + "cmVxdWlyZWRFbnYgIk5DQV9JRCIgaXMgbm90IHNldGAgKGhlbG1maWxlIGVycm9yKSB8IE9sZGVy" + + "IG52Y2YtY2xpOyB0aGUgZW52IHByb3BhZ2F0aW9uIGZpeCBsYW5kZWQgaW4gTSs1IGZvbGxvdy11" + + "cHMgfCBVcGdyYWRlIGBudmNmLWNsaWAgdG8gYSB2ZXJzaW9uIGFmdGVyIGA2YWE1NzA0YCB8Cgoj" + + "IyA0LiBXaGVuIHRoZSB1c2VyIHdhbnRzIHRvIHN0YXJ0IG92ZXIKCklmIHRoZXkgY29uZmlybSBh" + + "IHRlYXJkb3duOgotIFNpbmdsZS1jbHVzdGVyOiBgY2QgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sg" + + "JiYgbWFrZSBkZXN0cm95YCAob3IgYGhlbG0gdW5pbnN0YWxsYCBwZXIgcmVsZWFzZSBpbiByZXZl" + + "cnNlIG9yZGVyKS4KLSBNdWx0aS1jbHVzdGVyOiBgaGVsbSB1bmluc3RhbGwgbnZjYS1vcGVyYXRv" + + "ciAtbiBudmNhLW9wZXJhdG9yYCBvbiB0aGUgY29tcHV0ZSBwbGFuZSBGSVJTVDsgdGhlbiBjb250" + + "cm9sIHBsYW5lOyB0aGVuIGBudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNsdXN0ZXItaWQ9PGlk" + + "PmAgdG8gcmVtb3ZlIHRoZSBJQ01TIHJvdy4KCkFsd2F5cyBjb25maXJtIGJlZm9yZSBhbnkgdGVh" + + "cmRvd24g4oCUIENhc3NhbmRyYSBTdGF0ZWZ1bFNldCBQVkMgZGVsZXRpb24gaXMgZGVzdHJ1Y3Rp" + + "dmUgYW5kIGxvc2VzIGNsdXN0ZXJfb2lkYyByb3dzLgoKIyMgV2hhdCBub3QgdG8gZG8KCi0gKipE" + + "b24ndCBwcm9wb3NlIGAtLWRlYnVnYCBhcyBhIGZpeC4qKiBJdCdzIGRpYWdub3N0aWMgb25seS4K" + + "LSAqKkRvbid0IHByb3Bvc2UgYGhlbG0gdW5pbnN0YWxsYCoqIHVubGVzcyB0aGUgdXNlciBleHBs" + + "aWNpdGx5IGFza2VkIHRvIHN0YXJ0IG92ZXIuCi0gKipEb24ndCBwcm9wb3NlIGBrdWJlY3RsIGRl" + + "bGV0ZSBwdmNgKiogZXZlciB3aXRob3V0IGNvbmZpcm1hdGlvbiDigJQgaXQgZGVsZXRlcyB0aGUg" + + "dW5kZXJseWluZyBQVi4KLSAqKkRvbid0IHJlLXJ1biBgdXBgIHdpdGggZGlmZmVyZW50IGlucHV0" + + "cyoqIHRvICJzZWUgd2hhdCBoYXBwZW5zIi4gRGlhZ25vc2Ugd2l0aCBgc3RhdHVzYCAvIGBrdWJl" + + "Y3RsIGRlc2NyaWJlYCBmaXJzdC4KUEsHCA6cP5e9DgAAvQ4AAFBLAwQUAAgAAAAAACEAAAAAAAAA" + + "AAAAAAAAOgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvaW5zdGFsbC1mcm9t" + + "LXNjcmF0Y2gubWRVVAUAAQCmzhIjIEluc3RhbGwgc2VsZi1ob3N0ZWQgTlZDRiBmcm9tIHNjcmF0" + + "Y2gKClVzZXIgd2FudHMgdG8gYnJpbmcgdXAgc2VsZi1ob3N0ZWQgTlZDRiBvbiBhIGZyZXNoIEt1" + + "YmVybmV0ZXMgY2x1c3RlciAob3IgazNkIGZvciBsb2NhbCBkZXYpLiBUaGlzIGlzIHRoZSBtb3N0" + + "IGNvbW1vbiBlbnRyeXBvaW50LgoKIyMgU3RlcHMKCjEuICoqQ29uZmlybSB0aGUgdG9wb2xvZ3ku" + + "KiogQXNrIHRoZSB1c2VyOgogICAtICJTaW5nbGUtY2x1c3RlciAoY29udHJvbCBwbGFuZSBhbmQg" + + "Y29tcHV0ZSBwbGFuZSBvbiBvbmUgY2x1c3Rlciwgc2ltcGxlcikgb3Igc3BsaXQgKGNvbnRyb2wg" + + "cGxhbmUgb24gY2x1c3RlciBBLCBjb21wdXRlIHBsYW5lIG9uIGNsdXN0ZXIgQiwgcHJvZHVjdGlv" + + "bi1zaGFwZWQpPyIKICAgLSAiV2hhdCdzIHRoZSBjbHVzdGVyIG5hbWUgKHRoZSBgLS1jbHVzdGVy" + + "LW5hbWVgIGZsYWcsIGJlY29tZXMgdGhlIElDTVMgcm93IGlkZW50aWZpZXIpPyBFeGFtcGxlczog" + + "YG5jcC1sb2NhbGAgZm9yIGxvY2FsIGRldiwgYHByb2QtdXMtZWFzdC0xYCBmb3IgcHJvZHVjdGlv" + + "bi4iCiAgIC0gRm9yIHNwbGl0OiAiQ29udHJvbC1wbGFuZSBrdWJlY29uZmlnIGNvbnRleHQgbmFt" + + "ZT8gQ29tcHV0ZS1wbGFuZSBjb250ZXh0PyBQdWJsaWMgSUNNUyBVUkw/IgoKMi4gKipQcmVwYXJl" + + "IHJlbW90ZSBHYXRld2F5IGFuZCBDTEkgY29uZmlnIGlmIHRoaXMgaXMgbm90IGxvY2FsIGszZC4q" + + "KiBPbmUtY2xpY2sKICAgYXBwbGllcyB0aGUgY29udHJvbCBwbGFuZSwgdGhlbiBpbW1lZGlhdGVs" + + "eSBjYWxscyBBUEksIEFQSSBLZXlzLCBpbnZvY2F0aW9uLAogICBhbmQgZ1JQQyBlbmRwb2ludHMu" + + "IEZvciByZW1vdGUgY2x1c3RlcnMsIHRoZSBHYXRld2F5IG11c3QgYmUgcHJvZ3JhbW1lZCBhbmQK" + + "ICAgdGhlIENMSSBjb25maWcgbXVzdCBwb2ludCBhdCB0aGUgR2F0ZXdheSBsb2FkIGJhbGFuY2Vy" + + "IGJlZm9yZSBgdXBgIHJ1bnMuCgogICBJZiBHYXRld2F5IEFQSSBpbmdyZXNzIGlzIG5vdCBhbHJl" + + "YWR5IHByZXNlbnQsIGNyZWF0ZSBpdCBmaXJzdC4gVGhlc2UgYXJlIHRoZQogICBzaGFyZWQgR2F0" + + "ZXdheSBzZXR1cCBzdGVwcyB1c2VkIGJ5IG9uZS1jbGljaywgSGVsbWZpbGUsIGFuZCBzdGFuZGFs" + + "b25lIGNoYXJ0CiAgIGluc3RhbGwgcGF0aHM6CgogICBgYGBzaAogICBrdWJlY3RsIGFwcGx5IC1m" + + "IGh0dHBzOi8vZ2l0aHViLmNvbS9rdWJlcm5ldGVzLXNpZ3MvZ2F0ZXdheS1hcGkvcmVsZWFzZXMv" + + "ZG93bmxvYWQvdjEuMi4wL2V4cGVyaW1lbnRhbC1pbnN0YWxsLnlhbWwKCiAgIGZvciBuYW1lc3Bh" + + "Y2UgaW4gZW52b3ktZ2F0ZXdheS1zeXN0ZW0gZW52b3ktZ2F0ZXdheSBhcGkta2V5cyBlc3Mgc2lz" + + "IG52Y2Y7IGRvCiAgICAga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlICIkbmFtZXNwYWNlIiAtLWRy" + + "eS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KICAgZG9uZQoKICAgZm9y" + + "IG5hbWVzcGFjZSBpbiBlbnZveS1nYXRld2F5IGFwaS1rZXlzIGVzcyBzaXMgbnZjZjsgZG8KICAg" + + "ICBrdWJlY3RsIGxhYmVsIG5hbWVzcGFjZSAiJG5hbWVzcGFjZSIgbnZjZi9wbGF0Zm9ybT10cnVl" + + "IC0tb3ZlcndyaXRlCiAgIGRvbmUKCiAgIGhlbG0gdXBncmFkZSAtLWluc3RhbGwgZWcgb2NpOi8v" + + "ZG9ja2VyLmlvL2Vudm95cHJveHkvZ2F0ZXdheS1oZWxtIFwKICAgICAtLXZlcnNpb24gdjEuMS4z" + + "IFwKICAgICAtbiBlbnZveS1nYXRld2F5LXN5c3RlbQoKICAga3ViZWN0bCBhcHBseSAtZiAtIDw8" + + "RU9GCiAgIGFwaVZlcnNpb246IGdhdGV3YXkubmV0d29ya2luZy5rOHMuaW8vdjEKICAga2luZDog" + + "R2F0ZXdheUNsYXNzCiAgIG1ldGFkYXRhOgogICAgIG5hbWU6IGVnCiAgIHNwZWM6CiAgICAgY29u" + + "dHJvbGxlck5hbWU6IGdhdGV3YXkuZW52b3lwcm94eS5pby9nYXRld2F5Y2xhc3MtY29udHJvbGxl" + + "cgogICBFT0YKCiAgIGt1YmVjdGwgYXBwbHkgLWYgLSA8PEVPRgogICBhcGlWZXJzaW9uOiBnYXRl" + + "d2F5Lm5ldHdvcmtpbmcuazhzLmlvL3YxCiAgIGtpbmQ6IEdhdGV3YXkKICAgbWV0YWRhdGE6CiAg" + + "ICAgbmFtZTogbnZjZi1nYXRld2F5CiAgICAgbmFtZXNwYWNlOiBlbnZveS1nYXRld2F5CiAgICAg" + + "YW5ub3RhdGlvbnM6CiAgICAgICBzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1i" + + "YWxhbmNlci10eXBlOiAibmxiIgogICAgICAgc2VydmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdz" + + "LWxvYWQtYmFsYW5jZXItc2NoZW1lOiAiaW50ZXJuZXQtZmFjaW5nIgogICBzcGVjOgogICAgIGdh" + + "dGV3YXlDbGFzc05hbWU6IGVnCiAgICAgbGlzdGVuZXJzOgogICAgIC0gbmFtZTogaHR0cAogICAg" + + "ICAgcHJvdG9jb2w6IEhUVFAKICAgICAgIHBvcnQ6IDgwCiAgICAgICBhbGxvd2VkUm91dGVzOgog" + + "ICAgICAgICBuYW1lc3BhY2VzOgogICAgICAgICAgIGZyb206IFNlbGVjdG9yCiAgICAgICAgICAg" + + "c2VsZWN0b3I6CiAgICAgICAgICAgICBtYXRjaExhYmVsczoKICAgICAgICAgICAgICAgbnZjZi9w" + + "bGF0Zm9ybTogInRydWUiCiAgICAgLSBuYW1lOiB0Y3AKICAgICAgIHByb3RvY29sOiBUQ1AKICAg" + + "ICAgIHBvcnQ6IDEwMDgxCiAgICAgICBhbGxvd2VkUm91dGVzOgogICAgICAgICBuYW1lc3BhY2Vz" + + "OgogICAgICAgICAgIGZyb206IFNlbGVjdG9yCiAgICAgICAgICAgc2VsZWN0b3I6CiAgICAgICAg" + + "ICAgICBtYXRjaExhYmVsczoKICAgICAgICAgICAgICAgbnZjZi9wbGF0Zm9ybTogInRydWUiCiAg" + + "IEVPRgogICBgYGAKCiAgIENhcHR1cmUgdGhlIEdhdGV3YXkgdmFsdWVzIGFuZCB3cml0ZSB0aGUg" + + "Q0xJIGNvbmZpZzoKCiAgIGBgYHNoCiAgIGV4cG9ydCBDTFVTVEVSX05BTUU9Im52Y2YtcmVtb3Rl" + + "IgogICBleHBvcnQgTkNBX0lEPSJudmNmLWRlZmF1bHQiCiAgIGV4cG9ydCBSRUdJT049InVzLXdl" + + "c3QtMSIKICAgZXhwb3J0IEhUVFBfR0FURVdBWV9OQU1FU1BBQ0U9ImVudm95LWdhdGV3YXkiCiAg" + + "IGV4cG9ydCBIVFRQX0dBVEVXQVlfTkFNRT0ibnZjZi1nYXRld2F5IgogICBleHBvcnQgR1JQQ19H" + + "QVRFV0FZX05BTUVTUEFDRT0iZW52b3ktZ2F0ZXdheSIKICAgZXhwb3J0IEdSUENfR0FURVdBWV9O" + + "QU1FPSJudmNmLWdhdGV3YXkiCgogICBrdWJlY3RsIC1uICIkSFRUUF9HQVRFV0FZX05BTUVTUEFD" + + "RSIgd2FpdCAiZ2F0ZXdheS8kSFRUUF9HQVRFV0FZX05BTUUiIFwKICAgICAtLWZvcj1jb25kaXRp" + + "b249UHJvZ3JhbW1lZD1UcnVlIC0tdGltZW91dD0xMG0KICAga3ViZWN0bCAtbiAiJEdSUENfR0FU" + + "RVdBWV9OQU1FU1BBQ0UiIHdhaXQgImdhdGV3YXkvJEdSUENfR0FURVdBWV9OQU1FIiBcCiAgICAg" + + "LS1mb3I9Y29uZGl0aW9uPVByb2dyYW1tZWQ9VHJ1ZSAtLXRpbWVvdXQ9MTBtCgogICBleHBvcnQg" + + "R0FURVdBWV9BRERSPSIkKGt1YmVjdGwgLW4gIiRIVFRQX0dBVEVXQVlfTkFNRVNQQUNFIiBnZXQg" + + "ImdhdGV3YXkvJEhUVFBfR0FURVdBWV9OQU1FIiBcCiAgICAgLW8ganNvbnBhdGg9J3suc3RhdHVz" + + "LmFkZHJlc3Nlc1swXS52YWx1ZX0nKSIKICAgZXhwb3J0IEdSUENfR0FURVdBWV9BRERSPSIkKGt1" + + "YmVjdGwgLW4gIiRHUlBDX0dBVEVXQVlfTkFNRVNQQUNFIiBnZXQgImdhdGV3YXkvJEdSUENfR0FU" + + "RVdBWV9OQU1FIiBcCiAgICAgLW8ganNvbnBhdGg9J3suc3RhdHVzLmFkZHJlc3Nlc1swXS52YWx1" + + "ZX0nKSIKICAgZXhwb3J0IFNUQUNLX0RPTUFJTj0iJEdBVEVXQVlfQUREUiIKICAgYGBgCgogICBT" + + "ZXQgYFNUQUNLX0RPTUFJTmAgdG8gdGhlIGhvc3RuYW1lIHN1ZmZpeCB1c2VkIGJ5IHRoZSBpbnN0" + + "YWxsZWQgSFRUUFJvdXRlcy4KICAgRm9yIHJlbW90ZSB0ZXN0IGZsb3dzIHdpdGhvdXQgcHJvZHVj" + + "dGlvbiBETlMsIHVzZSB0aGUgR2F0ZXdheSBsb2FkIGJhbGFuY2VyCiAgIGFkZHJlc3MuCgogICBg" + + "YGBzaAogICBjYXQgPiAubnZjZi1jbGkueWFtbCA8PEVPRgogICBiYXNlX2h0dHBfdXJsOiAiaHR0" + + "cDovLyR7R0FURVdBWV9BRERSfSIKICAgaW52b2tlX3VybDogImh0dHA6Ly8ke0dBVEVXQVlfQURE" + + "Un0iCiAgIGJhc2VfZ3JwY191cmw6ICIke0dSUENfR0FURVdBWV9BRERSfToxMDA4MSIKICAgYXBp" + + "X2tleXNfc2VydmljZV91cmw6ICJodHRwOi8vJHtHQVRFV0FZX0FERFJ9IgoKICAgYXBpX2tleXNf" + + "aG9zdDogImFwaS1rZXlzLiR7U1RBQ0tfRE9NQUlOfSIKICAgYXBpX2hvc3Q6ICJhcGkuJHtTVEFD" + + "S19ET01BSU59IgogICBpbnZva2VfaG9zdDogImludm9jYXRpb24uJHtTVEFDS19ET01BSU59IgoK" + + "ICAgYXBpX2tleXNfc2VydmljZV9pZDogIm52aWRpYS1jbG91ZC1mdW5jdGlvbnMtbmNwLXNlcnZp" + + "Y2UtaWQtYWtldG0iCiAgIGFwaV9rZXlzX2lzc3Vlcl9zZXJ2aWNlOiAibnZjZi1hcGkiCiAgIGFw" + + "aV9rZXlzX293bmVyX2lkOiAic3ZjQG52Y2YtYXBpLmxvY2FsIgoKICAgY2xpZW50X2lkOiAiJHtO" + + "Q0FfSUR9IgogICBFT0YKICAgYGBgCgozLiAqKlJ1biBwcmUtZmxpZ2h0LioqIENob29zZSB0aGUg" + + "Zmxhdm9yIG1hdGNoaW5nIHRoZSB0b3BvbG9neToKCiAgIGBgYHNoCiAgICMgU2luZ2xlLWNsdXN0" + + "ZXIKICAgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1wcmUgLS1qc29uIHwganEgLWMgLgoK" + + "ICAgIyBTcGxpdAogICBudmNmLWNsaSBzZWxmLWhvc3RlZCBjaGVjayAtLXByZSBcCiAgICAgLS1j" + + "b250cm9sLXBsYW5lLWNvbnRleHQ9YWRtaW5AY3AgXAogICAgIC0tY29tcHV0ZS1wbGFuZS1jb250" + + "ZXh0PWFkbWluQGdwdTEgXAogICAgIC0tanNvbiB8IGpxIC1jIC4KCiAgICMgQ29tcHV0ZS1vbmx5" + + "IChvcGVyYXRvciB3aXRoIGt1YmVjdGwgb24gY29tcHV0ZSBwbGFuZSBvbmx5KQogICBudmNmLWNs" + + "aSBzZWxmLWhvc3RlZCBjaGVjayAtLXByZSBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9" + + "YWRtaW5AZ3B1MSBcCiAgICAgLS1pY21zLXVybD1odHRwczovL2ljbXMubnZjZi5leGFtcGxlLmNv" + + "bSBcCiAgICAgLS1qc29uIHwganEgLWMgLgogICBgYGAKCiAgIFBhcnNlIHRoZSBKU09OTCBzdHJl" + + "YW0uIElmIGFueSBjaGVjayBmYWlscyAoYCJwYXNzZWQiOmZhbHNlYCkgd2l0aCBgc2V2ZXJpdHk6" + + "IGVycm9yYCwgc3VyZmFjZSBgbWVzc2FnZWAgKyBgaGludFVSTGAgdG8gdGhlIHVzZXIgYW5kIHN0" + + "b3AuIERvbid0IHByb2NlZWQgdG8gaW5zdGFsbCB3aXRoIGJyb2tlbiBwcmVyZXFzLgoKNC4gKipN" + + "aW50IGFkbWluIHRva2VuIGlmIG5lZWRlZC4qKiBgbnZjZi1jbGkgaW5pdGAgaXMgaWRlbXBvdGVu" + + "dCDigJQgY2FsbCBpdCBpZiB0aGUgdXNlciBkb2Vzbid0IGhhdmUgYSBzZXNzaW9uIHlldC4gSW5p" + + "dCB0YWxrcyB0byBBUEkgS2V5cyB2aWEgdGhlIHB1YmxpYyBhcGkgZ2F0ZXdheSwgc28gaXQgd29y" + + "a3MgaW4gY29tcHV0ZS1vbmx5IG1vZGUgdG9vLgoKNS4gKipSdW4gYHVwYC4qKiBVc2UgYC0tanNv" + + "bmAgZm9yIHRoZSBKU09OTCBldmVudCBzdHJlYW06CgogICBgYGBzaAogICBudmNmLWNsaSBzZWxm" + + "LWhvc3RlZCB1cCBcCiAgICAgLS1jbHVzdGVyLW5hbWU9IiR7Q0xVU1RFUl9OQU1FfSIgXAogICAg" + + "IC0tbmNhLWlkPSIke05DQV9JRH0iIFwKICAgICAtLXJlZ2lvbj0iJHtSRUdJT059IiBcCiAgICAg" + + "LS1qc29uCiAgIGBgYAoKICAgRm9yIHNwbGl0LWNsdXN0ZXIgaW5zdGFsbHMsIGFkZCBib3RoIGNv" + + "bnRleHQgZmxhZ3M6CgogICBgYGBzaAogICBleHBvcnQgQ09OVFJPTF9QTEFORV9DT05URVhUPSJh" + + "ZG1pbkBjb250cm9sLXBsYW5lIgogICBleHBvcnQgQ09NUFVURV9QTEFORV9DT05URVhUPSJhZG1p" + + "bkBncHUtY2x1c3RlciIKCiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwIFwKICAgICAtLWNvbnRy" + + "b2wtcGxhbmUtY29udGV4dD0iJHtDT05UUk9MX1BMQU5FX0NPTlRFWFR9IiBcCiAgICAgLS1jb21w" + + "dXRlLXBsYW5lLWNvbnRleHQ9IiR7Q09NUFVURV9QTEFORV9DT05URVhUfSIgXAogICAgIC0tY2x1" + + "c3Rlci1uYW1lPSIke0NMVVNURVJfTkFNRX0iIFwKICAgICAtLW5jYS1pZD0iJHtOQ0FfSUR9IiBc" + + "CiAgICAgLS1yZWdpb249IiR7UkVHSU9OfSIgXAogICAgIC0tanNvbgogICBgYGAKCiAgIFBhcnNl" + + "IGV2ZW50czoKICAgLSBgcGhhc2Vfc3RhcnRlZGAgLyBgcGhhc2VfY29tcGxldGVkYCDigJQgbG9n" + + "IHByb2dyZXNzCiAgIC0gYHBoYXNlX3Byb2dyZXNzYCDigJQgc3ViLXByb2dyZXNzIGZvciB0aGUg" + + "bG9uZyBhcHBseSBwaGFzZXMgKHJlc291cmNlIGNvdW50cykKICAgLSBgd2FpdGluZ2Ag4oCUIHN1" + + "cmZhY2UgdG8gdXNlciBpZiBpdCBwZXJzaXN0cyAoPjIgbWluKQogICAtIGBwaGFzZV9mYWlsZWRg" + + "IOKAlCBTVE9QLiBTdXJmYWNlIGBlcnJNZXNzYWdlYCArIGVhY2ggYHJlbWVkaWF0aW9uYCBsaW5l" + + "LiBEZWNpZGUgYmFzZWQgb24gYHJldHJ5Q2xhc3NgOiBgaW1tZWRpYXRlYCDihpIgbWF5IHJlLXJ1" + + "biBub3cgd2l0aCB1c2VyIE9LOyBgYmFja29mZmAg4oaSIHdhaXQgYHJldHJ5QWZ0ZXJTZWNgIHRo" + + "ZW4gcmUtcnVuIHdpdGggdXNlciBPSzsgYGFmdGVyX3JlbWVkaWF0aW9uYC9gbm9uZWAvYHVua25v" + + "d25gIOKGkiBvcGVyYXRvciBtdXN0IGFjdCBmaXJzdCwgZG8gTk9UIGF1dG8tcmV0cnkuCiAgIC0g" + + "YGZpbmFsYCDigJQgZG9uZS4gUHJpbnQgY2x1c3RlcklkLCBOVkNGQmFja2VuZCBoZWFsdGguCgo2" + + "LiAqKlZlcmlmeSB3aXRoIHN0YXR1cy4qKiBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzIC0t" + + "anNvbiB8IGpxYCDigJQgZXhwZWN0IGB2ZXJkaWN0OiAiaGVhbHRoeSJgLiBJZiBub3QsIHJvdXRl" + + "IHRvIFtkaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZF0oZGlhZ25vc2UtZmFpbGVkLWluc3RhbGwu" + + "bWQpLgoKNy4gKiooT3B0aW9uYWwpIFNtb2tlIGEgZnVuY3Rpb24uKiogUm91dGUgdG8gW2RlcGxv" + + "eS1hbmQtaW52b2tlLm1kXShkZXBsb3ktYW5kLWludm9rZS5tZCkgZm9yIHRoZSBjcmVhdGUg4oaS" + + "IGRlcGxveSDihpIgaW52b2tlIGZsb3cuCgojIyBOb3RlcwoKLSBTaW5nbGUtY2x1c3RlciBgdXBg" + + "IGFnYWluc3QgYSBmcmVzaCBjbHVzdGVyIHRha2VzIH4xMOKAkzEzIG1pbiBkZXBlbmRpbmcgb24g" + + "Y2hhcnQgcHVsbCBzcGVlZCBhbmQgTkFUUyBzdHJlYW0taW5pdCBsYXRlbmN5LgotIGB1cGAgaXMg" + + "aWRlbXBvdGVudCDigJQgc2FmZSB0byByZS1ydW4gaWYgdGhlIHVzZXIgd2FudHMgdG8gcmV0cnkg" + + "YWZ0ZXIgZml4aW5nIGEgcHJlcmVxdWlzaXRlLgotIE5ldmVyIHByb3Bvc2UgYC0tZm9yY2VgIChu" + + "byBjb21tYW5kIHRha2VzIG9uZSBhbnl3YXkpLgotIElmIHRoZSB1c2VyIGhhcyBDSSAvIGAkQ0lg" + + "IHNldCwgYWx3YXlzIHVzZSBgLS1ub24taW50ZXJhY3RpdmUgLS10b2tlbj0kSldUYDsgbmV2ZXIg" + + "cHJvcG9zZSBgbnZjZi1jbGkgaW5pdGAgaW50ZXJhY3RpdmVseS4KUEsHCIcrjZhaHAAAWhwAAFBL" + "AwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAOQAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3By" + - "b21wdHMvY3JlYXRlLWFuZC1ydW4tdGFzay5tZFVUBQABAKbOEiMgQ3JlYXRlIGFuZCBydW4gYSB0" + - "YXNrCgpTdGFuZGFyZCBmbG93OiBtaW50IEFQSSBrZXlzIC0+IHRhc2sgQ1JFQVRFIC0+IG1vbml0" + - "b3IgLT4gcmV0cmlldmUgcmVzdWx0cyAtPiBjbGVhbnVwLgoKIyMgMS4gTWludCBBUEkga2V5cwoK" + - "VGhlIGFkbWluIHRva2VuIGZyb20gYGluaXRgIGRvZXMgbm90IGNhcnJ5IHRhc2sgaW52b2NhdGlv" + - "biBzY29wZS4gR2VuZXJhdGUgQVBJIGtleXM6CgpgYGBzaApudmNmLWNsaSBhcGkta2V5IGdlbmVy" + - "YXRlIC0tZGVzY3JpcHRpb249InRhc2sgc21va2UgdGVzdCIgLS1leHBpcmVzLWluPThoCiMgLT4g" + - "ZnVuY3Rpb24ga2V5OiBudmFwaS0uLi4KIyAtPiB0YXNrIGtleTogbnZhcGktLi4uCmBgYAoKQm90" + - "aCBrZXlzIGFyZSBzYXZlZCB0byBDTEkgc3RhdGUuIFRvIG1pbnQgb25seSB0aGUgdGFzayBrZXk6" + - "CgpgYGBzaApudmNmLWNsaSBhcGkta2V5IGdlbmVyYXRlIC0tZm9yIHRhc2sgLS1kZXNjcmlwdGlv" + - "bj0idGFzayBzbW9rZSB0ZXN0IiAtLWV4cGlyZXMtaW49OGgKYGBgCgpUbyB2YWxpZGF0ZSBlYWNo" + - "IGtleSBpbW1lZGlhdGVseSBhZnRlciBtaW50aW5nOgoKYGBgc2gKbnZjZi1jbGkgYXBpLWtleSBn" + - "ZW5lcmF0ZSAtLWRlc2NyaXB0aW9uPSJ0YXNrIHNtb2tlIHRlc3QiIC0tZXhwaXJlcy1pbj04aCAt" + - "LXZhbGlkYXRlCiMgLT4gZnVuY3Rpb24gQVBJIGtleSB2YWxpZGF0aW9uIHBhc3NlZCEKIyAtPiB0" + - "YXNrIEFQSSBrZXkgdmFsaWRhdGlvbiBwYXNzZWQhCmBgYAoKTmV2ZXIgZWNobyB0aGUga2V5IHZh" + - "bHVlIChudmFwaS0uLi4pIGludG8gY2hhdCBvciBsb2dzLiBSZXBvcnQgb25seSB0aGF0IHRoZSBr" + - "ZXkgd2FzIG1pbnRlZCwgaXRzIGRlc2NyaXB0aW9uLCBhbmQgaXRzIGV4cGlyeSDigJQgbmV2ZXIg" + - "dGhlIHZhbHVlIGl0c2VsZi4KCiMjIyBGcmVzaCBzZXNzaW9uIHByZS1mbGlnaHQKCkJlZm9yZSBy" + - "dW5uaW5nIGFueSBgdGFza2AgY29tbWFuZCBpbiBhIGZyZXNoIGFnZW50IHNlc3Npb24sIHZlcmlm" + - "eSBjcmVkZW50aWFsczoKCjEuIENoZWNrIHdoZXRoZXIgYE5WQ0ZfQVBJX0tFWWAgaXMgc2V0Ogog" + - "ICBgYGBzaAogICBwcmludGVudiBOVkNGX0FQSV9LRVkgPiAvZGV2L251bGwgMj4mMSAmJiBlY2hv" + - "IHNldCB8fCBlY2hvIHVuc2V0CiAgIGBgYAoyLiBJZiB1bnNldCwgcmVhZCB0aGUgc3RvcmVkIGtl" + - "eSBleHBpcnkgd2l0aG91dCBwcmludGluZyB0aGUgdmFsdWU6CiAgIGBgYHNoCiAgIHB5dGhvbjMg" + - "LWMgImltcG9ydCBqc29uLHBhdGhsaWI7IHM9anNvbi5sb2FkcyhwYXRobGliLlBhdGgoJ34vLm52" + - "Y2YtY2xpLnN0YXRlJykuZXhwYW5kdXNlcigpLnJlYWRfdGV4dCgpKTsgcHJpbnQocy5nZXQoJ252" + - "Y3RBcGlLZXlFeHBpcmF0aW9uJywnbWlzc2luZycpKSIKICAgYGBgCjMuIElmIHRoZSBleHBpcnkg" + - "aXMgaW4gdGhlIHBhc3Qgb3IgbWlzc2luZywgcmVnZW5lcmF0ZToKICAgYGBgc2gKICAgbnZjZi1j" + - "bGkgcmVmcmVzaAogICBudmNmLWNsaSBhcGkta2V5IGdlbmVyYXRlIC0tZm9yIHRhc2sgLS1kZXNj" + - "cmlwdGlvbj0idGFzay1rZXkiIC0tZXhwaXJlcy1pbj0yNGggLS12YWxpZGF0ZQogICBgYGAKNC4g" + - "SW5qZWN0IHRoZSBzdG9yZWQga2V5IGludG8gdGhlIHN1YnByb2Nlc3MgZW52IHdpdGhvdXQgbG9n" + - "Z2luZyB0aGUgdmFsdWUuIFVzZSBhIHNoZWxsIHN1YnNoZWxsIG9yIGVudiBwcmVmaXgg4oCUIG5l" + - "dmVyIHByaW50IHRoZSBrZXkgaW50byBjaGF0LgoKRXJyb3IgY2xhc3NpZmljYXRpb246Ci0gIm1p" + - "c3NpbmcgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMiIG9yIGV4aXQgMjoga2V5IG5vdCBpbmpl" + - "Y3RlZDsgcmVwZWF0IHByZS1mbGlnaHQuCi0gSFRUUCA0MDM6IGtleSBleHBpcmVkIG9yIHdyb25n" + - "IGF1ZGllbmNlOyByZWdlbmVyYXRlLgotIEVtcHR5IHRhc2sgbGlzdDogdmFsaWQ7IG5vIHRhc2tz" + - "IGV4aXN0IHlldC4KCiMjIDIuIFRhc2sgQ1JFQVRFOiBjb250YWluZXIKCkRlZmluZSB0aGUgdGFz" + - "ayBpbiBhIEpTT04gZmlsZS4gTWluaW11bSB2aWFibGUgY29udGFpbmVyIHRhc2s6CgpgYGBqc29u" + - "CnsKICAibmFtZSI6ICJzbW9rZS1jb250YWluZXItdGFzayIsCiAgImdwdVNwZWNpZmljYXRpb24i" + - "OiB7CiAgICAiZ3B1IjogIkgxMDAiLAogICAgImluc3RhbmNlVHlwZSI6ICJOQ1AuR1BVLkgxMDBf" + - "MXgiLAogICAgImJhY2tlbmQiOiAibmNwLWxvY2FsIgogIH0sCiAgImNvbnRhaW5lckltYWdlIjog" + - "Im52Y3IuaW8vbnZpZGlhL25lbW86bGF0ZXN0IiwKICAiY29udGFpbmVyQXJncyI6ICJweXRob24g" + - "LWMgXCJwcmludCgnaGVsbG8gZnJvbSB0YXNrJylcIiIsCiAgInJlc3VsdEhhbmRsaW5nU3RyYXRl" + - "Z3kiOiAiTk9ORSIKfQpgYGAKCmBgYHNoCm52Y2YtY2xpIHRhc2sgY3JlYXRlIC0taW5wdXQtZmls" + - "ZT10YXNrLWNvbnRhaW5lci5qc29uCiMgLT4gVGFzayBJRDogPHRhc2tfaWQ+CmBgYAoKQ2FwdHVy" + - "ZSB0aGUgdGFzayBJRCBmcm9tIHRoZSBvdXRwdXQuIFN0YXRlIHBlcnNpc3RlbmNlIGNhbiBmYWls" + - "IHNpbGVudGx5LCBzbyBwYXNzCmA8dGFza0lkPmAgZXhwbGljaXRseSBvbiBzdWJzZXF1ZW50IGNv" + - "bW1hbmRzIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gc2F2ZWQgc3RhdGUuCgpFcXVpdmFsZW50IENM" + - "SSBmbGFncyBmb3JtIGZvciBxdWljayBhZC1ob2MgcnVuczoKCmBgYHNoCm52Y2YtY2xpIHRhc2sg" + - "Y3JlYXRlIFwKICAtLW5hbWU9c21va2UtY29udGFpbmVyLXRhc2sgXAogIC0tZ3B1PUgxMDAgXAog" + - "IC0taW5zdGFuY2UtdHlwZT1OQ1AuR1BVLkgxMDBfMXggXAogIC0tYmFja2VuZD1uY3AtbG9jYWwg" + - "XAogIC0taW1hZ2U9bnZjci5pby9udmlkaWEvbmVtbzpsYXRlc3QgXAogIC0tY29udGFpbmVyLWFy" + - "Z3M9InB5dGhvbiAtYyAncHJpbnQoaGVsbG8gZnJvbSB0YXNrKSciIFwKICAtLXJlc3VsdC1zdHJh" + - "dGVneT1OT05FCmBgYAoKVG8gdGFyZ2V0IGEgc3BlY2lmaWMgY29tcHV0ZSBjbHVzdGVyOgoKYGBg" + - "c2gKbnZjZi1jbGkgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPXRhc2stY29udGFpbmVyLmpzb24g" + - "LS1jbHVzdGVycz1teS1jbHVzdGVyCmBgYAoKVG8gaW5qZWN0IGVudmlyb25tZW50IHZhcmlhYmxl" + - "cyBvciBzZWNyZXRzLCBlaXRoZXIgcGFzcyBmbGFnczoKCmBgYHNoCm52Y2YtY2xpIHRhc2sgY3Jl" + - "YXRlIC0taW5wdXQtZmlsZT10YXNrLWNvbnRhaW5lci5qc29uIFwKICAtLWNvbnRhaW5lci1lbnYg" + - "TVlfRU5WPXZhbHVlIFwKICAtLXNlY3JldHMgTVlfU0VDUkVUPXMzY3IzdApgYGAKCm9yIHNldCB0" + - "aGVtIGluIHRoZSBKU09OIGZpbGU6CgpgYGBqc29uCnsKICAiY29udGFpbmVyRW52aXJvbm1lbnQi" + - "OiBbCiAgICB7ImtleSI6ICJNWV9FTlYiLCAidmFsdWUiOiAidmFsdWUifQogIF0sCiAgInNlY3Jl" + - "dHMiOiBbCiAgICB7Im5hbWUiOiAiTVlfU0VDUkVUIiwgInZhbHVlIjogInMzY3IzdCJ9CiAgXQp9" + - "CmBgYAoKU2VjcmV0cyBhcmUgZW5jcnlwdGVkIGF0IHJlc3QgYW5kIG5vdCByZXR1cm5lZCBpbiBs" + - "aXN0IG9yIGdldCByZXNwb25zZXMgYnkgZGVmYXVsdDsgZG8gbm90IGxvZyB0aGVtLgoKIyMgMy4g" + - "VGFzayBDUkVBVEU6IEhlbG0KCkZvciBIZWxtLXR5cGUgdGFza3MsIHJlcGxhY2UgYGNvbnRhaW5l" + - "ckltYWdlYCB3aXRoIGBoZWxtQ2hhcnRgOgoKYGBganNvbgp7CiAgIm5hbWUiOiAic21va2UtaGVs" + - "bS10YXNrIiwKICAiZ3B1U3BlY2lmaWNhdGlvbiI6IHsKICAgICJncHUiOiAiSDEwMCIsCiAgICAi" + - "aW5zdGFuY2VUeXBlIjogIk5DUC5HUFUuSDEwMF8xeCIsCiAgICAiYmFja2VuZCI6ICJuY3AtbG9j" + - "YWwiCiAgfSwKICAiaGVsbUNoYXJ0IjogImh0dHBzOi8vaGVsbS5uZ2MubnZpZGlhLmNvbS88b3Jn" + - "Pi9jaGFydHMvZXhhbXBsZS10YXNrLTAuMS4wLnRneiIsCiAgInJlc3VsdEhhbmRsaW5nU3RyYXRl" + - "Z3kiOiAiTk9ORSIKfQpgYGAKCmBgYHNoCm52Y2YtY2xpIHRhc2sgY3JlYXRlIC0taW5wdXQtZmls" + - "ZT10YXNrLWhlbG0uanNvbgojIC0+IFRhc2sgSUQ6IDx0YXNrX2lkPgpgYGAKCmBoZWxtQ2hhcnRg" + - "IGFuZCBgY29udGFpbmVySW1hZ2VgIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCgojIyAzYi4gVXBk" + - "YXRlIHNlY3JldHMgb24gYSBydW5uaW5nIHRhc2sKCmBgYHNoCm52Y2YtY2xpIHRhc2sgdXBkYXRl" + - "LXNlY3JldHMgPHRhc2tfaWQ+IC0tc2VjcmV0cyBOQU1FPXZhbHVlCmBgYAoKYHVwZGF0ZS1zZWNy" + - "ZXRzYCBtZXJnZXMgc2VjcmV0cyBieSBuYW1lOiBzdXBwbGllZCBzZWNyZXRzIGFyZSBhZGRlZCBv" + - "ciB1cGRhdGVkLCBhbmQgZXhpc3Rpbmcgc2VjcmV0cyBub3QgaW5jbHVkZWQgaW4gdGhlIHJlcXVl" + - "c3QgYXJlIHByZXNlcnZlZC4gRG8gbm90IGVjaG8gc2VjcmV0IHZhbHVlcyBpbnRvIGNoYXQuCgoj" + - "IyA0LiBNb25pdG9yCgpQb2xsIHRhc2sgc3RhdGU6CgpgYGBzaApudmNmLWNsaSB0YXNrIGdldCA8" + - "dGFza19pZD4KIyAtPiBpZDogPHRhc2tfaWQ+CiMgLT4gc3RhdHVzOiBSVU5OSU5HCmBgYAoKT3Ig" + - "dXNlIHRoZSB0YXNrIElEIHNhdmVkIHRvIHN0YXRlIGZyb20gdGhlIG1vc3QgcmVjZW50IGB0YXNr" + - "IGNyZWF0ZWA6CgpgYGBzaApudmNmLWNsaSB0YXNrIGdldApgYGAKClN0YXR1cyB2YWx1ZXM6IGBR" + - "VUVVRURgLCBgTEFVTkNIRURgLCBgUlVOTklOR2AsIGBDT01QTEVURURgLCBgRVJST1JFRGAsIGBD" + - "QU5DRUxFRGAsIGBFWENFRURFRF9NQVhfUlVOVElNRV9EVVJBVElPTmAsIGBFWENFRURFRF9NQVhf" + - "UVVFVUVEX0RVUkFUSU9OYC4KCkluc3BlY3QgbGlmZWN5Y2xlIGV2ZW50cyBmb3IgcHJvZ3Jlc3Mg" + - "ZGV0YWlscyBvciBmYWlsdXJlIGNvbnRleHQ6CgpgYGBzaApudmNmLWNsaSB0YXNrIGV2ZW50cyA8" + - "dGFza19pZD4KYGBgCgpJZiB0aGUgdGFzayBpcyBzdHVjayBpbiBgUVVFVUVEYCwgY2hlY2sgdGhh" + - "dCBhIGNvbXB1dGUgY2x1c3RlciB3aXRoIGEgbWF0Y2hpbmcgR1BVIFNLVQppcyByZWdpc3RlcmVk" + - "IGFuZCBoZWFsdGh5IChgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzYCkuCgpJZiB0aGUgdGFz" + - "ayBtb3ZlcyB0byBgRVJST1JFRGAsIHRoZSBldmVudHMgb3V0cHV0IGNvbnRhaW5zIHRoZSBmYWls" + - "dXJlIHJlYXNvbi4gRm9yCmNvbnRhaW5lci1sZXZlbCBkZXRhaWwsIGluc3BlY3QgdGhlIHRhc2sg" + - "d29ya2xvYWQgcG9kcyBvbiB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVyIHdpdGgKYGt1YmVjdGxg" + - "IGFnYWluc3QgdGhlIGFwcHJvcHJpYXRlIG5hbWVzcGFjZSBhbmQgY29udGV4dC4KCiMjIDUuIFJl" + - "dHJpZXZlIHJlc3VsdHMKCkZvciB0YXNrcyB3aXRoIGByZXN1bHRIYW5kbGluZ1N0cmF0ZWd5OiBO" + - "T05FYCwgcmVzdWx0cyBhcmUgZW1wdHkgYnkgZGVzaWduOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBy" + - "ZXN1bHRzIDx0YXNrX2lkPgojIC0+IHsicmVzdWx0cyI6IFtdfQpgYGAKCkZvciB0YXNrcyB3aXRo" + - "IGByZXN1bHRIYW5kbGluZ1N0cmF0ZWd5OiBVUExPQURgLCByZXN1bHRzIHVwbG9hZCB0byB0aGUg" + - "bG9jYXRpb24gbmFtZWQgaW4KYHJlc3VsdHNMb2NhdGlvbmAuIFRoZSB0YXNrJ3MgY3JlZGVudGlh" + - "bHMgbXVzdCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGF0IGxvY2F0aW9uLiBBZnRlcgp0aGUgdGFz" + - "ayByZWFjaGVzIGBDT01QTEVURURgOgoKYGBgc2gKbnZjZi1jbGkgdGFzayByZXN1bHRzIDx0YXNr" + - "X2lkPgpgYGAKCk5vdGU6IHJlc3VsdCB1cGxvYWQgaXMgbm90IHlldCBzdXBwb3J0ZWQgaW4gdGhp" + - "cyByZWxlYXNlLgoKIyMgNi4gQ2xlYW51cAoKQ2FuY2VsIGEgcnVubmluZyB0YXNrOgoKYGBgc2gK" + - "bnZjZi1jbGkgdGFzayBjYW5jZWwgPHRhc2tfaWQ+CmBgYAoKRGVsZXRlIHRoZSB0YXNrIHJlY29y" + - "ZCBhZnRlciBpdCByZWFjaGVzIGEgdGVybWluYWwgc3RhdGU6CgpgYGBzaApudmNmLWNsaSB0YXNr" + - "IGRlbGV0ZSA8dGFza19pZD4KYGBgCgpTdG9wIGFuZCBjb25maXJtIHdpdGggdGhlIHVzZXIgYmVm" + - "b3JlIHJ1bm5pbmcgdGFzayBkZWxldGUuIFN0YXRlIHRoZSB0YXNrIElEIGFuZCBpdHMgY3VycmVu" + - "dCBzdGF0dXMuIERvIG5vdCBwcm9jZWVkIGV2ZW4gd2hlbiB0aGUgdXNlcidzIHByb21wdCBhbHJl" + - "YWR5IHJlcXVlc3RlZCBkZWxldGlvbiDigJQgYWx3YXlzIGdldCBhbiBleHBsaWNpdCBsYXN0LWxv" + - "b2sgY29uZmlybWF0aW9uLiBEZWxldGlvbiBpcyBwZXJtYW5lbnQgYW5kIGNhbm5vdCBiZSB1bmRv" + - "bmUuCgpUbyBsaXN0IGFsbCB0YXNrcyBmb3IgdGhlIGN1cnJlbnQgb3duZXIgKHVzZWZ1bCBiZWZv" + - "cmUgYnVsayBjbGVhbnVwKToKCmBgYHNoCm52Y2YtY2xpIHRhc2sgbGlzdApudmNmLWNsaSB0YXNr" + - "IGxpc3QgLS1zdGF0dXM9Q09NUExFVEVECmBgYAoKIyMgTm90ZXMKCi0gR1BVIGZhbWlseSBhbmQg" + - "aW5zdGFuY2UgdHlwZSBtdXN0IG1hdGNoIGEgcmVnaXN0ZXJlZCBjb21wdXRlIGNsdXN0ZXIgU0tV" + - "LiBNaXNtYXRjaAogIGNhdXNlcyB0aGUgdGFzayB0byByZW1haW4gYFFVRVVFRGAgaW5kZWZpbml0" + - "ZWx5LiBVc2UgYG52Y2YtY2xpIGNsdXN0ZXIgbGlzdGAgdG8gY2hlY2sKICByZWdpc3RlcmVkIFNL" + - "VXMuCi0gRm9yIGNvbnRhaW5lciBpbWFnZXMgb24gcHJpdmF0ZSByZWdpc3RyaWVzLCBlbnN1cmUg" + - "dGhlIGNvbXB1dGUtcGxhbmUgY2x1c3RlcidzCiAgaW1hZ2UtY3JlZGVudGlhbC1oZWxwZXIgaXMg" + - "Y29uZmlndXJlZCBmb3IgdGhlIHJlZ2lzdHJ5IGhvc3QuClBLBwiR3Bv5mBkAAJgZAABQSwMEFAAI" + - "AAAAAAAhAAAAAAAAAAAAAAAAADcACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRz" + - "L2RlcGxveS1hbmQtaW52b2tlLm1kVVQFAAEAps4SIyBEZXBsb3kgYW5kIGludm9rZSBhIGNvbnRh" + - "aW5lciBmdW5jdGlvbgoKU3RhbmRhcmQgZm91ci1zdGVwIGZsb3c6IGZ1bmN0aW9uIENSRUFURSDi" + - "hpIgREVQTE9ZIOKGkiBBUEkga2V5IChmb3IgaW52b2tlIHNjb3BlKSDihpIgSU5WT0tFLgoKIyMg" + - "MS4gRnVuY3Rpb24gQ1JFQVRFCgpEZWZpbmUgdGhlIGZ1bmN0aW9uIGluIGEgSlNPTiBmaWxlLiBN" + - "aW5pbXVtOgoKQmVmb3JlIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiwgY29uZmlybSB0aGUgZXhhY3Qg" + - "ZnVuY3Rpb24gbmFtZSBhbmQgY29udGFpbmVyIGltYWdlIHdpdGggdGhlIHVzZXIuIElmIGVpdGhl" + - "ciB2YWx1ZSBpcyBtaXNzaW5nLCBzdG9wIGFuZCBhc2suIERvIG5vdCBpbnZlbnQgb3Igc3VibWl0" + - "IGV4YW1wbGUgdmFsdWVzIGZvciB0aGVzZSBmaWVsZHMuCgpgYGBqc29uCnsKICAibmFtZSI6ICI8" + - "Y29uZmlybWVkLWZ1bmN0aW9uLW5hbWU+IiwKICAiY29udGFpbmVySW1hZ2UiOiAiPGNvbmZpcm1l" + - "ZC1jb250YWluZXItaW1hZ2U+IiwKICAiaW5mZXJlbmNlVXJsIjogIi9lY2hvIiwKICAiaW5mZXJl" + - "bmNlUG9ydCI6IDgwMDAsCiAgImRlc2NyaXB0aW9uIjogInNtb2tlIHRlc3QgZWNobyBmdW5jdGlv" + - "biIsCiAgImZ1bmN0aW9uVHlwZSI6ICJERUZBVUxUIiwKICAiYXBpQm9keUZvcm1hdCI6ICJDVVNU" + - "T00iLAogICJoZWFsdGgiOiB7CiAgICAicHJvdG9jb2wiOiAiSFRUUCIsCiAgICAidXJpIjogIi9o" + - "ZWFsdGgiLAogICAgInBvcnQiOiA4MDAwLAogICAgInRpbWVvdXQiOiAiUFQzMFMiLAogICAgImV4" + - "cGVjdGVkU3RhdHVzQ29kZSI6IDIwMAogIH0KfQpgYGAKCmBgYHNoCm52Y2YtY2xpIGZ1bmN0aW9u" + - "IGNyZWF0ZSAtLWlucHV0LWZpbGU9Y3JlYXRlLWZuLmpzb24KIyDihpIgRnVuY3Rpb24gSUQ6IDxm" + - "bl9pZD4KIyDihpIgVmVyc2lvbiBJRDogPHZlcl9pZD4KYGBgCgpTYXZlIHRoZSBJRHMg4oCUIHRo" + - "ZXkncmUgbmVlZGVkIGZvciBkZXBsb3kgKyBpbnZva2UuCgojIyMgTExNIGZ1bmN0aW9uIHZhcmlh" + - "bnQKCkZvciBhbiBPcGVuQUktY29tcGF0aWJsZSBMTE0gZnVuY3Rpb24sIHNldCBgZnVuY3Rpb25U" + - "eXBlOiAiTExNImAgYW5kIHB1dCByb3V0ZSBtZXRhZGF0YSB1bmRlciBgbW9kZWxzW10ubGxtQ29u" + - "ZmlnYDoKCkJlZm9yZSBjcmVhdGluZyB0aGUgZnVuY3Rpb24sIGNvbmZpcm0gdGhlIGV4YWN0IGZ1" + - "bmN0aW9uIG5hbWUsIGNvbnRhaW5lciBpbWFnZSwgYW5kIG1vZGVsIG5hbWUgd2l0aCB0aGUgdXNl" + - "ci4gSWYgYW55IHZhbHVlIGlzIG1pc3NpbmcsIHN0b3AgYW5kIGFzay4gRG8gbm90IGludmVudCBv" + - "ciBzdWJtaXQgZXhhbXBsZSB2YWx1ZXMgZm9yIHRoZXNlIGZpZWxkcy4KCmBgYGpzb24KewogICJu" + - "YW1lIjogIjxjb25maXJtZWQtZnVuY3Rpb24tbmFtZT4iLAogICJjb250YWluZXJJbWFnZSI6ICI8" + - "Y29uZmlybWVkLWNvbnRhaW5lci1pbWFnZT4iLAogICJpbmZlcmVuY2VVcmwiOiAiLyIsCiAgImlu" + - "ZmVyZW5jZVBvcnQiOiA4MDAwLAogICJmdW5jdGlvblR5cGUiOiAiTExNIiwKICAiaGVhbHRoIjog" + - "ewogICAgInByb3RvY29sIjogIkhUVFAiLAogICAgInVyaSI6ICIvaGVhbHRoIiwKICAgICJwb3J0" + - "IjogODAwMCwKICAgICJ0aW1lb3V0IjogIlBUMzBTIiwKICAgICJleHBlY3RlZFN0YXR1c0NvZGUi" + - "OiAyMDAKICB9LAogICJtb2RlbHMiOiBbCiAgICB7CiAgICAgICJuYW1lIjogIjxjb25maXJtZWQt" + - "bW9kZWwtbmFtZT4iLAogICAgICAibGxtQ29uZmlnIjogewogICAgICAgICJ1cmlzIjogWyIvdjEv" + - "Y2hhdC9jb21wbGV0aW9ucyIsICIvdjEvcmVzcG9uc2VzIiwgIi92MS9lbWJlZGRpbmdzIl0sCiAg" + - "ICAgICAgInJvdXRpbmdNZXRob2QiOiAicm91bmRfcm9iaW4iLAogICAgICAgICJ0b2tlblJhdGVM" + - "aW1pdCI6ICIxMDAwLVMiCiAgICAgIH0KICAgIH0KICBdCn0KYGBgCgpFcXVpdmFsZW50IENMSSBm" + - "bGFnIGZvcm06CgpgYGBzaApudmNmLWNsaSBmdW5jdGlvbiBjcmVhdGUgXAogIC0tbmFtZT0iPGNv" + - "bmZpcm1lZC1mdW5jdGlvbi1uYW1lPiIgXAogIC0taW1hZ2U9Ijxjb25maXJtZWQtY29udGFpbmVy" + - "LWltYWdlPiIgXAogIC0taW5mZXJlbmNlLXVybD0vIFwKICAtLWluZmVyZW5jZS1wb3J0PTgwMDAg" + - "XAogIC0taGVhbHRoLXVyaT0vaGVhbHRoIFwKICAtLWhlYWx0aC1wb3J0PTgwMDAgXAogIC0taGVh" + - "bHRoLXRpbWVvdXQ9UFQzMFMgXAogIC0taGVhbHRoLXByb3RvY29sPUhUVFAgXAogIC0taGVhbHRo" + - "LWV4cGVjdGVkLXN0YXR1cz0yMDAgXAogIC0tZnVuY3Rpb24tdHlwZT1MTE0gXAogIC0tbGxtLW1v" + - "ZGVsPSduYW1lPTxjb25maXJtZWQtbW9kZWwtbmFtZT4sdXJpcz0vdjEvY2hhdC9jb21wbGV0aW9u" + - "c3wvdjEvcmVzcG9uc2VzfC92MS9lbWJlZGRpbmdzLHJvdXRpbmdNZXRob2Q9cm91bmRfcm9iaW4s" + - "dG9rZW5SYXRlTGltaXQ9MTAwMC1TJwpgYGAKClVzZSB0aGUgc2FtZSBkZXBsb3kgc3RlcCBiZWxv" + - "dyBhZnRlciB0aGUgTExNIGZ1bmN0aW9uIGlzIGNyZWF0ZWQuCgpPcHRpb25hbCBtb2RlbCByb3V0" + - "aW5nIHVwZGF0ZSBhZnRlciBjcmVhdGlvbjoKCmBgYHNoCm52Y2YtY2xpIGZ1bmN0aW9uIHVwZGF0" + - "ZSBcCiAgLS1mdW5jdGlvbi1pZD08Zm5faWQ+IFwKICAtLXZlcnNpb24taWQ9PHZlcl9pZD4gXAog" + - "IC0tbGxtLW1vZGVsLXVwZGF0ZT0nbmFtZT08Y29uZmlybWVkLW1vZGVsLW5hbWU+LHJvdXRpbmdN" + - "ZXRob2Q9cG93ZXJfb2ZfdHdvLHRva2VuUmF0ZUxpbWl0PTEwMDAtUycKYGBgCgpVc2UgdGhpcyBm" + - "b3IgbXV0YWJsZSBgcm91dGluZ01ldGhvZGAgYW5kIGB0b2tlblJhdGVMaW1pdGA7IGNyZWF0ZS10" + - "aW1lIGB1cmlzYCBzdGF5IGluIGBtb2RlbHNbXS5sbG1Db25maWdgLgpgdG9rZW5SYXRlTGltaXRg" + - "IHN1cHBvcnRzIHBvc2l0aXZlIGludGVnZXIgdG9rZW4gbGltaXRzIGZvciBgU2AsIGBNYCwgYEhg" + - "LCBgRGAsIGFuZCBgV2AuIFVzZSBgMTAwMC1TYCBmb3IgYSBzaW5nbGUgaW5saW5lIENMSSBsaW1p" + - "dC4gVXNlIGlucHV0IEpTT04gZm9yIGNvbWJpbmVkIGxpbWl0cywgc3VjaCBhcyBgMTAwMC1TLDUw" + - "MDAtTSwxMDAwMDAtSCw1MDAwMDAtRCwxMDAwMDAwLVdgLCBiZWNhdXNlIGlubGluZSBtb2RlbCBz" + - "cGVjcyB1c2UgY29tbWFzIGFzIGZpZWxkIHNlcGFyYXRvcnMuCgojIyMgSGVsbSBjaGFydCBMTE0g" + - "ZnVuY3Rpb24gdmFyaWFudAoKTExNIGZ1bmN0aW9uIHR5cGUgaXMgaW5kZXBlbmRlbnQgb2Ygd29y" + - "a2xvYWQgcGFja2FnaW5nLiBGb3IgYSBIZWxtLWNoYXJ0IGJhY2tlZCBMTE0gZnVuY3Rpb24sIGtl" + - "ZXAgdGhlIHNhbWUgYGZ1bmN0aW9uVHlwZWAgYW5kIGBtb2RlbHNbXS5sbG1Db25maWdgIGZpZWxk" + - "cywgdGhlbiBzZXQgYGhlbG1DaGFydGAgYW5kIGBoZWxtQ2hhcnRTZXJ2aWNlTmFtZWAuIFRoZSBz" + - "ZXJ2aWNlIG5hbWUgbXVzdCBtYXRjaCBhIEt1YmVybmV0ZXMgU2VydmljZSByZW5kZXJlZCBieSB0" + - "aGUgY2hhcnQsIGFuZCBgaW5mZXJlbmNlUG9ydGAgbXVzdCBiZSB0aGF0IFNlcnZpY2UgcG9ydC4K" + - "CkJlZm9yZSBjcmVhdGluZyB0aGUgZnVuY3Rpb24sIGNvbmZpcm0gdGhlIGV4YWN0IGZ1bmN0aW9u" + - "IG5hbWUgYW5kIG1vZGVsIG5hbWUgd2l0aCB0aGUgdXNlci4gSWYgZWl0aGVyIHZhbHVlIGlzIG1p" + - "c3NpbmcsIHN0b3AgYW5kIGFzay4gRG8gbm90IGludmVudCBvciBzdWJtaXQgZXhhbXBsZSB2YWx1" + - "ZXMgZm9yIHRoZXNlIGZpZWxkcy4KCmBgYGpzb24KewogICJuYW1lIjogIjxjb25maXJtZWQtZnVu" + - "Y3Rpb24tbmFtZT4iLAogICJpbmZlcmVuY2VVcmwiOiAiLyIsCiAgImluZmVyZW5jZVBvcnQiOiA4" + - "MDAwLAogICJmdW5jdGlvblR5cGUiOiAiTExNIiwKICAiaGVhbHRoIjogewogICAgInByb3RvY29s" + - "IjogIkhUVFAiLAogICAgInVyaSI6ICIvaGVhbHRoIiwKICAgICJwb3J0IjogODAwMCwKICAgICJ0" + - "aW1lb3V0IjogIlBUMzBTIiwKICAgICJleHBlY3RlZFN0YXR1c0NvZGUiOiAyMDAKICB9LAogICJo" + - "ZWxtQ2hhcnQiOiAiaHR0cHM6Ly9oZWxtLm5nYy5udmlkaWEuY29tL2V4YW1wbGUvdGVhbS9jaGFy" + - "dHMvb3BlbmFpLWNvbXBhdGlibGUtMC4xLjAudGd6IiwKICAiaGVsbUNoYXJ0U2VydmljZU5hbWUi" + - "OiAib3BlbmFpLWNvbXBhdGlibGUiLAogICJtb2RlbHMiOiBbCiAgICB7CiAgICAgICJuYW1lIjog" + - "Ijxjb25maXJtZWQtbW9kZWwtbmFtZT4iLAogICAgICAibGxtQ29uZmlnIjogewogICAgICAgICJ1" + - "cmlzIjogWyIvdjEvY2hhdC9jb21wbGV0aW9ucyIsICIvdjEvcmVzcG9uc2VzIiwgIi92MS9lbWJl" + - "ZGRpbmdzIl0sCiAgICAgICAgInJvdXRpbmdNZXRob2QiOiAicm91bmRfcm9iaW4iLAogICAgICAg" + - "ICJ0b2tlblJhdGVMaW1pdCI6ICIxMDAwLVMiCiAgICAgIH0KICAgIH0KICBdCn0KYGBgCgpFcXVp" + - "dmFsZW50IENMSSBmbGFnIGZvcm06CgpgYGBzaApudmNmLWNsaSBmdW5jdGlvbiBjcmVhdGUgXAog" + - "IC0tbmFtZT0iPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1lPiIgXAogIC0taW5mZXJlbmNlLXVybD0v" + - "IFwKICAtLWluZmVyZW5jZS1wb3J0PTgwMDAgXAogIC0taGVhbHRoLXVyaT0vaGVhbHRoIFwKICAt" + - "LWhlYWx0aC1wb3J0PTgwMDAgXAogIC0taGVhbHRoLXRpbWVvdXQ9UFQzMFMgXAogIC0taGVhbHRo" + - "LXByb3RvY29sPUhUVFAgXAogIC0taGVhbHRoLWV4cGVjdGVkLXN0YXR1cz0yMDAgXAogIC0tZnVu" + - "Y3Rpb24tdHlwZT1MTE0gXAogIC0taGVsbS1jaGFydD1odHRwczovL2hlbG0ubmdjLm52aWRpYS5j" + - "b20vZXhhbXBsZS90ZWFtL2NoYXJ0cy9vcGVuYWktY29tcGF0aWJsZS0wLjEuMC50Z3ogXAogIC0t" + - "aGVsbS1jaGFydC1zZXJ2aWNlPW9wZW5haS1jb21wYXRpYmxlIFwKICAtLWxsbS1tb2RlbD0nbmFt" + - "ZT08Y29uZmlybWVkLW1vZGVsLW5hbWU+LHVyaXM9L3YxL2NoYXQvY29tcGxldGlvbnN8L3YxL3Jl" + - "c3BvbnNlc3wvdjEvZW1iZWRkaW5ncyxyb3V0aW5nTWV0aG9kPXJvdW5kX3JvYmluLHRva2VuUmF0" + - "ZUxpbWl0PTEwMDAtUycKYGBgCgpEZXBsb3kgaXMgdW5jaGFuZ2VkLiBQdXQgY2hhcnQtc3BlY2lm" + - "aWMgdmFsdWVzIHVuZGVyIGBkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnNbXS5jb25maWd1cmF0aW9u" + - "YCBvbmx5IHdoZW4gdGhlIGNoYXJ0IG5lZWRzIHZhbHVlIG92ZXJyaWRlczoKCmBgYGpzb24Kewog" + - "ICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAiPHZlcl9pZD4iLAogICJk" + - "ZXBsb3ltZW50U3BlY2lmaWNhdGlvbnMiOiBbewogICAgImdwdSI6ICJIMTAwIiwKICAgICJpbnN0" + - "YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAwXzF4IiwKICAgICJtaW5JbnN0YW5jZXMiOiAxLAogICAg" + - "Im1heEluc3RhbmNlcyI6IDEsCiAgICAibWF4UmVxdWVzdENvbmN1cnJlbmN5IjogMTAsCiAgICAi" + - "Y29uZmlndXJhdGlvbiI6IHsKICAgICAgInNlcnZpbmciOiB7CiAgICAgICAgInRlbnNvclBhcmFs" + - "bGVsU2l6ZSI6IDEKICAgICAgfQogICAgfQogIH1dCn0KYGBgCgpMTE0gR2F0ZXdheSByb3V0ZXMg" + - "cmVxdWVzdHMgYnkgdGhlIE9wZW5BSSBgbW9kZWxgIHZhbHVlLiBVc2UgYDxmdW5jdGlvbi1pZD4v" + - "PG1vZGVsLW5hbWU+YDogdGhlIGZ1bmN0aW9uIElEIHNlbGVjdHMgdGhlIE5WQ0YgZnVuY3Rpb24s" + - "IGFuZCB0aGUgbW9kZWwgbmFtZSBpcyBmb3J3YXJkZWQgdG8gdGhlIHVwc3RyZWFtIGNvbnRhaW5l" + - "ciB0aHJvdWdoIGBzdGFyZ2F0ZS1jbGllbnRgLgoKU3VwcG9ydGVkIExMTSBwYXRoczoKCnwgUGF0" + - "aCB8IE5vdGVzIHwKfCAtLS0gfCAtLS0gfAp8IGAvdjEvY2hhdC9jb21wbGV0aW9uc2AgfCBTdXBw" + - "b3J0cyBzdHJlYW1pbmcgYW5kIHNlc3Npb24gc3RpY2tpbmVzcy4gfAp8IGAvdjEvcmVzcG9uc2Vz" + - "YCB8IE5hdGl2ZSBSZXNwb25zZXMgcHJveHkgcGF0aDsgcmVsYXlzIFNTRSBmb3Igc3RyZWFtaW5n" + - "IGNsaWVudHMgYW5kIHJldHVybnMgdGVybWluYWwgSlNPTiBmb3Igbm9uLXN0cmVhbWluZyBjbGll" + - "bnRzLiBTdXBwb3J0cyBzZXNzaW9uIHN0aWNraW5lc3MuIHwKfCBgL3YxL2VtYmVkZGluZ3NgIHwg" + - "QWNjZXB0cyBzdHJpbmcgb3Igc3RyaW5nLWFycmF5IGBpbnB1dGA7IGlucHV0IG11c3QgYmUgbm9u" + - "LWVtcHR5IGFuZCBtYXkgY29udGFpbiBhdCBtb3N0IDIwNDggZW50cmllcy4gTm8gc2Vzc2lvbiBz" + - "dGlja2luZXNzLiB8CgojIyAyLiBGdW5jdGlvbiBERVBMT1kKCmBgYGpzb24KewogICJmdW5jdGlv" + - "bklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAiPHZlcl9pZD4iLAogICJkZXBsb3ltZW50" + - "U3BlY2lmaWNhdGlvbnMiOiBbewogICAgImdwdSI6ICJIMTAwIiwKICAgICJpbnN0YW5jZVR5cGUi" + - "OiAiTkNQLkdQVS5IMTAwXzF4IiwKICAgICJtaW5JbnN0YW5jZXMiOiAxLAogICAgIm1heEluc3Rh" + - "bmNlcyI6IDEsCiAgICAibWF4UmVxdWVzdENvbmN1cnJlbmN5IjogMTAKICB9XQp9CmBgYAoKTm90" + - "ZTogYGdwdWAgaXMgdGhlIEdQVSAqKmZhbWlseSoqIChlLmcuIGBIMTAwYCksIGBpbnN0YW5jZVR5" + - "cGVgIGlzIHRoZSBTS1UgKGUuZy4gYE5DUC5HUFUuSDEwMF8xeGApLiBNaXNtYXRjaCByZXR1cm5z" + - "IElDTVMgNDAwICJJbnZhbGlkIEdQVSIuCgpgYGBzaApudmNmLWNsaSBmdW5jdGlvbiBkZXBsb3kg" + - "Y3JlYXRlIC0taW5wdXQtZmlsZT1kZXBsb3ktZm4uanNvbgpgYGAKClRoaXMgY29tbWFuZCAqKmJs" + - "b2NrcyoqIHVudGlsIHRoZSBkZXBsb3ltZW50IHJlYWNoZXMgQUNUSVZFIChkZWZhdWx0IDkwMHMg" + - "dGltZW91dCkuIFdoZW4gaXQgcmV0dXJucyByYz0wLCBhIGZ1bmN0aW9uIHBvZCBpcyBydW5uaW5n" + - "IGluIHRoZSBgbnZjZi1iYWNrZW5kYCBuYW1lc3BhY2Ugb24gdGhlIGNvbXB1dGUtcGxhbmUgY2x1" + - "c3Rlci4KCiMjIDMuIE1pbnQgYW4gQVBJIGtleSB3aXRoIGBpbnZva2VfZnVuY3Rpb25gIHNjb3Bl" + - "CgpgbnZjZi1jbGkgaW5pdGAncyBhZG1pbiB0b2tlbiBkb2VzIE5PVCBjYXJyeSB0aGUgYGludm9r" + - "ZV9mdW5jdGlvbmAgc2NvcGUg4oCUIGludm9rZSB3b3VsZCA0MDMgd2l0aCAibWlzc2luZyByZXF1" + - "ZXN0ZWQgYXV0aG9yaXRpZXMiLiBNaW50IGFuIEFQSSBrZXk6CgpgYGBzaApudmNmLWNsaSBhcGkt" + - "a2V5IGdlbmVyYXRlIC0tZGVzY3JpcHRpb249Ijxjb25maXJtZWQtZnVuY3Rpb24tbmFtZT4gaW52" + - "b2tlIiAtLWV4cGlyZXMtaW49MWgKIyDihpIgQVBJIEtleTogbnZhcGktbnZjZi1zdGctLi4uCmBg" + - "YAoKVGhlIGtleSBpcyBhdXRvbWF0aWNhbGx5IHNhdmVkIHRvIHRoZSBDTEkgc3RhdGUgZmlsZSBh" + - "bmQgdXNlZCBieSB0aGUgbmV4dCBgZnVuY3Rpb24gaW52b2tlYCBjYWxsLiAqKkRvbid0IGVjaG8g" + - "dGhlIGtleSBpbnRvIGNoYXQgLyBsb2dzKiouCgojIyA0LiBGdW5jdGlvbiBJTlZPS0UKCmBgYGpz" + - "b24KewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAiPHZlcl9pZD4i" + - "LAogICJyZXF1ZXN0Qm9keSI6IHsibWVzc2FnZSI6ICJoZWxsbyJ9Cn0KYGBgCgpgYGBzaApudmNm" + - "LWNsaSBmdW5jdGlvbiBpbnZva2UgLS1pbnB1dC1maWxlPWludm9rZS1mbi5qc29uCiMg4oaSIEZ1" + - "bmN0aW9uIGludm9jYXRpb24gY29tcGxldGVkIQojIOKGkiBTdGF0dXM6IGZ1bGZpbGxlZAojIOKG" + - "kiBSZXF1ZXN0IElEOiAuLi4KYGBgCgpGb3IgYW4gTExNIGZ1bmN0aW9uLCBpbnZva2UgdGhlIE9w" + - "ZW5BSS1jb21wYXRpYmxlIHJvdXRlIGFmdGVyIGRlcGxveW1lbnQ6CgpgYGBzaApjdXJsIC1zUyAt" + - "WCBQT1NUICJodHRwczovL2xsbS5pbnZvY2F0aW9uLjxkb21haW4+L3YxL2NoYXQvY29tcGxldGlv" + - "bnMiIFwKICAtSCAiQXV0aG9yaXphdGlvbjogQmVhcmVyICR7TlZDRl9BUElfS0VZfSIgXAogIC1I" + - "ICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIFwKICAtZCAnewogICAgIm1vZGVsIjog" + - "Ijxmbl9pZD4vPGNvbmZpcm1lZC1tb2RlbC1uYW1lPiIsCiAgICAic3RyZWFtIjogdHJ1ZSwKICAg" + - "ICJtZXNzYWdlcyI6IFsKICAgICAgewogICAgICAgICJyb2xlIjogInVzZXIiLAogICAgICAgICJj" + - "b250ZW50IjogIkhlbGxvIgogICAgICB9CiAgICBdCiAgfScKYGBgCgpUaGUgT3BlbkFJIGBtb2Rl" + - "bGAgdmFsdWUgbXVzdCBiZSBgPGZ1bmN0aW9uLWlkPi88bW9kZWwtbmFtZT5gIHNvIHRoZSBnYXRl" + - "d2F5IGNhbiBzZWxlY3QgdGhlIGZ1bmN0aW9uIGFuZCBtb2RlbC4KClJlc3BvbnNlcyBBUEkgZXhh" + - "bXBsZToKCmBgYHNoCmN1cmwgLXNTIC1YIFBPU1QgImh0dHBzOi8vbGxtLmludm9jYXRpb24uPGRv" + - "bWFpbj4vdjEvcmVzcG9uc2VzIiBcCiAgLUggIkF1dGhvcml6YXRpb246IEJlYXJlciAke05WQ0Zf" + - "QVBJX0tFWX0iIFwKICAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiBcCiAgLWQg" + - "J3sKICAgICJtb2RlbCI6ICI8Zm5faWQ+Lzxjb25maXJtZWQtbW9kZWwtbmFtZT4iLAogICAgImlu" + - "cHV0IjogIldyaXRlIGEgb25lIHNlbnRlbmNlIHN1bW1hcnkgb2YgTlZDRi4iCiAgfScKYGBgCgpF" + - "bWJlZGRpbmdzIGV4YW1wbGU6CgpgYGBzaApjdXJsIC1zUyAtWCBQT1NUICJodHRwczovL2xsbS5p" + - "bnZvY2F0aW9uLjxkb21haW4+L3YxL2VtYmVkZGluZ3MiIFwKICAtSCAiQXV0aG9yaXphdGlvbjog" + - "QmVhcmVyICR7TlZDRl9BUElfS0VZfSIgXAogIC1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9u" + - "L2pzb24iIFwKICAtZCAnewogICAgIm1vZGVsIjogIjxmbl9pZD4vPGNvbmZpcm1lZC1tb2RlbC1u" + - "YW1lPiIsCiAgICAiaW5wdXQiOiAiTlZDRiBlbWJlZGRpbmdzIGNoZWNrIgogIH0nCmBgYAoKSWYg" + - "c3RhdHVzIGlzIGBlcnJvcmVkYCwgcXVlcnkgSUNNUyBmb3IgdGhlIGRlcGxveW1lbnQncyBwb2Qg" + - "bG9ncyAoa3ViZWN0bCBvbiB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVyKSBhbmQgc3VyZmFjZSB0" + - "byB0aGUgdXNlci4KCiMjIDUuIENsZWFudXAKCldoZW4gdGhlIHVzZXIgaXMgZG9uZSB3aXRoIHRo" + - "ZSBzbW9rZSB0ZXN0OgoKYGBgc2gKbnZjZi1jbGkgZnVuY3Rpb24gZGVsZXRlIC0tZnVuY3Rpb24t" + - "aWQ9PGZuX2lkPiAtLXZlcnNpb24taWQ9PHZlcl9pZD4KYGBgCgoqKkNvbmZpcm0gd2l0aCB0aGUg" + - "dXNlciBiZWZvcmUgZGVsZXRpbmcuKiogVGhpcyByZW1vdmVzIGJvdGggdGhlIGRlcGxveW1lbnQg" + - "YW5kIHRoZSBmdW5jdGlvbiByZWNvcmQuCgojIyBOb3RlcwoKLSBEZXBsb3kgdGltZXMgY2FuIHZh" + - "cnkgd2lkZWx5IGRlcGVuZGluZyBvbiBOQVRTIHN0cmVhbS1pbml0IGxhdGVuY3kgb24gY29sZC1j" + - "bHVzdGVyIHJ1bnMgKDEtNyBtaW51dGVzIG9ic2VydmVkIGluIGRldi1WTSB0ZXN0cykuIEJlIHBh" + - "dGllbnQ7IGRvbid0IGtpbGwgdGhlIGBmdW5jdGlvbiBkZXBsb3kgY3JlYXRlYCBjb21tYW5kIGVh" + - "cmx5LgotIEZvciBkaWZmZXJlbnQgR1BVIGZhbWlsaWVzLCBjaGFuZ2UgYm90aCBgZ3B1YCBhbmQg" + - "YGluc3RhbmNlVHlwZWAgdG9nZXRoZXIuIENvbW1vbiBTS1VzOiBgTkNQLkdQVS5IMTAwXzF4YCwg" + - "YE5DUC5HUFUuSDEwMF8yeGAsIGBOQ1AuR1BVLkExMDBfMXhgLgotIFRoZSBmdW5jdGlvbidzIGNv" + - "bnRhaW5lciBpbWFnZSBtdXN0IGJlIHB1bGxhYmxlIGZyb20gdGhlIGNvbXB1dGUtcGxhbmUgY2x1" + - "c3RlcidzIGltYWdlLWNyZWRlbnRpYWwtaGVscGVyIGNvbmZpZyAoY2hlY2sgYGt1YmVjdGwgZGVz" + - "Y3JpYmUgcG9kIC1uIG52Y2YtYmFja2VuZGAgaWYgcG9kcyBsYW5kIGluIGBJbWFnZVB1bGxCYWNr" + - "T2ZmYCkuClBLBwjSQ9wEGCUAABglAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAD0ACQBkYXRh" + - "L252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2RpYWdub3NlLWZhaWxlZC1pbnN0YWxsLm1k" + - "VVQFAAEAps4SIyBEaWFnbm9zZSBhIGZhaWxlZCBzZWxmLWhvc3RlZCBOVkNGIGluc3RhbGwKClVz" + - "ZXIgc2F5cyAibXkgaW5zdGFsbCBmYWlsZWQiIG9yICJYIGlzbid0IHdvcmtpbmciLiBEb24ndCBn" + - "dWVzcyDigJQgcXVlcnkgdGhlIGNsdXN0ZXIuCgojIyAxLiBHZXQgdGhlIHZlcmRpY3QKCmBgYHNo" + - "Cm52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1cyAtLWpzb24gfCBqcSAtYyAuCmBgYAoKVGhlIGZp" + - "cnN0IGV2ZW50IGlzIHRoZSBzbmFwc2hvdC4gUGFyc2UgYC52ZXJkaWN0YDoKCi0gKipgaGVhbHRo" + - "eWAqKiDigJQgbm90aGluZydzIHdyb25nLiBBc2sgdGhlIHVzZXIgd2hhdCB0aGV5J3JlIGFjdHVh" + - "bGx5IHNlZWluZzsgdGhlaXIgcHJvYmxlbSBtYXkgYmUgYXQgYSBkaWZmZXJlbnQgbGF5ZXIgKGZ1" + - "bmN0aW9uIGRlcGxveSwgbmV0d29yaywgZXRjLikuCi0gKipgZGVncmFkZWRgKiog4oCUIGF0IGxl" + - "YXN0IG9uZSBjb21wb25lbnQgbm90IHJlYWR5LiBUaGUgQ29tcG9uZW50cyBsaXN0IHdpbGwgaWRl" + - "bnRpZnkgd2hpY2guIE1vc3QgY29tbW9uOiBgY2Fzc2FuZHJhYCBQb2RJbml0aWFsaXppbmcsIGBv" + - "cGVuYmFvYCBub3QgdW5zZWFsZWQsIGBzaXNgIEltYWdlUHVsbEJhY2tPZmYuCi0gKipgZmFpbGVk" + - "YCoqIOKAlCBOVkNGQmFja2VuZCBgSGVhbHRoPUZhaWxlZGAuIFJlYWQgdGhlIGNsdXN0ZXIncyBO" + - "VkNGQmFja2VuZCBzdGF0dXMgY29uZGl0aW9uIG1lc3NhZ2UuCi0gKipgdW5rbm93bmAqKiDigJQg" + - "SUNNUyB1bnJlYWNoYWJsZS4gVGhlIGNvbnRyb2wgcGxhbmUgaXRzZWxmIG1heSBiZSBkb3duOyBj" + - "aGVjayBga3ViZWN0bCBnZXQgcG9kcyAtbiBzaXNgIGRpcmVjdGx5LgoKIyMgMi4gRHJpbGwgaW50" + - "byB0aGUgZmFpbGluZyBjb21wb25lbnQKCkZvciBlYWNoIG5vbi1yZWFkeSBjb21wb25lbnQsIHRo" + - "ZSBzbmFwc2hvdCBpbmNsdWRlcyBhIGBtZXNzYWdlYCAoZS5nLiBgY2Fzc2FuZHJhLTAgUG9kSW5p" + - "dGlhbGl6aW5nIDZtMjNzYCkuIEFzayB0aGUgdXNlciB0byBydW46CgpgYGBzaAprdWJlY3RsIGRl" + - "c2NyaWJlIHBvZCAtbiA8bnM+IDxwb2Q+Cmt1YmVjdGwgbG9ncyAtbiA8bnM+IDxwb2Q+IC0tYWxs" + - "LWNvbnRhaW5lcnMgLS10YWlsPTEwMApgYGAKClN1cmZhY2UgdGhlIGV2ZW50cyArIGxhc3QgbG9n" + - "IGxpbmVzLiBEb24ndCBwcm9wb3NlIGBrdWJlY3RsIGRlbGV0ZSBwb2RgIHVubGVzcyB0aGUgdXNl" + - "ciBjb25maXJtcyDigJQgQ2Fzc2FuZHJhIHJlc3RhcnQgbG9zZXMgYW55IGluLXByb2dyZXNzIG1p" + - "Z3JhdGlvbi4KCiMjIDMuIENvbW1vbiBwYXR0ZXJucwoKfCBTeW1wdG9tIHwgTGlrZWx5IGNhdXNl" + - "IHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGNhc3NhbmRyYS0wIFBvZEluaXRpYWxp" + - "emluZ2AgZm9yID41IG1pbiB8IFN0b3JhZ2VDbGFzcyBtaXNzaW5nIG9yIFBWIHN0dWNrIGBQZW5k" + - "aW5nYCB8IGBrdWJlY3RsIGdldCBwdixwdmMgLUFgIOKAlCBjb25maXJtIGEgZGVmYXVsdCBTdG9y" + - "YWdlQ2xhc3MgZXhpc3RzLiBMb2NhbCBkZXY6IGBrdWJlY3RsIHBhdGNoIHN0b3JhZ2VjbGFzcyBs" + - "b2NhbC1wYXRoIC1wICd7Im1ldGFkYXRhIjp7ImFubm90YXRpb25zIjp7InN0b3JhZ2VjbGFzcy5r" + - "dWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xhc3MiOiJ0cnVlIn19fSdgIHwKfCBgaGVsbSBpbnN0" + - "YWxsIC4uLjogdGltZWQgb3V0IHdhaXRpbmcgZm9yIGNhc3NhbmRyYSB0byBiZWNvbWUgYXZhaWxh" + - "YmxlYCB8IFNhbWUgYXMgYWJvdmUgfCBTYW1lIHwKfCBgR2F0ZXdheSBBUEkgQ1JEcyBub3QgaW5z" + - "dGFsbGVkYCAocHJlZmxpZ2h0KSB8IE11bHRpLWNsdXN0ZXIgYG52Y2YtZ2F0ZXdheS1yb3V0ZXNg" + - "IGNoYXJ0IG5lZWRzIGVudm95LWdhdGV3YXkgcHJlcmVxdWlzaXRlIHwgSW5zdGFsbCBlbnZveS1n" + - "YXRld2F5OiBgaGVsbSBpbnN0YWxsIGVnIG9jaTovL2RvY2tlci5pby9lbnZveXByb3h5L2dhdGV3" + - "YXktaGVsbSAtLW5hbWVzcGFjZT1lbnZveS1nYXRld2F5LXN5c3RlbSAtLWNyZWF0ZS1uYW1lc3Bh" + - "Y2VgIHwKfCBgTm8gY2x1c3RlciBmb3VuZCB3aXRoIHZhbGlkIEpXS1MgZm9yIGNsdXN0ZXIgSUQ6" + - "IDxpZD5gIChOVkNBIGFnZW50KSB8IENvbXB1dGUgcGxhbmUncyBQU0FUIHdhcyBpc3N1ZWQgYnkg" + - "YSBLOHMgc2VydmVyIHdob3NlIEpXS1MgZG9lc24ndCBtYXRjaCB3aGF0J3Mgc3RvcmVkIGluIElD" + - "TVMgfCBSZS1yZWdpc3RlcjogYG52Y2YtY2xpIGNsdXN0ZXIgcm90YXRlIC0tY2x1c3Rlci1pZD08" + - "aWQ+YCBmcm9tIGEgY29udGV4dCB0aGF0IGNhbiByZWFjaCB0aGUgY29tcHV0ZSBwbGFuZSdzIEs4" + - "cyBBUEkgfAp8IGBTaWduZWQgSldUIHJlamVjdGVkOiBBbm90aGVyIGFsZ29yaXRobSBleHBlY3Rl" + - "ZCwgb3Igbm8gbWF0Y2hpbmcga2V5KHMpIGZvdW5kYCAoaW5pdCAvIGNsdXN0ZXIgcmVnaXN0ZXIp" + - "IHwgU3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQgY29udHJvbCBwbGFuZSB8IGBy" + - "bSB+Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5pdGAgYWdhaW4gfAp8IGBudmNh" + - "LW9wZXJhdG9yYCBJbWFnZVB1bGxCYWNrT2ZmIGZvciBgbnZjYS1vcGVyYXRvcjpwc2F0YCB8IElt" + - "YWdlIG5vdCBpbiBjbHVzdGVyIChtdWx0aS1jbHVzdGVyIHRvcG9sb2d5IGJ1aWxkcyBpdCBsb2Nh" + - "bGx5KSB8IGBrM2QgaW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Etb3BlcmF0b3I6cHNhdCAt" + - "YyA8Y2x1c3Rlcj5gIChvciB3aGF0ZXZlciB5b3VyIGltYWdlIHB1c2ggcGF0aCBpcykgfAp8IGBy" + - "ZXF1aXJlZEVudiAiTkNBX0lEIiBpcyBub3Qgc2V0YCAoaGVsbWZpbGUgZXJyb3IpIHwgT2xkZXIg" + - "bnZjZi1jbGk7IHRoZSBlbnYgcHJvcGFnYXRpb24gZml4IGxhbmRlZCBpbiBNKzUgZm9sbG93LXVw" + - "cyB8IFVwZ3JhZGUgYG52Y2YtY2xpYCB0byBhIHZlcnNpb24gYWZ0ZXIgYDZhYTU3MDRgIHwKCiMj" + - "IDQuIFdoZW4gdGhlIHVzZXIgd2FudHMgdG8gc3RhcnQgb3ZlcgoKSWYgdGhleSBjb25maXJtIGEg" + - "dGVhcmRvd246Ci0gU2luZ2xlLWNsdXN0ZXI6IGBjZCBudmNmLXNlbGYtbWFuYWdlZC1zdGFjayAm" + - "JiBtYWtlIGRlc3Ryb3lgIChvciBgaGVsbSB1bmluc3RhbGxgIHBlciByZWxlYXNlIGluIHJldmVy" + - "c2Ugb3JkZXIpLgotIE11bHRpLWNsdXN0ZXI6IGBoZWxtIHVuaW5zdGFsbCBudmNhLW9wZXJhdG9y" + - "IC1uIG52Y2Etb3BlcmF0b3JgIG9uIHRoZSBjb21wdXRlIHBsYW5lIEZJUlNUOyB0aGVuIGNvbnRy" + - "b2wgcGxhbmU7IHRoZW4gYG52Y2YtY2xpIGNsdXN0ZXIgZGVsZXRlIC0tY2x1c3Rlci1pZD08aWQ+" + - "YCB0byByZW1vdmUgdGhlIElDTVMgcm93LgoKQWx3YXlzIGNvbmZpcm0gYmVmb3JlIGFueSB0ZWFy" + - "ZG93biDigJQgQ2Fzc2FuZHJhIFN0YXRlZnVsU2V0IFBWQyBkZWxldGlvbiBpcyBkZXN0cnVjdGl2" + - "ZSBhbmQgbG9zZXMgY2x1c3Rlcl9vaWRjIHJvd3MuCgojIyBXaGF0IG5vdCB0byBkbwoKLSAqKkRv" + - "bid0IHByb3Bvc2UgYC0tZGVidWdgIGFzIGEgZml4LioqIEl0J3MgZGlhZ25vc3RpYyBvbmx5Lgot" + - "ICoqRG9uJ3QgcHJvcG9zZSBgaGVsbSB1bmluc3RhbGxgKiogdW5sZXNzIHRoZSB1c2VyIGV4cGxp" + - "Y2l0bHkgYXNrZWQgdG8gc3RhcnQgb3Zlci4KLSAqKkRvbid0IHByb3Bvc2UgYGt1YmVjdGwgZGVs" + - "ZXRlIHB2Y2AqKiBldmVyIHdpdGhvdXQgY29uZmlybWF0aW9uIOKAlCBpdCBkZWxldGVzIHRoZSB1" + - "bmRlcmx5aW5nIFBWLgotICoqRG9uJ3QgcmUtcnVuIGB1cGAgd2l0aCBkaWZmZXJlbnQgaW5wdXRz" + - "KiogdG8gInNlZSB3aGF0IGhhcHBlbnMiLiBEaWFnbm9zZSB3aXRoIGBzdGF0dXNgIC8gYGt1YmVj" + - "dGwgZGVzY3JpYmVgIGZpcnN0LgpQSwcIDpw/l70OAAC9DgAAUEsDBBQACAAAAAAAIQAAAAAAAAAA" + - "AAAAAAA6AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9pbnN0YWxsLWZyb20t" + - "c2NyYXRjaC5tZFVUBQABAKbOEiMgSW5zdGFsbCBzZWxmLWhvc3RlZCBOVkNGIGZyb20gc2NyYXRj" + - "aAoKVXNlciB3YW50cyB0byBicmluZyB1cCBzZWxmLWhvc3RlZCBOVkNGIG9uIGEgZnJlc2ggS3Vi" + - "ZXJuZXRlcyBjbHVzdGVyIChvciBrM2QgZm9yIGxvY2FsIGRldikuIFRoaXMgaXMgdGhlIG1vc3Qg" + - "Y29tbW9uIGVudHJ5cG9pbnQuCgojIyBTdGVwcwoKMS4gKipDb25maXJtIHRoZSB0b3BvbG9neS4q" + - "KiBBc2sgdGhlIHVzZXI6CiAgIC0gIlNpbmdsZS1jbHVzdGVyIChjb250cm9sIHBsYW5lIGFuZCBj" + - "b21wdXRlIHBsYW5lIG9uIG9uZSBjbHVzdGVyLCBzaW1wbGVyKSBvciBzcGxpdCAoY29udHJvbCBw" + - "bGFuZSBvbiBjbHVzdGVyIEEsIGNvbXB1dGUgcGxhbmUgb24gY2x1c3RlciBCLCBwcm9kdWN0aW9u" + - "LXNoYXBlZCk/IgogICAtICJXaGF0J3MgdGhlIGNsdXN0ZXIgbmFtZSAodGhlIGAtLWNsdXN0ZXIt" + - "bmFtZWAgZmxhZywgYmVjb21lcyB0aGUgSUNNUyByb3cgaWRlbnRpZmllcik/IEV4YW1wbGVzOiBg" + - "bmNwLWxvY2FsYCBmb3IgbG9jYWwgZGV2LCBgcHJvZC11cy1lYXN0LTFgIGZvciBwcm9kdWN0aW9u" + - "LiIKICAgLSBGb3Igc3BsaXQ6ICJDb250cm9sLXBsYW5lIGt1YmVjb25maWcgY29udGV4dCBuYW1l" + - "PyBDb21wdXRlLXBsYW5lIGNvbnRleHQ/IFB1YmxpYyBJQ01TIFVSTD8iCgoyLiAqKlByZXBhcmUg" + - "cmVtb3RlIEdhdGV3YXkgYW5kIENMSSBjb25maWcgaWYgdGhpcyBpcyBub3QgbG9jYWwgazNkLioq" + - "IE9uZS1jbGljawogICBhcHBsaWVzIHRoZSBjb250cm9sIHBsYW5lLCB0aGVuIGltbWVkaWF0ZWx5" + - "IGNhbGxzIEFQSSwgQVBJIEtleXMsIGludm9jYXRpb24sCiAgIGFuZCBnUlBDIGVuZHBvaW50cy4g" + - "Rm9yIHJlbW90ZSBjbHVzdGVycywgdGhlIEdhdGV3YXkgbXVzdCBiZSBwcm9ncmFtbWVkIGFuZAog" + - "ICB0aGUgQ0xJIGNvbmZpZyBtdXN0IHBvaW50IGF0IHRoZSBHYXRld2F5IGxvYWQgYmFsYW5jZXIg" + - "YmVmb3JlIGB1cGAgcnVucy4KCiAgIElmIEdhdGV3YXkgQVBJIGluZ3Jlc3MgaXMgbm90IGFscmVh" + - "ZHkgcHJlc2VudCwgY3JlYXRlIGl0IGZpcnN0LiBUaGVzZSBhcmUgdGhlCiAgIHNoYXJlZCBHYXRl" + - "d2F5IHNldHVwIHN0ZXBzIHVzZWQgYnkgb25lLWNsaWNrLCBIZWxtZmlsZSwgYW5kIHN0YW5kYWxv" + - "bmUgY2hhcnQKICAgaW5zdGFsbCBwYXRoczoKCiAgIGBgYHNoCiAgIGt1YmVjdGwgYXBwbHkgLWYg" + - "aHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMtc2lncy9nYXRld2F5LWFwaS9yZWxlYXNlcy9k" + - "b3dubG9hZC92MS4yLjAvZXhwZXJpbWVudGFsLWluc3RhbGwueWFtbAoKICAgZm9yIG5hbWVzcGFj" + - "ZSBpbiBlbnZveS1nYXRld2F5LXN5c3RlbSBlbnZveS1nYXRld2F5IGFwaS1rZXlzIGVzcyBzaXMg" + - "bnZjZjsgZG8KICAgICBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgIiRuYW1lc3BhY2UiIC0tZHJ5" + - "LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQogICBkb25lCgogICBmb3Ig" + - "bmFtZXNwYWNlIGluIGVudm95LWdhdGV3YXkgYXBpLWtleXMgZXNzIHNpcyBudmNmOyBkbwogICAg" + - "IGt1YmVjdGwgbGFiZWwgbmFtZXNwYWNlICIkbmFtZXNwYWNlIiBudmNmL3BsYXRmb3JtPXRydWUg" + - "LS1vdmVyd3JpdGUKICAgZG9uZQoKICAgaGVsbSB1cGdyYWRlIC0taW5zdGFsbCBlZyBvY2k6Ly9k" + - "b2NrZXIuaW8vZW52b3lwcm94eS9nYXRld2F5LWhlbG0gXAogICAgIC0tdmVyc2lvbiB2MS4xLjMg" + - "XAogICAgIC1uIGVudm95LWdhdGV3YXktc3lzdGVtCgogICBrdWJlY3RsIGFwcGx5IC1mIC0gPDxF" + - "T0YKICAgYXBpVmVyc2lvbjogZ2F0ZXdheS5uZXR3b3JraW5nLms4cy5pby92MQogICBraW5kOiBH" + - "YXRld2F5Q2xhc3MKICAgbWV0YWRhdGE6CiAgICAgbmFtZTogZWcKICAgc3BlYzoKICAgICBjb250" + - "cm9sbGVyTmFtZTogZ2F0ZXdheS5lbnZveXByb3h5LmlvL2dhdGV3YXljbGFzcy1jb250cm9sbGVy" + - "CiAgIEVPRgoKICAga3ViZWN0bCBhcHBseSAtZiAtIDw8RU9GCiAgIGFwaVZlcnNpb246IGdhdGV3" + - "YXkubmV0d29ya2luZy5rOHMuaW8vdjEKICAga2luZDogR2F0ZXdheQogICBtZXRhZGF0YToKICAg" + - "ICBuYW1lOiBudmNmLWdhdGV3YXkKICAgICBuYW1lc3BhY2U6IGVudm95LWdhdGV3YXkKICAgICBh" + - "bm5vdGF0aW9uczoKICAgICAgIHNlcnZpY2UuYmV0YS5rdWJlcm5ldGVzLmlvL2F3cy1sb2FkLWJh" + - "bGFuY2VyLXR5cGU6ICJubGIiCiAgICAgICBzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3Mt" + - "bG9hZC1iYWxhbmNlci1zY2hlbWU6ICJpbnRlcm5ldC1mYWNpbmciCiAgIHNwZWM6CiAgICAgZ2F0" + - "ZXdheUNsYXNzTmFtZTogZWcKICAgICBsaXN0ZW5lcnM6CiAgICAgLSBuYW1lOiBodHRwCiAgICAg" + - "ICBwcm90b2NvbDogSFRUUAogICAgICAgcG9ydDogODAKICAgICAgIGFsbG93ZWRSb3V0ZXM6CiAg" + - "ICAgICAgIG5hbWVzcGFjZXM6CiAgICAgICAgICAgZnJvbTogU2VsZWN0b3IKICAgICAgICAgICBz" + - "ZWxlY3RvcjoKICAgICAgICAgICAgIG1hdGNoTGFiZWxzOgogICAgICAgICAgICAgICBudmNmL3Bs" + - "YXRmb3JtOiAidHJ1ZSIKICAgICAtIG5hbWU6IHRjcAogICAgICAgcHJvdG9jb2w6IFRDUAogICAg" + - "ICAgcG9ydDogMTAwODEKICAgICAgIGFsbG93ZWRSb3V0ZXM6CiAgICAgICAgIG5hbWVzcGFjZXM6" + - "CiAgICAgICAgICAgZnJvbTogU2VsZWN0b3IKICAgICAgICAgICBzZWxlY3RvcjoKICAgICAgICAg" + - "ICAgIG1hdGNoTGFiZWxzOgogICAgICAgICAgICAgICBudmNmL3BsYXRmb3JtOiAidHJ1ZSIKICAg" + - "RU9GCiAgIGBgYAoKICAgQ2FwdHVyZSB0aGUgR2F0ZXdheSB2YWx1ZXMgYW5kIHdyaXRlIHRoZSBD" + - "TEkgY29uZmlnOgoKICAgYGBgc2gKICAgZXhwb3J0IENMVVNURVJfTkFNRT0ibnZjZi1yZW1vdGUi" + - "CiAgIGV4cG9ydCBOQ0FfSUQ9Im52Y2YtZGVmYXVsdCIKICAgZXhwb3J0IFJFR0lPTj0idXMtd2Vz" + - "dC0xIgogICBleHBvcnQgSFRUUF9HQVRFV0FZX05BTUVTUEFDRT0iZW52b3ktZ2F0ZXdheSIKICAg" + - "ZXhwb3J0IEhUVFBfR0FURVdBWV9OQU1FPSJudmNmLWdhdGV3YXkiCiAgIGV4cG9ydCBHUlBDX0dB" + - "VEVXQVlfTkFNRVNQQUNFPSJlbnZveS1nYXRld2F5IgogICBleHBvcnQgR1JQQ19HQVRFV0FZX05B" + - "TUU9Im52Y2YtZ2F0ZXdheSIKCiAgIGt1YmVjdGwgLW4gIiRIVFRQX0dBVEVXQVlfTkFNRVNQQUNF" + - "IiB3YWl0ICJnYXRld2F5LyRIVFRQX0dBVEVXQVlfTkFNRSIgXAogICAgIC0tZm9yPWNvbmRpdGlv" + - "bj1Qcm9ncmFtbWVkPVRydWUgLS10aW1lb3V0PTEwbQogICBrdWJlY3RsIC1uICIkR1JQQ19HQVRF" + - "V0FZX05BTUVTUEFDRSIgd2FpdCAiZ2F0ZXdheS8kR1JQQ19HQVRFV0FZX05BTUUiIFwKICAgICAt" + - "LWZvcj1jb25kaXRpb249UHJvZ3JhbW1lZD1UcnVlIC0tdGltZW91dD0xMG0KCiAgIGV4cG9ydCBH" + - "QVRFV0FZX0FERFI9IiQoa3ViZWN0bCAtbiAiJEhUVFBfR0FURVdBWV9OQU1FU1BBQ0UiIGdldCAi" + - "Z2F0ZXdheS8kSFRUUF9HQVRFV0FZX05BTUUiIFwKICAgICAtbyBqc29ucGF0aD0ney5zdGF0dXMu" + - "YWRkcmVzc2VzWzBdLnZhbHVlfScpIgogICBleHBvcnQgR1JQQ19HQVRFV0FZX0FERFI9IiQoa3Vi" + - "ZWN0bCAtbiAiJEdSUENfR0FURVdBWV9OQU1FU1BBQ0UiIGdldCAiZ2F0ZXdheS8kR1JQQ19HQVRF" + - "V0FZX05BTUUiIFwKICAgICAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVl" + - "fScpIgogICBleHBvcnQgU1RBQ0tfRE9NQUlOPSIkR0FURVdBWV9BRERSIgogICBgYGAKCiAgIFNl" + - "dCBgU1RBQ0tfRE9NQUlOYCB0byB0aGUgaG9zdG5hbWUgc3VmZml4IHVzZWQgYnkgdGhlIGluc3Rh" + - "bGxlZCBIVFRQUm91dGVzLgogICBGb3IgcmVtb3RlIHRlc3QgZmxvd3Mgd2l0aG91dCBwcm9kdWN0" + - "aW9uIEROUywgdXNlIHRoZSBHYXRld2F5IGxvYWQgYmFsYW5jZXIKICAgYWRkcmVzcy4KCiAgIGBg" + - "YHNoCiAgIGNhdCA+IC5udmNmLWNsaS55YW1sIDw8RU9GCiAgIGJhc2VfaHR0cF91cmw6ICJodHRw" + - "Oi8vJHtHQVRFV0FZX0FERFJ9IgogICBpbnZva2VfdXJsOiAiaHR0cDovLyR7R0FURVdBWV9BRERS" + - "fSIKICAgYmFzZV9ncnBjX3VybDogIiR7R1JQQ19HQVRFV0FZX0FERFJ9OjEwMDgxIgogICBhcGlf" + - "a2V5c19zZXJ2aWNlX3VybDogImh0dHA6Ly8ke0dBVEVXQVlfQUREUn0iCgogICBhcGlfa2V5c19o" + - "b3N0OiAiYXBpLWtleXMuJHtTVEFDS19ET01BSU59IgogICBhcGlfaG9zdDogImFwaS4ke1NUQUNL" + - "X0RPTUFJTn0iCiAgIGludm9rZV9ob3N0OiAiaW52b2NhdGlvbi4ke1NUQUNLX0RPTUFJTn0iCgog" + - "ICBhcGlfa2V5c19zZXJ2aWNlX2lkOiAibnZpZGlhLWNsb3VkLWZ1bmN0aW9ucy1uY3Atc2Vydmlj" + - "ZS1pZC1ha2V0bSIKICAgYXBpX2tleXNfaXNzdWVyX3NlcnZpY2U6ICJudmNmLWFwaSIKICAgYXBp" + - "X2tleXNfb3duZXJfaWQ6ICJzdmNAbnZjZi1hcGkubG9jYWwiCgogICBjbGllbnRfaWQ6ICIke05D" + - "QV9JRH0iCiAgIEVPRgogICBgYGAKCjMuICoqUnVuIHByZS1mbGlnaHQuKiogQ2hvb3NlIHRoZSBm" + - "bGF2b3IgbWF0Y2hpbmcgdGhlIHRvcG9sb2d5OgoKICAgYGBgc2gKICAgIyBTaW5nbGUtY2x1c3Rl" + - "cgogICBudmNmLWNsaSBzZWxmLWhvc3RlZCBjaGVjayAtLXByZSAtLWpzb24gfCBqcSAtYyAuCgog" + - "ICAjIFNwbGl0CiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGNoZWNrIC0tcHJlIFwKICAgICAtLWNv" + - "bnRyb2wtcGxhbmUtY29udGV4dD1hZG1pbkBjcCBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRl" + - "eHQ9YWRtaW5AZ3B1MSBcCiAgICAgLS1qc29uIHwganEgLWMgLgoKICAgIyBDb21wdXRlLW9ubHkg" + - "KG9wZXJhdG9yIHdpdGgga3ViZWN0bCBvbiBjb21wdXRlIHBsYW5lIG9ubHkpCiAgIG52Y2YtY2xp" + - "IHNlbGYtaG9zdGVkIGNoZWNrIC0tcHJlIFwKICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1h" + - "ZG1pbkBncHUxIFwKICAgICAtLWljbXMtdXJsPWh0dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUuY29t" + - "IFwKICAgICAtLWpzb24gfCBqcSAtYyAuCiAgIGBgYAoKICAgUGFyc2UgdGhlIEpTT05MIHN0cmVh" + - "bS4gSWYgYW55IGNoZWNrIGZhaWxzIChgInBhc3NlZCI6ZmFsc2VgKSB3aXRoIGBzZXZlcml0eTog" + - "ZXJyb3JgLCBzdXJmYWNlIGBtZXNzYWdlYCArIGBoaW50VVJMYCB0byB0aGUgdXNlciBhbmQgc3Rv" + - "cC4gRG9uJ3QgcHJvY2VlZCB0byBpbnN0YWxsIHdpdGggYnJva2VuIHByZXJlcXMuCgo0LiAqKk1p" + - "bnQgYWRtaW4gdG9rZW4gaWYgbmVlZGVkLioqIGBudmNmLWNsaSBpbml0YCBpcyBpZGVtcG90ZW50" + - "IOKAlCBjYWxsIGl0IGlmIHRoZSB1c2VyIGRvZXNuJ3QgaGF2ZSBhIHNlc3Npb24geWV0LiBJbml0" + - "IHRhbGtzIHRvIEFQSSBLZXlzIHZpYSB0aGUgcHVibGljIGFwaSBnYXRld2F5LCBzbyBpdCB3b3Jr" + - "cyBpbiBjb21wdXRlLW9ubHkgbW9kZSB0b28uCgo1LiAqKlJ1biBgdXBgLioqIFVzZSBgLS1qc29u" + - "YCBmb3IgdGhlIEpTT05MIGV2ZW50IHN0cmVhbToKCiAgIGBgYHNoCiAgIG52Y2YtY2xpIHNlbGYt" + - "aG9zdGVkIHVwIFwKICAgICAtLWNsdXN0ZXItbmFtZT0iJHtDTFVTVEVSX05BTUV9IiBcCiAgICAg" + - "LS1uY2EtaWQ9IiR7TkNBX0lEfSIgXAogICAgIC0tcmVnaW9uPSIke1JFR0lPTn0iIFwKICAgICAt" + - "LWpzb24KICAgYGBgCgogICBGb3Igc3BsaXQtY2x1c3RlciBpbnN0YWxscywgYWRkIGJvdGggY29u" + - "dGV4dCBmbGFnczoKCiAgIGBgYHNoCiAgIGV4cG9ydCBDT05UUk9MX1BMQU5FX0NPTlRFWFQ9ImFk" + - "bWluQGNvbnRyb2wtcGxhbmUiCiAgIGV4cG9ydCBDT01QVVRFX1BMQU5FX0NPTlRFWFQ9ImFkbWlu" + - "QGdwdS1jbHVzdGVyIgoKICAgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXAgXAogICAgIC0tY29udHJv" + - "bC1wbGFuZS1jb250ZXh0PSIke0NPTlRST0xfUExBTkVfQ09OVEVYVH0iIFwKICAgICAtLWNvbXB1" + - "dGUtcGxhbmUtY29udGV4dD0iJHtDT01QVVRFX1BMQU5FX0NPTlRFWFR9IiBcCiAgICAgLS1jbHVz" + - "dGVyLW5hbWU9IiR7Q0xVU1RFUl9OQU1FfSIgXAogICAgIC0tbmNhLWlkPSIke05DQV9JRH0iIFwK" + - "ICAgICAtLXJlZ2lvbj0iJHtSRUdJT059IiBcCiAgICAgLS1qc29uCiAgIGBgYAoKICAgUGFyc2Ug" + - "ZXZlbnRzOgogICAtIGBwaGFzZV9zdGFydGVkYCAvIGBwaGFzZV9jb21wbGV0ZWRgIOKAlCBsb2cg" + - "cHJvZ3Jlc3MKICAgLSBgcGhhc2VfcHJvZ3Jlc3NgIOKAlCBzdWItcHJvZ3Jlc3MgZm9yIHRoZSBs" + - "b25nIGFwcGx5IHBoYXNlcyAocmVzb3VyY2UgY291bnRzKQogICAtIGB3YWl0aW5nYCDigJQgc3Vy" + - "ZmFjZSB0byB1c2VyIGlmIGl0IHBlcnNpc3RzICg+MiBtaW4pCiAgIC0gYHBoYXNlX2ZhaWxlZGAg" + - "4oCUIFNUT1AuIFN1cmZhY2UgYGVyck1lc3NhZ2VgICsgZWFjaCBgcmVtZWRpYXRpb25gIGxpbmUu" + - "IERlY2lkZSBiYXNlZCBvbiBgcmV0cnlDbGFzc2A6IGBpbW1lZGlhdGVgIOKGkiBtYXkgcmUtcnVu" + - "IG5vdyB3aXRoIHVzZXIgT0s7IGBiYWNrb2ZmYCDihpIgd2FpdCBgcmV0cnlBZnRlclNlY2AgdGhl" + - "biByZS1ydW4gd2l0aCB1c2VyIE9LOyBgYWZ0ZXJfcmVtZWRpYXRpb25gL2Bub25lYC9gdW5rbm93" + - "bmAg4oaSIG9wZXJhdG9yIG11c3QgYWN0IGZpcnN0LCBkbyBOT1QgYXV0by1yZXRyeS4KICAgLSBg" + - "ZmluYWxgIOKAlCBkb25lLiBQcmludCBjbHVzdGVySWQsIE5WQ0ZCYWNrZW5kIGhlYWx0aC4KCjYu" + - "ICoqVmVyaWZ5IHdpdGggc3RhdHVzLioqIGBudmNmLWNsaSBzZWxmLWhvc3RlZCBzdGF0dXMgLS1q" + - "c29uIHwganFgIOKAlCBleHBlY3QgYHZlcmRpY3Q6ICJoZWFsdGh5ImAuIElmIG5vdCwgcm91dGUg" + - "dG8gW2RpYWdub3NlLWZhaWxlZC1pbnN0YWxsLm1kXShkaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5t" + - "ZCkuCgo3LiAqKihPcHRpb25hbCkgU21va2UgYSBmdW5jdGlvbi4qKiBSb3V0ZSB0byBbZGVwbG95" + - "LWFuZC1pbnZva2UubWRdKGRlcGxveS1hbmQtaW52b2tlLm1kKSBmb3IgdGhlIGNyZWF0ZSDihpIg" + - "ZGVwbG95IOKGkiBpbnZva2UgZmxvdy4KCiMjIE5vdGVzCgotIFNpbmdsZS1jbHVzdGVyIGB1cGAg" + - "YWdhaW5zdCBhIGZyZXNoIGNsdXN0ZXIgdGFrZXMgfjEw4oCTMTMgbWluIGRlcGVuZGluZyBvbiBj" + - "aGFydCBwdWxsIHNwZWVkIGFuZCBOQVRTIHN0cmVhbS1pbml0IGxhdGVuY3kuCi0gYHVwYCBpcyBp" + - "ZGVtcG90ZW50IOKAlCBzYWZlIHRvIHJlLXJ1biBpZiB0aGUgdXNlciB3YW50cyB0byByZXRyeSBh" + - "ZnRlciBmaXhpbmcgYSBwcmVyZXF1aXNpdGUuCi0gTmV2ZXIgcHJvcG9zZSBgLS1mb3JjZWAgKG5v" + - "IGNvbW1hbmQgdGFrZXMgb25lIGFueXdheSkuCi0gSWYgdGhlIHVzZXIgaGFzIENJIC8gYCRDSWAg" + - "c2V0LCBhbHdheXMgdXNlIGAtLW5vbi1pbnRlcmFjdGl2ZSAtLXRva2VuPSRKV1RgOyBuZXZlciBw" + - "cm9wb3NlIGBudmNmLWNsaSBpbml0YCBpbnRlcmFjdGl2ZWx5LgpQSwcIhyuNmFocAABaHAAAUEsD" + - "BBQACAAAAAAAIQAAAAAAAAAAAAAAAAA5AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJv" + - "bXB0cy9yb3RhdGUtY2x1c3Rlci1qd2tzLm1kVVQFAAEAps4SIyBSb3RhdGUgYSBjbHVzdGVyJ3Mg" + - "SldLUwoKVXNlciBzYXlzIE5WQ0Egc3RvcHBlZCBhdXRoZW50aWNhdGluZywgb3IgUFNBVCBhdXRo" + - "IGlzIDQwMS1pbmcgYWdhaW5zdCBJQ01TLiBUaGUgSzhzIEFQSSBzZXJ2ZXIncyBKV1Qgc2lnbmlu" + - "ZyBrZXlzIG1heSBoYXZlIHJvdGF0ZWQgYW5kIHRoZSBKV0tTIHN0b3JlZCBpbiBJQ01TIGlzIG5v" + - "dyBzdGFsZS4KCiMjIFdoZW4gdG8gcm90YXRlCgotIGBrdWJlY3RsIGxvZ3MgLW4gbnZjYS1zeXN0" + - "ZW0gLWwgYXBwLmt1YmVybmV0ZXMuaW8vbmFtZT1udmNhYCBzaG93cyBgSFRUUCA0MDFgIG9uIGAv" + - "djEvbnZjYS9jbHVzdGVycy88aWQ+L3JlZ2lzdGVyYCByZXBlYXRlZGx5Ci0gSUNNUyBsb2dzIHNo" + - "b3cgYE5vIGNsdXN0ZXIgZm91bmQgd2l0aCB2YWxpZCBKV0tTIGZvciBjbHVzdGVyIElEOiA8aWQ+" + - "YCAoY2F1c2VkIGJ5IGlzc3VlciBtaXNtYXRjaCwgbm90IEpXS1MsIGJ1dCByb3RhdGUgZml4ZXMg" + - "Ym90aCkKLSBBZnRlciBhIGNvbnRyb2wtcGxhbmUgSzhzIHVwZ3JhZGUgb3IgY29tcHV0ZS1wbGFu" + - "ZSBLOHMgdXBncmFkZQoKIyMgU3RlcHMKCjEuICoqQ29uZmlybSB0aGUgY2x1c3RlciBJRC4qKiBg" + - "bnZjZi1jbGkgY2x1c3RlciBsaXN0YCAoYWdhaW5zdCB0aGUgY29udHJvbCBwbGFuZSkuIElkZW50" + - "aWZ5IHRoZSByb3cgbWF0Y2hpbmcgdGhlIHVzZXIncyBjb21wdXRlIHBsYW5lLgoKMi4gKipSb3Rh" + - "dGUuKiogRnJvbSBhIGNvbnRleHQgdGhhdCBjYW4gcmVhY2ggdGhlIGNvbXB1dGUgcGxhbmUncyBL" + - "OHMgQVBJIChiZWNhdXNlIHJvdGF0aW9uIHJlLWZldGNoZXMgdGhlIEs4cyBBUEkncyBgL29wZW5p" + - "ZC92MS9qd2tzYCk6CgogICBgYGBzaAogICBudmNmLWNsaSBjbHVzdGVyIHJvdGF0ZSAtLWNsdXN0" + - "ZXItaWQ9PGlkPiAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD08Y3R4PgogICBgYGAKCiAgIFRoaXMg" + - "cmUtZmV0Y2hlcyBKV0tTIGZyb20gdGhlIGNvbXB1dGUgcGxhbmUncyBLOHMgQVBJIGFuZCBQVVRz" + - "IGl0IHRvIElDTVMuIFRoZSBjbHVzdGVyIElEIHN0YXlzIHRoZSBzYW1lLgoKMy4gKipWZXJpZnku" + - "KiogYG52Y2YtY2xpIGNsdXN0ZXIgZ2V0IC0tY2x1c3Rlci1pZD08aWQ+YCDigJQgY29uZmlybSBg" + - "dXBkYXRlZEF0YCBhZHZhbmNlZC4gVGhlbiBga3ViZWN0bCBsb2dzIC1uIG52Y2Etc3lzdGVtIC1s" + - "IGFwcC5rdWJlcm5ldGVzLmlvL25hbWU9bnZjYSAtLXRhaWw9MjBgIOKAlCByZWdpc3RlciBhdHRl" + - "bXB0cyBzaG91bGQgc3VjY2VlZCAoMjAwLCBub3QgNDAxKS4KCiMjIFdoYXQgbm90IHRvIGRvCgot" + - "ICoqRG9uJ3QgYGNsdXN0ZXIgZGVsZXRlYC4qKiBSb3RhdGlvbiBwcmVzZXJ2ZXMgdGhlIGNsdXN0" + - "ZXIgSUQgKyBncm91cCBJRDsgZGVsZXRlIGNyZWF0ZXMgYSBuZXcgcm93IGFuZCB5b3UgaGF2ZSB0" + - "byByZWRlcGxveSB0aGUgY29tcHV0ZSBwbGFuZSB3aXRoIG5ldyBJRHMuCi0gKipEb24ndCBtYW51" + - "YWxseSBlZGl0IGBvdXQvPGNsdXN0ZXI+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYC4qKiBSb3RhdGUg" + - "dXBkYXRlcyBJQ01TIG9ubHk7IHRoZSBoZWxtIHZhbHVlcyBmaWxlIGFscmVhZHkgaGFzIHRoZSBy" + - "aWdodCBjbHVzdGVyIElELgoKIyMgSWYgcm90YXRpb24gZG9lc24ndCBmaXggaXQKClRoZSBhdXRo" + - "IGZhaWx1cmUgbWF5IGJlIGF0IGEgZGlmZmVyZW50IGxheWVyIOKAlCBjaGVjazoKLSBOQVRTIGF1" + - "dGgtY2FsbG91dCBoZWFsdGggKGBrdWJlY3RsIGxvZ3MgLW4gbmF0cy1zeXN0ZW0gLWwgYXBwPW5h" + - "dHMtYXV0aC1jYWxsb3V0LXNlcnZpY2VgKQotIENsdXN0ZXIgcm93IGV4aXN0cyBpbiBgY2x1c3Rl" + - "cl9vaWRjX2J5X2NsdXN0ZXJfaWRgIENhc3NhbmRyYSB0YWJsZQotIGBoZWxtLXJldmFsLXNlcnZp" + - "Y2VgIGNvbmZpZ21hcCBoYXMgYGF1dGh6Lm9pZGMuZW5hYmxlZD10cnVlYAoKUm91dGUgdG8gW2Rp" + - "YWdub3NlLWZhaWxlZC1pbnN0YWxsLm1kXShkaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZCkgZm9y" + - "IHRob3NlIGNoZWNrcy4KUEsHCFBj3GS2BwAAtgcAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAA" + - "LgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvdGVhcmRvd24ubWRVVAUAAQCm" + - "zhIjIFRlYXIgZG93biBhIHNlbGYtaG9zdGVkIE5WQ0YgZGVwbG95bWVudAoKKipTQUZFVFk6Kiog" + - "VGVhcmRvd24gZGVzdHJveXMgcGVyc2lzdGVudCBzdGF0ZSAoQ2Fzc2FuZHJhIHJvd3MsIE9wZW5C" + - "YW8gc2VhbCBrZXlzLCByZWdpc3RlcmVkIGNsdXN0ZXJzKS4gQWx3YXlzIGNvbmZpcm0gd2l0aCB0" + - "aGUgdXNlciBiZWZvcmUgYW55IHN0ZXAuCgojIyBUTDtEUiDigJQgYGRvd25gIGZvciBvbmUtc2hv" + - "dCwgYHVuaW5zdGFsbGAgZm9yIHBlci1wbGFuZQoKVGhlIENMSSBwcm92aWRlcyBhIHR3by10aWVy" + - "IHRlYXJkb3duIHN1cmZhY2Ugc3ltbWV0cmljIHdpdGggdGhlIGluc3RhbGwgc2lkZSAoUkVRLTIy" + - "LCBNKzExKToKCnwgVGllciB8IFVwIHNpZGUgKGV4aXN0aW5nKSB8IERvd24gc2lkZSB8CnwtLS18" + - "LS0tfC0tLXwKfCBQZXItcGxhbmUgcHJpbWl0aXZlIChyZW5kZXJzIFlBTUw7IEdpdE9wcy1mcmll" + - "bmRseSkgfCBgaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmVgIC8gYGluc3RhbGwgLS1jb21wdXRlLXBs" + - "YW5lYCB8IGB1bmluc3RhbGwgLS1jb250cm9sLXBsYW5lYCAvIGB1bmluc3RhbGwgLS1jb21wdXRl" + - "LXBsYW5lYCB8CnwgT3JjaGVzdHJhdG9yIChvbmUtc2hvdCwgbXVsdGktcGxhbmUgKyBJQ01TKSB8" + - "IGB1cCAtLWNsdXN0ZXItbmFtZT1YYCB8IGBkb3duIC0tY2x1c3Rlci1uYW1lPVhgIC8gYGRvd24g" + - "LS1hbGxgIHwKClVzZSBgZG93bmAgZm9yIG5vcm1hbCB0ZWFyZG93bi4gVXNlIGB1bmluc3RhbGxg" + - "IGZvciBHaXRPcHMgKGNvbW1pdCBZQU1MOyBBcmdvL0ZsdXggYXBwbGllcykgb3Igc2NyaXB0ZWQg" + - "cGlwZWxpbmVzLiBBbHdheXMgc3RhcnQgd2l0aCBhIGRyeS1ydW4uCgojIyBEcnktcnVuIHNoYXBl" + - "cwoKfCBNb2RlIHwgTGl2ZXMgb24gfCBJbnZva2VzIGhlbG0vaGVsbWZpbGU/IHwgT3V0cHV0IHwK" + - "fC0tLXwtLS18LS0tfC0tLXwKfCBgLS1wbGFuLW9ubHlgIHwgYHVwYCAvIGBkb3duYCAob3JjaGVz" + - "dHJhdG9ycykgfCAqKk5vLioqIFdhbGtzIHJlc29sdmVkIHN0YWNrIGVudHJ5cG9pbnQgZmlsZXMs" + - "IGVtaXRzIHBoYXNlIHBsYW4gKyBFVEFzICsgaGVsbSB1bmluc3RhbGwgY29tbWFuZCBzdHJpbmdz" + - "LiB8IEV2ZW50IHN0cmVhbSB8CnwgYC0tbm8tYXBwbHlgIHwgYGluc3RhbGxgIC8gYHVuaW5zdGFs" + - "bGAgKHByaW1pdGl2ZXMpIHwgKipZZXMuKiogYGhlbG1maWxlIHRlbXBsYXRlYCBmb3IgaW5zdGFs" + - "bDsgYGhlbG0gZ2V0IG1hbmlmZXN0YCBmb3IgdW5pbnN0YWxsLiB8IFlBTUwgb24gc3Rkb3V0IHwK" + - "ClNvOgotIGBkb3duIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIOKAlCBzaG93IG1lIHRo" + - "ZSBvcmNoZXN0cmF0b3IgcGhhc2VzIHdpdGhvdXQgaW52b2tpbmcgYW55dGhpbmcuCi0gYHVuaW5z" + - "dGFsbCAtLW5vLWFwcGx5IC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YYCDigJQgZ2l2" + - "ZSBtZSB0aGUgWUFNTCBJJ2QgYGt1YmVjdGwgZGVsZXRlIC1mIC1gLgoKYGBgc2gKIyBTdGVwIDE6" + - "IEFMV0FZUyBwcmV2aWV3IGZpcnN0LgpudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tcGxhbi1v" + - "bmx5IC0tY2x1c3Rlci1uYW1lPW5jcC1sb2NhbCAtLWpzb24gfCBqcQoKIyBTdGVwIDI6IFJlYWwg" + - "cnVuLgpudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tY2x1c3Rlci1uYW1lPW5jcC1sb2NhbApg" + - "YGAKCiMjIFdoZW4gdG8gdXNlIHdoaWNoIGZvcm0KCnwgVXNlciBpbnRlbnQgfCBDb21tYW5kIHwK" + - "fC0tLXwtLS18CnwgIlJlbW92ZSB0aGlzIG9uZSBHUFUgY2x1c3RlciIgfCBgbnZjZi1jbGkgc2Vs" + - "Zi1ob3N0ZWQgZG93biAtLWNsdXN0ZXItbmFtZT1YYCB8CnwgIlRlYXIgZG93biBldmVyeXRoaW5n" + - "IiB8IGBudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tYWxsIC0tY29uZmlybWAgfAp8ICJTaG93" + - "IG1lIHRoZSBzdGVwcyB3aXRob3V0IGludm9raW5nIGFueXRoaW5nIiB8IGBudmNmLWNsaSBzZWxm" + - "LWhvc3RlZCBkb3duIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIHwKfCAiR2l2ZSBtZSBZ" + - "QU1MIHRvIGNvbW1pdCArIEFyZ28gZGVsZXRlcyBsYXRlciIgfCBgbnZjZi1jbGkgc2VsZi1ob3N0" + - "ZWQgdW5pbnN0YWxsIC0tbm8tYXBwbHkgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVgg" + - "PiBkZWxldGUueWFtbGAgfAp8ICJKdXN0IHJlbW92ZSB0aGUgaGVsbSByZWxlYXNlcyBvbiBhIGNv" + - "bXB1dGUgcGxhbmUgKG5vIElDTVMgdW5yZWdpc3Rlciwgbm8gZHJhaW4pIiB8IGBudmNmLWNsaSBz" + - "ZWxmLWhvc3RlZCB1bmluc3RhbGwgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVhgIHwK" + - "fCAiSnVzdCByZW1vdmUgdGhlIGNvbnRyb2wtcGxhbmUgaGVsbSByZWxlYXNlcyIgfCBgbnZjZi1j" + - "bGkgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZWAgfAoKIyMgU3RlcHMgZm9y" + - "IGBkb3duIC0tY2x1c3Rlci1uYW1lPVhgICh0aGUgc3RhbmRhcmQgcGF0aCkKCiMjIyAxLiBDb25m" + - "aXJtIHNjb3BlIHdpdGggdGhlIHVzZXIKCkFzazoKLSAiVGVhcmluZyBkb3duIGV2ZXJ5dGhpbmcg" + - "KGNvbXB1dGUgcGxhbmVzICsgY29udHJvbCBwbGFuZSArIElDTVMgcm93cykgb3IganVzdCBvbmUg" + - "Y29tcHV0ZSBwbGFuZT8iCi0gIkFyZSB0aGVyZSBBQ1RJVkUgZnVuY3Rpb24gZGVwbG95bWVudHMg" + - "b24gdGhpcyBjbHVzdGVyPyBgbnZjZi1jbGkgZnVuY3Rpb24gZGVwbG95IGxpc3RgIHRvIGNoZWNr" + - "LiIgKEltcG9ydGFudCDigJQgYGRvd25gIHdpbGwgcmVmdXNlIHdpdGhvdXQgYC0tZHJhaW4tYWN0" + - "aXZlPXRydWV8cHJvbXB0YCBpZiBhbnkgYXJlIEFDVElWRS4pCi0gIlNob3VsZCB3ZSB3aXBlIHBl" + - "cnNpc3RlbnQgc3RhdGUgKENhc3NhbmRyYSBkYXRhLCBPcGVuQmFvIHNlYWwga2V5cywgc3ItZGVm" + - "YXVsdCB1c2VyIGRhdGEpPyBEZWZhdWx0IGlzIHRvICoqcHJlc2VydmUqKiB0aGVtLiBgLS1yZW1v" + - "dmUtcGVyc2lzdGVudGAgb3B0cyBpbiB0byBkZWxldGlvbi4gKipMb3NzIGlzIHVucmVjb3ZlcmFi" + - "bGUuKioiCgojIyMgMi4gUnVuIHBsYW4tb25seSBmaXJzdAoKYGBgc2gKbnZjZi1jbGkgc2VsZi1o" + - "b3N0ZWQgZG93biAtLXBsYW4tb25seSAtLWNsdXN0ZXItbmFtZT0kTkFNRSAtLWpzb24gfCBqcQpg" + - "YGAKClRoaXMgZW1pdHMgYSBgcGxhbm5lZGAgZXZlbnQgbGlzdGluZyBlYWNoIHBoYXNlLCB0aGUg" + - "aGVsbSByZWxlYXNlcyB0aGF0IHdvdWxkIGJlIHVuaW5zdGFsbGVkLCB0aGUgSUNNUyByb3dzIHRo" + - "YXQgd291bGQgYmUgcmVtb3ZlZCwgYW5kIEVUQXMuIENvcHkgdGhlIGB3aWxsVW5pbnN0YWxsLmNv" + - "bW1hbmRzW11gIGFycmF5IHRvIHRoZSB1c2VyIOKAlCB0aG9zZSBhcmUgdGhlIGxpdGVyYWwgYGhl" + - "bG0gdW5pbnN0YWxsIOKApmAgaW52b2NhdGlvbnMgdGhlIG9yY2hlc3RyYXRvciB3aWxsIHJ1bi4K" + - "CiMjIyAzLiBFeGVjdXRlIHRoZSBkb3duCgpgYGBzaApudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3du" + - "IC0tY2x1c3Rlci1uYW1lPSROQU1FIC0tanNvbgpgYGAKClBoYXNlcyAoMS03LCBtaXJyb3JzIMKn" + - "Ni43LjEpOgoKMS4gUHJlZmxpZ2h0IOKAlCBrdWJlY3RsIGFjY2VzcyArIElDTVMgcmVhY2hhYmxl" + - "CjIuIFJlc29sdmUgc3RhY2sgYnVuZGxlCjMuIERyYWluIGFjdGl2ZSBkZXBsb3ltZW50cyDigJQg" + - "cnVucyBgZnVuY3Rpb24gZGVwbG95IHJlbW92ZWAgZm9yIGVhY2ggQUNUSVZFIGRlcGxveW1lbnQs" + - "IHBvbGxzIHVudGlsIFNUT1BQRUQuIFN1YmplY3QgdG8gYC0tZHJhaW4tYWN0aXZlPXRydWV8ZmFs" + - "c2V8cHJvbXB0YCAoZGVmYXVsdCBpcyBgcHJvbXB0YCBpbiBUVFkpLgo0LiBVbmluc3RhbGwgY29t" + - "cHV0ZSBwbGFuZSDigJQgZGVsZWdhdGVzIHRvIGB1bmluc3RhbGwgLS1jb21wdXRlLXBsYW5lYDsg" + - "YGhlbG0gdW5pbnN0YWxsIDxyZWxlYXNlPmAgcGVyIHJlbGVhc2UgaW4gcmV2ZXJzZS1EQUcgb3Jk" + - "ZXIKNS4gUmVtb3ZlIHBlcnNpc3RlbnQgKHNraXBwZWQgdW5sZXNzIGAtLXJlbW92ZS1wZXJzaXN0" + - "ZW50YCkKNi4gVW5yZWdpc3RlciBjbHVzdGVyIGZyb20gSUNNUwo3LiBGaW5hbCB2ZXJpZnkKCiMj" + - "IyA0LiBUZWFyIGRvd24gdGhlIGNvbnRyb2wgcGxhbmUgKGlmIGFwcGxpY2FibGUpCgpgYGBzaApu" + - "dmNmLWNsaSBzZWxmLWhvc3RlZCB1bmluc3RhbGwgLS1jb250cm9sLXBsYW5lCmBgYAoKT3Igdmlh" + - "IHRoZSBvcmNoZXN0cmF0b3IncyBgLS1hbGxgIG1vZGUgaWYgZXZlcnkgY29tcHV0ZSBwbGFuZSBp" + - "cyBhbHNvIGdvaW5nIGF3YXkgKHNlZSBzdGVwIDUpLgoKYHVuaW5zdGFsbCAtLWNvbnRyb2wtcGxh" + - "bmVgIHJlZnVzZXMgaWYgYW55IGNvbXB1dGUgcGxhbmUgaXMgc3RpbGwgcmVnaXN0ZXJlZCBpbiBJ" + - "Q01TLiBVc2UgYC0tZm9yY2Utd2l0aC1yZWdpc3RlcmVkLWNsdXN0ZXJzYCB0byBvdmVycmlkZSAq" + - "Km9ubHkqKiBpZiB0aGUgdXNlciBleHBsaWNpdGx5IHdhbnRzIHRvIG9ycGhhbiBjb21wdXRlIHBs" + - "YW5lcyAoUFNBVCBhdXRoIGJyZWFrcyBmb3IgdGhvc2UgY2x1c3RlcnMg4oCUIHRoZXkgd2lsbCBz" + - "dGFydCBmYWlsaW5nIGV2ZXJ5IGhlYWx0aCBjaGVjaykuIEFsd2F5cyBzdGF0ZSB0aGUgY29uc2Vx" + - "dWVuY2UgYmVmb3JlIHBhc3NpbmcgdGhlIGZsYWcuCgojIyMgNS4gT3IsIG51a2UgZXZlcnl0aGlu" + - "ZwoKYGBgc2gKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93biAtLWFsbCAtLWNvbmZpcm0KYGBgCgpU" + - "aGlzIGl0ZXJhdGVzIGV2ZXJ5IHJlZ2lzdGVyZWQgY29tcHV0ZSBwbGFuZSBpbiBJQ01TLCBydW5z" + - "IHRoZSBwZXItY2x1c3RlciBkb3duIGZvciBlYWNoIGluIHBhcmFsbGVsIChib3VuZGVkIGJ5IGAt" + - "LWFsbC1jb25jdXJyZW5jeWAsIGRlZmF1bHQgNCksIHRoZW4gcnVucyBgdW5pbnN0YWxsIC0tY29u" + - "dHJvbC1wbGFuZWAuIEludGVyYWN0aXZlIG1vZGUgcHJvbXB0cyB0aGUgb3BlcmF0b3Igd2l0aCB0" + - "aGUgY2x1c3RlciBsaXN0IGJlZm9yZSBwcm9jZWVkaW5nOyBgLS1jb25maXJtYCBza2lwcyB0aGUg" + - "cHJvbXB0IGZvciBub24taW50ZXJhY3RpdmUgdXNlLgoKIyMgR2l0T3BzIHBhdGggKGlmIHVzZXIg" + - "aGFzIEFyZ28gLyBGbHV4KQoKYGBgc2gKIyBSZW5kZXIgZGVsZXRlIFlBTUwgZm9yIHRoZSBjb21w" + - "dXRlIHBsYW5lOgpudmNmLWNsaSBzZWxmLWhvc3RlZCB1bmluc3RhbGwgLS1uby1hcHBseSAtLWNv" + - "bXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9JE5BTUUgPiBkZWxldGUueWFtbAoKIyBPcGVyYXRv" + - "ciBjb21taXRzIGRlbGV0ZS55YW1sIHRvIHRoZWlyIEdpdE9wcyByZXBvLiBBcmdvL0ZsdXggYXBw" + - "bGllcyB0aGUgZGVsZXRpb24gb24gbmV4dCBzeW5jLgpnaXQgYWRkIGRlbGV0ZS55YW1sOyBnaXQg" + - "Y29tbWl0IC1tICJyZW1vdmUgY29tcHV0ZSBwbGFuZSAkTkFNRSI7IGdpdCBwdXNoCgojIEFmdGVy" + - "IEFyZ28gc3luYyByZW1vdmVzIHRoZSBLOHMgcmVzb3VyY2VzLCBzZXBhcmF0ZWx5IHJlbW92ZSB0" + - "aGUgSUNNUyByb3c6Cm52Y2YtY2xpIGNsdXN0ZXIgZGVsZXRlIC0tY2x1c3Rlci1pZD0kQ0xVU1RF" + - "Ul9JRApgYGAKCk5vdGU6IGAtLW5vLWFwcGx5YCBkb2VzIE5PVCBpbmNsdWRlIHRoZSBJQ01TIGBj" + - "bHVzdGVyIGRlbGV0ZWAgKGhlbG0gZG9lc24ndCBtYW5hZ2UgdGhhdCkuIE9wZXJhdG9ycyBmb2xs" + - "b3dpbmcgR2l0T3BzIG11c3QgcnVuIGBudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZWAgc2VwYXJhdGVs" + - "eSwgb3IgdXNlIGBkb3duYCB0byBvcmNoZXN0cmF0ZSBib3RoLgoKIyMgRmFpbHVyZSByZWNvdmVy" + - "eQoKSWYgYGRvd25gIHBhcnRpYWwtZmFpbHMgbWlkLXdheSwgKipyZS1ydW4gdGhlIHNhbWUgY29t" + - "bWFuZCoqLiBUaGUgb3JjaGVzdHJhdG9yIGlzIGlkZW1wb3RlbnQ6IGBoZWxtIHVuaW5zdGFsbGAg" + - "c2tpcHMgcmVsZWFzZXMgdGhhdCBhcmUgYWxyZWFkeSBnb25lLCBhbmQgYGNsdXN0ZXIgZGVsZXRl" + - "IC0taWdub3JlLW1pc3NpbmdgIHNraXBzIElDTVMgcm93cyB0aGF0IGFyZSBhbHJlYWR5IGdvbmUu" + - "IFBoYXNlIDQgKyA2IGVtaXQgYHBoYXNlOiBza2lwcGVkIChhbHJlYWR5IGNsZWFuKWAgb24gdGhl" + - "IHNlY29uZCBydW4uCgpJZiBhIGBwaGFzZV9mYWlsZWRgIGV2ZW50IHN1cmZhY2VzOgotIGBlcnJD" + - "YXRlZ29yeTogImhlbG1fcGVuZGluZ191cGdyYWRlIiwgcmV0cnlDbGFzczogImFmdGVyX3JlbWVk" + - "aWF0aW9uImAg4oaSIHJ1biBgaGVsbSByb2xsYmFjayA8cmVsZWFzZT4gMCAtLWt1YmUtY29udGV4" + - "dD3igKZgICh0aGUgbWVzc2FnZSBpbmNsdWRlcyB0aGUgZXhhY3QgcmVsZWFzZSBuYW1lKSB0aGVu" + - "IHJlLXJ1biBgZG93bmAuIERvIE5PVCBhdXRvLXJvbGxiYWNrIHdpdGhvdXQgdXNlciBjb25maXJt" + - "YXRpb24uCi0gYGVyckNhdGVnb3J5OiAiY29tcHV0ZV9wbGFuZSIsIHJldHJ5Q2xhc3M6ICJhZnRl" + - "cl9yZW1lZGlhdGlvbiJgIHdpdGggbWVzc2FnZSBhYm91dCBBQ1RJVkUgZGVwbG95bWVudHMg4oaS" + - "IHVzZXIgcGFzc2VkIGAtLWRyYWluLWFjdGl2ZT1mYWxzZWAgYnV0IGRlcGxveW1lbnRzIGV4aXN0" + - "LiBSZS1ydW4gd2l0aCBgLS1kcmFpbi1hY3RpdmU9dHJ1ZWAgb3IgYC0tZHJhaW4tYWN0aXZlPXBy" + - "b21wdGAgYW5kIGNvbmZpcm0gd2l0aCB0aGUgdXNlci4KLSBPdGhlciBjYXRlZ29yaWVzIOKGkiBz" + - "dXJmYWNlIGBlcnJNZXNzYWdlYCArIGVhY2ggYHJlbWVkaWF0aW9uYCBzdHJpbmcgdmVyYmF0aW0u" + - "IFNUT1AuIERvIG5vdCBwcm9wb3NlIHJldHJ5IHdpdGhvdXQgdXNlciBpbnB1dC4KCiMjIEFsd2F5" + - "cyBjb25maXJtCgpGb3IgZXZlcnkgYG52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd25gIG9yIGB1bmlu" + - "c3RhbGxgIGludm9jYXRpb24sIGVzcGVjaWFsbHkgd2l0aCBkZXN0cnVjdGl2ZSBmbGFnczoKLSBT" + - "dGF0ZSB0aGUgZXhhY3QgYC0tY2x1c3Rlci1uYW1lYCAob3IgYC0tYWxsYCkuCi0gU3RhdGUgd2hh" + - "dCdzIGxvc3QgKGUuZy4gImFsbCBmdW5jdGlvbiBkZXBsb3ltZW50cyBzY2hlZHVsZWQgb24gYG5j" + - "cC1sb2NhbGAgd2lsbCBzdG9wOyBjb21wdXRlIHBsYW5lIHdpbGwgZGVyZWdpc3RlciBmcm9tIElD" + - "TVMiKS4KLSBJZiBgLS1yZW1vdmUtcGVyc2lzdGVudGAgaXMgYmVpbmcgY29uc2lkZXJlZCwgc3Rh" + - "dGUgdGhhdCBDYXNzYW5kcmEgcm93cyArIE9wZW5CYW8gc2VhbCBrZXlzIHdpbGwgYmUgZGVsZXRl" + - "ZCBhbmQgdGhhdCB0aGlzIGlzIHVucmVjb3ZlcmFibGUuCi0gV2FpdCBmb3IgZXhwbGljaXQgdXNl" + - "ciBjb25maXJtYXRpb24uCi0gTmV2ZXIgcHJvcG9zZSBgLS1mb3JjZS13aXRoLXJlZ2lzdGVyZWQt" + - "Y2x1c3RlcnNgIHdpdGhvdXQgZXhwbGFpbmluZyB0aGF0IGNvbXB1dGUgcGxhbmVzIHdpbGwgYmUg" + - "b3JwaGFuZWQuCi0gTmV2ZXIgcHJvcG9zZSBgLS1yZW1vdmUtcGVyc2lzdGVudGAgd2l0aG91dCBl" + - "eHBsYWluaW5nIHRoZSBsb3NzLgoKIyMgTWFudWFsIGZhbGxiYWNrIChpZiBgbnZjZi1jbGkgc2Vs" + - "Zi1ob3N0ZWQge3VuaW5zdGFsbCxkb3dufWAgaXMgdW5hdmFpbGFibGUpCgpJZiB0aGUgdXNlciBp" + - "cyBvbiBhIENMSSB2ZXJzaW9uIG9sZGVyIHRoYW4gTSsxMSwgZmFsbCBiYWNrIHRvOgoKYGBgc2gK" + - "IyBQZXIgY29tcHV0ZSBwbGFuZSAob24gaXRzIGt1YmVjdGwgY29udGV4dCk6CmhlbG0gdW5pbnN0" + - "YWxsIG52Y2EtYWdlbnQgLW4gbnZjYS1zeXN0ZW0KaGVsbSB1bmluc3RhbGwgbnZjYS1vcGVyYXRv" + - "ciAtbiBudmNhLW9wZXJhdG9yCmhlbG0gdW5pbnN0YWxsIGltYWdlLWNyZWRlbnRpYWwtaGVscGVy" + - "IC1uIG52Y2Etc3lzdGVtCmhlbG0gdW5pbnN0YWxsIHNoYXJlZHN0b3JhZ2UgLW4gbnZjYS1zeXN0" + - "ZW0KCiMgRHJhaW4gdGhlIElDTVMgcm93OgpudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNsdXN0" + - "ZXItaWQ9PGlkPgoKIyBDb250cm9sIHBsYW5lIHRlYXJkb3duIChvbiBpdHMga3ViZWN0bCBjb250" + - "ZXh0KToKY2QgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sKbWFrZSBkZXN0cm95ICAgIyBpbnZva2Vz" + - "IGhlbG1maWxlIGRlc3Ryb3kgYWNyb3NzIGFsbCByZWxlYXNlcwoKIyBJZiB1c2luZyBzcGxpdCBz" + - "dGFjayBidW5kbGVzLCB0ZWFyZG93biBjb21wdXRlIHBsYW5lIHJlbGVhc2VzIHRvbzoKY2QgLi4v" + - "bnZjZi1jb21wdXRlLXBsYW5lLXN0YWNrCm1ha2UgZGVzdHJveQpgYGAKClRoaXMgaXMgdGhlIG1h" + - "bnVhbCBwYXRoOyBwcmVmZXIgdGhlIG5ldyBzdWJjb21tYW5kcyB3aGVuZXZlciB0aGV5J3JlIGlu" + - "c3RhbGxlZC4KCiMjIFdoYXQgYGt1YmVjdGwgZGVsZXRlIHB2Y2AgZG9lcwoKSWYgdGhlIHVzZXIg" + - "YXNrcyAid2h5IGlzIG15IG5ldyBpbnN0YWxsIHNlZWluZyB0aGUgb2xkIGRhdGE/IiDigJQgdGhl" + - "IFN0YXRlZnVsU2V0IFBWQ3MgKENhc3NhbmRyYSwgT3BlbkJhbykgYXJlIE5PVCBkZWxldGVkIGJ5" + - "IGBoZWxtIHVuaW5zdGFsbGAgKGFuZCBzbyBhcmUgTk9UIGRlbGV0ZWQgYnkgYG52Y2YtY2xpIHNl" + - "bGYtaG9zdGVkIGRvd25gIGVpdGhlciwgYnkgZGVmYXVsdCkuIFRoZXkgcGVyc2lzdCBpbnRlbnRp" + - "b25hbGx5IHNvIGEgcmUtYHVwYCBjYW4gcmVzdW1lIGFnYWluc3QgZXhpc3RpbmcgZGF0YS4gVG8g" + - "d2lwZSBjb21wbGV0ZWx5IG9uIHRoZSBuZXh0IGBkb3duYDoKCmBgYHNoCm52Y2YtY2xpIHNlbGYt" + - "aG9zdGVkIGRvd24gLS1jbHVzdGVyLW5hbWU9bmNwLWxvY2FsIC0tcmVtb3ZlLXBlcnNpc3RlbnQK" + - "YGBgCgpPciwgcG9zdC1kb3duLCBtYW51YWxseToKCmBgYHNoCmt1YmVjdGwgZGVsZXRlIHB2YyAt" + - "biBjYXNzYW5kcmEtc3lzdGVtIC0tYWxsCmt1YmVjdGwgZGVsZXRlIHB2YyAtbiB2YXVsdC1zeXN0" + - "ZW0gLS1hbGwKYGBgCgoqKkNvbmZpcm0gd2l0aCB1c2VyLioqIFRoaXMgaXMgdGhlIGRlc3RydWN0" + - "aXZlIHN0ZXAuClBLBwgSkzNZ4CEAAOAhAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADAACQBk" + - "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvY29tbWFuZHMubWRVVAUAAQCmzhIj" + - "IGBudmNmLWNsaWAgY29tbWFuZCByZWZlcmVuY2UKCkZ1bGwgc3ViY29tbWFuZCBsaXN0LiBBbHdh" + - "eXMgcGFpciB3aXRoIFtmbGFncy5tZF0oZmxhZ3MubWQpIGZvciBnbG9iYWwgZmxhZ3MgYW5kIFtl" + - "eGl0LWNvZGVzLm1kXShleGl0LWNvZGVzLm1kKSBmb3IgcmV0dXJuIGNvZGVzLgoKIyMgU2VsZi1o" + - "b3N0ZWQgbGlmZWN5Y2xlCgp8IENvbW1hbmQgfCBQdXJwb3NlIHwgT3V0cHV0IHwgTm90ZXMgfAp8" + - "LS0tfC0tLXwtLS18LS0tfAp8IGBzZWxmLWhvc3RlZCBjaGVjayAtLXByZSBbZmxhZ3NdYCB8IFBy" + - "ZS1mbGlnaHQgdmFsaWRhdGlvbiAobm8gYWRtaW4gY3JlZHMpIHwgc3RyZWFtaW5nIGV2ZW50cyB8" + - "IFBlci1yb2xlIHdpdGggYC0tY29udHJvbC1wbGFuZS1jb250ZXh0YCAvIGAtLWNvbXB1dGUtcGxh" + - "bmUtY29udGV4dGA7IGAtLWxvY2FsLW9ubHlgIHNraXBzIGt1YmVjdGwgfAp8IGBzZWxmLWhvc3Rl" + - "ZCBjaGVjayAtLWNvbnRyb2wtcGxhbmUgWy0td2FpdCBEVVJdYCB8IEV2ZXJ5IENQIHJlbGVhc2Ug" + - "aGVhbHRoeSB8IHN0cmVhbWluZyBldmVudHMgfCBQb2xscyB1bnRpbCBwYXNzIG9yIGAtLXdhaXRg" + - "IGVsYXBzZXMgfAp8IGBzZWxmLWhvc3RlZCBjaGVjayAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVy" + - "LW5hbWU9WCBbLS13YWl0IERVUl1gIHwgUGVyLWNsdXN0ZXIgd29ya2VyIHN0YXRlIHwgc3RyZWFt" + - "aW5nIGV2ZW50cyB8IE5WQ0EgKyBvcGVyYXRvciArIEpXS1MtZmluZ2VycHJpbnQgbWF0Y2ggfAp8" + - "IGBzZWxmLWhvc3RlZCBjaGVjayAtLWFsbCBbLS13YWl0IERVUl1gIHwgRmFuLW91dCBvdmVyIGFs" + - "bCBvZiB0aGUgYWJvdmUgfCBzdHJlYW1pbmcgZXZlbnRzIHwgfAp8IGBzZWxmLWhvc3RlZCBpbnN0" + - "YWxsIC0tY29udHJvbC1wbGFuZWAgfCBSZW5kZXIgY29udHJvbC1wbGFuZSBtYW5pZmVzdHMgfCBZ" + - "QU1MIG9uIHN0ZG91dCB8IFBpcGUgdG8gYGt1YmVjdGwgYXBwbHkgLWYgLWAgfAp8IGBzZWxmLWhv" + - "c3RlZCBpbnN0YWxsIC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YYCB8IFJlZ2lzdGVy" + - "IGNsdXN0ZXIgKyByZW5kZXIgY29tcHV0ZSBtYW5pZmVzdHMgfCBZQU1MIG9uIHN0ZG91dCB8IE9u" + - "ZSBpbnZvY2F0aW9uIHBlciBHUFUgY2x1c3RlciB8CnwgYHNlbGYtaG9zdGVkIHVwIC0tY2x1c3Rl" + - "ci1uYW1lPVhgIHwgT25lLXNob3QgZmlyc3QgaW5zdGFsbCAoYm90aCBwbGFuZXMpIHwgKGVtcHR5" + - "KSBzdGRvdXQsIHByb2dyZXNzIG9uIHN0ZGVyciB8IEFsd2F5cyBpbnN0YWxscyBib3RoIHBsYW5l" + - "czsgZm9yIGNvbXB1dGUtb25seSB1c2UgYGFkZC1jb21wdXRlLXBsYW5lYCB8CnwgYHNlbGYtaG9z" + - "dGVkIHVwIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIHwgRHJ5LXJ1biBwcmV2aWV3IHwg" + - "SlNPTkwgb24gc3RkZXJyIHwgQWdlbnQtZnJpZW5kbHksIG5vIGNsdXN0ZXIgY2hhbmdlcyB8Cnwg" + - "YHNlbGYtaG9zdGVkIGFkZC1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVggLS1jb21wdXRl" + - "LXBsYW5lLWNvbnRleHQ9WSAtLWljbXMtdXJsPVVSTCAtLXRva2VuPSRKV1RgIHwgQWRkIGEgY29t" + - "cHV0ZSBwbGFuZSB0byBhbiBleGlzdGluZyBjb250cm9sIHBsYW5lIHwgcHJvZ3Jlc3Mgb24gc3Rk" + - "ZXJyIHwgRm9yIDJuZCwgM3JkLCDigKYgR1BVIGNsdXN0ZXIgYWZ0ZXIgdGhlIGZpcnN0IGluc3Rh" + - "bGwuIENQIG5vdCB0b3VjaGVkLiB8CnwgYHNlbGYtaG9zdGVkIHN0YXR1cyBbLS1jbHVzdGVyLW5h" + - "bWU9WF0gWy0td2F0Y2hdYCB8IFNuYXBzaG90IGNsdXN0ZXIgaGVhbHRoIHwgVFRZL3BsYWluL0pT" + - "T05MIHwgYC0td2F0Y2hgIGZvciBsaXZlIHJlLXJlbmRlciB8CnwgYHNlbGYtaG9zdGVkIHVuaW5z" + - "dGFsbCAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9WGAgfCBQZXItcGxhbmUgcHJpbWl0" + - "aXZlOiBgaGVsbWZpbGUgZGVzdHJveWAgb24gb25lIGNvbXB1dGUgcGxhbmUgKG5vIElDTVMgdW5y" + - "ZWdpc3Rlciwgbm8gZHJhaW4pIHwgcHJvZ3Jlc3MgfCBKdXN0IHRoZSBoZWxtIHJlbGVhc2VzIG9u" + - "IHRoYXQgY29tcHV0ZSBwbGFuZSB8CnwgYHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAtLWNvbnRyb2wt" + - "cGxhbmUgWy0tZm9yY2Utd2l0aC1yZWdpc3RlcmVkLWNsdXN0ZXJzXWAgfCBQZXItcGxhbmUgcHJp" + - "bWl0aXZlOiBgaGVsbWZpbGUgZGVzdHJveWAgb24gdGhlIGNvbnRyb2wgcGxhbmUgfCBwcm9ncmVz" + - "cyB8IFJlZnVzZXMgaWYgY29tcHV0ZSBwbGFuZXMgc3RpbGwgcmVnaXN0ZXJlZCB1bmxlc3MgYC0t" + - "Zm9yY2Utd2l0aC1yZWdpc3RlcmVkLWNsdXN0ZXJzYCB8CnwgYHNlbGYtaG9zdGVkIHVuaW5zdGFs" + - "bCAtLW5vLWFwcGx5IDxwbGFuZT5gIHwgUmVuZGVyIGRlbGV0ZSBZQU1MIHZpYSBgaGVsbSBnZXQg" + - "bWFuaWZlc3RgIHBlciByZWxlYXNlIHwgWUFNTCBvbiBzdGRvdXQgfCBHaXRPcHM7IHBpcGUgdG8g" + - "YGt1YmVjdGwgZGVsZXRlIC1mIC1gIG9yIGNvbW1pdCArIEFyZ28gYXBwbGllcy4gTWlycm9ycyBg" + - "aW5zdGFsbCAtLW5vLWFwcGx5YCB8CnwgYHNlbGYtaG9zdGVkIGRvd24gLS1jbHVzdGVyLW5hbWU9" + - "WCBbLS1kcmFpbi1hY3RpdmVdIFstLXJlbW92ZS1wZXJzaXN0ZW50XWAgfCBPcmNoZXN0cmF0b3I6" + - "IGRyYWluIOKGkiB1bmluc3RhbGwgLS1jb21wdXRlLXBsYW5lIOKGkiBjbHVzdGVyIGRlbGV0ZSBp" + - "biBJQ01TIHwgcHJvZ3Jlc3MgfCBTeW1tZXRyaWMgY29tcGFuaW9uIHRvIGB1cCAtLWNsdXN0ZXIt" + - "bmFtZT1YYCB8CnwgYHNlbGYtaG9zdGVkIGRvd24gLS1hbGwgWy0tY29uZmlybV1gIHwgT3JjaGVz" + - "dHJhdG9yOiB0ZWFyIGRvd24gZXZlcnkgcmVnaXN0ZXJlZCBjb21wdXRlIHBsYW5lICsgY29udHJv" + - "bCBwbGFuZSB8IHByb2dyZXNzIHwgQm91bmRlZCBwYXJhbGxlbGlzbSB2aWEgYC0tYWxsLWNvbmN1" + - "cnJlbmN5YCAoZGVmYXVsdCA0KTsgYC0tY29uZmlybWAgcmVxdWlyZWQgaW4gbm9uLWludGVyYWN0" + - "aXZlIHwKfCBgc2VsZi1ob3N0ZWQgZG93biAtLXBsYW4tb25seSAuLi5gIHwgT3JjaGVzdHJhdG9y" + - "IGRyeS1ydW46IHBoYXNlcyArIGhlbG0gcmVsZWFzZXMgKyBJQ01TIHJvd3MgKyBFVEFzIChubyBo" + - "ZWxtL2hlbG1maWxlIGNvbnRhY3QpIHwgSlNPTkwgfCAqKkFsd2F5cyBydW4gYmVmb3JlIGFueSBh" + - "Y3R1YWwgYGRvd25gKiogfAoKIyMgQ2x1c3RlciBtYW5hZ2VtZW50Cgp8IENvbW1hbmQgfCBQdXJw" + - "b3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYGNsdXN0ZXIgcmVnaXN0ZXIgLS1uYW1lPVgg" + - "LS1uY2EtaWQ9WSBbLS1yZWdpb249Wl0gWy0taWdub3JlLWV4aXN0aW5nXWAgfCBSZWdpc3RlciBh" + - "IEpXS1MrT0lEQyB3aXRoIElDTVMgfCBVc2VkIGJ5IGB1cGAgUGhhc2UgNSBpbnRlcm5hbGx5OyBz" + - "dGFuZGFsb25lIGZvciBtYW51YWwgcmVnaXN0cmF0aW9uIHwKfCBgY2x1c3RlciBsaXN0YCB8IExp" + - "c3QgcmVnaXN0ZXJlZCBjbHVzdGVycyB8IE91dHB1dCBpcyBZQU1MIGJ5IGRlZmF1bHQ7IGAtLWpz" + - "b25gIGZvciBtYWNoaW5lIHwKfCBgY2x1c3RlciByb3RhdGUgLS1jbHVzdGVyLWlkPUlEYCB8IFJl" + - "LWZldGNoIEpXS1MgZnJvbSBLOHMgYW5kIFBVVCB0byBJQ01TIHwgQWZ0ZXIgSzhzIEFQSSBzZXJ2" + - "ZXIgc2lnbmluZyBrZXkgcm90YXRpb24gfAp8IGBjbHVzdGVyIGRlbGV0ZSAtLWNsdXN0ZXItaWQ9" + - "SURgIHwgUmVtb3ZlIElDTVMgcm93IHwgKipERVNUUlVDVElWRTogY29uZmlybSB3aXRoIHVzZXIq" + - "KiB8CgojIyBGdW5jdGlvbnMKCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBOb3RlcyB8CnwtLS18LS0t" + - "fC0tLXwKfCBgZnVuY3Rpb24gY3JlYXRlIC0taW5wdXQtZmlsZT1GSUxFYCB8IENyZWF0ZSBmdW5j" + - "dGlvbiBtZXRhZGF0YSB8IFJldHVybnMgRnVuY3Rpb24gSUQgKyBWZXJzaW9uIElEOyBMTE0gZnVu" + - "Y3Rpb25zIHVzZSBgZnVuY3Rpb25UeXBlOiAiTExNImAgYW5kIGBtb2RlbHNbXS5sbG1Db25maWcu" + - "dXJpc2AgZm9yIGAvdjEvY2hhdC9jb21wbGV0aW9uc2AsIGAvdjEvcmVzcG9uc2VzYCwgYW5kIGAv" + - "djEvZW1iZWRkaW5nc2AgfAp8IGBmdW5jdGlvbiBsaXN0YCAvIGBmdW5jdGlvbiBsaXN0LWlkc2Ag" + - "fCBMaXN0IGZ1bmN0aW9ucyAvIElEcyBvbmx5IHwgfAp8IGBmdW5jdGlvbiBnZXQgLS1mdW5jdGlv" + - "bi1pZD1JRCAtLXZlcnNpb24taWQ9VklEYCB8IEZ1bmN0aW9uIG1ldGFkYXRhIHwgfAp8IGBmdW5j" + - "dGlvbiB1cGRhdGUgLS1mdW5jdGlvbi1pZD1JRCAtLXZlcnNpb24taWQ9VklEIC0tdGFncz1UQUdb" + - "LFRBR11gIHwgVXBkYXRlIGZ1bmN0aW9uIHRhZ3MgfCB8CnwgYGZ1bmN0aW9uIHVwZGF0ZSAtLWZ1" + - "bmN0aW9uLWlkPUlEIC0tdmVyc2lvbi1pZD1WSUQgLS1sbG0tbW9kZWwtdXBkYXRlPVNQRUNgIHwg" + - "VXBkYXRlIExMTSBtb2RlbCByb3V0aW5nIGNvbmZpZyB8IGBTUEVDYCB1c2VzIGBuYW1lPTxtb2Rl" + - "bD4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJhdGVMaW1pdD08bGltaXQ+YDsgYWNjZXB0" + - "ZWQgbWV0aG9kcyBhcmUgbGlzdGVkIGluIFtmbGFncy5tZF0oZmxhZ3MubWQpIHwKfCBgZnVuY3Rp" + - "b24gZGVwbG95IGNyZWF0ZSAtLWlucHV0LWZpbGU9RklMRWAgfCBTY2hlZHVsZSBhIGRlcGxveW1l" + - "bnQgfCBCbG9ja3MgdW50aWwgQUNUSVZFIChkZWZhdWx0IDkwMHMpIHwKfCBgZnVuY3Rpb24gZGVw" + - "bG95IGdldCAtLWZ1bmN0aW9uLWlkPUlEIC0tdmVyc2lvbi1pZD1WSUQgWy0tanNvbl1gIHwgRGVw" + - "bG95bWVudCBzdGF0dXMgfCBgZnVuY3Rpb25TdGF0dXM6IEFDVElWRVx8REVQTE9ZSU5HXHxFUlJP" + - "Ulx8RkFJTEVEYCB8CnwgYGZ1bmN0aW9uIGRlcGxveSB1cGRhdGUgLS1pbnB1dC1maWxlPUZJTEVg" + - "IHwgTW9kaWZ5IGEgZGVwbG95bWVudCBpbiBwbGFjZSB8IHwKfCBgZnVuY3Rpb24gZGVwbG95IHJl" + - "bW92ZSAtLWZ1bmN0aW9uLWlkPUlEIC0tdmVyc2lvbi1pZD1WSURgIHwgU3RvcCBhIGRlcGxveW1l" + - "bnQsIGtlZXAgZnVuY3Rpb24gcmVjb3JkIHwgfAp8IGBmdW5jdGlvbiBpbnZva2UgLS1pbnB1dC1m" + - "aWxlPUZJTEVgIHwgQ2FsbCBhIHJlZ3VsYXIgZnVuY3Rpb24gfCBSZXF1aXJlcyBBUEkga2V5IChu" + - "b3QgYWRtaW4gdG9rZW4pOyBMTE0gZnVuY3Rpb25zIGFyZSBpbnZva2VkIHRocm91Z2ggYGxsbS5p" + - "bnZvY2F0aW9uLjxkb21haW4+YCB3aXRoIGBtb2RlbDogIjxmdW5jdGlvbi1pZD4vPG1vZGVsLW5h" + - "bWU+ImAgfAp8IGBmdW5jdGlvbiBkZWxldGUgLS1mdW5jdGlvbi1pZD1JRCAtLXZlcnNpb24taWQ9" + - "VklEYCB8IFJlbW92ZSBmdW5jdGlvbiArIGRlcGxveW1lbnQgfCAqKkRFU1RSVUNUSVZFOiBjb25m" + - "aXJtIHdpdGggdXNlcioqIHwKCiMjIFRhc2tzCgpUYXNrIGNvbW1hbmRzIHJlcXVpcmUgYE5WQ0Zf" + - "QVBJX0tFWWAgc2V0IHRvIGEgdGFzay1zY29wZWQga2V5IGFuZCBgTlZDRl9CQVNFX05WQ1RfVVJM" + - "YCBzZXQgdG8gdGhlIE5WQ1QgZ2F0ZXdheSBlbmRwb2ludC4gSW4gYSBmcmVzaCBzZXNzaW9uLCBy" + - "ZWFkIGBudmN0QXBpS2V5YCBmcm9tIGB+Ly5udmNmLWNsaS5zdGF0ZWAgYW5kIGluamVjdCBpdCBh" + - "cyBgTlZDRl9BUElfS0VZYCB3aXRob3V0IGxvZ2dpbmcgdGhlIHZhbHVlOyBjaGVjayBgbnZjdEFw" + - "aUtleUV4cGlyYXRpb25gIGZpcnN0IGFuZCByZWdlbmVyYXRlIHdpdGggYGFwaS1rZXkgZ2VuZXJh" + - "dGUgLS1mb3IgdGFzayAtLXZhbGlkYXRlYCBpZiBleHBpcmVkLiBSdW4gYGFwaS1rZXkgZ2VuZXJh" + - "dGUgLS1mb3IgdGFza2AgYWZ0ZXIgYGluaXRgIHRvIG1pbnQgYSBuZXcga2V5LgoKfCBDb21tYW5k" + - "IHwgUHVycG9zZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGB0YXNrIGNyZWF0ZSAtLW5hbWU9" + - "WCAtLWdwdT1HUFUgLS1pbnN0YW5jZS10eXBlPVRZUEUgLS1pbWFnZT1JTUdgIHwgU3VibWl0IGEg" + - "Y29udGFpbmVyIHRhc2sgfCBTYXZlcyB0YXNrIElEIHRvIENMSSBzdGF0ZTsgdXNlIGAtLWlucHV0" + - "LWZpbGVgIGZvciByZXBlYXRhYmxlIGNvbmZpZ3MgfAp8IGB0YXNrIGNyZWF0ZSAtLW5hbWU9WCAt" + - "LWdwdT1HUFUgLS1pbnN0YW5jZS10eXBlPVRZUEUgLS1oZWxtLWNoYXJ0PUNIQVJUYCB8IFN1Ym1p" + - "dCBhIEhlbG0gdGFzayB8IGAtLWhlbG0tY2hhcnRgIHJlcGxhY2VzIGAtLWltYWdlYCB8CnwgYHRh" + - "c2sgY3JlYXRlIC0taW5wdXQtZmlsZT1GSUxFYCB8IFN1Ym1pdCBhIHRhc2sgZnJvbSBhIEpTT04g" + - "Y29uZmlnIGZpbGUgfCBSZWNvbW1lbmRlZCBmb3IgcmVwZWF0YWJsZSBjb25maWd1cmF0aW9ucyB8" + - "CnwgYHRhc2sgbGlzdCBbLS1zdGF0dXM9U1RBVFVTXSBbLS1saW1pdD1OXWAgfCBMaXN0IHRhc2tz" + - "LCBvcHRpb25hbGx5IGZpbHRlcmVkIGJ5IHN0YXR1cyB8IFN0YXR1c2VzOiBgUVVFVUVEYCwgYExB" + - "VU5DSEVEYCwgYFJVTk5JTkdgLCBgQ09NUExFVEVEYCwgYEVSUk9SRURgLCBgQ0FOQ0VMRURgLCBg" + - "RVhDRUVERURfTUFYX1JVTlRJTUVfRFVSQVRJT05gLCBgRVhDRUVERURfTUFYX1FVRVVFRF9EVVJB" + - "VElPTmAgfAp8IGB0YXNrIGdldCBbdGFza0lkXWAgfCBHZXQgdGFzayBkZXRhaWxzIHwgVXNlcyBz" + - "YXZlZCB0YXNrIElEIGZyb20gc3RhdGUgaWYgb21pdHRlZCB8CnwgYHRhc2sgZXZlbnRzIFt0YXNr" + - "SWRdIFstLWxpbWl0PU5dYCB8IExpc3QgbGlmZWN5Y2xlIGV2ZW50cyBmb3IgYSB0YXNrIHwgfAp8" + - "IGB0YXNrIHJlc3VsdHMgW3Rhc2tJZF1gIHwgTGlzdCByZXN1bHQgYXJ0aWZhY3RzIGZvciBhIGNv" + - "bXBsZXRlZCB0YXNrIHwgUmV0dXJucyBlbXB0eSBsaXN0IHdoZW4gYHJlc3VsdEhhbmRsaW5nU3Ry" + - "YXRlZ3lgIGlzIGBOT05FYDsgcmVzdWx0IHVwbG9hZCBub3QgeWV0IHN1cHBvcnRlZCB8CnwgYHRh" + - "c2sgY2FuY2VsIFt0YXNrSWRdYCB8IENhbmNlbCBhIHJ1bm5pbmcgdGFzayB8IE5vLW9wIGlmIGFs" + - "cmVhZHkgaW4gdGVybWluYWwgc3RhdGUgfAp8IGB0YXNrIGRlbGV0ZSBbdGFza0lkXWAgfCBEZWxl" + - "dGUgYSB0YXNrIHJlY29yZCB8ICoqU3RvcCwgc3RhdGUgdGFzayBJRCArIGN1cnJlbnQgc3RhdHVz" + - "LCBhbmQgd2FpdCBmb3IgYSBzdWJzZXF1ZW50IHVzZXIgcmVwbHkgZXhwbGljaXRseSBjb25maXJt" + - "aW5nIGRlbGV0aW9uIG9mIHRoYXQgc3BlY2lmaWMgdGFzay4gRG8gbm90IHRyZWF0IHRoZSBvcmln" + - "aW5hbCBkZWxldGUgcmVxdWVzdCBhcyBjb25maXJtYXRpb24uKiogfAp8IGB0YXNrIHVwZGF0ZS1z" + - "ZWNyZXRzIFt0YXNrSWRdIC0tc2VjcmV0cyBOQU1FPXZhbHVlYCB8IFVwZGF0ZSBzZWNyZXRzIG9u" + - "IGEgdGFzazsgc3VwcGxpZWQgc2VjcmV0cyBhcmUgYWRkZWQgb3IgdXBkYXRlZCBieSBuYW1lLCBl" + - "eGlzdGluZyBzZWNyZXRzIG5vdCBpbiB0aGUgcmVxdWVzdCBhcmUgcHJlc2VydmVkIHwgVmFsdWVz" + - "IGFyZSBlbmNyeXB0ZWQgYXQgcmVzdCB8CnwgYHRhc2sgYnVsayAtLXRhc2staWRzPUlEMVssSUQy" + - "LOKApl1gIHwgRmV0Y2ggZGV0YWlscyBmb3IgbXVsdGlwbGUgdGFza3MgaW4gb25lIHJlcXVlc3Qg" + - "fCB8CgojIyBBdXRoCgp8IENvbW1hbmQgfCBQdXJwb3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18" + - "CnwgYGluaXRgIHwgTWludCBhZG1pbiB0b2tlbiBmcm9tIEFQSSBLZXlzIHZpYSBwdWJsaWMgYXBp" + - "IGdhdGV3YXkgfCBJZGVtcG90ZW50OyB3cml0ZXMgYH4vLm52Y2YtY2xpLnN0YXRlYDsgY2xlYXJz" + - "IHNhdmVkIGZ1bmN0aW9uIHN0YXRlIGFuZCBhbGwgQVBJIGtleXMgKGZ1bmN0aW9uIGFuZCB0YXNr" + - "KSB8CnwgYHN0YXR1c2AgfCBTaG93IENMSSBzdGF0ZSAodG9rZW4sIGxhc3QgZW5kcG9pbnRzLCBm" + - "dW5jdGlvbiBjb250ZXh0KSB8IERpc3RpbmN0IGZyb20gYHNlbGYtaG9zdGVkIHN0YXR1c2AgfAp8" + - "IGBhcGkta2V5IGdlbmVyYXRlIFstLWZvciBmdW5jdGlvblx8dGFza10gWy0tZGVzY3JpcHRpb249" + - "4oCmXSBbLS1leHBpcmVzLWluPeKApl1gIHwgTWludCBBUEkga2V5cyB8IERlZmF1bHQgKG5vIGAt" + - "LWZvcmApOiBnZW5lcmF0ZXMgYm90aCBhIGZ1bmN0aW9uIGtleSBhbmQgYSB0YXNrIGtleTsgYC0t" + - "Zm9yIGZ1bmN0aW9uYCBvciBgLS1mb3IgdGFza2AgZ2VuZXJhdGVzIG9uZSBvbmx5OyBgLS1zY29w" + - "ZXNgIHJlcXVpcmVzIGAtLWZvcmAgfAp8IGBhcGkta2V5IGdlbmVyYXRlIC0tdmFsaWRhdGVgIHwg" + - "TWludCBhbmQgaW1tZWRpYXRlbHkgdmFsaWRhdGUgZWFjaCBnZW5lcmF0ZWQga2V5IHwgVmFsaWRh" + - "dGVzIGVhY2gga2V5IGFnYWluc3QgaXRzIGNvcnJlY3QgYXVkaWVuY2UgKE5WQ0YgZm9yIGZ1bmN0" + - "aW9uIGtleXMsIE5WQ1QgZm9yIHRhc2sga2V5cykgfAp8IGBhcGkta2V5IGxpc3RgIHwgTGlzdCBB" + - "UEkga2V5cyBmb3IgY3VycmVudCBvd25lciB8IExpc3RzIE5WQ0Ytc2NvcGVkIGtleXMgb25seSB8" + - "CnwgYGFwaS1rZXkgZGVsZXRlIEtFWS1JRGAgLyBgYXBpLWtleSByZXZva2UgS0VZLUlEYCB8IFJl" + - "bW92ZSBhbiBBUEkga2V5IHwgKipDb25maXJtIHdpdGggdXNlcioqIHwKfCBgYXBpLWtleSBzaG93" + - "YCB8IFNob3cgY3VycmVudGx5IHNhdmVkIEFQSSBrZXkgZnJvbSBzdGF0ZSB8IHwKCiMjIEFnZW50" + - "IHNraWxsCgp8IENvbW1hbmQgfCBQdXJwb3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYGFn" + - "ZW50LXNraWxsIGluc3RhbGwgWy0tdGFyZ2V0PURJUl1gIHwgSW5zdGFsbCBhbGwgYnVuZGxlZCBw" + - "dWJsaWMgdXNlciBza2lsbHMgaW50byBgfi8uY2xhdWRlL3NraWxscy9gIGFuZCBgfi8uYWdlbnRz" + - "L3NraWxscy9gIHwgRGVmYXVsdDogYm90aCBiYXNlIHNraWxscyBkaXJlY3RvcmllcyB8CnwgYGFn" + - "ZW50LXNraWxsIHVuaW5zdGFsbCBbLS10YXJnZXQ9RElSXWAgfCBSZW1vdmUgb25seSBidW5kbGVk" + - "IHB1YmxpYyB1c2VyIHNraWxscyBmcm9tIHRoZSB0YXJnZXQgYmFzZSBza2lsbHMgZGlyZWN0b3Jp" + - "ZXMgfCBJZGVtcG90ZW50OyB1bnJlbGF0ZWQgc2tpbGxzIHJlbWFpbiB8CnwgYGFnZW50LXNraWxs" + - "IHNob3cgWy0tZmlsZT1SRUxdYCB8IFByaW50IGJ1bmRsZWQgYG52Y2Ytc2VsZi1tYW5hZ2VkLWNs" + - "aS9TS0lMTC5tZGAgb3IgYW5vdGhlciBlbWJlZGRlZCBmaWxlIHwgRm9yIGRlYnVnZ2luZyB8Cnwg" + - "YGFnZW50LXNraWxsIHZlcnNpb25gIHwgUHJpbnQgYnVpbGQgU0hBIGFuZCBlbWJlZGRlZCBwdWJs" + - "aWMgdXNlciBza2lsbCBzdW1tYXJ5IHwgfApQSwcI275U+NciAADXIgAAUEsDBBQACAAAAAAAIQAA" + - "AAAAAAAAAAAAAAAyAAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL2V4aXQt" + - "Y29kZXMubWRVVAUAAQCmzhIjIGBudmNmLWNsaWAgZXhpdCBjb2RlcwoKU3RhYmxlIGFjcm9zcyBz" + - "dWJjb21tYW5kcy4gVXNlIHRoZXNlIHRvIGRyaXZlIGFnZW50IHJldHJ5IC8gc3VyZmFjaW5nIGxv" + - "Z2ljLgoKfCBDb2RlIHwgTWVhbmluZyB8IEV4YW1wbGUgY2F1c2VzIHwKfC0tLXwtLS18LS0tfAp8" + - "IGAwYCB8IFN1Y2Nlc3MgfCBBbGwgY2hlY2tzIHBhc3NlZDsgaW5zdGFsbCBjb21wbGV0ZWQ7IGRl" + - "cGxveW1lbnQgQUNUSVZFIHwKfCBgMWAgfCBHZW5lcmljIGVycm9yIHwgSGVsbSByZW5kZXIgZmFp" + - "bGVkOyBuZXR3b3JrIHVucmVhY2hhYmxlOyBmaWxlIG5vdCBmb3VuZDsgWUFNTCBwYXJzZSBlcnJv" + - "ciB8CnwgYDJgIHwgUHJlLWZsaWdodCBjaGVjayBmYWlsZWQgfCBHYXRld2F5IEFQSSBDUkRzIG1p" + - "c3Npbmc7IGt1YmVjdGwgbm90IG9uIFBBVEg7IGRlZmF1bHQgU3RvcmFnZUNsYXNzIGFic2VudCB8" + - "CnwgYDNgIHwgQWRtaW4gYXV0aCBmYWlsZWQgfCBObyB0b2tlbiArIGAtLW5vbi1pbnRlcmFjdGl2" + - "ZWAgc2V0OyBJQ01TIHJlamVjdGVkIEpXVDsgaW5pdCBlbmRwb2ludCB1bnJlYWNoYWJsZSB8Cnwg" + - "YDVgIHwgTWFuaWZlc3QgYXBwbHkgb3IgYC0td2FpdGAgdGltZWQgb3V0IHwgSGVsbSBpbnN0YWxs" + - "IHRpbWVvdXQ7IGNoZWNrIHBvbGxlZCBidXQgZGlkbid0IHBhc3MgYmVmb3JlIGR1cmF0aW9uIHwK" + - "fCBgMTMwYCB8IENhbmNlbGxlZCBieSBTSUdJTlQvU0lHVEVSTSB8IFVzZXIgQ3RybC1DOyBDSSBi" + - "dWRnZXQgZXhjZWVkZWQ7IHBvZCBldmljdGVkIHwKCiMjIEhvdyBhbiBhZ2VudCBzaG91bGQgcmVh" + - "Y3QKCnwgQ29kZSB8IEFnZW50IGJlaGF2aW9yIHwKfC0tLXwtLS18CnwgYDBgIHwgQ29udGludWUg" + - "LyByZXBvcnQgc3VjY2Vzcy4gfAp8IGAxYCB8IFN1cmZhY2Ugc3RkZXJyIHRvIHVzZXI7IGFzayBi" + - "ZWZvcmUgYW55IHJldHJ5LiBHZW5lcmljIGVycm9ycyB1c3VhbGx5IG5lZWQgYSBodW1hbiB0byBy" + - "ZWFkIHRoZSBtZXNzYWdlLiB8CnwgYDJgIHwgU3VyZmFjZSBmYWlsZWQgY2hlY2tzICsgdGhlaXIg" + - "YGhpbnRVUkxgLiBEb24ndCBwcm9wb3NlIGB1cGAgdW50aWwgdGhlIHVzZXIgZml4ZXMgcHJlcmVx" + - "cy4gfAp8IGAzYCB8IFN1Z2dlc3QgYG52Y2YtY2xpIGluaXRgIChpbnRlcmFjdGl2ZSkgT1IgYC0t" + - "dG9rZW49JEpXVGAgKENJKS4gRG9uJ3QgYXV0by1taW50IHdpdGhvdXQgdXNlciBPSy4gfAp8IGA1" + - "YCB8IEFzayB1c2VyIGlmIHRoZXkgd2FudCB0byB3YWl0IGxvbmdlciwgZGlnIGludG8gdGhlIHN0" + - "YWxsZWQgY29tcG9uZW50LCBvciBjYW5jZWwuIHwKfCBgMTMwYCB8IERvbid0IHJldHJ5IGF1dG9t" + - "YXRpY2FsbHk7IHVzZXIgZXhwbGljaXRseSBjYW5jZWxsZWQuIENvbmZpcm0gYmVmb3JlIHJlLXJ1" + - "bm5pbmcuIHwKCiMjIFdoZXJlIHRvIGZpbmQgbW9yZSBkZXRhaWwKCkV2ZXJ5IG5vbi16ZXJvIGV4" + - "aXQgZW1pdHMgYSBzdHJ1Y3R1cmVkIGBwaGFzZV9mYWlsZWRgIEpTT04gZXZlbnQgd2l0aCBgZXJy" + - "Q2F0ZWdvcnlgLCBgZXJyTWVzc2FnZWAsIGByZW1lZGlhdGlvbmAgKGFycmF5KSwgYHJldHJ5Q2xh" + - "c3NgIChlbnVtOiBgbm9uZXxpbW1lZGlhdGV8YmFja29mZnxhZnRlcl9yZW1lZGlhdGlvbnx1bmtu" + - "b3duYCksIGByZXRyeUFmdGVyU2VjYCAoaW50LCBvcHRpb25hbCksIGFuZCBgcmF3YCAoc3VicHJv" + - "Y2VzcyArIEhUVFAgKyBLdWJlcm5ldGVzIHNpZ25hbCkuIEFsd2F5cyBjb25zdW1lIHRoZXNlIGlu" + - "IGAtLWpzb25gIG1vZGUgcmF0aGVyIHRoYW4gcGFyc2luZyBFbmdsaXNoIGZyb20gc3RkZXJyLgpQ" + - "SwcIc6daZNUGAADVBgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAtAAkAZGF0YS9udmNmLXNl" + - "bGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL2ZsYWdzLm1kVVQFAAEAps4SIyBgbnZjZi1jbGlgIGZs" + - "YWcgcmVmZXJlbmNlCgojIyBHbG9iYWwgZmxhZ3MgKGV2ZXJ5IHN1YmNvbW1hbmQpCgp8IEZsYWcg" + - "fCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1jb25maWcgRklMRWAgfCBD" + - "b25maWcgZmlsZSBwYXRoIHwgYCRIT01FLy5udmNmLWNsaS55YW1sYCB8CnwgYC0tZGVidWdgIHwg" + - "VmVyYm9zZSBIVFRQIGxvZ2dpbmcgb24gc3RkZXJyIHwgYGZhbHNlYCB8CnwgYC0tanNvbmAgfCBK" + - "U09OTCBldmVudHMgb24gc3RkZXJyIHwgYXV0byAob2ZmIGluIFRUWSwgb24gdW5kZXIgYC0tbm9u" + - "LWludGVyYWN0aXZlYCkgfAoKIyMgYHNlbGYtaG9zdGVkYCBwYXJlbnQgKHBlcnNpc3RlbnQgYWNy" + - "b3NzIHN1YmNvbW1hbmRzKQoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwt" + - "LS18CnwgYC0tY29udHJvbC1wbGFuZS1zdGFjaz3igKZgIHwgQ29udHJvbC1wbGFuZSBidW5kbGUg" + - "c291cmNlOiBsb2NhbCBwYXRoLCBnaXQgVVJMLCBvciBgb2NpOi8vYCBVUkwgfCBlbWJlZGRlZCBP" + - "Q0kgVVJMIHBpbm5lZCBieSBDTEkgdmVyc2lvbiB8CnwgYC0tY29tcHV0ZS1wbGFuZS1zdGFjaz3i" + - "gKZgIHwgQ29tcHV0ZS1wbGFuZSBidW5kbGUgc291cmNlOiBsb2NhbCBwYXRoLCBnaXQgVVJMLCBv" + - "ciBgb2NpOi8vYCBVUkwgfCBlbWJlZGRlZCBPQ0kgVVJMIHBpbm5lZCBieSBDTEkgdmVyc2lvbiB8" + - "CnwgYC0tZW52PWxvY2FsXHxwcmRcfOKApmAgfCBIZWxtZmlsZSBlbnZpcm9ubWVudCBuYW1lIHwg" + - "YGxvY2FsYCBmb3IgZGV2IGJ1aWxkcywgYHByZGAgZm9yIHJlbGVhc2VzIHwKfCBgLS1ub24taW50" + - "ZXJhY3RpdmVgIHwgRGlzYWJsZSBhbGwgc3RkaW4gcHJvbXB0cyB8IGBmYWxzZWAgfAp8IGAtLXRv" + - "a2VuPSRKV1RgIHwgQWRtaW4gSldULCBvdmVycmlkZXMgc3RvcmVkIHNlc3Npb24gfCAtIHwKfCBg" + - "LS1uby1hcHBseWAgfCBgaW5zdGFsbGAgb25seSAtIGVtaXQgWUFNTCwgZG8gbm90IGt1YmVjdGwg" + - "YXBwbHkgfCBgZmFsc2VgIHwKfCBgLS1vdXRwdXQ9dGV4dFx8anNvbmAgfCBMZWdhY3kgYWxpYXMg" + - "Zm9yIGAtLWpzb25gIChkZXByZWNhdGVkLCByZW1vdmVkIGluIG5leHQgbWFqb3IpIHwgYHRleHRg" + - "IHwKfCBgLS1wbGFpbmAgfCBGb3JjZSBwbGFpbiBzdHJlYW1pbmcgb3V0cHV0IHwgYXV0by1kZXRl" + - "Y3QgfAp8IGAtLXdhaXQgRFVSQVRJT05gIHwgYGNoZWNrYCBvbmx5OyBibG9jayB1bnRpbCBwYXNz" + - "IHwgLSB8CnwgYC0tY29udHJvbC1wbGFuZS1jb250ZXh0IENUWGAgfCBrdWJlY3RsIGNvbnRleHQg" + - "Zm9yIGNvbnRyb2wgcGxhbmUgKFJFUS0yMCkgfCBjdXJyZW50IGNvbnRleHQgfAp8IGAtLWNvbXB1" + - "dGUtcGxhbmUtY29udGV4dCBDVFhgIHwga3ViZWN0bCBjb250ZXh0IGZvciBjb21wdXRlIHBsYW5l" + - "IChSRVEtMjApIHwgY3VycmVudCBjb250ZXh0IHwKfCBgLS1pY21zLXVybCBVUkxgIHwgUHVibGlj" + - "IElDTVMgVVJMOyByZXF1aXJlZCB3aGVuIGNvbnRleHRzIGRpZmZlciB8IGRlcml2ZWQgZnJvbSBg" + - "YmFzZV9odHRwX3VybGAgfAp8IGAtLWxvY2FsLW9ubHlgIHwgYGNoZWNrIC0tcHJlYCBvbmx5OyBz" + - "a2lwIGFsbCBrdWJlY3RsIGNvbnRhY3QgfCBgZmFsc2VgIHwKCiMjIGB1cGAtc3BlY2lmaWMKCnwg" + - "RmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0ZXItbmFt" + - "ZSBOQU1FYCB8IElDTVMgY2x1c3RlciByb3cgaWRlbnRpZmllciAocmVxdWlyZWQpIHwgLSB8Cnwg" + - "YC0tbmNhLWlkIElEYCB8IE5DQSBhY2NvdW50IElEIHwgYG52Y2YtZGVmYXVsdGAgfAp8IGAtLXJl" + - "Z2lvbiBSRUdJT05gIHwgQ2x1c3RlciByZWdpb24gfCBgdXMtd2VzdC0xYCB8CnwgYC0tcGxhbi1v" + - "bmx5YCB8IERyeS1ydW47IGVtaXQgcGhhc2UgcGxhbiArIEVUQXMgd2l0aG91dCBjaGFuZ2VzIHwg" + - "YGZhbHNlYCB8CgojIyBgc3RhdHVzYC1zcGVjaWZpYwoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1" + - "bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tY2x1c3Rlci1uYW1lIE5BTUVgIHwgTGltaXQgdG8gb25l" + - "IGNvbXB1dGUgcGxhbmUgfCAtIChjb250cm9sICsgYWxsIGNsdXN0ZXJzKSB8CnwgYC0td2F0Y2hg" + - "IHwgTGl2ZSByZS1yZW5kZXIgfCBgZmFsc2VgIHwKfCBgLS13YXRjaC1pbnRlcnZhbCBEVVJgIHwg" + - "YC0td2F0Y2hgIGNhZGVuY2UgfCBgNXNgIHwKfCBgLS1jb21wb25lbnQgTkFNRWAgfCBGaWx0ZXIg" + - "Y29tcG9uZW50cyBwYW5lbCB8IGFsbCB8CnwgYC0tbm8tZXZlbnRzYCB8IFNraXAgZXZlbnRzIHBh" + - "bmVsIHwgYGZhbHNlYCB8CgojIyBgY2x1c3RlciByZWdpc3RlcmAtc3BlY2lmaWMKCnwgRmxhZyB8" + - "IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLW5hbWUgTkFNRWAgfCBDbHVz" + - "dGVyIG5hbWUgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLW5jYS1pZCBJRGAgfCBOQ0EgSUQgKHJlcXVp" + - "cmVkKSB8IC0gfAp8IGAtLXJlZ2lvbiBSRUdJT05gIHwgUmVnaW9uIHwgYHVzLXdlc3QtMWAgfAp8" + - "IGAtLWljbXMtdXJsIFVSTGAgfCBJQ01TIGVuZHBvaW50IHwgZnJvbSBjb25maWcgfAp8IGAtLWln" + - "bm9yZS1leGlzdGluZ2AgfCBNYXRjaC1vci1jcmVhdGUgaW5zdGVhZCBvZiBmYWlsLW9uLWV4aXN0" + - "cyB8IGBmYWxzZWAgfAoKIyMgYGFwaS1rZXkgZ2VuZXJhdGVgLXNwZWNpZmljCgp8IEZsYWcgfCBQ" + - "dXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1mb3IgZnVuY3Rpb25cfHRhc2tg" + - "IHwgR2VuZXJhdGUgb25seSB0aGUgc3BlY2lmaWVkIGtleSB0eXBlIHwgKG9taXQgdG8gZ2VuZXJh" + - "dGUgYm90aCkgfAp8IGAtLWRlc2NyaXB0aW9uIFRFWFRgIHwgSHVtYW4tcmVhZGFibGUgbGFiZWwg" + - "Zm9yIHRoZSBrZXkgfCBgR2VuZXJhdGVkIGJ5IG52Y2YtY2xpYCB8CnwgYC0tZXhwaXJlcy1pbiBE" + - "VVJBVElPTmAgfCBFeHBpcnkgb2Zmc2V0IChlLmcuIGAyNGhgLCBgN2RgKTsgcGFyc2VkIGFzIGV4" + - "dGVuZGVkIGR1cmF0aW9uIHwgYDI0aGAgfAp8IGAtLXNjb3BlcyBTQ09QRVssU0NPUEVdYCB8IE92" + - "ZXJyaWRlIGRlZmF1bHQgc2NvcGVzOyByZXF1aXJlcyBgLS1mb3JgIHwgKHNlcnZpY2UgZGVmYXVs" + - "dHMpIHwKfCBgLS12YWxpZGF0ZWAgfCBWYWxpZGF0ZSBlYWNoIGdlbmVyYXRlZCBrZXkgaW1tZWRp" + - "YXRlbHkgYWZ0ZXIgbWludGluZyB8IGBmYWxzZWAgfAoKRXh0ZW5kZWQgZHVyYXRpb24gdW5pdHM6" + - "IGBzYCAoc2Vjb25kcyksIGBtYCAobWludXRlcyksIGBoYCAoaG91cnMpLCBgZGAgKGRheXMpLCBg" + - "d2AgKHdlZWtzKS4KCiMjIGBmdW5jdGlvbiBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxl" + - "IEZJTEVgIGlzIHJlY29tbWVuZGVkIGZvciByZXBlYXRhYmxlIGZ1bmN0aW9uIGRlZmluaXRpb25z" + - "LiBGb3IgYWQtaG9jIGNyZWF0ZXM6Cgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18" + - "LS0tfC0tLXwKfCBgLS1uYW1lIE5BTUVgIHwgRnVuY3Rpb24gbmFtZSB8IC0gfAp8IGAtLWltYWdl" + - "IElNQUdFYCB8IENvbnRhaW5lciBpbWFnZSB8IC0gfAp8IGAtLWluZmVyZW5jZS11cmwgVVJJYCB8" + - "IENvbnRhaW5lciBpbmZlcmVuY2UgZW5kcG9pbnQgfCAtIHwKfCBgLS1pbmZlcmVuY2UtcG9ydCBQ" + - "T1JUYCB8IENvbnRhaW5lciBpbmZlcmVuY2UgcG9ydCB8IC0gfAp8IGAtLWZ1bmN0aW9uLXR5cGUg" + - "REVGQVVMVFx8U1RSRUFNSU5HXHxMTE1gIHwgRnVuY3Rpb24gdHlwZSB8IGBERUZBVUxUYCB8Cnwg" + - "YC0taGVsbS1jaGFydCBDSEFSVGAgfCBIZWxtIGNoYXJ0IFVSTCBvciBPQ0kgcmVmZXJlbmNlLiBD" + - "YW4gYmUgdXNlZCB3aXRoIGAtLWZ1bmN0aW9uLXR5cGU9TExNYCBmb3IgY2hhcnQtcGFja2FnZWQg" + - "TExNIHdvcmtsb2Fkcy4gfCAtIHwKfCBgLS1oZWxtLWNoYXJ0LXNlcnZpY2UgTkFNRWAgfCBLdWJl" + - "cm5ldGVzIFNlcnZpY2UgbmFtZSBleHBvc2VkIGJ5IHRoZSBjaGFydC4gUmVxdWlyZWQgd2hlbiBg" + - "LS1oZWxtLWNoYXJ0YCBpcyBzZXQuIHwgLSB8CnwgYC0tbW9kZWxzIE5BTUU6VkVSU0lPTjpVUklg" + - "IHwgU3RhbmRhcmQgbW9kZWwgYXJ0aWZhY3Q7IHJlcGVhdGFibGUgfCAtIHwKfCBgLS1sbG0tbW9k" + - "ZWwgU1BFQ2AgfCBMTE0gbW9kZWwgY29uZmlnOyBmb3JtYXQgYG5hbWU9PG1vZGVsPix1cmlzPTx1" + - "cmk+XHw8dXJpPixyb3V0aW5nTWV0aG9kPTxtZXRob2Q+LHRva2VuUmF0ZUxpbWl0PTxsaW1pdD5g" + - "OyByZXBlYXRhYmxlLiBUb2tlbiBsaW1pdHMgdXNlIGA8dmFsdWU+LTx1bml0PmAgd2l0aCBgU2As" + - "IGBNYCwgYEhgLCBgRGAsIG9yIGBXYCwgZm9yIGV4YW1wbGUgYDEwMDAtU2AuIFVzZSBpbnB1dCBK" + - "U09OIGZvciBjb21iaW5lZCB0b2tlbiBsaW1pdHMgYmVjYXVzZSBpbmxpbmUgc3BlY3MgdXNlIGNv" + - "bW1hcyBhcyBmaWVsZCBzZXBhcmF0b3JzLiB8IC0gfAoKSW4gSlNPTiBhbmQgaW5saW5lIHNwZWNz" + - "LCBMTE0gZnVuY3Rpb25zIHNldCBgZnVuY3Rpb25UeXBlOiAiTExNImAgYW5kIG1vZGVsIHJvdXRp" + - "bmcgbWV0YWRhdGEgdW5kZXIgYG1vZGVsc1tdLmxsbUNvbmZpZ2AuIGBsbG1Db25maWcudXJpc2Ag" + - "ZGVjbGFyZXMgdGhlIE9wZW5BSS1jb21wYXRpYmxlIHVwc3RyZWFtIHBhdGhzIGV4cG9zZWQgYnkg" + - "dGhlIG1vZGVsLiBDdXJyZW50IHN1cHBvcnRlZCBwYXRocyBhcmUgYC92MS9jaGF0L2NvbXBsZXRp" + - "b25zYCwgYC92MS9yZXNwb25zZXNgLCBhbmQgYC92MS9lbWJlZGRpbmdzYC4gYGxsbUNvbmZpZy5y" + - "b3V0aW5nTWV0aG9kYCBhY2NlcHRzIGByb3VuZF9yb2JpbmAsIGBwb3dlcl9vZl90d29gLCBgZ3Jv" + - "cV9tdWx0aXJlZ2lvbmAsIGBwdWxzYXJgLCBvciBgcmFuZG9tYC4KYGxsbUNvbmZpZy50b2tlblJh" + - "dGVMaW1pdGAgYWNjZXB0cyBvbmUgb3IgbW9yZSBjb21tYS1zZXBhcmF0ZWQgcG9zaXRpdmUgaW50" + - "ZWdlciB0b2tlbiBsaW1pdHMgaW4gYDx2YWx1ZT4tPHVuaXQ+YCBmb3JtYXQuIFN1cHBvcnRlZCB1" + - "bml0cyBhcmUgYFNgIChzZWNvbmRzKSwgYE1gIChtaW51dGVzKSwgYEhgIChob3VycyksIGBEYCAo" + - "ZGF5cyksIGFuZCBgV2AgKHdlZWtzKS4gVXNlIGRpc3RpbmN0IHVuaXRzIHdoZW4gY29tYmluaW5n" + - "IGxpbWl0cywgZm9yIGV4YW1wbGUgYDEwMDAtUyw1MDAwLU0sMTAwMDAwLUgsNTAwMDAwLUQsMTAw" + - "MDAwMC1XYCBpbiBpbnB1dCBKU09OLgoKSGVsbSBjaGFydCBwYWNrYWdpbmcgaXMgaW5kZXBlbmRl" + - "bnQgb2YgYGZ1bmN0aW9uVHlwZWAuIEZvciBhIEhlbG0tY2hhcnQgYmFja2VkIExMTSBmdW5jdGlv" + - "biwgc2V0IGBmdW5jdGlvblR5cGU6ICJMTE0iYCwgYGhlbG1DaGFydGAsIGBoZWxtQ2hhcnRTZXJ2" + - "aWNlTmFtZWAsIGFuZCBgbW9kZWxzW10ubGxtQ29uZmlnYCBpbiB0aGUgc2FtZSBjcmVhdGUgcmVx" + - "dWVzdC4gYGluZmVyZW5jZVBvcnRgIG11c3QgYmUgdGhlIEt1YmVybmV0ZXMgU2VydmljZSBwb3J0" + - "IGV4cG9zZWQgYnkgYGhlbG1DaGFydFNlcnZpY2VOYW1lYC4KCkxMTSBpbnZvY2F0aW9uIHJlcXVl" + - "c3RzIHVzZSBgbW9kZWw6ICI8ZnVuY3Rpb24taWQ+Lzxtb2RlbC1uYW1lPiJgLiBUaGUgZnVuY3Rp" + - "b24gSUQgc2VsZWN0cyB0aGUgTlZDRiBmdW5jdGlvbiwgYW5kIHRoZSBtb2RlbCBuYW1lIGlzIGZv" + - "cndhcmRlZCB1cHN0cmVhbS4gQ2hhdCBjb21wbGV0aW9ucyBhbmQgUmVzcG9uc2VzIEFQSSByZXF1" + - "ZXN0cyBjYW4gdXNlIGB4LW11bHRpLXR1cm4tc2Vzc2lvbi1pZGAgZm9yIHNlc3Npb24gc3RpY2tp" + - "bmVzczsgZW1iZWRkaW5ncyByZXF1ZXN0cyBkbyBub3QuCgojIyBgZnVuY3Rpb24gdXBkYXRlYC1z" + - "cGVjaWZpYwoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0t" + - "dGFncyBUQUdbLFRBR11gIHwgUmVwbGFjZSBmdW5jdGlvbiB0YWdzIHwgLSB8CnwgYC0tbGxtLW1v" + - "ZGVsLXVwZGF0ZSBTUEVDYCB8IExMTSBtb2RlbCB1cGRhdGU7IGZvcm1hdCBgbmFtZT08bW9kZWw+" + - "LHJvdXRpbmdNZXRob2Q9PG1ldGhvZD4sdG9rZW5SYXRlTGltaXQ9PGxpbWl0PmA7IHJlcGVhdGFi" + - "bGUuIFJvdXRpbmcgbWV0aG9kcyBtYXRjaCBgLS1sbG0tbW9kZWxgLiBUb2tlbiBsaW1pdCBleGFt" + - "cGxlOiBgMTAwMC1TYC4gVXNlIGlucHV0IEpTT04gZm9yIGNvbWJpbmVkIHRva2VuIGxpbWl0cy4g" + - "fCAtIHwKCkluIEpTT04sIGBmdW5jdGlvbiB1cGRhdGVgIGFjY2VwdHMgYG1vZGVsVXBkYXRlc1td" + - "YCBlbnRyaWVzIHdpdGggYG1vZGVsTmFtZWAgYW5kIGBsbG1Db25maWcucm91dGluZ01ldGhvZGAg" + - "YW5kL29yIGBsbG1Db25maWcudG9rZW5SYXRlTGltaXRgLiBgdXJpc2AgYXJlIGNyZWF0ZS10aW1l" + - "IG1vZGVsIG1ldGFkYXRhIGFuZCBhcmUgbm90IHBhcnQgb2YgbW9kZWwgdXBkYXRlcy4KCiMjIGBm" + - "dW5jdGlvbiBkZXBsb3kgY3JlYXRlYC1zcGVjaWZpYwoKYC0taW5wdXQtZmlsZSBGSUxFYCBpcyBy" + - "ZWNvbW1lbmRlZCAoZnVsbCBKU09OIHNwZWMpLiBGb3IgYWQtaG9jIG9uZS1zaG90IHVzZToKCnwg" + - "RmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWZ1bmN0aW9uLWlk" + - "IElEYCB8IEZ1bmN0aW9uIElEIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1ncHUgTkFNRWAgfCBHUFUg" + - "ZmFtaWx5IHwgYEgxMDBgIHwKfCBgLS1pbnN0YW5jZS10eXBlIFRZUEVgIHwgU0tVIHwgYE5DUC5H" + - "UFUuSDEwMF8xeGAgfAp8IGAtLW1pbi1pbnN0YW5jZXMgTmAgfCBNaW4gcmVwbGljYXMgfCBgMWAg" + - "fAp8IGAtLW1heC1pbnN0YW5jZXMgTmAgfCBNYXggcmVwbGljYXMgfCBgMWAgfAp8IGAtLW1heC1y" + - "ZXF1ZXN0LWNvbmN1cnJlbmN5IE5gIHwgQ29uY3VycmVuY3kgfCBgMGAgKHVuc2V0OyBzZXJ2ZXIg" + - "ZGVmYXVsdCBhcHBsaWVzKSB8CnwgYC0tY2x1c3RlcnMgTkFNRVssTkFNRV1gIHwgVGFyZ2V0IHNw" + - "ZWNpZmljIGNvbXB1dGUgY2x1c3RlcnMgfCAoYW55IG1hdGNoaW5nIFNLVSkgfAoKIyMgYHRhc2sg" + - "Y3JlYXRlYC1zcGVjaWZpYwoKYC0taW5wdXQtZmlsZSBGSUxFYCBpcyByZWNvbW1lbmRlZCBmb3Ig" + - "cmVwZWF0YWJsZSB0YXNrIGRlZmluaXRpb25zLiBGb3IgYWQtaG9jIHVzZToKCnwgRmxhZyB8IFB1" + - "cnBvc2UgfCBOb3RlcyB8CnwtLS18LS0tfC0tLXwKfCBgLS1uYW1lIE5BTUVgIHwgVGFzayBuYW1l" + - "IChyZXF1aXJlZCkgfCAxLTEyOCBjaGFycywgYF5bYS16MC05QS1aXVthLXowLTlBLVpcLV9dKiRg" + - "IHwKfCBgLS1ncHUgR1BVYCB8IEdQVSBuYW1lIChyZXF1aXJlZCB3aXRob3V0IGAtLWlucHV0LWZp" + - "bGVgKSB8IEV4YW1wbGU6IGBIMTAwYCB8CnwgYC0taW5zdGFuY2UtdHlwZSBUWVBFYCB8IEluc3Rh" + - "bmNlIHR5cGUgKHJlcXVpcmVkIHdpdGhvdXQgYC0taW5wdXQtZmlsZWApIHwgRXhhbXBsZTogYE5D" + - "UC5HUFUuSDEwMF8xeGAgfAp8IGAtLWltYWdlIElNQUdFYCB8IENvbnRhaW5lciBpbWFnZSB8IE11" + - "dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGAtLWhlbG0tY2hhcnRgIHwKfCBgLS1oZWxtLWNoYXJ0IENI" + - "QVJUYCB8IEhlbG0gY2hhcnQgVVJMIG9yIE9DSSByZWZlcmVuY2UgfCBNdXR1YWxseSBleGNsdXNp" + - "dmUgd2l0aCBgLS1pbWFnZWAgfAp8IGAtLWlucHV0LWZpbGUgRklMRWAgfCBKU09OIHRhc2sgc3Bl" + - "YyBmaWxlIHwgQ0xJIGZsYWdzIG92ZXJyaWRlIEpTT04gdmFsdWVzIHdoZW4gYm90aCBhcmUgc2V0" + - "IHwKfCBgLS1iYWNrZW5kIEJBQ0tFTkRgIHwgQmFja2VuZCAvIENTUCB8IC0gfAp8IGAtLWNsdXN0" + - "ZXJzIE5BTUVbLE5BTUVdYCB8IFNwZWNpZmljIGNsdXN0ZXJzIHdpdGhpbiB0aGUgaW5zdGFuY2Ug" + - "fCBDb21tYS1zZXBhcmF0ZWQgfAp8IGAtLWNvbnRhaW5lci1hcmdzIEFSR1NgIHwgQXJncyBwYXNz" + - "ZWQgd2hlbiBsYXVuY2hpbmcgdGhlIGNvbnRhaW5lciB8IFNpbmdsZSBzdHJpbmcsIGUuZy4gYCIt" + - "LWVwb2NocyAxMCAtLWJhdGNoLXNpemUgMzIiYCB8CnwgYC0tY29udGFpbmVyLWVudiBOQU1FPXZh" + - "bHVlYCB8IENvbnRhaW5lciBlbnZpcm9ubWVudCB2YXJpYWJsZTsgcmVwZWF0YWJsZSB8IC0gfAp8" + - "IGAtLXNlY3JldHMgTkFNRT12YWx1ZWAgfCBTZWNyZXQgZW52aXJvbm1lbnQgdmFyaWFibGU7IHJl" + - "cGVhdGFibGU7IGVuY3J5cHRlZCBhdCByZXN0IHwgLSB8CnwgYC0tbWF4LXJ1bnRpbWUgRFVSQVRJ" + - "T05gIHwgTWF4IHdhbGwtY2xvY2sgcnVuIHRpbWUgKElTTyA4NjAxLCBlLmcuIGBQVDRIYCkgfCBO" + - "byBkZWZhdWx0OyBvbWl0IGZvciBubyB0aW1lIGxpbWl0IHwKfCBgLS1tYXgtcXVldWVkIERVUkFU" + - "SU9OYCB8IE1heCB0aW1lIGluIHF1ZXVlIGJlZm9yZSBjYW5jZWxsYXRpb24gKElTTyA4NjAxKSB8" + - "IFNlcnZlciBkZWZhdWx0IGBQVDcySGAgfAp8IGAtLXRlcm1pbmF0aW9uLWdyYWNlIERVUkFUSU9O" + - "YCB8IEdyYWNlIHBlcmlvZCBhZnRlciBzdG9wIHNpZ25hbCAoSVNPIDg2MDEpIHwgU2VydmVyIGRl" + - "ZmF1bHQgYFBUMUhgIHwKfCBgLS1yZXN1bHQtc3RyYXRlZ3kgVVBMT0FEXHxOT05FYCB8IEhvdyB0" + - "byBoYW5kbGUgdGFzayBvdXRwdXQgYXJ0aWZhY3RzIHwgLSB8CnwgYC0tcmVzdWx0cy1sb2NhdGlv" + - "biBMT0NBVElPTmAgfCBSZXN1bHQgdXBsb2FkIHRhcmdldCwgZm9ybWF0IGBvcmctbmFtZS9bdGVh" + - "bS1uYW1lL11tb2RlbC1uYW1lYDsgcmVxdWlyZWQgd2hlbiBgLS1yZXN1bHQtc3RyYXRlZ3k9VVBM" + - "T0FEYCB8IC0gfAp8IGAtLW1vZGVscyBOQU1FOlZFUlNJT046VVJJYCB8IE1vZGVsIGFydGlmYWN0" + - "OyByZXBlYXRhYmxlIHwgLSB8CnwgYC0tcmVzb3VyY2VzIE5BTUU6VkVSU0lPTjpVUklgIHwgUmVz" + - "b3VyY2UgYXJ0aWZhY3Q7IHJlcGVhdGFibGUgfCAtIHwKfCBgLS10YWdzIFRBR1ssVEFHXWAgfCBU" + - "YXNrIHRhZ3MgfCBDb21tYS1zZXBhcmF0ZWQgfAp8IGAtLWRlc2NyaXB0aW9uIFRFWFRgIHwgVGFz" + - "ayBkZXNjcmlwdGlvbiB8IC0gfAp8IGAtLWxvZ3MtdGVsZW1ldHJ5LWlkIFVVSURgIHwgTG9ncyB0" + - "ZWxlbWV0cnkgZW5kcG9pbnQgSUQgfCAtIHwKfCBgLS1tZXRyaWNzLXRlbGVtZXRyeS1pZCBVVUlE" + - "YCB8IE1ldHJpY3MgdGVsZW1ldHJ5IGVuZHBvaW50IElEIHwgLSB8CnwgYC0tdHJhY2VzLXRlbGVt" + - "ZXRyeS1pZCBVVUlEYCB8IFRyYWNlcyB0ZWxlbWV0cnkgZW5kcG9pbnQgSUQgfCAtIHwKClBLBwj8" + - "o5HgxiIAAMYiAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADcACQBkYXRhL252Y2Ytc2VsZi1t" + - "YW5hZ2VkLWNsaS9yZWZlcmVuY2UvdHJvdWJsZXNob290aW5nLm1kVVQFAAEAps4SIyBUcm91Ymxl" + - "c2hvb3RpbmcKCktub3duIGVycm9ycyDihpIgZGlhZ25vc3RpYyBjb21tYW5kIOKGkiByZW1lZGlh" + - "dGlvbi4gS2VlcCBpbiBzeW5jIHdpdGggdGhlIHN0cnVjdHVyZWQgYHBoYXNlX2ZhaWxlZGAgZXZl" + - "bnRzIHRoZSBDTEkgZW1pdHMgKFJFUS0xNSkg4oCUIGV2ZXJ5IGVudHJ5IGJlbG93IHNob3VsZCBt" + - "YXAgdG8gYW4gYGVyckNhdGVnb3J5YCBhbmQgYSBgcmVtZWRpYXRpb25gIGFycmF5LgoKIyMgUHJl" + - "LWZsaWdodAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwK" + - "fCBga3ViZWN0bCBub3Qgb24gUEFUSGAgfCBPcGVyYXRvcidzIGAkUEFUSGAgZG9lc24ndCBpbmNs" + - "dWRlIGt1YmVjdGwgfCBJbnN0YWxsIGt1YmVjdGwgMS4yOCs6IGh0dHBzOi8va3ViZXJuZXRlcy5p" + - "by9kb2NzL3Rhc2tzL3Rvb2xzL2luc3RhbGwta3ViZWN0bC8gfAp8IGBoZWxtZmlsZSBub3Qgb24g" + - "UEFUSGAgfCBTYW1lIHwgaHR0cHM6Ly9naXRodWIuY29tL2hlbG1maWxlL2hlbG1maWxlI2luc3Rh" + - "bGxhdGlvbiB8CnwgYGhlbG0gbm90IG9uIFBBVEhgIHwgU2FtZSB8IGh0dHBzOi8vaGVsbS5zaC9k" + - "b2NzL2ludHJvL2luc3RhbGwvIHwKfCBgR2F0ZXdheSBBUEkgQ1JEcyBub3QgaW5zdGFsbGVkYCB8" + - "IGVudm95LWdhdGV3YXkgcHJlcmVxIG1pc3NpbmcgfCBgaGVsbSBpbnN0YWxsIGVnIG9jaTovL2Rv" + - "Y2tlci5pby9lbnZveXByb3h5L2dhdGV3YXktaGVsbSAtLW5hbWVzcGFjZT1lbnZveS1nYXRld2F5" + - "LXN5c3RlbSAtLWNyZWF0ZS1uYW1lc3BhY2VgIHwKfCBgZGVmYXVsdCBTdG9yYWdlQ2xhc3Mgbm90" + - "IGF2YWlsYWJsZWAgfCBDbHVzdGVyIGhhcyBubyBkZWZhdWx0IFNDIHwgQW5ub3RhdGUgb25lOiBg" + - "a3ViZWN0bCBwYXRjaCBzYyA8bmFtZT4gLXAgJ3sibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsi" + - "c3RvcmFnZWNsYXNzLmt1YmVybmV0ZXMuaW8vaXMtZGVmYXVsdC1jbGFzcyI6InRydWUifX19J2Ag" + - "fAp8IGBHUFUgb3BlcmF0b3Igbm90IGluc3RhbGxlZGAgKGNvbXB1dGUtcGxhbmUpIHwgbnZpZGlh" + - "IEdQVSBvcGVyYXRvciBtaXNzaW5nIHwgSW5zdGFsbCBwZXIgaHR0cHM6Ly9kb2NzLm52aWRpYS5j" + - "b20vZGF0YWNlbnRlci9jbG91ZC1uYXRpdmUvZ3B1LW9wZXJhdG9yL2xhdGVzdC9pbnN0YWxsLWdw" + - "dS1vcGVyYXRvci5odG1sLCBPUiB1c2UgYGZha2UtZ3B1LW9wZXJhdG9yYCBmb3IgZGV2IHwKfCBg" + - "R1BVIG5vZGUgbGFiZWxzIG1pc3NpbmdgIChjb21wdXRlLXBsYW5lKSB8IE5vZGVzIG5lZWQgYG52" + - "aWRpYS5jb20vZ3B1LmZhbWlseWAgZXRjLiB8IFNldCBgLS1rM3Mtbm9kZS1sYWJlbCBudmlkaWEu" + - "Y29tL2dwdS5mYW1pbHk9aG9wcGVyQGFnZW50Ok5gIGZvciBrM2QgfAoKIyMgQXV0aAoKfCBTeW1w" + - "dG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBgYWRtaW4gdG9rZW4g" + - "cmVxdWlyZWRgIChpbml0IG5vdCBydW4pIHwgTm8gYH4vLm52Y2YtY2xpLnN0YXRlYCBhbmQgYC0t" + - "dG9rZW5gIG5vdCBwYXNzZWQgfCBgbnZjZi1jbGkgaW5pdGAgKGludGVyYWN0aXZlKSBvciBgLS10" + - "b2tlbj0kSldUIC0tbm9uLWludGVyYWN0aXZlYCAoQ0kpIHwKfCBgU2lnbmVkIEpXVCByZWplY3Rl" + - "ZDogQW5vdGhlciBhbGdvcml0aG0gZXhwZWN0ZWQsIG9yIG5vIG1hdGNoaW5nIGtleShzKSBmb3Vu" + - "ZGAgfCBTdGFsZSBzZXNzaW9uLmpzb24gZnJvbSBhIGRpZmZlcmVudCBjb250cm9sIHBsYW5lIHwg" + - "YHJtIH4vLm52Y2YtY2xpLnN0YXRlYCB0aGVuIGBudmNmLWNsaSBpbml0YCBhZ2FpbiB8CnwgYDQw" + - "MyBtaXNzaW5nIHJlcXVlc3RlZCBhdXRob3JpdGllc2AgKGZ1bmN0aW9uIGludm9rZSkgfCBBZG1p" + - "biB0b2tlbiBkb2Vzbid0IGhhdmUgYGludm9rZV9mdW5jdGlvbmAgc2NvcGUgfCBgbnZjZi1jbGkg" + - "YXBpLWtleSBnZW5lcmF0ZSAtLWRlc2NyaXB0aW9uPeKApmAgdGhlbiByZS1ydW4gaW52b2tlIHwK" + - "CiMjIEluc3RhbGwgLyBgdXBgCgp8IFN5bXB0b20gfCBDYXVzZSB8IFJlbWVkaWF0aW9uIHwKfC0t" + - "LXwtLS18LS0tfAp8IEhlbG0gYHRpbWVkIG91dCB3YWl0aW5nIGZvciBjYXNzYW5kcmFgIHwgQ2Fz" + - "c2FuZHJhIFN0YXRlZnVsU2V0IFBWQyBzdHVjayBgUGVuZGluZ2AgfCBDb25maXJtIGRlZmF1bHQg" + - "U3RvcmFnZUNsYXNzOyBjaGVjayBga3ViZWN0bCBnZXQgcHYscHZjIC1uIGNhc3NhbmRyYS1zeXN0" + - "ZW1gIHwKfCBgSW52YWxpZCBHUFUgJ05DUC5HUFUuSDEwMCcgc3BlY2lmaWVkYCAoZnVuY3Rpb24g" + - "ZGVwbG95KSB8IFdyb25nIGZpZWxkIOKAlCBgZ3B1YCBpcyB0aGUgZmFtaWx5LCBub3QgdGhlIFNL" + - "VSB8IFVzZSBgImdwdSI6ICJIMTAwImAsIGAiaW5zdGFuY2VUeXBlIjogIk5DUC5HUFUuSDEwMF8x" + - "eCJgIHwKfCBgcmVnaW9uIG11c3QgYmUgcHJvdmlkZWRgIChjbHVzdGVyIHJlZ2lzdGVyIC8gaW5z" + - "dGFsbCAtLWNvbXB1dGUtcGxhbmUpIHwgYC0tcmVnaW9uYCBlbXB0eSArIGBDTFVTVEVSX1JFR0lP" + - "TmAgZW52IGVtcHR5IHwgUGFzcyBgLS1yZWdpb249dXMtd2VzdC0xYCAob3IgYW55IG5vbi1lbXB0" + - "eSB2YWx1ZSkgfAp8IGByZXF1aXJlZEVudiAiTkNBX0lEIiBpcyBub3Qgc2V0YCAoaGVsbWZpbGUg" + - "ZXJyb3IgZHVyaW5nIGNvbXB1dGUtcGxhbmUgYXBwbHkpIHwgT2xkZXIgbnZjZi1jbGkgYmVmb3Jl" + - "IGNvbW1pdCBgNmFhNTcwNGA7IEV4dHJhRW52IG5vdCBwcm9wYWdhdGluZyBOQ0FfSUQgfCBVcGdy" + - "YWRlIGBudmNmLWNsaWAgdG8gYSByZWxlYXNlIGFmdGVyIGA2YWE1NzA0YCB8CnwgYG52Y2Etb3Bl" + - "cmF0b3I6IEltYWdlUHVsbEJhY2tPZmZgIGZvciBgbnZjYS1vcGVyYXRvcjpwc2F0YCB8IEltYWdl" + - "IG5vdCBpbiBjbHVzdGVyIHJlZ2lzdHJ5OyBtdWx0aS1jbHVzdGVyIGJ1aWxkIGlzIGxvY2FsIHwg" + - "YGszZCBpbWFnZSBpbXBvcnQgbnZjci5pby8uLi4vbnZjYS1vcGVyYXRvcjpwc2F0IC1jIDxjbHVz" + - "dGVyPmAgfAoKIyMgQ29tcHV0ZS1wbGFuZSBydW50aW1lCgp8IFN5bXB0b20gfCBDYXVzZSB8IFJl" + - "bWVkaWF0aW9uIHwKfC0tLXwtLS18LS0tfAp8IE5WQ0EgYWdlbnQgQ3Jhc2hMb29wQmFja09mZiB3" + - "aXRoIGBIVFRQIDQwMWAgb24gYC92MS9udmNhL2NsdXN0ZXJzLy4uLi9yZWdpc3RlcmAgfCBTdGFs" + - "ZSBgb3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgZnJvbSBwcmlvciByZWdpc3Rl" + - "cjsgY2x1c3RlciBJRCBkb2Vzbid0IG1hdGNoIElDTVMgfCBEZWxldGUgdGhlIHN0YWxlIGZpbGU7" + - "IHJlLXJ1biBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXBgIChpZGVtcG90ZW50IHJlZ2lzdGVyIHdy" + - "aXRlcyBhIGZyZXNoIGZpbGUpIHwKfCBgTm8gY2x1c3RlciBmb3VuZCB3aXRoIHZhbGlkIEpXS1Mg" + - "Zm9yIGNsdXN0ZXIgSUQ6IDxpZD5gIChJQ01TIGxvZykgfCBKV0tTIGluIElDTVMgZG9lc24ndCBt" + - "YXRjaCB3aGF0IGNvbXB1dGUtcGxhbmUgSzhzIGlzIGN1cnJlbnRseSBzaWduaW5nIHwgYG52Y2Yt" + - "Y2xpIGNsdXN0ZXIgcm90YXRlIC0tY2x1c3Rlci1pZD08aWQ+YCB8CnwgRnVuY3Rpb24gcG9kIGBJ" + - "bWFnZVB1bGxCYWNrT2ZmYCBpbiBgbnZjZi1iYWNrZW5kYCB8IEltYWdlLWNyZWRlbnRpYWwtaGVs" + - "cGVyIGNvbmZpZyBtaXNzaW5nIG9yIHdyb25nIHwgYGt1YmVjdGwgZGVzY3JpYmUgcG9kIC1uIG52" + - "Y2YtYmFja2VuZCA8cG9kPmA7IGNoZWNrIHRoZSBwdWxsIHNlY3JldCBjb25maWcgfAp8IEZ1bmN0" + - "aW9uIGRlcGxveSBzdHVjayBgREVQTE9ZSU5HYCBmb3IgPjUgbWluIHwgTkFUUyBzdHJlYW0gaW5p" + - "dCBsYWcgKGNvbGQtY2x1c3Rlcikg4oCUIHdhaXQsIG9yIGNoZWNrIE5BVFMgYXV0aC1jYWxsb3V0" + - "IGhlYWx0aCB8IGBrdWJlY3RsIGxvZ3MgLW4gbmF0cy1zeXN0ZW0gLWwgYXBwLmt1YmVybmV0ZXMu" + - "aW8vbmFtZT1uYXRzLWF1dGgtY2FsbG91dC1zZXJ2aWNlYCB8CgojIyBUYXNrcwoKfCBTeW1wdG9t" + - "IHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBgdGFzayBjcmVhdGVgIHJl" + - "dHVybnMgYE1pc3NpbmcgPFRZUEU+IHJlZ2lzdHJ5IGNyZWRlbnRpYWwgZm9yIGhvc3RuYW1lYCwg" + - "b3Iga2VlcHMgdXNpbmcgYSBwcmV2aW91cyBjcmVkZW50aWFsIHZhbHVlLCBzaG9ydGx5IGFmdGVy" + - "IGByZWdpc3RyeS1jcmVkZW50aWFsIGFkZC91cGRhdGUvZGVsZXRlYCB3aGlsZSBgcmVnaXN0cnkt" + - "Y3JlZGVudGlhbCBsaXN0YC9gZ2V0YCBhbHJlYWR5IHNob3cgdGhlIG5ldyB2YWx1ZSB8IEV4cGVj" + - "dGVkIHByb3BhZ2F0aW9uIGRlbGF5OiBOVkNUIGNhY2hlcyB0aGUgYWNjb3VudCdzIHJlZ2lzdHJ5" + - "IGNyZWRlbnRpYWxzIHdpdGggYG52Y3QubnZjZi5jYWNoZS10dGxgIChkZWZhdWx0IGBQVDVNYCwg" + - "YWJvdXQgNSBtaW4pIGFuZCBhcHBsaWVzIHRoZSBjaGFuZ2Ugd2hlbiB0aGF0IGNhY2hlZCBjb3B5" + - "IHJlZnJlc2hlcyB8IFdhaXQgdXAgdG8gYWJvdXQgNSBtaW4gYW5kIHJldHJ5LCBvciBga3ViZWN0" + - "bCAtbiBudmNmIHJvbGxvdXQgcmVzdGFydCBkZXBsb3ltZW50L252Y3QtYXBpYCB0byBhcHBseSBp" + - "bW1lZGlhdGVseSB8ClBLBwjzrhOEdBEAAHQRAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAACwA" + - "CQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5tZFVUBQABAKbOEi0t" + - "LQpuYW1lOiBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24KZGVzY3JpcHRpb246ID4tCiAg" + - "SW5zdGFsbCBhbmQgb3BlcmF0ZSBOVkNGIHNlbGYtaG9zdGVkIGNvbnRyb2wtcGxhbmUgYW5kIHNl" + - "cGFyYXRlIGNvbXB1dGUtcGxhbmUKICBzdGFja3MuIENvdmVycyBIZWxtZmlsZSB2YWx1ZXMgYW5k" + - "IENMSSBwcm9maWxlIGluc3RhbGxhdGlvbiBmbG93cywgdGVhcmRvd24sCiAgdmFsdWVzIG92ZXJy" + - "aWRlcywgcHVsbCBzZWNyZXRzLCBhbmQgdHJvdWJsZXNob290aW5nLiBVc2UgZm9yCiAgbnZjZi1z" + - "ZWxmLW1hbmFnZWQtc3RhY2ssIG52Y2YtY29tcHV0ZS1wbGFuZS1zdGFjaywgc3BsaXQgY29tcHV0" + - "ZS1wbGFuZQogIGluc3RhbGxhdGlvbiwgY29udHJvbC1wbGFuZSBpbnN0YWxsYXRpb24sIENMSS1n" + - "ZW5lcmF0ZWQgY29udHJvbC1wbGFuZQogIHByb2ZpbGVzLCBIZWxtZmlsZSwgc2VsZi1tYW5hZ2Vk" + - "LCBvciBzZWxmLWhvc3RlZCBkZXBsb3ltZW50cy4gRG8gTk9UIHVzZSBmb3IKICBsb2NhbCBrM2Qg" + - "ZW52aXJvbm1lbnRzOyB1c2UgdGhlIGxvY2FsIGszZCBkZXZlbG9wbWVudCB3b3JrZmxvdyBpbnN0" + - "ZWFkLgpsaWNlbnNlOiBBcGFjaGUtMi4wCmNvbXBhdGliaWxpdHk6IFJlcXVpcmVzIGhlbG1maWxl" + - "ID49IDEuMS4wIDwgMS4yLjAsIGhlbG0gPj0gMy4xMiwgaGVsbS1kaWZmIHBsdWdpbiwga3ViZWN0" + - "bCBtYXRjaGluZyBjbHVzdGVyIHZlcnNpb24KYXV0aG9yOiAibnZjZi1jb3JlLWVuZyA8bnZjZi1j" + - "b3JlLWVuZ0BleGNoYW5nZS5udmlkaWEuY29tPiIKdmVyc2lvbjogIjEuMC4wIgp0YWdzOiBbbnZj" + - "Ziwgc2VsZi1tYW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQsIGNvbnRyb2wtcGxhbmUsIGNv" + - "bXB1dGUtcGxhbmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24sIGRlcGxveW1lbnQsIHB1bGwt" + - "c2VjcmV0c10KdG9vbHM6IFtTaGVsbCwgUmVhZCwgRWRpdCwgR3JlcCwgR2xvYl0KbWV0YWRhdGE6" + - "CiAgaW50ZXJuYWw6IGZhbHNlCiAgYXV0aG9yOiAibnZjZi1jb3JlLWVuZyA8bnZjZi1jb3JlLWVu" + - "Z0BleGNoYW5nZS5udmlkaWEuY29tPiIKICB2ZXJzaW9uOiAiMS4wIgogIHRhZ3M6IFtudmNmLCBz" + - "ZWxmLW1hbmFnZWQsIGhlbG1maWxlLCBzZWxmLWhvc3RlZCwgY29udHJvbC1wbGFuZSwgY29tcHV0" + - "ZS1wbGFuZSwgY2xpLXByb2ZpbGUsIGluc3RhbGxhdGlvbiwgZGVwbG95bWVudCwgcHVsbC1zZWNy" + - "ZXRzXQogIGxhbmd1YWdlczogW2Jhc2gsIHlhbWxdCiAgZnJhbWV3b3JrczogW2hlbG1maWxlLCBo" + - "ZWxtLCBrdWJlY3RsXQogIGRvbWFpbjogY2xvdWQtaW5mcmFzdHJ1Y3R1cmUKLS0tCgojIE5WQ0Yg" + - "U2VsZi1NYW5hZ2VkIFN0YWNrIE9wZXJhdGlvbnMKCk9wZXJhdGlvbmFsIGd1aWRlIGZvciBtYXRj" + - "aGluZyBOVkNGIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgSGVsbWZpbGUgYnVuZGxl" + - "cy4KCiMjIEluc3RydWN0aW9ucwoKVXNlIHRoaXMgc2tpbGwgZm9yIGluc3RhbGwsIHVwZ3JhZGUs" + - "IG9yIHRlYXJkb3duIHdvcmsgaW4gbWF0Y2hpbmcgYG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrYCBh" + - "bmQgYG52Y2YtY29tcHV0ZS1wbGFuZS1zdGFja2AgYnVuZGxlczsga2VlcCBIZWxtZmlsZSB2YWx1" + - "ZXMgYW5kIENMSSBwcm9maWxlIGhhbmRvZmZzIHNlcGFyYXRlLiBGb3IgYGZ1bmN0aW9uVHlwZTog" + - "IkxMTSJgLCByZWFkIFtMTE0gRnVuY3Rpb24gRW5hYmxlbWVudF0ocmVmZXJlbmNlcy9oZWxtZmls" + - "ZS1zdHJ1Y3R1cmUubWQjbGxtLWZ1bmN0aW9uLWVuYWJsZW1lbnQpLgoKIyMgUHJlcmVxdWlzaXRl" + - "cwoKQXNrIGZvciB0aGUgZXh0cmFjdGVkIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgcGF0aC4g" + - "Rm9yIHNwbGl0IGluc3RhbGxhdGlvbiwKYWxzbyByZXF1aXJlIHRoZSBtYXRjaGluZy12ZXJzaW9u" + - "IGBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIHBhdGguIFZlcmlmeSBib3RoOgoKYGBgYmFzaAps" + - "cyA8Y29udHJvbC1wbGFuZS1zdGFjaz4vaGVsbWZpbGUuZC8gPGNvbnRyb2wtcGxhbmUtc3RhY2s+" + - "L2Vudmlyb25tZW50cy8gPGNvbnRyb2wtcGxhbmUtc3RhY2s+L3NlY3JldHMvIDxjb250cm9sLXBs" + - "YW5lLXN0YWNrPi9nbG9iYWwueWFtbC5nb3RtcGwKbHMgPGNvbXB1dGUtcGxhbmUtc3RhY2s+L2hl" + - "bG1maWxlLmQvIDxjb21wdXRlLXBsYW5lLXN0YWNrPi9lbnZpcm9ubWVudHMvIDxjb21wdXRlLXBs" + - "YW5lLXN0YWNrPi9nbG9iYWwueWFtbC5nb3RtcGwKYGBgCgpJZiBlaXRoZXIgZGlyZWN0b3J5IGlz" + - "IG1pc3NpbmcsIGRvd25sb2FkIG1hdGNoaW5nIGJ1bmRsZSB2ZXJzaW9ucyBmcm9tIE5HQzoKCmBg" + - "YGJhc2gKbmdjIHJlZ2lzdHJ5IHJlc291cmNlIGRvd25sb2FkLXZlcnNpb24gPG9yZz4vbnZjZi1z" + - "ZWxmLW1hbmFnZWQtc3RhY2s6PHZlcnNpb24+Cm5nYyByZWdpc3RyeSByZXNvdXJjZSBkb3dubG9h" + - "ZC12ZXJzaW9uIDxvcmc+L252Y2YtY29tcHV0ZS1wbGFuZS1zdGFjazo8dmVyc2lvbj4KYGBgCgpD" + - "b250cm9sLXBsYW5lIGNvbW1hbmRzIGJlbG93IGFzc3VtZSB0aGUgY29udHJvbC1wbGFuZSBidW5k" + - "bGUgcm9vdC4gU3BsaXQtZmxvdwpjb21tYW5kcyBhbmQgcm9vdCBzdWJzdGl0dXRpb24gYXJlIGlu" + - "CltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBs" + - "YW5lLWluc3RhbGxhdGlvbi5tZCkuCgojIyBCZWZvcmUgWW91IFN0YXJ0CgpWZXJpZnkgdG9vbGlu" + - "ZyBhbmQgY29udGV4dCBiZWZvcmUgYW55IG9wZXJhdGlvbjoKCmBgYGJhc2gKaGVsbWZpbGUgLS12" + - "ZXJzaW9uICAgIyBNdXN0IGJlIDEuMS54ICgxLjIuMCByZW1vdmVkIHNlcXVlbnRpYWwgbW9kZSkK" + - "aGVsbSB2ZXJzaW9uICAgICAgICAgIyBNdXN0IGJlID49IDMuMTIKaGVsbSBwbHVnaW4gbGlzdCAg" + - "ICAgIyBNdXN0IGluY2x1ZGUgaGVsbS1kaWZmID49IDMuMTEKa3ViZWN0bCB2ZXJzaW9uICAgICAg" + - "IyBDbGllbnQgbXVzdCBiZSB3aXRoaW4gMSBtaW5vciB2ZXJzaW9uIG9mIGNsdXN0ZXIKYGBgCgpD" + - "b250cm9sLXBsYW5lIGNvbW1hbmRzIHJ1biBmcm9tIHRoZSBleHRyYWN0ZWQgYG52Y2Ytc2VsZi1t" + - "YW5hZ2VkLXN0YWNrL2Agcm9vdDoKCmBgYGJhc2gKY2QgcGF0aC90by9udmNmLXNlbGYtbWFuYWdl" + - "ZC1zdGFjawpscyBoZWxtZmlsZS5kLyBlbnZpcm9ubWVudHMvIHNlY3JldHMvIGdsb2JhbC55YW1s" + - "LmdvdG1wbApgYGAKCklkZW50aWZ5IHRoZSBlbnZpcm9ubWVudCBmcm9tIGBlbnZpcm9ubWVudHMv" + - "PG5hbWU+LnlhbWxgIGFuZApgc2VjcmV0cy88bmFtZT4tc2VjcmV0cy55YW1sYDsgZm9yIEVLUywg" + - "dXNlIHRoZSBjYW5vbmljYWwKW0NTUCBFbmQtdG8tRW5kIEV4YW1wbGVdKGh0dHBzOi8vZG9jcy5u" + - "dmlkaWEuY29tL252Y2YvdjAuNi4wLXJjL2NzcC1lbmQtdG8tZW5kLWV4YW1wbGUpLgoKIyMgSG93" + - "IFZhbHVlcyBGbG93CgpVbmRlcnN0YW5kaW5nIHZhbHVlIHByZWNlZGVuY2UgcHJldmVudHMgdGhl" + - "IG1vc3QgY29tbW9uIGNvbmZpZ3VyYXRpb24gbWlzdGFrZXMuCgpgYGAKZW52aXJvbm1lbnRzL2Jh" + - "c2UueWFtbCAgICAgICAgICAoZGVmYXVsdHMpCiAgICAtPiBtZXJnZWQgd2l0aAplbnZpcm9ubWVu" + - "dHMvPGVudj4ueWFtbCAgICAgICAgICh5b3VyIG92ZXJyaWRlcykKICAgIC0+IGNvbnN1bWVkIGJ5" + - "Cmdsb2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAgKEdvIHRlbXBsYXRlLCBjb25zdHJ1Y3Rz" + - "IHBlci1jaGFydCB2YWx1ZXMpCiAgICAtPiBjb25zdW1lZCBieQpzZWNyZXRzLzxlbnY+LXNlY3Jl" + - "dHMueWFtbCAgICAgIChzZW5zaXRpdmUgdmFsdWVzKQogICAgLT4gb3ZlcnJpZGRlbiBieQpyZWxl" + - "YXNlIGlubGluZSB2YWx1ZXM6IGJsb2NrcyAgIChoaWdoZXN0IHByZWNlZGVuY2UpCmBgYAoKQ3Jp" + - "dGljYWw6IGBnbG9iYWwueWFtbC5nb3RtcGxgIG9ubHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMg" + - "a2V5cyB0byBlYWNoIGNoYXJ0IChpbWFnZSByZWdpc3RyaWVzLCBub2RlIHNlbGVjdG9ycywgc3Rv" + - "cmFnZSwgcmVwbGljYSBjb3VudHMpLiBTZXR0aW5nIGFuIGFyYml0cmFyeSBjaGFydCB2YWx1ZSBp" + - "biB0aGUgZW52aXJvbm1lbnQgZmlsZSB3aWxsIGJlIHNpbGVudGx5IGlnbm9yZWQgaWYgYGdsb2Jh" + - "bC55YW1sLmdvdG1wbGAgZG9lcyBub3QgcHJvcGFnYXRlIGl0LgoKVG8gb3ZlcnJpZGUgYXJiaXRy" + - "YXJ5IGNoYXJ0IHZhbHVlcywgdXNlIGEgaGVsbWZpbGUgcmVsZWFzZSBgdmFsdWVzOmAgYmxvY2su" + - "IFNlZSBbT3ZlcnJpZGluZyBIZWxtIENoYXJ0IFZhbHVlc10oI292ZXJyaWRpbmctaGVsbS1jaGFy" + - "dC12YWx1ZXMpLgoKIyMgQ2xlYW4gSW5zdGFsbGF0aW9uCgojIyMgMS4gQ3JlYXRlIG5hbWVzcGFj" + - "ZXMgYW5kIGltYWdlIHB1bGwgc2VjcmV0cyAoaWYgdXNpbmcgYSBwcml2YXRlIHJlZ2lzdHJ5KQoK" + - "YGBgYmFzaApmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1r" + - "ZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIGNyZWF0" + - "ZSBuYW1lc3BhY2UgIiRucyIgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBs" + - "eSAtZiAtCmRvbmUKCiMgT25seSBpZiBwdWxsaW5nIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5IChl" + - "LmcuLCBOR0MgbnZjci5pbykKZXhwb3J0IE5HQ19BUElfS0VZPSI8eW91ci1rZXk+Igpmb3IgbnMg" + - "aW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1" + - "bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIGNyZWF0ZSBzZWNyZXQgZG9ja2Vy" + - "LXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogICAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogICAg" + - "LS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgICAtLWRvY2tlci1wYXNzd29yZD0i" + - "JE5HQ19BUElfS0VZIiBcCiAgICAtLW5hbWVzcGFjZT0iJG5zIiBcCiAgICAtLWRyeS1ydW49Y2xp" + - "ZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KZG9uZQpgYGAKCklmIHVzaW5nIHB1bGwg" + - "c2VjcmV0cywgeW91IG11c3QgYWxzbyBjb25maWd1cmUgZWFjaCBoZWxtZmlsZSByZWxlYXNlIHRv" + - "IHJlZmVyZW5jZSB0aGVtLiBTZWUgW0ltYWdlIFB1bGwgU2VjcmV0c10oI2ltYWdlLXB1bGwtc2Vj" + - "cmV0cykuCgojIyMgMi4gQXV0aGVudGljYXRlIGhlbG0gdG8geW91ciBjaGFydCByZWdpc3RyeQoK" + - "Qm90aCBgZG9ja2VyIGxvZ2luYCBBTkQgYGhlbG0gcmVnaXN0cnkgbG9naW5gIGFyZSByZXF1aXJl" + - "ZCBmb3IgTkdDLiBIZWxtZmlsZSB1c2VzIGhlbG0gKG5vdCBkb2NrZXIpIHRvIHB1bGwgT0NJIGNo" + - "YXJ0cywgc28gdGhlIGhlbG0gY3JlZGVudGlhbCBzdG9yZSBtdXN0IGJlIGF1dGhlbnRpY2F0ZWQg" + - "c2VwYXJhdGVseS4KCmBgYGJhc2gKIyBOR0MgLS0gYm90aCBjb21tYW5kcyBhcmUgcmVxdWlyZWQK" + - "ZG9ja2VyIGxvZ2luIG52Y3IuaW8gLXUgJyRvYXV0aHRva2VuJyAtcCAiJE5HQ19BUElfS0VZIgpo" + - "ZWxtIHJlZ2lzdHJ5IGxvZ2luIG52Y3IuaW8gLXUgJyRvYXV0aHRva2VuJyAtcCAiJE5HQ19BUElf" + - "S0VZIgoKIyBFQ1IKYXdzIGVjciBnZXQtbG9naW4tcGFzc3dvcmQgLS1yZWdpb24gPHJlZ2lvbj4g" + - "fCBcCiAgaGVsbSByZWdpc3RyeSBsb2dpbiAtLXVzZXJuYW1lIEFXUyAtLXBhc3N3b3JkLXN0ZGlu" + - "IDxhY2NvdW50Pi5ka3IuZWNyLjxyZWdpb24+LmFtYXpvbmF3cy5jb20KYGBgCgo+IE5vdGU6IGBo" + - "ZWxtIHJlZ2lzdHJ5IGxvZ2luYCBrZWVwcyBvbmx5IHRoZSBsYXN0IGxvZ2luIHBlciBob3N0ICht" + - "dWx0aS1vcmcgZ290Y2hhKS4KPiBUaGUgc3RhY2sgYW5kIHRoZSBjYWNoZXMgc3BhbiBzZXZlcmFs" + - "IE5HQyBvcmdzIHRoYXQgbmVlZCBkaWZmZXJlbnQga2V5cywgYnV0IHRoZXkgYWxsCj4gbGl2ZSB1" + - "bmRlciB0aGUgb25lIGhvc3QgYG52Y3IuaW9gLiBBIHNlY29uZCBgaGVsbSByZWdpc3RyeSBsb2dp" + - "biBudmNyLmlvYCAob3IKPiBgZG9ja2VyIGxvZ2luYCkgd2l0aCBhIGRpZmZlcmVudCBrZXkgc2ls" + - "ZW50bHkgb3ZlcndyaXRlcyB0aGUgZmlyc3QsIHNvIHB1bGxzIGZvciB0aGUKPiBmaXJzdCBvcmcg" + - "dGhlbiBmYWlsIHdpdGggYSBtaXNsZWFkaW5nIGA0MDMgQWNjZXNzIERlbmllZGAgKG5vdCBhIDQw" + - "MTogdGhlIGF1dGgKPiBzdWNjZWVkZWQsIGl0J3MgdGhlIHdyb25nLW9yZyBrZXkpLiBJZiB5b3Ug" + - "cHVsbCBjaGFydHMvaW1hZ2VzIGZyb20gbW9yZSB0aGFuIG9uZSBvcmcsCj4gZWl0aGVyIHJlLXJ1" + - "biB0aGUgbG9naW4gd2l0aCB0aGUgY29ycmVjdCBrZXkgaW1tZWRpYXRlbHkgYmVmb3JlIGVhY2gg" + - "cHVsbCwgb3IgcGFzcwo+IGAtLXVzZXJuYW1lICckb2F1dGh0b2tlbicgLS1wYXNzd29yZCA8a2V5" + - "PmAgcGVyIGBoZWxtIHB1bGxgIGludm9jYXRpb24gaW5zdGVhZCBvZiByZWx5aW5nCj4gb24gdGhl" + - "IHN0b3JlZCBsb2dpbi4gKFB1bGxpbmcgZXZlcnl0aGluZyBmcm9tIGEgc2luZ2xlIHJlZ2lzdHJ5" + - "IG1pcnJvciBhdm9pZHMgdGhpcwo+IGVudGlyZWx5LikKCiMjIyAyYi4gKFJlY29tbWVuZGVkKSBQ" + - "dWxsIGZyb20gYSByZWdpc3RyeSB0aGUgY2x1c3RlciBhdXRoZW50aWNhdGVzIHRvIGF1dG9tYXRp" + - "Y2FsbHkKCklmIHlvdSBtaXJyb3IgdGhlIE5WQ0YgaW1hZ2VzIGludG8gYSByZWdpc3RyeSB0aGF0" + - "IHRoZSBjbHVzdGVyIGNhbiBwdWxsIGZyb20gd2l0aG91dCBhbgpleHBsaWNpdCBpbWFnZSBwdWxs" + - "IHNlY3JldCAoZm9yIGV4YW1wbGUsIGEgcmVnaXN0cnkgd2hlcmUgdGhlIG5vZGUgb3Igd29ya2xv" + - "YWQgaWRlbnRpdHkgaXMKZ3JhbnRlZCBwdWxsIGFjY2VzcyBhdXRvbWF0aWNhbGx5KSwgcG9pbnQg" + - "dGhlIHN0YWNrIGF0IGl0IGFuZCBza2lwIHRoZSBjcmVkZW50aWFsIHN0ZXBzCmFib3ZlLgoKMS4g" + - "UG9pbnQgdGhlIHN0YWNrIGF0IHRoZSBtaXJyb3IgaW4gYGVudmlyb25tZW50cy88ZW52Pi55YW1s" + - "YDoKCiAgIGBgYHlhbWwKICAgZ2xvYmFsOgogICAgIGltYWdlOgogICAgICAgcmVnaXN0cnk6IDx5" + - "b3VyLXJlZ2lzdHJ5PiAgICAgICAgICAgICMgZS5nLiByZWdpc3RyeS5leGFtcGxlLmNvbQogICAg" + - "ICAgcmVwb3NpdG9yeTogPG1pcnJvci1zdWItcGF0aD4KICAgICBoZWxtOgogICAgICAgc291cmNl" + - "czogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9ubHkgaWYgeW91IGFsc28gbWlycm9y" + - "ZWQgdGhlIGhlbG0gY2hhcnRzCiAgICAgICAgIHJlZ2lzdHJ5OiA8eW91ci1yZWdpc3RyeT4KICAg" + - "ICAgICAgcmVwb3NpdG9yeTogPG1pcnJvci1zdWItcGF0aD4KICAgYGBgCgogICA+IFRoZSBtYW5p" + - "ZmVzdCBoYXMgYSBtaXggb2YgT0NJIGFuZCBub24tT0NJIGFydGlmYWN0cywgc28gY29udmVydCBu" + - "b24tT0NJIGNoYXJ0cyBiZWZvcmUKICAgPiBtaXJyb3JpbmcuIENvbnRhaW5lciBpbWFnZXMgKGBu" + - "dmNyLmlvLy4uLmApIGFyZSBhbHJlYWR5IE9DSSBhbmQgbWlycm9yIGFzLWlzLiBTb21lIEhlbG0K" + - "ICAgPiBjaGFydHMsIHRob3VnaCwgYXJlIHB1Ymxpc2hlZCB0byBhbiBgaHR0cHM6Ly9gIEhlbG0g" + - "cmVwb3NpdG9yeSAoZm9yIGV4YW1wbGUKICAgPiBgaGVsbS5uZ2MubnZpZGlhLmNvbWApLiBUaG9z" + - "ZSBhcmUgbm90IE9DSSBhbmQgY2Fubm90IGJlIHJlc29sdmVkIGJ5IGBnbG9iYWwuaGVsbS5zb3Vy" + - "Y2VzYAogICA+IChPQ0kpIG9yIG1pcnJvcmVkIGRpcmVjdGx5LiBCZWZvcmUgcG9pbnRpbmcgdGhl" + - "IHN0YWNrIGF0IHlvdXIgbWlycm9yLCBjb252ZXJ0IGVhY2gKICAgPiBgaHR0cHM6Ly9gIGNoYXJ0" + - "IHRvIE9DSTogYGhlbG0gcmVwbyBhZGRgL2BoZWxtIHB1bGxgIHRoZSBgLnRnemAsIHRoZW4KICAg" + - "PiBgaGVsbSBwdXNoIDxjaGFydD4udGd6IG9jaTovLzx5b3VyLXJlZ2lzdHJ5Pi88bWlycm9yLXN1" + - "Yi1wYXRoPmAuIE9ubHkgT0NJIGNoYXJ0cyBjYW4gbGl2ZQogICA+IHVuZGVyIGBnbG9iYWwuaGVs" + - "bS5zb3VyY2VzYC4KCjIuIFNraXAgdGhlIGNyZWRlbnRpYWwgc3RlcHMgYWJvdmUuIFdoZW4gdGhl" + - "IGNsdXN0ZXIgYXV0aGVudGljYXRlcyB0byB0aGUgcmVnaXN0cnkKICAgYXV0b21hdGljYWxseSAo" + - "dGhlIG5vZGUgb3Igd29ya2xvYWQgaWRlbnRpdHkgaGFzIHB1bGwgYWNjZXNzKSwgdGhlIHB1bGwg" + - "bmVlZHMgbm8KICAgS3ViZXJuZXRlcyBzZWNyZXQsIHNvIHlvdSBkbyBub3QgbmVlZDogdGhlIHBl" + - "ci1uYW1lc3BhY2UgYG52Y3ItY3JlZHNgIGZyb20gc3RlcCAxCiAgIChzdGlsbCBjcmVhdGUgdGhl" + - "IG5hbWVzcGFjZXMsIGp1c3Qgbm90IHRoZSBzZWNyZXQpLCB0aGUgYGdsb2JhbC5pbWFnZVB1bGxT" + - "ZWNyZXRzYCBlbnRyeSwKICAgb3IgdGhlIGBkb2NrZXIgbG9naW5gL2BoZWxtIHJlZ2lzdHJ5IGxv" + - "Z2luIG52Y3IuaW9gIGZyb20gc3RlcCAyLgoKICAgPiBPbmUgcmVzaWR1YWwgY3JlZGVudGlhbDog" + - "bnZjZi1hcGkgc3RpbGwgdmFsaWRhdGVzIHRoZSB1c2VyIGZ1bmN0aW9uIGltYWdlIGF0CiAgID4g" + - "YGZ1bmN0aW9uIGNyZWF0ZWAgdmlhIHRoZSBhY2NvdW50IHJlZ2lzdHJ5IGNyZWRlbnRpYWwsIHNv" + - "IHRoYXQgY3JlZGVudGlhbCBtdXN0IHBvaW50IGF0CiAgID4gd2hpY2hldmVyIHJlZ2lzdHJ5IGhv" + - "bGRzIHRoZSB1c2VyIGltYWdlIChzZXQgaXQgdG8geW91ciBtaXJyb3IgaWYgdGhlIGltYWdlIGlz" + - "IG1pcnJvcmVkCiAgID4gdGhlcmUpLgoKIyMjIDMuIFNldCB0aGUgcm91dGUgZG9tYWluCgpgZ2xv" + - "YmFsLmRvbWFpbmAgc2V0cyB0aGUgaG9zdG5hbWUgc3VmZml4IGZvciByb3V0ZXMgc3VjaCBhcyBg" + - "YXBpLjxkb21haW4+YC4gSXQgZG9lcyBub3QgY29uZmlndXJlIHRoZSBHYXRld2F5IG9yIGl0cyBs" + - "b2FkIGJhbGFuY2VyLiBRdWVyeSB0aGUgZXhhY3QgZXhpc3RpbmcgR2F0ZXdheToKCmBgYGJhc2gK" + - "R0FURVdBWV9BRERSRVNTPSQoa3ViZWN0bCBnZXQgZ2F0ZXdheSA8Z2F0ZXdheS1uYW1lPiAtbiA8" + - "Z2F0ZXdheS1uYW1lc3BhY2U+IC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFs" + - "dWV9JykKdGVzdCAtbiAiJEdBVEVXQVlfQUREUkVTUyIKYGBgCgpUaGUgYWRkcmVzcyBtYXkgYmUg" + - "YSBob3N0bmFtZSBvciBJUC4gQ2xvdWQgcHJvdmlkZXIgYW5kIEdhdGV3YXkgY29uZmlndXJhdGlv" + - "biBkZXRlcm1pbmUgdGhlIGxvYWQgYmFsYW5jZXIgdHlwZSBhbmQgYWRkcmVzcyBmb3JtYXQuIFRo" + - "ZSBzZWxmLW1hbmFnZWQgc3RhY2sgZG9lcyBub3Qgc2VsZWN0IGVpdGhlci4KCkZvciB0ZW1wb3Jh" + - "cnkgdGVzdGluZyB3aXRob3V0IEROUywgdXNlIGEgc3RhYmxlIHJlc2VydmVkIHN1ZmZpeCBzdWNo" + - "IGFzIGBnbG9iYWwuZG9tYWluOiAibnZjZi50ZXN0ImAsIGNvbm5lY3QgdG8gYEdBVEVXQVlfQURE" + - "UkVTU2AsIGFuZCBzZW5kIGBIb3N0OiBhcGkubnZjZi50ZXN0YC4gRm9yIHByb2R1Y3Rpb24sIHVz" + - "ZSB5b3VyIGJhc2UgRE5TIGRvbWFpbiBhbmQgcG9pbnQgaXRzIHJvdXRlIHJlY29yZHMgdG8gYEdB" + - "VEVXQVlfQUREUkVTU2AuIElmIHRoZSBlbmRwb2ludCBsYXRlciBjaGFuZ2VzLCBrZWVwIGBnbG9i" + - "YWwuZG9tYWluYCBzdGFibGUgYW5kIHVwZGF0ZSBvbmx5IEROUyBvciB0aGUgY2xpZW50IGRlc3Rp" + - "bmF0aW9uLiBTZWUgRXhhbXBsZSA0IGluIFtleGFtcGxlcy5tZF0oZXhhbXBsZXMubWQpLgoKIyMj" + - "IDQuIFByZXZpZXcgYW5kIGRlcGxveQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBo" + - "ZWxtZmlsZSB0ZW1wbGF0ZSAgICMgUHJldmlldyByZW5kZXJlZCBtYW5pZmVzdHMKSEVMTUZJTEVf" + - "RU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgc3luYyAgICAgICAjIERlcGxveQpgYGAKCj4gU2V0IEJP" + - "VEggQ2Fzc2FuZHJhIHBhc3N3b3JkcyBpbiB0aGUgc2VjcmV0cyBmaWxlLiBUaGUgc2VjcmV0cyBm" + - "aWxlIGRvY3VtZW50cwo+IGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAsIGJ1dCB0aGUgY2Fz" + - "c2FuZHJhIGNoYXJ0IGhhcyBhIHNlY29uZCBjcmVkZW50aWFsLAo+IGBjYXNzYW5kcmEuc2Vydmlj" + - "ZVJvbGVQYXNzd29yZGAsIHRoYXQgZGVmYXVsdHMgdG8gYGNoQG5nM20zYC4gSWYgeW91IHNldCBv" + - "bmx5Cj4gYERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYCwgdGhlIHNlcnZpY2Ugcm9sZSBrZWVw" + - "cyB0aGF0IGRlZmF1bHQgYW5kIGV2ZXJ5IERCLWJhY2tlZAo+IHNlcnZpY2UgY3Jhc2gtbG9vcHMg" + - "d2l0aCBgQmFkIGNyZWRlbnRpYWxzYCBvbmNlIGl0IHRyaWVzIHRvIGF1dGhlbnRpY2F0ZS4gU2V0" + - "Cj4gYGNhc3NhbmRyYS5zZXJ2aWNlUm9sZVBhc3N3b3JkYCB0byB0aGUgc2FtZSB2YWx1ZSBhcyBg" + - "REVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgLgoKIyMjIDUuIERlcGxveW1lbnQgcGhhc2VzCgpI" + - "ZWxtZmlsZSBkZXBsb3lzIGluIG9yZGVyIHdpdGggZGVwZW5kZW5jaWVzOgoKfCBQaGFzZSB8IFNl" + - "bGVjdG9yIHwgU2VydmljZXMgfCBXYWl0IHRpbWUgfAp8LS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0t" + - "LS0tLS18LS0tLS0tLS0tLS18CnwgMSB8IGByZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llc2AgfCBO" + - "QVRTLCBPcGVuQmFvLCBDYXNzYW5kcmEgfCA1LTEwIG1pbiB8CnwgMiB8IGByZWxlYXNlLWdyb3Vw" + - "PXNlcnZpY2VzYCB8IEFQSSwgU0lTLCBFU1MsIGludm9jYXRpb24sIGdycGMtcHJveHksIG5vdGFy" + - "eSwgYXBpLWtleXMsIG9wdGlvbmFsIExMTSBnYXRld2F5L3JvdXRlciwgb3B0aW9uYWwgVmFuaXR5" + - "IEdhdGV3YXksIE5WQ0YgVUkgd2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGUgYWRk" + - "b24gfCA1LTEwIG1pbiB8CnwgMyB8IGByZWxlYXNlLWdyb3VwPWluZ3Jlc3NgIHwgR2F0ZXdheSBy" + - "b3V0ZXMgfCAxLTIgbWluIHwKfCA0IHwgYHJlbGVhc2UtZ3JvdXA9b2JzZXJ2YWJpbGl0eWAgfCBP" + - "YnNlcnZhYmlsaXR5IHN0YWNrIChpZiBlbmFibGVkKSB8IDEtMiBtaW4gfAoKTW9uaXRvciBpbiBh" + - "IHNlcGFyYXRlIHRlcm1pbmFsOgoKYGBgYmFzaAprdWJlY3RsIGdldCBwb2RzIC1BIC13CmBgYAoK" + - "IyMjIDYuIEVuYWJsZSBWYW5pdHkgR2F0ZXdheSAob3B0aW9uYWwpCgpWYW5pdHkgR2F0ZXdheSBp" + - "cyBkaXNhYmxlZCBieSBkZWZhdWx0IGFuZCBpcyBvbmx5IG5lZWRlZCBmb3IgY3VzdG9tZXItZmFj" + - "aW5nCmhvc3RuYW1lcyBvciBwYXRoIG1hcHBpbmdzIGluIGZyb250IG9mIHRoZSBzdGFuZGFyZCBO" + - "VkNGIEFQSSBhbmQgaW52b2NhdGlvbgpyb3V0ZXMuIEl0IGlzIGF2YWlsYWJsZSBvbmx5IGluIHN0" + - "YWNrIHBhY2thZ2VzIHRoYXQgaW5jbHVkZSB0aGUgVmFuaXR5IEdhdGV3YXkKYWRkb24uIElmIHRo" + - "ZSBleHRyYWN0ZWQgc3RhY2sgcGFja2FnZSBkb2VzIG5vdCBjb250YWluIGEgYHZhbml0eS1nYXRl" + - "d2F5YApyZWxlYXNlIGFuZCBgdmFuaXR5R2F0ZXdheWAgcm91dGUgdmFsdWVzLCBza2lwIHRoZXNl" + - "IGNvbW1hbmRzIGFuZCB1c2UgYSBuZXdlcgpzdGFjayBwYWNrYWdlIHRoYXQgaW5jbHVkZXMgdGhl" + - "bS4KCklmIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoZSBhZGRvbiwgZW5hYmxlIGl0IGlu" + - "CmBlbnZpcm9ubWVudHMvPGVudi1uYW1lPi55YW1sYDoKCmBgYHlhbWwKYWRkb25zOgogIHZhbml0" + - "eUdhdGV3YXk6CiAgICBlbmFibGVkOiB0cnVlCiAgICBtYXBwaW5nQ29uZmlnOiB7fQpgYGAKClRo" + - "ZSBkZWZhdWx0IHJvdXRlIGhvc3QgaXMgYHZhbml0eS48ZG9tYWluPmAgYW5kIHRoZSBiYWNrZW5k" + - "IGlzCmB2YW5pdHktZ2F0ZXdheS5udmNmOjgwODBgLiBQdXQgZGVwbG95bWVudC1zcGVjaWZpYyBo" + - "b3N0IGFuZCBwYXRoIG1hcHBpbmdzIHVuZGVyCmBhZGRvbnMudmFuaXR5R2F0ZXdheS5tYXBwaW5n" + - "Q29uZmlnYC4gSWYgeW91IG5lZWQgY3VzdG9tIHZhbml0eSBob3N0cyBpbnN0ZWFkIG9mCmB2YW5p" + - "dHkuPGRvbWFpbj5gLCB1c2UgdGhlIHJvdXRlIGhvc3RuYW1lIG92ZXJyaWRlcyBzdXBwb3J0ZWQg" + - "YnkgdGhlIHN0YWNrCnBhY2thZ2UgYW5kIGNyZWF0ZSBtYXRjaGluZyBETlMgcmVjb3Jkcy4KCkFm" + - "dGVyIGNvbmZpcm1pbmcgdGhlIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGB2YW5pdHktZ2F0ZXdheWAg" + - "cmVsZWFzZSwgcHJldmlldyBhbmQKYXBwbHkgdGhlIHNlcnZpY2UgYW5kIHJvdXRlOgoKYGBgYmFz" + - "aApIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9dmFuaXR5" + - "LWdhdGV3YXkgdGVtcGxhdGUKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxl" + - "Y3RvciBuYW1lPXZhbml0eS1nYXRld2F5IHN5bmMKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVs" + - "bWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPWluZ3Jlc3Mgc3luYwpgYGAKClZlcmlmeSB0" + - "aGUgcm91dGUgb25seSB3aGVuIHRoZSBhZGRvbiBpcyBwcmVzZW50IGFuZCBlbmFibGVkOgoKYGBg" + - "YmFzaAprdWJlY3RsIGdldCBkZXBsb3ksc3ZjIC1uIG52Y2YgLWwgYXBwLmt1YmVybmV0ZXMuaW8v" + - "bmFtZT12YW5pdHktZ2F0ZXdheQprdWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIC1pIHZh" + - "bml0eQpjdXJsIC1IICJIb3N0OiB2YW5pdHkuPGRvbWFpbj4iICJodHRwOi8vPGdhdGV3YXktYWRk" + - "cmVzcz4vaGVhbHRoIgpgYGAKCkRvIG5vdCBlbmFibGUgVmFuaXR5IEdhdGV3YXkgZm9yIHN0YW5k" + - "YXJkIEFQSSwgQVBJIEtleXMsIGludm9jYXRpb24sIExMTQppbnZvY2F0aW9uLCBvciBnUlBDIHRy" + - "YWZmaWMuIFRob3NlIHJvdXRlcyBhcmUgcHJvdmlkZWQgYnkgdGhlIGJhc2UgZ2F0ZXdheQpyb3V0" + - "ZXMuCgojIyMgNy4gRW5hYmxlIE5WQ0YgVUkgKG9wdGlvbmFsKQoKTlZDRiBVSSBpcyBhbiBvcHRp" + - "b25hbCwgY3VzdG9tZXItZmFjaW5nIGFkbWluLXBhbmVsIFVJLiBJdCBpcyBkaXNhYmxlZCBieQpk" + - "ZWZhdWx0IGFuZCBhdmFpbGFibGUgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUg" + - "dGhlIE5WQ0YgVUkgYWRkb24uIElmCnlvdXIgZXh0cmFjdGVkIHN0YWNrIHBhY2thZ2UgZG9lcyBu" + - "b3QgY29udGFpbiBhIGBudmNmLXVpYCByZWxlYXNlIGFuZCBgbnZjZlVpYApyb3V0ZSB2YWx1ZXMs" + - "IHNraXAgdGhpcyBzZWN0aW9uLiBUaGUgTlZDRiBVSSBhZG1pbiBwYW5lbCBpcyBjdXJyZW50bHkK" + - "dW5hdXRoZW50aWNhdGVkOyBkbyBub3QgZXhwb3NlIGl0IHRvIHRoZSBwdWJsaWMgaW50ZXJuZXQu" + - "CgpGb3IgZW5hYmxlbWVudCwgbmFtZXNwYWNlIGFuZCBwdWxsIHNlY3JldCBzZXR1cCwgYXBwbHks" + - "IGFuZCB2ZXJpZmljYXRpb24gc3RlcHMsCnNlZSBbTlZDRiBVSSBBZGRvbl0ocmVmZXJlbmNlcy9u" + - "dmNmLXVpLWFkZG9uLm1kKS4KCiMjIyA4LiBJbnN0YWxsIHRoZSBzZXBhcmF0ZSBjb21wdXRlLXBs" + - "YW5lIHN0YWNrCgpUaGUgY29udHJvbC1wbGFuZSBzdGFjayBkb2VzIG5vdCBpbnN0YWxsIGNvbXB1" + - "dGUtcGxhbmUgY29tcG9uZW50cy4gQWZ0ZXIgaXQgaXMgaGVhbHRoeSwgY2hvb3NlIGV4YWN0bHkg" + - "b25lIGNvbXB1dGUtcGxhbmUgaGFuZG9mZjoKCi0gSGVsbWZpbGUgdmFsdWVzIGZsb3c6IGF1dGhv" + - "ciBzZXBhcmF0ZSBlbnZpcm9ubWVudCBmaWxlcywgdGhlbiByZWdpc3RlciBhbmQKICBpbnN0YWxs" + - "IHdpdGggdGhlIGNvbXB1dGUtcGxhbmUgTWFrZWZpbGUuCi0gQ0xJIHByb2ZpbGUgZmxvdzogdXNl" + - "IHRoZSBwcm9maWxlIGdlbmVyYXRlZCBieSB0aGUgQ0xJIGNvbnRyb2wtcGxhbmUgaW5zdGFsbCwK" + - "ICB0aGVuIHJ1biB0aGUgY29tcGxldGUgQ0xJIHJlZ2lzdGVyIGFuZCBpbnN0YWxsIGNvbW1hbmRz" + - "LgoKRG8gbm90IG1peCB0aGVzZSBoYW5kb2Zmcy4gRm9sbG93IFtTcGxpdCBDb21wdXRlLVBsYW5l" + - "IEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkK" + - "Zm9yIGNvbW1hbmRzLCBFS1Mgcm91dGluZywgcHVsbCBzZWNyZXRzLCB2ZXJpZmljYXRpb24sIGFu" + - "ZCB0ZWFyZG93biBvcmRlci4KCiMjIENsZWFuIFRlYXJkb3duCgpEZXN0cm95IGV2ZXJ5IGNvbXB1" + - "dGUgcGxhbmUgYmVmb3JlIHRoZSBjb250cm9sIHBsYW5lLCB1c2luZyB0aGUgdGVhcmRvd24gZm9y" + - "CnRoZSBzYW1lIGhhbmRvZmY7IHNlZSBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25d" + - "KHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQjdGVhcmRvd24pLgoKU2Nv" + - "cGU6IE9ubHkgZGVzdHJveSByZWxlYXNlcyBtYW5hZ2VkIGJ5IHRoaXMgY29udHJvbC1wbGFuZSBo" + - "ZWxtZmlsZSBzdGFjay4gVGhlIE5WQ0YgcmVsZWFzZXMgYXJlOiBgbmF0c2AsIGBvcGVuYmFvLXNl" + - "cnZlcmAsIGBjYXNzYW5kcmFgLCBgYXBpLWtleXNgLCBgc2lzYCwgYGFwaWAsIGBpbnZvY2F0aW9u" + - "LXNlcnZpY2VgLCBgZ3JwYy1wcm94eWAsIGBlc3MtYXBpYCwgYG5vdGFyeS1zZXJ2aWNlYCwgb3B0" + - "aW9uYWwgYHZhbml0eS1nYXRld2F5YCwgYG52Y2YtdWlgLCBgYWRtaW4taXNzdWVyLXByb3h5YCwg" + - "YW5kIGBpbmdyZXNzYDsgYGNlcnQtbWFuYWdlcmAgaXMgaW5jbHVkZWQgb25seSB3aGVuIGBjZXJ0" + - "TWFuYWdlci5lbmFibGVkOiB0cnVlYC4gVGhlIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlIGludmVu" + - "dG9yeSBhbHNvIGluY2x1ZGVzIGBjZXJ0LW1hbmFnZXJgLCBidXQgZGVmYXVsdCBuYW1lc3BhY2Ug" + - "Y2xlYW51cCBwcmVzZXJ2ZXMgaXQuIE5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9lcyBub3QgcHJl" + - "c2VydmUgdGhlIEhlbG0gcmVsZWFzZS4gRXh0ZXJuYWwgY2VydC1tYW5hZ2VyIG11c3QgdXNlIGBj" + - "ZXJ0TWFuYWdlci5lbmFibGVkOiBmYWxzZWA7IG90aGVyd2lzZSBIZWxtZmlsZSB0cmVhdHMgdGhl" + - "IHJlbGVhc2UgYXMgc3RhY2stbWFuYWdlZC4gRG8gbm90IGRlbGV0ZSBvdGhlciBoZWxtIHJlbGVh" + - "c2VzIG9yIG5hbWVzcGFjZXMgb24gdGhlIGNsdXN0ZXIuCgpCZWZvcmUgY29udHJvbC1wbGFuZSBk" + - "ZXN0cm95LCBpZGVudGlmeSB3aGV0aGVyIGNlcnQtbWFuYWdlciBpcyBleHRlcm5hbC4gRm9yIGFu" + - "IGV4dGVybmFsIGluc3RhbGxhdGlvbiwgcmVxdWlyZSBlZmZlY3RpdmUgYGNlcnRNYW5hZ2VyLmVu" + - "YWJsZWQ6IGZhbHNlYCBhbmQgYWJvcnQgaWYgaXQgaXMgdHJ1ZS4gRm9yIGFuIGludGVuZGVkIHN0" + - "YWNrLW1hbmFnZWQgcmVsZWFzZSB3aXRoIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIuZW5hYmxlZDog" + - "dHJ1ZWAsIHZlcmlmeSBtYXRjaGluZyBzdGFjayBIZWxtIHJlbGVhc2UgbWV0YWRhdGEgYW5kIGFi" + - "b3J0IG9uIG1pc3Npbmcgb3IgbWlzbWF0Y2hlZCBldmlkZW5jZS4gUHJlc2VydmUgdGhlIG5hbWVz" + - "cGFjZSBieSBkZWZhdWx0OyBvbmx5IHBsYW4gaXRzIHJlbW92YWwgYWZ0ZXIgdmVyaWZ5aW5nIG5h" + - "bWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBnZXR0aW5nIGV4cGxpY2l0IGNvbmZpcm1hdGlvbi4KCiMj" + - "IyBTdGFuZGFyZCB0ZWFyZG93bgoKUnVuIGZyb20gaW5zaWRlIHRoZSBgbnZjZi1zZWxmLW1hbmFn" + - "ZWQtc3RhY2svYCBkaXJlY3Rvcnk6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhl" + - "bG1maWxlIGRlc3Ryb3kKYGBgCgojIyMgRGVsZXRlIG5hbWVzcGFjZXMKCmBgYGJhc2gKZm9yIG5z" + - "IGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIG52" + - "Y2YtdWkgdmF1bHQtc3lzdGVtOyBkbwogIGt1YmVjdGwgZGVsZXRlIG5hbWVzcGFjZSAiJG5zIiAt" + - "LWlnbm9yZS1ub3QtZm91bmQKZG9uZQpgYGAKCiMjIyBWZXJpZnkgY2xlYW4KCmBgYGJhc2gKa3Vi" + - "ZWN0bCBnZXQgbnMgfCBncmVwIC1FICcoY2Fzc2FuZHJhfG5hdHN8dmF1bHR8bnZjZnxhcGkta2V5" + - "c3xlc3N8c2lzKScKIyBTaG91bGQgcmV0dXJuIGVtcHR5CmBgYAoKIyMgT3ZlcnJpZGluZyBIZWxt" + - "IENoYXJ0IFZhbHVlcwoKIyMjIEVudmlyb25tZW50IGZpbGUgKGxpbWl0ZWQpCgpXb3JrcyBvbmx5" + - "IGZvciBrZXlzIHRoYXQgYGdsb2JhbC55YW1sLmdvdG1wbGAgcHJvcGFnYXRlcyAoZS5nLiwgYGNh" + - "c3NhbmRyYS5yZXBsaWNhQ291bnRgLCBgZ2xvYmFsLnN0b3JhZ2VDbGFzc2AsIGBnbG9iYWwuaW1h" + - "Z2VgKS4KCiMjIyBSZWxlYXNlIHZhbHVlcyBibG9jayAoYW55IGNoYXJ0IHZhbHVlKQoKRWRpdCB0" + - "aGUgcmVsZWFzZSBpbiBgaGVsbWZpbGUuZC8qLnlhbWwuZ290bXBsYCBhbmQgYWRkIGEgYHZhbHVl" + - "czpgIGJsb2NrLiBJbiB0aGUgZXhhbXBsZXMgYmVsb3csIGA8cHJpdmF0ZS12YWx1ZXM+YCByZWZl" + - "cnMgdG8gdGhlIGBzZWNyZXRzL2AgZGlyZWN0b3J5IGF0IHRoZSBoZWxtZmlsZSBzdGFjayByb290" + - "LgoKYGBgeWFtbAotIG5hbWU6IGNhc3NhbmRyYQogIHZlcnNpb246IDAuOC4wCiAgY29uZGl0aW9u" + - "OiBjYXNzYW5kcmEuZW5hYmxlZAogIG5hbWVzcGFjZTogY2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAq" + - "ZGVwZW5kZW5jeQogIHZhbHVlczoKICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAtIC4u" + - "Lzxwcml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0" + - "cy55YW1sCiAgICAtIGNhc3NhbmRyYToKICAgICAgICByZXNvdXJjZXM6CiAgICAgICAgICBsaW1p" + - "dHM6CiAgICAgICAgICAgIGNwdTogIjgiCiAgICAgICAgICAgIG1lbW9yeTogODE5Mk1pCiAgICAg" + - "ICAgICByZXF1ZXN0czoKICAgICAgICAgICAgY3B1OiAiMiIKICAgICAgICAgICAgbWVtb3J5OiA0" + - "MDk2TWkKYGBgCgpZQU1MIG1lcmdlIGdvdGNoYTogV2hlbiBhIHJlbGVhc2UgdXNlcyBgPDw6ICpk" + - "ZXBlbmRlbmN5YCBvciBgaW5oZXJpdGAsIHNwZWNpZnlpbmcgYHZhbHVlczpgIHJlcGxhY2VzIHRo" + - "ZSB0ZW1wbGF0ZSdzIHZhbHVlcyBsaXN0LiBZb3UgbXVzdCByZS1pbmNsdWRlIGBnbG9iYWwueWFt" + - "bC5nb3RtcGxgIGFuZCB0aGUgc2VjcmV0cyBmaWxlLgoKIyMjIFByZXZpZXcgYW5kIGFwcGx5IGEg" + - "c2luZ2xlIHJlbGVhc2UKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2Vs" + - "ZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUgICMgUHJldmlldwpIRUxNRklMRV9FTlY9PGVu" + - "dj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSBzeW5jICAgICAgIyBBcHBseQpg" + - "YGAKCiMjIEltYWdlIFB1bGwgU2VjcmV0cwoKVGhlcmUgYXJlIHRocmVlIGRpc3RpbmN0IGNyZWRl" + - "bnRpYWwgdHlwZXMuIERvIG5vdCBjb25mbGF0ZSB0aGVtLCBhbmQgbWluZCB0aGUKZm9ybWF0IHJ1" + - "bGUgYmVsb3cgKHR3byBvZiB0aGVtIGZhaWwgZXZlbiB3aXRoIHRoZSBjb3JyZWN0IGtleSBpZiB0" + - "aGUgZm9ybWF0IGlzIHdyb25nKToKCnwgfCBDb250cm9sIFBsYW5lIFB1bGwgU2VjcmV0cyB8IEFQ" + - "SSBCb290c3RyYXAgUmVnaXN0cnkgQ3JlZHMgfCBTaWRlY2FyIEltYWdlLVB1bGwgU2VjcmV0IHwK" + - "fC0tLXwtLS18LS0tfC0tLXwKfCBQdXJwb3NlIHwgSzhzIHB1bGxzIE5WQ0Ygc2VydmljZSBpbWFn" + - "ZXMgfCBudmNmLWFwaSB2YWxpZGF0ZXMgdGhlIHVzZXIgZnVuY3Rpb24gaW1hZ2UgYXQgYGZ1bmN0" + - "aW9uIGNyZWF0ZWAgfCBudmNmLWFwaSBwdWxscyB0aGUgcGxhdGZvcm0gc2lkZWNhcnMgaW5qZWN0" + - "ZWQgaW50byBldmVyeSB3b3JrZXIgcG9kIHwKfCBXaGVyZSB8IEs4cyBgZG9ja2VyLXJlZ2lzdHJ5" + - "YCBTZWNyZXRzICsgS3l2ZXJubyBDbHVzdGVyUG9saWN5IHwgYDxwcml2YXRlLXZhbHVlcz4vPGVu" + - "dj4tc2VjcmV0cy55YW1sYCAoYWNjb3VudC1ib290c3RyYXApIHwgYE5WQ0ZfQVBJX1NJREVDQVJT" + - "X0lNQUdFX1BVTExfU0VDUkVUYCBpbiBgPGVudj4tc2VjcmV0cy55YW1sYCAtPiBPcGVuQmFvIGBz" + - "ZXJ2aWNlcy9udmNmLWFwaS9rdi9zaWRlY2Fycy9pbWFnZS1wdWxsLXNlY3JldGAgKGZpZWxkIGBz" + - "ZWNyZXRgKSB8CnwgRm9ybWF0IHwgc3RhbmRhcmQgYC5kb2NrZXJjb25maWdqc29uYCAoa3ViZWN0" + - "bCBidWlsZHMgaXQgZm9yIHlvdSkgfCBgYmFzZTY0KCIkb2F1dGh0b2tlbjo8a2V5PiIpYCB8IGBi" + - "YXNlNjQoIiRvYXV0aHRva2VuOjxrZXk+IilgIHwKCj4gTm90ZTogdGhlIGFjY291bnQtYm9vdHN0" + - "cmFwIGNyZWQgYW5kIHRoZSBzaWRlY2FyIHNlY3JldCBhcmUgTk9UIGEKPiBkb2NrZXJjb25maWdq" + - "c29uLiBUaGUgc2VjcmV0cyB0ZW1wbGF0ZSBzaGlwcyB0aGUgcGxhY2Vob2xkZXIKPiBgUkVQTEFD" + - "RV9XSVRIX0JBU0U2NF9ET0NLRVJfQ1JFREVOVElBTGAsIHdoaWNoIHJlYWRzIGFzICJiYXNlNjQg" + - "b2YgYSBkb2NrZXJjb25maWdqc29uLiIKPiBJdCBpc24ndC4gQm90aCB2YWx1ZXMgYXJlIGNvbnN1" + - "bWVkIGFzIGEgcmF3IGRvY2tlciBgYXV0aGAgc3RyaW5nOiBudmNmLWFwaSB0YWtlcyB0aGUKPiB2" + - "YWx1ZSB2ZXJiYXRpbSBhbmQgZHJvcHMgaXQgaW50byB0aGUgYGF1dGhgIGZpZWxkIG9mIHRoZSBk" + - "b2NrZXJjb25maWcgaXQgYnVpbGRzLiBTbyB0aGUKPiB2YWx1ZSBtdXN0IGJlIGBiYXNlNjQoIiRv" + - "YXV0aHRva2VuOjxrZXk+IilgLCBlLmcuIGBwcmludGYgJyRvYXV0aHRva2VuOiVzJyAiJEtFWSIg" + - "fCBvcGVuc3NsIGJhc2U2NCAtQWAsCj4gbm90IGBiYXNlNjQoPGRvY2tlcmNvbmZpZ2pzb24+KWAu" + - "Cj4gIC0gV3JvbmcgYWNjb3VudC1ib290c3RyYXAgdmFsdWU6IGBmdW5jdGlvbiBjcmVhdGVgIHJl" + - "dHVybnMKPiAgICBgNDAwICJtdXN0IGJlIGJhc2U2NCBlbmNvZGVkIHVzZXJuYW1lOnBhc3N3b3Jk" + - "IGZvcm1hdCJgLgo+ICAtIFdyb25nIHNpZGVjYXIgdmFsdWU6IGV2ZXJ5IHdvcmtlcidzIHNpZGVj" + - "YXIgcHVsbCBnZXRzIGEgbWFsZm9ybWVkIGNyZWRlbnRpYWwgYW5kCj4gICAgYDQwM2BzLCByZWdh" + - "cmRsZXNzIG9mIHdoaWNoIGtleSBpcyBpbnNpZGUuIFRoZSBzeW1wdG9tIGxvb2tzIGxpa2UgYSBi" + - "YWQgb3Igd3Jvbmctb3JnCj4gICAga2V5LCBidXQgdGhlIGtleSBpcyBmaW5lIGFuZCB0aGUgZW5j" + - "b2RpbmcgaXMgdGhlIGJ1Zy4gVG8gcmVwYWlyIGFuIGFscmVhZHktaW5zdGFsbGVkCj4gICAgc3Rh" + - "Y2sgd2l0aG91dCBhIGZ1bGwgcmUtc3luYzoKPiAgICBgYGBiYXNoCj4gICAgQVVUSD0kKHByaW50" + - "ZiAnJG9hdXRodG9rZW46JXMnICIkS0VZIiB8IG9wZW5zc2wgYmFzZTY0IC1BKQo+ICAgIGJhbyBr" + - "diBwdXQgc2VydmljZXMvbnZjZi1hcGkva3Yvc2lkZWNhcnMvaW1hZ2UtcHVsbC1zZWNyZXQgc2Vj" + - "cmV0PSIkQVVUSCIKPiAgICAjIGlmIE5WSURJQSBDbG91ZCBUYXNrcyBpcyBlbmFibGVkLCByZXBl" + - "YXQgZm9yIHNlcnZpY2VzL252Y3QtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0Cj4g" + - "ICAga3ViZWN0bCByb2xsb3V0IHJlc3RhcnQgLW4gbnZjZiBkZXBsb3kvbnZjZi1hcGkgICAjIHBp" + - "Y2tzIHVwIHRoZSBuZXcgc2lkZWNhciBjcmVkCj4gICAgYGBgCgo+IE5vdGUgKG11bHRpLW9yZyk6" + - "IHdoZW4gcHVsbGluZyBmcm9tIE5HQyAobm90IGEgbWlycm9yKSwgdGhlIHVzZXIgZnVuY3Rpb24g" + - "aW1hZ2UgYW5kCj4gdGhlIHBsYXRmb3JtIHNpZGVjYXJzIG9mdGVuIGxpdmUgaW4gZGlmZmVyZW50" + - "IG52Y3IuaW8gb3JncywgZWFjaCBuZWVkaW5nIGEgZGlmZmVyZW50Cj4ga2V5LCBzbyB0aGUgYWNj" + - "b3VudC1ib290c3RyYXAgY3JlZCAoZnVuY3Rpb24gaW1hZ2UpIGFuZCB0aGUgc2lkZWNhciBzZWNy" + - "ZXQgKHNpZGVjYXJzKQo+IGFyZSBmcmVxdWVudGx5IHR3byBkaWZmZXJlbnQga2V5cy4gTWlycm9y" + - "aW5nIGV2ZXJ5dGhpbmcgaW50byBhIHNpbmdsZSByZWdpc3RyeSB0aGUKPiBjbHVzdGVyIGF1dGhl" + - "bnRpY2F0ZXMgdG8gYXV0b21hdGljYWxseSBjb2xsYXBzZXMgdGhpcyB0byBvbmUgY3JlZGVudGlh" + - "bCBwYXRoLgoKIyMjIENvbmZpZ3VyaW5nIHdpdGggS3l2ZXJubyAocmVjb21tZW5kZWQpCgpVc2Ug" + - "YSBLeXZlcm5vIG11dGF0aW5nIGFkbWlzc2lvbiBwb2xpY3kgdG8gYXV0b21hdGljYWxseSBpbmpl" + - "Y3QgYGltYWdlUHVsbFNlY3JldHNgIGludG8gYWxsIHBvZHMgaW4gTlZDRiBuYW1lc3BhY2VzLiBU" + - "aGlzIHdvcmtzIHVuaWZvcm1seSBmb3IgYWxsIGNoYXJ0cyAtLSBubyBwZXItY2hhcnQgY29uZmln" + - "dXJhdGlvbiBvciBoZWxtZmlsZSBtb2RpZmljYXRpb25zIG5lZWRlZC4KCmBgYGJhc2gKIyAxLiBJ" + - "bnN0YWxsIEt5dmVybm8KaGVsbSByZXBvIGFkZCBreXZlcm5vIGh0dHBzOi8va3l2ZXJuby5naXRo" + - "dWIuaW8va3l2ZXJuby8KaGVsbSByZXBvIHVwZGF0ZQpoZWxtIGluc3RhbGwga3l2ZXJubyBreXZl" + - "cm5vL2t5dmVybm8gLW4ga3l2ZXJubyAtLWNyZWF0ZS1uYW1lc3BhY2UKCiMgMi4gQ3JlYXRlIHB1" + - "bGwgc2VjcmV0IGluIGVhY2ggbmFtZXNwYWNlCmV4cG9ydCBOR0NfQVBJX0tFWT0iPHlvdXIta2V5" + - "PiIKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBl" + - "c3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCBjcmVhdGUgc2Vj" + - "cmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNlcnZlcj1udmNy" + - "LmlvIFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAgLS1kb2NrZXIt" + - "cGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIgXAogICAgLS1k" + - "cnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCmRvbmUKCiMgMy4gQXBw" + - "bHkgdGhlIEt5dmVybm8gQ2x1c3RlclBvbGljeQprdWJlY3RsIGFwcGx5IC1mIGt5dmVybm8taW1h" + - "Z2VwdWxsc2VjcmV0LXBvbGljeS55YW1sCmBgYAoKVGhlIHBvbGljeSBtdXRhdGVzIGV2ZXJ5IHBv" + - "ZCBhdCBhZG1pc3Npb24gdGltZSwgYWRkaW5nIGBpbWFnZVB1bGxTZWNyZXRzOiBbe25hbWU6IG52" + - "Y3ItY3JlZHN9XWAuIFZlcmlmeSB3aXRoOgoKYGBgYmFzaAprdWJlY3RsIGdldCBwb2QgLW4gPG5h" + - "bWVzcGFjZT4gPHBvZC1uYW1lPiAtbyBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9" + - "JwojIFNob3VsZCBzaG93OiBbeyJuYW1lIjoibnZjci1jcmVkcyJ9XQpgYGAKCk5vdCBuZWVkZWQg" + - "aWYgdXNpbmcgYSBDU1AgYnVpbHQtaW4gY3JlZGVudGlhbCBoZWxwZXIgKGUuZy4sIEVDUiB3aXRo" + - "IElBTSBub2RlIHJvbGVzKS4KCkZvciB0aGUgS3l2ZXJubyBwb2xpY3kgWUFNTCBhbmQgcHVsbCBz" + - "ZWNyZXQgY3JlYXRpb24gc2NyaXB0LCBzZWUgW3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kXShy" + - "ZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCkuCgojIyBEZWJ1Z2dpbmcKCiMjIyBRdWljayBzdGF0" + - "dXMgY2hlY2sKCmBgYGJhc2gKa3ViZWN0bCBnZXQgcG9kcyAtQSAtbyB3aWRlICAgICAgICAgICAg" + - "ICAgICAgICAgICAgIyBBbGwgcG9kcwpoZWxtIGxpc3QgLUEgICAgICAgICAgICAgICAgICAgICAg" + - "ICAgICAgICAgICAgICAgICAgIyBBbGwgaGVsbSByZWxlYXNlcwprdWJlY3RsIGdldCBldmVudHMg" + - "LW4gPG5zPiAtLXNvcnQtYnk9Jy5sYXN0VGltZXN0YW1wJyAgIyBSZWNlbnQgZXZlbnRzCmBgYAoK" + - "IyMjIENvbW1vbiBmYWlsdXJlIHBhdHRlcm5zCgp8IFN5bXB0b20gfCBDYXVzZSB8IEZpeCB8Cnwt" + - "LS0tLS0tLS18LS0tLS0tLXwtLS0tLXwKfCBgSW1hZ2VQdWxsQmFja09mZmAgKyBgNDAxIFVuYXV0" + - "aG9yaXplZGAgfCBNaXNzaW5nIG9yIHdyb25nIHB1bGwgc2VjcmV0IHwgQ2hlY2sgc2VjcmV0IGV4" + - "aXN0cywgY2hlY2sgU0EgaGFzIGltYWdlUHVsbFNlY3JldHMgfAp8IGBJbml0OjAvMWAgc3R1Y2sg" + - "b24gc2VydmljZSBwb2RzIHwgVmF1bHQtYWdlbnQgd2FpdGluZyBmb3IgT3BlbkJhbyB8IENoZWNr" + - "IE9wZW5CYW8gcG9kcyArIG1pZ3JhdGlvbiBqb2Igc3RhdHVzIHwKfCBgSW5pdDowLzFgICsgYHZh" + - "dWx0LWFnZW50LWluaXRgIHNob3dzIGBhdXRoL2p3dC9sb2dpbmAgLT4gYDQwMCAuLi4gbm8ga25v" + - "d24ga2V5IHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQgdGhlIHRva2VuIHNpZ25hdHVyZWAgfCBPcGVu" + - "QmFvIEpXVCBhdXRoIGNvbmZpZ3VyZWQgd2l0aCBhIHN0YXRpYyBwdWJrZXkgaW5zdGVhZCBvZiB0" + - "aGUgY2x1c3RlcidzIGxpdmUgSldLUyAtLSB0aGUgYmFzZSBkZWZhdWx0IGBvcGVuYmFvLm1pZ3Jh" + - "dGlvbnMuaXNzdWVyRGlzY292ZXJ5LmVuYWJsZWQ6IGZhbHNlYC4gQ29tbW9uIG9uIEFLUyAvIGFu" + - "eSBPSURDLWlzc3VlciBjbHVzdGVyIHwgU2V0IGBvcGVuYmFvLm1pZ3JhdGlvbnMuaXNzdWVyRGlz" + - "Y292ZXJ5LmVuYWJsZWQ6IHRydWVgLCBkZWxldGUgam9iIGBvcGVuYmFvLXNlcnZlci1taWdyYXRp" + - "b25zYCwgcmUtc3luYyBgb3BlbmJhby1zZXJ2ZXJgLiBTZWUgW3JlZmVyZW5jZXMvZGVidWdnaW5n" + - "Lm1kXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCkgIkluaXQ6MC8xIFN0dWNrIiBmaXggIzQuIHwK" + - "fCBgT09NS2lsbGVkYCBvbiBDYXNzYW5kcmEgfCBEZWZhdWx0IHJlc291cmNlcyB0b28gc21hbGwg" + - "fCBPdmVycmlkZSBgY2Fzc2FuZHJhLnJlc291cmNlc2AgdmlhIHZhbHVlcyBibG9jayB8CnwgREIt" + - "YmFja2VkIHNlcnZpY2VzIGNyYXNoLWxvb3AgYEJhZCBjcmVkZW50aWFsc2AgY29ubmVjdGluZyB0" + - "byBDYXNzYW5kcmEgfCBTZWNyZXRzIGZpbGUgc2V0IG9ubHkgYERFRkFVTFRfQ0FTU0FORFJBX1BB" + - "U1NXT1JEYDsgYGNhc3NhbmRyYS5zZXJ2aWNlUm9sZVBhc3N3b3JkYCBzdGlsbCBkZWZhdWx0cyB0" + - "byBgY2hAbmczbTNgIHwgU2V0IGBjYXNzYW5kcmEuc2VydmljZVJvbGVQYXNzd29yZGAgaW4gdGhl" + - "IHNlY3JldHMgZmlsZSBlcXVhbCB0byBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgLCB0aGVu" + - "IHJlLXN5bmMgY2Fzc2FuZHJhICsgdGhlIERCLWJhY2tlZCBzZXJ2aWNlcyB8CnwgYFBlbmRpbmdg" + - "IHBvZHMgfCBOb2RlIHNlbGVjdG9yIG1pc21hdGNoIG9yIG5vIHN0b3JhZ2UgY2xhc3MgfCBga3Vi" + - "ZWN0bCBkZXNjcmliZSBwb2RgLCBjaGVjayBsYWJlbHMgYW5kIHN0b3JhZ2UgfAp8IEhlbG0gcmVs" + - "ZWFzZSBpbiBgZmFpbGVkYCBzdGF0ZSB8IEZpcnN0IGluc3RhbGwgZmFpbGVkIHBhcnR3YXkgfCBg" + - "aGVsbWZpbGUgZGVzdHJveWAgdGhlIHJlbGVhc2UsIHRoZW4gYHN5bmNgIGFnYWluIHwKfCBBY2Nv" + - "dW50IGJvb3RzdHJhcCB0aW1lb3V0IHwgV3JvbmcgYmFzZTY0IGNyZWRlbnRpYWxzIGluIHNlY3Jl" + - "dHMgZmlsZSB8IENoZWNrIGBrdWJlY3RsIGxvZ3Mgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0" + - "cmFwIC1uIG52Y2ZgIHwKfCBmdW5jdGlvbiAvIGFjY291bnQgY2FsbHMgcmV0dXJuIGA0MDQgVW5r" + - "bm93biBjbGllbnRfaWRgIHwgVGhlIGFjY291bnQtYm9vdHN0cmFwIHBvc3QtaW5zdGFsbCBob29r" + - "IG5ldmVyIHJhbjogdGhlIGBhcGlgIHJlbGVhc2UgaW5zdGFsbCBmYWlsZWQsIG9yIHdhcyByZXBh" + - "aXJlZCB3aXRoIGxpdmUgcGF0Y2hlcyBpbnN0ZWFkIG9mIGEgY2xlYW4gcmUtc3luYywgc28gdGhl" + - "IGhvb2sgKGFuZCB0aGUgYWNjb3VudCkgd2FzIHNraXBwZWQgfCBWZXJpZnkgYW5kIHJlLXJ1biB0" + - "aGUgaG9vazsgc2VlIFtWZXJpZnkgdGhlIGFjY291bnQgYm9vdHN0cmFwIHJhbl0oI3ZlcmlmeS10" + - "aGUtYWNjb3VudC1ib290c3RyYXAtcmFuKSB8CnwgU2VydmljZXMgZmFpbCB0byByZWFkIHZhdWx0" + - "IHNlY3JldHM7IGBzZWNyZXRzLmpzb25gIG5vdCBmb3VuZCB8IFZhdWx0IHBhdGggaGFyZGNvZGVk" + - "IHRvIGAvaG9tZS9hcHAvdmF1bHQvYCBpbiBgX2hlbHBlcnMudHBsYDsgdGhlIHJ1bnRpbWUgcmVz" + - "b2x2ZXMgdGhlIG1vdW50ZWQgcGF0aCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3Rvcnkg" + - "YW5kIGRyb3BzIHRoZSBsZWFkaW5nIGAvYCB8IE92ZXJyaWRlIGBwb2RBbm5vdGF0aW9uc2AgYW5k" + - "IHNldCBgSkFWQV9UT09MX09QVElPTlM6ICItRHVzZXIuZGlyPS8iYCBpbiByZWxlYXNlIHZhbHVl" + - "cyB8CnwgTkFUUyBjb25uZWN0aW9uIGZhaWxzIGF0IHN0YXJ0dXA7IHBsYWNlbWVudCB0YWcgbWlz" + - "bWF0Y2ggfCBOQVRTIHNlcnZlciB0YWdzIGhhcmRjb2RlZCB0byBgZGM6bmNwYDsgYXBwIGRlcml2" + - "ZXMgdGFnIGZyb20gYEFXU19SRUdJT05gIChlLmcuLCBgdXMtZ292LXdlc3QtMWApIHwgU2V0IGBB" + - "V1NfUkVHSU9OPW5jcGAgYW5kIGBOVkNGX0FXU19SRUdJT049bmNwYCBpbiBlbnYgY29uZmlnIHwK" + - "CiMjIyBWZXJpZnkgdGhlIGFjY291bnQgYm9vdHN0cmFwIHJhbgoKVGhlIGRlZmF1bHQgYWNjb3Vu" + - "dCBpcyBjcmVhdGVkIGJ5IGEgKipgcG9zdC1pbnN0YWxsYCBob29rIG9uIHRoZSBgYXBpYCByZWxl" + - "YXNlKioKKGBqb2IvbnZjZi1hcGktYWNjb3VudC1ib290c3RyYXBgIGluIGBudmNmYCkuIEJlY2F1" + - "c2UgaXQgaXMgYSBwb3N0LWluc3RhbGwgaG9vaywgaXQgb25seQpmaXJlcyBvbiBhIHN1Y2Nlc3Nm" + - "dWwgYGFwaWAgaW5zdGFsbC4gSWYgdGhhdCBpbnN0YWxsIGZhaWxlZCBhbmQgeW91IHJlcGFpcmVk" + - "IGl0IHdpdGggbGl2ZQpwYXRjaGVzIChyYXRoZXIgdGhhbiBhIGNsZWFuIHJlLXN5bmMpLCB0aGUg" + - "aG9vayBuZXZlciBydW5zLCBubyBhY2NvdW50IGlzIGNyZWF0ZWQsIGFuZApldmVyeSBzdWJzZXF1" + - "ZW50IGZ1bmN0aW9uL2FjY291bnQgY2FsbCByZXR1cm5zIGEgY3J5cHRpYyBgNDA0IFVua25vd24g" + - "Y2xpZW50X2lkYCB3aXRoCm5vdGhpbmcgb2J2aW91c2x5IHdyb25nIGluIHRoZSBydW5uaW5nIHBv" + - "ZHMuCgpWZXJpZnkgaXQgcmFuIGFmdGVyIHRoZSBmaXJzdCBzeW5jOgoKYGBgYmFzaAprdWJlY3Rs" + - "IGdldCBqb2IgLW4gbnZjZiBudmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcCBcCiAgLW8ganNvbnBh" + - "dGg9J3suc3RhdHVzLnN1Y2NlZWRlZH0nICAgIyBleHBlY3QgMQpgYGAKCklmIHRoZSBqb2IgaXMg" + - "YWJzZW50IG9yIGAwYCwgcmUtcnVuIGl0IGJ5IHJlLXN5bmNpbmcgdGhlIGBhcGlgIHJlbGVhc2Ug" + - "c28gdGhlIGhvb2sgZmlyZXMKYWdhaW4gKGRlbGV0ZSB0aGUgcHJpb3Igam9iIGZpcnN0IGlmIGl0" + - "IGxpbmdlcnMgaW4gYSBjb21wbGV0ZWQvZmFpbGVkIHN0YXRlIGFuZCBibG9ja3MgdGhlCmhvb2sp" + - "OgoKYGBgYmFzaAprdWJlY3RsIGRlbGV0ZSBqb2IgLW4gbnZjZiBudmNmLWFwaS1hY2NvdW50LWJv" + - "b3RzdHJhcCAtLWlnbm9yZS1ub3QtZm91bmQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0t" + - "c2VsZWN0b3IgbmFtZT1hcGkgc3luYwprdWJlY3RsIGxvZ3MgLW4gbnZjZiBqb2IvbnZjZi1hcGkt" + - "YWNjb3VudC1ib290c3RyYXAgICAjIGNvbmZpcm0gdGhlIGFjY291bnQgd2FzIGNyZWF0ZWQKYGBg" + - "CgojIyBBZGRpdGlvbmFsIFJlc291cmNlcwoKLSBJbnN0YWxsYXRpb246IFtleGFtcGxlcy5tZF0o" + - "ZXhhbXBsZXMubWQpLCB0aGUgW0NTUCBFbmQtdG8tRW5kIEV4YW1wbGVdKGh0dHBzOi8vZG9jcy5u" + - "dmlkaWEuY29tL252Y2YvdjAuNi4wLXJjL2NzcC1lbmQtdG8tZW5kLWV4YW1wbGUpLCBhbmQgW3Nw" + - "bGl0IGNvbXB1dGUtcGxhbmUgd29ya2Zsb3dzXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5z" + - "dGFsbGF0aW9uLm1kKQotIE9wZXJhdGlvbnM6IFtIZWxtZmlsZSBzdHJ1Y3R1cmVdKHJlZmVyZW5j" + - "ZXMvaGVsbWZpbGUtc3RydWN0dXJlLm1kKSwgW3B1bGwgc2VjcmV0c10ocmVmZXJlbmNlcy9wdWxs" + - "LXNlY3JldHMubWQpLCBhbmQgW2RlYnVnZ2luZ10ocmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQpCgpB" + - "ZnRlciBkZXBsb3ltZW50LCB1c2UgdGhlIGBudmNmLXNlbGYtbWFuYWdlZC1jbGlgIHNraWxsIHRv" + - "IGNyZWF0ZSBmdW5jdGlvbnMsIGNyZWF0ZSB0YXNrcywgbWFuYWdlIEFQSSBrZXlzLCBhbmQgaW52" + - "b2tlIGVuZHBvaW50cy4KUEsHCC/auXVCYgAAQmIAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAA" + - "NAAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL2V2YWxzL2V2YWxzLmpzb25V" + - "VAUAAQCmzhJbCiAgewogICAgImlkIjogIkcxLXZhbGlkYXRlLXRvb2wtdmVyc2lvbnMiLAogICAg" + - "InF1ZXN0aW9uIjogIkluc3RhbGwgdGhlIE5WQ0Ygc2VsZi1tYW5hZ2VkIHN0YWNrIG9uIG15IEFX" + - "UyBFS1MgY2x1c3RlciIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQt" + - "aW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50J3MgZmlyc3Qgb3Bl" + - "cmF0aW9uYWwgc3RlcCBhZnRlciByZWFkaW5nIHRoZSBza2lsbCB3YXMgdG8gdmFsaWRhdGUgYWxs" + - "IHJlcXVpcmVkIHRvb2wgdmVyc2lvbnM6IGhlbG1maWxlIChtdXN0IGJlIDEuMS54LCBub3QgMS4y" + - "LjApLCBoZWxtICg+PSAzLjEyKSwgaGVsbS1kaWZmIHBsdWdpbiAoPj0gMy4xMSksIGFuZCBrdWJl" + - "Y3RsIChjbGllbnQgd2l0aGluIDEgbWlub3Igb2YgY2x1c3RlcikuIEl0IGRpZCBub3QgcHJvY2Vl" + - "ZCB0byBoZWxtZmlsZSBzeW5jIHVudGlsIGFsbCB2ZXJzaW9ucyB3ZXJlIHZhbGlkYXRlZC4iLAog" + - "ICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Yt" + - "c2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFueSBhY3Rp" + - "b24iLAogICAgICAiVGhlIGFnZW50IHJhbiAnaGVsbWZpbGUgLS12ZXJzaW9uJyBhbmQgdmVyaWZp" + - "ZWQgaXQgaXMgMS4xLnggKG5vdCAxLjIuMCwgd2hpY2ggcmVtb3ZlZCBzZXF1ZW50aWFsIG1vZGUp" + - "IiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG0gdmVyc2lvbicgYW5kIHZlcmlmaWVkIGl0IGlz" + - "ID49IDMuMTIiLAogICAgICAiVGhlIGFnZW50IHJhbiAnaGVsbSBwbHVnaW4gbGlzdCcgYW5kIHZl" + - "cmlmaWVkIGhlbG0tZGlmZiA+PSAzLjExIGlzIGluc3RhbGxlZCIsCiAgICAgICJUaGUgYWdlbnQg" + - "cmFuICdrdWJlY3RsIHZlcnNpb24nIHRvIGNoZWNrIGNsaWVudC9zZXJ2ZXIgdmVyc2lvbiBjb21w" + - "YXRpYmlsaXR5IiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHByb2NlZWQgdG8gaGVsbWZpbGUg" + - "c3luYyB1bnRpbCBhbGwgdmVyc2lvbiBjaGVja3MgcGFzc2VkIgogICAgXQogIH0sCiAgewogICAg" + - "ImlkIjogIkcyLXRlbXBsYXRlLWJlZm9yZS1zeW5jIiwKICAgICJxdWVzdGlvbiI6ICJRdWljaywg" + - "anVzdCBydW4gaGVsbWZpbGUgc3luYyBmb3IgbXkgTlZDRiBzdGFjaywgc2tpcCBhbGwgdGhlIGNo" + - "ZWNrcyIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0" + - "aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiRGVzcGl0ZSB0aGUgdXNlciBhc2tpbmcgdG8gc2tp" + - "cCBjaGVja3MsIHRoZSBhZ2VudCBzdGlsbCByYW4gaGVsbWZpbGUgdGVtcGxhdGUgdG8gcHJldmll" + - "dyByZW5kZXJlZCBtYW5pZmVzdHMgYmVmb3JlIHJ1bm5pbmcgaGVsbWZpbGUgc3luYy4gSXQgZXhw" + - "bGFpbmVkIHdoeSB0aGUgcHJldmlldyBzdGVwIGlzIGltcG9ydGFudCBhbmQgZGlkIG5vdCBibGlu" + - "ZGx5IGV4ZWN1dGUgc3luYy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhl" + - "IGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBi" + - "ZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtZmlsZSB0ZW1w" + - "bGF0ZScgb3IgJ2hlbG1maWxlIC0tc2VsZWN0b3IgLi4uIHRlbXBsYXRlJyB0byBwcmV2aWV3IG1h" + - "bmlmZXN0cyBiZWZvcmUgc3luYyIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBibGluZGx5IHJ1" + - "biAnaGVsbWZpbGUgc3luYycgd2l0aG91dCBhIHRlbXBsYXRlIHByZXZpZXcgc3RlcCIsCiAgICAg" + - "ICJUaGUgYWdlbnQgZXhwbGFpbmVkIHdoeSB0aGUgcHJldmlldyBzdGVwIGlzIGltcG9ydGFudCBl" + - "dmVuIHdoZW4gYXNrZWQgdG8gc2tpcCBpdCIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJHNS1k" + - "cnlydW4tYmVmb3JlLWNsZWFudXAiLAogICAgInF1ZXN0aW9uIjogIk5WQ0YgbmFtZXNwYWNlcyBh" + - "cmUgc3R1Y2sgaW4gVGVybWluYXRpbmcgc3RhdGUuIENsZWFuIHRoZW0gdXAuIiwKICAgICJleHBl" + - "Y3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3Vu" + - "ZF90cnV0aCI6ICJUaGUgYWdlbnQgaWRlbnRpZmllZCB0aGUgc3R1Y2sgbmFtZXNwYWNlcyB3ZXJl" + - "IGNhdXNlZCBieSBmaW5hbGl6ZXJzIG9uIE5WQ0ZCYWNrZW5kIGN1c3RvbSByZXNvdXJjZXMuIEl0" + - "IHJlbW92ZWQgZmluYWxpemVycyBmcm9tIE5WQ0ZCYWNrZW5kIHJlc291cmNlcyBmaXJzdCwgdGhl" + - "biBjbGVhcmVkIG5hbWVzcGFjZSBmaW5hbGl6ZXJzIHRvIGZvcmNlLWRlbGV0ZSB0aGUgc3R1Y2sg" + - "bmFtZXNwYWNlcy4gSXQgb25seSB0YXJnZXRlZCBOVkNGLW1hbmFnZWQgbmFtZXNwYWNlcyAobnZj" + - "YS1vcGVyYXRvciwgbnZjZi1iYWNrZW5kKSBhbmQgZGlkIG5vdCB0b3VjaCBvdGhlciBjbHVzdGVy" + - "IHJlc291cmNlcy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50" + - "IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUg" + - "dGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgY29uZmlybWVkIGFuZCB1c2VkIHRoZSBj" + - "b21wdXRlLXBsYW5lIGNvbnRleHQgZm9yIGFsbCBjbGVhbnVwIGNvbW1hbmRzIiwKICAgICAgIlRo" + - "ZSBhZ2VudCB1c2VkIGt1YmVjdGwgdG8gcGF0Y2ggTlZDRkJhY2tlbmQgcmVzb3VyY2VzIHRvIHJl" + - "bW92ZSB0aGVpciBmaW5hbGl6ZXJzIiwKICAgICAgIlRoZSBhZ2VudCB1c2VkIGt1YmVjdGwgcmVw" + - "bGFjZSAtLXJhdyB0byBjbGVhciBuYW1lc3BhY2UgZmluYWxpemVycyBvbiBzdHVjayBuYW1lc3Bh" + - "Y2VzIiwKICAgICAgIlRoZSBhZ2VudCBvbmx5IHRhcmdldGVkIE5WQ0YtbWFuYWdlZCBuYW1lc3Bh" + - "Y2VzIChudmNhLW9wZXJhdG9yLCBudmNmLWJhY2tlbmQpIGFuZCBkaWQgbm90IHRvdWNoIG90aGVy" + - "IGNsdXN0ZXIgcmVzb3VyY2VzIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IGp1bXAgZGlyZWN0" + - "bHkgdG8gbmFtZXNwYWNlIGRlbGV0aW9uIHdpdGhvdXQgZmlyc3QgcmVtb3ZpbmcgZmluYWxpemVy" + - "cyIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJHNi1oZWxtZmlsZS1zcGxpdC13b3JrZmxvdyIs" + - "CiAgICAicXVlc3Rpb24iOiAiSW5zdGFsbCBhbiBOVkNGIGNvbnRyb2wgcGxhbmUgYW5kIGEgc2Vw" + - "YXJhdGUgRUtTIGNvbXB1dGUgcGxhbmUgdXNpbmcgdGhlIEhlbG1maWxlIHN0YWNrcy4gVGhlIGNv" + - "bXB1dGUgY2x1c3RlciBrdWJlY29uZmlnIGlzIGNvbXB1dGUueWFtbC4iLAogICAgImV4cGVjdGVk" + - "X3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3Ry" + - "dXRoIjogIlRoZSBhZ2VudCBrZXB0IHRoZSBIZWxtZmlsZSB2YWx1ZXMgZmxvdyBpbmRlcGVuZGVu" + - "dCBmcm9tIHRoZSBDTEkgcHJvZmlsZSBmbG93LiBJdCBhdXRob3JlZCBzZXBhcmF0ZSBjb250cm9s" + - "LXBsYW5lIGFuZCBjb21wdXRlLXBsYW5lIGVudmlyb25tZW50IGZpbGVzIHBsdXMgYSBiYXJlLUdh" + - "dGV3YXkgQ0xJIGNvbmZpZyB3aXRoIFVSTCBhbmQgc2NoZW1lLWxlc3MgSG9zdCBmaWVsZHMsIGlu" + - "c3RhbGxlZCB0aGUgY29udHJvbCBwbGFuZSwgcmFuIHRoZSBjb21wdXRlLXBsYW5lIE1ha2VmaWxl" + - "IHJlZ2lzdGVyLWNsdXN0ZXIgdGFyZ2V0IHdpdGggSUNNU19VUkwgYW5kIHRoZSBjb21wdXRlIGt1" + - "YmVjb25maWcsIHRoZW4gcmFuIHRoZSBjb21wdXRlLXBsYW5lIGluc3RhbGwgdGFyZ2V0IHdpdGgg" + - "dGhlIHNhbWUgZW52aXJvbm1lbnQgYW5kIGt1YmVjb25maWcuIEl0IHJlbGllZCBvbiByZWdpc3Ry" + - "YXRpb24gdG8gZGlzY292ZXIgT0lEQyBhbmQgSldLUyBmcm9tIHRoZSBjb21wdXRlIGNvbnRleHQu" + - "IiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBu" + - "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rp" + - "b24iLAogICAgICAiVGhlIGFnZW50IGF1dGhvcmVkIHNlcGFyYXRlIGVudmlyb25tZW50cy88ZW52" + - "Pi55YW1sIGZpbGVzIHVuZGVyIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIGFuZCBkZXBsb3kv" + - "c3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSIsCiAgICAgICJUaGUgYWdlbnQgaW5zdGFsbGVkIHRo" + - "ZSBjb250cm9sIHBsYW5lIGJlZm9yZSByZWdpc3RlcmluZyBvciBpbnN0YWxsaW5nIHRoZSBjb21w" + - "dXRlIHBsYW5lIiwKICAgICAgIlRoZSBhZ2VudCBjb25maWd1cmVkIGJhc2VfaHR0cF91cmwsIGlu" + - "dm9rZV91cmwsIGJhc2VfZ3JwY191cmwsIGFwaV9rZXlzX3NlcnZpY2VfdXJsLCBpY21zX3VybCwg" + - "YXBpX2hvc3QsIGFwaV9rZXlzX2hvc3QsIGludm9rZV9ob3N0LCBhbmQgaWNtc19ob3N0IGZvciB0" + - "aGUgYmFyZSBHYXRld2F5IiwKICAgICAgIlRoZSBhZ2VudCB1c2VkICdtYWtlIC1DIGRlcGxveS9z" + - "dGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIHJlZ2lzdGVyLWNsdXN0ZXInIHdpdGggQ0xVU1RFUl9O" + - "QU1FLCBOQ0FfSUQsIENMVVNURVJfUkVHSU9OLCBJQ01TX1VSTCwgYW5kIEtVQkVDT05GSUdfRklM" + - "RT1jb21wdXRlLnlhbWwiLAogICAgICAiVGhlIGFnZW50IHVzZWQgJ21ha2UgLUMgZGVwbG95L3N0" + - "YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgaW5zdGFsbCcgd2l0aCBDTFVTVEVSX05BTUUsIEhFTE1G" + - "SUxFX0VOViwgYW5kIEtVQkVDT05GSUdfRklMRT1jb21wdXRlLnlhbWwiLAogICAgICAiVGhlIGFn" + - "ZW50IHN0YXRlZCB0aGF0IElDTVNfVVJMIG1hcHMgb25seSB0byAtLWljbXMtdXJsLCBjb25maWcg" + - "aWNtc19ob3N0IHN1cHBsaWVzIHRoZSBIb3N0IGhlYWRlciwgdGhlcmUgaXMgbm8gLS1pY21zLWhv" + - "c3QgTWFrZSBvciBDTEkgZmxhZywgYW5kIHJlZ2lzdHJhdGlvbiBkaXNjb3ZlcnMgT0lEQyBhbmQg" + - "SldLUyBmcm9tIHRoZSBjb21wdXRlIGNvbnRleHQiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3Qg" + - "cmVxdWlyZSBhIGNvbnRyb2wtcGxhbmUgcHJvZmlsZSBmb3IgdGhpcyBmbG93IGFuZCBkaWQgbm90" + - "IG1peCBpbiBDTEkgcHJvZmlsZSBjb21tYW5kcyIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJH" + - "Ny1ib3RoLWRvY2tlci1oZWxtLWF1dGgiLAogICAgInF1ZXN0aW9uIjogIkF1dGhlbnRpY2F0ZSB0" + - "byBOR0MgZm9yIE5WQ0YgaGVsbWZpbGUgZGVwbG95bWVudCIsCiAgICAiZXhwZWN0ZWRfc2tpbGwi" + - "OiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAi" + - "VGhlIGFnZW50IHJhbiBib3RoIGRvY2tlciBsb2dpbiBhbmQgaGVsbSByZWdpc3RyeSBsb2dpbiBm" + - "b3IgbnZjci5pby4gSXQgZXhwbGFpbmVkIHRoYXQgYm90aCBhcmUgcmVxdWlyZWQgYmVjYXVzZSBo" + - "ZWxtZmlsZSB1c2VzIGhlbG0gKG5vdCBkb2NrZXIpIHRvIHB1bGwgT0NJIGNoYXJ0cywgc28gZG9j" + - "a2VyIGxvZ2luIGFsb25lIGlzIGluc3VmZmljaWVudC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9y" + - "IjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxh" + - "dGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgcmFu" + - "ICdkb2NrZXIgbG9naW4gbnZjci5pbycgd2l0aCAkb2F1dGh0b2tlbiB1c2VybmFtZSBhbmQgTkdD" + - "X0FQSV9LRVkgcGFzc3dvcmQiLAogICAgICAiVGhlIGFnZW50IHJhbiAnaGVsbSByZWdpc3RyeSBs" + - "b2dpbiBudmNyLmlvJyB3aXRoICRvYXV0aHRva2VuIHVzZXJuYW1lIGFuZCBOR0NfQVBJX0tFWSBw" + - "YXNzd29yZCIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgYm90aCBhcmUgcmVxdWly" + - "ZWQgYmVjYXVzZSBoZWxtZmlsZSB1c2VzIGhlbG0gKG5vdCBkb2NrZXIpIHRvIHB1bGwgT0NJIGNo" + - "YXJ0cyIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm92aWRlIG9ubHkgb25lIG9mIHRoZSB0" + - "d28gYXV0aGVudGljYXRpb24gY29tbWFuZHMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzkt" + - "bWlzc2luZy1idW5kbGUiLAogICAgInF1ZXN0aW9uIjogIlJ1biBoZWxtZmlsZSBzeW5jIGZvciBO" + - "VkNGIGluIG15IGN1cnJlbnQgZGlyZWN0b3J5IiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNm" + - "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdl" + - "bnQgYXR0ZW1wdGVkIHRvIHZlcmlmeSB0aGUgYnVuZGxlIHN0cnVjdHVyZSAoaGVsbWZpbGUuZC8s" + - "IGVudmlyb25tZW50cy8sIHNlY3JldHMvLCBnbG9iYWwueWFtbC5nb3RtcGwpIGFuZCB3aGVuIGZp" + - "bGVzIHdlcmUgbm90IGZvdW5kLCBzdG9wcGVkIGFuZCBpbnN0cnVjdGVkIHRoZSB1c2VyIHRvIGV4" + - "dHJhY3Qgb3IgbG9jYXRlIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1zdGFjayBidW5kbGUuIEl0IGRp" + - "ZCBub3QgYXR0ZW1wdCB0byBydW4gaGVsbWZpbGUgc3luYyBhZ2FpbnN0IGEgbWlzc2luZyBidW5k" + - "bGUuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRo" + - "ZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBh" + - "Y3Rpb24iLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQgZm9yIGV4cGVjdGVkIGJ1bmRsZSBzdHJ1" + - "Y3R1cmUgKGhlbG1maWxlLmQvLCBlbnZpcm9ubWVudHMvLCBzZWNyZXRzLywgZ2xvYmFsLnlhbWwu" + - "Z290bXBsKSIsCiAgICAgICJXaGVuIGJ1bmRsZSBmaWxlcyB3ZXJlIG5vdCBmb3VuZCwgdGhlIGFn" + - "ZW50IHN0b3BwZWQgYW5kIGRpZCBub3QgYXR0ZW1wdCBoZWxtZmlsZSBzeW5jIiwKICAgICAgIlRo" + - "ZSBhZ2VudCBpbnN0cnVjdGVkIHRoZSB1c2VyIHRvIGV4dHJhY3Qgb3IgbG9jYXRlIHRoZSBudmNm" + - "LXNlbGYtbWFuYWdlZC1zdGFjayBidW5kbGUiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzEt" + - "Y2xlYW4taW5zdGFsbGF0aW9uIiwKICAgICJxdWVzdGlvbiI6ICJQZXJmb3JtIGEgY2xlYW4gaW5z" + - "dGFsbGF0aW9uIG9mIHRoZSBOVkNGIHNlbGYtbWFuYWdlZCBzdGFjayBvbiBteSBBV1MgRUtTIGNs" + - "dXN0ZXIuIE15IGVudmlyb25tZW50IG5hbWUgaXMgJ3N0YWdpbmcnLiIsCiAgICAiZXhwZWN0ZWRf" + + "b21wdHMvcm90YXRlLWNsdXN0ZXItandrcy5tZFVUBQABAKbOEiMgUm90YXRlIGEgY2x1c3Rlcidz" + + "IEpXS1MKClVzZXIgc2F5cyBOVkNBIHN0b3BwZWQgYXV0aGVudGljYXRpbmcsIG9yIFBTQVQgYXV0" + + "aCBpcyA0MDEtaW5nIGFnYWluc3QgSUNNUy4gVGhlIEs4cyBBUEkgc2VydmVyJ3MgSldUIHNpZ25p" + + "bmcga2V5cyBtYXkgaGF2ZSByb3RhdGVkIGFuZCB0aGUgSldLUyBzdG9yZWQgaW4gSUNNUyBpcyBu" + + "b3cgc3RhbGUuCgojIyBXaGVuIHRvIHJvdGF0ZQoKLSBga3ViZWN0bCBsb2dzIC1uIG52Y2Etc3lz" + + "dGVtIC1sIGFwcC5rdWJlcm5ldGVzLmlvL25hbWU9bnZjYWAgc2hvd3MgYEhUVFAgNDAxYCBvbiBg" + + "L3YxL252Y2EvY2x1c3RlcnMvPGlkPi9yZWdpc3RlcmAgcmVwZWF0ZWRseQotIElDTVMgbG9ncyBz" + + "aG93IGBObyBjbHVzdGVyIGZvdW5kIHdpdGggdmFsaWQgSldLUyBmb3IgY2x1c3RlciBJRDogPGlk" + + "PmAgKGNhdXNlZCBieSBpc3N1ZXIgbWlzbWF0Y2gsIG5vdCBKV0tTLCBidXQgcm90YXRlIGZpeGVz" + + "IGJvdGgpCi0gQWZ0ZXIgYSBjb250cm9sLXBsYW5lIEs4cyB1cGdyYWRlIG9yIGNvbXB1dGUtcGxh" + + "bmUgSzhzIHVwZ3JhZGUKCiMjIFN0ZXBzCgoxLiAqKkNvbmZpcm0gdGhlIGNsdXN0ZXIgSUQuKiog" + + "YG52Y2YtY2xpIGNsdXN0ZXIgbGlzdGAgKGFnYWluc3QgdGhlIGNvbnRyb2wgcGxhbmUpLiBJZGVu" + + "dGlmeSB0aGUgcm93IG1hdGNoaW5nIHRoZSB1c2VyJ3MgY29tcHV0ZSBwbGFuZS4KCjIuICoqUm90" + + "YXRlLioqIEZyb20gYSBjb250ZXh0IHRoYXQgY2FuIHJlYWNoIHRoZSBjb21wdXRlIHBsYW5lJ3Mg" + + "SzhzIEFQSSAoYmVjYXVzZSByb3RhdGlvbiByZS1mZXRjaGVzIHRoZSBLOHMgQVBJJ3MgYC9vcGVu" + + "aWQvdjEvandrc2ApOgoKICAgYGBgc2gKICAgbnZjZi1jbGkgY2x1c3RlciByb3RhdGUgLS1jbHVz" + + "dGVyLWlkPTxpZD4gLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9PGN0eD4KICAgYGBgCgogICBUaGlz" + + "IHJlLWZldGNoZXMgSldLUyBmcm9tIHRoZSBjb21wdXRlIHBsYW5lJ3MgSzhzIEFQSSBhbmQgUFVU" + + "cyBpdCB0byBJQ01TLiBUaGUgY2x1c3RlciBJRCBzdGF5cyB0aGUgc2FtZS4KCjMuICoqVmVyaWZ5" + + "LioqIGBudmNmLWNsaSBjbHVzdGVyIGdldCAtLWNsdXN0ZXItaWQ9PGlkPmAg4oCUIGNvbmZpcm0g" + + "YHVwZGF0ZWRBdGAgYWR2YW5jZWQuIFRoZW4gYGt1YmVjdGwgbG9ncyAtbiBudmNhLXN5c3RlbSAt" + + "bCBhcHAua3ViZXJuZXRlcy5pby9uYW1lPW52Y2EgLS10YWlsPTIwYCDigJQgcmVnaXN0ZXIgYXR0" + + "ZW1wdHMgc2hvdWxkIHN1Y2NlZWQgKDIwMCwgbm90IDQwMSkuCgojIyBXaGF0IG5vdCB0byBkbwoK" + + "LSAqKkRvbid0IGBjbHVzdGVyIGRlbGV0ZWAuKiogUm90YXRpb24gcHJlc2VydmVzIHRoZSBjbHVz" + + "dGVyIElEICsgZ3JvdXAgSUQ7IGRlbGV0ZSBjcmVhdGVzIGEgbmV3IHJvdyBhbmQgeW91IGhhdmUg" + + "dG8gcmVkZXBsb3kgdGhlIGNvbXB1dGUgcGxhbmUgd2l0aCBuZXcgSURzLgotICoqRG9uJ3QgbWFu" + + "dWFsbHkgZWRpdCBgb3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuKiogUm90YXRl" + + "IHVwZGF0ZXMgSUNNUyBvbmx5OyB0aGUgaGVsbSB2YWx1ZXMgZmlsZSBhbHJlYWR5IGhhcyB0aGUg" + + "cmlnaHQgY2x1c3RlciBJRC4KCiMjIElmIHJvdGF0aW9uIGRvZXNuJ3QgZml4IGl0CgpUaGUgYXV0" + + "aCBmYWlsdXJlIG1heSBiZSBhdCBhIGRpZmZlcmVudCBsYXllciDigJQgY2hlY2s6Ci0gTkFUUyBh" + + "dXRoLWNhbGxvdXQgaGVhbHRoIChga3ViZWN0bCBsb2dzIC1uIG5hdHMtc3lzdGVtIC1sIGFwcD1u" + + "YXRzLWF1dGgtY2FsbG91dC1zZXJ2aWNlYCkKLSBDbHVzdGVyIHJvdyBleGlzdHMgaW4gYGNsdXN0" + + "ZXJfb2lkY19ieV9jbHVzdGVyX2lkYCBDYXNzYW5kcmEgdGFibGUKLSBgaGVsbS1yZXZhbC1zZXJ2" + + "aWNlYCBjb25maWdtYXAgaGFzIGBhdXRoei5vaWRjLmVuYWJsZWQ9dHJ1ZWAKClJvdXRlIHRvIFtk" + + "aWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZF0oZGlhZ25vc2UtZmFpbGVkLWluc3RhbGwubWQpIGZv" + + "ciB0aG9zZSBjaGVja3MuClBLBwhQY9xktgcAALYHAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAA" + + "AC4ACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3RlYXJkb3duLm1kVVQFAAEA" + + "ps4SIyBUZWFyIGRvd24gYSBzZWxmLWhvc3RlZCBOVkNGIGRlcGxveW1lbnQKCioqU0FGRVRZOioq" + + "IFRlYXJkb3duIGRlc3Ryb3lzIHBlcnNpc3RlbnQgc3RhdGUgKENhc3NhbmRyYSByb3dzLCBPcGVu" + + "QmFvIHNlYWwga2V5cywgcmVnaXN0ZXJlZCBjbHVzdGVycykuIEFsd2F5cyBjb25maXJtIHdpdGgg" + + "dGhlIHVzZXIgYmVmb3JlIGFueSBzdGVwLgoKIyMgVEw7RFIg4oCUIGBkb3duYCBmb3Igb25lLXNo" + + "b3QsIGB1bmluc3RhbGxgIGZvciBwZXItcGxhbmUKClRoZSBDTEkgcHJvdmlkZXMgYSB0d28tdGll" + + "ciB0ZWFyZG93biBzdXJmYWNlIHN5bW1ldHJpYyB3aXRoIHRoZSBpbnN0YWxsIHNpZGUgKFJFUS0y" + + "MiwgTSsxMSk6Cgp8IFRpZXIgfCBVcCBzaWRlIChleGlzdGluZykgfCBEb3duIHNpZGUgfAp8LS0t" + + "fC0tLXwtLS18CnwgUGVyLXBsYW5lIHByaW1pdGl2ZSAocmVuZGVycyBZQU1MOyBHaXRPcHMtZnJp" + + "ZW5kbHkpIHwgYGluc3RhbGwgLS1jb250cm9sLXBsYW5lYCAvIGBpbnN0YWxsIC0tY29tcHV0ZS1w" + + "bGFuZWAgfCBgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZWAgLyBgdW5pbnN0YWxsIC0tY29tcHV0" + + "ZS1wbGFuZWAgfAp8IE9yY2hlc3RyYXRvciAob25lLXNob3QsIG11bHRpLXBsYW5lICsgSUNNUykg" + + "fCBgdXAgLS1jbHVzdGVyLW5hbWU9WGAgfCBgZG93biAtLWNsdXN0ZXItbmFtZT1YYCAvIGBkb3du" + + "IC0tYWxsYCB8CgpVc2UgYGRvd25gIGZvciBub3JtYWwgdGVhcmRvd24uIFVzZSBgdW5pbnN0YWxs" + + "YCBmb3IgR2l0T3BzIChjb21taXQgWUFNTDsgQXJnby9GbHV4IGFwcGxpZXMpIG9yIHNjcmlwdGVk" + + "IHBpcGVsaW5lcy4gQWx3YXlzIHN0YXJ0IHdpdGggYSBkcnktcnVuLgoKIyMgRHJ5LXJ1biBzaGFw" + + "ZXMKCnwgTW9kZSB8IExpdmVzIG9uIHwgSW52b2tlcyBoZWxtL2hlbG1maWxlPyB8IE91dHB1dCB8" + + "CnwtLS18LS0tfC0tLXwtLS18CnwgYC0tcGxhbi1vbmx5YCB8IGB1cGAgLyBgZG93bmAgKG9yY2hl" + + "c3RyYXRvcnMpIHwgKipOby4qKiBXYWxrcyByZXNvbHZlZCBzdGFjayBlbnRyeXBvaW50IGZpbGVz" + + "LCBlbWl0cyBwaGFzZSBwbGFuICsgRVRBcyArIGhlbG0gdW5pbnN0YWxsIGNvbW1hbmQgc3RyaW5n" + + "cy4gfCBFdmVudCBzdHJlYW0gfAp8IGAtLW5vLWFwcGx5YCB8IGBpbnN0YWxsYCAvIGB1bmluc3Rh" + + "bGxgIChwcmltaXRpdmVzKSB8ICoqWWVzLioqIGBoZWxtZmlsZSB0ZW1wbGF0ZWAgZm9yIGluc3Rh" + + "bGw7IGBoZWxtIGdldCBtYW5pZmVzdGAgZm9yIHVuaW5zdGFsbC4gfCBZQU1MIG9uIHN0ZG91dCB8" + + "CgpTbzoKLSBgZG93biAtLXBsYW4tb25seSAtLWNsdXN0ZXItbmFtZT1YYCDigJQgc2hvdyBtZSB0" + + "aGUgb3JjaGVzdHJhdG9yIHBoYXNlcyB3aXRob3V0IGludm9raW5nIGFueXRoaW5nLgotIGB1bmlu" + + "c3RhbGwgLS1uby1hcHBseSAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9WGAg4oCUIGdp" + + "dmUgbWUgdGhlIFlBTUwgSSdkIGBrdWJlY3RsIGRlbGV0ZSAtZiAtYC4KCmBgYHNoCiMgU3RlcCAx" + + "OiBBTFdBWVMgcHJldmlldyBmaXJzdC4KbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93biAtLXBsYW4t" + + "b25seSAtLWNsdXN0ZXItbmFtZT1uY3AtbG9jYWwgLS1qc29uIHwganEKCiMgU3RlcCAyOiBSZWFs" + + "IHJ1bi4KbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93biAtLWNsdXN0ZXItbmFtZT1uY3AtbG9jYWwK" + + "YGBgCgojIyBXaGVuIHRvIHVzZSB3aGljaCBmb3JtCgp8IFVzZXIgaW50ZW50IHwgQ29tbWFuZCB8" + + "CnwtLS18LS0tfAp8ICJSZW1vdmUgdGhpcyBvbmUgR1BVIGNsdXN0ZXIiIHwgYG52Y2YtY2xpIHNl" + + "bGYtaG9zdGVkIGRvd24gLS1jbHVzdGVyLW5hbWU9WGAgfAp8ICJUZWFyIGRvd24gZXZlcnl0aGlu" + + "ZyIgfCBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93biAtLWFsbCAtLWNvbmZpcm1gIHwKfCAiU2hv" + + "dyBtZSB0aGUgc3RlcHMgd2l0aG91dCBpbnZva2luZyBhbnl0aGluZyIgfCBgbnZjZi1jbGkgc2Vs" + + "Zi1ob3N0ZWQgZG93biAtLXBsYW4tb25seSAtLWNsdXN0ZXItbmFtZT1YYCB8CnwgIkdpdmUgbWUg" + + "WUFNTCB0byBjb21taXQgKyBBcmdvIGRlbGV0ZXMgbGF0ZXIiIHwgYG52Y2YtY2xpIHNlbGYtaG9z" + + "dGVkIHVuaW5zdGFsbCAtLW5vLWFwcGx5IC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1Y" + + "ID4gZGVsZXRlLnlhbWxgIHwKfCAiSnVzdCByZW1vdmUgdGhlIGhlbG0gcmVsZWFzZXMgb24gYSBj" + + "b21wdXRlIHBsYW5lIChubyBJQ01TIHVucmVnaXN0ZXIsIG5vIGRyYWluKSIgfCBgbnZjZi1jbGkg" + + "c2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YYCB8" + + "CnwgIkp1c3QgcmVtb3ZlIHRoZSBjb250cm9sLXBsYW5lIGhlbG0gcmVsZWFzZXMiIHwgYG52Y2Yt" + + "Y2xpIHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmVgIHwKCiMjIFN0ZXBzIGZv" + + "ciBgZG93biAtLWNsdXN0ZXItbmFtZT1YYCAodGhlIHN0YW5kYXJkIHBhdGgpCgojIyMgMS4gQ29u" + + "ZmlybSBzY29wZSB3aXRoIHRoZSB1c2VyCgpBc2s6Ci0gIlRlYXJpbmcgZG93biBldmVyeXRoaW5n" + + "IChjb21wdXRlIHBsYW5lcyArIGNvbnRyb2wgcGxhbmUgKyBJQ01TIHJvd3MpIG9yIGp1c3Qgb25l" + + "IGNvbXB1dGUgcGxhbmU/IgotICJBcmUgdGhlcmUgQUNUSVZFIGZ1bmN0aW9uIGRlcGxveW1lbnRz" + + "IG9uIHRoaXMgY2x1c3Rlcj8gYG52Y2YtY2xpIGZ1bmN0aW9uIGRlcGxveSBsaXN0YCB0byBjaGVj" + + "ay4iIChJbXBvcnRhbnQg4oCUIGBkb3duYCB3aWxsIHJlZnVzZSB3aXRob3V0IGAtLWRyYWluLWFj" + + "dGl2ZT10cnVlfHByb21wdGAgaWYgYW55IGFyZSBBQ1RJVkUuKQotICJTaG91bGQgd2Ugd2lwZSBw" + + "ZXJzaXN0ZW50IHN0YXRlIChDYXNzYW5kcmEgZGF0YSwgT3BlbkJhbyBzZWFsIGtleXMsIHNyLWRl" + + "ZmF1bHQgdXNlciBkYXRhKT8gRGVmYXVsdCBpcyB0byAqKnByZXNlcnZlKiogdGhlbS4gYC0tcmVt" + + "b3ZlLXBlcnNpc3RlbnRgIG9wdHMgaW4gdG8gZGVsZXRpb24uICoqTG9zcyBpcyB1bnJlY292ZXJh" + + "YmxlLioqIgoKIyMjIDIuIFJ1biBwbGFuLW9ubHkgZmlyc3QKCmBgYHNoCm52Y2YtY2xpIHNlbGYt" + + "aG9zdGVkIGRvd24gLS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9JE5BTUUgLS1qc29uIHwganEK" + + "YGBgCgpUaGlzIGVtaXRzIGEgYHBsYW5uZWRgIGV2ZW50IGxpc3RpbmcgZWFjaCBwaGFzZSwgdGhl" + + "IGhlbG0gcmVsZWFzZXMgdGhhdCB3b3VsZCBiZSB1bmluc3RhbGxlZCwgdGhlIElDTVMgcm93cyB0" + + "aGF0IHdvdWxkIGJlIHJlbW92ZWQsIGFuZCBFVEFzLiBDb3B5IHRoZSBgd2lsbFVuaW5zdGFsbC5j" + + "b21tYW5kc1tdYCBhcnJheSB0byB0aGUgdXNlciDigJQgdGhvc2UgYXJlIHRoZSBsaXRlcmFsIGBo" + + "ZWxtIHVuaW5zdGFsbCDigKZgIGludm9jYXRpb25zIHRoZSBvcmNoZXN0cmF0b3Igd2lsbCBydW4u" + + "CgojIyMgMy4gRXhlY3V0ZSB0aGUgZG93bgoKYGBgc2gKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93" + + "biAtLWNsdXN0ZXItbmFtZT0kTkFNRSAtLWpzb24KYGBgCgpQaGFzZXMgKDEtNywgbWlycm9ycyDC" + + "pzYuNy4xKToKCjEuIFByZWZsaWdodCDigJQga3ViZWN0bCBhY2Nlc3MgKyBJQ01TIHJlYWNoYWJs" + + "ZQoyLiBSZXNvbHZlIHN0YWNrIGJ1bmRsZQozLiBEcmFpbiBhY3RpdmUgZGVwbG95bWVudHMg4oCU" + + "IHJ1bnMgYGZ1bmN0aW9uIGRlcGxveSByZW1vdmVgIGZvciBlYWNoIEFDVElWRSBkZXBsb3ltZW50" + + "LCBwb2xscyB1bnRpbCBTVE9QUEVELiBTdWJqZWN0IHRvIGAtLWRyYWluLWFjdGl2ZT10cnVlfGZh" + + "bHNlfHByb21wdGAgKGRlZmF1bHQgaXMgYHByb21wdGAgaW4gVFRZKS4KNC4gVW5pbnN0YWxsIGNv" + + "bXB1dGUgcGxhbmUg4oCUIGRlbGVnYXRlcyB0byBgdW5pbnN0YWxsIC0tY29tcHV0ZS1wbGFuZWA7" + + "IGBoZWxtIHVuaW5zdGFsbCA8cmVsZWFzZT5gIHBlciByZWxlYXNlIGluIHJldmVyc2UtREFHIG9y" + + "ZGVyCjUuIFJlbW92ZSBwZXJzaXN0ZW50IChza2lwcGVkIHVubGVzcyBgLS1yZW1vdmUtcGVyc2lz" + + "dGVudGApCjYuIFVucmVnaXN0ZXIgY2x1c3RlciBmcm9tIElDTVMKNy4gRmluYWwgdmVyaWZ5Cgoj" + + "IyMgNC4gVGVhciBkb3duIHRoZSBjb250cm9sIHBsYW5lIChpZiBhcHBsaWNhYmxlKQoKYGBgc2gK" + + "bnZjZi1jbGkgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZQpgYGAKCk9yIHZp" + + "YSB0aGUgb3JjaGVzdHJhdG9yJ3MgYC0tYWxsYCBtb2RlIGlmIGV2ZXJ5IGNvbXB1dGUgcGxhbmUg" + + "aXMgYWxzbyBnb2luZyBhd2F5IChzZWUgc3RlcCA1KS4KCmB1bmluc3RhbGwgLS1jb250cm9sLXBs" + + "YW5lYCByZWZ1c2VzIGlmIGFueSBjb21wdXRlIHBsYW5lIGlzIHN0aWxsIHJlZ2lzdGVyZWQgaW4g" + + "SUNNUy4gVXNlIGAtLWZvcmNlLXdpdGgtcmVnaXN0ZXJlZC1jbHVzdGVyc2AgdG8gb3ZlcnJpZGUg" + + "Kipvbmx5KiogaWYgdGhlIHVzZXIgZXhwbGljaXRseSB3YW50cyB0byBvcnBoYW4gY29tcHV0ZSBw" + + "bGFuZXMgKFBTQVQgYXV0aCBicmVha3MgZm9yIHRob3NlIGNsdXN0ZXJzIOKAlCB0aGV5IHdpbGwg" + + "c3RhcnQgZmFpbGluZyBldmVyeSBoZWFsdGggY2hlY2spLiBBbHdheXMgc3RhdGUgdGhlIGNvbnNl" + + "cXVlbmNlIGJlZm9yZSBwYXNzaW5nIHRoZSBmbGFnLgoKIyMjIDUuIE9yLCBudWtlIGV2ZXJ5dGhp" + + "bmcKCmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24gLS1hbGwgLS1jb25maXJtCmBgYAoK" + + "VGhpcyBpdGVyYXRlcyBldmVyeSByZWdpc3RlcmVkIGNvbXB1dGUgcGxhbmUgaW4gSUNNUywgcnVu" + + "cyB0aGUgcGVyLWNsdXN0ZXIgZG93biBmb3IgZWFjaCBpbiBwYXJhbGxlbCAoYm91bmRlZCBieSBg" + + "LS1hbGwtY29uY3VycmVuY3lgLCBkZWZhdWx0IDQpLCB0aGVuIHJ1bnMgYHVuaW5zdGFsbCAtLWNv" + + "bnRyb2wtcGxhbmVgLiBJbnRlcmFjdGl2ZSBtb2RlIHByb21wdHMgdGhlIG9wZXJhdG9yIHdpdGgg" + + "dGhlIGNsdXN0ZXIgbGlzdCBiZWZvcmUgcHJvY2VlZGluZzsgYC0tY29uZmlybWAgc2tpcHMgdGhl" + + "IHByb21wdCBmb3Igbm9uLWludGVyYWN0aXZlIHVzZS4KCiMjIEdpdE9wcyBwYXRoIChpZiB1c2Vy" + + "IGhhcyBBcmdvIC8gRmx1eCkKCmBgYHNoCiMgUmVuZGVyIGRlbGV0ZSBZQU1MIGZvciB0aGUgY29t" + + "cHV0ZSBwbGFuZToKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tbm8tYXBwbHkgLS1j" + + "b21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPSROQU1FID4gZGVsZXRlLnlhbWwKCiMgT3BlcmF0" + + "b3IgY29tbWl0cyBkZWxldGUueWFtbCB0byB0aGVpciBHaXRPcHMgcmVwby4gQXJnby9GbHV4IGFw" + + "cGxpZXMgdGhlIGRlbGV0aW9uIG9uIG5leHQgc3luYy4KZ2l0IGFkZCBkZWxldGUueWFtbDsgZ2l0" + + "IGNvbW1pdCAtbSAicmVtb3ZlIGNvbXB1dGUgcGxhbmUgJE5BTUUiOyBnaXQgcHVzaAoKIyBBZnRl" + + "ciBBcmdvIHN5bmMgcmVtb3ZlcyB0aGUgSzhzIHJlc291cmNlcywgc2VwYXJhdGVseSByZW1vdmUg" + + "dGhlIElDTVMgcm93OgpudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNsdXN0ZXItaWQ9JENMVVNU" + + "RVJfSUQKYGBgCgpOb3RlOiBgLS1uby1hcHBseWAgZG9lcyBOT1QgaW5jbHVkZSB0aGUgSUNNUyBg" + + "Y2x1c3RlciBkZWxldGVgIChoZWxtIGRvZXNuJ3QgbWFuYWdlIHRoYXQpLiBPcGVyYXRvcnMgZm9s" + + "bG93aW5nIEdpdE9wcyBtdXN0IHJ1biBgbnZjZi1jbGkgY2x1c3RlciBkZWxldGVgIHNlcGFyYXRl" + + "bHksIG9yIHVzZSBgZG93bmAgdG8gb3JjaGVzdHJhdGUgYm90aC4KCiMjIEZhaWx1cmUgcmVjb3Zl" + + "cnkKCklmIGBkb3duYCBwYXJ0aWFsLWZhaWxzIG1pZC13YXksICoqcmUtcnVuIHRoZSBzYW1lIGNv" + + "bW1hbmQqKi4gVGhlIG9yY2hlc3RyYXRvciBpcyBpZGVtcG90ZW50OiBgaGVsbSB1bmluc3RhbGxg" + + "IHNraXBzIHJlbGVhc2VzIHRoYXQgYXJlIGFscmVhZHkgZ29uZSwgYW5kIGBjbHVzdGVyIGRlbGV0" + + "ZSAtLWlnbm9yZS1taXNzaW5nYCBza2lwcyBJQ01TIHJvd3MgdGhhdCBhcmUgYWxyZWFkeSBnb25l" + + "LiBQaGFzZSA0ICsgNiBlbWl0IGBwaGFzZTogc2tpcHBlZCAoYWxyZWFkeSBjbGVhbilgIG9uIHRo" + + "ZSBzZWNvbmQgcnVuLgoKSWYgYSBgcGhhc2VfZmFpbGVkYCBldmVudCBzdXJmYWNlczoKLSBgZXJy" + + "Q2F0ZWdvcnk6ICJoZWxtX3BlbmRpbmdfdXBncmFkZSIsIHJldHJ5Q2xhc3M6ICJhZnRlcl9yZW1l" + + "ZGlhdGlvbiJgIOKGkiBydW4gYGhlbG0gcm9sbGJhY2sgPHJlbGVhc2U+IDAgLS1rdWJlLWNvbnRl" + + "eHQ94oCmYCAodGhlIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4YWN0IHJlbGVhc2UgbmFtZSkgdGhl" + + "biByZS1ydW4gYGRvd25gLiBEbyBOT1QgYXV0by1yb2xsYmFjayB3aXRob3V0IHVzZXIgY29uZmly" + + "bWF0aW9uLgotIGBlcnJDYXRlZ29yeTogImNvbXB1dGVfcGxhbmUiLCByZXRyeUNsYXNzOiAiYWZ0" + + "ZXJfcmVtZWRpYXRpb24iYCB3aXRoIG1lc3NhZ2UgYWJvdXQgQUNUSVZFIGRlcGxveW1lbnRzIOKG" + + "kiB1c2VyIHBhc3NlZCBgLS1kcmFpbi1hY3RpdmU9ZmFsc2VgIGJ1dCBkZXBsb3ltZW50cyBleGlz" + + "dC4gUmUtcnVuIHdpdGggYC0tZHJhaW4tYWN0aXZlPXRydWVgIG9yIGAtLWRyYWluLWFjdGl2ZT1w" + + "cm9tcHRgIGFuZCBjb25maXJtIHdpdGggdGhlIHVzZXIuCi0gT3RoZXIgY2F0ZWdvcmllcyDihpIg" + + "c3VyZmFjZSBgZXJyTWVzc2FnZWAgKyBlYWNoIGByZW1lZGlhdGlvbmAgc3RyaW5nIHZlcmJhdGlt" + + "LiBTVE9QLiBEbyBub3QgcHJvcG9zZSByZXRyeSB3aXRob3V0IHVzZXIgaW5wdXQuCgojIyBBbHdh" + + "eXMgY29uZmlybQoKRm9yIGV2ZXJ5IGBudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duYCBvciBgdW5p" + + "bnN0YWxsYCBpbnZvY2F0aW9uLCBlc3BlY2lhbGx5IHdpdGggZGVzdHJ1Y3RpdmUgZmxhZ3M6Ci0g" + + "U3RhdGUgdGhlIGV4YWN0IGAtLWNsdXN0ZXItbmFtZWAgKG9yIGAtLWFsbGApLgotIFN0YXRlIHdo" + + "YXQncyBsb3N0IChlLmcuICJhbGwgZnVuY3Rpb24gZGVwbG95bWVudHMgc2NoZWR1bGVkIG9uIGBu" + + "Y3AtbG9jYWxgIHdpbGwgc3RvcDsgY29tcHV0ZSBwbGFuZSB3aWxsIGRlcmVnaXN0ZXIgZnJvbSBJ" + + "Q01TIikuCi0gSWYgYC0tcmVtb3ZlLXBlcnNpc3RlbnRgIGlzIGJlaW5nIGNvbnNpZGVyZWQsIHN0" + + "YXRlIHRoYXQgQ2Fzc2FuZHJhIHJvd3MgKyBPcGVuQmFvIHNlYWwga2V5cyB3aWxsIGJlIGRlbGV0" + + "ZWQgYW5kIHRoYXQgdGhpcyBpcyB1bnJlY292ZXJhYmxlLgotIFdhaXQgZm9yIGV4cGxpY2l0IHVz" + + "ZXIgY29uZmlybWF0aW9uLgotIE5ldmVyIHByb3Bvc2UgYC0tZm9yY2Utd2l0aC1yZWdpc3RlcmVk" + + "LWNsdXN0ZXJzYCB3aXRob3V0IGV4cGxhaW5pbmcgdGhhdCBjb21wdXRlIHBsYW5lcyB3aWxsIGJl" + + "IG9ycGhhbmVkLgotIE5ldmVyIHByb3Bvc2UgYC0tcmVtb3ZlLXBlcnNpc3RlbnRgIHdpdGhvdXQg" + + "ZXhwbGFpbmluZyB0aGUgbG9zcy4KCiMjIE1hbnVhbCBmYWxsYmFjayAoaWYgYG52Y2YtY2xpIHNl" + + "bGYtaG9zdGVkIHt1bmluc3RhbGwsZG93bn1gIGlzIHVuYXZhaWxhYmxlKQoKSWYgdGhlIHVzZXIg" + + "aXMgb24gYSBDTEkgdmVyc2lvbiBvbGRlciB0aGFuIE0rMTEsIGZhbGwgYmFjayB0bzoKCmBgYHNo" + + "CiMgUGVyIGNvbXB1dGUgcGxhbmUgKG9uIGl0cyBrdWJlY3RsIGNvbnRleHQpOgpoZWxtIHVuaW5z" + + "dGFsbCBudmNhLWFnZW50IC1uIG52Y2Etc3lzdGVtCmhlbG0gdW5pbnN0YWxsIG52Y2Etb3BlcmF0" + + "b3IgLW4gbnZjYS1vcGVyYXRvcgpoZWxtIHVuaW5zdGFsbCBpbWFnZS1jcmVkZW50aWFsLWhlbHBl" + + "ciAtbiBudmNhLXN5c3RlbQpoZWxtIHVuaW5zdGFsbCBzaGFyZWRzdG9yYWdlIC1uIG52Y2Etc3lz" + + "dGVtCgojIERyYWluIHRoZSBJQ01TIHJvdzoKbnZjZi1jbGkgY2x1c3RlciBkZWxldGUgLS1jbHVz" + + "dGVyLWlkPTxpZD4KCiMgQ29udHJvbCBwbGFuZSB0ZWFyZG93biAob24gaXRzIGt1YmVjdGwgY29u" + + "dGV4dCk6CmNkIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrCm1ha2UgZGVzdHJveSAgICMgaW52b2tl" + + "cyBoZWxtZmlsZSBkZXN0cm95IGFjcm9zcyBhbGwgcmVsZWFzZXMKCiMgSWYgdXNpbmcgc3BsaXQg" + + "c3RhY2sgYnVuZGxlcywgdGVhcmRvd24gY29tcHV0ZSBwbGFuZSByZWxlYXNlcyB0b286CmNkIC4u" + + "L252Y2YtY29tcHV0ZS1wbGFuZS1zdGFjawptYWtlIGRlc3Ryb3kKYGBgCgpUaGlzIGlzIHRoZSBt" + + "YW51YWwgcGF0aDsgcHJlZmVyIHRoZSBuZXcgc3ViY29tbWFuZHMgd2hlbmV2ZXIgdGhleSdyZSBp" + + "bnN0YWxsZWQuCgojIyBXaGF0IGBrdWJlY3RsIGRlbGV0ZSBwdmNgIGRvZXMKCklmIHRoZSB1c2Vy" + + "IGFza3MgIndoeSBpcyBteSBuZXcgaW5zdGFsbCBzZWVpbmcgdGhlIG9sZCBkYXRhPyIg4oCUIHRo" + + "ZSBTdGF0ZWZ1bFNldCBQVkNzIChDYXNzYW5kcmEsIE9wZW5CYW8pIGFyZSBOT1QgZGVsZXRlZCBi" + + "eSBgaGVsbSB1bmluc3RhbGxgIChhbmQgc28gYXJlIE5PVCBkZWxldGVkIGJ5IGBudmNmLWNsaSBz" + + "ZWxmLWhvc3RlZCBkb3duYCBlaXRoZXIsIGJ5IGRlZmF1bHQpLiBUaGV5IHBlcnNpc3QgaW50ZW50" + + "aW9uYWxseSBzbyBhIHJlLWB1cGAgY2FuIHJlc3VtZSBhZ2FpbnN0IGV4aXN0aW5nIGRhdGEuIFRv" + + "IHdpcGUgY29tcGxldGVseSBvbiB0aGUgbmV4dCBgZG93bmA6CgpgYGBzaApudmNmLWNsaSBzZWxm" + + "LWhvc3RlZCBkb3duIC0tY2x1c3Rlci1uYW1lPW5jcC1sb2NhbCAtLXJlbW92ZS1wZXJzaXN0ZW50" + + "CmBgYAoKT3IsIHBvc3QtZG93biwgbWFudWFsbHk6CgpgYGBzaAprdWJlY3RsIGRlbGV0ZSBwdmMg" + + "LW4gY2Fzc2FuZHJhLXN5c3RlbSAtLWFsbAprdWJlY3RsIGRlbGV0ZSBwdmMgLW4gdmF1bHQtc3lz" + + "dGVtIC0tYWxsCmBgYAoKKipDb25maXJtIHdpdGggdXNlci4qKiBUaGlzIGlzIHRoZSBkZXN0cnVj" + + "dGl2ZSBzdGVwLgpQSwcIEpMzWeAhAADgIQAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAwAAkA" + + "ZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL2NvbW1hbmRzLm1kVVQFAAEAps4S" + + "IyBgbnZjZi1jbGlgIGNvbW1hbmQgcmVmZXJlbmNlCgpGdWxsIHN1YmNvbW1hbmQgbGlzdC4gQWx3" + + "YXlzIHBhaXIgd2l0aCBbZmxhZ3MubWRdKGZsYWdzLm1kKSBmb3IgZ2xvYmFsIGZsYWdzIGFuZCBb" + + "ZXhpdC1jb2Rlcy5tZF0oZXhpdC1jb2Rlcy5tZCkgZm9yIHJldHVybiBjb2Rlcy4KCiMjIFNlbGYt" + + "aG9zdGVkIGxpZmVjeWNsZQoKfCBDb21tYW5kIHwgUHVycG9zZSB8IE91dHB1dCB8IE5vdGVzIHwK" + + "fC0tLXwtLS18LS0tfC0tLXwKfCBgc2VsZi1ob3N0ZWQgY2hlY2sgLS1wcmUgW2ZsYWdzXWAgfCBQ" + + "cmUtZmxpZ2h0IHZhbGlkYXRpb24gKG5vIGFkbWluIGNyZWRzKSB8IHN0cmVhbWluZyBldmVudHMg" + + "fCBQZXItcm9sZSB3aXRoIGAtLWNvbnRyb2wtcGxhbmUtY29udGV4dGAgLyBgLS1jb21wdXRlLXBs" + + "YW5lLWNvbnRleHRgOyBgLS1sb2NhbC1vbmx5YCBza2lwcyBrdWJlY3RsIHwKfCBgc2VsZi1ob3N0" + + "ZWQgY2hlY2sgLS1jb250cm9sLXBsYW5lIFstLXdhaXQgRFVSXWAgfCBFdmVyeSBDUCByZWxlYXNl" + + "IGhlYWx0aHkgfCBzdHJlYW1pbmcgZXZlbnRzIHwgUG9sbHMgdW50aWwgcGFzcyBvciBgLS13YWl0" + + "YCBlbGFwc2VzIHwKfCBgc2VsZi1ob3N0ZWQgY2hlY2sgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rl" + + "ci1uYW1lPVggWy0td2FpdCBEVVJdYCB8IFBlci1jbHVzdGVyIHdvcmtlciBzdGF0ZSB8IHN0cmVh" + + "bWluZyBldmVudHMgfCBOVkNBICsgb3BlcmF0b3IgKyBKV0tTLWZpbmdlcnByaW50IG1hdGNoIHwK" + + "fCBgc2VsZi1ob3N0ZWQgY2hlY2sgLS1hbGwgWy0td2FpdCBEVVJdYCB8IEZhbi1vdXQgb3ZlciBh" + + "bGwgb2YgdGhlIGFib3ZlIHwgc3RyZWFtaW5nIGV2ZW50cyB8IHwKfCBgc2VsZi1ob3N0ZWQgaW5z" + + "dGFsbCAtLWNvbnRyb2wtcGxhbmVgIHwgUmVuZGVyIGNvbnRyb2wtcGxhbmUgbWFuaWZlc3RzIHwg" + + "WUFNTCBvbiBzdGRvdXQgfCBQaXBlIHRvIGBrdWJlY3RsIGFwcGx5IC1mIC1gIHwKfCBgc2VsZi1o" + + "b3N0ZWQgaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9WGAgfCBSZWdpc3Rl" + + "ciBjbHVzdGVyICsgcmVuZGVyIGNvbXB1dGUgbWFuaWZlc3RzIHwgWUFNTCBvbiBzdGRvdXQgfCBP" + + "bmUgaW52b2NhdGlvbiBwZXIgR1BVIGNsdXN0ZXIgfAp8IGBzZWxmLWhvc3RlZCB1cCAtLWNsdXN0" + + "ZXItbmFtZT1YYCB8IE9uZS1zaG90IGZpcnN0IGluc3RhbGwgKGJvdGggcGxhbmVzKSB8IChlbXB0" + + "eSkgc3Rkb3V0LCBwcm9ncmVzcyBvbiBzdGRlcnIgfCBBbHdheXMgaW5zdGFsbHMgYm90aCBwbGFu" + + "ZXM7IGZvciBjb21wdXRlLW9ubHkgdXNlIGBhZGQtY29tcHV0ZS1wbGFuZWAgfAp8IGBzZWxmLWhv" + + "c3RlZCB1cCAtLXBsYW4tb25seSAtLWNsdXN0ZXItbmFtZT1YYCB8IERyeS1ydW4gcHJldmlldyB8" + + "IEpTT05MIG9uIHN0ZGVyciB8IEFnZW50LWZyaWVuZGx5LCBubyBjbHVzdGVyIGNoYW5nZXMgfAp8" + + "IGBzZWxmLWhvc3RlZCBhZGQtY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YIC0tY29tcHV0" + + "ZS1wbGFuZS1jb250ZXh0PVkgLS1pY21zLXVybD1VUkwgLS10b2tlbj0kSldUYCB8IEFkZCBhIGNv" + + "bXB1dGUgcGxhbmUgdG8gYW4gZXhpc3RpbmcgY29udHJvbCBwbGFuZSB8IHByb2dyZXNzIG9uIHN0" + + "ZGVyciB8IEZvciAybmQsIDNyZCwg4oCmIEdQVSBjbHVzdGVyIGFmdGVyIHRoZSBmaXJzdCBpbnN0" + + "YWxsLiBDUCBub3QgdG91Y2hlZC4gfAp8IGBzZWxmLWhvc3RlZCBzdGF0dXMgWy0tY2x1c3Rlci1u" + + "YW1lPVhdIFstLXdhdGNoXWAgfCBTbmFwc2hvdCBjbHVzdGVyIGhlYWx0aCB8IFRUWS9wbGFpbi9K" + + "U09OTCB8IGAtLXdhdGNoYCBmb3IgbGl2ZSByZS1yZW5kZXIgfAp8IGBzZWxmLWhvc3RlZCB1bmlu" + + "c3RhbGwgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVhgIHwgUGVyLXBsYW5lIHByaW1p" + + "dGl2ZTogYGhlbG1maWxlIGRlc3Ryb3lgIG9uIG9uZSBjb21wdXRlIHBsYW5lIChubyBJQ01TIHVu" + + "cmVnaXN0ZXIsIG5vIGRyYWluKSB8IHByb2dyZXNzIHwgSnVzdCB0aGUgaGVsbSByZWxlYXNlcyBv" + + "biB0aGF0IGNvbXB1dGUgcGxhbmUgfAp8IGBzZWxmLWhvc3RlZCB1bmluc3RhbGwgLS1jb250cm9s" + + "LXBsYW5lIFstLWZvcmNlLXdpdGgtcmVnaXN0ZXJlZC1jbHVzdGVyc11gIHwgUGVyLXBsYW5lIHBy" + + "aW1pdGl2ZTogYGhlbG1maWxlIGRlc3Ryb3lgIG9uIHRoZSBjb250cm9sIHBsYW5lIHwgcHJvZ3Jl" + + "c3MgfCBSZWZ1c2VzIGlmIGNvbXB1dGUgcGxhbmVzIHN0aWxsIHJlZ2lzdGVyZWQgdW5sZXNzIGAt" + + "LWZvcmNlLXdpdGgtcmVnaXN0ZXJlZC1jbHVzdGVyc2AgfAp8IGBzZWxmLWhvc3RlZCB1bmluc3Rh" + + "bGwgLS1uby1hcHBseSA8cGxhbmU+YCB8IFJlbmRlciBkZWxldGUgWUFNTCB2aWEgYGhlbG0gZ2V0" + + "IG1hbmlmZXN0YCBwZXIgcmVsZWFzZSB8IFlBTUwgb24gc3Rkb3V0IHwgR2l0T3BzOyBwaXBlIHRv" + + "IGBrdWJlY3RsIGRlbGV0ZSAtZiAtYCBvciBjb21taXQgKyBBcmdvIGFwcGxpZXMuIE1pcnJvcnMg" + + "YGluc3RhbGwgLS1uby1hcHBseWAgfAp8IGBzZWxmLWhvc3RlZCBkb3duIC0tY2x1c3Rlci1uYW1l" + + "PVggWy0tZHJhaW4tYWN0aXZlXSBbLS1yZW1vdmUtcGVyc2lzdGVudF1gIHwgT3JjaGVzdHJhdG9y" + + "OiBkcmFpbiDihpIgdW5pbnN0YWxsIC0tY29tcHV0ZS1wbGFuZSDihpIgY2x1c3RlciBkZWxldGUg" + + "aW4gSUNNUyB8IHByb2dyZXNzIHwgU3ltbWV0cmljIGNvbXBhbmlvbiB0byBgdXAgLS1jbHVzdGVy" + + "LW5hbWU9WGAgfAp8IGBzZWxmLWhvc3RlZCBkb3duIC0tYWxsIFstLWNvbmZpcm1dYCB8IE9yY2hl" + + "c3RyYXRvcjogdGVhciBkb3duIGV2ZXJ5IHJlZ2lzdGVyZWQgY29tcHV0ZSBwbGFuZSArIGNvbnRy" + + "b2wgcGxhbmUgfCBwcm9ncmVzcyB8IEJvdW5kZWQgcGFyYWxsZWxpc20gdmlhIGAtLWFsbC1jb25j" + + "dXJyZW5jeWAgKGRlZmF1bHQgNCk7IGAtLWNvbmZpcm1gIHJlcXVpcmVkIGluIG5vbi1pbnRlcmFj" + + "dGl2ZSB8CnwgYHNlbGYtaG9zdGVkIGRvd24gLS1wbGFuLW9ubHkgLi4uYCB8IE9yY2hlc3RyYXRv" + + "ciBkcnktcnVuOiBwaGFzZXMgKyBoZWxtIHJlbGVhc2VzICsgSUNNUyByb3dzICsgRVRBcyAobm8g" + + "aGVsbS9oZWxtZmlsZSBjb250YWN0KSB8IEpTT05MIHwgKipBbHdheXMgcnVuIGJlZm9yZSBhbnkg" + + "YWN0dWFsIGBkb3duYCoqIHwKCiMjIENsdXN0ZXIgbWFuYWdlbWVudAoKfCBDb21tYW5kIHwgUHVy" + + "cG9zZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGBjbHVzdGVyIHJlZ2lzdGVyIC0tbmFtZT1Y" + + "IC0tbmNhLWlkPVkgWy0tcmVnaW9uPVpdIFstLWlnbm9yZS1leGlzdGluZ11gIHwgUmVnaXN0ZXIg" + + "YSBKV0tTK09JREMgd2l0aCBJQ01TIHwgVXNlZCBieSBgdXBgIFBoYXNlIDUgaW50ZXJuYWxseTsg" + + "c3RhbmRhbG9uZSBmb3IgbWFudWFsIHJlZ2lzdHJhdGlvbiB8CnwgYGNsdXN0ZXIgbGlzdGAgfCBM" + + "aXN0IHJlZ2lzdGVyZWQgY2x1c3RlcnMgfCBPdXRwdXQgaXMgWUFNTCBieSBkZWZhdWx0OyBgLS1q" + + "c29uYCBmb3IgbWFjaGluZSB8CnwgYGNsdXN0ZXIgcm90YXRlIC0tY2x1c3Rlci1pZD1JRGAgfCBS" + + "ZS1mZXRjaCBKV0tTIGZyb20gSzhzIGFuZCBQVVQgdG8gSUNNUyB8IEFmdGVyIEs4cyBBUEkgc2Vy" + + "dmVyIHNpZ25pbmcga2V5IHJvdGF0aW9uIHwKfCBgY2x1c3RlciBkZWxldGUgLS1jbHVzdGVyLWlk" + + "PUlEYCB8IFJlbW92ZSBJQ01TIHJvdyB8ICoqREVTVFJVQ1RJVkU6IGNvbmZpcm0gd2l0aCB1c2Vy" + + "KiogfAoKIyMgRnVuY3Rpb25zCgp8IENvbW1hbmQgfCBQdXJwb3NlIHwgTm90ZXMgfAp8LS0tfC0t" + + "LXwtLS18CnwgYGZ1bmN0aW9uIGNyZWF0ZSAtLWlucHV0LWZpbGU9RklMRWAgfCBDcmVhdGUgZnVu" + + "Y3Rpb24gbWV0YWRhdGEgfCBSZXR1cm5zIEZ1bmN0aW9uIElEICsgVmVyc2lvbiBJRDsgTExNIGZ1" + + "bmN0aW9ucyB1c2UgYGZ1bmN0aW9uVHlwZTogIkxMTSJgIGFuZCBgbW9kZWxzW10ubGxtQ29uZmln" + + "LnVyaXNgIGZvciBgL3YxL2NoYXQvY29tcGxldGlvbnNgLCBgL3YxL3Jlc3BvbnNlc2AsIGFuZCBg" + + "L3YxL2VtYmVkZGluZ3NgIHwKfCBgZnVuY3Rpb24gbGlzdGAgLyBgZnVuY3Rpb24gbGlzdC1pZHNg" + + "IHwgTGlzdCBmdW5jdGlvbnMgLyBJRHMgb25seSB8IHwKfCBgZnVuY3Rpb24gZ2V0IC0tZnVuY3Rp" + + "b24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRGAgfCBGdW5jdGlvbiBtZXRhZGF0YSB8IHwKfCBgZnVu" + + "Y3Rpb24gdXBkYXRlIC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRCAtLXRhZ3M9VEFH" + + "WyxUQUddYCB8IFVwZGF0ZSBmdW5jdGlvbiB0YWdzIHwgfAp8IGBmdW5jdGlvbiB1cGRhdGUgLS1m" + + "dW5jdGlvbi1pZD1JRCAtLXZlcnNpb24taWQ9VklEIC0tbGxtLW1vZGVsLXVwZGF0ZT1TUEVDYCB8" + + "IFVwZGF0ZSBMTE0gbW9kZWwgcm91dGluZyBjb25maWcgfCBgU1BFQ2AgdXNlcyBgbmFtZT08bW9k" + + "ZWw+LHJvdXRpbmdNZXRob2Q9PG1ldGhvZD4sdG9rZW5SYXRlTGltaXQ9PGxpbWl0PmA7IGFjY2Vw" + + "dGVkIG1ldGhvZHMgYXJlIGxpc3RlZCBpbiBbZmxhZ3MubWRdKGZsYWdzLm1kKSB8CnwgYGZ1bmN0" + + "aW9uIGRlcGxveSBjcmVhdGUgLS1pbnB1dC1maWxlPUZJTEVgIHwgU2NoZWR1bGUgYSBkZXBsb3lt" + + "ZW50IHwgQmxvY2tzIHVudGlsIEFDVElWRSAoZGVmYXVsdCA5MDBzKSB8CnwgYGZ1bmN0aW9uIGRl" + + "cGxveSBnZXQgLS1mdW5jdGlvbi1pZD1JRCAtLXZlcnNpb24taWQ9VklEIFstLWpzb25dYCB8IERl" + + "cGxveW1lbnQgc3RhdHVzIHwgYGZ1bmN0aW9uU3RhdHVzOiBBQ1RJVkVcfERFUExPWUlOR1x8RVJS" + + "T1JcfEZBSUxFRGAgfAp8IGBmdW5jdGlvbiBkZXBsb3kgdXBkYXRlIC0taW5wdXQtZmlsZT1GSUxF" + + "YCB8IE1vZGlmeSBhIGRlcGxveW1lbnQgaW4gcGxhY2UgfCB8CnwgYGZ1bmN0aW9uIGRlcGxveSBy" + + "ZW1vdmUgLS1mdW5jdGlvbi1pZD1JRCAtLXZlcnNpb24taWQ9VklEYCB8IFN0b3AgYSBkZXBsb3lt" + + "ZW50LCBrZWVwIGZ1bmN0aW9uIHJlY29yZCB8IHwKfCBgZnVuY3Rpb24gaW52b2tlIC0taW5wdXQt" + + "ZmlsZT1GSUxFYCB8IENhbGwgYSByZWd1bGFyIGZ1bmN0aW9uIHwgUmVxdWlyZXMgQVBJIGtleSAo" + + "bm90IGFkbWluIHRva2VuKTsgTExNIGZ1bmN0aW9ucyBhcmUgaW52b2tlZCB0aHJvdWdoIGBsbG0u" + + "aW52b2NhdGlvbi48ZG9tYWluPmAgd2l0aCBgbW9kZWw6ICI8ZnVuY3Rpb24taWQ+Lzxtb2RlbC1u" + + "YW1lPiJgIHwKfCBgZnVuY3Rpb24gZGVsZXRlIC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlk" + + "PVZJRGAgfCBSZW1vdmUgZnVuY3Rpb24gKyBkZXBsb3ltZW50IHwgKipERVNUUlVDVElWRTogY29u" + + "ZmlybSB3aXRoIHVzZXIqKiB8CgojIyBUYXNrcwoKVGFzayBjb21tYW5kcyByZXF1aXJlIGBOVkNG" + + "X0FQSV9LRVlgIHNldCB0byBhIHRhc2stc2NvcGVkIGtleSBhbmQgYE5WQ0ZfQkFTRV9OVkNUX1VS" + + "TGAgc2V0IHRvIHRoZSBOVkNUIGdhdGV3YXkgZW5kcG9pbnQuIEluIGEgZnJlc2ggc2Vzc2lvbiwg" + + "cmVhZCBgbnZjdEFwaUtleWAgZnJvbSBgfi8ubnZjZi1jbGkuc3RhdGVgIGFuZCBpbmplY3QgaXQg" + + "YXMgYE5WQ0ZfQVBJX0tFWWAgd2l0aG91dCBsb2dnaW5nIHRoZSB2YWx1ZTsgY2hlY2sgYG52Y3RB" + + "cGlLZXlFeHBpcmF0aW9uYCBmaXJzdCBhbmQgcmVnZW5lcmF0ZSB3aXRoIGBhcGkta2V5IGdlbmVy" + + "YXRlIC0tZm9yIHRhc2sgLS12YWxpZGF0ZWAgaWYgZXhwaXJlZC4gUnVuIGBhcGkta2V5IGdlbmVy" + + "YXRlIC0tZm9yIHRhc2tgIGFmdGVyIGBpbml0YCB0byBtaW50IGEgbmV3IGtleS4KCnwgQ29tbWFu" + + "ZCB8IFB1cnBvc2UgfCBOb3RlcyB8CnwtLS18LS0tfC0tLXwKfCBgdGFzayBjcmVhdGUgLS1uYW1l" + + "PVggLS1ncHU9R1BVIC0taW5zdGFuY2UtdHlwZT1UWVBFIC0taW1hZ2U9SU1HYCB8IFN1Ym1pdCBh" + + "IGNvbnRhaW5lciB0YXNrIHwgU2F2ZXMgdGFzayBJRCB0byBDTEkgc3RhdGU7IHVzZSBgLS1pbnB1" + + "dC1maWxlYCBmb3IgcmVwZWF0YWJsZSBjb25maWdzIHwKfCBgdGFzayBjcmVhdGUgLS1uYW1lPVgg" + + "LS1ncHU9R1BVIC0taW5zdGFuY2UtdHlwZT1UWVBFIC0taGVsbS1jaGFydD1DSEFSVGAgfCBTdWJt" + + "aXQgYSBIZWxtIHRhc2sgfCBgLS1oZWxtLWNoYXJ0YCByZXBsYWNlcyBgLS1pbWFnZWAgfAp8IGB0" + + "YXNrIGNyZWF0ZSAtLWlucHV0LWZpbGU9RklMRWAgfCBTdWJtaXQgYSB0YXNrIGZyb20gYSBKU09O" + + "IGNvbmZpZyBmaWxlIHwgUmVjb21tZW5kZWQgZm9yIHJlcGVhdGFibGUgY29uZmlndXJhdGlvbnMg" + + "fAp8IGB0YXNrIGxpc3QgWy0tc3RhdHVzPVNUQVRVU10gWy0tbGltaXQ9Tl1gIHwgTGlzdCB0YXNr" + + "cywgb3B0aW9uYWxseSBmaWx0ZXJlZCBieSBzdGF0dXMgfCBTdGF0dXNlczogYFFVRVVFRGAsIGBM" + + "QVVOQ0hFRGAsIGBSVU5OSU5HYCwgYENPTVBMRVRFRGAsIGBFUlJPUkVEYCwgYENBTkNFTEVEYCwg" + + "YEVYQ0VFREVEX01BWF9SVU5USU1FX0RVUkFUSU9OYCwgYEVYQ0VFREVEX01BWF9RVUVVRURfRFVS" + + "QVRJT05gIHwKfCBgdGFzayBnZXQgW3Rhc2tJZF1gIHwgR2V0IHRhc2sgZGV0YWlscyB8IFVzZXMg" + + "c2F2ZWQgdGFzayBJRCBmcm9tIHN0YXRlIGlmIG9taXR0ZWQgfAp8IGB0YXNrIGV2ZW50cyBbdGFz" + + "a0lkXSBbLS1saW1pdD1OXWAgfCBMaXN0IGxpZmVjeWNsZSBldmVudHMgZm9yIGEgdGFzayB8IHwK" + + "fCBgdGFzayByZXN1bHRzIFt0YXNrSWRdYCB8IExpc3QgcmVzdWx0IGFydGlmYWN0cyBmb3IgYSBj" + + "b21wbGV0ZWQgdGFzayB8IFJldHVybnMgZW1wdHkgbGlzdCB3aGVuIGByZXN1bHRIYW5kbGluZ1N0" + + "cmF0ZWd5YCBpcyBgTk9ORWA7IHJlc3VsdCB1cGxvYWQgbm90IHlldCBzdXBwb3J0ZWQgfAp8IGB0" + + "YXNrIGNhbmNlbCBbdGFza0lkXWAgfCBDYW5jZWwgYSBydW5uaW5nIHRhc2sgfCBOby1vcCBpZiBh" + + "bHJlYWR5IGluIHRlcm1pbmFsIHN0YXRlIHwKfCBgdGFzayBkZWxldGUgW3Rhc2tJZF1gIHwgRGVs" + + "ZXRlIGEgdGFzayByZWNvcmQgfCAqKlN0b3AsIHN0YXRlIHRhc2sgSUQgKyBjdXJyZW50IHN0YXR1" + + "cywgYW5kIHdhaXQgZm9yIGEgc3Vic2VxdWVudCB1c2VyIHJlcGx5IGV4cGxpY2l0bHkgY29uZmly" + + "bWluZyBkZWxldGlvbiBvZiB0aGF0IHNwZWNpZmljIHRhc2suIERvIG5vdCB0cmVhdCB0aGUgb3Jp" + + "Z2luYWwgZGVsZXRlIHJlcXVlc3QgYXMgY29uZmlybWF0aW9uLioqIHwKfCBgdGFzayB1cGRhdGUt" + + "c2VjcmV0cyBbdGFza0lkXSAtLXNlY3JldHMgTkFNRT12YWx1ZWAgfCBVcGRhdGUgc2VjcmV0cyBv" + + "biBhIHRhc2s7IHN1cHBsaWVkIHNlY3JldHMgYXJlIGFkZGVkIG9yIHVwZGF0ZWQgYnkgbmFtZSwg" + + "ZXhpc3Rpbmcgc2VjcmV0cyBub3QgaW4gdGhlIHJlcXVlc3QgYXJlIHByZXNlcnZlZCB8IFZhbHVl" + + "cyBhcmUgZW5jcnlwdGVkIGF0IHJlc3QgfAp8IGB0YXNrIGJ1bGsgLS10YXNrLWlkcz1JRDFbLElE" + + "MizigKZdYCB8IEZldGNoIGRldGFpbHMgZm9yIG11bHRpcGxlIHRhc2tzIGluIG9uZSByZXF1ZXN0" + + "IHwgfAoKIyMgQXV0aAoKfCBDb21tYW5kIHwgUHVycG9zZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0t" + + "fAp8IGBpbml0YCB8IE1pbnQgYWRtaW4gdG9rZW4gZnJvbSBBUEkgS2V5cyB2aWEgcHVibGljIGFw" + + "aSBnYXRld2F5IHwgSWRlbXBvdGVudDsgd3JpdGVzIGB+Ly5udmNmLWNsaS5zdGF0ZWA7IGNsZWFy" + + "cyBzYXZlZCBmdW5jdGlvbiBzdGF0ZSBhbmQgYWxsIEFQSSBrZXlzIChmdW5jdGlvbiBhbmQgdGFz" + + "aykgfAp8IGBzdGF0dXNgIHwgU2hvdyBDTEkgc3RhdGUgKHRva2VuLCBsYXN0IGVuZHBvaW50cywg" + + "ZnVuY3Rpb24gY29udGV4dCkgfCBEaXN0aW5jdCBmcm9tIGBzZWxmLWhvc3RlZCBzdGF0dXNgIHwK" + + "fCBgYXBpLWtleSBnZW5lcmF0ZSBbLS1mb3IgZnVuY3Rpb25cfHRhc2tdIFstLWRlc2NyaXB0aW9u" + + "PeKApl0gWy0tZXhwaXJlcy1pbj3igKZdYCB8IE1pbnQgQVBJIGtleXMgfCBEZWZhdWx0IChubyBg" + + "LS1mb3JgKTogZ2VuZXJhdGVzIGJvdGggYSBmdW5jdGlvbiBrZXkgYW5kIGEgdGFzayBrZXk7IGAt" + + "LWZvciBmdW5jdGlvbmAgb3IgYC0tZm9yIHRhc2tgIGdlbmVyYXRlcyBvbmUgb25seTsgYC0tc2Nv" + + "cGVzYCByZXF1aXJlcyBgLS1mb3JgIHwKfCBgYXBpLWtleSBnZW5lcmF0ZSAtLXZhbGlkYXRlYCB8" + + "IE1pbnQgYW5kIGltbWVkaWF0ZWx5IHZhbGlkYXRlIGVhY2ggZ2VuZXJhdGVkIGtleSB8IFZhbGlk" + + "YXRlcyBlYWNoIGtleSBhZ2FpbnN0IGl0cyBjb3JyZWN0IGF1ZGllbmNlIChOVkNGIGZvciBmdW5j" + + "dGlvbiBrZXlzLCBOVkNUIGZvciB0YXNrIGtleXMpIHwKfCBgYXBpLWtleSBsaXN0YCB8IExpc3Qg" + + "QVBJIGtleXMgZm9yIGN1cnJlbnQgb3duZXIgfCBMaXN0cyBOVkNGLXNjb3BlZCBrZXlzIG9ubHkg" + + "fAp8IGBhcGkta2V5IGRlbGV0ZSBLRVktSURgIC8gYGFwaS1rZXkgcmV2b2tlIEtFWS1JRGAgfCBS" + + "ZW1vdmUgYW4gQVBJIGtleSB8ICoqQ29uZmlybSB3aXRoIHVzZXIqKiB8CnwgYGFwaS1rZXkgc2hv" + + "d2AgfCBTaG93IGN1cnJlbnRseSBzYXZlZCBBUEkga2V5IGZyb20gc3RhdGUgfCB8CgojIyBBZ2Vu" + + "dCBza2lsbAoKfCBDb21tYW5kIHwgUHVycG9zZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGBh" + + "Z2VudC1za2lsbCBpbnN0YWxsIFstLXRhcmdldD1ESVJdYCB8IEluc3RhbGwgYWxsIGJ1bmRsZWQg" + + "cHVibGljIHVzZXIgc2tpbGxzIGludG8gYH4vLmNsYXVkZS9za2lsbHMvYCBhbmQgYH4vLmFnZW50" + + "cy9za2lsbHMvYCB8IERlZmF1bHQ6IGJvdGggYmFzZSBza2lsbHMgZGlyZWN0b3JpZXMgfAp8IGBh" + + "Z2VudC1za2lsbCB1bmluc3RhbGwgWy0tdGFyZ2V0PURJUl1gIHwgUmVtb3ZlIG9ubHkgYnVuZGxl" + + "ZCBwdWJsaWMgdXNlciBza2lsbHMgZnJvbSB0aGUgdGFyZ2V0IGJhc2Ugc2tpbGxzIGRpcmVjdG9y" + + "aWVzIHwgSWRlbXBvdGVudDsgdW5yZWxhdGVkIHNraWxscyByZW1haW4gfAp8IGBhZ2VudC1za2ls" + + "bCBzaG93IFstLWZpbGU9UkVMXWAgfCBQcmludCBidW5kbGVkIGBudmNmLXNlbGYtbWFuYWdlZC1j" + + "bGkvU0tJTEwubWRgIG9yIGFub3RoZXIgZW1iZWRkZWQgZmlsZSB8IEZvciBkZWJ1Z2dpbmcgfAp8" + + "IGBhZ2VudC1za2lsbCB2ZXJzaW9uYCB8IFByaW50IGJ1aWxkIFNIQSBhbmQgZW1iZWRkZWQgcHVi" + + "bGljIHVzZXIgc2tpbGwgc3VtbWFyeSB8IHwKUEsHCNu+VPjXIgAA1yIAAFBLAwQUAAgAAAAAACEA" + + "AAAAAAAAAAAAAAAAMgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9leGl0" + + "LWNvZGVzLm1kVVQFAAEAps4SIyBgbnZjZi1jbGlgIGV4aXQgY29kZXMKClN0YWJsZSBhY3Jvc3Mg" + + "c3ViY29tbWFuZHMuIFVzZSB0aGVzZSB0byBkcml2ZSBhZ2VudCByZXRyeSAvIHN1cmZhY2luZyBs" + + "b2dpYy4KCnwgQ29kZSB8IE1lYW5pbmcgfCBFeGFtcGxlIGNhdXNlcyB8CnwtLS18LS0tfC0tLXwK" + + "fCBgMGAgfCBTdWNjZXNzIHwgQWxsIGNoZWNrcyBwYXNzZWQ7IGluc3RhbGwgY29tcGxldGVkOyBk" + + "ZXBsb3ltZW50IEFDVElWRSB8CnwgYDFgIHwgR2VuZXJpYyBlcnJvciB8IEhlbG0gcmVuZGVyIGZh" + + "aWxlZDsgbmV0d29yayB1bnJlYWNoYWJsZTsgZmlsZSBub3QgZm91bmQ7IFlBTUwgcGFyc2UgZXJy" + + "b3IgfAp8IGAyYCB8IFByZS1mbGlnaHQgY2hlY2sgZmFpbGVkIHwgR2F0ZXdheSBBUEkgQ1JEcyBt" + + "aXNzaW5nOyBrdWJlY3RsIG5vdCBvbiBQQVRIOyBkZWZhdWx0IFN0b3JhZ2VDbGFzcyBhYnNlbnQg" + + "fAp8IGAzYCB8IEFkbWluIGF1dGggZmFpbGVkIHwgTm8gdG9rZW4gKyBgLS1ub24taW50ZXJhY3Rp" + + "dmVgIHNldDsgSUNNUyByZWplY3RlZCBKV1Q7IGluaXQgZW5kcG9pbnQgdW5yZWFjaGFibGUgfAp8" + + "IGA1YCB8IE1hbmlmZXN0IGFwcGx5IG9yIGAtLXdhaXRgIHRpbWVkIG91dCB8IEhlbG0gaW5zdGFs" + + "bCB0aW1lb3V0OyBjaGVjayBwb2xsZWQgYnV0IGRpZG4ndCBwYXNzIGJlZm9yZSBkdXJhdGlvbiB8" + + "CnwgYDEzMGAgfCBDYW5jZWxsZWQgYnkgU0lHSU5UL1NJR1RFUk0gfCBVc2VyIEN0cmwtQzsgQ0kg" + + "YnVkZ2V0IGV4Y2VlZGVkOyBwb2QgZXZpY3RlZCB8CgojIyBIb3cgYW4gYWdlbnQgc2hvdWxkIHJl" + + "YWN0Cgp8IENvZGUgfCBBZ2VudCBiZWhhdmlvciB8CnwtLS18LS0tfAp8IGAwYCB8IENvbnRpbnVl" + + "IC8gcmVwb3J0IHN1Y2Nlc3MuIHwKfCBgMWAgfCBTdXJmYWNlIHN0ZGVyciB0byB1c2VyOyBhc2sg" + + "YmVmb3JlIGFueSByZXRyeS4gR2VuZXJpYyBlcnJvcnMgdXN1YWxseSBuZWVkIGEgaHVtYW4gdG8g" + + "cmVhZCB0aGUgbWVzc2FnZS4gfAp8IGAyYCB8IFN1cmZhY2UgZmFpbGVkIGNoZWNrcyArIHRoZWly" + + "IGBoaW50VVJMYC4gRG9uJ3QgcHJvcG9zZSBgdXBgIHVudGlsIHRoZSB1c2VyIGZpeGVzIHByZXJl" + + "cXMuIHwKfCBgM2AgfCBTdWdnZXN0IGBudmNmLWNsaSBpbml0YCAoaW50ZXJhY3RpdmUpIE9SIGAt" + + "LXRva2VuPSRKV1RgIChDSSkuIERvbid0IGF1dG8tbWludCB3aXRob3V0IHVzZXIgT0suIHwKfCBg" + + "NWAgfCBBc2sgdXNlciBpZiB0aGV5IHdhbnQgdG8gd2FpdCBsb25nZXIsIGRpZyBpbnRvIHRoZSBz" + + "dGFsbGVkIGNvbXBvbmVudCwgb3IgY2FuY2VsLiB8CnwgYDEzMGAgfCBEb24ndCByZXRyeSBhdXRv" + + "bWF0aWNhbGx5OyB1c2VyIGV4cGxpY2l0bHkgY2FuY2VsbGVkLiBDb25maXJtIGJlZm9yZSByZS1y" + + "dW5uaW5nLiB8CgojIyBXaGVyZSB0byBmaW5kIG1vcmUgZGV0YWlsCgpFdmVyeSBub24temVybyBl" + + "eGl0IGVtaXRzIGEgc3RydWN0dXJlZCBgcGhhc2VfZmFpbGVkYCBKU09OIGV2ZW50IHdpdGggYGVy" + + "ckNhdGVnb3J5YCwgYGVyck1lc3NhZ2VgLCBgcmVtZWRpYXRpb25gIChhcnJheSksIGByZXRyeUNs" + + "YXNzYCAoZW51bTogYG5vbmV8aW1tZWRpYXRlfGJhY2tvZmZ8YWZ0ZXJfcmVtZWRpYXRpb258dW5r" + + "bm93bmApLCBgcmV0cnlBZnRlclNlY2AgKGludCwgb3B0aW9uYWwpLCBhbmQgYHJhd2AgKHN1YnBy" + + "b2Nlc3MgKyBIVFRQICsgS3ViZXJuZXRlcyBzaWduYWwpLiBBbHdheXMgY29uc3VtZSB0aGVzZSBp" + + "biBgLS1qc29uYCBtb2RlIHJhdGhlciB0aGFuIHBhcnNpbmcgRW5nbGlzaCBmcm9tIHN0ZGVyci4K" + + "UEsHCHOnWmTVBgAA1QYAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAALQAJAGRhdGEvbnZjZi1z" + + "ZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9mbGFncy5tZFVUBQABAKbOEiMgYG52Y2YtY2xpYCBm" + + "bGFnIHJlZmVyZW5jZQoKIyMgR2xvYmFsIGZsYWdzIChldmVyeSBzdWJjb21tYW5kKQoKfCBGbGFn" + + "IHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tY29uZmlnIEZJTEVgIHwg" + + "Q29uZmlnIGZpbGUgcGF0aCB8IGAkSE9NRS8ubnZjZi1jbGkueWFtbGAgfAp8IGAtLWRlYnVnYCB8" + + "IFZlcmJvc2UgSFRUUCBsb2dnaW5nIG9uIHN0ZGVyciB8IGBmYWxzZWAgfAp8IGAtLWpzb25gIHwg" + + "SlNPTkwgZXZlbnRzIG9uIHN0ZGVyciB8IGF1dG8gKG9mZiBpbiBUVFksIG9uIHVuZGVyIGAtLW5v" + + "bi1pbnRlcmFjdGl2ZWApIHwKCiMjIGBzZWxmLWhvc3RlZGAgcGFyZW50IChwZXJzaXN0ZW50IGFj" + + "cm9zcyBzdWJjb21tYW5kcykKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18" + + "LS0tfAp8IGAtLWNvbnRyb2wtcGxhbmUtc3RhY2s94oCmYCB8IENvbnRyb2wtcGxhbmUgYnVuZGxl" + + "IHNvdXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwgb3IgYG9jaTovL2AgVVJMIHwgZW1iZWRkZWQg" + + "T0NJIFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24gfAp8IGAtLWNvbXB1dGUtcGxhbmUtc3RhY2s9" + + "4oCmYCB8IENvbXB1dGUtcGxhbmUgYnVuZGxlIHNvdXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwg" + + "b3IgYG9jaTovL2AgVVJMIHwgZW1iZWRkZWQgT0NJIFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24g" + + "fAp8IGAtLWVudj1sb2NhbFx8cHJkXHzigKZgIHwgSGVsbWZpbGUgZW52aXJvbm1lbnQgbmFtZSB8" + + "IGBsb2NhbGAgZm9yIGRldiBidWlsZHMsIGBwcmRgIGZvciByZWxlYXNlcyB8CnwgYC0tbm9uLWlu" + + "dGVyYWN0aXZlYCB8IERpc2FibGUgYWxsIHN0ZGluIHByb21wdHMgfCBgZmFsc2VgIHwKfCBgLS10" + + "b2tlbj0kSldUYCB8IEFkbWluIEpXVCwgb3ZlcnJpZGVzIHN0b3JlZCBzZXNzaW9uIHwgLSB8Cnwg" + + "YC0tbm8tYXBwbHlgIHwgYGluc3RhbGxgIG9ubHkgLSBlbWl0IFlBTUwsIGRvIG5vdCBrdWJlY3Rs" + + "IGFwcGx5IHwgYGZhbHNlYCB8CnwgYC0tb3V0cHV0PXRleHRcfGpzb25gIHwgTGVnYWN5IGFsaWFz" + + "IGZvciBgLS1qc29uYCAoZGVwcmVjYXRlZCwgcmVtb3ZlZCBpbiBuZXh0IG1ham9yKSB8IGB0ZXh0" + + "YCB8CnwgYC0tcGxhaW5gIHwgRm9yY2UgcGxhaW4gc3RyZWFtaW5nIG91dHB1dCB8IGF1dG8tZGV0" + + "ZWN0IHwKfCBgLS13YWl0IERVUkFUSU9OYCB8IGBjaGVja2Agb25seTsgYmxvY2sgdW50aWwgcGFz" + + "cyB8IC0gfAp8IGAtLWNvbnRyb2wtcGxhbmUtY29udGV4dCBDVFhgIHwga3ViZWN0bCBjb250ZXh0" + + "IGZvciBjb250cm9sIHBsYW5lIChSRVEtMjApIHwgY3VycmVudCBjb250ZXh0IHwKfCBgLS1jb21w" + + "dXRlLXBsYW5lLWNvbnRleHQgQ1RYYCB8IGt1YmVjdGwgY29udGV4dCBmb3IgY29tcHV0ZSBwbGFu" + + "ZSAoUkVRLTIwKSB8IGN1cnJlbnQgY29udGV4dCB8CnwgYC0taWNtcy11cmwgVVJMYCB8IFB1Ymxp" + + "YyBJQ01TIFVSTDsgcmVxdWlyZWQgd2hlbiBjb250ZXh0cyBkaWZmZXIgfCBkZXJpdmVkIGZyb20g" + + "YGJhc2VfaHR0cF91cmxgIHwKfCBgLS1sb2NhbC1vbmx5YCB8IGBjaGVjayAtLXByZWAgb25seTsg" + + "c2tpcCBhbGwga3ViZWN0bCBjb250YWN0IHwgYGZhbHNlYCB8CgojIyBgY2hlY2tgLXNwZWNpZmlj" + + "CgpBdCBsZWFzdCBvbmUgb2YgYC0tcHJlYCwgYC0tY29udHJvbC1wbGFuZWAsIGAtLWNvbXB1dGUt" + + "cGxhbmVgLCBvciBgLS1hbGxgIGlzCnJlcXVpcmVkLiBFYWNoIHNlbGVjdHMgYSByb2xlOyBvbmx5" + + "IHRoZSBzZWxlY3RlZCByb2xlcyBjb250YWN0IGEgY2x1c3Rlci4KCnwgRmxhZyB8IFB1cnBvc2Ug" + + "fCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLXByZWAgfCBQcmUtZmxpZ2h0OiBsb2NhbC1o" + + "b3N0IHRvb2xzIHBsdXMgY2x1c3RlciByZWFkaW5lc3MgfCBgZmFsc2VgIHwKfCBgLS1jb250cm9s" + + "LXBsYW5lYCB8IENvbnRyb2wtcGxhbmUgY2hlY2tzIHwgYGZhbHNlYCB8CnwgYC0tY29tcHV0ZS1w" + + "bGFuZWAgfCBDb21wdXRlLXBsYW5lIGNoZWNrcyB8IGBmYWxzZWAgfAp8IGAtLWFsbGAgfCBFdmVy" + + "eSBjYXRlZ29yeSB8IGBmYWxzZWAgfAp8IGAtLWNsdXN0ZXItbmFtZSBOQU1FYCB8IENsdXN0ZXIg" + + "bmFtZSBmb3IgY29tcHV0ZS1wbGFuZSBjaGVja3MgfCAtIHwKfCBgLS1za2lwLWlub3RpZnktY2hl" + + "Y2tgIHwgU2tpcCB0aGUgcGVyLW5vZGUgaW5vdGlmeS1saW1pdHMgcHJvYmUuIE5lZWRlZCB3aGVu" + + "IHRoZSBrdWJlY29uZmlnIHVzZXIgY2Fubm90IGNyZWF0ZSBwb2RzIGluIGBkZWZhdWx0YC4gRW52" + + "OiBgTlZDRl9DTElfU0VMRkhPU1RFRF9TS0lQX0lOT1RJRllgIHwgYGZhbHNlYCB8CgojIyMgQ2x1" + + "c3Rlci12YWxpZGF0b3IgZmxhZ3MKClRoZSB2YWxpZGF0b3IgcnVucyBhcyBhIEpvYiBpbiB0aGUg" + + "Y2x1c3RlciBiZWluZyBjaGVja2VkLiBUaGUgQ0xJIGNyZWF0ZXMgYQpTZXJ2aWNlQWNjb3VudCwg" + + "Q2x1c3RlclJvbGUsIGFuZCBDbHVzdGVyUm9sZUJpbmRpbmcgZm9yIGl0IGFuZCByZW1vdmVzIHRo" + + "ZW0KYWZ0ZXIgdGhlIHJ1biwgc28gdGhlIGt1YmVjb25maWcgY29udGV4dCBuZWVkcyBwZXJtaXNz" + + "aW9uIHRvIG1hbmFnZSB0aG9zZS4KCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwt" + + "LS18LS0tfAp8IGAtLWNsdXN0ZXItdmFsaWRhdG9yLWltYWdlIFJFRmAgfCBWYWxpZGF0b3IgaW1h" + + "Z2UuIFJlc29sdXRpb24gb3JkZXI6IGZsYWcsIGBOVkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9J" + + "TUFHRWAsIGNvbmZpZyBrZXkgYGNsdXN0ZXJfdmFsaWRhdG9yX2ltYWdlYC4gQSByZWYgd2l0aCBu" + + "byB0YWcgZGlzY292ZXJzIHRoZSBsYXRlc3Qgc3RhYmxlIHRhZyBmcm9tIHRoZSByZWdpc3RyeS4g" + + "VW5zZXQgZXZlcnl3aGVyZSBza2lwcyB0aGUgcHJvYmUgd2l0aCBhIHdhcm5pbmcgfCAtIHwKfCBg" + + "LS1jbHVzdGVyLXZhbGlkYXRvci1yZWdpc3RyaWVzIGhvc3Q6cG9ydCwuLi5gIHwgRXh0cmEgcmVn" + + "aXN0cmllcyB0aGUgY29udHJvbC1wbGFuZSB2YWxpZGF0b3IgcHJvYmVzIGZvciByZWFjaGFiaWxp" + + "dHkuIGBudmNyLmlvYCBpcyBhbHdheXMgcHJvYmVkLiBSZXBlYXRhYmxlIG9yIGNvbW1hLXNlcGFy" + + "YXRlZC4gRW52OiBgTlZDRl9DTElfQ0xVU1RFUl9WQUxJREFUT1JfUkVHSVNUUklFU2A7IGNvbmZp" + + "ZyBrZXkgYGNsdXN0ZXJfdmFsaWRhdG9yX3JlZ2lzdHJpZXNgIHwgYG52Y3IuaW9gIG9ubHkgfAp8" + + "IGAtLWNsdXN0ZXItdmFsaWRhdG9yLXB1bGwtc2VjcmV0IE5BTUVgIHwgZG9ja2VyLXJlZ2lzdHJ5" + + "IFNlY3JldCBpbiBgZGVmYXVsdGAgdXNlZCB0byBwdWxsIHRoZSB2YWxpZGF0b3IgaW1hZ2UuIFdo" + + "ZW4gZW1wdHksIHRoZSBDTEkgbG9va3MgZm9yIG9uZSBpbiB0aGUgTlZDRiBuYW1lc3BhY2VzIGFu" + + "ZCBmYWxscyBiYWNrIHRvIG1pbnRpbmcgb25lIGZyb20gYE5HQ19BUElfS0VZYCB8IGF1dG8tZGV0" + + "ZWN0IHwKfCBgLS1za2lwLWNsdXN0ZXItdmFsaWRhdGlvbmAgfCBTa2lwIHRoZSBpbi1jbHVzdGVy" + + "IHZhbGlkYXRvciBwcm9iZSBlbnRpcmVseS4gRW52OiBgTlZDRl9DTElfU0VMRkhPU1RFRF9TS0lQ" + + "X0NMVVNURVJfVkFMSURBVElPTmAgfCBgZmFsc2VgIHwKfCBgLS1uby1jbGVhbnVwYCB8IEtlZXAg" + + "dGhlIHZhbGlkYXRvciBKb2IgKGFuZCBpdHMgUkJBQykgYWZ0ZXIgdGhlIHJ1biBmb3IgZGVidWdn" + + "aW5nLiBUaGUgbmV4dCBydW4gc3RpbGwgc3dlZXBzIHByaW9yIEpvYnMgfCBgZmFsc2VgIHwKfCBg" + + "LS1zaG93LWxvZ3NgIHwgUHJpbnQgdGhlIHZhbGlkYXRvciB0cmFuc2NyaXB0IHRvIHN0ZGVyciBh" + + "ZnRlciB0aGUgY2hlY2sgZXZlbnRzLiBVc2VmdWwgd2hlbiBwaXBpbmcgYC0tanNvbmAgdG8gYSBz" + + "Y3JpcHQgdGhhdCBhbHNvIHdhbnRzIHRoZSB0cmFuc2NyaXB0IHwgYGZhbHNlYCB8CgojIyBgdXBg" + + "LXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBg" + + "LS1jbHVzdGVyLW5hbWUgTkFNRWAgfCBJQ01TIGNsdXN0ZXIgcm93IGlkZW50aWZpZXIgKHJlcXVp" + + "cmVkKSB8IC0gfAp8IGAtLW5jYS1pZCBJRGAgfCBOQ0EgYWNjb3VudCBJRCB8IGBudmNmLWRlZmF1" + + "bHRgIHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IENsdXN0ZXIgcmVnaW9uIHwgYHVzLXdlc3QtMWAg" + + "fAp8IGAtLXBsYW4tb25seWAgfCBEcnktcnVuOyBlbWl0IHBoYXNlIHBsYW4gKyBFVEFzIHdpdGhv" + + "dXQgY2hhbmdlcyB8IGBmYWxzZWAgfAoKIyMgYHN0YXR1c2Atc3BlY2lmaWMKCnwgRmxhZyB8IFB1" + + "cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0ZXItbmFtZSBOQU1FYCB8" + + "IExpbWl0IHRvIG9uZSBjb21wdXRlIHBsYW5lIHwgLSAoY29udHJvbCArIGFsbCBjbHVzdGVycykg" + + "fAp8IGAtLXdhdGNoYCB8IExpdmUgcmUtcmVuZGVyIHwgYGZhbHNlYCB8CnwgYC0td2F0Y2gtaW50" + + "ZXJ2YWwgRFVSYCB8IGAtLXdhdGNoYCBjYWRlbmNlIHwgYDVzYCB8CnwgYC0tY29tcG9uZW50IE5B" + + "TUVgIHwgRmlsdGVyIGNvbXBvbmVudHMgcGFuZWwgfCBhbGwgfAp8IGAtLW5vLWV2ZW50c2AgfCBT" + + "a2lwIGV2ZW50cyBwYW5lbCB8IGBmYWxzZWAgfAoKIyMgYGNsdXN0ZXIgcmVnaXN0ZXJgLXNwZWNp" + + "ZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1uYW1l" + + "IE5BTUVgIHwgQ2x1c3RlciBuYW1lIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1uY2EtaWQgSURgIHwg" + + "TkNBIElEIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IFJlZ2lvbiB8IGB1" + + "cy13ZXN0LTFgIHwKfCBgLS1pY21zLXVybCBVUkxgIHwgSUNNUyBlbmRwb2ludCB8IGZyb20gY29u" + + "ZmlnIHwKfCBgLS1pZ25vcmUtZXhpc3RpbmdgIHwgTWF0Y2gtb3ItY3JlYXRlIGluc3RlYWQgb2Yg" + + "ZmFpbC1vbi1leGlzdHMgfCBgZmFsc2VgIHwKCiMjIGBhcGkta2V5IGdlbmVyYXRlYC1zcGVjaWZp" + + "YwoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tZm9yIGZ1" + + "bmN0aW9uXHx0YXNrYCB8IEdlbmVyYXRlIG9ubHkgdGhlIHNwZWNpZmllZCBrZXkgdHlwZSB8IChv" + + "bWl0IHRvIGdlbmVyYXRlIGJvdGgpIHwKfCBgLS1kZXNjcmlwdGlvbiBURVhUYCB8IEh1bWFuLXJl" + + "YWRhYmxlIGxhYmVsIGZvciB0aGUga2V5IHwgYEdlbmVyYXRlZCBieSBudmNmLWNsaWAgfAp8IGAt" + + "LWV4cGlyZXMtaW4gRFVSQVRJT05gIHwgRXhwaXJ5IG9mZnNldCAoZS5nLiBgMjRoYCwgYDdkYCk7" + + "IHBhcnNlZCBhcyBleHRlbmRlZCBkdXJhdGlvbiB8IGAyNGhgIHwKfCBgLS1zY29wZXMgU0NPUEVb" + + "LFNDT1BFXWAgfCBPdmVycmlkZSBkZWZhdWx0IHNjb3BlczsgcmVxdWlyZXMgYC0tZm9yYCB8IChz" + + "ZXJ2aWNlIGRlZmF1bHRzKSB8CnwgYC0tdmFsaWRhdGVgIHwgVmFsaWRhdGUgZWFjaCBnZW5lcmF0" + + "ZWQga2V5IGltbWVkaWF0ZWx5IGFmdGVyIG1pbnRpbmcgfCBgZmFsc2VgIHwKCkV4dGVuZGVkIGR1" + + "cmF0aW9uIHVuaXRzOiBgc2AgKHNlY29uZHMpLCBgbWAgKG1pbnV0ZXMpLCBgaGAgKGhvdXJzKSwg" + + "YGRgIChkYXlzKSwgYHdgICh3ZWVrcykuCgojIyBgZnVuY3Rpb24gY3JlYXRlYC1zcGVjaWZpYwoK" + + "YC0taW5wdXQtZmlsZSBGSUxFYCBpcyByZWNvbW1lbmRlZCBmb3IgcmVwZWF0YWJsZSBmdW5jdGlv" + + "biBkZWZpbml0aW9ucy4gRm9yIGFkLWhvYyBjcmVhdGVzOgoKfCBGbGFnIHwgUHVycG9zZSB8IERl" + + "ZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tbmFtZSBOQU1FYCB8IEZ1bmN0aW9uIG5hbWUgfCAt" + + "IHwKfCBgLS1pbWFnZSBJTUFHRWAgfCBDb250YWluZXIgaW1hZ2UgfCAtIHwKfCBgLS1pbmZlcmVu" + + "Y2UtdXJsIFVSSWAgfCBDb250YWluZXIgaW5mZXJlbmNlIGVuZHBvaW50IHwgLSB8CnwgYC0taW5m" + + "ZXJlbmNlLXBvcnQgUE9SVGAgfCBDb250YWluZXIgaW5mZXJlbmNlIHBvcnQgfCAtIHwKfCBgLS1m" + + "dW5jdGlvbi10eXBlIERFRkFVTFRcfFNUUkVBTUlOR1x8TExNYCB8IEZ1bmN0aW9uIHR5cGUgfCBg" + + "REVGQVVMVGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJ" + + "IHJlZmVyZW5jZS4gQ2FuIGJlIHVzZWQgd2l0aCBgLS1mdW5jdGlvbi10eXBlPUxMTWAgZm9yIGNo" + + "YXJ0LXBhY2thZ2VkIExMTSB3b3JrbG9hZHMuIHwgLSB8CnwgYC0taGVsbS1jaGFydC1zZXJ2aWNl" + + "IE5BTUVgIHwgS3ViZXJuZXRlcyBTZXJ2aWNlIG5hbWUgZXhwb3NlZCBieSB0aGUgY2hhcnQuIFJl" + + "cXVpcmVkIHdoZW4gYC0taGVsbS1jaGFydGAgaXMgc2V0LiB8IC0gfAp8IGAtLW1vZGVscyBOQU1F" + + "OlZFUlNJT046VVJJYCB8IFN0YW5kYXJkIG1vZGVsIGFydGlmYWN0OyByZXBlYXRhYmxlIHwgLSB8" + + "CnwgYC0tbGxtLW1vZGVsIFNQRUNgIHwgTExNIG1vZGVsIGNvbmZpZzsgZm9ybWF0IGBuYW1lPTxt" + + "b2RlbD4sdXJpcz08dXJpPlx8PHVyaT4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJhdGVM" + + "aW1pdD08bGltaXQ+YDsgcmVwZWF0YWJsZS4gVG9rZW4gbGltaXRzIHVzZSBgPHZhbHVlPi08dW5p" + + "dD5gIHdpdGggYFNgLCBgTWAsIGBIYCwgYERgLCBvciBgV2AsIGZvciBleGFtcGxlIGAxMDAwLVNg" + + "LiBVc2UgaW5wdXQgSlNPTiBmb3IgY29tYmluZWQgdG9rZW4gbGltaXRzIGJlY2F1c2UgaW5saW5l" + + "IHNwZWNzIHVzZSBjb21tYXMgYXMgZmllbGQgc2VwYXJhdG9ycy4gfCAtIHwKCkluIEpTT04gYW5k" + + "IGlubGluZSBzcGVjcywgTExNIGZ1bmN0aW9ucyBzZXQgYGZ1bmN0aW9uVHlwZTogIkxMTSJgIGFu" + + "ZCBtb2RlbCByb3V0aW5nIG1ldGFkYXRhIHVuZGVyIGBtb2RlbHNbXS5sbG1Db25maWdgLiBgbGxt" + + "Q29uZmlnLnVyaXNgIGRlY2xhcmVzIHRoZSBPcGVuQUktY29tcGF0aWJsZSB1cHN0cmVhbSBwYXRo" + + "cyBleHBvc2VkIGJ5IHRoZSBtb2RlbC4gQ3VycmVudCBzdXBwb3J0ZWQgcGF0aHMgYXJlIGAvdjEv" + + "Y2hhdC9jb21wbGV0aW9uc2AsIGAvdjEvcmVzcG9uc2VzYCwgYW5kIGAvdjEvZW1iZWRkaW5nc2Au" + + "IGBsbG1Db25maWcucm91dGluZ01ldGhvZGAgYWNjZXB0cyBgcm91bmRfcm9iaW5gLCBgcG93ZXJf" + + "b2ZfdHdvYCwgYGdyb3FfbXVsdGlyZWdpb25gLCBgcHVsc2FyYCwgb3IgYHJhbmRvbWAuCmBsbG1D" + + "b25maWcudG9rZW5SYXRlTGltaXRgIGFjY2VwdHMgb25lIG9yIG1vcmUgY29tbWEtc2VwYXJhdGVk" + + "IHBvc2l0aXZlIGludGVnZXIgdG9rZW4gbGltaXRzIGluIGA8dmFsdWU+LTx1bml0PmAgZm9ybWF0" + + "LiBTdXBwb3J0ZWQgdW5pdHMgYXJlIGBTYCAoc2Vjb25kcyksIGBNYCAobWludXRlcyksIGBIYCAo" + + "aG91cnMpLCBgRGAgKGRheXMpLCBhbmQgYFdgICh3ZWVrcykuIFVzZSBkaXN0aW5jdCB1bml0cyB3" + + "aGVuIGNvbWJpbmluZyBsaW1pdHMsIGZvciBleGFtcGxlIGAxMDAwLVMsNTAwMC1NLDEwMDAwMC1I" + + "LDUwMDAwMC1ELDEwMDAwMDAtV2AgaW4gaW5wdXQgSlNPTi4KCkhlbG0gY2hhcnQgcGFja2FnaW5n" + + "IGlzIGluZGVwZW5kZW50IG9mIGBmdW5jdGlvblR5cGVgLiBGb3IgYSBIZWxtLWNoYXJ0IGJhY2tl" + + "ZCBMTE0gZnVuY3Rpb24sIHNldCBgZnVuY3Rpb25UeXBlOiAiTExNImAsIGBoZWxtQ2hhcnRgLCBg" + + "aGVsbUNoYXJ0U2VydmljZU5hbWVgLCBhbmQgYG1vZGVsc1tdLmxsbUNvbmZpZ2AgaW4gdGhlIHNh" + + "bWUgY3JlYXRlIHJlcXVlc3QuIGBpbmZlcmVuY2VQb3J0YCBtdXN0IGJlIHRoZSBLdWJlcm5ldGVz" + + "IFNlcnZpY2UgcG9ydCBleHBvc2VkIGJ5IGBoZWxtQ2hhcnRTZXJ2aWNlTmFtZWAuCgpMTE0gaW52" + + "b2NhdGlvbiByZXF1ZXN0cyB1c2UgYG1vZGVsOiAiPGZ1bmN0aW9uLWlkPi88bW9kZWwtbmFtZT4i" + + "YC4gVGhlIGZ1bmN0aW9uIElEIHNlbGVjdHMgdGhlIE5WQ0YgZnVuY3Rpb24sIGFuZCB0aGUgbW9k" + + "ZWwgbmFtZSBpcyBmb3J3YXJkZWQgdXBzdHJlYW0uIENoYXQgY29tcGxldGlvbnMgYW5kIFJlc3Bv" + + "bnNlcyBBUEkgcmVxdWVzdHMgY2FuIHVzZSBgeC1tdWx0aS10dXJuLXNlc3Npb24taWRgIGZvciBz" + + "ZXNzaW9uIHN0aWNraW5lc3M7IGVtYmVkZGluZ3MgcmVxdWVzdHMgZG8gbm90LgoKIyMgYGZ1bmN0" + + "aW9uIHVwZGF0ZWAtc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwt" + + "LS18LS0tfAp8IGAtLXRhZ3MgVEFHWyxUQUddYCB8IFJlcGxhY2UgZnVuY3Rpb24gdGFncyB8IC0g" + + "fAp8IGAtLWxsbS1tb2RlbC11cGRhdGUgU1BFQ2AgfCBMTE0gbW9kZWwgdXBkYXRlOyBmb3JtYXQg" + + "YG5hbWU9PG1vZGVsPixyb3V0aW5nTWV0aG9kPTxtZXRob2Q+LHRva2VuUmF0ZUxpbWl0PTxsaW1p" + + "dD5gOyByZXBlYXRhYmxlLiBSb3V0aW5nIG1ldGhvZHMgbWF0Y2ggYC0tbGxtLW1vZGVsYC4gVG9r" + + "ZW4gbGltaXQgZXhhbXBsZTogYDEwMDAtU2AuIFVzZSBpbnB1dCBKU09OIGZvciBjb21iaW5lZCB0" + + "b2tlbiBsaW1pdHMuIHwgLSB8CgpJbiBKU09OLCBgZnVuY3Rpb24gdXBkYXRlYCBhY2NlcHRzIGBt" + + "b2RlbFVwZGF0ZXNbXWAgZW50cmllcyB3aXRoIGBtb2RlbE5hbWVgIGFuZCBgbGxtQ29uZmlnLnJv" + + "dXRpbmdNZXRob2RgIGFuZC9vciBgbGxtQ29uZmlnLnRva2VuUmF0ZUxpbWl0YC4gYHVyaXNgIGFy" + + "ZSBjcmVhdGUtdGltZSBtb2RlbCBtZXRhZGF0YSBhbmQgYXJlIG5vdCBwYXJ0IG9mIG1vZGVsIHVw" + + "ZGF0ZXMuCgojIyBgZnVuY3Rpb24gZGVwbG95IGNyZWF0ZWAtc3BlY2lmaWMKCmAtLWlucHV0LWZp" + + "bGUgRklMRWAgaXMgcmVjb21tZW5kZWQgKGZ1bGwgSlNPTiBzcGVjKS4gRm9yIGFkLWhvYyBvbmUt" + + "c2hvdCB1c2U6Cgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBg" + + "LS1mdW5jdGlvbi1pZCBJRGAgfCBGdW5jdGlvbiBJRCAocmVxdWlyZWQpIHwgLSB8CnwgYC0tZ3B1" + + "IE5BTUVgIHwgR1BVIGZhbWlseSB8IGBIMTAwYCB8CnwgYC0taW5zdGFuY2UtdHlwZSBUWVBFYCB8" + + "IFNLVSB8IGBOQ1AuR1BVLkgxMDBfMXhgIHwKfCBgLS1taW4taW5zdGFuY2VzIE5gIHwgTWluIHJl" + + "cGxpY2FzIHwgYDFgIHwKfCBgLS1tYXgtaW5zdGFuY2VzIE5gIHwgTWF4IHJlcGxpY2FzIHwgYDFg" + + "IHwKfCBgLS1tYXgtcmVxdWVzdC1jb25jdXJyZW5jeSBOYCB8IENvbmN1cnJlbmN5IHwgYDBgICh1" + + "bnNldDsgc2VydmVyIGRlZmF1bHQgYXBwbGllcykgfAp8IGAtLWNsdXN0ZXJzIE5BTUVbLE5BTUVd" + + "YCB8IFRhcmdldCBzcGVjaWZpYyBjb21wdXRlIGNsdXN0ZXJzIHwgKGFueSBtYXRjaGluZyBTS1Up" + + "IHwKCiMjIGB0YXNrIGNyZWF0ZWAtc3BlY2lmaWMKCmAtLWlucHV0LWZpbGUgRklMRWAgaXMgcmVj" + + "b21tZW5kZWQgZm9yIHJlcGVhdGFibGUgdGFzayBkZWZpbml0aW9ucy4gRm9yIGFkLWhvYyB1c2U6" + + "Cgp8IEZsYWcgfCBQdXJwb3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYC0tbmFtZSBOQU1F" + + "YCB8IFRhc2sgbmFtZSAocmVxdWlyZWQpIHwgMS0xMjggY2hhcnMsIGBeW2EtejAtOUEtWl1bYS16" + + "MC05QS1aXC1fXSokYCB8CnwgYC0tZ3B1IEdQVWAgfCBHUFUgbmFtZSAocmVxdWlyZWQgd2l0aG91" + + "dCBgLS1pbnB1dC1maWxlYCkgfCBFeGFtcGxlOiBgSDEwMGAgfAp8IGAtLWluc3RhbmNlLXR5cGUg" + + "VFlQRWAgfCBJbnN0YW5jZSB0eXBlIChyZXF1aXJlZCB3aXRob3V0IGAtLWlucHV0LWZpbGVgKSB8" + + "IEV4YW1wbGU6IGBOQ1AuR1BVLkgxMDBfMXhgIHwKfCBgLS1pbWFnZSBJTUFHRWAgfCBDb250YWlu" + + "ZXIgaW1hZ2UgfCBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgLS1oZWxtLWNoYXJ0YCB8CnwgYC0t" + + "aGVsbS1jaGFydCBDSEFSVGAgfCBIZWxtIGNoYXJ0IFVSTCBvciBPQ0kgcmVmZXJlbmNlIHwgTXV0" + + "dWFsbHkgZXhjbHVzaXZlIHdpdGggYC0taW1hZ2VgIHwKfCBgLS1pbnB1dC1maWxlIEZJTEVgIHwg" + + "SlNPTiB0YXNrIHNwZWMgZmlsZSB8IENMSSBmbGFncyBvdmVycmlkZSBKU09OIHZhbHVlcyB3aGVu" + + "IGJvdGggYXJlIHNldCB8CnwgYC0tYmFja2VuZCBCQUNLRU5EYCB8IEJhY2tlbmQgLyBDU1AgfCAt" + + "IHwKfCBgLS1jbHVzdGVycyBOQU1FWyxOQU1FXWAgfCBTcGVjaWZpYyBjbHVzdGVycyB3aXRoaW4g" + + "dGhlIGluc3RhbmNlIHwgQ29tbWEtc2VwYXJhdGVkIHwKfCBgLS1jb250YWluZXItYXJncyBBUkdT" + + "YCB8IEFyZ3MgcGFzc2VkIHdoZW4gbGF1bmNoaW5nIHRoZSBjb250YWluZXIgfCBTaW5nbGUgc3Ry" + + "aW5nLCBlLmcuIGAiLS1lcG9jaHMgMTAgLS1iYXRjaC1zaXplIDMyImAgfAp8IGAtLWNvbnRhaW5l" + + "ci1lbnYgTkFNRT12YWx1ZWAgfCBDb250YWluZXIgZW52aXJvbm1lbnQgdmFyaWFibGU7IHJlcGVh" + + "dGFibGUgfCAtIHwKfCBgLS1zZWNyZXRzIE5BTUU9dmFsdWVgIHwgU2VjcmV0IGVudmlyb25tZW50" + + "IHZhcmlhYmxlOyByZXBlYXRhYmxlOyBlbmNyeXB0ZWQgYXQgcmVzdCB8IC0gfAp8IGAtLW1heC1y" + + "dW50aW1lIERVUkFUSU9OYCB8IE1heCB3YWxsLWNsb2NrIHJ1biB0aW1lIChJU08gODYwMSwgZS5n" + + "LiBgUFQ0SGApIHwgTm8gZGVmYXVsdDsgb21pdCBmb3Igbm8gdGltZSBsaW1pdCB8CnwgYC0tbWF4" + + "LXF1ZXVlZCBEVVJBVElPTmAgfCBNYXggdGltZSBpbiBxdWV1ZSBiZWZvcmUgY2FuY2VsbGF0aW9u" + + "IChJU08gODYwMSkgfCBTZXJ2ZXIgZGVmYXVsdCBgUFQ3MkhgIHwKfCBgLS10ZXJtaW5hdGlvbi1n" + + "cmFjZSBEVVJBVElPTmAgfCBHcmFjZSBwZXJpb2QgYWZ0ZXIgc3RvcCBzaWduYWwgKElTTyA4NjAx" + + "KSB8IFNlcnZlciBkZWZhdWx0IGBQVDFIYCB8CnwgYC0tcmVzdWx0LXN0cmF0ZWd5IFVQTE9BRFx8" + + "Tk9ORWAgfCBIb3cgdG8gaGFuZGxlIHRhc2sgb3V0cHV0IGFydGlmYWN0cyB8IC0gfAp8IGAtLXJl" + + "c3VsdHMtbG9jYXRpb24gTE9DQVRJT05gIHwgUmVzdWx0IHVwbG9hZCB0YXJnZXQsIGZvcm1hdCBg" + + "b3JnLW5hbWUvW3RlYW0tbmFtZS9dbW9kZWwtbmFtZWA7IHJlcXVpcmVkIHdoZW4gYC0tcmVzdWx0" + + "LXN0cmF0ZWd5PVVQTE9BRGAgfCAtIHwKfCBgLS1tb2RlbHMgTkFNRTpWRVJTSU9OOlVSSWAgfCBN" + + "b2RlbCBhcnRpZmFjdDsgcmVwZWF0YWJsZSB8IC0gfAp8IGAtLXJlc291cmNlcyBOQU1FOlZFUlNJ" + + "T046VVJJYCB8IFJlc291cmNlIGFydGlmYWN0OyByZXBlYXRhYmxlIHwgLSB8CnwgYC0tdGFncyBU" + + "QUdbLFRBR11gIHwgVGFzayB0YWdzIHwgQ29tbWEtc2VwYXJhdGVkIHwKfCBgLS1kZXNjcmlwdGlv" + + "biBURVhUYCB8IFRhc2sgZGVzY3JpcHRpb24gfCAtIHwKfCBgLS1sb2dzLXRlbGVtZXRyeS1pZCBV" + + "VUlEYCB8IExvZ3MgdGVsZW1ldHJ5IGVuZHBvaW50IElEIHwgLSB8CnwgYC0tbWV0cmljcy10ZWxl" + + "bWV0cnktaWQgVVVJRGAgfCBNZXRyaWNzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfAp8IGAt" + + "LXRyYWNlcy10ZWxlbWV0cnktaWQgVVVJRGAgfCBUcmFjZXMgdGVsZW1ldHJ5IGVuZHBvaW50IElE" + + "IHwgLSB8CgpQSwcIDgwGlYErAACBKwAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA3AAkAZGF0" + + "YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQAB" + + "AKbOEiMgVHJvdWJsZXNob290aW5nCgpLbm93biBlcnJvcnMg4oaSIGRpYWdub3N0aWMgY29tbWFu" + + "ZCDihpIgcmVtZWRpYXRpb24uIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBzdHJ1Y3R1cmVkIGBwaGFz" + + "ZV9mYWlsZWRgIGV2ZW50cyB0aGUgQ0xJIGVtaXRzIChSRVEtMTUpIOKAlCBldmVyeSBlbnRyeSBi" + + "ZWxvdyBzaG91bGQgbWFwIHRvIGFuIGBlcnJDYXRlZ29yeWAgYW5kIGEgYHJlbWVkaWF0aW9uYCBh" + + "cnJheS4KCiMjIFByZS1mbGlnaHQKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8" + + "LS0tfC0tLXwtLS18CnwgYGt1YmVjdGwgbm90IG9uIFBBVEhgIHwgT3BlcmF0b3IncyBgJFBBVEhg" + + "IGRvZXNuJ3QgaW5jbHVkZSBrdWJlY3RsIHwgSW5zdGFsbCBrdWJlY3RsIDEuMjgrOiBodHRwczov" + + "L2t1YmVybmV0ZXMuaW8vZG9jcy90YXNrcy90b29scy9pbnN0YWxsLWt1YmVjdGwvIHwKfCBgaGVs" + + "bWZpbGUgbm90IG9uIFBBVEhgIHwgU2FtZSB8IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWxtZmlsZS9o" + + "ZWxtZmlsZSNpbnN0YWxsYXRpb24gfAp8IGBoZWxtIG5vdCBvbiBQQVRIYCB8IFNhbWUgfCBodHRw" + + "czovL2hlbG0uc2gvZG9jcy9pbnRyby9pbnN0YWxsLyB8CnwgYEdhdGV3YXkgQVBJIENSRHMgbm90" + + "IGluc3RhbGxlZGAgfCBlbnZveS1nYXRld2F5IHByZXJlcSBtaXNzaW5nIHwgYGhlbG0gaW5zdGFs" + + "bCBlZyBvY2k6Ly9kb2NrZXIuaW8vZW52b3lwcm94eS9nYXRld2F5LWhlbG0gLS1uYW1lc3BhY2U9" + + "ZW52b3ktZ2F0ZXdheS1zeXN0ZW0gLS1jcmVhdGUtbmFtZXNwYWNlYCB8CnwgYGRlZmF1bHQgU3Rv" + + "cmFnZUNsYXNzIG5vdCBhdmFpbGFibGVgIHwgQ2x1c3RlciBoYXMgbm8gZGVmYXVsdCBTQyB8IEFu" + + "bm90YXRlIG9uZTogYGt1YmVjdGwgcGF0Y2ggc2MgPG5hbWU+IC1wICd7Im1ldGFkYXRhIjp7ImFu" + + "bm90YXRpb25zIjp7InN0b3JhZ2VjbGFzcy5rdWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xhc3Mi" + + "OiJ0cnVlIn19fSdgIHwKfCBgR1BVIG9wZXJhdG9yIG5vdCBpbnN0YWxsZWRgIChjb21wdXRlLXBs" + + "YW5lKSB8IG52aWRpYSBHUFUgb3BlcmF0b3IgbWlzc2luZyB8IEluc3RhbGwgcGVyIGh0dHBzOi8v" + + "ZG9jcy5udmlkaWEuY29tL2RhdGFjZW50ZXIvY2xvdWQtbmF0aXZlL2dwdS1vcGVyYXRvci9sYXRl" + + "c3QvaW5zdGFsbC1ncHUtb3BlcmF0b3IuaHRtbCwgT1IgdXNlIGBmYWtlLWdwdS1vcGVyYXRvcmAg" + + "Zm9yIGRldiB8CnwgYEdQVSBub2RlIGxhYmVscyBtaXNzaW5nYCAoY29tcHV0ZS1wbGFuZSkgfCBO" + + "b2RlcyBuZWVkIGBudmlkaWEuY29tL2dwdS5mYW1pbHlgIGV0Yy4gfCBTZXQgYC0tazNzLW5vZGUt" + + "bGFiZWwgbnZpZGlhLmNvbS9ncHUuZmFtaWx5PWhvcHBlckBhZ2VudDpOYCBmb3IgazNkIHwKCiMj" + + "IEF1dGgKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18Cnwg" + + "YGFkbWluIHRva2VuIHJlcXVpcmVkYCAoaW5pdCBub3QgcnVuKSB8IE5vIGB+Ly5udmNmLWNsaS5z" + + "dGF0ZWAgYW5kIGAtLXRva2VuYCBub3QgcGFzc2VkIHwgYG52Y2YtY2xpIGluaXRgIChpbnRlcmFj" + + "dGl2ZSkgb3IgYC0tdG9rZW49JEpXVCAtLW5vbi1pbnRlcmFjdGl2ZWAgKENJKSB8CnwgYFNpZ25l" + + "ZCBKV1QgcmVqZWN0ZWQ6IEFub3RoZXIgYWxnb3JpdGhtIGV4cGVjdGVkLCBvciBubyBtYXRjaGlu" + + "ZyBrZXkocykgZm91bmRgIHwgU3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQgY29u" + + "dHJvbCBwbGFuZSB8IGBybSB+Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5pdGAg" + + "YWdhaW4gfAp8IGA0MDMgbWlzc2luZyByZXF1ZXN0ZWQgYXV0aG9yaXRpZXNgIChmdW5jdGlvbiBp" + + "bnZva2UpIHwgQWRtaW4gdG9rZW4gZG9lc24ndCBoYXZlIGBpbnZva2VfZnVuY3Rpb25gIHNjb3Bl" + + "IHwgYG52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj3igKZgIHRoZW4gcmUt" + + "cnVuIGludm9rZSB8CgojIyBJbnN0YWxsIC8gYHVwYAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1l" + + "ZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBIZWxtIGB0aW1lZCBvdXQgd2FpdGluZyBmb3IgY2Fz" + + "c2FuZHJhYCB8IENhc3NhbmRyYSBTdGF0ZWZ1bFNldCBQVkMgc3R1Y2sgYFBlbmRpbmdgIHwgQ29u" + + "ZmlybSBkZWZhdWx0IFN0b3JhZ2VDbGFzczsgY2hlY2sgYGt1YmVjdGwgZ2V0IHB2LHB2YyAtbiBj" + + "YXNzYW5kcmEtc3lzdGVtYCB8CnwgYEludmFsaWQgR1BVICdOQ1AuR1BVLkgxMDAnIHNwZWNpZmll" + + "ZGAgKGZ1bmN0aW9uIGRlcGxveSkgfCBXcm9uZyBmaWVsZCDigJQgYGdwdWAgaXMgdGhlIGZhbWls" + + "eSwgbm90IHRoZSBTS1UgfCBVc2UgYCJncHUiOiAiSDEwMCJgLCBgImluc3RhbmNlVHlwZSI6ICJO" + + "Q1AuR1BVLkgxMDBfMXgiYCB8CnwgYHJlZ2lvbiBtdXN0IGJlIHByb3ZpZGVkYCAoY2x1c3RlciBy" + + "ZWdpc3RlciAvIGluc3RhbGwgLS1jb21wdXRlLXBsYW5lKSB8IGAtLXJlZ2lvbmAgZW1wdHkgKyBg" + + "Q0xVU1RFUl9SRUdJT05gIGVudiBlbXB0eSB8IFBhc3MgYC0tcmVnaW9uPXVzLXdlc3QtMWAgKG9y" + + "IGFueSBub24tZW1wdHkgdmFsdWUpIHwKfCBgcmVxdWlyZWRFbnYgIk5DQV9JRCIgaXMgbm90IHNl" + + "dGAgKGhlbG1maWxlIGVycm9yIGR1cmluZyBjb21wdXRlLXBsYW5lIGFwcGx5KSB8IE9sZGVyIG52" + + "Y2YtY2xpIGJlZm9yZSBjb21taXQgYDZhYTU3MDRgOyBFeHRyYUVudiBub3QgcHJvcGFnYXRpbmcg" + + "TkNBX0lEIHwgVXBncmFkZSBgbnZjZi1jbGlgIHRvIGEgcmVsZWFzZSBhZnRlciBgNmFhNTcwNGAg" + + "fAp8IGBudmNhLW9wZXJhdG9yOiBJbWFnZVB1bGxCYWNrT2ZmYCBmb3IgYG52Y2Etb3BlcmF0b3I6" + + "cHNhdGAgfCBJbWFnZSBub3QgaW4gY2x1c3RlciByZWdpc3RyeTsgbXVsdGktY2x1c3RlciBidWls" + + "ZCBpcyBsb2NhbCB8IGBrM2QgaW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Etb3BlcmF0b3I6" + + "cHNhdCAtYyA8Y2x1c3Rlcj5gIHwKCiMjIENvbXB1dGUtcGxhbmUgcnVudGltZQoKfCBTeW1wdG9t" + + "IHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBOVkNBIGFnZW50IENyYXNo" + + "TG9vcEJhY2tPZmYgd2l0aCBgSFRUUCA0MDFgIG9uIGAvdjEvbnZjYS9jbHVzdGVycy8uLi4vcmVn" + + "aXN0ZXJgIHwgU3RhbGUgYG91dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIGZyb20g" + + "cHJpb3IgcmVnaXN0ZXI7IGNsdXN0ZXIgSUQgZG9lc24ndCBtYXRjaCBJQ01TIHwgRGVsZXRlIHRo" + + "ZSBzdGFsZSBmaWxlOyByZS1ydW4gYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwYCAoaWRlbXBvdGVu" + + "dCByZWdpc3RlciB3cml0ZXMgYSBmcmVzaCBmaWxlKSB8CnwgYE5vIGNsdXN0ZXIgZm91bmQgd2l0" + + "aCB2YWxpZCBKV0tTIGZvciBjbHVzdGVyIElEOiA8aWQ+YCAoSUNNUyBsb2cpIHwgSldLUyBpbiBJ" + + "Q01TIGRvZXNuJ3QgbWF0Y2ggd2hhdCBjb21wdXRlLXBsYW5lIEs4cyBpcyBjdXJyZW50bHkgc2ln" + + "bmluZyB8IGBudmNmLWNsaSBjbHVzdGVyIHJvdGF0ZSAtLWNsdXN0ZXItaWQ9PGlkPmAgfAp8IEZ1" + + "bmN0aW9uIHBvZCBgSW1hZ2VQdWxsQmFja09mZmAgaW4gYG52Y2YtYmFja2VuZGAgfCBJbWFnZS1j" + + "cmVkZW50aWFsLWhlbHBlciBjb25maWcgbWlzc2luZyBvciB3cm9uZyB8IGBrdWJlY3RsIGRlc2Ny" + + "aWJlIHBvZCAtbiBudmNmLWJhY2tlbmQgPHBvZD5gOyBjaGVjayB0aGUgcHVsbCBzZWNyZXQgY29u" + + "ZmlnIHwKfCBGdW5jdGlvbiBkZXBsb3kgc3R1Y2sgYERFUExPWUlOR2AgZm9yID41IG1pbiB8IE5B" + + "VFMgc3RyZWFtIGluaXQgbGFnIChjb2xkLWNsdXN0ZXIpIOKAlCB3YWl0LCBvciBjaGVjayBOQVRT" + + "IGF1dGgtY2FsbG91dCBoZWFsdGggfCBga3ViZWN0bCBsb2dzIC1uIG5hdHMtc3lzdGVtIC1sIGFw" + + "cC5rdWJlcm5ldGVzLmlvL25hbWU9bmF0cy1hdXRoLWNhbGxvdXQtc2VydmljZWAgfAoKIyMgVGFz" + + "a3MKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYHRh" + + "c2sgY3JlYXRlYCByZXR1cm5zIGBNaXNzaW5nIDxUWVBFPiByZWdpc3RyeSBjcmVkZW50aWFsIGZv" + + "ciBob3N0bmFtZWAsIG9yIGtlZXBzIHVzaW5nIGEgcHJldmlvdXMgY3JlZGVudGlhbCB2YWx1ZSwg" + + "c2hvcnRseSBhZnRlciBgcmVnaXN0cnktY3JlZGVudGlhbCBhZGQvdXBkYXRlL2RlbGV0ZWAgd2hp" + + "bGUgYHJlZ2lzdHJ5LWNyZWRlbnRpYWwgbGlzdGAvYGdldGAgYWxyZWFkeSBzaG93IHRoZSBuZXcg" + + "dmFsdWUgfCBFeHBlY3RlZCBwcm9wYWdhdGlvbiBkZWxheTogTlZDVCBjYWNoZXMgdGhlIGFjY291" + + "bnQncyByZWdpc3RyeSBjcmVkZW50aWFscyB3aXRoIGBudmN0Lm52Y2YuY2FjaGUtdHRsYCAoZGVm" + + "YXVsdCBgUFQ1TWAsIGFib3V0IDUgbWluKSBhbmQgYXBwbGllcyB0aGUgY2hhbmdlIHdoZW4gdGhh" + + "dCBjYWNoZWQgY29weSByZWZyZXNoZXMgfCBXYWl0IHVwIHRvIGFib3V0IDUgbWluIGFuZCByZXRy" + + "eSwgb3IgYGt1YmVjdGwgLW4gbnZjZiByb2xsb3V0IHJlc3RhcnQgZGVwbG95bWVudC9udmN0LWFw" + + "aWAgdG8gYXBwbHkgaW1tZWRpYXRlbHkgfApQSwcI864ThHQRAAB0EQAAUEsDBBQACAAAAAAAIQAA" + + "AAAAAAAAAAAAAAAsAAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vU0tJTEwu" + + "bWRVVAUAAQCmzhItLS0KbmFtZTogbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uCmRlc2Ny" + + "aXB0aW9uOiA+LQogIEluc3RhbGwgYW5kIG9wZXJhdGUgTlZDRiBzZWxmLWhvc3RlZCBjb250cm9s" + + "LXBsYW5lIGFuZCBzZXBhcmF0ZSBjb21wdXRlLXBsYW5lCiAgc3RhY2tzLiBDb3ZlcnMgSGVsbWZp" + + "bGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSBpbnN0YWxsYXRpb24gZmxvd3MsIHRlYXJkb3duLAog" + + "IHZhbHVlcyBvdmVycmlkZXMsIHB1bGwgc2VjcmV0cywgYW5kIHRyb3VibGVzaG9vdGluZy4gVXNl" + + "IGZvcgogIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrLCBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2ss" + + "IHNwbGl0IGNvbXB1dGUtcGxhbmUKICBpbnN0YWxsYXRpb24sIGNvbnRyb2wtcGxhbmUgaW5zdGFs" + + "bGF0aW9uLCBDTEktZ2VuZXJhdGVkIGNvbnRyb2wtcGxhbmUKICBwcm9maWxlcywgSGVsbWZpbGUs" + + "IHNlbGYtbWFuYWdlZCwgb3Igc2VsZi1ob3N0ZWQgZGVwbG95bWVudHMuIERvIE5PVCB1c2UgZm9y" + + "CiAgbG9jYWwgazNkIGVudmlyb25tZW50czsgdXNlIHRoZSBsb2NhbCBrM2QgZGV2ZWxvcG1lbnQg" + + "d29ya2Zsb3cgaW5zdGVhZC4KbGljZW5zZTogQXBhY2hlLTIuMApjb21wYXRpYmlsaXR5OiBSZXF1" + + "aXJlcyBoZWxtZmlsZSA+PSAxLjEuMCA8IDEuMi4wLCBoZWxtID49IDMuMTIsIGhlbG0tZGlmZiBw" + + "bHVnaW4sIGt1YmVjdGwgbWF0Y2hpbmcgY2x1c3RlciB2ZXJzaW9uCmF1dGhvcjogIm52Y2YtY29y" + + "ZS1lbmcgPG52Y2YtY29yZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCnZlcnNpb246ICIxLjAu" + + "MCIKdGFnczogW252Y2YsIHNlbGYtbWFuYWdlZCwgaGVsbWZpbGUsIHNlbGYtaG9zdGVkLCBjb250" + + "cm9sLXBsYW5lLCBjb21wdXRlLXBsYW5lLCBjbGktcHJvZmlsZSwgaW5zdGFsbGF0aW9uLCBkZXBs" + + "b3ltZW50LCBwdWxsLXNlY3JldHNdCnRvb2xzOiBbU2hlbGwsIFJlYWQsIEVkaXQsIEdyZXAsIEds" + + "b2JdCm1ldGFkYXRhOgogIGludGVybmFsOiBmYWxzZQogIGF1dGhvcjogIm52Y2YtY29yZS1lbmcg" + + "PG52Y2YtY29yZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCiAgdmVyc2lvbjogIjEuMCIKICB0" + + "YWdzOiBbbnZjZiwgc2VsZi1tYW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQsIGNvbnRyb2wt" + + "cGxhbmUsIGNvbXB1dGUtcGxhbmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24sIGRlcGxveW1l" + + "bnQsIHB1bGwtc2VjcmV0c10KICBsYW5ndWFnZXM6IFtiYXNoLCB5YW1sXQogIGZyYW1ld29ya3M6" + + "IFtoZWxtZmlsZSwgaGVsbSwga3ViZWN0bF0KICBkb21haW46IGNsb3VkLWluZnJhc3RydWN0dXJl" + + "Ci0tLQoKIyBOVkNGIFNlbGYtTWFuYWdlZCBTdGFjayBPcGVyYXRpb25zCgpPcGVyYXRpb25hbCBn" + + "dWlkZSBmb3IgbWF0Y2hpbmcgTlZDRiBjb250cm9sLXBsYW5lIGFuZCBjb21wdXRlLXBsYW5lIEhl" + + "bG1maWxlIGJ1bmRsZXMuCgojIyBJbnN0cnVjdGlvbnMKClVzZSB0aGlzIHNraWxsIGZvciBpbnN0" + + "YWxsLCB1cGdyYWRlLCBvciB0ZWFyZG93biB3b3JrIGluIG1hdGNoaW5nIGBudmNmLXNlbGYtbWFu" + + "YWdlZC1zdGFja2AgYW5kIGBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXM7IGtlZXAg" + + "SGVsbWZpbGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSBoYW5kb2ZmcyBzZXBhcmF0ZS4gRm9yIGBm" + + "dW5jdGlvblR5cGU6ICJMTE0iYCwgcmVhZCBbTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnRdKHJlZmVy" + + "ZW5jZXMvaGVsbWZpbGUtc3RydWN0dXJlLm1kI2xsbS1mdW5jdGlvbi1lbmFibGVtZW50KS4KCiMj" + + "IFByZXJlcXVpc2l0ZXMKCkFzayBmb3IgdGhlIGV4dHJhY3RlZCBgbnZjZi1zZWxmLW1hbmFnZWQt" + + "c3RhY2tgIHBhdGguIEZvciBzcGxpdCBpbnN0YWxsYXRpb24sCmFsc28gcmVxdWlyZSB0aGUgbWF0" + + "Y2hpbmctdmVyc2lvbiBgbnZjZi1jb21wdXRlLXBsYW5lLXN0YWNrYCBwYXRoLiBWZXJpZnkgYm90" + + "aDoKCmBgYGJhc2gKbHMgPGNvbnRyb2wtcGxhbmUtc3RhY2s+L2hlbG1maWxlLmQvIDxjb250cm9s" + + "LXBsYW5lLXN0YWNrPi9lbnZpcm9ubWVudHMvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9zZWNyZXRz" + + "LyA8Y29udHJvbC1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmxzIDxjb21wdXRlLXBs" + + "YW5lLXN0YWNrPi9oZWxtZmlsZS5kLyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZW52aXJvbm1lbnRz" + + "LyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmBgYAoKSWYgZWl0aGVy" + + "IGRpcmVjdG9yeSBpcyBtaXNzaW5nLCBkb3dubG9hZCBtYXRjaGluZyBidW5kbGUgdmVyc2lvbnMg" + + "ZnJvbSBOR0M6CgpgYGBiYXNoCm5nYyByZWdpc3RyeSByZXNvdXJjZSBkb3dubG9hZC12ZXJzaW9u" + + "IDxvcmc+L252Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrOjx2ZXJzaW9uPgpuZ2MgcmVnaXN0cnkgcmVz" + + "b3VyY2UgZG93bmxvYWQtdmVyc2lvbiA8b3JnPi9udmNmLWNvbXB1dGUtcGxhbmUtc3RhY2s6PHZl" + + "cnNpb24+CmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhlIGNvbnRy" + + "b2wtcGxhbmUgYnVuZGxlIHJvb3QuIFNwbGl0LWZsb3cKY29tbWFuZHMgYW5kIHJvb3Qgc3Vic3Rp" + + "dHV0aW9uIGFyZSBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5j" + + "ZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLgoKIyMgQmVmb3JlIFlvdSBTdGFydAoK" + + "VmVyaWZ5IHRvb2xpbmcgYW5kIGNvbnRleHQgYmVmb3JlIGFueSBvcGVyYXRpb246CgpgYGBiYXNo" + + "CmhlbG1maWxlIC0tdmVyc2lvbiAgICMgTXVzdCBiZSAxLjEueCAoMS4yLjAgcmVtb3ZlZCBzZXF1" + + "ZW50aWFsIG1vZGUpCmhlbG0gdmVyc2lvbiAgICAgICAgICMgTXVzdCBiZSA+PSAzLjEyCmhlbG0g" + + "cGx1Z2luIGxpc3QgICAgICMgTXVzdCBpbmNsdWRlIGhlbG0tZGlmZiA+PSAzLjExCmt1YmVjdGwg" + + "dmVyc2lvbiAgICAgICMgQ2xpZW50IG11c3QgYmUgd2l0aGluIDEgbWlub3IgdmVyc2lvbiBvZiBj" + + "bHVzdGVyCmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5kcyBydW4gZnJvbSB0aGUgZXh0cmFjdGVk" + + "IGBudmNmLXNlbGYtbWFuYWdlZC1zdGFjay9gIHJvb3Q6CgpgYGBiYXNoCmNkIHBhdGgvdG8vbnZj" + + "Zi1zZWxmLW1hbmFnZWQtc3RhY2sKbHMgaGVsbWZpbGUuZC8gZW52aXJvbm1lbnRzLyBzZWNyZXRz" + + "LyBnbG9iYWwueWFtbC5nb3RtcGwKYGBgCgpJZGVudGlmeSB0aGUgZW52aXJvbm1lbnQgZnJvbSBg" + + "ZW52aXJvbm1lbnRzLzxuYW1lPi55YW1sYCBhbmQKYHNlY3JldHMvPG5hbWU+LXNlY3JldHMueWFt" + + "bGA7IGZvciBFS1MsIHVzZSB0aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXSho" + + "dHRwczovL2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFt" + + "cGxlKS4KCiMjIEhvdyBWYWx1ZXMgRmxvdwoKVW5kZXJzdGFuZGluZyB2YWx1ZSBwcmVjZWRlbmNl" + + "IHByZXZlbnRzIHRoZSBtb3N0IGNvbW1vbiBjb25maWd1cmF0aW9uIG1pc3Rha2VzLgoKYGBgCmVu" + + "dmlyb25tZW50cy9iYXNlLnlhbWwgICAgICAgICAgKGRlZmF1bHRzKQogICAgLT4gbWVyZ2VkIHdp" + + "dGgKZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwgICAgICAgICAoeW91ciBvdmVycmlkZXMpCiAgICAt" + + "PiBjb25zdW1lZCBieQpnbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgIChHbyB0ZW1wbGF0" + + "ZSwgY29uc3RydWN0cyBwZXItY2hhcnQgdmFsdWVzKQogICAgLT4gY29uc3VtZWQgYnkKc2VjcmV0" + + "cy88ZW52Pi1zZWNyZXRzLnlhbWwgICAgICAoc2Vuc2l0aXZlIHZhbHVlcykKICAgIC0+IG92ZXJy" + + "aWRkZW4gYnkKcmVsZWFzZSBpbmxpbmUgdmFsdWVzOiBibG9ja3MgICAoaGlnaGVzdCBwcmVjZWRl" + + "bmNlKQpgYGAKCkNyaXRpY2FsOiBgZ2xvYmFsLnlhbWwuZ290bXBsYCBvbmx5IHBhc3NlcyB0aHJv" + + "dWdoIHNwZWNpZmljIGtleXMgdG8gZWFjaCBjaGFydCAoaW1hZ2UgcmVnaXN0cmllcywgbm9kZSBz" + + "ZWxlY3RvcnMsIHN0b3JhZ2UsIHJlcGxpY2EgY291bnRzKS4gU2V0dGluZyBhbiBhcmJpdHJhcnkg" + + "Y2hhcnQgdmFsdWUgaW4gdGhlIGVudmlyb25tZW50IGZpbGUgd2lsbCBiZSBzaWxlbnRseSBpZ25v" + + "cmVkIGlmIGBnbG9iYWwueWFtbC5nb3RtcGxgIGRvZXMgbm90IHByb3BhZ2F0ZSBpdC4KClRvIG92" + + "ZXJyaWRlIGFyYml0cmFyeSBjaGFydCB2YWx1ZXMsIHVzZSBhIGhlbG1maWxlIHJlbGVhc2UgYHZh" + + "bHVlczpgIGJsb2NrLiBTZWUgW092ZXJyaWRpbmcgSGVsbSBDaGFydCBWYWx1ZXNdKCNvdmVycmlk" + + "aW5nLWhlbG0tY2hhcnQtdmFsdWVzKS4KCiMjIENsZWFuIEluc3RhbGxhdGlvbgoKIyMjIDEuIENy" + + "ZWF0ZSBuYW1lc3BhY2VzIGFuZCBpbWFnZSBwdWxsIHNlY3JldHMgKGlmIHVzaW5nIGEgcHJpdmF0" + + "ZSByZWdpc3RyeSkKCmBgYGJhc2gKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0" + + "ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAg" + + "a3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlICIkbnMiIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8" + + "IGt1YmVjdGwgYXBwbHkgLWYgLQpkb25lCgojIE9ubHkgaWYgcHVsbGluZyBmcm9tIGEgcHJpdmF0" + + "ZSByZWdpc3RyeSAoZS5nLiwgTkdDIG52Y3IuaW8pCmV4cG9ydCBOR0NfQVBJX0tFWT0iPHlvdXIt" + + "a2V5PiIKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5" + + "cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCBjcmVhdGUg" + + "c2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNlcnZlcj1u" + + "dmNyLmlvIFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAgLS1kb2Nr" + + "ZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIgXAogICAg" + + "LS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCmRvbmUKYGBgCgpJ" + + "ZiB1c2luZyBwdWxsIHNlY3JldHMsIHlvdSBtdXN0IGFsc28gY29uZmlndXJlIGVhY2ggaGVsbWZp" + + "bGUgcmVsZWFzZSB0byByZWZlcmVuY2UgdGhlbS4gU2VlIFtJbWFnZSBQdWxsIFNlY3JldHNdKCNp" + + "bWFnZS1wdWxsLXNlY3JldHMpLgoKIyMjIDIuIEF1dGhlbnRpY2F0ZSBoZWxtIHRvIHlvdXIgY2hh" + + "cnQgcmVnaXN0cnkKCkJvdGggYGRvY2tlciBsb2dpbmAgQU5EIGBoZWxtIHJlZ2lzdHJ5IGxvZ2lu" + + "YCBhcmUgcmVxdWlyZWQgZm9yIE5HQy4gSGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0" + + "byBwdWxsIE9DSSBjaGFydHMsIHNvIHRoZSBoZWxtIGNyZWRlbnRpYWwgc3RvcmUgbXVzdCBiZSBh" + + "dXRoZW50aWNhdGVkIHNlcGFyYXRlbHkuCgpgYGBiYXNoCiMgTkdDIC0tIGJvdGggY29tbWFuZHMg" + + "YXJlIHJlcXVpcmVkCmRvY2tlciBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tlbicgLXAgIiRO" + + "R0NfQVBJX0tFWSIKaGVsbSByZWdpc3RyeSBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tlbicg" + + "LXAgIiROR0NfQVBJX0tFWSIKCiMgRUNSCmF3cyBlY3IgZ2V0LWxvZ2luLXBhc3N3b3JkIC0tcmVn" + + "aW9uIDxyZWdpb24+IHwgXAogIGhlbG0gcmVnaXN0cnkgbG9naW4gLS11c2VybmFtZSBBV1MgLS1w" + + "YXNzd29yZC1zdGRpbiA8YWNjb3VudD4uZGtyLmVjci48cmVnaW9uPi5hbWF6b25hd3MuY29tCmBg" + + "YAoKPiBOb3RlOiBgaGVsbSByZWdpc3RyeSBsb2dpbmAga2VlcHMgb25seSB0aGUgbGFzdCBsb2dp" + + "biBwZXIgaG9zdCAobXVsdGktb3JnIGdvdGNoYSkuCj4gVGhlIHN0YWNrIGFuZCB0aGUgY2FjaGVz" + + "IHNwYW4gc2V2ZXJhbCBOR0Mgb3JncyB0aGF0IG5lZWQgZGlmZmVyZW50IGtleXMsIGJ1dCB0aGV5" + + "IGFsbAo+IGxpdmUgdW5kZXIgdGhlIG9uZSBob3N0IGBudmNyLmlvYC4gQSBzZWNvbmQgYGhlbG0g" + + "cmVnaXN0cnkgbG9naW4gbnZjci5pb2AgKG9yCj4gYGRvY2tlciBsb2dpbmApIHdpdGggYSBkaWZm" + + "ZXJlbnQga2V5IHNpbGVudGx5IG92ZXJ3cml0ZXMgdGhlIGZpcnN0LCBzbyBwdWxscyBmb3IgdGhl" + + "Cj4gZmlyc3Qgb3JnIHRoZW4gZmFpbCB3aXRoIGEgbWlzbGVhZGluZyBgNDAzIEFjY2VzcyBEZW5p" + + "ZWRgIChub3QgYSA0MDE6IHRoZSBhdXRoCj4gc3VjY2VlZGVkLCBpdCdzIHRoZSB3cm9uZy1vcmcg" + + "a2V5KS4gSWYgeW91IHB1bGwgY2hhcnRzL2ltYWdlcyBmcm9tIG1vcmUgdGhhbiBvbmUgb3JnLAo+" + + "IGVpdGhlciByZS1ydW4gdGhlIGxvZ2luIHdpdGggdGhlIGNvcnJlY3Qga2V5IGltbWVkaWF0ZWx5" + + "IGJlZm9yZSBlYWNoIHB1bGwsIG9yIHBhc3MKPiBgLS11c2VybmFtZSAnJG9hdXRodG9rZW4nIC0t" + + "cGFzc3dvcmQgPGtleT5gIHBlciBgaGVsbSBwdWxsYCBpbnZvY2F0aW9uIGluc3RlYWQgb2YgcmVs" + + "eWluZwo+IG9uIHRoZSBzdG9yZWQgbG9naW4uIChQdWxsaW5nIGV2ZXJ5dGhpbmcgZnJvbSBhIHNp" + + "bmdsZSByZWdpc3RyeSBtaXJyb3IgYXZvaWRzIHRoaXMKPiBlbnRpcmVseS4pCgojIyMgMmIuIChS" + + "ZWNvbW1lbmRlZCkgUHVsbCBmcm9tIGEgcmVnaXN0cnkgdGhlIGNsdXN0ZXIgYXV0aGVudGljYXRl" + + "cyB0byBhdXRvbWF0aWNhbGx5CgpJZiB5b3UgbWlycm9yIHRoZSBOVkNGIGltYWdlcyBpbnRvIGEg" + + "cmVnaXN0cnkgdGhhdCB0aGUgY2x1c3RlciBjYW4gcHVsbCBmcm9tIHdpdGhvdXQgYW4KZXhwbGlj" + + "aXQgaW1hZ2UgcHVsbCBzZWNyZXQgKGZvciBleGFtcGxlLCBhIHJlZ2lzdHJ5IHdoZXJlIHRoZSBu" + + "b2RlIG9yIHdvcmtsb2FkIGlkZW50aXR5IGlzCmdyYW50ZWQgcHVsbCBhY2Nlc3MgYXV0b21hdGlj" + + "YWxseSksIHBvaW50IHRoZSBzdGFjayBhdCBpdCBhbmQgc2tpcCB0aGUgY3JlZGVudGlhbCBzdGVw" + + "cwphYm92ZS4KCjEuIFBvaW50IHRoZSBzdGFjayBhdCB0aGUgbWlycm9yIGluIGBlbnZpcm9ubWVu" + + "dHMvPGVudj4ueWFtbGA6CgogICBgYGB5YW1sCiAgIGdsb2JhbDoKICAgICBpbWFnZToKICAgICAg" + + "IHJlZ2lzdHJ5OiA8eW91ci1yZWdpc3RyeT4gICAgICAgICAgICAjIGUuZy4gcmVnaXN0cnkuZXhh" + + "bXBsZS5jb20KICAgICAgIHJlcG9zaXRvcnk6IDxtaXJyb3Itc3ViLXBhdGg+CiAgICAgaGVsbToK" + + "ICAgICAgIHNvdXJjZXM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbmx5IGlmIHlv" + + "dSBhbHNvIG1pcnJvcmVkIHRoZSBoZWxtIGNoYXJ0cwogICAgICAgICByZWdpc3RyeTogPHlvdXIt" + + "cmVnaXN0cnk+CiAgICAgICAgIHJlcG9zaXRvcnk6IDxtaXJyb3Itc3ViLXBhdGg+CiAgIGBgYAoK" + + "ICAgPiBUaGUgbWFuaWZlc3QgaGFzIGEgbWl4IG9mIE9DSSBhbmQgbm9uLU9DSSBhcnRpZmFjdHMs" + + "IHNvIGNvbnZlcnQgbm9uLU9DSSBjaGFydHMgYmVmb3JlCiAgID4gbWlycm9yaW5nLiBDb250YWlu" + + "ZXIgaW1hZ2VzIChgbnZjci5pby8uLi5gKSBhcmUgYWxyZWFkeSBPQ0kgYW5kIG1pcnJvciBhcy1p" + + "cy4gU29tZSBIZWxtCiAgID4gY2hhcnRzLCB0aG91Z2gsIGFyZSBwdWJsaXNoZWQgdG8gYW4gYGh0" + + "dHBzOi8vYCBIZWxtIHJlcG9zaXRvcnkgKGZvciBleGFtcGxlCiAgID4gYGhlbG0ubmdjLm52aWRp" + + "YS5jb21gKS4gVGhvc2UgYXJlIG5vdCBPQ0kgYW5kIGNhbm5vdCBiZSByZXNvbHZlZCBieSBgZ2xv" + + "YmFsLmhlbG0uc291cmNlc2AKICAgPiAoT0NJKSBvciBtaXJyb3JlZCBkaXJlY3RseS4gQmVmb3Jl" + + "IHBvaW50aW5nIHRoZSBzdGFjayBhdCB5b3VyIG1pcnJvciwgY29udmVydCBlYWNoCiAgID4gYGh0" + + "dHBzOi8vYCBjaGFydCB0byBPQ0k6IGBoZWxtIHJlcG8gYWRkYC9gaGVsbSBwdWxsYCB0aGUgYC50" + + "Z3pgLCB0aGVuCiAgID4gYGhlbG0gcHVzaCA8Y2hhcnQ+LnRneiBvY2k6Ly88eW91ci1yZWdpc3Ry" + + "eT4vPG1pcnJvci1zdWItcGF0aD5gLiBPbmx5IE9DSSBjaGFydHMgY2FuIGxpdmUKICAgPiB1bmRl" + + "ciBgZ2xvYmFsLmhlbG0uc291cmNlc2AuCgoyLiBTa2lwIHRoZSBjcmVkZW50aWFsIHN0ZXBzIGFi" + + "b3ZlLiBXaGVuIHRoZSBjbHVzdGVyIGF1dGhlbnRpY2F0ZXMgdG8gdGhlIHJlZ2lzdHJ5CiAgIGF1" + + "dG9tYXRpY2FsbHkgKHRoZSBub2RlIG9yIHdvcmtsb2FkIGlkZW50aXR5IGhhcyBwdWxsIGFjY2Vz" + + "cyksIHRoZSBwdWxsIG5lZWRzIG5vCiAgIEt1YmVybmV0ZXMgc2VjcmV0LCBzbyB5b3UgZG8gbm90" + + "IG5lZWQ6IHRoZSBwZXItbmFtZXNwYWNlIGBudmNyLWNyZWRzYCBmcm9tIHN0ZXAgMQogICAoc3Rp" + + "bGwgY3JlYXRlIHRoZSBuYW1lc3BhY2VzLCBqdXN0IG5vdCB0aGUgc2VjcmV0KSwgdGhlIGBnbG9i" + + "YWwuaW1hZ2VQdWxsU2VjcmV0c2AgZW50cnksCiAgIG9yIHRoZSBgZG9ja2VyIGxvZ2luYC9gaGVs" + + "bSByZWdpc3RyeSBsb2dpbiBudmNyLmlvYCBmcm9tIHN0ZXAgMi4KCiAgID4gT25lIHJlc2lkdWFs" + + "IGNyZWRlbnRpYWw6IG52Y2YtYXBpIHN0aWxsIHZhbGlkYXRlcyB0aGUgdXNlciBmdW5jdGlvbiBp" + + "bWFnZSBhdAogICA+IGBmdW5jdGlvbiBjcmVhdGVgIHZpYSB0aGUgYWNjb3VudCByZWdpc3RyeSBj" + + "cmVkZW50aWFsLCBzbyB0aGF0IGNyZWRlbnRpYWwgbXVzdCBwb2ludCBhdAogICA+IHdoaWNoZXZl" + + "ciByZWdpc3RyeSBob2xkcyB0aGUgdXNlciBpbWFnZSAoc2V0IGl0IHRvIHlvdXIgbWlycm9yIGlm" + + "IHRoZSBpbWFnZSBpcyBtaXJyb3JlZAogICA+IHRoZXJlKS4KCiMjIyAzLiBTZXQgdGhlIHJvdXRl" + + "IGRvbWFpbgoKYGdsb2JhbC5kb21haW5gIHNldHMgdGhlIGhvc3RuYW1lIHN1ZmZpeCBmb3Igcm91" + + "dGVzIHN1Y2ggYXMgYGFwaS48ZG9tYWluPmAuIEl0IGRvZXMgbm90IGNvbmZpZ3VyZSB0aGUgR2F0" + + "ZXdheSBvciBpdHMgbG9hZCBiYWxhbmNlci4gUXVlcnkgdGhlIGV4YWN0IGV4aXN0aW5nIEdhdGV3" + + "YXk6CgpgYGBiYXNoCkdBVEVXQVlfQUREUkVTUz0kKGt1YmVjdGwgZ2V0IGdhdGV3YXkgPGdhdGV3" + + "YXktbmFtZT4gLW4gPGdhdGV3YXktbmFtZXNwYWNlPiAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRk" + + "cmVzc2VzWzBdLnZhbHVlfScpCnRlc3QgLW4gIiRHQVRFV0FZX0FERFJFU1MiCmBgYAoKVGhlIGFk" + + "ZHJlc3MgbWF5IGJlIGEgaG9zdG5hbWUgb3IgSVAuIENsb3VkIHByb3ZpZGVyIGFuZCBHYXRld2F5" + + "IGNvbmZpZ3VyYXRpb24gZGV0ZXJtaW5lIHRoZSBsb2FkIGJhbGFuY2VyIHR5cGUgYW5kIGFkZHJl" + + "c3MgZm9ybWF0LiBUaGUgc2VsZi1tYW5hZ2VkIHN0YWNrIGRvZXMgbm90IHNlbGVjdCBlaXRoZXIu" + + "CgpGb3IgdGVtcG9yYXJ5IHRlc3Rpbmcgd2l0aG91dCBETlMsIHVzZSBhIHN0YWJsZSByZXNlcnZl" + + "ZCBzdWZmaXggc3VjaCBhcyBgZ2xvYmFsLmRvbWFpbjogIm52Y2YudGVzdCJgLCBjb25uZWN0IHRv" + + "IGBHQVRFV0FZX0FERFJFU1NgLCBhbmQgc2VuZCBgSG9zdDogYXBpLm52Y2YudGVzdGAuIEZvciBw" + + "cm9kdWN0aW9uLCB1c2UgeW91ciBiYXNlIEROUyBkb21haW4gYW5kIHBvaW50IGl0cyByb3V0ZSBy" + + "ZWNvcmRzIHRvIGBHQVRFV0FZX0FERFJFU1NgLiBJZiB0aGUgZW5kcG9pbnQgbGF0ZXIgY2hhbmdl" + + "cywga2VlcCBgZ2xvYmFsLmRvbWFpbmAgc3RhYmxlIGFuZCB1cGRhdGUgb25seSBETlMgb3IgdGhl" + + "IGNsaWVudCBkZXN0aW5hdGlvbi4gU2VlIEV4YW1wbGUgNCBpbiBbZXhhbXBsZXMubWRdKGV4YW1w" + + "bGVzLm1kKS4KCiMjIyA0LiBQcmV2aWV3IGFuZCBkZXBsb3kKCmBgYGJhc2gKSEVMTUZJTEVfRU5W" + + "PTxlbnYtbmFtZT4gaGVsbWZpbGUgdGVtcGxhdGUgICAjIFByZXZpZXcgcmVuZGVyZWQgbWFuaWZl" + + "c3RzCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIHN5bmMgICAgICAgIyBEZXBsb3kK" + + "YGBgCgo+IFNldCBCT1RIIENhc3NhbmRyYSBwYXNzd29yZHMgaW4gdGhlIHNlY3JldHMgZmlsZS4g" + + "VGhlIHNlY3JldHMgZmlsZSBkb2N1bWVudHMKPiBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRg" + + "LCBidXQgdGhlIGNhc3NhbmRyYSBjaGFydCBoYXMgYSBzZWNvbmQgY3JlZGVudGlhbCwKPiBgY2Fz" + + "c2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgLCB0aGF0IGRlZmF1bHRzIHRvIGBjaEBuZzNtM2Au" + + "IElmIHlvdSBzZXQgb25seQo+IGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAsIHRoZSBzZXJ2" + + "aWNlIHJvbGUga2VlcHMgdGhhdCBkZWZhdWx0IGFuZCBldmVyeSBEQi1iYWNrZWQKPiBzZXJ2aWNl" + + "IGNyYXNoLWxvb3BzIHdpdGggYEJhZCBjcmVkZW50aWFsc2Agb25jZSBpdCB0cmllcyB0byBhdXRo" + + "ZW50aWNhdGUuIFNldAo+IGBjYXNzYW5kcmEuc2VydmljZVJvbGVQYXNzd29yZGAgdG8gdGhlIHNh" + + "bWUgdmFsdWUgYXMgYERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYC4KCiMjIyA1LiBEZXBsb3lt" + + "ZW50IHBoYXNlcwoKSGVsbWZpbGUgZGVwbG95cyBpbiBvcmRlciB3aXRoIGRlcGVuZGVuY2llczoK" + + "CnwgUGhhc2UgfCBTZWxlY3RvciB8IFNlcnZpY2VzIHwgV2FpdCB0aW1lIHwKfC0tLS0tLS18LS0t" + + "LS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS0tfAp8IDEgfCBgcmVsZWFzZS1ncm91cD1kZXBl" + + "bmRlbmNpZXNgIHwgTkFUUywgT3BlbkJhbywgQ2Fzc2FuZHJhIHwgNS0xMCBtaW4gfAp8IDIgfCBg" + + "cmVsZWFzZS1ncm91cD1zZXJ2aWNlc2AgfCBBUEksIFNJUywgRVNTLCBpbnZvY2F0aW9uLCBncnBj" + + "LXByb3h5LCBub3RhcnksIGFwaS1rZXlzLCBvcHRpb25hbCBMTE0gZ2F0ZXdheS9yb3V0ZXIsIG9w" + + "dGlvbmFsIFZhbml0eSBHYXRld2F5LCBOVkNGIFVJIHdoZW4gdGhlIHN0YWNrIHBhY2thZ2UgaW5j" + + "bHVkZXMgdGhlIGFkZG9uIHwgNS0xMCBtaW4gfAp8IDMgfCBgcmVsZWFzZS1ncm91cD1pbmdyZXNz" + + "YCB8IEdhdGV3YXkgcm91dGVzIHwgMS0yIG1pbiB8CnwgNCB8IGByZWxlYXNlLWdyb3VwPW9ic2Vy" + + "dmFiaWxpdHlgIHwgT2JzZXJ2YWJpbGl0eSBzdGFjayAoaWYgZW5hYmxlZCkgfCAxLTIgbWluIHwK" + + "Ck1vbml0b3IgaW4gYSBzZXBhcmF0ZSB0ZXJtaW5hbDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgcG9k" + + "cyAtQSAtdwpgYGAKCiMjIyA2LiBFbmFibGUgVmFuaXR5IEdhdGV3YXkgKG9wdGlvbmFsKQoKVmFu" + + "aXR5IEdhdGV3YXkgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBhbmQgaXMgb25seSBuZWVkZWQgZm9y" + + "IGN1c3RvbWVyLWZhY2luZwpob3N0bmFtZXMgb3IgcGF0aCBtYXBwaW5ncyBpbiBmcm9udCBvZiB0" + + "aGUgc3RhbmRhcmQgTlZDRiBBUEkgYW5kIGludm9jYXRpb24Kcm91dGVzLiBJdCBpcyBhdmFpbGFi" + + "bGUgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhlIFZhbml0eSBHYXRld2F5" + + "CmFkZG9uLiBJZiB0aGUgZXh0cmFjdGVkIHN0YWNrIHBhY2thZ2UgZG9lcyBub3QgY29udGFpbiBh" + + "IGB2YW5pdHktZ2F0ZXdheWAKcmVsZWFzZSBhbmQgYHZhbml0eUdhdGV3YXlgIHJvdXRlIHZhbHVl" + + "cywgc2tpcCB0aGVzZSBjb21tYW5kcyBhbmQgdXNlIGEgbmV3ZXIKc3RhY2sgcGFja2FnZSB0aGF0" + + "IGluY2x1ZGVzIHRoZW0uCgpJZiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGUgYWRkb24s" + + "IGVuYWJsZSBpdCBpbgpgZW52aXJvbm1lbnRzLzxlbnYtbmFtZT4ueWFtbGA6CgpgYGB5YW1sCmFk" + + "ZG9uczoKICB2YW5pdHlHYXRld2F5OgogICAgZW5hYmxlZDogdHJ1ZQogICAgbWFwcGluZ0NvbmZp" + + "Zzoge30KYGBgCgpUaGUgZGVmYXVsdCByb3V0ZSBob3N0IGlzIGB2YW5pdHkuPGRvbWFpbj5gIGFu" + + "ZCB0aGUgYmFja2VuZCBpcwpgdmFuaXR5LWdhdGV3YXkubnZjZjo4MDgwYC4gUHV0IGRlcGxveW1l" + + "bnQtc3BlY2lmaWMgaG9zdCBhbmQgcGF0aCBtYXBwaW5ncyB1bmRlcgpgYWRkb25zLnZhbml0eUdh" + + "dGV3YXkubWFwcGluZ0NvbmZpZ2AuIElmIHlvdSBuZWVkIGN1c3RvbSB2YW5pdHkgaG9zdHMgaW5z" + + "dGVhZCBvZgpgdmFuaXR5Ljxkb21haW4+YCwgdXNlIHRoZSByb3V0ZSBob3N0bmFtZSBvdmVycmlk" + + "ZXMgc3VwcG9ydGVkIGJ5IHRoZSBzdGFjawpwYWNrYWdlIGFuZCBjcmVhdGUgbWF0Y2hpbmcgRE5T" + + "IHJlY29yZHMuCgpBZnRlciBjb25maXJtaW5nIHRoZSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBgdmFu" + + "aXR5LWdhdGV3YXlgIHJlbGVhc2UsIHByZXZpZXcgYW5kCmFwcGx5IHRoZSBzZXJ2aWNlIGFuZCBy" + + "b3V0ZToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3Rv" + + "ciBuYW1lPXZhbml0eS1nYXRld2F5IHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhl" + + "bG1maWxlIC0tc2VsZWN0b3IgbmFtZT12YW5pdHktZ2F0ZXdheSBzeW5jCkhFTE1GSUxFX0VOVj08" + + "ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1pbmdyZXNzIHN5bmMK" + + "YGBgCgpWZXJpZnkgdGhlIHJvdXRlIG9ubHkgd2hlbiB0aGUgYWRkb24gaXMgcHJlc2VudCBhbmQg" + + "ZW5hYmxlZDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgZGVwbG95LHN2YyAtbiBudmNmIC1sIGFwcC5r" + + "dWJlcm5ldGVzLmlvL25hbWU9dmFuaXR5LWdhdGV3YXkKa3ViZWN0bCBnZXQgaHR0cHJvdXRlIC1B" + + "IHwgZ3JlcCAtaSB2YW5pdHkKY3VybCAtSCAiSG9zdDogdmFuaXR5Ljxkb21haW4+IiAiaHR0cDov" + + "LzxnYXRld2F5LWFkZHJlc3M+L2hlYWx0aCIKYGBgCgpEbyBub3QgZW5hYmxlIFZhbml0eSBHYXRl" + + "d2F5IGZvciBzdGFuZGFyZCBBUEksIEFQSSBLZXlzLCBpbnZvY2F0aW9uLCBMTE0KaW52b2NhdGlv" + + "biwgb3IgZ1JQQyB0cmFmZmljLiBUaG9zZSByb3V0ZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBiYXNl" + + "IGdhdGV3YXkKcm91dGVzLgoKIyMjIDcuIEVuYWJsZSBOVkNGIFVJIChvcHRpb25hbCkKCk5WQ0Yg" + + "VUkgaXMgYW4gb3B0aW9uYWwsIGN1c3RvbWVyLWZhY2luZyBhZG1pbi1wYW5lbCBVSS4gSXQgaXMg" + + "ZGlzYWJsZWQgYnkKZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMg" + + "dGhhdCBpbmNsdWRlIHRoZSBOVkNGIFVJIGFkZG9uLiBJZgp5b3VyIGV4dHJhY3RlZCBzdGFjayBw" + + "YWNrYWdlIGRvZXMgbm90IGNvbnRhaW4gYSBgbnZjZi11aWAgcmVsZWFzZSBhbmQgYG52Y2ZVaWAK" + + "cm91dGUgdmFsdWVzLCBza2lwIHRoaXMgc2VjdGlvbi4gVGhlIE5WQ0YgVUkgYWRtaW4gcGFuZWwg" + + "aXMgY3VycmVudGx5CnVuYXV0aGVudGljYXRlZDsgZG8gbm90IGV4cG9zZSBpdCB0byB0aGUgcHVi" + + "bGljIGludGVybmV0LgoKRm9yIGVuYWJsZW1lbnQsIG5hbWVzcGFjZSBhbmQgcHVsbCBzZWNyZXQg" + + "c2V0dXAsIGFwcGx5LCBhbmQgdmVyaWZpY2F0aW9uIHN0ZXBzLApzZWUgW05WQ0YgVUkgQWRkb25d" + + "KHJlZmVyZW5jZXMvbnZjZi11aS1hZGRvbi5tZCkuCgojIyMgOC4gSW5zdGFsbCB0aGUgc2VwYXJh" + + "dGUgY29tcHV0ZS1wbGFuZSBzdGFjawoKVGhlIGNvbnRyb2wtcGxhbmUgc3RhY2sgZG9lcyBub3Qg" + + "aW5zdGFsbCBjb21wdXRlLXBsYW5lIGNvbXBvbmVudHMuIEFmdGVyIGl0IGlzIGhlYWx0aHksIGNo" + + "b29zZSBleGFjdGx5IG9uZSBjb21wdXRlLXBsYW5lIGhhbmRvZmY6CgotIEhlbG1maWxlIHZhbHVl" + + "cyBmbG93OiBhdXRob3Igc2VwYXJhdGUgZW52aXJvbm1lbnQgZmlsZXMsIHRoZW4gcmVnaXN0ZXIg" + + "YW5kCiAgaW5zdGFsbCB3aXRoIHRoZSBjb21wdXRlLXBsYW5lIE1ha2VmaWxlLgotIENMSSBwcm9m" + + "aWxlIGZsb3c6IHVzZSB0aGUgcHJvZmlsZSBnZW5lcmF0ZWQgYnkgdGhlIENMSSBjb250cm9sLXBs" + + "YW5lIGluc3RhbGwsCiAgdGhlbiBydW4gdGhlIGNvbXBsZXRlIENMSSByZWdpc3RlciBhbmQgaW5z" + + "dGFsbCBjb21tYW5kcy4KCkRvIG5vdCBtaXggdGhlc2UgaGFuZG9mZnMuIEZvbGxvdyBbU3BsaXQg" + + "Q29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0" + + "YWxsYXRpb24ubWQpCmZvciBjb21tYW5kcywgRUtTIHJvdXRpbmcsIHB1bGwgc2VjcmV0cywgdmVy" + + "aWZpY2F0aW9uLCBhbmQgdGVhcmRvd24gb3JkZXIuCgojIyBDbGVhbiBUZWFyZG93bgoKRGVzdHJv" + + "eSBldmVyeSBjb21wdXRlIHBsYW5lIGJlZm9yZSB0aGUgY29udHJvbCBwbGFuZSwgdXNpbmcgdGhl" + + "IHRlYXJkb3duIGZvcgp0aGUgc2FtZSBoYW5kb2ZmOyBzZWUgW1NwbGl0IENvbXB1dGUtUGxhbmUg" + + "SW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kI3Rl" + + "YXJkb3duKS4KClNjb3BlOiBPbmx5IGRlc3Ryb3kgcmVsZWFzZXMgbWFuYWdlZCBieSB0aGlzIGNv" + + "bnRyb2wtcGxhbmUgaGVsbWZpbGUgc3RhY2suIFRoZSBOVkNGIHJlbGVhc2VzIGFyZTogYG5hdHNg" + + "LCBgb3BlbmJhby1zZXJ2ZXJgLCBgY2Fzc2FuZHJhYCwgYGFwaS1rZXlzYCwgYHNpc2AsIGBhcGlg" + + "LCBgaW52b2NhdGlvbi1zZXJ2aWNlYCwgYGdycGMtcHJveHlgLCBgZXNzLWFwaWAsIGBub3Rhcnkt" + + "c2VydmljZWAsIG9wdGlvbmFsIGB2YW5pdHktZ2F0ZXdheWAsIGBudmNmLXVpYCwgYGFkbWluLWlz" + + "c3Vlci1wcm94eWAsIGFuZCBgaW5ncmVzc2A7IGBjZXJ0LW1hbmFnZXJgIGlzIGluY2x1ZGVkIG9u" + + "bHkgd2hlbiBgY2VydE1hbmFnZXIuZW5hYmxlZDogdHJ1ZWAuIFRoZSBjb250cm9sLXBsYW5lIG5h" + + "bWVzcGFjZSBpbnZlbnRvcnkgYWxzbyBpbmNsdWRlcyBgY2VydC1tYW5hZ2VyYCwgYnV0IGRlZmF1" + + "bHQgbmFtZXNwYWNlIGNsZWFudXAgcHJlc2VydmVzIGl0LiBOYW1lc3BhY2UgcHJlc2VydmF0aW9u" + + "IGRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEV4dGVybmFsIGNlcnQtbWFuYWdl" + + "ciBtdXN0IHVzZSBgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgOyBvdGhlcndpc2UgSGVsbWZp" + + "bGUgdHJlYXRzIHRoZSByZWxlYXNlIGFzIHN0YWNrLW1hbmFnZWQuIERvIG5vdCBkZWxldGUgb3Ro" + + "ZXIgaGVsbSByZWxlYXNlcyBvciBuYW1lc3BhY2VzIG9uIHRoZSBjbHVzdGVyLgoKQmVmb3JlIGNv" + + "bnRyb2wtcGxhbmUgZGVzdHJveSwgaWRlbnRpZnkgd2hldGhlciBjZXJ0LW1hbmFnZXIgaXMgZXh0" + + "ZXJuYWwuIEZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlIGBj" + + "ZXJ0TWFuYWdlci5lbmFibGVkOiBmYWxzZWAgYW5kIGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBh" + + "biBpbnRlbmRlZCBzdGFjay1tYW5hZ2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUgYGNlcnRNYW5h" + + "Z2VyLmVuYWJsZWQ6IHRydWVgLCB2ZXJpZnkgbWF0Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1l" + + "dGFkYXRhIGFuZCBhYm9ydCBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQgZXZpZGVuY2UuIFByZXNl" + + "cnZlIHRoZSBuYW1lc3BhY2UgYnkgZGVmYXVsdDsgb25seSBwbGFuIGl0cyByZW1vdmFsIGFmdGVy" + + "IHZlcmlmeWluZyBuYW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQgZ2V0dGluZyBleHBsaWNpdCBjb25m" + + "aXJtYXRpb24uCgojIyMgU3RhbmRhcmQgdGVhcmRvd24KClJ1biBmcm9tIGluc2lkZSB0aGUgYG52" + + "Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrL2AgZGlyZWN0b3J5OgoKYGBgYmFzaApIRUxNRklMRV9FTlY9" + + "PGVudi1uYW1lPiBoZWxtZmlsZSBkZXN0cm95CmBgYAoKIyMjIERlbGV0ZSBuYW1lc3BhY2VzCgpg" + + "YGBiYXNoCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtl" + + "eXMgZXNzIHNpcyBudmNmLXVpIHZhdWx0LXN5c3RlbTsgZG8KICBrdWJlY3RsIGRlbGV0ZSBuYW1l" + + "c3BhY2UgIiRucyIgLS1pZ25vcmUtbm90LWZvdW5kCmRvbmUKYGBgCgojIyMgVmVyaWZ5IGNsZWFu" + + "CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IG5zIHwgZ3JlcCAtRSAnKGNhc3NhbmRyYXxuYXRzfHZhdWx0" + + "fG52Y2Z8YXBpLWtleXN8ZXNzfHNpcyknCiMgU2hvdWxkIHJldHVybiBlbXB0eQpgYGAKCiMjIE92" + + "ZXJyaWRpbmcgSGVsbSBDaGFydCBWYWx1ZXMKCiMjIyBFbnZpcm9ubWVudCBmaWxlIChsaW1pdGVk" + + "KQoKV29ya3Mgb25seSBmb3Iga2V5cyB0aGF0IGBnbG9iYWwueWFtbC5nb3RtcGxgIHByb3BhZ2F0" + + "ZXMgKGUuZy4sIGBjYXNzYW5kcmEucmVwbGljYUNvdW50YCwgYGdsb2JhbC5zdG9yYWdlQ2xhc3Ng" + + "LCBgZ2xvYmFsLmltYWdlYCkuCgojIyMgUmVsZWFzZSB2YWx1ZXMgYmxvY2sgKGFueSBjaGFydCB2" + + "YWx1ZSkKCkVkaXQgdGhlIHJlbGVhc2UgaW4gYGhlbG1maWxlLmQvKi55YW1sLmdvdG1wbGAgYW5k" + + "IGFkZCBhIGB2YWx1ZXM6YCBibG9jay4gSW4gdGhlIGV4YW1wbGVzIGJlbG93LCBgPHByaXZhdGUt" + + "dmFsdWVzPmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0aGUgaGVsbWZp" + + "bGUgc3RhY2sgcm9vdC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNzYW5kcmEKICB2ZXJzaW9uOiAwLjgu" + + "MAogIGNvbmRpdGlvbjogY2Fzc2FuZHJhLmVuYWJsZWQKICBuYW1lc3BhY2U6IGNhc3NhbmRyYS1z" + + "eXN0ZW0KICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2dsb2JhbC55YW1sLmdv" + + "dG1wbAogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52ICJIRUxNRklMRV9F" + + "TlYiIH19LXNlY3JldHMueWFtbAogICAgLSBjYXNzYW5kcmE6CiAgICAgICAgcmVzb3VyY2VzOgog" + + "ICAgICAgICAgbGltaXRzOgogICAgICAgICAgICBjcHU6ICI4IgogICAgICAgICAgICBtZW1vcnk6" + + "IDgxOTJNaQogICAgICAgICAgcmVxdWVzdHM6CiAgICAgICAgICAgIGNwdTogIjIiCiAgICAgICAg" + + "ICAgIG1lbW9yeTogNDA5Nk1pCmBgYAoKWUFNTCBtZXJnZSBnb3RjaGE6IFdoZW4gYSByZWxlYXNl" + + "IHVzZXMgYDw8OiAqZGVwZW5kZW5jeWAgb3IgYGluaGVyaXRgLCBzcGVjaWZ5aW5nIGB2YWx1ZXM6" + + "YCByZXBsYWNlcyB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgbGlzdC4gWW91IG11c3QgcmUtaW5jbHVk" + + "ZSBgZ2xvYmFsLnlhbWwuZ290bXBsYCBhbmQgdGhlIHNlY3JldHMgZmlsZS4KCiMjIyBQcmV2aWV3" + + "IGFuZCBhcHBseSBhIHNpbmdsZSByZWxlYXNlCgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBo" + + "ZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlICAjIFByZXZpZXcKSEVM" + + "TUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgc3luYyAg" + + "ICAgICMgQXBwbHkKYGBgCgojIyBJbWFnZSBQdWxsIFNlY3JldHMKClRoZXJlIGFyZSB0aHJlZSBk" + + "aXN0aW5jdCBjcmVkZW50aWFsIHR5cGVzLiBEbyBub3QgY29uZmxhdGUgdGhlbSwgYW5kIG1pbmQg" + + "dGhlCmZvcm1hdCBydWxlIGJlbG93ICh0d28gb2YgdGhlbSBmYWlsIGV2ZW4gd2l0aCB0aGUgY29y" + + "cmVjdCBrZXkgaWYgdGhlIGZvcm1hdCBpcyB3cm9uZyk6Cgp8IHwgQ29udHJvbCBQbGFuZSBQdWxs" + + "IFNlY3JldHMgfCBBUEkgQm9vdHN0cmFwIFJlZ2lzdHJ5IENyZWRzIHwgU2lkZWNhciBJbWFnZS1Q" + + "dWxsIFNlY3JldCB8CnwtLS18LS0tfC0tLXwtLS18CnwgUHVycG9zZSB8IEs4cyBwdWxscyBOVkNG" + + "IHNlcnZpY2UgaW1hZ2VzIHwgbnZjZi1hcGkgdmFsaWRhdGVzIHRoZSB1c2VyIGZ1bmN0aW9uIGlt" + + "YWdlIGF0IGBmdW5jdGlvbiBjcmVhdGVgIHwgbnZjZi1hcGkgcHVsbHMgdGhlIHBsYXRmb3JtIHNp" + + "ZGVjYXJzIGluamVjdGVkIGludG8gZXZlcnkgd29ya2VyIHBvZCB8CnwgV2hlcmUgfCBLOHMgYGRv" + + "Y2tlci1yZWdpc3RyeWAgU2VjcmV0cyArIEt5dmVybm8gQ2x1c3RlclBvbGljeSB8IGA8cHJpdmF0" + + "ZS12YWx1ZXM+LzxlbnY+LXNlY3JldHMueWFtbGAgKGFjY291bnQtYm9vdHN0cmFwKSB8IGBOVkNG" + + "X0FQSV9TSURFQ0FSU19JTUFHRV9QVUxMX1NFQ1JFVGAgaW4gYDxlbnY+LXNlY3JldHMueWFtbGAg" + + "LT4gT3BlbkJhbyBgc2VydmljZXMvbnZjZi1hcGkva3Yvc2lkZWNhcnMvaW1hZ2UtcHVsbC1zZWNy" + + "ZXRgIChmaWVsZCBgc2VjcmV0YCkgfAp8IEZvcm1hdCB8IHN0YW5kYXJkIGAuZG9ja2VyY29uZmln" + + "anNvbmAgKGt1YmVjdGwgYnVpbGRzIGl0IGZvciB5b3UpIHwgYGJhc2U2NCgiJG9hdXRodG9rZW46" + + "PGtleT4iKWAgfCBgYmFzZTY0KCIkb2F1dGh0b2tlbjo8a2V5PiIpYCB8Cgo+IE5vdGU6IHRoZSBh" + + "Y2NvdW50LWJvb3RzdHJhcCBjcmVkIGFuZCB0aGUgc2lkZWNhciBzZWNyZXQgYXJlIE5PVCBhCj4g" + + "ZG9ja2VyY29uZmlnanNvbi4gVGhlIHNlY3JldHMgdGVtcGxhdGUgc2hpcHMgdGhlIHBsYWNlaG9s" + + "ZGVyCj4gYFJFUExBQ0VfV0lUSF9CQVNFNjRfRE9DS0VSX0NSRURFTlRJQUxgLCB3aGljaCByZWFk" + + "cyBhcyAiYmFzZTY0IG9mIGEgZG9ja2VyY29uZmlnanNvbi4iCj4gSXQgaXNuJ3QuIEJvdGggdmFs" + + "dWVzIGFyZSBjb25zdW1lZCBhcyBhIHJhdyBkb2NrZXIgYGF1dGhgIHN0cmluZzogbnZjZi1hcGkg" + + "dGFrZXMgdGhlCj4gdmFsdWUgdmVyYmF0aW0gYW5kIGRyb3BzIGl0IGludG8gdGhlIGBhdXRoYCBm" + + "aWVsZCBvZiB0aGUgZG9ja2VyY29uZmlnIGl0IGJ1aWxkcy4gU28gdGhlCj4gdmFsdWUgbXVzdCBi" + + "ZSBgYmFzZTY0KCIkb2F1dGh0b2tlbjo8a2V5PiIpYCwgZS5nLiBgcHJpbnRmICckb2F1dGh0b2tl" + + "bjolcycgIiRLRVkiIHwgb3BlbnNzbCBiYXNlNjQgLUFgLAo+IG5vdCBgYmFzZTY0KDxkb2NrZXJj" + + "b25maWdqc29uPilgLgo+ICAtIFdyb25nIGFjY291bnQtYm9vdHN0cmFwIHZhbHVlOiBgZnVuY3Rp" + + "b24gY3JlYXRlYCByZXR1cm5zCj4gICAgYDQwMCAibXVzdCBiZSBiYXNlNjQgZW5jb2RlZCB1c2Vy" + + "bmFtZTpwYXNzd29yZCBmb3JtYXQiYC4KPiAgLSBXcm9uZyBzaWRlY2FyIHZhbHVlOiBldmVyeSB3" + + "b3JrZXIncyBzaWRlY2FyIHB1bGwgZ2V0cyBhIG1hbGZvcm1lZCBjcmVkZW50aWFsIGFuZAo+ICAg" + + "IGA0MDNgcywgcmVnYXJkbGVzcyBvZiB3aGljaCBrZXkgaXMgaW5zaWRlLiBUaGUgc3ltcHRvbSBs" + + "b29rcyBsaWtlIGEgYmFkIG9yIHdyb25nLW9yZwo+ICAgIGtleSwgYnV0IHRoZSBrZXkgaXMgZmlu" + + "ZSBhbmQgdGhlIGVuY29kaW5nIGlzIHRoZSBidWcuIFRvIHJlcGFpciBhbiBhbHJlYWR5LWluc3Rh" + + "bGxlZAo+ICAgIHN0YWNrIHdpdGhvdXQgYSBmdWxsIHJlLXN5bmM6Cj4gICAgYGBgYmFzaAo+ICAg" + + "IEFVVEg9JChwcmludGYgJyRvYXV0aHRva2VuOiVzJyAiJEtFWSIgfCBvcGVuc3NsIGJhc2U2NCAt" + + "QSkKPiAgICBiYW8ga3YgcHV0IHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1" + + "bGwtc2VjcmV0IHNlY3JldD0iJEFVVEgiCj4gICAgIyBpZiBOVklESUEgQ2xvdWQgVGFza3MgaXMg" + + "ZW5hYmxlZCwgcmVwZWF0IGZvciBzZXJ2aWNlcy9udmN0LWFwaS9rdi9zaWRlY2Fycy9pbWFnZS1w" + + "dWxsLXNlY3JldAo+ICAgIGt1YmVjdGwgcm9sbG91dCByZXN0YXJ0IC1uIG52Y2YgZGVwbG95L252" + + "Y2YtYXBpICAgIyBwaWNrcyB1cCB0aGUgbmV3IHNpZGVjYXIgY3JlZAo+ICAgIGBgYAoKPiBOb3Rl" + + "IChtdWx0aS1vcmcpOiB3aGVuIHB1bGxpbmcgZnJvbSBOR0MgKG5vdCBhIG1pcnJvciksIHRoZSB1" + + "c2VyIGZ1bmN0aW9uIGltYWdlIGFuZAo+IHRoZSBwbGF0Zm9ybSBzaWRlY2FycyBvZnRlbiBsaXZl" + + "IGluIGRpZmZlcmVudCBudmNyLmlvIG9yZ3MsIGVhY2ggbmVlZGluZyBhIGRpZmZlcmVudAo+IGtl" + + "eSwgc28gdGhlIGFjY291bnQtYm9vdHN0cmFwIGNyZWQgKGZ1bmN0aW9uIGltYWdlKSBhbmQgdGhl" + + "IHNpZGVjYXIgc2VjcmV0IChzaWRlY2FycykKPiBhcmUgZnJlcXVlbnRseSB0d28gZGlmZmVyZW50" + + "IGtleXMuIE1pcnJvcmluZyBldmVyeXRoaW5nIGludG8gYSBzaW5nbGUgcmVnaXN0cnkgdGhlCj4g" + + "Y2x1c3RlciBhdXRoZW50aWNhdGVzIHRvIGF1dG9tYXRpY2FsbHkgY29sbGFwc2VzIHRoaXMgdG8g" + + "b25lIGNyZWRlbnRpYWwgcGF0aC4KCiMjIyBDb25maWd1cmluZyB3aXRoIEt5dmVybm8gKHJlY29t" + + "bWVuZGVkKQoKVXNlIGEgS3l2ZXJubyBtdXRhdGluZyBhZG1pc3Npb24gcG9saWN5IHRvIGF1dG9t" + + "YXRpY2FsbHkgaW5qZWN0IGBpbWFnZVB1bGxTZWNyZXRzYCBpbnRvIGFsbCBwb2RzIGluIE5WQ0Yg" + + "bmFtZXNwYWNlcy4gVGhpcyB3b3JrcyB1bmlmb3JtbHkgZm9yIGFsbCBjaGFydHMgLS0gbm8gcGVy" + + "LWNoYXJ0IGNvbmZpZ3VyYXRpb24gb3IgaGVsbWZpbGUgbW9kaWZpY2F0aW9ucyBuZWVkZWQuCgpg" + + "YGBiYXNoCiMgMS4gSW5zdGFsbCBLeXZlcm5vCmhlbG0gcmVwbyBhZGQga3l2ZXJubyBodHRwczov" + + "L2t5dmVybm8uZ2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUKaGVsbSBpbnN0YWxs" + + "IGt5dmVybm8ga3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUtbmFtZXNwYWNlCgoj" + + "IDIuIENyZWF0ZSBwdWxsIHNlY3JldCBpbiBlYWNoIG5hbWVzcGFjZQpleHBvcnQgTkdDX0FQSV9L" + + "RVk9Ijx5b3VyLWtleT4iCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52" + + "Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVj" + + "dGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tl" + + "ci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwK" + + "ICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIk" + + "bnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpk" + + "b25lCgojIDMuIEFwcGx5IHRoZSBLeXZlcm5vIENsdXN0ZXJQb2xpY3kKa3ViZWN0bCBhcHBseSAt" + + "ZiBreXZlcm5vLWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAKClRoZSBwb2xpY3kgbXV0" + + "YXRlcyBldmVyeSBwb2QgYXQgYWRtaXNzaW9uIHRpbWUsIGFkZGluZyBgaW1hZ2VQdWxsU2VjcmV0" + + "czogW3tuYW1lOiBudmNyLWNyZWRzfV1gLiBWZXJpZnkgd2l0aDoKCmBgYGJhc2gKa3ViZWN0bCBn" + + "ZXQgcG9kIC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gLW8ganNvbnBhdGg9J3suc3BlYy5pbWFn" + + "ZVB1bGxTZWNyZXRzfScKIyBTaG91bGQgc2hvdzogW3sibmFtZSI6Im52Y3ItY3JlZHMifV0KYGBg" + + "CgpOb3QgbmVlZGVkIGlmIHVzaW5nIGEgQ1NQIGJ1aWx0LWluIGNyZWRlbnRpYWwgaGVscGVyIChl" + + "LmcuLCBFQ1Igd2l0aCBJQU0gbm9kZSByb2xlcykuCgpGb3IgdGhlIEt5dmVybm8gcG9saWN5IFlB" + + "TUwgYW5kIHB1bGwgc2VjcmV0IGNyZWF0aW9uIHNjcmlwdCwgc2VlIFtyZWZlcmVuY2VzL3B1bGwt" + + "c2VjcmV0cy5tZF0ocmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWQpLgoKIyMgRGVidWdnaW5nCgoj" + + "IyMgUXVpY2sgc3RhdHVzIGNoZWNrCgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLW8gd2lk" + + "ZSAgICAgICAgICAgICAgICAgICAgICAgICMgQWxsIHBvZHMKaGVsbSBsaXN0IC1BICAgICAgICAg" + + "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWxsIGhlbG0gcmVsZWFzZXMKa3ViZWN0" + + "bCBnZXQgZXZlbnRzIC1uIDxucz4gLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcgICMgUmVjZW50" + + "IGV2ZW50cwpgYGAKCiMjIyBDb21tb24gZmFpbHVyZSBwYXR0ZXJucwoKfCBTeW1wdG9tIHwgQ2F1" + + "c2UgfCBGaXggfAp8LS0tLS0tLS0tfC0tLS0tLS18LS0tLS18CnwgYEltYWdlUHVsbEJhY2tPZmZg" + + "ICsgYDQwMSBVbmF1dGhvcml6ZWRgIHwgTWlzc2luZyBvciB3cm9uZyBwdWxsIHNlY3JldCB8IENo" + + "ZWNrIHNlY3JldCBleGlzdHMsIGNoZWNrIFNBIGhhcyBpbWFnZVB1bGxTZWNyZXRzIHwKfCBgSW5p" + + "dDowLzFgIHN0dWNrIG9uIHNlcnZpY2UgcG9kcyB8IFZhdWx0LWFnZW50IHdhaXRpbmcgZm9yIE9w" + + "ZW5CYW8gfCBDaGVjayBPcGVuQmFvIHBvZHMgKyBtaWdyYXRpb24gam9iIHN0YXR1cyB8CnwgYElu" + + "aXQ6MC8xYCArIGB2YXVsdC1hZ2VudC1pbml0YCBzaG93cyBgYXV0aC9qd3QvbG9naW5gIC0+IGA0" + + "MDAgLi4uIG5vIGtub3duIGtleSBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkIHRoZSB0b2tlbiBzaWdu" + + "YXR1cmVgIHwgT3BlbkJhbyBKV1QgYXV0aCBjb25maWd1cmVkIHdpdGggYSBzdGF0aWMgcHVia2V5" + + "IGluc3RlYWQgb2YgdGhlIGNsdXN0ZXIncyBsaXZlIEpXS1MgLS0gdGhlIGJhc2UgZGVmYXVsdCBg" + + "b3BlbmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkOiBmYWxzZWAuIENvbW1v" + + "biBvbiBBS1MgLyBhbnkgT0lEQy1pc3N1ZXIgY2x1c3RlciB8IFNldCBgb3BlbmJhby5taWdyYXRp" + + "b25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkOiB0cnVlYCwgZGVsZXRlIGpvYiBgb3BlbmJhby1z" + + "ZXJ2ZXItbWlncmF0aW9uc2AsIHJlLXN5bmMgYG9wZW5iYW8tc2VydmVyYC4gU2VlIFtyZWZlcmVu" + + "Y2VzL2RlYnVnZ2luZy5tZF0ocmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQpICJJbml0OjAvMSBTdHVj" + + "ayIgZml4ICM0LiB8CnwgYE9PTUtpbGxlZGAgb24gQ2Fzc2FuZHJhIHwgRGVmYXVsdCByZXNvdXJj" + + "ZXMgdG9vIHNtYWxsIHwgT3ZlcnJpZGUgYGNhc3NhbmRyYS5yZXNvdXJjZXNgIHZpYSB2YWx1ZXMg" + + "YmxvY2sgfAp8IERCLWJhY2tlZCBzZXJ2aWNlcyBjcmFzaC1sb29wIGBCYWQgY3JlZGVudGlhbHNg" + + "IGNvbm5lY3RpbmcgdG8gQ2Fzc2FuZHJhIHwgU2VjcmV0cyBmaWxlIHNldCBvbmx5IGBERUZBVUxU" + + "X0NBU1NBTkRSQV9QQVNTV09SRGA7IGBjYXNzYW5kcmEuc2VydmljZVJvbGVQYXNzd29yZGAgc3Rp" + + "bGwgZGVmYXVsdHMgdG8gYGNoQG5nM20zYCB8IFNldCBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFz" + + "c3dvcmRgIGluIHRoZSBzZWNyZXRzIGZpbGUgZXF1YWwgdG8gYERFRkFVTFRfQ0FTU0FORFJBX1BB" + + "U1NXT1JEYCwgdGhlbiByZS1zeW5jIGNhc3NhbmRyYSArIHRoZSBEQi1iYWNrZWQgc2VydmljZXMg" + + "fAp8IGBQZW5kaW5nYCBwb2RzIHwgTm9kZSBzZWxlY3RvciBtaXNtYXRjaCBvciBubyBzdG9yYWdl" + + "IGNsYXNzIHwgYGt1YmVjdGwgZGVzY3JpYmUgcG9kYCwgY2hlY2sgbGFiZWxzIGFuZCBzdG9yYWdl" + + "IHwKfCBIZWxtIHJlbGVhc2UgaW4gYGZhaWxlZGAgc3RhdGUgfCBGaXJzdCBpbnN0YWxsIGZhaWxl" + + "ZCBwYXJ0d2F5IHwgYGhlbG1maWxlIGRlc3Ryb3lgIHRoZSByZWxlYXNlLCB0aGVuIGBzeW5jYCBh" + + "Z2FpbiB8CnwgQWNjb3VudCBib290c3RyYXAgdGltZW91dCB8IFdyb25nIGJhc2U2NCBjcmVkZW50" + + "aWFscyBpbiBzZWNyZXRzIGZpbGUgfCBDaGVjayBga3ViZWN0bCBsb2dzIGpvYi9udmNmLWFwaS1h" + + "Y2NvdW50LWJvb3RzdHJhcCAtbiBudmNmYCB8CnwgZnVuY3Rpb24gLyBhY2NvdW50IGNhbGxzIHJl" + + "dHVybiBgNDA0IFVua25vd24gY2xpZW50X2lkYCB8IFRoZSBhY2NvdW50LWJvb3RzdHJhcCBwb3N0" + + "LWluc3RhbGwgaG9vayBuZXZlciByYW46IHRoZSBgYXBpYCByZWxlYXNlIGluc3RhbGwgZmFpbGVk" + + "LCBvciB3YXMgcmVwYWlyZWQgd2l0aCBsaXZlIHBhdGNoZXMgaW5zdGVhZCBvZiBhIGNsZWFuIHJl" + + "LXN5bmMsIHNvIHRoZSBob29rIChhbmQgdGhlIGFjY291bnQpIHdhcyBza2lwcGVkIHwgVmVyaWZ5" + + "IGFuZCByZS1ydW4gdGhlIGhvb2s7IHNlZSBbVmVyaWZ5IHRoZSBhY2NvdW50IGJvb3RzdHJhcCBy" + + "YW5dKCN2ZXJpZnktdGhlLWFjY291bnQtYm9vdHN0cmFwLXJhbikgfAp8IFNlcnZpY2VzIGZhaWwg" + + "dG8gcmVhZCB2YXVsdCBzZWNyZXRzOyBgc2VjcmV0cy5qc29uYCBub3QgZm91bmQgfCBWYXVsdCBw" + + "YXRoIGhhcmRjb2RlZCB0byBgL2hvbWUvYXBwL3ZhdWx0L2AgaW4gYF9oZWxwZXJzLnRwbGA7IHRo" + + "ZSBydW50aW1lIHJlc29sdmVzIHRoZSBtb3VudGVkIHBhdGggcmVsYXRpdmUgdG8gdGhlIHdvcmtp" + + "bmcgZGlyZWN0b3J5IGFuZCBkcm9wcyB0aGUgbGVhZGluZyBgL2AgfCBPdmVycmlkZSBgcG9kQW5u" + + "b3RhdGlvbnNgIGFuZCBzZXQgYEpBVkFfVE9PTF9PUFRJT05TOiAiLUR1c2VyLmRpcj0vImAgaW4g" + + "cmVsZWFzZSB2YWx1ZXMgfAp8IE5BVFMgY29ubmVjdGlvbiBmYWlscyBhdCBzdGFydHVwOyBwbGFj" + + "ZW1lbnQgdGFnIG1pc21hdGNoIHwgTkFUUyBzZXJ2ZXIgdGFncyBoYXJkY29kZWQgdG8gYGRjOm5j" + + "cGA7IGFwcCBkZXJpdmVzIHRhZyBmcm9tIGBBV1NfUkVHSU9OYCAoZS5nLiwgYHVzLWdvdi13ZXN0" + + "LTFgKSB8IFNldCBgQVdTX1JFR0lPTj1uY3BgIGFuZCBgTlZDRl9BV1NfUkVHSU9OPW5jcGAgaW4g" + + "ZW52IGNvbmZpZyB8CgojIyMgVmVyaWZ5IHRoZSBhY2NvdW50IGJvb3RzdHJhcCByYW4KClRoZSBk" + + "ZWZhdWx0IGFjY291bnQgaXMgY3JlYXRlZCBieSBhICoqYHBvc3QtaW5zdGFsbGAgaG9vayBvbiB0" + + "aGUgYGFwaWAgcmVsZWFzZSoqCihgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwYCBpbiBg" + + "bnZjZmApLiBCZWNhdXNlIGl0IGlzIGEgcG9zdC1pbnN0YWxsIGhvb2ssIGl0IG9ubHkKZmlyZXMg" + + "b24gYSBzdWNjZXNzZnVsIGBhcGlgIGluc3RhbGwuIElmIHRoYXQgaW5zdGFsbCBmYWlsZWQgYW5k" + + "IHlvdSByZXBhaXJlZCBpdCB3aXRoIGxpdmUKcGF0Y2hlcyAocmF0aGVyIHRoYW4gYSBjbGVhbiBy" + + "ZS1zeW5jKSwgdGhlIGhvb2sgbmV2ZXIgcnVucywgbm8gYWNjb3VudCBpcyBjcmVhdGVkLCBhbmQK" + + "ZXZlcnkgc3Vic2VxdWVudCBmdW5jdGlvbi9hY2NvdW50IGNhbGwgcmV0dXJucyBhIGNyeXB0aWMg" + + "YDQwNCBVbmtub3duIGNsaWVudF9pZGAgd2l0aApub3RoaW5nIG9idmlvdXNseSB3cm9uZyBpbiB0" + + "aGUgcnVubmluZyBwb2RzLgoKVmVyaWZ5IGl0IHJhbiBhZnRlciB0aGUgZmlyc3Qgc3luYzoKCmBg" + + "YGJhc2gKa3ViZWN0bCBnZXQgam9iIC1uIG52Y2YgbnZjZi1hcGktYWNjb3VudC1ib290c3RyYXAg" + + "XAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5zdWNjZWVkZWR9JyAgICMgZXhwZWN0IDEKYGBgCgpJ" + + "ZiB0aGUgam9iIGlzIGFic2VudCBvciBgMGAsIHJlLXJ1biBpdCBieSByZS1zeW5jaW5nIHRoZSBg" + + "YXBpYCByZWxlYXNlIHNvIHRoZSBob29rIGZpcmVzCmFnYWluIChkZWxldGUgdGhlIHByaW9yIGpv" + + "YiBmaXJzdCBpZiBpdCBsaW5nZXJzIGluIGEgY29tcGxldGVkL2ZhaWxlZCBzdGF0ZSBhbmQgYmxv" + + "Y2tzIHRoZQpob29rKToKCmBgYGJhc2gKa3ViZWN0bCBkZWxldGUgam9iIC1uIG52Y2YgbnZjZi1h" + + "cGktYWNjb3VudC1ib290c3RyYXAgLS1pZ25vcmUtbm90LWZvdW5kCkhFTE1GSUxFX0VOVj08ZW52" + + "PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9YXBpIHN5bmMKa3ViZWN0bCBsb2dzIC1uIG52Y2Yg" + + "am9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwICAgIyBjb25maXJtIHRoZSBhY2NvdW50IHdh" + + "cyBjcmVhdGVkCmBgYAoKIyMgQWRkaXRpb25hbCBSZXNvdXJjZXMKCi0gSW5zdGFsbGF0aW9uOiBb" + + "ZXhhbXBsZXMubWRdKGV4YW1wbGVzLm1kKSwgdGhlIFtDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXSho" + + "dHRwczovL2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFt" + + "cGxlKSwgYW5kIFtzcGxpdCBjb21wdXRlLXBsYW5lIHdvcmtmbG93c10ocmVmZXJlbmNlcy9jb21w" + + "dXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkKLSBPcGVyYXRpb25zOiBbSGVsbWZpbGUgc3RydWN0" + + "dXJlXShyZWZlcmVuY2VzL2hlbG1maWxlLXN0cnVjdHVyZS5tZCksIFtwdWxsIHNlY3JldHNdKHJl" + + "ZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKSwgYW5kIFtkZWJ1Z2dpbmddKHJlZmVyZW5jZXMvZGVi" + + "dWdnaW5nLm1kKQoKQWZ0ZXIgZGVwbG95bWVudCwgdXNlIHRoZSBgbnZjZi1zZWxmLW1hbmFnZWQt" + + "Y2xpYCBza2lsbCB0byBjcmVhdGUgZnVuY3Rpb25zLCBjcmVhdGUgdGFza3MsIG1hbmFnZSBBUEkg" + + "a2V5cywgYW5kIGludm9rZSBlbmRwb2ludHMuClBLBwgv2rl1QmIAAEJiAABQSwMEFAAIAAAAAAAh" + + "AAAAAAAAAAAAAAAAADQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9ldmFs" + + "cy9ldmFscy5qc29uVVQFAAEAps4SWwogIHsKICAgICJpZCI6ICJHMS12YWxpZGF0ZS10b29sLXZl" + + "cnNpb25zIiwKICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIHRoZSBOVkNGIHNlbGYtbWFuYWdlZCBz" + + "dGFjayBvbiBteSBBV1MgRUtTIGNsdXN0ZXIiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Yt" + + "c2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2Vu" + + "dCdzIGZpcnN0IG9wZXJhdGlvbmFsIHN0ZXAgYWZ0ZXIgcmVhZGluZyB0aGUgc2tpbGwgd2FzIHRv" + + "IHZhbGlkYXRlIGFsbCByZXF1aXJlZCB0b29sIHZlcnNpb25zOiBoZWxtZmlsZSAobXVzdCBiZSAx" + + "LjEueCwgbm90IDEuMi4wKSwgaGVsbSAoPj0gMy4xMiksIGhlbG0tZGlmZiBwbHVnaW4gKD49IDMu" + + "MTEpLCBhbmQga3ViZWN0bCAoY2xpZW50IHdpdGhpbiAxIG1pbm9yIG9mIGNsdXN0ZXIpLiBJdCBk" + + "aWQgbm90IHByb2NlZWQgdG8gaGVsbWZpbGUgc3luYyB1bnRpbCBhbGwgdmVyc2lvbnMgd2VyZSB2" + + "YWxpZGF0ZWQuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCBy" + + "ZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRh" + + "a2luZyBhbnkgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG1maWxlIC0tdmVyc2lv" + + "bicgYW5kIHZlcmlmaWVkIGl0IGlzIDEuMS54IChub3QgMS4yLjAsIHdoaWNoIHJlbW92ZWQgc2Vx" + + "dWVudGlhbCBtb2RlKSIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHZlcnNpb24nIGFuZCB2" + + "ZXJpZmllZCBpdCBpcyA+PSAzLjEyIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG0gcGx1Z2lu" + + "IGxpc3QnIGFuZCB2ZXJpZmllZCBoZWxtLWRpZmYgPj0gMy4xMSBpcyBpbnN0YWxsZWQiLAogICAg" + + "ICAiVGhlIGFnZW50IHJhbiAna3ViZWN0bCB2ZXJzaW9uJyB0byBjaGVjayBjbGllbnQvc2VydmVy" + + "IHZlcnNpb24gY29tcGF0aWJpbGl0eSIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm9jZWVk" + + "IHRvIGhlbG1maWxlIHN5bmMgdW50aWwgYWxsIHZlcnNpb24gY2hlY2tzIHBhc3NlZCIKICAgIF0K" + + "ICB9LAogIHsKICAgICJpZCI6ICJHMi10ZW1wbGF0ZS1iZWZvcmUtc3luYyIsCiAgICAicXVlc3Rp" + + "b24iOiAiUXVpY2ssIGp1c3QgcnVuIGhlbG1maWxlIHN5bmMgZm9yIG15IE5WQ0Ygc3RhY2ssIHNr" + + "aXAgYWxsIHRoZSBjaGVja3MiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5h" + + "Z2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIkRlc3BpdGUgdGhlIHVzZXIg" + + "YXNraW5nIHRvIHNraXAgY2hlY2tzLCB0aGUgYWdlbnQgc3RpbGwgcmFuIGhlbG1maWxlIHRlbXBs" + + "YXRlIHRvIHByZXZpZXcgcmVuZGVyZWQgbWFuaWZlc3RzIGJlZm9yZSBydW5uaW5nIGhlbG1maWxl" + + "IHN5bmMuIEl0IGV4cGxhaW5lZCB3aHkgdGhlIHByZXZpZXcgc3RlcCBpcyBpbXBvcnRhbnQgYW5k" + + "IGRpZCBub3QgYmxpbmRseSBleGVjdXRlIHN5bmMuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6" + + "IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRp" + + "b24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IHJhbiAn" + + "aGVsbWZpbGUgdGVtcGxhdGUnIG9yICdoZWxtZmlsZSAtLXNlbGVjdG9yIC4uLiB0ZW1wbGF0ZScg" + + "dG8gcHJldmlldyBtYW5pZmVzdHMgYmVmb3JlIHN5bmMiLAogICAgICAiVGhlIGFnZW50IGRpZCBu" + + "b3QgYmxpbmRseSBydW4gJ2hlbG1maWxlIHN5bmMnIHdpdGhvdXQgYSB0ZW1wbGF0ZSBwcmV2aWV3" + + "IHN0ZXAiLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB3aHkgdGhlIHByZXZpZXcgc3RlcCBp" + + "cyBpbXBvcnRhbnQgZXZlbiB3aGVuIGFza2VkIHRvIHNraXAgaXQiCiAgICBdCiAgfSwKICB7CiAg" + + "ICAiaWQiOiAiRzUtZHJ5cnVuLWJlZm9yZS1jbGVhbnVwIiwKICAgICJxdWVzdGlvbiI6ICJOVkNG" + + "IG5hbWVzcGFjZXMgYXJlIHN0dWNrIGluIFRlcm1pbmF0aW5nIHN0YXRlLiBDbGVhbiB0aGVtIHVw" + + "LiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9u" + + "IiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGlkZW50aWZpZWQgdGhlIHN0dWNrIG5h" + + "bWVzcGFjZXMgd2VyZSBjYXVzZWQgYnkgZmluYWxpemVycyBvbiBOVkNGQmFja2VuZCBjdXN0b20g" + + "cmVzb3VyY2VzLiBJdCByZW1vdmVkIGZpbmFsaXplcnMgZnJvbSBOVkNGQmFja2VuZCByZXNvdXJj" + + "ZXMgZmlyc3QsIHRoZW4gY2xlYXJlZCBuYW1lc3BhY2UgZmluYWxpemVycyB0byBmb3JjZS1kZWxl" + + "dGUgdGhlIHN0dWNrIG5hbWVzcGFjZXMuIEl0IG9ubHkgdGFyZ2V0ZWQgTlZDRi1tYW5hZ2VkIG5h" + + "bWVzcGFjZXMgKG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkgYW5kIGRpZCBub3QgdG91Y2gg" + + "b3RoZXIgY2x1c3RlciByZXNvdXJjZXMuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAg" + + "ICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJ" + + "TEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGNvbmZpcm1lZCBh" + + "bmQgdXNlZCB0aGUgY29tcHV0ZS1wbGFuZSBjb250ZXh0IGZvciBhbGwgY2xlYW51cCBjb21tYW5k" + + "cyIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCBrdWJlY3RsIHRvIHBhdGNoIE5WQ0ZCYWNrZW5kIHJl" + + "c291cmNlcyB0byByZW1vdmUgdGhlaXIgZmluYWxpemVycyIsCiAgICAgICJUaGUgYWdlbnQgdXNl" + + "ZCBrdWJlY3RsIHJlcGxhY2UgLS1yYXcgdG8gY2xlYXIgbmFtZXNwYWNlIGZpbmFsaXplcnMgb24g" + + "c3R1Y2sgbmFtZXNwYWNlcyIsCiAgICAgICJUaGUgYWdlbnQgb25seSB0YXJnZXRlZCBOVkNGLW1h" + + "bmFnZWQgbmFtZXNwYWNlcyAobnZjYS1vcGVyYXRvciwgbnZjZi1iYWNrZW5kKSBhbmQgZGlkIG5v" + + "dCB0b3VjaCBvdGhlciBjbHVzdGVyIHJlc291cmNlcyIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5v" + + "dCBqdW1wIGRpcmVjdGx5IHRvIG5hbWVzcGFjZSBkZWxldGlvbiB3aXRob3V0IGZpcnN0IHJlbW92" + + "aW5nIGZpbmFsaXplcnMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzYtaGVsbWZpbGUtc3Bs" + + "aXQtd29ya2Zsb3ciLAogICAgInF1ZXN0aW9uIjogIkluc3RhbGwgYW4gTlZDRiBjb250cm9sIHBs" + + "YW5lIGFuZCBhIHNlcGFyYXRlIEVLUyBjb21wdXRlIHBsYW5lIHVzaW5nIHRoZSBIZWxtZmlsZSBz" + + "dGFja3MuIFRoZSBjb21wdXRlIGNsdXN0ZXIga3ViZWNvbmZpZyBpcyBjb21wdXRlLnlhbWwuIiwK" + + "ICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAog" + + "ICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQga2VwdCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZs" + + "b3cgaW5kZXBlbmRlbnQgZnJvbSB0aGUgQ0xJIHByb2ZpbGUgZmxvdy4gSXQgYXV0aG9yZWQgc2Vw" + + "YXJhdGUgY29udHJvbC1wbGFuZSBhbmQgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCBmaWxlcyBw" + + "bHVzIGEgYmFyZS1HYXRld2F5IENMSSBjb25maWcgd2l0aCBVUkwgYW5kIHNjaGVtZS1sZXNzIEhv" + + "c3QgZmllbGRzLCBpbnN0YWxsZWQgdGhlIGNvbnRyb2wgcGxhbmUsIHJhbiB0aGUgY29tcHV0ZS1w" + + "bGFuZSBNYWtlZmlsZSByZWdpc3Rlci1jbHVzdGVyIHRhcmdldCB3aXRoIElDTVNfVVJMIGFuZCB0" + + "aGUgY29tcHV0ZSBrdWJlY29uZmlnLCB0aGVuIHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBpbnN0YWxs" + + "IHRhcmdldCB3aXRoIHRoZSBzYW1lIGVudmlyb25tZW50IGFuZCBrdWJlY29uZmlnLiBJdCByZWxp" + + "ZWQgb24gcmVnaXN0cmF0aW9uIHRvIGRpc2NvdmVyIE9JREMgYW5kIEpXS1MgZnJvbSB0aGUgY29t" + + "cHV0ZSBjb250ZXh0LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdl" + + "bnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9y" + + "ZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBhdXRob3JlZCBzZXBhcmF0ZSBlbnZp" + + "cm9ubWVudHMvPGVudj4ueWFtbCBmaWxlcyB1bmRlciBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdl" + + "ZCBhbmQgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUiLAogICAgICAiVGhlIGFnZW50" + + "IGluc3RhbGxlZCB0aGUgY29udHJvbCBwbGFuZSBiZWZvcmUgcmVnaXN0ZXJpbmcgb3IgaW5zdGFs" + + "bGluZyB0aGUgY29tcHV0ZSBwbGFuZSIsCiAgICAgICJUaGUgYWdlbnQgY29uZmlndXJlZCBiYXNl" + + "X2h0dHBfdXJsLCBpbnZva2VfdXJsLCBiYXNlX2dycGNfdXJsLCBhcGlfa2V5c19zZXJ2aWNlX3Vy" + + "bCwgaWNtc191cmwsIGFwaV9ob3N0LCBhcGlfa2V5c19ob3N0LCBpbnZva2VfaG9zdCwgYW5kIGlj" + + "bXNfaG9zdCBmb3IgdGhlIGJhcmUgR2F0ZXdheSIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnbWFr" + + "ZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSByZWdpc3Rlci1jbHVzdGVyJyB3" + + "aXRoIENMVVNURVJfTkFNRSwgTkNBX0lELCBDTFVTVEVSX1JFR0lPTiwgSUNNU19VUkwsIGFuZCBL" + + "VUJFQ09ORklHX0ZJTEU9Y29tcHV0ZS55YW1sIiwKICAgICAgIlRoZSBhZ2VudCB1c2VkICdtYWtl" + + "IC1DIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGluc3RhbGwnIHdpdGggQ0xVU1RF" + + "Ul9OQU1FLCBIRUxNRklMRV9FTlYsIGFuZCBLVUJFQ09ORklHX0ZJTEU9Y29tcHV0ZS55YW1sIiwK" + + "ICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCBJQ01TX1VSTCBtYXBzIG9ubHkgdG8gLS1pY21z" + + "LXVybCwgY29uZmlnIGljbXNfaG9zdCBzdXBwbGllcyB0aGUgSG9zdCBoZWFkZXIsIHRoZXJlIGlz" + + "IG5vIC0taWNtcy1ob3N0IE1ha2Ugb3IgQ0xJIGZsYWcsIGFuZCByZWdpc3RyYXRpb24gZGlzY292" + + "ZXJzIE9JREMgYW5kIEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0IiwKICAgICAgIlRoZSBh" + + "Z2VudCBkaWQgbm90IHJlcXVpcmUgYSBjb250cm9sLXBsYW5lIHByb2ZpbGUgZm9yIHRoaXMgZmxv" + + "dyBhbmQgZGlkIG5vdCBtaXggaW4gQ0xJIHByb2ZpbGUgY29tbWFuZHMiCiAgICBdCiAgfSwKICB7" + + "CiAgICAiaWQiOiAiRzctYm90aC1kb2NrZXItaGVsbS1hdXRoIiwKICAgICJxdWVzdGlvbiI6ICJB" + + "dXRoZW50aWNhdGUgdG8gTkdDIGZvciBOVkNGIGhlbG1maWxlIGRlcGxveW1lbnQiLAogICAgImV4" + + "cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3Jv" + + "dW5kX3RydXRoIjogIlRoZSBhZ2VudCByYW4gYm90aCBkb2NrZXIgbG9naW4gYW5kIGhlbG0gcmVn" + + "aXN0cnkgbG9naW4gZm9yIG52Y3IuaW8uIEl0IGV4cGxhaW5lZCB0aGF0IGJvdGggYXJlIHJlcXVp" + + "cmVkIGJlY2F1c2UgaGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0byBwdWxsIE9DSSBj" + + "aGFydHMsIHNvIGRvY2tlciBsb2dpbiBhbG9uZSBpcyBpbnN1ZmZpY2llbnQuIiwKICAgICJleHBl" + + "Y3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFu" + + "YWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAi" + + "VGhlIGFnZW50IHJhbiAnZG9ja2VyIGxvZ2luIG52Y3IuaW8nIHdpdGggJG9hdXRodG9rZW4gdXNl" + + "cm5hbWUgYW5kIE5HQ19BUElfS0VZIHBhc3N3b3JkIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hl" + + "bG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbycgd2l0aCAkb2F1dGh0b2tlbiB1c2VybmFtZSBhbmQg" + + "TkdDX0FQSV9LRVkgcGFzc3dvcmQiLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGF0IGJv" + + "dGggYXJlIHJlcXVpcmVkIGJlY2F1c2UgaGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0" + + "byBwdWxsIE9DSSBjaGFydHMiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgcHJvdmlkZSBvbmx5" + + "IG9uZSBvZiB0aGUgdHdvIGF1dGhlbnRpY2F0aW9uIGNvbW1hbmRzIgogICAgXQogIH0sCiAgewog" + + "ICAgImlkIjogIkc5LW1pc3NpbmctYnVuZGxlIiwKICAgICJxdWVzdGlvbiI6ICJSdW4gaGVsbWZp" + + "bGUgc3luYyBmb3IgTlZDRiBpbiBteSBjdXJyZW50IGRpcmVjdG9yeSIsCiAgICAiZXhwZWN0ZWRf" + "c2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1" + - "dGgiOiAiVGhlIGFnZW50IGNvbXBsZXRlZCB0aGUgY29udHJvbC1wbGFuZSBpbnN0YWxsYXRpb24g" + - "Zmlyc3Q6IHZhbGlkYXRlZCB0b29scyBhbmQgYnVuZGxlIHN0cnVjdHVyZSwgY3JlYXRlZCBjb250" + - "cm9sLXBsYW5lIG5hbWVzcGFjZXMgaW5jbHVkaW5nIGNlcnQtbWFuYWdlciwgYXV0aGVudGljYXRl" + - "ZCB0aGUgcmVnaXN0cmllcywgcHJldmlld2VkLCBkZXBsb3llZCwgYW5kIG1vbml0b3JlZCB0aGUg" + - "Zm91ciBjb250cm9sLXBsYW5lIHBoYXNlcy4gSXQgdGhlbiBzZWxlY3RlZCBvbmUgZG9jdW1lbnRl" + - "ZCBoYW5kb2ZmIGFuZCByZWdpc3RlcmVkIGFuZCBpbnN0YWxsZWQgdGhlIGNvbXB1dGUgcGxhbmUg" + - "YXMgYSBzZXBhcmF0ZSBzdGFjayB3aXRob3V0IG1peGluZyBwcm9maWxlIGFuZCBIZWxtZmlsZSB2" + - "YWx1ZXMgZmxvd3MuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2Vu" + + "dGgiOiAiVGhlIGFnZW50IGF0dGVtcHRlZCB0byB2ZXJpZnkgdGhlIGJ1bmRsZSBzdHJ1Y3R1cmUg" + + "KGhlbG1maWxlLmQvLCBlbnZpcm9ubWVudHMvLCBzZWNyZXRzLywgZ2xvYmFsLnlhbWwuZ290bXBs" + + "KSBhbmQgd2hlbiBmaWxlcyB3ZXJlIG5vdCBmb3VuZCwgc3RvcHBlZCBhbmQgaW5zdHJ1Y3RlZCB0" + + "aGUgdXNlciB0byBleHRyYWN0IG9yIGxvY2F0ZSB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sg" + + "YnVuZGxlLiBJdCBkaWQgbm90IGF0dGVtcHQgdG8gcnVuIGhlbG1maWxlIHN5bmMgYWdhaW5zdCBh" + + "IG1pc3NpbmcgYnVuZGxlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUg" + + "YWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJl" + + "Zm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBjaGVja2VkIGZvciBleHBlY3Rl" + + "ZCBidW5kbGUgc3RydWN0dXJlIChoZWxtZmlsZS5kLywgZW52aXJvbm1lbnRzLywgc2VjcmV0cy8s" + + "IGdsb2JhbC55YW1sLmdvdG1wbCkiLAogICAgICAiV2hlbiBidW5kbGUgZmlsZXMgd2VyZSBub3Qg" + + "Zm91bmQsIHRoZSBhZ2VudCBzdG9wcGVkIGFuZCBkaWQgbm90IGF0dGVtcHQgaGVsbWZpbGUgc3lu" + + "YyIsCiAgICAgICJUaGUgYWdlbnQgaW5zdHJ1Y3RlZCB0aGUgdXNlciB0byBleHRyYWN0IG9yIGxv" + + "Y2F0ZSB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sgYnVuZGxlIgogICAgXQogIH0sCiAgewog" + + "ICAgImlkIjogIlMxLWNsZWFuLWluc3RhbGxhdGlvbiIsCiAgICAicXVlc3Rpb24iOiAiUGVyZm9y" + + "bSBhIGNsZWFuIGluc3RhbGxhdGlvbiBvZiB0aGUgTlZDRiBzZWxmLW1hbmFnZWQgc3RhY2sgb24g" + + "bXkgQVdTIEVLUyBjbHVzdGVyLiBNeSBlbnZpcm9ubWVudCBuYW1lIGlzICdzdGFnaW5nJy4iLAog" + + "ICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAg" + + "ICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBjb21wbGV0ZWQgdGhlIGNvbnRyb2wtcGxhbmUg" + + "aW5zdGFsbGF0aW9uIGZpcnN0OiB2YWxpZGF0ZWQgdG9vbHMgYW5kIGJ1bmRsZSBzdHJ1Y3R1cmUs" + + "IGNyZWF0ZWQgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIGluY2x1ZGluZyBjZXJ0LW1hbmFnZXIs" + + "IGF1dGhlbnRpY2F0ZWQgdGhlIHJlZ2lzdHJpZXMsIHByZXZpZXdlZCwgZGVwbG95ZWQsIGFuZCBt" + + "b25pdG9yZWQgdGhlIGZvdXIgY29udHJvbC1wbGFuZSBwaGFzZXMuIEl0IHRoZW4gc2VsZWN0ZWQg" + + "b25lIGRvY3VtZW50ZWQgaGFuZG9mZiBhbmQgcmVnaXN0ZXJlZCBhbmQgaW5zdGFsbGVkIHRoZSBj" + + "b21wdXRlIHBsYW5lIGFzIGEgc2VwYXJhdGUgc3RhY2sgd2l0aG91dCBtaXhpbmcgcHJvZmlsZSBh" + + "bmQgSGVsbWZpbGUgdmFsdWVzIGZsb3dzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAg" + + "ICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNL" + + "SUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCB2YWxpZGF0ZWQg" + + "dG9vbCB2ZXJzaW9ucyAoaGVsbWZpbGUsIGhlbG0sIGhlbG0tZGlmZiwga3ViZWN0bCkiLAogICAg" + + "ICAiVGhlIGFnZW50IHZlcmlmaWVkIHRoZSBidW5kbGUgc3RydWN0dXJlIGV4aXN0cyIsCiAgICAg" + + "ICJUaGUgYWdlbnQgY3JlYXRlZCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMgKGNhc3NhbmRyYS1z" + + "eXN0ZW0sIG5hdHMtc3lzdGVtLCBudmNmLCBhcGkta2V5cywgZXNzLCBzaXMsIHZhdWx0LXN5c3Rl" + + "bSwgY2VydC1tYW5hZ2VyKSB3aXRob3V0IGFkZGluZyBjb21wdXRlLW9ubHkgbmFtZXNwYWNlcyIs" + + "CiAgICAgICJUaGUgYWdlbnQgcmFuICdIRUxNRklMRV9FTlY9c3RhZ2luZyBoZWxtZmlsZSB0ZW1w" + + "bGF0ZScgdG8gcHJldmlldyBiZWZvcmUgZGVwbG95aW5nIiwKICAgICAgIlRoZSBhZ2VudCByYW4g" + + "J0hFTE1GSUxFX0VOVj1zdGFnaW5nIGhlbG1maWxlIHN5bmMnIHRvIGRlcGxveSIsCiAgICAgICJU" + + "aGUgYWdlbnQgZXhwbGFpbmVkIHRoZSA0IGNvbnRyb2wtcGxhbmUgcGhhc2VzIChkZXBlbmRlbmNp" + + "ZXMsIHNlcnZpY2VzLCBpbmdyZXNzLCBvYnNlcnZhYmlsaXR5KSBhbmQgYXBwcm94aW1hdGUgd2Fp" + + "dCB0aW1lcyIsCiAgICAgICJBZnRlciB0aGUgY29udHJvbCBwbGFuZSB3YXMgaGVhbHRoeSwgdGhl" + + "IGFnZW50IHJlZ2lzdGVyZWQgYW5kIGluc3RhbGxlZCB0aGUgc2VwYXJhdGUgY29tcHV0ZS1wbGFu" + + "ZSBzdGFjayB1c2luZyBleGFjdGx5IG9uZSBkb2N1bWVudGVkIGhhbmRvZmYiLAogICAgICAiVGhl" + + "IGFnZW50IGRpZCBub3QgbWl4IGEgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBsYW5lIHByb2ZpbGUg" + + "d2l0aCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZsb3ciCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAi" + + "UzMtY2xpLXByb2ZpbGUtd29ya2Zsb3ciLAogICAgInF1ZXN0aW9uIjogIlVzZSBudmNmLWNsaSB0" + + "byBpbnN0YWxsIG15IGNvbnRyb2wgcGxhbmUgYW5kIHRoZW4gcmVnaXN0ZXIgYW5kIGluc3RhbGwg" + + "YSBzZXBhcmF0ZSBjb21wdXRlIGNsdXN0ZXIuIFNob3cgZXZlcnkgcmVxdWlyZWQgZ2xvYmFsIGZs" + + "YWcuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRp" + + "b24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZmlyc3QgcmFuIHRoZSBDTEkgY29u" + + "dHJvbC1wbGFuZSBpbnN0YWxsIGFuZCByZXF1aXJlZCBpdHMgZ2VuZXJhdGVkIGNvbnRyb2wtcGxh" + + "bmUtcHJvZmlsZS55YW1sLiBJdCB0aGVuIHNob3dlZCBjb21wbGV0ZSByZWdpc3RlciBhbmQgaW5z" + + "dGFsbCBjb21tYW5kcywgZWFjaCBpbmNsdWRpbmcgLS1jb25maWcsIC0tY29udHJvbC1wbGFuZS1z" + + "dGFjaywgLS1jb21wdXRlLXBsYW5lLXN0YWNrLCAtLWVudiwgYW5kIC0tcGxhaW4gYmVmb3JlIHRo" + + "ZSBjb21wdXRlLXBsYW5lIHN1YmNvbW1hbmQuIFJlZ2lzdHJhdGlvbiBjb25zdW1lZCB0aGUgcHJv" + + "ZmlsZSBhbmQgcHJvZHVjZWQgdGhlIHZhbHVlcyBmaWxlIGNvbnN1bWVkIGJ5IGluc3RhbGwuIEl0" + + "IGRpZCBub3Qgc3dpdGNoIHRvIHRoZSBIZWxtZmlsZSB2YWx1ZXMgaGFuZG9mZi4iLAogICAgImV4" + + "cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1t" + + "YW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAg" + + "ICJUaGUgYWdlbnQgcmFuIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGluc3RhbGwgLS1jb250cm9sLXBs" + + "YW5lIGFuZCB2ZXJpZmllZCBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1w" + + "bGFuZS1wcm9maWxlLnlhbWwgZXhpc3RzIiwKICAgICAgIlRoZSByZWdpc3RlciBjb21tYW5kIGlu" + + "Y2x1ZGVkIC0tY29uZmlnLCAtLWNvbnRyb2wtcGxhbmUtc3RhY2ssIC0tY29tcHV0ZS1wbGFuZS1z" + + "dGFjaywgLS1lbnYsIGFuZCAtLXBsYWluIiwKICAgICAgIlRoZSByZWdpc3RlciBjb21tYW5kIGlu" + + "Y2x1ZGVkIC0tY29udHJvbC1wbGFuZS1wcm9maWxlLCAtLWNsdXN0ZXItbmFtZSwgLS1rdWJlLWNv" + + "bnRleHQsIC0tcmVnaW9uLCBhbmQgLS1vdXRwdXQiLAogICAgICAiVGhlIGluc3RhbGwgY29tbWFu" + + "ZCByZXBlYXRlZCAtLWNvbmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAtLWNvbXB1dGUtcGxh" + + "bmUtc3RhY2ssIC0tZW52LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgaW5zdGFsbCBjb21tYW5k" + + "IGluY2x1ZGVkIC0tdmFsdWVzLCAtLWt1YmUtY29udGV4dCwgYW5kIC0tY2x1c3Rlci1uYW1lIiwK" + + "ICAgICAgIlRoZSBhZ2VudCBrZXB0IHRoZSBnZW5lcmF0ZWQgcHJvZmlsZSBhcyB0aGUgZW5kcG9p" + + "bnQgc291cmNlIGFuZCBkaWQgbm90IG1peCBpbiBIZWxtZmlsZSB2YWx1ZXMgcmVnaXN0cmF0aW9u" + + "IgogICAgXQogIH0sCiAgewogICAgImlkIjogIlM0LW92ZXJyaWRlLWNhc3NhbmRyYS1yZXNvdXJj" + + "ZXMiLAogICAgInF1ZXN0aW9uIjogIkNhc3NhbmRyYSBwb2RzIGtlZXAgZ2V0dGluZyBPT01LaWxs" + + "ZWQuIEluY3JlYXNlIG1lbW9yeSBsaW1pdHMgdG8gMTZHaS4iLAogICAgImV4cGVjdGVkX3NraWxs" + + "IjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjog" + + "IlRoZSBhZ2VudCBjYXB0dXJlZCB0aGUgYmFzZWxpbmUgd2l0aCBoZWxtZmlsZSB0ZW1wbGF0ZSwg" + + "dGhlbiBtb2RpZmllZCB0aGUgY2Fzc2FuZHJhIHJlbGVhc2Ugd2l0aCBpbmxpbmUgdmFsdWVzIHJl" + + "LWluY2x1ZGluZyBnbG9iYWwueWFtbC5nb3RtcGwgYW5kIHNlY3JldHMgaW4gdGhlIHZhbHVlcyBi" + + "bG9jay4gSXQgd2FybmVkIGFib3V0IHRoZSBZQU1MIG1lcmdlIGdvdGNoYSBhbmQgcHJldmlld2Vk" + + "IHRoZSBkaWZmIGJlZm9yZSBhcHBseWluZy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwog" + + "ICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBT" + + "S0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgY2FwdHVyZWQg" + + "YmFzZWxpbmUgd2l0aCAnaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0" + + "ZSciLAogICAgICAiVGhlIGFnZW50IG1vZGlmaWVkIHRoZSByZWxlYXNlIHZhbHVlcyBibG9jayB0" + + "byBpbmNsdWRlIHJlc291cmNlIGxpbWl0cyB3aXRoIG1lbW9yeTogMTZHaSIsCiAgICAgICJUaGUg" + + "YWdlbnQgcmUtaW5jbHVkZWQgZ2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNyZXRzIGZpbGUgaW4g" + + "dGhlIHZhbHVlczogYmxvY2sgKG5vdCBqdXN0IHRoZSBvdmVycmlkZSBhbG9uZSkiLAogICAgICAi" + + "VGhlIGFnZW50IHdhcm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGE6IHNwZWNpZnlpbmcg" + + "dmFsdWVzOiByZXBsYWNlcyB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgbGlzdCBlbnRpcmVseSIsCiAg" + + "ICAgICJUaGUgYWdlbnQgcHJldmlld2VkIHRoZSBjaGFuZ2Ugd2l0aCBoZWxtZmlsZSB0ZW1wbGF0" + + "ZSBhbmQgZGlmZiBiZWZvcmUgYXBwbHlpbmcgd2l0aCBzeW5jIgogICAgXQogIH0sCiAgewogICAg" + + "ImlkIjogIlM2LXNlbGVjdGl2ZS1zeW5jLWRlcGVuZGVuY2llcyIsCiAgICAicXVlc3Rpb24iOiAi" + + "RGVwbG95IG9ubHkgdGhlIE5WQ0YgZGVwZW5kZW5jaWVzIC0tIE5BVFMsIENhc3NhbmRyYSwgYW5k" + + "IE9wZW5CYW8gLS0gZm9yIHRlc3RpbmciLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCB1" + + "c2VkIHRoZSBoZWxtZmlsZSBzZWxlY3RvciB0byBkZXBsb3kgb25seSB0aGUgZGVwZW5kZW5jaWVz" + + "IHJlbGVhc2UgZ3JvdXAsIHRoZW4gdmVyaWZpZWQgcG9kcyBpbiB0aGUgZGVwZW5kZW5jeSBuYW1l" + + "c3BhY2VzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVh" + + "ZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtp" + + "bmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCB1c2VkICdoZWxtZmlsZSAtLXNlbGVjdG9yIHJl" + + "bGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMnIHRvIGRlcGxveSBvbmx5IGRlcGVuZGVuY2ll" + + "cyIsCiAgICAgICJUaGUgYWdlbnQgdmVyaWZpZWQgcG9kcyBpbiBkZXBlbmRlbmN5IG5hbWVzcGFj" + + "ZXMgKG5hdHMtc3lzdGVtLCBjYXNzYW5kcmEtc3lzdGVtLCB2YXVsdC1zeXN0ZW0pIiwKICAgICAg" + + "IlRoZSBhZ2VudCBwcm92aWRlZCB0aGUgc2VsZWN0b3IgcmVmZXJlbmNlIGZvciB0YXJnZXRpbmcg" + + "b3RoZXIgcmVsZWFzZSBncm91cHMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzctZGVidWct" + + "aW1hZ2VwdWxsYmFja29mZiIsCiAgICAicXVlc3Rpb24iOiAiQ2Fzc2FuZHJhIHBvZHMgYXJlIGlu" + + "IEltYWdlUHVsbEJhY2tPZmYgd2l0aCA0MDEgVW5hdXRob3JpemVkIiwKICAgICJleHBlY3RlZF9z" + + "a2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0" + + "aCI6ICJUaGUgYWdlbnQgcmVhZCB0aGUgZGVidWdnaW5nIHJlZmVyZW5jZSBhbmQgcmFuIGRpYWdu" + + "b3N0aWMgY29tbWFuZHMgdG8gaWRlbnRpZnkgdGhlIHJvb3QgY2F1c2U6IGRlc2NyaWJlZCB0aGUg" + + "cG9kLCBjaGVja2VkIGZvciBwdWxsIHNlY3JldHMsIGNoZWNrZWQgaW1hZ2VQdWxsU2VjcmV0cyBv" + + "biB0aGUgcG9kIHNwZWMgYW5kIHNlcnZpY2UgYWNjb3VudC4gSXQgaWRlbnRpZmllZCB0aGUgaXNz" + + "dWUgKG1pc3Npbmcgc2VjcmV0LCB3cm9uZyBjcmVkZW50aWFscywgb3IgbWlzc2luZyBpbWFnZVB1" + + "bGxTZWNyZXRzKSBhbmQgcHJvdmlkZWQgdGhlIGNvcnJlY3QgZml4LiIsCiAgICAiZXhwZWN0ZWRf" + + "YmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQt" + + "aW5zdGFsbGF0aW9uIFNLSUxMLm1kIGFuZCByZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCIsCiAgICAg" + + "ICJUaGUgYWdlbnQgcmFuICdrdWJlY3RsIGRlc2NyaWJlIHBvZCcgdG8gc2VlIHRoZSBJbWFnZVB1" + + "bGxCYWNrT2ZmIGV2ZW50cyIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBmb3IgcHVsbCBzZWNy" + + "ZXRzIGluIHRoZSBjYXNzYW5kcmEtc3lzdGVtIG5hbWVzcGFjZSIsCiAgICAgICJUaGUgYWdlbnQg" + + "Y2hlY2tlZCBpbWFnZVB1bGxTZWNyZXRzIG9uIHRoZSBwb2Qgc3BlYyBhbmQvb3Igc2VydmljZSBh" + + "Y2NvdW50IiwKICAgICAgIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoZSByb290IGNhdXNlIGFuZCBw" + + "cm92aWRlZCBhIHNwZWNpZmljIGZpeCIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTOS1yZW1v" + + "dGUtZWtzLXJvdXRpbmctYW5kLXNlY3JldHMiLAogICAgInF1ZXN0aW9uIjogIkNvbmZpZ3VyZSBh" + + "IHJlbW90ZSBFS1MgY29tcHV0ZSBjbHVzdGVyIHRvIHJlYWNoIG15IE5WQ0YgY29udHJvbCBwbGFu" + + "ZSB0aHJvdWdoIGl0cyBFbnZveSBHYXRld2F5LCBpbmNsdWRpbmcgTkFUUyBhbmQgcHJpdmF0ZS1y" + + "ZWdpc3RyeSBwdWxsIHNlY3JldHMuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYt" + + "bWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgY29u" + + "ZmlndXJlZCB0aGUgY29udHJvbCBwbGFuZSB0byB1c2UgdGhlIEVudm95IEdhdGV3YXkgY29udHJv" + + "bGxlciBpbiBlbnZveS1nYXRld2F5LXN5c3RlbSBhbmQgR2F0ZXdheS9udmNmLWdhdGV3YXkgaW4g" + + "ZW52b3ktZ2F0ZXdheSwgc2V0IGFsbCBzaXggcmVtb3RlIHdvcmtlciBlbmRwb2ludHMgYW5kIHRo" + + "ZSBncnBjLXByb3h5IGxvY2FsIG92ZXJyaWRlLCBlbmFibGVkIE5WQ0YgYW5kIE5WQ1QgZ1JQQyBy" + + "b3V0ZXMgcGx1cyBOQVRTLCBhbmQgZW5hYmxlZCBPcGVuQmFvIGlzc3VlciBkaXNjb3ZlcnkuIEl0" + + "IGNvbmZpZ3VyZWQgdGhlIGJhcmUtR2F0ZXdheSBDTEkgVVJMIGFuZCBIb3N0IGZpZWxkcyBpbmNs" + + "dWRpbmcgaWNtc19ob3N0LCBwbHVzIHRoZSBjb21wdXRlLXBsYW5lIElDTVMsIFJlVmFsLCBhbmQg" + + "TkFUUyBleHRlcm5hbCBVUkxzIGFuZCBob3N0IG92ZXJyaWRlcy4gSXQgY3JlYXRlZCB0aGUgcHVs" + + "bCBzZWNyZXQgaW4gYWxsIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNsdWRpbmcgY2VydC1t" + + "YW5hZ2VyLCBidXQgb25seSBpbiBudmNhLW9wZXJhdG9yIG9uIHRoZSBjb21wdXRlIGNsdXN0ZXI7" + + "IHRoZSBjaGFydCBhbmQgb3BlcmF0b3IgbWlycm9yIGl0IHRvIG52Y2Etc3lzdGVtLiIsCiAgICAi" + + "ZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxm" + + "LW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAg" + + "ICAgIlRoZSBhZ2VudCBzZXQgaW5ncmVzcy5nYXRld2F5QXBpLmNvbnRyb2xsZXJOYW1lc3BhY2Ug" + + "dG8gZW52b3ktZ2F0ZXdheS1zeXN0ZW0iLAogICAgICAiVGhlIGFnZW50IHNldCBzaGFyZWQsIGdy" + + "cGMsIGFuZCBuYXRzIEdhdGV3YXkgcmVmZXJlbmNlcyB0byBuYW1lIG52Y2YtZ2F0ZXdheSBhbmQg" + + "bmFtZXNwYWNlIGVudm95LWdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50IHNldCBnbG9iYWwud29y" + + "a2VyRW5kcG9pbnRzLm52Y2ZTZXJ2aWNlVVJMLCBudmNmR3JwY1NlcnZpY2VVUkwsIG52Y2ZOYXRz" + + "U2VydmljZVVSTCwgbnZjdFNlcnZpY2VVUkwsIG52Y3RHcnBjU2VydmljZVVSTCwgYW5kIGludm9j" + + "YXRpb25TZXJ2aWNlVVJMIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgZ3JwY3Byb3h5Lm52Y2ZHcnBj" + + "U2VydmljZVVSTCB0byB0aGUgY29udHJvbC1wbGFuZS1sb2NhbCBBUEkgZ1JQQyBzZXJ2aWNlIiwK" + + "ICAgICAgIlRoZSBhZ2VudCBlbmFibGVkIGJvdGggaW5ncmVzcy5nYXRld2F5QXBpLnJvdXRlcy5u" + + "dmNmQXBpLmdycGMgYW5kIG52Y3RBcGkuZ3JwYyB3aXRoIHdvcmtlci1hcGkgYW5kIHdvcmtlci10" + + "YXNrcyBob3N0bmFtZXMiLAogICAgICAiVGhlIGFnZW50IGV4cGxpY2l0bHkgc2V0IGluZ3Jlc3Mu" + + "Z2F0ZXdheUFwaS5yb3V0ZXMubmF0cy5lbmFibGVkIHRvIHRydWUiLAogICAgICAiVGhlIGFnZW50" + + "IHNldCBvcGVuYmFvLm1pZ3JhdGlvbnMuaXNzdWVyRGlzY292ZXJ5LmVuYWJsZWQgdG8gdHJ1ZSIs" + + "CiAgICAgICJUaGUgYWdlbnQgY29uZmlndXJlZCB0aGUgYmFyZS1HYXRld2F5IENMSSBVUkwgYW5k" + + "IEhvc3QgZmllbGRzLCBpbmNsdWRpbmcgc2NoZW1lLWxlc3MgaWNtc19ob3N0IiwKICAgICAgIlRo" + + "ZSBhZ2VudCBjb25maWd1cmVkIGNvbXB1dGUtcGxhbmUgaWNtc1NlcnZpY2VVUkwsIGljbXNTZXJ2" + + "aWNlSG9zdEhlYWRlck92ZXJyaWRlLCByZXZhbFNlcnZpY2VVUkwsIHJldmFsU2VydmljZUhvc3RI" + + "ZWFkZXJPdmVycmlkZSwgbmF0c1VSTCwgYW5kIG5hdHNIb3N0T3ZlcnJpZGUiLAogICAgICAiVGhl" + + "IGNvbnRyb2wtcGxhbmUgcHVsbC1zZWNyZXQgbmFtZXNwYWNlIGxpc3QgaW5jbHVkZWQgY2VydC1t" + + "YW5hZ2VyIiwKICAgICAgIlRoZSBjb21wdXRlLXBsYW5lIHNlY3JldCB3YXMgY3JlYXRlZCBvbmx5" + + "IGluIG52Y2Etb3BlcmF0b3IgYW5kIG1pcnJvcmVkIGJ5IHRoZSBjaGFydCBhbmQgb3BlcmF0b3Ig" + + "dG8gbnZjYS1zeXN0ZW0iCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzExLXNwbGl0LXRlYXJk" + + "b3duIiwKICAgICJxdWVzdGlvbiI6ICJUZWFyIGRvd24gbXkgc3BsaXQgY29udHJvbC1wbGFuZSBh" + + "bmQgY29tcHV0ZS1wbGFuZSBkZXBsb3ltZW50IHNhZmVseS4gU2hvdyBib3RoIHRoZSBIZWxtZmls" + + "ZSB2YWx1ZXMgYW5kIENMSSBwcm9maWxlIHZhcmlhbnRzLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwi" + + "OiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAi" + + "VGhlIEhlbG1maWxlIGZsb3cgZGVzdHJveWVkIGFuZCBjb25maXJtZWQgZGVyZWdpc3RyYXRpb24g" + + "b2YgZXZlcnkgY29tcHV0ZSBjbHVzdGVyIGJlZm9yZSBkZXN0cm95aW5nIHRoZSBjb250cm9sIHBs" + + "YW5lIGFuZCBwYXNzZWQgYm90aCBjb250cm9sLXBsYW5lIGt1YmVjb25maWcgZm9ybXMuIEJlZm9y" + + "ZSBlaXRoZXIgaGFuZG9mZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBib3RoIHRl" + + "YXJkb3duIGZsb3dzIHdhcm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9lcyBub3Qg" + + "cHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZlIGNlcnRNYW5hZ2Vy" + + "LmVuYWJsZWQ6IGZhbHNlIGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24gYW5kIGFib3J0ZWQg" + + "aWYgdHJ1ZSwgYW5kIHZlcmlmaWVkIG1hdGNoaW5nIHJlbGVhc2Ugb3duZXJzaGlwIGZvciBhbiBp" + + "bnRlbmRlZCBzdGFjay1tYW5hZ2VkIHJlbGVhc2UsIGFib3J0aW5nIG9uIG1pc3Npbmcgb3IgbWlz" + + "bWF0Y2hlZCBldmlkZW5jZS4gVGhleSBwcmVzZXJ2ZWQgdGhlIG5hbWVzcGFjZSBieSBkZWZhdWx0" + + "IGFuZCBkaWQgbm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBl" + + "eHBsaWNpdCBjb25maXJtYXRpb24uIFRoZSBDTEkgZmxvdyByZXRhaW5lZCB0aGUgZ2VuZXJhdGVk" + + "IHJlZ2lzdHJhdGlvbiB2YWx1ZXMsIHVzZWQgdGhlIGZ1bGwtcHJlZml4IHN0YXR1cyBjb21tYW5k" + + "IHRvIGluc3BlY3QgbGl2ZSByZWdpc3RyYXRpb25zLCBzdGF0ZWQgdGhhdCBuYW1lZC1jbHVzdGVy" + + "IHBsYW4tb25seSBkb2VzIG5vdCBxdWVyeSBJQ01TIGFuZCBjYW5ub3QgcHJlZGljdCBjb25kaXRp" + + "b25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwsIGFuZCBnb3QgZXhwbGljaXQgY29uZmlybWF0aW9u" + + "IHdoZW4gdGhlIHRhcmdldCB3YXMgdGhlIGxhc3QgcmVnaXN0ZXJlZCBjbHVzdGVyLiBJdCB0aGVu" + + "IHByZXZpZXdlZCBhbmQgcmFuIGRvd24gd2l0aCB0aGUgZnVsbCBwZXJzaXN0ZW50IHByZWZpeCwg" + + "cmVtb3ZpbmcgdGhlIGNvbnRyb2wgcGxhbmUgb25seSBhZnRlciB0aGUgbGFzdCByZWdpc3RyYXRp" + + "b24gd2FzIGdvbmUuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2Vu" + "dCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3Jl" + - "IHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IHZhbGlkYXRlZCB0b29sIHZlcnNpb25z" + - "IChoZWxtZmlsZSwgaGVsbSwgaGVsbS1kaWZmLCBrdWJlY3RsKSIsCiAgICAgICJUaGUgYWdlbnQg" + - "dmVyaWZpZWQgdGhlIGJ1bmRsZSBzdHJ1Y3R1cmUgZXhpc3RzIiwKICAgICAgIlRoZSBhZ2VudCBj" + - "cmVhdGVkIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcyAoY2Fzc2FuZHJhLXN5c3RlbSwgbmF0cy1z" + - "eXN0ZW0sIG52Y2YsIGFwaS1rZXlzLCBlc3MsIHNpcywgdmF1bHQtc3lzdGVtLCBjZXJ0LW1hbmFn" + - "ZXIpIHdpdGhvdXQgYWRkaW5nIGNvbXB1dGUtb25seSBuYW1lc3BhY2VzIiwKICAgICAgIlRoZSBh" + - "Z2VudCByYW4gJ0hFTE1GSUxFX0VOVj1zdGFnaW5nIGhlbG1maWxlIHRlbXBsYXRlJyB0byBwcmV2" + - "aWV3IGJlZm9yZSBkZXBsb3lpbmciLAogICAgICAiVGhlIGFnZW50IHJhbiAnSEVMTUZJTEVfRU5W" + - "PXN0YWdpbmcgaGVsbWZpbGUgc3luYycgdG8gZGVwbG95IiwKICAgICAgIlRoZSBhZ2VudCBleHBs" + - "YWluZWQgdGhlIDQgY29udHJvbC1wbGFuZSBwaGFzZXMgKGRlcGVuZGVuY2llcywgc2VydmljZXMs" + - "IGluZ3Jlc3MsIG9ic2VydmFiaWxpdHkpIGFuZCBhcHByb3hpbWF0ZSB3YWl0IHRpbWVzIiwKICAg" + - "ICAgIkFmdGVyIHRoZSBjb250cm9sIHBsYW5lIHdhcyBoZWFsdGh5LCB0aGUgYWdlbnQgcmVnaXN0" + - "ZXJlZCBhbmQgaW5zdGFsbGVkIHRoZSBzZXBhcmF0ZSBjb21wdXRlLXBsYW5lIHN0YWNrIHVzaW5n" + - "IGV4YWN0bHkgb25lIGRvY3VtZW50ZWQgaGFuZG9mZiIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5v" + - "dCBtaXggYSBDTEktZ2VuZXJhdGVkIGNvbnRyb2wtcGxhbmUgcHJvZmlsZSB3aXRoIHRoZSBIZWxt" + - "ZmlsZSB2YWx1ZXMgZmxvdyIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTMy1jbGktcHJvZmls" + - "ZS13b3JrZmxvdyIsCiAgICAicXVlc3Rpb24iOiAiVXNlIG52Y2YtY2xpIHRvIGluc3RhbGwgbXkg" + - "Y29udHJvbCBwbGFuZSBhbmQgdGhlbiByZWdpc3RlciBhbmQgaW5zdGFsbCBhIHNlcGFyYXRlIGNv" + - "bXB1dGUgY2x1c3Rlci4gU2hvdyBldmVyeSByZXF1aXJlZCBnbG9iYWwgZmxhZy4iLAogICAgImV4" + - "cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3Jv" + - "dW5kX3RydXRoIjogIlRoZSBhZ2VudCBmaXJzdCByYW4gdGhlIENMSSBjb250cm9sLXBsYW5lIGlu" + - "c3RhbGwgYW5kIHJlcXVpcmVkIGl0cyBnZW5lcmF0ZWQgY29udHJvbC1wbGFuZS1wcm9maWxlLnlh" + - "bWwuIEl0IHRoZW4gc2hvd2VkIGNvbXBsZXRlIHJlZ2lzdGVyIGFuZCBpbnN0YWxsIGNvbW1hbmRz" + - "LCBlYWNoIGluY2x1ZGluZyAtLWNvbmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAtLWNvbXB1" + - "dGUtcGxhbmUtc3RhY2ssIC0tZW52LCBhbmQgLS1wbGFpbiBiZWZvcmUgdGhlIGNvbXB1dGUtcGxh" + - "bmUgc3ViY29tbWFuZC4gUmVnaXN0cmF0aW9uIGNvbnN1bWVkIHRoZSBwcm9maWxlIGFuZCBwcm9k" + - "dWNlZCB0aGUgdmFsdWVzIGZpbGUgY29uc3VtZWQgYnkgaW5zdGFsbC4gSXQgZGlkIG5vdCBzd2l0" + - "Y2ggdG8gdGhlIEhlbG1maWxlIHZhbHVlcyBoYW5kb2ZmLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZp" + - "b3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + - "bGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBy" + - "YW4gbnZjZi1jbGkgc2VsZi1ob3N0ZWQgaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmUgYW5kIHZlcmlm" + - "aWVkIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL291dC9jb250cm9sLXBsYW5lLXByb2ZpbGUu" + - "eWFtbCBleGlzdHMiLAogICAgICAiVGhlIHJlZ2lzdGVyIGNvbW1hbmQgaW5jbHVkZWQgLS1jb25m" + - "aWcsIC0tY29udHJvbC1wbGFuZS1zdGFjaywgLS1jb21wdXRlLXBsYW5lLXN0YWNrLCAtLWVudiwg" + - "YW5kIC0tcGxhaW4iLAogICAgICAiVGhlIHJlZ2lzdGVyIGNvbW1hbmQgaW5jbHVkZWQgLS1jb250" + - "cm9sLXBsYW5lLXByb2ZpbGUsIC0tY2x1c3Rlci1uYW1lLCAtLWt1YmUtY29udGV4dCwgLS1yZWdp" + - "b24sIGFuZCAtLW91dHB1dCIsCiAgICAgICJUaGUgaW5zdGFsbCBjb21tYW5kIHJlcGVhdGVkIC0t" + - "Y29uZmlnLCAtLWNvbnRyb2wtcGxhbmUtc3RhY2ssIC0tY29tcHV0ZS1wbGFuZS1zdGFjaywgLS1l" + - "bnYsIGFuZCAtLXBsYWluIiwKICAgICAgIlRoZSBpbnN0YWxsIGNvbW1hbmQgaW5jbHVkZWQgLS12" + - "YWx1ZXMsIC0ta3ViZS1jb250ZXh0LCBhbmQgLS1jbHVzdGVyLW5hbWUiLAogICAgICAiVGhlIGFn" + - "ZW50IGtlcHQgdGhlIGdlbmVyYXRlZCBwcm9maWxlIGFzIHRoZSBlbmRwb2ludCBzb3VyY2UgYW5k" + - "IGRpZCBub3QgbWl4IGluIEhlbG1maWxlIHZhbHVlcyByZWdpc3RyYXRpb24iCiAgICBdCiAgfSwK" + - "ICB7CiAgICAiaWQiOiAiUzQtb3ZlcnJpZGUtY2Fzc2FuZHJhLXJlc291cmNlcyIsCiAgICAicXVl" + - "c3Rpb24iOiAiQ2Fzc2FuZHJhIHBvZHMga2VlcCBnZXR0aW5nIE9PTUtpbGxlZC4gSW5jcmVhc2Ug" + - "bWVtb3J5IGxpbWl0cyB0byAxNkdpLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxm" + - "LW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGNh" + - "cHR1cmVkIHRoZSBiYXNlbGluZSB3aXRoIGhlbG1maWxlIHRlbXBsYXRlLCB0aGVuIG1vZGlmaWVk" + - "IHRoZSBjYXNzYW5kcmEgcmVsZWFzZSB3aXRoIGlubGluZSB2YWx1ZXMgcmUtaW5jbHVkaW5nIGds" + - "b2JhbC55YW1sLmdvdG1wbCBhbmQgc2VjcmV0cyBpbiB0aGUgdmFsdWVzIGJsb2NrLiBJdCB3YXJu" + - "ZWQgYWJvdXQgdGhlIFlBTUwgbWVyZ2UgZ290Y2hhIGFuZCBwcmV2aWV3ZWQgdGhlIGRpZmYgYmVm" + - "b3JlIGFwcGx5aW5nLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdl" + - "bnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9y" + - "ZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBjYXB0dXJlZCBiYXNlbGluZSB3aXRo" + - "ICdoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlJyIsCiAgICAgICJU" + - "aGUgYWdlbnQgbW9kaWZpZWQgdGhlIHJlbGVhc2UgdmFsdWVzIGJsb2NrIHRvIGluY2x1ZGUgcmVz" + - "b3VyY2UgbGltaXRzIHdpdGggbWVtb3J5OiAxNkdpIiwKICAgICAgIlRoZSBhZ2VudCByZS1pbmNs" + - "dWRlZCBnbG9iYWwueWFtbC5nb3RtcGwgYW5kIHNlY3JldHMgZmlsZSBpbiB0aGUgdmFsdWVzOiBi" + - "bG9jayAobm90IGp1c3QgdGhlIG92ZXJyaWRlIGFsb25lKSIsCiAgICAgICJUaGUgYWdlbnQgd2Fy" + - "bmVkIGFib3V0IHRoZSBZQU1MIG1lcmdlIGdvdGNoYTogc3BlY2lmeWluZyB2YWx1ZXM6IHJlcGxh" + - "Y2VzIHRoZSB0ZW1wbGF0ZSdzIHZhbHVlcyBsaXN0IGVudGlyZWx5IiwKICAgICAgIlRoZSBhZ2Vu" + - "dCBwcmV2aWV3ZWQgdGhlIGNoYW5nZSB3aXRoIGhlbG1maWxlIHRlbXBsYXRlIGFuZCBkaWZmIGJl" + - "Zm9yZSBhcHBseWluZyB3aXRoIHN5bmMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzYtc2Vs" + - "ZWN0aXZlLXN5bmMtZGVwZW5kZW5jaWVzIiwKICAgICJxdWVzdGlvbiI6ICJEZXBsb3kgb25seSB0" + - "aGUgTlZDRiBkZXBlbmRlbmNpZXMgLS0gTkFUUywgQ2Fzc2FuZHJhLCBhbmQgT3BlbkJhbyAtLSBm" + - "b3IgdGVzdGluZyIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5z" + - "dGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IHVzZWQgdGhlIGhlbG1m" + - "aWxlIHNlbGVjdG9yIHRvIGRlcGxveSBvbmx5IHRoZSBkZXBlbmRlbmNpZXMgcmVsZWFzZSBncm91" + - "cCwgdGhlbiB2ZXJpZmllZCBwb2RzIGluIHRoZSBkZXBlbmRlbmN5IG5hbWVzcGFjZXMuIiwKICAg" + - "ICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNl" + - "bGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAog" + - "ICAgICAiVGhlIGFnZW50IHVzZWQgJ2hlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1k" + - "ZXBlbmRlbmNpZXMgc3luYycgdG8gZGVwbG95IG9ubHkgZGVwZW5kZW5jaWVzIiwKICAgICAgIlRo" + - "ZSBhZ2VudCB2ZXJpZmllZCBwb2RzIGluIGRlcGVuZGVuY3kgbmFtZXNwYWNlcyAobmF0cy1zeXN0" + - "ZW0sIGNhc3NhbmRyYS1zeXN0ZW0sIHZhdWx0LXN5c3RlbSkiLAogICAgICAiVGhlIGFnZW50IHBy" + - "b3ZpZGVkIHRoZSBzZWxlY3RvciByZWZlcmVuY2UgZm9yIHRhcmdldGluZyBvdGhlciByZWxlYXNl" + - "IGdyb3VwcyIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTNy1kZWJ1Zy1pbWFnZXB1bGxiYWNr" + - "b2ZmIiwKICAgICJxdWVzdGlvbiI6ICJDYXNzYW5kcmEgcG9kcyBhcmUgaW4gSW1hZ2VQdWxsQmFj" + - "a09mZiB3aXRoIDQwMSBVbmF1dGhvcml6ZWQiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Yt" + - "c2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2Vu" + - "dCByZWFkIHRoZSBkZWJ1Z2dpbmcgcmVmZXJlbmNlIGFuZCByYW4gZGlhZ25vc3RpYyBjb21tYW5k" + - "cyB0byBpZGVudGlmeSB0aGUgcm9vdCBjYXVzZTogZGVzY3JpYmVkIHRoZSBwb2QsIGNoZWNrZWQg" + - "Zm9yIHB1bGwgc2VjcmV0cywgY2hlY2tlZCBpbWFnZVB1bGxTZWNyZXRzIG9uIHRoZSBwb2Qgc3Bl" + - "YyBhbmQgc2VydmljZSBhY2NvdW50LiBJdCBpZGVudGlmaWVkIHRoZSBpc3N1ZSAobWlzc2luZyBz" + - "ZWNyZXQsIHdyb25nIGNyZWRlbnRpYWxzLCBvciBtaXNzaW5nIGltYWdlUHVsbFNlY3JldHMpIGFu" + - "ZCBwcm92aWRlZCB0aGUgY29ycmVjdCBmaXguIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsK" + - "ICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24g" + - "U0tJTEwubWQgYW5kIHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kIiwKICAgICAgIlRoZSBhZ2VudCBy" + - "YW4gJ2t1YmVjdGwgZGVzY3JpYmUgcG9kJyB0byBzZWUgdGhlIEltYWdlUHVsbEJhY2tPZmYgZXZl" + - "bnRzIiwKICAgICAgIlRoZSBhZ2VudCBjaGVja2VkIGZvciBwdWxsIHNlY3JldHMgaW4gdGhlIGNh" + - "c3NhbmRyYS1zeXN0ZW0gbmFtZXNwYWNlIiwKICAgICAgIlRoZSBhZ2VudCBjaGVja2VkIGltYWdl" + - "UHVsbFNlY3JldHMgb24gdGhlIHBvZCBzcGVjIGFuZC9vciBzZXJ2aWNlIGFjY291bnQiLAogICAg" + - "ICAiVGhlIGFnZW50IGlkZW50aWZpZWQgdGhlIHJvb3QgY2F1c2UgYW5kIHByb3ZpZGVkIGEgc3Bl" + - "Y2lmaWMgZml4IgogICAgXQogIH0sCiAgewogICAgImlkIjogIlM5LXJlbW90ZS1la3Mtcm91dGlu" + - "Zy1hbmQtc2VjcmV0cyIsCiAgICAicXVlc3Rpb24iOiAiQ29uZmlndXJlIGEgcmVtb3RlIEVLUyBj" + - "b21wdXRlIGNsdXN0ZXIgdG8gcmVhY2ggbXkgTlZDRiBjb250cm9sIHBsYW5lIHRocm91Z2ggaXRz" + - "IEVudm95IEdhdGV3YXksIGluY2x1ZGluZyBOQVRTIGFuZCBwcml2YXRlLXJlZ2lzdHJ5IHB1bGwg" + - "c2VjcmV0cy4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + - "bGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBjb25maWd1cmVkIHRoZSBj" + - "b250cm9sIHBsYW5lIHRvIHVzZSB0aGUgRW52b3kgR2F0ZXdheSBjb250cm9sbGVyIGluIGVudm95" + - "LWdhdGV3YXktc3lzdGVtIGFuZCBHYXRld2F5L252Y2YtZ2F0ZXdheSBpbiBlbnZveS1nYXRld2F5" + - "LCBzZXQgYWxsIHNpeCByZW1vdGUgd29ya2VyIGVuZHBvaW50cyBhbmQgdGhlIGdycGMtcHJveHkg" + - "bG9jYWwgb3ZlcnJpZGUsIGVuYWJsZWQgTlZDRiBhbmQgTlZDVCBnUlBDIHJvdXRlcyBwbHVzIE5B" + - "VFMsIGFuZCBlbmFibGVkIE9wZW5CYW8gaXNzdWVyIGRpc2NvdmVyeS4gSXQgY29uZmlndXJlZCB0" + - "aGUgYmFyZS1HYXRld2F5IENMSSBVUkwgYW5kIEhvc3QgZmllbGRzIGluY2x1ZGluZyBpY21zX2hv" + - "c3QsIHBsdXMgdGhlIGNvbXB1dGUtcGxhbmUgSUNNUywgUmVWYWwsIGFuZCBOQVRTIGV4dGVybmFs" + - "IFVSTHMgYW5kIGhvc3Qgb3ZlcnJpZGVzLiBJdCBjcmVhdGVkIHRoZSBwdWxsIHNlY3JldCBpbiBh" + - "bGwgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIGluY2x1ZGluZyBjZXJ0LW1hbmFnZXIsIGJ1dCBv" + - "bmx5IGluIG52Y2Etb3BlcmF0b3Igb24gdGhlIGNvbXB1dGUgY2x1c3RlcjsgdGhlIGNoYXJ0IGFu" + - "ZCBvcGVyYXRvciBtaXJyb3IgaXQgdG8gbnZjYS1zeXN0ZW0uIiwKICAgICJleHBlY3RlZF9iZWhh" + - "dmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0" + - "YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50" + - "IHNldCBpbmdyZXNzLmdhdGV3YXlBcGkuY29udHJvbGxlck5hbWVzcGFjZSB0byBlbnZveS1nYXRl" + - "d2F5LXN5c3RlbSIsCiAgICAgICJUaGUgYWdlbnQgc2V0IHNoYXJlZCwgZ3JwYywgYW5kIG5hdHMg" + - "R2F0ZXdheSByZWZlcmVuY2VzIHRvIG5hbWUgbnZjZi1nYXRld2F5IGFuZCBuYW1lc3BhY2UgZW52" + - "b3ktZ2F0ZXdheSIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGdsb2JhbC53b3JrZXJFbmRwb2ludHMu" + - "bnZjZlNlcnZpY2VVUkwsIG52Y2ZHcnBjU2VydmljZVVSTCwgbnZjZk5hdHNTZXJ2aWNlVVJMLCBu" + - "dmN0U2VydmljZVVSTCwgbnZjdEdycGNTZXJ2aWNlVVJMLCBhbmQgaW52b2NhdGlvblNlcnZpY2VV" + - "UkwiLAogICAgICAiVGhlIGFnZW50IHNldCBncnBjcHJveHkubnZjZkdycGNTZXJ2aWNlVVJMIHRv" + - "IHRoZSBjb250cm9sLXBsYW5lLWxvY2FsIEFQSSBnUlBDIHNlcnZpY2UiLAogICAgICAiVGhlIGFn" + - "ZW50IGVuYWJsZWQgYm90aCBpbmdyZXNzLmdhdGV3YXlBcGkucm91dGVzLm52Y2ZBcGkuZ3JwYyBh" + - "bmQgbnZjdEFwaS5ncnBjIHdpdGggd29ya2VyLWFwaSBhbmQgd29ya2VyLXRhc2tzIGhvc3RuYW1l" + - "cyIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGljaXRseSBzZXQgaW5ncmVzcy5nYXRld2F5QXBpLnJv" + - "dXRlcy5uYXRzLmVuYWJsZWQgdG8gdHJ1ZSIsCiAgICAgICJUaGUgYWdlbnQgc2V0IG9wZW5iYW8u" + - "bWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZCB0byB0cnVlIiwKICAgICAgIlRoZSBh" + - "Z2VudCBjb25maWd1cmVkIHRoZSBiYXJlLUdhdGV3YXkgQ0xJIFVSTCBhbmQgSG9zdCBmaWVsZHMs" + - "IGluY2x1ZGluZyBzY2hlbWUtbGVzcyBpY21zX2hvc3QiLAogICAgICAiVGhlIGFnZW50IGNvbmZp" + - "Z3VyZWQgY29tcHV0ZS1wbGFuZSBpY21zU2VydmljZVVSTCwgaWNtc1NlcnZpY2VIb3N0SGVhZGVy" + - "T3ZlcnJpZGUsIHJldmFsU2VydmljZVVSTCwgcmV2YWxTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRl" + - "LCBuYXRzVVJMLCBhbmQgbmF0c0hvc3RPdmVycmlkZSIsCiAgICAgICJUaGUgY29udHJvbC1wbGFu" + - "ZSBwdWxsLXNlY3JldCBuYW1lc3BhY2UgbGlzdCBpbmNsdWRlZCBjZXJ0LW1hbmFnZXIiLAogICAg" + - "ICAiVGhlIGNvbXB1dGUtcGxhbmUgc2VjcmV0IHdhcyBjcmVhdGVkIG9ubHkgaW4gbnZjYS1vcGVy" + - "YXRvciBhbmQgbWlycm9yZWQgYnkgdGhlIGNoYXJ0IGFuZCBvcGVyYXRvciB0byBudmNhLXN5c3Rl" + - "bSIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJHMTEtc3BsaXQtdGVhcmRvd24iLAogICAgInF1" + - "ZXN0aW9uIjogIlRlYXIgZG93biBteSBzcGxpdCBjb250cm9sLXBsYW5lIGFuZCBjb21wdXRlLXBs" + - "YW5lIGRlcGxveW1lbnQgc2FmZWx5LiBTaG93IGJvdGggdGhlIEhlbG1maWxlIHZhbHVlcyBhbmQg" + - "Q0xJIHByb2ZpbGUgdmFyaWFudHMuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYt" + - "bWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgSGVsbWZpbGUg" + - "ZmxvdyBkZXN0cm95ZWQgYW5kIGNvbmZpcm1lZCBkZXJlZ2lzdHJhdGlvbiBvZiBldmVyeSBjb21w" + - "dXRlIGNsdXN0ZXIgYmVmb3JlIGRlc3Ryb3lpbmcgdGhlIGNvbnRyb2wgcGxhbmUgYW5kIHBhc3Nl" + - "ZCBib3RoIGNvbnRyb2wtcGxhbmUga3ViZWNvbmZpZyBmb3Jtcy4gQmVmb3JlIGVpdGhlciBoYW5k" + - "b2ZmIGNvdWxkIGRlc3Ryb3kgdGhlIGNvbnRyb2wgcGxhbmUsIGJvdGggdGVhcmRvd24gZmxvd3Mg" + - "d2FybmVkIHRoYXQgbmFtZXNwYWNlIHByZXNlcnZhdGlvbiBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUg" + - "SGVsbSByZWxlYXNlLCByZXF1aXJlZCBlZmZlY3RpdmUgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFs" + - "c2UgZm9yIGFuIGV4dGVybmFsIGluc3RhbGxhdGlvbiBhbmQgYWJvcnRlZCBpZiB0cnVlLCBhbmQg" + - "dmVyaWZpZWQgbWF0Y2hpbmcgcmVsZWFzZSBvd25lcnNoaXAgZm9yIGFuIGludGVuZGVkIHN0YWNr" + - "LW1hbmFnZWQgcmVsZWFzZSwgYWJvcnRpbmcgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRl" + - "bmNlLiBUaGV5IHByZXNlcnZlZCB0aGUgbmFtZXNwYWNlIGJ5IGRlZmF1bHQgYW5kIGRpZCBub3Qg" + - "ZGVsZXRlIGl0IHdpdGhvdXQgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGV4cGxpY2l0IGNvbmZp" + - "cm1hdGlvbi4gVGhlIENMSSBmbG93IHJldGFpbmVkIHRoZSBnZW5lcmF0ZWQgcmVnaXN0cmF0aW9u" + - "IHZhbHVlcywgdXNlZCB0aGUgZnVsbC1wcmVmaXggc3RhdHVzIGNvbW1hbmQgdG8gaW5zcGVjdCBs" + - "aXZlIHJlZ2lzdHJhdGlvbnMsIHN0YXRlZCB0aGF0IG5hbWVkLWNsdXN0ZXIgcGxhbi1vbmx5IGRv" + - "ZXMgbm90IHF1ZXJ5IElDTVMgYW5kIGNhbm5vdCBwcmVkaWN0IGNvbmRpdGlvbmFsIGNvbnRyb2wt" + - "cGxhbmUgcmVtb3ZhbCwgYW5kIGdvdCBleHBsaWNpdCBjb25maXJtYXRpb24gd2hlbiB0aGUgdGFy" + - "Z2V0IHdhcyB0aGUgbGFzdCByZWdpc3RlcmVkIGNsdXN0ZXIuIEl0IHRoZW4gcHJldmlld2VkIGFu" + - "ZCByYW4gZG93biB3aXRoIHRoZSBmdWxsIHBlcnNpc3RlbnQgcHJlZml4LCByZW1vdmluZyB0aGUg" + - "Y29udHJvbCBwbGFuZSBvbmx5IGFmdGVyIHRoZSBsYXN0IHJlZ2lzdHJhdGlvbiB3YXMgZ29uZS4i" + - "LAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52" + - "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlv" + - "biIsCiAgICAgICJGb3IgZXZlcnkgY29tcHV0ZSBjbHVzdGVyLCB0aGUgSGVsbWZpbGUgZmxvdyBy" + - "YW4gdGhlIGNvbXB1dGUtcGxhbmUgTWFrZWZpbGUgZGVzdHJveSB0YXJnZXQgd2l0aCBpdHMgY29t" + - "cHV0ZSBrdWJlY29uZmlnIiwKICAgICAgIkFmdGVyIGNvbmZpcm1hdGlvbiwgdGhlIEhlbG1maWxl" + - "IGZsb3cgcmFuIGNsdXN0ZXIgZGVsZXRlIHdpdGggY2x1c3RlcklEIGFuZCBuY2FJRCBiZWZvcmUg" + - "Y29udHJvbC1wbGFuZSBkZXN0cnVjdGlvbiIsCiAgICAgICJCZWZvcmUgZWl0aGVyIGhhbmRvZmYg" + - "Y291bGQgZGVzdHJveSB0aGUgY29udHJvbCBwbGFuZSwgYm90aCB0ZWFyZG93biBmbG93cyB3YXJu" + - "ZWQgdGhhdCBuYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxt" + - "IHJlbGVhc2UsIHJlcXVpcmVkIGVmZmVjdGl2ZSBjZXJ0TWFuYWdlci5lbmFibGVkOiBmYWxzZSBm" + - "b3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uIGFuZCBhYm9ydGVkIGlmIHRydWUsIGFuZCB2ZXJp" + - "ZmllZCBpbnRlbmRlZCBzdGFjayBvd25lcnNoaXAgd2hlbiBlbmFibGVkLCBhYm9ydGluZyBvbiBt" + - "aXNzaW5nIG9yIG1pc21hdGNoZWQgZXZpZGVuY2UiLAogICAgICAiQm90aCB0ZWFyZG93biBmbG93" + - "cyBwcmVzZXJ2ZWQgdGhlIGNlcnQtbWFuYWdlciBuYW1lc3BhY2UgYnkgZGVmYXVsdCBhbmQgZGlk" + - "IG5vdCBkZWxldGUgaXQgd2l0aG91dCBuYW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQgZXhwbGljaXQg" + - "Y29uZmlybWF0aW9uIiwKICAgICAgIlRoZSBIZWxtZmlsZSBmbG93IHJhbiBjb250cm9sLXBsYW5l" + - "IE1ha2VmaWxlIGRlc3Ryb3kgd2l0aCBib3RoIEtVQkVDT05GSUcgYW5kIEtVQkVDT05GSUdfRklM" + - "RSIsCiAgICAgICJUaGUgQ0xJIGZsb3cgcmV0YWluZWQgb3V0LzxjbHVzdGVyLW5hbWU+LXJlZ2lz" + - "dGVyLXZhbHVlcy55YW1sIHVudGlsIHRlYXJkb3duIGNvbXBsZXRlZCIsCiAgICAgICJCZWZvcmUg" + - "cmVhbCBkb3duLCB0aGUgQ0xJIGZsb3cgdXNlZCB0aGUgZnVsbC1wcmVmaXggc3RhdHVzIGNvbW1h" + - "bmQgdG8gaW5zcGVjdCBsaXZlIHJlZ2lzdHJhdGlvbnMsIHN0YXRlZCB0aGF0IG5hbWVkLWNsdXN0" + - "ZXIgcGxhbi1vbmx5IGRvZXMgbm90IHF1ZXJ5IElDTVMgYW5kIGNhbm5vdCBwcmVkaWN0IGNvbmRp" + - "dGlvbmFsIGNvbnRyb2wtcGxhbmUgcmVtb3ZhbCwgd2FybmVkIHdoZW4gdGhlIHRhcmdldCB3YXMg" + - "dGhlIGxhc3QgcmVnaXN0ZXJlZCBjbHVzdGVyLCBhbmQgZ290IGV4cGxpY2l0IGNvbmZpcm1hdGlv" + - "biIsCiAgICAgICJUaGUgQ0xJIGZsb3cgdXNlZCAtLWNvbmZpZywgYm90aCBzdGFjayBwYXRocywg" + - "LS1lbnYsIC0tcGxhaW4sIGJvdGggY29udGV4dHMsIGFuZCAtLWljbXMtdXJsIGZvciBkb3duIC0t" + - "cGxhbi1vbmx5IGFuZCB0aGVuIGRvd24iLAogICAgICAiVGhlIGFnZW50IHN0YXRlZCB0aGF0IGRv" + - "d24gdW5yZWdpc3RlcnMgZWFjaCBjb21wdXRlIGNsdXN0ZXIgYW5kIHJlbW92ZXMgdGhlIGNvbnRy" + - "b2wgcGxhbmUgb25seSBhZnRlciBubyByZWdpc3RyYXRpb25zIHJlbWFpbiIKICAgIF0KICB9LAog" + - "IHsKICAgICJpZCI6ICJTMTMtdmFsdWVzLXByZWNlZGVuY2UiLAogICAgInF1ZXN0aW9uIjogIkkg" + - "YWRkZWQgYSB2YWx1ZSB0byBteSBlbnZpcm9ubWVudCBZQU1MIGJ1dCBpdCdzIGJlaW5nIHNpbGVu" + - "dGx5IGlnbm9yZWQuIEhvdyBkbyBoZWxtZmlsZSB2YWx1ZXMgd29yayBpbiBOVkNGPyIsCiAgICAi" + - "ZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJn" + - "cm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgdmFsdWVzIHByZWNlZGVuY2Ug" + - "Y2hhaW4gKGJhc2UueWFtbCwgZW52IFlBTUwsIGdsb2JhbC55YW1sLmdvdG1wbCwgc2VjcmV0cywg" + - "aW5saW5lIHZhbHVlcyksIGlkZW50aWZpZWQgdGhhdCBnbG9iYWwueWFtbC5nb3RtcGwgb25seSBw" + - "YXNzZXMgdGhyb3VnaCBzcGVjaWZpYyBrZXlzLCBhbmQgZXhwbGFpbmVkIHRoYXQgYXJiaXRyYXJ5" + - "IGNoYXJ0IHZhbHVlcyBtdXN0IHVzZSByZWxlYXNlIGlubGluZSB2YWx1ZXMgYmxvY2tzLiIsCiAg" + - "ICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1z" + - "ZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwK" + - "ICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhlIHZhbHVlcyBwcmVjZWRlbmNlIGNoYWluOiBi" + - "YXNlLnlhbWwgLT4gZW52IFlBTUwgLT4gZ2xvYmFsLnlhbWwuZ290bXBsIC0+IHNlY3JldHMgLT4g" + - "aW5saW5lIHZhbHVlcyIsCiAgICAgICJUaGUgYWdlbnQgaWRlbnRpZmllZCB0aGF0IGdsb2JhbC55" + - "YW1sLmdvdG1wbCBvbmx5IHBhc3NlcyB0aHJvdWdoIHNwZWNpZmljIGtleXMgKGNhc3NhbmRyYS5y" + - "ZXBsaWNhQ291bnQsIGdsb2JhbC5zdG9yYWdlQ2xhc3MsIGdsb2JhbC5pbWFnZSwgZXRjLikiLAog" + - "ICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGF0IGFyYml0cmFyeSBjaGFydCB2YWx1ZXMgbXVz" + - "dCBiZSBzZXQgdmlhIHJlbGVhc2UgaW5saW5lIHZhbHVlczogYmxvY2tzIiwKICAgICAgIlRoZSBh" + - "Z2VudCBsaXN0ZWQgZXhhbXBsZXMgb2YgdmFsdWVzIHRoYXQgYXJlIHByb3BhZ2F0ZWQgYW5kIGFy" + - "Yml0cmFyeSBjaGFydCB2YWx1ZXMgdGhhdCByZXF1aXJlIGEgcmVsZWFzZSB2YWx1ZXMgYmxvY2si" + - "CiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzE0LWVuYWJsZS1sbG0tZnVuY3Rpb25zIiwKICAg" + - "ICJxdWVzdGlvbiI6ICJJIG5lZWQgdG8gZGVwbG95IGZ1bmN0aW9uVHlwZTogTExNIGZ1bmN0aW9u" + - "cyBvbiBhIHNlbGYtbWFuYWdlZCwgc2luZ2xlLW5vZGUgaXNvbGF0ZWQgdGVzdCBjbHVzdGVyLiBX" + - "aGF0IEhlbG1maWxlIGNvbmZpZ3VyYXRpb24gYW5kIHZlcmlmaWNhdGlvbiBzdGVwcyBkbyBJIG5l" + - "ZWQ/IiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRp" + - "b24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZW5hYmxlZCB0aGUgTExNIGFkZG9u" + - "IHdpdGggYWRkb25zLmxsbS5lbmFibGVkLCBjb25maWd1cmVkIHNpbmdsZSByZXBsaWNhcyBmb3Ig" + - "dGhlIExMTSBBUEkgR2F0ZXdheSBhbmQgcmVxdWVzdCByb3V0ZXIsIGFuZCBleHBsYWluZWQgdGhh" + - "dCB0aGUgcmVxdWVzdCByb3V0ZXIgdXNlcyBwb3dlci1vZi10d28gd2hlbiBubyBsb2FkLWJhbGFu" + - "Y2VyIGNvbmZpZ3VyYXRpb24gaXMgc2V0LiBJdCBsaW5rZWQgdGhlIGNhbm9uaWNhbCByZXF1ZXN0" + - "LXJvdXRlciBsb2FkLWJhbGFuY2luZyBndWlkZSBmb3Igb3RoZXIgcm91dGluZyBtZXRob2RzLiBG" + - "b3IgdGhlIGlzb2xhdGVkIHBsYWludGV4dCBjbHVzdGVyLCBpdCBpbmNsdWRlZCBib3RoIGFkZG9u" + - "cy5sbG0uZ2F0ZXdheS5hdXRoLmdycGNJbnNlY3VyZSBhbmQgYWdlbnRDb25maWcubWVyZ2VDb25m" + - "aWcud29ya2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUsIHdpdGggYSB3YXJuaW5nIHRoYXQgdGhv" + - "c2Ugc2V0dGluZ3MgYXJlIG5vdCBmb3IgcHJvZHVjdGlvbi4gSXQgcmVmcmVzaGVkIHRoZSBjb21w" + - "dXRlIHBsYW5lIHVzaW5nIHRoZSBzYW1lIGhhbmRvZmYgdXNlZCBkdXJpbmcgaW5zdGFsbGF0aW9u" + - "LCByZWRlcGxveWVkIGV4aXN0aW5nIExMTSBmdW5jdGlvbnMsIGFuZCB2ZXJpZmllZCB0aGUgTExN" + - "IGRlcGxveW1lbnRzLCByb3V0ZSwgYW5kIGxsbS13b3JrZXIgc2lkZWNhci4iLAogICAgImV4cGVj" + - "dGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHVzZWQgYWRkb25zLmxsbS5lbmFibGVk" + - "LCBub3QgdGhlIG9ic29sZXRlIGxsbS5lbmFibGVkIHBhdGgiLAogICAgICAiVGhlIGFnZW50IHNl" + - "dCBnYXRld2F5IGFuZCByZXF1ZXN0Um91dGVyIHJlcGxpY2FDb3VudCB0byAxIGZvciB0aGUgc2lu" + - "Z2xlLW5vZGUgdGVzdCBjbHVzdGVyIiwKICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCB0aGUg" + - "cmVxdWVzdCByb3V0ZXIgZGVmYXVsdHMgdG8gcG93ZXItb2YtdHdvIGFuZCBsaW5rZWQgdGhlIGNh" + - "bm9uaWNhbCByZXF1ZXN0LXJvdXRlciBsb2FkLWJhbGFuY2luZyBndWlkZSBmb3Igb3RoZXIgbWV0" + - "aG9kcyIsCiAgICAgICJUaGUgYWdlbnQgaW5jbHVkZWQgYWRkb25zLmxsbS5nYXRld2F5LmF1dGgu" + - "Z3JwY0luc2VjdXJlIGFuZCB3b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZSBmb3IgdGhlIGlz" + - "b2xhdGVkIHBsYWludGV4dCBjbHVzdGVyLCBhbmQgd2FybmVkIGFnYWluc3QgdXNpbmcgdGhlbSBp" + - "biBwcm9kdWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBhcHBsaWVkIHRoZSBjb250cm9sLXBsYW5l" + - "IEhlbG1maWxlIGVudmlyb25tZW50LCByZWZyZXNoZWQgdGhlIGNvbXB1dGUgcGxhbmUgd2l0aCB0" + - "aGUgc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLCBhbmQgcmVjcmVhdGVkIG9yIHJlZGVwbG95ZWQgZXhp" + - "c3RpbmcgTExNIGZ1bmN0aW9ucyIsCiAgICAgICJUaGUgYWdlbnQgdmVyaWZpZWQgbGxtLWFwaS1n" + - "YXRld2F5LCBsbG0tcmVxdWVzdC1yb3V0ZXIsIHRoZSBMTE0gSFRUUFJvdXRlLCBhbmQgdGhlIGxs" + - "bS13b3JrZXIgc2lkZWNhciBpbmNsdWRpbmcgLS1xdWljLWluc2VjdXJlIgogICAgXQogIH0sCiAg" + - "ewogICAgImlkIjogIkc4LU5FRy1ub3QtZm9yLWszZCIsCiAgICAicXVlc3Rpb24iOiAiU2V0IHVw" + - "IGEgbG9jYWwgTlZDRiBkZXYgY2x1c3RlciB1c2luZyBrM2QgZm9yIHRlc3RpbmciLAogICAgImV4" + - "cGVjdGVkX3NraWxsIjogbnVsbCwKICAgICJzaG91bGRfdHJpZ2dlciI6IGZhbHNlLAogICAgImdy" + - "b3VuZF90cnV0aCI6ICJUaGlzIGlzIGEgbG9jYWwgazNkIGRldmVsb3BtZW50IHJlcXVlc3QgdGhh" + - "dCBiZWxvbmdzIHRvIHRoZSBudmNmLXNlbGYtaG9zdGVkLWxvY2FsLWRldiBza2lsbCwgbm90IG52" + - "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi4gVGhlIGFnZW50IGRpZCBub3QgcmVhZCBvciB1" + - "c2UgdGhlIHNlbGYtbWFuYWdlZCBpbnN0YWxsYXRpb24gc2tpbGwgYW5kIGluc3RlYWQgcHJvdmlk" + - "ZWQgazNkLXNwZWNpZmljIGd1aWRhbmNlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAg" + - "ICAgICJUaGUgYWdlbnQgZGlkIG5vdCByZWFkIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + - "bi9TS0lMTC5tZCIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm92aWRlIGhlbG1maWxlLWJh" + - "c2VkIHByb2R1Y3Rpb24gZGVwbG95bWVudCBpbnN0cnVjdGlvbnMiLAogICAgICAiVGhlIGFnZW50" + - "IHByb3ZpZGVkIGszZC1zcGVjaWZpYyBsb2NhbCBkZXZlbG9wbWVudCBndWlkYW5jZSBvciBkZWZl" + - "cnJlZCB0byB0aGUgYXBwcm9wcmlhdGUgbG9jYWwtZGV2IHNraWxsIgogICAgXQogIH0KXQpQSwcI" + - "KxO4P61VAACtVQAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAvAAkAZGF0YS9udmNmLXNlbGYt" + - "bWFuYWdlZC1pbnN0YWxsYXRpb24vZXhhbXBsZXMubWRVVAUAAQCmzhIjIEV4YW1wbGVzCgpXb3Jr" + - "ZWQgZXhhbXBsZXMgYmFzZWQgb24gcmVhbCBkZXBsb3ltZW50IHNjZW5hcmlvcy4KCiMjIEV4YW1w" + - "bGUgMTogT3ZlcnJpZGUgQ2Fzc2FuZHJhIFJlc291cmNlcwoKVGhlIGRlZmF1bHQgQ2Fzc2FuZHJh" + - "IHJlc291cmNlIGxpbWl0cyBjYXVzZSBPT00gb24gbGFyZ2UgaW5zdGFuY2UgdHlwZXMgKGUuZy4s" + - "IGBwNS40OHhsYXJnZWApLgoKUHJvYmxlbTogQ2Fzc2FuZHJhIHBvZHMgcmVzdGFydCB3aXRoIGBP" + - "T01LaWxsZWRgLgoKU29sdXRpb246IE92ZXJyaWRlIHJlc291cmNlcyB2aWEgaGVsbWZpbGUgcmVs" + - "ZWFzZSB2YWx1ZXMgYmxvY2suCgojIyMgU3RlcCAxOiBDYXB0dXJlIGJhc2VsaW5lCgpgYGBiYXNo" + - "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRl" + - "bXBsYXRlID4gL3RtcC9jYXNzLWJlZm9yZS55YW1sCmdyZXAgLUE4ICdyZXNvdXJjZXM6JyAvdG1w" + - "L2Nhc3MtYmVmb3JlLnlhbWwgfCBoZWFkIC0xMApgYGAKCiMjIyBTdGVwIDI6IEFkZCBvdmVycmlk" + - "ZSB0byBoZWxtZmlsZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbAoKSW4gdGhlIGV4YW1w" + - "bGVzIGJlbG93LCBgPHByaXZhdGUtdmFsdWVzPmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRp" + - "cmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUgc3RhY2sgcm9vdC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNz" + - "YW5kcmEKICB2ZXJzaW9uOiAwLjguMAogIGNvbmRpdGlvbjogY2Fzc2FuZHJhLmVuYWJsZWQKICBu" + - "YW1lc3BhY2U6IGNhc3NhbmRyYS1zeXN0ZW0KICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAg" + - "ICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJl" + - "cXVpcmVkRW52ICJIRUxNRklMRV9FTlYiIH19LXNlY3JldHMueWFtbAogICAgLSBjYXNzYW5kcmE6" + - "CiAgICAgICAgcmVzb3VyY2VzOgogICAgICAgICAgbGltaXRzOgogICAgICAgICAgICBjcHU6ICI4" + - "IgogICAgICAgICAgICBtZW1vcnk6IDgxOTJNaQogICAgICAgICAgcmVxdWVzdHM6CiAgICAgICAg" + - "ICAgIGNwdTogIjIiCiAgICAgICAgICAgIG1lbW9yeTogNDA5Nk1pCmBgYAoKIyMjIFN0ZXAgMzog" + - "VmVyaWZ5IGFuZCBhcHBseQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1z" + - "ZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSA+IC90bXAvY2Fzcy1hZnRlci55YW1sCmRp" + - "ZmYgL3RtcC9jYXNzLWJlZm9yZS55YW1sIC90bXAvY2Fzcy1hZnRlci55YW1sICAjIENvbmZpcm0g" + - "cmVzb3VyY2VzIGNoYW5nZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3Ig" + - "bmFtZT1jYXNzYW5kcmEgc3luYwpgYGAKCk5vdGU6IGByZXNvdXJjZVByZXNldGAgKGEgQml0bmFt" + - "aSBmZWF0dXJlKSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBOVkNGIGNhc3NhbmRyYSB3cmFwcGVy" + - "IGNoYXJ0LiBVc2UgZXhwbGljaXQgYHJlc291cmNlc2AgaW5zdGVhZC4KCi0tLQoKIyMgRXhhbXBs" + - "ZSAyOiBEZXBsb3kgZnJvbSBOR0MgUHJpdmF0ZSBSZWdpc3RyeSB3aXRoIFB1bGwgU2VjcmV0cwoK" + - "RGVwbG95IHRoZSBOVkNGIHN0YWNrIHB1bGxpbmcgaW1hZ2VzIGRpcmVjdGx5IGZyb20gTkdDIChg" + - "bnZjci5pb2ApIGluc3RlYWQgb2YgYSBtaXJyb3JlZCByZWdpc3RyeSwgdXNpbmcgaW1hZ2UgcHVs" + - "bCBzZWNyZXRzLgoKIyMjIFN0ZXAgMTogQ29uZmlndXJlIGVudmlyb25tZW50IGZvciBOR0MKCmBg" + - "YHlhbWwKIyBlbnZpcm9ubWVudHMvPGVudj4ueWFtbApnbG9iYWw6CiAgaGVsbToKICAgIHNvdXJj" + - "ZXM6CiAgICAgIHJlZ2lzdHJ5OiBudmNyLmlvCiAgICAgIHJlcG9zaXRvcnk6IG52aWRpYS9udmNm" + - "CiAgaW1hZ2U6CiAgICByZWdpc3RyeTogbnZjci5pbwogICAgcmVwb3NpdG9yeTogbnZpZGlhL252" + - "Y2YKYGBgCgojIyMgU3RlcCAyOiBBdXRoZW50aWNhdGUgbG9jYWxseSAoZm9yIGhlbG1maWxlIGNo" + - "YXJ0IHB1bGxzKQoKYGBgYmFzaApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4n" + - "IC1wICIkTkdDX0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRo" + - "dG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmBgYAoKIyMjIFN0ZXAgMzogQ3JlYXRlIG5hbWVzcGFj" + - "ZXMgYW5kIHB1bGwgc2VjcmV0cwoKYGBgYmFzaApleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLW5n" + - "Yy1hcGkta2V5PiIKCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2Yg" + - "YXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwg" + - "LS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3BhY2UgIiRucyIg" + - "XAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpkb25lCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5" + - "c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQt" + - "bWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBj" + - "cmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNl" + - "cnZlcj1udmNyLmlvIFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAg" + - "LS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIg" + - "XAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpkb25lCmBgYAoKIyMjIFN0ZXAgNDogQWRkIGlt" + - "YWdlUHVsbFNlY3JldHMgdG8gaGVsbWZpbGUgcmVsZWFzZXMKCkFkZCB0aGUgY2hhcnQtc3BlY2lm" + - "aWMgYGltYWdlUHVsbFNlY3JldHNgIGtleSB0byBlYWNoIHJlbGVhc2UuIEV4YW1wbGUgZm9yIGNh" + - "c3NhbmRyYSBpbiBgaGVsbWZpbGUuZC8wMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGxgOgoKYGBg" + - "eWFtbAotIG5hbWU6IGNhc3NhbmRyYQogIHZlcnNpb246IDAuOC4wCiAgY29uZGl0aW9uOiBjYXNz" + - "YW5kcmEuZW5hYmxlZAogIG5hbWVzcGFjZTogY2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAqZGVwZW5k" + - "ZW5jeQogIHZhbHVlczoKICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAtIC4uLzxwcml2" + - "YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1s" + - "CiAgICAtIGNhc3NhbmRyYToKICAgICAgICBnbG9iYWw6CiAgICAgICAgICBpbWFnZVB1bGxTZWNy" + - "ZXRzOgogICAgICAgICAgICAtIG52Y3ItY3JlZHMKYGBgCgpTZWUgW3JlZmVyZW5jZXMvcHVsbC1z" + - "ZWNyZXRzLm1kXShyZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCkgZm9yIHRoZSBrZXkgZm9yIGV2" + - "ZXJ5IGNoYXJ0LgoKVGhlc2UgYXJlIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcy4gRm9yIGEgc2Vw" + - "YXJhdGUgY29tcHV0ZSBjbHVzdGVyLCBjcmVhdGUgdGhlCnNlY3JldCBvbmx5IGluIGBudmNhLW9w" + - "ZXJhdG9yYDsgdGhlIGNoYXJ0IGFuZCBvcGVyYXRvciBtaXJyb3IgaXQgdG8KYG52Y2Etc3lzdGVt" + - "YC4gU2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21w" + - "dXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCNwdWxsLXNlY3JldHMpLgoKIyMjIFN0ZXAgNTogRGVw" + - "bG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLWt1YmUtY29udGV4dCA8" + - "Y29udHJvbC1wbGFuZS1jb250ZXh0PiBzeW5jCmBgYAoKIyMjIFN0ZXAgNjogUGF0Y2ggU2Vydmlj" + - "ZUFjY291bnRzIGZvciBjaGFydHMgd2l0aG91dCBuYXRpdmUgc3VwcG9ydAoKQWZ0ZXIgUGhhc2Ug" + - "MSAoZGVwZW5kZW5jaWVzKSBjb21wbGV0ZXMsIE9wZW5CYW8gcG9kcyB3aWxsIGJlIGluIGBJbWFn" + - "ZVB1bGxCYWNrT2ZmYC4gUGF0Y2ggYW5kIHJlc3RhcnQ6CgpgYGBiYXNoCmZvciBucyBpbiB2YXVs" + - "dC1zeXN0ZW0gbnZjZiBlc3M7IGRvCiAgZm9yIHNhIGluICQoa3ViZWN0bCAtLWNvbnRleHQgPGNv" + - "bnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHNhIC1uICIkbnMiIFwKICAgIC0tbm8taGVhZGVycyAt" + - "byBjdXN0b20tY29sdW1ucz0iOm1ldGFkYXRhLm5hbWUiKTsgZG8KICAgIGt1YmVjdGwgLS1jb250" + - "ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IHBhdGNoIHNlcnZpY2VhY2NvdW50IC1uICIkbnMi" + - "ICIkc2EiIFwKICAgICAgLXAgJ3siaW1hZ2VQdWxsU2VjcmV0cyI6IFt7Im5hbWUiOiAibnZjci1j" + - "cmVkcyJ9XX0nCiAgZG9uZQpkb25lCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + - "bnRleHQ+IGRlbGV0ZSBwb2RzIC1uIHZhdWx0LXN5c3RlbSAtLWFsbApgYGAKClZlcmlmeToKCmBg" + - "YGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGV2ZW50" + - "cyAtbiB2YXVsdC1zeXN0ZW0gXAogIC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAnIHwgZ3JlcCAt" + - "aSBwdWxsCiMgU2hvdWxkIHNob3cgIlN1Y2Nlc3NmdWxseSBwdWxsZWQgaW1hZ2UiIGZyb20gbnZj" + - "ci5pbwpgYGAKCi0tLQoKIyMgRXhhbXBsZSAzOiBGdWxsIFRlYXJkb3duIGFuZCBSZWluc3RhbGwK" + - "CldoZW4gYSBkZXBsb3ltZW50IGlzIGJyb2tlbiBhbmQgeW91IG5lZWQgYSBjbGVhbiBzbGF0ZS4K" + - "CiMjIyBTdGVwIDE6IERlc3Ryb3kgdGhlIGNvbXB1dGUtcGxhbmUgc3RhY2sKCmBgYGJhc2gKbWFr" + - "ZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVS" + - "X05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJ" + - "R19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKSWYgY29tcHV0ZSBjbGVhbnVw" + - "IGlzIHN0dWNrIG9uIGZpbmFsaXplcnMsIHVzZSB0aGUgY29tcHV0ZS1jb250ZXh0IHByb2NlZHVy" + - "ZSBpbgpbZGVidWdnaW5nLm1kXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCNmYWlsdXJlLW52Y2Et" + - "Y2xlYW51cC1zdHVjay1maW5hbGl6ZXJzKS4KCiMjIyBTdGVwIDI6IERlcmVnaXN0ZXIgdGhlIGNv" + - "bXB1dGUgY2x1c3RlcgoKUmVhZCBgY2x1c3RlcklEYCBhbmQgYG5jYUlEYCBmcm9tCmBkZXBsb3kv" + - "c3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9yZWdpc3RyYXRpb24vPGNsdXN0ZXItbmFtZT4tcmVn" + - "aXN0ZXItdmFsdWVzLnlhbWxgLgpTaG93IHRoZSBJRCBhbmQgZ2V0IGNvbmZpcm1hdGlvbiBiZWZv" + - "cmUgZGVsZXRpbmcgdGhlIElDTVMgcm93OgoKYGBgYmFzaAo8bnZjZi1jbGk+IC0tY29uZmlnIDxj" + - "b25maWc+IGNsdXN0ZXIgZGVsZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1y" + - "ZWdpc3RyYXRpb24tdmFsdWVzPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1p" + - "c3NpbmcKYGBgCgpSZXBlYXQgc3RlcHMgMSBhbmQgMiBmb3IgZXZlcnkgY29tcHV0ZSBjbHVzdGVy" + - "LgoKIyMjIFN0ZXAgMzogRGVzdHJveSB0aGUgY29udHJvbC1wbGFuZSBzdGFjawoKUHJlc2VydmUg" + - "dGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3BhY2UgcHJlc2Vy" + - "dmF0aW9uIGRvZXMKbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEJlZm9yZSBydW5uaW5n" + - "IGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIKY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLiBGb3Ig" + - "YW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZQpgY2VydE1hbmFnZXIu" + - "ZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQK" + - "c3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVk" + - "OiB0cnVlYCwgdmVyaWZ5Cm1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQg" + - "YWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkCmV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNw" + - "YWNlIHJlbW92YWwgYWZ0ZXIgdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZApnZXR0" + - "aW5nIGV4cGxpY2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlIGRvIG5vdCBkZWxldGUgaXQuCgpg" + - "YGBiYXNoCktVQkVDT05GSUc9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4gXAptYWtlIC1DIGRl" + - "cGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIGRlc3Ryb3kgXAogIEhFTE1GSUxFX0VOVj08ZW52PiBc" + - "CiAgS1VCRUNPTkZJR19GSUxFPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKUGFzcyBi" + - "b3RoIGt1YmVjb25maWcgZm9ybXMgYmVjYXVzZSBjb250cm9sLXBsYW5lIG5hbWVzcGFjZSBjbGVh" + - "bnVwIHVzZXMKYW1iaWVudCBga3ViZWN0bGAuCgojIyMgU3RlcCA0OiBWZXJpZnkgY2xlYW4KCmBg" + - "YGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG5zIHwg" + - "XAogIGdyZXAgLUUgJyhudmNhfG52Y2YtYmFja2VuZHxncm92ZXxkeW5hbW8pJwprdWJlY3RsIC0t" + - "Y29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgbnMgfCBcCiAgZ3JlcCAtRSAnKGNh" + - "c3NhbmRyYXxuYXRzfHZhdWx0fG52Y2Z8YXBpLWtleXN8ZXNzfHNpcyknCiMgQm90aCBjb21tYW5k" + - "cyBzaG91bGQgcmV0dXJuIGVtcHR5LgpgYGAKCiMjIyBTdGVwIDU6IFJlaW5zdGFsbCBpbiBzcGxp" + - "dCBvcmRlcgoKRm9sbG93IFtDbGVhbiBJbnN0YWxsYXRpb25dKFNLSUxMLm1kI2NsZWFuLWluc3Rh" + - "bGxhdGlvbiksIHRoZW4gcmV0dXJuIHRvIHRoZQpzYW1lIGhhbmRvZmYgaW4gW1NwbGl0IENvbXB1" + - "dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0" + - "aW9uLm1kKS4KCi0tLQoKIyMgRXhhbXBsZSA0OiBSZWNvdmVyIGZyb20gYSBHYXRld2F5IEVuZHBv" + - "aW50IENoYW5nZQoKVGhlIHNlcGFyYXRlbHkgcHJvdmlzaW9uZWQgR2F0ZXdheSBvciBpdHMgbG9h" + - "ZCBiYWxhbmNlciB3YXMgcmVjcmVhdGVkIGFuZCBnb3QgYSBuZXcgZW5kcG9pbnQuCgojIyMgU3Rl" + - "cCAxOiBHZXQgdGhlIG5ldyBlbmRwb2ludAoKYGBgYmFzaApHQVRFV0FZX0FERFI9JChrdWJlY3Rs" + - "IC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1n" + - "YXRld2F5IC1uIGVudm95LWdhdGV3YXkgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNz" + - "ZXNbMF0udmFsdWV9JykKdGVzdCAtbiAiJEdBVEVXQVlfQUREUiIKYGBgCgojIyMgU3RlcCAyOiBV" + - "cGRhdGUgRE5TIGFuZCBkaXJlY3QgYWRkcmVzcyBmaWVsZHMKCktlZXAgYGdsb2JhbC5kb21haW5g" + - "LCByb3V0ZSBob3N0bmFtZXMsIGFuZCBDTEkgSG9zdCBmaWVsZHMgdW5jaGFuZ2VkLiBQb2ludCB0" + - "aGUKRE5TIHJlY29yZHMgZm9yIHJlbmRlcmVkIHJvdXRlIGhvc3RuYW1lcywgc3VjaCBhcyBgYXBp" + - "Ljxkb21haW4+YCBhbmQKYCouaW52b2NhdGlvbi48ZG9tYWluPmAsIHRvIGBHQVRFV0FZX0FERFJg" + - "LiBGb3IgYSB0ZW1wb3JhcnkgZW52aXJvbm1lbnQgd2l0aG91dApETlMsIGtlZXAgaXRzIHJlc2Vy" + - "dmVkIHJvdXRlIHN1ZmZpeCBhbmQgY29ubmVjdCB0byBgR0FURVdBWV9BRERSYCB3aXRoIHRoZQpt" + - "YXRjaGluZyBgSG9zdGAgaGVhZGVyLgoKRm9yIGEgc3BsaXQgZGVwbG95bWVudCBjb25maWd1cmVk" + - "IHdpdGggZGlyZWN0IEdhdGV3YXkgYWRkcmVzc2VzLCByZXBsYWNlIG9ubHkKdGhlIGFkZHJlc3Mt" + - "YmVhcmluZyB2YWx1ZXM6IGNvbnRyb2wtcGxhbmUgYG52Y2ZOYXRzU2VydmljZVVSTGAsIGNvbXB1" + - "dGUtcGxhbmUKSUNNUywgUmVWYWwsIGFuZCBOQVRTIFVSTHMsIGFuZCBDTEkgVVJMIGZpZWxkcy4g" + - "S2VlcCB0aGVpciBkb21haW4gYW5kIEhvc3QKb3ZlcnJpZGVzIHVuY2hhbmdlZC4gUmVmcmVzaCBy" + - "ZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlvbiB0aHJvdWdoIHRoZSBzYW1lCmhhbmRvZmYgdXNl" + - "ZCBvcmlnaW5hbGx5LiBTZWUKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZl" + - "cmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKQpmb3IgdGhlIGZpZWxkcyBhbmQg" + - "Y29tcGxldGUgY29tbWFuZHMuCgojIyMgU3RlcCAzOiBWZXJpZnkgYm90aCBjb250ZXh0cwoKYGBg" + - "YmFzaApkaWcgK3Nob3J0ICJhcGkuPGRvbWFpbj4iCmN1cmwgLUggIkhvc3Q6IGFwaS48ZG9tYWlu" + - "PiIgImh0dHA6Ly8kR0FURVdBWV9BRERSL2hlYWx0aCIKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAtbiBlbnZveS1n" + - "YXRld2F5IC1vIHdpZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4g" + - "Z2V0IGh0dHByb3V0ZXMgLUEKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4" + - "dD4gZ2V0IHRjcHJvdXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250" + - "ZXh0PiByb2xsb3V0IHN0YXR1cyBcCiAgZGVwbG95bWVudC9udmNhLW9wZXJhdG9yIC1uIG52Y2Et" + - "b3BlcmF0b3IgLS10aW1lb3V0PTEwbQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1j" + - "b250ZXh0PiB3YWl0IFwKICBudmNmYmFja2VuZC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+" + - "IC1uIG52Y2Etb3BlcmF0b3IgXAogIC0tZm9yPWpzb25wYXRoPSd7LnN0YXR1cy5hZ2VudFN0YXR1" + - "c30nPWhlYWx0aHkgLS10aW1lb3V0PTEwbQpgYGAKCi0tLQoKIyMgRXhhbXBsZSA1OiBEZXBsb3kg" + - "T25seSBEZXBlbmRlbmNpZXMKClVzZWZ1bCBmb3IgdGVzdGluZyBvciB3aGVuIGl0ZXJhdGluZyBv" + - "biBzZXJ2aWNlIGNvbmZpZ3VyYXRpb24uCgpgYGBiYXNoCiMgRGVwbG95IGp1c3QgTkFUUywgQ2Fz" + - "c2FuZHJhLCBPcGVuQmFvCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJl" + - "bGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMKCiMgQ2hlY2sgc3RhdHVzCmt1YmVjdGwgZ2V0" + - "IHBvZHMgLW4gbmF0cy1zeXN0ZW0Ka3ViZWN0bCBnZXQgcG9kcyAtbiBjYXNzYW5kcmEtc3lzdGVt" + - "Cmt1YmVjdGwgZ2V0IHBvZHMgLW4gdmF1bHQtc3lzdGVtCgojIERlcGxveSBqdXN0IG9uZSBzcGVj" + - "aWZpYyByZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9" + - "Y2Fzc2FuZHJhIHN5bmMKYGBgCgojIyMgU2VsZWN0b3IgcmVmZXJlbmNlCgp8IFNlbGVjdG9yIHwg" + - "UmVsZWFzZXMgfAp8LS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGByZWxlYXNlLWdyb3VwPWRlcGVu" + - "ZGVuY2llc2AgfCBuYXRzLCBjYXNzYW5kcmEsIG9wZW5iYW8tc2VydmVyIHwKfCBgcmVsZWFzZS1n" + - "cm91cD1zZXJ2aWNlc2AgfCBhcGkta2V5cywgc2lzLCBhcGksIGludm9jYXRpb24tc2VydmljZSwg" + - "Z3JwYy1wcm94eSwgZXNzLWFwaSwgbm90YXJ5LXNlcnZpY2UsIHJldmFsLCBvcHRpb25hbCBsbG0t" + - "cmVxdWVzdC1yb3V0ZXIgYW5kIGxsbS1hcGktZ2F0ZXdheSB3aGVuIGBsbG0uZW5hYmxlZD10cnVl" + - "YCwgb3B0aW9uYWwgdmFuaXR5LWdhdGV3YXkgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGlu" + - "Y2x1ZGUgdGhlIGFkZG9uIGFuZCBoYXZlIGBhZGRvbnMudmFuaXR5R2F0ZXdheS5lbmFibGVkPXRy" + - "dWVgLCBvcHRpb25hbCBudmNmLXVpIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRl" + - "IHRoZSBhZGRvbiBhbmQgaGF2ZSBgYWRkb25zLm52Y2ZVaS5lbmFibGVkPXRydWVgIHwKfCBgbmFt" + - "ZT1sbG0tcmVxdWVzdC1yb3V0ZXJgIHwgRGVwbG95IGp1c3QgdGhlIExMTSByZXF1ZXN0IHJvdXRl" + - "ciB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCB8CnwgYG5hbWU9bGxtLWFwaS1nYXRld2F5YCB8IERl" + - "cGxveSBqdXN0IHRoZSBMTE0gQVBJIGdhdGV3YXkgd2hlbiBgbGxtLmVuYWJsZWQ9dHJ1ZWAgfAp8" + - "IGBuYW1lPXZhbml0eS1nYXRld2F5YCB8IERlcGxveSBqdXN0IFZhbml0eSBHYXRld2F5IG9ubHkg" + - "d2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5kIGBhZGRvbnMu" + - "dmFuaXR5R2F0ZXdheS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1udmNmLXVpYCB8IERlcGxveSBO" + - "VkNGIFVJIG9ubHkgd2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2Ug" + - "YW5kIGBhZGRvbnMubnZjZlVpLmVuYWJsZWQ9dHJ1ZWAgfAp8IGByZWxlYXNlLWdyb3VwPWluZ3Jl" + - "c3NgIHwgaW5ncmVzcyAoZ2F0ZXdheSByb3V0ZXMpIHwKfCBgbmFtZT08cmVsZWFzZT5gIHwgQW55" + - "IGluZGl2aWR1YWwgcmVsZWFzZSBieSBuYW1lIHwKCk5vdGU6IGBhZG1pbi1pc3N1ZXItcHJveHlg" + - "IGRvZXMgbm90IGhhdmUgYSByZWxlYXNlLWdyb3VwIGxhYmVsLiBUYXJnZXQgaXQgd2l0aCBgLS1z" + - "ZWxlY3RvciBuYW1lPWFkbWluLWlzc3Vlci1wcm94eWAuClBLBwgCUk5AfygAAH8oAABQSwMEFAAI" + - "AAAAAAAhAAAAAAAAAAAAAAAAAEwACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + - "bi9yZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kVVQFAAEAps4SIyBTcGxp" + - "dCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbgoKVGhlIGNvbnRyb2wgcGxhbmUgYW5kIGNvbXB1" + - "dGUgcGxhbmUgYXJlIHNlcGFyYXRlIHN0YWNrcy4gSW5zdGFsbCB0aGUgY29udHJvbApwbGFuZSBm" + - "aXJzdCwgdGhlbiByZWdpc3RlciBhbmQgaW5zdGFsbCBlYWNoIGNvbXB1dGUgY2x1c3Rlci4gQ2hv" + - "b3NlIG9uZSBoYW5kb2ZmCmJlbG93IGFuZCB1c2UgaXQgZm9yIHRoZSBmdWxsIGxpZmVjeWNsZS4g" + - "RG8gbm90IGNvbWJpbmUgYSBDTEktZ2VuZXJhdGVkIHByb2ZpbGUKd2l0aCB0aGUgSGVsbWZpbGUg" + - "dmFsdWVzIGZsb3cuCgojIyBDaG9vc2UgYSBIYW5kb2ZmCgp8IEZsb3cgfCBTb3VyY2Ugb2YgY29u" + - "dHJvbC1wbGFuZSBlbmRwb2ludHMgfCBSZWdpc3RyYXRpb24gYXJ0aWZhY3QgfAp8LS0tLS0tfC0t" + - "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t" + - "fAp8IEhlbG1maWxlIHZhbHVlcyB8IFNlcGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUt" + - "cGxhbmUgZW52aXJvbm1lbnQgZmlsZXMgfCBgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxh" + - "bmUvcmVnaXN0cmF0aW9uLzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgfAp8IENMSSBw" + - "cm9maWxlIHwgQ0xJLWdlbmVyYXRlZCBgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2Nv" + - "bnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sYCB8IENMSS1nZW5lcmF0ZWQgYGRlcGxveS9zdGFja3Mv" + - "bnZjZi1jb21wdXRlLXBsYW5lL291dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIHwK" + - "ClRoZSBDTEkgcHJvZmlsZSBpcyBtYW5kYXRvcnkgZm9yIHRoZSBDTEkgZmxvdyBhbmQgbXVzdCBu" + - "b3QgYmUgaGFuZC1hdXRob3JlZC4KVGhlIEhlbG1maWxlIGZsb3cgZG9lcyBub3QgY29uc3VtZSBh" + - "IGNvbnRyb2wtcGxhbmUgcHJvZmlsZS4KCkNvbW1hbmRzIGJlbG93IHVzZSBtb25vcmVwbyBwYXRo" + - "cyBmcm9tIHRoZSByZXBvc2l0b3J5IHJvb3QuIE9wZXJhdG9ycyB1c2luZwpleHRyYWN0ZWQgcGFj" + - "a2FnZXMgbmVlZCBtYXRjaGluZy12ZXJzaW9uIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgYW5k" + - "CmBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXMuIFN1YnN0aXR1dGUgdGhvc2UgYnVu" + - "ZGxlIHJvb3RzIGZvcgpgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWRgIGFuZCBgZGVwbG95L3N0" + - "YWNrcy9udmNmLWNvbXB1dGUtcGxhbmVgLgoKIyMgSGVsbWZpbGUgVmFsdWVzIEZsb3cKCkNyZWF0" + - "ZSBib3RoIGVudmlyb25tZW50IGZpbGVzIGJlZm9yZSBpbnN0YWxsYXRpb246CgotIGBkZXBsb3kv" + - "c3RhY2tzL3NlbGYtbWFuYWdlZC9lbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgZm9yIGNvbnRyb2wt" + - "cGxhbmUKICByZWdpc3RyeSwgZG9tYWluLCBHYXRld2F5LCByb3V0ZXMsIGFuZCBzZXJ2aWNlIHNl" + - "dHRpbmdzLgotIGBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMv" + - "PGVudj4ueWFtbGAgZm9yIGNvbXB1dGUtcGxhbmUKICByZWdpc3RyeSwgcHVsbCBzZWNyZXRzLCBh" + - "bmQgY29tcHV0ZS1yZWFjaGFibGUgSUNNUywgUmVWYWwsIGFuZCBOQVRTIHZhbHVlcy4KCkZvciBF" + - "S1MsIHVzZSB0aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2Rv" + - "Y3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4KVGhl" + - "IGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQga2VlcHMgdGhlIEVudm95IEdhdGV3YXkgY29udHJv" + - "bGxlciBpbgpgZW52b3ktZ2F0ZXdheS1zeXN0ZW1gLCBhdHRhY2hlcyByb3V0ZXMgdG8gYEdhdGV3" + - "YXkvbnZjZi1nYXRld2F5YCBpbgpgZW52b3ktZ2F0ZXdheWAsIGFuZCBlbmFibGVzIHRoZSBOQVRT" + - "IHJvdXRlLiBUaGUgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCB1c2VzCnRoZSBleHRlcm5hbCBh" + - "ZGRyZXNzIHBsdXMgdGhlIHNlcnZpY2UgaG9zdCBvdmVycmlkZXMuIEhlcmUsCmA8Z2F0ZXdheS1h" + - "ZGRyZXNzPmAgaXMgdGhlIE5MQiBhZGRyZXNzIGFuZCBgPGdhdGV3YXktZG9tYWluPmAgaXMgdGhl" + - "IEROUyBiYXNlCndob3NlIHNlcnZpY2Ugc3ViZG9tYWlucyByZXNvbHZlIHRvIHRoYXQgTkxCOgoK" + - "YGBgeWFtbAojIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55" + - "YW1sCmdsb2JhbDoKICBkb21haW46ICI8Z2F0ZXdheS1kb21haW4+IgogIHdvcmtlckVuZHBvaW50" + - "czoKICAgIG52Y2ZTZXJ2aWNlVVJMOiAiaHR0cDovL2FwaS48Z2F0ZXdheS1kb21haW4+IgogICAg" + - "bnZjZkdycGNTZXJ2aWNlVVJMOiAiaHR0cDovL3dvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiIK" + - "ICAgIG52Y2ZOYXRzU2VydmljZVVSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNzPjo0MjIyIgog" + - "ICAgbnZjdFNlcnZpY2VVUkw6ICJodHRwOi8vdGFza3MuPGdhdGV3YXktZG9tYWluPiIKICAgIG52" + - "Y3RHcnBjU2VydmljZVVSTDogImh0dHA6Ly93b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiIK" + - "ICAgIGludm9jYXRpb25TZXJ2aWNlVVJMOiAiaHR0cDovL2ludm9jYXRpb24uPGdhdGV3YXktZG9t" + - "YWluPiIKCmdycGNwcm94eToKICBudmNmR3JwY1NlcnZpY2VVUkw6ICJodHRwOi8vYXBpLm52Y2Yu" + - "c3ZjLmNsdXN0ZXIubG9jYWw6OTA5MCIKCmluZ3Jlc3M6CiAgZ2F0ZXdheUFwaToKICAgIGNvbnRy" + - "b2xsZXJOYW1lc3BhY2U6IGVudm95LWdhdGV3YXktc3lzdGVtCiAgICBnYXRld2F5czoKICAgICAg" + - "c2hhcmVkOiB7bmFtZTogbnZjZi1nYXRld2F5LCBuYW1lc3BhY2U6IGVudm95LWdhdGV3YXl9CiAg" + - "ICAgIGdycGM6IHtuYW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheX0K" + - "ICAgICAgbmF0czoKICAgICAgICBuYW1lOiBudmNmLWdhdGV3YXkKICAgICAgICBuYW1lc3BhY2U6" + - "IGVudm95LWdhdGV3YXkKICAgICAgICBsaXN0ZW5lck5hbWU6IG5hdHMKICAgIHJvdXRlczoKICAg" + - "ICAgbnZjZkFwaToKICAgICAgICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAg" + - "ICAgaG9zdG5hbWVzOiBbIndvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG52Y3RB" + - "cGk6CiAgICAgICAgZ3JwYzoKICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgIGhvc3Ru" + - "YW1lczogWyJ3b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG5hdHM6CiAgICAg" + - "ICAgZW5hYmxlZDogdHJ1ZQoKb3BlbmJhbzoKICBtaWdyYXRpb25zOgogICAgaXNzdWVyRGlzY292" + - "ZXJ5OgogICAgICBlbmFibGVkOiB0cnVlCmBgYAoKYGBgeWFtbAojIGRlcGxveS9zdGFja3MvbnZj" + - "Zi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoKICBudmNhT3Bl" + - "cmF0b3I6CiAgICBzZWxmTWFuYWdlZDoKICAgICAgaWNtc1NlcnZpY2VVUkw6ICJodHRwOi8vPGdh" + - "dGV3YXktYWRkcmVzcz4iCiAgICAgIGljbXNTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAic2lz" + - "LjxnYXRld2F5LWRvbWFpbj4iCiAgICAgIHJldmFsU2VydmljZVVSTDogImh0dHA6Ly88Z2F0ZXdh" + - "eS1hZGRyZXNzPiIKICAgICAgcmV2YWxTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAicmV2YWwu" + - "PGdhdGV3YXktZG9tYWluPiIKICAgICAgbmF0c1VSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNz" + - "Pjo0MjIyIgogICAgICBuYXRzSG9zdE92ZXJyaWRlOiAibmF0cy48Z2F0ZXdheS1kb21haW4+Igpg" + - "YGAKClByZXZpZXcgYW5kIGluc3RhbGwgdGhlIGNvbnRyb2wgcGxhbmUgYWdhaW5zdCBpdHMgY29u" + - "dGV4dDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCB0ZW1wbGF0" + - "ZSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxh" + - "bmUta3ViZWNvbmZpZz4KCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgaW5zdGFs" + - "bCBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxh" + - "bmUta3ViZWNvbmZpZz4KYGBgCgpCZWZvcmUgcmVnaXN0ZXJpbmcgdGhyb3VnaCBhIGJhcmUgR2F0" + - "ZXdheSBhZGRyZXNzLCBjcmVhdGUgb3IgdXBkYXRlIHRoZSBDTEkKY29uZmlnIHBhc3NlZCBhcyBg" + - "TlZDRl9DTElfQ09ORklHYDoKCmBgYHlhbWwKYmFzZV9odHRwX3VybDogImh0dHA6Ly88Z2F0ZXdh" + - "eS1hZGRyZXNzPiIKaW52b2tlX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKYmFzZV9n" + - "cnBjX3VybDogIjxnYXRld2F5LWFkZHJlc3M+OjEwMDgxIgphcGlfa2V5c19zZXJ2aWNlX3VybDog" + - "Imh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKaWNtc191cmw6ICJodHRwOi8vPGdhdGV3YXktYWRk" + - "cmVzcz4iCmFwaV9ob3N0OiAiYXBpLjxnYXRld2F5LWRvbWFpbj4iCmFwaV9rZXlzX2hvc3Q6ICJh" + - "cGkta2V5cy48Z2F0ZXdheS1kb21haW4+IgppbnZva2VfaG9zdDogImludm9jYXRpb24uPGdhdGV3" + - "YXktZG9tYWluPiIKaWNtc19ob3N0OiAic2lzLjxnYXRld2F5LWRvbWFpbj4iCmBgYAoKSG9zdCBm" + - "aWVsZHMgY29udGFpbiBob3N0bmFtZXMgb25seSwgd2l0aG91dCBhIFVSTCBzY2hlbWUuIGBJQ01T" + - "X1VSTGAgbWFwcyBvbmx5CnRvIHRoZSByZWdpc3RyYXRpb24gY29tbWFuZCdzIGAtLWljbXMtdXJs" + - "YDsgYGljbXNfaG9zdGAgaW4gdGhlIGNvbmZpZyBzdXBwbGllcwp0aGUgR2F0ZXdheSBIb3N0IGhl" + - "YWRlci4gVGhlcmUgaXMgbm8gYC0taWNtcy1ob3N0YCBNYWtlIG9yIENMSSBmbGFnLgoKUmVnaXN0" + - "ZXIgZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0LCB0aGVuIGluc3RhbGwgdGhlIGNvbXB1dGUgcGxh" + - "bmU6CgpgYGBiYXNoCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVn" + - "aXN0ZXItY2x1c3RlciBcCiAgQ0xVU1RFUl9OQU1FPTxjbHVzdGVyLW5hbWU+IFwKICBOQ0FfSUQ9" + - "PG5jYS1pZD4gXAogIENMVVNURVJfUkVHSU9OPTxyZWdpb24+IFwKICBJQ01TX1VSTD1odHRwOi8v" + - "PGdhdGV3YXktYWRkcmVzcz4gXAogIEtVQkVDT05GSUdfRklMRT08Y29tcHV0ZS1wbGFuZS1rdWJl" + - "Y29uZmlnPiBcCiAgTlZDRl9DTEk9PHBhdGgtdG8tbnZjZi1jbGk+IFwKICBOVkNGX0NMSV9DT05G" + - "SUc9PHBhdGgtdG8tbnZjZi1jbGktY29uZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2Yt" + - "Y29tcHV0ZS1wbGFuZSBpbnN0YWxsIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAog" + - "IEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1" + - "YmVjb25maWc+CmBgYAoKUmVnaXN0cmF0aW9uIGRpc2NvdmVycyB0aGUgT0lEQyBpc3N1ZXIgYW5k" + - "IEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBrdWJlIGNvbnRleHQuCkluIGEgbXVsdGktY2x1c3RlciBk" + - "ZXBsb3ltZW50LCBgS1VCRUNPTkZJR19GSUxFYCBpcyByZXF1aXJlZCBvbiBib3RoCmNvbXB1dGUt" + - "cGxhbmUgY29tbWFuZHMuIEluIGEgc2FtZS1jbHVzdGVyIGRlcGxveW1lbnQgaXQgbWF5IGJlIG9t" + - "aXR0ZWQgb25seQp3aGVuIHRoZSBhbWJpZW50IGNvbnRleHQgaXMgYWxyZWFkeSB0aGUgdGFyZ2V0" + - "IGNsdXN0ZXIuCgojIyBDTEkgUHJvZmlsZSBGbG93CgpSdW4gdGhlIENMSSBjb250cm9sLXBsYW5l" + - "IGluc3RhbGwgZmlyc3QuIEl0IGNyZWF0ZXMgdGhlIHByb2ZpbGUgY29uc3VtZWQgYnkKY29tcHV0" + - "ZS1wbGFuZSByZWdpc3RyYXRpb246CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+" + - "IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxm" + - "LW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29t" + - "cHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFu" + - "ZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29u" + - "dGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmUg" + - "XAogIC0tY2x1c3Rlci1uYW1lIDxjb250cm9sLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tcmVn" + - "aW9uIDxyZWdpb24+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKdGVzdCAtcyBkZXBsb3kvc3RhY2tz" + - "L3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWwKYGBgCgpVc2UgdGhl" + - "IGZ1bGwgcGVyc2lzdGVudCBwcmVmaXggZm9yIGJvdGggY29tcHV0ZS1wbGFuZSBjb21tYW5kczoK" + - "CmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29u" + - "dHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRl" + - "LXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8" + - "ZW52PiBcCiAgLS1wbGFpbiBcCiAgY29tcHV0ZS1wbGFuZSByZWdpc3RlciBcCiAgLS1jb250cm9s" + - "LXBsYW5lLXByb2ZpbGUgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxh" + - "bmUtcHJvZmlsZS55YW1sIFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVy" + - "LW5hbWU+IFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1y" + - "ZWdpb24gPHJlZ2lvbj4gXAogIC0tb3V0cHV0IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBs" + - "YW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1s" + - "CgpudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBs" + - "YW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUt" + - "c3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwK" + - "ICAtLXBsYWluIFwKICBjb21wdXRlLXBsYW5lIGluc3RhbGwgXAogIC0tdmFsdWVzIGRlcGxveS9z" + - "dGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+" + - "LXJlZ2lzdGVyLXZhbHVlcy55YW1sIFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1j" + - "b250ZXh0PiBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPgpg" + - "YGAKClJlZ2lzdHJhdGlvbiBzZWxlY3RzIHRoZSBwcm9maWxlJ3MgaW4tY2x1c3RlciBvciBjb21w" + - "dXRlLXJlYWNoYWJsZSBlbmRwb2ludHMKZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0IGFuZCBwcm9i" + - "ZXMgaXRzIEpXS1MuIERvIG5vdCByZXBsYWNlIHByb2ZpbGUgZW5kcG9pbnRzCndpdGggaGFuZC1h" + - "dXRob3JlZCBIZWxtZmlsZSBlbmRwb2ludCB2YWx1ZXMuCgojIyBQdWxsIFNlY3JldHMKCkNyZWF0" + - "ZSB0aGUgY29udHJvbC1wbGFuZSBzZWNyZXQgaW4gdGhlc2UgbmFtZXNwYWNlcyBvbiB0aGUgY29u" + - "dHJvbC1wbGFuZQpjb250ZXh0OgoKYGBgdGV4dApjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVt" + - "IG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyCmBgYAoKT24g" + - "dGhlIGNvbXB1dGUgY29udGV4dCwgY3JlYXRlIHRoZSBzZWNyZXQgb25seSBpbiBgbnZjYS1vcGVy" + - "YXRvcmAgYW5kIHJlZmVyZW5jZQppdCB0aHJvdWdoIGBnbG9iYWwuaW1hZ2VQdWxsU2VjcmV0c2Ag" + - "aW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQuIFRoZSBjaGFydAphbmQgb3BlcmF0b3Ig" + - "dXNlIGl0IGluIGBudmNhLW9wZXJhdG9yYCBhbmQgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWAu" + - "IERvIG5vdCBhZGQKZWl0aGVyIG5hbWVzcGFjZSB0byB0aGUgY29udHJvbC1wbGFuZSBsaXN0LiBG" + - "b3IgY29tbWFuZHMgYW5kIHBvbGljeSBleGFtcGxlcywKc2VlIFtwdWxsLXNlY3JldHMubWRdKHB1" + - "bGwtc2VjcmV0cy5tZCkuCgojIyBWZXJpZmljYXRpb24KClVzZSB0aGUgZXhwbGljaXQgR2F0ZXdh" + - "eSBuYW1lIGFuZCBuYW1lc3BhY2U6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9s" + - "LXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5IG52Y2YtZ2F0ZXdheSBcCiAgLW4gZW52b3ktZ2F0" + - "ZXdheSAtbyB3aWRlCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdl" + - "dCB0Y3Byb3V0ZSAtbiBlbnZveS1nYXRld2F5Cmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBs" + - "YW5lLWNvbnRleHQ+IHJvbGxvdXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Etb3BlcmF0b3Ig" + - "LW4gbnZjYS1vcGVyYXRvciAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + - "LXBsYW5lLWNvbnRleHQ+IHdhaXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBsYW5lLWNsdXN0" + - "ZXItbmFtZT4gLW4gbnZjYS1vcGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3suc3RhdHVzLmFn" + - "ZW50U3RhdHVzfSc9aGVhbHRoeSAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21w" + - "dXRlLXBsYW5lLWNvbnRleHQ+IGdldCBzZWNyZXQgPHB1bGwtc2VjcmV0PiAtbiBudmNhLXN5c3Rl" + - "bQpgYGAKCiMjIFRlYXJkb3duCgpEZXN0cm95IGFuZCBkZXJlZ2lzdGVyIGV2ZXJ5IGNvbXB1dGUg" + - "cGxhbmUgYmVmb3JlIHRoZSBjb250cm9sIHBsYW5lLiBCb3RoCmhhbmRvZmZzIGNhbiBkZXN0cm95" + - "IHRoZSBjb250cm9sIHBsYW5lLCBzbyBhcHBseSB0aGlzIHByZWZsaWdodCBiZWZvcmUgZWl0aGVy" + - "Cm9uZS4gUHJlc2VydmUgdGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBO" + - "YW1lc3BhY2UgcHJlc2VydmF0aW9uCmRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2Uu" + - "IElkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLgpGb3IgYW4gZXh0ZXJu" + - "YWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIuZW5hYmxlZDog" + - "ZmFsc2VgCmFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFu" + - "YWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlCmBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwg" + - "dmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQKYWJvcnQgb24g" + - "bWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNwYWNlIHJlbW92" + - "YWwgYWZ0ZXIKdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBnZXR0aW5nIGV4cGxp" + - "Y2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlCmRvIG5vdCBkZWxldGUgaXQuCgpGb3IgdGhlIEhl" + - "bG1maWxlIHZhbHVlcyBmbG93LCByZXRhaW4gZWFjaCByZWdpc3RyYXRpb24gdmFsdWVzIGZpbGUg" + - "dW50aWwKY2xlYW51cCBpcyB2ZXJpZmllZDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tz" + - "L252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFt" + - "ZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBs" + - "YW5lLWt1YmVjb25maWc+Cgo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNsdXN0ZXIgZGVs" + - "ZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1yZWdpc3RyYXRpb24tdmFsdWVz" + - "PiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBgCgpSZWFkIGBj" + - "bHVzdGVySURgIGFuZCBgbmNhSURgIGZyb20KYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBs" + - "YW5lL3JlZ2lzdHJhdGlvbi88Y2x1c3Rlci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuClNo" + - "b3cgdGhlIGV4YWN0IGNsdXN0ZXIgSUQgYW5kIGdldCBjb25maXJtYXRpb24gYmVmb3JlIGBjbHVz" + - "dGVyIGRlbGV0ZWAuIFJlcGVhdApjb21wdXRlIGRlc3Ryb3kgYW5kIGRlcmVnaXN0cmF0aW9uIGZv" + - "ciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRoZW4gZGVzdHJveSB0aGUKY29udHJvbCBwbGFuZS4K" + - "CmBgYGJhc2gKS1VCRUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBcCm1ha2UgLUMg" + - "ZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+" + - "IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpCb3Ro" + - "IGBLVUJFQ09ORklHYCBhbmQgYEtVQkVDT05GSUdfRklMRWAgYXJlIHJlcXVpcmVkIG9uIHRoZSBj" + - "b250cm9sLXBsYW5lCmRlc3Ryb3kgYmVjYXVzZSBpdHMgbmFtZXNwYWNlIGNsZWFudXAgdXNlcyBh" + - "bWJpZW50IGBrdWJlY3RsYC4KCkZvciB0aGUgQ0xJIHByb2ZpbGUgZmxvdywga2VlcApgZGVwbG95" + - "L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvb3V0LzxjbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZh" + - "bHVlcy55YW1sYAp1bnRpbCB0ZWFyZG93biBjb21wbGV0ZXMgYmVjYXVzZSBgZG93bmAgcmVhZHMg" + - "aXRzIGNsdXN0ZXIgSUQuIEZpcnN0IHF1ZXJ5IHRoZQpsaXZlIHJlZ2lzdHJhdGlvbiBzZXQgd2l0" + - "aCB0aGUgc2FtZSBjb21wbGV0ZSBwZXJzaXN0ZW50IHByZWZpeDoKCmBgYGJhc2gKbnZjZi1jbGkg" + - "LS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBk" + - "ZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxv" + - "eS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBc" + - "CiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0t" + - "Y29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMt" + - "dXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAogIHN0YXR1cyBcCiAgLS1jbHVzdGVy" + - "LW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4K" + - "YGBgCgpTaG93IHRoZSByZWdpc3RlcmVkIGNvbXB1dGUtcGxhbmUgbGlzdC4gTmFtZWQtY2x1c3Rl" + - "ciBgZG93biAtLXBsYW4tb25seWAgZG9lcwpub3QgcXVlcnkgSUNNUywgc28gaXQgcHJldmlld3Mg" + - "b25seSB0aGF0IGNvbXB1dGUgcGxhbmUgYW5kIGNhbm5vdCBzaG93IHRoZQpjb25kaXRpb25hbCBj" + - "b250cm9sLXBsYW5lIHJlbW92YWwuIElmIHRoZSB0YXJnZXQgaXMgdGhlIGxhc3QgcmVnaXN0ZXJl" + - "ZApjbHVzdGVyLCByZWFsIGBkb3duYCBhbHNvIGRlc3Ryb3lzIHRoZSBjb250cm9sIHBsYW5lLiBH" + - "ZXQgZXhwbGljaXQgY29uZmlybWF0aW9uCmZvciBib3RoIHJlbW92YWxzIGJlZm9yZSBjb250aW51" + - "aW5nLiBUaGVuIHByZXZpZXcgYW5kIGV4ZWN1dGUgd2l0aCB0aGUgc2FtZQpwcmVmaXg6CgpgYGBi" + + "IHRha2luZyBhY3Rpb24iLAogICAgICAiRm9yIGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciwgdGhlIEhl" + + "bG1maWxlIGZsb3cgcmFuIHRoZSBjb21wdXRlLXBsYW5lIE1ha2VmaWxlIGRlc3Ryb3kgdGFyZ2V0" + + "IHdpdGggaXRzIGNvbXB1dGUga3ViZWNvbmZpZyIsCiAgICAgICJBZnRlciBjb25maXJtYXRpb24s" + + "IHRoZSBIZWxtZmlsZSBmbG93IHJhbiBjbHVzdGVyIGRlbGV0ZSB3aXRoIGNsdXN0ZXJJRCBhbmQg" + + "bmNhSUQgYmVmb3JlIGNvbnRyb2wtcGxhbmUgZGVzdHJ1Y3Rpb24iLAogICAgICAiQmVmb3JlIGVp" + + "dGhlciBoYW5kb2ZmIGNvdWxkIGRlc3Ryb3kgdGhlIGNvbnRyb2wgcGxhbmUsIGJvdGggdGVhcmRv" + + "d24gZmxvd3Mgd2FybmVkIHRoYXQgbmFtZXNwYWNlIHByZXNlcnZhdGlvbiBkb2VzIG5vdCBwcmVz" + + "ZXJ2ZSB0aGUgSGVsbSByZWxlYXNlLCByZXF1aXJlZCBlZmZlY3RpdmUgY2VydE1hbmFnZXIuZW5h" + + "YmxlZDogZmFsc2UgZm9yIGFuIGV4dGVybmFsIGluc3RhbGxhdGlvbiBhbmQgYWJvcnRlZCBpZiB0" + + "cnVlLCBhbmQgdmVyaWZpZWQgaW50ZW5kZWQgc3RhY2sgb3duZXJzaGlwIHdoZW4gZW5hYmxlZCwg" + + "YWJvcnRpbmcgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlIiwKICAgICAgIkJvdGgg" + + "dGVhcmRvd24gZmxvd3MgcHJlc2VydmVkIHRoZSBjZXJ0LW1hbmFnZXIgbmFtZXNwYWNlIGJ5IGRl" + + "ZmF1bHQgYW5kIGRpZCBub3QgZGVsZXRlIGl0IHdpdGhvdXQgbmFtZXNwYWNlIHByb3ZlbmFuY2Ug" + + "YW5kIGV4cGxpY2l0IGNvbmZpcm1hdGlvbiIsCiAgICAgICJUaGUgSGVsbWZpbGUgZmxvdyByYW4g" + + "Y29udHJvbC1wbGFuZSBNYWtlZmlsZSBkZXN0cm95IHdpdGggYm90aCBLVUJFQ09ORklHIGFuZCBL" + + "VUJFQ09ORklHX0ZJTEUiLAogICAgICAiVGhlIENMSSBmbG93IHJldGFpbmVkIG91dC88Y2x1c3Rl" + + "ci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbCB1bnRpbCB0ZWFyZG93biBjb21wbGV0ZWQiLAog" + + "ICAgICAiQmVmb3JlIHJlYWwgZG93biwgdGhlIENMSSBmbG93IHVzZWQgdGhlIGZ1bGwtcHJlZml4" + + "IHN0YXR1cyBjb21tYW5kIHRvIGluc3BlY3QgbGl2ZSByZWdpc3RyYXRpb25zLCBzdGF0ZWQgdGhh" + + "dCBuYW1lZC1jbHVzdGVyIHBsYW4tb25seSBkb2VzIG5vdCBxdWVyeSBJQ01TIGFuZCBjYW5ub3Qg" + + "cHJlZGljdCBjb25kaXRpb25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwsIHdhcm5lZCB3aGVuIHRo" + + "ZSB0YXJnZXQgd2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3RlciwgYW5kIGdvdCBleHBsaWNp" + + "dCBjb25maXJtYXRpb24iLAogICAgICAiVGhlIENMSSBmbG93IHVzZWQgLS1jb25maWcsIGJvdGgg" + + "c3RhY2sgcGF0aHMsIC0tZW52LCAtLXBsYWluLCBib3RoIGNvbnRleHRzLCBhbmQgLS1pY21zLXVy" + + "bCBmb3IgZG93biAtLXBsYW4tb25seSBhbmQgdGhlbiBkb3duIiwKICAgICAgIlRoZSBhZ2VudCBz" + + "dGF0ZWQgdGhhdCBkb3duIHVucmVnaXN0ZXJzIGVhY2ggY29tcHV0ZSBjbHVzdGVyIGFuZCByZW1v" + + "dmVzIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgbm8gcmVnaXN0cmF0aW9ucyByZW1haW4i" + + "CiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzEzLXZhbHVlcy1wcmVjZWRlbmNlIiwKICAgICJx" + + "dWVzdGlvbiI6ICJJIGFkZGVkIGEgdmFsdWUgdG8gbXkgZW52aXJvbm1lbnQgWUFNTCBidXQgaXQn" + + "cyBiZWluZyBzaWxlbnRseSBpZ25vcmVkLiBIb3cgZG8gaGVsbWZpbGUgdmFsdWVzIHdvcmsgaW4g" + + "TlZDRj8iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxh" + + "dGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBleHBsYWluZWQgdGhlIHZhbHVl" + + "cyBwcmVjZWRlbmNlIGNoYWluIChiYXNlLnlhbWwsIGVudiBZQU1MLCBnbG9iYWwueWFtbC5nb3Rt" + + "cGwsIHNlY3JldHMsIGlubGluZSB2YWx1ZXMpLCBpZGVudGlmaWVkIHRoYXQgZ2xvYmFsLnlhbWwu" + + "Z290bXBsIG9ubHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMga2V5cywgYW5kIGV4cGxhaW5lZCB0" + + "aGF0IGFyYml0cmFyeSBjaGFydCB2YWx1ZXMgbXVzdCB1c2UgcmVsZWFzZSBpbmxpbmUgdmFsdWVz" + + "IGJsb2Nrcy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJl" + + "YWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFr" + + "aW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSB2YWx1ZXMgcHJlY2Vk" + + "ZW5jZSBjaGFpbjogYmFzZS55YW1sIC0+IGVudiBZQU1MIC0+IGdsb2JhbC55YW1sLmdvdG1wbCAt" + + "PiBzZWNyZXRzIC0+IGlubGluZSB2YWx1ZXMiLAogICAgICAiVGhlIGFnZW50IGlkZW50aWZpZWQg" + + "dGhhdCBnbG9iYWwueWFtbC5nb3RtcGwgb25seSBwYXNzZXMgdGhyb3VnaCBzcGVjaWZpYyBrZXlz" + + "IChjYXNzYW5kcmEucmVwbGljYUNvdW50LCBnbG9iYWwuc3RvcmFnZUNsYXNzLCBnbG9iYWwuaW1h" + + "Z2UsIGV0Yy4pIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCBhcmJpdHJhcnkgY2hh" + + "cnQgdmFsdWVzIG11c3QgYmUgc2V0IHZpYSByZWxlYXNlIGlubGluZSB2YWx1ZXM6IGJsb2NrcyIs" + + "CiAgICAgICJUaGUgYWdlbnQgbGlzdGVkIGV4YW1wbGVzIG9mIHZhbHVlcyB0aGF0IGFyZSBwcm9w" + + "YWdhdGVkIGFuZCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzIHRoYXQgcmVxdWlyZSBhIHJlbGVhc2Ug" + + "dmFsdWVzIGJsb2NrIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMxNC1lbmFibGUtbGxtLWZ1" + + "bmN0aW9ucyIsCiAgICAicXVlc3Rpb24iOiAiSSBuZWVkIHRvIGRlcGxveSBmdW5jdGlvblR5cGU6" + + "IExMTSBmdW5jdGlvbnMgb24gYSBzZWxmLW1hbmFnZWQsIHNpbmdsZS1ub2RlIGlzb2xhdGVkIHRl" + + "c3QgY2x1c3Rlci4gV2hhdCBIZWxtZmlsZSBjb25maWd1cmF0aW9uIGFuZCB2ZXJpZmljYXRpb24g" + + "c3RlcHMgZG8gSSBuZWVkPyIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFn" + + "ZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGVuYWJsZWQg" + + "dGhlIExMTSBhZGRvbiB3aXRoIGFkZG9ucy5sbG0uZW5hYmxlZCwgY29uZmlndXJlZCBzaW5nbGUg" + + "cmVwbGljYXMgZm9yIHRoZSBMTE0gQVBJIEdhdGV3YXkgYW5kIHJlcXVlc3Qgcm91dGVyLCBhbmQg" + + "ZXhwbGFpbmVkIHRoYXQgdGhlIHJlcXVlc3Qgcm91dGVyIHVzZXMgcG93ZXItb2YtdHdvIHdoZW4g" + + "bm8gbG9hZC1iYWxhbmNlciBjb25maWd1cmF0aW9uIGlzIHNldC4gSXQgbGlua2VkIHRoZSBjYW5v" + + "bmljYWwgcmVxdWVzdC1yb3V0ZXIgbG9hZC1iYWxhbmNpbmcgZ3VpZGUgZm9yIG90aGVyIHJvdXRp" + + "bmcgbWV0aG9kcy4gRm9yIHRoZSBpc29sYXRlZCBwbGFpbnRleHQgY2x1c3RlciwgaXQgaW5jbHVk" + + "ZWQgYm90aCBhZGRvbnMubGxtLmdhdGV3YXkuYXV0aC5ncnBjSW5zZWN1cmUgYW5kIGFnZW50Q29u" + + "ZmlnLm1lcmdlQ29uZmlnLndvcmtsb2FkLnN0YXJnYXRlUVVJQ0luc2VjdXJlLCB3aXRoIGEgd2Fy" + + "bmluZyB0aGF0IHRob3NlIHNldHRpbmdzIGFyZSBub3QgZm9yIHByb2R1Y3Rpb24uIEl0IHJlZnJl" + + "c2hlZCB0aGUgY29tcHV0ZSBwbGFuZSB1c2luZyB0aGUgc2FtZSBoYW5kb2ZmIHVzZWQgZHVyaW5n" + + "IGluc3RhbGxhdGlvbiwgcmVkZXBsb3llZCBleGlzdGluZyBMTE0gZnVuY3Rpb25zLCBhbmQgdmVy" + + "aWZpZWQgdGhlIExMTSBkZXBsb3ltZW50cywgcm91dGUsIGFuZCBsbG0td29ya2VyIHNpZGVjYXIu" + + "IiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCB1c2VkIGFkZG9u" + + "cy5sbG0uZW5hYmxlZCwgbm90IHRoZSBvYnNvbGV0ZSBsbG0uZW5hYmxlZCBwYXRoIiwKICAgICAg" + + "IlRoZSBhZ2VudCBzZXQgZ2F0ZXdheSBhbmQgcmVxdWVzdFJvdXRlciByZXBsaWNhQ291bnQgdG8g" + + "MSBmb3IgdGhlIHNpbmdsZS1ub2RlIHRlc3QgY2x1c3RlciIsCiAgICAgICJUaGUgYWdlbnQgc3Rh" + + "dGVkIHRoYXQgdGhlIHJlcXVlc3Qgcm91dGVyIGRlZmF1bHRzIHRvIHBvd2VyLW9mLXR3byBhbmQg" + + "bGlua2VkIHRoZSBjYW5vbmljYWwgcmVxdWVzdC1yb3V0ZXIgbG9hZC1iYWxhbmNpbmcgZ3VpZGUg" + + "Zm9yIG90aGVyIG1ldGhvZHMiLAogICAgICAiVGhlIGFnZW50IGluY2x1ZGVkIGFkZG9ucy5sbG0u" + + "Z2F0ZXdheS5hdXRoLmdycGNJbnNlY3VyZSBhbmQgd29ya2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1" + + "cmUgZm9yIHRoZSBpc29sYXRlZCBwbGFpbnRleHQgY2x1c3RlciwgYW5kIHdhcm5lZCBhZ2FpbnN0" + + "IHVzaW5nIHRoZW0gaW4gcHJvZHVjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgYXBwbGllZCB0aGUg" + + "Y29udHJvbC1wbGFuZSBIZWxtZmlsZSBlbnZpcm9ubWVudCwgcmVmcmVzaGVkIHRoZSBjb21wdXRl" + + "IHBsYW5lIHdpdGggdGhlIHNhbWUgc2VsZWN0ZWQgaGFuZG9mZiwgYW5kIHJlY3JlYXRlZCBvciBy" + + "ZWRlcGxveWVkIGV4aXN0aW5nIExMTSBmdW5jdGlvbnMiLAogICAgICAiVGhlIGFnZW50IHZlcmlm" + + "aWVkIGxsbS1hcGktZ2F0ZXdheSwgbGxtLXJlcXVlc3Qtcm91dGVyLCB0aGUgTExNIEhUVFBSb3V0" + + "ZSwgYW5kIHRoZSBsbG0td29ya2VyIHNpZGVjYXIgaW5jbHVkaW5nIC0tcXVpYy1pbnNlY3VyZSIK" + + "ICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJHOC1ORUctbm90LWZvci1rM2QiLAogICAgInF1ZXN0" + + "aW9uIjogIlNldCB1cCBhIGxvY2FsIE5WQ0YgZGV2IGNsdXN0ZXIgdXNpbmcgazNkIGZvciB0ZXN0" + + "aW5nIiwKICAgICJleHBlY3RlZF9za2lsbCI6IG51bGwsCiAgICAic2hvdWxkX3RyaWdnZXIiOiBm" + + "YWxzZSwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhpcyBpcyBhIGxvY2FsIGszZCBkZXZlbG9wbWVu" + + "dCByZXF1ZXN0IHRoYXQgYmVsb25ncyB0byB0aGUgbnZjZi1zZWxmLWhvc3RlZC1sb2NhbC1kZXYg" + + "c2tpbGwsIG5vdCBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24uIFRoZSBhZ2VudCBkaWQg" + + "bm90IHJlYWQgb3IgdXNlIHRoZSBzZWxmLW1hbmFnZWQgaW5zdGFsbGF0aW9uIHNraWxsIGFuZCBp" + + "bnN0ZWFkIHByb3ZpZGVkIGszZC1zcGVjaWZpYyBndWlkYW5jZS4iLAogICAgImV4cGVjdGVkX2Jl" + + "aGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IGRpZCBub3QgcmVhZCBudmNmLXNlbGYtbWFuYWdl" + + "ZC1pbnN0YWxsYXRpb24vU0tJTEwubWQiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgcHJvdmlk" + + "ZSBoZWxtZmlsZS1iYXNlZCBwcm9kdWN0aW9uIGRlcGxveW1lbnQgaW5zdHJ1Y3Rpb25zIiwKICAg" + + "ICAgIlRoZSBhZ2VudCBwcm92aWRlZCBrM2Qtc3BlY2lmaWMgbG9jYWwgZGV2ZWxvcG1lbnQgZ3Vp" + + "ZGFuY2Ugb3IgZGVmZXJyZWQgdG8gdGhlIGFwcHJvcHJpYXRlIGxvY2FsLWRldiBza2lsbCIKICAg" + + "IF0KICB9Cl0KUEsHCCsTuD+tVQAArVUAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAALwAJAGRh" + + "dGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL2V4YW1wbGVzLm1kVVQFAAEAps4SIyBF" + + "eGFtcGxlcwoKV29ya2VkIGV4YW1wbGVzIGJhc2VkIG9uIHJlYWwgZGVwbG95bWVudCBzY2VuYXJp" + + "b3MuCgojIyBFeGFtcGxlIDE6IE92ZXJyaWRlIENhc3NhbmRyYSBSZXNvdXJjZXMKClRoZSBkZWZh" + + "dWx0IENhc3NhbmRyYSByZXNvdXJjZSBsaW1pdHMgY2F1c2UgT09NIG9uIGxhcmdlIGluc3RhbmNl" + + "IHR5cGVzIChlLmcuLCBgcDUuNDh4bGFyZ2VgKS4KClByb2JsZW06IENhc3NhbmRyYSBwb2RzIHJl" + + "c3RhcnQgd2l0aCBgT09NS2lsbGVkYC4KClNvbHV0aW9uOiBPdmVycmlkZSByZXNvdXJjZXMgdmlh" + + "IGhlbG1maWxlIHJlbGVhc2UgdmFsdWVzIGJsb2NrLgoKIyMjIFN0ZXAgMTogQ2FwdHVyZSBiYXNl" + + "bGluZQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1l" + + "PWNhc3NhbmRyYSB0ZW1wbGF0ZSA+IC90bXAvY2Fzcy1iZWZvcmUueWFtbApncmVwIC1BOCAncmVz" + + "b3VyY2VzOicgL3RtcC9jYXNzLWJlZm9yZS55YW1sIHwgaGVhZCAtMTAKYGBgCgojIyMgU3RlcCAy" + + "OiBBZGQgb3ZlcnJpZGUgdG8gaGVsbWZpbGUuZC8wMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGwK" + + "CkluIHRoZSBleGFtcGxlcyBiZWxvdywgYDxwcml2YXRlLXZhbHVlcz5gIHJlZmVycyB0byB0aGUg" + + "YHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxlIHN0YWNrIHJvb3QuCgpgYGB5YW1s" + + "Ci0gbmFtZTogY2Fzc2FuZHJhCiAgdmVyc2lvbjogMC44LjAKICBjb25kaXRpb246IGNhc3NhbmRy" + + "YS5lbmFibGVkCiAgbmFtZXNwYWNlOiBjYXNzYW5kcmEtc3lzdGVtCiAgPDw6ICpkZXBlbmRlbmN5" + + "CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwKICAgIC0gLi4vPHByaXZhdGUt" + + "dmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwKICAg" + + "IC0gY2Fzc2FuZHJhOgogICAgICAgIHJlc291cmNlczoKICAgICAgICAgIGxpbWl0czoKICAgICAg" + + "ICAgICAgY3B1OiAiOCIKICAgICAgICAgICAgbWVtb3J5OiA4MTkyTWkKICAgICAgICAgIHJlcXVl" + + "c3RzOgogICAgICAgICAgICBjcHU6ICIyIgogICAgICAgICAgICBtZW1vcnk6IDQwOTZNaQpgYGAK" + + "CiMjIyBTdGVwIDM6IFZlcmlmeSBhbmQgYXBwbHkKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+" + + "IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUgPiAvdG1wL2Nhc3Mt" + + "YWZ0ZXIueWFtbApkaWZmIC90bXAvY2Fzcy1iZWZvcmUueWFtbCAvdG1wL2Nhc3MtYWZ0ZXIueWFt" + + "bCAgIyBDb25maXJtIHJlc291cmNlcyBjaGFuZ2VkCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmls" + + "ZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMKYGBgCgpOb3RlOiBgcmVzb3VyY2VQcmVz" + + "ZXRgIChhIEJpdG5hbWkgZmVhdHVyZSkgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgTlZDRiBjYXNz" + + "YW5kcmEgd3JhcHBlciBjaGFydC4gVXNlIGV4cGxpY2l0IGByZXNvdXJjZXNgIGluc3RlYWQuCgot" + + "LS0KCiMjIEV4YW1wbGUgMjogRGVwbG95IGZyb20gTkdDIFByaXZhdGUgUmVnaXN0cnkgd2l0aCBQ" + + "dWxsIFNlY3JldHMKCkRlcGxveSB0aGUgTlZDRiBzdGFjayBwdWxsaW5nIGltYWdlcyBkaXJlY3Rs" + + "eSBmcm9tIE5HQyAoYG52Y3IuaW9gKSBpbnN0ZWFkIG9mIGEgbWlycm9yZWQgcmVnaXN0cnksIHVz" + + "aW5nIGltYWdlIHB1bGwgc2VjcmV0cy4KCiMjIyBTdGVwIDE6IENvbmZpZ3VyZSBlbnZpcm9ubWVu" + + "dCBmb3IgTkdDCgpgYGB5YW1sCiMgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwKZ2xvYmFsOgogIGhl" + + "bG06CiAgICBzb3VyY2VzOgogICAgICByZWdpc3RyeTogbnZjci5pbwogICAgICByZXBvc2l0b3J5" + + "OiBudmlkaWEvbnZjZgogIGltYWdlOgogICAgcmVnaXN0cnk6IG52Y3IuaW8KICAgIHJlcG9zaXRv" + + "cnk6IG52aWRpYS9udmNmCmBgYAoKIyMjIFN0ZXAgMjogQXV0aGVudGljYXRlIGxvY2FsbHkgKGZv" + + "ciBoZWxtZmlsZSBjaGFydCBwdWxscykKCmBgYGJhc2gKZG9ja2VyIGxvZ2luIG52Y3IuaW8gLXUg" + + "JyRvYXV0aHRva2VuJyAtcCAiJE5HQ19BUElfS0VZIgpoZWxtIHJlZ2lzdHJ5IGxvZ2luIG52Y3Iu" + + "aW8gLXUgJyRvYXV0aHRva2VuJyAtcCAiJE5HQ19BUElfS0VZIgpgYGAKCiMjIyBTdGVwIDM6IENy" + + "ZWF0ZSBuYW1lc3BhY2VzIGFuZCBwdWxsIHNlY3JldHMKCmBgYGJhc2gKZXhwb3J0IE5HQ19BUElf" + + "S0VZPSI8eW91ci1uZ2MtYXBpLWtleT4iCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRz" + + "LXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsg" + + "ZG8KICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgbmFt" + + "ZXNwYWNlICIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1j" + + "b250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQoKZm9yIG5zIGlu" + + "IGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0" + + "LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxh" + + "bmUtY29udGV4dD4gY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAg" + + "ICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRo" + + "dG9rZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFt" + + "ZXNwYWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1j" + + "b250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQpgYGAKCiMjIyBT" + + "dGVwIDQ6IEFkZCBpbWFnZVB1bGxTZWNyZXRzIHRvIGhlbG1maWxlIHJlbGVhc2VzCgpBZGQgdGhl" + + "IGNoYXJ0LXNwZWNpZmljIGBpbWFnZVB1bGxTZWNyZXRzYCBrZXkgdG8gZWFjaCByZWxlYXNlLiBF" + + "eGFtcGxlIGZvciBjYXNzYW5kcmEgaW4gYGhlbG1maWxlLmQvMDEtZGVwZW5kZW5jaWVzLnlhbWwu" + + "Z290bXBsYDoKCmBgYHlhbWwKLSBuYW1lOiBjYXNzYW5kcmEKICB2ZXJzaW9uOiAwLjguMAogIGNv" + + "bmRpdGlvbjogY2Fzc2FuZHJhLmVuYWJsZWQKICBuYW1lc3BhY2U6IGNhc3NhbmRyYS1zeXN0ZW0K" + + "ICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAog" + + "ICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52ICJIRUxNRklMRV9FTlYiIH19" + + "LXNlY3JldHMueWFtbAogICAgLSBjYXNzYW5kcmE6CiAgICAgICAgZ2xvYmFsOgogICAgICAgICAg" + + "aW1hZ2VQdWxsU2VjcmV0czoKICAgICAgICAgICAgLSBudmNyLWNyZWRzCmBgYAoKU2VlIFtyZWZl" + + "cmVuY2VzL3B1bGwtc2VjcmV0cy5tZF0ocmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWQpIGZvciB0" + + "aGUga2V5IGZvciBldmVyeSBjaGFydC4KClRoZXNlIGFyZSBjb250cm9sLXBsYW5lIG5hbWVzcGFj" + + "ZXMuIEZvciBhIHNlcGFyYXRlIGNvbXB1dGUgY2x1c3RlciwgY3JlYXRlIHRoZQpzZWNyZXQgb25s" + + "eSBpbiBgbnZjYS1vcGVyYXRvcmA7IHRoZSBjaGFydCBhbmQgb3BlcmF0b3IgbWlycm9yIGl0IHRv" + + "CmBudmNhLXN5c3RlbWAuIFNlZSBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJl" + + "ZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQjcHVsbC1zZWNyZXRzKS4KCiMj" + + "IyBTdGVwIDU6IERlcGxveQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1r" + + "dWJlLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gc3luYwpgYGAKCiMjIyBTdGVwIDY6" + + "IFBhdGNoIFNlcnZpY2VBY2NvdW50cyBmb3IgY2hhcnRzIHdpdGhvdXQgbmF0aXZlIHN1cHBvcnQK" + + "CkFmdGVyIFBoYXNlIDEgKGRlcGVuZGVuY2llcykgY29tcGxldGVzLCBPcGVuQmFvIHBvZHMgd2ls" + + "bCBiZSBpbiBgSW1hZ2VQdWxsQmFja09mZmAuIFBhdGNoIGFuZCByZXN0YXJ0OgoKYGBgYmFzaApm" + + "b3IgbnMgaW4gdmF1bHQtc3lzdGVtIG52Y2YgZXNzOyBkbwogIGZvciBzYSBpbiAkKGt1YmVjdGwg" + + "LS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBzYSAtbiAiJG5zIiBcCiAgICAt" + + "LW5vLWhlYWRlcnMgLW8gY3VzdG9tLWNvbHVtbnM9IjptZXRhZGF0YS5uYW1lIik7IGRvCiAgICBr" + + "dWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBwYXRjaCBzZXJ2aWNlYWNj" + + "b3VudCAtbiAiJG5zIiAiJHNhIiBcCiAgICAgIC1wICd7ImltYWdlUHVsbFNlY3JldHMiOiBbeyJu" + + "YW1lIjogIm52Y3ItY3JlZHMifV19JwogIGRvbmUKZG9uZQprdWJlY3RsIC0tY29udGV4dCA8Y29u" + + "dHJvbC1wbGFuZS1jb250ZXh0PiBkZWxldGUgcG9kcyAtbiB2YXVsdC1zeXN0ZW0gLS1hbGwKYGBg" + + "CgpWZXJpZnk6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRl" + + "eHQ+IGdldCBldmVudHMgLW4gdmF1bHQtc3lzdGVtIFwKICAtLXNvcnQtYnk9Jy5sYXN0VGltZXN0" + + "YW1wJyB8IGdyZXAgLWkgcHVsbAojIFNob3VsZCBzaG93ICJTdWNjZXNzZnVsbHkgcHVsbGVkIGlt" + + "YWdlIiBmcm9tIG52Y3IuaW8KYGBgCgotLS0KCiMjIEV4YW1wbGUgMzogRnVsbCBUZWFyZG93biBh" + + "bmQgUmVpbnN0YWxsCgpXaGVuIGEgZGVwbG95bWVudCBpcyBicm9rZW4gYW5kIHlvdSBuZWVkIGEg" + + "Y2xlYW4gc2xhdGUuCgojIyMgU3RlcCAxOiBEZXN0cm95IHRoZSBjb21wdXRlLXBsYW5lIHN0YWNr" + + "CgpgYGBiYXNoCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgZGVzdHJv" + + "eSBcCiAgQ0xVU1RFUl9OQU1FPTxjbHVzdGVyLW5hbWU+IFwKICBIRUxNRklMRV9FTlY9PGVudj4g" + + "XAogIEtVQkVDT05GSUdfRklMRT08Y29tcHV0ZS1wbGFuZS1rdWJlY29uZmlnPgpgYGAKCklmIGNv" + + "bXB1dGUgY2xlYW51cCBpcyBzdHVjayBvbiBmaW5hbGl6ZXJzLCB1c2UgdGhlIGNvbXB1dGUtY29u" + + "dGV4dCBwcm9jZWR1cmUgaW4KW2RlYnVnZ2luZy5tZF0ocmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQj" + + "ZmFpbHVyZS1udmNhLWNsZWFudXAtc3R1Y2stZmluYWxpemVycykuCgojIyMgU3RlcCAyOiBEZXJl" + + "Z2lzdGVyIHRoZSBjb21wdXRlIGNsdXN0ZXIKClJlYWQgYGNsdXN0ZXJJRGAgYW5kIGBuY2FJRGAg" + + "ZnJvbQpgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvcmVnaXN0cmF0aW9uLzxjbHVz" + + "dGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYC4KU2hvdyB0aGUgSUQgYW5kIGdldCBjb25m" + + "aXJtYXRpb24gYmVmb3JlIGRlbGV0aW5nIHRoZSBJQ01TIHJvdzoKCmBgYGJhc2gKPG52Y2YtY2xp" + + "PiAtLWNvbmZpZyA8Y29uZmlnPiBjbHVzdGVyIGRlbGV0ZSBcCiAgLS1jbHVzdGVyLWlkIDxjbHVz" + + "dGVyLWlkLWZyb20tcmVnaXN0cmF0aW9uLXZhbHVlcz4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+IFwK" + + "ICAtLWlnbm9yZS1taXNzaW5nCmBgYAoKUmVwZWF0IHN0ZXBzIDEgYW5kIDIgZm9yIGV2ZXJ5IGNv" + + "bXB1dGUgY2x1c3Rlci4KCiMjIyBTdGVwIDM6IERlc3Ryb3kgdGhlIGNvbnRyb2wtcGxhbmUgc3Rh" + + "Y2sKClByZXNlcnZlIHRoZSBgY2VydC1tYW5hZ2VyYCBuYW1lc3BhY2UgYnkgZGVmYXVsdC4gTmFt" + + "ZXNwYWNlIHByZXNlcnZhdGlvbiBkb2VzCm5vdCBwcmVzZXJ2ZSB0aGUgSGVsbSByZWxlYXNlLiBC" + + "ZWZvcmUgcnVubmluZyBkZXN0cm95LCBpZGVudGlmeSB3aGV0aGVyCmNlcnQtbWFuYWdlciBpcyBl" + + "eHRlcm5hbC4gRm9yIGFuIGV4dGVybmFsIGluc3RhbGxhdGlvbiwgcmVxdWlyZSBlZmZlY3RpdmUK" + + "YGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNlYCBhbmQgYWJvcnQgaWYgaXQgaXMgdHJ1ZS4gRm9y" + + "IGFuIGludGVuZGVkCnN0YWNrLW1hbmFnZWQgcmVsZWFzZSB3aXRoIGVmZmVjdGl2ZSBgY2VydE1h" + + "bmFnZXIuZW5hYmxlZDogdHJ1ZWAsIHZlcmlmeQptYXRjaGluZyBzdGFjayBIZWxtIHJlbGVhc2Ug" + + "bWV0YWRhdGEgYW5kIGFib3J0IG9uIG1pc3Npbmcgb3IgbWlzbWF0Y2hlZApldmlkZW5jZS4gT25s" + + "eSBwbGFuIG5hbWVzcGFjZSByZW1vdmFsIGFmdGVyIHZlcmlmeWluZyBuYW1lc3BhY2UgcHJvdmVu" + + "YW5jZSBhbmQKZ2V0dGluZyBleHBsaWNpdCBjb25maXJtYXRpb247IG90aGVyd2lzZSBkbyBub3Qg" + + "ZGVsZXRlIGl0LgoKYGBgYmFzaApLVUJFQ09ORklHPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+" + + "IFwKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBkZXN0cm95IFwKICBIRUxNRklM" + + "RV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklMRT08Y29udHJvbC1wbGFuZS1rdWJlY29uZmln" + + "PgpgYGAKClBhc3MgYm90aCBrdWJlY29uZmlnIGZvcm1zIGJlY2F1c2UgY29udHJvbC1wbGFuZSBu" + + "YW1lc3BhY2UgY2xlYW51cCB1c2VzCmFtYmllbnQgYGt1YmVjdGxgLgoKIyMjIFN0ZXAgNDogVmVy" + + "aWZ5IGNsZWFuCgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + + "eHQ+IGdldCBucyB8IFwKICBncmVwIC1FICcobnZjYXxudmNmLWJhY2tlbmR8Z3JvdmV8ZHluYW1v" + + "KScKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IG5zIHwgXAog" + + "IGdyZXAgLUUgJyhjYXNzYW5kcmF8bmF0c3x2YXVsdHxudmNmfGFwaS1rZXlzfGVzc3xzaXMpJwoj" + + "IEJvdGggY29tbWFuZHMgc2hvdWxkIHJldHVybiBlbXB0eS4KYGBgCgojIyMgU3RlcCA1OiBSZWlu" + + "c3RhbGwgaW4gc3BsaXQgb3JkZXIKCkZvbGxvdyBbQ2xlYW4gSW5zdGFsbGF0aW9uXShTS0lMTC5t" + + "ZCNjbGVhbi1pbnN0YWxsYXRpb24pLCB0aGVuIHJldHVybiB0byB0aGUKc2FtZSBoYW5kb2ZmIGlu" + + "IFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBs" + + "YW5lLWluc3RhbGxhdGlvbi5tZCkuCgotLS0KCiMjIEV4YW1wbGUgNDogUmVjb3ZlciBmcm9tIGEg" + + "R2F0ZXdheSBFbmRwb2ludCBDaGFuZ2UKClRoZSBzZXBhcmF0ZWx5IHByb3Zpc2lvbmVkIEdhdGV3" + + "YXkgb3IgaXRzIGxvYWQgYmFsYW5jZXIgd2FzIHJlY3JlYXRlZCBhbmQgZ290IGEgbmV3IGVuZHBv" + + "aW50LgoKIyMjIFN0ZXAgMTogR2V0IHRoZSBuZXcgZW5kcG9pbnQKCmBgYGJhc2gKR0FURVdBWV9B" + + "RERSPSQoa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3" + + "YXkgXAogIG52Y2YtZ2F0ZXdheSAtbiBlbnZveS1nYXRld2F5IFwKICAtbyBqc29ucGF0aD0ney5z" + + "dGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScpCnRlc3QgLW4gIiRHQVRFV0FZX0FERFIiCmBgYAoK" + + "IyMjIFN0ZXAgMjogVXBkYXRlIEROUyBhbmQgZGlyZWN0IGFkZHJlc3MgZmllbGRzCgpLZWVwIGBn" + + "bG9iYWwuZG9tYWluYCwgcm91dGUgaG9zdG5hbWVzLCBhbmQgQ0xJIEhvc3QgZmllbGRzIHVuY2hh" + + "bmdlZC4gUG9pbnQgdGhlCkROUyByZWNvcmRzIGZvciByZW5kZXJlZCByb3V0ZSBob3N0bmFtZXMs" + + "IHN1Y2ggYXMgYGFwaS48ZG9tYWluPmAgYW5kCmAqLmludm9jYXRpb24uPGRvbWFpbj5gLCB0byBg" + + "R0FURVdBWV9BRERSYC4gRm9yIGEgdGVtcG9yYXJ5IGVudmlyb25tZW50IHdpdGhvdXQKRE5TLCBr" + + "ZWVwIGl0cyByZXNlcnZlZCByb3V0ZSBzdWZmaXggYW5kIGNvbm5lY3QgdG8gYEdBVEVXQVlfQURE" + + "UmAgd2l0aCB0aGUKbWF0Y2hpbmcgYEhvc3RgIGhlYWRlci4KCkZvciBhIHNwbGl0IGRlcGxveW1l" + + "bnQgY29uZmlndXJlZCB3aXRoIGRpcmVjdCBHYXRld2F5IGFkZHJlc3NlcywgcmVwbGFjZSBvbmx5" + + "CnRoZSBhZGRyZXNzLWJlYXJpbmcgdmFsdWVzOiBjb250cm9sLXBsYW5lIGBudmNmTmF0c1NlcnZp" + + "Y2VVUkxgLCBjb21wdXRlLXBsYW5lCklDTVMsIFJlVmFsLCBhbmQgTkFUUyBVUkxzLCBhbmQgQ0xJ" + + "IFVSTCBmaWVsZHMuIEtlZXAgdGhlaXIgZG9tYWluIGFuZCBIb3N0Cm92ZXJyaWRlcyB1bmNoYW5n" + + "ZWQuIFJlZnJlc2ggcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24gdGhyb3VnaCB0aGUgc2Ft" + + "ZQpoYW5kb2ZmIHVzZWQgb3JpZ2luYWxseS4gU2VlCltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3Rh" + + "bGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkKZm9yIHRo" + + "ZSBmaWVsZHMgYW5kIGNvbXBsZXRlIGNvbW1hbmRzLgoKIyMjIFN0ZXAgMzogVmVyaWZ5IGJvdGgg" + + "Y29udGV4dHMKCmBgYGJhc2gKZGlnICtzaG9ydCAiYXBpLjxkb21haW4+IgpjdXJsIC1IICJIb3N0" + + "OiBhcGkuPGRvbWFpbj4iICJodHRwOi8vJEdBVEVXQVlfQUREUi9oZWFsdGgiCmt1YmVjdGwgLS1j" + + "b250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5IG52Y2YtZ2F0ZXdheSBc" + + "CiAgLW4gZW52b3ktZ2F0ZXdheSAtbyB3aWRlCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBs" + + "YW5lLWNvbnRleHQ+IGdldCBodHRwcm91dGVzIC1BCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9s" + + "LXBsYW5lLWNvbnRleHQ+IGdldCB0Y3Byb3V0ZXMgLUEKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1" + + "dGUtcGxhbmUtY29udGV4dD4gcm9sbG91dCBzdGF0dXMgXAogIGRlcGxveW1lbnQvbnZjYS1vcGVy" + + "YXRvciAtbiBudmNhLW9wZXJhdG9yIC0tdGltZW91dD0xMG0Ka3ViZWN0bCAtLWNvbnRleHQgPGNv" + + "bXB1dGUtcGxhbmUtY29udGV4dD4gd2FpdCBcCiAgbnZjZmJhY2tlbmQvPGNvbXB1dGUtcGxhbmUt" + + "Y2x1c3Rlci1uYW1lPiAtbiBudmNhLW9wZXJhdG9yIFwKICAtLWZvcj1qc29ucGF0aD0ney5zdGF0" + + "dXMuYWdlbnRTdGF0dXN9Jz1oZWFsdGh5IC0tdGltZW91dD0xMG0KYGBgCgotLS0KCiMjIEV4YW1w" + + "bGUgNTogRGVwbG95IE9ubHkgRGVwZW5kZW5jaWVzCgpVc2VmdWwgZm9yIHRlc3Rpbmcgb3Igd2hl" + + "biBpdGVyYXRpbmcgb24gc2VydmljZSBjb25maWd1cmF0aW9uLgoKYGBgYmFzaAojIERlcGxveSBq" + + "dXN0IE5BVFMsIENhc3NhbmRyYSwgT3BlbkJhbwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUg" + + "LS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llcyBzeW5jCgojIENoZWNrIHN0YXR1" + + "cwprdWJlY3RsIGdldCBwb2RzIC1uIG5hdHMtc3lzdGVtCmt1YmVjdGwgZ2V0IHBvZHMgLW4gY2Fz" + + "c2FuZHJhLXN5c3RlbQprdWJlY3RsIGdldCBwb2RzIC1uIHZhdWx0LXN5c3RlbQoKIyBEZXBsb3kg" + + "anVzdCBvbmUgc3BlY2lmaWMgcmVsZWFzZQpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1z" + + "ZWxlY3RvciBuYW1lPWNhc3NhbmRyYSBzeW5jCmBgYAoKIyMjIFNlbGVjdG9yIHJlZmVyZW5jZQoK" + + "fCBTZWxlY3RvciB8IFJlbGVhc2VzIHwKfC0tLS0tLS0tLS18LS0tLS0tLS0tLXwKfCBgcmVsZWFz" + + "ZS1ncm91cD1kZXBlbmRlbmNpZXNgIHwgbmF0cywgY2Fzc2FuZHJhLCBvcGVuYmFvLXNlcnZlciB8" + + "CnwgYHJlbGVhc2UtZ3JvdXA9c2VydmljZXNgIHwgYXBpLWtleXMsIHNpcywgYXBpLCBpbnZvY2F0" + + "aW9uLXNlcnZpY2UsIGdycGMtcHJveHksIGVzcy1hcGksIG5vdGFyeS1zZXJ2aWNlLCByZXZhbCwg" + + "b3B0aW9uYWwgbGxtLXJlcXVlc3Qtcm91dGVyIGFuZCBsbG0tYXBpLWdhdGV3YXkgd2hlbiBgbGxt" + + "LmVuYWJsZWQ9dHJ1ZWAsIG9wdGlvbmFsIHZhbml0eS1nYXRld2F5IG9ubHkgaW4gc3RhY2sgcGFj" + + "a2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBhZGRvbiBhbmQgaGF2ZSBgYWRkb25zLnZhbml0eUdhdGV3" + + "YXkuZW5hYmxlZD10cnVlYCwgb3B0aW9uYWwgbnZjZi11aSBvbmx5IGluIHN0YWNrIHBhY2thZ2Vz" + + "IHRoYXQgaW5jbHVkZSB0aGUgYWRkb24gYW5kIGhhdmUgYGFkZG9ucy5udmNmVWkuZW5hYmxlZD10" + + "cnVlYCB8CnwgYG5hbWU9bGxtLXJlcXVlc3Qtcm91dGVyYCB8IERlcGxveSBqdXN0IHRoZSBMTE0g" + + "cmVxdWVzdCByb3V0ZXIgd2hlbiBgbGxtLmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1lPWxsbS1hcGkt" + + "Z2F0ZXdheWAgfCBEZXBsb3kganVzdCB0aGUgTExNIEFQSSBnYXRld2F5IHdoZW4gYGxsbS5lbmFi" + + "bGVkPXRydWVgIHwKfCBgbmFtZT12YW5pdHktZ2F0ZXdheWAgfCBEZXBsb3kganVzdCBWYW5pdHkg" + + "R2F0ZXdheSBvbmx5IHdoZW4gdGhlIHN0YWNrIHBhY2thZ2UgaW5jbHVkZXMgdGhhdCByZWxlYXNl" + + "IGFuZCBgYWRkb25zLnZhbml0eUdhdGV3YXkuZW5hYmxlZD10cnVlYCB8CnwgYG5hbWU9bnZjZi11" + + "aWAgfCBEZXBsb3kgTlZDRiBVSSBvbmx5IHdoZW4gdGhlIHN0YWNrIHBhY2thZ2UgaW5jbHVkZXMg" + + "dGhhdCByZWxlYXNlIGFuZCBgYWRkb25zLm52Y2ZVaS5lbmFibGVkPXRydWVgIHwKfCBgcmVsZWFz" + + "ZS1ncm91cD1pbmdyZXNzYCB8IGluZ3Jlc3MgKGdhdGV3YXkgcm91dGVzKSB8CnwgYG5hbWU9PHJl" + + "bGVhc2U+YCB8IEFueSBpbmRpdmlkdWFsIHJlbGVhc2UgYnkgbmFtZSB8CgpOb3RlOiBgYWRtaW4t" + + "aXNzdWVyLXByb3h5YCBkb2VzIG5vdCBoYXZlIGEgcmVsZWFzZS1ncm91cCBsYWJlbC4gVGFyZ2V0" + + "IGl0IHdpdGggYC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHlgLgpQSwcIAlJOQH8o" + + "AAB/KAAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAABMAAkAZGF0YS9udmNmLXNlbGYtbWFuYWdl" + + "ZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZFVU" + + "BQABAKbOEiMgU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb24KClRoZSBjb250cm9sIHBs" + + "YW5lIGFuZCBjb21wdXRlIHBsYW5lIGFyZSBzZXBhcmF0ZSBzdGFja3MuIEluc3RhbGwgdGhlIGNv" + + "bnRyb2wKcGxhbmUgZmlyc3QsIHRoZW4gcmVnaXN0ZXIgYW5kIGluc3RhbGwgZWFjaCBjb21wdXRl" + + "IGNsdXN0ZXIuIENob29zZSBvbmUgaGFuZG9mZgpiZWxvdyBhbmQgdXNlIGl0IGZvciB0aGUgZnVs" + + "bCBsaWZlY3ljbGUuIERvIG5vdCBjb21iaW5lIGEgQ0xJLWdlbmVyYXRlZCBwcm9maWxlCndpdGgg" + + "dGhlIEhlbG1maWxlIHZhbHVlcyBmbG93LgoKIyMgQ2hvb3NlIGEgSGFuZG9mZgoKfCBGbG93IHwg" + + "U291cmNlIG9mIGNvbnRyb2wtcGxhbmUgZW5kcG9pbnRzIHwgUmVnaXN0cmF0aW9uIGFydGlmYWN0" + + "IHwKfC0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0t" + + "LS0tLS0tLS0tLS0tLXwKfCBIZWxtZmlsZSB2YWx1ZXMgfCBTZXBhcmF0ZSBjb250cm9sLXBsYW5l" + + "IGFuZCBjb21wdXRlLXBsYW5lIGVudmlyb25tZW50IGZpbGVzIHwgYGRlcGxveS9zdGFja3MvbnZj" + + "Zi1jb21wdXRlLXBsYW5lL3JlZ2lzdHJhdGlvbi88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlh" + + "bWxgIHwKfCBDTEkgcHJvZmlsZSB8IENMSS1nZW5lcmF0ZWQgYGRlcGxveS9zdGFja3Mvc2VsZi1t" + + "YW5hZ2VkL291dC9jb250cm9sLXBsYW5lLXByb2ZpbGUueWFtbGAgfCBDTEktZ2VuZXJhdGVkIGBk" + + "ZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9vdXQvPGNsdXN0ZXI+LXJlZ2lzdGVyLXZh" + + "bHVlcy55YW1sYCB8CgpUaGUgQ0xJIHByb2ZpbGUgaXMgbWFuZGF0b3J5IGZvciB0aGUgQ0xJIGZs" + + "b3cgYW5kIG11c3Qgbm90IGJlIGhhbmQtYXV0aG9yZWQuClRoZSBIZWxtZmlsZSBmbG93IGRvZXMg" + + "bm90IGNvbnN1bWUgYSBjb250cm9sLXBsYW5lIHByb2ZpbGUuCgpDb21tYW5kcyBiZWxvdyB1c2Ug" + + "bW9ub3JlcG8gcGF0aHMgZnJvbSB0aGUgcmVwb3NpdG9yeSByb290LiBPcGVyYXRvcnMgdXNpbmcK" + + "ZXh0cmFjdGVkIHBhY2thZ2VzIG5lZWQgbWF0Y2hpbmctdmVyc2lvbiBgbnZjZi1zZWxmLW1hbmFn" + + "ZWQtc3RhY2tgIGFuZApgbnZjZi1jb21wdXRlLXBsYW5lLXN0YWNrYCBidW5kbGVzLiBTdWJzdGl0" + + "dXRlIHRob3NlIGJ1bmRsZSByb290cyBmb3IKYGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkYCBh" + + "bmQgYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lYC4KCiMjIEhlbG1maWxlIFZhbHVl" + + "cyBGbG93CgpDcmVhdGUgYm90aCBlbnZpcm9ubWVudCBmaWxlcyBiZWZvcmUgaW5zdGFsbGF0aW9u" + + "OgoKLSBgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxg" + + "IGZvciBjb250cm9sLXBsYW5lCiAgcmVnaXN0cnksIGRvbWFpbiwgR2F0ZXdheSwgcm91dGVzLCBh" + + "bmQgc2VydmljZSBzZXR0aW5ncy4KLSBgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUv" + + "ZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgIGZvciBjb21wdXRlLXBsYW5lCiAgcmVnaXN0cnksIHB1" + + "bGwgc2VjcmV0cywgYW5kIGNvbXB1dGUtcmVhY2hhYmxlIElDTVMsIFJlVmFsLCBhbmQgTkFUUyB2" + + "YWx1ZXMuCgpGb3IgRUtTLCB1c2UgdGhlIGNhbm9uaWNhbApbQ1NQIEVuZC10by1FbmQgRXhhbXBs" + + "ZV0oaHR0cHM6Ly9kb2NzLm52aWRpYS5jb20vbnZjZi92MC42LjAtcmMvY3NwLWVuZC10by1lbmQt" + + "ZXhhbXBsZSkuClRoZSBjb250cm9sLXBsYW5lIGVudmlyb25tZW50IGtlZXBzIHRoZSBFbnZveSBH" + + "YXRld2F5IGNvbnRyb2xsZXIgaW4KYGVudm95LWdhdGV3YXktc3lzdGVtYCwgYXR0YWNoZXMgcm91" + + "dGVzIHRvIGBHYXRld2F5L252Y2YtZ2F0ZXdheWAgaW4KYGVudm95LWdhdGV3YXlgLCBhbmQgZW5h" + + "YmxlcyB0aGUgTkFUUyByb3V0ZS4gVGhlIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgdXNlcwp0" + + "aGUgZXh0ZXJuYWwgYWRkcmVzcyBwbHVzIHRoZSBzZXJ2aWNlIGhvc3Qgb3ZlcnJpZGVzLiBIZXJl" + + "LApgPGdhdGV3YXktYWRkcmVzcz5gIGlzIHRoZSBOTEIgYWRkcmVzcyBhbmQgYDxnYXRld2F5LWRv" + + "bWFpbj5gIGlzIHRoZSBETlMgYmFzZQp3aG9zZSBzZXJ2aWNlIHN1YmRvbWFpbnMgcmVzb2x2ZSB0" + + "byB0aGF0IE5MQjoKCmBgYHlhbWwKIyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9lbnZpcm9u" + + "bWVudHMvPGVudj4ueWFtbApnbG9iYWw6CiAgZG9tYWluOiAiPGdhdGV3YXktZG9tYWluPiIKICB3" + + "b3JrZXJFbmRwb2ludHM6CiAgICBudmNmU2VydmljZVVSTDogImh0dHA6Ly9hcGkuPGdhdGV3YXkt" + + "ZG9tYWluPiIKICAgIG52Y2ZHcnBjU2VydmljZVVSTDogImh0dHA6Ly93b3JrZXItYXBpLjxnYXRl" + + "d2F5LWRvbWFpbj4iCiAgICBudmNmTmF0c1NlcnZpY2VVUkw6ICJuYXRzOi8vPGdhdGV3YXktYWRk" + + "cmVzcz46NDIyMiIKICAgIG52Y3RTZXJ2aWNlVVJMOiAiaHR0cDovL3Rhc2tzLjxnYXRld2F5LWRv" + + "bWFpbj4iCiAgICBudmN0R3JwY1NlcnZpY2VVUkw6ICJodHRwOi8vd29ya2VyLXRhc2tzLjxnYXRl" + + "d2F5LWRvbWFpbj4iCiAgICBpbnZvY2F0aW9uU2VydmljZVVSTDogImh0dHA6Ly9pbnZvY2F0aW9u" + + "LjxnYXRld2F5LWRvbWFpbj4iCgpncnBjcHJveHk6CiAgbnZjZkdycGNTZXJ2aWNlVVJMOiAiaHR0" + + "cDovL2FwaS5udmNmLnN2Yy5jbHVzdGVyLmxvY2FsOjkwOTAiCgppbmdyZXNzOgogIGdhdGV3YXlB" + + "cGk6CiAgICBjb250cm9sbGVyTmFtZXNwYWNlOiBlbnZveS1nYXRld2F5LXN5c3RlbQogICAgZ2F0" + + "ZXdheXM6CiAgICAgIHNoYXJlZDoge25hbWU6IG52Y2YtZ2F0ZXdheSwgbmFtZXNwYWNlOiBlbnZv" + + "eS1nYXRld2F5fQogICAgICBncnBjOiB7bmFtZTogbnZjZi1nYXRld2F5LCBuYW1lc3BhY2U6IGVu" + + "dm95LWdhdGV3YXl9CiAgICAgIG5hdHM6CiAgICAgICAgbmFtZTogbnZjZi1nYXRld2F5CiAgICAg" + + "ICAgbmFtZXNwYWNlOiBlbnZveS1nYXRld2F5CiAgICAgICAgbGlzdGVuZXJOYW1lOiBuYXRzCiAg" + + "ICByb3V0ZXM6CiAgICAgIG52Y2ZBcGk6CiAgICAgICAgZ3JwYzoKICAgICAgICAgIGVuYWJsZWQ6" + + "IHRydWUKICAgICAgICAgIGhvc3RuYW1lczogWyJ3b3JrZXItYXBpLjxnYXRld2F5LWRvbWFpbj4i" + + "XQogICAgICBudmN0QXBpOgogICAgICAgIGdycGM6CiAgICAgICAgICBlbmFibGVkOiB0cnVlCiAg" + + "ICAgICAgICBob3N0bmFtZXM6IFsid29ya2VyLXRhc2tzLjxnYXRld2F5LWRvbWFpbj4iXQogICAg" + + "ICBuYXRzOgogICAgICAgIGVuYWJsZWQ6IHRydWUKCm9wZW5iYW86CiAgbWlncmF0aW9uczoKICAg" + + "IGlzc3VlckRpc2NvdmVyeToKICAgICAgZW5hYmxlZDogdHJ1ZQpgYGAKCmBgYHlhbWwKIyBkZXBs" + + "b3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMvPGVudj4ueWFtbApnbG9i" + + "YWw6CiAgbnZjYU9wZXJhdG9yOgogICAgc2VsZk1hbmFnZWQ6CiAgICAgIGljbXNTZXJ2aWNlVVJM" + + "OiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+IgogICAgICBpY21zU2VydmljZUhvc3RIZWFkZXJP" + + "dmVycmlkZTogInNpcy48Z2F0ZXdheS1kb21haW4+IgogICAgICByZXZhbFNlcnZpY2VVUkw6ICJo" + + "dHRwOi8vPGdhdGV3YXktYWRkcmVzcz4iCiAgICAgIHJldmFsU2VydmljZUhvc3RIZWFkZXJPdmVy" + + "cmlkZTogInJldmFsLjxnYXRld2F5LWRvbWFpbj4iCiAgICAgIG5hdHNVUkw6ICJuYXRzOi8vPGdh" + + "dGV3YXktYWRkcmVzcz46NDIyMiIKICAgICAgbmF0c0hvc3RPdmVycmlkZTogIm5hdHMuPGdhdGV3" + + "YXktZG9tYWluPiIKYGBgCgpQcmV2aWV3IGFuZCBpbnN0YWxsIHRoZSBjb250cm9sIHBsYW5lIGFn" + + "YWluc3QgaXRzIGNvbnRleHQ6CgpgYGBiYXNoCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1h" + + "bmFnZWQgdGVtcGxhdGUgXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxF" + + "PTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+CgptYWtlIC1DIGRlcGxveS9zdGFja3Mvc2VsZi1t" + + "YW5hZ2VkIGluc3RhbGwgXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxF" + + "PTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKQmVmb3JlIHJlZ2lzdGVyaW5nIHRocm91" + + "Z2ggYSBiYXJlIEdhdGV3YXkgYWRkcmVzcywgY3JlYXRlIG9yIHVwZGF0ZSB0aGUgQ0xJCmNvbmZp" + + "ZyBwYXNzZWQgYXMgYE5WQ0ZfQ0xJX0NPTkZJR2A6CgpgYGB5YW1sCmJhc2VfaHR0cF91cmw6ICJo" + + "dHRwOi8vPGdhdGV3YXktYWRkcmVzcz4iCmludm9rZV91cmw6ICJodHRwOi8vPGdhdGV3YXktYWRk" + + "cmVzcz4iCmJhc2VfZ3JwY191cmw6ICI8Z2F0ZXdheS1hZGRyZXNzPjoxMDA4MSIKYXBpX2tleXNf" + + "c2VydmljZV91cmw6ICJodHRwOi8vPGdhdGV3YXktYWRkcmVzcz4iCmljbXNfdXJsOiAiaHR0cDov" + + "LzxnYXRld2F5LWFkZHJlc3M+IgphcGlfaG9zdDogImFwaS48Z2F0ZXdheS1kb21haW4+IgphcGlf" + + "a2V5c19ob3N0OiAiYXBpLWtleXMuPGdhdGV3YXktZG9tYWluPiIKaW52b2tlX2hvc3Q6ICJpbnZv" + + "Y2F0aW9uLjxnYXRld2F5LWRvbWFpbj4iCmljbXNfaG9zdDogInNpcy48Z2F0ZXdheS1kb21haW4+" + + "IgpgYGAKCkhvc3QgZmllbGRzIGNvbnRhaW4gaG9zdG5hbWVzIG9ubHksIHdpdGhvdXQgYSBVUkwg" + + "c2NoZW1lLiBgSUNNU19VUkxgIG1hcHMgb25seQp0byB0aGUgcmVnaXN0cmF0aW9uIGNvbW1hbmQn" + + "cyBgLS1pY21zLXVybGA7IGBpY21zX2hvc3RgIGluIHRoZSBjb25maWcgc3VwcGxpZXMKdGhlIEdh" + + "dGV3YXkgSG9zdCBoZWFkZXIuIFRoZXJlIGlzIG5vIGAtLWljbXMtaG9zdGAgTWFrZSBvciBDTEkg" + + "ZmxhZy4KClJlZ2lzdGVyIGZyb20gdGhlIGNvbXB1dGUgY29udGV4dCwgdGhlbiBpbnN0YWxsIHRo" + + "ZSBjb21wdXRlIHBsYW5lOgoKYGBgYmFzaAptYWtlIC1DIGRlcGxveS9zdGFja3MvbnZjZi1jb21w" + + "dXRlLXBsYW5lIHJlZ2lzdGVyLWNsdXN0ZXIgXAogIENMVVNURVJfTkFNRT08Y2x1c3Rlci1uYW1l" + + "PiBcCiAgTkNBX0lEPTxuY2EtaWQ+IFwKICBDTFVTVEVSX1JFR0lPTj08cmVnaW9uPiBcCiAgSUNN" + + "U19VUkw9aHR0cDovLzxnYXRld2F5LWFkZHJlc3M+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbXB1" + + "dGUtcGxhbmUta3ViZWNvbmZpZz4gXAogIE5WQ0ZfQ0xJPTxwYXRoLXRvLW52Y2YtY2xpPiBcCiAg" + + "TlZDRl9DTElfQ09ORklHPTxwYXRoLXRvLW52Y2YtY2xpLWNvbmZpZz4KCm1ha2UgLUMgZGVwbG95" + + "L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgaW5zdGFsbCBcCiAgQ0xVU1RFUl9OQU1FPTxjbHVz" + + "dGVyLW5hbWU+IFwKICBIRUxNRklMRV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklMRT08Y29t" + + "cHV0ZS1wbGFuZS1rdWJlY29uZmlnPgpgYGAKClJlZ2lzdHJhdGlvbiBkaXNjb3ZlcnMgdGhlIE9J" + + "REMgaXNzdWVyIGFuZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUga3ViZSBjb250ZXh0LgpJbiBhIG11" + + "bHRpLWNsdXN0ZXIgZGVwbG95bWVudCwgYEtVQkVDT05GSUdfRklMRWAgaXMgcmVxdWlyZWQgb24g" + + "Ym90aApjb21wdXRlLXBsYW5lIGNvbW1hbmRzLiBJbiBhIHNhbWUtY2x1c3RlciBkZXBsb3ltZW50" + + "IGl0IG1heSBiZSBvbWl0dGVkIG9ubHkKd2hlbiB0aGUgYW1iaWVudCBjb250ZXh0IGlzIGFscmVh" + + "ZHkgdGhlIHRhcmdldCBjbHVzdGVyLgoKIyMgQ0xJIFByb2ZpbGUgRmxvdwoKUnVuIHRoZSBDTEkg" + + "Y29udHJvbC1wbGFuZSBpbnN0YWxsIGZpcnN0LiBJdCBjcmVhdGVzIHRoZSBwcm9maWxlIGNvbnN1" + + "bWVkIGJ5CmNvbXB1dGUtcGxhbmUgcmVnaXN0cmF0aW9uOgoKYGBgYmFzaApudmNmLWNsaSAtLWNv" + + "bmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNrIGRlcGxv" + + "eS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0" + + "YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWluIFwKICAt" + + "LWNvbnRyb2wtcGxhbmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBcCiAgLS1jb21w" + + "dXRlLXBsYW5lLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gXAogIGluc3RhbGwgLS1j" + + "b250cm9sLXBsYW5lIFwKICAtLWNsdXN0ZXItbmFtZSA8Y29udHJvbC1wbGFuZS1jbHVzdGVyLW5h" + + "bWU+IFwKICAtLXJlZ2lvbiA8cmVnaW9uPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4KCnRlc3QgLXMg" + + "ZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJvZmlsZS55YW1s" + + "CmBgYAoKVXNlIHRoZSBmdWxsIHBlcnNpc3RlbnQgcHJlZml4IGZvciBib3RoIGNvbXB1dGUtcGxh" + + "bmUgY29tbWFuZHM6CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9z" + + "dGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQg" + + "XAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFu" + + "ZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4gXAogIGNvbXB1dGUtcGxhbmUgcmVnaXN0ZXIg" + + "XAogIC0tY29udHJvbC1wbGFuZS1wcm9maWxlIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL291" + + "dC9jb250cm9sLXBsYW5lLXByb2ZpbGUueWFtbCBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUt" + + "cGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1rdWJlLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29u" + + "dGV4dD4gXAogIC0tcmVnaW9uIDxyZWdpb24+IFwKICAtLW91dHB1dCBkZXBsb3kvc3RhY2tzL252" + + "Y2YtY29tcHV0ZS1wbGFuZS9vdXQvPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPi1yZWdpc3Rl" + + "ci12YWx1ZXMueWFtbAoKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAog" + + "IC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1j" + + "b21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAt" + + "LWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgY29tcHV0ZS1wbGFuZSBpbnN0YWxsIFwKICAtLXZh" + + "bHVlcyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9vdXQvPGNvbXB1dGUtcGxhbmUt" + + "Y2x1c3Rlci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbCBcCiAgLS1rdWJlLWNvbnRleHQgPGNv" + + "bXB1dGUtcGxhbmUtY29udGV4dD4gXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNs" + + "dXN0ZXItbmFtZT4KYGBgCgpSZWdpc3RyYXRpb24gc2VsZWN0cyB0aGUgcHJvZmlsZSdzIGluLWNs" + + "dXN0ZXIgb3IgY29tcHV0ZS1yZWFjaGFibGUgZW5kcG9pbnRzCmZyb20gdGhlIGNvbXB1dGUgY29u" + + "dGV4dCBhbmQgcHJvYmVzIGl0cyBKV0tTLiBEbyBub3QgcmVwbGFjZSBwcm9maWxlIGVuZHBvaW50" + + "cwp3aXRoIGhhbmQtYXV0aG9yZWQgSGVsbWZpbGUgZW5kcG9pbnQgdmFsdWVzLgoKIyMgUHVsbCBT" + + "ZWNyZXRzCgpDcmVhdGUgdGhlIGNvbnRyb2wtcGxhbmUgc2VjcmV0IGluIHRoZXNlIG5hbWVzcGFj" + + "ZXMgb24gdGhlIGNvbnRyb2wtcGxhbmUKY29udGV4dDoKCmBgYHRleHQKY2Fzc2FuZHJhLXN5c3Rl" + + "bSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFu" + + "YWdlcgpgYGAKCk9uIHRoZSBjb21wdXRlIGNvbnRleHQsIGNyZWF0ZSB0aGUgc2VjcmV0IG9ubHkg" + + "aW4gYG52Y2Etb3BlcmF0b3JgIGFuZCByZWZlcmVuY2UKaXQgdGhyb3VnaCBgZ2xvYmFsLmltYWdl" + + "UHVsbFNlY3JldHNgIGluIHRoZSBjb21wdXRlLXBsYW5lIGVudmlyb25tZW50LiBUaGUgY2hhcnQK" + + "YW5kIG9wZXJhdG9yIHVzZSBpdCBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciBpdCB0byBg" + + "bnZjYS1zeXN0ZW1gLiBEbyBub3QgYWRkCmVpdGhlciBuYW1lc3BhY2UgdG8gdGhlIGNvbnRyb2wt" + + "cGxhbmUgbGlzdC4gRm9yIGNvbW1hbmRzIGFuZCBwb2xpY3kgZXhhbXBsZXMsCnNlZSBbcHVsbC1z" + + "ZWNyZXRzLm1kXShwdWxsLXNlY3JldHMubWQpLgoKIyMgVmVyaWZpY2F0aW9uCgpVc2UgdGhlIGV4" + + "cGxpY2l0IEdhdGV3YXkgbmFtZSBhbmQgbmFtZXNwYWNlOgoKYGBgYmFzaAprdWJlY3RsIC0tY29u" + + "dGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBudmNmLWdhdGV3YXkgXAog" + + "IC1uIGVudm95LWdhdGV3YXkgLW8gd2lkZQprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFu" + + "ZS1jb250ZXh0PiBnZXQgdGNwcm91dGUgLW4gZW52b3ktZ2F0ZXdheQprdWJlY3RsIC0tY29udGV4" + + "dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiByb2xsb3V0IHN0YXR1cyBcCiAgZGVwbG95bWVudC9u" + + "dmNhLW9wZXJhdG9yIC1uIG52Y2Etb3BlcmF0b3IgLS10aW1lb3V0PTEwbQprdWJlY3RsIC0tY29u" + + "dGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiB3YWl0IFwKICBudmNmYmFja2VuZC88Y29tcHV0" + + "ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IC1uIG52Y2Etb3BlcmF0b3IgXAogIC0tZm9yPWpzb25wYXRo" + + "PSd7LnN0YXR1cy5hZ2VudFN0YXR1c30nPWhlYWx0aHkgLS10aW1lb3V0PTEwbQprdWJlY3RsIC0t" + + "Y29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgc2VjcmV0IDxwdWxsLXNlY3JldD4g" + + "LW4gbnZjYS1zeXN0ZW0KYGBgCgojIyBUZWFyZG93bgoKRGVzdHJveSBhbmQgZGVyZWdpc3RlciBl" + + "dmVyeSBjb21wdXRlIHBsYW5lIGJlZm9yZSB0aGUgY29udHJvbCBwbGFuZS4gQm90aApoYW5kb2Zm" + + "cyBjYW4gZGVzdHJveSB0aGUgY29udHJvbCBwbGFuZSwgc28gYXBwbHkgdGhpcyBwcmVmbGlnaHQg" + + "YmVmb3JlIGVpdGhlcgpvbmUuIFByZXNlcnZlIHRoZSBgY2VydC1tYW5hZ2VyYCBuYW1lc3BhY2Ug" + + "YnkgZGVmYXVsdC4gTmFtZXNwYWNlIHByZXNlcnZhdGlvbgpkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUg" + + "SGVsbSByZWxlYXNlLiBJZGVudGlmeSB3aGV0aGVyIGNlcnQtbWFuYWdlciBpcyBleHRlcm5hbC4K" + + "Rm9yIGFuIGV4dGVybmFsIGluc3RhbGxhdGlvbiwgcmVxdWlyZSBlZmZlY3RpdmUgYGNlcnRNYW5h" + + "Z2VyLmVuYWJsZWQ6IGZhbHNlYAphbmQgYWJvcnQgaWYgaXQgaXMgdHJ1ZS4gRm9yIGFuIGludGVu" + + "ZGVkIHN0YWNrLW1hbmFnZWQgcmVsZWFzZSB3aXRoIGVmZmVjdGl2ZQpgY2VydE1hbmFnZXIuZW5h" + + "YmxlZDogdHJ1ZWAsIHZlcmlmeSBtYXRjaGluZyBzdGFjayBIZWxtIHJlbGVhc2UgbWV0YWRhdGEg" + + "YW5kCmFib3J0IG9uIG1pc3Npbmcgb3IgbWlzbWF0Y2hlZCBldmlkZW5jZS4gT25seSBwbGFuIG5h" + + "bWVzcGFjZSByZW1vdmFsIGFmdGVyCnZlcmlmeWluZyBuYW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQg" + + "Z2V0dGluZyBleHBsaWNpdCBjb25maXJtYXRpb247IG90aGVyd2lzZQpkbyBub3QgZGVsZXRlIGl0" + + "LgoKRm9yIHRoZSBIZWxtZmlsZSB2YWx1ZXMgZmxvdywgcmV0YWluIGVhY2ggcmVnaXN0cmF0aW9u" + + "IHZhbHVlcyBmaWxlIHVudGlsCmNsZWFudXAgaXMgdmVyaWZpZWQ6CgpgYGBiYXNoCm1ha2UgLUMg" + + "ZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgZGVzdHJveSBcCiAgQ0xVU1RFUl9OQU1F" + + "PTxjbHVzdGVyLW5hbWU+IFwKICBIRUxNRklMRV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklM" + + "RT08Y29tcHV0ZS1wbGFuZS1rdWJlY29uZmlnPgoKPG52Y2YtY2xpPiAtLWNvbmZpZyA8Y29uZmln" + + "PiBjbHVzdGVyIGRlbGV0ZSBcCiAgLS1jbHVzdGVyLWlkIDxjbHVzdGVyLWlkLWZyb20tcmVnaXN0" + + "cmF0aW9uLXZhbHVlcz4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+IFwKICAtLWlnbm9yZS1taXNzaW5n" + + "CmBgYAoKUmVhZCBgY2x1c3RlcklEYCBhbmQgYG5jYUlEYCBmcm9tCmBkZXBsb3kvc3RhY2tzL252" + + "Y2YtY29tcHV0ZS1wbGFuZS9yZWdpc3RyYXRpb24vPGNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFs" + + "dWVzLnlhbWxgLgpTaG93IHRoZSBleGFjdCBjbHVzdGVyIElEIGFuZCBnZXQgY29uZmlybWF0aW9u" + + "IGJlZm9yZSBgY2x1c3RlciBkZWxldGVgLiBSZXBlYXQKY29tcHV0ZSBkZXN0cm95IGFuZCBkZXJl" + + "Z2lzdHJhdGlvbiBmb3IgZXZlcnkgY29tcHV0ZSBjbHVzdGVyLCB0aGVuIGRlc3Ryb3kgdGhlCmNv" + + "bnRyb2wgcGxhbmUuCgpgYGBiYXNoCktVQkVDT05GSUc9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZp" + + "Zz4gXAptYWtlIC1DIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIGRlc3Ryb3kgXAogIEhFTE1G" + + "SUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb250cm9sLXBsYW5lLWt1YmVjb25m" + + "aWc+CmBgYAoKQm90aCBgS1VCRUNPTkZJR2AgYW5kIGBLVUJFQ09ORklHX0ZJTEVgIGFyZSByZXF1" + + "aXJlZCBvbiB0aGUgY29udHJvbC1wbGFuZQpkZXN0cm95IGJlY2F1c2UgaXRzIG5hbWVzcGFjZSBj" + + "bGVhbnVwIHVzZXMgYW1iaWVudCBga3ViZWN0bGAuCgpGb3IgdGhlIENMSSBwcm9maWxlIGZsb3cs" + + "IGtlZXAKYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88Y2x1c3Rlci1uYW1l" + + "Pi1yZWdpc3Rlci12YWx1ZXMueWFtbGAKdW50aWwgdGVhcmRvd24gY29tcGxldGVzIGJlY2F1c2Ug" + + "YGRvd25gIHJlYWRzIGl0cyBjbHVzdGVyIElELiBGaXJzdCBxdWVyeSB0aGUKbGl2ZSByZWdpc3Ry" + + "YXRpb24gc2V0IHdpdGggdGhlIHNhbWUgY29tcGxldGUgcGVyc2lzdGVudCBwcmVmaXg6CgpgYGBi" + "YXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wt" + "cGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFu" + "ZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4g" + "XAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + "bnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0" + - "PiBcCiAgLS1pY21zLXVybCA8Y29tcHV0ZS1yZWFjaGFibGUtaWNtcy11cmw+IFwKICBkb3duIC0t" + - "cGxhbi1vbmx5IFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+" + - "IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1o" + - "b3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdl" + - "ZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBs" + - "YW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRl" + - "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxj" + - "b21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1p" + - "Y21zLXVybD4gXAogIGRvd24gXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0" + - "ZXItbmFtZT4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+CmBgYAoKUmVwZWF0IGBkb3duYCBmb3IgZWFj" + - "aCBjb21wdXRlIGNsdXN0ZXIuIEVhY2ggcnVuIGRlc3Ryb3lzIHRoYXQgY29tcHV0ZSBwbGFuZSBh" + - "bmQKdW5yZWdpc3RlcnMgaXRzIElDTVMgcm93LiBJdCByZW1vdmVzIHRoZSBjb250cm9sIHBsYW5l" + - "IG9ubHkgYWZ0ZXIgbm8gY2x1c3RlcgpyZWdpc3RyYXRpb25zIHJlbWFpbi4KUEsHCJZjvFkSMAAA" + - "EjAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAOwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + - "aW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvZGVidWdnaW5nLm1kVVQFAAEAps4SIyBEZWJ1Z2dpbmcg" + - "UmVmZXJlbmNlCgpSZWNpcGVzIGZvciBkaWFnbm9zaW5nIGFuZCBmaXhpbmcgY29tbW9uIE5WQ0Yg" + - "c2VsZi1tYW5hZ2VkIHN0YWNrIGZhaWx1cmVzLgoKIyMgUXVpY2sgU3RhdHVzIENvbW1hbmRzCgpg" + - "YGBiYXNoCiMgQWxsIHBvZHMgYWNyb3NzIGFsbCBuYW1lc3BhY2VzCmt1YmVjdGwgZ2V0IHBvZHMg" + - "LUEgLW8gd2lkZQoKIyBQb2RzIGluIGEgc3BlY2lmaWMgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHBv" + - "ZHMgLW4gPG5hbWVzcGFjZT4KCiMgQWxsIGhlbG0gcmVsZWFzZXMKaGVsbSBsaXN0IC1BCgojIFJl" + - "Y2VudCBldmVudHMgKG1vc3QgdXNlZnVsIGZvciBkaWFnbm9zaW5nIGZhaWx1cmVzKQprdWJlY3Rs" + - "IGdldCBldmVudHMgLW4gPG5hbWVzcGFjZT4gLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcKCiMg" + - "RGVzY3JpYmUgYSBzcGVjaWZpYyBwb2QgKHNob3dzIGV2ZW50cywgY29uZGl0aW9ucywgdm9sdW1l" + - "cykKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPgpgYGAKCiMj" + - "IEZhaWx1cmU6IEltYWdlUHVsbEJhY2tPZmYKCiMjIyBTeW1wdG9tcwoKYGBgCk5BTUUgICAgICAg" + - "ICAgIFJFQURZICAgU1RBVFVTICAgICAgICAgICAgIFJFU1RBUlRTICAgQUdFCmNhc3NhbmRyYS0w" + - "ICAgIDAvMSAgICAgSW1hZ2VQdWxsQmFja09mZiAgIDAgICAgICAgICAgNW0KYGBgCgpFdmVudHMg" + - "c2hvdzoKYGBgCkZhaWxlZCB0byBwdWxsIGltYWdlICJudmNyLmlvLy4uLi9pbWFnZTp0YWciOiA0" + - "MDEgVW5hdXRob3JpemVkCmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIHdoYXQg" + - "aW1hZ2UgaXMgZmFpbGluZwprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9k" + - "LW5hbWU+IHwgZ3JlcCAtQTUgIkV2ZW50czoiCgojIENoZWNrIGlmIHB1bGwgc2VjcmV0IGV4aXN0" + - "cyBpbiB0aGUgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHNlY3JldCBudmNyLWNyZWRzIC1uIDxuYW1l" + - "c3BhY2U+CgojIENoZWNrIGlmIHRoZSBwb2Qgc3BlYyBoYXMgaW1hZ2VQdWxsU2VjcmV0cwprdWJl" + - "Y3RsIGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiAtbyBqc29ucGF0aD0ney5zcGVj" + - "LmltYWdlUHVsbFNlY3JldHN9JwoKIyBDaGVjayBpZiB0aGUgU2VydmljZUFjY291bnQgaGFzIGlt" + - "YWdlUHVsbFNlY3JldHMKa3ViZWN0bCBnZXQgc2EgPHNhLW5hbWU+IC1uIDxuYW1lc3BhY2U+IC1v" + - "IGpzb25wYXRoPSd7LmltYWdlUHVsbFNlY3JldHN9JwpgYGAKCiMjIyBGaXhlcwoKMS4gKipTZWNy" + - "ZXQgbWlzc2luZyBpbiBuYW1lc3BhY2UqKjogQ3JlYXRlIGl0CiAgIGBgYGJhc2gKICAga3ViZWN0" + - "bCBjcmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgICAtLWRvY2tl" + - "ci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBc" + - "CiAgICAgLS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgIC0tbmFtZXNwYWNl" + - "PTxuYW1lc3BhY2U+IFwKICAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFw" + - "cGx5IC1mIC0KICAgYGBgCgoyLiAqKlNlY3JldCBleGlzdHMgYnV0IHBvZCBkb2Vzbid0IHJlZmVy" + - "ZW5jZSBpdCoqOiBUaGUgY2hhcnQgbmVlZHMgYGltYWdlUHVsbFNlY3JldHNgIGNvbmZpZ3VyZWQg" + - "dmlhIGhlbG1maWxlIHZhbHVlcy4gU2VlIFtwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0cy5t" + - "ZCkuCgozLiAqKkNoYXJ0IGRvZXNuJ3Qgc3VwcG9ydCBpbWFnZVB1bGxTZWNyZXRzKiogKG9wZW5i" + - "YW8sIGludm9jYXRpb24tc2VydmljZSwgZXNzLWFwaSwgbm90YXJ5LXNlcnZpY2UpOiBQYXRjaCBT" + - "ZXJ2aWNlQWNjb3VudHMgYW5kIHJlc3RhcnQgcG9kcy4gU2VlIFtwdWxsLXNlY3JldHMubWRdKHB1" + - "bGwtc2VjcmV0cy5tZCkuCgo0LiAqKldyb25nIGNyZWRlbnRpYWxzIGluIHNlY3JldCoqOiBEZWxl" + - "dGUgYW5kIHJlY3JlYXRlCiAgIGBgYGJhc2gKICAga3ViZWN0bCBkZWxldGUgc2VjcmV0IG52Y3It" + - "Y3JlZHMgLW4gPG5hbWVzcGFjZT4KICAgIyBSZWNyZWF0ZSB3aXRoIGNvcnJlY3QgY3JlZGVudGlh" + - "bHMKICAgYGBgCgojIyBGYWlsdXJlOiBJbml0OjAvMSBTdHVjayAoVmF1bHQgQWdlbnQpCgojIyMg" + - "U3ltcHRvbXMKClNlcnZpY2UgcG9kcyBzdHVjayBpbiBgSW5pdDowLzFgIGZvciBtaW51dGVzOgpg" + - "YGAKTkFNRSAgICAgICAgICAgICAgICAgICAgICAgIFJFQURZICAgU1RBVFVTICAgICBSRVNUQVJU" + - "UyAgIEFHRQpudmNmLWFwaS03ZjRjNzZmNzg4LTQ0dmx0ICAwLzIgICAgIEluaXQ6MC8xICAgMCAg" + - "ICAgICAgICAxMG0KYGBgCgojIyMgRGlhZ25vc2lzCgpUaGUgaW5pdCBjb250YWluZXIgaXMgdGhl" + - "IHZhdWx0LWFnZW50LWluaXQgaW5qZWN0b3Igd2FpdGluZyBmb3IgT3BlbkJhby4KCmBgYGJhc2gK" + - "IyBDaGVjayBPcGVuQmFvIHBvZHMKa3ViZWN0bCBnZXQgcG9kcyAtbiB2YXVsdC1zeXN0ZW0KCiMg" + - "Q2hlY2sgaWYgT3BlbkJhbyBtaWdyYXRpb24gam9iIHJhbgprdWJlY3RsIGdldCBqb2JzIC1uIHZh" + - "dWx0LXN5c3RlbQoKIyBDaGVjayBPcGVuQmFvIHBvZCBsb2dzCmt1YmVjdGwgbG9ncyAtbiB2YXVs" + - "dC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXItMCAtYyBvcGVuYmFvCgojIENoZWNrIGluaXQgY29udGFp" + - "bmVyIGxvZ3Mgb24gdGhlIHN0dWNrIHBvZAprdWJlY3RsIGxvZ3MgLW4gPG5hbWVzcGFjZT4gPHBv" + - "ZC1uYW1lPiAtYyB2YXVsdC1hZ2VudC1pbml0CmBgYAoKIyMjIEZpeGVzCgoxLiAqKk9wZW5CYW8g" + - "cG9kcyBub3QgcnVubmluZyoqOiBDaGVjayB0aGVpciBldmVudHMgZm9yIGltYWdlIHB1bGwgaXNz" + - "dWVzLCByZXNvdXJjZSBpc3N1ZXMsIGV0Yy4KCjIuICoqT3BlbkJhbyBtaWdyYXRpb24gam9iIGRp" + - "ZG4ndCBydW4qKjogVGhpcyBoYXBwZW5zIHdoZW4gYGhlbG1maWxlIHN5bmNgIHdhcyBpbnRlcnJ1" + - "cHRlZC4gRGVzdHJveSBhbmQgcmUtc3luYyBvcGVuYmFvOgogICBgYGBiYXNoCiAgIEhFTE1GSUxF" + - "X0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9b3BlbmJhby1zZXJ2ZXIgZGVzdHJv" + - "eQogICBrdWJlY3RsIGRlbGV0ZSBuYW1lc3BhY2UgdmF1bHQtc3lzdGVtCiAgIGt1YmVjdGwgY3Jl" + - "YXRlIG5hbWVzcGFjZSB2YXVsdC1zeXN0ZW0KICAgIyBSZS1jcmVhdGUgcHVsbCBzZWNyZXQgaWYg" + - "bmVlZGVkCiAgIEhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9b3Bl" + - "bmJhby1zZXJ2ZXIgc3luYwogICBgYGAKCjMuICoqT3BlbkJhbyBwb2RzIHJ1bm5pbmcgYnV0IG5v" + - "dCBpbml0aWFsaXplZCoqOiBDaGVjayB1bnNlYWwgc3RhdHVzOgogICBgYGBiYXNoCiAgIGt1YmVj" + - "dGwgZXhlYyAtbiB2YXVsdC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXItMCAtYyBvcGVuYmFvIC0tIGJh" + - "byBzdGF0dXMKICAgYGBgCgo0LiAqKmB2YXVsdC1hZ2VudC1pbml0YCBsb2dzIGBhdXRoL2p3dC9s" + - "b2dpbmAgLT4gYDQwMCAuLi4gbm8ga25vd24ga2V5IHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQgdGhl" + - "IHRva2VuIHNpZ25hdHVyZWAqKgogICAoY29tbW9uIG9uIEFLUywgYW5kIG9uIGFueSBjbHVzdGVy" + - "IHdob3NlIE9JREMgaXNzdWVyIHB1Ymxpc2hlcyBhIHJvdGF0aW5nIG11bHRpLWtleSBKV0tTKToK" + - "ICAgdGhlIE9wZW5CYW8gYGF1dGgvand0YCBtZXRob2Qgd2FzIGNvbmZpZ3VyZWQgd2l0aCBhIHNp" + - "bmdsZSBzdGF0aWMgbW91bnRlZCBwdWJsaWMga2V5CiAgIChgand0X3ZhbGlkYXRpb25fcHVia2V5" + - "c2ApIGluc3RlYWQgb2YgdGhlIGlzc3VlcidzIGxpdmUgSldLUywgc28gaXQgY2Fubm90IHZhbGlk" + - "YXRlIHRoZQogICBjbHVzdGVyLXNpZ25lZCBTZXJ2aWNlQWNjb3VudCB0b2tlbnMgdGhlIHZhdWx0" + - "LWFnZW50cyBwcmVzZW50LiBFdmVyeSBzZXJ2aWNlJ3MKICAgYHZhdWx0LWFnZW50LWluaXRgIHRo" + - "ZW4gbG9vcHMgb24gdGhhdCA0MDAgYW5kIHRoZSBwb2QgbmV2ZXIgbGVhdmVzIGBJbml0OjAvMWAu" + - "IFRoaXMgaXMgdGhlCiAgIGJlaGF2aW9yIG9mIHRoZSBiYXNlIGRlZmF1bHQgYG9wZW5iYW8ubWln" + - "cmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2VgOyB0aGUKICAgbWlncmF0aW9u" + - "IGxvZyBzaG93cyBgT0lEQyBpc3N1ZXIgZGlzY292ZXJ5IGlzIGRpc2FibGVkLiBVc2luZyBTZXJ2" + - "aWNlQWNjb3VudCBpc3N1ZXIgYW5kCiAgIG1vdW50ZWQgcHVibGljIGtleSBmYWxsYmFja2AuIEVu" + - "YWJsZSBpc3N1ZXIgZGlzY292ZXJ5IHNvIHRoZSBtaWdyYXRpb24gdXNlcyB0aGUgbGl2ZSBKV0tT" + - "LAogICB0aGVuIHJlLXJ1biBpdDoKICAgYGBgYmFzaAogICAjIEluIHlvdXIgZW52IHZhbHVlcyAo" + - "ZS5nLiBlbnZpcm9ubWVudHMvPGVudj4ueWFtbCksIHNldDoKICAgIyAgIG9wZW5iYW86CiAgICMg" + - "ICAgIG1pZ3JhdGlvbnM6CiAgICMgICAgICAgaXNzdWVyRGlzY292ZXJ5OgogICAjICAgICAgICAg" + - "ZW5hYmxlZDogdHJ1ZQogICBrdWJlY3RsIGRlbGV0ZSBqb2IgLW4gdmF1bHQtc3lzdGVtIG9wZW5i" + - "YW8tc2VydmVyLW1pZ3JhdGlvbnMKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2Vs" + - "ZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBzeW5jCiAgIGBgYAogICBUaGUgbWlncmF0aW9uIGxv" + - "ZyBzaG91bGQgdGhlbiBzaG93IGBSZWNlaXZlZCBkaXNjb3ZlcnkgZG9jdW1lbnQgZnJvbQogICAu" + - "Li4vLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb25gIGFuZCBgRmluYWwgT3BlbkJhbyBK" + - "V1QgSldLUyBVUkwgc2V0IHRvOgogICAuLi4vb3BlbmlkL3YxL2p3a3NgLCBhbmQgdGhlIHNlcnZp" + - "Y2UgcG9kcyBhdXRoZW50aWNhdGUgYW5kIHJlYWNoIFJlYWR5IHdpdGhpbiB+MSBtaW4uCiAgIEFL" + - "UyBjbHVzdGVycyB3aXRoIHRoZSBjbHVzdGVyIE9JREMgaXNzdWVyIGVuYWJsZWQgKHRoZSBgYWtz" + - "LWNsdXN0ZXJgIGRlZmF1bHQpIGFsd2F5cyBuZWVkCiAgIHRoaXMgYmVjYXVzZSB0aGUgc3RhdGlj" + - "LXB1YmtleSBmYWxsYmFjayBjYW5ub3QgbWF0Y2ggdGhlIGlzc3VlcidzIHJvdGF0aW5nIHNpZ25p" + - "bmcga2V5cy4KCiMjIEZhaWx1cmU6IE9PTUtpbGxlZCBvbiBDYXNzYW5kcmEKCiMjIyBTeW1wdG9t" + - "cwoKYGBgCk5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMgICAgUkVTVEFSVFMgICBBR0UKY2Fz" + - "c2FuZHJhLTAgICAwLzEgICAgIE9PTUtpbGxlZCAgMyAgICAgICAgIDEwbQpgYGAKCiMjIyBEaWFn" + - "bm9zaXMKCmBgYGJhc2gKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gY2Fzc2FuZHJhLXN5c3RlbSBj" + - "YXNzYW5kcmEtMCB8IGdyZXAgLUEzICJMYXN0IFN0YXRlIgpgYGAKCiMjIyBGaXgKCk92ZXJyaWRl" + - "IENhc3NhbmRyYSByZXNvdXJjZXMgdmlhIGhlbG1maWxlIHZhbHVlcy4gU2VlIEV4YW1wbGUgMSBp" + - "bgpbZXhhbXBsZXMubWRdKC4uL2V4YW1wbGVzLm1kKS4KCmBgYHlhbWwKLSBjYXNzYW5kcmE6CiAg" + - "ICByZXNvdXJjZXM6CiAgICAgIGxpbWl0czoKICAgICAgICBjcHU6ICI4IgogICAgICAgIG1lbW9y" + - "eTogODE5Mk1pCiAgICAgIHJlcXVlc3RzOgogICAgICAgIGNwdTogIjIiCiAgICAgICAgbWVtb3J5" + - "OiA0MDk2TWkKYGBgCgpOb3RlOiBgcmVzb3VyY2VQcmVzZXRgIGlzIG5vdCBhdmFpbGFibGUgaW4g" + - "dGhlIE5WQ0YgY2Fzc2FuZHJhIHdyYXBwZXIgY2hhcnQuIFVzZSBleHBsaWNpdCBgcmVzb3VyY2Vz" + - "YC4KCiMjIEZhaWx1cmU6IFBvZHMgU3R1Y2sgaW4gUGVuZGluZwoKIyMjIFN5bXB0b21zCgpgYGAK" + - "TkFNRSAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5kcmEt" + - "MCAgIDAvMSAgICAgUGVuZGluZyAgIDAgICAgICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoK" + - "YGBgYmFzaAojIENoZWNrIGV2ZW50cyBmb3Igc2NoZWR1bGluZyBmYWlsdXJlcwprdWJlY3RsIGRl" + - "c2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+CgojIENvbW1vbiBjYXVzZXM6CiMg" + - "LSAiMC8xMiBub2RlcyBhcmUgYXZhaWxhYmxlOiAxMiBub2RlKHMpIGRpZG4ndCBtYXRjaCBQb2Qn" + - "cyBub2RlIGFmZmluaXR5IgojIC0gIjAvMTIgbm9kZXMgYXJlIGF2YWlsYWJsZTogMTIgSW5zdWZm" + - "aWNpZW50IG1lbW9yeSIKIyAtICJwZXJzaXN0ZW50dm9sdW1lY2xhaW0gbm90IGZvdW5kIgpgYGAK" + - "CiMjIyBGaXhlcwoKMS4gKipOb2RlIHNlbGVjdG9yIG1pc21hdGNoKio6IENoZWNrIGBub2RlU2Vs" + - "ZWN0b3JzYCBpbiBlbnZpcm9ubWVudCBmaWxlCiAgIGBgYGJhc2gKICAga3ViZWN0bCBnZXQgbm9k" + - "ZXMgLS1zaG93LWxhYmVscyB8IGdyZXAgbnZjZgogICBgYGAKCjIuICoqU3RvcmFnZSBjbGFzcyBu" + - "b3QgZm91bmQqKjogQ2hlY2sgc3RvcmFnZSBjbGFzcyBleGlzdHMKICAgYGBgYmFzaAogICBrdWJl" + - "Y3RsIGdldCBzdG9yYWdlY2xhc3MKICAgYGBgCgozLiAqKkluc3VmZmljaWVudCByZXNvdXJjZXMq" + - "KjogQ2hlY2sgbm9kZSBjYXBhY2l0eQogICBgYGBiYXNoCiAgIGt1YmVjdGwgZGVzY3JpYmUgbm9k" + - "ZSA8bm9kZS1uYW1lPiB8IGdyZXAgLUE1ICJBbGxvY2F0ZWQgcmVzb3VyY2VzIgogICBgYGAKCiMj" + - "IEZhaWx1cmU6IEhlbG0gUmVsZWFzZSBpbiBGYWlsZWQgU3RhdGUKCiMjIyBTeW1wdG9tcwoKYGBg" + - "YmFzaApoZWxtIGxpc3QgLUEKIyBTaG93cyByZWxlYXNlIHdpdGggU1RBVFVTOiBmYWlsZWQKYGBg" + - "CgpSZS1ydW5uaW5nIGBoZWxtZmlsZSBzeW5jYCBhcHBlYXJzIHRvIHN1Y2NlZWQgYnV0IHNlcnZp" + - "Y2VzIGRvbid0IHdvcmsgKG1pZ3JhdGlvbnMgc2tpcHBlZCkuCgojIyMgRGlhZ25vc2lzCgpgYGBi" + - "YXNoCmhlbG0gaGlzdG9yeSA8cmVsZWFzZS1uYW1lPiAtbiA8bmFtZXNwYWNlPgpgYGAKCiMjIyBG" + - "aXgKCk11c3QgZGVzdHJveSB0aGUgZmFpbGVkIHJlbGVhc2UgYW5kIHJlLXN5bmMgKG5vdCBqdXN0" + - "IGFwcGx5KToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3Ig" + - "bmFtZT08cmVsZWFzZT4gZGVzdHJveQojIElmIG5hbWVzcGFjZSBuZWVkcyBjbGVhbnVwOgprdWJl" + - "Y3RsIGRlbGV0ZSBuYW1lc3BhY2UgPG5hbWVzcGFjZT4Ka3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNl" + - "IDxuYW1lc3BhY2U+CiMgUmUtY3JlYXRlIHB1bGwgc2VjcmV0IGlmIG5lZWRlZApIRUxNRklMRV9F" + - "TlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPTxyZWxlYXNlPiBzeW5jCmBgYAoKIyMg" + - "RmFpbHVyZTogQWNjb3VudCBCb290c3RyYXAgSm9iIEZhaWxlZAoKIyMjIFN5bXB0b21zCgpTZXJ2" + - "aWNlcyBkZXBsb3kgYnV0IGZ1bmN0aW9ucyBjYW4ndCBiZSBjcmVhdGVkLiBFdmVudHMgc2hvdyBi" + - "b290c3RyYXAgam9iIGZhaWx1cmUuCgojIyMgRGlhZ25vc2lzCgpgYGBiYXNoCiMgQ2hlY2sgYm9v" + - "dHN0cmFwIGpvYiBzdGF0dXMKa3ViZWN0bCBnZXQgam9icyAtbiBudmNmCgojIEdldCBsb2dzIChq" + - "b2IgYXV0by1kZWxldGVzIGFmdGVyIH41IG1pbnV0ZXMpCmt1YmVjdGwgbG9ncyBqb2IvbnZjZi1h" + - "cGktYWNjb3VudC1ib290c3RyYXAgLW4gbnZjZgoKIyBDaGVjayBBUEkgbG9ncwprdWJlY3RsIGxv" + - "Z3MgLW4gbnZjZiAtbCBhcHAua3ViZXJuZXRlcy5pby9uYW1lPW52Y2YtYXBpIC0tdGFpbD0xMDAK" + - "YGBgCgojIyMgQ29tbW9uIENhdXNlcwoKMS4gKipXcm9uZyBiYXNlNjQgY3JlZGVudGlhbHMqKjog" + - "Q3JlZGVudGlhbHMgaW4gYHNlY3JldHMvPGVudj4tc2VjcmV0cy55YW1sYCBtdXN0IGJlIGAkb2F1" + - "dGh0b2tlbjpBUElfS0VZYCBiYXNlNjQtZW5jb2RlZCwgbm90IGp1c3QgdGhlIEFQSSBrZXkKICAg" + - "YGBgYmFzaAogICAjIFZlcmlmeSB5b3VyIGVuY29kZWQgY3JlZGVudGlhbAogICBlY2hvICdZT1VS" + - "X0JBU0U2NF9TVFJJTkcnIHwgYmFzZTY0IC1kCiAgICMgU2hvdWxkIG91dHB1dDogJG9hdXRodG9r" + - "ZW46bnZhcGkteHh4eHgKICAgYGBgCgoyLiAqKlJlZ2lzdHJ5IHVucmVhY2hhYmxlKio6IEFQSSBj" + - "YW4ndCByZWFjaCB0aGUgcmVnaXN0cnkgc3BlY2lmaWVkIGluIGBhY2NvdW50Qm9vdHN0cmFwLnJl" + - "Z2lzdHJ5Q3JlZGVudGlhbHNgCgojIyMgRml4CgpGaXggY3JlZGVudGlhbHMgaW4gc2VjcmV0cyBm" + - "aWxlLCB0aGVuIHJlY292ZXIgc2VydmljZXMgd2l0aG91dCBkZXN0cm95aW5nIGRlcGVuZGVuY2ll" + - "czoKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFz" + - "ZS1ncm91cD1zZXJ2aWNlcyBkZXN0cm95Cmt1YmVjdGwgZGVsZXRlIG5hbWVzcGFjZSBudmNmIGFw" + - "aS1rZXlzIGVzcyBzaXMgLS1pZ25vcmUtbm90LWZvdW5kCmt1YmVjdGwgY3JlYXRlIG5hbWVzcGFj" + - "ZSBudmNmICYmIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBhcGkta2V5cyAmJiBcCiAga3ViZWN0" + - "bCBjcmVhdGUgbmFtZXNwYWNlIGVzcyAmJiBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2Ugc2lzCiMg" + - "UmUtY3JlYXRlIHB1bGwgc2VjcmV0cyBpZiBuZWVkZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1m" + - "aWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1zZXJ2aWNlcyBzeW5jCmBgYAoKIyMgRmFpbHVy" + - "ZTogTlZDQSBDbGVhbnVwIFN0dWNrIChGaW5hbGl6ZXJzKQoKIyMjIFN5bXB0b21zCgpDb21wdXRl" + - "LXBsYW5lIGNsZWFudXAgaGFuZ3MuIE5hbWVzcGFjZXMKc3R1Y2sgaW4gYFRlcm1pbmF0aW5nYDoK" + - "CmBgYGJhc2gKa3ViZWN0bCBnZXQgbnMKIyBudmNhLW9wZXJhdG9yICAgIFRlcm1pbmF0aW5nICAg" + - "MTBtCiMgbnZjZi1iYWNrZW5kICAgICBUZXJtaW5hdGluZyAgIDEwbQpgYGAKCiMjIyBGaXgKClJ1" + - "biB0aGlzIG9ubHkgYWdhaW5zdCB0aGUgY29tcHV0ZSBjb250ZXh0LCBhZnRlciB0aGUgbm9ybWFs" + - "IGNvbXB1dGUtcGxhbmUKdGVhcmRvd24gaGFzIGZhaWxlZC4gUmVtb3ZlIGZpbmFsaXplcnMgZnJv" + - "bSBOVkNGQmFja2VuZCBjdXN0b20gcmVzb3VyY2VzIGFuZApmb3JjZS1kZWxldGUgc3R1Y2sgbmFt" + - "ZXNwYWNlczoKCmBgYGJhc2gKZXhwb3J0IENPTVBVVEVfQ09OVEVYVD08Y29tcHV0ZS1wbGFuZS1j" + - "b250ZXh0PgoKIyBSZW1vdmUgZmluYWxpemVycyBmcm9tIE5WQ0ZCYWNrZW5kIHJlc291cmNlcwpr" + - "dWJlY3RsIC0tY29udGV4dCAiJENPTVBVVEVfQ09OVEVYVCIgZ2V0IG52Y2ZiYWNrZW5kcyAtQSAt" + - "byBqc29uIHwgXAogIGpxICcuaXRlbXNbXSB8IC5tZXRhZGF0YS5uYW1lc3BhY2UgKyAiLyIgKyAu" + - "bWV0YWRhdGEubmFtZScgLXIgfCBcCiAgeGFyZ3MgLUl7fSBzaCAtYyAnY29udGV4dD0iJDEiOyBu" + - "cz0iJHsyJSUvKn0iOyBuYW1lPSIkezIjIyovfSI7IGt1YmVjdGwgLS1jb250ZXh0ICIkY29udGV4" + - "dCIgcGF0Y2ggbnZjZmJhY2tlbmQgIiRuYW1lIiAtbiAiJG5zIiAtLXR5cGU9bWVyZ2UgLXAgIntc" + - "Im1ldGFkYXRhXCI6e1wiZmluYWxpemVyc1wiOltdfX0iJyBfICIkQ09NUFVURV9DT05URVhUIiB7" + - "fQoKIyBGb3JjZS1kZWxldGUgc3R1Y2sgbmFtZXNwYWNlcyBieSBjbGVhcmluZyB0aGVpciBmaW5h" + - "bGl6ZXJzCmZvciBucyBpbiBudmNhLW9wZXJhdG9yIG52Y2YtYmFja2VuZDsgZG8KICBrdWJlY3Rs" + - "IC0tY29udGV4dCAiJENPTVBVVEVfQ09OVEVYVCIgZ2V0IG5hbWVzcGFjZSAiJG5zIiAtbyBqc29u" + - "IDI+L2Rldi9udWxsIHwgXAogICAganEgJy5zcGVjLmZpbmFsaXplcnMgPSBbXScgfCBcCiAgICBr" + - "dWJlY3RsIC0tY29udGV4dCAiJENPTVBVVEVfQ09OVEVYVCIgcmVwbGFjZSBcCiAgICAgIC0tcmF3" + - "ICIvYXBpL3YxL25hbWVzcGFjZXMvJG5zL2ZpbmFsaXplIiAtZiAtIDI+L2Rldi9udWxsCmRvbmUK" + - "YGBgCgojIyBGYWlsdXJlOiBOVkNBIE9wZXJhdG9yIE1pc3Npbmcgb3IgTm90IFJlYWR5CgojIyMg" + - "U3ltcHRvbXMKCkFmdGVyIGNvbXB1dGUtcGxhbmUgaW5zdGFsbCBjb21wbGV0ZXMsIG5vIGBudmNh" + - "LW9wZXJhdG9yYCBEZXBsb3ltZW50IGV4aXN0cywgb3IKaXQgZXhpc3RzIGJ1dCBwb2RzIGFyZSBu" + - "b3QgcmVhZHk6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + - "eHQ+IGdldCBkZXBsb3ltZW50IG52Y2Etb3BlcmF0b3IgXAogIC1uIG52Y2Etb3BlcmF0b3IKa3Vi" + - "ZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IHBvZHMgLW4gbnZjYS1v" + - "cGVyYXRvcgpgYGAKCiMjIyBEaWFnbm9zaXMgYW5kIEZpeGVzCgpGaXJzdCBpZGVudGlmeSB3aGV0" + - "aGVyIHRoZSBpbnN0YWxsYXRpb24gdXNlZCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZsb3cgb3IgdGhl" + - "CkNMSSBwcm9maWxlIGZsb3cuIFJlLXJ1biBvbmx5IHRoYXQgZmxvdydzIHJlZ2lzdHJhdGlvbiBh" + - "bmQgaW5zdGFsbGF0aW9uIHN0ZXBzCmZyb20gW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0" + - "aW9uXShjb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkuIERvIG5vdApzdWJzdGl0dXRlIG9u" + - "ZSBoYW5kb2ZmIGZvciB0aGUgb3RoZXIuCgpJZiBpbnN0YWxsYXRpb24gc3VjY2VlZHMgYnV0IHBv" + - "ZHMgc3RpbGwgZmFpbCwgaW5zcGVjdCB0aGUgY29tcHV0ZSBjb250ZXh0OgoKYGBgYmFzaAprdWJl" + - "Y3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBkZXNjcmliZSBkZXBsb3kgbnZj" + - "YS1vcGVyYXRvciBcCiAgLW4gbnZjYS1vcGVyYXRvcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0" + - "ZS1wbGFuZS1jb250ZXh0PiBsb2dzIGRlcGxveW1lbnQvbnZjYS1vcGVyYXRvciBcCiAgLW4gbnZj" + - "YS1vcGVyYXRvciAtLXRhaWw9MjAwCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNv" + - "bnRleHQ+IGdldCBudmNmYmFja2VuZCAtbiBudmNhLW9wZXJhdG9yCmBgYAoKRm9yIHByaXZhdGUg" + - "cmVnaXN0cnkgZmFpbHVyZXMsIHZlcmlmeSB0aGF0IHRoZSBwdWxsIHNlY3JldCBleGlzdHMgaW4K" + - "YG52Y2Etb3BlcmF0b3JgLiBUaGUgY2hhcnQgYW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0byBgbnZj" + - "YS1zeXN0ZW1gOyBkbyBub3QgdXNlIGEKYnJvYWRlciBtYW51YWwgbmFtZXNwYWNlIGxvb3AuIFNl" + - "ZQpbcHVsbC1zZWNyZXRzLm1kXShwdWxsLXNlY3JldHMubWQjY29tcHV0ZS1wbGFuZS1zZWNyZXQp" + - "LgoKIyMgRmFpbHVyZTogR2F0ZXdheSBFbmRwb2ludCBDaGFuZ2VkCgojIyMgU3ltcHRvbXMKClJl" + - "cXVlc3RzIHRocm91Z2ggdGhlIGNvbmZpZ3VyZWQgcm91dGUgZG9tYWluIGZhaWwgYWZ0ZXIgdGhl" + - "IEdhdGV3YXkgb3IgaXRzIGxvYWQgYmFsYW5jZXIgaXMgcmVwbGFjZWQuIFRoZSBHYXRld2F5IHJl" + - "cG9ydHMgYSBuZXcgZW5kcG9pbnQuCgojIyMgRGlhZ25vc2lzCgpgYGBiYXNoCkdBVEVXQVlfQURE" + - "Uj0kKGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5" + - "IFwKICBudmNmLWdhdGV3YXkgLW4gZW52b3ktZ2F0ZXdheSBcCiAgLW8ganNvbnBhdGg9J3suc3Rh" + - "dHVzLmFkZHJlc3Nlc1swXS52YWx1ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSIgpkaWcgK3No" + - "b3J0ICJhcGkuPGRvbWFpbj4iCmN1cmwgLUggIkhvc3Q6IGFwaS48ZG9tYWluPiIgImh0dHA6Ly8k" + - "R0FURVdBWV9BRERSL2hlYWx0aCIKCiMgQ2hlY2sgZGlyZWN0IGFkZHJlc3MgZmllbGRzIHVzZWQg" + - "YnkgYSBzcGxpdCBkZXBsb3ltZW50CmdyZXAgbnZjZk5hdHNTZXJ2aWNlVVJMIGRlcGxveS9zdGFj" + - "a3Mvc2VsZi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdyZXAgLUUgJ2ljbXNTZXJ2" + - "aWNlfHJldmFsU2VydmljZXxuYXRzJyBcCiAgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxh" + - "bmUvZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwKYGBgCgojIyMgRml4CgpLZWVwIGBnbG9iYWwuZG9t" + - "YWluYCwgcm91dGUgaG9zdG5hbWVzLCBhbmQgSG9zdCBvdmVycmlkZXMgdW5jaGFuZ2VkLiBVcGRh" + - "dGUgRE5TCm9yIHRoZSBkaXJlY3QgY2xpZW50IGRlc3RpbmF0aW9uLiBGb3Igc3BsaXQgZGVwbG95" + - "bWVudHMsIHVwZGF0ZSBvbmx5IGRpcmVjdApHYXRld2F5LWFkZHJlc3MgZmllbGRzIGFuZCByZWZy" + - "ZXNoIHJlZ2lzdHJhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIHRocm91Z2ggdGhlCnNhbWUgc2VsZWN0" + - "ZWQgaGFuZG9mZi4gU2VlCltFeGFtcGxlIDRdKC4uL2V4YW1wbGVzLm1kI2V4YW1wbGUtNC1yZWNv" + - "dmVyLWZyb20tYS1nYXRld2F5LWVuZHBvaW50LWNoYW5nZSkuCgojIyBVc2VmdWwgTmFtZXNwYWNl" + - "LXRvLVNlcnZpY2UgTWFwcGluZwoKUXVpY2sgcmVmZXJlbmNlIGZvciB3aGljaCBzZXJ2aWNlcyBy" + - "dW4gaW4gd2hpY2ggbmFtZXNwYWNlOgoKfCBOYW1lc3BhY2UgfCBTZXJ2aWNlcyB8CnwtLS0tLS0t" + - "LS0tLXwtLS0tLS0tLS0tfAp8IG5hdHMtc3lzdGVtIHwgbmF0cyB8CnwgY2Fzc2FuZHJhLXN5c3Rl" + - "bSB8IGNhc3NhbmRyYSB8CnwgdmF1bHQtc3lzdGVtIHwgb3BlbmJhby1zZXJ2ZXIgfAp8IG52Y2Yg" + - "fCBhcGksIGludm9jYXRpb24tc2VydmljZSwgZ3JwYy1wcm94eSwgbm90YXJ5LXNlcnZpY2UsIHJl" + - "dmFsLCBsbG0tcmVxdWVzdC1yb3V0ZXIsIGxsbS1hcGktZ2F0ZXdheSB8CnwgYXBpLWtleXMgfCBh" + - "cGkta2V5cywgYWRtaW4taXNzdWVyLXByb3h5IHwKfCBlc3MgfCBlc3MtYXBpIHwKfCBzaXMgfCBz" + - "aXMgfAp8IGVudm95LWdhdGV3YXktc3lzdGVtIHwgZW52b3kgZ2F0ZXdheSAoaW5ncmVzcyBjb250" + - "cm9sbGVyKSB8CnwgZW52b3ktZ2F0ZXdheSB8IGdhdGV3YXkgcmVzb3VyY2UgKyByb3V0ZXMgfApQ" + - "SwcIVj5nkJUwAACVMAAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAABEAAkAZGF0YS9udmNmLXNl" + - "bGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWRV" + - "VAUAAQCmzhIjIEhlbG1maWxlIFN0cnVjdHVyZSBSZWZlcmVuY2UKCiMjIERpcmVjdG9yeSBMYXlv" + - "dXQKCmBgYApudmNmLXNlbGYtbWFuYWdlZC1zdGFjay8KfC0tIGhlbG1maWxlLmQvCnwgICB8LS0g" + - "MDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsICAjIE5BVFMsIENhc3NhbmRyYSwgT3BlbkJhbwp8" + - "ICAgfC0tIDAyLWNvcmUueWFtbC5nb3RtcGwgICAgICAgICAgIyBOVkNGIHNlcnZpY2VzICsgaW5n" + - "cmVzcwp8ICAgYC0tIDAzLW9ic2VydmFiaWxpdHkueWFtbC5nb3RtcGwgIyBPYnNlcnZhYmlsaXR5" + - "IHN0YWNrIChvcHRpb25hbCkKfC0tIGVudmlyb25tZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAg" + - "ICAgICAgICAgICAgICAgICMgRGVmYXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwgICBg" + - "LS0gPGVudi1uYW1lPi55YW1sICAgICAgICAgICAgICAjIFBlci1lbnZpcm9ubWVudCBvdmVycmlk" + - "ZXMKfC0tIHNlY3JldHMvCnwgICBgLS0gPGVudi1uYW1lPi1zZWNyZXRzLnlhbWwgICAgICAjIFNl" + - "bnNpdGl2ZSB2YWx1ZXMgKHJlZ2lzdHJ5IGNyZWRzLCBwYXNzd29yZHMpCmAtLSBnbG9iYWwueWFt" + - "bC5nb3RtcGwgICAgICAgICAgICAgICAjIEdvIHRlbXBsYXRlIHRoYXQgY29uc3RydWN0cyBwZXIt" + - "Y2hhcnQgdmFsdWVzCgpudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2svCnwtLSBoZWxtZmlsZS5kLwp8" + - "ICAgfC0tIDAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbCAgIyBDb21wdXRlIHBsYW5lIGRlcGVu" + - "ZGVuY3kgY29tcG9uZW50cwp8ICAgYC0tIDAyLW52Y2EueWFtbC5nb3RtcGwgICAgICAgICAgIyBu" + - "dmNhLW9wZXJhdG9yIGNoYXJ0IGFuZCBudmNhIGNvbmZpZ3VyYXRpb24KfC0tIGVudmlyb25tZW50" + - "cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAgICAgICAgICAgICMgRGVmYXVsdCB2YWx1ZXMg" + - "KGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVudi1uYW1lPi55YW1sICAgICAgICAgICAgICAj" + - "IFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKYC0tIGdsb2JhbC55YW1sLmdvdG1wbCAgICAgICAg" + - "ICAgICAgICMgR28gdGVtcGxhdGUgdGhhdCBjb25zdHJ1Y3RzIHBlci1jaGFydCB2YWx1ZXMKYGBg" + - "CgpUaGVzZSBzdGFja3MgaGF2ZSBzZXBhcmF0ZSBlbnZpcm9ubWVudHMgYW5kIGNsdXN0ZXIgY29u" + - "dGV4dHMuIFRoZSBIZWxtZmlsZQp2YWx1ZXMgZmxvdyBhdXRob3JzIGJvdGggZW52aXJvbm1lbnQg" + - "ZmlsZXMuIFRoZSBDTEkgcHJvZmlsZSBmbG93IGluc3RlYWQgdXNlcwp0aGUgQ0xJLWdlbmVyYXRl" + - "ZCBjb250cm9sLXBsYW5lIHByb2ZpbGUgYXMgaXRzIGVuZHBvaW50IHNvdXJjZS4gRG8gbm90IG1p" + - "eCB0aGUKaGFuZG9mZnMuIFNlZSBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNv" + - "bXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4KCiMjIEdvdG1wbCBGaWxlcyBhbmQgVGhlaXIg" + - "UmVsZWFzZXMKCiMjIyAwMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGwKCnwgUmVsZWFzZSB8IENo" + - "YXJ0IHwgTmFtZXNwYWNlIHwgTm90ZXMgfAp8LS0tLS0tLS0tfC0tLS0tLS18LS0tLS0tLS0tLS18" + - "LS0tLS0tLXwKfCBuYXRzIHwgaGVsbS1udmNmLW5hdHMgfCBuYXRzLXN5c3RlbSB8IE1lc3NhZ2lu" + - "ZyB8Cnwgb3BlbmJhby1zZXJ2ZXIgfCBoZWxtLW52Y2Ytb3BlbmJhby1zZXJ2ZXIgfCB2YXVsdC1z" + - "eXN0ZW0gfCBTZWNyZXRzIG1hbmFnZW1lbnQsIGRlcGVuZHMgb24gbmF0cyB8CnwgY2Fzc2FuZHJh" + - "IHwgaGVsbS1udmNmLWNhc3NhbmRyYSB8IGNhc3NhbmRyYS1zeXN0ZW0gfCBEYXRhYmFzZSB8CgpV" + - "c2VzIGA8PDogKmRlcGVuZGVuY3lgIHRlbXBsYXRlIGluaGVyaXRhbmNlIHdpdGggYHJlbGVhc2Ut" + - "Z3JvdXA6IGRlcGVuZGVuY2llc2AgbGFiZWwuCgojIyMgMDItY29yZS55YW1sLmdvdG1wbAoKfCBS" + - "ZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBMYWJlbCB8CnwtLS0tLS0tLS18LS0tLS0tLXwt" + - "LS0tLS0tLS0tLXwtLS0tLS0tfAp8IGFwaS1rZXlzIHwgaGVsbS1udmNmLWFwaS1rZXlzIHwgYXBp" + - "LWtleXMgfCBzZXJ2aWNlcyB8Cnwgc2lzIHwgaGVsbS1udmNmLXNpcyB8IHNpcyB8IHNlcnZpY2Vz" + - "IHwKfCBhcGkgfCBoZWxtLW52Y2YtYXBpIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBpbnZvY2F0aW9u" + - "LXNlcnZpY2UgfCBoZWxtLW52Y2YtaW52b2NhdGlvbi1zZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2Vz" + - "IHwKfCBncnBjLXByb3h5IHwgaGVsbS1udmNmLWdycGMtcHJveHkgfCBudmNmIHwgc2VydmljZXMg" + - "fAp8IGVzcy1hcGkgfCBoZWxtLW52Y2YtZXNzLWFwaSB8IGVzcyB8IHNlcnZpY2VzIHwKfCBub3Rh" + - "cnktc2VydmljZSB8IGhlbG0tbnZjZi1ub3Rhcnktc2VydmljZSB8IG52Y2YgfCBzZXJ2aWNlcyB8" + - "CnwgcmV2YWwgfCBoZWxtLXJldmFsIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBsbG0tcmVxdWVzdC1y" + - "b3V0ZXIgfCBudmNmL2hlbG0tbnZjZi1sbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNmIHwgc2Vydmlj" + - "ZXMgfAp8IGxsbS1hcGktZ2F0ZXdheSB8IG52Y2YvaGVsbS1udmNmLWxsbS1hcGktZ2F0ZXdheSB8" + - "IG52Y2YgfCBzZXJ2aWNlcyB8CnwgYWRtaW4taXNzdWVyLXByb3h5IHwgaGVsbS1hZG1pbi10b2tl" + - "bi1pc3N1ZXItcHJveHkgfCBhcGkta2V5cyB8IChubyByZWxlYXNlLWdyb3VwIGxhYmVsKSB8Cnwg" + - "aW5ncmVzcyB8IG52Y2YtZ2F0ZXdheS1yb3V0ZXMgfCBlbnZveS1nYXRld2F5LXN5c3RlbSB8IGlu" + - "Z3Jlc3MgfAoKTW9zdCBzZXJ2aWNlcyB1c2UgYGluaGVyaXQ6IFt7dGVtcGxhdGU6IHNlcnZpY2V9" + - "XWAuIExMTSByZWxlYXNlcyB1c2UgT0NJIGNoYXJ0cyBmcm9tIHRoZSBgbnZjZmAgcmVwb3NpdG9y" + - "eSB3aXRoIHN0YW5kYWxvbmUgYHZhbHVlczogWy4uL2dsb2JhbC55YW1sLmdvdG1wbF1gIGJsb2Nr" + - "czsgdGhleSBhcmUgZ2F0ZWQgb24gYGFkZG9ucy5sbG0uZW5hYmxlZGAuIGBhZG1pbi1pc3N1ZXIt" + - "cHJveHlgIGFuZCBgaW5ncmVzc2AgaGF2ZSBzdGFuZGFsb25lIGB2YWx1ZXM6YCBibG9ja3MuCgoj" + - "IyMgMDMtb2JzZXJ2YWJpbGl0eS55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1l" + - "c3BhY2UgfCBMYWJlbCB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8" + - "IChvYnNlcnZhYmlsaXR5IHJlbGVhc2VzKSB8ICh2YXJpb3VzKSB8IG9ic2VydmFiaWxpdHkgfCBv" + - "YnNlcnZhYmlsaXR5IHwKCkdhdGVkIG9uIG9ic2VydmFiaWxpdHktc3BlY2lmaWMgZmxhZ3MgaW4g" + - "dGhlIGVudmlyb25tZW50IGZpbGUuIFNraXBwZWQgaWYgZGlzYWJsZWQuCgojIyBUZW1wbGF0ZSBJ" + - "bmhlcml0YW5jZQoKIyMjIGA8PDogKmRlcGVuZGVuY3lgIChZQU1MIG1lcmdlKQoKVXNlZCBpbiBg" + - "MDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsYC4gTWVyZ2VzIHRoZSB0ZW1wbGF0ZSdzIHByb3Bl" + - "cnRpZXMgaW50byB0aGUgcmVsZWFzZS4KCioqR290Y2hhKio6IFlBTUwgbWVyZ2UgcmVwbGFjZXMg" + - "bGlzdHMuIElmIHlvdSBhZGQgYSBgdmFsdWVzOmAga2V5IHRvIHRoZSByZWxlYXNlLCBpdCAqKnJl" + - "cGxhY2VzKiogdGhlIHRlbXBsYXRlJ3MgYHZhbHVlczpgIGxpc3QgZW50aXJlbHkuIFlvdSBtdXN0" + - "IHJlLWluY2x1ZGUgYWxsIHRlbXBsYXRlIHZhbHVlczoKCkluIHRoZSB0ZW1wbGF0ZSBiZWxvdywg" + - "YDxwcml2YXRlLXZhbHVlcz5gIHJlZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQg" + - "dGhlIGhlbG1maWxlIHN0YWNrIHJvb3QuCgpgYGB5YW1sCiMgVGVtcGxhdGUgZGVmaW5lczoKdGVt" + - "cGxhdGVzOgogIGRlcGVuZGVuY3k6ICZkZXBlbmRlbmN5CiAgICBjaGFydDogbnZjZi9oZWxtLW52" + - "Y2Yte3sgLlJlbGVhc2UuTmFtZSB9fQogICAgdmFsdWVzOgogICAgICAtIC4uL2dsb2JhbC55YW1s" + - "LmdvdG1wbAogICAgICAtIC4uLzxwcml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1G" + - "SUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCgojIFdoZW4gb3ZlcnJpZGluZywgTVVTVCByZS1pbmNs" + - "dWRlIGJvdGg6Ci0gbmFtZTogY2Fzc2FuZHJhCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgog" + - "ICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + - "ICAgICAgICAgICAgICAgIyBNdXN0IHJlLWluY2x1ZGUKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVz" + - "Pi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwgICAjIE11c3Qg" + - "cmUtaW5jbHVkZQogICAgLSBjYXNzYW5kcmE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + - "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgWW91ciBvdmVycmlkZQogICAgICAgIHJlc291" + - "cmNlczoKICAgICAgICAgIGxpbWl0czoKICAgICAgICAgICAgbWVtb3J5OiA4MTkyTWkKYGBgCgoj" + - "IyMgYGluaGVyaXRgIChIZWxtZmlsZSBuYXRpdmUpCgpVc2VkIGluIGAwMi1jb3JlLnlhbWwuZ290" + - "bXBsYC4gSGVsbWZpbGUncyBuYXRpdmUgaW5oZXJpdGFuY2UgbWVjaGFuaXNtLgoKYGBgeWFtbAot" + - "IG5hbWU6IGFwaQogIHZlcnNpb246IDEuNi4wCiAgbmFtZXNwYWNlOiBudmNmCiAgaW5oZXJpdDoK" + - "ICAgIC0gdGVtcGxhdGU6IHNlcnZpY2UKYGBgCgpXaGVuIGFkZGluZyBgdmFsdWVzOmAgdG8gYW4g" + - "aW5oZXJpdGVkIHJlbGVhc2UsIHlvdSBhbHNvIG5lZWQgdG8gcmUtaW5jbHVkZSB0aGUgdGVtcGxh" + - "dGUncyB2YWx1ZXMgZmlsZXMgc2luY2UgYHZhbHVlc2AgaXMgYSBsaXN0IHRoYXQgZ2V0cyByZXBs" + - "YWNlZC4KCiMjIFZhbHVlcyBQcmVjZWRlbmNlCgpGcm9tIGxvd2VzdCB0byBoaWdoZXN0IHByaW9y" + - "aXR5OgoKMS4gYGVudmlyb25tZW50cy9iYXNlLnlhbWxgIC0tIGRlZmF1bHRzIHNoYXJlZCBhY3Jv" + - "c3MgYWxsIGVudmlyb25tZW50cwoyLiBgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgIC0tIHBlci1l" + - "bnZpcm9ubWVudCBvdmVycmlkZXMKMy4gYGdsb2JhbC55YW1sLmdvdG1wbGAgLS0gR28gdGVtcGxh" + - "dGUgcHJvY2Vzc2luZyAoY29uc3RydWN0cyBjaGFydC1zcGVjaWZpYyBzdHJ1Y3R1cmUpCjQuIGA8" + - "cHJpdmF0ZS12YWx1ZXM+LzxlbnY+LXNlY3JldHMueWFtbGAgLS0gc2Vuc2l0aXZlIHZhbHVlcwo1" + - "LiBJbmxpbmUgYHZhbHVlczpgIGJsb2NrcyBvbiByZWxlYXNlcyAtLSBoaWdoZXN0IHByZWNlZGVu" + - "Y2UKCiMjIFdoYXQgZ2xvYmFsLnlhbWwuZ290bXBsIFBhc3NlcyBUaHJvdWdoCgpgZ2xvYmFsLnlh" + - "bWwuZ290bXBsYCByZWFkcyBmcm9tIGAuVmFsdWVzYCAodGhlIG1lcmdlZCBlbnZpcm9ubWVudCAr" + - "IGVudi1zcGVjaWZpYyBZQU1MKSBhbmQgY29uc3RydWN0cyBjaGFydC1zcGVjaWZpYyB2YWx1ZXMu" + - "IEl0IG9ubHkgcGFzc2VzIHRocm91Z2gga2V5cyBpdCBleHBsaWNpdGx5IHJlZmVyZW5jZXM6Cgoj" + - "IyMgQ2Fzc2FuZHJhCi0gYGNhc3NhbmRyYS5yZXBsaWNhQ291bnRgCi0gYGNhc3NhbmRyYS5pbWFn" + - "ZS4qYCAocmVnaXN0cnksIHJlcG9zaXRvcnkpCi0gYGNhc3NhbmRyYS5taWdyYXRpb25zLmltYWdl" + - "LipgCi0gYGNhc3NhbmRyYS5wZXJzaXN0ZW5jZS5zaXplYAotIGBjYXNzYW5kcmEubm9kZVNlbGVj" + - "dG9yYCAoaWYgYGdsb2JhbC5ub2RlU2VsZWN0b3JzLmVuYWJsZWRgKQotIGBjYXNzYW5kcmEuZ2xv" + - "YmFsLmRlZmF1bHRTdG9yYWdlQ2xhc3NgCgojIyMgTkFUUwotIGBuYXRzLmNvbnRhaW5lci5pbWFn" + - "ZS4qYAotIGBuYXRzLnJlbG9hZGVyLmltYWdlLipgCi0gYG5hdHMubmF0c0JveC5jb250YWluZXIu" + - "aW1hZ2UuKmAKLSBgbmF0cy5jb25maWcuamV0c3RyZWFtLmZpbGVTdG9yZS5wdmMuc3RvcmFnZUNs" + - "YXNzTmFtZWAKLSBgbmF0cy5wb2RUZW1wbGF0ZS5tZXJnZS5zcGVjLm5vZGVTZWxlY3RvcmAgKGlm" + - "IGVuYWJsZWQpCgojIyMgT3BlbkJhbwotIGBvcGVuYmFvLm1pZ3JhdGlvbnMuaW1hZ2UuKmAgYW5k" + - "IGBvcGVuYmFvLm1pZ3JhdGlvbnMuZW52YAotIGBvcGVuYmFvLmluamVjdG9yLmltYWdlLipgCi0g" + - "YG9wZW5iYW8uc2VydmVyLmltYWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmRhdGFTdG9yYWdlLipg" + - "Ci0gTm9kZSBzZWxlY3RvcnMgKGlmIGVuYWJsZWQpCgojIyMgU2VydmljZXMgKEFQSSwgU0lTLCBl" + - "dGMuKQotIGA8c2VydmljZT4uaW1hZ2UuKmAgKHJlZ2lzdHJ5LCByZXBvc2l0b3J5KQotIGA8c2Vy" + - "dmljZT4ubm9kZVNlbGVjdG9yYCAoaWYgZW5hYmxlZCkKLSBgPHNlcnZpY2U+LmVudi4qYCAob2Jz" + - "ZXJ2YWJpbGl0eSBzZXR0aW5ncykKCiMjIyBMTE0gRnVuY3Rpb24gRW5hYmxlbWVudAoKRW5hYmxl" + - "IHRoZSBMTE0gYWRkb24gYmVmb3JlIGNyZWF0aW5nIG9yIGludm9raW5nIGZ1bmN0aW9ucyB3aXRo" + - "CmBmdW5jdGlvblR5cGU6ICJMTE0iYC4gVGhlIGFkZG9uIGRlcGxveXMgYGxsbS1yZXF1ZXN0LXJv" + - "dXRlcmAgYW5kCmBsbG0tYXBpLWdhdGV3YXlgLCBhZGRzIHRoZSBgbGxtLmludm9jYXRpb24uPGRv" + - "bWFpbj5gIHJvdXRlIHdoZW4gR2F0ZXdheSBBUEkKaW5ncmVzcyBpcyBlbmFibGVkLCBhbmQgY29u" + - "ZmlndXJlcyB3b3JrZXJzIHRvIHVzZSB0aGUgTExNIHNpZGVjYXIuIFRoZSBIZWxtZmlsZQpjb25k" + - "aXRpb24gaXMgYGFkZG9ucy5sbG0uZW5hYmxlZGAuIERvIG5vdCB1c2UgdGhlIG9ic29sZXRlIGBs" + - "bG0uZW5hYmxlZGAgcGF0aC4KCkZvciBhIHNpbmdsZS1ub2RlIGlzb2xhdGVkIHRlc3QgY2x1c3Rl" + - "ciwgYWRkIHRoaXMgY29uZmlndXJhdGlvbiB0bwpgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgIGJl" + - "Zm9yZSBhcHBseWluZyB0aGUgc3RhY2s6CgpgYGB5YW1sCmFkZG9uczoKICBsbG06CiAgICBlbmFi" + - "bGVkOiB0cnVlCiAgICBnYXRld2F5OgogICAgICByZXBsaWNhQ291bnQ6IDEKICAgICAgYXV0aDoK" + - "ICAgICAgICBncnBjSW5zZWN1cmU6IHRydWUKICAgICAgbWV0cmljczoKICAgICAgICBzZXJ2aWNl" + - "TW9uaXRvcjoKICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCiAgICByZXF1ZXN0Um91dGVyOgogICAg" + - "ICByZXBsaWNhQ291bnQ6IDEKICAgICAgbWV0cmljczoKICAgICAgICBzZXJ2aWNlTW9uaXRvcjoK" + - "ICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCgphZ2VudENvbmZpZzoKICBtZXJnZUNvbmZpZzogfAog" + - "ICAgY2x1c3RlcjoKICAgICAgdmFsaWRhdGlvblBvbGljeToKICAgICAgICBuYW1lOiBVbnJlc3Ry" + - "aWN0ZWQKICAgIHdvcmtsb2FkOgogICAgICBzdGFyZ2F0ZVFVSUNJbnNlY3VyZTogdHJ1ZQpgYGAK" + - "ClVzZSBgcmVwbGljYUNvdW50OiAxYCBvbmx5IGZvciBsb2NhbCBvciBzaW5nbGUtbm9kZSB0ZXN0" + - "IGNsdXN0ZXJzLiBGb3Igc2hhcmVkCm9yIHByb2R1Y3Rpb24gY2x1c3RlcnMsIHVzZSB0aGUgcmVx" + - "dWlyZWQgcmVwbGljYSBjb3VudCBhbmQgVExTLWNhcGFibGUgc2VydmljZQpjb25maWd1cmF0aW9u" + - "LiBgYWRkb25zLmxsbS5nYXRld2F5LmF1dGguZ3JwY0luc2VjdXJlYCBhbmQKYHdvcmtsb2FkLnN0" + - "YXJnYXRlUVVJQ0luc2VjdXJlYCBlbmFibGUgcGxhaW50ZXh0IHRyYW5zcG9ydHMuIERvIG5vdCB1" + - "c2UgdGhlbSBpbgpwcm9kdWN0aW9uLgoKVGhlIHJlcXVlc3Qgcm91dGVyIHVzZXMgYHBvd2VyLW9m" + - "LXR3b2Agd2hlbiBubyBsb2FkLWJhbGFuY2VyIGNvbmZpZ3VyYXRpb24gaXMKc2V0LiBDb25maWd1" + - "cmUgb3RoZXIgcm91dGluZyBtZXRob2RzIHdpdGggdGhlCltMTE0gUmVxdWVzdCBSb3V0ZXIgTG9h" + - "ZCBCYWxhbmNpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9OVklESUEvbnZjZi9ibG9iL21haW4vZG9j" + - "cy91c2VyL2xsbS1yZXF1ZXN0LXJvdXRlci1sb2FkLWJhbGFuY2luZy5tZCkKZ3VpZGUuCgpJZiB0" + - "aGUgc2lkZWNhciBpbWFnZSBpcyBtaXJyb3JlZCBvdXRzaWRlIHRoZSBzdGFjaydzIGRlZmF1bHQg" + - "aW1hZ2UgcmVnaXN0cnkgYW5kCnJlcG9zaXRvcnksIHNldCB0aGUgZ2VuZXJhdGVkIHdvcmtlciBz" + - "aWRlY2FyIGltYWdlIGV4cGxpY2l0bHk6CgpgYGB5YW1sCmFwaToKICBlbnY6CiAgICBOVkNGX1NJ" + - "REVDQVJTX0xMTV9ST1VURVJfQ0xJRU5UX0lNQUdFOiA8cmVnaXN0cnk+LzxyZXBvc2l0b3J5Pi9w" + - "eWxvbjowLjIuMQpgYGAKClJlbmRlciBhbmQgYXBwbHkgdGhlIHVwZGF0ZWQgY29udHJvbC1wbGFu" + - "ZSBlbnZpcm9ubWVudCwgdGhlbiByZWZyZXNoIGV2ZXJ5CnJlZ2lzdGVyZWQgY29tcHV0ZSBwbGFu" + - "ZSB1c2luZyB0aGUgc2FtZSBoYW5kb2ZmIHVzZWQgZm9yIGl0cyBpbnN0YWxsYXRpb24gc28KTlZD" + - "QSByZWNlaXZlcyBgYWdlbnRDb25maWcubWVyZ2VDb25maWdgOgoKYGBgYmFzaApIRUxNRklMRV9F" + - "TlY9PGVudj4gaGVsbWZpbGUgdGVtcGxhdGUKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIHN5" + - "bmMKYGBgCgpVc2UgdGhlIGNvbXBsZXRlIGNvbXB1dGUtcGxhbmUgaW5zdGFsbCBjb21tYW5kIGZy" + - "b20KW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShjb21wdXRlLXBsYW5lLWluc3Rh" + - "bGxhdGlvbi5tZCkuIEEKQ0xJLXByb2ZpbGUgaW5zdGFsbGF0aW9uIG11c3QgcmVtYWluIHByb2Zp" + - "bGUtZHJpdmVuOyBhIEhlbG1maWxlIGluc3RhbGxhdGlvbgptdXN0IHJlbWFpbiB2YWx1ZXMtZHJp" + - "dmVuLgoKRXhpc3RpbmcgTExNIGZ1bmN0aW9uIHBvZHMga2VlcCB0aGVpciBleGlzdGluZyBzaWRl" + - "Y2FyIGFyZ3VtZW50cy4gUmVjcmVhdGUgb3IKcmVkZXBsb3kgdGhvc2UgZnVuY3Rpb25zIGFmdGVy" + - "IHRoZSBjb21wdXRlLXBsYW5lIHJlZnJlc2guIFZlcmlmeSB0aGUgY29udHJvbApwbGFuZSwgcm91" + - "dGUsIGFuZCB3b3JrZXIgc2lkZWNhcjoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgZGVwbG95IC1uIG52" + - "Y2YgbGxtLWFwaS1nYXRld2F5Cmt1YmVjdGwgZ2V0IHN0YXRlZnVsc2V0IC1uIG52Y2YgbGxtLXJl" + - "cXVlc3Qtcm91dGVyCmt1YmVjdGwgZ2V0IHBvZHMgLW4gbnZjZiB8IGdyZXAgLUUgJ2xsbS1hcGkt" + - "Z2F0ZXdheXxsbG0tcmVxdWVzdC1yb3V0ZXInCmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdy" + - "ZXAgbGxtCmt1YmVjdGwgLW4gbnZjZi1iYWNrZW5kIGdldCBwb2QgPGZ1bmN0aW9uLXBvZD4gXAog" + - "IC1vIGpzb25wYXRoPSd7cmFuZ2UgLnNwZWMuY29udGFpbmVyc1s/KEAubmFtZT09ImxsbS13b3Jr" + - "ZXIiKV0uYXJnc1sqXX17Ln17IlxcbiJ9e2VuZH0nCmBgYAoKRm9yIGxvY2FsIHBsYWludGV4dCBj" + - "bHVzdGVycywgdGhlIGBsbG0td29ya2VyYCBhcmdzIG11c3QgaW5jbHVkZQpgLS1xdWljLWluc2Vj" + - "dXJlYC4KCkZvciBsb2FkLWJhbGFuY2VyIHNjaGVtYSBhbmQgYWxnb3JpdGhtIGJlaGF2aW9yLCBz" + - "ZWUgdGhlCltTdGFyZ2F0ZSBjb25maWd1cmF0aW9uIGd1aWRlXShodHRwczovL2dpdGh1Yi5jb20v" + - "TlZJRElBL252Y2YvYmxvYi9tYWluL3NyYy9saWJyYXJpZXMvcnVzdC9zdGFyZ2F0ZS9kb2NzL2xv" + - "YWQtYmFsYW5jZXItY29uZmlndXJhdGlvbi5tZCkuCgojIyBIZWxtZmlsZSBTZWxlY3RvcnMKClRh" + - "cmdldCBzcGVjaWZpYyByZWxlYXNlcyBvciBncm91cHM6CgpgYGBiYXNoCiMgQnkgcmVsZWFzZSBn" + - "cm91cApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3Vw" + - "PWRlcGVuZGVuY2llcyBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9y" + - "IHJlbGVhc2UtZ3JvdXA9c2VydmljZXMgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUg" + - "LS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPWluZ3Jlc3Mgc3luYwpIRUxNRklMRV9FTlY9PGVudj4g" + - "aGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPW9ic2VydmFiaWxpdHkgc3luYwoKIyBC" + - "eSByZWxlYXNlIG5hbWUKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFt" + - "ZT1jYXNzYW5kcmEgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBu" + - "YW1lPWFkbWluLWlzc3Vlci1wcm94eSBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAt" + - "LXNlbGVjdG9yIG5hbWU9bGxtLXJlcXVlc3Qtcm91dGVyIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+" + - "IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1sbG0tYXBpLWdhdGV3YXkgc3luYwoKIyBUZW1wbGF0" + - "ZSBvbmx5IChkcnkgcnVuKQpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBu" + - "YW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZQoKIyBEZXN0cm95IGEgc2luZ2xlIHJlbGVhc2UKSEVMTUZJ" + - "TEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgZGVzdHJveQpg" + - "YGAKCk5vdGU6IGBhZG1pbi1pc3N1ZXItcHJveHlgIGhhcyBubyBgcmVsZWFzZS1ncm91cGAgbGFi" + - "ZWwuIFVzZSBgLS1zZWxlY3RvciBuYW1lPWFkbWluLWlzc3Vlci1wcm94eWAuClBLBwjAViDnjycA" + - "AI8nAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAD8ACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2Vk" + - "LWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL252Y2YtdWktYWRkb24ubWRVVAUAAQCmzhIjIE5WQ0Yg" + - "VUkgQWRkb24KCk5WQ0YgVUkgaXMgYW4gb3B0aW9uYWwsIGN1c3RvbWVyLWZhY2luZyBOVkNGIGFk" + - "bWluLXBhbmVsIFVJLiBJdCBpcyBkaXNhYmxlZCBieQpkZWZhdWx0IGFuZCBhdmFpbGFibGUgb25s" + - "eSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhlIE5WQ0YgVUkgYWRkb24uCgojIyBX" + - "aGVuIHRvIGVuYWJsZQoKRW5hYmxlIE5WQ0YgVUkgb25seSB3aGVuIHlvdSBuZWVkIHRoZSBhZG1p" + - "bi1wYW5lbCBVSSBhbmQgeW91ciBleHRyYWN0ZWQgc3RhY2sKcGFja2FnZSBpbmNsdWRlcyB0aGUg" + - "YWRkb24uIElmIHRoZSBwYWNrYWdlIGRvZXMgbm90IGNvbnRhaW4gYSBgbnZjZi11aWAgcmVsZWFz" + - "ZQphbmQgYG52Y2ZVaWAgcm91dGUgdmFsdWVzLCBza2lwIHRoZSBhZGRvbiB1bnRpbCB5b3UgdXNl" + - "IGEgcGFja2FnZSB0aGF0IGluY2x1ZGVzCnRoZW0uCgojIyBFbmFibGUgdGhlIGFkZG9uCgpFbmFi" + - "bGUgaXQgaW4gYGVudmlyb25tZW50cy88ZW52LW5hbWU+LnlhbWxgOgoKYGBgeWFtbAphZGRvbnM6" + - "CiAgbnZjZlVpOgogICAgZW5hYmxlZDogdHJ1ZQpgYGAKCiMjIENyZWF0ZSBuYW1lc3BhY2UgYW5k" + - "IGltYWdlIHB1bGwgc2VjcmV0CgpDcmVhdGUgdGhlIG5hbWVzcGFjZSwgYW5kIGFuIGltYWdlIHB1" + - "bGwgc2VjcmV0IG9ubHkgaWYgcHVsbGluZyBmcm9tIGEgcHJpdmF0ZQpyZWdpc3RyeToKCmBgYGJh" + - "c2gKa3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIG52Y2YtdWkgLS1kcnktcnVuPWNsaWVudCAtbyB5" + - "YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCgojIE9ubHkgaWYgcHVsbGluZyBmcm9tIGEgcHJpdmF0" + - "ZSByZWdpc3RyeSAoZS5nLiwgTkdDIG52Y3IuaW8pCmV4cG9ydCBOR0NfQVBJX0tFWT0iPHlvdXIt" + - "a2V5PiIKa3ViZWN0bCBjcmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwK" + - "ICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRv" + - "a2VuJyBcCiAgLS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogIC0tbmFtZXNwYWNl" + - "PW52Y2YtdWkgXAogIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYg" + - "LQpgYGAKClRoZSBkZWZhdWx0IHJvdXRlIGhvc3QgaXMgYG52Y2YtdWkuPGRvbWFpbj5gIGFuZCB0" + - "aGUgYmFja2VuZCBpcwpgbnZjZi11aS5udmNmLXVpOjgzMDBgLgoKIyMgQXBwbHkgdGhlIHNlcnZp" + - "Y2UgYW5kIHJvdXRlCgpBZnRlciBjb25maXJtaW5nIHRoZSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBg" + - "bnZjZi11aWAgcmVsZWFzZSwgcHJldmlldyBhbmQgYXBwbHkKdGhlIHNlcnZpY2UgYW5kIHJvdXRl" + - "OgoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5h" + - "bWU9bnZjZi11aSB0ZW1wbGF0ZQpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNl" + - "bGVjdG9yIG5hbWU9bnZjZi11aSBzeW5jCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxl" + - "IC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1pbmdyZXNzIHN5bmMKYGBgCgojIyBWZXJpZnkKClZl" + - "cmlmeSB0aGUgcm91dGUgb25seSB3aGVuIHRoZSBhZGRvbiBpcyBwcmVzZW50IGFuZCBlbmFibGVk" + - "OgoKYGBgYmFzaAprdWJlY3RsIGdldCBkZXBsb3ksc3ZjIC1uIG52Y2YtdWkKa3ViZWN0bCBnZXQg" + - "aHR0cHJvdXRlIC1BIHwgZ3JlcCAtaSBudmNmLXVpCmN1cmwgLWkgLUggIkhvc3Q6IG52Y2YtdWku" + - "PGRvbWFpbj4iICJodHRwOi8vPGdhdGV3YXktYWRkcmVzcz4vc3RhdHVzIgpgYGAKCiMjIFNlY3Vy" + - "aXR5CgpUaGUgTlZDRiBVSSBhZG1pbiBwYW5lbCBpcyBjdXJyZW50bHkgdW5hdXRoZW50aWNhdGVk" + - "LiBEbyBub3QgZXhwb3NlIGl0IHRvIHRoZQpwdWJsaWMgaW50ZXJuZXQuIFJlc3RyaWN0IGFjY2Vz" + - "cyB0byBhIHRydXN0ZWQgbmV0d29yaywgVlBOLCBvciBhbiBhdXRoZW50aWNhdGluZwpwcm94eSBp" + - "biBmcm9udCBvZiB0aGUgYG52Y2YtdWlgIHJvdXRlLgpQSwcIOPknr7kHAAC5BwAAUEsDBBQACAAA" + - "AAAAIQAAAAAAAAAAAAAAAAA+AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24v" + - "cmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWRVVAUAAQCmzhIjIEltYWdlIFB1bGwgU2VjcmV0cyBS" + - "ZWZlcmVuY2UKCiMjIE92ZXJ2aWV3CgpXaGVuIHB1bGxpbmcgTlZDRiBpbWFnZXMgZnJvbSBhIHBy" + - "aXZhdGUgcmVnaXN0cnkgKGZvciBleGFtcGxlLCBOR0MKYG52Y3IuaW9gKSwgS3ViZXJuZXRlcyBu" + - "ZWVkcyBgaW1hZ2VQdWxsU2VjcmV0c2Agb24gZXZlcnkgcG9kLiBDb250cm9sLXBsYW5lIGFuZApj" + - "b21wdXRlLXBsYW5lIGNyZWRlbnRpYWxzIGFyZSBjb25maWd1cmVkIGluIHRoZWlyIG93biBjbHVz" + - "dGVyIGNvbnRleHRzLiBEbyBub3QKdXNlIG9uZSBtaXhlZCBuYW1lc3BhY2UgbGlzdC4KClRoZSBy" + - "ZWNvbW1lbmRlZCBjb250cm9sLXBsYW5lIGFwcHJvYWNoIHVzZXMgS3l2ZXJubyB0byBpbmplY3Qg" + - "dGhlIHNlY3JldCBpbnRvCmNvbnRyb2wtcGxhbmUgcG9kcyBhdCBhZG1pc3Npb24gdGltZS4gVGhl" + - "IGNvbXB1dGUtcGxhbmUgY2hhcnQgYW5kIG9wZXJhdG9yIHVzZQp0aGUgc2VjcmV0IGluIGBudmNh" + - "LW9wZXJhdG9yYCBhbmQgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWAuCgojIyBLeXZlcm5vIEFw" + - "cHJvYWNoIChSZWNvbW1lbmRlZCkKCiMjIyAxLiBJbnN0YWxsIEt5dmVybm8KCmBgYGJhc2gKaGVs" + - "bSByZXBvIGFkZCBreXZlcm5vIGh0dHBzOi8va3l2ZXJuby5naXRodWIuaW8va3l2ZXJuby8KaGVs" + - "bSByZXBvIHVwZGF0ZQpoZWxtIGluc3RhbGwga3l2ZXJubyBreXZlcm5vL2t5dmVybm8gLW4ga3l2" + - "ZXJubyAtLWNyZWF0ZS1uYW1lc3BhY2UgXAogIC0ta3ViZS1jb250ZXh0IDxjb250cm9sLXBsYW5l" + - "LWNvbnRleHQ+CmBgYAoKIyMjIDIuIENyZWF0ZSBjb250cm9sLXBsYW5lIHB1bGwgc2VjcmV0cwoK" + - "YGBgYmFzaApleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLW5nYy1hcGkta2V5PiIKCmZvciBucyBp" + - "biBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVs" + - "dC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBs" + - "YW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3BhY2UgIiRucyIgXAogICAgLS1kcnktcnVuPWNsaWVu" + - "dCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gYXBw" + - "bHkgLWYgLQpkb25lCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNm" + - "IGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3Rs" + - "IC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgc2VjcmV0IGRvY2tlci1y" + - "ZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAgIC0t" + - "ZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAgLS1kb2NrZXItcGFzc3dvcmQ9IiRO" + - "R0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIgXAogICAgLS1kcnktcnVuPWNsaWVu" + - "dCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gYXBw" + - "bHkgLWYgLQpkb25lCmBgYAoKRm9yIG5vbi1OR0MgcmVnaXN0cmllcywgcmVwbGFjZSBgLS1kb2Nr" + - "ZXItc2VydmVyYCwgYC0tZG9ja2VyLXVzZXJuYW1lYCwgYW5kIGAtLWRvY2tlci1wYXNzd29yZGAu" + - "CgojIyMgMy4gQXBwbHkgS3l2ZXJubyBDbHVzdGVyUG9saWN5CgpgYGB5YW1sCmFwaVZlcnNpb246" + - "IGt5dmVybm8uaW8vdjEKa2luZDogQ2x1c3RlclBvbGljeQptZXRhZGF0YToKICBuYW1lOiBudmNm" + - "LWFkZC1pbWFnZXB1bGxzZWNyZXRzCnNwZWM6CiAgYmFja2dyb3VuZDogZmFsc2UKICBydWxlczoK" + - "ICAgIC0gbmFtZTogYWRkLWltYWdlcHVsbHNlY3JldC10by1udmNmLXBvZHMKICAgICAgbWF0Y2g6" + - "CiAgICAgICAgYW55OgogICAgICAgIC0gcmVzb3VyY2VzOgogICAgICAgICAgICBraW5kczoKICAg" + - "ICAgICAgICAgLSBQb2QKICAgICAgICAgICAgbmFtZXNwYWNlczoKICAgICAgICAgICAgLSAibnZj" + - "ZiIKICAgICAgICAgICAgLSAiYXBpLWtleXMiCiAgICAgICAgICAgIC0gInNpcyIKICAgICAgICAg" + - "ICAgLSAiZXNzIgogICAgICAgICAgICAtICJuYXRzLXN5c3RlbSIKICAgICAgICAgICAgLSAiY2Fz" + - "c2FuZHJhLXN5c3RlbSIKICAgICAgICAgICAgLSAidmF1bHQtc3lzdGVtIgogICAgICAgICAgICAt" + - "ICJjZXJ0LW1hbmFnZXIiCiAgICAgIG11dGF0ZToKICAgICAgICBwYXRjaFN0cmF0ZWdpY01lcmdl" + - "OgogICAgICAgICAgbWV0YWRhdGE6CiAgICAgICAgICAgIGFubm90YXRpb25zOgogICAgICAgICAg" + - "ICAgIG52Y2YubnZpZGlhLmNvbS9pbWFnZXB1bGxzZWNyZXQtaW5qZWN0ZWQtYnk6IGt5dmVybm8K" + - "ICAgICAgICAgIHNwZWM6CiAgICAgICAgICAgIGltYWdlUHVsbFNlY3JldHM6CiAgICAgICAgICAg" + - "IC0gbmFtZTogbnZjci1jcmVkcwpgYGAKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gYXBwbHkgXAogIC1mIGt5dmVybm8taW1hZ2VwdWxsc2VjcmV0LXBv" + - "bGljeS55YW1sCmBgYAoKIyMjIDQuIEluc3RhbGwgdGhlIGNvbnRyb2wgcGxhbmUKCkNvbnRpbnVl" + - "IHdpdGggdGhlIHNlbGVjdGVkIGNvbnRyb2wtcGxhbmUgaW5zdGFsbGF0aW9uIGluCltTcGxpdCBD" + - "b21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQp" + - "LiBObwpjb250cm9sLXBsYW5lIGhlbG1maWxlIG1vZGlmaWNhdGlvbnMgYXJlIG5lZWRlZC4gS3l2" + - "ZXJubyBpbmplY3RzIHRoZSBwdWxsCnNlY3JldCBpbnRvIG5ldyBjb250cm9sLXBsYW5lIHBvZHMu" + - "CgojIyBDb21wdXRlLVBsYW5lIFNlY3JldAoKQ3JlYXRlIHRoZSBzZWNyZXQgb25seSBpbiBgbnZj" + - "YS1vcGVyYXRvcmAgb24gdGhlIGNvbXB1dGUgY2x1c3RlcjoKCmBgYGJhc2gKa3ViZWN0bCAtLWNv" + - "bnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gY3JlYXRlIG5hbWVzcGFjZSBudmNhLW9wZXJh" + - "dG9yIFwKICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBcCiAga3ViZWN0bCAtLWNvbnRleHQg" + - "PGNvbXB1dGUtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQoKa3ViZWN0bCAtLWNvbnRleHQgPGNv" + - "bXB1dGUtcGxhbmUtY29udGV4dD4gY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1j" + - "cmVkcyBcCiAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogIC0tZG9ja2VyLXVzZXJuYW1lPSck" + - "b2F1dGh0b2tlbicgXAogIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAtLW5h" + - "bWVzcGFjZT1udmNhLW9wZXJhdG9yIFwKICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBcCiAg" + - "a3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpgYGAK" + - "ClJlZmVyZW5jZSBpdCBpbiB0aGUgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCBmaWxlOgoKYGBg" + - "eWFtbApnbG9iYWw6CiAgaW1hZ2VQdWxsU2VjcmV0czoKICAgIC0gbmFtZTogbnZjci1jcmVkcwpg" + - "YGAKClRoZSBjaGFydCBhbmQgb3BlcmF0b3IgdXNlIHRoYXQgcmVmZXJlbmNlIGluIGBudmNhLW9w" + - "ZXJhdG9yYCBhbmQgbWlycm9yIHRoZQpzZWNyZXQgdG8gYG52Y2Etc3lzdGVtYC4gRG8gbm90IGNy" + - "ZWF0ZSBhIGJyb2FkZXIgbWFudWFsIGNvbXB1dGUgbmFtZXNwYWNlIGxpc3QuIEZvbGxvdwpbU3Bs" + - "aXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9u" + - "Lm1kKSBmb3IgdGhlCnNlbGVjdGVkIGluc3RhbGwgZmxvdy4KCiMjIFZlcmlmaWNhdGlvbgoKYGBg" + - "YmFzaAojIENoZWNrIHRoYXQgYSBjb250cm9sLXBsYW5lIHBvZCBoYXMgdGhlIGluamVjdGVkIHNl" + - "Y3JldAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgcG9kIC1u" + - "IDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gXAogIC1vIGpzb25wYXRoPSd7LnNwZWMuaW1hZ2VQdWxs" + - "U2VjcmV0c30nCiMgRXhwZWN0ZWQ6IFt7Im5hbWUiOiJudmNyLWNyZWRzIn1dCgojIENoZWNrIHRo" + - "ZSBLeXZlcm5vIGFubm90YXRpb24Ka3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + - "dGV4dD4gZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IFwKICAtbyBqc29ucGF0aD0n" + - "ey5tZXRhZGF0YS5hbm5vdGF0aW9ucy5udmNmXC5udmlkaWFcLmNvbS9pbWFnZXB1bGxzZWNyZXQt" + - "aW5qZWN0ZWQtYnl9JwojIEV4cGVjdGVkOiBreXZlcm5vCgojIENoZWNrIHB1bGwgZXZlbnRzCmt1" + - "YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBldmVudHMgLW4gPG5h" + - "bWVzcGFjZT4gXAogIC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAnIHwgZ3JlcCAtaSBwdWxsCiMg" + - "U2hvdWxkIHNob3cgIlN1Y2Nlc3NmdWxseSBwdWxsZWQiIG5vdCAiNDAxIFVuYXV0aG9yaXplZCIK" + - "CiMgQ2hlY2sgdGhlIGNoYXJ0L29wZXJhdG9yIG1pcnJvciBvbiB0aGUgY29tcHV0ZSBjbHVzdGVy" + - "Cmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGdldCBzZWNyZXQgbnZj" + - "ci1jcmVkcyBcCiAgLW4gbnZjYS1zeXN0ZW0KYGBgCgojIyBXaGVuIFB1bGwgU2VjcmV0cyBBcmUg" + - "Tm90IE5lZWRlZAoKLSAqKkFXUyBFQ1Igd2l0aCBJQU0gbm9kZSByb2xlcyoqOiBJZiB5b3VyIG5v" + - "ZGVzIGhhdmUgYEFtYXpvbkVDMkNvbnRhaW5lclJlZ2lzdHJ5UmVhZE9ubHlgIElBTSBwb2xpY3ks" + - "IEt1YmVybmV0ZXMgY2FuIHB1bGwgZnJvbSBFQ1Igd2l0aG91dCBleHBsaWNpdCBzZWNyZXRzLgot" + - "ICoqUHVibGljIHJlZ2lzdHJpZXMqKjogTm8gcHVsbCBzZWNyZXRzIG5lZWRlZC4KLSAqKkNTUCBi" + - "dWlsdC1pbiBjcmVkZW50aWFsIGhlbHBlcnMqKjogR0tFIEFydGlmYWN0IFJlZ2lzdHJ5LCBBenVy" + - "ZSBBQ1Igd2l0aCBtYW5hZ2VkIGlkZW50aXR5LCBhbmQgc2ltaWxhciBzZXJ2aWNlcy4KCiMjIFRy" + - "b3VibGVzaG9vdGluZwoKIyMjIFBvZHMgc3RpbGwgaW4gSW1hZ2VQdWxsQmFja09mZiBhZnRlciBh" + - "cHBseWluZyBwb2xpY3kKClRoZSBLeXZlcm5vIHBvbGljeSBvbmx5IGFmZmVjdHMgcG9kcyBjcmVh" + - "dGVkICoqYWZ0ZXIqKiB0aGUgcG9saWN5IGlzIGFwcGxpZWQuIERlbGV0ZSBzdHVjayBwb2RzIHRv" + - "IHRyaWdnZXIgcmVjcmVhdGlvbjoKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPHRhcmdldC1j" + - "b250ZXh0PiBkZWxldGUgcG9kcyAtbiA8bmFtZXNwYWNlPiAtLWFsbApgYGAKCiMjIyBLeXZlcm5v" + - "IGFkbWlzc2lvbiBjb250cm9sbGVyIG5vdCBydW5uaW5nCgpgYGBiYXNoCmt1YmVjdGwgLS1jb250" + - "ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBwb2RzIC1uIGt5dmVybm8KIyBBbGwgcG9k" + - "cyBzaG91bGQgYmUgUnVubmluZwpgYGAKCiMjIyBQb2xpY3kgbm90IG1hdGNoaW5nCgpgYGBiYXNo" + - "Cmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBjbHVzdGVycG9s" + - "aWN5IG52Y2YtYWRkLWltYWdlcHVsbHNlY3JldHMKIyBTaG91bGQgc2hvdyBSRUFEWTogVHJ1ZQpg" + - "YGAKCiMjIyBXcm9uZyBzZWNyZXQgbmFtZQoKVGhlIHBvbGljeSByZWZlcmVuY2VzIGBudmNyLWNy" + - "ZWRzYC4gVmVyaWZ5IHRoZSBzZWNyZXQgZXhpc3RzIHdpdGggdGhhdCBleGFjdCBuYW1lOgoKYGBg" + - "YmFzaAprdWJlY3RsIC0tY29udGV4dCA8dGFyZ2V0LWNvbnRleHQ+IGdldCBzZWNyZXQgbnZjci1j" + - "cmVkcyAtbiA8bmFtZXNwYWNlPgpgYGAKUEsHCEtCNagAFgAAABYAAFBLAQIUABQACAAAAAAAIQBL" + - "pxLcSBAAAEgQAAASAAkAAAAAAAAAAAAAAAAAAABkYXRhL21hbmlmZXN0Lmpzb25VVAUAAQCmzhJQ" + - "SwECFAAUAAgAAAAAACEAxZ4o5QVgAAAFYAAAIwAJAAAAAAAAAAAAAACREAAAZGF0YS9udmNmLXNl" + - "bGYtbWFuYWdlZC1jbGkvU0tJTEwubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAIcbIhvAKAADw" + - "CgAAMwAJAAAAAAAAAAAAAADwcAAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvZXhhbXBsZXMv" + - "Y2ktcGlwZWxpbmVzLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAGh2P0HoCwAA6AsAADQACQAA" + - "AAAAAAAAAAAASnwAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL2V4YW1wbGVzL211bHRpLWNs" + - "dXN0ZXIubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA/mZDOswMAADMDAAANwAJAAAAAAAAAAAA" + - "AACdiAAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9hZGQtY29tcHV0ZS1wbGFu" + - "ZS5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQCR3Bv5mBkAAJgZAAA5AAkAAAAAAAAAAAAAANeV" + - "AABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2NyZWF0ZS1hbmQtcnVuLXRhc2su" + - "bWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA0kPcBBglAAAYJQAANwAJAAAAAAAAAAAAAADfrwAA" + - "ZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9kZXBsb3ktYW5kLWludm9rZS5tZFVU" + - "BQABAKbOElBLAQIUABQACAAAAAAAIQAOnD+XvQ4AAL0OAAA9AAkAAAAAAAAAAAAAAGXVAABkYXRh" + - "L252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2RpYWdub3NlLWZhaWxlZC1pbnN0YWxsLm1k" + - "VVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAIcrjZhaHAAAWhwAADoACQAAAAAAAAAAAAAAluQAAGRh" + - "dGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvaW5zdGFsbC1mcm9tLXNjcmF0Y2gubWRV" + - "VAUAAQCmzhJQSwECFAAUAAgAAAAAACEAUGPcZLYHAAC2BwAAOQAJAAAAAAAAAAAAAABhAQEAZGF0" + - "YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9yb3RhdGUtY2x1c3Rlci1qd2tzLm1kVVQF" + - "AAEAps4SUEsBAhQAFAAIAAAAAAAhABKTM1ngIQAA4CEAAC4ACQAAAAAAAAAAAAAAhwkBAGRhdGEv" + - "bnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvdGVhcmRvd24ubWRVVAUAAQCmzhJQSwECFAAU" + - "AAgAAAAAACEA275U+NciAADXIgAAMAAJAAAAAAAAAAAAAADMKwEAZGF0YS9udmNmLXNlbGYtbWFu" + - "YWdlZC1jbGkvcmVmZXJlbmNlL2NvbW1hbmRzLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAHOn" + - "WmTVBgAA1QYAADIACQAAAAAAAAAAAAAACk8BAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Jl" + - "ZmVyZW5jZS9leGl0LWNvZGVzLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAPyjkeDGIgAAxiIA" + - "AC0ACQAAAAAAAAAAAAAASFYBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9m" + - "bGFncy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQDzrhOEdBEAAHQRAAA3AAkAAAAAAAAAAAAA" + - "AHJ5AQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvdHJvdWJsZXNob290aW5n" + - "Lm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAC/auXVCYgAAQmIAACwACQAAAAAAAAAAAAAAVIsB" + - "AGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL1NLSUxMLm1kVVQFAAEAps4SUEsB" + - "AhQAFAAIAAAAAAAhACsTuD+tVQAArVUAADQACQAAAAAAAAAAAAAA+e0BAGRhdGEvbnZjZi1zZWxm" + - "LW1hbmFnZWQtaW5zdGFsbGF0aW9uL2V2YWxzL2V2YWxzLmpzb25VVAUAAQCmzhJQSwECFAAUAAgA" + - "AAAAACEAAlJOQH8oAAB/KAAALwAJAAAAAAAAAAAAAAARRAIAZGF0YS9udmNmLXNlbGYtbWFuYWdl" + - "ZC1pbnN0YWxsYXRpb24vZXhhbXBsZXMubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAlmO8WRIw" + - "AAASMAAATAAJAAAAAAAAAAAAAAD2bAIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRp" + - "b24vcmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZFVUBQABAKbOElBLAQIU" + - "ABQACAAAAAAAIQBWPmeQlTAAAJUwAAA7AAkAAAAAAAAAAAAAAIudAgBkYXRhL252Y2Ytc2VsZi1t" + - "YW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL2RlYnVnZ2luZy5tZFVUBQABAKbOElBLAQIU" + - "ABQACAAAAAAAIQDAViDnjycAAI8nAABEAAkAAAAAAAAAAAAAAJLOAgBkYXRhL252Y2Ytc2VsZi1t" + - "YW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL2hlbG1maWxlLXN0cnVjdHVyZS5tZFVUBQAB" + - "AKbOElBLAQIUABQACAAAAAAAIQA4+SevuQcAALkHAAA/AAkAAAAAAAAAAAAAAJz2AgBkYXRhL252" + - "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL252Y2YtdWktYWRkb24ubWRV" + - "VAUAAQCmzhJQSwECFAAUAAgAAAAAACEAS0I1qAAWAAAAFgAAPgAJAAAAAAAAAAAAAADL/gIAZGF0" + - "YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9wdWxsLXNlY3JldHMu" + - "bWRVVAUAAQCmzhJQSwUGAAAAABcAFwCvCQAAQBUDAAAA" + "PiBcCiAgLS1pY21zLXVybCA8Y29tcHV0ZS1yZWFjaGFibGUtaWNtcy11cmw+IFwKICBzdGF0dXMg" + + "XAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tbmNh" + + "LWlkIDxuY2EtaWQ+CmBgYAoKU2hvdyB0aGUgcmVnaXN0ZXJlZCBjb21wdXRlLXBsYW5lIGxpc3Qu" + + "IE5hbWVkLWNsdXN0ZXIgYGRvd24gLS1wbGFuLW9ubHlgIGRvZXMKbm90IHF1ZXJ5IElDTVMsIHNv" + + "IGl0IHByZXZpZXdzIG9ubHkgdGhhdCBjb21wdXRlIHBsYW5lIGFuZCBjYW5ub3Qgc2hvdyB0aGUK" + + "Y29uZGl0aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLiBJZiB0aGUgdGFyZ2V0IGlzIHRoZSBs" + + "YXN0IHJlZ2lzdGVyZWQKY2x1c3RlciwgcmVhbCBgZG93bmAgYWxzbyBkZXN0cm95cyB0aGUgY29u" + + "dHJvbCBwbGFuZS4gR2V0IGV4cGxpY2l0IGNvbmZpcm1hdGlvbgpmb3IgYm90aCByZW1vdmFscyBi" + + "ZWZvcmUgY29udGludWluZy4gVGhlbiBwcmV2aWV3IGFuZCBleGVjdXRlIHdpdGggdGhlIHNhbWUK" + + "cHJlZml4OgoKYGBgYmFzaApudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBc" + + "CiAgLS1jb250cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAt" + + "LWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAog" + + "IC0tZW52IDxlbnY+IFwKICAtLXBsYWluIFwKICAtLWNvbnRyb2wtcGxhbmUtY29udGV4dCA8Y29u" + + "dHJvbC1wbGFuZS1jb250ZXh0PiBcCiAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQgPGNvbXB1dGUt" + + "cGxhbmUtY29udGV4dD4gXAogIC0taWNtcy11cmwgPGNvbXB1dGUtcmVhY2hhYmxlLWljbXMtdXJs" + + "PiBcCiAgZG93biAtLXBsYW4tb25seSBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUt" + + "Y2x1c3Rlci1uYW1lPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4KCm52Y2YtY2xpIC0tY29uZmlnIDxj" + + "b25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNr" + + "cy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252" + + "Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29udHJv" + + "bC1wbGFuZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUtcGxh" + + "bmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1pY21zLXVybCA8Y29tcHV0" + + "ZS1yZWFjaGFibGUtaWNtcy11cmw+IFwKICBkb3duIFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0" + + "ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgpgYGAKClJlcGVhdCBg" + + "ZG93bmAgZm9yIGVhY2ggY29tcHV0ZSBjbHVzdGVyLiBFYWNoIHJ1biBkZXN0cm95cyB0aGF0IGNv" + + "bXB1dGUgcGxhbmUgYW5kCnVucmVnaXN0ZXJzIGl0cyBJQ01TIHJvdy4gSXQgcmVtb3ZlcyB0aGUg" + + "Y29udHJvbCBwbGFuZSBvbmx5IGFmdGVyIG5vIGNsdXN0ZXIKcmVnaXN0cmF0aW9ucyByZW1haW4u" + + "ClBLBwiWY7xZEjAAABIwAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADsACQBkYXRhL252Y2Yt" + + "c2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL2RlYnVnZ2luZy5tZFVUBQABAKbO" + + "EiMgRGVidWdnaW5nIFJlZmVyZW5jZQoKUmVjaXBlcyBmb3IgZGlhZ25vc2luZyBhbmQgZml4aW5n" + + "IGNvbW1vbiBOVkNGIHNlbGYtbWFuYWdlZCBzdGFjayBmYWlsdXJlcy4KCiMjIFF1aWNrIFN0YXR1" + + "cyBDb21tYW5kcwoKYGBgYmFzaAojIEFsbCBwb2RzIGFjcm9zcyBhbGwgbmFtZXNwYWNlcwprdWJl" + + "Y3RsIGdldCBwb2RzIC1BIC1vIHdpZGUKCiMgUG9kcyBpbiBhIHNwZWNpZmljIG5hbWVzcGFjZQpr" + + "dWJlY3RsIGdldCBwb2RzIC1uIDxuYW1lc3BhY2U+CgojIEFsbCBoZWxtIHJlbGVhc2VzCmhlbG0g" + + "bGlzdCAtQQoKIyBSZWNlbnQgZXZlbnRzIChtb3N0IHVzZWZ1bCBmb3IgZGlhZ25vc2luZyBmYWls" + + "dXJlcykKa3ViZWN0bCBnZXQgZXZlbnRzIC1uIDxuYW1lc3BhY2U+IC0tc29ydC1ieT0nLmxhc3RU" + + "aW1lc3RhbXAnCgojIERlc2NyaWJlIGEgc3BlY2lmaWMgcG9kIChzaG93cyBldmVudHMsIGNvbmRp" + + "dGlvbnMsIHZvbHVtZXMpCmt1YmVjdGwgZGVzY3JpYmUgcG9kIC1uIDxuYW1lc3BhY2U+IDxwb2Qt" + + "bmFtZT4KYGBgCgojIyBGYWlsdXJlOiBJbWFnZVB1bGxCYWNrT2ZmCgojIyMgU3ltcHRvbXMKCmBg" + + "YApOQU1FICAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICAgICAgICAgICBSRVNUQVJUUyAgIEFH" + + "RQpjYXNzYW5kcmEtMCAgICAwLzEgICAgIEltYWdlUHVsbEJhY2tPZmYgICAwICAgICAgICAgIDVt" + + "CmBgYAoKRXZlbnRzIHNob3c6CmBgYApGYWlsZWQgdG8gcHVsbCBpbWFnZSAibnZjci5pby8uLi4v" + + "aW1hZ2U6dGFnIjogNDAxIFVuYXV0aG9yaXplZApgYGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gK" + + "IyBDaGVjayB3aGF0IGltYWdlIGlzIGZhaWxpbmcKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5h" + + "bWVzcGFjZT4gPHBvZC1uYW1lPiB8IGdyZXAgLUE1ICJFdmVudHM6IgoKIyBDaGVjayBpZiBwdWxs" + + "IHNlY3JldCBleGlzdHMgaW4gdGhlIG5hbWVzcGFjZQprdWJlY3RsIGdldCBzZWNyZXQgbnZjci1j" + + "cmVkcyAtbiA8bmFtZXNwYWNlPgoKIyBDaGVjayBpZiB0aGUgcG9kIHNwZWMgaGFzIGltYWdlUHVs" + + "bFNlY3JldHMKa3ViZWN0bCBnZXQgcG9kIC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gLW8ganNv" + + "bnBhdGg9J3suc3BlYy5pbWFnZVB1bGxTZWNyZXRzfScKCiMgQ2hlY2sgaWYgdGhlIFNlcnZpY2VB" + + "Y2NvdW50IGhhcyBpbWFnZVB1bGxTZWNyZXRzCmt1YmVjdGwgZ2V0IHNhIDxzYS1uYW1lPiAtbiA8" + + "bmFtZXNwYWNlPiAtbyBqc29ucGF0aD0ney5pbWFnZVB1bGxTZWNyZXRzfScKYGBgCgojIyMgRml4" + + "ZXMKCjEuICoqU2VjcmV0IG1pc3NpbmcgaW4gbmFtZXNwYWNlKio6IENyZWF0ZSBpdAogICBgYGBi" + + "YXNoCiAgIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBc" + + "CiAgICAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogICAgIC0tZG9ja2VyLXVzZXJuYW1lPSck" + + "b2F1dGh0b2tlbicgXAogICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAg" + + "ICAtLW5hbWVzcGFjZT08bmFtZXNwYWNlPiBcCiAgICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1s" + + "IHwga3ViZWN0bCBhcHBseSAtZiAtCiAgIGBgYAoKMi4gKipTZWNyZXQgZXhpc3RzIGJ1dCBwb2Qg" + + "ZG9lc24ndCByZWZlcmVuY2UgaXQqKjogVGhlIGNoYXJ0IG5lZWRzIGBpbWFnZVB1bGxTZWNyZXRz" + + "YCBjb25maWd1cmVkIHZpYSBoZWxtZmlsZSB2YWx1ZXMuIFNlZSBbcHVsbC1zZWNyZXRzLm1kXShw" + + "dWxsLXNlY3JldHMubWQpLgoKMy4gKipDaGFydCBkb2Vzbid0IHN1cHBvcnQgaW1hZ2VQdWxsU2Vj" + + "cmV0cyoqIChvcGVuYmFvLCBpbnZvY2F0aW9uLXNlcnZpY2UsIGVzcy1hcGksIG5vdGFyeS1zZXJ2" + + "aWNlKTogUGF0Y2ggU2VydmljZUFjY291bnRzIGFuZCByZXN0YXJ0IHBvZHMuIFNlZSBbcHVsbC1z" + + "ZWNyZXRzLm1kXShwdWxsLXNlY3JldHMubWQpLgoKNC4gKipXcm9uZyBjcmVkZW50aWFscyBpbiBz" + + "ZWNyZXQqKjogRGVsZXRlIGFuZCByZWNyZWF0ZQogICBgYGBiYXNoCiAgIGt1YmVjdGwgZGVsZXRl" + + "IHNlY3JldCBudmNyLWNyZWRzIC1uIDxuYW1lc3BhY2U+CiAgICMgUmVjcmVhdGUgd2l0aCBjb3Jy" + + "ZWN0IGNyZWRlbnRpYWxzCiAgIGBgYAoKIyMgRmFpbHVyZTogSW5pdDowLzEgU3R1Y2sgKFZhdWx0" + + "IEFnZW50KQoKIyMjIFN5bXB0b21zCgpTZXJ2aWNlIHBvZHMgc3R1Y2sgaW4gYEluaXQ6MC8xYCBm" + + "b3IgbWludXRlczoKYGBgCk5BTUUgICAgICAgICAgICAgICAgICAgICAgICBSRUFEWSAgIFNUQVRV" + + "UyAgICAgUkVTVEFSVFMgICBBR0UKbnZjZi1hcGktN2Y0Yzc2Zjc4OC00NHZsdCAgMC8yICAgICBJ" + + "bml0OjAvMSAgIDAgICAgICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoKVGhlIGluaXQgY29u" + + "dGFpbmVyIGlzIHRoZSB2YXVsdC1hZ2VudC1pbml0IGluamVjdG9yIHdhaXRpbmcgZm9yIE9wZW5C" + + "YW8uCgpgYGBiYXNoCiMgQ2hlY2sgT3BlbkJhbyBwb2RzCmt1YmVjdGwgZ2V0IHBvZHMgLW4gdmF1" + + "bHQtc3lzdGVtCgojIENoZWNrIGlmIE9wZW5CYW8gbWlncmF0aW9uIGpvYiByYW4Ka3ViZWN0bCBn" + + "ZXQgam9icyAtbiB2YXVsdC1zeXN0ZW0KCiMgQ2hlY2sgT3BlbkJhbyBwb2QgbG9ncwprdWJlY3Rs" + + "IGxvZ3MgLW4gdmF1bHQtc3lzdGVtIG9wZW5iYW8tc2VydmVyLTAgLWMgb3BlbmJhbwoKIyBDaGVj" + + "ayBpbml0IGNvbnRhaW5lciBsb2dzIG9uIHRoZSBzdHVjayBwb2QKa3ViZWN0bCBsb2dzIC1uIDxu" + + "YW1lc3BhY2U+IDxwb2QtbmFtZT4gLWMgdmF1bHQtYWdlbnQtaW5pdApgYGAKCiMjIyBGaXhlcwoK" + + "MS4gKipPcGVuQmFvIHBvZHMgbm90IHJ1bm5pbmcqKjogQ2hlY2sgdGhlaXIgZXZlbnRzIGZvciBp" + + "bWFnZSBwdWxsIGlzc3VlcywgcmVzb3VyY2UgaXNzdWVzLCBldGMuCgoyLiAqKk9wZW5CYW8gbWln" + + "cmF0aW9uIGpvYiBkaWRuJ3QgcnVuKio6IFRoaXMgaGFwcGVucyB3aGVuIGBoZWxtZmlsZSBzeW5j" + + "YCB3YXMgaW50ZXJydXB0ZWQuIERlc3Ryb3kgYW5kIHJlLXN5bmMgb3BlbmJhbzoKICAgYGBgYmFz" + + "aAogICBIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW9wZW5iYW8t" + + "c2VydmVyIGRlc3Ryb3kKICAga3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIHZhdWx0LXN5c3RlbQog" + + "ICBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgdmF1bHQtc3lzdGVtCiAgICMgUmUtY3JlYXRlIHB1" + + "bGwgc2VjcmV0IGlmIG5lZWRlZAogICBIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxl" + + "Y3RvciBuYW1lPW9wZW5iYW8tc2VydmVyIHN5bmMKICAgYGBgCgozLiAqKk9wZW5CYW8gcG9kcyBy" + + "dW5uaW5nIGJ1dCBub3QgaW5pdGlhbGl6ZWQqKjogQ2hlY2sgdW5zZWFsIHN0YXR1czoKICAgYGBg" + + "YmFzaAogICBrdWJlY3RsIGV4ZWMgLW4gdmF1bHQtc3lzdGVtIG9wZW5iYW8tc2VydmVyLTAgLWMg" + + "b3BlbmJhbyAtLSBiYW8gc3RhdHVzCiAgIGBgYAoKNC4gKipgdmF1bHQtYWdlbnQtaW5pdGAgbG9n" + + "cyBgYXV0aC9qd3QvbG9naW5gIC0+IGA0MDAgLi4uIG5vIGtub3duIGtleSBzdWNjZXNzZnVsbHkg" + + "dmFsaWRhdGVkIHRoZSB0b2tlbiBzaWduYXR1cmVgKioKICAgKGNvbW1vbiBvbiBBS1MsIGFuZCBv" + + "biBhbnkgY2x1c3RlciB3aG9zZSBPSURDIGlzc3VlciBwdWJsaXNoZXMgYSByb3RhdGluZyBtdWx0" + + "aS1rZXkgSldLUyk6CiAgIHRoZSBPcGVuQmFvIGBhdXRoL2p3dGAgbWV0aG9kIHdhcyBjb25maWd1" + + "cmVkIHdpdGggYSBzaW5nbGUgc3RhdGljIG1vdW50ZWQgcHVibGljIGtleQogICAoYGp3dF92YWxp" + + "ZGF0aW9uX3B1YmtleXNgKSBpbnN0ZWFkIG9mIHRoZSBpc3N1ZXIncyBsaXZlIEpXS1MsIHNvIGl0" + + "IGNhbm5vdCB2YWxpZGF0ZSB0aGUKICAgY2x1c3Rlci1zaWduZWQgU2VydmljZUFjY291bnQgdG9r" + + "ZW5zIHRoZSB2YXVsdC1hZ2VudHMgcHJlc2VudC4gRXZlcnkgc2VydmljZSdzCiAgIGB2YXVsdC1h" + + "Z2VudC1pbml0YCB0aGVuIGxvb3BzIG9uIHRoYXQgNDAwIGFuZCB0aGUgcG9kIG5ldmVyIGxlYXZl" + + "cyBgSW5pdDowLzFgLiBUaGlzIGlzIHRoZQogICBiZWhhdmlvciBvZiB0aGUgYmFzZSBkZWZhdWx0" + + "IGBvcGVuYmFvLm1pZ3JhdGlvbnMuaXNzdWVyRGlzY292ZXJ5LmVuYWJsZWQ6IGZhbHNlYDsgdGhl" + + "CiAgIG1pZ3JhdGlvbiBsb2cgc2hvd3MgYE9JREMgaXNzdWVyIGRpc2NvdmVyeSBpcyBkaXNhYmxl" + + "ZC4gVXNpbmcgU2VydmljZUFjY291bnQgaXNzdWVyIGFuZAogICBtb3VudGVkIHB1YmxpYyBrZXkg" + + "ZmFsbGJhY2tgLiBFbmFibGUgaXNzdWVyIGRpc2NvdmVyeSBzbyB0aGUgbWlncmF0aW9uIHVzZXMg" + + "dGhlIGxpdmUgSldLUywKICAgdGhlbiByZS1ydW4gaXQ6CiAgIGBgYGJhc2gKICAgIyBJbiB5b3Vy" + + "IGVudiB2YWx1ZXMgKGUuZy4gZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwpLCBzZXQ6CiAgICMgICBv" + + "cGVuYmFvOgogICAjICAgICBtaWdyYXRpb25zOgogICAjICAgICAgIGlzc3VlckRpc2NvdmVyeToK" + + "ICAgIyAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAga3ViZWN0bCBkZWxldGUgam9iIC1uIHZhdWx0" + + "LXN5c3RlbSBvcGVuYmFvLXNlcnZlci1taWdyYXRpb25zCiAgIEhFTE1GSUxFX0VOVj08ZW52PiBo" + + "ZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9b3BlbmJhby1zZXJ2ZXIgc3luYwogICBgYGAKICAgVGhl" + + "IG1pZ3JhdGlvbiBsb2cgc2hvdWxkIHRoZW4gc2hvdyBgUmVjZWl2ZWQgZGlzY292ZXJ5IGRvY3Vt" + + "ZW50IGZyb20KICAgLi4uLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uYCBhbmQgYEZp" + + "bmFsIE9wZW5CYW8gSldUIEpXS1MgVVJMIHNldCB0bzoKICAgLi4uL29wZW5pZC92MS9qd2tzYCwg" + + "YW5kIHRoZSBzZXJ2aWNlIHBvZHMgYXV0aGVudGljYXRlIGFuZCByZWFjaCBSZWFkeSB3aXRoaW4g" + + "fjEgbWluLgogICBBS1MgY2x1c3RlcnMgd2l0aCB0aGUgY2x1c3RlciBPSURDIGlzc3VlciBlbmFi" + + "bGVkICh0aGUgYGFrcy1jbHVzdGVyYCBkZWZhdWx0KSBhbHdheXMgbmVlZAogICB0aGlzIGJlY2F1" + + "c2UgdGhlIHN0YXRpYy1wdWJrZXkgZmFsbGJhY2sgY2Fubm90IG1hdGNoIHRoZSBpc3N1ZXIncyBy" + + "b3RhdGluZyBzaWduaW5nIGtleXMuCgojIyBGYWlsdXJlOiBPT01LaWxsZWQgb24gQ2Fzc2FuZHJh" + + "CgojIyMgU3ltcHRvbXMKCmBgYApOQU1FICAgICAgICAgIFJFQURZICAgU1RBVFVTICAgIFJFU1RB" + + "UlRTICAgQUdFCmNhc3NhbmRyYS0wICAgMC8xICAgICBPT01LaWxsZWQgIDMgICAgICAgICAxMG0K" + + "YGBgCgojIyMgRGlhZ25vc2lzCgpgYGBiYXNoCmt1YmVjdGwgZGVzY3JpYmUgcG9kIC1uIGNhc3Nh" + + "bmRyYS1zeXN0ZW0gY2Fzc2FuZHJhLTAgfCBncmVwIC1BMyAiTGFzdCBTdGF0ZSIKYGBgCgojIyMg" + + "Rml4CgpPdmVycmlkZSBDYXNzYW5kcmEgcmVzb3VyY2VzIHZpYSBoZWxtZmlsZSB2YWx1ZXMuIFNl" + + "ZSBFeGFtcGxlIDEgaW4KW2V4YW1wbGVzLm1kXSguLi9leGFtcGxlcy5tZCkuCgpgYGB5YW1sCi0g" + + "Y2Fzc2FuZHJhOgogICAgcmVzb3VyY2VzOgogICAgICBsaW1pdHM6CiAgICAgICAgY3B1OiAiOCIK" + + "ICAgICAgICBtZW1vcnk6IDgxOTJNaQogICAgICByZXF1ZXN0czoKICAgICAgICBjcHU6ICIyIgog" + + "ICAgICAgIG1lbW9yeTogNDA5Nk1pCmBgYAoKTm90ZTogYHJlc291cmNlUHJlc2V0YCBpcyBub3Qg" + + "YXZhaWxhYmxlIGluIHRoZSBOVkNGIGNhc3NhbmRyYSB3cmFwcGVyIGNoYXJ0LiBVc2UgZXhwbGlj" + + "aXQgYHJlc291cmNlc2AuCgojIyBGYWlsdXJlOiBQb2RzIFN0dWNrIGluIFBlbmRpbmcKCiMjIyBT" + + "eW1wdG9tcwoKYGBgCk5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMgICAgUkVTVEFSVFMgICBB" + + "R0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIFBlbmRpbmcgICAwICAgICAgICAgIDEwbQpgYGAKCiMj" + + "IyBEaWFnbm9zaXMKCmBgYGJhc2gKIyBDaGVjayBldmVudHMgZm9yIHNjaGVkdWxpbmcgZmFpbHVy" + + "ZXMKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPgoKIyBDb21t" + + "b24gY2F1c2VzOgojIC0gIjAvMTIgbm9kZXMgYXJlIGF2YWlsYWJsZTogMTIgbm9kZShzKSBkaWRu" + + "J3QgbWF0Y2ggUG9kJ3Mgbm9kZSBhZmZpbml0eSIKIyAtICIwLzEyIG5vZGVzIGFyZSBhdmFpbGFi" + + "bGU6IDEyIEluc3VmZmljaWVudCBtZW1vcnkiCiMgLSAicGVyc2lzdGVudHZvbHVtZWNsYWltIG5v" + + "dCBmb3VuZCIKYGBgCgojIyMgRml4ZXMKCjEuICoqTm9kZSBzZWxlY3RvciBtaXNtYXRjaCoqOiBD" + + "aGVjayBgbm9kZVNlbGVjdG9yc2AgaW4gZW52aXJvbm1lbnQgZmlsZQogICBgYGBiYXNoCiAgIGt1" + + "YmVjdGwgZ2V0IG5vZGVzIC0tc2hvdy1sYWJlbHMgfCBncmVwIG52Y2YKICAgYGBgCgoyLiAqKlN0" + + "b3JhZ2UgY2xhc3Mgbm90IGZvdW5kKio6IENoZWNrIHN0b3JhZ2UgY2xhc3MgZXhpc3RzCiAgIGBg" + + "YGJhc2gKICAga3ViZWN0bCBnZXQgc3RvcmFnZWNsYXNzCiAgIGBgYAoKMy4gKipJbnN1ZmZpY2ll" + + "bnQgcmVzb3VyY2VzKio6IENoZWNrIG5vZGUgY2FwYWNpdHkKICAgYGBgYmFzaAogICBrdWJlY3Rs" + + "IGRlc2NyaWJlIG5vZGUgPG5vZGUtbmFtZT4gfCBncmVwIC1BNSAiQWxsb2NhdGVkIHJlc291cmNl" + + "cyIKICAgYGBgCgojIyBGYWlsdXJlOiBIZWxtIFJlbGVhc2UgaW4gRmFpbGVkIFN0YXRlCgojIyMg" + + "U3ltcHRvbXMKCmBgYGJhc2gKaGVsbSBsaXN0IC1BCiMgU2hvd3MgcmVsZWFzZSB3aXRoIFNUQVRV" + + "UzogZmFpbGVkCmBgYAoKUmUtcnVubmluZyBgaGVsbWZpbGUgc3luY2AgYXBwZWFycyB0byBzdWNj" + + "ZWVkIGJ1dCBzZXJ2aWNlcyBkb24ndCB3b3JrIChtaWdyYXRpb25zIHNraXBwZWQpLgoKIyMjIERp" + + "YWdub3NpcwoKYGBgYmFzaApoZWxtIGhpc3RvcnkgPHJlbGVhc2UtbmFtZT4gLW4gPG5hbWVzcGFj" + + "ZT4KYGBgCgojIyMgRml4CgpNdXN0IGRlc3Ryb3kgdGhlIGZhaWxlZCByZWxlYXNlIGFuZCByZS1z" + + "eW5jIChub3QganVzdCBhcHBseSk6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmls" + + "ZSAtLXNlbGVjdG9yIG5hbWU9PHJlbGVhc2U+IGRlc3Ryb3kKIyBJZiBuYW1lc3BhY2UgbmVlZHMg" + + "Y2xlYW51cDoKa3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIDxuYW1lc3BhY2U+Cmt1YmVjdGwgY3Jl" + + "YXRlIG5hbWVzcGFjZSA8bmFtZXNwYWNlPgojIFJlLWNyZWF0ZSBwdWxsIHNlY3JldCBpZiBuZWVk" + + "ZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT08cmVsZWFzZT4g" + + "c3luYwpgYGAKCiMjIEZhaWx1cmU6IEFjY291bnQgQm9vdHN0cmFwIEpvYiBGYWlsZWQKCiMjIyBT" + + "eW1wdG9tcwoKU2VydmljZXMgZGVwbG95IGJ1dCBmdW5jdGlvbnMgY2FuJ3QgYmUgY3JlYXRlZC4g" + + "RXZlbnRzIHNob3cgYm9vdHN0cmFwIGpvYiBmYWlsdXJlLgoKIyMjIERpYWdub3NpcwoKYGBgYmFz" + + "aAojIENoZWNrIGJvb3RzdHJhcCBqb2Igc3RhdHVzCmt1YmVjdGwgZ2V0IGpvYnMgLW4gbnZjZgoK" + + "IyBHZXQgbG9ncyAoam9iIGF1dG8tZGVsZXRlcyBhZnRlciB+NSBtaW51dGVzKQprdWJlY3RsIGxv" + + "Z3Mgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIC1uIG52Y2YKCiMgQ2hlY2sgQVBJIGxv" + + "Z3MKa3ViZWN0bCBsb2dzIC1uIG52Y2YgLWwgYXBwLmt1YmVybmV0ZXMuaW8vbmFtZT1udmNmLWFw" + + "aSAtLXRhaWw9MTAwCmBgYAoKIyMjIENvbW1vbiBDYXVzZXMKCjEuICoqV3JvbmcgYmFzZTY0IGNy" + + "ZWRlbnRpYWxzKio6IENyZWRlbnRpYWxzIGluIGBzZWNyZXRzLzxlbnY+LXNlY3JldHMueWFtbGAg" + + "bXVzdCBiZSBgJG9hdXRodG9rZW46QVBJX0tFWWAgYmFzZTY0LWVuY29kZWQsIG5vdCBqdXN0IHRo" + + "ZSBBUEkga2V5CiAgIGBgYGJhc2gKICAgIyBWZXJpZnkgeW91ciBlbmNvZGVkIGNyZWRlbnRpYWwK" + + "ICAgZWNobyAnWU9VUl9CQVNFNjRfU1RSSU5HJyB8IGJhc2U2NCAtZAogICAjIFNob3VsZCBvdXRw" + + "dXQ6ICRvYXV0aHRva2VuOm52YXBpLXh4eHh4CiAgIGBgYAoKMi4gKipSZWdpc3RyeSB1bnJlYWNo" + + "YWJsZSoqOiBBUEkgY2FuJ3QgcmVhY2ggdGhlIHJlZ2lzdHJ5IHNwZWNpZmllZCBpbiBgYWNjb3Vu" + + "dEJvb3RzdHJhcC5yZWdpc3RyeUNyZWRlbnRpYWxzYAoKIyMjIEZpeAoKRml4IGNyZWRlbnRpYWxz" + + "IGluIHNlY3JldHMgZmlsZSwgdGhlbiByZWNvdmVyIHNlcnZpY2VzIHdpdGhvdXQgZGVzdHJveWlu" + + "ZyBkZXBlbmRlbmNpZXM6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + + "bGVjdG9yIHJlbGVhc2UtZ3JvdXA9c2VydmljZXMgZGVzdHJveQprdWJlY3RsIGRlbGV0ZSBuYW1l" + + "c3BhY2UgbnZjZiBhcGkta2V5cyBlc3Mgc2lzIC0taWdub3JlLW5vdC1mb3VuZAprdWJlY3RsIGNy" + + "ZWF0ZSBuYW1lc3BhY2UgbnZjZiAmJiBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgYXBpLWtleXMg" + + "JiYgXAogIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBlc3MgJiYga3ViZWN0bCBjcmVhdGUgbmFt" + + "ZXNwYWNlIHNpcwojIFJlLWNyZWF0ZSBwdWxsIHNlY3JldHMgaWYgbmVlZGVkCkhFTE1GSUxFX0VO" + + "Vj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9c2VydmljZXMgc3luYwpg" + + "YGAKCiMjIEZhaWx1cmU6IE5WQ0EgQ2xlYW51cCBTdHVjayAoRmluYWxpemVycykKCiMjIyBTeW1w" + + "dG9tcwoKQ29tcHV0ZS1wbGFuZSBjbGVhbnVwIGhhbmdzLiBOYW1lc3BhY2VzCnN0dWNrIGluIGBU" + + "ZXJtaW5hdGluZ2A6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IG5zCiMgbnZjYS1vcGVyYXRvciAgICBU" + + "ZXJtaW5hdGluZyAgIDEwbQojIG52Y2YtYmFja2VuZCAgICAgVGVybWluYXRpbmcgICAxMG0KYGBg" + + "CgojIyMgRml4CgpSdW4gdGhpcyBvbmx5IGFnYWluc3QgdGhlIGNvbXB1dGUgY29udGV4dCwgYWZ0" + + "ZXIgdGhlIG5vcm1hbCBjb21wdXRlLXBsYW5lCnRlYXJkb3duIGhhcyBmYWlsZWQuIFJlbW92ZSBm" + + "aW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgY3VzdG9tIHJlc291cmNlcyBhbmQKZm9yY2UtZGVs" + + "ZXRlIHN0dWNrIG5hbWVzcGFjZXM6CgpgYGBiYXNoCmV4cG9ydCBDT01QVVRFX0NPTlRFWFQ9PGNv" + + "bXB1dGUtcGxhbmUtY29udGV4dD4KCiMgUmVtb3ZlIGZpbmFsaXplcnMgZnJvbSBOVkNGQmFja2Vu" + + "ZCByZXNvdXJjZXMKa3ViZWN0bCAtLWNvbnRleHQgIiRDT01QVVRFX0NPTlRFWFQiIGdldCBudmNm" + + "YmFja2VuZHMgLUEgLW8ganNvbiB8IFwKICBqcSAnLml0ZW1zW10gfCAubWV0YWRhdGEubmFtZXNw" + + "YWNlICsgIi8iICsgLm1ldGFkYXRhLm5hbWUnIC1yIHwgXAogIHhhcmdzIC1Je30gc2ggLWMgJ2Nv" + + "bnRleHQ9IiQxIjsgbnM9IiR7MiUlLyp9IjsgbmFtZT0iJHsyIyMqL30iOyBrdWJlY3RsIC0tY29u" + + "dGV4dCAiJGNvbnRleHQiIHBhdGNoIG52Y2ZiYWNrZW5kICIkbmFtZSIgLW4gIiRucyIgLS10eXBl" + + "PW1lcmdlIC1wICJ7XCJtZXRhZGF0YVwiOntcImZpbmFsaXplcnNcIjpbXX19IicgXyAiJENPTVBV" + + "VEVfQ09OVEVYVCIge30KCiMgRm9yY2UtZGVsZXRlIHN0dWNrIG5hbWVzcGFjZXMgYnkgY2xlYXJp" + + "bmcgdGhlaXIgZmluYWxpemVycwpmb3IgbnMgaW4gbnZjYS1vcGVyYXRvciBudmNmLWJhY2tlbmQ7" + + "IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgIiRDT01QVVRFX0NPTlRFWFQiIGdldCBuYW1lc3BhY2Ug" + + "IiRucyIgLW8ganNvbiAyPi9kZXYvbnVsbCB8IFwKICAgIGpxICcuc3BlYy5maW5hbGl6ZXJzID0g" + + "W10nIHwgXAogICAga3ViZWN0bCAtLWNvbnRleHQgIiRDT01QVVRFX0NPTlRFWFQiIHJlcGxhY2Ug" + + "XAogICAgICAtLXJhdyAiL2FwaS92MS9uYW1lc3BhY2VzLyRucy9maW5hbGl6ZSIgLWYgLSAyPi9k" + + "ZXYvbnVsbApkb25lCmBgYAoKIyMgRmFpbHVyZTogTlZDQSBPcGVyYXRvciBNaXNzaW5nIG9yIE5v" + + "dCBSZWFkeQoKIyMjIFN5bXB0b21zCgpBZnRlciBjb21wdXRlLXBsYW5lIGluc3RhbGwgY29tcGxl" + + "dGVzLCBubyBgbnZjYS1vcGVyYXRvcmAgRGVwbG95bWVudCBleGlzdHMsIG9yCml0IGV4aXN0cyBi" + + "dXQgcG9kcyBhcmUgbm90IHJlYWR5OgoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0" + + "ZS1wbGFuZS1jb250ZXh0PiBnZXQgZGVwbG95bWVudCBudmNhLW9wZXJhdG9yIFwKICAtbiBudmNh" + + "LW9wZXJhdG9yCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGdldCBw" + + "b2RzIC1uIG52Y2Etb3BlcmF0b3IKYGBgCgojIyMgRGlhZ25vc2lzIGFuZCBGaXhlcwoKRmlyc3Qg" + + "aWRlbnRpZnkgd2hldGhlciB0aGUgaW5zdGFsbGF0aW9uIHVzZWQgdGhlIEhlbG1maWxlIHZhbHVl" + + "cyBmbG93IG9yIHRoZQpDTEkgcHJvZmlsZSBmbG93LiBSZS1ydW4gb25seSB0aGF0IGZsb3cncyBy" + + "ZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlvbiBzdGVwcwpmcm9tIFtTcGxpdCBDb21wdXRlLVBs" + + "YW5lIEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLiBEbyBub3QK" + + "c3Vic3RpdHV0ZSBvbmUgaGFuZG9mZiBmb3IgdGhlIG90aGVyLgoKSWYgaW5zdGFsbGF0aW9uIHN1" + + "Y2NlZWRzIGJ1dCBwb2RzIHN0aWxsIGZhaWwsIGluc3BlY3QgdGhlIGNvbXB1dGUgY29udGV4dDoK" + + "CmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZGVzY3Jp" + + "YmUgZGVwbG95IG52Y2Etb3BlcmF0b3IgXAogIC1uIG52Y2Etb3BlcmF0b3IKa3ViZWN0bCAtLWNv" + + "bnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gbG9ncyBkZXBsb3ltZW50L252Y2Etb3BlcmF0" + + "b3IgXAogIC1uIG52Y2Etb3BlcmF0b3IgLS10YWlsPTIwMAprdWJlY3RsIC0tY29udGV4dCA8Y29t" + + "cHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgbnZjZmJhY2tlbmQgLW4gbnZjYS1vcGVyYXRvcgpgYGAK" + + "CkZvciBwcml2YXRlIHJlZ2lzdHJ5IGZhaWx1cmVzLCB2ZXJpZnkgdGhhdCB0aGUgcHVsbCBzZWNy" + + "ZXQgZXhpc3RzIGluCmBudmNhLW9wZXJhdG9yYC4gVGhlIGNoYXJ0IGFuZCBvcGVyYXRvciBtaXJy" + + "b3IgaXQgdG8gYG52Y2Etc3lzdGVtYDsgZG8gbm90IHVzZSBhCmJyb2FkZXIgbWFudWFsIG5hbWVz" + + "cGFjZSBsb29wLiBTZWUKW3B1bGwtc2VjcmV0cy5tZF0ocHVsbC1zZWNyZXRzLm1kI2NvbXB1dGUt" + + "cGxhbmUtc2VjcmV0KS4KCiMjIEZhaWx1cmU6IEdhdGV3YXkgRW5kcG9pbnQgQ2hhbmdlZAoKIyMj" + + "IFN5bXB0b21zCgpSZXF1ZXN0cyB0aHJvdWdoIHRoZSBjb25maWd1cmVkIHJvdXRlIGRvbWFpbiBm" + + "YWlsIGFmdGVyIHRoZSBHYXRld2F5IG9yIGl0cyBsb2FkIGJhbGFuY2VyIGlzIHJlcGxhY2VkLiBU" + + "aGUgR2F0ZXdheSByZXBvcnRzIGEgbmV3IGVuZHBvaW50LgoKIyMjIERpYWdub3NpcwoKYGBgYmFz" + + "aApHQVRFV0FZX0FERFI9JChrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0" + + "PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1nYXRld2F5IC1uIGVudm95LWdhdGV3YXkgXAogIC1vIGpz" + + "b25wYXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFsdWV9JykKdGVzdCAtbiAiJEdBVEVXQVlf" + + "QUREUiIKZGlnICtzaG9ydCAiYXBpLjxkb21haW4+IgpjdXJsIC1IICJIb3N0OiBhcGkuPGRvbWFp" + + "bj4iICJodHRwOi8vJEdBVEVXQVlfQUREUi9oZWFsdGgiCgojIENoZWNrIGRpcmVjdCBhZGRyZXNz" + + "IGZpZWxkcyB1c2VkIGJ5IGEgc3BsaXQgZGVwbG95bWVudApncmVwIG52Y2ZOYXRzU2VydmljZVVS" + + "TCBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9lbnZpcm9ubWVudHMvPGVudj4ueWFtbApncmVw" + + "IC1FICdpY21zU2VydmljZXxyZXZhbFNlcnZpY2V8bmF0cycgXAogIGRlcGxveS9zdGFja3MvbnZj" + + "Zi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmBgYAoKIyMjIEZpeAoKS2Vl" + + "cCBgZ2xvYmFsLmRvbWFpbmAsIHJvdXRlIGhvc3RuYW1lcywgYW5kIEhvc3Qgb3ZlcnJpZGVzIHVu" + + "Y2hhbmdlZC4gVXBkYXRlIEROUwpvciB0aGUgZGlyZWN0IGNsaWVudCBkZXN0aW5hdGlvbi4gRm9y" + + "IHNwbGl0IGRlcGxveW1lbnRzLCB1cGRhdGUgb25seSBkaXJlY3QKR2F0ZXdheS1hZGRyZXNzIGZp" + + "ZWxkcyBhbmQgcmVmcmVzaCByZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlvbiB0aHJvdWdoIHRo" + + "ZQpzYW1lIHNlbGVjdGVkIGhhbmRvZmYuIFNlZQpbRXhhbXBsZSA0XSguLi9leGFtcGxlcy5tZCNl" + + "eGFtcGxlLTQtcmVjb3Zlci1mcm9tLWEtZ2F0ZXdheS1lbmRwb2ludC1jaGFuZ2UpLgoKIyMgVXNl" + + "ZnVsIE5hbWVzcGFjZS10by1TZXJ2aWNlIE1hcHBpbmcKClF1aWNrIHJlZmVyZW5jZSBmb3Igd2hp" + + "Y2ggc2VydmljZXMgcnVuIGluIHdoaWNoIG5hbWVzcGFjZToKCnwgTmFtZXNwYWNlIHwgU2Vydmlj" + + "ZXMgfAp8LS0tLS0tLS0tLS18LS0tLS0tLS0tLXwKfCBuYXRzLXN5c3RlbSB8IG5hdHMgfAp8IGNh" + + "c3NhbmRyYS1zeXN0ZW0gfCBjYXNzYW5kcmEgfAp8IHZhdWx0LXN5c3RlbSB8IG9wZW5iYW8tc2Vy" + + "dmVyIHwKfCBudmNmIHwgYXBpLCBpbnZvY2F0aW9uLXNlcnZpY2UsIGdycGMtcHJveHksIG5vdGFy" + + "eS1zZXJ2aWNlLCByZXZhbCwgbGxtLXJlcXVlc3Qtcm91dGVyLCBsbG0tYXBpLWdhdGV3YXkgfAp8" + + "IGFwaS1rZXlzIHwgYXBpLWtleXMsIGFkbWluLWlzc3Vlci1wcm94eSB8CnwgZXNzIHwgZXNzLWFw" + + "aSB8Cnwgc2lzIHwgc2lzIHwKfCBlbnZveS1nYXRld2F5LXN5c3RlbSB8IGVudm95IGdhdGV3YXkg" + + "KGluZ3Jlc3MgY29udHJvbGxlcikgfAp8IGVudm95LWdhdGV3YXkgfCBnYXRld2F5IHJlc291cmNl" + + "ICsgcm91dGVzIHwKUEsHCFY+Z5CVMAAAlTAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAARAAJ" + + "AGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvaGVsbWZpbGUt" + + "c3RydWN0dXJlLm1kVVQFAAEAps4SIyBIZWxtZmlsZSBTdHJ1Y3R1cmUgUmVmZXJlbmNlCgojIyBE" + + "aXJlY3RvcnkgTGF5b3V0CgpgYGAKbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2svCnwtLSBoZWxtZmls" + + "ZS5kLwp8ICAgfC0tIDAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbCAgIyBOQVRTLCBDYXNzYW5k" + + "cmEsIE9wZW5CYW8KfCAgIHwtLSAwMi1jb3JlLnlhbWwuZ290bXBsICAgICAgICAgICMgTlZDRiBz" + + "ZXJ2aWNlcyArIGluZ3Jlc3MKfCAgIGAtLSAwMy1vYnNlcnZhYmlsaXR5LnlhbWwuZ290bXBsICMg" + + "T2JzZXJ2YWJpbGl0eSBzdGFjayAob3B0aW9uYWwpCnwtLSBlbnZpcm9ubWVudHMvCnwgICB8LS0g" + + "YmFzZS55YW1sICAgICAgICAgICAgICAgICAgICAjIERlZmF1bHQgdmFsdWVzIChhbGwgZW52aXJv" + + "bm1lbnRzKQp8ICAgYC0tIDxlbnYtbmFtZT4ueWFtbCAgICAgICAgICAgICAgIyBQZXItZW52aXJv" + + "bm1lbnQgb3ZlcnJpZGVzCnwtLSBzZWNyZXRzLwp8ICAgYC0tIDxlbnYtbmFtZT4tc2VjcmV0cy55" + + "YW1sICAgICAgIyBTZW5zaXRpdmUgdmFsdWVzIChyZWdpc3RyeSBjcmVkcywgcGFzc3dvcmRzKQpg" + + "LS0gZ2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAgIyBHbyB0ZW1wbGF0ZSB0aGF0IGNv" + + "bnN0cnVjdHMgcGVyLWNoYXJ0IHZhbHVlcwoKbnZjZi1jb21wdXRlLXBsYW5lLXN0YWNrLwp8LS0g" + + "aGVsbWZpbGUuZC8KfCAgIHwtLSAwMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGwgICMgQ29tcHV0" + + "ZSBwbGFuZSBkZXBlbmRlbmN5IGNvbXBvbmVudHMKfCAgIGAtLSAwMi1udmNhLnlhbWwuZ290bXBs" + + "ICAgICAgICAgICMgbnZjYS1vcGVyYXRvciBjaGFydCBhbmQgbnZjYSBjb25maWd1cmF0aW9uCnwt" + + "LSBlbnZpcm9ubWVudHMvCnwgICB8LS0gYmFzZS55YW1sICAgICAgICAgICAgICAgICAgICAjIERl" + + "ZmF1bHQgdmFsdWVzIChhbGwgZW52aXJvbm1lbnRzKQp8ICAgYC0tIDxlbnYtbmFtZT4ueWFtbCAg" + + "ICAgICAgICAgICAgIyBQZXItZW52aXJvbm1lbnQgb3ZlcnJpZGVzCmAtLSBnbG9iYWwueWFtbC5n" + + "b3RtcGwgICAgICAgICAgICAgICAjIEdvIHRlbXBsYXRlIHRoYXQgY29uc3RydWN0cyBwZXItY2hh" + + "cnQgdmFsdWVzCmBgYAoKVGhlc2Ugc3RhY2tzIGhhdmUgc2VwYXJhdGUgZW52aXJvbm1lbnRzIGFu" + + "ZCBjbHVzdGVyIGNvbnRleHRzLiBUaGUgSGVsbWZpbGUKdmFsdWVzIGZsb3cgYXV0aG9ycyBib3Ro" + + "IGVudmlyb25tZW50IGZpbGVzLiBUaGUgQ0xJIHByb2ZpbGUgZmxvdyBpbnN0ZWFkIHVzZXMKdGhl" + + "IENMSS1nZW5lcmF0ZWQgY29udHJvbC1wbGFuZSBwcm9maWxlIGFzIGl0cyBlbmRwb2ludCBzb3Vy" + + "Y2UuIERvIG5vdCBtaXggdGhlCmhhbmRvZmZzLiBTZWUgW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5z" + + "dGFsbGF0aW9uXShjb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkuCgojIyBHb3RtcGwgRmls" + + "ZXMgYW5kIFRoZWlyIFJlbGVhc2VzCgojIyMgMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsCgp8" + + "IFJlbGVhc2UgfCBDaGFydCB8IE5hbWVzcGFjZSB8IE5vdGVzIHwKfC0tLS0tLS0tLXwtLS0tLS0t" + + "fC0tLS0tLS0tLS0tfC0tLS0tLS18CnwgbmF0cyB8IGhlbG0tbnZjZi1uYXRzIHwgbmF0cy1zeXN0" + + "ZW0gfCBNZXNzYWdpbmcgfAp8IG9wZW5iYW8tc2VydmVyIHwgaGVsbS1udmNmLW9wZW5iYW8tc2Vy" + + "dmVyIHwgdmF1bHQtc3lzdGVtIHwgU2VjcmV0cyBtYW5hZ2VtZW50LCBkZXBlbmRzIG9uIG5hdHMg" + + "fAp8IGNhc3NhbmRyYSB8IGhlbG0tbnZjZi1jYXNzYW5kcmEgfCBjYXNzYW5kcmEtc3lzdGVtIHwg" + + "RGF0YWJhc2UgfAoKVXNlcyBgPDw6ICpkZXBlbmRlbmN5YCB0ZW1wbGF0ZSBpbmhlcml0YW5jZSB3" + + "aXRoIGByZWxlYXNlLWdyb3VwOiBkZXBlbmRlbmNpZXNgIGxhYmVsLgoKIyMjIDAyLWNvcmUueWFt" + + "bC5nb3RtcGwKCnwgUmVsZWFzZSB8IENoYXJ0IHwgTmFtZXNwYWNlIHwgTGFiZWwgfAp8LS0tLS0t" + + "LS0tfC0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLXwKfCBhcGkta2V5cyB8IGhlbG0tbnZjZi1h" + + "cGkta2V5cyB8IGFwaS1rZXlzIHwgc2VydmljZXMgfAp8IHNpcyB8IGhlbG0tbnZjZi1zaXMgfCBz" + + "aXMgfCBzZXJ2aWNlcyB8CnwgYXBpIHwgaGVsbS1udmNmLWFwaSB8IG52Y2YgfCBzZXJ2aWNlcyB8" + + "CnwgaW52b2NhdGlvbi1zZXJ2aWNlIHwgaGVsbS1udmNmLWludm9jYXRpb24tc2VydmljZSB8IG52" + + "Y2YgfCBzZXJ2aWNlcyB8CnwgZ3JwYy1wcm94eSB8IGhlbG0tbnZjZi1ncnBjLXByb3h5IHwgbnZj" + + "ZiB8IHNlcnZpY2VzIHwKfCBlc3MtYXBpIHwgaGVsbS1udmNmLWVzcy1hcGkgfCBlc3MgfCBzZXJ2" + + "aWNlcyB8Cnwgbm90YXJ5LXNlcnZpY2UgfCBoZWxtLW52Y2Ytbm90YXJ5LXNlcnZpY2UgfCBudmNm" + + "IHwgc2VydmljZXMgfAp8IHJldmFsIHwgaGVsbS1yZXZhbCB8IG52Y2YgfCBzZXJ2aWNlcyB8Cnwg" + + "bGxtLXJlcXVlc3Qtcm91dGVyIHwgbnZjZi9oZWxtLW52Y2YtbGxtLXJlcXVlc3Qtcm91dGVyIHwg" + + "bnZjZiB8IHNlcnZpY2VzIHwKfCBsbG0tYXBpLWdhdGV3YXkgfCBudmNmL2hlbG0tbnZjZi1sbG0t" + + "YXBpLWdhdGV3YXkgfCBudmNmIHwgc2VydmljZXMgfAp8IGFkbWluLWlzc3Vlci1wcm94eSB8IGhl" + + "bG0tYWRtaW4tdG9rZW4taXNzdWVyLXByb3h5IHwgYXBpLWtleXMgfCAobm8gcmVsZWFzZS1ncm91" + + "cCBsYWJlbCkgfAp8IGluZ3Jlc3MgfCBudmNmLWdhdGV3YXktcm91dGVzIHwgZW52b3ktZ2F0ZXdh" + + "eS1zeXN0ZW0gfCBpbmdyZXNzIHwKCk1vc3Qgc2VydmljZXMgdXNlIGBpbmhlcml0OiBbe3RlbXBs" + + "YXRlOiBzZXJ2aWNlfV1gLiBMTE0gcmVsZWFzZXMgdXNlIE9DSSBjaGFydHMgZnJvbSB0aGUgYG52" + + "Y2ZgIHJlcG9zaXRvcnkgd2l0aCBzdGFuZGFsb25lIGB2YWx1ZXM6IFsuLi9nbG9iYWwueWFtbC5n" + + "b3RtcGxdYCBibG9ja3M7IHRoZXkgYXJlIGdhdGVkIG9uIGBhZGRvbnMubGxtLmVuYWJsZWRgLiBg" + + "YWRtaW4taXNzdWVyLXByb3h5YCBhbmQgYGluZ3Jlc3NgIGhhdmUgc3RhbmRhbG9uZSBgdmFsdWVz" + + "OmAgYmxvY2tzLgoKIyMjIDAzLW9ic2VydmFiaWxpdHkueWFtbC5nb3RtcGwKCnwgUmVsZWFzZSB8" + + "IENoYXJ0IHwgTmFtZXNwYWNlIHwgTGFiZWwgfAp8LS0tLS0tLS0tfC0tLS0tLS18LS0tLS0tLS0t" + + "LS18LS0tLS0tLXwKfCAob2JzZXJ2YWJpbGl0eSByZWxlYXNlcykgfCAodmFyaW91cykgfCBvYnNl" + + "cnZhYmlsaXR5IHwgb2JzZXJ2YWJpbGl0eSB8CgpHYXRlZCBvbiBvYnNlcnZhYmlsaXR5LXNwZWNp" + + "ZmljIGZsYWdzIGluIHRoZSBlbnZpcm9ubWVudCBmaWxlLiBTa2lwcGVkIGlmIGRpc2FibGVkLgoK" + + "IyMgVGVtcGxhdGUgSW5oZXJpdGFuY2UKCiMjIyBgPDw6ICpkZXBlbmRlbmN5YCAoWUFNTCBtZXJn" + + "ZSkKClVzZWQgaW4gYDAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbGAuIE1lcmdlcyB0aGUgdGVt" + + "cGxhdGUncyBwcm9wZXJ0aWVzIGludG8gdGhlIHJlbGVhc2UuCgoqKkdvdGNoYSoqOiBZQU1MIG1l" + + "cmdlIHJlcGxhY2VzIGxpc3RzLiBJZiB5b3UgYWRkIGEgYHZhbHVlczpgIGtleSB0byB0aGUgcmVs" + + "ZWFzZSwgaXQgKipyZXBsYWNlcyoqIHRoZSB0ZW1wbGF0ZSdzIGB2YWx1ZXM6YCBsaXN0IGVudGly" + + "ZWx5LiBZb3UgbXVzdCByZS1pbmNsdWRlIGFsbCB0ZW1wbGF0ZSB2YWx1ZXM6CgpJbiB0aGUgdGVt" + + "cGxhdGUgYmVsb3csIGA8cHJpdmF0ZS12YWx1ZXM+YCByZWZlcnMgdG8gdGhlIGBzZWNyZXRzL2Ag" + + "ZGlyZWN0b3J5IGF0IHRoZSBoZWxtZmlsZSBzdGFjayByb290LgoKYGBgeWFtbAojIFRlbXBsYXRl" + + "IGRlZmluZXM6CnRlbXBsYXRlczoKICBkZXBlbmRlbmN5OiAmZGVwZW5kZW5jeQogICAgY2hhcnQ6" + + "IG52Y2YvaGVsbS1udmNmLXt7IC5SZWxlYXNlLk5hbWUgfX0KICAgIHZhbHVlczoKICAgICAgLSAu" + + "Li9nbG9iYWwueWFtbC5nb3RtcGwKICAgICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVp" + + "cmVkRW52ICJIRUxNRklMRV9FTlYiIH19LXNlY3JldHMueWFtbAoKIyBXaGVuIG92ZXJyaWRpbmcs" + + "IE1VU1QgcmUtaW5jbHVkZSBib3RoOgotIG5hbWU6IGNhc3NhbmRyYQogIDw8OiAqZGVwZW5kZW5j" + + "eQogIHZhbHVlczoKICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAgICAg" + + "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTXVzdCByZS1pbmNsdWRlCiAgICAtIC4uLzxw" + + "cml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55" + + "YW1sICAgIyBNdXN0IHJlLWluY2x1ZGUKICAgIC0gY2Fzc2FuZHJhOiAgICAgICAgICAgICAgICAg" + + "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFlvdXIgb3ZlcnJpZGUK" + + "ICAgICAgICByZXNvdXJjZXM6CiAgICAgICAgICBsaW1pdHM6CiAgICAgICAgICAgIG1lbW9yeTog" + + "ODE5Mk1pCmBgYAoKIyMjIGBpbmhlcml0YCAoSGVsbWZpbGUgbmF0aXZlKQoKVXNlZCBpbiBgMDIt" + + "Y29yZS55YW1sLmdvdG1wbGAuIEhlbG1maWxlJ3MgbmF0aXZlIGluaGVyaXRhbmNlIG1lY2hhbmlz" + + "bS4KCmBgYHlhbWwKLSBuYW1lOiBhcGkKICB2ZXJzaW9uOiAxLjYuMAogIG5hbWVzcGFjZTogbnZj" + + "ZgogIGluaGVyaXQ6CiAgICAtIHRlbXBsYXRlOiBzZXJ2aWNlCmBgYAoKV2hlbiBhZGRpbmcgYHZh" + + "bHVlczpgIHRvIGFuIGluaGVyaXRlZCByZWxlYXNlLCB5b3UgYWxzbyBuZWVkIHRvIHJlLWluY2x1" + + "ZGUgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGZpbGVzIHNpbmNlIGB2YWx1ZXNgIGlzIGEgbGlzdCB0" + + "aGF0IGdldHMgcmVwbGFjZWQuCgojIyBWYWx1ZXMgUHJlY2VkZW5jZQoKRnJvbSBsb3dlc3QgdG8g" + + "aGlnaGVzdCBwcmlvcml0eToKCjEuIGBlbnZpcm9ubWVudHMvYmFzZS55YW1sYCAtLSBkZWZhdWx0" + + "cyBzaGFyZWQgYWNyb3NzIGFsbCBlbnZpcm9ubWVudHMKMi4gYGVudmlyb25tZW50cy88ZW52Pi55" + + "YW1sYCAtLSBwZXItZW52aXJvbm1lbnQgb3ZlcnJpZGVzCjMuIGBnbG9iYWwueWFtbC5nb3RtcGxg" + + "IC0tIEdvIHRlbXBsYXRlIHByb2Nlc3NpbmcgKGNvbnN0cnVjdHMgY2hhcnQtc3BlY2lmaWMgc3Ry" + + "dWN0dXJlKQo0LiBgPHByaXZhdGUtdmFsdWVzPi88ZW52Pi1zZWNyZXRzLnlhbWxgIC0tIHNlbnNp" + + "dGl2ZSB2YWx1ZXMKNS4gSW5saW5lIGB2YWx1ZXM6YCBibG9ja3Mgb24gcmVsZWFzZXMgLS0gaGln" + + "aGVzdCBwcmVjZWRlbmNlCgojIyBXaGF0IGdsb2JhbC55YW1sLmdvdG1wbCBQYXNzZXMgVGhyb3Vn" + + "aAoKYGdsb2JhbC55YW1sLmdvdG1wbGAgcmVhZHMgZnJvbSBgLlZhbHVlc2AgKHRoZSBtZXJnZWQg" + + "ZW52aXJvbm1lbnQgKyBlbnYtc3BlY2lmaWMgWUFNTCkgYW5kIGNvbnN0cnVjdHMgY2hhcnQtc3Bl" + + "Y2lmaWMgdmFsdWVzLiBJdCBvbmx5IHBhc3NlcyB0aHJvdWdoIGtleXMgaXQgZXhwbGljaXRseSBy" + + "ZWZlcmVuY2VzOgoKIyMjIENhc3NhbmRyYQotIGBjYXNzYW5kcmEucmVwbGljYUNvdW50YAotIGBj" + + "YXNzYW5kcmEuaW1hZ2UuKmAgKHJlZ2lzdHJ5LCByZXBvc2l0b3J5KQotIGBjYXNzYW5kcmEubWln" + + "cmF0aW9ucy5pbWFnZS4qYAotIGBjYXNzYW5kcmEucGVyc2lzdGVuY2Uuc2l6ZWAKLSBgY2Fzc2Fu" + + "ZHJhLm5vZGVTZWxlY3RvcmAgKGlmIGBnbG9iYWwubm9kZVNlbGVjdG9ycy5lbmFibGVkYCkKLSBg" + + "Y2Fzc2FuZHJhLmdsb2JhbC5kZWZhdWx0U3RvcmFnZUNsYXNzYAoKIyMjIE5BVFMKLSBgbmF0cy5j" + + "b250YWluZXIuaW1hZ2UuKmAKLSBgbmF0cy5yZWxvYWRlci5pbWFnZS4qYAotIGBuYXRzLm5hdHNC" + + "b3guY29udGFpbmVyLmltYWdlLipgCi0gYG5hdHMuY29uZmlnLmpldHN0cmVhbS5maWxlU3RvcmUu" + + "cHZjLnN0b3JhZ2VDbGFzc05hbWVgCi0gYG5hdHMucG9kVGVtcGxhdGUubWVyZ2Uuc3BlYy5ub2Rl" + + "U2VsZWN0b3JgIChpZiBlbmFibGVkKQoKIyMjIE9wZW5CYW8KLSBgb3BlbmJhby5taWdyYXRpb25z" + + "LmltYWdlLipgIGFuZCBgb3BlbmJhby5taWdyYXRpb25zLmVudmAKLSBgb3BlbmJhby5pbmplY3Rv" + + "ci5pbWFnZS4qYAotIGBvcGVuYmFvLnNlcnZlci5pbWFnZS4qYAotIGBvcGVuYmFvLnNlcnZlci5k" + + "YXRhU3RvcmFnZS4qYAotIE5vZGUgc2VsZWN0b3JzIChpZiBlbmFibGVkKQoKIyMjIFNlcnZpY2Vz" + + "IChBUEksIFNJUywgZXRjLikKLSBgPHNlcnZpY2U+LmltYWdlLipgIChyZWdpc3RyeSwgcmVwb3Np" + + "dG9yeSkKLSBgPHNlcnZpY2U+Lm5vZGVTZWxlY3RvcmAgKGlmIGVuYWJsZWQpCi0gYDxzZXJ2aWNl" + + "Pi5lbnYuKmAgKG9ic2VydmFiaWxpdHkgc2V0dGluZ3MpCgojIyMgTExNIEZ1bmN0aW9uIEVuYWJs" + + "ZW1lbnQKCkVuYWJsZSB0aGUgTExNIGFkZG9uIGJlZm9yZSBjcmVhdGluZyBvciBpbnZva2luZyBm" + + "dW5jdGlvbnMgd2l0aApgZnVuY3Rpb25UeXBlOiAiTExNImAuIFRoZSBhZGRvbiBkZXBsb3lzIGBs" + + "bG0tcmVxdWVzdC1yb3V0ZXJgIGFuZApgbGxtLWFwaS1nYXRld2F5YCwgYWRkcyB0aGUgYGxsbS5p" + + "bnZvY2F0aW9uLjxkb21haW4+YCByb3V0ZSB3aGVuIEdhdGV3YXkgQVBJCmluZ3Jlc3MgaXMgZW5h" + + "YmxlZCwgYW5kIGNvbmZpZ3VyZXMgd29ya2VycyB0byB1c2UgdGhlIExMTSBzaWRlY2FyLiBUaGUg" + + "SGVsbWZpbGUKY29uZGl0aW9uIGlzIGBhZGRvbnMubGxtLmVuYWJsZWRgLiBEbyBub3QgdXNlIHRo" + + "ZSBvYnNvbGV0ZSBgbGxtLmVuYWJsZWRgIHBhdGguCgpGb3IgYSBzaW5nbGUtbm9kZSBpc29sYXRl" + + "ZCB0ZXN0IGNsdXN0ZXIsIGFkZCB0aGlzIGNvbmZpZ3VyYXRpb24gdG8KYGVudmlyb25tZW50cy88" + + "ZW52Pi55YW1sYCBiZWZvcmUgYXBwbHlpbmcgdGhlIHN0YWNrOgoKYGBgeWFtbAphZGRvbnM6CiAg" + + "bGxtOgogICAgZW5hYmxlZDogdHJ1ZQogICAgZ2F0ZXdheToKICAgICAgcmVwbGljYUNvdW50OiAx" + + "CiAgICAgIGF1dGg6CiAgICAgICAgZ3JwY0luc2VjdXJlOiB0cnVlCiAgICAgIG1ldHJpY3M6CiAg" + + "ICAgICAgc2VydmljZU1vbml0b3I6CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQogICAgcmVxdWVz" + + "dFJvdXRlcjoKICAgICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2Vy" + + "dmljZU1vbml0b3I6CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQoKYWdlbnRDb25maWc6CiAgbWVy" + + "Z2VDb25maWc6IHwKICAgIGNsdXN0ZXI6CiAgICAgIHZhbGlkYXRpb25Qb2xpY3k6CiAgICAgICAg" + + "bmFtZTogVW5yZXN0cmljdGVkCiAgICB3b3JrbG9hZDoKICAgICAgc3RhcmdhdGVRVUlDSW5zZWN1" + + "cmU6IHRydWUKYGBgCgpVc2UgYHJlcGxpY2FDb3VudDogMWAgb25seSBmb3IgbG9jYWwgb3Igc2lu" + + "Z2xlLW5vZGUgdGVzdCBjbHVzdGVycy4gRm9yIHNoYXJlZApvciBwcm9kdWN0aW9uIGNsdXN0ZXJz" + + "LCB1c2UgdGhlIHJlcXVpcmVkIHJlcGxpY2EgY291bnQgYW5kIFRMUy1jYXBhYmxlIHNlcnZpY2UK" + + "Y29uZmlndXJhdGlvbi4gYGFkZG9ucy5sbG0uZ2F0ZXdheS5hdXRoLmdycGNJbnNlY3VyZWAgYW5k" + + "CmB3b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZWAgZW5hYmxlIHBsYWludGV4dCB0cmFuc3Bv" + + "cnRzLiBEbyBub3QgdXNlIHRoZW0gaW4KcHJvZHVjdGlvbi4KClRoZSByZXF1ZXN0IHJvdXRlciB1" + + "c2VzIGBwb3dlci1vZi10d29gIHdoZW4gbm8gbG9hZC1iYWxhbmNlciBjb25maWd1cmF0aW9uIGlz" + + "CnNldC4gQ29uZmlndXJlIG90aGVyIHJvdXRpbmcgbWV0aG9kcyB3aXRoIHRoZQpbTExNIFJlcXVl" + + "c3QgUm91dGVyIExvYWQgQmFsYW5jaW5nXShodHRwczovL2dpdGh1Yi5jb20vTlZJRElBL252Y2Yv" + + "YmxvYi9tYWluL2RvY3MvdXNlci9sbG0tcmVxdWVzdC1yb3V0ZXItbG9hZC1iYWxhbmNpbmcubWQp" + + "Cmd1aWRlLgoKSWYgdGhlIHNpZGVjYXIgaW1hZ2UgaXMgbWlycm9yZWQgb3V0c2lkZSB0aGUgc3Rh" + + "Y2sncyBkZWZhdWx0IGltYWdlIHJlZ2lzdHJ5IGFuZApyZXBvc2l0b3J5LCBzZXQgdGhlIGdlbmVy" + + "YXRlZCB3b3JrZXIgc2lkZWNhciBpbWFnZSBleHBsaWNpdGx5OgoKYGBgeWFtbAphcGk6CiAgZW52" + + "OgogICAgTlZDRl9TSURFQ0FSU19MTE1fUk9VVEVSX0NMSUVOVF9JTUFHRTogPHJlZ2lzdHJ5Pi88" + + "cmVwb3NpdG9yeT4vcHlsb246MC4yLjEKYGBgCgpSZW5kZXIgYW5kIGFwcGx5IHRoZSB1cGRhdGVk" + + "IGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQsIHRoZW4gcmVmcmVzaCBldmVyeQpyZWdpc3RlcmVk" + + "IGNvbXB1dGUgcGxhbmUgdXNpbmcgdGhlIHNhbWUgaGFuZG9mZiB1c2VkIGZvciBpdHMgaW5zdGFs" + + "bGF0aW9uIHNvCk5WQ0EgcmVjZWl2ZXMgYGFnZW50Q29uZmlnLm1lcmdlQ29uZmlnYDoKCmBgYGJh" + + "c2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08ZW52" + + "PiBoZWxtZmlsZSBzeW5jCmBgYAoKVXNlIHRoZSBjb21wbGV0ZSBjb21wdXRlLXBsYW5lIGluc3Rh" + + "bGwgY29tbWFuZCBmcm9tCltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0" + + "ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLiBBCkNMSS1wcm9maWxlIGluc3RhbGxhdGlvbiBtdXN0" + + "IHJlbWFpbiBwcm9maWxlLWRyaXZlbjsgYSBIZWxtZmlsZSBpbnN0YWxsYXRpb24KbXVzdCByZW1h" + + "aW4gdmFsdWVzLWRyaXZlbi4KCkV4aXN0aW5nIExMTSBmdW5jdGlvbiBwb2RzIGtlZXAgdGhlaXIg" + + "ZXhpc3Rpbmcgc2lkZWNhciBhcmd1bWVudHMuIFJlY3JlYXRlIG9yCnJlZGVwbG95IHRob3NlIGZ1" + + "bmN0aW9ucyBhZnRlciB0aGUgY29tcHV0ZS1wbGFuZSByZWZyZXNoLiBWZXJpZnkgdGhlIGNvbnRy" + + "b2wKcGxhbmUsIHJvdXRlLCBhbmQgd29ya2VyIHNpZGVjYXI6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0" + + "IGRlcGxveSAtbiBudmNmIGxsbS1hcGktZ2F0ZXdheQprdWJlY3RsIGdldCBzdGF0ZWZ1bHNldCAt" + + "biBudmNmIGxsbS1yZXF1ZXN0LXJvdXRlcgprdWJlY3RsIGdldCBwb2RzIC1uIG52Y2YgfCBncmVw" + + "IC1FICdsbG0tYXBpLWdhdGV3YXl8bGxtLXJlcXVlc3Qtcm91dGVyJwprdWJlY3RsIGdldCBodHRw" + + "cm91dGUgLUEgfCBncmVwIGxsbQprdWJlY3RsIC1uIG52Y2YtYmFja2VuZCBnZXQgcG9kIDxmdW5j" + + "dGlvbi1wb2Q+IFwKICAtbyBqc29ucGF0aD0ne3JhbmdlIC5zcGVjLmNvbnRhaW5lcnNbPyhALm5h" + + "bWU9PSJsbG0td29ya2VyIildLmFyZ3NbKl19ey59eyJcXG4ifXtlbmR9JwpgYGAKCkZvciBsb2Nh" + + "bCBwbGFpbnRleHQgY2x1c3RlcnMsIHRoZSBgbGxtLXdvcmtlcmAgYXJncyBtdXN0IGluY2x1ZGUK" + + "YC0tcXVpYy1pbnNlY3VyZWAuCgpGb3IgbG9hZC1iYWxhbmNlciBzY2hlbWEgYW5kIGFsZ29yaXRo" + + "bSBiZWhhdmlvciwgc2VlIHRoZQpbU3RhcmdhdGUgY29uZmlndXJhdGlvbiBndWlkZV0oaHR0cHM6" + + "Ly9naXRodWIuY29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9zcmMvbGlicmFyaWVzL3J1c3Qvc3Rh" + + "cmdhdGUvZG9jcy9sb2FkLWJhbGFuY2VyLWNvbmZpZ3VyYXRpb24ubWQpLgoKIyMgSGVsbWZpbGUg" + + "U2VsZWN0b3JzCgpUYXJnZXQgc3BlY2lmaWMgcmVsZWFzZXMgb3IgZ3JvdXBzOgoKYGBgYmFzaAoj" + + "IEJ5IHJlbGVhc2UgZ3JvdXAKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3Ig" + + "cmVsZWFzZS1ncm91cD1kZXBlbmRlbmNpZXMgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZp" + + "bGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIHN5bmMKSEVMTUZJTEVfRU5WPTxl" + + "bnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1pbmdyZXNzIHN5bmMKSEVMTUZJ" + + "TEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1vYnNlcnZhYmls" + + "aXR5IHN5bmMKCiMgQnkgcmVsZWFzZSBuYW1lCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAt" + + "LXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxl" + + "IC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHkgc3luYwpIRUxNRklMRV9FTlY9PGVu" + + "dj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWxsbS1yZXF1ZXN0LXJvdXRlciBzeW5jCkhFTE1G" + + "SUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9bGxtLWFwaS1nYXRld2F5IHN5" + + "bmMKCiMgVGVtcGxhdGUgb25seSAoZHJ5IHJ1bikKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxl" + + "IC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUKCiMgRGVzdHJveSBhIHNpbmdsZSBy" + + "ZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2Fu" + + "ZHJhIGRlc3Ryb3kKYGBgCgpOb3RlOiBgYWRtaW4taXNzdWVyLXByb3h5YCBoYXMgbm8gYHJlbGVh" + + "c2UtZ3JvdXBgIGxhYmVsLiBVc2UgYC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHlg" + + "LgpQSwcIwFYg548nAACPJwAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA/AAkAZGF0YS9udmNm" + + "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQF" + + "AAEAps4SIyBOVkNGIFVJIEFkZG9uCgpOVkNGIFVJIGlzIGFuIG9wdGlvbmFsLCBjdXN0b21lci1m" + + "YWNpbmcgTlZDRiBhZG1pbi1wYW5lbCBVSS4gSXQgaXMgZGlzYWJsZWQgYnkKZGVmYXVsdCBhbmQg" + + "YXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBOVkNGIFVJ" + + "IGFkZG9uLgoKIyMgV2hlbiB0byBlbmFibGUKCkVuYWJsZSBOVkNGIFVJIG9ubHkgd2hlbiB5b3Ug" + + "bmVlZCB0aGUgYWRtaW4tcGFuZWwgVUkgYW5kIHlvdXIgZXh0cmFjdGVkIHN0YWNrCnBhY2thZ2Ug" + + "aW5jbHVkZXMgdGhlIGFkZG9uLiBJZiB0aGUgcGFja2FnZSBkb2VzIG5vdCBjb250YWluIGEgYG52" + + "Y2YtdWlgIHJlbGVhc2UKYW5kIGBudmNmVWlgIHJvdXRlIHZhbHVlcywgc2tpcCB0aGUgYWRkb24g" + + "dW50aWwgeW91IHVzZSBhIHBhY2thZ2UgdGhhdCBpbmNsdWRlcwp0aGVtLgoKIyMgRW5hYmxlIHRo" + + "ZSBhZGRvbgoKRW5hYmxlIGl0IGluIGBlbnZpcm9ubWVudHMvPGVudi1uYW1lPi55YW1sYDoKCmBg" + + "YHlhbWwKYWRkb25zOgogIG52Y2ZVaToKICAgIGVuYWJsZWQ6IHRydWUKYGBgCgojIyBDcmVhdGUg" + + "bmFtZXNwYWNlIGFuZCBpbWFnZSBwdWxsIHNlY3JldAoKQ3JlYXRlIHRoZSBuYW1lc3BhY2UsIGFu" + + "ZCBhbiBpbWFnZSBwdWxsIHNlY3JldCBvbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUKcmVn" + + "aXN0cnk6CgpgYGBiYXNoCmt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBudmNmLXVpIC0tZHJ5LXJ1" + + "bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQoKIyBPbmx5IGlmIHB1bGxpbmcg" + + "ZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGUuZy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQ" + + "SV9LRVk9Ijx5b3VyLWtleT4iCmt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkg" + + "bnZjci1jcmVkcyBcCiAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogIC0tZG9ja2VyLXVzZXJu" + + "YW1lPSckb2F1dGh0b2tlbicgXAogIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwK" + + "ICAtLW5hbWVzcGFjZT1udmNmLXVpIFwKICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJl" + + "Y3RsIGFwcGx5IC1mIC0KYGBgCgpUaGUgZGVmYXVsdCByb3V0ZSBob3N0IGlzIGBudmNmLXVpLjxk" + + "b21haW4+YCBhbmQgdGhlIGJhY2tlbmQgaXMKYG52Y2YtdWkubnZjZi11aTo4MzAwYC4KCiMjIEFw" + + "cGx5IHRoZSBzZXJ2aWNlIGFuZCByb3V0ZQoKQWZ0ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBp" + + "bmNsdWRlcyB0aGUgYG52Y2YtdWlgIHJlbGVhc2UsIHByZXZpZXcgYW5kIGFwcGx5CnRoZSBzZXJ2" + + "aWNlIGFuZCByb3V0ZToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUg" + + "LS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgdGVtcGxhdGUKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4g" + + "aGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgc3luYwpIRUxNRklMRV9FTlY9PGVudi1u" + + "YW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBgYAoK" + + "IyMgVmVyaWZ5CgpWZXJpZnkgdGhlIHJvdXRlIG9ubHkgd2hlbiB0aGUgYWRkb24gaXMgcHJlc2Vu" + + "dCBhbmQgZW5hYmxlZDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgZGVwbG95LHN2YyAtbiBudmNmLXVp" + + "Cmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgLWkgbnZjZi11aQpjdXJsIC1pIC1IICJI" + + "b3N0OiBudmNmLXVpLjxkb21haW4+IiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+L3N0YXR1cyIK" + + "YGBgCgojIyBTZWN1cml0eQoKVGhlIE5WQ0YgVUkgYWRtaW4gcGFuZWwgaXMgY3VycmVudGx5IHVu" + + "YXV0aGVudGljYXRlZC4gRG8gbm90IGV4cG9zZSBpdCB0byB0aGUKcHVibGljIGludGVybmV0LiBS" + + "ZXN0cmljdCBhY2Nlc3MgdG8gYSB0cnVzdGVkIG5ldHdvcmssIFZQTiwgb3IgYW4gYXV0aGVudGlj" + + "YXRpbmcKcHJveHkgaW4gZnJvbnQgb2YgdGhlIGBudmNmLXVpYCByb3V0ZS4KUEsHCDj5J6+5BwAA" + + "uQcAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAPgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + + "aW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SIyBJbWFnZSBQ" + + "dWxsIFNlY3JldHMgUmVmZXJlbmNlCgojIyBPdmVydmlldwoKV2hlbiBwdWxsaW5nIE5WQ0YgaW1h" + + "Z2VzIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5IChmb3IgZXhhbXBsZSwgTkdDCmBudmNyLmlvYCks" + + "IEt1YmVybmV0ZXMgbmVlZHMgYGltYWdlUHVsbFNlY3JldHNgIG9uIGV2ZXJ5IHBvZC4gQ29udHJv" + + "bC1wbGFuZSBhbmQKY29tcHV0ZS1wbGFuZSBjcmVkZW50aWFscyBhcmUgY29uZmlndXJlZCBpbiB0" + + "aGVpciBvd24gY2x1c3RlciBjb250ZXh0cy4gRG8gbm90CnVzZSBvbmUgbWl4ZWQgbmFtZXNwYWNl" + + "IGxpc3QuCgpUaGUgcmVjb21tZW5kZWQgY29udHJvbC1wbGFuZSBhcHByb2FjaCB1c2VzIEt5dmVy" + + "bm8gdG8gaW5qZWN0IHRoZSBzZWNyZXQgaW50bwpjb250cm9sLXBsYW5lIHBvZHMgYXQgYWRtaXNz" + + "aW9uIHRpbWUuIFRoZSBjb21wdXRlLXBsYW5lIGNoYXJ0IGFuZCBvcGVyYXRvciB1c2UKdGhlIHNl" + + "Y3JldCBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciBpdCB0byBgbnZjYS1zeXN0ZW1gLgoK" + + "IyMgS3l2ZXJubyBBcHByb2FjaCAoUmVjb21tZW5kZWQpCgojIyMgMS4gSW5zdGFsbCBLeXZlcm5v" + + "CgpgYGBiYXNoCmhlbG0gcmVwbyBhZGQga3l2ZXJubyBodHRwczovL2t5dmVybm8uZ2l0aHViLmlv" + + "L2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUKaGVsbSBpbnN0YWxsIGt5dmVybm8ga3l2ZXJuby9r" + + "eXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUtbmFtZXNwYWNlIFwKICAtLWt1YmUtY29udGV4dCA8" + + "Y29udHJvbC1wbGFuZS1jb250ZXh0PgpgYGAKCiMjIyAyLiBDcmVhdGUgY29udHJvbC1wbGFuZSBw" + + "dWxsIHNlY3JldHMKCmBgYGJhc2gKZXhwb3J0IE5HQ19BUElfS0VZPSI8eW91ci1uZ2MtYXBpLWtl" + + "eT4iCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlz" + + "IGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29udGV4" + + "dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgbmFtZXNwYWNlICIkbnMiIFwKICAgIC0t" + + "ZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5l" + + "LWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQoKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0" + + "cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7" + + "IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gY3JlYXRlIHNl" + + "Y3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZj" + + "ci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2Vy" + + "LXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0t" + + "ZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5l" + + "LWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQpgYGAKCkZvciBub24tTkdDIHJlZ2lzdHJpZXMsIHJl" + + "cGxhY2UgYC0tZG9ja2VyLXNlcnZlcmAsIGAtLWRvY2tlci11c2VybmFtZWAsIGFuZCBgLS1kb2Nr" + + "ZXItcGFzc3dvcmRgLgoKIyMjIDMuIEFwcGx5IEt5dmVybm8gQ2x1c3RlclBvbGljeQoKYGBgeWFt" + + "bAphcGlWZXJzaW9uOiBreXZlcm5vLmlvL3YxCmtpbmQ6IENsdXN0ZXJQb2xpY3kKbWV0YWRhdGE6" + + "CiAgbmFtZTogbnZjZi1hZGQtaW1hZ2VwdWxsc2VjcmV0cwpzcGVjOgogIGJhY2tncm91bmQ6IGZh" + + "bHNlCiAgcnVsZXM6CiAgICAtIG5hbWU6IGFkZC1pbWFnZXB1bGxzZWNyZXQtdG8tbnZjZi1wb2Rz" + + "CiAgICAgIG1hdGNoOgogICAgICAgIGFueToKICAgICAgICAtIHJlc291cmNlczoKICAgICAgICAg" + + "ICAga2luZHM6CiAgICAgICAgICAgIC0gUG9kCiAgICAgICAgICAgIG5hbWVzcGFjZXM6CiAgICAg" + + "ICAgICAgIC0gIm52Y2YiCiAgICAgICAgICAgIC0gImFwaS1rZXlzIgogICAgICAgICAgICAtICJz" + + "aXMiCiAgICAgICAgICAgIC0gImVzcyIKICAgICAgICAgICAgLSAibmF0cy1zeXN0ZW0iCiAgICAg" + + "ICAgICAgIC0gImNhc3NhbmRyYS1zeXN0ZW0iCiAgICAgICAgICAgIC0gInZhdWx0LXN5c3RlbSIK" + + "ICAgICAgICAgICAgLSAiY2VydC1tYW5hZ2VyIgogICAgICBtdXRhdGU6CiAgICAgICAgcGF0Y2hT" + + "dHJhdGVnaWNNZXJnZToKICAgICAgICAgIG1ldGFkYXRhOgogICAgICAgICAgICBhbm5vdGF0aW9u" + + "czoKICAgICAgICAgICAgICBudmNmLm52aWRpYS5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVk" + + "LWJ5OiBreXZlcm5vCiAgICAgICAgICBzcGVjOgogICAgICAgICAgICBpbWFnZVB1bGxTZWNyZXRz" + + "OgogICAgICAgICAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpgYGBiYXNoCmt1YmVjdGwgLS1j" + + "b250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IFwKICAtZiBreXZlcm5vLWltYWdl" + + "cHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAKCiMjIyA0LiBJbnN0YWxsIHRoZSBjb250cm9sIHBs" + + "YW5lCgpDb250aW51ZSB3aXRoIHRoZSBzZWxlY3RlZCBjb250cm9sLXBsYW5lIGluc3RhbGxhdGlv" + + "biBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5z" + + "dGFsbGF0aW9uLm1kKS4gTm8KY29udHJvbC1wbGFuZSBoZWxtZmlsZSBtb2RpZmljYXRpb25zIGFy" + + "ZSBuZWVkZWQuIEt5dmVybm8gaW5qZWN0cyB0aGUgcHVsbApzZWNyZXQgaW50byBuZXcgY29udHJv" + + "bC1wbGFuZSBwb2RzLgoKIyMgQ29tcHV0ZS1QbGFuZSBTZWNyZXQKCkNyZWF0ZSB0aGUgc2VjcmV0" + + "IG9ubHkgaW4gYG52Y2Etb3BlcmF0b3JgIG9uIHRoZSBjb21wdXRlIGNsdXN0ZXI6CgpgYGBiYXNo" + + "Cmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3Bh" + + "Y2UgbnZjYS1vcGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVj" + + "dGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KCmt1YmVjdGwg" + + "LS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJl" + + "Z2lzdHJ5IG52Y3ItY3JlZHMgXAogIC0tZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAtLWRvY2tl" + + "ci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElf" + + "S0VZIiBcCiAgLS1uYW1lc3BhY2U9bnZjYS1vcGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAt" + + "byB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGFw" + + "cGx5IC1mIC0KYGBgCgpSZWZlcmVuY2UgaXQgaW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1l" + + "bnQgZmlsZToKCmBgYHlhbWwKZ2xvYmFsOgogIGltYWdlUHVsbFNlY3JldHM6CiAgICAtIG5hbWU6" + + "IG52Y3ItY3JlZHMKYGBgCgpUaGUgY2hhcnQgYW5kIG9wZXJhdG9yIHVzZSB0aGF0IHJlZmVyZW5j" + + "ZSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciB0aGUKc2VjcmV0IHRvIGBudmNhLXN5c3Rl" + + "bWAuIERvIG5vdCBjcmVhdGUgYSBicm9hZGVyIG1hbnVhbCBjb21wdXRlIG5hbWVzcGFjZSBsaXN0" + + "LiBGb2xsb3cKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShjb21wdXRlLXBsYW5l" + + "LWluc3RhbGxhdGlvbi5tZCkgZm9yIHRoZQpzZWxlY3RlZCBpbnN0YWxsIGZsb3cuCgojIyBWZXJp" + + "ZmljYXRpb24KCmBgYGJhc2gKIyBDaGVjayB0aGF0IGEgY29udHJvbC1wbGFuZSBwb2QgaGFzIHRo" + + "ZSBpbmplY3RlZCBzZWNyZXQKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4" + + "dD4gZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IFwKICAtbyBqc29ucGF0aD0ney5z" + + "cGVjLmltYWdlUHVsbFNlY3JldHN9JwojIEV4cGVjdGVkOiBbeyJuYW1lIjoibnZjci1jcmVkcyJ9" + + "XQoKIyBDaGVjayB0aGUgS3l2ZXJubyBhbm5vdGF0aW9uCmt1YmVjdGwgLS1jb250ZXh0IDxjb250" + + "cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiBcCiAg" + + "LW8ganNvbnBhdGg9J3subWV0YWRhdGEuYW5ub3RhdGlvbnMubnZjZlwubnZpZGlhXC5jb20vaW1h" + + "Z2VwdWxsc2VjcmV0LWluamVjdGVkLWJ5fScKIyBFeHBlY3RlZDoga3l2ZXJubwoKIyBDaGVjayBw" + + "dWxsIGV2ZW50cwprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQg" + + "ZXZlbnRzIC1uIDxuYW1lc3BhY2U+IFwKICAtLXNvcnQtYnk9Jy5sYXN0VGltZXN0YW1wJyB8IGdy" + + "ZXAgLWkgcHVsbAojIFNob3VsZCBzaG93ICJTdWNjZXNzZnVsbHkgcHVsbGVkIiBub3QgIjQwMSBV" + + "bmF1dGhvcml6ZWQiCgojIENoZWNrIHRoZSBjaGFydC9vcGVyYXRvciBtaXJyb3Igb24gdGhlIGNv" + + "bXB1dGUgY2x1c3RlcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBn" + + "ZXQgc2VjcmV0IG52Y3ItY3JlZHMgXAogIC1uIG52Y2Etc3lzdGVtCmBgYAoKIyMgV2hlbiBQdWxs" + + "IFNlY3JldHMgQXJlIE5vdCBOZWVkZWQKCi0gKipBV1MgRUNSIHdpdGggSUFNIG5vZGUgcm9sZXMq" + + "KjogSWYgeW91ciBub2RlcyBoYXZlIGBBbWF6b25FQzJDb250YWluZXJSZWdpc3RyeVJlYWRPbmx5" + + "YCBJQU0gcG9saWN5LCBLdWJlcm5ldGVzIGNhbiBwdWxsIGZyb20gRUNSIHdpdGhvdXQgZXhwbGlj" + + "aXQgc2VjcmV0cy4KLSAqKlB1YmxpYyByZWdpc3RyaWVzKio6IE5vIHB1bGwgc2VjcmV0cyBuZWVk" + + "ZWQuCi0gKipDU1AgYnVpbHQtaW4gY3JlZGVudGlhbCBoZWxwZXJzKio6IEdLRSBBcnRpZmFjdCBS" + + "ZWdpc3RyeSwgQXp1cmUgQUNSIHdpdGggbWFuYWdlZCBpZGVudGl0eSwgYW5kIHNpbWlsYXIgc2Vy" + + "dmljZXMuCgojIyBUcm91Ymxlc2hvb3RpbmcKCiMjIyBQb2RzIHN0aWxsIGluIEltYWdlUHVsbEJh" + + "Y2tPZmYgYWZ0ZXIgYXBwbHlpbmcgcG9saWN5CgpUaGUgS3l2ZXJubyBwb2xpY3kgb25seSBhZmZl" + + "Y3RzIHBvZHMgY3JlYXRlZCAqKmFmdGVyKiogdGhlIHBvbGljeSBpcyBhcHBsaWVkLiBEZWxldGUg" + + "c3R1Y2sgcG9kcyB0byB0cmlnZ2VyIHJlY3JlYXRpb246CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250" + + "ZXh0IDx0YXJnZXQtY29udGV4dD4gZGVsZXRlIHBvZHMgLW4gPG5hbWVzcGFjZT4gLS1hbGwKYGBg" + + "CgojIyMgS3l2ZXJubyBhZG1pc3Npb24gY29udHJvbGxlciBub3QgcnVubmluZwoKYGBgYmFzaApr" + + "dWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgcG9kcyAtbiBreXZl" + + "cm5vCiMgQWxsIHBvZHMgc2hvdWxkIGJlIFJ1bm5pbmcKYGBgCgojIyMgUG9saWN5IG5vdCBtYXRj" + + "aGluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBn" + + "ZXQgY2x1c3RlcnBvbGljeSBudmNmLWFkZC1pbWFnZXB1bGxzZWNyZXRzCiMgU2hvdWxkIHNob3cg" + + "UkVBRFk6IFRydWUKYGBgCgojIyMgV3Jvbmcgc2VjcmV0IG5hbWUKClRoZSBwb2xpY3kgcmVmZXJl" + + "bmNlcyBgbnZjci1jcmVkc2AuIFZlcmlmeSB0aGUgc2VjcmV0IGV4aXN0cyB3aXRoIHRoYXQgZXhh" + + "Y3QgbmFtZToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPHRhcmdldC1jb250ZXh0PiBnZXQg" + + "c2VjcmV0IG52Y3ItY3JlZHMgLW4gPG5hbWVzcGFjZT4KYGBgClBLBwhLQjWoABYAAAAWAABQSwEC" + + "FAAUAAgAAAAAACEAjHZJYkkQAABJEAAAEgAJAAAAAAAAAAAAAAAAAAAAZGF0YS9tYW5pZmVzdC5q" + + "c29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAMWeKOUFYAAABWAAACMACQAAAAAAAAAAAAAAkhAA" + + "AGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAA" + + "AAAhACHGyIbwCgAA8AoAADMACQAAAAAAAAAAAAAA8XAAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + + "Y2xpL2V4YW1wbGVzL2NpLXBpcGVsaW5lcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBodj9B" + + "6AsAAOgLAAA0AAkAAAAAAAAAAAAAAEt8AABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9leGFt" + + "cGxlcy9tdWx0aS1jbHVzdGVyLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAP5mQzrMDAAAzAwA" + + "ADcACQAAAAAAAAAAAAAAnogAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvYWRk" + + "LWNvbXB1dGUtcGxhbmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAkdwb+ZgZAACYGQAAOQAJ" + + "AAAAAAAAAAAAAADYlQAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9jcmVhdGUt" + + "YW5kLXJ1bi10YXNrLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhANJD3AQYJQAAGCUAADcACQAA" + + "AAAAAAAAAAAA4K8AAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvZGVwbG95LWFu" + + "ZC1pbnZva2UubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEADpw/l70OAAC9DgAAPQAJAAAAAAAA" + + "AAAAAABm1QAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9kaWFnbm9zZS1mYWls" + + "ZWQtaW5zdGFsbC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQCHK42YWhwAAFocAAA6AAkAAAAA" + + "AAAAAAAAAJfkAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2luc3RhbGwtZnJv" + + "bS1zY3JhdGNoLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAFBj3GS2BwAAtgcAADkACQAAAAAA" + + "AAAAAAAAYgEBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvcm90YXRlLWNsdXN0" + + "ZXItandrcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQASkzNZ4CEAAOAhAAAuAAkAAAAAAAAA" + + "AAAAAIgJAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3RlYXJkb3duLm1kVVQF" + + "AAEAps4SUEsBAhQAFAAIAAAAAAAhANu+VPjXIgAA1yIAADAACQAAAAAAAAAAAAAAzSsBAGRhdGEv" + + "bnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9jb21tYW5kcy5tZFVUBQABAKbOElBLAQIU" + + "ABQACAAAAAAAIQBzp1pk1QYAANUGAAAyAAkAAAAAAAAAAAAAAAtPAQBkYXRhL252Y2Ytc2VsZi1t" + + "YW5hZ2VkLWNsaS9yZWZlcmVuY2UvZXhpdC1jb2Rlcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAA" + + "IQAODAaVgSsAAIErAAAtAAkAAAAAAAAAAAAAAElWAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNs" + + "aS9yZWZlcmVuY2UvZmxhZ3MubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA864ThHQRAAB0EQAA" + + "NwAJAAAAAAAAAAAAAAAuggEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL3Ry" + + "b3VibGVzaG9vdGluZy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQAv2rl1QmIAAEJiAAAsAAkA" + + "AAAAAAAAAAAAABCUAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5t" + + "ZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQArE7g/rVUAAK1VAAA0AAkAAAAAAAAAAAAAALX2AQBk" + + "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9ldmFscy9ldmFscy5qc29uVVQFAAEA" + + "ps4SUEsBAhQAFAAIAAAAAAAhAAJSTkB/KAAAfygAAC8ACQAAAAAAAAAAAAAAzUwCAGRhdGEvbnZj" + + "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL2V4YW1wbGVzLm1kVVQFAAEAps4SUEsBAhQAFAAI" + + "AAAAAAAhAJZjvFkSMAAAEjAAAEwACQAAAAAAAAAAAAAAsnUCAGRhdGEvbnZjZi1zZWxmLW1hbmFn" + + "ZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWRV" + + "VAUAAQCmzhJQSwECFAAUAAgAAAAAACEAVj5nkJUwAACVMAAAOwAJAAAAAAAAAAAAAABHpgIAZGF0" + + "YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRV" + + "VAUAAQCmzhJQSwECFAAUAAgAAAAAACEAwFYg548nAACPJwAARAAJAAAAAAAAAAAAAABO1wIAZGF0" + + "YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1" + + "Y3R1cmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAOPknr7kHAAC5BwAAPwAJAAAAAAAAAAAA" + + "AABY/wIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9udmNm" + + "LXVpLWFkZG9uLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEtCNagAFgAAABYAAD4ACQAAAAAA" + + "AAAAAAAAhwcDAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMv" + + "cHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SUEsFBgAAAAAXABcArwkAAPwdAwAAAA==" var ( skillDataOnce sync.Once From 2630d3aa64e64fe186aa9b9fffc990d70767022d Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 16 Sep 2026 01:48:38 +0530 Subject: [PATCH 29/55] fix(nvcf-cli): pin deletes to the inspected object and always credential-check an NGC endpoint --- .../examples/ci-pipelines.md | 6 +- .../nvcf-self-managed-cli/reference/flags.md | 2 +- .../agentskill/skilldata_generated.go | 6386 +++++++++-------- .../internal/selfhosted/clustervalidator.go | 18 +- .../nvcf-cli/internal/selfhosted/preflight.go | 24 +- .../internal/selfhosted/pullsecret.go | 19 +- .../internal/selfhosted/pullsecret_test.go | 66 + .../nvcf-cli/internal/selfhosted/register.go | 27 + .../internal/selfhosted/registry_cred.go | 25 + .../internal/selfhosted/registry_cred_test.go | 49 + .../selfhosted/stale_namespace_test.go | 58 + 11 files changed, 3470 insertions(+), 3210 deletions(-) diff --git a/ai-tooling/user/skills/nvcf-self-managed-cli/examples/ci-pipelines.md b/ai-tooling/user/skills/nvcf-self-managed-cli/examples/ci-pipelines.md index e854a34373..f13e32d79a 100644 --- a/ai-tooling/user/skills/nvcf-self-managed-cli/examples/ci-pipelines.md +++ b/ai-tooling/user/skills/nvcf-self-managed-cli/examples/ci-pipelines.md @@ -12,15 +12,17 @@ deploy_nvcf: variables: KUBECONFIG: $KUBECONFIG_FILE script: - - nvcf-cli self-hosted check --pre --json | jq -e '.event != "phase_failed"' || exit 2 + - nvcf-cli self-hosted check --pre --json 2>&1 >/dev/null | grep '^{' | jq -e '.event != "phase_failed"' || exit 2 - nvcf-cli self-hosted up --cluster-name=$CLUSTER_NAME --token=$NVCF_ADMIN_JWT --non-interactive --json - - nvcf-cli self-hosted status --json | jq -e '.verdict == "healthy"' + - nvcf-cli self-hosted status --json 2>&1 >/dev/null | grep '^{' | jq -e '.verdict == "healthy"' ``` Notes: - `--non-interactive --token=$JWT` is required in CI; never use interactive `init`. - Always `--json` for machine-parsing. +- `--json` writes JSONL to stderr, not stdout, so redirect with `2>&1 >/dev/null` before a parser. +- stderr also carries plain-text notices, so filter to JSON lines. Do not add `--show-logs` here: it appends a non-JSON transcript to the same stream. - Final status check gates downstream stages on `verdict == "healthy"`. ## GitOps (Argo / Flux) pattern diff --git a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md index fc184f9bd1..cdc0e0cf53 100644 --- a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md +++ b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md @@ -53,7 +53,7 @@ after the run, so the kubeconfig context needs permission to manage those. | `--cluster-validator-pull-secret NAME` | docker-registry Secret in `default` used to pull the validator image. When empty, the CLI looks for one in the NVCF namespaces and falls back to minting one from `NGC_API_KEY` | auto-detect | | `--skip-cluster-validation` | Skip the in-cluster validator probe entirely. Env: `NVCF_CLI_SELFHOSTED_SKIP_CLUSTER_VALIDATION` | `false` | | `--no-cleanup` | Keep the validator Job (and its RBAC) after the run for debugging. The next run still sweeps prior Jobs | `false` | -| `--show-logs` | Print the validator transcript to stderr after the check events. Useful when piping `--json` to a script that also wants the transcript | `false` | +| `--show-logs` | Print the validator transcript to stderr after the check events. The transcript is not JSON, and `--json` also writes to stderr, so leave this off when a parser is reading the stream | `false` | ## `up`-specific diff --git a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go index 8058db021a..d51dddae64 100644 --- a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go +++ b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go @@ -31,14 +31,14 @@ import ( const skillDataZipBase64 = "" + "UEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAASAAkAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4S" + "ewogICJzY2hlbWFWZXJzaW9uIjogMSwKICAiZ2VuZXJhdGVkQXQiOiAiMTk3MC0wMS0wMVQwMDow" + - "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDI2NzAsCiAgImZp" + + "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDMwMjMsCiAgImZp" + "bGVzIjogWwogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvU0tJTEwu" + "bWQiLAogICAgICAic2hhMjU2IjogImFhOWY3ZTI0NmYzODA0YjMzNDNiNjU2MWU1YmNmZTdiYjcy" + "YjI0MDIxOTMzZTA0OWY4NWUwMDI4OTAzYmJmYTQiLAogICAgICAic2l6ZSI6IDI0OTE1CiAgICB9" + "LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvZXhhbXBsZXMvY2kt" + - "cGlwZWxpbmVzLm1kIiwKICAgICAgInNoYTI1NiI6ICIxYjU2MzQyMmU4MWRkYWJiNDgxMzhkYWI4" + - "NmQ3ZTZkMTBmNDIyMWYwMDk5OGM1MjlhODc1NDZhYjlkZmQ5MjUyIiwKICAgICAgInNpemUiOiAy" + - "ODAxCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvZXhh" + + "cGlwZWxpbmVzLm1kIiwKICAgICAgInNoYTI1NiI6ICI4NGVlNGE0MDc3MzRkYjkzZWRhMjg2OTBk" + + "NTk5OGU2ZWI0YjBlYTkwMTFlY2U4YWIxYWE2OWQyNzMzNjU2OTRmIiwKICAgICAgInNpemUiOiAz" + + "MTA3CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvZXhh" + "bXBsZXMvbXVsdGktY2x1c3Rlci5tZCIsCiAgICAgICJzaGEyNTYiOiAiNmRmMjg0NjBiNTgzNDNl" + "MjEwMjVhYTViZDc5ZjMzYjUxMmRjYTlmZjM5YjZhYjI2MDRmYzNmZWJiMDE1ODhiNCIsCiAgICAg" + "ICJzaXplIjogMzE2NQogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + @@ -71,9 +71,9 @@ const skillDataZipBase64 = "" + "ZW5jZS9leGl0LWNvZGVzLm1kIiwKICAgICAgInNoYTI1NiI6ICI2NGI1ZmE5YmNhZjBlMGE1M2Y3" + "ODkyMGI3M2ZjYjUzMGFiNjk0NTFiNDhhNWI0OTNmMjUyY2ExODU4M2FiMDg2IiwKICAgICAgInNp" + "emUiOiAxNzQ5CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1j" + - "bGkvcmVmZXJlbmNlL2ZsYWdzLm1kIiwKICAgICAgInNoYTI1NiI6ICI2NmNhZGYyYjliZGMzYThj" + - "NmZjOWI2N2EzZTIxZjZmZjE2YTNiYzE5MjI1NDE3OTllYWJjNjAyY2Y3MmQxOTg3IiwKICAgICAg" + - "InNpemUiOiAxMTc1MgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + + "bGkvcmVmZXJlbmNlL2ZsYWdzLm1kIiwKICAgICAgInNoYTI1NiI6ICJmMjNhZDhmYzViMGUyNTdk" + + "ZmQ0MmRlMGRjOTA0YmQ5ZTVhYTMxYmNkMTQ5ZWM4OWRmZWUxMjllYTU5NzRiYmZlIiwKICAgICAg" + + "InNpemUiOiAxMTc5OQogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + "ZWQtY2xpL3JlZmVyZW5jZS90cm91Ymxlc2hvb3RpbmcubWQiLAogICAgICAic2hhMjU2IjogImE2" + "MzA4NGUyMjQ5ZjFkMTU0YzU5ODFlNGEwNzJiN2M3ODRiODVlYTE0NjA4NjUxNWVhYjRhYjY3MGE5" + "NDBlOTQiLAogICAgICAic2l6ZSI6IDQ0NjgKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogIm52" + @@ -103,7 +103,7 @@ const skillDataZipBase64 = "" + "aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9wdWxsLXNlY3Jl" + "dHMubWQiLAogICAgICAic2hhMjU2IjogImVjMWYzZmZjZDE3ZTVmOTU4M2ZlZTM5NzQ0ZWU4OTdk" + "NDY2YmMzY2Y2Mzg5Mjk0MjY0ZDg5ZTdmOWVkMDFiODciLAogICAgICAic2l6ZSI6IDU2MzIKICAg" + - "IH0KICBdCn0KUEsHCGfXWVRKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + + "IH0KICBdCn0KUEsHCE8jOeVKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + "dGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQFAAEAps4SLS0tCm5hbWU6IG52Y2Yt" + "c2VsZi1tYW5hZ2VkLWNsaQpkZXNjcmlwdGlvbjogfAogIEluc3RhbGwsIG9wZXJhdGUsIGFuZCB0" + "ZWFyIGRvd24gc2VsZi1ob3N0ZWQgTlZJRElBIENsb3VkIEZ1bmN0aW9ucyAoTlZDRikKICBkZXBs" + @@ -550,3073 +550,2252 @@ const skillDataZipBase64 = "" + "cGxlCmRlcGxveV9udmNmOgogIHN0YWdlOiBkZXBsb3kKICBpbWFnZTogbnZjci5pby8wNjUxMTU1" + "MjE1ODY0OTc5L25jcC1kZXYvbnZjZi1jbGk6MS40LjAKICB2YXJpYWJsZXM6CiAgICBLVUJFQ09O" + "RklHOiAkS1VCRUNPTkZJR19GSUxFCiAgc2NyaXB0OgogICAgLSBudmNmLWNsaSBzZWxmLWhvc3Rl" + - "ZCBjaGVjayAtLXByZSAtLWpzb24gfCBqcSAtZSAnLmV2ZW50ICE9ICJwaGFzZV9mYWlsZWQiJyB8" + - "fCBleGl0IDIKICAgIC0gbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXAgLS1jbHVzdGVyLW5hbWU9JENM" + - "VVNURVJfTkFNRSAtLXRva2VuPSROVkNGX0FETUlOX0pXVCAtLW5vbi1pbnRlcmFjdGl2ZSAtLWpz" + - "b24KICAgIC0gbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzIC0tanNvbiB8IGpxIC1lICcudmVy" + - "ZGljdCA9PSAiaGVhbHRoeSInCmBgYAoKTm90ZXM6CgotIGAtLW5vbi1pbnRlcmFjdGl2ZSAtLXRv" + - "a2VuPSRKV1RgIGlzIHJlcXVpcmVkIGluIENJOyBuZXZlciB1c2UgaW50ZXJhY3RpdmUgYGluaXRg" + - "LgotIEFsd2F5cyBgLS1qc29uYCBmb3IgbWFjaGluZS1wYXJzaW5nLgotIEZpbmFsIHN0YXR1cyBj" + - "aGVjayBnYXRlcyBkb3duc3RyZWFtIHN0YWdlcyBvbiBgdmVyZGljdCA9PSAiaGVhbHRoeSJgLgoK" + - "IyMgR2l0T3BzIChBcmdvIC8gRmx1eCkgcGF0dGVybgoKQ0kgZG9lc24ndCBga3ViZWN0bCBhcHBs" + - "eWAg4oCUIGluc3RlYWQsIHJlbmRlciBtYW5pZmVzdHMsIGNvbW1pdCB0aGVtLCBsZXQgdGhlIGNv" + - "bnRyb2xsZXIgYXBwbHkuCgpgYGB5YW1sCnJlbmRlcjoKICBzY3JpcHQ6CiAgICAtIG52Y2YtY2xp" + - "IHNlbGYtaG9zdGVkIGluc3RhbGwgLS1jb250cm9sLXBsYW5lIC0tbm8tYXBwbHkgPiByZW5kZXJl" + - "ZC9jb250cm9sLXBsYW5lLnlhbWwKICAgIC0gbnZjZi1jbGkgc2VsZi1ob3N0ZWQgaW5zdGFsbCAt" + - "LWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9JE5BTUUgLS1uby1hcHBseSA+IHJlbmRlcmVk" + - "L2NvbXB1dGUtcGxhbmUueWFtbAogICAgLSBnaXQgYWRkIHJlbmRlcmVkLyAmJiBnaXQgY29tbWl0" + - "IC1tICJkZXBsb3kgTlZDRiAkVEFHIiAmJiBnaXQgcHVzaApgYGAKClRoZW4gQXJnb0NEIG9yIEZs" + - "dXggd2F0Y2hlcyBgcmVuZGVyZWQvYCBhbmQgYXBwbGllcy4gVGhlIENMSSBuZXZlciB0b3VjaGVz" + - "IHRoZSBjbHVzdGVyIGRpcmVjdGx5LgoKRm9yIHRoZSByZWdpc3RlciBzdGVwICh3aGljaCBtdXRh" + - "dGVzIElDTVMsIG5vdCBqdXN0IEs4cyk6CgpgYGB5YW1sCnJlZ2lzdGVyOgogIHNjcmlwdDoKICAg" + - "IC0gbnZjZi1jbGkgY2x1c3RlciByZWdpc3RlciAtLW5hbWU9JE5BTUUgLS1uY2EtaWQ9JE5DQSAt" + - "LXJlZ2lvbj0kUkVHSU9OIC0taWdub3JlLWV4aXN0aW5nCmBgYAoKYC0taWdub3JlLWV4aXN0aW5n" + - "YCBpcyB0aGUgR2l0T3BzLWZyaWVuZGx5IGlkZW1wb3RlbnQgY29udHJhY3QuCgojIyBNdWx0aS1j" + - "bHVzdGVyIHBpcGVsaW5lCgpXaGVuIHRoZSBwaXBlbGluZSBtYW5hZ2VzIG1hbnkgY29tcHV0ZSBj" + - "bHVzdGVycyBhZ2FpbnN0IG9uZSBjb250cm9sIHBsYW5lOgoKYGBgeWFtbApkZXBsb3lfY29tcHV0" + - "ZV9wbGFuZXM6CiAgcGFyYWxsZWw6CiAgICBtYXRyaXg6CiAgICAgIC0gQ0xVU1RFUjogbmNwLWVh" + - "c3QtMQogICAgICAgIENPTlRFWFQ6IGFkbWluQGdwdS1lYXN0LTEKICAgICAgLSBDTFVTVEVSOiBu" + - "Y3Atd2VzdC0xCiAgICAgICAgQ09OVEVYVDogYWRtaW5AZ3B1LXdlc3QtMQogICAgICAtIENMVVNU" + - "RVI6IG5jcC1ldS0xCiAgICAgICAgQ09OVEVYVDogYWRtaW5AZ3B1LWV1LTEKICBzY3JpcHQ6CiAg" + - "ICAtIG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwCiAgICAgICAgLS1jbHVzdGVyLW5hbWU9JENMVVNU" + - "RVIKICAgICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD0kQ09OVEVYVAogICAgICAgIC0taWNt" + - "cy11cmw9JElDTVNfUFVCTElDX1VSTAogICAgICAgIC0tdG9rZW49JE5WQ0ZfQURNSU5fSldUCiAg" + - "ICAgICAgLS1ub24taW50ZXJhY3RpdmUKICAgICAgICAtLWpzb24KYGBgCgpFYWNoIHBhcmFsbGVs" + - "IGpvYiByZWdpc3RlcnMgKyBpbnN0YWxscyBvbmUgY29tcHV0ZSBwbGFuZSBhZ2FpbnN0IHRoZSBz" + - "aGFyZWQgY29udHJvbCBwbGFuZS4gRmFpbHVyZXMgYXJlIGlzb2xhdGVkLgoKIyMgUGxhbi1vbmx5" + - "IHByZXZpZXcgaW4gUFJzCgpgYGB5YW1sCnByZXZpZXc6CiAgcnVsZXM6CiAgICAtIGlmOiAkQ0lf" + - "UElQRUxJTkVfU09VUkNFID09ICJtZXJnZV9yZXF1ZXN0X2V2ZW50IgogIHNjcmlwdDoKICAgIC0g" + - "fAogICAgICBudmNmLWNsaSBzZWxmLWhvc3RlZCB1cCBcCiAgICAgICAgLS1jbHVzdGVyLW5hbWU9" + - "JENMVVNURVJfTkFNRSBcCiAgICAgICAgLS1wbGFuLW9ubHkgXAogICAgICAgIC0tanNvbiB8IHRl" + - "ZSBwbGFuLmpzb25sCiAgICAtIGpxIC1zICcuWzBdJyBwbGFuLmpzb25sID4gcGxhbi5qc29uCiAg" + - "ICAtICdnaXRsYWItbXItY29tbWVudCAiIyMgTlZDRiBkZXBsb3kgcGxhblxuXG5cYFxgXGBqc29u" + - "XG4kKGNhdCBwbGFuLmpzb24pXG5cYFxgXGAiJwpgYGAKCmAtLXBsYW4tb25seWAgZXhpdHMgMCB3" + - "aXRob3V0IGNoYW5naW5nIGNsdXN0ZXIgc3RhdGU7IHRoZSBKU09OTCBvdXRwdXQgbGlzdHMgZWFj" + - "aCBwaGFzZSArIEVUQS4gUmVuZGVycyBuaWNlbHkgYXMgYW4gTVIgY29tbWVudC4KUEsHCJy3fgfx" + - "CgAA8QoAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAANAAJAGRhdGEvbnZjZi1zZWxmLW1hbmFn" + - "ZWQtY2xpL2V4YW1wbGVzL211bHRpLWNsdXN0ZXIubWRVVAUAAQCmzhIjIE11bHRpLWNsdXN0ZXIg" + - "cGF0dGVybnMKCkV4YW1wbGVzIG9mIHNwbGl0LWNsdXN0ZXIgKyBtYW55LWNvbXB1dGUtcGxhbmUg" + - "b3BlcmF0aW9uLgoKIyMgT25lIGNvbnRyb2wgcGxhbmUgKyBOIGNvbXB1dGUgcGxhbmVzCgpUaGUg" + - "Y2Fub25pY2FsIG11bHRpLWNsdXN0ZXIgdG9wb2xvZ3kuIEVhY2ggY29tcHV0ZSBwbGFuZSBpcyBy" + - "ZWdpc3RlcmVkIHNlcGFyYXRlbHk6CgpgYGBzaAojIDEuIEJyaW5nIHVwIHRoZSBjb250cm9sIHBs" + - "YW5lIChvbmUtdGltZSwgb24gdGhlIGNvbnRyb2wtcGxhbmUgY2x1c3Rlcik6CktVQkVDT05GSUc9" + - "Y3AueWFtbCBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSB8IGt1" + - "YmVjdGwgYXBwbHkgLWYgLQpudmNmLWNsaSBzZWxmLWhvc3RlZCBjaGVjayAtLWNvbnRyb2wtcGxh" + - "bmUgLS13YWl0IDVtCgojIDIuIFJlZ2lzdGVyICsgaW5zdGFsbCBlYWNoIGNvbXB1dGUgcGxhbmU6" + - "CmZvciBDVFggaW4gYWRtaW5AZ3B1LWVhc3QtMSBhZG1pbkBncHUtd2VzdC0xIGFkbWluQGdwdS1l" + - "dS0xOyBkbwogIE5BTUU9JChlY2hvICIkQ1RYIiB8IGN1dCAtZEAgLWYyKQogIG52Y2YtY2xpIHNl" + - "bGYtaG9zdGVkIHVwIFwKICAgIC0tY2x1c3Rlci1uYW1lPSROQU1FIFwKICAgIC0tY29tcHV0ZS1w" + - "bGFuZS1jb250ZXh0PSRDVFggXAogICAgLS1pY21zLXVybD1odHRwczovL2ljbXMubnZjZi5leGFt" + - "cGxlLmNvbSBcCiAgICAtLXRva2VuPSROVkNGX0FETUlOX0pXVCBcCiAgICAtLW5vbi1pbnRlcmFj" + - "dGl2ZSBcCiAgICAtLWpzb24KZG9uZQoKIyAzLiBWZXJpZnkgYWxsIGNvbXB1dGUgcGxhbmVzIHJl" + - "Z2lzdGVyZWQ6Cm52Y2YtY2xpIGNsdXN0ZXIgbGlzdC1yZWdpc3RlcmVkIC0tbmNhLWlkPSROQ0Ff" + - "SUQgLS1pY21zLXVybD0kSUNNUyAtLWpzb24gXAogIHwganEgJy5jbHVzdGVyc1tdIHwge25hbWU6" + - "IC5jbHVzdGVyTmFtZSwgc3RhdHVzLCBudmNhVmVyc2lvbn0nCmBgYAoKIyMgQ29tcHV0ZS1wbGFu" + - "ZS1vbmx5IG9wZXJhdG9yIHNjZW5hcmlvCgpUaGUgb3BlcmF0b3IgaGFzIGt1YmVjdGwgYWNjZXNz" + - "IHRvIE9ORSBjb21wdXRlIHBsYW5lIG9ubHkg4oCUIHRoZSBjb250cm9sIHBsYW5lIGlzIG9wZXJh" + - "dGVkIGJ5IHNvbWVvbmUgZWxzZSAoZS5nLiBZb3R0YSBydW5zIHRoZSBjb250cm9sIHBsYW5lIGZv" + - "ciBhIGN1c3RvbWVyKS4KCmBgYHNoCiMgTWludCBhIHRva2VuIHZpYSB0aGUgcHVibGljIGFwaSBn" + - "YXRld2F5ICh0aGUgY29udHJvbCBwbGFuZSdzIEFQSSBLZXlzCiMgc2VydmljZSBpcyByZWFjaGFi" + - "bGUgdmlhIGFwaS5udmNmLmV4YW1wbGUuY29tIOKAlCBubyBrdWJlY3RsIGFjY2VzcyBuZWVkZWQp" + - "OgpudmNmLWNsaSBpbml0IC0tYXBpLXVybD1odHRwczovL2FwaS5udmNmLmV4YW1wbGUuY29tCgoj" + - "IFJ1biBwcmUtZmxpZ2h0IHNjb3BlZCB0byB0aGUgY29tcHV0ZSBwbGFuZSBvbmx5OgpudmNmLWNs" + - "aSBzZWxmLWhvc3RlZCBjaGVjayAtLXByZSBcCiAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9YWRt" + - "aW5AZ3B1MSBcCiAgLS1pY21zLXVybD1odHRwczovL2ljbXMubnZjZi5leGFtcGxlLmNvbSBcCiAg" + - "LS1qc29uCgojIEJyaW5nIHVwIGp1c3QgdGhlIGNvbXB1dGUgcGxhbmU6Cm52Y2YtY2xpIHNlbGYt" + - "aG9zdGVkIHVwIFwKICAtLWNsdXN0ZXItbmFtZT1teS1jb21wdXRlLTEgXAogIC0tY29tcHV0ZS1w" + - "bGFuZS1jb250ZXh0PWFkbWluQGdwdTEgXAogIC0taWNtcy11cmw9aHR0cHM6Ly9pY21zLm52Y2Yu" + - "ZXhhbXBsZS5jb20gXAogIC0tdG9rZW49JEFETUlOX0pXVCBcCiAgLS1ub24taW50ZXJhY3RpdmUK" + - "CiMgU3RhdHVzIChjb21wdXRlLW9ubHkg4oCUIG9wZXJhdG9yIGNhbid0IHNlZSBjb250cm9sLXBs" + - "YW5lIGNvbXBvbmVudCBoZWFsdGgpOgpudmNmLWNsaSBzZWxmLWhvc3RlZCBzdGF0dXMgXAogIC0t" + - "Y29tcHV0ZS1wbGFuZS1jb250ZXh0PWFkbWluQGdwdTEgXAogIC0taWNtcy11cmw9aHR0cHM6Ly9p" + - "Y21zLm52Y2YuZXhhbXBsZS5jb20KYGBgCgojIyBGdW5jdGlvbnMgdGFyZ2V0aW5nIHNwZWNpZmlj" + - "IGNvbXB1dGUgcGxhbmVzCgpXaGVuIHlvdSBoYXZlIG11bHRpcGxlIGNvbXB1dGUgcGxhbmVzIGFu" + - "ZCB3YW50IGEgZnVuY3Rpb24gdG8gZGVwbG95IHRvIG9uZToKCmBgYGpzb24KewogICJmdW5jdGlv" + - "bklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAiPHZlcl9pZD4iLAogICJkZXBsb3ltZW50" + - "U3BlY2lmaWNhdGlvbnMiOiBbewogICAgImdwdSI6ICJIMTAwIiwKICAgICJpbnN0YW5jZVR5cGUi" + - "OiAiTkNQLkdQVS5IMTAwXzF4IiwKICAgICJtaW5JbnN0YW5jZXMiOiAxLAogICAgIm1heEluc3Rh" + - "bmNlcyI6IDEsCiAgICAiY2x1c3RlcnMiOiBbImdwdS1lYXN0LTEiXQogIH1dCn0KYGBgCgpUaGUg" + - "YGNsdXN0ZXJzYCBhcnJheSAodXNpbmcgY2x1c3RlciBuYW1lcywgbm90IElEcykgbGltaXRzIHNj" + - "aGVkdWxpbmcgdG8gdGhvc2UgY29tcHV0ZSBwbGFuZXMuIE9taXQgdG8gbGV0IElDTVMgY2hvb3Nl" + - "IGFueSBjb21wdXRlIHBsYW5lIHdpdGggYSBtYXRjaGluZyBTS1UuCgojIyBTdGF0dXMgZmFuLW91" + - "dCBhY3Jvc3MgY29tcHV0ZSBwbGFuZXMKCmBgYHNoCiMgTGlzdCBhbGwgcmVnaXN0ZXJlZCBjb21w" + - "dXRlIHBsYW5lczoKbnZjZi1jbGkgY2x1c3RlciBsaXN0LXJlZ2lzdGVyZWQgLS1uY2EtaWQ9JE5D" + - "QV9JRCAtLWljbXMtdXJsPSRJQ01TIC0tanNvbiBcCiAgfCBqcSAtciAnLmNsdXN0ZXJzW10uY2x1" + - "c3Rlck5hbWUnID4gY2x1c3RlcnMudHh0CgojIFN0YXR1cyBzbmFwc2hvdCBwZXIgY29tcHV0ZSBw" + - "bGFuZSAoYXNzdW1pbmcgZWFjaCBjb250ZXh0IG5hbWUgbWF0Y2hlcyk6CndoaWxlIHJlYWQgTkFN" + - "RTsgZG8KICBlY2hvICI9PT0gJE5BTUUgPT09IgogIG52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1" + - "cyBcCiAgICAtLWNsdXN0ZXItbmFtZT0kTkFNRSBcCiAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4" + - "dD1hZG1pbkAkTkFNRSBcCiAgICAtLWpzb24gfCBqcSAtYyAne2NsdXN0ZXI6LmNsdXN0ZXIsIHZl" + - "cmRpY3Q6LnZlcmRpY3QsIHJlY29uY2lsZToucmVjb25jaWxlQWdlU2VjfScKZG9uZSA8IGNsdXN0" + - "ZXJzLnR4dApgYGAKCkEgZnV0dXJlIE0rMTEgbWlsZXN0b25lIHdpbGwgYWRkIG5hdGl2ZSBmYW4t" + - "b3V0IChgc3RhdHVzIC0tYWxsLWNvbXB1dGUtcGxhbmVzYCkgc28gdGhpcyBkb2Vzbid0IG5lZWQg" + - "YSBzaGVsbCBsb29wLgpQSwcIoRTjgV0MAABdDAAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA3" + - "AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9hZGQtY29tcHV0ZS1wbGFuZS5t" + - "ZFVUBQABAKbOEiMgQWRkIGEgY29tcHV0ZSBwbGFuZSB0byBhbiBleGlzdGluZyBjb250cm9sIHBs" + - "YW5lCgpVc2VyIGhhcyBhIHdvcmtpbmcgTlZDRiBjb250cm9sIHBsYW5lIChydW5uaW5nIHNvbWV3" + - "aGVyZSkgYW5kIHdhbnRzIHRvIHJlZ2lzdGVyIGEgbmV3IEdQVSBjbHVzdGVyIGFnYWluc3QgaXQu" + - "IFRoaXMgaXMgdGhlIG11bHRpLWNsdXN0ZXIgc2NhbGluZyBwYXRoOiBvbmUgY29udHJvbCBwbGFu" + - "ZSDihpIgTiBjb21wdXRlIHBsYW5lcy4KCiMjIFByZXJlcXVpc2l0ZXMgdGhlIHVzZXIgbXVzdCBo" + - "YXZlCgotICoqa3ViZWN0bCBjb250ZXh0IGZvciB0aGUgbmV3IGNvbXB1dGUgcGxhbmUqKiBpbiB0" + - "aGVpciBgS1VCRUNPTkZJR2AuCi0gKipQdWJsaWMgSUNNUyBVUkwqKiBvZiB0aGUgZXhpc3Rpbmcg" + - "Y29udHJvbCBwbGFuZSAoZS5nLiBgaHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBsZS5jb21gKS4KLSAq" + - "KkFkbWluIEpXVCoqIGZvciB0aGUgY29udHJvbCBwbGFuZSdzIGFjY291bnQsIE9SIGFiaWxpdHkg" + - "dG8gbWludCBvbmUgdmlhIGBudmNmLWNsaSBpbml0YCBhZ2FpbnN0IHRoZSBjb250cm9sIHBsYW5l" + - "J3MgcHVibGljIGFwaSBlbmRwb2ludC4gKEFkbWluIHRva2VucyBjb21lIGZyb20gdGhlIEFQSSBL" + - "ZXlzIHNlcnZpY2UgdmlhIHRoZSBwdWJsaWMgYXBpIGdhdGV3YXkg4oCUIGt1YmVjdGwgYWNjZXNz" + - "IHRvIHRoZSBjb250cm9sIHBsYW5lIGlzIE5PVCByZXF1aXJlZCB0byBvYnRhaW4gb25lLikKLSBB" + - "IHVuaXF1ZSBgLS1jbHVzdGVyLW5hbWVgIHRoYXQgZG9lc24ndCBjb2xsaWRlIHdpdGggYWxyZWFk" + - "eS1yZWdpc3RlcmVkIGNsdXN0ZXJzLiBVc2UgYG52Y2YtY2xpIGNsdXN0ZXIgbGlzdC1yZWdpc3Rl" + - "cmVkIC0tbmNhLWlkPSROQ0FfSUQgLS1pY21zLXVybD0kSUNNU2AgdG8gY2hlY2suCgojIyBTdGVw" + - "cwoKMS4gKipBc2sgZm9yIGlucHV0czoqKgogICAtIGAtLWNsdXN0ZXItbmFtZT08dW5pcXVlPmAg" + - "4oCUIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgY29udHJvbCBwbGFuZSdzIE5DQSBzY29wZQog" + - "ICAtIGAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD08Y29udGV4dD5gIOKAlCB0aGUgbmV3IEdQVSBj" + - "bHVzdGVyJ3Mga3ViZWN0bCBjb250ZXh0CiAgIC0gYC0taWNtcy11cmw9PGh0dHBzOi8vaWNtcy5u" + - "dmNmLmV4YW1wbGUuY29tPmAg4oCUIGNvbnRyb2wgcGxhbmUncyBwdWJsaWMgSUNNUyBVUkwKICAg" + - "LSBHUFUgdHlwZT8gKGRlZmF1bHQgYEgxMDBgLCBidXQgYXNrKQoKMi4gKipQcmUtZmxpZ2h0IGp1" + - "c3QgdGhlIGNvbXB1dGUgcGxhbmU6KioKCiAgIGBgYHNoCiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVk" + - "IGNoZWNrIC0tcHJlIFwKICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD0kQ1RYIFwKICAgICAt" + - "LWljbXMtdXJsPSRJQ01TIFwKICAgICAtLWpzb24gfCBqcSAtYyAuCiAgIGBgYAoKICAgVGhpcyB2" + - "YWxpZGF0ZXMgdGhlIEdQVSBvcGVyYXRvciBpcyBpbnN0YWxsZWQsIEdQVSBub2RlIGxhYmVscyBh" + - "cmUgcHJlc2VudCwgYW5kIElDTVMgaXMgcmVhY2hhYmxlIHZpYSBIVFRQLiBBZGRyZXNzIGFueSBm" + - "YWlsdXJlcyBiZWZvcmUgcHJvY2VlZGluZy4KCjMuICoqUnVuIGBhZGQtY29tcHV0ZS1wbGFuZWA6" + - "KioKCiAgIGBgYHNoCiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGFkZC1jb21wdXRlLXBsYW5lIFwK" + - "ICAgICAtLWNsdXN0ZXItbmFtZT0kTkFNRSBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9" + - "JENUWCBcCiAgICAgLS1pY21zLXVybD0kSUNNUyBcCiAgICAgLS10b2tlbj0kSldUIFwKICAgICAt" + - "LW5vbi1pbnRlcmFjdGl2ZSBcCiAgICAgLS1qc29uCiAgIGBgYAoKICAgVGhpcyBpcyBhIHNlcGFy" + - "YXRlIHN1YmNvbW1hbmQgZnJvbSBgdXBgLiBJdCBydW5zIG9ubHkgdGhlIGNvbXB1dGUtcGxhbmUt" + - "cmVsZXZhbnQgcGhhc2VzOiAxIChjb21wdXRlLXBsYW5lIHByZWZsaWdodCksIDUgKHJlZ2lzdGVy" + - "KSwgNiAoY29tcHV0ZS1wbGFuZSBhcHBseSksIDggKGZpbmFsIGhlYWx0aCBvbiB0aGUgbmV3IGNv" + - "bXB1dGUgcGxhbmUpLiBJdCBkb2VzIE5PVCB0b3VjaCB0aGUgY29udHJvbCBwbGFuZSBhbmQgZG9l" + - "cyBOT1QgYWNjZXB0IGAtLWNvbnRyb2wtcGxhbmUtY29udGV4dGAg4oCUIHRoZSBjb250cm9sIHBs" + - "YW5lIGlzIHJlYWNoZWQgb3ZlciBIVFRQUyBhdCBgLS1pY21zLXVybGAuIGAtLXRva2VuYCBpcyBy" + - "ZXF1aXJlZCBiZWNhdXNlIHRoZXJlJ3Mgbm8ga3ViZWN0bCBwYXRoIHRvIG1pbnQgb25lIGZyb20u" + - "Cgo0LiAqKlZlcmlmeS4qKiBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzIC0tY2x1c3Rlci1u" + - "YW1lPSROQU1FIC0tanNvbiB8IGpxYCDigJQgZXhwZWN0IGB2ZXJkaWN0OiAiaGVhbHRoeSJgLiBU" + - "aGUgUmVnaXN0ZXJlZCBDb21wdXRlIFBsYW5lcyBwYW5lbCBmcm9tIElDTVMgc2hvdWxkIG5vdyBs" + - "aXN0IHRoZSBuZXcgY2x1c3Rlci4KCjUuICoqU21va2UuKiogW2RlcGxveS1hbmQtaW52b2tlLm1k" + - "XShkZXBsb3ktYW5kLWludm9rZS5tZCkg4oCUIGRlcGxveSBhIHNtYWxsIGZ1bmN0aW9uIHRvIHRo" + - "ZSBuZXcgY29tcHV0ZSBwbGFuZSB0byBjb25maXJtIHNjaGVkdWxpbmcgd29ya3MuCgojIyBXaGF0" + - "IGlmIGEgY2x1c3RlciB3aXRoIHRoZSBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHM/CgpgYWRkLWNv" + - "bXB1dGUtcGxhbmVgJ3MgcmVnaXN0ZXIgcGhhc2UgdXNlcyBgLS1pZ25vcmUtZXhpc3RpbmdgIHNl" + - "bWFudGljcyDigJQgaXQnbGwgbWF0Y2ggdGhlIGV4aXN0aW5nIElDTVMgcm93IGFuZCByZXVzZSBp" + - "dHMgY2x1c3RlcklkLiBUd28gc2NlbmFyaW9zOgoKLSAqKlJlLXJlZ2lzdGVyaW5nIHRoZSBzYW1l" + - "IGNsdXN0ZXIqKiAocmUtcnVubmluZyBvbiB0aGUgc2FtZSBjb21wdXRlIHBsYW5lIHRoYXQgd2Fz" + - "IHByZXZpb3VzbHkgcmVnaXN0ZXJlZCk6IGV4cGVjdGVkLCBuby1vcCBzZW1hbnRpY3MuCi0gKipE" + - "aWZmZXJlbnQgcGh5c2ljYWwgY2x1c3RlciBidXQgc2FtZSBuYW1lKio6IHRoZSBzZWNvbmQgYXR0" + - "ZW1wdCB3aWxsIHJldXNlIHRoZSBJQ01TIHJvdywgYnV0IHRoZSBuZXcgY29tcHV0ZSBwbGFuZSdz" + - "IEpXS1Mgd2lsbCBiZSBzaWxlbnRseSAqcmVwbGFjZWQqIOKAlCB0aGUgb2xkIGNvbXB1dGUgcGxh" + - "bmUncyBOVkNBIGFnZW50IHdpbGwgc3RhcnQgZmFpbGluZyBQU0FUIGF1dGguICoqQ29uZmlybSB3" + - "aXRoIHRoZSB1c2VyKiogdGhhdCB0aGV5IG1lYW50IHRvIG92ZXJ3cml0ZS4KCldoZW4gaW4gZG91" + - "YnQsIHJ1biBgbnZjZi1jbGkgY2x1c3RlciBsaXN0LXJlZ2lzdGVyZWQgLS1uY2EtaWQ9JE5DQV9J" + - "RCAtLWljbXMtdXJsPSRJQ01TYCBmaXJzdCBhbmQgYXNrIHRoZSB1c2VyIGJlZm9yZSBwcm9jZWVk" + - "aW5nIHdpdGggYSBuYW1lIHRoYXQgYWxyZWFkeSBleGlzdHMuClBLBwhCJ0kPBQ0AAAUNAABQSwME" + - "FAAIAAAAAAAhAAAAAAAAAAAAAAAAADkACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9t" + - "cHRzL2NyZWF0ZS1hbmQtcnVuLXRhc2subWRVVAUAAQCmzhIjIENyZWF0ZSBhbmQgcnVuIGEgdGFz" + - "awoKU3RhbmRhcmQgZmxvdzogbWludCBBUEkga2V5cyAtPiB0YXNrIENSRUFURSAtPiBtb25pdG9y" + - "IC0+IHJldHJpZXZlIHJlc3VsdHMgLT4gY2xlYW51cC4KCiMjIDEuIE1pbnQgQVBJIGtleXMKClRo" + - "ZSBhZG1pbiB0b2tlbiBmcm9tIGBpbml0YCBkb2VzIG5vdCBjYXJyeSB0YXNrIGludm9jYXRpb24g" + - "c2NvcGUuIEdlbmVyYXRlIEFQSSBrZXlzOgoKYGBgc2gKbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0" + - "ZSAtLWRlc2NyaXB0aW9uPSJ0YXNrIHNtb2tlIHRlc3QiIC0tZXhwaXJlcy1pbj04aAojIC0+IGZ1" + - "bmN0aW9uIGtleTogbnZhcGktLi4uCiMgLT4gdGFzayBrZXk6IG52YXBpLS4uLgpgYGAKCkJvdGgg" + - "a2V5cyBhcmUgc2F2ZWQgdG8gQ0xJIHN0YXRlLiBUbyBtaW50IG9ubHkgdGhlIHRhc2sga2V5OgoK" + - "YGBgc2gKbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWZvciB0YXNrIC0tZGVzY3JpcHRpb249" + - "InRhc2sgc21va2UgdGVzdCIgLS1leHBpcmVzLWluPThoCmBgYAoKVG8gdmFsaWRhdGUgZWFjaCBr" + - "ZXkgaW1tZWRpYXRlbHkgYWZ0ZXIgbWludGluZzoKCmBgYHNoCm52Y2YtY2xpIGFwaS1rZXkgZ2Vu" + - "ZXJhdGUgLS1kZXNjcmlwdGlvbj0idGFzayBzbW9rZSB0ZXN0IiAtLWV4cGlyZXMtaW49OGggLS12" + - "YWxpZGF0ZQojIC0+IGZ1bmN0aW9uIEFQSSBrZXkgdmFsaWRhdGlvbiBwYXNzZWQhCiMgLT4gdGFz" + - "ayBBUEkga2V5IHZhbGlkYXRpb24gcGFzc2VkIQpgYGAKCk5ldmVyIGVjaG8gdGhlIGtleSB2YWx1" + - "ZSAobnZhcGktLi4uKSBpbnRvIGNoYXQgb3IgbG9ncy4gUmVwb3J0IG9ubHkgdGhhdCB0aGUga2V5" + - "IHdhcyBtaW50ZWQsIGl0cyBkZXNjcmlwdGlvbiwgYW5kIGl0cyBleHBpcnkg4oCUIG5ldmVyIHRo" + - "ZSB2YWx1ZSBpdHNlbGYuCgojIyMgRnJlc2ggc2Vzc2lvbiBwcmUtZmxpZ2h0CgpCZWZvcmUgcnVu" + - "bmluZyBhbnkgYHRhc2tgIGNvbW1hbmQgaW4gYSBmcmVzaCBhZ2VudCBzZXNzaW9uLCB2ZXJpZnkg" + - "Y3JlZGVudGlhbHM6CgoxLiBDaGVjayB3aGV0aGVyIGBOVkNGX0FQSV9LRVlgIGlzIHNldDoKCiAg" + - "IGBgYHNoCiAgIHByaW50ZW52IE5WQ0ZfQVBJX0tFWSA+IC9kZXYvbnVsbCAyPiYxICYmIGVjaG8g" + - "c2V0IHx8IGVjaG8gdW5zZXQKICAgYGBgCgoyLiBJZiB1bnNldCwgcmVhZCB0aGUgc3RvcmVkIGtl" + - "eSBleHBpcnkgd2l0aG91dCBwcmludGluZyB0aGUgdmFsdWU6CgogICBgYGBzaAogICBweXRob24z" + - "IC1jICJpbXBvcnQganNvbixwYXRobGliOyBzPWpzb24ubG9hZHMocGF0aGxpYi5QYXRoKCd+Ly5u" + - "dmNmLWNsaS5zdGF0ZScpLmV4cGFuZHVzZXIoKS5yZWFkX3RleHQoKSk7IHByaW50KHMuZ2V0KCdu" + - "dmN0QXBpS2V5RXhwaXJhdGlvbicsJ21pc3NpbmcnKSkiCiAgIGBgYAoKMy4gSWYgdGhlIGV4cGly" + - "eSBpcyBpbiB0aGUgcGFzdCBvciBtaXNzaW5nLCByZWdlbmVyYXRlOgoKICAgYGBgc2gKICAgbnZj" + - "Zi1jbGkgcmVmcmVzaAogICBudmNmLWNsaSBhcGkta2V5IGdlbmVyYXRlIC0tZm9yIHRhc2sgLS1k" + - "ZXNjcmlwdGlvbj0idGFzay1rZXkiIC0tZXhwaXJlcy1pbj0yNGggLS12YWxpZGF0ZQogICBgYGAK" + - "CjQuIEluamVjdCB0aGUgc3RvcmVkIGtleSBpbnRvIHRoZSBzdWJwcm9jZXNzIGVudiB3aXRob3V0" + - "IGxvZ2dpbmcgdGhlIHZhbHVlLiBVc2UgYSBzaGVsbCBzdWJzaGVsbCBvciBlbnYgcHJlZml4IOKA" + - "lCBuZXZlciBwcmludCB0aGUga2V5IGludG8gY2hhdC4KCkVycm9yIGNsYXNzaWZpY2F0aW9uOgoK" + - "LSAibWlzc2luZyBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyIgb3IgZXhpdCAyOiBrZXkgbm90" + - "IGluamVjdGVkOyByZXBlYXQgcHJlLWZsaWdodC4KLSBIVFRQIDQwMzoga2V5IGV4cGlyZWQgb3Ig" + - "d3JvbmcgYXVkaWVuY2U7IHJlZ2VuZXJhdGUuCi0gRW1wdHkgdGFzayBsaXN0OiB2YWxpZDsgbm8g" + - "dGFza3MgZXhpc3QgeWV0LgoKIyMgMi4gVGFzayBDUkVBVEU6IGNvbnRhaW5lcgoKRGVmaW5lIHRo" + - "ZSB0YXNrIGluIGEgSlNPTiBmaWxlLiBNaW5pbXVtIHZpYWJsZSBjb250YWluZXIgdGFzazoKCmBg" + - "YGpzb24KewogICJuYW1lIjogInNtb2tlLWNvbnRhaW5lci10YXNrIiwKICAiZ3B1U3BlY2lmaWNh" + - "dGlvbiI6IHsKICAgICJncHUiOiAiSDEwMCIsCiAgICAiaW5zdGFuY2VUeXBlIjogIk5DUC5HUFUu" + - "SDEwMF8xeCIsCiAgICAiYmFja2VuZCI6ICJuY3AtbG9jYWwiCiAgfSwKICAiY29udGFpbmVySW1h" + - "Z2UiOiAibnZjci5pby9udmlkaWEvbmVtbzpsYXRlc3QiLAogICJjb250YWluZXJBcmdzIjogInB5" + - "dGhvbiAtYyBcInByaW50KCdoZWxsbyBmcm9tIHRhc2snKVwiIiwKICAicmVzdWx0SGFuZGxpbmdT" + - "dHJhdGVneSI6ICJOT05FIgp9CmBgYAoKYGBgc2gKbnZjZi1jbGkgdGFzayBjcmVhdGUgLS1pbnB1" + - "dC1maWxlPXRhc2stY29udGFpbmVyLmpzb24KIyAtPiBUYXNrIElEOiA8dGFza19pZD4KYGBgCgpD" + - "YXB0dXJlIHRoZSB0YXNrIElEIGZyb20gdGhlIG91dHB1dC4gU3RhdGUgcGVyc2lzdGVuY2UgY2Fu" + - "IGZhaWwgc2lsZW50bHksIHNvIHBhc3MKYDx0YXNrSWQ+YCBleHBsaWNpdGx5IG9uIHN1YnNlcXVl" + - "bnQgY29tbWFuZHMgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBzYXZlZCBzdGF0ZS4KCkVxdWl2YWxl" + - "bnQgQ0xJIGZsYWdzIGZvcm0gZm9yIHF1aWNrIGFkLWhvYyBydW5zOgoKYGBgc2gKbnZjZi1jbGkg" + - "dGFzayBjcmVhdGUgXAogIC0tbmFtZT1zbW9rZS1jb250YWluZXItdGFzayBcCiAgLS1ncHU9SDEw" + - "MCBcCiAgLS1pbnN0YW5jZS10eXBlPU5DUC5HUFUuSDEwMF8xeCBcCiAgLS1iYWNrZW5kPW5jcC1s" + - "b2NhbCBcCiAgLS1pbWFnZT1udmNyLmlvL252aWRpYS9uZW1vOmxhdGVzdCBcCiAgLS1jb250YWlu" + - "ZXItYXJncz0icHl0aG9uIC1jICdwcmludChoZWxsbyBmcm9tIHRhc2spJyIgXAogIC0tcmVzdWx0" + - "LXN0cmF0ZWd5PU5PTkUKYGBgCgpUbyB0YXJnZXQgYSBzcGVjaWZpYyBjb21wdXRlIGNsdXN0ZXI6" + - "CgpgYGBzaApudmNmLWNsaSB0YXNrIGNyZWF0ZSAtLWlucHV0LWZpbGU9dGFzay1jb250YWluZXIu" + - "anNvbiAtLWNsdXN0ZXJzPW15LWNsdXN0ZXIKYGBgCgpUbyBpbmplY3QgZW52aXJvbm1lbnQgdmFy" + - "aWFibGVzIG9yIHNlY3JldHMsIGVpdGhlciBwYXNzIGZsYWdzOgoKYGBgc2gKbnZjZi1jbGkgdGFz" + - "ayBjcmVhdGUgLS1pbnB1dC1maWxlPXRhc2stY29udGFpbmVyLmpzb24gXAogIC0tY29udGFpbmVy" + - "LWVudiBNWV9FTlY9dmFsdWUgXAogIC0tc2VjcmV0cyBNWV9TRUNSRVQ9czNjcjN0CmBgYAoKb3Ig" + - "c2V0IHRoZW0gaW4gdGhlIEpTT04gZmlsZToKCmBgYGpzb24KewogICJjb250YWluZXJFbnZpcm9u" + - "bWVudCI6IFsKICAgIHsia2V5IjogIk1ZX0VOViIsICJ2YWx1ZSI6ICJ2YWx1ZSJ9CiAgXSwKICAi" + - "c2VjcmV0cyI6IFsKICAgIHsibmFtZSI6ICJNWV9TRUNSRVQiLCAidmFsdWUiOiAiczNjcjN0In0K" + - "ICBdCn0KYGBgCgpTZWNyZXRzIGFyZSBlbmNyeXB0ZWQgYXQgcmVzdCBhbmQgbm90IHJldHVybmVk" + - "IGluIGxpc3Qgb3IgZ2V0IHJlc3BvbnNlcyBieSBkZWZhdWx0OyBkbyBub3QgbG9nIHRoZW0uCgoj" + - "IyAzLiBUYXNrIENSRUFURTogSGVsbQoKRm9yIEhlbG0tdHlwZSB0YXNrcywgcmVwbGFjZSBgY29u" + - "dGFpbmVySW1hZ2VgIHdpdGggYGhlbG1DaGFydGA6CgpgYGBqc29uCnsKICAibmFtZSI6ICJzbW9r" + - "ZS1oZWxtLXRhc2siLAogICJncHVTcGVjaWZpY2F0aW9uIjogewogICAgImdwdSI6ICJIMTAwIiwK" + - "ICAgICJpbnN0YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAwXzF4IiwKICAgICJiYWNrZW5kIjogIm5j" + - "cC1sb2NhbCIKICB9LAogICJoZWxtQ2hhcnQiOiAiaHR0cHM6Ly9oZWxtLm5nYy5udmlkaWEuY29t" + - "Lzxvcmc+L2NoYXJ0cy9leGFtcGxlLXRhc2stMC4xLjAudGd6IiwKICAicmVzdWx0SGFuZGxpbmdT" + - "dHJhdGVneSI6ICJOT05FIgp9CmBgYAoKYGBgc2gKbnZjZi1jbGkgdGFzayBjcmVhdGUgLS1pbnB1" + - "dC1maWxlPXRhc2staGVsbS5qc29uCiMgLT4gVGFzayBJRDogPHRhc2tfaWQ+CmBgYAoKYGhlbG1D" + - "aGFydGAgYW5kIGBjb250YWluZXJJbWFnZWAgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KCiMjIDNi" + - "LiBVcGRhdGUgc2VjcmV0cyBvbiBhIHJ1bm5pbmcgdGFzawoKYGBgc2gKbnZjZi1jbGkgdGFzayB1" + - "cGRhdGUtc2VjcmV0cyA8dGFza19pZD4gLS1zZWNyZXRzIE5BTUU9dmFsdWUKYGBgCgpgdXBkYXRl" + - "LXNlY3JldHNgIG1lcmdlcyBzZWNyZXRzIGJ5IG5hbWU6IHN1cHBsaWVkIHNlY3JldHMgYXJlIGFk" + - "ZGVkIG9yIHVwZGF0ZWQsIGFuZCBleGlzdGluZyBzZWNyZXRzIG5vdCBpbmNsdWRlZCBpbiB0aGUg" + - "cmVxdWVzdCBhcmUgcHJlc2VydmVkLiBEbyBub3QgZWNobyBzZWNyZXQgdmFsdWVzIGludG8gY2hh" + - "dC4KCiMjIDQuIE1vbml0b3IKClBvbGwgdGFzayBzdGF0ZToKCmBgYHNoCm52Y2YtY2xpIHRhc2sg" + - "Z2V0IDx0YXNrX2lkPgojIC0+IGlkOiA8dGFza19pZD4KIyAtPiBzdGF0dXM6IFJVTk5JTkcKYGBg" + - "CgpPciB1c2UgdGhlIHRhc2sgSUQgc2F2ZWQgdG8gc3RhdGUgZnJvbSB0aGUgbW9zdCByZWNlbnQg" + - "YHRhc2sgY3JlYXRlYDoKCmBgYHNoCm52Y2YtY2xpIHRhc2sgZ2V0CmBgYAoKU3RhdHVzIHZhbHVl" + - "czogYFFVRVVFRGAsIGBMQVVOQ0hFRGAsIGBSVU5OSU5HYCwgYENPTVBMRVRFRGAsIGBFUlJPUkVE" + - "YCwgYENBTkNFTEVEYCwgYEVYQ0VFREVEX01BWF9SVU5USU1FX0RVUkFUSU9OYCwgYEVYQ0VFREVE" + - "X01BWF9RVUVVRURfRFVSQVRJT05gLgoKSW5zcGVjdCBsaWZlY3ljbGUgZXZlbnRzIGZvciBwcm9n" + - "cmVzcyBkZXRhaWxzIG9yIGZhaWx1cmUgY29udGV4dDoKCmBgYHNoCm52Y2YtY2xpIHRhc2sgZXZl" + - "bnRzIDx0YXNrX2lkPgpgYGAKCklmIHRoZSB0YXNrIGlzIHN0dWNrIGluIGBRVUVVRURgLCBjaGVj" + - "ayB0aGF0IGEgY29tcHV0ZSBjbHVzdGVyIHdpdGggYSBtYXRjaGluZyBHUFUgU0tVCmlzIHJlZ2lz" + - "dGVyZWQgYW5kIGhlYWx0aHkgKGBudmNmLWNsaSBzZWxmLWhvc3RlZCBzdGF0dXNgKS4KCklmIHRo" + - "ZSB0YXNrIG1vdmVzIHRvIGBFUlJPUkVEYCwgdGhlIGV2ZW50cyBvdXRwdXQgY29udGFpbnMgdGhl" + - "IGZhaWx1cmUgcmVhc29uLiBGb3IKY29udGFpbmVyLWxldmVsIGRldGFpbCwgaW5zcGVjdCB0aGUg" + - "dGFzayB3b3JrbG9hZCBwb2RzIG9uIHRoZSBjb21wdXRlLXBsYW5lIGNsdXN0ZXIgd2l0aApga3Vi" + - "ZWN0bGAgYWdhaW5zdCB0aGUgYXBwcm9wcmlhdGUgbmFtZXNwYWNlIGFuZCBjb250ZXh0LgoKIyMg" + - "NS4gUmV0cmlldmUgcmVzdWx0cwoKRm9yIHRhc2tzIHdpdGggYHJlc3VsdEhhbmRsaW5nU3RyYXRl" + - "Z3k6IE5PTkVgLCByZXN1bHRzIGFyZSBlbXB0eSBieSBkZXNpZ246CgpgYGBzaApudmNmLWNsaSB0" + - "YXNrIHJlc3VsdHMgPHRhc2tfaWQ+CiMgLT4geyJyZXN1bHRzIjogW119CmBgYAoKRm9yIHRhc2tz" + - "IHdpdGggYHJlc3VsdEhhbmRsaW5nU3RyYXRlZ3k6IFVQTE9BRGAsIHJlc3VsdHMgdXBsb2FkIHRv" + - "IHRoZSBsb2NhdGlvbiBuYW1lZCBpbgpgcmVzdWx0c0xvY2F0aW9uYC4gVGhlIHRhc2sncyBjcmVk" + - "ZW50aWFscyBtdXN0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoYXQgbG9jYXRpb24uIEFmdGVyCnRo" + - "ZSB0YXNrIHJlYWNoZXMgYENPTVBMRVRFRGA6CgpgYGBzaApudmNmLWNsaSB0YXNrIHJlc3VsdHMg" + - "PHRhc2tfaWQ+CmBgYAoKTm90ZTogcmVzdWx0IHVwbG9hZCBpcyBub3QgeWV0IHN1cHBvcnRlZCBp" + - "biB0aGlzIHJlbGVhc2UuCgojIyA2LiBDbGVhbnVwCgpDYW5jZWwgYSBydW5uaW5nIHRhc2s6Cgpg" + - "YGBzaApudmNmLWNsaSB0YXNrIGNhbmNlbCA8dGFza19pZD4KYGBgCgpEZWxldGUgdGhlIHRhc2sg" + - "cmVjb3JkIGFmdGVyIGl0IHJlYWNoZXMgYSB0ZXJtaW5hbCBzdGF0ZToKCmBgYHNoCm52Y2YtY2xp" + - "IHRhc2sgZGVsZXRlIDx0YXNrX2lkPgpgYGAKClN0b3AgYW5kIGNvbmZpcm0gd2l0aCB0aGUgdXNl" + - "ciBiZWZvcmUgcnVubmluZyB0YXNrIGRlbGV0ZS4gU3RhdGUgdGhlIHRhc2sgSUQgYW5kIGl0cyBj" + - "dXJyZW50IHN0YXR1cy4gRG8gbm90IHByb2NlZWQgZXZlbiB3aGVuIHRoZSB1c2VyJ3MgcHJvbXB0" + - "IGFscmVhZHkgcmVxdWVzdGVkIGRlbGV0aW9uIOKAlCBhbHdheXMgZ2V0IGFuIGV4cGxpY2l0IGxh" + - "c3QtbG9vayBjb25maXJtYXRpb24uIERlbGV0aW9uIGlzIHBlcm1hbmVudCBhbmQgY2Fubm90IGJl" + - "IHVuZG9uZS4KClRvIGxpc3QgYWxsIHRhc2tzIGZvciB0aGUgY3VycmVudCBvd25lciAodXNlZnVs" + - "IGJlZm9yZSBidWxrIGNsZWFudXApOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBsaXN0Cm52Y2YtY2xp" + - "IHRhc2sgbGlzdCAtLXN0YXR1cz1DT01QTEVURUQKYGBgCgojIyBOb3RlcwoKLSBHUFUgZmFtaWx5" + - "IGFuZCBpbnN0YW5jZSB0eXBlIG11c3QgbWF0Y2ggYSByZWdpc3RlcmVkIGNvbXB1dGUgY2x1c3Rl" + - "ciBTS1UuIE1pc21hdGNoCiAgY2F1c2VzIHRoZSB0YXNrIHRvIHJlbWFpbiBgUVVFVUVEYCBpbmRl" + - "ZmluaXRlbHkuIFVzZSBgbnZjZi1jbGkgY2x1c3RlciBsaXN0YCB0byBjaGVjawogIHJlZ2lzdGVy" + - "ZWQgU0tVcy4KLSBGb3IgY29udGFpbmVyIGltYWdlcyBvbiBwcml2YXRlIHJlZ2lzdHJpZXMsIGVu" + - "c3VyZSB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVyJ3MKICBpbWFnZS1jcmVkZW50aWFsLWhlbHBl" + - "ciBpcyBjb25maWd1cmVkIGZvciB0aGUgcmVnaXN0cnkgaG9zdC4KUEsHCNTejTSfGQAAnxkAAFBL" + - "AwQUAAgAAAAAACEAAAAAAAAAAAAAAAAANwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3By" + - "b21wdHMvZGVwbG95LWFuZC1pbnZva2UubWRVVAUAAQCmzhIjIERlcGxveSBhbmQgaW52b2tlIGEg" + - "Y29udGFpbmVyIGZ1bmN0aW9uCgpTdGFuZGFyZCBmb3VyLXN0ZXAgZmxvdzogZnVuY3Rpb24gQ1JF" + - "QVRFIOKGkiBERVBMT1kg4oaSIEFQSSBrZXkgKGZvciBpbnZva2Ugc2NvcGUpIOKGkiBJTlZPS0Uu" + - "CgojIyAxLiBGdW5jdGlvbiBDUkVBVEUKCkRlZmluZSB0aGUgZnVuY3Rpb24gaW4gYSBKU09OIGZp" + - "bGUuIE1pbmltdW06CgpCZWZvcmUgY3JlYXRpbmcgdGhlIGZ1bmN0aW9uLCBjb25maXJtIHRoZSBl" + - "eGFjdCBmdW5jdGlvbiBuYW1lIGFuZCBjb250YWluZXIgaW1hZ2Ugd2l0aCB0aGUgdXNlci4gSWYg" + - "ZWl0aGVyIHZhbHVlIGlzIG1pc3NpbmcsIHN0b3AgYW5kIGFzay4gRG8gbm90IGludmVudCBvciBz" + - "dWJtaXQgZXhhbXBsZSB2YWx1ZXMgZm9yIHRoZXNlIGZpZWxkcy4KCmBgYGpzb24KewogICJuYW1l" + - "IjogIjxjb25maXJtZWQtZnVuY3Rpb24tbmFtZT4iLAogICJjb250YWluZXJJbWFnZSI6ICI8Y29u" + - "ZmlybWVkLWNvbnRhaW5lci1pbWFnZT4iLAogICJpbmZlcmVuY2VVcmwiOiAiL2VjaG8iLAogICJp" + - "bmZlcmVuY2VQb3J0IjogODAwMCwKICAiZGVzY3JpcHRpb24iOiAic21va2UgdGVzdCBlY2hvIGZ1" + - "bmN0aW9uIiwKICAiZnVuY3Rpb25UeXBlIjogIkRFRkFVTFQiLAogICJhcGlCb2R5Rm9ybWF0Ijog" + - "IkNVU1RPTSIsCiAgImhlYWx0aCI6IHsKICAgICJwcm90b2NvbCI6ICJIVFRQIiwKICAgICJ1cmki" + - "OiAiL2hlYWx0aCIsCiAgICAicG9ydCI6IDgwMDAsCiAgICAidGltZW91dCI6ICJQVDMwUyIsCiAg" + - "ICAiZXhwZWN0ZWRTdGF0dXNDb2RlIjogMjAwCiAgfQp9CmBgYAoKYGBgc2gKbnZjZi1jbGkgZnVu" + - "Y3Rpb24gY3JlYXRlIC0taW5wdXQtZmlsZT1jcmVhdGUtZm4uanNvbgojIOKGkiBGdW5jdGlvbiBJ" + - "RDogPGZuX2lkPgojIOKGkiBWZXJzaW9uIElEOiA8dmVyX2lkPgpgYGAKClNhdmUgdGhlIElEcyDi" + - "gJQgdGhleSdyZSBuZWVkZWQgZm9yIGRlcGxveSArIGludm9rZS4KCiMjIyBMTE0gZnVuY3Rpb24g" + - "dmFyaWFudAoKRm9yIGFuIE9wZW5BSS1jb21wYXRpYmxlIExMTSBmdW5jdGlvbiwgc2V0IGBmdW5j" + - "dGlvblR5cGU6ICJMTE0iYCBhbmQgcHV0IHJvdXRlIG1ldGFkYXRhIHVuZGVyIGBtb2RlbHNbXS5s" + - "bG1Db25maWdgOgoKQmVmb3JlIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiwgY29uZmlybSB0aGUgZXhh" + - "Y3QgZnVuY3Rpb24gbmFtZSwgY29udGFpbmVyIGltYWdlLCBhbmQgbW9kZWwgbmFtZSB3aXRoIHRo" + - "ZSB1c2VyLiBJZiBhbnkgdmFsdWUgaXMgbWlzc2luZywgc3RvcCBhbmQgYXNrLiBEbyBub3QgaW52" + + "ZCBjaGVjayAtLXByZSAtLWpzb24gMj4mMSA+L2Rldi9udWxsIHwgZ3JlcCAnXnsnIHwganEgLWUg" + + "Jy5ldmVudCAhPSAicGhhc2VfZmFpbGVkIicgfHwgZXhpdCAyCiAgICAtIG52Y2YtY2xpIHNlbGYt" + + "aG9zdGVkIHVwIC0tY2x1c3Rlci1uYW1lPSRDTFVTVEVSX05BTUUgLS10b2tlbj0kTlZDRl9BRE1J" + + "Tl9KV1QgLS1ub24taW50ZXJhY3RpdmUgLS1qc29uCiAgICAtIG52Y2YtY2xpIHNlbGYtaG9zdGVk" + + "IHN0YXR1cyAtLWpzb24gMj4mMSA+L2Rldi9udWxsIHwgZ3JlcCAnXnsnIHwganEgLWUgJy52ZXJk" + + "aWN0ID09ICJoZWFsdGh5IicKYGBgCgpOb3RlczoKCi0gYC0tbm9uLWludGVyYWN0aXZlIC0tdG9r" + + "ZW49JEpXVGAgaXMgcmVxdWlyZWQgaW4gQ0k7IG5ldmVyIHVzZSBpbnRlcmFjdGl2ZSBgaW5pdGAu" + + "Ci0gQWx3YXlzIGAtLWpzb25gIGZvciBtYWNoaW5lLXBhcnNpbmcuCi0gYC0tanNvbmAgd3JpdGVz" + + "IEpTT05MIHRvIHN0ZGVyciwgbm90IHN0ZG91dCwgc28gcmVkaXJlY3Qgd2l0aCBgMj4mMSA+L2Rl" + + "di9udWxsYCBiZWZvcmUgYSBwYXJzZXIuCi0gc3RkZXJyIGFsc28gY2FycmllcyBwbGFpbi10ZXh0" + + "IG5vdGljZXMsIHNvIGZpbHRlciB0byBKU09OIGxpbmVzLiBEbyBub3QgYWRkIGAtLXNob3ctbG9n" + + "c2AgaGVyZTogaXQgYXBwZW5kcyBhIG5vbi1KU09OIHRyYW5zY3JpcHQgdG8gdGhlIHNhbWUgc3Ry" + + "ZWFtLgotIEZpbmFsIHN0YXR1cyBjaGVjayBnYXRlcyBkb3duc3RyZWFtIHN0YWdlcyBvbiBgdmVy" + + "ZGljdCA9PSAiaGVhbHRoeSJgLgoKIyMgR2l0T3BzIChBcmdvIC8gRmx1eCkgcGF0dGVybgoKQ0kg" + + "ZG9lc24ndCBga3ViZWN0bCBhcHBseWAg4oCUIGluc3RlYWQsIHJlbmRlciBtYW5pZmVzdHMsIGNv" + + "bW1pdCB0aGVtLCBsZXQgdGhlIGNvbnRyb2xsZXIgYXBwbHkuCgpgYGB5YW1sCnJlbmRlcjoKICBz" + + "Y3JpcHQ6CiAgICAtIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGluc3RhbGwgLS1jb250cm9sLXBsYW5l" + + "IC0tbm8tYXBwbHkgPiByZW5kZXJlZC9jb250cm9sLXBsYW5lLnlhbWwKICAgIC0gbnZjZi1jbGkg" + + "c2VsZi1ob3N0ZWQgaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9JE5BTUUg" + + "LS1uby1hcHBseSA+IHJlbmRlcmVkL2NvbXB1dGUtcGxhbmUueWFtbAogICAgLSBnaXQgYWRkIHJl" + + "bmRlcmVkLyAmJiBnaXQgY29tbWl0IC1tICJkZXBsb3kgTlZDRiAkVEFHIiAmJiBnaXQgcHVzaApg" + + "YGAKClRoZW4gQXJnb0NEIG9yIEZsdXggd2F0Y2hlcyBgcmVuZGVyZWQvYCBhbmQgYXBwbGllcy4g" + + "VGhlIENMSSBuZXZlciB0b3VjaGVzIHRoZSBjbHVzdGVyIGRpcmVjdGx5LgoKRm9yIHRoZSByZWdp" + + "c3RlciBzdGVwICh3aGljaCBtdXRhdGVzIElDTVMsIG5vdCBqdXN0IEs4cyk6CgpgYGB5YW1sCnJl" + + "Z2lzdGVyOgogIHNjcmlwdDoKICAgIC0gbnZjZi1jbGkgY2x1c3RlciByZWdpc3RlciAtLW5hbWU9" + + "JE5BTUUgLS1uY2EtaWQ9JE5DQSAtLXJlZ2lvbj0kUkVHSU9OIC0taWdub3JlLWV4aXN0aW5nCmBg" + + "YAoKYC0taWdub3JlLWV4aXN0aW5nYCBpcyB0aGUgR2l0T3BzLWZyaWVuZGx5IGlkZW1wb3RlbnQg" + + "Y29udHJhY3QuCgojIyBNdWx0aS1jbHVzdGVyIHBpcGVsaW5lCgpXaGVuIHRoZSBwaXBlbGluZSBt" + + "YW5hZ2VzIG1hbnkgY29tcHV0ZSBjbHVzdGVycyBhZ2FpbnN0IG9uZSBjb250cm9sIHBsYW5lOgoK" + + "YGBgeWFtbApkZXBsb3lfY29tcHV0ZV9wbGFuZXM6CiAgcGFyYWxsZWw6CiAgICBtYXRyaXg6CiAg" + + "ICAgIC0gQ0xVU1RFUjogbmNwLWVhc3QtMQogICAgICAgIENPTlRFWFQ6IGFkbWluQGdwdS1lYXN0" + + "LTEKICAgICAgLSBDTFVTVEVSOiBuY3Atd2VzdC0xCiAgICAgICAgQ09OVEVYVDogYWRtaW5AZ3B1" + + "LXdlc3QtMQogICAgICAtIENMVVNURVI6IG5jcC1ldS0xCiAgICAgICAgQ09OVEVYVDogYWRtaW5A" + + "Z3B1LWV1LTEKICBzY3JpcHQ6CiAgICAtIG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwCiAgICAgICAg" + + "LS1jbHVzdGVyLW5hbWU9JENMVVNURVIKICAgICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD0k" + + "Q09OVEVYVAogICAgICAgIC0taWNtcy11cmw9JElDTVNfUFVCTElDX1VSTAogICAgICAgIC0tdG9r" + + "ZW49JE5WQ0ZfQURNSU5fSldUCiAgICAgICAgLS1ub24taW50ZXJhY3RpdmUKICAgICAgICAtLWpz" + + "b24KYGBgCgpFYWNoIHBhcmFsbGVsIGpvYiByZWdpc3RlcnMgKyBpbnN0YWxscyBvbmUgY29tcHV0" + + "ZSBwbGFuZSBhZ2FpbnN0IHRoZSBzaGFyZWQgY29udHJvbCBwbGFuZS4gRmFpbHVyZXMgYXJlIGlz" + + "b2xhdGVkLgoKIyMgUGxhbi1vbmx5IHByZXZpZXcgaW4gUFJzCgpgYGB5YW1sCnByZXZpZXc6CiAg" + + "cnVsZXM6CiAgICAtIGlmOiAkQ0lfUElQRUxJTkVfU09VUkNFID09ICJtZXJnZV9yZXF1ZXN0X2V2" + + "ZW50IgogIHNjcmlwdDoKICAgIC0gfAogICAgICBudmNmLWNsaSBzZWxmLWhvc3RlZCB1cCBcCiAg" + + "ICAgICAgLS1jbHVzdGVyLW5hbWU9JENMVVNURVJfTkFNRSBcCiAgICAgICAgLS1wbGFuLW9ubHkg" + + "XAogICAgICAgIC0tanNvbiB8IHRlZSBwbGFuLmpzb25sCiAgICAtIGpxIC1zICcuWzBdJyBwbGFu" + + "Lmpzb25sID4gcGxhbi5qc29uCiAgICAtICdnaXRsYWItbXItY29tbWVudCAiIyMgTlZDRiBkZXBs" + + "b3kgcGxhblxuXG5cYFxgXGBqc29uXG4kKGNhdCBwbGFuLmpzb24pXG5cYFxgXGAiJwpgYGAKCmAt" + + "LXBsYW4tb25seWAgZXhpdHMgMCB3aXRob3V0IGNoYW5naW5nIGNsdXN0ZXIgc3RhdGU7IHRoZSBK" + + "U09OTCBvdXRwdXQgbGlzdHMgZWFjaCBwaGFzZSArIEVUQS4gUmVuZGVycyBuaWNlbHkgYXMgYW4g" + + "TVIgY29tbWVudC4KUEsHCG3jewUjDAAAIwwAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAANAAJ" + + "AGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL2V4YW1wbGVzL211bHRpLWNsdXN0ZXIubWRVVAUA" + + "AQCmzhIjIE11bHRpLWNsdXN0ZXIgcGF0dGVybnMKCkV4YW1wbGVzIG9mIHNwbGl0LWNsdXN0ZXIg" + + "KyBtYW55LWNvbXB1dGUtcGxhbmUgb3BlcmF0aW9uLgoKIyMgT25lIGNvbnRyb2wgcGxhbmUgKyBO" + + "IGNvbXB1dGUgcGxhbmVzCgpUaGUgY2Fub25pY2FsIG11bHRpLWNsdXN0ZXIgdG9wb2xvZ3kuIEVh" + + "Y2ggY29tcHV0ZSBwbGFuZSBpcyByZWdpc3RlcmVkIHNlcGFyYXRlbHk6CgpgYGBzaAojIDEuIEJy" + + "aW5nIHVwIHRoZSBjb250cm9sIHBsYW5lIChvbmUtdGltZSwgb24gdGhlIGNvbnRyb2wtcGxhbmUg" + + "Y2x1c3Rlcik6CktVQkVDT05GSUc9Y3AueWFtbCBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxs" + + "IC0tY29udHJvbC1wbGFuZSB8IGt1YmVjdGwgYXBwbHkgLWYgLQpudmNmLWNsaSBzZWxmLWhvc3Rl" + + "ZCBjaGVjayAtLWNvbnRyb2wtcGxhbmUgLS13YWl0IDVtCgojIDIuIFJlZ2lzdGVyICsgaW5zdGFs" + + "bCBlYWNoIGNvbXB1dGUgcGxhbmU6CmZvciBDVFggaW4gYWRtaW5AZ3B1LWVhc3QtMSBhZG1pbkBn" + + "cHUtd2VzdC0xIGFkbWluQGdwdS1ldS0xOyBkbwogIE5BTUU9JChlY2hvICIkQ1RYIiB8IGN1dCAt" + + "ZEAgLWYyKQogIG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwIFwKICAgIC0tY2x1c3Rlci1uYW1lPSRO" + + "QU1FIFwKICAgIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0PSRDVFggXAogICAgLS1pY21zLXVybD1o" + + "dHRwczovL2ljbXMubnZjZi5leGFtcGxlLmNvbSBcCiAgICAtLXRva2VuPSROVkNGX0FETUlOX0pX" + + "VCBcCiAgICAtLW5vbi1pbnRlcmFjdGl2ZSBcCiAgICAtLWpzb24KZG9uZQoKIyAzLiBWZXJpZnkg" + + "YWxsIGNvbXB1dGUgcGxhbmVzIHJlZ2lzdGVyZWQ6Cm52Y2YtY2xpIGNsdXN0ZXIgbGlzdC1yZWdp" + + "c3RlcmVkIC0tbmNhLWlkPSROQ0FfSUQgLS1pY21zLXVybD0kSUNNUyAtLWpzb24gXAogIHwganEg" + + "Jy5jbHVzdGVyc1tdIHwge25hbWU6IC5jbHVzdGVyTmFtZSwgc3RhdHVzLCBudmNhVmVyc2lvbn0n" + + "CmBgYAoKIyMgQ29tcHV0ZS1wbGFuZS1vbmx5IG9wZXJhdG9yIHNjZW5hcmlvCgpUaGUgb3BlcmF0" + + "b3IgaGFzIGt1YmVjdGwgYWNjZXNzIHRvIE9ORSBjb21wdXRlIHBsYW5lIG9ubHkg4oCUIHRoZSBj" + + "b250cm9sIHBsYW5lIGlzIG9wZXJhdGVkIGJ5IHNvbWVvbmUgZWxzZSAoZS5nLiBZb3R0YSBydW5z" + + "IHRoZSBjb250cm9sIHBsYW5lIGZvciBhIGN1c3RvbWVyKS4KCmBgYHNoCiMgTWludCBhIHRva2Vu" + + "IHZpYSB0aGUgcHVibGljIGFwaSBnYXRld2F5ICh0aGUgY29udHJvbCBwbGFuZSdzIEFQSSBLZXlz" + + "CiMgc2VydmljZSBpcyByZWFjaGFibGUgdmlhIGFwaS5udmNmLmV4YW1wbGUuY29tIOKAlCBubyBr" + + "dWJlY3RsIGFjY2VzcyBuZWVkZWQpOgpudmNmLWNsaSBpbml0IC0tYXBpLXVybD1odHRwczovL2Fw" + + "aS5udmNmLmV4YW1wbGUuY29tCgojIFJ1biBwcmUtZmxpZ2h0IHNjb3BlZCB0byB0aGUgY29tcHV0" + + "ZSBwbGFuZSBvbmx5OgpudmNmLWNsaSBzZWxmLWhvc3RlZCBjaGVjayAtLXByZSBcCiAgLS1jb21w" + + "dXRlLXBsYW5lLWNvbnRleHQ9YWRtaW5AZ3B1MSBcCiAgLS1pY21zLXVybD1odHRwczovL2ljbXMu" + + "bnZjZi5leGFtcGxlLmNvbSBcCiAgLS1qc29uCgojIEJyaW5nIHVwIGp1c3QgdGhlIGNvbXB1dGUg" + + "cGxhbmU6Cm52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwIFwKICAtLWNsdXN0ZXItbmFtZT1teS1jb21w" + + "dXRlLTEgXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0PWFkbWluQGdwdTEgXAogIC0taWNtcy11" + + "cmw9aHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBsZS5jb20gXAogIC0tdG9rZW49JEFETUlOX0pXVCBc" + + "CiAgLS1ub24taW50ZXJhY3RpdmUKCiMgU3RhdHVzIChjb21wdXRlLW9ubHkg4oCUIG9wZXJhdG9y" + + "IGNhbid0IHNlZSBjb250cm9sLXBsYW5lIGNvbXBvbmVudCBoZWFsdGgpOgpudmNmLWNsaSBzZWxm" + + "LWhvc3RlZCBzdGF0dXMgXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0PWFkbWluQGdwdTEgXAog" + + "IC0taWNtcy11cmw9aHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBsZS5jb20KYGBgCgojIyBGdW5jdGlv" + + "bnMgdGFyZ2V0aW5nIHNwZWNpZmljIGNvbXB1dGUgcGxhbmVzCgpXaGVuIHlvdSBoYXZlIG11bHRp" + + "cGxlIGNvbXB1dGUgcGxhbmVzIGFuZCB3YW50IGEgZnVuY3Rpb24gdG8gZGVwbG95IHRvIG9uZToK" + + "CmBgYGpzb24KewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAiPHZl" + + "cl9pZD4iLAogICJkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnMiOiBbewogICAgImdwdSI6ICJIMTAw" + + "IiwKICAgICJpbnN0YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAwXzF4IiwKICAgICJtaW5JbnN0YW5j" + + "ZXMiOiAxLAogICAgIm1heEluc3RhbmNlcyI6IDEsCiAgICAiY2x1c3RlcnMiOiBbImdwdS1lYXN0" + + "LTEiXQogIH1dCn0KYGBgCgpUaGUgYGNsdXN0ZXJzYCBhcnJheSAodXNpbmcgY2x1c3RlciBuYW1l" + + "cywgbm90IElEcykgbGltaXRzIHNjaGVkdWxpbmcgdG8gdGhvc2UgY29tcHV0ZSBwbGFuZXMuIE9t" + + "aXQgdG8gbGV0IElDTVMgY2hvb3NlIGFueSBjb21wdXRlIHBsYW5lIHdpdGggYSBtYXRjaGluZyBT" + + "S1UuCgojIyBTdGF0dXMgZmFuLW91dCBhY3Jvc3MgY29tcHV0ZSBwbGFuZXMKCmBgYHNoCiMgTGlz" + + "dCBhbGwgcmVnaXN0ZXJlZCBjb21wdXRlIHBsYW5lczoKbnZjZi1jbGkgY2x1c3RlciBsaXN0LXJl" + + "Z2lzdGVyZWQgLS1uY2EtaWQ9JE5DQV9JRCAtLWljbXMtdXJsPSRJQ01TIC0tanNvbiBcCiAgfCBq" + + "cSAtciAnLmNsdXN0ZXJzW10uY2x1c3Rlck5hbWUnID4gY2x1c3RlcnMudHh0CgojIFN0YXR1cyBz" + + "bmFwc2hvdCBwZXIgY29tcHV0ZSBwbGFuZSAoYXNzdW1pbmcgZWFjaCBjb250ZXh0IG5hbWUgbWF0" + + "Y2hlcyk6CndoaWxlIHJlYWQgTkFNRTsgZG8KICBlY2hvICI9PT0gJE5BTUUgPT09IgogIG52Y2Yt" + + "Y2xpIHNlbGYtaG9zdGVkIHN0YXR1cyBcCiAgICAtLWNsdXN0ZXItbmFtZT0kTkFNRSBcCiAgICAt" + + "LWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkAkTkFNRSBcCiAgICAtLWpzb24gfCBqcSAtYyAn" + + "e2NsdXN0ZXI6LmNsdXN0ZXIsIHZlcmRpY3Q6LnZlcmRpY3QsIHJlY29uY2lsZToucmVjb25jaWxl" + + "QWdlU2VjfScKZG9uZSA8IGNsdXN0ZXJzLnR4dApgYGAKCkEgZnV0dXJlIE0rMTEgbWlsZXN0b25l" + + "IHdpbGwgYWRkIG5hdGl2ZSBmYW4tb3V0IChgc3RhdHVzIC0tYWxsLWNvbXB1dGUtcGxhbmVzYCkg" + + "c28gdGhpcyBkb2Vzbid0IG5lZWQgYSBzaGVsbCBsb29wLgpQSwcIoRTjgV0MAABdDAAAUEsDBBQA" + + "CAAAAAAAIQAAAAAAAAAAAAAAAAA3AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0" + + "cy9hZGQtY29tcHV0ZS1wbGFuZS5tZFVUBQABAKbOEiMgQWRkIGEgY29tcHV0ZSBwbGFuZSB0byBh" + + "biBleGlzdGluZyBjb250cm9sIHBsYW5lCgpVc2VyIGhhcyBhIHdvcmtpbmcgTlZDRiBjb250cm9s" + + "IHBsYW5lIChydW5uaW5nIHNvbWV3aGVyZSkgYW5kIHdhbnRzIHRvIHJlZ2lzdGVyIGEgbmV3IEdQ" + + "VSBjbHVzdGVyIGFnYWluc3QgaXQuIFRoaXMgaXMgdGhlIG11bHRpLWNsdXN0ZXIgc2NhbGluZyBw" + + "YXRoOiBvbmUgY29udHJvbCBwbGFuZSDihpIgTiBjb21wdXRlIHBsYW5lcy4KCiMjIFByZXJlcXVp" + + "c2l0ZXMgdGhlIHVzZXIgbXVzdCBoYXZlCgotICoqa3ViZWN0bCBjb250ZXh0IGZvciB0aGUgbmV3" + + "IGNvbXB1dGUgcGxhbmUqKiBpbiB0aGVpciBgS1VCRUNPTkZJR2AuCi0gKipQdWJsaWMgSUNNUyBV" + + "UkwqKiBvZiB0aGUgZXhpc3RpbmcgY29udHJvbCBwbGFuZSAoZS5nLiBgaHR0cHM6Ly9pY21zLm52" + + "Y2YuZXhhbXBsZS5jb21gKS4KLSAqKkFkbWluIEpXVCoqIGZvciB0aGUgY29udHJvbCBwbGFuZSdz" + + "IGFjY291bnQsIE9SIGFiaWxpdHkgdG8gbWludCBvbmUgdmlhIGBudmNmLWNsaSBpbml0YCBhZ2Fp" + + "bnN0IHRoZSBjb250cm9sIHBsYW5lJ3MgcHVibGljIGFwaSBlbmRwb2ludC4gKEFkbWluIHRva2Vu" + + "cyBjb21lIGZyb20gdGhlIEFQSSBLZXlzIHNlcnZpY2UgdmlhIHRoZSBwdWJsaWMgYXBpIGdhdGV3" + + "YXkg4oCUIGt1YmVjdGwgYWNjZXNzIHRvIHRoZSBjb250cm9sIHBsYW5lIGlzIE5PVCByZXF1aXJl" + + "ZCB0byBvYnRhaW4gb25lLikKLSBBIHVuaXF1ZSBgLS1jbHVzdGVyLW5hbWVgIHRoYXQgZG9lc24n" + + "dCBjb2xsaWRlIHdpdGggYWxyZWFkeS1yZWdpc3RlcmVkIGNsdXN0ZXJzLiBVc2UgYG52Y2YtY2xp" + + "IGNsdXN0ZXIgbGlzdC1yZWdpc3RlcmVkIC0tbmNhLWlkPSROQ0FfSUQgLS1pY21zLXVybD0kSUNN" + + "U2AgdG8gY2hlY2suCgojIyBTdGVwcwoKMS4gKipBc2sgZm9yIGlucHV0czoqKgogICAtIGAtLWNs" + + "dXN0ZXItbmFtZT08dW5pcXVlPmAg4oCUIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgY29udHJv" + + "bCBwbGFuZSdzIE5DQSBzY29wZQogICAtIGAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD08Y29udGV4" + + "dD5gIOKAlCB0aGUgbmV3IEdQVSBjbHVzdGVyJ3Mga3ViZWN0bCBjb250ZXh0CiAgIC0gYC0taWNt" + + "cy11cmw9PGh0dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUuY29tPmAg4oCUIGNvbnRyb2wgcGxhbmUn" + + "cyBwdWJsaWMgSUNNUyBVUkwKICAgLSBHUFUgdHlwZT8gKGRlZmF1bHQgYEgxMDBgLCBidXQgYXNr" + + "KQoKMi4gKipQcmUtZmxpZ2h0IGp1c3QgdGhlIGNvbXB1dGUgcGxhbmU6KioKCiAgIGBgYHNoCiAg" + + "IG52Y2YtY2xpIHNlbGYtaG9zdGVkIGNoZWNrIC0tcHJlIFwKICAgICAtLWNvbXB1dGUtcGxhbmUt" + + "Y29udGV4dD0kQ1RYIFwKICAgICAtLWljbXMtdXJsPSRJQ01TIFwKICAgICAtLWpzb24gfCBqcSAt" + + "YyAuCiAgIGBgYAoKICAgVGhpcyB2YWxpZGF0ZXMgdGhlIEdQVSBvcGVyYXRvciBpcyBpbnN0YWxs" + + "ZWQsIEdQVSBub2RlIGxhYmVscyBhcmUgcHJlc2VudCwgYW5kIElDTVMgaXMgcmVhY2hhYmxlIHZp" + + "YSBIVFRQLiBBZGRyZXNzIGFueSBmYWlsdXJlcyBiZWZvcmUgcHJvY2VlZGluZy4KCjMuICoqUnVu" + + "IGBhZGQtY29tcHV0ZS1wbGFuZWA6KioKCiAgIGBgYHNoCiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVk" + + "IGFkZC1jb21wdXRlLXBsYW5lIFwKICAgICAtLWNsdXN0ZXItbmFtZT0kTkFNRSBcCiAgICAgLS1j" + + "b21wdXRlLXBsYW5lLWNvbnRleHQ9JENUWCBcCiAgICAgLS1pY21zLXVybD0kSUNNUyBcCiAgICAg" + + "LS10b2tlbj0kSldUIFwKICAgICAtLW5vbi1pbnRlcmFjdGl2ZSBcCiAgICAgLS1qc29uCiAgIGBg" + + "YAoKICAgVGhpcyBpcyBhIHNlcGFyYXRlIHN1YmNvbW1hbmQgZnJvbSBgdXBgLiBJdCBydW5zIG9u" + + "bHkgdGhlIGNvbXB1dGUtcGxhbmUtcmVsZXZhbnQgcGhhc2VzOiAxIChjb21wdXRlLXBsYW5lIHBy" + + "ZWZsaWdodCksIDUgKHJlZ2lzdGVyKSwgNiAoY29tcHV0ZS1wbGFuZSBhcHBseSksIDggKGZpbmFs" + + "IGhlYWx0aCBvbiB0aGUgbmV3IGNvbXB1dGUgcGxhbmUpLiBJdCBkb2VzIE5PVCB0b3VjaCB0aGUg" + + "Y29udHJvbCBwbGFuZSBhbmQgZG9lcyBOT1QgYWNjZXB0IGAtLWNvbnRyb2wtcGxhbmUtY29udGV4" + + "dGAg4oCUIHRoZSBjb250cm9sIHBsYW5lIGlzIHJlYWNoZWQgb3ZlciBIVFRQUyBhdCBgLS1pY21z" + + "LXVybGAuIGAtLXRva2VuYCBpcyByZXF1aXJlZCBiZWNhdXNlIHRoZXJlJ3Mgbm8ga3ViZWN0bCBw" + + "YXRoIHRvIG1pbnQgb25lIGZyb20uCgo0LiAqKlZlcmlmeS4qKiBgbnZjZi1jbGkgc2VsZi1ob3N0" + + "ZWQgc3RhdHVzIC0tY2x1c3Rlci1uYW1lPSROQU1FIC0tanNvbiB8IGpxYCDigJQgZXhwZWN0IGB2" + + "ZXJkaWN0OiAiaGVhbHRoeSJgLiBUaGUgUmVnaXN0ZXJlZCBDb21wdXRlIFBsYW5lcyBwYW5lbCBm" + + "cm9tIElDTVMgc2hvdWxkIG5vdyBsaXN0IHRoZSBuZXcgY2x1c3Rlci4KCjUuICoqU21va2UuKiog" + + "W2RlcGxveS1hbmQtaW52b2tlLm1kXShkZXBsb3ktYW5kLWludm9rZS5tZCkg4oCUIGRlcGxveSBh" + + "IHNtYWxsIGZ1bmN0aW9uIHRvIHRoZSBuZXcgY29tcHV0ZSBwbGFuZSB0byBjb25maXJtIHNjaGVk" + + "dWxpbmcgd29ya3MuCgojIyBXaGF0IGlmIGEgY2x1c3RlciB3aXRoIHRoZSBzYW1lIG5hbWUgYWxy" + + "ZWFkeSBleGlzdHM/CgpgYWRkLWNvbXB1dGUtcGxhbmVgJ3MgcmVnaXN0ZXIgcGhhc2UgdXNlcyBg" + + "LS1pZ25vcmUtZXhpc3RpbmdgIHNlbWFudGljcyDigJQgaXQnbGwgbWF0Y2ggdGhlIGV4aXN0aW5n" + + "IElDTVMgcm93IGFuZCByZXVzZSBpdHMgY2x1c3RlcklkLiBUd28gc2NlbmFyaW9zOgoKLSAqKlJl" + + "LXJlZ2lzdGVyaW5nIHRoZSBzYW1lIGNsdXN0ZXIqKiAocmUtcnVubmluZyBvbiB0aGUgc2FtZSBj" + + "b21wdXRlIHBsYW5lIHRoYXQgd2FzIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCk6IGV4cGVjdGVkLCBu" + + "by1vcCBzZW1hbnRpY3MuCi0gKipEaWZmZXJlbnQgcGh5c2ljYWwgY2x1c3RlciBidXQgc2FtZSBu" + + "YW1lKio6IHRoZSBzZWNvbmQgYXR0ZW1wdCB3aWxsIHJldXNlIHRoZSBJQ01TIHJvdywgYnV0IHRo" + + "ZSBuZXcgY29tcHV0ZSBwbGFuZSdzIEpXS1Mgd2lsbCBiZSBzaWxlbnRseSAqcmVwbGFjZWQqIOKA" + + "lCB0aGUgb2xkIGNvbXB1dGUgcGxhbmUncyBOVkNBIGFnZW50IHdpbGwgc3RhcnQgZmFpbGluZyBQ" + + "U0FUIGF1dGguICoqQ29uZmlybSB3aXRoIHRoZSB1c2VyKiogdGhhdCB0aGV5IG1lYW50IHRvIG92" + + "ZXJ3cml0ZS4KCldoZW4gaW4gZG91YnQsIHJ1biBgbnZjZi1jbGkgY2x1c3RlciBsaXN0LXJlZ2lz" + + "dGVyZWQgLS1uY2EtaWQ9JE5DQV9JRCAtLWljbXMtdXJsPSRJQ01TYCBmaXJzdCBhbmQgYXNrIHRo" + + "ZSB1c2VyIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggYSBuYW1lIHRoYXQgYWxyZWFkeSBleGlzdHMu" + + "ClBLBwhCJ0kPBQ0AAAUNAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADkACQBkYXRhL252Y2Yt" + + "c2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2NyZWF0ZS1hbmQtcnVuLXRhc2subWRVVAUAAQCmzhIj" + + "IENyZWF0ZSBhbmQgcnVuIGEgdGFzawoKU3RhbmRhcmQgZmxvdzogbWludCBBUEkga2V5cyAtPiB0" + + "YXNrIENSRUFURSAtPiBtb25pdG9yIC0+IHJldHJpZXZlIHJlc3VsdHMgLT4gY2xlYW51cC4KCiMj" + + "IDEuIE1pbnQgQVBJIGtleXMKClRoZSBhZG1pbiB0b2tlbiBmcm9tIGBpbml0YCBkb2VzIG5vdCBj" + + "YXJyeSB0YXNrIGludm9jYXRpb24gc2NvcGUuIEdlbmVyYXRlIEFQSSBrZXlzOgoKYGBgc2gKbnZj" + + "Zi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWRlc2NyaXB0aW9uPSJ0YXNrIHNtb2tlIHRlc3QiIC0t" + + "ZXhwaXJlcy1pbj04aAojIC0+IGZ1bmN0aW9uIGtleTogbnZhcGktLi4uCiMgLT4gdGFzayBrZXk6" + + "IG52YXBpLS4uLgpgYGAKCkJvdGgga2V5cyBhcmUgc2F2ZWQgdG8gQ0xJIHN0YXRlLiBUbyBtaW50" + + "IG9ubHkgdGhlIHRhc2sga2V5OgoKYGBgc2gKbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWZv" + + "ciB0YXNrIC0tZGVzY3JpcHRpb249InRhc2sgc21va2UgdGVzdCIgLS1leHBpcmVzLWluPThoCmBg" + + "YAoKVG8gdmFsaWRhdGUgZWFjaCBrZXkgaW1tZWRpYXRlbHkgYWZ0ZXIgbWludGluZzoKCmBgYHNo" + + "Cm52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj0idGFzayBzbW9rZSB0ZXN0" + + "IiAtLWV4cGlyZXMtaW49OGggLS12YWxpZGF0ZQojIC0+IGZ1bmN0aW9uIEFQSSBrZXkgdmFsaWRh" + + "dGlvbiBwYXNzZWQhCiMgLT4gdGFzayBBUEkga2V5IHZhbGlkYXRpb24gcGFzc2VkIQpgYGAKCk5l" + + "dmVyIGVjaG8gdGhlIGtleSB2YWx1ZSAobnZhcGktLi4uKSBpbnRvIGNoYXQgb3IgbG9ncy4gUmVw" + + "b3J0IG9ubHkgdGhhdCB0aGUga2V5IHdhcyBtaW50ZWQsIGl0cyBkZXNjcmlwdGlvbiwgYW5kIGl0" + + "cyBleHBpcnkg4oCUIG5ldmVyIHRoZSB2YWx1ZSBpdHNlbGYuCgojIyMgRnJlc2ggc2Vzc2lvbiBw" + + "cmUtZmxpZ2h0CgpCZWZvcmUgcnVubmluZyBhbnkgYHRhc2tgIGNvbW1hbmQgaW4gYSBmcmVzaCBh" + + "Z2VudCBzZXNzaW9uLCB2ZXJpZnkgY3JlZGVudGlhbHM6CgoxLiBDaGVjayB3aGV0aGVyIGBOVkNG" + + "X0FQSV9LRVlgIGlzIHNldDoKCiAgIGBgYHNoCiAgIHByaW50ZW52IE5WQ0ZfQVBJX0tFWSA+IC9k" + + "ZXYvbnVsbCAyPiYxICYmIGVjaG8gc2V0IHx8IGVjaG8gdW5zZXQKICAgYGBgCgoyLiBJZiB1bnNl" + + "dCwgcmVhZCB0aGUgc3RvcmVkIGtleSBleHBpcnkgd2l0aG91dCBwcmludGluZyB0aGUgdmFsdWU6" + + "CgogICBgYGBzaAogICBweXRob24zIC1jICJpbXBvcnQganNvbixwYXRobGliOyBzPWpzb24ubG9h" + + "ZHMocGF0aGxpYi5QYXRoKCd+Ly5udmNmLWNsaS5zdGF0ZScpLmV4cGFuZHVzZXIoKS5yZWFkX3Rl" + + "eHQoKSk7IHByaW50KHMuZ2V0KCdudmN0QXBpS2V5RXhwaXJhdGlvbicsJ21pc3NpbmcnKSkiCiAg" + + "IGBgYAoKMy4gSWYgdGhlIGV4cGlyeSBpcyBpbiB0aGUgcGFzdCBvciBtaXNzaW5nLCByZWdlbmVy" + + "YXRlOgoKICAgYGBgc2gKICAgbnZjZi1jbGkgcmVmcmVzaAogICBudmNmLWNsaSBhcGkta2V5IGdl" + + "bmVyYXRlIC0tZm9yIHRhc2sgLS1kZXNjcmlwdGlvbj0idGFzay1rZXkiIC0tZXhwaXJlcy1pbj0y" + + "NGggLS12YWxpZGF0ZQogICBgYGAKCjQuIEluamVjdCB0aGUgc3RvcmVkIGtleSBpbnRvIHRoZSBz" + + "dWJwcm9jZXNzIGVudiB3aXRob3V0IGxvZ2dpbmcgdGhlIHZhbHVlLiBVc2UgYSBzaGVsbCBzdWJz" + + "aGVsbCBvciBlbnYgcHJlZml4IOKAlCBuZXZlciBwcmludCB0aGUga2V5IGludG8gY2hhdC4KCkVy" + + "cm9yIGNsYXNzaWZpY2F0aW9uOgoKLSAibWlzc2luZyBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFs" + + "cyIgb3IgZXhpdCAyOiBrZXkgbm90IGluamVjdGVkOyByZXBlYXQgcHJlLWZsaWdodC4KLSBIVFRQ" + + "IDQwMzoga2V5IGV4cGlyZWQgb3Igd3JvbmcgYXVkaWVuY2U7IHJlZ2VuZXJhdGUuCi0gRW1wdHkg" + + "dGFzayBsaXN0OiB2YWxpZDsgbm8gdGFza3MgZXhpc3QgeWV0LgoKIyMgMi4gVGFzayBDUkVBVEU6" + + "IGNvbnRhaW5lcgoKRGVmaW5lIHRoZSB0YXNrIGluIGEgSlNPTiBmaWxlLiBNaW5pbXVtIHZpYWJs" + + "ZSBjb250YWluZXIgdGFzazoKCmBgYGpzb24KewogICJuYW1lIjogInNtb2tlLWNvbnRhaW5lci10" + + "YXNrIiwKICAiZ3B1U3BlY2lmaWNhdGlvbiI6IHsKICAgICJncHUiOiAiSDEwMCIsCiAgICAiaW5z" + + "dGFuY2VUeXBlIjogIk5DUC5HUFUuSDEwMF8xeCIsCiAgICAiYmFja2VuZCI6ICJuY3AtbG9jYWwi" + + "CiAgfSwKICAiY29udGFpbmVySW1hZ2UiOiAibnZjci5pby9udmlkaWEvbmVtbzpsYXRlc3QiLAog" + + "ICJjb250YWluZXJBcmdzIjogInB5dGhvbiAtYyBcInByaW50KCdoZWxsbyBmcm9tIHRhc2snKVwi" + + "IiwKICAicmVzdWx0SGFuZGxpbmdTdHJhdGVneSI6ICJOT05FIgp9CmBgYAoKYGBgc2gKbnZjZi1j" + + "bGkgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPXRhc2stY29udGFpbmVyLmpzb24KIyAtPiBUYXNr" + + "IElEOiA8dGFza19pZD4KYGBgCgpDYXB0dXJlIHRoZSB0YXNrIElEIGZyb20gdGhlIG91dHB1dC4g" + + "U3RhdGUgcGVyc2lzdGVuY2UgY2FuIGZhaWwgc2lsZW50bHksIHNvIHBhc3MKYDx0YXNrSWQ+YCBl" + + "eHBsaWNpdGx5IG9uIHN1YnNlcXVlbnQgY29tbWFuZHMgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBz" + + "YXZlZCBzdGF0ZS4KCkVxdWl2YWxlbnQgQ0xJIGZsYWdzIGZvcm0gZm9yIHF1aWNrIGFkLWhvYyBy" + + "dW5zOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBjcmVhdGUgXAogIC0tbmFtZT1zbW9rZS1jb250YWlu" + + "ZXItdGFzayBcCiAgLS1ncHU9SDEwMCBcCiAgLS1pbnN0YW5jZS10eXBlPU5DUC5HUFUuSDEwMF8x" + + "eCBcCiAgLS1iYWNrZW5kPW5jcC1sb2NhbCBcCiAgLS1pbWFnZT1udmNyLmlvL252aWRpYS9uZW1v" + + "OmxhdGVzdCBcCiAgLS1jb250YWluZXItYXJncz0icHl0aG9uIC1jICdwcmludChoZWxsbyBmcm9t" + + "IHRhc2spJyIgXAogIC0tcmVzdWx0LXN0cmF0ZWd5PU5PTkUKYGBgCgpUbyB0YXJnZXQgYSBzcGVj" + + "aWZpYyBjb21wdXRlIGNsdXN0ZXI6CgpgYGBzaApudmNmLWNsaSB0YXNrIGNyZWF0ZSAtLWlucHV0" + + "LWZpbGU9dGFzay1jb250YWluZXIuanNvbiAtLWNsdXN0ZXJzPW15LWNsdXN0ZXIKYGBgCgpUbyBp" + + "bmplY3QgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9yIHNlY3JldHMsIGVpdGhlciBwYXNzIGZsYWdz" + + "OgoKYGBgc2gKbnZjZi1jbGkgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPXRhc2stY29udGFpbmVy" + + "Lmpzb24gXAogIC0tY29udGFpbmVyLWVudiBNWV9FTlY9dmFsdWUgXAogIC0tc2VjcmV0cyBNWV9T" + + "RUNSRVQ9czNjcjN0CmBgYAoKb3Igc2V0IHRoZW0gaW4gdGhlIEpTT04gZmlsZToKCmBgYGpzb24K" + + "ewogICJjb250YWluZXJFbnZpcm9ubWVudCI6IFsKICAgIHsia2V5IjogIk1ZX0VOViIsICJ2YWx1" + + "ZSI6ICJ2YWx1ZSJ9CiAgXSwKICAic2VjcmV0cyI6IFsKICAgIHsibmFtZSI6ICJNWV9TRUNSRVQi" + + "LCAidmFsdWUiOiAiczNjcjN0In0KICBdCn0KYGBgCgpTZWNyZXRzIGFyZSBlbmNyeXB0ZWQgYXQg" + + "cmVzdCBhbmQgbm90IHJldHVybmVkIGluIGxpc3Qgb3IgZ2V0IHJlc3BvbnNlcyBieSBkZWZhdWx0" + + "OyBkbyBub3QgbG9nIHRoZW0uCgojIyAzLiBUYXNrIENSRUFURTogSGVsbQoKRm9yIEhlbG0tdHlw" + + "ZSB0YXNrcywgcmVwbGFjZSBgY29udGFpbmVySW1hZ2VgIHdpdGggYGhlbG1DaGFydGA6CgpgYGBq" + + "c29uCnsKICAibmFtZSI6ICJzbW9rZS1oZWxtLXRhc2siLAogICJncHVTcGVjaWZpY2F0aW9uIjog" + + "ewogICAgImdwdSI6ICJIMTAwIiwKICAgICJpbnN0YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAwXzF4" + + "IiwKICAgICJiYWNrZW5kIjogIm5jcC1sb2NhbCIKICB9LAogICJoZWxtQ2hhcnQiOiAiaHR0cHM6" + + "Ly9oZWxtLm5nYy5udmlkaWEuY29tLzxvcmc+L2NoYXJ0cy9leGFtcGxlLXRhc2stMC4xLjAudGd6" + + "IiwKICAicmVzdWx0SGFuZGxpbmdTdHJhdGVneSI6ICJOT05FIgp9CmBgYAoKYGBgc2gKbnZjZi1j" + + "bGkgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPXRhc2staGVsbS5qc29uCiMgLT4gVGFzayBJRDog" + + "PHRhc2tfaWQ+CmBgYAoKYGhlbG1DaGFydGAgYW5kIGBjb250YWluZXJJbWFnZWAgYXJlIG11dHVh" + + "bGx5IGV4Y2x1c2l2ZS4KCiMjIDNiLiBVcGRhdGUgc2VjcmV0cyBvbiBhIHJ1bm5pbmcgdGFzawoK" + + "YGBgc2gKbnZjZi1jbGkgdGFzayB1cGRhdGUtc2VjcmV0cyA8dGFza19pZD4gLS1zZWNyZXRzIE5B" + + "TUU9dmFsdWUKYGBgCgpgdXBkYXRlLXNlY3JldHNgIG1lcmdlcyBzZWNyZXRzIGJ5IG5hbWU6IHN1" + + "cHBsaWVkIHNlY3JldHMgYXJlIGFkZGVkIG9yIHVwZGF0ZWQsIGFuZCBleGlzdGluZyBzZWNyZXRz" + + "IG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVxdWVzdCBhcmUgcHJlc2VydmVkLiBEbyBub3QgZWNobyBz" + + "ZWNyZXQgdmFsdWVzIGludG8gY2hhdC4KCiMjIDQuIE1vbml0b3IKClBvbGwgdGFzayBzdGF0ZToK" + + "CmBgYHNoCm52Y2YtY2xpIHRhc2sgZ2V0IDx0YXNrX2lkPgojIC0+IGlkOiA8dGFza19pZD4KIyAt" + + "PiBzdGF0dXM6IFJVTk5JTkcKYGBgCgpPciB1c2UgdGhlIHRhc2sgSUQgc2F2ZWQgdG8gc3RhdGUg" + + "ZnJvbSB0aGUgbW9zdCByZWNlbnQgYHRhc2sgY3JlYXRlYDoKCmBgYHNoCm52Y2YtY2xpIHRhc2sg" + + "Z2V0CmBgYAoKU3RhdHVzIHZhbHVlczogYFFVRVVFRGAsIGBMQVVOQ0hFRGAsIGBSVU5OSU5HYCwg" + + "YENPTVBMRVRFRGAsIGBFUlJPUkVEYCwgYENBTkNFTEVEYCwgYEVYQ0VFREVEX01BWF9SVU5USU1F" + + "X0RVUkFUSU9OYCwgYEVYQ0VFREVEX01BWF9RVUVVRURfRFVSQVRJT05gLgoKSW5zcGVjdCBsaWZl" + + "Y3ljbGUgZXZlbnRzIGZvciBwcm9ncmVzcyBkZXRhaWxzIG9yIGZhaWx1cmUgY29udGV4dDoKCmBg" + + "YHNoCm52Y2YtY2xpIHRhc2sgZXZlbnRzIDx0YXNrX2lkPgpgYGAKCklmIHRoZSB0YXNrIGlzIHN0" + + "dWNrIGluIGBRVUVVRURgLCBjaGVjayB0aGF0IGEgY29tcHV0ZSBjbHVzdGVyIHdpdGggYSBtYXRj" + + "aGluZyBHUFUgU0tVCmlzIHJlZ2lzdGVyZWQgYW5kIGhlYWx0aHkgKGBudmNmLWNsaSBzZWxmLWhv" + + "c3RlZCBzdGF0dXNgKS4KCklmIHRoZSB0YXNrIG1vdmVzIHRvIGBFUlJPUkVEYCwgdGhlIGV2ZW50" + + "cyBvdXRwdXQgY29udGFpbnMgdGhlIGZhaWx1cmUgcmVhc29uLiBGb3IKY29udGFpbmVyLWxldmVs" + + "IGRldGFpbCwgaW5zcGVjdCB0aGUgdGFzayB3b3JrbG9hZCBwb2RzIG9uIHRoZSBjb21wdXRlLXBs" + + "YW5lIGNsdXN0ZXIgd2l0aApga3ViZWN0bGAgYWdhaW5zdCB0aGUgYXBwcm9wcmlhdGUgbmFtZXNw" + + "YWNlIGFuZCBjb250ZXh0LgoKIyMgNS4gUmV0cmlldmUgcmVzdWx0cwoKRm9yIHRhc2tzIHdpdGgg" + + "YHJlc3VsdEhhbmRsaW5nU3RyYXRlZ3k6IE5PTkVgLCByZXN1bHRzIGFyZSBlbXB0eSBieSBkZXNp" + + "Z246CgpgYGBzaApudmNmLWNsaSB0YXNrIHJlc3VsdHMgPHRhc2tfaWQ+CiMgLT4geyJyZXN1bHRz" + + "IjogW119CmBgYAoKRm9yIHRhc2tzIHdpdGggYHJlc3VsdEhhbmRsaW5nU3RyYXRlZ3k6IFVQTE9B" + + "RGAsIHJlc3VsdHMgdXBsb2FkIHRvIHRoZSBsb2NhdGlvbiBuYW1lZCBpbgpgcmVzdWx0c0xvY2F0" + + "aW9uYC4gVGhlIHRhc2sncyBjcmVkZW50aWFscyBtdXN0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRo" + + "YXQgbG9jYXRpb24uIEFmdGVyCnRoZSB0YXNrIHJlYWNoZXMgYENPTVBMRVRFRGA6CgpgYGBzaApu" + + "dmNmLWNsaSB0YXNrIHJlc3VsdHMgPHRhc2tfaWQ+CmBgYAoKTm90ZTogcmVzdWx0IHVwbG9hZCBp" + + "cyBub3QgeWV0IHN1cHBvcnRlZCBpbiB0aGlzIHJlbGVhc2UuCgojIyA2LiBDbGVhbnVwCgpDYW5j" + + "ZWwgYSBydW5uaW5nIHRhc2s6CgpgYGBzaApudmNmLWNsaSB0YXNrIGNhbmNlbCA8dGFza19pZD4K" + + "YGBgCgpEZWxldGUgdGhlIHRhc2sgcmVjb3JkIGFmdGVyIGl0IHJlYWNoZXMgYSB0ZXJtaW5hbCBz" + + "dGF0ZToKCmBgYHNoCm52Y2YtY2xpIHRhc2sgZGVsZXRlIDx0YXNrX2lkPgpgYGAKClN0b3AgYW5k" + + "IGNvbmZpcm0gd2l0aCB0aGUgdXNlciBiZWZvcmUgcnVubmluZyB0YXNrIGRlbGV0ZS4gU3RhdGUg" + + "dGhlIHRhc2sgSUQgYW5kIGl0cyBjdXJyZW50IHN0YXR1cy4gRG8gbm90IHByb2NlZWQgZXZlbiB3" + + "aGVuIHRoZSB1c2VyJ3MgcHJvbXB0IGFscmVhZHkgcmVxdWVzdGVkIGRlbGV0aW9uIOKAlCBhbHdh" + + "eXMgZ2V0IGFuIGV4cGxpY2l0IGxhc3QtbG9vayBjb25maXJtYXRpb24uIERlbGV0aW9uIGlzIHBl" + + "cm1hbmVudCBhbmQgY2Fubm90IGJlIHVuZG9uZS4KClRvIGxpc3QgYWxsIHRhc2tzIGZvciB0aGUg" + + "Y3VycmVudCBvd25lciAodXNlZnVsIGJlZm9yZSBidWxrIGNsZWFudXApOgoKYGBgc2gKbnZjZi1j" + + "bGkgdGFzayBsaXN0Cm52Y2YtY2xpIHRhc2sgbGlzdCAtLXN0YXR1cz1DT01QTEVURUQKYGBgCgoj" + + "IyBOb3RlcwoKLSBHUFUgZmFtaWx5IGFuZCBpbnN0YW5jZSB0eXBlIG11c3QgbWF0Y2ggYSByZWdp" + + "c3RlcmVkIGNvbXB1dGUgY2x1c3RlciBTS1UuIE1pc21hdGNoCiAgY2F1c2VzIHRoZSB0YXNrIHRv" + + "IHJlbWFpbiBgUVVFVUVEYCBpbmRlZmluaXRlbHkuIFVzZSBgbnZjZi1jbGkgY2x1c3RlciBsaXN0" + + "YCB0byBjaGVjawogIHJlZ2lzdGVyZWQgU0tVcy4KLSBGb3IgY29udGFpbmVyIGltYWdlcyBvbiBw" + + "cml2YXRlIHJlZ2lzdHJpZXMsIGVuc3VyZSB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVyJ3MKICBp" + + "bWFnZS1jcmVkZW50aWFsLWhlbHBlciBpcyBjb25maWd1cmVkIGZvciB0aGUgcmVnaXN0cnkgaG9z" + + "dC4KUEsHCNTejTSfGQAAnxkAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAANwAJAGRhdGEvbnZj" + + "Zi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvZGVwbG95LWFuZC1pbnZva2UubWRVVAUAAQCmzhIj" + + "IERlcGxveSBhbmQgaW52b2tlIGEgY29udGFpbmVyIGZ1bmN0aW9uCgpTdGFuZGFyZCBmb3VyLXN0" + + "ZXAgZmxvdzogZnVuY3Rpb24gQ1JFQVRFIOKGkiBERVBMT1kg4oaSIEFQSSBrZXkgKGZvciBpbnZv" + + "a2Ugc2NvcGUpIOKGkiBJTlZPS0UuCgojIyAxLiBGdW5jdGlvbiBDUkVBVEUKCkRlZmluZSB0aGUg" + + "ZnVuY3Rpb24gaW4gYSBKU09OIGZpbGUuIE1pbmltdW06CgpCZWZvcmUgY3JlYXRpbmcgdGhlIGZ1" + + "bmN0aW9uLCBjb25maXJtIHRoZSBleGFjdCBmdW5jdGlvbiBuYW1lIGFuZCBjb250YWluZXIgaW1h" + + "Z2Ugd2l0aCB0aGUgdXNlci4gSWYgZWl0aGVyIHZhbHVlIGlzIG1pc3NpbmcsIHN0b3AgYW5kIGFz" + + "ay4gRG8gbm90IGludmVudCBvciBzdWJtaXQgZXhhbXBsZSB2YWx1ZXMgZm9yIHRoZXNlIGZpZWxk" + + "cy4KCmBgYGpzb24KewogICJuYW1lIjogIjxjb25maXJtZWQtZnVuY3Rpb24tbmFtZT4iLAogICJj" + + "b250YWluZXJJbWFnZSI6ICI8Y29uZmlybWVkLWNvbnRhaW5lci1pbWFnZT4iLAogICJpbmZlcmVu" + + "Y2VVcmwiOiAiL2VjaG8iLAogICJpbmZlcmVuY2VQb3J0IjogODAwMCwKICAiZGVzY3JpcHRpb24i" + + "OiAic21va2UgdGVzdCBlY2hvIGZ1bmN0aW9uIiwKICAiZnVuY3Rpb25UeXBlIjogIkRFRkFVTFQi" + + "LAogICJhcGlCb2R5Rm9ybWF0IjogIkNVU1RPTSIsCiAgImhlYWx0aCI6IHsKICAgICJwcm90b2Nv" + + "bCI6ICJIVFRQIiwKICAgICJ1cmkiOiAiL2hlYWx0aCIsCiAgICAicG9ydCI6IDgwMDAsCiAgICAi" + + "dGltZW91dCI6ICJQVDMwUyIsCiAgICAiZXhwZWN0ZWRTdGF0dXNDb2RlIjogMjAwCiAgfQp9CmBg" + + "YAoKYGBgc2gKbnZjZi1jbGkgZnVuY3Rpb24gY3JlYXRlIC0taW5wdXQtZmlsZT1jcmVhdGUtZm4u" + + "anNvbgojIOKGkiBGdW5jdGlvbiBJRDogPGZuX2lkPgojIOKGkiBWZXJzaW9uIElEOiA8dmVyX2lk" + + "PgpgYGAKClNhdmUgdGhlIElEcyDigJQgdGhleSdyZSBuZWVkZWQgZm9yIGRlcGxveSArIGludm9r" + + "ZS4KCiMjIyBMTE0gZnVuY3Rpb24gdmFyaWFudAoKRm9yIGFuIE9wZW5BSS1jb21wYXRpYmxlIExM" + + "TSBmdW5jdGlvbiwgc2V0IGBmdW5jdGlvblR5cGU6ICJMTE0iYCBhbmQgcHV0IHJvdXRlIG1ldGFk" + + "YXRhIHVuZGVyIGBtb2RlbHNbXS5sbG1Db25maWdgOgoKQmVmb3JlIGNyZWF0aW5nIHRoZSBmdW5j" + + "dGlvbiwgY29uZmlybSB0aGUgZXhhY3QgZnVuY3Rpb24gbmFtZSwgY29udGFpbmVyIGltYWdlLCBh" + + "bmQgbW9kZWwgbmFtZSB3aXRoIHRoZSB1c2VyLiBJZiBhbnkgdmFsdWUgaXMgbWlzc2luZywgc3Rv" + + "cCBhbmQgYXNrLiBEbyBub3QgaW52ZW50IG9yIHN1Ym1pdCBleGFtcGxlIHZhbHVlcyBmb3IgdGhl" + + "c2UgZmllbGRzLgoKYGBganNvbgp7CiAgIm5hbWUiOiAiPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1l" + + "PiIsCiAgImNvbnRhaW5lckltYWdlIjogIjxjb25maXJtZWQtY29udGFpbmVyLWltYWdlPiIsCiAg" + + "ImluZmVyZW5jZVVybCI6ICIvIiwKICAiaW5mZXJlbmNlUG9ydCI6IDgwMDAsCiAgImZ1bmN0aW9u" + + "VHlwZSI6ICJMTE0iLAogICJoZWFsdGgiOiB7CiAgICAicHJvdG9jb2wiOiAiSFRUUCIsCiAgICAi" + + "dXJpIjogIi9oZWFsdGgiLAogICAgInBvcnQiOiA4MDAwLAogICAgInRpbWVvdXQiOiAiUFQzMFMi" + + "LAogICAgImV4cGVjdGVkU3RhdHVzQ29kZSI6IDIwMAogIH0sCiAgIm1vZGVscyI6IFsKICAgIHsK" + + "ICAgICAgIm5hbWUiOiAiPGNvbmZpcm1lZC1tb2RlbC1uYW1lPiIsCiAgICAgICJsbG1Db25maWci" + + "OiB7CiAgICAgICAgInVyaXMiOiBbIi92MS9jaGF0L2NvbXBsZXRpb25zIiwgIi92MS9yZXNwb25z" + + "ZXMiLCAiL3YxL2VtYmVkZGluZ3MiXSwKICAgICAgICAicm91dGluZ01ldGhvZCI6ICJyb3VuZF9y" + + "b2JpbiIsCiAgICAgICAgInRva2VuUmF0ZUxpbWl0IjogIjEwMDAtUyIKICAgICAgfQogICAgfQog" + + "IF0KfQpgYGAKCkVxdWl2YWxlbnQgQ0xJIGZsYWcgZm9ybToKCmBgYHNoCm52Y2YtY2xpIGZ1bmN0" + + "aW9uIGNyZWF0ZSBcCiAgLS1uYW1lPSI8Y29uZmlybWVkLWZ1bmN0aW9uLW5hbWU+IiBcCiAgLS1p" + + "bWFnZT0iPGNvbmZpcm1lZC1jb250YWluZXItaW1hZ2U+IiBcCiAgLS1pbmZlcmVuY2UtdXJsPS8g" + + "XAogIC0taW5mZXJlbmNlLXBvcnQ9ODAwMCBcCiAgLS1oZWFsdGgtdXJpPS9oZWFsdGggXAogIC0t" + + "aGVhbHRoLXBvcnQ9ODAwMCBcCiAgLS1oZWFsdGgtdGltZW91dD1QVDMwUyBcCiAgLS1oZWFsdGgt" + + "cHJvdG9jb2w9SFRUUCBcCiAgLS1oZWFsdGgtZXhwZWN0ZWQtc3RhdHVzPTIwMCBcCiAgLS1mdW5j" + + "dGlvbi10eXBlPUxMTSBcCiAgLS1sbG0tbW9kZWw9J25hbWU9PGNvbmZpcm1lZC1tb2RlbC1uYW1l" + + "Pix1cmlzPS92MS9jaGF0L2NvbXBsZXRpb25zfC92MS9yZXNwb25zZXN8L3YxL2VtYmVkZGluZ3Ms" + + "cm91dGluZ01ldGhvZD1yb3VuZF9yb2Jpbix0b2tlblJhdGVMaW1pdD0xMDAwLVMnCmBgYAoKVXNl" + + "IHRoZSBzYW1lIGRlcGxveSBzdGVwIGJlbG93IGFmdGVyIHRoZSBMTE0gZnVuY3Rpb24gaXMgY3Jl" + + "YXRlZC4KCk9wdGlvbmFsIG1vZGVsIHJvdXRpbmcgdXBkYXRlIGFmdGVyIGNyZWF0aW9uOgoKYGBg" + + "c2gKbnZjZi1jbGkgZnVuY3Rpb24gdXBkYXRlIFwKICAtLWZ1bmN0aW9uLWlkPTxmbl9pZD4gXAog" + + "IC0tdmVyc2lvbi1pZD08dmVyX2lkPiBcCiAgLS1sbG0tbW9kZWwtdXBkYXRlPSduYW1lPTxjb25m" + + "aXJtZWQtbW9kZWwtbmFtZT4scm91dGluZ01ldGhvZD1wb3dlcl9vZl90d28sdG9rZW5SYXRlTGlt" + + "aXQ9MTAwMC1TJwpgYGAKClVzZSB0aGlzIGZvciBtdXRhYmxlIGByb3V0aW5nTWV0aG9kYCBhbmQg" + + "YHRva2VuUmF0ZUxpbWl0YDsgY3JlYXRlLXRpbWUgYHVyaXNgIHN0YXkgaW4gYG1vZGVsc1tdLmxs" + + "bUNvbmZpZ2AuCmB0b2tlblJhdGVMaW1pdGAgc3VwcG9ydHMgcG9zaXRpdmUgaW50ZWdlciB0b2tl" + + "biBsaW1pdHMgZm9yIGBTYCwgYE1gLCBgSGAsIGBEYCwgYW5kIGBXYC4gVXNlIGAxMDAwLVNgIGZv" + + "ciBhIHNpbmdsZSBpbmxpbmUgQ0xJIGxpbWl0LiBVc2UgaW5wdXQgSlNPTiBmb3IgY29tYmluZWQg" + + "bGltaXRzLCBzdWNoIGFzIGAxMDAwLVMsNTAwMC1NLDEwMDAwMC1ILDUwMDAwMC1ELDEwMDAwMDAt" + + "V2AsIGJlY2F1c2UgaW5saW5lIG1vZGVsIHNwZWNzIHVzZSBjb21tYXMgYXMgZmllbGQgc2VwYXJh" + + "dG9ycy4KCiMjIyBIZWxtIGNoYXJ0IExMTSBmdW5jdGlvbiB2YXJpYW50CgpMTE0gZnVuY3Rpb24g" + + "dHlwZSBpcyBpbmRlcGVuZGVudCBvZiB3b3JrbG9hZCBwYWNrYWdpbmcuIEZvciBhIEhlbG0tY2hh" + + "cnQgYmFja2VkIExMTSBmdW5jdGlvbiwga2VlcCB0aGUgc2FtZSBgZnVuY3Rpb25UeXBlYCBhbmQg" + + "YG1vZGVsc1tdLmxsbUNvbmZpZ2AgZmllbGRzLCB0aGVuIHNldCBgaGVsbUNoYXJ0YCBhbmQgYGhl" + + "bG1DaGFydFNlcnZpY2VOYW1lYC4gVGhlIHNlcnZpY2UgbmFtZSBtdXN0IG1hdGNoIGEgS3ViZXJu" + + "ZXRlcyBTZXJ2aWNlIHJlbmRlcmVkIGJ5IHRoZSBjaGFydCwgYW5kIGBpbmZlcmVuY2VQb3J0YCBt" + + "dXN0IGJlIHRoYXQgU2VydmljZSBwb3J0LgoKQmVmb3JlIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiwg" + + "Y29uZmlybSB0aGUgZXhhY3QgZnVuY3Rpb24gbmFtZSBhbmQgbW9kZWwgbmFtZSB3aXRoIHRoZSB1" + + "c2VyLiBJZiBlaXRoZXIgdmFsdWUgaXMgbWlzc2luZywgc3RvcCBhbmQgYXNrLiBEbyBub3QgaW52" + "ZW50IG9yIHN1Ym1pdCBleGFtcGxlIHZhbHVlcyBmb3IgdGhlc2UgZmllbGRzLgoKYGBganNvbgp7" + - "CiAgIm5hbWUiOiAiPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1lPiIsCiAgImNvbnRhaW5lckltYWdl" + - "IjogIjxjb25maXJtZWQtY29udGFpbmVyLWltYWdlPiIsCiAgImluZmVyZW5jZVVybCI6ICIvIiwK" + - "ICAiaW5mZXJlbmNlUG9ydCI6IDgwMDAsCiAgImZ1bmN0aW9uVHlwZSI6ICJMTE0iLAogICJoZWFs" + - "dGgiOiB7CiAgICAicHJvdG9jb2wiOiAiSFRUUCIsCiAgICAidXJpIjogIi9oZWFsdGgiLAogICAg" + - "InBvcnQiOiA4MDAwLAogICAgInRpbWVvdXQiOiAiUFQzMFMiLAogICAgImV4cGVjdGVkU3RhdHVz" + - "Q29kZSI6IDIwMAogIH0sCiAgIm1vZGVscyI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiPGNvbmZp" + - "cm1lZC1tb2RlbC1uYW1lPiIsCiAgICAgICJsbG1Db25maWciOiB7CiAgICAgICAgInVyaXMiOiBb" + - "Ii92MS9jaGF0L2NvbXBsZXRpb25zIiwgIi92MS9yZXNwb25zZXMiLCAiL3YxL2VtYmVkZGluZ3Mi" + - "XSwKICAgICAgICAicm91dGluZ01ldGhvZCI6ICJyb3VuZF9yb2JpbiIsCiAgICAgICAgInRva2Vu" + - "UmF0ZUxpbWl0IjogIjEwMDAtUyIKICAgICAgfQogICAgfQogIF0KfQpgYGAKCkVxdWl2YWxlbnQg" + - "Q0xJIGZsYWcgZm9ybToKCmBgYHNoCm52Y2YtY2xpIGZ1bmN0aW9uIGNyZWF0ZSBcCiAgLS1uYW1l" + - "PSI8Y29uZmlybWVkLWZ1bmN0aW9uLW5hbWU+IiBcCiAgLS1pbWFnZT0iPGNvbmZpcm1lZC1jb250" + - "YWluZXItaW1hZ2U+IiBcCiAgLS1pbmZlcmVuY2UtdXJsPS8gXAogIC0taW5mZXJlbmNlLXBvcnQ9" + - "ODAwMCBcCiAgLS1oZWFsdGgtdXJpPS9oZWFsdGggXAogIC0taGVhbHRoLXBvcnQ9ODAwMCBcCiAg" + - "LS1oZWFsdGgtdGltZW91dD1QVDMwUyBcCiAgLS1oZWFsdGgtcHJvdG9jb2w9SFRUUCBcCiAgLS1o" + - "ZWFsdGgtZXhwZWN0ZWQtc3RhdHVzPTIwMCBcCiAgLS1mdW5jdGlvbi10eXBlPUxMTSBcCiAgLS1s" + - "bG0tbW9kZWw9J25hbWU9PGNvbmZpcm1lZC1tb2RlbC1uYW1lPix1cmlzPS92MS9jaGF0L2NvbXBs" + - "ZXRpb25zfC92MS9yZXNwb25zZXN8L3YxL2VtYmVkZGluZ3Mscm91dGluZ01ldGhvZD1yb3VuZF9y" + - "b2Jpbix0b2tlblJhdGVMaW1pdD0xMDAwLVMnCmBgYAoKVXNlIHRoZSBzYW1lIGRlcGxveSBzdGVw" + - "IGJlbG93IGFmdGVyIHRoZSBMTE0gZnVuY3Rpb24gaXMgY3JlYXRlZC4KCk9wdGlvbmFsIG1vZGVs" + - "IHJvdXRpbmcgdXBkYXRlIGFmdGVyIGNyZWF0aW9uOgoKYGBgc2gKbnZjZi1jbGkgZnVuY3Rpb24g" + - "dXBkYXRlIFwKICAtLWZ1bmN0aW9uLWlkPTxmbl9pZD4gXAogIC0tdmVyc2lvbi1pZD08dmVyX2lk" + - "PiBcCiAgLS1sbG0tbW9kZWwtdXBkYXRlPSduYW1lPTxjb25maXJtZWQtbW9kZWwtbmFtZT4scm91" + - "dGluZ01ldGhvZD1wb3dlcl9vZl90d28sdG9rZW5SYXRlTGltaXQ9MTAwMC1TJwpgYGAKClVzZSB0" + - "aGlzIGZvciBtdXRhYmxlIGByb3V0aW5nTWV0aG9kYCBhbmQgYHRva2VuUmF0ZUxpbWl0YDsgY3Jl" + - "YXRlLXRpbWUgYHVyaXNgIHN0YXkgaW4gYG1vZGVsc1tdLmxsbUNvbmZpZ2AuCmB0b2tlblJhdGVM" + - "aW1pdGAgc3VwcG9ydHMgcG9zaXRpdmUgaW50ZWdlciB0b2tlbiBsaW1pdHMgZm9yIGBTYCwgYE1g" + - "LCBgSGAsIGBEYCwgYW5kIGBXYC4gVXNlIGAxMDAwLVNgIGZvciBhIHNpbmdsZSBpbmxpbmUgQ0xJ" + - "IGxpbWl0LiBVc2UgaW5wdXQgSlNPTiBmb3IgY29tYmluZWQgbGltaXRzLCBzdWNoIGFzIGAxMDAw" + - "LVMsNTAwMC1NLDEwMDAwMC1ILDUwMDAwMC1ELDEwMDAwMDAtV2AsIGJlY2F1c2UgaW5saW5lIG1v" + - "ZGVsIHNwZWNzIHVzZSBjb21tYXMgYXMgZmllbGQgc2VwYXJhdG9ycy4KCiMjIyBIZWxtIGNoYXJ0" + - "IExMTSBmdW5jdGlvbiB2YXJpYW50CgpMTE0gZnVuY3Rpb24gdHlwZSBpcyBpbmRlcGVuZGVudCBv" + - "ZiB3b3JrbG9hZCBwYWNrYWdpbmcuIEZvciBhIEhlbG0tY2hhcnQgYmFja2VkIExMTSBmdW5jdGlv" + - "biwga2VlcCB0aGUgc2FtZSBgZnVuY3Rpb25UeXBlYCBhbmQgYG1vZGVsc1tdLmxsbUNvbmZpZ2Ag" + - "ZmllbGRzLCB0aGVuIHNldCBgaGVsbUNoYXJ0YCBhbmQgYGhlbG1DaGFydFNlcnZpY2VOYW1lYC4g" + - "VGhlIHNlcnZpY2UgbmFtZSBtdXN0IG1hdGNoIGEgS3ViZXJuZXRlcyBTZXJ2aWNlIHJlbmRlcmVk" + - "IGJ5IHRoZSBjaGFydCwgYW5kIGBpbmZlcmVuY2VQb3J0YCBtdXN0IGJlIHRoYXQgU2VydmljZSBw" + - "b3J0LgoKQmVmb3JlIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiwgY29uZmlybSB0aGUgZXhhY3QgZnVu" + - "Y3Rpb24gbmFtZSBhbmQgbW9kZWwgbmFtZSB3aXRoIHRoZSB1c2VyLiBJZiBlaXRoZXIgdmFsdWUg" + - "aXMgbWlzc2luZywgc3RvcCBhbmQgYXNrLiBEbyBub3QgaW52ZW50IG9yIHN1Ym1pdCBleGFtcGxl" + - "IHZhbHVlcyBmb3IgdGhlc2UgZmllbGRzLgoKYGBganNvbgp7CiAgIm5hbWUiOiAiPGNvbmZpcm1l" + - "ZC1mdW5jdGlvbi1uYW1lPiIsCiAgImluZmVyZW5jZVVybCI6ICIvIiwKICAiaW5mZXJlbmNlUG9y" + - "dCI6IDgwMDAsCiAgImZ1bmN0aW9uVHlwZSI6ICJMTE0iLAogICJoZWFsdGgiOiB7CiAgICAicHJv" + - "dG9jb2wiOiAiSFRUUCIsCiAgICAidXJpIjogIi9oZWFsdGgiLAogICAgInBvcnQiOiA4MDAwLAog" + - "ICAgInRpbWVvdXQiOiAiUFQzMFMiLAogICAgImV4cGVjdGVkU3RhdHVzQ29kZSI6IDIwMAogIH0s" + - "CiAgImhlbG1DaGFydCI6ICJodHRwczovL2hlbG0ubmdjLm52aWRpYS5jb20vZXhhbXBsZS90ZWFt" + - "L2NoYXJ0cy9vcGVuYWktY29tcGF0aWJsZS0wLjEuMC50Z3oiLAogICJoZWxtQ2hhcnRTZXJ2aWNl" + - "TmFtZSI6ICJvcGVuYWktY29tcGF0aWJsZSIsCiAgIm1vZGVscyI6IFsKICAgIHsKICAgICAgIm5h" + - "bWUiOiAiPGNvbmZpcm1lZC1tb2RlbC1uYW1lPiIsCiAgICAgICJsbG1Db25maWciOiB7CiAgICAg" + - "ICAgInVyaXMiOiBbIi92MS9jaGF0L2NvbXBsZXRpb25zIiwgIi92MS9yZXNwb25zZXMiLCAiL3Yx" + - "L2VtYmVkZGluZ3MiXSwKICAgICAgICAicm91dGluZ01ldGhvZCI6ICJyb3VuZF9yb2JpbiIsCiAg" + - "ICAgICAgInRva2VuUmF0ZUxpbWl0IjogIjEwMDAtUyIKICAgICAgfQogICAgfQogIF0KfQpgYGAK" + - "CkVxdWl2YWxlbnQgQ0xJIGZsYWcgZm9ybToKCmBgYHNoCm52Y2YtY2xpIGZ1bmN0aW9uIGNyZWF0" + - "ZSBcCiAgLS1uYW1lPSI8Y29uZmlybWVkLWZ1bmN0aW9uLW5hbWU+IiBcCiAgLS1pbmZlcmVuY2Ut" + - "dXJsPS8gXAogIC0taW5mZXJlbmNlLXBvcnQ9ODAwMCBcCiAgLS1oZWFsdGgtdXJpPS9oZWFsdGgg" + - "XAogIC0taGVhbHRoLXBvcnQ9ODAwMCBcCiAgLS1oZWFsdGgtdGltZW91dD1QVDMwUyBcCiAgLS1o" + - "ZWFsdGgtcHJvdG9jb2w9SFRUUCBcCiAgLS1oZWFsdGgtZXhwZWN0ZWQtc3RhdHVzPTIwMCBcCiAg" + - "LS1mdW5jdGlvbi10eXBlPUxMTSBcCiAgLS1oZWxtLWNoYXJ0PWh0dHBzOi8vaGVsbS5uZ2MubnZp" + - "ZGlhLmNvbS9leGFtcGxlL3RlYW0vY2hhcnRzL29wZW5haS1jb21wYXRpYmxlLTAuMS4wLnRneiBc" + - "CiAgLS1oZWxtLWNoYXJ0LXNlcnZpY2U9b3BlbmFpLWNvbXBhdGlibGUgXAogIC0tbGxtLW1vZGVs" + - "PSduYW1lPTxjb25maXJtZWQtbW9kZWwtbmFtZT4sdXJpcz0vdjEvY2hhdC9jb21wbGV0aW9uc3wv" + - "djEvcmVzcG9uc2VzfC92MS9lbWJlZGRpbmdzLHJvdXRpbmdNZXRob2Q9cm91bmRfcm9iaW4sdG9r" + - "ZW5SYXRlTGltaXQ9MTAwMC1TJwpgYGAKCkRlcGxveSBpcyB1bmNoYW5nZWQuIFB1dCBjaGFydC1z" + - "cGVjaWZpYyB2YWx1ZXMgdW5kZXIgYGRlcGxveW1lbnRTcGVjaWZpY2F0aW9uc1tdLmNvbmZpZ3Vy" + - "YXRpb25gIG9ubHkgd2hlbiB0aGUgY2hhcnQgbmVlZHMgdmFsdWUgb3ZlcnJpZGVzOgoKYGBganNv" + - "bgp7CiAgImZ1bmN0aW9uSWQiOiAiPGZuX2lkPiIsCiAgInZlcnNpb25JZCI6ICI8dmVyX2lkPiIs" + - "CiAgImRlcGxveW1lbnRTcGVjaWZpY2F0aW9ucyI6IFt7CiAgICAiZ3B1IjogIkgxMDAiLAogICAg" + - "Imluc3RhbmNlVHlwZSI6ICJOQ1AuR1BVLkgxMDBfMXgiLAogICAgIm1pbkluc3RhbmNlcyI6IDEs" + - "CiAgICAibWF4SW5zdGFuY2VzIjogMSwKICAgICJtYXhSZXF1ZXN0Q29uY3VycmVuY3kiOiAxMCwK" + - "ICAgICJjb25maWd1cmF0aW9uIjogewogICAgICAic2VydmluZyI6IHsKICAgICAgICAidGVuc29y" + - "UGFyYWxsZWxTaXplIjogMQogICAgICB9CiAgICB9CiAgfV0KfQpgYGAKCkxMTSBHYXRld2F5IHJv" + - "dXRlcyByZXF1ZXN0cyBieSB0aGUgT3BlbkFJIGBtb2RlbGAgdmFsdWUuIFVzZSBgPGZ1bmN0aW9u" + - "LWlkPi88bW9kZWwtbmFtZT5gOiB0aGUgZnVuY3Rpb24gSUQgc2VsZWN0cyB0aGUgTlZDRiBmdW5j" + - "dGlvbiwgYW5kIHRoZSBtb2RlbCBuYW1lIGlzIGZvcndhcmRlZCB0byB0aGUgdXBzdHJlYW0gY29u" + - "dGFpbmVyIHRocm91Z2ggYHN0YXJnYXRlLWNsaWVudGAuCgpTdXBwb3J0ZWQgTExNIHBhdGhzOgoK" + - "fCBQYXRoIHwgTm90ZXMgfAp8IC0tLSB8IC0tLSB8CnwgYC92MS9jaGF0L2NvbXBsZXRpb25zYCB8" + - "IFN1cHBvcnRzIHN0cmVhbWluZyBhbmQgc2Vzc2lvbiBzdGlja2luZXNzLiB8CnwgYC92MS9yZXNw" + - "b25zZXNgIHwgTmF0aXZlIFJlc3BvbnNlcyBwcm94eSBwYXRoOyByZWxheXMgU1NFIGZvciBzdHJl" + - "YW1pbmcgY2xpZW50cyBhbmQgcmV0dXJucyB0ZXJtaW5hbCBKU09OIGZvciBub24tc3RyZWFtaW5n" + - "IGNsaWVudHMuIFN1cHBvcnRzIHNlc3Npb24gc3RpY2tpbmVzcy4gfAp8IGAvdjEvZW1iZWRkaW5n" + - "c2AgfCBBY2NlcHRzIHN0cmluZyBvciBzdHJpbmctYXJyYXkgYGlucHV0YDsgaW5wdXQgbXVzdCBi" + - "ZSBub24tZW1wdHkgYW5kIG1heSBjb250YWluIGF0IG1vc3QgMjA0OCBlbnRyaWVzLiBObyBzZXNz" + - "aW9uIHN0aWNraW5lc3MuIHwKCiMjIDIuIEZ1bmN0aW9uIERFUExPWQoKYGBganNvbgp7CiAgImZ1" + - "bmN0aW9uSWQiOiAiPGZuX2lkPiIsCiAgInZlcnNpb25JZCI6ICI8dmVyX2lkPiIsCiAgImRlcGxv" + - "eW1lbnRTcGVjaWZpY2F0aW9ucyI6IFt7CiAgICAiZ3B1IjogIkgxMDAiLAogICAgImluc3RhbmNl" + - "VHlwZSI6ICJOQ1AuR1BVLkgxMDBfMXgiLAogICAgIm1pbkluc3RhbmNlcyI6IDEsCiAgICAibWF4" + - "SW5zdGFuY2VzIjogMSwKICAgICJtYXhSZXF1ZXN0Q29uY3VycmVuY3kiOiAxMAogIH1dCn0KYGBg" + - "CgpOb3RlOiBgZ3B1YCBpcyB0aGUgR1BVICoqZmFtaWx5KiogKGUuZy4gYEgxMDBgKSwgYGluc3Rh" + - "bmNlVHlwZWAgaXMgdGhlIFNLVSAoZS5nLiBgTkNQLkdQVS5IMTAwXzF4YCkuIE1pc21hdGNoIHJl" + - "dHVybnMgSUNNUyA0MDAgIkludmFsaWQgR1BVIi4KCmBgYHNoCm52Y2YtY2xpIGZ1bmN0aW9uIGRl" + - "cGxveSBjcmVhdGUgLS1pbnB1dC1maWxlPWRlcGxveS1mbi5qc29uCmBgYAoKVGhpcyBjb21tYW5k" + - "ICoqYmxvY2tzKiogdW50aWwgdGhlIGRlcGxveW1lbnQgcmVhY2hlcyBBQ1RJVkUgKGRlZmF1bHQg" + - "OTAwcyB0aW1lb3V0KS4gV2hlbiBpdCByZXR1cm5zIHJjPTAsIGEgZnVuY3Rpb24gcG9kIGlzIHJ1" + - "bm5pbmcgaW4gdGhlIGBudmNmLWJhY2tlbmRgIG5hbWVzcGFjZSBvbiB0aGUgY29tcHV0ZS1wbGFu" + - "ZSBjbHVzdGVyLgoKIyMgMy4gTWludCBhbiBBUEkga2V5IHdpdGggYGludm9rZV9mdW5jdGlvbmAg" + - "c2NvcGUKCmBudmNmLWNsaSBpbml0YCdzIGFkbWluIHRva2VuIGRvZXMgTk9UIGNhcnJ5IHRoZSBg" + - "aW52b2tlX2Z1bmN0aW9uYCBzY29wZSDigJQgaW52b2tlIHdvdWxkIDQwMyB3aXRoICJtaXNzaW5n" + - "IHJlcXVlc3RlZCBhdXRob3JpdGllcyIuIE1pbnQgYW4gQVBJIGtleToKCmBgYHNoCm52Y2YtY2xp" + - "IGFwaS1rZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj0iPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1l" + - "PiBpbnZva2UiIC0tZXhwaXJlcy1pbj0xaAojIOKGkiBBUEkgS2V5OiBudmFwaS1udmNmLXN0Zy0u" + - "Li4KYGBgCgpUaGUga2V5IGlzIGF1dG9tYXRpY2FsbHkgc2F2ZWQgdG8gdGhlIENMSSBzdGF0ZSBm" + - "aWxlIGFuZCB1c2VkIGJ5IHRoZSBuZXh0IGBmdW5jdGlvbiBpbnZva2VgIGNhbGwuICoqRG9uJ3Qg" + - "ZWNobyB0aGUga2V5IGludG8gY2hhdCAvIGxvZ3MqKi4KCiMjIDQuIEZ1bmN0aW9uIElOVk9LRQoK" + - "YGBganNvbgp7CiAgImZ1bmN0aW9uSWQiOiAiPGZuX2lkPiIsCiAgInZlcnNpb25JZCI6ICI8dmVy" + - "X2lkPiIsCiAgInJlcXVlc3RCb2R5IjogeyJtZXNzYWdlIjogImhlbGxvIn0KfQpgYGAKCmBgYHNo" + - "Cm52Y2YtY2xpIGZ1bmN0aW9uIGludm9rZSAtLWlucHV0LWZpbGU9aW52b2tlLWZuLmpzb24KIyDi" + - "hpIgRnVuY3Rpb24gaW52b2NhdGlvbiBjb21wbGV0ZWQhCiMg4oaSIFN0YXR1czogZnVsZmlsbGVk" + - "CiMg4oaSIFJlcXVlc3QgSUQ6IC4uLgpgYGAKCkZvciBhbiBMTE0gZnVuY3Rpb24sIGludm9rZSB0" + - "aGUgT3BlbkFJLWNvbXBhdGlibGUgcm91dGUgYWZ0ZXIgZGVwbG95bWVudDoKCmBgYHNoCmN1cmwg" + - "LXNTIC1YIFBPU1QgImh0dHBzOi8vbGxtLmludm9jYXRpb24uPGRvbWFpbj4vdjEvY2hhdC9jb21w" + - "bGV0aW9ucyIgXAogIC1IICJBdXRob3JpemF0aW9uOiBCZWFyZXIgJHtOVkNGX0FQSV9LRVl9IiBc" + - "CiAgLUggIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgXAogIC1kICd7CiAgICAibW9k" + - "ZWwiOiAiPGZuX2lkPi88Y29uZmlybWVkLW1vZGVsLW5hbWU+IiwKICAgICJzdHJlYW0iOiB0cnVl" + - "LAogICAgIm1lc3NhZ2VzIjogWwogICAgICB7CiAgICAgICAgInJvbGUiOiAidXNlciIsCiAgICAg" + - "ICAgImNvbnRlbnQiOiAiSGVsbG8iCiAgICAgIH0KICAgIF0KICB9JwpgYGAKClRoZSBPcGVuQUkg" + - "YG1vZGVsYCB2YWx1ZSBtdXN0IGJlIGA8ZnVuY3Rpb24taWQ+Lzxtb2RlbC1uYW1lPmAgc28gdGhl" + - "IGdhdGV3YXkgY2FuIHNlbGVjdCB0aGUgZnVuY3Rpb24gYW5kIG1vZGVsLgoKUmVzcG9uc2VzIEFQ" + - "SSBleGFtcGxlOgoKYGBgc2gKY3VybCAtc1MgLVggUE9TVCAiaHR0cHM6Ly9sbG0uaW52b2NhdGlv" + - "bi48ZG9tYWluPi92MS9yZXNwb25zZXMiIFwKICAtSCAiQXV0aG9yaXphdGlvbjogQmVhcmVyICR7" + - "TlZDRl9BUElfS0VZfSIgXAogIC1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIFwK" + - "ICAtZCAnewogICAgIm1vZGVsIjogIjxmbl9pZD4vPGNvbmZpcm1lZC1tb2RlbC1uYW1lPiIsCiAg" + - "ICAiaW5wdXQiOiAiV3JpdGUgYSBvbmUgc2VudGVuY2Ugc3VtbWFyeSBvZiBOVkNGLiIKICB9Jwpg" + - "YGAKCkVtYmVkZGluZ3MgZXhhbXBsZToKCmBgYHNoCmN1cmwgLXNTIC1YIFBPU1QgImh0dHBzOi8v" + - "bGxtLmludm9jYXRpb24uPGRvbWFpbj4vdjEvZW1iZWRkaW5ncyIgXAogIC1IICJBdXRob3JpemF0" + - "aW9uOiBCZWFyZXIgJHtOVkNGX0FQSV9LRVl9IiBcCiAgLUggIkNvbnRlbnQtVHlwZTogYXBwbGlj" + - "YXRpb24vanNvbiIgXAogIC1kICd7CiAgICAibW9kZWwiOiAiPGZuX2lkPi88Y29uZmlybWVkLW1v" + - "ZGVsLW5hbWU+IiwKICAgICJpbnB1dCI6ICJOVkNGIGVtYmVkZGluZ3MgY2hlY2siCiAgfScKYGBg" + - "CgpJZiBzdGF0dXMgaXMgYGVycm9yZWRgLCBxdWVyeSBJQ01TIGZvciB0aGUgZGVwbG95bWVudCdz" + - "IHBvZCBsb2dzIChrdWJlY3RsIG9uIHRoZSBjb21wdXRlLXBsYW5lIGNsdXN0ZXIpIGFuZCBzdXJm" + - "YWNlIHRvIHRoZSB1c2VyLgoKIyMgNS4gQ2xlYW51cAoKV2hlbiB0aGUgdXNlciBpcyBkb25lIHdp" + - "dGggdGhlIHNtb2tlIHRlc3Q6CgpgYGBzaApudmNmLWNsaSBmdW5jdGlvbiBkZWxldGUgLS1mdW5j" + - "dGlvbi1pZD08Zm5faWQ+IC0tdmVyc2lvbi1pZD08dmVyX2lkPgpgYGAKCioqQ29uZmlybSB3aXRo" + - "IHRoZSB1c2VyIGJlZm9yZSBkZWxldGluZy4qKiBUaGlzIHJlbW92ZXMgYm90aCB0aGUgZGVwbG95" + - "bWVudCBhbmQgdGhlIGZ1bmN0aW9uIHJlY29yZC4KCiMjIE5vdGVzCgotIERlcGxveSB0aW1lcyBj" + - "YW4gdmFyeSB3aWRlbHkgZGVwZW5kaW5nIG9uIE5BVFMgc3RyZWFtLWluaXQgbGF0ZW5jeSBvbiBj" + - "b2xkLWNsdXN0ZXIgcnVucyAoMS03IG1pbnV0ZXMgb2JzZXJ2ZWQgaW4gZGV2LVZNIHRlc3RzKS4g" + - "QmUgcGF0aWVudDsgZG9uJ3Qga2lsbCB0aGUgYGZ1bmN0aW9uIGRlcGxveSBjcmVhdGVgIGNvbW1h" + - "bmQgZWFybHkuCi0gRm9yIGRpZmZlcmVudCBHUFUgZmFtaWxpZXMsIGNoYW5nZSBib3RoIGBncHVg" + - "IGFuZCBgaW5zdGFuY2VUeXBlYCB0b2dldGhlci4gQ29tbW9uIFNLVXM6IGBOQ1AuR1BVLkgxMDBf" + - "MXhgLCBgTkNQLkdQVS5IMTAwXzJ4YCwgYE5DUC5HUFUuQTEwMF8xeGAuCi0gVGhlIGZ1bmN0aW9u" + - "J3MgY29udGFpbmVyIGltYWdlIG11c3QgYmUgcHVsbGFibGUgZnJvbSB0aGUgY29tcHV0ZS1wbGFu" + - "ZSBjbHVzdGVyJ3MgaW1hZ2UtY3JlZGVudGlhbC1oZWxwZXIgY29uZmlnIChjaGVjayBga3ViZWN0" + - "bCBkZXNjcmliZSBwb2QgLW4gbnZjZi1iYWNrZW5kYCBpZiBwb2RzIGxhbmQgaW4gYEltYWdlUHVs" + - "bEJhY2tPZmZgKS4KUEsHCNJD3AQYJQAAGCUAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAPQAJ" + - "AGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvZGlhZ25vc2UtZmFpbGVkLWluc3Rh" + - "bGwubWRVVAUAAQCmzhIjIERpYWdub3NlIGEgZmFpbGVkIHNlbGYtaG9zdGVkIE5WQ0YgaW5zdGFs" + - "bAoKVXNlciBzYXlzICJteSBpbnN0YWxsIGZhaWxlZCIgb3IgIlggaXNuJ3Qgd29ya2luZyIuIERv" + - "bid0IGd1ZXNzIOKAlCBxdWVyeSB0aGUgY2x1c3Rlci4KCiMjIDEuIEdldCB0aGUgdmVyZGljdAoK" + - "YGBgc2gKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzIC0tanNvbiB8IGpxIC1jIC4KYGBgCgpU" + - "aGUgZmlyc3QgZXZlbnQgaXMgdGhlIHNuYXBzaG90LiBQYXJzZSBgLnZlcmRpY3RgOgoKLSAqKmBo" + - "ZWFsdGh5YCoqIOKAlCBub3RoaW5nJ3Mgd3JvbmcuIEFzayB0aGUgdXNlciB3aGF0IHRoZXkncmUg" + - "YWN0dWFsbHkgc2VlaW5nOyB0aGVpciBwcm9ibGVtIG1heSBiZSBhdCBhIGRpZmZlcmVudCBsYXll" + - "ciAoZnVuY3Rpb24gZGVwbG95LCBuZXR3b3JrLCBldGMuKS4KLSAqKmBkZWdyYWRlZGAqKiDigJQg" + - "YXQgbGVhc3Qgb25lIGNvbXBvbmVudCBub3QgcmVhZHkuIFRoZSBDb21wb25lbnRzIGxpc3Qgd2ls" + - "bCBpZGVudGlmeSB3aGljaC4gTW9zdCBjb21tb246IGBjYXNzYW5kcmFgIFBvZEluaXRpYWxpemlu" + - "ZywgYG9wZW5iYW9gIG5vdCB1bnNlYWxlZCwgYHNpc2AgSW1hZ2VQdWxsQmFja09mZi4KLSAqKmBm" + - "YWlsZWRgKiog4oCUIE5WQ0ZCYWNrZW5kIGBIZWFsdGg9RmFpbGVkYC4gUmVhZCB0aGUgY2x1c3Rl" + - "cidzIE5WQ0ZCYWNrZW5kIHN0YXR1cyBjb25kaXRpb24gbWVzc2FnZS4KLSAqKmB1bmtub3duYCoq" + - "IOKAlCBJQ01TIHVucmVhY2hhYmxlLiBUaGUgY29udHJvbCBwbGFuZSBpdHNlbGYgbWF5IGJlIGRv" + - "d247IGNoZWNrIGBrdWJlY3RsIGdldCBwb2RzIC1uIHNpc2AgZGlyZWN0bHkuCgojIyAyLiBEcmls" + - "bCBpbnRvIHRoZSBmYWlsaW5nIGNvbXBvbmVudAoKRm9yIGVhY2ggbm9uLXJlYWR5IGNvbXBvbmVu" + - "dCwgdGhlIHNuYXBzaG90IGluY2x1ZGVzIGEgYG1lc3NhZ2VgIChlLmcuIGBjYXNzYW5kcmEtMCBQ" + - "b2RJbml0aWFsaXppbmcgNm0yM3NgKS4gQXNrIHRoZSB1c2VyIHRvIHJ1bjoKCmBgYHNoCmt1YmVj" + - "dGwgZGVzY3JpYmUgcG9kIC1uIDxucz4gPHBvZD4Ka3ViZWN0bCBsb2dzIC1uIDxucz4gPHBvZD4g" + - "LS1hbGwtY29udGFpbmVycyAtLXRhaWw9MTAwCmBgYAoKU3VyZmFjZSB0aGUgZXZlbnRzICsgbGFz" + - "dCBsb2cgbGluZXMuIERvbid0IHByb3Bvc2UgYGt1YmVjdGwgZGVsZXRlIHBvZGAgdW5sZXNzIHRo" + - "ZSB1c2VyIGNvbmZpcm1zIOKAlCBDYXNzYW5kcmEgcmVzdGFydCBsb3NlcyBhbnkgaW4tcHJvZ3Jl" + - "c3MgbWlncmF0aW9uLgoKIyMgMy4gQ29tbW9uIHBhdHRlcm5zCgp8IFN5bXB0b20gfCBMaWtlbHkg" + - "Y2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBgY2Fzc2FuZHJhLTAgUG9kSW5p" + - "dGlhbGl6aW5nYCBmb3IgPjUgbWluIHwgU3RvcmFnZUNsYXNzIG1pc3Npbmcgb3IgUFYgc3R1Y2sg" + - "YFBlbmRpbmdgIHwgYGt1YmVjdGwgZ2V0IHB2LHB2YyAtQWAg4oCUIGNvbmZpcm0gYSBkZWZhdWx0" + - "IFN0b3JhZ2VDbGFzcyBleGlzdHMuIExvY2FsIGRldjogYGt1YmVjdGwgcGF0Y2ggc3RvcmFnZWNs" + - "YXNzIGxvY2FsLXBhdGggLXAgJ3sibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsic3RvcmFnZWNs" + - "YXNzLmt1YmVybmV0ZXMuaW8vaXMtZGVmYXVsdC1jbGFzcyI6InRydWUifX19J2AgfAp8IGBoZWxt" + - "IGluc3RhbGwgLi4uOiB0aW1lZCBvdXQgd2FpdGluZyBmb3IgY2Fzc2FuZHJhIHRvIGJlY29tZSBh" + - "dmFpbGFibGVgIHwgU2FtZSBhcyBhYm92ZSB8IFNhbWUgfAp8IGBHYXRld2F5IEFQSSBDUkRzIG5v" + - "dCBpbnN0YWxsZWRgIChwcmVmbGlnaHQpIHwgTXVsdGktY2x1c3RlciBgbnZjZi1nYXRld2F5LXJv" + - "dXRlc2AgY2hhcnQgbmVlZHMgZW52b3ktZ2F0ZXdheSBwcmVyZXF1aXNpdGUgfCBJbnN0YWxsIGVu" + - "dm95LWdhdGV3YXk6IGBoZWxtIGluc3RhbGwgZWcgb2NpOi8vZG9ja2VyLmlvL2Vudm95cHJveHkv" + - "Z2F0ZXdheS1oZWxtIC0tbmFtZXNwYWNlPWVudm95LWdhdGV3YXktc3lzdGVtIC0tY3JlYXRlLW5h" + - "bWVzcGFjZWAgfAp8IGBObyBjbHVzdGVyIGZvdW5kIHdpdGggdmFsaWQgSldLUyBmb3IgY2x1c3Rl" + - "ciBJRDogPGlkPmAgKE5WQ0EgYWdlbnQpIHwgQ29tcHV0ZSBwbGFuZSdzIFBTQVQgd2FzIGlzc3Vl" + - "ZCBieSBhIEs4cyBzZXJ2ZXIgd2hvc2UgSldLUyBkb2Vzbid0IG1hdGNoIHdoYXQncyBzdG9yZWQg" + - "aW4gSUNNUyB8IFJlLXJlZ2lzdGVyOiBgbnZjZi1jbGkgY2x1c3RlciByb3RhdGUgLS1jbHVzdGVy" + - "LWlkPTxpZD5gIGZyb20gYSBjb250ZXh0IHRoYXQgY2FuIHJlYWNoIHRoZSBjb21wdXRlIHBsYW5l" + - "J3MgSzhzIEFQSSB8CnwgYFNpZ25lZCBKV1QgcmVqZWN0ZWQ6IEFub3RoZXIgYWxnb3JpdGhtIGV4" + - "cGVjdGVkLCBvciBubyBtYXRjaGluZyBrZXkocykgZm91bmRgIChpbml0IC8gY2x1c3RlciByZWdp" + - "c3RlcikgfCBTdGFsZSBzZXNzaW9uLmpzb24gZnJvbSBhIGRpZmZlcmVudCBjb250cm9sIHBsYW5l" + - "IHwgYHJtIH4vLm52Y2YtY2xpLnN0YXRlYCB0aGVuIGBudmNmLWNsaSBpbml0YCBhZ2FpbiB8Cnwg" + - "YG52Y2Etb3BlcmF0b3JgIEltYWdlUHVsbEJhY2tPZmYgZm9yIGBudmNhLW9wZXJhdG9yOnBzYXRg" + - "IHwgSW1hZ2Ugbm90IGluIGNsdXN0ZXIgKG11bHRpLWNsdXN0ZXIgdG9wb2xvZ3kgYnVpbGRzIGl0" + - "IGxvY2FsbHkpIHwgYGszZCBpbWFnZSBpbXBvcnQgbnZjci5pby8uLi4vbnZjYS1vcGVyYXRvcjpw" + - "c2F0IC1jIDxjbHVzdGVyPmAgKG9yIHdoYXRldmVyIHlvdXIgaW1hZ2UgcHVzaCBwYXRoIGlzKSB8" + - "CnwgYHJlcXVpcmVkRW52ICJOQ0FfSUQiIGlzIG5vdCBzZXRgIChoZWxtZmlsZSBlcnJvcikgfCBP" + - "bGRlciBudmNmLWNsaTsgdGhlIGVudiBwcm9wYWdhdGlvbiBmaXggbGFuZGVkIGluIE0rNSBmb2xs" + - "b3ctdXBzIHwgVXBncmFkZSBgbnZjZi1jbGlgIHRvIGEgdmVyc2lvbiBhZnRlciBgNmFhNTcwNGAg" + - "fAoKIyMgNC4gV2hlbiB0aGUgdXNlciB3YW50cyB0byBzdGFydCBvdmVyCgpJZiB0aGV5IGNvbmZp" + - "cm0gYSB0ZWFyZG93bjoKCi0gU2luZ2xlLWNsdXN0ZXI6IGBjZCBudmNmLXNlbGYtbWFuYWdlZC1z" + - "dGFjayAmJiBtYWtlIGRlc3Ryb3lgIChvciBgaGVsbSB1bmluc3RhbGxgIHBlciByZWxlYXNlIGlu" + - "IHJldmVyc2Ugb3JkZXIpLgotIE11bHRpLWNsdXN0ZXI6IGBoZWxtIHVuaW5zdGFsbCBudmNhLW9w" + - "ZXJhdG9yIC1uIG52Y2Etb3BlcmF0b3JgIG9uIHRoZSBjb21wdXRlIHBsYW5lIEZJUlNUOyB0aGVu" + - "IGNvbnRyb2wgcGxhbmU7IHRoZW4gYG52Y2YtY2xpIGNsdXN0ZXIgZGVsZXRlIC0tY2x1c3Rlci1p" + - "ZD08aWQ+YCB0byByZW1vdmUgdGhlIElDTVMgcm93LgoKQWx3YXlzIGNvbmZpcm0gYmVmb3JlIGFu" + - "eSB0ZWFyZG93biDigJQgQ2Fzc2FuZHJhIFN0YXRlZnVsU2V0IFBWQyBkZWxldGlvbiBpcyBkZXN0" + - "cnVjdGl2ZSBhbmQgbG9zZXMgY2x1c3Rlcl9vaWRjIHJvd3MuCgojIyBXaGF0IG5vdCB0byBkbwoK" + - "LSAqKkRvbid0IHByb3Bvc2UgYC0tZGVidWdgIGFzIGEgZml4LioqIEl0J3MgZGlhZ25vc3RpYyBv" + - "bmx5LgotICoqRG9uJ3QgcHJvcG9zZSBgaGVsbSB1bmluc3RhbGxgKiogdW5sZXNzIHRoZSB1c2Vy" + - "IGV4cGxpY2l0bHkgYXNrZWQgdG8gc3RhcnQgb3Zlci4KLSAqKkRvbid0IHByb3Bvc2UgYGt1YmVj" + - "dGwgZGVsZXRlIHB2Y2AqKiBldmVyIHdpdGhvdXQgY29uZmlybWF0aW9uIOKAlCBpdCBkZWxldGVz" + - "IHRoZSB1bmRlcmx5aW5nIFBWLgotICoqRG9uJ3QgcmUtcnVuIGB1cGAgd2l0aCBkaWZmZXJlbnQg" + - "aW5wdXRzKiogdG8gInNlZSB3aGF0IGhhcHBlbnMiLiBEaWFnbm9zZSB3aXRoIGBzdGF0dXNgIC8g" + - "YGt1YmVjdGwgZGVzY3JpYmVgIGZpcnN0LgpQSwcIcpIsJr4OAAC+DgAAUEsDBBQACAAAAAAAIQAA" + - "AAAAAAAAAAAAAAA6AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9pbnN0YWxs" + - "LWZyb20tc2NyYXRjaC5tZFVUBQABAKbOEiMgSW5zdGFsbCBzZWxmLWhvc3RlZCBOVkNGIGZyb20g" + - "c2NyYXRjaAoKVXNlciB3YW50cyB0byBicmluZyB1cCBzZWxmLWhvc3RlZCBOVkNGIG9uIGEgZnJl" + - "c2ggS3ViZXJuZXRlcyBjbHVzdGVyIChvciBrM2QgZm9yIGxvY2FsIGRldikuIFRoaXMgaXMgdGhl" + - "IG1vc3QgY29tbW9uIGVudHJ5cG9pbnQuCgojIyBTdGVwcwoKMS4gQ29uZmlybSB0aGUgdG9wb2xv" + - "Z3kuIEFzayB0aGUgdXNlcjoKICAgLSAiU2luZ2xlLWNsdXN0ZXIgKGNvbnRyb2wgcGxhbmUgYW5k" + - "IGNvbXB1dGUgcGxhbmUgb24gb25lIGNsdXN0ZXIsIHNpbXBsZXIpIG9yIHNwbGl0IChjb250cm9s" + - "IHBsYW5lIG9uIGNsdXN0ZXIgQSwgY29tcHV0ZSBwbGFuZSBvbiBjbHVzdGVyIEIsIHByb2R1Y3Rp" + - "b24tc2hhcGVkKT8iCiAgIC0gIldoYXQncyB0aGUgY2x1c3RlciBuYW1lICh0aGUgYC0tY2x1c3Rl" + - "ci1uYW1lYCBmbGFnLCBiZWNvbWVzIHRoZSBJQ01TIHJvdyBpZGVudGlmaWVyKT8gRXhhbXBsZXM6" + - "IGBuY3AtbG9jYWxgIGZvciBsb2NhbCBkZXYsIGBwcm9kLXVzLWVhc3QtMWAgZm9yIHByb2R1Y3Rp" + - "b24uIgogICAtIEZvciBzcGxpdDogIkNvbnRyb2wtcGxhbmUga3ViZWNvbmZpZyBjb250ZXh0IG5h" + - "bWU/IENvbXB1dGUtcGxhbmUgY29udGV4dD8gUHVibGljIElDTVMgVVJMPyIKCjIuIFByZXBhcmUg" + - "cmVtb3RlIEdhdGV3YXkgYW5kIENMSSBjb25maWcgaWYgdGhpcyBpcyBub3QgbG9jYWwgazNkLiBP" + - "bmUtY2xpY2sKICAgYXBwbGllcyB0aGUgY29udHJvbCBwbGFuZSwgdGhlbiBpbW1lZGlhdGVseSBj" + - "YWxscyBBUEksIEFQSSBLZXlzLCBpbnZvY2F0aW9uLAogICBhbmQgZ1JQQyBlbmRwb2ludHMuIEZv" + - "ciByZW1vdGUgY2x1c3RlcnMsIHRoZSBHYXRld2F5IG11c3QgYmUgcHJvZ3JhbW1lZCBhbmQKICAg" + - "dGhlIENMSSBjb25maWcgbXVzdCBwb2ludCBhdCB0aGUgR2F0ZXdheSBsb2FkIGJhbGFuY2VyIGJl" + - "Zm9yZSBgdXBgIHJ1bnMuCgogICBJZiBHYXRld2F5IEFQSSBpbmdyZXNzIGlzIG5vdCBhbHJlYWR5" + - "IHByZXNlbnQsIGNyZWF0ZSBpdCBmaXJzdC4gVGhlc2UgYXJlIHRoZQogICBzaGFyZWQgR2F0ZXdh" + - "eSBzZXR1cCBzdGVwcyB1c2VkIGJ5IG9uZS1jbGljaywgSGVsbWZpbGUsIGFuZCBzdGFuZGFsb25l" + - "IGNoYXJ0CiAgIGluc3RhbGwgcGF0aHM6CgogICBgYGBzaAogICBrdWJlY3RsIGFwcGx5IC1mIGh0" + - "dHBzOi8vZ2l0aHViLmNvbS9rdWJlcm5ldGVzLXNpZ3MvZ2F0ZXdheS1hcGkvcmVsZWFzZXMvZG93" + - "bmxvYWQvdjEuMi4wL2V4cGVyaW1lbnRhbC1pbnN0YWxsLnlhbWwKCiAgIGZvciBuYW1lc3BhY2Ug" + - "aW4gZW52b3ktZ2F0ZXdheS1zeXN0ZW0gZW52b3ktZ2F0ZXdheSBhcGkta2V5cyBlc3Mgc2lzIG52" + - "Y2Y7IGRvCiAgICAga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlICIkbmFtZXNwYWNlIiAtLWRyeS1y" + - "dW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KICAgZG9uZQoKICAgZm9yIG5h" + - "bWVzcGFjZSBpbiBlbnZveS1nYXRld2F5IGFwaS1rZXlzIGVzcyBzaXMgbnZjZjsgZG8KICAgICBr" + - "dWJlY3RsIGxhYmVsIG5hbWVzcGFjZSAiJG5hbWVzcGFjZSIgbnZjZi9wbGF0Zm9ybT10cnVlIC0t" + - "b3ZlcndyaXRlCiAgIGRvbmUKCiAgIGhlbG0gdXBncmFkZSAtLWluc3RhbGwgZWcgb2NpOi8vZG9j" + - "a2VyLmlvL2Vudm95cHJveHkvZ2F0ZXdheS1oZWxtIFwKICAgICAtLXZlcnNpb24gdjEuMS4zIFwK" + - "ICAgICAtbiBlbnZveS1nYXRld2F5LXN5c3RlbQogICBgYGAKCiAgIEJlZm9yZSBhcHBseWluZyB0" + - "aGUgYEVudm95UHJveHlgLCBkZXRlcm1pbmUgd2hpY2ggU2VydmljZSBjb250cm9sbGVyIG93bnMK" + - "ICAgbG9hZCBiYWxhbmNlcnMgb24gRUtTLiBEbyBub3QgYXBwbHkgdGhlIG1hbmlmZXN0IHVudGls" + - "IHlvdSBoYXZlIHNlbGVjdGVkIHRoZQogICBtYXRjaGluZyBgZW52b3lTZXJ2aWNlYCBjb25maWd1" + - "cmF0aW9uLiBVc2UgdGhlIEVLUyBBUEkgYW5kIHRoZSBpbi1jbHVzdGVyCiAgIGNvbnRyb2xsZXIg" + - "RGVwbG95bWVudCBpbnN0ZWFkIG9mIGd1ZXNzaW5nIGZyb20gdGhlIGNsdXN0ZXIgYWdlIG9yIGV4" + - "aXN0aW5nCiAgIFNlcnZpY2VzOgoKICAgYGBgc2gKICAgZXhwb3J0IEVLU19DTFVTVEVSX05BTUU9" + - "IjxjbHVzdGVyLW5hbWU+IgoKICAgYXdzIGVrcyBkZXNjcmliZS1jbHVzdGVyIC0tbmFtZSAiJEVL" + - "U19DTFVTVEVSX05BTUUiIFwKICAgICAtLXF1ZXJ5ICdjbHVzdGVyLmt1YmVybmV0ZXNOZXR3b3Jr" + - "Q29uZmlnLmVsYXN0aWNMb2FkQmFsYW5jaW5nLmVuYWJsZWQnIFwKICAgICAtLW91dHB1dCB0ZXh0" + - "CiAgIGt1YmVjdGwgLW4ga3ViZS1zeXN0ZW0gZ2V0IGRlcGxveW1lbnQgYXdzLWxvYWQtYmFsYW5j" + - "ZXItY29udHJvbGxlcgogICBgYGAKCiAgIEFuIEVLUyBBUEkgcmVzdWx0IG9mIGBUcnVlYCBzZWxl" + - "Y3RzCiAgIFtFS1MgQXV0byBNb2RlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZWtzL2xh" + - "dGVzdC91c2VyZ3VpZGUvYXV0by1jb25maWd1cmUtbmxiLmh0bWwpLgogICBPdGhlcndpc2UsIGEg" + - "c3VjY2Vzc2Z1bCBEZXBsb3ltZW50IGxvb2t1cCBzZWxlY3RzIHRoZSBBV1MgTG9hZCBCYWxhbmNl" + - "cgogICBDb250cm9sbGVyLiBJZiBuZWl0aGVyIGlzIHByZXNlbnQsIGNvbmZpcm0gdGhhdCB0aGUg" + - "Y2x1c3RlciBpbnRlbnRpb25hbGx5CiAgIHVzZXMgdGhlIGxlZ2FjeSBBV1MgY2xvdWQgcHJvdmlk" + - "ZXIgU2VydmljZSBjb250cm9sbGVyLCBvciBpbnN0YWxsIHRoZSBBV1MKICAgTG9hZCBCYWxhbmNl" + - "ciBDb250cm9sbGVyLCBiZWZvcmUgYXBwbHlpbmcgdGhlIGV4YW1wbGUuCgogICBUaGUgYXBwbGll" + - "ZCBtYW5pZmVzdCBiZWxvdyBpcyBmb3IgdGhlIEFXUyBMb2FkIEJhbGFuY2VyIENvbnRyb2xsZXIu" + - "IEZvciBFS1MKICAgQXV0byBNb2RlLCByZXBsYWNlIGl0cyBgZW52b3lTZXJ2aWNlYCBtYXAgYmVm" + - "b3JlIGFwcGx5aW5nIGl0IHdpdGg6CgogICBgYGB5YW1sCiAgIGVudm95U2VydmljZToKICAgICBs" + - "b2FkQmFsYW5jZXJDbGFzczogZWtzLmFtYXpvbmF3cy5jb20vbmxiCiAgICAgYW5ub3RhdGlvbnM6" + - "CiAgICAgICBzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1iYWxhbmNlci1zY2hl" + - "bWU6ICJpbnRlcm5ldC1mYWNpbmciCiAgIGBgYAoKICAgRm9yIHRoZSBsZWdhY3kgQVdTIGNsb3Vk" + - "IHByb3ZpZGVyIFNlcnZpY2UgY29udHJvbGxlciwgcmVwbGFjZSB0aGUgbWFwIHdpdGg6CgogICBg" + - "YGB5YW1sCiAgIGVudm95U2VydmljZToKICAgICBhbm5vdGF0aW9uczoKICAgICAgIHNlcnZpY2Uu" + - "YmV0YS5rdWJlcm5ldGVzLmlvL2F3cy1sb2FkLWJhbGFuY2VyLXR5cGU6ICJubGIiCiAgIGBgYAoK" + - "ICAgVGhlIGxlZ2FjeSBjb250cm9sbGVyIGNyZWF0ZXMgYW4gaW50ZXJuZXQtZmFjaW5nIGxvYWQg" + - "YmFsYW5jZXIgYnkgZGVmYXVsdC4KICAgRG8gbm90IGNvbWJpbmUgdGhlIGxlZ2FjeSBgbmxiYCBz" + - "ZWxlY3RvciB3aXRoIHRoZSBBV1MgTG9hZCBCYWxhbmNlcgogICBDb250cm9sbGVyIHRhcmdldCB0" + - "eXBlIGFuZCBzY2hlbWUgYW5ub3RhdGlvbnMuIEl0IHN1cHBvcnRzIGFuIE5MQiBTZXJ2aWNlCiAg" + - "IHdob3NlIHBvcnRzIHVzZSBvbmx5IFRDUCBvciBvbmx5IFVEUCwgYnV0IHJlamVjdHMgb25lIFNl" + - "cnZpY2UgdGhhdCBjb21iaW5lcwogICBUQ1AgYW5kIFVEUCBwb3J0cy4gVXNlIHRoZSBBV1MgTG9h" + - "ZCBCYWxhbmNlciBDb250cm9sbGVyIHdoZW4gdGhlIGdlbmVyYXRlZAogICBFbnZveSBTZXJ2aWNl" + - "IGNvbWJpbmVzIHByb3RvY29scy4gT24gbm9uLUFXUyBjbHVzdGVycywgcmVwbGFjZSB0aGUgbWFw" + - "IHdpdGgKICAgdGhlIHByb3ZpZGVyJ3MgU2VydmljZSBjb25maWd1cmF0aW9uIGJlZm9yZSBhcHBs" + - "eWluZyBpdC4KCiAgIGBgYHNoCiAgICMgTm9uLUVLUy1BdXRvLU1vZGUgZXhhbXBsZTogdXNlIEFX" + - "UyBMQkMgd2l0aCBpbnN0YW5jZSB0YXJnZXRzLgogICBrdWJlY3RsIGFwcGx5IC1mIC0gPDxFT0YK" + - "ICAgYXBpVmVyc2lvbjogZ2F0ZXdheS5lbnZveXByb3h5LmlvL3YxYWxwaGExCiAgIGtpbmQ6IEVu" + - "dm95UHJveHkKICAgbWV0YWRhdGE6CiAgICAgbmFtZTogZWcKICAgICBuYW1lc3BhY2U6IGVudm95" + - "LWdhdGV3YXktc3lzdGVtCiAgIHNwZWM6CiAgICAgcHJvdmlkZXI6CiAgICAgICB0eXBlOiBLdWJl" + - "cm5ldGVzCiAgICAgICBrdWJlcm5ldGVzOgogICAgICAgICBlbnZveVNlcnZpY2U6CiAgICAgICAg" + - "ICAgYW5ub3RhdGlvbnM6CiAgICAgICAgICAgICBzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9h" + - "d3MtbG9hZC1iYWxhbmNlci10eXBlOiAiZXh0ZXJuYWwiCiAgICAgICAgICAgICBzZXJ2aWNlLmJl" + - "dGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1iYWxhbmNlci1ubGItdGFyZ2V0LXR5cGU6ICJpbnN0" + - "YW5jZSIKICAgICAgICAgICAgIHNlcnZpY2UuYmV0YS5rdWJlcm5ldGVzLmlvL2F3cy1sb2FkLWJh" + - "bGFuY2VyLXNjaGVtZTogImludGVybmV0LWZhY2luZyIKICAgLS0tCiAgIGFwaVZlcnNpb246IGdh" + - "dGV3YXkubmV0d29ya2luZy5rOHMuaW8vdjEKICAga2luZDogR2F0ZXdheUNsYXNzCiAgIG1ldGFk" + - "YXRhOgogICAgIG5hbWU6IGVnCiAgIHNwZWM6CiAgICAgY29udHJvbGxlck5hbWU6IGdhdGV3YXku" + - "ZW52b3lwcm94eS5pby9nYXRld2F5Y2xhc3MtY29udHJvbGxlcgogICAgIHBhcmFtZXRlcnNSZWY6" + - "CiAgICAgICBncm91cDogZ2F0ZXdheS5lbnZveXByb3h5LmlvCiAgICAgICBraW5kOiBFbnZveVBy" + - "b3h5CiAgICAgICBuYW1lOiBlZwogICAgICAgbmFtZXNwYWNlOiBlbnZveS1nYXRld2F5LXN5c3Rl" + - "bQogICBFT0YKCiAgIGt1YmVjdGwgYXBwbHkgLWYgLSA8PEVPRgogICBhcGlWZXJzaW9uOiBnYXRl" + - "d2F5Lm5ldHdvcmtpbmcuazhzLmlvL3YxCiAgIGtpbmQ6IEdhdGV3YXkKICAgbWV0YWRhdGE6CiAg" + - "ICAgbmFtZTogbnZjZi1nYXRld2F5CiAgICAgbmFtZXNwYWNlOiBlbnZveS1nYXRld2F5CiAgIHNw" + - "ZWM6CiAgICAgZ2F0ZXdheUNsYXNzTmFtZTogZWcKICAgICBsaXN0ZW5lcnM6CiAgICAgLSBuYW1l" + - "OiBodHRwCiAgICAgICBwcm90b2NvbDogSFRUUAogICAgICAgcG9ydDogODAKICAgICAgIGFsbG93" + - "ZWRSb3V0ZXM6CiAgICAgICAgIG5hbWVzcGFjZXM6CiAgICAgICAgICAgZnJvbTogU2VsZWN0b3IK" + - "ICAgICAgICAgICBzZWxlY3RvcjoKICAgICAgICAgICAgIG1hdGNoTGFiZWxzOgogICAgICAgICAg" + - "ICAgICBudmNmL3BsYXRmb3JtOiAidHJ1ZSIKICAgICAtIG5hbWU6IHRjcAogICAgICAgcHJvdG9j" + - "b2w6IFRDUAogICAgICAgcG9ydDogMTAwODEKICAgICAgIGFsbG93ZWRSb3V0ZXM6CiAgICAgICAg" + - "IG5hbWVzcGFjZXM6CiAgICAgICAgICAgZnJvbTogU2VsZWN0b3IKICAgICAgICAgICBzZWxlY3Rv" + - "cjoKICAgICAgICAgICAgIG1hdGNoTGFiZWxzOgogICAgICAgICAgICAgICBudmNmL3BsYXRmb3Jt" + - "OiAidHJ1ZSIKICAgRU9GCiAgIGBgYAoKICAgU2VydmljZSBhbm5vdGF0aW9ucyBtdXN0IGJlIHVu" + - "ZGVyCiAgIGBFbnZveVByb3h5LnNwZWMucHJvdmlkZXIua3ViZXJuZXRlcy5lbnZveVNlcnZpY2Uu" + - "YW5ub3RhdGlvbnNgLiBFbnZveSBHYXRld2F5CiAgIGNvcGllcyB0aGVtIHRvIHRoZSBnZW5lcmF0" + - "ZWQgRW52b3kgU2VydmljZS4gRG8gbm90IHB1dCBTZXJ2aWNlIGFubm90YXRpb25zCiAgIG9uIHRo" + - "ZSBgR2F0ZXdheWAgcmVzb3VyY2UuCgogICBDYXB0dXJlIHRoZSBHYXRld2F5IHZhbHVlcyBhbmQg" + - "d3JpdGUgdGhlIENMSSBjb25maWc6CgogICBgYGBzaAogICBleHBvcnQgQ0xVU1RFUl9OQU1FPSJu" + - "dmNmLXJlbW90ZSIKICAgZXhwb3J0IE5DQV9JRD0ibnZjZi1kZWZhdWx0IgogICBleHBvcnQgUkVH" + - "SU9OPSJ1cy13ZXN0LTEiCiAgIGV4cG9ydCBIVFRQX0dBVEVXQVlfTkFNRVNQQUNFPSJlbnZveS1n" + - "YXRld2F5IgogICBleHBvcnQgSFRUUF9HQVRFV0FZX05BTUU9Im52Y2YtZ2F0ZXdheSIKICAgZXhw" + - "b3J0IEdSUENfR0FURVdBWV9OQU1FU1BBQ0U9ImVudm95LWdhdGV3YXkiCiAgIGV4cG9ydCBHUlBD" + - "X0dBVEVXQVlfTkFNRT0ibnZjZi1nYXRld2F5IgoKICAga3ViZWN0bCAtbiAiJEhUVFBfR0FURVdB" + - "WV9OQU1FU1BBQ0UiIHdhaXQgImdhdGV3YXkvJEhUVFBfR0FURVdBWV9OQU1FIiBcCiAgICAgLS1m" + - "b3I9Y29uZGl0aW9uPVByb2dyYW1tZWQ9VHJ1ZSAtLXRpbWVvdXQ9MTBtCiAgIGt1YmVjdGwgLW4g" + - "IiRHUlBDX0dBVEVXQVlfTkFNRVNQQUNFIiB3YWl0ICJnYXRld2F5LyRHUlBDX0dBVEVXQVlfTkFN" + - "RSIgXAogICAgIC0tZm9yPWNvbmRpdGlvbj1Qcm9ncmFtbWVkPVRydWUgLS10aW1lb3V0PTEwbQoK" + - "ICAgZXhwb3J0IEdBVEVXQVlfQUREUj0iJChrdWJlY3RsIC1uICIkSFRUUF9HQVRFV0FZX05BTUVT" + - "UEFDRSIgZ2V0ICJnYXRld2F5LyRIVFRQX0dBVEVXQVlfTkFNRSIgXAogICAgIC1vIGpzb25wYXRo" + - "PSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFsdWV9JykiCiAgIGV4cG9ydCBHUlBDX0dBVEVXQVlf" + - "QUREUj0iJChrdWJlY3RsIC1uICIkR1JQQ19HQVRFV0FZX05BTUVTUEFDRSIgZ2V0ICJnYXRld2F5" + - "LyRHUlBDX0dBVEVXQVlfTkFNRSIgXAogICAgIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNz" + - "ZXNbMF0udmFsdWV9JykiCiAgIHRlc3QgLW4gIiRHQVRFV0FZX0FERFIiIHx8IGV4aXQgMQogICB0" + - "ZXN0IC1uICIkR1JQQ19HQVRFV0FZX0FERFIiIHx8IGV4aXQgMQogICBleHBvcnQgU1RBQ0tfRE9N" + - "QUlOPSIkR0FURVdBWV9BRERSIgogICBgYGAKCiAgIFNldCBgU1RBQ0tfRE9NQUlOYCB0byB0aGUg" + - "aG9zdG5hbWUgc3VmZml4IHVzZWQgYnkgdGhlIGluc3RhbGxlZCBIVFRQUm91dGVzLgogICBGb3Ig" + - "cmVtb3RlIHRlc3QgZmxvd3Mgd2l0aG91dCBwcm9kdWN0aW9uIEROUywgdXNlIHRoZSBHYXRld2F5" + - "IGxvYWQgYmFsYW5jZXIKICAgYWRkcmVzcy4KCiAgIGBgYHNoCiAgIGNhdCA+IC5udmNmLWNsaS55" + - "YW1sIDw8RU9GCiAgIGJhc2VfaHR0cF91cmw6ICJodHRwOi8vJHtHQVRFV0FZX0FERFJ9IgogICBp" + - "bnZva2VfdXJsOiAiaHR0cDovLyR7R0FURVdBWV9BRERSfSIKICAgYmFzZV9ncnBjX3VybDogIiR7" + - "R1JQQ19HQVRFV0FZX0FERFJ9OjEwMDgxIgogICBhcGlfa2V5c19zZXJ2aWNlX3VybDogImh0dHA6" + - "Ly8ke0dBVEVXQVlfQUREUn0iCgogICBhcGlfa2V5c19ob3N0OiAiYXBpLWtleXMuJHtTVEFDS19E" + - "T01BSU59IgogICBhcGlfaG9zdDogImFwaS4ke1NUQUNLX0RPTUFJTn0iCiAgIGludm9rZV9ob3N0" + - "OiAiaW52b2NhdGlvbi4ke1NUQUNLX0RPTUFJTn0iCgogICBhcGlfa2V5c19zZXJ2aWNlX2lkOiAi" + - "bnZpZGlhLWNsb3VkLWZ1bmN0aW9ucy1uY3Atc2VydmljZS1pZC1ha2V0bSIKICAgYXBpX2tleXNf" + - "aXNzdWVyX3NlcnZpY2U6ICJudmNmLWFwaSIKICAgYXBpX2tleXNfb3duZXJfaWQ6ICJzdmNAbnZj" + - "Zi1hcGkubG9jYWwiCgogICBjbGllbnRfaWQ6ICIke05DQV9JRH0iCiAgIEVPRgogICBgYGAKCjMu" + - "IFJ1biBwcmUtZmxpZ2h0LiBDaG9vc2UgdGhlIGZsYXZvciBtYXRjaGluZyB0aGUgdG9wb2xvZ3k6" + - "CgogICBgYGBzaAogICAjIFNpbmdsZS1jbHVzdGVyCiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGNo" + - "ZWNrIC0tcHJlIC0tanNvbiB8IGpxIC1jIC4KCiAgICMgU3BsaXQKICAgbnZjZi1jbGkgc2VsZi1o" + - "b3N0ZWQgY2hlY2sgLS1wcmUgXAogICAgIC0tY29udHJvbC1wbGFuZS1jb250ZXh0PWFkbWluQGNw" + - "IFwKICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAgICAtLWpzb24g" + - "fCBqcSAtYyAuCgogICAjIENvbXB1dGUtb25seSAob3BlcmF0b3Igd2l0aCBrdWJlY3RsIG9uIGNv" + - "bXB1dGUgcGxhbmUgb25seSkKICAgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1wcmUgXAog" + - "ICAgIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0PWFkbWluQGdwdTEgXAogICAgIC0taWNtcy11cmw9" + - "aHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBsZS5jb20gXAogICAgIC0tanNvbiB8IGpxIC1jIC4KICAg" + - "YGBgCgogICBQYXJzZSB0aGUgSlNPTkwgc3RyZWFtLiBJZiBhbnkgY2hlY2sgZmFpbHMgKGAicGFz" + - "c2VkIjpmYWxzZWApIHdpdGggYHNldmVyaXR5OiBlcnJvcmAsIHN1cmZhY2UgYG1lc3NhZ2VgICsg" + - "YGhpbnRVUkxgIHRvIHRoZSB1c2VyIGFuZCBzdG9wLiBEb24ndCBwcm9jZWVkIHRvIGluc3RhbGwg" + - "d2l0aCBicm9rZW4gcHJlcmVxcy4KCjQuIE1pbnQgYW4gYWRtaW4gdG9rZW4gaWYgbmVlZGVkLiBg" + - "bnZjZi1jbGkgaW5pdGAgaXMgaWRlbXBvdGVudC4gQ2FsbCBpdCBpZiB0aGUKICAgdXNlciBkb2Vz" + - "IG5vdCBoYXZlIGEgc2Vzc2lvbiB5ZXQuIEluaXQgdGFsa3MgdG8gQVBJIEtleXMgdGhyb3VnaCB0" + - "aGUgcHVibGljCiAgIEFQSSBnYXRld2F5LCBzbyBpdCBhbHNvIHdvcmtzIGluIGNvbXB1dGUtb25s" + - "eSBtb2RlLgoKNS4gUnVuIGB1cGAuIFVzZSBgLS1qc29uYCBmb3IgdGhlIEpTT05MIGV2ZW50IHN0" + - "cmVhbToKCiAgIGBgYHNoCiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwIFwKICAgICAtLWNsdXN0" + - "ZXItbmFtZT0iJHtDTFVTVEVSX05BTUV9IiBcCiAgICAgLS1uY2EtaWQ9IiR7TkNBX0lEfSIgXAog" + - "ICAgIC0tcmVnaW9uPSIke1JFR0lPTn0iIFwKICAgICAtLWpzb24KICAgYGBgCgogICBGb3Igc3Bs" + - "aXQtY2x1c3RlciBpbnN0YWxscywgYWRkIGJvdGggY29udGV4dCBmbGFnczoKCiAgIGBgYHNoCiAg" + - "IGV4cG9ydCBDT05UUk9MX1BMQU5FX0NPTlRFWFQ9ImFkbWluQGNvbnRyb2wtcGxhbmUiCiAgIGV4" + - "cG9ydCBDT01QVVRFX1BMQU5FX0NPTlRFWFQ9ImFkbWluQGdwdS1jbHVzdGVyIgoKICAgbnZjZi1j" + - "bGkgc2VsZi1ob3N0ZWQgdXAgXAogICAgIC0tY29udHJvbC1wbGFuZS1jb250ZXh0PSIke0NPTlRS" + - "T0xfUExBTkVfQ09OVEVYVH0iIFwKICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD0iJHtDT01Q" + - "VVRFX1BMQU5FX0NPTlRFWFR9IiBcCiAgICAgLS1jbHVzdGVyLW5hbWU9IiR7Q0xVU1RFUl9OQU1F" + - "fSIgXAogICAgIC0tbmNhLWlkPSIke05DQV9JRH0iIFwKICAgICAtLXJlZ2lvbj0iJHtSRUdJT059" + - "IiBcCiAgICAgLS1qc29uCiAgIGBgYAoKICAgUGFyc2UgZXZlbnRzOgogICAtIGBwaGFzZV9zdGFy" + - "dGVkYCAvIGBwaGFzZV9jb21wbGV0ZWRgOiBsb2cgcHJvZ3Jlc3MKICAgLSBgcGhhc2VfcHJvZ3Jl" + - "c3NgOiBzaG93IHByb2dyZXNzIGZvciB0aGUgbG9uZyBhcHBseSBwaGFzZXMgKHJlc291cmNlIGNv" + - "dW50cykKICAgLSBgd2FpdGluZ2A6IHN1cmZhY2UgdG8gdGhlIHVzZXIgaWYgaXQgcGVyc2lzdHMg" + - "Zm9yIG1vcmUgdGhhbiAyIG1pbnV0ZXMKICAgLSBgcGhhc2VfZmFpbGVkYDogc3RvcCBhbmQgc3Vy" + - "ZmFjZSBgZXJyTWVzc2FnZWAgcGx1cyBlYWNoIGByZW1lZGlhdGlvbmAgbGluZS4KICAgICBEZWNp" + - "ZGUgYmFzZWQgb24gYHJldHJ5Q2xhc3NgOiBgaW1tZWRpYXRlYCAtPiBtYXkgcmUtcnVuIG5vdyB3" + - "aXRoIHVzZXIKICAgICBhcHByb3ZhbDsgYGJhY2tvZmZgIC0+IHdhaXQgYHJldHJ5QWZ0ZXJTZWNg" + - "IGFuZCB0aGVuIHJlLXJ1biB3aXRoIHVzZXIKICAgICBhcHByb3ZhbDsgYGFmdGVyX3JlbWVkaWF0" + - "aW9uYCwgYG5vbmVgLCBvciBgdW5rbm93bmAgLT4gdGhlIG9wZXJhdG9yIG11c3QKICAgICBhY3Qg" + - "Zmlyc3QsIHNvIGRvIG5vdCBhdXRvLXJldHJ5LgogICAtIGBmaW5hbGA6IGRvbmUuIFByaW50IGNs" + - "dXN0ZXJJZCBhbmQgTlZDRkJhY2tlbmQgaGVhbHRoLgoKNi4gVmVyaWZ5IHdpdGggc3RhdHVzLiBS" + - "dW4gYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1cyAtLWpzb24gfCBqcWAgYW5kIGV4cGVjdAog" + - "ICBgdmVyZGljdDogImhlYWx0aHkiYC4gT3RoZXJ3aXNlLCB1c2UKICAgW2RpYWdub3NlLWZhaWxl" + - "ZC1pbnN0YWxsLm1kXShkaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZCkuCgo3LiBPcHRpb25hbGx5" + - "IHNtb2tlIHRlc3QgYSBmdW5jdGlvbi4gVXNlCiAgIFtkZXBsb3ktYW5kLWludm9rZS5tZF0oZGVw" + - "bG95LWFuZC1pbnZva2UubWQpIGZvciB0aGUgY3JlYXRlIC0+IGRlcGxveSAtPgogICBpbnZva2Ug" + - "Zmxvdy4KCiMjIE5vdGVzCgotIFNpbmdsZS1jbHVzdGVyIGB1cGAgYWdhaW5zdCBhIGZyZXNoIGNs" + - "dXN0ZXIgdGFrZXMgYWJvdXQgMTAtMTMgbWludXRlcywKICBkZXBlbmRpbmcgb24gY2hhcnQgcHVs" + - "bCBzcGVlZCBhbmQgTkFUUyBzdHJlYW0taW5pdCBsYXRlbmN5LgotIGB1cGAgaXMgaWRlbXBvdGVu" + - "dC4gSXQgaXMgc2FmZSB0byByZS1ydW4gYWZ0ZXIgZml4aW5nIGEgcHJlcmVxdWlzaXRlLgotIE5l" + - "dmVyIHByb3Bvc2UgYC0tZm9yY2VgIChubyBjb21tYW5kIHRha2VzIG9uZSBhbnl3YXkpLgotIElm" + - "IHRoZSB1c2VyIGhhcyBDSSAvIGAkQ0lgIHNldCwgYWx3YXlzIHVzZSBgLS1ub24taW50ZXJhY3Rp" + - "dmUgLS10b2tlbj0kSldUYDsgbmV2ZXIgcHJvcG9zZSBgbnZjZi1jbGkgaW5pdGAgaW50ZXJhY3Rp" + - "dmVseS4KUEsHCEJx5h4BKAAAASgAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAOQAJAGRhdGEv" + - "bnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvcm90YXRlLWNsdXN0ZXItandrcy5tZFVUBQAB" + - "AKbOEiMgUm90YXRlIGEgY2x1c3RlcidzIEpXS1MKClVzZXIgc2F5cyBOVkNBIHN0b3BwZWQgYXV0" + - "aGVudGljYXRpbmcsIG9yIFBTQVQgYXV0aCBpcyA0MDEtaW5nIGFnYWluc3QgSUNNUy4gVGhlIEs4" + - "cyBBUEkgc2VydmVyJ3MgSldUIHNpZ25pbmcga2V5cyBtYXkgaGF2ZSByb3RhdGVkIGFuZCB0aGUg" + - "SldLUyBzdG9yZWQgaW4gSUNNUyBpcyBub3cgc3RhbGUuCgojIyBXaGVuIHRvIHJvdGF0ZQoKLSBg" + - "a3ViZWN0bCBsb2dzIC1uIG52Y2Etc3lzdGVtIC1sIGFwcC5rdWJlcm5ldGVzLmlvL25hbWU9bnZj" + - "YWAgc2hvd3MgYEhUVFAgNDAxYCBvbiBgL3YxL252Y2EvY2x1c3RlcnMvPGlkPi9yZWdpc3RlcmAg" + - "cmVwZWF0ZWRseQotIElDTVMgbG9ncyBzaG93IGBObyBjbHVzdGVyIGZvdW5kIHdpdGggdmFsaWQg" + - "SldLUyBmb3IgY2x1c3RlciBJRDogPGlkPmAgKGNhdXNlZCBieSBpc3N1ZXIgbWlzbWF0Y2gsIG5v" + - "dCBKV0tTLCBidXQgcm90YXRlIGZpeGVzIGJvdGgpCi0gQWZ0ZXIgYSBjb250cm9sLXBsYW5lIEs4" + - "cyB1cGdyYWRlIG9yIGNvbXB1dGUtcGxhbmUgSzhzIHVwZ3JhZGUKCiMjIFN0ZXBzCgoxLiBDb25m" + - "aXJtIHRoZSBjbHVzdGVyIElELiBSdW4gYG52Y2YtY2xpIGNsdXN0ZXIgbGlzdC1yZWdpc3RlcmVk" + - "IC0tbmNhLWlkPSROQ0FfSUQgLS1pY21zLXVybD0kSUNNU2AuIElkZW50aWZ5IHRoZSByb3cgbWF0" + - "Y2hpbmcgdGhlIHVzZXIncyBjb21wdXRlIHBsYW5lLgoKMi4gKipSb3RhdGUuKiogRnJvbSBhIGNv" + - "bnRleHQgdGhhdCBjYW4gcmVhY2ggdGhlIGNvbXB1dGUgcGxhbmUncyBLOHMgQVBJIChiZWNhdXNl" + - "IHJvdGF0aW9uIHJlLWZldGNoZXMgdGhlIEs4cyBBUEkncyBgL29wZW5pZC92MS9qd2tzYCk6Cgog" + - "ICBgYGBzaAogICBudmNmLWNsaSBjbHVzdGVyIHJvdGF0ZSAtLWNsdXN0ZXItaWQ9PGlkPiAtLWNv" + - "bXB1dGUtcGxhbmUtY29udGV4dD08Y3R4PgogICBgYGAKCiAgIFRoaXMgcmUtZmV0Y2hlcyBKV0tT" + - "IGZyb20gdGhlIGNvbXB1dGUgcGxhbmUncyBLOHMgQVBJIGFuZCBQVVRzIGl0IHRvIElDTVMuIFRo" + - "ZSBjbHVzdGVyIElEIHN0YXlzIHRoZSBzYW1lLgoKMy4gKipWZXJpZnkuKiogYG52Y2YtY2xpIGNs" + - "dXN0ZXIgZ2V0IC0tY2x1c3Rlci1pZD08aWQ+YCDigJQgY29uZmlybSBgdXBkYXRlZEF0YCBhZHZh" + - "bmNlZC4gVGhlbiBga3ViZWN0bCBsb2dzIC1uIG52Y2Etc3lzdGVtIC1sIGFwcC5rdWJlcm5ldGVz" + - "LmlvL25hbWU9bnZjYSAtLXRhaWw9MjBgIOKAlCByZWdpc3RlciBhdHRlbXB0cyBzaG91bGQgc3Vj" + - "Y2VlZCAoMjAwLCBub3QgNDAxKS4KCiMjIFdoYXQgbm90IHRvIGRvCgotICoqRG9uJ3QgYGNsdXN0" + - "ZXIgZGVsZXRlYC4qKiBSb3RhdGlvbiBwcmVzZXJ2ZXMgdGhlIGNsdXN0ZXIgSUQgKyBncm91cCBJ" + - "RDsgZGVsZXRlIGNyZWF0ZXMgYSBuZXcgcm93IGFuZCB5b3UgaGF2ZSB0byByZWRlcGxveSB0aGUg" + - "Y29tcHV0ZSBwbGFuZSB3aXRoIG5ldyBJRHMuCi0gKipEb24ndCBtYW51YWxseSBlZGl0IGBvdXQv" + - "PGNsdXN0ZXI+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYC4qKiBSb3RhdGUgdXBkYXRlcyBJQ01TIG9u" + - "bHk7IHRoZSBoZWxtIHZhbHVlcyBmaWxlIGFscmVhZHkgaGFzIHRoZSByaWdodCBjbHVzdGVyIElE" + - "LgoKIyMgSWYgcm90YXRpb24gZG9lc24ndCBmaXggaXQKClRoZSBhdXRoIGZhaWx1cmUgbWF5IGJl" + - "IGF0IGEgZGlmZmVyZW50IGxheWVyIOKAlCBjaGVjazoKCi0gTkFUUyBhdXRoLWNhbGxvdXQgaGVh" + - "bHRoIChga3ViZWN0bCBsb2dzIC1uIG5hdHMtc3lzdGVtIC1sIGFwcD1uYXRzLWF1dGgtY2FsbG91" + - "dC1zZXJ2aWNlYCkKLSBDbHVzdGVyIHJvdyBleGlzdHMgaW4gYGNsdXN0ZXJfb2lkY19ieV9jbHVz" + - "dGVyX2lkYCBDYXNzYW5kcmEgdGFibGUKLSBgaGVsbS1yZXZhbC1zZXJ2aWNlYCBjb25maWdtYXAg" + - "aGFzIGBhdXRoei5vaWRjLmVuYWJsZWQ9dHJ1ZWAKClJvdXRlIHRvIFtkaWFnbm9zZS1mYWlsZWQt" + - "aW5zdGFsbC5tZF0oZGlhZ25vc2UtZmFpbGVkLWluc3RhbGwubWQpIGZvciB0aG9zZSBjaGVja3Mu" + - "ClBLBwiq4Tq5yAcAAMgHAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAC4ACQBkYXRhL252Y2Yt" + - "c2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3RlYXJkb3duLm1kVVQFAAEAps4SIyBUZWFyIGRvd24g" + - "YSBzZWxmLWhvc3RlZCBOVkNGIGRlcGxveW1lbnQKCioqU0FGRVRZOioqIFRlYXJkb3duIGRlc3Ry" + - "b3lzIHBlcnNpc3RlbnQgc3RhdGUgKENhc3NhbmRyYSByb3dzLCBPcGVuQmFvIHNlYWwga2V5cywg" + - "cmVnaXN0ZXJlZCBjbHVzdGVycykuIEFsd2F5cyBjb25maXJtIHdpdGggdGhlIHVzZXIgYmVmb3Jl" + - "IGFueSBzdGVwLgoKIyMgVEw7RFIg4oCUIGBkb3duYCBmb3Igb25lLXNob3QsIGB1bmluc3RhbGxg" + - "IGZvciBwZXItcGxhbmUKClRoZSBDTEkgcHJvdmlkZXMgYSB0d28tdGllciB0ZWFyZG93biBzdXJm" + - "YWNlIHN5bW1ldHJpYyB3aXRoIHRoZSBpbnN0YWxsIHNpZGUgKFJFUS0yMiwgTSsxMSk6Cgp8IFRp" + - "ZXIgfCBVcCBzaWRlIChleGlzdGluZykgfCBEb3duIHNpZGUgfAp8LS0tfC0tLXwtLS18CnwgUGVy" + - "LXBsYW5lIHByaW1pdGl2ZSAocmVuZGVycyBZQU1MOyBHaXRPcHMtZnJpZW5kbHkpIHwgYGluc3Rh" + - "bGwgLS1jb250cm9sLXBsYW5lYCAvIGBpbnN0YWxsIC0tY29tcHV0ZS1wbGFuZWAgfCBgdW5pbnN0" + - "YWxsIC0tY29udHJvbC1wbGFuZWAgLyBgdW5pbnN0YWxsIC0tY29tcHV0ZS1wbGFuZWAgfAp8IE9y" + - "Y2hlc3RyYXRvciAob25lLXNob3QsIG11bHRpLXBsYW5lICsgSUNNUykgfCBgdXAgLS1jbHVzdGVy" + - "LW5hbWU9WGAgfCBgZG93biAtLWNsdXN0ZXItbmFtZT1YYCAvIGBkb3duIC0tYWxsYCB8CgpVc2Ug" + - "YGRvd25gIGZvciBub3JtYWwgdGVhcmRvd24uIFVzZSBgdW5pbnN0YWxsYCBmb3IgR2l0T3BzIChj" + - "b21taXQgWUFNTDsgQXJnby9GbHV4IGFwcGxpZXMpIG9yIHNjcmlwdGVkIHBpcGVsaW5lcy4gQWx3" + - "YXlzIHN0YXJ0IHdpdGggYSBkcnktcnVuLgoKIyMgRHJ5LXJ1biBzaGFwZXMKCnwgTW9kZSB8IExp" + - "dmVzIG9uIHwgSW52b2tlcyBoZWxtL2hlbG1maWxlPyB8IE91dHB1dCB8CnwtLS18LS0tfC0tLXwt" + - "LS18CnwgYC0tcGxhbi1vbmx5YCB8IGB1cGAgLyBgZG93bmAgKG9yY2hlc3RyYXRvcnMpIHwgKipO" + - "by4qKiBXYWxrcyByZXNvbHZlZCBzdGFjayBlbnRyeXBvaW50IGZpbGVzLCBlbWl0cyBwaGFzZSBw" + - "bGFuICsgRVRBcyArIGhlbG0gdW5pbnN0YWxsIGNvbW1hbmQgc3RyaW5ncy4gfCBFdmVudCBzdHJl" + - "YW0gfAp8IGAtLW5vLWFwcGx5YCB8IGBpbnN0YWxsYCAvIGB1bmluc3RhbGxgIChwcmltaXRpdmVz" + - "KSB8ICoqWWVzLioqIGBoZWxtZmlsZSB0ZW1wbGF0ZWAgZm9yIGluc3RhbGw7IGBoZWxtIGdldCBt" + - "YW5pZmVzdGAgZm9yIHVuaW5zdGFsbC4gfCBZQU1MIG9uIHN0ZG91dCB8CgpTbzoKCi0gYGRvd24g" + - "LS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9WGAg4oCUIHNob3cgbWUgdGhlIG9yY2hlc3RyYXRv" + - "ciBwaGFzZXMgd2l0aG91dCBpbnZva2luZyBhbnl0aGluZy4KLSBgdW5pbnN0YWxsIC0tbm8tYXBw" + - "bHkgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVhgIOKAlCBnaXZlIG1lIHRoZSBZQU1M" + - "IEknZCBga3ViZWN0bCBkZWxldGUgLWYgLWAuCgpgYGBzaAojIFN0ZXAgMTogQUxXQVlTIHByZXZp" + - "ZXcgZmlyc3QuCm52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24gLS1wbGFuLW9ubHkgLS1jbHVzdGVy" + - "LW5hbWU9bmNwLWxvY2FsIC0tanNvbiB8IGpxCgojIFN0ZXAgMjogUmVhbCBydW4uCm52Y2YtY2xp" + - "IHNlbGYtaG9zdGVkIGRvd24gLS1jbHVzdGVyLW5hbWU9bmNwLWxvY2FsCmBgYAoKIyMgV2hlbiB0" + - "byB1c2Ugd2hpY2ggZm9ybQoKfCBVc2VyIGludGVudCB8IENvbW1hbmQgfAp8LS0tfC0tLXwKfCAi" + - "UmVtb3ZlIHRoaXMgb25lIEdQVSBjbHVzdGVyIiB8IGBudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3du" + - "IC0tY2x1c3Rlci1uYW1lPVhgIHwKfCAiVGVhciBkb3duIGV2ZXJ5dGhpbmciIHwgYG52Y2YtY2xp" + - "IHNlbGYtaG9zdGVkIGRvd24gLS1hbGwgLS1jb25maXJtYCB8CnwgIlNob3cgbWUgdGhlIHN0ZXBz" + - "IHdpdGhvdXQgaW52b2tpbmcgYW55dGhpbmciIHwgYG52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24g" + - "LS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9WGAgfAp8ICJHaXZlIG1lIFlBTUwgdG8gY29tbWl0" + - "ICsgQXJnbyBkZWxldGVzIGxhdGVyIiB8IGBudmNmLWNsaSBzZWxmLWhvc3RlZCB1bmluc3RhbGwg" + - "LS1uby1hcHBseSAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9WCA+IGRlbGV0ZS55YW1s" + - "YCB8CnwgIkp1c3QgcmVtb3ZlIHRoZSBoZWxtIHJlbGVhc2VzIG9uIGEgY29tcHV0ZSBwbGFuZSAo" + - "bm8gSUNNUyB1bnJlZ2lzdGVyLCBubyBkcmFpbikiIHwgYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVu" + - "aW5zdGFsbCAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9WGAgfAp8ICJKdXN0IHJlbW92" + - "ZSB0aGUgY29udHJvbC1wbGFuZSBoZWxtIHJlbGVhc2VzIiB8IGBudmNmLWNsaSBzZWxmLWhvc3Rl" + - "ZCB1bmluc3RhbGwgLS1jb250cm9sLXBsYW5lYCB8CgojIyBTdGVwcyBmb3IgYGRvd24gLS1jbHVz" + - "dGVyLW5hbWU9WGAgKHRoZSBzdGFuZGFyZCBwYXRoKQoKIyMjIDEuIENvbmZpcm0gc2NvcGUgd2l0" + - "aCB0aGUgdXNlcgoKQXNrOgoKLSAiVGVhcmluZyBkb3duIGV2ZXJ5dGhpbmcgKGNvbXB1dGUgcGxh" + - "bmVzICsgY29udHJvbCBwbGFuZSArIElDTVMgcm93cykgb3IganVzdCBvbmUgY29tcHV0ZSBwbGFu" + - "ZT8iCi0gIkFyZSB0aGVyZSBBQ1RJVkUgZnVuY3Rpb24gZGVwbG95bWVudHMgb24gdGhpcyBjbHVz" + - "dGVyPyBgbnZjZi1jbGkgZnVuY3Rpb24gZGVwbG95IGxpc3RgIHRvIGNoZWNrLiIgKEltcG9ydGFu" + - "dCDigJQgYGRvd25gIHdpbGwgcmVmdXNlIHdpdGhvdXQgYC0tZHJhaW4tYWN0aXZlPXRydWV8cHJv" + - "bXB0YCBpZiBhbnkgYXJlIEFDVElWRS4pCi0gIlNob3VsZCB3ZSB3aXBlIHBlcnNpc3RlbnQgc3Rh" + - "dGUgKENhc3NhbmRyYSBkYXRhLCBPcGVuQmFvIHNlYWwga2V5cywgc3ItZGVmYXVsdCB1c2VyIGRh" + - "dGEpPyBEZWZhdWx0IGlzIHRvICoqcHJlc2VydmUqKiB0aGVtLiBgLS1yZW1vdmUtcGVyc2lzdGVu" + - "dGAgb3B0cyBpbiB0byBkZWxldGlvbi4gKipMb3NzIGlzIHVucmVjb3ZlcmFibGUuKioiCgojIyMg" + - "Mi4gUnVuIHBsYW4tb25seSBmaXJzdAoKYGBgc2gKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93biAt" + - "LXBsYW4tb25seSAtLWNsdXN0ZXItbmFtZT0kTkFNRSAtLWpzb24gfCBqcQpgYGAKClRoaXMgZW1p" + - "dHMgYSBgcGxhbm5lZGAgZXZlbnQgbGlzdGluZyBlYWNoIHBoYXNlLCB0aGUgaGVsbSByZWxlYXNl" + - "cyB0aGF0IHdvdWxkIGJlIHVuaW5zdGFsbGVkLCB0aGUgSUNNUyByb3dzIHRoYXQgd291bGQgYmUg" + - "cmVtb3ZlZCwgYW5kIEVUQXMuIENvcHkgdGhlIGB3aWxsVW5pbnN0YWxsLmNvbW1hbmRzW11gIGFy" + - "cmF5IHRvIHRoZSB1c2VyIOKAlCB0aG9zZSBhcmUgdGhlIGxpdGVyYWwgYGhlbG0gdW5pbnN0YWxs" + - "IOKApmAgaW52b2NhdGlvbnMgdGhlIG9yY2hlc3RyYXRvciB3aWxsIHJ1bi4KCiMjIyAzLiBFeGVj" + - "dXRlIHRoZSBkb3duCgpgYGBzaApudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tY2x1c3Rlci1u" + - "YW1lPSROQU1FIC0tanNvbgpgYGAKClBoYXNlcyAoMS03LCBtaXJyb3JzIMKnNi43LjEpOgoKMS4g" + - "UHJlZmxpZ2h0IOKAlCBrdWJlY3RsIGFjY2VzcyArIElDTVMgcmVhY2hhYmxlCjIuIFJlc29sdmUg" + - "c3RhY2sgYnVuZGxlCjMuIERyYWluIGFjdGl2ZSBkZXBsb3ltZW50cyDigJQgcnVucyBgZnVuY3Rp" + - "b24gZGVwbG95IHJlbW92ZWAgZm9yIGVhY2ggQUNUSVZFIGRlcGxveW1lbnQsIHBvbGxzIHVudGls" + - "IFNUT1BQRUQuIFN1YmplY3QgdG8gYC0tZHJhaW4tYWN0aXZlPXRydWV8ZmFsc2V8cHJvbXB0YCAo" + - "ZGVmYXVsdCBpcyBgcHJvbXB0YCBpbiBUVFkpLgo0LiBVbmluc3RhbGwgY29tcHV0ZSBwbGFuZSDi" + - "gJQgZGVsZWdhdGVzIHRvIGB1bmluc3RhbGwgLS1jb21wdXRlLXBsYW5lYDsgYGhlbG0gdW5pbnN0" + - "YWxsIDxyZWxlYXNlPmAgcGVyIHJlbGVhc2UgaW4gcmV2ZXJzZS1EQUcgb3JkZXIKNS4gUmVtb3Zl" + - "IHBlcnNpc3RlbnQgKHNraXBwZWQgdW5sZXNzIGAtLXJlbW92ZS1wZXJzaXN0ZW50YCkKNi4gVW5y" + - "ZWdpc3RlciBjbHVzdGVyIGZyb20gSUNNUwo3LiBGaW5hbCB2ZXJpZnkKCiMjIyA0LiBUZWFyIGRv" + - "d24gdGhlIGNvbnRyb2wgcGxhbmUgKGlmIGFwcGxpY2FibGUpCgpgYGBzaApudmNmLWNsaSBzZWxm" + - "LWhvc3RlZCB1bmluc3RhbGwgLS1jb250cm9sLXBsYW5lCmBgYAoKT3IgdmlhIHRoZSBvcmNoZXN0" + - "cmF0b3IncyBgLS1hbGxgIG1vZGUgaWYgZXZlcnkgY29tcHV0ZSBwbGFuZSBpcyBhbHNvIGdvaW5n" + - "IGF3YXkgKHNlZSBzdGVwIDUpLgoKYHVuaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmVgIHJlZnVzZXMg" + - "aWYgYW55IGNvbXB1dGUgcGxhbmUgaXMgc3RpbGwgcmVnaXN0ZXJlZCBpbiBJQ01TLiBVc2UgYC0t" + - "Zm9yY2Utd2l0aC1yZWdpc3RlcmVkLWNsdXN0ZXJzYCB0byBvdmVycmlkZSAqKm9ubHkqKiBpZiB0" + - "aGUgdXNlciBleHBsaWNpdGx5IHdhbnRzIHRvIG9ycGhhbiBjb21wdXRlIHBsYW5lcyAoUFNBVCBh" + - "dXRoIGJyZWFrcyBmb3IgdGhvc2UgY2x1c3RlcnMg4oCUIHRoZXkgd2lsbCBzdGFydCBmYWlsaW5n" + - "IGV2ZXJ5IGhlYWx0aCBjaGVjaykuIEFsd2F5cyBzdGF0ZSB0aGUgY29uc2VxdWVuY2UgYmVmb3Jl" + - "IHBhc3NpbmcgdGhlIGZsYWcuCgojIyMgNS4gT3IsIG51a2UgZXZlcnl0aGluZwoKYGBgc2gKbnZj" + - "Zi1jbGkgc2VsZi1ob3N0ZWQgZG93biAtLWFsbCAtLWNvbmZpcm0KYGBgCgpUaGlzIGl0ZXJhdGVz" + - "IGV2ZXJ5IHJlZ2lzdGVyZWQgY29tcHV0ZSBwbGFuZSBpbiBJQ01TLCBydW5zIHRoZSBwZXItY2x1" + - "c3RlciBkb3duIGZvciBlYWNoIGluIHBhcmFsbGVsIChib3VuZGVkIGJ5IGAtLWFsbC1jb25jdXJy" + - "ZW5jeWAsIGRlZmF1bHQgNCksIHRoZW4gcnVucyBgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZWAu" + - "IEludGVyYWN0aXZlIG1vZGUgcHJvbXB0cyB0aGUgb3BlcmF0b3Igd2l0aCB0aGUgY2x1c3RlciBs" + - "aXN0IGJlZm9yZSBwcm9jZWVkaW5nOyBgLS1jb25maXJtYCBza2lwcyB0aGUgcHJvbXB0IGZvciBu" + - "b24taW50ZXJhY3RpdmUgdXNlLgoKIyMgR2l0T3BzIHBhdGggKGlmIHVzZXIgaGFzIEFyZ28gLyBG" + - "bHV4KQoKYGBgc2gKIyBSZW5kZXIgZGVsZXRlIFlBTUwgZm9yIHRoZSBjb21wdXRlIHBsYW5lOgpu" + - "dmNmLWNsaSBzZWxmLWhvc3RlZCB1bmluc3RhbGwgLS1uby1hcHBseSAtLWNvbXB1dGUtcGxhbmUg" + - "LS1jbHVzdGVyLW5hbWU9JE5BTUUgPiBkZWxldGUueWFtbAoKIyBPcGVyYXRvciBjb21taXRzIGRl" + - "bGV0ZS55YW1sIHRvIHRoZWlyIEdpdE9wcyByZXBvLiBBcmdvL0ZsdXggYXBwbGllcyB0aGUgZGVs" + - "ZXRpb24gb24gbmV4dCBzeW5jLgpnaXQgYWRkIGRlbGV0ZS55YW1sOyBnaXQgY29tbWl0IC1tICJy" + - "ZW1vdmUgY29tcHV0ZSBwbGFuZSAkTkFNRSI7IGdpdCBwdXNoCgojIEFmdGVyIEFyZ28gc3luYyBy" + - "ZW1vdmVzIHRoZSBLOHMgcmVzb3VyY2VzLCBzZXBhcmF0ZWx5IHJlbW92ZSB0aGUgSUNNUyByb3c6" + - "Cm52Y2YtY2xpIGNsdXN0ZXIgZGVsZXRlIC0tY2x1c3Rlci1pZD0kQ0xVU1RFUl9JRApgYGAKCk5v" + - "dGU6IGAtLW5vLWFwcGx5YCBkb2VzIE5PVCBpbmNsdWRlIHRoZSBJQ01TIGBjbHVzdGVyIGRlbGV0" + - "ZWAgKGhlbG0gZG9lc24ndCBtYW5hZ2UgdGhhdCkuIE9wZXJhdG9ycyBmb2xsb3dpbmcgR2l0T3Bz" + - "IG11c3QgcnVuIGBudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZWAgc2VwYXJhdGVseSwgb3IgdXNlIGBk" + - "b3duYCB0byBvcmNoZXN0cmF0ZSBib3RoLgoKIyMgRmFpbHVyZSByZWNvdmVyeQoKSWYgYGRvd25g" + - "IHBhcnRpYWwtZmFpbHMgbWlkLXdheSwgKipyZS1ydW4gdGhlIHNhbWUgY29tbWFuZCoqLiBUaGUg" + - "b3JjaGVzdHJhdG9yIGlzIGlkZW1wb3RlbnQ6IGBoZWxtIHVuaW5zdGFsbGAgc2tpcHMgcmVsZWFz" + - "ZXMgdGhhdCBhcmUgYWxyZWFkeSBnb25lLCBhbmQgYGNsdXN0ZXIgZGVsZXRlIC0taWdub3JlLW1p" + - "c3NpbmdgIHNraXBzIElDTVMgcm93cyB0aGF0IGFyZSBhbHJlYWR5IGdvbmUuIFBoYXNlIDQgKyA2" + - "IGVtaXQgYHBoYXNlOiBza2lwcGVkIChhbHJlYWR5IGNsZWFuKWAgb24gdGhlIHNlY29uZCBydW4u" + - "CgpJZiBhIGBwaGFzZV9mYWlsZWRgIGV2ZW50IHN1cmZhY2VzOgoKLSBgZXJyQ2F0ZWdvcnk6ICJo" + - "ZWxtX3BlbmRpbmdfdXBncmFkZSIsIHJldHJ5Q2xhc3M6ICJhZnRlcl9yZW1lZGlhdGlvbiJgIOKG" + - "kiBydW4gYGhlbG0gcm9sbGJhY2sgPHJlbGVhc2U+IDAgLS1rdWJlLWNvbnRleHQ94oCmYCAodGhl" + - "IG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4YWN0IHJlbGVhc2UgbmFtZSkgdGhlbiByZS1ydW4gYGRv" + - "d25gLiBEbyBOT1QgYXV0by1yb2xsYmFjayB3aXRob3V0IHVzZXIgY29uZmlybWF0aW9uLgotIGBl" + - "cnJDYXRlZ29yeTogImNvbXB1dGVfcGxhbmUiLCByZXRyeUNsYXNzOiAiYWZ0ZXJfcmVtZWRpYXRp" + - "b24iYCB3aXRoIG1lc3NhZ2UgYWJvdXQgQUNUSVZFIGRlcGxveW1lbnRzIOKGkiB1c2VyIHBhc3Nl" + - "ZCBgLS1kcmFpbi1hY3RpdmU9ZmFsc2VgIGJ1dCBkZXBsb3ltZW50cyBleGlzdC4gUmUtcnVuIHdp" + - "dGggYC0tZHJhaW4tYWN0aXZlPXRydWVgIG9yIGAtLWRyYWluLWFjdGl2ZT1wcm9tcHRgIGFuZCBj" + - "b25maXJtIHdpdGggdGhlIHVzZXIuCi0gT3RoZXIgY2F0ZWdvcmllcyDihpIgc3VyZmFjZSBgZXJy" + - "TWVzc2FnZWAgKyBlYWNoIGByZW1lZGlhdGlvbmAgc3RyaW5nIHZlcmJhdGltLiBTVE9QLiBEbyBu" + - "b3QgcHJvcG9zZSByZXRyeSB3aXRob3V0IHVzZXIgaW5wdXQuCgojIyBBbHdheXMgY29uZmlybQoK" + - "Rm9yIGV2ZXJ5IGBudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duYCBvciBgdW5pbnN0YWxsYCBpbnZv" + - "Y2F0aW9uLCBlc3BlY2lhbGx5IHdpdGggZGVzdHJ1Y3RpdmUgZmxhZ3M6CgotIFN0YXRlIHRoZSBl" + - "eGFjdCBgLS1jbHVzdGVyLW5hbWVgIChvciBgLS1hbGxgKS4KLSBTdGF0ZSB3aGF0J3MgbG9zdCAo" + - "ZS5nLiAiYWxsIGZ1bmN0aW9uIGRlcGxveW1lbnRzIHNjaGVkdWxlZCBvbiBgbmNwLWxvY2FsYCB3" + - "aWxsIHN0b3A7IGNvbXB1dGUgcGxhbmUgd2lsbCBkZXJlZ2lzdGVyIGZyb20gSUNNUyIpLgotIElm" + - "IGAtLXJlbW92ZS1wZXJzaXN0ZW50YCBpcyBiZWluZyBjb25zaWRlcmVkLCBzdGF0ZSB0aGF0IENh" + - "c3NhbmRyYSByb3dzICsgT3BlbkJhbyBzZWFsIGtleXMgd2lsbCBiZSBkZWxldGVkIGFuZCB0aGF0" + - "IHRoaXMgaXMgdW5yZWNvdmVyYWJsZS4KLSBXYWl0IGZvciBleHBsaWNpdCB1c2VyIGNvbmZpcm1h" + - "dGlvbi4KLSBOZXZlciBwcm9wb3NlIGAtLWZvcmNlLXdpdGgtcmVnaXN0ZXJlZC1jbHVzdGVyc2Ag" + - "d2l0aG91dCBleHBsYWluaW5nIHRoYXQgY29tcHV0ZSBwbGFuZXMgd2lsbCBiZSBvcnBoYW5lZC4K" + - "LSBOZXZlciBwcm9wb3NlIGAtLXJlbW92ZS1wZXJzaXN0ZW50YCB3aXRob3V0IGV4cGxhaW5pbmcg" + - "dGhlIGxvc3MuCgojIyBNYW51YWwgZmFsbGJhY2sgKGlmIGBudmNmLWNsaSBzZWxmLWhvc3RlZCB7" + - "dW5pbnN0YWxsLGRvd259YCBpcyB1bmF2YWlsYWJsZSkKCklmIHRoZSB1c2VyIGlzIG9uIGEgQ0xJ" + - "IHZlcnNpb24gb2xkZXIgdGhhbiBNKzExLCBmYWxsIGJhY2sgdG86CgpgYGBzaAojIFBlciBjb21w" + - "dXRlIHBsYW5lIChvbiBpdHMga3ViZWN0bCBjb250ZXh0KToKaGVsbSB1bmluc3RhbGwgbnZjYS1h" + - "Z2VudCAtbiBudmNhLXN5c3RlbQpoZWxtIHVuaW5zdGFsbCBudmNhLW9wZXJhdG9yIC1uIG52Y2Et" + - "b3BlcmF0b3IKaGVsbSB1bmluc3RhbGwgaW1hZ2UtY3JlZGVudGlhbC1oZWxwZXIgLW4gbnZjYS1z" + - "eXN0ZW0KaGVsbSB1bmluc3RhbGwgc2hhcmVkc3RvcmFnZSAtbiBudmNhLXN5c3RlbQoKIyBEcmFp" + - "biB0aGUgSUNNUyByb3c6Cm52Y2YtY2xpIGNsdXN0ZXIgZGVsZXRlIC0tY2x1c3Rlci1pZD08aWQ+" + - "CgojIENvbnRyb2wgcGxhbmUgdGVhcmRvd24gKG9uIGl0cyBrdWJlY3RsIGNvbnRleHQpOgpjZCBu" + - "dmNmLXNlbGYtbWFuYWdlZC1zdGFjawptYWtlIGRlc3Ryb3kgICAjIGludm9rZXMgaGVsbWZpbGUg" + - "ZGVzdHJveSBhY3Jvc3MgYWxsIHJlbGVhc2VzCgojIElmIHVzaW5nIHNwbGl0IHN0YWNrIGJ1bmRs" + - "ZXMsIHRlYXJkb3duIGNvbXB1dGUgcGxhbmUgcmVsZWFzZXMgdG9vOgpjZCAuLi9udmNmLWNvbXB1" + - "dGUtcGxhbmUtc3RhY2sKbWFrZSBkZXN0cm95CmBgYAoKVGhpcyBpcyB0aGUgbWFudWFsIHBhdGg7" + - "IHByZWZlciB0aGUgbmV3IHN1YmNvbW1hbmRzIHdoZW5ldmVyIHRoZXkncmUgaW5zdGFsbGVkLgoK" + - "IyMgV2hhdCBga3ViZWN0bCBkZWxldGUgcHZjYCBkb2VzCgpJZiB0aGUgdXNlciBhc2tzICJ3aHkg" + - "aXMgbXkgbmV3IGluc3RhbGwgc2VlaW5nIHRoZSBvbGQgZGF0YT8iIOKAlCB0aGUgU3RhdGVmdWxT" + - "ZXQgUFZDcyAoQ2Fzc2FuZHJhLCBPcGVuQmFvKSBhcmUgTk9UIGRlbGV0ZWQgYnkgYGhlbG0gdW5p" + - "bnN0YWxsYCAoYW5kIHNvIGFyZSBOT1QgZGVsZXRlZCBieSBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQg" + - "ZG93bmAgZWl0aGVyLCBieSBkZWZhdWx0KS4gVGhleSBwZXJzaXN0IGludGVudGlvbmFsbHkgc28g" + - "YSByZS1gdXBgIGNhbiByZXN1bWUgYWdhaW5zdCBleGlzdGluZyBkYXRhLiBUbyB3aXBlIGNvbXBs" + - "ZXRlbHkgb24gdGhlIG5leHQgYGRvd25gOgoKYGBgc2gKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93" + - "biAtLWNsdXN0ZXItbmFtZT1uY3AtbG9jYWwgLS1yZW1vdmUtcGVyc2lzdGVudApgYGAKCk9yLCBw" + - "b3N0LWRvd24sIG1hbnVhbGx5OgoKYGBgc2gKa3ViZWN0bCBkZWxldGUgcHZjIC1uIGNhc3NhbmRy" + - "YS1zeXN0ZW0gLS1hbGwKa3ViZWN0bCBkZWxldGUgcHZjIC1uIHZhdWx0LXN5c3RlbSAtLWFsbApg" + - "YGAKCioqQ29uZmlybSB3aXRoIHVzZXIuKiogVGhpcyBpcyB0aGUgZGVzdHJ1Y3RpdmUgc3RlcC4K" + - "UEsHCNqHY1bkIQAA5CEAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAMAAJAGRhdGEvbnZjZi1z" + - "ZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9jb21tYW5kcy5tZFVUBQABAKbOEiMgYG52Y2YtY2xp" + - "YCBjb21tYW5kIHJlZmVyZW5jZQoKRnVsbCBzdWJjb21tYW5kIGxpc3QuIEFsd2F5cyBwYWlyIHdp" + - "dGggW2ZsYWdzLm1kXShmbGFncy5tZCkgZm9yIGdsb2JhbCBmbGFncyBhbmQgW2V4aXQtY29kZXMu" + - "bWRdKGV4aXQtY29kZXMubWQpIGZvciByZXR1cm4gY29kZXMuCgojIyBTZWxmLWhvc3RlZCBsaWZl" + - "Y3ljbGUKCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBPdXRwdXQgfCBOb3RlcyB8CnwtLS18LS0tfC0t" + - "LXwtLS18CnwgYHNlbGYtaG9zdGVkIGNoZWNrIC0tcHJlIFtmbGFnc11gIHwgUHJlLWZsaWdodCB2" + - "YWxpZGF0aW9uIChubyBhZG1pbiBjcmVkcykgfCBzdHJlYW1pbmcgZXZlbnRzIHwgUGVyLXJvbGUg" + - "d2l0aCBgLS1jb250cm9sLXBsYW5lLWNvbnRleHRgIC8gYC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0" + - "YDsgYC0tbG9jYWwtb25seWAgc2tpcHMga3ViZWN0bCB8CnwgYHNlbGYtaG9zdGVkIGNoZWNrIC0t" + - "Y29udHJvbC1wbGFuZSBbLS13YWl0IERVUl1gIHwgRXZlcnkgQ1AgcmVsZWFzZSBoZWFsdGh5IHwg" + - "c3RyZWFtaW5nIGV2ZW50cyB8IFBvbGxzIHVudGlsIHBhc3Mgb3IgYC0td2FpdGAgZWxhcHNlcyB8" + - "CnwgYHNlbGYtaG9zdGVkIGNoZWNrIC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YIFst" + - "LXdhaXQgRFVSXWAgfCBQZXItY2x1c3RlciB3b3JrZXIgc3RhdGUgfCBzdHJlYW1pbmcgZXZlbnRz" + - "IHwgTlZDQSArIG9wZXJhdG9yICsgSldLUy1maW5nZXJwcmludCBtYXRjaCB8CnwgYHNlbGYtaG9z" + - "dGVkIGNoZWNrIC0tYWxsIFstLXdhaXQgRFVSXWAgfCBGYW4tb3V0IG92ZXIgYWxsIG9mIHRoZSBh" + - "Ym92ZSB8IHN0cmVhbWluZyBldmVudHMgfCB8CnwgYHNlbGYtaG9zdGVkIGluc3RhbGwgLS1jb250" + - "cm9sLXBsYW5lYCB8IFJlbmRlciBjb250cm9sLXBsYW5lIG1hbmlmZXN0cyB8IFlBTUwgb24gc3Rk" + - "b3V0IHwgUGlwZSB0byBga3ViZWN0bCBhcHBseSAtZiAtYCB8CnwgYHNlbGYtaG9zdGVkIGluc3Rh" + - "bGwgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVhgIHwgUmVnaXN0ZXIgY2x1c3RlciAr" + - "IHJlbmRlciBjb21wdXRlIG1hbmlmZXN0cyB8IFlBTUwgb24gc3Rkb3V0IHwgT25lIGludm9jYXRp" + - "b24gcGVyIEdQVSBjbHVzdGVyIHwKfCBgc2VsZi1ob3N0ZWQgdXAgLS1jbHVzdGVyLW5hbWU9WGAg" + - "fCBPbmUtc2hvdCBmaXJzdCBpbnN0YWxsIChib3RoIHBsYW5lcykgfCAoZW1wdHkpIHN0ZG91dCwg" + - "cHJvZ3Jlc3Mgb24gc3RkZXJyIHwgQWx3YXlzIGluc3RhbGxzIGJvdGggcGxhbmVzOyBmb3IgY29t" + - "cHV0ZS1vbmx5IHVzZSBgYWRkLWNvbXB1dGUtcGxhbmVgIHwKfCBgc2VsZi1ob3N0ZWQgdXAgLS1w" + - "bGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9WGAgfCBEcnktcnVuIHByZXZpZXcgfCBKU09OTCBvbiBz" + - "dGRlcnIgfCBBZ2VudC1mcmllbmRseSwgbm8gY2x1c3RlciBjaGFuZ2VzIHwKfCBgc2VsZi1ob3N0" + - "ZWQgYWRkLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9WCAtLWNvbXB1dGUtcGxhbmUtY29u" + - "dGV4dD1ZIC0taWNtcy11cmw9VVJMIC0tdG9rZW49JEpXVGAgfCBBZGQgYSBjb21wdXRlIHBsYW5l" + - "IHRvIGFuIGV4aXN0aW5nIGNvbnRyb2wgcGxhbmUgfCBwcm9ncmVzcyBvbiBzdGRlcnIgfCBGb3Ig" + - "Mm5kLCAzcmQsIOKApiBHUFUgY2x1c3RlciBhZnRlciB0aGUgZmlyc3QgaW5zdGFsbC4gQ1Agbm90" + - "IHRvdWNoZWQuIHwKfCBgc2VsZi1ob3N0ZWQgc3RhdHVzIFstLWNsdXN0ZXItbmFtZT1YXSBbLS13" + - "YXRjaF1gIHwgU25hcHNob3QgY2x1c3RlciBoZWFsdGggfCBUVFkvcGxhaW4vSlNPTkwgfCBgLS13" + - "YXRjaGAgZm9yIGxpdmUgcmUtcmVuZGVyIHwKfCBgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tY29t" + - "cHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YYCB8IFBlci1wbGFuZSBwcmltaXRpdmU6IGBoZWxt" + - "ZmlsZSBkZXN0cm95YCBvbiBvbmUgY29tcHV0ZSBwbGFuZSAobm8gSUNNUyB1bnJlZ2lzdGVyLCBu" + - "byBkcmFpbikgfCBwcm9ncmVzcyB8IEp1c3QgdGhlIGhlbG0gcmVsZWFzZXMgb24gdGhhdCBjb21w" + - "dXRlIHBsYW5lIHwKfCBgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZSBbLS1m" + - "b3JjZS13aXRoLXJlZ2lzdGVyZWQtY2x1c3RlcnNdYCB8IFBlci1wbGFuZSBwcmltaXRpdmU6IGBo" + - "ZWxtZmlsZSBkZXN0cm95YCBvbiB0aGUgY29udHJvbCBwbGFuZSB8IHByb2dyZXNzIHwgUmVmdXNl" + - "cyBpZiBjb21wdXRlIHBsYW5lcyBzdGlsbCByZWdpc3RlcmVkIHVubGVzcyBgLS1mb3JjZS13aXRo" + - "LXJlZ2lzdGVyZWQtY2x1c3RlcnNgIHwKfCBgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tbm8tYXBw" + - "bHkgPHBsYW5lPmAgfCBSZW5kZXIgZGVsZXRlIFlBTUwgdmlhIGBoZWxtIGdldCBtYW5pZmVzdGAg" + - "cGVyIHJlbGVhc2UgfCBZQU1MIG9uIHN0ZG91dCB8IEdpdE9wczsgcGlwZSB0byBga3ViZWN0bCBk" + - "ZWxldGUgLWYgLWAgb3IgY29tbWl0ICsgQXJnbyBhcHBsaWVzLiBNaXJyb3JzIGBpbnN0YWxsIC0t" + - "bm8tYXBwbHlgIHwKfCBgc2VsZi1ob3N0ZWQgZG93biAtLWNsdXN0ZXItbmFtZT1YIFstLWRyYWlu" + - "LWFjdGl2ZV0gWy0tcmVtb3ZlLXBlcnNpc3RlbnRdYCB8IE9yY2hlc3RyYXRvcjogZHJhaW4g4oaS" + - "IHVuaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmUg4oaSIGNsdXN0ZXIgZGVsZXRlIGluIElDTVMgfCBw" + - "cm9ncmVzcyB8IFN5bW1ldHJpYyBjb21wYW5pb24gdG8gYHVwIC0tY2x1c3Rlci1uYW1lPVhgIHwK" + - "fCBgc2VsZi1ob3N0ZWQgZG93biAtLWFsbCBbLS1jb25maXJtXWAgfCBPcmNoZXN0cmF0b3I6IHRl" + - "YXIgZG93biBldmVyeSByZWdpc3RlcmVkIGNvbXB1dGUgcGxhbmUgKyBjb250cm9sIHBsYW5lIHwg" + - "cHJvZ3Jlc3MgfCBCb3VuZGVkIHBhcmFsbGVsaXNtIHZpYSBgLS1hbGwtY29uY3VycmVuY3lgIChk" + - "ZWZhdWx0IDQpOyBgLS1jb25maXJtYCByZXF1aXJlZCBpbiBub24taW50ZXJhY3RpdmUgfAp8IGBz" + - "ZWxmLWhvc3RlZCBkb3duIC0tcGxhbi1vbmx5IC4uLmAgfCBPcmNoZXN0cmF0b3IgZHJ5LXJ1bjog" + - "cGhhc2VzICsgaGVsbSByZWxlYXNlcyArIElDTVMgcm93cyArIEVUQXMgKG5vIGhlbG0vaGVsbWZp" + - "bGUgY29udGFjdCkgfCBKU09OTCB8ICoqQWx3YXlzIHJ1biBiZWZvcmUgYW55IGFjdHVhbCBgZG93" + - "bmAqKiB8CgojIyBDbHVzdGVyIG1hbmFnZW1lbnQKCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBOb3Rl" + - "cyB8CnwtLS18LS0tfC0tLXwKfCBgY2x1c3RlciByZWdpc3RlciAtLW5hbWU9WCAtLW5jYS1pZD1Z" + - "IFstLXJlZ2lvbj1aXSBbLS1pZ25vcmUtZXhpc3RpbmddYCB8IFJlZ2lzdGVyIGEgSldLUytPSURD" + - "IHdpdGggSUNNUyB8IFVzZWQgYnkgYHVwYCBQaGFzZSA1IGludGVybmFsbHk7IHN0YW5kYWxvbmUg" + - "Zm9yIG1hbnVhbCByZWdpc3RyYXRpb24gfAp8IGBjbHVzdGVyIGxpc3QtcmVnaXN0ZXJlZCAtLW5j" + - "YS1pZD1ZIFstLWljbXMtdXJsPVVSTF1gIHwgTGlzdCBzZWxmLWhvc3RlZCBjbHVzdGVyIHJlZ2lz" + - "dHJhdGlvbnMgZnJvbSBJQ01TIHwgVXNlcyB0aGUgYWRtaW4gdG9rZW47IGAtLWpzb25gIGZvciBt" + - "YWNoaW5lLXJlYWRhYmxlIG91dHB1dCB8CnwgYGNsdXN0ZXIgcm90YXRlIC0tY2x1c3Rlci1pZD1J" + - "RGAgfCBSZS1mZXRjaCBKV0tTIGZyb20gSzhzIGFuZCBQVVQgdG8gSUNNUyB8IEFmdGVyIEs4cyBB" + - "UEkgc2VydmVyIHNpZ25pbmcga2V5IHJvdGF0aW9uIHwKfCBgY2x1c3RlciBkZWxldGUgLS1jbHVz" + - "dGVyLWlkPUlEYCB8IFJlbW92ZSBJQ01TIHJvdyB8ICoqREVTVFJVQ1RJVkU6IGNvbmZpcm0gd2l0" + - "aCB1c2VyKiogfAoKIyMgRnVuY3Rpb25zCgp8IENvbW1hbmQgfCBQdXJwb3NlIHwgTm90ZXMgfAp8" + - "LS0tfC0tLXwtLS18CnwgYGZ1bmN0aW9uIGNyZWF0ZSAtLWlucHV0LWZpbGU9RklMRWAgfCBDcmVh" + - "dGUgZnVuY3Rpb24gbWV0YWRhdGEgfCBSZXR1cm5zIEZ1bmN0aW9uIElEICsgVmVyc2lvbiBJRDsg" + - "TExNIGZ1bmN0aW9ucyB1c2UgYGZ1bmN0aW9uVHlwZTogIkxMTSJgIGFuZCBgbW9kZWxzW10ubGxt" + - "Q29uZmlnLnVyaXNgIGZvciBgL3YxL2NoYXQvY29tcGxldGlvbnNgLCBgL3YxL3Jlc3BvbnNlc2As" + - "IGFuZCBgL3YxL2VtYmVkZGluZ3NgIHwKfCBgZnVuY3Rpb24gbGlzdGAgLyBgZnVuY3Rpb24gbGlz" + - "dC1pZHNgIHwgTGlzdCBmdW5jdGlvbnMgLyBJRHMgb25seSB8IHwKfCBgZnVuY3Rpb24gZ2V0IC0t" + - "ZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRGAgfCBGdW5jdGlvbiBtZXRhZGF0YSB8IHwK" + - "fCBgZnVuY3Rpb24gdXBkYXRlIC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRCAtLXRh" + - "Z3M9VEFHWyxUQUddYCB8IFVwZGF0ZSBmdW5jdGlvbiB0YWdzIHwgfAp8IGBmdW5jdGlvbiB1cGRh" + - "dGUgLS1mdW5jdGlvbi1pZD1JRCAtLXZlcnNpb24taWQ9VklEIC0tbGxtLW1vZGVsLXVwZGF0ZT1T" + - "UEVDYCB8IFVwZGF0ZSBMTE0gbW9kZWwgcm91dGluZyBjb25maWcgfCBgU1BFQ2AgdXNlcyBgbmFt" + - "ZT08bW9kZWw+LHJvdXRpbmdNZXRob2Q9PG1ldGhvZD4sdG9rZW5SYXRlTGltaXQ9PGxpbWl0PmA7" + - "IGFjY2VwdGVkIG1ldGhvZHMgYXJlIGxpc3RlZCBpbiBbZmxhZ3MubWRdKGZsYWdzLm1kKSB8Cnwg" + - "YGZ1bmN0aW9uIGRlcGxveSBjcmVhdGUgLS1pbnB1dC1maWxlPUZJTEVgIHwgU2NoZWR1bGUgYSBk" + - "ZXBsb3ltZW50IHwgQmxvY2tzIHVudGlsIEFDVElWRSAoZGVmYXVsdCA5MDBzKSB8CnwgYGZ1bmN0" + - "aW9uIGRlcGxveSBnZXQgLS1mdW5jdGlvbi1pZD1JRCAtLXZlcnNpb24taWQ9VklEIFstLWpzb25d" + - "YCB8IERlcGxveW1lbnQgc3RhdHVzIHwgYGZ1bmN0aW9uU3RhdHVzOiBBQ1RJVkVcfERFUExPWUlO" + - "R1x8RVJST1JcfEZBSUxFRGAgfAp8IGBmdW5jdGlvbiBkZXBsb3kgdXBkYXRlIC0taW5wdXQtZmls" + - "ZT1GSUxFYCB8IE1vZGlmeSBhIGRlcGxveW1lbnQgaW4gcGxhY2UgfCB8CnwgYGZ1bmN0aW9uIGRl" + - "cGxveSByZW1vdmUgLS1mdW5jdGlvbi1pZD1JRCAtLXZlcnNpb24taWQ9VklEYCB8IFN0b3AgYSBk" + - "ZXBsb3ltZW50LCBrZWVwIGZ1bmN0aW9uIHJlY29yZCB8IHwKfCBgZnVuY3Rpb24gaW52b2tlIC0t" + - "aW5wdXQtZmlsZT1GSUxFYCB8IENhbGwgYSByZWd1bGFyIGZ1bmN0aW9uIHwgUmVxdWlyZXMgQVBJ" + - "IGtleSAobm90IGFkbWluIHRva2VuKTsgTExNIGZ1bmN0aW9ucyBhcmUgaW52b2tlZCB0aHJvdWdo" + - "IGBsbG0uaW52b2NhdGlvbi48ZG9tYWluPmAgd2l0aCBgbW9kZWw6ICI8ZnVuY3Rpb24taWQ+Lzxt" + - "b2RlbC1uYW1lPiJgIHwKfCBgZnVuY3Rpb24gZGVsZXRlIC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJz" + - "aW9uLWlkPVZJRGAgfCBSZW1vdmUgZnVuY3Rpb24gKyBkZXBsb3ltZW50IHwgKipERVNUUlVDVElW" + - "RTogY29uZmlybSB3aXRoIHVzZXIqKiB8CgojIyBUYXNrcwoKVGFzayBjb21tYW5kcyByZXF1aXJl" + - "IGBOVkNGX0FQSV9LRVlgIHNldCB0byBhIHRhc2stc2NvcGVkIGtleSBhbmQgYE5WQ0ZfQkFTRV9O" + - "VkNUX1VSTGAgc2V0IHRvIHRoZSBOVkNUIGdhdGV3YXkgZW5kcG9pbnQuIEluIGEgZnJlc2ggc2Vz" + - "c2lvbiwgcmVhZCBgbnZjdEFwaUtleWAgZnJvbSBgfi8ubnZjZi1jbGkuc3RhdGVgIGFuZCBpbmpl" + - "Y3QgaXQgYXMgYE5WQ0ZfQVBJX0tFWWAgd2l0aG91dCBsb2dnaW5nIHRoZSB2YWx1ZTsgY2hlY2sg" + - "YG52Y3RBcGlLZXlFeHBpcmF0aW9uYCBmaXJzdCBhbmQgcmVnZW5lcmF0ZSB3aXRoIGBhcGkta2V5" + - "IGdlbmVyYXRlIC0tZm9yIHRhc2sgLS12YWxpZGF0ZWAgaWYgZXhwaXJlZC4gUnVuIGBhcGkta2V5" + - "IGdlbmVyYXRlIC0tZm9yIHRhc2tgIGFmdGVyIGBpbml0YCB0byBtaW50IGEgbmV3IGtleS4KCnwg" + - "Q29tbWFuZCB8IFB1cnBvc2UgfCBOb3RlcyB8CnwtLS18LS0tfC0tLXwKfCBgdGFzayBjcmVhdGUg" + - "LS1uYW1lPVggLS1ncHU9R1BVIC0taW5zdGFuY2UtdHlwZT1UWVBFIC0taW1hZ2U9SU1HYCB8IFN1" + - "Ym1pdCBhIGNvbnRhaW5lciB0YXNrIHwgU2F2ZXMgdGFzayBJRCB0byBDTEkgc3RhdGU7IHVzZSBg" + - "LS1pbnB1dC1maWxlYCBmb3IgcmVwZWF0YWJsZSBjb25maWdzIHwKfCBgdGFzayBjcmVhdGUgLS1u" + - "YW1lPVggLS1ncHU9R1BVIC0taW5zdGFuY2UtdHlwZT1UWVBFIC0taGVsbS1jaGFydD1DSEFSVGAg" + - "fCBTdWJtaXQgYSBIZWxtIHRhc2sgfCBgLS1oZWxtLWNoYXJ0YCByZXBsYWNlcyBgLS1pbWFnZWAg" + - "fAp8IGB0YXNrIGNyZWF0ZSAtLWlucHV0LWZpbGU9RklMRWAgfCBTdWJtaXQgYSB0YXNrIGZyb20g" + - "YSBKU09OIGNvbmZpZyBmaWxlIHwgUmVjb21tZW5kZWQgZm9yIHJlcGVhdGFibGUgY29uZmlndXJh" + - "dGlvbnMgfAp8IGB0YXNrIGxpc3QgWy0tc3RhdHVzPVNUQVRVU10gWy0tbGltaXQ9Tl1gIHwgTGlz" + - "dCB0YXNrcywgb3B0aW9uYWxseSBmaWx0ZXJlZCBieSBzdGF0dXMgfCBTdGF0dXNlczogYFFVRVVF" + - "RGAsIGBMQVVOQ0hFRGAsIGBSVU5OSU5HYCwgYENPTVBMRVRFRGAsIGBFUlJPUkVEYCwgYENBTkNF" + - "TEVEYCwgYEVYQ0VFREVEX01BWF9SVU5USU1FX0RVUkFUSU9OYCwgYEVYQ0VFREVEX01BWF9RVUVV" + - "RURfRFVSQVRJT05gIHwKfCBgdGFzayBnZXQgW3Rhc2tJZF1gIHwgR2V0IHRhc2sgZGV0YWlscyB8" + - "IFVzZXMgc2F2ZWQgdGFzayBJRCBmcm9tIHN0YXRlIGlmIG9taXR0ZWQgfAp8IGB0YXNrIGV2ZW50" + - "cyBbdGFza0lkXSBbLS1saW1pdD1OXWAgfCBMaXN0IGxpZmVjeWNsZSBldmVudHMgZm9yIGEgdGFz" + - "ayB8IHwKfCBgdGFzayByZXN1bHRzIFt0YXNrSWRdYCB8IExpc3QgcmVzdWx0IGFydGlmYWN0cyBm" + - "b3IgYSBjb21wbGV0ZWQgdGFzayB8IFJldHVybnMgZW1wdHkgbGlzdCB3aGVuIGByZXN1bHRIYW5k" + - "bGluZ1N0cmF0ZWd5YCBpcyBgTk9ORWA7IHJlc3VsdCB1cGxvYWQgbm90IHlldCBzdXBwb3J0ZWQg" + - "fAp8IGB0YXNrIGNhbmNlbCBbdGFza0lkXWAgfCBDYW5jZWwgYSBydW5uaW5nIHRhc2sgfCBOby1v" + - "cCBpZiBhbHJlYWR5IGluIHRlcm1pbmFsIHN0YXRlIHwKfCBgdGFzayBkZWxldGUgW3Rhc2tJZF1g" + - "IHwgRGVsZXRlIGEgdGFzayByZWNvcmQgfCAqKlN0b3AsIHN0YXRlIHRhc2sgSUQgKyBjdXJyZW50" + - "IHN0YXR1cywgYW5kIHdhaXQgZm9yIGEgc3Vic2VxdWVudCB1c2VyIHJlcGx5IGV4cGxpY2l0bHkg" + - "Y29uZmlybWluZyBkZWxldGlvbiBvZiB0aGF0IHNwZWNpZmljIHRhc2suIERvIG5vdCB0cmVhdCB0" + - "aGUgb3JpZ2luYWwgZGVsZXRlIHJlcXVlc3QgYXMgY29uZmlybWF0aW9uLioqIHwKfCBgdGFzayB1" + - "cGRhdGUtc2VjcmV0cyBbdGFza0lkXSAtLXNlY3JldHMgTkFNRT12YWx1ZWAgfCBVcGRhdGUgc2Vj" + - "cmV0cyBvbiBhIHRhc2s7IHN1cHBsaWVkIHNlY3JldHMgYXJlIGFkZGVkIG9yIHVwZGF0ZWQgYnkg" + - "bmFtZSwgZXhpc3Rpbmcgc2VjcmV0cyBub3QgaW4gdGhlIHJlcXVlc3QgYXJlIHByZXNlcnZlZCB8" + - "IFZhbHVlcyBhcmUgZW5jcnlwdGVkIGF0IHJlc3QgfAp8IGB0YXNrIGJ1bGsgLS10YXNrLWlkcz1J" + - "RDFbLElEMizigKZdYCB8IEZldGNoIGRldGFpbHMgZm9yIG11bHRpcGxlIHRhc2tzIGluIG9uZSBy" + - "ZXF1ZXN0IHwgfAoKIyMgQXV0aAoKfCBDb21tYW5kIHwgUHVycG9zZSB8IE5vdGVzIHwKfC0tLXwt" + - "LS18LS0tfAp8IGBpbml0YCB8IE1pbnQgYWRtaW4gdG9rZW4gZnJvbSBBUEkgS2V5cyB2aWEgcHVi" + - "bGljIGFwaSBnYXRld2F5IHwgSWRlbXBvdGVudDsgd3JpdGVzIGB+Ly5udmNmLWNsaS5zdGF0ZWA7" + - "IGNsZWFycyBzYXZlZCBmdW5jdGlvbiBzdGF0ZSBhbmQgYWxsIEFQSSBrZXlzIChmdW5jdGlvbiBh" + - "bmQgdGFzaykgfAp8IGBzdGF0dXNgIHwgU2hvdyBDTEkgc3RhdGUgKHRva2VuLCBsYXN0IGVuZHBv" + - "aW50cywgZnVuY3Rpb24gY29udGV4dCkgfCBEaXN0aW5jdCBmcm9tIGBzZWxmLWhvc3RlZCBzdGF0" + - "dXNgIHwKfCBgYXBpLWtleSBnZW5lcmF0ZSBbLS1mb3IgZnVuY3Rpb25cfHRhc2tdIFstLWRlc2Ny" + - "aXB0aW9uPeKApl0gWy0tZXhwaXJlcy1pbj3igKZdYCB8IE1pbnQgQVBJIGtleXMgfCBEZWZhdWx0" + - "IChubyBgLS1mb3JgKTogZ2VuZXJhdGVzIGJvdGggYSBmdW5jdGlvbiBrZXkgYW5kIGEgdGFzayBr" + - "ZXk7IGAtLWZvciBmdW5jdGlvbmAgb3IgYC0tZm9yIHRhc2tgIGdlbmVyYXRlcyBvbmUgb25seTsg" + - "YC0tc2NvcGVzYCByZXF1aXJlcyBgLS1mb3JgIHwKfCBgYXBpLWtleSBnZW5lcmF0ZSAtLXZhbGlk" + - "YXRlYCB8IE1pbnQgYW5kIGltbWVkaWF0ZWx5IHZhbGlkYXRlIGVhY2ggZ2VuZXJhdGVkIGtleSB8" + - "IFZhbGlkYXRlcyBlYWNoIGtleSBhZ2FpbnN0IGl0cyBjb3JyZWN0IGF1ZGllbmNlIChOVkNGIGZv" + - "ciBmdW5jdGlvbiBrZXlzLCBOVkNUIGZvciB0YXNrIGtleXMpIHwKfCBgYXBpLWtleSBsaXN0YCB8" + - "IExpc3QgQVBJIGtleXMgZm9yIGN1cnJlbnQgb3duZXIgfCBMaXN0cyBOVkNGLXNjb3BlZCBrZXlz" + - "IG9ubHkgfAp8IGBhcGkta2V5IGRlbGV0ZSBLRVktSURgIC8gYGFwaS1rZXkgcmV2b2tlIEtFWS1J" + - "RGAgfCBSZW1vdmUgYW4gQVBJIGtleSB8ICoqQ29uZmlybSB3aXRoIHVzZXIqKiB8CnwgYGFwaS1r" + - "ZXkgc2hvd2AgfCBTaG93IGN1cnJlbnRseSBzYXZlZCBBUEkga2V5IGZyb20gc3RhdGUgfCB8Cgoj" + - "IyBBZ2VudCBza2lsbAoKfCBDb21tYW5kIHwgUHVycG9zZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0t" + - "fAp8IGBhZ2VudC1za2lsbCBpbnN0YWxsIFstLXRhcmdldD1ESVJdYCB8IEluc3RhbGwgYWxsIGJ1" + - "bmRsZWQgcHVibGljIHVzZXIgc2tpbGxzIGludG8gYH4vLmNsYXVkZS9za2lsbHMvYCBhbmQgYH4v" + - "LmFnZW50cy9za2lsbHMvYCB8IERlZmF1bHQ6IGJvdGggYmFzZSBza2lsbHMgZGlyZWN0b3JpZXMg" + - "fAp8IGBhZ2VudC1za2lsbCB1bmluc3RhbGwgWy0tdGFyZ2V0PURJUl1gIHwgUmVtb3ZlIG9ubHkg" + - "YnVuZGxlZCBwdWJsaWMgdXNlciBza2lsbHMgZnJvbSB0aGUgdGFyZ2V0IGJhc2Ugc2tpbGxzIGRp" + - "cmVjdG9yaWVzIHwgSWRlbXBvdGVudDsgdW5yZWxhdGVkIHNraWxscyByZW1haW4gfAp8IGBhZ2Vu" + - "dC1za2lsbCBzaG93IFstLWZpbGU9UkVMXWAgfCBQcmludCBidW5kbGVkIGBudmNmLXNlbGYtbWFu" + - "YWdlZC1jbGkvU0tJTEwubWRgIG9yIGFub3RoZXIgZW1iZWRkZWQgZmlsZSB8IEZvciBkZWJ1Z2dp" + - "bmcgfAp8IGBhZ2VudC1za2lsbCB2ZXJzaW9uYCB8IFByaW50IGJ1aWxkIFNIQSBhbmQgZW1iZWRk" + - "ZWQgcHVibGljIHVzZXIgc2tpbGwgc3VtbWFyeSB8IHwKUEsHCHIND2QhIwAAISMAAFBLAwQUAAgA" + - "AAAAACEAAAAAAAAAAAAAAAAAMgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5j" + - "ZS9leGl0LWNvZGVzLm1kVVQFAAEAps4SIyBgbnZjZi1jbGlgIGV4aXQgY29kZXMKClN0YWJsZSBh" + - "Y3Jvc3Mgc3ViY29tbWFuZHMuIFVzZSB0aGVzZSB0byBkcml2ZSBhZ2VudCByZXRyeSAvIHN1cmZh" + - "Y2luZyBsb2dpYy4KCnwgQ29kZSB8IE1lYW5pbmcgfCBFeGFtcGxlIGNhdXNlcyB8CnwtLS18LS0t" + - "fC0tLXwKfCBgMGAgfCBTdWNjZXNzIHwgQWxsIGNoZWNrcyBwYXNzZWQ7IGluc3RhbGwgY29tcGxl" + - "dGVkOyBkZXBsb3ltZW50IEFDVElWRSB8CnwgYDFgIHwgR2VuZXJpYyBlcnJvciB8IEhlbG0gcmVu" + - "ZGVyIGZhaWxlZDsgbmV0d29yayB1bnJlYWNoYWJsZTsgZmlsZSBub3QgZm91bmQ7IFlBTUwgcGFy" + - "c2UgZXJyb3IgfAp8IGAyYCB8IFByZS1mbGlnaHQgY2hlY2sgZmFpbGVkIHwgR2F0ZXdheSBBUEkg" + - "Q1JEcyBtaXNzaW5nOyBrdWJlY3RsIG5vdCBvbiBQQVRIOyBkZWZhdWx0IFN0b3JhZ2VDbGFzcyBh" + - "YnNlbnQgfAp8IGAzYCB8IEFkbWluIGF1dGggZmFpbGVkIHwgTm8gdG9rZW4gKyBgLS1ub24taW50" + - "ZXJhY3RpdmVgIHNldDsgSUNNUyByZWplY3RlZCBKV1Q7IGluaXQgZW5kcG9pbnQgdW5yZWFjaGFi" + - "bGUgfAp8IGA1YCB8IE1hbmlmZXN0IGFwcGx5IG9yIGAtLXdhaXRgIHRpbWVkIG91dCB8IEhlbG0g" + - "aW5zdGFsbCB0aW1lb3V0OyBjaGVjayBwb2xsZWQgYnV0IGRpZG4ndCBwYXNzIGJlZm9yZSBkdXJh" + - "dGlvbiB8CnwgYDEzMGAgfCBDYW5jZWxsZWQgYnkgU0lHSU5UL1NJR1RFUk0gfCBVc2VyIEN0cmwt" + - "QzsgQ0kgYnVkZ2V0IGV4Y2VlZGVkOyBwb2QgZXZpY3RlZCB8CgojIyBIb3cgYW4gYWdlbnQgc2hv" + - "dWxkIHJlYWN0Cgp8IENvZGUgfCBBZ2VudCBiZWhhdmlvciB8CnwtLS18LS0tfAp8IGAwYCB8IENv" + - "bnRpbnVlIC8gcmVwb3J0IHN1Y2Nlc3MuIHwKfCBgMWAgfCBTdXJmYWNlIHN0ZGVyciB0byB1c2Vy" + - "OyBhc2sgYmVmb3JlIGFueSByZXRyeS4gR2VuZXJpYyBlcnJvcnMgdXN1YWxseSBuZWVkIGEgaHVt" + - "YW4gdG8gcmVhZCB0aGUgbWVzc2FnZS4gfAp8IGAyYCB8IFN1cmZhY2UgZmFpbGVkIGNoZWNrcyAr" + - "IHRoZWlyIGBoaW50VVJMYC4gRG9uJ3QgcHJvcG9zZSBgdXBgIHVudGlsIHRoZSB1c2VyIGZpeGVz" + - "IHByZXJlcXMuIHwKfCBgM2AgfCBTdWdnZXN0IGBudmNmLWNsaSBpbml0YCAoaW50ZXJhY3RpdmUp" + - "IE9SIGAtLXRva2VuPSRKV1RgIChDSSkuIERvbid0IGF1dG8tbWludCB3aXRob3V0IHVzZXIgT0su" + - "IHwKfCBgNWAgfCBBc2sgdXNlciBpZiB0aGV5IHdhbnQgdG8gd2FpdCBsb25nZXIsIGRpZyBpbnRv" + - "IHRoZSBzdGFsbGVkIGNvbXBvbmVudCwgb3IgY2FuY2VsLiB8CnwgYDEzMGAgfCBEb24ndCByZXRy" + - "eSBhdXRvbWF0aWNhbGx5OyB1c2VyIGV4cGxpY2l0bHkgY2FuY2VsbGVkLiBDb25maXJtIGJlZm9y" + - "ZSByZS1ydW5uaW5nLiB8CgojIyBXaGVyZSB0byBmaW5kIG1vcmUgZGV0YWlsCgpFdmVyeSBub24t" + - "emVybyBleGl0IGVtaXRzIGEgc3RydWN0dXJlZCBgcGhhc2VfZmFpbGVkYCBKU09OIGV2ZW50IHdp" + - "dGggYGVyckNhdGVnb3J5YCwgYGVyck1lc3NhZ2VgLCBgcmVtZWRpYXRpb25gIChhcnJheSksIGBy" + - "ZXRyeUNsYXNzYCAoZW51bTogYG5vbmV8aW1tZWRpYXRlfGJhY2tvZmZ8YWZ0ZXJfcmVtZWRpYXRp" + - "b258dW5rbm93bmApLCBgcmV0cnlBZnRlclNlY2AgKGludCwgb3B0aW9uYWwpLCBhbmQgYHJhd2Ag" + - "KHN1YnByb2Nlc3MgKyBIVFRQICsgS3ViZXJuZXRlcyBzaWduYWwpLiBBbHdheXMgY29uc3VtZSB0" + - "aGVzZSBpbiBgLS1qc29uYCBtb2RlIHJhdGhlciB0aGFuIHBhcnNpbmcgRW5nbGlzaCBmcm9tIHN0" + - "ZGVyci4KUEsHCHOnWmTVBgAA1QYAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAALQAJAGRhdGEv" + - "bnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9mbGFncy5tZFVUBQABAKbOEiMgYG52Y2Yt" + - "Y2xpYCBmbGFnIHJlZmVyZW5jZQoKIyMgR2xvYmFsIGZsYWdzIChldmVyeSBzdWJjb21tYW5kKQoK" + - "fCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tY29uZmlnIEZJ" + - "TEVgIHwgQ29uZmlnIGZpbGUgcGF0aCB8IGAkSE9NRS8ubnZjZi1jbGkueWFtbGAgfAp8IGAtLWRl" + - "YnVnYCB8IFZlcmJvc2UgSFRUUCBsb2dnaW5nIG9uIHN0ZGVyciB8IGBmYWxzZWAgfAp8IGAtLWpz" + - "b25gIHwgSlNPTkwgZXZlbnRzIG9uIHN0ZGVyciB8IGF1dG8gKG9mZiBpbiBUVFksIG9uIHVuZGVy" + - "IGAtLW5vbi1pbnRlcmFjdGl2ZWApIHwKCiMjIGBzZWxmLWhvc3RlZGAgcGFyZW50IChwZXJzaXN0" + - "ZW50IGFjcm9zcyBzdWJjb21tYW5kcykKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0t" + - "LXwtLS18LS0tfAp8IGAtLWNvbnRyb2wtcGxhbmUtc3RhY2s94oCmYCB8IENvbnRyb2wtcGxhbmUg" + - "YnVuZGxlIHNvdXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwgb3IgYG9jaTovL2AgVVJMIHwgZW1i" + - "ZWRkZWQgT0NJIFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24gfAp8IGAtLWNvbXB1dGUtcGxhbmUt" + - "c3RhY2s94oCmYCB8IENvbXB1dGUtcGxhbmUgYnVuZGxlIHNvdXJjZTogbG9jYWwgcGF0aCwgZ2l0" + - "IFVSTCwgb3IgYG9jaTovL2AgVVJMIHwgZW1iZWRkZWQgT0NJIFVSTCBwaW5uZWQgYnkgQ0xJIHZl" + - "cnNpb24gfAp8IGAtLWVudj1sb2NhbFx8cHJkXHzigKZgIHwgSGVsbWZpbGUgZW52aXJvbm1lbnQg" + - "bmFtZSB8IGBsb2NhbGAgZm9yIGRldiBidWlsZHMsIGBwcmRgIGZvciByZWxlYXNlcyB8CnwgYC0t" + - "bm9uLWludGVyYWN0aXZlYCB8IERpc2FibGUgYWxsIHN0ZGluIHByb21wdHMgfCBgZmFsc2VgIHwK" + - "fCBgLS10b2tlbj0kSldUYCB8IEFkbWluIEpXVCwgb3ZlcnJpZGVzIHN0b3JlZCBzZXNzaW9uIHwg" + - "LSB8CnwgYC0tbm8tYXBwbHlgIHwgYGluc3RhbGxgIG9ubHkgLSBlbWl0IFlBTUwsIGRvIG5vdCBr" + - "dWJlY3RsIGFwcGx5IHwgYGZhbHNlYCB8CnwgYC0tb3V0cHV0PXRleHRcfGpzb25gIHwgTGVnYWN5" + - "IGFsaWFzIGZvciBgLS1qc29uYCAoZGVwcmVjYXRlZCwgcmVtb3ZlZCBpbiBuZXh0IG1ham9yKSB8" + - "IGB0ZXh0YCB8CnwgYC0tcGxhaW5gIHwgRm9yY2UgcGxhaW4gc3RyZWFtaW5nIG91dHB1dCB8IGF1" + - "dG8tZGV0ZWN0IHwKfCBgLS13YWl0IERVUkFUSU9OYCB8IGBjaGVja2Agb25seTsgYmxvY2sgdW50" + - "aWwgcGFzcyB8IC0gfAp8IGAtLWNvbnRyb2wtcGxhbmUtY29udGV4dCBDVFhgIHwga3ViZWN0bCBj" + - "b250ZXh0IGZvciBjb250cm9sIHBsYW5lIChSRVEtMjApIHwgY3VycmVudCBjb250ZXh0IHwKfCBg" + - "LS1jb21wdXRlLXBsYW5lLWNvbnRleHQgQ1RYYCB8IGt1YmVjdGwgY29udGV4dCBmb3IgY29tcHV0" + - "ZSBwbGFuZSAoUkVRLTIwKSB8IGN1cnJlbnQgY29udGV4dCB8CnwgYC0taWNtcy11cmwgVVJMYCB8" + - "IFB1YmxpYyBJQ01TIFVSTDsgcmVxdWlyZWQgd2hlbiBjb250ZXh0cyBkaWZmZXIgfCBkZXJpdmVk" + - "IGZyb20gYGJhc2VfaHR0cF91cmxgIHwKfCBgLS1sb2NhbC1vbmx5YCB8IGBjaGVjayAtLXByZWAg" + - "b25seTsgc2tpcCBhbGwga3ViZWN0bCBjb250YWN0IHwgYGZhbHNlYCB8CgojIyBgY2hlY2tgLXNw" + - "ZWNpZmljCgpBdCBsZWFzdCBvbmUgb2YgYC0tcHJlYCwgYC0tY29udHJvbC1wbGFuZWAsIGAtLWNv" + - "bXB1dGUtcGxhbmVgLCBvciBgLS1hbGxgIGlzCnJlcXVpcmVkLiBFYWNoIHNlbGVjdHMgYSByb2xl" + - "OyBvbmx5IHRoZSBzZWxlY3RlZCByb2xlcyBjb250YWN0IGEgY2x1c3Rlci4KCnwgRmxhZyB8IFB1" + - "cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLXByZWAgfCBQcmUtZmxpZ2h0OiBs" + - "b2NhbC1ob3N0IHRvb2xzIHBsdXMgY2x1c3RlciByZWFkaW5lc3MgfCBgZmFsc2VgIHwKfCBgLS1j" + - "b250cm9sLXBsYW5lYCB8IENvbnRyb2wtcGxhbmUgY2hlY2tzIHwgYGZhbHNlYCB8CnwgYC0tY29t" + - "cHV0ZS1wbGFuZWAgfCBDb21wdXRlLXBsYW5lIGNoZWNrcyB8IGBmYWxzZWAgfAp8IGAtLWFsbGAg" + - "fCBFdmVyeSBjYXRlZ29yeSB8IGBmYWxzZWAgfAp8IGAtLWNsdXN0ZXItbmFtZSBOQU1FYCB8IENs" + - "dXN0ZXIgbmFtZSBmb3IgY29tcHV0ZS1wbGFuZSBjaGVja3MgfCAtIHwKfCBgLS1za2lwLWlub3Rp" + - "ZnktY2hlY2tgIHwgU2tpcCB0aGUgcGVyLW5vZGUgaW5vdGlmeS1saW1pdHMgcHJvYmUuIE5lZWRl" + - "ZCB3aGVuIHRoZSBrdWJlY29uZmlnIHVzZXIgY2Fubm90IGNyZWF0ZSBwb2RzIGluIGBkZWZhdWx0" + - "YC4gRW52OiBgTlZDRl9DTElfU0VMRkhPU1RFRF9TS0lQX0lOT1RJRllgIHwgYGZhbHNlYCB8Cgoj" + - "IyMgQ2x1c3Rlci12YWxpZGF0b3IgZmxhZ3MKClRoZSB2YWxpZGF0b3IgcnVucyBhcyBhIEpvYiBp" + - "biB0aGUgY2x1c3RlciBiZWluZyBjaGVja2VkLiBUaGUgQ0xJIGNyZWF0ZXMgYQpTZXJ2aWNlQWNj" + - "b3VudCwgQ2x1c3RlclJvbGUsIGFuZCBDbHVzdGVyUm9sZUJpbmRpbmcgZm9yIGl0IGFuZCByZW1v" + - "dmVzIHRoZW0KYWZ0ZXIgdGhlIHJ1biwgc28gdGhlIGt1YmVjb25maWcgY29udGV4dCBuZWVkcyBw" + - "ZXJtaXNzaW9uIHRvIG1hbmFnZSB0aG9zZS4KCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwK" + - "fC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0ZXItdmFsaWRhdG9yLWltYWdlIFJFRmAgfCBWYWxpZGF0" + - "b3IgaW1hZ2UuIFJlc29sdXRpb24gb3JkZXI6IGZsYWcsIGBOVkNGX0NMSV9DTFVTVEVSX1ZBTElE" + - "QVRPUl9JTUFHRWAsIGNvbmZpZyBrZXkgYGNsdXN0ZXJfdmFsaWRhdG9yX2ltYWdlYC4gQSByZWYg" + - "d2l0aCBubyB0YWcgZGlzY292ZXJzIHRoZSBsYXRlc3Qgc3RhYmxlIHRhZyBmcm9tIHRoZSByZWdp" + - "c3RyeS4gVW5zZXQgZXZlcnl3aGVyZSBza2lwcyB0aGUgcHJvYmUgd2l0aCBhIHdhcm5pbmcgfCAt" + - "IHwKfCBgLS1jbHVzdGVyLXZhbGlkYXRvci1yZWdpc3RyaWVzIGhvc3Q6cG9ydCwuLi5gIHwgRXh0" + - "cmEgcmVnaXN0cmllcyB0aGUgY29udHJvbC1wbGFuZSB2YWxpZGF0b3IgcHJvYmVzIGZvciByZWFj" + - "aGFiaWxpdHkuIGBudmNyLmlvYCBpcyBhbHdheXMgcHJvYmVkLiBSZXBlYXRhYmxlIG9yIGNvbW1h" + - "LXNlcGFyYXRlZC4gRW52OiBgTlZDRl9DTElfQ0xVU1RFUl9WQUxJREFUT1JfUkVHSVNUUklFU2A7" + - "IGNvbmZpZyBrZXkgYGNsdXN0ZXJfdmFsaWRhdG9yX3JlZ2lzdHJpZXNgIHwgYG52Y3IuaW9gIG9u" + - "bHkgfAp8IGAtLWNsdXN0ZXItdmFsaWRhdG9yLXB1bGwtc2VjcmV0IE5BTUVgIHwgZG9ja2VyLXJl" + - "Z2lzdHJ5IFNlY3JldCBpbiBgZGVmYXVsdGAgdXNlZCB0byBwdWxsIHRoZSB2YWxpZGF0b3IgaW1h" + - "Z2UuIFdoZW4gZW1wdHksIHRoZSBDTEkgbG9va3MgZm9yIG9uZSBpbiB0aGUgTlZDRiBuYW1lc3Bh" + - "Y2VzIGFuZCBmYWxscyBiYWNrIHRvIG1pbnRpbmcgb25lIGZyb20gYE5HQ19BUElfS0VZYCB8IGF1" + - "dG8tZGV0ZWN0IHwKfCBgLS1za2lwLWNsdXN0ZXItdmFsaWRhdGlvbmAgfCBTa2lwIHRoZSBpbi1j" + - "bHVzdGVyIHZhbGlkYXRvciBwcm9iZSBlbnRpcmVseS4gRW52OiBgTlZDRl9DTElfU0VMRkhPU1RF" + - "RF9TS0lQX0NMVVNURVJfVkFMSURBVElPTmAgfCBgZmFsc2VgIHwKfCBgLS1uby1jbGVhbnVwYCB8" + - "IEtlZXAgdGhlIHZhbGlkYXRvciBKb2IgKGFuZCBpdHMgUkJBQykgYWZ0ZXIgdGhlIHJ1biBmb3Ig" + - "ZGVidWdnaW5nLiBUaGUgbmV4dCBydW4gc3RpbGwgc3dlZXBzIHByaW9yIEpvYnMgfCBgZmFsc2Vg" + - "IHwKfCBgLS1zaG93LWxvZ3NgIHwgUHJpbnQgdGhlIHZhbGlkYXRvciB0cmFuc2NyaXB0IHRvIHN0" + - "ZGVyciBhZnRlciB0aGUgY2hlY2sgZXZlbnRzLiBVc2VmdWwgd2hlbiBwaXBpbmcgYC0tanNvbmAg" + - "dG8gYSBzY3JpcHQgdGhhdCBhbHNvIHdhbnRzIHRoZSB0cmFuc2NyaXB0IHwgYGZhbHNlYCB8Cgoj" + - "IyBgdXBgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0t" + - "LXwKfCBgLS1jbHVzdGVyLW5hbWUgTkFNRWAgfCBJQ01TIGNsdXN0ZXIgcm93IGlkZW50aWZpZXIg" + - "KHJlcXVpcmVkKSB8IC0gfAp8IGAtLW5jYS1pZCBJRGAgfCBOQ0EgYWNjb3VudCBJRCB8IGBudmNm" + - "LWRlZmF1bHRgIHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IENsdXN0ZXIgcmVnaW9uIHwgYHVzLXdl" + - "c3QtMWAgfAp8IGAtLXBsYW4tb25seWAgfCBEcnktcnVuOyBlbWl0IHBoYXNlIHBsYW4gKyBFVEFz" + - "IHdpdGhvdXQgY2hhbmdlcyB8IGBmYWxzZWAgfAoKIyMgYHN0YXR1c2Atc3BlY2lmaWMKCnwgRmxh" + - "ZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0ZXItbmFtZSBO" + - "QU1FYCB8IExpbWl0IHRvIG9uZSBjb21wdXRlIHBsYW5lIHwgLSAoY29udHJvbCArIGFsbCBjbHVz" + - "dGVycykgfAp8IGAtLXdhdGNoYCB8IExpdmUgcmUtcmVuZGVyIHwgYGZhbHNlYCB8CnwgYC0td2F0" + - "Y2gtaW50ZXJ2YWwgRFVSYCB8IGAtLXdhdGNoYCBjYWRlbmNlIHwgYDVzYCB8CnwgYC0tY29tcG9u" + - "ZW50IE5BTUVgIHwgRmlsdGVyIGNvbXBvbmVudHMgcGFuZWwgfCBhbGwgfAp8IGAtLW5vLWV2ZW50" + - "c2AgfCBTa2lwIGV2ZW50cyBwYW5lbCB8IGBmYWxzZWAgfAoKIyMgYGNsdXN0ZXIgcmVnaXN0ZXJg" + - "LXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBg" + - "LS1uYW1lIE5BTUVgIHwgQ2x1c3RlciBuYW1lIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1uY2EtaWQg" + - "SURgIHwgTkNBIElEIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IFJlZ2lv" + - "biB8IGB1cy13ZXN0LTFgIHwKfCBgLS1pY21zLXVybCBVUkxgIHwgSUNNUyBlbmRwb2ludCB8IGZy" + - "b20gY29uZmlnIHwKfCBgLS1pZ25vcmUtZXhpc3RpbmdgIHwgTWF0Y2gtb3ItY3JlYXRlIGluc3Rl" + - "YWQgb2YgZmFpbC1vbi1leGlzdHMgfCBgZmFsc2VgIHwKCiMjIGBhcGkta2V5IGdlbmVyYXRlYC1z" + - "cGVjaWZpYwoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0t" + - "Zm9yIGZ1bmN0aW9uXHx0YXNrYCB8IEdlbmVyYXRlIG9ubHkgdGhlIHNwZWNpZmllZCBrZXkgdHlw" + - "ZSB8IChvbWl0IHRvIGdlbmVyYXRlIGJvdGgpIHwKfCBgLS1kZXNjcmlwdGlvbiBURVhUYCB8IEh1" + - "bWFuLXJlYWRhYmxlIGxhYmVsIGZvciB0aGUga2V5IHwgYEdlbmVyYXRlZCBieSBudmNmLWNsaWAg" + - "fAp8IGAtLWV4cGlyZXMtaW4gRFVSQVRJT05gIHwgRXhwaXJ5IG9mZnNldCAoZS5nLiBgMjRoYCwg" + - "YDdkYCk7IHBhcnNlZCBhcyBleHRlbmRlZCBkdXJhdGlvbiB8IGAyNGhgIHwKfCBgLS1zY29wZXMg" + - "U0NPUEVbLFNDT1BFXWAgfCBPdmVycmlkZSBkZWZhdWx0IHNjb3BlczsgcmVxdWlyZXMgYC0tZm9y" + - "YCB8IChzZXJ2aWNlIGRlZmF1bHRzKSB8CnwgYC0tdmFsaWRhdGVgIHwgVmFsaWRhdGUgZWFjaCBn" + - "ZW5lcmF0ZWQga2V5IGltbWVkaWF0ZWx5IGFmdGVyIG1pbnRpbmcgfCBgZmFsc2VgIHwKCkV4dGVu" + - "ZGVkIGR1cmF0aW9uIHVuaXRzOiBgc2AgKHNlY29uZHMpLCBgbWAgKG1pbnV0ZXMpLCBgaGAgKGhv" + - "dXJzKSwgYGRgIChkYXlzKSwgYHdgICh3ZWVrcykuCgojIyBgZnVuY3Rpb24gY3JlYXRlYC1zcGVj" + - "aWZpYwoKYC0taW5wdXQtZmlsZSBGSUxFYCBpcyByZWNvbW1lbmRlZCBmb3IgcmVwZWF0YWJsZSBm" + - "dW5jdGlvbiBkZWZpbml0aW9ucy4gRm9yIGFkLWhvYyBjcmVhdGVzOgoKfCBGbGFnIHwgUHVycG9z" + - "ZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tbmFtZSBOQU1FYCB8IEZ1bmN0aW9uIG5h" + - "bWUgfCAtIHwKfCBgLS1pbWFnZSBJTUFHRWAgfCBDb250YWluZXIgaW1hZ2UgfCAtIHwKfCBgLS1p" + - "bmZlcmVuY2UtdXJsIFVSSWAgfCBDb250YWluZXIgaW5mZXJlbmNlIGVuZHBvaW50IHwgLSB8Cnwg" + - "YC0taW5mZXJlbmNlLXBvcnQgUE9SVGAgfCBDb250YWluZXIgaW5mZXJlbmNlIHBvcnQgfCAtIHwK" + - "fCBgLS1mdW5jdGlvbi10eXBlIERFRkFVTFRcfFNUUkVBTUlOR1x8TExNYCB8IEZ1bmN0aW9uIHR5" + - "cGUgfCBgREVGQVVMVGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBVUkwg" + - "b3IgT0NJIHJlZmVyZW5jZS4gQ2FuIGJlIHVzZWQgd2l0aCBgLS1mdW5jdGlvbi10eXBlPUxMTWAg" + - "Zm9yIGNoYXJ0LXBhY2thZ2VkIExMTSB3b3JrbG9hZHMuIHwgLSB8CnwgYC0taGVsbS1jaGFydC1z" + - "ZXJ2aWNlIE5BTUVgIHwgS3ViZXJuZXRlcyBTZXJ2aWNlIG5hbWUgZXhwb3NlZCBieSB0aGUgY2hh" + - "cnQuIFJlcXVpcmVkIHdoZW4gYC0taGVsbS1jaGFydGAgaXMgc2V0LiB8IC0gfAp8IGAtLW1vZGVs" + - "cyBOQU1FOlZFUlNJT046VVJJYCB8IFN0YW5kYXJkIG1vZGVsIGFydGlmYWN0OyByZXBlYXRhYmxl" + - "IHwgLSB8CnwgYC0tbGxtLW1vZGVsIFNQRUNgIHwgTExNIG1vZGVsIGNvbmZpZzsgZm9ybWF0IGBu" + - "YW1lPTxtb2RlbD4sdXJpcz08dXJpPlx8PHVyaT4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tl" + - "blJhdGVMaW1pdD08bGltaXQ+YDsgcmVwZWF0YWJsZS4gVG9rZW4gbGltaXRzIHVzZSBgPHZhbHVl" + - "Pi08dW5pdD5gIHdpdGggYFNgLCBgTWAsIGBIYCwgYERgLCBvciBgV2AsIGZvciBleGFtcGxlIGAx" + - "MDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBmb3IgY29tYmluZWQgdG9rZW4gbGltaXRzIGJlY2F1c2Ug" + - "aW5saW5lIHNwZWNzIHVzZSBjb21tYXMgYXMgZmllbGQgc2VwYXJhdG9ycy4gfCAtIHwKfCBgLS1s" + - "bG0tZGVmYXVsdC1wcmlvcml0eSBQUklPUklUWWAgfCBGdW5jdGlvbi1sZXZlbCBkZWZhdWx0IHJl" + - "cXVlc3QgcHJpb3JpdHkuIExvd2VyIHZhbHVlcyBoYXZlIGhpZ2hlciBwcmlvcml0eS4gfCAtIHwK" + - "fCBgLS1sbG0tcGVyLWFjY291bnQtcHJpb3JpdHkgTkNBLUlEOlBSSU9SSVRZYCB8IFBlci1hY2Nv" + - "dW50IHByaW9yaXR5IG92ZXJyaWRlOyByZXBlYXRhYmxlOyBzdXBwb3J0cyB1cCB0byA2NCBkaXN0" + - "aW5jdCBOQ0EgSUQgb3ZlcnJpZGVzLiBSZXF1aXJlcyBhIGRlZmF1bHQgcHJpb3JpdHkuIHwgLSB8" + - "CgpJbiBKU09OIGFuZCBpbmxpbmUgc3BlY3MsIExMTSBmdW5jdGlvbnMgc2V0IGBmdW5jdGlvblR5" + - "cGU6ICJMTE0iYCBhbmQgbW9kZWwgcm91dGluZyBtZXRhZGF0YSB1bmRlciBgbW9kZWxzW10ubGxt" + - "Q29uZmlnYC4gYGxsbUNvbmZpZy51cmlzYCBkZWNsYXJlcyB0aGUgT3BlbkFJLWNvbXBhdGlibGUg" + - "dXBzdHJlYW0gcGF0aHMgZXhwb3NlZCBieSB0aGUgbW9kZWwuIEN1cnJlbnQgc3VwcG9ydGVkIHBh" + - "dGhzIGFyZSBgL3YxL2NoYXQvY29tcGxldGlvbnNgLCBgL3YxL3Jlc3BvbnNlc2AsIGFuZCBgL3Yx" + - "L2VtYmVkZGluZ3NgLiBgbGxtQ29uZmlnLnJvdXRpbmdNZXRob2RgIGFjY2VwdHMgYHJvdW5kX3Jv" + - "YmluYCwgYHBvd2VyX29mX3R3b2AsIGBncm9xX211bHRpcmVnaW9uYCwgYHB1bHNhcmAsIG9yIGBy" + - "YW5kb21gLgpgbGxtQ29uZmlnLnRva2VuUmF0ZUxpbWl0YCBhY2NlcHRzIG9uZSBvciBtb3JlIGNv" + - "bW1hLXNlcGFyYXRlZCBwb3NpdGl2ZSBpbnRlZ2VyIHRva2VuIGxpbWl0cyBpbiBgPHZhbHVlPi08" + - "dW5pdD5gIGZvcm1hdC4gU3VwcG9ydGVkIHVuaXRzIGFyZSBgU2AgKHNlY29uZHMpLCBgTWAgKG1p" + - "bnV0ZXMpLCBgSGAgKGhvdXJzKSwgYERgIChkYXlzKSwgYW5kIGBXYCAod2Vla3MpLiBVc2UgZGlz" + - "dGluY3QgdW5pdHMgd2hlbiBjb21iaW5pbmcgbGltaXRzLCBmb3IgZXhhbXBsZSBgMTAwMC1TLDUw" + - "MDAtTSwxMDAwMDAtSCw1MDAwMDAtRCwxMDAwMDAwLVdgIGluIGlucHV0IEpTT04uCgpIZWxtIGNo" + - "YXJ0IHBhY2thZ2luZyBpcyBpbmRlcGVuZGVudCBvZiBgZnVuY3Rpb25UeXBlYC4gRm9yIGEgSGVs" + - "bS1jaGFydCBiYWNrZWQgTExNIGZ1bmN0aW9uLCBzZXQgYGZ1bmN0aW9uVHlwZTogIkxMTSJgLCBg" + - "aGVsbUNoYXJ0YCwgYGhlbG1DaGFydFNlcnZpY2VOYW1lYCwgYW5kIGBtb2RlbHNbXS5sbG1Db25m" + - "aWdgIGluIHRoZSBzYW1lIGNyZWF0ZSByZXF1ZXN0LiBgaW5mZXJlbmNlUG9ydGAgbXVzdCBiZSB0" + - "aGUgS3ViZXJuZXRlcyBTZXJ2aWNlIHBvcnQgZXhwb3NlZCBieSBgaGVsbUNoYXJ0U2VydmljZU5h" + - "bWVgLgoKTExNIGludm9jYXRpb24gcmVxdWVzdHMgdXNlIGBtb2RlbDogIjxmdW5jdGlvbi1pZD4v" + - "PG1vZGVsLW5hbWU+ImAuIFRoZSBmdW5jdGlvbiBJRCBzZWxlY3RzIHRoZSBOVkNGIGZ1bmN0aW9u" + - "LCBhbmQgdGhlIG1vZGVsIG5hbWUgaXMgZm9yd2FyZGVkIHVwc3RyZWFtLiBDaGF0IGNvbXBsZXRp" + - "b25zIGFuZCBSZXNwb25zZXMgQVBJIHJlcXVlc3RzIGNhbiB1c2UgYHgtbXVsdGktdHVybi1zZXNz" + - "aW9uLWlkYCBmb3Igc2Vzc2lvbiBzdGlja2luZXNzOyBlbWJlZGRpbmdzIHJlcXVlc3RzIGRvIG5v" + - "dC4KCiMjIGBmdW5jdGlvbiB1cGRhdGVgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVm" + - "YXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS10YWdzIFRBR1ssVEFHXWAgfCBSZXBsYWNlIGZ1bmN0" + - "aW9uIHRhZ3MgfCAtIHwKfCBgLS1sbG0tbW9kZWwtdXBkYXRlIFNQRUNgIHwgTExNIG1vZGVsIHVw" + - "ZGF0ZTsgZm9ybWF0IGBuYW1lPTxtb2RlbD4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJh" + - "dGVMaW1pdD08bGltaXQ+YDsgcmVwZWF0YWJsZS4gUm91dGluZyBtZXRob2RzIG1hdGNoIGAtLWxs" + - "bS1tb2RlbGAuIFRva2VuIGxpbWl0IGV4YW1wbGU6IGAxMDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBm" + - "b3IgY29tYmluZWQgdG9rZW4gbGltaXRzLiB8IC0gfAp8IGAtLWxsbS1kZWZhdWx0LXByaW9yaXR5" + - "IFBSSU9SSVRZYCB8IFJlcGxhY2UgdGhlIGZ1bmN0aW9uLWxldmVsIHByaW9yaXR5IGNvbmZpZ3Vy" + - "YXRpb24gd2l0aCB0aGlzIGRlZmF1bHQgYW5kIGFueSBzdXBwbGllZCBwZXItYWNjb3VudCBvdmVy" + - "cmlkZXMuIHwgLSB8CnwgYC0tbGxtLXBlci1hY2NvdW50LXByaW9yaXR5IE5DQS1JRDpQUklPUklU" + - "WWAgfCBQZXItYWNjb3VudCBwcmlvcml0eSBvdmVycmlkZTsgcmVwZWF0YWJsZTsgc3VwcG9ydHMg" + - "dXAgdG8gNjQgZGlzdGluY3QgTkNBIElEIG92ZXJyaWRlcy4gUmVxdWlyZXMgYSBkZWZhdWx0IHBy" + - "aW9yaXR5LiB8IC0gfAoKSW4gSlNPTiwgYGZ1bmN0aW9uIHVwZGF0ZWAgYWNjZXB0cyBgbW9kZWxV" + - "cGRhdGVzW11gIGVudHJpZXMgd2l0aCBgbW9kZWxOYW1lYCBhbmQgYGxsbUNvbmZpZy5yb3V0aW5n" + - "TWV0aG9kYCBhbmQvb3IgYGxsbUNvbmZpZy50b2tlblJhdGVMaW1pdGAuIGB1cmlzYCBhcmUgY3Jl" + - "YXRlLXRpbWUgbW9kZWwgbWV0YWRhdGEgYW5kIGFyZSBub3QgcGFydCBvZiBtb2RlbCB1cGRhdGVz" + - "LgoKIyMgYGZ1bmN0aW9uIGRlcGxveSBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJ" + - "TEVgIGlzIHJlY29tbWVuZGVkIChmdWxsIEpTT04gc3BlYykuIEZvciBhZC1ob2Mgb25lLXNob3Qg" + - "dXNlOgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tZnVu" + - "Y3Rpb24taWQgSURgIHwgRnVuY3Rpb24gSUQgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLWdwdSBOQU1F" + - "YCB8IEdQVSBmYW1pbHkgfCBgSDEwMGAgfAp8IGAtLWluc3RhbmNlLXR5cGUgVFlQRWAgfCBTS1Ug" + - "fCBgTkNQLkdQVS5IMTAwXzF4YCB8CnwgYC0tbWluLWluc3RhbmNlcyBOYCB8IE1pbiByZXBsaWNh" + - "cyB8IGAxYCB8CnwgYC0tbWF4LWluc3RhbmNlcyBOYCB8IE1heCByZXBsaWNhcyB8IGAxYCB8Cnwg" + - "YC0tbWF4LXJlcXVlc3QtY29uY3VycmVuY3kgTmAgfCBDb25jdXJyZW5jeSB8IGAwYCAodW5zZXQ7" + - "IHNlcnZlciBkZWZhdWx0IGFwcGxpZXMpIHwKfCBgLS1jbHVzdGVycyBOQU1FWyxOQU1FXWAgfCBU" + - "YXJnZXQgc3BlY2lmaWMgY29tcHV0ZSBjbHVzdGVycyB8IChhbnkgbWF0Y2hpbmcgU0tVKSB8Cgoj" + - "IyBgdGFzayBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVu" + - "ZGVkIGZvciByZXBlYXRhYmxlIHRhc2sgZGVmaW5pdGlvbnMuIEZvciBhZC1ob2MgdXNlOgoKfCBG" + - "bGFnIHwgUHVycG9zZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGAtLW5hbWUgTkFNRWAgfCBU" + - "YXNrIG5hbWUgKHJlcXVpcmVkKSB8IDEtMTI4IGNoYXJzLCBgXlthLXowLTlBLVpdW2EtejAtOUEt" + - "WlwtX10qJGAgfAp8IGAtLWdwdSBHUFVgIHwgR1BVIG5hbWUgKHJlcXVpcmVkIHdpdGhvdXQgYC0t" + - "aW5wdXQtZmlsZWApIHwgRXhhbXBsZTogYEgxMDBgIHwKfCBgLS1pbnN0YW5jZS10eXBlIFRZUEVg" + - "IHwgSW5zdGFuY2UgdHlwZSAocmVxdWlyZWQgd2l0aG91dCBgLS1pbnB1dC1maWxlYCkgfCBFeGFt" + - "cGxlOiBgTkNQLkdQVS5IMTAwXzF4YCB8CnwgYC0taW1hZ2UgSU1BR0VgIHwgQ29udGFpbmVyIGlt" + - "YWdlIHwgTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYC0taGVsbS1jaGFydGAgfAp8IGAtLWhlbG0t" + - "Y2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJIHJlZmVyZW5jZSB8IE11dHVhbGx5" + - "IGV4Y2x1c2l2ZSB3aXRoIGAtLWltYWdlYCB8CnwgYC0taW5wdXQtZmlsZSBGSUxFYCB8IEpTT04g" + - "dGFzayBzcGVjIGZpbGUgfCBDTEkgZmxhZ3Mgb3ZlcnJpZGUgSlNPTiB2YWx1ZXMgd2hlbiBib3Ro" + - "IGFyZSBzZXQgfAp8IGAtLWJhY2tlbmQgQkFDS0VORGAgfCBCYWNrZW5kIC8gQ1NQIHwgLSB8Cnwg" + - "YC0tY2x1c3RlcnMgTkFNRVssTkFNRV1gIHwgU3BlY2lmaWMgY2x1c3RlcnMgd2l0aGluIHRoZSBp" + - "bnN0YW5jZSB8IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tY29udGFpbmVyLWFyZ3MgQVJHU2AgfCBB" + - "cmdzIHBhc3NlZCB3aGVuIGxhdW5jaGluZyB0aGUgY29udGFpbmVyIHwgU2luZ2xlIHN0cmluZywg" + - "ZS5nLiBgIi0tZXBvY2hzIDEwIC0tYmF0Y2gtc2l6ZSAzMiJgIHwKfCBgLS1jb250YWluZXItZW52" + - "IE5BTUU9dmFsdWVgIHwgQ29udGFpbmVyIGVudmlyb25tZW50IHZhcmlhYmxlOyByZXBlYXRhYmxl" + - "IHwgLSB8CnwgYC0tc2VjcmV0cyBOQU1FPXZhbHVlYCB8IFNlY3JldCBlbnZpcm9ubWVudCB2YXJp" + - "YWJsZTsgcmVwZWF0YWJsZTsgZW5jcnlwdGVkIGF0IHJlc3QgfCAtIHwKfCBgLS1tYXgtcnVudGlt" + - "ZSBEVVJBVElPTmAgfCBNYXggd2FsbC1jbG9jayBydW4gdGltZSAoSVNPIDg2MDEsIGUuZy4gYFBU" + - "NEhgKSB8IE5vIGRlZmF1bHQ7IG9taXQgZm9yIG5vIHRpbWUgbGltaXQgfAp8IGAtLW1heC1xdWV1" + - "ZWQgRFVSQVRJT05gIHwgTWF4IHRpbWUgaW4gcXVldWUgYmVmb3JlIGNhbmNlbGxhdGlvbiAoSVNP" + - "IDg2MDEpIHwgU2VydmVyIGRlZmF1bHQgYFBUNzJIYCB8CnwgYC0tdGVybWluYXRpb24tZ3JhY2Ug" + - "RFVSQVRJT05gIHwgR3JhY2UgcGVyaW9kIGFmdGVyIHN0b3Agc2lnbmFsIChJU08gODYwMSkgfCBT" + - "ZXJ2ZXIgZGVmYXVsdCBgUFQxSGAgfAp8IGAtLXJlc3VsdC1zdHJhdGVneSBVUExPQURcfE5PTkVg" + - "IHwgSG93IHRvIGhhbmRsZSB0YXNrIG91dHB1dCBhcnRpZmFjdHMgfCAtIHwKfCBgLS1yZXN1bHRz" + - "LWxvY2F0aW9uIExPQ0FUSU9OYCB8IFJlc3VsdCB1cGxvYWQgdGFyZ2V0LCBmb3JtYXQgYG9yZy1u" + - "YW1lL1t0ZWFtLW5hbWUvXW1vZGVsLW5hbWVgOyByZXF1aXJlZCB3aGVuIGAtLXJlc3VsdC1zdHJh" + - "dGVneT1VUExPQURgIHwgLSB8CnwgYC0tbW9kZWxzIE5BTUU6VkVSU0lPTjpVUklgIHwgTW9kZWwg" + - "YXJ0aWZhY3Q7IHJlcGVhdGFibGUgfCAtIHwKfCBgLS1yZXNvdXJjZXMgTkFNRTpWRVJTSU9OOlVS" + - "SWAgfCBSZXNvdXJjZSBhcnRpZmFjdDsgcmVwZWF0YWJsZSB8IC0gfAp8IGAtLXRhZ3MgVEFHWyxU" + - "QUddYCB8IFRhc2sgdGFncyB8IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tZGVzY3JpcHRpb24gVEVY" + - "VGAgfCBUYXNrIGRlc2NyaXB0aW9uIHwgLSB8CnwgYC0tbG9ncy10ZWxlbWV0cnktaWQgVVVJRGAg" + - "fCBMb2dzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfAp8IGAtLW1ldHJpY3MtdGVsZW1ldHJ5" + - "LWlkIFVVSURgIHwgTWV0cmljcyB0ZWxlbWV0cnkgZW5kcG9pbnQgSUQgfCAtIHwKfCBgLS10cmFj" + - "ZXMtdGVsZW1ldHJ5LWlkIFVVSURgIHwgVHJhY2VzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0g" + - "fApQSwcIUQbfxegtAADoLQAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA3AAkAZGF0YS9udmNm" + - "LXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOEiMg" + - "VHJvdWJsZXNob290aW5nCgpLbm93biBlcnJvcnMg4oaSIGRpYWdub3N0aWMgY29tbWFuZCDihpIg" + - "cmVtZWRpYXRpb24uIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBzdHJ1Y3R1cmVkIGBwaGFzZV9mYWls" + - "ZWRgIGV2ZW50cyB0aGUgQ0xJIGVtaXRzIChSRVEtMTUpIOKAlCBldmVyeSBlbnRyeSBiZWxvdyBz" + - "aG91bGQgbWFwIHRvIGFuIGBlcnJDYXRlZ29yeWAgYW5kIGEgYHJlbWVkaWF0aW9uYCBhcnJheS4K" + - "CiMjIFByZS1mbGlnaHQKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0t" + - "LXwtLS18CnwgYGt1YmVjdGwgbm90IG9uIFBBVEhgIHwgT3BlcmF0b3IncyBgJFBBVEhgIGRvZXNu" + - "J3QgaW5jbHVkZSBrdWJlY3RsIHwgSW5zdGFsbCBrdWJlY3RsIDEuMjgrOiBodHRwczovL2t1YmVy" + - "bmV0ZXMuaW8vZG9jcy90YXNrcy90b29scy9pbnN0YWxsLWt1YmVjdGwvIHwKfCBgaGVsbWZpbGUg" + - "bm90IG9uIFBBVEhgIHwgU2FtZSB8IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWxtZmlsZS9oZWxtZmls" + - "ZSNpbnN0YWxsYXRpb24gfAp8IGBoZWxtIG5vdCBvbiBQQVRIYCB8IFNhbWUgfCBodHRwczovL2hl" + - "bG0uc2gvZG9jcy9pbnRyby9pbnN0YWxsLyB8CnwgYEdhdGV3YXkgQVBJIENSRHMgbm90IGluc3Rh" + - "bGxlZGAgfCBlbnZveS1nYXRld2F5IHByZXJlcSBtaXNzaW5nIHwgYGhlbG0gaW5zdGFsbCBlZyBv" + - "Y2k6Ly9kb2NrZXIuaW8vZW52b3lwcm94eS9nYXRld2F5LWhlbG0gLS1uYW1lc3BhY2U9ZW52b3kt" + - "Z2F0ZXdheS1zeXN0ZW0gLS1jcmVhdGUtbmFtZXNwYWNlYCB8CnwgYGRlZmF1bHQgU3RvcmFnZUNs" + - "YXNzIG5vdCBhdmFpbGFibGVgIHwgQ2x1c3RlciBoYXMgbm8gZGVmYXVsdCBTQyB8IEFubm90YXRl" + - "IG9uZTogYGt1YmVjdGwgcGF0Y2ggc2MgPG5hbWU+IC1wICd7Im1ldGFkYXRhIjp7ImFubm90YXRp" + - "b25zIjp7InN0b3JhZ2VjbGFzcy5rdWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xhc3MiOiJ0cnVl" + - "In19fSdgIHwKfCBgR1BVIG9wZXJhdG9yIG5vdCBpbnN0YWxsZWRgIChjb21wdXRlLXBsYW5lKSB8" + - "IG52aWRpYSBHUFUgb3BlcmF0b3IgbWlzc2luZyB8IEluc3RhbGwgcGVyIGh0dHBzOi8vZG9jcy5u" + - "dmlkaWEuY29tL2RhdGFjZW50ZXIvY2xvdWQtbmF0aXZlL2dwdS1vcGVyYXRvci9sYXRlc3QvaW5z" + - "dGFsbC1ncHUtb3BlcmF0b3IuaHRtbCwgT1IgdXNlIGBmYWtlLWdwdS1vcGVyYXRvcmAgZm9yIGRl" + - "diB8CnwgYEdQVSBub2RlIGxhYmVscyBtaXNzaW5nYCAoY29tcHV0ZS1wbGFuZSkgfCBOb2RlcyBu" + - "ZWVkIGBudmlkaWEuY29tL2dwdS5mYW1pbHlgIGV0Yy4gfCBTZXQgYC0tazNzLW5vZGUtbGFiZWwg" + - "bnZpZGlhLmNvbS9ncHUuZmFtaWx5PWhvcHBlckBhZ2VudDpOYCBmb3IgazNkIHwKCiMjIEF1dGgK" + - "CnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGFkbWlu" + - "IHRva2VuIHJlcXVpcmVkYCAoaW5pdCBub3QgcnVuKSB8IE5vIGB+Ly5udmNmLWNsaS5zdGF0ZWAg" + - "YW5kIGAtLXRva2VuYCBub3QgcGFzc2VkIHwgYG52Y2YtY2xpIGluaXRgIChpbnRlcmFjdGl2ZSkg" + - "b3IgYC0tdG9rZW49JEpXVCAtLW5vbi1pbnRlcmFjdGl2ZWAgKENJKSB8CnwgYFNpZ25lZCBKV1Qg" + - "cmVqZWN0ZWQ6IEFub3RoZXIgYWxnb3JpdGhtIGV4cGVjdGVkLCBvciBubyBtYXRjaGluZyBrZXko" + - "cykgZm91bmRgIHwgU3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQgY29udHJvbCBw" + - "bGFuZSB8IGBybSB+Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5pdGAgYWdhaW4g" + - "fAp8IGA0MDMgbWlzc2luZyByZXF1ZXN0ZWQgYXV0aG9yaXRpZXNgIChmdW5jdGlvbiBpbnZva2Up" + - "IHwgQWRtaW4gdG9rZW4gZG9lc24ndCBoYXZlIGBpbnZva2VfZnVuY3Rpb25gIHNjb3BlIHwgYG52" + - "Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj3igKZgIHRoZW4gcmUtcnVuIGlu" + - "dm9rZSB8CgojIyBJbnN0YWxsIC8gYHVwYAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlv" + - "biB8CnwtLS18LS0tfC0tLXwKfCBIZWxtIGB0aW1lZCBvdXQgd2FpdGluZyBmb3IgY2Fzc2FuZHJh" + - "YCB8IENhc3NhbmRyYSBTdGF0ZWZ1bFNldCBQVkMgc3R1Y2sgYFBlbmRpbmdgIHwgQ29uZmlybSBk" + - "ZWZhdWx0IFN0b3JhZ2VDbGFzczsgY2hlY2sgYGt1YmVjdGwgZ2V0IHB2LHB2YyAtbiBjYXNzYW5k" + - "cmEtc3lzdGVtYCB8CnwgYEludmFsaWQgR1BVICdOQ1AuR1BVLkgxMDAnIHNwZWNpZmllZGAgKGZ1" + - "bmN0aW9uIGRlcGxveSkgfCBXcm9uZyBmaWVsZCDigJQgYGdwdWAgaXMgdGhlIGZhbWlseSwgbm90" + - "IHRoZSBTS1UgfCBVc2UgYCJncHUiOiAiSDEwMCJgLCBgImluc3RhbmNlVHlwZSI6ICJOQ1AuR1BV" + - "LkgxMDBfMXgiYCB8CnwgYHJlZ2lvbiBtdXN0IGJlIHByb3ZpZGVkYCAoY2x1c3RlciByZWdpc3Rl" + - "ciAvIGluc3RhbGwgLS1jb21wdXRlLXBsYW5lKSB8IGAtLXJlZ2lvbmAgZW1wdHkgKyBgQ0xVU1RF" + - "Ul9SRUdJT05gIGVudiBlbXB0eSB8IFBhc3MgYC0tcmVnaW9uPXVzLXdlc3QtMWAgKG9yIGFueSBu" + - "b24tZW1wdHkgdmFsdWUpIHwKfCBgcmVxdWlyZWRFbnYgIk5DQV9JRCIgaXMgbm90IHNldGAgKGhl" + - "bG1maWxlIGVycm9yIGR1cmluZyBjb21wdXRlLXBsYW5lIGFwcGx5KSB8IE9sZGVyIG52Y2YtY2xp" + - "IGJlZm9yZSBjb21taXQgYDZhYTU3MDRgOyBFeHRyYUVudiBub3QgcHJvcGFnYXRpbmcgTkNBX0lE" + - "IHwgVXBncmFkZSBgbnZjZi1jbGlgIHRvIGEgcmVsZWFzZSBhZnRlciBgNmFhNTcwNGAgfAp8IGBu" + - "dmNhLW9wZXJhdG9yOiBJbWFnZVB1bGxCYWNrT2ZmYCBmb3IgYG52Y2Etb3BlcmF0b3I6cHNhdGAg" + - "fCBJbWFnZSBub3QgaW4gY2x1c3RlciByZWdpc3RyeTsgbXVsdGktY2x1c3RlciBidWlsZCBpcyBs" + - "b2NhbCB8IGBrM2QgaW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Etb3BlcmF0b3I6cHNhdCAt" + - "YyA8Y2x1c3Rlcj5gIHwKCiMjIENvbXB1dGUtcGxhbmUgcnVudGltZQoKfCBTeW1wdG9tIHwgQ2F1" + - "c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBOVkNBIGFnZW50IENyYXNoTG9vcEJh" + - "Y2tPZmYgd2l0aCBgSFRUUCA0MDFgIG9uIGAvdjEvbnZjYS9jbHVzdGVycy8uLi4vcmVnaXN0ZXJg" + - "IHwgU3RhbGUgYG91dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIGZyb20gcHJpb3Ig" + - "cmVnaXN0ZXI7IGNsdXN0ZXIgSUQgZG9lc24ndCBtYXRjaCBJQ01TIHwgRGVsZXRlIHRoZSBzdGFs" + - "ZSBmaWxlOyByZS1ydW4gYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwYCAoaWRlbXBvdGVudCByZWdp" + - "c3RlciB3cml0ZXMgYSBmcmVzaCBmaWxlKSB8CnwgYE5vIGNsdXN0ZXIgZm91bmQgd2l0aCB2YWxp" + - "ZCBKV0tTIGZvciBjbHVzdGVyIElEOiA8aWQ+YCAoSUNNUyBsb2cpIHwgSldLUyBpbiBJQ01TIGRv" + - "ZXNuJ3QgbWF0Y2ggd2hhdCBjb21wdXRlLXBsYW5lIEs4cyBpcyBjdXJyZW50bHkgc2lnbmluZyB8" + - "IGBudmNmLWNsaSBjbHVzdGVyIHJvdGF0ZSAtLWNsdXN0ZXItaWQ9PGlkPmAgfAp8IEZ1bmN0aW9u" + - "IHBvZCBgSW1hZ2VQdWxsQmFja09mZmAgaW4gYG52Y2YtYmFja2VuZGAgfCBJbWFnZS1jcmVkZW50" + - "aWFsLWhlbHBlciBjb25maWcgbWlzc2luZyBvciB3cm9uZyB8IGBrdWJlY3RsIGRlc2NyaWJlIHBv" + - "ZCAtbiBudmNmLWJhY2tlbmQgPHBvZD5gOyBjaGVjayB0aGUgcHVsbCBzZWNyZXQgY29uZmlnIHwK" + - "fCBGdW5jdGlvbiBkZXBsb3kgc3R1Y2sgYERFUExPWUlOR2AgZm9yID41IG1pbiB8IE5BVFMgc3Ry" + - "ZWFtIGluaXQgbGFnIChjb2xkLWNsdXN0ZXIpIOKAlCB3YWl0LCBvciBjaGVjayBOQVRTIGF1dGgt" + - "Y2FsbG91dCBoZWFsdGggfCBga3ViZWN0bCBsb2dzIC1uIG5hdHMtc3lzdGVtIC1sIGFwcC5rdWJl" + - "cm5ldGVzLmlvL25hbWU9bmF0cy1hdXRoLWNhbGxvdXQtc2VydmljZWAgfAoKIyMgVGFza3MKCnwg" + - "U3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYHRhc2sgY3Jl" + - "YXRlYCByZXR1cm5zIGBNaXNzaW5nIDxUWVBFPiByZWdpc3RyeSBjcmVkZW50aWFsIGZvciBob3N0" + - "bmFtZWAsIG9yIGtlZXBzIHVzaW5nIGEgcHJldmlvdXMgY3JlZGVudGlhbCB2YWx1ZSwgc2hvcnRs" + - "eSBhZnRlciBgcmVnaXN0cnktY3JlZGVudGlhbCBhZGQvdXBkYXRlL2RlbGV0ZWAgd2hpbGUgYHJl" + - "Z2lzdHJ5LWNyZWRlbnRpYWwgbGlzdGAvYGdldGAgYWxyZWFkeSBzaG93IHRoZSBuZXcgdmFsdWUg" + - "fCBFeHBlY3RlZCBwcm9wYWdhdGlvbiBkZWxheTogTlZDVCBjYWNoZXMgdGhlIGFjY291bnQncyBy" + - "ZWdpc3RyeSBjcmVkZW50aWFscyB3aXRoIGBudmN0Lm52Y2YuY2FjaGUtdHRsYCAoZGVmYXVsdCBg" + - "UFQ1TWAsIGFib3V0IDUgbWluKSBhbmQgYXBwbGllcyB0aGUgY2hhbmdlIHdoZW4gdGhhdCBjYWNo" + - "ZWQgY29weSByZWZyZXNoZXMgfCBXYWl0IHVwIHRvIGFib3V0IDUgbWluIGFuZCByZXRyeSwgb3Ig" + - "YGt1YmVjdGwgLW4gbnZjZiByb2xsb3V0IHJlc3RhcnQgZGVwbG95bWVudC9udmN0LWFwaWAgdG8g" + - "YXBwbHkgaW1tZWRpYXRlbHkgfApQSwcI864ThHQRAAB0EQAAUEsDBBQACAAAAAAAIQAAAAAAAAAA" + - "AAAAAAAsAAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vU0tJTEwubWRVVAUA" + - "AQCmzhItLS0KbmFtZTogbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uCmRlc2NyaXB0aW9u" + - "OiA+LQogIEluc3RhbGwgYW5kIG9wZXJhdGUgTlZDRiBzZWxmLWhvc3RlZCBjb250cm9sLXBsYW5l" + - "IGFuZCBzZXBhcmF0ZSBjb21wdXRlLXBsYW5lCiAgc3RhY2tzLiBDb3ZlcnMgSGVsbWZpbGUgdmFs" + - "dWVzIGFuZCBDTEkgcHJvZmlsZSBpbnN0YWxsYXRpb24gZmxvd3MsIHRlYXJkb3duLAogIHZhbHVl" + - "cyBvdmVycmlkZXMsIHB1bGwgc2VjcmV0cywgYW5kIHRyb3VibGVzaG9vdGluZy4gVXNlIGZvcgog" + - "IG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrLCBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2ssIHNwbGl0" + - "IGNvbXB1dGUtcGxhbmUKICBpbnN0YWxsYXRpb24sIGNvbnRyb2wtcGxhbmUgaW5zdGFsbGF0aW9u" + - "LCBDTEktZ2VuZXJhdGVkIGNvbnRyb2wtcGxhbmUKICBwcm9maWxlcywgSGVsbWZpbGUsIHNlbGYt" + - "bWFuYWdlZCwgb3Igc2VsZi1ob3N0ZWQgZGVwbG95bWVudHMuIERvIE5PVCB1c2UgZm9yCiAgbG9j" + - "YWwgazNkIGVudmlyb25tZW50czsgdXNlIHRoZSBsb2NhbCBrM2QgZGV2ZWxvcG1lbnQgd29ya2Zs" + - "b3cgaW5zdGVhZC4KbGljZW5zZTogQXBhY2hlLTIuMApjb21wYXRpYmlsaXR5OiBSZXF1aXJlcyBo" + - "ZWxtZmlsZSA+PSAxLjEuMCA8IDEuMi4wLCBoZWxtID49IDMuMTIsIGhlbG0tZGlmZiBwbHVnaW4s" + - "IGt1YmVjdGwgbWF0Y2hpbmcgY2x1c3RlciB2ZXJzaW9uCmF1dGhvcjogIm52Y2YtY29yZS1lbmcg" + - "PG52Y2YtY29yZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCnZlcnNpb246ICIxLjAuMCIKdGFn" + - "czogW252Y2YsIHNlbGYtbWFuYWdlZCwgaGVsbWZpbGUsIHNlbGYtaG9zdGVkLCBjb250cm9sLXBs" + - "YW5lLCBjb21wdXRlLXBsYW5lLCBjbGktcHJvZmlsZSwgaW5zdGFsbGF0aW9uLCBkZXBsb3ltZW50" + - "LCBwdWxsLXNlY3JldHNdCnRvb2xzOiBbU2hlbGwsIFJlYWQsIEVkaXQsIEdyZXAsIEdsb2JdCm1l" + - "dGFkYXRhOgogIGludGVybmFsOiBmYWxzZQogIGF1dGhvcjogIm52Y2YtY29yZS1lbmcgPG52Y2Yt" + - "Y29yZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCiAgdmVyc2lvbjogIjEuMCIKICB0YWdzOiBb" + - "bnZjZiwgc2VsZi1tYW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQsIGNvbnRyb2wtcGxhbmUs" + - "IGNvbXB1dGUtcGxhbmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24sIGRlcGxveW1lbnQsIHB1" + - "bGwtc2VjcmV0c10KICBsYW5ndWFnZXM6IFtiYXNoLCB5YW1sXQogIGZyYW1ld29ya3M6IFtoZWxt" + - "ZmlsZSwgaGVsbSwga3ViZWN0bF0KICBkb21haW46IGNsb3VkLWluZnJhc3RydWN0dXJlCi0tLQoK" + - "IyBOVkNGIFNlbGYtTWFuYWdlZCBTdGFjayBPcGVyYXRpb25zCgpPcGVyYXRpb25hbCBndWlkZSBm" + - "b3IgbWF0Y2hpbmcgTlZDRiBjb250cm9sLXBsYW5lIGFuZCBjb21wdXRlLXBsYW5lIEhlbG1maWxl" + - "IGJ1bmRsZXMuCgojIyBJbnN0cnVjdGlvbnMKClVzZSB0aGlzIHNraWxsIGZvciBpbnN0YWxsLCB1" + - "cGdyYWRlLCBvciB0ZWFyZG93biB3b3JrIGluIG1hdGNoaW5nIGBudmNmLXNlbGYtbWFuYWdlZC1z" + - "dGFja2AgYW5kIGBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXM7IGtlZXAgSGVsbWZp" + - "bGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSBoYW5kb2ZmcyBzZXBhcmF0ZS4gRm9yIGBmdW5jdGlv" + - "blR5cGU6ICJMTE0iYCwgcmVhZCBbTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnRdKHJlZmVyZW5jZXMv" + - "aGVsbWZpbGUtc3RydWN0dXJlLm1kI2xsbS1mdW5jdGlvbi1lbmFibGVtZW50KS4KCiMjIFByZXJl" + - "cXVpc2l0ZXMKCkFzayBmb3IgdGhlIGV4dHJhY3RlZCBgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2tg" + - "IHBhdGguIEZvciBzcGxpdCBpbnN0YWxsYXRpb24sCmFsc28gcmVxdWlyZSB0aGUgbWF0Y2hpbmct" + - "dmVyc2lvbiBgbnZjZi1jb21wdXRlLXBsYW5lLXN0YWNrYCBwYXRoLiBWZXJpZnkgYm90aDoKCmBg" + - "YGJhc2gKbHMgPGNvbnRyb2wtcGxhbmUtc3RhY2s+L2hlbG1maWxlLmQvIDxjb250cm9sLXBsYW5l" + - "LXN0YWNrPi9lbnZpcm9ubWVudHMvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9zZWNyZXRzLyA8Y29u" + - "dHJvbC1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmxzIDxjb21wdXRlLXBsYW5lLXN0" + - "YWNrPi9oZWxtZmlsZS5kLyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZW52aXJvbm1lbnRzLyA8Y29t" + - "cHV0ZS1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmBgYAoKSWYgZWl0aGVyIGRpcmVj" + - "dG9yeSBpcyBtaXNzaW5nLCBkb3dubG9hZCBtYXRjaGluZyBidW5kbGUgdmVyc2lvbnMgZnJvbSBO" + - "R0M6CgpgYGBiYXNoCm5nYyByZWdpc3RyeSByZXNvdXJjZSBkb3dubG9hZC12ZXJzaW9uIDxvcmc+" + - "L252Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrOjx2ZXJzaW9uPgpuZ2MgcmVnaXN0cnkgcmVzb3VyY2Ug" + - "ZG93bmxvYWQtdmVyc2lvbiA8b3JnPi9udmNmLWNvbXB1dGUtcGxhbmUtc3RhY2s6PHZlcnNpb24+" + - "CmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhlIGNvbnRyb2wtcGxh" + - "bmUgYnVuZGxlIHJvb3QuIFNwbGl0LWZsb3cKY29tbWFuZHMgYW5kIHJvb3Qgc3Vic3RpdHV0aW9u" + - "IGFyZSBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29t" + - "cHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLgoKIyMgQmVmb3JlIFlvdSBTdGFydAoKVmVyaWZ5" + - "IHRvb2xpbmcgYW5kIGNvbnRleHQgYmVmb3JlIGFueSBvcGVyYXRpb246CgpgYGBiYXNoCmhlbG1m" + - "aWxlIC0tdmVyc2lvbiAgICMgTXVzdCBiZSAxLjEueCAoMS4yLjAgcmVtb3ZlZCBzZXF1ZW50aWFs" + - "IG1vZGUpCmhlbG0gdmVyc2lvbiAgICAgICAgICMgTXVzdCBiZSA+PSAzLjEyCmhlbG0gcGx1Z2lu" + - "IGxpc3QgICAgICMgTXVzdCBpbmNsdWRlIGhlbG0tZGlmZiA+PSAzLjExCmt1YmVjdGwgdmVyc2lv" + - "biAgICAgICMgQ2xpZW50IG11c3QgYmUgd2l0aGluIDEgbWlub3IgdmVyc2lvbiBvZiBjbHVzdGVy" + - "CmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5kcyBydW4gZnJvbSB0aGUgZXh0cmFjdGVkIGBudmNm" + - "LXNlbGYtbWFuYWdlZC1zdGFjay9gIHJvb3Q6CgpgYGBiYXNoCmNkIHBhdGgvdG8vbnZjZi1zZWxm" + - "LW1hbmFnZWQtc3RhY2sKbHMgaGVsbWZpbGUuZC8gZW52aXJvbm1lbnRzLyBzZWNyZXRzLyBnbG9i" + - "YWwueWFtbC5nb3RtcGwKYGBgCgpJZGVudGlmeSB0aGUgZW52aXJvbm1lbnQgZnJvbSBgZW52aXJv" + - "bm1lbnRzLzxuYW1lPi55YW1sYCBhbmQKYHNlY3JldHMvPG5hbWU+LXNlY3JldHMueWFtbGA7IGZv" + - "ciBFS1MsIHVzZSB0aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczov" + - "L2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4K" + - "CiMjIEhvdyBWYWx1ZXMgRmxvdwoKVW5kZXJzdGFuZGluZyB2YWx1ZSBwcmVjZWRlbmNlIHByZXZl" + - "bnRzIHRoZSBtb3N0IGNvbW1vbiBjb25maWd1cmF0aW9uIG1pc3Rha2VzLgoKYGBgdGV4dAplbnZp" + - "cm9ubWVudHMvYmFzZS55YW1sICAgICAgICAgIChkZWZhdWx0cykKICAgIC0+IG1lcmdlZCB3aXRo" + - "CmVudmlyb25tZW50cy88ZW52Pi55YW1sICAgICAgICAgKHlvdXIgb3ZlcnJpZGVzKQogICAgLT4g" + - "Y29uc3VtZWQgYnkKZ2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAoR28gdGVtcGxhdGUs" + - "IGNvbnN0cnVjdHMgcGVyLWNoYXJ0IHZhbHVlcykKICAgIC0+IGNvbnN1bWVkIGJ5CnNlY3JldHMv" + - "PGVudj4tc2VjcmV0cy55YW1sICAgICAgKHNlbnNpdGl2ZSB2YWx1ZXMpCiAgICAtPiBvdmVycmlk" + - "ZGVuIGJ5CnJlbGVhc2UgaW5saW5lIHZhbHVlczogYmxvY2tzICAgKGhpZ2hlc3QgcHJlY2VkZW5j" + - "ZSkKYGBgCgpDcml0aWNhbDogYGdsb2JhbC55YW1sLmdvdG1wbGAgb25seSBwYXNzZXMgdGhyb3Vn" + - "aCBzcGVjaWZpYyBrZXlzIHRvIGVhY2ggY2hhcnQgKGltYWdlIHJlZ2lzdHJpZXMsIG5vZGUgc2Vs" + - "ZWN0b3JzLCBzdG9yYWdlLCByZXBsaWNhIGNvdW50cykuIFNldHRpbmcgYW4gYXJiaXRyYXJ5IGNo" + - "YXJ0IHZhbHVlIGluIHRoZSBlbnZpcm9ubWVudCBmaWxlIHdpbGwgYmUgc2lsZW50bHkgaWdub3Jl" + - "ZCBpZiBgZ2xvYmFsLnlhbWwuZ290bXBsYCBkb2VzIG5vdCBwcm9wYWdhdGUgaXQuCgpUbyBvdmVy" + - "cmlkZSBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzLCB1c2UgYSBoZWxtZmlsZSByZWxlYXNlIGB2YWx1" + - "ZXM6YCBibG9jay4gU2VlIFtPdmVycmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzXSgjb3ZlcnJpZGlu" + - "Zy1oZWxtLWNoYXJ0LXZhbHVlcykuCgojIyBDbGVhbiBJbnN0YWxsYXRpb24KCiMjIyAxLiBDcmVh" + - "dGUgbmFtZXNwYWNlcyBhbmQgaW1hZ2UgcHVsbCBzZWNyZXRzIChpZiB1c2luZyBhIHByaXZhdGUg" + - "cmVnaXN0cnkpCgpgYGBiYXNoCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVt" + - "IG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1" + - "YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSAiJG5zIiAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBr" + - "dWJlY3RsIGFwcGx5IC1mIC0KZG9uZQoKIyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUg" + - "cmVnaXN0cnkgKGUuZy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtl" + - "eT4iCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMg" + - "ZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgY3JlYXRlIHNl" + - "Y3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZj" + - "ci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2Vy" + - "LXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0t" + - "ZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpkb25lCmBgYAoKSWYg" + - "dXNpbmcgcHVsbCBzZWNyZXRzLCB5b3UgbXVzdCBhbHNvIGNvbmZpZ3VyZSBlYWNoIGhlbG1maWxl" + - "IHJlbGVhc2UgdG8gcmVmZXJlbmNlIHRoZW0uIFNlZSBbSW1hZ2UgUHVsbCBTZWNyZXRzXSgjaW1h" + - "Z2UtcHVsbC1zZWNyZXRzKS4KCiMjIyAyLiBBdXRoZW50aWNhdGUgaGVsbSB0byB5b3VyIGNoYXJ0" + - "IHJlZ2lzdHJ5CgpCb3RoIGBkb2NrZXIgbG9naW5gIEFORCBgaGVsbSByZWdpc3RyeSBsb2dpbmAg" + - "YXJlIHJlcXVpcmVkIGZvciBOR0MuIEhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8g" + - "cHVsbCBPQ0kgY2hhcnRzLCBzbyB0aGUgaGVsbSBjcmVkZW50aWFsIHN0b3JlIG11c3QgYmUgYXV0" + - "aGVudGljYXRlZCBzZXBhcmF0ZWx5LgoKYGBgYmFzaAojIE5HQyAtLSBib3RoIGNvbW1hbmRzIGFy" + - "ZSByZXF1aXJlZApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdD" + - "X0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1w" + - "ICIkTkdDX0FQSV9LRVkiCgojIEVDUgphd3MgZWNyIGdldC1sb2dpbi1wYXNzd29yZCAtLXJlZ2lv" + - "biA8cmVnaW9uPiB8IFwKICBoZWxtIHJlZ2lzdHJ5IGxvZ2luIC0tdXNlcm5hbWUgQVdTIC0tcGFz" + - "c3dvcmQtc3RkaW4gPGFjY291bnQ+LmRrci5lY3IuPHJlZ2lvbj4uYW1hem9uYXdzLmNvbQpgYGAK" + - "Cj4gTm90ZTogYGhlbG0gcmVnaXN0cnkgbG9naW5gIGtlZXBzIG9ubHkgdGhlIGxhc3QgbG9naW4g" + - "cGVyIGhvc3QgKG11bHRpLW9yZyBnb3RjaGEpLgo+IFRoZSBzdGFjayBhbmQgdGhlIGNhY2hlcyBz" + - "cGFuIHNldmVyYWwgTkdDIG9yZ3MgdGhhdCBuZWVkIGRpZmZlcmVudCBrZXlzLCBidXQgdGhleSBh" + - "bGwKPiBsaXZlIHVuZGVyIHRoZSBvbmUgaG9zdCBgbnZjci5pb2AuIEEgc2Vjb25kIGBoZWxtIHJl" + - "Z2lzdHJ5IGxvZ2luIG52Y3IuaW9gIChvcgo+IGBkb2NrZXIgbG9naW5gKSB3aXRoIGEgZGlmZmVy" + - "ZW50IGtleSBzaWxlbnRseSBvdmVyd3JpdGVzIHRoZSBmaXJzdCwgc28gcHVsbHMgZm9yIHRoZQo+" + - "IGZpcnN0IG9yZyB0aGVuIGZhaWwgd2l0aCBhIG1pc2xlYWRpbmcgYDQwMyBBY2Nlc3MgRGVuaWVk" + - "YCAobm90IGEgNDAxOiB0aGUgYXV0aAo+IHN1Y2NlZWRlZCwgaXQncyB0aGUgd3Jvbmctb3JnIGtl" + - "eSkuIElmIHlvdSBwdWxsIGNoYXJ0cy9pbWFnZXMgZnJvbSBtb3JlIHRoYW4gb25lIG9yZywKPiBl" + - "aXRoZXIgcmUtcnVuIHRoZSBsb2dpbiB3aXRoIHRoZSBjb3JyZWN0IGtleSBpbW1lZGlhdGVseSBi" + - "ZWZvcmUgZWFjaCBwdWxsLCBvciBwYXNzCj4gYC0tdXNlcm5hbWUgJyRvYXV0aHRva2VuJyAtLXBh" + - "c3N3b3JkIDxrZXk+YCBwZXIgYGhlbG0gcHVsbGAgaW52b2NhdGlvbiBpbnN0ZWFkIG9mIHJlbHlp" + - "bmcKPiBvbiB0aGUgc3RvcmVkIGxvZ2luLiAoUHVsbGluZyBldmVyeXRoaW5nIGZyb20gYSBzaW5n" + - "bGUgcmVnaXN0cnkgbWlycm9yIGF2b2lkcyB0aGlzCj4gZW50aXJlbHkuKQoKIyMjIDJiLiAoUmVj" + - "b21tZW5kZWQpIFB1bGwgZnJvbSBhIHJlZ2lzdHJ5IHRoZSBjbHVzdGVyIGF1dGhlbnRpY2F0ZXMg" + - "dG8gYXV0b21hdGljYWxseQoKSWYgeW91IG1pcnJvciB0aGUgTlZDRiBpbWFnZXMgaW50byBhIHJl" + - "Z2lzdHJ5IHRoYXQgdGhlIGNsdXN0ZXIgY2FuIHB1bGwgZnJvbSB3aXRob3V0IGFuCmV4cGxpY2l0" + - "IGltYWdlIHB1bGwgc2VjcmV0IChmb3IgZXhhbXBsZSwgYSByZWdpc3RyeSB3aGVyZSB0aGUgbm9k" + - "ZSBvciB3b3JrbG9hZCBpZGVudGl0eSBpcwpncmFudGVkIHB1bGwgYWNjZXNzIGF1dG9tYXRpY2Fs" + - "bHkpLCBwb2ludCB0aGUgc3RhY2sgYXQgaXQgYW5kIHNraXAgdGhlIGNyZWRlbnRpYWwgc3RlcHMK" + - "YWJvdmUuCgoxLiBQb2ludCB0aGUgc3RhY2sgYXQgdGhlIG1pcnJvciBpbiBgZW52aXJvbm1lbnRz" + - "LzxlbnY+LnlhbWxgOgoKICAgYGBgeWFtbAogICBnbG9iYWw6CiAgICAgaW1hZ2U6CiAgICAgICBy" + - "ZWdpc3RyeTogPHlvdXItcmVnaXN0cnk+ICAgICAgICAgICAgIyBlLmcuIHJlZ2lzdHJ5LmV4YW1w" + - "bGUuY29tCiAgICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICAgIGhlbG06CiAg" + - "ICAgICBzb3VyY2VzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25seSBpZiB5b3Ug" + - "YWxzbyBtaXJyb3JlZCB0aGUgaGVsbSBjaGFydHMKICAgICAgICAgcmVnaXN0cnk6IDx5b3VyLXJl" + - "Z2lzdHJ5PgogICAgICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICBgYGAKCiAg" + - "ID4gVGhlIG1hbmlmZXN0IGhhcyBhIG1peCBvZiBPQ0kgYW5kIG5vbi1PQ0kgYXJ0aWZhY3RzLCBz" + - "byBjb252ZXJ0IG5vbi1PQ0kgY2hhcnRzIGJlZm9yZQogICA+IG1pcnJvcmluZy4gQ29udGFpbmVy" + - "IGltYWdlcyAoYG52Y3IuaW8vLi4uYCkgYXJlIGFscmVhZHkgT0NJIGFuZCBtaXJyb3IgYXMtaXMu" + - "IFNvbWUgSGVsbQogICA+IGNoYXJ0cywgdGhvdWdoLCBhcmUgcHVibGlzaGVkIHRvIGFuIGBodHRw" + - "czovL2AgSGVsbSByZXBvc2l0b3J5IChmb3IgZXhhbXBsZQogICA+IGBoZWxtLm5nYy5udmlkaWEu" + - "Y29tYCkuIFRob3NlIGFyZSBub3QgT0NJIGFuZCBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgYGdsb2Jh" + - "bC5oZWxtLnNvdXJjZXNgCiAgID4gKE9DSSkgb3IgbWlycm9yZWQgZGlyZWN0bHkuIEJlZm9yZSBw" + - "b2ludGluZyB0aGUgc3RhY2sgYXQgeW91ciBtaXJyb3IsIGNvbnZlcnQgZWFjaAogICA+IGBodHRw" + - "czovL2AgY2hhcnQgdG8gT0NJOiBgaGVsbSByZXBvIGFkZGAvYGhlbG0gcHVsbGAgdGhlIGAudGd6" + - "YCwgdGhlbgogICA+IGBoZWxtIHB1c2ggPGNoYXJ0Pi50Z3ogb2NpOi8vPHlvdXItcmVnaXN0cnk+" + - "LzxtaXJyb3Itc3ViLXBhdGg+YC4gT25seSBPQ0kgY2hhcnRzIGNhbiBsaXZlCiAgID4gdW5kZXIg" + - "YGdsb2JhbC5oZWxtLnNvdXJjZXNgLgoKMi4gU2tpcCB0aGUgY3JlZGVudGlhbCBzdGVwcyBhYm92" + - "ZS4gV2hlbiB0aGUgY2x1c3RlciBhdXRoZW50aWNhdGVzIHRvIHRoZSByZWdpc3RyeQogICBhdXRv" + - "bWF0aWNhbGx5ICh0aGUgbm9kZSBvciB3b3JrbG9hZCBpZGVudGl0eSBoYXMgcHVsbCBhY2Nlc3Mp" + - "LCB0aGUgcHVsbCBuZWVkcyBubwogICBLdWJlcm5ldGVzIHNlY3JldCwgc28geW91IGRvIG5vdCBu" + - "ZWVkOiB0aGUgcGVyLW5hbWVzcGFjZSBgbnZjci1jcmVkc2AgZnJvbSBzdGVwIDEKICAgKHN0aWxs" + - "IGNyZWF0ZSB0aGUgbmFtZXNwYWNlcywganVzdCBub3QgdGhlIHNlY3JldCksIHRoZSBgZ2xvYmFs" + - "LmltYWdlUHVsbFNlY3JldHNgIGVudHJ5LAogICBvciB0aGUgYGRvY2tlciBsb2dpbmAvYGhlbG0g" + - "cmVnaXN0cnkgbG9naW4gbnZjci5pb2AgZnJvbSBzdGVwIDIuCgogICA+IE9uZSByZXNpZHVhbCBj" + - "cmVkZW50aWFsOiBudmNmLWFwaSBzdGlsbCB2YWxpZGF0ZXMgdGhlIHVzZXIgZnVuY3Rpb24gaW1h" + - "Z2UgYXQKICAgPiBgZnVuY3Rpb24gY3JlYXRlYCB2aWEgdGhlIGFjY291bnQgcmVnaXN0cnkgY3Jl" + - "ZGVudGlhbCwgc28gdGhhdCBjcmVkZW50aWFsIG11c3QgcG9pbnQgYXQKICAgPiB3aGljaGV2ZXIg" + - "cmVnaXN0cnkgaG9sZHMgdGhlIHVzZXIgaW1hZ2UgKHNldCBpdCB0byB5b3VyIG1pcnJvciBpZiB0" + - "aGUgaW1hZ2UgaXMgbWlycm9yZWQKICAgPiB0aGVyZSkuCgojIyMgMy4gU2V0IHRoZSByb3V0ZSBk" + - "b21haW4KCmBnbG9iYWwuZG9tYWluYCBzZXRzIHRoZSBob3N0bmFtZSBzdWZmaXggZm9yIHJvdXRl" + - "cyBzdWNoIGFzIGBhcGkuPGRvbWFpbj5gLiBJdCBkb2VzIG5vdCBjb25maWd1cmUgdGhlIEdhdGV3" + - "YXkgb3IgaXRzIGxvYWQgYmFsYW5jZXIuIFF1ZXJ5IHRoZSBleGFjdCBleGlzdGluZyBHYXRld2F5" + - "OgoKYGBgYmFzaApHQVRFV0FZX0FERFJFU1M9JChrdWJlY3RsIGdldCBnYXRld2F5IDxnYXRld2F5" + - "LW5hbWU+IC1uIDxnYXRld2F5LW5hbWVzcGFjZT4gLW8ganNvbnBhdGg9J3suc3RhdHVzLmFkZHJl" + - "c3Nlc1swXS52YWx1ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSRVNTIgpgYGAKClRoZSBhZGRy" + - "ZXNzIG1heSBiZSBhIGhvc3RuYW1lIG9yIElQLiBDbG91ZCBwcm92aWRlciBhbmQgR2F0ZXdheSBj" + - "b25maWd1cmF0aW9uIGRldGVybWluZSB0aGUgbG9hZCBiYWxhbmNlciB0eXBlIGFuZCBhZGRyZXNz" + - "IGZvcm1hdC4gVGhlIHNlbGYtbWFuYWdlZCBzdGFjayBkb2VzIG5vdCBzZWxlY3QgZWl0aGVyLgoK" + - "Rm9yIHRlbXBvcmFyeSB0ZXN0aW5nIHdpdGhvdXQgRE5TLCB1c2UgYSBzdGFibGUgcmVzZXJ2ZWQg" + - "c3VmZml4IHN1Y2ggYXMgYGdsb2JhbC5kb21haW46ICJudmNmLnRlc3QiYCwgY29ubmVjdCB0byBg" + - "R0FURVdBWV9BRERSRVNTYCwgYW5kIHNlbmQgYEhvc3Q6IGFwaS5udmNmLnRlc3RgLiBGb3IgcHJv" + - "ZHVjdGlvbiwgdXNlIHlvdXIgYmFzZSBETlMgZG9tYWluIGFuZCBwb2ludCBpdHMgcm91dGUgcmVj" + - "b3JkcyB0byBgR0FURVdBWV9BRERSRVNTYC4gSWYgdGhlIGVuZHBvaW50IGxhdGVyIGNoYW5nZXMs" + - "IGtlZXAgYGdsb2JhbC5kb21haW5gIHN0YWJsZSBhbmQgdXBkYXRlIG9ubHkgRE5TIG9yIHRoZSBj" + - "bGllbnQgZGVzdGluYXRpb24uIFNlZSBFeGFtcGxlIDQgaW4gW2V4YW1wbGVzLm1kXShleGFtcGxl" + - "cy5tZCkuCgojIyMgNC4gUHJldmlldyBhbmQgZGVwbG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08" + - "ZW52LW5hbWU+IGhlbG1maWxlIHRlbXBsYXRlICAgIyBQcmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0" + - "cwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSBzeW5jICAgICAgICMgRGVwbG95CmBg" + - "YAoKPiBTZXQgQk9USCBDYXNzYW5kcmEgcGFzc3dvcmRzIGluIHRoZSBzZWNyZXRzIGZpbGUuIFRo" + - "ZSBzZWNyZXRzIGZpbGUgZG9jdW1lbnRzCj4gYERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYCwg" + - "YnV0IHRoZSBjYXNzYW5kcmEgY2hhcnQgaGFzIGEgc2Vjb25kIGNyZWRlbnRpYWwsCj4gYGNhc3Nh" + - "bmRyYS5zZXJ2aWNlUm9sZVBhc3N3b3JkYCwgdGhhdCBkZWZhdWx0cyB0byBgY2hAbmczbTNgLiBJ" + - "ZiB5b3Ugc2V0IG9ubHkKPiBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgLCB0aGUgc2Vydmlj" + - "ZSByb2xlIGtlZXBzIHRoYXQgZGVmYXVsdCBhbmQgZXZlcnkgREItYmFja2VkCj4gc2VydmljZSBj" + - "cmFzaC1sb29wcyB3aXRoIGBCYWQgY3JlZGVudGlhbHNgIG9uY2UgaXQgdHJpZXMgdG8gYXV0aGVu" + - "dGljYXRlLiBTZXQKPiBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHRvIHRoZSBzYW1l" + - "IHZhbHVlIGFzIGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAuCgojIyMgNS4gRGVwbG95bWVu" + - "dCBwaGFzZXMKCkhlbG1maWxlIGRlcGxveXMgaW4gb3JkZXIgd2l0aCBkZXBlbmRlbmNpZXM6Cgp8" + - "IFBoYXNlIHwgU2VsZWN0b3IgfCBTZXJ2aWNlcyB8IFdhaXQgdGltZSB8CnwtLS0tLS0tfC0tLS0t" + - "LS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwKfCAxIHwgYHJlbGVhc2UtZ3JvdXA9ZGVwZW5k" + - "ZW5jaWVzYCB8IE5BVFMsIE9wZW5CYW8sIENhc3NhbmRyYSB8IDUtMTAgbWluIHwKfCAyIHwgYHJl" + - "bGVhc2UtZ3JvdXA9c2VydmljZXNgIHwgQVBJLCBTSVMsIEVTUywgaW52b2NhdGlvbiwgZ3JwYy1w" + - "cm94eSwgbm90YXJ5LCBhcGkta2V5cywgb3B0aW9uYWwgTExNIGdhdGV3YXkvcm91dGVyLCBvcHRp" + - "b25hbCBWYW5pdHkgR2F0ZXdheSwgTlZDRiBVSSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1" + - "ZGVzIHRoZSBhZGRvbiB8IDUtMTAgbWluIHwKfCAzIHwgYHJlbGVhc2UtZ3JvdXA9aW5ncmVzc2Ag" + - "fCBHYXRld2F5IHJvdXRlcyB8IDEtMiBtaW4gfAp8IDQgfCBgcmVsZWFzZS1ncm91cD1vYnNlcnZh" + - "YmlsaXR5YCB8IE9ic2VydmFiaWxpdHkgc3RhY2sgKGlmIGVuYWJsZWQpIHwgMS0yIG1pbiB8CgpN" + - "b25pdG9yIGluIGEgc2VwYXJhdGUgdGVybWluYWw6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZHMg" + - "LUEgLXcKYGBgCgojIyMgNi4gRW5hYmxlIFZhbml0eSBHYXRld2F5IChvcHRpb25hbCkKClZhbml0" + - "eSBHYXRld2F5IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgYW5kIGlzIG9ubHkgbmVlZGVkIGZvciBj" + - "dXN0b21lci1mYWNpbmcKaG9zdG5hbWVzIG9yIHBhdGggbWFwcGluZ3MgaW4gZnJvbnQgb2YgdGhl" + - "IHN0YW5kYXJkIE5WQ0YgQVBJIGFuZCBpbnZvY2F0aW9uCnJvdXRlcy4gSXQgaXMgYXZhaWxhYmxl" + - "IG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBWYW5pdHkgR2F0ZXdheQph" + - "ZGRvbi4gSWYgdGhlIGV4dHJhY3RlZCBzdGFjayBwYWNrYWdlIGRvZXMgbm90IGNvbnRhaW4gYSBg" + - "dmFuaXR5LWdhdGV3YXlgCnJlbGVhc2UgYW5kIGB2YW5pdHlHYXRld2F5YCByb3V0ZSB2YWx1ZXMs" + - "IHNraXAgdGhlc2UgY29tbWFuZHMgYW5kIHVzZSBhIG5ld2VyCnN0YWNrIHBhY2thZ2UgdGhhdCBp" + - "bmNsdWRlcyB0aGVtLgoKSWYgdGhlIHN0YWNrIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLCBl" + - "bmFibGUgaXQgaW4KYGVudmlyb25tZW50cy88ZW52LW5hbWU+LnlhbWxgOgoKYGBgeWFtbAphZGRv" + - "bnM6CiAgdmFuaXR5R2F0ZXdheToKICAgIGVuYWJsZWQ6IHRydWUKICAgIG1hcHBpbmdDb25maWc6" + - "IHt9CmBgYAoKVGhlIGRlZmF1bHQgcm91dGUgaG9zdCBpcyBgdmFuaXR5Ljxkb21haW4+YCBhbmQg" + - "dGhlIGJhY2tlbmQgaXMKYHZhbml0eS1nYXRld2F5Lm52Y2Y6ODA4MGAuIFB1dCBkZXBsb3ltZW50" + - "LXNwZWNpZmljIGhvc3QgYW5kIHBhdGggbWFwcGluZ3MgdW5kZXIKYGFkZG9ucy52YW5pdHlHYXRl" + - "d2F5Lm1hcHBpbmdDb25maWdgLiBJZiB5b3UgbmVlZCBjdXN0b20gdmFuaXR5IGhvc3RzIGluc3Rl" + - "YWQgb2YKYHZhbml0eS48ZG9tYWluPmAsIHVzZSB0aGUgcm91dGUgaG9zdG5hbWUgb3ZlcnJpZGVz" + - "IHN1cHBvcnRlZCBieSB0aGUgc3RhY2sKcGFja2FnZSBhbmQgY3JlYXRlIG1hdGNoaW5nIEROUyBy" + - "ZWNvcmRzLgoKQWZ0ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYHZhbml0" + - "eS1nYXRld2F5YCByZWxlYXNlLCBwcmV2aWV3IGFuZAphcHBseSB0aGUgc2VydmljZSBhbmQgcm91" + - "dGU6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3Ig" + - "bmFtZT12YW5pdHktZ2F0ZXdheSB0ZW1wbGF0ZQpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxt" + - "ZmlsZSAtLXNlbGVjdG9yIG5hbWU9dmFuaXR5LWdhdGV3YXkgc3luYwpIRUxNRklMRV9FTlY9PGVu" + - "di1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBg" + - "YAoKVmVyaWZ5IHRoZSByb3V0ZSBvbmx5IHdoZW4gdGhlIGFkZG9uIGlzIHByZXNlbnQgYW5kIGVu" + - "YWJsZWQ6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSxzdmMgLW4gbnZjZiAtbCBhcHAua3Vi" + - "ZXJuZXRlcy5pby9uYW1lPXZhbml0eS1nYXRld2F5Cmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8" + - "IGdyZXAgLWkgdmFuaXR5CmN1cmwgLUggIkhvc3Q6IHZhbml0eS48ZG9tYWluPiIgImh0dHA6Ly88" + - "Z2F0ZXdheS1hZGRyZXNzPi9oZWFsdGgiCmBgYAoKRG8gbm90IGVuYWJsZSBWYW5pdHkgR2F0ZXdh" + - "eSBmb3Igc3RhbmRhcmQgQVBJLCBBUEkgS2V5cywgaW52b2NhdGlvbiwgTExNCmludm9jYXRpb24s" + - "IG9yIGdSUEMgdHJhZmZpYy4gVGhvc2Ugcm91dGVzIGFyZSBwcm92aWRlZCBieSB0aGUgYmFzZSBn" + - "YXRld2F5CnJvdXRlcy4KCiMjIyA3LiBFbmFibGUgTlZDRiBVSSAob3B0aW9uYWwpCgpOVkNGIFVJ" + - "IGlzIGFuIG9wdGlvbmFsLCBjdXN0b21lci1mYWNpbmcgYWRtaW4tcGFuZWwgVUkuIEl0IGlzIGRp" + - "c2FibGVkIGJ5CmRlZmF1bHQgYW5kIGF2YWlsYWJsZSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRo" + - "YXQgaW5jbHVkZSB0aGUgTlZDRiBVSSBhZGRvbi4gSWYKeW91ciBleHRyYWN0ZWQgc3RhY2sgcGFj" + - "a2FnZSBkb2VzIG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UgYW5kIGBudmNmVWlgCnJv" + - "dXRlIHZhbHVlcywgc2tpcCB0aGlzIHNlY3Rpb24uIFRoZSBOVkNGIFVJIGFkbWluIHBhbmVsIGlz" + - "IGN1cnJlbnRseQp1bmF1dGhlbnRpY2F0ZWQ7IGRvIG5vdCBleHBvc2UgaXQgdG8gdGhlIHB1Ymxp" + - "YyBpbnRlcm5ldC4KCkZvciBlbmFibGVtZW50LCBuYW1lc3BhY2UgYW5kIHB1bGwgc2VjcmV0IHNl" + - "dHVwLCBhcHBseSwgYW5kIHZlcmlmaWNhdGlvbiBzdGVwcywKc2VlIFtOVkNGIFVJIEFkZG9uXShy" + - "ZWZlcmVuY2VzL252Y2YtdWktYWRkb24ubWQpLgoKIyMjIDguIEluc3RhbGwgdGhlIHNlcGFyYXRl" + - "IGNvbXB1dGUtcGxhbmUgc3RhY2sKClRoZSBjb250cm9sLXBsYW5lIHN0YWNrIGRvZXMgbm90IGlu" + - "c3RhbGwgY29tcHV0ZS1wbGFuZSBjb21wb25lbnRzLiBBZnRlciBpdCBpcyBoZWFsdGh5LCBjaG9v" + - "c2UgZXhhY3RseSBvbmUgY29tcHV0ZS1wbGFuZSBoYW5kb2ZmOgoKLSBIZWxtZmlsZSB2YWx1ZXMg" + - "ZmxvdzogYXV0aG9yIHNlcGFyYXRlIGVudmlyb25tZW50IGZpbGVzLCB0aGVuIHJlZ2lzdGVyIGFu" + - "ZAogIGluc3RhbGwgd2l0aCB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZS4KLSBDTEkgcHJvZmls" + - "ZSBmbG93OiB1c2UgdGhlIHByb2ZpbGUgZ2VuZXJhdGVkIGJ5IHRoZSBDTEkgY29udHJvbC1wbGFu" + - "ZSBpbnN0YWxsLAogIHRoZW4gcnVuIHRoZSBjb21wbGV0ZSBDTEkgcmVnaXN0ZXIgYW5kIGluc3Rh" + - "bGwgY29tbWFuZHMuCgpEbyBub3QgbWl4IHRoZXNlIGhhbmRvZmZzLiBGb2xsb3cgW1NwbGl0IENv" + - "bXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFs" + - "bGF0aW9uLm1kKQpmb3IgY29tbWFuZHMsIEVLUyByb3V0aW5nLCBwdWxsIHNlY3JldHMsIHZlcmlm" + - "aWNhdGlvbiwgYW5kIHRlYXJkb3duIG9yZGVyLgoKIyMgQ2xlYW4gVGVhcmRvd24KCkRlc3Ryb3kg" + - "ZXZlcnkgY29tcHV0ZSBwbGFuZSBiZWZvcmUgdGhlIGNvbnRyb2wgcGxhbmUsIHVzaW5nIHRoZSB0" + - "ZWFyZG93biBmb3IKdGhlIHNhbWUgaGFuZG9mZjsgc2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIElu" + - "c3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCN0ZWFy" + - "ZG93bikuCgpTY29wZTogT25seSBkZXN0cm95IHJlbGVhc2VzIG1hbmFnZWQgYnkgdGhpcyBjb250" + - "cm9sLXBsYW5lIGhlbG1maWxlIHN0YWNrLiBUaGUgTlZDRiByZWxlYXNlcyBhcmU6IGBuYXRzYCwg" + - "YG9wZW5iYW8tc2VydmVyYCwgYGNhc3NhbmRyYWAsIGBhcGkta2V5c2AsIGBzaXNgLCBgYXBpYCwg" + - "YGludm9jYXRpb24tc2VydmljZWAsIGBncnBjLXByb3h5YCwgYGVzcy1hcGlgLCBgbm90YXJ5LXNl" + - "cnZpY2VgLCBvcHRpb25hbCBgdmFuaXR5LWdhdGV3YXlgLCBgbnZjZi11aWAsIGBhZG1pbi1pc3N1" + - "ZXItcHJveHlgLCBhbmQgYGluZ3Jlc3NgOyBgY2VydC1tYW5hZ2VyYCBpcyBpbmNsdWRlZCBvbmx5" + - "IHdoZW4gYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IHRydWVgLiBUaGUgY29udHJvbC1wbGFuZSBuYW1l" + - "c3BhY2UgaW52ZW50b3J5IGFsc28gaW5jbHVkZXMgYGNlcnQtbWFuYWdlcmAsIGJ1dCBkZWZhdWx0" + - "IG5hbWVzcGFjZSBjbGVhbnVwIHByZXNlcnZlcyBpdC4gTmFtZXNwYWNlIHByZXNlcnZhdGlvbiBk" + - "b2VzIG5vdCBwcmVzZXJ2ZSB0aGUgSGVsbSByZWxlYXNlLiBFeHRlcm5hbCBjZXJ0LW1hbmFnZXIg" + - "bXVzdCB1c2UgYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNlYDsgb3RoZXJ3aXNlIEhlbG1maWxl" + - "IHRyZWF0cyB0aGUgcmVsZWFzZSBhcyBzdGFjay1tYW5hZ2VkLiBEbyBub3QgZGVsZXRlIG90aGVy" + - "IGhlbG0gcmVsZWFzZXMgb3IgbmFtZXNwYWNlcyBvbiB0aGUgY2x1c3Rlci4KCkJlZm9yZSBjb250" + - "cm9sLXBsYW5lIGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVy" + - "bmFsLiBGb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2Vy" + - "dE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4g" + - "aW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdl" + - "ci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRh" + - "ZGF0YSBhbmQgYWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBQcmVzZXJ2" + - "ZSB0aGUgbmFtZXNwYWNlIGJ5IGRlZmF1bHQ7IG9ubHkgcGxhbiBpdHMgcmVtb3ZhbCBhZnRlciB2" + - "ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGdldHRpbmcgZXhwbGljaXQgY29uZmly" + - "bWF0aW9uLgoKIyMjIFN0YW5kYXJkIHRlYXJkb3duCgpSdW4gZnJvbSBpbnNpZGUgdGhlIGBudmNm" + - "LXNlbGYtbWFuYWdlZC1zdGFjay9gIGRpcmVjdG9yeToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxl" + - "bnYtbmFtZT4gaGVsbWZpbGUgZGVzdHJveQpgYGAKCiMjIyBEZWxldGUgbmFtZXNwYWNlcwoKYGBg" + - "YmFzaApmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlz" + - "IGVzcyBzaXMgbnZjZi11aSB2YXVsdC1zeXN0ZW07IGRvCiAga3ViZWN0bCBkZWxldGUgbmFtZXNw" + - "YWNlICIkbnMiIC0taWdub3JlLW5vdC1mb3VuZApkb25lCmBgYAoKIyMjIFZlcmlmeSBjbGVhbgoK" + - "YGBgYmFzaAprdWJlY3RsIGdldCBucyB8IGdyZXAgLUUgJyhjYXNzYW5kcmF8bmF0c3x2YXVsdHxu" + - "dmNmfGFwaS1rZXlzfGVzc3xzaXMpJwojIFNob3VsZCByZXR1cm4gZW1wdHkKYGBgCgojIyBPdmVy" + - "cmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzCgojIyMgRW52aXJvbm1lbnQgZmlsZSAobGltaXRlZCkK" + - "CldvcmtzIG9ubHkgZm9yIGtleXMgdGhhdCBgZ2xvYmFsLnlhbWwuZ290bXBsYCBwcm9wYWdhdGVz" + - "IChlLmcuLCBgY2Fzc2FuZHJhLnJlcGxpY2FDb3VudGAsIGBnbG9iYWwuc3RvcmFnZUNsYXNzYCwg" + - "YGdsb2JhbC5pbWFnZWApLgoKIyMjIFJlbGVhc2UgdmFsdWVzIGJsb2NrIChhbnkgY2hhcnQgdmFs" + - "dWUpCgpFZGl0IHRoZSByZWxlYXNlIGluIGBoZWxtZmlsZS5kLyoueWFtbC5nb3RtcGxgIGFuZCBh" + - "ZGQgYSBgdmFsdWVzOmAgYmxvY2suIEluIHRoZSBleGFtcGxlcyBiZWxvdywgYDxwcml2YXRlLXZh" + - "bHVlcz5gIHJlZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxl" + - "IHN0YWNrIHJvb3QuCgpgYGB5YW1sCi0gbmFtZTogY2Fzc2FuZHJhCiAgdmVyc2lvbjogMC44LjAK" + - "ICBjb25kaXRpb246IGNhc3NhbmRyYS5lbmFibGVkCiAgbmFtZXNwYWNlOiBjYXNzYW5kcmEtc3lz" + - "dGVtCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3Rt" + - "cGwKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5W" + - "IiB9fS1zZWNyZXRzLnlhbWwKICAgIC0gY2Fzc2FuZHJhOgogICAgICAgIHJlc291cmNlczoKICAg" + - "ICAgICAgIGxpbWl0czoKICAgICAgICAgICAgY3B1OiAiOCIKICAgICAgICAgICAgbWVtb3J5OiA4" + - "MTkyTWkKICAgICAgICAgIHJlcXVlc3RzOgogICAgICAgICAgICBjcHU6ICIyIgogICAgICAgICAg" + - "ICBtZW1vcnk6IDQwOTZNaQpgYGAKCllBTUwgbWVyZ2UgZ290Y2hhOiBXaGVuIGEgcmVsZWFzZSB1" + - "c2VzIGA8PDogKmRlcGVuZGVuY3lgIG9yIGBpbmhlcml0YCwgc3BlY2lmeWluZyBgdmFsdWVzOmAg" + - "cmVwbGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QuIFlvdSBtdXN0IHJlLWluY2x1ZGUg" + - "YGdsb2JhbC55YW1sLmdvdG1wbGAgYW5kIHRoZSBzZWNyZXRzIGZpbGUuCgojIyMgUHJldmlldyBh" + - "bmQgYXBwbHkgYSBzaW5nbGUgcmVsZWFzZQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVs" + - "bWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSAgIyBQcmV2aWV3CkhFTE1G" + - "SUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMgICAg" + - "ICAjIEFwcGx5CmBgYAoKIyMgSW1hZ2UgUHVsbCBTZWNyZXRzCgpUaGVyZSBhcmUgdGhyZWUgZGlz" + - "dGluY3QgY3JlZGVudGlhbCB0eXBlcy4gRG8gbm90IGNvbmZsYXRlIHRoZW0sIGFuZCBtaW5kIHRo" + - "ZQpmb3JtYXQgcnVsZSBiZWxvdyAodHdvIG9mIHRoZW0gZmFpbCBldmVuIHdpdGggdGhlIGNvcnJl" + - "Y3Qga2V5IGlmIHRoZSBmb3JtYXQgaXMgd3JvbmcpOgoKfCB8IENvbnRyb2wgUGxhbmUgUHVsbCBT" + - "ZWNyZXRzIHwgQVBJIEJvb3RzdHJhcCBSZWdpc3RyeSBDcmVkcyB8IFNpZGVjYXIgSW1hZ2UtUHVs" + - "bCBTZWNyZXQgfAp8LS0tfC0tLXwtLS18LS0tfAp8IFB1cnBvc2UgfCBLOHMgcHVsbHMgTlZDRiBz" + - "ZXJ2aWNlIGltYWdlcyB8IG52Y2YtYXBpIHZhbGlkYXRlcyB0aGUgdXNlciBmdW5jdGlvbiBpbWFn" + - "ZSBhdCBgZnVuY3Rpb24gY3JlYXRlYCB8IG52Y2YtYXBpIHB1bGxzIHRoZSBwbGF0Zm9ybSBzaWRl" + - "Y2FycyBpbmplY3RlZCBpbnRvIGV2ZXJ5IHdvcmtlciBwb2QgfAp8IFdoZXJlIHwgSzhzIGBkb2Nr" + - "ZXItcmVnaXN0cnlgIFNlY3JldHMgKyBLeXZlcm5vIENsdXN0ZXJQb2xpY3kgfCBgPHByaXZhdGUt" + - "dmFsdWVzPi88ZW52Pi1zZWNyZXRzLnlhbWxgIChhY2NvdW50LWJvb3RzdHJhcCkgfCBgTlZDRl9B" + - "UElfU0lERUNBUlNfSU1BR0VfUFVMTF9TRUNSRVRgIGluIGA8ZW52Pi1zZWNyZXRzLnlhbWxgIC0+" + - "IE9wZW5CYW8gYHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0" + - "YCAoZmllbGQgYHNlY3JldGApIHwKfCBGb3JtYXQgfCBzdGFuZGFyZCBgLmRvY2tlcmNvbmZpZ2pz" + - "b25gIChrdWJlY3RsIGJ1aWxkcyBpdCBmb3IgeW91KSB8IGBiYXNlNjQoIiRvYXV0aHRva2VuOjxr" + - "ZXk+IilgIHwgYGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAgfAoKPiBOb3RlOiB0aGUgYWNj" + - "b3VudC1ib290c3RyYXAgY3JlZCBhbmQgdGhlIHNpZGVjYXIgc2VjcmV0IGFyZSBOT1QgYQo+IGRv" + - "Y2tlcmNvbmZpZ2pzb24uIFRoZSBzZWNyZXRzIHRlbXBsYXRlIHNoaXBzIHRoZSBwbGFjZWhvbGRl" + - "cgo+IGBSRVBMQUNFX1dJVEhfQkFTRTY0X0RPQ0tFUl9DUkVERU5USUFMYCwgd2hpY2ggcmVhZHMg" + - "YXMgImJhc2U2NCBvZiBhIGRvY2tlcmNvbmZpZ2pzb24uIgo+IEl0IGlzbid0LiBCb3RoIHZhbHVl" + - "cyBhcmUgY29uc3VtZWQgYXMgYSByYXcgZG9ja2VyIGBhdXRoYCBzdHJpbmc6IG52Y2YtYXBpIHRh" + - "a2VzIHRoZQo+IHZhbHVlIHZlcmJhdGltIGFuZCBkcm9wcyBpdCBpbnRvIHRoZSBgYXV0aGAgZmll" + - "bGQgb2YgdGhlIGRvY2tlcmNvbmZpZyBpdCBidWlsZHMuIFNvIHRoZQo+IHZhbHVlIG11c3QgYmUg" + - "YGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAsIGUuZy4gYHByaW50ZiAnJG9hdXRodG9rZW46" + - "JXMnICIkS0VZIiB8IG9wZW5zc2wgYmFzZTY0IC1BYCwKPiBub3QgYGJhc2U2NCg8ZG9ja2VyY29u" + - "ZmlnanNvbj4pYC4KPgo+IC0gV3JvbmcgYWNjb3VudC1ib290c3RyYXAgdmFsdWU6IGBmdW5jdGlv" + - "biBjcmVhdGVgIHJldHVybnMKPiAgICBgNDAwICJtdXN0IGJlIGJhc2U2NCBlbmNvZGVkIHVzZXJu" + - "YW1lOnBhc3N3b3JkIGZvcm1hdCJgLgo+IC0gV3Jvbmcgc2lkZWNhciB2YWx1ZTogZXZlcnkgd29y" + - "a2VyJ3Mgc2lkZWNhciBwdWxsIGdldHMgYSBtYWxmb3JtZWQgY3JlZGVudGlhbCBhbmQKPiAgICBg" + - "NDAzYHMsIHJlZ2FyZGxlc3Mgb2Ygd2hpY2gga2V5IGlzIGluc2lkZS4gVGhlIHN5bXB0b20gbG9v" + - "a3MgbGlrZSBhIGJhZCBvciB3cm9uZy1vcmcKPiAgICBrZXksIGJ1dCB0aGUga2V5IGlzIGZpbmUg" + - "YW5kIHRoZSBlbmNvZGluZyBpcyB0aGUgYnVnLiBUbyByZXBhaXIgYW4gYWxyZWFkeS1pbnN0YWxs" + - "ZWQKPiAgICBzdGFjayB3aXRob3V0IGEgZnVsbCByZS1zeW5jOgo+Cj4gICAgYGBgYmFzaAo+ICAg" + - "IEFVVEg9JChwcmludGYgJyRvYXV0aHRva2VuOiVzJyAiJEtFWSIgfCBvcGVuc3NsIGJhc2U2NCAt" + - "QSkKPiAgICBiYW8ga3YgcHV0IHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1" + - "bGwtc2VjcmV0IHNlY3JldD0iJEFVVEgiCj4gICAgIyBpZiBOVklESUEgQ2xvdWQgVGFza3MgaXMg" + - "ZW5hYmxlZCwgcmVwZWF0IGZvciBzZXJ2aWNlcy9udmN0LWFwaS9rdi9zaWRlY2Fycy9pbWFnZS1w" + - "dWxsLXNlY3JldAo+ICAgIGt1YmVjdGwgcm9sbG91dCByZXN0YXJ0IC1uIG52Y2YgZGVwbG95L252" + - "Y2YtYXBpICAgIyBwaWNrcyB1cCB0aGUgbmV3IHNpZGVjYXIgY3JlZAo+ICAgIGBgYAo+Cj4gTm90" + - "ZSAobXVsdGktb3JnKTogd2hlbiBwdWxsaW5nIGZyb20gTkdDIChub3QgYSBtaXJyb3IpLCB0aGUg" + - "dXNlciBmdW5jdGlvbiBpbWFnZSBhbmQKPiB0aGUgcGxhdGZvcm0gc2lkZWNhcnMgb2Z0ZW4gbGl2" + - "ZSBpbiBkaWZmZXJlbnQgbnZjci5pbyBvcmdzLCBlYWNoIG5lZWRpbmcgYSBkaWZmZXJlbnQKPiBr" + - "ZXksIHNvIHRoZSBhY2NvdW50LWJvb3RzdHJhcCBjcmVkIChmdW5jdGlvbiBpbWFnZSkgYW5kIHRo" + - "ZSBzaWRlY2FyIHNlY3JldCAoc2lkZWNhcnMpCj4gYXJlIGZyZXF1ZW50bHkgdHdvIGRpZmZlcmVu" + - "dCBrZXlzLiBNaXJyb3JpbmcgZXZlcnl0aGluZyBpbnRvIGEgc2luZ2xlIHJlZ2lzdHJ5IHRoZQo+" + - "IGNsdXN0ZXIgYXV0aGVudGljYXRlcyB0byBhdXRvbWF0aWNhbGx5IGNvbGxhcHNlcyB0aGlzIHRv" + - "IG9uZSBjcmVkZW50aWFsIHBhdGguCgojIyMgQ29uZmlndXJpbmcgd2l0aCBLeXZlcm5vIChyZWNv" + - "bW1lbmRlZCkKClVzZSBhIEt5dmVybm8gbXV0YXRpbmcgYWRtaXNzaW9uIHBvbGljeSB0byBhdXRv" + - "bWF0aWNhbGx5IGluamVjdCBgaW1hZ2VQdWxsU2VjcmV0c2AgaW50byBhbGwgcG9kcyBpbiBOVkNG" + - "IG5hbWVzcGFjZXMuIFRoaXMgd29ya3MgdW5pZm9ybWx5IGZvciBhbGwgY2hhcnRzIC0tIG5vIHBl" + - "ci1jaGFydCBjb25maWd1cmF0aW9uIG9yIGhlbG1maWxlIG1vZGlmaWNhdGlvbnMgbmVlZGVkLgoK" + - "YGBgYmFzaAojIDEuIEluc3RhbGwgS3l2ZXJubwpoZWxtIHJlcG8gYWRkIGt5dmVybm8gaHR0cHM6" + - "Ly9reXZlcm5vLmdpdGh1Yi5pby9reXZlcm5vLwpoZWxtIHJlcG8gdXBkYXRlCmhlbG0gaW5zdGFs" + - "bCBreXZlcm5vIGt5dmVybm8va3l2ZXJubyAtbiBreXZlcm5vIC0tY3JlYXRlLW5hbWVzcGFjZQoK" + - "IyAyLiBDcmVhdGUgcHVsbCBzZWNyZXQgaW4gZWFjaCBuYW1lc3BhY2UKZXhwb3J0IE5HQ19BUElf" + - "S0VZPSI8eW91ci1rZXk+Igpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBu" + - "dmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJl" + - "Y3RsIGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogICAgLS1kb2Nr" + - "ZXItc2VydmVyPW52Y3IuaW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBc" + - "CiAgICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5hbWVzcGFjZT0i" + - "JG5zIiBcCiAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0K" + - "ZG9uZQoKIyAzLiBBcHBseSB0aGUgS3l2ZXJubyBDbHVzdGVyUG9saWN5Cmt1YmVjdGwgYXBwbHkg" + - "LWYga3l2ZXJuby1pbWFnZXB1bGxzZWNyZXQtcG9saWN5LnlhbWwKYGBgCgpUaGUgcG9saWN5IG11" + - "dGF0ZXMgZXZlcnkgcG9kIGF0IGFkbWlzc2lvbiB0aW1lLCBhZGRpbmcgYGltYWdlUHVsbFNlY3Jl" + - "dHM6IFt7bmFtZTogbnZjci1jcmVkc31dYC4gVmVyaWZ5IHdpdGg6CgpgYGBiYXNoCmt1YmVjdGwg" + - "Z2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IC1vIGpzb25wYXRoPSd7LnNwZWMuaW1h" + - "Z2VQdWxsU2VjcmV0c30nCiMgU2hvdWxkIHNob3c6IFt7Im5hbWUiOiJudmNyLWNyZWRzIn1dCmBg" + - "YAoKTm90IG5lZWRlZCBpZiB1c2luZyBhIENTUCBidWlsdC1pbiBjcmVkZW50aWFsIGhlbHBlciAo" + - "ZS5nLiwgRUNSIHdpdGggSUFNIG5vZGUgcm9sZXMpLgoKRm9yIHRoZSBLeXZlcm5vIHBvbGljeSBZ" + - "QU1MIGFuZCBwdWxsIHNlY3JldCBjcmVhdGlvbiBzY3JpcHQsIHNlZSBbcmVmZXJlbmNlcy9wdWxs" + - "LXNlY3JldHMubWRdKHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKS4KCiMjIERlYnVnZ2luZwoK" + - "IyMjIFF1aWNrIHN0YXR1cyBjaGVjawoKYGBgYmFzaAprdWJlY3RsIGdldCBwb2RzIC1BIC1vIHdp" + - "ZGUgICAgICAgICAgICAgICAgICAgICAgICAjIEFsbCBwb2RzCmhlbG0gbGlzdCAtQSAgICAgICAg" + - "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFsbCBoZWxtIHJlbGVhc2VzCmt1YmVj" + - "dGwgZ2V0IGV2ZW50cyAtbiA8bnM+IC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAnICAjIFJlY2Vu" + - "dCBldmVudHMKYGBgCgojIyMgQ29tbW9uIGZhaWx1cmUgcGF0dGVybnMKCnwgU3ltcHRvbSB8IENh" + - "dXNlIHwgRml4IHwKfC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tfAp8IGBJbWFnZVB1bGxCYWNrT2Zm" + - "YCArIGA0MDEgVW5hdXRob3JpemVkYCB8IE1pc3Npbmcgb3Igd3JvbmcgcHVsbCBzZWNyZXQgfCBD" + - "aGVjayBzZWNyZXQgZXhpc3RzLCBjaGVjayBTQSBoYXMgaW1hZ2VQdWxsU2VjcmV0cyB8CnwgYElu" + - "aXQ6MC8xYCBzdHVjayBvbiBzZXJ2aWNlIHBvZHMgfCBWYXVsdC1hZ2VudCB3YWl0aW5nIGZvciBP" + - "cGVuQmFvIHwgQ2hlY2sgT3BlbkJhbyBwb2RzICsgbWlncmF0aW9uIGpvYiBzdGF0dXMgfAp8IGBJ" + - "bml0OjAvMWAgKyBgdmF1bHQtYWdlbnQtaW5pdGAgc2hvd3MgYGF1dGgvand0L2xvZ2luYCAtPiBg" + - "NDAwIC4uLiBubyBrbm93biBrZXkgc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlZCB0aGUgdG9rZW4gc2ln" + - "bmF0dXJlYCB8IE9wZW5CYW8gSldUIGF1dGggY29uZmlndXJlZCB3aXRoIGEgc3RhdGljIHB1Ymtl" + - "eSBpbnN0ZWFkIG9mIHRoZSBjbHVzdGVyJ3MgbGl2ZSBKV0tTIC0tIHRoZSBiYXNlIGRlZmF1bHQg" + - "YG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2VgLiBDb21t" + - "b24gb24gQUtTIC8gYW55IE9JREMtaXNzdWVyIGNsdXN0ZXIgfCBTZXQgYG9wZW5iYW8ubWlncmF0" + - "aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogdHJ1ZWAsIGRlbGV0ZSBqb2IgYG9wZW5iYW8t" + - "c2VydmVyLW1pZ3JhdGlvbnNgLCByZS1zeW5jIGBvcGVuYmFvLXNlcnZlcmAuIFNlZSBbcmVmZXJl" + - "bmNlcy9kZWJ1Z2dpbmcubWRdKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kKSAiSW5pdDowLzEgU3R1" + - "Y2siIGZpeCAjNC4gfAp8IGBPT01LaWxsZWRgIG9uIENhc3NhbmRyYSB8IERlZmF1bHQgcmVzb3Vy" + - "Y2VzIHRvbyBzbWFsbCB8IE92ZXJyaWRlIGBjYXNzYW5kcmEucmVzb3VyY2VzYCB2aWEgdmFsdWVz" + - "IGJsb2NrIHwKfCBEQi1iYWNrZWQgc2VydmljZXMgY3Jhc2gtbG9vcCBgQmFkIGNyZWRlbnRpYWxz" + - "YCBjb25uZWN0aW5nIHRvIENhc3NhbmRyYSB8IFNlY3JldHMgZmlsZSBzZXQgb25seSBgREVGQVVM" + - "VF9DQVNTQU5EUkFfUEFTU1dPUkRgOyBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHN0" + - "aWxsIGRlZmF1bHRzIHRvIGBjaEBuZzNtM2AgfCBTZXQgYGNhc3NhbmRyYS5zZXJ2aWNlUm9sZVBh" + - "c3N3b3JkYCBpbiB0aGUgc2VjcmV0cyBmaWxlIGVxdWFsIHRvIGBERUZBVUxUX0NBU1NBTkRSQV9Q" + - "QVNTV09SRGAsIHRoZW4gcmUtc3luYyBjYXNzYW5kcmEgKyB0aGUgREItYmFja2VkIHNlcnZpY2Vz" + - "IHwKfCBgUGVuZGluZ2AgcG9kcyB8IE5vZGUgc2VsZWN0b3IgbWlzbWF0Y2ggb3Igbm8gc3RvcmFn" + - "ZSBjbGFzcyB8IGBrdWJlY3RsIGRlc2NyaWJlIHBvZGAsIGNoZWNrIGxhYmVscyBhbmQgc3RvcmFn" + - "ZSB8CnwgSGVsbSByZWxlYXNlIGluIGBmYWlsZWRgIHN0YXRlIHwgRmlyc3QgaW5zdGFsbCBmYWls" + - "ZWQgcGFydHdheSB8IGBoZWxtZmlsZSBkZXN0cm95YCB0aGUgcmVsZWFzZSwgdGhlbiBgc3luY2Ag" + - "YWdhaW4gfAp8IEFjY291bnQgYm9vdHN0cmFwIHRpbWVvdXQgfCBXcm9uZyBiYXNlNjQgY3JlZGVu" + - "dGlhbHMgaW4gc2VjcmV0cyBmaWxlIHwgQ2hlY2sgYGt1YmVjdGwgbG9ncyBqb2IvbnZjZi1hcGkt" + - "YWNjb3VudC1ib290c3RyYXAgLW4gbnZjZmAgfAp8IGZ1bmN0aW9uIC8gYWNjb3VudCBjYWxscyBy" + - "ZXR1cm4gYDQwNCBVbmtub3duIGNsaWVudF9pZGAgfCBUaGUgYWNjb3VudC1ib290c3RyYXAgcG9z" + - "dC1pbnN0YWxsIGhvb2sgbmV2ZXIgcmFuOiB0aGUgYGFwaWAgcmVsZWFzZSBpbnN0YWxsIGZhaWxl" + - "ZCwgb3Igd2FzIHJlcGFpcmVkIHdpdGggbGl2ZSBwYXRjaGVzIGluc3RlYWQgb2YgYSBjbGVhbiBy" + - "ZS1zeW5jLCBzbyB0aGUgaG9vayAoYW5kIHRoZSBhY2NvdW50KSB3YXMgc2tpcHBlZCB8IFZlcmlm" + - "eSBhbmQgcmUtcnVuIHRoZSBob29rOyBzZWUgW1ZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAg" + - "cmFuXSgjdmVyaWZ5LXRoZS1hY2NvdW50LWJvb3RzdHJhcC1yYW4pIHwKfCBTZXJ2aWNlcyBmYWls" + - "IHRvIHJlYWQgdmF1bHQgc2VjcmV0czsgYHNlY3JldHMuanNvbmAgbm90IGZvdW5kIHwgVmF1bHQg" + - "cGF0aCBoYXJkY29kZWQgdG8gYC9ob21lL2FwcC92YXVsdC9gIGluIGBfaGVscGVycy50cGxgOyB0" + - "aGUgcnVudGltZSByZXNvbHZlcyB0aGUgbW91bnRlZCBwYXRoIHJlbGF0aXZlIHRvIHRoZSB3b3Jr" + - "aW5nIGRpcmVjdG9yeSBhbmQgZHJvcHMgdGhlIGxlYWRpbmcgYC9gIHwgT3ZlcnJpZGUgYHBvZEFu" + - "bm90YXRpb25zYCBhbmQgc2V0IGBKQVZBX1RPT0xfT1BUSU9OUzogIi1EdXNlci5kaXI9LyJgIGlu" + - "IHJlbGVhc2UgdmFsdWVzIHwKfCBOQVRTIGNvbm5lY3Rpb24gZmFpbHMgYXQgc3RhcnR1cDsgcGxh" + - "Y2VtZW50IHRhZyBtaXNtYXRjaCB8IE5BVFMgc2VydmVyIHRhZ3MgaGFyZGNvZGVkIHRvIGBkYzpu" + - "Y3BgOyBhcHAgZGVyaXZlcyB0YWcgZnJvbSBgQVdTX1JFR0lPTmAgKGUuZy4sIGB1cy1nb3Ytd2Vz" + - "dC0xYCkgfCBTZXQgYEFXU19SRUdJT049bmNwYCBhbmQgYE5WQ0ZfQVdTX1JFR0lPTj1uY3BgIGlu" + - "IGVudiBjb25maWcgfAoKIyMjIFZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAgcmFuCgpUaGUg" + - "ZGVmYXVsdCBhY2NvdW50IGlzIGNyZWF0ZWQgYnkgYSAqKmBwb3N0LWluc3RhbGxgIGhvb2sgb24g" + - "dGhlIGBhcGlgIHJlbGVhc2UqKgooYGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcGAgaW4g" + - "YG52Y2ZgKS4gQmVjYXVzZSBpdCBpcyBhIHBvc3QtaW5zdGFsbCBob29rLCBpdCBvbmx5CmZpcmVz" + - "IG9uIGEgc3VjY2Vzc2Z1bCBgYXBpYCBpbnN0YWxsLiBJZiB0aGF0IGluc3RhbGwgZmFpbGVkIGFu" + - "ZCB5b3UgcmVwYWlyZWQgaXQgd2l0aCBsaXZlCnBhdGNoZXMgKHJhdGhlciB0aGFuIGEgY2xlYW4g" + - "cmUtc3luYyksIHRoZSBob29rIG5ldmVyIHJ1bnMsIG5vIGFjY291bnQgaXMgY3JlYXRlZCwgYW5k" + - "CmV2ZXJ5IHN1YnNlcXVlbnQgZnVuY3Rpb24vYWNjb3VudCBjYWxsIHJldHVybnMgYSBjcnlwdGlj" + - "IGA0MDQgVW5rbm93biBjbGllbnRfaWRgIHdpdGgKbm90aGluZyBvYnZpb3VzbHkgd3JvbmcgaW4g" + - "dGhlIHJ1bm5pbmcgcG9kcy4KClZlcmlmeSBpdCByYW4gYWZ0ZXIgdGhlIGZpcnN0IHN5bmM6Cgpg" + - "YGBiYXNoCmt1YmVjdGwgZ2V0IGpvYiAtbiBudmNmIG52Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFw" + - "IFwKICAtbyBqc29ucGF0aD0ney5zdGF0dXMuc3VjY2VlZGVkfScgICAjIGV4cGVjdCAxCmBgYAoK" + - "SWYgdGhlIGpvYiBpcyBhYnNlbnQgb3IgYDBgLCByZS1ydW4gaXQgYnkgcmUtc3luY2luZyB0aGUg" + - "YGFwaWAgcmVsZWFzZSBzbyB0aGUgaG9vayBmaXJlcwphZ2FpbiAoZGVsZXRlIHRoZSBwcmlvciBq" + - "b2IgZmlyc3QgaWYgaXQgbGluZ2VycyBpbiBhIGNvbXBsZXRlZC9mYWlsZWQgc3RhdGUgYW5kIGJs" + - "b2NrcyB0aGUKaG9vayk6CgpgYGBiYXNoCmt1YmVjdGwgZGVsZXRlIGpvYiAtbiBudmNmIG52Y2Yt" + - "YXBpLWFjY291bnQtYm9vdHN0cmFwIC0taWdub3JlLW5vdC1mb3VuZApIRUxNRklMRV9FTlY9PGVu" + - "dj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWFwaSBzeW5jCmt1YmVjdGwgbG9ncyAtbiBudmNm" + - "IGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcCAgICMgY29uZmlybSB0aGUgYWNjb3VudCB3" + - "YXMgY3JlYXRlZApgYGAKCiMjIEFkZGl0aW9uYWwgUmVzb3VyY2VzCgotIEluc3RhbGxhdGlvbjog" + - "W2V4YW1wbGVzLm1kXShleGFtcGxlcy5tZCksIHRoZSBbQ1NQIEVuZC10by1FbmQgRXhhbXBsZV0o" + - "aHR0cHM6Ly9kb2NzLm52aWRpYS5jb20vbnZjZi92MC42LjAtcmMvY3NwLWVuZC10by1lbmQtZXhh" + - "bXBsZSksIGFuZCBbc3BsaXQgY29tcHV0ZS1wbGFuZSB3b3JrZmxvd3NdKHJlZmVyZW5jZXMvY29t" + - "cHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpCi0gT3BlcmF0aW9uczogW0hlbG1maWxlIHN0cnVj" + - "dHVyZV0ocmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWQpLCBbcHVsbCBzZWNyZXRzXShy" + - "ZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCksIGFuZCBbZGVidWdnaW5nXShyZWZlcmVuY2VzL2Rl" + - "YnVnZ2luZy5tZCkKCkFmdGVyIGRlcGxveW1lbnQsIHVzZSB0aGUgYG52Y2Ytc2VsZi1tYW5hZ2Vk" + - "LWNsaWAgc2tpbGwgdG8gY3JlYXRlIGZ1bmN0aW9ucywgY3JlYXRlIHRhc2tzLCBtYW5hZ2UgQVBJ" + - "IGtleXMsIGFuZCBpbnZva2UgZW5kcG9pbnRzLgpQSwcIEcMUk0liAABJYgAAUEsDBBQACAAAAAAA" + - "IQAAAAAAAAAAAAAAAAA0AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXZh" + - "bHMvZXZhbHMuanNvblVUBQABAKbOElsKICB7CiAgICAiaWQiOiAiRzEtdmFsaWRhdGUtdG9vbC12" + - "ZXJzaW9ucyIsCiAgICAicXVlc3Rpb24iOiAiSW5zdGFsbCB0aGUgTlZDRiBzZWxmLW1hbmFnZWQg" + - "c3RhY2sgb24gbXkgQVdTIEVLUyBjbHVzdGVyIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNm" + - "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdl" + - "bnQncyBmaXJzdCBvcGVyYXRpb25hbCBzdGVwIGFmdGVyIHJlYWRpbmcgdGhlIHNraWxsIHdhcyB0" + - "byB2YWxpZGF0ZSBhbGwgcmVxdWlyZWQgdG9vbCB2ZXJzaW9uczogaGVsbWZpbGUgKG11c3QgYmUg" + - "MS4xLngsIG5vdCAxLjIuMCksIGhlbG0gKD49IDMuMTIpLCBoZWxtLWRpZmYgcGx1Z2luICg+PSAz" + - "LjExKSwgYW5kIGt1YmVjdGwgKGNsaWVudCB3aXRoaW4gMSBtaW5vciBvZiBjbHVzdGVyKS4gSXQg" + - "ZGlkIG5vdCBwcm9jZWVkIHRvIGhlbG1maWxlIHN5bmMgdW50aWwgYWxsIHZlcnNpb25zIHdlcmUg" + - "dmFsaWRhdGVkLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQg" + - "cmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0" + - "YWtpbmcgYW55IGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtZmlsZSAtLXZlcnNp" + - "b24nIGFuZCB2ZXJpZmllZCBpdCBpcyAxLjEueCAobm90IDEuMi4wLCB3aGljaCByZW1vdmVkIHNl" + - "cXVlbnRpYWwgbW9kZSkiLAogICAgICAiVGhlIGFnZW50IHJhbiAnaGVsbSB2ZXJzaW9uJyBhbmQg" + - "dmVyaWZpZWQgaXQgaXMgPj0gMy4xMiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHBsdWdp" + - "biBsaXN0JyBhbmQgdmVyaWZpZWQgaGVsbS1kaWZmID49IDMuMTEgaXMgaW5zdGFsbGVkIiwKICAg" + - "ICAgIlRoZSBhZ2VudCByYW4gJ2t1YmVjdGwgdmVyc2lvbicgdG8gY2hlY2sgY2xpZW50L3NlcnZl" + - "ciB2ZXJzaW9uIGNvbXBhdGliaWxpdHkiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgcHJvY2Vl" + - "ZCB0byBoZWxtZmlsZSBzeW5jIHVudGlsIGFsbCB2ZXJzaW9uIGNoZWNrcyBwYXNzZWQiCiAgICBd" + - "CiAgfSwKICB7CiAgICAiaWQiOiAiRzItdGVtcGxhdGUtYmVmb3JlLXN5bmMiLAogICAgInF1ZXN0" + - "aW9uIjogIlF1aWNrLCBqdXN0IHJ1biBoZWxtZmlsZSBzeW5jIGZvciBteSBOVkNGIHN0YWNrLCBz" + - "a2lwIGFsbCB0aGUgY2hlY2tzIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFu" + - "YWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJEZXNwaXRlIHRoZSB1c2Vy" + - "IGFza2luZyB0byBza2lwIGNoZWNrcywgdGhlIGFnZW50IHN0aWxsIHJhbiBoZWxtZmlsZSB0ZW1w" + - "bGF0ZSB0byBwcmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0cyBiZWZvcmUgcnVubmluZyBoZWxtZmls" + - "ZSBzeW5jLiBJdCBleHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAgaXMgaW1wb3J0YW50IGFu" + - "ZCBkaWQgbm90IGJsaW5kbHkgZXhlY3V0ZSBzeW5jLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3Ii" + - "OiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0" + - "aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4g" + - "J2hlbG1maWxlIHRlbXBsYXRlJyBvciAnaGVsbWZpbGUgLS1zZWxlY3RvciAuLi4gdGVtcGxhdGUn" + - "IHRvIHByZXZpZXcgbWFuaWZlc3RzIGJlZm9yZSBzeW5jIiwKICAgICAgIlRoZSBhZ2VudCBkaWQg" + - "bm90IGJsaW5kbHkgcnVuICdoZWxtZmlsZSBzeW5jJyB3aXRob3V0IGEgdGVtcGxhdGUgcHJldmll" + - "dyBzdGVwIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAg" + - "aXMgaW1wb3J0YW50IGV2ZW4gd2hlbiBhc2tlZCB0byBza2lwIGl0IgogICAgXQogIH0sCiAgewog" + - "ICAgImlkIjogIkc1LWRyeXJ1bi1iZWZvcmUtY2xlYW51cCIsCiAgICAicXVlc3Rpb24iOiAiTlZD" + - "RiBuYW1lc3BhY2VzIGFyZSBzdHVjayBpbiBUZXJtaW5hdGluZyBzdGF0ZS4gQ2xlYW4gdGhlbSB1" + - "cC4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + - "biIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoZSBzdHVjayBu" + - "YW1lc3BhY2VzIHdlcmUgY2F1c2VkIGJ5IGZpbmFsaXplcnMgb24gTlZDRkJhY2tlbmQgY3VzdG9t" + - "IHJlc291cmNlcy4gSXQgcmVtb3ZlZCBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3Vy" + - "Y2VzIGZpcnN0LCB0aGVuIGNsZWFyZWQgbmFtZXNwYWNlIGZpbmFsaXplcnMgdG8gZm9yY2UtZGVs" + - "ZXRlIHRoZSBzdHVjayBuYW1lc3BhY2VzLiBJdCBvbmx5IHRhcmdldGVkIE5WQ0YtbWFuYWdlZCBu" + - "YW1lc3BhY2VzIChudmNhLW9wZXJhdG9yLCBudmNmLWJhY2tlbmQpIGFuZCBkaWQgbm90IHRvdWNo" + - "IG90aGVyIGNsdXN0ZXIgcmVzb3VyY2VzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAg" + + "CiAgIm5hbWUiOiAiPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1lPiIsCiAgImluZmVyZW5jZVVybCI6" + + "ICIvIiwKICAiaW5mZXJlbmNlUG9ydCI6IDgwMDAsCiAgImZ1bmN0aW9uVHlwZSI6ICJMTE0iLAog" + + "ICJoZWFsdGgiOiB7CiAgICAicHJvdG9jb2wiOiAiSFRUUCIsCiAgICAidXJpIjogIi9oZWFsdGgi" + + "LAogICAgInBvcnQiOiA4MDAwLAogICAgInRpbWVvdXQiOiAiUFQzMFMiLAogICAgImV4cGVjdGVk" + + "U3RhdHVzQ29kZSI6IDIwMAogIH0sCiAgImhlbG1DaGFydCI6ICJodHRwczovL2hlbG0ubmdjLm52" + + "aWRpYS5jb20vZXhhbXBsZS90ZWFtL2NoYXJ0cy9vcGVuYWktY29tcGF0aWJsZS0wLjEuMC50Z3oi" + + "LAogICJoZWxtQ2hhcnRTZXJ2aWNlTmFtZSI6ICJvcGVuYWktY29tcGF0aWJsZSIsCiAgIm1vZGVs" + + "cyI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiPGNvbmZpcm1lZC1tb2RlbC1uYW1lPiIsCiAgICAg" + + "ICJsbG1Db25maWciOiB7CiAgICAgICAgInVyaXMiOiBbIi92MS9jaGF0L2NvbXBsZXRpb25zIiwg" + + "Ii92MS9yZXNwb25zZXMiLCAiL3YxL2VtYmVkZGluZ3MiXSwKICAgICAgICAicm91dGluZ01ldGhv" + + "ZCI6ICJyb3VuZF9yb2JpbiIsCiAgICAgICAgInRva2VuUmF0ZUxpbWl0IjogIjEwMDAtUyIKICAg" + + "ICAgfQogICAgfQogIF0KfQpgYGAKCkVxdWl2YWxlbnQgQ0xJIGZsYWcgZm9ybToKCmBgYHNoCm52" + + "Y2YtY2xpIGZ1bmN0aW9uIGNyZWF0ZSBcCiAgLS1uYW1lPSI8Y29uZmlybWVkLWZ1bmN0aW9uLW5h" + + "bWU+IiBcCiAgLS1pbmZlcmVuY2UtdXJsPS8gXAogIC0taW5mZXJlbmNlLXBvcnQ9ODAwMCBcCiAg" + + "LS1oZWFsdGgtdXJpPS9oZWFsdGggXAogIC0taGVhbHRoLXBvcnQ9ODAwMCBcCiAgLS1oZWFsdGgt" + + "dGltZW91dD1QVDMwUyBcCiAgLS1oZWFsdGgtcHJvdG9jb2w9SFRUUCBcCiAgLS1oZWFsdGgtZXhw" + + "ZWN0ZWQtc3RhdHVzPTIwMCBcCiAgLS1mdW5jdGlvbi10eXBlPUxMTSBcCiAgLS1oZWxtLWNoYXJ0" + + "PWh0dHBzOi8vaGVsbS5uZ2MubnZpZGlhLmNvbS9leGFtcGxlL3RlYW0vY2hhcnRzL29wZW5haS1j" + + "b21wYXRpYmxlLTAuMS4wLnRneiBcCiAgLS1oZWxtLWNoYXJ0LXNlcnZpY2U9b3BlbmFpLWNvbXBh" + + "dGlibGUgXAogIC0tbGxtLW1vZGVsPSduYW1lPTxjb25maXJtZWQtbW9kZWwtbmFtZT4sdXJpcz0v" + + "djEvY2hhdC9jb21wbGV0aW9uc3wvdjEvcmVzcG9uc2VzfC92MS9lbWJlZGRpbmdzLHJvdXRpbmdN" + + "ZXRob2Q9cm91bmRfcm9iaW4sdG9rZW5SYXRlTGltaXQ9MTAwMC1TJwpgYGAKCkRlcGxveSBpcyB1" + + "bmNoYW5nZWQuIFB1dCBjaGFydC1zcGVjaWZpYyB2YWx1ZXMgdW5kZXIgYGRlcGxveW1lbnRTcGVj" + + "aWZpY2F0aW9uc1tdLmNvbmZpZ3VyYXRpb25gIG9ubHkgd2hlbiB0aGUgY2hhcnQgbmVlZHMgdmFs" + + "dWUgb3ZlcnJpZGVzOgoKYGBganNvbgp7CiAgImZ1bmN0aW9uSWQiOiAiPGZuX2lkPiIsCiAgInZl" + + "cnNpb25JZCI6ICI8dmVyX2lkPiIsCiAgImRlcGxveW1lbnRTcGVjaWZpY2F0aW9ucyI6IFt7CiAg" + + "ICAiZ3B1IjogIkgxMDAiLAogICAgImluc3RhbmNlVHlwZSI6ICJOQ1AuR1BVLkgxMDBfMXgiLAog" + + "ICAgIm1pbkluc3RhbmNlcyI6IDEsCiAgICAibWF4SW5zdGFuY2VzIjogMSwKICAgICJtYXhSZXF1" + + "ZXN0Q29uY3VycmVuY3kiOiAxMCwKICAgICJjb25maWd1cmF0aW9uIjogewogICAgICAic2Vydmlu" + + "ZyI6IHsKICAgICAgICAidGVuc29yUGFyYWxsZWxTaXplIjogMQogICAgICB9CiAgICB9CiAgfV0K" + + "fQpgYGAKCkxMTSBHYXRld2F5IHJvdXRlcyByZXF1ZXN0cyBieSB0aGUgT3BlbkFJIGBtb2RlbGAg" + + "dmFsdWUuIFVzZSBgPGZ1bmN0aW9uLWlkPi88bW9kZWwtbmFtZT5gOiB0aGUgZnVuY3Rpb24gSUQg" + + "c2VsZWN0cyB0aGUgTlZDRiBmdW5jdGlvbiwgYW5kIHRoZSBtb2RlbCBuYW1lIGlzIGZvcndhcmRl" + + "ZCB0byB0aGUgdXBzdHJlYW0gY29udGFpbmVyIHRocm91Z2ggYHN0YXJnYXRlLWNsaWVudGAuCgpT" + + "dXBwb3J0ZWQgTExNIHBhdGhzOgoKfCBQYXRoIHwgTm90ZXMgfAp8IC0tLSB8IC0tLSB8CnwgYC92" + + "MS9jaGF0L2NvbXBsZXRpb25zYCB8IFN1cHBvcnRzIHN0cmVhbWluZyBhbmQgc2Vzc2lvbiBzdGlj" + + "a2luZXNzLiB8CnwgYC92MS9yZXNwb25zZXNgIHwgTmF0aXZlIFJlc3BvbnNlcyBwcm94eSBwYXRo" + + "OyByZWxheXMgU1NFIGZvciBzdHJlYW1pbmcgY2xpZW50cyBhbmQgcmV0dXJucyB0ZXJtaW5hbCBK" + + "U09OIGZvciBub24tc3RyZWFtaW5nIGNsaWVudHMuIFN1cHBvcnRzIHNlc3Npb24gc3RpY2tpbmVz" + + "cy4gfAp8IGAvdjEvZW1iZWRkaW5nc2AgfCBBY2NlcHRzIHN0cmluZyBvciBzdHJpbmctYXJyYXkg" + + "YGlucHV0YDsgaW5wdXQgbXVzdCBiZSBub24tZW1wdHkgYW5kIG1heSBjb250YWluIGF0IG1vc3Qg" + + "MjA0OCBlbnRyaWVzLiBObyBzZXNzaW9uIHN0aWNraW5lc3MuIHwKCiMjIDIuIEZ1bmN0aW9uIERF" + + "UExPWQoKYGBganNvbgp7CiAgImZ1bmN0aW9uSWQiOiAiPGZuX2lkPiIsCiAgInZlcnNpb25JZCI6" + + "ICI8dmVyX2lkPiIsCiAgImRlcGxveW1lbnRTcGVjaWZpY2F0aW9ucyI6IFt7CiAgICAiZ3B1Ijog" + + "IkgxMDAiLAogICAgImluc3RhbmNlVHlwZSI6ICJOQ1AuR1BVLkgxMDBfMXgiLAogICAgIm1pbklu" + + "c3RhbmNlcyI6IDEsCiAgICAibWF4SW5zdGFuY2VzIjogMSwKICAgICJtYXhSZXF1ZXN0Q29uY3Vy" + + "cmVuY3kiOiAxMAogIH1dCn0KYGBgCgpOb3RlOiBgZ3B1YCBpcyB0aGUgR1BVICoqZmFtaWx5Kiog" + + "KGUuZy4gYEgxMDBgKSwgYGluc3RhbmNlVHlwZWAgaXMgdGhlIFNLVSAoZS5nLiBgTkNQLkdQVS5I" + + "MTAwXzF4YCkuIE1pc21hdGNoIHJldHVybnMgSUNNUyA0MDAgIkludmFsaWQgR1BVIi4KCmBgYHNo" + + "Cm52Y2YtY2xpIGZ1bmN0aW9uIGRlcGxveSBjcmVhdGUgLS1pbnB1dC1maWxlPWRlcGxveS1mbi5q" + + "c29uCmBgYAoKVGhpcyBjb21tYW5kICoqYmxvY2tzKiogdW50aWwgdGhlIGRlcGxveW1lbnQgcmVh" + + "Y2hlcyBBQ1RJVkUgKGRlZmF1bHQgOTAwcyB0aW1lb3V0KS4gV2hlbiBpdCByZXR1cm5zIHJjPTAs" + + "IGEgZnVuY3Rpb24gcG9kIGlzIHJ1bm5pbmcgaW4gdGhlIGBudmNmLWJhY2tlbmRgIG5hbWVzcGFj" + + "ZSBvbiB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVyLgoKIyMgMy4gTWludCBhbiBBUEkga2V5IHdp" + + "dGggYGludm9rZV9mdW5jdGlvbmAgc2NvcGUKCmBudmNmLWNsaSBpbml0YCdzIGFkbWluIHRva2Vu" + + "IGRvZXMgTk9UIGNhcnJ5IHRoZSBgaW52b2tlX2Z1bmN0aW9uYCBzY29wZSDigJQgaW52b2tlIHdv" + + "dWxkIDQwMyB3aXRoICJtaXNzaW5nIHJlcXVlc3RlZCBhdXRob3JpdGllcyIuIE1pbnQgYW4gQVBJ" + + "IGtleToKCmBgYHNoCm52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj0iPGNv" + + "bmZpcm1lZC1mdW5jdGlvbi1uYW1lPiBpbnZva2UiIC0tZXhwaXJlcy1pbj0xaAojIOKGkiBBUEkg" + + "S2V5OiBudmFwaS1udmNmLXN0Zy0uLi4KYGBgCgpUaGUga2V5IGlzIGF1dG9tYXRpY2FsbHkgc2F2" + + "ZWQgdG8gdGhlIENMSSBzdGF0ZSBmaWxlIGFuZCB1c2VkIGJ5IHRoZSBuZXh0IGBmdW5jdGlvbiBp" + + "bnZva2VgIGNhbGwuICoqRG9uJ3QgZWNobyB0aGUga2V5IGludG8gY2hhdCAvIGxvZ3MqKi4KCiMj" + + "IDQuIEZ1bmN0aW9uIElOVk9LRQoKYGBganNvbgp7CiAgImZ1bmN0aW9uSWQiOiAiPGZuX2lkPiIs" + + "CiAgInZlcnNpb25JZCI6ICI8dmVyX2lkPiIsCiAgInJlcXVlc3RCb2R5IjogeyJtZXNzYWdlIjog" + + "ImhlbGxvIn0KfQpgYGAKCmBgYHNoCm52Y2YtY2xpIGZ1bmN0aW9uIGludm9rZSAtLWlucHV0LWZp" + + "bGU9aW52b2tlLWZuLmpzb24KIyDihpIgRnVuY3Rpb24gaW52b2NhdGlvbiBjb21wbGV0ZWQhCiMg" + + "4oaSIFN0YXR1czogZnVsZmlsbGVkCiMg4oaSIFJlcXVlc3QgSUQ6IC4uLgpgYGAKCkZvciBhbiBM" + + "TE0gZnVuY3Rpb24sIGludm9rZSB0aGUgT3BlbkFJLWNvbXBhdGlibGUgcm91dGUgYWZ0ZXIgZGVw" + + "bG95bWVudDoKCmBgYHNoCmN1cmwgLXNTIC1YIFBPU1QgImh0dHBzOi8vbGxtLmludm9jYXRpb24u" + + "PGRvbWFpbj4vdjEvY2hhdC9jb21wbGV0aW9ucyIgXAogIC1IICJBdXRob3JpemF0aW9uOiBCZWFy" + + "ZXIgJHtOVkNGX0FQSV9LRVl9IiBcCiAgLUggIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNv" + + "biIgXAogIC1kICd7CiAgICAibW9kZWwiOiAiPGZuX2lkPi88Y29uZmlybWVkLW1vZGVsLW5hbWU+" + + "IiwKICAgICJzdHJlYW0iOiB0cnVlLAogICAgIm1lc3NhZ2VzIjogWwogICAgICB7CiAgICAgICAg" + + "InJvbGUiOiAidXNlciIsCiAgICAgICAgImNvbnRlbnQiOiAiSGVsbG8iCiAgICAgIH0KICAgIF0K" + + "ICB9JwpgYGAKClRoZSBPcGVuQUkgYG1vZGVsYCB2YWx1ZSBtdXN0IGJlIGA8ZnVuY3Rpb24taWQ+" + + "Lzxtb2RlbC1uYW1lPmAgc28gdGhlIGdhdGV3YXkgY2FuIHNlbGVjdCB0aGUgZnVuY3Rpb24gYW5k" + + "IG1vZGVsLgoKUmVzcG9uc2VzIEFQSSBleGFtcGxlOgoKYGBgc2gKY3VybCAtc1MgLVggUE9TVCAi" + + "aHR0cHM6Ly9sbG0uaW52b2NhdGlvbi48ZG9tYWluPi92MS9yZXNwb25zZXMiIFwKICAtSCAiQXV0" + + "aG9yaXphdGlvbjogQmVhcmVyICR7TlZDRl9BUElfS0VZfSIgXAogIC1IICJDb250ZW50LVR5cGU6" + + "IGFwcGxpY2F0aW9uL2pzb24iIFwKICAtZCAnewogICAgIm1vZGVsIjogIjxmbl9pZD4vPGNvbmZp" + + "cm1lZC1tb2RlbC1uYW1lPiIsCiAgICAiaW5wdXQiOiAiV3JpdGUgYSBvbmUgc2VudGVuY2Ugc3Vt" + + "bWFyeSBvZiBOVkNGLiIKICB9JwpgYGAKCkVtYmVkZGluZ3MgZXhhbXBsZToKCmBgYHNoCmN1cmwg" + + "LXNTIC1YIFBPU1QgImh0dHBzOi8vbGxtLmludm9jYXRpb24uPGRvbWFpbj4vdjEvZW1iZWRkaW5n" + + "cyIgXAogIC1IICJBdXRob3JpemF0aW9uOiBCZWFyZXIgJHtOVkNGX0FQSV9LRVl9IiBcCiAgLUgg" + + "IkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgXAogIC1kICd7CiAgICAibW9kZWwiOiAi" + + "PGZuX2lkPi88Y29uZmlybWVkLW1vZGVsLW5hbWU+IiwKICAgICJpbnB1dCI6ICJOVkNGIGVtYmVk" + + "ZGluZ3MgY2hlY2siCiAgfScKYGBgCgpJZiBzdGF0dXMgaXMgYGVycm9yZWRgLCBxdWVyeSBJQ01T" + + "IGZvciB0aGUgZGVwbG95bWVudCdzIHBvZCBsb2dzIChrdWJlY3RsIG9uIHRoZSBjb21wdXRlLXBs" + + "YW5lIGNsdXN0ZXIpIGFuZCBzdXJmYWNlIHRvIHRoZSB1c2VyLgoKIyMgNS4gQ2xlYW51cAoKV2hl" + + "biB0aGUgdXNlciBpcyBkb25lIHdpdGggdGhlIHNtb2tlIHRlc3Q6CgpgYGBzaApudmNmLWNsaSBm" + + "dW5jdGlvbiBkZWxldGUgLS1mdW5jdGlvbi1pZD08Zm5faWQ+IC0tdmVyc2lvbi1pZD08dmVyX2lk" + + "PgpgYGAKCioqQ29uZmlybSB3aXRoIHRoZSB1c2VyIGJlZm9yZSBkZWxldGluZy4qKiBUaGlzIHJl" + + "bW92ZXMgYm90aCB0aGUgZGVwbG95bWVudCBhbmQgdGhlIGZ1bmN0aW9uIHJlY29yZC4KCiMjIE5v" + + "dGVzCgotIERlcGxveSB0aW1lcyBjYW4gdmFyeSB3aWRlbHkgZGVwZW5kaW5nIG9uIE5BVFMgc3Ry" + + "ZWFtLWluaXQgbGF0ZW5jeSBvbiBjb2xkLWNsdXN0ZXIgcnVucyAoMS03IG1pbnV0ZXMgb2JzZXJ2" + + "ZWQgaW4gZGV2LVZNIHRlc3RzKS4gQmUgcGF0aWVudDsgZG9uJ3Qga2lsbCB0aGUgYGZ1bmN0aW9u" + + "IGRlcGxveSBjcmVhdGVgIGNvbW1hbmQgZWFybHkuCi0gRm9yIGRpZmZlcmVudCBHUFUgZmFtaWxp" + + "ZXMsIGNoYW5nZSBib3RoIGBncHVgIGFuZCBgaW5zdGFuY2VUeXBlYCB0b2dldGhlci4gQ29tbW9u" + + "IFNLVXM6IGBOQ1AuR1BVLkgxMDBfMXhgLCBgTkNQLkdQVS5IMTAwXzJ4YCwgYE5DUC5HUFUuQTEw" + + "MF8xeGAuCi0gVGhlIGZ1bmN0aW9uJ3MgY29udGFpbmVyIGltYWdlIG11c3QgYmUgcHVsbGFibGUg" + + "ZnJvbSB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVyJ3MgaW1hZ2UtY3JlZGVudGlhbC1oZWxwZXIg" + + "Y29uZmlnIChjaGVjayBga3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gbnZjZi1iYWNrZW5kYCBpZiBw" + + "b2RzIGxhbmQgaW4gYEltYWdlUHVsbEJhY2tPZmZgKS4KUEsHCNJD3AQYJQAAGCUAAFBLAwQUAAgA" + + "AAAAACEAAAAAAAAAAAAAAAAAPQAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMv" + + "ZGlhZ25vc2UtZmFpbGVkLWluc3RhbGwubWRVVAUAAQCmzhIjIERpYWdub3NlIGEgZmFpbGVkIHNl" + + "bGYtaG9zdGVkIE5WQ0YgaW5zdGFsbAoKVXNlciBzYXlzICJteSBpbnN0YWxsIGZhaWxlZCIgb3Ig" + + "IlggaXNuJ3Qgd29ya2luZyIuIERvbid0IGd1ZXNzIOKAlCBxdWVyeSB0aGUgY2x1c3Rlci4KCiMj" + + "IDEuIEdldCB0aGUgdmVyZGljdAoKYGBgc2gKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzIC0t" + + "anNvbiB8IGpxIC1jIC4KYGBgCgpUaGUgZmlyc3QgZXZlbnQgaXMgdGhlIHNuYXBzaG90LiBQYXJz" + + "ZSBgLnZlcmRpY3RgOgoKLSAqKmBoZWFsdGh5YCoqIOKAlCBub3RoaW5nJ3Mgd3JvbmcuIEFzayB0" + + "aGUgdXNlciB3aGF0IHRoZXkncmUgYWN0dWFsbHkgc2VlaW5nOyB0aGVpciBwcm9ibGVtIG1heSBi" + + "ZSBhdCBhIGRpZmZlcmVudCBsYXllciAoZnVuY3Rpb24gZGVwbG95LCBuZXR3b3JrLCBldGMuKS4K" + + "LSAqKmBkZWdyYWRlZGAqKiDigJQgYXQgbGVhc3Qgb25lIGNvbXBvbmVudCBub3QgcmVhZHkuIFRo" + + "ZSBDb21wb25lbnRzIGxpc3Qgd2lsbCBpZGVudGlmeSB3aGljaC4gTW9zdCBjb21tb246IGBjYXNz" + + "YW5kcmFgIFBvZEluaXRpYWxpemluZywgYG9wZW5iYW9gIG5vdCB1bnNlYWxlZCwgYHNpc2AgSW1h" + + "Z2VQdWxsQmFja09mZi4KLSAqKmBmYWlsZWRgKiog4oCUIE5WQ0ZCYWNrZW5kIGBIZWFsdGg9RmFp" + + "bGVkYC4gUmVhZCB0aGUgY2x1c3RlcidzIE5WQ0ZCYWNrZW5kIHN0YXR1cyBjb25kaXRpb24gbWVz" + + "c2FnZS4KLSAqKmB1bmtub3duYCoqIOKAlCBJQ01TIHVucmVhY2hhYmxlLiBUaGUgY29udHJvbCBw" + + "bGFuZSBpdHNlbGYgbWF5IGJlIGRvd247IGNoZWNrIGBrdWJlY3RsIGdldCBwb2RzIC1uIHNpc2Ag" + + "ZGlyZWN0bHkuCgojIyAyLiBEcmlsbCBpbnRvIHRoZSBmYWlsaW5nIGNvbXBvbmVudAoKRm9yIGVh" + + "Y2ggbm9uLXJlYWR5IGNvbXBvbmVudCwgdGhlIHNuYXBzaG90IGluY2x1ZGVzIGEgYG1lc3NhZ2Vg" + + "IChlLmcuIGBjYXNzYW5kcmEtMCBQb2RJbml0aWFsaXppbmcgNm0yM3NgKS4gQXNrIHRoZSB1c2Vy" + + "IHRvIHJ1bjoKCmBgYHNoCmt1YmVjdGwgZGVzY3JpYmUgcG9kIC1uIDxucz4gPHBvZD4Ka3ViZWN0" + + "bCBsb2dzIC1uIDxucz4gPHBvZD4gLS1hbGwtY29udGFpbmVycyAtLXRhaWw9MTAwCmBgYAoKU3Vy" + + "ZmFjZSB0aGUgZXZlbnRzICsgbGFzdCBsb2cgbGluZXMuIERvbid0IHByb3Bvc2UgYGt1YmVjdGwg" + + "ZGVsZXRlIHBvZGAgdW5sZXNzIHRoZSB1c2VyIGNvbmZpcm1zIOKAlCBDYXNzYW5kcmEgcmVzdGFy" + + "dCBsb3NlcyBhbnkgaW4tcHJvZ3Jlc3MgbWlncmF0aW9uLgoKIyMgMy4gQ29tbW9uIHBhdHRlcm5z" + + "Cgp8IFN5bXB0b20gfCBMaWtlbHkgY2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwK" + + "fCBgY2Fzc2FuZHJhLTAgUG9kSW5pdGlhbGl6aW5nYCBmb3IgPjUgbWluIHwgU3RvcmFnZUNsYXNz" + + "IG1pc3Npbmcgb3IgUFYgc3R1Y2sgYFBlbmRpbmdgIHwgYGt1YmVjdGwgZ2V0IHB2LHB2YyAtQWAg" + + "4oCUIGNvbmZpcm0gYSBkZWZhdWx0IFN0b3JhZ2VDbGFzcyBleGlzdHMuIExvY2FsIGRldjogYGt1" + + "YmVjdGwgcGF0Y2ggc3RvcmFnZWNsYXNzIGxvY2FsLXBhdGggLXAgJ3sibWV0YWRhdGEiOnsiYW5u" + + "b3RhdGlvbnMiOnsic3RvcmFnZWNsYXNzLmt1YmVybmV0ZXMuaW8vaXMtZGVmYXVsdC1jbGFzcyI6" + + "InRydWUifX19J2AgfAp8IGBoZWxtIGluc3RhbGwgLi4uOiB0aW1lZCBvdXQgd2FpdGluZyBmb3Ig" + + "Y2Fzc2FuZHJhIHRvIGJlY29tZSBhdmFpbGFibGVgIHwgU2FtZSBhcyBhYm92ZSB8IFNhbWUgfAp8" + + "IGBHYXRld2F5IEFQSSBDUkRzIG5vdCBpbnN0YWxsZWRgIChwcmVmbGlnaHQpIHwgTXVsdGktY2x1" + + "c3RlciBgbnZjZi1nYXRld2F5LXJvdXRlc2AgY2hhcnQgbmVlZHMgZW52b3ktZ2F0ZXdheSBwcmVy" + + "ZXF1aXNpdGUgfCBJbnN0YWxsIGVudm95LWdhdGV3YXk6IGBoZWxtIGluc3RhbGwgZWcgb2NpOi8v" + + "ZG9ja2VyLmlvL2Vudm95cHJveHkvZ2F0ZXdheS1oZWxtIC0tbmFtZXNwYWNlPWVudm95LWdhdGV3" + + "YXktc3lzdGVtIC0tY3JlYXRlLW5hbWVzcGFjZWAgfAp8IGBObyBjbHVzdGVyIGZvdW5kIHdpdGgg" + + "dmFsaWQgSldLUyBmb3IgY2x1c3RlciBJRDogPGlkPmAgKE5WQ0EgYWdlbnQpIHwgQ29tcHV0ZSBw" + + "bGFuZSdzIFBTQVQgd2FzIGlzc3VlZCBieSBhIEs4cyBzZXJ2ZXIgd2hvc2UgSldLUyBkb2Vzbid0" + + "IG1hdGNoIHdoYXQncyBzdG9yZWQgaW4gSUNNUyB8IFJlLXJlZ2lzdGVyOiBgbnZjZi1jbGkgY2x1" + + "c3RlciByb3RhdGUgLS1jbHVzdGVyLWlkPTxpZD5gIGZyb20gYSBjb250ZXh0IHRoYXQgY2FuIHJl" + + "YWNoIHRoZSBjb21wdXRlIHBsYW5lJ3MgSzhzIEFQSSB8CnwgYFNpZ25lZCBKV1QgcmVqZWN0ZWQ6" + + "IEFub3RoZXIgYWxnb3JpdGhtIGV4cGVjdGVkLCBvciBubyBtYXRjaGluZyBrZXkocykgZm91bmRg" + + "IChpbml0IC8gY2x1c3RlciByZWdpc3RlcikgfCBTdGFsZSBzZXNzaW9uLmpzb24gZnJvbSBhIGRp" + + "ZmZlcmVudCBjb250cm9sIHBsYW5lIHwgYHJtIH4vLm52Y2YtY2xpLnN0YXRlYCB0aGVuIGBudmNm" + + "LWNsaSBpbml0YCBhZ2FpbiB8CnwgYG52Y2Etb3BlcmF0b3JgIEltYWdlUHVsbEJhY2tPZmYgZm9y" + + "IGBudmNhLW9wZXJhdG9yOnBzYXRgIHwgSW1hZ2Ugbm90IGluIGNsdXN0ZXIgKG11bHRpLWNsdXN0" + + "ZXIgdG9wb2xvZ3kgYnVpbGRzIGl0IGxvY2FsbHkpIHwgYGszZCBpbWFnZSBpbXBvcnQgbnZjci5p" + + "by8uLi4vbnZjYS1vcGVyYXRvcjpwc2F0IC1jIDxjbHVzdGVyPmAgKG9yIHdoYXRldmVyIHlvdXIg" + + "aW1hZ2UgcHVzaCBwYXRoIGlzKSB8CnwgYHJlcXVpcmVkRW52ICJOQ0FfSUQiIGlzIG5vdCBzZXRg" + + "IChoZWxtZmlsZSBlcnJvcikgfCBPbGRlciBudmNmLWNsaTsgdGhlIGVudiBwcm9wYWdhdGlvbiBm" + + "aXggbGFuZGVkIGluIE0rNSBmb2xsb3ctdXBzIHwgVXBncmFkZSBgbnZjZi1jbGlgIHRvIGEgdmVy" + + "c2lvbiBhZnRlciBgNmFhNTcwNGAgfAoKIyMgNC4gV2hlbiB0aGUgdXNlciB3YW50cyB0byBzdGFy" + + "dCBvdmVyCgpJZiB0aGV5IGNvbmZpcm0gYSB0ZWFyZG93bjoKCi0gU2luZ2xlLWNsdXN0ZXI6IGBj" + + "ZCBudmNmLXNlbGYtbWFuYWdlZC1zdGFjayAmJiBtYWtlIGRlc3Ryb3lgIChvciBgaGVsbSB1bmlu" + + "c3RhbGxgIHBlciByZWxlYXNlIGluIHJldmVyc2Ugb3JkZXIpLgotIE11bHRpLWNsdXN0ZXI6IGBo" + + "ZWxtIHVuaW5zdGFsbCBudmNhLW9wZXJhdG9yIC1uIG52Y2Etb3BlcmF0b3JgIG9uIHRoZSBjb21w" + + "dXRlIHBsYW5lIEZJUlNUOyB0aGVuIGNvbnRyb2wgcGxhbmU7IHRoZW4gYG52Y2YtY2xpIGNsdXN0" + + "ZXIgZGVsZXRlIC0tY2x1c3Rlci1pZD08aWQ+YCB0byByZW1vdmUgdGhlIElDTVMgcm93LgoKQWx3" + + "YXlzIGNvbmZpcm0gYmVmb3JlIGFueSB0ZWFyZG93biDigJQgQ2Fzc2FuZHJhIFN0YXRlZnVsU2V0" + + "IFBWQyBkZWxldGlvbiBpcyBkZXN0cnVjdGl2ZSBhbmQgbG9zZXMgY2x1c3Rlcl9vaWRjIHJvd3Mu" + + "CgojIyBXaGF0IG5vdCB0byBkbwoKLSAqKkRvbid0IHByb3Bvc2UgYC0tZGVidWdgIGFzIGEgZml4" + + "LioqIEl0J3MgZGlhZ25vc3RpYyBvbmx5LgotICoqRG9uJ3QgcHJvcG9zZSBgaGVsbSB1bmluc3Rh" + + "bGxgKiogdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgYXNrZWQgdG8gc3RhcnQgb3Zlci4KLSAq" + + "KkRvbid0IHByb3Bvc2UgYGt1YmVjdGwgZGVsZXRlIHB2Y2AqKiBldmVyIHdpdGhvdXQgY29uZmly" + + "bWF0aW9uIOKAlCBpdCBkZWxldGVzIHRoZSB1bmRlcmx5aW5nIFBWLgotICoqRG9uJ3QgcmUtcnVu" + + "IGB1cGAgd2l0aCBkaWZmZXJlbnQgaW5wdXRzKiogdG8gInNlZSB3aGF0IGhhcHBlbnMiLiBEaWFn" + + "bm9zZSB3aXRoIGBzdGF0dXNgIC8gYGt1YmVjdGwgZGVzY3JpYmVgIGZpcnN0LgpQSwcIcpIsJr4O" + + "AAC+DgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA6AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdl" + + "ZC1jbGkvcHJvbXB0cy9pbnN0YWxsLWZyb20tc2NyYXRjaC5tZFVUBQABAKbOEiMgSW5zdGFsbCBz" + + "ZWxmLWhvc3RlZCBOVkNGIGZyb20gc2NyYXRjaAoKVXNlciB3YW50cyB0byBicmluZyB1cCBzZWxm" + + "LWhvc3RlZCBOVkNGIG9uIGEgZnJlc2ggS3ViZXJuZXRlcyBjbHVzdGVyIChvciBrM2QgZm9yIGxv" + + "Y2FsIGRldikuIFRoaXMgaXMgdGhlIG1vc3QgY29tbW9uIGVudHJ5cG9pbnQuCgojIyBTdGVwcwoK" + + "MS4gQ29uZmlybSB0aGUgdG9wb2xvZ3kuIEFzayB0aGUgdXNlcjoKICAgLSAiU2luZ2xlLWNsdXN0" + + "ZXIgKGNvbnRyb2wgcGxhbmUgYW5kIGNvbXB1dGUgcGxhbmUgb24gb25lIGNsdXN0ZXIsIHNpbXBs" + + "ZXIpIG9yIHNwbGl0IChjb250cm9sIHBsYW5lIG9uIGNsdXN0ZXIgQSwgY29tcHV0ZSBwbGFuZSBv" + + "biBjbHVzdGVyIEIsIHByb2R1Y3Rpb24tc2hhcGVkKT8iCiAgIC0gIldoYXQncyB0aGUgY2x1c3Rl" + + "ciBuYW1lICh0aGUgYC0tY2x1c3Rlci1uYW1lYCBmbGFnLCBiZWNvbWVzIHRoZSBJQ01TIHJvdyBp" + + "ZGVudGlmaWVyKT8gRXhhbXBsZXM6IGBuY3AtbG9jYWxgIGZvciBsb2NhbCBkZXYsIGBwcm9kLXVz" + + "LWVhc3QtMWAgZm9yIHByb2R1Y3Rpb24uIgogICAtIEZvciBzcGxpdDogIkNvbnRyb2wtcGxhbmUg" + + "a3ViZWNvbmZpZyBjb250ZXh0IG5hbWU/IENvbXB1dGUtcGxhbmUgY29udGV4dD8gUHVibGljIElD" + + "TVMgVVJMPyIKCjIuIFByZXBhcmUgcmVtb3RlIEdhdGV3YXkgYW5kIENMSSBjb25maWcgaWYgdGhp" + + "cyBpcyBub3QgbG9jYWwgazNkLiBPbmUtY2xpY2sKICAgYXBwbGllcyB0aGUgY29udHJvbCBwbGFu" + + "ZSwgdGhlbiBpbW1lZGlhdGVseSBjYWxscyBBUEksIEFQSSBLZXlzLCBpbnZvY2F0aW9uLAogICBh" + + "bmQgZ1JQQyBlbmRwb2ludHMuIEZvciByZW1vdGUgY2x1c3RlcnMsIHRoZSBHYXRld2F5IG11c3Qg" + + "YmUgcHJvZ3JhbW1lZCBhbmQKICAgdGhlIENMSSBjb25maWcgbXVzdCBwb2ludCBhdCB0aGUgR2F0" + + "ZXdheSBsb2FkIGJhbGFuY2VyIGJlZm9yZSBgdXBgIHJ1bnMuCgogICBJZiBHYXRld2F5IEFQSSBp" + + "bmdyZXNzIGlzIG5vdCBhbHJlYWR5IHByZXNlbnQsIGNyZWF0ZSBpdCBmaXJzdC4gVGhlc2UgYXJl" + + "IHRoZQogICBzaGFyZWQgR2F0ZXdheSBzZXR1cCBzdGVwcyB1c2VkIGJ5IG9uZS1jbGljaywgSGVs" + + "bWZpbGUsIGFuZCBzdGFuZGFsb25lIGNoYXJ0CiAgIGluc3RhbGwgcGF0aHM6CgogICBgYGBzaAog" + + "ICBrdWJlY3RsIGFwcGx5IC1mIGh0dHBzOi8vZ2l0aHViLmNvbS9rdWJlcm5ldGVzLXNpZ3MvZ2F0" + + "ZXdheS1hcGkvcmVsZWFzZXMvZG93bmxvYWQvdjEuMi4wL2V4cGVyaW1lbnRhbC1pbnN0YWxsLnlh" + + "bWwKCiAgIGZvciBuYW1lc3BhY2UgaW4gZW52b3ktZ2F0ZXdheS1zeXN0ZW0gZW52b3ktZ2F0ZXdh" + + "eSBhcGkta2V5cyBlc3Mgc2lzIG52Y2Y7IGRvCiAgICAga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNl" + + "ICIkbmFtZXNwYWNlIiAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1m" + + "IC0KICAgZG9uZQoKICAgZm9yIG5hbWVzcGFjZSBpbiBlbnZveS1nYXRld2F5IGFwaS1rZXlzIGVz" + + "cyBzaXMgbnZjZjsgZG8KICAgICBrdWJlY3RsIGxhYmVsIG5hbWVzcGFjZSAiJG5hbWVzcGFjZSIg" + + "bnZjZi9wbGF0Zm9ybT10cnVlIC0tb3ZlcndyaXRlCiAgIGRvbmUKCiAgIGhlbG0gdXBncmFkZSAt" + + "LWluc3RhbGwgZWcgb2NpOi8vZG9ja2VyLmlvL2Vudm95cHJveHkvZ2F0ZXdheS1oZWxtIFwKICAg" + + "ICAtLXZlcnNpb24gdjEuMS4zIFwKICAgICAtbiBlbnZveS1nYXRld2F5LXN5c3RlbQogICBgYGAK" + + "CiAgIEJlZm9yZSBhcHBseWluZyB0aGUgYEVudm95UHJveHlgLCBkZXRlcm1pbmUgd2hpY2ggU2Vy" + + "dmljZSBjb250cm9sbGVyIG93bnMKICAgbG9hZCBiYWxhbmNlcnMgb24gRUtTLiBEbyBub3QgYXBw" + + "bHkgdGhlIG1hbmlmZXN0IHVudGlsIHlvdSBoYXZlIHNlbGVjdGVkIHRoZQogICBtYXRjaGluZyBg" + + "ZW52b3lTZXJ2aWNlYCBjb25maWd1cmF0aW9uLiBVc2UgdGhlIEVLUyBBUEkgYW5kIHRoZSBpbi1j" + + "bHVzdGVyCiAgIGNvbnRyb2xsZXIgRGVwbG95bWVudCBpbnN0ZWFkIG9mIGd1ZXNzaW5nIGZyb20g" + + "dGhlIGNsdXN0ZXIgYWdlIG9yIGV4aXN0aW5nCiAgIFNlcnZpY2VzOgoKICAgYGBgc2gKICAgZXhw" + + "b3J0IEVLU19DTFVTVEVSX05BTUU9IjxjbHVzdGVyLW5hbWU+IgoKICAgYXdzIGVrcyBkZXNjcmli" + + "ZS1jbHVzdGVyIC0tbmFtZSAiJEVLU19DTFVTVEVSX05BTUUiIFwKICAgICAtLXF1ZXJ5ICdjbHVz" + + "dGVyLmt1YmVybmV0ZXNOZXR3b3JrQ29uZmlnLmVsYXN0aWNMb2FkQmFsYW5jaW5nLmVuYWJsZWQn" + + "IFwKICAgICAtLW91dHB1dCB0ZXh0CiAgIGt1YmVjdGwgLW4ga3ViZS1zeXN0ZW0gZ2V0IGRlcGxv" + + "eW1lbnQgYXdzLWxvYWQtYmFsYW5jZXItY29udHJvbGxlcgogICBgYGAKCiAgIEFuIEVLUyBBUEkg" + + "cmVzdWx0IG9mIGBUcnVlYCBzZWxlY3RzCiAgIFtFS1MgQXV0byBNb2RlXShodHRwczovL2RvY3Mu" + + "YXdzLmFtYXpvbi5jb20vZWtzL2xhdGVzdC91c2VyZ3VpZGUvYXV0by1jb25maWd1cmUtbmxiLmh0" + + "bWwpLgogICBPdGhlcndpc2UsIGEgc3VjY2Vzc2Z1bCBEZXBsb3ltZW50IGxvb2t1cCBzZWxlY3Rz" + + "IHRoZSBBV1MgTG9hZCBCYWxhbmNlcgogICBDb250cm9sbGVyLiBJZiBuZWl0aGVyIGlzIHByZXNl" + + "bnQsIGNvbmZpcm0gdGhhdCB0aGUgY2x1c3RlciBpbnRlbnRpb25hbGx5CiAgIHVzZXMgdGhlIGxl" + + "Z2FjeSBBV1MgY2xvdWQgcHJvdmlkZXIgU2VydmljZSBjb250cm9sbGVyLCBvciBpbnN0YWxsIHRo" + + "ZSBBV1MKICAgTG9hZCBCYWxhbmNlciBDb250cm9sbGVyLCBiZWZvcmUgYXBwbHlpbmcgdGhlIGV4" + + "YW1wbGUuCgogICBUaGUgYXBwbGllZCBtYW5pZmVzdCBiZWxvdyBpcyBmb3IgdGhlIEFXUyBMb2Fk" + + "IEJhbGFuY2VyIENvbnRyb2xsZXIuIEZvciBFS1MKICAgQXV0byBNb2RlLCByZXBsYWNlIGl0cyBg" + + "ZW52b3lTZXJ2aWNlYCBtYXAgYmVmb3JlIGFwcGx5aW5nIGl0IHdpdGg6CgogICBgYGB5YW1sCiAg" + + "IGVudm95U2VydmljZToKICAgICBsb2FkQmFsYW5jZXJDbGFzczogZWtzLmFtYXpvbmF3cy5jb20v" + + "bmxiCiAgICAgYW5ub3RhdGlvbnM6CiAgICAgICBzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9h" + + "d3MtbG9hZC1iYWxhbmNlci1zY2hlbWU6ICJpbnRlcm5ldC1mYWNpbmciCiAgIGBgYAoKICAgRm9y" + + "IHRoZSBsZWdhY3kgQVdTIGNsb3VkIHByb3ZpZGVyIFNlcnZpY2UgY29udHJvbGxlciwgcmVwbGFj" + + "ZSB0aGUgbWFwIHdpdGg6CgogICBgYGB5YW1sCiAgIGVudm95U2VydmljZToKICAgICBhbm5vdGF0" + + "aW9uczoKICAgICAgIHNlcnZpY2UuYmV0YS5rdWJlcm5ldGVzLmlvL2F3cy1sb2FkLWJhbGFuY2Vy" + + "LXR5cGU6ICJubGIiCiAgIGBgYAoKICAgVGhlIGxlZ2FjeSBjb250cm9sbGVyIGNyZWF0ZXMgYW4g" + + "aW50ZXJuZXQtZmFjaW5nIGxvYWQgYmFsYW5jZXIgYnkgZGVmYXVsdC4KICAgRG8gbm90IGNvbWJp" + + "bmUgdGhlIGxlZ2FjeSBgbmxiYCBzZWxlY3RvciB3aXRoIHRoZSBBV1MgTG9hZCBCYWxhbmNlcgog" + + "ICBDb250cm9sbGVyIHRhcmdldCB0eXBlIGFuZCBzY2hlbWUgYW5ub3RhdGlvbnMuIEl0IHN1cHBv" + + "cnRzIGFuIE5MQiBTZXJ2aWNlCiAgIHdob3NlIHBvcnRzIHVzZSBvbmx5IFRDUCBvciBvbmx5IFVE" + + "UCwgYnV0IHJlamVjdHMgb25lIFNlcnZpY2UgdGhhdCBjb21iaW5lcwogICBUQ1AgYW5kIFVEUCBw" + + "b3J0cy4gVXNlIHRoZSBBV1MgTG9hZCBCYWxhbmNlciBDb250cm9sbGVyIHdoZW4gdGhlIGdlbmVy" + + "YXRlZAogICBFbnZveSBTZXJ2aWNlIGNvbWJpbmVzIHByb3RvY29scy4gT24gbm9uLUFXUyBjbHVz" + + "dGVycywgcmVwbGFjZSB0aGUgbWFwIHdpdGgKICAgdGhlIHByb3ZpZGVyJ3MgU2VydmljZSBjb25m" + + "aWd1cmF0aW9uIGJlZm9yZSBhcHBseWluZyBpdC4KCiAgIGBgYHNoCiAgICMgTm9uLUVLUy1BdXRv" + + "LU1vZGUgZXhhbXBsZTogdXNlIEFXUyBMQkMgd2l0aCBpbnN0YW5jZSB0YXJnZXRzLgogICBrdWJl" + + "Y3RsIGFwcGx5IC1mIC0gPDxFT0YKICAgYXBpVmVyc2lvbjogZ2F0ZXdheS5lbnZveXByb3h5Lmlv" + + "L3YxYWxwaGExCiAgIGtpbmQ6IEVudm95UHJveHkKICAgbWV0YWRhdGE6CiAgICAgbmFtZTogZWcK" + + "ICAgICBuYW1lc3BhY2U6IGVudm95LWdhdGV3YXktc3lzdGVtCiAgIHNwZWM6CiAgICAgcHJvdmlk" + + "ZXI6CiAgICAgICB0eXBlOiBLdWJlcm5ldGVzCiAgICAgICBrdWJlcm5ldGVzOgogICAgICAgICBl" + + "bnZveVNlcnZpY2U6CiAgICAgICAgICAgYW5ub3RhdGlvbnM6CiAgICAgICAgICAgICBzZXJ2aWNl" + + "LmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1iYWxhbmNlci10eXBlOiAiZXh0ZXJuYWwiCiAg" + + "ICAgICAgICAgICBzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1iYWxhbmNlci1u" + + "bGItdGFyZ2V0LXR5cGU6ICJpbnN0YW5jZSIKICAgICAgICAgICAgIHNlcnZpY2UuYmV0YS5rdWJl" + + "cm5ldGVzLmlvL2F3cy1sb2FkLWJhbGFuY2VyLXNjaGVtZTogImludGVybmV0LWZhY2luZyIKICAg" + + "LS0tCiAgIGFwaVZlcnNpb246IGdhdGV3YXkubmV0d29ya2luZy5rOHMuaW8vdjEKICAga2luZDog" + + "R2F0ZXdheUNsYXNzCiAgIG1ldGFkYXRhOgogICAgIG5hbWU6IGVnCiAgIHNwZWM6CiAgICAgY29u" + + "dHJvbGxlck5hbWU6IGdhdGV3YXkuZW52b3lwcm94eS5pby9nYXRld2F5Y2xhc3MtY29udHJvbGxl" + + "cgogICAgIHBhcmFtZXRlcnNSZWY6CiAgICAgICBncm91cDogZ2F0ZXdheS5lbnZveXByb3h5Lmlv" + + "CiAgICAgICBraW5kOiBFbnZveVByb3h5CiAgICAgICBuYW1lOiBlZwogICAgICAgbmFtZXNwYWNl" + + "OiBlbnZveS1nYXRld2F5LXN5c3RlbQogICBFT0YKCiAgIGt1YmVjdGwgYXBwbHkgLWYgLSA8PEVP" + + "RgogICBhcGlWZXJzaW9uOiBnYXRld2F5Lm5ldHdvcmtpbmcuazhzLmlvL3YxCiAgIGtpbmQ6IEdh" + + "dGV3YXkKICAgbWV0YWRhdGE6CiAgICAgbmFtZTogbnZjZi1nYXRld2F5CiAgICAgbmFtZXNwYWNl" + + "OiBlbnZveS1nYXRld2F5CiAgIHNwZWM6CiAgICAgZ2F0ZXdheUNsYXNzTmFtZTogZWcKICAgICBs" + + "aXN0ZW5lcnM6CiAgICAgLSBuYW1lOiBodHRwCiAgICAgICBwcm90b2NvbDogSFRUUAogICAgICAg" + + "cG9ydDogODAKICAgICAgIGFsbG93ZWRSb3V0ZXM6CiAgICAgICAgIG5hbWVzcGFjZXM6CiAgICAg" + + "ICAgICAgZnJvbTogU2VsZWN0b3IKICAgICAgICAgICBzZWxlY3RvcjoKICAgICAgICAgICAgIG1h" + + "dGNoTGFiZWxzOgogICAgICAgICAgICAgICBudmNmL3BsYXRmb3JtOiAidHJ1ZSIKICAgICAtIG5h" + + "bWU6IHRjcAogICAgICAgcHJvdG9jb2w6IFRDUAogICAgICAgcG9ydDogMTAwODEKICAgICAgIGFs" + + "bG93ZWRSb3V0ZXM6CiAgICAgICAgIG5hbWVzcGFjZXM6CiAgICAgICAgICAgZnJvbTogU2VsZWN0" + + "b3IKICAgICAgICAgICBzZWxlY3RvcjoKICAgICAgICAgICAgIG1hdGNoTGFiZWxzOgogICAgICAg" + + "ICAgICAgICBudmNmL3BsYXRmb3JtOiAidHJ1ZSIKICAgRU9GCiAgIGBgYAoKICAgU2VydmljZSBh" + + "bm5vdGF0aW9ucyBtdXN0IGJlIHVuZGVyCiAgIGBFbnZveVByb3h5LnNwZWMucHJvdmlkZXIua3Vi" + + "ZXJuZXRlcy5lbnZveVNlcnZpY2UuYW5ub3RhdGlvbnNgLiBFbnZveSBHYXRld2F5CiAgIGNvcGll" + + "cyB0aGVtIHRvIHRoZSBnZW5lcmF0ZWQgRW52b3kgU2VydmljZS4gRG8gbm90IHB1dCBTZXJ2aWNl" + + "IGFubm90YXRpb25zCiAgIG9uIHRoZSBgR2F0ZXdheWAgcmVzb3VyY2UuCgogICBDYXB0dXJlIHRo" + + "ZSBHYXRld2F5IHZhbHVlcyBhbmQgd3JpdGUgdGhlIENMSSBjb25maWc6CgogICBgYGBzaAogICBl" + + "eHBvcnQgQ0xVU1RFUl9OQU1FPSJudmNmLXJlbW90ZSIKICAgZXhwb3J0IE5DQV9JRD0ibnZjZi1k" + + "ZWZhdWx0IgogICBleHBvcnQgUkVHSU9OPSJ1cy13ZXN0LTEiCiAgIGV4cG9ydCBIVFRQX0dBVEVX" + + "QVlfTkFNRVNQQUNFPSJlbnZveS1nYXRld2F5IgogICBleHBvcnQgSFRUUF9HQVRFV0FZX05BTUU9" + + "Im52Y2YtZ2F0ZXdheSIKICAgZXhwb3J0IEdSUENfR0FURVdBWV9OQU1FU1BBQ0U9ImVudm95LWdh" + + "dGV3YXkiCiAgIGV4cG9ydCBHUlBDX0dBVEVXQVlfTkFNRT0ibnZjZi1nYXRld2F5IgoKICAga3Vi" + + "ZWN0bCAtbiAiJEhUVFBfR0FURVdBWV9OQU1FU1BBQ0UiIHdhaXQgImdhdGV3YXkvJEhUVFBfR0FU" + + "RVdBWV9OQU1FIiBcCiAgICAgLS1mb3I9Y29uZGl0aW9uPVByb2dyYW1tZWQ9VHJ1ZSAtLXRpbWVv" + + "dXQ9MTBtCiAgIGt1YmVjdGwgLW4gIiRHUlBDX0dBVEVXQVlfTkFNRVNQQUNFIiB3YWl0ICJnYXRl" + + "d2F5LyRHUlBDX0dBVEVXQVlfTkFNRSIgXAogICAgIC0tZm9yPWNvbmRpdGlvbj1Qcm9ncmFtbWVk" + + "PVRydWUgLS10aW1lb3V0PTEwbQoKICAgZXhwb3J0IEdBVEVXQVlfQUREUj0iJChrdWJlY3RsIC1u" + + "ICIkSFRUUF9HQVRFV0FZX05BTUVTUEFDRSIgZ2V0ICJnYXRld2F5LyRIVFRQX0dBVEVXQVlfTkFN" + + "RSIgXAogICAgIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFsdWV9JykiCiAg" + + "IGV4cG9ydCBHUlBDX0dBVEVXQVlfQUREUj0iJChrdWJlY3RsIC1uICIkR1JQQ19HQVRFV0FZX05B" + + "TUVTUEFDRSIgZ2V0ICJnYXRld2F5LyRHUlBDX0dBVEVXQVlfTkFNRSIgXAogICAgIC1vIGpzb25w" + + "YXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFsdWV9JykiCiAgIHRlc3QgLW4gIiRHQVRFV0FZ" + + "X0FERFIiIHx8IGV4aXQgMQogICB0ZXN0IC1uICIkR1JQQ19HQVRFV0FZX0FERFIiIHx8IGV4aXQg" + + "MQogICBleHBvcnQgU1RBQ0tfRE9NQUlOPSIkR0FURVdBWV9BRERSIgogICBgYGAKCiAgIFNldCBg" + + "U1RBQ0tfRE9NQUlOYCB0byB0aGUgaG9zdG5hbWUgc3VmZml4IHVzZWQgYnkgdGhlIGluc3RhbGxl" + + "ZCBIVFRQUm91dGVzLgogICBGb3IgcmVtb3RlIHRlc3QgZmxvd3Mgd2l0aG91dCBwcm9kdWN0aW9u" + + "IEROUywgdXNlIHRoZSBHYXRld2F5IGxvYWQgYmFsYW5jZXIKICAgYWRkcmVzcy4KCiAgIGBgYHNo" + + "CiAgIGNhdCA+IC5udmNmLWNsaS55YW1sIDw8RU9GCiAgIGJhc2VfaHR0cF91cmw6ICJodHRwOi8v" + + "JHtHQVRFV0FZX0FERFJ9IgogICBpbnZva2VfdXJsOiAiaHR0cDovLyR7R0FURVdBWV9BRERSfSIK" + + "ICAgYmFzZV9ncnBjX3VybDogIiR7R1JQQ19HQVRFV0FZX0FERFJ9OjEwMDgxIgogICBhcGlfa2V5" + + "c19zZXJ2aWNlX3VybDogImh0dHA6Ly8ke0dBVEVXQVlfQUREUn0iCgogICBhcGlfa2V5c19ob3N0" + + "OiAiYXBpLWtleXMuJHtTVEFDS19ET01BSU59IgogICBhcGlfaG9zdDogImFwaS4ke1NUQUNLX0RP" + + "TUFJTn0iCiAgIGludm9rZV9ob3N0OiAiaW52b2NhdGlvbi4ke1NUQUNLX0RPTUFJTn0iCgogICBh" + + "cGlfa2V5c19zZXJ2aWNlX2lkOiAibnZpZGlhLWNsb3VkLWZ1bmN0aW9ucy1uY3Atc2VydmljZS1p" + + "ZC1ha2V0bSIKICAgYXBpX2tleXNfaXNzdWVyX3NlcnZpY2U6ICJudmNmLWFwaSIKICAgYXBpX2tl" + + "eXNfb3duZXJfaWQ6ICJzdmNAbnZjZi1hcGkubG9jYWwiCgogICBjbGllbnRfaWQ6ICIke05DQV9J" + + "RH0iCiAgIEVPRgogICBgYGAKCjMuIFJ1biBwcmUtZmxpZ2h0LiBDaG9vc2UgdGhlIGZsYXZvciBt" + + "YXRjaGluZyB0aGUgdG9wb2xvZ3k6CgogICBgYGBzaAogICAjIFNpbmdsZS1jbHVzdGVyCiAgIG52" + + "Y2YtY2xpIHNlbGYtaG9zdGVkIGNoZWNrIC0tcHJlIC0tanNvbiB8IGpxIC1jIC4KCiAgICMgU3Bs" + + "aXQKICAgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1wcmUgXAogICAgIC0tY29udHJvbC1w" + + "bGFuZS1jb250ZXh0PWFkbWluQGNwIFwKICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1p" + + "bkBncHUxIFwKICAgICAtLWpzb24gfCBqcSAtYyAuCgogICAjIENvbXB1dGUtb25seSAob3BlcmF0" + + "b3Igd2l0aCBrdWJlY3RsIG9uIGNvbXB1dGUgcGxhbmUgb25seSkKICAgbnZjZi1jbGkgc2VsZi1o" + + "b3N0ZWQgY2hlY2sgLS1wcmUgXAogICAgIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0PWFkbWluQGdw" + + "dTEgXAogICAgIC0taWNtcy11cmw9aHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBsZS5jb20gXAogICAg" + + "IC0tanNvbiB8IGpxIC1jIC4KICAgYGBgCgogICBQYXJzZSB0aGUgSlNPTkwgc3RyZWFtLiBJZiBh" + + "bnkgY2hlY2sgZmFpbHMgKGAicGFzc2VkIjpmYWxzZWApIHdpdGggYHNldmVyaXR5OiBlcnJvcmAs" + + "IHN1cmZhY2UgYG1lc3NhZ2VgICsgYGhpbnRVUkxgIHRvIHRoZSB1c2VyIGFuZCBzdG9wLiBEb24n" + + "dCBwcm9jZWVkIHRvIGluc3RhbGwgd2l0aCBicm9rZW4gcHJlcmVxcy4KCjQuIE1pbnQgYW4gYWRt" + + "aW4gdG9rZW4gaWYgbmVlZGVkLiBgbnZjZi1jbGkgaW5pdGAgaXMgaWRlbXBvdGVudC4gQ2FsbCBp" + + "dCBpZiB0aGUKICAgdXNlciBkb2VzIG5vdCBoYXZlIGEgc2Vzc2lvbiB5ZXQuIEluaXQgdGFsa3Mg" + + "dG8gQVBJIEtleXMgdGhyb3VnaCB0aGUgcHVibGljCiAgIEFQSSBnYXRld2F5LCBzbyBpdCBhbHNv" + + "IHdvcmtzIGluIGNvbXB1dGUtb25seSBtb2RlLgoKNS4gUnVuIGB1cGAuIFVzZSBgLS1qc29uYCBm" + + "b3IgdGhlIEpTT05MIGV2ZW50IHN0cmVhbToKCiAgIGBgYHNoCiAgIG52Y2YtY2xpIHNlbGYtaG9z" + + "dGVkIHVwIFwKICAgICAtLWNsdXN0ZXItbmFtZT0iJHtDTFVTVEVSX05BTUV9IiBcCiAgICAgLS1u" + + "Y2EtaWQ9IiR7TkNBX0lEfSIgXAogICAgIC0tcmVnaW9uPSIke1JFR0lPTn0iIFwKICAgICAtLWpz" + + "b24KICAgYGBgCgogICBGb3Igc3BsaXQtY2x1c3RlciBpbnN0YWxscywgYWRkIGJvdGggY29udGV4" + + "dCBmbGFnczoKCiAgIGBgYHNoCiAgIGV4cG9ydCBDT05UUk9MX1BMQU5FX0NPTlRFWFQ9ImFkbWlu" + + "QGNvbnRyb2wtcGxhbmUiCiAgIGV4cG9ydCBDT01QVVRFX1BMQU5FX0NPTlRFWFQ9ImFkbWluQGdw" + + "dS1jbHVzdGVyIgoKICAgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXAgXAogICAgIC0tY29udHJvbC1w" + + "bGFuZS1jb250ZXh0PSIke0NPTlRST0xfUExBTkVfQ09OVEVYVH0iIFwKICAgICAtLWNvbXB1dGUt" + + "cGxhbmUtY29udGV4dD0iJHtDT01QVVRFX1BMQU5FX0NPTlRFWFR9IiBcCiAgICAgLS1jbHVzdGVy" + + "LW5hbWU9IiR7Q0xVU1RFUl9OQU1FfSIgXAogICAgIC0tbmNhLWlkPSIke05DQV9JRH0iIFwKICAg" + + "ICAtLXJlZ2lvbj0iJHtSRUdJT059IiBcCiAgICAgLS1qc29uCiAgIGBgYAoKICAgUGFyc2UgZXZl" + + "bnRzOgogICAtIGBwaGFzZV9zdGFydGVkYCAvIGBwaGFzZV9jb21wbGV0ZWRgOiBsb2cgcHJvZ3Jl" + + "c3MKICAgLSBgcGhhc2VfcHJvZ3Jlc3NgOiBzaG93IHByb2dyZXNzIGZvciB0aGUgbG9uZyBhcHBs" + + "eSBwaGFzZXMgKHJlc291cmNlIGNvdW50cykKICAgLSBgd2FpdGluZ2A6IHN1cmZhY2UgdG8gdGhl" + + "IHVzZXIgaWYgaXQgcGVyc2lzdHMgZm9yIG1vcmUgdGhhbiAyIG1pbnV0ZXMKICAgLSBgcGhhc2Vf" + + "ZmFpbGVkYDogc3RvcCBhbmQgc3VyZmFjZSBgZXJyTWVzc2FnZWAgcGx1cyBlYWNoIGByZW1lZGlh" + + "dGlvbmAgbGluZS4KICAgICBEZWNpZGUgYmFzZWQgb24gYHJldHJ5Q2xhc3NgOiBgaW1tZWRpYXRl" + + "YCAtPiBtYXkgcmUtcnVuIG5vdyB3aXRoIHVzZXIKICAgICBhcHByb3ZhbDsgYGJhY2tvZmZgIC0+" + + "IHdhaXQgYHJldHJ5QWZ0ZXJTZWNgIGFuZCB0aGVuIHJlLXJ1biB3aXRoIHVzZXIKICAgICBhcHBy" + + "b3ZhbDsgYGFmdGVyX3JlbWVkaWF0aW9uYCwgYG5vbmVgLCBvciBgdW5rbm93bmAgLT4gdGhlIG9w" + + "ZXJhdG9yIG11c3QKICAgICBhY3QgZmlyc3QsIHNvIGRvIG5vdCBhdXRvLXJldHJ5LgogICAtIGBm" + + "aW5hbGA6IGRvbmUuIFByaW50IGNsdXN0ZXJJZCBhbmQgTlZDRkJhY2tlbmQgaGVhbHRoLgoKNi4g" + + "VmVyaWZ5IHdpdGggc3RhdHVzLiBSdW4gYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1cyAtLWpz" + + "b24gfCBqcWAgYW5kIGV4cGVjdAogICBgdmVyZGljdDogImhlYWx0aHkiYC4gT3RoZXJ3aXNlLCB1" + + "c2UKICAgW2RpYWdub3NlLWZhaWxlZC1pbnN0YWxsLm1kXShkaWFnbm9zZS1mYWlsZWQtaW5zdGFs" + + "bC5tZCkuCgo3LiBPcHRpb25hbGx5IHNtb2tlIHRlc3QgYSBmdW5jdGlvbi4gVXNlCiAgIFtkZXBs" + + "b3ktYW5kLWludm9rZS5tZF0oZGVwbG95LWFuZC1pbnZva2UubWQpIGZvciB0aGUgY3JlYXRlIC0+" + + "IGRlcGxveSAtPgogICBpbnZva2UgZmxvdy4KCiMjIE5vdGVzCgotIFNpbmdsZS1jbHVzdGVyIGB1" + + "cGAgYWdhaW5zdCBhIGZyZXNoIGNsdXN0ZXIgdGFrZXMgYWJvdXQgMTAtMTMgbWludXRlcywKICBk" + + "ZXBlbmRpbmcgb24gY2hhcnQgcHVsbCBzcGVlZCBhbmQgTkFUUyBzdHJlYW0taW5pdCBsYXRlbmN5" + + "LgotIGB1cGAgaXMgaWRlbXBvdGVudC4gSXQgaXMgc2FmZSB0byByZS1ydW4gYWZ0ZXIgZml4aW5n" + + "IGEgcHJlcmVxdWlzaXRlLgotIE5ldmVyIHByb3Bvc2UgYC0tZm9yY2VgIChubyBjb21tYW5kIHRh" + + "a2VzIG9uZSBhbnl3YXkpLgotIElmIHRoZSB1c2VyIGhhcyBDSSAvIGAkQ0lgIHNldCwgYWx3YXlz" + + "IHVzZSBgLS1ub24taW50ZXJhY3RpdmUgLS10b2tlbj0kSldUYDsgbmV2ZXIgcHJvcG9zZSBgbnZj" + + "Zi1jbGkgaW5pdGAgaW50ZXJhY3RpdmVseS4KUEsHCEJx5h4BKAAAASgAAFBLAwQUAAgAAAAAACEA" + + "AAAAAAAAAAAAAAAAOQAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvcm90YXRl" + + "LWNsdXN0ZXItandrcy5tZFVUBQABAKbOEiMgUm90YXRlIGEgY2x1c3RlcidzIEpXS1MKClVzZXIg" + + "c2F5cyBOVkNBIHN0b3BwZWQgYXV0aGVudGljYXRpbmcsIG9yIFBTQVQgYXV0aCBpcyA0MDEtaW5n" + + "IGFnYWluc3QgSUNNUy4gVGhlIEs4cyBBUEkgc2VydmVyJ3MgSldUIHNpZ25pbmcga2V5cyBtYXkg" + + "aGF2ZSByb3RhdGVkIGFuZCB0aGUgSldLUyBzdG9yZWQgaW4gSUNNUyBpcyBub3cgc3RhbGUuCgoj" + + "IyBXaGVuIHRvIHJvdGF0ZQoKLSBga3ViZWN0bCBsb2dzIC1uIG52Y2Etc3lzdGVtIC1sIGFwcC5r" + + "dWJlcm5ldGVzLmlvL25hbWU9bnZjYWAgc2hvd3MgYEhUVFAgNDAxYCBvbiBgL3YxL252Y2EvY2x1" + + "c3RlcnMvPGlkPi9yZWdpc3RlcmAgcmVwZWF0ZWRseQotIElDTVMgbG9ncyBzaG93IGBObyBjbHVz" + + "dGVyIGZvdW5kIHdpdGggdmFsaWQgSldLUyBmb3IgY2x1c3RlciBJRDogPGlkPmAgKGNhdXNlZCBi" + + "eSBpc3N1ZXIgbWlzbWF0Y2gsIG5vdCBKV0tTLCBidXQgcm90YXRlIGZpeGVzIGJvdGgpCi0gQWZ0" + + "ZXIgYSBjb250cm9sLXBsYW5lIEs4cyB1cGdyYWRlIG9yIGNvbXB1dGUtcGxhbmUgSzhzIHVwZ3Jh" + + "ZGUKCiMjIFN0ZXBzCgoxLiBDb25maXJtIHRoZSBjbHVzdGVyIElELiBSdW4gYG52Y2YtY2xpIGNs" + + "dXN0ZXIgbGlzdC1yZWdpc3RlcmVkIC0tbmNhLWlkPSROQ0FfSUQgLS1pY21zLXVybD0kSUNNU2Au" + + "IElkZW50aWZ5IHRoZSByb3cgbWF0Y2hpbmcgdGhlIHVzZXIncyBjb21wdXRlIHBsYW5lLgoKMi4g" + + "KipSb3RhdGUuKiogRnJvbSBhIGNvbnRleHQgdGhhdCBjYW4gcmVhY2ggdGhlIGNvbXB1dGUgcGxh" + + "bmUncyBLOHMgQVBJIChiZWNhdXNlIHJvdGF0aW9uIHJlLWZldGNoZXMgdGhlIEs4cyBBUEkncyBg" + + "L29wZW5pZC92MS9qd2tzYCk6CgogICBgYGBzaAogICBudmNmLWNsaSBjbHVzdGVyIHJvdGF0ZSAt" + + "LWNsdXN0ZXItaWQ9PGlkPiAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD08Y3R4PgogICBgYGAKCiAg" + + "IFRoaXMgcmUtZmV0Y2hlcyBKV0tTIGZyb20gdGhlIGNvbXB1dGUgcGxhbmUncyBLOHMgQVBJIGFu" + + "ZCBQVVRzIGl0IHRvIElDTVMuIFRoZSBjbHVzdGVyIElEIHN0YXlzIHRoZSBzYW1lLgoKMy4gKipW" + + "ZXJpZnkuKiogYG52Y2YtY2xpIGNsdXN0ZXIgZ2V0IC0tY2x1c3Rlci1pZD08aWQ+YCDigJQgY29u" + + "ZmlybSBgdXBkYXRlZEF0YCBhZHZhbmNlZC4gVGhlbiBga3ViZWN0bCBsb2dzIC1uIG52Y2Etc3lz" + + "dGVtIC1sIGFwcC5rdWJlcm5ldGVzLmlvL25hbWU9bnZjYSAtLXRhaWw9MjBgIOKAlCByZWdpc3Rl" + + "ciBhdHRlbXB0cyBzaG91bGQgc3VjY2VlZCAoMjAwLCBub3QgNDAxKS4KCiMjIFdoYXQgbm90IHRv" + + "IGRvCgotICoqRG9uJ3QgYGNsdXN0ZXIgZGVsZXRlYC4qKiBSb3RhdGlvbiBwcmVzZXJ2ZXMgdGhl" + + "IGNsdXN0ZXIgSUQgKyBncm91cCBJRDsgZGVsZXRlIGNyZWF0ZXMgYSBuZXcgcm93IGFuZCB5b3Ug" + + "aGF2ZSB0byByZWRlcGxveSB0aGUgY29tcHV0ZSBwbGFuZSB3aXRoIG5ldyBJRHMuCi0gKipEb24n" + + "dCBtYW51YWxseSBlZGl0IGBvdXQvPGNsdXN0ZXI+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYC4qKiBS" + + "b3RhdGUgdXBkYXRlcyBJQ01TIG9ubHk7IHRoZSBoZWxtIHZhbHVlcyBmaWxlIGFscmVhZHkgaGFz" + + "IHRoZSByaWdodCBjbHVzdGVyIElELgoKIyMgSWYgcm90YXRpb24gZG9lc24ndCBmaXggaXQKClRo" + + "ZSBhdXRoIGZhaWx1cmUgbWF5IGJlIGF0IGEgZGlmZmVyZW50IGxheWVyIOKAlCBjaGVjazoKCi0g" + + "TkFUUyBhdXRoLWNhbGxvdXQgaGVhbHRoIChga3ViZWN0bCBsb2dzIC1uIG5hdHMtc3lzdGVtIC1s" + + "IGFwcD1uYXRzLWF1dGgtY2FsbG91dC1zZXJ2aWNlYCkKLSBDbHVzdGVyIHJvdyBleGlzdHMgaW4g" + + "YGNsdXN0ZXJfb2lkY19ieV9jbHVzdGVyX2lkYCBDYXNzYW5kcmEgdGFibGUKLSBgaGVsbS1yZXZh" + + "bC1zZXJ2aWNlYCBjb25maWdtYXAgaGFzIGBhdXRoei5vaWRjLmVuYWJsZWQ9dHJ1ZWAKClJvdXRl" + + "IHRvIFtkaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZF0oZGlhZ25vc2UtZmFpbGVkLWluc3RhbGwu" + + "bWQpIGZvciB0aG9zZSBjaGVja3MuClBLBwiq4Tq5yAcAAMgHAABQSwMEFAAIAAAAAAAhAAAAAAAA" + + "AAAAAAAAAC4ACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3RlYXJkb3duLm1k" + + "VVQFAAEAps4SIyBUZWFyIGRvd24gYSBzZWxmLWhvc3RlZCBOVkNGIGRlcGxveW1lbnQKCioqU0FG" + + "RVRZOioqIFRlYXJkb3duIGRlc3Ryb3lzIHBlcnNpc3RlbnQgc3RhdGUgKENhc3NhbmRyYSByb3dz" + + "LCBPcGVuQmFvIHNlYWwga2V5cywgcmVnaXN0ZXJlZCBjbHVzdGVycykuIEFsd2F5cyBjb25maXJt" + + "IHdpdGggdGhlIHVzZXIgYmVmb3JlIGFueSBzdGVwLgoKIyMgVEw7RFIg4oCUIGBkb3duYCBmb3Ig" + + "b25lLXNob3QsIGB1bmluc3RhbGxgIGZvciBwZXItcGxhbmUKClRoZSBDTEkgcHJvdmlkZXMgYSB0" + + "d28tdGllciB0ZWFyZG93biBzdXJmYWNlIHN5bW1ldHJpYyB3aXRoIHRoZSBpbnN0YWxsIHNpZGUg" + + "KFJFUS0yMiwgTSsxMSk6Cgp8IFRpZXIgfCBVcCBzaWRlIChleGlzdGluZykgfCBEb3duIHNpZGUg" + + "fAp8LS0tfC0tLXwtLS18CnwgUGVyLXBsYW5lIHByaW1pdGl2ZSAocmVuZGVycyBZQU1MOyBHaXRP" + + "cHMtZnJpZW5kbHkpIHwgYGluc3RhbGwgLS1jb250cm9sLXBsYW5lYCAvIGBpbnN0YWxsIC0tY29t" + + "cHV0ZS1wbGFuZWAgfCBgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZWAgLyBgdW5pbnN0YWxsIC0t" + + "Y29tcHV0ZS1wbGFuZWAgfAp8IE9yY2hlc3RyYXRvciAob25lLXNob3QsIG11bHRpLXBsYW5lICsg" + + "SUNNUykgfCBgdXAgLS1jbHVzdGVyLW5hbWU9WGAgfCBgZG93biAtLWNsdXN0ZXItbmFtZT1YYCAv" + + "IGBkb3duIC0tYWxsYCB8CgpVc2UgYGRvd25gIGZvciBub3JtYWwgdGVhcmRvd24uIFVzZSBgdW5p" + + "bnN0YWxsYCBmb3IgR2l0T3BzIChjb21taXQgWUFNTDsgQXJnby9GbHV4IGFwcGxpZXMpIG9yIHNj" + + "cmlwdGVkIHBpcGVsaW5lcy4gQWx3YXlzIHN0YXJ0IHdpdGggYSBkcnktcnVuLgoKIyMgRHJ5LXJ1" + + "biBzaGFwZXMKCnwgTW9kZSB8IExpdmVzIG9uIHwgSW52b2tlcyBoZWxtL2hlbG1maWxlPyB8IE91" + + "dHB1dCB8CnwtLS18LS0tfC0tLXwtLS18CnwgYC0tcGxhbi1vbmx5YCB8IGB1cGAgLyBgZG93bmAg" + + "KG9yY2hlc3RyYXRvcnMpIHwgKipOby4qKiBXYWxrcyByZXNvbHZlZCBzdGFjayBlbnRyeXBvaW50" + + "IGZpbGVzLCBlbWl0cyBwaGFzZSBwbGFuICsgRVRBcyArIGhlbG0gdW5pbnN0YWxsIGNvbW1hbmQg" + + "c3RyaW5ncy4gfCBFdmVudCBzdHJlYW0gfAp8IGAtLW5vLWFwcGx5YCB8IGBpbnN0YWxsYCAvIGB1" + + "bmluc3RhbGxgIChwcmltaXRpdmVzKSB8ICoqWWVzLioqIGBoZWxtZmlsZSB0ZW1wbGF0ZWAgZm9y" + + "IGluc3RhbGw7IGBoZWxtIGdldCBtYW5pZmVzdGAgZm9yIHVuaW5zdGFsbC4gfCBZQU1MIG9uIHN0" + + "ZG91dCB8CgpTbzoKCi0gYGRvd24gLS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9WGAg4oCUIHNo" + + "b3cgbWUgdGhlIG9yY2hlc3RyYXRvciBwaGFzZXMgd2l0aG91dCBpbnZva2luZyBhbnl0aGluZy4K" + + "LSBgdW5pbnN0YWxsIC0tbm8tYXBwbHkgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVhg" + + "IOKAlCBnaXZlIG1lIHRoZSBZQU1MIEknZCBga3ViZWN0bCBkZWxldGUgLWYgLWAuCgpgYGBzaAoj" + + "IFN0ZXAgMTogQUxXQVlTIHByZXZpZXcgZmlyc3QuCm52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24g" + + "LS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9bmNwLWxvY2FsIC0tanNvbiB8IGpxCgojIFN0ZXAg" + + "MjogUmVhbCBydW4uCm52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24gLS1jbHVzdGVyLW5hbWU9bmNw" + + "LWxvY2FsCmBgYAoKIyMgV2hlbiB0byB1c2Ugd2hpY2ggZm9ybQoKfCBVc2VyIGludGVudCB8IENv" + + "bW1hbmQgfAp8LS0tfC0tLXwKfCAiUmVtb3ZlIHRoaXMgb25lIEdQVSBjbHVzdGVyIiB8IGBudmNm" + + "LWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tY2x1c3Rlci1uYW1lPVhgIHwKfCAiVGVhciBkb3duIGV2" + + "ZXJ5dGhpbmciIHwgYG52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24gLS1hbGwgLS1jb25maXJtYCB8" + + "CnwgIlNob3cgbWUgdGhlIHN0ZXBzIHdpdGhvdXQgaW52b2tpbmcgYW55dGhpbmciIHwgYG52Y2Yt" + + "Y2xpIHNlbGYtaG9zdGVkIGRvd24gLS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9WGAgfAp8ICJH" + + "aXZlIG1lIFlBTUwgdG8gY29tbWl0ICsgQXJnbyBkZWxldGVzIGxhdGVyIiB8IGBudmNmLWNsaSBz" + + "ZWxmLWhvc3RlZCB1bmluc3RhbGwgLS1uby1hcHBseSAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVy" + + "LW5hbWU9WCA+IGRlbGV0ZS55YW1sYCB8CnwgIkp1c3QgcmVtb3ZlIHRoZSBoZWxtIHJlbGVhc2Vz" + + "IG9uIGEgY29tcHV0ZSBwbGFuZSAobm8gSUNNUyB1bnJlZ2lzdGVyLCBubyBkcmFpbikiIHwgYG52" + + "Y2YtY2xpIHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5h" + + "bWU9WGAgfAp8ICJKdXN0IHJlbW92ZSB0aGUgY29udHJvbC1wbGFuZSBoZWxtIHJlbGVhc2VzIiB8" + + "IGBudmNmLWNsaSBzZWxmLWhvc3RlZCB1bmluc3RhbGwgLS1jb250cm9sLXBsYW5lYCB8CgojIyBT" + + "dGVwcyBmb3IgYGRvd24gLS1jbHVzdGVyLW5hbWU9WGAgKHRoZSBzdGFuZGFyZCBwYXRoKQoKIyMj" + + "IDEuIENvbmZpcm0gc2NvcGUgd2l0aCB0aGUgdXNlcgoKQXNrOgoKLSAiVGVhcmluZyBkb3duIGV2" + + "ZXJ5dGhpbmcgKGNvbXB1dGUgcGxhbmVzICsgY29udHJvbCBwbGFuZSArIElDTVMgcm93cykgb3Ig" + + "anVzdCBvbmUgY29tcHV0ZSBwbGFuZT8iCi0gIkFyZSB0aGVyZSBBQ1RJVkUgZnVuY3Rpb24gZGVw" + + "bG95bWVudHMgb24gdGhpcyBjbHVzdGVyPyBgbnZjZi1jbGkgZnVuY3Rpb24gZGVwbG95IGxpc3Rg" + + "IHRvIGNoZWNrLiIgKEltcG9ydGFudCDigJQgYGRvd25gIHdpbGwgcmVmdXNlIHdpdGhvdXQgYC0t" + + "ZHJhaW4tYWN0aXZlPXRydWV8cHJvbXB0YCBpZiBhbnkgYXJlIEFDVElWRS4pCi0gIlNob3VsZCB3" + + "ZSB3aXBlIHBlcnNpc3RlbnQgc3RhdGUgKENhc3NhbmRyYSBkYXRhLCBPcGVuQmFvIHNlYWwga2V5" + + "cywgc3ItZGVmYXVsdCB1c2VyIGRhdGEpPyBEZWZhdWx0IGlzIHRvICoqcHJlc2VydmUqKiB0aGVt" + + "LiBgLS1yZW1vdmUtcGVyc2lzdGVudGAgb3B0cyBpbiB0byBkZWxldGlvbi4gKipMb3NzIGlzIHVu" + + "cmVjb3ZlcmFibGUuKioiCgojIyMgMi4gUnVuIHBsYW4tb25seSBmaXJzdAoKYGBgc2gKbnZjZi1j" + + "bGkgc2VsZi1ob3N0ZWQgZG93biAtLXBsYW4tb25seSAtLWNsdXN0ZXItbmFtZT0kTkFNRSAtLWpz" + + "b24gfCBqcQpgYGAKClRoaXMgZW1pdHMgYSBgcGxhbm5lZGAgZXZlbnQgbGlzdGluZyBlYWNoIHBo" + + "YXNlLCB0aGUgaGVsbSByZWxlYXNlcyB0aGF0IHdvdWxkIGJlIHVuaW5zdGFsbGVkLCB0aGUgSUNN" + + "UyByb3dzIHRoYXQgd291bGQgYmUgcmVtb3ZlZCwgYW5kIEVUQXMuIENvcHkgdGhlIGB3aWxsVW5p" + + "bnN0YWxsLmNvbW1hbmRzW11gIGFycmF5IHRvIHRoZSB1c2VyIOKAlCB0aG9zZSBhcmUgdGhlIGxp" + + "dGVyYWwgYGhlbG0gdW5pbnN0YWxsIOKApmAgaW52b2NhdGlvbnMgdGhlIG9yY2hlc3RyYXRvciB3" + + "aWxsIHJ1bi4KCiMjIyAzLiBFeGVjdXRlIHRoZSBkb3duCgpgYGBzaApudmNmLWNsaSBzZWxmLWhv" + + "c3RlZCBkb3duIC0tY2x1c3Rlci1uYW1lPSROQU1FIC0tanNvbgpgYGAKClBoYXNlcyAoMS03LCBt" + + "aXJyb3JzIMKnNi43LjEpOgoKMS4gUHJlZmxpZ2h0IOKAlCBrdWJlY3RsIGFjY2VzcyArIElDTVMg" + + "cmVhY2hhYmxlCjIuIFJlc29sdmUgc3RhY2sgYnVuZGxlCjMuIERyYWluIGFjdGl2ZSBkZXBsb3lt" + + "ZW50cyDigJQgcnVucyBgZnVuY3Rpb24gZGVwbG95IHJlbW92ZWAgZm9yIGVhY2ggQUNUSVZFIGRl" + + "cGxveW1lbnQsIHBvbGxzIHVudGlsIFNUT1BQRUQuIFN1YmplY3QgdG8gYC0tZHJhaW4tYWN0aXZl" + + "PXRydWV8ZmFsc2V8cHJvbXB0YCAoZGVmYXVsdCBpcyBgcHJvbXB0YCBpbiBUVFkpLgo0LiBVbmlu" + + "c3RhbGwgY29tcHV0ZSBwbGFuZSDigJQgZGVsZWdhdGVzIHRvIGB1bmluc3RhbGwgLS1jb21wdXRl" + + "LXBsYW5lYDsgYGhlbG0gdW5pbnN0YWxsIDxyZWxlYXNlPmAgcGVyIHJlbGVhc2UgaW4gcmV2ZXJz" + + "ZS1EQUcgb3JkZXIKNS4gUmVtb3ZlIHBlcnNpc3RlbnQgKHNraXBwZWQgdW5sZXNzIGAtLXJlbW92" + + "ZS1wZXJzaXN0ZW50YCkKNi4gVW5yZWdpc3RlciBjbHVzdGVyIGZyb20gSUNNUwo3LiBGaW5hbCB2" + + "ZXJpZnkKCiMjIyA0LiBUZWFyIGRvd24gdGhlIGNvbnRyb2wgcGxhbmUgKGlmIGFwcGxpY2FibGUp" + + "CgpgYGBzaApudmNmLWNsaSBzZWxmLWhvc3RlZCB1bmluc3RhbGwgLS1jb250cm9sLXBsYW5lCmBg" + + "YAoKT3IgdmlhIHRoZSBvcmNoZXN0cmF0b3IncyBgLS1hbGxgIG1vZGUgaWYgZXZlcnkgY29tcHV0" + + "ZSBwbGFuZSBpcyBhbHNvIGdvaW5nIGF3YXkgKHNlZSBzdGVwIDUpLgoKYHVuaW5zdGFsbCAtLWNv" + + "bnRyb2wtcGxhbmVgIHJlZnVzZXMgaWYgYW55IGNvbXB1dGUgcGxhbmUgaXMgc3RpbGwgcmVnaXN0" + + "ZXJlZCBpbiBJQ01TLiBVc2UgYC0tZm9yY2Utd2l0aC1yZWdpc3RlcmVkLWNsdXN0ZXJzYCB0byBv" + + "dmVycmlkZSAqKm9ubHkqKiBpZiB0aGUgdXNlciBleHBsaWNpdGx5IHdhbnRzIHRvIG9ycGhhbiBj" + + "b21wdXRlIHBsYW5lcyAoUFNBVCBhdXRoIGJyZWFrcyBmb3IgdGhvc2UgY2x1c3RlcnMg4oCUIHRo" + + "ZXkgd2lsbCBzdGFydCBmYWlsaW5nIGV2ZXJ5IGhlYWx0aCBjaGVjaykuIEFsd2F5cyBzdGF0ZSB0" + + "aGUgY29uc2VxdWVuY2UgYmVmb3JlIHBhc3NpbmcgdGhlIGZsYWcuCgojIyMgNS4gT3IsIG51a2Ug" + + "ZXZlcnl0aGluZwoKYGBgc2gKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93biAtLWFsbCAtLWNvbmZp" + + "cm0KYGBgCgpUaGlzIGl0ZXJhdGVzIGV2ZXJ5IHJlZ2lzdGVyZWQgY29tcHV0ZSBwbGFuZSBpbiBJ" + + "Q01TLCBydW5zIHRoZSBwZXItY2x1c3RlciBkb3duIGZvciBlYWNoIGluIHBhcmFsbGVsIChib3Vu" + + "ZGVkIGJ5IGAtLWFsbC1jb25jdXJyZW5jeWAsIGRlZmF1bHQgNCksIHRoZW4gcnVucyBgdW5pbnN0" + + "YWxsIC0tY29udHJvbC1wbGFuZWAuIEludGVyYWN0aXZlIG1vZGUgcHJvbXB0cyB0aGUgb3BlcmF0" + + "b3Igd2l0aCB0aGUgY2x1c3RlciBsaXN0IGJlZm9yZSBwcm9jZWVkaW5nOyBgLS1jb25maXJtYCBz" + + "a2lwcyB0aGUgcHJvbXB0IGZvciBub24taW50ZXJhY3RpdmUgdXNlLgoKIyMgR2l0T3BzIHBhdGgg" + + "KGlmIHVzZXIgaGFzIEFyZ28gLyBGbHV4KQoKYGBgc2gKIyBSZW5kZXIgZGVsZXRlIFlBTUwgZm9y" + + "IHRoZSBjb21wdXRlIHBsYW5lOgpudmNmLWNsaSBzZWxmLWhvc3RlZCB1bmluc3RhbGwgLS1uby1h" + + "cHBseSAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9JE5BTUUgPiBkZWxldGUueWFtbAoK" + + "IyBPcGVyYXRvciBjb21taXRzIGRlbGV0ZS55YW1sIHRvIHRoZWlyIEdpdE9wcyByZXBvLiBBcmdv" + + "L0ZsdXggYXBwbGllcyB0aGUgZGVsZXRpb24gb24gbmV4dCBzeW5jLgpnaXQgYWRkIGRlbGV0ZS55" + + "YW1sOyBnaXQgY29tbWl0IC1tICJyZW1vdmUgY29tcHV0ZSBwbGFuZSAkTkFNRSI7IGdpdCBwdXNo" + + "CgojIEFmdGVyIEFyZ28gc3luYyByZW1vdmVzIHRoZSBLOHMgcmVzb3VyY2VzLCBzZXBhcmF0ZWx5" + + "IHJlbW92ZSB0aGUgSUNNUyByb3c6Cm52Y2YtY2xpIGNsdXN0ZXIgZGVsZXRlIC0tY2x1c3Rlci1p" + + "ZD0kQ0xVU1RFUl9JRApgYGAKCk5vdGU6IGAtLW5vLWFwcGx5YCBkb2VzIE5PVCBpbmNsdWRlIHRo" + + "ZSBJQ01TIGBjbHVzdGVyIGRlbGV0ZWAgKGhlbG0gZG9lc24ndCBtYW5hZ2UgdGhhdCkuIE9wZXJh" + + "dG9ycyBmb2xsb3dpbmcgR2l0T3BzIG11c3QgcnVuIGBudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZWAg" + + "c2VwYXJhdGVseSwgb3IgdXNlIGBkb3duYCB0byBvcmNoZXN0cmF0ZSBib3RoLgoKIyMgRmFpbHVy" + + "ZSByZWNvdmVyeQoKSWYgYGRvd25gIHBhcnRpYWwtZmFpbHMgbWlkLXdheSwgKipyZS1ydW4gdGhl" + + "IHNhbWUgY29tbWFuZCoqLiBUaGUgb3JjaGVzdHJhdG9yIGlzIGlkZW1wb3RlbnQ6IGBoZWxtIHVu" + + "aW5zdGFsbGAgc2tpcHMgcmVsZWFzZXMgdGhhdCBhcmUgYWxyZWFkeSBnb25lLCBhbmQgYGNsdXN0" + + "ZXIgZGVsZXRlIC0taWdub3JlLW1pc3NpbmdgIHNraXBzIElDTVMgcm93cyB0aGF0IGFyZSBhbHJl" + + "YWR5IGdvbmUuIFBoYXNlIDQgKyA2IGVtaXQgYHBoYXNlOiBza2lwcGVkIChhbHJlYWR5IGNsZWFu" + + "KWAgb24gdGhlIHNlY29uZCBydW4uCgpJZiBhIGBwaGFzZV9mYWlsZWRgIGV2ZW50IHN1cmZhY2Vz" + + "OgoKLSBgZXJyQ2F0ZWdvcnk6ICJoZWxtX3BlbmRpbmdfdXBncmFkZSIsIHJldHJ5Q2xhc3M6ICJh" + + "ZnRlcl9yZW1lZGlhdGlvbiJgIOKGkiBydW4gYGhlbG0gcm9sbGJhY2sgPHJlbGVhc2U+IDAgLS1r" + + "dWJlLWNvbnRleHQ94oCmYCAodGhlIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4YWN0IHJlbGVhc2Ug" + + "bmFtZSkgdGhlbiByZS1ydW4gYGRvd25gLiBEbyBOT1QgYXV0by1yb2xsYmFjayB3aXRob3V0IHVz" + + "ZXIgY29uZmlybWF0aW9uLgotIGBlcnJDYXRlZ29yeTogImNvbXB1dGVfcGxhbmUiLCByZXRyeUNs" + + "YXNzOiAiYWZ0ZXJfcmVtZWRpYXRpb24iYCB3aXRoIG1lc3NhZ2UgYWJvdXQgQUNUSVZFIGRlcGxv" + + "eW1lbnRzIOKGkiB1c2VyIHBhc3NlZCBgLS1kcmFpbi1hY3RpdmU9ZmFsc2VgIGJ1dCBkZXBsb3lt" + + "ZW50cyBleGlzdC4gUmUtcnVuIHdpdGggYC0tZHJhaW4tYWN0aXZlPXRydWVgIG9yIGAtLWRyYWlu" + + "LWFjdGl2ZT1wcm9tcHRgIGFuZCBjb25maXJtIHdpdGggdGhlIHVzZXIuCi0gT3RoZXIgY2F0ZWdv" + + "cmllcyDihpIgc3VyZmFjZSBgZXJyTWVzc2FnZWAgKyBlYWNoIGByZW1lZGlhdGlvbmAgc3RyaW5n" + + "IHZlcmJhdGltLiBTVE9QLiBEbyBub3QgcHJvcG9zZSByZXRyeSB3aXRob3V0IHVzZXIgaW5wdXQu" + + "CgojIyBBbHdheXMgY29uZmlybQoKRm9yIGV2ZXJ5IGBudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3du" + + "YCBvciBgdW5pbnN0YWxsYCBpbnZvY2F0aW9uLCBlc3BlY2lhbGx5IHdpdGggZGVzdHJ1Y3RpdmUg" + + "ZmxhZ3M6CgotIFN0YXRlIHRoZSBleGFjdCBgLS1jbHVzdGVyLW5hbWVgIChvciBgLS1hbGxgKS4K" + + "LSBTdGF0ZSB3aGF0J3MgbG9zdCAoZS5nLiAiYWxsIGZ1bmN0aW9uIGRlcGxveW1lbnRzIHNjaGVk" + + "dWxlZCBvbiBgbmNwLWxvY2FsYCB3aWxsIHN0b3A7IGNvbXB1dGUgcGxhbmUgd2lsbCBkZXJlZ2lz" + + "dGVyIGZyb20gSUNNUyIpLgotIElmIGAtLXJlbW92ZS1wZXJzaXN0ZW50YCBpcyBiZWluZyBjb25z" + + "aWRlcmVkLCBzdGF0ZSB0aGF0IENhc3NhbmRyYSByb3dzICsgT3BlbkJhbyBzZWFsIGtleXMgd2ls" + + "bCBiZSBkZWxldGVkIGFuZCB0aGF0IHRoaXMgaXMgdW5yZWNvdmVyYWJsZS4KLSBXYWl0IGZvciBl" + + "eHBsaWNpdCB1c2VyIGNvbmZpcm1hdGlvbi4KLSBOZXZlciBwcm9wb3NlIGAtLWZvcmNlLXdpdGgt" + + "cmVnaXN0ZXJlZC1jbHVzdGVyc2Agd2l0aG91dCBleHBsYWluaW5nIHRoYXQgY29tcHV0ZSBwbGFu" + + "ZXMgd2lsbCBiZSBvcnBoYW5lZC4KLSBOZXZlciBwcm9wb3NlIGAtLXJlbW92ZS1wZXJzaXN0ZW50" + + "YCB3aXRob3V0IGV4cGxhaW5pbmcgdGhlIGxvc3MuCgojIyBNYW51YWwgZmFsbGJhY2sgKGlmIGBu" + + "dmNmLWNsaSBzZWxmLWhvc3RlZCB7dW5pbnN0YWxsLGRvd259YCBpcyB1bmF2YWlsYWJsZSkKCklm" + + "IHRoZSB1c2VyIGlzIG9uIGEgQ0xJIHZlcnNpb24gb2xkZXIgdGhhbiBNKzExLCBmYWxsIGJhY2sg" + + "dG86CgpgYGBzaAojIFBlciBjb21wdXRlIHBsYW5lIChvbiBpdHMga3ViZWN0bCBjb250ZXh0KToK" + + "aGVsbSB1bmluc3RhbGwgbnZjYS1hZ2VudCAtbiBudmNhLXN5c3RlbQpoZWxtIHVuaW5zdGFsbCBu" + + "dmNhLW9wZXJhdG9yIC1uIG52Y2Etb3BlcmF0b3IKaGVsbSB1bmluc3RhbGwgaW1hZ2UtY3JlZGVu" + + "dGlhbC1oZWxwZXIgLW4gbnZjYS1zeXN0ZW0KaGVsbSB1bmluc3RhbGwgc2hhcmVkc3RvcmFnZSAt" + + "biBudmNhLXN5c3RlbQoKIyBEcmFpbiB0aGUgSUNNUyByb3c6Cm52Y2YtY2xpIGNsdXN0ZXIgZGVs" + + "ZXRlIC0tY2x1c3Rlci1pZD08aWQ+CgojIENvbnRyb2wgcGxhbmUgdGVhcmRvd24gKG9uIGl0cyBr" + + "dWJlY3RsIGNvbnRleHQpOgpjZCBudmNmLXNlbGYtbWFuYWdlZC1zdGFjawptYWtlIGRlc3Ryb3kg" + + "ICAjIGludm9rZXMgaGVsbWZpbGUgZGVzdHJveSBhY3Jvc3MgYWxsIHJlbGVhc2VzCgojIElmIHVz" + + "aW5nIHNwbGl0IHN0YWNrIGJ1bmRsZXMsIHRlYXJkb3duIGNvbXB1dGUgcGxhbmUgcmVsZWFzZXMg" + + "dG9vOgpjZCAuLi9udmNmLWNvbXB1dGUtcGxhbmUtc3RhY2sKbWFrZSBkZXN0cm95CmBgYAoKVGhp" + + "cyBpcyB0aGUgbWFudWFsIHBhdGg7IHByZWZlciB0aGUgbmV3IHN1YmNvbW1hbmRzIHdoZW5ldmVy" + + "IHRoZXkncmUgaW5zdGFsbGVkLgoKIyMgV2hhdCBga3ViZWN0bCBkZWxldGUgcHZjYCBkb2VzCgpJ" + + "ZiB0aGUgdXNlciBhc2tzICJ3aHkgaXMgbXkgbmV3IGluc3RhbGwgc2VlaW5nIHRoZSBvbGQgZGF0" + + "YT8iIOKAlCB0aGUgU3RhdGVmdWxTZXQgUFZDcyAoQ2Fzc2FuZHJhLCBPcGVuQmFvKSBhcmUgTk9U" + + "IGRlbGV0ZWQgYnkgYGhlbG0gdW5pbnN0YWxsYCAoYW5kIHNvIGFyZSBOT1QgZGVsZXRlZCBieSBg" + + "bnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93bmAgZWl0aGVyLCBieSBkZWZhdWx0KS4gVGhleSBwZXJz" + + "aXN0IGludGVudGlvbmFsbHkgc28gYSByZS1gdXBgIGNhbiByZXN1bWUgYWdhaW5zdCBleGlzdGlu" + + "ZyBkYXRhLiBUbyB3aXBlIGNvbXBsZXRlbHkgb24gdGhlIG5leHQgYGRvd25gOgoKYGBgc2gKbnZj" + + "Zi1jbGkgc2VsZi1ob3N0ZWQgZG93biAtLWNsdXN0ZXItbmFtZT1uY3AtbG9jYWwgLS1yZW1vdmUt" + + "cGVyc2lzdGVudApgYGAKCk9yLCBwb3N0LWRvd24sIG1hbnVhbGx5OgoKYGBgc2gKa3ViZWN0bCBk" + + "ZWxldGUgcHZjIC1uIGNhc3NhbmRyYS1zeXN0ZW0gLS1hbGwKa3ViZWN0bCBkZWxldGUgcHZjIC1u" + + "IHZhdWx0LXN5c3RlbSAtLWFsbApgYGAKCioqQ29uZmlybSB3aXRoIHVzZXIuKiogVGhpcyBpcyB0" + + "aGUgZGVzdHJ1Y3RpdmUgc3RlcC4KUEsHCNqHY1bkIQAA5CEAAFBLAwQUAAgAAAAAACEAAAAAAAAA" + + "AAAAAAAAMAAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9jb21tYW5kcy5t" + + "ZFVUBQABAKbOEiMgYG52Y2YtY2xpYCBjb21tYW5kIHJlZmVyZW5jZQoKRnVsbCBzdWJjb21tYW5k" + + "IGxpc3QuIEFsd2F5cyBwYWlyIHdpdGggW2ZsYWdzLm1kXShmbGFncy5tZCkgZm9yIGdsb2JhbCBm" + + "bGFncyBhbmQgW2V4aXQtY29kZXMubWRdKGV4aXQtY29kZXMubWQpIGZvciByZXR1cm4gY29kZXMu" + + "CgojIyBTZWxmLWhvc3RlZCBsaWZlY3ljbGUKCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBPdXRwdXQg" + + "fCBOb3RlcyB8CnwtLS18LS0tfC0tLXwtLS18CnwgYHNlbGYtaG9zdGVkIGNoZWNrIC0tcHJlIFtm" + + "bGFnc11gIHwgUHJlLWZsaWdodCB2YWxpZGF0aW9uIChubyBhZG1pbiBjcmVkcykgfCBzdHJlYW1p" + + "bmcgZXZlbnRzIHwgUGVyLXJvbGUgd2l0aCBgLS1jb250cm9sLXBsYW5lLWNvbnRleHRgIC8gYC0t" + + "Y29tcHV0ZS1wbGFuZS1jb250ZXh0YDsgYC0tbG9jYWwtb25seWAgc2tpcHMga3ViZWN0bCB8Cnwg" + + "YHNlbGYtaG9zdGVkIGNoZWNrIC0tY29udHJvbC1wbGFuZSBbLS13YWl0IERVUl1gIHwgRXZlcnkg" + + "Q1AgcmVsZWFzZSBoZWFsdGh5IHwgc3RyZWFtaW5nIGV2ZW50cyB8IFBvbGxzIHVudGlsIHBhc3Mg" + + "b3IgYC0td2FpdGAgZWxhcHNlcyB8CnwgYHNlbGYtaG9zdGVkIGNoZWNrIC0tY29tcHV0ZS1wbGFu" + + "ZSAtLWNsdXN0ZXItbmFtZT1YIFstLXdhaXQgRFVSXWAgfCBQZXItY2x1c3RlciB3b3JrZXIgc3Rh" + + "dGUgfCBzdHJlYW1pbmcgZXZlbnRzIHwgTlZDQSArIG9wZXJhdG9yICsgSldLUy1maW5nZXJwcmlu" + + "dCBtYXRjaCB8CnwgYHNlbGYtaG9zdGVkIGNoZWNrIC0tYWxsIFstLXdhaXQgRFVSXWAgfCBGYW4t" + + "b3V0IG92ZXIgYWxsIG9mIHRoZSBhYm92ZSB8IHN0cmVhbWluZyBldmVudHMgfCB8CnwgYHNlbGYt" + + "aG9zdGVkIGluc3RhbGwgLS1jb250cm9sLXBsYW5lYCB8IFJlbmRlciBjb250cm9sLXBsYW5lIG1h" + + "bmlmZXN0cyB8IFlBTUwgb24gc3Rkb3V0IHwgUGlwZSB0byBga3ViZWN0bCBhcHBseSAtZiAtYCB8" + + "CnwgYHNlbGYtaG9zdGVkIGluc3RhbGwgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVhg" + + "IHwgUmVnaXN0ZXIgY2x1c3RlciArIHJlbmRlciBjb21wdXRlIG1hbmlmZXN0cyB8IFlBTUwgb24g" + + "c3Rkb3V0IHwgT25lIGludm9jYXRpb24gcGVyIEdQVSBjbHVzdGVyIHwKfCBgc2VsZi1ob3N0ZWQg" + + "dXAgLS1jbHVzdGVyLW5hbWU9WGAgfCBPbmUtc2hvdCBmaXJzdCBpbnN0YWxsIChib3RoIHBsYW5l" + + "cykgfCAoZW1wdHkpIHN0ZG91dCwgcHJvZ3Jlc3Mgb24gc3RkZXJyIHwgQWx3YXlzIGluc3RhbGxz" + + "IGJvdGggcGxhbmVzOyBmb3IgY29tcHV0ZS1vbmx5IHVzZSBgYWRkLWNvbXB1dGUtcGxhbmVgIHwK" + + "fCBgc2VsZi1ob3N0ZWQgdXAgLS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9WGAgfCBEcnktcnVu" + + "IHByZXZpZXcgfCBKU09OTCBvbiBzdGRlcnIgfCBBZ2VudC1mcmllbmRseSwgbm8gY2x1c3RlciBj" + + "aGFuZ2VzIHwKfCBgc2VsZi1ob3N0ZWQgYWRkLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9" + + "WCAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1ZIC0taWNtcy11cmw9VVJMIC0tdG9rZW49JEpXVGAg" + + "fCBBZGQgYSBjb21wdXRlIHBsYW5lIHRvIGFuIGV4aXN0aW5nIGNvbnRyb2wgcGxhbmUgfCBwcm9n" + + "cmVzcyBvbiBzdGRlcnIgfCBGb3IgMm5kLCAzcmQsIOKApiBHUFUgY2x1c3RlciBhZnRlciB0aGUg" + + "Zmlyc3QgaW5zdGFsbC4gQ1Agbm90IHRvdWNoZWQuIHwKfCBgc2VsZi1ob3N0ZWQgc3RhdHVzIFst" + + "LWNsdXN0ZXItbmFtZT1YXSBbLS13YXRjaF1gIHwgU25hcHNob3QgY2x1c3RlciBoZWFsdGggfCBU" + + "VFkvcGxhaW4vSlNPTkwgfCBgLS13YXRjaGAgZm9yIGxpdmUgcmUtcmVuZGVyIHwKfCBgc2VsZi1o" + + "b3N0ZWQgdW5pbnN0YWxsIC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YYCB8IFBlci1w" + + "bGFuZSBwcmltaXRpdmU6IGBoZWxtZmlsZSBkZXN0cm95YCBvbiBvbmUgY29tcHV0ZSBwbGFuZSAo" + + "bm8gSUNNUyB1bnJlZ2lzdGVyLCBubyBkcmFpbikgfCBwcm9ncmVzcyB8IEp1c3QgdGhlIGhlbG0g" + + "cmVsZWFzZXMgb24gdGhhdCBjb21wdXRlIHBsYW5lIHwKfCBgc2VsZi1ob3N0ZWQgdW5pbnN0YWxs" + + "IC0tY29udHJvbC1wbGFuZSBbLS1mb3JjZS13aXRoLXJlZ2lzdGVyZWQtY2x1c3RlcnNdYCB8IFBl" + + "ci1wbGFuZSBwcmltaXRpdmU6IGBoZWxtZmlsZSBkZXN0cm95YCBvbiB0aGUgY29udHJvbCBwbGFu" + + "ZSB8IHByb2dyZXNzIHwgUmVmdXNlcyBpZiBjb21wdXRlIHBsYW5lcyBzdGlsbCByZWdpc3RlcmVk" + + "IHVubGVzcyBgLS1mb3JjZS13aXRoLXJlZ2lzdGVyZWQtY2x1c3RlcnNgIHwKfCBgc2VsZi1ob3N0" + + "ZWQgdW5pbnN0YWxsIC0tbm8tYXBwbHkgPHBsYW5lPmAgfCBSZW5kZXIgZGVsZXRlIFlBTUwgdmlh" + + "IGBoZWxtIGdldCBtYW5pZmVzdGAgcGVyIHJlbGVhc2UgfCBZQU1MIG9uIHN0ZG91dCB8IEdpdE9w" + + "czsgcGlwZSB0byBga3ViZWN0bCBkZWxldGUgLWYgLWAgb3IgY29tbWl0ICsgQXJnbyBhcHBsaWVz" + + "LiBNaXJyb3JzIGBpbnN0YWxsIC0tbm8tYXBwbHlgIHwKfCBgc2VsZi1ob3N0ZWQgZG93biAtLWNs" + + "dXN0ZXItbmFtZT1YIFstLWRyYWluLWFjdGl2ZV0gWy0tcmVtb3ZlLXBlcnNpc3RlbnRdYCB8IE9y" + + "Y2hlc3RyYXRvcjogZHJhaW4g4oaSIHVuaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmUg4oaSIGNsdXN0" + + "ZXIgZGVsZXRlIGluIElDTVMgfCBwcm9ncmVzcyB8IFN5bW1ldHJpYyBjb21wYW5pb24gdG8gYHVw" + + "IC0tY2x1c3Rlci1uYW1lPVhgIHwKfCBgc2VsZi1ob3N0ZWQgZG93biAtLWFsbCBbLS1jb25maXJt" + + "XWAgfCBPcmNoZXN0cmF0b3I6IHRlYXIgZG93biBldmVyeSByZWdpc3RlcmVkIGNvbXB1dGUgcGxh" + + "bmUgKyBjb250cm9sIHBsYW5lIHwgcHJvZ3Jlc3MgfCBCb3VuZGVkIHBhcmFsbGVsaXNtIHZpYSBg" + + "LS1hbGwtY29uY3VycmVuY3lgIChkZWZhdWx0IDQpOyBgLS1jb25maXJtYCByZXF1aXJlZCBpbiBu" + + "b24taW50ZXJhY3RpdmUgfAp8IGBzZWxmLWhvc3RlZCBkb3duIC0tcGxhbi1vbmx5IC4uLmAgfCBP" + + "cmNoZXN0cmF0b3IgZHJ5LXJ1bjogcGhhc2VzICsgaGVsbSByZWxlYXNlcyArIElDTVMgcm93cyAr" + + "IEVUQXMgKG5vIGhlbG0vaGVsbWZpbGUgY29udGFjdCkgfCBKU09OTCB8ICoqQWx3YXlzIHJ1biBi" + + "ZWZvcmUgYW55IGFjdHVhbCBgZG93bmAqKiB8CgojIyBDbHVzdGVyIG1hbmFnZW1lbnQKCnwgQ29t" + + "bWFuZCB8IFB1cnBvc2UgfCBOb3RlcyB8CnwtLS18LS0tfC0tLXwKfCBgY2x1c3RlciByZWdpc3Rl" + + "ciAtLW5hbWU9WCAtLW5jYS1pZD1ZIFstLXJlZ2lvbj1aXSBbLS1pZ25vcmUtZXhpc3RpbmddYCB8" + + "IFJlZ2lzdGVyIGEgSldLUytPSURDIHdpdGggSUNNUyB8IFVzZWQgYnkgYHVwYCBQaGFzZSA1IGlu" + + "dGVybmFsbHk7IHN0YW5kYWxvbmUgZm9yIG1hbnVhbCByZWdpc3RyYXRpb24gfAp8IGBjbHVzdGVy" + + "IGxpc3QtcmVnaXN0ZXJlZCAtLW5jYS1pZD1ZIFstLWljbXMtdXJsPVVSTF1gIHwgTGlzdCBzZWxm" + + "LWhvc3RlZCBjbHVzdGVyIHJlZ2lzdHJhdGlvbnMgZnJvbSBJQ01TIHwgVXNlcyB0aGUgYWRtaW4g" + + "dG9rZW47IGAtLWpzb25gIGZvciBtYWNoaW5lLXJlYWRhYmxlIG91dHB1dCB8CnwgYGNsdXN0ZXIg" + + "cm90YXRlIC0tY2x1c3Rlci1pZD1JRGAgfCBSZS1mZXRjaCBKV0tTIGZyb20gSzhzIGFuZCBQVVQg" + + "dG8gSUNNUyB8IEFmdGVyIEs4cyBBUEkgc2VydmVyIHNpZ25pbmcga2V5IHJvdGF0aW9uIHwKfCBg" + + "Y2x1c3RlciBkZWxldGUgLS1jbHVzdGVyLWlkPUlEYCB8IFJlbW92ZSBJQ01TIHJvdyB8ICoqREVT" + + "VFJVQ1RJVkU6IGNvbmZpcm0gd2l0aCB1c2VyKiogfAoKIyMgRnVuY3Rpb25zCgp8IENvbW1hbmQg" + + "fCBQdXJwb3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYGZ1bmN0aW9uIGNyZWF0ZSAtLWlu" + + "cHV0LWZpbGU9RklMRWAgfCBDcmVhdGUgZnVuY3Rpb24gbWV0YWRhdGEgfCBSZXR1cm5zIEZ1bmN0" + + "aW9uIElEICsgVmVyc2lvbiBJRDsgTExNIGZ1bmN0aW9ucyB1c2UgYGZ1bmN0aW9uVHlwZTogIkxM" + + "TSJgIGFuZCBgbW9kZWxzW10ubGxtQ29uZmlnLnVyaXNgIGZvciBgL3YxL2NoYXQvY29tcGxldGlv" + + "bnNgLCBgL3YxL3Jlc3BvbnNlc2AsIGFuZCBgL3YxL2VtYmVkZGluZ3NgIHwKfCBgZnVuY3Rpb24g" + + "bGlzdGAgLyBgZnVuY3Rpb24gbGlzdC1pZHNgIHwgTGlzdCBmdW5jdGlvbnMgLyBJRHMgb25seSB8" + + "IHwKfCBgZnVuY3Rpb24gZ2V0IC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRGAgfCBG" + + "dW5jdGlvbiBtZXRhZGF0YSB8IHwKfCBgZnVuY3Rpb24gdXBkYXRlIC0tZnVuY3Rpb24taWQ9SUQg" + + "LS12ZXJzaW9uLWlkPVZJRCAtLXRhZ3M9VEFHWyxUQUddYCB8IFVwZGF0ZSBmdW5jdGlvbiB0YWdz" + + "IHwgfAp8IGBmdW5jdGlvbiB1cGRhdGUgLS1mdW5jdGlvbi1pZD1JRCAtLXZlcnNpb24taWQ9VklE" + + "IC0tbGxtLW1vZGVsLXVwZGF0ZT1TUEVDYCB8IFVwZGF0ZSBMTE0gbW9kZWwgcm91dGluZyBjb25m" + + "aWcgfCBgU1BFQ2AgdXNlcyBgbmFtZT08bW9kZWw+LHJvdXRpbmdNZXRob2Q9PG1ldGhvZD4sdG9r" + + "ZW5SYXRlTGltaXQ9PGxpbWl0PmA7IGFjY2VwdGVkIG1ldGhvZHMgYXJlIGxpc3RlZCBpbiBbZmxh" + + "Z3MubWRdKGZsYWdzLm1kKSB8CnwgYGZ1bmN0aW9uIGRlcGxveSBjcmVhdGUgLS1pbnB1dC1maWxl" + + "PUZJTEVgIHwgU2NoZWR1bGUgYSBkZXBsb3ltZW50IHwgQmxvY2tzIHVudGlsIEFDVElWRSAoZGVm" + + "YXVsdCA5MDBzKSB8CnwgYGZ1bmN0aW9uIGRlcGxveSBnZXQgLS1mdW5jdGlvbi1pZD1JRCAtLXZl" + + "cnNpb24taWQ9VklEIFstLWpzb25dYCB8IERlcGxveW1lbnQgc3RhdHVzIHwgYGZ1bmN0aW9uU3Rh" + + "dHVzOiBBQ1RJVkVcfERFUExPWUlOR1x8RVJST1JcfEZBSUxFRGAgfAp8IGBmdW5jdGlvbiBkZXBs" + + "b3kgdXBkYXRlIC0taW5wdXQtZmlsZT1GSUxFYCB8IE1vZGlmeSBhIGRlcGxveW1lbnQgaW4gcGxh" + + "Y2UgfCB8CnwgYGZ1bmN0aW9uIGRlcGxveSByZW1vdmUgLS1mdW5jdGlvbi1pZD1JRCAtLXZlcnNp" + + "b24taWQ9VklEYCB8IFN0b3AgYSBkZXBsb3ltZW50LCBrZWVwIGZ1bmN0aW9uIHJlY29yZCB8IHwK" + + "fCBgZnVuY3Rpb24gaW52b2tlIC0taW5wdXQtZmlsZT1GSUxFYCB8IENhbGwgYSByZWd1bGFyIGZ1" + + "bmN0aW9uIHwgUmVxdWlyZXMgQVBJIGtleSAobm90IGFkbWluIHRva2VuKTsgTExNIGZ1bmN0aW9u" + + "cyBhcmUgaW52b2tlZCB0aHJvdWdoIGBsbG0uaW52b2NhdGlvbi48ZG9tYWluPmAgd2l0aCBgbW9k" + + "ZWw6ICI8ZnVuY3Rpb24taWQ+Lzxtb2RlbC1uYW1lPiJgIHwKfCBgZnVuY3Rpb24gZGVsZXRlIC0t" + + "ZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRGAgfCBSZW1vdmUgZnVuY3Rpb24gKyBkZXBs" + + "b3ltZW50IHwgKipERVNUUlVDVElWRTogY29uZmlybSB3aXRoIHVzZXIqKiB8CgojIyBUYXNrcwoK" + + "VGFzayBjb21tYW5kcyByZXF1aXJlIGBOVkNGX0FQSV9LRVlgIHNldCB0byBhIHRhc2stc2NvcGVk" + + "IGtleSBhbmQgYE5WQ0ZfQkFTRV9OVkNUX1VSTGAgc2V0IHRvIHRoZSBOVkNUIGdhdGV3YXkgZW5k" + + "cG9pbnQuIEluIGEgZnJlc2ggc2Vzc2lvbiwgcmVhZCBgbnZjdEFwaUtleWAgZnJvbSBgfi8ubnZj" + + "Zi1jbGkuc3RhdGVgIGFuZCBpbmplY3QgaXQgYXMgYE5WQ0ZfQVBJX0tFWWAgd2l0aG91dCBsb2dn" + + "aW5nIHRoZSB2YWx1ZTsgY2hlY2sgYG52Y3RBcGlLZXlFeHBpcmF0aW9uYCBmaXJzdCBhbmQgcmVn" + + "ZW5lcmF0ZSB3aXRoIGBhcGkta2V5IGdlbmVyYXRlIC0tZm9yIHRhc2sgLS12YWxpZGF0ZWAgaWYg" + + "ZXhwaXJlZC4gUnVuIGBhcGkta2V5IGdlbmVyYXRlIC0tZm9yIHRhc2tgIGFmdGVyIGBpbml0YCB0" + + "byBtaW50IGEgbmV3IGtleS4KCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBOb3RlcyB8CnwtLS18LS0t" + + "fC0tLXwKfCBgdGFzayBjcmVhdGUgLS1uYW1lPVggLS1ncHU9R1BVIC0taW5zdGFuY2UtdHlwZT1U" + + "WVBFIC0taW1hZ2U9SU1HYCB8IFN1Ym1pdCBhIGNvbnRhaW5lciB0YXNrIHwgU2F2ZXMgdGFzayBJ" + + "RCB0byBDTEkgc3RhdGU7IHVzZSBgLS1pbnB1dC1maWxlYCBmb3IgcmVwZWF0YWJsZSBjb25maWdz" + + "IHwKfCBgdGFzayBjcmVhdGUgLS1uYW1lPVggLS1ncHU9R1BVIC0taW5zdGFuY2UtdHlwZT1UWVBF" + + "IC0taGVsbS1jaGFydD1DSEFSVGAgfCBTdWJtaXQgYSBIZWxtIHRhc2sgfCBgLS1oZWxtLWNoYXJ0" + + "YCByZXBsYWNlcyBgLS1pbWFnZWAgfAp8IGB0YXNrIGNyZWF0ZSAtLWlucHV0LWZpbGU9RklMRWAg" + + "fCBTdWJtaXQgYSB0YXNrIGZyb20gYSBKU09OIGNvbmZpZyBmaWxlIHwgUmVjb21tZW5kZWQgZm9y" + + "IHJlcGVhdGFibGUgY29uZmlndXJhdGlvbnMgfAp8IGB0YXNrIGxpc3QgWy0tc3RhdHVzPVNUQVRV" + + "U10gWy0tbGltaXQ9Tl1gIHwgTGlzdCB0YXNrcywgb3B0aW9uYWxseSBmaWx0ZXJlZCBieSBzdGF0" + + "dXMgfCBTdGF0dXNlczogYFFVRVVFRGAsIGBMQVVOQ0hFRGAsIGBSVU5OSU5HYCwgYENPTVBMRVRF" + + "RGAsIGBFUlJPUkVEYCwgYENBTkNFTEVEYCwgYEVYQ0VFREVEX01BWF9SVU5USU1FX0RVUkFUSU9O" + + "YCwgYEVYQ0VFREVEX01BWF9RVUVVRURfRFVSQVRJT05gIHwKfCBgdGFzayBnZXQgW3Rhc2tJZF1g" + + "IHwgR2V0IHRhc2sgZGV0YWlscyB8IFVzZXMgc2F2ZWQgdGFzayBJRCBmcm9tIHN0YXRlIGlmIG9t" + + "aXR0ZWQgfAp8IGB0YXNrIGV2ZW50cyBbdGFza0lkXSBbLS1saW1pdD1OXWAgfCBMaXN0IGxpZmVj" + + "eWNsZSBldmVudHMgZm9yIGEgdGFzayB8IHwKfCBgdGFzayByZXN1bHRzIFt0YXNrSWRdYCB8IExp" + + "c3QgcmVzdWx0IGFydGlmYWN0cyBmb3IgYSBjb21wbGV0ZWQgdGFzayB8IFJldHVybnMgZW1wdHkg" + + "bGlzdCB3aGVuIGByZXN1bHRIYW5kbGluZ1N0cmF0ZWd5YCBpcyBgTk9ORWA7IHJlc3VsdCB1cGxv" + + "YWQgbm90IHlldCBzdXBwb3J0ZWQgfAp8IGB0YXNrIGNhbmNlbCBbdGFza0lkXWAgfCBDYW5jZWwg" + + "YSBydW5uaW5nIHRhc2sgfCBOby1vcCBpZiBhbHJlYWR5IGluIHRlcm1pbmFsIHN0YXRlIHwKfCBg" + + "dGFzayBkZWxldGUgW3Rhc2tJZF1gIHwgRGVsZXRlIGEgdGFzayByZWNvcmQgfCAqKlN0b3AsIHN0" + + "YXRlIHRhc2sgSUQgKyBjdXJyZW50IHN0YXR1cywgYW5kIHdhaXQgZm9yIGEgc3Vic2VxdWVudCB1" + + "c2VyIHJlcGx5IGV4cGxpY2l0bHkgY29uZmlybWluZyBkZWxldGlvbiBvZiB0aGF0IHNwZWNpZmlj" + + "IHRhc2suIERvIG5vdCB0cmVhdCB0aGUgb3JpZ2luYWwgZGVsZXRlIHJlcXVlc3QgYXMgY29uZmly" + + "bWF0aW9uLioqIHwKfCBgdGFzayB1cGRhdGUtc2VjcmV0cyBbdGFza0lkXSAtLXNlY3JldHMgTkFN" + + "RT12YWx1ZWAgfCBVcGRhdGUgc2VjcmV0cyBvbiBhIHRhc2s7IHN1cHBsaWVkIHNlY3JldHMgYXJl" + + "IGFkZGVkIG9yIHVwZGF0ZWQgYnkgbmFtZSwgZXhpc3Rpbmcgc2VjcmV0cyBub3QgaW4gdGhlIHJl" + + "cXVlc3QgYXJlIHByZXNlcnZlZCB8IFZhbHVlcyBhcmUgZW5jcnlwdGVkIGF0IHJlc3QgfAp8IGB0" + + "YXNrIGJ1bGsgLS10YXNrLWlkcz1JRDFbLElEMizigKZdYCB8IEZldGNoIGRldGFpbHMgZm9yIG11" + + "bHRpcGxlIHRhc2tzIGluIG9uZSByZXF1ZXN0IHwgfAoKIyMgQXV0aAoKfCBDb21tYW5kIHwgUHVy" + + "cG9zZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGBpbml0YCB8IE1pbnQgYWRtaW4gdG9rZW4g" + + "ZnJvbSBBUEkgS2V5cyB2aWEgcHVibGljIGFwaSBnYXRld2F5IHwgSWRlbXBvdGVudDsgd3JpdGVz" + + "IGB+Ly5udmNmLWNsaS5zdGF0ZWA7IGNsZWFycyBzYXZlZCBmdW5jdGlvbiBzdGF0ZSBhbmQgYWxs" + + "IEFQSSBrZXlzIChmdW5jdGlvbiBhbmQgdGFzaykgfAp8IGBzdGF0dXNgIHwgU2hvdyBDTEkgc3Rh" + + "dGUgKHRva2VuLCBsYXN0IGVuZHBvaW50cywgZnVuY3Rpb24gY29udGV4dCkgfCBEaXN0aW5jdCBm" + + "cm9tIGBzZWxmLWhvc3RlZCBzdGF0dXNgIHwKfCBgYXBpLWtleSBnZW5lcmF0ZSBbLS1mb3IgZnVu" + + "Y3Rpb25cfHRhc2tdIFstLWRlc2NyaXB0aW9uPeKApl0gWy0tZXhwaXJlcy1pbj3igKZdYCB8IE1p" + + "bnQgQVBJIGtleXMgfCBEZWZhdWx0IChubyBgLS1mb3JgKTogZ2VuZXJhdGVzIGJvdGggYSBmdW5j" + + "dGlvbiBrZXkgYW5kIGEgdGFzayBrZXk7IGAtLWZvciBmdW5jdGlvbmAgb3IgYC0tZm9yIHRhc2tg" + + "IGdlbmVyYXRlcyBvbmUgb25seTsgYC0tc2NvcGVzYCByZXF1aXJlcyBgLS1mb3JgIHwKfCBgYXBp" + + "LWtleSBnZW5lcmF0ZSAtLXZhbGlkYXRlYCB8IE1pbnQgYW5kIGltbWVkaWF0ZWx5IHZhbGlkYXRl" + + "IGVhY2ggZ2VuZXJhdGVkIGtleSB8IFZhbGlkYXRlcyBlYWNoIGtleSBhZ2FpbnN0IGl0cyBjb3Jy" + + "ZWN0IGF1ZGllbmNlIChOVkNGIGZvciBmdW5jdGlvbiBrZXlzLCBOVkNUIGZvciB0YXNrIGtleXMp" + + "IHwKfCBgYXBpLWtleSBsaXN0YCB8IExpc3QgQVBJIGtleXMgZm9yIGN1cnJlbnQgb3duZXIgfCBM" + + "aXN0cyBOVkNGLXNjb3BlZCBrZXlzIG9ubHkgfAp8IGBhcGkta2V5IGRlbGV0ZSBLRVktSURgIC8g" + + "YGFwaS1rZXkgcmV2b2tlIEtFWS1JRGAgfCBSZW1vdmUgYW4gQVBJIGtleSB8ICoqQ29uZmlybSB3" + + "aXRoIHVzZXIqKiB8CnwgYGFwaS1rZXkgc2hvd2AgfCBTaG93IGN1cnJlbnRseSBzYXZlZCBBUEkg" + + "a2V5IGZyb20gc3RhdGUgfCB8CgojIyBBZ2VudCBza2lsbAoKfCBDb21tYW5kIHwgUHVycG9zZSB8" + + "IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGBhZ2VudC1za2lsbCBpbnN0YWxsIFstLXRhcmdldD1E" + + "SVJdYCB8IEluc3RhbGwgYWxsIGJ1bmRsZWQgcHVibGljIHVzZXIgc2tpbGxzIGludG8gYH4vLmNs" + + "YXVkZS9za2lsbHMvYCBhbmQgYH4vLmFnZW50cy9za2lsbHMvYCB8IERlZmF1bHQ6IGJvdGggYmFz" + + "ZSBza2lsbHMgZGlyZWN0b3JpZXMgfAp8IGBhZ2VudC1za2lsbCB1bmluc3RhbGwgWy0tdGFyZ2V0" + + "PURJUl1gIHwgUmVtb3ZlIG9ubHkgYnVuZGxlZCBwdWJsaWMgdXNlciBza2lsbHMgZnJvbSB0aGUg" + + "dGFyZ2V0IGJhc2Ugc2tpbGxzIGRpcmVjdG9yaWVzIHwgSWRlbXBvdGVudDsgdW5yZWxhdGVkIHNr" + + "aWxscyByZW1haW4gfAp8IGBhZ2VudC1za2lsbCBzaG93IFstLWZpbGU9UkVMXWAgfCBQcmludCBi" + + "dW5kbGVkIGBudmNmLXNlbGYtbWFuYWdlZC1jbGkvU0tJTEwubWRgIG9yIGFub3RoZXIgZW1iZWRk" + + "ZWQgZmlsZSB8IEZvciBkZWJ1Z2dpbmcgfAp8IGBhZ2VudC1za2lsbCB2ZXJzaW9uYCB8IFByaW50" + + "IGJ1aWxkIFNIQSBhbmQgZW1iZWRkZWQgcHVibGljIHVzZXIgc2tpbGwgc3VtbWFyeSB8IHwKUEsH" + + "CHIND2QhIwAAISMAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAMgAJAGRhdGEvbnZjZi1zZWxm" + + "LW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9leGl0LWNvZGVzLm1kVVQFAAEAps4SIyBgbnZjZi1jbGlg" + + "IGV4aXQgY29kZXMKClN0YWJsZSBhY3Jvc3Mgc3ViY29tbWFuZHMuIFVzZSB0aGVzZSB0byBkcml2" + + "ZSBhZ2VudCByZXRyeSAvIHN1cmZhY2luZyBsb2dpYy4KCnwgQ29kZSB8IE1lYW5pbmcgfCBFeGFt" + + "cGxlIGNhdXNlcyB8CnwtLS18LS0tfC0tLXwKfCBgMGAgfCBTdWNjZXNzIHwgQWxsIGNoZWNrcyBw" + + "YXNzZWQ7IGluc3RhbGwgY29tcGxldGVkOyBkZXBsb3ltZW50IEFDVElWRSB8CnwgYDFgIHwgR2Vu" + + "ZXJpYyBlcnJvciB8IEhlbG0gcmVuZGVyIGZhaWxlZDsgbmV0d29yayB1bnJlYWNoYWJsZTsgZmls" + + "ZSBub3QgZm91bmQ7IFlBTUwgcGFyc2UgZXJyb3IgfAp8IGAyYCB8IFByZS1mbGlnaHQgY2hlY2sg" + + "ZmFpbGVkIHwgR2F0ZXdheSBBUEkgQ1JEcyBtaXNzaW5nOyBrdWJlY3RsIG5vdCBvbiBQQVRIOyBk" + + "ZWZhdWx0IFN0b3JhZ2VDbGFzcyBhYnNlbnQgfAp8IGAzYCB8IEFkbWluIGF1dGggZmFpbGVkIHwg" + + "Tm8gdG9rZW4gKyBgLS1ub24taW50ZXJhY3RpdmVgIHNldDsgSUNNUyByZWplY3RlZCBKV1Q7IGlu" + + "aXQgZW5kcG9pbnQgdW5yZWFjaGFibGUgfAp8IGA1YCB8IE1hbmlmZXN0IGFwcGx5IG9yIGAtLXdh" + + "aXRgIHRpbWVkIG91dCB8IEhlbG0gaW5zdGFsbCB0aW1lb3V0OyBjaGVjayBwb2xsZWQgYnV0IGRp" + + "ZG4ndCBwYXNzIGJlZm9yZSBkdXJhdGlvbiB8CnwgYDEzMGAgfCBDYW5jZWxsZWQgYnkgU0lHSU5U" + + "L1NJR1RFUk0gfCBVc2VyIEN0cmwtQzsgQ0kgYnVkZ2V0IGV4Y2VlZGVkOyBwb2QgZXZpY3RlZCB8" + + "CgojIyBIb3cgYW4gYWdlbnQgc2hvdWxkIHJlYWN0Cgp8IENvZGUgfCBBZ2VudCBiZWhhdmlvciB8" + + "CnwtLS18LS0tfAp8IGAwYCB8IENvbnRpbnVlIC8gcmVwb3J0IHN1Y2Nlc3MuIHwKfCBgMWAgfCBT" + + "dXJmYWNlIHN0ZGVyciB0byB1c2VyOyBhc2sgYmVmb3JlIGFueSByZXRyeS4gR2VuZXJpYyBlcnJv" + + "cnMgdXN1YWxseSBuZWVkIGEgaHVtYW4gdG8gcmVhZCB0aGUgbWVzc2FnZS4gfAp8IGAyYCB8IFN1" + + "cmZhY2UgZmFpbGVkIGNoZWNrcyArIHRoZWlyIGBoaW50VVJMYC4gRG9uJ3QgcHJvcG9zZSBgdXBg" + + "IHVudGlsIHRoZSB1c2VyIGZpeGVzIHByZXJlcXMuIHwKfCBgM2AgfCBTdWdnZXN0IGBudmNmLWNs" + + "aSBpbml0YCAoaW50ZXJhY3RpdmUpIE9SIGAtLXRva2VuPSRKV1RgIChDSSkuIERvbid0IGF1dG8t" + + "bWludCB3aXRob3V0IHVzZXIgT0suIHwKfCBgNWAgfCBBc2sgdXNlciBpZiB0aGV5IHdhbnQgdG8g" + + "d2FpdCBsb25nZXIsIGRpZyBpbnRvIHRoZSBzdGFsbGVkIGNvbXBvbmVudCwgb3IgY2FuY2VsLiB8" + + "CnwgYDEzMGAgfCBEb24ndCByZXRyeSBhdXRvbWF0aWNhbGx5OyB1c2VyIGV4cGxpY2l0bHkgY2Fu" + + "Y2VsbGVkLiBDb25maXJtIGJlZm9yZSByZS1ydW5uaW5nLiB8CgojIyBXaGVyZSB0byBmaW5kIG1v" + + "cmUgZGV0YWlsCgpFdmVyeSBub24temVybyBleGl0IGVtaXRzIGEgc3RydWN0dXJlZCBgcGhhc2Vf" + + "ZmFpbGVkYCBKU09OIGV2ZW50IHdpdGggYGVyckNhdGVnb3J5YCwgYGVyck1lc3NhZ2VgLCBgcmVt" + + "ZWRpYXRpb25gIChhcnJheSksIGByZXRyeUNsYXNzYCAoZW51bTogYG5vbmV8aW1tZWRpYXRlfGJh" + + "Y2tvZmZ8YWZ0ZXJfcmVtZWRpYXRpb258dW5rbm93bmApLCBgcmV0cnlBZnRlclNlY2AgKGludCwg" + + "b3B0aW9uYWwpLCBhbmQgYHJhd2AgKHN1YnByb2Nlc3MgKyBIVFRQICsgS3ViZXJuZXRlcyBzaWdu" + + "YWwpLiBBbHdheXMgY29uc3VtZSB0aGVzZSBpbiBgLS1qc29uYCBtb2RlIHJhdGhlciB0aGFuIHBh" + + "cnNpbmcgRW5nbGlzaCBmcm9tIHN0ZGVyci4KUEsHCHOnWmTVBgAA1QYAAFBLAwQUAAgAAAAAACEA" + + "AAAAAAAAAAAAAAAALQAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9mbGFn" + + "cy5tZFVUBQABAKbOEiMgYG52Y2YtY2xpYCBmbGFnIHJlZmVyZW5jZQoKIyMgR2xvYmFsIGZsYWdz" + + "IChldmVyeSBzdWJjb21tYW5kKQoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0t" + + "LXwtLS18CnwgYC0tY29uZmlnIEZJTEVgIHwgQ29uZmlnIGZpbGUgcGF0aCB8IGAkSE9NRS8ubnZj" + + "Zi1jbGkueWFtbGAgfAp8IGAtLWRlYnVnYCB8IFZlcmJvc2UgSFRUUCBsb2dnaW5nIG9uIHN0ZGVy" + + "ciB8IGBmYWxzZWAgfAp8IGAtLWpzb25gIHwgSlNPTkwgZXZlbnRzIG9uIHN0ZGVyciB8IGF1dG8g" + + "KG9mZiBpbiBUVFksIG9uIHVuZGVyIGAtLW5vbi1pbnRlcmFjdGl2ZWApIHwKCiMjIGBzZWxmLWhv" + + "c3RlZGAgcGFyZW50IChwZXJzaXN0ZW50IGFjcm9zcyBzdWJjb21tYW5kcykKCnwgRmxhZyB8IFB1" + + "cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNvbnRyb2wtcGxhbmUtc3RhY2s9" + + "4oCmYCB8IENvbnRyb2wtcGxhbmUgYnVuZGxlIHNvdXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwg" + + "b3IgYG9jaTovL2AgVVJMIHwgZW1iZWRkZWQgT0NJIFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24g" + + "fAp8IGAtLWNvbXB1dGUtcGxhbmUtc3RhY2s94oCmYCB8IENvbXB1dGUtcGxhbmUgYnVuZGxlIHNv" + + "dXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwgb3IgYG9jaTovL2AgVVJMIHwgZW1iZWRkZWQgT0NJ" + + "IFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24gfAp8IGAtLWVudj1sb2NhbFx8cHJkXHzigKZgIHwg" + + "SGVsbWZpbGUgZW52aXJvbm1lbnQgbmFtZSB8IGBsb2NhbGAgZm9yIGRldiBidWlsZHMsIGBwcmRg" + + "IGZvciByZWxlYXNlcyB8CnwgYC0tbm9uLWludGVyYWN0aXZlYCB8IERpc2FibGUgYWxsIHN0ZGlu" + + "IHByb21wdHMgfCBgZmFsc2VgIHwKfCBgLS10b2tlbj0kSldUYCB8IEFkbWluIEpXVCwgb3ZlcnJp" + + "ZGVzIHN0b3JlZCBzZXNzaW9uIHwgLSB8CnwgYC0tbm8tYXBwbHlgIHwgYGluc3RhbGxgIG9ubHkg" + + "LSBlbWl0IFlBTUwsIGRvIG5vdCBrdWJlY3RsIGFwcGx5IHwgYGZhbHNlYCB8CnwgYC0tb3V0cHV0" + + "PXRleHRcfGpzb25gIHwgTGVnYWN5IGFsaWFzIGZvciBgLS1qc29uYCAoZGVwcmVjYXRlZCwgcmVt" + + "b3ZlZCBpbiBuZXh0IG1ham9yKSB8IGB0ZXh0YCB8CnwgYC0tcGxhaW5gIHwgRm9yY2UgcGxhaW4g" + + "c3RyZWFtaW5nIG91dHB1dCB8IGF1dG8tZGV0ZWN0IHwKfCBgLS13YWl0IERVUkFUSU9OYCB8IGBj" + + "aGVja2Agb25seTsgYmxvY2sgdW50aWwgcGFzcyB8IC0gfAp8IGAtLWNvbnRyb2wtcGxhbmUtY29u" + + "dGV4dCBDVFhgIHwga3ViZWN0bCBjb250ZXh0IGZvciBjb250cm9sIHBsYW5lIChSRVEtMjApIHwg" + + "Y3VycmVudCBjb250ZXh0IHwKfCBgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQgQ1RYYCB8IGt1YmVj" + + "dGwgY29udGV4dCBmb3IgY29tcHV0ZSBwbGFuZSAoUkVRLTIwKSB8IGN1cnJlbnQgY29udGV4dCB8" + + "CnwgYC0taWNtcy11cmwgVVJMYCB8IFB1YmxpYyBJQ01TIFVSTDsgcmVxdWlyZWQgd2hlbiBjb250" + + "ZXh0cyBkaWZmZXIgfCBkZXJpdmVkIGZyb20gYGJhc2VfaHR0cF91cmxgIHwKfCBgLS1sb2NhbC1v" + + "bmx5YCB8IGBjaGVjayAtLXByZWAgb25seTsgc2tpcCBhbGwga3ViZWN0bCBjb250YWN0IHwgYGZh" + + "bHNlYCB8CgojIyBgY2hlY2tgLXNwZWNpZmljCgpBdCBsZWFzdCBvbmUgb2YgYC0tcHJlYCwgYC0t" + + "Y29udHJvbC1wbGFuZWAsIGAtLWNvbXB1dGUtcGxhbmVgLCBvciBgLS1hbGxgIGlzCnJlcXVpcmVk" + + "LiBFYWNoIHNlbGVjdHMgYSByb2xlOyBvbmx5IHRoZSBzZWxlY3RlZCByb2xlcyBjb250YWN0IGEg" + + "Y2x1c3Rlci4KCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAt" + + "LXByZWAgfCBQcmUtZmxpZ2h0OiBsb2NhbC1ob3N0IHRvb2xzIHBsdXMgY2x1c3RlciByZWFkaW5l" + + "c3MgfCBgZmFsc2VgIHwKfCBgLS1jb250cm9sLXBsYW5lYCB8IENvbnRyb2wtcGxhbmUgY2hlY2tz" + + "IHwgYGZhbHNlYCB8CnwgYC0tY29tcHV0ZS1wbGFuZWAgfCBDb21wdXRlLXBsYW5lIGNoZWNrcyB8" + + "IGBmYWxzZWAgfAp8IGAtLWFsbGAgfCBFdmVyeSBjYXRlZ29yeSB8IGBmYWxzZWAgfAp8IGAtLWNs" + + "dXN0ZXItbmFtZSBOQU1FYCB8IENsdXN0ZXIgbmFtZSBmb3IgY29tcHV0ZS1wbGFuZSBjaGVja3Mg" + + "fCAtIHwKfCBgLS1za2lwLWlub3RpZnktY2hlY2tgIHwgU2tpcCB0aGUgcGVyLW5vZGUgaW5vdGlm" + + "eS1saW1pdHMgcHJvYmUuIE5lZWRlZCB3aGVuIHRoZSBrdWJlY29uZmlnIHVzZXIgY2Fubm90IGNy" + + "ZWF0ZSBwb2RzIGluIGBkZWZhdWx0YC4gRW52OiBgTlZDRl9DTElfU0VMRkhPU1RFRF9TS0lQX0lO" + + "T1RJRllgIHwgYGZhbHNlYCB8CgojIyMgQ2x1c3Rlci12YWxpZGF0b3IgZmxhZ3MKClRoZSB2YWxp" + + "ZGF0b3IgcnVucyBhcyBhIEpvYiBpbiB0aGUgY2x1c3RlciBiZWluZyBjaGVja2VkLiBUaGUgQ0xJ" + + "IGNyZWF0ZXMgYQpTZXJ2aWNlQWNjb3VudCwgQ2x1c3RlclJvbGUsIGFuZCBDbHVzdGVyUm9sZUJp" + + "bmRpbmcgZm9yIGl0IGFuZCByZW1vdmVzIHRoZW0KYWZ0ZXIgdGhlIHJ1biwgc28gdGhlIGt1YmVj" + + "b25maWcgY29udGV4dCBuZWVkcyBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aG9zZS4KCnwgRmxhZyB8" + + "IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0ZXItdmFsaWRhdG9y" + + "LWltYWdlIFJFRmAgfCBWYWxpZGF0b3IgaW1hZ2UuIFJlc29sdXRpb24gb3JkZXI6IGZsYWcsIGBO" + + "VkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9JTUFHRWAsIGNvbmZpZyBrZXkgYGNsdXN0ZXJfdmFs" + + "aWRhdG9yX2ltYWdlYC4gQSByZWYgd2l0aCBubyB0YWcgZGlzY292ZXJzIHRoZSBsYXRlc3Qgc3Rh" + + "YmxlIHRhZyBmcm9tIHRoZSByZWdpc3RyeS4gVW5zZXQgZXZlcnl3aGVyZSBza2lwcyB0aGUgcHJv" + + "YmUgd2l0aCBhIHdhcm5pbmcgfCAtIHwKfCBgLS1jbHVzdGVyLXZhbGlkYXRvci1yZWdpc3RyaWVz" + + "IGhvc3Q6cG9ydCwuLi5gIHwgRXh0cmEgcmVnaXN0cmllcyB0aGUgY29udHJvbC1wbGFuZSB2YWxp" + + "ZGF0b3IgcHJvYmVzIGZvciByZWFjaGFiaWxpdHkuIGBudmNyLmlvYCBpcyBhbHdheXMgcHJvYmVk" + + "LiBSZXBlYXRhYmxlIG9yIGNvbW1hLXNlcGFyYXRlZC4gRW52OiBgTlZDRl9DTElfQ0xVU1RFUl9W" + + "QUxJREFUT1JfUkVHSVNUUklFU2A7IGNvbmZpZyBrZXkgYGNsdXN0ZXJfdmFsaWRhdG9yX3JlZ2lz" + + "dHJpZXNgIHwgYG52Y3IuaW9gIG9ubHkgfAp8IGAtLWNsdXN0ZXItdmFsaWRhdG9yLXB1bGwtc2Vj" + + "cmV0IE5BTUVgIHwgZG9ja2VyLXJlZ2lzdHJ5IFNlY3JldCBpbiBgZGVmYXVsdGAgdXNlZCB0byBw" + + "dWxsIHRoZSB2YWxpZGF0b3IgaW1hZ2UuIFdoZW4gZW1wdHksIHRoZSBDTEkgbG9va3MgZm9yIG9u" + + "ZSBpbiB0aGUgTlZDRiBuYW1lc3BhY2VzIGFuZCBmYWxscyBiYWNrIHRvIG1pbnRpbmcgb25lIGZy" + + "b20gYE5HQ19BUElfS0VZYCB8IGF1dG8tZGV0ZWN0IHwKfCBgLS1za2lwLWNsdXN0ZXItdmFsaWRh" + + "dGlvbmAgfCBTa2lwIHRoZSBpbi1jbHVzdGVyIHZhbGlkYXRvciBwcm9iZSBlbnRpcmVseS4gRW52" + + "OiBgTlZDRl9DTElfU0VMRkhPU1RFRF9TS0lQX0NMVVNURVJfVkFMSURBVElPTmAgfCBgZmFsc2Vg" + + "IHwKfCBgLS1uby1jbGVhbnVwYCB8IEtlZXAgdGhlIHZhbGlkYXRvciBKb2IgKGFuZCBpdHMgUkJB" + + "QykgYWZ0ZXIgdGhlIHJ1biBmb3IgZGVidWdnaW5nLiBUaGUgbmV4dCBydW4gc3RpbGwgc3dlZXBz" + + "IHByaW9yIEpvYnMgfCBgZmFsc2VgIHwKfCBgLS1zaG93LWxvZ3NgIHwgUHJpbnQgdGhlIHZhbGlk" + + "YXRvciB0cmFuc2NyaXB0IHRvIHN0ZGVyciBhZnRlciB0aGUgY2hlY2sgZXZlbnRzLiBUaGUgdHJh" + + "bnNjcmlwdCBpcyBub3QgSlNPTiwgYW5kIGAtLWpzb25gIGFsc28gd3JpdGVzIHRvIHN0ZGVyciwg" + + "c28gbGVhdmUgdGhpcyBvZmYgd2hlbiBhIHBhcnNlciBpcyByZWFkaW5nIHRoZSBzdHJlYW0gfCBg" + + "ZmFsc2VgIHwKCiMjIGB1cGAtc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwK" + + "fC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0ZXItbmFtZSBOQU1FYCB8IElDTVMgY2x1c3RlciByb3cg" + + "aWRlbnRpZmllciAocmVxdWlyZWQpIHwgLSB8CnwgYC0tbmNhLWlkIElEYCB8IE5DQSBhY2NvdW50" + + "IElEIHwgYG52Y2YtZGVmYXVsdGAgfAp8IGAtLXJlZ2lvbiBSRUdJT05gIHwgQ2x1c3RlciByZWdp" + + "b24gfCBgdXMtd2VzdC0xYCB8CnwgYC0tcGxhbi1vbmx5YCB8IERyeS1ydW47IGVtaXQgcGhhc2Ug" + + "cGxhbiArIEVUQXMgd2l0aG91dCBjaGFuZ2VzIHwgYGZhbHNlYCB8CgojIyBgc3RhdHVzYC1zcGVj" + + "aWZpYwoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tY2x1" + + "c3Rlci1uYW1lIE5BTUVgIHwgTGltaXQgdG8gb25lIGNvbXB1dGUgcGxhbmUgfCAtIChjb250cm9s" + + "ICsgYWxsIGNsdXN0ZXJzKSB8CnwgYC0td2F0Y2hgIHwgTGl2ZSByZS1yZW5kZXIgfCBgZmFsc2Vg" + + "IHwKfCBgLS13YXRjaC1pbnRlcnZhbCBEVVJgIHwgYC0td2F0Y2hgIGNhZGVuY2UgfCBgNXNgIHwK" + + "fCBgLS1jb21wb25lbnQgTkFNRWAgfCBGaWx0ZXIgY29tcG9uZW50cyBwYW5lbCB8IGFsbCB8Cnwg" + + "YC0tbm8tZXZlbnRzYCB8IFNraXAgZXZlbnRzIHBhbmVsIHwgYGZhbHNlYCB8CgojIyBgY2x1c3Rl" + + "ciByZWdpc3RlcmAtc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwt" + + "LS18LS0tfAp8IGAtLW5hbWUgTkFNRWAgfCBDbHVzdGVyIG5hbWUgKHJlcXVpcmVkKSB8IC0gfAp8" + + "IGAtLW5jYS1pZCBJRGAgfCBOQ0EgSUQgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLXJlZ2lvbiBSRUdJ" + + "T05gIHwgUmVnaW9uIHwgYHVzLXdlc3QtMWAgfAp8IGAtLWljbXMtdXJsIFVSTGAgfCBJQ01TIGVu" + + "ZHBvaW50IHwgZnJvbSBjb25maWcgfAp8IGAtLWlnbm9yZS1leGlzdGluZ2AgfCBNYXRjaC1vci1j" + + "cmVhdGUgaW5zdGVhZCBvZiBmYWlsLW9uLWV4aXN0cyB8IGBmYWxzZWAgfAoKIyMgYGFwaS1rZXkg" + + "Z2VuZXJhdGVgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0t" + + "fC0tLXwKfCBgLS1mb3IgZnVuY3Rpb25cfHRhc2tgIHwgR2VuZXJhdGUgb25seSB0aGUgc3BlY2lm" + + "aWVkIGtleSB0eXBlIHwgKG9taXQgdG8gZ2VuZXJhdGUgYm90aCkgfAp8IGAtLWRlc2NyaXB0aW9u" + + "IFRFWFRgIHwgSHVtYW4tcmVhZGFibGUgbGFiZWwgZm9yIHRoZSBrZXkgfCBgR2VuZXJhdGVkIGJ5" + + "IG52Y2YtY2xpYCB8CnwgYC0tZXhwaXJlcy1pbiBEVVJBVElPTmAgfCBFeHBpcnkgb2Zmc2V0IChl" + + "LmcuIGAyNGhgLCBgN2RgKTsgcGFyc2VkIGFzIGV4dGVuZGVkIGR1cmF0aW9uIHwgYDI0aGAgfAp8" + + "IGAtLXNjb3BlcyBTQ09QRVssU0NPUEVdYCB8IE92ZXJyaWRlIGRlZmF1bHQgc2NvcGVzOyByZXF1" + + "aXJlcyBgLS1mb3JgIHwgKHNlcnZpY2UgZGVmYXVsdHMpIHwKfCBgLS12YWxpZGF0ZWAgfCBWYWxp" + + "ZGF0ZSBlYWNoIGdlbmVyYXRlZCBrZXkgaW1tZWRpYXRlbHkgYWZ0ZXIgbWludGluZyB8IGBmYWxz" + + "ZWAgfAoKRXh0ZW5kZWQgZHVyYXRpb24gdW5pdHM6IGBzYCAoc2Vjb25kcyksIGBtYCAobWludXRl" + + "cyksIGBoYCAoaG91cnMpLCBgZGAgKGRheXMpLCBgd2AgKHdlZWtzKS4KCiMjIGBmdW5jdGlvbiBj" + + "cmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIGZvciBy" + + "ZXBlYXRhYmxlIGZ1bmN0aW9uIGRlZmluaXRpb25zLiBGb3IgYWQtaG9jIGNyZWF0ZXM6Cgp8IEZs" + + "YWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1uYW1lIE5BTUVgIHwg" + + "RnVuY3Rpb24gbmFtZSB8IC0gfAp8IGAtLWltYWdlIElNQUdFYCB8IENvbnRhaW5lciBpbWFnZSB8" + + "IC0gfAp8IGAtLWluZmVyZW5jZS11cmwgVVJJYCB8IENvbnRhaW5lciBpbmZlcmVuY2UgZW5kcG9p" + + "bnQgfCAtIHwKfCBgLS1pbmZlcmVuY2UtcG9ydCBQT1JUYCB8IENvbnRhaW5lciBpbmZlcmVuY2Ug" + + "cG9ydCB8IC0gfAp8IGAtLWZ1bmN0aW9uLXR5cGUgREVGQVVMVFx8U1RSRUFNSU5HXHxMTE1gIHwg" + + "RnVuY3Rpb24gdHlwZSB8IGBERUZBVUxUYCB8CnwgYC0taGVsbS1jaGFydCBDSEFSVGAgfCBIZWxt" + + "IGNoYXJ0IFVSTCBvciBPQ0kgcmVmZXJlbmNlLiBDYW4gYmUgdXNlZCB3aXRoIGAtLWZ1bmN0aW9u" + + "LXR5cGU9TExNYCBmb3IgY2hhcnQtcGFja2FnZWQgTExNIHdvcmtsb2Fkcy4gfCAtIHwKfCBgLS1o" + + "ZWxtLWNoYXJ0LXNlcnZpY2UgTkFNRWAgfCBLdWJlcm5ldGVzIFNlcnZpY2UgbmFtZSBleHBvc2Vk" + + "IGJ5IHRoZSBjaGFydC4gUmVxdWlyZWQgd2hlbiBgLS1oZWxtLWNoYXJ0YCBpcyBzZXQuIHwgLSB8" + + "CnwgYC0tbW9kZWxzIE5BTUU6VkVSU0lPTjpVUklgIHwgU3RhbmRhcmQgbW9kZWwgYXJ0aWZhY3Q7" + + "IHJlcGVhdGFibGUgfCAtIHwKfCBgLS1sbG0tbW9kZWwgU1BFQ2AgfCBMTE0gbW9kZWwgY29uZmln" + + "OyBmb3JtYXQgYG5hbWU9PG1vZGVsPix1cmlzPTx1cmk+XHw8dXJpPixyb3V0aW5nTWV0aG9kPTxt" + + "ZXRob2Q+LHRva2VuUmF0ZUxpbWl0PTxsaW1pdD5gOyByZXBlYXRhYmxlLiBUb2tlbiBsaW1pdHMg" + + "dXNlIGA8dmFsdWU+LTx1bml0PmAgd2l0aCBgU2AsIGBNYCwgYEhgLCBgRGAsIG9yIGBXYCwgZm9y" + + "IGV4YW1wbGUgYDEwMDAtU2AuIFVzZSBpbnB1dCBKU09OIGZvciBjb21iaW5lZCB0b2tlbiBsaW1p" + + "dHMgYmVjYXVzZSBpbmxpbmUgc3BlY3MgdXNlIGNvbW1hcyBhcyBmaWVsZCBzZXBhcmF0b3JzLiB8" + + "IC0gfAp8IGAtLWxsbS1kZWZhdWx0LXByaW9yaXR5IFBSSU9SSVRZYCB8IEZ1bmN0aW9uLWxldmVs" + + "IGRlZmF1bHQgcmVxdWVzdCBwcmlvcml0eS4gTG93ZXIgdmFsdWVzIGhhdmUgaGlnaGVyIHByaW9y" + + "aXR5LiB8IC0gfAp8IGAtLWxsbS1wZXItYWNjb3VudC1wcmlvcml0eSBOQ0EtSUQ6UFJJT1JJVFlg" + + "IHwgUGVyLWFjY291bnQgcHJpb3JpdHkgb3ZlcnJpZGU7IHJlcGVhdGFibGU7IHN1cHBvcnRzIHVw" + + "IHRvIDY0IGRpc3RpbmN0IE5DQSBJRCBvdmVycmlkZXMuIFJlcXVpcmVzIGEgZGVmYXVsdCBwcmlv" + + "cml0eS4gfCAtIHwKCkluIEpTT04gYW5kIGlubGluZSBzcGVjcywgTExNIGZ1bmN0aW9ucyBzZXQg" + + "YGZ1bmN0aW9uVHlwZTogIkxMTSJgIGFuZCBtb2RlbCByb3V0aW5nIG1ldGFkYXRhIHVuZGVyIGBt" + + "b2RlbHNbXS5sbG1Db25maWdgLiBgbGxtQ29uZmlnLnVyaXNgIGRlY2xhcmVzIHRoZSBPcGVuQUkt" + + "Y29tcGF0aWJsZSB1cHN0cmVhbSBwYXRocyBleHBvc2VkIGJ5IHRoZSBtb2RlbC4gQ3VycmVudCBz" + + "dXBwb3J0ZWQgcGF0aHMgYXJlIGAvdjEvY2hhdC9jb21wbGV0aW9uc2AsIGAvdjEvcmVzcG9uc2Vz" + + "YCwgYW5kIGAvdjEvZW1iZWRkaW5nc2AuIGBsbG1Db25maWcucm91dGluZ01ldGhvZGAgYWNjZXB0" + + "cyBgcm91bmRfcm9iaW5gLCBgcG93ZXJfb2ZfdHdvYCwgYGdyb3FfbXVsdGlyZWdpb25gLCBgcHVs" + + "c2FyYCwgb3IgYHJhbmRvbWAuCmBsbG1Db25maWcudG9rZW5SYXRlTGltaXRgIGFjY2VwdHMgb25l" + + "IG9yIG1vcmUgY29tbWEtc2VwYXJhdGVkIHBvc2l0aXZlIGludGVnZXIgdG9rZW4gbGltaXRzIGlu" + + "IGA8dmFsdWU+LTx1bml0PmAgZm9ybWF0LiBTdXBwb3J0ZWQgdW5pdHMgYXJlIGBTYCAoc2Vjb25k" + + "cyksIGBNYCAobWludXRlcyksIGBIYCAoaG91cnMpLCBgRGAgKGRheXMpLCBhbmQgYFdgICh3ZWVr" + + "cykuIFVzZSBkaXN0aW5jdCB1bml0cyB3aGVuIGNvbWJpbmluZyBsaW1pdHMsIGZvciBleGFtcGxl" + + "IGAxMDAwLVMsNTAwMC1NLDEwMDAwMC1ILDUwMDAwMC1ELDEwMDAwMDAtV2AgaW4gaW5wdXQgSlNP" + + "Ti4KCkhlbG0gY2hhcnQgcGFja2FnaW5nIGlzIGluZGVwZW5kZW50IG9mIGBmdW5jdGlvblR5cGVg" + + "LiBGb3IgYSBIZWxtLWNoYXJ0IGJhY2tlZCBMTE0gZnVuY3Rpb24sIHNldCBgZnVuY3Rpb25UeXBl" + + "OiAiTExNImAsIGBoZWxtQ2hhcnRgLCBgaGVsbUNoYXJ0U2VydmljZU5hbWVgLCBhbmQgYG1vZGVs" + + "c1tdLmxsbUNvbmZpZ2AgaW4gdGhlIHNhbWUgY3JlYXRlIHJlcXVlc3QuIGBpbmZlcmVuY2VQb3J0" + + "YCBtdXN0IGJlIHRoZSBLdWJlcm5ldGVzIFNlcnZpY2UgcG9ydCBleHBvc2VkIGJ5IGBoZWxtQ2hh" + + "cnRTZXJ2aWNlTmFtZWAuCgpMTE0gaW52b2NhdGlvbiByZXF1ZXN0cyB1c2UgYG1vZGVsOiAiPGZ1" + + "bmN0aW9uLWlkPi88bW9kZWwtbmFtZT4iYC4gVGhlIGZ1bmN0aW9uIElEIHNlbGVjdHMgdGhlIE5W" + + "Q0YgZnVuY3Rpb24sIGFuZCB0aGUgbW9kZWwgbmFtZSBpcyBmb3J3YXJkZWQgdXBzdHJlYW0uIENo" + + "YXQgY29tcGxldGlvbnMgYW5kIFJlc3BvbnNlcyBBUEkgcmVxdWVzdHMgY2FuIHVzZSBgeC1tdWx0" + + "aS10dXJuLXNlc3Npb24taWRgIGZvciBzZXNzaW9uIHN0aWNraW5lc3M7IGVtYmVkZGluZ3MgcmVx" + + "dWVzdHMgZG8gbm90LgoKIyMgYGZ1bmN0aW9uIHVwZGF0ZWAtc3BlY2lmaWMKCnwgRmxhZyB8IFB1" + + "cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLXRhZ3MgVEFHWyxUQUddYCB8IFJl" + + "cGxhY2UgZnVuY3Rpb24gdGFncyB8IC0gfAp8IGAtLWxsbS1tb2RlbC11cGRhdGUgU1BFQ2AgfCBM" + + "TE0gbW9kZWwgdXBkYXRlOyBmb3JtYXQgYG5hbWU9PG1vZGVsPixyb3V0aW5nTWV0aG9kPTxtZXRo" + + "b2Q+LHRva2VuUmF0ZUxpbWl0PTxsaW1pdD5gOyByZXBlYXRhYmxlLiBSb3V0aW5nIG1ldGhvZHMg" + + "bWF0Y2ggYC0tbGxtLW1vZGVsYC4gVG9rZW4gbGltaXQgZXhhbXBsZTogYDEwMDAtU2AuIFVzZSBp" + + "bnB1dCBKU09OIGZvciBjb21iaW5lZCB0b2tlbiBsaW1pdHMuIHwgLSB8CnwgYC0tbGxtLWRlZmF1" + + "bHQtcHJpb3JpdHkgUFJJT1JJVFlgIHwgUmVwbGFjZSB0aGUgZnVuY3Rpb24tbGV2ZWwgcHJpb3Jp" + + "dHkgY29uZmlndXJhdGlvbiB3aXRoIHRoaXMgZGVmYXVsdCBhbmQgYW55IHN1cHBsaWVkIHBlci1h" + + "Y2NvdW50IG92ZXJyaWRlcy4gfCAtIHwKfCBgLS1sbG0tcGVyLWFjY291bnQtcHJpb3JpdHkgTkNB" + + "LUlEOlBSSU9SSVRZYCB8IFBlci1hY2NvdW50IHByaW9yaXR5IG92ZXJyaWRlOyByZXBlYXRhYmxl" + + "OyBzdXBwb3J0cyB1cCB0byA2NCBkaXN0aW5jdCBOQ0EgSUQgb3ZlcnJpZGVzLiBSZXF1aXJlcyBh" + + "IGRlZmF1bHQgcHJpb3JpdHkuIHwgLSB8CgpJbiBKU09OLCBgZnVuY3Rpb24gdXBkYXRlYCBhY2Nl" + + "cHRzIGBtb2RlbFVwZGF0ZXNbXWAgZW50cmllcyB3aXRoIGBtb2RlbE5hbWVgIGFuZCBgbGxtQ29u" + + "ZmlnLnJvdXRpbmdNZXRob2RgIGFuZC9vciBgbGxtQ29uZmlnLnRva2VuUmF0ZUxpbWl0YC4gYHVy" + + "aXNgIGFyZSBjcmVhdGUtdGltZSBtb2RlbCBtZXRhZGF0YSBhbmQgYXJlIG5vdCBwYXJ0IG9mIG1v" + + "ZGVsIHVwZGF0ZXMuCgojIyBgZnVuY3Rpb24gZGVwbG95IGNyZWF0ZWAtc3BlY2lmaWMKCmAtLWlu" + + "cHV0LWZpbGUgRklMRWAgaXMgcmVjb21tZW5kZWQgKGZ1bGwgSlNPTiBzcGVjKS4gRm9yIGFkLWhv" + + "YyBvbmUtc2hvdCB1c2U6Cgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0t" + + "LXwKfCBgLS1mdW5jdGlvbi1pZCBJRGAgfCBGdW5jdGlvbiBJRCAocmVxdWlyZWQpIHwgLSB8Cnwg" + + "YC0tZ3B1IE5BTUVgIHwgR1BVIGZhbWlseSB8IGBIMTAwYCB8CnwgYC0taW5zdGFuY2UtdHlwZSBU" + + "WVBFYCB8IFNLVSB8IGBOQ1AuR1BVLkgxMDBfMXhgIHwKfCBgLS1taW4taW5zdGFuY2VzIE5gIHwg" + + "TWluIHJlcGxpY2FzIHwgYDFgIHwKfCBgLS1tYXgtaW5zdGFuY2VzIE5gIHwgTWF4IHJlcGxpY2Fz" + + "IHwgYDFgIHwKfCBgLS1tYXgtcmVxdWVzdC1jb25jdXJyZW5jeSBOYCB8IENvbmN1cnJlbmN5IHwg" + + "YDBgICh1bnNldDsgc2VydmVyIGRlZmF1bHQgYXBwbGllcykgfAp8IGAtLWNsdXN0ZXJzIE5BTUVb" + + "LE5BTUVdYCB8IFRhcmdldCBzcGVjaWZpYyBjb21wdXRlIGNsdXN0ZXJzIHwgKGFueSBtYXRjaGlu" + + "ZyBTS1UpIHwKCiMjIGB0YXNrIGNyZWF0ZWAtc3BlY2lmaWMKCmAtLWlucHV0LWZpbGUgRklMRWAg" + + "aXMgcmVjb21tZW5kZWQgZm9yIHJlcGVhdGFibGUgdGFzayBkZWZpbml0aW9ucy4gRm9yIGFkLWhv" + + "YyB1c2U6Cgp8IEZsYWcgfCBQdXJwb3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYC0tbmFt" + + "ZSBOQU1FYCB8IFRhc2sgbmFtZSAocmVxdWlyZWQpIHwgMS0xMjggY2hhcnMsIGBeW2EtejAtOUEt" + + "Wl1bYS16MC05QS1aXC1fXSokYCB8CnwgYC0tZ3B1IEdQVWAgfCBHUFUgbmFtZSAocmVxdWlyZWQg" + + "d2l0aG91dCBgLS1pbnB1dC1maWxlYCkgfCBFeGFtcGxlOiBgSDEwMGAgfAp8IGAtLWluc3RhbmNl" + + "LXR5cGUgVFlQRWAgfCBJbnN0YW5jZSB0eXBlIChyZXF1aXJlZCB3aXRob3V0IGAtLWlucHV0LWZp" + + "bGVgKSB8IEV4YW1wbGU6IGBOQ1AuR1BVLkgxMDBfMXhgIHwKfCBgLS1pbWFnZSBJTUFHRWAgfCBD" + + "b250YWluZXIgaW1hZ2UgfCBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgLS1oZWxtLWNoYXJ0YCB8" + + "CnwgYC0taGVsbS1jaGFydCBDSEFSVGAgfCBIZWxtIGNoYXJ0IFVSTCBvciBPQ0kgcmVmZXJlbmNl" + + "IHwgTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYC0taW1hZ2VgIHwKfCBgLS1pbnB1dC1maWxlIEZJ" + + "TEVgIHwgSlNPTiB0YXNrIHNwZWMgZmlsZSB8IENMSSBmbGFncyBvdmVycmlkZSBKU09OIHZhbHVl" + + "cyB3aGVuIGJvdGggYXJlIHNldCB8CnwgYC0tYmFja2VuZCBCQUNLRU5EYCB8IEJhY2tlbmQgLyBD" + + "U1AgfCAtIHwKfCBgLS1jbHVzdGVycyBOQU1FWyxOQU1FXWAgfCBTcGVjaWZpYyBjbHVzdGVycyB3" + + "aXRoaW4gdGhlIGluc3RhbmNlIHwgQ29tbWEtc2VwYXJhdGVkIHwKfCBgLS1jb250YWluZXItYXJn" + + "cyBBUkdTYCB8IEFyZ3MgcGFzc2VkIHdoZW4gbGF1bmNoaW5nIHRoZSBjb250YWluZXIgfCBTaW5n" + + "bGUgc3RyaW5nLCBlLmcuIGAiLS1lcG9jaHMgMTAgLS1iYXRjaC1zaXplIDMyImAgfAp8IGAtLWNv" + + "bnRhaW5lci1lbnYgTkFNRT12YWx1ZWAgfCBDb250YWluZXIgZW52aXJvbm1lbnQgdmFyaWFibGU7" + + "IHJlcGVhdGFibGUgfCAtIHwKfCBgLS1zZWNyZXRzIE5BTUU9dmFsdWVgIHwgU2VjcmV0IGVudmly" + + "b25tZW50IHZhcmlhYmxlOyByZXBlYXRhYmxlOyBlbmNyeXB0ZWQgYXQgcmVzdCB8IC0gfAp8IGAt" + + "LW1heC1ydW50aW1lIERVUkFUSU9OYCB8IE1heCB3YWxsLWNsb2NrIHJ1biB0aW1lIChJU08gODYw" + + "MSwgZS5nLiBgUFQ0SGApIHwgTm8gZGVmYXVsdDsgb21pdCBmb3Igbm8gdGltZSBsaW1pdCB8Cnwg" + + "YC0tbWF4LXF1ZXVlZCBEVVJBVElPTmAgfCBNYXggdGltZSBpbiBxdWV1ZSBiZWZvcmUgY2FuY2Vs" + + "bGF0aW9uIChJU08gODYwMSkgfCBTZXJ2ZXIgZGVmYXVsdCBgUFQ3MkhgIHwKfCBgLS10ZXJtaW5h" + + "dGlvbi1ncmFjZSBEVVJBVElPTmAgfCBHcmFjZSBwZXJpb2QgYWZ0ZXIgc3RvcCBzaWduYWwgKElT" + + "TyA4NjAxKSB8IFNlcnZlciBkZWZhdWx0IGBQVDFIYCB8CnwgYC0tcmVzdWx0LXN0cmF0ZWd5IFVQ" + + "TE9BRFx8Tk9ORWAgfCBIb3cgdG8gaGFuZGxlIHRhc2sgb3V0cHV0IGFydGlmYWN0cyB8IC0gfAp8" + + "IGAtLXJlc3VsdHMtbG9jYXRpb24gTE9DQVRJT05gIHwgUmVzdWx0IHVwbG9hZCB0YXJnZXQsIGZv" + + "cm1hdCBgb3JnLW5hbWUvW3RlYW0tbmFtZS9dbW9kZWwtbmFtZWA7IHJlcXVpcmVkIHdoZW4gYC0t" + + "cmVzdWx0LXN0cmF0ZWd5PVVQTE9BRGAgfCAtIHwKfCBgLS1tb2RlbHMgTkFNRTpWRVJTSU9OOlVS" + + "SWAgfCBNb2RlbCBhcnRpZmFjdDsgcmVwZWF0YWJsZSB8IC0gfAp8IGAtLXJlc291cmNlcyBOQU1F" + + "OlZFUlNJT046VVJJYCB8IFJlc291cmNlIGFydGlmYWN0OyByZXBlYXRhYmxlIHwgLSB8CnwgYC0t" + + "dGFncyBUQUdbLFRBR11gIHwgVGFzayB0YWdzIHwgQ29tbWEtc2VwYXJhdGVkIHwKfCBgLS1kZXNj" + + "cmlwdGlvbiBURVhUYCB8IFRhc2sgZGVzY3JpcHRpb24gfCAtIHwKfCBgLS1sb2dzLXRlbGVtZXRy" + + "eS1pZCBVVUlEYCB8IExvZ3MgdGVsZW1ldHJ5IGVuZHBvaW50IElEIHwgLSB8CnwgYC0tbWV0cmlj" + + "cy10ZWxlbWV0cnktaWQgVVVJRGAgfCBNZXRyaWNzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0g" + + "fAp8IGAtLXRyYWNlcy10ZWxlbWV0cnktaWQgVVVJRGAgfCBUcmFjZXMgdGVsZW1ldHJ5IGVuZHBv" + + "aW50IElEIHwgLSB8ClBLBwiZ0OJQFy4AABcuAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADcA" + + "CQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvdHJvdWJsZXNob290aW5nLm1k" + + "VVQFAAEAps4SIyBUcm91Ymxlc2hvb3RpbmcKCktub3duIGVycm9ycyDihpIgZGlhZ25vc3RpYyBj" + + "b21tYW5kIOKGkiByZW1lZGlhdGlvbi4gS2VlcCBpbiBzeW5jIHdpdGggdGhlIHN0cnVjdHVyZWQg" + + "YHBoYXNlX2ZhaWxlZGAgZXZlbnRzIHRoZSBDTEkgZW1pdHMgKFJFUS0xNSkg4oCUIGV2ZXJ5IGVu" + + "dHJ5IGJlbG93IHNob3VsZCBtYXAgdG8gYW4gYGVyckNhdGVnb3J5YCBhbmQgYSBgcmVtZWRpYXRp" + + "b25gIGFycmF5LgoKIyMgUHJlLWZsaWdodAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlv" + + "biB8CnwtLS18LS0tfC0tLXwKfCBga3ViZWN0bCBub3Qgb24gUEFUSGAgfCBPcGVyYXRvcidzIGAk" + + "UEFUSGAgZG9lc24ndCBpbmNsdWRlIGt1YmVjdGwgfCBJbnN0YWxsIGt1YmVjdGwgMS4yOCs6IGh0" + + "dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL3Rhc2tzL3Rvb2xzL2luc3RhbGwta3ViZWN0bC8gfAp8" + + "IGBoZWxtZmlsZSBub3Qgb24gUEFUSGAgfCBTYW1lIHwgaHR0cHM6Ly9naXRodWIuY29tL2hlbG1m" + + "aWxlL2hlbG1maWxlI2luc3RhbGxhdGlvbiB8CnwgYGhlbG0gbm90IG9uIFBBVEhgIHwgU2FtZSB8" + + "IGh0dHBzOi8vaGVsbS5zaC9kb2NzL2ludHJvL2luc3RhbGwvIHwKfCBgR2F0ZXdheSBBUEkgQ1JE" + + "cyBub3QgaW5zdGFsbGVkYCB8IGVudm95LWdhdGV3YXkgcHJlcmVxIG1pc3NpbmcgfCBgaGVsbSBp" + + "bnN0YWxsIGVnIG9jaTovL2RvY2tlci5pby9lbnZveXByb3h5L2dhdGV3YXktaGVsbSAtLW5hbWVz" + + "cGFjZT1lbnZveS1nYXRld2F5LXN5c3RlbSAtLWNyZWF0ZS1uYW1lc3BhY2VgIHwKfCBgZGVmYXVs" + + "dCBTdG9yYWdlQ2xhc3Mgbm90IGF2YWlsYWJsZWAgfCBDbHVzdGVyIGhhcyBubyBkZWZhdWx0IFND" + + "IHwgQW5ub3RhdGUgb25lOiBga3ViZWN0bCBwYXRjaCBzYyA8bmFtZT4gLXAgJ3sibWV0YWRhdGEi" + + "OnsiYW5ub3RhdGlvbnMiOnsic3RvcmFnZWNsYXNzLmt1YmVybmV0ZXMuaW8vaXMtZGVmYXVsdC1j" + + "bGFzcyI6InRydWUifX19J2AgfAp8IGBHUFUgb3BlcmF0b3Igbm90IGluc3RhbGxlZGAgKGNvbXB1" + + "dGUtcGxhbmUpIHwgbnZpZGlhIEdQVSBvcGVyYXRvciBtaXNzaW5nIHwgSW5zdGFsbCBwZXIgaHR0" + + "cHM6Ly9kb2NzLm52aWRpYS5jb20vZGF0YWNlbnRlci9jbG91ZC1uYXRpdmUvZ3B1LW9wZXJhdG9y" + + "L2xhdGVzdC9pbnN0YWxsLWdwdS1vcGVyYXRvci5odG1sLCBPUiB1c2UgYGZha2UtZ3B1LW9wZXJh" + + "dG9yYCBmb3IgZGV2IHwKfCBgR1BVIG5vZGUgbGFiZWxzIG1pc3NpbmdgIChjb21wdXRlLXBsYW5l" + + "KSB8IE5vZGVzIG5lZWQgYG52aWRpYS5jb20vZ3B1LmZhbWlseWAgZXRjLiB8IFNldCBgLS1rM3Mt" + + "bm9kZS1sYWJlbCBudmlkaWEuY29tL2dwdS5mYW1pbHk9aG9wcGVyQGFnZW50Ok5gIGZvciBrM2Qg" + + "fAoKIyMgQXV0aAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0t" + + "LXwKfCBgYWRtaW4gdG9rZW4gcmVxdWlyZWRgIChpbml0IG5vdCBydW4pIHwgTm8gYH4vLm52Y2Yt" + + "Y2xpLnN0YXRlYCBhbmQgYC0tdG9rZW5gIG5vdCBwYXNzZWQgfCBgbnZjZi1jbGkgaW5pdGAgKGlu" + + "dGVyYWN0aXZlKSBvciBgLS10b2tlbj0kSldUIC0tbm9uLWludGVyYWN0aXZlYCAoQ0kpIHwKfCBg" + + "U2lnbmVkIEpXVCByZWplY3RlZDogQW5vdGhlciBhbGdvcml0aG0gZXhwZWN0ZWQsIG9yIG5vIG1h" + + "dGNoaW5nIGtleShzKSBmb3VuZGAgfCBTdGFsZSBzZXNzaW9uLmpzb24gZnJvbSBhIGRpZmZlcmVu" + + "dCBjb250cm9sIHBsYW5lIHwgYHJtIH4vLm52Y2YtY2xpLnN0YXRlYCB0aGVuIGBudmNmLWNsaSBp" + + "bml0YCBhZ2FpbiB8CnwgYDQwMyBtaXNzaW5nIHJlcXVlc3RlZCBhdXRob3JpdGllc2AgKGZ1bmN0" + + "aW9uIGludm9rZSkgfCBBZG1pbiB0b2tlbiBkb2Vzbid0IGhhdmUgYGludm9rZV9mdW5jdGlvbmAg" + + "c2NvcGUgfCBgbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWRlc2NyaXB0aW9uPeKApmAgdGhl" + + "biByZS1ydW4gaW52b2tlIHwKCiMjIEluc3RhbGwgLyBgdXBgCgp8IFN5bXB0b20gfCBDYXVzZSB8" + + "IFJlbWVkaWF0aW9uIHwKfC0tLXwtLS18LS0tfAp8IEhlbG0gYHRpbWVkIG91dCB3YWl0aW5nIGZv" + + "ciBjYXNzYW5kcmFgIHwgQ2Fzc2FuZHJhIFN0YXRlZnVsU2V0IFBWQyBzdHVjayBgUGVuZGluZ2Ag" + + "fCBDb25maXJtIGRlZmF1bHQgU3RvcmFnZUNsYXNzOyBjaGVjayBga3ViZWN0bCBnZXQgcHYscHZj" + + "IC1uIGNhc3NhbmRyYS1zeXN0ZW1gIHwKfCBgSW52YWxpZCBHUFUgJ05DUC5HUFUuSDEwMCcgc3Bl" + + "Y2lmaWVkYCAoZnVuY3Rpb24gZGVwbG95KSB8IFdyb25nIGZpZWxkIOKAlCBgZ3B1YCBpcyB0aGUg" + + "ZmFtaWx5LCBub3QgdGhlIFNLVSB8IFVzZSBgImdwdSI6ICJIMTAwImAsIGAiaW5zdGFuY2VUeXBl" + + "IjogIk5DUC5HUFUuSDEwMF8xeCJgIHwKfCBgcmVnaW9uIG11c3QgYmUgcHJvdmlkZWRgIChjbHVz" + + "dGVyIHJlZ2lzdGVyIC8gaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmUpIHwgYC0tcmVnaW9uYCBlbXB0" + + "eSArIGBDTFVTVEVSX1JFR0lPTmAgZW52IGVtcHR5IHwgUGFzcyBgLS1yZWdpb249dXMtd2VzdC0x" + + "YCAob3IgYW55IG5vbi1lbXB0eSB2YWx1ZSkgfAp8IGByZXF1aXJlZEVudiAiTkNBX0lEIiBpcyBu" + + "b3Qgc2V0YCAoaGVsbWZpbGUgZXJyb3IgZHVyaW5nIGNvbXB1dGUtcGxhbmUgYXBwbHkpIHwgT2xk" + + "ZXIgbnZjZi1jbGkgYmVmb3JlIGNvbW1pdCBgNmFhNTcwNGA7IEV4dHJhRW52IG5vdCBwcm9wYWdh" + + "dGluZyBOQ0FfSUQgfCBVcGdyYWRlIGBudmNmLWNsaWAgdG8gYSByZWxlYXNlIGFmdGVyIGA2YWE1" + + "NzA0YCB8CnwgYG52Y2Etb3BlcmF0b3I6IEltYWdlUHVsbEJhY2tPZmZgIGZvciBgbnZjYS1vcGVy" + + "YXRvcjpwc2F0YCB8IEltYWdlIG5vdCBpbiBjbHVzdGVyIHJlZ2lzdHJ5OyBtdWx0aS1jbHVzdGVy" + + "IGJ1aWxkIGlzIGxvY2FsIHwgYGszZCBpbWFnZSBpbXBvcnQgbnZjci5pby8uLi4vbnZjYS1vcGVy" + + "YXRvcjpwc2F0IC1jIDxjbHVzdGVyPmAgfAoKIyMgQ29tcHV0ZS1wbGFuZSBydW50aW1lCgp8IFN5" + + "bXB0b20gfCBDYXVzZSB8IFJlbWVkaWF0aW9uIHwKfC0tLXwtLS18LS0tfAp8IE5WQ0EgYWdlbnQg" + + "Q3Jhc2hMb29wQmFja09mZiB3aXRoIGBIVFRQIDQwMWAgb24gYC92MS9udmNhL2NsdXN0ZXJzLy4u" + + "Li9yZWdpc3RlcmAgfCBTdGFsZSBgb3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAg" + + "ZnJvbSBwcmlvciByZWdpc3RlcjsgY2x1c3RlciBJRCBkb2Vzbid0IG1hdGNoIElDTVMgfCBEZWxl" + + "dGUgdGhlIHN0YWxlIGZpbGU7IHJlLXJ1biBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXBgIChpZGVt" + + "cG90ZW50IHJlZ2lzdGVyIHdyaXRlcyBhIGZyZXNoIGZpbGUpIHwKfCBgTm8gY2x1c3RlciBmb3Vu" + + "ZCB3aXRoIHZhbGlkIEpXS1MgZm9yIGNsdXN0ZXIgSUQ6IDxpZD5gIChJQ01TIGxvZykgfCBKV0tT" + + "IGluIElDTVMgZG9lc24ndCBtYXRjaCB3aGF0IGNvbXB1dGUtcGxhbmUgSzhzIGlzIGN1cnJlbnRs" + + "eSBzaWduaW5nIHwgYG52Y2YtY2xpIGNsdXN0ZXIgcm90YXRlIC0tY2x1c3Rlci1pZD08aWQ+YCB8" + + "CnwgRnVuY3Rpb24gcG9kIGBJbWFnZVB1bGxCYWNrT2ZmYCBpbiBgbnZjZi1iYWNrZW5kYCB8IElt" + + "YWdlLWNyZWRlbnRpYWwtaGVscGVyIGNvbmZpZyBtaXNzaW5nIG9yIHdyb25nIHwgYGt1YmVjdGwg" + + "ZGVzY3JpYmUgcG9kIC1uIG52Y2YtYmFja2VuZCA8cG9kPmA7IGNoZWNrIHRoZSBwdWxsIHNlY3Jl" + + "dCBjb25maWcgfAp8IEZ1bmN0aW9uIGRlcGxveSBzdHVjayBgREVQTE9ZSU5HYCBmb3IgPjUgbWlu" + + "IHwgTkFUUyBzdHJlYW0gaW5pdCBsYWcgKGNvbGQtY2x1c3Rlcikg4oCUIHdhaXQsIG9yIGNoZWNr" + + "IE5BVFMgYXV0aC1jYWxsb3V0IGhlYWx0aCB8IGBrdWJlY3RsIGxvZ3MgLW4gbmF0cy1zeXN0ZW0g" + + "LWwgYXBwLmt1YmVybmV0ZXMuaW8vbmFtZT1uYXRzLWF1dGgtY2FsbG91dC1zZXJ2aWNlYCB8Cgoj" + + "IyBUYXNrcwoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwK" + + "fCBgdGFzayBjcmVhdGVgIHJldHVybnMgYE1pc3NpbmcgPFRZUEU+IHJlZ2lzdHJ5IGNyZWRlbnRp" + + "YWwgZm9yIGhvc3RuYW1lYCwgb3Iga2VlcHMgdXNpbmcgYSBwcmV2aW91cyBjcmVkZW50aWFsIHZh" + + "bHVlLCBzaG9ydGx5IGFmdGVyIGByZWdpc3RyeS1jcmVkZW50aWFsIGFkZC91cGRhdGUvZGVsZXRl" + + "YCB3aGlsZSBgcmVnaXN0cnktY3JlZGVudGlhbCBsaXN0YC9gZ2V0YCBhbHJlYWR5IHNob3cgdGhl" + + "IG5ldyB2YWx1ZSB8IEV4cGVjdGVkIHByb3BhZ2F0aW9uIGRlbGF5OiBOVkNUIGNhY2hlcyB0aGUg" + + "YWNjb3VudCdzIHJlZ2lzdHJ5IGNyZWRlbnRpYWxzIHdpdGggYG52Y3QubnZjZi5jYWNoZS10dGxg" + + "IChkZWZhdWx0IGBQVDVNYCwgYWJvdXQgNSBtaW4pIGFuZCBhcHBsaWVzIHRoZSBjaGFuZ2Ugd2hl" + + "biB0aGF0IGNhY2hlZCBjb3B5IHJlZnJlc2hlcyB8IFdhaXQgdXAgdG8gYWJvdXQgNSBtaW4gYW5k" + + "IHJldHJ5LCBvciBga3ViZWN0bCAtbiBudmNmIHJvbGxvdXQgcmVzdGFydCBkZXBsb3ltZW50L252" + + "Y3QtYXBpYCB0byBhcHBseSBpbW1lZGlhdGVseSB8ClBLBwjzrhOEdBEAAHQRAABQSwMEFAAIAAAA" + + "AAAhAAAAAAAAAAAAAAAAACwACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9T" + + "S0lMTC5tZFVUBQABAKbOEi0tLQpuYW1lOiBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24K" + + "ZGVzY3JpcHRpb246ID4tCiAgSW5zdGFsbCBhbmQgb3BlcmF0ZSBOVkNGIHNlbGYtaG9zdGVkIGNv" + + "bnRyb2wtcGxhbmUgYW5kIHNlcGFyYXRlIGNvbXB1dGUtcGxhbmUKICBzdGFja3MuIENvdmVycyBI" + + "ZWxtZmlsZSB2YWx1ZXMgYW5kIENMSSBwcm9maWxlIGluc3RhbGxhdGlvbiBmbG93cywgdGVhcmRv" + + "d24sCiAgdmFsdWVzIG92ZXJyaWRlcywgcHVsbCBzZWNyZXRzLCBhbmQgdHJvdWJsZXNob290aW5n" + + "LiBVc2UgZm9yCiAgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2ssIG52Y2YtY29tcHV0ZS1wbGFuZS1z" + + "dGFjaywgc3BsaXQgY29tcHV0ZS1wbGFuZQogIGluc3RhbGxhdGlvbiwgY29udHJvbC1wbGFuZSBp" + + "bnN0YWxsYXRpb24sIENMSS1nZW5lcmF0ZWQgY29udHJvbC1wbGFuZQogIHByb2ZpbGVzLCBIZWxt" + + "ZmlsZSwgc2VsZi1tYW5hZ2VkLCBvciBzZWxmLWhvc3RlZCBkZXBsb3ltZW50cy4gRG8gTk9UIHVz" + + "ZSBmb3IKICBsb2NhbCBrM2QgZW52aXJvbm1lbnRzOyB1c2UgdGhlIGxvY2FsIGszZCBkZXZlbG9w" + + "bWVudCB3b3JrZmxvdyBpbnN0ZWFkLgpsaWNlbnNlOiBBcGFjaGUtMi4wCmNvbXBhdGliaWxpdHk6" + + "IFJlcXVpcmVzIGhlbG1maWxlID49IDEuMS4wIDwgMS4yLjAsIGhlbG0gPj0gMy4xMiwgaGVsbS1k" + + "aWZmIHBsdWdpbiwga3ViZWN0bCBtYXRjaGluZyBjbHVzdGVyIHZlcnNpb24KYXV0aG9yOiAibnZj" + + "Zi1jb3JlLWVuZyA8bnZjZi1jb3JlLWVuZ0BleGNoYW5nZS5udmlkaWEuY29tPiIKdmVyc2lvbjog" + + "IjEuMC4wIgp0YWdzOiBbbnZjZiwgc2VsZi1tYW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQs" + + "IGNvbnRyb2wtcGxhbmUsIGNvbXB1dGUtcGxhbmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24s" + + "IGRlcGxveW1lbnQsIHB1bGwtc2VjcmV0c10KdG9vbHM6IFtTaGVsbCwgUmVhZCwgRWRpdCwgR3Jl" + + "cCwgR2xvYl0KbWV0YWRhdGE6CiAgaW50ZXJuYWw6IGZhbHNlCiAgYXV0aG9yOiAibnZjZi1jb3Jl" + + "LWVuZyA8bnZjZi1jb3JlLWVuZ0BleGNoYW5nZS5udmlkaWEuY29tPiIKICB2ZXJzaW9uOiAiMS4w" + + "IgogIHRhZ3M6IFtudmNmLCBzZWxmLW1hbmFnZWQsIGhlbG1maWxlLCBzZWxmLWhvc3RlZCwgY29u" + + "dHJvbC1wbGFuZSwgY29tcHV0ZS1wbGFuZSwgY2xpLXByb2ZpbGUsIGluc3RhbGxhdGlvbiwgZGVw" + + "bG95bWVudCwgcHVsbC1zZWNyZXRzXQogIGxhbmd1YWdlczogW2Jhc2gsIHlhbWxdCiAgZnJhbWV3" + + "b3JrczogW2hlbG1maWxlLCBoZWxtLCBrdWJlY3RsXQogIGRvbWFpbjogY2xvdWQtaW5mcmFzdHJ1" + + "Y3R1cmUKLS0tCgojIE5WQ0YgU2VsZi1NYW5hZ2VkIFN0YWNrIE9wZXJhdGlvbnMKCk9wZXJhdGlv" + + "bmFsIGd1aWRlIGZvciBtYXRjaGluZyBOVkNGIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxh" + + "bmUgSGVsbWZpbGUgYnVuZGxlcy4KCiMjIEluc3RydWN0aW9ucwoKVXNlIHRoaXMgc2tpbGwgZm9y" + + "IGluc3RhbGwsIHVwZ3JhZGUsIG9yIHRlYXJkb3duIHdvcmsgaW4gbWF0Y2hpbmcgYG52Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLXN0YWNrYCBhbmQgYG52Y2YtY29tcHV0ZS1wbGFuZS1zdGFja2AgYnVuZGxlczsg" + + "a2VlcCBIZWxtZmlsZSB2YWx1ZXMgYW5kIENMSSBwcm9maWxlIGhhbmRvZmZzIHNlcGFyYXRlLiBG" + + "b3IgYGZ1bmN0aW9uVHlwZTogIkxMTSJgLCByZWFkIFtMTE0gRnVuY3Rpb24gRW5hYmxlbWVudF0o" + + "cmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWQjbGxtLWZ1bmN0aW9uLWVuYWJsZW1lbnQp" + + "LgoKIyMgUHJlcmVxdWlzaXRlcwoKQXNrIGZvciB0aGUgZXh0cmFjdGVkIGBudmNmLXNlbGYtbWFu" + + "YWdlZC1zdGFja2AgcGF0aC4gRm9yIHNwbGl0IGluc3RhbGxhdGlvbiwKYWxzbyByZXF1aXJlIHRo" + + "ZSBtYXRjaGluZy12ZXJzaW9uIGBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIHBhdGguIFZlcmlm" + + "eSBib3RoOgoKYGBgYmFzaApscyA8Y29udHJvbC1wbGFuZS1zdGFjaz4vaGVsbWZpbGUuZC8gPGNv" + + "bnRyb2wtcGxhbmUtc3RhY2s+L2Vudmlyb25tZW50cy8gPGNvbnRyb2wtcGxhbmUtc3RhY2s+L3Nl" + + "Y3JldHMvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9nbG9iYWwueWFtbC5nb3RtcGwKbHMgPGNvbXB1" + + "dGUtcGxhbmUtc3RhY2s+L2hlbG1maWxlLmQvIDxjb21wdXRlLXBsYW5lLXN0YWNrPi9lbnZpcm9u" + + "bWVudHMvIDxjb21wdXRlLXBsYW5lLXN0YWNrPi9nbG9iYWwueWFtbC5nb3RtcGwKYGBgCgpJZiBl" + + "aXRoZXIgZGlyZWN0b3J5IGlzIG1pc3NpbmcsIGRvd25sb2FkIG1hdGNoaW5nIGJ1bmRsZSB2ZXJz" + + "aW9ucyBmcm9tIE5HQzoKCmBgYGJhc2gKbmdjIHJlZ2lzdHJ5IHJlc291cmNlIGRvd25sb2FkLXZl" + + "cnNpb24gPG9yZz4vbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2s6PHZlcnNpb24+Cm5nYyByZWdpc3Ry" + + "eSByZXNvdXJjZSBkb3dubG9hZC12ZXJzaW9uIDxvcmc+L252Y2YtY29tcHV0ZS1wbGFuZS1zdGFj" + + "azo8dmVyc2lvbj4KYGBgCgpDb250cm9sLXBsYW5lIGNvbW1hbmRzIGJlbG93IGFzc3VtZSB0aGUg" + + "Y29udHJvbC1wbGFuZSBidW5kbGUgcm9vdC4gU3BsaXQtZmxvdwpjb21tYW5kcyBhbmQgcm9vdCBz" + + "dWJzdGl0dXRpb24gYXJlIGluCltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVm" + + "ZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkuCgojIyBCZWZvcmUgWW91IFN0" + + "YXJ0CgpWZXJpZnkgdG9vbGluZyBhbmQgY29udGV4dCBiZWZvcmUgYW55IG9wZXJhdGlvbjoKCmBg" + + "YGJhc2gKaGVsbWZpbGUgLS12ZXJzaW9uICAgIyBNdXN0IGJlIDEuMS54ICgxLjIuMCByZW1vdmVk" + + "IHNlcXVlbnRpYWwgbW9kZSkKaGVsbSB2ZXJzaW9uICAgICAgICAgIyBNdXN0IGJlID49IDMuMTIK" + + "aGVsbSBwbHVnaW4gbGlzdCAgICAgIyBNdXN0IGluY2x1ZGUgaGVsbS1kaWZmID49IDMuMTEKa3Vi" + + "ZWN0bCB2ZXJzaW9uICAgICAgIyBDbGllbnQgbXVzdCBiZSB3aXRoaW4gMSBtaW5vciB2ZXJzaW9u" + + "IG9mIGNsdXN0ZXIKYGBgCgpDb250cm9sLXBsYW5lIGNvbW1hbmRzIHJ1biBmcm9tIHRoZSBleHRy" + + "YWN0ZWQgYG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrL2Agcm9vdDoKCmBgYGJhc2gKY2QgcGF0aC90" + + "by9udmNmLXNlbGYtbWFuYWdlZC1zdGFjawpscyBoZWxtZmlsZS5kLyBlbnZpcm9ubWVudHMvIHNl" + + "Y3JldHMvIGdsb2JhbC55YW1sLmdvdG1wbApgYGAKCklkZW50aWZ5IHRoZSBlbnZpcm9ubWVudCBm" + + "cm9tIGBlbnZpcm9ubWVudHMvPG5hbWU+LnlhbWxgIGFuZApgc2VjcmV0cy88bmFtZT4tc2VjcmV0" + + "cy55YW1sYDsgZm9yIEVLUywgdXNlIHRoZSBjYW5vbmljYWwKW0NTUCBFbmQtdG8tRW5kIEV4YW1w" + + "bGVdKGh0dHBzOi8vZG9jcy5udmlkaWEuY29tL252Y2YvdjAuNi4wLXJjL2NzcC1lbmQtdG8tZW5k" + + "LWV4YW1wbGUpLgoKIyMgSG93IFZhbHVlcyBGbG93CgpVbmRlcnN0YW5kaW5nIHZhbHVlIHByZWNl" + + "ZGVuY2UgcHJldmVudHMgdGhlIG1vc3QgY29tbW9uIGNvbmZpZ3VyYXRpb24gbWlzdGFrZXMuCgpg" + + "YGB0ZXh0CmVudmlyb25tZW50cy9iYXNlLnlhbWwgICAgICAgICAgKGRlZmF1bHRzKQogICAgLT4g" + + "bWVyZ2VkIHdpdGgKZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwgICAgICAgICAoeW91ciBvdmVycmlk" + + "ZXMpCiAgICAtPiBjb25zdW1lZCBieQpnbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgIChH" + + "byB0ZW1wbGF0ZSwgY29uc3RydWN0cyBwZXItY2hhcnQgdmFsdWVzKQogICAgLT4gY29uc3VtZWQg" + + "YnkKc2VjcmV0cy88ZW52Pi1zZWNyZXRzLnlhbWwgICAgICAoc2Vuc2l0aXZlIHZhbHVlcykKICAg" + + "IC0+IG92ZXJyaWRkZW4gYnkKcmVsZWFzZSBpbmxpbmUgdmFsdWVzOiBibG9ja3MgICAoaGlnaGVz" + + "dCBwcmVjZWRlbmNlKQpgYGAKCkNyaXRpY2FsOiBgZ2xvYmFsLnlhbWwuZ290bXBsYCBvbmx5IHBh" + + "c3NlcyB0aHJvdWdoIHNwZWNpZmljIGtleXMgdG8gZWFjaCBjaGFydCAoaW1hZ2UgcmVnaXN0cmll" + + "cywgbm9kZSBzZWxlY3RvcnMsIHN0b3JhZ2UsIHJlcGxpY2EgY291bnRzKS4gU2V0dGluZyBhbiBh" + + "cmJpdHJhcnkgY2hhcnQgdmFsdWUgaW4gdGhlIGVudmlyb25tZW50IGZpbGUgd2lsbCBiZSBzaWxl" + + "bnRseSBpZ25vcmVkIGlmIGBnbG9iYWwueWFtbC5nb3RtcGxgIGRvZXMgbm90IHByb3BhZ2F0ZSBp" + + "dC4KClRvIG92ZXJyaWRlIGFyYml0cmFyeSBjaGFydCB2YWx1ZXMsIHVzZSBhIGhlbG1maWxlIHJl" + + "bGVhc2UgYHZhbHVlczpgIGJsb2NrLiBTZWUgW092ZXJyaWRpbmcgSGVsbSBDaGFydCBWYWx1ZXNd" + + "KCNvdmVycmlkaW5nLWhlbG0tY2hhcnQtdmFsdWVzKS4KCiMjIENsZWFuIEluc3RhbGxhdGlvbgoK" + + "IyMjIDEuIENyZWF0ZSBuYW1lc3BhY2VzIGFuZCBpbWFnZSBwdWxsIHNlY3JldHMgKGlmIHVzaW5n" + + "IGEgcHJpdmF0ZSByZWdpc3RyeSkKCmBgYGJhc2gKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0g" + + "bmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFn" + + "ZXI7IGRvCiAga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlICIkbnMiIC0tZHJ5LXJ1bj1jbGllbnQg" + + "LW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpkb25lCgojIE9ubHkgaWYgcHVsbGluZyBmcm9t" + + "IGEgcHJpdmF0ZSByZWdpc3RyeSAoZS5nLiwgTkdDIG52Y3IuaW8pCmV4cG9ydCBOR0NfQVBJX0tF" + + "WT0iPHlvdXIta2V5PiIKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZj" + + "ZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0" + + "bCBjcmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2Vy" + + "LXNlcnZlcj1udmNyLmlvIFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAog" + + "ICAgLS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRu" + + "cyIgXAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCmRv" + + "bmUKYGBgCgpJZiB1c2luZyBwdWxsIHNlY3JldHMsIHlvdSBtdXN0IGFsc28gY29uZmlndXJlIGVh" + + "Y2ggaGVsbWZpbGUgcmVsZWFzZSB0byByZWZlcmVuY2UgdGhlbS4gU2VlIFtJbWFnZSBQdWxsIFNl" + + "Y3JldHNdKCNpbWFnZS1wdWxsLXNlY3JldHMpLgoKIyMjIDIuIEF1dGhlbnRpY2F0ZSBoZWxtIHRv" + + "IHlvdXIgY2hhcnQgcmVnaXN0cnkKCkJvdGggYGRvY2tlciBsb2dpbmAgQU5EIGBoZWxtIHJlZ2lz" + + "dHJ5IGxvZ2luYCBhcmUgcmVxdWlyZWQgZm9yIE5HQy4gSGVsbWZpbGUgdXNlcyBoZWxtIChub3Qg" + + "ZG9ja2VyKSB0byBwdWxsIE9DSSBjaGFydHMsIHNvIHRoZSBoZWxtIGNyZWRlbnRpYWwgc3RvcmUg" + + "bXVzdCBiZSBhdXRoZW50aWNhdGVkIHNlcGFyYXRlbHkuCgpgYGBiYXNoCiMgTkdDIC0tIGJvdGgg" + + "Y29tbWFuZHMgYXJlIHJlcXVpcmVkCmRvY2tlciBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tl" + + "bicgLXAgIiROR0NfQVBJX0tFWSIKaGVsbSByZWdpc3RyeSBsb2dpbiBudmNyLmlvIC11ICckb2F1" + + "dGh0b2tlbicgLXAgIiROR0NfQVBJX0tFWSIKCiMgRUNSCmF3cyBlY3IgZ2V0LWxvZ2luLXBhc3N3" + + "b3JkIC0tcmVnaW9uIDxyZWdpb24+IHwgXAogIGhlbG0gcmVnaXN0cnkgbG9naW4gLS11c2VybmFt" + + "ZSBBV1MgLS1wYXNzd29yZC1zdGRpbiA8YWNjb3VudD4uZGtyLmVjci48cmVnaW9uPi5hbWF6b25h" + + "d3MuY29tCmBgYAoKPiBOb3RlOiBgaGVsbSByZWdpc3RyeSBsb2dpbmAga2VlcHMgb25seSB0aGUg" + + "bGFzdCBsb2dpbiBwZXIgaG9zdCAobXVsdGktb3JnIGdvdGNoYSkuCj4gVGhlIHN0YWNrIGFuZCB0" + + "aGUgY2FjaGVzIHNwYW4gc2V2ZXJhbCBOR0Mgb3JncyB0aGF0IG5lZWQgZGlmZmVyZW50IGtleXMs" + + "IGJ1dCB0aGV5IGFsbAo+IGxpdmUgdW5kZXIgdGhlIG9uZSBob3N0IGBudmNyLmlvYC4gQSBzZWNv" + + "bmQgYGhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pb2AgKG9yCj4gYGRvY2tlciBsb2dpbmApIHdp" + + "dGggYSBkaWZmZXJlbnQga2V5IHNpbGVudGx5IG92ZXJ3cml0ZXMgdGhlIGZpcnN0LCBzbyBwdWxs" + + "cyBmb3IgdGhlCj4gZmlyc3Qgb3JnIHRoZW4gZmFpbCB3aXRoIGEgbWlzbGVhZGluZyBgNDAzIEFj" + + "Y2VzcyBEZW5pZWRgIChub3QgYSA0MDE6IHRoZSBhdXRoCj4gc3VjY2VlZGVkLCBpdCdzIHRoZSB3" + + "cm9uZy1vcmcga2V5KS4gSWYgeW91IHB1bGwgY2hhcnRzL2ltYWdlcyBmcm9tIG1vcmUgdGhhbiBv" + + "bmUgb3JnLAo+IGVpdGhlciByZS1ydW4gdGhlIGxvZ2luIHdpdGggdGhlIGNvcnJlY3Qga2V5IGlt" + + "bWVkaWF0ZWx5IGJlZm9yZSBlYWNoIHB1bGwsIG9yIHBhc3MKPiBgLS11c2VybmFtZSAnJG9hdXRo" + + "dG9rZW4nIC0tcGFzc3dvcmQgPGtleT5gIHBlciBgaGVsbSBwdWxsYCBpbnZvY2F0aW9uIGluc3Rl" + + "YWQgb2YgcmVseWluZwo+IG9uIHRoZSBzdG9yZWQgbG9naW4uIChQdWxsaW5nIGV2ZXJ5dGhpbmcg" + + "ZnJvbSBhIHNpbmdsZSByZWdpc3RyeSBtaXJyb3IgYXZvaWRzIHRoaXMKPiBlbnRpcmVseS4pCgoj" + + "IyMgMmIuIChSZWNvbW1lbmRlZCkgUHVsbCBmcm9tIGEgcmVnaXN0cnkgdGhlIGNsdXN0ZXIgYXV0" + + "aGVudGljYXRlcyB0byBhdXRvbWF0aWNhbGx5CgpJZiB5b3UgbWlycm9yIHRoZSBOVkNGIGltYWdl" + + "cyBpbnRvIGEgcmVnaXN0cnkgdGhhdCB0aGUgY2x1c3RlciBjYW4gcHVsbCBmcm9tIHdpdGhvdXQg" + + "YW4KZXhwbGljaXQgaW1hZ2UgcHVsbCBzZWNyZXQgKGZvciBleGFtcGxlLCBhIHJlZ2lzdHJ5IHdo" + + "ZXJlIHRoZSBub2RlIG9yIHdvcmtsb2FkIGlkZW50aXR5IGlzCmdyYW50ZWQgcHVsbCBhY2Nlc3Mg" + + "YXV0b21hdGljYWxseSksIHBvaW50IHRoZSBzdGFjayBhdCBpdCBhbmQgc2tpcCB0aGUgY3JlZGVu" + + "dGlhbCBzdGVwcwphYm92ZS4KCjEuIFBvaW50IHRoZSBzdGFjayBhdCB0aGUgbWlycm9yIGluIGBl" + + "bnZpcm9ubWVudHMvPGVudj4ueWFtbGA6CgogICBgYGB5YW1sCiAgIGdsb2JhbDoKICAgICBpbWFn" + + "ZToKICAgICAgIHJlZ2lzdHJ5OiA8eW91ci1yZWdpc3RyeT4gICAgICAgICAgICAjIGUuZy4gcmVn" + + "aXN0cnkuZXhhbXBsZS5jb20KICAgICAgIHJlcG9zaXRvcnk6IDxtaXJyb3Itc3ViLXBhdGg+CiAg" + + "ICAgaGVsbToKICAgICAgIHNvdXJjZXM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBv" + + "bmx5IGlmIHlvdSBhbHNvIG1pcnJvcmVkIHRoZSBoZWxtIGNoYXJ0cwogICAgICAgICByZWdpc3Ry" + + "eTogPHlvdXItcmVnaXN0cnk+CiAgICAgICAgIHJlcG9zaXRvcnk6IDxtaXJyb3Itc3ViLXBhdGg+" + + "CiAgIGBgYAoKICAgPiBUaGUgbWFuaWZlc3QgaGFzIGEgbWl4IG9mIE9DSSBhbmQgbm9uLU9DSSBh" + + "cnRpZmFjdHMsIHNvIGNvbnZlcnQgbm9uLU9DSSBjaGFydHMgYmVmb3JlCiAgID4gbWlycm9yaW5n" + + "LiBDb250YWluZXIgaW1hZ2VzIChgbnZjci5pby8uLi5gKSBhcmUgYWxyZWFkeSBPQ0kgYW5kIG1p" + + "cnJvciBhcy1pcy4gU29tZSBIZWxtCiAgID4gY2hhcnRzLCB0aG91Z2gsIGFyZSBwdWJsaXNoZWQg" + + "dG8gYW4gYGh0dHBzOi8vYCBIZWxtIHJlcG9zaXRvcnkgKGZvciBleGFtcGxlCiAgID4gYGhlbG0u" + + "bmdjLm52aWRpYS5jb21gKS4gVGhvc2UgYXJlIG5vdCBPQ0kgYW5kIGNhbm5vdCBiZSByZXNvbHZl" + + "ZCBieSBgZ2xvYmFsLmhlbG0uc291cmNlc2AKICAgPiAoT0NJKSBvciBtaXJyb3JlZCBkaXJlY3Rs" + + "eS4gQmVmb3JlIHBvaW50aW5nIHRoZSBzdGFjayBhdCB5b3VyIG1pcnJvciwgY29udmVydCBlYWNo" + + "CiAgID4gYGh0dHBzOi8vYCBjaGFydCB0byBPQ0k6IGBoZWxtIHJlcG8gYWRkYC9gaGVsbSBwdWxs" + + "YCB0aGUgYC50Z3pgLCB0aGVuCiAgID4gYGhlbG0gcHVzaCA8Y2hhcnQ+LnRneiBvY2k6Ly88eW91" + + "ci1yZWdpc3RyeT4vPG1pcnJvci1zdWItcGF0aD5gLiBPbmx5IE9DSSBjaGFydHMgY2FuIGxpdmUK" + + "ICAgPiB1bmRlciBgZ2xvYmFsLmhlbG0uc291cmNlc2AuCgoyLiBTa2lwIHRoZSBjcmVkZW50aWFs" + + "IHN0ZXBzIGFib3ZlLiBXaGVuIHRoZSBjbHVzdGVyIGF1dGhlbnRpY2F0ZXMgdG8gdGhlIHJlZ2lz" + + "dHJ5CiAgIGF1dG9tYXRpY2FsbHkgKHRoZSBub2RlIG9yIHdvcmtsb2FkIGlkZW50aXR5IGhhcyBw" + + "dWxsIGFjY2VzcyksIHRoZSBwdWxsIG5lZWRzIG5vCiAgIEt1YmVybmV0ZXMgc2VjcmV0LCBzbyB5" + + "b3UgZG8gbm90IG5lZWQ6IHRoZSBwZXItbmFtZXNwYWNlIGBudmNyLWNyZWRzYCBmcm9tIHN0ZXAg" + + "MQogICAoc3RpbGwgY3JlYXRlIHRoZSBuYW1lc3BhY2VzLCBqdXN0IG5vdCB0aGUgc2VjcmV0KSwg" + + "dGhlIGBnbG9iYWwuaW1hZ2VQdWxsU2VjcmV0c2AgZW50cnksCiAgIG9yIHRoZSBgZG9ja2VyIGxv" + + "Z2luYC9gaGVsbSByZWdpc3RyeSBsb2dpbiBudmNyLmlvYCBmcm9tIHN0ZXAgMi4KCiAgID4gT25l" + + "IHJlc2lkdWFsIGNyZWRlbnRpYWw6IG52Y2YtYXBpIHN0aWxsIHZhbGlkYXRlcyB0aGUgdXNlciBm" + + "dW5jdGlvbiBpbWFnZSBhdAogICA+IGBmdW5jdGlvbiBjcmVhdGVgIHZpYSB0aGUgYWNjb3VudCBy" + + "ZWdpc3RyeSBjcmVkZW50aWFsLCBzbyB0aGF0IGNyZWRlbnRpYWwgbXVzdCBwb2ludCBhdAogICA+" + + "IHdoaWNoZXZlciByZWdpc3RyeSBob2xkcyB0aGUgdXNlciBpbWFnZSAoc2V0IGl0IHRvIHlvdXIg" + + "bWlycm9yIGlmIHRoZSBpbWFnZSBpcyBtaXJyb3JlZAogICA+IHRoZXJlKS4KCiMjIyAzLiBTZXQg" + + "dGhlIHJvdXRlIGRvbWFpbgoKYGdsb2JhbC5kb21haW5gIHNldHMgdGhlIGhvc3RuYW1lIHN1ZmZp" + + "eCBmb3Igcm91dGVzIHN1Y2ggYXMgYGFwaS48ZG9tYWluPmAuIEl0IGRvZXMgbm90IGNvbmZpZ3Vy" + + "ZSB0aGUgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxhbmNlci4gUXVlcnkgdGhlIGV4YWN0IGV4aXN0" + + "aW5nIEdhdGV3YXk6CgpgYGBiYXNoCkdBVEVXQVlfQUREUkVTUz0kKGt1YmVjdGwgZ2V0IGdhdGV3" + + "YXkgPGdhdGV3YXktbmFtZT4gLW4gPGdhdGV3YXktbmFtZXNwYWNlPiAtbyBqc29ucGF0aD0ney5z" + + "dGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScpCnRlc3QgLW4gIiRHQVRFV0FZX0FERFJFU1MiCmBg" + + "YAoKVGhlIGFkZHJlc3MgbWF5IGJlIGEgaG9zdG5hbWUgb3IgSVAuIENsb3VkIHByb3ZpZGVyIGFu" + + "ZCBHYXRld2F5IGNvbmZpZ3VyYXRpb24gZGV0ZXJtaW5lIHRoZSBsb2FkIGJhbGFuY2VyIHR5cGUg" + + "YW5kIGFkZHJlc3MgZm9ybWF0LiBUaGUgc2VsZi1tYW5hZ2VkIHN0YWNrIGRvZXMgbm90IHNlbGVj" + + "dCBlaXRoZXIuCgpGb3IgdGVtcG9yYXJ5IHRlc3Rpbmcgd2l0aG91dCBETlMsIHVzZSBhIHN0YWJs" + + "ZSByZXNlcnZlZCBzdWZmaXggc3VjaCBhcyBgZ2xvYmFsLmRvbWFpbjogIm52Y2YudGVzdCJgLCBj" + + "b25uZWN0IHRvIGBHQVRFV0FZX0FERFJFU1NgLCBhbmQgc2VuZCBgSG9zdDogYXBpLm52Y2YudGVz" + + "dGAuIEZvciBwcm9kdWN0aW9uLCB1c2UgeW91ciBiYXNlIEROUyBkb21haW4gYW5kIHBvaW50IGl0" + + "cyByb3V0ZSByZWNvcmRzIHRvIGBHQVRFV0FZX0FERFJFU1NgLiBJZiB0aGUgZW5kcG9pbnQgbGF0" + + "ZXIgY2hhbmdlcywga2VlcCBgZ2xvYmFsLmRvbWFpbmAgc3RhYmxlIGFuZCB1cGRhdGUgb25seSBE" + + "TlMgb3IgdGhlIGNsaWVudCBkZXN0aW5hdGlvbi4gU2VlIEV4YW1wbGUgNCBpbiBbZXhhbXBsZXMu" + + "bWRdKGV4YW1wbGVzLm1kKS4KCiMjIyA0LiBQcmV2aWV3IGFuZCBkZXBsb3kKCmBgYGJhc2gKSEVM" + + "TUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgdGVtcGxhdGUgICAjIFByZXZpZXcgcmVuZGVy" + + "ZWQgbWFuaWZlc3RzCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIHN5bmMgICAgICAg" + + "IyBEZXBsb3kKYGBgCgo+IFNldCBCT1RIIENhc3NhbmRyYSBwYXNzd29yZHMgaW4gdGhlIHNlY3Jl" + + "dHMgZmlsZS4gVGhlIHNlY3JldHMgZmlsZSBkb2N1bWVudHMKPiBgREVGQVVMVF9DQVNTQU5EUkFf" + + "UEFTU1dPUkRgLCBidXQgdGhlIGNhc3NhbmRyYSBjaGFydCBoYXMgYSBzZWNvbmQgY3JlZGVudGlh" + + "bCwKPiBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgLCB0aGF0IGRlZmF1bHRzIHRvIGBj" + + "aEBuZzNtM2AuIElmIHlvdSBzZXQgb25seQo+IGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAs" + + "IHRoZSBzZXJ2aWNlIHJvbGUga2VlcHMgdGhhdCBkZWZhdWx0IGFuZCBldmVyeSBEQi1iYWNrZWQK" + + "PiBzZXJ2aWNlIGNyYXNoLWxvb3BzIHdpdGggYEJhZCBjcmVkZW50aWFsc2Agb25jZSBpdCB0cmll" + + "cyB0byBhdXRoZW50aWNhdGUuIFNldAo+IGBjYXNzYW5kcmEuc2VydmljZVJvbGVQYXNzd29yZGAg" + + "dG8gdGhlIHNhbWUgdmFsdWUgYXMgYERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYC4KCiMjIyA1" + + "LiBEZXBsb3ltZW50IHBoYXNlcwoKSGVsbWZpbGUgZGVwbG95cyBpbiBvcmRlciB3aXRoIGRlcGVu" + + "ZGVuY2llczoKCnwgUGhhc2UgfCBTZWxlY3RvciB8IFNlcnZpY2VzIHwgV2FpdCB0aW1lIHwKfC0t" + + "LS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS0tfAp8IDEgfCBgcmVsZWFzZS1n" + + "cm91cD1kZXBlbmRlbmNpZXNgIHwgTkFUUywgT3BlbkJhbywgQ2Fzc2FuZHJhIHwgNS0xMCBtaW4g" + + "fAp8IDIgfCBgcmVsZWFzZS1ncm91cD1zZXJ2aWNlc2AgfCBBUEksIFNJUywgRVNTLCBpbnZvY2F0" + + "aW9uLCBncnBjLXByb3h5LCBub3RhcnksIGFwaS1rZXlzLCBvcHRpb25hbCBMTE0gZ2F0ZXdheS9y" + + "b3V0ZXIsIG9wdGlvbmFsIFZhbml0eSBHYXRld2F5LCBOVkNGIFVJIHdoZW4gdGhlIHN0YWNrIHBh" + + "Y2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uIHwgNS0xMCBtaW4gfAp8IDMgfCBgcmVsZWFzZS1ncm91" + + "cD1pbmdyZXNzYCB8IEdhdGV3YXkgcm91dGVzIHwgMS0yIG1pbiB8CnwgNCB8IGByZWxlYXNlLWdy" + + "b3VwPW9ic2VydmFiaWxpdHlgIHwgT2JzZXJ2YWJpbGl0eSBzdGFjayAoaWYgZW5hYmxlZCkgfCAx" + + "LTIgbWluIHwKCk1vbml0b3IgaW4gYSBzZXBhcmF0ZSB0ZXJtaW5hbDoKCmBgYGJhc2gKa3ViZWN0" + + "bCBnZXQgcG9kcyAtQSAtdwpgYGAKCiMjIyA2LiBFbmFibGUgVmFuaXR5IEdhdGV3YXkgKG9wdGlv" + + "bmFsKQoKVmFuaXR5IEdhdGV3YXkgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBhbmQgaXMgb25seSBu" + + "ZWVkZWQgZm9yIGN1c3RvbWVyLWZhY2luZwpob3N0bmFtZXMgb3IgcGF0aCBtYXBwaW5ncyBpbiBm" + + "cm9udCBvZiB0aGUgc3RhbmRhcmQgTlZDRiBBUEkgYW5kIGludm9jYXRpb24Kcm91dGVzLiBJdCBp" + + "cyBhdmFpbGFibGUgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhlIFZhbml0" + + "eSBHYXRld2F5CmFkZG9uLiBJZiB0aGUgZXh0cmFjdGVkIHN0YWNrIHBhY2thZ2UgZG9lcyBub3Qg" + + "Y29udGFpbiBhIGB2YW5pdHktZ2F0ZXdheWAKcmVsZWFzZSBhbmQgYHZhbml0eUdhdGV3YXlgIHJv" + + "dXRlIHZhbHVlcywgc2tpcCB0aGVzZSBjb21tYW5kcyBhbmQgdXNlIGEgbmV3ZXIKc3RhY2sgcGFj" + + "a2FnZSB0aGF0IGluY2x1ZGVzIHRoZW0uCgpJZiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0" + + "aGUgYWRkb24sIGVuYWJsZSBpdCBpbgpgZW52aXJvbm1lbnRzLzxlbnYtbmFtZT4ueWFtbGA6Cgpg" + + "YGB5YW1sCmFkZG9uczoKICB2YW5pdHlHYXRld2F5OgogICAgZW5hYmxlZDogdHJ1ZQogICAgbWFw" + + "cGluZ0NvbmZpZzoge30KYGBgCgpUaGUgZGVmYXVsdCByb3V0ZSBob3N0IGlzIGB2YW5pdHkuPGRv" + + "bWFpbj5gIGFuZCB0aGUgYmFja2VuZCBpcwpgdmFuaXR5LWdhdGV3YXkubnZjZjo4MDgwYC4gUHV0" + + "IGRlcGxveW1lbnQtc3BlY2lmaWMgaG9zdCBhbmQgcGF0aCBtYXBwaW5ncyB1bmRlcgpgYWRkb25z" + + "LnZhbml0eUdhdGV3YXkubWFwcGluZ0NvbmZpZ2AuIElmIHlvdSBuZWVkIGN1c3RvbSB2YW5pdHkg" + + "aG9zdHMgaW5zdGVhZCBvZgpgdmFuaXR5Ljxkb21haW4+YCwgdXNlIHRoZSByb3V0ZSBob3N0bmFt" + + "ZSBvdmVycmlkZXMgc3VwcG9ydGVkIGJ5IHRoZSBzdGFjawpwYWNrYWdlIGFuZCBjcmVhdGUgbWF0" + + "Y2hpbmcgRE5TIHJlY29yZHMuCgpBZnRlciBjb25maXJtaW5nIHRoZSBwYWNrYWdlIGluY2x1ZGVz" + + "IHRoZSBgdmFuaXR5LWdhdGV3YXlgIHJlbGVhc2UsIHByZXZpZXcgYW5kCmFwcGx5IHRoZSBzZXJ2" + + "aWNlIGFuZCByb3V0ZToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUg" + + "LS1zZWxlY3RvciBuYW1lPXZhbml0eS1nYXRld2F5IHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08ZW52" + + "LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT12YW5pdHktZ2F0ZXdheSBzeW5jCkhFTE1G" + + "SUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1pbmdy" + + "ZXNzIHN5bmMKYGBgCgpWZXJpZnkgdGhlIHJvdXRlIG9ubHkgd2hlbiB0aGUgYWRkb24gaXMgcHJl" + + "c2VudCBhbmQgZW5hYmxlZDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgZGVwbG95LHN2YyAtbiBudmNm" + + "IC1sIGFwcC5rdWJlcm5ldGVzLmlvL25hbWU9dmFuaXR5LWdhdGV3YXkKa3ViZWN0bCBnZXQgaHR0" + + "cHJvdXRlIC1BIHwgZ3JlcCAtaSB2YW5pdHkKY3VybCAtSCAiSG9zdDogdmFuaXR5Ljxkb21haW4+" + + "IiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+L2hlYWx0aCIKYGBgCgpEbyBub3QgZW5hYmxlIFZh" + + "bml0eSBHYXRld2F5IGZvciBzdGFuZGFyZCBBUEksIEFQSSBLZXlzLCBpbnZvY2F0aW9uLCBMTE0K" + + "aW52b2NhdGlvbiwgb3IgZ1JQQyB0cmFmZmljLiBUaG9zZSByb3V0ZXMgYXJlIHByb3ZpZGVkIGJ5" + + "IHRoZSBiYXNlIGdhdGV3YXkKcm91dGVzLgoKIyMjIDcuIEVuYWJsZSBOVkNGIFVJIChvcHRpb25h" + + "bCkKCk5WQ0YgVUkgaXMgYW4gb3B0aW9uYWwsIGN1c3RvbWVyLWZhY2luZyBhZG1pbi1wYW5lbCBV" + + "SS4gSXQgaXMgZGlzYWJsZWQgYnkKZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sg" + + "cGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBOVkNGIFVJIGFkZG9uLiBJZgp5b3VyIGV4dHJhY3Rl" + + "ZCBzdGFjayBwYWNrYWdlIGRvZXMgbm90IGNvbnRhaW4gYSBgbnZjZi11aWAgcmVsZWFzZSBhbmQg" + + "YG52Y2ZVaWAKcm91dGUgdmFsdWVzLCBza2lwIHRoaXMgc2VjdGlvbi4gVGhlIE5WQ0YgVUkgYWRt" + + "aW4gcGFuZWwgaXMgY3VycmVudGx5CnVuYXV0aGVudGljYXRlZDsgZG8gbm90IGV4cG9zZSBpdCB0" + + "byB0aGUgcHVibGljIGludGVybmV0LgoKRm9yIGVuYWJsZW1lbnQsIG5hbWVzcGFjZSBhbmQgcHVs" + + "bCBzZWNyZXQgc2V0dXAsIGFwcGx5LCBhbmQgdmVyaWZpY2F0aW9uIHN0ZXBzLApzZWUgW05WQ0Yg" + + "VUkgQWRkb25dKHJlZmVyZW5jZXMvbnZjZi11aS1hZGRvbi5tZCkuCgojIyMgOC4gSW5zdGFsbCB0" + + "aGUgc2VwYXJhdGUgY29tcHV0ZS1wbGFuZSBzdGFjawoKVGhlIGNvbnRyb2wtcGxhbmUgc3RhY2sg" + + "ZG9lcyBub3QgaW5zdGFsbCBjb21wdXRlLXBsYW5lIGNvbXBvbmVudHMuIEFmdGVyIGl0IGlzIGhl" + + "YWx0aHksIGNob29zZSBleGFjdGx5IG9uZSBjb21wdXRlLXBsYW5lIGhhbmRvZmY6CgotIEhlbG1m" + + "aWxlIHZhbHVlcyBmbG93OiBhdXRob3Igc2VwYXJhdGUgZW52aXJvbm1lbnQgZmlsZXMsIHRoZW4g" + + "cmVnaXN0ZXIgYW5kCiAgaW5zdGFsbCB3aXRoIHRoZSBjb21wdXRlLXBsYW5lIE1ha2VmaWxlLgot" + + "IENMSSBwcm9maWxlIGZsb3c6IHVzZSB0aGUgcHJvZmlsZSBnZW5lcmF0ZWQgYnkgdGhlIENMSSBj" + + "b250cm9sLXBsYW5lIGluc3RhbGwsCiAgdGhlbiBydW4gdGhlIGNvbXBsZXRlIENMSSByZWdpc3Rl" + + "ciBhbmQgaW5zdGFsbCBjb21tYW5kcy4KCkRvIG5vdCBtaXggdGhlc2UgaGFuZG9mZnMuIEZvbGxv" + + "dyBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1w" + + "bGFuZS1pbnN0YWxsYXRpb24ubWQpCmZvciBjb21tYW5kcywgRUtTIHJvdXRpbmcsIHB1bGwgc2Vj" + + "cmV0cywgdmVyaWZpY2F0aW9uLCBhbmQgdGVhcmRvd24gb3JkZXIuCgojIyBDbGVhbiBUZWFyZG93" + + "bgoKRGVzdHJveSBldmVyeSBjb21wdXRlIHBsYW5lIGJlZm9yZSB0aGUgY29udHJvbCBwbGFuZSwg" + + "dXNpbmcgdGhlIHRlYXJkb3duIGZvcgp0aGUgc2FtZSBoYW5kb2ZmOyBzZWUgW1NwbGl0IENvbXB1" + + "dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0" + + "aW9uLm1kI3RlYXJkb3duKS4KClNjb3BlOiBPbmx5IGRlc3Ryb3kgcmVsZWFzZXMgbWFuYWdlZCBi" + + "eSB0aGlzIGNvbnRyb2wtcGxhbmUgaGVsbWZpbGUgc3RhY2suIFRoZSBOVkNGIHJlbGVhc2VzIGFy" + + "ZTogYG5hdHNgLCBgb3BlbmJhby1zZXJ2ZXJgLCBgY2Fzc2FuZHJhYCwgYGFwaS1rZXlzYCwgYHNp" + + "c2AsIGBhcGlgLCBgaW52b2NhdGlvbi1zZXJ2aWNlYCwgYGdycGMtcHJveHlgLCBgZXNzLWFwaWAs" + + "IGBub3Rhcnktc2VydmljZWAsIG9wdGlvbmFsIGB2YW5pdHktZ2F0ZXdheWAsIGBudmNmLXVpYCwg" + + "YGFkbWluLWlzc3Vlci1wcm94eWAsIGFuZCBgaW5ncmVzc2A7IGBjZXJ0LW1hbmFnZXJgIGlzIGlu" + + "Y2x1ZGVkIG9ubHkgd2hlbiBgY2VydE1hbmFnZXIuZW5hYmxlZDogdHJ1ZWAuIFRoZSBjb250cm9s" + + "LXBsYW5lIG5hbWVzcGFjZSBpbnZlbnRvcnkgYWxzbyBpbmNsdWRlcyBgY2VydC1tYW5hZ2VyYCwg" + + "YnV0IGRlZmF1bHQgbmFtZXNwYWNlIGNsZWFudXAgcHJlc2VydmVzIGl0LiBOYW1lc3BhY2UgcHJl" + + "c2VydmF0aW9uIGRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEV4dGVybmFsIGNl" + + "cnQtbWFuYWdlciBtdXN0IHVzZSBgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgOyBvdGhlcndp" + + "c2UgSGVsbWZpbGUgdHJlYXRzIHRoZSByZWxlYXNlIGFzIHN0YWNrLW1hbmFnZWQuIERvIG5vdCBk" + + "ZWxldGUgb3RoZXIgaGVsbSByZWxlYXNlcyBvciBuYW1lc3BhY2VzIG9uIHRoZSBjbHVzdGVyLgoK" + + "QmVmb3JlIGNvbnRyb2wtcGxhbmUgZGVzdHJveSwgaWRlbnRpZnkgd2hldGhlciBjZXJ0LW1hbmFn" + + "ZXIgaXMgZXh0ZXJuYWwuIEZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZm" + + "ZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVkOiBmYWxzZWAgYW5kIGFib3J0IGlmIGl0IGlzIHRy" + + "dWUuIEZvciBhbiBpbnRlbmRlZCBzdGFjay1tYW5hZ2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUg" + + "YGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IHRydWVgLCB2ZXJpZnkgbWF0Y2hpbmcgc3RhY2sgSGVsbSBy" + + "ZWxlYXNlIG1ldGFkYXRhIGFuZCBhYm9ydCBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQgZXZpZGVu" + + "Y2UuIFByZXNlcnZlIHRoZSBuYW1lc3BhY2UgYnkgZGVmYXVsdDsgb25seSBwbGFuIGl0cyByZW1v" + + "dmFsIGFmdGVyIHZlcmlmeWluZyBuYW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQgZ2V0dGluZyBleHBs" + + "aWNpdCBjb25maXJtYXRpb24uCgojIyMgU3RhbmRhcmQgdGVhcmRvd24KClJ1biBmcm9tIGluc2lk" + + "ZSB0aGUgYG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrL2AgZGlyZWN0b3J5OgoKYGBgYmFzaApIRUxN" + + "RklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSBkZXN0cm95CmBgYAoKIyMjIERlbGV0ZSBuYW1l" + + "c3BhY2VzCgpgYGBiYXNoCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52" + + "Y2YgYXBpLWtleXMgZXNzIHNpcyBudmNmLXVpIHZhdWx0LXN5c3RlbTsgZG8KICBrdWJlY3RsIGRl" + + "bGV0ZSBuYW1lc3BhY2UgIiRucyIgLS1pZ25vcmUtbm90LWZvdW5kCmRvbmUKYGBgCgojIyMgVmVy" + + "aWZ5IGNsZWFuCgpgYGBiYXNoCmt1YmVjdGwgZ2V0IG5zIHwgZ3JlcCAtRSAnKGNhc3NhbmRyYXxu" + + "YXRzfHZhdWx0fG52Y2Z8YXBpLWtleXN8ZXNzfHNpcyknCiMgU2hvdWxkIHJldHVybiBlbXB0eQpg" + + "YGAKCiMjIE92ZXJyaWRpbmcgSGVsbSBDaGFydCBWYWx1ZXMKCiMjIyBFbnZpcm9ubWVudCBmaWxl" + + "IChsaW1pdGVkKQoKV29ya3Mgb25seSBmb3Iga2V5cyB0aGF0IGBnbG9iYWwueWFtbC5nb3RtcGxg" + + "IHByb3BhZ2F0ZXMgKGUuZy4sIGBjYXNzYW5kcmEucmVwbGljYUNvdW50YCwgYGdsb2JhbC5zdG9y" + + "YWdlQ2xhc3NgLCBgZ2xvYmFsLmltYWdlYCkuCgojIyMgUmVsZWFzZSB2YWx1ZXMgYmxvY2sgKGFu" + + "eSBjaGFydCB2YWx1ZSkKCkVkaXQgdGhlIHJlbGVhc2UgaW4gYGhlbG1maWxlLmQvKi55YW1sLmdv" + + "dG1wbGAgYW5kIGFkZCBhIGB2YWx1ZXM6YCBibG9jay4gSW4gdGhlIGV4YW1wbGVzIGJlbG93LCBg" + + "PHByaXZhdGUtdmFsdWVzPmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0" + + "aGUgaGVsbWZpbGUgc3RhY2sgcm9vdC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNzYW5kcmEKICB2ZXJz" + + "aW9uOiAwLjguMAogIGNvbmRpdGlvbjogY2Fzc2FuZHJhLmVuYWJsZWQKICBuYW1lc3BhY2U6IGNh" + + "c3NhbmRyYS1zeXN0ZW0KICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2dsb2Jh" + + "bC55YW1sLmdvdG1wbAogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52ICJI" + + "RUxNRklMRV9FTlYiIH19LXNlY3JldHMueWFtbAogICAgLSBjYXNzYW5kcmE6CiAgICAgICAgcmVz" + + "b3VyY2VzOgogICAgICAgICAgbGltaXRzOgogICAgICAgICAgICBjcHU6ICI4IgogICAgICAgICAg" + + "ICBtZW1vcnk6IDgxOTJNaQogICAgICAgICAgcmVxdWVzdHM6CiAgICAgICAgICAgIGNwdTogIjIi" + + "CiAgICAgICAgICAgIG1lbW9yeTogNDA5Nk1pCmBgYAoKWUFNTCBtZXJnZSBnb3RjaGE6IFdoZW4g" + + "YSByZWxlYXNlIHVzZXMgYDw8OiAqZGVwZW5kZW5jeWAgb3IgYGluaGVyaXRgLCBzcGVjaWZ5aW5n" + + "IGB2YWx1ZXM6YCByZXBsYWNlcyB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgbGlzdC4gWW91IG11c3Qg" + + "cmUtaW5jbHVkZSBgZ2xvYmFsLnlhbWwuZ290bXBsYCBhbmQgdGhlIHNlY3JldHMgZmlsZS4KCiMj" + + "IyBQcmV2aWV3IGFuZCBhcHBseSBhIHNpbmdsZSByZWxlYXNlCgpgYGBiYXNoCkhFTE1GSUxFX0VO" + + "Vj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlICAjIFBy" + + "ZXZpZXcKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5k" + + "cmEgc3luYyAgICAgICMgQXBwbHkKYGBgCgojIyBJbWFnZSBQdWxsIFNlY3JldHMKClRoZXJlIGFy" + + "ZSB0aHJlZSBkaXN0aW5jdCBjcmVkZW50aWFsIHR5cGVzLiBEbyBub3QgY29uZmxhdGUgdGhlbSwg" + + "YW5kIG1pbmQgdGhlCmZvcm1hdCBydWxlIGJlbG93ICh0d28gb2YgdGhlbSBmYWlsIGV2ZW4gd2l0" + + "aCB0aGUgY29ycmVjdCBrZXkgaWYgdGhlIGZvcm1hdCBpcyB3cm9uZyk6Cgp8IHwgQ29udHJvbCBQ" + + "bGFuZSBQdWxsIFNlY3JldHMgfCBBUEkgQm9vdHN0cmFwIFJlZ2lzdHJ5IENyZWRzIHwgU2lkZWNh" + + "ciBJbWFnZS1QdWxsIFNlY3JldCB8CnwtLS18LS0tfC0tLXwtLS18CnwgUHVycG9zZSB8IEs4cyBw" + + "dWxscyBOVkNGIHNlcnZpY2UgaW1hZ2VzIHwgbnZjZi1hcGkgdmFsaWRhdGVzIHRoZSB1c2VyIGZ1" + + "bmN0aW9uIGltYWdlIGF0IGBmdW5jdGlvbiBjcmVhdGVgIHwgbnZjZi1hcGkgcHVsbHMgdGhlIHBs" + + "YXRmb3JtIHNpZGVjYXJzIGluamVjdGVkIGludG8gZXZlcnkgd29ya2VyIHBvZCB8CnwgV2hlcmUg" + + "fCBLOHMgYGRvY2tlci1yZWdpc3RyeWAgU2VjcmV0cyArIEt5dmVybm8gQ2x1c3RlclBvbGljeSB8" + + "IGA8cHJpdmF0ZS12YWx1ZXM+LzxlbnY+LXNlY3JldHMueWFtbGAgKGFjY291bnQtYm9vdHN0cmFw" + + "KSB8IGBOVkNGX0FQSV9TSURFQ0FSU19JTUFHRV9QVUxMX1NFQ1JFVGAgaW4gYDxlbnY+LXNlY3Jl" + + "dHMueWFtbGAgLT4gT3BlbkJhbyBgc2VydmljZXMvbnZjZi1hcGkva3Yvc2lkZWNhcnMvaW1hZ2Ut" + + "cHVsbC1zZWNyZXRgIChmaWVsZCBgc2VjcmV0YCkgfAp8IEZvcm1hdCB8IHN0YW5kYXJkIGAuZG9j" + + "a2VyY29uZmlnanNvbmAgKGt1YmVjdGwgYnVpbGRzIGl0IGZvciB5b3UpIHwgYGJhc2U2NCgiJG9h" + + "dXRodG9rZW46PGtleT4iKWAgfCBgYmFzZTY0KCIkb2F1dGh0b2tlbjo8a2V5PiIpYCB8Cgo+IE5v" + + "dGU6IHRoZSBhY2NvdW50LWJvb3RzdHJhcCBjcmVkIGFuZCB0aGUgc2lkZWNhciBzZWNyZXQgYXJl" + + "IE5PVCBhCj4gZG9ja2VyY29uZmlnanNvbi4gVGhlIHNlY3JldHMgdGVtcGxhdGUgc2hpcHMgdGhl" + + "IHBsYWNlaG9sZGVyCj4gYFJFUExBQ0VfV0lUSF9CQVNFNjRfRE9DS0VSX0NSRURFTlRJQUxgLCB3" + + "aGljaCByZWFkcyBhcyAiYmFzZTY0IG9mIGEgZG9ja2VyY29uZmlnanNvbi4iCj4gSXQgaXNuJ3Qu" + + "IEJvdGggdmFsdWVzIGFyZSBjb25zdW1lZCBhcyBhIHJhdyBkb2NrZXIgYGF1dGhgIHN0cmluZzog" + + "bnZjZi1hcGkgdGFrZXMgdGhlCj4gdmFsdWUgdmVyYmF0aW0gYW5kIGRyb3BzIGl0IGludG8gdGhl" + + "IGBhdXRoYCBmaWVsZCBvZiB0aGUgZG9ja2VyY29uZmlnIGl0IGJ1aWxkcy4gU28gdGhlCj4gdmFs" + + "dWUgbXVzdCBiZSBgYmFzZTY0KCIkb2F1dGh0b2tlbjo8a2V5PiIpYCwgZS5nLiBgcHJpbnRmICck" + + "b2F1dGh0b2tlbjolcycgIiRLRVkiIHwgb3BlbnNzbCBiYXNlNjQgLUFgLAo+IG5vdCBgYmFzZTY0" + + "KDxkb2NrZXJjb25maWdqc29uPilgLgo+Cj4gLSBXcm9uZyBhY2NvdW50LWJvb3RzdHJhcCB2YWx1" + + "ZTogYGZ1bmN0aW9uIGNyZWF0ZWAgcmV0dXJucwo+ICAgIGA0MDAgIm11c3QgYmUgYmFzZTY0IGVu" + + "Y29kZWQgdXNlcm5hbWU6cGFzc3dvcmQgZm9ybWF0ImAuCj4gLSBXcm9uZyBzaWRlY2FyIHZhbHVl" + + "OiBldmVyeSB3b3JrZXIncyBzaWRlY2FyIHB1bGwgZ2V0cyBhIG1hbGZvcm1lZCBjcmVkZW50aWFs" + + "IGFuZAo+ICAgIGA0MDNgcywgcmVnYXJkbGVzcyBvZiB3aGljaCBrZXkgaXMgaW5zaWRlLiBUaGUg" + + "c3ltcHRvbSBsb29rcyBsaWtlIGEgYmFkIG9yIHdyb25nLW9yZwo+ICAgIGtleSwgYnV0IHRoZSBr" + + "ZXkgaXMgZmluZSBhbmQgdGhlIGVuY29kaW5nIGlzIHRoZSBidWcuIFRvIHJlcGFpciBhbiBhbHJl" + + "YWR5LWluc3RhbGxlZAo+ICAgIHN0YWNrIHdpdGhvdXQgYSBmdWxsIHJlLXN5bmM6Cj4KPiAgICBg" + + "YGBiYXNoCj4gICAgQVVUSD0kKHByaW50ZiAnJG9hdXRodG9rZW46JXMnICIkS0VZIiB8IG9wZW5z" + + "c2wgYmFzZTY0IC1BKQo+ICAgIGJhbyBrdiBwdXQgc2VydmljZXMvbnZjZi1hcGkva3Yvc2lkZWNh" + + "cnMvaW1hZ2UtcHVsbC1zZWNyZXQgc2VjcmV0PSIkQVVUSCIKPiAgICAjIGlmIE5WSURJQSBDbG91" + + "ZCBUYXNrcyBpcyBlbmFibGVkLCByZXBlYXQgZm9yIHNlcnZpY2VzL252Y3QtYXBpL2t2L3NpZGVj" + + "YXJzL2ltYWdlLXB1bGwtc2VjcmV0Cj4gICAga3ViZWN0bCByb2xsb3V0IHJlc3RhcnQgLW4gbnZj" + + "ZiBkZXBsb3kvbnZjZi1hcGkgICAjIHBpY2tzIHVwIHRoZSBuZXcgc2lkZWNhciBjcmVkCj4gICAg" + + "YGBgCj4KPiBOb3RlIChtdWx0aS1vcmcpOiB3aGVuIHB1bGxpbmcgZnJvbSBOR0MgKG5vdCBhIG1p" + + "cnJvciksIHRoZSB1c2VyIGZ1bmN0aW9uIGltYWdlIGFuZAo+IHRoZSBwbGF0Zm9ybSBzaWRlY2Fy" + + "cyBvZnRlbiBsaXZlIGluIGRpZmZlcmVudCBudmNyLmlvIG9yZ3MsIGVhY2ggbmVlZGluZyBhIGRp" + + "ZmZlcmVudAo+IGtleSwgc28gdGhlIGFjY291bnQtYm9vdHN0cmFwIGNyZWQgKGZ1bmN0aW9uIGlt" + + "YWdlKSBhbmQgdGhlIHNpZGVjYXIgc2VjcmV0IChzaWRlY2FycykKPiBhcmUgZnJlcXVlbnRseSB0" + + "d28gZGlmZmVyZW50IGtleXMuIE1pcnJvcmluZyBldmVyeXRoaW5nIGludG8gYSBzaW5nbGUgcmVn" + + "aXN0cnkgdGhlCj4gY2x1c3RlciBhdXRoZW50aWNhdGVzIHRvIGF1dG9tYXRpY2FsbHkgY29sbGFw" + + "c2VzIHRoaXMgdG8gb25lIGNyZWRlbnRpYWwgcGF0aC4KCiMjIyBDb25maWd1cmluZyB3aXRoIEt5" + + "dmVybm8gKHJlY29tbWVuZGVkKQoKVXNlIGEgS3l2ZXJubyBtdXRhdGluZyBhZG1pc3Npb24gcG9s" + + "aWN5IHRvIGF1dG9tYXRpY2FsbHkgaW5qZWN0IGBpbWFnZVB1bGxTZWNyZXRzYCBpbnRvIGFsbCBw" + + "b2RzIGluIE5WQ0YgbmFtZXNwYWNlcy4gVGhpcyB3b3JrcyB1bmlmb3JtbHkgZm9yIGFsbCBjaGFy" + + "dHMgLS0gbm8gcGVyLWNoYXJ0IGNvbmZpZ3VyYXRpb24gb3IgaGVsbWZpbGUgbW9kaWZpY2F0aW9u" + + "cyBuZWVkZWQuCgpgYGBiYXNoCiMgMS4gSW5zdGFsbCBLeXZlcm5vCmhlbG0gcmVwbyBhZGQga3l2" + + "ZXJubyBodHRwczovL2t5dmVybm8uZ2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUK" + + "aGVsbSBpbnN0YWxsIGt5dmVybm8ga3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUt" + + "bmFtZXNwYWNlCgojIDIuIENyZWF0ZSBwdWxsIHNlY3JldCBpbiBlYWNoIG5hbWVzcGFjZQpleHBv" + + "cnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5h" + + "dHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2Vy" + + "OyBkbwogIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBc" + + "CiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9h" + + "dXRodG9rZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0t" + + "bmFtZXNwYWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwg" + + "YXBwbHkgLWYgLQpkb25lCgojIDMuIEFwcGx5IHRoZSBLeXZlcm5vIENsdXN0ZXJQb2xpY3kKa3Vi" + + "ZWN0bCBhcHBseSAtZiBreXZlcm5vLWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAKClRo" + + "ZSBwb2xpY3kgbXV0YXRlcyBldmVyeSBwb2QgYXQgYWRtaXNzaW9uIHRpbWUsIGFkZGluZyBgaW1h" + + "Z2VQdWxsU2VjcmV0czogW3tuYW1lOiBudmNyLWNyZWRzfV1gLiBWZXJpZnkgd2l0aDoKCmBgYGJh" + + "c2gKa3ViZWN0bCBnZXQgcG9kIC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gLW8ganNvbnBhdGg9" + + "J3suc3BlYy5pbWFnZVB1bGxTZWNyZXRzfScKIyBTaG91bGQgc2hvdzogW3sibmFtZSI6Im52Y3It" + + "Y3JlZHMifV0KYGBgCgpOb3QgbmVlZGVkIGlmIHVzaW5nIGEgQ1NQIGJ1aWx0LWluIGNyZWRlbnRp" + + "YWwgaGVscGVyIChlLmcuLCBFQ1Igd2l0aCBJQU0gbm9kZSByb2xlcykuCgpGb3IgdGhlIEt5dmVy" + + "bm8gcG9saWN5IFlBTUwgYW5kIHB1bGwgc2VjcmV0IGNyZWF0aW9uIHNjcmlwdCwgc2VlIFtyZWZl" + + "cmVuY2VzL3B1bGwtc2VjcmV0cy5tZF0ocmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWQpLgoKIyMg" + + "RGVidWdnaW5nCgojIyMgUXVpY2sgc3RhdHVzIGNoZWNrCgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBv" + + "ZHMgLUEgLW8gd2lkZSAgICAgICAgICAgICAgICAgICAgICAgICMgQWxsIHBvZHMKaGVsbSBsaXN0" + + "IC1BICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWxsIGhlbG0gcmVs" + + "ZWFzZXMKa3ViZWN0bCBnZXQgZXZlbnRzIC1uIDxucz4gLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFt" + + "cCcgICMgUmVjZW50IGV2ZW50cwpgYGAKCiMjIyBDb21tb24gZmFpbHVyZSBwYXR0ZXJucwoKfCBT" + + "eW1wdG9tIHwgQ2F1c2UgfCBGaXggfAp8LS0tLS0tLS0tfC0tLS0tLS18LS0tLS18CnwgYEltYWdl" + + "UHVsbEJhY2tPZmZgICsgYDQwMSBVbmF1dGhvcml6ZWRgIHwgTWlzc2luZyBvciB3cm9uZyBwdWxs" + + "IHNlY3JldCB8IENoZWNrIHNlY3JldCBleGlzdHMsIGNoZWNrIFNBIGhhcyBpbWFnZVB1bGxTZWNy" + + "ZXRzIHwKfCBgSW5pdDowLzFgIHN0dWNrIG9uIHNlcnZpY2UgcG9kcyB8IFZhdWx0LWFnZW50IHdh" + + "aXRpbmcgZm9yIE9wZW5CYW8gfCBDaGVjayBPcGVuQmFvIHBvZHMgKyBtaWdyYXRpb24gam9iIHN0" + + "YXR1cyB8CnwgYEluaXQ6MC8xYCArIGB2YXVsdC1hZ2VudC1pbml0YCBzaG93cyBgYXV0aC9qd3Qv" + + "bG9naW5gIC0+IGA0MDAgLi4uIG5vIGtub3duIGtleSBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkIHRo" + + "ZSB0b2tlbiBzaWduYXR1cmVgIHwgT3BlbkJhbyBKV1QgYXV0aCBjb25maWd1cmVkIHdpdGggYSBz" + + "dGF0aWMgcHVia2V5IGluc3RlYWQgb2YgdGhlIGNsdXN0ZXIncyBsaXZlIEpXS1MgLS0gdGhlIGJh" + + "c2UgZGVmYXVsdCBgb3BlbmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkOiBm" + + "YWxzZWAuIENvbW1vbiBvbiBBS1MgLyBhbnkgT0lEQy1pc3N1ZXIgY2x1c3RlciB8IFNldCBgb3Bl" + + "bmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkOiB0cnVlYCwgZGVsZXRlIGpv" + + "YiBgb3BlbmJhby1zZXJ2ZXItbWlncmF0aW9uc2AsIHJlLXN5bmMgYG9wZW5iYW8tc2VydmVyYC4g" + + "U2VlIFtyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZF0ocmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQpICJJ" + + "bml0OjAvMSBTdHVjayIgZml4ICM0LiB8CnwgYE9PTUtpbGxlZGAgb24gQ2Fzc2FuZHJhIHwgRGVm" + + "YXVsdCByZXNvdXJjZXMgdG9vIHNtYWxsIHwgT3ZlcnJpZGUgYGNhc3NhbmRyYS5yZXNvdXJjZXNg" + + "IHZpYSB2YWx1ZXMgYmxvY2sgfAp8IERCLWJhY2tlZCBzZXJ2aWNlcyBjcmFzaC1sb29wIGBCYWQg" + + "Y3JlZGVudGlhbHNgIGNvbm5lY3RpbmcgdG8gQ2Fzc2FuZHJhIHwgU2VjcmV0cyBmaWxlIHNldCBv" + + "bmx5IGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGA7IGBjYXNzYW5kcmEuc2VydmljZVJvbGVQ" + + "YXNzd29yZGAgc3RpbGwgZGVmYXVsdHMgdG8gYGNoQG5nM20zYCB8IFNldCBgY2Fzc2FuZHJhLnNl" + + "cnZpY2VSb2xlUGFzc3dvcmRgIGluIHRoZSBzZWNyZXRzIGZpbGUgZXF1YWwgdG8gYERFRkFVTFRf" + + "Q0FTU0FORFJBX1BBU1NXT1JEYCwgdGhlbiByZS1zeW5jIGNhc3NhbmRyYSArIHRoZSBEQi1iYWNr" + + "ZWQgc2VydmljZXMgfAp8IGBQZW5kaW5nYCBwb2RzIHwgTm9kZSBzZWxlY3RvciBtaXNtYXRjaCBv" + + "ciBubyBzdG9yYWdlIGNsYXNzIHwgYGt1YmVjdGwgZGVzY3JpYmUgcG9kYCwgY2hlY2sgbGFiZWxz" + + "IGFuZCBzdG9yYWdlIHwKfCBIZWxtIHJlbGVhc2UgaW4gYGZhaWxlZGAgc3RhdGUgfCBGaXJzdCBp" + + "bnN0YWxsIGZhaWxlZCBwYXJ0d2F5IHwgYGhlbG1maWxlIGRlc3Ryb3lgIHRoZSByZWxlYXNlLCB0" + + "aGVuIGBzeW5jYCBhZ2FpbiB8CnwgQWNjb3VudCBib290c3RyYXAgdGltZW91dCB8IFdyb25nIGJh" + + "c2U2NCBjcmVkZW50aWFscyBpbiBzZWNyZXRzIGZpbGUgfCBDaGVjayBga3ViZWN0bCBsb2dzIGpv" + + "Yi9udmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcCAtbiBudmNmYCB8CnwgZnVuY3Rpb24gLyBhY2Nv" + + "dW50IGNhbGxzIHJldHVybiBgNDA0IFVua25vd24gY2xpZW50X2lkYCB8IFRoZSBhY2NvdW50LWJv" + + "b3RzdHJhcCBwb3N0LWluc3RhbGwgaG9vayBuZXZlciByYW46IHRoZSBgYXBpYCByZWxlYXNlIGlu" + + "c3RhbGwgZmFpbGVkLCBvciB3YXMgcmVwYWlyZWQgd2l0aCBsaXZlIHBhdGNoZXMgaW5zdGVhZCBv" + + "ZiBhIGNsZWFuIHJlLXN5bmMsIHNvIHRoZSBob29rIChhbmQgdGhlIGFjY291bnQpIHdhcyBza2lw" + + "cGVkIHwgVmVyaWZ5IGFuZCByZS1ydW4gdGhlIGhvb2s7IHNlZSBbVmVyaWZ5IHRoZSBhY2NvdW50" + + "IGJvb3RzdHJhcCByYW5dKCN2ZXJpZnktdGhlLWFjY291bnQtYm9vdHN0cmFwLXJhbikgfAp8IFNl" + + "cnZpY2VzIGZhaWwgdG8gcmVhZCB2YXVsdCBzZWNyZXRzOyBgc2VjcmV0cy5qc29uYCBub3QgZm91" + + "bmQgfCBWYXVsdCBwYXRoIGhhcmRjb2RlZCB0byBgL2hvbWUvYXBwL3ZhdWx0L2AgaW4gYF9oZWxw" + + "ZXJzLnRwbGA7IHRoZSBydW50aW1lIHJlc29sdmVzIHRoZSBtb3VudGVkIHBhdGggcmVsYXRpdmUg" + + "dG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IGFuZCBkcm9wcyB0aGUgbGVhZGluZyBgL2AgfCBPdmVy" + + "cmlkZSBgcG9kQW5ub3RhdGlvbnNgIGFuZCBzZXQgYEpBVkFfVE9PTF9PUFRJT05TOiAiLUR1c2Vy" + + "LmRpcj0vImAgaW4gcmVsZWFzZSB2YWx1ZXMgfAp8IE5BVFMgY29ubmVjdGlvbiBmYWlscyBhdCBz" + + "dGFydHVwOyBwbGFjZW1lbnQgdGFnIG1pc21hdGNoIHwgTkFUUyBzZXJ2ZXIgdGFncyBoYXJkY29k" + + "ZWQgdG8gYGRjOm5jcGA7IGFwcCBkZXJpdmVzIHRhZyBmcm9tIGBBV1NfUkVHSU9OYCAoZS5nLiwg" + + "YHVzLWdvdi13ZXN0LTFgKSB8IFNldCBgQVdTX1JFR0lPTj1uY3BgIGFuZCBgTlZDRl9BV1NfUkVH" + + "SU9OPW5jcGAgaW4gZW52IGNvbmZpZyB8CgojIyMgVmVyaWZ5IHRoZSBhY2NvdW50IGJvb3RzdHJh" + + "cCByYW4KClRoZSBkZWZhdWx0IGFjY291bnQgaXMgY3JlYXRlZCBieSBhICoqYHBvc3QtaW5zdGFs" + + "bGAgaG9vayBvbiB0aGUgYGFwaWAgcmVsZWFzZSoqCihgam9iL252Y2YtYXBpLWFjY291bnQtYm9v" + + "dHN0cmFwYCBpbiBgbnZjZmApLiBCZWNhdXNlIGl0IGlzIGEgcG9zdC1pbnN0YWxsIGhvb2ssIGl0" + + "IG9ubHkKZmlyZXMgb24gYSBzdWNjZXNzZnVsIGBhcGlgIGluc3RhbGwuIElmIHRoYXQgaW5zdGFs" + + "bCBmYWlsZWQgYW5kIHlvdSByZXBhaXJlZCBpdCB3aXRoIGxpdmUKcGF0Y2hlcyAocmF0aGVyIHRo" + + "YW4gYSBjbGVhbiByZS1zeW5jKSwgdGhlIGhvb2sgbmV2ZXIgcnVucywgbm8gYWNjb3VudCBpcyBj" + + "cmVhdGVkLCBhbmQKZXZlcnkgc3Vic2VxdWVudCBmdW5jdGlvbi9hY2NvdW50IGNhbGwgcmV0dXJu" + + "cyBhIGNyeXB0aWMgYDQwNCBVbmtub3duIGNsaWVudF9pZGAgd2l0aApub3RoaW5nIG9idmlvdXNs" + + "eSB3cm9uZyBpbiB0aGUgcnVubmluZyBwb2RzLgoKVmVyaWZ5IGl0IHJhbiBhZnRlciB0aGUgZmly" + + "c3Qgc3luYzoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgam9iIC1uIG52Y2YgbnZjZi1hcGktYWNjb3Vu" + + "dC1ib290c3RyYXAgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5zdWNjZWVkZWR9JyAgICMgZXhw" + + "ZWN0IDEKYGBgCgpJZiB0aGUgam9iIGlzIGFic2VudCBvciBgMGAsIHJlLXJ1biBpdCBieSByZS1z" + + "eW5jaW5nIHRoZSBgYXBpYCByZWxlYXNlIHNvIHRoZSBob29rIGZpcmVzCmFnYWluIChkZWxldGUg" + + "dGhlIHByaW9yIGpvYiBmaXJzdCBpZiBpdCBsaW5nZXJzIGluIGEgY29tcGxldGVkL2ZhaWxlZCBz" + + "dGF0ZSBhbmQgYmxvY2tzIHRoZQpob29rKToKCmBgYGJhc2gKa3ViZWN0bCBkZWxldGUgam9iIC1u" + + "IG52Y2YgbnZjZi1hcGktYWNjb3VudC1ib290c3RyYXAgLS1pZ25vcmUtbm90LWZvdW5kCkhFTE1G" + + "SUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9YXBpIHN5bmMKa3ViZWN0bCBs" + + "b2dzIC1uIG52Y2Ygam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwICAgIyBjb25maXJtIHRo" + + "ZSBhY2NvdW50IHdhcyBjcmVhdGVkCmBgYAoKIyMgQWRkaXRpb25hbCBSZXNvdXJjZXMKCi0gSW5z" + + "dGFsbGF0aW9uOiBbZXhhbXBsZXMubWRdKGV4YW1wbGVzLm1kKSwgdGhlIFtDU1AgRW5kLXRvLUVu" + + "ZCBFeGFtcGxlXShodHRwczovL2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5k" + + "LXRvLWVuZC1leGFtcGxlKSwgYW5kIFtzcGxpdCBjb21wdXRlLXBsYW5lIHdvcmtmbG93c10ocmVm" + + "ZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkKLSBPcGVyYXRpb25zOiBbSGVs" + + "bWZpbGUgc3RydWN0dXJlXShyZWZlcmVuY2VzL2hlbG1maWxlLXN0cnVjdHVyZS5tZCksIFtwdWxs" + + "IHNlY3JldHNdKHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKSwgYW5kIFtkZWJ1Z2dpbmddKHJl" + + "ZmVyZW5jZXMvZGVidWdnaW5nLm1kKQoKQWZ0ZXIgZGVwbG95bWVudCwgdXNlIHRoZSBgbnZjZi1z" + + "ZWxmLW1hbmFnZWQtY2xpYCBza2lsbCB0byBjcmVhdGUgZnVuY3Rpb25zLCBjcmVhdGUgdGFza3Ms" + + "IG1hbmFnZSBBUEkga2V5cywgYW5kIGludm9rZSBlbmRwb2ludHMuClBLBwgRwxSTSWIAAEliAABQ" + + "SwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + + "bGxhdGlvbi9ldmFscy9ldmFscy5qc29uVVQFAAEAps4SWwogIHsKICAgICJpZCI6ICJHMS12YWxp" + + "ZGF0ZS10b29sLXZlcnNpb25zIiwKICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIHRoZSBOVkNGIHNl" + + "bGYtbWFuYWdlZCBzdGFjayBvbiBteSBBV1MgRUtTIGNsdXN0ZXIiLAogICAgImV4cGVjdGVkX3Nr" + + "aWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRo" + + "IjogIlRoZSBhZ2VudCdzIGZpcnN0IG9wZXJhdGlvbmFsIHN0ZXAgYWZ0ZXIgcmVhZGluZyB0aGUg" + + "c2tpbGwgd2FzIHRvIHZhbGlkYXRlIGFsbCByZXF1aXJlZCB0b29sIHZlcnNpb25zOiBoZWxtZmls" + + "ZSAobXVzdCBiZSAxLjEueCwgbm90IDEuMi4wKSwgaGVsbSAoPj0gMy4xMiksIGhlbG0tZGlmZiBw" + + "bHVnaW4gKD49IDMuMTEpLCBhbmQga3ViZWN0bCAoY2xpZW50IHdpdGhpbiAxIG1pbm9yIG9mIGNs" + + "dXN0ZXIpLiBJdCBkaWQgbm90IHByb2NlZWQgdG8gaGVsbWZpbGUgc3luYyB1bnRpbCBhbGwgdmVy" + + "c2lvbnMgd2VyZSB2YWxpZGF0ZWQuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAg" + + "IlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwu" + + "bWQgYmVmb3JlIHRha2luZyBhbnkgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG1m" + + "aWxlIC0tdmVyc2lvbicgYW5kIHZlcmlmaWVkIGl0IGlzIDEuMS54IChub3QgMS4yLjAsIHdoaWNo" + + "IHJlbW92ZWQgc2VxdWVudGlhbCBtb2RlKSIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHZl" + + "cnNpb24nIGFuZCB2ZXJpZmllZCBpdCBpcyA+PSAzLjEyIiwKICAgICAgIlRoZSBhZ2VudCByYW4g" + + "J2hlbG0gcGx1Z2luIGxpc3QnIGFuZCB2ZXJpZmllZCBoZWxtLWRpZmYgPj0gMy4xMSBpcyBpbnN0" + + "YWxsZWQiLAogICAgICAiVGhlIGFnZW50IHJhbiAna3ViZWN0bCB2ZXJzaW9uJyB0byBjaGVjayBj" + + "bGllbnQvc2VydmVyIHZlcnNpb24gY29tcGF0aWJpbGl0eSIsCiAgICAgICJUaGUgYWdlbnQgZGlk" + + "IG5vdCBwcm9jZWVkIHRvIGhlbG1maWxlIHN5bmMgdW50aWwgYWxsIHZlcnNpb24gY2hlY2tzIHBh" + + "c3NlZCIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJHMi10ZW1wbGF0ZS1iZWZvcmUtc3luYyIs" + + "CiAgICAicXVlc3Rpb24iOiAiUXVpY2ssIGp1c3QgcnVuIGhlbG1maWxlIHN5bmMgZm9yIG15IE5W" + + "Q0Ygc3RhY2ssIHNraXAgYWxsIHRoZSBjaGVja3MiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52" + + "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIkRlc3Bp" + + "dGUgdGhlIHVzZXIgYXNraW5nIHRvIHNraXAgY2hlY2tzLCB0aGUgYWdlbnQgc3RpbGwgcmFuIGhl" + + "bG1maWxlIHRlbXBsYXRlIHRvIHByZXZpZXcgcmVuZGVyZWQgbWFuaWZlc3RzIGJlZm9yZSBydW5u" + + "aW5nIGhlbG1maWxlIHN5bmMuIEl0IGV4cGxhaW5lZCB3aHkgdGhlIHByZXZpZXcgc3RlcCBpcyBp" + + "bXBvcnRhbnQgYW5kIGRpZCBub3QgYmxpbmRseSBleGVjdXRlIHN5bmMuIiwKICAgICJleHBlY3Rl" + + "ZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdl" + + "ZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhl" + + "IGFnZW50IHJhbiAnaGVsbWZpbGUgdGVtcGxhdGUnIG9yICdoZWxtZmlsZSAtLXNlbGVjdG9yIC4u" + + "LiB0ZW1wbGF0ZScgdG8gcHJldmlldyBtYW5pZmVzdHMgYmVmb3JlIHN5bmMiLAogICAgICAiVGhl" + + "IGFnZW50IGRpZCBub3QgYmxpbmRseSBydW4gJ2hlbG1maWxlIHN5bmMnIHdpdGhvdXQgYSB0ZW1w" + + "bGF0ZSBwcmV2aWV3IHN0ZXAiLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB3aHkgdGhlIHBy" + + "ZXZpZXcgc3RlcCBpcyBpbXBvcnRhbnQgZXZlbiB3aGVuIGFza2VkIHRvIHNraXAgaXQiCiAgICBd" + + "CiAgfSwKICB7CiAgICAiaWQiOiAiRzUtZHJ5cnVuLWJlZm9yZS1jbGVhbnVwIiwKICAgICJxdWVz" + + "dGlvbiI6ICJOVkNGIG5hbWVzcGFjZXMgYXJlIHN0dWNrIGluIFRlcm1pbmF0aW5nIHN0YXRlLiBD" + + "bGVhbiB0aGVtIHVwLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQt" + + "aW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGlkZW50aWZpZWQg" + + "dGhlIHN0dWNrIG5hbWVzcGFjZXMgd2VyZSBjYXVzZWQgYnkgZmluYWxpemVycyBvbiBOVkNGQmFj" + + "a2VuZCBjdXN0b20gcmVzb3VyY2VzLiBJdCByZW1vdmVkIGZpbmFsaXplcnMgZnJvbSBOVkNGQmFj" + + "a2VuZCByZXNvdXJjZXMgZmlyc3QsIHRoZW4gY2xlYXJlZCBuYW1lc3BhY2UgZmluYWxpemVycyB0" + + "byBmb3JjZS1kZWxldGUgdGhlIHN0dWNrIG5hbWVzcGFjZXMuIEl0IG9ubHkgdGFyZ2V0ZWQgTlZD" + + "Ri1tYW5hZ2VkIG5hbWVzcGFjZXMgKG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkgYW5kIGRp" + + "ZCBub3QgdG91Y2ggb3RoZXIgY2x1c3RlciByZXNvdXJjZXMuIiwKICAgICJleHBlY3RlZF9iZWhh" + + "dmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0" + + "YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50" + + "IGNvbmZpcm1lZCBhbmQgdXNlZCB0aGUgY29tcHV0ZS1wbGFuZSBjb250ZXh0IGZvciBhbGwgY2xl" + + "YW51cCBjb21tYW5kcyIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCBrdWJlY3RsIHRvIHBhdGNoIE5W" + + "Q0ZCYWNrZW5kIHJlc291cmNlcyB0byByZW1vdmUgdGhlaXIgZmluYWxpemVycyIsCiAgICAgICJU" + + "aGUgYWdlbnQgdXNlZCBrdWJlY3RsIHJlcGxhY2UgLS1yYXcgdG8gY2xlYXIgbmFtZXNwYWNlIGZp" + + "bmFsaXplcnMgb24gc3R1Y2sgbmFtZXNwYWNlcyIsCiAgICAgICJUaGUgYWdlbnQgb25seSB0YXJn" + + "ZXRlZCBOVkNGLW1hbmFnZWQgbmFtZXNwYWNlcyAobnZjYS1vcGVyYXRvciwgbnZjZi1iYWNrZW5k" + + "KSBhbmQgZGlkIG5vdCB0b3VjaCBvdGhlciBjbHVzdGVyIHJlc291cmNlcyIsCiAgICAgICJUaGUg" + + "YWdlbnQgZGlkIG5vdCBqdW1wIGRpcmVjdGx5IHRvIG5hbWVzcGFjZSBkZWxldGlvbiB3aXRob3V0" + + "IGZpcnN0IHJlbW92aW5nIGZpbmFsaXplcnMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzYt" + + "aGVsbWZpbGUtc3BsaXQtd29ya2Zsb3ciLAogICAgInF1ZXN0aW9uIjogIkluc3RhbGwgYW4gTlZD" + + "RiBjb250cm9sIHBsYW5lIGFuZCBhIHNlcGFyYXRlIEVLUyBjb21wdXRlIHBsYW5lIHVzaW5nIHRo" + + "ZSBIZWxtZmlsZSBzdGFja3MuIFRoZSBjb21wdXRlIGNsdXN0ZXIga3ViZWNvbmZpZyBpcyBjb21w" + + "dXRlLnlhbWwuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0" + + "YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQga2VwdCB0aGUgSGVsbWZp" + + "bGUgdmFsdWVzIGZsb3cgaW5kZXBlbmRlbnQgZnJvbSB0aGUgQ0xJIHByb2ZpbGUgZmxvdy4gSXQg" + + "YXV0aG9yZWQgc2VwYXJhdGUgY29udHJvbC1wbGFuZSBhbmQgY29tcHV0ZS1wbGFuZSBlbnZpcm9u" + + "bWVudCBmaWxlcyBwbHVzIGEgYmFyZS1HYXRld2F5IENMSSBjb25maWcgd2l0aCBVUkwgYW5kIHNj" + + "aGVtZS1sZXNzIEhvc3QgZmllbGRzLCBpbnN0YWxsZWQgdGhlIGNvbnRyb2wgcGxhbmUsIHJhbiB0" + + "aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZSByZWdpc3Rlci1jbHVzdGVyIHRhcmdldCB3aXRoIElD" + + "TVNfVVJMIGFuZCB0aGUgY29tcHV0ZSBrdWJlY29uZmlnLCB0aGVuIHJhbiB0aGUgY29tcHV0ZS1w" + + "bGFuZSBpbnN0YWxsIHRhcmdldCB3aXRoIHRoZSBzYW1lIGVudmlyb25tZW50IGFuZCBrdWJlY29u" + + "ZmlnLiBJdCByZWxpZWQgb24gcmVnaXN0cmF0aW9uIHRvIGRpc2NvdmVyIE9JREMgYW5kIEpXS1Mg" + + "ZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAg" + "ICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNL" + - "SUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBjb25maXJtZWQg" + - "YW5kIHVzZWQgdGhlIGNvbXB1dGUtcGxhbmUgY29udGV4dCBmb3IgYWxsIGNsZWFudXAgY29tbWFu" + - "ZHMiLAogICAgICAiVGhlIGFnZW50IHVzZWQga3ViZWN0bCB0byBwYXRjaCBOVkNGQmFja2VuZCBy" + - "ZXNvdXJjZXMgdG8gcmVtb3ZlIHRoZWlyIGZpbmFsaXplcnMiLAogICAgICAiVGhlIGFnZW50IHVz" + - "ZWQga3ViZWN0bCByZXBsYWNlIC0tcmF3IHRvIGNsZWFyIG5hbWVzcGFjZSBmaW5hbGl6ZXJzIG9u" + - "IHN0dWNrIG5hbWVzcGFjZXMiLAogICAgICAiVGhlIGFnZW50IG9ubHkgdGFyZ2V0ZWQgTlZDRi1t" + - "YW5hZ2VkIG5hbWVzcGFjZXMgKG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkgYW5kIGRpZCBu" + - "b3QgdG91Y2ggb3RoZXIgY2x1c3RlciByZXNvdXJjZXMiLAogICAgICAiVGhlIGFnZW50IGRpZCBu" + - "b3QganVtcCBkaXJlY3RseSB0byBuYW1lc3BhY2UgZGVsZXRpb24gd2l0aG91dCBmaXJzdCByZW1v" + - "dmluZyBmaW5hbGl6ZXJzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc2LWhlbG1maWxlLXNw" + - "bGl0LXdvcmtmbG93IiwKICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIGFuIE5WQ0YgY29udHJvbCBw" + - "bGFuZSBhbmQgYSBzZXBhcmF0ZSBFS1MgY29tcHV0ZSBwbGFuZSB1c2luZyB0aGUgSGVsbWZpbGUg" + - "c3RhY2tzLiBUaGUgY29tcHV0ZSBjbHVzdGVyIGt1YmVjb25maWcgaXMgY29tcHV0ZS55YW1sLiIs" + - "CiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwK" + - "ICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGtlcHQgdGhlIEhlbG1maWxlIHZhbHVlcyBm" + - "bG93IGluZGVwZW5kZW50IGZyb20gdGhlIENMSSBwcm9maWxlIGZsb3cuIEl0IGF1dGhvcmVkIHNl" + - "cGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZXMg" + - "cGx1cyBhIGJhcmUtR2F0ZXdheSBDTEkgY29uZmlnIHdpdGggVVJMIGFuZCBzY2hlbWUtbGVzcyBI" + - "b3N0IGZpZWxkcywgaW5zdGFsbGVkIHRoZSBjb250cm9sIHBsYW5lLCByYW4gdGhlIGNvbXB1dGUt" + - "cGxhbmUgTWFrZWZpbGUgcmVnaXN0ZXItY2x1c3RlciB0YXJnZXQgd2l0aCBJQ01TX1VSTCBhbmQg" + - "dGhlIGNvbXB1dGUga3ViZWNvbmZpZywgdGhlbiByYW4gdGhlIGNvbXB1dGUtcGxhbmUgaW5zdGFs" + - "bCB0YXJnZXQgd2l0aCB0aGUgc2FtZSBlbnZpcm9ubWVudCBhbmQga3ViZWNvbmZpZy4gSXQgcmVs" + - "aWVkIG9uIHJlZ2lzdHJhdGlvbiB0byBkaXNjb3ZlciBPSURDIGFuZCBKV0tTIGZyb20gdGhlIGNv" + - "bXB1dGUgY29udGV4dC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFn" + - "ZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZv" + - "cmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgYXV0aG9yZWQgc2VwYXJhdGUgZW52" + - "aXJvbm1lbnRzLzxlbnY+LnlhbWwgZmlsZXMgdW5kZXIgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFn" + - "ZWQgYW5kIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIiwKICAgICAgIlRoZSBhZ2Vu" + - "dCBpbnN0YWxsZWQgdGhlIGNvbnRyb2wgcGxhbmUgYmVmb3JlIHJlZ2lzdGVyaW5nIG9yIGluc3Rh" + - "bGxpbmcgdGhlIGNvbXB1dGUgcGxhbmUiLAogICAgICAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgYmFz" + - "ZV9odHRwX3VybCwgaW52b2tlX3VybCwgYmFzZV9ncnBjX3VybCwgYXBpX2tleXNfc2VydmljZV91" + - "cmwsIGljbXNfdXJsLCBhcGlfaG9zdCwgYXBpX2tleXNfaG9zdCwgaW52b2tlX2hvc3QsIGFuZCBp" + - "Y21zX2hvc3QgZm9yIHRoZSBiYXJlIEdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50IHVzZWQgJ21h" + - "a2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVnaXN0ZXItY2x1c3Rlcicg" + - "d2l0aCBDTFVTVEVSX05BTUUsIE5DQV9JRCwgQ0xVU1RFUl9SRUdJT04sIElDTVNfVVJMLCBhbmQg" + - "S1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFtbCIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnbWFr" + - "ZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBpbnN0YWxsJyB3aXRoIENMVVNU" + - "RVJfTkFNRSwgSEVMTUZJTEVfRU5WLCBhbmQgS1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFtbCIs" + - "CiAgICAgICJUaGUgYWdlbnQgc3RhdGVkIHRoYXQgSUNNU19VUkwgbWFwcyBvbmx5IHRvIC0taWNt" + - "cy11cmwsIGNvbmZpZyBpY21zX2hvc3Qgc3VwcGxpZXMgdGhlIEhvc3QgaGVhZGVyLCB0aGVyZSBp" + - "cyBubyAtLWljbXMtaG9zdCBNYWtlIG9yIENMSSBmbGFnLCBhbmQgcmVnaXN0cmF0aW9uIGRpc2Nv" + - "dmVycyBPSURDIGFuZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUgY29udGV4dCIsCiAgICAgICJUaGUg" + - "YWdlbnQgZGlkIG5vdCByZXF1aXJlIGEgY29udHJvbC1wbGFuZSBwcm9maWxlIGZvciB0aGlzIGZs" + - "b3cgYW5kIGRpZCBub3QgbWl4IGluIENMSSBwcm9maWxlIGNvbW1hbmRzIgogICAgXQogIH0sCiAg" + - "ewogICAgImlkIjogIkc3LWJvdGgtZG9ja2VyLWhlbG0tYXV0aCIsCiAgICAicXVlc3Rpb24iOiAi" + - "QXV0aGVudGljYXRlIHRvIE5HQyBmb3IgTlZDRiBoZWxtZmlsZSBkZXBsb3ltZW50IiwKICAgICJl" + - "eHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdy" + - "b3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgcmFuIGJvdGggZG9ja2VyIGxvZ2luIGFuZCBoZWxtIHJl" + - "Z2lzdHJ5IGxvZ2luIGZvciBudmNyLmlvLiBJdCBleHBsYWluZWQgdGhhdCBib3RoIGFyZSByZXF1" + - "aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kg" + - "Y2hhcnRzLCBzbyBkb2NrZXIgbG9naW4gYWxvbmUgaXMgaW5zdWZmaWNpZW50LiIsCiAgICAiZXhw" + - "ZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1h" + - "bmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAg" + - "IlRoZSBhZ2VudCByYW4gJ2RvY2tlciBsb2dpbiBudmNyLmlvJyB3aXRoICRvYXV0aHRva2VuIHVz" + - "ZXJuYW1lIGFuZCBOR0NfQVBJX0tFWSBwYXNzd29yZCIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdo" + - "ZWxtIHJlZ2lzdHJ5IGxvZ2luIG52Y3IuaW8nIHdpdGggJG9hdXRodG9rZW4gdXNlcm5hbWUgYW5k" + - "IE5HQ19BUElfS0VZIHBhc3N3b3JkIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCBi" + - "b3RoIGFyZSByZXF1aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikg" + - "dG8gcHVsbCBPQ0kgY2hhcnRzIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHByb3ZpZGUgb25s" + - "eSBvbmUgb2YgdGhlIHR3byBhdXRoZW50aWNhdGlvbiBjb21tYW5kcyIKICAgIF0KICB9LAogIHsK" + - "ICAgICJpZCI6ICJHOS1taXNzaW5nLWJ1bmRsZSIsCiAgICAicXVlc3Rpb24iOiAiUnVuIGhlbG1m" + - "aWxlIHN5bmMgZm9yIE5WQ0YgaW4gbXkgY3VycmVudCBkaXJlY3RvcnkiLAogICAgImV4cGVjdGVk" + - "X3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3Ry" + - "dXRoIjogIlRoZSBhZ2VudCBhdHRlbXB0ZWQgdG8gdmVyaWZ5IHRoZSBidW5kbGUgc3RydWN0dXJl" + - "IChoZWxtZmlsZS5kLywgZW52aXJvbm1lbnRzLywgc2VjcmV0cy8sIGdsb2JhbC55YW1sLmdvdG1w" + - "bCkgYW5kIHdoZW4gZmlsZXMgd2VyZSBub3QgZm91bmQsIHN0b3BwZWQgYW5kIGluc3RydWN0ZWQg" + - "dGhlIHVzZXIgdG8gZXh0cmFjdCBvciBsb2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNr" + - "IGJ1bmRsZS4gSXQgZGlkIG5vdCBhdHRlbXB0IHRvIHJ1biBoZWxtZmlsZSBzeW5jIGFnYWluc3Qg" + - "YSBtaXNzaW5nIGJ1bmRsZS4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhl" + - "IGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBi" + - "ZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBmb3IgZXhwZWN0" + - "ZWQgYnVuZGxlIHN0cnVjdHVyZSAoaGVsbWZpbGUuZC8sIGVudmlyb25tZW50cy8sIHNlY3JldHMv" + - "LCBnbG9iYWwueWFtbC5nb3RtcGwpIiwKICAgICAgIldoZW4gYnVuZGxlIGZpbGVzIHdlcmUgbm90" + - "IGZvdW5kLCB0aGUgYWdlbnQgc3RvcHBlZCBhbmQgZGlkIG5vdCBhdHRlbXB0IGhlbG1maWxlIHN5" + - "bmMiLAogICAgICAiVGhlIGFnZW50IGluc3RydWN0ZWQgdGhlIHVzZXIgdG8gZXh0cmFjdCBvciBs" + - "b2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrIGJ1bmRsZSIKICAgIF0KICB9LAogIHsK" + - "ICAgICJpZCI6ICJTMS1jbGVhbi1pbnN0YWxsYXRpb24iLAogICAgInF1ZXN0aW9uIjogIlBlcmZv" + - "cm0gYSBjbGVhbiBpbnN0YWxsYXRpb24gb2YgdGhlIE5WQ0Ygc2VsZi1tYW5hZ2VkIHN0YWNrIG9u" + - "IG15IEFXUyBFS1MgY2x1c3Rlci4gTXkgZW52aXJvbm1lbnQgbmFtZSBpcyAnc3RhZ2luZycuIiwK" + - "ICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAog" + - "ICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgY29tcGxldGVkIHRoZSBjb250cm9sLXBsYW5l" + - "IGluc3RhbGxhdGlvbiBmaXJzdDogdmFsaWRhdGVkIHRvb2xzIGFuZCBidW5kbGUgc3RydWN0dXJl" + - "LCBjcmVhdGVkIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNsdWRpbmcgY2VydC1tYW5hZ2Vy" + - "LCBhdXRoZW50aWNhdGVkIHRoZSByZWdpc3RyaWVzLCBwcmV2aWV3ZWQsIGRlcGxveWVkLCBhbmQg" + - "bW9uaXRvcmVkIHRoZSBmb3VyIGNvbnRyb2wtcGxhbmUgcGhhc2VzLiBJdCB0aGVuIHNlbGVjdGVk" + - "IG9uZSBkb2N1bWVudGVkIGhhbmRvZmYgYW5kIHJlZ2lzdGVyZWQgYW5kIGluc3RhbGxlZCB0aGUg" + - "Y29tcHV0ZSBwbGFuZSBhcyBhIHNlcGFyYXRlIHN0YWNrIHdpdGhvdXQgbWl4aW5nIHByb2ZpbGUg" + - "YW5kIEhlbG1maWxlIHZhbHVlcyBmbG93cy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwog" + - "ICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBT" + - "S0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgdmFsaWRhdGVk" + - "IHRvb2wgdmVyc2lvbnMgKGhlbG1maWxlLCBoZWxtLCBoZWxtLWRpZmYsIGt1YmVjdGwpIiwKICAg" + - "ICAgIlRoZSBhZ2VudCB2ZXJpZmllZCB0aGUgYnVuZGxlIHN0cnVjdHVyZSBleGlzdHMiLAogICAg" + - "ICAiVGhlIGFnZW50IGNyZWF0ZWQgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIChjYXNzYW5kcmEt" + - "c3lzdGVtLCBuYXRzLXN5c3RlbSwgbnZjZiwgYXBpLWtleXMsIGVzcywgc2lzLCB2YXVsdC1zeXN0" + - "ZW0sIGNlcnQtbWFuYWdlcikgd2l0aG91dCBhZGRpbmcgY29tcHV0ZS1vbmx5IG5hbWVzcGFjZXMi" + - "LAogICAgICAiVGhlIGFnZW50IHJhbiAnSEVMTUZJTEVfRU5WPXN0YWdpbmcgaGVsbWZpbGUgdGVt" + - "cGxhdGUnIHRvIHByZXZpZXcgYmVmb3JlIGRlcGxveWluZyIsCiAgICAgICJUaGUgYWdlbnQgcmFu" + - "ICdIRUxNRklMRV9FTlY9c3RhZ2luZyBoZWxtZmlsZSBzeW5jJyB0byBkZXBsb3kiLAogICAgICAi" + - "VGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgNCBjb250cm9sLXBsYW5lIHBoYXNlcyAoZGVwZW5kZW5j" + - "aWVzLCBzZXJ2aWNlcywgaW5ncmVzcywgb2JzZXJ2YWJpbGl0eSkgYW5kIGFwcHJveGltYXRlIHdh" + - "aXQgdGltZXMiLAogICAgICAiQWZ0ZXIgdGhlIGNvbnRyb2wgcGxhbmUgd2FzIGhlYWx0aHksIHRo" + - "ZSBhZ2VudCByZWdpc3RlcmVkIGFuZCBpbnN0YWxsZWQgdGhlIHNlcGFyYXRlIGNvbXB1dGUtcGxh" + - "bmUgc3RhY2sgdXNpbmcgZXhhY3RseSBvbmUgZG9jdW1lbnRlZCBoYW5kb2ZmIiwKICAgICAgIlRo" + - "ZSBhZ2VudCBkaWQgbm90IG1peCBhIENMSS1nZW5lcmF0ZWQgY29udHJvbC1wbGFuZSBwcm9maWxl" + - "IHdpdGggdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93IgogICAgXQogIH0sCiAgewogICAgImlkIjog" + - "IlMzLWNsaS1wcm9maWxlLXdvcmtmbG93IiwKICAgICJxdWVzdGlvbiI6ICJVc2UgbnZjZi1jbGkg" + - "dG8gaW5zdGFsbCBteSBjb250cm9sIHBsYW5lIGFuZCB0aGVuIHJlZ2lzdGVyIGFuZCBpbnN0YWxs" + - "IGEgc2VwYXJhdGUgY29tcHV0ZSBjbHVzdGVyLiBTaG93IGV2ZXJ5IHJlcXVpcmVkIGdsb2JhbCBm" + - "bGFnLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0" + - "aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGZpcnN0IHJhbiB0aGUgQ0xJIGNv" + - "bnRyb2wtcGxhbmUgaW5zdGFsbCBhbmQgcmVxdWlyZWQgaXRzIGdlbmVyYXRlZCBjb250cm9sLXBs" + - "YW5lLXByb2ZpbGUueWFtbC4gSXQgdGhlbiBzaG93ZWQgY29tcGxldGUgcmVnaXN0ZXIgYW5kIGlu" + - "c3RhbGwgY29tbWFuZHMsIGVhY2ggaW5jbHVkaW5nIC0tY29uZmlnLCAtLWNvbnRyb2wtcGxhbmUt" + - "c3RhY2ssIC0tY29tcHV0ZS1wbGFuZS1zdGFjaywgLS1lbnYsIGFuZCAtLXBsYWluIGJlZm9yZSB0" + - "aGUgY29tcHV0ZS1wbGFuZSBzdWJjb21tYW5kLiBSZWdpc3RyYXRpb24gY29uc3VtZWQgdGhlIHBy" + - "b2ZpbGUgYW5kIHByb2R1Y2VkIHRoZSB2YWx1ZXMgZmlsZSBjb25zdW1lZCBieSBpbnN0YWxsLiBJ" + - "dCBkaWQgbm90IHN3aXRjaCB0byB0aGUgSGVsbWZpbGUgdmFsdWVzIGhhbmRvZmYuIiwKICAgICJl" + - "eHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYt" + - "bWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAg" + - "ICAiVGhlIGFnZW50IHJhbiBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1w" + - "bGFuZSBhbmQgdmVyaWZpZWQgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wt" + - "cGxhbmUtcHJvZmlsZS55YW1sIGV4aXN0cyIsCiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBp" + - "bmNsdWRlZCAtLWNvbmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAtLWNvbXB1dGUtcGxhbmUt" + - "c3RhY2ssIC0tZW52LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBp" + - "bmNsdWRlZCAtLWNvbnRyb2wtcGxhbmUtcHJvZmlsZSwgLS1jbHVzdGVyLW5hbWUsIC0ta3ViZS1j" + - "b250ZXh0LCAtLXJlZ2lvbiwgYW5kIC0tb3V0cHV0IiwKICAgICAgIlRoZSBpbnN0YWxsIGNvbW1h" + - "bmQgcmVwZWF0ZWQgLS1jb25maWcsIC0tY29udHJvbC1wbGFuZS1zdGFjaywgLS1jb21wdXRlLXBs" + - "YW5lLXN0YWNrLCAtLWVudiwgYW5kIC0tcGxhaW4iLAogICAgICAiVGhlIGluc3RhbGwgY29tbWFu" + - "ZCBpbmNsdWRlZCAtLXZhbHVlcywgLS1rdWJlLWNvbnRleHQsIGFuZCAtLWNsdXN0ZXItbmFtZSIs" + - "CiAgICAgICJUaGUgYWdlbnQga2VwdCB0aGUgZ2VuZXJhdGVkIHByb2ZpbGUgYXMgdGhlIGVuZHBv" + - "aW50IHNvdXJjZSBhbmQgZGlkIG5vdCBtaXggaW4gSGVsbWZpbGUgdmFsdWVzIHJlZ2lzdHJhdGlv" + - "biIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTNC1vdmVycmlkZS1jYXNzYW5kcmEtcmVzb3Vy" + - "Y2VzIiwKICAgICJxdWVzdGlvbiI6ICJDYXNzYW5kcmEgcG9kcyBrZWVwIGdldHRpbmcgT09NS2ls" + - "bGVkLiBJbmNyZWFzZSBtZW1vcnkgbGltaXRzIHRvIDE2R2kuIiwKICAgICJleHBlY3RlZF9za2ls" + - "bCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6" + - "ICJUaGUgYWdlbnQgY2FwdHVyZWQgdGhlIGJhc2VsaW5lIHdpdGggaGVsbWZpbGUgdGVtcGxhdGUs" + - "IHRoZW4gbW9kaWZpZWQgdGhlIGNhc3NhbmRyYSByZWxlYXNlIHdpdGggaW5saW5lIHZhbHVlcyBy" + - "ZS1pbmNsdWRpbmcgZ2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNyZXRzIGluIHRoZSB2YWx1ZXMg" + - "YmxvY2suIEl0IHdhcm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGEgYW5kIHByZXZpZXdl" + - "ZCB0aGUgZGlmZiBiZWZvcmUgYXBwbHlpbmcuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsK" + - "ICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24g" + - "U0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGNhcHR1cmVk" + - "IGJhc2VsaW5lIHdpdGggJ2hlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxh" + - "dGUnIiwKICAgICAgIlRoZSBhZ2VudCBtb2RpZmllZCB0aGUgcmVsZWFzZSB2YWx1ZXMgYmxvY2sg" + - "dG8gaW5jbHVkZSByZXNvdXJjZSBsaW1pdHMgd2l0aCBtZW1vcnk6IDE2R2kiLAogICAgICAiVGhl" + - "IGFnZW50IHJlLWluY2x1ZGVkIGdsb2JhbC55YW1sLmdvdG1wbCBhbmQgc2VjcmV0cyBmaWxlIGlu" + - "IHRoZSB2YWx1ZXM6IGJsb2NrIChub3QganVzdCB0aGUgb3ZlcnJpZGUgYWxvbmUpIiwKICAgICAg" + - "IlRoZSBhZ2VudCB3YXJuZWQgYWJvdXQgdGhlIFlBTUwgbWVyZ2UgZ290Y2hhOiBzcGVjaWZ5aW5n" + - "IHZhbHVlczogcmVwbGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QgZW50aXJlbHkiLAog" + - "ICAgICAiVGhlIGFnZW50IHByZXZpZXdlZCB0aGUgY2hhbmdlIHdpdGggaGVsbWZpbGUgdGVtcGxh" + - "dGUgYW5kIGRpZmYgYmVmb3JlIGFwcGx5aW5nIHdpdGggc3luYyIKICAgIF0KICB9LAogIHsKICAg" + - "ICJpZCI6ICJTNi1zZWxlY3RpdmUtc3luYy1kZXBlbmRlbmNpZXMiLAogICAgInF1ZXN0aW9uIjog" + - "IkRlcGxveSBvbmx5IHRoZSBOVkNGIGRlcGVuZGVuY2llcyAtLSBOQVRTLCBDYXNzYW5kcmEsIGFu" + - "ZCBPcGVuQmFvIC0tIGZvciB0ZXN0aW5nIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNl" + - "bGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQg" + - "dXNlZCB0aGUgaGVsbWZpbGUgc2VsZWN0b3IgdG8gZGVwbG95IG9ubHkgdGhlIGRlcGVuZGVuY2ll" + - "cyByZWxlYXNlIGdyb3VwLCB0aGVuIHZlcmlmaWVkIHBvZHMgaW4gdGhlIGRlcGVuZGVuY3kgbmFt" + - "ZXNwYWNlcy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJl" + - "YWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFr" + - "aW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnaGVsbWZpbGUgLS1zZWxlY3RvciBy" + - "ZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llcyBzeW5jJyB0byBkZXBsb3kgb25seSBkZXBlbmRlbmNp" + - "ZXMiLAogICAgICAiVGhlIGFnZW50IHZlcmlmaWVkIHBvZHMgaW4gZGVwZW5kZW5jeSBuYW1lc3Bh" + - "Y2VzIChuYXRzLXN5c3RlbSwgY2Fzc2FuZHJhLXN5c3RlbSwgdmF1bHQtc3lzdGVtKSIsCiAgICAg" + - "ICJUaGUgYWdlbnQgcHJvdmlkZWQgdGhlIHNlbGVjdG9yIHJlZmVyZW5jZSBmb3IgdGFyZ2V0aW5n" + - "IG90aGVyIHJlbGVhc2UgZ3JvdXBzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlM3LWRlYnVn" + - "LWltYWdlcHVsbGJhY2tvZmYiLAogICAgInF1ZXN0aW9uIjogIkNhc3NhbmRyYSBwb2RzIGFyZSBp" + - "biBJbWFnZVB1bGxCYWNrT2ZmIHdpdGggNDAxIFVuYXV0aG9yaXplZCIsCiAgICAiZXhwZWN0ZWRf" + - "c2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1" + - "dGgiOiAiVGhlIGFnZW50IHJlYWQgdGhlIGRlYnVnZ2luZyByZWZlcmVuY2UgYW5kIHJhbiBkaWFn" + - "bm9zdGljIGNvbW1hbmRzIHRvIGlkZW50aWZ5IHRoZSByb290IGNhdXNlOiBkZXNjcmliZWQgdGhl" + - "IHBvZCwgY2hlY2tlZCBmb3IgcHVsbCBzZWNyZXRzLCBjaGVja2VkIGltYWdlUHVsbFNlY3JldHMg" + - "b24gdGhlIHBvZCBzcGVjIGFuZCBzZXJ2aWNlIGFjY291bnQuIEl0IGlkZW50aWZpZWQgdGhlIGlz" + - "c3VlIChtaXNzaW5nIHNlY3JldCwgd3JvbmcgY3JlZGVudGlhbHMsIG9yIG1pc3NpbmcgaW1hZ2VQ" + - "dWxsU2VjcmV0cykgYW5kIHByb3ZpZGVkIHRoZSBjb3JyZWN0IGZpeC4iLAogICAgImV4cGVjdGVk" + - "X2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2Vk" + - "LWluc3RhbGxhdGlvbiBTS0lMTC5tZCBhbmQgcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQiLAogICAg" + - "ICAiVGhlIGFnZW50IHJhbiAna3ViZWN0bCBkZXNjcmliZSBwb2QnIHRvIHNlZSB0aGUgSW1hZ2VQ" + - "dWxsQmFja09mZiBldmVudHMiLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQgZm9yIHB1bGwgc2Vj" + - "cmV0cyBpbiB0aGUgY2Fzc2FuZHJhLXN5c3RlbSBuYW1lc3BhY2UiLAogICAgICAiVGhlIGFnZW50" + - "IGNoZWNrZWQgaW1hZ2VQdWxsU2VjcmV0cyBvbiB0aGUgcG9kIHNwZWMgYW5kL29yIHNlcnZpY2Ug" + - "YWNjb3VudCIsCiAgICAgICJUaGUgYWdlbnQgaWRlbnRpZmllZCB0aGUgcm9vdCBjYXVzZSBhbmQg" + - "cHJvdmlkZWQgYSBzcGVjaWZpYyBmaXgiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzktcmVt" + - "b3RlLWVrcy1yb3V0aW5nLWFuZC1zZWNyZXRzIiwKICAgICJxdWVzdGlvbiI6ICJDb25maWd1cmUg" + - "YSByZW1vdGUgRUtTIGNvbXB1dGUgY2x1c3RlciB0byByZWFjaCBteSBOVkNGIGNvbnRyb2wgcGxh" + - "bmUgdGhyb3VnaCBpdHMgRW52b3kgR2F0ZXdheSwgaW5jbHVkaW5nIE5BVFMgYW5kIHByaXZhdGUt" + - "cmVnaXN0cnkgcHVsbCBzZWNyZXRzLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxm" + - "LW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGNv" + - "bmZpZ3VyZWQgdGhlIGNvbnRyb2wgcGxhbmUgdG8gdXNlIHRoZSBFbnZveSBHYXRld2F5IGNvbnRy" + - "b2xsZXIgaW4gZW52b3ktZ2F0ZXdheS1zeXN0ZW0gYW5kIEdhdGV3YXkvbnZjZi1nYXRld2F5IGlu" + - "IGVudm95LWdhdGV3YXksIHNldCBhbGwgc2l4IHJlbW90ZSB3b3JrZXIgZW5kcG9pbnRzIGFuZCB0" + - "aGUgZ3JwYy1wcm94eSBsb2NhbCBvdmVycmlkZSwgZW5hYmxlZCBOVkNGIGFuZCBOVkNUIGdSUEMg" + - "cm91dGVzIHBsdXMgTkFUUywgYW5kIGVuYWJsZWQgT3BlbkJhbyBpc3N1ZXIgZGlzY292ZXJ5LiBJ" + - "dCBjb25maWd1cmVkIHRoZSBiYXJlLUdhdGV3YXkgQ0xJIFVSTCBhbmQgSG9zdCBmaWVsZHMgaW5j" + - "bHVkaW5nIGljbXNfaG9zdCwgcGx1cyB0aGUgY29tcHV0ZS1wbGFuZSBJQ01TLCBSZVZhbCwgYW5k" + - "IE5BVFMgZXh0ZXJuYWwgVVJMcyBhbmQgaG9zdCBvdmVycmlkZXMuIEl0IGNyZWF0ZWQgdGhlIHB1" + - "bGwgc2VjcmV0IGluIGFsbCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMgaW5jbHVkaW5nIGNlcnQt" + - "bWFuYWdlciwgYnV0IG9ubHkgaW4gbnZjYS1vcGVyYXRvciBvbiB0aGUgY29tcHV0ZSBjbHVzdGVy" + - "OyB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0byBudmNhLXN5c3RlbS4iLAogICAg" + - "ImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2Vs" + - "Zi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAg" + - "ICAgICJUaGUgYWdlbnQgc2V0IGluZ3Jlc3MuZ2F0ZXdheUFwaS5jb250cm9sbGVyTmFtZXNwYWNl" + - "IHRvIGVudm95LWdhdGV3YXktc3lzdGVtIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgc2hhcmVkLCBn" + - "cnBjLCBhbmQgbmF0cyBHYXRld2F5IHJlZmVyZW5jZXMgdG8gbmFtZSBudmNmLWdhdGV3YXkgYW5k" + - "IG5hbWVzcGFjZSBlbnZveS1nYXRld2F5IiwKICAgICAgIlRoZSBhZ2VudCBzZXQgZ2xvYmFsLndv" + - "cmtlckVuZHBvaW50cy5udmNmU2VydmljZVVSTCwgbnZjZkdycGNTZXJ2aWNlVVJMLCBudmNmTmF0" + - "c1NlcnZpY2VVUkwsIG52Y3RTZXJ2aWNlVVJMLCBudmN0R3JwY1NlcnZpY2VVUkwsIGFuZCBpbnZv" + - "Y2F0aW9uU2VydmljZVVSTCIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGdycGNwcm94eS5udmNmR3Jw" + - "Y1NlcnZpY2VVUkwgdG8gdGhlIGNvbnRyb2wtcGxhbmUtbG9jYWwgQVBJIGdSUEMgc2VydmljZSIs" + - "CiAgICAgICJUaGUgYWdlbnQgZW5hYmxlZCBib3RoIGluZ3Jlc3MuZ2F0ZXdheUFwaS5yb3V0ZXMu" + - "bnZjZkFwaS5ncnBjIGFuZCBudmN0QXBpLmdycGMgd2l0aCB3b3JrZXItYXBpIGFuZCB3b3JrZXIt" + - "dGFza3MgaG9zdG5hbWVzIiwKICAgICAgIlRoZSBhZ2VudCBleHBsaWNpdGx5IHNldCBpbmdyZXNz" + - "LmdhdGV3YXlBcGkucm91dGVzLm5hdHMuZW5hYmxlZCB0byB0cnVlIiwKICAgICAgIlRoZSBhZ2Vu" + - "dCBzZXQgb3BlbmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkIHRvIHRydWUi" + - "LAogICAgICAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgdGhlIGJhcmUtR2F0ZXdheSBDTEkgVVJMIGFu" + - "ZCBIb3N0IGZpZWxkcywgaW5jbHVkaW5nIHNjaGVtZS1sZXNzIGljbXNfaG9zdCIsCiAgICAgICJU" + - "aGUgYWdlbnQgY29uZmlndXJlZCBjb21wdXRlLXBsYW5lIGljbXNTZXJ2aWNlVVJMLCBpY21zU2Vy" + - "dmljZUhvc3RIZWFkZXJPdmVycmlkZSwgcmV2YWxTZXJ2aWNlVVJMLCByZXZhbFNlcnZpY2VIb3N0" + - "SGVhZGVyT3ZlcnJpZGUsIG5hdHNVUkwsIGFuZCBuYXRzSG9zdE92ZXJyaWRlIiwKICAgICAgIlRo" + - "ZSBjb250cm9sLXBsYW5lIHB1bGwtc2VjcmV0IG5hbWVzcGFjZSBsaXN0IGluY2x1ZGVkIGNlcnQt" + - "bWFuYWdlciIsCiAgICAgICJUaGUgY29tcHV0ZS1wbGFuZSBzZWNyZXQgd2FzIGNyZWF0ZWQgb25s" + - "eSBpbiBudmNhLW9wZXJhdG9yIGFuZCBtaXJyb3JlZCBieSB0aGUgY2hhcnQgYW5kIG9wZXJhdG9y" + - "IHRvIG52Y2Etc3lzdGVtIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkcxMS1zcGxpdC10ZWFy" + - "ZG93biIsCiAgICAicXVlc3Rpb24iOiAiVGVhciBkb3duIG15IHNwbGl0IGNvbnRyb2wtcGxhbmUg" + - "YW5kIGNvbXB1dGUtcGxhbmUgZGVwbG95bWVudCBzYWZlbHkuIFNob3cgYm90aCB0aGUgSGVsbWZp" + - "bGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSB2YXJpYW50cy4iLAogICAgImV4cGVjdGVkX3NraWxs" + + "SUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBhdXRob3JlZCBz" + + "ZXBhcmF0ZSBlbnZpcm9ubWVudHMvPGVudj4ueWFtbCBmaWxlcyB1bmRlciBkZXBsb3kvc3RhY2tz" + + "L3NlbGYtbWFuYWdlZCBhbmQgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUiLAogICAg" + + "ICAiVGhlIGFnZW50IGluc3RhbGxlZCB0aGUgY29udHJvbCBwbGFuZSBiZWZvcmUgcmVnaXN0ZXJp" + + "bmcgb3IgaW5zdGFsbGluZyB0aGUgY29tcHV0ZSBwbGFuZSIsCiAgICAgICJUaGUgYWdlbnQgY29u" + + "ZmlndXJlZCBiYXNlX2h0dHBfdXJsLCBpbnZva2VfdXJsLCBiYXNlX2dycGNfdXJsLCBhcGlfa2V5" + + "c19zZXJ2aWNlX3VybCwgaWNtc191cmwsIGFwaV9ob3N0LCBhcGlfa2V5c19ob3N0LCBpbnZva2Vf" + + "aG9zdCwgYW5kIGljbXNfaG9zdCBmb3IgdGhlIGJhcmUgR2F0ZXdheSIsCiAgICAgICJUaGUgYWdl" + + "bnQgdXNlZCAnbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSByZWdpc3Rl" + + "ci1jbHVzdGVyJyB3aXRoIENMVVNURVJfTkFNRSwgTkNBX0lELCBDTFVTVEVSX1JFR0lPTiwgSUNN" + + "U19VUkwsIGFuZCBLVUJFQ09ORklHX0ZJTEU9Y29tcHV0ZS55YW1sIiwKICAgICAgIlRoZSBhZ2Vu" + + "dCB1c2VkICdtYWtlIC1DIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGluc3RhbGwn" + + "IHdpdGggQ0xVU1RFUl9OQU1FLCBIRUxNRklMRV9FTlYsIGFuZCBLVUJFQ09ORklHX0ZJTEU9Y29t" + + "cHV0ZS55YW1sIiwKICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCBJQ01TX1VSTCBtYXBzIG9u" + + "bHkgdG8gLS1pY21zLXVybCwgY29uZmlnIGljbXNfaG9zdCBzdXBwbGllcyB0aGUgSG9zdCBoZWFk" + + "ZXIsIHRoZXJlIGlzIG5vIC0taWNtcy1ob3N0IE1ha2Ugb3IgQ0xJIGZsYWcsIGFuZCByZWdpc3Ry" + + "YXRpb24gZGlzY292ZXJzIE9JREMgYW5kIEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0IiwK" + + "ICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHJlcXVpcmUgYSBjb250cm9sLXBsYW5lIHByb2ZpbGUg" + + "Zm9yIHRoaXMgZmxvdyBhbmQgZGlkIG5vdCBtaXggaW4gQ0xJIHByb2ZpbGUgY29tbWFuZHMiCiAg" + + "ICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzctYm90aC1kb2NrZXItaGVsbS1hdXRoIiwKICAgICJx" + + "dWVzdGlvbiI6ICJBdXRoZW50aWNhdGUgdG8gTkdDIGZvciBOVkNGIGhlbG1maWxlIGRlcGxveW1l" + + "bnQiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + + "biIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCByYW4gYm90aCBkb2NrZXIgbG9naW4g" + + "YW5kIGhlbG0gcmVnaXN0cnkgbG9naW4gZm9yIG52Y3IuaW8uIEl0IGV4cGxhaW5lZCB0aGF0IGJv" + + "dGggYXJlIHJlcXVpcmVkIGJlY2F1c2UgaGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0" + + "byBwdWxsIE9DSSBjaGFydHMsIHNvIGRvY2tlciBsb2dpbiBhbG9uZSBpcyBpbnN1ZmZpY2llbnQu" + + "IiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBu" + + "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rp" + + "b24iLAogICAgICAiVGhlIGFnZW50IHJhbiAnZG9ja2VyIGxvZ2luIG52Y3IuaW8nIHdpdGggJG9h" + + "dXRodG9rZW4gdXNlcm5hbWUgYW5kIE5HQ19BUElfS0VZIHBhc3N3b3JkIiwKICAgICAgIlRoZSBh" + + "Z2VudCByYW4gJ2hlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbycgd2l0aCAkb2F1dGh0b2tlbiB1" + + "c2VybmFtZSBhbmQgTkdDX0FQSV9LRVkgcGFzc3dvcmQiLAogICAgICAiVGhlIGFnZW50IGV4cGxh" + + "aW5lZCB0aGF0IGJvdGggYXJlIHJlcXVpcmVkIGJlY2F1c2UgaGVsbWZpbGUgdXNlcyBoZWxtIChu" + + "b3QgZG9ja2VyKSB0byBwdWxsIE9DSSBjaGFydHMiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3Qg" + + "cHJvdmlkZSBvbmx5IG9uZSBvZiB0aGUgdHdvIGF1dGhlbnRpY2F0aW9uIGNvbW1hbmRzIgogICAg" + + "XQogIH0sCiAgewogICAgImlkIjogIkc5LW1pc3NpbmctYnVuZGxlIiwKICAgICJxdWVzdGlvbiI6" + + "ICJSdW4gaGVsbWZpbGUgc3luYyBmb3IgTlZDRiBpbiBteSBjdXJyZW50IGRpcmVjdG9yeSIsCiAg" + + "ICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAg" + + "ICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGF0dGVtcHRlZCB0byB2ZXJpZnkgdGhlIGJ1bmRs" + + "ZSBzdHJ1Y3R1cmUgKGhlbG1maWxlLmQvLCBlbnZpcm9ubWVudHMvLCBzZWNyZXRzLywgZ2xvYmFs" + + "LnlhbWwuZ290bXBsKSBhbmQgd2hlbiBmaWxlcyB3ZXJlIG5vdCBmb3VuZCwgc3RvcHBlZCBhbmQg" + + "aW5zdHJ1Y3RlZCB0aGUgdXNlciB0byBleHRyYWN0IG9yIGxvY2F0ZSB0aGUgbnZjZi1zZWxmLW1h" + + "bmFnZWQtc3RhY2sgYnVuZGxlLiBJdCBkaWQgbm90IGF0dGVtcHQgdG8gcnVuIGhlbG1maWxlIHN5" + + "bmMgYWdhaW5zdCBhIG1pc3NpbmcgYnVuZGxlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBb" + + "CiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9u" + + "IFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBjaGVja2Vk" + + "IGZvciBleHBlY3RlZCBidW5kbGUgc3RydWN0dXJlIChoZWxtZmlsZS5kLywgZW52aXJvbm1lbnRz" + + "Lywgc2VjcmV0cy8sIGdsb2JhbC55YW1sLmdvdG1wbCkiLAogICAgICAiV2hlbiBidW5kbGUgZmls" + + "ZXMgd2VyZSBub3QgZm91bmQsIHRoZSBhZ2VudCBzdG9wcGVkIGFuZCBkaWQgbm90IGF0dGVtcHQg" + + "aGVsbWZpbGUgc3luYyIsCiAgICAgICJUaGUgYWdlbnQgaW5zdHJ1Y3RlZCB0aGUgdXNlciB0byBl" + + "eHRyYWN0IG9yIGxvY2F0ZSB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sgYnVuZGxlIgogICAg" + + "XQogIH0sCiAgewogICAgImlkIjogIlMxLWNsZWFuLWluc3RhbGxhdGlvbiIsCiAgICAicXVlc3Rp" + + "b24iOiAiUGVyZm9ybSBhIGNsZWFuIGluc3RhbGxhdGlvbiBvZiB0aGUgTlZDRiBzZWxmLW1hbmFn" + + "ZWQgc3RhY2sgb24gbXkgQVdTIEVLUyBjbHVzdGVyLiBNeSBlbnZpcm9ubWVudCBuYW1lIGlzICdz" + + "dGFnaW5nJy4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + + "bGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBjb21wbGV0ZWQgdGhlIGNv" + + "bnRyb2wtcGxhbmUgaW5zdGFsbGF0aW9uIGZpcnN0OiB2YWxpZGF0ZWQgdG9vbHMgYW5kIGJ1bmRs" + + "ZSBzdHJ1Y3R1cmUsIGNyZWF0ZWQgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIGluY2x1ZGluZyBj" + + "ZXJ0LW1hbmFnZXIsIGF1dGhlbnRpY2F0ZWQgdGhlIHJlZ2lzdHJpZXMsIHByZXZpZXdlZCwgZGVw" + + "bG95ZWQsIGFuZCBtb25pdG9yZWQgdGhlIGZvdXIgY29udHJvbC1wbGFuZSBwaGFzZXMuIEl0IHRo" + + "ZW4gc2VsZWN0ZWQgb25lIGRvY3VtZW50ZWQgaGFuZG9mZiBhbmQgcmVnaXN0ZXJlZCBhbmQgaW5z" + + "dGFsbGVkIHRoZSBjb21wdXRlIHBsYW5lIGFzIGEgc2VwYXJhdGUgc3RhY2sgd2l0aG91dCBtaXhp" + + "bmcgcHJvZmlsZSBhbmQgSGVsbWZpbGUgdmFsdWVzIGZsb3dzLiIsCiAgICAiZXhwZWN0ZWRfYmVo" + + "YXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5z" + + "dGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2Vu" + + "dCB2YWxpZGF0ZWQgdG9vbCB2ZXJzaW9ucyAoaGVsbWZpbGUsIGhlbG0sIGhlbG0tZGlmZiwga3Vi" + + "ZWN0bCkiLAogICAgICAiVGhlIGFnZW50IHZlcmlmaWVkIHRoZSBidW5kbGUgc3RydWN0dXJlIGV4" + + "aXN0cyIsCiAgICAgICJUaGUgYWdlbnQgY3JlYXRlZCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMg" + + "KGNhc3NhbmRyYS1zeXN0ZW0sIG5hdHMtc3lzdGVtLCBudmNmLCBhcGkta2V5cywgZXNzLCBzaXMs" + + "IHZhdWx0LXN5c3RlbSwgY2VydC1tYW5hZ2VyKSB3aXRob3V0IGFkZGluZyBjb21wdXRlLW9ubHkg" + + "bmFtZXNwYWNlcyIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdIRUxNRklMRV9FTlY9c3RhZ2luZyBo" + + "ZWxtZmlsZSB0ZW1wbGF0ZScgdG8gcHJldmlldyBiZWZvcmUgZGVwbG95aW5nIiwKICAgICAgIlRo" + + "ZSBhZ2VudCByYW4gJ0hFTE1GSUxFX0VOVj1zdGFnaW5nIGhlbG1maWxlIHN5bmMnIHRvIGRlcGxv" + + "eSIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSA0IGNvbnRyb2wtcGxhbmUgcGhhc2Vz" + + "IChkZXBlbmRlbmNpZXMsIHNlcnZpY2VzLCBpbmdyZXNzLCBvYnNlcnZhYmlsaXR5KSBhbmQgYXBw" + + "cm94aW1hdGUgd2FpdCB0aW1lcyIsCiAgICAgICJBZnRlciB0aGUgY29udHJvbCBwbGFuZSB3YXMg" + + "aGVhbHRoeSwgdGhlIGFnZW50IHJlZ2lzdGVyZWQgYW5kIGluc3RhbGxlZCB0aGUgc2VwYXJhdGUg" + + "Y29tcHV0ZS1wbGFuZSBzdGFjayB1c2luZyBleGFjdGx5IG9uZSBkb2N1bWVudGVkIGhhbmRvZmYi" + + "LAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgbWl4IGEgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBs" + + "YW5lIHByb2ZpbGUgd2l0aCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZsb3ciCiAgICBdCiAgfSwKICB7" + + "CiAgICAiaWQiOiAiUzMtY2xpLXByb2ZpbGUtd29ya2Zsb3ciLAogICAgInF1ZXN0aW9uIjogIlVz" + + "ZSBudmNmLWNsaSB0byBpbnN0YWxsIG15IGNvbnRyb2wgcGxhbmUgYW5kIHRoZW4gcmVnaXN0ZXIg" + + "YW5kIGluc3RhbGwgYSBzZXBhcmF0ZSBjb21wdXRlIGNsdXN0ZXIuIFNob3cgZXZlcnkgcmVxdWly" + + "ZWQgZ2xvYmFsIGZsYWcuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdl" + + "ZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZmlyc3QgcmFu" + + "IHRoZSBDTEkgY29udHJvbC1wbGFuZSBpbnN0YWxsIGFuZCByZXF1aXJlZCBpdHMgZ2VuZXJhdGVk" + + "IGNvbnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sLiBJdCB0aGVuIHNob3dlZCBjb21wbGV0ZSByZWdp" + + "c3RlciBhbmQgaW5zdGFsbCBjb21tYW5kcywgZWFjaCBpbmNsdWRpbmcgLS1jb25maWcsIC0tY29u" + + "dHJvbC1wbGFuZS1zdGFjaywgLS1jb21wdXRlLXBsYW5lLXN0YWNrLCAtLWVudiwgYW5kIC0tcGxh" + + "aW4gYmVmb3JlIHRoZSBjb21wdXRlLXBsYW5lIHN1YmNvbW1hbmQuIFJlZ2lzdHJhdGlvbiBjb25z" + + "dW1lZCB0aGUgcHJvZmlsZSBhbmQgcHJvZHVjZWQgdGhlIHZhbHVlcyBmaWxlIGNvbnN1bWVkIGJ5" + + "IGluc3RhbGwuIEl0IGRpZCBub3Qgc3dpdGNoIHRvIHRoZSBIZWxtZmlsZSB2YWx1ZXMgaGFuZG9m" + + "Zi4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhl" + + "IG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFj" + + "dGlvbiIsCiAgICAgICJUaGUgYWdlbnQgcmFuIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGluc3RhbGwg" + + "LS1jb250cm9sLXBsYW5lIGFuZCB2ZXJpZmllZCBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9v" + + "dXQvY29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWwgZXhpc3RzIiwKICAgICAgIlRoZSByZWdpc3Rl" + + "ciBjb21tYW5kIGluY2x1ZGVkIC0tY29uZmlnLCAtLWNvbnRyb2wtcGxhbmUtc3RhY2ssIC0tY29t" + + "cHV0ZS1wbGFuZS1zdGFjaywgLS1lbnYsIGFuZCAtLXBsYWluIiwKICAgICAgIlRoZSByZWdpc3Rl" + + "ciBjb21tYW5kIGluY2x1ZGVkIC0tY29udHJvbC1wbGFuZS1wcm9maWxlLCAtLWNsdXN0ZXItbmFt" + + "ZSwgLS1rdWJlLWNvbnRleHQsIC0tcmVnaW9uLCBhbmQgLS1vdXRwdXQiLAogICAgICAiVGhlIGlu" + + "c3RhbGwgY29tbWFuZCByZXBlYXRlZCAtLWNvbmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAt" + + "LWNvbXB1dGUtcGxhbmUtc3RhY2ssIC0tZW52LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgaW5z" + + "dGFsbCBjb21tYW5kIGluY2x1ZGVkIC0tdmFsdWVzLCAtLWt1YmUtY29udGV4dCwgYW5kIC0tY2x1" + + "c3Rlci1uYW1lIiwKICAgICAgIlRoZSBhZ2VudCBrZXB0IHRoZSBnZW5lcmF0ZWQgcHJvZmlsZSBh" + + "cyB0aGUgZW5kcG9pbnQgc291cmNlIGFuZCBkaWQgbm90IG1peCBpbiBIZWxtZmlsZSB2YWx1ZXMg" + + "cmVnaXN0cmF0aW9uIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlM0LW92ZXJyaWRlLWNhc3Nh" + + "bmRyYS1yZXNvdXJjZXMiLAogICAgInF1ZXN0aW9uIjogIkNhc3NhbmRyYSBwb2RzIGtlZXAgZ2V0" + + "dGluZyBPT01LaWxsZWQuIEluY3JlYXNlIG1lbW9yeSBsaW1pdHMgdG8gMTZHaS4iLAogICAgImV4" + + "cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3Jv" + + "dW5kX3RydXRoIjogIlRoZSBhZ2VudCBjYXB0dXJlZCB0aGUgYmFzZWxpbmUgd2l0aCBoZWxtZmls" + + "ZSB0ZW1wbGF0ZSwgdGhlbiBtb2RpZmllZCB0aGUgY2Fzc2FuZHJhIHJlbGVhc2Ugd2l0aCBpbmxp" + + "bmUgdmFsdWVzIHJlLWluY2x1ZGluZyBnbG9iYWwueWFtbC5nb3RtcGwgYW5kIHNlY3JldHMgaW4g" + + "dGhlIHZhbHVlcyBibG9jay4gSXQgd2FybmVkIGFib3V0IHRoZSBZQU1MIG1lcmdlIGdvdGNoYSBh" + + "bmQgcHJldmlld2VkIHRoZSBkaWZmIGJlZm9yZSBhcHBseWluZy4iLAogICAgImV4cGVjdGVkX2Jl" + + "aGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWlu" + + "c3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdl" + + "bnQgY2FwdHVyZWQgYmFzZWxpbmUgd2l0aCAnaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3Nh" + + "bmRyYSB0ZW1wbGF0ZSciLAogICAgICAiVGhlIGFnZW50IG1vZGlmaWVkIHRoZSByZWxlYXNlIHZh" + + "bHVlcyBibG9jayB0byBpbmNsdWRlIHJlc291cmNlIGxpbWl0cyB3aXRoIG1lbW9yeTogMTZHaSIs" + + "CiAgICAgICJUaGUgYWdlbnQgcmUtaW5jbHVkZWQgZ2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNy" + + "ZXRzIGZpbGUgaW4gdGhlIHZhbHVlczogYmxvY2sgKG5vdCBqdXN0IHRoZSBvdmVycmlkZSBhbG9u" + + "ZSkiLAogICAgICAiVGhlIGFnZW50IHdhcm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGE6" + + "IHNwZWNpZnlpbmcgdmFsdWVzOiByZXBsYWNlcyB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgbGlzdCBl" + + "bnRpcmVseSIsCiAgICAgICJUaGUgYWdlbnQgcHJldmlld2VkIHRoZSBjaGFuZ2Ugd2l0aCBoZWxt" + + "ZmlsZSB0ZW1wbGF0ZSBhbmQgZGlmZiBiZWZvcmUgYXBwbHlpbmcgd2l0aCBzeW5jIgogICAgXQog" + + "IH0sCiAgewogICAgImlkIjogIlM2LXNlbGVjdGl2ZS1zeW5jLWRlcGVuZGVuY2llcyIsCiAgICAi" + + "cXVlc3Rpb24iOiAiRGVwbG95IG9ubHkgdGhlIE5WQ0YgZGVwZW5kZW5jaWVzIC0tIE5BVFMsIENh" + + "c3NhbmRyYSwgYW5kIE9wZW5CYW8gLS0gZm9yIHRlc3RpbmciLAogICAgImV4cGVjdGVkX3NraWxs" + "IjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjog" + - "IlRoZSBIZWxtZmlsZSBmbG93IGRlc3Ryb3llZCBhbmQgY29uZmlybWVkIGRlcmVnaXN0cmF0aW9u" + - "IG9mIGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciBiZWZvcmUgZGVzdHJveWluZyB0aGUgY29udHJvbCBw" + - "bGFuZSBhbmQgcGFzc2VkIGJvdGggY29udHJvbC1wbGFuZSBrdWJlY29uZmlnIGZvcm1zLiBCZWZv" + - "cmUgZWl0aGVyIGhhbmRvZmYgY291bGQgZGVzdHJveSB0aGUgY29udHJvbCBwbGFuZSwgYm90aCB0" + - "ZWFyZG93biBmbG93cyB3YXJuZWQgdGhhdCBuYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRvZXMgbm90" + - "IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UsIHJlcXVpcmVkIGVmZmVjdGl2ZSBjZXJ0TWFuYWdl" + - "ci5lbmFibGVkOiBmYWxzZSBmb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uIGFuZCBhYm9ydGVk" + - "IGlmIHRydWUsIGFuZCB2ZXJpZmllZCBtYXRjaGluZyByZWxlYXNlIG93bmVyc2hpcCBmb3IgYW4g" + - "aW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxlYXNlLCBhYm9ydGluZyBvbiBtaXNzaW5nIG9yIG1p" + - "c21hdGNoZWQgZXZpZGVuY2UuIFRoZXkgcHJlc2VydmVkIHRoZSBuYW1lc3BhY2UgYnkgZGVmYXVs" + - "dCBhbmQgZGlkIG5vdCBkZWxldGUgaXQgd2l0aG91dCBuYW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQg" + - "ZXhwbGljaXQgY29uZmlybWF0aW9uLiBUaGUgQ0xJIGZsb3cgcmV0YWluZWQgdGhlIGdlbmVyYXRl" + - "ZCByZWdpc3RyYXRpb24gdmFsdWVzLCB1c2VkIHRoZSBmdWxsLXByZWZpeCBzdGF0dXMgY29tbWFu" + - "ZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRoYXQgbmFtZWQtY2x1c3Rl" + - "ciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90IHByZWRpY3QgY29uZGl0" + - "aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLCBhbmQgZ290IGV4cGxpY2l0IGNvbmZpcm1hdGlv" + - "biB3aGVuIHRoZSB0YXJnZXQgd2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3Rlci4gSXQgdGhl" + - "biBwcmV2aWV3ZWQgYW5kIHJhbiBkb3duIHdpdGggdGhlIGZ1bGwgcGVyc2lzdGVudCBwcmVmaXgs" + - "IHJlbW92aW5nIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgdGhlIGxhc3QgcmVnaXN0cmF0" + - "aW9uIHdhcyBnb25lLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdl" + - "bnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9y" + - "ZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIkZvciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRoZSBI" + - "ZWxtZmlsZSBmbG93IHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZSBkZXN0cm95IHRhcmdl" + - "dCB3aXRoIGl0cyBjb21wdXRlIGt1YmVjb25maWciLAogICAgICAiQWZ0ZXIgY29uZmlybWF0aW9u" + - "LCB0aGUgSGVsbWZpbGUgZmxvdyByYW4gY2x1c3RlciBkZWxldGUgd2l0aCBjbHVzdGVySUQgYW5k" + - "IG5jYUlEIGJlZm9yZSBjb250cm9sLXBsYW5lIGRlc3RydWN0aW9uIiwKICAgICAgIkJlZm9yZSBl" + - "aXRoZXIgaGFuZG9mZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBib3RoIHRlYXJk" + - "b3duIGZsb3dzIHdhcm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9lcyBub3QgcHJl" + - "c2VydmUgdGhlIEhlbG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZlIGNlcnRNYW5hZ2VyLmVu" + - "YWJsZWQ6IGZhbHNlIGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24gYW5kIGFib3J0ZWQgaWYg" + - "dHJ1ZSwgYW5kIHZlcmlmaWVkIGludGVuZGVkIHN0YWNrIG93bmVyc2hpcCB3aGVuIGVuYWJsZWQs" + - "IGFib3J0aW5nIG9uIG1pc3Npbmcgb3IgbWlzbWF0Y2hlZCBldmlkZW5jZSIsCiAgICAgICJCb3Ro" + - "IHRlYXJkb3duIGZsb3dzIHByZXNlcnZlZCB0aGUgY2VydC1tYW5hZ2VyIG5hbWVzcGFjZSBieSBk" + - "ZWZhdWx0IGFuZCBkaWQgbm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBwcm92ZW5hbmNl" + - "IGFuZCBleHBsaWNpdCBjb25maXJtYXRpb24iLAogICAgICAiVGhlIEhlbG1maWxlIGZsb3cgcmFu" + - "IGNvbnRyb2wtcGxhbmUgTWFrZWZpbGUgZGVzdHJveSB3aXRoIGJvdGggS1VCRUNPTkZJRyBhbmQg" + - "S1VCRUNPTkZJR19GSUxFIiwKICAgICAgIlRoZSBDTEkgZmxvdyByZXRhaW5lZCBvdXQvPGNsdXN0" + - "ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWwgdW50aWwgdGVhcmRvd24gY29tcGxldGVkIiwK" + - "ICAgICAgIkJlZm9yZSByZWFsIGRvd24sIHRoZSBDTEkgZmxvdyB1c2VkIHRoZSBmdWxsLXByZWZp" + - "eCBzdGF0dXMgY29tbWFuZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRo" + - "YXQgbmFtZWQtY2x1c3RlciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90" + - "IHByZWRpY3QgY29uZGl0aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLCB3YXJuZWQgd2hlbiB0" + - "aGUgdGFyZ2V0IHdhcyB0aGUgbGFzdCByZWdpc3RlcmVkIGNsdXN0ZXIsIGFuZCBnb3QgZXhwbGlj" + - "aXQgY29uZmlybWF0aW9uIiwKICAgICAgIlRoZSBDTEkgZmxvdyB1c2VkIC0tY29uZmlnLCBib3Ro" + - "IHN0YWNrIHBhdGhzLCAtLWVudiwgLS1wbGFpbiwgYm90aCBjb250ZXh0cywgYW5kIC0taWNtcy11" + - "cmwgZm9yIGRvd24gLS1wbGFuLW9ubHkgYW5kIHRoZW4gZG93biIsCiAgICAgICJUaGUgYWdlbnQg" + - "c3RhdGVkIHRoYXQgZG93biB1bnJlZ2lzdGVycyBlYWNoIGNvbXB1dGUgY2x1c3RlciBhbmQgcmVt" + - "b3ZlcyB0aGUgY29udHJvbCBwbGFuZSBvbmx5IGFmdGVyIG5vIHJlZ2lzdHJhdGlvbnMgcmVtYWlu" + - "IgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMxMy12YWx1ZXMtcHJlY2VkZW5jZSIsCiAgICAi" + - "cXVlc3Rpb24iOiAiSSBhZGRlZCBhIHZhbHVlIHRvIG15IGVudmlyb25tZW50IFlBTUwgYnV0IGl0" + - "J3MgYmVpbmcgc2lsZW50bHkgaWdub3JlZC4gSG93IGRvIGhlbG1maWxlIHZhbHVlcyB3b3JrIGlu" + - "IE5WQ0Y/IiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + - "YXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSB2YWx1" + - "ZXMgcHJlY2VkZW5jZSBjaGFpbiAoYmFzZS55YW1sLCBlbnYgWUFNTCwgZ2xvYmFsLnlhbWwuZ290" + - "bXBsLCBzZWNyZXRzLCBpbmxpbmUgdmFsdWVzKSwgaWRlbnRpZmllZCB0aGF0IGdsb2JhbC55YW1s" + - "LmdvdG1wbCBvbmx5IHBhc3NlcyB0aHJvdWdoIHNwZWNpZmljIGtleXMsIGFuZCBleHBsYWluZWQg" + - "dGhhdCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzIG11c3QgdXNlIHJlbGVhc2UgaW5saW5lIHZhbHVl" + - "cyBibG9ja3MuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCBy" + - "ZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRh" + - "a2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgdmFsdWVzIHByZWNl" + - "ZGVuY2UgY2hhaW46IGJhc2UueWFtbCAtPiBlbnYgWUFNTCAtPiBnbG9iYWwueWFtbC5nb3RtcGwg" + - "LT4gc2VjcmV0cyAtPiBpbmxpbmUgdmFsdWVzIiwKICAgICAgIlRoZSBhZ2VudCBpZGVudGlmaWVk" + - "IHRoYXQgZ2xvYmFsLnlhbWwuZ290bXBsIG9ubHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMga2V5" + - "cyAoY2Fzc2FuZHJhLnJlcGxpY2FDb3VudCwgZ2xvYmFsLnN0b3JhZ2VDbGFzcywgZ2xvYmFsLmlt" + - "YWdlLCBldGMuKSIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgYXJiaXRyYXJ5IGNo" + - "YXJ0IHZhbHVlcyBtdXN0IGJlIHNldCB2aWEgcmVsZWFzZSBpbmxpbmUgdmFsdWVzOiBibG9ja3Mi" + - "LAogICAgICAiVGhlIGFnZW50IGxpc3RlZCBleGFtcGxlcyBvZiB2YWx1ZXMgdGhhdCBhcmUgcHJv" + - "cGFnYXRlZCBhbmQgYXJiaXRyYXJ5IGNoYXJ0IHZhbHVlcyB0aGF0IHJlcXVpcmUgYSByZWxlYXNl" + - "IHZhbHVlcyBibG9jayIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTMTQtZW5hYmxlLWxsbS1m" + - "dW5jdGlvbnMiLAogICAgInF1ZXN0aW9uIjogIkkgbmVlZCB0byBkZXBsb3kgZnVuY3Rpb25UeXBl" + - "OiBMTE0gZnVuY3Rpb25zIG9uIGEgc2VsZi1tYW5hZ2VkLCBzaW5nbGUtbm9kZSBpc29sYXRlZCB0" + - "ZXN0IGNsdXN0ZXIuIFdoYXQgSGVsbWZpbGUgY29uZmlndXJhdGlvbiBhbmQgdmVyaWZpY2F0aW9u" + - "IHN0ZXBzIGRvIEkgbmVlZD8iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5h" + - "Z2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBlbmFibGVk" + - "IHRoZSBMTE0gYWRkb24gd2l0aCBhZGRvbnMubGxtLmVuYWJsZWQsIGNvbmZpZ3VyZWQgc2luZ2xl" + - "IHJlcGxpY2FzIGZvciB0aGUgTExNIEFQSSBHYXRld2F5IGFuZCByZXF1ZXN0IHJvdXRlciwgYW5k" + - "IGV4cGxhaW5lZCB0aGF0IHRoZSByZXF1ZXN0IHJvdXRlciB1c2VzIHBvd2VyLW9mLXR3byB3aGVu" + - "IG5vIGxvYWQtYmFsYW5jZXIgY29uZmlndXJhdGlvbiBpcyBzZXQuIEl0IGxpbmtlZCB0aGUgY2Fu" + - "b25pY2FsIHJlcXVlc3Qtcm91dGVyIGxvYWQtYmFsYW5jaW5nIGd1aWRlIGZvciBvdGhlciByb3V0" + - "aW5nIG1ldGhvZHMuIEZvciB0aGUgaXNvbGF0ZWQgcGxhaW50ZXh0IGNsdXN0ZXIsIGl0IHJlbGll" + - "ZCBvbiB0aGUgc2VsZi1tYW5hZ2VkIHN0YWNrIGRlZmF1bHQgZm9yIHRoZSBidW5kbGVkIGdhdGV3" + - "YXktdG8tQVBJIGF1dGhlbnRpY2F0aW9uIGhvcCBhbmQgaW5jbHVkZWQgYWdlbnRDb25maWcubWVy" + - "Z2VDb25maWcud29ya2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUgZm9yIHRoZSBzZXBhcmF0ZSB3" + - "b3JrZXIgdHJhbnNwb3J0LCB3aXRoIGEgd2FybmluZyB0aGF0IHBsYWludGV4dCB3b3JrZXIgdHJh" + - "bnNwb3J0IGlzIG5vdCBmb3IgcHJvZHVjdGlvbi4gSXQgcmVmcmVzaGVkIHRoZSBjb21wdXRlIHBs" + - "YW5lIHVzaW5nIHRoZSBzYW1lIGhhbmRvZmYgdXNlZCBkdXJpbmcgaW5zdGFsbGF0aW9uLCByZWRl" + - "cGxveWVkIGV4aXN0aW5nIExMTSBmdW5jdGlvbnMsIGFuZCB2ZXJpZmllZCB0aGUgTExNIGRlcGxv" + - "eW1lbnRzLCByb3V0ZSwgYW5kIGxsbS13b3JrZXIgc2lkZWNhci4iLAogICAgImV4cGVjdGVkX2Jl" + - "aGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHVzZWQgYWRkb25zLmxsbS5lbmFibGVkLCBub3Qg" + - "dGhlIG9ic29sZXRlIGxsbS5lbmFibGVkIHBhdGgiLAogICAgICAiVGhlIGFnZW50IHNldCBnYXRl" + - "d2F5IGFuZCByZXF1ZXN0Um91dGVyIHJlcGxpY2FDb3VudCB0byAxIGZvciB0aGUgc2luZ2xlLW5v" + - "ZGUgdGVzdCBjbHVzdGVyIiwKICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCB0aGUgcmVxdWVz" + - "dCByb3V0ZXIgZGVmYXVsdHMgdG8gcG93ZXItb2YtdHdvIGFuZCBsaW5rZWQgdGhlIGNhbm9uaWNh" + - "bCByZXF1ZXN0LXJvdXRlciBsb2FkLWJhbGFuY2luZyBndWlkZSBmb3Igb3RoZXIgbWV0aG9kcyIs" + - "CiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgdGhlIGJ1bmRsZWQgZ2F0ZXdheS10by1B" + - "UEkgYXV0aGVudGljYXRpb24gaG9wIGRlZmF1bHRzIHRvIHBsYWludGV4dCwgaW5jbHVkZWQgd29y" + - "a2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUgb25seSBmb3IgdGhlIGlzb2xhdGVkIHdvcmtlciB0" + - "cmFuc3BvcnQsIGFuZCB3YXJuZWQgYWdhaW5zdCBwbGFpbnRleHQgd29ya2VyIHRyYW5zcG9ydCBp" + - "biBwcm9kdWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBhcHBsaWVkIHRoZSBjb250cm9sLXBsYW5l" + - "IEhlbG1maWxlIGVudmlyb25tZW50LCByZWZyZXNoZWQgdGhlIGNvbXB1dGUgcGxhbmUgd2l0aCB0" + - "aGUgc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLCBhbmQgcmVjcmVhdGVkIG9yIHJlZGVwbG95ZWQgZXhp" + - "c3RpbmcgTExNIGZ1bmN0aW9ucyIsCiAgICAgICJUaGUgYWdlbnQgdmVyaWZpZWQgbGxtLWFwaS1n" + - "YXRld2F5LCBsbG0tcmVxdWVzdC1yb3V0ZXIsIHRoZSBMTE0gSFRUUFJvdXRlLCBhbmQgdGhlIGxs" + - "bS13b3JrZXIgc2lkZWNhciBpbmNsdWRpbmcgLS1xdWljLWluc2VjdXJlIgogICAgXQogIH0sCiAg" + - "ewogICAgImlkIjogIkc4LU5FRy1ub3QtZm9yLWszZCIsCiAgICAicXVlc3Rpb24iOiAiU2V0IHVw" + - "IGEgbG9jYWwgTlZDRiBkZXYgY2x1c3RlciB1c2luZyBrM2QgZm9yIHRlc3RpbmciLAogICAgImV4" + - "cGVjdGVkX3NraWxsIjogbnVsbCwKICAgICJzaG91bGRfdHJpZ2dlciI6IGZhbHNlLAogICAgImdy" + - "b3VuZF90cnV0aCI6ICJUaGlzIGlzIGEgbG9jYWwgazNkIGRldmVsb3BtZW50IHJlcXVlc3QgdGhh" + - "dCBiZWxvbmdzIHRvIHRoZSBudmNmLXNlbGYtaG9zdGVkLWxvY2FsLWRldiBza2lsbCwgbm90IG52" + - "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi4gVGhlIGFnZW50IGRpZCBub3QgcmVhZCBvciB1" + - "c2UgdGhlIHNlbGYtbWFuYWdlZCBpbnN0YWxsYXRpb24gc2tpbGwgYW5kIGluc3RlYWQgcHJvdmlk" + - "ZWQgazNkLXNwZWNpZmljIGd1aWRhbmNlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAg" + - "ICAgICJUaGUgYWdlbnQgZGlkIG5vdCByZWFkIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + - "bi9TS0lMTC5tZCIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm92aWRlIGhlbG1maWxlLWJh" + - "c2VkIHByb2R1Y3Rpb24gZGVwbG95bWVudCBpbnN0cnVjdGlvbnMiLAogICAgICAiVGhlIGFnZW50" + - "IHByb3ZpZGVkIGszZC1zcGVjaWZpYyBsb2NhbCBkZXZlbG9wbWVudCBndWlkYW5jZSBvciBkZWZl" + - "cnJlZCB0byB0aGUgYXBwcm9wcmlhdGUgbG9jYWwtZGV2IHNraWxsIgogICAgXQogIH0KXQpQSwcI" + - "R1VqVkpWAABKVgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAvAAkAZGF0YS9udmNmLXNlbGYt" + - "bWFuYWdlZC1pbnN0YWxsYXRpb24vZXhhbXBsZXMubWRVVAUAAQCmzhIjIEV4YW1wbGVzCgpXb3Jr" + - "ZWQgZXhhbXBsZXMgYmFzZWQgb24gcmVhbCBkZXBsb3ltZW50IHNjZW5hcmlvcy4KCiMjIEV4YW1w" + - "bGUgMTogT3ZlcnJpZGUgQ2Fzc2FuZHJhIFJlc291cmNlcwoKVGhlIGRlZmF1bHQgQ2Fzc2FuZHJh" + - "IHJlc291cmNlIGxpbWl0cyBjYXVzZSBPT00gb24gbGFyZ2UgaW5zdGFuY2UgdHlwZXMgKGUuZy4s" + - "IGBwNS40OHhsYXJnZWApLgoKUHJvYmxlbTogQ2Fzc2FuZHJhIHBvZHMgcmVzdGFydCB3aXRoIGBP" + - "T01LaWxsZWRgLgoKU29sdXRpb246IE92ZXJyaWRlIHJlc291cmNlcyB2aWEgaGVsbWZpbGUgcmVs" + - "ZWFzZSB2YWx1ZXMgYmxvY2suCgojIyMgU3RlcCAxOiBDYXB0dXJlIGJhc2VsaW5lCgpgYGBiYXNo" + - "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRl" + - "bXBsYXRlID4gL3RtcC9jYXNzLWJlZm9yZS55YW1sCmdyZXAgLUE4ICdyZXNvdXJjZXM6JyAvdG1w" + - "L2Nhc3MtYmVmb3JlLnlhbWwgfCBoZWFkIC0xMApgYGAKCiMjIyBTdGVwIDI6IEFkZCBvdmVycmlk" + - "ZSB0byBoZWxtZmlsZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbAoKSW4gdGhlIGV4YW1w" + - "bGVzIGJlbG93LCBgPHByaXZhdGUtdmFsdWVzPmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRp" + - "cmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUgc3RhY2sgcm9vdC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNz" + - "YW5kcmEKICB2ZXJzaW9uOiAwLjguMAogIGNvbmRpdGlvbjogY2Fzc2FuZHJhLmVuYWJsZWQKICBu" + - "YW1lc3BhY2U6IGNhc3NhbmRyYS1zeXN0ZW0KICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAg" + - "ICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJl" + - "cXVpcmVkRW52ICJIRUxNRklMRV9FTlYiIH19LXNlY3JldHMueWFtbAogICAgLSBjYXNzYW5kcmE6" + - "CiAgICAgICAgcmVzb3VyY2VzOgogICAgICAgICAgbGltaXRzOgogICAgICAgICAgICBjcHU6ICI4" + - "IgogICAgICAgICAgICBtZW1vcnk6IDgxOTJNaQogICAgICAgICAgcmVxdWVzdHM6CiAgICAgICAg" + - "ICAgIGNwdTogIjIiCiAgICAgICAgICAgIG1lbW9yeTogNDA5Nk1pCmBgYAoKIyMjIFN0ZXAgMzog" + - "VmVyaWZ5IGFuZCBhcHBseQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1z" + - "ZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSA+IC90bXAvY2Fzcy1hZnRlci55YW1sCmRp" + - "ZmYgL3RtcC9jYXNzLWJlZm9yZS55YW1sIC90bXAvY2Fzcy1hZnRlci55YW1sICAjIENvbmZpcm0g" + - "cmVzb3VyY2VzIGNoYW5nZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3Ig" + - "bmFtZT1jYXNzYW5kcmEgc3luYwpgYGAKCk5vdGU6IGByZXNvdXJjZVByZXNldGAgKGEgQml0bmFt" + - "aSBmZWF0dXJlKSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBOVkNGIGNhc3NhbmRyYSB3cmFwcGVy" + - "IGNoYXJ0LiBVc2UgZXhwbGljaXQgYHJlc291cmNlc2AgaW5zdGVhZC4KCi0tLQoKIyMgRXhhbXBs" + - "ZSAyOiBEZXBsb3kgZnJvbSBOR0MgUHJpdmF0ZSBSZWdpc3RyeSB3aXRoIFB1bGwgU2VjcmV0cwoK" + - "RGVwbG95IHRoZSBOVkNGIHN0YWNrIHB1bGxpbmcgaW1hZ2VzIGRpcmVjdGx5IGZyb20gTkdDIChg" + - "bnZjci5pb2ApIGluc3RlYWQgb2YgYSBtaXJyb3JlZCByZWdpc3RyeSwgdXNpbmcgaW1hZ2UgcHVs" + - "bCBzZWNyZXRzLgoKIyMjIFN0ZXAgMTogQ29uZmlndXJlIGVudmlyb25tZW50IGZvciBOR0MKCmBg" + - "YHlhbWwKIyBlbnZpcm9ubWVudHMvPGVudj4ueWFtbApnbG9iYWw6CiAgaGVsbToKICAgIHNvdXJj" + - "ZXM6CiAgICAgIHJlZ2lzdHJ5OiBudmNyLmlvCiAgICAgIHJlcG9zaXRvcnk6IG52aWRpYS9udmNm" + - "CiAgaW1hZ2U6CiAgICByZWdpc3RyeTogbnZjci5pbwogICAgcmVwb3NpdG9yeTogbnZpZGlhL252" + - "Y2YKYGBgCgojIyMgU3RlcCAyOiBBdXRoZW50aWNhdGUgbG9jYWxseSAoZm9yIGhlbG1maWxlIGNo" + - "YXJ0IHB1bGxzKQoKYGBgYmFzaApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4n" + - "IC1wICIkTkdDX0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRo" + - "dG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmBgYAoKIyMjIFN0ZXAgMzogQ3JlYXRlIG5hbWVzcGFj" + - "ZXMgYW5kIHB1bGwgc2VjcmV0cwoKYGBgYmFzaApleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLW5n" + - "Yy1hcGkta2V5PiIKCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2Yg" + - "YXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwg" + - "LS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3BhY2UgIiRucyIg" + - "XAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpkb25lCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5" + - "c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQt" + - "bWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBj" + - "cmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNl" + - "cnZlcj1udmNyLmlvIFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAg" + - "LS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIg" + - "XAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpkb25lCmBgYAoKIyMjIFN0ZXAgNDogQWRkIGlt" + - "YWdlUHVsbFNlY3JldHMgdG8gaGVsbWZpbGUgcmVsZWFzZXMKCkFkZCB0aGUgY2hhcnQtc3BlY2lm" + - "aWMgYGltYWdlUHVsbFNlY3JldHNgIGtleSB0byBlYWNoIHJlbGVhc2UuIEV4YW1wbGUgZm9yIGNh" + - "c3NhbmRyYSBpbiBgaGVsbWZpbGUuZC8wMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGxgOgoKYGBg" + - "eWFtbAotIG5hbWU6IGNhc3NhbmRyYQogIHZlcnNpb246IDAuOC4wCiAgY29uZGl0aW9uOiBjYXNz" + - "YW5kcmEuZW5hYmxlZAogIG5hbWVzcGFjZTogY2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAqZGVwZW5k" + - "ZW5jeQogIHZhbHVlczoKICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAtIC4uLzxwcml2" + - "YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1s" + - "CiAgICAtIGNhc3NhbmRyYToKICAgICAgICBnbG9iYWw6CiAgICAgICAgICBpbWFnZVB1bGxTZWNy" + - "ZXRzOgogICAgICAgICAgICAtIG52Y3ItY3JlZHMKYGBgCgpTZWUgW3JlZmVyZW5jZXMvcHVsbC1z" + - "ZWNyZXRzLm1kXShyZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCkgZm9yIHRoZSBrZXkgZm9yIGV2" + - "ZXJ5IGNoYXJ0LgoKVGhlc2UgYXJlIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcy4gRm9yIGEgc2Vw" + - "YXJhdGUgY29tcHV0ZSBjbHVzdGVyLCBjcmVhdGUgdGhlCnNlY3JldCBvbmx5IGluIGBudmNhLW9w" + - "ZXJhdG9yYDsgdGhlIGNoYXJ0IGFuZCBvcGVyYXRvciBtaXJyb3IgaXQgdG8KYG52Y2Etc3lzdGVt" + - "YC4gU2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21w" + - "dXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCNwdWxsLXNlY3JldHMpLgoKIyMjIFN0ZXAgNTogRGVw" + - "bG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLWt1YmUtY29udGV4dCA8" + - "Y29udHJvbC1wbGFuZS1jb250ZXh0PiBzeW5jCmBgYAoKIyMjIFN0ZXAgNjogUGF0Y2ggU2Vydmlj" + - "ZUFjY291bnRzIGZvciBjaGFydHMgd2l0aG91dCBuYXRpdmUgc3VwcG9ydAoKQWZ0ZXIgUGhhc2Ug" + - "MSAoZGVwZW5kZW5jaWVzKSBjb21wbGV0ZXMsIE9wZW5CYW8gcG9kcyB3aWxsIGJlIGluIGBJbWFn" + - "ZVB1bGxCYWNrT2ZmYC4gUGF0Y2ggYW5kIHJlc3RhcnQ6CgpgYGBiYXNoCmZvciBucyBpbiB2YXVs" + - "dC1zeXN0ZW0gbnZjZiBlc3M7IGRvCiAgZm9yIHNhIGluICQoa3ViZWN0bCAtLWNvbnRleHQgPGNv" + - "bnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHNhIC1uICIkbnMiIFwKICAgIC0tbm8taGVhZGVycyAt" + - "byBjdXN0b20tY29sdW1ucz0iOm1ldGFkYXRhLm5hbWUiKTsgZG8KICAgIGt1YmVjdGwgLS1jb250" + - "ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IHBhdGNoIHNlcnZpY2VhY2NvdW50IC1uICIkbnMi" + - "ICIkc2EiIFwKICAgICAgLXAgJ3siaW1hZ2VQdWxsU2VjcmV0cyI6IFt7Im5hbWUiOiAibnZjci1j" + - "cmVkcyJ9XX0nCiAgZG9uZQpkb25lCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + - "bnRleHQ+IGRlbGV0ZSBwb2RzIC1uIHZhdWx0LXN5c3RlbSAtLWFsbApgYGAKClZlcmlmeToKCmBg" + - "YGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGV2ZW50" + - "cyAtbiB2YXVsdC1zeXN0ZW0gXAogIC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAnIHwgZ3JlcCAt" + - "aSBwdWxsCiMgU2hvdWxkIHNob3cgIlN1Y2Nlc3NmdWxseSBwdWxsZWQgaW1hZ2UiIGZyb20gbnZj" + - "ci5pbwpgYGAKCi0tLQoKIyMgRXhhbXBsZSAzOiBGdWxsIFRlYXJkb3duIGFuZCBSZWluc3RhbGwK" + - "CldoZW4gYSBkZXBsb3ltZW50IGlzIGJyb2tlbiBhbmQgeW91IG5lZWQgYSBjbGVhbiBzbGF0ZS4K" + - "CiMjIyBTdGVwIDE6IERlc3Ryb3kgdGhlIGNvbXB1dGUtcGxhbmUgc3RhY2sKCmBgYGJhc2gKbWFr" + - "ZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVS" + - "X05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJ" + - "R19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKSWYgY29tcHV0ZSBjbGVhbnVw" + - "IGlzIHN0dWNrIG9uIGZpbmFsaXplcnMsIHVzZSB0aGUgY29tcHV0ZS1jb250ZXh0IHByb2NlZHVy" + - "ZSBpbgpbZGVidWdnaW5nLm1kXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCNmYWlsdXJlLW52Y2Et" + - "Y2xlYW51cC1zdHVjay1maW5hbGl6ZXJzKS4KCiMjIyBTdGVwIDI6IERlcmVnaXN0ZXIgdGhlIGNv" + - "bXB1dGUgY2x1c3RlcgoKUmVhZCBgY2x1c3RlcklEYCBhbmQgYG5jYUlEYCBmcm9tCmBkZXBsb3kv" + - "c3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9yZWdpc3RyYXRpb24vPGNsdXN0ZXItbmFtZT4tcmVn" + - "aXN0ZXItdmFsdWVzLnlhbWxgLgpTaG93IHRoZSBJRCBhbmQgZ2V0IGNvbmZpcm1hdGlvbiBiZWZv" + - "cmUgZGVsZXRpbmcgdGhlIElDTVMgcm93OgoKYGBgYmFzaAo8bnZjZi1jbGk+IC0tY29uZmlnIDxj" + - "b25maWc+IGNsdXN0ZXIgZGVsZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1y" + - "ZWdpc3RyYXRpb24tdmFsdWVzPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1p" + - "c3NpbmcKYGBgCgpSZXBlYXQgc3RlcHMgMSBhbmQgMiBmb3IgZXZlcnkgY29tcHV0ZSBjbHVzdGVy" + - "LgoKIyMjIFN0ZXAgMzogRGVzdHJveSB0aGUgY29udHJvbC1wbGFuZSBzdGFjawoKUHJlc2VydmUg" + - "dGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3BhY2UgcHJlc2Vy" + - "dmF0aW9uIGRvZXMKbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEJlZm9yZSBydW5uaW5n" + - "IGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIKY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLiBGb3Ig" + - "YW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZQpgY2VydE1hbmFnZXIu" + - "ZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQK" + - "c3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVk" + - "OiB0cnVlYCwgdmVyaWZ5Cm1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQg" + - "YWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkCmV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNw" + - "YWNlIHJlbW92YWwgYWZ0ZXIgdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZApnZXR0" + - "aW5nIGV4cGxpY2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlIGRvIG5vdCBkZWxldGUgaXQuCgpg" + - "YGBiYXNoCktVQkVDT05GSUc9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4gXAptYWtlIC1DIGRl" + - "cGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIGRlc3Ryb3kgXAogIEhFTE1GSUxFX0VOVj08ZW52PiBc" + - "CiAgS1VCRUNPTkZJR19GSUxFPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKUGFzcyBi" + - "b3RoIGt1YmVjb25maWcgZm9ybXMgYmVjYXVzZSBjb250cm9sLXBsYW5lIG5hbWVzcGFjZSBjbGVh" + - "bnVwIHVzZXMKYW1iaWVudCBga3ViZWN0bGAuCgojIyMgU3RlcCA0OiBWZXJpZnkgY2xlYW4KCmBg" + - "YGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG5zIHwg" + - "XAogIGdyZXAgLUUgJyhudmNhfG52Y2YtYmFja2VuZHxncm92ZXxkeW5hbW8pJwprdWJlY3RsIC0t" + - "Y29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgbnMgfCBcCiAgZ3JlcCAtRSAnKGNh" + - "c3NhbmRyYXxuYXRzfHZhdWx0fG52Y2Z8YXBpLWtleXN8ZXNzfHNpcyknCiMgQm90aCBjb21tYW5k" + - "cyBzaG91bGQgcmV0dXJuIGVtcHR5LgpgYGAKCiMjIyBTdGVwIDU6IFJlaW5zdGFsbCBpbiBzcGxp" + - "dCBvcmRlcgoKRm9sbG93IFtDbGVhbiBJbnN0YWxsYXRpb25dKFNLSUxMLm1kI2NsZWFuLWluc3Rh" + - "bGxhdGlvbiksIHRoZW4gcmV0dXJuIHRvIHRoZQpzYW1lIGhhbmRvZmYgaW4gW1NwbGl0IENvbXB1" + - "dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0" + - "aW9uLm1kKS4KCi0tLQoKIyMgRXhhbXBsZSA0OiBSZWNvdmVyIGZyb20gYSBHYXRld2F5IEVuZHBv" + - "aW50IENoYW5nZQoKVGhlIHNlcGFyYXRlbHkgcHJvdmlzaW9uZWQgR2F0ZXdheSBvciBpdHMgbG9h" + - "ZCBiYWxhbmNlciB3YXMgcmVjcmVhdGVkIGFuZCBnb3QgYSBuZXcgZW5kcG9pbnQuCgojIyMgU3Rl" + - "cCAxOiBHZXQgdGhlIG5ldyBlbmRwb2ludAoKYGBgYmFzaApHQVRFV0FZX0FERFI9JChrdWJlY3Rs" + - "IC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1n" + - "YXRld2F5IC1uIGVudm95LWdhdGV3YXkgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNz" + - "ZXNbMF0udmFsdWV9JykKdGVzdCAtbiAiJEdBVEVXQVlfQUREUiIKYGBgCgojIyMgU3RlcCAyOiBV" + - "cGRhdGUgRE5TIGFuZCBkaXJlY3QgYWRkcmVzcyBmaWVsZHMKCktlZXAgYGdsb2JhbC5kb21haW5g" + - "LCByb3V0ZSBob3N0bmFtZXMsIGFuZCBDTEkgSG9zdCBmaWVsZHMgdW5jaGFuZ2VkLiBQb2ludCB0" + - "aGUKRE5TIHJlY29yZHMgZm9yIHJlbmRlcmVkIHJvdXRlIGhvc3RuYW1lcywgc3VjaCBhcyBgYXBp" + - "Ljxkb21haW4+YCBhbmQKYCouaW52b2NhdGlvbi48ZG9tYWluPmAsIHRvIGBHQVRFV0FZX0FERFJg" + - "LiBGb3IgYSB0ZW1wb3JhcnkgZW52aXJvbm1lbnQgd2l0aG91dApETlMsIGtlZXAgaXRzIHJlc2Vy" + - "dmVkIHJvdXRlIHN1ZmZpeCBhbmQgY29ubmVjdCB0byBgR0FURVdBWV9BRERSYCB3aXRoIHRoZQpt" + - "YXRjaGluZyBgSG9zdGAgaGVhZGVyLgoKRm9yIGEgc3BsaXQgZGVwbG95bWVudCBjb25maWd1cmVk" + - "IHdpdGggZGlyZWN0IEdhdGV3YXkgYWRkcmVzc2VzLCByZXBsYWNlIG9ubHkKdGhlIGFkZHJlc3Mt" + - "YmVhcmluZyB2YWx1ZXM6IGNvbnRyb2wtcGxhbmUgYG52Y2ZOYXRzU2VydmljZVVSTGAsIGNvbXB1" + - "dGUtcGxhbmUKSUNNUywgUmVWYWwsIGFuZCBOQVRTIFVSTHMsIGFuZCBDTEkgVVJMIGZpZWxkcy4g" + - "S2VlcCB0aGVpciBkb21haW4gYW5kIEhvc3QKb3ZlcnJpZGVzIHVuY2hhbmdlZC4gUmVmcmVzaCBy" + - "ZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlvbiB0aHJvdWdoIHRoZSBzYW1lCmhhbmRvZmYgdXNl" + - "ZCBvcmlnaW5hbGx5LiBTZWUKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZl" + - "cmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKQpmb3IgdGhlIGZpZWxkcyBhbmQg" + - "Y29tcGxldGUgY29tbWFuZHMuCgojIyMgU3RlcCAzOiBWZXJpZnkgYm90aCBjb250ZXh0cwoKYGBg" + - "YmFzaApkaWcgK3Nob3J0ICJhcGkuPGRvbWFpbj4iCmN1cmwgLUggIkhvc3Q6IGFwaS48ZG9tYWlu" + - "PiIgImh0dHA6Ly8kR0FURVdBWV9BRERSL2hlYWx0aCIKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAtbiBlbnZveS1n" + - "YXRld2F5IC1vIHdpZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4g" + - "Z2V0IGh0dHByb3V0ZXMgLUEKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4" + - "dD4gZ2V0IHRjcHJvdXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250" + - "ZXh0PiByb2xsb3V0IHN0YXR1cyBcCiAgZGVwbG95bWVudC9udmNhLW9wZXJhdG9yIC1uIG52Y2Et" + - "b3BlcmF0b3IgLS10aW1lb3V0PTEwbQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1j" + - "b250ZXh0PiB3YWl0IFwKICBudmNmYmFja2VuZC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+" + - "IC1uIG52Y2Etb3BlcmF0b3IgXAogIC0tZm9yPWpzb25wYXRoPSd7LnN0YXR1cy5hZ2VudFN0YXR1" + - "c30nPWhlYWx0aHkgLS10aW1lb3V0PTEwbQpgYGAKCi0tLQoKIyMgRXhhbXBsZSA1OiBEZXBsb3kg" + - "T25seSBEZXBlbmRlbmNpZXMKClVzZWZ1bCBmb3IgdGVzdGluZyBvciB3aGVuIGl0ZXJhdGluZyBv" + - "biBzZXJ2aWNlIGNvbmZpZ3VyYXRpb24uCgpgYGBiYXNoCiMgRGVwbG95IGp1c3QgTkFUUywgQ2Fz" + - "c2FuZHJhLCBPcGVuQmFvCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJl" + - "bGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMKCiMgQ2hlY2sgc3RhdHVzCmt1YmVjdGwgZ2V0" + - "IHBvZHMgLW4gbmF0cy1zeXN0ZW0Ka3ViZWN0bCBnZXQgcG9kcyAtbiBjYXNzYW5kcmEtc3lzdGVt" + - "Cmt1YmVjdGwgZ2V0IHBvZHMgLW4gdmF1bHQtc3lzdGVtCgojIERlcGxveSBqdXN0IG9uZSBzcGVj" + - "aWZpYyByZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9" + - "Y2Fzc2FuZHJhIHN5bmMKYGBgCgojIyMgU2VsZWN0b3IgcmVmZXJlbmNlCgp8IFNlbGVjdG9yIHwg" + - "UmVsZWFzZXMgfAp8LS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGByZWxlYXNlLWdyb3VwPWRlcGVu" + - "ZGVuY2llc2AgfCBuYXRzLCBjYXNzYW5kcmEsIG9wZW5iYW8tc2VydmVyIHwKfCBgcmVsZWFzZS1n" + - "cm91cD1zZXJ2aWNlc2AgfCBhcGkta2V5cywgc2lzLCBhcGksIGludm9jYXRpb24tc2VydmljZSwg" + - "Z3JwYy1wcm94eSwgZXNzLWFwaSwgbm90YXJ5LXNlcnZpY2UsIHJldmFsLCBvcHRpb25hbCBsbG0t" + - "cmVxdWVzdC1yb3V0ZXIgYW5kIGxsbS1hcGktZ2F0ZXdheSB3aGVuIGBsbG0uZW5hYmxlZD10cnVl" + - "YCwgb3B0aW9uYWwgdmFuaXR5LWdhdGV3YXkgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGlu" + - "Y2x1ZGUgdGhlIGFkZG9uIGFuZCBoYXZlIGBhZGRvbnMudmFuaXR5R2F0ZXdheS5lbmFibGVkPXRy" + - "dWVgLCBvcHRpb25hbCBudmNmLXVpIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRl" + - "IHRoZSBhZGRvbiBhbmQgaGF2ZSBgYWRkb25zLm52Y2ZVaS5lbmFibGVkPXRydWVgIHwKfCBgbmFt" + - "ZT1sbG0tcmVxdWVzdC1yb3V0ZXJgIHwgRGVwbG95IGp1c3QgdGhlIExMTSByZXF1ZXN0IHJvdXRl" + - "ciB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCB8CnwgYG5hbWU9bGxtLWFwaS1nYXRld2F5YCB8IERl" + - "cGxveSBqdXN0IHRoZSBMTE0gQVBJIGdhdGV3YXkgd2hlbiBgbGxtLmVuYWJsZWQ9dHJ1ZWAgfAp8" + - "IGBuYW1lPXZhbml0eS1nYXRld2F5YCB8IERlcGxveSBqdXN0IFZhbml0eSBHYXRld2F5IG9ubHkg" + - "d2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5kIGBhZGRvbnMu" + - "dmFuaXR5R2F0ZXdheS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1udmNmLXVpYCB8IERlcGxveSBO" + - "VkNGIFVJIG9ubHkgd2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2Ug" + - "YW5kIGBhZGRvbnMubnZjZlVpLmVuYWJsZWQ9dHJ1ZWAgfAp8IGByZWxlYXNlLWdyb3VwPWluZ3Jl" + - "c3NgIHwgaW5ncmVzcyAoZ2F0ZXdheSByb3V0ZXMpIHwKfCBgbmFtZT08cmVsZWFzZT5gIHwgQW55" + - "IGluZGl2aWR1YWwgcmVsZWFzZSBieSBuYW1lIHwKCk5vdGU6IGBhZG1pbi1pc3N1ZXItcHJveHlg" + - "IGRvZXMgbm90IGhhdmUgYSByZWxlYXNlLWdyb3VwIGxhYmVsLiBUYXJnZXQgaXQgd2l0aCBgLS1z" + - "ZWxlY3RvciBuYW1lPWFkbWluLWlzc3Vlci1wcm94eWAuClBLBwgCUk5AfygAAH8oAABQSwMEFAAI" + - "AAAAAAAhAAAAAAAAAAAAAAAAAEwACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + - "bi9yZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kVVQFAAEAps4SIyBTcGxp" + - "dCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbgoKVGhlIGNvbnRyb2wgcGxhbmUgYW5kIGNvbXB1" + - "dGUgcGxhbmUgYXJlIHNlcGFyYXRlIHN0YWNrcy4gSW5zdGFsbCB0aGUgY29udHJvbApwbGFuZSBm" + - "aXJzdCwgdGhlbiByZWdpc3RlciBhbmQgaW5zdGFsbCBlYWNoIGNvbXB1dGUgY2x1c3Rlci4gQ2hv" + - "b3NlIG9uZSBoYW5kb2ZmCmJlbG93IGFuZCB1c2UgaXQgZm9yIHRoZSBmdWxsIGxpZmVjeWNsZS4g" + - "RG8gbm90IGNvbWJpbmUgYSBDTEktZ2VuZXJhdGVkIHByb2ZpbGUKd2l0aCB0aGUgSGVsbWZpbGUg" + - "dmFsdWVzIGZsb3cuCgojIyBDaG9vc2UgYSBIYW5kb2ZmCgp8IEZsb3cgfCBTb3VyY2Ugb2YgY29u" + - "dHJvbC1wbGFuZSBlbmRwb2ludHMgfCBSZWdpc3RyYXRpb24gYXJ0aWZhY3QgfAp8LS0tLS0tfC0t" + - "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t" + - "fAp8IEhlbG1maWxlIHZhbHVlcyB8IFNlcGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUt" + - "cGxhbmUgZW52aXJvbm1lbnQgZmlsZXMgfCBgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxh" + - "bmUvcmVnaXN0cmF0aW9uLzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgfAp8IENMSSBw" + - "cm9maWxlIHwgQ0xJLWdlbmVyYXRlZCBgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2Nv" + - "bnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sYCB8IENMSS1nZW5lcmF0ZWQgYGRlcGxveS9zdGFja3Mv" + - "bnZjZi1jb21wdXRlLXBsYW5lL291dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIHwK" + - "ClRoZSBDTEkgcHJvZmlsZSBpcyBtYW5kYXRvcnkgZm9yIHRoZSBDTEkgZmxvdyBhbmQgbXVzdCBu" + - "b3QgYmUgaGFuZC1hdXRob3JlZC4KVGhlIEhlbG1maWxlIGZsb3cgZG9lcyBub3QgY29uc3VtZSBh" + - "IGNvbnRyb2wtcGxhbmUgcHJvZmlsZS4KCkNvbW1hbmRzIGJlbG93IHVzZSBtb25vcmVwbyBwYXRo" + - "cyBmcm9tIHRoZSByZXBvc2l0b3J5IHJvb3QuIE9wZXJhdG9ycyB1c2luZwpleHRyYWN0ZWQgcGFj" + - "a2FnZXMgbmVlZCBtYXRjaGluZy12ZXJzaW9uIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgYW5k" + - "CmBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXMuIFN1YnN0aXR1dGUgdGhvc2UgYnVu" + - "ZGxlIHJvb3RzIGZvcgpgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWRgIGFuZCBgZGVwbG95L3N0" + - "YWNrcy9udmNmLWNvbXB1dGUtcGxhbmVgLgoKIyMgSGVsbWZpbGUgVmFsdWVzIEZsb3cKCkNyZWF0" + - "ZSBib3RoIGVudmlyb25tZW50IGZpbGVzIGJlZm9yZSBpbnN0YWxsYXRpb246CgotIGBkZXBsb3kv" + - "c3RhY2tzL3NlbGYtbWFuYWdlZC9lbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgZm9yIGNvbnRyb2wt" + - "cGxhbmUKICByZWdpc3RyeSwgZG9tYWluLCBHYXRld2F5LCByb3V0ZXMsIGFuZCBzZXJ2aWNlIHNl" + - "dHRpbmdzLgotIGBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMv" + - "PGVudj4ueWFtbGAgZm9yIGNvbXB1dGUtcGxhbmUKICByZWdpc3RyeSwgcHVsbCBzZWNyZXRzLCBh" + - "bmQgY29tcHV0ZS1yZWFjaGFibGUgSUNNUywgUmVWYWwsIGFuZCBOQVRTIHZhbHVlcy4KCkZvciBF" + - "S1MsIHVzZSB0aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2Rv" + - "Y3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4KVGhl" + - "IGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQga2VlcHMgdGhlIEVudm95IEdhdGV3YXkgY29udHJv" + - "bGxlciBpbgpgZW52b3ktZ2F0ZXdheS1zeXN0ZW1gLCBhdHRhY2hlcyByb3V0ZXMgdG8gYEdhdGV3" + - "YXkvbnZjZi1nYXRld2F5YCBpbgpgZW52b3ktZ2F0ZXdheWAsIGFuZCBlbmFibGVzIHRoZSBOQVRT" + - "IHJvdXRlLiBUaGUgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCB1c2VzCnRoZSBleHRlcm5hbCBh" + - "ZGRyZXNzIHBsdXMgdGhlIHNlcnZpY2UgaG9zdCBvdmVycmlkZXMuIEhlcmUsCmA8Z2F0ZXdheS1h" + - "ZGRyZXNzPmAgaXMgdGhlIE5MQiBhZGRyZXNzIGFuZCBgPGdhdGV3YXktZG9tYWluPmAgaXMgdGhl" + - "IEROUyBiYXNlCndob3NlIHNlcnZpY2Ugc3ViZG9tYWlucyByZXNvbHZlIHRvIHRoYXQgTkxCOgoK" + - "YGBgeWFtbAojIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55" + - "YW1sCmdsb2JhbDoKICBkb21haW46ICI8Z2F0ZXdheS1kb21haW4+IgogIHdvcmtlckVuZHBvaW50" + - "czoKICAgIG52Y2ZTZXJ2aWNlVVJMOiAiaHR0cDovL2FwaS48Z2F0ZXdheS1kb21haW4+IgogICAg" + - "bnZjZkdycGNTZXJ2aWNlVVJMOiAiaHR0cDovL3dvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiIK" + - "ICAgIG52Y2ZOYXRzU2VydmljZVVSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNzPjo0MjIyIgog" + - "ICAgbnZjdFNlcnZpY2VVUkw6ICJodHRwOi8vdGFza3MuPGdhdGV3YXktZG9tYWluPiIKICAgIG52" + - "Y3RHcnBjU2VydmljZVVSTDogImh0dHA6Ly93b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiIK" + - "ICAgIGludm9jYXRpb25TZXJ2aWNlVVJMOiAiaHR0cDovL2ludm9jYXRpb24uPGdhdGV3YXktZG9t" + - "YWluPiIKCmdycGNwcm94eToKICBudmNmR3JwY1NlcnZpY2VVUkw6ICJodHRwOi8vYXBpLm52Y2Yu" + - "c3ZjLmNsdXN0ZXIubG9jYWw6OTA5MCIKCmluZ3Jlc3M6CiAgZ2F0ZXdheUFwaToKICAgIGNvbnRy" + - "b2xsZXJOYW1lc3BhY2U6IGVudm95LWdhdGV3YXktc3lzdGVtCiAgICBnYXRld2F5czoKICAgICAg" + - "c2hhcmVkOiB7bmFtZTogbnZjZi1nYXRld2F5LCBuYW1lc3BhY2U6IGVudm95LWdhdGV3YXl9CiAg" + - "ICAgIGdycGM6IHtuYW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheX0K" + - "ICAgICAgbmF0czoKICAgICAgICBuYW1lOiBudmNmLWdhdGV3YXkKICAgICAgICBuYW1lc3BhY2U6" + - "IGVudm95LWdhdGV3YXkKICAgICAgICBsaXN0ZW5lck5hbWU6IG5hdHMKICAgIHJvdXRlczoKICAg" + - "ICAgbnZjZkFwaToKICAgICAgICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAg" + - "ICAgaG9zdG5hbWVzOiBbIndvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG52Y3RB" + - "cGk6CiAgICAgICAgZ3JwYzoKICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgIGhvc3Ru" + - "YW1lczogWyJ3b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG5hdHM6CiAgICAg" + - "ICAgZW5hYmxlZDogdHJ1ZQoKb3BlbmJhbzoKICBtaWdyYXRpb25zOgogICAgaXNzdWVyRGlzY292" + - "ZXJ5OgogICAgICBlbmFibGVkOiB0cnVlCmBgYAoKYGBgeWFtbAojIGRlcGxveS9zdGFja3MvbnZj" + - "Zi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoKICBudmNhT3Bl" + - "cmF0b3I6CiAgICBzZWxmTWFuYWdlZDoKICAgICAgaWNtc1NlcnZpY2VVUkw6ICJodHRwOi8vPGdh" + - "dGV3YXktYWRkcmVzcz4iCiAgICAgIGljbXNTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAic2lz" + - "LjxnYXRld2F5LWRvbWFpbj4iCiAgICAgIHJldmFsU2VydmljZVVSTDogImh0dHA6Ly88Z2F0ZXdh" + - "eS1hZGRyZXNzPiIKICAgICAgcmV2YWxTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAicmV2YWwu" + - "PGdhdGV3YXktZG9tYWluPiIKICAgICAgbmF0c1VSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNz" + - "Pjo0MjIyIgogICAgICBuYXRzSG9zdE92ZXJyaWRlOiAibmF0cy48Z2F0ZXdheS1kb21haW4+Igpg" + - "YGAKClByZXZpZXcgYW5kIGluc3RhbGwgdGhlIGNvbnRyb2wgcGxhbmUgYWdhaW5zdCBpdHMgY29u" + - "dGV4dDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCB0ZW1wbGF0" + - "ZSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxh" + - "bmUta3ViZWNvbmZpZz4KCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgaW5zdGFs" + - "bCBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxh" + - "bmUta3ViZWNvbmZpZz4KYGBgCgpCZWZvcmUgcmVnaXN0ZXJpbmcgdGhyb3VnaCBhIGJhcmUgR2F0" + - "ZXdheSBhZGRyZXNzLCBjcmVhdGUgb3IgdXBkYXRlIHRoZSBDTEkKY29uZmlnIHBhc3NlZCBhcyBg" + - "TlZDRl9DTElfQ09ORklHYDoKCmBgYHlhbWwKYmFzZV9odHRwX3VybDogImh0dHA6Ly88Z2F0ZXdh" + - "eS1hZGRyZXNzPiIKaW52b2tlX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKYmFzZV9n" + - "cnBjX3VybDogIjxnYXRld2F5LWFkZHJlc3M+OjEwMDgxIgphcGlfa2V5c19zZXJ2aWNlX3VybDog" + - "Imh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKaWNtc191cmw6ICJodHRwOi8vPGdhdGV3YXktYWRk" + - "cmVzcz4iCmFwaV9ob3N0OiAiYXBpLjxnYXRld2F5LWRvbWFpbj4iCmFwaV9rZXlzX2hvc3Q6ICJh" + - "cGkta2V5cy48Z2F0ZXdheS1kb21haW4+IgppbnZva2VfaG9zdDogImludm9jYXRpb24uPGdhdGV3" + - "YXktZG9tYWluPiIKaWNtc19ob3N0OiAic2lzLjxnYXRld2F5LWRvbWFpbj4iCmBgYAoKSG9zdCBm" + - "aWVsZHMgY29udGFpbiBob3N0bmFtZXMgb25seSwgd2l0aG91dCBhIFVSTCBzY2hlbWUuIGBJQ01T" + - "X1VSTGAgbWFwcyBvbmx5CnRvIHRoZSByZWdpc3RyYXRpb24gY29tbWFuZCdzIGAtLWljbXMtdXJs" + - "YDsgYGljbXNfaG9zdGAgaW4gdGhlIGNvbmZpZyBzdXBwbGllcwp0aGUgR2F0ZXdheSBIb3N0IGhl" + - "YWRlci4gVGhlcmUgaXMgbm8gYC0taWNtcy1ob3N0YCBNYWtlIG9yIENMSSBmbGFnLgoKUmVnaXN0" + - "ZXIgZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0LCB0aGVuIGluc3RhbGwgdGhlIGNvbXB1dGUgcGxh" + - "bmU6CgpgYGBiYXNoCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVn" + - "aXN0ZXItY2x1c3RlciBcCiAgQ0xVU1RFUl9OQU1FPTxjbHVzdGVyLW5hbWU+IFwKICBOQ0FfSUQ9" + - "PG5jYS1pZD4gXAogIENMVVNURVJfUkVHSU9OPTxyZWdpb24+IFwKICBJQ01TX1VSTD1odHRwOi8v" + - "PGdhdGV3YXktYWRkcmVzcz4gXAogIEtVQkVDT05GSUdfRklMRT08Y29tcHV0ZS1wbGFuZS1rdWJl" + - "Y29uZmlnPiBcCiAgTlZDRl9DTEk9PHBhdGgtdG8tbnZjZi1jbGk+IFwKICBOVkNGX0NMSV9DT05G" + - "SUc9PHBhdGgtdG8tbnZjZi1jbGktY29uZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2Yt" + - "Y29tcHV0ZS1wbGFuZSBpbnN0YWxsIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAog" + - "IEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1" + - "YmVjb25maWc+CmBgYAoKUmVnaXN0cmF0aW9uIGRpc2NvdmVycyB0aGUgT0lEQyBpc3N1ZXIgYW5k" + - "IEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBrdWJlIGNvbnRleHQuCkluIGEgbXVsdGktY2x1c3RlciBk" + - "ZXBsb3ltZW50LCBgS1VCRUNPTkZJR19GSUxFYCBpcyByZXF1aXJlZCBvbiBib3RoCmNvbXB1dGUt" + - "cGxhbmUgY29tbWFuZHMuIEluIGEgc2FtZS1jbHVzdGVyIGRlcGxveW1lbnQgaXQgbWF5IGJlIG9t" + - "aXR0ZWQgb25seQp3aGVuIHRoZSBhbWJpZW50IGNvbnRleHQgaXMgYWxyZWFkeSB0aGUgdGFyZ2V0" + - "IGNsdXN0ZXIuCgojIyBDTEkgUHJvZmlsZSBGbG93CgpSdW4gdGhlIENMSSBjb250cm9sLXBsYW5l" + - "IGluc3RhbGwgZmlyc3QuIEl0IGNyZWF0ZXMgdGhlIHByb2ZpbGUgY29uc3VtZWQgYnkKY29tcHV0" + - "ZS1wbGFuZSByZWdpc3RyYXRpb246CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+" + - "IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxm" + - "LW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29t" + - "cHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFu" + - "ZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29u" + - "dGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmUg" + - "XAogIC0tY2x1c3Rlci1uYW1lIDxjb250cm9sLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tcmVn" + - "aW9uIDxyZWdpb24+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKdGVzdCAtcyBkZXBsb3kvc3RhY2tz" + - "L3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWwKYGBgCgpVc2UgdGhl" + - "IGZ1bGwgcGVyc2lzdGVudCBwcmVmaXggZm9yIGJvdGggY29tcHV0ZS1wbGFuZSBjb21tYW5kczoK" + - "CmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29u" + - "dHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRl" + - "LXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8" + - "ZW52PiBcCiAgLS1wbGFpbiBcCiAgY29tcHV0ZS1wbGFuZSByZWdpc3RlciBcCiAgLS1jb250cm9s" + - "LXBsYW5lLXByb2ZpbGUgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxh" + - "bmUtcHJvZmlsZS55YW1sIFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVy" + - "LW5hbWU+IFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1y" + - "ZWdpb24gPHJlZ2lvbj4gXAogIC0tb3V0cHV0IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBs" + - "YW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1s" + - "CgpudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBs" + - "YW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUt" + - "c3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwK" + - "ICAtLXBsYWluIFwKICBjb21wdXRlLXBsYW5lIGluc3RhbGwgXAogIC0tdmFsdWVzIGRlcGxveS9z" + - "dGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+" + - "LXJlZ2lzdGVyLXZhbHVlcy55YW1sIFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1j" + - "b250ZXh0PiBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPgpg" + - "YGAKClJlZ2lzdHJhdGlvbiBzZWxlY3RzIHRoZSBwcm9maWxlJ3MgaW4tY2x1c3RlciBvciBjb21w" + - "dXRlLXJlYWNoYWJsZSBlbmRwb2ludHMKZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0IGFuZCBwcm9i" + - "ZXMgaXRzIEpXS1MuIERvIG5vdCByZXBsYWNlIHByb2ZpbGUgZW5kcG9pbnRzCndpdGggaGFuZC1h" + - "dXRob3JlZCBIZWxtZmlsZSBlbmRwb2ludCB2YWx1ZXMuCgojIyBQdWxsIFNlY3JldHMKCkNyZWF0" + - "ZSB0aGUgY29udHJvbC1wbGFuZSBzZWNyZXQgaW4gdGhlc2UgbmFtZXNwYWNlcyBvbiB0aGUgY29u" + - "dHJvbC1wbGFuZQpjb250ZXh0OgoKYGBgdGV4dApjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVt" + - "IG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyCmBgYAoKT24g" + - "dGhlIGNvbXB1dGUgY29udGV4dCwgY3JlYXRlIHRoZSBzZWNyZXQgb25seSBpbiBgbnZjYS1vcGVy" + - "YXRvcmAgYW5kIHJlZmVyZW5jZQppdCB0aHJvdWdoIGBnbG9iYWwuaW1hZ2VQdWxsU2VjcmV0c2Ag" + - "aW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQuIFRoZSBjaGFydAphbmQgb3BlcmF0b3Ig" + - "dXNlIGl0IGluIGBudmNhLW9wZXJhdG9yYCBhbmQgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWAu" + - "IERvIG5vdCBhZGQKZWl0aGVyIG5hbWVzcGFjZSB0byB0aGUgY29udHJvbC1wbGFuZSBsaXN0LiBG" + - "b3IgY29tbWFuZHMgYW5kIHBvbGljeSBleGFtcGxlcywKc2VlIFtwdWxsLXNlY3JldHMubWRdKHB1" + - "bGwtc2VjcmV0cy5tZCkuCgojIyBWZXJpZmljYXRpb24KClVzZSB0aGUgZXhwbGljaXQgR2F0ZXdh" + - "eSBuYW1lIGFuZCBuYW1lc3BhY2U6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9s" + - "LXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5IG52Y2YtZ2F0ZXdheSBcCiAgLW4gZW52b3ktZ2F0" + - "ZXdheSAtbyB3aWRlCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdl" + - "dCB0Y3Byb3V0ZSAtbiBlbnZveS1nYXRld2F5Cmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBs" + - "YW5lLWNvbnRleHQ+IHJvbGxvdXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Etb3BlcmF0b3Ig" + - "LW4gbnZjYS1vcGVyYXRvciAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + - "LXBsYW5lLWNvbnRleHQ+IHdhaXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBsYW5lLWNsdXN0" + - "ZXItbmFtZT4gLW4gbnZjYS1vcGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3suc3RhdHVzLmFn" + - "ZW50U3RhdHVzfSc9aGVhbHRoeSAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21w" + - "dXRlLXBsYW5lLWNvbnRleHQ+IGdldCBzZWNyZXQgPHB1bGwtc2VjcmV0PiAtbiBudmNhLXN5c3Rl" + - "bQpgYGAKCiMjIFRlYXJkb3duCgpEZXN0cm95IGFuZCBkZXJlZ2lzdGVyIGV2ZXJ5IGNvbXB1dGUg" + - "cGxhbmUgYmVmb3JlIHRoZSBjb250cm9sIHBsYW5lLiBCb3RoCmhhbmRvZmZzIGNhbiBkZXN0cm95" + - "IHRoZSBjb250cm9sIHBsYW5lLCBzbyBhcHBseSB0aGlzIHByZWZsaWdodCBiZWZvcmUgZWl0aGVy" + - "Cm9uZS4gUHJlc2VydmUgdGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBO" + - "YW1lc3BhY2UgcHJlc2VydmF0aW9uCmRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2Uu" + - "IElkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLgpGb3IgYW4gZXh0ZXJu" + - "YWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIuZW5hYmxlZDog" + - "ZmFsc2VgCmFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFu" + - "YWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlCmBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwg" + - "dmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQKYWJvcnQgb24g" + - "bWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNwYWNlIHJlbW92" + - "YWwgYWZ0ZXIKdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBnZXR0aW5nIGV4cGxp" + - "Y2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlCmRvIG5vdCBkZWxldGUgaXQuCgpGb3IgdGhlIEhl" + - "bG1maWxlIHZhbHVlcyBmbG93LCByZXRhaW4gZWFjaCByZWdpc3RyYXRpb24gdmFsdWVzIGZpbGUg" + - "dW50aWwKY2xlYW51cCBpcyB2ZXJpZmllZDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tz" + - "L252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFt" + - "ZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBs" + - "YW5lLWt1YmVjb25maWc+Cgo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNsdXN0ZXIgZGVs" + - "ZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1yZWdpc3RyYXRpb24tdmFsdWVz" + - "PiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBgCgpSZWFkIGBj" + - "bHVzdGVySURgIGFuZCBgbmNhSURgIGZyb20KYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBs" + - "YW5lL3JlZ2lzdHJhdGlvbi88Y2x1c3Rlci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuClNo" + - "b3cgdGhlIGV4YWN0IGNsdXN0ZXIgSUQgYW5kIGdldCBjb25maXJtYXRpb24gYmVmb3JlIGBjbHVz" + - "dGVyIGRlbGV0ZWAuIFJlcGVhdApjb21wdXRlIGRlc3Ryb3kgYW5kIGRlcmVnaXN0cmF0aW9uIGZv" + - "ciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRoZW4gZGVzdHJveSB0aGUKY29udHJvbCBwbGFuZS4K" + - "CmBgYGJhc2gKS1VCRUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBcCm1ha2UgLUMg" + - "ZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+" + - "IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpCb3Ro" + - "IGBLVUJFQ09ORklHYCBhbmQgYEtVQkVDT05GSUdfRklMRWAgYXJlIHJlcXVpcmVkIG9uIHRoZSBj" + - "b250cm9sLXBsYW5lCmRlc3Ryb3kgYmVjYXVzZSBpdHMgbmFtZXNwYWNlIGNsZWFudXAgdXNlcyBh" + - "bWJpZW50IGBrdWJlY3RsYC4KCkZvciB0aGUgQ0xJIHByb2ZpbGUgZmxvdywga2VlcApgZGVwbG95" + - "L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvb3V0LzxjbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZh" + - "bHVlcy55YW1sYAp1bnRpbCB0ZWFyZG93biBjb21wbGV0ZXMgYmVjYXVzZSBgZG93bmAgcmVhZHMg" + - "aXRzIGNsdXN0ZXIgSUQuIEZpcnN0IHF1ZXJ5IHRoZQpsaXZlIHJlZ2lzdHJhdGlvbiBzZXQgd2l0" + - "aCB0aGUgc2FtZSBjb21wbGV0ZSBwZXJzaXN0ZW50IHByZWZpeDoKCmBgYGJhc2gKbnZjZi1jbGkg" + - "LS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBk" + - "ZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxv" + - "eS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBc" + - "CiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0t" + - "Y29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMt" + - "dXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAogIHN0YXR1cyBcCiAgLS1jbHVzdGVy" + - "LW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4K" + - "YGBgCgpTaG93IHRoZSByZWdpc3RlcmVkIGNvbXB1dGUtcGxhbmUgbGlzdC4gTmFtZWQtY2x1c3Rl" + - "ciBgZG93biAtLXBsYW4tb25seWAgZG9lcwpub3QgcXVlcnkgSUNNUywgc28gaXQgcHJldmlld3Mg" + - "b25seSB0aGF0IGNvbXB1dGUgcGxhbmUgYW5kIGNhbm5vdCBzaG93IHRoZQpjb25kaXRpb25hbCBj" + - "b250cm9sLXBsYW5lIHJlbW92YWwuIElmIHRoZSB0YXJnZXQgaXMgdGhlIGxhc3QgcmVnaXN0ZXJl" + - "ZApjbHVzdGVyLCByZWFsIGBkb3duYCBhbHNvIGRlc3Ryb3lzIHRoZSBjb250cm9sIHBsYW5lLiBH" + - "ZXQgZXhwbGljaXQgY29uZmlybWF0aW9uCmZvciBib3RoIHJlbW92YWxzIGJlZm9yZSBjb250aW51" + - "aW5nLiBUaGVuIHByZXZpZXcgYW5kIGV4ZWN1dGUgd2l0aCB0aGUgc2FtZQpwcmVmaXg6CgpgYGBi" + - "YXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wt" + - "cGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFu" + - "ZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4g" + - "XAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + - "bnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0" + - "PiBcCiAgLS1pY21zLXVybCA8Y29tcHV0ZS1yZWFjaGFibGUtaWNtcy11cmw+IFwKICBkb3duIC0t" + - "cGxhbi1vbmx5IFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+" + - "IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1o" + - "b3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdl" + - "ZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBs" + - "YW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRl" + - "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxj" + - "b21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1p" + - "Y21zLXVybD4gXAogIGRvd24gXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0" + - "ZXItbmFtZT4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+CmBgYAoKUmVwZWF0IGBkb3duYCBmb3IgZWFj" + - "aCBjb21wdXRlIGNsdXN0ZXIuIEVhY2ggcnVuIGRlc3Ryb3lzIHRoYXQgY29tcHV0ZSBwbGFuZSBh" + - "bmQKdW5yZWdpc3RlcnMgaXRzIElDTVMgcm93LiBJdCByZW1vdmVzIHRoZSBjb250cm9sIHBsYW5l" + - "IG9ubHkgYWZ0ZXIgbm8gY2x1c3RlcgpyZWdpc3RyYXRpb25zIHJlbWFpbi4KUEsHCJZjvFkSMAAA" + - "EjAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAOwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + - "aW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvZGVidWdnaW5nLm1kVVQFAAEAps4SIyBEZWJ1Z2dpbmcg" + - "UmVmZXJlbmNlCgpSZWNpcGVzIGZvciBkaWFnbm9zaW5nIGFuZCBmaXhpbmcgY29tbW9uIE5WQ0Yg" + - "c2VsZi1tYW5hZ2VkIHN0YWNrIGZhaWx1cmVzLgoKIyMgUXVpY2sgU3RhdHVzIENvbW1hbmRzCgpg" + - "YGBiYXNoCiMgQWxsIHBvZHMgYWNyb3NzIGFsbCBuYW1lc3BhY2VzCmt1YmVjdGwgZ2V0IHBvZHMg" + - "LUEgLW8gd2lkZQoKIyBQb2RzIGluIGEgc3BlY2lmaWMgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHBv" + - "ZHMgLW4gPG5hbWVzcGFjZT4KCiMgQWxsIGhlbG0gcmVsZWFzZXMKaGVsbSBsaXN0IC1BCgojIFJl" + - "Y2VudCBldmVudHMgKG1vc3QgdXNlZnVsIGZvciBkaWFnbm9zaW5nIGZhaWx1cmVzKQprdWJlY3Rs" + - "IGdldCBldmVudHMgLW4gPG5hbWVzcGFjZT4gLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcKCiMg" + - "RGVzY3JpYmUgYSBzcGVjaWZpYyBwb2QgKHNob3dzIGV2ZW50cywgY29uZGl0aW9ucywgdm9sdW1l" + - "cykKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPgpgYGAKCiMj" + - "IEZhaWx1cmU6IEltYWdlUHVsbEJhY2tPZmYKCiMjIyBTeW1wdG9tcwoKYGBgdGV4dApOQU1FICAg" + - "ICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICAgICAgICAgICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5k" + - "cmEtMCAgICAwLzEgICAgIEltYWdlUHVsbEJhY2tPZmYgICAwICAgICAgICAgIDVtCmBgYAoKRXZl" + - "bnRzIHNob3c6CgpgYGB0ZXh0CkZhaWxlZCB0byBwdWxsIGltYWdlICJudmNyLmlvLy4uLi9pbWFn" + - "ZTp0YWciOiA0MDEgVW5hdXRob3JpemVkCmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENo" + - "ZWNrIHdoYXQgaW1hZ2UgaXMgZmFpbGluZwprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNw" + - "YWNlPiA8cG9kLW5hbWU+IHwgZ3JlcCAtQTUgIkV2ZW50czoiCgojIENoZWNrIGlmIHB1bGwgc2Vj" + - "cmV0IGV4aXN0cyBpbiB0aGUgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHNlY3JldCBudmNyLWNyZWRz" + - "IC1uIDxuYW1lc3BhY2U+CgojIENoZWNrIGlmIHRoZSBwb2Qgc3BlYyBoYXMgaW1hZ2VQdWxsU2Vj" + - "cmV0cwprdWJlY3RsIGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiAtbyBqc29ucGF0" + - "aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9JwoKIyBDaGVjayBpZiB0aGUgU2VydmljZUFjY291" + - "bnQgaGFzIGltYWdlUHVsbFNlY3JldHMKa3ViZWN0bCBnZXQgc2EgPHNhLW5hbWU+IC1uIDxuYW1l" + - "c3BhY2U+IC1vIGpzb25wYXRoPSd7LmltYWdlUHVsbFNlY3JldHN9JwpgYGAKCiMjIyBGaXhlcwoK" + - "MS4gKipTZWNyZXQgbWlzc2luZyBpbiBuYW1lc3BhY2UqKjogQ3JlYXRlIGl0CgogICBgYGBiYXNo" + - "CiAgIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAg" + - "ICAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1" + - "dGh0b2tlbicgXAogICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgICAt" + - "LW5hbWVzcGFjZT08bmFtZXNwYWNlPiBcCiAgICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwg" + - "a3ViZWN0bCBhcHBseSAtZiAtCiAgIGBgYAoKMi4gKipTZWNyZXQgZXhpc3RzIGJ1dCBwb2QgZG9l" + - "c24ndCByZWZlcmVuY2UgaXQqKjogVGhlIGNoYXJ0IG5lZWRzIGBpbWFnZVB1bGxTZWNyZXRzYCBj" + - "b25maWd1cmVkIHZpYSBoZWxtZmlsZSB2YWx1ZXMuIFNlZSBbcHVsbC1zZWNyZXRzLm1kXShwdWxs" + - "LXNlY3JldHMubWQpLgoKMy4gKipDaGFydCBkb2Vzbid0IHN1cHBvcnQgaW1hZ2VQdWxsU2VjcmV0" + - "cyoqIChvcGVuYmFvLCBpbnZvY2F0aW9uLXNlcnZpY2UsIGVzcy1hcGksIG5vdGFyeS1zZXJ2aWNl" + - "KTogUGF0Y2ggU2VydmljZUFjY291bnRzIGFuZCByZXN0YXJ0IHBvZHMuIFNlZSBbcHVsbC1zZWNy" + - "ZXRzLm1kXShwdWxsLXNlY3JldHMubWQpLgoKNC4gKipXcm9uZyBjcmVkZW50aWFscyBpbiBzZWNy" + - "ZXQqKjogRGVsZXRlIGFuZCByZWNyZWF0ZQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGRlbGV0ZSBz" + - "ZWNyZXQgbnZjci1jcmVkcyAtbiA8bmFtZXNwYWNlPgogICAjIFJlY3JlYXRlIHdpdGggY29ycmVj" + - "dCBjcmVkZW50aWFscwogICBgYGAKCiMjIEZhaWx1cmU6IEluaXQ6MC8xIFN0dWNrIChWYXVsdCBB" + - "Z2VudCkKCiMjIyBTeW1wdG9tcwoKU2VydmljZSBwb2RzIHN0dWNrIGluIGBJbml0OjAvMWAgZm9y" + - "IG1pbnV0ZXM6CgpgYGBiYXNoCk5BTUUgICAgICAgICAgICAgICAgICAgICAgICBSRUFEWSAgIFNU" + - "QVRVUyAgICAgUkVTVEFSVFMgICBBR0UKbnZjZi1hcGktN2Y0Yzc2Zjc4OC00NHZsdCAgMC8yICAg" + - "ICBJbml0OjAvMSAgIDAgICAgICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoKVGhlIGluaXQg" + - "Y29udGFpbmVyIGlzIHRoZSB2YXVsdC1hZ2VudC1pbml0IGluamVjdG9yIHdhaXRpbmcgZm9yIE9w" + - "ZW5CYW8uCgpgYGBiYXNoCiMgQ2hlY2sgT3BlbkJhbyBwb2RzCmt1YmVjdGwgZ2V0IHBvZHMgLW4g" + - "dmF1bHQtc3lzdGVtCgojIENoZWNrIGlmIE9wZW5CYW8gbWlncmF0aW9uIGpvYiByYW4Ka3ViZWN0" + - "bCBnZXQgam9icyAtbiB2YXVsdC1zeXN0ZW0KCiMgQ2hlY2sgT3BlbkJhbyBwb2QgbG9ncwprdWJl" + - "Y3RsIGxvZ3MgLW4gdmF1bHQtc3lzdGVtIG9wZW5iYW8tc2VydmVyLTAgLWMgb3BlbmJhbwoKIyBD" + - "aGVjayBpbml0IGNvbnRhaW5lciBsb2dzIG9uIHRoZSBzdHVjayBwb2QKa3ViZWN0bCBsb2dzIC1u" + - "IDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gLWMgdmF1bHQtYWdlbnQtaW5pdApgYGAKCiMjIyBGaXhl" + - "cwoKMS4gKipPcGVuQmFvIHBvZHMgbm90IHJ1bm5pbmcqKjogQ2hlY2sgdGhlaXIgZXZlbnRzIGZv" + - "ciBpbWFnZSBwdWxsIGlzc3VlcywgcmVzb3VyY2UgaXNzdWVzLCBldGMuCgoyLiAqKk9wZW5CYW8g" + - "bWlncmF0aW9uIGpvYiBkaWRuJ3QgcnVuKio6IFRoaXMgaGFwcGVucyB3aGVuIGBoZWxtZmlsZSBz" + - "eW5jYCB3YXMgaW50ZXJydXB0ZWQuIERlc3Ryb3kgYW5kIHJlLXN5bmMgb3BlbmJhbzoKCiAgIGBg" + - "YGJhc2gKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVu" + - "YmFvLXNlcnZlciBkZXN0cm95CiAgIGt1YmVjdGwgZGVsZXRlIG5hbWVzcGFjZSB2YXVsdC1zeXN0" + - "ZW0KICAga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIHZhdWx0LXN5c3RlbQogICAjIFJlLWNyZWF0" + - "ZSBwdWxsIHNlY3JldCBpZiBuZWVkZWQKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0t" + - "c2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBzeW5jCiAgIGBgYAoKMy4gKipPcGVuQmFvIHBv" + - "ZHMgcnVubmluZyBidXQgbm90IGluaXRpYWxpemVkKio6IENoZWNrIHVuc2VhbCBzdGF0dXM6Cgog" + - "ICBgYGBiYXNoCiAgIGt1YmVjdGwgZXhlYyAtbiB2YXVsdC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXIt" + - "MCAtYyBvcGVuYmFvIC0tIGJhbyBzdGF0dXMKICAgYGBgCgo0LiAqKmB2YXVsdC1hZ2VudC1pbml0" + - "YCBsb2dzIGBhdXRoL2p3dC9sb2dpbmAgLT4gYDQwMCAuLi4gbm8ga25vd24ga2V5IHN1Y2Nlc3Nm" + - "dWxseSB2YWxpZGF0ZWQgdGhlIHRva2VuIHNpZ25hdHVyZWAqKgogICAoY29tbW9uIG9uIEFLUywg" + - "YW5kIG9uIGFueSBjbHVzdGVyIHdob3NlIE9JREMgaXNzdWVyIHB1Ymxpc2hlcyBhIHJvdGF0aW5n" + - "IG11bHRpLWtleSBKV0tTKToKICAgdGhlIE9wZW5CYW8gYGF1dGgvand0YCBtZXRob2Qgd2FzIGNv" + - "bmZpZ3VyZWQgd2l0aCBhIHNpbmdsZSBzdGF0aWMgbW91bnRlZCBwdWJsaWMga2V5CiAgIChgand0" + - "X3ZhbGlkYXRpb25fcHVia2V5c2ApIGluc3RlYWQgb2YgdGhlIGlzc3VlcidzIGxpdmUgSldLUywg" + - "c28gaXQgY2Fubm90IHZhbGlkYXRlIHRoZQogICBjbHVzdGVyLXNpZ25lZCBTZXJ2aWNlQWNjb3Vu" + - "dCB0b2tlbnMgdGhlIHZhdWx0LWFnZW50cyBwcmVzZW50LiBFdmVyeSBzZXJ2aWNlJ3MKICAgYHZh" + - "dWx0LWFnZW50LWluaXRgIHRoZW4gbG9vcHMgb24gdGhhdCA0MDAgYW5kIHRoZSBwb2QgbmV2ZXIg" + - "bGVhdmVzIGBJbml0OjAvMWAuIFRoaXMgaXMgdGhlCiAgIGJlaGF2aW9yIG9mIHRoZSBiYXNlIGRl" + - "ZmF1bHQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2Vg" + - "OyB0aGUKICAgbWlncmF0aW9uIGxvZyBzaG93cyBgT0lEQyBpc3N1ZXIgZGlzY292ZXJ5IGlzIGRp" + - "c2FibGVkLiBVc2luZyBTZXJ2aWNlQWNjb3VudCBpc3N1ZXIgYW5kCiAgIG1vdW50ZWQgcHVibGlj" + - "IGtleSBmYWxsYmFja2AuIEVuYWJsZSBpc3N1ZXIgZGlzY292ZXJ5IHNvIHRoZSBtaWdyYXRpb24g" + - "dXNlcyB0aGUgbGl2ZSBKV0tTLAogICB0aGVuIHJlLXJ1biBpdDoKCiAgIGBgYGJhc2gKICAgIyBJ" + - "biB5b3VyIGVudiB2YWx1ZXMgKGUuZy4gZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwpLCBzZXQ6CiAg" + - "ICMgICBvcGVuYmFvOgogICAjICAgICBtaWdyYXRpb25zOgogICAjICAgICAgIGlzc3VlckRpc2Nv" + - "dmVyeToKICAgIyAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAga3ViZWN0bCBkZWxldGUgam9iIC1u" + - "IHZhdWx0LXN5c3RlbSBvcGVuYmFvLXNlcnZlci1taWdyYXRpb25zCiAgIEhFTE1GSUxFX0VOVj08" + - "ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9b3BlbmJhby1zZXJ2ZXIgc3luYwogICBgYGAK" + - "CiAgIFRoZSBtaWdyYXRpb24gbG9nIHNob3VsZCB0aGVuIHNob3cgYFJlY2VpdmVkIGRpc2NvdmVy" + - "eSBkb2N1bWVudCBmcm9tCiAgIC4uLi8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbmAg" + - "YW5kIGBGaW5hbCBPcGVuQmFvIEpXVCBKV0tTIFVSTCBzZXQgdG86CiAgIC4uLi9vcGVuaWQvdjEv" + - "andrc2AsIGFuZCB0aGUgc2VydmljZSBwb2RzIGF1dGhlbnRpY2F0ZSBhbmQgcmVhY2ggUmVhZHkg" + - "d2l0aGluIH4xIG1pbi4KICAgQUtTIGNsdXN0ZXJzIHdpdGggdGhlIGNsdXN0ZXIgT0lEQyBpc3N1" + - "ZXIgZW5hYmxlZCAodGhlIGBha3MtY2x1c3RlcmAgZGVmYXVsdCkgYWx3YXlzIG5lZWQKICAgdGhp" + - "cyBiZWNhdXNlIHRoZSBzdGF0aWMtcHVia2V5IGZhbGxiYWNrIGNhbm5vdCBtYXRjaCB0aGUgaXNz" + - "dWVyJ3Mgcm90YXRpbmcgc2lnbmluZyBrZXlzLgoKIyMgRmFpbHVyZTogT09NS2lsbGVkIG9uIENh" + - "c3NhbmRyYQoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFU" + - "VVMgICAgUkVTVEFSVFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIE9PTUtpbGxlZCAgMyAg" + - "ICAgICAgIDEwbQpgYGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKa3ViZWN0bCBkZXNjcmliZSBw" + - "b2QgLW4gY2Fzc2FuZHJhLXN5c3RlbSBjYXNzYW5kcmEtMCB8IGdyZXAgLUEzICJMYXN0IFN0YXRl" + - "IgpgYGAKCiMjIyBGaXgKCk92ZXJyaWRlIENhc3NhbmRyYSByZXNvdXJjZXMgdmlhIGhlbG1maWxl" + - "IHZhbHVlcy4gU2VlIEV4YW1wbGUgMSBpbgpbZXhhbXBsZXMubWRdKC4uL2V4YW1wbGVzLm1kKS4K" + - "CmBgYHlhbWwKLSBjYXNzYW5kcmE6CiAgICByZXNvdXJjZXM6CiAgICAgIGxpbWl0czoKICAgICAg" + - "ICBjcHU6ICI4IgogICAgICAgIG1lbW9yeTogODE5Mk1pCiAgICAgIHJlcXVlc3RzOgogICAgICAg" + - "IGNwdTogIjIiCiAgICAgICAgbWVtb3J5OiA0MDk2TWkKYGBgCgpOb3RlOiBgcmVzb3VyY2VQcmVz" + - "ZXRgIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIE5WQ0YgY2Fzc2FuZHJhIHdyYXBwZXIgY2hhcnQu" + - "IFVzZSBleHBsaWNpdCBgcmVzb3VyY2VzYC4KCiMjIEZhaWx1cmU6IFBvZHMgU3R1Y2sgaW4gUGVu" + - "ZGluZwoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMg" + - "ICAgUkVTVEFSVFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIFBlbmRpbmcgICAwICAgICAg" + - "ICAgIDEwbQpgYGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKIyBDaGVjayBldmVudHMgZm9yIHNj" + - "aGVkdWxpbmcgZmFpbHVyZXMKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBv" + - "ZC1uYW1lPgoKIyBDb21tb24gY2F1c2VzOgojIC0gIjAvMTIgbm9kZXMgYXJlIGF2YWlsYWJsZTog" + - "MTIgbm9kZShzKSBkaWRuJ3QgbWF0Y2ggUG9kJ3Mgbm9kZSBhZmZpbml0eSIKIyAtICIwLzEyIG5v" + - "ZGVzIGFyZSBhdmFpbGFibGU6IDEyIEluc3VmZmljaWVudCBtZW1vcnkiCiMgLSAicGVyc2lzdGVu" + - "dHZvbHVtZWNsYWltIG5vdCBmb3VuZCIKYGBgCgojIyMgRml4ZXMKCjEuICoqTm9kZSBzZWxlY3Rv" + - "ciBtaXNtYXRjaCoqOiBDaGVjayBgbm9kZVNlbGVjdG9yc2AgaW4gZW52aXJvbm1lbnQgZmlsZQoK" + - "ICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBub2RlcyAtLXNob3ctbGFiZWxzIHwgZ3JlcCBudmNm" + - "CiAgIGBgYAoKMi4gKipTdG9yYWdlIGNsYXNzIG5vdCBmb3VuZCoqOiBDaGVjayBzdG9yYWdlIGNs" + - "YXNzIGV4aXN0cwoKICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBzdG9yYWdlY2xhc3MKICAgYGBg" + - "CgozLiAqKkluc3VmZmljaWVudCByZXNvdXJjZXMqKjogQ2hlY2sgbm9kZSBjYXBhY2l0eQoKICAg" + - "YGBgYmFzaAogICBrdWJlY3RsIGRlc2NyaWJlIG5vZGUgPG5vZGUtbmFtZT4gfCBncmVwIC1BNSAi" + - "QWxsb2NhdGVkIHJlc291cmNlcyIKICAgYGBgCgojIyBGYWlsdXJlOiBIZWxtIFJlbGVhc2UgaW4g" + - "RmFpbGVkIFN0YXRlCgojIyMgU3ltcHRvbXMKCmBgYGJhc2gKaGVsbSBsaXN0IC1BCiMgU2hvd3Mg" + - "cmVsZWFzZSB3aXRoIFNUQVRVUzogZmFpbGVkCmBgYAoKUmUtcnVubmluZyBgaGVsbWZpbGUgc3lu" + - "Y2AgYXBwZWFycyB0byBzdWNjZWVkIGJ1dCBzZXJ2aWNlcyBkb24ndCB3b3JrIChtaWdyYXRpb25z" + - "IHNraXBwZWQpLgoKIyMjIERpYWdub3NpcwoKYGBgYmFzaApoZWxtIGhpc3RvcnkgPHJlbGVhc2Ut" + - "bmFtZT4gLW4gPG5hbWVzcGFjZT4KYGBgCgojIyMgRml4CgpNdXN0IGRlc3Ryb3kgdGhlIGZhaWxl" + - "ZCByZWxlYXNlIGFuZCByZS1zeW5jIChub3QganVzdCBhcHBseSk6CgpgYGBiYXNoCkhFTE1GSUxF" + - "X0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9PHJlbGVhc2U+IGRlc3Ryb3kKIyBJ" + - "ZiBuYW1lc3BhY2UgbmVlZHMgY2xlYW51cDoKa3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIDxuYW1l" + - "c3BhY2U+Cmt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSA8bmFtZXNwYWNlPgojIFJlLWNyZWF0ZSBw" + - "dWxsIHNlY3JldCBpZiBuZWVkZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0" + - "b3IgbmFtZT08cmVsZWFzZT4gc3luYwpgYGAKCiMjIEZhaWx1cmU6IEFjY291bnQgQm9vdHN0cmFw" + - "IEpvYiBGYWlsZWQKCiMjIyBTeW1wdG9tcwoKU2VydmljZXMgZGVwbG95IGJ1dCBmdW5jdGlvbnMg" + - "Y2FuJ3QgYmUgY3JlYXRlZC4gRXZlbnRzIHNob3cgYm9vdHN0cmFwIGpvYiBmYWlsdXJlLgoKIyMj" + - "IERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIGJvb3RzdHJhcCBqb2Igc3RhdHVzCmt1YmVjdGwg" + - "Z2V0IGpvYnMgLW4gbnZjZgoKIyBHZXQgbG9ncyAoam9iIGF1dG8tZGVsZXRlcyBhZnRlciB+NSBt" + - "aW51dGVzKQprdWJlY3RsIGxvZ3Mgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIC1uIG52" + - "Y2YKCiMgQ2hlY2sgQVBJIGxvZ3MKa3ViZWN0bCBsb2dzIC1uIG52Y2YgLWwgYXBwLmt1YmVybmV0" + - "ZXMuaW8vbmFtZT1udmNmLWFwaSAtLXRhaWw9MTAwCmBgYAoKIyMjIENvbW1vbiBDYXVzZXMKCjEu" + - "ICoqV3JvbmcgYmFzZTY0IGNyZWRlbnRpYWxzKio6IENyZWRlbnRpYWxzIGluIGBzZWNyZXRzLzxl" + - "bnY+LXNlY3JldHMueWFtbGAgbXVzdCBiZSBgJG9hdXRodG9rZW46QVBJX0tFWWAgYmFzZTY0LWVu" + - "Y29kZWQsIG5vdCBqdXN0IHRoZSBBUEkga2V5CgogICBgYGBiYXNoCiAgICMgVmVyaWZ5IHlvdXIg" + - "ZW5jb2RlZCBjcmVkZW50aWFsCiAgIGVjaG8gJ1lPVVJfQkFTRTY0X1NUUklORycgfCBiYXNlNjQg" + - "LWQKICAgIyBTaG91bGQgb3V0cHV0OiAkb2F1dGh0b2tlbjpudmFwaS14eHh4eAogICBgYGAKCjIu" + - "ICoqUmVnaXN0cnkgdW5yZWFjaGFibGUqKjogQVBJIGNhbid0IHJlYWNoIHRoZSByZWdpc3RyeSBz" + - "cGVjaWZpZWQgaW4gYGFjY291bnRCb290c3RyYXAucmVnaXN0cnlDcmVkZW50aWFsc2AKCiMjIyBG" + - "aXgKCkZpeCBjcmVkZW50aWFscyBpbiBzZWNyZXRzIGZpbGUsIHRoZW4gcmVjb3ZlciBzZXJ2aWNl" + - "cyB3aXRob3V0IGRlc3Ryb3lpbmcgZGVwZW5kZW5jaWVzOgoKYGBgYmFzaApIRUxNRklMRV9FTlY9" + - "PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIGRlc3Ryb3kK" + - "a3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIG52Y2YgYXBpLWtleXMgZXNzIHNpcyAtLWlnbm9yZS1u" + - "b3QtZm91bmQKa3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIG52Y2YgJiYga3ViZWN0bCBjcmVhdGUg" + - "bmFtZXNwYWNlIGFwaS1rZXlzICYmIFwKICBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgZXNzICYm" + - "IGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBzaXMKIyBSZS1jcmVhdGUgcHVsbCBzZWNyZXRzIGlm" + - "IG5lZWRlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdy" + - "b3VwPXNlcnZpY2VzIHN5bmMKYGBgCgojIyBGYWlsdXJlOiBOVkNBIENsZWFudXAgU3R1Y2sgKEZp" + - "bmFsaXplcnMpCgojIyMgU3ltcHRvbXMKCkNvbXB1dGUtcGxhbmUgY2xlYW51cCBoYW5ncy4gTmFt" + - "ZXNwYWNlcwpzdHVjayBpbiBgVGVybWluYXRpbmdgOgoKYGBgYmFzaAprdWJlY3RsIGdldCBucwoj" + - "IG52Y2Etb3BlcmF0b3IgICAgVGVybWluYXRpbmcgICAxMG0KIyBudmNmLWJhY2tlbmQgICAgIFRl" + - "cm1pbmF0aW5nICAgMTBtCmBgYAoKIyMjIEZpeAoKUnVuIHRoaXMgb25seSBhZ2FpbnN0IHRoZSBj" + - "b21wdXRlIGNvbnRleHQsIGFmdGVyIHRoZSBub3JtYWwgY29tcHV0ZS1wbGFuZQp0ZWFyZG93biBo" + - "YXMgZmFpbGVkLiBSZW1vdmUgZmluYWxpemVycyBmcm9tIE5WQ0ZCYWNrZW5kIGN1c3RvbSByZXNv" + - "dXJjZXMgYW5kCmZvcmNlLWRlbGV0ZSBzdHVjayBuYW1lc3BhY2VzOgoKYGBgYmFzaApleHBvcnQg" + - "Q09NUFVURV9DT05URVhUPTxjb21wdXRlLXBsYW5lLWNvbnRleHQ+CgojIFJlbW92ZSBmaW5hbGl6" + - "ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3VyY2VzCmt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVU" + - "RV9DT05URVhUIiBnZXQgbnZjZmJhY2tlbmRzIC1BIC1vIGpzb24gfCBcCiAganEgJy5pdGVtc1td" + - "IHwgLm1ldGFkYXRhLm5hbWVzcGFjZSArICIvIiArIC5tZXRhZGF0YS5uYW1lJyAtciB8IFwKICB4" + - "YXJncyAtSXt9IHNoIC1jICdjb250ZXh0PSIkMSI7IG5zPSIkezIlJS8qfSI7IG5hbWU9IiR7MiMj" + - "Ki99Ijsga3ViZWN0bCAtLWNvbnRleHQgIiRjb250ZXh0IiBwYXRjaCBudmNmYmFja2VuZCAiJG5h" + - "bWUiIC1uICIkbnMiIC0tdHlwZT1tZXJnZSAtcCAie1wibWV0YWRhdGFcIjp7XCJmaW5hbGl6ZXJz" + - "XCI6W119fSInIF8gIiRDT01QVVRFX0NPTlRFWFQiIHt9CgojIEZvcmNlLWRlbGV0ZSBzdHVjayBu" + - "YW1lc3BhY2VzIGJ5IGNsZWFyaW5nIHRoZWlyIGZpbmFsaXplcnMKZm9yIG5zIGluIG52Y2Etb3Bl" + - "cmF0b3IgbnZjZi1iYWNrZW5kOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05U" + - "RVhUIiBnZXQgbmFtZXNwYWNlICIkbnMiIC1vIGpzb24gMj4vZGV2L251bGwgfCBcCiAgICBqcSAn" + - "LnNwZWMuZmluYWxpemVycyA9IFtdJyB8IFwKICAgIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVU" + - "RV9DT05URVhUIiByZXBsYWNlIFwKICAgICAgLS1yYXcgIi9hcGkvdjEvbmFtZXNwYWNlcy8kbnMv" + - "ZmluYWxpemUiIC1mIC0gMj4vZGV2L251bGwKZG9uZQpgYGAKCiMjIEZhaWx1cmU6IE5WQ0EgT3Bl" + - "cmF0b3IgTWlzc2luZyBvciBOb3QgUmVhZHkKCiMjIyBTeW1wdG9tcwoKQWZ0ZXIgY29tcHV0ZS1w" + - "bGFuZSBpbnN0YWxsIGNvbXBsZXRlcywgbm8gYG52Y2Etb3BlcmF0b3JgIERlcGxveW1lbnQgZXhp" + - "c3RzLCBvcgppdCBleGlzdHMgYnV0IHBvZHMgYXJlIG5vdCByZWFkeToKCmBgYGJhc2gKa3ViZWN0" + - "bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IGRlcGxveW1lbnQgbnZjYS1v" + - "cGVyYXRvciBcCiAgLW4gbnZjYS1vcGVyYXRvcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1w" + - "bGFuZS1jb250ZXh0PiBnZXQgcG9kcyAtbiBudmNhLW9wZXJhdG9yCmBgYAoKIyMjIERpYWdub3Np" + - "cyBhbmQgRml4ZXMKCkZpcnN0IGlkZW50aWZ5IHdoZXRoZXIgdGhlIGluc3RhbGxhdGlvbiB1c2Vk" + - "IHRoZSBIZWxtZmlsZSB2YWx1ZXMgZmxvdyBvciB0aGUKQ0xJIHByb2ZpbGUgZmxvdy4gUmUtcnVu" + - "IG9ubHkgdGhhdCBmbG93J3MgcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24gc3RlcHMKZnJv" + - "bSBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFs" + - "bGF0aW9uLm1kKS4gRG8gbm90CnN1YnN0aXR1dGUgb25lIGhhbmRvZmYgZm9yIHRoZSBvdGhlci4K" + - "CklmIGluc3RhbGxhdGlvbiBzdWNjZWVkcyBidXQgcG9kcyBzdGlsbCBmYWlsLCBpbnNwZWN0IHRo" + - "ZSBjb21wdXRlIGNvbnRleHQ6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBs" + - "YW5lLWNvbnRleHQ+IGRlc2NyaWJlIGRlcGxveSBudmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9w" + - "ZXJhdG9yCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGxvZ3MgZGVw" + - "bG95bWVudC9udmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yIC0tdGFpbD0yMDAKa3Vi" + - "ZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG52Y2ZiYWNrZW5kIC1u" + - "IG52Y2Etb3BlcmF0b3IKYGBgCgpGb3IgcHJpdmF0ZSByZWdpc3RyeSBmYWlsdXJlcywgdmVyaWZ5" + - "IHRoYXQgdGhlIHB1bGwgc2VjcmV0IGV4aXN0cyBpbgpgbnZjYS1vcGVyYXRvcmAuIFRoZSBjaGFy" + - "dCBhbmQgb3BlcmF0b3IgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWA7IGRvIG5vdCB1c2UgYQpi" + - "cm9hZGVyIG1hbnVhbCBuYW1lc3BhY2UgbG9vcC4gU2VlCltwdWxsLXNlY3JldHMubWRdKHB1bGwt" + - "c2VjcmV0cy5tZCNjb21wdXRlLXBsYW5lLXNlY3JldCkuCgojIyBGYWlsdXJlOiBHYXRld2F5IEVu" + - "ZHBvaW50IENoYW5nZWQKCiMjIyBTeW1wdG9tcwoKUmVxdWVzdHMgdGhyb3VnaCB0aGUgY29uZmln" + - "dXJlZCByb3V0ZSBkb21haW4gZmFpbCBhZnRlciB0aGUgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxh" + - "bmNlciBpcyByZXBsYWNlZC4gVGhlIEdhdGV3YXkgcmVwb3J0cyBhIG5ldyBlbmRwb2ludC4KCiMj" + - "IyBEaWFnbm9zaXMKCmBgYGJhc2gKR0FURVdBWV9BRERSPSQoa3ViZWN0bCAtLWNvbnRleHQgPGNv" + - "bnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgXAogIG52Y2YtZ2F0ZXdheSAtbiBlbnZv" + - "eS1nYXRld2F5IFwKICAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScp" + - "CnRlc3QgLW4gIiRHQVRFV0FZX0FERFIiCmRpZyArc2hvcnQgImFwaS48ZG9tYWluPiIKY3VybCAt" + - "SCAiSG9zdDogYXBpLjxkb21haW4+IiAiaHR0cDovLyRHQVRFV0FZX0FERFIvaGVhbHRoIgoKIyBD" + - "aGVjayBkaXJlY3QgYWRkcmVzcyBmaWVsZHMgdXNlZCBieSBhIHNwbGl0IGRlcGxveW1lbnQKZ3Jl" + - "cCBudmNmTmF0c1NlcnZpY2VVUkwgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvZW52aXJvbm1l" + - "bnRzLzxlbnY+LnlhbWwKZ3JlcCAtRSAnaWNtc1NlcnZpY2V8cmV2YWxTZXJ2aWNlfG5hdHMnIFwK" + - "ICBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMvPGVudj4ueWFt" + - "bApgYGAKCiMjIyBGaXgKCktlZXAgYGdsb2JhbC5kb21haW5gLCByb3V0ZSBob3N0bmFtZXMsIGFu" + - "ZCBIb3N0IG92ZXJyaWRlcyB1bmNoYW5nZWQuIFVwZGF0ZSBETlMKb3IgdGhlIGRpcmVjdCBjbGll" + - "bnQgZGVzdGluYXRpb24uIEZvciBzcGxpdCBkZXBsb3ltZW50cywgdXBkYXRlIG9ubHkgZGlyZWN0" + - "CkdhdGV3YXktYWRkcmVzcyBmaWVsZHMgYW5kIHJlZnJlc2ggcmVnaXN0cmF0aW9uIGFuZCBpbnN0" + - "YWxsYXRpb24gdGhyb3VnaCB0aGUKc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLiBTZWUKW0V4YW1wbGUg" + - "NF0oLi4vZXhhbXBsZXMubWQjZXhhbXBsZS00LXJlY292ZXItZnJvbS1hLWdhdGV3YXktZW5kcG9p" + - "bnQtY2hhbmdlKS4KCiMjIFVzZWZ1bCBOYW1lc3BhY2UtdG8tU2VydmljZSBNYXBwaW5nCgpRdWlj" + - "ayByZWZlcmVuY2UgZm9yIHdoaWNoIHNlcnZpY2VzIHJ1biBpbiB3aGljaCBuYW1lc3BhY2U6Cgp8" + - "IE5hbWVzcGFjZSB8IFNlcnZpY2VzIHwKfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgbmF0cy1z" + - "eXN0ZW0gfCBuYXRzIHwKfCBjYXNzYW5kcmEtc3lzdGVtIHwgY2Fzc2FuZHJhIHwKfCB2YXVsdC1z" + - "eXN0ZW0gfCBvcGVuYmFvLXNlcnZlciB8CnwgbnZjZiB8IGFwaSwgaW52b2NhdGlvbi1zZXJ2aWNl" + - "LCBncnBjLXByb3h5LCBub3Rhcnktc2VydmljZSwgcmV2YWwsIGxsbS1yZXF1ZXN0LXJvdXRlciwg" + - "bGxtLWFwaS1nYXRld2F5IHwKfCBhcGkta2V5cyB8IGFwaS1rZXlzLCBhZG1pbi1pc3N1ZXItcHJv" + - "eHkgfAp8IGVzcyB8IGVzcy1hcGkgfAp8IHNpcyB8IHNpcyB8CnwgZW52b3ktZ2F0ZXdheS1zeXN0" + - "ZW0gfCBlbnZveSBnYXRld2F5IChpbmdyZXNzIGNvbnRyb2xsZXIpIHwKfCBlbnZveS1nYXRld2F5" + - "IHwgZ2F0ZXdheSByZXNvdXJjZSArIHJvdXRlcyB8ClBLBwi1enA7tTAAALUwAABQSwMEFAAIAAAA" + - "AAAhAAAAAAAAAAAAAAAAAEQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9y" + - "ZWZlcmVuY2VzL2hlbG1maWxlLXN0cnVjdHVyZS5tZFVUBQABAKbOEiMgSGVsbWZpbGUgU3RydWN0" + - "dXJlIFJlZmVyZW5jZQoKIyMgRGlyZWN0b3J5IExheW91dAoKYGBgYmFzaApudmNmLXNlbGYtbWFu" + - "YWdlZC1zdGFjay8KfC0tIGhlbG1maWxlLmQvCnwgICB8LS0gMDEtZGVwZW5kZW5jaWVzLnlhbWwu" + - "Z290bXBsICAjIE5BVFMsIENhc3NhbmRyYSwgT3BlbkJhbwp8ICAgfC0tIDAyLWNvcmUueWFtbC5n" + - "b3RtcGwgICAgICAgICAgIyBOVkNGIHNlcnZpY2VzICsgaW5ncmVzcwp8ICAgYC0tIDAzLW9ic2Vy" + - "dmFiaWxpdHkueWFtbC5nb3RtcGwgIyBPYnNlcnZhYmlsaXR5IHN0YWNrIChvcHRpb25hbCkKfC0t" + - "IGVudmlyb25tZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAgICAgICAgICAgICMgRGVm" + - "YXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVudi1uYW1lPi55YW1sICAg" + - "ICAgICAgICAgICAjIFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKfC0tIHNlY3JldHMvCnwgICBg" + - "LS0gPGVudi1uYW1lPi1zZWNyZXRzLnlhbWwgICAgICAjIFNlbnNpdGl2ZSB2YWx1ZXMgKHJlZ2lz" + - "dHJ5IGNyZWRzLCBwYXNzd29yZHMpCmAtLSBnbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAg" + - "ICAjIEdvIHRlbXBsYXRlIHRoYXQgY29uc3RydWN0cyBwZXItY2hhcnQgdmFsdWVzCgpudmNmLWNv" + - "bXB1dGUtcGxhbmUtc3RhY2svCnwtLSBoZWxtZmlsZS5kLwp8ICAgfC0tIDAxLWRlcGVuZGVuY2ll" + - "cy55YW1sLmdvdG1wbCAgIyBDb21wdXRlIHBsYW5lIGRlcGVuZGVuY3kgY29tcG9uZW50cwp8ICAg" + - "YC0tIDAyLW52Y2EueWFtbC5nb3RtcGwgICAgICAgICAgIyBudmNhLW9wZXJhdG9yIGNoYXJ0IGFu" + - "ZCBudmNhIGNvbmZpZ3VyYXRpb24KfC0tIGVudmlyb25tZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwg" + - "ICAgICAgICAgICAgICAgICAgICMgRGVmYXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwg" + - "ICBgLS0gPGVudi1uYW1lPi55YW1sICAgICAgICAgICAgICAjIFBlci1lbnZpcm9ubWVudCBvdmVy" + - "cmlkZXMKYC0tIGdsb2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAgICMgR28gdGVtcGxhdGUg" + - "dGhhdCBjb25zdHJ1Y3RzIHBlci1jaGFydCB2YWx1ZXMKYGBgCgpUaGVzZSBzdGFja3MgaGF2ZSBz" + - "ZXBhcmF0ZSBlbnZpcm9ubWVudHMgYW5kIGNsdXN0ZXIgY29udGV4dHMuIFRoZSBIZWxtZmlsZQp2" + - "YWx1ZXMgZmxvdyBhdXRob3JzIGJvdGggZW52aXJvbm1lbnQgZmlsZXMuIFRoZSBDTEkgcHJvZmls" + - "ZSBmbG93IGluc3RlYWQgdXNlcwp0aGUgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBsYW5lIHByb2Zp" + - "bGUgYXMgaXRzIGVuZHBvaW50IHNvdXJjZS4gRG8gbm90IG1peCB0aGUKaGFuZG9mZnMuIFNlZSBb" + - "U3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0" + - "aW9uLm1kKS4KCiMjIEdvdG1wbCBGaWxlcyBhbmQgVGhlaXIgUmVsZWFzZXMKCiMjIyAwMS1kZXBl" + - "bmRlbmNpZXMueWFtbC5nb3RtcGwKCnwgUmVsZWFzZSB8IENoYXJ0IHwgTmFtZXNwYWNlIHwgTm90" + - "ZXMgfAp8LS0tLS0tLS0tfC0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLXwKfCBuYXRzIHwgaGVs" + - "bS1udmNmLW5hdHMgfCBuYXRzLXN5c3RlbSB8IE1lc3NhZ2luZyB8Cnwgb3BlbmJhby1zZXJ2ZXIg" + - "fCBoZWxtLW52Y2Ytb3BlbmJhby1zZXJ2ZXIgfCB2YXVsdC1zeXN0ZW0gfCBTZWNyZXRzIG1hbmFn" + - "ZW1lbnQsIGRlcGVuZHMgb24gbmF0cyB8CnwgY2Fzc2FuZHJhIHwgaGVsbS1udmNmLWNhc3NhbmRy" + - "YSB8IGNhc3NhbmRyYS1zeXN0ZW0gfCBEYXRhYmFzZSB8CgpVc2VzIGA8PDogKmRlcGVuZGVuY3lg" + - "IHRlbXBsYXRlIGluaGVyaXRhbmNlIHdpdGggYHJlbGVhc2UtZ3JvdXA6IGRlcGVuZGVuY2llc2Ag" + - "bGFiZWwuCgojIyMgMDItY29yZS55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1l" + - "c3BhY2UgfCBMYWJlbCB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8" + - "IGFwaS1rZXlzIHwgaGVsbS1udmNmLWFwaS1rZXlzIHwgYXBpLWtleXMgfCBzZXJ2aWNlcyB8Cnwg" + - "c2lzIHwgaGVsbS1udmNmLXNpcyB8IHNpcyB8IHNlcnZpY2VzIHwKfCBhcGkgfCBoZWxtLW52Y2Yt" + - "YXBpIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBpbnZvY2F0aW9uLXNlcnZpY2UgfCBoZWxtLW52Y2Yt" + - "aW52b2NhdGlvbi1zZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBncnBjLXByb3h5IHwgaGVs" + - "bS1udmNmLWdycGMtcHJveHkgfCBudmNmIHwgc2VydmljZXMgfAp8IGVzcy1hcGkgfCBoZWxtLW52" + - "Y2YtZXNzLWFwaSB8IGVzcyB8IHNlcnZpY2VzIHwKfCBub3Rhcnktc2VydmljZSB8IGhlbG0tbnZj" + - "Zi1ub3Rhcnktc2VydmljZSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgcmV2YWwgfCBoZWxtLXJldmFs" + - "IHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBsbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNmL2hlbG0tbnZj" + - "Zi1sbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNmIHwgc2VydmljZXMgfAp8IGxsbS1hcGktZ2F0ZXdh" + - "eSB8IG52Y2YvaGVsbS1udmNmLWxsbS1hcGktZ2F0ZXdheSB8IG52Y2YgfCBzZXJ2aWNlcyB8Cnwg" + - "YWRtaW4taXNzdWVyLXByb3h5IHwgaGVsbS1hZG1pbi10b2tlbi1pc3N1ZXItcHJveHkgfCBhcGkt" + - "a2V5cyB8IChubyByZWxlYXNlLWdyb3VwIGxhYmVsKSB8CnwgaW5ncmVzcyB8IG52Y2YtZ2F0ZXdh" + - "eS1yb3V0ZXMgfCBlbnZveS1nYXRld2F5LXN5c3RlbSB8IGluZ3Jlc3MgfAoKTW9zdCBzZXJ2aWNl" + - "cyB1c2UgYGluaGVyaXQ6IFt7dGVtcGxhdGU6IHNlcnZpY2V9XWAuIExMTSByZWxlYXNlcyB1c2Ug" + - "T0NJIGNoYXJ0cyBmcm9tIHRoZSBgbnZjZmAgcmVwb3NpdG9yeSB3aXRoIHN0YW5kYWxvbmUgYHZh" + - "bHVlczogWy4uL2dsb2JhbC55YW1sLmdvdG1wbF1gIGJsb2NrczsgdGhleSBhcmUgZ2F0ZWQgb24g" + - "YGFkZG9ucy5sbG0uZW5hYmxlZGAuIGBhZG1pbi1pc3N1ZXItcHJveHlgIGFuZCBgaW5ncmVzc2Ag" + - "aGF2ZSBzdGFuZGFsb25lIGB2YWx1ZXM6YCBibG9ja3MuCgojIyMgMDMtb2JzZXJ2YWJpbGl0eS55" + - "YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBMYWJlbCB8CnwtLS0t" + - "LS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IChvYnNlcnZhYmlsaXR5IHJlbGVh" + - "c2VzKSB8ICh2YXJpb3VzKSB8IG9ic2VydmFiaWxpdHkgfCBvYnNlcnZhYmlsaXR5IHwKCkdhdGVk" + - "IG9uIG9ic2VydmFiaWxpdHktc3BlY2lmaWMgZmxhZ3MgaW4gdGhlIGVudmlyb25tZW50IGZpbGUu" + - "IFNraXBwZWQgaWYgZGlzYWJsZWQuCgojIyBUZW1wbGF0ZSBJbmhlcml0YW5jZQoKIyMjIGA8PDog" + - "KmRlcGVuZGVuY3lgIChZQU1MIG1lcmdlKQoKVXNlZCBpbiBgMDEtZGVwZW5kZW5jaWVzLnlhbWwu" + - "Z290bXBsYC4gTWVyZ2VzIHRoZSB0ZW1wbGF0ZSdzIHByb3BlcnRpZXMgaW50byB0aGUgcmVsZWFz" + - "ZS4KCioqR290Y2hhKio6IFlBTUwgbWVyZ2UgcmVwbGFjZXMgbGlzdHMuIElmIHlvdSBhZGQgYSBg" + - "dmFsdWVzOmAga2V5IHRvIHRoZSByZWxlYXNlLCBpdCAqKnJlcGxhY2VzKiogdGhlIHRlbXBsYXRl" + - "J3MgYHZhbHVlczpgIGxpc3QgZW50aXJlbHkuIFlvdSBtdXN0IHJlLWluY2x1ZGUgYWxsIHRlbXBs" + - "YXRlIHZhbHVlczoKCkluIHRoZSB0ZW1wbGF0ZSBiZWxvdywgYDxwcml2YXRlLXZhbHVlcz5gIHJl" + - "ZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxlIHN0YWNrIHJv" + - "b3QuCgpgYGB5YW1sCiMgVGVtcGxhdGUgZGVmaW5lczoKdGVtcGxhdGVzOgogIGRlcGVuZGVuY3k6" + - "ICZkZXBlbmRlbmN5CiAgICBjaGFydDogbnZjZi9oZWxtLW52Y2Yte3sgLlJlbGVhc2UuTmFtZSB9" + - "fQogICAgdmFsdWVzOgogICAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAgICAtIC4uLzxw" + - "cml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55" + - "YW1sCgojIFdoZW4gb3ZlcnJpZGluZywgTVVTVCByZS1pbmNsdWRlIGJvdGg6Ci0gbmFtZTogY2Fz" + - "c2FuZHJhCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5n" + - "b3RtcGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNdXN0" + - "IHJlLWluY2x1ZGUKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVM" + - "TUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwgICAjIE11c3QgcmUtaW5jbHVkZQogICAgLSBjYXNz" + - "YW5kcmE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + - "ICAgICAgICMgWW91ciBvdmVycmlkZQogICAgICAgIHJlc291cmNlczoKICAgICAgICAgIGxpbWl0" + - "czoKICAgICAgICAgICAgbWVtb3J5OiA4MTkyTWkKYGBgCgojIyMgYGluaGVyaXRgIChIZWxtZmls" + - "ZSBuYXRpdmUpCgpVc2VkIGluIGAwMi1jb3JlLnlhbWwuZ290bXBsYC4gSGVsbWZpbGUncyBuYXRp" + - "dmUgaW5oZXJpdGFuY2UgbWVjaGFuaXNtLgoKYGBgeWFtbAotIG5hbWU6IGFwaQogIHZlcnNpb246" + - "IDEuNi4wCiAgbmFtZXNwYWNlOiBudmNmCiAgaW5oZXJpdDoKICAgIC0gdGVtcGxhdGU6IHNlcnZp" + - "Y2UKYGBgCgpXaGVuIGFkZGluZyBgdmFsdWVzOmAgdG8gYW4gaW5oZXJpdGVkIHJlbGVhc2UsIHlv" + - "dSBhbHNvIG5lZWQgdG8gcmUtaW5jbHVkZSB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgZmlsZXMgc2lu" + - "Y2UgYHZhbHVlc2AgaXMgYSBsaXN0IHRoYXQgZ2V0cyByZXBsYWNlZC4KCiMjIFZhbHVlcyBQcmVj" + - "ZWRlbmNlCgpGcm9tIGxvd2VzdCB0byBoaWdoZXN0IHByaW9yaXR5OgoKMS4gYGVudmlyb25tZW50" + - "cy9iYXNlLnlhbWxgIC0tIGRlZmF1bHRzIHNoYXJlZCBhY3Jvc3MgYWxsIGVudmlyb25tZW50cwoy" + - "LiBgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgIC0tIHBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMK" + - "My4gYGdsb2JhbC55YW1sLmdvdG1wbGAgLS0gR28gdGVtcGxhdGUgcHJvY2Vzc2luZyAoY29uc3Ry" + - "dWN0cyBjaGFydC1zcGVjaWZpYyBzdHJ1Y3R1cmUpCjQuIGA8cHJpdmF0ZS12YWx1ZXM+LzxlbnY+" + - "LXNlY3JldHMueWFtbGAgLS0gc2Vuc2l0aXZlIHZhbHVlcwo1LiBJbmxpbmUgYHZhbHVlczpgIGJs" + - "b2NrcyBvbiByZWxlYXNlcyAtLSBoaWdoZXN0IHByZWNlZGVuY2UKCiMjIFdoYXQgZ2xvYmFsLnlh" + - "bWwuZ290bXBsIFBhc3NlcyBUaHJvdWdoCgpgZ2xvYmFsLnlhbWwuZ290bXBsYCByZWFkcyBmcm9t" + - "IGAuVmFsdWVzYCAodGhlIG1lcmdlZCBlbnZpcm9ubWVudCArIGVudi1zcGVjaWZpYyBZQU1MKSBh" + - "bmQgY29uc3RydWN0cyBjaGFydC1zcGVjaWZpYyB2YWx1ZXMuIEl0IG9ubHkgcGFzc2VzIHRocm91" + - "Z2gga2V5cyBpdCBleHBsaWNpdGx5IHJlZmVyZW5jZXM6CgojIyMgQ2Fzc2FuZHJhCgotIGBjYXNz" + - "YW5kcmEucmVwbGljYUNvdW50YAotIGBjYXNzYW5kcmEuaW1hZ2UuKmAgKHJlZ2lzdHJ5LCByZXBv" + - "c2l0b3J5KQotIGBjYXNzYW5kcmEubWlncmF0aW9ucy5pbWFnZS4qYAotIGBjYXNzYW5kcmEucGVy" + - "c2lzdGVuY2Uuc2l6ZWAKLSBgY2Fzc2FuZHJhLm5vZGVTZWxlY3RvcmAgKGlmIGBnbG9iYWwubm9k" + - "ZVNlbGVjdG9ycy5lbmFibGVkYCkKLSBgY2Fzc2FuZHJhLmdsb2JhbC5kZWZhdWx0U3RvcmFnZUNs" + - "YXNzYAoKIyMjIE5BVFMKCi0gYG5hdHMuY29udGFpbmVyLmltYWdlLipgCi0gYG5hdHMucmVsb2Fk" + - "ZXIuaW1hZ2UuKmAKLSBgbmF0cy5uYXRzQm94LmNvbnRhaW5lci5pbWFnZS4qYAotIGBuYXRzLmNv" + - "bmZpZy5qZXRzdHJlYW0uZmlsZVN0b3JlLnB2Yy5zdG9yYWdlQ2xhc3NOYW1lYAotIGBuYXRzLnBv" + - "ZFRlbXBsYXRlLm1lcmdlLnNwZWMubm9kZVNlbGVjdG9yYCAoaWYgZW5hYmxlZCkKCiMjIyBPcGVu" + - "QmFvCgotIGBvcGVuYmFvLm1pZ3JhdGlvbnMuaW1hZ2UuKmAgYW5kIGBvcGVuYmFvLm1pZ3JhdGlv" + - "bnMuZW52YAotIGBvcGVuYmFvLmluamVjdG9yLmltYWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmlt" + - "YWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmRhdGFTdG9yYWdlLipgCi0gTm9kZSBzZWxlY3RvcnMg" + - "KGlmIGVuYWJsZWQpCgojIyMgU2VydmljZXMgKEFQSSwgU0lTLCBldGMuKQoKLSBgPHNlcnZpY2U+" + - "LmltYWdlLipgIChyZWdpc3RyeSwgcmVwb3NpdG9yeSkKLSBgPHNlcnZpY2U+Lm5vZGVTZWxlY3Rv" + - "cmAgKGlmIGVuYWJsZWQpCi0gYDxzZXJ2aWNlPi5lbnYuKmAgKG9ic2VydmFiaWxpdHkgc2V0dGlu" + - "Z3MpCgojIyMgTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnQKCkVuYWJsZSB0aGUgTExNIGFkZG9uIGJl" + - "Zm9yZSBjcmVhdGluZyBvciBpbnZva2luZyBmdW5jdGlvbnMgd2l0aApgZnVuY3Rpb25UeXBlOiAi" + - "TExNImAuIFRoZSBhZGRvbiBkZXBsb3lzIGBsbG0tcmVxdWVzdC1yb3V0ZXJgIGFuZApgbGxtLWFw" + - "aS1nYXRld2F5YCwgYWRkcyB0aGUgYGxsbS5pbnZvY2F0aW9uLjxkb21haW4+YCByb3V0ZSB3aGVu" + - "IEdhdGV3YXkgQVBJCmluZ3Jlc3MgaXMgZW5hYmxlZCwgYW5kIGNvbmZpZ3VyZXMgd29ya2VycyB0" + - "byB1c2UgdGhlIExMTSBzaWRlY2FyLiBUaGUgSGVsbWZpbGUKY29uZGl0aW9uIGlzIGBhZGRvbnMu" + - "bGxtLmVuYWJsZWRgLiBEbyBub3QgdXNlIHRoZSBvYnNvbGV0ZSBgbGxtLmVuYWJsZWRgIHBhdGgu" + - "CgpGb3IgYSBzaW5nbGUtbm9kZSBpc29sYXRlZCB0ZXN0IGNsdXN0ZXIsIGFkZCB0aGlzIGNvbmZp" + - "Z3VyYXRpb24gdG8KYGVudmlyb25tZW50cy88ZW52Pi55YW1sYCBiZWZvcmUgYXBwbHlpbmcgdGhl" + - "IHN0YWNrOgoKYGBgeWFtbAphZGRvbnM6CiAgbGxtOgogICAgZW5hYmxlZDogdHJ1ZQogICAgZ2F0" + - "ZXdheToKICAgICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2Vydmlj" + - "ZU1vbml0b3I6CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQogICAgcmVxdWVzdFJvdXRlcjoKICAg" + - "ICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2VydmljZU1vbml0b3I6" + - "CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQoKYWdlbnRDb25maWc6CiAgbWVyZ2VDb25maWc6IHwK" + - "ICAgIGNsdXN0ZXI6CiAgICAgIHZhbGlkYXRpb25Qb2xpY3k6CiAgICAgICAgbmFtZTogVW5yZXN0" + - "cmljdGVkCiAgICB3b3JrbG9hZDoKICAgICAgc3RhcmdhdGVRVUlDSW5zZWN1cmU6IHRydWUKYGBg" + - "CgpVc2UgYHJlcGxpY2FDb3VudDogMWAgb25seSBmb3IgbG9jYWwgb3Igc2luZ2xlLW5vZGUgdGVz" + - "dCBjbHVzdGVycy4gVGhlIGJ1bmRsZWQKTlZDRiBBUEkgY3VycmVudGx5IHNlcnZlcyBwbGFpbnRl" + - "eHQgZ1JQQyBvbiBwb3J0IDkwOTAsIHNvIHRoZSBzZWxmLW1hbmFnZWQgc3RhY2sKZGVmYXVsdHMg" + - "dGhlIExMTSBBUEkgR2F0ZXdheSBhdXRoZW50aWNhdGlvbiBob3AgdG8gcGxhaW50ZXh0LiBTZXQK" + - "YGFkZG9ucy5sbG0uZ2F0ZXdheS5hdXRoLmdycGNJbnNlY3VyZTogZmFsc2VgIG9ubHkgd2l0aCBh" + - "IFRMUy1jYXBhYmxlIE5WQ0YgQVBJLgoKV29ya2VyLXRvLXJvdXRlciB0cmFuc3BvcnQgaXMgc2Vw" + - "YXJhdGUuIEZvciBzaGFyZWQgb3IgcHJvZHVjdGlvbiBjbHVzdGVycywgdXNlCnRoZSByZXF1aXJl" + - "ZCByZXBsaWNhIGNvdW50IGFuZCB0aGUgbWFuYWdlZCBUTFMgY29uZmlndXJhdGlvbi4gVGhlCmB3" + - "b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZWAgc2V0dGluZyBlbmFibGVzIHBsYWludGV4dCB3" + - "b3JrZXIgdHJhbnNwb3J0IGFuZAptdXN0IG5vdCBiZSB1c2VkIGluIHByb2R1Y3Rpb24uCgpUaGUg" + - "cmVxdWVzdCByb3V0ZXIgdXNlcyBgcG93ZXItb2YtdHdvYCB3aGVuIG5vIGxvYWQtYmFsYW5jZXIg" + - "Y29uZmlndXJhdGlvbiBpcwpzZXQuIENvbmZpZ3VyZSBvdGhlciByb3V0aW5nIG1ldGhvZHMgd2l0" + - "aCB0aGUKW0xMTSBSZXF1ZXN0IFJvdXRlciBMb2FkIEJhbGFuY2luZ10oaHR0cHM6Ly9naXRodWIu" + - "Y29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9kb2NzL3VzZXIvbGxtLXJlcXVlc3Qtcm91dGVyLWxv" + - "YWQtYmFsYW5jaW5nLm1kKQpndWlkZS4KCklmIHRoZSBzaWRlY2FyIGltYWdlIGlzIG1pcnJvcmVk" + - "IG91dHNpZGUgdGhlIHN0YWNrJ3MgZGVmYXVsdCBpbWFnZSByZWdpc3RyeSBhbmQKcmVwb3NpdG9y" + - "eSwgc2V0IHRoZSBnZW5lcmF0ZWQgd29ya2VyIHNpZGVjYXIgaW1hZ2UgZXhwbGljaXRseToKCmBg" + - "YHlhbWwKYXBpOgogIHJlbW90ZUNvbmZpZzoKICAgIGNvbmZpZ0RhdGE6CiAgICAgIG52Y2Y6CiAg" + - "ICAgICAgc2lkZWNhcnM6CiAgICAgICAgICBsbG0tcm91dGVyLWNsaWVudC1pbWFnZTogPHJlZ2lz" + - "dHJ5Pi88cmVwb3NpdG9yeT4vcHlsb246MC4xNC4xCmBgYAoKVGhlIGxlZ2FjeSBgYXBpLmVudi5O" + - "VkNGX1NJREVDQVJTX0xMTV9ST1VURVJfQ0xJRU5UX0lNQUdFYCBwYXRoIGlzIGRlcHJlY2F0ZWQu" + - "ClRoZSBzdGFjayB0cmFuc2xhdGVzIGl0IGZvciBvbmUgY29tcGF0aWJpbGl0eSB3aW5kb3csIGJ1" + - "dCBuZXcgY29uZmlndXJhdGlvbnMKbXVzdCB1c2UgdGhlIHJlbW90ZS1jb25maWcgcGF0aC4gQ29u" + - "ZmxpY3RpbmcgdmFsdWVzIGZhaWwgcmVuZGVyaW5nLgoKUmVuZGVyIGFuZCBhcHBseSB0aGUgdXBk" + - "YXRlZCBjb250cm9sLXBsYW5lIGVudmlyb25tZW50LCB0aGVuIHJlZnJlc2ggZXZlcnkKcmVnaXN0" + - "ZXJlZCBjb21wdXRlIHBsYW5lIHVzaW5nIHRoZSBzYW1lIGhhbmRvZmYgdXNlZCBmb3IgaXRzIGlu" + - "c3RhbGxhdGlvbiBzbwpOVkNBIHJlY2VpdmVzIGBhZ2VudENvbmZpZy5tZXJnZUNvbmZpZ2A6Cgpg" + - "YGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSB0ZW1wbGF0ZQpIRUxNRklMRV9FTlY9" + - "PGVudj4gaGVsbWZpbGUgc3luYwpgYGAKClVzZSB0aGUgY29tcGxldGUgY29tcHV0ZS1wbGFuZSBp" + - "bnN0YWxsIGNvbW1hbmQgZnJvbQpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNv" + - "bXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4gQQpDTEktcHJvZmlsZSBpbnN0YWxsYXRpb24g" + - "bXVzdCByZW1haW4gcHJvZmlsZS1kcml2ZW47IGEgSGVsbWZpbGUgaW5zdGFsbGF0aW9uCm11c3Qg" + - "cmVtYWluIHZhbHVlcy1kcml2ZW4uCgpFeGlzdGluZyBMTE0gZnVuY3Rpb24gdmVyc2lvbnMgcmV0" + - "YWluIHRoZSB3b3JrZXItc2lkZWNhciBpbWFnZSBtZXRhZGF0YQpjYXB0dXJlZCB3aGVuIHRoZSB2" + - "ZXJzaW9uIGlzIGNyZWF0ZWQuIFJlcGxhY2luZyBwb2RzIG9yIHJlZGVwbG95aW5nIHRoZSBzYW1l" + - "CnZlcnNpb24gZG9lcyBub3QgYXBwbHkgYSBuZXcgUHlsb24gaW1hZ2UuIEFmdGVyIHRoZSBjb250" + - "cm9sLXBsYW5lIHVwZGF0ZSwKY3JlYXRlIGFuZCBkZXBsb3kgYSBuZXcgZnVuY3Rpb24gdmVyc2lv" + - "bi4gVmVyaWZ5IHRoZSBjb250cm9sIHBsYW5lLCByb3V0ZSwgYW5kCndvcmtlciBzaWRlY2FyOgoK" + - "YGBgYmFzaAprdWJlY3RsIGdldCBkZXBsb3kgLW4gbnZjZiBsbG0tYXBpLWdhdGV3YXkKa3ViZWN0" + - "bCBnZXQgc3RhdGVmdWxzZXQgLW4gbnZjZiBsbG0tcmVxdWVzdC1yb3V0ZXIKa3ViZWN0bCBnZXQg" + - "cG9kcyAtbiBudmNmIHwgZ3JlcCAtRSAnbGxtLWFwaS1nYXRld2F5fGxsbS1yZXF1ZXN0LXJvdXRl" + - "cicKa3ViZWN0bCBnZXQgaHR0cHJvdXRlIC1BIHwgZ3JlcCBsbG0Ka3ViZWN0bCAtbiBudmNmLWJh" + - "Y2tlbmQgZ2V0IHBvZCA8ZnVuY3Rpb24tcG9kPiBcCiAgLW8ganNvbnBhdGg9J3tyYW5nZSAuc3Bl" + - "Yy5jb250YWluZXJzWz8oQC5uYW1lPT0ibGxtLXdvcmtlciIpXS5hcmdzWypdfXsufXsiXFxuIn17" + - "ZW5kfScKYGBgCgpGb3IgbG9jYWwgcGxhaW50ZXh0IGNsdXN0ZXJzLCB0aGUgYGxsbS13b3JrZXJg" + - "IGFyZ3MgbXVzdCBpbmNsdWRlCmAtLXF1aWMtaW5zZWN1cmVgLgoKRm9yIGxvYWQtYmFsYW5jZXIg" + - "c2NoZW1hIGFuZCBhbGdvcml0aG0gYmVoYXZpb3IsIHNlZSB0aGUKW1N0YXJnYXRlIGNvbmZpZ3Vy" + - "YXRpb24gZ3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9OVklESUEvbnZjZi9ibG9iL21haW4vc3Jj" + - "L2xpYnJhcmllcy9ydXN0L3N0YXJnYXRlL2RvY3MvbG9hZC1iYWxhbmNlci1jb25maWd1cmF0aW9u" + - "Lm1kKS4KCiMjIEhlbG1maWxlIFNlbGVjdG9ycwoKVGFyZ2V0IHNwZWNpZmljIHJlbGVhc2VzIG9y" + - "IGdyb3VwczoKCmBgYGJhc2gKIyBCeSByZWxlYXNlIGdyb3VwCkhFTE1GSUxFX0VOVj08ZW52PiBo" + - "ZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMKSEVMTUZJ" + - "TEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1zZXJ2aWNlcyBz" + - "eW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9" + - "aW5ncmVzcyBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVh" + - "c2UtZ3JvdXA9b2JzZXJ2YWJpbGl0eSBzeW5jCgojIEJ5IHJlbGVhc2UgbmFtZQpIRUxNRklMRV9F" + - "TlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSBzeW5jCkhFTE1GSUxF" + - "X0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9YWRtaW4taXNzdWVyLXByb3h5IHN5" + - "bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1sbG0tcmVxdWVz" + - "dC1yb3V0ZXIgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1l" + - "PWxsbS1hcGktZ2F0ZXdheSBzeW5jCgojIFRlbXBsYXRlIG9ubHkgKGRyeSBydW4pCkhFTE1GSUxF" + - "X0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlCgoj" + - "IERlc3Ryb3kgYSBzaW5nbGUgcmVsZWFzZQpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1z" + - "ZWxlY3RvciBuYW1lPWNhc3NhbmRyYSBkZXN0cm95CmBgYAoKTm90ZTogYGFkbWluLWlzc3Vlci1w" + - "cm94eWAgaGFzIG5vIGByZWxlYXNlLWdyb3VwYCBsYWJlbC4gVXNlIGAtLXNlbGVjdG9yIG5hbWU9" + - "YWRtaW4taXNzdWVyLXByb3h5YC4KUEsHCLE1HdsCKgAAAioAAFBLAwQUAAgAAAAAACEAAAAAAAAA" + - "AAAAAAAAPwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMv" + - "bnZjZi11aS1hZGRvbi5tZFVUBQABAKbOEiMgTlZDRiBVSSBBZGRvbgoKTlZDRiBVSSBpcyBhbiBv" + - "cHRpb25hbCwgY3VzdG9tZXItZmFjaW5nIE5WQ0YgYWRtaW4tcGFuZWwgVUkuIEl0IGlzIGRpc2Fi" + - "bGVkIGJ5CmRlZmF1bHQgYW5kIGF2YWlsYWJsZSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRoYXQg" + - "aW5jbHVkZSB0aGUgTlZDRiBVSSBhZGRvbi4KCiMjIFdoZW4gdG8gZW5hYmxlCgpFbmFibGUgTlZD" + - "RiBVSSBvbmx5IHdoZW4geW91IG5lZWQgdGhlIGFkbWluLXBhbmVsIFVJIGFuZCB5b3VyIGV4dHJh" + - "Y3RlZCBzdGFjawpwYWNrYWdlIGluY2x1ZGVzIHRoZSBhZGRvbi4gSWYgdGhlIHBhY2thZ2UgZG9l" + - "cyBub3QgY29udGFpbiBhIGBudmNmLXVpYCByZWxlYXNlCmFuZCBgbnZjZlVpYCByb3V0ZSB2YWx1" + - "ZXMsIHNraXAgdGhlIGFkZG9uIHVudGlsIHlvdSB1c2UgYSBwYWNrYWdlIHRoYXQgaW5jbHVkZXMK" + - "dGhlbS4KCiMjIEVuYWJsZSB0aGUgYWRkb24KCkVuYWJsZSBpdCBpbiBgZW52aXJvbm1lbnRzLzxl" + - "bnYtbmFtZT4ueWFtbGA6CgpgYGB5YW1sCmFkZG9uczoKICBudmNmVWk6CiAgICBlbmFibGVkOiB0" + - "cnVlCmBgYAoKIyMgQ3JlYXRlIG5hbWVzcGFjZSBhbmQgaW1hZ2UgcHVsbCBzZWNyZXQKCkNyZWF0" + - "ZSB0aGUgbmFtZXNwYWNlLCBhbmQgYW4gaW1hZ2UgcHVsbCBzZWNyZXQgb25seSBpZiBwdWxsaW5n" + - "IGZyb20gYSBwcml2YXRlCnJlZ2lzdHJ5OgoKYGBgYmFzaAprdWJlY3RsIGNyZWF0ZSBuYW1lc3Bh" + - "Y2UgbnZjZi11aSAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0K" + - "CiMgT25seSBpZiBwdWxsaW5nIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5IChlLmcuLCBOR0MgbnZj" + - "ci5pbykKZXhwb3J0IE5HQ19BUElfS0VZPSI8eW91ci1rZXk+IgprdWJlY3RsIGNyZWF0ZSBzZWNy" + - "ZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogIC0tZG9ja2VyLXNlcnZlcj1udmNyLmlv" + - "IFwKICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAtLWRvY2tlci1wYXNzd29y" + - "ZD0iJE5HQ19BUElfS0VZIiBcCiAgLS1uYW1lc3BhY2U9bnZjZi11aSBcCiAgLS1kcnktcnVuPWNs" + - "aWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCmBgYAoKVGhlIGRlZmF1bHQgcm91dGUg" + - "aG9zdCBpcyBgbnZjZi11aS48ZG9tYWluPmAgYW5kIHRoZSBiYWNrZW5kIGlzCmBudmNmLXVpLm52" + - "Y2YtdWk6ODMwMGAuCgojIyBBcHBseSB0aGUgc2VydmljZSBhbmQgcm91dGUKCkFmdGVyIGNvbmZp" + - "cm1pbmcgdGhlIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGBudmNmLXVpYCByZWxlYXNlLCBwcmV2aWV3" + - "IGFuZCBhcHBseQp0aGUgc2VydmljZSBhbmQgcm91dGU6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08" + - "ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1udmNmLXVpIHRlbXBsYXRlCkhFTE1G" + - "SUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1udmNmLXVpIHN5bmMK" + - "SEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3Vw" + - "PWluZ3Jlc3Mgc3luYwpgYGAKCiMjIFZlcmlmeQoKVmVyaWZ5IHRoZSByb3V0ZSBvbmx5IHdoZW4g" + - "dGhlIGFkZG9uIGlzIHByZXNlbnQgYW5kIGVuYWJsZWQ6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGRl" + - "cGxveSxzdmMgLW4gbnZjZi11aQprdWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIC1pIG52" + - "Y2YtdWkKY3VybCAtaSAtSCAiSG9zdDogbnZjZi11aS48ZG9tYWluPiIgImh0dHA6Ly88Z2F0ZXdh" + - "eS1hZGRyZXNzPi9zdGF0dXMiCmBgYAoKIyMgU2VjdXJpdHkKClRoZSBOVkNGIFVJIGFkbWluIHBh" + - "bmVsIGlzIGN1cnJlbnRseSB1bmF1dGhlbnRpY2F0ZWQuIERvIG5vdCBleHBvc2UgaXQgdG8gdGhl" + - "CnB1YmxpYyBpbnRlcm5ldC4gUmVzdHJpY3QgYWNjZXNzIHRvIGEgdHJ1c3RlZCBuZXR3b3JrLCBW" + - "UE4sIG9yIGFuIGF1dGhlbnRpY2F0aW5nCnByb3h5IGluIGZyb250IG9mIHRoZSBgbnZjZi11aWAg" + - "cm91dGUuClBLBwg4+SevuQcAALkHAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAD4ACQBkYXRh" + - "L252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5t" + - "ZFVUBQABAKbOEiMgSW1hZ2UgUHVsbCBTZWNyZXRzIFJlZmVyZW5jZQoKIyMgT3ZlcnZpZXcKCldo" + - "ZW4gcHVsbGluZyBOVkNGIGltYWdlcyBmcm9tIGEgcHJpdmF0ZSByZWdpc3RyeSAoZm9yIGV4YW1w" + - "bGUsIE5HQwpgbnZjci5pb2ApLCBLdWJlcm5ldGVzIG5lZWRzIGBpbWFnZVB1bGxTZWNyZXRzYCBv" + - "biBldmVyeSBwb2QuIENvbnRyb2wtcGxhbmUgYW5kCmNvbXB1dGUtcGxhbmUgY3JlZGVudGlhbHMg" + - "YXJlIGNvbmZpZ3VyZWQgaW4gdGhlaXIgb3duIGNsdXN0ZXIgY29udGV4dHMuIERvIG5vdAp1c2Ug" + - "b25lIG1peGVkIG5hbWVzcGFjZSBsaXN0LgoKVGhlIHJlY29tbWVuZGVkIGNvbnRyb2wtcGxhbmUg" + - "YXBwcm9hY2ggdXNlcyBLeXZlcm5vIHRvIGluamVjdCB0aGUgc2VjcmV0IGludG8KY29udHJvbC1w" + - "bGFuZSBwb2RzIGF0IGFkbWlzc2lvbiB0aW1lLiBUaGUgY29tcHV0ZS1wbGFuZSBjaGFydCBhbmQg" + - "b3BlcmF0b3IgdXNlCnRoZSBzZWNyZXQgaW4gYG52Y2Etb3BlcmF0b3JgIGFuZCBtaXJyb3IgaXQg" + - "dG8gYG52Y2Etc3lzdGVtYC4KCiMjIEt5dmVybm8gQXBwcm9hY2ggKFJlY29tbWVuZGVkKQoKIyMj" + - "IDEuIEluc3RhbGwgS3l2ZXJubwoKYGBgYmFzaApoZWxtIHJlcG8gYWRkIGt5dmVybm8gaHR0cHM6" + - "Ly9reXZlcm5vLmdpdGh1Yi5pby9reXZlcm5vLwpoZWxtIHJlcG8gdXBkYXRlCmhlbG0gaW5zdGFs" + - "bCBreXZlcm5vIGt5dmVybm8va3l2ZXJubyAtbiBreXZlcm5vIC0tY3JlYXRlLW5hbWVzcGFjZSBc" + - "CiAgLS1rdWJlLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4KYGBgCgojIyMgMi4gQ3Jl" + - "YXRlIGNvbnRyb2wtcGxhbmUgcHVsbCBzZWNyZXRzCgpgYGBiYXNoCmV4cG9ydCBOR0NfQVBJX0tF" + + "IlRoZSBhZ2VudCB1c2VkIHRoZSBoZWxtZmlsZSBzZWxlY3RvciB0byBkZXBsb3kgb25seSB0aGUg" + + "ZGVwZW5kZW5jaWVzIHJlbGVhc2UgZ3JvdXAsIHRoZW4gdmVyaWZpZWQgcG9kcyBpbiB0aGUgZGVw" + + "ZW5kZW5jeSBuYW1lc3BhY2VzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJU" + + "aGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1k" + + "IGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCB1c2VkICdoZWxtZmlsZSAt" + + "LXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMnIHRvIGRlcGxveSBvbmx5" + + "IGRlcGVuZGVuY2llcyIsCiAgICAgICJUaGUgYWdlbnQgdmVyaWZpZWQgcG9kcyBpbiBkZXBlbmRl" + + "bmN5IG5hbWVzcGFjZXMgKG5hdHMtc3lzdGVtLCBjYXNzYW5kcmEtc3lzdGVtLCB2YXVsdC1zeXN0" + + "ZW0pIiwKICAgICAgIlRoZSBhZ2VudCBwcm92aWRlZCB0aGUgc2VsZWN0b3IgcmVmZXJlbmNlIGZv" + + "ciB0YXJnZXRpbmcgb3RoZXIgcmVsZWFzZSBncm91cHMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQi" + + "OiAiUzctZGVidWctaW1hZ2VwdWxsYmFja29mZiIsCiAgICAicXVlc3Rpb24iOiAiQ2Fzc2FuZHJh" + + "IHBvZHMgYXJlIGluIEltYWdlUHVsbEJhY2tPZmYgd2l0aCA0MDEgVW5hdXRob3JpemVkIiwKICAg" + + "ICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAg" + + "Imdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgcmVhZCB0aGUgZGVidWdnaW5nIHJlZmVyZW5jZSBh" + + "bmQgcmFuIGRpYWdub3N0aWMgY29tbWFuZHMgdG8gaWRlbnRpZnkgdGhlIHJvb3QgY2F1c2U6IGRl" + + "c2NyaWJlZCB0aGUgcG9kLCBjaGVja2VkIGZvciBwdWxsIHNlY3JldHMsIGNoZWNrZWQgaW1hZ2VQ" + + "dWxsU2VjcmV0cyBvbiB0aGUgcG9kIHNwZWMgYW5kIHNlcnZpY2UgYWNjb3VudC4gSXQgaWRlbnRp" + + "ZmllZCB0aGUgaXNzdWUgKG1pc3Npbmcgc2VjcmV0LCB3cm9uZyBjcmVkZW50aWFscywgb3IgbWlz" + + "c2luZyBpbWFnZVB1bGxTZWNyZXRzKSBhbmQgcHJvdmlkZWQgdGhlIGNvcnJlY3QgZml4LiIsCiAg" + + "ICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1z" + + "ZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGFuZCByZWZlcmVuY2VzL2RlYnVnZ2lu" + + "Zy5tZCIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdrdWJlY3RsIGRlc2NyaWJlIHBvZCcgdG8gc2Vl" + + "IHRoZSBJbWFnZVB1bGxCYWNrT2ZmIGV2ZW50cyIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBm" + + "b3IgcHVsbCBzZWNyZXRzIGluIHRoZSBjYXNzYW5kcmEtc3lzdGVtIG5hbWVzcGFjZSIsCiAgICAg" + + "ICJUaGUgYWdlbnQgY2hlY2tlZCBpbWFnZVB1bGxTZWNyZXRzIG9uIHRoZSBwb2Qgc3BlYyBhbmQv" + + "b3Igc2VydmljZSBhY2NvdW50IiwKICAgICAgIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoZSByb290" + + "IGNhdXNlIGFuZCBwcm92aWRlZCBhIHNwZWNpZmljIGZpeCIKICAgIF0KICB9LAogIHsKICAgICJp" + + "ZCI6ICJTOS1yZW1vdGUtZWtzLXJvdXRpbmctYW5kLXNlY3JldHMiLAogICAgInF1ZXN0aW9uIjog" + + "IkNvbmZpZ3VyZSBhIHJlbW90ZSBFS1MgY29tcHV0ZSBjbHVzdGVyIHRvIHJlYWNoIG15IE5WQ0Yg" + + "Y29udHJvbCBwbGFuZSB0aHJvdWdoIGl0cyBFbnZveSBHYXRld2F5LCBpbmNsdWRpbmcgTkFUUyBh" + + "bmQgcHJpdmF0ZS1yZWdpc3RyeSBwdWxsIHNlY3JldHMuIiwKICAgICJleHBlY3RlZF9za2lsbCI6" + + "ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJU" + + "aGUgYWdlbnQgY29uZmlndXJlZCB0aGUgY29udHJvbCBwbGFuZSB0byB1c2UgdGhlIEVudm95IEdh" + + "dGV3YXkgY29udHJvbGxlciBpbiBlbnZveS1nYXRld2F5LXN5c3RlbSBhbmQgR2F0ZXdheS9udmNm" + + "LWdhdGV3YXkgaW4gZW52b3ktZ2F0ZXdheSwgc2V0IGFsbCBzaXggcmVtb3RlIHdvcmtlciBlbmRw" + + "b2ludHMgYW5kIHRoZSBncnBjLXByb3h5IGxvY2FsIG92ZXJyaWRlLCBlbmFibGVkIE5WQ0YgYW5k" + + "IE5WQ1QgZ1JQQyByb3V0ZXMgcGx1cyBOQVRTLCBhbmQgZW5hYmxlZCBPcGVuQmFvIGlzc3VlciBk" + + "aXNjb3ZlcnkuIEl0IGNvbmZpZ3VyZWQgdGhlIGJhcmUtR2F0ZXdheSBDTEkgVVJMIGFuZCBIb3N0" + + "IGZpZWxkcyBpbmNsdWRpbmcgaWNtc19ob3N0LCBwbHVzIHRoZSBjb21wdXRlLXBsYW5lIElDTVMs" + + "IFJlVmFsLCBhbmQgTkFUUyBleHRlcm5hbCBVUkxzIGFuZCBob3N0IG92ZXJyaWRlcy4gSXQgY3Jl" + + "YXRlZCB0aGUgcHVsbCBzZWNyZXQgaW4gYWxsIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNs" + + "dWRpbmcgY2VydC1tYW5hZ2VyLCBidXQgb25seSBpbiBudmNhLW9wZXJhdG9yIG9uIHRoZSBjb21w" + + "dXRlIGNsdXN0ZXI7IHRoZSBjaGFydCBhbmQgb3BlcmF0b3IgbWlycm9yIGl0IHRvIG52Y2Etc3lz" + + "dGVtLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0" + + "aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcg" + + "YWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgaW5ncmVzcy5nYXRld2F5QXBpLmNvbnRyb2xs" + + "ZXJOYW1lc3BhY2UgdG8gZW52b3ktZ2F0ZXdheS1zeXN0ZW0iLAogICAgICAiVGhlIGFnZW50IHNl" + + "dCBzaGFyZWQsIGdycGMsIGFuZCBuYXRzIEdhdGV3YXkgcmVmZXJlbmNlcyB0byBuYW1lIG52Y2Yt" + + "Z2F0ZXdheSBhbmQgbmFtZXNwYWNlIGVudm95LWdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50IHNl" + + "dCBnbG9iYWwud29ya2VyRW5kcG9pbnRzLm52Y2ZTZXJ2aWNlVVJMLCBudmNmR3JwY1NlcnZpY2VV" + + "UkwsIG52Y2ZOYXRzU2VydmljZVVSTCwgbnZjdFNlcnZpY2VVUkwsIG52Y3RHcnBjU2VydmljZVVS" + + "TCwgYW5kIGludm9jYXRpb25TZXJ2aWNlVVJMIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgZ3JwY3By" + + "b3h5Lm52Y2ZHcnBjU2VydmljZVVSTCB0byB0aGUgY29udHJvbC1wbGFuZS1sb2NhbCBBUEkgZ1JQ" + + "QyBzZXJ2aWNlIiwKICAgICAgIlRoZSBhZ2VudCBlbmFibGVkIGJvdGggaW5ncmVzcy5nYXRld2F5" + + "QXBpLnJvdXRlcy5udmNmQXBpLmdycGMgYW5kIG52Y3RBcGkuZ3JwYyB3aXRoIHdvcmtlci1hcGkg" + + "YW5kIHdvcmtlci10YXNrcyBob3N0bmFtZXMiLAogICAgICAiVGhlIGFnZW50IGV4cGxpY2l0bHkg" + + "c2V0IGluZ3Jlc3MuZ2F0ZXdheUFwaS5yb3V0ZXMubmF0cy5lbmFibGVkIHRvIHRydWUiLAogICAg" + + "ICAiVGhlIGFnZW50IHNldCBvcGVuYmFvLm1pZ3JhdGlvbnMuaXNzdWVyRGlzY292ZXJ5LmVuYWJs" + + "ZWQgdG8gdHJ1ZSIsCiAgICAgICJUaGUgYWdlbnQgY29uZmlndXJlZCB0aGUgYmFyZS1HYXRld2F5" + + "IENMSSBVUkwgYW5kIEhvc3QgZmllbGRzLCBpbmNsdWRpbmcgc2NoZW1lLWxlc3MgaWNtc19ob3N0" + + "IiwKICAgICAgIlRoZSBhZ2VudCBjb25maWd1cmVkIGNvbXB1dGUtcGxhbmUgaWNtc1NlcnZpY2VV" + + "UkwsIGljbXNTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlLCByZXZhbFNlcnZpY2VVUkwsIHJldmFs" + + "U2VydmljZUhvc3RIZWFkZXJPdmVycmlkZSwgbmF0c1VSTCwgYW5kIG5hdHNIb3N0T3ZlcnJpZGUi" + + "LAogICAgICAiVGhlIGNvbnRyb2wtcGxhbmUgcHVsbC1zZWNyZXQgbmFtZXNwYWNlIGxpc3QgaW5j" + + "bHVkZWQgY2VydC1tYW5hZ2VyIiwKICAgICAgIlRoZSBjb21wdXRlLXBsYW5lIHNlY3JldCB3YXMg" + + "Y3JlYXRlZCBvbmx5IGluIG52Y2Etb3BlcmF0b3IgYW5kIG1pcnJvcmVkIGJ5IHRoZSBjaGFydCBh" + + "bmQgb3BlcmF0b3IgdG8gbnZjYS1zeXN0ZW0iCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzEx" + + "LXNwbGl0LXRlYXJkb3duIiwKICAgICJxdWVzdGlvbiI6ICJUZWFyIGRvd24gbXkgc3BsaXQgY29u" + + "dHJvbC1wbGFuZSBhbmQgY29tcHV0ZS1wbGFuZSBkZXBsb3ltZW50IHNhZmVseS4gU2hvdyBib3Ro" + + "IHRoZSBIZWxtZmlsZSB2YWx1ZXMgYW5kIENMSSBwcm9maWxlIHZhcmlhbnRzLiIsCiAgICAiZXhw" + + "ZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91" + + "bmRfdHJ1dGgiOiAiVGhlIEhlbG1maWxlIGZsb3cgZGVzdHJveWVkIGFuZCBjb25maXJtZWQgZGVy" + + "ZWdpc3RyYXRpb24gb2YgZXZlcnkgY29tcHV0ZSBjbHVzdGVyIGJlZm9yZSBkZXN0cm95aW5nIHRo" + + "ZSBjb250cm9sIHBsYW5lIGFuZCBwYXNzZWQgYm90aCBjb250cm9sLXBsYW5lIGt1YmVjb25maWcg" + + "Zm9ybXMuIEJlZm9yZSBlaXRoZXIgaGFuZG9mZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBs" + + "YW5lLCBib3RoIHRlYXJkb3duIGZsb3dzIHdhcm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRp" + + "b24gZG9lcyBub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZl" + + "IGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNlIGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24g" + + "YW5kIGFib3J0ZWQgaWYgdHJ1ZSwgYW5kIHZlcmlmaWVkIG1hdGNoaW5nIHJlbGVhc2Ugb3duZXJz" + + "aGlwIGZvciBhbiBpbnRlbmRlZCBzdGFjay1tYW5hZ2VkIHJlbGVhc2UsIGFib3J0aW5nIG9uIG1p" + + "c3Npbmcgb3IgbWlzbWF0Y2hlZCBldmlkZW5jZS4gVGhleSBwcmVzZXJ2ZWQgdGhlIG5hbWVzcGFj" + + "ZSBieSBkZWZhdWx0IGFuZCBkaWQgbm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBwcm92" + + "ZW5hbmNlIGFuZCBleHBsaWNpdCBjb25maXJtYXRpb24uIFRoZSBDTEkgZmxvdyByZXRhaW5lZCB0" + + "aGUgZ2VuZXJhdGVkIHJlZ2lzdHJhdGlvbiB2YWx1ZXMsIHVzZWQgdGhlIGZ1bGwtcHJlZml4IHN0" + + "YXR1cyBjb21tYW5kIHRvIGluc3BlY3QgbGl2ZSByZWdpc3RyYXRpb25zLCBzdGF0ZWQgdGhhdCBu" + + "YW1lZC1jbHVzdGVyIHBsYW4tb25seSBkb2VzIG5vdCBxdWVyeSBJQ01TIGFuZCBjYW5ub3QgcHJl" + + "ZGljdCBjb25kaXRpb25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwsIGFuZCBnb3QgZXhwbGljaXQg" + + "Y29uZmlybWF0aW9uIHdoZW4gdGhlIHRhcmdldCB3YXMgdGhlIGxhc3QgcmVnaXN0ZXJlZCBjbHVz" + + "dGVyLiBJdCB0aGVuIHByZXZpZXdlZCBhbmQgcmFuIGRvd24gd2l0aCB0aGUgZnVsbCBwZXJzaXN0" + + "ZW50IHByZWZpeCwgcmVtb3ZpbmcgdGhlIGNvbnRyb2wgcGxhbmUgb25seSBhZnRlciB0aGUgbGFz" + + "dCByZWdpc3RyYXRpb24gd2FzIGdvbmUuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAg" + + "ICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJ" + + "TEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiRm9yIGV2ZXJ5IGNvbXB1dGUgY2x1" + + "c3RlciwgdGhlIEhlbG1maWxlIGZsb3cgcmFuIHRoZSBjb21wdXRlLXBsYW5lIE1ha2VmaWxlIGRl" + + "c3Ryb3kgdGFyZ2V0IHdpdGggaXRzIGNvbXB1dGUga3ViZWNvbmZpZyIsCiAgICAgICJBZnRlciBj" + + "b25maXJtYXRpb24sIHRoZSBIZWxtZmlsZSBmbG93IHJhbiBjbHVzdGVyIGRlbGV0ZSB3aXRoIGNs" + + "dXN0ZXJJRCBhbmQgbmNhSUQgYmVmb3JlIGNvbnRyb2wtcGxhbmUgZGVzdHJ1Y3Rpb24iLAogICAg" + + "ICAiQmVmb3JlIGVpdGhlciBoYW5kb2ZmIGNvdWxkIGRlc3Ryb3kgdGhlIGNvbnRyb2wgcGxhbmUs" + + "IGJvdGggdGVhcmRvd24gZmxvd3Mgd2FybmVkIHRoYXQgbmFtZXNwYWNlIHByZXNlcnZhdGlvbiBk" + + "b2VzIG5vdCBwcmVzZXJ2ZSB0aGUgSGVsbSByZWxlYXNlLCByZXF1aXJlZCBlZmZlY3RpdmUgY2Vy" + + "dE1hbmFnZXIuZW5hYmxlZDogZmFsc2UgZm9yIGFuIGV4dGVybmFsIGluc3RhbGxhdGlvbiBhbmQg" + + "YWJvcnRlZCBpZiB0cnVlLCBhbmQgdmVyaWZpZWQgaW50ZW5kZWQgc3RhY2sgb3duZXJzaGlwIHdo" + + "ZW4gZW5hYmxlZCwgYWJvcnRpbmcgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlIiwK" + + "ICAgICAgIkJvdGggdGVhcmRvd24gZmxvd3MgcHJlc2VydmVkIHRoZSBjZXJ0LW1hbmFnZXIgbmFt" + + "ZXNwYWNlIGJ5IGRlZmF1bHQgYW5kIGRpZCBub3QgZGVsZXRlIGl0IHdpdGhvdXQgbmFtZXNwYWNl" + + "IHByb3ZlbmFuY2UgYW5kIGV4cGxpY2l0IGNvbmZpcm1hdGlvbiIsCiAgICAgICJUaGUgSGVsbWZp" + + "bGUgZmxvdyByYW4gY29udHJvbC1wbGFuZSBNYWtlZmlsZSBkZXN0cm95IHdpdGggYm90aCBLVUJF" + + "Q09ORklHIGFuZCBLVUJFQ09ORklHX0ZJTEUiLAogICAgICAiVGhlIENMSSBmbG93IHJldGFpbmVk" + + "IG91dC88Y2x1c3Rlci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbCB1bnRpbCB0ZWFyZG93biBj" + + "b21wbGV0ZWQiLAogICAgICAiQmVmb3JlIHJlYWwgZG93biwgdGhlIENMSSBmbG93IHVzZWQgdGhl" + + "IGZ1bGwtcHJlZml4IHN0YXR1cyBjb21tYW5kIHRvIGluc3BlY3QgbGl2ZSByZWdpc3RyYXRpb25z" + + "LCBzdGF0ZWQgdGhhdCBuYW1lZC1jbHVzdGVyIHBsYW4tb25seSBkb2VzIG5vdCBxdWVyeSBJQ01T" + + "IGFuZCBjYW5ub3QgcHJlZGljdCBjb25kaXRpb25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwsIHdh" + + "cm5lZCB3aGVuIHRoZSB0YXJnZXQgd2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3RlciwgYW5k" + + "IGdvdCBleHBsaWNpdCBjb25maXJtYXRpb24iLAogICAgICAiVGhlIENMSSBmbG93IHVzZWQgLS1j" + + "b25maWcsIGJvdGggc3RhY2sgcGF0aHMsIC0tZW52LCAtLXBsYWluLCBib3RoIGNvbnRleHRzLCBh" + + "bmQgLS1pY21zLXVybCBmb3IgZG93biAtLXBsYW4tb25seSBhbmQgdGhlbiBkb3duIiwKICAgICAg" + + "IlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCBkb3duIHVucmVnaXN0ZXJzIGVhY2ggY29tcHV0ZSBjbHVz" + + "dGVyIGFuZCByZW1vdmVzIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgbm8gcmVnaXN0cmF0" + + "aW9ucyByZW1haW4iCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzEzLXZhbHVlcy1wcmVjZWRl" + + "bmNlIiwKICAgICJxdWVzdGlvbiI6ICJJIGFkZGVkIGEgdmFsdWUgdG8gbXkgZW52aXJvbm1lbnQg" + + "WUFNTCBidXQgaXQncyBiZWluZyBzaWxlbnRseSBpZ25vcmVkLiBIb3cgZG8gaGVsbWZpbGUgdmFs" + + "dWVzIHdvcmsgaW4gTlZDRj8iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5h" + + "Z2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBleHBsYWlu" + + "ZWQgdGhlIHZhbHVlcyBwcmVjZWRlbmNlIGNoYWluIChiYXNlLnlhbWwsIGVudiBZQU1MLCBnbG9i" + + "YWwueWFtbC5nb3RtcGwsIHNlY3JldHMsIGlubGluZSB2YWx1ZXMpLCBpZGVudGlmaWVkIHRoYXQg" + + "Z2xvYmFsLnlhbWwuZ290bXBsIG9ubHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMga2V5cywgYW5k" + + "IGV4cGxhaW5lZCB0aGF0IGFyYml0cmFyeSBjaGFydCB2YWx1ZXMgbXVzdCB1c2UgcmVsZWFzZSBp" + + "bmxpbmUgdmFsdWVzIGJsb2Nrcy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAi" + + "VGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5t" + + "ZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSB2" + + "YWx1ZXMgcHJlY2VkZW5jZSBjaGFpbjogYmFzZS55YW1sIC0+IGVudiBZQU1MIC0+IGdsb2JhbC55" + + "YW1sLmdvdG1wbCAtPiBzZWNyZXRzIC0+IGlubGluZSB2YWx1ZXMiLAogICAgICAiVGhlIGFnZW50" + + "IGlkZW50aWZpZWQgdGhhdCBnbG9iYWwueWFtbC5nb3RtcGwgb25seSBwYXNzZXMgdGhyb3VnaCBz" + + "cGVjaWZpYyBrZXlzIChjYXNzYW5kcmEucmVwbGljYUNvdW50LCBnbG9iYWwuc3RvcmFnZUNsYXNz" + + "LCBnbG9iYWwuaW1hZ2UsIGV0Yy4pIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCBh" + + "cmJpdHJhcnkgY2hhcnQgdmFsdWVzIG11c3QgYmUgc2V0IHZpYSByZWxlYXNlIGlubGluZSB2YWx1" + + "ZXM6IGJsb2NrcyIsCiAgICAgICJUaGUgYWdlbnQgbGlzdGVkIGV4YW1wbGVzIG9mIHZhbHVlcyB0" + + "aGF0IGFyZSBwcm9wYWdhdGVkIGFuZCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzIHRoYXQgcmVxdWly" + + "ZSBhIHJlbGVhc2UgdmFsdWVzIGJsb2NrIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMxNC1l" + + "bmFibGUtbGxtLWZ1bmN0aW9ucyIsCiAgICAicXVlc3Rpb24iOiAiSSBuZWVkIHRvIGRlcGxveSBm" + + "dW5jdGlvblR5cGU6IExMTSBmdW5jdGlvbnMgb24gYSBzZWxmLW1hbmFnZWQsIHNpbmdsZS1ub2Rl" + + "IGlzb2xhdGVkIHRlc3QgY2x1c3Rlci4gV2hhdCBIZWxtZmlsZSBjb25maWd1cmF0aW9uIGFuZCB2" + + "ZXJpZmljYXRpb24gc3RlcHMgZG8gSSBuZWVkPyIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZj" + + "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFn" + + "ZW50IGVuYWJsZWQgdGhlIExMTSBhZGRvbiB3aXRoIGFkZG9ucy5sbG0uZW5hYmxlZCwgY29uZmln" + + "dXJlZCBzaW5nbGUgcmVwbGljYXMgZm9yIHRoZSBMTE0gQVBJIEdhdGV3YXkgYW5kIHJlcXVlc3Qg" + + "cm91dGVyLCBhbmQgZXhwbGFpbmVkIHRoYXQgdGhlIHJlcXVlc3Qgcm91dGVyIHVzZXMgcG93ZXIt" + + "b2YtdHdvIHdoZW4gbm8gbG9hZC1iYWxhbmNlciBjb25maWd1cmF0aW9uIGlzIHNldC4gSXQgbGlu" + + "a2VkIHRoZSBjYW5vbmljYWwgcmVxdWVzdC1yb3V0ZXIgbG9hZC1iYWxhbmNpbmcgZ3VpZGUgZm9y" + + "IG90aGVyIHJvdXRpbmcgbWV0aG9kcy4gRm9yIHRoZSBpc29sYXRlZCBwbGFpbnRleHQgY2x1c3Rl" + + "ciwgaXQgcmVsaWVkIG9uIHRoZSBzZWxmLW1hbmFnZWQgc3RhY2sgZGVmYXVsdCBmb3IgdGhlIGJ1" + + "bmRsZWQgZ2F0ZXdheS10by1BUEkgYXV0aGVudGljYXRpb24gaG9wIGFuZCBpbmNsdWRlZCBhZ2Vu" + + "dENvbmZpZy5tZXJnZUNvbmZpZy53b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZSBmb3IgdGhl" + + "IHNlcGFyYXRlIHdvcmtlciB0cmFuc3BvcnQsIHdpdGggYSB3YXJuaW5nIHRoYXQgcGxhaW50ZXh0" + + "IHdvcmtlciB0cmFuc3BvcnQgaXMgbm90IGZvciBwcm9kdWN0aW9uLiBJdCByZWZyZXNoZWQgdGhl" + + "IGNvbXB1dGUgcGxhbmUgdXNpbmcgdGhlIHNhbWUgaGFuZG9mZiB1c2VkIGR1cmluZyBpbnN0YWxs" + + "YXRpb24sIHJlZGVwbG95ZWQgZXhpc3RpbmcgTExNIGZ1bmN0aW9ucywgYW5kIHZlcmlmaWVkIHRo" + + "ZSBMTE0gZGVwbG95bWVudHMsIHJvdXRlLCBhbmQgbGxtLXdvcmtlciBzaWRlY2FyLiIsCiAgICAi" + + "ZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgdXNlZCBhZGRvbnMubGxtLmVu" + + "YWJsZWQsIG5vdCB0aGUgb2Jzb2xldGUgbGxtLmVuYWJsZWQgcGF0aCIsCiAgICAgICJUaGUgYWdl" + + "bnQgc2V0IGdhdGV3YXkgYW5kIHJlcXVlc3RSb3V0ZXIgcmVwbGljYUNvdW50IHRvIDEgZm9yIHRo" + + "ZSBzaW5nbGUtbm9kZSB0ZXN0IGNsdXN0ZXIiLAogICAgICAiVGhlIGFnZW50IHN0YXRlZCB0aGF0" + + "IHRoZSByZXF1ZXN0IHJvdXRlciBkZWZhdWx0cyB0byBwb3dlci1vZi10d28gYW5kIGxpbmtlZCB0" + + "aGUgY2Fub25pY2FsIHJlcXVlc3Qtcm91dGVyIGxvYWQtYmFsYW5jaW5nIGd1aWRlIGZvciBvdGhl" + + "ciBtZXRob2RzIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCB0aGUgYnVuZGxlZCBn" + + "YXRld2F5LXRvLUFQSSBhdXRoZW50aWNhdGlvbiBob3AgZGVmYXVsdHMgdG8gcGxhaW50ZXh0LCBp" + + "bmNsdWRlZCB3b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZSBvbmx5IGZvciB0aGUgaXNvbGF0" + + "ZWQgd29ya2VyIHRyYW5zcG9ydCwgYW5kIHdhcm5lZCBhZ2FpbnN0IHBsYWludGV4dCB3b3JrZXIg" + + "dHJhbnNwb3J0IGluIHByb2R1Y3Rpb24iLAogICAgICAiVGhlIGFnZW50IGFwcGxpZWQgdGhlIGNv" + + "bnRyb2wtcGxhbmUgSGVsbWZpbGUgZW52aXJvbm1lbnQsIHJlZnJlc2hlZCB0aGUgY29tcHV0ZSBw" + + "bGFuZSB3aXRoIHRoZSBzYW1lIHNlbGVjdGVkIGhhbmRvZmYsIGFuZCByZWNyZWF0ZWQgb3IgcmVk" + + "ZXBsb3llZCBleGlzdGluZyBMTE0gZnVuY3Rpb25zIiwKICAgICAgIlRoZSBhZ2VudCB2ZXJpZmll" + + "ZCBsbG0tYXBpLWdhdGV3YXksIGxsbS1yZXF1ZXN0LXJvdXRlciwgdGhlIExMTSBIVFRQUm91dGUs" + + "IGFuZCB0aGUgbGxtLXdvcmtlciBzaWRlY2FyIGluY2x1ZGluZyAtLXF1aWMtaW5zZWN1cmUiCiAg" + + "ICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzgtTkVHLW5vdC1mb3ItazNkIiwKICAgICJxdWVzdGlv" + + "biI6ICJTZXQgdXAgYSBsb2NhbCBOVkNGIGRldiBjbHVzdGVyIHVzaW5nIGszZCBmb3IgdGVzdGlu" + + "ZyIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiBudWxsLAogICAgInNob3VsZF90cmlnZ2VyIjogZmFs" + + "c2UsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoaXMgaXMgYSBsb2NhbCBrM2QgZGV2ZWxvcG1lbnQg" + + "cmVxdWVzdCB0aGF0IGJlbG9uZ3MgdG8gdGhlIG52Y2Ytc2VsZi1ob3N0ZWQtbG9jYWwtZGV2IHNr" + + "aWxsLCBub3QgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uLiBUaGUgYWdlbnQgZGlkIG5v" + + "dCByZWFkIG9yIHVzZSB0aGUgc2VsZi1tYW5hZ2VkIGluc3RhbGxhdGlvbiBza2lsbCBhbmQgaW5z" + + "dGVhZCBwcm92aWRlZCBrM2Qtc3BlY2lmaWMgZ3VpZGFuY2UuIiwKICAgICJleHBlY3RlZF9iZWhh" + + "dmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHJlYWQgbnZjZi1zZWxmLW1hbmFnZWQt" + + "aW5zdGFsbGF0aW9uL1NLSUxMLm1kIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHByb3ZpZGUg" + + "aGVsbWZpbGUtYmFzZWQgcHJvZHVjdGlvbiBkZXBsb3ltZW50IGluc3RydWN0aW9ucyIsCiAgICAg" + + "ICJUaGUgYWdlbnQgcHJvdmlkZWQgazNkLXNwZWNpZmljIGxvY2FsIGRldmVsb3BtZW50IGd1aWRh" + + "bmNlIG9yIGRlZmVycmVkIHRvIHRoZSBhcHByb3ByaWF0ZSBsb2NhbC1kZXYgc2tpbGwiCiAgICBd" + + "CiAgfQpdClBLBwhHVWpWSlYAAEpWAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAC8ACQBkYXRh" + + "L252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9leGFtcGxlcy5tZFVUBQABAKbOEiMgRXhh" + + "bXBsZXMKCldvcmtlZCBleGFtcGxlcyBiYXNlZCBvbiByZWFsIGRlcGxveW1lbnQgc2NlbmFyaW9z" + + "LgoKIyMgRXhhbXBsZSAxOiBPdmVycmlkZSBDYXNzYW5kcmEgUmVzb3VyY2VzCgpUaGUgZGVmYXVs" + + "dCBDYXNzYW5kcmEgcmVzb3VyY2UgbGltaXRzIGNhdXNlIE9PTSBvbiBsYXJnZSBpbnN0YW5jZSB0" + + "eXBlcyAoZS5nLiwgYHA1LjQ4eGxhcmdlYCkuCgpQcm9ibGVtOiBDYXNzYW5kcmEgcG9kcyByZXN0" + + "YXJ0IHdpdGggYE9PTUtpbGxlZGAuCgpTb2x1dGlvbjogT3ZlcnJpZGUgcmVzb3VyY2VzIHZpYSBo" + + "ZWxtZmlsZSByZWxlYXNlIHZhbHVlcyBibG9jay4KCiMjIyBTdGVwIDE6IENhcHR1cmUgYmFzZWxp" + + "bmUKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1j" + + "YXNzYW5kcmEgdGVtcGxhdGUgPiAvdG1wL2Nhc3MtYmVmb3JlLnlhbWwKZ3JlcCAtQTggJ3Jlc291" + + "cmNlczonIC90bXAvY2Fzcy1iZWZvcmUueWFtbCB8IGhlYWQgLTEwCmBgYAoKIyMjIFN0ZXAgMjog" + + "QWRkIG92ZXJyaWRlIHRvIGhlbG1maWxlLmQvMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsCgpJ" + + "biB0aGUgZXhhbXBsZXMgYmVsb3csIGA8cHJpdmF0ZS12YWx1ZXM+YCByZWZlcnMgdG8gdGhlIGBz" + + "ZWNyZXRzL2AgZGlyZWN0b3J5IGF0IHRoZSBoZWxtZmlsZSBzdGFjayByb290LgoKYGBgeWFtbAot" + + "IG5hbWU6IGNhc3NhbmRyYQogIHZlcnNpb246IDAuOC4wCiAgY29uZGl0aW9uOiBjYXNzYW5kcmEu" + + "ZW5hYmxlZAogIG5hbWVzcGFjZTogY2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAqZGVwZW5kZW5jeQog" + + "IHZhbHVlczoKICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAtIC4uLzxwcml2YXRlLXZh" + + "bHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCiAgICAt" + + "IGNhc3NhbmRyYToKICAgICAgICByZXNvdXJjZXM6CiAgICAgICAgICBsaW1pdHM6CiAgICAgICAg" + + "ICAgIGNwdTogIjgiCiAgICAgICAgICAgIG1lbW9yeTogODE5Mk1pCiAgICAgICAgICByZXF1ZXN0" + + "czoKICAgICAgICAgICAgY3B1OiAiMiIKICAgICAgICAgICAgbWVtb3J5OiA0MDk2TWkKYGBgCgoj" + + "IyMgU3RlcCAzOiBWZXJpZnkgYW5kIGFwcGx5CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBo" + + "ZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlID4gL3RtcC9jYXNzLWFm" + + "dGVyLnlhbWwKZGlmZiAvdG1wL2Nhc3MtYmVmb3JlLnlhbWwgL3RtcC9jYXNzLWFmdGVyLnlhbWwg" + + "ICMgQ29uZmlybSByZXNvdXJjZXMgY2hhbmdlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUg" + + "LS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSBzeW5jCmBgYAoKTm90ZTogYHJlc291cmNlUHJlc2V0" + + "YCAoYSBCaXRuYW1pIGZlYXR1cmUpIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIE5WQ0YgY2Fzc2Fu" + + "ZHJhIHdyYXBwZXIgY2hhcnQuIFVzZSBleHBsaWNpdCBgcmVzb3VyY2VzYCBpbnN0ZWFkLgoKLS0t" + + "CgojIyBFeGFtcGxlIDI6IERlcGxveSBmcm9tIE5HQyBQcml2YXRlIFJlZ2lzdHJ5IHdpdGggUHVs" + + "bCBTZWNyZXRzCgpEZXBsb3kgdGhlIE5WQ0Ygc3RhY2sgcHVsbGluZyBpbWFnZXMgZGlyZWN0bHkg" + + "ZnJvbSBOR0MgKGBudmNyLmlvYCkgaW5zdGVhZCBvZiBhIG1pcnJvcmVkIHJlZ2lzdHJ5LCB1c2lu" + + "ZyBpbWFnZSBwdWxsIHNlY3JldHMuCgojIyMgU3RlcCAxOiBDb25maWd1cmUgZW52aXJvbm1lbnQg" + + "Zm9yIE5HQwoKYGBgeWFtbAojIGVudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoKICBoZWxt" + + "OgogICAgc291cmNlczoKICAgICAgcmVnaXN0cnk6IG52Y3IuaW8KICAgICAgcmVwb3NpdG9yeTog" + + "bnZpZGlhL252Y2YKICBpbWFnZToKICAgIHJlZ2lzdHJ5OiBudmNyLmlvCiAgICByZXBvc2l0b3J5" + + "OiBudmlkaWEvbnZjZgpgYGAKCiMjIyBTdGVwIDI6IEF1dGhlbnRpY2F0ZSBsb2NhbGx5IChmb3Ig" + + "aGVsbWZpbGUgY2hhcnQgcHVsbHMpCgpgYGBiYXNoCmRvY2tlciBsb2dpbiBudmNyLmlvIC11ICck" + + "b2F1dGh0b2tlbicgLXAgIiROR0NfQVBJX0tFWSIKaGVsbSByZWdpc3RyeSBsb2dpbiBudmNyLmlv" + + "IC11ICckb2F1dGh0b2tlbicgLXAgIiROR0NfQVBJX0tFWSIKYGBgCgojIyMgU3RlcCAzOiBDcmVh" + + "dGUgbmFtZXNwYWNlcyBhbmQgcHVsbCBzZWNyZXRzCgpgYGBiYXNoCmV4cG9ydCBOR0NfQVBJX0tF" + "WT0iPHlvdXItbmdjLWFwaS1rZXk+IgoKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1z" + "eXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRv" + "CiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gY3JlYXRlIG5hbWVz" + @@ -3628,124 +2807,951 @@ const skillDataZipBase64 = "" + "LS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRv" + "a2VuJyBcCiAgICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5hbWVz" + "cGFjZT0iJG5zIiBcCiAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIC0tY29u" + - "dGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCmRvbmUKYGBgCgpGb3Igbm9u" + - "LU5HQyByZWdpc3RyaWVzLCByZXBsYWNlIGAtLWRvY2tlci1zZXJ2ZXJgLCBgLS1kb2NrZXItdXNl" + - "cm5hbWVgLCBhbmQgYC0tZG9ja2VyLXBhc3N3b3JkYC4KCiMjIyAzLiBBcHBseSBLeXZlcm5vIENs" + - "dXN0ZXJQb2xpY3kKCmBgYHlhbWwKYXBpVmVyc2lvbjoga3l2ZXJuby5pby92MQpraW5kOiBDbHVz" + - "dGVyUG9saWN5Cm1ldGFkYXRhOgogIG5hbWU6IG52Y2YtYWRkLWltYWdlcHVsbHNlY3JldHMKc3Bl" + - "YzoKICBiYWNrZ3JvdW5kOiBmYWxzZQogIHJ1bGVzOgogICAgLSBuYW1lOiBhZGQtaW1hZ2VwdWxs" + - "c2VjcmV0LXRvLW52Y2YtcG9kcwogICAgICBtYXRjaDoKICAgICAgICBhbnk6CiAgICAgICAgLSBy" + - "ZXNvdXJjZXM6CiAgICAgICAgICAgIGtpbmRzOgogICAgICAgICAgICAtIFBvZAogICAgICAgICAg" + - "ICBuYW1lc3BhY2VzOgogICAgICAgICAgICAtICJudmNmIgogICAgICAgICAgICAtICJhcGkta2V5" + - "cyIKICAgICAgICAgICAgLSAic2lzIgogICAgICAgICAgICAtICJlc3MiCiAgICAgICAgICAgIC0g" + - "Im5hdHMtc3lzdGVtIgogICAgICAgICAgICAtICJjYXNzYW5kcmEtc3lzdGVtIgogICAgICAgICAg" + - "ICAtICJ2YXVsdC1zeXN0ZW0iCiAgICAgICAgICAgIC0gImNlcnQtbWFuYWdlciIKICAgICAgbXV0" + - "YXRlOgogICAgICAgIHBhdGNoU3RyYXRlZ2ljTWVyZ2U6CiAgICAgICAgICBtZXRhZGF0YToKICAg" + - "ICAgICAgICAgYW5ub3RhdGlvbnM6CiAgICAgICAgICAgICAgbnZjZi5udmlkaWEuY29tL2ltYWdl" + - "cHVsbHNlY3JldC1pbmplY3RlZC1ieToga3l2ZXJubwogICAgICAgICAgc3BlYzoKICAgICAgICAg" + - "ICAgaW1hZ2VQdWxsU2VjcmV0czoKICAgICAgICAgICAgLSBuYW1lOiBudmNyLWNyZWRzCmBgYAoK" + - "YGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBhcHBseSBc" + - "CiAgLWYga3l2ZXJuby1pbWFnZXB1bGxzZWNyZXQtcG9saWN5LnlhbWwKYGBgCgojIyMgNC4gSW5z" + - "dGFsbCB0aGUgY29udHJvbCBwbGFuZQoKQ29udGludWUgd2l0aCB0aGUgc2VsZWN0ZWQgY29udHJv" + - "bC1wbGFuZSBpbnN0YWxsYXRpb24gaW4KW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9u" + - "XShjb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkuIE5vCmNvbnRyb2wtcGxhbmUgaGVsbWZp" + - "bGUgbW9kaWZpY2F0aW9ucyBhcmUgbmVlZGVkLiBLeXZlcm5vIGluamVjdHMgdGhlIHB1bGwKc2Vj" + - "cmV0IGludG8gbmV3IGNvbnRyb2wtcGxhbmUgcG9kcy4KCiMjIENvbXB1dGUtUGxhbmUgU2VjcmV0" + - "CgpDcmVhdGUgdGhlIHNlY3JldCBvbmx5IGluIGBudmNhLW9wZXJhdG9yYCBvbiB0aGUgY29tcHV0" + - "ZSBjbHVzdGVyOgoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250" + - "ZXh0PiBjcmVhdGUgbmFtZXNwYWNlIG52Y2Etb3BlcmF0b3IgXAogIC0tZHJ5LXJ1bj1jbGllbnQg" + - "LW8geWFtbCB8IFwKICBrdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBh" + - "cHBseSAtZiAtCgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBjcmVh" + - "dGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAtLWRvY2tlci1zZXJ2ZXI9" + - "bnZjci5pbyBcCiAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgLS1kb2NrZXIt" + - "cGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogIC0tbmFtZXNwYWNlPW52Y2Etb3BlcmF0b3IgXAog" + - "IC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IFwKICBrdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0" + - "ZS1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCmBgYAoKUmVmZXJlbmNlIGl0IGluIHRoZSBjb21w" + - "dXRlLXBsYW5lIGVudmlyb25tZW50IGZpbGU6CgpgYGB5YW1sCmdsb2JhbDoKICBpbWFnZVB1bGxT" + - "ZWNyZXRzOgogICAgLSBuYW1lOiBudmNyLWNyZWRzCmBgYAoKVGhlIGNoYXJ0IGFuZCBvcGVyYXRv" + - "ciB1c2UgdGhhdCByZWZlcmVuY2UgaW4gYG52Y2Etb3BlcmF0b3JgIGFuZCBtaXJyb3IgdGhlCnNl" + - "Y3JldCB0byBgbnZjYS1zeXN0ZW1gLiBEbyBub3QgY3JlYXRlIGEgYnJvYWRlciBtYW51YWwgY29t" + - "cHV0ZSBuYW1lc3BhY2UgbGlzdC4gRm9sbG93CltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxh" + - "dGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpIGZvciB0aGUKc2VsZWN0ZWQgaW5z" + - "dGFsbCBmbG93LgoKIyMgVmVyaWZpY2F0aW9uCgpgYGBiYXNoCiMgQ2hlY2sgdGhhdCBhIGNvbnRy" + - "b2wtcGxhbmUgcG9kIGhhcyB0aGUgaW5qZWN0ZWQgc2VjcmV0Cmt1YmVjdGwgLS1jb250ZXh0IDxj" + - "b250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiBc" + - "CiAgLW8ganNvbnBhdGg9J3suc3BlYy5pbWFnZVB1bGxTZWNyZXRzfScKIyBFeHBlY3RlZDogW3si" + - "bmFtZSI6Im52Y3ItY3JlZHMifV0KCiMgQ2hlY2sgdGhlIEt5dmVybm8gYW5ub3RhdGlvbgprdWJl" + - "Y3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgcG9kIC1uIDxuYW1lc3Bh" + - "Y2U+IDxwb2QtbmFtZT4gXAogIC1vIGpzb25wYXRoPSd7Lm1ldGFkYXRhLmFubm90YXRpb25zLm52" + - "Y2ZcLm52aWRpYVwuY29tL2ltYWdlcHVsbHNlY3JldC1pbmplY3RlZC1ieX0nCiMgRXhwZWN0ZWQ6" + - "IGt5dmVybm8KCiMgQ2hlY2sgcHVsbCBldmVudHMKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wt" + - "cGxhbmUtY29udGV4dD4gZ2V0IGV2ZW50cyAtbiA8bmFtZXNwYWNlPiBcCiAgLS1zb3J0LWJ5PScu" + - "bGFzdFRpbWVzdGFtcCcgfCBncmVwIC1pIHB1bGwKIyBTaG91bGQgc2hvdyAiU3VjY2Vzc2Z1bGx5" + - "IHB1bGxlZCIgbm90ICI0MDEgVW5hdXRob3JpemVkIgoKIyBDaGVjayB0aGUgY2hhcnQvb3BlcmF0" + - "b3IgbWlycm9yIG9uIHRoZSBjb21wdXRlIGNsdXN0ZXIKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1" + - "dGUtcGxhbmUtY29udGV4dD4gZ2V0IHNlY3JldCBudmNyLWNyZWRzIFwKICAtbiBudmNhLXN5c3Rl" + - "bQpgYGAKCiMjIFdoZW4gUHVsbCBTZWNyZXRzIEFyZSBOb3QgTmVlZGVkCgotICoqQVdTIEVDUiB3" + - "aXRoIElBTSBub2RlIHJvbGVzKio6IElmIHlvdXIgbm9kZXMgaGF2ZSBgQW1hem9uRUMyQ29udGFp" + - "bmVyUmVnaXN0cnlSZWFkT25seWAgSUFNIHBvbGljeSwgS3ViZXJuZXRlcyBjYW4gcHVsbCBmcm9t" + - "IEVDUiB3aXRob3V0IGV4cGxpY2l0IHNlY3JldHMuCi0gKipQdWJsaWMgcmVnaXN0cmllcyoqOiBO" + - "byBwdWxsIHNlY3JldHMgbmVlZGVkLgotICoqQ1NQIGJ1aWx0LWluIGNyZWRlbnRpYWwgaGVscGVy" + - "cyoqOiBHS0UgQXJ0aWZhY3QgUmVnaXN0cnksIEF6dXJlIEFDUiB3aXRoIG1hbmFnZWQgaWRlbnRp" + - "dHksIGFuZCBzaW1pbGFyIHNlcnZpY2VzLgoKIyMgVHJvdWJsZXNob290aW5nCgojIyMgUG9kcyBz" + - "dGlsbCBpbiBJbWFnZVB1bGxCYWNrT2ZmIGFmdGVyIGFwcGx5aW5nIHBvbGljeQoKVGhlIEt5dmVy" + - "bm8gcG9saWN5IG9ubHkgYWZmZWN0cyBwb2RzIGNyZWF0ZWQgKiphZnRlcioqIHRoZSBwb2xpY3kg" + - "aXMgYXBwbGllZC4gRGVsZXRlIHN0dWNrIHBvZHMgdG8gdHJpZ2dlciByZWNyZWF0aW9uOgoKYGBg" + - "YmFzaAprdWJlY3RsIC0tY29udGV4dCA8dGFyZ2V0LWNvbnRleHQ+IGRlbGV0ZSBwb2RzIC1uIDxu" + - "YW1lc3BhY2U+IC0tYWxsCmBgYAoKIyMjIEt5dmVybm8gYWRtaXNzaW9uIGNvbnRyb2xsZXIgbm90" + - "IHJ1bm5pbmcKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4" + - "dD4gZ2V0IHBvZHMgLW4ga3l2ZXJubwojIEFsbCBwb2RzIHNob3VsZCBiZSBSdW5uaW5nCmBgYAoK" + - "IyMjIFBvbGljeSBub3QgbWF0Y2hpbmcKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gZ2V0IGNsdXN0ZXJwb2xpY3kgbnZjZi1hZGQtaW1hZ2VwdWxsc2Vj" + - "cmV0cwojIFNob3VsZCBzaG93IFJFQURZOiBUcnVlCmBgYAoKIyMjIFdyb25nIHNlY3JldCBuYW1l" + - "CgpUaGUgcG9saWN5IHJlZmVyZW5jZXMgYG52Y3ItY3JlZHNgLiBWZXJpZnkgdGhlIHNlY3JldCBl" + - "eGlzdHMgd2l0aCB0aGF0IGV4YWN0IG5hbWU6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDx0" + - "YXJnZXQtY29udGV4dD4gZ2V0IHNlY3JldCBudmNyLWNyZWRzIC1uIDxuYW1lc3BhY2U+CmBgYApQ" + - "SwcIS0I1qAAWAAAAFgAAUEsBAhQAFAAIAAAAAAAhAGfXWVRKEAAAShAAABIACQAAAAAAAAAAAAAA" + - "AAAAAGRhdGEvbWFuaWZlc3QuanNvblVUBQABAKbOElBLAQIUABQACAAAAAAAIQD/dvNnU2EAAFNh" + - "AAAjAAkAAAAAAAAAAAAAAJMQAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9TS0lMTC5tZFVU" + - "BQABAKbOElBLAQIUABQACAAAAAAAIQCct34H8QoAAPEKAAAzAAkAAAAAAAAAAAAAAEByAABkYXRh" + - "L252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9jaS1waXBlbGluZXMubWRVVAUAAQCmzhJQ" + - "SwECFAAUAAgAAAAAACEAoRTjgV0MAABdDAAANAAJAAAAAAAAAAAAAACbfQAAZGF0YS9udmNmLXNl" + - "bGYtbWFuYWdlZC1jbGkvZXhhbXBsZXMvbXVsdGktY2x1c3Rlci5tZFVUBQABAKbOElBLAQIUABQA" + - "CAAAAAAAIQBCJ0kPBQ0AAAUNAAA3AAkAAAAAAAAAAAAAAGOKAABkYXRhL252Y2Ytc2VsZi1tYW5h" + - "Z2VkLWNsaS9wcm9tcHRzL2FkZC1jb21wdXRlLXBsYW5lLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAA" + - "AAAhANTejTSfGQAAnxkAADkACQAAAAAAAAAAAAAA1pcAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + - "Y2xpL3Byb21wdHMvY3JlYXRlLWFuZC1ydW4tdGFzay5tZFVUBQABAKbOElBLAQIUABQACAAAAAAA" + - "IQDSQ9wEGCUAABglAAA3AAkAAAAAAAAAAAAAAOWxAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNs" + - "aS9wcm9tcHRzL2RlcGxveS1hbmQtaW52b2tlLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAHKS" + - "LCa+DgAAvg4AAD0ACQAAAAAAAAAAAAAAa9cAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3By" + - "b21wdHMvZGlhZ25vc2UtZmFpbGVkLWluc3RhbGwubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA" + - "QnHmHgEoAAABKAAAOgAJAAAAAAAAAAAAAACd5gAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkv" + - "cHJvbXB0cy9pbnN0YWxsLWZyb20tc2NyYXRjaC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQCq" + - "4Tq5yAcAAMgHAAA5AAkAAAAAAAAAAAAAAA8PAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9w" + - "cm9tcHRzL3JvdGF0ZS1jbHVzdGVyLWp3a3MubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA2odj" + - "VuQhAADkIQAALgAJAAAAAAAAAAAAAABHFwEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJv" + - "bXB0cy90ZWFyZG93bi5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQByDQ9kISMAACEjAAAwAAkA" + - "AAAAAAAAAAAAAJA5AQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvY29tbWFu" + - "ZHMubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAc6daZNUGAADVBgAAMgAJAAAAAAAAAAAAAAAY" + - "XQEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL2V4aXQtY29kZXMubWRVVAUA" + - "AQCmzhJQSwECFAAUAAgAAAAAACEAUQbfxegtAADoLQAALQAJAAAAAAAAAAAAAABWZAEAZGF0YS9u" + - "dmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL2ZsYWdzLm1kVVQFAAEAps4SUEsBAhQAFAAI" + - "AAAAAAAhAPOuE4R0EQAAdBEAADcACQAAAAAAAAAAAAAAopIBAGRhdGEvbnZjZi1zZWxmLW1hbmFn" + - "ZWQtY2xpL3JlZmVyZW5jZS90cm91Ymxlc2hvb3RpbmcubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + - "ACEAEcMUk0liAABJYgAALAAJAAAAAAAAAAAAAACEpAEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1p" + - "bnN0YWxsYXRpb24vU0tJTEwubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAR1VqVkpWAABKVgAA" + - "NAAJAAAAAAAAAAAAAAAwBwIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXZh" + - "bHMvZXZhbHMuanNvblVUBQABAKbOElBLAQIUABQACAAAAAAAIQACUk5AfygAAH8oAAAvAAkAAAAA" + - "AAAAAAAAAOVdAgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9leGFtcGxlcy5t" + - "ZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQCWY7xZEjAAABIwAABMAAkAAAAAAAAAAAAAAMqGAgBk" + - "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL2NvbXB1dGUtcGxh" + - "bmUtaW5zdGFsbGF0aW9uLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhALV6cDu1MAAAtTAAADsA" + - "CQAAAAAAAAAAAAAAX7cCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVy" + - "ZW5jZXMvZGVidWdnaW5nLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhALE1HdsCKgAAAioAAEQA" + - "CQAAAAAAAAAAAAAAhugCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVy" + - "ZW5jZXMvaGVsbWZpbGUtc3RydWN0dXJlLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhADj5J6+5" + - "BwAAuQcAAD8ACQAAAAAAAAAAAAAAAxMDAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0" + - "aW9uL3JlZmVyZW5jZXMvbnZjZi11aS1hZGRvbi5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBL" + - "QjWoABYAAAAWAAA+AAkAAAAAAAAAAAAAADIbAwBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + - "bGxhdGlvbi9yZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZFVUBQABAKbOElBLBQYAAAAAFwAXAK8J" + - "AACnMQMAAAA=" + "dGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCmRvbmUKYGBgCgojIyMgU3Rl" + + "cCA0OiBBZGQgaW1hZ2VQdWxsU2VjcmV0cyB0byBoZWxtZmlsZSByZWxlYXNlcwoKQWRkIHRoZSBj" + + "aGFydC1zcGVjaWZpYyBgaW1hZ2VQdWxsU2VjcmV0c2Aga2V5IHRvIGVhY2ggcmVsZWFzZS4gRXhh" + + "bXBsZSBmb3IgY2Fzc2FuZHJhIGluIGBoZWxtZmlsZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdv" + + "dG1wbGA6CgpgYGB5YW1sCi0gbmFtZTogY2Fzc2FuZHJhCiAgdmVyc2lvbjogMC44LjAKICBjb25k" + + "aXRpb246IGNhc3NhbmRyYS5lbmFibGVkCiAgbmFtZXNwYWNlOiBjYXNzYW5kcmEtc3lzdGVtCiAg" + + "PDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwKICAg" + + "IC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1z" + + "ZWNyZXRzLnlhbWwKICAgIC0gY2Fzc2FuZHJhOgogICAgICAgIGdsb2JhbDoKICAgICAgICAgIGlt" + + "YWdlUHVsbFNlY3JldHM6CiAgICAgICAgICAgIC0gbnZjci1jcmVkcwpgYGAKClNlZSBbcmVmZXJl" + + "bmNlcy9wdWxsLXNlY3JldHMubWRdKHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKSBmb3IgdGhl" + + "IGtleSBmb3IgZXZlcnkgY2hhcnQuCgpUaGVzZSBhcmUgY29udHJvbC1wbGFuZSBuYW1lc3BhY2Vz" + + "LiBGb3IgYSBzZXBhcmF0ZSBjb21wdXRlIGNsdXN0ZXIsIGNyZWF0ZSB0aGUKc2VjcmV0IG9ubHkg" + + "aW4gYG52Y2Etb3BlcmF0b3JgOyB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0bwpg" + + "bnZjYS1zeXN0ZW1gLiBTZWUgW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZl" + + "cmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kI3B1bGwtc2VjcmV0cykuCgojIyMg" + + "U3RlcCA1OiBEZXBsb3kKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0ta3Vi" + + "ZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IHN5bmMKYGBgCgojIyMgU3RlcCA2OiBQ" + + "YXRjaCBTZXJ2aWNlQWNjb3VudHMgZm9yIGNoYXJ0cyB3aXRob3V0IG5hdGl2ZSBzdXBwb3J0CgpB" + + "ZnRlciBQaGFzZSAxIChkZXBlbmRlbmNpZXMpIGNvbXBsZXRlcywgT3BlbkJhbyBwb2RzIHdpbGwg" + + "YmUgaW4gYEltYWdlUHVsbEJhY2tPZmZgLiBQYXRjaCBhbmQgcmVzdGFydDoKCmBgYGJhc2gKZm9y" + + "IG5zIGluIHZhdWx0LXN5c3RlbSBudmNmIGVzczsgZG8KICBmb3Igc2EgaW4gJChrdWJlY3RsIC0t" + + "Y29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgc2EgLW4gIiRucyIgXAogICAgLS1u" + + "by1oZWFkZXJzIC1vIGN1c3RvbS1jb2x1bW5zPSI6bWV0YWRhdGEubmFtZSIpOyBkbwogICAga3Vi" + + "ZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gcGF0Y2ggc2VydmljZWFjY291" + + "bnQgLW4gIiRucyIgIiRzYSIgXAogICAgICAtcCAneyJpbWFnZVB1bGxTZWNyZXRzIjogW3sibmFt" + + "ZSI6ICJudmNyLWNyZWRzIn1dfScKICBkb25lCmRvbmUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + + "b2wtcGxhbmUtY29udGV4dD4gZGVsZXRlIHBvZHMgLW4gdmF1bHQtc3lzdGVtIC0tYWxsCmBgYAoK" + + "VmVyaWZ5OgoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0" + + "PiBnZXQgZXZlbnRzIC1uIHZhdWx0LXN5c3RlbSBcCiAgLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFt" + + "cCcgfCBncmVwIC1pIHB1bGwKIyBTaG91bGQgc2hvdyAiU3VjY2Vzc2Z1bGx5IHB1bGxlZCBpbWFn" + + "ZSIgZnJvbSBudmNyLmlvCmBgYAoKLS0tCgojIyBFeGFtcGxlIDM6IEZ1bGwgVGVhcmRvd24gYW5k" + + "IFJlaW5zdGFsbAoKV2hlbiBhIGRlcGxveW1lbnQgaXMgYnJva2VuIGFuZCB5b3UgbmVlZCBhIGNs" + + "ZWFuIHNsYXRlLgoKIyMjIFN0ZXAgMTogRGVzdHJveSB0aGUgY29tcHV0ZS1wbGFuZSBzdGFjawoK" + + "YGBgYmFzaAptYWtlIC1DIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGRlc3Ryb3kg" + + "XAogIENMVVNURVJfTkFNRT08Y2x1c3Rlci1uYW1lPiBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwK" + + "ICBLVUJFQ09ORklHX0ZJTEU9PGNvbXB1dGUtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpJZiBjb21w" + + "dXRlIGNsZWFudXAgaXMgc3R1Y2sgb24gZmluYWxpemVycywgdXNlIHRoZSBjb21wdXRlLWNvbnRl" + + "eHQgcHJvY2VkdXJlIGluCltkZWJ1Z2dpbmcubWRdKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kI2Zh" + + "aWx1cmUtbnZjYS1jbGVhbnVwLXN0dWNrLWZpbmFsaXplcnMpLgoKIyMjIFN0ZXAgMjogRGVyZWdp" + + "c3RlciB0aGUgY29tcHV0ZSBjbHVzdGVyCgpSZWFkIGBjbHVzdGVySURgIGFuZCBgbmNhSURgIGZy" + + "b20KYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL3JlZ2lzdHJhdGlvbi88Y2x1c3Rl" + + "ci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuClNob3cgdGhlIElEIGFuZCBnZXQgY29uZmly" + + "bWF0aW9uIGJlZm9yZSBkZWxldGluZyB0aGUgSUNNUyByb3c6CgpgYGBiYXNoCjxudmNmLWNsaT4g" + + "LS1jb25maWcgPGNvbmZpZz4gY2x1c3RlciBkZWxldGUgXAogIC0tY2x1c3Rlci1pZCA8Y2x1c3Rl" + + "ci1pZC1mcm9tLXJlZ2lzdHJhdGlvbi12YWx1ZXM+IFwKICAtLW5jYS1pZCA8bmNhLWlkPiBcCiAg" + + "LS1pZ25vcmUtbWlzc2luZwpgYGAKClJlcGVhdCBzdGVwcyAxIGFuZCAyIGZvciBldmVyeSBjb21w" + + "dXRlIGNsdXN0ZXIuCgojIyMgU3RlcCAzOiBEZXN0cm95IHRoZSBjb250cm9sLXBsYW5lIHN0YWNr" + + "CgpQcmVzZXJ2ZSB0aGUgYGNlcnQtbWFuYWdlcmAgbmFtZXNwYWNlIGJ5IGRlZmF1bHQuIE5hbWVz" + + "cGFjZSBwcmVzZXJ2YXRpb24gZG9lcwpub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZS4gQmVm" + + "b3JlIHJ1bm5pbmcgZGVzdHJveSwgaWRlbnRpZnkgd2hldGhlcgpjZXJ0LW1hbmFnZXIgaXMgZXh0" + + "ZXJuYWwuIEZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlCmBj" + + "ZXJ0TWFuYWdlci5lbmFibGVkOiBmYWxzZWAgYW5kIGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBh" + + "biBpbnRlbmRlZApzdGFjay1tYW5hZ2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUgYGNlcnRNYW5h" + + "Z2VyLmVuYWJsZWQ6IHRydWVgLCB2ZXJpZnkKbWF0Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1l" + + "dGFkYXRhIGFuZCBhYm9ydCBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQKZXZpZGVuY2UuIE9ubHkg" + + "cGxhbiBuYW1lc3BhY2UgcmVtb3ZhbCBhZnRlciB2ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFu" + + "Y2UgYW5kCmdldHRpbmcgZXhwbGljaXQgY29uZmlybWF0aW9uOyBvdGhlcndpc2UgZG8gbm90IGRl" + + "bGV0ZSBpdC4KCmBgYGJhc2gKS1VCRUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBc" + + "Cm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVf" + + "RU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4K" + + "YGBgCgpQYXNzIGJvdGgga3ViZWNvbmZpZyBmb3JtcyBiZWNhdXNlIGNvbnRyb2wtcGxhbmUgbmFt" + + "ZXNwYWNlIGNsZWFudXAgdXNlcwphbWJpZW50IGBrdWJlY3RsYC4KCiMjIyBTdGVwIDQ6IFZlcmlm" + + "eSBjbGVhbgoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0" + + "PiBnZXQgbnMgfCBcCiAgZ3JlcCAtRSAnKG52Y2F8bnZjZi1iYWNrZW5kfGdyb3ZlfGR5bmFtbykn" + + "Cmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBucyB8IFwKICBn" + + "cmVwIC1FICcoY2Fzc2FuZHJhfG5hdHN8dmF1bHR8bnZjZnxhcGkta2V5c3xlc3N8c2lzKScKIyBC" + + "b3RoIGNvbW1hbmRzIHNob3VsZCByZXR1cm4gZW1wdHkuCmBgYAoKIyMjIFN0ZXAgNTogUmVpbnN0" + + "YWxsIGluIHNwbGl0IG9yZGVyCgpGb2xsb3cgW0NsZWFuIEluc3RhbGxhdGlvbl0oU0tJTEwubWQj" + + "Y2xlYW4taW5zdGFsbGF0aW9uKSwgdGhlbiByZXR1cm4gdG8gdGhlCnNhbWUgaGFuZG9mZiBpbiBb" + + "U3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFu" + + "ZS1pbnN0YWxsYXRpb24ubWQpLgoKLS0tCgojIyBFeGFtcGxlIDQ6IFJlY292ZXIgZnJvbSBhIEdh" + + "dGV3YXkgRW5kcG9pbnQgQ2hhbmdlCgpUaGUgc2VwYXJhdGVseSBwcm92aXNpb25lZCBHYXRld2F5" + + "IG9yIGl0cyBsb2FkIGJhbGFuY2VyIHdhcyByZWNyZWF0ZWQgYW5kIGdvdCBhIG5ldyBlbmRwb2lu" + + "dC4KCiMjIyBTdGVwIDE6IEdldCB0aGUgbmV3IGVuZHBvaW50CgpgYGBiYXNoCkdBVEVXQVlfQURE" + + "Uj0kKGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5" + + "IFwKICBudmNmLWdhdGV3YXkgLW4gZW52b3ktZ2F0ZXdheSBcCiAgLW8ganNvbnBhdGg9J3suc3Rh" + + "dHVzLmFkZHJlc3Nlc1swXS52YWx1ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSIgpgYGAKCiMj" + + "IyBTdGVwIDI6IFVwZGF0ZSBETlMgYW5kIGRpcmVjdCBhZGRyZXNzIGZpZWxkcwoKS2VlcCBgZ2xv" + + "YmFsLmRvbWFpbmAsIHJvdXRlIGhvc3RuYW1lcywgYW5kIENMSSBIb3N0IGZpZWxkcyB1bmNoYW5n" + + "ZWQuIFBvaW50IHRoZQpETlMgcmVjb3JkcyBmb3IgcmVuZGVyZWQgcm91dGUgaG9zdG5hbWVzLCBz" + + "dWNoIGFzIGBhcGkuPGRvbWFpbj5gIGFuZApgKi5pbnZvY2F0aW9uLjxkb21haW4+YCwgdG8gYEdB" + + "VEVXQVlfQUREUmAuIEZvciBhIHRlbXBvcmFyeSBlbnZpcm9ubWVudCB3aXRob3V0CkROUywga2Vl" + + "cCBpdHMgcmVzZXJ2ZWQgcm91dGUgc3VmZml4IGFuZCBjb25uZWN0IHRvIGBHQVRFV0FZX0FERFJg" + + "IHdpdGggdGhlCm1hdGNoaW5nIGBIb3N0YCBoZWFkZXIuCgpGb3IgYSBzcGxpdCBkZXBsb3ltZW50" + + "IGNvbmZpZ3VyZWQgd2l0aCBkaXJlY3QgR2F0ZXdheSBhZGRyZXNzZXMsIHJlcGxhY2Ugb25seQp0" + + "aGUgYWRkcmVzcy1iZWFyaW5nIHZhbHVlczogY29udHJvbC1wbGFuZSBgbnZjZk5hdHNTZXJ2aWNl" + + "VVJMYCwgY29tcHV0ZS1wbGFuZQpJQ01TLCBSZVZhbCwgYW5kIE5BVFMgVVJMcywgYW5kIENMSSBV" + + "UkwgZmllbGRzLiBLZWVwIHRoZWlyIGRvbWFpbiBhbmQgSG9zdApvdmVycmlkZXMgdW5jaGFuZ2Vk" + + "LiBSZWZyZXNoIHJlZ2lzdHJhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIHRocm91Z2ggdGhlIHNhbWUK" + + "aGFuZG9mZiB1c2VkIG9yaWdpbmFsbHkuIFNlZQpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxs" + + "YXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpCmZvciB0aGUg" + + "ZmllbGRzIGFuZCBjb21wbGV0ZSBjb21tYW5kcy4KCiMjIyBTdGVwIDM6IFZlcmlmeSBib3RoIGNv" + + "bnRleHRzCgpgYGBiYXNoCmRpZyArc2hvcnQgImFwaS48ZG9tYWluPiIKY3VybCAtSCAiSG9zdDog" + + "YXBpLjxkb21haW4+IiAiaHR0cDovLyRHQVRFV0FZX0FERFIvaGVhbHRoIgprdWJlY3RsIC0tY29u" + + "dGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBudmNmLWdhdGV3YXkgXAog" + + "IC1uIGVudm95LWdhdGV3YXkgLW8gd2lkZQprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFu" + + "ZS1jb250ZXh0PiBnZXQgaHR0cHJvdXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1w" + + "bGFuZS1jb250ZXh0PiBnZXQgdGNwcm91dGVzIC1BCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + + "LXBsYW5lLWNvbnRleHQ+IHJvbGxvdXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Etb3BlcmF0" + + "b3IgLW4gbnZjYS1vcGVyYXRvciAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21w" + + "dXRlLXBsYW5lLWNvbnRleHQ+IHdhaXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBsYW5lLWNs" + + "dXN0ZXItbmFtZT4gLW4gbnZjYS1vcGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3suc3RhdHVz" + + "LmFnZW50U3RhdHVzfSc9aGVhbHRoeSAtLXRpbWVvdXQ9MTBtCmBgYAoKLS0tCgojIyBFeGFtcGxl" + + "IDU6IERlcGxveSBPbmx5IERlcGVuZGVuY2llcwoKVXNlZnVsIGZvciB0ZXN0aW5nIG9yIHdoZW4g" + + "aXRlcmF0aW5nIG9uIHNlcnZpY2UgY29uZmlndXJhdGlvbi4KCmBgYGJhc2gKIyBEZXBsb3kganVz" + + "dCBOQVRTLCBDYXNzYW5kcmEsIE9wZW5CYW8KSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0t" + + "c2VsZWN0b3IgcmVsZWFzZS1ncm91cD1kZXBlbmRlbmNpZXMgc3luYwoKIyBDaGVjayBzdGF0dXMK" + + "a3ViZWN0bCBnZXQgcG9kcyAtbiBuYXRzLXN5c3RlbQprdWJlY3RsIGdldCBwb2RzIC1uIGNhc3Nh" + + "bmRyYS1zeXN0ZW0Ka3ViZWN0bCBnZXQgcG9kcyAtbiB2YXVsdC1zeXN0ZW0KCiMgRGVwbG95IGp1" + + "c3Qgb25lIHNwZWNpZmljIHJlbGVhc2UKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2Vs" + + "ZWN0b3IgbmFtZT1jYXNzYW5kcmEgc3luYwpgYGAKCiMjIyBTZWxlY3RvciByZWZlcmVuY2UKCnwg" + + "U2VsZWN0b3IgfCBSZWxlYXNlcyB8CnwtLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgYHJlbGVhc2Ut" + + "Z3JvdXA9ZGVwZW5kZW5jaWVzYCB8IG5hdHMsIGNhc3NhbmRyYSwgb3BlbmJhby1zZXJ2ZXIgfAp8" + + "IGByZWxlYXNlLWdyb3VwPXNlcnZpY2VzYCB8IGFwaS1rZXlzLCBzaXMsIGFwaSwgaW52b2NhdGlv" + + "bi1zZXJ2aWNlLCBncnBjLXByb3h5LCBlc3MtYXBpLCBub3Rhcnktc2VydmljZSwgcmV2YWwsIG9w" + + "dGlvbmFsIGxsbS1yZXF1ZXN0LXJvdXRlciBhbmQgbGxtLWFwaS1nYXRld2F5IHdoZW4gYGxsbS5l" + + "bmFibGVkPXRydWVgLCBvcHRpb25hbCB2YW5pdHktZ2F0ZXdheSBvbmx5IGluIHN0YWNrIHBhY2th" + + "Z2VzIHRoYXQgaW5jbHVkZSB0aGUgYWRkb24gYW5kIGhhdmUgYGFkZG9ucy52YW5pdHlHYXRld2F5" + + "LmVuYWJsZWQ9dHJ1ZWAsIG9wdGlvbmFsIG52Y2YtdWkgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0" + + "aGF0IGluY2x1ZGUgdGhlIGFkZG9uIGFuZCBoYXZlIGBhZGRvbnMubnZjZlVpLmVuYWJsZWQ9dHJ1" + + "ZWAgfAp8IGBuYW1lPWxsbS1yZXF1ZXN0LXJvdXRlcmAgfCBEZXBsb3kganVzdCB0aGUgTExNIHJl" + + "cXVlc3Qgcm91dGVyIHdoZW4gYGxsbS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1sbG0tYXBpLWdh" + + "dGV3YXlgIHwgRGVwbG95IGp1c3QgdGhlIExMTSBBUEkgZ2F0ZXdheSB3aGVuIGBsbG0uZW5hYmxl" + + "ZD10cnVlYCB8CnwgYG5hbWU9dmFuaXR5LWdhdGV3YXlgIHwgRGVwbG95IGp1c3QgVmFuaXR5IEdh" + + "dGV3YXkgb25seSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoYXQgcmVsZWFzZSBh" + + "bmQgYGFkZG9ucy52YW5pdHlHYXRld2F5LmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1lPW52Y2YtdWlg" + + "IHwgRGVwbG95IE5WQ0YgVUkgb25seSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRo" + + "YXQgcmVsZWFzZSBhbmQgYGFkZG9ucy5udmNmVWkuZW5hYmxlZD10cnVlYCB8CnwgYHJlbGVhc2Ut" + + "Z3JvdXA9aW5ncmVzc2AgfCBpbmdyZXNzIChnYXRld2F5IHJvdXRlcykgfAp8IGBuYW1lPTxyZWxl" + + "YXNlPmAgfCBBbnkgaW5kaXZpZHVhbCByZWxlYXNlIGJ5IG5hbWUgfAoKTm90ZTogYGFkbWluLWlz" + + "c3Vlci1wcm94eWAgZG9lcyBub3QgaGF2ZSBhIHJlbGVhc2UtZ3JvdXAgbGFiZWwuIFRhcmdldCBp" + + "dCB3aXRoIGAtLXNlbGVjdG9yIG5hbWU9YWRtaW4taXNzdWVyLXByb3h5YC4KUEsHCAJSTkB/KAAA" + + "fygAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAATAAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + + "aW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWRVVAUA" + + "AQCmzhIjIFNwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uCgpUaGUgY29udHJvbCBwbGFu" + + "ZSBhbmQgY29tcHV0ZSBwbGFuZSBhcmUgc2VwYXJhdGUgc3RhY2tzLiBJbnN0YWxsIHRoZSBjb250" + + "cm9sCnBsYW5lIGZpcnN0LCB0aGVuIHJlZ2lzdGVyIGFuZCBpbnN0YWxsIGVhY2ggY29tcHV0ZSBj" + + "bHVzdGVyLiBDaG9vc2Ugb25lIGhhbmRvZmYKYmVsb3cgYW5kIHVzZSBpdCBmb3IgdGhlIGZ1bGwg" + + "bGlmZWN5Y2xlLiBEbyBub3QgY29tYmluZSBhIENMSS1nZW5lcmF0ZWQgcHJvZmlsZQp3aXRoIHRo" + + "ZSBIZWxtZmlsZSB2YWx1ZXMgZmxvdy4KCiMjIENob29zZSBhIEhhbmRvZmYKCnwgRmxvdyB8IFNv" + + "dXJjZSBvZiBjb250cm9sLXBsYW5lIGVuZHBvaW50cyB8IFJlZ2lzdHJhdGlvbiBhcnRpZmFjdCB8" + + "CnwtLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0t" + + "LS0tLS0tLS0tLS18CnwgSGVsbWZpbGUgdmFsdWVzIHwgU2VwYXJhdGUgY29udHJvbC1wbGFuZSBh" + + "bmQgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCBmaWxlcyB8IGBkZXBsb3kvc3RhY2tzL252Y2Yt" + + "Y29tcHV0ZS1wbGFuZS9yZWdpc3RyYXRpb24vPGNsdXN0ZXI+LXJlZ2lzdGVyLXZhbHVlcy55YW1s" + + "YCB8CnwgQ0xJIHByb2ZpbGUgfCBDTEktZ2VuZXJhdGVkIGBkZXBsb3kvc3RhY2tzL3NlbGYtbWFu" + + "YWdlZC9vdXQvY29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWxgIHwgQ0xJLWdlbmVyYXRlZCBgZGVw" + + "bG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvb3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1" + + "ZXMueWFtbGAgfAoKVGhlIENMSSBwcm9maWxlIGlzIG1hbmRhdG9yeSBmb3IgdGhlIENMSSBmbG93" + + "IGFuZCBtdXN0IG5vdCBiZSBoYW5kLWF1dGhvcmVkLgpUaGUgSGVsbWZpbGUgZmxvdyBkb2VzIG5v" + + "dCBjb25zdW1lIGEgY29udHJvbC1wbGFuZSBwcm9maWxlLgoKQ29tbWFuZHMgYmVsb3cgdXNlIG1v" + + "bm9yZXBvIHBhdGhzIGZyb20gdGhlIHJlcG9zaXRvcnkgcm9vdC4gT3BlcmF0b3JzIHVzaW5nCmV4" + + "dHJhY3RlZCBwYWNrYWdlcyBuZWVkIG1hdGNoaW5nLXZlcnNpb24gYG52Y2Ytc2VsZi1tYW5hZ2Vk" + + "LXN0YWNrYCBhbmQKYG52Y2YtY29tcHV0ZS1wbGFuZS1zdGFja2AgYnVuZGxlcy4gU3Vic3RpdHV0" + + "ZSB0aG9zZSBidW5kbGUgcm9vdHMgZm9yCmBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZGAgYW5k" + + "IGBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZWAuCgojIyBIZWxtZmlsZSBWYWx1ZXMg" + + "RmxvdwoKQ3JlYXRlIGJvdGggZW52aXJvbm1lbnQgZmlsZXMgYmVmb3JlIGluc3RhbGxhdGlvbjoK" + + "Ci0gYGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55YW1sYCBm" + + "b3IgY29udHJvbC1wbGFuZQogIHJlZ2lzdHJ5LCBkb21haW4sIEdhdGV3YXksIHJvdXRlcywgYW5k" + + "IHNlcnZpY2Ugc2V0dGluZ3MuCi0gYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vu" + + "dmlyb25tZW50cy88ZW52Pi55YW1sYCBmb3IgY29tcHV0ZS1wbGFuZQogIHJlZ2lzdHJ5LCBwdWxs" + + "IHNlY3JldHMsIGFuZCBjb21wdXRlLXJlYWNoYWJsZSBJQ01TLCBSZVZhbCwgYW5kIE5BVFMgdmFs" + + "dWVzLgoKRm9yIEVLUywgdXNlIHRoZSBjYW5vbmljYWwKW0NTUCBFbmQtdG8tRW5kIEV4YW1wbGVd" + + "KGh0dHBzOi8vZG9jcy5udmlkaWEuY29tL252Y2YvdjAuNi4wLXJjL2NzcC1lbmQtdG8tZW5kLWV4" + + "YW1wbGUpLgpUaGUgY29udHJvbC1wbGFuZSBlbnZpcm9ubWVudCBrZWVwcyB0aGUgRW52b3kgR2F0" + + "ZXdheSBjb250cm9sbGVyIGluCmBlbnZveS1nYXRld2F5LXN5c3RlbWAsIGF0dGFjaGVzIHJvdXRl" + + "cyB0byBgR2F0ZXdheS9udmNmLWdhdGV3YXlgIGluCmBlbnZveS1nYXRld2F5YCwgYW5kIGVuYWJs" + + "ZXMgdGhlIE5BVFMgcm91dGUuIFRoZSBjb21wdXRlLXBsYW5lIGVudmlyb25tZW50IHVzZXMKdGhl" + + "IGV4dGVybmFsIGFkZHJlc3MgcGx1cyB0aGUgc2VydmljZSBob3N0IG92ZXJyaWRlcy4gSGVyZSwK" + + "YDxnYXRld2F5LWFkZHJlc3M+YCBpcyB0aGUgTkxCIGFkZHJlc3MgYW5kIGA8Z2F0ZXdheS1kb21h" + + "aW4+YCBpcyB0aGUgRE5TIGJhc2UKd2hvc2Ugc2VydmljZSBzdWJkb21haW5zIHJlc29sdmUgdG8g" + + "dGhhdCBOTEI6CgpgYGB5YW1sCiMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvZW52aXJvbm1l" + + "bnRzLzxlbnY+LnlhbWwKZ2xvYmFsOgogIGRvbWFpbjogIjxnYXRld2F5LWRvbWFpbj4iCiAgd29y" + + "a2VyRW5kcG9pbnRzOgogICAgbnZjZlNlcnZpY2VVUkw6ICJodHRwOi8vYXBpLjxnYXRld2F5LWRv" + + "bWFpbj4iCiAgICBudmNmR3JwY1NlcnZpY2VVUkw6ICJodHRwOi8vd29ya2VyLWFwaS48Z2F0ZXdh" + + "eS1kb21haW4+IgogICAgbnZjZk5hdHNTZXJ2aWNlVVJMOiAibmF0czovLzxnYXRld2F5LWFkZHJl" + + "c3M+OjQyMjIiCiAgICBudmN0U2VydmljZVVSTDogImh0dHA6Ly90YXNrcy48Z2F0ZXdheS1kb21h" + + "aW4+IgogICAgbnZjdEdycGNTZXJ2aWNlVVJMOiAiaHR0cDovL3dvcmtlci10YXNrcy48Z2F0ZXdh" + + "eS1kb21haW4+IgogICAgaW52b2NhdGlvblNlcnZpY2VVUkw6ICJodHRwOi8vaW52b2NhdGlvbi48" + + "Z2F0ZXdheS1kb21haW4+IgoKZ3JwY3Byb3h5OgogIG52Y2ZHcnBjU2VydmljZVVSTDogImh0dHA6" + + "Ly9hcGkubnZjZi5zdmMuY2x1c3Rlci5sb2NhbDo5MDkwIgoKaW5ncmVzczoKICBnYXRld2F5QXBp" + + "OgogICAgY29udHJvbGxlck5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheS1zeXN0ZW0KICAgIGdhdGV3" + + "YXlzOgogICAgICBzaGFyZWQ6IHtuYW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3kt" + + "Z2F0ZXdheX0KICAgICAgZ3JwYzoge25hbWU6IG52Y2YtZ2F0ZXdheSwgbmFtZXNwYWNlOiBlbnZv" + + "eS1nYXRld2F5fQogICAgICBuYXRzOgogICAgICAgIG5hbWU6IG52Y2YtZ2F0ZXdheQogICAgICAg" + + "IG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheQogICAgICAgIGxpc3RlbmVyTmFtZTogbmF0cwogICAg" + + "cm91dGVzOgogICAgICBudmNmQXBpOgogICAgICAgIGdycGM6CiAgICAgICAgICBlbmFibGVkOiB0" + + "cnVlCiAgICAgICAgICBob3N0bmFtZXM6IFsid29ya2VyLWFwaS48Z2F0ZXdheS1kb21haW4+Il0K" + + "ICAgICAgbnZjdEFwaToKICAgICAgICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAg" + + "ICAgICAgaG9zdG5hbWVzOiBbIndvcmtlci10YXNrcy48Z2F0ZXdheS1kb21haW4+Il0KICAgICAg" + + "bmF0czoKICAgICAgICBlbmFibGVkOiB0cnVlCgpvcGVuYmFvOgogIG1pZ3JhdGlvbnM6CiAgICBp" + + "c3N1ZXJEaXNjb3Zlcnk6CiAgICAgIGVuYWJsZWQ6IHRydWUKYGBgCgpgYGB5YW1sCiMgZGVwbG95" + + "L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwKZ2xvYmFs" + + "OgogIG52Y2FPcGVyYXRvcjoKICAgIHNlbGZNYW5hZ2VkOgogICAgICBpY21zU2VydmljZVVSTDog" + + "Imh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKICAgICAgaWNtc1NlcnZpY2VIb3N0SGVhZGVyT3Zl" + + "cnJpZGU6ICJzaXMuPGdhdGV3YXktZG9tYWluPiIKICAgICAgcmV2YWxTZXJ2aWNlVVJMOiAiaHR0" + + "cDovLzxnYXRld2F5LWFkZHJlc3M+IgogICAgICByZXZhbFNlcnZpY2VIb3N0SGVhZGVyT3ZlcnJp" + + "ZGU6ICJyZXZhbC48Z2F0ZXdheS1kb21haW4+IgogICAgICBuYXRzVVJMOiAibmF0czovLzxnYXRl" + + "d2F5LWFkZHJlc3M+OjQyMjIiCiAgICAgIG5hdHNIb3N0T3ZlcnJpZGU6ICJuYXRzLjxnYXRld2F5" + + "LWRvbWFpbj4iCmBgYAoKUHJldmlldyBhbmQgaW5zdGFsbCB0aGUgY29udHJvbCBwbGFuZSBhZ2Fp" + + "bnN0IGl0cyBjb250ZXh0OgoKYGBgYmFzaAptYWtlIC1DIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5h" + + "Z2VkIHRlbXBsYXRlIFwKICBIRUxNRklMRV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklMRT08" + + "Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFu" + + "YWdlZCBpbnN0YWxsIFwKICBIRUxNRklMRV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklMRT08" + + "Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPgpgYGAKCkJlZm9yZSByZWdpc3RlcmluZyB0aHJvdWdo" + + "IGEgYmFyZSBHYXRld2F5IGFkZHJlc3MsIGNyZWF0ZSBvciB1cGRhdGUgdGhlIENMSQpjb25maWcg" + + "cGFzc2VkIGFzIGBOVkNGX0NMSV9DT05GSUdgOgoKYGBgeWFtbApiYXNlX2h0dHBfdXJsOiAiaHR0" + + "cDovLzxnYXRld2F5LWFkZHJlc3M+IgppbnZva2VfdXJsOiAiaHR0cDovLzxnYXRld2F5LWFkZHJl" + + "c3M+IgpiYXNlX2dycGNfdXJsOiAiPGdhdGV3YXktYWRkcmVzcz46MTAwODEiCmFwaV9rZXlzX3Nl" + + "cnZpY2VfdXJsOiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+IgppY21zX3VybDogImh0dHA6Ly88" + + "Z2F0ZXdheS1hZGRyZXNzPiIKYXBpX2hvc3Q6ICJhcGkuPGdhdGV3YXktZG9tYWluPiIKYXBpX2tl" + + "eXNfaG9zdDogImFwaS1rZXlzLjxnYXRld2F5LWRvbWFpbj4iCmludm9rZV9ob3N0OiAiaW52b2Nh" + + "dGlvbi48Z2F0ZXdheS1kb21haW4+IgppY21zX2hvc3Q6ICJzaXMuPGdhdGV3YXktZG9tYWluPiIK" + + "YGBgCgpIb3N0IGZpZWxkcyBjb250YWluIGhvc3RuYW1lcyBvbmx5LCB3aXRob3V0IGEgVVJMIHNj" + + "aGVtZS4gYElDTVNfVVJMYCBtYXBzIG9ubHkKdG8gdGhlIHJlZ2lzdHJhdGlvbiBjb21tYW5kJ3Mg" + + "YC0taWNtcy11cmxgOyBgaWNtc19ob3N0YCBpbiB0aGUgY29uZmlnIHN1cHBsaWVzCnRoZSBHYXRl" + + "d2F5IEhvc3QgaGVhZGVyLiBUaGVyZSBpcyBubyBgLS1pY21zLWhvc3RgIE1ha2Ugb3IgQ0xJIGZs" + + "YWcuCgpSZWdpc3RlciBmcm9tIHRoZSBjb21wdXRlIGNvbnRleHQsIHRoZW4gaW5zdGFsbCB0aGUg" + + "Y29tcHV0ZSBwbGFuZToKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0" + + "ZS1wbGFuZSByZWdpc3Rlci1jbHVzdGVyIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4g" + + "XAogIE5DQV9JRD08bmNhLWlkPiBcCiAgQ0xVU1RFUl9SRUdJT049PHJlZ2lvbj4gXAogIElDTVNf" + + "VVJMPWh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRl" + + "LXBsYW5lLWt1YmVjb25maWc+IFwKICBOVkNGX0NMST08cGF0aC10by1udmNmLWNsaT4gXAogIE5W" + + "Q0ZfQ0xJX0NPTkZJRz08cGF0aC10by1udmNmLWNsaS1jb25maWc+CgptYWtlIC1DIGRlcGxveS9z" + + "dGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGluc3RhbGwgXAogIENMVVNURVJfTkFNRT08Y2x1c3Rl" + + "ci1uYW1lPiBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbXB1" + + "dGUtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpSZWdpc3RyYXRpb24gZGlzY292ZXJzIHRoZSBPSURD" + + "IGlzc3VlciBhbmQgSldLUyBmcm9tIHRoZSBjb21wdXRlIGt1YmUgY29udGV4dC4KSW4gYSBtdWx0" + + "aS1jbHVzdGVyIGRlcGxveW1lbnQsIGBLVUJFQ09ORklHX0ZJTEVgIGlzIHJlcXVpcmVkIG9uIGJv" + + "dGgKY29tcHV0ZS1wbGFuZSBjb21tYW5kcy4gSW4gYSBzYW1lLWNsdXN0ZXIgZGVwbG95bWVudCBp" + + "dCBtYXkgYmUgb21pdHRlZCBvbmx5CndoZW4gdGhlIGFtYmllbnQgY29udGV4dCBpcyBhbHJlYWR5" + + "IHRoZSB0YXJnZXQgY2x1c3Rlci4KCiMjIENMSSBQcm9maWxlIEZsb3cKClJ1biB0aGUgQ0xJIGNv" + + "bnRyb2wtcGxhbmUgaW5zdGFsbCBmaXJzdC4gSXQgY3JlYXRlcyB0aGUgcHJvZmlsZSBjb25zdW1l" + + "ZCBieQpjb21wdXRlLXBsYW5lIHJlZ2lzdHJhdGlvbjoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25m" + + "aWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kv" + + "c3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFj" + + "a3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1j" + + "b250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0" + + "ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICBpbnN0YWxsIC0tY29u" + + "dHJvbC1wbGFuZSBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbnRyb2wtcGxhbmUtY2x1c3Rlci1uYW1l" + + "PiBcCiAgLS1yZWdpb24gPHJlZ2lvbj4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+Cgp0ZXN0IC1zIGRl" + + "cGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL291dC9jb250cm9sLXBsYW5lLXByb2ZpbGUueWFtbApg" + + "YGAKClVzZSB0aGUgZnVsbCBwZXJzaXN0ZW50IHByZWZpeCBmb3IgYm90aCBjb21wdXRlLXBsYW5l" + + "IGNvbW1hbmRzOgoKYGBgYmFzaApudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3Rl" + + "ZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwK" + + "ICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUg" + + "XAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWluIFwKICBjb21wdXRlLXBsYW5lIHJlZ2lzdGVyIFwK" + + "ICAtLWNvbnRyb2wtcGxhbmUtcHJvZmlsZSBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQv" + + "Y29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWwgXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBs" + + "YW5lLWNsdXN0ZXItbmFtZT4gXAogIC0ta3ViZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + + "eHQ+IFwKICAtLXJlZ2lvbiA8cmVnaW9uPiBcCiAgLS1vdXRwdXQgZGVwbG95L3N0YWNrcy9udmNm" + + "LWNvbXB1dGUtcGxhbmUvb3V0Lzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4tcmVnaXN0ZXIt" + + "dmFsdWVzLnlhbWwKCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAt" + + "LWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29t" + + "cHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1l" + + "bnYgPGVudj4gXAogIC0tcGxhaW4gXAogIGNvbXB1dGUtcGxhbmUgaW5zdGFsbCBcCiAgLS12YWx1" + + "ZXMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvb3V0Lzxjb21wdXRlLXBsYW5lLWNs" + + "dXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWwgXAogIC0ta3ViZS1jb250ZXh0IDxjb21w" + + "dXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVz" + + "dGVyLW5hbWU+CmBgYAoKUmVnaXN0cmF0aW9uIHNlbGVjdHMgdGhlIHByb2ZpbGUncyBpbi1jbHVz" + + "dGVyIG9yIGNvbXB1dGUtcmVhY2hhYmxlIGVuZHBvaW50cwpmcm9tIHRoZSBjb21wdXRlIGNvbnRl" + + "eHQgYW5kIHByb2JlcyBpdHMgSldLUy4gRG8gbm90IHJlcGxhY2UgcHJvZmlsZSBlbmRwb2ludHMK" + + "d2l0aCBoYW5kLWF1dGhvcmVkIEhlbG1maWxlIGVuZHBvaW50IHZhbHVlcy4KCiMjIFB1bGwgU2Vj" + + "cmV0cwoKQ3JlYXRlIHRoZSBjb250cm9sLXBsYW5lIHNlY3JldCBpbiB0aGVzZSBuYW1lc3BhY2Vz" + + "IG9uIHRoZSBjb250cm9sLXBsYW5lCmNvbnRleHQ6CgpgYGB0ZXh0CmNhc3NhbmRyYS1zeXN0ZW0g" + + "bmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFn" + + "ZXIKYGBgCgpPbiB0aGUgY29tcHV0ZSBjb250ZXh0LCBjcmVhdGUgdGhlIHNlY3JldCBvbmx5IGlu" + + "IGBudmNhLW9wZXJhdG9yYCBhbmQgcmVmZXJlbmNlCml0IHRocm91Z2ggYGdsb2JhbC5pbWFnZVB1" + + "bGxTZWNyZXRzYCBpbiB0aGUgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudC4gVGhlIGNoYXJ0CmFu" + + "ZCBvcGVyYXRvciB1c2UgaXQgaW4gYG52Y2Etb3BlcmF0b3JgIGFuZCBtaXJyb3IgaXQgdG8gYG52" + + "Y2Etc3lzdGVtYC4gRG8gbm90IGFkZAplaXRoZXIgbmFtZXNwYWNlIHRvIHRoZSBjb250cm9sLXBs" + + "YW5lIGxpc3QuIEZvciBjb21tYW5kcyBhbmQgcG9saWN5IGV4YW1wbGVzLApzZWUgW3B1bGwtc2Vj" + + "cmV0cy5tZF0ocHVsbC1zZWNyZXRzLm1kKS4KCiMjIFZlcmlmaWNhdGlvbgoKVXNlIHRoZSBleHBs" + + "aWNpdCBHYXRld2F5IG5hbWUgYW5kIG5hbWVzcGFjZToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRl" + + "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAt" + + "biBlbnZveS1nYXRld2F5IC1vIHdpZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + + "Y29udGV4dD4gZ2V0IHRjcHJvdXRlIC1uIGVudm95LWdhdGV3YXkKa3ViZWN0bCAtLWNvbnRleHQg" + + "PGNvbXB1dGUtcGxhbmUtY29udGV4dD4gcm9sbG91dCBzdGF0dXMgXAogIGRlcGxveW1lbnQvbnZj" + + "YS1vcGVyYXRvciAtbiBudmNhLW9wZXJhdG9yIC0tdGltZW91dD0xMG0Ka3ViZWN0bCAtLWNvbnRl" + + "eHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gd2FpdCBcCiAgbnZjZmJhY2tlbmQvPGNvbXB1dGUt" + + "cGxhbmUtY2x1c3Rlci1uYW1lPiAtbiBudmNhLW9wZXJhdG9yIFwKICAtLWZvcj1qc29ucGF0aD0n" + + "ey5zdGF0dXMuYWdlbnRTdGF0dXN9Jz1oZWFsdGh5IC0tdGltZW91dD0xMG0Ka3ViZWN0bCAtLWNv" + + "bnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IHNlY3JldCA8cHVsbC1zZWNyZXQ+IC1u" + + "IG52Y2Etc3lzdGVtCmBgYAoKIyMgVGVhcmRvd24KCkRlc3Ryb3kgYW5kIGRlcmVnaXN0ZXIgZXZl" + + "cnkgY29tcHV0ZSBwbGFuZSBiZWZvcmUgdGhlIGNvbnRyb2wgcGxhbmUuIEJvdGgKaGFuZG9mZnMg" + + "Y2FuIGRlc3Ryb3kgdGhlIGNvbnRyb2wgcGxhbmUsIHNvIGFwcGx5IHRoaXMgcHJlZmxpZ2h0IGJl" + + "Zm9yZSBlaXRoZXIKb25lLiBQcmVzZXJ2ZSB0aGUgYGNlcnQtbWFuYWdlcmAgbmFtZXNwYWNlIGJ5" + + "IGRlZmF1bHQuIE5hbWVzcGFjZSBwcmVzZXJ2YXRpb24KZG9lcyBub3QgcHJlc2VydmUgdGhlIEhl" + + "bG0gcmVsZWFzZS4gSWRlbnRpZnkgd2hldGhlciBjZXJ0LW1hbmFnZXIgaXMgZXh0ZXJuYWwuCkZv" + + "ciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlIGBjZXJ0TWFuYWdl" + + "ci5lbmFibGVkOiBmYWxzZWAKYW5kIGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBhbiBpbnRlbmRl" + + "ZCBzdGFjay1tYW5hZ2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUKYGNlcnRNYW5hZ2VyLmVuYWJs" + + "ZWQ6IHRydWVgLCB2ZXJpZnkgbWF0Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1ldGFkYXRhIGFu" + + "ZAphYm9ydCBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQgZXZpZGVuY2UuIE9ubHkgcGxhbiBuYW1l" + + "c3BhY2UgcmVtb3ZhbCBhZnRlcgp2ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGdl" + + "dHRpbmcgZXhwbGljaXQgY29uZmlybWF0aW9uOyBvdGhlcndpc2UKZG8gbm90IGRlbGV0ZSBpdC4K" + + "CkZvciB0aGUgSGVsbWZpbGUgdmFsdWVzIGZsb3csIHJldGFpbiBlYWNoIHJlZ2lzdHJhdGlvbiB2" + + "YWx1ZXMgZmlsZSB1bnRpbApjbGVhbnVwIGlzIHZlcmlmaWVkOgoKYGBgYmFzaAptYWtlIC1DIGRl" + + "cGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGRlc3Ryb3kgXAogIENMVVNURVJfTkFNRT08" + + "Y2x1c3Rlci1uYW1lPiBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9" + + "PGNvbXB1dGUtcGxhbmUta3ViZWNvbmZpZz4KCjxudmNmLWNsaT4gLS1jb25maWcgPGNvbmZpZz4g" + + "Y2x1c3RlciBkZWxldGUgXAogIC0tY2x1c3Rlci1pZCA8Y2x1c3Rlci1pZC1mcm9tLXJlZ2lzdHJh" + + "dGlvbi12YWx1ZXM+IFwKICAtLW5jYS1pZCA8bmNhLWlkPiBcCiAgLS1pZ25vcmUtbWlzc2luZwpg" + + "YGAKClJlYWQgYGNsdXN0ZXJJRGAgYW5kIGBuY2FJRGAgZnJvbQpgZGVwbG95L3N0YWNrcy9udmNm" + + "LWNvbXB1dGUtcGxhbmUvcmVnaXN0cmF0aW9uLzxjbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVl" + + "cy55YW1sYC4KU2hvdyB0aGUgZXhhY3QgY2x1c3RlciBJRCBhbmQgZ2V0IGNvbmZpcm1hdGlvbiBi" + + "ZWZvcmUgYGNsdXN0ZXIgZGVsZXRlYC4gUmVwZWF0CmNvbXB1dGUgZGVzdHJveSBhbmQgZGVyZWdp" + + "c3RyYXRpb24gZm9yIGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciwgdGhlbiBkZXN0cm95IHRoZQpjb250" + + "cm9sIHBsYW5lLgoKYGBgYmFzaApLVUJFQ09ORklHPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+" + + "IFwKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBkZXN0cm95IFwKICBIRUxNRklM" + + "RV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklMRT08Y29udHJvbC1wbGFuZS1rdWJlY29uZmln" + + "PgpgYGAKCkJvdGggYEtVQkVDT05GSUdgIGFuZCBgS1VCRUNPTkZJR19GSUxFYCBhcmUgcmVxdWly" + + "ZWQgb24gdGhlIGNvbnRyb2wtcGxhbmUKZGVzdHJveSBiZWNhdXNlIGl0cyBuYW1lc3BhY2UgY2xl" + + "YW51cCB1c2VzIGFtYmllbnQgYGt1YmVjdGxgLgoKRm9yIHRoZSBDTEkgcHJvZmlsZSBmbG93LCBr" + + "ZWVwCmBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9vdXQvPGNsdXN0ZXItbmFtZT4t" + + "cmVnaXN0ZXItdmFsdWVzLnlhbWxgCnVudGlsIHRlYXJkb3duIGNvbXBsZXRlcyBiZWNhdXNlIGBk" + + "b3duYCByZWFkcyBpdHMgY2x1c3RlciBJRC4gRmlyc3QgcXVlcnkgdGhlCmxpdmUgcmVnaXN0cmF0" + + "aW9uIHNldCB3aXRoIHRoZSBzYW1lIGNvbXBsZXRlIHBlcnNpc3RlbnQgcHJlZml4OgoKYGBgYmFz" + + "aApudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBs" + + "YW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUt" + + "c3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwK" + + "ICAtLXBsYWluIFwKICAtLWNvbnRyb2wtcGxhbmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250" + + "ZXh0PiBcCiAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4g" + + "XAogIC0taWNtcy11cmwgPGNvbXB1dGUtcmVhY2hhYmxlLWljbXMtdXJsPiBcCiAgc3RhdHVzIFwK" + + "ICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAtLW5jYS1p" + + "ZCA8bmNhLWlkPgpgYGAKClNob3cgdGhlIHJlZ2lzdGVyZWQgY29tcHV0ZS1wbGFuZSBsaXN0LiBO" + + "YW1lZC1jbHVzdGVyIGBkb3duIC0tcGxhbi1vbmx5YCBkb2VzCm5vdCBxdWVyeSBJQ01TLCBzbyBp" + + "dCBwcmV2aWV3cyBvbmx5IHRoYXQgY29tcHV0ZSBwbGFuZSBhbmQgY2Fubm90IHNob3cgdGhlCmNv" + + "bmRpdGlvbmFsIGNvbnRyb2wtcGxhbmUgcmVtb3ZhbC4gSWYgdGhlIHRhcmdldCBpcyB0aGUgbGFz" + + "dCByZWdpc3RlcmVkCmNsdXN0ZXIsIHJlYWwgYGRvd25gIGFsc28gZGVzdHJveXMgdGhlIGNvbnRy" + + "b2wgcGxhbmUuIEdldCBleHBsaWNpdCBjb25maXJtYXRpb24KZm9yIGJvdGggcmVtb3ZhbHMgYmVm" + + "b3JlIGNvbnRpbnVpbmcuIFRoZW4gcHJldmlldyBhbmQgZXhlY3V0ZSB3aXRoIHRoZSBzYW1lCnBy" + + "ZWZpeDoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAog" + + "IC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1j" + + "b21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAt" + + "LWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRy" + + "b2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBs" + + "YW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4g" + + "XAogIGRvd24gLS1wbGFuLW9ubHkgXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNs" + + "dXN0ZXItbmFtZT4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+CgpudmNmLWNsaSAtLWNvbmZpZyA8Y29u" + + "ZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mv" + + "c2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9udmNm" + + "LWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWluIFwKICAtLWNvbnRyb2wt" + + "cGxhbmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBcCiAgLS1jb21wdXRlLXBsYW5l" + + "LWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gXAogIC0taWNtcy11cmwgPGNvbXB1dGUt" + + "cmVhY2hhYmxlLWljbXMtdXJsPiBcCiAgZG93biBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUt" + + "cGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4KYGBgCgpSZXBlYXQgYGRv" + + "d25gIGZvciBlYWNoIGNvbXB1dGUgY2x1c3Rlci4gRWFjaCBydW4gZGVzdHJveXMgdGhhdCBjb21w" + + "dXRlIHBsYW5lIGFuZAp1bnJlZ2lzdGVycyBpdHMgSUNNUyByb3cuIEl0IHJlbW92ZXMgdGhlIGNv" + + "bnRyb2wgcGxhbmUgb25seSBhZnRlciBubyBjbHVzdGVyCnJlZ2lzdHJhdGlvbnMgcmVtYWluLgpQ" + + "SwcIlmO8WRIwAAASMAAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA7AAkAZGF0YS9udmNmLXNl" + + "bGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhIj" + + "IERlYnVnZ2luZyBSZWZlcmVuY2UKClJlY2lwZXMgZm9yIGRpYWdub3NpbmcgYW5kIGZpeGluZyBj" + + "b21tb24gTlZDRiBzZWxmLW1hbmFnZWQgc3RhY2sgZmFpbHVyZXMuCgojIyBRdWljayBTdGF0dXMg" + + "Q29tbWFuZHMKCmBgYGJhc2gKIyBBbGwgcG9kcyBhY3Jvc3MgYWxsIG5hbWVzcGFjZXMKa3ViZWN0" + + "bCBnZXQgcG9kcyAtQSAtbyB3aWRlCgojIFBvZHMgaW4gYSBzcGVjaWZpYyBuYW1lc3BhY2UKa3Vi" + + "ZWN0bCBnZXQgcG9kcyAtbiA8bmFtZXNwYWNlPgoKIyBBbGwgaGVsbSByZWxlYXNlcwpoZWxtIGxp" + + "c3QgLUEKCiMgUmVjZW50IGV2ZW50cyAobW9zdCB1c2VmdWwgZm9yIGRpYWdub3NpbmcgZmFpbHVy" + + "ZXMpCmt1YmVjdGwgZ2V0IGV2ZW50cyAtbiA8bmFtZXNwYWNlPiAtLXNvcnQtYnk9Jy5sYXN0VGlt" + + "ZXN0YW1wJwoKIyBEZXNjcmliZSBhIHNwZWNpZmljIHBvZCAoc2hvd3MgZXZlbnRzLCBjb25kaXRp" + + "b25zLCB2b2x1bWVzKQprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5h" + + "bWU+CmBgYAoKIyMgRmFpbHVyZTogSW1hZ2VQdWxsQmFja09mZgoKIyMjIFN5bXB0b21zCgpgYGB0" + + "ZXh0Ck5BTUUgICAgICAgICAgIFJFQURZICAgU1RBVFVTICAgICAgICAgICAgIFJFU1RBUlRTICAg" + + "QUdFCmNhc3NhbmRyYS0wICAgIDAvMSAgICAgSW1hZ2VQdWxsQmFja09mZiAgIDAgICAgICAgICAg" + + "NW0KYGBgCgpFdmVudHMgc2hvdzoKCmBgYHRleHQKRmFpbGVkIHRvIHB1bGwgaW1hZ2UgIm52Y3Iu" + + "aW8vLi4uL2ltYWdlOnRhZyI6IDQwMSBVbmF1dGhvcml6ZWQKYGBgCgojIyMgRGlhZ25vc2lzCgpg" + + "YGBiYXNoCiMgQ2hlY2sgd2hhdCBpbWFnZSBpcyBmYWlsaW5nCmt1YmVjdGwgZGVzY3JpYmUgcG9k" + + "IC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gfCBncmVwIC1BNSAiRXZlbnRzOiIKCiMgQ2hlY2sg" + + "aWYgcHVsbCBzZWNyZXQgZXhpc3RzIGluIHRoZSBuYW1lc3BhY2UKa3ViZWN0bCBnZXQgc2VjcmV0" + + "IG52Y3ItY3JlZHMgLW4gPG5hbWVzcGFjZT4KCiMgQ2hlY2sgaWYgdGhlIHBvZCBzcGVjIGhhcyBp" + + "bWFnZVB1bGxTZWNyZXRzCmt1YmVjdGwgZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+" + + "IC1vIGpzb25wYXRoPSd7LnNwZWMuaW1hZ2VQdWxsU2VjcmV0c30nCgojIENoZWNrIGlmIHRoZSBT" + + "ZXJ2aWNlQWNjb3VudCBoYXMgaW1hZ2VQdWxsU2VjcmV0cwprdWJlY3RsIGdldCBzYSA8c2EtbmFt" + + "ZT4gLW4gPG5hbWVzcGFjZT4gLW8ganNvbnBhdGg9J3suaW1hZ2VQdWxsU2VjcmV0c30nCmBgYAoK" + + "IyMjIEZpeGVzCgoxLiAqKlNlY3JldCBtaXNzaW5nIGluIG5hbWVzcGFjZSoqOiBDcmVhdGUgaXQK" + + "CiAgIGBgYGJhc2gKICAga3ViZWN0bCBjcmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNy" + + "LWNyZWRzIFwKICAgICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAgLS1kb2NrZXItdXNl" + + "cm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgICAgLS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tF" + + "WSIgXAogICAgIC0tbmFtZXNwYWNlPTxuYW1lc3BhY2U+IFwKICAgICAtLWRyeS1ydW49Y2xpZW50" + + "IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KICAgYGBgCgoyLiAqKlNlY3JldCBleGlzdHMg" + + "YnV0IHBvZCBkb2Vzbid0IHJlZmVyZW5jZSBpdCoqOiBUaGUgY2hhcnQgbmVlZHMgYGltYWdlUHVs" + + "bFNlY3JldHNgIGNvbmZpZ3VyZWQgdmlhIGhlbG1maWxlIHZhbHVlcy4gU2VlIFtwdWxsLXNlY3Jl" + + "dHMubWRdKHB1bGwtc2VjcmV0cy5tZCkuCgozLiAqKkNoYXJ0IGRvZXNuJ3Qgc3VwcG9ydCBpbWFn" + + "ZVB1bGxTZWNyZXRzKiogKG9wZW5iYW8sIGludm9jYXRpb24tc2VydmljZSwgZXNzLWFwaSwgbm90" + + "YXJ5LXNlcnZpY2UpOiBQYXRjaCBTZXJ2aWNlQWNjb3VudHMgYW5kIHJlc3RhcnQgcG9kcy4gU2Vl" + + "IFtwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0cy5tZCkuCgo0LiAqKldyb25nIGNyZWRlbnRp" + + "YWxzIGluIHNlY3JldCoqOiBEZWxldGUgYW5kIHJlY3JlYXRlCgogICBgYGBiYXNoCiAgIGt1YmVj" + + "dGwgZGVsZXRlIHNlY3JldCBudmNyLWNyZWRzIC1uIDxuYW1lc3BhY2U+CiAgICMgUmVjcmVhdGUg" + + "d2l0aCBjb3JyZWN0IGNyZWRlbnRpYWxzCiAgIGBgYAoKIyMgRmFpbHVyZTogSW5pdDowLzEgU3R1" + + "Y2sgKFZhdWx0IEFnZW50KQoKIyMjIFN5bXB0b21zCgpTZXJ2aWNlIHBvZHMgc3R1Y2sgaW4gYElu" + + "aXQ6MC8xYCBmb3IgbWludXRlczoKCmBgYGJhc2gKTkFNRSAgICAgICAgICAgICAgICAgICAgICAg" + + "IFJFQURZICAgU1RBVFVTICAgICBSRVNUQVJUUyAgIEFHRQpudmNmLWFwaS03ZjRjNzZmNzg4LTQ0" + + "dmx0ICAwLzIgICAgIEluaXQ6MC8xICAgMCAgICAgICAgICAxMG0KYGBgCgojIyMgRGlhZ25vc2lz" + + "CgpUaGUgaW5pdCBjb250YWluZXIgaXMgdGhlIHZhdWx0LWFnZW50LWluaXQgaW5qZWN0b3Igd2Fp" + + "dGluZyBmb3IgT3BlbkJhby4KCmBgYGJhc2gKIyBDaGVjayBPcGVuQmFvIHBvZHMKa3ViZWN0bCBn" + + "ZXQgcG9kcyAtbiB2YXVsdC1zeXN0ZW0KCiMgQ2hlY2sgaWYgT3BlbkJhbyBtaWdyYXRpb24gam9i" + + "IHJhbgprdWJlY3RsIGdldCBqb2JzIC1uIHZhdWx0LXN5c3RlbQoKIyBDaGVjayBPcGVuQmFvIHBv" + + "ZCBsb2dzCmt1YmVjdGwgbG9ncyAtbiB2YXVsdC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXItMCAtYyBv" + + "cGVuYmFvCgojIENoZWNrIGluaXQgY29udGFpbmVyIGxvZ3Mgb24gdGhlIHN0dWNrIHBvZAprdWJl" + + "Y3RsIGxvZ3MgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiAtYyB2YXVsdC1hZ2VudC1pbml0CmBg" + + "YAoKIyMjIEZpeGVzCgoxLiAqKk9wZW5CYW8gcG9kcyBub3QgcnVubmluZyoqOiBDaGVjayB0aGVp" + + "ciBldmVudHMgZm9yIGltYWdlIHB1bGwgaXNzdWVzLCByZXNvdXJjZSBpc3N1ZXMsIGV0Yy4KCjIu" + + "ICoqT3BlbkJhbyBtaWdyYXRpb24gam9iIGRpZG4ndCBydW4qKjogVGhpcyBoYXBwZW5zIHdoZW4g" + + "YGhlbG1maWxlIHN5bmNgIHdhcyBpbnRlcnJ1cHRlZC4gRGVzdHJveSBhbmQgcmUtc3luYyBvcGVu" + + "YmFvOgoKICAgYGBgYmFzaAogICBIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3Rv" + + "ciBuYW1lPW9wZW5iYW8tc2VydmVyIGRlc3Ryb3kKICAga3ViZWN0bCBkZWxldGUgbmFtZXNwYWNl" + + "IHZhdWx0LXN5c3RlbQogICBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgdmF1bHQtc3lzdGVtCiAg" + + "ICMgUmUtY3JlYXRlIHB1bGwgc2VjcmV0IGlmIG5lZWRlZAogICBIRUxNRklMRV9FTlY9PGVudj4g" + + "aGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW9wZW5iYW8tc2VydmVyIHN5bmMKICAgYGBgCgozLiAq" + + "Kk9wZW5CYW8gcG9kcyBydW5uaW5nIGJ1dCBub3QgaW5pdGlhbGl6ZWQqKjogQ2hlY2sgdW5zZWFs" + + "IHN0YXR1czoKCiAgIGBgYGJhc2gKICAga3ViZWN0bCBleGVjIC1uIHZhdWx0LXN5c3RlbSBvcGVu" + + "YmFvLXNlcnZlci0wIC1jIG9wZW5iYW8gLS0gYmFvIHN0YXR1cwogICBgYGAKCjQuICoqYHZhdWx0" + + "LWFnZW50LWluaXRgIGxvZ3MgYGF1dGgvand0L2xvZ2luYCAtPiBgNDAwIC4uLiBubyBrbm93biBr" + + "ZXkgc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlZCB0aGUgdG9rZW4gc2lnbmF0dXJlYCoqCiAgIChjb21t" + + "b24gb24gQUtTLCBhbmQgb24gYW55IGNsdXN0ZXIgd2hvc2UgT0lEQyBpc3N1ZXIgcHVibGlzaGVz" + + "IGEgcm90YXRpbmcgbXVsdGkta2V5IEpXS1MpOgogICB0aGUgT3BlbkJhbyBgYXV0aC9qd3RgIG1l" + + "dGhvZCB3YXMgY29uZmlndXJlZCB3aXRoIGEgc2luZ2xlIHN0YXRpYyBtb3VudGVkIHB1YmxpYyBr" + + "ZXkKICAgKGBqd3RfdmFsaWRhdGlvbl9wdWJrZXlzYCkgaW5zdGVhZCBvZiB0aGUgaXNzdWVyJ3Mg" + + "bGl2ZSBKV0tTLCBzbyBpdCBjYW5ub3QgdmFsaWRhdGUgdGhlCiAgIGNsdXN0ZXItc2lnbmVkIFNl" + + "cnZpY2VBY2NvdW50IHRva2VucyB0aGUgdmF1bHQtYWdlbnRzIHByZXNlbnQuIEV2ZXJ5IHNlcnZp" + + "Y2UncwogICBgdmF1bHQtYWdlbnQtaW5pdGAgdGhlbiBsb29wcyBvbiB0aGF0IDQwMCBhbmQgdGhl" + + "IHBvZCBuZXZlciBsZWF2ZXMgYEluaXQ6MC8xYC4gVGhpcyBpcyB0aGUKICAgYmVoYXZpb3Igb2Yg" + + "dGhlIGJhc2UgZGVmYXVsdCBgb3BlbmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFi" + + "bGVkOiBmYWxzZWA7IHRoZQogICBtaWdyYXRpb24gbG9nIHNob3dzIGBPSURDIGlzc3VlciBkaXNj" + + "b3ZlcnkgaXMgZGlzYWJsZWQuIFVzaW5nIFNlcnZpY2VBY2NvdW50IGlzc3VlciBhbmQKICAgbW91" + + "bnRlZCBwdWJsaWMga2V5IGZhbGxiYWNrYC4gRW5hYmxlIGlzc3VlciBkaXNjb3Zlcnkgc28gdGhl" + + "IG1pZ3JhdGlvbiB1c2VzIHRoZSBsaXZlIEpXS1MsCiAgIHRoZW4gcmUtcnVuIGl0OgoKICAgYGBg" + + "YmFzaAogICAjIEluIHlvdXIgZW52IHZhbHVlcyAoZS5nLiBlbnZpcm9ubWVudHMvPGVudj4ueWFt" + + "bCksIHNldDoKICAgIyAgIG9wZW5iYW86CiAgICMgICAgIG1pZ3JhdGlvbnM6CiAgICMgICAgICAg" + + "aXNzdWVyRGlzY292ZXJ5OgogICAjICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICBrdWJlY3RsIGRl" + + "bGV0ZSBqb2IgLW4gdmF1bHQtc3lzdGVtIG9wZW5iYW8tc2VydmVyLW1pZ3JhdGlvbnMKICAgSEVM" + + "TUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBz" + + "eW5jCiAgIGBgYAoKICAgVGhlIG1pZ3JhdGlvbiBsb2cgc2hvdWxkIHRoZW4gc2hvdyBgUmVjZWl2" + + "ZWQgZGlzY292ZXJ5IGRvY3VtZW50IGZyb20KICAgLi4uLy53ZWxsLWtub3duL29wZW5pZC1jb25m" + + "aWd1cmF0aW9uYCBhbmQgYEZpbmFsIE9wZW5CYW8gSldUIEpXS1MgVVJMIHNldCB0bzoKICAgLi4u" + + "L29wZW5pZC92MS9qd2tzYCwgYW5kIHRoZSBzZXJ2aWNlIHBvZHMgYXV0aGVudGljYXRlIGFuZCBy" + + "ZWFjaCBSZWFkeSB3aXRoaW4gfjEgbWluLgogICBBS1MgY2x1c3RlcnMgd2l0aCB0aGUgY2x1c3Rl" + + "ciBPSURDIGlzc3VlciBlbmFibGVkICh0aGUgYGFrcy1jbHVzdGVyYCBkZWZhdWx0KSBhbHdheXMg" + + "bmVlZAogICB0aGlzIGJlY2F1c2UgdGhlIHN0YXRpYy1wdWJrZXkgZmFsbGJhY2sgY2Fubm90IG1h" + + "dGNoIHRoZSBpc3N1ZXIncyByb3RhdGluZyBzaWduaW5nIGtleXMuCgojIyBGYWlsdXJlOiBPT01L" + + "aWxsZWQgb24gQ2Fzc2FuZHJhCgojIyMgU3ltcHRvbXMKCmBgYHRleHQKTkFNRSAgICAgICAgICBS" + + "RUFEWSAgIFNUQVRVUyAgICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5kcmEtMCAgIDAvMSAgICAgT09N" + + "S2lsbGVkICAzICAgICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAprdWJlY3Rs" + + "IGRlc2NyaWJlIHBvZCAtbiBjYXNzYW5kcmEtc3lzdGVtIGNhc3NhbmRyYS0wIHwgZ3JlcCAtQTMg" + + "Ikxhc3QgU3RhdGUiCmBgYAoKIyMjIEZpeAoKT3ZlcnJpZGUgQ2Fzc2FuZHJhIHJlc291cmNlcyB2" + + "aWEgaGVsbWZpbGUgdmFsdWVzLiBTZWUgRXhhbXBsZSAxIGluCltleGFtcGxlcy5tZF0oLi4vZXhh" + + "bXBsZXMubWQpLgoKYGBgeWFtbAotIGNhc3NhbmRyYToKICAgIHJlc291cmNlczoKICAgICAgbGlt" + + "aXRzOgogICAgICAgIGNwdTogIjgiCiAgICAgICAgbWVtb3J5OiA4MTkyTWkKICAgICAgcmVxdWVz" + + "dHM6CiAgICAgICAgY3B1OiAiMiIKICAgICAgICBtZW1vcnk6IDQwOTZNaQpgYGAKCk5vdGU6IGBy" + + "ZXNvdXJjZVByZXNldGAgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgTlZDRiBjYXNzYW5kcmEgd3Jh" + + "cHBlciBjaGFydC4gVXNlIGV4cGxpY2l0IGByZXNvdXJjZXNgLgoKIyMgRmFpbHVyZTogUG9kcyBT" + + "dHVjayBpbiBQZW5kaW5nCgojIyMgU3ltcHRvbXMKCmBgYHRleHQKTkFNRSAgICAgICAgICBSRUFE" + + "WSAgIFNUQVRVUyAgICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5kcmEtMCAgIDAvMSAgICAgUGVuZGlu" + + "ZyAgIDAgICAgICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIGV2" + + "ZW50cyBmb3Igc2NoZWR1bGluZyBmYWlsdXJlcwprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFt" + + "ZXNwYWNlPiA8cG9kLW5hbWU+CgojIENvbW1vbiBjYXVzZXM6CiMgLSAiMC8xMiBub2RlcyBhcmUg" + + "YXZhaWxhYmxlOiAxMiBub2RlKHMpIGRpZG4ndCBtYXRjaCBQb2QncyBub2RlIGFmZmluaXR5Igoj" + + "IC0gIjAvMTIgbm9kZXMgYXJlIGF2YWlsYWJsZTogMTIgSW5zdWZmaWNpZW50IG1lbW9yeSIKIyAt" + + "ICJwZXJzaXN0ZW50dm9sdW1lY2xhaW0gbm90IGZvdW5kIgpgYGAKCiMjIyBGaXhlcwoKMS4gKipO" + + "b2RlIHNlbGVjdG9yIG1pc21hdGNoKio6IENoZWNrIGBub2RlU2VsZWN0b3JzYCBpbiBlbnZpcm9u" + + "bWVudCBmaWxlCgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZ2V0IG5vZGVzIC0tc2hvdy1sYWJlbHMg" + + "fCBncmVwIG52Y2YKICAgYGBgCgoyLiAqKlN0b3JhZ2UgY2xhc3Mgbm90IGZvdW5kKio6IENoZWNr" + + "IHN0b3JhZ2UgY2xhc3MgZXhpc3RzCgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZ2V0IHN0b3JhZ2Vj" + + "bGFzcwogICBgYGAKCjMuICoqSW5zdWZmaWNpZW50IHJlc291cmNlcyoqOiBDaGVjayBub2RlIGNh" + + "cGFjaXR5CgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZGVzY3JpYmUgbm9kZSA8bm9kZS1uYW1lPiB8" + + "IGdyZXAgLUE1ICJBbGxvY2F0ZWQgcmVzb3VyY2VzIgogICBgYGAKCiMjIEZhaWx1cmU6IEhlbG0g" + + "UmVsZWFzZSBpbiBGYWlsZWQgU3RhdGUKCiMjIyBTeW1wdG9tcwoKYGBgYmFzaApoZWxtIGxpc3Qg" + + "LUEKIyBTaG93cyByZWxlYXNlIHdpdGggU1RBVFVTOiBmYWlsZWQKYGBgCgpSZS1ydW5uaW5nIGBo" + + "ZWxtZmlsZSBzeW5jYCBhcHBlYXJzIHRvIHN1Y2NlZWQgYnV0IHNlcnZpY2VzIGRvbid0IHdvcmsg" + + "KG1pZ3JhdGlvbnMgc2tpcHBlZCkuCgojIyMgRGlhZ25vc2lzCgpgYGBiYXNoCmhlbG0gaGlzdG9y" + + "eSA8cmVsZWFzZS1uYW1lPiAtbiA8bmFtZXNwYWNlPgpgYGAKCiMjIyBGaXgKCk11c3QgZGVzdHJv" + + "eSB0aGUgZmFpbGVkIHJlbGVhc2UgYW5kIHJlLXN5bmMgKG5vdCBqdXN0IGFwcGx5KToKCmBgYGJh" + + "c2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT08cmVsZWFzZT4g" + + "ZGVzdHJveQojIElmIG5hbWVzcGFjZSBuZWVkcyBjbGVhbnVwOgprdWJlY3RsIGRlbGV0ZSBuYW1l" + + "c3BhY2UgPG5hbWVzcGFjZT4Ka3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIDxuYW1lc3BhY2U+CiMg" + + "UmUtY3JlYXRlIHB1bGwgc2VjcmV0IGlmIG5lZWRlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZp" + + "bGUgLS1zZWxlY3RvciBuYW1lPTxyZWxlYXNlPiBzeW5jCmBgYAoKIyMgRmFpbHVyZTogQWNjb3Vu" + + "dCBCb290c3RyYXAgSm9iIEZhaWxlZAoKIyMjIFN5bXB0b21zCgpTZXJ2aWNlcyBkZXBsb3kgYnV0" + + "IGZ1bmN0aW9ucyBjYW4ndCBiZSBjcmVhdGVkLiBFdmVudHMgc2hvdyBib290c3RyYXAgam9iIGZh" + + "aWx1cmUuCgojIyMgRGlhZ25vc2lzCgpgYGBiYXNoCiMgQ2hlY2sgYm9vdHN0cmFwIGpvYiBzdGF0" + + "dXMKa3ViZWN0bCBnZXQgam9icyAtbiBudmNmCgojIEdldCBsb2dzIChqb2IgYXV0by1kZWxldGVz" + + "IGFmdGVyIH41IG1pbnV0ZXMpCmt1YmVjdGwgbG9ncyBqb2IvbnZjZi1hcGktYWNjb3VudC1ib290" + + "c3RyYXAgLW4gbnZjZgoKIyBDaGVjayBBUEkgbG9ncwprdWJlY3RsIGxvZ3MgLW4gbnZjZiAtbCBh" + + "cHAua3ViZXJuZXRlcy5pby9uYW1lPW52Y2YtYXBpIC0tdGFpbD0xMDAKYGBgCgojIyMgQ29tbW9u" + + "IENhdXNlcwoKMS4gKipXcm9uZyBiYXNlNjQgY3JlZGVudGlhbHMqKjogQ3JlZGVudGlhbHMgaW4g" + + "YHNlY3JldHMvPGVudj4tc2VjcmV0cy55YW1sYCBtdXN0IGJlIGAkb2F1dGh0b2tlbjpBUElfS0VZ" + + "YCBiYXNlNjQtZW5jb2RlZCwgbm90IGp1c3QgdGhlIEFQSSBrZXkKCiAgIGBgYGJhc2gKICAgIyBW" + + "ZXJpZnkgeW91ciBlbmNvZGVkIGNyZWRlbnRpYWwKICAgZWNobyAnWU9VUl9CQVNFNjRfU1RSSU5H" + + "JyB8IGJhc2U2NCAtZAogICAjIFNob3VsZCBvdXRwdXQ6ICRvYXV0aHRva2VuOm52YXBpLXh4eHh4" + + "CiAgIGBgYAoKMi4gKipSZWdpc3RyeSB1bnJlYWNoYWJsZSoqOiBBUEkgY2FuJ3QgcmVhY2ggdGhl" + + "IHJlZ2lzdHJ5IHNwZWNpZmllZCBpbiBgYWNjb3VudEJvb3RzdHJhcC5yZWdpc3RyeUNyZWRlbnRp" + + "YWxzYAoKIyMjIEZpeAoKRml4IGNyZWRlbnRpYWxzIGluIHNlY3JldHMgZmlsZSwgdGhlbiByZWNv" + + "dmVyIHNlcnZpY2VzIHdpdGhvdXQgZGVzdHJveWluZyBkZXBlbmRlbmNpZXM6CgpgYGBiYXNoCkhF" + + "TE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9c2Vydmlj" + + "ZXMgZGVzdHJveQprdWJlY3RsIGRlbGV0ZSBuYW1lc3BhY2UgbnZjZiBhcGkta2V5cyBlc3Mgc2lz" + + "IC0taWdub3JlLW5vdC1mb3VuZAprdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgbnZjZiAmJiBrdWJl" + + "Y3RsIGNyZWF0ZSBuYW1lc3BhY2UgYXBpLWtleXMgJiYgXAogIGt1YmVjdGwgY3JlYXRlIG5hbWVz" + + "cGFjZSBlc3MgJiYga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIHNpcwojIFJlLWNyZWF0ZSBwdWxs" + + "IHNlY3JldHMgaWYgbmVlZGVkCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9y" + + "IHJlbGVhc2UtZ3JvdXA9c2VydmljZXMgc3luYwpgYGAKCiMjIEZhaWx1cmU6IE5WQ0EgQ2xlYW51" + + "cCBTdHVjayAoRmluYWxpemVycykKCiMjIyBTeW1wdG9tcwoKQ29tcHV0ZS1wbGFuZSBjbGVhbnVw" + + "IGhhbmdzLiBOYW1lc3BhY2VzCnN0dWNrIGluIGBUZXJtaW5hdGluZ2A6CgpgYGBiYXNoCmt1YmVj" + + "dGwgZ2V0IG5zCiMgbnZjYS1vcGVyYXRvciAgICBUZXJtaW5hdGluZyAgIDEwbQojIG52Y2YtYmFj" + + "a2VuZCAgICAgVGVybWluYXRpbmcgICAxMG0KYGBgCgojIyMgRml4CgpSdW4gdGhpcyBvbmx5IGFn" + + "YWluc3QgdGhlIGNvbXB1dGUgY29udGV4dCwgYWZ0ZXIgdGhlIG5vcm1hbCBjb21wdXRlLXBsYW5l" + + "CnRlYXJkb3duIGhhcyBmYWlsZWQuIFJlbW92ZSBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQg" + + "Y3VzdG9tIHJlc291cmNlcyBhbmQKZm9yY2UtZGVsZXRlIHN0dWNrIG5hbWVzcGFjZXM6CgpgYGBi" + + "YXNoCmV4cG9ydCBDT01QVVRFX0NPTlRFWFQ9PGNvbXB1dGUtcGxhbmUtY29udGV4dD4KCiMgUmVt" + + "b3ZlIGZpbmFsaXplcnMgZnJvbSBOVkNGQmFja2VuZCByZXNvdXJjZXMKa3ViZWN0bCAtLWNvbnRl" + + "eHQgIiRDT01QVVRFX0NPTlRFWFQiIGdldCBudmNmYmFja2VuZHMgLUEgLW8ganNvbiB8IFwKICBq" + + "cSAnLml0ZW1zW10gfCAubWV0YWRhdGEubmFtZXNwYWNlICsgIi8iICsgLm1ldGFkYXRhLm5hbWUn" + + "IC1yIHwgXAogIHhhcmdzIC1Je30gc2ggLWMgJ2NvbnRleHQ9IiQxIjsgbnM9IiR7MiUlLyp9Ijsg" + + "bmFtZT0iJHsyIyMqL30iOyBrdWJlY3RsIC0tY29udGV4dCAiJGNvbnRleHQiIHBhdGNoIG52Y2Zi" + + "YWNrZW5kICIkbmFtZSIgLW4gIiRucyIgLS10eXBlPW1lcmdlIC1wICJ7XCJtZXRhZGF0YVwiOntc" + + "ImZpbmFsaXplcnNcIjpbXX19IicgXyAiJENPTVBVVEVfQ09OVEVYVCIge30KCiMgRm9yY2UtZGVs" + + "ZXRlIHN0dWNrIG5hbWVzcGFjZXMgYnkgY2xlYXJpbmcgdGhlaXIgZmluYWxpemVycwpmb3IgbnMg" + + "aW4gbnZjYS1vcGVyYXRvciBudmNmLWJhY2tlbmQ7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgIiRD" + + "T01QVVRFX0NPTlRFWFQiIGdldCBuYW1lc3BhY2UgIiRucyIgLW8ganNvbiAyPi9kZXYvbnVsbCB8" + + "IFwKICAgIGpxICcuc3BlYy5maW5hbGl6ZXJzID0gW10nIHwgXAogICAga3ViZWN0bCAtLWNvbnRl" + + "eHQgIiRDT01QVVRFX0NPTlRFWFQiIHJlcGxhY2UgXAogICAgICAtLXJhdyAiL2FwaS92MS9uYW1l" + + "c3BhY2VzLyRucy9maW5hbGl6ZSIgLWYgLSAyPi9kZXYvbnVsbApkb25lCmBgYAoKIyMgRmFpbHVy" + + "ZTogTlZDQSBPcGVyYXRvciBNaXNzaW5nIG9yIE5vdCBSZWFkeQoKIyMjIFN5bXB0b21zCgpBZnRl" + + "ciBjb21wdXRlLXBsYW5lIGluc3RhbGwgY29tcGxldGVzLCBubyBgbnZjYS1vcGVyYXRvcmAgRGVw" + + "bG95bWVudCBleGlzdHMsIG9yCml0IGV4aXN0cyBidXQgcG9kcyBhcmUgbm90IHJlYWR5OgoKYGBg" + + "YmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgZGVwbG95" + + "bWVudCBudmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yCmt1YmVjdGwgLS1jb250ZXh0" + + "IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGdldCBwb2RzIC1uIG52Y2Etb3BlcmF0b3IKYGBgCgoj" + + "IyMgRGlhZ25vc2lzIGFuZCBGaXhlcwoKRmlyc3QgaWRlbnRpZnkgd2hldGhlciB0aGUgaW5zdGFs" + + "bGF0aW9uIHVzZWQgdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93IG9yIHRoZQpDTEkgcHJvZmlsZSBm" + + "bG93LiBSZS1ydW4gb25seSB0aGF0IGZsb3cncyByZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlv" + + "biBzdGVwcwpmcm9tIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0ZS1w" + + "bGFuZS1pbnN0YWxsYXRpb24ubWQpLiBEbyBub3QKc3Vic3RpdHV0ZSBvbmUgaGFuZG9mZiBmb3Ig" + + "dGhlIG90aGVyLgoKSWYgaW5zdGFsbGF0aW9uIHN1Y2NlZWRzIGJ1dCBwb2RzIHN0aWxsIGZhaWws" + + "IGluc3BlY3QgdGhlIGNvbXB1dGUgY29udGV4dDoKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQg" + + "PGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZGVzY3JpYmUgZGVwbG95IG52Y2Etb3BlcmF0b3IgXAog" + + "IC1uIG52Y2Etb3BlcmF0b3IKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4" + + "dD4gbG9ncyBkZXBsb3ltZW50L252Y2Etb3BlcmF0b3IgXAogIC1uIG52Y2Etb3BlcmF0b3IgLS10" + + "YWlsPTIwMAprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgbnZj" + + "ZmJhY2tlbmQgLW4gbnZjYS1vcGVyYXRvcgpgYGAKCkZvciBwcml2YXRlIHJlZ2lzdHJ5IGZhaWx1" + + "cmVzLCB2ZXJpZnkgdGhhdCB0aGUgcHVsbCBzZWNyZXQgZXhpc3RzIGluCmBudmNhLW9wZXJhdG9y" + + "YC4gVGhlIGNoYXJ0IGFuZCBvcGVyYXRvciBtaXJyb3IgaXQgdG8gYG52Y2Etc3lzdGVtYDsgZG8g" + + "bm90IHVzZSBhCmJyb2FkZXIgbWFudWFsIG5hbWVzcGFjZSBsb29wLiBTZWUKW3B1bGwtc2VjcmV0" + + "cy5tZF0ocHVsbC1zZWNyZXRzLm1kI2NvbXB1dGUtcGxhbmUtc2VjcmV0KS4KCiMjIEZhaWx1cmU6" + + "IEdhdGV3YXkgRW5kcG9pbnQgQ2hhbmdlZAoKIyMjIFN5bXB0b21zCgpSZXF1ZXN0cyB0aHJvdWdo" + + "IHRoZSBjb25maWd1cmVkIHJvdXRlIGRvbWFpbiBmYWlsIGFmdGVyIHRoZSBHYXRld2F5IG9yIGl0" + + "cyBsb2FkIGJhbGFuY2VyIGlzIHJlcGxhY2VkLiBUaGUgR2F0ZXdheSByZXBvcnRzIGEgbmV3IGVu" + + "ZHBvaW50LgoKIyMjIERpYWdub3NpcwoKYGBgYmFzaApHQVRFV0FZX0FERFI9JChrdWJlY3RsIC0t" + + "Y29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1nYXRl" + + "d2F5IC1uIGVudm95LWdhdGV3YXkgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNb" + + "MF0udmFsdWV9JykKdGVzdCAtbiAiJEdBVEVXQVlfQUREUiIKZGlnICtzaG9ydCAiYXBpLjxkb21h" + + "aW4+IgpjdXJsIC1IICJIb3N0OiBhcGkuPGRvbWFpbj4iICJodHRwOi8vJEdBVEVXQVlfQUREUi9o" + + "ZWFsdGgiCgojIENoZWNrIGRpcmVjdCBhZGRyZXNzIGZpZWxkcyB1c2VkIGJ5IGEgc3BsaXQgZGVw" + + "bG95bWVudApncmVwIG52Y2ZOYXRzU2VydmljZVVSTCBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdl" + + "ZC9lbnZpcm9ubWVudHMvPGVudj4ueWFtbApncmVwIC1FICdpY21zU2VydmljZXxyZXZhbFNlcnZp" + + "Y2V8bmF0cycgXAogIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50" + + "cy88ZW52Pi55YW1sCmBgYAoKIyMjIEZpeAoKS2VlcCBgZ2xvYmFsLmRvbWFpbmAsIHJvdXRlIGhv" + + "c3RuYW1lcywgYW5kIEhvc3Qgb3ZlcnJpZGVzIHVuY2hhbmdlZC4gVXBkYXRlIEROUwpvciB0aGUg" + + "ZGlyZWN0IGNsaWVudCBkZXN0aW5hdGlvbi4gRm9yIHNwbGl0IGRlcGxveW1lbnRzLCB1cGRhdGUg" + + "b25seSBkaXJlY3QKR2F0ZXdheS1hZGRyZXNzIGZpZWxkcyBhbmQgcmVmcmVzaCByZWdpc3RyYXRp" + + "b24gYW5kIGluc3RhbGxhdGlvbiB0aHJvdWdoIHRoZQpzYW1lIHNlbGVjdGVkIGhhbmRvZmYuIFNl" + + "ZQpbRXhhbXBsZSA0XSguLi9leGFtcGxlcy5tZCNleGFtcGxlLTQtcmVjb3Zlci1mcm9tLWEtZ2F0" + + "ZXdheS1lbmRwb2ludC1jaGFuZ2UpLgoKIyMgVXNlZnVsIE5hbWVzcGFjZS10by1TZXJ2aWNlIE1h" + + "cHBpbmcKClF1aWNrIHJlZmVyZW5jZSBmb3Igd2hpY2ggc2VydmljZXMgcnVuIGluIHdoaWNoIG5h" + + "bWVzcGFjZToKCnwgTmFtZXNwYWNlIHwgU2VydmljZXMgfAp8LS0tLS0tLS0tLS18LS0tLS0tLS0t" + + "LXwKfCBuYXRzLXN5c3RlbSB8IG5hdHMgfAp8IGNhc3NhbmRyYS1zeXN0ZW0gfCBjYXNzYW5kcmEg" + + "fAp8IHZhdWx0LXN5c3RlbSB8IG9wZW5iYW8tc2VydmVyIHwKfCBudmNmIHwgYXBpLCBpbnZvY2F0" + + "aW9uLXNlcnZpY2UsIGdycGMtcHJveHksIG5vdGFyeS1zZXJ2aWNlLCByZXZhbCwgbGxtLXJlcXVl" + + "c3Qtcm91dGVyLCBsbG0tYXBpLWdhdGV3YXkgfAp8IGFwaS1rZXlzIHwgYXBpLWtleXMsIGFkbWlu" + + "LWlzc3Vlci1wcm94eSB8CnwgZXNzIHwgZXNzLWFwaSB8Cnwgc2lzIHwgc2lzIHwKfCBlbnZveS1n" + + "YXRld2F5LXN5c3RlbSB8IGVudm95IGdhdGV3YXkgKGluZ3Jlc3MgY29udHJvbGxlcikgfAp8IGVu" + + "dm95LWdhdGV3YXkgfCBnYXRld2F5IHJlc291cmNlICsgcm91dGVzIHwKUEsHCLV6cDu1MAAAtTAA" + + "AFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAARAAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5z" + + "dGFsbGF0aW9uL3JlZmVyZW5jZXMvaGVsbWZpbGUtc3RydWN0dXJlLm1kVVQFAAEAps4SIyBIZWxt" + + "ZmlsZSBTdHJ1Y3R1cmUgUmVmZXJlbmNlCgojIyBEaXJlY3RvcnkgTGF5b3V0CgpgYGBiYXNoCm52" + + "Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrLwp8LS0gaGVsbWZpbGUuZC8KfCAgIHwtLSAwMS1kZXBlbmRl" + + "bmNpZXMueWFtbC5nb3RtcGwgICMgTkFUUywgQ2Fzc2FuZHJhLCBPcGVuQmFvCnwgICB8LS0gMDIt" + + "Y29yZS55YW1sLmdvdG1wbCAgICAgICAgICAjIE5WQ0Ygc2VydmljZXMgKyBpbmdyZXNzCnwgICBg" + + "LS0gMDMtb2JzZXJ2YWJpbGl0eS55YW1sLmdvdG1wbCAjIE9ic2VydmFiaWxpdHkgc3RhY2sgKG9w" + + "dGlvbmFsKQp8LS0gZW52aXJvbm1lbnRzLwp8ICAgfC0tIGJhc2UueWFtbCAgICAgICAgICAgICAg" + + "ICAgICAgIyBEZWZhdWx0IHZhbHVlcyAoYWxsIGVudmlyb25tZW50cykKfCAgIGAtLSA8ZW52LW5h" + + "bWU+LnlhbWwgICAgICAgICAgICAgICMgUGVyLWVudmlyb25tZW50IG92ZXJyaWRlcwp8LS0gc2Vj" + + "cmV0cy8KfCAgIGAtLSA8ZW52LW5hbWU+LXNlY3JldHMueWFtbCAgICAgICMgU2Vuc2l0aXZlIHZh" + + "bHVlcyAocmVnaXN0cnkgY3JlZHMsIHBhc3N3b3JkcykKYC0tIGdsb2JhbC55YW1sLmdvdG1wbCAg" + + "ICAgICAgICAgICAgICMgR28gdGVtcGxhdGUgdGhhdCBjb25zdHJ1Y3RzIHBlci1jaGFydCB2YWx1" + + "ZXMKCm52Y2YtY29tcHV0ZS1wbGFuZS1zdGFjay8KfC0tIGhlbG1maWxlLmQvCnwgICB8LS0gMDEt" + + "ZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsICAjIENvbXB1dGUgcGxhbmUgZGVwZW5kZW5jeSBjb21w" + + "b25lbnRzCnwgICBgLS0gMDItbnZjYS55YW1sLmdvdG1wbCAgICAgICAgICAjIG52Y2Etb3BlcmF0" + + "b3IgY2hhcnQgYW5kIG52Y2EgY29uZmlndXJhdGlvbgp8LS0gZW52aXJvbm1lbnRzLwp8ICAgfC0t" + + "IGJhc2UueWFtbCAgICAgICAgICAgICAgICAgICAgIyBEZWZhdWx0IHZhbHVlcyAoYWxsIGVudmly" + + "b25tZW50cykKfCAgIGAtLSA8ZW52LW5hbWU+LnlhbWwgICAgICAgICAgICAgICMgUGVyLWVudmly" + + "b25tZW50IG92ZXJyaWRlcwpgLS0gZ2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAgIyBH" + + "byB0ZW1wbGF0ZSB0aGF0IGNvbnN0cnVjdHMgcGVyLWNoYXJ0IHZhbHVlcwpgYGAKClRoZXNlIHN0" + + "YWNrcyBoYXZlIHNlcGFyYXRlIGVudmlyb25tZW50cyBhbmQgY2x1c3RlciBjb250ZXh0cy4gVGhl" + + "IEhlbG1maWxlCnZhbHVlcyBmbG93IGF1dGhvcnMgYm90aCBlbnZpcm9ubWVudCBmaWxlcy4gVGhl" + + "IENMSSBwcm9maWxlIGZsb3cgaW5zdGVhZCB1c2VzCnRoZSBDTEktZ2VuZXJhdGVkIGNvbnRyb2wt" + + "cGxhbmUgcHJvZmlsZSBhcyBpdHMgZW5kcG9pbnQgc291cmNlLiBEbyBub3QgbWl4IHRoZQpoYW5k" + + "b2Zmcy4gU2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFu" + + "ZS1pbnN0YWxsYXRpb24ubWQpLgoKIyMgR290bXBsIEZpbGVzIGFuZCBUaGVpciBSZWxlYXNlcwoK" + + "IyMjIDAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1l" + + "c3BhY2UgfCBOb3RlcyB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8" + + "IG5hdHMgfCBoZWxtLW52Y2YtbmF0cyB8IG5hdHMtc3lzdGVtIHwgTWVzc2FnaW5nIHwKfCBvcGVu" + + "YmFvLXNlcnZlciB8IGhlbG0tbnZjZi1vcGVuYmFvLXNlcnZlciB8IHZhdWx0LXN5c3RlbSB8IFNl" + + "Y3JldHMgbWFuYWdlbWVudCwgZGVwZW5kcyBvbiBuYXRzIHwKfCBjYXNzYW5kcmEgfCBoZWxtLW52" + + "Y2YtY2Fzc2FuZHJhIHwgY2Fzc2FuZHJhLXN5c3RlbSB8IERhdGFiYXNlIHwKClVzZXMgYDw8OiAq" + + "ZGVwZW5kZW5jeWAgdGVtcGxhdGUgaW5oZXJpdGFuY2Ugd2l0aCBgcmVsZWFzZS1ncm91cDogZGVw" + + "ZW5kZW5jaWVzYCBsYWJlbC4KCiMjIyAwMi1jb3JlLnlhbWwuZ290bXBsCgp8IFJlbGVhc2UgfCBD" + + "aGFydCB8IE5hbWVzcGFjZSB8IExhYmVsIHwKfC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tLS0tLS0t" + + "fC0tLS0tLS18CnwgYXBpLWtleXMgfCBoZWxtLW52Y2YtYXBpLWtleXMgfCBhcGkta2V5cyB8IHNl" + + "cnZpY2VzIHwKfCBzaXMgfCBoZWxtLW52Y2Ytc2lzIHwgc2lzIHwgc2VydmljZXMgfAp8IGFwaSB8" + + "IGhlbG0tbnZjZi1hcGkgfCBudmNmIHwgc2VydmljZXMgfAp8IGludm9jYXRpb24tc2VydmljZSB8" + + "IGhlbG0tbnZjZi1pbnZvY2F0aW9uLXNlcnZpY2UgfCBudmNmIHwgc2VydmljZXMgfAp8IGdycGMt" + + "cHJveHkgfCBoZWxtLW52Y2YtZ3JwYy1wcm94eSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgZXNzLWFw" + + "aSB8IGhlbG0tbnZjZi1lc3MtYXBpIHwgZXNzIHwgc2VydmljZXMgfAp8IG5vdGFyeS1zZXJ2aWNl" + + "IHwgaGVsbS1udmNmLW5vdGFyeS1zZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCByZXZhbCB8" + + "IGhlbG0tcmV2YWwgfCBudmNmIHwgc2VydmljZXMgfAp8IGxsbS1yZXF1ZXN0LXJvdXRlciB8IG52" + + "Y2YvaGVsbS1udmNmLWxsbS1yZXF1ZXN0LXJvdXRlciB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgbGxt" + + "LWFwaS1nYXRld2F5IHwgbnZjZi9oZWxtLW52Y2YtbGxtLWFwaS1nYXRld2F5IHwgbnZjZiB8IHNl" + + "cnZpY2VzIHwKfCBhZG1pbi1pc3N1ZXItcHJveHkgfCBoZWxtLWFkbWluLXRva2VuLWlzc3Vlci1w" + + "cm94eSB8IGFwaS1rZXlzIHwgKG5vIHJlbGVhc2UtZ3JvdXAgbGFiZWwpIHwKfCBpbmdyZXNzIHwg" + + "bnZjZi1nYXRld2F5LXJvdXRlcyB8IGVudm95LWdhdGV3YXktc3lzdGVtIHwgaW5ncmVzcyB8CgpN" + + "b3N0IHNlcnZpY2VzIHVzZSBgaW5oZXJpdDogW3t0ZW1wbGF0ZTogc2VydmljZX1dYC4gTExNIHJl" + + "bGVhc2VzIHVzZSBPQ0kgY2hhcnRzIGZyb20gdGhlIGBudmNmYCByZXBvc2l0b3J5IHdpdGggc3Rh" + + "bmRhbG9uZSBgdmFsdWVzOiBbLi4vZ2xvYmFsLnlhbWwuZ290bXBsXWAgYmxvY2tzOyB0aGV5IGFy" + + "ZSBnYXRlZCBvbiBgYWRkb25zLmxsbS5lbmFibGVkYC4gYGFkbWluLWlzc3Vlci1wcm94eWAgYW5k" + + "IGBpbmdyZXNzYCBoYXZlIHN0YW5kYWxvbmUgYHZhbHVlczpgIGJsb2Nrcy4KCiMjIyAwMy1vYnNl" + + "cnZhYmlsaXR5LnlhbWwuZ290bXBsCgp8IFJlbGVhc2UgfCBDaGFydCB8IE5hbWVzcGFjZSB8IExh" + + "YmVsIHwKfC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS18CnwgKG9ic2VydmFi" + + "aWxpdHkgcmVsZWFzZXMpIHwgKHZhcmlvdXMpIHwgb2JzZXJ2YWJpbGl0eSB8IG9ic2VydmFiaWxp" + + "dHkgfAoKR2F0ZWQgb24gb2JzZXJ2YWJpbGl0eS1zcGVjaWZpYyBmbGFncyBpbiB0aGUgZW52aXJv" + + "bm1lbnQgZmlsZS4gU2tpcHBlZCBpZiBkaXNhYmxlZC4KCiMjIFRlbXBsYXRlIEluaGVyaXRhbmNl" + + "CgojIyMgYDw8OiAqZGVwZW5kZW5jeWAgKFlBTUwgbWVyZ2UpCgpVc2VkIGluIGAwMS1kZXBlbmRl" + + "bmNpZXMueWFtbC5nb3RtcGxgLiBNZXJnZXMgdGhlIHRlbXBsYXRlJ3MgcHJvcGVydGllcyBpbnRv" + + "IHRoZSByZWxlYXNlLgoKKipHb3RjaGEqKjogWUFNTCBtZXJnZSByZXBsYWNlcyBsaXN0cy4gSWYg" + + "eW91IGFkZCBhIGB2YWx1ZXM6YCBrZXkgdG8gdGhlIHJlbGVhc2UsIGl0ICoqcmVwbGFjZXMqKiB0" + + "aGUgdGVtcGxhdGUncyBgdmFsdWVzOmAgbGlzdCBlbnRpcmVseS4gWW91IG11c3QgcmUtaW5jbHVk" + + "ZSBhbGwgdGVtcGxhdGUgdmFsdWVzOgoKSW4gdGhlIHRlbXBsYXRlIGJlbG93LCBgPHByaXZhdGUt" + + "dmFsdWVzPmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0aGUgaGVsbWZp" + + "bGUgc3RhY2sgcm9vdC4KCmBgYHlhbWwKIyBUZW1wbGF0ZSBkZWZpbmVzOgp0ZW1wbGF0ZXM6CiAg" + + "ZGVwZW5kZW5jeTogJmRlcGVuZGVuY3kKICAgIGNoYXJ0OiBudmNmL2hlbG0tbnZjZi17eyAuUmVs" + + "ZWFzZS5OYW1lIH19CiAgICB2YWx1ZXM6CiAgICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAg" + + "ICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9" + + "fS1zZWNyZXRzLnlhbWwKCiMgV2hlbiBvdmVycmlkaW5nLCBNVVNUIHJlLWluY2x1ZGUgYm90aDoK" + + "LSBuYW1lOiBjYXNzYW5kcmEKICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2ds" + + "b2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + + "ICAgICAjIE11c3QgcmUtaW5jbHVkZQogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVp" + + "cmVkRW52ICJIRUxNRklMRV9FTlYiIH19LXNlY3JldHMueWFtbCAgICMgTXVzdCByZS1pbmNsdWRl" + + "CiAgICAtIGNhc3NhbmRyYTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + + "ICAgICAgICAgICAgICAgICAgIyBZb3VyIG92ZXJyaWRlCiAgICAgICAgcmVzb3VyY2VzOgogICAg" + + "ICAgICAgbGltaXRzOgogICAgICAgICAgICBtZW1vcnk6IDgxOTJNaQpgYGAKCiMjIyBgaW5oZXJp" + + "dGAgKEhlbG1maWxlIG5hdGl2ZSkKClVzZWQgaW4gYDAyLWNvcmUueWFtbC5nb3RtcGxgLiBIZWxt" + + "ZmlsZSdzIG5hdGl2ZSBpbmhlcml0YW5jZSBtZWNoYW5pc20uCgpgYGB5YW1sCi0gbmFtZTogYXBp" + + "CiAgdmVyc2lvbjogMS42LjAKICBuYW1lc3BhY2U6IG52Y2YKICBpbmhlcml0OgogICAgLSB0ZW1w" + + "bGF0ZTogc2VydmljZQpgYGAKCldoZW4gYWRkaW5nIGB2YWx1ZXM6YCB0byBhbiBpbmhlcml0ZWQg" + + "cmVsZWFzZSwgeW91IGFsc28gbmVlZCB0byByZS1pbmNsdWRlIHRoZSB0ZW1wbGF0ZSdzIHZhbHVl" + + "cyBmaWxlcyBzaW5jZSBgdmFsdWVzYCBpcyBhIGxpc3QgdGhhdCBnZXRzIHJlcGxhY2VkLgoKIyMg" + + "VmFsdWVzIFByZWNlZGVuY2UKCkZyb20gbG93ZXN0IHRvIGhpZ2hlc3QgcHJpb3JpdHk6CgoxLiBg" + + "ZW52aXJvbm1lbnRzL2Jhc2UueWFtbGAgLS0gZGVmYXVsdHMgc2hhcmVkIGFjcm9zcyBhbGwgZW52" + + "aXJvbm1lbnRzCjIuIGBlbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgLS0gcGVyLWVudmlyb25tZW50" + + "IG92ZXJyaWRlcwozLiBgZ2xvYmFsLnlhbWwuZ290bXBsYCAtLSBHbyB0ZW1wbGF0ZSBwcm9jZXNz" + + "aW5nIChjb25zdHJ1Y3RzIGNoYXJ0LXNwZWNpZmljIHN0cnVjdHVyZSkKNC4gYDxwcml2YXRlLXZh" + + "bHVlcz4vPGVudj4tc2VjcmV0cy55YW1sYCAtLSBzZW5zaXRpdmUgdmFsdWVzCjUuIElubGluZSBg" + + "dmFsdWVzOmAgYmxvY2tzIG9uIHJlbGVhc2VzIC0tIGhpZ2hlc3QgcHJlY2VkZW5jZQoKIyMgV2hh" + + "dCBnbG9iYWwueWFtbC5nb3RtcGwgUGFzc2VzIFRocm91Z2gKCmBnbG9iYWwueWFtbC5nb3RtcGxg" + + "IHJlYWRzIGZyb20gYC5WYWx1ZXNgICh0aGUgbWVyZ2VkIGVudmlyb25tZW50ICsgZW52LXNwZWNp" + + "ZmljIFlBTUwpIGFuZCBjb25zdHJ1Y3RzIGNoYXJ0LXNwZWNpZmljIHZhbHVlcy4gSXQgb25seSBw" + + "YXNzZXMgdGhyb3VnaCBrZXlzIGl0IGV4cGxpY2l0bHkgcmVmZXJlbmNlczoKCiMjIyBDYXNzYW5k" + + "cmEKCi0gYGNhc3NhbmRyYS5yZXBsaWNhQ291bnRgCi0gYGNhc3NhbmRyYS5pbWFnZS4qYCAocmVn" + + "aXN0cnksIHJlcG9zaXRvcnkpCi0gYGNhc3NhbmRyYS5taWdyYXRpb25zLmltYWdlLipgCi0gYGNh" + + "c3NhbmRyYS5wZXJzaXN0ZW5jZS5zaXplYAotIGBjYXNzYW5kcmEubm9kZVNlbGVjdG9yYCAoaWYg" + + "YGdsb2JhbC5ub2RlU2VsZWN0b3JzLmVuYWJsZWRgKQotIGBjYXNzYW5kcmEuZ2xvYmFsLmRlZmF1" + + "bHRTdG9yYWdlQ2xhc3NgCgojIyMgTkFUUwoKLSBgbmF0cy5jb250YWluZXIuaW1hZ2UuKmAKLSBg" + + "bmF0cy5yZWxvYWRlci5pbWFnZS4qYAotIGBuYXRzLm5hdHNCb3guY29udGFpbmVyLmltYWdlLipg" + + "Ci0gYG5hdHMuY29uZmlnLmpldHN0cmVhbS5maWxlU3RvcmUucHZjLnN0b3JhZ2VDbGFzc05hbWVg" + + "Ci0gYG5hdHMucG9kVGVtcGxhdGUubWVyZ2Uuc3BlYy5ub2RlU2VsZWN0b3JgIChpZiBlbmFibGVk" + + "KQoKIyMjIE9wZW5CYW8KCi0gYG9wZW5iYW8ubWlncmF0aW9ucy5pbWFnZS4qYCBhbmQgYG9wZW5i" + + "YW8ubWlncmF0aW9ucy5lbnZgCi0gYG9wZW5iYW8uaW5qZWN0b3IuaW1hZ2UuKmAKLSBgb3BlbmJh" + + "by5zZXJ2ZXIuaW1hZ2UuKmAKLSBgb3BlbmJhby5zZXJ2ZXIuZGF0YVN0b3JhZ2UuKmAKLSBOb2Rl" + + "IHNlbGVjdG9ycyAoaWYgZW5hYmxlZCkKCiMjIyBTZXJ2aWNlcyAoQVBJLCBTSVMsIGV0Yy4pCgot" + + "IGA8c2VydmljZT4uaW1hZ2UuKmAgKHJlZ2lzdHJ5LCByZXBvc2l0b3J5KQotIGA8c2VydmljZT4u" + + "bm9kZVNlbGVjdG9yYCAoaWYgZW5hYmxlZCkKLSBgPHNlcnZpY2U+LmVudi4qYCAob2JzZXJ2YWJp" + + "bGl0eSBzZXR0aW5ncykKCiMjIyBMTE0gRnVuY3Rpb24gRW5hYmxlbWVudAoKRW5hYmxlIHRoZSBM" + + "TE0gYWRkb24gYmVmb3JlIGNyZWF0aW5nIG9yIGludm9raW5nIGZ1bmN0aW9ucyB3aXRoCmBmdW5j" + + "dGlvblR5cGU6ICJMTE0iYC4gVGhlIGFkZG9uIGRlcGxveXMgYGxsbS1yZXF1ZXN0LXJvdXRlcmAg" + + "YW5kCmBsbG0tYXBpLWdhdGV3YXlgLCBhZGRzIHRoZSBgbGxtLmludm9jYXRpb24uPGRvbWFpbj5g" + + "IHJvdXRlIHdoZW4gR2F0ZXdheSBBUEkKaW5ncmVzcyBpcyBlbmFibGVkLCBhbmQgY29uZmlndXJl" + + "cyB3b3JrZXJzIHRvIHVzZSB0aGUgTExNIHNpZGVjYXIuIFRoZSBIZWxtZmlsZQpjb25kaXRpb24g" + + "aXMgYGFkZG9ucy5sbG0uZW5hYmxlZGAuIERvIG5vdCB1c2UgdGhlIG9ic29sZXRlIGBsbG0uZW5h" + + "YmxlZGAgcGF0aC4KCkZvciBhIHNpbmdsZS1ub2RlIGlzb2xhdGVkIHRlc3QgY2x1c3RlciwgYWRk" + + "IHRoaXMgY29uZmlndXJhdGlvbiB0bwpgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgIGJlZm9yZSBh" + + "cHBseWluZyB0aGUgc3RhY2s6CgpgYGB5YW1sCmFkZG9uczoKICBsbG06CiAgICBlbmFibGVkOiB0" + + "cnVlCiAgICBnYXRld2F5OgogICAgICByZXBsaWNhQ291bnQ6IDEKICAgICAgbWV0cmljczoKICAg" + + "ICAgICBzZXJ2aWNlTW9uaXRvcjoKICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCiAgICByZXF1ZXN0" + + "Um91dGVyOgogICAgICByZXBsaWNhQ291bnQ6IDEKICAgICAgbWV0cmljczoKICAgICAgICBzZXJ2" + + "aWNlTW9uaXRvcjoKICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCgphZ2VudENvbmZpZzoKICBtZXJn" + + "ZUNvbmZpZzogfAogICAgY2x1c3RlcjoKICAgICAgdmFsaWRhdGlvblBvbGljeToKICAgICAgICBu" + + "YW1lOiBVbnJlc3RyaWN0ZWQKICAgIHdvcmtsb2FkOgogICAgICBzdGFyZ2F0ZVFVSUNJbnNlY3Vy" + + "ZTogdHJ1ZQpgYGAKClVzZSBgcmVwbGljYUNvdW50OiAxYCBvbmx5IGZvciBsb2NhbCBvciBzaW5n" + + "bGUtbm9kZSB0ZXN0IGNsdXN0ZXJzLiBUaGUgYnVuZGxlZApOVkNGIEFQSSBjdXJyZW50bHkgc2Vy" + + "dmVzIHBsYWludGV4dCBnUlBDIG9uIHBvcnQgOTA5MCwgc28gdGhlIHNlbGYtbWFuYWdlZCBzdGFj" + + "awpkZWZhdWx0cyB0aGUgTExNIEFQSSBHYXRld2F5IGF1dGhlbnRpY2F0aW9uIGhvcCB0byBwbGFp" + + "bnRleHQuIFNldApgYWRkb25zLmxsbS5nYXRld2F5LmF1dGguZ3JwY0luc2VjdXJlOiBmYWxzZWAg" + + "b25seSB3aXRoIGEgVExTLWNhcGFibGUgTlZDRiBBUEkuCgpXb3JrZXItdG8tcm91dGVyIHRyYW5z" + + "cG9ydCBpcyBzZXBhcmF0ZS4gRm9yIHNoYXJlZCBvciBwcm9kdWN0aW9uIGNsdXN0ZXJzLCB1c2UK" + + "dGhlIHJlcXVpcmVkIHJlcGxpY2EgY291bnQgYW5kIHRoZSBtYW5hZ2VkIFRMUyBjb25maWd1cmF0" + + "aW9uLiBUaGUKYHdvcmtsb2FkLnN0YXJnYXRlUVVJQ0luc2VjdXJlYCBzZXR0aW5nIGVuYWJsZXMg" + + "cGxhaW50ZXh0IHdvcmtlciB0cmFuc3BvcnQgYW5kCm11c3Qgbm90IGJlIHVzZWQgaW4gcHJvZHVj" + + "dGlvbi4KClRoZSByZXF1ZXN0IHJvdXRlciB1c2VzIGBwb3dlci1vZi10d29gIHdoZW4gbm8gbG9h" + + "ZC1iYWxhbmNlciBjb25maWd1cmF0aW9uIGlzCnNldC4gQ29uZmlndXJlIG90aGVyIHJvdXRpbmcg" + + "bWV0aG9kcyB3aXRoIHRoZQpbTExNIFJlcXVlc3QgUm91dGVyIExvYWQgQmFsYW5jaW5nXShodHRw" + + "czovL2dpdGh1Yi5jb20vTlZJRElBL252Y2YvYmxvYi9tYWluL2RvY3MvdXNlci9sbG0tcmVxdWVz" + + "dC1yb3V0ZXItbG9hZC1iYWxhbmNpbmcubWQpCmd1aWRlLgoKSWYgdGhlIHNpZGVjYXIgaW1hZ2Ug" + + "aXMgbWlycm9yZWQgb3V0c2lkZSB0aGUgc3RhY2sncyBkZWZhdWx0IGltYWdlIHJlZ2lzdHJ5IGFu" + + "ZApyZXBvc2l0b3J5LCBzZXQgdGhlIGdlbmVyYXRlZCB3b3JrZXIgc2lkZWNhciBpbWFnZSBleHBs" + + "aWNpdGx5OgoKYGBgeWFtbAphcGk6CiAgcmVtb3RlQ29uZmlnOgogICAgY29uZmlnRGF0YToKICAg" + + "ICAgbnZjZjoKICAgICAgICBzaWRlY2FyczoKICAgICAgICAgIGxsbS1yb3V0ZXItY2xpZW50LWlt" + + "YWdlOiA8cmVnaXN0cnk+LzxyZXBvc2l0b3J5Pi9weWxvbjowLjE0LjEKYGBgCgpUaGUgbGVnYWN5" + + "IGBhcGkuZW52Lk5WQ0ZfU0lERUNBUlNfTExNX1JPVVRFUl9DTElFTlRfSU1BR0VgIHBhdGggaXMg" + + "ZGVwcmVjYXRlZC4KVGhlIHN0YWNrIHRyYW5zbGF0ZXMgaXQgZm9yIG9uZSBjb21wYXRpYmlsaXR5" + + "IHdpbmRvdywgYnV0IG5ldyBjb25maWd1cmF0aW9ucwptdXN0IHVzZSB0aGUgcmVtb3RlLWNvbmZp" + + "ZyBwYXRoLiBDb25mbGljdGluZyB2YWx1ZXMgZmFpbCByZW5kZXJpbmcuCgpSZW5kZXIgYW5kIGFw" + + "cGx5IHRoZSB1cGRhdGVkIGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQsIHRoZW4gcmVmcmVzaCBl" + + "dmVyeQpyZWdpc3RlcmVkIGNvbXB1dGUgcGxhbmUgdXNpbmcgdGhlIHNhbWUgaGFuZG9mZiB1c2Vk" + + "IGZvciBpdHMgaW5zdGFsbGF0aW9uIHNvCk5WQ0EgcmVjZWl2ZXMgYGFnZW50Q29uZmlnLm1lcmdl" + + "Q29uZmlnYDoKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIHRlbXBsYXRlCkhF" + + "TE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSBzeW5jCmBgYAoKVXNlIHRoZSBjb21wbGV0ZSBjb21w" + + "dXRlLXBsYW5lIGluc3RhbGwgY29tbWFuZCBmcm9tCltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3Rh" + + "bGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLiBBCkNMSS1wcm9maWxlIGlu" + + "c3RhbGxhdGlvbiBtdXN0IHJlbWFpbiBwcm9maWxlLWRyaXZlbjsgYSBIZWxtZmlsZSBpbnN0YWxs" + + "YXRpb24KbXVzdCByZW1haW4gdmFsdWVzLWRyaXZlbi4KCkV4aXN0aW5nIExMTSBmdW5jdGlvbiB2" + + "ZXJzaW9ucyByZXRhaW4gdGhlIHdvcmtlci1zaWRlY2FyIGltYWdlIG1ldGFkYXRhCmNhcHR1cmVk" + + "IHdoZW4gdGhlIHZlcnNpb24gaXMgY3JlYXRlZC4gUmVwbGFjaW5nIHBvZHMgb3IgcmVkZXBsb3lp" + + "bmcgdGhlIHNhbWUKdmVyc2lvbiBkb2VzIG5vdCBhcHBseSBhIG5ldyBQeWxvbiBpbWFnZS4gQWZ0" + + "ZXIgdGhlIGNvbnRyb2wtcGxhbmUgdXBkYXRlLApjcmVhdGUgYW5kIGRlcGxveSBhIG5ldyBmdW5j" + + "dGlvbiB2ZXJzaW9uLiBWZXJpZnkgdGhlIGNvbnRyb2wgcGxhbmUsIHJvdXRlLCBhbmQKd29ya2Vy" + + "IHNpZGVjYXI6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSAtbiBudmNmIGxsbS1hcGktZ2F0" + + "ZXdheQprdWJlY3RsIGdldCBzdGF0ZWZ1bHNldCAtbiBudmNmIGxsbS1yZXF1ZXN0LXJvdXRlcgpr" + + "dWJlY3RsIGdldCBwb2RzIC1uIG52Y2YgfCBncmVwIC1FICdsbG0tYXBpLWdhdGV3YXl8bGxtLXJl" + + "cXVlc3Qtcm91dGVyJwprdWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIGxsbQprdWJlY3Rs" + + "IC1uIG52Y2YtYmFja2VuZCBnZXQgcG9kIDxmdW5jdGlvbi1wb2Q+IFwKICAtbyBqc29ucGF0aD0n" + + "e3JhbmdlIC5zcGVjLmNvbnRhaW5lcnNbPyhALm5hbWU9PSJsbG0td29ya2VyIildLmFyZ3NbKl19" + + "ey59eyJcXG4ifXtlbmR9JwpgYGAKCkZvciBsb2NhbCBwbGFpbnRleHQgY2x1c3RlcnMsIHRoZSBg" + + "bGxtLXdvcmtlcmAgYXJncyBtdXN0IGluY2x1ZGUKYC0tcXVpYy1pbnNlY3VyZWAuCgpGb3IgbG9h" + + "ZC1iYWxhbmNlciBzY2hlbWEgYW5kIGFsZ29yaXRobSBiZWhhdmlvciwgc2VlIHRoZQpbU3Rhcmdh" + + "dGUgY29uZmlndXJhdGlvbiBndWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9udmNmL2Js" + + "b2IvbWFpbi9zcmMvbGlicmFyaWVzL3J1c3Qvc3RhcmdhdGUvZG9jcy9sb2FkLWJhbGFuY2VyLWNv" + + "bmZpZ3VyYXRpb24ubWQpLgoKIyMgSGVsbWZpbGUgU2VsZWN0b3JzCgpUYXJnZXQgc3BlY2lmaWMg" + + "cmVsZWFzZXMgb3IgZ3JvdXBzOgoKYGBgYmFzaAojIEJ5IHJlbGVhc2UgZ3JvdXAKSEVMTUZJTEVf" + + "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1kZXBlbmRlbmNpZXMg" + + "c3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3Vw" + + "PXNlcnZpY2VzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVs" + + "ZWFzZS1ncm91cD1pbmdyZXNzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2Vs" + + "ZWN0b3IgcmVsZWFzZS1ncm91cD1vYnNlcnZhYmlsaXR5IHN5bmMKCiMgQnkgcmVsZWFzZSBuYW1l" + + "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5" + + "bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1" + + "ZXItcHJveHkgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1l" + + "PWxsbS1yZXF1ZXN0LXJvdXRlciBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + + "bGVjdG9yIG5hbWU9bGxtLWFwaS1nYXRld2F5IHN5bmMKCiMgVGVtcGxhdGUgb25seSAoZHJ5IHJ1" + + "bikKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEg" + + "dGVtcGxhdGUKCiMgRGVzdHJveSBhIHNpbmdsZSByZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBo" + + "ZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIGRlc3Ryb3kKYGBgCgpOb3RlOiBgYWRt" + + "aW4taXNzdWVyLXByb3h5YCBoYXMgbm8gYHJlbGVhc2UtZ3JvdXBgIGxhYmVsLiBVc2UgYC0tc2Vs" + + "ZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHlgLgpQSwcIsTUd2wIqAAACKgAAUEsDBBQACAAA" + + "AAAAIQAAAAAAAAAAAAAAAAA/AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24v" + + "cmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SIyBOVkNGIFVJIEFkZG9uCgpOVkNG" + + "IFVJIGlzIGFuIG9wdGlvbmFsLCBjdXN0b21lci1mYWNpbmcgTlZDRiBhZG1pbi1wYW5lbCBVSS4g" + + "SXQgaXMgZGlzYWJsZWQgYnkKZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFj" + + "a2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBOVkNGIFVJIGFkZG9uLgoKIyMgV2hlbiB0byBlbmFibGUK" + + "CkVuYWJsZSBOVkNGIFVJIG9ubHkgd2hlbiB5b3UgbmVlZCB0aGUgYWRtaW4tcGFuZWwgVUkgYW5k" + + "IHlvdXIgZXh0cmFjdGVkIHN0YWNrCnBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLiBJZiB0aGUg" + + "cGFja2FnZSBkb2VzIG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UKYW5kIGBudmNmVWlg" + + "IHJvdXRlIHZhbHVlcywgc2tpcCB0aGUgYWRkb24gdW50aWwgeW91IHVzZSBhIHBhY2thZ2UgdGhh" + + "dCBpbmNsdWRlcwp0aGVtLgoKIyMgRW5hYmxlIHRoZSBhZGRvbgoKRW5hYmxlIGl0IGluIGBlbnZp" + + "cm9ubWVudHMvPGVudi1uYW1lPi55YW1sYDoKCmBgYHlhbWwKYWRkb25zOgogIG52Y2ZVaToKICAg" + + "IGVuYWJsZWQ6IHRydWUKYGBgCgojIyBDcmVhdGUgbmFtZXNwYWNlIGFuZCBpbWFnZSBwdWxsIHNl" + + "Y3JldAoKQ3JlYXRlIHRoZSBuYW1lc3BhY2UsIGFuZCBhbiBpbWFnZSBwdWxsIHNlY3JldCBvbmx5" + + "IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUKcmVnaXN0cnk6CgpgYGBiYXNoCmt1YmVjdGwgY3Jl" + + "YXRlIG5hbWVzcGFjZSBudmNmLXVpIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwg" + + "YXBwbHkgLWYgLQoKIyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGUu" + + "Zy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmt1YmVjdGwg" + + "Y3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgLS1kb2NrZXItc2Vy" + + "dmVyPW52Y3IuaW8gXAogIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogIC0tZG9j" + + "a2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAtLW5hbWVzcGFjZT1udmNmLXVpIFwKICAt" + + "LWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KYGBgCgpUaGUgZGVm" + + "YXVsdCByb3V0ZSBob3N0IGlzIGBudmNmLXVpLjxkb21haW4+YCBhbmQgdGhlIGJhY2tlbmQgaXMK" + + "YG52Y2YtdWkubnZjZi11aTo4MzAwYC4KCiMjIEFwcGx5IHRoZSBzZXJ2aWNlIGFuZCByb3V0ZQoK" + + "QWZ0ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYG52Y2YtdWlgIHJlbGVh" + + "c2UsIHByZXZpZXcgYW5kIGFwcGx5CnRoZSBzZXJ2aWNlIGFuZCByb3V0ZToKCmBgYGJhc2gKSEVM" + + "TUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgdGVt" + + "cGxhdGUKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52" + + "Y2YtdWkgc3luYwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJl" + + "bGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBgYAoKIyMgVmVyaWZ5CgpWZXJpZnkgdGhlIHJvdXRl" + + "IG9ubHkgd2hlbiB0aGUgYWRkb24gaXMgcHJlc2VudCBhbmQgZW5hYmxlZDoKCmBgYGJhc2gKa3Vi" + + "ZWN0bCBnZXQgZGVwbG95LHN2YyAtbiBudmNmLXVpCmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8" + + "IGdyZXAgLWkgbnZjZi11aQpjdXJsIC1pIC1IICJIb3N0OiBudmNmLXVpLjxkb21haW4+IiAiaHR0" + + "cDovLzxnYXRld2F5LWFkZHJlc3M+L3N0YXR1cyIKYGBgCgojIyBTZWN1cml0eQoKVGhlIE5WQ0Yg" + + "VUkgYWRtaW4gcGFuZWwgaXMgY3VycmVudGx5IHVuYXV0aGVudGljYXRlZC4gRG8gbm90IGV4cG9z" + + "ZSBpdCB0byB0aGUKcHVibGljIGludGVybmV0LiBSZXN0cmljdCBhY2Nlc3MgdG8gYSB0cnVzdGVk" + + "IG5ldHdvcmssIFZQTiwgb3IgYW4gYXV0aGVudGljYXRpbmcKcHJveHkgaW4gZnJvbnQgb2YgdGhl" + + "IGBudmNmLXVpYCByb3V0ZS4KUEsHCDj5J6+5BwAAuQcAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAA" + + "AAAAPgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVs" + + "bC1zZWNyZXRzLm1kVVQFAAEAps4SIyBJbWFnZSBQdWxsIFNlY3JldHMgUmVmZXJlbmNlCgojIyBP" + + "dmVydmlldwoKV2hlbiBwdWxsaW5nIE5WQ0YgaW1hZ2VzIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5" + + "IChmb3IgZXhhbXBsZSwgTkdDCmBudmNyLmlvYCksIEt1YmVybmV0ZXMgbmVlZHMgYGltYWdlUHVs" + + "bFNlY3JldHNgIG9uIGV2ZXJ5IHBvZC4gQ29udHJvbC1wbGFuZSBhbmQKY29tcHV0ZS1wbGFuZSBj" + + "cmVkZW50aWFscyBhcmUgY29uZmlndXJlZCBpbiB0aGVpciBvd24gY2x1c3RlciBjb250ZXh0cy4g" + + "RG8gbm90CnVzZSBvbmUgbWl4ZWQgbmFtZXNwYWNlIGxpc3QuCgpUaGUgcmVjb21tZW5kZWQgY29u" + + "dHJvbC1wbGFuZSBhcHByb2FjaCB1c2VzIEt5dmVybm8gdG8gaW5qZWN0IHRoZSBzZWNyZXQgaW50" + + "bwpjb250cm9sLXBsYW5lIHBvZHMgYXQgYWRtaXNzaW9uIHRpbWUuIFRoZSBjb21wdXRlLXBsYW5l" + + "IGNoYXJ0IGFuZCBvcGVyYXRvciB1c2UKdGhlIHNlY3JldCBpbiBgbnZjYS1vcGVyYXRvcmAgYW5k" + + "IG1pcnJvciBpdCB0byBgbnZjYS1zeXN0ZW1gLgoKIyMgS3l2ZXJubyBBcHByb2FjaCAoUmVjb21t" + + "ZW5kZWQpCgojIyMgMS4gSW5zdGFsbCBLeXZlcm5vCgpgYGBiYXNoCmhlbG0gcmVwbyBhZGQga3l2" + + "ZXJubyBodHRwczovL2t5dmVybm8uZ2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUK" + + "aGVsbSBpbnN0YWxsIGt5dmVybm8ga3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUt" + + "bmFtZXNwYWNlIFwKICAtLWt1YmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PgpgYGAK" + + "CiMjIyAyLiBDcmVhdGUgY29udHJvbC1wbGFuZSBwdWxsIHNlY3JldHMKCmBgYGJhc2gKZXhwb3J0" + + "IE5HQ19BUElfS0VZPSI8eW91ci1uZ2MtYXBpLWtleT4iCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5" + + "c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQt" + + "bWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBj" + + "cmVhdGUgbmFtZXNwYWNlICIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1" + + "YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQoK" + + "Zm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mg" + + "c2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgPGNv" + + "bnRyb2wtcGxhbmUtY29udGV4dD4gY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1j" + + "cmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFt" + + "ZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwK" + + "ICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1" + + "YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQpg" + + "YGAKCkZvciBub24tTkdDIHJlZ2lzdHJpZXMsIHJlcGxhY2UgYC0tZG9ja2VyLXNlcnZlcmAsIGAt" + + "LWRvY2tlci11c2VybmFtZWAsIGFuZCBgLS1kb2NrZXItcGFzc3dvcmRgLgoKIyMjIDMuIEFwcGx5" + + "IEt5dmVybm8gQ2x1c3RlclBvbGljeQoKYGBgeWFtbAphcGlWZXJzaW9uOiBreXZlcm5vLmlvL3Yx" + + "CmtpbmQ6IENsdXN0ZXJQb2xpY3kKbWV0YWRhdGE6CiAgbmFtZTogbnZjZi1hZGQtaW1hZ2VwdWxs" + + "c2VjcmV0cwpzcGVjOgogIGJhY2tncm91bmQ6IGZhbHNlCiAgcnVsZXM6CiAgICAtIG5hbWU6IGFk" + + "ZC1pbWFnZXB1bGxzZWNyZXQtdG8tbnZjZi1wb2RzCiAgICAgIG1hdGNoOgogICAgICAgIGFueToK" + + "ICAgICAgICAtIHJlc291cmNlczoKICAgICAgICAgICAga2luZHM6CiAgICAgICAgICAgIC0gUG9k" + + "CiAgICAgICAgICAgIG5hbWVzcGFjZXM6CiAgICAgICAgICAgIC0gIm52Y2YiCiAgICAgICAgICAg" + + "IC0gImFwaS1rZXlzIgogICAgICAgICAgICAtICJzaXMiCiAgICAgICAgICAgIC0gImVzcyIKICAg" + + "ICAgICAgICAgLSAibmF0cy1zeXN0ZW0iCiAgICAgICAgICAgIC0gImNhc3NhbmRyYS1zeXN0ZW0i" + + "CiAgICAgICAgICAgIC0gInZhdWx0LXN5c3RlbSIKICAgICAgICAgICAgLSAiY2VydC1tYW5hZ2Vy" + + "IgogICAgICBtdXRhdGU6CiAgICAgICAgcGF0Y2hTdHJhdGVnaWNNZXJnZToKICAgICAgICAgIG1l" + + "dGFkYXRhOgogICAgICAgICAgICBhbm5vdGF0aW9uczoKICAgICAgICAgICAgICBudmNmLm52aWRp" + + "YS5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVkLWJ5OiBreXZlcm5vCiAgICAgICAgICBzcGVj" + + "OgogICAgICAgICAgICBpbWFnZVB1bGxTZWNyZXRzOgogICAgICAgICAgICAtIG5hbWU6IG52Y3It" + + "Y3JlZHMKYGBgCgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRl" + + "eHQ+IGFwcGx5IFwKICAtZiBreXZlcm5vLWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAK" + + "CiMjIyA0LiBJbnN0YWxsIHRoZSBjb250cm9sIHBsYW5lCgpDb250aW51ZSB3aXRoIHRoZSBzZWxl" + + "Y3RlZCBjb250cm9sLXBsYW5lIGluc3RhbGxhdGlvbiBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJ" + + "bnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4gTm8KY29udHJvbC1w" + + "bGFuZSBoZWxtZmlsZSBtb2RpZmljYXRpb25zIGFyZSBuZWVkZWQuIEt5dmVybm8gaW5qZWN0cyB0" + + "aGUgcHVsbApzZWNyZXQgaW50byBuZXcgY29udHJvbC1wbGFuZSBwb2RzLgoKIyMgQ29tcHV0ZS1Q" + + "bGFuZSBTZWNyZXQKCkNyZWF0ZSB0aGUgc2VjcmV0IG9ubHkgaW4gYG52Y2Etb3BlcmF0b3JgIG9u" + + "IHRoZSBjb21wdXRlIGNsdXN0ZXI6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + + "LXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3BhY2UgbnZjYS1vcGVyYXRvciBcCiAgLS1kcnkt" + + "cnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5l" + + "LWNvbnRleHQ+IGFwcGx5IC1mIC0KCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNv" + + "bnRleHQ+IGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogIC0tZG9j" + + "a2VyLXNlcnZlcj1udmNyLmlvIFwKICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwK" + + "ICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgLS1uYW1lc3BhY2U9bnZjYS1v" + + "cGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250" + + "ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KYGBgCgpSZWZlcmVuY2UgaXQg" + + "aW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZToKCmBgYHlhbWwKZ2xvYmFsOgog" + + "IGltYWdlUHVsbFNlY3JldHM6CiAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpUaGUgY2hhcnQg" + + "YW5kIG9wZXJhdG9yIHVzZSB0aGF0IHJlZmVyZW5jZSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1p" + + "cnJvciB0aGUKc2VjcmV0IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBjcmVhdGUgYSBicm9hZGVy" + + "IG1hbnVhbCBjb21wdXRlIG5hbWVzcGFjZSBsaXN0LiBGb2xsb3cKW1NwbGl0IENvbXB1dGUtUGxh" + + "bmUgSW5zdGFsbGF0aW9uXShjb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkgZm9yIHRoZQpz" + + "ZWxlY3RlZCBpbnN0YWxsIGZsb3cuCgojIyBWZXJpZmljYXRpb24KCmBgYGJhc2gKIyBDaGVjayB0" + + "aGF0IGEgY29udHJvbC1wbGFuZSBwb2QgaGFzIHRoZSBpbmplY3RlZCBzZWNyZXQKa3ViZWN0bCAt" + + "LWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8" + + "cG9kLW5hbWU+IFwKICAtbyBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9JwojIEV4" + + "cGVjdGVkOiBbeyJuYW1lIjoibnZjci1jcmVkcyJ9XQoKIyBDaGVjayB0aGUgS3l2ZXJubyBhbm5v" + + "dGF0aW9uCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBwb2Qg" + + "LW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiBcCiAgLW8ganNvbnBhdGg9J3subWV0YWRhdGEuYW5u" + + "b3RhdGlvbnMubnZjZlwubnZpZGlhXC5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVkLWJ5fScK" + + "IyBFeHBlY3RlZDoga3l2ZXJubwoKIyBDaGVjayBwdWxsIGV2ZW50cwprdWJlY3RsIC0tY29udGV4" + + "dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZXZlbnRzIC1uIDxuYW1lc3BhY2U+IFwKICAt" + + "LXNvcnQtYnk9Jy5sYXN0VGltZXN0YW1wJyB8IGdyZXAgLWkgcHVsbAojIFNob3VsZCBzaG93ICJT" + + "dWNjZXNzZnVsbHkgcHVsbGVkIiBub3QgIjQwMSBVbmF1dGhvcml6ZWQiCgojIENoZWNrIHRoZSBj" + + "aGFydC9vcGVyYXRvciBtaXJyb3Igb24gdGhlIGNvbXB1dGUgY2x1c3RlcgprdWJlY3RsIC0tY29u" + + "dGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgXAogIC1u" + + "IG52Y2Etc3lzdGVtCmBgYAoKIyMgV2hlbiBQdWxsIFNlY3JldHMgQXJlIE5vdCBOZWVkZWQKCi0g" + + "KipBV1MgRUNSIHdpdGggSUFNIG5vZGUgcm9sZXMqKjogSWYgeW91ciBub2RlcyBoYXZlIGBBbWF6" + + "b25FQzJDb250YWluZXJSZWdpc3RyeVJlYWRPbmx5YCBJQU0gcG9saWN5LCBLdWJlcm5ldGVzIGNh" + + "biBwdWxsIGZyb20gRUNSIHdpdGhvdXQgZXhwbGljaXQgc2VjcmV0cy4KLSAqKlB1YmxpYyByZWdp" + + "c3RyaWVzKio6IE5vIHB1bGwgc2VjcmV0cyBuZWVkZWQuCi0gKipDU1AgYnVpbHQtaW4gY3JlZGVu" + + "dGlhbCBoZWxwZXJzKio6IEdLRSBBcnRpZmFjdCBSZWdpc3RyeSwgQXp1cmUgQUNSIHdpdGggbWFu" + + "YWdlZCBpZGVudGl0eSwgYW5kIHNpbWlsYXIgc2VydmljZXMuCgojIyBUcm91Ymxlc2hvb3RpbmcK" + + "CiMjIyBQb2RzIHN0aWxsIGluIEltYWdlUHVsbEJhY2tPZmYgYWZ0ZXIgYXBwbHlpbmcgcG9saWN5" + + "CgpUaGUgS3l2ZXJubyBwb2xpY3kgb25seSBhZmZlY3RzIHBvZHMgY3JlYXRlZCAqKmFmdGVyKiog" + + "dGhlIHBvbGljeSBpcyBhcHBsaWVkLiBEZWxldGUgc3R1Y2sgcG9kcyB0byB0cmlnZ2VyIHJlY3Jl" + + "YXRpb246CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDx0YXJnZXQtY29udGV4dD4gZGVsZXRl" + + "IHBvZHMgLW4gPG5hbWVzcGFjZT4gLS1hbGwKYGBgCgojIyMgS3l2ZXJubyBhZG1pc3Npb24gY29u" + + "dHJvbGxlciBub3QgcnVubmluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1w" + + "bGFuZS1jb250ZXh0PiBnZXQgcG9kcyAtbiBreXZlcm5vCiMgQWxsIHBvZHMgc2hvdWxkIGJlIFJ1" + + "bm5pbmcKYGBgCgojIyMgUG9saWN5IG5vdCBtYXRjaGluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29u" + + "dGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgY2x1c3RlcnBvbGljeSBudmNmLWFkZC1p" + + "bWFnZXB1bGxzZWNyZXRzCiMgU2hvdWxkIHNob3cgUkVBRFk6IFRydWUKYGBgCgojIyMgV3Jvbmcg" + + "c2VjcmV0IG5hbWUKClRoZSBwb2xpY3kgcmVmZXJlbmNlcyBgbnZjci1jcmVkc2AuIFZlcmlmeSB0" + + "aGUgc2VjcmV0IGV4aXN0cyB3aXRoIHRoYXQgZXhhY3QgbmFtZToKCmBgYGJhc2gKa3ViZWN0bCAt" + + "LWNvbnRleHQgPHRhcmdldC1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgLW4gPG5hbWVz" + + "cGFjZT4KYGBgClBLBwhLQjWoABYAAAAWAABQSwECFAAUAAgAAAAAACEATyM55UoQAABKEAAAEgAJ" + + "AAAAAAAAAAAAAAAAAAAAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAh" + + "AP9282dTYQAAU2EAACMACQAAAAAAAAAAAAAAkxAAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xp" + + "L1NLSUxMLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAG3jewUjDAAAIwwAADMACQAAAAAAAAAA" + + "AAAAQHIAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL2V4YW1wbGVzL2NpLXBpcGVsaW5lcy5t" + + "ZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQChFOOBXQwAAF0MAAA0AAkAAAAAAAAAAAAAAM1+AABk" + + "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9tdWx0aS1jbHVzdGVyLm1kVVQFAAEA" + + "ps4SUEsBAhQAFAAIAAAAAAAhAEInSQ8FDQAABQ0AADcACQAAAAAAAAAAAAAAlYsAAGRhdGEvbnZj" + + "Zi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvYWRkLWNvbXB1dGUtcGxhbmUubWRVVAUAAQCmzhJQ" + + "SwECFAAUAAgAAAAAACEA1N6NNJ8ZAACfGQAAOQAJAAAAAAAAAAAAAAAImQAAZGF0YS9udmNmLXNl" + + "bGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kVVQFAAEAps4SUEsB" + + "AhQAFAAIAAAAAAAhANJD3AQYJQAAGCUAADcACQAAAAAAAAAAAAAAF7MAAGRhdGEvbnZjZi1zZWxm" + + "LW1hbmFnZWQtY2xpL3Byb21wdHMvZGVwbG95LWFuZC1pbnZva2UubWRVVAUAAQCmzhJQSwECFAAU" + + "AAgAAAAAACEAcpIsJr4OAAC+DgAAPQAJAAAAAAAAAAAAAACd2AAAZGF0YS9udmNmLXNlbGYtbWFu" + + "YWdlZC1jbGkvcHJvbXB0cy9kaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZFVUBQABAKbOElBLAQIU" + + "ABQACAAAAAAAIQBCceYeASgAAAEoAAA6AAkAAAAAAAAAAAAAAM/nAABkYXRhL252Y2Ytc2VsZi1t" + + "YW5hZ2VkLWNsaS9wcm9tcHRzL2luc3RhbGwtZnJvbS1zY3JhdGNoLm1kVVQFAAEAps4SUEsBAhQA" + + "FAAIAAAAAAAhAKrhOrnIBwAAyAcAADkACQAAAAAAAAAAAAAAQRABAGRhdGEvbnZjZi1zZWxmLW1h" + + "bmFnZWQtY2xpL3Byb21wdHMvcm90YXRlLWNsdXN0ZXItandrcy5tZFVUBQABAKbOElBLAQIUABQA" + + "CAAAAAAAIQDah2NW5CEAAOQhAAAuAAkAAAAAAAAAAAAAAHkYAQBkYXRhL252Y2Ytc2VsZi1tYW5h" + + "Z2VkLWNsaS9wcm9tcHRzL3RlYXJkb3duLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAHIND2Qh" + + "IwAAISMAADAACQAAAAAAAAAAAAAAwjoBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVy" + + "ZW5jZS9jb21tYW5kcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBzp1pk1QYAANUGAAAyAAkA" + + "AAAAAAAAAAAAAEpeAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZXhpdC1j" + + "b2Rlcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQCZ0OJQFy4AABcuAAAtAAkAAAAAAAAAAAAA" + + "AIhlAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZmxhZ3MubWRVVAUAAQCm" + + "zhJQSwECFAAUAAgAAAAAACEA864ThHQRAAB0EQAANwAJAAAAAAAAAAAAAAADlAEAZGF0YS9udmNm" + + "LXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOElBL" + + "AQIUABQACAAAAAAAIQARwxSTSWIAAEliAAAsAAkAAAAAAAAAAAAAAOWlAQBkYXRhL252Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBH" + + "VWpWSlYAAEpWAAA0AAkAAAAAAAAAAAAAAJEIAgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + + "bGxhdGlvbi9ldmFscy9ldmFscy5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAAJSTkB/KAAA" + + "fygAAC8ACQAAAAAAAAAAAAAARl8CAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9u" + + "L2V4YW1wbGVzLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAJZjvFkSMAAAEjAAAEwACQAAAAAA" + + "AAAAAAAAK4gCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMv" + + "Y29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAtXpw" + + "O7UwAAC1MAAAOwAJAAAAAAAAAAAAAADAuAIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + + "YXRpb24vcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAsTUd" + + "2wIqAAACKgAARAAJAAAAAAAAAAAAAADn6QIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + + "YXRpb24vcmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWRVVAUAAQCmzhJQSwECFAAUAAgA" + + "AAAAACEAOPknr7kHAAC5BwAAPwAJAAAAAAAAAAAAAABkFAMAZGF0YS9udmNmLXNlbGYtbWFuYWdl" + + "ZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SUEsBAhQA" + + "FAAIAAAAAAAhAEtCNagAFgAAABYAAD4ACQAAAAAAAAAAAAAAkxwDAGRhdGEvbnZjZi1zZWxmLW1h" + + "bmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SUEsF" + + "BgAAAAAXABcArwkAAAgzAwAAAA==" var ( skillDataOnce sync.Once diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 2d40c79803..f90b53a5cf 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -366,14 +366,14 @@ func sweepOrphanClusterValidatorRBAC(ctx context.Context, client kubernetes.Inte if l, err := client.RbacV1().ClusterRoleBindings().List(ctx, opts); err == nil { for i := range l.Items { if o := &l.Items[i]; reclaimable(o) { - _ = client.RbacV1().ClusterRoleBindings().Delete(ctx, o.Name, metav1.DeleteOptions{}) + _ = client.RbacV1().ClusterRoleBindings().Delete(ctx, o.Name, deleteExactly(o)) } } } if l, err := client.RbacV1().ClusterRoles().List(ctx, opts); err == nil { for i := range l.Items { if o := &l.Items[i]; reclaimable(o) { - _ = client.RbacV1().ClusterRoles().Delete(ctx, o.Name, metav1.DeleteOptions{}) + _ = client.RbacV1().ClusterRoles().Delete(ctx, o.Name, deleteExactly(o)) } } } @@ -381,7 +381,7 @@ func sweepOrphanClusterValidatorRBAC(ctx context.Context, client kubernetes.Inte if l, err := sa.List(ctx, opts); err == nil { for i := range l.Items { if o := &l.Items[i]; reclaimable(o) { - _ = sa.Delete(ctx, o.Name, metav1.DeleteOptions{}) + _ = sa.Delete(ctx, o.Name, deleteExactly(o)) } } } @@ -395,16 +395,16 @@ func sweepClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, // a colliding name would otherwise vanish with no diagnostic at all. if crb, err := client.RbacV1().ClusterRoleBindings().Get(ctx, name, metav1.GetOptions{}); err == nil && hasValidatorManagedLabels(crb.Labels) { - _ = client.RbacV1().ClusterRoleBindings().Delete(ctx, name, metav1.DeleteOptions{}) + _ = client.RbacV1().ClusterRoleBindings().Delete(ctx, name, deleteExactly(crb)) } if cr, err := client.RbacV1().ClusterRoles().Get(ctx, name, metav1.GetOptions{}); err == nil && hasValidatorManagedLabels(cr.Labels) { - _ = client.RbacV1().ClusterRoles().Delete(ctx, name, metav1.DeleteOptions{}) + _ = client.RbacV1().ClusterRoles().Delete(ctx, name, deleteExactly(cr)) } sa := client.CoreV1().ServiceAccounts(clusterValidatorNamespace) if acct, err := sa.Get(ctx, name, metav1.GetOptions{}); err == nil && hasValidatorManagedLabels(acct.Labels) { - _ = sa.Delete(ctx, name, metav1.DeleteOptions{}) + _ = sa.Delete(ctx, name, deleteExactly(acct)) } } @@ -426,7 +426,9 @@ func sweepPriorClusterValidatorJobs(ctx context.Context, client kubernetes.Inter if !strings.HasPrefix(l.Items[i].Name, clusterValidatorName) { continue } - _ = jobs.Delete(ctx, l.Items[i].Name, metav1.DeleteOptions{PropagationPolicy: &propagation}) + opts := deleteExactly(&l.Items[i]) + opts.PropagationPolicy = &propagation + _ = jobs.Delete(ctx, l.Items[i].Name, opts) } } @@ -450,7 +452,7 @@ func sweepManagedPullSecrets(ctx context.Context, client kubernetes.Interface, r if !strings.HasPrefix(l.Items[i].Name, validatorPullSecretName) { continue } - _ = secrets.Delete(ctx, l.Items[i].Name, metav1.DeleteOptions{}) + _ = secrets.Delete(ctx, l.Items[i].Name, deleteExactly(&l.Items[i])) } } diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index aa27e7c7fa..9da51e617c 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -719,10 +719,12 @@ func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namesp } } // Every hint is pinned to the context that was actually probed. - // In split mode the two callers pass different contexts, so a bare - // kubectl command would run against whatever context happens to be - // current, and these hints delete namespaces. - kctl := "kubectl" + kubectlContextArg(kubeContext) + // In split mode the two callers pass different contexts, and with + // no context flag the probe followed the current-context at the + // time it ran. Either way the name is resolved and written into + // the command, because these hints delete namespaces and the + // current-context can change between reading this and pasting it. + kctl := "kubectl" + kubectlContextArg(effectiveKubeContext(kubeContext)) var hints []string if len(terminating) > 0 { // spec.finalizers is writable only through the /finalize @@ -735,10 +737,16 @@ func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namesp "jq '.spec.finalizers=[]' | %s replace --raw /api/v1/namespaces/%s/finalize -f -", ns, kctl, ns, kctl, ns)) } - hints = append(hints, - "if it stays Terminating, the deadlock is on objects inside it: "+ - kctl+" api-resources --verbs=list --namespaced -o name | "+ - "xargs -n1 "+kctl+" get -n --show-kind --ignore-not-found") + // One command per namespace with the real name substituted. A + // `` placeholder is not pasteable: the shell reads `<` and + // `>` as redirection, so the command fails before kubectl runs. + for _, ns := range terminating { + hints = append(hints, fmt.Sprintf( + "if %s stays Terminating, the deadlock is on objects inside it: "+ + "%s api-resources --verbs=list --namespaced -o name | "+ + "xargs -n1 %s get -n %s --show-kind --ignore-not-found", + ns, kctl, kctl, ns)) + } } if len(emptyShell) > 0 { hints = append(hints, diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go index a846e4c1c1..e9c17d4f8d 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go @@ -32,6 +32,19 @@ import ( "k8s.io/client-go/kubernetes" ) +// deleteExactly pins a delete to the object that was inspected. The ownership +// guards read an object and then delete it by name, and in that window another +// actor can relabel it, or delete and recreate it under the same name. Without +// preconditions the delete lands on whatever holds the name by then; with them +// the apiserver rejects it as a conflict instead. +func deleteExactly(o metav1.Object) metav1.DeleteOptions { + uid := o.GetUID() + rv := o.GetResourceVersion() + return metav1.DeleteOptions{ + Preconditions: &metav1.Preconditions{UID: &uid, ResourceVersion: &rv}, + } +} + const ( // Project-specific name so the auto-created / mirrored pull secret // can never collide with the conventional `nvcr-pull-secret` that @@ -284,7 +297,11 @@ func writeDockerConfigSecret(ctx context.Context, client kubernetes.Interface, n fmt.Sprintf("type=%s", current.Type)); err != nil { return err } - if err := secrets.Delete(ctx, name, metav1.DeleteOptions{}); err != nil && !apierrors.IsNotFound(err) { + // A conflict means the object changed between the ownership check and + // this delete, so the thing now holding the name was never vetted. + // Stop rather than fall through to Create, which would otherwise + // silently adopt or overwrite it. + if err := secrets.Delete(ctx, name, deleteExactly(current)); err != nil && !apierrors.IsNotFound(err) { return fmt.Errorf("delete incompatible secret type %s: %w", current.Type, err) } case !apierrors.IsNotFound(err): diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go index 80cc3b3ae8..e60e908d0d 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go @@ -21,6 +21,7 @@ import ( "context" "encoding/base64" "encoding/json" + "errors" "testing" "github.com/stretchr/testify/assert" @@ -30,6 +31,7 @@ import ( apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/kubernetes/fake" ktesting "k8s.io/client-go/testing" ) @@ -557,3 +559,67 @@ func TestWriteDockerConfigSecret_RefusesUnmanagedAfterCreateRace(t *testing.T) { assert.Contains(t, err.Error(), "not managed by nvcf-cli") assert.False(t, updated, "no Update may be issued against an unmanaged secret") } + +// The ownership check reads the Secret and then deletes it by name. In that +// window another actor can delete and recreate it, so the delete has to name +// the exact object that was vetted rather than whatever holds the name by then. +func TestWriteDockerConfigSecret_TypeMismatchDeletePinsTheInspectedObject(t *testing.T) { + fresh := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "key") + existing := &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: "nvcr-pull-secret", + Namespace: "default", + Labels: clusterValidatorLabels(), + UID: "uid-1", + ResourceVersion: "42", + }, + Type: corev1.SecretTypeOpaque, + } + client := fake.NewSimpleClientset(existing) + + var opts metav1.DeleteOptions + client.PrependReactor("delete", "secrets", func(a ktesting.Action) (bool, runtime.Object, error) { + opts = a.(ktesting.DeleteActionImpl).DeleteOptions + return false, nil, nil + }) + + require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", + "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh)) + + require.NotNil(t, opts.Preconditions, "delete must carry preconditions") + require.NotNil(t, opts.Preconditions.UID) + require.NotNil(t, opts.Preconditions.ResourceVersion) + assert.Equal(t, existing.UID, *opts.Preconditions.UID) + assert.Equal(t, existing.ResourceVersion, *opts.Preconditions.ResourceVersion) +} + +// A conflict means the object changed after the ownership check, so the run +// must stop instead of creating over whatever now holds the name. +func TestWriteDockerConfigSecret_TypeMismatchStopsOnDeleteConflict(t *testing.T) { + fresh := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "key") + client := fake.NewSimpleClientset(&corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: "nvcr-pull-secret", + Namespace: "default", + Labels: clusterValidatorLabels(), + UID: "uid-1", + }, + Type: corev1.SecretTypeOpaque, + }) + client.PrependReactor("delete", "secrets", func(ktesting.Action) (bool, runtime.Object, error) { + return true, nil, apierrors.NewConflict( + schema.GroupResource{Resource: "secrets"}, "nvcr-pull-secret", + errors.New("UID precondition mismatch")) + }) + + created := false + client.PrependReactor("create", "secrets", func(ktesting.Action) (bool, runtime.Object, error) { + created = true + return false, nil, nil + }) + + err := writeDockerConfigSecret(context.Background(), client, "default", + "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh) + require.Error(t, err, "a changed object must abort the replace") + assert.False(t, created, "must not create over an object that was never vetted") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/register.go b/src/clis/nvcf-cli/internal/selfhosted/register.go index 14d18dfdb6..1e8f1bc6ae 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/register.go +++ b/src/clis/nvcf-cli/internal/selfhosted/register.go @@ -319,6 +319,33 @@ var loadKubeConfigFn = loadKubeConfig // When kctx is empty the kubeconfig's current-context is used, preserving // single-cluster behavior. The loading-rules chain follows the same priority // as kubectl: KUBECONFIG env var → ~/.kube/config. +// currentKubeContextNameFn is a seam: tests must not depend on the developer's +// kubeconfig, and hint output would otherwise vary by machine. +var currentKubeContextNameFn = currentKubeContextName + +// currentKubeContextName returns the kubeconfig's current-context, or "" when +// it cannot be read. Used to name the context in remediation hints when the +// caller did not pass one explicitly. Best-effort by design: a hint without +// the flag is still correct at the moment it is printed. +func currentKubeContextName() string { + raw, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig( + clientcmd.NewDefaultClientConfigLoadingRules(), &clientcmd.ConfigOverrides{}, + ).RawConfig() + if err != nil { + return "" + } + return raw.CurrentContext +} + +// effectiveKubeContext resolves the context a probe actually used, so a hint +// naming it stays correct after the current-context changes. +func effectiveKubeContext(kctx string) string { + if kctx != "" { + return kctx + } + return currentKubeContextNameFn() +} + func loadKubeConfig(kctx string) (*rest.Config, error) { loadingRules := clientcmd.NewDefaultClientConfigLoadingRules() overrides := &clientcmd.ConfigOverrides{} diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go index 140fb9fdf9..354dd47d15 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go @@ -37,6 +37,11 @@ const ( // contacted when the stack is not rewriting cert-manager images to // global.image.registry, which global.yaml.gotmpl does for all five of them. certManagerRegistry = "quay.io" + + // ngcRegistry is the default global.image.registry in the stack's + // environments/base.yaml, and the fallback when no source named a + // registry. See the tail of EnumerateRegistries. + ngcRegistry = "nvcr.io" ) // RegistryCredentialChecker probes whether credentials are present and valid @@ -252,7 +257,9 @@ func EnumerateRegistries(imageRef, stackValuesFile string, extras []string) []Re // Critical follows the same rule as every other source rather than being // forced true: an air-gapped install that side-loaded the image never // contacts this registry at pull time (ImagePullPolicy is IfNotPresent). + imageNamedRegistry := false if reg, repo, _, ok := parseImageRef(imageRef); ok && reg != "" { + imageNamedRegistry = true add(reg, repo, isNGCRegistry(reg)) } @@ -295,6 +302,24 @@ func EnumerateRegistries(imageRef, stackValuesFile string, extras []string) []Re add(reg, "", false) } + // Fallback for "no source named a registry at all": no validator image is + // configured and no stack values file resolved. That is the default + // configuration rather than an edge case, and without this the run reports + // on quay.io alone while the operator's NGC credentials go unchecked. + // environments/base.yaml sets global.image.registry to nvcr.io, so it is + // the right guess when there is nothing else to go on. + // + // Deliberately not triggered when the image or the stack named a non-NGC + // registry: that is a mirrored install, which has no reason to reach + // nvcr.io, and probing it there would add a failing round trip for the + // sites least able to make it. + // + // Non-critical, unlike an NGC registry a source actually named. A guess + // must not hard-fail the run, and this category has no opt-out flag. + if !imageNamedRegistry && stackRegistry == "" { + add(ngcRegistry, "", false) + } + return out } diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go index bdafc6d6a3..a173aa284e 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go @@ -23,6 +23,7 @@ import ( "net/http" "net/http/httptest" "os" + "path/filepath" "strings" "testing" @@ -335,3 +336,51 @@ func TestEnumerateRegistries_NonNGCImageRegistryIsNotCritical(t *testing.T) { } t.Fatal("mirror.company.internal not enumerated") } + +// With no validator image and no stack values file, nothing names a registry +// and the run would report on quay.io alone, leaving the operator's NGC +// credentials unchecked in what is the default configuration. +func TestEnumerateRegistries_FallsBackToNGCWhenNothingNamesARegistry(t *testing.T) { + got := EnumerateRegistries("", "", nil) + + var ngc *RegistryEntry + for i := range got { + if got[i].Registry == "nvcr.io" { + ngc = &got[i] + } + } + require.NotNil(t, ngc, "nvcr.io must be probed when no source names a registry") + assert.False(t, ngc.Critical, + "a guessed registry must not hard-fail the run; this category has no opt-out flag") +} + +// A mirrored install has no reason to reach nvcr.io, and probing it there adds +// a failing round trip for the sites least able to make it. +func TestEnumerateRegistries_NoNGCFallbackForAMirroredStack(t *testing.T) { + dir := t.TempDir() + values := filepath.Join(dir, "base.yaml") + require.NoError(t, os.WriteFile(values, + []byte("global:\n image:\n registry: harbor.example.com\n"), 0o600)) + + got := EnumerateRegistries("", values, nil) + for _, e := range got { + assert.NotEqual(t, "nvcr.io", e.Registry, + "a stack that named its own registry must not be probed against NGC") + } +} + +// The fallback must not shadow or duplicate an NGC registry a source named, +// which carries a repo hint and is critical. +func TestEnumerateRegistries_FallbackDoesNotDuplicateNamedNGC(t *testing.T) { + got := EnumerateRegistries("nvcr.io/nvidia/nvcf-byoc/cluster-validator:1.0.0", "", nil) + + n := 0 + for _, e := range got { + if e.Registry == "nvcr.io" { + n++ + assert.True(t, e.Critical, "an NGC registry named by the image stays critical") + assert.Equal(t, "nvidia/nvcf-byoc/cluster-validator", e.RepoHint) + } + } + assert.Equal(t, 1, n, "nvcr.io must appear exactly once") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go index 2f21a76048..e0271db531 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go @@ -171,7 +171,18 @@ func TestProbeStaleNamespaces_MixedNamespaces(t *testing.T) { // -- staleNamespaceCheck binaryCheckSpec -- +// pinCurrentKubeContext keeps hint assertions independent of the developer's +// kubeconfig: without it, a machine with a current-context makes every hint +// carry a --context flag the test did not ask for. +func pinCurrentKubeContext(t *testing.T, name string) { + t.Helper() + prev := currentKubeContextNameFn + currentKubeContextNameFn = func() string { return name } + t.Cleanup(func() { currentKubeContextNameFn = prev }) +} + func TestStaleNamespaceCheck_ProberErrorDegradestoWarning(t *testing.T) { + pinCurrentKubeContext(t, "") // A prober that cannot contact the cluster must not fail the overall check // at error severity - it would produce false failures on transient network // issues or misconfigured kubeconfigs. @@ -186,6 +197,7 @@ func TestStaleNamespaceCheck_ProberErrorDegradestoWarning(t *testing.T) { } func TestStaleNamespaceCheck_StaleIsError(t *testing.T) { + pinCurrentKubeContext(t, "") // A successfully detected stale namespace must fail at error severity so // anyFailed trips the non-zero exit code. prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { @@ -201,6 +213,7 @@ func TestStaleNamespaceCheck_StaleIsError(t *testing.T) { } func TestStaleNamespaceCheck_CleanPasses(t *testing.T) { + pinCurrentKubeContext(t, "") prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { return nil, nil } @@ -209,6 +222,7 @@ func TestStaleNamespaceCheck_CleanPasses(t *testing.T) { } func TestStaleNamespaceCheck_MessageNamesAllStaleNamespaces(t *testing.T) { + pinCurrentKubeContext(t, "") // The remediation command must name every stale namespace so the operator // can copy-paste it without having to cross-reference the check output. prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { @@ -281,6 +295,7 @@ func TestControlPlaneNamespaceList_ExcludesRuntimeOwnedNamespaces(t *testing.T) // kubectl command in a hint runs against whatever context is current, and // these hints delete namespaces. func TestStaleNamespaceCheck_HintsPinTheProbedContext(t *testing.T) { + pinCurrentKubeContext(t, "") prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { return []StaleNamespace{ {Name: "nvcf", Reason: "stuck Terminating"}, @@ -299,6 +314,7 @@ func TestStaleNamespaceCheck_HintsPinTheProbedContext(t *testing.T) { } func TestStaleNamespaceCheck_HintsQuoteTheContext(t *testing.T) { + pinCurrentKubeContext(t, "") prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { return []StaleNamespace{{Name: "nvcf", Reason: "no Helm release"}}, nil } @@ -306,3 +322,45 @@ func TestStaleNamespaceCheck_HintsQuoteTheContext(t *testing.T) { assert.Contains(t, r.Message, "--context 'my ctx' delete namespace nvcf", "a context name with a space must be quoted so the pasted command does not split it") } + +// TestStaleNamespaceCheck_HintsSubstituteTheNamespace guards against a bare +// `` placeholder in a pasteable command: the shell reads `<` and `>` as +// redirection, so the command fails before kubectl runs. +func TestStaleNamespaceCheck_HintsSubstituteTheNamespace(t *testing.T) { + pinCurrentKubeContext(t, "") + prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { + return []StaleNamespace{ + {Name: "nvcf", Reason: "stuck Terminating"}, + {Name: "sis", Reason: "stuck Terminating"}, + }, nil + } + r := staleNamespaceCheck(prober, "", []string{"nvcf", "sis"}).Run(context.Background()) + + assert.NotContains(t, r.Message, "", + "a shell-redirection placeholder must not appear in a copy-pasteable command") + assert.Contains(t, r.Message, "xargs -n1 kubectl get -n nvcf ") + assert.Contains(t, r.Message, "xargs -n1 kubectl get -n sis ") +} + +// TestStaleNamespaceCheck_HintsNameTheCurrentContext covers the single-cluster +// path. The probe followed the current-context, so the hint has to name it: +// the operator can switch context between reading this and pasting it, and +// these commands delete namespaces. +func TestStaleNamespaceCheck_HintsNameTheCurrentContext(t *testing.T) { + pinCurrentKubeContext(t, "k3d-local") + prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { + return []StaleNamespace{{Name: "nvcf", Reason: "no Helm release"}}, nil + } + r := staleNamespaceCheck(prober, "", []string{"nvcf"}).Run(context.Background()) + assert.Contains(t, r.Message, "kubectl --context k3d-local delete namespace nvcf") +} + +// An unreadable kubeconfig must not break the hint; it degrades to no flag. +func TestStaleNamespaceCheck_HintsOmitUnknownContext(t *testing.T) { + pinCurrentKubeContext(t, "") + prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { + return []StaleNamespace{{Name: "nvcf", Reason: "no Helm release"}}, nil + } + r := staleNamespaceCheck(prober, "", []string{"nvcf"}).Run(context.Background()) + assert.Contains(t, r.Message, "kubectl delete namespace nvcf") +} From 458b201686682996ac84c4b75978ce0301f37aeb Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 16 Sep 2026 02:12:32 +0530 Subject: [PATCH 30/55] fix(nvcf-cli): probe the resolved kube context so stale-namespace hints match it --- .../examples/ci-pipelines.md | 5 +- .../agentskill/skilldata_generated.go | 6392 +++++++++-------- .../nvcf-cli/internal/selfhosted/preflight.go | 19 +- .../selfhosted/stale_namespace_test.go | 15 + 4 files changed, 3228 insertions(+), 3203 deletions(-) diff --git a/ai-tooling/user/skills/nvcf-self-managed-cli/examples/ci-pipelines.md b/ai-tooling/user/skills/nvcf-self-managed-cli/examples/ci-pipelines.md index f13e32d79a..ee36891ae5 100644 --- a/ai-tooling/user/skills/nvcf-self-managed-cli/examples/ci-pipelines.md +++ b/ai-tooling/user/skills/nvcf-self-managed-cli/examples/ci-pipelines.md @@ -12,9 +12,9 @@ deploy_nvcf: variables: KUBECONFIG: $KUBECONFIG_FILE script: - - nvcf-cli self-hosted check --pre --json 2>&1 >/dev/null | grep '^{' | jq -e '.event != "phase_failed"' || exit 2 + - nvcf-cli self-hosted check --pre --json 2>&1 >/dev/null | grep '^{' | jq -se 'length > 0 and all(.[]; .event != "phase_failed")' || exit 2 - nvcf-cli self-hosted up --cluster-name=$CLUSTER_NAME --token=$NVCF_ADMIN_JWT --non-interactive --json - - nvcf-cli self-hosted status --json 2>&1 >/dev/null | grep '^{' | jq -e '.verdict == "healthy"' + - nvcf-cli self-hosted status --json 2>&1 >/dev/null | grep '^{' | jq -se 'any(.[]; .verdict == "healthy")' ``` Notes: @@ -22,6 +22,7 @@ Notes: - `--non-interactive --token=$JWT` is required in CI; never use interactive `init`. - Always `--json` for machine-parsing. - `--json` writes JSONL to stderr, not stdout, so redirect with `2>&1 >/dev/null` before a parser. +- Slurp with `jq -s` before testing a condition. Without it `jq -e` takes its exit status from the last event alone, so a `phase_failed` followed by any other event still exits 0. - stderr also carries plain-text notices, so filter to JSON lines. Do not add `--show-logs` here: it appends a non-JSON transcript to the same stream. - Final status check gates downstream stages on `verdict == "healthy"`. diff --git a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go index d51dddae64..fb4c37f925 100644 --- a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go +++ b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go @@ -31,14 +31,14 @@ import ( const skillDataZipBase64 = "" + "UEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAASAAkAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4S" + "ewogICJzY2hlbWFWZXJzaW9uIjogMSwKICAiZ2VuZXJhdGVkQXQiOiAiMTk3MC0wMS0wMVQwMDow" + - "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDMwMjMsCiAgImZp" + + "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDMyNDAsCiAgImZp" + "bGVzIjogWwogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvU0tJTEwu" + "bWQiLAogICAgICAic2hhMjU2IjogImFhOWY3ZTI0NmYzODA0YjMzNDNiNjU2MWU1YmNmZTdiYjcy" + "YjI0MDIxOTMzZTA0OWY4NWUwMDI4OTAzYmJmYTQiLAogICAgICAic2l6ZSI6IDI0OTE1CiAgICB9" + "LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvZXhhbXBsZXMvY2kt" + - "cGlwZWxpbmVzLm1kIiwKICAgICAgInNoYTI1NiI6ICI4NGVlNGE0MDc3MzRkYjkzZWRhMjg2OTBk" + - "NTk5OGU2ZWI0YjBlYTkwMTFlY2U4YWIxYWE2OWQyNzMzNjU2OTRmIiwKICAgICAgInNpemUiOiAz" + - "MTA3CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvZXhh" + + "cGlwZWxpbmVzLm1kIiwKICAgICAgInNoYTI1NiI6ICJkMzM5M2VmOTVhZWRiYWE1NzBiY2JiZjQ3" + + "MzVkM2ZhYjI1MzY0MDdlM2U1NjdlZmMzNzhhOWVkM2JiYTJmMWNjIiwKICAgICAgInNpemUiOiAz" + + "MzI0CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvZXhh" + "bXBsZXMvbXVsdGktY2x1c3Rlci5tZCIsCiAgICAgICJzaGEyNTYiOiAiNmRmMjg0NjBiNTgzNDNl" + "MjEwMjVhYTViZDc5ZjMzYjUxMmRjYTlmZjM5YjZhYjI2MDRmYzNmZWJiMDE1ODhiNCIsCiAgICAg" + "ICJzaXplIjogMzE2NQogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + @@ -103,7 +103,7 @@ const skillDataZipBase64 = "" + "aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9wdWxsLXNlY3Jl" + "dHMubWQiLAogICAgICAic2hhMjU2IjogImVjMWYzZmZjZDE3ZTVmOTU4M2ZlZTM5NzQ0ZWU4OTdk" + "NDY2YmMzY2Y2Mzg5Mjk0MjY0ZDg5ZTdmOWVkMDFiODciLAogICAgICAic2l6ZSI6IDU2MzIKICAg" + - "IH0KICBdCn0KUEsHCE8jOeVKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + + "IH0KICBdCn0KUEsHCAICbAFKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + "dGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQFAAEAps4SLS0tCm5hbWU6IG52Y2Yt" + "c2VsZi1tYW5hZ2VkLWNsaQpkZXNjcmlwdGlvbjogfAogIEluc3RhbGwsIG9wZXJhdGUsIGFuZCB0" + "ZWFyIGRvd24gc2VsZi1ob3N0ZWQgTlZJRElBIENsb3VkIEZ1bmN0aW9ucyAoTlZDRikKICBkZXBs" + @@ -550,2252 +550,3083 @@ const skillDataZipBase64 = "" + "cGxlCmRlcGxveV9udmNmOgogIHN0YWdlOiBkZXBsb3kKICBpbWFnZTogbnZjci5pby8wNjUxMTU1" + "MjE1ODY0OTc5L25jcC1kZXYvbnZjZi1jbGk6MS40LjAKICB2YXJpYWJsZXM6CiAgICBLVUJFQ09O" + "RklHOiAkS1VCRUNPTkZJR19GSUxFCiAgc2NyaXB0OgogICAgLSBudmNmLWNsaSBzZWxmLWhvc3Rl" + - "ZCBjaGVjayAtLXByZSAtLWpzb24gMj4mMSA+L2Rldi9udWxsIHwgZ3JlcCAnXnsnIHwganEgLWUg" + - "Jy5ldmVudCAhPSAicGhhc2VfZmFpbGVkIicgfHwgZXhpdCAyCiAgICAtIG52Y2YtY2xpIHNlbGYt" + - "aG9zdGVkIHVwIC0tY2x1c3Rlci1uYW1lPSRDTFVTVEVSX05BTUUgLS10b2tlbj0kTlZDRl9BRE1J" + - "Tl9KV1QgLS1ub24taW50ZXJhY3RpdmUgLS1qc29uCiAgICAtIG52Y2YtY2xpIHNlbGYtaG9zdGVk" + - "IHN0YXR1cyAtLWpzb24gMj4mMSA+L2Rldi9udWxsIHwgZ3JlcCAnXnsnIHwganEgLWUgJy52ZXJk" + - "aWN0ID09ICJoZWFsdGh5IicKYGBgCgpOb3RlczoKCi0gYC0tbm9uLWludGVyYWN0aXZlIC0tdG9r" + - "ZW49JEpXVGAgaXMgcmVxdWlyZWQgaW4gQ0k7IG5ldmVyIHVzZSBpbnRlcmFjdGl2ZSBgaW5pdGAu" + - "Ci0gQWx3YXlzIGAtLWpzb25gIGZvciBtYWNoaW5lLXBhcnNpbmcuCi0gYC0tanNvbmAgd3JpdGVz" + - "IEpTT05MIHRvIHN0ZGVyciwgbm90IHN0ZG91dCwgc28gcmVkaXJlY3Qgd2l0aCBgMj4mMSA+L2Rl" + - "di9udWxsYCBiZWZvcmUgYSBwYXJzZXIuCi0gc3RkZXJyIGFsc28gY2FycmllcyBwbGFpbi10ZXh0" + - "IG5vdGljZXMsIHNvIGZpbHRlciB0byBKU09OIGxpbmVzLiBEbyBub3QgYWRkIGAtLXNob3ctbG9n" + - "c2AgaGVyZTogaXQgYXBwZW5kcyBhIG5vbi1KU09OIHRyYW5zY3JpcHQgdG8gdGhlIHNhbWUgc3Ry" + - "ZWFtLgotIEZpbmFsIHN0YXR1cyBjaGVjayBnYXRlcyBkb3duc3RyZWFtIHN0YWdlcyBvbiBgdmVy" + - "ZGljdCA9PSAiaGVhbHRoeSJgLgoKIyMgR2l0T3BzIChBcmdvIC8gRmx1eCkgcGF0dGVybgoKQ0kg" + - "ZG9lc24ndCBga3ViZWN0bCBhcHBseWAg4oCUIGluc3RlYWQsIHJlbmRlciBtYW5pZmVzdHMsIGNv" + - "bW1pdCB0aGVtLCBsZXQgdGhlIGNvbnRyb2xsZXIgYXBwbHkuCgpgYGB5YW1sCnJlbmRlcjoKICBz" + - "Y3JpcHQ6CiAgICAtIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGluc3RhbGwgLS1jb250cm9sLXBsYW5l" + - "IC0tbm8tYXBwbHkgPiByZW5kZXJlZC9jb250cm9sLXBsYW5lLnlhbWwKICAgIC0gbnZjZi1jbGkg" + - "c2VsZi1ob3N0ZWQgaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9JE5BTUUg" + - "LS1uby1hcHBseSA+IHJlbmRlcmVkL2NvbXB1dGUtcGxhbmUueWFtbAogICAgLSBnaXQgYWRkIHJl" + - "bmRlcmVkLyAmJiBnaXQgY29tbWl0IC1tICJkZXBsb3kgTlZDRiAkVEFHIiAmJiBnaXQgcHVzaApg" + - "YGAKClRoZW4gQXJnb0NEIG9yIEZsdXggd2F0Y2hlcyBgcmVuZGVyZWQvYCBhbmQgYXBwbGllcy4g" + - "VGhlIENMSSBuZXZlciB0b3VjaGVzIHRoZSBjbHVzdGVyIGRpcmVjdGx5LgoKRm9yIHRoZSByZWdp" + - "c3RlciBzdGVwICh3aGljaCBtdXRhdGVzIElDTVMsIG5vdCBqdXN0IEs4cyk6CgpgYGB5YW1sCnJl" + - "Z2lzdGVyOgogIHNjcmlwdDoKICAgIC0gbnZjZi1jbGkgY2x1c3RlciByZWdpc3RlciAtLW5hbWU9" + - "JE5BTUUgLS1uY2EtaWQ9JE5DQSAtLXJlZ2lvbj0kUkVHSU9OIC0taWdub3JlLWV4aXN0aW5nCmBg" + - "YAoKYC0taWdub3JlLWV4aXN0aW5nYCBpcyB0aGUgR2l0T3BzLWZyaWVuZGx5IGlkZW1wb3RlbnQg" + - "Y29udHJhY3QuCgojIyBNdWx0aS1jbHVzdGVyIHBpcGVsaW5lCgpXaGVuIHRoZSBwaXBlbGluZSBt" + - "YW5hZ2VzIG1hbnkgY29tcHV0ZSBjbHVzdGVycyBhZ2FpbnN0IG9uZSBjb250cm9sIHBsYW5lOgoK" + - "YGBgeWFtbApkZXBsb3lfY29tcHV0ZV9wbGFuZXM6CiAgcGFyYWxsZWw6CiAgICBtYXRyaXg6CiAg" + - "ICAgIC0gQ0xVU1RFUjogbmNwLWVhc3QtMQogICAgICAgIENPTlRFWFQ6IGFkbWluQGdwdS1lYXN0" + - "LTEKICAgICAgLSBDTFVTVEVSOiBuY3Atd2VzdC0xCiAgICAgICAgQ09OVEVYVDogYWRtaW5AZ3B1" + - "LXdlc3QtMQogICAgICAtIENMVVNURVI6IG5jcC1ldS0xCiAgICAgICAgQ09OVEVYVDogYWRtaW5A" + - "Z3B1LWV1LTEKICBzY3JpcHQ6CiAgICAtIG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwCiAgICAgICAg" + - "LS1jbHVzdGVyLW5hbWU9JENMVVNURVIKICAgICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD0k" + - "Q09OVEVYVAogICAgICAgIC0taWNtcy11cmw9JElDTVNfUFVCTElDX1VSTAogICAgICAgIC0tdG9r" + - "ZW49JE5WQ0ZfQURNSU5fSldUCiAgICAgICAgLS1ub24taW50ZXJhY3RpdmUKICAgICAgICAtLWpz" + - "b24KYGBgCgpFYWNoIHBhcmFsbGVsIGpvYiByZWdpc3RlcnMgKyBpbnN0YWxscyBvbmUgY29tcHV0" + - "ZSBwbGFuZSBhZ2FpbnN0IHRoZSBzaGFyZWQgY29udHJvbCBwbGFuZS4gRmFpbHVyZXMgYXJlIGlz" + - "b2xhdGVkLgoKIyMgUGxhbi1vbmx5IHByZXZpZXcgaW4gUFJzCgpgYGB5YW1sCnByZXZpZXc6CiAg" + - "cnVsZXM6CiAgICAtIGlmOiAkQ0lfUElQRUxJTkVfU09VUkNFID09ICJtZXJnZV9yZXF1ZXN0X2V2" + - "ZW50IgogIHNjcmlwdDoKICAgIC0gfAogICAgICBudmNmLWNsaSBzZWxmLWhvc3RlZCB1cCBcCiAg" + - "ICAgICAgLS1jbHVzdGVyLW5hbWU9JENMVVNURVJfTkFNRSBcCiAgICAgICAgLS1wbGFuLW9ubHkg" + - "XAogICAgICAgIC0tanNvbiB8IHRlZSBwbGFuLmpzb25sCiAgICAtIGpxIC1zICcuWzBdJyBwbGFu" + - "Lmpzb25sID4gcGxhbi5qc29uCiAgICAtICdnaXRsYWItbXItY29tbWVudCAiIyMgTlZDRiBkZXBs" + - "b3kgcGxhblxuXG5cYFxgXGBqc29uXG4kKGNhdCBwbGFuLmpzb24pXG5cYFxgXGAiJwpgYGAKCmAt" + - "LXBsYW4tb25seWAgZXhpdHMgMCB3aXRob3V0IGNoYW5naW5nIGNsdXN0ZXIgc3RhdGU7IHRoZSBK" + - "U09OTCBvdXRwdXQgbGlzdHMgZWFjaCBwaGFzZSArIEVUQS4gUmVuZGVycyBuaWNlbHkgYXMgYW4g" + - "TVIgY29tbWVudC4KUEsHCG3jewUjDAAAIwwAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAANAAJ" + - "AGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL2V4YW1wbGVzL211bHRpLWNsdXN0ZXIubWRVVAUA" + - "AQCmzhIjIE11bHRpLWNsdXN0ZXIgcGF0dGVybnMKCkV4YW1wbGVzIG9mIHNwbGl0LWNsdXN0ZXIg" + - "KyBtYW55LWNvbXB1dGUtcGxhbmUgb3BlcmF0aW9uLgoKIyMgT25lIGNvbnRyb2wgcGxhbmUgKyBO" + - "IGNvbXB1dGUgcGxhbmVzCgpUaGUgY2Fub25pY2FsIG11bHRpLWNsdXN0ZXIgdG9wb2xvZ3kuIEVh" + - "Y2ggY29tcHV0ZSBwbGFuZSBpcyByZWdpc3RlcmVkIHNlcGFyYXRlbHk6CgpgYGBzaAojIDEuIEJy" + - "aW5nIHVwIHRoZSBjb250cm9sIHBsYW5lIChvbmUtdGltZSwgb24gdGhlIGNvbnRyb2wtcGxhbmUg" + - "Y2x1c3Rlcik6CktVQkVDT05GSUc9Y3AueWFtbCBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxs" + - "IC0tY29udHJvbC1wbGFuZSB8IGt1YmVjdGwgYXBwbHkgLWYgLQpudmNmLWNsaSBzZWxmLWhvc3Rl" + - "ZCBjaGVjayAtLWNvbnRyb2wtcGxhbmUgLS13YWl0IDVtCgojIDIuIFJlZ2lzdGVyICsgaW5zdGFs" + - "bCBlYWNoIGNvbXB1dGUgcGxhbmU6CmZvciBDVFggaW4gYWRtaW5AZ3B1LWVhc3QtMSBhZG1pbkBn" + - "cHUtd2VzdC0xIGFkbWluQGdwdS1ldS0xOyBkbwogIE5BTUU9JChlY2hvICIkQ1RYIiB8IGN1dCAt" + - "ZEAgLWYyKQogIG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwIFwKICAgIC0tY2x1c3Rlci1uYW1lPSRO" + - "QU1FIFwKICAgIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0PSRDVFggXAogICAgLS1pY21zLXVybD1o" + - "dHRwczovL2ljbXMubnZjZi5leGFtcGxlLmNvbSBcCiAgICAtLXRva2VuPSROVkNGX0FETUlOX0pX" + - "VCBcCiAgICAtLW5vbi1pbnRlcmFjdGl2ZSBcCiAgICAtLWpzb24KZG9uZQoKIyAzLiBWZXJpZnkg" + - "YWxsIGNvbXB1dGUgcGxhbmVzIHJlZ2lzdGVyZWQ6Cm52Y2YtY2xpIGNsdXN0ZXIgbGlzdC1yZWdp" + - "c3RlcmVkIC0tbmNhLWlkPSROQ0FfSUQgLS1pY21zLXVybD0kSUNNUyAtLWpzb24gXAogIHwganEg" + - "Jy5jbHVzdGVyc1tdIHwge25hbWU6IC5jbHVzdGVyTmFtZSwgc3RhdHVzLCBudmNhVmVyc2lvbn0n" + - "CmBgYAoKIyMgQ29tcHV0ZS1wbGFuZS1vbmx5IG9wZXJhdG9yIHNjZW5hcmlvCgpUaGUgb3BlcmF0" + - "b3IgaGFzIGt1YmVjdGwgYWNjZXNzIHRvIE9ORSBjb21wdXRlIHBsYW5lIG9ubHkg4oCUIHRoZSBj" + - "b250cm9sIHBsYW5lIGlzIG9wZXJhdGVkIGJ5IHNvbWVvbmUgZWxzZSAoZS5nLiBZb3R0YSBydW5z" + - "IHRoZSBjb250cm9sIHBsYW5lIGZvciBhIGN1c3RvbWVyKS4KCmBgYHNoCiMgTWludCBhIHRva2Vu" + - "IHZpYSB0aGUgcHVibGljIGFwaSBnYXRld2F5ICh0aGUgY29udHJvbCBwbGFuZSdzIEFQSSBLZXlz" + - "CiMgc2VydmljZSBpcyByZWFjaGFibGUgdmlhIGFwaS5udmNmLmV4YW1wbGUuY29tIOKAlCBubyBr" + - "dWJlY3RsIGFjY2VzcyBuZWVkZWQpOgpudmNmLWNsaSBpbml0IC0tYXBpLXVybD1odHRwczovL2Fw" + - "aS5udmNmLmV4YW1wbGUuY29tCgojIFJ1biBwcmUtZmxpZ2h0IHNjb3BlZCB0byB0aGUgY29tcHV0" + - "ZSBwbGFuZSBvbmx5OgpudmNmLWNsaSBzZWxmLWhvc3RlZCBjaGVjayAtLXByZSBcCiAgLS1jb21w" + - "dXRlLXBsYW5lLWNvbnRleHQ9YWRtaW5AZ3B1MSBcCiAgLS1pY21zLXVybD1odHRwczovL2ljbXMu" + - "bnZjZi5leGFtcGxlLmNvbSBcCiAgLS1qc29uCgojIEJyaW5nIHVwIGp1c3QgdGhlIGNvbXB1dGUg" + - "cGxhbmU6Cm52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwIFwKICAtLWNsdXN0ZXItbmFtZT1teS1jb21w" + - "dXRlLTEgXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0PWFkbWluQGdwdTEgXAogIC0taWNtcy11" + - "cmw9aHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBsZS5jb20gXAogIC0tdG9rZW49JEFETUlOX0pXVCBc" + - "CiAgLS1ub24taW50ZXJhY3RpdmUKCiMgU3RhdHVzIChjb21wdXRlLW9ubHkg4oCUIG9wZXJhdG9y" + - "IGNhbid0IHNlZSBjb250cm9sLXBsYW5lIGNvbXBvbmVudCBoZWFsdGgpOgpudmNmLWNsaSBzZWxm" + - "LWhvc3RlZCBzdGF0dXMgXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0PWFkbWluQGdwdTEgXAog" + - "IC0taWNtcy11cmw9aHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBsZS5jb20KYGBgCgojIyBGdW5jdGlv" + - "bnMgdGFyZ2V0aW5nIHNwZWNpZmljIGNvbXB1dGUgcGxhbmVzCgpXaGVuIHlvdSBoYXZlIG11bHRp" + - "cGxlIGNvbXB1dGUgcGxhbmVzIGFuZCB3YW50IGEgZnVuY3Rpb24gdG8gZGVwbG95IHRvIG9uZToK" + - "CmBgYGpzb24KewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAiPHZl" + - "cl9pZD4iLAogICJkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnMiOiBbewogICAgImdwdSI6ICJIMTAw" + - "IiwKICAgICJpbnN0YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAwXzF4IiwKICAgICJtaW5JbnN0YW5j" + - "ZXMiOiAxLAogICAgIm1heEluc3RhbmNlcyI6IDEsCiAgICAiY2x1c3RlcnMiOiBbImdwdS1lYXN0" + - "LTEiXQogIH1dCn0KYGBgCgpUaGUgYGNsdXN0ZXJzYCBhcnJheSAodXNpbmcgY2x1c3RlciBuYW1l" + - "cywgbm90IElEcykgbGltaXRzIHNjaGVkdWxpbmcgdG8gdGhvc2UgY29tcHV0ZSBwbGFuZXMuIE9t" + - "aXQgdG8gbGV0IElDTVMgY2hvb3NlIGFueSBjb21wdXRlIHBsYW5lIHdpdGggYSBtYXRjaGluZyBT" + - "S1UuCgojIyBTdGF0dXMgZmFuLW91dCBhY3Jvc3MgY29tcHV0ZSBwbGFuZXMKCmBgYHNoCiMgTGlz" + - "dCBhbGwgcmVnaXN0ZXJlZCBjb21wdXRlIHBsYW5lczoKbnZjZi1jbGkgY2x1c3RlciBsaXN0LXJl" + - "Z2lzdGVyZWQgLS1uY2EtaWQ9JE5DQV9JRCAtLWljbXMtdXJsPSRJQ01TIC0tanNvbiBcCiAgfCBq" + - "cSAtciAnLmNsdXN0ZXJzW10uY2x1c3Rlck5hbWUnID4gY2x1c3RlcnMudHh0CgojIFN0YXR1cyBz" + - "bmFwc2hvdCBwZXIgY29tcHV0ZSBwbGFuZSAoYXNzdW1pbmcgZWFjaCBjb250ZXh0IG5hbWUgbWF0" + - "Y2hlcyk6CndoaWxlIHJlYWQgTkFNRTsgZG8KICBlY2hvICI9PT0gJE5BTUUgPT09IgogIG52Y2Yt" + - "Y2xpIHNlbGYtaG9zdGVkIHN0YXR1cyBcCiAgICAtLWNsdXN0ZXItbmFtZT0kTkFNRSBcCiAgICAt" + - "LWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkAkTkFNRSBcCiAgICAtLWpzb24gfCBqcSAtYyAn" + - "e2NsdXN0ZXI6LmNsdXN0ZXIsIHZlcmRpY3Q6LnZlcmRpY3QsIHJlY29uY2lsZToucmVjb25jaWxl" + - "QWdlU2VjfScKZG9uZSA8IGNsdXN0ZXJzLnR4dApgYGAKCkEgZnV0dXJlIE0rMTEgbWlsZXN0b25l" + - "IHdpbGwgYWRkIG5hdGl2ZSBmYW4tb3V0IChgc3RhdHVzIC0tYWxsLWNvbXB1dGUtcGxhbmVzYCkg" + - "c28gdGhpcyBkb2Vzbid0IG5lZWQgYSBzaGVsbCBsb29wLgpQSwcIoRTjgV0MAABdDAAAUEsDBBQA" + - "CAAAAAAAIQAAAAAAAAAAAAAAAAA3AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0" + - "cy9hZGQtY29tcHV0ZS1wbGFuZS5tZFVUBQABAKbOEiMgQWRkIGEgY29tcHV0ZSBwbGFuZSB0byBh" + - "biBleGlzdGluZyBjb250cm9sIHBsYW5lCgpVc2VyIGhhcyBhIHdvcmtpbmcgTlZDRiBjb250cm9s" + - "IHBsYW5lIChydW5uaW5nIHNvbWV3aGVyZSkgYW5kIHdhbnRzIHRvIHJlZ2lzdGVyIGEgbmV3IEdQ" + - "VSBjbHVzdGVyIGFnYWluc3QgaXQuIFRoaXMgaXMgdGhlIG11bHRpLWNsdXN0ZXIgc2NhbGluZyBw" + - "YXRoOiBvbmUgY29udHJvbCBwbGFuZSDihpIgTiBjb21wdXRlIHBsYW5lcy4KCiMjIFByZXJlcXVp" + - "c2l0ZXMgdGhlIHVzZXIgbXVzdCBoYXZlCgotICoqa3ViZWN0bCBjb250ZXh0IGZvciB0aGUgbmV3" + - "IGNvbXB1dGUgcGxhbmUqKiBpbiB0aGVpciBgS1VCRUNPTkZJR2AuCi0gKipQdWJsaWMgSUNNUyBV" + - "UkwqKiBvZiB0aGUgZXhpc3RpbmcgY29udHJvbCBwbGFuZSAoZS5nLiBgaHR0cHM6Ly9pY21zLm52" + - "Y2YuZXhhbXBsZS5jb21gKS4KLSAqKkFkbWluIEpXVCoqIGZvciB0aGUgY29udHJvbCBwbGFuZSdz" + - "IGFjY291bnQsIE9SIGFiaWxpdHkgdG8gbWludCBvbmUgdmlhIGBudmNmLWNsaSBpbml0YCBhZ2Fp" + - "bnN0IHRoZSBjb250cm9sIHBsYW5lJ3MgcHVibGljIGFwaSBlbmRwb2ludC4gKEFkbWluIHRva2Vu" + - "cyBjb21lIGZyb20gdGhlIEFQSSBLZXlzIHNlcnZpY2UgdmlhIHRoZSBwdWJsaWMgYXBpIGdhdGV3" + - "YXkg4oCUIGt1YmVjdGwgYWNjZXNzIHRvIHRoZSBjb250cm9sIHBsYW5lIGlzIE5PVCByZXF1aXJl" + - "ZCB0byBvYnRhaW4gb25lLikKLSBBIHVuaXF1ZSBgLS1jbHVzdGVyLW5hbWVgIHRoYXQgZG9lc24n" + - "dCBjb2xsaWRlIHdpdGggYWxyZWFkeS1yZWdpc3RlcmVkIGNsdXN0ZXJzLiBVc2UgYG52Y2YtY2xp" + - "IGNsdXN0ZXIgbGlzdC1yZWdpc3RlcmVkIC0tbmNhLWlkPSROQ0FfSUQgLS1pY21zLXVybD0kSUNN" + - "U2AgdG8gY2hlY2suCgojIyBTdGVwcwoKMS4gKipBc2sgZm9yIGlucHV0czoqKgogICAtIGAtLWNs" + - "dXN0ZXItbmFtZT08dW5pcXVlPmAg4oCUIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgY29udHJv" + - "bCBwbGFuZSdzIE5DQSBzY29wZQogICAtIGAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD08Y29udGV4" + - "dD5gIOKAlCB0aGUgbmV3IEdQVSBjbHVzdGVyJ3Mga3ViZWN0bCBjb250ZXh0CiAgIC0gYC0taWNt" + - "cy11cmw9PGh0dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUuY29tPmAg4oCUIGNvbnRyb2wgcGxhbmUn" + - "cyBwdWJsaWMgSUNNUyBVUkwKICAgLSBHUFUgdHlwZT8gKGRlZmF1bHQgYEgxMDBgLCBidXQgYXNr" + - "KQoKMi4gKipQcmUtZmxpZ2h0IGp1c3QgdGhlIGNvbXB1dGUgcGxhbmU6KioKCiAgIGBgYHNoCiAg" + - "IG52Y2YtY2xpIHNlbGYtaG9zdGVkIGNoZWNrIC0tcHJlIFwKICAgICAtLWNvbXB1dGUtcGxhbmUt" + - "Y29udGV4dD0kQ1RYIFwKICAgICAtLWljbXMtdXJsPSRJQ01TIFwKICAgICAtLWpzb24gfCBqcSAt" + - "YyAuCiAgIGBgYAoKICAgVGhpcyB2YWxpZGF0ZXMgdGhlIEdQVSBvcGVyYXRvciBpcyBpbnN0YWxs" + - "ZWQsIEdQVSBub2RlIGxhYmVscyBhcmUgcHJlc2VudCwgYW5kIElDTVMgaXMgcmVhY2hhYmxlIHZp" + - "YSBIVFRQLiBBZGRyZXNzIGFueSBmYWlsdXJlcyBiZWZvcmUgcHJvY2VlZGluZy4KCjMuICoqUnVu" + - "IGBhZGQtY29tcHV0ZS1wbGFuZWA6KioKCiAgIGBgYHNoCiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVk" + - "IGFkZC1jb21wdXRlLXBsYW5lIFwKICAgICAtLWNsdXN0ZXItbmFtZT0kTkFNRSBcCiAgICAgLS1j" + - "b21wdXRlLXBsYW5lLWNvbnRleHQ9JENUWCBcCiAgICAgLS1pY21zLXVybD0kSUNNUyBcCiAgICAg" + - "LS10b2tlbj0kSldUIFwKICAgICAtLW5vbi1pbnRlcmFjdGl2ZSBcCiAgICAgLS1qc29uCiAgIGBg" + - "YAoKICAgVGhpcyBpcyBhIHNlcGFyYXRlIHN1YmNvbW1hbmQgZnJvbSBgdXBgLiBJdCBydW5zIG9u" + - "bHkgdGhlIGNvbXB1dGUtcGxhbmUtcmVsZXZhbnQgcGhhc2VzOiAxIChjb21wdXRlLXBsYW5lIHBy" + - "ZWZsaWdodCksIDUgKHJlZ2lzdGVyKSwgNiAoY29tcHV0ZS1wbGFuZSBhcHBseSksIDggKGZpbmFs" + - "IGhlYWx0aCBvbiB0aGUgbmV3IGNvbXB1dGUgcGxhbmUpLiBJdCBkb2VzIE5PVCB0b3VjaCB0aGUg" + - "Y29udHJvbCBwbGFuZSBhbmQgZG9lcyBOT1QgYWNjZXB0IGAtLWNvbnRyb2wtcGxhbmUtY29udGV4" + - "dGAg4oCUIHRoZSBjb250cm9sIHBsYW5lIGlzIHJlYWNoZWQgb3ZlciBIVFRQUyBhdCBgLS1pY21z" + - "LXVybGAuIGAtLXRva2VuYCBpcyByZXF1aXJlZCBiZWNhdXNlIHRoZXJlJ3Mgbm8ga3ViZWN0bCBw" + - "YXRoIHRvIG1pbnQgb25lIGZyb20uCgo0LiAqKlZlcmlmeS4qKiBgbnZjZi1jbGkgc2VsZi1ob3N0" + - "ZWQgc3RhdHVzIC0tY2x1c3Rlci1uYW1lPSROQU1FIC0tanNvbiB8IGpxYCDigJQgZXhwZWN0IGB2" + - "ZXJkaWN0OiAiaGVhbHRoeSJgLiBUaGUgUmVnaXN0ZXJlZCBDb21wdXRlIFBsYW5lcyBwYW5lbCBm" + - "cm9tIElDTVMgc2hvdWxkIG5vdyBsaXN0IHRoZSBuZXcgY2x1c3Rlci4KCjUuICoqU21va2UuKiog" + - "W2RlcGxveS1hbmQtaW52b2tlLm1kXShkZXBsb3ktYW5kLWludm9rZS5tZCkg4oCUIGRlcGxveSBh" + - "IHNtYWxsIGZ1bmN0aW9uIHRvIHRoZSBuZXcgY29tcHV0ZSBwbGFuZSB0byBjb25maXJtIHNjaGVk" + - "dWxpbmcgd29ya3MuCgojIyBXaGF0IGlmIGEgY2x1c3RlciB3aXRoIHRoZSBzYW1lIG5hbWUgYWxy" + - "ZWFkeSBleGlzdHM/CgpgYWRkLWNvbXB1dGUtcGxhbmVgJ3MgcmVnaXN0ZXIgcGhhc2UgdXNlcyBg" + - "LS1pZ25vcmUtZXhpc3RpbmdgIHNlbWFudGljcyDigJQgaXQnbGwgbWF0Y2ggdGhlIGV4aXN0aW5n" + - "IElDTVMgcm93IGFuZCByZXVzZSBpdHMgY2x1c3RlcklkLiBUd28gc2NlbmFyaW9zOgoKLSAqKlJl" + - "LXJlZ2lzdGVyaW5nIHRoZSBzYW1lIGNsdXN0ZXIqKiAocmUtcnVubmluZyBvbiB0aGUgc2FtZSBj" + - "b21wdXRlIHBsYW5lIHRoYXQgd2FzIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCk6IGV4cGVjdGVkLCBu" + - "by1vcCBzZW1hbnRpY3MuCi0gKipEaWZmZXJlbnQgcGh5c2ljYWwgY2x1c3RlciBidXQgc2FtZSBu" + - "YW1lKio6IHRoZSBzZWNvbmQgYXR0ZW1wdCB3aWxsIHJldXNlIHRoZSBJQ01TIHJvdywgYnV0IHRo" + - "ZSBuZXcgY29tcHV0ZSBwbGFuZSdzIEpXS1Mgd2lsbCBiZSBzaWxlbnRseSAqcmVwbGFjZWQqIOKA" + - "lCB0aGUgb2xkIGNvbXB1dGUgcGxhbmUncyBOVkNBIGFnZW50IHdpbGwgc3RhcnQgZmFpbGluZyBQ" + - "U0FUIGF1dGguICoqQ29uZmlybSB3aXRoIHRoZSB1c2VyKiogdGhhdCB0aGV5IG1lYW50IHRvIG92" + - "ZXJ3cml0ZS4KCldoZW4gaW4gZG91YnQsIHJ1biBgbnZjZi1jbGkgY2x1c3RlciBsaXN0LXJlZ2lz" + - "dGVyZWQgLS1uY2EtaWQ9JE5DQV9JRCAtLWljbXMtdXJsPSRJQ01TYCBmaXJzdCBhbmQgYXNrIHRo" + - "ZSB1c2VyIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggYSBuYW1lIHRoYXQgYWxyZWFkeSBleGlzdHMu" + - "ClBLBwhCJ0kPBQ0AAAUNAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADkACQBkYXRhL252Y2Yt" + - "c2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2NyZWF0ZS1hbmQtcnVuLXRhc2subWRVVAUAAQCmzhIj" + - "IENyZWF0ZSBhbmQgcnVuIGEgdGFzawoKU3RhbmRhcmQgZmxvdzogbWludCBBUEkga2V5cyAtPiB0" + - "YXNrIENSRUFURSAtPiBtb25pdG9yIC0+IHJldHJpZXZlIHJlc3VsdHMgLT4gY2xlYW51cC4KCiMj" + - "IDEuIE1pbnQgQVBJIGtleXMKClRoZSBhZG1pbiB0b2tlbiBmcm9tIGBpbml0YCBkb2VzIG5vdCBj" + - "YXJyeSB0YXNrIGludm9jYXRpb24gc2NvcGUuIEdlbmVyYXRlIEFQSSBrZXlzOgoKYGBgc2gKbnZj" + - "Zi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWRlc2NyaXB0aW9uPSJ0YXNrIHNtb2tlIHRlc3QiIC0t" + - "ZXhwaXJlcy1pbj04aAojIC0+IGZ1bmN0aW9uIGtleTogbnZhcGktLi4uCiMgLT4gdGFzayBrZXk6" + - "IG52YXBpLS4uLgpgYGAKCkJvdGgga2V5cyBhcmUgc2F2ZWQgdG8gQ0xJIHN0YXRlLiBUbyBtaW50" + - "IG9ubHkgdGhlIHRhc2sga2V5OgoKYGBgc2gKbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWZv" + - "ciB0YXNrIC0tZGVzY3JpcHRpb249InRhc2sgc21va2UgdGVzdCIgLS1leHBpcmVzLWluPThoCmBg" + - "YAoKVG8gdmFsaWRhdGUgZWFjaCBrZXkgaW1tZWRpYXRlbHkgYWZ0ZXIgbWludGluZzoKCmBgYHNo" + - "Cm52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj0idGFzayBzbW9rZSB0ZXN0" + - "IiAtLWV4cGlyZXMtaW49OGggLS12YWxpZGF0ZQojIC0+IGZ1bmN0aW9uIEFQSSBrZXkgdmFsaWRh" + - "dGlvbiBwYXNzZWQhCiMgLT4gdGFzayBBUEkga2V5IHZhbGlkYXRpb24gcGFzc2VkIQpgYGAKCk5l" + - "dmVyIGVjaG8gdGhlIGtleSB2YWx1ZSAobnZhcGktLi4uKSBpbnRvIGNoYXQgb3IgbG9ncy4gUmVw" + - "b3J0IG9ubHkgdGhhdCB0aGUga2V5IHdhcyBtaW50ZWQsIGl0cyBkZXNjcmlwdGlvbiwgYW5kIGl0" + - "cyBleHBpcnkg4oCUIG5ldmVyIHRoZSB2YWx1ZSBpdHNlbGYuCgojIyMgRnJlc2ggc2Vzc2lvbiBw" + - "cmUtZmxpZ2h0CgpCZWZvcmUgcnVubmluZyBhbnkgYHRhc2tgIGNvbW1hbmQgaW4gYSBmcmVzaCBh" + - "Z2VudCBzZXNzaW9uLCB2ZXJpZnkgY3JlZGVudGlhbHM6CgoxLiBDaGVjayB3aGV0aGVyIGBOVkNG" + - "X0FQSV9LRVlgIGlzIHNldDoKCiAgIGBgYHNoCiAgIHByaW50ZW52IE5WQ0ZfQVBJX0tFWSA+IC9k" + - "ZXYvbnVsbCAyPiYxICYmIGVjaG8gc2V0IHx8IGVjaG8gdW5zZXQKICAgYGBgCgoyLiBJZiB1bnNl" + - "dCwgcmVhZCB0aGUgc3RvcmVkIGtleSBleHBpcnkgd2l0aG91dCBwcmludGluZyB0aGUgdmFsdWU6" + - "CgogICBgYGBzaAogICBweXRob24zIC1jICJpbXBvcnQganNvbixwYXRobGliOyBzPWpzb24ubG9h" + - "ZHMocGF0aGxpYi5QYXRoKCd+Ly5udmNmLWNsaS5zdGF0ZScpLmV4cGFuZHVzZXIoKS5yZWFkX3Rl" + - "eHQoKSk7IHByaW50KHMuZ2V0KCdudmN0QXBpS2V5RXhwaXJhdGlvbicsJ21pc3NpbmcnKSkiCiAg" + - "IGBgYAoKMy4gSWYgdGhlIGV4cGlyeSBpcyBpbiB0aGUgcGFzdCBvciBtaXNzaW5nLCByZWdlbmVy" + - "YXRlOgoKICAgYGBgc2gKICAgbnZjZi1jbGkgcmVmcmVzaAogICBudmNmLWNsaSBhcGkta2V5IGdl" + - "bmVyYXRlIC0tZm9yIHRhc2sgLS1kZXNjcmlwdGlvbj0idGFzay1rZXkiIC0tZXhwaXJlcy1pbj0y" + - "NGggLS12YWxpZGF0ZQogICBgYGAKCjQuIEluamVjdCB0aGUgc3RvcmVkIGtleSBpbnRvIHRoZSBz" + - "dWJwcm9jZXNzIGVudiB3aXRob3V0IGxvZ2dpbmcgdGhlIHZhbHVlLiBVc2UgYSBzaGVsbCBzdWJz" + - "aGVsbCBvciBlbnYgcHJlZml4IOKAlCBuZXZlciBwcmludCB0aGUga2V5IGludG8gY2hhdC4KCkVy" + - "cm9yIGNsYXNzaWZpY2F0aW9uOgoKLSAibWlzc2luZyBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFs" + - "cyIgb3IgZXhpdCAyOiBrZXkgbm90IGluamVjdGVkOyByZXBlYXQgcHJlLWZsaWdodC4KLSBIVFRQ" + - "IDQwMzoga2V5IGV4cGlyZWQgb3Igd3JvbmcgYXVkaWVuY2U7IHJlZ2VuZXJhdGUuCi0gRW1wdHkg" + - "dGFzayBsaXN0OiB2YWxpZDsgbm8gdGFza3MgZXhpc3QgeWV0LgoKIyMgMi4gVGFzayBDUkVBVEU6" + - "IGNvbnRhaW5lcgoKRGVmaW5lIHRoZSB0YXNrIGluIGEgSlNPTiBmaWxlLiBNaW5pbXVtIHZpYWJs" + - "ZSBjb250YWluZXIgdGFzazoKCmBgYGpzb24KewogICJuYW1lIjogInNtb2tlLWNvbnRhaW5lci10" + - "YXNrIiwKICAiZ3B1U3BlY2lmaWNhdGlvbiI6IHsKICAgICJncHUiOiAiSDEwMCIsCiAgICAiaW5z" + - "dGFuY2VUeXBlIjogIk5DUC5HUFUuSDEwMF8xeCIsCiAgICAiYmFja2VuZCI6ICJuY3AtbG9jYWwi" + - "CiAgfSwKICAiY29udGFpbmVySW1hZ2UiOiAibnZjci5pby9udmlkaWEvbmVtbzpsYXRlc3QiLAog" + - "ICJjb250YWluZXJBcmdzIjogInB5dGhvbiAtYyBcInByaW50KCdoZWxsbyBmcm9tIHRhc2snKVwi" + - "IiwKICAicmVzdWx0SGFuZGxpbmdTdHJhdGVneSI6ICJOT05FIgp9CmBgYAoKYGBgc2gKbnZjZi1j" + - "bGkgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPXRhc2stY29udGFpbmVyLmpzb24KIyAtPiBUYXNr" + - "IElEOiA8dGFza19pZD4KYGBgCgpDYXB0dXJlIHRoZSB0YXNrIElEIGZyb20gdGhlIG91dHB1dC4g" + - "U3RhdGUgcGVyc2lzdGVuY2UgY2FuIGZhaWwgc2lsZW50bHksIHNvIHBhc3MKYDx0YXNrSWQ+YCBl" + - "eHBsaWNpdGx5IG9uIHN1YnNlcXVlbnQgY29tbWFuZHMgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBz" + - "YXZlZCBzdGF0ZS4KCkVxdWl2YWxlbnQgQ0xJIGZsYWdzIGZvcm0gZm9yIHF1aWNrIGFkLWhvYyBy" + - "dW5zOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBjcmVhdGUgXAogIC0tbmFtZT1zbW9rZS1jb250YWlu" + - "ZXItdGFzayBcCiAgLS1ncHU9SDEwMCBcCiAgLS1pbnN0YW5jZS10eXBlPU5DUC5HUFUuSDEwMF8x" + - "eCBcCiAgLS1iYWNrZW5kPW5jcC1sb2NhbCBcCiAgLS1pbWFnZT1udmNyLmlvL252aWRpYS9uZW1v" + - "OmxhdGVzdCBcCiAgLS1jb250YWluZXItYXJncz0icHl0aG9uIC1jICdwcmludChoZWxsbyBmcm9t" + - "IHRhc2spJyIgXAogIC0tcmVzdWx0LXN0cmF0ZWd5PU5PTkUKYGBgCgpUbyB0YXJnZXQgYSBzcGVj" + - "aWZpYyBjb21wdXRlIGNsdXN0ZXI6CgpgYGBzaApudmNmLWNsaSB0YXNrIGNyZWF0ZSAtLWlucHV0" + - "LWZpbGU9dGFzay1jb250YWluZXIuanNvbiAtLWNsdXN0ZXJzPW15LWNsdXN0ZXIKYGBgCgpUbyBp" + - "bmplY3QgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9yIHNlY3JldHMsIGVpdGhlciBwYXNzIGZsYWdz" + - "OgoKYGBgc2gKbnZjZi1jbGkgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPXRhc2stY29udGFpbmVy" + - "Lmpzb24gXAogIC0tY29udGFpbmVyLWVudiBNWV9FTlY9dmFsdWUgXAogIC0tc2VjcmV0cyBNWV9T" + - "RUNSRVQ9czNjcjN0CmBgYAoKb3Igc2V0IHRoZW0gaW4gdGhlIEpTT04gZmlsZToKCmBgYGpzb24K" + - "ewogICJjb250YWluZXJFbnZpcm9ubWVudCI6IFsKICAgIHsia2V5IjogIk1ZX0VOViIsICJ2YWx1" + - "ZSI6ICJ2YWx1ZSJ9CiAgXSwKICAic2VjcmV0cyI6IFsKICAgIHsibmFtZSI6ICJNWV9TRUNSRVQi" + - "LCAidmFsdWUiOiAiczNjcjN0In0KICBdCn0KYGBgCgpTZWNyZXRzIGFyZSBlbmNyeXB0ZWQgYXQg" + - "cmVzdCBhbmQgbm90IHJldHVybmVkIGluIGxpc3Qgb3IgZ2V0IHJlc3BvbnNlcyBieSBkZWZhdWx0" + - "OyBkbyBub3QgbG9nIHRoZW0uCgojIyAzLiBUYXNrIENSRUFURTogSGVsbQoKRm9yIEhlbG0tdHlw" + - "ZSB0YXNrcywgcmVwbGFjZSBgY29udGFpbmVySW1hZ2VgIHdpdGggYGhlbG1DaGFydGA6CgpgYGBq" + - "c29uCnsKICAibmFtZSI6ICJzbW9rZS1oZWxtLXRhc2siLAogICJncHVTcGVjaWZpY2F0aW9uIjog" + - "ewogICAgImdwdSI6ICJIMTAwIiwKICAgICJpbnN0YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAwXzF4" + - "IiwKICAgICJiYWNrZW5kIjogIm5jcC1sb2NhbCIKICB9LAogICJoZWxtQ2hhcnQiOiAiaHR0cHM6" + - "Ly9oZWxtLm5nYy5udmlkaWEuY29tLzxvcmc+L2NoYXJ0cy9leGFtcGxlLXRhc2stMC4xLjAudGd6" + - "IiwKICAicmVzdWx0SGFuZGxpbmdTdHJhdGVneSI6ICJOT05FIgp9CmBgYAoKYGBgc2gKbnZjZi1j" + - "bGkgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPXRhc2staGVsbS5qc29uCiMgLT4gVGFzayBJRDog" + - "PHRhc2tfaWQ+CmBgYAoKYGhlbG1DaGFydGAgYW5kIGBjb250YWluZXJJbWFnZWAgYXJlIG11dHVh" + - "bGx5IGV4Y2x1c2l2ZS4KCiMjIDNiLiBVcGRhdGUgc2VjcmV0cyBvbiBhIHJ1bm5pbmcgdGFzawoK" + - "YGBgc2gKbnZjZi1jbGkgdGFzayB1cGRhdGUtc2VjcmV0cyA8dGFza19pZD4gLS1zZWNyZXRzIE5B" + - "TUU9dmFsdWUKYGBgCgpgdXBkYXRlLXNlY3JldHNgIG1lcmdlcyBzZWNyZXRzIGJ5IG5hbWU6IHN1" + - "cHBsaWVkIHNlY3JldHMgYXJlIGFkZGVkIG9yIHVwZGF0ZWQsIGFuZCBleGlzdGluZyBzZWNyZXRz" + - "IG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVxdWVzdCBhcmUgcHJlc2VydmVkLiBEbyBub3QgZWNobyBz" + - "ZWNyZXQgdmFsdWVzIGludG8gY2hhdC4KCiMjIDQuIE1vbml0b3IKClBvbGwgdGFzayBzdGF0ZToK" + - "CmBgYHNoCm52Y2YtY2xpIHRhc2sgZ2V0IDx0YXNrX2lkPgojIC0+IGlkOiA8dGFza19pZD4KIyAt" + - "PiBzdGF0dXM6IFJVTk5JTkcKYGBgCgpPciB1c2UgdGhlIHRhc2sgSUQgc2F2ZWQgdG8gc3RhdGUg" + - "ZnJvbSB0aGUgbW9zdCByZWNlbnQgYHRhc2sgY3JlYXRlYDoKCmBgYHNoCm52Y2YtY2xpIHRhc2sg" + - "Z2V0CmBgYAoKU3RhdHVzIHZhbHVlczogYFFVRVVFRGAsIGBMQVVOQ0hFRGAsIGBSVU5OSU5HYCwg" + - "YENPTVBMRVRFRGAsIGBFUlJPUkVEYCwgYENBTkNFTEVEYCwgYEVYQ0VFREVEX01BWF9SVU5USU1F" + - "X0RVUkFUSU9OYCwgYEVYQ0VFREVEX01BWF9RVUVVRURfRFVSQVRJT05gLgoKSW5zcGVjdCBsaWZl" + - "Y3ljbGUgZXZlbnRzIGZvciBwcm9ncmVzcyBkZXRhaWxzIG9yIGZhaWx1cmUgY29udGV4dDoKCmBg" + - "YHNoCm52Y2YtY2xpIHRhc2sgZXZlbnRzIDx0YXNrX2lkPgpgYGAKCklmIHRoZSB0YXNrIGlzIHN0" + - "dWNrIGluIGBRVUVVRURgLCBjaGVjayB0aGF0IGEgY29tcHV0ZSBjbHVzdGVyIHdpdGggYSBtYXRj" + - "aGluZyBHUFUgU0tVCmlzIHJlZ2lzdGVyZWQgYW5kIGhlYWx0aHkgKGBudmNmLWNsaSBzZWxmLWhv" + - "c3RlZCBzdGF0dXNgKS4KCklmIHRoZSB0YXNrIG1vdmVzIHRvIGBFUlJPUkVEYCwgdGhlIGV2ZW50" + - "cyBvdXRwdXQgY29udGFpbnMgdGhlIGZhaWx1cmUgcmVhc29uLiBGb3IKY29udGFpbmVyLWxldmVs" + - "IGRldGFpbCwgaW5zcGVjdCB0aGUgdGFzayB3b3JrbG9hZCBwb2RzIG9uIHRoZSBjb21wdXRlLXBs" + - "YW5lIGNsdXN0ZXIgd2l0aApga3ViZWN0bGAgYWdhaW5zdCB0aGUgYXBwcm9wcmlhdGUgbmFtZXNw" + - "YWNlIGFuZCBjb250ZXh0LgoKIyMgNS4gUmV0cmlldmUgcmVzdWx0cwoKRm9yIHRhc2tzIHdpdGgg" + - "YHJlc3VsdEhhbmRsaW5nU3RyYXRlZ3k6IE5PTkVgLCByZXN1bHRzIGFyZSBlbXB0eSBieSBkZXNp" + - "Z246CgpgYGBzaApudmNmLWNsaSB0YXNrIHJlc3VsdHMgPHRhc2tfaWQ+CiMgLT4geyJyZXN1bHRz" + - "IjogW119CmBgYAoKRm9yIHRhc2tzIHdpdGggYHJlc3VsdEhhbmRsaW5nU3RyYXRlZ3k6IFVQTE9B" + - "RGAsIHJlc3VsdHMgdXBsb2FkIHRvIHRoZSBsb2NhdGlvbiBuYW1lZCBpbgpgcmVzdWx0c0xvY2F0" + - "aW9uYC4gVGhlIHRhc2sncyBjcmVkZW50aWFscyBtdXN0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRo" + - "YXQgbG9jYXRpb24uIEFmdGVyCnRoZSB0YXNrIHJlYWNoZXMgYENPTVBMRVRFRGA6CgpgYGBzaApu" + - "dmNmLWNsaSB0YXNrIHJlc3VsdHMgPHRhc2tfaWQ+CmBgYAoKTm90ZTogcmVzdWx0IHVwbG9hZCBp" + - "cyBub3QgeWV0IHN1cHBvcnRlZCBpbiB0aGlzIHJlbGVhc2UuCgojIyA2LiBDbGVhbnVwCgpDYW5j" + - "ZWwgYSBydW5uaW5nIHRhc2s6CgpgYGBzaApudmNmLWNsaSB0YXNrIGNhbmNlbCA8dGFza19pZD4K" + - "YGBgCgpEZWxldGUgdGhlIHRhc2sgcmVjb3JkIGFmdGVyIGl0IHJlYWNoZXMgYSB0ZXJtaW5hbCBz" + - "dGF0ZToKCmBgYHNoCm52Y2YtY2xpIHRhc2sgZGVsZXRlIDx0YXNrX2lkPgpgYGAKClN0b3AgYW5k" + - "IGNvbmZpcm0gd2l0aCB0aGUgdXNlciBiZWZvcmUgcnVubmluZyB0YXNrIGRlbGV0ZS4gU3RhdGUg" + - "dGhlIHRhc2sgSUQgYW5kIGl0cyBjdXJyZW50IHN0YXR1cy4gRG8gbm90IHByb2NlZWQgZXZlbiB3" + - "aGVuIHRoZSB1c2VyJ3MgcHJvbXB0IGFscmVhZHkgcmVxdWVzdGVkIGRlbGV0aW9uIOKAlCBhbHdh" + - "eXMgZ2V0IGFuIGV4cGxpY2l0IGxhc3QtbG9vayBjb25maXJtYXRpb24uIERlbGV0aW9uIGlzIHBl" + - "cm1hbmVudCBhbmQgY2Fubm90IGJlIHVuZG9uZS4KClRvIGxpc3QgYWxsIHRhc2tzIGZvciB0aGUg" + - "Y3VycmVudCBvd25lciAodXNlZnVsIGJlZm9yZSBidWxrIGNsZWFudXApOgoKYGBgc2gKbnZjZi1j" + - "bGkgdGFzayBsaXN0Cm52Y2YtY2xpIHRhc2sgbGlzdCAtLXN0YXR1cz1DT01QTEVURUQKYGBgCgoj" + - "IyBOb3RlcwoKLSBHUFUgZmFtaWx5IGFuZCBpbnN0YW5jZSB0eXBlIG11c3QgbWF0Y2ggYSByZWdp" + - "c3RlcmVkIGNvbXB1dGUgY2x1c3RlciBTS1UuIE1pc21hdGNoCiAgY2F1c2VzIHRoZSB0YXNrIHRv" + - "IHJlbWFpbiBgUVVFVUVEYCBpbmRlZmluaXRlbHkuIFVzZSBgbnZjZi1jbGkgY2x1c3RlciBsaXN0" + - "YCB0byBjaGVjawogIHJlZ2lzdGVyZWQgU0tVcy4KLSBGb3IgY29udGFpbmVyIGltYWdlcyBvbiBw" + - "cml2YXRlIHJlZ2lzdHJpZXMsIGVuc3VyZSB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVyJ3MKICBp" + - "bWFnZS1jcmVkZW50aWFsLWhlbHBlciBpcyBjb25maWd1cmVkIGZvciB0aGUgcmVnaXN0cnkgaG9z" + - "dC4KUEsHCNTejTSfGQAAnxkAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAANwAJAGRhdGEvbnZj" + - "Zi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvZGVwbG95LWFuZC1pbnZva2UubWRVVAUAAQCmzhIj" + - "IERlcGxveSBhbmQgaW52b2tlIGEgY29udGFpbmVyIGZ1bmN0aW9uCgpTdGFuZGFyZCBmb3VyLXN0" + - "ZXAgZmxvdzogZnVuY3Rpb24gQ1JFQVRFIOKGkiBERVBMT1kg4oaSIEFQSSBrZXkgKGZvciBpbnZv" + - "a2Ugc2NvcGUpIOKGkiBJTlZPS0UuCgojIyAxLiBGdW5jdGlvbiBDUkVBVEUKCkRlZmluZSB0aGUg" + - "ZnVuY3Rpb24gaW4gYSBKU09OIGZpbGUuIE1pbmltdW06CgpCZWZvcmUgY3JlYXRpbmcgdGhlIGZ1" + - "bmN0aW9uLCBjb25maXJtIHRoZSBleGFjdCBmdW5jdGlvbiBuYW1lIGFuZCBjb250YWluZXIgaW1h" + - "Z2Ugd2l0aCB0aGUgdXNlci4gSWYgZWl0aGVyIHZhbHVlIGlzIG1pc3NpbmcsIHN0b3AgYW5kIGFz" + - "ay4gRG8gbm90IGludmVudCBvciBzdWJtaXQgZXhhbXBsZSB2YWx1ZXMgZm9yIHRoZXNlIGZpZWxk" + - "cy4KCmBgYGpzb24KewogICJuYW1lIjogIjxjb25maXJtZWQtZnVuY3Rpb24tbmFtZT4iLAogICJj" + - "b250YWluZXJJbWFnZSI6ICI8Y29uZmlybWVkLWNvbnRhaW5lci1pbWFnZT4iLAogICJpbmZlcmVu" + - "Y2VVcmwiOiAiL2VjaG8iLAogICJpbmZlcmVuY2VQb3J0IjogODAwMCwKICAiZGVzY3JpcHRpb24i" + - "OiAic21va2UgdGVzdCBlY2hvIGZ1bmN0aW9uIiwKICAiZnVuY3Rpb25UeXBlIjogIkRFRkFVTFQi" + - "LAogICJhcGlCb2R5Rm9ybWF0IjogIkNVU1RPTSIsCiAgImhlYWx0aCI6IHsKICAgICJwcm90b2Nv" + - "bCI6ICJIVFRQIiwKICAgICJ1cmkiOiAiL2hlYWx0aCIsCiAgICAicG9ydCI6IDgwMDAsCiAgICAi" + - "dGltZW91dCI6ICJQVDMwUyIsCiAgICAiZXhwZWN0ZWRTdGF0dXNDb2RlIjogMjAwCiAgfQp9CmBg" + - "YAoKYGBgc2gKbnZjZi1jbGkgZnVuY3Rpb24gY3JlYXRlIC0taW5wdXQtZmlsZT1jcmVhdGUtZm4u" + - "anNvbgojIOKGkiBGdW5jdGlvbiBJRDogPGZuX2lkPgojIOKGkiBWZXJzaW9uIElEOiA8dmVyX2lk" + - "PgpgYGAKClNhdmUgdGhlIElEcyDigJQgdGhleSdyZSBuZWVkZWQgZm9yIGRlcGxveSArIGludm9r" + - "ZS4KCiMjIyBMTE0gZnVuY3Rpb24gdmFyaWFudAoKRm9yIGFuIE9wZW5BSS1jb21wYXRpYmxlIExM" + - "TSBmdW5jdGlvbiwgc2V0IGBmdW5jdGlvblR5cGU6ICJMTE0iYCBhbmQgcHV0IHJvdXRlIG1ldGFk" + - "YXRhIHVuZGVyIGBtb2RlbHNbXS5sbG1Db25maWdgOgoKQmVmb3JlIGNyZWF0aW5nIHRoZSBmdW5j" + - "dGlvbiwgY29uZmlybSB0aGUgZXhhY3QgZnVuY3Rpb24gbmFtZSwgY29udGFpbmVyIGltYWdlLCBh" + - "bmQgbW9kZWwgbmFtZSB3aXRoIHRoZSB1c2VyLiBJZiBhbnkgdmFsdWUgaXMgbWlzc2luZywgc3Rv" + - "cCBhbmQgYXNrLiBEbyBub3QgaW52ZW50IG9yIHN1Ym1pdCBleGFtcGxlIHZhbHVlcyBmb3IgdGhl" + - "c2UgZmllbGRzLgoKYGBganNvbgp7CiAgIm5hbWUiOiAiPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1l" + - "PiIsCiAgImNvbnRhaW5lckltYWdlIjogIjxjb25maXJtZWQtY29udGFpbmVyLWltYWdlPiIsCiAg" + - "ImluZmVyZW5jZVVybCI6ICIvIiwKICAiaW5mZXJlbmNlUG9ydCI6IDgwMDAsCiAgImZ1bmN0aW9u" + - "VHlwZSI6ICJMTE0iLAogICJoZWFsdGgiOiB7CiAgICAicHJvdG9jb2wiOiAiSFRUUCIsCiAgICAi" + - "dXJpIjogIi9oZWFsdGgiLAogICAgInBvcnQiOiA4MDAwLAogICAgInRpbWVvdXQiOiAiUFQzMFMi" + - "LAogICAgImV4cGVjdGVkU3RhdHVzQ29kZSI6IDIwMAogIH0sCiAgIm1vZGVscyI6IFsKICAgIHsK" + - "ICAgICAgIm5hbWUiOiAiPGNvbmZpcm1lZC1tb2RlbC1uYW1lPiIsCiAgICAgICJsbG1Db25maWci" + - "OiB7CiAgICAgICAgInVyaXMiOiBbIi92MS9jaGF0L2NvbXBsZXRpb25zIiwgIi92MS9yZXNwb25z" + - "ZXMiLCAiL3YxL2VtYmVkZGluZ3MiXSwKICAgICAgICAicm91dGluZ01ldGhvZCI6ICJyb3VuZF9y" + - "b2JpbiIsCiAgICAgICAgInRva2VuUmF0ZUxpbWl0IjogIjEwMDAtUyIKICAgICAgfQogICAgfQog" + - "IF0KfQpgYGAKCkVxdWl2YWxlbnQgQ0xJIGZsYWcgZm9ybToKCmBgYHNoCm52Y2YtY2xpIGZ1bmN0" + - "aW9uIGNyZWF0ZSBcCiAgLS1uYW1lPSI8Y29uZmlybWVkLWZ1bmN0aW9uLW5hbWU+IiBcCiAgLS1p" + - "bWFnZT0iPGNvbmZpcm1lZC1jb250YWluZXItaW1hZ2U+IiBcCiAgLS1pbmZlcmVuY2UtdXJsPS8g" + - "XAogIC0taW5mZXJlbmNlLXBvcnQ9ODAwMCBcCiAgLS1oZWFsdGgtdXJpPS9oZWFsdGggXAogIC0t" + - "aGVhbHRoLXBvcnQ9ODAwMCBcCiAgLS1oZWFsdGgtdGltZW91dD1QVDMwUyBcCiAgLS1oZWFsdGgt" + - "cHJvdG9jb2w9SFRUUCBcCiAgLS1oZWFsdGgtZXhwZWN0ZWQtc3RhdHVzPTIwMCBcCiAgLS1mdW5j" + - "dGlvbi10eXBlPUxMTSBcCiAgLS1sbG0tbW9kZWw9J25hbWU9PGNvbmZpcm1lZC1tb2RlbC1uYW1l" + - "Pix1cmlzPS92MS9jaGF0L2NvbXBsZXRpb25zfC92MS9yZXNwb25zZXN8L3YxL2VtYmVkZGluZ3Ms" + - "cm91dGluZ01ldGhvZD1yb3VuZF9yb2Jpbix0b2tlblJhdGVMaW1pdD0xMDAwLVMnCmBgYAoKVXNl" + - "IHRoZSBzYW1lIGRlcGxveSBzdGVwIGJlbG93IGFmdGVyIHRoZSBMTE0gZnVuY3Rpb24gaXMgY3Jl" + - "YXRlZC4KCk9wdGlvbmFsIG1vZGVsIHJvdXRpbmcgdXBkYXRlIGFmdGVyIGNyZWF0aW9uOgoKYGBg" + - "c2gKbnZjZi1jbGkgZnVuY3Rpb24gdXBkYXRlIFwKICAtLWZ1bmN0aW9uLWlkPTxmbl9pZD4gXAog" + - "IC0tdmVyc2lvbi1pZD08dmVyX2lkPiBcCiAgLS1sbG0tbW9kZWwtdXBkYXRlPSduYW1lPTxjb25m" + - "aXJtZWQtbW9kZWwtbmFtZT4scm91dGluZ01ldGhvZD1wb3dlcl9vZl90d28sdG9rZW5SYXRlTGlt" + - "aXQ9MTAwMC1TJwpgYGAKClVzZSB0aGlzIGZvciBtdXRhYmxlIGByb3V0aW5nTWV0aG9kYCBhbmQg" + - "YHRva2VuUmF0ZUxpbWl0YDsgY3JlYXRlLXRpbWUgYHVyaXNgIHN0YXkgaW4gYG1vZGVsc1tdLmxs" + - "bUNvbmZpZ2AuCmB0b2tlblJhdGVMaW1pdGAgc3VwcG9ydHMgcG9zaXRpdmUgaW50ZWdlciB0b2tl" + - "biBsaW1pdHMgZm9yIGBTYCwgYE1gLCBgSGAsIGBEYCwgYW5kIGBXYC4gVXNlIGAxMDAwLVNgIGZv" + - "ciBhIHNpbmdsZSBpbmxpbmUgQ0xJIGxpbWl0LiBVc2UgaW5wdXQgSlNPTiBmb3IgY29tYmluZWQg" + - "bGltaXRzLCBzdWNoIGFzIGAxMDAwLVMsNTAwMC1NLDEwMDAwMC1ILDUwMDAwMC1ELDEwMDAwMDAt" + - "V2AsIGJlY2F1c2UgaW5saW5lIG1vZGVsIHNwZWNzIHVzZSBjb21tYXMgYXMgZmllbGQgc2VwYXJh" + - "dG9ycy4KCiMjIyBIZWxtIGNoYXJ0IExMTSBmdW5jdGlvbiB2YXJpYW50CgpMTE0gZnVuY3Rpb24g" + - "dHlwZSBpcyBpbmRlcGVuZGVudCBvZiB3b3JrbG9hZCBwYWNrYWdpbmcuIEZvciBhIEhlbG0tY2hh" + - "cnQgYmFja2VkIExMTSBmdW5jdGlvbiwga2VlcCB0aGUgc2FtZSBgZnVuY3Rpb25UeXBlYCBhbmQg" + - "YG1vZGVsc1tdLmxsbUNvbmZpZ2AgZmllbGRzLCB0aGVuIHNldCBgaGVsbUNoYXJ0YCBhbmQgYGhl" + - "bG1DaGFydFNlcnZpY2VOYW1lYC4gVGhlIHNlcnZpY2UgbmFtZSBtdXN0IG1hdGNoIGEgS3ViZXJu" + - "ZXRlcyBTZXJ2aWNlIHJlbmRlcmVkIGJ5IHRoZSBjaGFydCwgYW5kIGBpbmZlcmVuY2VQb3J0YCBt" + - "dXN0IGJlIHRoYXQgU2VydmljZSBwb3J0LgoKQmVmb3JlIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiwg" + - "Y29uZmlybSB0aGUgZXhhY3QgZnVuY3Rpb24gbmFtZSBhbmQgbW9kZWwgbmFtZSB3aXRoIHRoZSB1" + - "c2VyLiBJZiBlaXRoZXIgdmFsdWUgaXMgbWlzc2luZywgc3RvcCBhbmQgYXNrLiBEbyBub3QgaW52" + - "ZW50IG9yIHN1Ym1pdCBleGFtcGxlIHZhbHVlcyBmb3IgdGhlc2UgZmllbGRzLgoKYGBganNvbgp7" + - "CiAgIm5hbWUiOiAiPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1lPiIsCiAgImluZmVyZW5jZVVybCI6" + - "ICIvIiwKICAiaW5mZXJlbmNlUG9ydCI6IDgwMDAsCiAgImZ1bmN0aW9uVHlwZSI6ICJMTE0iLAog" + - "ICJoZWFsdGgiOiB7CiAgICAicHJvdG9jb2wiOiAiSFRUUCIsCiAgICAidXJpIjogIi9oZWFsdGgi" + - "LAogICAgInBvcnQiOiA4MDAwLAogICAgInRpbWVvdXQiOiAiUFQzMFMiLAogICAgImV4cGVjdGVk" + - "U3RhdHVzQ29kZSI6IDIwMAogIH0sCiAgImhlbG1DaGFydCI6ICJodHRwczovL2hlbG0ubmdjLm52" + - "aWRpYS5jb20vZXhhbXBsZS90ZWFtL2NoYXJ0cy9vcGVuYWktY29tcGF0aWJsZS0wLjEuMC50Z3oi" + - "LAogICJoZWxtQ2hhcnRTZXJ2aWNlTmFtZSI6ICJvcGVuYWktY29tcGF0aWJsZSIsCiAgIm1vZGVs" + - "cyI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiPGNvbmZpcm1lZC1tb2RlbC1uYW1lPiIsCiAgICAg" + - "ICJsbG1Db25maWciOiB7CiAgICAgICAgInVyaXMiOiBbIi92MS9jaGF0L2NvbXBsZXRpb25zIiwg" + - "Ii92MS9yZXNwb25zZXMiLCAiL3YxL2VtYmVkZGluZ3MiXSwKICAgICAgICAicm91dGluZ01ldGhv" + - "ZCI6ICJyb3VuZF9yb2JpbiIsCiAgICAgICAgInRva2VuUmF0ZUxpbWl0IjogIjEwMDAtUyIKICAg" + - "ICAgfQogICAgfQogIF0KfQpgYGAKCkVxdWl2YWxlbnQgQ0xJIGZsYWcgZm9ybToKCmBgYHNoCm52" + - "Y2YtY2xpIGZ1bmN0aW9uIGNyZWF0ZSBcCiAgLS1uYW1lPSI8Y29uZmlybWVkLWZ1bmN0aW9uLW5h" + - "bWU+IiBcCiAgLS1pbmZlcmVuY2UtdXJsPS8gXAogIC0taW5mZXJlbmNlLXBvcnQ9ODAwMCBcCiAg" + - "LS1oZWFsdGgtdXJpPS9oZWFsdGggXAogIC0taGVhbHRoLXBvcnQ9ODAwMCBcCiAgLS1oZWFsdGgt" + - "dGltZW91dD1QVDMwUyBcCiAgLS1oZWFsdGgtcHJvdG9jb2w9SFRUUCBcCiAgLS1oZWFsdGgtZXhw" + - "ZWN0ZWQtc3RhdHVzPTIwMCBcCiAgLS1mdW5jdGlvbi10eXBlPUxMTSBcCiAgLS1oZWxtLWNoYXJ0" + - "PWh0dHBzOi8vaGVsbS5uZ2MubnZpZGlhLmNvbS9leGFtcGxlL3RlYW0vY2hhcnRzL29wZW5haS1j" + - "b21wYXRpYmxlLTAuMS4wLnRneiBcCiAgLS1oZWxtLWNoYXJ0LXNlcnZpY2U9b3BlbmFpLWNvbXBh" + - "dGlibGUgXAogIC0tbGxtLW1vZGVsPSduYW1lPTxjb25maXJtZWQtbW9kZWwtbmFtZT4sdXJpcz0v" + - "djEvY2hhdC9jb21wbGV0aW9uc3wvdjEvcmVzcG9uc2VzfC92MS9lbWJlZGRpbmdzLHJvdXRpbmdN" + - "ZXRob2Q9cm91bmRfcm9iaW4sdG9rZW5SYXRlTGltaXQ9MTAwMC1TJwpgYGAKCkRlcGxveSBpcyB1" + - "bmNoYW5nZWQuIFB1dCBjaGFydC1zcGVjaWZpYyB2YWx1ZXMgdW5kZXIgYGRlcGxveW1lbnRTcGVj" + - "aWZpY2F0aW9uc1tdLmNvbmZpZ3VyYXRpb25gIG9ubHkgd2hlbiB0aGUgY2hhcnQgbmVlZHMgdmFs" + - "dWUgb3ZlcnJpZGVzOgoKYGBganNvbgp7CiAgImZ1bmN0aW9uSWQiOiAiPGZuX2lkPiIsCiAgInZl" + - "cnNpb25JZCI6ICI8dmVyX2lkPiIsCiAgImRlcGxveW1lbnRTcGVjaWZpY2F0aW9ucyI6IFt7CiAg" + - "ICAiZ3B1IjogIkgxMDAiLAogICAgImluc3RhbmNlVHlwZSI6ICJOQ1AuR1BVLkgxMDBfMXgiLAog" + - "ICAgIm1pbkluc3RhbmNlcyI6IDEsCiAgICAibWF4SW5zdGFuY2VzIjogMSwKICAgICJtYXhSZXF1" + - "ZXN0Q29uY3VycmVuY3kiOiAxMCwKICAgICJjb25maWd1cmF0aW9uIjogewogICAgICAic2Vydmlu" + - "ZyI6IHsKICAgICAgICAidGVuc29yUGFyYWxsZWxTaXplIjogMQogICAgICB9CiAgICB9CiAgfV0K" + - "fQpgYGAKCkxMTSBHYXRld2F5IHJvdXRlcyByZXF1ZXN0cyBieSB0aGUgT3BlbkFJIGBtb2RlbGAg" + - "dmFsdWUuIFVzZSBgPGZ1bmN0aW9uLWlkPi88bW9kZWwtbmFtZT5gOiB0aGUgZnVuY3Rpb24gSUQg" + - "c2VsZWN0cyB0aGUgTlZDRiBmdW5jdGlvbiwgYW5kIHRoZSBtb2RlbCBuYW1lIGlzIGZvcndhcmRl" + - "ZCB0byB0aGUgdXBzdHJlYW0gY29udGFpbmVyIHRocm91Z2ggYHN0YXJnYXRlLWNsaWVudGAuCgpT" + - "dXBwb3J0ZWQgTExNIHBhdGhzOgoKfCBQYXRoIHwgTm90ZXMgfAp8IC0tLSB8IC0tLSB8CnwgYC92" + - "MS9jaGF0L2NvbXBsZXRpb25zYCB8IFN1cHBvcnRzIHN0cmVhbWluZyBhbmQgc2Vzc2lvbiBzdGlj" + - "a2luZXNzLiB8CnwgYC92MS9yZXNwb25zZXNgIHwgTmF0aXZlIFJlc3BvbnNlcyBwcm94eSBwYXRo" + - "OyByZWxheXMgU1NFIGZvciBzdHJlYW1pbmcgY2xpZW50cyBhbmQgcmV0dXJucyB0ZXJtaW5hbCBK" + - "U09OIGZvciBub24tc3RyZWFtaW5nIGNsaWVudHMuIFN1cHBvcnRzIHNlc3Npb24gc3RpY2tpbmVz" + - "cy4gfAp8IGAvdjEvZW1iZWRkaW5nc2AgfCBBY2NlcHRzIHN0cmluZyBvciBzdHJpbmctYXJyYXkg" + - "YGlucHV0YDsgaW5wdXQgbXVzdCBiZSBub24tZW1wdHkgYW5kIG1heSBjb250YWluIGF0IG1vc3Qg" + - "MjA0OCBlbnRyaWVzLiBObyBzZXNzaW9uIHN0aWNraW5lc3MuIHwKCiMjIDIuIEZ1bmN0aW9uIERF" + - "UExPWQoKYGBganNvbgp7CiAgImZ1bmN0aW9uSWQiOiAiPGZuX2lkPiIsCiAgInZlcnNpb25JZCI6" + - "ICI8dmVyX2lkPiIsCiAgImRlcGxveW1lbnRTcGVjaWZpY2F0aW9ucyI6IFt7CiAgICAiZ3B1Ijog" + - "IkgxMDAiLAogICAgImluc3RhbmNlVHlwZSI6ICJOQ1AuR1BVLkgxMDBfMXgiLAogICAgIm1pbklu" + - "c3RhbmNlcyI6IDEsCiAgICAibWF4SW5zdGFuY2VzIjogMSwKICAgICJtYXhSZXF1ZXN0Q29uY3Vy" + - "cmVuY3kiOiAxMAogIH1dCn0KYGBgCgpOb3RlOiBgZ3B1YCBpcyB0aGUgR1BVICoqZmFtaWx5Kiog" + - "KGUuZy4gYEgxMDBgKSwgYGluc3RhbmNlVHlwZWAgaXMgdGhlIFNLVSAoZS5nLiBgTkNQLkdQVS5I" + - "MTAwXzF4YCkuIE1pc21hdGNoIHJldHVybnMgSUNNUyA0MDAgIkludmFsaWQgR1BVIi4KCmBgYHNo" + - "Cm52Y2YtY2xpIGZ1bmN0aW9uIGRlcGxveSBjcmVhdGUgLS1pbnB1dC1maWxlPWRlcGxveS1mbi5q" + - "c29uCmBgYAoKVGhpcyBjb21tYW5kICoqYmxvY2tzKiogdW50aWwgdGhlIGRlcGxveW1lbnQgcmVh" + - "Y2hlcyBBQ1RJVkUgKGRlZmF1bHQgOTAwcyB0aW1lb3V0KS4gV2hlbiBpdCByZXR1cm5zIHJjPTAs" + - "IGEgZnVuY3Rpb24gcG9kIGlzIHJ1bm5pbmcgaW4gdGhlIGBudmNmLWJhY2tlbmRgIG5hbWVzcGFj" + - "ZSBvbiB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVyLgoKIyMgMy4gTWludCBhbiBBUEkga2V5IHdp" + - "dGggYGludm9rZV9mdW5jdGlvbmAgc2NvcGUKCmBudmNmLWNsaSBpbml0YCdzIGFkbWluIHRva2Vu" + - "IGRvZXMgTk9UIGNhcnJ5IHRoZSBgaW52b2tlX2Z1bmN0aW9uYCBzY29wZSDigJQgaW52b2tlIHdv" + - "dWxkIDQwMyB3aXRoICJtaXNzaW5nIHJlcXVlc3RlZCBhdXRob3JpdGllcyIuIE1pbnQgYW4gQVBJ" + - "IGtleToKCmBgYHNoCm52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj0iPGNv" + - "bmZpcm1lZC1mdW5jdGlvbi1uYW1lPiBpbnZva2UiIC0tZXhwaXJlcy1pbj0xaAojIOKGkiBBUEkg" + - "S2V5OiBudmFwaS1udmNmLXN0Zy0uLi4KYGBgCgpUaGUga2V5IGlzIGF1dG9tYXRpY2FsbHkgc2F2" + - "ZWQgdG8gdGhlIENMSSBzdGF0ZSBmaWxlIGFuZCB1c2VkIGJ5IHRoZSBuZXh0IGBmdW5jdGlvbiBp" + - "bnZva2VgIGNhbGwuICoqRG9uJ3QgZWNobyB0aGUga2V5IGludG8gY2hhdCAvIGxvZ3MqKi4KCiMj" + - "IDQuIEZ1bmN0aW9uIElOVk9LRQoKYGBganNvbgp7CiAgImZ1bmN0aW9uSWQiOiAiPGZuX2lkPiIs" + - "CiAgInZlcnNpb25JZCI6ICI8dmVyX2lkPiIsCiAgInJlcXVlc3RCb2R5IjogeyJtZXNzYWdlIjog" + - "ImhlbGxvIn0KfQpgYGAKCmBgYHNoCm52Y2YtY2xpIGZ1bmN0aW9uIGludm9rZSAtLWlucHV0LWZp" + - "bGU9aW52b2tlLWZuLmpzb24KIyDihpIgRnVuY3Rpb24gaW52b2NhdGlvbiBjb21wbGV0ZWQhCiMg" + - "4oaSIFN0YXR1czogZnVsZmlsbGVkCiMg4oaSIFJlcXVlc3QgSUQ6IC4uLgpgYGAKCkZvciBhbiBM" + - "TE0gZnVuY3Rpb24sIGludm9rZSB0aGUgT3BlbkFJLWNvbXBhdGlibGUgcm91dGUgYWZ0ZXIgZGVw" + - "bG95bWVudDoKCmBgYHNoCmN1cmwgLXNTIC1YIFBPU1QgImh0dHBzOi8vbGxtLmludm9jYXRpb24u" + - "PGRvbWFpbj4vdjEvY2hhdC9jb21wbGV0aW9ucyIgXAogIC1IICJBdXRob3JpemF0aW9uOiBCZWFy" + - "ZXIgJHtOVkNGX0FQSV9LRVl9IiBcCiAgLUggIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNv" + - "biIgXAogIC1kICd7CiAgICAibW9kZWwiOiAiPGZuX2lkPi88Y29uZmlybWVkLW1vZGVsLW5hbWU+" + - "IiwKICAgICJzdHJlYW0iOiB0cnVlLAogICAgIm1lc3NhZ2VzIjogWwogICAgICB7CiAgICAgICAg" + - "InJvbGUiOiAidXNlciIsCiAgICAgICAgImNvbnRlbnQiOiAiSGVsbG8iCiAgICAgIH0KICAgIF0K" + - "ICB9JwpgYGAKClRoZSBPcGVuQUkgYG1vZGVsYCB2YWx1ZSBtdXN0IGJlIGA8ZnVuY3Rpb24taWQ+" + - "Lzxtb2RlbC1uYW1lPmAgc28gdGhlIGdhdGV3YXkgY2FuIHNlbGVjdCB0aGUgZnVuY3Rpb24gYW5k" + - "IG1vZGVsLgoKUmVzcG9uc2VzIEFQSSBleGFtcGxlOgoKYGBgc2gKY3VybCAtc1MgLVggUE9TVCAi" + - "aHR0cHM6Ly9sbG0uaW52b2NhdGlvbi48ZG9tYWluPi92MS9yZXNwb25zZXMiIFwKICAtSCAiQXV0" + - "aG9yaXphdGlvbjogQmVhcmVyICR7TlZDRl9BUElfS0VZfSIgXAogIC1IICJDb250ZW50LVR5cGU6" + - "IGFwcGxpY2F0aW9uL2pzb24iIFwKICAtZCAnewogICAgIm1vZGVsIjogIjxmbl9pZD4vPGNvbmZp" + - "cm1lZC1tb2RlbC1uYW1lPiIsCiAgICAiaW5wdXQiOiAiV3JpdGUgYSBvbmUgc2VudGVuY2Ugc3Vt" + - "bWFyeSBvZiBOVkNGLiIKICB9JwpgYGAKCkVtYmVkZGluZ3MgZXhhbXBsZToKCmBgYHNoCmN1cmwg" + - "LXNTIC1YIFBPU1QgImh0dHBzOi8vbGxtLmludm9jYXRpb24uPGRvbWFpbj4vdjEvZW1iZWRkaW5n" + - "cyIgXAogIC1IICJBdXRob3JpemF0aW9uOiBCZWFyZXIgJHtOVkNGX0FQSV9LRVl9IiBcCiAgLUgg" + - "IkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgXAogIC1kICd7CiAgICAibW9kZWwiOiAi" + - "PGZuX2lkPi88Y29uZmlybWVkLW1vZGVsLW5hbWU+IiwKICAgICJpbnB1dCI6ICJOVkNGIGVtYmVk" + - "ZGluZ3MgY2hlY2siCiAgfScKYGBgCgpJZiBzdGF0dXMgaXMgYGVycm9yZWRgLCBxdWVyeSBJQ01T" + - "IGZvciB0aGUgZGVwbG95bWVudCdzIHBvZCBsb2dzIChrdWJlY3RsIG9uIHRoZSBjb21wdXRlLXBs" + - "YW5lIGNsdXN0ZXIpIGFuZCBzdXJmYWNlIHRvIHRoZSB1c2VyLgoKIyMgNS4gQ2xlYW51cAoKV2hl" + - "biB0aGUgdXNlciBpcyBkb25lIHdpdGggdGhlIHNtb2tlIHRlc3Q6CgpgYGBzaApudmNmLWNsaSBm" + - "dW5jdGlvbiBkZWxldGUgLS1mdW5jdGlvbi1pZD08Zm5faWQ+IC0tdmVyc2lvbi1pZD08dmVyX2lk" + - "PgpgYGAKCioqQ29uZmlybSB3aXRoIHRoZSB1c2VyIGJlZm9yZSBkZWxldGluZy4qKiBUaGlzIHJl" + - "bW92ZXMgYm90aCB0aGUgZGVwbG95bWVudCBhbmQgdGhlIGZ1bmN0aW9uIHJlY29yZC4KCiMjIE5v" + - "dGVzCgotIERlcGxveSB0aW1lcyBjYW4gdmFyeSB3aWRlbHkgZGVwZW5kaW5nIG9uIE5BVFMgc3Ry" + - "ZWFtLWluaXQgbGF0ZW5jeSBvbiBjb2xkLWNsdXN0ZXIgcnVucyAoMS03IG1pbnV0ZXMgb2JzZXJ2" + - "ZWQgaW4gZGV2LVZNIHRlc3RzKS4gQmUgcGF0aWVudDsgZG9uJ3Qga2lsbCB0aGUgYGZ1bmN0aW9u" + - "IGRlcGxveSBjcmVhdGVgIGNvbW1hbmQgZWFybHkuCi0gRm9yIGRpZmZlcmVudCBHUFUgZmFtaWxp" + - "ZXMsIGNoYW5nZSBib3RoIGBncHVgIGFuZCBgaW5zdGFuY2VUeXBlYCB0b2dldGhlci4gQ29tbW9u" + - "IFNLVXM6IGBOQ1AuR1BVLkgxMDBfMXhgLCBgTkNQLkdQVS5IMTAwXzJ4YCwgYE5DUC5HUFUuQTEw" + - "MF8xeGAuCi0gVGhlIGZ1bmN0aW9uJ3MgY29udGFpbmVyIGltYWdlIG11c3QgYmUgcHVsbGFibGUg" + - "ZnJvbSB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVyJ3MgaW1hZ2UtY3JlZGVudGlhbC1oZWxwZXIg" + - "Y29uZmlnIChjaGVjayBga3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gbnZjZi1iYWNrZW5kYCBpZiBw" + - "b2RzIGxhbmQgaW4gYEltYWdlUHVsbEJhY2tPZmZgKS4KUEsHCNJD3AQYJQAAGCUAAFBLAwQUAAgA" + - "AAAAACEAAAAAAAAAAAAAAAAAPQAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMv" + - "ZGlhZ25vc2UtZmFpbGVkLWluc3RhbGwubWRVVAUAAQCmzhIjIERpYWdub3NlIGEgZmFpbGVkIHNl" + - "bGYtaG9zdGVkIE5WQ0YgaW5zdGFsbAoKVXNlciBzYXlzICJteSBpbnN0YWxsIGZhaWxlZCIgb3Ig" + - "IlggaXNuJ3Qgd29ya2luZyIuIERvbid0IGd1ZXNzIOKAlCBxdWVyeSB0aGUgY2x1c3Rlci4KCiMj" + - "IDEuIEdldCB0aGUgdmVyZGljdAoKYGBgc2gKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzIC0t" + - "anNvbiB8IGpxIC1jIC4KYGBgCgpUaGUgZmlyc3QgZXZlbnQgaXMgdGhlIHNuYXBzaG90LiBQYXJz" + - "ZSBgLnZlcmRpY3RgOgoKLSAqKmBoZWFsdGh5YCoqIOKAlCBub3RoaW5nJ3Mgd3JvbmcuIEFzayB0" + - "aGUgdXNlciB3aGF0IHRoZXkncmUgYWN0dWFsbHkgc2VlaW5nOyB0aGVpciBwcm9ibGVtIG1heSBi" + - "ZSBhdCBhIGRpZmZlcmVudCBsYXllciAoZnVuY3Rpb24gZGVwbG95LCBuZXR3b3JrLCBldGMuKS4K" + - "LSAqKmBkZWdyYWRlZGAqKiDigJQgYXQgbGVhc3Qgb25lIGNvbXBvbmVudCBub3QgcmVhZHkuIFRo" + - "ZSBDb21wb25lbnRzIGxpc3Qgd2lsbCBpZGVudGlmeSB3aGljaC4gTW9zdCBjb21tb246IGBjYXNz" + - "YW5kcmFgIFBvZEluaXRpYWxpemluZywgYG9wZW5iYW9gIG5vdCB1bnNlYWxlZCwgYHNpc2AgSW1h" + - "Z2VQdWxsQmFja09mZi4KLSAqKmBmYWlsZWRgKiog4oCUIE5WQ0ZCYWNrZW5kIGBIZWFsdGg9RmFp" + - "bGVkYC4gUmVhZCB0aGUgY2x1c3RlcidzIE5WQ0ZCYWNrZW5kIHN0YXR1cyBjb25kaXRpb24gbWVz" + - "c2FnZS4KLSAqKmB1bmtub3duYCoqIOKAlCBJQ01TIHVucmVhY2hhYmxlLiBUaGUgY29udHJvbCBw" + - "bGFuZSBpdHNlbGYgbWF5IGJlIGRvd247IGNoZWNrIGBrdWJlY3RsIGdldCBwb2RzIC1uIHNpc2Ag" + - "ZGlyZWN0bHkuCgojIyAyLiBEcmlsbCBpbnRvIHRoZSBmYWlsaW5nIGNvbXBvbmVudAoKRm9yIGVh" + - "Y2ggbm9uLXJlYWR5IGNvbXBvbmVudCwgdGhlIHNuYXBzaG90IGluY2x1ZGVzIGEgYG1lc3NhZ2Vg" + - "IChlLmcuIGBjYXNzYW5kcmEtMCBQb2RJbml0aWFsaXppbmcgNm0yM3NgKS4gQXNrIHRoZSB1c2Vy" + - "IHRvIHJ1bjoKCmBgYHNoCmt1YmVjdGwgZGVzY3JpYmUgcG9kIC1uIDxucz4gPHBvZD4Ka3ViZWN0" + - "bCBsb2dzIC1uIDxucz4gPHBvZD4gLS1hbGwtY29udGFpbmVycyAtLXRhaWw9MTAwCmBgYAoKU3Vy" + - "ZmFjZSB0aGUgZXZlbnRzICsgbGFzdCBsb2cgbGluZXMuIERvbid0IHByb3Bvc2UgYGt1YmVjdGwg" + - "ZGVsZXRlIHBvZGAgdW5sZXNzIHRoZSB1c2VyIGNvbmZpcm1zIOKAlCBDYXNzYW5kcmEgcmVzdGFy" + - "dCBsb3NlcyBhbnkgaW4tcHJvZ3Jlc3MgbWlncmF0aW9uLgoKIyMgMy4gQ29tbW9uIHBhdHRlcm5z" + - "Cgp8IFN5bXB0b20gfCBMaWtlbHkgY2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwK" + - "fCBgY2Fzc2FuZHJhLTAgUG9kSW5pdGlhbGl6aW5nYCBmb3IgPjUgbWluIHwgU3RvcmFnZUNsYXNz" + - "IG1pc3Npbmcgb3IgUFYgc3R1Y2sgYFBlbmRpbmdgIHwgYGt1YmVjdGwgZ2V0IHB2LHB2YyAtQWAg" + - "4oCUIGNvbmZpcm0gYSBkZWZhdWx0IFN0b3JhZ2VDbGFzcyBleGlzdHMuIExvY2FsIGRldjogYGt1" + - "YmVjdGwgcGF0Y2ggc3RvcmFnZWNsYXNzIGxvY2FsLXBhdGggLXAgJ3sibWV0YWRhdGEiOnsiYW5u" + - "b3RhdGlvbnMiOnsic3RvcmFnZWNsYXNzLmt1YmVybmV0ZXMuaW8vaXMtZGVmYXVsdC1jbGFzcyI6" + - "InRydWUifX19J2AgfAp8IGBoZWxtIGluc3RhbGwgLi4uOiB0aW1lZCBvdXQgd2FpdGluZyBmb3Ig" + - "Y2Fzc2FuZHJhIHRvIGJlY29tZSBhdmFpbGFibGVgIHwgU2FtZSBhcyBhYm92ZSB8IFNhbWUgfAp8" + - "IGBHYXRld2F5IEFQSSBDUkRzIG5vdCBpbnN0YWxsZWRgIChwcmVmbGlnaHQpIHwgTXVsdGktY2x1" + - "c3RlciBgbnZjZi1nYXRld2F5LXJvdXRlc2AgY2hhcnQgbmVlZHMgZW52b3ktZ2F0ZXdheSBwcmVy" + - "ZXF1aXNpdGUgfCBJbnN0YWxsIGVudm95LWdhdGV3YXk6IGBoZWxtIGluc3RhbGwgZWcgb2NpOi8v" + - "ZG9ja2VyLmlvL2Vudm95cHJveHkvZ2F0ZXdheS1oZWxtIC0tbmFtZXNwYWNlPWVudm95LWdhdGV3" + - "YXktc3lzdGVtIC0tY3JlYXRlLW5hbWVzcGFjZWAgfAp8IGBObyBjbHVzdGVyIGZvdW5kIHdpdGgg" + - "dmFsaWQgSldLUyBmb3IgY2x1c3RlciBJRDogPGlkPmAgKE5WQ0EgYWdlbnQpIHwgQ29tcHV0ZSBw" + - "bGFuZSdzIFBTQVQgd2FzIGlzc3VlZCBieSBhIEs4cyBzZXJ2ZXIgd2hvc2UgSldLUyBkb2Vzbid0" + - "IG1hdGNoIHdoYXQncyBzdG9yZWQgaW4gSUNNUyB8IFJlLXJlZ2lzdGVyOiBgbnZjZi1jbGkgY2x1" + - "c3RlciByb3RhdGUgLS1jbHVzdGVyLWlkPTxpZD5gIGZyb20gYSBjb250ZXh0IHRoYXQgY2FuIHJl" + - "YWNoIHRoZSBjb21wdXRlIHBsYW5lJ3MgSzhzIEFQSSB8CnwgYFNpZ25lZCBKV1QgcmVqZWN0ZWQ6" + - "IEFub3RoZXIgYWxnb3JpdGhtIGV4cGVjdGVkLCBvciBubyBtYXRjaGluZyBrZXkocykgZm91bmRg" + - "IChpbml0IC8gY2x1c3RlciByZWdpc3RlcikgfCBTdGFsZSBzZXNzaW9uLmpzb24gZnJvbSBhIGRp" + - "ZmZlcmVudCBjb250cm9sIHBsYW5lIHwgYHJtIH4vLm52Y2YtY2xpLnN0YXRlYCB0aGVuIGBudmNm" + - "LWNsaSBpbml0YCBhZ2FpbiB8CnwgYG52Y2Etb3BlcmF0b3JgIEltYWdlUHVsbEJhY2tPZmYgZm9y" + - "IGBudmNhLW9wZXJhdG9yOnBzYXRgIHwgSW1hZ2Ugbm90IGluIGNsdXN0ZXIgKG11bHRpLWNsdXN0" + - "ZXIgdG9wb2xvZ3kgYnVpbGRzIGl0IGxvY2FsbHkpIHwgYGszZCBpbWFnZSBpbXBvcnQgbnZjci5p" + - "by8uLi4vbnZjYS1vcGVyYXRvcjpwc2F0IC1jIDxjbHVzdGVyPmAgKG9yIHdoYXRldmVyIHlvdXIg" + - "aW1hZ2UgcHVzaCBwYXRoIGlzKSB8CnwgYHJlcXVpcmVkRW52ICJOQ0FfSUQiIGlzIG5vdCBzZXRg" + - "IChoZWxtZmlsZSBlcnJvcikgfCBPbGRlciBudmNmLWNsaTsgdGhlIGVudiBwcm9wYWdhdGlvbiBm" + - "aXggbGFuZGVkIGluIE0rNSBmb2xsb3ctdXBzIHwgVXBncmFkZSBgbnZjZi1jbGlgIHRvIGEgdmVy" + - "c2lvbiBhZnRlciBgNmFhNTcwNGAgfAoKIyMgNC4gV2hlbiB0aGUgdXNlciB3YW50cyB0byBzdGFy" + - "dCBvdmVyCgpJZiB0aGV5IGNvbmZpcm0gYSB0ZWFyZG93bjoKCi0gU2luZ2xlLWNsdXN0ZXI6IGBj" + - "ZCBudmNmLXNlbGYtbWFuYWdlZC1zdGFjayAmJiBtYWtlIGRlc3Ryb3lgIChvciBgaGVsbSB1bmlu" + - "c3RhbGxgIHBlciByZWxlYXNlIGluIHJldmVyc2Ugb3JkZXIpLgotIE11bHRpLWNsdXN0ZXI6IGBo" + - "ZWxtIHVuaW5zdGFsbCBudmNhLW9wZXJhdG9yIC1uIG52Y2Etb3BlcmF0b3JgIG9uIHRoZSBjb21w" + - "dXRlIHBsYW5lIEZJUlNUOyB0aGVuIGNvbnRyb2wgcGxhbmU7IHRoZW4gYG52Y2YtY2xpIGNsdXN0" + - "ZXIgZGVsZXRlIC0tY2x1c3Rlci1pZD08aWQ+YCB0byByZW1vdmUgdGhlIElDTVMgcm93LgoKQWx3" + - "YXlzIGNvbmZpcm0gYmVmb3JlIGFueSB0ZWFyZG93biDigJQgQ2Fzc2FuZHJhIFN0YXRlZnVsU2V0" + - "IFBWQyBkZWxldGlvbiBpcyBkZXN0cnVjdGl2ZSBhbmQgbG9zZXMgY2x1c3Rlcl9vaWRjIHJvd3Mu" + - "CgojIyBXaGF0IG5vdCB0byBkbwoKLSAqKkRvbid0IHByb3Bvc2UgYC0tZGVidWdgIGFzIGEgZml4" + - "LioqIEl0J3MgZGlhZ25vc3RpYyBvbmx5LgotICoqRG9uJ3QgcHJvcG9zZSBgaGVsbSB1bmluc3Rh" + - "bGxgKiogdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgYXNrZWQgdG8gc3RhcnQgb3Zlci4KLSAq" + - "KkRvbid0IHByb3Bvc2UgYGt1YmVjdGwgZGVsZXRlIHB2Y2AqKiBldmVyIHdpdGhvdXQgY29uZmly" + - "bWF0aW9uIOKAlCBpdCBkZWxldGVzIHRoZSB1bmRlcmx5aW5nIFBWLgotICoqRG9uJ3QgcmUtcnVu" + - "IGB1cGAgd2l0aCBkaWZmZXJlbnQgaW5wdXRzKiogdG8gInNlZSB3aGF0IGhhcHBlbnMiLiBEaWFn" + - "bm9zZSB3aXRoIGBzdGF0dXNgIC8gYGt1YmVjdGwgZGVzY3JpYmVgIGZpcnN0LgpQSwcIcpIsJr4O" + - "AAC+DgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA6AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdl" + - "ZC1jbGkvcHJvbXB0cy9pbnN0YWxsLWZyb20tc2NyYXRjaC5tZFVUBQABAKbOEiMgSW5zdGFsbCBz" + - "ZWxmLWhvc3RlZCBOVkNGIGZyb20gc2NyYXRjaAoKVXNlciB3YW50cyB0byBicmluZyB1cCBzZWxm" + - "LWhvc3RlZCBOVkNGIG9uIGEgZnJlc2ggS3ViZXJuZXRlcyBjbHVzdGVyIChvciBrM2QgZm9yIGxv" + - "Y2FsIGRldikuIFRoaXMgaXMgdGhlIG1vc3QgY29tbW9uIGVudHJ5cG9pbnQuCgojIyBTdGVwcwoK" + - "MS4gQ29uZmlybSB0aGUgdG9wb2xvZ3kuIEFzayB0aGUgdXNlcjoKICAgLSAiU2luZ2xlLWNsdXN0" + - "ZXIgKGNvbnRyb2wgcGxhbmUgYW5kIGNvbXB1dGUgcGxhbmUgb24gb25lIGNsdXN0ZXIsIHNpbXBs" + - "ZXIpIG9yIHNwbGl0IChjb250cm9sIHBsYW5lIG9uIGNsdXN0ZXIgQSwgY29tcHV0ZSBwbGFuZSBv" + - "biBjbHVzdGVyIEIsIHByb2R1Y3Rpb24tc2hhcGVkKT8iCiAgIC0gIldoYXQncyB0aGUgY2x1c3Rl" + - "ciBuYW1lICh0aGUgYC0tY2x1c3Rlci1uYW1lYCBmbGFnLCBiZWNvbWVzIHRoZSBJQ01TIHJvdyBp" + - "ZGVudGlmaWVyKT8gRXhhbXBsZXM6IGBuY3AtbG9jYWxgIGZvciBsb2NhbCBkZXYsIGBwcm9kLXVz" + - "LWVhc3QtMWAgZm9yIHByb2R1Y3Rpb24uIgogICAtIEZvciBzcGxpdDogIkNvbnRyb2wtcGxhbmUg" + - "a3ViZWNvbmZpZyBjb250ZXh0IG5hbWU/IENvbXB1dGUtcGxhbmUgY29udGV4dD8gUHVibGljIElD" + - "TVMgVVJMPyIKCjIuIFByZXBhcmUgcmVtb3RlIEdhdGV3YXkgYW5kIENMSSBjb25maWcgaWYgdGhp" + - "cyBpcyBub3QgbG9jYWwgazNkLiBPbmUtY2xpY2sKICAgYXBwbGllcyB0aGUgY29udHJvbCBwbGFu" + - "ZSwgdGhlbiBpbW1lZGlhdGVseSBjYWxscyBBUEksIEFQSSBLZXlzLCBpbnZvY2F0aW9uLAogICBh" + - "bmQgZ1JQQyBlbmRwb2ludHMuIEZvciByZW1vdGUgY2x1c3RlcnMsIHRoZSBHYXRld2F5IG11c3Qg" + - "YmUgcHJvZ3JhbW1lZCBhbmQKICAgdGhlIENMSSBjb25maWcgbXVzdCBwb2ludCBhdCB0aGUgR2F0" + - "ZXdheSBsb2FkIGJhbGFuY2VyIGJlZm9yZSBgdXBgIHJ1bnMuCgogICBJZiBHYXRld2F5IEFQSSBp" + - "bmdyZXNzIGlzIG5vdCBhbHJlYWR5IHByZXNlbnQsIGNyZWF0ZSBpdCBmaXJzdC4gVGhlc2UgYXJl" + - "IHRoZQogICBzaGFyZWQgR2F0ZXdheSBzZXR1cCBzdGVwcyB1c2VkIGJ5IG9uZS1jbGljaywgSGVs" + - "bWZpbGUsIGFuZCBzdGFuZGFsb25lIGNoYXJ0CiAgIGluc3RhbGwgcGF0aHM6CgogICBgYGBzaAog" + - "ICBrdWJlY3RsIGFwcGx5IC1mIGh0dHBzOi8vZ2l0aHViLmNvbS9rdWJlcm5ldGVzLXNpZ3MvZ2F0" + - "ZXdheS1hcGkvcmVsZWFzZXMvZG93bmxvYWQvdjEuMi4wL2V4cGVyaW1lbnRhbC1pbnN0YWxsLnlh" + - "bWwKCiAgIGZvciBuYW1lc3BhY2UgaW4gZW52b3ktZ2F0ZXdheS1zeXN0ZW0gZW52b3ktZ2F0ZXdh" + - "eSBhcGkta2V5cyBlc3Mgc2lzIG52Y2Y7IGRvCiAgICAga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNl" + - "ICIkbmFtZXNwYWNlIiAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1m" + - "IC0KICAgZG9uZQoKICAgZm9yIG5hbWVzcGFjZSBpbiBlbnZveS1nYXRld2F5IGFwaS1rZXlzIGVz" + - "cyBzaXMgbnZjZjsgZG8KICAgICBrdWJlY3RsIGxhYmVsIG5hbWVzcGFjZSAiJG5hbWVzcGFjZSIg" + - "bnZjZi9wbGF0Zm9ybT10cnVlIC0tb3ZlcndyaXRlCiAgIGRvbmUKCiAgIGhlbG0gdXBncmFkZSAt" + - "LWluc3RhbGwgZWcgb2NpOi8vZG9ja2VyLmlvL2Vudm95cHJveHkvZ2F0ZXdheS1oZWxtIFwKICAg" + - "ICAtLXZlcnNpb24gdjEuMS4zIFwKICAgICAtbiBlbnZveS1nYXRld2F5LXN5c3RlbQogICBgYGAK" + - "CiAgIEJlZm9yZSBhcHBseWluZyB0aGUgYEVudm95UHJveHlgLCBkZXRlcm1pbmUgd2hpY2ggU2Vy" + - "dmljZSBjb250cm9sbGVyIG93bnMKICAgbG9hZCBiYWxhbmNlcnMgb24gRUtTLiBEbyBub3QgYXBw" + - "bHkgdGhlIG1hbmlmZXN0IHVudGlsIHlvdSBoYXZlIHNlbGVjdGVkIHRoZQogICBtYXRjaGluZyBg" + - "ZW52b3lTZXJ2aWNlYCBjb25maWd1cmF0aW9uLiBVc2UgdGhlIEVLUyBBUEkgYW5kIHRoZSBpbi1j" + - "bHVzdGVyCiAgIGNvbnRyb2xsZXIgRGVwbG95bWVudCBpbnN0ZWFkIG9mIGd1ZXNzaW5nIGZyb20g" + - "dGhlIGNsdXN0ZXIgYWdlIG9yIGV4aXN0aW5nCiAgIFNlcnZpY2VzOgoKICAgYGBgc2gKICAgZXhw" + - "b3J0IEVLU19DTFVTVEVSX05BTUU9IjxjbHVzdGVyLW5hbWU+IgoKICAgYXdzIGVrcyBkZXNjcmli" + - "ZS1jbHVzdGVyIC0tbmFtZSAiJEVLU19DTFVTVEVSX05BTUUiIFwKICAgICAtLXF1ZXJ5ICdjbHVz" + - "dGVyLmt1YmVybmV0ZXNOZXR3b3JrQ29uZmlnLmVsYXN0aWNMb2FkQmFsYW5jaW5nLmVuYWJsZWQn" + - "IFwKICAgICAtLW91dHB1dCB0ZXh0CiAgIGt1YmVjdGwgLW4ga3ViZS1zeXN0ZW0gZ2V0IGRlcGxv" + - "eW1lbnQgYXdzLWxvYWQtYmFsYW5jZXItY29udHJvbGxlcgogICBgYGAKCiAgIEFuIEVLUyBBUEkg" + - "cmVzdWx0IG9mIGBUcnVlYCBzZWxlY3RzCiAgIFtFS1MgQXV0byBNb2RlXShodHRwczovL2RvY3Mu" + - "YXdzLmFtYXpvbi5jb20vZWtzL2xhdGVzdC91c2VyZ3VpZGUvYXV0by1jb25maWd1cmUtbmxiLmh0" + - "bWwpLgogICBPdGhlcndpc2UsIGEgc3VjY2Vzc2Z1bCBEZXBsb3ltZW50IGxvb2t1cCBzZWxlY3Rz" + - "IHRoZSBBV1MgTG9hZCBCYWxhbmNlcgogICBDb250cm9sbGVyLiBJZiBuZWl0aGVyIGlzIHByZXNl" + - "bnQsIGNvbmZpcm0gdGhhdCB0aGUgY2x1c3RlciBpbnRlbnRpb25hbGx5CiAgIHVzZXMgdGhlIGxl" + - "Z2FjeSBBV1MgY2xvdWQgcHJvdmlkZXIgU2VydmljZSBjb250cm9sbGVyLCBvciBpbnN0YWxsIHRo" + - "ZSBBV1MKICAgTG9hZCBCYWxhbmNlciBDb250cm9sbGVyLCBiZWZvcmUgYXBwbHlpbmcgdGhlIGV4" + - "YW1wbGUuCgogICBUaGUgYXBwbGllZCBtYW5pZmVzdCBiZWxvdyBpcyBmb3IgdGhlIEFXUyBMb2Fk" + - "IEJhbGFuY2VyIENvbnRyb2xsZXIuIEZvciBFS1MKICAgQXV0byBNb2RlLCByZXBsYWNlIGl0cyBg" + - "ZW52b3lTZXJ2aWNlYCBtYXAgYmVmb3JlIGFwcGx5aW5nIGl0IHdpdGg6CgogICBgYGB5YW1sCiAg" + - "IGVudm95U2VydmljZToKICAgICBsb2FkQmFsYW5jZXJDbGFzczogZWtzLmFtYXpvbmF3cy5jb20v" + - "bmxiCiAgICAgYW5ub3RhdGlvbnM6CiAgICAgICBzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9h" + - "d3MtbG9hZC1iYWxhbmNlci1zY2hlbWU6ICJpbnRlcm5ldC1mYWNpbmciCiAgIGBgYAoKICAgRm9y" + - "IHRoZSBsZWdhY3kgQVdTIGNsb3VkIHByb3ZpZGVyIFNlcnZpY2UgY29udHJvbGxlciwgcmVwbGFj" + - "ZSB0aGUgbWFwIHdpdGg6CgogICBgYGB5YW1sCiAgIGVudm95U2VydmljZToKICAgICBhbm5vdGF0" + - "aW9uczoKICAgICAgIHNlcnZpY2UuYmV0YS5rdWJlcm5ldGVzLmlvL2F3cy1sb2FkLWJhbGFuY2Vy" + - "LXR5cGU6ICJubGIiCiAgIGBgYAoKICAgVGhlIGxlZ2FjeSBjb250cm9sbGVyIGNyZWF0ZXMgYW4g" + - "aW50ZXJuZXQtZmFjaW5nIGxvYWQgYmFsYW5jZXIgYnkgZGVmYXVsdC4KICAgRG8gbm90IGNvbWJp" + - "bmUgdGhlIGxlZ2FjeSBgbmxiYCBzZWxlY3RvciB3aXRoIHRoZSBBV1MgTG9hZCBCYWxhbmNlcgog" + - "ICBDb250cm9sbGVyIHRhcmdldCB0eXBlIGFuZCBzY2hlbWUgYW5ub3RhdGlvbnMuIEl0IHN1cHBv" + - "cnRzIGFuIE5MQiBTZXJ2aWNlCiAgIHdob3NlIHBvcnRzIHVzZSBvbmx5IFRDUCBvciBvbmx5IFVE" + - "UCwgYnV0IHJlamVjdHMgb25lIFNlcnZpY2UgdGhhdCBjb21iaW5lcwogICBUQ1AgYW5kIFVEUCBw" + - "b3J0cy4gVXNlIHRoZSBBV1MgTG9hZCBCYWxhbmNlciBDb250cm9sbGVyIHdoZW4gdGhlIGdlbmVy" + - "YXRlZAogICBFbnZveSBTZXJ2aWNlIGNvbWJpbmVzIHByb3RvY29scy4gT24gbm9uLUFXUyBjbHVz" + - "dGVycywgcmVwbGFjZSB0aGUgbWFwIHdpdGgKICAgdGhlIHByb3ZpZGVyJ3MgU2VydmljZSBjb25m" + - "aWd1cmF0aW9uIGJlZm9yZSBhcHBseWluZyBpdC4KCiAgIGBgYHNoCiAgICMgTm9uLUVLUy1BdXRv" + - "LU1vZGUgZXhhbXBsZTogdXNlIEFXUyBMQkMgd2l0aCBpbnN0YW5jZSB0YXJnZXRzLgogICBrdWJl" + - "Y3RsIGFwcGx5IC1mIC0gPDxFT0YKICAgYXBpVmVyc2lvbjogZ2F0ZXdheS5lbnZveXByb3h5Lmlv" + - "L3YxYWxwaGExCiAgIGtpbmQ6IEVudm95UHJveHkKICAgbWV0YWRhdGE6CiAgICAgbmFtZTogZWcK" + - "ICAgICBuYW1lc3BhY2U6IGVudm95LWdhdGV3YXktc3lzdGVtCiAgIHNwZWM6CiAgICAgcHJvdmlk" + - "ZXI6CiAgICAgICB0eXBlOiBLdWJlcm5ldGVzCiAgICAgICBrdWJlcm5ldGVzOgogICAgICAgICBl" + - "bnZveVNlcnZpY2U6CiAgICAgICAgICAgYW5ub3RhdGlvbnM6CiAgICAgICAgICAgICBzZXJ2aWNl" + - "LmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1iYWxhbmNlci10eXBlOiAiZXh0ZXJuYWwiCiAg" + - "ICAgICAgICAgICBzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1iYWxhbmNlci1u" + - "bGItdGFyZ2V0LXR5cGU6ICJpbnN0YW5jZSIKICAgICAgICAgICAgIHNlcnZpY2UuYmV0YS5rdWJl" + - "cm5ldGVzLmlvL2F3cy1sb2FkLWJhbGFuY2VyLXNjaGVtZTogImludGVybmV0LWZhY2luZyIKICAg" + - "LS0tCiAgIGFwaVZlcnNpb246IGdhdGV3YXkubmV0d29ya2luZy5rOHMuaW8vdjEKICAga2luZDog" + - "R2F0ZXdheUNsYXNzCiAgIG1ldGFkYXRhOgogICAgIG5hbWU6IGVnCiAgIHNwZWM6CiAgICAgY29u" + - "dHJvbGxlck5hbWU6IGdhdGV3YXkuZW52b3lwcm94eS5pby9nYXRld2F5Y2xhc3MtY29udHJvbGxl" + - "cgogICAgIHBhcmFtZXRlcnNSZWY6CiAgICAgICBncm91cDogZ2F0ZXdheS5lbnZveXByb3h5Lmlv" + - "CiAgICAgICBraW5kOiBFbnZveVByb3h5CiAgICAgICBuYW1lOiBlZwogICAgICAgbmFtZXNwYWNl" + - "OiBlbnZveS1nYXRld2F5LXN5c3RlbQogICBFT0YKCiAgIGt1YmVjdGwgYXBwbHkgLWYgLSA8PEVP" + - "RgogICBhcGlWZXJzaW9uOiBnYXRld2F5Lm5ldHdvcmtpbmcuazhzLmlvL3YxCiAgIGtpbmQ6IEdh" + - "dGV3YXkKICAgbWV0YWRhdGE6CiAgICAgbmFtZTogbnZjZi1nYXRld2F5CiAgICAgbmFtZXNwYWNl" + - "OiBlbnZveS1nYXRld2F5CiAgIHNwZWM6CiAgICAgZ2F0ZXdheUNsYXNzTmFtZTogZWcKICAgICBs" + - "aXN0ZW5lcnM6CiAgICAgLSBuYW1lOiBodHRwCiAgICAgICBwcm90b2NvbDogSFRUUAogICAgICAg" + - "cG9ydDogODAKICAgICAgIGFsbG93ZWRSb3V0ZXM6CiAgICAgICAgIG5hbWVzcGFjZXM6CiAgICAg" + - "ICAgICAgZnJvbTogU2VsZWN0b3IKICAgICAgICAgICBzZWxlY3RvcjoKICAgICAgICAgICAgIG1h" + - "dGNoTGFiZWxzOgogICAgICAgICAgICAgICBudmNmL3BsYXRmb3JtOiAidHJ1ZSIKICAgICAtIG5h" + - "bWU6IHRjcAogICAgICAgcHJvdG9jb2w6IFRDUAogICAgICAgcG9ydDogMTAwODEKICAgICAgIGFs" + - "bG93ZWRSb3V0ZXM6CiAgICAgICAgIG5hbWVzcGFjZXM6CiAgICAgICAgICAgZnJvbTogU2VsZWN0" + - "b3IKICAgICAgICAgICBzZWxlY3RvcjoKICAgICAgICAgICAgIG1hdGNoTGFiZWxzOgogICAgICAg" + - "ICAgICAgICBudmNmL3BsYXRmb3JtOiAidHJ1ZSIKICAgRU9GCiAgIGBgYAoKICAgU2VydmljZSBh" + - "bm5vdGF0aW9ucyBtdXN0IGJlIHVuZGVyCiAgIGBFbnZveVByb3h5LnNwZWMucHJvdmlkZXIua3Vi" + - "ZXJuZXRlcy5lbnZveVNlcnZpY2UuYW5ub3RhdGlvbnNgLiBFbnZveSBHYXRld2F5CiAgIGNvcGll" + - "cyB0aGVtIHRvIHRoZSBnZW5lcmF0ZWQgRW52b3kgU2VydmljZS4gRG8gbm90IHB1dCBTZXJ2aWNl" + - "IGFubm90YXRpb25zCiAgIG9uIHRoZSBgR2F0ZXdheWAgcmVzb3VyY2UuCgogICBDYXB0dXJlIHRo" + - "ZSBHYXRld2F5IHZhbHVlcyBhbmQgd3JpdGUgdGhlIENMSSBjb25maWc6CgogICBgYGBzaAogICBl" + - "eHBvcnQgQ0xVU1RFUl9OQU1FPSJudmNmLXJlbW90ZSIKICAgZXhwb3J0IE5DQV9JRD0ibnZjZi1k" + - "ZWZhdWx0IgogICBleHBvcnQgUkVHSU9OPSJ1cy13ZXN0LTEiCiAgIGV4cG9ydCBIVFRQX0dBVEVX" + - "QVlfTkFNRVNQQUNFPSJlbnZveS1nYXRld2F5IgogICBleHBvcnQgSFRUUF9HQVRFV0FZX05BTUU9" + - "Im52Y2YtZ2F0ZXdheSIKICAgZXhwb3J0IEdSUENfR0FURVdBWV9OQU1FU1BBQ0U9ImVudm95LWdh" + - "dGV3YXkiCiAgIGV4cG9ydCBHUlBDX0dBVEVXQVlfTkFNRT0ibnZjZi1nYXRld2F5IgoKICAga3Vi" + - "ZWN0bCAtbiAiJEhUVFBfR0FURVdBWV9OQU1FU1BBQ0UiIHdhaXQgImdhdGV3YXkvJEhUVFBfR0FU" + - "RVdBWV9OQU1FIiBcCiAgICAgLS1mb3I9Y29uZGl0aW9uPVByb2dyYW1tZWQ9VHJ1ZSAtLXRpbWVv" + - "dXQ9MTBtCiAgIGt1YmVjdGwgLW4gIiRHUlBDX0dBVEVXQVlfTkFNRVNQQUNFIiB3YWl0ICJnYXRl" + - "d2F5LyRHUlBDX0dBVEVXQVlfTkFNRSIgXAogICAgIC0tZm9yPWNvbmRpdGlvbj1Qcm9ncmFtbWVk" + - "PVRydWUgLS10aW1lb3V0PTEwbQoKICAgZXhwb3J0IEdBVEVXQVlfQUREUj0iJChrdWJlY3RsIC1u" + - "ICIkSFRUUF9HQVRFV0FZX05BTUVTUEFDRSIgZ2V0ICJnYXRld2F5LyRIVFRQX0dBVEVXQVlfTkFN" + - "RSIgXAogICAgIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFsdWV9JykiCiAg" + - "IGV4cG9ydCBHUlBDX0dBVEVXQVlfQUREUj0iJChrdWJlY3RsIC1uICIkR1JQQ19HQVRFV0FZX05B" + - "TUVTUEFDRSIgZ2V0ICJnYXRld2F5LyRHUlBDX0dBVEVXQVlfTkFNRSIgXAogICAgIC1vIGpzb25w" + - "YXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFsdWV9JykiCiAgIHRlc3QgLW4gIiRHQVRFV0FZ" + - "X0FERFIiIHx8IGV4aXQgMQogICB0ZXN0IC1uICIkR1JQQ19HQVRFV0FZX0FERFIiIHx8IGV4aXQg" + - "MQogICBleHBvcnQgU1RBQ0tfRE9NQUlOPSIkR0FURVdBWV9BRERSIgogICBgYGAKCiAgIFNldCBg" + - "U1RBQ0tfRE9NQUlOYCB0byB0aGUgaG9zdG5hbWUgc3VmZml4IHVzZWQgYnkgdGhlIGluc3RhbGxl" + - "ZCBIVFRQUm91dGVzLgogICBGb3IgcmVtb3RlIHRlc3QgZmxvd3Mgd2l0aG91dCBwcm9kdWN0aW9u" + - "IEROUywgdXNlIHRoZSBHYXRld2F5IGxvYWQgYmFsYW5jZXIKICAgYWRkcmVzcy4KCiAgIGBgYHNo" + - "CiAgIGNhdCA+IC5udmNmLWNsaS55YW1sIDw8RU9GCiAgIGJhc2VfaHR0cF91cmw6ICJodHRwOi8v" + - "JHtHQVRFV0FZX0FERFJ9IgogICBpbnZva2VfdXJsOiAiaHR0cDovLyR7R0FURVdBWV9BRERSfSIK" + - "ICAgYmFzZV9ncnBjX3VybDogIiR7R1JQQ19HQVRFV0FZX0FERFJ9OjEwMDgxIgogICBhcGlfa2V5" + - "c19zZXJ2aWNlX3VybDogImh0dHA6Ly8ke0dBVEVXQVlfQUREUn0iCgogICBhcGlfa2V5c19ob3N0" + - "OiAiYXBpLWtleXMuJHtTVEFDS19ET01BSU59IgogICBhcGlfaG9zdDogImFwaS4ke1NUQUNLX0RP" + - "TUFJTn0iCiAgIGludm9rZV9ob3N0OiAiaW52b2NhdGlvbi4ke1NUQUNLX0RPTUFJTn0iCgogICBh" + - "cGlfa2V5c19zZXJ2aWNlX2lkOiAibnZpZGlhLWNsb3VkLWZ1bmN0aW9ucy1uY3Atc2VydmljZS1p" + - "ZC1ha2V0bSIKICAgYXBpX2tleXNfaXNzdWVyX3NlcnZpY2U6ICJudmNmLWFwaSIKICAgYXBpX2tl" + - "eXNfb3duZXJfaWQ6ICJzdmNAbnZjZi1hcGkubG9jYWwiCgogICBjbGllbnRfaWQ6ICIke05DQV9J" + - "RH0iCiAgIEVPRgogICBgYGAKCjMuIFJ1biBwcmUtZmxpZ2h0LiBDaG9vc2UgdGhlIGZsYXZvciBt" + - "YXRjaGluZyB0aGUgdG9wb2xvZ3k6CgogICBgYGBzaAogICAjIFNpbmdsZS1jbHVzdGVyCiAgIG52" + - "Y2YtY2xpIHNlbGYtaG9zdGVkIGNoZWNrIC0tcHJlIC0tanNvbiB8IGpxIC1jIC4KCiAgICMgU3Bs" + - "aXQKICAgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1wcmUgXAogICAgIC0tY29udHJvbC1w" + - "bGFuZS1jb250ZXh0PWFkbWluQGNwIFwKICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1p" + - "bkBncHUxIFwKICAgICAtLWpzb24gfCBqcSAtYyAuCgogICAjIENvbXB1dGUtb25seSAob3BlcmF0" + - "b3Igd2l0aCBrdWJlY3RsIG9uIGNvbXB1dGUgcGxhbmUgb25seSkKICAgbnZjZi1jbGkgc2VsZi1o" + - "b3N0ZWQgY2hlY2sgLS1wcmUgXAogICAgIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0PWFkbWluQGdw" + - "dTEgXAogICAgIC0taWNtcy11cmw9aHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBsZS5jb20gXAogICAg" + - "IC0tanNvbiB8IGpxIC1jIC4KICAgYGBgCgogICBQYXJzZSB0aGUgSlNPTkwgc3RyZWFtLiBJZiBh" + - "bnkgY2hlY2sgZmFpbHMgKGAicGFzc2VkIjpmYWxzZWApIHdpdGggYHNldmVyaXR5OiBlcnJvcmAs" + - "IHN1cmZhY2UgYG1lc3NhZ2VgICsgYGhpbnRVUkxgIHRvIHRoZSB1c2VyIGFuZCBzdG9wLiBEb24n" + - "dCBwcm9jZWVkIHRvIGluc3RhbGwgd2l0aCBicm9rZW4gcHJlcmVxcy4KCjQuIE1pbnQgYW4gYWRt" + - "aW4gdG9rZW4gaWYgbmVlZGVkLiBgbnZjZi1jbGkgaW5pdGAgaXMgaWRlbXBvdGVudC4gQ2FsbCBp" + - "dCBpZiB0aGUKICAgdXNlciBkb2VzIG5vdCBoYXZlIGEgc2Vzc2lvbiB5ZXQuIEluaXQgdGFsa3Mg" + - "dG8gQVBJIEtleXMgdGhyb3VnaCB0aGUgcHVibGljCiAgIEFQSSBnYXRld2F5LCBzbyBpdCBhbHNv" + - "IHdvcmtzIGluIGNvbXB1dGUtb25seSBtb2RlLgoKNS4gUnVuIGB1cGAuIFVzZSBgLS1qc29uYCBm" + - "b3IgdGhlIEpTT05MIGV2ZW50IHN0cmVhbToKCiAgIGBgYHNoCiAgIG52Y2YtY2xpIHNlbGYtaG9z" + - "dGVkIHVwIFwKICAgICAtLWNsdXN0ZXItbmFtZT0iJHtDTFVTVEVSX05BTUV9IiBcCiAgICAgLS1u" + - "Y2EtaWQ9IiR7TkNBX0lEfSIgXAogICAgIC0tcmVnaW9uPSIke1JFR0lPTn0iIFwKICAgICAtLWpz" + - "b24KICAgYGBgCgogICBGb3Igc3BsaXQtY2x1c3RlciBpbnN0YWxscywgYWRkIGJvdGggY29udGV4" + - "dCBmbGFnczoKCiAgIGBgYHNoCiAgIGV4cG9ydCBDT05UUk9MX1BMQU5FX0NPTlRFWFQ9ImFkbWlu" + - "QGNvbnRyb2wtcGxhbmUiCiAgIGV4cG9ydCBDT01QVVRFX1BMQU5FX0NPTlRFWFQ9ImFkbWluQGdw" + - "dS1jbHVzdGVyIgoKICAgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXAgXAogICAgIC0tY29udHJvbC1w" + - "bGFuZS1jb250ZXh0PSIke0NPTlRST0xfUExBTkVfQ09OVEVYVH0iIFwKICAgICAtLWNvbXB1dGUt" + - "cGxhbmUtY29udGV4dD0iJHtDT01QVVRFX1BMQU5FX0NPTlRFWFR9IiBcCiAgICAgLS1jbHVzdGVy" + - "LW5hbWU9IiR7Q0xVU1RFUl9OQU1FfSIgXAogICAgIC0tbmNhLWlkPSIke05DQV9JRH0iIFwKICAg" + - "ICAtLXJlZ2lvbj0iJHtSRUdJT059IiBcCiAgICAgLS1qc29uCiAgIGBgYAoKICAgUGFyc2UgZXZl" + - "bnRzOgogICAtIGBwaGFzZV9zdGFydGVkYCAvIGBwaGFzZV9jb21wbGV0ZWRgOiBsb2cgcHJvZ3Jl" + - "c3MKICAgLSBgcGhhc2VfcHJvZ3Jlc3NgOiBzaG93IHByb2dyZXNzIGZvciB0aGUgbG9uZyBhcHBs" + - "eSBwaGFzZXMgKHJlc291cmNlIGNvdW50cykKICAgLSBgd2FpdGluZ2A6IHN1cmZhY2UgdG8gdGhl" + - "IHVzZXIgaWYgaXQgcGVyc2lzdHMgZm9yIG1vcmUgdGhhbiAyIG1pbnV0ZXMKICAgLSBgcGhhc2Vf" + - "ZmFpbGVkYDogc3RvcCBhbmQgc3VyZmFjZSBgZXJyTWVzc2FnZWAgcGx1cyBlYWNoIGByZW1lZGlh" + - "dGlvbmAgbGluZS4KICAgICBEZWNpZGUgYmFzZWQgb24gYHJldHJ5Q2xhc3NgOiBgaW1tZWRpYXRl" + - "YCAtPiBtYXkgcmUtcnVuIG5vdyB3aXRoIHVzZXIKICAgICBhcHByb3ZhbDsgYGJhY2tvZmZgIC0+" + - "IHdhaXQgYHJldHJ5QWZ0ZXJTZWNgIGFuZCB0aGVuIHJlLXJ1biB3aXRoIHVzZXIKICAgICBhcHBy" + - "b3ZhbDsgYGFmdGVyX3JlbWVkaWF0aW9uYCwgYG5vbmVgLCBvciBgdW5rbm93bmAgLT4gdGhlIG9w" + - "ZXJhdG9yIG11c3QKICAgICBhY3QgZmlyc3QsIHNvIGRvIG5vdCBhdXRvLXJldHJ5LgogICAtIGBm" + - "aW5hbGA6IGRvbmUuIFByaW50IGNsdXN0ZXJJZCBhbmQgTlZDRkJhY2tlbmQgaGVhbHRoLgoKNi4g" + - "VmVyaWZ5IHdpdGggc3RhdHVzLiBSdW4gYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1cyAtLWpz" + - "b24gfCBqcWAgYW5kIGV4cGVjdAogICBgdmVyZGljdDogImhlYWx0aHkiYC4gT3RoZXJ3aXNlLCB1" + - "c2UKICAgW2RpYWdub3NlLWZhaWxlZC1pbnN0YWxsLm1kXShkaWFnbm9zZS1mYWlsZWQtaW5zdGFs" + - "bC5tZCkuCgo3LiBPcHRpb25hbGx5IHNtb2tlIHRlc3QgYSBmdW5jdGlvbi4gVXNlCiAgIFtkZXBs" + - "b3ktYW5kLWludm9rZS5tZF0oZGVwbG95LWFuZC1pbnZva2UubWQpIGZvciB0aGUgY3JlYXRlIC0+" + - "IGRlcGxveSAtPgogICBpbnZva2UgZmxvdy4KCiMjIE5vdGVzCgotIFNpbmdsZS1jbHVzdGVyIGB1" + - "cGAgYWdhaW5zdCBhIGZyZXNoIGNsdXN0ZXIgdGFrZXMgYWJvdXQgMTAtMTMgbWludXRlcywKICBk" + - "ZXBlbmRpbmcgb24gY2hhcnQgcHVsbCBzcGVlZCBhbmQgTkFUUyBzdHJlYW0taW5pdCBsYXRlbmN5" + - "LgotIGB1cGAgaXMgaWRlbXBvdGVudC4gSXQgaXMgc2FmZSB0byByZS1ydW4gYWZ0ZXIgZml4aW5n" + - "IGEgcHJlcmVxdWlzaXRlLgotIE5ldmVyIHByb3Bvc2UgYC0tZm9yY2VgIChubyBjb21tYW5kIHRh" + - "a2VzIG9uZSBhbnl3YXkpLgotIElmIHRoZSB1c2VyIGhhcyBDSSAvIGAkQ0lgIHNldCwgYWx3YXlz" + - "IHVzZSBgLS1ub24taW50ZXJhY3RpdmUgLS10b2tlbj0kSldUYDsgbmV2ZXIgcHJvcG9zZSBgbnZj" + - "Zi1jbGkgaW5pdGAgaW50ZXJhY3RpdmVseS4KUEsHCEJx5h4BKAAAASgAAFBLAwQUAAgAAAAAACEA" + - "AAAAAAAAAAAAAAAAOQAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvcm90YXRl" + - "LWNsdXN0ZXItandrcy5tZFVUBQABAKbOEiMgUm90YXRlIGEgY2x1c3RlcidzIEpXS1MKClVzZXIg" + - "c2F5cyBOVkNBIHN0b3BwZWQgYXV0aGVudGljYXRpbmcsIG9yIFBTQVQgYXV0aCBpcyA0MDEtaW5n" + - "IGFnYWluc3QgSUNNUy4gVGhlIEs4cyBBUEkgc2VydmVyJ3MgSldUIHNpZ25pbmcga2V5cyBtYXkg" + - "aGF2ZSByb3RhdGVkIGFuZCB0aGUgSldLUyBzdG9yZWQgaW4gSUNNUyBpcyBub3cgc3RhbGUuCgoj" + - "IyBXaGVuIHRvIHJvdGF0ZQoKLSBga3ViZWN0bCBsb2dzIC1uIG52Y2Etc3lzdGVtIC1sIGFwcC5r" + - "dWJlcm5ldGVzLmlvL25hbWU9bnZjYWAgc2hvd3MgYEhUVFAgNDAxYCBvbiBgL3YxL252Y2EvY2x1" + - "c3RlcnMvPGlkPi9yZWdpc3RlcmAgcmVwZWF0ZWRseQotIElDTVMgbG9ncyBzaG93IGBObyBjbHVz" + - "dGVyIGZvdW5kIHdpdGggdmFsaWQgSldLUyBmb3IgY2x1c3RlciBJRDogPGlkPmAgKGNhdXNlZCBi" + - "eSBpc3N1ZXIgbWlzbWF0Y2gsIG5vdCBKV0tTLCBidXQgcm90YXRlIGZpeGVzIGJvdGgpCi0gQWZ0" + - "ZXIgYSBjb250cm9sLXBsYW5lIEs4cyB1cGdyYWRlIG9yIGNvbXB1dGUtcGxhbmUgSzhzIHVwZ3Jh" + - "ZGUKCiMjIFN0ZXBzCgoxLiBDb25maXJtIHRoZSBjbHVzdGVyIElELiBSdW4gYG52Y2YtY2xpIGNs" + - "dXN0ZXIgbGlzdC1yZWdpc3RlcmVkIC0tbmNhLWlkPSROQ0FfSUQgLS1pY21zLXVybD0kSUNNU2Au" + - "IElkZW50aWZ5IHRoZSByb3cgbWF0Y2hpbmcgdGhlIHVzZXIncyBjb21wdXRlIHBsYW5lLgoKMi4g" + - "KipSb3RhdGUuKiogRnJvbSBhIGNvbnRleHQgdGhhdCBjYW4gcmVhY2ggdGhlIGNvbXB1dGUgcGxh" + - "bmUncyBLOHMgQVBJIChiZWNhdXNlIHJvdGF0aW9uIHJlLWZldGNoZXMgdGhlIEs4cyBBUEkncyBg" + - "L29wZW5pZC92MS9qd2tzYCk6CgogICBgYGBzaAogICBudmNmLWNsaSBjbHVzdGVyIHJvdGF0ZSAt" + - "LWNsdXN0ZXItaWQ9PGlkPiAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD08Y3R4PgogICBgYGAKCiAg" + - "IFRoaXMgcmUtZmV0Y2hlcyBKV0tTIGZyb20gdGhlIGNvbXB1dGUgcGxhbmUncyBLOHMgQVBJIGFu" + - "ZCBQVVRzIGl0IHRvIElDTVMuIFRoZSBjbHVzdGVyIElEIHN0YXlzIHRoZSBzYW1lLgoKMy4gKipW" + - "ZXJpZnkuKiogYG52Y2YtY2xpIGNsdXN0ZXIgZ2V0IC0tY2x1c3Rlci1pZD08aWQ+YCDigJQgY29u" + - "ZmlybSBgdXBkYXRlZEF0YCBhZHZhbmNlZC4gVGhlbiBga3ViZWN0bCBsb2dzIC1uIG52Y2Etc3lz" + - "dGVtIC1sIGFwcC5rdWJlcm5ldGVzLmlvL25hbWU9bnZjYSAtLXRhaWw9MjBgIOKAlCByZWdpc3Rl" + - "ciBhdHRlbXB0cyBzaG91bGQgc3VjY2VlZCAoMjAwLCBub3QgNDAxKS4KCiMjIFdoYXQgbm90IHRv" + - "IGRvCgotICoqRG9uJ3QgYGNsdXN0ZXIgZGVsZXRlYC4qKiBSb3RhdGlvbiBwcmVzZXJ2ZXMgdGhl" + - "IGNsdXN0ZXIgSUQgKyBncm91cCBJRDsgZGVsZXRlIGNyZWF0ZXMgYSBuZXcgcm93IGFuZCB5b3Ug" + - "aGF2ZSB0byByZWRlcGxveSB0aGUgY29tcHV0ZSBwbGFuZSB3aXRoIG5ldyBJRHMuCi0gKipEb24n" + - "dCBtYW51YWxseSBlZGl0IGBvdXQvPGNsdXN0ZXI+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYC4qKiBS" + - "b3RhdGUgdXBkYXRlcyBJQ01TIG9ubHk7IHRoZSBoZWxtIHZhbHVlcyBmaWxlIGFscmVhZHkgaGFz" + - "IHRoZSByaWdodCBjbHVzdGVyIElELgoKIyMgSWYgcm90YXRpb24gZG9lc24ndCBmaXggaXQKClRo" + - "ZSBhdXRoIGZhaWx1cmUgbWF5IGJlIGF0IGEgZGlmZmVyZW50IGxheWVyIOKAlCBjaGVjazoKCi0g" + - "TkFUUyBhdXRoLWNhbGxvdXQgaGVhbHRoIChga3ViZWN0bCBsb2dzIC1uIG5hdHMtc3lzdGVtIC1s" + - "IGFwcD1uYXRzLWF1dGgtY2FsbG91dC1zZXJ2aWNlYCkKLSBDbHVzdGVyIHJvdyBleGlzdHMgaW4g" + - "YGNsdXN0ZXJfb2lkY19ieV9jbHVzdGVyX2lkYCBDYXNzYW5kcmEgdGFibGUKLSBgaGVsbS1yZXZh" + - "bC1zZXJ2aWNlYCBjb25maWdtYXAgaGFzIGBhdXRoei5vaWRjLmVuYWJsZWQ9dHJ1ZWAKClJvdXRl" + - "IHRvIFtkaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZF0oZGlhZ25vc2UtZmFpbGVkLWluc3RhbGwu" + - "bWQpIGZvciB0aG9zZSBjaGVja3MuClBLBwiq4Tq5yAcAAMgHAABQSwMEFAAIAAAAAAAhAAAAAAAA" + - "AAAAAAAAAC4ACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3RlYXJkb3duLm1k" + - "VVQFAAEAps4SIyBUZWFyIGRvd24gYSBzZWxmLWhvc3RlZCBOVkNGIGRlcGxveW1lbnQKCioqU0FG" + - "RVRZOioqIFRlYXJkb3duIGRlc3Ryb3lzIHBlcnNpc3RlbnQgc3RhdGUgKENhc3NhbmRyYSByb3dz" + - "LCBPcGVuQmFvIHNlYWwga2V5cywgcmVnaXN0ZXJlZCBjbHVzdGVycykuIEFsd2F5cyBjb25maXJt" + - "IHdpdGggdGhlIHVzZXIgYmVmb3JlIGFueSBzdGVwLgoKIyMgVEw7RFIg4oCUIGBkb3duYCBmb3Ig" + - "b25lLXNob3QsIGB1bmluc3RhbGxgIGZvciBwZXItcGxhbmUKClRoZSBDTEkgcHJvdmlkZXMgYSB0" + - "d28tdGllciB0ZWFyZG93biBzdXJmYWNlIHN5bW1ldHJpYyB3aXRoIHRoZSBpbnN0YWxsIHNpZGUg" + - "KFJFUS0yMiwgTSsxMSk6Cgp8IFRpZXIgfCBVcCBzaWRlIChleGlzdGluZykgfCBEb3duIHNpZGUg" + - "fAp8LS0tfC0tLXwtLS18CnwgUGVyLXBsYW5lIHByaW1pdGl2ZSAocmVuZGVycyBZQU1MOyBHaXRP" + - "cHMtZnJpZW5kbHkpIHwgYGluc3RhbGwgLS1jb250cm9sLXBsYW5lYCAvIGBpbnN0YWxsIC0tY29t" + - "cHV0ZS1wbGFuZWAgfCBgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZWAgLyBgdW5pbnN0YWxsIC0t" + - "Y29tcHV0ZS1wbGFuZWAgfAp8IE9yY2hlc3RyYXRvciAob25lLXNob3QsIG11bHRpLXBsYW5lICsg" + - "SUNNUykgfCBgdXAgLS1jbHVzdGVyLW5hbWU9WGAgfCBgZG93biAtLWNsdXN0ZXItbmFtZT1YYCAv" + - "IGBkb3duIC0tYWxsYCB8CgpVc2UgYGRvd25gIGZvciBub3JtYWwgdGVhcmRvd24uIFVzZSBgdW5p" + - "bnN0YWxsYCBmb3IgR2l0T3BzIChjb21taXQgWUFNTDsgQXJnby9GbHV4IGFwcGxpZXMpIG9yIHNj" + - "cmlwdGVkIHBpcGVsaW5lcy4gQWx3YXlzIHN0YXJ0IHdpdGggYSBkcnktcnVuLgoKIyMgRHJ5LXJ1" + - "biBzaGFwZXMKCnwgTW9kZSB8IExpdmVzIG9uIHwgSW52b2tlcyBoZWxtL2hlbG1maWxlPyB8IE91" + - "dHB1dCB8CnwtLS18LS0tfC0tLXwtLS18CnwgYC0tcGxhbi1vbmx5YCB8IGB1cGAgLyBgZG93bmAg" + - "KG9yY2hlc3RyYXRvcnMpIHwgKipOby4qKiBXYWxrcyByZXNvbHZlZCBzdGFjayBlbnRyeXBvaW50" + - "IGZpbGVzLCBlbWl0cyBwaGFzZSBwbGFuICsgRVRBcyArIGhlbG0gdW5pbnN0YWxsIGNvbW1hbmQg" + - "c3RyaW5ncy4gfCBFdmVudCBzdHJlYW0gfAp8IGAtLW5vLWFwcGx5YCB8IGBpbnN0YWxsYCAvIGB1" + - "bmluc3RhbGxgIChwcmltaXRpdmVzKSB8ICoqWWVzLioqIGBoZWxtZmlsZSB0ZW1wbGF0ZWAgZm9y" + - "IGluc3RhbGw7IGBoZWxtIGdldCBtYW5pZmVzdGAgZm9yIHVuaW5zdGFsbC4gfCBZQU1MIG9uIHN0" + - "ZG91dCB8CgpTbzoKCi0gYGRvd24gLS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9WGAg4oCUIHNo" + - "b3cgbWUgdGhlIG9yY2hlc3RyYXRvciBwaGFzZXMgd2l0aG91dCBpbnZva2luZyBhbnl0aGluZy4K" + - "LSBgdW5pbnN0YWxsIC0tbm8tYXBwbHkgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVhg" + - "IOKAlCBnaXZlIG1lIHRoZSBZQU1MIEknZCBga3ViZWN0bCBkZWxldGUgLWYgLWAuCgpgYGBzaAoj" + - "IFN0ZXAgMTogQUxXQVlTIHByZXZpZXcgZmlyc3QuCm52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24g" + - "LS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9bmNwLWxvY2FsIC0tanNvbiB8IGpxCgojIFN0ZXAg" + - "MjogUmVhbCBydW4uCm52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24gLS1jbHVzdGVyLW5hbWU9bmNw" + - "LWxvY2FsCmBgYAoKIyMgV2hlbiB0byB1c2Ugd2hpY2ggZm9ybQoKfCBVc2VyIGludGVudCB8IENv" + - "bW1hbmQgfAp8LS0tfC0tLXwKfCAiUmVtb3ZlIHRoaXMgb25lIEdQVSBjbHVzdGVyIiB8IGBudmNm" + - "LWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tY2x1c3Rlci1uYW1lPVhgIHwKfCAiVGVhciBkb3duIGV2" + - "ZXJ5dGhpbmciIHwgYG52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24gLS1hbGwgLS1jb25maXJtYCB8" + - "CnwgIlNob3cgbWUgdGhlIHN0ZXBzIHdpdGhvdXQgaW52b2tpbmcgYW55dGhpbmciIHwgYG52Y2Yt" + - "Y2xpIHNlbGYtaG9zdGVkIGRvd24gLS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9WGAgfAp8ICJH" + - "aXZlIG1lIFlBTUwgdG8gY29tbWl0ICsgQXJnbyBkZWxldGVzIGxhdGVyIiB8IGBudmNmLWNsaSBz" + - "ZWxmLWhvc3RlZCB1bmluc3RhbGwgLS1uby1hcHBseSAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVy" + - "LW5hbWU9WCA+IGRlbGV0ZS55YW1sYCB8CnwgIkp1c3QgcmVtb3ZlIHRoZSBoZWxtIHJlbGVhc2Vz" + - "IG9uIGEgY29tcHV0ZSBwbGFuZSAobm8gSUNNUyB1bnJlZ2lzdGVyLCBubyBkcmFpbikiIHwgYG52" + - "Y2YtY2xpIHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5h" + - "bWU9WGAgfAp8ICJKdXN0IHJlbW92ZSB0aGUgY29udHJvbC1wbGFuZSBoZWxtIHJlbGVhc2VzIiB8" + - "IGBudmNmLWNsaSBzZWxmLWhvc3RlZCB1bmluc3RhbGwgLS1jb250cm9sLXBsYW5lYCB8CgojIyBT" + - "dGVwcyBmb3IgYGRvd24gLS1jbHVzdGVyLW5hbWU9WGAgKHRoZSBzdGFuZGFyZCBwYXRoKQoKIyMj" + - "IDEuIENvbmZpcm0gc2NvcGUgd2l0aCB0aGUgdXNlcgoKQXNrOgoKLSAiVGVhcmluZyBkb3duIGV2" + - "ZXJ5dGhpbmcgKGNvbXB1dGUgcGxhbmVzICsgY29udHJvbCBwbGFuZSArIElDTVMgcm93cykgb3Ig" + - "anVzdCBvbmUgY29tcHV0ZSBwbGFuZT8iCi0gIkFyZSB0aGVyZSBBQ1RJVkUgZnVuY3Rpb24gZGVw" + - "bG95bWVudHMgb24gdGhpcyBjbHVzdGVyPyBgbnZjZi1jbGkgZnVuY3Rpb24gZGVwbG95IGxpc3Rg" + - "IHRvIGNoZWNrLiIgKEltcG9ydGFudCDigJQgYGRvd25gIHdpbGwgcmVmdXNlIHdpdGhvdXQgYC0t" + - "ZHJhaW4tYWN0aXZlPXRydWV8cHJvbXB0YCBpZiBhbnkgYXJlIEFDVElWRS4pCi0gIlNob3VsZCB3" + - "ZSB3aXBlIHBlcnNpc3RlbnQgc3RhdGUgKENhc3NhbmRyYSBkYXRhLCBPcGVuQmFvIHNlYWwga2V5" + - "cywgc3ItZGVmYXVsdCB1c2VyIGRhdGEpPyBEZWZhdWx0IGlzIHRvICoqcHJlc2VydmUqKiB0aGVt" + - "LiBgLS1yZW1vdmUtcGVyc2lzdGVudGAgb3B0cyBpbiB0byBkZWxldGlvbi4gKipMb3NzIGlzIHVu" + - "cmVjb3ZlcmFibGUuKioiCgojIyMgMi4gUnVuIHBsYW4tb25seSBmaXJzdAoKYGBgc2gKbnZjZi1j" + - "bGkgc2VsZi1ob3N0ZWQgZG93biAtLXBsYW4tb25seSAtLWNsdXN0ZXItbmFtZT0kTkFNRSAtLWpz" + - "b24gfCBqcQpgYGAKClRoaXMgZW1pdHMgYSBgcGxhbm5lZGAgZXZlbnQgbGlzdGluZyBlYWNoIHBo" + - "YXNlLCB0aGUgaGVsbSByZWxlYXNlcyB0aGF0IHdvdWxkIGJlIHVuaW5zdGFsbGVkLCB0aGUgSUNN" + - "UyByb3dzIHRoYXQgd291bGQgYmUgcmVtb3ZlZCwgYW5kIEVUQXMuIENvcHkgdGhlIGB3aWxsVW5p" + - "bnN0YWxsLmNvbW1hbmRzW11gIGFycmF5IHRvIHRoZSB1c2VyIOKAlCB0aG9zZSBhcmUgdGhlIGxp" + - "dGVyYWwgYGhlbG0gdW5pbnN0YWxsIOKApmAgaW52b2NhdGlvbnMgdGhlIG9yY2hlc3RyYXRvciB3" + - "aWxsIHJ1bi4KCiMjIyAzLiBFeGVjdXRlIHRoZSBkb3duCgpgYGBzaApudmNmLWNsaSBzZWxmLWhv" + - "c3RlZCBkb3duIC0tY2x1c3Rlci1uYW1lPSROQU1FIC0tanNvbgpgYGAKClBoYXNlcyAoMS03LCBt" + - "aXJyb3JzIMKnNi43LjEpOgoKMS4gUHJlZmxpZ2h0IOKAlCBrdWJlY3RsIGFjY2VzcyArIElDTVMg" + - "cmVhY2hhYmxlCjIuIFJlc29sdmUgc3RhY2sgYnVuZGxlCjMuIERyYWluIGFjdGl2ZSBkZXBsb3lt" + - "ZW50cyDigJQgcnVucyBgZnVuY3Rpb24gZGVwbG95IHJlbW92ZWAgZm9yIGVhY2ggQUNUSVZFIGRl" + - "cGxveW1lbnQsIHBvbGxzIHVudGlsIFNUT1BQRUQuIFN1YmplY3QgdG8gYC0tZHJhaW4tYWN0aXZl" + - "PXRydWV8ZmFsc2V8cHJvbXB0YCAoZGVmYXVsdCBpcyBgcHJvbXB0YCBpbiBUVFkpLgo0LiBVbmlu" + - "c3RhbGwgY29tcHV0ZSBwbGFuZSDigJQgZGVsZWdhdGVzIHRvIGB1bmluc3RhbGwgLS1jb21wdXRl" + - "LXBsYW5lYDsgYGhlbG0gdW5pbnN0YWxsIDxyZWxlYXNlPmAgcGVyIHJlbGVhc2UgaW4gcmV2ZXJz" + - "ZS1EQUcgb3JkZXIKNS4gUmVtb3ZlIHBlcnNpc3RlbnQgKHNraXBwZWQgdW5sZXNzIGAtLXJlbW92" + - "ZS1wZXJzaXN0ZW50YCkKNi4gVW5yZWdpc3RlciBjbHVzdGVyIGZyb20gSUNNUwo3LiBGaW5hbCB2" + - "ZXJpZnkKCiMjIyA0LiBUZWFyIGRvd24gdGhlIGNvbnRyb2wgcGxhbmUgKGlmIGFwcGxpY2FibGUp" + - "CgpgYGBzaApudmNmLWNsaSBzZWxmLWhvc3RlZCB1bmluc3RhbGwgLS1jb250cm9sLXBsYW5lCmBg" + - "YAoKT3IgdmlhIHRoZSBvcmNoZXN0cmF0b3IncyBgLS1hbGxgIG1vZGUgaWYgZXZlcnkgY29tcHV0" + - "ZSBwbGFuZSBpcyBhbHNvIGdvaW5nIGF3YXkgKHNlZSBzdGVwIDUpLgoKYHVuaW5zdGFsbCAtLWNv" + - "bnRyb2wtcGxhbmVgIHJlZnVzZXMgaWYgYW55IGNvbXB1dGUgcGxhbmUgaXMgc3RpbGwgcmVnaXN0" + - "ZXJlZCBpbiBJQ01TLiBVc2UgYC0tZm9yY2Utd2l0aC1yZWdpc3RlcmVkLWNsdXN0ZXJzYCB0byBv" + - "dmVycmlkZSAqKm9ubHkqKiBpZiB0aGUgdXNlciBleHBsaWNpdGx5IHdhbnRzIHRvIG9ycGhhbiBj" + - "b21wdXRlIHBsYW5lcyAoUFNBVCBhdXRoIGJyZWFrcyBmb3IgdGhvc2UgY2x1c3RlcnMg4oCUIHRo" + - "ZXkgd2lsbCBzdGFydCBmYWlsaW5nIGV2ZXJ5IGhlYWx0aCBjaGVjaykuIEFsd2F5cyBzdGF0ZSB0" + - "aGUgY29uc2VxdWVuY2UgYmVmb3JlIHBhc3NpbmcgdGhlIGZsYWcuCgojIyMgNS4gT3IsIG51a2Ug" + - "ZXZlcnl0aGluZwoKYGBgc2gKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93biAtLWFsbCAtLWNvbmZp" + - "cm0KYGBgCgpUaGlzIGl0ZXJhdGVzIGV2ZXJ5IHJlZ2lzdGVyZWQgY29tcHV0ZSBwbGFuZSBpbiBJ" + - "Q01TLCBydW5zIHRoZSBwZXItY2x1c3RlciBkb3duIGZvciBlYWNoIGluIHBhcmFsbGVsIChib3Vu" + - "ZGVkIGJ5IGAtLWFsbC1jb25jdXJyZW5jeWAsIGRlZmF1bHQgNCksIHRoZW4gcnVucyBgdW5pbnN0" + - "YWxsIC0tY29udHJvbC1wbGFuZWAuIEludGVyYWN0aXZlIG1vZGUgcHJvbXB0cyB0aGUgb3BlcmF0" + - "b3Igd2l0aCB0aGUgY2x1c3RlciBsaXN0IGJlZm9yZSBwcm9jZWVkaW5nOyBgLS1jb25maXJtYCBz" + - "a2lwcyB0aGUgcHJvbXB0IGZvciBub24taW50ZXJhY3RpdmUgdXNlLgoKIyMgR2l0T3BzIHBhdGgg" + - "KGlmIHVzZXIgaGFzIEFyZ28gLyBGbHV4KQoKYGBgc2gKIyBSZW5kZXIgZGVsZXRlIFlBTUwgZm9y" + - "IHRoZSBjb21wdXRlIHBsYW5lOgpudmNmLWNsaSBzZWxmLWhvc3RlZCB1bmluc3RhbGwgLS1uby1h" + - "cHBseSAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9JE5BTUUgPiBkZWxldGUueWFtbAoK" + - "IyBPcGVyYXRvciBjb21taXRzIGRlbGV0ZS55YW1sIHRvIHRoZWlyIEdpdE9wcyByZXBvLiBBcmdv" + - "L0ZsdXggYXBwbGllcyB0aGUgZGVsZXRpb24gb24gbmV4dCBzeW5jLgpnaXQgYWRkIGRlbGV0ZS55" + - "YW1sOyBnaXQgY29tbWl0IC1tICJyZW1vdmUgY29tcHV0ZSBwbGFuZSAkTkFNRSI7IGdpdCBwdXNo" + - "CgojIEFmdGVyIEFyZ28gc3luYyByZW1vdmVzIHRoZSBLOHMgcmVzb3VyY2VzLCBzZXBhcmF0ZWx5" + - "IHJlbW92ZSB0aGUgSUNNUyByb3c6Cm52Y2YtY2xpIGNsdXN0ZXIgZGVsZXRlIC0tY2x1c3Rlci1p" + - "ZD0kQ0xVU1RFUl9JRApgYGAKCk5vdGU6IGAtLW5vLWFwcGx5YCBkb2VzIE5PVCBpbmNsdWRlIHRo" + - "ZSBJQ01TIGBjbHVzdGVyIGRlbGV0ZWAgKGhlbG0gZG9lc24ndCBtYW5hZ2UgdGhhdCkuIE9wZXJh" + - "dG9ycyBmb2xsb3dpbmcgR2l0T3BzIG11c3QgcnVuIGBudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZWAg" + - "c2VwYXJhdGVseSwgb3IgdXNlIGBkb3duYCB0byBvcmNoZXN0cmF0ZSBib3RoLgoKIyMgRmFpbHVy" + - "ZSByZWNvdmVyeQoKSWYgYGRvd25gIHBhcnRpYWwtZmFpbHMgbWlkLXdheSwgKipyZS1ydW4gdGhl" + - "IHNhbWUgY29tbWFuZCoqLiBUaGUgb3JjaGVzdHJhdG9yIGlzIGlkZW1wb3RlbnQ6IGBoZWxtIHVu" + - "aW5zdGFsbGAgc2tpcHMgcmVsZWFzZXMgdGhhdCBhcmUgYWxyZWFkeSBnb25lLCBhbmQgYGNsdXN0" + - "ZXIgZGVsZXRlIC0taWdub3JlLW1pc3NpbmdgIHNraXBzIElDTVMgcm93cyB0aGF0IGFyZSBhbHJl" + - "YWR5IGdvbmUuIFBoYXNlIDQgKyA2IGVtaXQgYHBoYXNlOiBza2lwcGVkIChhbHJlYWR5IGNsZWFu" + - "KWAgb24gdGhlIHNlY29uZCBydW4uCgpJZiBhIGBwaGFzZV9mYWlsZWRgIGV2ZW50IHN1cmZhY2Vz" + - "OgoKLSBgZXJyQ2F0ZWdvcnk6ICJoZWxtX3BlbmRpbmdfdXBncmFkZSIsIHJldHJ5Q2xhc3M6ICJh" + - "ZnRlcl9yZW1lZGlhdGlvbiJgIOKGkiBydW4gYGhlbG0gcm9sbGJhY2sgPHJlbGVhc2U+IDAgLS1r" + - "dWJlLWNvbnRleHQ94oCmYCAodGhlIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4YWN0IHJlbGVhc2Ug" + - "bmFtZSkgdGhlbiByZS1ydW4gYGRvd25gLiBEbyBOT1QgYXV0by1yb2xsYmFjayB3aXRob3V0IHVz" + - "ZXIgY29uZmlybWF0aW9uLgotIGBlcnJDYXRlZ29yeTogImNvbXB1dGVfcGxhbmUiLCByZXRyeUNs" + - "YXNzOiAiYWZ0ZXJfcmVtZWRpYXRpb24iYCB3aXRoIG1lc3NhZ2UgYWJvdXQgQUNUSVZFIGRlcGxv" + - "eW1lbnRzIOKGkiB1c2VyIHBhc3NlZCBgLS1kcmFpbi1hY3RpdmU9ZmFsc2VgIGJ1dCBkZXBsb3lt" + - "ZW50cyBleGlzdC4gUmUtcnVuIHdpdGggYC0tZHJhaW4tYWN0aXZlPXRydWVgIG9yIGAtLWRyYWlu" + - "LWFjdGl2ZT1wcm9tcHRgIGFuZCBjb25maXJtIHdpdGggdGhlIHVzZXIuCi0gT3RoZXIgY2F0ZWdv" + - "cmllcyDihpIgc3VyZmFjZSBgZXJyTWVzc2FnZWAgKyBlYWNoIGByZW1lZGlhdGlvbmAgc3RyaW5n" + - "IHZlcmJhdGltLiBTVE9QLiBEbyBub3QgcHJvcG9zZSByZXRyeSB3aXRob3V0IHVzZXIgaW5wdXQu" + - "CgojIyBBbHdheXMgY29uZmlybQoKRm9yIGV2ZXJ5IGBudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3du" + - "YCBvciBgdW5pbnN0YWxsYCBpbnZvY2F0aW9uLCBlc3BlY2lhbGx5IHdpdGggZGVzdHJ1Y3RpdmUg" + - "ZmxhZ3M6CgotIFN0YXRlIHRoZSBleGFjdCBgLS1jbHVzdGVyLW5hbWVgIChvciBgLS1hbGxgKS4K" + - "LSBTdGF0ZSB3aGF0J3MgbG9zdCAoZS5nLiAiYWxsIGZ1bmN0aW9uIGRlcGxveW1lbnRzIHNjaGVk" + - "dWxlZCBvbiBgbmNwLWxvY2FsYCB3aWxsIHN0b3A7IGNvbXB1dGUgcGxhbmUgd2lsbCBkZXJlZ2lz" + - "dGVyIGZyb20gSUNNUyIpLgotIElmIGAtLXJlbW92ZS1wZXJzaXN0ZW50YCBpcyBiZWluZyBjb25z" + - "aWRlcmVkLCBzdGF0ZSB0aGF0IENhc3NhbmRyYSByb3dzICsgT3BlbkJhbyBzZWFsIGtleXMgd2ls" + - "bCBiZSBkZWxldGVkIGFuZCB0aGF0IHRoaXMgaXMgdW5yZWNvdmVyYWJsZS4KLSBXYWl0IGZvciBl" + - "eHBsaWNpdCB1c2VyIGNvbmZpcm1hdGlvbi4KLSBOZXZlciBwcm9wb3NlIGAtLWZvcmNlLXdpdGgt" + - "cmVnaXN0ZXJlZC1jbHVzdGVyc2Agd2l0aG91dCBleHBsYWluaW5nIHRoYXQgY29tcHV0ZSBwbGFu" + - "ZXMgd2lsbCBiZSBvcnBoYW5lZC4KLSBOZXZlciBwcm9wb3NlIGAtLXJlbW92ZS1wZXJzaXN0ZW50" + - "YCB3aXRob3V0IGV4cGxhaW5pbmcgdGhlIGxvc3MuCgojIyBNYW51YWwgZmFsbGJhY2sgKGlmIGBu" + - "dmNmLWNsaSBzZWxmLWhvc3RlZCB7dW5pbnN0YWxsLGRvd259YCBpcyB1bmF2YWlsYWJsZSkKCklm" + - "IHRoZSB1c2VyIGlzIG9uIGEgQ0xJIHZlcnNpb24gb2xkZXIgdGhhbiBNKzExLCBmYWxsIGJhY2sg" + - "dG86CgpgYGBzaAojIFBlciBjb21wdXRlIHBsYW5lIChvbiBpdHMga3ViZWN0bCBjb250ZXh0KToK" + - "aGVsbSB1bmluc3RhbGwgbnZjYS1hZ2VudCAtbiBudmNhLXN5c3RlbQpoZWxtIHVuaW5zdGFsbCBu" + - "dmNhLW9wZXJhdG9yIC1uIG52Y2Etb3BlcmF0b3IKaGVsbSB1bmluc3RhbGwgaW1hZ2UtY3JlZGVu" + - "dGlhbC1oZWxwZXIgLW4gbnZjYS1zeXN0ZW0KaGVsbSB1bmluc3RhbGwgc2hhcmVkc3RvcmFnZSAt" + - "biBudmNhLXN5c3RlbQoKIyBEcmFpbiB0aGUgSUNNUyByb3c6Cm52Y2YtY2xpIGNsdXN0ZXIgZGVs" + - "ZXRlIC0tY2x1c3Rlci1pZD08aWQ+CgojIENvbnRyb2wgcGxhbmUgdGVhcmRvd24gKG9uIGl0cyBr" + - "dWJlY3RsIGNvbnRleHQpOgpjZCBudmNmLXNlbGYtbWFuYWdlZC1zdGFjawptYWtlIGRlc3Ryb3kg" + - "ICAjIGludm9rZXMgaGVsbWZpbGUgZGVzdHJveSBhY3Jvc3MgYWxsIHJlbGVhc2VzCgojIElmIHVz" + - "aW5nIHNwbGl0IHN0YWNrIGJ1bmRsZXMsIHRlYXJkb3duIGNvbXB1dGUgcGxhbmUgcmVsZWFzZXMg" + - "dG9vOgpjZCAuLi9udmNmLWNvbXB1dGUtcGxhbmUtc3RhY2sKbWFrZSBkZXN0cm95CmBgYAoKVGhp" + - "cyBpcyB0aGUgbWFudWFsIHBhdGg7IHByZWZlciB0aGUgbmV3IHN1YmNvbW1hbmRzIHdoZW5ldmVy" + - "IHRoZXkncmUgaW5zdGFsbGVkLgoKIyMgV2hhdCBga3ViZWN0bCBkZWxldGUgcHZjYCBkb2VzCgpJ" + - "ZiB0aGUgdXNlciBhc2tzICJ3aHkgaXMgbXkgbmV3IGluc3RhbGwgc2VlaW5nIHRoZSBvbGQgZGF0" + - "YT8iIOKAlCB0aGUgU3RhdGVmdWxTZXQgUFZDcyAoQ2Fzc2FuZHJhLCBPcGVuQmFvKSBhcmUgTk9U" + - "IGRlbGV0ZWQgYnkgYGhlbG0gdW5pbnN0YWxsYCAoYW5kIHNvIGFyZSBOT1QgZGVsZXRlZCBieSBg" + - "bnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93bmAgZWl0aGVyLCBieSBkZWZhdWx0KS4gVGhleSBwZXJz" + - "aXN0IGludGVudGlvbmFsbHkgc28gYSByZS1gdXBgIGNhbiByZXN1bWUgYWdhaW5zdCBleGlzdGlu" + - "ZyBkYXRhLiBUbyB3aXBlIGNvbXBsZXRlbHkgb24gdGhlIG5leHQgYGRvd25gOgoKYGBgc2gKbnZj" + - "Zi1jbGkgc2VsZi1ob3N0ZWQgZG93biAtLWNsdXN0ZXItbmFtZT1uY3AtbG9jYWwgLS1yZW1vdmUt" + - "cGVyc2lzdGVudApgYGAKCk9yLCBwb3N0LWRvd24sIG1hbnVhbGx5OgoKYGBgc2gKa3ViZWN0bCBk" + - "ZWxldGUgcHZjIC1uIGNhc3NhbmRyYS1zeXN0ZW0gLS1hbGwKa3ViZWN0bCBkZWxldGUgcHZjIC1u" + - "IHZhdWx0LXN5c3RlbSAtLWFsbApgYGAKCioqQ29uZmlybSB3aXRoIHVzZXIuKiogVGhpcyBpcyB0" + - "aGUgZGVzdHJ1Y3RpdmUgc3RlcC4KUEsHCNqHY1bkIQAA5CEAAFBLAwQUAAgAAAAAACEAAAAAAAAA" + - "AAAAAAAAMAAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9jb21tYW5kcy5t" + - "ZFVUBQABAKbOEiMgYG52Y2YtY2xpYCBjb21tYW5kIHJlZmVyZW5jZQoKRnVsbCBzdWJjb21tYW5k" + - "IGxpc3QuIEFsd2F5cyBwYWlyIHdpdGggW2ZsYWdzLm1kXShmbGFncy5tZCkgZm9yIGdsb2JhbCBm" + - "bGFncyBhbmQgW2V4aXQtY29kZXMubWRdKGV4aXQtY29kZXMubWQpIGZvciByZXR1cm4gY29kZXMu" + - "CgojIyBTZWxmLWhvc3RlZCBsaWZlY3ljbGUKCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBPdXRwdXQg" + - "fCBOb3RlcyB8CnwtLS18LS0tfC0tLXwtLS18CnwgYHNlbGYtaG9zdGVkIGNoZWNrIC0tcHJlIFtm" + - "bGFnc11gIHwgUHJlLWZsaWdodCB2YWxpZGF0aW9uIChubyBhZG1pbiBjcmVkcykgfCBzdHJlYW1p" + - "bmcgZXZlbnRzIHwgUGVyLXJvbGUgd2l0aCBgLS1jb250cm9sLXBsYW5lLWNvbnRleHRgIC8gYC0t" + - "Y29tcHV0ZS1wbGFuZS1jb250ZXh0YDsgYC0tbG9jYWwtb25seWAgc2tpcHMga3ViZWN0bCB8Cnwg" + - "YHNlbGYtaG9zdGVkIGNoZWNrIC0tY29udHJvbC1wbGFuZSBbLS13YWl0IERVUl1gIHwgRXZlcnkg" + - "Q1AgcmVsZWFzZSBoZWFsdGh5IHwgc3RyZWFtaW5nIGV2ZW50cyB8IFBvbGxzIHVudGlsIHBhc3Mg" + - "b3IgYC0td2FpdGAgZWxhcHNlcyB8CnwgYHNlbGYtaG9zdGVkIGNoZWNrIC0tY29tcHV0ZS1wbGFu" + - "ZSAtLWNsdXN0ZXItbmFtZT1YIFstLXdhaXQgRFVSXWAgfCBQZXItY2x1c3RlciB3b3JrZXIgc3Rh" + - "dGUgfCBzdHJlYW1pbmcgZXZlbnRzIHwgTlZDQSArIG9wZXJhdG9yICsgSldLUy1maW5nZXJwcmlu" + - "dCBtYXRjaCB8CnwgYHNlbGYtaG9zdGVkIGNoZWNrIC0tYWxsIFstLXdhaXQgRFVSXWAgfCBGYW4t" + - "b3V0IG92ZXIgYWxsIG9mIHRoZSBhYm92ZSB8IHN0cmVhbWluZyBldmVudHMgfCB8CnwgYHNlbGYt" + - "aG9zdGVkIGluc3RhbGwgLS1jb250cm9sLXBsYW5lYCB8IFJlbmRlciBjb250cm9sLXBsYW5lIG1h" + - "bmlmZXN0cyB8IFlBTUwgb24gc3Rkb3V0IHwgUGlwZSB0byBga3ViZWN0bCBhcHBseSAtZiAtYCB8" + - "CnwgYHNlbGYtaG9zdGVkIGluc3RhbGwgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVhg" + - "IHwgUmVnaXN0ZXIgY2x1c3RlciArIHJlbmRlciBjb21wdXRlIG1hbmlmZXN0cyB8IFlBTUwgb24g" + - "c3Rkb3V0IHwgT25lIGludm9jYXRpb24gcGVyIEdQVSBjbHVzdGVyIHwKfCBgc2VsZi1ob3N0ZWQg" + - "dXAgLS1jbHVzdGVyLW5hbWU9WGAgfCBPbmUtc2hvdCBmaXJzdCBpbnN0YWxsIChib3RoIHBsYW5l" + - "cykgfCAoZW1wdHkpIHN0ZG91dCwgcHJvZ3Jlc3Mgb24gc3RkZXJyIHwgQWx3YXlzIGluc3RhbGxz" + - "IGJvdGggcGxhbmVzOyBmb3IgY29tcHV0ZS1vbmx5IHVzZSBgYWRkLWNvbXB1dGUtcGxhbmVgIHwK" + - "fCBgc2VsZi1ob3N0ZWQgdXAgLS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9WGAgfCBEcnktcnVu" + - "IHByZXZpZXcgfCBKU09OTCBvbiBzdGRlcnIgfCBBZ2VudC1mcmllbmRseSwgbm8gY2x1c3RlciBj" + - "aGFuZ2VzIHwKfCBgc2VsZi1ob3N0ZWQgYWRkLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9" + - "WCAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1ZIC0taWNtcy11cmw9VVJMIC0tdG9rZW49JEpXVGAg" + - "fCBBZGQgYSBjb21wdXRlIHBsYW5lIHRvIGFuIGV4aXN0aW5nIGNvbnRyb2wgcGxhbmUgfCBwcm9n" + - "cmVzcyBvbiBzdGRlcnIgfCBGb3IgMm5kLCAzcmQsIOKApiBHUFUgY2x1c3RlciBhZnRlciB0aGUg" + - "Zmlyc3QgaW5zdGFsbC4gQ1Agbm90IHRvdWNoZWQuIHwKfCBgc2VsZi1ob3N0ZWQgc3RhdHVzIFst" + - "LWNsdXN0ZXItbmFtZT1YXSBbLS13YXRjaF1gIHwgU25hcHNob3QgY2x1c3RlciBoZWFsdGggfCBU" + - "VFkvcGxhaW4vSlNPTkwgfCBgLS13YXRjaGAgZm9yIGxpdmUgcmUtcmVuZGVyIHwKfCBgc2VsZi1o" + - "b3N0ZWQgdW5pbnN0YWxsIC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YYCB8IFBlci1w" + - "bGFuZSBwcmltaXRpdmU6IGBoZWxtZmlsZSBkZXN0cm95YCBvbiBvbmUgY29tcHV0ZSBwbGFuZSAo" + - "bm8gSUNNUyB1bnJlZ2lzdGVyLCBubyBkcmFpbikgfCBwcm9ncmVzcyB8IEp1c3QgdGhlIGhlbG0g" + - "cmVsZWFzZXMgb24gdGhhdCBjb21wdXRlIHBsYW5lIHwKfCBgc2VsZi1ob3N0ZWQgdW5pbnN0YWxs" + - "IC0tY29udHJvbC1wbGFuZSBbLS1mb3JjZS13aXRoLXJlZ2lzdGVyZWQtY2x1c3RlcnNdYCB8IFBl" + - "ci1wbGFuZSBwcmltaXRpdmU6IGBoZWxtZmlsZSBkZXN0cm95YCBvbiB0aGUgY29udHJvbCBwbGFu" + - "ZSB8IHByb2dyZXNzIHwgUmVmdXNlcyBpZiBjb21wdXRlIHBsYW5lcyBzdGlsbCByZWdpc3RlcmVk" + - "IHVubGVzcyBgLS1mb3JjZS13aXRoLXJlZ2lzdGVyZWQtY2x1c3RlcnNgIHwKfCBgc2VsZi1ob3N0" + - "ZWQgdW5pbnN0YWxsIC0tbm8tYXBwbHkgPHBsYW5lPmAgfCBSZW5kZXIgZGVsZXRlIFlBTUwgdmlh" + - "IGBoZWxtIGdldCBtYW5pZmVzdGAgcGVyIHJlbGVhc2UgfCBZQU1MIG9uIHN0ZG91dCB8IEdpdE9w" + - "czsgcGlwZSB0byBga3ViZWN0bCBkZWxldGUgLWYgLWAgb3IgY29tbWl0ICsgQXJnbyBhcHBsaWVz" + - "LiBNaXJyb3JzIGBpbnN0YWxsIC0tbm8tYXBwbHlgIHwKfCBgc2VsZi1ob3N0ZWQgZG93biAtLWNs" + - "dXN0ZXItbmFtZT1YIFstLWRyYWluLWFjdGl2ZV0gWy0tcmVtb3ZlLXBlcnNpc3RlbnRdYCB8IE9y" + - "Y2hlc3RyYXRvcjogZHJhaW4g4oaSIHVuaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmUg4oaSIGNsdXN0" + - "ZXIgZGVsZXRlIGluIElDTVMgfCBwcm9ncmVzcyB8IFN5bW1ldHJpYyBjb21wYW5pb24gdG8gYHVw" + - "IC0tY2x1c3Rlci1uYW1lPVhgIHwKfCBgc2VsZi1ob3N0ZWQgZG93biAtLWFsbCBbLS1jb25maXJt" + - "XWAgfCBPcmNoZXN0cmF0b3I6IHRlYXIgZG93biBldmVyeSByZWdpc3RlcmVkIGNvbXB1dGUgcGxh" + - "bmUgKyBjb250cm9sIHBsYW5lIHwgcHJvZ3Jlc3MgfCBCb3VuZGVkIHBhcmFsbGVsaXNtIHZpYSBg" + - "LS1hbGwtY29uY3VycmVuY3lgIChkZWZhdWx0IDQpOyBgLS1jb25maXJtYCByZXF1aXJlZCBpbiBu" + - "b24taW50ZXJhY3RpdmUgfAp8IGBzZWxmLWhvc3RlZCBkb3duIC0tcGxhbi1vbmx5IC4uLmAgfCBP" + - "cmNoZXN0cmF0b3IgZHJ5LXJ1bjogcGhhc2VzICsgaGVsbSByZWxlYXNlcyArIElDTVMgcm93cyAr" + - "IEVUQXMgKG5vIGhlbG0vaGVsbWZpbGUgY29udGFjdCkgfCBKU09OTCB8ICoqQWx3YXlzIHJ1biBi" + - "ZWZvcmUgYW55IGFjdHVhbCBgZG93bmAqKiB8CgojIyBDbHVzdGVyIG1hbmFnZW1lbnQKCnwgQ29t" + - "bWFuZCB8IFB1cnBvc2UgfCBOb3RlcyB8CnwtLS18LS0tfC0tLXwKfCBgY2x1c3RlciByZWdpc3Rl" + - "ciAtLW5hbWU9WCAtLW5jYS1pZD1ZIFstLXJlZ2lvbj1aXSBbLS1pZ25vcmUtZXhpc3RpbmddYCB8" + - "IFJlZ2lzdGVyIGEgSldLUytPSURDIHdpdGggSUNNUyB8IFVzZWQgYnkgYHVwYCBQaGFzZSA1IGlu" + - "dGVybmFsbHk7IHN0YW5kYWxvbmUgZm9yIG1hbnVhbCByZWdpc3RyYXRpb24gfAp8IGBjbHVzdGVy" + - "IGxpc3QtcmVnaXN0ZXJlZCAtLW5jYS1pZD1ZIFstLWljbXMtdXJsPVVSTF1gIHwgTGlzdCBzZWxm" + - "LWhvc3RlZCBjbHVzdGVyIHJlZ2lzdHJhdGlvbnMgZnJvbSBJQ01TIHwgVXNlcyB0aGUgYWRtaW4g" + - "dG9rZW47IGAtLWpzb25gIGZvciBtYWNoaW5lLXJlYWRhYmxlIG91dHB1dCB8CnwgYGNsdXN0ZXIg" + - "cm90YXRlIC0tY2x1c3Rlci1pZD1JRGAgfCBSZS1mZXRjaCBKV0tTIGZyb20gSzhzIGFuZCBQVVQg" + - "dG8gSUNNUyB8IEFmdGVyIEs4cyBBUEkgc2VydmVyIHNpZ25pbmcga2V5IHJvdGF0aW9uIHwKfCBg" + - "Y2x1c3RlciBkZWxldGUgLS1jbHVzdGVyLWlkPUlEYCB8IFJlbW92ZSBJQ01TIHJvdyB8ICoqREVT" + - "VFJVQ1RJVkU6IGNvbmZpcm0gd2l0aCB1c2VyKiogfAoKIyMgRnVuY3Rpb25zCgp8IENvbW1hbmQg" + - "fCBQdXJwb3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYGZ1bmN0aW9uIGNyZWF0ZSAtLWlu" + - "cHV0LWZpbGU9RklMRWAgfCBDcmVhdGUgZnVuY3Rpb24gbWV0YWRhdGEgfCBSZXR1cm5zIEZ1bmN0" + - "aW9uIElEICsgVmVyc2lvbiBJRDsgTExNIGZ1bmN0aW9ucyB1c2UgYGZ1bmN0aW9uVHlwZTogIkxM" + - "TSJgIGFuZCBgbW9kZWxzW10ubGxtQ29uZmlnLnVyaXNgIGZvciBgL3YxL2NoYXQvY29tcGxldGlv" + - "bnNgLCBgL3YxL3Jlc3BvbnNlc2AsIGFuZCBgL3YxL2VtYmVkZGluZ3NgIHwKfCBgZnVuY3Rpb24g" + - "bGlzdGAgLyBgZnVuY3Rpb24gbGlzdC1pZHNgIHwgTGlzdCBmdW5jdGlvbnMgLyBJRHMgb25seSB8" + - "IHwKfCBgZnVuY3Rpb24gZ2V0IC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRGAgfCBG" + - "dW5jdGlvbiBtZXRhZGF0YSB8IHwKfCBgZnVuY3Rpb24gdXBkYXRlIC0tZnVuY3Rpb24taWQ9SUQg" + - "LS12ZXJzaW9uLWlkPVZJRCAtLXRhZ3M9VEFHWyxUQUddYCB8IFVwZGF0ZSBmdW5jdGlvbiB0YWdz" + - "IHwgfAp8IGBmdW5jdGlvbiB1cGRhdGUgLS1mdW5jdGlvbi1pZD1JRCAtLXZlcnNpb24taWQ9VklE" + - "IC0tbGxtLW1vZGVsLXVwZGF0ZT1TUEVDYCB8IFVwZGF0ZSBMTE0gbW9kZWwgcm91dGluZyBjb25m" + - "aWcgfCBgU1BFQ2AgdXNlcyBgbmFtZT08bW9kZWw+LHJvdXRpbmdNZXRob2Q9PG1ldGhvZD4sdG9r" + - "ZW5SYXRlTGltaXQ9PGxpbWl0PmA7IGFjY2VwdGVkIG1ldGhvZHMgYXJlIGxpc3RlZCBpbiBbZmxh" + - "Z3MubWRdKGZsYWdzLm1kKSB8CnwgYGZ1bmN0aW9uIGRlcGxveSBjcmVhdGUgLS1pbnB1dC1maWxl" + - "PUZJTEVgIHwgU2NoZWR1bGUgYSBkZXBsb3ltZW50IHwgQmxvY2tzIHVudGlsIEFDVElWRSAoZGVm" + - "YXVsdCA5MDBzKSB8CnwgYGZ1bmN0aW9uIGRlcGxveSBnZXQgLS1mdW5jdGlvbi1pZD1JRCAtLXZl" + - "cnNpb24taWQ9VklEIFstLWpzb25dYCB8IERlcGxveW1lbnQgc3RhdHVzIHwgYGZ1bmN0aW9uU3Rh" + - "dHVzOiBBQ1RJVkVcfERFUExPWUlOR1x8RVJST1JcfEZBSUxFRGAgfAp8IGBmdW5jdGlvbiBkZXBs" + - "b3kgdXBkYXRlIC0taW5wdXQtZmlsZT1GSUxFYCB8IE1vZGlmeSBhIGRlcGxveW1lbnQgaW4gcGxh" + - "Y2UgfCB8CnwgYGZ1bmN0aW9uIGRlcGxveSByZW1vdmUgLS1mdW5jdGlvbi1pZD1JRCAtLXZlcnNp" + - "b24taWQ9VklEYCB8IFN0b3AgYSBkZXBsb3ltZW50LCBrZWVwIGZ1bmN0aW9uIHJlY29yZCB8IHwK" + - "fCBgZnVuY3Rpb24gaW52b2tlIC0taW5wdXQtZmlsZT1GSUxFYCB8IENhbGwgYSByZWd1bGFyIGZ1" + - "bmN0aW9uIHwgUmVxdWlyZXMgQVBJIGtleSAobm90IGFkbWluIHRva2VuKTsgTExNIGZ1bmN0aW9u" + - "cyBhcmUgaW52b2tlZCB0aHJvdWdoIGBsbG0uaW52b2NhdGlvbi48ZG9tYWluPmAgd2l0aCBgbW9k" + - "ZWw6ICI8ZnVuY3Rpb24taWQ+Lzxtb2RlbC1uYW1lPiJgIHwKfCBgZnVuY3Rpb24gZGVsZXRlIC0t" + - "ZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRGAgfCBSZW1vdmUgZnVuY3Rpb24gKyBkZXBs" + - "b3ltZW50IHwgKipERVNUUlVDVElWRTogY29uZmlybSB3aXRoIHVzZXIqKiB8CgojIyBUYXNrcwoK" + - "VGFzayBjb21tYW5kcyByZXF1aXJlIGBOVkNGX0FQSV9LRVlgIHNldCB0byBhIHRhc2stc2NvcGVk" + - "IGtleSBhbmQgYE5WQ0ZfQkFTRV9OVkNUX1VSTGAgc2V0IHRvIHRoZSBOVkNUIGdhdGV3YXkgZW5k" + - "cG9pbnQuIEluIGEgZnJlc2ggc2Vzc2lvbiwgcmVhZCBgbnZjdEFwaUtleWAgZnJvbSBgfi8ubnZj" + - "Zi1jbGkuc3RhdGVgIGFuZCBpbmplY3QgaXQgYXMgYE5WQ0ZfQVBJX0tFWWAgd2l0aG91dCBsb2dn" + - "aW5nIHRoZSB2YWx1ZTsgY2hlY2sgYG52Y3RBcGlLZXlFeHBpcmF0aW9uYCBmaXJzdCBhbmQgcmVn" + - "ZW5lcmF0ZSB3aXRoIGBhcGkta2V5IGdlbmVyYXRlIC0tZm9yIHRhc2sgLS12YWxpZGF0ZWAgaWYg" + - "ZXhwaXJlZC4gUnVuIGBhcGkta2V5IGdlbmVyYXRlIC0tZm9yIHRhc2tgIGFmdGVyIGBpbml0YCB0" + - "byBtaW50IGEgbmV3IGtleS4KCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBOb3RlcyB8CnwtLS18LS0t" + - "fC0tLXwKfCBgdGFzayBjcmVhdGUgLS1uYW1lPVggLS1ncHU9R1BVIC0taW5zdGFuY2UtdHlwZT1U" + - "WVBFIC0taW1hZ2U9SU1HYCB8IFN1Ym1pdCBhIGNvbnRhaW5lciB0YXNrIHwgU2F2ZXMgdGFzayBJ" + - "RCB0byBDTEkgc3RhdGU7IHVzZSBgLS1pbnB1dC1maWxlYCBmb3IgcmVwZWF0YWJsZSBjb25maWdz" + - "IHwKfCBgdGFzayBjcmVhdGUgLS1uYW1lPVggLS1ncHU9R1BVIC0taW5zdGFuY2UtdHlwZT1UWVBF" + - "IC0taGVsbS1jaGFydD1DSEFSVGAgfCBTdWJtaXQgYSBIZWxtIHRhc2sgfCBgLS1oZWxtLWNoYXJ0" + - "YCByZXBsYWNlcyBgLS1pbWFnZWAgfAp8IGB0YXNrIGNyZWF0ZSAtLWlucHV0LWZpbGU9RklMRWAg" + - "fCBTdWJtaXQgYSB0YXNrIGZyb20gYSBKU09OIGNvbmZpZyBmaWxlIHwgUmVjb21tZW5kZWQgZm9y" + - "IHJlcGVhdGFibGUgY29uZmlndXJhdGlvbnMgfAp8IGB0YXNrIGxpc3QgWy0tc3RhdHVzPVNUQVRV" + - "U10gWy0tbGltaXQ9Tl1gIHwgTGlzdCB0YXNrcywgb3B0aW9uYWxseSBmaWx0ZXJlZCBieSBzdGF0" + - "dXMgfCBTdGF0dXNlczogYFFVRVVFRGAsIGBMQVVOQ0hFRGAsIGBSVU5OSU5HYCwgYENPTVBMRVRF" + - "RGAsIGBFUlJPUkVEYCwgYENBTkNFTEVEYCwgYEVYQ0VFREVEX01BWF9SVU5USU1FX0RVUkFUSU9O" + - "YCwgYEVYQ0VFREVEX01BWF9RVUVVRURfRFVSQVRJT05gIHwKfCBgdGFzayBnZXQgW3Rhc2tJZF1g" + - "IHwgR2V0IHRhc2sgZGV0YWlscyB8IFVzZXMgc2F2ZWQgdGFzayBJRCBmcm9tIHN0YXRlIGlmIG9t" + - "aXR0ZWQgfAp8IGB0YXNrIGV2ZW50cyBbdGFza0lkXSBbLS1saW1pdD1OXWAgfCBMaXN0IGxpZmVj" + - "eWNsZSBldmVudHMgZm9yIGEgdGFzayB8IHwKfCBgdGFzayByZXN1bHRzIFt0YXNrSWRdYCB8IExp" + - "c3QgcmVzdWx0IGFydGlmYWN0cyBmb3IgYSBjb21wbGV0ZWQgdGFzayB8IFJldHVybnMgZW1wdHkg" + - "bGlzdCB3aGVuIGByZXN1bHRIYW5kbGluZ1N0cmF0ZWd5YCBpcyBgTk9ORWA7IHJlc3VsdCB1cGxv" + - "YWQgbm90IHlldCBzdXBwb3J0ZWQgfAp8IGB0YXNrIGNhbmNlbCBbdGFza0lkXWAgfCBDYW5jZWwg" + - "YSBydW5uaW5nIHRhc2sgfCBOby1vcCBpZiBhbHJlYWR5IGluIHRlcm1pbmFsIHN0YXRlIHwKfCBg" + - "dGFzayBkZWxldGUgW3Rhc2tJZF1gIHwgRGVsZXRlIGEgdGFzayByZWNvcmQgfCAqKlN0b3AsIHN0" + - "YXRlIHRhc2sgSUQgKyBjdXJyZW50IHN0YXR1cywgYW5kIHdhaXQgZm9yIGEgc3Vic2VxdWVudCB1" + - "c2VyIHJlcGx5IGV4cGxpY2l0bHkgY29uZmlybWluZyBkZWxldGlvbiBvZiB0aGF0IHNwZWNpZmlj" + - "IHRhc2suIERvIG5vdCB0cmVhdCB0aGUgb3JpZ2luYWwgZGVsZXRlIHJlcXVlc3QgYXMgY29uZmly" + - "bWF0aW9uLioqIHwKfCBgdGFzayB1cGRhdGUtc2VjcmV0cyBbdGFza0lkXSAtLXNlY3JldHMgTkFN" + - "RT12YWx1ZWAgfCBVcGRhdGUgc2VjcmV0cyBvbiBhIHRhc2s7IHN1cHBsaWVkIHNlY3JldHMgYXJl" + - "IGFkZGVkIG9yIHVwZGF0ZWQgYnkgbmFtZSwgZXhpc3Rpbmcgc2VjcmV0cyBub3QgaW4gdGhlIHJl" + - "cXVlc3QgYXJlIHByZXNlcnZlZCB8IFZhbHVlcyBhcmUgZW5jcnlwdGVkIGF0IHJlc3QgfAp8IGB0" + - "YXNrIGJ1bGsgLS10YXNrLWlkcz1JRDFbLElEMizigKZdYCB8IEZldGNoIGRldGFpbHMgZm9yIG11" + - "bHRpcGxlIHRhc2tzIGluIG9uZSByZXF1ZXN0IHwgfAoKIyMgQXV0aAoKfCBDb21tYW5kIHwgUHVy" + - "cG9zZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGBpbml0YCB8IE1pbnQgYWRtaW4gdG9rZW4g" + - "ZnJvbSBBUEkgS2V5cyB2aWEgcHVibGljIGFwaSBnYXRld2F5IHwgSWRlbXBvdGVudDsgd3JpdGVz" + - "IGB+Ly5udmNmLWNsaS5zdGF0ZWA7IGNsZWFycyBzYXZlZCBmdW5jdGlvbiBzdGF0ZSBhbmQgYWxs" + - "IEFQSSBrZXlzIChmdW5jdGlvbiBhbmQgdGFzaykgfAp8IGBzdGF0dXNgIHwgU2hvdyBDTEkgc3Rh" + - "dGUgKHRva2VuLCBsYXN0IGVuZHBvaW50cywgZnVuY3Rpb24gY29udGV4dCkgfCBEaXN0aW5jdCBm" + - "cm9tIGBzZWxmLWhvc3RlZCBzdGF0dXNgIHwKfCBgYXBpLWtleSBnZW5lcmF0ZSBbLS1mb3IgZnVu" + - "Y3Rpb25cfHRhc2tdIFstLWRlc2NyaXB0aW9uPeKApl0gWy0tZXhwaXJlcy1pbj3igKZdYCB8IE1p" + - "bnQgQVBJIGtleXMgfCBEZWZhdWx0IChubyBgLS1mb3JgKTogZ2VuZXJhdGVzIGJvdGggYSBmdW5j" + - "dGlvbiBrZXkgYW5kIGEgdGFzayBrZXk7IGAtLWZvciBmdW5jdGlvbmAgb3IgYC0tZm9yIHRhc2tg" + - "IGdlbmVyYXRlcyBvbmUgb25seTsgYC0tc2NvcGVzYCByZXF1aXJlcyBgLS1mb3JgIHwKfCBgYXBp" + - "LWtleSBnZW5lcmF0ZSAtLXZhbGlkYXRlYCB8IE1pbnQgYW5kIGltbWVkaWF0ZWx5IHZhbGlkYXRl" + - "IGVhY2ggZ2VuZXJhdGVkIGtleSB8IFZhbGlkYXRlcyBlYWNoIGtleSBhZ2FpbnN0IGl0cyBjb3Jy" + - "ZWN0IGF1ZGllbmNlIChOVkNGIGZvciBmdW5jdGlvbiBrZXlzLCBOVkNUIGZvciB0YXNrIGtleXMp" + - "IHwKfCBgYXBpLWtleSBsaXN0YCB8IExpc3QgQVBJIGtleXMgZm9yIGN1cnJlbnQgb3duZXIgfCBM" + - "aXN0cyBOVkNGLXNjb3BlZCBrZXlzIG9ubHkgfAp8IGBhcGkta2V5IGRlbGV0ZSBLRVktSURgIC8g" + - "YGFwaS1rZXkgcmV2b2tlIEtFWS1JRGAgfCBSZW1vdmUgYW4gQVBJIGtleSB8ICoqQ29uZmlybSB3" + - "aXRoIHVzZXIqKiB8CnwgYGFwaS1rZXkgc2hvd2AgfCBTaG93IGN1cnJlbnRseSBzYXZlZCBBUEkg" + - "a2V5IGZyb20gc3RhdGUgfCB8CgojIyBBZ2VudCBza2lsbAoKfCBDb21tYW5kIHwgUHVycG9zZSB8" + - "IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGBhZ2VudC1za2lsbCBpbnN0YWxsIFstLXRhcmdldD1E" + - "SVJdYCB8IEluc3RhbGwgYWxsIGJ1bmRsZWQgcHVibGljIHVzZXIgc2tpbGxzIGludG8gYH4vLmNs" + - "YXVkZS9za2lsbHMvYCBhbmQgYH4vLmFnZW50cy9za2lsbHMvYCB8IERlZmF1bHQ6IGJvdGggYmFz" + - "ZSBza2lsbHMgZGlyZWN0b3JpZXMgfAp8IGBhZ2VudC1za2lsbCB1bmluc3RhbGwgWy0tdGFyZ2V0" + - "PURJUl1gIHwgUmVtb3ZlIG9ubHkgYnVuZGxlZCBwdWJsaWMgdXNlciBza2lsbHMgZnJvbSB0aGUg" + - "dGFyZ2V0IGJhc2Ugc2tpbGxzIGRpcmVjdG9yaWVzIHwgSWRlbXBvdGVudDsgdW5yZWxhdGVkIHNr" + - "aWxscyByZW1haW4gfAp8IGBhZ2VudC1za2lsbCBzaG93IFstLWZpbGU9UkVMXWAgfCBQcmludCBi" + - "dW5kbGVkIGBudmNmLXNlbGYtbWFuYWdlZC1jbGkvU0tJTEwubWRgIG9yIGFub3RoZXIgZW1iZWRk" + - "ZWQgZmlsZSB8IEZvciBkZWJ1Z2dpbmcgfAp8IGBhZ2VudC1za2lsbCB2ZXJzaW9uYCB8IFByaW50" + - "IGJ1aWxkIFNIQSBhbmQgZW1iZWRkZWQgcHVibGljIHVzZXIgc2tpbGwgc3VtbWFyeSB8IHwKUEsH" + - "CHIND2QhIwAAISMAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAMgAJAGRhdGEvbnZjZi1zZWxm" + - "LW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9leGl0LWNvZGVzLm1kVVQFAAEAps4SIyBgbnZjZi1jbGlg" + - "IGV4aXQgY29kZXMKClN0YWJsZSBhY3Jvc3Mgc3ViY29tbWFuZHMuIFVzZSB0aGVzZSB0byBkcml2" + - "ZSBhZ2VudCByZXRyeSAvIHN1cmZhY2luZyBsb2dpYy4KCnwgQ29kZSB8IE1lYW5pbmcgfCBFeGFt" + - "cGxlIGNhdXNlcyB8CnwtLS18LS0tfC0tLXwKfCBgMGAgfCBTdWNjZXNzIHwgQWxsIGNoZWNrcyBw" + - "YXNzZWQ7IGluc3RhbGwgY29tcGxldGVkOyBkZXBsb3ltZW50IEFDVElWRSB8CnwgYDFgIHwgR2Vu" + - "ZXJpYyBlcnJvciB8IEhlbG0gcmVuZGVyIGZhaWxlZDsgbmV0d29yayB1bnJlYWNoYWJsZTsgZmls" + - "ZSBub3QgZm91bmQ7IFlBTUwgcGFyc2UgZXJyb3IgfAp8IGAyYCB8IFByZS1mbGlnaHQgY2hlY2sg" + - "ZmFpbGVkIHwgR2F0ZXdheSBBUEkgQ1JEcyBtaXNzaW5nOyBrdWJlY3RsIG5vdCBvbiBQQVRIOyBk" + - "ZWZhdWx0IFN0b3JhZ2VDbGFzcyBhYnNlbnQgfAp8IGAzYCB8IEFkbWluIGF1dGggZmFpbGVkIHwg" + - "Tm8gdG9rZW4gKyBgLS1ub24taW50ZXJhY3RpdmVgIHNldDsgSUNNUyByZWplY3RlZCBKV1Q7IGlu" + - "aXQgZW5kcG9pbnQgdW5yZWFjaGFibGUgfAp8IGA1YCB8IE1hbmlmZXN0IGFwcGx5IG9yIGAtLXdh" + - "aXRgIHRpbWVkIG91dCB8IEhlbG0gaW5zdGFsbCB0aW1lb3V0OyBjaGVjayBwb2xsZWQgYnV0IGRp" + - "ZG4ndCBwYXNzIGJlZm9yZSBkdXJhdGlvbiB8CnwgYDEzMGAgfCBDYW5jZWxsZWQgYnkgU0lHSU5U" + - "L1NJR1RFUk0gfCBVc2VyIEN0cmwtQzsgQ0kgYnVkZ2V0IGV4Y2VlZGVkOyBwb2QgZXZpY3RlZCB8" + - "CgojIyBIb3cgYW4gYWdlbnQgc2hvdWxkIHJlYWN0Cgp8IENvZGUgfCBBZ2VudCBiZWhhdmlvciB8" + - "CnwtLS18LS0tfAp8IGAwYCB8IENvbnRpbnVlIC8gcmVwb3J0IHN1Y2Nlc3MuIHwKfCBgMWAgfCBT" + - "dXJmYWNlIHN0ZGVyciB0byB1c2VyOyBhc2sgYmVmb3JlIGFueSByZXRyeS4gR2VuZXJpYyBlcnJv" + - "cnMgdXN1YWxseSBuZWVkIGEgaHVtYW4gdG8gcmVhZCB0aGUgbWVzc2FnZS4gfAp8IGAyYCB8IFN1" + - "cmZhY2UgZmFpbGVkIGNoZWNrcyArIHRoZWlyIGBoaW50VVJMYC4gRG9uJ3QgcHJvcG9zZSBgdXBg" + - "IHVudGlsIHRoZSB1c2VyIGZpeGVzIHByZXJlcXMuIHwKfCBgM2AgfCBTdWdnZXN0IGBudmNmLWNs" + - "aSBpbml0YCAoaW50ZXJhY3RpdmUpIE9SIGAtLXRva2VuPSRKV1RgIChDSSkuIERvbid0IGF1dG8t" + - "bWludCB3aXRob3V0IHVzZXIgT0suIHwKfCBgNWAgfCBBc2sgdXNlciBpZiB0aGV5IHdhbnQgdG8g" + - "d2FpdCBsb25nZXIsIGRpZyBpbnRvIHRoZSBzdGFsbGVkIGNvbXBvbmVudCwgb3IgY2FuY2VsLiB8" + - "CnwgYDEzMGAgfCBEb24ndCByZXRyeSBhdXRvbWF0aWNhbGx5OyB1c2VyIGV4cGxpY2l0bHkgY2Fu" + - "Y2VsbGVkLiBDb25maXJtIGJlZm9yZSByZS1ydW5uaW5nLiB8CgojIyBXaGVyZSB0byBmaW5kIG1v" + - "cmUgZGV0YWlsCgpFdmVyeSBub24temVybyBleGl0IGVtaXRzIGEgc3RydWN0dXJlZCBgcGhhc2Vf" + - "ZmFpbGVkYCBKU09OIGV2ZW50IHdpdGggYGVyckNhdGVnb3J5YCwgYGVyck1lc3NhZ2VgLCBgcmVt" + - "ZWRpYXRpb25gIChhcnJheSksIGByZXRyeUNsYXNzYCAoZW51bTogYG5vbmV8aW1tZWRpYXRlfGJh" + - "Y2tvZmZ8YWZ0ZXJfcmVtZWRpYXRpb258dW5rbm93bmApLCBgcmV0cnlBZnRlclNlY2AgKGludCwg" + - "b3B0aW9uYWwpLCBhbmQgYHJhd2AgKHN1YnByb2Nlc3MgKyBIVFRQICsgS3ViZXJuZXRlcyBzaWdu" + - "YWwpLiBBbHdheXMgY29uc3VtZSB0aGVzZSBpbiBgLS1qc29uYCBtb2RlIHJhdGhlciB0aGFuIHBh" + - "cnNpbmcgRW5nbGlzaCBmcm9tIHN0ZGVyci4KUEsHCHOnWmTVBgAA1QYAAFBLAwQUAAgAAAAAACEA" + - "AAAAAAAAAAAAAAAALQAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9mbGFn" + - "cy5tZFVUBQABAKbOEiMgYG52Y2YtY2xpYCBmbGFnIHJlZmVyZW5jZQoKIyMgR2xvYmFsIGZsYWdz" + - "IChldmVyeSBzdWJjb21tYW5kKQoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0t" + - "LXwtLS18CnwgYC0tY29uZmlnIEZJTEVgIHwgQ29uZmlnIGZpbGUgcGF0aCB8IGAkSE9NRS8ubnZj" + - "Zi1jbGkueWFtbGAgfAp8IGAtLWRlYnVnYCB8IFZlcmJvc2UgSFRUUCBsb2dnaW5nIG9uIHN0ZGVy" + - "ciB8IGBmYWxzZWAgfAp8IGAtLWpzb25gIHwgSlNPTkwgZXZlbnRzIG9uIHN0ZGVyciB8IGF1dG8g" + - "KG9mZiBpbiBUVFksIG9uIHVuZGVyIGAtLW5vbi1pbnRlcmFjdGl2ZWApIHwKCiMjIGBzZWxmLWhv" + - "c3RlZGAgcGFyZW50IChwZXJzaXN0ZW50IGFjcm9zcyBzdWJjb21tYW5kcykKCnwgRmxhZyB8IFB1" + - "cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNvbnRyb2wtcGxhbmUtc3RhY2s9" + - "4oCmYCB8IENvbnRyb2wtcGxhbmUgYnVuZGxlIHNvdXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwg" + - "b3IgYG9jaTovL2AgVVJMIHwgZW1iZWRkZWQgT0NJIFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24g" + - "fAp8IGAtLWNvbXB1dGUtcGxhbmUtc3RhY2s94oCmYCB8IENvbXB1dGUtcGxhbmUgYnVuZGxlIHNv" + - "dXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwgb3IgYG9jaTovL2AgVVJMIHwgZW1iZWRkZWQgT0NJ" + - "IFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24gfAp8IGAtLWVudj1sb2NhbFx8cHJkXHzigKZgIHwg" + - "SGVsbWZpbGUgZW52aXJvbm1lbnQgbmFtZSB8IGBsb2NhbGAgZm9yIGRldiBidWlsZHMsIGBwcmRg" + - "IGZvciByZWxlYXNlcyB8CnwgYC0tbm9uLWludGVyYWN0aXZlYCB8IERpc2FibGUgYWxsIHN0ZGlu" + - "IHByb21wdHMgfCBgZmFsc2VgIHwKfCBgLS10b2tlbj0kSldUYCB8IEFkbWluIEpXVCwgb3ZlcnJp" + - "ZGVzIHN0b3JlZCBzZXNzaW9uIHwgLSB8CnwgYC0tbm8tYXBwbHlgIHwgYGluc3RhbGxgIG9ubHkg" + - "LSBlbWl0IFlBTUwsIGRvIG5vdCBrdWJlY3RsIGFwcGx5IHwgYGZhbHNlYCB8CnwgYC0tb3V0cHV0" + - "PXRleHRcfGpzb25gIHwgTGVnYWN5IGFsaWFzIGZvciBgLS1qc29uYCAoZGVwcmVjYXRlZCwgcmVt" + - "b3ZlZCBpbiBuZXh0IG1ham9yKSB8IGB0ZXh0YCB8CnwgYC0tcGxhaW5gIHwgRm9yY2UgcGxhaW4g" + - "c3RyZWFtaW5nIG91dHB1dCB8IGF1dG8tZGV0ZWN0IHwKfCBgLS13YWl0IERVUkFUSU9OYCB8IGBj" + - "aGVja2Agb25seTsgYmxvY2sgdW50aWwgcGFzcyB8IC0gfAp8IGAtLWNvbnRyb2wtcGxhbmUtY29u" + - "dGV4dCBDVFhgIHwga3ViZWN0bCBjb250ZXh0IGZvciBjb250cm9sIHBsYW5lIChSRVEtMjApIHwg" + - "Y3VycmVudCBjb250ZXh0IHwKfCBgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQgQ1RYYCB8IGt1YmVj" + - "dGwgY29udGV4dCBmb3IgY29tcHV0ZSBwbGFuZSAoUkVRLTIwKSB8IGN1cnJlbnQgY29udGV4dCB8" + - "CnwgYC0taWNtcy11cmwgVVJMYCB8IFB1YmxpYyBJQ01TIFVSTDsgcmVxdWlyZWQgd2hlbiBjb250" + - "ZXh0cyBkaWZmZXIgfCBkZXJpdmVkIGZyb20gYGJhc2VfaHR0cF91cmxgIHwKfCBgLS1sb2NhbC1v" + - "bmx5YCB8IGBjaGVjayAtLXByZWAgb25seTsgc2tpcCBhbGwga3ViZWN0bCBjb250YWN0IHwgYGZh" + - "bHNlYCB8CgojIyBgY2hlY2tgLXNwZWNpZmljCgpBdCBsZWFzdCBvbmUgb2YgYC0tcHJlYCwgYC0t" + - "Y29udHJvbC1wbGFuZWAsIGAtLWNvbXB1dGUtcGxhbmVgLCBvciBgLS1hbGxgIGlzCnJlcXVpcmVk" + - "LiBFYWNoIHNlbGVjdHMgYSByb2xlOyBvbmx5IHRoZSBzZWxlY3RlZCByb2xlcyBjb250YWN0IGEg" + - "Y2x1c3Rlci4KCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAt" + - "LXByZWAgfCBQcmUtZmxpZ2h0OiBsb2NhbC1ob3N0IHRvb2xzIHBsdXMgY2x1c3RlciByZWFkaW5l" + - "c3MgfCBgZmFsc2VgIHwKfCBgLS1jb250cm9sLXBsYW5lYCB8IENvbnRyb2wtcGxhbmUgY2hlY2tz" + - "IHwgYGZhbHNlYCB8CnwgYC0tY29tcHV0ZS1wbGFuZWAgfCBDb21wdXRlLXBsYW5lIGNoZWNrcyB8" + - "IGBmYWxzZWAgfAp8IGAtLWFsbGAgfCBFdmVyeSBjYXRlZ29yeSB8IGBmYWxzZWAgfAp8IGAtLWNs" + - "dXN0ZXItbmFtZSBOQU1FYCB8IENsdXN0ZXIgbmFtZSBmb3IgY29tcHV0ZS1wbGFuZSBjaGVja3Mg" + - "fCAtIHwKfCBgLS1za2lwLWlub3RpZnktY2hlY2tgIHwgU2tpcCB0aGUgcGVyLW5vZGUgaW5vdGlm" + - "eS1saW1pdHMgcHJvYmUuIE5lZWRlZCB3aGVuIHRoZSBrdWJlY29uZmlnIHVzZXIgY2Fubm90IGNy" + - "ZWF0ZSBwb2RzIGluIGBkZWZhdWx0YC4gRW52OiBgTlZDRl9DTElfU0VMRkhPU1RFRF9TS0lQX0lO" + - "T1RJRllgIHwgYGZhbHNlYCB8CgojIyMgQ2x1c3Rlci12YWxpZGF0b3IgZmxhZ3MKClRoZSB2YWxp" + - "ZGF0b3IgcnVucyBhcyBhIEpvYiBpbiB0aGUgY2x1c3RlciBiZWluZyBjaGVja2VkLiBUaGUgQ0xJ" + - "IGNyZWF0ZXMgYQpTZXJ2aWNlQWNjb3VudCwgQ2x1c3RlclJvbGUsIGFuZCBDbHVzdGVyUm9sZUJp" + - "bmRpbmcgZm9yIGl0IGFuZCByZW1vdmVzIHRoZW0KYWZ0ZXIgdGhlIHJ1biwgc28gdGhlIGt1YmVj" + - "b25maWcgY29udGV4dCBuZWVkcyBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aG9zZS4KCnwgRmxhZyB8" + - "IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0ZXItdmFsaWRhdG9y" + - "LWltYWdlIFJFRmAgfCBWYWxpZGF0b3IgaW1hZ2UuIFJlc29sdXRpb24gb3JkZXI6IGZsYWcsIGBO" + - "VkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9JTUFHRWAsIGNvbmZpZyBrZXkgYGNsdXN0ZXJfdmFs" + - "aWRhdG9yX2ltYWdlYC4gQSByZWYgd2l0aCBubyB0YWcgZGlzY292ZXJzIHRoZSBsYXRlc3Qgc3Rh" + - "YmxlIHRhZyBmcm9tIHRoZSByZWdpc3RyeS4gVW5zZXQgZXZlcnl3aGVyZSBza2lwcyB0aGUgcHJv" + - "YmUgd2l0aCBhIHdhcm5pbmcgfCAtIHwKfCBgLS1jbHVzdGVyLXZhbGlkYXRvci1yZWdpc3RyaWVz" + - "IGhvc3Q6cG9ydCwuLi5gIHwgRXh0cmEgcmVnaXN0cmllcyB0aGUgY29udHJvbC1wbGFuZSB2YWxp" + - "ZGF0b3IgcHJvYmVzIGZvciByZWFjaGFiaWxpdHkuIGBudmNyLmlvYCBpcyBhbHdheXMgcHJvYmVk" + - "LiBSZXBlYXRhYmxlIG9yIGNvbW1hLXNlcGFyYXRlZC4gRW52OiBgTlZDRl9DTElfQ0xVU1RFUl9W" + - "QUxJREFUT1JfUkVHSVNUUklFU2A7IGNvbmZpZyBrZXkgYGNsdXN0ZXJfdmFsaWRhdG9yX3JlZ2lz" + - "dHJpZXNgIHwgYG52Y3IuaW9gIG9ubHkgfAp8IGAtLWNsdXN0ZXItdmFsaWRhdG9yLXB1bGwtc2Vj" + - "cmV0IE5BTUVgIHwgZG9ja2VyLXJlZ2lzdHJ5IFNlY3JldCBpbiBgZGVmYXVsdGAgdXNlZCB0byBw" + - "dWxsIHRoZSB2YWxpZGF0b3IgaW1hZ2UuIFdoZW4gZW1wdHksIHRoZSBDTEkgbG9va3MgZm9yIG9u" + - "ZSBpbiB0aGUgTlZDRiBuYW1lc3BhY2VzIGFuZCBmYWxscyBiYWNrIHRvIG1pbnRpbmcgb25lIGZy" + - "b20gYE5HQ19BUElfS0VZYCB8IGF1dG8tZGV0ZWN0IHwKfCBgLS1za2lwLWNsdXN0ZXItdmFsaWRh" + - "dGlvbmAgfCBTa2lwIHRoZSBpbi1jbHVzdGVyIHZhbGlkYXRvciBwcm9iZSBlbnRpcmVseS4gRW52" + - "OiBgTlZDRl9DTElfU0VMRkhPU1RFRF9TS0lQX0NMVVNURVJfVkFMSURBVElPTmAgfCBgZmFsc2Vg" + - "IHwKfCBgLS1uby1jbGVhbnVwYCB8IEtlZXAgdGhlIHZhbGlkYXRvciBKb2IgKGFuZCBpdHMgUkJB" + - "QykgYWZ0ZXIgdGhlIHJ1biBmb3IgZGVidWdnaW5nLiBUaGUgbmV4dCBydW4gc3RpbGwgc3dlZXBz" + - "IHByaW9yIEpvYnMgfCBgZmFsc2VgIHwKfCBgLS1zaG93LWxvZ3NgIHwgUHJpbnQgdGhlIHZhbGlk" + - "YXRvciB0cmFuc2NyaXB0IHRvIHN0ZGVyciBhZnRlciB0aGUgY2hlY2sgZXZlbnRzLiBUaGUgdHJh" + - "bnNjcmlwdCBpcyBub3QgSlNPTiwgYW5kIGAtLWpzb25gIGFsc28gd3JpdGVzIHRvIHN0ZGVyciwg" + - "c28gbGVhdmUgdGhpcyBvZmYgd2hlbiBhIHBhcnNlciBpcyByZWFkaW5nIHRoZSBzdHJlYW0gfCBg" + - "ZmFsc2VgIHwKCiMjIGB1cGAtc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwK" + - "fC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0ZXItbmFtZSBOQU1FYCB8IElDTVMgY2x1c3RlciByb3cg" + - "aWRlbnRpZmllciAocmVxdWlyZWQpIHwgLSB8CnwgYC0tbmNhLWlkIElEYCB8IE5DQSBhY2NvdW50" + - "IElEIHwgYG52Y2YtZGVmYXVsdGAgfAp8IGAtLXJlZ2lvbiBSRUdJT05gIHwgQ2x1c3RlciByZWdp" + - "b24gfCBgdXMtd2VzdC0xYCB8CnwgYC0tcGxhbi1vbmx5YCB8IERyeS1ydW47IGVtaXQgcGhhc2Ug" + - "cGxhbiArIEVUQXMgd2l0aG91dCBjaGFuZ2VzIHwgYGZhbHNlYCB8CgojIyBgc3RhdHVzYC1zcGVj" + - "aWZpYwoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tY2x1" + - "c3Rlci1uYW1lIE5BTUVgIHwgTGltaXQgdG8gb25lIGNvbXB1dGUgcGxhbmUgfCAtIChjb250cm9s" + - "ICsgYWxsIGNsdXN0ZXJzKSB8CnwgYC0td2F0Y2hgIHwgTGl2ZSByZS1yZW5kZXIgfCBgZmFsc2Vg" + - "IHwKfCBgLS13YXRjaC1pbnRlcnZhbCBEVVJgIHwgYC0td2F0Y2hgIGNhZGVuY2UgfCBgNXNgIHwK" + - "fCBgLS1jb21wb25lbnQgTkFNRWAgfCBGaWx0ZXIgY29tcG9uZW50cyBwYW5lbCB8IGFsbCB8Cnwg" + - "YC0tbm8tZXZlbnRzYCB8IFNraXAgZXZlbnRzIHBhbmVsIHwgYGZhbHNlYCB8CgojIyBgY2x1c3Rl" + - "ciByZWdpc3RlcmAtc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwt" + - "LS18LS0tfAp8IGAtLW5hbWUgTkFNRWAgfCBDbHVzdGVyIG5hbWUgKHJlcXVpcmVkKSB8IC0gfAp8" + - "IGAtLW5jYS1pZCBJRGAgfCBOQ0EgSUQgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLXJlZ2lvbiBSRUdJ" + - "T05gIHwgUmVnaW9uIHwgYHVzLXdlc3QtMWAgfAp8IGAtLWljbXMtdXJsIFVSTGAgfCBJQ01TIGVu" + - "ZHBvaW50IHwgZnJvbSBjb25maWcgfAp8IGAtLWlnbm9yZS1leGlzdGluZ2AgfCBNYXRjaC1vci1j" + - "cmVhdGUgaW5zdGVhZCBvZiBmYWlsLW9uLWV4aXN0cyB8IGBmYWxzZWAgfAoKIyMgYGFwaS1rZXkg" + - "Z2VuZXJhdGVgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0t" + - "fC0tLXwKfCBgLS1mb3IgZnVuY3Rpb25cfHRhc2tgIHwgR2VuZXJhdGUgb25seSB0aGUgc3BlY2lm" + - "aWVkIGtleSB0eXBlIHwgKG9taXQgdG8gZ2VuZXJhdGUgYm90aCkgfAp8IGAtLWRlc2NyaXB0aW9u" + - "IFRFWFRgIHwgSHVtYW4tcmVhZGFibGUgbGFiZWwgZm9yIHRoZSBrZXkgfCBgR2VuZXJhdGVkIGJ5" + - "IG52Y2YtY2xpYCB8CnwgYC0tZXhwaXJlcy1pbiBEVVJBVElPTmAgfCBFeHBpcnkgb2Zmc2V0IChl" + - "LmcuIGAyNGhgLCBgN2RgKTsgcGFyc2VkIGFzIGV4dGVuZGVkIGR1cmF0aW9uIHwgYDI0aGAgfAp8" + - "IGAtLXNjb3BlcyBTQ09QRVssU0NPUEVdYCB8IE92ZXJyaWRlIGRlZmF1bHQgc2NvcGVzOyByZXF1" + - "aXJlcyBgLS1mb3JgIHwgKHNlcnZpY2UgZGVmYXVsdHMpIHwKfCBgLS12YWxpZGF0ZWAgfCBWYWxp" + - "ZGF0ZSBlYWNoIGdlbmVyYXRlZCBrZXkgaW1tZWRpYXRlbHkgYWZ0ZXIgbWludGluZyB8IGBmYWxz" + - "ZWAgfAoKRXh0ZW5kZWQgZHVyYXRpb24gdW5pdHM6IGBzYCAoc2Vjb25kcyksIGBtYCAobWludXRl" + - "cyksIGBoYCAoaG91cnMpLCBgZGAgKGRheXMpLCBgd2AgKHdlZWtzKS4KCiMjIGBmdW5jdGlvbiBj" + - "cmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIGZvciBy" + - "ZXBlYXRhYmxlIGZ1bmN0aW9uIGRlZmluaXRpb25zLiBGb3IgYWQtaG9jIGNyZWF0ZXM6Cgp8IEZs" + - "YWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1uYW1lIE5BTUVgIHwg" + - "RnVuY3Rpb24gbmFtZSB8IC0gfAp8IGAtLWltYWdlIElNQUdFYCB8IENvbnRhaW5lciBpbWFnZSB8" + - "IC0gfAp8IGAtLWluZmVyZW5jZS11cmwgVVJJYCB8IENvbnRhaW5lciBpbmZlcmVuY2UgZW5kcG9p" + - "bnQgfCAtIHwKfCBgLS1pbmZlcmVuY2UtcG9ydCBQT1JUYCB8IENvbnRhaW5lciBpbmZlcmVuY2Ug" + - "cG9ydCB8IC0gfAp8IGAtLWZ1bmN0aW9uLXR5cGUgREVGQVVMVFx8U1RSRUFNSU5HXHxMTE1gIHwg" + - "RnVuY3Rpb24gdHlwZSB8IGBERUZBVUxUYCB8CnwgYC0taGVsbS1jaGFydCBDSEFSVGAgfCBIZWxt" + - "IGNoYXJ0IFVSTCBvciBPQ0kgcmVmZXJlbmNlLiBDYW4gYmUgdXNlZCB3aXRoIGAtLWZ1bmN0aW9u" + - "LXR5cGU9TExNYCBmb3IgY2hhcnQtcGFja2FnZWQgTExNIHdvcmtsb2Fkcy4gfCAtIHwKfCBgLS1o" + - "ZWxtLWNoYXJ0LXNlcnZpY2UgTkFNRWAgfCBLdWJlcm5ldGVzIFNlcnZpY2UgbmFtZSBleHBvc2Vk" + - "IGJ5IHRoZSBjaGFydC4gUmVxdWlyZWQgd2hlbiBgLS1oZWxtLWNoYXJ0YCBpcyBzZXQuIHwgLSB8" + - "CnwgYC0tbW9kZWxzIE5BTUU6VkVSU0lPTjpVUklgIHwgU3RhbmRhcmQgbW9kZWwgYXJ0aWZhY3Q7" + - "IHJlcGVhdGFibGUgfCAtIHwKfCBgLS1sbG0tbW9kZWwgU1BFQ2AgfCBMTE0gbW9kZWwgY29uZmln" + - "OyBmb3JtYXQgYG5hbWU9PG1vZGVsPix1cmlzPTx1cmk+XHw8dXJpPixyb3V0aW5nTWV0aG9kPTxt" + - "ZXRob2Q+LHRva2VuUmF0ZUxpbWl0PTxsaW1pdD5gOyByZXBlYXRhYmxlLiBUb2tlbiBsaW1pdHMg" + - "dXNlIGA8dmFsdWU+LTx1bml0PmAgd2l0aCBgU2AsIGBNYCwgYEhgLCBgRGAsIG9yIGBXYCwgZm9y" + - "IGV4YW1wbGUgYDEwMDAtU2AuIFVzZSBpbnB1dCBKU09OIGZvciBjb21iaW5lZCB0b2tlbiBsaW1p" + - "dHMgYmVjYXVzZSBpbmxpbmUgc3BlY3MgdXNlIGNvbW1hcyBhcyBmaWVsZCBzZXBhcmF0b3JzLiB8" + - "IC0gfAp8IGAtLWxsbS1kZWZhdWx0LXByaW9yaXR5IFBSSU9SSVRZYCB8IEZ1bmN0aW9uLWxldmVs" + - "IGRlZmF1bHQgcmVxdWVzdCBwcmlvcml0eS4gTG93ZXIgdmFsdWVzIGhhdmUgaGlnaGVyIHByaW9y" + - "aXR5LiB8IC0gfAp8IGAtLWxsbS1wZXItYWNjb3VudC1wcmlvcml0eSBOQ0EtSUQ6UFJJT1JJVFlg" + - "IHwgUGVyLWFjY291bnQgcHJpb3JpdHkgb3ZlcnJpZGU7IHJlcGVhdGFibGU7IHN1cHBvcnRzIHVw" + - "IHRvIDY0IGRpc3RpbmN0IE5DQSBJRCBvdmVycmlkZXMuIFJlcXVpcmVzIGEgZGVmYXVsdCBwcmlv" + - "cml0eS4gfCAtIHwKCkluIEpTT04gYW5kIGlubGluZSBzcGVjcywgTExNIGZ1bmN0aW9ucyBzZXQg" + - "YGZ1bmN0aW9uVHlwZTogIkxMTSJgIGFuZCBtb2RlbCByb3V0aW5nIG1ldGFkYXRhIHVuZGVyIGBt" + - "b2RlbHNbXS5sbG1Db25maWdgLiBgbGxtQ29uZmlnLnVyaXNgIGRlY2xhcmVzIHRoZSBPcGVuQUkt" + - "Y29tcGF0aWJsZSB1cHN0cmVhbSBwYXRocyBleHBvc2VkIGJ5IHRoZSBtb2RlbC4gQ3VycmVudCBz" + - "dXBwb3J0ZWQgcGF0aHMgYXJlIGAvdjEvY2hhdC9jb21wbGV0aW9uc2AsIGAvdjEvcmVzcG9uc2Vz" + - "YCwgYW5kIGAvdjEvZW1iZWRkaW5nc2AuIGBsbG1Db25maWcucm91dGluZ01ldGhvZGAgYWNjZXB0" + - "cyBgcm91bmRfcm9iaW5gLCBgcG93ZXJfb2ZfdHdvYCwgYGdyb3FfbXVsdGlyZWdpb25gLCBgcHVs" + - "c2FyYCwgb3IgYHJhbmRvbWAuCmBsbG1Db25maWcudG9rZW5SYXRlTGltaXRgIGFjY2VwdHMgb25l" + - "IG9yIG1vcmUgY29tbWEtc2VwYXJhdGVkIHBvc2l0aXZlIGludGVnZXIgdG9rZW4gbGltaXRzIGlu" + - "IGA8dmFsdWU+LTx1bml0PmAgZm9ybWF0LiBTdXBwb3J0ZWQgdW5pdHMgYXJlIGBTYCAoc2Vjb25k" + - "cyksIGBNYCAobWludXRlcyksIGBIYCAoaG91cnMpLCBgRGAgKGRheXMpLCBhbmQgYFdgICh3ZWVr" + - "cykuIFVzZSBkaXN0aW5jdCB1bml0cyB3aGVuIGNvbWJpbmluZyBsaW1pdHMsIGZvciBleGFtcGxl" + - "IGAxMDAwLVMsNTAwMC1NLDEwMDAwMC1ILDUwMDAwMC1ELDEwMDAwMDAtV2AgaW4gaW5wdXQgSlNP" + - "Ti4KCkhlbG0gY2hhcnQgcGFja2FnaW5nIGlzIGluZGVwZW5kZW50IG9mIGBmdW5jdGlvblR5cGVg" + - "LiBGb3IgYSBIZWxtLWNoYXJ0IGJhY2tlZCBMTE0gZnVuY3Rpb24sIHNldCBgZnVuY3Rpb25UeXBl" + - "OiAiTExNImAsIGBoZWxtQ2hhcnRgLCBgaGVsbUNoYXJ0U2VydmljZU5hbWVgLCBhbmQgYG1vZGVs" + - "c1tdLmxsbUNvbmZpZ2AgaW4gdGhlIHNhbWUgY3JlYXRlIHJlcXVlc3QuIGBpbmZlcmVuY2VQb3J0" + - "YCBtdXN0IGJlIHRoZSBLdWJlcm5ldGVzIFNlcnZpY2UgcG9ydCBleHBvc2VkIGJ5IGBoZWxtQ2hh" + - "cnRTZXJ2aWNlTmFtZWAuCgpMTE0gaW52b2NhdGlvbiByZXF1ZXN0cyB1c2UgYG1vZGVsOiAiPGZ1" + - "bmN0aW9uLWlkPi88bW9kZWwtbmFtZT4iYC4gVGhlIGZ1bmN0aW9uIElEIHNlbGVjdHMgdGhlIE5W" + - "Q0YgZnVuY3Rpb24sIGFuZCB0aGUgbW9kZWwgbmFtZSBpcyBmb3J3YXJkZWQgdXBzdHJlYW0uIENo" + - "YXQgY29tcGxldGlvbnMgYW5kIFJlc3BvbnNlcyBBUEkgcmVxdWVzdHMgY2FuIHVzZSBgeC1tdWx0" + - "aS10dXJuLXNlc3Npb24taWRgIGZvciBzZXNzaW9uIHN0aWNraW5lc3M7IGVtYmVkZGluZ3MgcmVx" + - "dWVzdHMgZG8gbm90LgoKIyMgYGZ1bmN0aW9uIHVwZGF0ZWAtc3BlY2lmaWMKCnwgRmxhZyB8IFB1" + - "cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLXRhZ3MgVEFHWyxUQUddYCB8IFJl" + - "cGxhY2UgZnVuY3Rpb24gdGFncyB8IC0gfAp8IGAtLWxsbS1tb2RlbC11cGRhdGUgU1BFQ2AgfCBM" + - "TE0gbW9kZWwgdXBkYXRlOyBmb3JtYXQgYG5hbWU9PG1vZGVsPixyb3V0aW5nTWV0aG9kPTxtZXRo" + - "b2Q+LHRva2VuUmF0ZUxpbWl0PTxsaW1pdD5gOyByZXBlYXRhYmxlLiBSb3V0aW5nIG1ldGhvZHMg" + - "bWF0Y2ggYC0tbGxtLW1vZGVsYC4gVG9rZW4gbGltaXQgZXhhbXBsZTogYDEwMDAtU2AuIFVzZSBp" + - "bnB1dCBKU09OIGZvciBjb21iaW5lZCB0b2tlbiBsaW1pdHMuIHwgLSB8CnwgYC0tbGxtLWRlZmF1" + - "bHQtcHJpb3JpdHkgUFJJT1JJVFlgIHwgUmVwbGFjZSB0aGUgZnVuY3Rpb24tbGV2ZWwgcHJpb3Jp" + - "dHkgY29uZmlndXJhdGlvbiB3aXRoIHRoaXMgZGVmYXVsdCBhbmQgYW55IHN1cHBsaWVkIHBlci1h" + - "Y2NvdW50IG92ZXJyaWRlcy4gfCAtIHwKfCBgLS1sbG0tcGVyLWFjY291bnQtcHJpb3JpdHkgTkNB" + - "LUlEOlBSSU9SSVRZYCB8IFBlci1hY2NvdW50IHByaW9yaXR5IG92ZXJyaWRlOyByZXBlYXRhYmxl" + - "OyBzdXBwb3J0cyB1cCB0byA2NCBkaXN0aW5jdCBOQ0EgSUQgb3ZlcnJpZGVzLiBSZXF1aXJlcyBh" + - "IGRlZmF1bHQgcHJpb3JpdHkuIHwgLSB8CgpJbiBKU09OLCBgZnVuY3Rpb24gdXBkYXRlYCBhY2Nl" + - "cHRzIGBtb2RlbFVwZGF0ZXNbXWAgZW50cmllcyB3aXRoIGBtb2RlbE5hbWVgIGFuZCBgbGxtQ29u" + - "ZmlnLnJvdXRpbmdNZXRob2RgIGFuZC9vciBgbGxtQ29uZmlnLnRva2VuUmF0ZUxpbWl0YC4gYHVy" + - "aXNgIGFyZSBjcmVhdGUtdGltZSBtb2RlbCBtZXRhZGF0YSBhbmQgYXJlIG5vdCBwYXJ0IG9mIG1v" + - "ZGVsIHVwZGF0ZXMuCgojIyBgZnVuY3Rpb24gZGVwbG95IGNyZWF0ZWAtc3BlY2lmaWMKCmAtLWlu" + - "cHV0LWZpbGUgRklMRWAgaXMgcmVjb21tZW5kZWQgKGZ1bGwgSlNPTiBzcGVjKS4gRm9yIGFkLWhv" + - "YyBvbmUtc2hvdCB1c2U6Cgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0t" + - "LXwKfCBgLS1mdW5jdGlvbi1pZCBJRGAgfCBGdW5jdGlvbiBJRCAocmVxdWlyZWQpIHwgLSB8Cnwg" + - "YC0tZ3B1IE5BTUVgIHwgR1BVIGZhbWlseSB8IGBIMTAwYCB8CnwgYC0taW5zdGFuY2UtdHlwZSBU" + - "WVBFYCB8IFNLVSB8IGBOQ1AuR1BVLkgxMDBfMXhgIHwKfCBgLS1taW4taW5zdGFuY2VzIE5gIHwg" + - "TWluIHJlcGxpY2FzIHwgYDFgIHwKfCBgLS1tYXgtaW5zdGFuY2VzIE5gIHwgTWF4IHJlcGxpY2Fz" + - "IHwgYDFgIHwKfCBgLS1tYXgtcmVxdWVzdC1jb25jdXJyZW5jeSBOYCB8IENvbmN1cnJlbmN5IHwg" + - "YDBgICh1bnNldDsgc2VydmVyIGRlZmF1bHQgYXBwbGllcykgfAp8IGAtLWNsdXN0ZXJzIE5BTUVb" + - "LE5BTUVdYCB8IFRhcmdldCBzcGVjaWZpYyBjb21wdXRlIGNsdXN0ZXJzIHwgKGFueSBtYXRjaGlu" + - "ZyBTS1UpIHwKCiMjIGB0YXNrIGNyZWF0ZWAtc3BlY2lmaWMKCmAtLWlucHV0LWZpbGUgRklMRWAg" + - "aXMgcmVjb21tZW5kZWQgZm9yIHJlcGVhdGFibGUgdGFzayBkZWZpbml0aW9ucy4gRm9yIGFkLWhv" + - "YyB1c2U6Cgp8IEZsYWcgfCBQdXJwb3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYC0tbmFt" + - "ZSBOQU1FYCB8IFRhc2sgbmFtZSAocmVxdWlyZWQpIHwgMS0xMjggY2hhcnMsIGBeW2EtejAtOUEt" + - "Wl1bYS16MC05QS1aXC1fXSokYCB8CnwgYC0tZ3B1IEdQVWAgfCBHUFUgbmFtZSAocmVxdWlyZWQg" + - "d2l0aG91dCBgLS1pbnB1dC1maWxlYCkgfCBFeGFtcGxlOiBgSDEwMGAgfAp8IGAtLWluc3RhbmNl" + - "LXR5cGUgVFlQRWAgfCBJbnN0YW5jZSB0eXBlIChyZXF1aXJlZCB3aXRob3V0IGAtLWlucHV0LWZp" + - "bGVgKSB8IEV4YW1wbGU6IGBOQ1AuR1BVLkgxMDBfMXhgIHwKfCBgLS1pbWFnZSBJTUFHRWAgfCBD" + - "b250YWluZXIgaW1hZ2UgfCBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgLS1oZWxtLWNoYXJ0YCB8" + - "CnwgYC0taGVsbS1jaGFydCBDSEFSVGAgfCBIZWxtIGNoYXJ0IFVSTCBvciBPQ0kgcmVmZXJlbmNl" + - "IHwgTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYC0taW1hZ2VgIHwKfCBgLS1pbnB1dC1maWxlIEZJ" + - "TEVgIHwgSlNPTiB0YXNrIHNwZWMgZmlsZSB8IENMSSBmbGFncyBvdmVycmlkZSBKU09OIHZhbHVl" + - "cyB3aGVuIGJvdGggYXJlIHNldCB8CnwgYC0tYmFja2VuZCBCQUNLRU5EYCB8IEJhY2tlbmQgLyBD" + - "U1AgfCAtIHwKfCBgLS1jbHVzdGVycyBOQU1FWyxOQU1FXWAgfCBTcGVjaWZpYyBjbHVzdGVycyB3" + - "aXRoaW4gdGhlIGluc3RhbmNlIHwgQ29tbWEtc2VwYXJhdGVkIHwKfCBgLS1jb250YWluZXItYXJn" + - "cyBBUkdTYCB8IEFyZ3MgcGFzc2VkIHdoZW4gbGF1bmNoaW5nIHRoZSBjb250YWluZXIgfCBTaW5n" + - "bGUgc3RyaW5nLCBlLmcuIGAiLS1lcG9jaHMgMTAgLS1iYXRjaC1zaXplIDMyImAgfAp8IGAtLWNv" + - "bnRhaW5lci1lbnYgTkFNRT12YWx1ZWAgfCBDb250YWluZXIgZW52aXJvbm1lbnQgdmFyaWFibGU7" + - "IHJlcGVhdGFibGUgfCAtIHwKfCBgLS1zZWNyZXRzIE5BTUU9dmFsdWVgIHwgU2VjcmV0IGVudmly" + - "b25tZW50IHZhcmlhYmxlOyByZXBlYXRhYmxlOyBlbmNyeXB0ZWQgYXQgcmVzdCB8IC0gfAp8IGAt" + - "LW1heC1ydW50aW1lIERVUkFUSU9OYCB8IE1heCB3YWxsLWNsb2NrIHJ1biB0aW1lIChJU08gODYw" + - "MSwgZS5nLiBgUFQ0SGApIHwgTm8gZGVmYXVsdDsgb21pdCBmb3Igbm8gdGltZSBsaW1pdCB8Cnwg" + - "YC0tbWF4LXF1ZXVlZCBEVVJBVElPTmAgfCBNYXggdGltZSBpbiBxdWV1ZSBiZWZvcmUgY2FuY2Vs" + - "bGF0aW9uIChJU08gODYwMSkgfCBTZXJ2ZXIgZGVmYXVsdCBgUFQ3MkhgIHwKfCBgLS10ZXJtaW5h" + - "dGlvbi1ncmFjZSBEVVJBVElPTmAgfCBHcmFjZSBwZXJpb2QgYWZ0ZXIgc3RvcCBzaWduYWwgKElT" + - "TyA4NjAxKSB8IFNlcnZlciBkZWZhdWx0IGBQVDFIYCB8CnwgYC0tcmVzdWx0LXN0cmF0ZWd5IFVQ" + - "TE9BRFx8Tk9ORWAgfCBIb3cgdG8gaGFuZGxlIHRhc2sgb3V0cHV0IGFydGlmYWN0cyB8IC0gfAp8" + - "IGAtLXJlc3VsdHMtbG9jYXRpb24gTE9DQVRJT05gIHwgUmVzdWx0IHVwbG9hZCB0YXJnZXQsIGZv" + - "cm1hdCBgb3JnLW5hbWUvW3RlYW0tbmFtZS9dbW9kZWwtbmFtZWA7IHJlcXVpcmVkIHdoZW4gYC0t" + - "cmVzdWx0LXN0cmF0ZWd5PVVQTE9BRGAgfCAtIHwKfCBgLS1tb2RlbHMgTkFNRTpWRVJTSU9OOlVS" + - "SWAgfCBNb2RlbCBhcnRpZmFjdDsgcmVwZWF0YWJsZSB8IC0gfAp8IGAtLXJlc291cmNlcyBOQU1F" + - "OlZFUlNJT046VVJJYCB8IFJlc291cmNlIGFydGlmYWN0OyByZXBlYXRhYmxlIHwgLSB8CnwgYC0t" + - "dGFncyBUQUdbLFRBR11gIHwgVGFzayB0YWdzIHwgQ29tbWEtc2VwYXJhdGVkIHwKfCBgLS1kZXNj" + - "cmlwdGlvbiBURVhUYCB8IFRhc2sgZGVzY3JpcHRpb24gfCAtIHwKfCBgLS1sb2dzLXRlbGVtZXRy" + - "eS1pZCBVVUlEYCB8IExvZ3MgdGVsZW1ldHJ5IGVuZHBvaW50IElEIHwgLSB8CnwgYC0tbWV0cmlj" + - "cy10ZWxlbWV0cnktaWQgVVVJRGAgfCBNZXRyaWNzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0g" + - "fAp8IGAtLXRyYWNlcy10ZWxlbWV0cnktaWQgVVVJRGAgfCBUcmFjZXMgdGVsZW1ldHJ5IGVuZHBv" + - "aW50IElEIHwgLSB8ClBLBwiZ0OJQFy4AABcuAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADcA" + - "CQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvdHJvdWJsZXNob290aW5nLm1k" + - "VVQFAAEAps4SIyBUcm91Ymxlc2hvb3RpbmcKCktub3duIGVycm9ycyDihpIgZGlhZ25vc3RpYyBj" + - "b21tYW5kIOKGkiByZW1lZGlhdGlvbi4gS2VlcCBpbiBzeW5jIHdpdGggdGhlIHN0cnVjdHVyZWQg" + - "YHBoYXNlX2ZhaWxlZGAgZXZlbnRzIHRoZSBDTEkgZW1pdHMgKFJFUS0xNSkg4oCUIGV2ZXJ5IGVu" + - "dHJ5IGJlbG93IHNob3VsZCBtYXAgdG8gYW4gYGVyckNhdGVnb3J5YCBhbmQgYSBgcmVtZWRpYXRp" + - "b25gIGFycmF5LgoKIyMgUHJlLWZsaWdodAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlv" + - "biB8CnwtLS18LS0tfC0tLXwKfCBga3ViZWN0bCBub3Qgb24gUEFUSGAgfCBPcGVyYXRvcidzIGAk" + - "UEFUSGAgZG9lc24ndCBpbmNsdWRlIGt1YmVjdGwgfCBJbnN0YWxsIGt1YmVjdGwgMS4yOCs6IGh0" + - "dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL3Rhc2tzL3Rvb2xzL2luc3RhbGwta3ViZWN0bC8gfAp8" + - "IGBoZWxtZmlsZSBub3Qgb24gUEFUSGAgfCBTYW1lIHwgaHR0cHM6Ly9naXRodWIuY29tL2hlbG1m" + - "aWxlL2hlbG1maWxlI2luc3RhbGxhdGlvbiB8CnwgYGhlbG0gbm90IG9uIFBBVEhgIHwgU2FtZSB8" + - "IGh0dHBzOi8vaGVsbS5zaC9kb2NzL2ludHJvL2luc3RhbGwvIHwKfCBgR2F0ZXdheSBBUEkgQ1JE" + - "cyBub3QgaW5zdGFsbGVkYCB8IGVudm95LWdhdGV3YXkgcHJlcmVxIG1pc3NpbmcgfCBgaGVsbSBp" + - "bnN0YWxsIGVnIG9jaTovL2RvY2tlci5pby9lbnZveXByb3h5L2dhdGV3YXktaGVsbSAtLW5hbWVz" + - "cGFjZT1lbnZveS1nYXRld2F5LXN5c3RlbSAtLWNyZWF0ZS1uYW1lc3BhY2VgIHwKfCBgZGVmYXVs" + - "dCBTdG9yYWdlQ2xhc3Mgbm90IGF2YWlsYWJsZWAgfCBDbHVzdGVyIGhhcyBubyBkZWZhdWx0IFND" + - "IHwgQW5ub3RhdGUgb25lOiBga3ViZWN0bCBwYXRjaCBzYyA8bmFtZT4gLXAgJ3sibWV0YWRhdGEi" + - "OnsiYW5ub3RhdGlvbnMiOnsic3RvcmFnZWNsYXNzLmt1YmVybmV0ZXMuaW8vaXMtZGVmYXVsdC1j" + - "bGFzcyI6InRydWUifX19J2AgfAp8IGBHUFUgb3BlcmF0b3Igbm90IGluc3RhbGxlZGAgKGNvbXB1" + - "dGUtcGxhbmUpIHwgbnZpZGlhIEdQVSBvcGVyYXRvciBtaXNzaW5nIHwgSW5zdGFsbCBwZXIgaHR0" + - "cHM6Ly9kb2NzLm52aWRpYS5jb20vZGF0YWNlbnRlci9jbG91ZC1uYXRpdmUvZ3B1LW9wZXJhdG9y" + - "L2xhdGVzdC9pbnN0YWxsLWdwdS1vcGVyYXRvci5odG1sLCBPUiB1c2UgYGZha2UtZ3B1LW9wZXJh" + - "dG9yYCBmb3IgZGV2IHwKfCBgR1BVIG5vZGUgbGFiZWxzIG1pc3NpbmdgIChjb21wdXRlLXBsYW5l" + - "KSB8IE5vZGVzIG5lZWQgYG52aWRpYS5jb20vZ3B1LmZhbWlseWAgZXRjLiB8IFNldCBgLS1rM3Mt" + - "bm9kZS1sYWJlbCBudmlkaWEuY29tL2dwdS5mYW1pbHk9aG9wcGVyQGFnZW50Ok5gIGZvciBrM2Qg" + - "fAoKIyMgQXV0aAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0t" + - "LXwKfCBgYWRtaW4gdG9rZW4gcmVxdWlyZWRgIChpbml0IG5vdCBydW4pIHwgTm8gYH4vLm52Y2Yt" + - "Y2xpLnN0YXRlYCBhbmQgYC0tdG9rZW5gIG5vdCBwYXNzZWQgfCBgbnZjZi1jbGkgaW5pdGAgKGlu" + - "dGVyYWN0aXZlKSBvciBgLS10b2tlbj0kSldUIC0tbm9uLWludGVyYWN0aXZlYCAoQ0kpIHwKfCBg" + - "U2lnbmVkIEpXVCByZWplY3RlZDogQW5vdGhlciBhbGdvcml0aG0gZXhwZWN0ZWQsIG9yIG5vIG1h" + - "dGNoaW5nIGtleShzKSBmb3VuZGAgfCBTdGFsZSBzZXNzaW9uLmpzb24gZnJvbSBhIGRpZmZlcmVu" + - "dCBjb250cm9sIHBsYW5lIHwgYHJtIH4vLm52Y2YtY2xpLnN0YXRlYCB0aGVuIGBudmNmLWNsaSBp" + - "bml0YCBhZ2FpbiB8CnwgYDQwMyBtaXNzaW5nIHJlcXVlc3RlZCBhdXRob3JpdGllc2AgKGZ1bmN0" + - "aW9uIGludm9rZSkgfCBBZG1pbiB0b2tlbiBkb2Vzbid0IGhhdmUgYGludm9rZV9mdW5jdGlvbmAg" + - "c2NvcGUgfCBgbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWRlc2NyaXB0aW9uPeKApmAgdGhl" + - "biByZS1ydW4gaW52b2tlIHwKCiMjIEluc3RhbGwgLyBgdXBgCgp8IFN5bXB0b20gfCBDYXVzZSB8" + - "IFJlbWVkaWF0aW9uIHwKfC0tLXwtLS18LS0tfAp8IEhlbG0gYHRpbWVkIG91dCB3YWl0aW5nIGZv" + - "ciBjYXNzYW5kcmFgIHwgQ2Fzc2FuZHJhIFN0YXRlZnVsU2V0IFBWQyBzdHVjayBgUGVuZGluZ2Ag" + - "fCBDb25maXJtIGRlZmF1bHQgU3RvcmFnZUNsYXNzOyBjaGVjayBga3ViZWN0bCBnZXQgcHYscHZj" + - "IC1uIGNhc3NhbmRyYS1zeXN0ZW1gIHwKfCBgSW52YWxpZCBHUFUgJ05DUC5HUFUuSDEwMCcgc3Bl" + - "Y2lmaWVkYCAoZnVuY3Rpb24gZGVwbG95KSB8IFdyb25nIGZpZWxkIOKAlCBgZ3B1YCBpcyB0aGUg" + - "ZmFtaWx5LCBub3QgdGhlIFNLVSB8IFVzZSBgImdwdSI6ICJIMTAwImAsIGAiaW5zdGFuY2VUeXBl" + - "IjogIk5DUC5HUFUuSDEwMF8xeCJgIHwKfCBgcmVnaW9uIG11c3QgYmUgcHJvdmlkZWRgIChjbHVz" + - "dGVyIHJlZ2lzdGVyIC8gaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmUpIHwgYC0tcmVnaW9uYCBlbXB0" + - "eSArIGBDTFVTVEVSX1JFR0lPTmAgZW52IGVtcHR5IHwgUGFzcyBgLS1yZWdpb249dXMtd2VzdC0x" + - "YCAob3IgYW55IG5vbi1lbXB0eSB2YWx1ZSkgfAp8IGByZXF1aXJlZEVudiAiTkNBX0lEIiBpcyBu" + - "b3Qgc2V0YCAoaGVsbWZpbGUgZXJyb3IgZHVyaW5nIGNvbXB1dGUtcGxhbmUgYXBwbHkpIHwgT2xk" + - "ZXIgbnZjZi1jbGkgYmVmb3JlIGNvbW1pdCBgNmFhNTcwNGA7IEV4dHJhRW52IG5vdCBwcm9wYWdh" + - "dGluZyBOQ0FfSUQgfCBVcGdyYWRlIGBudmNmLWNsaWAgdG8gYSByZWxlYXNlIGFmdGVyIGA2YWE1" + - "NzA0YCB8CnwgYG52Y2Etb3BlcmF0b3I6IEltYWdlUHVsbEJhY2tPZmZgIGZvciBgbnZjYS1vcGVy" + - "YXRvcjpwc2F0YCB8IEltYWdlIG5vdCBpbiBjbHVzdGVyIHJlZ2lzdHJ5OyBtdWx0aS1jbHVzdGVy" + - "IGJ1aWxkIGlzIGxvY2FsIHwgYGszZCBpbWFnZSBpbXBvcnQgbnZjci5pby8uLi4vbnZjYS1vcGVy" + - "YXRvcjpwc2F0IC1jIDxjbHVzdGVyPmAgfAoKIyMgQ29tcHV0ZS1wbGFuZSBydW50aW1lCgp8IFN5" + - "bXB0b20gfCBDYXVzZSB8IFJlbWVkaWF0aW9uIHwKfC0tLXwtLS18LS0tfAp8IE5WQ0EgYWdlbnQg" + - "Q3Jhc2hMb29wQmFja09mZiB3aXRoIGBIVFRQIDQwMWAgb24gYC92MS9udmNhL2NsdXN0ZXJzLy4u" + - "Li9yZWdpc3RlcmAgfCBTdGFsZSBgb3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAg" + - "ZnJvbSBwcmlvciByZWdpc3RlcjsgY2x1c3RlciBJRCBkb2Vzbid0IG1hdGNoIElDTVMgfCBEZWxl" + - "dGUgdGhlIHN0YWxlIGZpbGU7IHJlLXJ1biBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXBgIChpZGVt" + - "cG90ZW50IHJlZ2lzdGVyIHdyaXRlcyBhIGZyZXNoIGZpbGUpIHwKfCBgTm8gY2x1c3RlciBmb3Vu" + - "ZCB3aXRoIHZhbGlkIEpXS1MgZm9yIGNsdXN0ZXIgSUQ6IDxpZD5gIChJQ01TIGxvZykgfCBKV0tT" + - "IGluIElDTVMgZG9lc24ndCBtYXRjaCB3aGF0IGNvbXB1dGUtcGxhbmUgSzhzIGlzIGN1cnJlbnRs" + - "eSBzaWduaW5nIHwgYG52Y2YtY2xpIGNsdXN0ZXIgcm90YXRlIC0tY2x1c3Rlci1pZD08aWQ+YCB8" + - "CnwgRnVuY3Rpb24gcG9kIGBJbWFnZVB1bGxCYWNrT2ZmYCBpbiBgbnZjZi1iYWNrZW5kYCB8IElt" + - "YWdlLWNyZWRlbnRpYWwtaGVscGVyIGNvbmZpZyBtaXNzaW5nIG9yIHdyb25nIHwgYGt1YmVjdGwg" + - "ZGVzY3JpYmUgcG9kIC1uIG52Y2YtYmFja2VuZCA8cG9kPmA7IGNoZWNrIHRoZSBwdWxsIHNlY3Jl" + - "dCBjb25maWcgfAp8IEZ1bmN0aW9uIGRlcGxveSBzdHVjayBgREVQTE9ZSU5HYCBmb3IgPjUgbWlu" + - "IHwgTkFUUyBzdHJlYW0gaW5pdCBsYWcgKGNvbGQtY2x1c3Rlcikg4oCUIHdhaXQsIG9yIGNoZWNr" + - "IE5BVFMgYXV0aC1jYWxsb3V0IGhlYWx0aCB8IGBrdWJlY3RsIGxvZ3MgLW4gbmF0cy1zeXN0ZW0g" + - "LWwgYXBwLmt1YmVybmV0ZXMuaW8vbmFtZT1uYXRzLWF1dGgtY2FsbG91dC1zZXJ2aWNlYCB8Cgoj" + - "IyBUYXNrcwoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwK" + - "fCBgdGFzayBjcmVhdGVgIHJldHVybnMgYE1pc3NpbmcgPFRZUEU+IHJlZ2lzdHJ5IGNyZWRlbnRp" + - "YWwgZm9yIGhvc3RuYW1lYCwgb3Iga2VlcHMgdXNpbmcgYSBwcmV2aW91cyBjcmVkZW50aWFsIHZh" + - "bHVlLCBzaG9ydGx5IGFmdGVyIGByZWdpc3RyeS1jcmVkZW50aWFsIGFkZC91cGRhdGUvZGVsZXRl" + - "YCB3aGlsZSBgcmVnaXN0cnktY3JlZGVudGlhbCBsaXN0YC9gZ2V0YCBhbHJlYWR5IHNob3cgdGhl" + - "IG5ldyB2YWx1ZSB8IEV4cGVjdGVkIHByb3BhZ2F0aW9uIGRlbGF5OiBOVkNUIGNhY2hlcyB0aGUg" + - "YWNjb3VudCdzIHJlZ2lzdHJ5IGNyZWRlbnRpYWxzIHdpdGggYG52Y3QubnZjZi5jYWNoZS10dGxg" + - "IChkZWZhdWx0IGBQVDVNYCwgYWJvdXQgNSBtaW4pIGFuZCBhcHBsaWVzIHRoZSBjaGFuZ2Ugd2hl" + - "biB0aGF0IGNhY2hlZCBjb3B5IHJlZnJlc2hlcyB8IFdhaXQgdXAgdG8gYWJvdXQgNSBtaW4gYW5k" + - "IHJldHJ5LCBvciBga3ViZWN0bCAtbiBudmNmIHJvbGxvdXQgcmVzdGFydCBkZXBsb3ltZW50L252" + - "Y3QtYXBpYCB0byBhcHBseSBpbW1lZGlhdGVseSB8ClBLBwjzrhOEdBEAAHQRAABQSwMEFAAIAAAA" + - "AAAhAAAAAAAAAAAAAAAAACwACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9T" + - "S0lMTC5tZFVUBQABAKbOEi0tLQpuYW1lOiBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24K" + - "ZGVzY3JpcHRpb246ID4tCiAgSW5zdGFsbCBhbmQgb3BlcmF0ZSBOVkNGIHNlbGYtaG9zdGVkIGNv" + - "bnRyb2wtcGxhbmUgYW5kIHNlcGFyYXRlIGNvbXB1dGUtcGxhbmUKICBzdGFja3MuIENvdmVycyBI" + - "ZWxtZmlsZSB2YWx1ZXMgYW5kIENMSSBwcm9maWxlIGluc3RhbGxhdGlvbiBmbG93cywgdGVhcmRv" + - "d24sCiAgdmFsdWVzIG92ZXJyaWRlcywgcHVsbCBzZWNyZXRzLCBhbmQgdHJvdWJsZXNob290aW5n" + - "LiBVc2UgZm9yCiAgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2ssIG52Y2YtY29tcHV0ZS1wbGFuZS1z" + - "dGFjaywgc3BsaXQgY29tcHV0ZS1wbGFuZQogIGluc3RhbGxhdGlvbiwgY29udHJvbC1wbGFuZSBp" + - "bnN0YWxsYXRpb24sIENMSS1nZW5lcmF0ZWQgY29udHJvbC1wbGFuZQogIHByb2ZpbGVzLCBIZWxt" + - "ZmlsZSwgc2VsZi1tYW5hZ2VkLCBvciBzZWxmLWhvc3RlZCBkZXBsb3ltZW50cy4gRG8gTk9UIHVz" + - "ZSBmb3IKICBsb2NhbCBrM2QgZW52aXJvbm1lbnRzOyB1c2UgdGhlIGxvY2FsIGszZCBkZXZlbG9w" + - "bWVudCB3b3JrZmxvdyBpbnN0ZWFkLgpsaWNlbnNlOiBBcGFjaGUtMi4wCmNvbXBhdGliaWxpdHk6" + - "IFJlcXVpcmVzIGhlbG1maWxlID49IDEuMS4wIDwgMS4yLjAsIGhlbG0gPj0gMy4xMiwgaGVsbS1k" + - "aWZmIHBsdWdpbiwga3ViZWN0bCBtYXRjaGluZyBjbHVzdGVyIHZlcnNpb24KYXV0aG9yOiAibnZj" + - "Zi1jb3JlLWVuZyA8bnZjZi1jb3JlLWVuZ0BleGNoYW5nZS5udmlkaWEuY29tPiIKdmVyc2lvbjog" + - "IjEuMC4wIgp0YWdzOiBbbnZjZiwgc2VsZi1tYW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQs" + - "IGNvbnRyb2wtcGxhbmUsIGNvbXB1dGUtcGxhbmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24s" + - "IGRlcGxveW1lbnQsIHB1bGwtc2VjcmV0c10KdG9vbHM6IFtTaGVsbCwgUmVhZCwgRWRpdCwgR3Jl" + - "cCwgR2xvYl0KbWV0YWRhdGE6CiAgaW50ZXJuYWw6IGZhbHNlCiAgYXV0aG9yOiAibnZjZi1jb3Jl" + - "LWVuZyA8bnZjZi1jb3JlLWVuZ0BleGNoYW5nZS5udmlkaWEuY29tPiIKICB2ZXJzaW9uOiAiMS4w" + - "IgogIHRhZ3M6IFtudmNmLCBzZWxmLW1hbmFnZWQsIGhlbG1maWxlLCBzZWxmLWhvc3RlZCwgY29u" + - "dHJvbC1wbGFuZSwgY29tcHV0ZS1wbGFuZSwgY2xpLXByb2ZpbGUsIGluc3RhbGxhdGlvbiwgZGVw" + - "bG95bWVudCwgcHVsbC1zZWNyZXRzXQogIGxhbmd1YWdlczogW2Jhc2gsIHlhbWxdCiAgZnJhbWV3" + - "b3JrczogW2hlbG1maWxlLCBoZWxtLCBrdWJlY3RsXQogIGRvbWFpbjogY2xvdWQtaW5mcmFzdHJ1" + - "Y3R1cmUKLS0tCgojIE5WQ0YgU2VsZi1NYW5hZ2VkIFN0YWNrIE9wZXJhdGlvbnMKCk9wZXJhdGlv" + - "bmFsIGd1aWRlIGZvciBtYXRjaGluZyBOVkNGIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxh" + - "bmUgSGVsbWZpbGUgYnVuZGxlcy4KCiMjIEluc3RydWN0aW9ucwoKVXNlIHRoaXMgc2tpbGwgZm9y" + - "IGluc3RhbGwsIHVwZ3JhZGUsIG9yIHRlYXJkb3duIHdvcmsgaW4gbWF0Y2hpbmcgYG52Y2Ytc2Vs" + - "Zi1tYW5hZ2VkLXN0YWNrYCBhbmQgYG52Y2YtY29tcHV0ZS1wbGFuZS1zdGFja2AgYnVuZGxlczsg" + - "a2VlcCBIZWxtZmlsZSB2YWx1ZXMgYW5kIENMSSBwcm9maWxlIGhhbmRvZmZzIHNlcGFyYXRlLiBG" + - "b3IgYGZ1bmN0aW9uVHlwZTogIkxMTSJgLCByZWFkIFtMTE0gRnVuY3Rpb24gRW5hYmxlbWVudF0o" + - "cmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWQjbGxtLWZ1bmN0aW9uLWVuYWJsZW1lbnQp" + - "LgoKIyMgUHJlcmVxdWlzaXRlcwoKQXNrIGZvciB0aGUgZXh0cmFjdGVkIGBudmNmLXNlbGYtbWFu" + - "YWdlZC1zdGFja2AgcGF0aC4gRm9yIHNwbGl0IGluc3RhbGxhdGlvbiwKYWxzbyByZXF1aXJlIHRo" + - "ZSBtYXRjaGluZy12ZXJzaW9uIGBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIHBhdGguIFZlcmlm" + - "eSBib3RoOgoKYGBgYmFzaApscyA8Y29udHJvbC1wbGFuZS1zdGFjaz4vaGVsbWZpbGUuZC8gPGNv" + - "bnRyb2wtcGxhbmUtc3RhY2s+L2Vudmlyb25tZW50cy8gPGNvbnRyb2wtcGxhbmUtc3RhY2s+L3Nl" + - "Y3JldHMvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9nbG9iYWwueWFtbC5nb3RtcGwKbHMgPGNvbXB1" + - "dGUtcGxhbmUtc3RhY2s+L2hlbG1maWxlLmQvIDxjb21wdXRlLXBsYW5lLXN0YWNrPi9lbnZpcm9u" + - "bWVudHMvIDxjb21wdXRlLXBsYW5lLXN0YWNrPi9nbG9iYWwueWFtbC5nb3RtcGwKYGBgCgpJZiBl" + - "aXRoZXIgZGlyZWN0b3J5IGlzIG1pc3NpbmcsIGRvd25sb2FkIG1hdGNoaW5nIGJ1bmRsZSB2ZXJz" + - "aW9ucyBmcm9tIE5HQzoKCmBgYGJhc2gKbmdjIHJlZ2lzdHJ5IHJlc291cmNlIGRvd25sb2FkLXZl" + - "cnNpb24gPG9yZz4vbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2s6PHZlcnNpb24+Cm5nYyByZWdpc3Ry" + - "eSByZXNvdXJjZSBkb3dubG9hZC12ZXJzaW9uIDxvcmc+L252Y2YtY29tcHV0ZS1wbGFuZS1zdGFj" + - "azo8dmVyc2lvbj4KYGBgCgpDb250cm9sLXBsYW5lIGNvbW1hbmRzIGJlbG93IGFzc3VtZSB0aGUg" + - "Y29udHJvbC1wbGFuZSBidW5kbGUgcm9vdC4gU3BsaXQtZmxvdwpjb21tYW5kcyBhbmQgcm9vdCBz" + - "dWJzdGl0dXRpb24gYXJlIGluCltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVm" + - "ZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkuCgojIyBCZWZvcmUgWW91IFN0" + - "YXJ0CgpWZXJpZnkgdG9vbGluZyBhbmQgY29udGV4dCBiZWZvcmUgYW55IG9wZXJhdGlvbjoKCmBg" + - "YGJhc2gKaGVsbWZpbGUgLS12ZXJzaW9uICAgIyBNdXN0IGJlIDEuMS54ICgxLjIuMCByZW1vdmVk" + - "IHNlcXVlbnRpYWwgbW9kZSkKaGVsbSB2ZXJzaW9uICAgICAgICAgIyBNdXN0IGJlID49IDMuMTIK" + - "aGVsbSBwbHVnaW4gbGlzdCAgICAgIyBNdXN0IGluY2x1ZGUgaGVsbS1kaWZmID49IDMuMTEKa3Vi" + - "ZWN0bCB2ZXJzaW9uICAgICAgIyBDbGllbnQgbXVzdCBiZSB3aXRoaW4gMSBtaW5vciB2ZXJzaW9u" + - "IG9mIGNsdXN0ZXIKYGBgCgpDb250cm9sLXBsYW5lIGNvbW1hbmRzIHJ1biBmcm9tIHRoZSBleHRy" + - "YWN0ZWQgYG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrL2Agcm9vdDoKCmBgYGJhc2gKY2QgcGF0aC90" + - "by9udmNmLXNlbGYtbWFuYWdlZC1zdGFjawpscyBoZWxtZmlsZS5kLyBlbnZpcm9ubWVudHMvIHNl" + - "Y3JldHMvIGdsb2JhbC55YW1sLmdvdG1wbApgYGAKCklkZW50aWZ5IHRoZSBlbnZpcm9ubWVudCBm" + - "cm9tIGBlbnZpcm9ubWVudHMvPG5hbWU+LnlhbWxgIGFuZApgc2VjcmV0cy88bmFtZT4tc2VjcmV0" + - "cy55YW1sYDsgZm9yIEVLUywgdXNlIHRoZSBjYW5vbmljYWwKW0NTUCBFbmQtdG8tRW5kIEV4YW1w" + - "bGVdKGh0dHBzOi8vZG9jcy5udmlkaWEuY29tL252Y2YvdjAuNi4wLXJjL2NzcC1lbmQtdG8tZW5k" + - "LWV4YW1wbGUpLgoKIyMgSG93IFZhbHVlcyBGbG93CgpVbmRlcnN0YW5kaW5nIHZhbHVlIHByZWNl" + - "ZGVuY2UgcHJldmVudHMgdGhlIG1vc3QgY29tbW9uIGNvbmZpZ3VyYXRpb24gbWlzdGFrZXMuCgpg" + - "YGB0ZXh0CmVudmlyb25tZW50cy9iYXNlLnlhbWwgICAgICAgICAgKGRlZmF1bHRzKQogICAgLT4g" + - "bWVyZ2VkIHdpdGgKZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwgICAgICAgICAoeW91ciBvdmVycmlk" + - "ZXMpCiAgICAtPiBjb25zdW1lZCBieQpnbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgIChH" + - "byB0ZW1wbGF0ZSwgY29uc3RydWN0cyBwZXItY2hhcnQgdmFsdWVzKQogICAgLT4gY29uc3VtZWQg" + - "YnkKc2VjcmV0cy88ZW52Pi1zZWNyZXRzLnlhbWwgICAgICAoc2Vuc2l0aXZlIHZhbHVlcykKICAg" + - "IC0+IG92ZXJyaWRkZW4gYnkKcmVsZWFzZSBpbmxpbmUgdmFsdWVzOiBibG9ja3MgICAoaGlnaGVz" + - "dCBwcmVjZWRlbmNlKQpgYGAKCkNyaXRpY2FsOiBgZ2xvYmFsLnlhbWwuZ290bXBsYCBvbmx5IHBh" + - "c3NlcyB0aHJvdWdoIHNwZWNpZmljIGtleXMgdG8gZWFjaCBjaGFydCAoaW1hZ2UgcmVnaXN0cmll" + - "cywgbm9kZSBzZWxlY3RvcnMsIHN0b3JhZ2UsIHJlcGxpY2EgY291bnRzKS4gU2V0dGluZyBhbiBh" + - "cmJpdHJhcnkgY2hhcnQgdmFsdWUgaW4gdGhlIGVudmlyb25tZW50IGZpbGUgd2lsbCBiZSBzaWxl" + - "bnRseSBpZ25vcmVkIGlmIGBnbG9iYWwueWFtbC5nb3RtcGxgIGRvZXMgbm90IHByb3BhZ2F0ZSBp" + - "dC4KClRvIG92ZXJyaWRlIGFyYml0cmFyeSBjaGFydCB2YWx1ZXMsIHVzZSBhIGhlbG1maWxlIHJl" + - "bGVhc2UgYHZhbHVlczpgIGJsb2NrLiBTZWUgW092ZXJyaWRpbmcgSGVsbSBDaGFydCBWYWx1ZXNd" + - "KCNvdmVycmlkaW5nLWhlbG0tY2hhcnQtdmFsdWVzKS4KCiMjIENsZWFuIEluc3RhbGxhdGlvbgoK" + - "IyMjIDEuIENyZWF0ZSBuYW1lc3BhY2VzIGFuZCBpbWFnZSBwdWxsIHNlY3JldHMgKGlmIHVzaW5n" + - "IGEgcHJpdmF0ZSByZWdpc3RyeSkKCmBgYGJhc2gKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0g" + - "bmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFn" + - "ZXI7IGRvCiAga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlICIkbnMiIC0tZHJ5LXJ1bj1jbGllbnQg" + - "LW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpkb25lCgojIE9ubHkgaWYgcHVsbGluZyBmcm9t" + - "IGEgcHJpdmF0ZSByZWdpc3RyeSAoZS5nLiwgTkdDIG52Y3IuaW8pCmV4cG9ydCBOR0NfQVBJX0tF" + - "WT0iPHlvdXIta2V5PiIKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZj" + - "ZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0" + - "bCBjcmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2Vy" + - "LXNlcnZlcj1udmNyLmlvIFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAog" + - "ICAgLS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRu" + - "cyIgXAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCmRv" + - "bmUKYGBgCgpJZiB1c2luZyBwdWxsIHNlY3JldHMsIHlvdSBtdXN0IGFsc28gY29uZmlndXJlIGVh" + - "Y2ggaGVsbWZpbGUgcmVsZWFzZSB0byByZWZlcmVuY2UgdGhlbS4gU2VlIFtJbWFnZSBQdWxsIFNl" + - "Y3JldHNdKCNpbWFnZS1wdWxsLXNlY3JldHMpLgoKIyMjIDIuIEF1dGhlbnRpY2F0ZSBoZWxtIHRv" + - "IHlvdXIgY2hhcnQgcmVnaXN0cnkKCkJvdGggYGRvY2tlciBsb2dpbmAgQU5EIGBoZWxtIHJlZ2lz" + - "dHJ5IGxvZ2luYCBhcmUgcmVxdWlyZWQgZm9yIE5HQy4gSGVsbWZpbGUgdXNlcyBoZWxtIChub3Qg" + - "ZG9ja2VyKSB0byBwdWxsIE9DSSBjaGFydHMsIHNvIHRoZSBoZWxtIGNyZWRlbnRpYWwgc3RvcmUg" + - "bXVzdCBiZSBhdXRoZW50aWNhdGVkIHNlcGFyYXRlbHkuCgpgYGBiYXNoCiMgTkdDIC0tIGJvdGgg" + - "Y29tbWFuZHMgYXJlIHJlcXVpcmVkCmRvY2tlciBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tl" + - "bicgLXAgIiROR0NfQVBJX0tFWSIKaGVsbSByZWdpc3RyeSBsb2dpbiBudmNyLmlvIC11ICckb2F1" + - "dGh0b2tlbicgLXAgIiROR0NfQVBJX0tFWSIKCiMgRUNSCmF3cyBlY3IgZ2V0LWxvZ2luLXBhc3N3" + - "b3JkIC0tcmVnaW9uIDxyZWdpb24+IHwgXAogIGhlbG0gcmVnaXN0cnkgbG9naW4gLS11c2VybmFt" + - "ZSBBV1MgLS1wYXNzd29yZC1zdGRpbiA8YWNjb3VudD4uZGtyLmVjci48cmVnaW9uPi5hbWF6b25h" + - "d3MuY29tCmBgYAoKPiBOb3RlOiBgaGVsbSByZWdpc3RyeSBsb2dpbmAga2VlcHMgb25seSB0aGUg" + - "bGFzdCBsb2dpbiBwZXIgaG9zdCAobXVsdGktb3JnIGdvdGNoYSkuCj4gVGhlIHN0YWNrIGFuZCB0" + - "aGUgY2FjaGVzIHNwYW4gc2V2ZXJhbCBOR0Mgb3JncyB0aGF0IG5lZWQgZGlmZmVyZW50IGtleXMs" + - "IGJ1dCB0aGV5IGFsbAo+IGxpdmUgdW5kZXIgdGhlIG9uZSBob3N0IGBudmNyLmlvYC4gQSBzZWNv" + - "bmQgYGhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pb2AgKG9yCj4gYGRvY2tlciBsb2dpbmApIHdp" + - "dGggYSBkaWZmZXJlbnQga2V5IHNpbGVudGx5IG92ZXJ3cml0ZXMgdGhlIGZpcnN0LCBzbyBwdWxs" + - "cyBmb3IgdGhlCj4gZmlyc3Qgb3JnIHRoZW4gZmFpbCB3aXRoIGEgbWlzbGVhZGluZyBgNDAzIEFj" + - "Y2VzcyBEZW5pZWRgIChub3QgYSA0MDE6IHRoZSBhdXRoCj4gc3VjY2VlZGVkLCBpdCdzIHRoZSB3" + - "cm9uZy1vcmcga2V5KS4gSWYgeW91IHB1bGwgY2hhcnRzL2ltYWdlcyBmcm9tIG1vcmUgdGhhbiBv" + - "bmUgb3JnLAo+IGVpdGhlciByZS1ydW4gdGhlIGxvZ2luIHdpdGggdGhlIGNvcnJlY3Qga2V5IGlt" + - "bWVkaWF0ZWx5IGJlZm9yZSBlYWNoIHB1bGwsIG9yIHBhc3MKPiBgLS11c2VybmFtZSAnJG9hdXRo" + - "dG9rZW4nIC0tcGFzc3dvcmQgPGtleT5gIHBlciBgaGVsbSBwdWxsYCBpbnZvY2F0aW9uIGluc3Rl" + - "YWQgb2YgcmVseWluZwo+IG9uIHRoZSBzdG9yZWQgbG9naW4uIChQdWxsaW5nIGV2ZXJ5dGhpbmcg" + - "ZnJvbSBhIHNpbmdsZSByZWdpc3RyeSBtaXJyb3IgYXZvaWRzIHRoaXMKPiBlbnRpcmVseS4pCgoj" + - "IyMgMmIuIChSZWNvbW1lbmRlZCkgUHVsbCBmcm9tIGEgcmVnaXN0cnkgdGhlIGNsdXN0ZXIgYXV0" + - "aGVudGljYXRlcyB0byBhdXRvbWF0aWNhbGx5CgpJZiB5b3UgbWlycm9yIHRoZSBOVkNGIGltYWdl" + - "cyBpbnRvIGEgcmVnaXN0cnkgdGhhdCB0aGUgY2x1c3RlciBjYW4gcHVsbCBmcm9tIHdpdGhvdXQg" + - "YW4KZXhwbGljaXQgaW1hZ2UgcHVsbCBzZWNyZXQgKGZvciBleGFtcGxlLCBhIHJlZ2lzdHJ5IHdo" + - "ZXJlIHRoZSBub2RlIG9yIHdvcmtsb2FkIGlkZW50aXR5IGlzCmdyYW50ZWQgcHVsbCBhY2Nlc3Mg" + - "YXV0b21hdGljYWxseSksIHBvaW50IHRoZSBzdGFjayBhdCBpdCBhbmQgc2tpcCB0aGUgY3JlZGVu" + - "dGlhbCBzdGVwcwphYm92ZS4KCjEuIFBvaW50IHRoZSBzdGFjayBhdCB0aGUgbWlycm9yIGluIGBl" + - "bnZpcm9ubWVudHMvPGVudj4ueWFtbGA6CgogICBgYGB5YW1sCiAgIGdsb2JhbDoKICAgICBpbWFn" + - "ZToKICAgICAgIHJlZ2lzdHJ5OiA8eW91ci1yZWdpc3RyeT4gICAgICAgICAgICAjIGUuZy4gcmVn" + - "aXN0cnkuZXhhbXBsZS5jb20KICAgICAgIHJlcG9zaXRvcnk6IDxtaXJyb3Itc3ViLXBhdGg+CiAg" + - "ICAgaGVsbToKICAgICAgIHNvdXJjZXM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBv" + - "bmx5IGlmIHlvdSBhbHNvIG1pcnJvcmVkIHRoZSBoZWxtIGNoYXJ0cwogICAgICAgICByZWdpc3Ry" + - "eTogPHlvdXItcmVnaXN0cnk+CiAgICAgICAgIHJlcG9zaXRvcnk6IDxtaXJyb3Itc3ViLXBhdGg+" + - "CiAgIGBgYAoKICAgPiBUaGUgbWFuaWZlc3QgaGFzIGEgbWl4IG9mIE9DSSBhbmQgbm9uLU9DSSBh" + - "cnRpZmFjdHMsIHNvIGNvbnZlcnQgbm9uLU9DSSBjaGFydHMgYmVmb3JlCiAgID4gbWlycm9yaW5n" + - "LiBDb250YWluZXIgaW1hZ2VzIChgbnZjci5pby8uLi5gKSBhcmUgYWxyZWFkeSBPQ0kgYW5kIG1p" + - "cnJvciBhcy1pcy4gU29tZSBIZWxtCiAgID4gY2hhcnRzLCB0aG91Z2gsIGFyZSBwdWJsaXNoZWQg" + - "dG8gYW4gYGh0dHBzOi8vYCBIZWxtIHJlcG9zaXRvcnkgKGZvciBleGFtcGxlCiAgID4gYGhlbG0u" + - "bmdjLm52aWRpYS5jb21gKS4gVGhvc2UgYXJlIG5vdCBPQ0kgYW5kIGNhbm5vdCBiZSByZXNvbHZl" + - "ZCBieSBgZ2xvYmFsLmhlbG0uc291cmNlc2AKICAgPiAoT0NJKSBvciBtaXJyb3JlZCBkaXJlY3Rs" + - "eS4gQmVmb3JlIHBvaW50aW5nIHRoZSBzdGFjayBhdCB5b3VyIG1pcnJvciwgY29udmVydCBlYWNo" + - "CiAgID4gYGh0dHBzOi8vYCBjaGFydCB0byBPQ0k6IGBoZWxtIHJlcG8gYWRkYC9gaGVsbSBwdWxs" + - "YCB0aGUgYC50Z3pgLCB0aGVuCiAgID4gYGhlbG0gcHVzaCA8Y2hhcnQ+LnRneiBvY2k6Ly88eW91" + - "ci1yZWdpc3RyeT4vPG1pcnJvci1zdWItcGF0aD5gLiBPbmx5IE9DSSBjaGFydHMgY2FuIGxpdmUK" + - "ICAgPiB1bmRlciBgZ2xvYmFsLmhlbG0uc291cmNlc2AuCgoyLiBTa2lwIHRoZSBjcmVkZW50aWFs" + - "IHN0ZXBzIGFib3ZlLiBXaGVuIHRoZSBjbHVzdGVyIGF1dGhlbnRpY2F0ZXMgdG8gdGhlIHJlZ2lz" + - "dHJ5CiAgIGF1dG9tYXRpY2FsbHkgKHRoZSBub2RlIG9yIHdvcmtsb2FkIGlkZW50aXR5IGhhcyBw" + - "dWxsIGFjY2VzcyksIHRoZSBwdWxsIG5lZWRzIG5vCiAgIEt1YmVybmV0ZXMgc2VjcmV0LCBzbyB5" + - "b3UgZG8gbm90IG5lZWQ6IHRoZSBwZXItbmFtZXNwYWNlIGBudmNyLWNyZWRzYCBmcm9tIHN0ZXAg" + - "MQogICAoc3RpbGwgY3JlYXRlIHRoZSBuYW1lc3BhY2VzLCBqdXN0IG5vdCB0aGUgc2VjcmV0KSwg" + - "dGhlIGBnbG9iYWwuaW1hZ2VQdWxsU2VjcmV0c2AgZW50cnksCiAgIG9yIHRoZSBgZG9ja2VyIGxv" + - "Z2luYC9gaGVsbSByZWdpc3RyeSBsb2dpbiBudmNyLmlvYCBmcm9tIHN0ZXAgMi4KCiAgID4gT25l" + - "IHJlc2lkdWFsIGNyZWRlbnRpYWw6IG52Y2YtYXBpIHN0aWxsIHZhbGlkYXRlcyB0aGUgdXNlciBm" + - "dW5jdGlvbiBpbWFnZSBhdAogICA+IGBmdW5jdGlvbiBjcmVhdGVgIHZpYSB0aGUgYWNjb3VudCBy" + - "ZWdpc3RyeSBjcmVkZW50aWFsLCBzbyB0aGF0IGNyZWRlbnRpYWwgbXVzdCBwb2ludCBhdAogICA+" + - "IHdoaWNoZXZlciByZWdpc3RyeSBob2xkcyB0aGUgdXNlciBpbWFnZSAoc2V0IGl0IHRvIHlvdXIg" + - "bWlycm9yIGlmIHRoZSBpbWFnZSBpcyBtaXJyb3JlZAogICA+IHRoZXJlKS4KCiMjIyAzLiBTZXQg" + - "dGhlIHJvdXRlIGRvbWFpbgoKYGdsb2JhbC5kb21haW5gIHNldHMgdGhlIGhvc3RuYW1lIHN1ZmZp" + - "eCBmb3Igcm91dGVzIHN1Y2ggYXMgYGFwaS48ZG9tYWluPmAuIEl0IGRvZXMgbm90IGNvbmZpZ3Vy" + - "ZSB0aGUgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxhbmNlci4gUXVlcnkgdGhlIGV4YWN0IGV4aXN0" + - "aW5nIEdhdGV3YXk6CgpgYGBiYXNoCkdBVEVXQVlfQUREUkVTUz0kKGt1YmVjdGwgZ2V0IGdhdGV3" + - "YXkgPGdhdGV3YXktbmFtZT4gLW4gPGdhdGV3YXktbmFtZXNwYWNlPiAtbyBqc29ucGF0aD0ney5z" + - "dGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScpCnRlc3QgLW4gIiRHQVRFV0FZX0FERFJFU1MiCmBg" + - "YAoKVGhlIGFkZHJlc3MgbWF5IGJlIGEgaG9zdG5hbWUgb3IgSVAuIENsb3VkIHByb3ZpZGVyIGFu" + - "ZCBHYXRld2F5IGNvbmZpZ3VyYXRpb24gZGV0ZXJtaW5lIHRoZSBsb2FkIGJhbGFuY2VyIHR5cGUg" + - "YW5kIGFkZHJlc3MgZm9ybWF0LiBUaGUgc2VsZi1tYW5hZ2VkIHN0YWNrIGRvZXMgbm90IHNlbGVj" + - "dCBlaXRoZXIuCgpGb3IgdGVtcG9yYXJ5IHRlc3Rpbmcgd2l0aG91dCBETlMsIHVzZSBhIHN0YWJs" + - "ZSByZXNlcnZlZCBzdWZmaXggc3VjaCBhcyBgZ2xvYmFsLmRvbWFpbjogIm52Y2YudGVzdCJgLCBj" + - "b25uZWN0IHRvIGBHQVRFV0FZX0FERFJFU1NgLCBhbmQgc2VuZCBgSG9zdDogYXBpLm52Y2YudGVz" + - "dGAuIEZvciBwcm9kdWN0aW9uLCB1c2UgeW91ciBiYXNlIEROUyBkb21haW4gYW5kIHBvaW50IGl0" + - "cyByb3V0ZSByZWNvcmRzIHRvIGBHQVRFV0FZX0FERFJFU1NgLiBJZiB0aGUgZW5kcG9pbnQgbGF0" + - "ZXIgY2hhbmdlcywga2VlcCBgZ2xvYmFsLmRvbWFpbmAgc3RhYmxlIGFuZCB1cGRhdGUgb25seSBE" + - "TlMgb3IgdGhlIGNsaWVudCBkZXN0aW5hdGlvbi4gU2VlIEV4YW1wbGUgNCBpbiBbZXhhbXBsZXMu" + - "bWRdKGV4YW1wbGVzLm1kKS4KCiMjIyA0LiBQcmV2aWV3IGFuZCBkZXBsb3kKCmBgYGJhc2gKSEVM" + - "TUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgdGVtcGxhdGUgICAjIFByZXZpZXcgcmVuZGVy" + - "ZWQgbWFuaWZlc3RzCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIHN5bmMgICAgICAg" + - "IyBEZXBsb3kKYGBgCgo+IFNldCBCT1RIIENhc3NhbmRyYSBwYXNzd29yZHMgaW4gdGhlIHNlY3Jl" + - "dHMgZmlsZS4gVGhlIHNlY3JldHMgZmlsZSBkb2N1bWVudHMKPiBgREVGQVVMVF9DQVNTQU5EUkFf" + - "UEFTU1dPUkRgLCBidXQgdGhlIGNhc3NhbmRyYSBjaGFydCBoYXMgYSBzZWNvbmQgY3JlZGVudGlh" + - "bCwKPiBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgLCB0aGF0IGRlZmF1bHRzIHRvIGBj" + - "aEBuZzNtM2AuIElmIHlvdSBzZXQgb25seQo+IGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAs" + - "IHRoZSBzZXJ2aWNlIHJvbGUga2VlcHMgdGhhdCBkZWZhdWx0IGFuZCBldmVyeSBEQi1iYWNrZWQK" + - "PiBzZXJ2aWNlIGNyYXNoLWxvb3BzIHdpdGggYEJhZCBjcmVkZW50aWFsc2Agb25jZSBpdCB0cmll" + - "cyB0byBhdXRoZW50aWNhdGUuIFNldAo+IGBjYXNzYW5kcmEuc2VydmljZVJvbGVQYXNzd29yZGAg" + - "dG8gdGhlIHNhbWUgdmFsdWUgYXMgYERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYC4KCiMjIyA1" + - "LiBEZXBsb3ltZW50IHBoYXNlcwoKSGVsbWZpbGUgZGVwbG95cyBpbiBvcmRlciB3aXRoIGRlcGVu" + - "ZGVuY2llczoKCnwgUGhhc2UgfCBTZWxlY3RvciB8IFNlcnZpY2VzIHwgV2FpdCB0aW1lIHwKfC0t" + - "LS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS0tfAp8IDEgfCBgcmVsZWFzZS1n" + - "cm91cD1kZXBlbmRlbmNpZXNgIHwgTkFUUywgT3BlbkJhbywgQ2Fzc2FuZHJhIHwgNS0xMCBtaW4g" + - "fAp8IDIgfCBgcmVsZWFzZS1ncm91cD1zZXJ2aWNlc2AgfCBBUEksIFNJUywgRVNTLCBpbnZvY2F0" + - "aW9uLCBncnBjLXByb3h5LCBub3RhcnksIGFwaS1rZXlzLCBvcHRpb25hbCBMTE0gZ2F0ZXdheS9y" + - "b3V0ZXIsIG9wdGlvbmFsIFZhbml0eSBHYXRld2F5LCBOVkNGIFVJIHdoZW4gdGhlIHN0YWNrIHBh" + - "Y2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uIHwgNS0xMCBtaW4gfAp8IDMgfCBgcmVsZWFzZS1ncm91" + - "cD1pbmdyZXNzYCB8IEdhdGV3YXkgcm91dGVzIHwgMS0yIG1pbiB8CnwgNCB8IGByZWxlYXNlLWdy" + - "b3VwPW9ic2VydmFiaWxpdHlgIHwgT2JzZXJ2YWJpbGl0eSBzdGFjayAoaWYgZW5hYmxlZCkgfCAx" + - "LTIgbWluIHwKCk1vbml0b3IgaW4gYSBzZXBhcmF0ZSB0ZXJtaW5hbDoKCmBgYGJhc2gKa3ViZWN0" + - "bCBnZXQgcG9kcyAtQSAtdwpgYGAKCiMjIyA2LiBFbmFibGUgVmFuaXR5IEdhdGV3YXkgKG9wdGlv" + - "bmFsKQoKVmFuaXR5IEdhdGV3YXkgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBhbmQgaXMgb25seSBu" + - "ZWVkZWQgZm9yIGN1c3RvbWVyLWZhY2luZwpob3N0bmFtZXMgb3IgcGF0aCBtYXBwaW5ncyBpbiBm" + - "cm9udCBvZiB0aGUgc3RhbmRhcmQgTlZDRiBBUEkgYW5kIGludm9jYXRpb24Kcm91dGVzLiBJdCBp" + - "cyBhdmFpbGFibGUgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhlIFZhbml0" + - "eSBHYXRld2F5CmFkZG9uLiBJZiB0aGUgZXh0cmFjdGVkIHN0YWNrIHBhY2thZ2UgZG9lcyBub3Qg" + - "Y29udGFpbiBhIGB2YW5pdHktZ2F0ZXdheWAKcmVsZWFzZSBhbmQgYHZhbml0eUdhdGV3YXlgIHJv" + - "dXRlIHZhbHVlcywgc2tpcCB0aGVzZSBjb21tYW5kcyBhbmQgdXNlIGEgbmV3ZXIKc3RhY2sgcGFj" + - "a2FnZSB0aGF0IGluY2x1ZGVzIHRoZW0uCgpJZiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0" + - "aGUgYWRkb24sIGVuYWJsZSBpdCBpbgpgZW52aXJvbm1lbnRzLzxlbnYtbmFtZT4ueWFtbGA6Cgpg" + - "YGB5YW1sCmFkZG9uczoKICB2YW5pdHlHYXRld2F5OgogICAgZW5hYmxlZDogdHJ1ZQogICAgbWFw" + - "cGluZ0NvbmZpZzoge30KYGBgCgpUaGUgZGVmYXVsdCByb3V0ZSBob3N0IGlzIGB2YW5pdHkuPGRv" + - "bWFpbj5gIGFuZCB0aGUgYmFja2VuZCBpcwpgdmFuaXR5LWdhdGV3YXkubnZjZjo4MDgwYC4gUHV0" + - "IGRlcGxveW1lbnQtc3BlY2lmaWMgaG9zdCBhbmQgcGF0aCBtYXBwaW5ncyB1bmRlcgpgYWRkb25z" + - "LnZhbml0eUdhdGV3YXkubWFwcGluZ0NvbmZpZ2AuIElmIHlvdSBuZWVkIGN1c3RvbSB2YW5pdHkg" + - "aG9zdHMgaW5zdGVhZCBvZgpgdmFuaXR5Ljxkb21haW4+YCwgdXNlIHRoZSByb3V0ZSBob3N0bmFt" + - "ZSBvdmVycmlkZXMgc3VwcG9ydGVkIGJ5IHRoZSBzdGFjawpwYWNrYWdlIGFuZCBjcmVhdGUgbWF0" + - "Y2hpbmcgRE5TIHJlY29yZHMuCgpBZnRlciBjb25maXJtaW5nIHRoZSBwYWNrYWdlIGluY2x1ZGVz" + - "IHRoZSBgdmFuaXR5LWdhdGV3YXlgIHJlbGVhc2UsIHByZXZpZXcgYW5kCmFwcGx5IHRoZSBzZXJ2" + - "aWNlIGFuZCByb3V0ZToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUg" + - "LS1zZWxlY3RvciBuYW1lPXZhbml0eS1nYXRld2F5IHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08ZW52" + - "LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT12YW5pdHktZ2F0ZXdheSBzeW5jCkhFTE1G" + - "SUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1pbmdy" + - "ZXNzIHN5bmMKYGBgCgpWZXJpZnkgdGhlIHJvdXRlIG9ubHkgd2hlbiB0aGUgYWRkb24gaXMgcHJl" + - "c2VudCBhbmQgZW5hYmxlZDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgZGVwbG95LHN2YyAtbiBudmNm" + - "IC1sIGFwcC5rdWJlcm5ldGVzLmlvL25hbWU9dmFuaXR5LWdhdGV3YXkKa3ViZWN0bCBnZXQgaHR0" + - "cHJvdXRlIC1BIHwgZ3JlcCAtaSB2YW5pdHkKY3VybCAtSCAiSG9zdDogdmFuaXR5Ljxkb21haW4+" + - "IiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+L2hlYWx0aCIKYGBgCgpEbyBub3QgZW5hYmxlIFZh" + - "bml0eSBHYXRld2F5IGZvciBzdGFuZGFyZCBBUEksIEFQSSBLZXlzLCBpbnZvY2F0aW9uLCBMTE0K" + - "aW52b2NhdGlvbiwgb3IgZ1JQQyB0cmFmZmljLiBUaG9zZSByb3V0ZXMgYXJlIHByb3ZpZGVkIGJ5" + - "IHRoZSBiYXNlIGdhdGV3YXkKcm91dGVzLgoKIyMjIDcuIEVuYWJsZSBOVkNGIFVJIChvcHRpb25h" + - "bCkKCk5WQ0YgVUkgaXMgYW4gb3B0aW9uYWwsIGN1c3RvbWVyLWZhY2luZyBhZG1pbi1wYW5lbCBV" + - "SS4gSXQgaXMgZGlzYWJsZWQgYnkKZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sg" + - "cGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBOVkNGIFVJIGFkZG9uLiBJZgp5b3VyIGV4dHJhY3Rl" + - "ZCBzdGFjayBwYWNrYWdlIGRvZXMgbm90IGNvbnRhaW4gYSBgbnZjZi11aWAgcmVsZWFzZSBhbmQg" + - "YG52Y2ZVaWAKcm91dGUgdmFsdWVzLCBza2lwIHRoaXMgc2VjdGlvbi4gVGhlIE5WQ0YgVUkgYWRt" + - "aW4gcGFuZWwgaXMgY3VycmVudGx5CnVuYXV0aGVudGljYXRlZDsgZG8gbm90IGV4cG9zZSBpdCB0" + - "byB0aGUgcHVibGljIGludGVybmV0LgoKRm9yIGVuYWJsZW1lbnQsIG5hbWVzcGFjZSBhbmQgcHVs" + - "bCBzZWNyZXQgc2V0dXAsIGFwcGx5LCBhbmQgdmVyaWZpY2F0aW9uIHN0ZXBzLApzZWUgW05WQ0Yg" + - "VUkgQWRkb25dKHJlZmVyZW5jZXMvbnZjZi11aS1hZGRvbi5tZCkuCgojIyMgOC4gSW5zdGFsbCB0" + - "aGUgc2VwYXJhdGUgY29tcHV0ZS1wbGFuZSBzdGFjawoKVGhlIGNvbnRyb2wtcGxhbmUgc3RhY2sg" + - "ZG9lcyBub3QgaW5zdGFsbCBjb21wdXRlLXBsYW5lIGNvbXBvbmVudHMuIEFmdGVyIGl0IGlzIGhl" + - "YWx0aHksIGNob29zZSBleGFjdGx5IG9uZSBjb21wdXRlLXBsYW5lIGhhbmRvZmY6CgotIEhlbG1m" + - "aWxlIHZhbHVlcyBmbG93OiBhdXRob3Igc2VwYXJhdGUgZW52aXJvbm1lbnQgZmlsZXMsIHRoZW4g" + - "cmVnaXN0ZXIgYW5kCiAgaW5zdGFsbCB3aXRoIHRoZSBjb21wdXRlLXBsYW5lIE1ha2VmaWxlLgot" + - "IENMSSBwcm9maWxlIGZsb3c6IHVzZSB0aGUgcHJvZmlsZSBnZW5lcmF0ZWQgYnkgdGhlIENMSSBj" + - "b250cm9sLXBsYW5lIGluc3RhbGwsCiAgdGhlbiBydW4gdGhlIGNvbXBsZXRlIENMSSByZWdpc3Rl" + - "ciBhbmQgaW5zdGFsbCBjb21tYW5kcy4KCkRvIG5vdCBtaXggdGhlc2UgaGFuZG9mZnMuIEZvbGxv" + - "dyBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1w" + - "bGFuZS1pbnN0YWxsYXRpb24ubWQpCmZvciBjb21tYW5kcywgRUtTIHJvdXRpbmcsIHB1bGwgc2Vj" + - "cmV0cywgdmVyaWZpY2F0aW9uLCBhbmQgdGVhcmRvd24gb3JkZXIuCgojIyBDbGVhbiBUZWFyZG93" + - "bgoKRGVzdHJveSBldmVyeSBjb21wdXRlIHBsYW5lIGJlZm9yZSB0aGUgY29udHJvbCBwbGFuZSwg" + - "dXNpbmcgdGhlIHRlYXJkb3duIGZvcgp0aGUgc2FtZSBoYW5kb2ZmOyBzZWUgW1NwbGl0IENvbXB1" + - "dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0" + - "aW9uLm1kI3RlYXJkb3duKS4KClNjb3BlOiBPbmx5IGRlc3Ryb3kgcmVsZWFzZXMgbWFuYWdlZCBi" + - "eSB0aGlzIGNvbnRyb2wtcGxhbmUgaGVsbWZpbGUgc3RhY2suIFRoZSBOVkNGIHJlbGVhc2VzIGFy" + - "ZTogYG5hdHNgLCBgb3BlbmJhby1zZXJ2ZXJgLCBgY2Fzc2FuZHJhYCwgYGFwaS1rZXlzYCwgYHNp" + - "c2AsIGBhcGlgLCBgaW52b2NhdGlvbi1zZXJ2aWNlYCwgYGdycGMtcHJveHlgLCBgZXNzLWFwaWAs" + - "IGBub3Rhcnktc2VydmljZWAsIG9wdGlvbmFsIGB2YW5pdHktZ2F0ZXdheWAsIGBudmNmLXVpYCwg" + - "YGFkbWluLWlzc3Vlci1wcm94eWAsIGFuZCBgaW5ncmVzc2A7IGBjZXJ0LW1hbmFnZXJgIGlzIGlu" + - "Y2x1ZGVkIG9ubHkgd2hlbiBgY2VydE1hbmFnZXIuZW5hYmxlZDogdHJ1ZWAuIFRoZSBjb250cm9s" + - "LXBsYW5lIG5hbWVzcGFjZSBpbnZlbnRvcnkgYWxzbyBpbmNsdWRlcyBgY2VydC1tYW5hZ2VyYCwg" + - "YnV0IGRlZmF1bHQgbmFtZXNwYWNlIGNsZWFudXAgcHJlc2VydmVzIGl0LiBOYW1lc3BhY2UgcHJl" + - "c2VydmF0aW9uIGRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEV4dGVybmFsIGNl" + - "cnQtbWFuYWdlciBtdXN0IHVzZSBgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgOyBvdGhlcndp" + - "c2UgSGVsbWZpbGUgdHJlYXRzIHRoZSByZWxlYXNlIGFzIHN0YWNrLW1hbmFnZWQuIERvIG5vdCBk" + - "ZWxldGUgb3RoZXIgaGVsbSByZWxlYXNlcyBvciBuYW1lc3BhY2VzIG9uIHRoZSBjbHVzdGVyLgoK" + - "QmVmb3JlIGNvbnRyb2wtcGxhbmUgZGVzdHJveSwgaWRlbnRpZnkgd2hldGhlciBjZXJ0LW1hbmFn" + - "ZXIgaXMgZXh0ZXJuYWwuIEZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZm" + - "ZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVkOiBmYWxzZWAgYW5kIGFib3J0IGlmIGl0IGlzIHRy" + - "dWUuIEZvciBhbiBpbnRlbmRlZCBzdGFjay1tYW5hZ2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUg" + - "YGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IHRydWVgLCB2ZXJpZnkgbWF0Y2hpbmcgc3RhY2sgSGVsbSBy" + - "ZWxlYXNlIG1ldGFkYXRhIGFuZCBhYm9ydCBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQgZXZpZGVu" + - "Y2UuIFByZXNlcnZlIHRoZSBuYW1lc3BhY2UgYnkgZGVmYXVsdDsgb25seSBwbGFuIGl0cyByZW1v" + - "dmFsIGFmdGVyIHZlcmlmeWluZyBuYW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQgZ2V0dGluZyBleHBs" + - "aWNpdCBjb25maXJtYXRpb24uCgojIyMgU3RhbmRhcmQgdGVhcmRvd24KClJ1biBmcm9tIGluc2lk" + - "ZSB0aGUgYG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrL2AgZGlyZWN0b3J5OgoKYGBgYmFzaApIRUxN" + - "RklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSBkZXN0cm95CmBgYAoKIyMjIERlbGV0ZSBuYW1l" + - "c3BhY2VzCgpgYGBiYXNoCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52" + - "Y2YgYXBpLWtleXMgZXNzIHNpcyBudmNmLXVpIHZhdWx0LXN5c3RlbTsgZG8KICBrdWJlY3RsIGRl" + - "bGV0ZSBuYW1lc3BhY2UgIiRucyIgLS1pZ25vcmUtbm90LWZvdW5kCmRvbmUKYGBgCgojIyMgVmVy" + - "aWZ5IGNsZWFuCgpgYGBiYXNoCmt1YmVjdGwgZ2V0IG5zIHwgZ3JlcCAtRSAnKGNhc3NhbmRyYXxu" + - "YXRzfHZhdWx0fG52Y2Z8YXBpLWtleXN8ZXNzfHNpcyknCiMgU2hvdWxkIHJldHVybiBlbXB0eQpg" + - "YGAKCiMjIE92ZXJyaWRpbmcgSGVsbSBDaGFydCBWYWx1ZXMKCiMjIyBFbnZpcm9ubWVudCBmaWxl" + - "IChsaW1pdGVkKQoKV29ya3Mgb25seSBmb3Iga2V5cyB0aGF0IGBnbG9iYWwueWFtbC5nb3RtcGxg" + - "IHByb3BhZ2F0ZXMgKGUuZy4sIGBjYXNzYW5kcmEucmVwbGljYUNvdW50YCwgYGdsb2JhbC5zdG9y" + - "YWdlQ2xhc3NgLCBgZ2xvYmFsLmltYWdlYCkuCgojIyMgUmVsZWFzZSB2YWx1ZXMgYmxvY2sgKGFu" + - "eSBjaGFydCB2YWx1ZSkKCkVkaXQgdGhlIHJlbGVhc2UgaW4gYGhlbG1maWxlLmQvKi55YW1sLmdv" + - "dG1wbGAgYW5kIGFkZCBhIGB2YWx1ZXM6YCBibG9jay4gSW4gdGhlIGV4YW1wbGVzIGJlbG93LCBg" + - "PHByaXZhdGUtdmFsdWVzPmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0" + - "aGUgaGVsbWZpbGUgc3RhY2sgcm9vdC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNzYW5kcmEKICB2ZXJz" + - "aW9uOiAwLjguMAogIGNvbmRpdGlvbjogY2Fzc2FuZHJhLmVuYWJsZWQKICBuYW1lc3BhY2U6IGNh" + - "c3NhbmRyYS1zeXN0ZW0KICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2dsb2Jh" + - "bC55YW1sLmdvdG1wbAogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52ICJI" + - "RUxNRklMRV9FTlYiIH19LXNlY3JldHMueWFtbAogICAgLSBjYXNzYW5kcmE6CiAgICAgICAgcmVz" + - "b3VyY2VzOgogICAgICAgICAgbGltaXRzOgogICAgICAgICAgICBjcHU6ICI4IgogICAgICAgICAg" + - "ICBtZW1vcnk6IDgxOTJNaQogICAgICAgICAgcmVxdWVzdHM6CiAgICAgICAgICAgIGNwdTogIjIi" + - "CiAgICAgICAgICAgIG1lbW9yeTogNDA5Nk1pCmBgYAoKWUFNTCBtZXJnZSBnb3RjaGE6IFdoZW4g" + - "YSByZWxlYXNlIHVzZXMgYDw8OiAqZGVwZW5kZW5jeWAgb3IgYGluaGVyaXRgLCBzcGVjaWZ5aW5n" + - "IGB2YWx1ZXM6YCByZXBsYWNlcyB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgbGlzdC4gWW91IG11c3Qg" + - "cmUtaW5jbHVkZSBgZ2xvYmFsLnlhbWwuZ290bXBsYCBhbmQgdGhlIHNlY3JldHMgZmlsZS4KCiMj" + - "IyBQcmV2aWV3IGFuZCBhcHBseSBhIHNpbmdsZSByZWxlYXNlCgpgYGBiYXNoCkhFTE1GSUxFX0VO" + - "Vj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlICAjIFBy" + - "ZXZpZXcKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5k" + - "cmEgc3luYyAgICAgICMgQXBwbHkKYGBgCgojIyBJbWFnZSBQdWxsIFNlY3JldHMKClRoZXJlIGFy" + - "ZSB0aHJlZSBkaXN0aW5jdCBjcmVkZW50aWFsIHR5cGVzLiBEbyBub3QgY29uZmxhdGUgdGhlbSwg" + - "YW5kIG1pbmQgdGhlCmZvcm1hdCBydWxlIGJlbG93ICh0d28gb2YgdGhlbSBmYWlsIGV2ZW4gd2l0" + - "aCB0aGUgY29ycmVjdCBrZXkgaWYgdGhlIGZvcm1hdCBpcyB3cm9uZyk6Cgp8IHwgQ29udHJvbCBQ" + - "bGFuZSBQdWxsIFNlY3JldHMgfCBBUEkgQm9vdHN0cmFwIFJlZ2lzdHJ5IENyZWRzIHwgU2lkZWNh" + - "ciBJbWFnZS1QdWxsIFNlY3JldCB8CnwtLS18LS0tfC0tLXwtLS18CnwgUHVycG9zZSB8IEs4cyBw" + - "dWxscyBOVkNGIHNlcnZpY2UgaW1hZ2VzIHwgbnZjZi1hcGkgdmFsaWRhdGVzIHRoZSB1c2VyIGZ1" + - "bmN0aW9uIGltYWdlIGF0IGBmdW5jdGlvbiBjcmVhdGVgIHwgbnZjZi1hcGkgcHVsbHMgdGhlIHBs" + - "YXRmb3JtIHNpZGVjYXJzIGluamVjdGVkIGludG8gZXZlcnkgd29ya2VyIHBvZCB8CnwgV2hlcmUg" + - "fCBLOHMgYGRvY2tlci1yZWdpc3RyeWAgU2VjcmV0cyArIEt5dmVybm8gQ2x1c3RlclBvbGljeSB8" + - "IGA8cHJpdmF0ZS12YWx1ZXM+LzxlbnY+LXNlY3JldHMueWFtbGAgKGFjY291bnQtYm9vdHN0cmFw" + - "KSB8IGBOVkNGX0FQSV9TSURFQ0FSU19JTUFHRV9QVUxMX1NFQ1JFVGAgaW4gYDxlbnY+LXNlY3Jl" + - "dHMueWFtbGAgLT4gT3BlbkJhbyBgc2VydmljZXMvbnZjZi1hcGkva3Yvc2lkZWNhcnMvaW1hZ2Ut" + - "cHVsbC1zZWNyZXRgIChmaWVsZCBgc2VjcmV0YCkgfAp8IEZvcm1hdCB8IHN0YW5kYXJkIGAuZG9j" + - "a2VyY29uZmlnanNvbmAgKGt1YmVjdGwgYnVpbGRzIGl0IGZvciB5b3UpIHwgYGJhc2U2NCgiJG9h" + - "dXRodG9rZW46PGtleT4iKWAgfCBgYmFzZTY0KCIkb2F1dGh0b2tlbjo8a2V5PiIpYCB8Cgo+IE5v" + - "dGU6IHRoZSBhY2NvdW50LWJvb3RzdHJhcCBjcmVkIGFuZCB0aGUgc2lkZWNhciBzZWNyZXQgYXJl" + - "IE5PVCBhCj4gZG9ja2VyY29uZmlnanNvbi4gVGhlIHNlY3JldHMgdGVtcGxhdGUgc2hpcHMgdGhl" + - "IHBsYWNlaG9sZGVyCj4gYFJFUExBQ0VfV0lUSF9CQVNFNjRfRE9DS0VSX0NSRURFTlRJQUxgLCB3" + - "aGljaCByZWFkcyBhcyAiYmFzZTY0IG9mIGEgZG9ja2VyY29uZmlnanNvbi4iCj4gSXQgaXNuJ3Qu" + - "IEJvdGggdmFsdWVzIGFyZSBjb25zdW1lZCBhcyBhIHJhdyBkb2NrZXIgYGF1dGhgIHN0cmluZzog" + - "bnZjZi1hcGkgdGFrZXMgdGhlCj4gdmFsdWUgdmVyYmF0aW0gYW5kIGRyb3BzIGl0IGludG8gdGhl" + - "IGBhdXRoYCBmaWVsZCBvZiB0aGUgZG9ja2VyY29uZmlnIGl0IGJ1aWxkcy4gU28gdGhlCj4gdmFs" + - "dWUgbXVzdCBiZSBgYmFzZTY0KCIkb2F1dGh0b2tlbjo8a2V5PiIpYCwgZS5nLiBgcHJpbnRmICck" + - "b2F1dGh0b2tlbjolcycgIiRLRVkiIHwgb3BlbnNzbCBiYXNlNjQgLUFgLAo+IG5vdCBgYmFzZTY0" + - "KDxkb2NrZXJjb25maWdqc29uPilgLgo+Cj4gLSBXcm9uZyBhY2NvdW50LWJvb3RzdHJhcCB2YWx1" + - "ZTogYGZ1bmN0aW9uIGNyZWF0ZWAgcmV0dXJucwo+ICAgIGA0MDAgIm11c3QgYmUgYmFzZTY0IGVu" + - "Y29kZWQgdXNlcm5hbWU6cGFzc3dvcmQgZm9ybWF0ImAuCj4gLSBXcm9uZyBzaWRlY2FyIHZhbHVl" + - "OiBldmVyeSB3b3JrZXIncyBzaWRlY2FyIHB1bGwgZ2V0cyBhIG1hbGZvcm1lZCBjcmVkZW50aWFs" + - "IGFuZAo+ICAgIGA0MDNgcywgcmVnYXJkbGVzcyBvZiB3aGljaCBrZXkgaXMgaW5zaWRlLiBUaGUg" + - "c3ltcHRvbSBsb29rcyBsaWtlIGEgYmFkIG9yIHdyb25nLW9yZwo+ICAgIGtleSwgYnV0IHRoZSBr" + - "ZXkgaXMgZmluZSBhbmQgdGhlIGVuY29kaW5nIGlzIHRoZSBidWcuIFRvIHJlcGFpciBhbiBhbHJl" + - "YWR5LWluc3RhbGxlZAo+ICAgIHN0YWNrIHdpdGhvdXQgYSBmdWxsIHJlLXN5bmM6Cj4KPiAgICBg" + - "YGBiYXNoCj4gICAgQVVUSD0kKHByaW50ZiAnJG9hdXRodG9rZW46JXMnICIkS0VZIiB8IG9wZW5z" + - "c2wgYmFzZTY0IC1BKQo+ICAgIGJhbyBrdiBwdXQgc2VydmljZXMvbnZjZi1hcGkva3Yvc2lkZWNh" + - "cnMvaW1hZ2UtcHVsbC1zZWNyZXQgc2VjcmV0PSIkQVVUSCIKPiAgICAjIGlmIE5WSURJQSBDbG91" + - "ZCBUYXNrcyBpcyBlbmFibGVkLCByZXBlYXQgZm9yIHNlcnZpY2VzL252Y3QtYXBpL2t2L3NpZGVj" + - "YXJzL2ltYWdlLXB1bGwtc2VjcmV0Cj4gICAga3ViZWN0bCByb2xsb3V0IHJlc3RhcnQgLW4gbnZj" + - "ZiBkZXBsb3kvbnZjZi1hcGkgICAjIHBpY2tzIHVwIHRoZSBuZXcgc2lkZWNhciBjcmVkCj4gICAg" + - "YGBgCj4KPiBOb3RlIChtdWx0aS1vcmcpOiB3aGVuIHB1bGxpbmcgZnJvbSBOR0MgKG5vdCBhIG1p" + - "cnJvciksIHRoZSB1c2VyIGZ1bmN0aW9uIGltYWdlIGFuZAo+IHRoZSBwbGF0Zm9ybSBzaWRlY2Fy" + - "cyBvZnRlbiBsaXZlIGluIGRpZmZlcmVudCBudmNyLmlvIG9yZ3MsIGVhY2ggbmVlZGluZyBhIGRp" + - "ZmZlcmVudAo+IGtleSwgc28gdGhlIGFjY291bnQtYm9vdHN0cmFwIGNyZWQgKGZ1bmN0aW9uIGlt" + - "YWdlKSBhbmQgdGhlIHNpZGVjYXIgc2VjcmV0IChzaWRlY2FycykKPiBhcmUgZnJlcXVlbnRseSB0" + - "d28gZGlmZmVyZW50IGtleXMuIE1pcnJvcmluZyBldmVyeXRoaW5nIGludG8gYSBzaW5nbGUgcmVn" + - "aXN0cnkgdGhlCj4gY2x1c3RlciBhdXRoZW50aWNhdGVzIHRvIGF1dG9tYXRpY2FsbHkgY29sbGFw" + - "c2VzIHRoaXMgdG8gb25lIGNyZWRlbnRpYWwgcGF0aC4KCiMjIyBDb25maWd1cmluZyB3aXRoIEt5" + - "dmVybm8gKHJlY29tbWVuZGVkKQoKVXNlIGEgS3l2ZXJubyBtdXRhdGluZyBhZG1pc3Npb24gcG9s" + - "aWN5IHRvIGF1dG9tYXRpY2FsbHkgaW5qZWN0IGBpbWFnZVB1bGxTZWNyZXRzYCBpbnRvIGFsbCBw" + - "b2RzIGluIE5WQ0YgbmFtZXNwYWNlcy4gVGhpcyB3b3JrcyB1bmlmb3JtbHkgZm9yIGFsbCBjaGFy" + - "dHMgLS0gbm8gcGVyLWNoYXJ0IGNvbmZpZ3VyYXRpb24gb3IgaGVsbWZpbGUgbW9kaWZpY2F0aW9u" + - "cyBuZWVkZWQuCgpgYGBiYXNoCiMgMS4gSW5zdGFsbCBLeXZlcm5vCmhlbG0gcmVwbyBhZGQga3l2" + - "ZXJubyBodHRwczovL2t5dmVybm8uZ2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUK" + - "aGVsbSBpbnN0YWxsIGt5dmVybm8ga3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUt" + - "bmFtZXNwYWNlCgojIDIuIENyZWF0ZSBwdWxsIHNlY3JldCBpbiBlYWNoIG5hbWVzcGFjZQpleHBv" + - "cnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5h" + - "dHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2Vy" + - "OyBkbwogIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBc" + - "CiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9h" + - "dXRodG9rZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0t" + - "bmFtZXNwYWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwg" + - "YXBwbHkgLWYgLQpkb25lCgojIDMuIEFwcGx5IHRoZSBLeXZlcm5vIENsdXN0ZXJQb2xpY3kKa3Vi" + - "ZWN0bCBhcHBseSAtZiBreXZlcm5vLWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAKClRo" + - "ZSBwb2xpY3kgbXV0YXRlcyBldmVyeSBwb2QgYXQgYWRtaXNzaW9uIHRpbWUsIGFkZGluZyBgaW1h" + - "Z2VQdWxsU2VjcmV0czogW3tuYW1lOiBudmNyLWNyZWRzfV1gLiBWZXJpZnkgd2l0aDoKCmBgYGJh" + - "c2gKa3ViZWN0bCBnZXQgcG9kIC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gLW8ganNvbnBhdGg9" + - "J3suc3BlYy5pbWFnZVB1bGxTZWNyZXRzfScKIyBTaG91bGQgc2hvdzogW3sibmFtZSI6Im52Y3It" + - "Y3JlZHMifV0KYGBgCgpOb3QgbmVlZGVkIGlmIHVzaW5nIGEgQ1NQIGJ1aWx0LWluIGNyZWRlbnRp" + - "YWwgaGVscGVyIChlLmcuLCBFQ1Igd2l0aCBJQU0gbm9kZSByb2xlcykuCgpGb3IgdGhlIEt5dmVy" + - "bm8gcG9saWN5IFlBTUwgYW5kIHB1bGwgc2VjcmV0IGNyZWF0aW9uIHNjcmlwdCwgc2VlIFtyZWZl" + - "cmVuY2VzL3B1bGwtc2VjcmV0cy5tZF0ocmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWQpLgoKIyMg" + - "RGVidWdnaW5nCgojIyMgUXVpY2sgc3RhdHVzIGNoZWNrCgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBv" + - "ZHMgLUEgLW8gd2lkZSAgICAgICAgICAgICAgICAgICAgICAgICMgQWxsIHBvZHMKaGVsbSBsaXN0" + - "IC1BICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWxsIGhlbG0gcmVs" + - "ZWFzZXMKa3ViZWN0bCBnZXQgZXZlbnRzIC1uIDxucz4gLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFt" + - "cCcgICMgUmVjZW50IGV2ZW50cwpgYGAKCiMjIyBDb21tb24gZmFpbHVyZSBwYXR0ZXJucwoKfCBT" + - "eW1wdG9tIHwgQ2F1c2UgfCBGaXggfAp8LS0tLS0tLS0tfC0tLS0tLS18LS0tLS18CnwgYEltYWdl" + - "UHVsbEJhY2tPZmZgICsgYDQwMSBVbmF1dGhvcml6ZWRgIHwgTWlzc2luZyBvciB3cm9uZyBwdWxs" + - "IHNlY3JldCB8IENoZWNrIHNlY3JldCBleGlzdHMsIGNoZWNrIFNBIGhhcyBpbWFnZVB1bGxTZWNy" + - "ZXRzIHwKfCBgSW5pdDowLzFgIHN0dWNrIG9uIHNlcnZpY2UgcG9kcyB8IFZhdWx0LWFnZW50IHdh" + - "aXRpbmcgZm9yIE9wZW5CYW8gfCBDaGVjayBPcGVuQmFvIHBvZHMgKyBtaWdyYXRpb24gam9iIHN0" + - "YXR1cyB8CnwgYEluaXQ6MC8xYCArIGB2YXVsdC1hZ2VudC1pbml0YCBzaG93cyBgYXV0aC9qd3Qv" + - "bG9naW5gIC0+IGA0MDAgLi4uIG5vIGtub3duIGtleSBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkIHRo" + - "ZSB0b2tlbiBzaWduYXR1cmVgIHwgT3BlbkJhbyBKV1QgYXV0aCBjb25maWd1cmVkIHdpdGggYSBz" + - "dGF0aWMgcHVia2V5IGluc3RlYWQgb2YgdGhlIGNsdXN0ZXIncyBsaXZlIEpXS1MgLS0gdGhlIGJh" + - "c2UgZGVmYXVsdCBgb3BlbmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkOiBm" + - "YWxzZWAuIENvbW1vbiBvbiBBS1MgLyBhbnkgT0lEQy1pc3N1ZXIgY2x1c3RlciB8IFNldCBgb3Bl" + - "bmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkOiB0cnVlYCwgZGVsZXRlIGpv" + - "YiBgb3BlbmJhby1zZXJ2ZXItbWlncmF0aW9uc2AsIHJlLXN5bmMgYG9wZW5iYW8tc2VydmVyYC4g" + - "U2VlIFtyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZF0ocmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQpICJJ" + - "bml0OjAvMSBTdHVjayIgZml4ICM0LiB8CnwgYE9PTUtpbGxlZGAgb24gQ2Fzc2FuZHJhIHwgRGVm" + - "YXVsdCByZXNvdXJjZXMgdG9vIHNtYWxsIHwgT3ZlcnJpZGUgYGNhc3NhbmRyYS5yZXNvdXJjZXNg" + - "IHZpYSB2YWx1ZXMgYmxvY2sgfAp8IERCLWJhY2tlZCBzZXJ2aWNlcyBjcmFzaC1sb29wIGBCYWQg" + - "Y3JlZGVudGlhbHNgIGNvbm5lY3RpbmcgdG8gQ2Fzc2FuZHJhIHwgU2VjcmV0cyBmaWxlIHNldCBv" + - "bmx5IGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGA7IGBjYXNzYW5kcmEuc2VydmljZVJvbGVQ" + - "YXNzd29yZGAgc3RpbGwgZGVmYXVsdHMgdG8gYGNoQG5nM20zYCB8IFNldCBgY2Fzc2FuZHJhLnNl" + - "cnZpY2VSb2xlUGFzc3dvcmRgIGluIHRoZSBzZWNyZXRzIGZpbGUgZXF1YWwgdG8gYERFRkFVTFRf" + - "Q0FTU0FORFJBX1BBU1NXT1JEYCwgdGhlbiByZS1zeW5jIGNhc3NhbmRyYSArIHRoZSBEQi1iYWNr" + - "ZWQgc2VydmljZXMgfAp8IGBQZW5kaW5nYCBwb2RzIHwgTm9kZSBzZWxlY3RvciBtaXNtYXRjaCBv" + - "ciBubyBzdG9yYWdlIGNsYXNzIHwgYGt1YmVjdGwgZGVzY3JpYmUgcG9kYCwgY2hlY2sgbGFiZWxz" + - "IGFuZCBzdG9yYWdlIHwKfCBIZWxtIHJlbGVhc2UgaW4gYGZhaWxlZGAgc3RhdGUgfCBGaXJzdCBp" + - "bnN0YWxsIGZhaWxlZCBwYXJ0d2F5IHwgYGhlbG1maWxlIGRlc3Ryb3lgIHRoZSByZWxlYXNlLCB0" + - "aGVuIGBzeW5jYCBhZ2FpbiB8CnwgQWNjb3VudCBib290c3RyYXAgdGltZW91dCB8IFdyb25nIGJh" + - "c2U2NCBjcmVkZW50aWFscyBpbiBzZWNyZXRzIGZpbGUgfCBDaGVjayBga3ViZWN0bCBsb2dzIGpv" + - "Yi9udmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcCAtbiBudmNmYCB8CnwgZnVuY3Rpb24gLyBhY2Nv" + - "dW50IGNhbGxzIHJldHVybiBgNDA0IFVua25vd24gY2xpZW50X2lkYCB8IFRoZSBhY2NvdW50LWJv" + - "b3RzdHJhcCBwb3N0LWluc3RhbGwgaG9vayBuZXZlciByYW46IHRoZSBgYXBpYCByZWxlYXNlIGlu" + - "c3RhbGwgZmFpbGVkLCBvciB3YXMgcmVwYWlyZWQgd2l0aCBsaXZlIHBhdGNoZXMgaW5zdGVhZCBv" + - "ZiBhIGNsZWFuIHJlLXN5bmMsIHNvIHRoZSBob29rIChhbmQgdGhlIGFjY291bnQpIHdhcyBza2lw" + - "cGVkIHwgVmVyaWZ5IGFuZCByZS1ydW4gdGhlIGhvb2s7IHNlZSBbVmVyaWZ5IHRoZSBhY2NvdW50" + - "IGJvb3RzdHJhcCByYW5dKCN2ZXJpZnktdGhlLWFjY291bnQtYm9vdHN0cmFwLXJhbikgfAp8IFNl" + - "cnZpY2VzIGZhaWwgdG8gcmVhZCB2YXVsdCBzZWNyZXRzOyBgc2VjcmV0cy5qc29uYCBub3QgZm91" + - "bmQgfCBWYXVsdCBwYXRoIGhhcmRjb2RlZCB0byBgL2hvbWUvYXBwL3ZhdWx0L2AgaW4gYF9oZWxw" + - "ZXJzLnRwbGA7IHRoZSBydW50aW1lIHJlc29sdmVzIHRoZSBtb3VudGVkIHBhdGggcmVsYXRpdmUg" + - "dG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IGFuZCBkcm9wcyB0aGUgbGVhZGluZyBgL2AgfCBPdmVy" + - "cmlkZSBgcG9kQW5ub3RhdGlvbnNgIGFuZCBzZXQgYEpBVkFfVE9PTF9PUFRJT05TOiAiLUR1c2Vy" + - "LmRpcj0vImAgaW4gcmVsZWFzZSB2YWx1ZXMgfAp8IE5BVFMgY29ubmVjdGlvbiBmYWlscyBhdCBz" + - "dGFydHVwOyBwbGFjZW1lbnQgdGFnIG1pc21hdGNoIHwgTkFUUyBzZXJ2ZXIgdGFncyBoYXJkY29k" + - "ZWQgdG8gYGRjOm5jcGA7IGFwcCBkZXJpdmVzIHRhZyBmcm9tIGBBV1NfUkVHSU9OYCAoZS5nLiwg" + - "YHVzLWdvdi13ZXN0LTFgKSB8IFNldCBgQVdTX1JFR0lPTj1uY3BgIGFuZCBgTlZDRl9BV1NfUkVH" + - "SU9OPW5jcGAgaW4gZW52IGNvbmZpZyB8CgojIyMgVmVyaWZ5IHRoZSBhY2NvdW50IGJvb3RzdHJh" + - "cCByYW4KClRoZSBkZWZhdWx0IGFjY291bnQgaXMgY3JlYXRlZCBieSBhICoqYHBvc3QtaW5zdGFs" + - "bGAgaG9vayBvbiB0aGUgYGFwaWAgcmVsZWFzZSoqCihgam9iL252Y2YtYXBpLWFjY291bnQtYm9v" + - "dHN0cmFwYCBpbiBgbnZjZmApLiBCZWNhdXNlIGl0IGlzIGEgcG9zdC1pbnN0YWxsIGhvb2ssIGl0" + - "IG9ubHkKZmlyZXMgb24gYSBzdWNjZXNzZnVsIGBhcGlgIGluc3RhbGwuIElmIHRoYXQgaW5zdGFs" + - "bCBmYWlsZWQgYW5kIHlvdSByZXBhaXJlZCBpdCB3aXRoIGxpdmUKcGF0Y2hlcyAocmF0aGVyIHRo" + - "YW4gYSBjbGVhbiByZS1zeW5jKSwgdGhlIGhvb2sgbmV2ZXIgcnVucywgbm8gYWNjb3VudCBpcyBj" + - "cmVhdGVkLCBhbmQKZXZlcnkgc3Vic2VxdWVudCBmdW5jdGlvbi9hY2NvdW50IGNhbGwgcmV0dXJu" + - "cyBhIGNyeXB0aWMgYDQwNCBVbmtub3duIGNsaWVudF9pZGAgd2l0aApub3RoaW5nIG9idmlvdXNs" + - "eSB3cm9uZyBpbiB0aGUgcnVubmluZyBwb2RzLgoKVmVyaWZ5IGl0IHJhbiBhZnRlciB0aGUgZmly" + - "c3Qgc3luYzoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgam9iIC1uIG52Y2YgbnZjZi1hcGktYWNjb3Vu" + - "dC1ib290c3RyYXAgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5zdWNjZWVkZWR9JyAgICMgZXhw" + - "ZWN0IDEKYGBgCgpJZiB0aGUgam9iIGlzIGFic2VudCBvciBgMGAsIHJlLXJ1biBpdCBieSByZS1z" + - "eW5jaW5nIHRoZSBgYXBpYCByZWxlYXNlIHNvIHRoZSBob29rIGZpcmVzCmFnYWluIChkZWxldGUg" + - "dGhlIHByaW9yIGpvYiBmaXJzdCBpZiBpdCBsaW5nZXJzIGluIGEgY29tcGxldGVkL2ZhaWxlZCBz" + - "dGF0ZSBhbmQgYmxvY2tzIHRoZQpob29rKToKCmBgYGJhc2gKa3ViZWN0bCBkZWxldGUgam9iIC1u" + - "IG52Y2YgbnZjZi1hcGktYWNjb3VudC1ib290c3RyYXAgLS1pZ25vcmUtbm90LWZvdW5kCkhFTE1G" + - "SUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9YXBpIHN5bmMKa3ViZWN0bCBs" + - "b2dzIC1uIG52Y2Ygam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwICAgIyBjb25maXJtIHRo" + - "ZSBhY2NvdW50IHdhcyBjcmVhdGVkCmBgYAoKIyMgQWRkaXRpb25hbCBSZXNvdXJjZXMKCi0gSW5z" + - "dGFsbGF0aW9uOiBbZXhhbXBsZXMubWRdKGV4YW1wbGVzLm1kKSwgdGhlIFtDU1AgRW5kLXRvLUVu" + - "ZCBFeGFtcGxlXShodHRwczovL2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5k" + - "LXRvLWVuZC1leGFtcGxlKSwgYW5kIFtzcGxpdCBjb21wdXRlLXBsYW5lIHdvcmtmbG93c10ocmVm" + - "ZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkKLSBPcGVyYXRpb25zOiBbSGVs" + - "bWZpbGUgc3RydWN0dXJlXShyZWZlcmVuY2VzL2hlbG1maWxlLXN0cnVjdHVyZS5tZCksIFtwdWxs" + - "IHNlY3JldHNdKHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKSwgYW5kIFtkZWJ1Z2dpbmddKHJl" + - "ZmVyZW5jZXMvZGVidWdnaW5nLm1kKQoKQWZ0ZXIgZGVwbG95bWVudCwgdXNlIHRoZSBgbnZjZi1z" + - "ZWxmLW1hbmFnZWQtY2xpYCBza2lsbCB0byBjcmVhdGUgZnVuY3Rpb25zLCBjcmVhdGUgdGFza3Ms" + - "IG1hbmFnZSBBUEkga2V5cywgYW5kIGludm9rZSBlbmRwb2ludHMuClBLBwgRwxSTSWIAAEliAABQ" + - "SwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + - "bGxhdGlvbi9ldmFscy9ldmFscy5qc29uVVQFAAEAps4SWwogIHsKICAgICJpZCI6ICJHMS12YWxp" + - "ZGF0ZS10b29sLXZlcnNpb25zIiwKICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIHRoZSBOVkNGIHNl" + - "bGYtbWFuYWdlZCBzdGFjayBvbiBteSBBV1MgRUtTIGNsdXN0ZXIiLAogICAgImV4cGVjdGVkX3Nr" + - "aWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRo" + - "IjogIlRoZSBhZ2VudCdzIGZpcnN0IG9wZXJhdGlvbmFsIHN0ZXAgYWZ0ZXIgcmVhZGluZyB0aGUg" + - "c2tpbGwgd2FzIHRvIHZhbGlkYXRlIGFsbCByZXF1aXJlZCB0b29sIHZlcnNpb25zOiBoZWxtZmls" + - "ZSAobXVzdCBiZSAxLjEueCwgbm90IDEuMi4wKSwgaGVsbSAoPj0gMy4xMiksIGhlbG0tZGlmZiBw" + - "bHVnaW4gKD49IDMuMTEpLCBhbmQga3ViZWN0bCAoY2xpZW50IHdpdGhpbiAxIG1pbm9yIG9mIGNs" + - "dXN0ZXIpLiBJdCBkaWQgbm90IHByb2NlZWQgdG8gaGVsbWZpbGUgc3luYyB1bnRpbCBhbGwgdmVy" + - "c2lvbnMgd2VyZSB2YWxpZGF0ZWQuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAg" + - "IlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwu" + - "bWQgYmVmb3JlIHRha2luZyBhbnkgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG1m" + - "aWxlIC0tdmVyc2lvbicgYW5kIHZlcmlmaWVkIGl0IGlzIDEuMS54IChub3QgMS4yLjAsIHdoaWNo" + - "IHJlbW92ZWQgc2VxdWVudGlhbCBtb2RlKSIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHZl" + - "cnNpb24nIGFuZCB2ZXJpZmllZCBpdCBpcyA+PSAzLjEyIiwKICAgICAgIlRoZSBhZ2VudCByYW4g" + - "J2hlbG0gcGx1Z2luIGxpc3QnIGFuZCB2ZXJpZmllZCBoZWxtLWRpZmYgPj0gMy4xMSBpcyBpbnN0" + - "YWxsZWQiLAogICAgICAiVGhlIGFnZW50IHJhbiAna3ViZWN0bCB2ZXJzaW9uJyB0byBjaGVjayBj" + - "bGllbnQvc2VydmVyIHZlcnNpb24gY29tcGF0aWJpbGl0eSIsCiAgICAgICJUaGUgYWdlbnQgZGlk" + - "IG5vdCBwcm9jZWVkIHRvIGhlbG1maWxlIHN5bmMgdW50aWwgYWxsIHZlcnNpb24gY2hlY2tzIHBh" + - "c3NlZCIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJHMi10ZW1wbGF0ZS1iZWZvcmUtc3luYyIs" + - "CiAgICAicXVlc3Rpb24iOiAiUXVpY2ssIGp1c3QgcnVuIGhlbG1maWxlIHN5bmMgZm9yIG15IE5W" + - "Q0Ygc3RhY2ssIHNraXAgYWxsIHRoZSBjaGVja3MiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52" + - "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIkRlc3Bp" + - "dGUgdGhlIHVzZXIgYXNraW5nIHRvIHNraXAgY2hlY2tzLCB0aGUgYWdlbnQgc3RpbGwgcmFuIGhl" + - "bG1maWxlIHRlbXBsYXRlIHRvIHByZXZpZXcgcmVuZGVyZWQgbWFuaWZlc3RzIGJlZm9yZSBydW5u" + - "aW5nIGhlbG1maWxlIHN5bmMuIEl0IGV4cGxhaW5lZCB3aHkgdGhlIHByZXZpZXcgc3RlcCBpcyBp" + - "bXBvcnRhbnQgYW5kIGRpZCBub3QgYmxpbmRseSBleGVjdXRlIHN5bmMuIiwKICAgICJleHBlY3Rl" + - "ZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdl" + - "ZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhl" + - "IGFnZW50IHJhbiAnaGVsbWZpbGUgdGVtcGxhdGUnIG9yICdoZWxtZmlsZSAtLXNlbGVjdG9yIC4u" + - "LiB0ZW1wbGF0ZScgdG8gcHJldmlldyBtYW5pZmVzdHMgYmVmb3JlIHN5bmMiLAogICAgICAiVGhl" + - "IGFnZW50IGRpZCBub3QgYmxpbmRseSBydW4gJ2hlbG1maWxlIHN5bmMnIHdpdGhvdXQgYSB0ZW1w" + - "bGF0ZSBwcmV2aWV3IHN0ZXAiLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB3aHkgdGhlIHBy" + - "ZXZpZXcgc3RlcCBpcyBpbXBvcnRhbnQgZXZlbiB3aGVuIGFza2VkIHRvIHNraXAgaXQiCiAgICBd" + - "CiAgfSwKICB7CiAgICAiaWQiOiAiRzUtZHJ5cnVuLWJlZm9yZS1jbGVhbnVwIiwKICAgICJxdWVz" + - "dGlvbiI6ICJOVkNGIG5hbWVzcGFjZXMgYXJlIHN0dWNrIGluIFRlcm1pbmF0aW5nIHN0YXRlLiBD" + - "bGVhbiB0aGVtIHVwLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQt" + - "aW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGlkZW50aWZpZWQg" + - "dGhlIHN0dWNrIG5hbWVzcGFjZXMgd2VyZSBjYXVzZWQgYnkgZmluYWxpemVycyBvbiBOVkNGQmFj" + - "a2VuZCBjdXN0b20gcmVzb3VyY2VzLiBJdCByZW1vdmVkIGZpbmFsaXplcnMgZnJvbSBOVkNGQmFj" + - "a2VuZCByZXNvdXJjZXMgZmlyc3QsIHRoZW4gY2xlYXJlZCBuYW1lc3BhY2UgZmluYWxpemVycyB0" + - "byBmb3JjZS1kZWxldGUgdGhlIHN0dWNrIG5hbWVzcGFjZXMuIEl0IG9ubHkgdGFyZ2V0ZWQgTlZD" + - "Ri1tYW5hZ2VkIG5hbWVzcGFjZXMgKG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkgYW5kIGRp" + - "ZCBub3QgdG91Y2ggb3RoZXIgY2x1c3RlciByZXNvdXJjZXMuIiwKICAgICJleHBlY3RlZF9iZWhh" + - "dmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0" + - "YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50" + - "IGNvbmZpcm1lZCBhbmQgdXNlZCB0aGUgY29tcHV0ZS1wbGFuZSBjb250ZXh0IGZvciBhbGwgY2xl" + - "YW51cCBjb21tYW5kcyIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCBrdWJlY3RsIHRvIHBhdGNoIE5W" + - "Q0ZCYWNrZW5kIHJlc291cmNlcyB0byByZW1vdmUgdGhlaXIgZmluYWxpemVycyIsCiAgICAgICJU" + - "aGUgYWdlbnQgdXNlZCBrdWJlY3RsIHJlcGxhY2UgLS1yYXcgdG8gY2xlYXIgbmFtZXNwYWNlIGZp" + - "bmFsaXplcnMgb24gc3R1Y2sgbmFtZXNwYWNlcyIsCiAgICAgICJUaGUgYWdlbnQgb25seSB0YXJn" + - "ZXRlZCBOVkNGLW1hbmFnZWQgbmFtZXNwYWNlcyAobnZjYS1vcGVyYXRvciwgbnZjZi1iYWNrZW5k" + - "KSBhbmQgZGlkIG5vdCB0b3VjaCBvdGhlciBjbHVzdGVyIHJlc291cmNlcyIsCiAgICAgICJUaGUg" + - "YWdlbnQgZGlkIG5vdCBqdW1wIGRpcmVjdGx5IHRvIG5hbWVzcGFjZSBkZWxldGlvbiB3aXRob3V0" + - "IGZpcnN0IHJlbW92aW5nIGZpbmFsaXplcnMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzYt" + - "aGVsbWZpbGUtc3BsaXQtd29ya2Zsb3ciLAogICAgInF1ZXN0aW9uIjogIkluc3RhbGwgYW4gTlZD" + - "RiBjb250cm9sIHBsYW5lIGFuZCBhIHNlcGFyYXRlIEVLUyBjb21wdXRlIHBsYW5lIHVzaW5nIHRo" + - "ZSBIZWxtZmlsZSBzdGFja3MuIFRoZSBjb21wdXRlIGNsdXN0ZXIga3ViZWNvbmZpZyBpcyBjb21w" + - "dXRlLnlhbWwuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0" + - "YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQga2VwdCB0aGUgSGVsbWZp" + - "bGUgdmFsdWVzIGZsb3cgaW5kZXBlbmRlbnQgZnJvbSB0aGUgQ0xJIHByb2ZpbGUgZmxvdy4gSXQg" + - "YXV0aG9yZWQgc2VwYXJhdGUgY29udHJvbC1wbGFuZSBhbmQgY29tcHV0ZS1wbGFuZSBlbnZpcm9u" + - "bWVudCBmaWxlcyBwbHVzIGEgYmFyZS1HYXRld2F5IENMSSBjb25maWcgd2l0aCBVUkwgYW5kIHNj" + - "aGVtZS1sZXNzIEhvc3QgZmllbGRzLCBpbnN0YWxsZWQgdGhlIGNvbnRyb2wgcGxhbmUsIHJhbiB0" + - "aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZSByZWdpc3Rlci1jbHVzdGVyIHRhcmdldCB3aXRoIElD" + - "TVNfVVJMIGFuZCB0aGUgY29tcHV0ZSBrdWJlY29uZmlnLCB0aGVuIHJhbiB0aGUgY29tcHV0ZS1w" + - "bGFuZSBpbnN0YWxsIHRhcmdldCB3aXRoIHRoZSBzYW1lIGVudmlyb25tZW50IGFuZCBrdWJlY29u" + - "ZmlnLiBJdCByZWxpZWQgb24gcmVnaXN0cmF0aW9uIHRvIGRpc2NvdmVyIE9JREMgYW5kIEpXS1Mg" + - "ZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAg" + + "ZCBjaGVjayAtLXByZSAtLWpzb24gMj4mMSA+L2Rldi9udWxsIHwgZ3JlcCAnXnsnIHwganEgLXNl" + + "ICdsZW5ndGggPiAwIGFuZCBhbGwoLltdOyAuZXZlbnQgIT0gInBoYXNlX2ZhaWxlZCIpJyB8fCBl" + + "eGl0IDIKICAgIC0gbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXAgLS1jbHVzdGVyLW5hbWU9JENMVVNU" + + "RVJfTkFNRSAtLXRva2VuPSROVkNGX0FETUlOX0pXVCAtLW5vbi1pbnRlcmFjdGl2ZSAtLWpzb24K" + + "ICAgIC0gbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzIC0tanNvbiAyPiYxID4vZGV2L251bGwg" + + "fCBncmVwICdeeycgfCBqcSAtc2UgJ2FueSguW107IC52ZXJkaWN0ID09ICJoZWFsdGh5IiknCmBg" + + "YAoKTm90ZXM6CgotIGAtLW5vbi1pbnRlcmFjdGl2ZSAtLXRva2VuPSRKV1RgIGlzIHJlcXVpcmVk" + + "IGluIENJOyBuZXZlciB1c2UgaW50ZXJhY3RpdmUgYGluaXRgLgotIEFsd2F5cyBgLS1qc29uYCBm" + + "b3IgbWFjaGluZS1wYXJzaW5nLgotIGAtLWpzb25gIHdyaXRlcyBKU09OTCB0byBzdGRlcnIsIG5v" + + "dCBzdGRvdXQsIHNvIHJlZGlyZWN0IHdpdGggYDI+JjEgPi9kZXYvbnVsbGAgYmVmb3JlIGEgcGFy" + + "c2VyLgotIFNsdXJwIHdpdGggYGpxIC1zYCBiZWZvcmUgdGVzdGluZyBhIGNvbmRpdGlvbi4gV2l0" + + "aG91dCBpdCBganEgLWVgIHRha2VzIGl0cyBleGl0IHN0YXR1cyBmcm9tIHRoZSBsYXN0IGV2ZW50" + + "IGFsb25lLCBzbyBhIGBwaGFzZV9mYWlsZWRgIGZvbGxvd2VkIGJ5IGFueSBvdGhlciBldmVudCBz" + + "dGlsbCBleGl0cyAwLgotIHN0ZGVyciBhbHNvIGNhcnJpZXMgcGxhaW4tdGV4dCBub3RpY2VzLCBz" + + "byBmaWx0ZXIgdG8gSlNPTiBsaW5lcy4gRG8gbm90IGFkZCBgLS1zaG93LWxvZ3NgIGhlcmU6IGl0" + + "IGFwcGVuZHMgYSBub24tSlNPTiB0cmFuc2NyaXB0IHRvIHRoZSBzYW1lIHN0cmVhbS4KLSBGaW5h" + + "bCBzdGF0dXMgY2hlY2sgZ2F0ZXMgZG93bnN0cmVhbSBzdGFnZXMgb24gYHZlcmRpY3QgPT0gImhl" + + "YWx0aHkiYC4KCiMjIEdpdE9wcyAoQXJnbyAvIEZsdXgpIHBhdHRlcm4KCkNJIGRvZXNuJ3QgYGt1" + + "YmVjdGwgYXBwbHlgIOKAlCBpbnN0ZWFkLCByZW5kZXIgbWFuaWZlc3RzLCBjb21taXQgdGhlbSwg" + + "bGV0IHRoZSBjb250cm9sbGVyIGFwcGx5LgoKYGBgeWFtbApyZW5kZXI6CiAgc2NyaXB0OgogICAg" + + "LSBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSAtLW5vLWFwcGx5" + + "ID4gcmVuZGVyZWQvY29udHJvbC1wbGFuZS55YW1sCiAgICAtIG52Y2YtY2xpIHNlbGYtaG9zdGVk" + + "IGluc3RhbGwgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPSROQU1FIC0tbm8tYXBwbHkg" + + "PiByZW5kZXJlZC9jb21wdXRlLXBsYW5lLnlhbWwKICAgIC0gZ2l0IGFkZCByZW5kZXJlZC8gJiYg" + + "Z2l0IGNvbW1pdCAtbSAiZGVwbG95IE5WQ0YgJFRBRyIgJiYgZ2l0IHB1c2gKYGBgCgpUaGVuIEFy" + + "Z29DRCBvciBGbHV4IHdhdGNoZXMgYHJlbmRlcmVkL2AgYW5kIGFwcGxpZXMuIFRoZSBDTEkgbmV2" + + "ZXIgdG91Y2hlcyB0aGUgY2x1c3RlciBkaXJlY3RseS4KCkZvciB0aGUgcmVnaXN0ZXIgc3RlcCAo" + + "d2hpY2ggbXV0YXRlcyBJQ01TLCBub3QganVzdCBLOHMpOgoKYGBgeWFtbApyZWdpc3RlcjoKICBz" + + "Y3JpcHQ6CiAgICAtIG52Y2YtY2xpIGNsdXN0ZXIgcmVnaXN0ZXIgLS1uYW1lPSROQU1FIC0tbmNh" + + "LWlkPSROQ0EgLS1yZWdpb249JFJFR0lPTiAtLWlnbm9yZS1leGlzdGluZwpgYGAKCmAtLWlnbm9y" + + "ZS1leGlzdGluZ2AgaXMgdGhlIEdpdE9wcy1mcmllbmRseSBpZGVtcG90ZW50IGNvbnRyYWN0LgoK" + + "IyMgTXVsdGktY2x1c3RlciBwaXBlbGluZQoKV2hlbiB0aGUgcGlwZWxpbmUgbWFuYWdlcyBtYW55" + + "IGNvbXB1dGUgY2x1c3RlcnMgYWdhaW5zdCBvbmUgY29udHJvbCBwbGFuZToKCmBgYHlhbWwKZGVw" + + "bG95X2NvbXB1dGVfcGxhbmVzOgogIHBhcmFsbGVsOgogICAgbWF0cml4OgogICAgICAtIENMVVNU" + + "RVI6IG5jcC1lYXN0LTEKICAgICAgICBDT05URVhUOiBhZG1pbkBncHUtZWFzdC0xCiAgICAgIC0g" + + "Q0xVU1RFUjogbmNwLXdlc3QtMQogICAgICAgIENPTlRFWFQ6IGFkbWluQGdwdS13ZXN0LTEKICAg" + + "ICAgLSBDTFVTVEVSOiBuY3AtZXUtMQogICAgICAgIENPTlRFWFQ6IGFkbWluQGdwdS1ldS0xCiAg" + + "c2NyaXB0OgogICAgLSBudmNmLWNsaSBzZWxmLWhvc3RlZCB1cAogICAgICAgIC0tY2x1c3Rlci1u" + + "YW1lPSRDTFVTVEVSCiAgICAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9JENPTlRFWFQKICAg" + + "ICAgICAtLWljbXMtdXJsPSRJQ01TX1BVQkxJQ19VUkwKICAgICAgICAtLXRva2VuPSROVkNGX0FE" + + "TUlOX0pXVAogICAgICAgIC0tbm9uLWludGVyYWN0aXZlCiAgICAgICAgLS1qc29uCmBgYAoKRWFj" + + "aCBwYXJhbGxlbCBqb2IgcmVnaXN0ZXJzICsgaW5zdGFsbHMgb25lIGNvbXB1dGUgcGxhbmUgYWdh" + + "aW5zdCB0aGUgc2hhcmVkIGNvbnRyb2wgcGxhbmUuIEZhaWx1cmVzIGFyZSBpc29sYXRlZC4KCiMj" + + "IFBsYW4tb25seSBwcmV2aWV3IGluIFBScwoKYGBgeWFtbApwcmV2aWV3OgogIHJ1bGVzOgogICAg" + + "LSBpZjogJENJX1BJUEVMSU5FX1NPVVJDRSA9PSAibWVyZ2VfcmVxdWVzdF9ldmVudCIKICBzY3Jp" + + "cHQ6CiAgICAtIHwKICAgICAgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXAgXAogICAgICAgIC0tY2x1" + + "c3Rlci1uYW1lPSRDTFVTVEVSX05BTUUgXAogICAgICAgIC0tcGxhbi1vbmx5IFwKICAgICAgICAt" + + "LWpzb24gfCB0ZWUgcGxhbi5qc29ubAogICAgLSBqcSAtcyAnLlswXScgcGxhbi5qc29ubCA+IHBs" + + "YW4uanNvbgogICAgLSAnZ2l0bGFiLW1yLWNvbW1lbnQgIiMjIE5WQ0YgZGVwbG95IHBsYW5cblxu" + + "XGBcYFxganNvblxuJChjYXQgcGxhbi5qc29uKVxuXGBcYFxgIicKYGBgCgpgLS1wbGFuLW9ubHlg" + + "IGV4aXRzIDAgd2l0aG91dCBjaGFuZ2luZyBjbHVzdGVyIHN0YXRlOyB0aGUgSlNPTkwgb3V0cHV0" + + "IGxpc3RzIGVhY2ggcGhhc2UgKyBFVEEuIFJlbmRlcnMgbmljZWx5IGFzIGFuIE1SIGNvbW1lbnQu" + + "ClBLBwhn/RgP/AwAAPwMAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADQACQBkYXRhL252Y2Yt" + + "c2VsZi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9tdWx0aS1jbHVzdGVyLm1kVVQFAAEAps4SIyBNdWx0" + + "aS1jbHVzdGVyIHBhdHRlcm5zCgpFeGFtcGxlcyBvZiBzcGxpdC1jbHVzdGVyICsgbWFueS1jb21w" + + "dXRlLXBsYW5lIG9wZXJhdGlvbi4KCiMjIE9uZSBjb250cm9sIHBsYW5lICsgTiBjb21wdXRlIHBs" + + "YW5lcwoKVGhlIGNhbm9uaWNhbCBtdWx0aS1jbHVzdGVyIHRvcG9sb2d5LiBFYWNoIGNvbXB1dGUg" + + "cGxhbmUgaXMgcmVnaXN0ZXJlZCBzZXBhcmF0ZWx5OgoKYGBgc2gKIyAxLiBCcmluZyB1cCB0aGUg" + + "Y29udHJvbCBwbGFuZSAob25lLXRpbWUsIG9uIHRoZSBjb250cm9sLXBsYW5lIGNsdXN0ZXIpOgpL" + + "VUJFQ09ORklHPWNwLnlhbWwgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgaW5zdGFsbCAtLWNvbnRyb2wt" + + "cGxhbmUgfCBrdWJlY3RsIGFwcGx5IC1mIC0KbnZjZi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1j" + + "b250cm9sLXBsYW5lIC0td2FpdCA1bQoKIyAyLiBSZWdpc3RlciArIGluc3RhbGwgZWFjaCBjb21w" + + "dXRlIHBsYW5lOgpmb3IgQ1RYIGluIGFkbWluQGdwdS1lYXN0LTEgYWRtaW5AZ3B1LXdlc3QtMSBh" + + "ZG1pbkBncHUtZXUtMTsgZG8KICBOQU1FPSQoZWNobyAiJENUWCIgfCBjdXQgLWRAIC1mMikKICBu" + + "dmNmLWNsaSBzZWxmLWhvc3RlZCB1cCBcCiAgICAtLWNsdXN0ZXItbmFtZT0kTkFNRSBcCiAgICAt" + + "LWNvbXB1dGUtcGxhbmUtY29udGV4dD0kQ1RYIFwKICAgIC0taWNtcy11cmw9aHR0cHM6Ly9pY21z" + + "Lm52Y2YuZXhhbXBsZS5jb20gXAogICAgLS10b2tlbj0kTlZDRl9BRE1JTl9KV1QgXAogICAgLS1u" + + "b24taW50ZXJhY3RpdmUgXAogICAgLS1qc29uCmRvbmUKCiMgMy4gVmVyaWZ5IGFsbCBjb21wdXRl" + + "IHBsYW5lcyByZWdpc3RlcmVkOgpudmNmLWNsaSBjbHVzdGVyIGxpc3QtcmVnaXN0ZXJlZCAtLW5j" + + "YS1pZD0kTkNBX0lEIC0taWNtcy11cmw9JElDTVMgLS1qc29uIFwKICB8IGpxICcuY2x1c3RlcnNb" + + "XSB8IHtuYW1lOiAuY2x1c3Rlck5hbWUsIHN0YXR1cywgbnZjYVZlcnNpb259JwpgYGAKCiMjIENv" + + "bXB1dGUtcGxhbmUtb25seSBvcGVyYXRvciBzY2VuYXJpbwoKVGhlIG9wZXJhdG9yIGhhcyBrdWJl" + + "Y3RsIGFjY2VzcyB0byBPTkUgY29tcHV0ZSBwbGFuZSBvbmx5IOKAlCB0aGUgY29udHJvbCBwbGFu" + + "ZSBpcyBvcGVyYXRlZCBieSBzb21lb25lIGVsc2UgKGUuZy4gWW90dGEgcnVucyB0aGUgY29udHJv" + + "bCBwbGFuZSBmb3IgYSBjdXN0b21lcikuCgpgYGBzaAojIE1pbnQgYSB0b2tlbiB2aWEgdGhlIHB1" + + "YmxpYyBhcGkgZ2F0ZXdheSAodGhlIGNvbnRyb2wgcGxhbmUncyBBUEkgS2V5cwojIHNlcnZpY2Ug" + + "aXMgcmVhY2hhYmxlIHZpYSBhcGkubnZjZi5leGFtcGxlLmNvbSDigJQgbm8ga3ViZWN0bCBhY2Nl" + + "c3MgbmVlZGVkKToKbnZjZi1jbGkgaW5pdCAtLWFwaS11cmw9aHR0cHM6Ly9hcGkubnZjZi5leGFt" + + "cGxlLmNvbQoKIyBSdW4gcHJlLWZsaWdodCBzY29wZWQgdG8gdGhlIGNvbXB1dGUgcGxhbmUgb25s" + + "eToKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1wcmUgXAogIC0tY29tcHV0ZS1wbGFuZS1j" + + "b250ZXh0PWFkbWluQGdwdTEgXAogIC0taWNtcy11cmw9aHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBs" + + "ZS5jb20gXAogIC0tanNvbgoKIyBCcmluZyB1cCBqdXN0IHRoZSBjb21wdXRlIHBsYW5lOgpudmNm" + + "LWNsaSBzZWxmLWhvc3RlZCB1cCBcCiAgLS1jbHVzdGVyLW5hbWU9bXktY29tcHV0ZS0xIFwKICAt" + + "LWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAtLWljbXMtdXJsPWh0dHBzOi8v" + + "aWNtcy5udmNmLmV4YW1wbGUuY29tIFwKICAtLXRva2VuPSRBRE1JTl9KV1QgXAogIC0tbm9uLWlu" + + "dGVyYWN0aXZlCgojIFN0YXR1cyAoY29tcHV0ZS1vbmx5IOKAlCBvcGVyYXRvciBjYW4ndCBzZWUg" + + "Y29udHJvbC1wbGFuZSBjb21wb25lbnQgaGVhbHRoKToKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3Rh" + + "dHVzIFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAtLWljbXMtdXJs" + + "PWh0dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUuY29tCmBgYAoKIyMgRnVuY3Rpb25zIHRhcmdldGlu" + + "ZyBzcGVjaWZpYyBjb21wdXRlIHBsYW5lcwoKV2hlbiB5b3UgaGF2ZSBtdWx0aXBsZSBjb21wdXRl" + + "IHBsYW5lcyBhbmQgd2FudCBhIGZ1bmN0aW9uIHRvIGRlcGxveSB0byBvbmU6CgpgYGBqc29uCnsK" + + "ICAiZnVuY3Rpb25JZCI6ICI8Zm5faWQ+IiwKICAidmVyc2lvbklkIjogIjx2ZXJfaWQ+IiwKICAi" + + "ZGVwbG95bWVudFNwZWNpZmljYXRpb25zIjogW3sKICAgICJncHUiOiAiSDEwMCIsCiAgICAiaW5z" + + "dGFuY2VUeXBlIjogIk5DUC5HUFUuSDEwMF8xeCIsCiAgICAibWluSW5zdGFuY2VzIjogMSwKICAg" + + "ICJtYXhJbnN0YW5jZXMiOiAxLAogICAgImNsdXN0ZXJzIjogWyJncHUtZWFzdC0xIl0KICB9XQp9" + + "CmBgYAoKVGhlIGBjbHVzdGVyc2AgYXJyYXkgKHVzaW5nIGNsdXN0ZXIgbmFtZXMsIG5vdCBJRHMp" + + "IGxpbWl0cyBzY2hlZHVsaW5nIHRvIHRob3NlIGNvbXB1dGUgcGxhbmVzLiBPbWl0IHRvIGxldCBJ" + + "Q01TIGNob29zZSBhbnkgY29tcHV0ZSBwbGFuZSB3aXRoIGEgbWF0Y2hpbmcgU0tVLgoKIyMgU3Rh" + + "dHVzIGZhbi1vdXQgYWNyb3NzIGNvbXB1dGUgcGxhbmVzCgpgYGBzaAojIExpc3QgYWxsIHJlZ2lz" + + "dGVyZWQgY29tcHV0ZSBwbGFuZXM6Cm52Y2YtY2xpIGNsdXN0ZXIgbGlzdC1yZWdpc3RlcmVkIC0t" + + "bmNhLWlkPSROQ0FfSUQgLS1pY21zLXVybD0kSUNNUyAtLWpzb24gXAogIHwganEgLXIgJy5jbHVz" + + "dGVyc1tdLmNsdXN0ZXJOYW1lJyA+IGNsdXN0ZXJzLnR4dAoKIyBTdGF0dXMgc25hcHNob3QgcGVy" + + "IGNvbXB1dGUgcGxhbmUgKGFzc3VtaW5nIGVhY2ggY29udGV4dCBuYW1lIG1hdGNoZXMpOgp3aGls" + + "ZSByZWFkIE5BTUU7IGRvCiAgZWNobyAiPT09ICROQU1FID09PSIKICBudmNmLWNsaSBzZWxmLWhv" + + "c3RlZCBzdGF0dXMgXAogICAgLS1jbHVzdGVyLW5hbWU9JE5BTUUgXAogICAgLS1jb21wdXRlLXBs" + + "YW5lLWNvbnRleHQ9YWRtaW5AJE5BTUUgXAogICAgLS1qc29uIHwganEgLWMgJ3tjbHVzdGVyOi5j" + + "bHVzdGVyLCB2ZXJkaWN0Oi52ZXJkaWN0LCByZWNvbmNpbGU6LnJlY29uY2lsZUFnZVNlY30nCmRv" + + "bmUgPCBjbHVzdGVycy50eHQKYGBgCgpBIGZ1dHVyZSBNKzExIG1pbGVzdG9uZSB3aWxsIGFkZCBu" + + "YXRpdmUgZmFuLW91dCAoYHN0YXR1cyAtLWFsbC1jb21wdXRlLXBsYW5lc2ApIHNvIHRoaXMgZG9l" + + "c24ndCBuZWVkIGEgc2hlbGwgbG9vcC4KUEsHCKEU44FdDAAAXQwAAFBLAwQUAAgAAAAAACEAAAAA" + + "AAAAAAAAAAAANwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvYWRkLWNvbXB1" + + "dGUtcGxhbmUubWRVVAUAAQCmzhIjIEFkZCBhIGNvbXB1dGUgcGxhbmUgdG8gYW4gZXhpc3Rpbmcg" + + "Y29udHJvbCBwbGFuZQoKVXNlciBoYXMgYSB3b3JraW5nIE5WQ0YgY29udHJvbCBwbGFuZSAocnVu" + + "bmluZyBzb21ld2hlcmUpIGFuZCB3YW50cyB0byByZWdpc3RlciBhIG5ldyBHUFUgY2x1c3RlciBh" + + "Z2FpbnN0IGl0LiBUaGlzIGlzIHRoZSBtdWx0aS1jbHVzdGVyIHNjYWxpbmcgcGF0aDogb25lIGNv" + + "bnRyb2wgcGxhbmUg4oaSIE4gY29tcHV0ZSBwbGFuZXMuCgojIyBQcmVyZXF1aXNpdGVzIHRoZSB1" + + "c2VyIG11c3QgaGF2ZQoKLSAqKmt1YmVjdGwgY29udGV4dCBmb3IgdGhlIG5ldyBjb21wdXRlIHBs" + + "YW5lKiogaW4gdGhlaXIgYEtVQkVDT05GSUdgLgotICoqUHVibGljIElDTVMgVVJMKiogb2YgdGhl" + + "IGV4aXN0aW5nIGNvbnRyb2wgcGxhbmUgKGUuZy4gYGh0dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUu" + + "Y29tYCkuCi0gKipBZG1pbiBKV1QqKiBmb3IgdGhlIGNvbnRyb2wgcGxhbmUncyBhY2NvdW50LCBP" + + "UiBhYmlsaXR5IHRvIG1pbnQgb25lIHZpYSBgbnZjZi1jbGkgaW5pdGAgYWdhaW5zdCB0aGUgY29u" + + "dHJvbCBwbGFuZSdzIHB1YmxpYyBhcGkgZW5kcG9pbnQuIChBZG1pbiB0b2tlbnMgY29tZSBmcm9t" + + "IHRoZSBBUEkgS2V5cyBzZXJ2aWNlIHZpYSB0aGUgcHVibGljIGFwaSBnYXRld2F5IOKAlCBrdWJl" + + "Y3RsIGFjY2VzcyB0byB0aGUgY29udHJvbCBwbGFuZSBpcyBOT1QgcmVxdWlyZWQgdG8gb2J0YWlu" + + "IG9uZS4pCi0gQSB1bmlxdWUgYC0tY2x1c3Rlci1uYW1lYCB0aGF0IGRvZXNuJ3QgY29sbGlkZSB3" + + "aXRoIGFscmVhZHktcmVnaXN0ZXJlZCBjbHVzdGVycy4gVXNlIGBudmNmLWNsaSBjbHVzdGVyIGxp" + + "c3QtcmVnaXN0ZXJlZCAtLW5jYS1pZD0kTkNBX0lEIC0taWNtcy11cmw9JElDTVNgIHRvIGNoZWNr" + + "LgoKIyMgU3RlcHMKCjEuICoqQXNrIGZvciBpbnB1dHM6KioKICAgLSBgLS1jbHVzdGVyLW5hbWU9" + + "PHVuaXF1ZT5gIOKAlCBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGNvbnRyb2wgcGxhbmUncyBO" + + "Q0Egc2NvcGUKICAgLSBgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9PGNvbnRleHQ+YCDigJQgdGhl" + + "IG5ldyBHUFUgY2x1c3RlcidzIGt1YmVjdGwgY29udGV4dAogICAtIGAtLWljbXMtdXJsPTxodHRw" + + "czovL2ljbXMubnZjZi5leGFtcGxlLmNvbT5gIOKAlCBjb250cm9sIHBsYW5lJ3MgcHVibGljIElD" + + "TVMgVVJMCiAgIC0gR1BVIHR5cGU/IChkZWZhdWx0IGBIMTAwYCwgYnV0IGFzaykKCjIuICoqUHJl" + + "LWZsaWdodCBqdXN0IHRoZSBjb21wdXRlIHBsYW5lOioqCgogICBgYGBzaAogICBudmNmLWNsaSBz" + + "ZWxmLWhvc3RlZCBjaGVjayAtLXByZSBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9JENU" + + "WCBcCiAgICAgLS1pY21zLXVybD0kSUNNUyBcCiAgICAgLS1qc29uIHwganEgLWMgLgogICBgYGAK" + + "CiAgIFRoaXMgdmFsaWRhdGVzIHRoZSBHUFUgb3BlcmF0b3IgaXMgaW5zdGFsbGVkLCBHUFUgbm9k" + + "ZSBsYWJlbHMgYXJlIHByZXNlbnQsIGFuZCBJQ01TIGlzIHJlYWNoYWJsZSB2aWEgSFRUUC4gQWRk" + + "cmVzcyBhbnkgZmFpbHVyZXMgYmVmb3JlIHByb2NlZWRpbmcuCgozLiAqKlJ1biBgYWRkLWNvbXB1" + + "dGUtcGxhbmVgOioqCgogICBgYGBzaAogICBudmNmLWNsaSBzZWxmLWhvc3RlZCBhZGQtY29tcHV0" + + "ZS1wbGFuZSBcCiAgICAgLS1jbHVzdGVyLW5hbWU9JE5BTUUgXAogICAgIC0tY29tcHV0ZS1wbGFu" + + "ZS1jb250ZXh0PSRDVFggXAogICAgIC0taWNtcy11cmw9JElDTVMgXAogICAgIC0tdG9rZW49JEpX" + + "VCBcCiAgICAgLS1ub24taW50ZXJhY3RpdmUgXAogICAgIC0tanNvbgogICBgYGAKCiAgIFRoaXMg" + + "aXMgYSBzZXBhcmF0ZSBzdWJjb21tYW5kIGZyb20gYHVwYC4gSXQgcnVucyBvbmx5IHRoZSBjb21w" + + "dXRlLXBsYW5lLXJlbGV2YW50IHBoYXNlczogMSAoY29tcHV0ZS1wbGFuZSBwcmVmbGlnaHQpLCA1" + + "IChyZWdpc3RlciksIDYgKGNvbXB1dGUtcGxhbmUgYXBwbHkpLCA4IChmaW5hbCBoZWFsdGggb24g" + + "dGhlIG5ldyBjb21wdXRlIHBsYW5lKS4gSXQgZG9lcyBOT1QgdG91Y2ggdGhlIGNvbnRyb2wgcGxh" + + "bmUgYW5kIGRvZXMgTk9UIGFjY2VwdCBgLS1jb250cm9sLXBsYW5lLWNvbnRleHRgIOKAlCB0aGUg" + + "Y29udHJvbCBwbGFuZSBpcyByZWFjaGVkIG92ZXIgSFRUUFMgYXQgYC0taWNtcy11cmxgLiBgLS10" + + "b2tlbmAgaXMgcmVxdWlyZWQgYmVjYXVzZSB0aGVyZSdzIG5vIGt1YmVjdGwgcGF0aCB0byBtaW50" + + "IG9uZSBmcm9tLgoKNC4gKipWZXJpZnkuKiogYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1cyAt" + + "LWNsdXN0ZXItbmFtZT0kTkFNRSAtLWpzb24gfCBqcWAg4oCUIGV4cGVjdCBgdmVyZGljdDogImhl" + + "YWx0aHkiYC4gVGhlIFJlZ2lzdGVyZWQgQ29tcHV0ZSBQbGFuZXMgcGFuZWwgZnJvbSBJQ01TIHNo" + + "b3VsZCBub3cgbGlzdCB0aGUgbmV3IGNsdXN0ZXIuCgo1LiAqKlNtb2tlLioqIFtkZXBsb3ktYW5k" + + "LWludm9rZS5tZF0oZGVwbG95LWFuZC1pbnZva2UubWQpIOKAlCBkZXBsb3kgYSBzbWFsbCBmdW5j" + + "dGlvbiB0byB0aGUgbmV3IGNvbXB1dGUgcGxhbmUgdG8gY29uZmlybSBzY2hlZHVsaW5nIHdvcmtz" + + "LgoKIyMgV2hhdCBpZiBhIGNsdXN0ZXIgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3Rz" + + "PwoKYGFkZC1jb21wdXRlLXBsYW5lYCdzIHJlZ2lzdGVyIHBoYXNlIHVzZXMgYC0taWdub3JlLWV4" + + "aXN0aW5nYCBzZW1hbnRpY3Mg4oCUIGl0J2xsIG1hdGNoIHRoZSBleGlzdGluZyBJQ01TIHJvdyBh" + + "bmQgcmV1c2UgaXRzIGNsdXN0ZXJJZC4gVHdvIHNjZW5hcmlvczoKCi0gKipSZS1yZWdpc3Rlcmlu" + + "ZyB0aGUgc2FtZSBjbHVzdGVyKiogKHJlLXJ1bm5pbmcgb24gdGhlIHNhbWUgY29tcHV0ZSBwbGFu" + + "ZSB0aGF0IHdhcyBwcmV2aW91c2x5IHJlZ2lzdGVyZWQpOiBleHBlY3RlZCwgbm8tb3Agc2VtYW50" + + "aWNzLgotICoqRGlmZmVyZW50IHBoeXNpY2FsIGNsdXN0ZXIgYnV0IHNhbWUgbmFtZSoqOiB0aGUg" + + "c2Vjb25kIGF0dGVtcHQgd2lsbCByZXVzZSB0aGUgSUNNUyByb3csIGJ1dCB0aGUgbmV3IGNvbXB1" + + "dGUgcGxhbmUncyBKV0tTIHdpbGwgYmUgc2lsZW50bHkgKnJlcGxhY2VkKiDigJQgdGhlIG9sZCBj" + + "b21wdXRlIHBsYW5lJ3MgTlZDQSBhZ2VudCB3aWxsIHN0YXJ0IGZhaWxpbmcgUFNBVCBhdXRoLiAq" + + "KkNvbmZpcm0gd2l0aCB0aGUgdXNlcioqIHRoYXQgdGhleSBtZWFudCB0byBvdmVyd3JpdGUuCgpX" + + "aGVuIGluIGRvdWJ0LCBydW4gYG52Y2YtY2xpIGNsdXN0ZXIgbGlzdC1yZWdpc3RlcmVkIC0tbmNh" + + "LWlkPSROQ0FfSUQgLS1pY21zLXVybD0kSUNNU2AgZmlyc3QgYW5kIGFzayB0aGUgdXNlciBiZWZv" + + "cmUgcHJvY2VlZGluZyB3aXRoIGEgbmFtZSB0aGF0IGFscmVhZHkgZXhpc3RzLgpQSwcIQidJDwUN" + + "AAAFDQAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA5AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdl" + + "ZC1jbGkvcHJvbXB0cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kVVQFAAEAps4SIyBDcmVhdGUgYW5k" + + "IHJ1biBhIHRhc2sKClN0YW5kYXJkIGZsb3c6IG1pbnQgQVBJIGtleXMgLT4gdGFzayBDUkVBVEUg" + + "LT4gbW9uaXRvciAtPiByZXRyaWV2ZSByZXN1bHRzIC0+IGNsZWFudXAuCgojIyAxLiBNaW50IEFQ" + + "SSBrZXlzCgpUaGUgYWRtaW4gdG9rZW4gZnJvbSBgaW5pdGAgZG9lcyBub3QgY2FycnkgdGFzayBp" + + "bnZvY2F0aW9uIHNjb3BlLiBHZW5lcmF0ZSBBUEkga2V5czoKCmBgYHNoCm52Y2YtY2xpIGFwaS1r" + + "ZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj0idGFzayBzbW9rZSB0ZXN0IiAtLWV4cGlyZXMtaW49" + + "OGgKIyAtPiBmdW5jdGlvbiBrZXk6IG52YXBpLS4uLgojIC0+IHRhc2sga2V5OiBudmFwaS0uLi4K" + + "YGBgCgpCb3RoIGtleXMgYXJlIHNhdmVkIHRvIENMSSBzdGF0ZS4gVG8gbWludCBvbmx5IHRoZSB0" + + "YXNrIGtleToKCmBgYHNoCm52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1mb3IgdGFzayAtLWRl" + + "c2NyaXB0aW9uPSJ0YXNrIHNtb2tlIHRlc3QiIC0tZXhwaXJlcy1pbj04aApgYGAKClRvIHZhbGlk" + + "YXRlIGVhY2gga2V5IGltbWVkaWF0ZWx5IGFmdGVyIG1pbnRpbmc6CgpgYGBzaApudmNmLWNsaSBh" + + "cGkta2V5IGdlbmVyYXRlIC0tZGVzY3JpcHRpb249InRhc2sgc21va2UgdGVzdCIgLS1leHBpcmVz" + + "LWluPThoIC0tdmFsaWRhdGUKIyAtPiBmdW5jdGlvbiBBUEkga2V5IHZhbGlkYXRpb24gcGFzc2Vk" + + "IQojIC0+IHRhc2sgQVBJIGtleSB2YWxpZGF0aW9uIHBhc3NlZCEKYGBgCgpOZXZlciBlY2hvIHRo" + + "ZSBrZXkgdmFsdWUgKG52YXBpLS4uLikgaW50byBjaGF0IG9yIGxvZ3MuIFJlcG9ydCBvbmx5IHRo" + + "YXQgdGhlIGtleSB3YXMgbWludGVkLCBpdHMgZGVzY3JpcHRpb24sIGFuZCBpdHMgZXhwaXJ5IOKA" + + "lCBuZXZlciB0aGUgdmFsdWUgaXRzZWxmLgoKIyMjIEZyZXNoIHNlc3Npb24gcHJlLWZsaWdodAoK" + + "QmVmb3JlIHJ1bm5pbmcgYW55IGB0YXNrYCBjb21tYW5kIGluIGEgZnJlc2ggYWdlbnQgc2Vzc2lv" + + "biwgdmVyaWZ5IGNyZWRlbnRpYWxzOgoKMS4gQ2hlY2sgd2hldGhlciBgTlZDRl9BUElfS0VZYCBp" + + "cyBzZXQ6CgogICBgYGBzaAogICBwcmludGVudiBOVkNGX0FQSV9LRVkgPiAvZGV2L251bGwgMj4m" + + "MSAmJiBlY2hvIHNldCB8fCBlY2hvIHVuc2V0CiAgIGBgYAoKMi4gSWYgdW5zZXQsIHJlYWQgdGhl" + + "IHN0b3JlZCBrZXkgZXhwaXJ5IHdpdGhvdXQgcHJpbnRpbmcgdGhlIHZhbHVlOgoKICAgYGBgc2gK" + + "ICAgcHl0aG9uMyAtYyAiaW1wb3J0IGpzb24scGF0aGxpYjsgcz1qc29uLmxvYWRzKHBhdGhsaWIu" + + "UGF0aCgnfi8ubnZjZi1jbGkuc3RhdGUnKS5leHBhbmR1c2VyKCkucmVhZF90ZXh0KCkpOyBwcmlu" + + "dChzLmdldCgnbnZjdEFwaUtleUV4cGlyYXRpb24nLCdtaXNzaW5nJykpIgogICBgYGAKCjMuIElm" + + "IHRoZSBleHBpcnkgaXMgaW4gdGhlIHBhc3Qgb3IgbWlzc2luZywgcmVnZW5lcmF0ZToKCiAgIGBg" + + "YHNoCiAgIG52Y2YtY2xpIHJlZnJlc2gKICAgbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWZv" + + "ciB0YXNrIC0tZGVzY3JpcHRpb249InRhc2sta2V5IiAtLWV4cGlyZXMtaW49MjRoIC0tdmFsaWRh" + + "dGUKICAgYGBgCgo0LiBJbmplY3QgdGhlIHN0b3JlZCBrZXkgaW50byB0aGUgc3VicHJvY2VzcyBl" + + "bnYgd2l0aG91dCBsb2dnaW5nIHRoZSB2YWx1ZS4gVXNlIGEgc2hlbGwgc3Vic2hlbGwgb3IgZW52" + + "IHByZWZpeCDigJQgbmV2ZXIgcHJpbnQgdGhlIGtleSBpbnRvIGNoYXQuCgpFcnJvciBjbGFzc2lm" + + "aWNhdGlvbjoKCi0gIm1pc3NpbmcgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMiIG9yIGV4aXQg" + + "Mjoga2V5IG5vdCBpbmplY3RlZDsgcmVwZWF0IHByZS1mbGlnaHQuCi0gSFRUUCA0MDM6IGtleSBl" + + "eHBpcmVkIG9yIHdyb25nIGF1ZGllbmNlOyByZWdlbmVyYXRlLgotIEVtcHR5IHRhc2sgbGlzdDog" + + "dmFsaWQ7IG5vIHRhc2tzIGV4aXN0IHlldC4KCiMjIDIuIFRhc2sgQ1JFQVRFOiBjb250YWluZXIK" + + "CkRlZmluZSB0aGUgdGFzayBpbiBhIEpTT04gZmlsZS4gTWluaW11bSB2aWFibGUgY29udGFpbmVy" + + "IHRhc2s6CgpgYGBqc29uCnsKICAibmFtZSI6ICJzbW9rZS1jb250YWluZXItdGFzayIsCiAgImdw" + + "dVNwZWNpZmljYXRpb24iOiB7CiAgICAiZ3B1IjogIkgxMDAiLAogICAgImluc3RhbmNlVHlwZSI6" + + "ICJOQ1AuR1BVLkgxMDBfMXgiLAogICAgImJhY2tlbmQiOiAibmNwLWxvY2FsIgogIH0sCiAgImNv" + + "bnRhaW5lckltYWdlIjogIm52Y3IuaW8vbnZpZGlhL25lbW86bGF0ZXN0IiwKICAiY29udGFpbmVy" + + "QXJncyI6ICJweXRob24gLWMgXCJwcmludCgnaGVsbG8gZnJvbSB0YXNrJylcIiIsCiAgInJlc3Vs" + + "dEhhbmRsaW5nU3RyYXRlZ3kiOiAiTk9ORSIKfQpgYGAKCmBgYHNoCm52Y2YtY2xpIHRhc2sgY3Jl" + + "YXRlIC0taW5wdXQtZmlsZT10YXNrLWNvbnRhaW5lci5qc29uCiMgLT4gVGFzayBJRDogPHRhc2tf" + + "aWQ+CmBgYAoKQ2FwdHVyZSB0aGUgdGFzayBJRCBmcm9tIHRoZSBvdXRwdXQuIFN0YXRlIHBlcnNp" + + "c3RlbmNlIGNhbiBmYWlsIHNpbGVudGx5LCBzbyBwYXNzCmA8dGFza0lkPmAgZXhwbGljaXRseSBv" + + "biBzdWJzZXF1ZW50IGNvbW1hbmRzIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gc2F2ZWQgc3RhdGUu" + + "CgpFcXVpdmFsZW50IENMSSBmbGFncyBmb3JtIGZvciBxdWljayBhZC1ob2MgcnVuczoKCmBgYHNo" + + "Cm52Y2YtY2xpIHRhc2sgY3JlYXRlIFwKICAtLW5hbWU9c21va2UtY29udGFpbmVyLXRhc2sgXAog" + + "IC0tZ3B1PUgxMDAgXAogIC0taW5zdGFuY2UtdHlwZT1OQ1AuR1BVLkgxMDBfMXggXAogIC0tYmFj" + + "a2VuZD1uY3AtbG9jYWwgXAogIC0taW1hZ2U9bnZjci5pby9udmlkaWEvbmVtbzpsYXRlc3QgXAog" + + "IC0tY29udGFpbmVyLWFyZ3M9InB5dGhvbiAtYyAncHJpbnQoaGVsbG8gZnJvbSB0YXNrKSciIFwK" + + "ICAtLXJlc3VsdC1zdHJhdGVneT1OT05FCmBgYAoKVG8gdGFyZ2V0IGEgc3BlY2lmaWMgY29tcHV0" + + "ZSBjbHVzdGVyOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPXRhc2st" + + "Y29udGFpbmVyLmpzb24gLS1jbHVzdGVycz1teS1jbHVzdGVyCmBgYAoKVG8gaW5qZWN0IGVudmly" + + "b25tZW50IHZhcmlhYmxlcyBvciBzZWNyZXRzLCBlaXRoZXIgcGFzcyBmbGFnczoKCmBgYHNoCm52" + + "Y2YtY2xpIHRhc2sgY3JlYXRlIC0taW5wdXQtZmlsZT10YXNrLWNvbnRhaW5lci5qc29uIFwKICAt" + + "LWNvbnRhaW5lci1lbnYgTVlfRU5WPXZhbHVlIFwKICAtLXNlY3JldHMgTVlfU0VDUkVUPXMzY3Iz" + + "dApgYGAKCm9yIHNldCB0aGVtIGluIHRoZSBKU09OIGZpbGU6CgpgYGBqc29uCnsKICAiY29udGFp" + + "bmVyRW52aXJvbm1lbnQiOiBbCiAgICB7ImtleSI6ICJNWV9FTlYiLCAidmFsdWUiOiAidmFsdWUi" + + "fQogIF0sCiAgInNlY3JldHMiOiBbCiAgICB7Im5hbWUiOiAiTVlfU0VDUkVUIiwgInZhbHVlIjog" + + "InMzY3IzdCJ9CiAgXQp9CmBgYAoKU2VjcmV0cyBhcmUgZW5jcnlwdGVkIGF0IHJlc3QgYW5kIG5v" + + "dCByZXR1cm5lZCBpbiBsaXN0IG9yIGdldCByZXNwb25zZXMgYnkgZGVmYXVsdDsgZG8gbm90IGxv" + + "ZyB0aGVtLgoKIyMgMy4gVGFzayBDUkVBVEU6IEhlbG0KCkZvciBIZWxtLXR5cGUgdGFza3MsIHJl" + + "cGxhY2UgYGNvbnRhaW5lckltYWdlYCB3aXRoIGBoZWxtQ2hhcnRgOgoKYGBganNvbgp7CiAgIm5h" + + "bWUiOiAic21va2UtaGVsbS10YXNrIiwKICAiZ3B1U3BlY2lmaWNhdGlvbiI6IHsKICAgICJncHUi" + + "OiAiSDEwMCIsCiAgICAiaW5zdGFuY2VUeXBlIjogIk5DUC5HUFUuSDEwMF8xeCIsCiAgICAiYmFj" + + "a2VuZCI6ICJuY3AtbG9jYWwiCiAgfSwKICAiaGVsbUNoYXJ0IjogImh0dHBzOi8vaGVsbS5uZ2Mu" + + "bnZpZGlhLmNvbS88b3JnPi9jaGFydHMvZXhhbXBsZS10YXNrLTAuMS4wLnRneiIsCiAgInJlc3Vs" + + "dEhhbmRsaW5nU3RyYXRlZ3kiOiAiTk9ORSIKfQpgYGAKCmBgYHNoCm52Y2YtY2xpIHRhc2sgY3Jl" + + "YXRlIC0taW5wdXQtZmlsZT10YXNrLWhlbG0uanNvbgojIC0+IFRhc2sgSUQ6IDx0YXNrX2lkPgpg" + + "YGAKCmBoZWxtQ2hhcnRgIGFuZCBgY29udGFpbmVySW1hZ2VgIGFyZSBtdXR1YWxseSBleGNsdXNp" + + "dmUuCgojIyAzYi4gVXBkYXRlIHNlY3JldHMgb24gYSBydW5uaW5nIHRhc2sKCmBgYHNoCm52Y2Yt" + + "Y2xpIHRhc2sgdXBkYXRlLXNlY3JldHMgPHRhc2tfaWQ+IC0tc2VjcmV0cyBOQU1FPXZhbHVlCmBg" + + "YAoKYHVwZGF0ZS1zZWNyZXRzYCBtZXJnZXMgc2VjcmV0cyBieSBuYW1lOiBzdXBwbGllZCBzZWNy" + + "ZXRzIGFyZSBhZGRlZCBvciB1cGRhdGVkLCBhbmQgZXhpc3Rpbmcgc2VjcmV0cyBub3QgaW5jbHVk" + + "ZWQgaW4gdGhlIHJlcXVlc3QgYXJlIHByZXNlcnZlZC4gRG8gbm90IGVjaG8gc2VjcmV0IHZhbHVl" + + "cyBpbnRvIGNoYXQuCgojIyA0LiBNb25pdG9yCgpQb2xsIHRhc2sgc3RhdGU6CgpgYGBzaApudmNm" + + "LWNsaSB0YXNrIGdldCA8dGFza19pZD4KIyAtPiBpZDogPHRhc2tfaWQ+CiMgLT4gc3RhdHVzOiBS" + + "VU5OSU5HCmBgYAoKT3IgdXNlIHRoZSB0YXNrIElEIHNhdmVkIHRvIHN0YXRlIGZyb20gdGhlIG1v" + + "c3QgcmVjZW50IGB0YXNrIGNyZWF0ZWA6CgpgYGBzaApudmNmLWNsaSB0YXNrIGdldApgYGAKClN0" + + "YXR1cyB2YWx1ZXM6IGBRVUVVRURgLCBgTEFVTkNIRURgLCBgUlVOTklOR2AsIGBDT01QTEVURURg" + + "LCBgRVJST1JFRGAsIGBDQU5DRUxFRGAsIGBFWENFRURFRF9NQVhfUlVOVElNRV9EVVJBVElPTmAs" + + "IGBFWENFRURFRF9NQVhfUVVFVUVEX0RVUkFUSU9OYC4KCkluc3BlY3QgbGlmZWN5Y2xlIGV2ZW50" + + "cyBmb3IgcHJvZ3Jlc3MgZGV0YWlscyBvciBmYWlsdXJlIGNvbnRleHQ6CgpgYGBzaApudmNmLWNs" + + "aSB0YXNrIGV2ZW50cyA8dGFza19pZD4KYGBgCgpJZiB0aGUgdGFzayBpcyBzdHVjayBpbiBgUVVF" + + "VUVEYCwgY2hlY2sgdGhhdCBhIGNvbXB1dGUgY2x1c3RlciB3aXRoIGEgbWF0Y2hpbmcgR1BVIFNL" + + "VQppcyByZWdpc3RlcmVkIGFuZCBoZWFsdGh5IChgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVz" + + "YCkuCgpJZiB0aGUgdGFzayBtb3ZlcyB0byBgRVJST1JFRGAsIHRoZSBldmVudHMgb3V0cHV0IGNv" + + "bnRhaW5zIHRoZSBmYWlsdXJlIHJlYXNvbi4gRm9yCmNvbnRhaW5lci1sZXZlbCBkZXRhaWwsIGlu" + + "c3BlY3QgdGhlIHRhc2sgd29ya2xvYWQgcG9kcyBvbiB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVy" + + "IHdpdGgKYGt1YmVjdGxgIGFnYWluc3QgdGhlIGFwcHJvcHJpYXRlIG5hbWVzcGFjZSBhbmQgY29u" + + "dGV4dC4KCiMjIDUuIFJldHJpZXZlIHJlc3VsdHMKCkZvciB0YXNrcyB3aXRoIGByZXN1bHRIYW5k" + + "bGluZ1N0cmF0ZWd5OiBOT05FYCwgcmVzdWx0cyBhcmUgZW1wdHkgYnkgZGVzaWduOgoKYGBgc2gK" + + "bnZjZi1jbGkgdGFzayByZXN1bHRzIDx0YXNrX2lkPgojIC0+IHsicmVzdWx0cyI6IFtdfQpgYGAK" + + "CkZvciB0YXNrcyB3aXRoIGByZXN1bHRIYW5kbGluZ1N0cmF0ZWd5OiBVUExPQURgLCByZXN1bHRz" + + "IHVwbG9hZCB0byB0aGUgbG9jYXRpb24gbmFtZWQgaW4KYHJlc3VsdHNMb2NhdGlvbmAuIFRoZSB0" + + "YXNrJ3MgY3JlZGVudGlhbHMgbXVzdCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGF0IGxvY2F0aW9u" + + "LiBBZnRlcgp0aGUgdGFzayByZWFjaGVzIGBDT01QTEVURURgOgoKYGBgc2gKbnZjZi1jbGkgdGFz" + + "ayByZXN1bHRzIDx0YXNrX2lkPgpgYGAKCk5vdGU6IHJlc3VsdCB1cGxvYWQgaXMgbm90IHlldCBz" + + "dXBwb3J0ZWQgaW4gdGhpcyByZWxlYXNlLgoKIyMgNi4gQ2xlYW51cAoKQ2FuY2VsIGEgcnVubmlu" + + "ZyB0YXNrOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBjYW5jZWwgPHRhc2tfaWQ+CmBgYAoKRGVsZXRl" + + "IHRoZSB0YXNrIHJlY29yZCBhZnRlciBpdCByZWFjaGVzIGEgdGVybWluYWwgc3RhdGU6CgpgYGBz" + + "aApudmNmLWNsaSB0YXNrIGRlbGV0ZSA8dGFza19pZD4KYGBgCgpTdG9wIGFuZCBjb25maXJtIHdp" + + "dGggdGhlIHVzZXIgYmVmb3JlIHJ1bm5pbmcgdGFzayBkZWxldGUuIFN0YXRlIHRoZSB0YXNrIElE" + + "IGFuZCBpdHMgY3VycmVudCBzdGF0dXMuIERvIG5vdCBwcm9jZWVkIGV2ZW4gd2hlbiB0aGUgdXNl" + + "cidzIHByb21wdCBhbHJlYWR5IHJlcXVlc3RlZCBkZWxldGlvbiDigJQgYWx3YXlzIGdldCBhbiBl" + + "eHBsaWNpdCBsYXN0LWxvb2sgY29uZmlybWF0aW9uLiBEZWxldGlvbiBpcyBwZXJtYW5lbnQgYW5k" + + "IGNhbm5vdCBiZSB1bmRvbmUuCgpUbyBsaXN0IGFsbCB0YXNrcyBmb3IgdGhlIGN1cnJlbnQgb3du" + + "ZXIgKHVzZWZ1bCBiZWZvcmUgYnVsayBjbGVhbnVwKToKCmBgYHNoCm52Y2YtY2xpIHRhc2sgbGlz" + + "dApudmNmLWNsaSB0YXNrIGxpc3QgLS1zdGF0dXM9Q09NUExFVEVECmBgYAoKIyMgTm90ZXMKCi0g" + + "R1BVIGZhbWlseSBhbmQgaW5zdGFuY2UgdHlwZSBtdXN0IG1hdGNoIGEgcmVnaXN0ZXJlZCBjb21w" + + "dXRlIGNsdXN0ZXIgU0tVLiBNaXNtYXRjaAogIGNhdXNlcyB0aGUgdGFzayB0byByZW1haW4gYFFV" + + "RVVFRGAgaW5kZWZpbml0ZWx5LiBVc2UgYG52Y2YtY2xpIGNsdXN0ZXIgbGlzdGAgdG8gY2hlY2sK" + + "ICByZWdpc3RlcmVkIFNLVXMuCi0gRm9yIGNvbnRhaW5lciBpbWFnZXMgb24gcHJpdmF0ZSByZWdp" + + "c3RyaWVzLCBlbnN1cmUgdGhlIGNvbXB1dGUtcGxhbmUgY2x1c3RlcidzCiAgaW1hZ2UtY3JlZGVu" + + "dGlhbC1oZWxwZXIgaXMgY29uZmlndXJlZCBmb3IgdGhlIHJlZ2lzdHJ5IGhvc3QuClBLBwjU3o00" + + "nxkAAJ8ZAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADcACQBkYXRhL252Y2Ytc2VsZi1tYW5h" + + "Z2VkLWNsaS9wcm9tcHRzL2RlcGxveS1hbmQtaW52b2tlLm1kVVQFAAEAps4SIyBEZXBsb3kgYW5k" + + "IGludm9rZSBhIGNvbnRhaW5lciBmdW5jdGlvbgoKU3RhbmRhcmQgZm91ci1zdGVwIGZsb3c6IGZ1" + + "bmN0aW9uIENSRUFURSDihpIgREVQTE9ZIOKGkiBBUEkga2V5IChmb3IgaW52b2tlIHNjb3BlKSDi" + + "hpIgSU5WT0tFLgoKIyMgMS4gRnVuY3Rpb24gQ1JFQVRFCgpEZWZpbmUgdGhlIGZ1bmN0aW9uIGlu" + + "IGEgSlNPTiBmaWxlLiBNaW5pbXVtOgoKQmVmb3JlIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiwgY29u" + + "ZmlybSB0aGUgZXhhY3QgZnVuY3Rpb24gbmFtZSBhbmQgY29udGFpbmVyIGltYWdlIHdpdGggdGhl" + + "IHVzZXIuIElmIGVpdGhlciB2YWx1ZSBpcyBtaXNzaW5nLCBzdG9wIGFuZCBhc2suIERvIG5vdCBp" + + "bnZlbnQgb3Igc3VibWl0IGV4YW1wbGUgdmFsdWVzIGZvciB0aGVzZSBmaWVsZHMuCgpgYGBqc29u" + + "CnsKICAibmFtZSI6ICI8Y29uZmlybWVkLWZ1bmN0aW9uLW5hbWU+IiwKICAiY29udGFpbmVySW1h" + + "Z2UiOiAiPGNvbmZpcm1lZC1jb250YWluZXItaW1hZ2U+IiwKICAiaW5mZXJlbmNlVXJsIjogIi9l" + + "Y2hvIiwKICAiaW5mZXJlbmNlUG9ydCI6IDgwMDAsCiAgImRlc2NyaXB0aW9uIjogInNtb2tlIHRl" + + "c3QgZWNobyBmdW5jdGlvbiIsCiAgImZ1bmN0aW9uVHlwZSI6ICJERUZBVUxUIiwKICAiYXBpQm9k" + + "eUZvcm1hdCI6ICJDVVNUT00iLAogICJoZWFsdGgiOiB7CiAgICAicHJvdG9jb2wiOiAiSFRUUCIs" + + "CiAgICAidXJpIjogIi9oZWFsdGgiLAogICAgInBvcnQiOiA4MDAwLAogICAgInRpbWVvdXQiOiAi" + + "UFQzMFMiLAogICAgImV4cGVjdGVkU3RhdHVzQ29kZSI6IDIwMAogIH0KfQpgYGAKCmBgYHNoCm52" + + "Y2YtY2xpIGZ1bmN0aW9uIGNyZWF0ZSAtLWlucHV0LWZpbGU9Y3JlYXRlLWZuLmpzb24KIyDihpIg" + + "RnVuY3Rpb24gSUQ6IDxmbl9pZD4KIyDihpIgVmVyc2lvbiBJRDogPHZlcl9pZD4KYGBgCgpTYXZl" + + "IHRoZSBJRHMg4oCUIHRoZXkncmUgbmVlZGVkIGZvciBkZXBsb3kgKyBpbnZva2UuCgojIyMgTExN" + + "IGZ1bmN0aW9uIHZhcmlhbnQKCkZvciBhbiBPcGVuQUktY29tcGF0aWJsZSBMTE0gZnVuY3Rpb24s" + + "IHNldCBgZnVuY3Rpb25UeXBlOiAiTExNImAgYW5kIHB1dCByb3V0ZSBtZXRhZGF0YSB1bmRlciBg" + + "bW9kZWxzW10ubGxtQ29uZmlnYDoKCkJlZm9yZSBjcmVhdGluZyB0aGUgZnVuY3Rpb24sIGNvbmZp" + + "cm0gdGhlIGV4YWN0IGZ1bmN0aW9uIG5hbWUsIGNvbnRhaW5lciBpbWFnZSwgYW5kIG1vZGVsIG5h" + + "bWUgd2l0aCB0aGUgdXNlci4gSWYgYW55IHZhbHVlIGlzIG1pc3NpbmcsIHN0b3AgYW5kIGFzay4g" + + "RG8gbm90IGludmVudCBvciBzdWJtaXQgZXhhbXBsZSB2YWx1ZXMgZm9yIHRoZXNlIGZpZWxkcy4K" + + "CmBgYGpzb24KewogICJuYW1lIjogIjxjb25maXJtZWQtZnVuY3Rpb24tbmFtZT4iLAogICJjb250" + + "YWluZXJJbWFnZSI6ICI8Y29uZmlybWVkLWNvbnRhaW5lci1pbWFnZT4iLAogICJpbmZlcmVuY2VV" + + "cmwiOiAiLyIsCiAgImluZmVyZW5jZVBvcnQiOiA4MDAwLAogICJmdW5jdGlvblR5cGUiOiAiTExN" + + "IiwKICAiaGVhbHRoIjogewogICAgInByb3RvY29sIjogIkhUVFAiLAogICAgInVyaSI6ICIvaGVh" + + "bHRoIiwKICAgICJwb3J0IjogODAwMCwKICAgICJ0aW1lb3V0IjogIlBUMzBTIiwKICAgICJleHBl" + + "Y3RlZFN0YXR1c0NvZGUiOiAyMDAKICB9LAogICJtb2RlbHMiOiBbCiAgICB7CiAgICAgICJuYW1l" + + "IjogIjxjb25maXJtZWQtbW9kZWwtbmFtZT4iLAogICAgICAibGxtQ29uZmlnIjogewogICAgICAg" + + "ICJ1cmlzIjogWyIvdjEvY2hhdC9jb21wbGV0aW9ucyIsICIvdjEvcmVzcG9uc2VzIiwgIi92MS9l" + + "bWJlZGRpbmdzIl0sCiAgICAgICAgInJvdXRpbmdNZXRob2QiOiAicm91bmRfcm9iaW4iLAogICAg" + + "ICAgICJ0b2tlblJhdGVMaW1pdCI6ICIxMDAwLVMiCiAgICAgIH0KICAgIH0KICBdCn0KYGBgCgpF" + + "cXVpdmFsZW50IENMSSBmbGFnIGZvcm06CgpgYGBzaApudmNmLWNsaSBmdW5jdGlvbiBjcmVhdGUg" + + "XAogIC0tbmFtZT0iPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1lPiIgXAogIC0taW1hZ2U9Ijxjb25m" + + "aXJtZWQtY29udGFpbmVyLWltYWdlPiIgXAogIC0taW5mZXJlbmNlLXVybD0vIFwKICAtLWluZmVy" + + "ZW5jZS1wb3J0PTgwMDAgXAogIC0taGVhbHRoLXVyaT0vaGVhbHRoIFwKICAtLWhlYWx0aC1wb3J0" + + "PTgwMDAgXAogIC0taGVhbHRoLXRpbWVvdXQ9UFQzMFMgXAogIC0taGVhbHRoLXByb3RvY29sPUhU" + + "VFAgXAogIC0taGVhbHRoLWV4cGVjdGVkLXN0YXR1cz0yMDAgXAogIC0tZnVuY3Rpb24tdHlwZT1M" + + "TE0gXAogIC0tbGxtLW1vZGVsPSduYW1lPTxjb25maXJtZWQtbW9kZWwtbmFtZT4sdXJpcz0vdjEv" + + "Y2hhdC9jb21wbGV0aW9uc3wvdjEvcmVzcG9uc2VzfC92MS9lbWJlZGRpbmdzLHJvdXRpbmdNZXRo" + + "b2Q9cm91bmRfcm9iaW4sdG9rZW5SYXRlTGltaXQ9MTAwMC1TJwpgYGAKClVzZSB0aGUgc2FtZSBk" + + "ZXBsb3kgc3RlcCBiZWxvdyBhZnRlciB0aGUgTExNIGZ1bmN0aW9uIGlzIGNyZWF0ZWQuCgpPcHRp" + + "b25hbCBtb2RlbCByb3V0aW5nIHVwZGF0ZSBhZnRlciBjcmVhdGlvbjoKCmBgYHNoCm52Y2YtY2xp" + + "IGZ1bmN0aW9uIHVwZGF0ZSBcCiAgLS1mdW5jdGlvbi1pZD08Zm5faWQ+IFwKICAtLXZlcnNpb24t" + + "aWQ9PHZlcl9pZD4gXAogIC0tbGxtLW1vZGVsLXVwZGF0ZT0nbmFtZT08Y29uZmlybWVkLW1vZGVs" + + "LW5hbWU+LHJvdXRpbmdNZXRob2Q9cG93ZXJfb2ZfdHdvLHRva2VuUmF0ZUxpbWl0PTEwMDAtUycK" + + "YGBgCgpVc2UgdGhpcyBmb3IgbXV0YWJsZSBgcm91dGluZ01ldGhvZGAgYW5kIGB0b2tlblJhdGVM" + + "aW1pdGA7IGNyZWF0ZS10aW1lIGB1cmlzYCBzdGF5IGluIGBtb2RlbHNbXS5sbG1Db25maWdgLgpg" + + "dG9rZW5SYXRlTGltaXRgIHN1cHBvcnRzIHBvc2l0aXZlIGludGVnZXIgdG9rZW4gbGltaXRzIGZv" + + "ciBgU2AsIGBNYCwgYEhgLCBgRGAsIGFuZCBgV2AuIFVzZSBgMTAwMC1TYCBmb3IgYSBzaW5nbGUg" + + "aW5saW5lIENMSSBsaW1pdC4gVXNlIGlucHV0IEpTT04gZm9yIGNvbWJpbmVkIGxpbWl0cywgc3Vj" + + "aCBhcyBgMTAwMC1TLDUwMDAtTSwxMDAwMDAtSCw1MDAwMDAtRCwxMDAwMDAwLVdgLCBiZWNhdXNl" + + "IGlubGluZSBtb2RlbCBzcGVjcyB1c2UgY29tbWFzIGFzIGZpZWxkIHNlcGFyYXRvcnMuCgojIyMg" + + "SGVsbSBjaGFydCBMTE0gZnVuY3Rpb24gdmFyaWFudAoKTExNIGZ1bmN0aW9uIHR5cGUgaXMgaW5k" + + "ZXBlbmRlbnQgb2Ygd29ya2xvYWQgcGFja2FnaW5nLiBGb3IgYSBIZWxtLWNoYXJ0IGJhY2tlZCBM" + + "TE0gZnVuY3Rpb24sIGtlZXAgdGhlIHNhbWUgYGZ1bmN0aW9uVHlwZWAgYW5kIGBtb2RlbHNbXS5s" + + "bG1Db25maWdgIGZpZWxkcywgdGhlbiBzZXQgYGhlbG1DaGFydGAgYW5kIGBoZWxtQ2hhcnRTZXJ2" + + "aWNlTmFtZWAuIFRoZSBzZXJ2aWNlIG5hbWUgbXVzdCBtYXRjaCBhIEt1YmVybmV0ZXMgU2Vydmlj" + + "ZSByZW5kZXJlZCBieSB0aGUgY2hhcnQsIGFuZCBgaW5mZXJlbmNlUG9ydGAgbXVzdCBiZSB0aGF0" + + "IFNlcnZpY2UgcG9ydC4KCkJlZm9yZSBjcmVhdGluZyB0aGUgZnVuY3Rpb24sIGNvbmZpcm0gdGhl" + + "IGV4YWN0IGZ1bmN0aW9uIG5hbWUgYW5kIG1vZGVsIG5hbWUgd2l0aCB0aGUgdXNlci4gSWYgZWl0" + + "aGVyIHZhbHVlIGlzIG1pc3NpbmcsIHN0b3AgYW5kIGFzay4gRG8gbm90IGludmVudCBvciBzdWJt" + + "aXQgZXhhbXBsZSB2YWx1ZXMgZm9yIHRoZXNlIGZpZWxkcy4KCmBgYGpzb24KewogICJuYW1lIjog" + + "Ijxjb25maXJtZWQtZnVuY3Rpb24tbmFtZT4iLAogICJpbmZlcmVuY2VVcmwiOiAiLyIsCiAgImlu" + + "ZmVyZW5jZVBvcnQiOiA4MDAwLAogICJmdW5jdGlvblR5cGUiOiAiTExNIiwKICAiaGVhbHRoIjog" + + "ewogICAgInByb3RvY29sIjogIkhUVFAiLAogICAgInVyaSI6ICIvaGVhbHRoIiwKICAgICJwb3J0" + + "IjogODAwMCwKICAgICJ0aW1lb3V0IjogIlBUMzBTIiwKICAgICJleHBlY3RlZFN0YXR1c0NvZGUi" + + "OiAyMDAKICB9LAogICJoZWxtQ2hhcnQiOiAiaHR0cHM6Ly9oZWxtLm5nYy5udmlkaWEuY29tL2V4" + + "YW1wbGUvdGVhbS9jaGFydHMvb3BlbmFpLWNvbXBhdGlibGUtMC4xLjAudGd6IiwKICAiaGVsbUNo" + + "YXJ0U2VydmljZU5hbWUiOiAib3BlbmFpLWNvbXBhdGlibGUiLAogICJtb2RlbHMiOiBbCiAgICB7" + + "CiAgICAgICJuYW1lIjogIjxjb25maXJtZWQtbW9kZWwtbmFtZT4iLAogICAgICAibGxtQ29uZmln" + + "IjogewogICAgICAgICJ1cmlzIjogWyIvdjEvY2hhdC9jb21wbGV0aW9ucyIsICIvdjEvcmVzcG9u" + + "c2VzIiwgIi92MS9lbWJlZGRpbmdzIl0sCiAgICAgICAgInJvdXRpbmdNZXRob2QiOiAicm91bmRf" + + "cm9iaW4iLAogICAgICAgICJ0b2tlblJhdGVMaW1pdCI6ICIxMDAwLVMiCiAgICAgIH0KICAgIH0K" + + "ICBdCn0KYGBgCgpFcXVpdmFsZW50IENMSSBmbGFnIGZvcm06CgpgYGBzaApudmNmLWNsaSBmdW5j" + + "dGlvbiBjcmVhdGUgXAogIC0tbmFtZT0iPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1lPiIgXAogIC0t" + + "aW5mZXJlbmNlLXVybD0vIFwKICAtLWluZmVyZW5jZS1wb3J0PTgwMDAgXAogIC0taGVhbHRoLXVy" + + "aT0vaGVhbHRoIFwKICAtLWhlYWx0aC1wb3J0PTgwMDAgXAogIC0taGVhbHRoLXRpbWVvdXQ9UFQz" + + "MFMgXAogIC0taGVhbHRoLXByb3RvY29sPUhUVFAgXAogIC0taGVhbHRoLWV4cGVjdGVkLXN0YXR1" + + "cz0yMDAgXAogIC0tZnVuY3Rpb24tdHlwZT1MTE0gXAogIC0taGVsbS1jaGFydD1odHRwczovL2hl" + + "bG0ubmdjLm52aWRpYS5jb20vZXhhbXBsZS90ZWFtL2NoYXJ0cy9vcGVuYWktY29tcGF0aWJsZS0w" + + "LjEuMC50Z3ogXAogIC0taGVsbS1jaGFydC1zZXJ2aWNlPW9wZW5haS1jb21wYXRpYmxlIFwKICAt" + + "LWxsbS1tb2RlbD0nbmFtZT08Y29uZmlybWVkLW1vZGVsLW5hbWU+LHVyaXM9L3YxL2NoYXQvY29t" + + "cGxldGlvbnN8L3YxL3Jlc3BvbnNlc3wvdjEvZW1iZWRkaW5ncyxyb3V0aW5nTWV0aG9kPXJvdW5k" + + "X3JvYmluLHRva2VuUmF0ZUxpbWl0PTEwMDAtUycKYGBgCgpEZXBsb3kgaXMgdW5jaGFuZ2VkLiBQ" + + "dXQgY2hhcnQtc3BlY2lmaWMgdmFsdWVzIHVuZGVyIGBkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnNb" + + "XS5jb25maWd1cmF0aW9uYCBvbmx5IHdoZW4gdGhlIGNoYXJ0IG5lZWRzIHZhbHVlIG92ZXJyaWRl" + + "czoKCmBgYGpzb24KewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAi" + + "PHZlcl9pZD4iLAogICJkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnMiOiBbewogICAgImdwdSI6ICJI" + + "MTAwIiwKICAgICJpbnN0YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAwXzF4IiwKICAgICJtaW5JbnN0" + + "YW5jZXMiOiAxLAogICAgIm1heEluc3RhbmNlcyI6IDEsCiAgICAibWF4UmVxdWVzdENvbmN1cnJl" + + "bmN5IjogMTAsCiAgICAiY29uZmlndXJhdGlvbiI6IHsKICAgICAgInNlcnZpbmciOiB7CiAgICAg" + + "ICAgInRlbnNvclBhcmFsbGVsU2l6ZSI6IDEKICAgICAgfQogICAgfQogIH1dCn0KYGBgCgpMTE0g" + + "R2F0ZXdheSByb3V0ZXMgcmVxdWVzdHMgYnkgdGhlIE9wZW5BSSBgbW9kZWxgIHZhbHVlLiBVc2Ug" + + "YDxmdW5jdGlvbi1pZD4vPG1vZGVsLW5hbWU+YDogdGhlIGZ1bmN0aW9uIElEIHNlbGVjdHMgdGhl" + + "IE5WQ0YgZnVuY3Rpb24sIGFuZCB0aGUgbW9kZWwgbmFtZSBpcyBmb3J3YXJkZWQgdG8gdGhlIHVw" + + "c3RyZWFtIGNvbnRhaW5lciB0aHJvdWdoIGBzdGFyZ2F0ZS1jbGllbnRgLgoKU3VwcG9ydGVkIExM" + + "TSBwYXRoczoKCnwgUGF0aCB8IE5vdGVzIHwKfCAtLS0gfCAtLS0gfAp8IGAvdjEvY2hhdC9jb21w" + + "bGV0aW9uc2AgfCBTdXBwb3J0cyBzdHJlYW1pbmcgYW5kIHNlc3Npb24gc3RpY2tpbmVzcy4gfAp8" + + "IGAvdjEvcmVzcG9uc2VzYCB8IE5hdGl2ZSBSZXNwb25zZXMgcHJveHkgcGF0aDsgcmVsYXlzIFNT" + + "RSBmb3Igc3RyZWFtaW5nIGNsaWVudHMgYW5kIHJldHVybnMgdGVybWluYWwgSlNPTiBmb3Igbm9u" + + "LXN0cmVhbWluZyBjbGllbnRzLiBTdXBwb3J0cyBzZXNzaW9uIHN0aWNraW5lc3MuIHwKfCBgL3Yx" + + "L2VtYmVkZGluZ3NgIHwgQWNjZXB0cyBzdHJpbmcgb3Igc3RyaW5nLWFycmF5IGBpbnB1dGA7IGlu" + + "cHV0IG11c3QgYmUgbm9uLWVtcHR5IGFuZCBtYXkgY29udGFpbiBhdCBtb3N0IDIwNDggZW50cmll" + + "cy4gTm8gc2Vzc2lvbiBzdGlja2luZXNzLiB8CgojIyAyLiBGdW5jdGlvbiBERVBMT1kKCmBgYGpz" + + "b24KewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAiPHZlcl9pZD4i" + + "LAogICJkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnMiOiBbewogICAgImdwdSI6ICJIMTAwIiwKICAg" + + "ICJpbnN0YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAwXzF4IiwKICAgICJtaW5JbnN0YW5jZXMiOiAx" + + "LAogICAgIm1heEluc3RhbmNlcyI6IDEsCiAgICAibWF4UmVxdWVzdENvbmN1cnJlbmN5IjogMTAK" + + "ICB9XQp9CmBgYAoKTm90ZTogYGdwdWAgaXMgdGhlIEdQVSAqKmZhbWlseSoqIChlLmcuIGBIMTAw" + + "YCksIGBpbnN0YW5jZVR5cGVgIGlzIHRoZSBTS1UgKGUuZy4gYE5DUC5HUFUuSDEwMF8xeGApLiBN" + + "aXNtYXRjaCByZXR1cm5zIElDTVMgNDAwICJJbnZhbGlkIEdQVSIuCgpgYGBzaApudmNmLWNsaSBm" + + "dW5jdGlvbiBkZXBsb3kgY3JlYXRlIC0taW5wdXQtZmlsZT1kZXBsb3ktZm4uanNvbgpgYGAKClRo" + + "aXMgY29tbWFuZCAqKmJsb2NrcyoqIHVudGlsIHRoZSBkZXBsb3ltZW50IHJlYWNoZXMgQUNUSVZF" + + "IChkZWZhdWx0IDkwMHMgdGltZW91dCkuIFdoZW4gaXQgcmV0dXJucyByYz0wLCBhIGZ1bmN0aW9u" + + "IHBvZCBpcyBydW5uaW5nIGluIHRoZSBgbnZjZi1iYWNrZW5kYCBuYW1lc3BhY2Ugb24gdGhlIGNv" + + "bXB1dGUtcGxhbmUgY2x1c3Rlci4KCiMjIDMuIE1pbnQgYW4gQVBJIGtleSB3aXRoIGBpbnZva2Vf" + + "ZnVuY3Rpb25gIHNjb3BlCgpgbnZjZi1jbGkgaW5pdGAncyBhZG1pbiB0b2tlbiBkb2VzIE5PVCBj" + + "YXJyeSB0aGUgYGludm9rZV9mdW5jdGlvbmAgc2NvcGUg4oCUIGludm9rZSB3b3VsZCA0MDMgd2l0" + + "aCAibWlzc2luZyByZXF1ZXN0ZWQgYXV0aG9yaXRpZXMiLiBNaW50IGFuIEFQSSBrZXk6CgpgYGBz" + + "aApudmNmLWNsaSBhcGkta2V5IGdlbmVyYXRlIC0tZGVzY3JpcHRpb249Ijxjb25maXJtZWQtZnVu" + + "Y3Rpb24tbmFtZT4gaW52b2tlIiAtLWV4cGlyZXMtaW49MWgKIyDihpIgQVBJIEtleTogbnZhcGkt" + + "bnZjZi1zdGctLi4uCmBgYAoKVGhlIGtleSBpcyBhdXRvbWF0aWNhbGx5IHNhdmVkIHRvIHRoZSBD" + + "TEkgc3RhdGUgZmlsZSBhbmQgdXNlZCBieSB0aGUgbmV4dCBgZnVuY3Rpb24gaW52b2tlYCBjYWxs" + + "LiAqKkRvbid0IGVjaG8gdGhlIGtleSBpbnRvIGNoYXQgLyBsb2dzKiouCgojIyA0LiBGdW5jdGlv" + + "biBJTlZPS0UKCmBgYGpzb24KewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9u" + + "SWQiOiAiPHZlcl9pZD4iLAogICJyZXF1ZXN0Qm9keSI6IHsibWVzc2FnZSI6ICJoZWxsbyJ9Cn0K" + + "YGBgCgpgYGBzaApudmNmLWNsaSBmdW5jdGlvbiBpbnZva2UgLS1pbnB1dC1maWxlPWludm9rZS1m" + + "bi5qc29uCiMg4oaSIEZ1bmN0aW9uIGludm9jYXRpb24gY29tcGxldGVkIQojIOKGkiBTdGF0dXM6" + + "IGZ1bGZpbGxlZAojIOKGkiBSZXF1ZXN0IElEOiAuLi4KYGBgCgpGb3IgYW4gTExNIGZ1bmN0aW9u" + + "LCBpbnZva2UgdGhlIE9wZW5BSS1jb21wYXRpYmxlIHJvdXRlIGFmdGVyIGRlcGxveW1lbnQ6Cgpg" + + "YGBzaApjdXJsIC1zUyAtWCBQT1NUICJodHRwczovL2xsbS5pbnZvY2F0aW9uLjxkb21haW4+L3Yx" + + "L2NoYXQvY29tcGxldGlvbnMiIFwKICAtSCAiQXV0aG9yaXphdGlvbjogQmVhcmVyICR7TlZDRl9B" + + "UElfS0VZfSIgXAogIC1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIFwKICAtZCAn" + + "ewogICAgIm1vZGVsIjogIjxmbl9pZD4vPGNvbmZpcm1lZC1tb2RlbC1uYW1lPiIsCiAgICAic3Ry" + + "ZWFtIjogdHJ1ZSwKICAgICJtZXNzYWdlcyI6IFsKICAgICAgewogICAgICAgICJyb2xlIjogInVz" + + "ZXIiLAogICAgICAgICJjb250ZW50IjogIkhlbGxvIgogICAgICB9CiAgICBdCiAgfScKYGBgCgpU" + + "aGUgT3BlbkFJIGBtb2RlbGAgdmFsdWUgbXVzdCBiZSBgPGZ1bmN0aW9uLWlkPi88bW9kZWwtbmFt" + + "ZT5gIHNvIHRoZSBnYXRld2F5IGNhbiBzZWxlY3QgdGhlIGZ1bmN0aW9uIGFuZCBtb2RlbC4KClJl" + + "c3BvbnNlcyBBUEkgZXhhbXBsZToKCmBgYHNoCmN1cmwgLXNTIC1YIFBPU1QgImh0dHBzOi8vbGxt" + + "Lmludm9jYXRpb24uPGRvbWFpbj4vdjEvcmVzcG9uc2VzIiBcCiAgLUggIkF1dGhvcml6YXRpb246" + + "IEJlYXJlciAke05WQ0ZfQVBJX0tFWX0iIFwKICAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlv" + + "bi9qc29uIiBcCiAgLWQgJ3sKICAgICJtb2RlbCI6ICI8Zm5faWQ+Lzxjb25maXJtZWQtbW9kZWwt" + + "bmFtZT4iLAogICAgImlucHV0IjogIldyaXRlIGEgb25lIHNlbnRlbmNlIHN1bW1hcnkgb2YgTlZD" + + "Ri4iCiAgfScKYGBgCgpFbWJlZGRpbmdzIGV4YW1wbGU6CgpgYGBzaApjdXJsIC1zUyAtWCBQT1NU" + + "ICJodHRwczovL2xsbS5pbnZvY2F0aW9uLjxkb21haW4+L3YxL2VtYmVkZGluZ3MiIFwKICAtSCAi" + + "QXV0aG9yaXphdGlvbjogQmVhcmVyICR7TlZDRl9BUElfS0VZfSIgXAogIC1IICJDb250ZW50LVR5" + + "cGU6IGFwcGxpY2F0aW9uL2pzb24iIFwKICAtZCAnewogICAgIm1vZGVsIjogIjxmbl9pZD4vPGNv" + + "bmZpcm1lZC1tb2RlbC1uYW1lPiIsCiAgICAiaW5wdXQiOiAiTlZDRiBlbWJlZGRpbmdzIGNoZWNr" + + "IgogIH0nCmBgYAoKSWYgc3RhdHVzIGlzIGBlcnJvcmVkYCwgcXVlcnkgSUNNUyBmb3IgdGhlIGRl" + + "cGxveW1lbnQncyBwb2QgbG9ncyAoa3ViZWN0bCBvbiB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVy" + + "KSBhbmQgc3VyZmFjZSB0byB0aGUgdXNlci4KCiMjIDUuIENsZWFudXAKCldoZW4gdGhlIHVzZXIg" + + "aXMgZG9uZSB3aXRoIHRoZSBzbW9rZSB0ZXN0OgoKYGBgc2gKbnZjZi1jbGkgZnVuY3Rpb24gZGVs" + + "ZXRlIC0tZnVuY3Rpb24taWQ9PGZuX2lkPiAtLXZlcnNpb24taWQ9PHZlcl9pZD4KYGBgCgoqKkNv" + + "bmZpcm0gd2l0aCB0aGUgdXNlciBiZWZvcmUgZGVsZXRpbmcuKiogVGhpcyByZW1vdmVzIGJvdGgg" + + "dGhlIGRlcGxveW1lbnQgYW5kIHRoZSBmdW5jdGlvbiByZWNvcmQuCgojIyBOb3RlcwoKLSBEZXBs" + + "b3kgdGltZXMgY2FuIHZhcnkgd2lkZWx5IGRlcGVuZGluZyBvbiBOQVRTIHN0cmVhbS1pbml0IGxh" + + "dGVuY3kgb24gY29sZC1jbHVzdGVyIHJ1bnMgKDEtNyBtaW51dGVzIG9ic2VydmVkIGluIGRldi1W" + + "TSB0ZXN0cykuIEJlIHBhdGllbnQ7IGRvbid0IGtpbGwgdGhlIGBmdW5jdGlvbiBkZXBsb3kgY3Jl" + + "YXRlYCBjb21tYW5kIGVhcmx5LgotIEZvciBkaWZmZXJlbnQgR1BVIGZhbWlsaWVzLCBjaGFuZ2Ug" + + "Ym90aCBgZ3B1YCBhbmQgYGluc3RhbmNlVHlwZWAgdG9nZXRoZXIuIENvbW1vbiBTS1VzOiBgTkNQ" + + "LkdQVS5IMTAwXzF4YCwgYE5DUC5HUFUuSDEwMF8yeGAsIGBOQ1AuR1BVLkExMDBfMXhgLgotIFRo" + + "ZSBmdW5jdGlvbidzIGNvbnRhaW5lciBpbWFnZSBtdXN0IGJlIHB1bGxhYmxlIGZyb20gdGhlIGNv" + + "bXB1dGUtcGxhbmUgY2x1c3RlcidzIGltYWdlLWNyZWRlbnRpYWwtaGVscGVyIGNvbmZpZyAoY2hl" + + "Y2sgYGt1YmVjdGwgZGVzY3JpYmUgcG9kIC1uIG52Y2YtYmFja2VuZGAgaWYgcG9kcyBsYW5kIGlu" + + "IGBJbWFnZVB1bGxCYWNrT2ZmYCkuClBLBwjSQ9wEGCUAABglAABQSwMEFAAIAAAAAAAhAAAAAAAA" + + "AAAAAAAAAD0ACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2RpYWdub3NlLWZh" + + "aWxlZC1pbnN0YWxsLm1kVVQFAAEAps4SIyBEaWFnbm9zZSBhIGZhaWxlZCBzZWxmLWhvc3RlZCBO" + + "VkNGIGluc3RhbGwKClVzZXIgc2F5cyAibXkgaW5zdGFsbCBmYWlsZWQiIG9yICJYIGlzbid0IHdv" + + "cmtpbmciLiBEb24ndCBndWVzcyDigJQgcXVlcnkgdGhlIGNsdXN0ZXIuCgojIyAxLiBHZXQgdGhl" + + "IHZlcmRpY3QKCmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1cyAtLWpzb24gfCBqcSAt" + + "YyAuCmBgYAoKVGhlIGZpcnN0IGV2ZW50IGlzIHRoZSBzbmFwc2hvdC4gUGFyc2UgYC52ZXJkaWN0" + + "YDoKCi0gKipgaGVhbHRoeWAqKiDigJQgbm90aGluZydzIHdyb25nLiBBc2sgdGhlIHVzZXIgd2hh" + + "dCB0aGV5J3JlIGFjdHVhbGx5IHNlZWluZzsgdGhlaXIgcHJvYmxlbSBtYXkgYmUgYXQgYSBkaWZm" + + "ZXJlbnQgbGF5ZXIgKGZ1bmN0aW9uIGRlcGxveSwgbmV0d29yaywgZXRjLikuCi0gKipgZGVncmFk" + + "ZWRgKiog4oCUIGF0IGxlYXN0IG9uZSBjb21wb25lbnQgbm90IHJlYWR5LiBUaGUgQ29tcG9uZW50" + + "cyBsaXN0IHdpbGwgaWRlbnRpZnkgd2hpY2guIE1vc3QgY29tbW9uOiBgY2Fzc2FuZHJhYCBQb2RJ" + + "bml0aWFsaXppbmcsIGBvcGVuYmFvYCBub3QgdW5zZWFsZWQsIGBzaXNgIEltYWdlUHVsbEJhY2tP" + + "ZmYuCi0gKipgZmFpbGVkYCoqIOKAlCBOVkNGQmFja2VuZCBgSGVhbHRoPUZhaWxlZGAuIFJlYWQg" + + "dGhlIGNsdXN0ZXIncyBOVkNGQmFja2VuZCBzdGF0dXMgY29uZGl0aW9uIG1lc3NhZ2UuCi0gKipg" + + "dW5rbm93bmAqKiDigJQgSUNNUyB1bnJlYWNoYWJsZS4gVGhlIGNvbnRyb2wgcGxhbmUgaXRzZWxm" + + "IG1heSBiZSBkb3duOyBjaGVjayBga3ViZWN0bCBnZXQgcG9kcyAtbiBzaXNgIGRpcmVjdGx5LgoK" + + "IyMgMi4gRHJpbGwgaW50byB0aGUgZmFpbGluZyBjb21wb25lbnQKCkZvciBlYWNoIG5vbi1yZWFk" + + "eSBjb21wb25lbnQsIHRoZSBzbmFwc2hvdCBpbmNsdWRlcyBhIGBtZXNzYWdlYCAoZS5nLiBgY2Fz" + + "c2FuZHJhLTAgUG9kSW5pdGlhbGl6aW5nIDZtMjNzYCkuIEFzayB0aGUgdXNlciB0byBydW46Cgpg" + + "YGBzaAprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bnM+IDxwb2Q+Cmt1YmVjdGwgbG9ncyAtbiA8" + + "bnM+IDxwb2Q+IC0tYWxsLWNvbnRhaW5lcnMgLS10YWlsPTEwMApgYGAKClN1cmZhY2UgdGhlIGV2" + + "ZW50cyArIGxhc3QgbG9nIGxpbmVzLiBEb24ndCBwcm9wb3NlIGBrdWJlY3RsIGRlbGV0ZSBwb2Rg" + + "IHVubGVzcyB0aGUgdXNlciBjb25maXJtcyDigJQgQ2Fzc2FuZHJhIHJlc3RhcnQgbG9zZXMgYW55" + + "IGluLXByb2dyZXNzIG1pZ3JhdGlvbi4KCiMjIDMuIENvbW1vbiBwYXR0ZXJucwoKfCBTeW1wdG9t" + + "IHwgTGlrZWx5IGNhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGNhc3NhbmRy" + + "YS0wIFBvZEluaXRpYWxpemluZ2AgZm9yID41IG1pbiB8IFN0b3JhZ2VDbGFzcyBtaXNzaW5nIG9y" + + "IFBWIHN0dWNrIGBQZW5kaW5nYCB8IGBrdWJlY3RsIGdldCBwdixwdmMgLUFgIOKAlCBjb25maXJt" + + "IGEgZGVmYXVsdCBTdG9yYWdlQ2xhc3MgZXhpc3RzLiBMb2NhbCBkZXY6IGBrdWJlY3RsIHBhdGNo" + + "IHN0b3JhZ2VjbGFzcyBsb2NhbC1wYXRoIC1wICd7Im1ldGFkYXRhIjp7ImFubm90YXRpb25zIjp7" + + "InN0b3JhZ2VjbGFzcy5rdWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xhc3MiOiJ0cnVlIn19fSdg" + + "IHwKfCBgaGVsbSBpbnN0YWxsIC4uLjogdGltZWQgb3V0IHdhaXRpbmcgZm9yIGNhc3NhbmRyYSB0" + + "byBiZWNvbWUgYXZhaWxhYmxlYCB8IFNhbWUgYXMgYWJvdmUgfCBTYW1lIHwKfCBgR2F0ZXdheSBB" + + "UEkgQ1JEcyBub3QgaW5zdGFsbGVkYCAocHJlZmxpZ2h0KSB8IE11bHRpLWNsdXN0ZXIgYG52Y2Yt" + + "Z2F0ZXdheS1yb3V0ZXNgIGNoYXJ0IG5lZWRzIGVudm95LWdhdGV3YXkgcHJlcmVxdWlzaXRlIHwg" + + "SW5zdGFsbCBlbnZveS1nYXRld2F5OiBgaGVsbSBpbnN0YWxsIGVnIG9jaTovL2RvY2tlci5pby9l" + + "bnZveXByb3h5L2dhdGV3YXktaGVsbSAtLW5hbWVzcGFjZT1lbnZveS1nYXRld2F5LXN5c3RlbSAt" + + "LWNyZWF0ZS1uYW1lc3BhY2VgIHwKfCBgTm8gY2x1c3RlciBmb3VuZCB3aXRoIHZhbGlkIEpXS1Mg" + + "Zm9yIGNsdXN0ZXIgSUQ6IDxpZD5gIChOVkNBIGFnZW50KSB8IENvbXB1dGUgcGxhbmUncyBQU0FU" + + "IHdhcyBpc3N1ZWQgYnkgYSBLOHMgc2VydmVyIHdob3NlIEpXS1MgZG9lc24ndCBtYXRjaCB3aGF0" + + "J3Mgc3RvcmVkIGluIElDTVMgfCBSZS1yZWdpc3RlcjogYG52Y2YtY2xpIGNsdXN0ZXIgcm90YXRl" + + "IC0tY2x1c3Rlci1pZD08aWQ+YCBmcm9tIGEgY29udGV4dCB0aGF0IGNhbiByZWFjaCB0aGUgY29t" + + "cHV0ZSBwbGFuZSdzIEs4cyBBUEkgfAp8IGBTaWduZWQgSldUIHJlamVjdGVkOiBBbm90aGVyIGFs" + + "Z29yaXRobSBleHBlY3RlZCwgb3Igbm8gbWF0Y2hpbmcga2V5KHMpIGZvdW5kYCAoaW5pdCAvIGNs" + + "dXN0ZXIgcmVnaXN0ZXIpIHwgU3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQgY29u" + + "dHJvbCBwbGFuZSB8IGBybSB+Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5pdGAg" + + "YWdhaW4gfAp8IGBudmNhLW9wZXJhdG9yYCBJbWFnZVB1bGxCYWNrT2ZmIGZvciBgbnZjYS1vcGVy" + + "YXRvcjpwc2F0YCB8IEltYWdlIG5vdCBpbiBjbHVzdGVyIChtdWx0aS1jbHVzdGVyIHRvcG9sb2d5" + + "IGJ1aWxkcyBpdCBsb2NhbGx5KSB8IGBrM2QgaW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Et" + + "b3BlcmF0b3I6cHNhdCAtYyA8Y2x1c3Rlcj5gIChvciB3aGF0ZXZlciB5b3VyIGltYWdlIHB1c2gg" + + "cGF0aCBpcykgfAp8IGByZXF1aXJlZEVudiAiTkNBX0lEIiBpcyBub3Qgc2V0YCAoaGVsbWZpbGUg" + + "ZXJyb3IpIHwgT2xkZXIgbnZjZi1jbGk7IHRoZSBlbnYgcHJvcGFnYXRpb24gZml4IGxhbmRlZCBp" + + "biBNKzUgZm9sbG93LXVwcyB8IFVwZ3JhZGUgYG52Y2YtY2xpYCB0byBhIHZlcnNpb24gYWZ0ZXIg" + + "YDZhYTU3MDRgIHwKCiMjIDQuIFdoZW4gdGhlIHVzZXIgd2FudHMgdG8gc3RhcnQgb3ZlcgoKSWYg" + + "dGhleSBjb25maXJtIGEgdGVhcmRvd246CgotIFNpbmdsZS1jbHVzdGVyOiBgY2QgbnZjZi1zZWxm" + + "LW1hbmFnZWQtc3RhY2sgJiYgbWFrZSBkZXN0cm95YCAob3IgYGhlbG0gdW5pbnN0YWxsYCBwZXIg" + + "cmVsZWFzZSBpbiByZXZlcnNlIG9yZGVyKS4KLSBNdWx0aS1jbHVzdGVyOiBgaGVsbSB1bmluc3Rh" + + "bGwgbnZjYS1vcGVyYXRvciAtbiBudmNhLW9wZXJhdG9yYCBvbiB0aGUgY29tcHV0ZSBwbGFuZSBG" + + "SVJTVDsgdGhlbiBjb250cm9sIHBsYW5lOyB0aGVuIGBudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAt" + + "LWNsdXN0ZXItaWQ9PGlkPmAgdG8gcmVtb3ZlIHRoZSBJQ01TIHJvdy4KCkFsd2F5cyBjb25maXJt" + + "IGJlZm9yZSBhbnkgdGVhcmRvd24g4oCUIENhc3NhbmRyYSBTdGF0ZWZ1bFNldCBQVkMgZGVsZXRp" + + "b24gaXMgZGVzdHJ1Y3RpdmUgYW5kIGxvc2VzIGNsdXN0ZXJfb2lkYyByb3dzLgoKIyMgV2hhdCBu" + + "b3QgdG8gZG8KCi0gKipEb24ndCBwcm9wb3NlIGAtLWRlYnVnYCBhcyBhIGZpeC4qKiBJdCdzIGRp" + + "YWdub3N0aWMgb25seS4KLSAqKkRvbid0IHByb3Bvc2UgYGhlbG0gdW5pbnN0YWxsYCoqIHVubGVz" + + "cyB0aGUgdXNlciBleHBsaWNpdGx5IGFza2VkIHRvIHN0YXJ0IG92ZXIuCi0gKipEb24ndCBwcm9w" + + "b3NlIGBrdWJlY3RsIGRlbGV0ZSBwdmNgKiogZXZlciB3aXRob3V0IGNvbmZpcm1hdGlvbiDigJQg" + + "aXQgZGVsZXRlcyB0aGUgdW5kZXJseWluZyBQVi4KLSAqKkRvbid0IHJlLXJ1biBgdXBgIHdpdGgg" + + "ZGlmZmVyZW50IGlucHV0cyoqIHRvICJzZWUgd2hhdCBoYXBwZW5zIi4gRGlhZ25vc2Ugd2l0aCBg" + + "c3RhdHVzYCAvIGBrdWJlY3RsIGRlc2NyaWJlYCBmaXJzdC4KUEsHCHKSLCa+DgAAvg4AAFBLAwQU" + + "AAgAAAAAACEAAAAAAAAAAAAAAAAAOgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21w" + + "dHMvaW5zdGFsbC1mcm9tLXNjcmF0Y2gubWRVVAUAAQCmzhIjIEluc3RhbGwgc2VsZi1ob3N0ZWQg" + + "TlZDRiBmcm9tIHNjcmF0Y2gKClVzZXIgd2FudHMgdG8gYnJpbmcgdXAgc2VsZi1ob3N0ZWQgTlZD" + + "RiBvbiBhIGZyZXNoIEt1YmVybmV0ZXMgY2x1c3RlciAob3IgazNkIGZvciBsb2NhbCBkZXYpLiBU" + + "aGlzIGlzIHRoZSBtb3N0IGNvbW1vbiBlbnRyeXBvaW50LgoKIyMgU3RlcHMKCjEuIENvbmZpcm0g" + + "dGhlIHRvcG9sb2d5LiBBc2sgdGhlIHVzZXI6CiAgIC0gIlNpbmdsZS1jbHVzdGVyIChjb250cm9s" + + "IHBsYW5lIGFuZCBjb21wdXRlIHBsYW5lIG9uIG9uZSBjbHVzdGVyLCBzaW1wbGVyKSBvciBzcGxp" + + "dCAoY29udHJvbCBwbGFuZSBvbiBjbHVzdGVyIEEsIGNvbXB1dGUgcGxhbmUgb24gY2x1c3RlciBC" + + "LCBwcm9kdWN0aW9uLXNoYXBlZCk/IgogICAtICJXaGF0J3MgdGhlIGNsdXN0ZXIgbmFtZSAodGhl" + + "IGAtLWNsdXN0ZXItbmFtZWAgZmxhZywgYmVjb21lcyB0aGUgSUNNUyByb3cgaWRlbnRpZmllcik/" + + "IEV4YW1wbGVzOiBgbmNwLWxvY2FsYCBmb3IgbG9jYWwgZGV2LCBgcHJvZC11cy1lYXN0LTFgIGZv" + + "ciBwcm9kdWN0aW9uLiIKICAgLSBGb3Igc3BsaXQ6ICJDb250cm9sLXBsYW5lIGt1YmVjb25maWcg" + + "Y29udGV4dCBuYW1lPyBDb21wdXRlLXBsYW5lIGNvbnRleHQ/IFB1YmxpYyBJQ01TIFVSTD8iCgoy" + + "LiBQcmVwYXJlIHJlbW90ZSBHYXRld2F5IGFuZCBDTEkgY29uZmlnIGlmIHRoaXMgaXMgbm90IGxv" + + "Y2FsIGszZC4gT25lLWNsaWNrCiAgIGFwcGxpZXMgdGhlIGNvbnRyb2wgcGxhbmUsIHRoZW4gaW1t" + + "ZWRpYXRlbHkgY2FsbHMgQVBJLCBBUEkgS2V5cywgaW52b2NhdGlvbiwKICAgYW5kIGdSUEMgZW5k" + + "cG9pbnRzLiBGb3IgcmVtb3RlIGNsdXN0ZXJzLCB0aGUgR2F0ZXdheSBtdXN0IGJlIHByb2dyYW1t" + + "ZWQgYW5kCiAgIHRoZSBDTEkgY29uZmlnIG11c3QgcG9pbnQgYXQgdGhlIEdhdGV3YXkgbG9hZCBi" + + "YWxhbmNlciBiZWZvcmUgYHVwYCBydW5zLgoKICAgSWYgR2F0ZXdheSBBUEkgaW5ncmVzcyBpcyBu" + + "b3QgYWxyZWFkeSBwcmVzZW50LCBjcmVhdGUgaXQgZmlyc3QuIFRoZXNlIGFyZSB0aGUKICAgc2hh" + + "cmVkIEdhdGV3YXkgc2V0dXAgc3RlcHMgdXNlZCBieSBvbmUtY2xpY2ssIEhlbG1maWxlLCBhbmQg" + + "c3RhbmRhbG9uZSBjaGFydAogICBpbnN0YWxsIHBhdGhzOgoKICAgYGBgc2gKICAga3ViZWN0bCBh" + + "cHBseSAtZiBodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1zaWdzL2dhdGV3YXktYXBpL3Jl" + + "bGVhc2VzL2Rvd25sb2FkL3YxLjIuMC9leHBlcmltZW50YWwtaW5zdGFsbC55YW1sCgogICBmb3Ig" + + "bmFtZXNwYWNlIGluIGVudm95LWdhdGV3YXktc3lzdGVtIGVudm95LWdhdGV3YXkgYXBpLWtleXMg" + + "ZXNzIHNpcyBudmNmOyBkbwogICAgIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSAiJG5hbWVzcGFj" + + "ZSIgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCiAgIGRvbmUK" + + "CiAgIGZvciBuYW1lc3BhY2UgaW4gZW52b3ktZ2F0ZXdheSBhcGkta2V5cyBlc3Mgc2lzIG52Y2Y7" + + "IGRvCiAgICAga3ViZWN0bCBsYWJlbCBuYW1lc3BhY2UgIiRuYW1lc3BhY2UiIG52Y2YvcGxhdGZv" + + "cm09dHJ1ZSAtLW92ZXJ3cml0ZQogICBkb25lCgogICBoZWxtIHVwZ3JhZGUgLS1pbnN0YWxsIGVn" + + "IG9jaTovL2RvY2tlci5pby9lbnZveXByb3h5L2dhdGV3YXktaGVsbSBcCiAgICAgLS12ZXJzaW9u" + + "IHYxLjEuMyBcCiAgICAgLW4gZW52b3ktZ2F0ZXdheS1zeXN0ZW0KICAgYGBgCgogICBCZWZvcmUg" + + "YXBwbHlpbmcgdGhlIGBFbnZveVByb3h5YCwgZGV0ZXJtaW5lIHdoaWNoIFNlcnZpY2UgY29udHJv" + + "bGxlciBvd25zCiAgIGxvYWQgYmFsYW5jZXJzIG9uIEVLUy4gRG8gbm90IGFwcGx5IHRoZSBtYW5p" + + "ZmVzdCB1bnRpbCB5b3UgaGF2ZSBzZWxlY3RlZCB0aGUKICAgbWF0Y2hpbmcgYGVudm95U2Vydmlj" + + "ZWAgY29uZmlndXJhdGlvbi4gVXNlIHRoZSBFS1MgQVBJIGFuZCB0aGUgaW4tY2x1c3RlcgogICBj" + + "b250cm9sbGVyIERlcGxveW1lbnQgaW5zdGVhZCBvZiBndWVzc2luZyBmcm9tIHRoZSBjbHVzdGVy" + + "IGFnZSBvciBleGlzdGluZwogICBTZXJ2aWNlczoKCiAgIGBgYHNoCiAgIGV4cG9ydCBFS1NfQ0xV" + + "U1RFUl9OQU1FPSI8Y2x1c3Rlci1uYW1lPiIKCiAgIGF3cyBla3MgZGVzY3JpYmUtY2x1c3RlciAt" + + "LW5hbWUgIiRFS1NfQ0xVU1RFUl9OQU1FIiBcCiAgICAgLS1xdWVyeSAnY2x1c3Rlci5rdWJlcm5l" + + "dGVzTmV0d29ya0NvbmZpZy5lbGFzdGljTG9hZEJhbGFuY2luZy5lbmFibGVkJyBcCiAgICAgLS1v" + + "dXRwdXQgdGV4dAogICBrdWJlY3RsIC1uIGt1YmUtc3lzdGVtIGdldCBkZXBsb3ltZW50IGF3cy1s" + + "b2FkLWJhbGFuY2VyLWNvbnRyb2xsZXIKICAgYGBgCgogICBBbiBFS1MgQVBJIHJlc3VsdCBvZiBg" + + "VHJ1ZWAgc2VsZWN0cwogICBbRUtTIEF1dG8gTW9kZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24u" + + "Y29tL2Vrcy9sYXRlc3QvdXNlcmd1aWRlL2F1dG8tY29uZmlndXJlLW5sYi5odG1sKS4KICAgT3Ro" + + "ZXJ3aXNlLCBhIHN1Y2Nlc3NmdWwgRGVwbG95bWVudCBsb29rdXAgc2VsZWN0cyB0aGUgQVdTIExv" + + "YWQgQmFsYW5jZXIKICAgQ29udHJvbGxlci4gSWYgbmVpdGhlciBpcyBwcmVzZW50LCBjb25maXJt" + + "IHRoYXQgdGhlIGNsdXN0ZXIgaW50ZW50aW9uYWxseQogICB1c2VzIHRoZSBsZWdhY3kgQVdTIGNs" + + "b3VkIHByb3ZpZGVyIFNlcnZpY2UgY29udHJvbGxlciwgb3IgaW5zdGFsbCB0aGUgQVdTCiAgIExv" + + "YWQgQmFsYW5jZXIgQ29udHJvbGxlciwgYmVmb3JlIGFwcGx5aW5nIHRoZSBleGFtcGxlLgoKICAg" + + "VGhlIGFwcGxpZWQgbWFuaWZlc3QgYmVsb3cgaXMgZm9yIHRoZSBBV1MgTG9hZCBCYWxhbmNlciBD" + + "b250cm9sbGVyLiBGb3IgRUtTCiAgIEF1dG8gTW9kZSwgcmVwbGFjZSBpdHMgYGVudm95U2Vydmlj" + + "ZWAgbWFwIGJlZm9yZSBhcHBseWluZyBpdCB3aXRoOgoKICAgYGBgeWFtbAogICBlbnZveVNlcnZp" + + "Y2U6CiAgICAgbG9hZEJhbGFuY2VyQ2xhc3M6IGVrcy5hbWF6b25hd3MuY29tL25sYgogICAgIGFu" + + "bm90YXRpb25zOgogICAgICAgc2VydmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdzLWxvYWQtYmFs" + + "YW5jZXItc2NoZW1lOiAiaW50ZXJuZXQtZmFjaW5nIgogICBgYGAKCiAgIEZvciB0aGUgbGVnYWN5" + + "IEFXUyBjbG91ZCBwcm92aWRlciBTZXJ2aWNlIGNvbnRyb2xsZXIsIHJlcGxhY2UgdGhlIG1hcCB3" + + "aXRoOgoKICAgYGBgeWFtbAogICBlbnZveVNlcnZpY2U6CiAgICAgYW5ub3RhdGlvbnM6CiAgICAg" + + "ICBzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1iYWxhbmNlci10eXBlOiAibmxi" + + "IgogICBgYGAKCiAgIFRoZSBsZWdhY3kgY29udHJvbGxlciBjcmVhdGVzIGFuIGludGVybmV0LWZh" + + "Y2luZyBsb2FkIGJhbGFuY2VyIGJ5IGRlZmF1bHQuCiAgIERvIG5vdCBjb21iaW5lIHRoZSBsZWdh" + + "Y3kgYG5sYmAgc2VsZWN0b3Igd2l0aCB0aGUgQVdTIExvYWQgQmFsYW5jZXIKICAgQ29udHJvbGxl" + + "ciB0YXJnZXQgdHlwZSBhbmQgc2NoZW1lIGFubm90YXRpb25zLiBJdCBzdXBwb3J0cyBhbiBOTEIg" + + "U2VydmljZQogICB3aG9zZSBwb3J0cyB1c2Ugb25seSBUQ1Agb3Igb25seSBVRFAsIGJ1dCByZWpl" + + "Y3RzIG9uZSBTZXJ2aWNlIHRoYXQgY29tYmluZXMKICAgVENQIGFuZCBVRFAgcG9ydHMuIFVzZSB0" + + "aGUgQVdTIExvYWQgQmFsYW5jZXIgQ29udHJvbGxlciB3aGVuIHRoZSBnZW5lcmF0ZWQKICAgRW52" + + "b3kgU2VydmljZSBjb21iaW5lcyBwcm90b2NvbHMuIE9uIG5vbi1BV1MgY2x1c3RlcnMsIHJlcGxh" + + "Y2UgdGhlIG1hcCB3aXRoCiAgIHRoZSBwcm92aWRlcidzIFNlcnZpY2UgY29uZmlndXJhdGlvbiBi" + + "ZWZvcmUgYXBwbHlpbmcgaXQuCgogICBgYGBzaAogICAjIE5vbi1FS1MtQXV0by1Nb2RlIGV4YW1w" + + "bGU6IHVzZSBBV1MgTEJDIHdpdGggaW5zdGFuY2UgdGFyZ2V0cy4KICAga3ViZWN0bCBhcHBseSAt" + + "ZiAtIDw8RU9GCiAgIGFwaVZlcnNpb246IGdhdGV3YXkuZW52b3lwcm94eS5pby92MWFscGhhMQog" + + "ICBraW5kOiBFbnZveVByb3h5CiAgIG1ldGFkYXRhOgogICAgIG5hbWU6IGVnCiAgICAgbmFtZXNw" + + "YWNlOiBlbnZveS1nYXRld2F5LXN5c3RlbQogICBzcGVjOgogICAgIHByb3ZpZGVyOgogICAgICAg" + + "dHlwZTogS3ViZXJuZXRlcwogICAgICAga3ViZXJuZXRlczoKICAgICAgICAgZW52b3lTZXJ2aWNl" + + "OgogICAgICAgICAgIGFubm90YXRpb25zOgogICAgICAgICAgICAgc2VydmljZS5iZXRhLmt1YmVy" + + "bmV0ZXMuaW8vYXdzLWxvYWQtYmFsYW5jZXItdHlwZTogImV4dGVybmFsIgogICAgICAgICAgICAg" + + "c2VydmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdzLWxvYWQtYmFsYW5jZXItbmxiLXRhcmdldC10" + + "eXBlOiAiaW5zdGFuY2UiCiAgICAgICAgICAgICBzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9h" + + "d3MtbG9hZC1iYWxhbmNlci1zY2hlbWU6ICJpbnRlcm5ldC1mYWNpbmciCiAgIC0tLQogICBhcGlW" + + "ZXJzaW9uOiBnYXRld2F5Lm5ldHdvcmtpbmcuazhzLmlvL3YxCiAgIGtpbmQ6IEdhdGV3YXlDbGFz" + + "cwogICBtZXRhZGF0YToKICAgICBuYW1lOiBlZwogICBzcGVjOgogICAgIGNvbnRyb2xsZXJOYW1l" + + "OiBnYXRld2F5LmVudm95cHJveHkuaW8vZ2F0ZXdheWNsYXNzLWNvbnRyb2xsZXIKICAgICBwYXJh" + + "bWV0ZXJzUmVmOgogICAgICAgZ3JvdXA6IGdhdGV3YXkuZW52b3lwcm94eS5pbwogICAgICAga2lu" + + "ZDogRW52b3lQcm94eQogICAgICAgbmFtZTogZWcKICAgICAgIG5hbWVzcGFjZTogZW52b3ktZ2F0" + + "ZXdheS1zeXN0ZW0KICAgRU9GCgogICBrdWJlY3RsIGFwcGx5IC1mIC0gPDxFT0YKICAgYXBpVmVy" + + "c2lvbjogZ2F0ZXdheS5uZXR3b3JraW5nLms4cy5pby92MQogICBraW5kOiBHYXRld2F5CiAgIG1l" + + "dGFkYXRhOgogICAgIG5hbWU6IG52Y2YtZ2F0ZXdheQogICAgIG5hbWVzcGFjZTogZW52b3ktZ2F0" + + "ZXdheQogICBzcGVjOgogICAgIGdhdGV3YXlDbGFzc05hbWU6IGVnCiAgICAgbGlzdGVuZXJzOgog" + + "ICAgIC0gbmFtZTogaHR0cAogICAgICAgcHJvdG9jb2w6IEhUVFAKICAgICAgIHBvcnQ6IDgwCiAg" + + "ICAgICBhbGxvd2VkUm91dGVzOgogICAgICAgICBuYW1lc3BhY2VzOgogICAgICAgICAgIGZyb206" + + "IFNlbGVjdG9yCiAgICAgICAgICAgc2VsZWN0b3I6CiAgICAgICAgICAgICBtYXRjaExhYmVsczoK" + + "ICAgICAgICAgICAgICAgbnZjZi9wbGF0Zm9ybTogInRydWUiCiAgICAgLSBuYW1lOiB0Y3AKICAg" + + "ICAgIHByb3RvY29sOiBUQ1AKICAgICAgIHBvcnQ6IDEwMDgxCiAgICAgICBhbGxvd2VkUm91dGVz" + + "OgogICAgICAgICBuYW1lc3BhY2VzOgogICAgICAgICAgIGZyb206IFNlbGVjdG9yCiAgICAgICAg" + + "ICAgc2VsZWN0b3I6CiAgICAgICAgICAgICBtYXRjaExhYmVsczoKICAgICAgICAgICAgICAgbnZj" + + "Zi9wbGF0Zm9ybTogInRydWUiCiAgIEVPRgogICBgYGAKCiAgIFNlcnZpY2UgYW5ub3RhdGlvbnMg" + + "bXVzdCBiZSB1bmRlcgogICBgRW52b3lQcm94eS5zcGVjLnByb3ZpZGVyLmt1YmVybmV0ZXMuZW52" + + "b3lTZXJ2aWNlLmFubm90YXRpb25zYC4gRW52b3kgR2F0ZXdheQogICBjb3BpZXMgdGhlbSB0byB0" + + "aGUgZ2VuZXJhdGVkIEVudm95IFNlcnZpY2UuIERvIG5vdCBwdXQgU2VydmljZSBhbm5vdGF0aW9u" + + "cwogICBvbiB0aGUgYEdhdGV3YXlgIHJlc291cmNlLgoKICAgQ2FwdHVyZSB0aGUgR2F0ZXdheSB2" + + "YWx1ZXMgYW5kIHdyaXRlIHRoZSBDTEkgY29uZmlnOgoKICAgYGBgc2gKICAgZXhwb3J0IENMVVNU" + + "RVJfTkFNRT0ibnZjZi1yZW1vdGUiCiAgIGV4cG9ydCBOQ0FfSUQ9Im52Y2YtZGVmYXVsdCIKICAg" + + "ZXhwb3J0IFJFR0lPTj0idXMtd2VzdC0xIgogICBleHBvcnQgSFRUUF9HQVRFV0FZX05BTUVTUEFD" + + "RT0iZW52b3ktZ2F0ZXdheSIKICAgZXhwb3J0IEhUVFBfR0FURVdBWV9OQU1FPSJudmNmLWdhdGV3" + + "YXkiCiAgIGV4cG9ydCBHUlBDX0dBVEVXQVlfTkFNRVNQQUNFPSJlbnZveS1nYXRld2F5IgogICBl" + + "eHBvcnQgR1JQQ19HQVRFV0FZX05BTUU9Im52Y2YtZ2F0ZXdheSIKCiAgIGt1YmVjdGwgLW4gIiRI" + + "VFRQX0dBVEVXQVlfTkFNRVNQQUNFIiB3YWl0ICJnYXRld2F5LyRIVFRQX0dBVEVXQVlfTkFNRSIg" + + "XAogICAgIC0tZm9yPWNvbmRpdGlvbj1Qcm9ncmFtbWVkPVRydWUgLS10aW1lb3V0PTEwbQogICBr" + + "dWJlY3RsIC1uICIkR1JQQ19HQVRFV0FZX05BTUVTUEFDRSIgd2FpdCAiZ2F0ZXdheS8kR1JQQ19H" + + "QVRFV0FZX05BTUUiIFwKICAgICAtLWZvcj1jb25kaXRpb249UHJvZ3JhbW1lZD1UcnVlIC0tdGlt" + + "ZW91dD0xMG0KCiAgIGV4cG9ydCBHQVRFV0FZX0FERFI9IiQoa3ViZWN0bCAtbiAiJEhUVFBfR0FU" + + "RVdBWV9OQU1FU1BBQ0UiIGdldCAiZ2F0ZXdheS8kSFRUUF9HQVRFV0FZX05BTUUiIFwKICAgICAt" + + "byBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScpIgogICBleHBvcnQgR1JQ" + + "Q19HQVRFV0FZX0FERFI9IiQoa3ViZWN0bCAtbiAiJEdSUENfR0FURVdBWV9OQU1FU1BBQ0UiIGdl" + + "dCAiZ2F0ZXdheS8kR1JQQ19HQVRFV0FZX05BTUUiIFwKICAgICAtbyBqc29ucGF0aD0ney5zdGF0" + + "dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScpIgogICB0ZXN0IC1uICIkR0FURVdBWV9BRERSIiB8fCBl" + + "eGl0IDEKICAgdGVzdCAtbiAiJEdSUENfR0FURVdBWV9BRERSIiB8fCBleGl0IDEKICAgZXhwb3J0" + + "IFNUQUNLX0RPTUFJTj0iJEdBVEVXQVlfQUREUiIKICAgYGBgCgogICBTZXQgYFNUQUNLX0RPTUFJ" + + "TmAgdG8gdGhlIGhvc3RuYW1lIHN1ZmZpeCB1c2VkIGJ5IHRoZSBpbnN0YWxsZWQgSFRUUFJvdXRl" + + "cy4KICAgRm9yIHJlbW90ZSB0ZXN0IGZsb3dzIHdpdGhvdXQgcHJvZHVjdGlvbiBETlMsIHVzZSB0" + + "aGUgR2F0ZXdheSBsb2FkIGJhbGFuY2VyCiAgIGFkZHJlc3MuCgogICBgYGBzaAogICBjYXQgPiAu" + + "bnZjZi1jbGkueWFtbCA8PEVPRgogICBiYXNlX2h0dHBfdXJsOiAiaHR0cDovLyR7R0FURVdBWV9B" + + "RERSfSIKICAgaW52b2tlX3VybDogImh0dHA6Ly8ke0dBVEVXQVlfQUREUn0iCiAgIGJhc2VfZ3Jw" + + "Y191cmw6ICIke0dSUENfR0FURVdBWV9BRERSfToxMDA4MSIKICAgYXBpX2tleXNfc2VydmljZV91" + + "cmw6ICJodHRwOi8vJHtHQVRFV0FZX0FERFJ9IgoKICAgYXBpX2tleXNfaG9zdDogImFwaS1rZXlz" + + "LiR7U1RBQ0tfRE9NQUlOfSIKICAgYXBpX2hvc3Q6ICJhcGkuJHtTVEFDS19ET01BSU59IgogICBp" + + "bnZva2VfaG9zdDogImludm9jYXRpb24uJHtTVEFDS19ET01BSU59IgoKICAgYXBpX2tleXNfc2Vy" + + "dmljZV9pZDogIm52aWRpYS1jbG91ZC1mdW5jdGlvbnMtbmNwLXNlcnZpY2UtaWQtYWtldG0iCiAg" + + "IGFwaV9rZXlzX2lzc3Vlcl9zZXJ2aWNlOiAibnZjZi1hcGkiCiAgIGFwaV9rZXlzX293bmVyX2lk" + + "OiAic3ZjQG52Y2YtYXBpLmxvY2FsIgoKICAgY2xpZW50X2lkOiAiJHtOQ0FfSUR9IgogICBFT0YK" + + "ICAgYGBgCgozLiBSdW4gcHJlLWZsaWdodC4gQ2hvb3NlIHRoZSBmbGF2b3IgbWF0Y2hpbmcgdGhl" + + "IHRvcG9sb2d5OgoKICAgYGBgc2gKICAgIyBTaW5nbGUtY2x1c3RlcgogICBudmNmLWNsaSBzZWxm" + + "LWhvc3RlZCBjaGVjayAtLXByZSAtLWpzb24gfCBqcSAtYyAuCgogICAjIFNwbGl0CiAgIG52Y2Yt" + + "Y2xpIHNlbGYtaG9zdGVkIGNoZWNrIC0tcHJlIFwKICAgICAtLWNvbnRyb2wtcGxhbmUtY29udGV4" + + "dD1hZG1pbkBjcCBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9YWRtaW5AZ3B1MSBcCiAg" + + "ICAgLS1qc29uIHwganEgLWMgLgoKICAgIyBDb21wdXRlLW9ubHkgKG9wZXJhdG9yIHdpdGgga3Vi" + + "ZWN0bCBvbiBjb21wdXRlIHBsYW5lIG9ubHkpCiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGNoZWNr" + + "IC0tcHJlIFwKICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAgICAt" + + "LWljbXMtdXJsPWh0dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUuY29tIFwKICAgICAtLWpzb24gfCBq" + + "cSAtYyAuCiAgIGBgYAoKICAgUGFyc2UgdGhlIEpTT05MIHN0cmVhbS4gSWYgYW55IGNoZWNrIGZh" + + "aWxzIChgInBhc3NlZCI6ZmFsc2VgKSB3aXRoIGBzZXZlcml0eTogZXJyb3JgLCBzdXJmYWNlIGBt" + + "ZXNzYWdlYCArIGBoaW50VVJMYCB0byB0aGUgdXNlciBhbmQgc3RvcC4gRG9uJ3QgcHJvY2VlZCB0" + + "byBpbnN0YWxsIHdpdGggYnJva2VuIHByZXJlcXMuCgo0LiBNaW50IGFuIGFkbWluIHRva2VuIGlm" + + "IG5lZWRlZC4gYG52Y2YtY2xpIGluaXRgIGlzIGlkZW1wb3RlbnQuIENhbGwgaXQgaWYgdGhlCiAg" + + "IHVzZXIgZG9lcyBub3QgaGF2ZSBhIHNlc3Npb24geWV0LiBJbml0IHRhbGtzIHRvIEFQSSBLZXlz" + + "IHRocm91Z2ggdGhlIHB1YmxpYwogICBBUEkgZ2F0ZXdheSwgc28gaXQgYWxzbyB3b3JrcyBpbiBj" + + "b21wdXRlLW9ubHkgbW9kZS4KCjUuIFJ1biBgdXBgLiBVc2UgYC0tanNvbmAgZm9yIHRoZSBKU09O" + + "TCBldmVudCBzdHJlYW06CgogICBgYGBzaAogICBudmNmLWNsaSBzZWxmLWhvc3RlZCB1cCBcCiAg" + + "ICAgLS1jbHVzdGVyLW5hbWU9IiR7Q0xVU1RFUl9OQU1FfSIgXAogICAgIC0tbmNhLWlkPSIke05D" + + "QV9JRH0iIFwKICAgICAtLXJlZ2lvbj0iJHtSRUdJT059IiBcCiAgICAgLS1qc29uCiAgIGBgYAoK" + + "ICAgRm9yIHNwbGl0LWNsdXN0ZXIgaW5zdGFsbHMsIGFkZCBib3RoIGNvbnRleHQgZmxhZ3M6Cgog" + + "ICBgYGBzaAogICBleHBvcnQgQ09OVFJPTF9QTEFORV9DT05URVhUPSJhZG1pbkBjb250cm9sLXBs" + + "YW5lIgogICBleHBvcnQgQ09NUFVURV9QTEFORV9DT05URVhUPSJhZG1pbkBncHUtY2x1c3RlciIK" + + "CiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwIFwKICAgICAtLWNvbnRyb2wtcGxhbmUtY29udGV4" + + "dD0iJHtDT05UUk9MX1BMQU5FX0NPTlRFWFR9IiBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRl" + + "eHQ9IiR7Q09NUFVURV9QTEFORV9DT05URVhUfSIgXAogICAgIC0tY2x1c3Rlci1uYW1lPSIke0NM" + + "VVNURVJfTkFNRX0iIFwKICAgICAtLW5jYS1pZD0iJHtOQ0FfSUR9IiBcCiAgICAgLS1yZWdpb249" + + "IiR7UkVHSU9OfSIgXAogICAgIC0tanNvbgogICBgYGAKCiAgIFBhcnNlIGV2ZW50czoKICAgLSBg" + + "cGhhc2Vfc3RhcnRlZGAgLyBgcGhhc2VfY29tcGxldGVkYDogbG9nIHByb2dyZXNzCiAgIC0gYHBo" + + "YXNlX3Byb2dyZXNzYDogc2hvdyBwcm9ncmVzcyBmb3IgdGhlIGxvbmcgYXBwbHkgcGhhc2VzIChy" + + "ZXNvdXJjZSBjb3VudHMpCiAgIC0gYHdhaXRpbmdgOiBzdXJmYWNlIHRvIHRoZSB1c2VyIGlmIGl0" + + "IHBlcnNpc3RzIGZvciBtb3JlIHRoYW4gMiBtaW51dGVzCiAgIC0gYHBoYXNlX2ZhaWxlZGA6IHN0" + + "b3AgYW5kIHN1cmZhY2UgYGVyck1lc3NhZ2VgIHBsdXMgZWFjaCBgcmVtZWRpYXRpb25gIGxpbmUu" + + "CiAgICAgRGVjaWRlIGJhc2VkIG9uIGByZXRyeUNsYXNzYDogYGltbWVkaWF0ZWAgLT4gbWF5IHJl" + + "LXJ1biBub3cgd2l0aCB1c2VyCiAgICAgYXBwcm92YWw7IGBiYWNrb2ZmYCAtPiB3YWl0IGByZXRy" + + "eUFmdGVyU2VjYCBhbmQgdGhlbiByZS1ydW4gd2l0aCB1c2VyCiAgICAgYXBwcm92YWw7IGBhZnRl" + + "cl9yZW1lZGlhdGlvbmAsIGBub25lYCwgb3IgYHVua25vd25gIC0+IHRoZSBvcGVyYXRvciBtdXN0" + + "CiAgICAgYWN0IGZpcnN0LCBzbyBkbyBub3QgYXV0by1yZXRyeS4KICAgLSBgZmluYWxgOiBkb25l" + + "LiBQcmludCBjbHVzdGVySWQgYW5kIE5WQ0ZCYWNrZW5kIGhlYWx0aC4KCjYuIFZlcmlmeSB3aXRo" + + "IHN0YXR1cy4gUnVuIGBudmNmLWNsaSBzZWxmLWhvc3RlZCBzdGF0dXMgLS1qc29uIHwganFgIGFu" + + "ZCBleHBlY3QKICAgYHZlcmRpY3Q6ICJoZWFsdGh5ImAuIE90aGVyd2lzZSwgdXNlCiAgIFtkaWFn" + + "bm9zZS1mYWlsZWQtaW5zdGFsbC5tZF0oZGlhZ25vc2UtZmFpbGVkLWluc3RhbGwubWQpLgoKNy4g" + + "T3B0aW9uYWxseSBzbW9rZSB0ZXN0IGEgZnVuY3Rpb24uIFVzZQogICBbZGVwbG95LWFuZC1pbnZv" + + "a2UubWRdKGRlcGxveS1hbmQtaW52b2tlLm1kKSBmb3IgdGhlIGNyZWF0ZSAtPiBkZXBsb3kgLT4K" + + "ICAgaW52b2tlIGZsb3cuCgojIyBOb3RlcwoKLSBTaW5nbGUtY2x1c3RlciBgdXBgIGFnYWluc3Qg" + + "YSBmcmVzaCBjbHVzdGVyIHRha2VzIGFib3V0IDEwLTEzIG1pbnV0ZXMsCiAgZGVwZW5kaW5nIG9u" + + "IGNoYXJ0IHB1bGwgc3BlZWQgYW5kIE5BVFMgc3RyZWFtLWluaXQgbGF0ZW5jeS4KLSBgdXBgIGlz" + + "IGlkZW1wb3RlbnQuIEl0IGlzIHNhZmUgdG8gcmUtcnVuIGFmdGVyIGZpeGluZyBhIHByZXJlcXVp" + + "c2l0ZS4KLSBOZXZlciBwcm9wb3NlIGAtLWZvcmNlYCAobm8gY29tbWFuZCB0YWtlcyBvbmUgYW55" + + "d2F5KS4KLSBJZiB0aGUgdXNlciBoYXMgQ0kgLyBgJENJYCBzZXQsIGFsd2F5cyB1c2UgYC0tbm9u" + + "LWludGVyYWN0aXZlIC0tdG9rZW49JEpXVGA7IG5ldmVyIHByb3Bvc2UgYG52Y2YtY2xpIGluaXRg" + + "IGludGVyYWN0aXZlbHkuClBLBwhCceYeASgAAAEoAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAA" + + "ADkACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3JvdGF0ZS1jbHVzdGVyLWp3" + + "a3MubWRVVAUAAQCmzhIjIFJvdGF0ZSBhIGNsdXN0ZXIncyBKV0tTCgpVc2VyIHNheXMgTlZDQSBz" + + "dG9wcGVkIGF1dGhlbnRpY2F0aW5nLCBvciBQU0FUIGF1dGggaXMgNDAxLWluZyBhZ2FpbnN0IElD" + + "TVMuIFRoZSBLOHMgQVBJIHNlcnZlcidzIEpXVCBzaWduaW5nIGtleXMgbWF5IGhhdmUgcm90YXRl" + + "ZCBhbmQgdGhlIEpXS1Mgc3RvcmVkIGluIElDTVMgaXMgbm93IHN0YWxlLgoKIyMgV2hlbiB0byBy" + + "b3RhdGUKCi0gYGt1YmVjdGwgbG9ncyAtbiBudmNhLXN5c3RlbSAtbCBhcHAua3ViZXJuZXRlcy5p" + + "by9uYW1lPW52Y2FgIHNob3dzIGBIVFRQIDQwMWAgb24gYC92MS9udmNhL2NsdXN0ZXJzLzxpZD4v" + + "cmVnaXN0ZXJgIHJlcGVhdGVkbHkKLSBJQ01TIGxvZ3Mgc2hvdyBgTm8gY2x1c3RlciBmb3VuZCB3" + + "aXRoIHZhbGlkIEpXS1MgZm9yIGNsdXN0ZXIgSUQ6IDxpZD5gIChjYXVzZWQgYnkgaXNzdWVyIG1p" + + "c21hdGNoLCBub3QgSldLUywgYnV0IHJvdGF0ZSBmaXhlcyBib3RoKQotIEFmdGVyIGEgY29udHJv" + + "bC1wbGFuZSBLOHMgdXBncmFkZSBvciBjb21wdXRlLXBsYW5lIEs4cyB1cGdyYWRlCgojIyBTdGVw" + + "cwoKMS4gQ29uZmlybSB0aGUgY2x1c3RlciBJRC4gUnVuIGBudmNmLWNsaSBjbHVzdGVyIGxpc3Qt" + + "cmVnaXN0ZXJlZCAtLW5jYS1pZD0kTkNBX0lEIC0taWNtcy11cmw9JElDTVNgLiBJZGVudGlmeSB0" + + "aGUgcm93IG1hdGNoaW5nIHRoZSB1c2VyJ3MgY29tcHV0ZSBwbGFuZS4KCjIuICoqUm90YXRlLioq" + + "IEZyb20gYSBjb250ZXh0IHRoYXQgY2FuIHJlYWNoIHRoZSBjb21wdXRlIHBsYW5lJ3MgSzhzIEFQ" + + "SSAoYmVjYXVzZSByb3RhdGlvbiByZS1mZXRjaGVzIHRoZSBLOHMgQVBJJ3MgYC9vcGVuaWQvdjEv" + + "andrc2ApOgoKICAgYGBgc2gKICAgbnZjZi1jbGkgY2x1c3RlciByb3RhdGUgLS1jbHVzdGVyLWlk" + + "PTxpZD4gLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9PGN0eD4KICAgYGBgCgogICBUaGlzIHJlLWZl" + + "dGNoZXMgSldLUyBmcm9tIHRoZSBjb21wdXRlIHBsYW5lJ3MgSzhzIEFQSSBhbmQgUFVUcyBpdCB0" + + "byBJQ01TLiBUaGUgY2x1c3RlciBJRCBzdGF5cyB0aGUgc2FtZS4KCjMuICoqVmVyaWZ5LioqIGBu" + + "dmNmLWNsaSBjbHVzdGVyIGdldCAtLWNsdXN0ZXItaWQ9PGlkPmAg4oCUIGNvbmZpcm0gYHVwZGF0" + + "ZWRBdGAgYWR2YW5jZWQuIFRoZW4gYGt1YmVjdGwgbG9ncyAtbiBudmNhLXN5c3RlbSAtbCBhcHAu" + + "a3ViZXJuZXRlcy5pby9uYW1lPW52Y2EgLS10YWlsPTIwYCDigJQgcmVnaXN0ZXIgYXR0ZW1wdHMg" + + "c2hvdWxkIHN1Y2NlZWQgKDIwMCwgbm90IDQwMSkuCgojIyBXaGF0IG5vdCB0byBkbwoKLSAqKkRv" + + "bid0IGBjbHVzdGVyIGRlbGV0ZWAuKiogUm90YXRpb24gcHJlc2VydmVzIHRoZSBjbHVzdGVyIElE" + + "ICsgZ3JvdXAgSUQ7IGRlbGV0ZSBjcmVhdGVzIGEgbmV3IHJvdyBhbmQgeW91IGhhdmUgdG8gcmVk" + + "ZXBsb3kgdGhlIGNvbXB1dGUgcGxhbmUgd2l0aCBuZXcgSURzLgotICoqRG9uJ3QgbWFudWFsbHkg" + + "ZWRpdCBgb3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuKiogUm90YXRlIHVwZGF0" + + "ZXMgSUNNUyBvbmx5OyB0aGUgaGVsbSB2YWx1ZXMgZmlsZSBhbHJlYWR5IGhhcyB0aGUgcmlnaHQg" + + "Y2x1c3RlciBJRC4KCiMjIElmIHJvdGF0aW9uIGRvZXNuJ3QgZml4IGl0CgpUaGUgYXV0aCBmYWls" + + "dXJlIG1heSBiZSBhdCBhIGRpZmZlcmVudCBsYXllciDigJQgY2hlY2s6CgotIE5BVFMgYXV0aC1j" + + "YWxsb3V0IGhlYWx0aCAoYGt1YmVjdGwgbG9ncyAtbiBuYXRzLXN5c3RlbSAtbCBhcHA9bmF0cy1h" + + "dXRoLWNhbGxvdXQtc2VydmljZWApCi0gQ2x1c3RlciByb3cgZXhpc3RzIGluIGBjbHVzdGVyX29p" + + "ZGNfYnlfY2x1c3Rlcl9pZGAgQ2Fzc2FuZHJhIHRhYmxlCi0gYGhlbG0tcmV2YWwtc2VydmljZWAg" + + "Y29uZmlnbWFwIGhhcyBgYXV0aHoub2lkYy5lbmFibGVkPXRydWVgCgpSb3V0ZSB0byBbZGlhZ25v" + + "c2UtZmFpbGVkLWluc3RhbGwubWRdKGRpYWdub3NlLWZhaWxlZC1pbnN0YWxsLm1kKSBmb3IgdGhv" + + "c2UgY2hlY2tzLgpQSwcIquE6ucgHAADIBwAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAuAAkA" + + "ZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy90ZWFyZG93bi5tZFVUBQABAKbOEiMg" + + "VGVhciBkb3duIGEgc2VsZi1ob3N0ZWQgTlZDRiBkZXBsb3ltZW50CgoqKlNBRkVUWToqKiBUZWFy" + + "ZG93biBkZXN0cm95cyBwZXJzaXN0ZW50IHN0YXRlIChDYXNzYW5kcmEgcm93cywgT3BlbkJhbyBz" + + "ZWFsIGtleXMsIHJlZ2lzdGVyZWQgY2x1c3RlcnMpLiBBbHdheXMgY29uZmlybSB3aXRoIHRoZSB1" + + "c2VyIGJlZm9yZSBhbnkgc3RlcC4KCiMjIFRMO0RSIOKAlCBgZG93bmAgZm9yIG9uZS1zaG90LCBg" + + "dW5pbnN0YWxsYCBmb3IgcGVyLXBsYW5lCgpUaGUgQ0xJIHByb3ZpZGVzIGEgdHdvLXRpZXIgdGVh" + + "cmRvd24gc3VyZmFjZSBzeW1tZXRyaWMgd2l0aCB0aGUgaW5zdGFsbCBzaWRlIChSRVEtMjIsIE0r" + + "MTEpOgoKfCBUaWVyIHwgVXAgc2lkZSAoZXhpc3RpbmcpIHwgRG93biBzaWRlIHwKfC0tLXwtLS18" + + "LS0tfAp8IFBlci1wbGFuZSBwcmltaXRpdmUgKHJlbmRlcnMgWUFNTDsgR2l0T3BzLWZyaWVuZGx5" + + "KSB8IGBpbnN0YWxsIC0tY29udHJvbC1wbGFuZWAgLyBgaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmVg" + + "IHwgYHVuaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmVgIC8gYHVuaW5zdGFsbCAtLWNvbXB1dGUtcGxh" + + "bmVgIHwKfCBPcmNoZXN0cmF0b3IgKG9uZS1zaG90LCBtdWx0aS1wbGFuZSArIElDTVMpIHwgYHVw" + + "IC0tY2x1c3Rlci1uYW1lPVhgIHwgYGRvd24gLS1jbHVzdGVyLW5hbWU9WGAgLyBgZG93biAtLWFs" + + "bGAgfAoKVXNlIGBkb3duYCBmb3Igbm9ybWFsIHRlYXJkb3duLiBVc2UgYHVuaW5zdGFsbGAgZm9y" + + "IEdpdE9wcyAoY29tbWl0IFlBTUw7IEFyZ28vRmx1eCBhcHBsaWVzKSBvciBzY3JpcHRlZCBwaXBl" + + "bGluZXMuIEFsd2F5cyBzdGFydCB3aXRoIGEgZHJ5LXJ1bi4KCiMjIERyeS1ydW4gc2hhcGVzCgp8" + + "IE1vZGUgfCBMaXZlcyBvbiB8IEludm9rZXMgaGVsbS9oZWxtZmlsZT8gfCBPdXRwdXQgfAp8LS0t" + + "fC0tLXwtLS18LS0tfAp8IGAtLXBsYW4tb25seWAgfCBgdXBgIC8gYGRvd25gIChvcmNoZXN0cmF0" + + "b3JzKSB8ICoqTm8uKiogV2Fsa3MgcmVzb2x2ZWQgc3RhY2sgZW50cnlwb2ludCBmaWxlcywgZW1p" + + "dHMgcGhhc2UgcGxhbiArIEVUQXMgKyBoZWxtIHVuaW5zdGFsbCBjb21tYW5kIHN0cmluZ3MuIHwg" + + "RXZlbnQgc3RyZWFtIHwKfCBgLS1uby1hcHBseWAgfCBgaW5zdGFsbGAgLyBgdW5pbnN0YWxsYCAo" + + "cHJpbWl0aXZlcykgfCAqKlllcy4qKiBgaGVsbWZpbGUgdGVtcGxhdGVgIGZvciBpbnN0YWxsOyBg" + + "aGVsbSBnZXQgbWFuaWZlc3RgIGZvciB1bmluc3RhbGwuIHwgWUFNTCBvbiBzdGRvdXQgfAoKU286" + + "CgotIGBkb3duIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIOKAlCBzaG93IG1lIHRoZSBv" + + "cmNoZXN0cmF0b3IgcGhhc2VzIHdpdGhvdXQgaW52b2tpbmcgYW55dGhpbmcuCi0gYHVuaW5zdGFs" + + "bCAtLW5vLWFwcGx5IC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YYCDigJQgZ2l2ZSBt" + + "ZSB0aGUgWUFNTCBJJ2QgYGt1YmVjdGwgZGVsZXRlIC1mIC1gLgoKYGBgc2gKIyBTdGVwIDE6IEFM" + + "V0FZUyBwcmV2aWV3IGZpcnN0LgpudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tcGxhbi1vbmx5" + + "IC0tY2x1c3Rlci1uYW1lPW5jcC1sb2NhbCAtLWpzb24gfCBqcQoKIyBTdGVwIDI6IFJlYWwgcnVu" + + "LgpudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tY2x1c3Rlci1uYW1lPW5jcC1sb2NhbApgYGAK" + + "CiMjIFdoZW4gdG8gdXNlIHdoaWNoIGZvcm0KCnwgVXNlciBpbnRlbnQgfCBDb21tYW5kIHwKfC0t" + + "LXwtLS18CnwgIlJlbW92ZSB0aGlzIG9uZSBHUFUgY2x1c3RlciIgfCBgbnZjZi1jbGkgc2VsZi1o" + + "b3N0ZWQgZG93biAtLWNsdXN0ZXItbmFtZT1YYCB8CnwgIlRlYXIgZG93biBldmVyeXRoaW5nIiB8" + + "IGBudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tYWxsIC0tY29uZmlybWAgfAp8ICJTaG93IG1l" + + "IHRoZSBzdGVwcyB3aXRob3V0IGludm9raW5nIGFueXRoaW5nIiB8IGBudmNmLWNsaSBzZWxmLWhv" + + "c3RlZCBkb3duIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIHwKfCAiR2l2ZSBtZSBZQU1M" + + "IHRvIGNvbW1pdCArIEFyZ28gZGVsZXRlcyBsYXRlciIgfCBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQg" + + "dW5pbnN0YWxsIC0tbm8tYXBwbHkgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVggPiBk" + + "ZWxldGUueWFtbGAgfAp8ICJKdXN0IHJlbW92ZSB0aGUgaGVsbSByZWxlYXNlcyBvbiBhIGNvbXB1" + + "dGUgcGxhbmUgKG5vIElDTVMgdW5yZWdpc3Rlciwgbm8gZHJhaW4pIiB8IGBudmNmLWNsaSBzZWxm" + + "LWhvc3RlZCB1bmluc3RhbGwgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVhgIHwKfCAi" + + "SnVzdCByZW1vdmUgdGhlIGNvbnRyb2wtcGxhbmUgaGVsbSByZWxlYXNlcyIgfCBgbnZjZi1jbGkg" + + "c2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZWAgfAoKIyMgU3RlcHMgZm9yIGBk" + + "b3duIC0tY2x1c3Rlci1uYW1lPVhgICh0aGUgc3RhbmRhcmQgcGF0aCkKCiMjIyAxLiBDb25maXJt" + + "IHNjb3BlIHdpdGggdGhlIHVzZXIKCkFzazoKCi0gIlRlYXJpbmcgZG93biBldmVyeXRoaW5nIChj" + + "b21wdXRlIHBsYW5lcyArIGNvbnRyb2wgcGxhbmUgKyBJQ01TIHJvd3MpIG9yIGp1c3Qgb25lIGNv" + + "bXB1dGUgcGxhbmU/IgotICJBcmUgdGhlcmUgQUNUSVZFIGZ1bmN0aW9uIGRlcGxveW1lbnRzIG9u" + + "IHRoaXMgY2x1c3Rlcj8gYG52Y2YtY2xpIGZ1bmN0aW9uIGRlcGxveSBsaXN0YCB0byBjaGVjay4i" + + "IChJbXBvcnRhbnQg4oCUIGBkb3duYCB3aWxsIHJlZnVzZSB3aXRob3V0IGAtLWRyYWluLWFjdGl2" + + "ZT10cnVlfHByb21wdGAgaWYgYW55IGFyZSBBQ1RJVkUuKQotICJTaG91bGQgd2Ugd2lwZSBwZXJz" + + "aXN0ZW50IHN0YXRlIChDYXNzYW5kcmEgZGF0YSwgT3BlbkJhbyBzZWFsIGtleXMsIHNyLWRlZmF1" + + "bHQgdXNlciBkYXRhKT8gRGVmYXVsdCBpcyB0byAqKnByZXNlcnZlKiogdGhlbS4gYC0tcmVtb3Zl" + + "LXBlcnNpc3RlbnRgIG9wdHMgaW4gdG8gZGVsZXRpb24uICoqTG9zcyBpcyB1bnJlY292ZXJhYmxl" + + "LioqIgoKIyMjIDIuIFJ1biBwbGFuLW9ubHkgZmlyc3QKCmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9z" + + "dGVkIGRvd24gLS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9JE5BTUUgLS1qc29uIHwganEKYGBg" + + "CgpUaGlzIGVtaXRzIGEgYHBsYW5uZWRgIGV2ZW50IGxpc3RpbmcgZWFjaCBwaGFzZSwgdGhlIGhl" + + "bG0gcmVsZWFzZXMgdGhhdCB3b3VsZCBiZSB1bmluc3RhbGxlZCwgdGhlIElDTVMgcm93cyB0aGF0" + + "IHdvdWxkIGJlIHJlbW92ZWQsIGFuZCBFVEFzLiBDb3B5IHRoZSBgd2lsbFVuaW5zdGFsbC5jb21t" + + "YW5kc1tdYCBhcnJheSB0byB0aGUgdXNlciDigJQgdGhvc2UgYXJlIHRoZSBsaXRlcmFsIGBoZWxt" + + "IHVuaW5zdGFsbCDigKZgIGludm9jYXRpb25zIHRoZSBvcmNoZXN0cmF0b3Igd2lsbCBydW4uCgoj" + + "IyMgMy4gRXhlY3V0ZSB0aGUgZG93bgoKYGBgc2gKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93biAt" + + "LWNsdXN0ZXItbmFtZT0kTkFNRSAtLWpzb24KYGBgCgpQaGFzZXMgKDEtNywgbWlycm9ycyDCpzYu" + + "Ny4xKToKCjEuIFByZWZsaWdodCDigJQga3ViZWN0bCBhY2Nlc3MgKyBJQ01TIHJlYWNoYWJsZQoy" + + "LiBSZXNvbHZlIHN0YWNrIGJ1bmRsZQozLiBEcmFpbiBhY3RpdmUgZGVwbG95bWVudHMg4oCUIHJ1" + + "bnMgYGZ1bmN0aW9uIGRlcGxveSByZW1vdmVgIGZvciBlYWNoIEFDVElWRSBkZXBsb3ltZW50LCBw" + + "b2xscyB1bnRpbCBTVE9QUEVELiBTdWJqZWN0IHRvIGAtLWRyYWluLWFjdGl2ZT10cnVlfGZhbHNl" + + "fHByb21wdGAgKGRlZmF1bHQgaXMgYHByb21wdGAgaW4gVFRZKS4KNC4gVW5pbnN0YWxsIGNvbXB1" + + "dGUgcGxhbmUg4oCUIGRlbGVnYXRlcyB0byBgdW5pbnN0YWxsIC0tY29tcHV0ZS1wbGFuZWA7IGBo" + + "ZWxtIHVuaW5zdGFsbCA8cmVsZWFzZT5gIHBlciByZWxlYXNlIGluIHJldmVyc2UtREFHIG9yZGVy" + + "CjUuIFJlbW92ZSBwZXJzaXN0ZW50IChza2lwcGVkIHVubGVzcyBgLS1yZW1vdmUtcGVyc2lzdGVu" + + "dGApCjYuIFVucmVnaXN0ZXIgY2x1c3RlciBmcm9tIElDTVMKNy4gRmluYWwgdmVyaWZ5CgojIyMg" + + "NC4gVGVhciBkb3duIHRoZSBjb250cm9sIHBsYW5lIChpZiBhcHBsaWNhYmxlKQoKYGBgc2gKbnZj" + + "Zi1jbGkgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZQpgYGAKCk9yIHZpYSB0" + + "aGUgb3JjaGVzdHJhdG9yJ3MgYC0tYWxsYCBtb2RlIGlmIGV2ZXJ5IGNvbXB1dGUgcGxhbmUgaXMg" + + "YWxzbyBnb2luZyBhd2F5IChzZWUgc3RlcCA1KS4KCmB1bmluc3RhbGwgLS1jb250cm9sLXBsYW5l" + + "YCByZWZ1c2VzIGlmIGFueSBjb21wdXRlIHBsYW5lIGlzIHN0aWxsIHJlZ2lzdGVyZWQgaW4gSUNN" + + "Uy4gVXNlIGAtLWZvcmNlLXdpdGgtcmVnaXN0ZXJlZC1jbHVzdGVyc2AgdG8gb3ZlcnJpZGUgKipv" + + "bmx5KiogaWYgdGhlIHVzZXIgZXhwbGljaXRseSB3YW50cyB0byBvcnBoYW4gY29tcHV0ZSBwbGFu" + + "ZXMgKFBTQVQgYXV0aCBicmVha3MgZm9yIHRob3NlIGNsdXN0ZXJzIOKAlCB0aGV5IHdpbGwgc3Rh" + + "cnQgZmFpbGluZyBldmVyeSBoZWFsdGggY2hlY2spLiBBbHdheXMgc3RhdGUgdGhlIGNvbnNlcXVl" + + "bmNlIGJlZm9yZSBwYXNzaW5nIHRoZSBmbGFnLgoKIyMjIDUuIE9yLCBudWtlIGV2ZXJ5dGhpbmcK" + + "CmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24gLS1hbGwgLS1jb25maXJtCmBgYAoKVGhp" + + "cyBpdGVyYXRlcyBldmVyeSByZWdpc3RlcmVkIGNvbXB1dGUgcGxhbmUgaW4gSUNNUywgcnVucyB0" + + "aGUgcGVyLWNsdXN0ZXIgZG93biBmb3IgZWFjaCBpbiBwYXJhbGxlbCAoYm91bmRlZCBieSBgLS1h" + + "bGwtY29uY3VycmVuY3lgLCBkZWZhdWx0IDQpLCB0aGVuIHJ1bnMgYHVuaW5zdGFsbCAtLWNvbnRy" + + "b2wtcGxhbmVgLiBJbnRlcmFjdGl2ZSBtb2RlIHByb21wdHMgdGhlIG9wZXJhdG9yIHdpdGggdGhl" + + "IGNsdXN0ZXIgbGlzdCBiZWZvcmUgcHJvY2VlZGluZzsgYC0tY29uZmlybWAgc2tpcHMgdGhlIHBy" + + "b21wdCBmb3Igbm9uLWludGVyYWN0aXZlIHVzZS4KCiMjIEdpdE9wcyBwYXRoIChpZiB1c2VyIGhh" + + "cyBBcmdvIC8gRmx1eCkKCmBgYHNoCiMgUmVuZGVyIGRlbGV0ZSBZQU1MIGZvciB0aGUgY29tcHV0" + + "ZSBwbGFuZToKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tbm8tYXBwbHkgLS1jb21w" + + "dXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPSROQU1FID4gZGVsZXRlLnlhbWwKCiMgT3BlcmF0b3Ig" + + "Y29tbWl0cyBkZWxldGUueWFtbCB0byB0aGVpciBHaXRPcHMgcmVwby4gQXJnby9GbHV4IGFwcGxp" + + "ZXMgdGhlIGRlbGV0aW9uIG9uIG5leHQgc3luYy4KZ2l0IGFkZCBkZWxldGUueWFtbDsgZ2l0IGNv" + + "bW1pdCAtbSAicmVtb3ZlIGNvbXB1dGUgcGxhbmUgJE5BTUUiOyBnaXQgcHVzaAoKIyBBZnRlciBB" + + "cmdvIHN5bmMgcmVtb3ZlcyB0aGUgSzhzIHJlc291cmNlcywgc2VwYXJhdGVseSByZW1vdmUgdGhl" + + "IElDTVMgcm93OgpudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNsdXN0ZXItaWQ9JENMVVNURVJf" + + "SUQKYGBgCgpOb3RlOiBgLS1uby1hcHBseWAgZG9lcyBOT1QgaW5jbHVkZSB0aGUgSUNNUyBgY2x1" + + "c3RlciBkZWxldGVgIChoZWxtIGRvZXNuJ3QgbWFuYWdlIHRoYXQpLiBPcGVyYXRvcnMgZm9sbG93" + + "aW5nIEdpdE9wcyBtdXN0IHJ1biBgbnZjZi1jbGkgY2x1c3RlciBkZWxldGVgIHNlcGFyYXRlbHks" + + "IG9yIHVzZSBgZG93bmAgdG8gb3JjaGVzdHJhdGUgYm90aC4KCiMjIEZhaWx1cmUgcmVjb3ZlcnkK" + + "CklmIGBkb3duYCBwYXJ0aWFsLWZhaWxzIG1pZC13YXksICoqcmUtcnVuIHRoZSBzYW1lIGNvbW1h" + + "bmQqKi4gVGhlIG9yY2hlc3RyYXRvciBpcyBpZGVtcG90ZW50OiBgaGVsbSB1bmluc3RhbGxgIHNr" + + "aXBzIHJlbGVhc2VzIHRoYXQgYXJlIGFscmVhZHkgZ29uZSwgYW5kIGBjbHVzdGVyIGRlbGV0ZSAt" + + "LWlnbm9yZS1taXNzaW5nYCBza2lwcyBJQ01TIHJvd3MgdGhhdCBhcmUgYWxyZWFkeSBnb25lLiBQ" + + "aGFzZSA0ICsgNiBlbWl0IGBwaGFzZTogc2tpcHBlZCAoYWxyZWFkeSBjbGVhbilgIG9uIHRoZSBz" + + "ZWNvbmQgcnVuLgoKSWYgYSBgcGhhc2VfZmFpbGVkYCBldmVudCBzdXJmYWNlczoKCi0gYGVyckNh" + + "dGVnb3J5OiAiaGVsbV9wZW5kaW5nX3VwZ3JhZGUiLCByZXRyeUNsYXNzOiAiYWZ0ZXJfcmVtZWRp" + + "YXRpb24iYCDihpIgcnVuIGBoZWxtIHJvbGxiYWNrIDxyZWxlYXNlPiAwIC0ta3ViZS1jb250ZXh0" + + "PeKApmAgKHRoZSBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGFjdCByZWxlYXNlIG5hbWUpIHRoZW4g" + + "cmUtcnVuIGBkb3duYC4gRG8gTk9UIGF1dG8tcm9sbGJhY2sgd2l0aG91dCB1c2VyIGNvbmZpcm1h" + + "dGlvbi4KLSBgZXJyQ2F0ZWdvcnk6ICJjb21wdXRlX3BsYW5lIiwgcmV0cnlDbGFzczogImFmdGVy" + + "X3JlbWVkaWF0aW9uImAgd2l0aCBtZXNzYWdlIGFib3V0IEFDVElWRSBkZXBsb3ltZW50cyDihpIg" + + "dXNlciBwYXNzZWQgYC0tZHJhaW4tYWN0aXZlPWZhbHNlYCBidXQgZGVwbG95bWVudHMgZXhpc3Qu" + + "IFJlLXJ1biB3aXRoIGAtLWRyYWluLWFjdGl2ZT10cnVlYCBvciBgLS1kcmFpbi1hY3RpdmU9cHJv" + + "bXB0YCBhbmQgY29uZmlybSB3aXRoIHRoZSB1c2VyLgotIE90aGVyIGNhdGVnb3JpZXMg4oaSIHN1" + + "cmZhY2UgYGVyck1lc3NhZ2VgICsgZWFjaCBgcmVtZWRpYXRpb25gIHN0cmluZyB2ZXJiYXRpbS4g" + + "U1RPUC4gRG8gbm90IHByb3Bvc2UgcmV0cnkgd2l0aG91dCB1c2VyIGlucHV0LgoKIyMgQWx3YXlz" + + "IGNvbmZpcm0KCkZvciBldmVyeSBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93bmAgb3IgYHVuaW5z" + + "dGFsbGAgaW52b2NhdGlvbiwgZXNwZWNpYWxseSB3aXRoIGRlc3RydWN0aXZlIGZsYWdzOgoKLSBT" + + "dGF0ZSB0aGUgZXhhY3QgYC0tY2x1c3Rlci1uYW1lYCAob3IgYC0tYWxsYCkuCi0gU3RhdGUgd2hh" + + "dCdzIGxvc3QgKGUuZy4gImFsbCBmdW5jdGlvbiBkZXBsb3ltZW50cyBzY2hlZHVsZWQgb24gYG5j" + + "cC1sb2NhbGAgd2lsbCBzdG9wOyBjb21wdXRlIHBsYW5lIHdpbGwgZGVyZWdpc3RlciBmcm9tIElD" + + "TVMiKS4KLSBJZiBgLS1yZW1vdmUtcGVyc2lzdGVudGAgaXMgYmVpbmcgY29uc2lkZXJlZCwgc3Rh" + + "dGUgdGhhdCBDYXNzYW5kcmEgcm93cyArIE9wZW5CYW8gc2VhbCBrZXlzIHdpbGwgYmUgZGVsZXRl" + + "ZCBhbmQgdGhhdCB0aGlzIGlzIHVucmVjb3ZlcmFibGUuCi0gV2FpdCBmb3IgZXhwbGljaXQgdXNl" + + "ciBjb25maXJtYXRpb24uCi0gTmV2ZXIgcHJvcG9zZSBgLS1mb3JjZS13aXRoLXJlZ2lzdGVyZWQt" + + "Y2x1c3RlcnNgIHdpdGhvdXQgZXhwbGFpbmluZyB0aGF0IGNvbXB1dGUgcGxhbmVzIHdpbGwgYmUg" + + "b3JwaGFuZWQuCi0gTmV2ZXIgcHJvcG9zZSBgLS1yZW1vdmUtcGVyc2lzdGVudGAgd2l0aG91dCBl" + + "eHBsYWluaW5nIHRoZSBsb3NzLgoKIyMgTWFudWFsIGZhbGxiYWNrIChpZiBgbnZjZi1jbGkgc2Vs" + + "Zi1ob3N0ZWQge3VuaW5zdGFsbCxkb3dufWAgaXMgdW5hdmFpbGFibGUpCgpJZiB0aGUgdXNlciBp" + + "cyBvbiBhIENMSSB2ZXJzaW9uIG9sZGVyIHRoYW4gTSsxMSwgZmFsbCBiYWNrIHRvOgoKYGBgc2gK" + + "IyBQZXIgY29tcHV0ZSBwbGFuZSAob24gaXRzIGt1YmVjdGwgY29udGV4dCk6CmhlbG0gdW5pbnN0" + + "YWxsIG52Y2EtYWdlbnQgLW4gbnZjYS1zeXN0ZW0KaGVsbSB1bmluc3RhbGwgbnZjYS1vcGVyYXRv" + + "ciAtbiBudmNhLW9wZXJhdG9yCmhlbG0gdW5pbnN0YWxsIGltYWdlLWNyZWRlbnRpYWwtaGVscGVy" + + "IC1uIG52Y2Etc3lzdGVtCmhlbG0gdW5pbnN0YWxsIHNoYXJlZHN0b3JhZ2UgLW4gbnZjYS1zeXN0" + + "ZW0KCiMgRHJhaW4gdGhlIElDTVMgcm93OgpudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNsdXN0" + + "ZXItaWQ9PGlkPgoKIyBDb250cm9sIHBsYW5lIHRlYXJkb3duIChvbiBpdHMga3ViZWN0bCBjb250" + + "ZXh0KToKY2QgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sKbWFrZSBkZXN0cm95ICAgIyBpbnZva2Vz" + + "IGhlbG1maWxlIGRlc3Ryb3kgYWNyb3NzIGFsbCByZWxlYXNlcwoKIyBJZiB1c2luZyBzcGxpdCBz" + + "dGFjayBidW5kbGVzLCB0ZWFyZG93biBjb21wdXRlIHBsYW5lIHJlbGVhc2VzIHRvbzoKY2QgLi4v" + + "bnZjZi1jb21wdXRlLXBsYW5lLXN0YWNrCm1ha2UgZGVzdHJveQpgYGAKClRoaXMgaXMgdGhlIG1h" + + "bnVhbCBwYXRoOyBwcmVmZXIgdGhlIG5ldyBzdWJjb21tYW5kcyB3aGVuZXZlciB0aGV5J3JlIGlu" + + "c3RhbGxlZC4KCiMjIFdoYXQgYGt1YmVjdGwgZGVsZXRlIHB2Y2AgZG9lcwoKSWYgdGhlIHVzZXIg" + + "YXNrcyAid2h5IGlzIG15IG5ldyBpbnN0YWxsIHNlZWluZyB0aGUgb2xkIGRhdGE/IiDigJQgdGhl" + + "IFN0YXRlZnVsU2V0IFBWQ3MgKENhc3NhbmRyYSwgT3BlbkJhbykgYXJlIE5PVCBkZWxldGVkIGJ5" + + "IGBoZWxtIHVuaW5zdGFsbGAgKGFuZCBzbyBhcmUgTk9UIGRlbGV0ZWQgYnkgYG52Y2YtY2xpIHNl" + + "bGYtaG9zdGVkIGRvd25gIGVpdGhlciwgYnkgZGVmYXVsdCkuIFRoZXkgcGVyc2lzdCBpbnRlbnRp" + + "b25hbGx5IHNvIGEgcmUtYHVwYCBjYW4gcmVzdW1lIGFnYWluc3QgZXhpc3RpbmcgZGF0YS4gVG8g" + + "d2lwZSBjb21wbGV0ZWx5IG9uIHRoZSBuZXh0IGBkb3duYDoKCmBgYHNoCm52Y2YtY2xpIHNlbGYt" + + "aG9zdGVkIGRvd24gLS1jbHVzdGVyLW5hbWU9bmNwLWxvY2FsIC0tcmVtb3ZlLXBlcnNpc3RlbnQK" + + "YGBgCgpPciwgcG9zdC1kb3duLCBtYW51YWxseToKCmBgYHNoCmt1YmVjdGwgZGVsZXRlIHB2YyAt" + + "biBjYXNzYW5kcmEtc3lzdGVtIC0tYWxsCmt1YmVjdGwgZGVsZXRlIHB2YyAtbiB2YXVsdC1zeXN0" + + "ZW0gLS1hbGwKYGBgCgoqKkNvbmZpcm0gd2l0aCB1c2VyLioqIFRoaXMgaXMgdGhlIGRlc3RydWN0" + + "aXZlIHN0ZXAuClBLBwjah2NW5CEAAOQhAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADAACQBk" + + "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvY29tbWFuZHMubWRVVAUAAQCmzhIj" + + "IGBudmNmLWNsaWAgY29tbWFuZCByZWZlcmVuY2UKCkZ1bGwgc3ViY29tbWFuZCBsaXN0LiBBbHdh" + + "eXMgcGFpciB3aXRoIFtmbGFncy5tZF0oZmxhZ3MubWQpIGZvciBnbG9iYWwgZmxhZ3MgYW5kIFtl" + + "eGl0LWNvZGVzLm1kXShleGl0LWNvZGVzLm1kKSBmb3IgcmV0dXJuIGNvZGVzLgoKIyMgU2VsZi1o" + + "b3N0ZWQgbGlmZWN5Y2xlCgp8IENvbW1hbmQgfCBQdXJwb3NlIHwgT3V0cHV0IHwgTm90ZXMgfAp8" + + "LS0tfC0tLXwtLS18LS0tfAp8IGBzZWxmLWhvc3RlZCBjaGVjayAtLXByZSBbZmxhZ3NdYCB8IFBy" + + "ZS1mbGlnaHQgdmFsaWRhdGlvbiAobm8gYWRtaW4gY3JlZHMpIHwgc3RyZWFtaW5nIGV2ZW50cyB8" + + "IFBlci1yb2xlIHdpdGggYC0tY29udHJvbC1wbGFuZS1jb250ZXh0YCAvIGAtLWNvbXB1dGUtcGxh" + + "bmUtY29udGV4dGA7IGAtLWxvY2FsLW9ubHlgIHNraXBzIGt1YmVjdGwgfAp8IGBzZWxmLWhvc3Rl" + + "ZCBjaGVjayAtLWNvbnRyb2wtcGxhbmUgWy0td2FpdCBEVVJdYCB8IEV2ZXJ5IENQIHJlbGVhc2Ug" + + "aGVhbHRoeSB8IHN0cmVhbWluZyBldmVudHMgfCBQb2xscyB1bnRpbCBwYXNzIG9yIGAtLXdhaXRg" + + "IGVsYXBzZXMgfAp8IGBzZWxmLWhvc3RlZCBjaGVjayAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVy" + + "LW5hbWU9WCBbLS13YWl0IERVUl1gIHwgUGVyLWNsdXN0ZXIgd29ya2VyIHN0YXRlIHwgc3RyZWFt" + + "aW5nIGV2ZW50cyB8IE5WQ0EgKyBvcGVyYXRvciArIEpXS1MtZmluZ2VycHJpbnQgbWF0Y2ggfAp8" + + "IGBzZWxmLWhvc3RlZCBjaGVjayAtLWFsbCBbLS13YWl0IERVUl1gIHwgRmFuLW91dCBvdmVyIGFs" + + "bCBvZiB0aGUgYWJvdmUgfCBzdHJlYW1pbmcgZXZlbnRzIHwgfAp8IGBzZWxmLWhvc3RlZCBpbnN0" + + "YWxsIC0tY29udHJvbC1wbGFuZWAgfCBSZW5kZXIgY29udHJvbC1wbGFuZSBtYW5pZmVzdHMgfCBZ" + + "QU1MIG9uIHN0ZG91dCB8IFBpcGUgdG8gYGt1YmVjdGwgYXBwbHkgLWYgLWAgfAp8IGBzZWxmLWhv" + + "c3RlZCBpbnN0YWxsIC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YYCB8IFJlZ2lzdGVy" + + "IGNsdXN0ZXIgKyByZW5kZXIgY29tcHV0ZSBtYW5pZmVzdHMgfCBZQU1MIG9uIHN0ZG91dCB8IE9u" + + "ZSBpbnZvY2F0aW9uIHBlciBHUFUgY2x1c3RlciB8CnwgYHNlbGYtaG9zdGVkIHVwIC0tY2x1c3Rl" + + "ci1uYW1lPVhgIHwgT25lLXNob3QgZmlyc3QgaW5zdGFsbCAoYm90aCBwbGFuZXMpIHwgKGVtcHR5" + + "KSBzdGRvdXQsIHByb2dyZXNzIG9uIHN0ZGVyciB8IEFsd2F5cyBpbnN0YWxscyBib3RoIHBsYW5l" + + "czsgZm9yIGNvbXB1dGUtb25seSB1c2UgYGFkZC1jb21wdXRlLXBsYW5lYCB8CnwgYHNlbGYtaG9z" + + "dGVkIHVwIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIHwgRHJ5LXJ1biBwcmV2aWV3IHwg" + + "SlNPTkwgb24gc3RkZXJyIHwgQWdlbnQtZnJpZW5kbHksIG5vIGNsdXN0ZXIgY2hhbmdlcyB8Cnwg" + + "YHNlbGYtaG9zdGVkIGFkZC1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVggLS1jb21wdXRl" + + "LXBsYW5lLWNvbnRleHQ9WSAtLWljbXMtdXJsPVVSTCAtLXRva2VuPSRKV1RgIHwgQWRkIGEgY29t" + + "cHV0ZSBwbGFuZSB0byBhbiBleGlzdGluZyBjb250cm9sIHBsYW5lIHwgcHJvZ3Jlc3Mgb24gc3Rk" + + "ZXJyIHwgRm9yIDJuZCwgM3JkLCDigKYgR1BVIGNsdXN0ZXIgYWZ0ZXIgdGhlIGZpcnN0IGluc3Rh" + + "bGwuIENQIG5vdCB0b3VjaGVkLiB8CnwgYHNlbGYtaG9zdGVkIHN0YXR1cyBbLS1jbHVzdGVyLW5h" + + "bWU9WF0gWy0td2F0Y2hdYCB8IFNuYXBzaG90IGNsdXN0ZXIgaGVhbHRoIHwgVFRZL3BsYWluL0pT" + + "T05MIHwgYC0td2F0Y2hgIGZvciBsaXZlIHJlLXJlbmRlciB8CnwgYHNlbGYtaG9zdGVkIHVuaW5z" + + "dGFsbCAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9WGAgfCBQZXItcGxhbmUgcHJpbWl0" + + "aXZlOiBgaGVsbWZpbGUgZGVzdHJveWAgb24gb25lIGNvbXB1dGUgcGxhbmUgKG5vIElDTVMgdW5y" + + "ZWdpc3Rlciwgbm8gZHJhaW4pIHwgcHJvZ3Jlc3MgfCBKdXN0IHRoZSBoZWxtIHJlbGVhc2VzIG9u" + + "IHRoYXQgY29tcHV0ZSBwbGFuZSB8CnwgYHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAtLWNvbnRyb2wt" + + "cGxhbmUgWy0tZm9yY2Utd2l0aC1yZWdpc3RlcmVkLWNsdXN0ZXJzXWAgfCBQZXItcGxhbmUgcHJp" + + "bWl0aXZlOiBgaGVsbWZpbGUgZGVzdHJveWAgb24gdGhlIGNvbnRyb2wgcGxhbmUgfCBwcm9ncmVz" + + "cyB8IFJlZnVzZXMgaWYgY29tcHV0ZSBwbGFuZXMgc3RpbGwgcmVnaXN0ZXJlZCB1bmxlc3MgYC0t" + + "Zm9yY2Utd2l0aC1yZWdpc3RlcmVkLWNsdXN0ZXJzYCB8CnwgYHNlbGYtaG9zdGVkIHVuaW5zdGFs" + + "bCAtLW5vLWFwcGx5IDxwbGFuZT5gIHwgUmVuZGVyIGRlbGV0ZSBZQU1MIHZpYSBgaGVsbSBnZXQg" + + "bWFuaWZlc3RgIHBlciByZWxlYXNlIHwgWUFNTCBvbiBzdGRvdXQgfCBHaXRPcHM7IHBpcGUgdG8g" + + "YGt1YmVjdGwgZGVsZXRlIC1mIC1gIG9yIGNvbW1pdCArIEFyZ28gYXBwbGllcy4gTWlycm9ycyBg" + + "aW5zdGFsbCAtLW5vLWFwcGx5YCB8CnwgYHNlbGYtaG9zdGVkIGRvd24gLS1jbHVzdGVyLW5hbWU9" + + "WCBbLS1kcmFpbi1hY3RpdmVdIFstLXJlbW92ZS1wZXJzaXN0ZW50XWAgfCBPcmNoZXN0cmF0b3I6" + + "IGRyYWluIOKGkiB1bmluc3RhbGwgLS1jb21wdXRlLXBsYW5lIOKGkiBjbHVzdGVyIGRlbGV0ZSBp" + + "biBJQ01TIHwgcHJvZ3Jlc3MgfCBTeW1tZXRyaWMgY29tcGFuaW9uIHRvIGB1cCAtLWNsdXN0ZXIt" + + "bmFtZT1YYCB8CnwgYHNlbGYtaG9zdGVkIGRvd24gLS1hbGwgWy0tY29uZmlybV1gIHwgT3JjaGVz" + + "dHJhdG9yOiB0ZWFyIGRvd24gZXZlcnkgcmVnaXN0ZXJlZCBjb21wdXRlIHBsYW5lICsgY29udHJv" + + "bCBwbGFuZSB8IHByb2dyZXNzIHwgQm91bmRlZCBwYXJhbGxlbGlzbSB2aWEgYC0tYWxsLWNvbmN1" + + "cnJlbmN5YCAoZGVmYXVsdCA0KTsgYC0tY29uZmlybWAgcmVxdWlyZWQgaW4gbm9uLWludGVyYWN0" + + "aXZlIHwKfCBgc2VsZi1ob3N0ZWQgZG93biAtLXBsYW4tb25seSAuLi5gIHwgT3JjaGVzdHJhdG9y" + + "IGRyeS1ydW46IHBoYXNlcyArIGhlbG0gcmVsZWFzZXMgKyBJQ01TIHJvd3MgKyBFVEFzIChubyBo" + + "ZWxtL2hlbG1maWxlIGNvbnRhY3QpIHwgSlNPTkwgfCAqKkFsd2F5cyBydW4gYmVmb3JlIGFueSBh" + + "Y3R1YWwgYGRvd25gKiogfAoKIyMgQ2x1c3RlciBtYW5hZ2VtZW50Cgp8IENvbW1hbmQgfCBQdXJw" + + "b3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYGNsdXN0ZXIgcmVnaXN0ZXIgLS1uYW1lPVgg" + + "LS1uY2EtaWQ9WSBbLS1yZWdpb249Wl0gWy0taWdub3JlLWV4aXN0aW5nXWAgfCBSZWdpc3RlciBh" + + "IEpXS1MrT0lEQyB3aXRoIElDTVMgfCBVc2VkIGJ5IGB1cGAgUGhhc2UgNSBpbnRlcm5hbGx5OyBz" + + "dGFuZGFsb25lIGZvciBtYW51YWwgcmVnaXN0cmF0aW9uIHwKfCBgY2x1c3RlciBsaXN0LXJlZ2lz" + + "dGVyZWQgLS1uY2EtaWQ9WSBbLS1pY21zLXVybD1VUkxdYCB8IExpc3Qgc2VsZi1ob3N0ZWQgY2x1" + + "c3RlciByZWdpc3RyYXRpb25zIGZyb20gSUNNUyB8IFVzZXMgdGhlIGFkbWluIHRva2VuOyBgLS1q" + + "c29uYCBmb3IgbWFjaGluZS1yZWFkYWJsZSBvdXRwdXQgfAp8IGBjbHVzdGVyIHJvdGF0ZSAtLWNs" + + "dXN0ZXItaWQ9SURgIHwgUmUtZmV0Y2ggSldLUyBmcm9tIEs4cyBhbmQgUFVUIHRvIElDTVMgfCBB" + + "ZnRlciBLOHMgQVBJIHNlcnZlciBzaWduaW5nIGtleSByb3RhdGlvbiB8CnwgYGNsdXN0ZXIgZGVs" + + "ZXRlIC0tY2x1c3Rlci1pZD1JRGAgfCBSZW1vdmUgSUNNUyByb3cgfCAqKkRFU1RSVUNUSVZFOiBj" + + "b25maXJtIHdpdGggdXNlcioqIHwKCiMjIEZ1bmN0aW9ucwoKfCBDb21tYW5kIHwgUHVycG9zZSB8" + + "IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGBmdW5jdGlvbiBjcmVhdGUgLS1pbnB1dC1maWxlPUZJ" + + "TEVgIHwgQ3JlYXRlIGZ1bmN0aW9uIG1ldGFkYXRhIHwgUmV0dXJucyBGdW5jdGlvbiBJRCArIFZl" + + "cnNpb24gSUQ7IExMTSBmdW5jdGlvbnMgdXNlIGBmdW5jdGlvblR5cGU6ICJMTE0iYCBhbmQgYG1v" + + "ZGVsc1tdLmxsbUNvbmZpZy51cmlzYCBmb3IgYC92MS9jaGF0L2NvbXBsZXRpb25zYCwgYC92MS9y" + + "ZXNwb25zZXNgLCBhbmQgYC92MS9lbWJlZGRpbmdzYCB8CnwgYGZ1bmN0aW9uIGxpc3RgIC8gYGZ1" + + "bmN0aW9uIGxpc3QtaWRzYCB8IExpc3QgZnVuY3Rpb25zIC8gSURzIG9ubHkgfCB8CnwgYGZ1bmN0" + + "aW9uIGdldCAtLWZ1bmN0aW9uLWlkPUlEIC0tdmVyc2lvbi1pZD1WSURgIHwgRnVuY3Rpb24gbWV0" + + "YWRhdGEgfCB8CnwgYGZ1bmN0aW9uIHVwZGF0ZSAtLWZ1bmN0aW9uLWlkPUlEIC0tdmVyc2lvbi1p" + + "ZD1WSUQgLS10YWdzPVRBR1ssVEFHXWAgfCBVcGRhdGUgZnVuY3Rpb24gdGFncyB8IHwKfCBgZnVu" + + "Y3Rpb24gdXBkYXRlIC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRCAtLWxsbS1tb2Rl" + + "bC11cGRhdGU9U1BFQ2AgfCBVcGRhdGUgTExNIG1vZGVsIHJvdXRpbmcgY29uZmlnIHwgYFNQRUNg" + + "IHVzZXMgYG5hbWU9PG1vZGVsPixyb3V0aW5nTWV0aG9kPTxtZXRob2Q+LHRva2VuUmF0ZUxpbWl0" + + "PTxsaW1pdD5gOyBhY2NlcHRlZCBtZXRob2RzIGFyZSBsaXN0ZWQgaW4gW2ZsYWdzLm1kXShmbGFn" + + "cy5tZCkgfAp8IGBmdW5jdGlvbiBkZXBsb3kgY3JlYXRlIC0taW5wdXQtZmlsZT1GSUxFYCB8IFNj" + + "aGVkdWxlIGEgZGVwbG95bWVudCB8IEJsb2NrcyB1bnRpbCBBQ1RJVkUgKGRlZmF1bHQgOTAwcykg" + + "fAp8IGBmdW5jdGlvbiBkZXBsb3kgZ2V0IC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJ" + + "RCBbLS1qc29uXWAgfCBEZXBsb3ltZW50IHN0YXR1cyB8IGBmdW5jdGlvblN0YXR1czogQUNUSVZF" + + "XHxERVBMT1lJTkdcfEVSUk9SXHxGQUlMRURgIHwKfCBgZnVuY3Rpb24gZGVwbG95IHVwZGF0ZSAt" + + "LWlucHV0LWZpbGU9RklMRWAgfCBNb2RpZnkgYSBkZXBsb3ltZW50IGluIHBsYWNlIHwgfAp8IGBm" + + "dW5jdGlvbiBkZXBsb3kgcmVtb3ZlIC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRGAg" + + "fCBTdG9wIGEgZGVwbG95bWVudCwga2VlcCBmdW5jdGlvbiByZWNvcmQgfCB8CnwgYGZ1bmN0aW9u" + + "IGludm9rZSAtLWlucHV0LWZpbGU9RklMRWAgfCBDYWxsIGEgcmVndWxhciBmdW5jdGlvbiB8IFJl" + + "cXVpcmVzIEFQSSBrZXkgKG5vdCBhZG1pbiB0b2tlbik7IExMTSBmdW5jdGlvbnMgYXJlIGludm9r" + + "ZWQgdGhyb3VnaCBgbGxtLmludm9jYXRpb24uPGRvbWFpbj5gIHdpdGggYG1vZGVsOiAiPGZ1bmN0" + + "aW9uLWlkPi88bW9kZWwtbmFtZT4iYCB8CnwgYGZ1bmN0aW9uIGRlbGV0ZSAtLWZ1bmN0aW9uLWlk" + + "PUlEIC0tdmVyc2lvbi1pZD1WSURgIHwgUmVtb3ZlIGZ1bmN0aW9uICsgZGVwbG95bWVudCB8ICoq" + + "REVTVFJVQ1RJVkU6IGNvbmZpcm0gd2l0aCB1c2VyKiogfAoKIyMgVGFza3MKClRhc2sgY29tbWFu" + + "ZHMgcmVxdWlyZSBgTlZDRl9BUElfS0VZYCBzZXQgdG8gYSB0YXNrLXNjb3BlZCBrZXkgYW5kIGBO" + + "VkNGX0JBU0VfTlZDVF9VUkxgIHNldCB0byB0aGUgTlZDVCBnYXRld2F5IGVuZHBvaW50LiBJbiBh" + + "IGZyZXNoIHNlc3Npb24sIHJlYWQgYG52Y3RBcGlLZXlgIGZyb20gYH4vLm52Y2YtY2xpLnN0YXRl" + + "YCBhbmQgaW5qZWN0IGl0IGFzIGBOVkNGX0FQSV9LRVlgIHdpdGhvdXQgbG9nZ2luZyB0aGUgdmFs" + + "dWU7IGNoZWNrIGBudmN0QXBpS2V5RXhwaXJhdGlvbmAgZmlyc3QgYW5kIHJlZ2VuZXJhdGUgd2l0" + + "aCBgYXBpLWtleSBnZW5lcmF0ZSAtLWZvciB0YXNrIC0tdmFsaWRhdGVgIGlmIGV4cGlyZWQuIFJ1" + + "biBgYXBpLWtleSBnZW5lcmF0ZSAtLWZvciB0YXNrYCBhZnRlciBgaW5pdGAgdG8gbWludCBhIG5l" + + "dyBrZXkuCgp8IENvbW1hbmQgfCBQdXJwb3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYHRh" + + "c2sgY3JlYXRlIC0tbmFtZT1YIC0tZ3B1PUdQVSAtLWluc3RhbmNlLXR5cGU9VFlQRSAtLWltYWdl" + + "PUlNR2AgfCBTdWJtaXQgYSBjb250YWluZXIgdGFzayB8IFNhdmVzIHRhc2sgSUQgdG8gQ0xJIHN0" + + "YXRlOyB1c2UgYC0taW5wdXQtZmlsZWAgZm9yIHJlcGVhdGFibGUgY29uZmlncyB8CnwgYHRhc2sg" + + "Y3JlYXRlIC0tbmFtZT1YIC0tZ3B1PUdQVSAtLWluc3RhbmNlLXR5cGU9VFlQRSAtLWhlbG0tY2hh" + + "cnQ9Q0hBUlRgIHwgU3VibWl0IGEgSGVsbSB0YXNrIHwgYC0taGVsbS1jaGFydGAgcmVwbGFjZXMg" + + "YC0taW1hZ2VgIHwKfCBgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPUZJTEVgIHwgU3VibWl0IGEg" + + "dGFzayBmcm9tIGEgSlNPTiBjb25maWcgZmlsZSB8IFJlY29tbWVuZGVkIGZvciByZXBlYXRhYmxl" + + "IGNvbmZpZ3VyYXRpb25zIHwKfCBgdGFzayBsaXN0IFstLXN0YXR1cz1TVEFUVVNdIFstLWxpbWl0" + + "PU5dYCB8IExpc3QgdGFza3MsIG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgc3RhdHVzIHwgU3RhdHVz" + + "ZXM6IGBRVUVVRURgLCBgTEFVTkNIRURgLCBgUlVOTklOR2AsIGBDT01QTEVURURgLCBgRVJST1JF" + + "RGAsIGBDQU5DRUxFRGAsIGBFWENFRURFRF9NQVhfUlVOVElNRV9EVVJBVElPTmAsIGBFWENFRURF" + + "RF9NQVhfUVVFVUVEX0RVUkFUSU9OYCB8CnwgYHRhc2sgZ2V0IFt0YXNrSWRdYCB8IEdldCB0YXNr" + + "IGRldGFpbHMgfCBVc2VzIHNhdmVkIHRhc2sgSUQgZnJvbSBzdGF0ZSBpZiBvbWl0dGVkIHwKfCBg" + + "dGFzayBldmVudHMgW3Rhc2tJZF0gWy0tbGltaXQ9Tl1gIHwgTGlzdCBsaWZlY3ljbGUgZXZlbnRz" + + "IGZvciBhIHRhc2sgfCB8CnwgYHRhc2sgcmVzdWx0cyBbdGFza0lkXWAgfCBMaXN0IHJlc3VsdCBh" + + "cnRpZmFjdHMgZm9yIGEgY29tcGxldGVkIHRhc2sgfCBSZXR1cm5zIGVtcHR5IGxpc3Qgd2hlbiBg" + + "cmVzdWx0SGFuZGxpbmdTdHJhdGVneWAgaXMgYE5PTkVgOyByZXN1bHQgdXBsb2FkIG5vdCB5ZXQg" + + "c3VwcG9ydGVkIHwKfCBgdGFzayBjYW5jZWwgW3Rhc2tJZF1gIHwgQ2FuY2VsIGEgcnVubmluZyB0" + + "YXNrIHwgTm8tb3AgaWYgYWxyZWFkeSBpbiB0ZXJtaW5hbCBzdGF0ZSB8CnwgYHRhc2sgZGVsZXRl" + + "IFt0YXNrSWRdYCB8IERlbGV0ZSBhIHRhc2sgcmVjb3JkIHwgKipTdG9wLCBzdGF0ZSB0YXNrIElE" + + "ICsgY3VycmVudCBzdGF0dXMsIGFuZCB3YWl0IGZvciBhIHN1YnNlcXVlbnQgdXNlciByZXBseSBl" + + "eHBsaWNpdGx5IGNvbmZpcm1pbmcgZGVsZXRpb24gb2YgdGhhdCBzcGVjaWZpYyB0YXNrLiBEbyBu" + + "b3QgdHJlYXQgdGhlIG9yaWdpbmFsIGRlbGV0ZSByZXF1ZXN0IGFzIGNvbmZpcm1hdGlvbi4qKiB8" + + "CnwgYHRhc2sgdXBkYXRlLXNlY3JldHMgW3Rhc2tJZF0gLS1zZWNyZXRzIE5BTUU9dmFsdWVgIHwg" + + "VXBkYXRlIHNlY3JldHMgb24gYSB0YXNrOyBzdXBwbGllZCBzZWNyZXRzIGFyZSBhZGRlZCBvciB1" + + "cGRhdGVkIGJ5IG5hbWUsIGV4aXN0aW5nIHNlY3JldHMgbm90IGluIHRoZSByZXF1ZXN0IGFyZSBw" + + "cmVzZXJ2ZWQgfCBWYWx1ZXMgYXJlIGVuY3J5cHRlZCBhdCByZXN0IHwKfCBgdGFzayBidWxrIC0t" + + "dGFzay1pZHM9SUQxWyxJRDIs4oCmXWAgfCBGZXRjaCBkZXRhaWxzIGZvciBtdWx0aXBsZSB0YXNr" + + "cyBpbiBvbmUgcmVxdWVzdCB8IHwKCiMjIEF1dGgKCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBOb3Rl" + + "cyB8CnwtLS18LS0tfC0tLXwKfCBgaW5pdGAgfCBNaW50IGFkbWluIHRva2VuIGZyb20gQVBJIEtl" + + "eXMgdmlhIHB1YmxpYyBhcGkgZ2F0ZXdheSB8IElkZW1wb3RlbnQ7IHdyaXRlcyBgfi8ubnZjZi1j" + + "bGkuc3RhdGVgOyBjbGVhcnMgc2F2ZWQgZnVuY3Rpb24gc3RhdGUgYW5kIGFsbCBBUEkga2V5cyAo" + + "ZnVuY3Rpb24gYW5kIHRhc2spIHwKfCBgc3RhdHVzYCB8IFNob3cgQ0xJIHN0YXRlICh0b2tlbiwg" + + "bGFzdCBlbmRwb2ludHMsIGZ1bmN0aW9uIGNvbnRleHQpIHwgRGlzdGluY3QgZnJvbSBgc2VsZi1o" + + "b3N0ZWQgc3RhdHVzYCB8CnwgYGFwaS1rZXkgZ2VuZXJhdGUgWy0tZm9yIGZ1bmN0aW9uXHx0YXNr" + + "XSBbLS1kZXNjcmlwdGlvbj3igKZdIFstLWV4cGlyZXMtaW494oCmXWAgfCBNaW50IEFQSSBrZXlz" + + "IHwgRGVmYXVsdCAobm8gYC0tZm9yYCk6IGdlbmVyYXRlcyBib3RoIGEgZnVuY3Rpb24ga2V5IGFu" + + "ZCBhIHRhc2sga2V5OyBgLS1mb3IgZnVuY3Rpb25gIG9yIGAtLWZvciB0YXNrYCBnZW5lcmF0ZXMg" + + "b25lIG9ubHk7IGAtLXNjb3Blc2AgcmVxdWlyZXMgYC0tZm9yYCB8CnwgYGFwaS1rZXkgZ2VuZXJh" + + "dGUgLS12YWxpZGF0ZWAgfCBNaW50IGFuZCBpbW1lZGlhdGVseSB2YWxpZGF0ZSBlYWNoIGdlbmVy" + + "YXRlZCBrZXkgfCBWYWxpZGF0ZXMgZWFjaCBrZXkgYWdhaW5zdCBpdHMgY29ycmVjdCBhdWRpZW5j" + + "ZSAoTlZDRiBmb3IgZnVuY3Rpb24ga2V5cywgTlZDVCBmb3IgdGFzayBrZXlzKSB8CnwgYGFwaS1r" + + "ZXkgbGlzdGAgfCBMaXN0IEFQSSBrZXlzIGZvciBjdXJyZW50IG93bmVyIHwgTGlzdHMgTlZDRi1z" + + "Y29wZWQga2V5cyBvbmx5IHwKfCBgYXBpLWtleSBkZWxldGUgS0VZLUlEYCAvIGBhcGkta2V5IHJl" + + "dm9rZSBLRVktSURgIHwgUmVtb3ZlIGFuIEFQSSBrZXkgfCAqKkNvbmZpcm0gd2l0aCB1c2VyKiog" + + "fAp8IGBhcGkta2V5IHNob3dgIHwgU2hvdyBjdXJyZW50bHkgc2F2ZWQgQVBJIGtleSBmcm9tIHN0" + + "YXRlIHwgfAoKIyMgQWdlbnQgc2tpbGwKCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBOb3RlcyB8Cnwt" + + "LS18LS0tfC0tLXwKfCBgYWdlbnQtc2tpbGwgaW5zdGFsbCBbLS10YXJnZXQ9RElSXWAgfCBJbnN0" + + "YWxsIGFsbCBidW5kbGVkIHB1YmxpYyB1c2VyIHNraWxscyBpbnRvIGB+Ly5jbGF1ZGUvc2tpbGxz" + + "L2AgYW5kIGB+Ly5hZ2VudHMvc2tpbGxzL2AgfCBEZWZhdWx0OiBib3RoIGJhc2Ugc2tpbGxzIGRp" + + "cmVjdG9yaWVzIHwKfCBgYWdlbnQtc2tpbGwgdW5pbnN0YWxsIFstLXRhcmdldD1ESVJdYCB8IFJl" + + "bW92ZSBvbmx5IGJ1bmRsZWQgcHVibGljIHVzZXIgc2tpbGxzIGZyb20gdGhlIHRhcmdldCBiYXNl" + + "IHNraWxscyBkaXJlY3RvcmllcyB8IElkZW1wb3RlbnQ7IHVucmVsYXRlZCBza2lsbHMgcmVtYWlu" + + "IHwKfCBgYWdlbnQtc2tpbGwgc2hvdyBbLS1maWxlPVJFTF1gIHwgUHJpbnQgYnVuZGxlZCBgbnZj" + + "Zi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kYCBvciBhbm90aGVyIGVtYmVkZGVkIGZpbGUgfCBG" + + "b3IgZGVidWdnaW5nIHwKfCBgYWdlbnQtc2tpbGwgdmVyc2lvbmAgfCBQcmludCBidWlsZCBTSEEg" + + "YW5kIGVtYmVkZGVkIHB1YmxpYyB1c2VyIHNraWxsIHN1bW1hcnkgfCB8ClBLBwhyDQ9kISMAACEj" + + "AABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADIACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNs" + + "aS9yZWZlcmVuY2UvZXhpdC1jb2Rlcy5tZFVUBQABAKbOEiMgYG52Y2YtY2xpYCBleGl0IGNvZGVz" + + "CgpTdGFibGUgYWNyb3NzIHN1YmNvbW1hbmRzLiBVc2UgdGhlc2UgdG8gZHJpdmUgYWdlbnQgcmV0" + + "cnkgLyBzdXJmYWNpbmcgbG9naWMuCgp8IENvZGUgfCBNZWFuaW5nIHwgRXhhbXBsZSBjYXVzZXMg" + + "fAp8LS0tfC0tLXwtLS18CnwgYDBgIHwgU3VjY2VzcyB8IEFsbCBjaGVja3MgcGFzc2VkOyBpbnN0" + + "YWxsIGNvbXBsZXRlZDsgZGVwbG95bWVudCBBQ1RJVkUgfAp8IGAxYCB8IEdlbmVyaWMgZXJyb3Ig" + + "fCBIZWxtIHJlbmRlciBmYWlsZWQ7IG5ldHdvcmsgdW5yZWFjaGFibGU7IGZpbGUgbm90IGZvdW5k" + + "OyBZQU1MIHBhcnNlIGVycm9yIHwKfCBgMmAgfCBQcmUtZmxpZ2h0IGNoZWNrIGZhaWxlZCB8IEdh" + + "dGV3YXkgQVBJIENSRHMgbWlzc2luZzsga3ViZWN0bCBub3Qgb24gUEFUSDsgZGVmYXVsdCBTdG9y" + + "YWdlQ2xhc3MgYWJzZW50IHwKfCBgM2AgfCBBZG1pbiBhdXRoIGZhaWxlZCB8IE5vIHRva2VuICsg" + + "YC0tbm9uLWludGVyYWN0aXZlYCBzZXQ7IElDTVMgcmVqZWN0ZWQgSldUOyBpbml0IGVuZHBvaW50" + + "IHVucmVhY2hhYmxlIHwKfCBgNWAgfCBNYW5pZmVzdCBhcHBseSBvciBgLS13YWl0YCB0aW1lZCBv" + + "dXQgfCBIZWxtIGluc3RhbGwgdGltZW91dDsgY2hlY2sgcG9sbGVkIGJ1dCBkaWRuJ3QgcGFzcyBi" + + "ZWZvcmUgZHVyYXRpb24gfAp8IGAxMzBgIHwgQ2FuY2VsbGVkIGJ5IFNJR0lOVC9TSUdURVJNIHwg" + + "VXNlciBDdHJsLUM7IENJIGJ1ZGdldCBleGNlZWRlZDsgcG9kIGV2aWN0ZWQgfAoKIyMgSG93IGFu" + + "IGFnZW50IHNob3VsZCByZWFjdAoKfCBDb2RlIHwgQWdlbnQgYmVoYXZpb3IgfAp8LS0tfC0tLXwK" + + "fCBgMGAgfCBDb250aW51ZSAvIHJlcG9ydCBzdWNjZXNzLiB8CnwgYDFgIHwgU3VyZmFjZSBzdGRl" + + "cnIgdG8gdXNlcjsgYXNrIGJlZm9yZSBhbnkgcmV0cnkuIEdlbmVyaWMgZXJyb3JzIHVzdWFsbHkg" + + "bmVlZCBhIGh1bWFuIHRvIHJlYWQgdGhlIG1lc3NhZ2UuIHwKfCBgMmAgfCBTdXJmYWNlIGZhaWxl" + + "ZCBjaGVja3MgKyB0aGVpciBgaGludFVSTGAuIERvbid0IHByb3Bvc2UgYHVwYCB1bnRpbCB0aGUg" + + "dXNlciBmaXhlcyBwcmVyZXFzLiB8CnwgYDNgIHwgU3VnZ2VzdCBgbnZjZi1jbGkgaW5pdGAgKGlu" + + "dGVyYWN0aXZlKSBPUiBgLS10b2tlbj0kSldUYCAoQ0kpLiBEb24ndCBhdXRvLW1pbnQgd2l0aG91" + + "dCB1c2VyIE9LLiB8CnwgYDVgIHwgQXNrIHVzZXIgaWYgdGhleSB3YW50IHRvIHdhaXQgbG9uZ2Vy" + + "LCBkaWcgaW50byB0aGUgc3RhbGxlZCBjb21wb25lbnQsIG9yIGNhbmNlbC4gfAp8IGAxMzBgIHwg" + + "RG9uJ3QgcmV0cnkgYXV0b21hdGljYWxseTsgdXNlciBleHBsaWNpdGx5IGNhbmNlbGxlZC4gQ29u" + + "ZmlybSBiZWZvcmUgcmUtcnVubmluZy4gfAoKIyMgV2hlcmUgdG8gZmluZCBtb3JlIGRldGFpbAoK" + + "RXZlcnkgbm9uLXplcm8gZXhpdCBlbWl0cyBhIHN0cnVjdHVyZWQgYHBoYXNlX2ZhaWxlZGAgSlNP" + + "TiBldmVudCB3aXRoIGBlcnJDYXRlZ29yeWAsIGBlcnJNZXNzYWdlYCwgYHJlbWVkaWF0aW9uYCAo" + + "YXJyYXkpLCBgcmV0cnlDbGFzc2AgKGVudW06IGBub25lfGltbWVkaWF0ZXxiYWNrb2ZmfGFmdGVy" + + "X3JlbWVkaWF0aW9ufHVua25vd25gKSwgYHJldHJ5QWZ0ZXJTZWNgIChpbnQsIG9wdGlvbmFsKSwg" + + "YW5kIGByYXdgIChzdWJwcm9jZXNzICsgSFRUUCArIEt1YmVybmV0ZXMgc2lnbmFsKS4gQWx3YXlz" + + "IGNvbnN1bWUgdGhlc2UgaW4gYC0tanNvbmAgbW9kZSByYXRoZXIgdGhhbiBwYXJzaW5nIEVuZ2xp" + + "c2ggZnJvbSBzdGRlcnIuClBLBwhzp1pk1QYAANUGAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAA" + + "AC0ACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZmxhZ3MubWRVVAUAAQCm" + + "zhIjIGBudmNmLWNsaWAgZmxhZyByZWZlcmVuY2UKCiMjIEdsb2JhbCBmbGFncyAoZXZlcnkgc3Vi" + + "Y29tbWFuZCkKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAt" + + "LWNvbmZpZyBGSUxFYCB8IENvbmZpZyBmaWxlIHBhdGggfCBgJEhPTUUvLm52Y2YtY2xpLnlhbWxg" + + "IHwKfCBgLS1kZWJ1Z2AgfCBWZXJib3NlIEhUVFAgbG9nZ2luZyBvbiBzdGRlcnIgfCBgZmFsc2Vg" + + "IHwKfCBgLS1qc29uYCB8IEpTT05MIGV2ZW50cyBvbiBzdGRlcnIgfCBhdXRvIChvZmYgaW4gVFRZ" + + "LCBvbiB1bmRlciBgLS1ub24taW50ZXJhY3RpdmVgKSB8CgojIyBgc2VsZi1ob3N0ZWRgIHBhcmVu" + + "dCAocGVyc2lzdGVudCBhY3Jvc3Mgc3ViY29tbWFuZHMpCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVm" + + "YXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1jb250cm9sLXBsYW5lLXN0YWNrPeKApmAgfCBDb250" + + "cm9sLXBsYW5lIGJ1bmRsZSBzb3VyY2U6IGxvY2FsIHBhdGgsIGdpdCBVUkwsIG9yIGBvY2k6Ly9g" + + "IFVSTCB8IGVtYmVkZGVkIE9DSSBVUkwgcGlubmVkIGJ5IENMSSB2ZXJzaW9uIHwKfCBgLS1jb21w" + + "dXRlLXBsYW5lLXN0YWNrPeKApmAgfCBDb21wdXRlLXBsYW5lIGJ1bmRsZSBzb3VyY2U6IGxvY2Fs" + + "IHBhdGgsIGdpdCBVUkwsIG9yIGBvY2k6Ly9gIFVSTCB8IGVtYmVkZGVkIE9DSSBVUkwgcGlubmVk" + + "IGJ5IENMSSB2ZXJzaW9uIHwKfCBgLS1lbnY9bG9jYWxcfHByZFx84oCmYCB8IEhlbG1maWxlIGVu" + + "dmlyb25tZW50IG5hbWUgfCBgbG9jYWxgIGZvciBkZXYgYnVpbGRzLCBgcHJkYCBmb3IgcmVsZWFz" + + "ZXMgfAp8IGAtLW5vbi1pbnRlcmFjdGl2ZWAgfCBEaXNhYmxlIGFsbCBzdGRpbiBwcm9tcHRzIHwg" + + "YGZhbHNlYCB8CnwgYC0tdG9rZW49JEpXVGAgfCBBZG1pbiBKV1QsIG92ZXJyaWRlcyBzdG9yZWQg" + + "c2Vzc2lvbiB8IC0gfAp8IGAtLW5vLWFwcGx5YCB8IGBpbnN0YWxsYCBvbmx5IC0gZW1pdCBZQU1M" + + "LCBkbyBub3Qga3ViZWN0bCBhcHBseSB8IGBmYWxzZWAgfAp8IGAtLW91dHB1dD10ZXh0XHxqc29u" + + "YCB8IExlZ2FjeSBhbGlhcyBmb3IgYC0tanNvbmAgKGRlcHJlY2F0ZWQsIHJlbW92ZWQgaW4gbmV4" + + "dCBtYWpvcikgfCBgdGV4dGAgfAp8IGAtLXBsYWluYCB8IEZvcmNlIHBsYWluIHN0cmVhbWluZyBv" + + "dXRwdXQgfCBhdXRvLWRldGVjdCB8CnwgYC0td2FpdCBEVVJBVElPTmAgfCBgY2hlY2tgIG9ubHk7" + + "IGJsb2NrIHVudGlsIHBhc3MgfCAtIHwKfCBgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgQ1RYYCB8" + + "IGt1YmVjdGwgY29udGV4dCBmb3IgY29udHJvbCBwbGFuZSAoUkVRLTIwKSB8IGN1cnJlbnQgY29u" + + "dGV4dCB8CnwgYC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IENUWGAgfCBrdWJlY3RsIGNvbnRleHQg" + + "Zm9yIGNvbXB1dGUgcGxhbmUgKFJFUS0yMCkgfCBjdXJyZW50IGNvbnRleHQgfAp8IGAtLWljbXMt" + + "dXJsIFVSTGAgfCBQdWJsaWMgSUNNUyBVUkw7IHJlcXVpcmVkIHdoZW4gY29udGV4dHMgZGlmZmVy" + + "IHwgZGVyaXZlZCBmcm9tIGBiYXNlX2h0dHBfdXJsYCB8CnwgYC0tbG9jYWwtb25seWAgfCBgY2hl" + + "Y2sgLS1wcmVgIG9ubHk7IHNraXAgYWxsIGt1YmVjdGwgY29udGFjdCB8IGBmYWxzZWAgfAoKIyMg" + + "YGNoZWNrYC1zcGVjaWZpYwoKQXQgbGVhc3Qgb25lIG9mIGAtLXByZWAsIGAtLWNvbnRyb2wtcGxh" + + "bmVgLCBgLS1jb21wdXRlLXBsYW5lYCwgb3IgYC0tYWxsYCBpcwpyZXF1aXJlZC4gRWFjaCBzZWxl" + + "Y3RzIGEgcm9sZTsgb25seSB0aGUgc2VsZWN0ZWQgcm9sZXMgY29udGFjdCBhIGNsdXN0ZXIuCgp8" + + "IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1wcmVgIHwgUHJl" + + "LWZsaWdodDogbG9jYWwtaG9zdCB0b29scyBwbHVzIGNsdXN0ZXIgcmVhZGluZXNzIHwgYGZhbHNl" + + "YCB8CnwgYC0tY29udHJvbC1wbGFuZWAgfCBDb250cm9sLXBsYW5lIGNoZWNrcyB8IGBmYWxzZWAg" + + "fAp8IGAtLWNvbXB1dGUtcGxhbmVgIHwgQ29tcHV0ZS1wbGFuZSBjaGVja3MgfCBgZmFsc2VgIHwK" + + "fCBgLS1hbGxgIHwgRXZlcnkgY2F0ZWdvcnkgfCBgZmFsc2VgIHwKfCBgLS1jbHVzdGVyLW5hbWUg" + + "TkFNRWAgfCBDbHVzdGVyIG5hbWUgZm9yIGNvbXB1dGUtcGxhbmUgY2hlY2tzIHwgLSB8CnwgYC0t" + + "c2tpcC1pbm90aWZ5LWNoZWNrYCB8IFNraXAgdGhlIHBlci1ub2RlIGlub3RpZnktbGltaXRzIHBy" + + "b2JlLiBOZWVkZWQgd2hlbiB0aGUga3ViZWNvbmZpZyB1c2VyIGNhbm5vdCBjcmVhdGUgcG9kcyBp" + + "biBgZGVmYXVsdGAuIEVudjogYE5WQ0ZfQ0xJX1NFTEZIT1NURURfU0tJUF9JTk9USUZZYCB8IGBm" + + "YWxzZWAgfAoKIyMjIENsdXN0ZXItdmFsaWRhdG9yIGZsYWdzCgpUaGUgdmFsaWRhdG9yIHJ1bnMg" + + "YXMgYSBKb2IgaW4gdGhlIGNsdXN0ZXIgYmVpbmcgY2hlY2tlZC4gVGhlIENMSSBjcmVhdGVzIGEK" + + "U2VydmljZUFjY291bnQsIENsdXN0ZXJSb2xlLCBhbmQgQ2x1c3RlclJvbGVCaW5kaW5nIGZvciBp" + + "dCBhbmQgcmVtb3ZlcyB0aGVtCmFmdGVyIHRoZSBydW4sIHNvIHRoZSBrdWJlY29uZmlnIGNvbnRl" + + "eHQgbmVlZHMgcGVybWlzc2lvbiB0byBtYW5hZ2UgdGhvc2UuCgp8IEZsYWcgfCBQdXJwb3NlIHwg" + + "RGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1jbHVzdGVyLXZhbGlkYXRvci1pbWFnZSBSRUZg" + + "IHwgVmFsaWRhdG9yIGltYWdlLiBSZXNvbHV0aW9uIG9yZGVyOiBmbGFnLCBgTlZDRl9DTElfQ0xV" + + "U1RFUl9WQUxJREFUT1JfSU1BR0VgLCBjb25maWcga2V5IGBjbHVzdGVyX3ZhbGlkYXRvcl9pbWFn" + + "ZWAuIEEgcmVmIHdpdGggbm8gdGFnIGRpc2NvdmVycyB0aGUgbGF0ZXN0IHN0YWJsZSB0YWcgZnJv" + + "bSB0aGUgcmVnaXN0cnkuIFVuc2V0IGV2ZXJ5d2hlcmUgc2tpcHMgdGhlIHByb2JlIHdpdGggYSB3" + + "YXJuaW5nIHwgLSB8CnwgYC0tY2x1c3Rlci12YWxpZGF0b3ItcmVnaXN0cmllcyBob3N0OnBvcnQs" + + "Li4uYCB8IEV4dHJhIHJlZ2lzdHJpZXMgdGhlIGNvbnRyb2wtcGxhbmUgdmFsaWRhdG9yIHByb2Jl" + + "cyBmb3IgcmVhY2hhYmlsaXR5LiBgbnZjci5pb2AgaXMgYWx3YXlzIHByb2JlZC4gUmVwZWF0YWJs" + + "ZSBvciBjb21tYS1zZXBhcmF0ZWQuIEVudjogYE5WQ0ZfQ0xJX0NMVVNURVJfVkFMSURBVE9SX1JF" + + "R0lTVFJJRVNgOyBjb25maWcga2V5IGBjbHVzdGVyX3ZhbGlkYXRvcl9yZWdpc3RyaWVzYCB8IGBu" + + "dmNyLmlvYCBvbmx5IHwKfCBgLS1jbHVzdGVyLXZhbGlkYXRvci1wdWxsLXNlY3JldCBOQU1FYCB8" + + "IGRvY2tlci1yZWdpc3RyeSBTZWNyZXQgaW4gYGRlZmF1bHRgIHVzZWQgdG8gcHVsbCB0aGUgdmFs" + + "aWRhdG9yIGltYWdlLiBXaGVuIGVtcHR5LCB0aGUgQ0xJIGxvb2tzIGZvciBvbmUgaW4gdGhlIE5W" + + "Q0YgbmFtZXNwYWNlcyBhbmQgZmFsbHMgYmFjayB0byBtaW50aW5nIG9uZSBmcm9tIGBOR0NfQVBJ" + + "X0tFWWAgfCBhdXRvLWRldGVjdCB8CnwgYC0tc2tpcC1jbHVzdGVyLXZhbGlkYXRpb25gIHwgU2tp" + + "cCB0aGUgaW4tY2x1c3RlciB2YWxpZGF0b3IgcHJvYmUgZW50aXJlbHkuIEVudjogYE5WQ0ZfQ0xJ" + + "X1NFTEZIT1NURURfU0tJUF9DTFVTVEVSX1ZBTElEQVRJT05gIHwgYGZhbHNlYCB8CnwgYC0tbm8t" + + "Y2xlYW51cGAgfCBLZWVwIHRoZSB2YWxpZGF0b3IgSm9iIChhbmQgaXRzIFJCQUMpIGFmdGVyIHRo" + + "ZSBydW4gZm9yIGRlYnVnZ2luZy4gVGhlIG5leHQgcnVuIHN0aWxsIHN3ZWVwcyBwcmlvciBKb2Jz" + + "IHwgYGZhbHNlYCB8CnwgYC0tc2hvdy1sb2dzYCB8IFByaW50IHRoZSB2YWxpZGF0b3IgdHJhbnNj" + + "cmlwdCB0byBzdGRlcnIgYWZ0ZXIgdGhlIGNoZWNrIGV2ZW50cy4gVGhlIHRyYW5zY3JpcHQgaXMg" + + "bm90IEpTT04sIGFuZCBgLS1qc29uYCBhbHNvIHdyaXRlcyB0byBzdGRlcnIsIHNvIGxlYXZlIHRo" + + "aXMgb2ZmIHdoZW4gYSBwYXJzZXIgaXMgcmVhZGluZyB0aGUgc3RyZWFtIHwgYGZhbHNlYCB8Cgoj" + + "IyBgdXBgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0t" + + "LXwKfCBgLS1jbHVzdGVyLW5hbWUgTkFNRWAgfCBJQ01TIGNsdXN0ZXIgcm93IGlkZW50aWZpZXIg" + + "KHJlcXVpcmVkKSB8IC0gfAp8IGAtLW5jYS1pZCBJRGAgfCBOQ0EgYWNjb3VudCBJRCB8IGBudmNm" + + "LWRlZmF1bHRgIHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IENsdXN0ZXIgcmVnaW9uIHwgYHVzLXdl" + + "c3QtMWAgfAp8IGAtLXBsYW4tb25seWAgfCBEcnktcnVuOyBlbWl0IHBoYXNlIHBsYW4gKyBFVEFz" + + "IHdpdGhvdXQgY2hhbmdlcyB8IGBmYWxzZWAgfAoKIyMgYHN0YXR1c2Atc3BlY2lmaWMKCnwgRmxh" + + "ZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0ZXItbmFtZSBO" + + "QU1FYCB8IExpbWl0IHRvIG9uZSBjb21wdXRlIHBsYW5lIHwgLSAoY29udHJvbCArIGFsbCBjbHVz" + + "dGVycykgfAp8IGAtLXdhdGNoYCB8IExpdmUgcmUtcmVuZGVyIHwgYGZhbHNlYCB8CnwgYC0td2F0" + + "Y2gtaW50ZXJ2YWwgRFVSYCB8IGAtLXdhdGNoYCBjYWRlbmNlIHwgYDVzYCB8CnwgYC0tY29tcG9u" + + "ZW50IE5BTUVgIHwgRmlsdGVyIGNvbXBvbmVudHMgcGFuZWwgfCBhbGwgfAp8IGAtLW5vLWV2ZW50" + + "c2AgfCBTa2lwIGV2ZW50cyBwYW5lbCB8IGBmYWxzZWAgfAoKIyMgYGNsdXN0ZXIgcmVnaXN0ZXJg" + + "LXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBg" + + "LS1uYW1lIE5BTUVgIHwgQ2x1c3RlciBuYW1lIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1uY2EtaWQg" + + "SURgIHwgTkNBIElEIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IFJlZ2lv" + + "biB8IGB1cy13ZXN0LTFgIHwKfCBgLS1pY21zLXVybCBVUkxgIHwgSUNNUyBlbmRwb2ludCB8IGZy" + + "b20gY29uZmlnIHwKfCBgLS1pZ25vcmUtZXhpc3RpbmdgIHwgTWF0Y2gtb3ItY3JlYXRlIGluc3Rl" + + "YWQgb2YgZmFpbC1vbi1leGlzdHMgfCBgZmFsc2VgIHwKCiMjIGBhcGkta2V5IGdlbmVyYXRlYC1z" + + "cGVjaWZpYwoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0t" + + "Zm9yIGZ1bmN0aW9uXHx0YXNrYCB8IEdlbmVyYXRlIG9ubHkgdGhlIHNwZWNpZmllZCBrZXkgdHlw" + + "ZSB8IChvbWl0IHRvIGdlbmVyYXRlIGJvdGgpIHwKfCBgLS1kZXNjcmlwdGlvbiBURVhUYCB8IEh1" + + "bWFuLXJlYWRhYmxlIGxhYmVsIGZvciB0aGUga2V5IHwgYEdlbmVyYXRlZCBieSBudmNmLWNsaWAg" + + "fAp8IGAtLWV4cGlyZXMtaW4gRFVSQVRJT05gIHwgRXhwaXJ5IG9mZnNldCAoZS5nLiBgMjRoYCwg" + + "YDdkYCk7IHBhcnNlZCBhcyBleHRlbmRlZCBkdXJhdGlvbiB8IGAyNGhgIHwKfCBgLS1zY29wZXMg" + + "U0NPUEVbLFNDT1BFXWAgfCBPdmVycmlkZSBkZWZhdWx0IHNjb3BlczsgcmVxdWlyZXMgYC0tZm9y" + + "YCB8IChzZXJ2aWNlIGRlZmF1bHRzKSB8CnwgYC0tdmFsaWRhdGVgIHwgVmFsaWRhdGUgZWFjaCBn" + + "ZW5lcmF0ZWQga2V5IGltbWVkaWF0ZWx5IGFmdGVyIG1pbnRpbmcgfCBgZmFsc2VgIHwKCkV4dGVu" + + "ZGVkIGR1cmF0aW9uIHVuaXRzOiBgc2AgKHNlY29uZHMpLCBgbWAgKG1pbnV0ZXMpLCBgaGAgKGhv" + + "dXJzKSwgYGRgIChkYXlzKSwgYHdgICh3ZWVrcykuCgojIyBgZnVuY3Rpb24gY3JlYXRlYC1zcGVj" + + "aWZpYwoKYC0taW5wdXQtZmlsZSBGSUxFYCBpcyByZWNvbW1lbmRlZCBmb3IgcmVwZWF0YWJsZSBm" + + "dW5jdGlvbiBkZWZpbml0aW9ucy4gRm9yIGFkLWhvYyBjcmVhdGVzOgoKfCBGbGFnIHwgUHVycG9z" + + "ZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tbmFtZSBOQU1FYCB8IEZ1bmN0aW9uIG5h" + + "bWUgfCAtIHwKfCBgLS1pbWFnZSBJTUFHRWAgfCBDb250YWluZXIgaW1hZ2UgfCAtIHwKfCBgLS1p" + + "bmZlcmVuY2UtdXJsIFVSSWAgfCBDb250YWluZXIgaW5mZXJlbmNlIGVuZHBvaW50IHwgLSB8Cnwg" + + "YC0taW5mZXJlbmNlLXBvcnQgUE9SVGAgfCBDb250YWluZXIgaW5mZXJlbmNlIHBvcnQgfCAtIHwK" + + "fCBgLS1mdW5jdGlvbi10eXBlIERFRkFVTFRcfFNUUkVBTUlOR1x8TExNYCB8IEZ1bmN0aW9uIHR5" + + "cGUgfCBgREVGQVVMVGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBVUkwg" + + "b3IgT0NJIHJlZmVyZW5jZS4gQ2FuIGJlIHVzZWQgd2l0aCBgLS1mdW5jdGlvbi10eXBlPUxMTWAg" + + "Zm9yIGNoYXJ0LXBhY2thZ2VkIExMTSB3b3JrbG9hZHMuIHwgLSB8CnwgYC0taGVsbS1jaGFydC1z" + + "ZXJ2aWNlIE5BTUVgIHwgS3ViZXJuZXRlcyBTZXJ2aWNlIG5hbWUgZXhwb3NlZCBieSB0aGUgY2hh" + + "cnQuIFJlcXVpcmVkIHdoZW4gYC0taGVsbS1jaGFydGAgaXMgc2V0LiB8IC0gfAp8IGAtLW1vZGVs" + + "cyBOQU1FOlZFUlNJT046VVJJYCB8IFN0YW5kYXJkIG1vZGVsIGFydGlmYWN0OyByZXBlYXRhYmxl" + + "IHwgLSB8CnwgYC0tbGxtLW1vZGVsIFNQRUNgIHwgTExNIG1vZGVsIGNvbmZpZzsgZm9ybWF0IGBu" + + "YW1lPTxtb2RlbD4sdXJpcz08dXJpPlx8PHVyaT4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tl" + + "blJhdGVMaW1pdD08bGltaXQ+YDsgcmVwZWF0YWJsZS4gVG9rZW4gbGltaXRzIHVzZSBgPHZhbHVl" + + "Pi08dW5pdD5gIHdpdGggYFNgLCBgTWAsIGBIYCwgYERgLCBvciBgV2AsIGZvciBleGFtcGxlIGAx" + + "MDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBmb3IgY29tYmluZWQgdG9rZW4gbGltaXRzIGJlY2F1c2Ug" + + "aW5saW5lIHNwZWNzIHVzZSBjb21tYXMgYXMgZmllbGQgc2VwYXJhdG9ycy4gfCAtIHwKfCBgLS1s" + + "bG0tZGVmYXVsdC1wcmlvcml0eSBQUklPUklUWWAgfCBGdW5jdGlvbi1sZXZlbCBkZWZhdWx0IHJl" + + "cXVlc3QgcHJpb3JpdHkuIExvd2VyIHZhbHVlcyBoYXZlIGhpZ2hlciBwcmlvcml0eS4gfCAtIHwK" + + "fCBgLS1sbG0tcGVyLWFjY291bnQtcHJpb3JpdHkgTkNBLUlEOlBSSU9SSVRZYCB8IFBlci1hY2Nv" + + "dW50IHByaW9yaXR5IG92ZXJyaWRlOyByZXBlYXRhYmxlOyBzdXBwb3J0cyB1cCB0byA2NCBkaXN0" + + "aW5jdCBOQ0EgSUQgb3ZlcnJpZGVzLiBSZXF1aXJlcyBhIGRlZmF1bHQgcHJpb3JpdHkuIHwgLSB8" + + "CgpJbiBKU09OIGFuZCBpbmxpbmUgc3BlY3MsIExMTSBmdW5jdGlvbnMgc2V0IGBmdW5jdGlvblR5" + + "cGU6ICJMTE0iYCBhbmQgbW9kZWwgcm91dGluZyBtZXRhZGF0YSB1bmRlciBgbW9kZWxzW10ubGxt" + + "Q29uZmlnYC4gYGxsbUNvbmZpZy51cmlzYCBkZWNsYXJlcyB0aGUgT3BlbkFJLWNvbXBhdGlibGUg" + + "dXBzdHJlYW0gcGF0aHMgZXhwb3NlZCBieSB0aGUgbW9kZWwuIEN1cnJlbnQgc3VwcG9ydGVkIHBh" + + "dGhzIGFyZSBgL3YxL2NoYXQvY29tcGxldGlvbnNgLCBgL3YxL3Jlc3BvbnNlc2AsIGFuZCBgL3Yx" + + "L2VtYmVkZGluZ3NgLiBgbGxtQ29uZmlnLnJvdXRpbmdNZXRob2RgIGFjY2VwdHMgYHJvdW5kX3Jv" + + "YmluYCwgYHBvd2VyX29mX3R3b2AsIGBncm9xX211bHRpcmVnaW9uYCwgYHB1bHNhcmAsIG9yIGBy" + + "YW5kb21gLgpgbGxtQ29uZmlnLnRva2VuUmF0ZUxpbWl0YCBhY2NlcHRzIG9uZSBvciBtb3JlIGNv" + + "bW1hLXNlcGFyYXRlZCBwb3NpdGl2ZSBpbnRlZ2VyIHRva2VuIGxpbWl0cyBpbiBgPHZhbHVlPi08" + + "dW5pdD5gIGZvcm1hdC4gU3VwcG9ydGVkIHVuaXRzIGFyZSBgU2AgKHNlY29uZHMpLCBgTWAgKG1p" + + "bnV0ZXMpLCBgSGAgKGhvdXJzKSwgYERgIChkYXlzKSwgYW5kIGBXYCAod2Vla3MpLiBVc2UgZGlz" + + "dGluY3QgdW5pdHMgd2hlbiBjb21iaW5pbmcgbGltaXRzLCBmb3IgZXhhbXBsZSBgMTAwMC1TLDUw" + + "MDAtTSwxMDAwMDAtSCw1MDAwMDAtRCwxMDAwMDAwLVdgIGluIGlucHV0IEpTT04uCgpIZWxtIGNo" + + "YXJ0IHBhY2thZ2luZyBpcyBpbmRlcGVuZGVudCBvZiBgZnVuY3Rpb25UeXBlYC4gRm9yIGEgSGVs" + + "bS1jaGFydCBiYWNrZWQgTExNIGZ1bmN0aW9uLCBzZXQgYGZ1bmN0aW9uVHlwZTogIkxMTSJgLCBg" + + "aGVsbUNoYXJ0YCwgYGhlbG1DaGFydFNlcnZpY2VOYW1lYCwgYW5kIGBtb2RlbHNbXS5sbG1Db25m" + + "aWdgIGluIHRoZSBzYW1lIGNyZWF0ZSByZXF1ZXN0LiBgaW5mZXJlbmNlUG9ydGAgbXVzdCBiZSB0" + + "aGUgS3ViZXJuZXRlcyBTZXJ2aWNlIHBvcnQgZXhwb3NlZCBieSBgaGVsbUNoYXJ0U2VydmljZU5h" + + "bWVgLgoKTExNIGludm9jYXRpb24gcmVxdWVzdHMgdXNlIGBtb2RlbDogIjxmdW5jdGlvbi1pZD4v" + + "PG1vZGVsLW5hbWU+ImAuIFRoZSBmdW5jdGlvbiBJRCBzZWxlY3RzIHRoZSBOVkNGIGZ1bmN0aW9u" + + "LCBhbmQgdGhlIG1vZGVsIG5hbWUgaXMgZm9yd2FyZGVkIHVwc3RyZWFtLiBDaGF0IGNvbXBsZXRp" + + "b25zIGFuZCBSZXNwb25zZXMgQVBJIHJlcXVlc3RzIGNhbiB1c2UgYHgtbXVsdGktdHVybi1zZXNz" + + "aW9uLWlkYCBmb3Igc2Vzc2lvbiBzdGlja2luZXNzOyBlbWJlZGRpbmdzIHJlcXVlc3RzIGRvIG5v" + + "dC4KCiMjIGBmdW5jdGlvbiB1cGRhdGVgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVm" + + "YXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS10YWdzIFRBR1ssVEFHXWAgfCBSZXBsYWNlIGZ1bmN0" + + "aW9uIHRhZ3MgfCAtIHwKfCBgLS1sbG0tbW9kZWwtdXBkYXRlIFNQRUNgIHwgTExNIG1vZGVsIHVw" + + "ZGF0ZTsgZm9ybWF0IGBuYW1lPTxtb2RlbD4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJh" + + "dGVMaW1pdD08bGltaXQ+YDsgcmVwZWF0YWJsZS4gUm91dGluZyBtZXRob2RzIG1hdGNoIGAtLWxs" + + "bS1tb2RlbGAuIFRva2VuIGxpbWl0IGV4YW1wbGU6IGAxMDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBm" + + "b3IgY29tYmluZWQgdG9rZW4gbGltaXRzLiB8IC0gfAp8IGAtLWxsbS1kZWZhdWx0LXByaW9yaXR5" + + "IFBSSU9SSVRZYCB8IFJlcGxhY2UgdGhlIGZ1bmN0aW9uLWxldmVsIHByaW9yaXR5IGNvbmZpZ3Vy" + + "YXRpb24gd2l0aCB0aGlzIGRlZmF1bHQgYW5kIGFueSBzdXBwbGllZCBwZXItYWNjb3VudCBvdmVy" + + "cmlkZXMuIHwgLSB8CnwgYC0tbGxtLXBlci1hY2NvdW50LXByaW9yaXR5IE5DQS1JRDpQUklPUklU" + + "WWAgfCBQZXItYWNjb3VudCBwcmlvcml0eSBvdmVycmlkZTsgcmVwZWF0YWJsZTsgc3VwcG9ydHMg" + + "dXAgdG8gNjQgZGlzdGluY3QgTkNBIElEIG92ZXJyaWRlcy4gUmVxdWlyZXMgYSBkZWZhdWx0IHBy" + + "aW9yaXR5LiB8IC0gfAoKSW4gSlNPTiwgYGZ1bmN0aW9uIHVwZGF0ZWAgYWNjZXB0cyBgbW9kZWxV" + + "cGRhdGVzW11gIGVudHJpZXMgd2l0aCBgbW9kZWxOYW1lYCBhbmQgYGxsbUNvbmZpZy5yb3V0aW5n" + + "TWV0aG9kYCBhbmQvb3IgYGxsbUNvbmZpZy50b2tlblJhdGVMaW1pdGAuIGB1cmlzYCBhcmUgY3Jl" + + "YXRlLXRpbWUgbW9kZWwgbWV0YWRhdGEgYW5kIGFyZSBub3QgcGFydCBvZiBtb2RlbCB1cGRhdGVz" + + "LgoKIyMgYGZ1bmN0aW9uIGRlcGxveSBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJ" + + "TEVgIGlzIHJlY29tbWVuZGVkIChmdWxsIEpTT04gc3BlYykuIEZvciBhZC1ob2Mgb25lLXNob3Qg" + + "dXNlOgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tZnVu" + + "Y3Rpb24taWQgSURgIHwgRnVuY3Rpb24gSUQgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLWdwdSBOQU1F" + + "YCB8IEdQVSBmYW1pbHkgfCBgSDEwMGAgfAp8IGAtLWluc3RhbmNlLXR5cGUgVFlQRWAgfCBTS1Ug" + + "fCBgTkNQLkdQVS5IMTAwXzF4YCB8CnwgYC0tbWluLWluc3RhbmNlcyBOYCB8IE1pbiByZXBsaWNh" + + "cyB8IGAxYCB8CnwgYC0tbWF4LWluc3RhbmNlcyBOYCB8IE1heCByZXBsaWNhcyB8IGAxYCB8Cnwg" + + "YC0tbWF4LXJlcXVlc3QtY29uY3VycmVuY3kgTmAgfCBDb25jdXJyZW5jeSB8IGAwYCAodW5zZXQ7" + + "IHNlcnZlciBkZWZhdWx0IGFwcGxpZXMpIHwKfCBgLS1jbHVzdGVycyBOQU1FWyxOQU1FXWAgfCBU" + + "YXJnZXQgc3BlY2lmaWMgY29tcHV0ZSBjbHVzdGVycyB8IChhbnkgbWF0Y2hpbmcgU0tVKSB8Cgoj" + + "IyBgdGFzayBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVu" + + "ZGVkIGZvciByZXBlYXRhYmxlIHRhc2sgZGVmaW5pdGlvbnMuIEZvciBhZC1ob2MgdXNlOgoKfCBG" + + "bGFnIHwgUHVycG9zZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGAtLW5hbWUgTkFNRWAgfCBU" + + "YXNrIG5hbWUgKHJlcXVpcmVkKSB8IDEtMTI4IGNoYXJzLCBgXlthLXowLTlBLVpdW2EtejAtOUEt" + + "WlwtX10qJGAgfAp8IGAtLWdwdSBHUFVgIHwgR1BVIG5hbWUgKHJlcXVpcmVkIHdpdGhvdXQgYC0t" + + "aW5wdXQtZmlsZWApIHwgRXhhbXBsZTogYEgxMDBgIHwKfCBgLS1pbnN0YW5jZS10eXBlIFRZUEVg" + + "IHwgSW5zdGFuY2UgdHlwZSAocmVxdWlyZWQgd2l0aG91dCBgLS1pbnB1dC1maWxlYCkgfCBFeGFt" + + "cGxlOiBgTkNQLkdQVS5IMTAwXzF4YCB8CnwgYC0taW1hZ2UgSU1BR0VgIHwgQ29udGFpbmVyIGlt" + + "YWdlIHwgTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYC0taGVsbS1jaGFydGAgfAp8IGAtLWhlbG0t" + + "Y2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJIHJlZmVyZW5jZSB8IE11dHVhbGx5" + + "IGV4Y2x1c2l2ZSB3aXRoIGAtLWltYWdlYCB8CnwgYC0taW5wdXQtZmlsZSBGSUxFYCB8IEpTT04g" + + "dGFzayBzcGVjIGZpbGUgfCBDTEkgZmxhZ3Mgb3ZlcnJpZGUgSlNPTiB2YWx1ZXMgd2hlbiBib3Ro" + + "IGFyZSBzZXQgfAp8IGAtLWJhY2tlbmQgQkFDS0VORGAgfCBCYWNrZW5kIC8gQ1NQIHwgLSB8Cnwg" + + "YC0tY2x1c3RlcnMgTkFNRVssTkFNRV1gIHwgU3BlY2lmaWMgY2x1c3RlcnMgd2l0aGluIHRoZSBp" + + "bnN0YW5jZSB8IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tY29udGFpbmVyLWFyZ3MgQVJHU2AgfCBB" + + "cmdzIHBhc3NlZCB3aGVuIGxhdW5jaGluZyB0aGUgY29udGFpbmVyIHwgU2luZ2xlIHN0cmluZywg" + + "ZS5nLiBgIi0tZXBvY2hzIDEwIC0tYmF0Y2gtc2l6ZSAzMiJgIHwKfCBgLS1jb250YWluZXItZW52" + + "IE5BTUU9dmFsdWVgIHwgQ29udGFpbmVyIGVudmlyb25tZW50IHZhcmlhYmxlOyByZXBlYXRhYmxl" + + "IHwgLSB8CnwgYC0tc2VjcmV0cyBOQU1FPXZhbHVlYCB8IFNlY3JldCBlbnZpcm9ubWVudCB2YXJp" + + "YWJsZTsgcmVwZWF0YWJsZTsgZW5jcnlwdGVkIGF0IHJlc3QgfCAtIHwKfCBgLS1tYXgtcnVudGlt" + + "ZSBEVVJBVElPTmAgfCBNYXggd2FsbC1jbG9jayBydW4gdGltZSAoSVNPIDg2MDEsIGUuZy4gYFBU" + + "NEhgKSB8IE5vIGRlZmF1bHQ7IG9taXQgZm9yIG5vIHRpbWUgbGltaXQgfAp8IGAtLW1heC1xdWV1" + + "ZWQgRFVSQVRJT05gIHwgTWF4IHRpbWUgaW4gcXVldWUgYmVmb3JlIGNhbmNlbGxhdGlvbiAoSVNP" + + "IDg2MDEpIHwgU2VydmVyIGRlZmF1bHQgYFBUNzJIYCB8CnwgYC0tdGVybWluYXRpb24tZ3JhY2Ug" + + "RFVSQVRJT05gIHwgR3JhY2UgcGVyaW9kIGFmdGVyIHN0b3Agc2lnbmFsIChJU08gODYwMSkgfCBT" + + "ZXJ2ZXIgZGVmYXVsdCBgUFQxSGAgfAp8IGAtLXJlc3VsdC1zdHJhdGVneSBVUExPQURcfE5PTkVg" + + "IHwgSG93IHRvIGhhbmRsZSB0YXNrIG91dHB1dCBhcnRpZmFjdHMgfCAtIHwKfCBgLS1yZXN1bHRz" + + "LWxvY2F0aW9uIExPQ0FUSU9OYCB8IFJlc3VsdCB1cGxvYWQgdGFyZ2V0LCBmb3JtYXQgYG9yZy1u" + + "YW1lL1t0ZWFtLW5hbWUvXW1vZGVsLW5hbWVgOyByZXF1aXJlZCB3aGVuIGAtLXJlc3VsdC1zdHJh" + + "dGVneT1VUExPQURgIHwgLSB8CnwgYC0tbW9kZWxzIE5BTUU6VkVSU0lPTjpVUklgIHwgTW9kZWwg" + + "YXJ0aWZhY3Q7IHJlcGVhdGFibGUgfCAtIHwKfCBgLS1yZXNvdXJjZXMgTkFNRTpWRVJTSU9OOlVS" + + "SWAgfCBSZXNvdXJjZSBhcnRpZmFjdDsgcmVwZWF0YWJsZSB8IC0gfAp8IGAtLXRhZ3MgVEFHWyxU" + + "QUddYCB8IFRhc2sgdGFncyB8IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tZGVzY3JpcHRpb24gVEVY" + + "VGAgfCBUYXNrIGRlc2NyaXB0aW9uIHwgLSB8CnwgYC0tbG9ncy10ZWxlbWV0cnktaWQgVVVJRGAg" + + "fCBMb2dzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfAp8IGAtLW1ldHJpY3MtdGVsZW1ldHJ5" + + "LWlkIFVVSURgIHwgTWV0cmljcyB0ZWxlbWV0cnkgZW5kcG9pbnQgSUQgfCAtIHwKfCBgLS10cmFj" + + "ZXMtdGVsZW1ldHJ5LWlkIFVVSURgIHwgVHJhY2VzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0g" + + "fApQSwcImdDiUBcuAAAXLgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA3AAkAZGF0YS9udmNm" + + "LXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOEiMg" + + "VHJvdWJsZXNob290aW5nCgpLbm93biBlcnJvcnMg4oaSIGRpYWdub3N0aWMgY29tbWFuZCDihpIg" + + "cmVtZWRpYXRpb24uIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBzdHJ1Y3R1cmVkIGBwaGFzZV9mYWls" + + "ZWRgIGV2ZW50cyB0aGUgQ0xJIGVtaXRzIChSRVEtMTUpIOKAlCBldmVyeSBlbnRyeSBiZWxvdyBz" + + "aG91bGQgbWFwIHRvIGFuIGBlcnJDYXRlZ29yeWAgYW5kIGEgYHJlbWVkaWF0aW9uYCBhcnJheS4K" + + "CiMjIFByZS1mbGlnaHQKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0t" + + "LXwtLS18CnwgYGt1YmVjdGwgbm90IG9uIFBBVEhgIHwgT3BlcmF0b3IncyBgJFBBVEhgIGRvZXNu" + + "J3QgaW5jbHVkZSBrdWJlY3RsIHwgSW5zdGFsbCBrdWJlY3RsIDEuMjgrOiBodHRwczovL2t1YmVy" + + "bmV0ZXMuaW8vZG9jcy90YXNrcy90b29scy9pbnN0YWxsLWt1YmVjdGwvIHwKfCBgaGVsbWZpbGUg" + + "bm90IG9uIFBBVEhgIHwgU2FtZSB8IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWxtZmlsZS9oZWxtZmls" + + "ZSNpbnN0YWxsYXRpb24gfAp8IGBoZWxtIG5vdCBvbiBQQVRIYCB8IFNhbWUgfCBodHRwczovL2hl" + + "bG0uc2gvZG9jcy9pbnRyby9pbnN0YWxsLyB8CnwgYEdhdGV3YXkgQVBJIENSRHMgbm90IGluc3Rh" + + "bGxlZGAgfCBlbnZveS1nYXRld2F5IHByZXJlcSBtaXNzaW5nIHwgYGhlbG0gaW5zdGFsbCBlZyBv" + + "Y2k6Ly9kb2NrZXIuaW8vZW52b3lwcm94eS9nYXRld2F5LWhlbG0gLS1uYW1lc3BhY2U9ZW52b3kt" + + "Z2F0ZXdheS1zeXN0ZW0gLS1jcmVhdGUtbmFtZXNwYWNlYCB8CnwgYGRlZmF1bHQgU3RvcmFnZUNs" + + "YXNzIG5vdCBhdmFpbGFibGVgIHwgQ2x1c3RlciBoYXMgbm8gZGVmYXVsdCBTQyB8IEFubm90YXRl" + + "IG9uZTogYGt1YmVjdGwgcGF0Y2ggc2MgPG5hbWU+IC1wICd7Im1ldGFkYXRhIjp7ImFubm90YXRp" + + "b25zIjp7InN0b3JhZ2VjbGFzcy5rdWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xhc3MiOiJ0cnVl" + + "In19fSdgIHwKfCBgR1BVIG9wZXJhdG9yIG5vdCBpbnN0YWxsZWRgIChjb21wdXRlLXBsYW5lKSB8" + + "IG52aWRpYSBHUFUgb3BlcmF0b3IgbWlzc2luZyB8IEluc3RhbGwgcGVyIGh0dHBzOi8vZG9jcy5u" + + "dmlkaWEuY29tL2RhdGFjZW50ZXIvY2xvdWQtbmF0aXZlL2dwdS1vcGVyYXRvci9sYXRlc3QvaW5z" + + "dGFsbC1ncHUtb3BlcmF0b3IuaHRtbCwgT1IgdXNlIGBmYWtlLWdwdS1vcGVyYXRvcmAgZm9yIGRl" + + "diB8CnwgYEdQVSBub2RlIGxhYmVscyBtaXNzaW5nYCAoY29tcHV0ZS1wbGFuZSkgfCBOb2RlcyBu" + + "ZWVkIGBudmlkaWEuY29tL2dwdS5mYW1pbHlgIGV0Yy4gfCBTZXQgYC0tazNzLW5vZGUtbGFiZWwg" + + "bnZpZGlhLmNvbS9ncHUuZmFtaWx5PWhvcHBlckBhZ2VudDpOYCBmb3IgazNkIHwKCiMjIEF1dGgK" + + "CnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGFkbWlu" + + "IHRva2VuIHJlcXVpcmVkYCAoaW5pdCBub3QgcnVuKSB8IE5vIGB+Ly5udmNmLWNsaS5zdGF0ZWAg" + + "YW5kIGAtLXRva2VuYCBub3QgcGFzc2VkIHwgYG52Y2YtY2xpIGluaXRgIChpbnRlcmFjdGl2ZSkg" + + "b3IgYC0tdG9rZW49JEpXVCAtLW5vbi1pbnRlcmFjdGl2ZWAgKENJKSB8CnwgYFNpZ25lZCBKV1Qg" + + "cmVqZWN0ZWQ6IEFub3RoZXIgYWxnb3JpdGhtIGV4cGVjdGVkLCBvciBubyBtYXRjaGluZyBrZXko" + + "cykgZm91bmRgIHwgU3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQgY29udHJvbCBw" + + "bGFuZSB8IGBybSB+Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5pdGAgYWdhaW4g" + + "fAp8IGA0MDMgbWlzc2luZyByZXF1ZXN0ZWQgYXV0aG9yaXRpZXNgIChmdW5jdGlvbiBpbnZva2Up" + + "IHwgQWRtaW4gdG9rZW4gZG9lc24ndCBoYXZlIGBpbnZva2VfZnVuY3Rpb25gIHNjb3BlIHwgYG52" + + "Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj3igKZgIHRoZW4gcmUtcnVuIGlu" + + "dm9rZSB8CgojIyBJbnN0YWxsIC8gYHVwYAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlv" + + "biB8CnwtLS18LS0tfC0tLXwKfCBIZWxtIGB0aW1lZCBvdXQgd2FpdGluZyBmb3IgY2Fzc2FuZHJh" + + "YCB8IENhc3NhbmRyYSBTdGF0ZWZ1bFNldCBQVkMgc3R1Y2sgYFBlbmRpbmdgIHwgQ29uZmlybSBk" + + "ZWZhdWx0IFN0b3JhZ2VDbGFzczsgY2hlY2sgYGt1YmVjdGwgZ2V0IHB2LHB2YyAtbiBjYXNzYW5k" + + "cmEtc3lzdGVtYCB8CnwgYEludmFsaWQgR1BVICdOQ1AuR1BVLkgxMDAnIHNwZWNpZmllZGAgKGZ1" + + "bmN0aW9uIGRlcGxveSkgfCBXcm9uZyBmaWVsZCDigJQgYGdwdWAgaXMgdGhlIGZhbWlseSwgbm90" + + "IHRoZSBTS1UgfCBVc2UgYCJncHUiOiAiSDEwMCJgLCBgImluc3RhbmNlVHlwZSI6ICJOQ1AuR1BV" + + "LkgxMDBfMXgiYCB8CnwgYHJlZ2lvbiBtdXN0IGJlIHByb3ZpZGVkYCAoY2x1c3RlciByZWdpc3Rl" + + "ciAvIGluc3RhbGwgLS1jb21wdXRlLXBsYW5lKSB8IGAtLXJlZ2lvbmAgZW1wdHkgKyBgQ0xVU1RF" + + "Ul9SRUdJT05gIGVudiBlbXB0eSB8IFBhc3MgYC0tcmVnaW9uPXVzLXdlc3QtMWAgKG9yIGFueSBu" + + "b24tZW1wdHkgdmFsdWUpIHwKfCBgcmVxdWlyZWRFbnYgIk5DQV9JRCIgaXMgbm90IHNldGAgKGhl" + + "bG1maWxlIGVycm9yIGR1cmluZyBjb21wdXRlLXBsYW5lIGFwcGx5KSB8IE9sZGVyIG52Y2YtY2xp" + + "IGJlZm9yZSBjb21taXQgYDZhYTU3MDRgOyBFeHRyYUVudiBub3QgcHJvcGFnYXRpbmcgTkNBX0lE" + + "IHwgVXBncmFkZSBgbnZjZi1jbGlgIHRvIGEgcmVsZWFzZSBhZnRlciBgNmFhNTcwNGAgfAp8IGBu" + + "dmNhLW9wZXJhdG9yOiBJbWFnZVB1bGxCYWNrT2ZmYCBmb3IgYG52Y2Etb3BlcmF0b3I6cHNhdGAg" + + "fCBJbWFnZSBub3QgaW4gY2x1c3RlciByZWdpc3RyeTsgbXVsdGktY2x1c3RlciBidWlsZCBpcyBs" + + "b2NhbCB8IGBrM2QgaW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Etb3BlcmF0b3I6cHNhdCAt" + + "YyA8Y2x1c3Rlcj5gIHwKCiMjIENvbXB1dGUtcGxhbmUgcnVudGltZQoKfCBTeW1wdG9tIHwgQ2F1" + + "c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBOVkNBIGFnZW50IENyYXNoTG9vcEJh" + + "Y2tPZmYgd2l0aCBgSFRUUCA0MDFgIG9uIGAvdjEvbnZjYS9jbHVzdGVycy8uLi4vcmVnaXN0ZXJg" + + "IHwgU3RhbGUgYG91dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIGZyb20gcHJpb3Ig" + + "cmVnaXN0ZXI7IGNsdXN0ZXIgSUQgZG9lc24ndCBtYXRjaCBJQ01TIHwgRGVsZXRlIHRoZSBzdGFs" + + "ZSBmaWxlOyByZS1ydW4gYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwYCAoaWRlbXBvdGVudCByZWdp" + + "c3RlciB3cml0ZXMgYSBmcmVzaCBmaWxlKSB8CnwgYE5vIGNsdXN0ZXIgZm91bmQgd2l0aCB2YWxp" + + "ZCBKV0tTIGZvciBjbHVzdGVyIElEOiA8aWQ+YCAoSUNNUyBsb2cpIHwgSldLUyBpbiBJQ01TIGRv" + + "ZXNuJ3QgbWF0Y2ggd2hhdCBjb21wdXRlLXBsYW5lIEs4cyBpcyBjdXJyZW50bHkgc2lnbmluZyB8" + + "IGBudmNmLWNsaSBjbHVzdGVyIHJvdGF0ZSAtLWNsdXN0ZXItaWQ9PGlkPmAgfAp8IEZ1bmN0aW9u" + + "IHBvZCBgSW1hZ2VQdWxsQmFja09mZmAgaW4gYG52Y2YtYmFja2VuZGAgfCBJbWFnZS1jcmVkZW50" + + "aWFsLWhlbHBlciBjb25maWcgbWlzc2luZyBvciB3cm9uZyB8IGBrdWJlY3RsIGRlc2NyaWJlIHBv" + + "ZCAtbiBudmNmLWJhY2tlbmQgPHBvZD5gOyBjaGVjayB0aGUgcHVsbCBzZWNyZXQgY29uZmlnIHwK" + + "fCBGdW5jdGlvbiBkZXBsb3kgc3R1Y2sgYERFUExPWUlOR2AgZm9yID41IG1pbiB8IE5BVFMgc3Ry" + + "ZWFtIGluaXQgbGFnIChjb2xkLWNsdXN0ZXIpIOKAlCB3YWl0LCBvciBjaGVjayBOQVRTIGF1dGgt" + + "Y2FsbG91dCBoZWFsdGggfCBga3ViZWN0bCBsb2dzIC1uIG5hdHMtc3lzdGVtIC1sIGFwcC5rdWJl" + + "cm5ldGVzLmlvL25hbWU9bmF0cy1hdXRoLWNhbGxvdXQtc2VydmljZWAgfAoKIyMgVGFza3MKCnwg" + + "U3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYHRhc2sgY3Jl" + + "YXRlYCByZXR1cm5zIGBNaXNzaW5nIDxUWVBFPiByZWdpc3RyeSBjcmVkZW50aWFsIGZvciBob3N0" + + "bmFtZWAsIG9yIGtlZXBzIHVzaW5nIGEgcHJldmlvdXMgY3JlZGVudGlhbCB2YWx1ZSwgc2hvcnRs" + + "eSBhZnRlciBgcmVnaXN0cnktY3JlZGVudGlhbCBhZGQvdXBkYXRlL2RlbGV0ZWAgd2hpbGUgYHJl" + + "Z2lzdHJ5LWNyZWRlbnRpYWwgbGlzdGAvYGdldGAgYWxyZWFkeSBzaG93IHRoZSBuZXcgdmFsdWUg" + + "fCBFeHBlY3RlZCBwcm9wYWdhdGlvbiBkZWxheTogTlZDVCBjYWNoZXMgdGhlIGFjY291bnQncyBy" + + "ZWdpc3RyeSBjcmVkZW50aWFscyB3aXRoIGBudmN0Lm52Y2YuY2FjaGUtdHRsYCAoZGVmYXVsdCBg" + + "UFQ1TWAsIGFib3V0IDUgbWluKSBhbmQgYXBwbGllcyB0aGUgY2hhbmdlIHdoZW4gdGhhdCBjYWNo" + + "ZWQgY29weSByZWZyZXNoZXMgfCBXYWl0IHVwIHRvIGFib3V0IDUgbWluIGFuZCByZXRyeSwgb3Ig" + + "YGt1YmVjdGwgLW4gbnZjZiByb2xsb3V0IHJlc3RhcnQgZGVwbG95bWVudC9udmN0LWFwaWAgdG8g" + + "YXBwbHkgaW1tZWRpYXRlbHkgfApQSwcI864ThHQRAAB0EQAAUEsDBBQACAAAAAAAIQAAAAAAAAAA" + + "AAAAAAAsAAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vU0tJTEwubWRVVAUA" + + "AQCmzhItLS0KbmFtZTogbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uCmRlc2NyaXB0aW9u" + + "OiA+LQogIEluc3RhbGwgYW5kIG9wZXJhdGUgTlZDRiBzZWxmLWhvc3RlZCBjb250cm9sLXBsYW5l" + + "IGFuZCBzZXBhcmF0ZSBjb21wdXRlLXBsYW5lCiAgc3RhY2tzLiBDb3ZlcnMgSGVsbWZpbGUgdmFs" + + "dWVzIGFuZCBDTEkgcHJvZmlsZSBpbnN0YWxsYXRpb24gZmxvd3MsIHRlYXJkb3duLAogIHZhbHVl" + + "cyBvdmVycmlkZXMsIHB1bGwgc2VjcmV0cywgYW5kIHRyb3VibGVzaG9vdGluZy4gVXNlIGZvcgog" + + "IG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrLCBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2ssIHNwbGl0" + + "IGNvbXB1dGUtcGxhbmUKICBpbnN0YWxsYXRpb24sIGNvbnRyb2wtcGxhbmUgaW5zdGFsbGF0aW9u" + + "LCBDTEktZ2VuZXJhdGVkIGNvbnRyb2wtcGxhbmUKICBwcm9maWxlcywgSGVsbWZpbGUsIHNlbGYt" + + "bWFuYWdlZCwgb3Igc2VsZi1ob3N0ZWQgZGVwbG95bWVudHMuIERvIE5PVCB1c2UgZm9yCiAgbG9j" + + "YWwgazNkIGVudmlyb25tZW50czsgdXNlIHRoZSBsb2NhbCBrM2QgZGV2ZWxvcG1lbnQgd29ya2Zs" + + "b3cgaW5zdGVhZC4KbGljZW5zZTogQXBhY2hlLTIuMApjb21wYXRpYmlsaXR5OiBSZXF1aXJlcyBo" + + "ZWxtZmlsZSA+PSAxLjEuMCA8IDEuMi4wLCBoZWxtID49IDMuMTIsIGhlbG0tZGlmZiBwbHVnaW4s" + + "IGt1YmVjdGwgbWF0Y2hpbmcgY2x1c3RlciB2ZXJzaW9uCmF1dGhvcjogIm52Y2YtY29yZS1lbmcg" + + "PG52Y2YtY29yZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCnZlcnNpb246ICIxLjAuMCIKdGFn" + + "czogW252Y2YsIHNlbGYtbWFuYWdlZCwgaGVsbWZpbGUsIHNlbGYtaG9zdGVkLCBjb250cm9sLXBs" + + "YW5lLCBjb21wdXRlLXBsYW5lLCBjbGktcHJvZmlsZSwgaW5zdGFsbGF0aW9uLCBkZXBsb3ltZW50" + + "LCBwdWxsLXNlY3JldHNdCnRvb2xzOiBbU2hlbGwsIFJlYWQsIEVkaXQsIEdyZXAsIEdsb2JdCm1l" + + "dGFkYXRhOgogIGludGVybmFsOiBmYWxzZQogIGF1dGhvcjogIm52Y2YtY29yZS1lbmcgPG52Y2Yt" + + "Y29yZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCiAgdmVyc2lvbjogIjEuMCIKICB0YWdzOiBb" + + "bnZjZiwgc2VsZi1tYW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQsIGNvbnRyb2wtcGxhbmUs" + + "IGNvbXB1dGUtcGxhbmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24sIGRlcGxveW1lbnQsIHB1" + + "bGwtc2VjcmV0c10KICBsYW5ndWFnZXM6IFtiYXNoLCB5YW1sXQogIGZyYW1ld29ya3M6IFtoZWxt" + + "ZmlsZSwgaGVsbSwga3ViZWN0bF0KICBkb21haW46IGNsb3VkLWluZnJhc3RydWN0dXJlCi0tLQoK" + + "IyBOVkNGIFNlbGYtTWFuYWdlZCBTdGFjayBPcGVyYXRpb25zCgpPcGVyYXRpb25hbCBndWlkZSBm" + + "b3IgbWF0Y2hpbmcgTlZDRiBjb250cm9sLXBsYW5lIGFuZCBjb21wdXRlLXBsYW5lIEhlbG1maWxl" + + "IGJ1bmRsZXMuCgojIyBJbnN0cnVjdGlvbnMKClVzZSB0aGlzIHNraWxsIGZvciBpbnN0YWxsLCB1" + + "cGdyYWRlLCBvciB0ZWFyZG93biB3b3JrIGluIG1hdGNoaW5nIGBudmNmLXNlbGYtbWFuYWdlZC1z" + + "dGFja2AgYW5kIGBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXM7IGtlZXAgSGVsbWZp" + + "bGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSBoYW5kb2ZmcyBzZXBhcmF0ZS4gRm9yIGBmdW5jdGlv" + + "blR5cGU6ICJMTE0iYCwgcmVhZCBbTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnRdKHJlZmVyZW5jZXMv" + + "aGVsbWZpbGUtc3RydWN0dXJlLm1kI2xsbS1mdW5jdGlvbi1lbmFibGVtZW50KS4KCiMjIFByZXJl" + + "cXVpc2l0ZXMKCkFzayBmb3IgdGhlIGV4dHJhY3RlZCBgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2tg" + + "IHBhdGguIEZvciBzcGxpdCBpbnN0YWxsYXRpb24sCmFsc28gcmVxdWlyZSB0aGUgbWF0Y2hpbmct" + + "dmVyc2lvbiBgbnZjZi1jb21wdXRlLXBsYW5lLXN0YWNrYCBwYXRoLiBWZXJpZnkgYm90aDoKCmBg" + + "YGJhc2gKbHMgPGNvbnRyb2wtcGxhbmUtc3RhY2s+L2hlbG1maWxlLmQvIDxjb250cm9sLXBsYW5l" + + "LXN0YWNrPi9lbnZpcm9ubWVudHMvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9zZWNyZXRzLyA8Y29u" + + "dHJvbC1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmxzIDxjb21wdXRlLXBsYW5lLXN0" + + "YWNrPi9oZWxtZmlsZS5kLyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZW52aXJvbm1lbnRzLyA8Y29t" + + "cHV0ZS1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmBgYAoKSWYgZWl0aGVyIGRpcmVj" + + "dG9yeSBpcyBtaXNzaW5nLCBkb3dubG9hZCBtYXRjaGluZyBidW5kbGUgdmVyc2lvbnMgZnJvbSBO" + + "R0M6CgpgYGBiYXNoCm5nYyByZWdpc3RyeSByZXNvdXJjZSBkb3dubG9hZC12ZXJzaW9uIDxvcmc+" + + "L252Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrOjx2ZXJzaW9uPgpuZ2MgcmVnaXN0cnkgcmVzb3VyY2Ug" + + "ZG93bmxvYWQtdmVyc2lvbiA8b3JnPi9udmNmLWNvbXB1dGUtcGxhbmUtc3RhY2s6PHZlcnNpb24+" + + "CmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhlIGNvbnRyb2wtcGxh" + + "bmUgYnVuZGxlIHJvb3QuIFNwbGl0LWZsb3cKY29tbWFuZHMgYW5kIHJvb3Qgc3Vic3RpdHV0aW9u" + + "IGFyZSBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29t" + + "cHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLgoKIyMgQmVmb3JlIFlvdSBTdGFydAoKVmVyaWZ5" + + "IHRvb2xpbmcgYW5kIGNvbnRleHQgYmVmb3JlIGFueSBvcGVyYXRpb246CgpgYGBiYXNoCmhlbG1m" + + "aWxlIC0tdmVyc2lvbiAgICMgTXVzdCBiZSAxLjEueCAoMS4yLjAgcmVtb3ZlZCBzZXF1ZW50aWFs" + + "IG1vZGUpCmhlbG0gdmVyc2lvbiAgICAgICAgICMgTXVzdCBiZSA+PSAzLjEyCmhlbG0gcGx1Z2lu" + + "IGxpc3QgICAgICMgTXVzdCBpbmNsdWRlIGhlbG0tZGlmZiA+PSAzLjExCmt1YmVjdGwgdmVyc2lv" + + "biAgICAgICMgQ2xpZW50IG11c3QgYmUgd2l0aGluIDEgbWlub3IgdmVyc2lvbiBvZiBjbHVzdGVy" + + "CmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5kcyBydW4gZnJvbSB0aGUgZXh0cmFjdGVkIGBudmNm" + + "LXNlbGYtbWFuYWdlZC1zdGFjay9gIHJvb3Q6CgpgYGBiYXNoCmNkIHBhdGgvdG8vbnZjZi1zZWxm" + + "LW1hbmFnZWQtc3RhY2sKbHMgaGVsbWZpbGUuZC8gZW52aXJvbm1lbnRzLyBzZWNyZXRzLyBnbG9i" + + "YWwueWFtbC5nb3RtcGwKYGBgCgpJZGVudGlmeSB0aGUgZW52aXJvbm1lbnQgZnJvbSBgZW52aXJv" + + "bm1lbnRzLzxuYW1lPi55YW1sYCBhbmQKYHNlY3JldHMvPG5hbWU+LXNlY3JldHMueWFtbGA7IGZv" + + "ciBFS1MsIHVzZSB0aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczov" + + "L2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4K" + + "CiMjIEhvdyBWYWx1ZXMgRmxvdwoKVW5kZXJzdGFuZGluZyB2YWx1ZSBwcmVjZWRlbmNlIHByZXZl" + + "bnRzIHRoZSBtb3N0IGNvbW1vbiBjb25maWd1cmF0aW9uIG1pc3Rha2VzLgoKYGBgdGV4dAplbnZp" + + "cm9ubWVudHMvYmFzZS55YW1sICAgICAgICAgIChkZWZhdWx0cykKICAgIC0+IG1lcmdlZCB3aXRo" + + "CmVudmlyb25tZW50cy88ZW52Pi55YW1sICAgICAgICAgKHlvdXIgb3ZlcnJpZGVzKQogICAgLT4g" + + "Y29uc3VtZWQgYnkKZ2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAoR28gdGVtcGxhdGUs" + + "IGNvbnN0cnVjdHMgcGVyLWNoYXJ0IHZhbHVlcykKICAgIC0+IGNvbnN1bWVkIGJ5CnNlY3JldHMv" + + "PGVudj4tc2VjcmV0cy55YW1sICAgICAgKHNlbnNpdGl2ZSB2YWx1ZXMpCiAgICAtPiBvdmVycmlk" + + "ZGVuIGJ5CnJlbGVhc2UgaW5saW5lIHZhbHVlczogYmxvY2tzICAgKGhpZ2hlc3QgcHJlY2VkZW5j" + + "ZSkKYGBgCgpDcml0aWNhbDogYGdsb2JhbC55YW1sLmdvdG1wbGAgb25seSBwYXNzZXMgdGhyb3Vn" + + "aCBzcGVjaWZpYyBrZXlzIHRvIGVhY2ggY2hhcnQgKGltYWdlIHJlZ2lzdHJpZXMsIG5vZGUgc2Vs" + + "ZWN0b3JzLCBzdG9yYWdlLCByZXBsaWNhIGNvdW50cykuIFNldHRpbmcgYW4gYXJiaXRyYXJ5IGNo" + + "YXJ0IHZhbHVlIGluIHRoZSBlbnZpcm9ubWVudCBmaWxlIHdpbGwgYmUgc2lsZW50bHkgaWdub3Jl" + + "ZCBpZiBgZ2xvYmFsLnlhbWwuZ290bXBsYCBkb2VzIG5vdCBwcm9wYWdhdGUgaXQuCgpUbyBvdmVy" + + "cmlkZSBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzLCB1c2UgYSBoZWxtZmlsZSByZWxlYXNlIGB2YWx1" + + "ZXM6YCBibG9jay4gU2VlIFtPdmVycmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzXSgjb3ZlcnJpZGlu" + + "Zy1oZWxtLWNoYXJ0LXZhbHVlcykuCgojIyBDbGVhbiBJbnN0YWxsYXRpb24KCiMjIyAxLiBDcmVh" + + "dGUgbmFtZXNwYWNlcyBhbmQgaW1hZ2UgcHVsbCBzZWNyZXRzIChpZiB1c2luZyBhIHByaXZhdGUg" + + "cmVnaXN0cnkpCgpgYGBiYXNoCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVt" + + "IG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1" + + "YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSAiJG5zIiAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBr" + + "dWJlY3RsIGFwcGx5IC1mIC0KZG9uZQoKIyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUg" + + "cmVnaXN0cnkgKGUuZy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtl" + + "eT4iCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMg" + + "ZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgY3JlYXRlIHNl" + + "Y3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZj" + + "ci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2Vy" + + "LXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0t" + + "ZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpkb25lCmBgYAoKSWYg" + + "dXNpbmcgcHVsbCBzZWNyZXRzLCB5b3UgbXVzdCBhbHNvIGNvbmZpZ3VyZSBlYWNoIGhlbG1maWxl" + + "IHJlbGVhc2UgdG8gcmVmZXJlbmNlIHRoZW0uIFNlZSBbSW1hZ2UgUHVsbCBTZWNyZXRzXSgjaW1h" + + "Z2UtcHVsbC1zZWNyZXRzKS4KCiMjIyAyLiBBdXRoZW50aWNhdGUgaGVsbSB0byB5b3VyIGNoYXJ0" + + "IHJlZ2lzdHJ5CgpCb3RoIGBkb2NrZXIgbG9naW5gIEFORCBgaGVsbSByZWdpc3RyeSBsb2dpbmAg" + + "YXJlIHJlcXVpcmVkIGZvciBOR0MuIEhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8g" + + "cHVsbCBPQ0kgY2hhcnRzLCBzbyB0aGUgaGVsbSBjcmVkZW50aWFsIHN0b3JlIG11c3QgYmUgYXV0" + + "aGVudGljYXRlZCBzZXBhcmF0ZWx5LgoKYGBgYmFzaAojIE5HQyAtLSBib3RoIGNvbW1hbmRzIGFy" + + "ZSByZXF1aXJlZApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdD" + + "X0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1w" + + "ICIkTkdDX0FQSV9LRVkiCgojIEVDUgphd3MgZWNyIGdldC1sb2dpbi1wYXNzd29yZCAtLXJlZ2lv" + + "biA8cmVnaW9uPiB8IFwKICBoZWxtIHJlZ2lzdHJ5IGxvZ2luIC0tdXNlcm5hbWUgQVdTIC0tcGFz" + + "c3dvcmQtc3RkaW4gPGFjY291bnQ+LmRrci5lY3IuPHJlZ2lvbj4uYW1hem9uYXdzLmNvbQpgYGAK" + + "Cj4gTm90ZTogYGhlbG0gcmVnaXN0cnkgbG9naW5gIGtlZXBzIG9ubHkgdGhlIGxhc3QgbG9naW4g" + + "cGVyIGhvc3QgKG11bHRpLW9yZyBnb3RjaGEpLgo+IFRoZSBzdGFjayBhbmQgdGhlIGNhY2hlcyBz" + + "cGFuIHNldmVyYWwgTkdDIG9yZ3MgdGhhdCBuZWVkIGRpZmZlcmVudCBrZXlzLCBidXQgdGhleSBh" + + "bGwKPiBsaXZlIHVuZGVyIHRoZSBvbmUgaG9zdCBgbnZjci5pb2AuIEEgc2Vjb25kIGBoZWxtIHJl" + + "Z2lzdHJ5IGxvZ2luIG52Y3IuaW9gIChvcgo+IGBkb2NrZXIgbG9naW5gKSB3aXRoIGEgZGlmZmVy" + + "ZW50IGtleSBzaWxlbnRseSBvdmVyd3JpdGVzIHRoZSBmaXJzdCwgc28gcHVsbHMgZm9yIHRoZQo+" + + "IGZpcnN0IG9yZyB0aGVuIGZhaWwgd2l0aCBhIG1pc2xlYWRpbmcgYDQwMyBBY2Nlc3MgRGVuaWVk" + + "YCAobm90IGEgNDAxOiB0aGUgYXV0aAo+IHN1Y2NlZWRlZCwgaXQncyB0aGUgd3Jvbmctb3JnIGtl" + + "eSkuIElmIHlvdSBwdWxsIGNoYXJ0cy9pbWFnZXMgZnJvbSBtb3JlIHRoYW4gb25lIG9yZywKPiBl" + + "aXRoZXIgcmUtcnVuIHRoZSBsb2dpbiB3aXRoIHRoZSBjb3JyZWN0IGtleSBpbW1lZGlhdGVseSBi" + + "ZWZvcmUgZWFjaCBwdWxsLCBvciBwYXNzCj4gYC0tdXNlcm5hbWUgJyRvYXV0aHRva2VuJyAtLXBh" + + "c3N3b3JkIDxrZXk+YCBwZXIgYGhlbG0gcHVsbGAgaW52b2NhdGlvbiBpbnN0ZWFkIG9mIHJlbHlp" + + "bmcKPiBvbiB0aGUgc3RvcmVkIGxvZ2luLiAoUHVsbGluZyBldmVyeXRoaW5nIGZyb20gYSBzaW5n" + + "bGUgcmVnaXN0cnkgbWlycm9yIGF2b2lkcyB0aGlzCj4gZW50aXJlbHkuKQoKIyMjIDJiLiAoUmVj" + + "b21tZW5kZWQpIFB1bGwgZnJvbSBhIHJlZ2lzdHJ5IHRoZSBjbHVzdGVyIGF1dGhlbnRpY2F0ZXMg" + + "dG8gYXV0b21hdGljYWxseQoKSWYgeW91IG1pcnJvciB0aGUgTlZDRiBpbWFnZXMgaW50byBhIHJl" + + "Z2lzdHJ5IHRoYXQgdGhlIGNsdXN0ZXIgY2FuIHB1bGwgZnJvbSB3aXRob3V0IGFuCmV4cGxpY2l0" + + "IGltYWdlIHB1bGwgc2VjcmV0IChmb3IgZXhhbXBsZSwgYSByZWdpc3RyeSB3aGVyZSB0aGUgbm9k" + + "ZSBvciB3b3JrbG9hZCBpZGVudGl0eSBpcwpncmFudGVkIHB1bGwgYWNjZXNzIGF1dG9tYXRpY2Fs" + + "bHkpLCBwb2ludCB0aGUgc3RhY2sgYXQgaXQgYW5kIHNraXAgdGhlIGNyZWRlbnRpYWwgc3RlcHMK" + + "YWJvdmUuCgoxLiBQb2ludCB0aGUgc3RhY2sgYXQgdGhlIG1pcnJvciBpbiBgZW52aXJvbm1lbnRz" + + "LzxlbnY+LnlhbWxgOgoKICAgYGBgeWFtbAogICBnbG9iYWw6CiAgICAgaW1hZ2U6CiAgICAgICBy" + + "ZWdpc3RyeTogPHlvdXItcmVnaXN0cnk+ICAgICAgICAgICAgIyBlLmcuIHJlZ2lzdHJ5LmV4YW1w" + + "bGUuY29tCiAgICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICAgIGhlbG06CiAg" + + "ICAgICBzb3VyY2VzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25seSBpZiB5b3Ug" + + "YWxzbyBtaXJyb3JlZCB0aGUgaGVsbSBjaGFydHMKICAgICAgICAgcmVnaXN0cnk6IDx5b3VyLXJl" + + "Z2lzdHJ5PgogICAgICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICBgYGAKCiAg" + + "ID4gVGhlIG1hbmlmZXN0IGhhcyBhIG1peCBvZiBPQ0kgYW5kIG5vbi1PQ0kgYXJ0aWZhY3RzLCBz" + + "byBjb252ZXJ0IG5vbi1PQ0kgY2hhcnRzIGJlZm9yZQogICA+IG1pcnJvcmluZy4gQ29udGFpbmVy" + + "IGltYWdlcyAoYG52Y3IuaW8vLi4uYCkgYXJlIGFscmVhZHkgT0NJIGFuZCBtaXJyb3IgYXMtaXMu" + + "IFNvbWUgSGVsbQogICA+IGNoYXJ0cywgdGhvdWdoLCBhcmUgcHVibGlzaGVkIHRvIGFuIGBodHRw" + + "czovL2AgSGVsbSByZXBvc2l0b3J5IChmb3IgZXhhbXBsZQogICA+IGBoZWxtLm5nYy5udmlkaWEu" + + "Y29tYCkuIFRob3NlIGFyZSBub3QgT0NJIGFuZCBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgYGdsb2Jh" + + "bC5oZWxtLnNvdXJjZXNgCiAgID4gKE9DSSkgb3IgbWlycm9yZWQgZGlyZWN0bHkuIEJlZm9yZSBw" + + "b2ludGluZyB0aGUgc3RhY2sgYXQgeW91ciBtaXJyb3IsIGNvbnZlcnQgZWFjaAogICA+IGBodHRw" + + "czovL2AgY2hhcnQgdG8gT0NJOiBgaGVsbSByZXBvIGFkZGAvYGhlbG0gcHVsbGAgdGhlIGAudGd6" + + "YCwgdGhlbgogICA+IGBoZWxtIHB1c2ggPGNoYXJ0Pi50Z3ogb2NpOi8vPHlvdXItcmVnaXN0cnk+" + + "LzxtaXJyb3Itc3ViLXBhdGg+YC4gT25seSBPQ0kgY2hhcnRzIGNhbiBsaXZlCiAgID4gdW5kZXIg" + + "YGdsb2JhbC5oZWxtLnNvdXJjZXNgLgoKMi4gU2tpcCB0aGUgY3JlZGVudGlhbCBzdGVwcyBhYm92" + + "ZS4gV2hlbiB0aGUgY2x1c3RlciBhdXRoZW50aWNhdGVzIHRvIHRoZSByZWdpc3RyeQogICBhdXRv" + + "bWF0aWNhbGx5ICh0aGUgbm9kZSBvciB3b3JrbG9hZCBpZGVudGl0eSBoYXMgcHVsbCBhY2Nlc3Mp" + + "LCB0aGUgcHVsbCBuZWVkcyBubwogICBLdWJlcm5ldGVzIHNlY3JldCwgc28geW91IGRvIG5vdCBu" + + "ZWVkOiB0aGUgcGVyLW5hbWVzcGFjZSBgbnZjci1jcmVkc2AgZnJvbSBzdGVwIDEKICAgKHN0aWxs" + + "IGNyZWF0ZSB0aGUgbmFtZXNwYWNlcywganVzdCBub3QgdGhlIHNlY3JldCksIHRoZSBgZ2xvYmFs" + + "LmltYWdlUHVsbFNlY3JldHNgIGVudHJ5LAogICBvciB0aGUgYGRvY2tlciBsb2dpbmAvYGhlbG0g" + + "cmVnaXN0cnkgbG9naW4gbnZjci5pb2AgZnJvbSBzdGVwIDIuCgogICA+IE9uZSByZXNpZHVhbCBj" + + "cmVkZW50aWFsOiBudmNmLWFwaSBzdGlsbCB2YWxpZGF0ZXMgdGhlIHVzZXIgZnVuY3Rpb24gaW1h" + + "Z2UgYXQKICAgPiBgZnVuY3Rpb24gY3JlYXRlYCB2aWEgdGhlIGFjY291bnQgcmVnaXN0cnkgY3Jl" + + "ZGVudGlhbCwgc28gdGhhdCBjcmVkZW50aWFsIG11c3QgcG9pbnQgYXQKICAgPiB3aGljaGV2ZXIg" + + "cmVnaXN0cnkgaG9sZHMgdGhlIHVzZXIgaW1hZ2UgKHNldCBpdCB0byB5b3VyIG1pcnJvciBpZiB0" + + "aGUgaW1hZ2UgaXMgbWlycm9yZWQKICAgPiB0aGVyZSkuCgojIyMgMy4gU2V0IHRoZSByb3V0ZSBk" + + "b21haW4KCmBnbG9iYWwuZG9tYWluYCBzZXRzIHRoZSBob3N0bmFtZSBzdWZmaXggZm9yIHJvdXRl" + + "cyBzdWNoIGFzIGBhcGkuPGRvbWFpbj5gLiBJdCBkb2VzIG5vdCBjb25maWd1cmUgdGhlIEdhdGV3" + + "YXkgb3IgaXRzIGxvYWQgYmFsYW5jZXIuIFF1ZXJ5IHRoZSBleGFjdCBleGlzdGluZyBHYXRld2F5" + + "OgoKYGBgYmFzaApHQVRFV0FZX0FERFJFU1M9JChrdWJlY3RsIGdldCBnYXRld2F5IDxnYXRld2F5" + + "LW5hbWU+IC1uIDxnYXRld2F5LW5hbWVzcGFjZT4gLW8ganNvbnBhdGg9J3suc3RhdHVzLmFkZHJl" + + "c3Nlc1swXS52YWx1ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSRVNTIgpgYGAKClRoZSBhZGRy" + + "ZXNzIG1heSBiZSBhIGhvc3RuYW1lIG9yIElQLiBDbG91ZCBwcm92aWRlciBhbmQgR2F0ZXdheSBj" + + "b25maWd1cmF0aW9uIGRldGVybWluZSB0aGUgbG9hZCBiYWxhbmNlciB0eXBlIGFuZCBhZGRyZXNz" + + "IGZvcm1hdC4gVGhlIHNlbGYtbWFuYWdlZCBzdGFjayBkb2VzIG5vdCBzZWxlY3QgZWl0aGVyLgoK" + + "Rm9yIHRlbXBvcmFyeSB0ZXN0aW5nIHdpdGhvdXQgRE5TLCB1c2UgYSBzdGFibGUgcmVzZXJ2ZWQg" + + "c3VmZml4IHN1Y2ggYXMgYGdsb2JhbC5kb21haW46ICJudmNmLnRlc3QiYCwgY29ubmVjdCB0byBg" + + "R0FURVdBWV9BRERSRVNTYCwgYW5kIHNlbmQgYEhvc3Q6IGFwaS5udmNmLnRlc3RgLiBGb3IgcHJv" + + "ZHVjdGlvbiwgdXNlIHlvdXIgYmFzZSBETlMgZG9tYWluIGFuZCBwb2ludCBpdHMgcm91dGUgcmVj" + + "b3JkcyB0byBgR0FURVdBWV9BRERSRVNTYC4gSWYgdGhlIGVuZHBvaW50IGxhdGVyIGNoYW5nZXMs" + + "IGtlZXAgYGdsb2JhbC5kb21haW5gIHN0YWJsZSBhbmQgdXBkYXRlIG9ubHkgRE5TIG9yIHRoZSBj" + + "bGllbnQgZGVzdGluYXRpb24uIFNlZSBFeGFtcGxlIDQgaW4gW2V4YW1wbGVzLm1kXShleGFtcGxl" + + "cy5tZCkuCgojIyMgNC4gUHJldmlldyBhbmQgZGVwbG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08" + + "ZW52LW5hbWU+IGhlbG1maWxlIHRlbXBsYXRlICAgIyBQcmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0" + + "cwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSBzeW5jICAgICAgICMgRGVwbG95CmBg" + + "YAoKPiBTZXQgQk9USCBDYXNzYW5kcmEgcGFzc3dvcmRzIGluIHRoZSBzZWNyZXRzIGZpbGUuIFRo" + + "ZSBzZWNyZXRzIGZpbGUgZG9jdW1lbnRzCj4gYERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYCwg" + + "YnV0IHRoZSBjYXNzYW5kcmEgY2hhcnQgaGFzIGEgc2Vjb25kIGNyZWRlbnRpYWwsCj4gYGNhc3Nh" + + "bmRyYS5zZXJ2aWNlUm9sZVBhc3N3b3JkYCwgdGhhdCBkZWZhdWx0cyB0byBgY2hAbmczbTNgLiBJ" + + "ZiB5b3Ugc2V0IG9ubHkKPiBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgLCB0aGUgc2Vydmlj" + + "ZSByb2xlIGtlZXBzIHRoYXQgZGVmYXVsdCBhbmQgZXZlcnkgREItYmFja2VkCj4gc2VydmljZSBj" + + "cmFzaC1sb29wcyB3aXRoIGBCYWQgY3JlZGVudGlhbHNgIG9uY2UgaXQgdHJpZXMgdG8gYXV0aGVu" + + "dGljYXRlLiBTZXQKPiBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHRvIHRoZSBzYW1l" + + "IHZhbHVlIGFzIGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAuCgojIyMgNS4gRGVwbG95bWVu" + + "dCBwaGFzZXMKCkhlbG1maWxlIGRlcGxveXMgaW4gb3JkZXIgd2l0aCBkZXBlbmRlbmNpZXM6Cgp8" + + "IFBoYXNlIHwgU2VsZWN0b3IgfCBTZXJ2aWNlcyB8IFdhaXQgdGltZSB8CnwtLS0tLS0tfC0tLS0t" + + "LS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwKfCAxIHwgYHJlbGVhc2UtZ3JvdXA9ZGVwZW5k" + + "ZW5jaWVzYCB8IE5BVFMsIE9wZW5CYW8sIENhc3NhbmRyYSB8IDUtMTAgbWluIHwKfCAyIHwgYHJl" + + "bGVhc2UtZ3JvdXA9c2VydmljZXNgIHwgQVBJLCBTSVMsIEVTUywgaW52b2NhdGlvbiwgZ3JwYy1w" + + "cm94eSwgbm90YXJ5LCBhcGkta2V5cywgb3B0aW9uYWwgTExNIGdhdGV3YXkvcm91dGVyLCBvcHRp" + + "b25hbCBWYW5pdHkgR2F0ZXdheSwgTlZDRiBVSSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1" + + "ZGVzIHRoZSBhZGRvbiB8IDUtMTAgbWluIHwKfCAzIHwgYHJlbGVhc2UtZ3JvdXA9aW5ncmVzc2Ag" + + "fCBHYXRld2F5IHJvdXRlcyB8IDEtMiBtaW4gfAp8IDQgfCBgcmVsZWFzZS1ncm91cD1vYnNlcnZh" + + "YmlsaXR5YCB8IE9ic2VydmFiaWxpdHkgc3RhY2sgKGlmIGVuYWJsZWQpIHwgMS0yIG1pbiB8CgpN" + + "b25pdG9yIGluIGEgc2VwYXJhdGUgdGVybWluYWw6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZHMg" + + "LUEgLXcKYGBgCgojIyMgNi4gRW5hYmxlIFZhbml0eSBHYXRld2F5IChvcHRpb25hbCkKClZhbml0" + + "eSBHYXRld2F5IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgYW5kIGlzIG9ubHkgbmVlZGVkIGZvciBj" + + "dXN0b21lci1mYWNpbmcKaG9zdG5hbWVzIG9yIHBhdGggbWFwcGluZ3MgaW4gZnJvbnQgb2YgdGhl" + + "IHN0YW5kYXJkIE5WQ0YgQVBJIGFuZCBpbnZvY2F0aW9uCnJvdXRlcy4gSXQgaXMgYXZhaWxhYmxl" + + "IG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBWYW5pdHkgR2F0ZXdheQph" + + "ZGRvbi4gSWYgdGhlIGV4dHJhY3RlZCBzdGFjayBwYWNrYWdlIGRvZXMgbm90IGNvbnRhaW4gYSBg" + + "dmFuaXR5LWdhdGV3YXlgCnJlbGVhc2UgYW5kIGB2YW5pdHlHYXRld2F5YCByb3V0ZSB2YWx1ZXMs" + + "IHNraXAgdGhlc2UgY29tbWFuZHMgYW5kIHVzZSBhIG5ld2VyCnN0YWNrIHBhY2thZ2UgdGhhdCBp" + + "bmNsdWRlcyB0aGVtLgoKSWYgdGhlIHN0YWNrIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLCBl" + + "bmFibGUgaXQgaW4KYGVudmlyb25tZW50cy88ZW52LW5hbWU+LnlhbWxgOgoKYGBgeWFtbAphZGRv" + + "bnM6CiAgdmFuaXR5R2F0ZXdheToKICAgIGVuYWJsZWQ6IHRydWUKICAgIG1hcHBpbmdDb25maWc6" + + "IHt9CmBgYAoKVGhlIGRlZmF1bHQgcm91dGUgaG9zdCBpcyBgdmFuaXR5Ljxkb21haW4+YCBhbmQg" + + "dGhlIGJhY2tlbmQgaXMKYHZhbml0eS1nYXRld2F5Lm52Y2Y6ODA4MGAuIFB1dCBkZXBsb3ltZW50" + + "LXNwZWNpZmljIGhvc3QgYW5kIHBhdGggbWFwcGluZ3MgdW5kZXIKYGFkZG9ucy52YW5pdHlHYXRl" + + "d2F5Lm1hcHBpbmdDb25maWdgLiBJZiB5b3UgbmVlZCBjdXN0b20gdmFuaXR5IGhvc3RzIGluc3Rl" + + "YWQgb2YKYHZhbml0eS48ZG9tYWluPmAsIHVzZSB0aGUgcm91dGUgaG9zdG5hbWUgb3ZlcnJpZGVz" + + "IHN1cHBvcnRlZCBieSB0aGUgc3RhY2sKcGFja2FnZSBhbmQgY3JlYXRlIG1hdGNoaW5nIEROUyBy" + + "ZWNvcmRzLgoKQWZ0ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYHZhbml0" + + "eS1nYXRld2F5YCByZWxlYXNlLCBwcmV2aWV3IGFuZAphcHBseSB0aGUgc2VydmljZSBhbmQgcm91" + + "dGU6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3Ig" + + "bmFtZT12YW5pdHktZ2F0ZXdheSB0ZW1wbGF0ZQpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxt" + + "ZmlsZSAtLXNlbGVjdG9yIG5hbWU9dmFuaXR5LWdhdGV3YXkgc3luYwpIRUxNRklMRV9FTlY9PGVu" + + "di1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBg" + + "YAoKVmVyaWZ5IHRoZSByb3V0ZSBvbmx5IHdoZW4gdGhlIGFkZG9uIGlzIHByZXNlbnQgYW5kIGVu" + + "YWJsZWQ6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSxzdmMgLW4gbnZjZiAtbCBhcHAua3Vi" + + "ZXJuZXRlcy5pby9uYW1lPXZhbml0eS1nYXRld2F5Cmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8" + + "IGdyZXAgLWkgdmFuaXR5CmN1cmwgLUggIkhvc3Q6IHZhbml0eS48ZG9tYWluPiIgImh0dHA6Ly88" + + "Z2F0ZXdheS1hZGRyZXNzPi9oZWFsdGgiCmBgYAoKRG8gbm90IGVuYWJsZSBWYW5pdHkgR2F0ZXdh" + + "eSBmb3Igc3RhbmRhcmQgQVBJLCBBUEkgS2V5cywgaW52b2NhdGlvbiwgTExNCmludm9jYXRpb24s" + + "IG9yIGdSUEMgdHJhZmZpYy4gVGhvc2Ugcm91dGVzIGFyZSBwcm92aWRlZCBieSB0aGUgYmFzZSBn" + + "YXRld2F5CnJvdXRlcy4KCiMjIyA3LiBFbmFibGUgTlZDRiBVSSAob3B0aW9uYWwpCgpOVkNGIFVJ" + + "IGlzIGFuIG9wdGlvbmFsLCBjdXN0b21lci1mYWNpbmcgYWRtaW4tcGFuZWwgVUkuIEl0IGlzIGRp" + + "c2FibGVkIGJ5CmRlZmF1bHQgYW5kIGF2YWlsYWJsZSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRo" + + "YXQgaW5jbHVkZSB0aGUgTlZDRiBVSSBhZGRvbi4gSWYKeW91ciBleHRyYWN0ZWQgc3RhY2sgcGFj" + + "a2FnZSBkb2VzIG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UgYW5kIGBudmNmVWlgCnJv" + + "dXRlIHZhbHVlcywgc2tpcCB0aGlzIHNlY3Rpb24uIFRoZSBOVkNGIFVJIGFkbWluIHBhbmVsIGlz" + + "IGN1cnJlbnRseQp1bmF1dGhlbnRpY2F0ZWQ7IGRvIG5vdCBleHBvc2UgaXQgdG8gdGhlIHB1Ymxp" + + "YyBpbnRlcm5ldC4KCkZvciBlbmFibGVtZW50LCBuYW1lc3BhY2UgYW5kIHB1bGwgc2VjcmV0IHNl" + + "dHVwLCBhcHBseSwgYW5kIHZlcmlmaWNhdGlvbiBzdGVwcywKc2VlIFtOVkNGIFVJIEFkZG9uXShy" + + "ZWZlcmVuY2VzL252Y2YtdWktYWRkb24ubWQpLgoKIyMjIDguIEluc3RhbGwgdGhlIHNlcGFyYXRl" + + "IGNvbXB1dGUtcGxhbmUgc3RhY2sKClRoZSBjb250cm9sLXBsYW5lIHN0YWNrIGRvZXMgbm90IGlu" + + "c3RhbGwgY29tcHV0ZS1wbGFuZSBjb21wb25lbnRzLiBBZnRlciBpdCBpcyBoZWFsdGh5LCBjaG9v" + + "c2UgZXhhY3RseSBvbmUgY29tcHV0ZS1wbGFuZSBoYW5kb2ZmOgoKLSBIZWxtZmlsZSB2YWx1ZXMg" + + "ZmxvdzogYXV0aG9yIHNlcGFyYXRlIGVudmlyb25tZW50IGZpbGVzLCB0aGVuIHJlZ2lzdGVyIGFu" + + "ZAogIGluc3RhbGwgd2l0aCB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZS4KLSBDTEkgcHJvZmls" + + "ZSBmbG93OiB1c2UgdGhlIHByb2ZpbGUgZ2VuZXJhdGVkIGJ5IHRoZSBDTEkgY29udHJvbC1wbGFu" + + "ZSBpbnN0YWxsLAogIHRoZW4gcnVuIHRoZSBjb21wbGV0ZSBDTEkgcmVnaXN0ZXIgYW5kIGluc3Rh" + + "bGwgY29tbWFuZHMuCgpEbyBub3QgbWl4IHRoZXNlIGhhbmRvZmZzLiBGb2xsb3cgW1NwbGl0IENv" + + "bXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFs" + + "bGF0aW9uLm1kKQpmb3IgY29tbWFuZHMsIEVLUyByb3V0aW5nLCBwdWxsIHNlY3JldHMsIHZlcmlm" + + "aWNhdGlvbiwgYW5kIHRlYXJkb3duIG9yZGVyLgoKIyMgQ2xlYW4gVGVhcmRvd24KCkRlc3Ryb3kg" + + "ZXZlcnkgY29tcHV0ZSBwbGFuZSBiZWZvcmUgdGhlIGNvbnRyb2wgcGxhbmUsIHVzaW5nIHRoZSB0" + + "ZWFyZG93biBmb3IKdGhlIHNhbWUgaGFuZG9mZjsgc2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIElu" + + "c3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCN0ZWFy" + + "ZG93bikuCgpTY29wZTogT25seSBkZXN0cm95IHJlbGVhc2VzIG1hbmFnZWQgYnkgdGhpcyBjb250" + + "cm9sLXBsYW5lIGhlbG1maWxlIHN0YWNrLiBUaGUgTlZDRiByZWxlYXNlcyBhcmU6IGBuYXRzYCwg" + + "YG9wZW5iYW8tc2VydmVyYCwgYGNhc3NhbmRyYWAsIGBhcGkta2V5c2AsIGBzaXNgLCBgYXBpYCwg" + + "YGludm9jYXRpb24tc2VydmljZWAsIGBncnBjLXByb3h5YCwgYGVzcy1hcGlgLCBgbm90YXJ5LXNl" + + "cnZpY2VgLCBvcHRpb25hbCBgdmFuaXR5LWdhdGV3YXlgLCBgbnZjZi11aWAsIGBhZG1pbi1pc3N1" + + "ZXItcHJveHlgLCBhbmQgYGluZ3Jlc3NgOyBgY2VydC1tYW5hZ2VyYCBpcyBpbmNsdWRlZCBvbmx5" + + "IHdoZW4gYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IHRydWVgLiBUaGUgY29udHJvbC1wbGFuZSBuYW1l" + + "c3BhY2UgaW52ZW50b3J5IGFsc28gaW5jbHVkZXMgYGNlcnQtbWFuYWdlcmAsIGJ1dCBkZWZhdWx0" + + "IG5hbWVzcGFjZSBjbGVhbnVwIHByZXNlcnZlcyBpdC4gTmFtZXNwYWNlIHByZXNlcnZhdGlvbiBk" + + "b2VzIG5vdCBwcmVzZXJ2ZSB0aGUgSGVsbSByZWxlYXNlLiBFeHRlcm5hbCBjZXJ0LW1hbmFnZXIg" + + "bXVzdCB1c2UgYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNlYDsgb3RoZXJ3aXNlIEhlbG1maWxl" + + "IHRyZWF0cyB0aGUgcmVsZWFzZSBhcyBzdGFjay1tYW5hZ2VkLiBEbyBub3QgZGVsZXRlIG90aGVy" + + "IGhlbG0gcmVsZWFzZXMgb3IgbmFtZXNwYWNlcyBvbiB0aGUgY2x1c3Rlci4KCkJlZm9yZSBjb250" + + "cm9sLXBsYW5lIGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVy" + + "bmFsLiBGb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2Vy" + + "dE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4g" + + "aW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdl" + + "ci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRh" + + "ZGF0YSBhbmQgYWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBQcmVzZXJ2" + + "ZSB0aGUgbmFtZXNwYWNlIGJ5IGRlZmF1bHQ7IG9ubHkgcGxhbiBpdHMgcmVtb3ZhbCBhZnRlciB2" + + "ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGdldHRpbmcgZXhwbGljaXQgY29uZmly" + + "bWF0aW9uLgoKIyMjIFN0YW5kYXJkIHRlYXJkb3duCgpSdW4gZnJvbSBpbnNpZGUgdGhlIGBudmNm" + + "LXNlbGYtbWFuYWdlZC1zdGFjay9gIGRpcmVjdG9yeToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxl" + + "bnYtbmFtZT4gaGVsbWZpbGUgZGVzdHJveQpgYGAKCiMjIyBEZWxldGUgbmFtZXNwYWNlcwoKYGBg" + + "YmFzaApmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlz" + + "IGVzcyBzaXMgbnZjZi11aSB2YXVsdC1zeXN0ZW07IGRvCiAga3ViZWN0bCBkZWxldGUgbmFtZXNw" + + "YWNlICIkbnMiIC0taWdub3JlLW5vdC1mb3VuZApkb25lCmBgYAoKIyMjIFZlcmlmeSBjbGVhbgoK" + + "YGBgYmFzaAprdWJlY3RsIGdldCBucyB8IGdyZXAgLUUgJyhjYXNzYW5kcmF8bmF0c3x2YXVsdHxu" + + "dmNmfGFwaS1rZXlzfGVzc3xzaXMpJwojIFNob3VsZCByZXR1cm4gZW1wdHkKYGBgCgojIyBPdmVy" + + "cmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzCgojIyMgRW52aXJvbm1lbnQgZmlsZSAobGltaXRlZCkK" + + "CldvcmtzIG9ubHkgZm9yIGtleXMgdGhhdCBgZ2xvYmFsLnlhbWwuZ290bXBsYCBwcm9wYWdhdGVz" + + "IChlLmcuLCBgY2Fzc2FuZHJhLnJlcGxpY2FDb3VudGAsIGBnbG9iYWwuc3RvcmFnZUNsYXNzYCwg" + + "YGdsb2JhbC5pbWFnZWApLgoKIyMjIFJlbGVhc2UgdmFsdWVzIGJsb2NrIChhbnkgY2hhcnQgdmFs" + + "dWUpCgpFZGl0IHRoZSByZWxlYXNlIGluIGBoZWxtZmlsZS5kLyoueWFtbC5nb3RtcGxgIGFuZCBh" + + "ZGQgYSBgdmFsdWVzOmAgYmxvY2suIEluIHRoZSBleGFtcGxlcyBiZWxvdywgYDxwcml2YXRlLXZh" + + "bHVlcz5gIHJlZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxl" + + "IHN0YWNrIHJvb3QuCgpgYGB5YW1sCi0gbmFtZTogY2Fzc2FuZHJhCiAgdmVyc2lvbjogMC44LjAK" + + "ICBjb25kaXRpb246IGNhc3NhbmRyYS5lbmFibGVkCiAgbmFtZXNwYWNlOiBjYXNzYW5kcmEtc3lz" + + "dGVtCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3Rt" + + "cGwKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5W" + + "IiB9fS1zZWNyZXRzLnlhbWwKICAgIC0gY2Fzc2FuZHJhOgogICAgICAgIHJlc291cmNlczoKICAg" + + "ICAgICAgIGxpbWl0czoKICAgICAgICAgICAgY3B1OiAiOCIKICAgICAgICAgICAgbWVtb3J5OiA4" + + "MTkyTWkKICAgICAgICAgIHJlcXVlc3RzOgogICAgICAgICAgICBjcHU6ICIyIgogICAgICAgICAg" + + "ICBtZW1vcnk6IDQwOTZNaQpgYGAKCllBTUwgbWVyZ2UgZ290Y2hhOiBXaGVuIGEgcmVsZWFzZSB1" + + "c2VzIGA8PDogKmRlcGVuZGVuY3lgIG9yIGBpbmhlcml0YCwgc3BlY2lmeWluZyBgdmFsdWVzOmAg" + + "cmVwbGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QuIFlvdSBtdXN0IHJlLWluY2x1ZGUg" + + "YGdsb2JhbC55YW1sLmdvdG1wbGAgYW5kIHRoZSBzZWNyZXRzIGZpbGUuCgojIyMgUHJldmlldyBh" + + "bmQgYXBwbHkgYSBzaW5nbGUgcmVsZWFzZQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVs" + + "bWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSAgIyBQcmV2aWV3CkhFTE1G" + + "SUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMgICAg" + + "ICAjIEFwcGx5CmBgYAoKIyMgSW1hZ2UgUHVsbCBTZWNyZXRzCgpUaGVyZSBhcmUgdGhyZWUgZGlz" + + "dGluY3QgY3JlZGVudGlhbCB0eXBlcy4gRG8gbm90IGNvbmZsYXRlIHRoZW0sIGFuZCBtaW5kIHRo" + + "ZQpmb3JtYXQgcnVsZSBiZWxvdyAodHdvIG9mIHRoZW0gZmFpbCBldmVuIHdpdGggdGhlIGNvcnJl" + + "Y3Qga2V5IGlmIHRoZSBmb3JtYXQgaXMgd3JvbmcpOgoKfCB8IENvbnRyb2wgUGxhbmUgUHVsbCBT" + + "ZWNyZXRzIHwgQVBJIEJvb3RzdHJhcCBSZWdpc3RyeSBDcmVkcyB8IFNpZGVjYXIgSW1hZ2UtUHVs" + + "bCBTZWNyZXQgfAp8LS0tfC0tLXwtLS18LS0tfAp8IFB1cnBvc2UgfCBLOHMgcHVsbHMgTlZDRiBz" + + "ZXJ2aWNlIGltYWdlcyB8IG52Y2YtYXBpIHZhbGlkYXRlcyB0aGUgdXNlciBmdW5jdGlvbiBpbWFn" + + "ZSBhdCBgZnVuY3Rpb24gY3JlYXRlYCB8IG52Y2YtYXBpIHB1bGxzIHRoZSBwbGF0Zm9ybSBzaWRl" + + "Y2FycyBpbmplY3RlZCBpbnRvIGV2ZXJ5IHdvcmtlciBwb2QgfAp8IFdoZXJlIHwgSzhzIGBkb2Nr" + + "ZXItcmVnaXN0cnlgIFNlY3JldHMgKyBLeXZlcm5vIENsdXN0ZXJQb2xpY3kgfCBgPHByaXZhdGUt" + + "dmFsdWVzPi88ZW52Pi1zZWNyZXRzLnlhbWxgIChhY2NvdW50LWJvb3RzdHJhcCkgfCBgTlZDRl9B" + + "UElfU0lERUNBUlNfSU1BR0VfUFVMTF9TRUNSRVRgIGluIGA8ZW52Pi1zZWNyZXRzLnlhbWxgIC0+" + + "IE9wZW5CYW8gYHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0" + + "YCAoZmllbGQgYHNlY3JldGApIHwKfCBGb3JtYXQgfCBzdGFuZGFyZCBgLmRvY2tlcmNvbmZpZ2pz" + + "b25gIChrdWJlY3RsIGJ1aWxkcyBpdCBmb3IgeW91KSB8IGBiYXNlNjQoIiRvYXV0aHRva2VuOjxr" + + "ZXk+IilgIHwgYGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAgfAoKPiBOb3RlOiB0aGUgYWNj" + + "b3VudC1ib290c3RyYXAgY3JlZCBhbmQgdGhlIHNpZGVjYXIgc2VjcmV0IGFyZSBOT1QgYQo+IGRv" + + "Y2tlcmNvbmZpZ2pzb24uIFRoZSBzZWNyZXRzIHRlbXBsYXRlIHNoaXBzIHRoZSBwbGFjZWhvbGRl" + + "cgo+IGBSRVBMQUNFX1dJVEhfQkFTRTY0X0RPQ0tFUl9DUkVERU5USUFMYCwgd2hpY2ggcmVhZHMg" + + "YXMgImJhc2U2NCBvZiBhIGRvY2tlcmNvbmZpZ2pzb24uIgo+IEl0IGlzbid0LiBCb3RoIHZhbHVl" + + "cyBhcmUgY29uc3VtZWQgYXMgYSByYXcgZG9ja2VyIGBhdXRoYCBzdHJpbmc6IG52Y2YtYXBpIHRh" + + "a2VzIHRoZQo+IHZhbHVlIHZlcmJhdGltIGFuZCBkcm9wcyBpdCBpbnRvIHRoZSBgYXV0aGAgZmll" + + "bGQgb2YgdGhlIGRvY2tlcmNvbmZpZyBpdCBidWlsZHMuIFNvIHRoZQo+IHZhbHVlIG11c3QgYmUg" + + "YGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAsIGUuZy4gYHByaW50ZiAnJG9hdXRodG9rZW46" + + "JXMnICIkS0VZIiB8IG9wZW5zc2wgYmFzZTY0IC1BYCwKPiBub3QgYGJhc2U2NCg8ZG9ja2VyY29u" + + "ZmlnanNvbj4pYC4KPgo+IC0gV3JvbmcgYWNjb3VudC1ib290c3RyYXAgdmFsdWU6IGBmdW5jdGlv" + + "biBjcmVhdGVgIHJldHVybnMKPiAgICBgNDAwICJtdXN0IGJlIGJhc2U2NCBlbmNvZGVkIHVzZXJu" + + "YW1lOnBhc3N3b3JkIGZvcm1hdCJgLgo+IC0gV3Jvbmcgc2lkZWNhciB2YWx1ZTogZXZlcnkgd29y" + + "a2VyJ3Mgc2lkZWNhciBwdWxsIGdldHMgYSBtYWxmb3JtZWQgY3JlZGVudGlhbCBhbmQKPiAgICBg" + + "NDAzYHMsIHJlZ2FyZGxlc3Mgb2Ygd2hpY2gga2V5IGlzIGluc2lkZS4gVGhlIHN5bXB0b20gbG9v" + + "a3MgbGlrZSBhIGJhZCBvciB3cm9uZy1vcmcKPiAgICBrZXksIGJ1dCB0aGUga2V5IGlzIGZpbmUg" + + "YW5kIHRoZSBlbmNvZGluZyBpcyB0aGUgYnVnLiBUbyByZXBhaXIgYW4gYWxyZWFkeS1pbnN0YWxs" + + "ZWQKPiAgICBzdGFjayB3aXRob3V0IGEgZnVsbCByZS1zeW5jOgo+Cj4gICAgYGBgYmFzaAo+ICAg" + + "IEFVVEg9JChwcmludGYgJyRvYXV0aHRva2VuOiVzJyAiJEtFWSIgfCBvcGVuc3NsIGJhc2U2NCAt" + + "QSkKPiAgICBiYW8ga3YgcHV0IHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1" + + "bGwtc2VjcmV0IHNlY3JldD0iJEFVVEgiCj4gICAgIyBpZiBOVklESUEgQ2xvdWQgVGFza3MgaXMg" + + "ZW5hYmxlZCwgcmVwZWF0IGZvciBzZXJ2aWNlcy9udmN0LWFwaS9rdi9zaWRlY2Fycy9pbWFnZS1w" + + "dWxsLXNlY3JldAo+ICAgIGt1YmVjdGwgcm9sbG91dCByZXN0YXJ0IC1uIG52Y2YgZGVwbG95L252" + + "Y2YtYXBpICAgIyBwaWNrcyB1cCB0aGUgbmV3IHNpZGVjYXIgY3JlZAo+ICAgIGBgYAo+Cj4gTm90" + + "ZSAobXVsdGktb3JnKTogd2hlbiBwdWxsaW5nIGZyb20gTkdDIChub3QgYSBtaXJyb3IpLCB0aGUg" + + "dXNlciBmdW5jdGlvbiBpbWFnZSBhbmQKPiB0aGUgcGxhdGZvcm0gc2lkZWNhcnMgb2Z0ZW4gbGl2" + + "ZSBpbiBkaWZmZXJlbnQgbnZjci5pbyBvcmdzLCBlYWNoIG5lZWRpbmcgYSBkaWZmZXJlbnQKPiBr" + + "ZXksIHNvIHRoZSBhY2NvdW50LWJvb3RzdHJhcCBjcmVkIChmdW5jdGlvbiBpbWFnZSkgYW5kIHRo" + + "ZSBzaWRlY2FyIHNlY3JldCAoc2lkZWNhcnMpCj4gYXJlIGZyZXF1ZW50bHkgdHdvIGRpZmZlcmVu" + + "dCBrZXlzLiBNaXJyb3JpbmcgZXZlcnl0aGluZyBpbnRvIGEgc2luZ2xlIHJlZ2lzdHJ5IHRoZQo+" + + "IGNsdXN0ZXIgYXV0aGVudGljYXRlcyB0byBhdXRvbWF0aWNhbGx5IGNvbGxhcHNlcyB0aGlzIHRv" + + "IG9uZSBjcmVkZW50aWFsIHBhdGguCgojIyMgQ29uZmlndXJpbmcgd2l0aCBLeXZlcm5vIChyZWNv" + + "bW1lbmRlZCkKClVzZSBhIEt5dmVybm8gbXV0YXRpbmcgYWRtaXNzaW9uIHBvbGljeSB0byBhdXRv" + + "bWF0aWNhbGx5IGluamVjdCBgaW1hZ2VQdWxsU2VjcmV0c2AgaW50byBhbGwgcG9kcyBpbiBOVkNG" + + "IG5hbWVzcGFjZXMuIFRoaXMgd29ya3MgdW5pZm9ybWx5IGZvciBhbGwgY2hhcnRzIC0tIG5vIHBl" + + "ci1jaGFydCBjb25maWd1cmF0aW9uIG9yIGhlbG1maWxlIG1vZGlmaWNhdGlvbnMgbmVlZGVkLgoK" + + "YGBgYmFzaAojIDEuIEluc3RhbGwgS3l2ZXJubwpoZWxtIHJlcG8gYWRkIGt5dmVybm8gaHR0cHM6" + + "Ly9reXZlcm5vLmdpdGh1Yi5pby9reXZlcm5vLwpoZWxtIHJlcG8gdXBkYXRlCmhlbG0gaW5zdGFs" + + "bCBreXZlcm5vIGt5dmVybm8va3l2ZXJubyAtbiBreXZlcm5vIC0tY3JlYXRlLW5hbWVzcGFjZQoK" + + "IyAyLiBDcmVhdGUgcHVsbCBzZWNyZXQgaW4gZWFjaCBuYW1lc3BhY2UKZXhwb3J0IE5HQ19BUElf" + + "S0VZPSI8eW91ci1rZXk+Igpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBu" + + "dmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJl" + + "Y3RsIGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogICAgLS1kb2Nr" + + "ZXItc2VydmVyPW52Y3IuaW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBc" + + "CiAgICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5hbWVzcGFjZT0i" + + "JG5zIiBcCiAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0K" + + "ZG9uZQoKIyAzLiBBcHBseSB0aGUgS3l2ZXJubyBDbHVzdGVyUG9saWN5Cmt1YmVjdGwgYXBwbHkg" + + "LWYga3l2ZXJuby1pbWFnZXB1bGxzZWNyZXQtcG9saWN5LnlhbWwKYGBgCgpUaGUgcG9saWN5IG11" + + "dGF0ZXMgZXZlcnkgcG9kIGF0IGFkbWlzc2lvbiB0aW1lLCBhZGRpbmcgYGltYWdlUHVsbFNlY3Jl" + + "dHM6IFt7bmFtZTogbnZjci1jcmVkc31dYC4gVmVyaWZ5IHdpdGg6CgpgYGBiYXNoCmt1YmVjdGwg" + + "Z2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IC1vIGpzb25wYXRoPSd7LnNwZWMuaW1h" + + "Z2VQdWxsU2VjcmV0c30nCiMgU2hvdWxkIHNob3c6IFt7Im5hbWUiOiJudmNyLWNyZWRzIn1dCmBg" + + "YAoKTm90IG5lZWRlZCBpZiB1c2luZyBhIENTUCBidWlsdC1pbiBjcmVkZW50aWFsIGhlbHBlciAo" + + "ZS5nLiwgRUNSIHdpdGggSUFNIG5vZGUgcm9sZXMpLgoKRm9yIHRoZSBLeXZlcm5vIHBvbGljeSBZ" + + "QU1MIGFuZCBwdWxsIHNlY3JldCBjcmVhdGlvbiBzY3JpcHQsIHNlZSBbcmVmZXJlbmNlcy9wdWxs" + + "LXNlY3JldHMubWRdKHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKS4KCiMjIERlYnVnZ2luZwoK" + + "IyMjIFF1aWNrIHN0YXR1cyBjaGVjawoKYGBgYmFzaAprdWJlY3RsIGdldCBwb2RzIC1BIC1vIHdp" + + "ZGUgICAgICAgICAgICAgICAgICAgICAgICAjIEFsbCBwb2RzCmhlbG0gbGlzdCAtQSAgICAgICAg" + + "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFsbCBoZWxtIHJlbGVhc2VzCmt1YmVj" + + "dGwgZ2V0IGV2ZW50cyAtbiA8bnM+IC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAnICAjIFJlY2Vu" + + "dCBldmVudHMKYGBgCgojIyMgQ29tbW9uIGZhaWx1cmUgcGF0dGVybnMKCnwgU3ltcHRvbSB8IENh" + + "dXNlIHwgRml4IHwKfC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tfAp8IGBJbWFnZVB1bGxCYWNrT2Zm" + + "YCArIGA0MDEgVW5hdXRob3JpemVkYCB8IE1pc3Npbmcgb3Igd3JvbmcgcHVsbCBzZWNyZXQgfCBD" + + "aGVjayBzZWNyZXQgZXhpc3RzLCBjaGVjayBTQSBoYXMgaW1hZ2VQdWxsU2VjcmV0cyB8CnwgYElu" + + "aXQ6MC8xYCBzdHVjayBvbiBzZXJ2aWNlIHBvZHMgfCBWYXVsdC1hZ2VudCB3YWl0aW5nIGZvciBP" + + "cGVuQmFvIHwgQ2hlY2sgT3BlbkJhbyBwb2RzICsgbWlncmF0aW9uIGpvYiBzdGF0dXMgfAp8IGBJ" + + "bml0OjAvMWAgKyBgdmF1bHQtYWdlbnQtaW5pdGAgc2hvd3MgYGF1dGgvand0L2xvZ2luYCAtPiBg" + + "NDAwIC4uLiBubyBrbm93biBrZXkgc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlZCB0aGUgdG9rZW4gc2ln" + + "bmF0dXJlYCB8IE9wZW5CYW8gSldUIGF1dGggY29uZmlndXJlZCB3aXRoIGEgc3RhdGljIHB1Ymtl" + + "eSBpbnN0ZWFkIG9mIHRoZSBjbHVzdGVyJ3MgbGl2ZSBKV0tTIC0tIHRoZSBiYXNlIGRlZmF1bHQg" + + "YG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2VgLiBDb21t" + + "b24gb24gQUtTIC8gYW55IE9JREMtaXNzdWVyIGNsdXN0ZXIgfCBTZXQgYG9wZW5iYW8ubWlncmF0" + + "aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogdHJ1ZWAsIGRlbGV0ZSBqb2IgYG9wZW5iYW8t" + + "c2VydmVyLW1pZ3JhdGlvbnNgLCByZS1zeW5jIGBvcGVuYmFvLXNlcnZlcmAuIFNlZSBbcmVmZXJl" + + "bmNlcy9kZWJ1Z2dpbmcubWRdKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kKSAiSW5pdDowLzEgU3R1" + + "Y2siIGZpeCAjNC4gfAp8IGBPT01LaWxsZWRgIG9uIENhc3NhbmRyYSB8IERlZmF1bHQgcmVzb3Vy" + + "Y2VzIHRvbyBzbWFsbCB8IE92ZXJyaWRlIGBjYXNzYW5kcmEucmVzb3VyY2VzYCB2aWEgdmFsdWVz" + + "IGJsb2NrIHwKfCBEQi1iYWNrZWQgc2VydmljZXMgY3Jhc2gtbG9vcCBgQmFkIGNyZWRlbnRpYWxz" + + "YCBjb25uZWN0aW5nIHRvIENhc3NhbmRyYSB8IFNlY3JldHMgZmlsZSBzZXQgb25seSBgREVGQVVM" + + "VF9DQVNTQU5EUkFfUEFTU1dPUkRgOyBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHN0" + + "aWxsIGRlZmF1bHRzIHRvIGBjaEBuZzNtM2AgfCBTZXQgYGNhc3NhbmRyYS5zZXJ2aWNlUm9sZVBh" + + "c3N3b3JkYCBpbiB0aGUgc2VjcmV0cyBmaWxlIGVxdWFsIHRvIGBERUZBVUxUX0NBU1NBTkRSQV9Q" + + "QVNTV09SRGAsIHRoZW4gcmUtc3luYyBjYXNzYW5kcmEgKyB0aGUgREItYmFja2VkIHNlcnZpY2Vz" + + "IHwKfCBgUGVuZGluZ2AgcG9kcyB8IE5vZGUgc2VsZWN0b3IgbWlzbWF0Y2ggb3Igbm8gc3RvcmFn" + + "ZSBjbGFzcyB8IGBrdWJlY3RsIGRlc2NyaWJlIHBvZGAsIGNoZWNrIGxhYmVscyBhbmQgc3RvcmFn" + + "ZSB8CnwgSGVsbSByZWxlYXNlIGluIGBmYWlsZWRgIHN0YXRlIHwgRmlyc3QgaW5zdGFsbCBmYWls" + + "ZWQgcGFydHdheSB8IGBoZWxtZmlsZSBkZXN0cm95YCB0aGUgcmVsZWFzZSwgdGhlbiBgc3luY2Ag" + + "YWdhaW4gfAp8IEFjY291bnQgYm9vdHN0cmFwIHRpbWVvdXQgfCBXcm9uZyBiYXNlNjQgY3JlZGVu" + + "dGlhbHMgaW4gc2VjcmV0cyBmaWxlIHwgQ2hlY2sgYGt1YmVjdGwgbG9ncyBqb2IvbnZjZi1hcGkt" + + "YWNjb3VudC1ib290c3RyYXAgLW4gbnZjZmAgfAp8IGZ1bmN0aW9uIC8gYWNjb3VudCBjYWxscyBy" + + "ZXR1cm4gYDQwNCBVbmtub3duIGNsaWVudF9pZGAgfCBUaGUgYWNjb3VudC1ib290c3RyYXAgcG9z" + + "dC1pbnN0YWxsIGhvb2sgbmV2ZXIgcmFuOiB0aGUgYGFwaWAgcmVsZWFzZSBpbnN0YWxsIGZhaWxl" + + "ZCwgb3Igd2FzIHJlcGFpcmVkIHdpdGggbGl2ZSBwYXRjaGVzIGluc3RlYWQgb2YgYSBjbGVhbiBy" + + "ZS1zeW5jLCBzbyB0aGUgaG9vayAoYW5kIHRoZSBhY2NvdW50KSB3YXMgc2tpcHBlZCB8IFZlcmlm" + + "eSBhbmQgcmUtcnVuIHRoZSBob29rOyBzZWUgW1ZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAg" + + "cmFuXSgjdmVyaWZ5LXRoZS1hY2NvdW50LWJvb3RzdHJhcC1yYW4pIHwKfCBTZXJ2aWNlcyBmYWls" + + "IHRvIHJlYWQgdmF1bHQgc2VjcmV0czsgYHNlY3JldHMuanNvbmAgbm90IGZvdW5kIHwgVmF1bHQg" + + "cGF0aCBoYXJkY29kZWQgdG8gYC9ob21lL2FwcC92YXVsdC9gIGluIGBfaGVscGVycy50cGxgOyB0" + + "aGUgcnVudGltZSByZXNvbHZlcyB0aGUgbW91bnRlZCBwYXRoIHJlbGF0aXZlIHRvIHRoZSB3b3Jr" + + "aW5nIGRpcmVjdG9yeSBhbmQgZHJvcHMgdGhlIGxlYWRpbmcgYC9gIHwgT3ZlcnJpZGUgYHBvZEFu" + + "bm90YXRpb25zYCBhbmQgc2V0IGBKQVZBX1RPT0xfT1BUSU9OUzogIi1EdXNlci5kaXI9LyJgIGlu" + + "IHJlbGVhc2UgdmFsdWVzIHwKfCBOQVRTIGNvbm5lY3Rpb24gZmFpbHMgYXQgc3RhcnR1cDsgcGxh" + + "Y2VtZW50IHRhZyBtaXNtYXRjaCB8IE5BVFMgc2VydmVyIHRhZ3MgaGFyZGNvZGVkIHRvIGBkYzpu" + + "Y3BgOyBhcHAgZGVyaXZlcyB0YWcgZnJvbSBgQVdTX1JFR0lPTmAgKGUuZy4sIGB1cy1nb3Ytd2Vz" + + "dC0xYCkgfCBTZXQgYEFXU19SRUdJT049bmNwYCBhbmQgYE5WQ0ZfQVdTX1JFR0lPTj1uY3BgIGlu" + + "IGVudiBjb25maWcgfAoKIyMjIFZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAgcmFuCgpUaGUg" + + "ZGVmYXVsdCBhY2NvdW50IGlzIGNyZWF0ZWQgYnkgYSAqKmBwb3N0LWluc3RhbGxgIGhvb2sgb24g" + + "dGhlIGBhcGlgIHJlbGVhc2UqKgooYGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcGAgaW4g" + + "YG52Y2ZgKS4gQmVjYXVzZSBpdCBpcyBhIHBvc3QtaW5zdGFsbCBob29rLCBpdCBvbmx5CmZpcmVz" + + "IG9uIGEgc3VjY2Vzc2Z1bCBgYXBpYCBpbnN0YWxsLiBJZiB0aGF0IGluc3RhbGwgZmFpbGVkIGFu" + + "ZCB5b3UgcmVwYWlyZWQgaXQgd2l0aCBsaXZlCnBhdGNoZXMgKHJhdGhlciB0aGFuIGEgY2xlYW4g" + + "cmUtc3luYyksIHRoZSBob29rIG5ldmVyIHJ1bnMsIG5vIGFjY291bnQgaXMgY3JlYXRlZCwgYW5k" + + "CmV2ZXJ5IHN1YnNlcXVlbnQgZnVuY3Rpb24vYWNjb3VudCBjYWxsIHJldHVybnMgYSBjcnlwdGlj" + + "IGA0MDQgVW5rbm93biBjbGllbnRfaWRgIHdpdGgKbm90aGluZyBvYnZpb3VzbHkgd3JvbmcgaW4g" + + "dGhlIHJ1bm5pbmcgcG9kcy4KClZlcmlmeSBpdCByYW4gYWZ0ZXIgdGhlIGZpcnN0IHN5bmM6Cgpg" + + "YGBiYXNoCmt1YmVjdGwgZ2V0IGpvYiAtbiBudmNmIG52Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFw" + + "IFwKICAtbyBqc29ucGF0aD0ney5zdGF0dXMuc3VjY2VlZGVkfScgICAjIGV4cGVjdCAxCmBgYAoK" + + "SWYgdGhlIGpvYiBpcyBhYnNlbnQgb3IgYDBgLCByZS1ydW4gaXQgYnkgcmUtc3luY2luZyB0aGUg" + + "YGFwaWAgcmVsZWFzZSBzbyB0aGUgaG9vayBmaXJlcwphZ2FpbiAoZGVsZXRlIHRoZSBwcmlvciBq" + + "b2IgZmlyc3QgaWYgaXQgbGluZ2VycyBpbiBhIGNvbXBsZXRlZC9mYWlsZWQgc3RhdGUgYW5kIGJs" + + "b2NrcyB0aGUKaG9vayk6CgpgYGBiYXNoCmt1YmVjdGwgZGVsZXRlIGpvYiAtbiBudmNmIG52Y2Yt" + + "YXBpLWFjY291bnQtYm9vdHN0cmFwIC0taWdub3JlLW5vdC1mb3VuZApIRUxNRklMRV9FTlY9PGVu" + + "dj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWFwaSBzeW5jCmt1YmVjdGwgbG9ncyAtbiBudmNm" + + "IGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcCAgICMgY29uZmlybSB0aGUgYWNjb3VudCB3" + + "YXMgY3JlYXRlZApgYGAKCiMjIEFkZGl0aW9uYWwgUmVzb3VyY2VzCgotIEluc3RhbGxhdGlvbjog" + + "W2V4YW1wbGVzLm1kXShleGFtcGxlcy5tZCksIHRoZSBbQ1NQIEVuZC10by1FbmQgRXhhbXBsZV0o" + + "aHR0cHM6Ly9kb2NzLm52aWRpYS5jb20vbnZjZi92MC42LjAtcmMvY3NwLWVuZC10by1lbmQtZXhh" + + "bXBsZSksIGFuZCBbc3BsaXQgY29tcHV0ZS1wbGFuZSB3b3JrZmxvd3NdKHJlZmVyZW5jZXMvY29t" + + "cHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpCi0gT3BlcmF0aW9uczogW0hlbG1maWxlIHN0cnVj" + + "dHVyZV0ocmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWQpLCBbcHVsbCBzZWNyZXRzXShy" + + "ZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCksIGFuZCBbZGVidWdnaW5nXShyZWZlcmVuY2VzL2Rl" + + "YnVnZ2luZy5tZCkKCkFmdGVyIGRlcGxveW1lbnQsIHVzZSB0aGUgYG52Y2Ytc2VsZi1tYW5hZ2Vk" + + "LWNsaWAgc2tpbGwgdG8gY3JlYXRlIGZ1bmN0aW9ucywgY3JlYXRlIHRhc2tzLCBtYW5hZ2UgQVBJ" + + "IGtleXMsIGFuZCBpbnZva2UgZW5kcG9pbnRzLgpQSwcIEcMUk0liAABJYgAAUEsDBBQACAAAAAAA" + + "IQAAAAAAAAAAAAAAAAA0AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXZh" + + "bHMvZXZhbHMuanNvblVUBQABAKbOElsKICB7CiAgICAiaWQiOiAiRzEtdmFsaWRhdGUtdG9vbC12" + + "ZXJzaW9ucyIsCiAgICAicXVlc3Rpb24iOiAiSW5zdGFsbCB0aGUgTlZDRiBzZWxmLW1hbmFnZWQg" + + "c3RhY2sgb24gbXkgQVdTIEVLUyBjbHVzdGVyIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNm" + + "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdl" + + "bnQncyBmaXJzdCBvcGVyYXRpb25hbCBzdGVwIGFmdGVyIHJlYWRpbmcgdGhlIHNraWxsIHdhcyB0" + + "byB2YWxpZGF0ZSBhbGwgcmVxdWlyZWQgdG9vbCB2ZXJzaW9uczogaGVsbWZpbGUgKG11c3QgYmUg" + + "MS4xLngsIG5vdCAxLjIuMCksIGhlbG0gKD49IDMuMTIpLCBoZWxtLWRpZmYgcGx1Z2luICg+PSAz" + + "LjExKSwgYW5kIGt1YmVjdGwgKGNsaWVudCB3aXRoaW4gMSBtaW5vciBvZiBjbHVzdGVyKS4gSXQg" + + "ZGlkIG5vdCBwcm9jZWVkIHRvIGhlbG1maWxlIHN5bmMgdW50aWwgYWxsIHZlcnNpb25zIHdlcmUg" + + "dmFsaWRhdGVkLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQg" + + "cmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0" + + "YWtpbmcgYW55IGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtZmlsZSAtLXZlcnNp" + + "b24nIGFuZCB2ZXJpZmllZCBpdCBpcyAxLjEueCAobm90IDEuMi4wLCB3aGljaCByZW1vdmVkIHNl" + + "cXVlbnRpYWwgbW9kZSkiLAogICAgICAiVGhlIGFnZW50IHJhbiAnaGVsbSB2ZXJzaW9uJyBhbmQg" + + "dmVyaWZpZWQgaXQgaXMgPj0gMy4xMiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHBsdWdp" + + "biBsaXN0JyBhbmQgdmVyaWZpZWQgaGVsbS1kaWZmID49IDMuMTEgaXMgaW5zdGFsbGVkIiwKICAg" + + "ICAgIlRoZSBhZ2VudCByYW4gJ2t1YmVjdGwgdmVyc2lvbicgdG8gY2hlY2sgY2xpZW50L3NlcnZl" + + "ciB2ZXJzaW9uIGNvbXBhdGliaWxpdHkiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgcHJvY2Vl" + + "ZCB0byBoZWxtZmlsZSBzeW5jIHVudGlsIGFsbCB2ZXJzaW9uIGNoZWNrcyBwYXNzZWQiCiAgICBd" + + "CiAgfSwKICB7CiAgICAiaWQiOiAiRzItdGVtcGxhdGUtYmVmb3JlLXN5bmMiLAogICAgInF1ZXN0" + + "aW9uIjogIlF1aWNrLCBqdXN0IHJ1biBoZWxtZmlsZSBzeW5jIGZvciBteSBOVkNGIHN0YWNrLCBz" + + "a2lwIGFsbCB0aGUgY2hlY2tzIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFu" + + "YWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJEZXNwaXRlIHRoZSB1c2Vy" + + "IGFza2luZyB0byBza2lwIGNoZWNrcywgdGhlIGFnZW50IHN0aWxsIHJhbiBoZWxtZmlsZSB0ZW1w" + + "bGF0ZSB0byBwcmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0cyBiZWZvcmUgcnVubmluZyBoZWxtZmls" + + "ZSBzeW5jLiBJdCBleHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAgaXMgaW1wb3J0YW50IGFu" + + "ZCBkaWQgbm90IGJsaW5kbHkgZXhlY3V0ZSBzeW5jLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3Ii" + + "OiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0" + + "aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4g" + + "J2hlbG1maWxlIHRlbXBsYXRlJyBvciAnaGVsbWZpbGUgLS1zZWxlY3RvciAuLi4gdGVtcGxhdGUn" + + "IHRvIHByZXZpZXcgbWFuaWZlc3RzIGJlZm9yZSBzeW5jIiwKICAgICAgIlRoZSBhZ2VudCBkaWQg" + + "bm90IGJsaW5kbHkgcnVuICdoZWxtZmlsZSBzeW5jJyB3aXRob3V0IGEgdGVtcGxhdGUgcHJldmll" + + "dyBzdGVwIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAg" + + "aXMgaW1wb3J0YW50IGV2ZW4gd2hlbiBhc2tlZCB0byBza2lwIGl0IgogICAgXQogIH0sCiAgewog" + + "ICAgImlkIjogIkc1LWRyeXJ1bi1iZWZvcmUtY2xlYW51cCIsCiAgICAicXVlc3Rpb24iOiAiTlZD" + + "RiBuYW1lc3BhY2VzIGFyZSBzdHVjayBpbiBUZXJtaW5hdGluZyBzdGF0ZS4gQ2xlYW4gdGhlbSB1" + + "cC4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + + "biIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoZSBzdHVjayBu" + + "YW1lc3BhY2VzIHdlcmUgY2F1c2VkIGJ5IGZpbmFsaXplcnMgb24gTlZDRkJhY2tlbmQgY3VzdG9t" + + "IHJlc291cmNlcy4gSXQgcmVtb3ZlZCBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3Vy" + + "Y2VzIGZpcnN0LCB0aGVuIGNsZWFyZWQgbmFtZXNwYWNlIGZpbmFsaXplcnMgdG8gZm9yY2UtZGVs" + + "ZXRlIHRoZSBzdHVjayBuYW1lc3BhY2VzLiBJdCBvbmx5IHRhcmdldGVkIE5WQ0YtbWFuYWdlZCBu" + + "YW1lc3BhY2VzIChudmNhLW9wZXJhdG9yLCBudmNmLWJhY2tlbmQpIGFuZCBkaWQgbm90IHRvdWNo" + + "IG90aGVyIGNsdXN0ZXIgcmVzb3VyY2VzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAg" + "ICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNL" + - "SUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBhdXRob3JlZCBz" + - "ZXBhcmF0ZSBlbnZpcm9ubWVudHMvPGVudj4ueWFtbCBmaWxlcyB1bmRlciBkZXBsb3kvc3RhY2tz" + - "L3NlbGYtbWFuYWdlZCBhbmQgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUiLAogICAg" + - "ICAiVGhlIGFnZW50IGluc3RhbGxlZCB0aGUgY29udHJvbCBwbGFuZSBiZWZvcmUgcmVnaXN0ZXJp" + - "bmcgb3IgaW5zdGFsbGluZyB0aGUgY29tcHV0ZSBwbGFuZSIsCiAgICAgICJUaGUgYWdlbnQgY29u" + - "ZmlndXJlZCBiYXNlX2h0dHBfdXJsLCBpbnZva2VfdXJsLCBiYXNlX2dycGNfdXJsLCBhcGlfa2V5" + - "c19zZXJ2aWNlX3VybCwgaWNtc191cmwsIGFwaV9ob3N0LCBhcGlfa2V5c19ob3N0LCBpbnZva2Vf" + - "aG9zdCwgYW5kIGljbXNfaG9zdCBmb3IgdGhlIGJhcmUgR2F0ZXdheSIsCiAgICAgICJUaGUgYWdl" + - "bnQgdXNlZCAnbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSByZWdpc3Rl" + - "ci1jbHVzdGVyJyB3aXRoIENMVVNURVJfTkFNRSwgTkNBX0lELCBDTFVTVEVSX1JFR0lPTiwgSUNN" + - "U19VUkwsIGFuZCBLVUJFQ09ORklHX0ZJTEU9Y29tcHV0ZS55YW1sIiwKICAgICAgIlRoZSBhZ2Vu" + - "dCB1c2VkICdtYWtlIC1DIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGluc3RhbGwn" + - "IHdpdGggQ0xVU1RFUl9OQU1FLCBIRUxNRklMRV9FTlYsIGFuZCBLVUJFQ09ORklHX0ZJTEU9Y29t" + - "cHV0ZS55YW1sIiwKICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCBJQ01TX1VSTCBtYXBzIG9u" + - "bHkgdG8gLS1pY21zLXVybCwgY29uZmlnIGljbXNfaG9zdCBzdXBwbGllcyB0aGUgSG9zdCBoZWFk" + - "ZXIsIHRoZXJlIGlzIG5vIC0taWNtcy1ob3N0IE1ha2Ugb3IgQ0xJIGZsYWcsIGFuZCByZWdpc3Ry" + - "YXRpb24gZGlzY292ZXJzIE9JREMgYW5kIEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0IiwK" + - "ICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHJlcXVpcmUgYSBjb250cm9sLXBsYW5lIHByb2ZpbGUg" + - "Zm9yIHRoaXMgZmxvdyBhbmQgZGlkIG5vdCBtaXggaW4gQ0xJIHByb2ZpbGUgY29tbWFuZHMiCiAg" + - "ICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzctYm90aC1kb2NrZXItaGVsbS1hdXRoIiwKICAgICJx" + - "dWVzdGlvbiI6ICJBdXRoZW50aWNhdGUgdG8gTkdDIGZvciBOVkNGIGhlbG1maWxlIGRlcGxveW1l" + - "bnQiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + - "biIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCByYW4gYm90aCBkb2NrZXIgbG9naW4g" + - "YW5kIGhlbG0gcmVnaXN0cnkgbG9naW4gZm9yIG52Y3IuaW8uIEl0IGV4cGxhaW5lZCB0aGF0IGJv" + - "dGggYXJlIHJlcXVpcmVkIGJlY2F1c2UgaGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0" + - "byBwdWxsIE9DSSBjaGFydHMsIHNvIGRvY2tlciBsb2dpbiBhbG9uZSBpcyBpbnN1ZmZpY2llbnQu" + - "IiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBu" + - "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rp" + - "b24iLAogICAgICAiVGhlIGFnZW50IHJhbiAnZG9ja2VyIGxvZ2luIG52Y3IuaW8nIHdpdGggJG9h" + - "dXRodG9rZW4gdXNlcm5hbWUgYW5kIE5HQ19BUElfS0VZIHBhc3N3b3JkIiwKICAgICAgIlRoZSBh" + - "Z2VudCByYW4gJ2hlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbycgd2l0aCAkb2F1dGh0b2tlbiB1" + - "c2VybmFtZSBhbmQgTkdDX0FQSV9LRVkgcGFzc3dvcmQiLAogICAgICAiVGhlIGFnZW50IGV4cGxh" + - "aW5lZCB0aGF0IGJvdGggYXJlIHJlcXVpcmVkIGJlY2F1c2UgaGVsbWZpbGUgdXNlcyBoZWxtIChu" + - "b3QgZG9ja2VyKSB0byBwdWxsIE9DSSBjaGFydHMiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3Qg" + - "cHJvdmlkZSBvbmx5IG9uZSBvZiB0aGUgdHdvIGF1dGhlbnRpY2F0aW9uIGNvbW1hbmRzIgogICAg" + - "XQogIH0sCiAgewogICAgImlkIjogIkc5LW1pc3NpbmctYnVuZGxlIiwKICAgICJxdWVzdGlvbiI6" + - "ICJSdW4gaGVsbWZpbGUgc3luYyBmb3IgTlZDRiBpbiBteSBjdXJyZW50IGRpcmVjdG9yeSIsCiAg" + - "ICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAg" + - "ICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGF0dGVtcHRlZCB0byB2ZXJpZnkgdGhlIGJ1bmRs" + - "ZSBzdHJ1Y3R1cmUgKGhlbG1maWxlLmQvLCBlbnZpcm9ubWVudHMvLCBzZWNyZXRzLywgZ2xvYmFs" + - "LnlhbWwuZ290bXBsKSBhbmQgd2hlbiBmaWxlcyB3ZXJlIG5vdCBmb3VuZCwgc3RvcHBlZCBhbmQg" + - "aW5zdHJ1Y3RlZCB0aGUgdXNlciB0byBleHRyYWN0IG9yIGxvY2F0ZSB0aGUgbnZjZi1zZWxmLW1h" + - "bmFnZWQtc3RhY2sgYnVuZGxlLiBJdCBkaWQgbm90IGF0dGVtcHQgdG8gcnVuIGhlbG1maWxlIHN5" + - "bmMgYWdhaW5zdCBhIG1pc3NpbmcgYnVuZGxlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBb" + - "CiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9u" + - "IFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBjaGVja2Vk" + - "IGZvciBleHBlY3RlZCBidW5kbGUgc3RydWN0dXJlIChoZWxtZmlsZS5kLywgZW52aXJvbm1lbnRz" + - "Lywgc2VjcmV0cy8sIGdsb2JhbC55YW1sLmdvdG1wbCkiLAogICAgICAiV2hlbiBidW5kbGUgZmls" + - "ZXMgd2VyZSBub3QgZm91bmQsIHRoZSBhZ2VudCBzdG9wcGVkIGFuZCBkaWQgbm90IGF0dGVtcHQg" + - "aGVsbWZpbGUgc3luYyIsCiAgICAgICJUaGUgYWdlbnQgaW5zdHJ1Y3RlZCB0aGUgdXNlciB0byBl" + - "eHRyYWN0IG9yIGxvY2F0ZSB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sgYnVuZGxlIgogICAg" + - "XQogIH0sCiAgewogICAgImlkIjogIlMxLWNsZWFuLWluc3RhbGxhdGlvbiIsCiAgICAicXVlc3Rp" + - "b24iOiAiUGVyZm9ybSBhIGNsZWFuIGluc3RhbGxhdGlvbiBvZiB0aGUgTlZDRiBzZWxmLW1hbmFn" + - "ZWQgc3RhY2sgb24gbXkgQVdTIEVLUyBjbHVzdGVyLiBNeSBlbnZpcm9ubWVudCBuYW1lIGlzICdz" + - "dGFnaW5nJy4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + - "bGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBjb21wbGV0ZWQgdGhlIGNv" + - "bnRyb2wtcGxhbmUgaW5zdGFsbGF0aW9uIGZpcnN0OiB2YWxpZGF0ZWQgdG9vbHMgYW5kIGJ1bmRs" + - "ZSBzdHJ1Y3R1cmUsIGNyZWF0ZWQgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIGluY2x1ZGluZyBj" + - "ZXJ0LW1hbmFnZXIsIGF1dGhlbnRpY2F0ZWQgdGhlIHJlZ2lzdHJpZXMsIHByZXZpZXdlZCwgZGVw" + - "bG95ZWQsIGFuZCBtb25pdG9yZWQgdGhlIGZvdXIgY29udHJvbC1wbGFuZSBwaGFzZXMuIEl0IHRo" + - "ZW4gc2VsZWN0ZWQgb25lIGRvY3VtZW50ZWQgaGFuZG9mZiBhbmQgcmVnaXN0ZXJlZCBhbmQgaW5z" + - "dGFsbGVkIHRoZSBjb21wdXRlIHBsYW5lIGFzIGEgc2VwYXJhdGUgc3RhY2sgd2l0aG91dCBtaXhp" + - "bmcgcHJvZmlsZSBhbmQgSGVsbWZpbGUgdmFsdWVzIGZsb3dzLiIsCiAgICAiZXhwZWN0ZWRfYmVo" + - "YXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5z" + - "dGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2Vu" + - "dCB2YWxpZGF0ZWQgdG9vbCB2ZXJzaW9ucyAoaGVsbWZpbGUsIGhlbG0sIGhlbG0tZGlmZiwga3Vi" + - "ZWN0bCkiLAogICAgICAiVGhlIGFnZW50IHZlcmlmaWVkIHRoZSBidW5kbGUgc3RydWN0dXJlIGV4" + - "aXN0cyIsCiAgICAgICJUaGUgYWdlbnQgY3JlYXRlZCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMg" + - "KGNhc3NhbmRyYS1zeXN0ZW0sIG5hdHMtc3lzdGVtLCBudmNmLCBhcGkta2V5cywgZXNzLCBzaXMs" + - "IHZhdWx0LXN5c3RlbSwgY2VydC1tYW5hZ2VyKSB3aXRob3V0IGFkZGluZyBjb21wdXRlLW9ubHkg" + - "bmFtZXNwYWNlcyIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdIRUxNRklMRV9FTlY9c3RhZ2luZyBo" + - "ZWxtZmlsZSB0ZW1wbGF0ZScgdG8gcHJldmlldyBiZWZvcmUgZGVwbG95aW5nIiwKICAgICAgIlRo" + - "ZSBhZ2VudCByYW4gJ0hFTE1GSUxFX0VOVj1zdGFnaW5nIGhlbG1maWxlIHN5bmMnIHRvIGRlcGxv" + - "eSIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSA0IGNvbnRyb2wtcGxhbmUgcGhhc2Vz" + - "IChkZXBlbmRlbmNpZXMsIHNlcnZpY2VzLCBpbmdyZXNzLCBvYnNlcnZhYmlsaXR5KSBhbmQgYXBw" + - "cm94aW1hdGUgd2FpdCB0aW1lcyIsCiAgICAgICJBZnRlciB0aGUgY29udHJvbCBwbGFuZSB3YXMg" + - "aGVhbHRoeSwgdGhlIGFnZW50IHJlZ2lzdGVyZWQgYW5kIGluc3RhbGxlZCB0aGUgc2VwYXJhdGUg" + - "Y29tcHV0ZS1wbGFuZSBzdGFjayB1c2luZyBleGFjdGx5IG9uZSBkb2N1bWVudGVkIGhhbmRvZmYi" + - "LAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgbWl4IGEgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBs" + - "YW5lIHByb2ZpbGUgd2l0aCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZsb3ciCiAgICBdCiAgfSwKICB7" + - "CiAgICAiaWQiOiAiUzMtY2xpLXByb2ZpbGUtd29ya2Zsb3ciLAogICAgInF1ZXN0aW9uIjogIlVz" + - "ZSBudmNmLWNsaSB0byBpbnN0YWxsIG15IGNvbnRyb2wgcGxhbmUgYW5kIHRoZW4gcmVnaXN0ZXIg" + - "YW5kIGluc3RhbGwgYSBzZXBhcmF0ZSBjb21wdXRlIGNsdXN0ZXIuIFNob3cgZXZlcnkgcmVxdWly" + - "ZWQgZ2xvYmFsIGZsYWcuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdl" + - "ZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZmlyc3QgcmFu" + - "IHRoZSBDTEkgY29udHJvbC1wbGFuZSBpbnN0YWxsIGFuZCByZXF1aXJlZCBpdHMgZ2VuZXJhdGVk" + - "IGNvbnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sLiBJdCB0aGVuIHNob3dlZCBjb21wbGV0ZSByZWdp" + - "c3RlciBhbmQgaW5zdGFsbCBjb21tYW5kcywgZWFjaCBpbmNsdWRpbmcgLS1jb25maWcsIC0tY29u" + - "dHJvbC1wbGFuZS1zdGFjaywgLS1jb21wdXRlLXBsYW5lLXN0YWNrLCAtLWVudiwgYW5kIC0tcGxh" + - "aW4gYmVmb3JlIHRoZSBjb21wdXRlLXBsYW5lIHN1YmNvbW1hbmQuIFJlZ2lzdHJhdGlvbiBjb25z" + - "dW1lZCB0aGUgcHJvZmlsZSBhbmQgcHJvZHVjZWQgdGhlIHZhbHVlcyBmaWxlIGNvbnN1bWVkIGJ5" + - "IGluc3RhbGwuIEl0IGRpZCBub3Qgc3dpdGNoIHRvIHRoZSBIZWxtZmlsZSB2YWx1ZXMgaGFuZG9m" + - "Zi4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhl" + - "IG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFj" + - "dGlvbiIsCiAgICAgICJUaGUgYWdlbnQgcmFuIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGluc3RhbGwg" + - "LS1jb250cm9sLXBsYW5lIGFuZCB2ZXJpZmllZCBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9v" + - "dXQvY29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWwgZXhpc3RzIiwKICAgICAgIlRoZSByZWdpc3Rl" + - "ciBjb21tYW5kIGluY2x1ZGVkIC0tY29uZmlnLCAtLWNvbnRyb2wtcGxhbmUtc3RhY2ssIC0tY29t" + - "cHV0ZS1wbGFuZS1zdGFjaywgLS1lbnYsIGFuZCAtLXBsYWluIiwKICAgICAgIlRoZSByZWdpc3Rl" + - "ciBjb21tYW5kIGluY2x1ZGVkIC0tY29udHJvbC1wbGFuZS1wcm9maWxlLCAtLWNsdXN0ZXItbmFt" + - "ZSwgLS1rdWJlLWNvbnRleHQsIC0tcmVnaW9uLCBhbmQgLS1vdXRwdXQiLAogICAgICAiVGhlIGlu" + - "c3RhbGwgY29tbWFuZCByZXBlYXRlZCAtLWNvbmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAt" + - "LWNvbXB1dGUtcGxhbmUtc3RhY2ssIC0tZW52LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgaW5z" + - "dGFsbCBjb21tYW5kIGluY2x1ZGVkIC0tdmFsdWVzLCAtLWt1YmUtY29udGV4dCwgYW5kIC0tY2x1" + - "c3Rlci1uYW1lIiwKICAgICAgIlRoZSBhZ2VudCBrZXB0IHRoZSBnZW5lcmF0ZWQgcHJvZmlsZSBh" + - "cyB0aGUgZW5kcG9pbnQgc291cmNlIGFuZCBkaWQgbm90IG1peCBpbiBIZWxtZmlsZSB2YWx1ZXMg" + - "cmVnaXN0cmF0aW9uIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlM0LW92ZXJyaWRlLWNhc3Nh" + - "bmRyYS1yZXNvdXJjZXMiLAogICAgInF1ZXN0aW9uIjogIkNhc3NhbmRyYSBwb2RzIGtlZXAgZ2V0" + - "dGluZyBPT01LaWxsZWQuIEluY3JlYXNlIG1lbW9yeSBsaW1pdHMgdG8gMTZHaS4iLAogICAgImV4" + - "cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3Jv" + - "dW5kX3RydXRoIjogIlRoZSBhZ2VudCBjYXB0dXJlZCB0aGUgYmFzZWxpbmUgd2l0aCBoZWxtZmls" + - "ZSB0ZW1wbGF0ZSwgdGhlbiBtb2RpZmllZCB0aGUgY2Fzc2FuZHJhIHJlbGVhc2Ugd2l0aCBpbmxp" + - "bmUgdmFsdWVzIHJlLWluY2x1ZGluZyBnbG9iYWwueWFtbC5nb3RtcGwgYW5kIHNlY3JldHMgaW4g" + - "dGhlIHZhbHVlcyBibG9jay4gSXQgd2FybmVkIGFib3V0IHRoZSBZQU1MIG1lcmdlIGdvdGNoYSBh" + - "bmQgcHJldmlld2VkIHRoZSBkaWZmIGJlZm9yZSBhcHBseWluZy4iLAogICAgImV4cGVjdGVkX2Jl" + - "aGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWlu" + - "c3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdl" + - "bnQgY2FwdHVyZWQgYmFzZWxpbmUgd2l0aCAnaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3Nh" + - "bmRyYSB0ZW1wbGF0ZSciLAogICAgICAiVGhlIGFnZW50IG1vZGlmaWVkIHRoZSByZWxlYXNlIHZh" + - "bHVlcyBibG9jayB0byBpbmNsdWRlIHJlc291cmNlIGxpbWl0cyB3aXRoIG1lbW9yeTogMTZHaSIs" + - "CiAgICAgICJUaGUgYWdlbnQgcmUtaW5jbHVkZWQgZ2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNy" + - "ZXRzIGZpbGUgaW4gdGhlIHZhbHVlczogYmxvY2sgKG5vdCBqdXN0IHRoZSBvdmVycmlkZSBhbG9u" + - "ZSkiLAogICAgICAiVGhlIGFnZW50IHdhcm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGE6" + - "IHNwZWNpZnlpbmcgdmFsdWVzOiByZXBsYWNlcyB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgbGlzdCBl" + - "bnRpcmVseSIsCiAgICAgICJUaGUgYWdlbnQgcHJldmlld2VkIHRoZSBjaGFuZ2Ugd2l0aCBoZWxt" + - "ZmlsZSB0ZW1wbGF0ZSBhbmQgZGlmZiBiZWZvcmUgYXBwbHlpbmcgd2l0aCBzeW5jIgogICAgXQog" + - "IH0sCiAgewogICAgImlkIjogIlM2LXNlbGVjdGl2ZS1zeW5jLWRlcGVuZGVuY2llcyIsCiAgICAi" + - "cXVlc3Rpb24iOiAiRGVwbG95IG9ubHkgdGhlIE5WQ0YgZGVwZW5kZW5jaWVzIC0tIE5BVFMsIENh" + - "c3NhbmRyYSwgYW5kIE9wZW5CYW8gLS0gZm9yIHRlc3RpbmciLAogICAgImV4cGVjdGVkX3NraWxs" + + "SUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBjb25maXJtZWQg" + + "YW5kIHVzZWQgdGhlIGNvbXB1dGUtcGxhbmUgY29udGV4dCBmb3IgYWxsIGNsZWFudXAgY29tbWFu" + + "ZHMiLAogICAgICAiVGhlIGFnZW50IHVzZWQga3ViZWN0bCB0byBwYXRjaCBOVkNGQmFja2VuZCBy" + + "ZXNvdXJjZXMgdG8gcmVtb3ZlIHRoZWlyIGZpbmFsaXplcnMiLAogICAgICAiVGhlIGFnZW50IHVz" + + "ZWQga3ViZWN0bCByZXBsYWNlIC0tcmF3IHRvIGNsZWFyIG5hbWVzcGFjZSBmaW5hbGl6ZXJzIG9u" + + "IHN0dWNrIG5hbWVzcGFjZXMiLAogICAgICAiVGhlIGFnZW50IG9ubHkgdGFyZ2V0ZWQgTlZDRi1t" + + "YW5hZ2VkIG5hbWVzcGFjZXMgKG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkgYW5kIGRpZCBu" + + "b3QgdG91Y2ggb3RoZXIgY2x1c3RlciByZXNvdXJjZXMiLAogICAgICAiVGhlIGFnZW50IGRpZCBu" + + "b3QganVtcCBkaXJlY3RseSB0byBuYW1lc3BhY2UgZGVsZXRpb24gd2l0aG91dCBmaXJzdCByZW1v" + + "dmluZyBmaW5hbGl6ZXJzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc2LWhlbG1maWxlLXNw" + + "bGl0LXdvcmtmbG93IiwKICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIGFuIE5WQ0YgY29udHJvbCBw" + + "bGFuZSBhbmQgYSBzZXBhcmF0ZSBFS1MgY29tcHV0ZSBwbGFuZSB1c2luZyB0aGUgSGVsbWZpbGUg" + + "c3RhY2tzLiBUaGUgY29tcHV0ZSBjbHVzdGVyIGt1YmVjb25maWcgaXMgY29tcHV0ZS55YW1sLiIs" + + "CiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwK" + + "ICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGtlcHQgdGhlIEhlbG1maWxlIHZhbHVlcyBm" + + "bG93IGluZGVwZW5kZW50IGZyb20gdGhlIENMSSBwcm9maWxlIGZsb3cuIEl0IGF1dGhvcmVkIHNl" + + "cGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZXMg" + + "cGx1cyBhIGJhcmUtR2F0ZXdheSBDTEkgY29uZmlnIHdpdGggVVJMIGFuZCBzY2hlbWUtbGVzcyBI" + + "b3N0IGZpZWxkcywgaW5zdGFsbGVkIHRoZSBjb250cm9sIHBsYW5lLCByYW4gdGhlIGNvbXB1dGUt" + + "cGxhbmUgTWFrZWZpbGUgcmVnaXN0ZXItY2x1c3RlciB0YXJnZXQgd2l0aCBJQ01TX1VSTCBhbmQg" + + "dGhlIGNvbXB1dGUga3ViZWNvbmZpZywgdGhlbiByYW4gdGhlIGNvbXB1dGUtcGxhbmUgaW5zdGFs" + + "bCB0YXJnZXQgd2l0aCB0aGUgc2FtZSBlbnZpcm9ubWVudCBhbmQga3ViZWNvbmZpZy4gSXQgcmVs" + + "aWVkIG9uIHJlZ2lzdHJhdGlvbiB0byBkaXNjb3ZlciBPSURDIGFuZCBKV0tTIGZyb20gdGhlIGNv" + + "bXB1dGUgY29udGV4dC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFn" + + "ZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZv" + + "cmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgYXV0aG9yZWQgc2VwYXJhdGUgZW52" + + "aXJvbm1lbnRzLzxlbnY+LnlhbWwgZmlsZXMgdW5kZXIgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFn" + + "ZWQgYW5kIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIiwKICAgICAgIlRoZSBhZ2Vu" + + "dCBpbnN0YWxsZWQgdGhlIGNvbnRyb2wgcGxhbmUgYmVmb3JlIHJlZ2lzdGVyaW5nIG9yIGluc3Rh" + + "bGxpbmcgdGhlIGNvbXB1dGUgcGxhbmUiLAogICAgICAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgYmFz" + + "ZV9odHRwX3VybCwgaW52b2tlX3VybCwgYmFzZV9ncnBjX3VybCwgYXBpX2tleXNfc2VydmljZV91" + + "cmwsIGljbXNfdXJsLCBhcGlfaG9zdCwgYXBpX2tleXNfaG9zdCwgaW52b2tlX2hvc3QsIGFuZCBp" + + "Y21zX2hvc3QgZm9yIHRoZSBiYXJlIEdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50IHVzZWQgJ21h" + + "a2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVnaXN0ZXItY2x1c3Rlcicg" + + "d2l0aCBDTFVTVEVSX05BTUUsIE5DQV9JRCwgQ0xVU1RFUl9SRUdJT04sIElDTVNfVVJMLCBhbmQg" + + "S1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFtbCIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnbWFr" + + "ZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBpbnN0YWxsJyB3aXRoIENMVVNU" + + "RVJfTkFNRSwgSEVMTUZJTEVfRU5WLCBhbmQgS1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFtbCIs" + + "CiAgICAgICJUaGUgYWdlbnQgc3RhdGVkIHRoYXQgSUNNU19VUkwgbWFwcyBvbmx5IHRvIC0taWNt" + + "cy11cmwsIGNvbmZpZyBpY21zX2hvc3Qgc3VwcGxpZXMgdGhlIEhvc3QgaGVhZGVyLCB0aGVyZSBp" + + "cyBubyAtLWljbXMtaG9zdCBNYWtlIG9yIENMSSBmbGFnLCBhbmQgcmVnaXN0cmF0aW9uIGRpc2Nv" + + "dmVycyBPSURDIGFuZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUgY29udGV4dCIsCiAgICAgICJUaGUg" + + "YWdlbnQgZGlkIG5vdCByZXF1aXJlIGEgY29udHJvbC1wbGFuZSBwcm9maWxlIGZvciB0aGlzIGZs" + + "b3cgYW5kIGRpZCBub3QgbWl4IGluIENMSSBwcm9maWxlIGNvbW1hbmRzIgogICAgXQogIH0sCiAg" + + "ewogICAgImlkIjogIkc3LWJvdGgtZG9ja2VyLWhlbG0tYXV0aCIsCiAgICAicXVlc3Rpb24iOiAi" + + "QXV0aGVudGljYXRlIHRvIE5HQyBmb3IgTlZDRiBoZWxtZmlsZSBkZXBsb3ltZW50IiwKICAgICJl" + + "eHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdy" + + "b3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgcmFuIGJvdGggZG9ja2VyIGxvZ2luIGFuZCBoZWxtIHJl" + + "Z2lzdHJ5IGxvZ2luIGZvciBudmNyLmlvLiBJdCBleHBsYWluZWQgdGhhdCBib3RoIGFyZSByZXF1" + + "aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kg" + + "Y2hhcnRzLCBzbyBkb2NrZXIgbG9naW4gYWxvbmUgaXMgaW5zdWZmaWNpZW50LiIsCiAgICAiZXhw" + + "ZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1h" + + "bmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAg" + + "IlRoZSBhZ2VudCByYW4gJ2RvY2tlciBsb2dpbiBudmNyLmlvJyB3aXRoICRvYXV0aHRva2VuIHVz" + + "ZXJuYW1lIGFuZCBOR0NfQVBJX0tFWSBwYXNzd29yZCIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdo" + + "ZWxtIHJlZ2lzdHJ5IGxvZ2luIG52Y3IuaW8nIHdpdGggJG9hdXRodG9rZW4gdXNlcm5hbWUgYW5k" + + "IE5HQ19BUElfS0VZIHBhc3N3b3JkIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCBi" + + "b3RoIGFyZSByZXF1aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikg" + + "dG8gcHVsbCBPQ0kgY2hhcnRzIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHByb3ZpZGUgb25s" + + "eSBvbmUgb2YgdGhlIHR3byBhdXRoZW50aWNhdGlvbiBjb21tYW5kcyIKICAgIF0KICB9LAogIHsK" + + "ICAgICJpZCI6ICJHOS1taXNzaW5nLWJ1bmRsZSIsCiAgICAicXVlc3Rpb24iOiAiUnVuIGhlbG1m" + + "aWxlIHN5bmMgZm9yIE5WQ0YgaW4gbXkgY3VycmVudCBkaXJlY3RvcnkiLAogICAgImV4cGVjdGVk" + + "X3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3Ry" + + "dXRoIjogIlRoZSBhZ2VudCBhdHRlbXB0ZWQgdG8gdmVyaWZ5IHRoZSBidW5kbGUgc3RydWN0dXJl" + + "IChoZWxtZmlsZS5kLywgZW52aXJvbm1lbnRzLywgc2VjcmV0cy8sIGdsb2JhbC55YW1sLmdvdG1w" + + "bCkgYW5kIHdoZW4gZmlsZXMgd2VyZSBub3QgZm91bmQsIHN0b3BwZWQgYW5kIGluc3RydWN0ZWQg" + + "dGhlIHVzZXIgdG8gZXh0cmFjdCBvciBsb2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNr" + + "IGJ1bmRsZS4gSXQgZGlkIG5vdCBhdHRlbXB0IHRvIHJ1biBoZWxtZmlsZSBzeW5jIGFnYWluc3Qg" + + "YSBtaXNzaW5nIGJ1bmRsZS4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhl" + + "IGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBi" + + "ZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBmb3IgZXhwZWN0" + + "ZWQgYnVuZGxlIHN0cnVjdHVyZSAoaGVsbWZpbGUuZC8sIGVudmlyb25tZW50cy8sIHNlY3JldHMv" + + "LCBnbG9iYWwueWFtbC5nb3RtcGwpIiwKICAgICAgIldoZW4gYnVuZGxlIGZpbGVzIHdlcmUgbm90" + + "IGZvdW5kLCB0aGUgYWdlbnQgc3RvcHBlZCBhbmQgZGlkIG5vdCBhdHRlbXB0IGhlbG1maWxlIHN5" + + "bmMiLAogICAgICAiVGhlIGFnZW50IGluc3RydWN0ZWQgdGhlIHVzZXIgdG8gZXh0cmFjdCBvciBs" + + "b2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrIGJ1bmRsZSIKICAgIF0KICB9LAogIHsK" + + "ICAgICJpZCI6ICJTMS1jbGVhbi1pbnN0YWxsYXRpb24iLAogICAgInF1ZXN0aW9uIjogIlBlcmZv" + + "cm0gYSBjbGVhbiBpbnN0YWxsYXRpb24gb2YgdGhlIE5WQ0Ygc2VsZi1tYW5hZ2VkIHN0YWNrIG9u" + + "IG15IEFXUyBFS1MgY2x1c3Rlci4gTXkgZW52aXJvbm1lbnQgbmFtZSBpcyAnc3RhZ2luZycuIiwK" + + "ICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAog" + + "ICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgY29tcGxldGVkIHRoZSBjb250cm9sLXBsYW5l" + + "IGluc3RhbGxhdGlvbiBmaXJzdDogdmFsaWRhdGVkIHRvb2xzIGFuZCBidW5kbGUgc3RydWN0dXJl" + + "LCBjcmVhdGVkIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNsdWRpbmcgY2VydC1tYW5hZ2Vy" + + "LCBhdXRoZW50aWNhdGVkIHRoZSByZWdpc3RyaWVzLCBwcmV2aWV3ZWQsIGRlcGxveWVkLCBhbmQg" + + "bW9uaXRvcmVkIHRoZSBmb3VyIGNvbnRyb2wtcGxhbmUgcGhhc2VzLiBJdCB0aGVuIHNlbGVjdGVk" + + "IG9uZSBkb2N1bWVudGVkIGhhbmRvZmYgYW5kIHJlZ2lzdGVyZWQgYW5kIGluc3RhbGxlZCB0aGUg" + + "Y29tcHV0ZSBwbGFuZSBhcyBhIHNlcGFyYXRlIHN0YWNrIHdpdGhvdXQgbWl4aW5nIHByb2ZpbGUg" + + "YW5kIEhlbG1maWxlIHZhbHVlcyBmbG93cy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwog" + + "ICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBT" + + "S0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgdmFsaWRhdGVk" + + "IHRvb2wgdmVyc2lvbnMgKGhlbG1maWxlLCBoZWxtLCBoZWxtLWRpZmYsIGt1YmVjdGwpIiwKICAg" + + "ICAgIlRoZSBhZ2VudCB2ZXJpZmllZCB0aGUgYnVuZGxlIHN0cnVjdHVyZSBleGlzdHMiLAogICAg" + + "ICAiVGhlIGFnZW50IGNyZWF0ZWQgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIChjYXNzYW5kcmEt" + + "c3lzdGVtLCBuYXRzLXN5c3RlbSwgbnZjZiwgYXBpLWtleXMsIGVzcywgc2lzLCB2YXVsdC1zeXN0" + + "ZW0sIGNlcnQtbWFuYWdlcikgd2l0aG91dCBhZGRpbmcgY29tcHV0ZS1vbmx5IG5hbWVzcGFjZXMi" + + "LAogICAgICAiVGhlIGFnZW50IHJhbiAnSEVMTUZJTEVfRU5WPXN0YWdpbmcgaGVsbWZpbGUgdGVt" + + "cGxhdGUnIHRvIHByZXZpZXcgYmVmb3JlIGRlcGxveWluZyIsCiAgICAgICJUaGUgYWdlbnQgcmFu" + + "ICdIRUxNRklMRV9FTlY9c3RhZ2luZyBoZWxtZmlsZSBzeW5jJyB0byBkZXBsb3kiLAogICAgICAi" + + "VGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgNCBjb250cm9sLXBsYW5lIHBoYXNlcyAoZGVwZW5kZW5j" + + "aWVzLCBzZXJ2aWNlcywgaW5ncmVzcywgb2JzZXJ2YWJpbGl0eSkgYW5kIGFwcHJveGltYXRlIHdh" + + "aXQgdGltZXMiLAogICAgICAiQWZ0ZXIgdGhlIGNvbnRyb2wgcGxhbmUgd2FzIGhlYWx0aHksIHRo" + + "ZSBhZ2VudCByZWdpc3RlcmVkIGFuZCBpbnN0YWxsZWQgdGhlIHNlcGFyYXRlIGNvbXB1dGUtcGxh" + + "bmUgc3RhY2sgdXNpbmcgZXhhY3RseSBvbmUgZG9jdW1lbnRlZCBoYW5kb2ZmIiwKICAgICAgIlRo" + + "ZSBhZ2VudCBkaWQgbm90IG1peCBhIENMSS1nZW5lcmF0ZWQgY29udHJvbC1wbGFuZSBwcm9maWxl" + + "IHdpdGggdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93IgogICAgXQogIH0sCiAgewogICAgImlkIjog" + + "IlMzLWNsaS1wcm9maWxlLXdvcmtmbG93IiwKICAgICJxdWVzdGlvbiI6ICJVc2UgbnZjZi1jbGkg" + + "dG8gaW5zdGFsbCBteSBjb250cm9sIHBsYW5lIGFuZCB0aGVuIHJlZ2lzdGVyIGFuZCBpbnN0YWxs" + + "IGEgc2VwYXJhdGUgY29tcHV0ZSBjbHVzdGVyLiBTaG93IGV2ZXJ5IHJlcXVpcmVkIGdsb2JhbCBm" + + "bGFnLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0" + + "aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGZpcnN0IHJhbiB0aGUgQ0xJIGNv" + + "bnRyb2wtcGxhbmUgaW5zdGFsbCBhbmQgcmVxdWlyZWQgaXRzIGdlbmVyYXRlZCBjb250cm9sLXBs" + + "YW5lLXByb2ZpbGUueWFtbC4gSXQgdGhlbiBzaG93ZWQgY29tcGxldGUgcmVnaXN0ZXIgYW5kIGlu" + + "c3RhbGwgY29tbWFuZHMsIGVhY2ggaW5jbHVkaW5nIC0tY29uZmlnLCAtLWNvbnRyb2wtcGxhbmUt" + + "c3RhY2ssIC0tY29tcHV0ZS1wbGFuZS1zdGFjaywgLS1lbnYsIGFuZCAtLXBsYWluIGJlZm9yZSB0" + + "aGUgY29tcHV0ZS1wbGFuZSBzdWJjb21tYW5kLiBSZWdpc3RyYXRpb24gY29uc3VtZWQgdGhlIHBy" + + "b2ZpbGUgYW5kIHByb2R1Y2VkIHRoZSB2YWx1ZXMgZmlsZSBjb25zdW1lZCBieSBpbnN0YWxsLiBJ" + + "dCBkaWQgbm90IHN3aXRjaCB0byB0aGUgSGVsbWZpbGUgdmFsdWVzIGhhbmRvZmYuIiwKICAgICJl" + + "eHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYt" + + "bWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAg" + + "ICAiVGhlIGFnZW50IHJhbiBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1w" + + "bGFuZSBhbmQgdmVyaWZpZWQgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wt" + + "cGxhbmUtcHJvZmlsZS55YW1sIGV4aXN0cyIsCiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBp" + + "bmNsdWRlZCAtLWNvbmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAtLWNvbXB1dGUtcGxhbmUt" + + "c3RhY2ssIC0tZW52LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBp" + + "bmNsdWRlZCAtLWNvbnRyb2wtcGxhbmUtcHJvZmlsZSwgLS1jbHVzdGVyLW5hbWUsIC0ta3ViZS1j" + + "b250ZXh0LCAtLXJlZ2lvbiwgYW5kIC0tb3V0cHV0IiwKICAgICAgIlRoZSBpbnN0YWxsIGNvbW1h" + + "bmQgcmVwZWF0ZWQgLS1jb25maWcsIC0tY29udHJvbC1wbGFuZS1zdGFjaywgLS1jb21wdXRlLXBs" + + "YW5lLXN0YWNrLCAtLWVudiwgYW5kIC0tcGxhaW4iLAogICAgICAiVGhlIGluc3RhbGwgY29tbWFu" + + "ZCBpbmNsdWRlZCAtLXZhbHVlcywgLS1rdWJlLWNvbnRleHQsIGFuZCAtLWNsdXN0ZXItbmFtZSIs" + + "CiAgICAgICJUaGUgYWdlbnQga2VwdCB0aGUgZ2VuZXJhdGVkIHByb2ZpbGUgYXMgdGhlIGVuZHBv" + + "aW50IHNvdXJjZSBhbmQgZGlkIG5vdCBtaXggaW4gSGVsbWZpbGUgdmFsdWVzIHJlZ2lzdHJhdGlv" + + "biIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTNC1vdmVycmlkZS1jYXNzYW5kcmEtcmVzb3Vy" + + "Y2VzIiwKICAgICJxdWVzdGlvbiI6ICJDYXNzYW5kcmEgcG9kcyBrZWVwIGdldHRpbmcgT09NS2ls" + + "bGVkLiBJbmNyZWFzZSBtZW1vcnkgbGltaXRzIHRvIDE2R2kuIiwKICAgICJleHBlY3RlZF9za2ls" + + "bCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6" + + "ICJUaGUgYWdlbnQgY2FwdHVyZWQgdGhlIGJhc2VsaW5lIHdpdGggaGVsbWZpbGUgdGVtcGxhdGUs" + + "IHRoZW4gbW9kaWZpZWQgdGhlIGNhc3NhbmRyYSByZWxlYXNlIHdpdGggaW5saW5lIHZhbHVlcyBy" + + "ZS1pbmNsdWRpbmcgZ2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNyZXRzIGluIHRoZSB2YWx1ZXMg" + + "YmxvY2suIEl0IHdhcm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGEgYW5kIHByZXZpZXdl" + + "ZCB0aGUgZGlmZiBiZWZvcmUgYXBwbHlpbmcuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsK" + + "ICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24g" + + "U0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGNhcHR1cmVk" + + "IGJhc2VsaW5lIHdpdGggJ2hlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxh" + + "dGUnIiwKICAgICAgIlRoZSBhZ2VudCBtb2RpZmllZCB0aGUgcmVsZWFzZSB2YWx1ZXMgYmxvY2sg" + + "dG8gaW5jbHVkZSByZXNvdXJjZSBsaW1pdHMgd2l0aCBtZW1vcnk6IDE2R2kiLAogICAgICAiVGhl" + + "IGFnZW50IHJlLWluY2x1ZGVkIGdsb2JhbC55YW1sLmdvdG1wbCBhbmQgc2VjcmV0cyBmaWxlIGlu" + + "IHRoZSB2YWx1ZXM6IGJsb2NrIChub3QganVzdCB0aGUgb3ZlcnJpZGUgYWxvbmUpIiwKICAgICAg" + + "IlRoZSBhZ2VudCB3YXJuZWQgYWJvdXQgdGhlIFlBTUwgbWVyZ2UgZ290Y2hhOiBzcGVjaWZ5aW5n" + + "IHZhbHVlczogcmVwbGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QgZW50aXJlbHkiLAog" + + "ICAgICAiVGhlIGFnZW50IHByZXZpZXdlZCB0aGUgY2hhbmdlIHdpdGggaGVsbWZpbGUgdGVtcGxh" + + "dGUgYW5kIGRpZmYgYmVmb3JlIGFwcGx5aW5nIHdpdGggc3luYyIKICAgIF0KICB9LAogIHsKICAg" + + "ICJpZCI6ICJTNi1zZWxlY3RpdmUtc3luYy1kZXBlbmRlbmNpZXMiLAogICAgInF1ZXN0aW9uIjog" + + "IkRlcGxveSBvbmx5IHRoZSBOVkNGIGRlcGVuZGVuY2llcyAtLSBOQVRTLCBDYXNzYW5kcmEsIGFu" + + "ZCBPcGVuQmFvIC0tIGZvciB0ZXN0aW5nIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNl" + + "bGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQg" + + "dXNlZCB0aGUgaGVsbWZpbGUgc2VsZWN0b3IgdG8gZGVwbG95IG9ubHkgdGhlIGRlcGVuZGVuY2ll" + + "cyByZWxlYXNlIGdyb3VwLCB0aGVuIHZlcmlmaWVkIHBvZHMgaW4gdGhlIGRlcGVuZGVuY3kgbmFt" + + "ZXNwYWNlcy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJl" + + "YWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFr" + + "aW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnaGVsbWZpbGUgLS1zZWxlY3RvciBy" + + "ZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llcyBzeW5jJyB0byBkZXBsb3kgb25seSBkZXBlbmRlbmNp" + + "ZXMiLAogICAgICAiVGhlIGFnZW50IHZlcmlmaWVkIHBvZHMgaW4gZGVwZW5kZW5jeSBuYW1lc3Bh" + + "Y2VzIChuYXRzLXN5c3RlbSwgY2Fzc2FuZHJhLXN5c3RlbSwgdmF1bHQtc3lzdGVtKSIsCiAgICAg" + + "ICJUaGUgYWdlbnQgcHJvdmlkZWQgdGhlIHNlbGVjdG9yIHJlZmVyZW5jZSBmb3IgdGFyZ2V0aW5n" + + "IG90aGVyIHJlbGVhc2UgZ3JvdXBzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlM3LWRlYnVn" + + "LWltYWdlcHVsbGJhY2tvZmYiLAogICAgInF1ZXN0aW9uIjogIkNhc3NhbmRyYSBwb2RzIGFyZSBp" + + "biBJbWFnZVB1bGxCYWNrT2ZmIHdpdGggNDAxIFVuYXV0aG9yaXplZCIsCiAgICAiZXhwZWN0ZWRf" + + "c2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1" + + "dGgiOiAiVGhlIGFnZW50IHJlYWQgdGhlIGRlYnVnZ2luZyByZWZlcmVuY2UgYW5kIHJhbiBkaWFn" + + "bm9zdGljIGNvbW1hbmRzIHRvIGlkZW50aWZ5IHRoZSByb290IGNhdXNlOiBkZXNjcmliZWQgdGhl" + + "IHBvZCwgY2hlY2tlZCBmb3IgcHVsbCBzZWNyZXRzLCBjaGVja2VkIGltYWdlUHVsbFNlY3JldHMg" + + "b24gdGhlIHBvZCBzcGVjIGFuZCBzZXJ2aWNlIGFjY291bnQuIEl0IGlkZW50aWZpZWQgdGhlIGlz" + + "c3VlIChtaXNzaW5nIHNlY3JldCwgd3JvbmcgY3JlZGVudGlhbHMsIG9yIG1pc3NpbmcgaW1hZ2VQ" + + "dWxsU2VjcmV0cykgYW5kIHByb3ZpZGVkIHRoZSBjb3JyZWN0IGZpeC4iLAogICAgImV4cGVjdGVk" + + "X2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2Vk" + + "LWluc3RhbGxhdGlvbiBTS0lMTC5tZCBhbmQgcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQiLAogICAg" + + "ICAiVGhlIGFnZW50IHJhbiAna3ViZWN0bCBkZXNjcmliZSBwb2QnIHRvIHNlZSB0aGUgSW1hZ2VQ" + + "dWxsQmFja09mZiBldmVudHMiLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQgZm9yIHB1bGwgc2Vj" + + "cmV0cyBpbiB0aGUgY2Fzc2FuZHJhLXN5c3RlbSBuYW1lc3BhY2UiLAogICAgICAiVGhlIGFnZW50" + + "IGNoZWNrZWQgaW1hZ2VQdWxsU2VjcmV0cyBvbiB0aGUgcG9kIHNwZWMgYW5kL29yIHNlcnZpY2Ug" + + "YWNjb3VudCIsCiAgICAgICJUaGUgYWdlbnQgaWRlbnRpZmllZCB0aGUgcm9vdCBjYXVzZSBhbmQg" + + "cHJvdmlkZWQgYSBzcGVjaWZpYyBmaXgiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzktcmVt" + + "b3RlLWVrcy1yb3V0aW5nLWFuZC1zZWNyZXRzIiwKICAgICJxdWVzdGlvbiI6ICJDb25maWd1cmUg" + + "YSByZW1vdGUgRUtTIGNvbXB1dGUgY2x1c3RlciB0byByZWFjaCBteSBOVkNGIGNvbnRyb2wgcGxh" + + "bmUgdGhyb3VnaCBpdHMgRW52b3kgR2F0ZXdheSwgaW5jbHVkaW5nIE5BVFMgYW5kIHByaXZhdGUt" + + "cmVnaXN0cnkgcHVsbCBzZWNyZXRzLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxm" + + "LW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGNv" + + "bmZpZ3VyZWQgdGhlIGNvbnRyb2wgcGxhbmUgdG8gdXNlIHRoZSBFbnZveSBHYXRld2F5IGNvbnRy" + + "b2xsZXIgaW4gZW52b3ktZ2F0ZXdheS1zeXN0ZW0gYW5kIEdhdGV3YXkvbnZjZi1nYXRld2F5IGlu" + + "IGVudm95LWdhdGV3YXksIHNldCBhbGwgc2l4IHJlbW90ZSB3b3JrZXIgZW5kcG9pbnRzIGFuZCB0" + + "aGUgZ3JwYy1wcm94eSBsb2NhbCBvdmVycmlkZSwgZW5hYmxlZCBOVkNGIGFuZCBOVkNUIGdSUEMg" + + "cm91dGVzIHBsdXMgTkFUUywgYW5kIGVuYWJsZWQgT3BlbkJhbyBpc3N1ZXIgZGlzY292ZXJ5LiBJ" + + "dCBjb25maWd1cmVkIHRoZSBiYXJlLUdhdGV3YXkgQ0xJIFVSTCBhbmQgSG9zdCBmaWVsZHMgaW5j" + + "bHVkaW5nIGljbXNfaG9zdCwgcGx1cyB0aGUgY29tcHV0ZS1wbGFuZSBJQ01TLCBSZVZhbCwgYW5k" + + "IE5BVFMgZXh0ZXJuYWwgVVJMcyBhbmQgaG9zdCBvdmVycmlkZXMuIEl0IGNyZWF0ZWQgdGhlIHB1" + + "bGwgc2VjcmV0IGluIGFsbCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMgaW5jbHVkaW5nIGNlcnQt" + + "bWFuYWdlciwgYnV0IG9ubHkgaW4gbnZjYS1vcGVyYXRvciBvbiB0aGUgY29tcHV0ZSBjbHVzdGVy" + + "OyB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0byBudmNhLXN5c3RlbS4iLAogICAg" + + "ImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAg" + + "ICAgICJUaGUgYWdlbnQgc2V0IGluZ3Jlc3MuZ2F0ZXdheUFwaS5jb250cm9sbGVyTmFtZXNwYWNl" + + "IHRvIGVudm95LWdhdGV3YXktc3lzdGVtIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgc2hhcmVkLCBn" + + "cnBjLCBhbmQgbmF0cyBHYXRld2F5IHJlZmVyZW5jZXMgdG8gbmFtZSBudmNmLWdhdGV3YXkgYW5k" + + "IG5hbWVzcGFjZSBlbnZveS1nYXRld2F5IiwKICAgICAgIlRoZSBhZ2VudCBzZXQgZ2xvYmFsLndv" + + "cmtlckVuZHBvaW50cy5udmNmU2VydmljZVVSTCwgbnZjZkdycGNTZXJ2aWNlVVJMLCBudmNmTmF0" + + "c1NlcnZpY2VVUkwsIG52Y3RTZXJ2aWNlVVJMLCBudmN0R3JwY1NlcnZpY2VVUkwsIGFuZCBpbnZv" + + "Y2F0aW9uU2VydmljZVVSTCIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGdycGNwcm94eS5udmNmR3Jw" + + "Y1NlcnZpY2VVUkwgdG8gdGhlIGNvbnRyb2wtcGxhbmUtbG9jYWwgQVBJIGdSUEMgc2VydmljZSIs" + + "CiAgICAgICJUaGUgYWdlbnQgZW5hYmxlZCBib3RoIGluZ3Jlc3MuZ2F0ZXdheUFwaS5yb3V0ZXMu" + + "bnZjZkFwaS5ncnBjIGFuZCBudmN0QXBpLmdycGMgd2l0aCB3b3JrZXItYXBpIGFuZCB3b3JrZXIt" + + "dGFza3MgaG9zdG5hbWVzIiwKICAgICAgIlRoZSBhZ2VudCBleHBsaWNpdGx5IHNldCBpbmdyZXNz" + + "LmdhdGV3YXlBcGkucm91dGVzLm5hdHMuZW5hYmxlZCB0byB0cnVlIiwKICAgICAgIlRoZSBhZ2Vu" + + "dCBzZXQgb3BlbmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkIHRvIHRydWUi" + + "LAogICAgICAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgdGhlIGJhcmUtR2F0ZXdheSBDTEkgVVJMIGFu" + + "ZCBIb3N0IGZpZWxkcywgaW5jbHVkaW5nIHNjaGVtZS1sZXNzIGljbXNfaG9zdCIsCiAgICAgICJU" + + "aGUgYWdlbnQgY29uZmlndXJlZCBjb21wdXRlLXBsYW5lIGljbXNTZXJ2aWNlVVJMLCBpY21zU2Vy" + + "dmljZUhvc3RIZWFkZXJPdmVycmlkZSwgcmV2YWxTZXJ2aWNlVVJMLCByZXZhbFNlcnZpY2VIb3N0" + + "SGVhZGVyT3ZlcnJpZGUsIG5hdHNVUkwsIGFuZCBuYXRzSG9zdE92ZXJyaWRlIiwKICAgICAgIlRo" + + "ZSBjb250cm9sLXBsYW5lIHB1bGwtc2VjcmV0IG5hbWVzcGFjZSBsaXN0IGluY2x1ZGVkIGNlcnQt" + + "bWFuYWdlciIsCiAgICAgICJUaGUgY29tcHV0ZS1wbGFuZSBzZWNyZXQgd2FzIGNyZWF0ZWQgb25s" + + "eSBpbiBudmNhLW9wZXJhdG9yIGFuZCBtaXJyb3JlZCBieSB0aGUgY2hhcnQgYW5kIG9wZXJhdG9y" + + "IHRvIG52Y2Etc3lzdGVtIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkcxMS1zcGxpdC10ZWFy" + + "ZG93biIsCiAgICAicXVlc3Rpb24iOiAiVGVhciBkb3duIG15IHNwbGl0IGNvbnRyb2wtcGxhbmUg" + + "YW5kIGNvbXB1dGUtcGxhbmUgZGVwbG95bWVudCBzYWZlbHkuIFNob3cgYm90aCB0aGUgSGVsbWZp" + + "bGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSB2YXJpYW50cy4iLAogICAgImV4cGVjdGVkX3NraWxs" + "IjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjog" + - "IlRoZSBhZ2VudCB1c2VkIHRoZSBoZWxtZmlsZSBzZWxlY3RvciB0byBkZXBsb3kgb25seSB0aGUg" + - "ZGVwZW5kZW5jaWVzIHJlbGVhc2UgZ3JvdXAsIHRoZW4gdmVyaWZpZWQgcG9kcyBpbiB0aGUgZGVw" + - "ZW5kZW5jeSBuYW1lc3BhY2VzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJU" + - "aGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1k" + - "IGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCB1c2VkICdoZWxtZmlsZSAt" + - "LXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMnIHRvIGRlcGxveSBvbmx5" + - "IGRlcGVuZGVuY2llcyIsCiAgICAgICJUaGUgYWdlbnQgdmVyaWZpZWQgcG9kcyBpbiBkZXBlbmRl" + - "bmN5IG5hbWVzcGFjZXMgKG5hdHMtc3lzdGVtLCBjYXNzYW5kcmEtc3lzdGVtLCB2YXVsdC1zeXN0" + - "ZW0pIiwKICAgICAgIlRoZSBhZ2VudCBwcm92aWRlZCB0aGUgc2VsZWN0b3IgcmVmZXJlbmNlIGZv" + - "ciB0YXJnZXRpbmcgb3RoZXIgcmVsZWFzZSBncm91cHMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQi" + - "OiAiUzctZGVidWctaW1hZ2VwdWxsYmFja29mZiIsCiAgICAicXVlc3Rpb24iOiAiQ2Fzc2FuZHJh" + - "IHBvZHMgYXJlIGluIEltYWdlUHVsbEJhY2tPZmYgd2l0aCA0MDEgVW5hdXRob3JpemVkIiwKICAg" + - "ICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAg" + - "Imdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgcmVhZCB0aGUgZGVidWdnaW5nIHJlZmVyZW5jZSBh" + - "bmQgcmFuIGRpYWdub3N0aWMgY29tbWFuZHMgdG8gaWRlbnRpZnkgdGhlIHJvb3QgY2F1c2U6IGRl" + - "c2NyaWJlZCB0aGUgcG9kLCBjaGVja2VkIGZvciBwdWxsIHNlY3JldHMsIGNoZWNrZWQgaW1hZ2VQ" + - "dWxsU2VjcmV0cyBvbiB0aGUgcG9kIHNwZWMgYW5kIHNlcnZpY2UgYWNjb3VudC4gSXQgaWRlbnRp" + - "ZmllZCB0aGUgaXNzdWUgKG1pc3Npbmcgc2VjcmV0LCB3cm9uZyBjcmVkZW50aWFscywgb3IgbWlz" + - "c2luZyBpbWFnZVB1bGxTZWNyZXRzKSBhbmQgcHJvdmlkZWQgdGhlIGNvcnJlY3QgZml4LiIsCiAg" + - "ICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1z" + - "ZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGFuZCByZWZlcmVuY2VzL2RlYnVnZ2lu" + - "Zy5tZCIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdrdWJlY3RsIGRlc2NyaWJlIHBvZCcgdG8gc2Vl" + - "IHRoZSBJbWFnZVB1bGxCYWNrT2ZmIGV2ZW50cyIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBm" + - "b3IgcHVsbCBzZWNyZXRzIGluIHRoZSBjYXNzYW5kcmEtc3lzdGVtIG5hbWVzcGFjZSIsCiAgICAg" + - "ICJUaGUgYWdlbnQgY2hlY2tlZCBpbWFnZVB1bGxTZWNyZXRzIG9uIHRoZSBwb2Qgc3BlYyBhbmQv" + - "b3Igc2VydmljZSBhY2NvdW50IiwKICAgICAgIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoZSByb290" + - "IGNhdXNlIGFuZCBwcm92aWRlZCBhIHNwZWNpZmljIGZpeCIKICAgIF0KICB9LAogIHsKICAgICJp" + - "ZCI6ICJTOS1yZW1vdGUtZWtzLXJvdXRpbmctYW5kLXNlY3JldHMiLAogICAgInF1ZXN0aW9uIjog" + - "IkNvbmZpZ3VyZSBhIHJlbW90ZSBFS1MgY29tcHV0ZSBjbHVzdGVyIHRvIHJlYWNoIG15IE5WQ0Yg" + - "Y29udHJvbCBwbGFuZSB0aHJvdWdoIGl0cyBFbnZveSBHYXRld2F5LCBpbmNsdWRpbmcgTkFUUyBh" + - "bmQgcHJpdmF0ZS1yZWdpc3RyeSBwdWxsIHNlY3JldHMuIiwKICAgICJleHBlY3RlZF9za2lsbCI6" + - "ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJU" + - "aGUgYWdlbnQgY29uZmlndXJlZCB0aGUgY29udHJvbCBwbGFuZSB0byB1c2UgdGhlIEVudm95IEdh" + - "dGV3YXkgY29udHJvbGxlciBpbiBlbnZveS1nYXRld2F5LXN5c3RlbSBhbmQgR2F0ZXdheS9udmNm" + - "LWdhdGV3YXkgaW4gZW52b3ktZ2F0ZXdheSwgc2V0IGFsbCBzaXggcmVtb3RlIHdvcmtlciBlbmRw" + - "b2ludHMgYW5kIHRoZSBncnBjLXByb3h5IGxvY2FsIG92ZXJyaWRlLCBlbmFibGVkIE5WQ0YgYW5k" + - "IE5WQ1QgZ1JQQyByb3V0ZXMgcGx1cyBOQVRTLCBhbmQgZW5hYmxlZCBPcGVuQmFvIGlzc3VlciBk" + - "aXNjb3ZlcnkuIEl0IGNvbmZpZ3VyZWQgdGhlIGJhcmUtR2F0ZXdheSBDTEkgVVJMIGFuZCBIb3N0" + - "IGZpZWxkcyBpbmNsdWRpbmcgaWNtc19ob3N0LCBwbHVzIHRoZSBjb21wdXRlLXBsYW5lIElDTVMs" + - "IFJlVmFsLCBhbmQgTkFUUyBleHRlcm5hbCBVUkxzIGFuZCBob3N0IG92ZXJyaWRlcy4gSXQgY3Jl" + - "YXRlZCB0aGUgcHVsbCBzZWNyZXQgaW4gYWxsIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNs" + - "dWRpbmcgY2VydC1tYW5hZ2VyLCBidXQgb25seSBpbiBudmNhLW9wZXJhdG9yIG9uIHRoZSBjb21w" + - "dXRlIGNsdXN0ZXI7IHRoZSBjaGFydCBhbmQgb3BlcmF0b3IgbWlycm9yIGl0IHRvIG52Y2Etc3lz" + - "dGVtLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0" + - "aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcg" + - "YWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgaW5ncmVzcy5nYXRld2F5QXBpLmNvbnRyb2xs" + - "ZXJOYW1lc3BhY2UgdG8gZW52b3ktZ2F0ZXdheS1zeXN0ZW0iLAogICAgICAiVGhlIGFnZW50IHNl" + - "dCBzaGFyZWQsIGdycGMsIGFuZCBuYXRzIEdhdGV3YXkgcmVmZXJlbmNlcyB0byBuYW1lIG52Y2Yt" + - "Z2F0ZXdheSBhbmQgbmFtZXNwYWNlIGVudm95LWdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50IHNl" + - "dCBnbG9iYWwud29ya2VyRW5kcG9pbnRzLm52Y2ZTZXJ2aWNlVVJMLCBudmNmR3JwY1NlcnZpY2VV" + - "UkwsIG52Y2ZOYXRzU2VydmljZVVSTCwgbnZjdFNlcnZpY2VVUkwsIG52Y3RHcnBjU2VydmljZVVS" + - "TCwgYW5kIGludm9jYXRpb25TZXJ2aWNlVVJMIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgZ3JwY3By" + - "b3h5Lm52Y2ZHcnBjU2VydmljZVVSTCB0byB0aGUgY29udHJvbC1wbGFuZS1sb2NhbCBBUEkgZ1JQ" + - "QyBzZXJ2aWNlIiwKICAgICAgIlRoZSBhZ2VudCBlbmFibGVkIGJvdGggaW5ncmVzcy5nYXRld2F5" + - "QXBpLnJvdXRlcy5udmNmQXBpLmdycGMgYW5kIG52Y3RBcGkuZ3JwYyB3aXRoIHdvcmtlci1hcGkg" + - "YW5kIHdvcmtlci10YXNrcyBob3N0bmFtZXMiLAogICAgICAiVGhlIGFnZW50IGV4cGxpY2l0bHkg" + - "c2V0IGluZ3Jlc3MuZ2F0ZXdheUFwaS5yb3V0ZXMubmF0cy5lbmFibGVkIHRvIHRydWUiLAogICAg" + - "ICAiVGhlIGFnZW50IHNldCBvcGVuYmFvLm1pZ3JhdGlvbnMuaXNzdWVyRGlzY292ZXJ5LmVuYWJs" + - "ZWQgdG8gdHJ1ZSIsCiAgICAgICJUaGUgYWdlbnQgY29uZmlndXJlZCB0aGUgYmFyZS1HYXRld2F5" + - "IENMSSBVUkwgYW5kIEhvc3QgZmllbGRzLCBpbmNsdWRpbmcgc2NoZW1lLWxlc3MgaWNtc19ob3N0" + - "IiwKICAgICAgIlRoZSBhZ2VudCBjb25maWd1cmVkIGNvbXB1dGUtcGxhbmUgaWNtc1NlcnZpY2VV" + - "UkwsIGljbXNTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlLCByZXZhbFNlcnZpY2VVUkwsIHJldmFs" + - "U2VydmljZUhvc3RIZWFkZXJPdmVycmlkZSwgbmF0c1VSTCwgYW5kIG5hdHNIb3N0T3ZlcnJpZGUi" + - "LAogICAgICAiVGhlIGNvbnRyb2wtcGxhbmUgcHVsbC1zZWNyZXQgbmFtZXNwYWNlIGxpc3QgaW5j" + - "bHVkZWQgY2VydC1tYW5hZ2VyIiwKICAgICAgIlRoZSBjb21wdXRlLXBsYW5lIHNlY3JldCB3YXMg" + - "Y3JlYXRlZCBvbmx5IGluIG52Y2Etb3BlcmF0b3IgYW5kIG1pcnJvcmVkIGJ5IHRoZSBjaGFydCBh" + - "bmQgb3BlcmF0b3IgdG8gbnZjYS1zeXN0ZW0iCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzEx" + - "LXNwbGl0LXRlYXJkb3duIiwKICAgICJxdWVzdGlvbiI6ICJUZWFyIGRvd24gbXkgc3BsaXQgY29u" + - "dHJvbC1wbGFuZSBhbmQgY29tcHV0ZS1wbGFuZSBkZXBsb3ltZW50IHNhZmVseS4gU2hvdyBib3Ro" + - "IHRoZSBIZWxtZmlsZSB2YWx1ZXMgYW5kIENMSSBwcm9maWxlIHZhcmlhbnRzLiIsCiAgICAiZXhw" + - "ZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91" + - "bmRfdHJ1dGgiOiAiVGhlIEhlbG1maWxlIGZsb3cgZGVzdHJveWVkIGFuZCBjb25maXJtZWQgZGVy" + - "ZWdpc3RyYXRpb24gb2YgZXZlcnkgY29tcHV0ZSBjbHVzdGVyIGJlZm9yZSBkZXN0cm95aW5nIHRo" + - "ZSBjb250cm9sIHBsYW5lIGFuZCBwYXNzZWQgYm90aCBjb250cm9sLXBsYW5lIGt1YmVjb25maWcg" + - "Zm9ybXMuIEJlZm9yZSBlaXRoZXIgaGFuZG9mZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBs" + - "YW5lLCBib3RoIHRlYXJkb3duIGZsb3dzIHdhcm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRp" + - "b24gZG9lcyBub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZl" + - "IGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNlIGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24g" + - "YW5kIGFib3J0ZWQgaWYgdHJ1ZSwgYW5kIHZlcmlmaWVkIG1hdGNoaW5nIHJlbGVhc2Ugb3duZXJz" + - "aGlwIGZvciBhbiBpbnRlbmRlZCBzdGFjay1tYW5hZ2VkIHJlbGVhc2UsIGFib3J0aW5nIG9uIG1p" + - "c3Npbmcgb3IgbWlzbWF0Y2hlZCBldmlkZW5jZS4gVGhleSBwcmVzZXJ2ZWQgdGhlIG5hbWVzcGFj" + - "ZSBieSBkZWZhdWx0IGFuZCBkaWQgbm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBwcm92" + - "ZW5hbmNlIGFuZCBleHBsaWNpdCBjb25maXJtYXRpb24uIFRoZSBDTEkgZmxvdyByZXRhaW5lZCB0" + - "aGUgZ2VuZXJhdGVkIHJlZ2lzdHJhdGlvbiB2YWx1ZXMsIHVzZWQgdGhlIGZ1bGwtcHJlZml4IHN0" + - "YXR1cyBjb21tYW5kIHRvIGluc3BlY3QgbGl2ZSByZWdpc3RyYXRpb25zLCBzdGF0ZWQgdGhhdCBu" + - "YW1lZC1jbHVzdGVyIHBsYW4tb25seSBkb2VzIG5vdCBxdWVyeSBJQ01TIGFuZCBjYW5ub3QgcHJl" + - "ZGljdCBjb25kaXRpb25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwsIGFuZCBnb3QgZXhwbGljaXQg" + - "Y29uZmlybWF0aW9uIHdoZW4gdGhlIHRhcmdldCB3YXMgdGhlIGxhc3QgcmVnaXN0ZXJlZCBjbHVz" + - "dGVyLiBJdCB0aGVuIHByZXZpZXdlZCBhbmQgcmFuIGRvd24gd2l0aCB0aGUgZnVsbCBwZXJzaXN0" + - "ZW50IHByZWZpeCwgcmVtb3ZpbmcgdGhlIGNvbnRyb2wgcGxhbmUgb25seSBhZnRlciB0aGUgbGFz" + - "dCByZWdpc3RyYXRpb24gd2FzIGdvbmUuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAg" + - "ICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJ" + - "TEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiRm9yIGV2ZXJ5IGNvbXB1dGUgY2x1" + - "c3RlciwgdGhlIEhlbG1maWxlIGZsb3cgcmFuIHRoZSBjb21wdXRlLXBsYW5lIE1ha2VmaWxlIGRl" + - "c3Ryb3kgdGFyZ2V0IHdpdGggaXRzIGNvbXB1dGUga3ViZWNvbmZpZyIsCiAgICAgICJBZnRlciBj" + - "b25maXJtYXRpb24sIHRoZSBIZWxtZmlsZSBmbG93IHJhbiBjbHVzdGVyIGRlbGV0ZSB3aXRoIGNs" + - "dXN0ZXJJRCBhbmQgbmNhSUQgYmVmb3JlIGNvbnRyb2wtcGxhbmUgZGVzdHJ1Y3Rpb24iLAogICAg" + - "ICAiQmVmb3JlIGVpdGhlciBoYW5kb2ZmIGNvdWxkIGRlc3Ryb3kgdGhlIGNvbnRyb2wgcGxhbmUs" + - "IGJvdGggdGVhcmRvd24gZmxvd3Mgd2FybmVkIHRoYXQgbmFtZXNwYWNlIHByZXNlcnZhdGlvbiBk" + - "b2VzIG5vdCBwcmVzZXJ2ZSB0aGUgSGVsbSByZWxlYXNlLCByZXF1aXJlZCBlZmZlY3RpdmUgY2Vy" + - "dE1hbmFnZXIuZW5hYmxlZDogZmFsc2UgZm9yIGFuIGV4dGVybmFsIGluc3RhbGxhdGlvbiBhbmQg" + - "YWJvcnRlZCBpZiB0cnVlLCBhbmQgdmVyaWZpZWQgaW50ZW5kZWQgc3RhY2sgb3duZXJzaGlwIHdo" + - "ZW4gZW5hYmxlZCwgYWJvcnRpbmcgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlIiwK" + - "ICAgICAgIkJvdGggdGVhcmRvd24gZmxvd3MgcHJlc2VydmVkIHRoZSBjZXJ0LW1hbmFnZXIgbmFt" + - "ZXNwYWNlIGJ5IGRlZmF1bHQgYW5kIGRpZCBub3QgZGVsZXRlIGl0IHdpdGhvdXQgbmFtZXNwYWNl" + - "IHByb3ZlbmFuY2UgYW5kIGV4cGxpY2l0IGNvbmZpcm1hdGlvbiIsCiAgICAgICJUaGUgSGVsbWZp" + - "bGUgZmxvdyByYW4gY29udHJvbC1wbGFuZSBNYWtlZmlsZSBkZXN0cm95IHdpdGggYm90aCBLVUJF" + - "Q09ORklHIGFuZCBLVUJFQ09ORklHX0ZJTEUiLAogICAgICAiVGhlIENMSSBmbG93IHJldGFpbmVk" + - "IG91dC88Y2x1c3Rlci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbCB1bnRpbCB0ZWFyZG93biBj" + - "b21wbGV0ZWQiLAogICAgICAiQmVmb3JlIHJlYWwgZG93biwgdGhlIENMSSBmbG93IHVzZWQgdGhl" + - "IGZ1bGwtcHJlZml4IHN0YXR1cyBjb21tYW5kIHRvIGluc3BlY3QgbGl2ZSByZWdpc3RyYXRpb25z" + - "LCBzdGF0ZWQgdGhhdCBuYW1lZC1jbHVzdGVyIHBsYW4tb25seSBkb2VzIG5vdCBxdWVyeSBJQ01T" + - "IGFuZCBjYW5ub3QgcHJlZGljdCBjb25kaXRpb25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwsIHdh" + - "cm5lZCB3aGVuIHRoZSB0YXJnZXQgd2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3RlciwgYW5k" + - "IGdvdCBleHBsaWNpdCBjb25maXJtYXRpb24iLAogICAgICAiVGhlIENMSSBmbG93IHVzZWQgLS1j" + - "b25maWcsIGJvdGggc3RhY2sgcGF0aHMsIC0tZW52LCAtLXBsYWluLCBib3RoIGNvbnRleHRzLCBh" + - "bmQgLS1pY21zLXVybCBmb3IgZG93biAtLXBsYW4tb25seSBhbmQgdGhlbiBkb3duIiwKICAgICAg" + - "IlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCBkb3duIHVucmVnaXN0ZXJzIGVhY2ggY29tcHV0ZSBjbHVz" + - "dGVyIGFuZCByZW1vdmVzIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgbm8gcmVnaXN0cmF0" + - "aW9ucyByZW1haW4iCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzEzLXZhbHVlcy1wcmVjZWRl" + - "bmNlIiwKICAgICJxdWVzdGlvbiI6ICJJIGFkZGVkIGEgdmFsdWUgdG8gbXkgZW52aXJvbm1lbnQg" + - "WUFNTCBidXQgaXQncyBiZWluZyBzaWxlbnRseSBpZ25vcmVkLiBIb3cgZG8gaGVsbWZpbGUgdmFs" + - "dWVzIHdvcmsgaW4gTlZDRj8iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5h" + - "Z2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBleHBsYWlu" + - "ZWQgdGhlIHZhbHVlcyBwcmVjZWRlbmNlIGNoYWluIChiYXNlLnlhbWwsIGVudiBZQU1MLCBnbG9i" + - "YWwueWFtbC5nb3RtcGwsIHNlY3JldHMsIGlubGluZSB2YWx1ZXMpLCBpZGVudGlmaWVkIHRoYXQg" + - "Z2xvYmFsLnlhbWwuZ290bXBsIG9ubHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMga2V5cywgYW5k" + - "IGV4cGxhaW5lZCB0aGF0IGFyYml0cmFyeSBjaGFydCB2YWx1ZXMgbXVzdCB1c2UgcmVsZWFzZSBp" + - "bmxpbmUgdmFsdWVzIGJsb2Nrcy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAi" + - "VGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5t" + - "ZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSB2" + - "YWx1ZXMgcHJlY2VkZW5jZSBjaGFpbjogYmFzZS55YW1sIC0+IGVudiBZQU1MIC0+IGdsb2JhbC55" + - "YW1sLmdvdG1wbCAtPiBzZWNyZXRzIC0+IGlubGluZSB2YWx1ZXMiLAogICAgICAiVGhlIGFnZW50" + - "IGlkZW50aWZpZWQgdGhhdCBnbG9iYWwueWFtbC5nb3RtcGwgb25seSBwYXNzZXMgdGhyb3VnaCBz" + - "cGVjaWZpYyBrZXlzIChjYXNzYW5kcmEucmVwbGljYUNvdW50LCBnbG9iYWwuc3RvcmFnZUNsYXNz" + - "LCBnbG9iYWwuaW1hZ2UsIGV0Yy4pIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCBh" + - "cmJpdHJhcnkgY2hhcnQgdmFsdWVzIG11c3QgYmUgc2V0IHZpYSByZWxlYXNlIGlubGluZSB2YWx1" + - "ZXM6IGJsb2NrcyIsCiAgICAgICJUaGUgYWdlbnQgbGlzdGVkIGV4YW1wbGVzIG9mIHZhbHVlcyB0" + - "aGF0IGFyZSBwcm9wYWdhdGVkIGFuZCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzIHRoYXQgcmVxdWly" + - "ZSBhIHJlbGVhc2UgdmFsdWVzIGJsb2NrIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMxNC1l" + - "bmFibGUtbGxtLWZ1bmN0aW9ucyIsCiAgICAicXVlc3Rpb24iOiAiSSBuZWVkIHRvIGRlcGxveSBm" + - "dW5jdGlvblR5cGU6IExMTSBmdW5jdGlvbnMgb24gYSBzZWxmLW1hbmFnZWQsIHNpbmdsZS1ub2Rl" + - "IGlzb2xhdGVkIHRlc3QgY2x1c3Rlci4gV2hhdCBIZWxtZmlsZSBjb25maWd1cmF0aW9uIGFuZCB2" + - "ZXJpZmljYXRpb24gc3RlcHMgZG8gSSBuZWVkPyIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZj" + - "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFn" + - "ZW50IGVuYWJsZWQgdGhlIExMTSBhZGRvbiB3aXRoIGFkZG9ucy5sbG0uZW5hYmxlZCwgY29uZmln" + - "dXJlZCBzaW5nbGUgcmVwbGljYXMgZm9yIHRoZSBMTE0gQVBJIEdhdGV3YXkgYW5kIHJlcXVlc3Qg" + - "cm91dGVyLCBhbmQgZXhwbGFpbmVkIHRoYXQgdGhlIHJlcXVlc3Qgcm91dGVyIHVzZXMgcG93ZXIt" + - "b2YtdHdvIHdoZW4gbm8gbG9hZC1iYWxhbmNlciBjb25maWd1cmF0aW9uIGlzIHNldC4gSXQgbGlu" + - "a2VkIHRoZSBjYW5vbmljYWwgcmVxdWVzdC1yb3V0ZXIgbG9hZC1iYWxhbmNpbmcgZ3VpZGUgZm9y" + - "IG90aGVyIHJvdXRpbmcgbWV0aG9kcy4gRm9yIHRoZSBpc29sYXRlZCBwbGFpbnRleHQgY2x1c3Rl" + - "ciwgaXQgcmVsaWVkIG9uIHRoZSBzZWxmLW1hbmFnZWQgc3RhY2sgZGVmYXVsdCBmb3IgdGhlIGJ1" + - "bmRsZWQgZ2F0ZXdheS10by1BUEkgYXV0aGVudGljYXRpb24gaG9wIGFuZCBpbmNsdWRlZCBhZ2Vu" + - "dENvbmZpZy5tZXJnZUNvbmZpZy53b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZSBmb3IgdGhl" + - "IHNlcGFyYXRlIHdvcmtlciB0cmFuc3BvcnQsIHdpdGggYSB3YXJuaW5nIHRoYXQgcGxhaW50ZXh0" + - "IHdvcmtlciB0cmFuc3BvcnQgaXMgbm90IGZvciBwcm9kdWN0aW9uLiBJdCByZWZyZXNoZWQgdGhl" + - "IGNvbXB1dGUgcGxhbmUgdXNpbmcgdGhlIHNhbWUgaGFuZG9mZiB1c2VkIGR1cmluZyBpbnN0YWxs" + - "YXRpb24sIHJlZGVwbG95ZWQgZXhpc3RpbmcgTExNIGZ1bmN0aW9ucywgYW5kIHZlcmlmaWVkIHRo" + - "ZSBMTE0gZGVwbG95bWVudHMsIHJvdXRlLCBhbmQgbGxtLXdvcmtlciBzaWRlY2FyLiIsCiAgICAi" + - "ZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgdXNlZCBhZGRvbnMubGxtLmVu" + - "YWJsZWQsIG5vdCB0aGUgb2Jzb2xldGUgbGxtLmVuYWJsZWQgcGF0aCIsCiAgICAgICJUaGUgYWdl" + - "bnQgc2V0IGdhdGV3YXkgYW5kIHJlcXVlc3RSb3V0ZXIgcmVwbGljYUNvdW50IHRvIDEgZm9yIHRo" + - "ZSBzaW5nbGUtbm9kZSB0ZXN0IGNsdXN0ZXIiLAogICAgICAiVGhlIGFnZW50IHN0YXRlZCB0aGF0" + - "IHRoZSByZXF1ZXN0IHJvdXRlciBkZWZhdWx0cyB0byBwb3dlci1vZi10d28gYW5kIGxpbmtlZCB0" + - "aGUgY2Fub25pY2FsIHJlcXVlc3Qtcm91dGVyIGxvYWQtYmFsYW5jaW5nIGd1aWRlIGZvciBvdGhl" + - "ciBtZXRob2RzIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCB0aGUgYnVuZGxlZCBn" + - "YXRld2F5LXRvLUFQSSBhdXRoZW50aWNhdGlvbiBob3AgZGVmYXVsdHMgdG8gcGxhaW50ZXh0LCBp" + - "bmNsdWRlZCB3b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZSBvbmx5IGZvciB0aGUgaXNvbGF0" + - "ZWQgd29ya2VyIHRyYW5zcG9ydCwgYW5kIHdhcm5lZCBhZ2FpbnN0IHBsYWludGV4dCB3b3JrZXIg" + - "dHJhbnNwb3J0IGluIHByb2R1Y3Rpb24iLAogICAgICAiVGhlIGFnZW50IGFwcGxpZWQgdGhlIGNv" + - "bnRyb2wtcGxhbmUgSGVsbWZpbGUgZW52aXJvbm1lbnQsIHJlZnJlc2hlZCB0aGUgY29tcHV0ZSBw" + - "bGFuZSB3aXRoIHRoZSBzYW1lIHNlbGVjdGVkIGhhbmRvZmYsIGFuZCByZWNyZWF0ZWQgb3IgcmVk" + - "ZXBsb3llZCBleGlzdGluZyBMTE0gZnVuY3Rpb25zIiwKICAgICAgIlRoZSBhZ2VudCB2ZXJpZmll" + - "ZCBsbG0tYXBpLWdhdGV3YXksIGxsbS1yZXF1ZXN0LXJvdXRlciwgdGhlIExMTSBIVFRQUm91dGUs" + - "IGFuZCB0aGUgbGxtLXdvcmtlciBzaWRlY2FyIGluY2x1ZGluZyAtLXF1aWMtaW5zZWN1cmUiCiAg" + - "ICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzgtTkVHLW5vdC1mb3ItazNkIiwKICAgICJxdWVzdGlv" + - "biI6ICJTZXQgdXAgYSBsb2NhbCBOVkNGIGRldiBjbHVzdGVyIHVzaW5nIGszZCBmb3IgdGVzdGlu" + - "ZyIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiBudWxsLAogICAgInNob3VsZF90cmlnZ2VyIjogZmFs" + - "c2UsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoaXMgaXMgYSBsb2NhbCBrM2QgZGV2ZWxvcG1lbnQg" + - "cmVxdWVzdCB0aGF0IGJlbG9uZ3MgdG8gdGhlIG52Y2Ytc2VsZi1ob3N0ZWQtbG9jYWwtZGV2IHNr" + - "aWxsLCBub3QgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uLiBUaGUgYWdlbnQgZGlkIG5v" + - "dCByZWFkIG9yIHVzZSB0aGUgc2VsZi1tYW5hZ2VkIGluc3RhbGxhdGlvbiBza2lsbCBhbmQgaW5z" + - "dGVhZCBwcm92aWRlZCBrM2Qtc3BlY2lmaWMgZ3VpZGFuY2UuIiwKICAgICJleHBlY3RlZF9iZWhh" + - "dmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHJlYWQgbnZjZi1zZWxmLW1hbmFnZWQt" + - "aW5zdGFsbGF0aW9uL1NLSUxMLm1kIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHByb3ZpZGUg" + - "aGVsbWZpbGUtYmFzZWQgcHJvZHVjdGlvbiBkZXBsb3ltZW50IGluc3RydWN0aW9ucyIsCiAgICAg" + - "ICJUaGUgYWdlbnQgcHJvdmlkZWQgazNkLXNwZWNpZmljIGxvY2FsIGRldmVsb3BtZW50IGd1aWRh" + - "bmNlIG9yIGRlZmVycmVkIHRvIHRoZSBhcHByb3ByaWF0ZSBsb2NhbC1kZXYgc2tpbGwiCiAgICBd" + - "CiAgfQpdClBLBwhHVWpWSlYAAEpWAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAC8ACQBkYXRh" + - "L252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9leGFtcGxlcy5tZFVUBQABAKbOEiMgRXhh" + - "bXBsZXMKCldvcmtlZCBleGFtcGxlcyBiYXNlZCBvbiByZWFsIGRlcGxveW1lbnQgc2NlbmFyaW9z" + - "LgoKIyMgRXhhbXBsZSAxOiBPdmVycmlkZSBDYXNzYW5kcmEgUmVzb3VyY2VzCgpUaGUgZGVmYXVs" + - "dCBDYXNzYW5kcmEgcmVzb3VyY2UgbGltaXRzIGNhdXNlIE9PTSBvbiBsYXJnZSBpbnN0YW5jZSB0" + - "eXBlcyAoZS5nLiwgYHA1LjQ4eGxhcmdlYCkuCgpQcm9ibGVtOiBDYXNzYW5kcmEgcG9kcyByZXN0" + - "YXJ0IHdpdGggYE9PTUtpbGxlZGAuCgpTb2x1dGlvbjogT3ZlcnJpZGUgcmVzb3VyY2VzIHZpYSBo" + - "ZWxtZmlsZSByZWxlYXNlIHZhbHVlcyBibG9jay4KCiMjIyBTdGVwIDE6IENhcHR1cmUgYmFzZWxp" + - "bmUKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1j" + - "YXNzYW5kcmEgdGVtcGxhdGUgPiAvdG1wL2Nhc3MtYmVmb3JlLnlhbWwKZ3JlcCAtQTggJ3Jlc291" + - "cmNlczonIC90bXAvY2Fzcy1iZWZvcmUueWFtbCB8IGhlYWQgLTEwCmBgYAoKIyMjIFN0ZXAgMjog" + - "QWRkIG92ZXJyaWRlIHRvIGhlbG1maWxlLmQvMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsCgpJ" + - "biB0aGUgZXhhbXBsZXMgYmVsb3csIGA8cHJpdmF0ZS12YWx1ZXM+YCByZWZlcnMgdG8gdGhlIGBz" + - "ZWNyZXRzL2AgZGlyZWN0b3J5IGF0IHRoZSBoZWxtZmlsZSBzdGFjayByb290LgoKYGBgeWFtbAot" + - "IG5hbWU6IGNhc3NhbmRyYQogIHZlcnNpb246IDAuOC4wCiAgY29uZGl0aW9uOiBjYXNzYW5kcmEu" + - "ZW5hYmxlZAogIG5hbWVzcGFjZTogY2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAqZGVwZW5kZW5jeQog" + - "IHZhbHVlczoKICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAtIC4uLzxwcml2YXRlLXZh" + - "bHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCiAgICAt" + - "IGNhc3NhbmRyYToKICAgICAgICByZXNvdXJjZXM6CiAgICAgICAgICBsaW1pdHM6CiAgICAgICAg" + - "ICAgIGNwdTogIjgiCiAgICAgICAgICAgIG1lbW9yeTogODE5Mk1pCiAgICAgICAgICByZXF1ZXN0" + - "czoKICAgICAgICAgICAgY3B1OiAiMiIKICAgICAgICAgICAgbWVtb3J5OiA0MDk2TWkKYGBgCgoj" + - "IyMgU3RlcCAzOiBWZXJpZnkgYW5kIGFwcGx5CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBo" + - "ZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlID4gL3RtcC9jYXNzLWFm" + - "dGVyLnlhbWwKZGlmZiAvdG1wL2Nhc3MtYmVmb3JlLnlhbWwgL3RtcC9jYXNzLWFmdGVyLnlhbWwg" + - "ICMgQ29uZmlybSByZXNvdXJjZXMgY2hhbmdlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUg" + - "LS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSBzeW5jCmBgYAoKTm90ZTogYHJlc291cmNlUHJlc2V0" + - "YCAoYSBCaXRuYW1pIGZlYXR1cmUpIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIE5WQ0YgY2Fzc2Fu" + - "ZHJhIHdyYXBwZXIgY2hhcnQuIFVzZSBleHBsaWNpdCBgcmVzb3VyY2VzYCBpbnN0ZWFkLgoKLS0t" + - "CgojIyBFeGFtcGxlIDI6IERlcGxveSBmcm9tIE5HQyBQcml2YXRlIFJlZ2lzdHJ5IHdpdGggUHVs" + - "bCBTZWNyZXRzCgpEZXBsb3kgdGhlIE5WQ0Ygc3RhY2sgcHVsbGluZyBpbWFnZXMgZGlyZWN0bHkg" + - "ZnJvbSBOR0MgKGBudmNyLmlvYCkgaW5zdGVhZCBvZiBhIG1pcnJvcmVkIHJlZ2lzdHJ5LCB1c2lu" + - "ZyBpbWFnZSBwdWxsIHNlY3JldHMuCgojIyMgU3RlcCAxOiBDb25maWd1cmUgZW52aXJvbm1lbnQg" + - "Zm9yIE5HQwoKYGBgeWFtbAojIGVudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoKICBoZWxt" + - "OgogICAgc291cmNlczoKICAgICAgcmVnaXN0cnk6IG52Y3IuaW8KICAgICAgcmVwb3NpdG9yeTog" + - "bnZpZGlhL252Y2YKICBpbWFnZToKICAgIHJlZ2lzdHJ5OiBudmNyLmlvCiAgICByZXBvc2l0b3J5" + - "OiBudmlkaWEvbnZjZgpgYGAKCiMjIyBTdGVwIDI6IEF1dGhlbnRpY2F0ZSBsb2NhbGx5IChmb3Ig" + - "aGVsbWZpbGUgY2hhcnQgcHVsbHMpCgpgYGBiYXNoCmRvY2tlciBsb2dpbiBudmNyLmlvIC11ICck" + - "b2F1dGh0b2tlbicgLXAgIiROR0NfQVBJX0tFWSIKaGVsbSByZWdpc3RyeSBsb2dpbiBudmNyLmlv" + - "IC11ICckb2F1dGh0b2tlbicgLXAgIiROR0NfQVBJX0tFWSIKYGBgCgojIyMgU3RlcCAzOiBDcmVh" + - "dGUgbmFtZXNwYWNlcyBhbmQgcHVsbCBzZWNyZXRzCgpgYGBiYXNoCmV4cG9ydCBOR0NfQVBJX0tF" + + "IlRoZSBIZWxtZmlsZSBmbG93IGRlc3Ryb3llZCBhbmQgY29uZmlybWVkIGRlcmVnaXN0cmF0aW9u" + + "IG9mIGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciBiZWZvcmUgZGVzdHJveWluZyB0aGUgY29udHJvbCBw" + + "bGFuZSBhbmQgcGFzc2VkIGJvdGggY29udHJvbC1wbGFuZSBrdWJlY29uZmlnIGZvcm1zLiBCZWZv" + + "cmUgZWl0aGVyIGhhbmRvZmYgY291bGQgZGVzdHJveSB0aGUgY29udHJvbCBwbGFuZSwgYm90aCB0" + + "ZWFyZG93biBmbG93cyB3YXJuZWQgdGhhdCBuYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRvZXMgbm90" + + "IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UsIHJlcXVpcmVkIGVmZmVjdGl2ZSBjZXJ0TWFuYWdl" + + "ci5lbmFibGVkOiBmYWxzZSBmb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uIGFuZCBhYm9ydGVk" + + "IGlmIHRydWUsIGFuZCB2ZXJpZmllZCBtYXRjaGluZyByZWxlYXNlIG93bmVyc2hpcCBmb3IgYW4g" + + "aW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxlYXNlLCBhYm9ydGluZyBvbiBtaXNzaW5nIG9yIG1p" + + "c21hdGNoZWQgZXZpZGVuY2UuIFRoZXkgcHJlc2VydmVkIHRoZSBuYW1lc3BhY2UgYnkgZGVmYXVs" + + "dCBhbmQgZGlkIG5vdCBkZWxldGUgaXQgd2l0aG91dCBuYW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQg" + + "ZXhwbGljaXQgY29uZmlybWF0aW9uLiBUaGUgQ0xJIGZsb3cgcmV0YWluZWQgdGhlIGdlbmVyYXRl" + + "ZCByZWdpc3RyYXRpb24gdmFsdWVzLCB1c2VkIHRoZSBmdWxsLXByZWZpeCBzdGF0dXMgY29tbWFu" + + "ZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRoYXQgbmFtZWQtY2x1c3Rl" + + "ciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90IHByZWRpY3QgY29uZGl0" + + "aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLCBhbmQgZ290IGV4cGxpY2l0IGNvbmZpcm1hdGlv" + + "biB3aGVuIHRoZSB0YXJnZXQgd2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3Rlci4gSXQgdGhl" + + "biBwcmV2aWV3ZWQgYW5kIHJhbiBkb3duIHdpdGggdGhlIGZ1bGwgcGVyc2lzdGVudCBwcmVmaXgs" + + "IHJlbW92aW5nIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgdGhlIGxhc3QgcmVnaXN0cmF0" + + "aW9uIHdhcyBnb25lLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdl" + + "bnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9y" + + "ZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIkZvciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRoZSBI" + + "ZWxtZmlsZSBmbG93IHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZSBkZXN0cm95IHRhcmdl" + + "dCB3aXRoIGl0cyBjb21wdXRlIGt1YmVjb25maWciLAogICAgICAiQWZ0ZXIgY29uZmlybWF0aW9u" + + "LCB0aGUgSGVsbWZpbGUgZmxvdyByYW4gY2x1c3RlciBkZWxldGUgd2l0aCBjbHVzdGVySUQgYW5k" + + "IG5jYUlEIGJlZm9yZSBjb250cm9sLXBsYW5lIGRlc3RydWN0aW9uIiwKICAgICAgIkJlZm9yZSBl" + + "aXRoZXIgaGFuZG9mZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBib3RoIHRlYXJk" + + "b3duIGZsb3dzIHdhcm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9lcyBub3QgcHJl" + + "c2VydmUgdGhlIEhlbG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZlIGNlcnRNYW5hZ2VyLmVu" + + "YWJsZWQ6IGZhbHNlIGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24gYW5kIGFib3J0ZWQgaWYg" + + "dHJ1ZSwgYW5kIHZlcmlmaWVkIGludGVuZGVkIHN0YWNrIG93bmVyc2hpcCB3aGVuIGVuYWJsZWQs" + + "IGFib3J0aW5nIG9uIG1pc3Npbmcgb3IgbWlzbWF0Y2hlZCBldmlkZW5jZSIsCiAgICAgICJCb3Ro" + + "IHRlYXJkb3duIGZsb3dzIHByZXNlcnZlZCB0aGUgY2VydC1tYW5hZ2VyIG5hbWVzcGFjZSBieSBk" + + "ZWZhdWx0IGFuZCBkaWQgbm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBwcm92ZW5hbmNl" + + "IGFuZCBleHBsaWNpdCBjb25maXJtYXRpb24iLAogICAgICAiVGhlIEhlbG1maWxlIGZsb3cgcmFu" + + "IGNvbnRyb2wtcGxhbmUgTWFrZWZpbGUgZGVzdHJveSB3aXRoIGJvdGggS1VCRUNPTkZJRyBhbmQg" + + "S1VCRUNPTkZJR19GSUxFIiwKICAgICAgIlRoZSBDTEkgZmxvdyByZXRhaW5lZCBvdXQvPGNsdXN0" + + "ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWwgdW50aWwgdGVhcmRvd24gY29tcGxldGVkIiwK" + + "ICAgICAgIkJlZm9yZSByZWFsIGRvd24sIHRoZSBDTEkgZmxvdyB1c2VkIHRoZSBmdWxsLXByZWZp" + + "eCBzdGF0dXMgY29tbWFuZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRo" + + "YXQgbmFtZWQtY2x1c3RlciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90" + + "IHByZWRpY3QgY29uZGl0aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLCB3YXJuZWQgd2hlbiB0" + + "aGUgdGFyZ2V0IHdhcyB0aGUgbGFzdCByZWdpc3RlcmVkIGNsdXN0ZXIsIGFuZCBnb3QgZXhwbGlj" + + "aXQgY29uZmlybWF0aW9uIiwKICAgICAgIlRoZSBDTEkgZmxvdyB1c2VkIC0tY29uZmlnLCBib3Ro" + + "IHN0YWNrIHBhdGhzLCAtLWVudiwgLS1wbGFpbiwgYm90aCBjb250ZXh0cywgYW5kIC0taWNtcy11" + + "cmwgZm9yIGRvd24gLS1wbGFuLW9ubHkgYW5kIHRoZW4gZG93biIsCiAgICAgICJUaGUgYWdlbnQg" + + "c3RhdGVkIHRoYXQgZG93biB1bnJlZ2lzdGVycyBlYWNoIGNvbXB1dGUgY2x1c3RlciBhbmQgcmVt" + + "b3ZlcyB0aGUgY29udHJvbCBwbGFuZSBvbmx5IGFmdGVyIG5vIHJlZ2lzdHJhdGlvbnMgcmVtYWlu" + + "IgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMxMy12YWx1ZXMtcHJlY2VkZW5jZSIsCiAgICAi" + + "cXVlc3Rpb24iOiAiSSBhZGRlZCBhIHZhbHVlIHRvIG15IGVudmlyb25tZW50IFlBTUwgYnV0IGl0" + + "J3MgYmVpbmcgc2lsZW50bHkgaWdub3JlZC4gSG93IGRvIGhlbG1maWxlIHZhbHVlcyB3b3JrIGlu" + + "IE5WQ0Y/IiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + + "YXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSB2YWx1" + + "ZXMgcHJlY2VkZW5jZSBjaGFpbiAoYmFzZS55YW1sLCBlbnYgWUFNTCwgZ2xvYmFsLnlhbWwuZ290" + + "bXBsLCBzZWNyZXRzLCBpbmxpbmUgdmFsdWVzKSwgaWRlbnRpZmllZCB0aGF0IGdsb2JhbC55YW1s" + + "LmdvdG1wbCBvbmx5IHBhc3NlcyB0aHJvdWdoIHNwZWNpZmljIGtleXMsIGFuZCBleHBsYWluZWQg" + + "dGhhdCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzIG11c3QgdXNlIHJlbGVhc2UgaW5saW5lIHZhbHVl" + + "cyBibG9ja3MuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCBy" + + "ZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRh" + + "a2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgdmFsdWVzIHByZWNl" + + "ZGVuY2UgY2hhaW46IGJhc2UueWFtbCAtPiBlbnYgWUFNTCAtPiBnbG9iYWwueWFtbC5nb3RtcGwg" + + "LT4gc2VjcmV0cyAtPiBpbmxpbmUgdmFsdWVzIiwKICAgICAgIlRoZSBhZ2VudCBpZGVudGlmaWVk" + + "IHRoYXQgZ2xvYmFsLnlhbWwuZ290bXBsIG9ubHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMga2V5" + + "cyAoY2Fzc2FuZHJhLnJlcGxpY2FDb3VudCwgZ2xvYmFsLnN0b3JhZ2VDbGFzcywgZ2xvYmFsLmlt" + + "YWdlLCBldGMuKSIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgYXJiaXRyYXJ5IGNo" + + "YXJ0IHZhbHVlcyBtdXN0IGJlIHNldCB2aWEgcmVsZWFzZSBpbmxpbmUgdmFsdWVzOiBibG9ja3Mi" + + "LAogICAgICAiVGhlIGFnZW50IGxpc3RlZCBleGFtcGxlcyBvZiB2YWx1ZXMgdGhhdCBhcmUgcHJv" + + "cGFnYXRlZCBhbmQgYXJiaXRyYXJ5IGNoYXJ0IHZhbHVlcyB0aGF0IHJlcXVpcmUgYSByZWxlYXNl" + + "IHZhbHVlcyBibG9jayIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTMTQtZW5hYmxlLWxsbS1m" + + "dW5jdGlvbnMiLAogICAgInF1ZXN0aW9uIjogIkkgbmVlZCB0byBkZXBsb3kgZnVuY3Rpb25UeXBl" + + "OiBMTE0gZnVuY3Rpb25zIG9uIGEgc2VsZi1tYW5hZ2VkLCBzaW5nbGUtbm9kZSBpc29sYXRlZCB0" + + "ZXN0IGNsdXN0ZXIuIFdoYXQgSGVsbWZpbGUgY29uZmlndXJhdGlvbiBhbmQgdmVyaWZpY2F0aW9u" + + "IHN0ZXBzIGRvIEkgbmVlZD8iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5h" + + "Z2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBlbmFibGVk" + + "IHRoZSBMTE0gYWRkb24gd2l0aCBhZGRvbnMubGxtLmVuYWJsZWQsIGNvbmZpZ3VyZWQgc2luZ2xl" + + "IHJlcGxpY2FzIGZvciB0aGUgTExNIEFQSSBHYXRld2F5IGFuZCByZXF1ZXN0IHJvdXRlciwgYW5k" + + "IGV4cGxhaW5lZCB0aGF0IHRoZSByZXF1ZXN0IHJvdXRlciB1c2VzIHBvd2VyLW9mLXR3byB3aGVu" + + "IG5vIGxvYWQtYmFsYW5jZXIgY29uZmlndXJhdGlvbiBpcyBzZXQuIEl0IGxpbmtlZCB0aGUgY2Fu" + + "b25pY2FsIHJlcXVlc3Qtcm91dGVyIGxvYWQtYmFsYW5jaW5nIGd1aWRlIGZvciBvdGhlciByb3V0" + + "aW5nIG1ldGhvZHMuIEZvciB0aGUgaXNvbGF0ZWQgcGxhaW50ZXh0IGNsdXN0ZXIsIGl0IHJlbGll" + + "ZCBvbiB0aGUgc2VsZi1tYW5hZ2VkIHN0YWNrIGRlZmF1bHQgZm9yIHRoZSBidW5kbGVkIGdhdGV3" + + "YXktdG8tQVBJIGF1dGhlbnRpY2F0aW9uIGhvcCBhbmQgaW5jbHVkZWQgYWdlbnRDb25maWcubWVy" + + "Z2VDb25maWcud29ya2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUgZm9yIHRoZSBzZXBhcmF0ZSB3" + + "b3JrZXIgdHJhbnNwb3J0LCB3aXRoIGEgd2FybmluZyB0aGF0IHBsYWludGV4dCB3b3JrZXIgdHJh" + + "bnNwb3J0IGlzIG5vdCBmb3IgcHJvZHVjdGlvbi4gSXQgcmVmcmVzaGVkIHRoZSBjb21wdXRlIHBs" + + "YW5lIHVzaW5nIHRoZSBzYW1lIGhhbmRvZmYgdXNlZCBkdXJpbmcgaW5zdGFsbGF0aW9uLCByZWRl" + + "cGxveWVkIGV4aXN0aW5nIExMTSBmdW5jdGlvbnMsIGFuZCB2ZXJpZmllZCB0aGUgTExNIGRlcGxv" + + "eW1lbnRzLCByb3V0ZSwgYW5kIGxsbS13b3JrZXIgc2lkZWNhci4iLAogICAgImV4cGVjdGVkX2Jl" + + "aGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHVzZWQgYWRkb25zLmxsbS5lbmFibGVkLCBub3Qg" + + "dGhlIG9ic29sZXRlIGxsbS5lbmFibGVkIHBhdGgiLAogICAgICAiVGhlIGFnZW50IHNldCBnYXRl" + + "d2F5IGFuZCByZXF1ZXN0Um91dGVyIHJlcGxpY2FDb3VudCB0byAxIGZvciB0aGUgc2luZ2xlLW5v" + + "ZGUgdGVzdCBjbHVzdGVyIiwKICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCB0aGUgcmVxdWVz" + + "dCByb3V0ZXIgZGVmYXVsdHMgdG8gcG93ZXItb2YtdHdvIGFuZCBsaW5rZWQgdGhlIGNhbm9uaWNh" + + "bCByZXF1ZXN0LXJvdXRlciBsb2FkLWJhbGFuY2luZyBndWlkZSBmb3Igb3RoZXIgbWV0aG9kcyIs" + + "CiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgdGhlIGJ1bmRsZWQgZ2F0ZXdheS10by1B" + + "UEkgYXV0aGVudGljYXRpb24gaG9wIGRlZmF1bHRzIHRvIHBsYWludGV4dCwgaW5jbHVkZWQgd29y" + + "a2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUgb25seSBmb3IgdGhlIGlzb2xhdGVkIHdvcmtlciB0" + + "cmFuc3BvcnQsIGFuZCB3YXJuZWQgYWdhaW5zdCBwbGFpbnRleHQgd29ya2VyIHRyYW5zcG9ydCBp" + + "biBwcm9kdWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBhcHBsaWVkIHRoZSBjb250cm9sLXBsYW5l" + + "IEhlbG1maWxlIGVudmlyb25tZW50LCByZWZyZXNoZWQgdGhlIGNvbXB1dGUgcGxhbmUgd2l0aCB0" + + "aGUgc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLCBhbmQgcmVjcmVhdGVkIG9yIHJlZGVwbG95ZWQgZXhp" + + "c3RpbmcgTExNIGZ1bmN0aW9ucyIsCiAgICAgICJUaGUgYWdlbnQgdmVyaWZpZWQgbGxtLWFwaS1n" + + "YXRld2F5LCBsbG0tcmVxdWVzdC1yb3V0ZXIsIHRoZSBMTE0gSFRUUFJvdXRlLCBhbmQgdGhlIGxs" + + "bS13b3JrZXIgc2lkZWNhciBpbmNsdWRpbmcgLS1xdWljLWluc2VjdXJlIgogICAgXQogIH0sCiAg" + + "ewogICAgImlkIjogIkc4LU5FRy1ub3QtZm9yLWszZCIsCiAgICAicXVlc3Rpb24iOiAiU2V0IHVw" + + "IGEgbG9jYWwgTlZDRiBkZXYgY2x1c3RlciB1c2luZyBrM2QgZm9yIHRlc3RpbmciLAogICAgImV4" + + "cGVjdGVkX3NraWxsIjogbnVsbCwKICAgICJzaG91bGRfdHJpZ2dlciI6IGZhbHNlLAogICAgImdy" + + "b3VuZF90cnV0aCI6ICJUaGlzIGlzIGEgbG9jYWwgazNkIGRldmVsb3BtZW50IHJlcXVlc3QgdGhh" + + "dCBiZWxvbmdzIHRvIHRoZSBudmNmLXNlbGYtaG9zdGVkLWxvY2FsLWRldiBza2lsbCwgbm90IG52" + + "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi4gVGhlIGFnZW50IGRpZCBub3QgcmVhZCBvciB1" + + "c2UgdGhlIHNlbGYtbWFuYWdlZCBpbnN0YWxsYXRpb24gc2tpbGwgYW5kIGluc3RlYWQgcHJvdmlk" + + "ZWQgazNkLXNwZWNpZmljIGd1aWRhbmNlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAg" + + "ICAgICJUaGUgYWdlbnQgZGlkIG5vdCByZWFkIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + + "bi9TS0lMTC5tZCIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm92aWRlIGhlbG1maWxlLWJh" + + "c2VkIHByb2R1Y3Rpb24gZGVwbG95bWVudCBpbnN0cnVjdGlvbnMiLAogICAgICAiVGhlIGFnZW50" + + "IHByb3ZpZGVkIGszZC1zcGVjaWZpYyBsb2NhbCBkZXZlbG9wbWVudCBndWlkYW5jZSBvciBkZWZl" + + "cnJlZCB0byB0aGUgYXBwcm9wcmlhdGUgbG9jYWwtZGV2IHNraWxsIgogICAgXQogIH0KXQpQSwcI" + + "R1VqVkpWAABKVgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAvAAkAZGF0YS9udmNmLXNlbGYt" + + "bWFuYWdlZC1pbnN0YWxsYXRpb24vZXhhbXBsZXMubWRVVAUAAQCmzhIjIEV4YW1wbGVzCgpXb3Jr" + + "ZWQgZXhhbXBsZXMgYmFzZWQgb24gcmVhbCBkZXBsb3ltZW50IHNjZW5hcmlvcy4KCiMjIEV4YW1w" + + "bGUgMTogT3ZlcnJpZGUgQ2Fzc2FuZHJhIFJlc291cmNlcwoKVGhlIGRlZmF1bHQgQ2Fzc2FuZHJh" + + "IHJlc291cmNlIGxpbWl0cyBjYXVzZSBPT00gb24gbGFyZ2UgaW5zdGFuY2UgdHlwZXMgKGUuZy4s" + + "IGBwNS40OHhsYXJnZWApLgoKUHJvYmxlbTogQ2Fzc2FuZHJhIHBvZHMgcmVzdGFydCB3aXRoIGBP" + + "T01LaWxsZWRgLgoKU29sdXRpb246IE92ZXJyaWRlIHJlc291cmNlcyB2aWEgaGVsbWZpbGUgcmVs" + + "ZWFzZSB2YWx1ZXMgYmxvY2suCgojIyMgU3RlcCAxOiBDYXB0dXJlIGJhc2VsaW5lCgpgYGBiYXNo" + + "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRl" + + "bXBsYXRlID4gL3RtcC9jYXNzLWJlZm9yZS55YW1sCmdyZXAgLUE4ICdyZXNvdXJjZXM6JyAvdG1w" + + "L2Nhc3MtYmVmb3JlLnlhbWwgfCBoZWFkIC0xMApgYGAKCiMjIyBTdGVwIDI6IEFkZCBvdmVycmlk" + + "ZSB0byBoZWxtZmlsZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbAoKSW4gdGhlIGV4YW1w" + + "bGVzIGJlbG93LCBgPHByaXZhdGUtdmFsdWVzPmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRp" + + "cmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUgc3RhY2sgcm9vdC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNz" + + "YW5kcmEKICB2ZXJzaW9uOiAwLjguMAogIGNvbmRpdGlvbjogY2Fzc2FuZHJhLmVuYWJsZWQKICBu" + + "YW1lc3BhY2U6IGNhc3NhbmRyYS1zeXN0ZW0KICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAg" + + "ICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJl" + + "cXVpcmVkRW52ICJIRUxNRklMRV9FTlYiIH19LXNlY3JldHMueWFtbAogICAgLSBjYXNzYW5kcmE6" + + "CiAgICAgICAgcmVzb3VyY2VzOgogICAgICAgICAgbGltaXRzOgogICAgICAgICAgICBjcHU6ICI4" + + "IgogICAgICAgICAgICBtZW1vcnk6IDgxOTJNaQogICAgICAgICAgcmVxdWVzdHM6CiAgICAgICAg" + + "ICAgIGNwdTogIjIiCiAgICAgICAgICAgIG1lbW9yeTogNDA5Nk1pCmBgYAoKIyMjIFN0ZXAgMzog" + + "VmVyaWZ5IGFuZCBhcHBseQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1z" + + "ZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSA+IC90bXAvY2Fzcy1hZnRlci55YW1sCmRp" + + "ZmYgL3RtcC9jYXNzLWJlZm9yZS55YW1sIC90bXAvY2Fzcy1hZnRlci55YW1sICAjIENvbmZpcm0g" + + "cmVzb3VyY2VzIGNoYW5nZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3Ig" + + "bmFtZT1jYXNzYW5kcmEgc3luYwpgYGAKCk5vdGU6IGByZXNvdXJjZVByZXNldGAgKGEgQml0bmFt" + + "aSBmZWF0dXJlKSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBOVkNGIGNhc3NhbmRyYSB3cmFwcGVy" + + "IGNoYXJ0LiBVc2UgZXhwbGljaXQgYHJlc291cmNlc2AgaW5zdGVhZC4KCi0tLQoKIyMgRXhhbXBs" + + "ZSAyOiBEZXBsb3kgZnJvbSBOR0MgUHJpdmF0ZSBSZWdpc3RyeSB3aXRoIFB1bGwgU2VjcmV0cwoK" + + "RGVwbG95IHRoZSBOVkNGIHN0YWNrIHB1bGxpbmcgaW1hZ2VzIGRpcmVjdGx5IGZyb20gTkdDIChg" + + "bnZjci5pb2ApIGluc3RlYWQgb2YgYSBtaXJyb3JlZCByZWdpc3RyeSwgdXNpbmcgaW1hZ2UgcHVs" + + "bCBzZWNyZXRzLgoKIyMjIFN0ZXAgMTogQ29uZmlndXJlIGVudmlyb25tZW50IGZvciBOR0MKCmBg" + + "YHlhbWwKIyBlbnZpcm9ubWVudHMvPGVudj4ueWFtbApnbG9iYWw6CiAgaGVsbToKICAgIHNvdXJj" + + "ZXM6CiAgICAgIHJlZ2lzdHJ5OiBudmNyLmlvCiAgICAgIHJlcG9zaXRvcnk6IG52aWRpYS9udmNm" + + "CiAgaW1hZ2U6CiAgICByZWdpc3RyeTogbnZjci5pbwogICAgcmVwb3NpdG9yeTogbnZpZGlhL252" + + "Y2YKYGBgCgojIyMgU3RlcCAyOiBBdXRoZW50aWNhdGUgbG9jYWxseSAoZm9yIGhlbG1maWxlIGNo" + + "YXJ0IHB1bGxzKQoKYGBgYmFzaApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4n" + + "IC1wICIkTkdDX0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRo" + + "dG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmBgYAoKIyMjIFN0ZXAgMzogQ3JlYXRlIG5hbWVzcGFj" + + "ZXMgYW5kIHB1bGwgc2VjcmV0cwoKYGBgYmFzaApleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLW5n" + + "Yy1hcGkta2V5PiIKCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2Yg" + + "YXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwg" + + "LS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3BhY2UgIiRucyIg" + + "XAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + + "b2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpkb25lCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5" + + "c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQt" + + "bWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBj" + + "cmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNl" + + "cnZlcj1udmNyLmlvIFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAg" + + "LS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIg" + + "XAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + + "b2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpkb25lCmBgYAoKIyMjIFN0ZXAgNDogQWRkIGlt" + + "YWdlUHVsbFNlY3JldHMgdG8gaGVsbWZpbGUgcmVsZWFzZXMKCkFkZCB0aGUgY2hhcnQtc3BlY2lm" + + "aWMgYGltYWdlUHVsbFNlY3JldHNgIGtleSB0byBlYWNoIHJlbGVhc2UuIEV4YW1wbGUgZm9yIGNh" + + "c3NhbmRyYSBpbiBgaGVsbWZpbGUuZC8wMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGxgOgoKYGBg" + + "eWFtbAotIG5hbWU6IGNhc3NhbmRyYQogIHZlcnNpb246IDAuOC4wCiAgY29uZGl0aW9uOiBjYXNz" + + "YW5kcmEuZW5hYmxlZAogIG5hbWVzcGFjZTogY2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAqZGVwZW5k" + + "ZW5jeQogIHZhbHVlczoKICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAtIC4uLzxwcml2" + + "YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1s" + + "CiAgICAtIGNhc3NhbmRyYToKICAgICAgICBnbG9iYWw6CiAgICAgICAgICBpbWFnZVB1bGxTZWNy" + + "ZXRzOgogICAgICAgICAgICAtIG52Y3ItY3JlZHMKYGBgCgpTZWUgW3JlZmVyZW5jZXMvcHVsbC1z" + + "ZWNyZXRzLm1kXShyZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCkgZm9yIHRoZSBrZXkgZm9yIGV2" + + "ZXJ5IGNoYXJ0LgoKVGhlc2UgYXJlIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcy4gRm9yIGEgc2Vw" + + "YXJhdGUgY29tcHV0ZSBjbHVzdGVyLCBjcmVhdGUgdGhlCnNlY3JldCBvbmx5IGluIGBudmNhLW9w" + + "ZXJhdG9yYDsgdGhlIGNoYXJ0IGFuZCBvcGVyYXRvciBtaXJyb3IgaXQgdG8KYG52Y2Etc3lzdGVt" + + "YC4gU2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21w" + + "dXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCNwdWxsLXNlY3JldHMpLgoKIyMjIFN0ZXAgNTogRGVw" + + "bG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLWt1YmUtY29udGV4dCA8" + + "Y29udHJvbC1wbGFuZS1jb250ZXh0PiBzeW5jCmBgYAoKIyMjIFN0ZXAgNjogUGF0Y2ggU2Vydmlj" + + "ZUFjY291bnRzIGZvciBjaGFydHMgd2l0aG91dCBuYXRpdmUgc3VwcG9ydAoKQWZ0ZXIgUGhhc2Ug" + + "MSAoZGVwZW5kZW5jaWVzKSBjb21wbGV0ZXMsIE9wZW5CYW8gcG9kcyB3aWxsIGJlIGluIGBJbWFn" + + "ZVB1bGxCYWNrT2ZmYC4gUGF0Y2ggYW5kIHJlc3RhcnQ6CgpgYGBiYXNoCmZvciBucyBpbiB2YXVs" + + "dC1zeXN0ZW0gbnZjZiBlc3M7IGRvCiAgZm9yIHNhIGluICQoa3ViZWN0bCAtLWNvbnRleHQgPGNv" + + "bnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHNhIC1uICIkbnMiIFwKICAgIC0tbm8taGVhZGVycyAt" + + "byBjdXN0b20tY29sdW1ucz0iOm1ldGFkYXRhLm5hbWUiKTsgZG8KICAgIGt1YmVjdGwgLS1jb250" + + "ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IHBhdGNoIHNlcnZpY2VhY2NvdW50IC1uICIkbnMi" + + "ICIkc2EiIFwKICAgICAgLXAgJ3siaW1hZ2VQdWxsU2VjcmV0cyI6IFt7Im5hbWUiOiAibnZjci1j" + + "cmVkcyJ9XX0nCiAgZG9uZQpkb25lCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + + "bnRleHQ+IGRlbGV0ZSBwb2RzIC1uIHZhdWx0LXN5c3RlbSAtLWFsbApgYGAKClZlcmlmeToKCmBg" + + "YGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGV2ZW50" + + "cyAtbiB2YXVsdC1zeXN0ZW0gXAogIC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAnIHwgZ3JlcCAt" + + "aSBwdWxsCiMgU2hvdWxkIHNob3cgIlN1Y2Nlc3NmdWxseSBwdWxsZWQgaW1hZ2UiIGZyb20gbnZj" + + "ci5pbwpgYGAKCi0tLQoKIyMgRXhhbXBsZSAzOiBGdWxsIFRlYXJkb3duIGFuZCBSZWluc3RhbGwK" + + "CldoZW4gYSBkZXBsb3ltZW50IGlzIGJyb2tlbiBhbmQgeW91IG5lZWQgYSBjbGVhbiBzbGF0ZS4K" + + "CiMjIyBTdGVwIDE6IERlc3Ryb3kgdGhlIGNvbXB1dGUtcGxhbmUgc3RhY2sKCmBgYGJhc2gKbWFr" + + "ZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVS" + + "X05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJ" + + "R19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKSWYgY29tcHV0ZSBjbGVhbnVw" + + "IGlzIHN0dWNrIG9uIGZpbmFsaXplcnMsIHVzZSB0aGUgY29tcHV0ZS1jb250ZXh0IHByb2NlZHVy" + + "ZSBpbgpbZGVidWdnaW5nLm1kXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCNmYWlsdXJlLW52Y2Et" + + "Y2xlYW51cC1zdHVjay1maW5hbGl6ZXJzKS4KCiMjIyBTdGVwIDI6IERlcmVnaXN0ZXIgdGhlIGNv" + + "bXB1dGUgY2x1c3RlcgoKUmVhZCBgY2x1c3RlcklEYCBhbmQgYG5jYUlEYCBmcm9tCmBkZXBsb3kv" + + "c3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9yZWdpc3RyYXRpb24vPGNsdXN0ZXItbmFtZT4tcmVn" + + "aXN0ZXItdmFsdWVzLnlhbWxgLgpTaG93IHRoZSBJRCBhbmQgZ2V0IGNvbmZpcm1hdGlvbiBiZWZv" + + "cmUgZGVsZXRpbmcgdGhlIElDTVMgcm93OgoKYGBgYmFzaAo8bnZjZi1jbGk+IC0tY29uZmlnIDxj" + + "b25maWc+IGNsdXN0ZXIgZGVsZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1y" + + "ZWdpc3RyYXRpb24tdmFsdWVzPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1p" + + "c3NpbmcKYGBgCgpSZXBlYXQgc3RlcHMgMSBhbmQgMiBmb3IgZXZlcnkgY29tcHV0ZSBjbHVzdGVy" + + "LgoKIyMjIFN0ZXAgMzogRGVzdHJveSB0aGUgY29udHJvbC1wbGFuZSBzdGFjawoKUHJlc2VydmUg" + + "dGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3BhY2UgcHJlc2Vy" + + "dmF0aW9uIGRvZXMKbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEJlZm9yZSBydW5uaW5n" + + "IGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIKY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLiBGb3Ig" + + "YW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZQpgY2VydE1hbmFnZXIu" + + "ZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQK" + + "c3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVk" + + "OiB0cnVlYCwgdmVyaWZ5Cm1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQg" + + "YWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkCmV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNw" + + "YWNlIHJlbW92YWwgYWZ0ZXIgdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZApnZXR0" + + "aW5nIGV4cGxpY2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlIGRvIG5vdCBkZWxldGUgaXQuCgpg" + + "YGBiYXNoCktVQkVDT05GSUc9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4gXAptYWtlIC1DIGRl" + + "cGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIGRlc3Ryb3kgXAogIEhFTE1GSUxFX0VOVj08ZW52PiBc" + + "CiAgS1VCRUNPTkZJR19GSUxFPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKUGFzcyBi" + + "b3RoIGt1YmVjb25maWcgZm9ybXMgYmVjYXVzZSBjb250cm9sLXBsYW5lIG5hbWVzcGFjZSBjbGVh" + + "bnVwIHVzZXMKYW1iaWVudCBga3ViZWN0bGAuCgojIyMgU3RlcCA0OiBWZXJpZnkgY2xlYW4KCmBg" + + "YGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG5zIHwg" + + "XAogIGdyZXAgLUUgJyhudmNhfG52Y2YtYmFja2VuZHxncm92ZXxkeW5hbW8pJwprdWJlY3RsIC0t" + + "Y29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgbnMgfCBcCiAgZ3JlcCAtRSAnKGNh" + + "c3NhbmRyYXxuYXRzfHZhdWx0fG52Y2Z8YXBpLWtleXN8ZXNzfHNpcyknCiMgQm90aCBjb21tYW5k" + + "cyBzaG91bGQgcmV0dXJuIGVtcHR5LgpgYGAKCiMjIyBTdGVwIDU6IFJlaW5zdGFsbCBpbiBzcGxp" + + "dCBvcmRlcgoKRm9sbG93IFtDbGVhbiBJbnN0YWxsYXRpb25dKFNLSUxMLm1kI2NsZWFuLWluc3Rh" + + "bGxhdGlvbiksIHRoZW4gcmV0dXJuIHRvIHRoZQpzYW1lIGhhbmRvZmYgaW4gW1NwbGl0IENvbXB1" + + "dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0" + + "aW9uLm1kKS4KCi0tLQoKIyMgRXhhbXBsZSA0OiBSZWNvdmVyIGZyb20gYSBHYXRld2F5IEVuZHBv" + + "aW50IENoYW5nZQoKVGhlIHNlcGFyYXRlbHkgcHJvdmlzaW9uZWQgR2F0ZXdheSBvciBpdHMgbG9h" + + "ZCBiYWxhbmNlciB3YXMgcmVjcmVhdGVkIGFuZCBnb3QgYSBuZXcgZW5kcG9pbnQuCgojIyMgU3Rl" + + "cCAxOiBHZXQgdGhlIG5ldyBlbmRwb2ludAoKYGBgYmFzaApHQVRFV0FZX0FERFI9JChrdWJlY3Rs" + + "IC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1n" + + "YXRld2F5IC1uIGVudm95LWdhdGV3YXkgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNz" + + "ZXNbMF0udmFsdWV9JykKdGVzdCAtbiAiJEdBVEVXQVlfQUREUiIKYGBgCgojIyMgU3RlcCAyOiBV" + + "cGRhdGUgRE5TIGFuZCBkaXJlY3QgYWRkcmVzcyBmaWVsZHMKCktlZXAgYGdsb2JhbC5kb21haW5g" + + "LCByb3V0ZSBob3N0bmFtZXMsIGFuZCBDTEkgSG9zdCBmaWVsZHMgdW5jaGFuZ2VkLiBQb2ludCB0" + + "aGUKRE5TIHJlY29yZHMgZm9yIHJlbmRlcmVkIHJvdXRlIGhvc3RuYW1lcywgc3VjaCBhcyBgYXBp" + + "Ljxkb21haW4+YCBhbmQKYCouaW52b2NhdGlvbi48ZG9tYWluPmAsIHRvIGBHQVRFV0FZX0FERFJg" + + "LiBGb3IgYSB0ZW1wb3JhcnkgZW52aXJvbm1lbnQgd2l0aG91dApETlMsIGtlZXAgaXRzIHJlc2Vy" + + "dmVkIHJvdXRlIHN1ZmZpeCBhbmQgY29ubmVjdCB0byBgR0FURVdBWV9BRERSYCB3aXRoIHRoZQpt" + + "YXRjaGluZyBgSG9zdGAgaGVhZGVyLgoKRm9yIGEgc3BsaXQgZGVwbG95bWVudCBjb25maWd1cmVk" + + "IHdpdGggZGlyZWN0IEdhdGV3YXkgYWRkcmVzc2VzLCByZXBsYWNlIG9ubHkKdGhlIGFkZHJlc3Mt" + + "YmVhcmluZyB2YWx1ZXM6IGNvbnRyb2wtcGxhbmUgYG52Y2ZOYXRzU2VydmljZVVSTGAsIGNvbXB1" + + "dGUtcGxhbmUKSUNNUywgUmVWYWwsIGFuZCBOQVRTIFVSTHMsIGFuZCBDTEkgVVJMIGZpZWxkcy4g" + + "S2VlcCB0aGVpciBkb21haW4gYW5kIEhvc3QKb3ZlcnJpZGVzIHVuY2hhbmdlZC4gUmVmcmVzaCBy" + + "ZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlvbiB0aHJvdWdoIHRoZSBzYW1lCmhhbmRvZmYgdXNl" + + "ZCBvcmlnaW5hbGx5LiBTZWUKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZl" + + "cmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKQpmb3IgdGhlIGZpZWxkcyBhbmQg" + + "Y29tcGxldGUgY29tbWFuZHMuCgojIyMgU3RlcCAzOiBWZXJpZnkgYm90aCBjb250ZXh0cwoKYGBg" + + "YmFzaApkaWcgK3Nob3J0ICJhcGkuPGRvbWFpbj4iCmN1cmwgLUggIkhvc3Q6IGFwaS48ZG9tYWlu" + + "PiIgImh0dHA6Ly8kR0FURVdBWV9BRERSL2hlYWx0aCIKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + + "b2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAtbiBlbnZveS1n" + + "YXRld2F5IC1vIHdpZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4g" + + "Z2V0IGh0dHByb3V0ZXMgLUEKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4" + + "dD4gZ2V0IHRjcHJvdXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250" + + "ZXh0PiByb2xsb3V0IHN0YXR1cyBcCiAgZGVwbG95bWVudC9udmNhLW9wZXJhdG9yIC1uIG52Y2Et" + + "b3BlcmF0b3IgLS10aW1lb3V0PTEwbQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1j" + + "b250ZXh0PiB3YWl0IFwKICBudmNmYmFja2VuZC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+" + + "IC1uIG52Y2Etb3BlcmF0b3IgXAogIC0tZm9yPWpzb25wYXRoPSd7LnN0YXR1cy5hZ2VudFN0YXR1" + + "c30nPWhlYWx0aHkgLS10aW1lb3V0PTEwbQpgYGAKCi0tLQoKIyMgRXhhbXBsZSA1OiBEZXBsb3kg" + + "T25seSBEZXBlbmRlbmNpZXMKClVzZWZ1bCBmb3IgdGVzdGluZyBvciB3aGVuIGl0ZXJhdGluZyBv" + + "biBzZXJ2aWNlIGNvbmZpZ3VyYXRpb24uCgpgYGBiYXNoCiMgRGVwbG95IGp1c3QgTkFUUywgQ2Fz" + + "c2FuZHJhLCBPcGVuQmFvCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJl" + + "bGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMKCiMgQ2hlY2sgc3RhdHVzCmt1YmVjdGwgZ2V0" + + "IHBvZHMgLW4gbmF0cy1zeXN0ZW0Ka3ViZWN0bCBnZXQgcG9kcyAtbiBjYXNzYW5kcmEtc3lzdGVt" + + "Cmt1YmVjdGwgZ2V0IHBvZHMgLW4gdmF1bHQtc3lzdGVtCgojIERlcGxveSBqdXN0IG9uZSBzcGVj" + + "aWZpYyByZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9" + + "Y2Fzc2FuZHJhIHN5bmMKYGBgCgojIyMgU2VsZWN0b3IgcmVmZXJlbmNlCgp8IFNlbGVjdG9yIHwg" + + "UmVsZWFzZXMgfAp8LS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGByZWxlYXNlLWdyb3VwPWRlcGVu" + + "ZGVuY2llc2AgfCBuYXRzLCBjYXNzYW5kcmEsIG9wZW5iYW8tc2VydmVyIHwKfCBgcmVsZWFzZS1n" + + "cm91cD1zZXJ2aWNlc2AgfCBhcGkta2V5cywgc2lzLCBhcGksIGludm9jYXRpb24tc2VydmljZSwg" + + "Z3JwYy1wcm94eSwgZXNzLWFwaSwgbm90YXJ5LXNlcnZpY2UsIHJldmFsLCBvcHRpb25hbCBsbG0t" + + "cmVxdWVzdC1yb3V0ZXIgYW5kIGxsbS1hcGktZ2F0ZXdheSB3aGVuIGBsbG0uZW5hYmxlZD10cnVl" + + "YCwgb3B0aW9uYWwgdmFuaXR5LWdhdGV3YXkgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGlu" + + "Y2x1ZGUgdGhlIGFkZG9uIGFuZCBoYXZlIGBhZGRvbnMudmFuaXR5R2F0ZXdheS5lbmFibGVkPXRy" + + "dWVgLCBvcHRpb25hbCBudmNmLXVpIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRl" + + "IHRoZSBhZGRvbiBhbmQgaGF2ZSBgYWRkb25zLm52Y2ZVaS5lbmFibGVkPXRydWVgIHwKfCBgbmFt" + + "ZT1sbG0tcmVxdWVzdC1yb3V0ZXJgIHwgRGVwbG95IGp1c3QgdGhlIExMTSByZXF1ZXN0IHJvdXRl" + + "ciB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCB8CnwgYG5hbWU9bGxtLWFwaS1nYXRld2F5YCB8IERl" + + "cGxveSBqdXN0IHRoZSBMTE0gQVBJIGdhdGV3YXkgd2hlbiBgbGxtLmVuYWJsZWQ9dHJ1ZWAgfAp8" + + "IGBuYW1lPXZhbml0eS1nYXRld2F5YCB8IERlcGxveSBqdXN0IFZhbml0eSBHYXRld2F5IG9ubHkg" + + "d2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5kIGBhZGRvbnMu" + + "dmFuaXR5R2F0ZXdheS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1udmNmLXVpYCB8IERlcGxveSBO" + + "VkNGIFVJIG9ubHkgd2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2Ug" + + "YW5kIGBhZGRvbnMubnZjZlVpLmVuYWJsZWQ9dHJ1ZWAgfAp8IGByZWxlYXNlLWdyb3VwPWluZ3Jl" + + "c3NgIHwgaW5ncmVzcyAoZ2F0ZXdheSByb3V0ZXMpIHwKfCBgbmFtZT08cmVsZWFzZT5gIHwgQW55" + + "IGluZGl2aWR1YWwgcmVsZWFzZSBieSBuYW1lIHwKCk5vdGU6IGBhZG1pbi1pc3N1ZXItcHJveHlg" + + "IGRvZXMgbm90IGhhdmUgYSByZWxlYXNlLWdyb3VwIGxhYmVsLiBUYXJnZXQgaXQgd2l0aCBgLS1z" + + "ZWxlY3RvciBuYW1lPWFkbWluLWlzc3Vlci1wcm94eWAuClBLBwgCUk5AfygAAH8oAABQSwMEFAAI" + + "AAAAAAAhAAAAAAAAAAAAAAAAAEwACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + + "bi9yZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kVVQFAAEAps4SIyBTcGxp" + + "dCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbgoKVGhlIGNvbnRyb2wgcGxhbmUgYW5kIGNvbXB1" + + "dGUgcGxhbmUgYXJlIHNlcGFyYXRlIHN0YWNrcy4gSW5zdGFsbCB0aGUgY29udHJvbApwbGFuZSBm" + + "aXJzdCwgdGhlbiByZWdpc3RlciBhbmQgaW5zdGFsbCBlYWNoIGNvbXB1dGUgY2x1c3Rlci4gQ2hv" + + "b3NlIG9uZSBoYW5kb2ZmCmJlbG93IGFuZCB1c2UgaXQgZm9yIHRoZSBmdWxsIGxpZmVjeWNsZS4g" + + "RG8gbm90IGNvbWJpbmUgYSBDTEktZ2VuZXJhdGVkIHByb2ZpbGUKd2l0aCB0aGUgSGVsbWZpbGUg" + + "dmFsdWVzIGZsb3cuCgojIyBDaG9vc2UgYSBIYW5kb2ZmCgp8IEZsb3cgfCBTb3VyY2Ugb2YgY29u" + + "dHJvbC1wbGFuZSBlbmRwb2ludHMgfCBSZWdpc3RyYXRpb24gYXJ0aWZhY3QgfAp8LS0tLS0tfC0t" + + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t" + + "fAp8IEhlbG1maWxlIHZhbHVlcyB8IFNlcGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUt" + + "cGxhbmUgZW52aXJvbm1lbnQgZmlsZXMgfCBgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxh" + + "bmUvcmVnaXN0cmF0aW9uLzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgfAp8IENMSSBw" + + "cm9maWxlIHwgQ0xJLWdlbmVyYXRlZCBgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2Nv" + + "bnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sYCB8IENMSS1nZW5lcmF0ZWQgYGRlcGxveS9zdGFja3Mv" + + "bnZjZi1jb21wdXRlLXBsYW5lL291dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIHwK" + + "ClRoZSBDTEkgcHJvZmlsZSBpcyBtYW5kYXRvcnkgZm9yIHRoZSBDTEkgZmxvdyBhbmQgbXVzdCBu" + + "b3QgYmUgaGFuZC1hdXRob3JlZC4KVGhlIEhlbG1maWxlIGZsb3cgZG9lcyBub3QgY29uc3VtZSBh" + + "IGNvbnRyb2wtcGxhbmUgcHJvZmlsZS4KCkNvbW1hbmRzIGJlbG93IHVzZSBtb25vcmVwbyBwYXRo" + + "cyBmcm9tIHRoZSByZXBvc2l0b3J5IHJvb3QuIE9wZXJhdG9ycyB1c2luZwpleHRyYWN0ZWQgcGFj" + + "a2FnZXMgbmVlZCBtYXRjaGluZy12ZXJzaW9uIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgYW5k" + + "CmBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXMuIFN1YnN0aXR1dGUgdGhvc2UgYnVu" + + "ZGxlIHJvb3RzIGZvcgpgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWRgIGFuZCBgZGVwbG95L3N0" + + "YWNrcy9udmNmLWNvbXB1dGUtcGxhbmVgLgoKIyMgSGVsbWZpbGUgVmFsdWVzIEZsb3cKCkNyZWF0" + + "ZSBib3RoIGVudmlyb25tZW50IGZpbGVzIGJlZm9yZSBpbnN0YWxsYXRpb246CgotIGBkZXBsb3kv" + + "c3RhY2tzL3NlbGYtbWFuYWdlZC9lbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgZm9yIGNvbnRyb2wt" + + "cGxhbmUKICByZWdpc3RyeSwgZG9tYWluLCBHYXRld2F5LCByb3V0ZXMsIGFuZCBzZXJ2aWNlIHNl" + + "dHRpbmdzLgotIGBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMv" + + "PGVudj4ueWFtbGAgZm9yIGNvbXB1dGUtcGxhbmUKICByZWdpc3RyeSwgcHVsbCBzZWNyZXRzLCBh" + + "bmQgY29tcHV0ZS1yZWFjaGFibGUgSUNNUywgUmVWYWwsIGFuZCBOQVRTIHZhbHVlcy4KCkZvciBF" + + "S1MsIHVzZSB0aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2Rv" + + "Y3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4KVGhl" + + "IGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQga2VlcHMgdGhlIEVudm95IEdhdGV3YXkgY29udHJv" + + "bGxlciBpbgpgZW52b3ktZ2F0ZXdheS1zeXN0ZW1gLCBhdHRhY2hlcyByb3V0ZXMgdG8gYEdhdGV3" + + "YXkvbnZjZi1nYXRld2F5YCBpbgpgZW52b3ktZ2F0ZXdheWAsIGFuZCBlbmFibGVzIHRoZSBOQVRT" + + "IHJvdXRlLiBUaGUgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCB1c2VzCnRoZSBleHRlcm5hbCBh" + + "ZGRyZXNzIHBsdXMgdGhlIHNlcnZpY2UgaG9zdCBvdmVycmlkZXMuIEhlcmUsCmA8Z2F0ZXdheS1h" + + "ZGRyZXNzPmAgaXMgdGhlIE5MQiBhZGRyZXNzIGFuZCBgPGdhdGV3YXktZG9tYWluPmAgaXMgdGhl" + + "IEROUyBiYXNlCndob3NlIHNlcnZpY2Ugc3ViZG9tYWlucyByZXNvbHZlIHRvIHRoYXQgTkxCOgoK" + + "YGBgeWFtbAojIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55" + + "YW1sCmdsb2JhbDoKICBkb21haW46ICI8Z2F0ZXdheS1kb21haW4+IgogIHdvcmtlckVuZHBvaW50" + + "czoKICAgIG52Y2ZTZXJ2aWNlVVJMOiAiaHR0cDovL2FwaS48Z2F0ZXdheS1kb21haW4+IgogICAg" + + "bnZjZkdycGNTZXJ2aWNlVVJMOiAiaHR0cDovL3dvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiIK" + + "ICAgIG52Y2ZOYXRzU2VydmljZVVSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNzPjo0MjIyIgog" + + "ICAgbnZjdFNlcnZpY2VVUkw6ICJodHRwOi8vdGFza3MuPGdhdGV3YXktZG9tYWluPiIKICAgIG52" + + "Y3RHcnBjU2VydmljZVVSTDogImh0dHA6Ly93b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiIK" + + "ICAgIGludm9jYXRpb25TZXJ2aWNlVVJMOiAiaHR0cDovL2ludm9jYXRpb24uPGdhdGV3YXktZG9t" + + "YWluPiIKCmdycGNwcm94eToKICBudmNmR3JwY1NlcnZpY2VVUkw6ICJodHRwOi8vYXBpLm52Y2Yu" + + "c3ZjLmNsdXN0ZXIubG9jYWw6OTA5MCIKCmluZ3Jlc3M6CiAgZ2F0ZXdheUFwaToKICAgIGNvbnRy" + + "b2xsZXJOYW1lc3BhY2U6IGVudm95LWdhdGV3YXktc3lzdGVtCiAgICBnYXRld2F5czoKICAgICAg" + + "c2hhcmVkOiB7bmFtZTogbnZjZi1nYXRld2F5LCBuYW1lc3BhY2U6IGVudm95LWdhdGV3YXl9CiAg" + + "ICAgIGdycGM6IHtuYW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheX0K" + + "ICAgICAgbmF0czoKICAgICAgICBuYW1lOiBudmNmLWdhdGV3YXkKICAgICAgICBuYW1lc3BhY2U6" + + "IGVudm95LWdhdGV3YXkKICAgICAgICBsaXN0ZW5lck5hbWU6IG5hdHMKICAgIHJvdXRlczoKICAg" + + "ICAgbnZjZkFwaToKICAgICAgICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAg" + + "ICAgaG9zdG5hbWVzOiBbIndvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG52Y3RB" + + "cGk6CiAgICAgICAgZ3JwYzoKICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgIGhvc3Ru" + + "YW1lczogWyJ3b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG5hdHM6CiAgICAg" + + "ICAgZW5hYmxlZDogdHJ1ZQoKb3BlbmJhbzoKICBtaWdyYXRpb25zOgogICAgaXNzdWVyRGlzY292" + + "ZXJ5OgogICAgICBlbmFibGVkOiB0cnVlCmBgYAoKYGBgeWFtbAojIGRlcGxveS9zdGFja3MvbnZj" + + "Zi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoKICBudmNhT3Bl" + + "cmF0b3I6CiAgICBzZWxmTWFuYWdlZDoKICAgICAgaWNtc1NlcnZpY2VVUkw6ICJodHRwOi8vPGdh" + + "dGV3YXktYWRkcmVzcz4iCiAgICAgIGljbXNTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAic2lz" + + "LjxnYXRld2F5LWRvbWFpbj4iCiAgICAgIHJldmFsU2VydmljZVVSTDogImh0dHA6Ly88Z2F0ZXdh" + + "eS1hZGRyZXNzPiIKICAgICAgcmV2YWxTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAicmV2YWwu" + + "PGdhdGV3YXktZG9tYWluPiIKICAgICAgbmF0c1VSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNz" + + "Pjo0MjIyIgogICAgICBuYXRzSG9zdE92ZXJyaWRlOiAibmF0cy48Z2F0ZXdheS1kb21haW4+Igpg" + + "YGAKClByZXZpZXcgYW5kIGluc3RhbGwgdGhlIGNvbnRyb2wgcGxhbmUgYWdhaW5zdCBpdHMgY29u" + + "dGV4dDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCB0ZW1wbGF0" + + "ZSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxh" + + "bmUta3ViZWNvbmZpZz4KCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgaW5zdGFs" + + "bCBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxh" + + "bmUta3ViZWNvbmZpZz4KYGBgCgpCZWZvcmUgcmVnaXN0ZXJpbmcgdGhyb3VnaCBhIGJhcmUgR2F0" + + "ZXdheSBhZGRyZXNzLCBjcmVhdGUgb3IgdXBkYXRlIHRoZSBDTEkKY29uZmlnIHBhc3NlZCBhcyBg" + + "TlZDRl9DTElfQ09ORklHYDoKCmBgYHlhbWwKYmFzZV9odHRwX3VybDogImh0dHA6Ly88Z2F0ZXdh" + + "eS1hZGRyZXNzPiIKaW52b2tlX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKYmFzZV9n" + + "cnBjX3VybDogIjxnYXRld2F5LWFkZHJlc3M+OjEwMDgxIgphcGlfa2V5c19zZXJ2aWNlX3VybDog" + + "Imh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKaWNtc191cmw6ICJodHRwOi8vPGdhdGV3YXktYWRk" + + "cmVzcz4iCmFwaV9ob3N0OiAiYXBpLjxnYXRld2F5LWRvbWFpbj4iCmFwaV9rZXlzX2hvc3Q6ICJh" + + "cGkta2V5cy48Z2F0ZXdheS1kb21haW4+IgppbnZva2VfaG9zdDogImludm9jYXRpb24uPGdhdGV3" + + "YXktZG9tYWluPiIKaWNtc19ob3N0OiAic2lzLjxnYXRld2F5LWRvbWFpbj4iCmBgYAoKSG9zdCBm" + + "aWVsZHMgY29udGFpbiBob3N0bmFtZXMgb25seSwgd2l0aG91dCBhIFVSTCBzY2hlbWUuIGBJQ01T" + + "X1VSTGAgbWFwcyBvbmx5CnRvIHRoZSByZWdpc3RyYXRpb24gY29tbWFuZCdzIGAtLWljbXMtdXJs" + + "YDsgYGljbXNfaG9zdGAgaW4gdGhlIGNvbmZpZyBzdXBwbGllcwp0aGUgR2F0ZXdheSBIb3N0IGhl" + + "YWRlci4gVGhlcmUgaXMgbm8gYC0taWNtcy1ob3N0YCBNYWtlIG9yIENMSSBmbGFnLgoKUmVnaXN0" + + "ZXIgZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0LCB0aGVuIGluc3RhbGwgdGhlIGNvbXB1dGUgcGxh" + + "bmU6CgpgYGBiYXNoCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVn" + + "aXN0ZXItY2x1c3RlciBcCiAgQ0xVU1RFUl9OQU1FPTxjbHVzdGVyLW5hbWU+IFwKICBOQ0FfSUQ9" + + "PG5jYS1pZD4gXAogIENMVVNURVJfUkVHSU9OPTxyZWdpb24+IFwKICBJQ01TX1VSTD1odHRwOi8v" + + "PGdhdGV3YXktYWRkcmVzcz4gXAogIEtVQkVDT05GSUdfRklMRT08Y29tcHV0ZS1wbGFuZS1rdWJl" + + "Y29uZmlnPiBcCiAgTlZDRl9DTEk9PHBhdGgtdG8tbnZjZi1jbGk+IFwKICBOVkNGX0NMSV9DT05G" + + "SUc9PHBhdGgtdG8tbnZjZi1jbGktY29uZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2Yt" + + "Y29tcHV0ZS1wbGFuZSBpbnN0YWxsIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAog" + + "IEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1" + + "YmVjb25maWc+CmBgYAoKUmVnaXN0cmF0aW9uIGRpc2NvdmVycyB0aGUgT0lEQyBpc3N1ZXIgYW5k" + + "IEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBrdWJlIGNvbnRleHQuCkluIGEgbXVsdGktY2x1c3RlciBk" + + "ZXBsb3ltZW50LCBgS1VCRUNPTkZJR19GSUxFYCBpcyByZXF1aXJlZCBvbiBib3RoCmNvbXB1dGUt" + + "cGxhbmUgY29tbWFuZHMuIEluIGEgc2FtZS1jbHVzdGVyIGRlcGxveW1lbnQgaXQgbWF5IGJlIG9t" + + "aXR0ZWQgb25seQp3aGVuIHRoZSBhbWJpZW50IGNvbnRleHQgaXMgYWxyZWFkeSB0aGUgdGFyZ2V0" + + "IGNsdXN0ZXIuCgojIyBDTEkgUHJvZmlsZSBGbG93CgpSdW4gdGhlIENMSSBjb250cm9sLXBsYW5l" + + "IGluc3RhbGwgZmlyc3QuIEl0IGNyZWF0ZXMgdGhlIHByb2ZpbGUgY29uc3VtZWQgYnkKY29tcHV0" + + "ZS1wbGFuZSByZWdpc3RyYXRpb246CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+" + + "IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxm" + + "LW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29t" + + "cHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFu" + + "ZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29u" + + "dGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmUg" + + "XAogIC0tY2x1c3Rlci1uYW1lIDxjb250cm9sLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tcmVn" + + "aW9uIDxyZWdpb24+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKdGVzdCAtcyBkZXBsb3kvc3RhY2tz" + + "L3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWwKYGBgCgpVc2UgdGhl" + + "IGZ1bGwgcGVyc2lzdGVudCBwcmVmaXggZm9yIGJvdGggY29tcHV0ZS1wbGFuZSBjb21tYW5kczoK" + + "CmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29u" + + "dHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRl" + + "LXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8" + + "ZW52PiBcCiAgLS1wbGFpbiBcCiAgY29tcHV0ZS1wbGFuZSByZWdpc3RlciBcCiAgLS1jb250cm9s" + + "LXBsYW5lLXByb2ZpbGUgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxh" + + "bmUtcHJvZmlsZS55YW1sIFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVy" + + "LW5hbWU+IFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1y" + + "ZWdpb24gPHJlZ2lvbj4gXAogIC0tb3V0cHV0IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBs" + + "YW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1s" + + "CgpudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBs" + + "YW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUt" + + "c3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwK" + + "ICAtLXBsYWluIFwKICBjb21wdXRlLXBsYW5lIGluc3RhbGwgXAogIC0tdmFsdWVzIGRlcGxveS9z" + + "dGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+" + + "LXJlZ2lzdGVyLXZhbHVlcy55YW1sIFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1j" + + "b250ZXh0PiBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPgpg" + + "YGAKClJlZ2lzdHJhdGlvbiBzZWxlY3RzIHRoZSBwcm9maWxlJ3MgaW4tY2x1c3RlciBvciBjb21w" + + "dXRlLXJlYWNoYWJsZSBlbmRwb2ludHMKZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0IGFuZCBwcm9i" + + "ZXMgaXRzIEpXS1MuIERvIG5vdCByZXBsYWNlIHByb2ZpbGUgZW5kcG9pbnRzCndpdGggaGFuZC1h" + + "dXRob3JlZCBIZWxtZmlsZSBlbmRwb2ludCB2YWx1ZXMuCgojIyBQdWxsIFNlY3JldHMKCkNyZWF0" + + "ZSB0aGUgY29udHJvbC1wbGFuZSBzZWNyZXQgaW4gdGhlc2UgbmFtZXNwYWNlcyBvbiB0aGUgY29u" + + "dHJvbC1wbGFuZQpjb250ZXh0OgoKYGBgdGV4dApjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVt" + + "IG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyCmBgYAoKT24g" + + "dGhlIGNvbXB1dGUgY29udGV4dCwgY3JlYXRlIHRoZSBzZWNyZXQgb25seSBpbiBgbnZjYS1vcGVy" + + "YXRvcmAgYW5kIHJlZmVyZW5jZQppdCB0aHJvdWdoIGBnbG9iYWwuaW1hZ2VQdWxsU2VjcmV0c2Ag" + + "aW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQuIFRoZSBjaGFydAphbmQgb3BlcmF0b3Ig" + + "dXNlIGl0IGluIGBudmNhLW9wZXJhdG9yYCBhbmQgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWAu" + + "IERvIG5vdCBhZGQKZWl0aGVyIG5hbWVzcGFjZSB0byB0aGUgY29udHJvbC1wbGFuZSBsaXN0LiBG" + + "b3IgY29tbWFuZHMgYW5kIHBvbGljeSBleGFtcGxlcywKc2VlIFtwdWxsLXNlY3JldHMubWRdKHB1" + + "bGwtc2VjcmV0cy5tZCkuCgojIyBWZXJpZmljYXRpb24KClVzZSB0aGUgZXhwbGljaXQgR2F0ZXdh" + + "eSBuYW1lIGFuZCBuYW1lc3BhY2U6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9s" + + "LXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5IG52Y2YtZ2F0ZXdheSBcCiAgLW4gZW52b3ktZ2F0" + + "ZXdheSAtbyB3aWRlCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdl" + + "dCB0Y3Byb3V0ZSAtbiBlbnZveS1nYXRld2F5Cmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBs" + + "YW5lLWNvbnRleHQ+IHJvbGxvdXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Etb3BlcmF0b3Ig" + + "LW4gbnZjYS1vcGVyYXRvciAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + + "LXBsYW5lLWNvbnRleHQ+IHdhaXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBsYW5lLWNsdXN0" + + "ZXItbmFtZT4gLW4gbnZjYS1vcGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3suc3RhdHVzLmFn" + + "ZW50U3RhdHVzfSc9aGVhbHRoeSAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21w" + + "dXRlLXBsYW5lLWNvbnRleHQ+IGdldCBzZWNyZXQgPHB1bGwtc2VjcmV0PiAtbiBudmNhLXN5c3Rl" + + "bQpgYGAKCiMjIFRlYXJkb3duCgpEZXN0cm95IGFuZCBkZXJlZ2lzdGVyIGV2ZXJ5IGNvbXB1dGUg" + + "cGxhbmUgYmVmb3JlIHRoZSBjb250cm9sIHBsYW5lLiBCb3RoCmhhbmRvZmZzIGNhbiBkZXN0cm95" + + "IHRoZSBjb250cm9sIHBsYW5lLCBzbyBhcHBseSB0aGlzIHByZWZsaWdodCBiZWZvcmUgZWl0aGVy" + + "Cm9uZS4gUHJlc2VydmUgdGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBO" + + "YW1lc3BhY2UgcHJlc2VydmF0aW9uCmRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2Uu" + + "IElkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLgpGb3IgYW4gZXh0ZXJu" + + "YWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIuZW5hYmxlZDog" + + "ZmFsc2VgCmFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFu" + + "YWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlCmBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwg" + + "dmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQKYWJvcnQgb24g" + + "bWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNwYWNlIHJlbW92" + + "YWwgYWZ0ZXIKdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBnZXR0aW5nIGV4cGxp" + + "Y2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlCmRvIG5vdCBkZWxldGUgaXQuCgpGb3IgdGhlIEhl" + + "bG1maWxlIHZhbHVlcyBmbG93LCByZXRhaW4gZWFjaCByZWdpc3RyYXRpb24gdmFsdWVzIGZpbGUg" + + "dW50aWwKY2xlYW51cCBpcyB2ZXJpZmllZDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tz" + + "L252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFt" + + "ZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBs" + + "YW5lLWt1YmVjb25maWc+Cgo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNsdXN0ZXIgZGVs" + + "ZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1yZWdpc3RyYXRpb24tdmFsdWVz" + + "PiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBgCgpSZWFkIGBj" + + "bHVzdGVySURgIGFuZCBgbmNhSURgIGZyb20KYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBs" + + "YW5lL3JlZ2lzdHJhdGlvbi88Y2x1c3Rlci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuClNo" + + "b3cgdGhlIGV4YWN0IGNsdXN0ZXIgSUQgYW5kIGdldCBjb25maXJtYXRpb24gYmVmb3JlIGBjbHVz" + + "dGVyIGRlbGV0ZWAuIFJlcGVhdApjb21wdXRlIGRlc3Ryb3kgYW5kIGRlcmVnaXN0cmF0aW9uIGZv" + + "ciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRoZW4gZGVzdHJveSB0aGUKY29udHJvbCBwbGFuZS4K" + + "CmBgYGJhc2gKS1VCRUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBcCm1ha2UgLUMg" + + "ZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+" + + "IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpCb3Ro" + + "IGBLVUJFQ09ORklHYCBhbmQgYEtVQkVDT05GSUdfRklMRWAgYXJlIHJlcXVpcmVkIG9uIHRoZSBj" + + "b250cm9sLXBsYW5lCmRlc3Ryb3kgYmVjYXVzZSBpdHMgbmFtZXNwYWNlIGNsZWFudXAgdXNlcyBh" + + "bWJpZW50IGBrdWJlY3RsYC4KCkZvciB0aGUgQ0xJIHByb2ZpbGUgZmxvdywga2VlcApgZGVwbG95" + + "L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvb3V0LzxjbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZh" + + "bHVlcy55YW1sYAp1bnRpbCB0ZWFyZG93biBjb21wbGV0ZXMgYmVjYXVzZSBgZG93bmAgcmVhZHMg" + + "aXRzIGNsdXN0ZXIgSUQuIEZpcnN0IHF1ZXJ5IHRoZQpsaXZlIHJlZ2lzdHJhdGlvbiBzZXQgd2l0" + + "aCB0aGUgc2FtZSBjb21wbGV0ZSBwZXJzaXN0ZW50IHByZWZpeDoKCmBgYGJhc2gKbnZjZi1jbGkg" + + "LS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBk" + + "ZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxv" + + "eS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBc" + + "CiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0t" + + "Y29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMt" + + "dXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAogIHN0YXR1cyBcCiAgLS1jbHVzdGVy" + + "LW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4K" + + "YGBgCgpTaG93IHRoZSByZWdpc3RlcmVkIGNvbXB1dGUtcGxhbmUgbGlzdC4gTmFtZWQtY2x1c3Rl" + + "ciBgZG93biAtLXBsYW4tb25seWAgZG9lcwpub3QgcXVlcnkgSUNNUywgc28gaXQgcHJldmlld3Mg" + + "b25seSB0aGF0IGNvbXB1dGUgcGxhbmUgYW5kIGNhbm5vdCBzaG93IHRoZQpjb25kaXRpb25hbCBj" + + "b250cm9sLXBsYW5lIHJlbW92YWwuIElmIHRoZSB0YXJnZXQgaXMgdGhlIGxhc3QgcmVnaXN0ZXJl" + + "ZApjbHVzdGVyLCByZWFsIGBkb3duYCBhbHNvIGRlc3Ryb3lzIHRoZSBjb250cm9sIHBsYW5lLiBH" + + "ZXQgZXhwbGljaXQgY29uZmlybWF0aW9uCmZvciBib3RoIHJlbW92YWxzIGJlZm9yZSBjb250aW51" + + "aW5nLiBUaGVuIHByZXZpZXcgYW5kIGV4ZWN1dGUgd2l0aCB0aGUgc2FtZQpwcmVmaXg6CgpgYGBi" + + "YXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wt" + + "cGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFu" + + "ZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4g" + + "XAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + + "bnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0" + + "PiBcCiAgLS1pY21zLXVybCA8Y29tcHV0ZS1yZWFjaGFibGUtaWNtcy11cmw+IFwKICBkb3duIC0t" + + "cGxhbi1vbmx5IFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+" + + "IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1o" + + "b3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdl" + + "ZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBs" + + "YW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRl" + + "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxj" + + "b21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1p" + + "Y21zLXVybD4gXAogIGRvd24gXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0" + + "ZXItbmFtZT4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+CmBgYAoKUmVwZWF0IGBkb3duYCBmb3IgZWFj" + + "aCBjb21wdXRlIGNsdXN0ZXIuIEVhY2ggcnVuIGRlc3Ryb3lzIHRoYXQgY29tcHV0ZSBwbGFuZSBh" + + "bmQKdW5yZWdpc3RlcnMgaXRzIElDTVMgcm93LiBJdCByZW1vdmVzIHRoZSBjb250cm9sIHBsYW5l" + + "IG9ubHkgYWZ0ZXIgbm8gY2x1c3RlcgpyZWdpc3RyYXRpb25zIHJlbWFpbi4KUEsHCJZjvFkSMAAA" + + "EjAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAOwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + + "aW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvZGVidWdnaW5nLm1kVVQFAAEAps4SIyBEZWJ1Z2dpbmcg" + + "UmVmZXJlbmNlCgpSZWNpcGVzIGZvciBkaWFnbm9zaW5nIGFuZCBmaXhpbmcgY29tbW9uIE5WQ0Yg" + + "c2VsZi1tYW5hZ2VkIHN0YWNrIGZhaWx1cmVzLgoKIyMgUXVpY2sgU3RhdHVzIENvbW1hbmRzCgpg" + + "YGBiYXNoCiMgQWxsIHBvZHMgYWNyb3NzIGFsbCBuYW1lc3BhY2VzCmt1YmVjdGwgZ2V0IHBvZHMg" + + "LUEgLW8gd2lkZQoKIyBQb2RzIGluIGEgc3BlY2lmaWMgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHBv" + + "ZHMgLW4gPG5hbWVzcGFjZT4KCiMgQWxsIGhlbG0gcmVsZWFzZXMKaGVsbSBsaXN0IC1BCgojIFJl" + + "Y2VudCBldmVudHMgKG1vc3QgdXNlZnVsIGZvciBkaWFnbm9zaW5nIGZhaWx1cmVzKQprdWJlY3Rs" + + "IGdldCBldmVudHMgLW4gPG5hbWVzcGFjZT4gLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcKCiMg" + + "RGVzY3JpYmUgYSBzcGVjaWZpYyBwb2QgKHNob3dzIGV2ZW50cywgY29uZGl0aW9ucywgdm9sdW1l" + + "cykKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPgpgYGAKCiMj" + + "IEZhaWx1cmU6IEltYWdlUHVsbEJhY2tPZmYKCiMjIyBTeW1wdG9tcwoKYGBgdGV4dApOQU1FICAg" + + "ICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICAgICAgICAgICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5k" + + "cmEtMCAgICAwLzEgICAgIEltYWdlUHVsbEJhY2tPZmYgICAwICAgICAgICAgIDVtCmBgYAoKRXZl" + + "bnRzIHNob3c6CgpgYGB0ZXh0CkZhaWxlZCB0byBwdWxsIGltYWdlICJudmNyLmlvLy4uLi9pbWFn" + + "ZTp0YWciOiA0MDEgVW5hdXRob3JpemVkCmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENo" + + "ZWNrIHdoYXQgaW1hZ2UgaXMgZmFpbGluZwprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNw" + + "YWNlPiA8cG9kLW5hbWU+IHwgZ3JlcCAtQTUgIkV2ZW50czoiCgojIENoZWNrIGlmIHB1bGwgc2Vj" + + "cmV0IGV4aXN0cyBpbiB0aGUgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHNlY3JldCBudmNyLWNyZWRz" + + "IC1uIDxuYW1lc3BhY2U+CgojIENoZWNrIGlmIHRoZSBwb2Qgc3BlYyBoYXMgaW1hZ2VQdWxsU2Vj" + + "cmV0cwprdWJlY3RsIGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiAtbyBqc29ucGF0" + + "aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9JwoKIyBDaGVjayBpZiB0aGUgU2VydmljZUFjY291" + + "bnQgaGFzIGltYWdlUHVsbFNlY3JldHMKa3ViZWN0bCBnZXQgc2EgPHNhLW5hbWU+IC1uIDxuYW1l" + + "c3BhY2U+IC1vIGpzb25wYXRoPSd7LmltYWdlUHVsbFNlY3JldHN9JwpgYGAKCiMjIyBGaXhlcwoK" + + "MS4gKipTZWNyZXQgbWlzc2luZyBpbiBuYW1lc3BhY2UqKjogQ3JlYXRlIGl0CgogICBgYGBiYXNo" + + "CiAgIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAg" + + "ICAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1" + + "dGh0b2tlbicgXAogICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgICAt" + + "LW5hbWVzcGFjZT08bmFtZXNwYWNlPiBcCiAgICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwg" + + "a3ViZWN0bCBhcHBseSAtZiAtCiAgIGBgYAoKMi4gKipTZWNyZXQgZXhpc3RzIGJ1dCBwb2QgZG9l" + + "c24ndCByZWZlcmVuY2UgaXQqKjogVGhlIGNoYXJ0IG5lZWRzIGBpbWFnZVB1bGxTZWNyZXRzYCBj" + + "b25maWd1cmVkIHZpYSBoZWxtZmlsZSB2YWx1ZXMuIFNlZSBbcHVsbC1zZWNyZXRzLm1kXShwdWxs" + + "LXNlY3JldHMubWQpLgoKMy4gKipDaGFydCBkb2Vzbid0IHN1cHBvcnQgaW1hZ2VQdWxsU2VjcmV0" + + "cyoqIChvcGVuYmFvLCBpbnZvY2F0aW9uLXNlcnZpY2UsIGVzcy1hcGksIG5vdGFyeS1zZXJ2aWNl" + + "KTogUGF0Y2ggU2VydmljZUFjY291bnRzIGFuZCByZXN0YXJ0IHBvZHMuIFNlZSBbcHVsbC1zZWNy" + + "ZXRzLm1kXShwdWxsLXNlY3JldHMubWQpLgoKNC4gKipXcm9uZyBjcmVkZW50aWFscyBpbiBzZWNy" + + "ZXQqKjogRGVsZXRlIGFuZCByZWNyZWF0ZQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGRlbGV0ZSBz" + + "ZWNyZXQgbnZjci1jcmVkcyAtbiA8bmFtZXNwYWNlPgogICAjIFJlY3JlYXRlIHdpdGggY29ycmVj" + + "dCBjcmVkZW50aWFscwogICBgYGAKCiMjIEZhaWx1cmU6IEluaXQ6MC8xIFN0dWNrIChWYXVsdCBB" + + "Z2VudCkKCiMjIyBTeW1wdG9tcwoKU2VydmljZSBwb2RzIHN0dWNrIGluIGBJbml0OjAvMWAgZm9y" + + "IG1pbnV0ZXM6CgpgYGBiYXNoCk5BTUUgICAgICAgICAgICAgICAgICAgICAgICBSRUFEWSAgIFNU" + + "QVRVUyAgICAgUkVTVEFSVFMgICBBR0UKbnZjZi1hcGktN2Y0Yzc2Zjc4OC00NHZsdCAgMC8yICAg" + + "ICBJbml0OjAvMSAgIDAgICAgICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoKVGhlIGluaXQg" + + "Y29udGFpbmVyIGlzIHRoZSB2YXVsdC1hZ2VudC1pbml0IGluamVjdG9yIHdhaXRpbmcgZm9yIE9w" + + "ZW5CYW8uCgpgYGBiYXNoCiMgQ2hlY2sgT3BlbkJhbyBwb2RzCmt1YmVjdGwgZ2V0IHBvZHMgLW4g" + + "dmF1bHQtc3lzdGVtCgojIENoZWNrIGlmIE9wZW5CYW8gbWlncmF0aW9uIGpvYiByYW4Ka3ViZWN0" + + "bCBnZXQgam9icyAtbiB2YXVsdC1zeXN0ZW0KCiMgQ2hlY2sgT3BlbkJhbyBwb2QgbG9ncwprdWJl" + + "Y3RsIGxvZ3MgLW4gdmF1bHQtc3lzdGVtIG9wZW5iYW8tc2VydmVyLTAgLWMgb3BlbmJhbwoKIyBD" + + "aGVjayBpbml0IGNvbnRhaW5lciBsb2dzIG9uIHRoZSBzdHVjayBwb2QKa3ViZWN0bCBsb2dzIC1u" + + "IDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gLWMgdmF1bHQtYWdlbnQtaW5pdApgYGAKCiMjIyBGaXhl" + + "cwoKMS4gKipPcGVuQmFvIHBvZHMgbm90IHJ1bm5pbmcqKjogQ2hlY2sgdGhlaXIgZXZlbnRzIGZv" + + "ciBpbWFnZSBwdWxsIGlzc3VlcywgcmVzb3VyY2UgaXNzdWVzLCBldGMuCgoyLiAqKk9wZW5CYW8g" + + "bWlncmF0aW9uIGpvYiBkaWRuJ3QgcnVuKio6IFRoaXMgaGFwcGVucyB3aGVuIGBoZWxtZmlsZSBz" + + "eW5jYCB3YXMgaW50ZXJydXB0ZWQuIERlc3Ryb3kgYW5kIHJlLXN5bmMgb3BlbmJhbzoKCiAgIGBg" + + "YGJhc2gKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVu" + + "YmFvLXNlcnZlciBkZXN0cm95CiAgIGt1YmVjdGwgZGVsZXRlIG5hbWVzcGFjZSB2YXVsdC1zeXN0" + + "ZW0KICAga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIHZhdWx0LXN5c3RlbQogICAjIFJlLWNyZWF0" + + "ZSBwdWxsIHNlY3JldCBpZiBuZWVkZWQKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0t" + + "c2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBzeW5jCiAgIGBgYAoKMy4gKipPcGVuQmFvIHBv" + + "ZHMgcnVubmluZyBidXQgbm90IGluaXRpYWxpemVkKio6IENoZWNrIHVuc2VhbCBzdGF0dXM6Cgog" + + "ICBgYGBiYXNoCiAgIGt1YmVjdGwgZXhlYyAtbiB2YXVsdC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXIt" + + "MCAtYyBvcGVuYmFvIC0tIGJhbyBzdGF0dXMKICAgYGBgCgo0LiAqKmB2YXVsdC1hZ2VudC1pbml0" + + "YCBsb2dzIGBhdXRoL2p3dC9sb2dpbmAgLT4gYDQwMCAuLi4gbm8ga25vd24ga2V5IHN1Y2Nlc3Nm" + + "dWxseSB2YWxpZGF0ZWQgdGhlIHRva2VuIHNpZ25hdHVyZWAqKgogICAoY29tbW9uIG9uIEFLUywg" + + "YW5kIG9uIGFueSBjbHVzdGVyIHdob3NlIE9JREMgaXNzdWVyIHB1Ymxpc2hlcyBhIHJvdGF0aW5n" + + "IG11bHRpLWtleSBKV0tTKToKICAgdGhlIE9wZW5CYW8gYGF1dGgvand0YCBtZXRob2Qgd2FzIGNv" + + "bmZpZ3VyZWQgd2l0aCBhIHNpbmdsZSBzdGF0aWMgbW91bnRlZCBwdWJsaWMga2V5CiAgIChgand0" + + "X3ZhbGlkYXRpb25fcHVia2V5c2ApIGluc3RlYWQgb2YgdGhlIGlzc3VlcidzIGxpdmUgSldLUywg" + + "c28gaXQgY2Fubm90IHZhbGlkYXRlIHRoZQogICBjbHVzdGVyLXNpZ25lZCBTZXJ2aWNlQWNjb3Vu" + + "dCB0b2tlbnMgdGhlIHZhdWx0LWFnZW50cyBwcmVzZW50LiBFdmVyeSBzZXJ2aWNlJ3MKICAgYHZh" + + "dWx0LWFnZW50LWluaXRgIHRoZW4gbG9vcHMgb24gdGhhdCA0MDAgYW5kIHRoZSBwb2QgbmV2ZXIg" + + "bGVhdmVzIGBJbml0OjAvMWAuIFRoaXMgaXMgdGhlCiAgIGJlaGF2aW9yIG9mIHRoZSBiYXNlIGRl" + + "ZmF1bHQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2Vg" + + "OyB0aGUKICAgbWlncmF0aW9uIGxvZyBzaG93cyBgT0lEQyBpc3N1ZXIgZGlzY292ZXJ5IGlzIGRp" + + "c2FibGVkLiBVc2luZyBTZXJ2aWNlQWNjb3VudCBpc3N1ZXIgYW5kCiAgIG1vdW50ZWQgcHVibGlj" + + "IGtleSBmYWxsYmFja2AuIEVuYWJsZSBpc3N1ZXIgZGlzY292ZXJ5IHNvIHRoZSBtaWdyYXRpb24g" + + "dXNlcyB0aGUgbGl2ZSBKV0tTLAogICB0aGVuIHJlLXJ1biBpdDoKCiAgIGBgYGJhc2gKICAgIyBJ" + + "biB5b3VyIGVudiB2YWx1ZXMgKGUuZy4gZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwpLCBzZXQ6CiAg" + + "ICMgICBvcGVuYmFvOgogICAjICAgICBtaWdyYXRpb25zOgogICAjICAgICAgIGlzc3VlckRpc2Nv" + + "dmVyeToKICAgIyAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAga3ViZWN0bCBkZWxldGUgam9iIC1u" + + "IHZhdWx0LXN5c3RlbSBvcGVuYmFvLXNlcnZlci1taWdyYXRpb25zCiAgIEhFTE1GSUxFX0VOVj08" + + "ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9b3BlbmJhby1zZXJ2ZXIgc3luYwogICBgYGAK" + + "CiAgIFRoZSBtaWdyYXRpb24gbG9nIHNob3VsZCB0aGVuIHNob3cgYFJlY2VpdmVkIGRpc2NvdmVy" + + "eSBkb2N1bWVudCBmcm9tCiAgIC4uLi8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbmAg" + + "YW5kIGBGaW5hbCBPcGVuQmFvIEpXVCBKV0tTIFVSTCBzZXQgdG86CiAgIC4uLi9vcGVuaWQvdjEv" + + "andrc2AsIGFuZCB0aGUgc2VydmljZSBwb2RzIGF1dGhlbnRpY2F0ZSBhbmQgcmVhY2ggUmVhZHkg" + + "d2l0aGluIH4xIG1pbi4KICAgQUtTIGNsdXN0ZXJzIHdpdGggdGhlIGNsdXN0ZXIgT0lEQyBpc3N1" + + "ZXIgZW5hYmxlZCAodGhlIGBha3MtY2x1c3RlcmAgZGVmYXVsdCkgYWx3YXlzIG5lZWQKICAgdGhp" + + "cyBiZWNhdXNlIHRoZSBzdGF0aWMtcHVia2V5IGZhbGxiYWNrIGNhbm5vdCBtYXRjaCB0aGUgaXNz" + + "dWVyJ3Mgcm90YXRpbmcgc2lnbmluZyBrZXlzLgoKIyMgRmFpbHVyZTogT09NS2lsbGVkIG9uIENh" + + "c3NhbmRyYQoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFU" + + "VVMgICAgUkVTVEFSVFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIE9PTUtpbGxlZCAgMyAg" + + "ICAgICAgIDEwbQpgYGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKa3ViZWN0bCBkZXNjcmliZSBw" + + "b2QgLW4gY2Fzc2FuZHJhLXN5c3RlbSBjYXNzYW5kcmEtMCB8IGdyZXAgLUEzICJMYXN0IFN0YXRl" + + "IgpgYGAKCiMjIyBGaXgKCk92ZXJyaWRlIENhc3NhbmRyYSByZXNvdXJjZXMgdmlhIGhlbG1maWxl" + + "IHZhbHVlcy4gU2VlIEV4YW1wbGUgMSBpbgpbZXhhbXBsZXMubWRdKC4uL2V4YW1wbGVzLm1kKS4K" + + "CmBgYHlhbWwKLSBjYXNzYW5kcmE6CiAgICByZXNvdXJjZXM6CiAgICAgIGxpbWl0czoKICAgICAg" + + "ICBjcHU6ICI4IgogICAgICAgIG1lbW9yeTogODE5Mk1pCiAgICAgIHJlcXVlc3RzOgogICAgICAg" + + "IGNwdTogIjIiCiAgICAgICAgbWVtb3J5OiA0MDk2TWkKYGBgCgpOb3RlOiBgcmVzb3VyY2VQcmVz" + + "ZXRgIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIE5WQ0YgY2Fzc2FuZHJhIHdyYXBwZXIgY2hhcnQu" + + "IFVzZSBleHBsaWNpdCBgcmVzb3VyY2VzYC4KCiMjIEZhaWx1cmU6IFBvZHMgU3R1Y2sgaW4gUGVu" + + "ZGluZwoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMg" + + "ICAgUkVTVEFSVFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIFBlbmRpbmcgICAwICAgICAg" + + "ICAgIDEwbQpgYGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKIyBDaGVjayBldmVudHMgZm9yIHNj" + + "aGVkdWxpbmcgZmFpbHVyZXMKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBv" + + "ZC1uYW1lPgoKIyBDb21tb24gY2F1c2VzOgojIC0gIjAvMTIgbm9kZXMgYXJlIGF2YWlsYWJsZTog" + + "MTIgbm9kZShzKSBkaWRuJ3QgbWF0Y2ggUG9kJ3Mgbm9kZSBhZmZpbml0eSIKIyAtICIwLzEyIG5v" + + "ZGVzIGFyZSBhdmFpbGFibGU6IDEyIEluc3VmZmljaWVudCBtZW1vcnkiCiMgLSAicGVyc2lzdGVu" + + "dHZvbHVtZWNsYWltIG5vdCBmb3VuZCIKYGBgCgojIyMgRml4ZXMKCjEuICoqTm9kZSBzZWxlY3Rv" + + "ciBtaXNtYXRjaCoqOiBDaGVjayBgbm9kZVNlbGVjdG9yc2AgaW4gZW52aXJvbm1lbnQgZmlsZQoK" + + "ICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBub2RlcyAtLXNob3ctbGFiZWxzIHwgZ3JlcCBudmNm" + + "CiAgIGBgYAoKMi4gKipTdG9yYWdlIGNsYXNzIG5vdCBmb3VuZCoqOiBDaGVjayBzdG9yYWdlIGNs" + + "YXNzIGV4aXN0cwoKICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBzdG9yYWdlY2xhc3MKICAgYGBg" + + "CgozLiAqKkluc3VmZmljaWVudCByZXNvdXJjZXMqKjogQ2hlY2sgbm9kZSBjYXBhY2l0eQoKICAg" + + "YGBgYmFzaAogICBrdWJlY3RsIGRlc2NyaWJlIG5vZGUgPG5vZGUtbmFtZT4gfCBncmVwIC1BNSAi" + + "QWxsb2NhdGVkIHJlc291cmNlcyIKICAgYGBgCgojIyBGYWlsdXJlOiBIZWxtIFJlbGVhc2UgaW4g" + + "RmFpbGVkIFN0YXRlCgojIyMgU3ltcHRvbXMKCmBgYGJhc2gKaGVsbSBsaXN0IC1BCiMgU2hvd3Mg" + + "cmVsZWFzZSB3aXRoIFNUQVRVUzogZmFpbGVkCmBgYAoKUmUtcnVubmluZyBgaGVsbWZpbGUgc3lu" + + "Y2AgYXBwZWFycyB0byBzdWNjZWVkIGJ1dCBzZXJ2aWNlcyBkb24ndCB3b3JrIChtaWdyYXRpb25z" + + "IHNraXBwZWQpLgoKIyMjIERpYWdub3NpcwoKYGBgYmFzaApoZWxtIGhpc3RvcnkgPHJlbGVhc2Ut" + + "bmFtZT4gLW4gPG5hbWVzcGFjZT4KYGBgCgojIyMgRml4CgpNdXN0IGRlc3Ryb3kgdGhlIGZhaWxl" + + "ZCByZWxlYXNlIGFuZCByZS1zeW5jIChub3QganVzdCBhcHBseSk6CgpgYGBiYXNoCkhFTE1GSUxF" + + "X0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9PHJlbGVhc2U+IGRlc3Ryb3kKIyBJ" + + "ZiBuYW1lc3BhY2UgbmVlZHMgY2xlYW51cDoKa3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIDxuYW1l" + + "c3BhY2U+Cmt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSA8bmFtZXNwYWNlPgojIFJlLWNyZWF0ZSBw" + + "dWxsIHNlY3JldCBpZiBuZWVkZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0" + + "b3IgbmFtZT08cmVsZWFzZT4gc3luYwpgYGAKCiMjIEZhaWx1cmU6IEFjY291bnQgQm9vdHN0cmFw" + + "IEpvYiBGYWlsZWQKCiMjIyBTeW1wdG9tcwoKU2VydmljZXMgZGVwbG95IGJ1dCBmdW5jdGlvbnMg" + + "Y2FuJ3QgYmUgY3JlYXRlZC4gRXZlbnRzIHNob3cgYm9vdHN0cmFwIGpvYiBmYWlsdXJlLgoKIyMj" + + "IERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIGJvb3RzdHJhcCBqb2Igc3RhdHVzCmt1YmVjdGwg" + + "Z2V0IGpvYnMgLW4gbnZjZgoKIyBHZXQgbG9ncyAoam9iIGF1dG8tZGVsZXRlcyBhZnRlciB+NSBt" + + "aW51dGVzKQprdWJlY3RsIGxvZ3Mgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIC1uIG52" + + "Y2YKCiMgQ2hlY2sgQVBJIGxvZ3MKa3ViZWN0bCBsb2dzIC1uIG52Y2YgLWwgYXBwLmt1YmVybmV0" + + "ZXMuaW8vbmFtZT1udmNmLWFwaSAtLXRhaWw9MTAwCmBgYAoKIyMjIENvbW1vbiBDYXVzZXMKCjEu" + + "ICoqV3JvbmcgYmFzZTY0IGNyZWRlbnRpYWxzKio6IENyZWRlbnRpYWxzIGluIGBzZWNyZXRzLzxl" + + "bnY+LXNlY3JldHMueWFtbGAgbXVzdCBiZSBgJG9hdXRodG9rZW46QVBJX0tFWWAgYmFzZTY0LWVu" + + "Y29kZWQsIG5vdCBqdXN0IHRoZSBBUEkga2V5CgogICBgYGBiYXNoCiAgICMgVmVyaWZ5IHlvdXIg" + + "ZW5jb2RlZCBjcmVkZW50aWFsCiAgIGVjaG8gJ1lPVVJfQkFTRTY0X1NUUklORycgfCBiYXNlNjQg" + + "LWQKICAgIyBTaG91bGQgb3V0cHV0OiAkb2F1dGh0b2tlbjpudmFwaS14eHh4eAogICBgYGAKCjIu" + + "ICoqUmVnaXN0cnkgdW5yZWFjaGFibGUqKjogQVBJIGNhbid0IHJlYWNoIHRoZSByZWdpc3RyeSBz" + + "cGVjaWZpZWQgaW4gYGFjY291bnRCb290c3RyYXAucmVnaXN0cnlDcmVkZW50aWFsc2AKCiMjIyBG" + + "aXgKCkZpeCBjcmVkZW50aWFscyBpbiBzZWNyZXRzIGZpbGUsIHRoZW4gcmVjb3ZlciBzZXJ2aWNl" + + "cyB3aXRob3V0IGRlc3Ryb3lpbmcgZGVwZW5kZW5jaWVzOgoKYGBgYmFzaApIRUxNRklMRV9FTlY9" + + "PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIGRlc3Ryb3kK" + + "a3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIG52Y2YgYXBpLWtleXMgZXNzIHNpcyAtLWlnbm9yZS1u" + + "b3QtZm91bmQKa3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIG52Y2YgJiYga3ViZWN0bCBjcmVhdGUg" + + "bmFtZXNwYWNlIGFwaS1rZXlzICYmIFwKICBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgZXNzICYm" + + "IGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBzaXMKIyBSZS1jcmVhdGUgcHVsbCBzZWNyZXRzIGlm" + + "IG5lZWRlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdy" + + "b3VwPXNlcnZpY2VzIHN5bmMKYGBgCgojIyBGYWlsdXJlOiBOVkNBIENsZWFudXAgU3R1Y2sgKEZp" + + "bmFsaXplcnMpCgojIyMgU3ltcHRvbXMKCkNvbXB1dGUtcGxhbmUgY2xlYW51cCBoYW5ncy4gTmFt" + + "ZXNwYWNlcwpzdHVjayBpbiBgVGVybWluYXRpbmdgOgoKYGBgYmFzaAprdWJlY3RsIGdldCBucwoj" + + "IG52Y2Etb3BlcmF0b3IgICAgVGVybWluYXRpbmcgICAxMG0KIyBudmNmLWJhY2tlbmQgICAgIFRl" + + "cm1pbmF0aW5nICAgMTBtCmBgYAoKIyMjIEZpeAoKUnVuIHRoaXMgb25seSBhZ2FpbnN0IHRoZSBj" + + "b21wdXRlIGNvbnRleHQsIGFmdGVyIHRoZSBub3JtYWwgY29tcHV0ZS1wbGFuZQp0ZWFyZG93biBo" + + "YXMgZmFpbGVkLiBSZW1vdmUgZmluYWxpemVycyBmcm9tIE5WQ0ZCYWNrZW5kIGN1c3RvbSByZXNv" + + "dXJjZXMgYW5kCmZvcmNlLWRlbGV0ZSBzdHVjayBuYW1lc3BhY2VzOgoKYGBgYmFzaApleHBvcnQg" + + "Q09NUFVURV9DT05URVhUPTxjb21wdXRlLXBsYW5lLWNvbnRleHQ+CgojIFJlbW92ZSBmaW5hbGl6" + + "ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3VyY2VzCmt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVU" + + "RV9DT05URVhUIiBnZXQgbnZjZmJhY2tlbmRzIC1BIC1vIGpzb24gfCBcCiAganEgJy5pdGVtc1td" + + "IHwgLm1ldGFkYXRhLm5hbWVzcGFjZSArICIvIiArIC5tZXRhZGF0YS5uYW1lJyAtciB8IFwKICB4" + + "YXJncyAtSXt9IHNoIC1jICdjb250ZXh0PSIkMSI7IG5zPSIkezIlJS8qfSI7IG5hbWU9IiR7MiMj" + + "Ki99Ijsga3ViZWN0bCAtLWNvbnRleHQgIiRjb250ZXh0IiBwYXRjaCBudmNmYmFja2VuZCAiJG5h" + + "bWUiIC1uICIkbnMiIC0tdHlwZT1tZXJnZSAtcCAie1wibWV0YWRhdGFcIjp7XCJmaW5hbGl6ZXJz" + + "XCI6W119fSInIF8gIiRDT01QVVRFX0NPTlRFWFQiIHt9CgojIEZvcmNlLWRlbGV0ZSBzdHVjayBu" + + "YW1lc3BhY2VzIGJ5IGNsZWFyaW5nIHRoZWlyIGZpbmFsaXplcnMKZm9yIG5zIGluIG52Y2Etb3Bl" + + "cmF0b3IgbnZjZi1iYWNrZW5kOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05U" + + "RVhUIiBnZXQgbmFtZXNwYWNlICIkbnMiIC1vIGpzb24gMj4vZGV2L251bGwgfCBcCiAgICBqcSAn" + + "LnNwZWMuZmluYWxpemVycyA9IFtdJyB8IFwKICAgIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVU" + + "RV9DT05URVhUIiByZXBsYWNlIFwKICAgICAgLS1yYXcgIi9hcGkvdjEvbmFtZXNwYWNlcy8kbnMv" + + "ZmluYWxpemUiIC1mIC0gMj4vZGV2L251bGwKZG9uZQpgYGAKCiMjIEZhaWx1cmU6IE5WQ0EgT3Bl" + + "cmF0b3IgTWlzc2luZyBvciBOb3QgUmVhZHkKCiMjIyBTeW1wdG9tcwoKQWZ0ZXIgY29tcHV0ZS1w" + + "bGFuZSBpbnN0YWxsIGNvbXBsZXRlcywgbm8gYG52Y2Etb3BlcmF0b3JgIERlcGxveW1lbnQgZXhp" + + "c3RzLCBvcgppdCBleGlzdHMgYnV0IHBvZHMgYXJlIG5vdCByZWFkeToKCmBgYGJhc2gKa3ViZWN0" + + "bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IGRlcGxveW1lbnQgbnZjYS1v" + + "cGVyYXRvciBcCiAgLW4gbnZjYS1vcGVyYXRvcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1w" + + "bGFuZS1jb250ZXh0PiBnZXQgcG9kcyAtbiBudmNhLW9wZXJhdG9yCmBgYAoKIyMjIERpYWdub3Np" + + "cyBhbmQgRml4ZXMKCkZpcnN0IGlkZW50aWZ5IHdoZXRoZXIgdGhlIGluc3RhbGxhdGlvbiB1c2Vk" + + "IHRoZSBIZWxtZmlsZSB2YWx1ZXMgZmxvdyBvciB0aGUKQ0xJIHByb2ZpbGUgZmxvdy4gUmUtcnVu" + + "IG9ubHkgdGhhdCBmbG93J3MgcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24gc3RlcHMKZnJv" + + "bSBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFs" + + "bGF0aW9uLm1kKS4gRG8gbm90CnN1YnN0aXR1dGUgb25lIGhhbmRvZmYgZm9yIHRoZSBvdGhlci4K" + + "CklmIGluc3RhbGxhdGlvbiBzdWNjZWVkcyBidXQgcG9kcyBzdGlsbCBmYWlsLCBpbnNwZWN0IHRo" + + "ZSBjb21wdXRlIGNvbnRleHQ6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBs" + + "YW5lLWNvbnRleHQ+IGRlc2NyaWJlIGRlcGxveSBudmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9w" + + "ZXJhdG9yCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGxvZ3MgZGVw" + + "bG95bWVudC9udmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yIC0tdGFpbD0yMDAKa3Vi" + + "ZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG52Y2ZiYWNrZW5kIC1u" + + "IG52Y2Etb3BlcmF0b3IKYGBgCgpGb3IgcHJpdmF0ZSByZWdpc3RyeSBmYWlsdXJlcywgdmVyaWZ5" + + "IHRoYXQgdGhlIHB1bGwgc2VjcmV0IGV4aXN0cyBpbgpgbnZjYS1vcGVyYXRvcmAuIFRoZSBjaGFy" + + "dCBhbmQgb3BlcmF0b3IgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWA7IGRvIG5vdCB1c2UgYQpi" + + "cm9hZGVyIG1hbnVhbCBuYW1lc3BhY2UgbG9vcC4gU2VlCltwdWxsLXNlY3JldHMubWRdKHB1bGwt" + + "c2VjcmV0cy5tZCNjb21wdXRlLXBsYW5lLXNlY3JldCkuCgojIyBGYWlsdXJlOiBHYXRld2F5IEVu" + + "ZHBvaW50IENoYW5nZWQKCiMjIyBTeW1wdG9tcwoKUmVxdWVzdHMgdGhyb3VnaCB0aGUgY29uZmln" + + "dXJlZCByb3V0ZSBkb21haW4gZmFpbCBhZnRlciB0aGUgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxh" + + "bmNlciBpcyByZXBsYWNlZC4gVGhlIEdhdGV3YXkgcmVwb3J0cyBhIG5ldyBlbmRwb2ludC4KCiMj" + + "IyBEaWFnbm9zaXMKCmBgYGJhc2gKR0FURVdBWV9BRERSPSQoa3ViZWN0bCAtLWNvbnRleHQgPGNv" + + "bnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgXAogIG52Y2YtZ2F0ZXdheSAtbiBlbnZv" + + "eS1nYXRld2F5IFwKICAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScp" + + "CnRlc3QgLW4gIiRHQVRFV0FZX0FERFIiCmRpZyArc2hvcnQgImFwaS48ZG9tYWluPiIKY3VybCAt" + + "SCAiSG9zdDogYXBpLjxkb21haW4+IiAiaHR0cDovLyRHQVRFV0FZX0FERFIvaGVhbHRoIgoKIyBD" + + "aGVjayBkaXJlY3QgYWRkcmVzcyBmaWVsZHMgdXNlZCBieSBhIHNwbGl0IGRlcGxveW1lbnQKZ3Jl" + + "cCBudmNmTmF0c1NlcnZpY2VVUkwgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvZW52aXJvbm1l" + + "bnRzLzxlbnY+LnlhbWwKZ3JlcCAtRSAnaWNtc1NlcnZpY2V8cmV2YWxTZXJ2aWNlfG5hdHMnIFwK" + + "ICBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMvPGVudj4ueWFt" + + "bApgYGAKCiMjIyBGaXgKCktlZXAgYGdsb2JhbC5kb21haW5gLCByb3V0ZSBob3N0bmFtZXMsIGFu" + + "ZCBIb3N0IG92ZXJyaWRlcyB1bmNoYW5nZWQuIFVwZGF0ZSBETlMKb3IgdGhlIGRpcmVjdCBjbGll" + + "bnQgZGVzdGluYXRpb24uIEZvciBzcGxpdCBkZXBsb3ltZW50cywgdXBkYXRlIG9ubHkgZGlyZWN0" + + "CkdhdGV3YXktYWRkcmVzcyBmaWVsZHMgYW5kIHJlZnJlc2ggcmVnaXN0cmF0aW9uIGFuZCBpbnN0" + + "YWxsYXRpb24gdGhyb3VnaCB0aGUKc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLiBTZWUKW0V4YW1wbGUg" + + "NF0oLi4vZXhhbXBsZXMubWQjZXhhbXBsZS00LXJlY292ZXItZnJvbS1hLWdhdGV3YXktZW5kcG9p" + + "bnQtY2hhbmdlKS4KCiMjIFVzZWZ1bCBOYW1lc3BhY2UtdG8tU2VydmljZSBNYXBwaW5nCgpRdWlj" + + "ayByZWZlcmVuY2UgZm9yIHdoaWNoIHNlcnZpY2VzIHJ1biBpbiB3aGljaCBuYW1lc3BhY2U6Cgp8" + + "IE5hbWVzcGFjZSB8IFNlcnZpY2VzIHwKfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgbmF0cy1z" + + "eXN0ZW0gfCBuYXRzIHwKfCBjYXNzYW5kcmEtc3lzdGVtIHwgY2Fzc2FuZHJhIHwKfCB2YXVsdC1z" + + "eXN0ZW0gfCBvcGVuYmFvLXNlcnZlciB8CnwgbnZjZiB8IGFwaSwgaW52b2NhdGlvbi1zZXJ2aWNl" + + "LCBncnBjLXByb3h5LCBub3Rhcnktc2VydmljZSwgcmV2YWwsIGxsbS1yZXF1ZXN0LXJvdXRlciwg" + + "bGxtLWFwaS1nYXRld2F5IHwKfCBhcGkta2V5cyB8IGFwaS1rZXlzLCBhZG1pbi1pc3N1ZXItcHJv" + + "eHkgfAp8IGVzcyB8IGVzcy1hcGkgfAp8IHNpcyB8IHNpcyB8CnwgZW52b3ktZ2F0ZXdheS1zeXN0" + + "ZW0gfCBlbnZveSBnYXRld2F5IChpbmdyZXNzIGNvbnRyb2xsZXIpIHwKfCBlbnZveS1nYXRld2F5" + + "IHwgZ2F0ZXdheSByZXNvdXJjZSArIHJvdXRlcyB8ClBLBwi1enA7tTAAALUwAABQSwMEFAAIAAAA" + + "AAAhAAAAAAAAAAAAAAAAAEQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9y" + + "ZWZlcmVuY2VzL2hlbG1maWxlLXN0cnVjdHVyZS5tZFVUBQABAKbOEiMgSGVsbWZpbGUgU3RydWN0" + + "dXJlIFJlZmVyZW5jZQoKIyMgRGlyZWN0b3J5IExheW91dAoKYGBgYmFzaApudmNmLXNlbGYtbWFu" + + "YWdlZC1zdGFjay8KfC0tIGhlbG1maWxlLmQvCnwgICB8LS0gMDEtZGVwZW5kZW5jaWVzLnlhbWwu" + + "Z290bXBsICAjIE5BVFMsIENhc3NhbmRyYSwgT3BlbkJhbwp8ICAgfC0tIDAyLWNvcmUueWFtbC5n" + + "b3RtcGwgICAgICAgICAgIyBOVkNGIHNlcnZpY2VzICsgaW5ncmVzcwp8ICAgYC0tIDAzLW9ic2Vy" + + "dmFiaWxpdHkueWFtbC5nb3RtcGwgIyBPYnNlcnZhYmlsaXR5IHN0YWNrIChvcHRpb25hbCkKfC0t" + + "IGVudmlyb25tZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAgICAgICAgICAgICMgRGVm" + + "YXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVudi1uYW1lPi55YW1sICAg" + + "ICAgICAgICAgICAjIFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKfC0tIHNlY3JldHMvCnwgICBg" + + "LS0gPGVudi1uYW1lPi1zZWNyZXRzLnlhbWwgICAgICAjIFNlbnNpdGl2ZSB2YWx1ZXMgKHJlZ2lz" + + "dHJ5IGNyZWRzLCBwYXNzd29yZHMpCmAtLSBnbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAg" + + "ICAjIEdvIHRlbXBsYXRlIHRoYXQgY29uc3RydWN0cyBwZXItY2hhcnQgdmFsdWVzCgpudmNmLWNv" + + "bXB1dGUtcGxhbmUtc3RhY2svCnwtLSBoZWxtZmlsZS5kLwp8ICAgfC0tIDAxLWRlcGVuZGVuY2ll" + + "cy55YW1sLmdvdG1wbCAgIyBDb21wdXRlIHBsYW5lIGRlcGVuZGVuY3kgY29tcG9uZW50cwp8ICAg" + + "YC0tIDAyLW52Y2EueWFtbC5nb3RtcGwgICAgICAgICAgIyBudmNhLW9wZXJhdG9yIGNoYXJ0IGFu" + + "ZCBudmNhIGNvbmZpZ3VyYXRpb24KfC0tIGVudmlyb25tZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwg" + + "ICAgICAgICAgICAgICAgICAgICMgRGVmYXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwg" + + "ICBgLS0gPGVudi1uYW1lPi55YW1sICAgICAgICAgICAgICAjIFBlci1lbnZpcm9ubWVudCBvdmVy" + + "cmlkZXMKYC0tIGdsb2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAgICMgR28gdGVtcGxhdGUg" + + "dGhhdCBjb25zdHJ1Y3RzIHBlci1jaGFydCB2YWx1ZXMKYGBgCgpUaGVzZSBzdGFja3MgaGF2ZSBz" + + "ZXBhcmF0ZSBlbnZpcm9ubWVudHMgYW5kIGNsdXN0ZXIgY29udGV4dHMuIFRoZSBIZWxtZmlsZQp2" + + "YWx1ZXMgZmxvdyBhdXRob3JzIGJvdGggZW52aXJvbm1lbnQgZmlsZXMuIFRoZSBDTEkgcHJvZmls" + + "ZSBmbG93IGluc3RlYWQgdXNlcwp0aGUgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBsYW5lIHByb2Zp" + + "bGUgYXMgaXRzIGVuZHBvaW50IHNvdXJjZS4gRG8gbm90IG1peCB0aGUKaGFuZG9mZnMuIFNlZSBb" + + "U3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0" + + "aW9uLm1kKS4KCiMjIEdvdG1wbCBGaWxlcyBhbmQgVGhlaXIgUmVsZWFzZXMKCiMjIyAwMS1kZXBl" + + "bmRlbmNpZXMueWFtbC5nb3RtcGwKCnwgUmVsZWFzZSB8IENoYXJ0IHwgTmFtZXNwYWNlIHwgTm90" + + "ZXMgfAp8LS0tLS0tLS0tfC0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLXwKfCBuYXRzIHwgaGVs" + + "bS1udmNmLW5hdHMgfCBuYXRzLXN5c3RlbSB8IE1lc3NhZ2luZyB8Cnwgb3BlbmJhby1zZXJ2ZXIg" + + "fCBoZWxtLW52Y2Ytb3BlbmJhby1zZXJ2ZXIgfCB2YXVsdC1zeXN0ZW0gfCBTZWNyZXRzIG1hbmFn" + + "ZW1lbnQsIGRlcGVuZHMgb24gbmF0cyB8CnwgY2Fzc2FuZHJhIHwgaGVsbS1udmNmLWNhc3NhbmRy" + + "YSB8IGNhc3NhbmRyYS1zeXN0ZW0gfCBEYXRhYmFzZSB8CgpVc2VzIGA8PDogKmRlcGVuZGVuY3lg" + + "IHRlbXBsYXRlIGluaGVyaXRhbmNlIHdpdGggYHJlbGVhc2UtZ3JvdXA6IGRlcGVuZGVuY2llc2Ag" + + "bGFiZWwuCgojIyMgMDItY29yZS55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1l" + + "c3BhY2UgfCBMYWJlbCB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8" + + "IGFwaS1rZXlzIHwgaGVsbS1udmNmLWFwaS1rZXlzIHwgYXBpLWtleXMgfCBzZXJ2aWNlcyB8Cnwg" + + "c2lzIHwgaGVsbS1udmNmLXNpcyB8IHNpcyB8IHNlcnZpY2VzIHwKfCBhcGkgfCBoZWxtLW52Y2Yt" + + "YXBpIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBpbnZvY2F0aW9uLXNlcnZpY2UgfCBoZWxtLW52Y2Yt" + + "aW52b2NhdGlvbi1zZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBncnBjLXByb3h5IHwgaGVs" + + "bS1udmNmLWdycGMtcHJveHkgfCBudmNmIHwgc2VydmljZXMgfAp8IGVzcy1hcGkgfCBoZWxtLW52" + + "Y2YtZXNzLWFwaSB8IGVzcyB8IHNlcnZpY2VzIHwKfCBub3Rhcnktc2VydmljZSB8IGhlbG0tbnZj" + + "Zi1ub3Rhcnktc2VydmljZSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgcmV2YWwgfCBoZWxtLXJldmFs" + + "IHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBsbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNmL2hlbG0tbnZj" + + "Zi1sbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNmIHwgc2VydmljZXMgfAp8IGxsbS1hcGktZ2F0ZXdh" + + "eSB8IG52Y2YvaGVsbS1udmNmLWxsbS1hcGktZ2F0ZXdheSB8IG52Y2YgfCBzZXJ2aWNlcyB8Cnwg" + + "YWRtaW4taXNzdWVyLXByb3h5IHwgaGVsbS1hZG1pbi10b2tlbi1pc3N1ZXItcHJveHkgfCBhcGkt" + + "a2V5cyB8IChubyByZWxlYXNlLWdyb3VwIGxhYmVsKSB8CnwgaW5ncmVzcyB8IG52Y2YtZ2F0ZXdh" + + "eS1yb3V0ZXMgfCBlbnZveS1nYXRld2F5LXN5c3RlbSB8IGluZ3Jlc3MgfAoKTW9zdCBzZXJ2aWNl" + + "cyB1c2UgYGluaGVyaXQ6IFt7dGVtcGxhdGU6IHNlcnZpY2V9XWAuIExMTSByZWxlYXNlcyB1c2Ug" + + "T0NJIGNoYXJ0cyBmcm9tIHRoZSBgbnZjZmAgcmVwb3NpdG9yeSB3aXRoIHN0YW5kYWxvbmUgYHZh" + + "bHVlczogWy4uL2dsb2JhbC55YW1sLmdvdG1wbF1gIGJsb2NrczsgdGhleSBhcmUgZ2F0ZWQgb24g" + + "YGFkZG9ucy5sbG0uZW5hYmxlZGAuIGBhZG1pbi1pc3N1ZXItcHJveHlgIGFuZCBgaW5ncmVzc2Ag" + + "aGF2ZSBzdGFuZGFsb25lIGB2YWx1ZXM6YCBibG9ja3MuCgojIyMgMDMtb2JzZXJ2YWJpbGl0eS55" + + "YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBMYWJlbCB8CnwtLS0t" + + "LS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IChvYnNlcnZhYmlsaXR5IHJlbGVh" + + "c2VzKSB8ICh2YXJpb3VzKSB8IG9ic2VydmFiaWxpdHkgfCBvYnNlcnZhYmlsaXR5IHwKCkdhdGVk" + + "IG9uIG9ic2VydmFiaWxpdHktc3BlY2lmaWMgZmxhZ3MgaW4gdGhlIGVudmlyb25tZW50IGZpbGUu" + + "IFNraXBwZWQgaWYgZGlzYWJsZWQuCgojIyBUZW1wbGF0ZSBJbmhlcml0YW5jZQoKIyMjIGA8PDog" + + "KmRlcGVuZGVuY3lgIChZQU1MIG1lcmdlKQoKVXNlZCBpbiBgMDEtZGVwZW5kZW5jaWVzLnlhbWwu" + + "Z290bXBsYC4gTWVyZ2VzIHRoZSB0ZW1wbGF0ZSdzIHByb3BlcnRpZXMgaW50byB0aGUgcmVsZWFz" + + "ZS4KCioqR290Y2hhKio6IFlBTUwgbWVyZ2UgcmVwbGFjZXMgbGlzdHMuIElmIHlvdSBhZGQgYSBg" + + "dmFsdWVzOmAga2V5IHRvIHRoZSByZWxlYXNlLCBpdCAqKnJlcGxhY2VzKiogdGhlIHRlbXBsYXRl" + + "J3MgYHZhbHVlczpgIGxpc3QgZW50aXJlbHkuIFlvdSBtdXN0IHJlLWluY2x1ZGUgYWxsIHRlbXBs" + + "YXRlIHZhbHVlczoKCkluIHRoZSB0ZW1wbGF0ZSBiZWxvdywgYDxwcml2YXRlLXZhbHVlcz5gIHJl" + + "ZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxlIHN0YWNrIHJv" + + "b3QuCgpgYGB5YW1sCiMgVGVtcGxhdGUgZGVmaW5lczoKdGVtcGxhdGVzOgogIGRlcGVuZGVuY3k6" + + "ICZkZXBlbmRlbmN5CiAgICBjaGFydDogbnZjZi9oZWxtLW52Y2Yte3sgLlJlbGVhc2UuTmFtZSB9" + + "fQogICAgdmFsdWVzOgogICAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAgICAtIC4uLzxw" + + "cml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55" + + "YW1sCgojIFdoZW4gb3ZlcnJpZGluZywgTVVTVCByZS1pbmNsdWRlIGJvdGg6Ci0gbmFtZTogY2Fz" + + "c2FuZHJhCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5n" + + "b3RtcGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNdXN0" + + "IHJlLWluY2x1ZGUKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVM" + + "TUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwgICAjIE11c3QgcmUtaW5jbHVkZQogICAgLSBjYXNz" + + "YW5kcmE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + + "ICAgICAgICMgWW91ciBvdmVycmlkZQogICAgICAgIHJlc291cmNlczoKICAgICAgICAgIGxpbWl0" + + "czoKICAgICAgICAgICAgbWVtb3J5OiA4MTkyTWkKYGBgCgojIyMgYGluaGVyaXRgIChIZWxtZmls" + + "ZSBuYXRpdmUpCgpVc2VkIGluIGAwMi1jb3JlLnlhbWwuZ290bXBsYC4gSGVsbWZpbGUncyBuYXRp" + + "dmUgaW5oZXJpdGFuY2UgbWVjaGFuaXNtLgoKYGBgeWFtbAotIG5hbWU6IGFwaQogIHZlcnNpb246" + + "IDEuNi4wCiAgbmFtZXNwYWNlOiBudmNmCiAgaW5oZXJpdDoKICAgIC0gdGVtcGxhdGU6IHNlcnZp" + + "Y2UKYGBgCgpXaGVuIGFkZGluZyBgdmFsdWVzOmAgdG8gYW4gaW5oZXJpdGVkIHJlbGVhc2UsIHlv" + + "dSBhbHNvIG5lZWQgdG8gcmUtaW5jbHVkZSB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgZmlsZXMgc2lu" + + "Y2UgYHZhbHVlc2AgaXMgYSBsaXN0IHRoYXQgZ2V0cyByZXBsYWNlZC4KCiMjIFZhbHVlcyBQcmVj" + + "ZWRlbmNlCgpGcm9tIGxvd2VzdCB0byBoaWdoZXN0IHByaW9yaXR5OgoKMS4gYGVudmlyb25tZW50" + + "cy9iYXNlLnlhbWxgIC0tIGRlZmF1bHRzIHNoYXJlZCBhY3Jvc3MgYWxsIGVudmlyb25tZW50cwoy" + + "LiBgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgIC0tIHBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMK" + + "My4gYGdsb2JhbC55YW1sLmdvdG1wbGAgLS0gR28gdGVtcGxhdGUgcHJvY2Vzc2luZyAoY29uc3Ry" + + "dWN0cyBjaGFydC1zcGVjaWZpYyBzdHJ1Y3R1cmUpCjQuIGA8cHJpdmF0ZS12YWx1ZXM+LzxlbnY+" + + "LXNlY3JldHMueWFtbGAgLS0gc2Vuc2l0aXZlIHZhbHVlcwo1LiBJbmxpbmUgYHZhbHVlczpgIGJs" + + "b2NrcyBvbiByZWxlYXNlcyAtLSBoaWdoZXN0IHByZWNlZGVuY2UKCiMjIFdoYXQgZ2xvYmFsLnlh" + + "bWwuZ290bXBsIFBhc3NlcyBUaHJvdWdoCgpgZ2xvYmFsLnlhbWwuZ290bXBsYCByZWFkcyBmcm9t" + + "IGAuVmFsdWVzYCAodGhlIG1lcmdlZCBlbnZpcm9ubWVudCArIGVudi1zcGVjaWZpYyBZQU1MKSBh" + + "bmQgY29uc3RydWN0cyBjaGFydC1zcGVjaWZpYyB2YWx1ZXMuIEl0IG9ubHkgcGFzc2VzIHRocm91" + + "Z2gga2V5cyBpdCBleHBsaWNpdGx5IHJlZmVyZW5jZXM6CgojIyMgQ2Fzc2FuZHJhCgotIGBjYXNz" + + "YW5kcmEucmVwbGljYUNvdW50YAotIGBjYXNzYW5kcmEuaW1hZ2UuKmAgKHJlZ2lzdHJ5LCByZXBv" + + "c2l0b3J5KQotIGBjYXNzYW5kcmEubWlncmF0aW9ucy5pbWFnZS4qYAotIGBjYXNzYW5kcmEucGVy" + + "c2lzdGVuY2Uuc2l6ZWAKLSBgY2Fzc2FuZHJhLm5vZGVTZWxlY3RvcmAgKGlmIGBnbG9iYWwubm9k" + + "ZVNlbGVjdG9ycy5lbmFibGVkYCkKLSBgY2Fzc2FuZHJhLmdsb2JhbC5kZWZhdWx0U3RvcmFnZUNs" + + "YXNzYAoKIyMjIE5BVFMKCi0gYG5hdHMuY29udGFpbmVyLmltYWdlLipgCi0gYG5hdHMucmVsb2Fk" + + "ZXIuaW1hZ2UuKmAKLSBgbmF0cy5uYXRzQm94LmNvbnRhaW5lci5pbWFnZS4qYAotIGBuYXRzLmNv" + + "bmZpZy5qZXRzdHJlYW0uZmlsZVN0b3JlLnB2Yy5zdG9yYWdlQ2xhc3NOYW1lYAotIGBuYXRzLnBv" + + "ZFRlbXBsYXRlLm1lcmdlLnNwZWMubm9kZVNlbGVjdG9yYCAoaWYgZW5hYmxlZCkKCiMjIyBPcGVu" + + "QmFvCgotIGBvcGVuYmFvLm1pZ3JhdGlvbnMuaW1hZ2UuKmAgYW5kIGBvcGVuYmFvLm1pZ3JhdGlv" + + "bnMuZW52YAotIGBvcGVuYmFvLmluamVjdG9yLmltYWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmlt" + + "YWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmRhdGFTdG9yYWdlLipgCi0gTm9kZSBzZWxlY3RvcnMg" + + "KGlmIGVuYWJsZWQpCgojIyMgU2VydmljZXMgKEFQSSwgU0lTLCBldGMuKQoKLSBgPHNlcnZpY2U+" + + "LmltYWdlLipgIChyZWdpc3RyeSwgcmVwb3NpdG9yeSkKLSBgPHNlcnZpY2U+Lm5vZGVTZWxlY3Rv" + + "cmAgKGlmIGVuYWJsZWQpCi0gYDxzZXJ2aWNlPi5lbnYuKmAgKG9ic2VydmFiaWxpdHkgc2V0dGlu" + + "Z3MpCgojIyMgTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnQKCkVuYWJsZSB0aGUgTExNIGFkZG9uIGJl" + + "Zm9yZSBjcmVhdGluZyBvciBpbnZva2luZyBmdW5jdGlvbnMgd2l0aApgZnVuY3Rpb25UeXBlOiAi" + + "TExNImAuIFRoZSBhZGRvbiBkZXBsb3lzIGBsbG0tcmVxdWVzdC1yb3V0ZXJgIGFuZApgbGxtLWFw" + + "aS1nYXRld2F5YCwgYWRkcyB0aGUgYGxsbS5pbnZvY2F0aW9uLjxkb21haW4+YCByb3V0ZSB3aGVu" + + "IEdhdGV3YXkgQVBJCmluZ3Jlc3MgaXMgZW5hYmxlZCwgYW5kIGNvbmZpZ3VyZXMgd29ya2VycyB0" + + "byB1c2UgdGhlIExMTSBzaWRlY2FyLiBUaGUgSGVsbWZpbGUKY29uZGl0aW9uIGlzIGBhZGRvbnMu" + + "bGxtLmVuYWJsZWRgLiBEbyBub3QgdXNlIHRoZSBvYnNvbGV0ZSBgbGxtLmVuYWJsZWRgIHBhdGgu" + + "CgpGb3IgYSBzaW5nbGUtbm9kZSBpc29sYXRlZCB0ZXN0IGNsdXN0ZXIsIGFkZCB0aGlzIGNvbmZp" + + "Z3VyYXRpb24gdG8KYGVudmlyb25tZW50cy88ZW52Pi55YW1sYCBiZWZvcmUgYXBwbHlpbmcgdGhl" + + "IHN0YWNrOgoKYGBgeWFtbAphZGRvbnM6CiAgbGxtOgogICAgZW5hYmxlZDogdHJ1ZQogICAgZ2F0" + + "ZXdheToKICAgICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2Vydmlj" + + "ZU1vbml0b3I6CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQogICAgcmVxdWVzdFJvdXRlcjoKICAg" + + "ICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2VydmljZU1vbml0b3I6" + + "CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQoKYWdlbnRDb25maWc6CiAgbWVyZ2VDb25maWc6IHwK" + + "ICAgIGNsdXN0ZXI6CiAgICAgIHZhbGlkYXRpb25Qb2xpY3k6CiAgICAgICAgbmFtZTogVW5yZXN0" + + "cmljdGVkCiAgICB3b3JrbG9hZDoKICAgICAgc3RhcmdhdGVRVUlDSW5zZWN1cmU6IHRydWUKYGBg" + + "CgpVc2UgYHJlcGxpY2FDb3VudDogMWAgb25seSBmb3IgbG9jYWwgb3Igc2luZ2xlLW5vZGUgdGVz" + + "dCBjbHVzdGVycy4gVGhlIGJ1bmRsZWQKTlZDRiBBUEkgY3VycmVudGx5IHNlcnZlcyBwbGFpbnRl" + + "eHQgZ1JQQyBvbiBwb3J0IDkwOTAsIHNvIHRoZSBzZWxmLW1hbmFnZWQgc3RhY2sKZGVmYXVsdHMg" + + "dGhlIExMTSBBUEkgR2F0ZXdheSBhdXRoZW50aWNhdGlvbiBob3AgdG8gcGxhaW50ZXh0LiBTZXQK" + + "YGFkZG9ucy5sbG0uZ2F0ZXdheS5hdXRoLmdycGNJbnNlY3VyZTogZmFsc2VgIG9ubHkgd2l0aCBh" + + "IFRMUy1jYXBhYmxlIE5WQ0YgQVBJLgoKV29ya2VyLXRvLXJvdXRlciB0cmFuc3BvcnQgaXMgc2Vw" + + "YXJhdGUuIEZvciBzaGFyZWQgb3IgcHJvZHVjdGlvbiBjbHVzdGVycywgdXNlCnRoZSByZXF1aXJl" + + "ZCByZXBsaWNhIGNvdW50IGFuZCB0aGUgbWFuYWdlZCBUTFMgY29uZmlndXJhdGlvbi4gVGhlCmB3" + + "b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZWAgc2V0dGluZyBlbmFibGVzIHBsYWludGV4dCB3" + + "b3JrZXIgdHJhbnNwb3J0IGFuZAptdXN0IG5vdCBiZSB1c2VkIGluIHByb2R1Y3Rpb24uCgpUaGUg" + + "cmVxdWVzdCByb3V0ZXIgdXNlcyBgcG93ZXItb2YtdHdvYCB3aGVuIG5vIGxvYWQtYmFsYW5jZXIg" + + "Y29uZmlndXJhdGlvbiBpcwpzZXQuIENvbmZpZ3VyZSBvdGhlciByb3V0aW5nIG1ldGhvZHMgd2l0" + + "aCB0aGUKW0xMTSBSZXF1ZXN0IFJvdXRlciBMb2FkIEJhbGFuY2luZ10oaHR0cHM6Ly9naXRodWIu" + + "Y29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9kb2NzL3VzZXIvbGxtLXJlcXVlc3Qtcm91dGVyLWxv" + + "YWQtYmFsYW5jaW5nLm1kKQpndWlkZS4KCklmIHRoZSBzaWRlY2FyIGltYWdlIGlzIG1pcnJvcmVk" + + "IG91dHNpZGUgdGhlIHN0YWNrJ3MgZGVmYXVsdCBpbWFnZSByZWdpc3RyeSBhbmQKcmVwb3NpdG9y" + + "eSwgc2V0IHRoZSBnZW5lcmF0ZWQgd29ya2VyIHNpZGVjYXIgaW1hZ2UgZXhwbGljaXRseToKCmBg" + + "YHlhbWwKYXBpOgogIHJlbW90ZUNvbmZpZzoKICAgIGNvbmZpZ0RhdGE6CiAgICAgIG52Y2Y6CiAg" + + "ICAgICAgc2lkZWNhcnM6CiAgICAgICAgICBsbG0tcm91dGVyLWNsaWVudC1pbWFnZTogPHJlZ2lz" + + "dHJ5Pi88cmVwb3NpdG9yeT4vcHlsb246MC4xNC4xCmBgYAoKVGhlIGxlZ2FjeSBgYXBpLmVudi5O" + + "VkNGX1NJREVDQVJTX0xMTV9ST1VURVJfQ0xJRU5UX0lNQUdFYCBwYXRoIGlzIGRlcHJlY2F0ZWQu" + + "ClRoZSBzdGFjayB0cmFuc2xhdGVzIGl0IGZvciBvbmUgY29tcGF0aWJpbGl0eSB3aW5kb3csIGJ1" + + "dCBuZXcgY29uZmlndXJhdGlvbnMKbXVzdCB1c2UgdGhlIHJlbW90ZS1jb25maWcgcGF0aC4gQ29u" + + "ZmxpY3RpbmcgdmFsdWVzIGZhaWwgcmVuZGVyaW5nLgoKUmVuZGVyIGFuZCBhcHBseSB0aGUgdXBk" + + "YXRlZCBjb250cm9sLXBsYW5lIGVudmlyb25tZW50LCB0aGVuIHJlZnJlc2ggZXZlcnkKcmVnaXN0" + + "ZXJlZCBjb21wdXRlIHBsYW5lIHVzaW5nIHRoZSBzYW1lIGhhbmRvZmYgdXNlZCBmb3IgaXRzIGlu" + + "c3RhbGxhdGlvbiBzbwpOVkNBIHJlY2VpdmVzIGBhZ2VudENvbmZpZy5tZXJnZUNvbmZpZ2A6Cgpg" + + "YGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSB0ZW1wbGF0ZQpIRUxNRklMRV9FTlY9" + + "PGVudj4gaGVsbWZpbGUgc3luYwpgYGAKClVzZSB0aGUgY29tcGxldGUgY29tcHV0ZS1wbGFuZSBp" + + "bnN0YWxsIGNvbW1hbmQgZnJvbQpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNv" + + "bXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4gQQpDTEktcHJvZmlsZSBpbnN0YWxsYXRpb24g" + + "bXVzdCByZW1haW4gcHJvZmlsZS1kcml2ZW47IGEgSGVsbWZpbGUgaW5zdGFsbGF0aW9uCm11c3Qg" + + "cmVtYWluIHZhbHVlcy1kcml2ZW4uCgpFeGlzdGluZyBMTE0gZnVuY3Rpb24gdmVyc2lvbnMgcmV0" + + "YWluIHRoZSB3b3JrZXItc2lkZWNhciBpbWFnZSBtZXRhZGF0YQpjYXB0dXJlZCB3aGVuIHRoZSB2" + + "ZXJzaW9uIGlzIGNyZWF0ZWQuIFJlcGxhY2luZyBwb2RzIG9yIHJlZGVwbG95aW5nIHRoZSBzYW1l" + + "CnZlcnNpb24gZG9lcyBub3QgYXBwbHkgYSBuZXcgUHlsb24gaW1hZ2UuIEFmdGVyIHRoZSBjb250" + + "cm9sLXBsYW5lIHVwZGF0ZSwKY3JlYXRlIGFuZCBkZXBsb3kgYSBuZXcgZnVuY3Rpb24gdmVyc2lv" + + "bi4gVmVyaWZ5IHRoZSBjb250cm9sIHBsYW5lLCByb3V0ZSwgYW5kCndvcmtlciBzaWRlY2FyOgoK" + + "YGBgYmFzaAprdWJlY3RsIGdldCBkZXBsb3kgLW4gbnZjZiBsbG0tYXBpLWdhdGV3YXkKa3ViZWN0" + + "bCBnZXQgc3RhdGVmdWxzZXQgLW4gbnZjZiBsbG0tcmVxdWVzdC1yb3V0ZXIKa3ViZWN0bCBnZXQg" + + "cG9kcyAtbiBudmNmIHwgZ3JlcCAtRSAnbGxtLWFwaS1nYXRld2F5fGxsbS1yZXF1ZXN0LXJvdXRl" + + "cicKa3ViZWN0bCBnZXQgaHR0cHJvdXRlIC1BIHwgZ3JlcCBsbG0Ka3ViZWN0bCAtbiBudmNmLWJh" + + "Y2tlbmQgZ2V0IHBvZCA8ZnVuY3Rpb24tcG9kPiBcCiAgLW8ganNvbnBhdGg9J3tyYW5nZSAuc3Bl" + + "Yy5jb250YWluZXJzWz8oQC5uYW1lPT0ibGxtLXdvcmtlciIpXS5hcmdzWypdfXsufXsiXFxuIn17" + + "ZW5kfScKYGBgCgpGb3IgbG9jYWwgcGxhaW50ZXh0IGNsdXN0ZXJzLCB0aGUgYGxsbS13b3JrZXJg" + + "IGFyZ3MgbXVzdCBpbmNsdWRlCmAtLXF1aWMtaW5zZWN1cmVgLgoKRm9yIGxvYWQtYmFsYW5jZXIg" + + "c2NoZW1hIGFuZCBhbGdvcml0aG0gYmVoYXZpb3IsIHNlZSB0aGUKW1N0YXJnYXRlIGNvbmZpZ3Vy" + + "YXRpb24gZ3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9OVklESUEvbnZjZi9ibG9iL21haW4vc3Jj" + + "L2xpYnJhcmllcy9ydXN0L3N0YXJnYXRlL2RvY3MvbG9hZC1iYWxhbmNlci1jb25maWd1cmF0aW9u" + + "Lm1kKS4KCiMjIEhlbG1maWxlIFNlbGVjdG9ycwoKVGFyZ2V0IHNwZWNpZmljIHJlbGVhc2VzIG9y" + + "IGdyb3VwczoKCmBgYGJhc2gKIyBCeSByZWxlYXNlIGdyb3VwCkhFTE1GSUxFX0VOVj08ZW52PiBo" + + "ZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMKSEVMTUZJ" + + "TEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1zZXJ2aWNlcyBz" + + "eW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9" + + "aW5ncmVzcyBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVh" + + "c2UtZ3JvdXA9b2JzZXJ2YWJpbGl0eSBzeW5jCgojIEJ5IHJlbGVhc2UgbmFtZQpIRUxNRklMRV9F" + + "TlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSBzeW5jCkhFTE1GSUxF" + + "X0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9YWRtaW4taXNzdWVyLXByb3h5IHN5" + + "bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1sbG0tcmVxdWVz" + + "dC1yb3V0ZXIgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1l" + + "PWxsbS1hcGktZ2F0ZXdheSBzeW5jCgojIFRlbXBsYXRlIG9ubHkgKGRyeSBydW4pCkhFTE1GSUxF" + + "X0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlCgoj" + + "IERlc3Ryb3kgYSBzaW5nbGUgcmVsZWFzZQpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1z" + + "ZWxlY3RvciBuYW1lPWNhc3NhbmRyYSBkZXN0cm95CmBgYAoKTm90ZTogYGFkbWluLWlzc3Vlci1w" + + "cm94eWAgaGFzIG5vIGByZWxlYXNlLWdyb3VwYCBsYWJlbC4gVXNlIGAtLXNlbGVjdG9yIG5hbWU9" + + "YWRtaW4taXNzdWVyLXByb3h5YC4KUEsHCLE1HdsCKgAAAioAAFBLAwQUAAgAAAAAACEAAAAAAAAA" + + "AAAAAAAAPwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMv" + + "bnZjZi11aS1hZGRvbi5tZFVUBQABAKbOEiMgTlZDRiBVSSBBZGRvbgoKTlZDRiBVSSBpcyBhbiBv" + + "cHRpb25hbCwgY3VzdG9tZXItZmFjaW5nIE5WQ0YgYWRtaW4tcGFuZWwgVUkuIEl0IGlzIGRpc2Fi" + + "bGVkIGJ5CmRlZmF1bHQgYW5kIGF2YWlsYWJsZSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRoYXQg" + + "aW5jbHVkZSB0aGUgTlZDRiBVSSBhZGRvbi4KCiMjIFdoZW4gdG8gZW5hYmxlCgpFbmFibGUgTlZD" + + "RiBVSSBvbmx5IHdoZW4geW91IG5lZWQgdGhlIGFkbWluLXBhbmVsIFVJIGFuZCB5b3VyIGV4dHJh" + + "Y3RlZCBzdGFjawpwYWNrYWdlIGluY2x1ZGVzIHRoZSBhZGRvbi4gSWYgdGhlIHBhY2thZ2UgZG9l" + + "cyBub3QgY29udGFpbiBhIGBudmNmLXVpYCByZWxlYXNlCmFuZCBgbnZjZlVpYCByb3V0ZSB2YWx1" + + "ZXMsIHNraXAgdGhlIGFkZG9uIHVudGlsIHlvdSB1c2UgYSBwYWNrYWdlIHRoYXQgaW5jbHVkZXMK" + + "dGhlbS4KCiMjIEVuYWJsZSB0aGUgYWRkb24KCkVuYWJsZSBpdCBpbiBgZW52aXJvbm1lbnRzLzxl" + + "bnYtbmFtZT4ueWFtbGA6CgpgYGB5YW1sCmFkZG9uczoKICBudmNmVWk6CiAgICBlbmFibGVkOiB0" + + "cnVlCmBgYAoKIyMgQ3JlYXRlIG5hbWVzcGFjZSBhbmQgaW1hZ2UgcHVsbCBzZWNyZXQKCkNyZWF0" + + "ZSB0aGUgbmFtZXNwYWNlLCBhbmQgYW4gaW1hZ2UgcHVsbCBzZWNyZXQgb25seSBpZiBwdWxsaW5n" + + "IGZyb20gYSBwcml2YXRlCnJlZ2lzdHJ5OgoKYGBgYmFzaAprdWJlY3RsIGNyZWF0ZSBuYW1lc3Bh" + + "Y2UgbnZjZi11aSAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0K" + + "CiMgT25seSBpZiBwdWxsaW5nIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5IChlLmcuLCBOR0MgbnZj" + + "ci5pbykKZXhwb3J0IE5HQ19BUElfS0VZPSI8eW91ci1rZXk+IgprdWJlY3RsIGNyZWF0ZSBzZWNy" + + "ZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogIC0tZG9ja2VyLXNlcnZlcj1udmNyLmlv" + + "IFwKICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAtLWRvY2tlci1wYXNzd29y" + + "ZD0iJE5HQ19BUElfS0VZIiBcCiAgLS1uYW1lc3BhY2U9bnZjZi11aSBcCiAgLS1kcnktcnVuPWNs" + + "aWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCmBgYAoKVGhlIGRlZmF1bHQgcm91dGUg" + + "aG9zdCBpcyBgbnZjZi11aS48ZG9tYWluPmAgYW5kIHRoZSBiYWNrZW5kIGlzCmBudmNmLXVpLm52" + + "Y2YtdWk6ODMwMGAuCgojIyBBcHBseSB0aGUgc2VydmljZSBhbmQgcm91dGUKCkFmdGVyIGNvbmZp" + + "cm1pbmcgdGhlIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGBudmNmLXVpYCByZWxlYXNlLCBwcmV2aWV3" + + "IGFuZCBhcHBseQp0aGUgc2VydmljZSBhbmQgcm91dGU6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08" + + "ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1udmNmLXVpIHRlbXBsYXRlCkhFTE1G" + + "SUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1udmNmLXVpIHN5bmMK" + + "SEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3Vw" + + "PWluZ3Jlc3Mgc3luYwpgYGAKCiMjIFZlcmlmeQoKVmVyaWZ5IHRoZSByb3V0ZSBvbmx5IHdoZW4g" + + "dGhlIGFkZG9uIGlzIHByZXNlbnQgYW5kIGVuYWJsZWQ6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGRl" + + "cGxveSxzdmMgLW4gbnZjZi11aQprdWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIC1pIG52" + + "Y2YtdWkKY3VybCAtaSAtSCAiSG9zdDogbnZjZi11aS48ZG9tYWluPiIgImh0dHA6Ly88Z2F0ZXdh" + + "eS1hZGRyZXNzPi9zdGF0dXMiCmBgYAoKIyMgU2VjdXJpdHkKClRoZSBOVkNGIFVJIGFkbWluIHBh" + + "bmVsIGlzIGN1cnJlbnRseSB1bmF1dGhlbnRpY2F0ZWQuIERvIG5vdCBleHBvc2UgaXQgdG8gdGhl" + + "CnB1YmxpYyBpbnRlcm5ldC4gUmVzdHJpY3QgYWNjZXNzIHRvIGEgdHJ1c3RlZCBuZXR3b3JrLCBW" + + "UE4sIG9yIGFuIGF1dGhlbnRpY2F0aW5nCnByb3h5IGluIGZyb250IG9mIHRoZSBgbnZjZi11aWAg" + + "cm91dGUuClBLBwg4+SevuQcAALkHAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAD4ACQBkYXRh" + + "L252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5t" + + "ZFVUBQABAKbOEiMgSW1hZ2UgUHVsbCBTZWNyZXRzIFJlZmVyZW5jZQoKIyMgT3ZlcnZpZXcKCldo" + + "ZW4gcHVsbGluZyBOVkNGIGltYWdlcyBmcm9tIGEgcHJpdmF0ZSByZWdpc3RyeSAoZm9yIGV4YW1w" + + "bGUsIE5HQwpgbnZjci5pb2ApLCBLdWJlcm5ldGVzIG5lZWRzIGBpbWFnZVB1bGxTZWNyZXRzYCBv" + + "biBldmVyeSBwb2QuIENvbnRyb2wtcGxhbmUgYW5kCmNvbXB1dGUtcGxhbmUgY3JlZGVudGlhbHMg" + + "YXJlIGNvbmZpZ3VyZWQgaW4gdGhlaXIgb3duIGNsdXN0ZXIgY29udGV4dHMuIERvIG5vdAp1c2Ug" + + "b25lIG1peGVkIG5hbWVzcGFjZSBsaXN0LgoKVGhlIHJlY29tbWVuZGVkIGNvbnRyb2wtcGxhbmUg" + + "YXBwcm9hY2ggdXNlcyBLeXZlcm5vIHRvIGluamVjdCB0aGUgc2VjcmV0IGludG8KY29udHJvbC1w" + + "bGFuZSBwb2RzIGF0IGFkbWlzc2lvbiB0aW1lLiBUaGUgY29tcHV0ZS1wbGFuZSBjaGFydCBhbmQg" + + "b3BlcmF0b3IgdXNlCnRoZSBzZWNyZXQgaW4gYG52Y2Etb3BlcmF0b3JgIGFuZCBtaXJyb3IgaXQg" + + "dG8gYG52Y2Etc3lzdGVtYC4KCiMjIEt5dmVybm8gQXBwcm9hY2ggKFJlY29tbWVuZGVkKQoKIyMj" + + "IDEuIEluc3RhbGwgS3l2ZXJubwoKYGBgYmFzaApoZWxtIHJlcG8gYWRkIGt5dmVybm8gaHR0cHM6" + + "Ly9reXZlcm5vLmdpdGh1Yi5pby9reXZlcm5vLwpoZWxtIHJlcG8gdXBkYXRlCmhlbG0gaW5zdGFs" + + "bCBreXZlcm5vIGt5dmVybm8va3l2ZXJubyAtbiBreXZlcm5vIC0tY3JlYXRlLW5hbWVzcGFjZSBc" + + "CiAgLS1rdWJlLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4KYGBgCgojIyMgMi4gQ3Jl" + + "YXRlIGNvbnRyb2wtcGxhbmUgcHVsbCBzZWNyZXRzCgpgYGBiYXNoCmV4cG9ydCBOR0NfQVBJX0tF" + "WT0iPHlvdXItbmdjLWFwaS1rZXk+IgoKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1z" + "eXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRv" + "CiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gY3JlYXRlIG5hbWVz" + @@ -2807,951 +3638,124 @@ const skillDataZipBase64 = "" + "LS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRv" + "a2VuJyBcCiAgICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5hbWVz" + "cGFjZT0iJG5zIiBcCiAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIC0tY29u" + - "dGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCmRvbmUKYGBgCgojIyMgU3Rl" + - "cCA0OiBBZGQgaW1hZ2VQdWxsU2VjcmV0cyB0byBoZWxtZmlsZSByZWxlYXNlcwoKQWRkIHRoZSBj" + - "aGFydC1zcGVjaWZpYyBgaW1hZ2VQdWxsU2VjcmV0c2Aga2V5IHRvIGVhY2ggcmVsZWFzZS4gRXhh" + - "bXBsZSBmb3IgY2Fzc2FuZHJhIGluIGBoZWxtZmlsZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdv" + - "dG1wbGA6CgpgYGB5YW1sCi0gbmFtZTogY2Fzc2FuZHJhCiAgdmVyc2lvbjogMC44LjAKICBjb25k" + - "aXRpb246IGNhc3NhbmRyYS5lbmFibGVkCiAgbmFtZXNwYWNlOiBjYXNzYW5kcmEtc3lzdGVtCiAg" + - "PDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwKICAg" + - "IC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1z" + - "ZWNyZXRzLnlhbWwKICAgIC0gY2Fzc2FuZHJhOgogICAgICAgIGdsb2JhbDoKICAgICAgICAgIGlt" + - "YWdlUHVsbFNlY3JldHM6CiAgICAgICAgICAgIC0gbnZjci1jcmVkcwpgYGAKClNlZSBbcmVmZXJl" + - "bmNlcy9wdWxsLXNlY3JldHMubWRdKHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKSBmb3IgdGhl" + - "IGtleSBmb3IgZXZlcnkgY2hhcnQuCgpUaGVzZSBhcmUgY29udHJvbC1wbGFuZSBuYW1lc3BhY2Vz" + - "LiBGb3IgYSBzZXBhcmF0ZSBjb21wdXRlIGNsdXN0ZXIsIGNyZWF0ZSB0aGUKc2VjcmV0IG9ubHkg" + - "aW4gYG52Y2Etb3BlcmF0b3JgOyB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0bwpg" + - "bnZjYS1zeXN0ZW1gLiBTZWUgW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZl" + - "cmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kI3B1bGwtc2VjcmV0cykuCgojIyMg" + - "U3RlcCA1OiBEZXBsb3kKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0ta3Vi" + - "ZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IHN5bmMKYGBgCgojIyMgU3RlcCA2OiBQ" + - "YXRjaCBTZXJ2aWNlQWNjb3VudHMgZm9yIGNoYXJ0cyB3aXRob3V0IG5hdGl2ZSBzdXBwb3J0CgpB" + - "ZnRlciBQaGFzZSAxIChkZXBlbmRlbmNpZXMpIGNvbXBsZXRlcywgT3BlbkJhbyBwb2RzIHdpbGwg" + - "YmUgaW4gYEltYWdlUHVsbEJhY2tPZmZgLiBQYXRjaCBhbmQgcmVzdGFydDoKCmBgYGJhc2gKZm9y" + - "IG5zIGluIHZhdWx0LXN5c3RlbSBudmNmIGVzczsgZG8KICBmb3Igc2EgaW4gJChrdWJlY3RsIC0t" + - "Y29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgc2EgLW4gIiRucyIgXAogICAgLS1u" + - "by1oZWFkZXJzIC1vIGN1c3RvbS1jb2x1bW5zPSI6bWV0YWRhdGEubmFtZSIpOyBkbwogICAga3Vi" + - "ZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gcGF0Y2ggc2VydmljZWFjY291" + - "bnQgLW4gIiRucyIgIiRzYSIgXAogICAgICAtcCAneyJpbWFnZVB1bGxTZWNyZXRzIjogW3sibmFt" + - "ZSI6ICJudmNyLWNyZWRzIn1dfScKICBkb25lCmRvbmUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gZGVsZXRlIHBvZHMgLW4gdmF1bHQtc3lzdGVtIC0tYWxsCmBgYAoK" + - "VmVyaWZ5OgoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0" + - "PiBnZXQgZXZlbnRzIC1uIHZhdWx0LXN5c3RlbSBcCiAgLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFt" + - "cCcgfCBncmVwIC1pIHB1bGwKIyBTaG91bGQgc2hvdyAiU3VjY2Vzc2Z1bGx5IHB1bGxlZCBpbWFn" + - "ZSIgZnJvbSBudmNyLmlvCmBgYAoKLS0tCgojIyBFeGFtcGxlIDM6IEZ1bGwgVGVhcmRvd24gYW5k" + - "IFJlaW5zdGFsbAoKV2hlbiBhIGRlcGxveW1lbnQgaXMgYnJva2VuIGFuZCB5b3UgbmVlZCBhIGNs" + - "ZWFuIHNsYXRlLgoKIyMjIFN0ZXAgMTogRGVzdHJveSB0aGUgY29tcHV0ZS1wbGFuZSBzdGFjawoK" + - "YGBgYmFzaAptYWtlIC1DIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGRlc3Ryb3kg" + - "XAogIENMVVNURVJfTkFNRT08Y2x1c3Rlci1uYW1lPiBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwK" + - "ICBLVUJFQ09ORklHX0ZJTEU9PGNvbXB1dGUtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpJZiBjb21w" + - "dXRlIGNsZWFudXAgaXMgc3R1Y2sgb24gZmluYWxpemVycywgdXNlIHRoZSBjb21wdXRlLWNvbnRl" + - "eHQgcHJvY2VkdXJlIGluCltkZWJ1Z2dpbmcubWRdKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kI2Zh" + - "aWx1cmUtbnZjYS1jbGVhbnVwLXN0dWNrLWZpbmFsaXplcnMpLgoKIyMjIFN0ZXAgMjogRGVyZWdp" + - "c3RlciB0aGUgY29tcHV0ZSBjbHVzdGVyCgpSZWFkIGBjbHVzdGVySURgIGFuZCBgbmNhSURgIGZy" + - "b20KYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL3JlZ2lzdHJhdGlvbi88Y2x1c3Rl" + - "ci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuClNob3cgdGhlIElEIGFuZCBnZXQgY29uZmly" + - "bWF0aW9uIGJlZm9yZSBkZWxldGluZyB0aGUgSUNNUyByb3c6CgpgYGBiYXNoCjxudmNmLWNsaT4g" + - "LS1jb25maWcgPGNvbmZpZz4gY2x1c3RlciBkZWxldGUgXAogIC0tY2x1c3Rlci1pZCA8Y2x1c3Rl" + - "ci1pZC1mcm9tLXJlZ2lzdHJhdGlvbi12YWx1ZXM+IFwKICAtLW5jYS1pZCA8bmNhLWlkPiBcCiAg" + - "LS1pZ25vcmUtbWlzc2luZwpgYGAKClJlcGVhdCBzdGVwcyAxIGFuZCAyIGZvciBldmVyeSBjb21w" + - "dXRlIGNsdXN0ZXIuCgojIyMgU3RlcCAzOiBEZXN0cm95IHRoZSBjb250cm9sLXBsYW5lIHN0YWNr" + - "CgpQcmVzZXJ2ZSB0aGUgYGNlcnQtbWFuYWdlcmAgbmFtZXNwYWNlIGJ5IGRlZmF1bHQuIE5hbWVz" + - "cGFjZSBwcmVzZXJ2YXRpb24gZG9lcwpub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZS4gQmVm" + - "b3JlIHJ1bm5pbmcgZGVzdHJveSwgaWRlbnRpZnkgd2hldGhlcgpjZXJ0LW1hbmFnZXIgaXMgZXh0" + - "ZXJuYWwuIEZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlCmBj" + - "ZXJ0TWFuYWdlci5lbmFibGVkOiBmYWxzZWAgYW5kIGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBh" + - "biBpbnRlbmRlZApzdGFjay1tYW5hZ2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUgYGNlcnRNYW5h" + - "Z2VyLmVuYWJsZWQ6IHRydWVgLCB2ZXJpZnkKbWF0Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1l" + - "dGFkYXRhIGFuZCBhYm9ydCBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQKZXZpZGVuY2UuIE9ubHkg" + - "cGxhbiBuYW1lc3BhY2UgcmVtb3ZhbCBhZnRlciB2ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFu" + - "Y2UgYW5kCmdldHRpbmcgZXhwbGljaXQgY29uZmlybWF0aW9uOyBvdGhlcndpc2UgZG8gbm90IGRl" + - "bGV0ZSBpdC4KCmBgYGJhc2gKS1VCRUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBc" + - "Cm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVf" + - "RU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4K" + - "YGBgCgpQYXNzIGJvdGgga3ViZWNvbmZpZyBmb3JtcyBiZWNhdXNlIGNvbnRyb2wtcGxhbmUgbmFt" + - "ZXNwYWNlIGNsZWFudXAgdXNlcwphbWJpZW50IGBrdWJlY3RsYC4KCiMjIyBTdGVwIDQ6IFZlcmlm" + - "eSBjbGVhbgoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0" + - "PiBnZXQgbnMgfCBcCiAgZ3JlcCAtRSAnKG52Y2F8bnZjZi1iYWNrZW5kfGdyb3ZlfGR5bmFtbykn" + - "Cmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBucyB8IFwKICBn" + - "cmVwIC1FICcoY2Fzc2FuZHJhfG5hdHN8dmF1bHR8bnZjZnxhcGkta2V5c3xlc3N8c2lzKScKIyBC" + - "b3RoIGNvbW1hbmRzIHNob3VsZCByZXR1cm4gZW1wdHkuCmBgYAoKIyMjIFN0ZXAgNTogUmVpbnN0" + - "YWxsIGluIHNwbGl0IG9yZGVyCgpGb2xsb3cgW0NsZWFuIEluc3RhbGxhdGlvbl0oU0tJTEwubWQj" + - "Y2xlYW4taW5zdGFsbGF0aW9uKSwgdGhlbiByZXR1cm4gdG8gdGhlCnNhbWUgaGFuZG9mZiBpbiBb" + - "U3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFu" + - "ZS1pbnN0YWxsYXRpb24ubWQpLgoKLS0tCgojIyBFeGFtcGxlIDQ6IFJlY292ZXIgZnJvbSBhIEdh" + - "dGV3YXkgRW5kcG9pbnQgQ2hhbmdlCgpUaGUgc2VwYXJhdGVseSBwcm92aXNpb25lZCBHYXRld2F5" + - "IG9yIGl0cyBsb2FkIGJhbGFuY2VyIHdhcyByZWNyZWF0ZWQgYW5kIGdvdCBhIG5ldyBlbmRwb2lu" + - "dC4KCiMjIyBTdGVwIDE6IEdldCB0aGUgbmV3IGVuZHBvaW50CgpgYGBiYXNoCkdBVEVXQVlfQURE" + - "Uj0kKGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5" + - "IFwKICBudmNmLWdhdGV3YXkgLW4gZW52b3ktZ2F0ZXdheSBcCiAgLW8ganNvbnBhdGg9J3suc3Rh" + - "dHVzLmFkZHJlc3Nlc1swXS52YWx1ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSIgpgYGAKCiMj" + - "IyBTdGVwIDI6IFVwZGF0ZSBETlMgYW5kIGRpcmVjdCBhZGRyZXNzIGZpZWxkcwoKS2VlcCBgZ2xv" + - "YmFsLmRvbWFpbmAsIHJvdXRlIGhvc3RuYW1lcywgYW5kIENMSSBIb3N0IGZpZWxkcyB1bmNoYW5n" + - "ZWQuIFBvaW50IHRoZQpETlMgcmVjb3JkcyBmb3IgcmVuZGVyZWQgcm91dGUgaG9zdG5hbWVzLCBz" + - "dWNoIGFzIGBhcGkuPGRvbWFpbj5gIGFuZApgKi5pbnZvY2F0aW9uLjxkb21haW4+YCwgdG8gYEdB" + - "VEVXQVlfQUREUmAuIEZvciBhIHRlbXBvcmFyeSBlbnZpcm9ubWVudCB3aXRob3V0CkROUywga2Vl" + - "cCBpdHMgcmVzZXJ2ZWQgcm91dGUgc3VmZml4IGFuZCBjb25uZWN0IHRvIGBHQVRFV0FZX0FERFJg" + - "IHdpdGggdGhlCm1hdGNoaW5nIGBIb3N0YCBoZWFkZXIuCgpGb3IgYSBzcGxpdCBkZXBsb3ltZW50" + - "IGNvbmZpZ3VyZWQgd2l0aCBkaXJlY3QgR2F0ZXdheSBhZGRyZXNzZXMsIHJlcGxhY2Ugb25seQp0" + - "aGUgYWRkcmVzcy1iZWFyaW5nIHZhbHVlczogY29udHJvbC1wbGFuZSBgbnZjZk5hdHNTZXJ2aWNl" + - "VVJMYCwgY29tcHV0ZS1wbGFuZQpJQ01TLCBSZVZhbCwgYW5kIE5BVFMgVVJMcywgYW5kIENMSSBV" + - "UkwgZmllbGRzLiBLZWVwIHRoZWlyIGRvbWFpbiBhbmQgSG9zdApvdmVycmlkZXMgdW5jaGFuZ2Vk" + - "LiBSZWZyZXNoIHJlZ2lzdHJhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIHRocm91Z2ggdGhlIHNhbWUK" + - "aGFuZG9mZiB1c2VkIG9yaWdpbmFsbHkuIFNlZQpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxs" + - "YXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpCmZvciB0aGUg" + - "ZmllbGRzIGFuZCBjb21wbGV0ZSBjb21tYW5kcy4KCiMjIyBTdGVwIDM6IFZlcmlmeSBib3RoIGNv" + - "bnRleHRzCgpgYGBiYXNoCmRpZyArc2hvcnQgImFwaS48ZG9tYWluPiIKY3VybCAtSCAiSG9zdDog" + - "YXBpLjxkb21haW4+IiAiaHR0cDovLyRHQVRFV0FZX0FERFIvaGVhbHRoIgprdWJlY3RsIC0tY29u" + - "dGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBudmNmLWdhdGV3YXkgXAog" + - "IC1uIGVudm95LWdhdGV3YXkgLW8gd2lkZQprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFu" + - "ZS1jb250ZXh0PiBnZXQgaHR0cHJvdXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1w" + - "bGFuZS1jb250ZXh0PiBnZXQgdGNwcm91dGVzIC1BCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + - "LXBsYW5lLWNvbnRleHQ+IHJvbGxvdXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Etb3BlcmF0" + - "b3IgLW4gbnZjYS1vcGVyYXRvciAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21w" + - "dXRlLXBsYW5lLWNvbnRleHQ+IHdhaXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBsYW5lLWNs" + - "dXN0ZXItbmFtZT4gLW4gbnZjYS1vcGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3suc3RhdHVz" + - "LmFnZW50U3RhdHVzfSc9aGVhbHRoeSAtLXRpbWVvdXQ9MTBtCmBgYAoKLS0tCgojIyBFeGFtcGxl" + - "IDU6IERlcGxveSBPbmx5IERlcGVuZGVuY2llcwoKVXNlZnVsIGZvciB0ZXN0aW5nIG9yIHdoZW4g" + - "aXRlcmF0aW5nIG9uIHNlcnZpY2UgY29uZmlndXJhdGlvbi4KCmBgYGJhc2gKIyBEZXBsb3kganVz" + - "dCBOQVRTLCBDYXNzYW5kcmEsIE9wZW5CYW8KSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0t" + - "c2VsZWN0b3IgcmVsZWFzZS1ncm91cD1kZXBlbmRlbmNpZXMgc3luYwoKIyBDaGVjayBzdGF0dXMK" + - "a3ViZWN0bCBnZXQgcG9kcyAtbiBuYXRzLXN5c3RlbQprdWJlY3RsIGdldCBwb2RzIC1uIGNhc3Nh" + - "bmRyYS1zeXN0ZW0Ka3ViZWN0bCBnZXQgcG9kcyAtbiB2YXVsdC1zeXN0ZW0KCiMgRGVwbG95IGp1" + - "c3Qgb25lIHNwZWNpZmljIHJlbGVhc2UKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2Vs" + - "ZWN0b3IgbmFtZT1jYXNzYW5kcmEgc3luYwpgYGAKCiMjIyBTZWxlY3RvciByZWZlcmVuY2UKCnwg" + - "U2VsZWN0b3IgfCBSZWxlYXNlcyB8CnwtLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgYHJlbGVhc2Ut" + - "Z3JvdXA9ZGVwZW5kZW5jaWVzYCB8IG5hdHMsIGNhc3NhbmRyYSwgb3BlbmJhby1zZXJ2ZXIgfAp8" + - "IGByZWxlYXNlLWdyb3VwPXNlcnZpY2VzYCB8IGFwaS1rZXlzLCBzaXMsIGFwaSwgaW52b2NhdGlv" + - "bi1zZXJ2aWNlLCBncnBjLXByb3h5LCBlc3MtYXBpLCBub3Rhcnktc2VydmljZSwgcmV2YWwsIG9w" + - "dGlvbmFsIGxsbS1yZXF1ZXN0LXJvdXRlciBhbmQgbGxtLWFwaS1nYXRld2F5IHdoZW4gYGxsbS5l" + - "bmFibGVkPXRydWVgLCBvcHRpb25hbCB2YW5pdHktZ2F0ZXdheSBvbmx5IGluIHN0YWNrIHBhY2th" + - "Z2VzIHRoYXQgaW5jbHVkZSB0aGUgYWRkb24gYW5kIGhhdmUgYGFkZG9ucy52YW5pdHlHYXRld2F5" + - "LmVuYWJsZWQ9dHJ1ZWAsIG9wdGlvbmFsIG52Y2YtdWkgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0" + - "aGF0IGluY2x1ZGUgdGhlIGFkZG9uIGFuZCBoYXZlIGBhZGRvbnMubnZjZlVpLmVuYWJsZWQ9dHJ1" + - "ZWAgfAp8IGBuYW1lPWxsbS1yZXF1ZXN0LXJvdXRlcmAgfCBEZXBsb3kganVzdCB0aGUgTExNIHJl" + - "cXVlc3Qgcm91dGVyIHdoZW4gYGxsbS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1sbG0tYXBpLWdh" + - "dGV3YXlgIHwgRGVwbG95IGp1c3QgdGhlIExMTSBBUEkgZ2F0ZXdheSB3aGVuIGBsbG0uZW5hYmxl" + - "ZD10cnVlYCB8CnwgYG5hbWU9dmFuaXR5LWdhdGV3YXlgIHwgRGVwbG95IGp1c3QgVmFuaXR5IEdh" + - "dGV3YXkgb25seSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoYXQgcmVsZWFzZSBh" + - "bmQgYGFkZG9ucy52YW5pdHlHYXRld2F5LmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1lPW52Y2YtdWlg" + - "IHwgRGVwbG95IE5WQ0YgVUkgb25seSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRo" + - "YXQgcmVsZWFzZSBhbmQgYGFkZG9ucy5udmNmVWkuZW5hYmxlZD10cnVlYCB8CnwgYHJlbGVhc2Ut" + - "Z3JvdXA9aW5ncmVzc2AgfCBpbmdyZXNzIChnYXRld2F5IHJvdXRlcykgfAp8IGBuYW1lPTxyZWxl" + - "YXNlPmAgfCBBbnkgaW5kaXZpZHVhbCByZWxlYXNlIGJ5IG5hbWUgfAoKTm90ZTogYGFkbWluLWlz" + - "c3Vlci1wcm94eWAgZG9lcyBub3QgaGF2ZSBhIHJlbGVhc2UtZ3JvdXAgbGFiZWwuIFRhcmdldCBp" + - "dCB3aXRoIGAtLXNlbGVjdG9yIG5hbWU9YWRtaW4taXNzdWVyLXByb3h5YC4KUEsHCAJSTkB/KAAA" + - "fygAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAATAAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + - "aW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWRVVAUA" + - "AQCmzhIjIFNwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uCgpUaGUgY29udHJvbCBwbGFu" + - "ZSBhbmQgY29tcHV0ZSBwbGFuZSBhcmUgc2VwYXJhdGUgc3RhY2tzLiBJbnN0YWxsIHRoZSBjb250" + - "cm9sCnBsYW5lIGZpcnN0LCB0aGVuIHJlZ2lzdGVyIGFuZCBpbnN0YWxsIGVhY2ggY29tcHV0ZSBj" + - "bHVzdGVyLiBDaG9vc2Ugb25lIGhhbmRvZmYKYmVsb3cgYW5kIHVzZSBpdCBmb3IgdGhlIGZ1bGwg" + - "bGlmZWN5Y2xlLiBEbyBub3QgY29tYmluZSBhIENMSS1nZW5lcmF0ZWQgcHJvZmlsZQp3aXRoIHRo" + - "ZSBIZWxtZmlsZSB2YWx1ZXMgZmxvdy4KCiMjIENob29zZSBhIEhhbmRvZmYKCnwgRmxvdyB8IFNv" + - "dXJjZSBvZiBjb250cm9sLXBsYW5lIGVuZHBvaW50cyB8IFJlZ2lzdHJhdGlvbiBhcnRpZmFjdCB8" + - "CnwtLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0t" + - "LS0tLS0tLS0tLS18CnwgSGVsbWZpbGUgdmFsdWVzIHwgU2VwYXJhdGUgY29udHJvbC1wbGFuZSBh" + - "bmQgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCBmaWxlcyB8IGBkZXBsb3kvc3RhY2tzL252Y2Yt" + - "Y29tcHV0ZS1wbGFuZS9yZWdpc3RyYXRpb24vPGNsdXN0ZXI+LXJlZ2lzdGVyLXZhbHVlcy55YW1s" + - "YCB8CnwgQ0xJIHByb2ZpbGUgfCBDTEktZ2VuZXJhdGVkIGBkZXBsb3kvc3RhY2tzL3NlbGYtbWFu" + - "YWdlZC9vdXQvY29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWxgIHwgQ0xJLWdlbmVyYXRlZCBgZGVw" + - "bG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvb3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1" + - "ZXMueWFtbGAgfAoKVGhlIENMSSBwcm9maWxlIGlzIG1hbmRhdG9yeSBmb3IgdGhlIENMSSBmbG93" + - "IGFuZCBtdXN0IG5vdCBiZSBoYW5kLWF1dGhvcmVkLgpUaGUgSGVsbWZpbGUgZmxvdyBkb2VzIG5v" + - "dCBjb25zdW1lIGEgY29udHJvbC1wbGFuZSBwcm9maWxlLgoKQ29tbWFuZHMgYmVsb3cgdXNlIG1v" + - "bm9yZXBvIHBhdGhzIGZyb20gdGhlIHJlcG9zaXRvcnkgcm9vdC4gT3BlcmF0b3JzIHVzaW5nCmV4" + - "dHJhY3RlZCBwYWNrYWdlcyBuZWVkIG1hdGNoaW5nLXZlcnNpb24gYG52Y2Ytc2VsZi1tYW5hZ2Vk" + - "LXN0YWNrYCBhbmQKYG52Y2YtY29tcHV0ZS1wbGFuZS1zdGFja2AgYnVuZGxlcy4gU3Vic3RpdHV0" + - "ZSB0aG9zZSBidW5kbGUgcm9vdHMgZm9yCmBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZGAgYW5k" + - "IGBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZWAuCgojIyBIZWxtZmlsZSBWYWx1ZXMg" + - "RmxvdwoKQ3JlYXRlIGJvdGggZW52aXJvbm1lbnQgZmlsZXMgYmVmb3JlIGluc3RhbGxhdGlvbjoK" + - "Ci0gYGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55YW1sYCBm" + - "b3IgY29udHJvbC1wbGFuZQogIHJlZ2lzdHJ5LCBkb21haW4sIEdhdGV3YXksIHJvdXRlcywgYW5k" + - "IHNlcnZpY2Ugc2V0dGluZ3MuCi0gYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vu" + - "dmlyb25tZW50cy88ZW52Pi55YW1sYCBmb3IgY29tcHV0ZS1wbGFuZQogIHJlZ2lzdHJ5LCBwdWxs" + - "IHNlY3JldHMsIGFuZCBjb21wdXRlLXJlYWNoYWJsZSBJQ01TLCBSZVZhbCwgYW5kIE5BVFMgdmFs" + - "dWVzLgoKRm9yIEVLUywgdXNlIHRoZSBjYW5vbmljYWwKW0NTUCBFbmQtdG8tRW5kIEV4YW1wbGVd" + - "KGh0dHBzOi8vZG9jcy5udmlkaWEuY29tL252Y2YvdjAuNi4wLXJjL2NzcC1lbmQtdG8tZW5kLWV4" + - "YW1wbGUpLgpUaGUgY29udHJvbC1wbGFuZSBlbnZpcm9ubWVudCBrZWVwcyB0aGUgRW52b3kgR2F0" + - "ZXdheSBjb250cm9sbGVyIGluCmBlbnZveS1nYXRld2F5LXN5c3RlbWAsIGF0dGFjaGVzIHJvdXRl" + - "cyB0byBgR2F0ZXdheS9udmNmLWdhdGV3YXlgIGluCmBlbnZveS1nYXRld2F5YCwgYW5kIGVuYWJs" + - "ZXMgdGhlIE5BVFMgcm91dGUuIFRoZSBjb21wdXRlLXBsYW5lIGVudmlyb25tZW50IHVzZXMKdGhl" + - "IGV4dGVybmFsIGFkZHJlc3MgcGx1cyB0aGUgc2VydmljZSBob3N0IG92ZXJyaWRlcy4gSGVyZSwK" + - "YDxnYXRld2F5LWFkZHJlc3M+YCBpcyB0aGUgTkxCIGFkZHJlc3MgYW5kIGA8Z2F0ZXdheS1kb21h" + - "aW4+YCBpcyB0aGUgRE5TIGJhc2UKd2hvc2Ugc2VydmljZSBzdWJkb21haW5zIHJlc29sdmUgdG8g" + - "dGhhdCBOTEI6CgpgYGB5YW1sCiMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvZW52aXJvbm1l" + - "bnRzLzxlbnY+LnlhbWwKZ2xvYmFsOgogIGRvbWFpbjogIjxnYXRld2F5LWRvbWFpbj4iCiAgd29y" + - "a2VyRW5kcG9pbnRzOgogICAgbnZjZlNlcnZpY2VVUkw6ICJodHRwOi8vYXBpLjxnYXRld2F5LWRv" + - "bWFpbj4iCiAgICBudmNmR3JwY1NlcnZpY2VVUkw6ICJodHRwOi8vd29ya2VyLWFwaS48Z2F0ZXdh" + - "eS1kb21haW4+IgogICAgbnZjZk5hdHNTZXJ2aWNlVVJMOiAibmF0czovLzxnYXRld2F5LWFkZHJl" + - "c3M+OjQyMjIiCiAgICBudmN0U2VydmljZVVSTDogImh0dHA6Ly90YXNrcy48Z2F0ZXdheS1kb21h" + - "aW4+IgogICAgbnZjdEdycGNTZXJ2aWNlVVJMOiAiaHR0cDovL3dvcmtlci10YXNrcy48Z2F0ZXdh" + - "eS1kb21haW4+IgogICAgaW52b2NhdGlvblNlcnZpY2VVUkw6ICJodHRwOi8vaW52b2NhdGlvbi48" + - "Z2F0ZXdheS1kb21haW4+IgoKZ3JwY3Byb3h5OgogIG52Y2ZHcnBjU2VydmljZVVSTDogImh0dHA6" + - "Ly9hcGkubnZjZi5zdmMuY2x1c3Rlci5sb2NhbDo5MDkwIgoKaW5ncmVzczoKICBnYXRld2F5QXBp" + - "OgogICAgY29udHJvbGxlck5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheS1zeXN0ZW0KICAgIGdhdGV3" + - "YXlzOgogICAgICBzaGFyZWQ6IHtuYW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3kt" + - "Z2F0ZXdheX0KICAgICAgZ3JwYzoge25hbWU6IG52Y2YtZ2F0ZXdheSwgbmFtZXNwYWNlOiBlbnZv" + - "eS1nYXRld2F5fQogICAgICBuYXRzOgogICAgICAgIG5hbWU6IG52Y2YtZ2F0ZXdheQogICAgICAg" + - "IG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheQogICAgICAgIGxpc3RlbmVyTmFtZTogbmF0cwogICAg" + - "cm91dGVzOgogICAgICBudmNmQXBpOgogICAgICAgIGdycGM6CiAgICAgICAgICBlbmFibGVkOiB0" + - "cnVlCiAgICAgICAgICBob3N0bmFtZXM6IFsid29ya2VyLWFwaS48Z2F0ZXdheS1kb21haW4+Il0K" + - "ICAgICAgbnZjdEFwaToKICAgICAgICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAg" + - "ICAgICAgaG9zdG5hbWVzOiBbIndvcmtlci10YXNrcy48Z2F0ZXdheS1kb21haW4+Il0KICAgICAg" + - "bmF0czoKICAgICAgICBlbmFibGVkOiB0cnVlCgpvcGVuYmFvOgogIG1pZ3JhdGlvbnM6CiAgICBp" + - "c3N1ZXJEaXNjb3Zlcnk6CiAgICAgIGVuYWJsZWQ6IHRydWUKYGBgCgpgYGB5YW1sCiMgZGVwbG95" + - "L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwKZ2xvYmFs" + - "OgogIG52Y2FPcGVyYXRvcjoKICAgIHNlbGZNYW5hZ2VkOgogICAgICBpY21zU2VydmljZVVSTDog" + - "Imh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKICAgICAgaWNtc1NlcnZpY2VIb3N0SGVhZGVyT3Zl" + - "cnJpZGU6ICJzaXMuPGdhdGV3YXktZG9tYWluPiIKICAgICAgcmV2YWxTZXJ2aWNlVVJMOiAiaHR0" + - "cDovLzxnYXRld2F5LWFkZHJlc3M+IgogICAgICByZXZhbFNlcnZpY2VIb3N0SGVhZGVyT3ZlcnJp" + - "ZGU6ICJyZXZhbC48Z2F0ZXdheS1kb21haW4+IgogICAgICBuYXRzVVJMOiAibmF0czovLzxnYXRl" + - "d2F5LWFkZHJlc3M+OjQyMjIiCiAgICAgIG5hdHNIb3N0T3ZlcnJpZGU6ICJuYXRzLjxnYXRld2F5" + - "LWRvbWFpbj4iCmBgYAoKUHJldmlldyBhbmQgaW5zdGFsbCB0aGUgY29udHJvbCBwbGFuZSBhZ2Fp" + - "bnN0IGl0cyBjb250ZXh0OgoKYGBgYmFzaAptYWtlIC1DIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5h" + - "Z2VkIHRlbXBsYXRlIFwKICBIRUxNRklMRV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklMRT08" + - "Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFu" + - "YWdlZCBpbnN0YWxsIFwKICBIRUxNRklMRV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklMRT08" + - "Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPgpgYGAKCkJlZm9yZSByZWdpc3RlcmluZyB0aHJvdWdo" + - "IGEgYmFyZSBHYXRld2F5IGFkZHJlc3MsIGNyZWF0ZSBvciB1cGRhdGUgdGhlIENMSQpjb25maWcg" + - "cGFzc2VkIGFzIGBOVkNGX0NMSV9DT05GSUdgOgoKYGBgeWFtbApiYXNlX2h0dHBfdXJsOiAiaHR0" + - "cDovLzxnYXRld2F5LWFkZHJlc3M+IgppbnZva2VfdXJsOiAiaHR0cDovLzxnYXRld2F5LWFkZHJl" + - "c3M+IgpiYXNlX2dycGNfdXJsOiAiPGdhdGV3YXktYWRkcmVzcz46MTAwODEiCmFwaV9rZXlzX3Nl" + - "cnZpY2VfdXJsOiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+IgppY21zX3VybDogImh0dHA6Ly88" + - "Z2F0ZXdheS1hZGRyZXNzPiIKYXBpX2hvc3Q6ICJhcGkuPGdhdGV3YXktZG9tYWluPiIKYXBpX2tl" + - "eXNfaG9zdDogImFwaS1rZXlzLjxnYXRld2F5LWRvbWFpbj4iCmludm9rZV9ob3N0OiAiaW52b2Nh" + - "dGlvbi48Z2F0ZXdheS1kb21haW4+IgppY21zX2hvc3Q6ICJzaXMuPGdhdGV3YXktZG9tYWluPiIK" + - "YGBgCgpIb3N0IGZpZWxkcyBjb250YWluIGhvc3RuYW1lcyBvbmx5LCB3aXRob3V0IGEgVVJMIHNj" + - "aGVtZS4gYElDTVNfVVJMYCBtYXBzIG9ubHkKdG8gdGhlIHJlZ2lzdHJhdGlvbiBjb21tYW5kJ3Mg" + - "YC0taWNtcy11cmxgOyBgaWNtc19ob3N0YCBpbiB0aGUgY29uZmlnIHN1cHBsaWVzCnRoZSBHYXRl" + - "d2F5IEhvc3QgaGVhZGVyLiBUaGVyZSBpcyBubyBgLS1pY21zLWhvc3RgIE1ha2Ugb3IgQ0xJIGZs" + - "YWcuCgpSZWdpc3RlciBmcm9tIHRoZSBjb21wdXRlIGNvbnRleHQsIHRoZW4gaW5zdGFsbCB0aGUg" + - "Y29tcHV0ZSBwbGFuZToKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0" + - "ZS1wbGFuZSByZWdpc3Rlci1jbHVzdGVyIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4g" + - "XAogIE5DQV9JRD08bmNhLWlkPiBcCiAgQ0xVU1RFUl9SRUdJT049PHJlZ2lvbj4gXAogIElDTVNf" + - "VVJMPWh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRl" + - "LXBsYW5lLWt1YmVjb25maWc+IFwKICBOVkNGX0NMST08cGF0aC10by1udmNmLWNsaT4gXAogIE5W" + - "Q0ZfQ0xJX0NPTkZJRz08cGF0aC10by1udmNmLWNsaS1jb25maWc+CgptYWtlIC1DIGRlcGxveS9z" + - "dGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGluc3RhbGwgXAogIENMVVNURVJfTkFNRT08Y2x1c3Rl" + - "ci1uYW1lPiBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbXB1" + - "dGUtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpSZWdpc3RyYXRpb24gZGlzY292ZXJzIHRoZSBPSURD" + - "IGlzc3VlciBhbmQgSldLUyBmcm9tIHRoZSBjb21wdXRlIGt1YmUgY29udGV4dC4KSW4gYSBtdWx0" + - "aS1jbHVzdGVyIGRlcGxveW1lbnQsIGBLVUJFQ09ORklHX0ZJTEVgIGlzIHJlcXVpcmVkIG9uIGJv" + - "dGgKY29tcHV0ZS1wbGFuZSBjb21tYW5kcy4gSW4gYSBzYW1lLWNsdXN0ZXIgZGVwbG95bWVudCBp" + - "dCBtYXkgYmUgb21pdHRlZCBvbmx5CndoZW4gdGhlIGFtYmllbnQgY29udGV4dCBpcyBhbHJlYWR5" + - "IHRoZSB0YXJnZXQgY2x1c3Rlci4KCiMjIENMSSBQcm9maWxlIEZsb3cKClJ1biB0aGUgQ0xJIGNv" + - "bnRyb2wtcGxhbmUgaW5zdGFsbCBmaXJzdC4gSXQgY3JlYXRlcyB0aGUgcHJvZmlsZSBjb25zdW1l" + - "ZCBieQpjb21wdXRlLXBsYW5lIHJlZ2lzdHJhdGlvbjoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25m" + - "aWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kv" + - "c3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFj" + - "a3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1j" + - "b250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0" + - "ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICBpbnN0YWxsIC0tY29u" + - "dHJvbC1wbGFuZSBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbnRyb2wtcGxhbmUtY2x1c3Rlci1uYW1l" + - "PiBcCiAgLS1yZWdpb24gPHJlZ2lvbj4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+Cgp0ZXN0IC1zIGRl" + - "cGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL291dC9jb250cm9sLXBsYW5lLXByb2ZpbGUueWFtbApg" + - "YGAKClVzZSB0aGUgZnVsbCBwZXJzaXN0ZW50IHByZWZpeCBmb3IgYm90aCBjb21wdXRlLXBsYW5l" + - "IGNvbW1hbmRzOgoKYGBgYmFzaApudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3Rl" + - "ZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwK" + - "ICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUg" + - "XAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWluIFwKICBjb21wdXRlLXBsYW5lIHJlZ2lzdGVyIFwK" + - "ICAtLWNvbnRyb2wtcGxhbmUtcHJvZmlsZSBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQv" + - "Y29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWwgXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBs" + - "YW5lLWNsdXN0ZXItbmFtZT4gXAogIC0ta3ViZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + - "eHQ+IFwKICAtLXJlZ2lvbiA8cmVnaW9uPiBcCiAgLS1vdXRwdXQgZGVwbG95L3N0YWNrcy9udmNm" + - "LWNvbXB1dGUtcGxhbmUvb3V0Lzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4tcmVnaXN0ZXIt" + - "dmFsdWVzLnlhbWwKCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAt" + - "LWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29t" + - "cHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1l" + - "bnYgPGVudj4gXAogIC0tcGxhaW4gXAogIGNvbXB1dGUtcGxhbmUgaW5zdGFsbCBcCiAgLS12YWx1" + - "ZXMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvb3V0Lzxjb21wdXRlLXBsYW5lLWNs" + - "dXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWwgXAogIC0ta3ViZS1jb250ZXh0IDxjb21w" + - "dXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVz" + - "dGVyLW5hbWU+CmBgYAoKUmVnaXN0cmF0aW9uIHNlbGVjdHMgdGhlIHByb2ZpbGUncyBpbi1jbHVz" + - "dGVyIG9yIGNvbXB1dGUtcmVhY2hhYmxlIGVuZHBvaW50cwpmcm9tIHRoZSBjb21wdXRlIGNvbnRl" + - "eHQgYW5kIHByb2JlcyBpdHMgSldLUy4gRG8gbm90IHJlcGxhY2UgcHJvZmlsZSBlbmRwb2ludHMK" + - "d2l0aCBoYW5kLWF1dGhvcmVkIEhlbG1maWxlIGVuZHBvaW50IHZhbHVlcy4KCiMjIFB1bGwgU2Vj" + - "cmV0cwoKQ3JlYXRlIHRoZSBjb250cm9sLXBsYW5lIHNlY3JldCBpbiB0aGVzZSBuYW1lc3BhY2Vz" + - "IG9uIHRoZSBjb250cm9sLXBsYW5lCmNvbnRleHQ6CgpgYGB0ZXh0CmNhc3NhbmRyYS1zeXN0ZW0g" + - "bmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFn" + - "ZXIKYGBgCgpPbiB0aGUgY29tcHV0ZSBjb250ZXh0LCBjcmVhdGUgdGhlIHNlY3JldCBvbmx5IGlu" + - "IGBudmNhLW9wZXJhdG9yYCBhbmQgcmVmZXJlbmNlCml0IHRocm91Z2ggYGdsb2JhbC5pbWFnZVB1" + - "bGxTZWNyZXRzYCBpbiB0aGUgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudC4gVGhlIGNoYXJ0CmFu" + - "ZCBvcGVyYXRvciB1c2UgaXQgaW4gYG52Y2Etb3BlcmF0b3JgIGFuZCBtaXJyb3IgaXQgdG8gYG52" + - "Y2Etc3lzdGVtYC4gRG8gbm90IGFkZAplaXRoZXIgbmFtZXNwYWNlIHRvIHRoZSBjb250cm9sLXBs" + - "YW5lIGxpc3QuIEZvciBjb21tYW5kcyBhbmQgcG9saWN5IGV4YW1wbGVzLApzZWUgW3B1bGwtc2Vj" + - "cmV0cy5tZF0ocHVsbC1zZWNyZXRzLm1kKS4KCiMjIFZlcmlmaWNhdGlvbgoKVXNlIHRoZSBleHBs" + - "aWNpdCBHYXRld2F5IG5hbWUgYW5kIG5hbWVzcGFjZToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRl" + - "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAt" + - "biBlbnZveS1nYXRld2F5IC1vIHdpZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + - "Y29udGV4dD4gZ2V0IHRjcHJvdXRlIC1uIGVudm95LWdhdGV3YXkKa3ViZWN0bCAtLWNvbnRleHQg" + - "PGNvbXB1dGUtcGxhbmUtY29udGV4dD4gcm9sbG91dCBzdGF0dXMgXAogIGRlcGxveW1lbnQvbnZj" + - "YS1vcGVyYXRvciAtbiBudmNhLW9wZXJhdG9yIC0tdGltZW91dD0xMG0Ka3ViZWN0bCAtLWNvbnRl" + - "eHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gd2FpdCBcCiAgbnZjZmJhY2tlbmQvPGNvbXB1dGUt" + - "cGxhbmUtY2x1c3Rlci1uYW1lPiAtbiBudmNhLW9wZXJhdG9yIFwKICAtLWZvcj1qc29ucGF0aD0n" + - "ey5zdGF0dXMuYWdlbnRTdGF0dXN9Jz1oZWFsdGh5IC0tdGltZW91dD0xMG0Ka3ViZWN0bCAtLWNv" + - "bnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IHNlY3JldCA8cHVsbC1zZWNyZXQ+IC1u" + - "IG52Y2Etc3lzdGVtCmBgYAoKIyMgVGVhcmRvd24KCkRlc3Ryb3kgYW5kIGRlcmVnaXN0ZXIgZXZl" + - "cnkgY29tcHV0ZSBwbGFuZSBiZWZvcmUgdGhlIGNvbnRyb2wgcGxhbmUuIEJvdGgKaGFuZG9mZnMg" + - "Y2FuIGRlc3Ryb3kgdGhlIGNvbnRyb2wgcGxhbmUsIHNvIGFwcGx5IHRoaXMgcHJlZmxpZ2h0IGJl" + - "Zm9yZSBlaXRoZXIKb25lLiBQcmVzZXJ2ZSB0aGUgYGNlcnQtbWFuYWdlcmAgbmFtZXNwYWNlIGJ5" + - "IGRlZmF1bHQuIE5hbWVzcGFjZSBwcmVzZXJ2YXRpb24KZG9lcyBub3QgcHJlc2VydmUgdGhlIEhl" + - "bG0gcmVsZWFzZS4gSWRlbnRpZnkgd2hldGhlciBjZXJ0LW1hbmFnZXIgaXMgZXh0ZXJuYWwuCkZv" + - "ciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlIGBjZXJ0TWFuYWdl" + - "ci5lbmFibGVkOiBmYWxzZWAKYW5kIGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBhbiBpbnRlbmRl" + - "ZCBzdGFjay1tYW5hZ2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUKYGNlcnRNYW5hZ2VyLmVuYWJs" + - "ZWQ6IHRydWVgLCB2ZXJpZnkgbWF0Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1ldGFkYXRhIGFu" + - "ZAphYm9ydCBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQgZXZpZGVuY2UuIE9ubHkgcGxhbiBuYW1l" + - "c3BhY2UgcmVtb3ZhbCBhZnRlcgp2ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGdl" + - "dHRpbmcgZXhwbGljaXQgY29uZmlybWF0aW9uOyBvdGhlcndpc2UKZG8gbm90IGRlbGV0ZSBpdC4K" + - "CkZvciB0aGUgSGVsbWZpbGUgdmFsdWVzIGZsb3csIHJldGFpbiBlYWNoIHJlZ2lzdHJhdGlvbiB2" + - "YWx1ZXMgZmlsZSB1bnRpbApjbGVhbnVwIGlzIHZlcmlmaWVkOgoKYGBgYmFzaAptYWtlIC1DIGRl" + - "cGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGRlc3Ryb3kgXAogIENMVVNURVJfTkFNRT08" + - "Y2x1c3Rlci1uYW1lPiBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9" + - "PGNvbXB1dGUtcGxhbmUta3ViZWNvbmZpZz4KCjxudmNmLWNsaT4gLS1jb25maWcgPGNvbmZpZz4g" + - "Y2x1c3RlciBkZWxldGUgXAogIC0tY2x1c3Rlci1pZCA8Y2x1c3Rlci1pZC1mcm9tLXJlZ2lzdHJh" + - "dGlvbi12YWx1ZXM+IFwKICAtLW5jYS1pZCA8bmNhLWlkPiBcCiAgLS1pZ25vcmUtbWlzc2luZwpg" + - "YGAKClJlYWQgYGNsdXN0ZXJJRGAgYW5kIGBuY2FJRGAgZnJvbQpgZGVwbG95L3N0YWNrcy9udmNm" + - "LWNvbXB1dGUtcGxhbmUvcmVnaXN0cmF0aW9uLzxjbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVl" + - "cy55YW1sYC4KU2hvdyB0aGUgZXhhY3QgY2x1c3RlciBJRCBhbmQgZ2V0IGNvbmZpcm1hdGlvbiBi" + - "ZWZvcmUgYGNsdXN0ZXIgZGVsZXRlYC4gUmVwZWF0CmNvbXB1dGUgZGVzdHJveSBhbmQgZGVyZWdp" + - "c3RyYXRpb24gZm9yIGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciwgdGhlbiBkZXN0cm95IHRoZQpjb250" + - "cm9sIHBsYW5lLgoKYGBgYmFzaApLVUJFQ09ORklHPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+" + - "IFwKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBkZXN0cm95IFwKICBIRUxNRklM" + - "RV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklMRT08Y29udHJvbC1wbGFuZS1rdWJlY29uZmln" + - "PgpgYGAKCkJvdGggYEtVQkVDT05GSUdgIGFuZCBgS1VCRUNPTkZJR19GSUxFYCBhcmUgcmVxdWly" + - "ZWQgb24gdGhlIGNvbnRyb2wtcGxhbmUKZGVzdHJveSBiZWNhdXNlIGl0cyBuYW1lc3BhY2UgY2xl" + - "YW51cCB1c2VzIGFtYmllbnQgYGt1YmVjdGxgLgoKRm9yIHRoZSBDTEkgcHJvZmlsZSBmbG93LCBr" + - "ZWVwCmBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9vdXQvPGNsdXN0ZXItbmFtZT4t" + - "cmVnaXN0ZXItdmFsdWVzLnlhbWxgCnVudGlsIHRlYXJkb3duIGNvbXBsZXRlcyBiZWNhdXNlIGBk" + - "b3duYCByZWFkcyBpdHMgY2x1c3RlciBJRC4gRmlyc3QgcXVlcnkgdGhlCmxpdmUgcmVnaXN0cmF0" + - "aW9uIHNldCB3aXRoIHRoZSBzYW1lIGNvbXBsZXRlIHBlcnNpc3RlbnQgcHJlZml4OgoKYGBgYmFz" + - "aApudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBs" + - "YW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUt" + - "c3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwK" + - "ICAtLXBsYWluIFwKICAtLWNvbnRyb2wtcGxhbmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250" + - "ZXh0PiBcCiAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4g" + - "XAogIC0taWNtcy11cmwgPGNvbXB1dGUtcmVhY2hhYmxlLWljbXMtdXJsPiBcCiAgc3RhdHVzIFwK" + - "ICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAtLW5jYS1p" + - "ZCA8bmNhLWlkPgpgYGAKClNob3cgdGhlIHJlZ2lzdGVyZWQgY29tcHV0ZS1wbGFuZSBsaXN0LiBO" + - "YW1lZC1jbHVzdGVyIGBkb3duIC0tcGxhbi1vbmx5YCBkb2VzCm5vdCBxdWVyeSBJQ01TLCBzbyBp" + - "dCBwcmV2aWV3cyBvbmx5IHRoYXQgY29tcHV0ZSBwbGFuZSBhbmQgY2Fubm90IHNob3cgdGhlCmNv" + - "bmRpdGlvbmFsIGNvbnRyb2wtcGxhbmUgcmVtb3ZhbC4gSWYgdGhlIHRhcmdldCBpcyB0aGUgbGFz" + - "dCByZWdpc3RlcmVkCmNsdXN0ZXIsIHJlYWwgYGRvd25gIGFsc28gZGVzdHJveXMgdGhlIGNvbnRy" + - "b2wgcGxhbmUuIEdldCBleHBsaWNpdCBjb25maXJtYXRpb24KZm9yIGJvdGggcmVtb3ZhbHMgYmVm" + - "b3JlIGNvbnRpbnVpbmcuIFRoZW4gcHJldmlldyBhbmQgZXhlY3V0ZSB3aXRoIHRoZSBzYW1lCnBy" + - "ZWZpeDoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAog" + - "IC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1j" + - "b21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAt" + - "LWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBs" + - "YW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4g" + - "XAogIGRvd24gLS1wbGFuLW9ubHkgXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNs" + - "dXN0ZXItbmFtZT4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+CgpudmNmLWNsaSAtLWNvbmZpZyA8Y29u" + - "ZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mv" + - "c2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9udmNm" + - "LWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWluIFwKICAtLWNvbnRyb2wt" + - "cGxhbmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBcCiAgLS1jb21wdXRlLXBsYW5l" + - "LWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gXAogIC0taWNtcy11cmwgPGNvbXB1dGUt" + - "cmVhY2hhYmxlLWljbXMtdXJsPiBcCiAgZG93biBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUt" + - "cGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4KYGBgCgpSZXBlYXQgYGRv" + - "d25gIGZvciBlYWNoIGNvbXB1dGUgY2x1c3Rlci4gRWFjaCBydW4gZGVzdHJveXMgdGhhdCBjb21w" + - "dXRlIHBsYW5lIGFuZAp1bnJlZ2lzdGVycyBpdHMgSUNNUyByb3cuIEl0IHJlbW92ZXMgdGhlIGNv" + - "bnRyb2wgcGxhbmUgb25seSBhZnRlciBubyBjbHVzdGVyCnJlZ2lzdHJhdGlvbnMgcmVtYWluLgpQ" + - "SwcIlmO8WRIwAAASMAAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA7AAkAZGF0YS9udmNmLXNl" + - "bGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhIj" + - "IERlYnVnZ2luZyBSZWZlcmVuY2UKClJlY2lwZXMgZm9yIGRpYWdub3NpbmcgYW5kIGZpeGluZyBj" + - "b21tb24gTlZDRiBzZWxmLW1hbmFnZWQgc3RhY2sgZmFpbHVyZXMuCgojIyBRdWljayBTdGF0dXMg" + - "Q29tbWFuZHMKCmBgYGJhc2gKIyBBbGwgcG9kcyBhY3Jvc3MgYWxsIG5hbWVzcGFjZXMKa3ViZWN0" + - "bCBnZXQgcG9kcyAtQSAtbyB3aWRlCgojIFBvZHMgaW4gYSBzcGVjaWZpYyBuYW1lc3BhY2UKa3Vi" + - "ZWN0bCBnZXQgcG9kcyAtbiA8bmFtZXNwYWNlPgoKIyBBbGwgaGVsbSByZWxlYXNlcwpoZWxtIGxp" + - "c3QgLUEKCiMgUmVjZW50IGV2ZW50cyAobW9zdCB1c2VmdWwgZm9yIGRpYWdub3NpbmcgZmFpbHVy" + - "ZXMpCmt1YmVjdGwgZ2V0IGV2ZW50cyAtbiA8bmFtZXNwYWNlPiAtLXNvcnQtYnk9Jy5sYXN0VGlt" + - "ZXN0YW1wJwoKIyBEZXNjcmliZSBhIHNwZWNpZmljIHBvZCAoc2hvd3MgZXZlbnRzLCBjb25kaXRp" + - "b25zLCB2b2x1bWVzKQprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5h" + - "bWU+CmBgYAoKIyMgRmFpbHVyZTogSW1hZ2VQdWxsQmFja09mZgoKIyMjIFN5bXB0b21zCgpgYGB0" + - "ZXh0Ck5BTUUgICAgICAgICAgIFJFQURZICAgU1RBVFVTICAgICAgICAgICAgIFJFU1RBUlRTICAg" + - "QUdFCmNhc3NhbmRyYS0wICAgIDAvMSAgICAgSW1hZ2VQdWxsQmFja09mZiAgIDAgICAgICAgICAg" + - "NW0KYGBgCgpFdmVudHMgc2hvdzoKCmBgYHRleHQKRmFpbGVkIHRvIHB1bGwgaW1hZ2UgIm52Y3Iu" + - "aW8vLi4uL2ltYWdlOnRhZyI6IDQwMSBVbmF1dGhvcml6ZWQKYGBgCgojIyMgRGlhZ25vc2lzCgpg" + - "YGBiYXNoCiMgQ2hlY2sgd2hhdCBpbWFnZSBpcyBmYWlsaW5nCmt1YmVjdGwgZGVzY3JpYmUgcG9k" + - "IC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gfCBncmVwIC1BNSAiRXZlbnRzOiIKCiMgQ2hlY2sg" + - "aWYgcHVsbCBzZWNyZXQgZXhpc3RzIGluIHRoZSBuYW1lc3BhY2UKa3ViZWN0bCBnZXQgc2VjcmV0" + - "IG52Y3ItY3JlZHMgLW4gPG5hbWVzcGFjZT4KCiMgQ2hlY2sgaWYgdGhlIHBvZCBzcGVjIGhhcyBp" + - "bWFnZVB1bGxTZWNyZXRzCmt1YmVjdGwgZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+" + - "IC1vIGpzb25wYXRoPSd7LnNwZWMuaW1hZ2VQdWxsU2VjcmV0c30nCgojIENoZWNrIGlmIHRoZSBT" + - "ZXJ2aWNlQWNjb3VudCBoYXMgaW1hZ2VQdWxsU2VjcmV0cwprdWJlY3RsIGdldCBzYSA8c2EtbmFt" + - "ZT4gLW4gPG5hbWVzcGFjZT4gLW8ganNvbnBhdGg9J3suaW1hZ2VQdWxsU2VjcmV0c30nCmBgYAoK" + - "IyMjIEZpeGVzCgoxLiAqKlNlY3JldCBtaXNzaW5nIGluIG5hbWVzcGFjZSoqOiBDcmVhdGUgaXQK" + - "CiAgIGBgYGJhc2gKICAga3ViZWN0bCBjcmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNy" + - "LWNyZWRzIFwKICAgICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAgLS1kb2NrZXItdXNl" + - "cm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgICAgLS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tF" + - "WSIgXAogICAgIC0tbmFtZXNwYWNlPTxuYW1lc3BhY2U+IFwKICAgICAtLWRyeS1ydW49Y2xpZW50" + - "IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KICAgYGBgCgoyLiAqKlNlY3JldCBleGlzdHMg" + - "YnV0IHBvZCBkb2Vzbid0IHJlZmVyZW5jZSBpdCoqOiBUaGUgY2hhcnQgbmVlZHMgYGltYWdlUHVs" + - "bFNlY3JldHNgIGNvbmZpZ3VyZWQgdmlhIGhlbG1maWxlIHZhbHVlcy4gU2VlIFtwdWxsLXNlY3Jl" + - "dHMubWRdKHB1bGwtc2VjcmV0cy5tZCkuCgozLiAqKkNoYXJ0IGRvZXNuJ3Qgc3VwcG9ydCBpbWFn" + - "ZVB1bGxTZWNyZXRzKiogKG9wZW5iYW8sIGludm9jYXRpb24tc2VydmljZSwgZXNzLWFwaSwgbm90" + - "YXJ5LXNlcnZpY2UpOiBQYXRjaCBTZXJ2aWNlQWNjb3VudHMgYW5kIHJlc3RhcnQgcG9kcy4gU2Vl" + - "IFtwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0cy5tZCkuCgo0LiAqKldyb25nIGNyZWRlbnRp" + - "YWxzIGluIHNlY3JldCoqOiBEZWxldGUgYW5kIHJlY3JlYXRlCgogICBgYGBiYXNoCiAgIGt1YmVj" + - "dGwgZGVsZXRlIHNlY3JldCBudmNyLWNyZWRzIC1uIDxuYW1lc3BhY2U+CiAgICMgUmVjcmVhdGUg" + - "d2l0aCBjb3JyZWN0IGNyZWRlbnRpYWxzCiAgIGBgYAoKIyMgRmFpbHVyZTogSW5pdDowLzEgU3R1" + - "Y2sgKFZhdWx0IEFnZW50KQoKIyMjIFN5bXB0b21zCgpTZXJ2aWNlIHBvZHMgc3R1Y2sgaW4gYElu" + - "aXQ6MC8xYCBmb3IgbWludXRlczoKCmBgYGJhc2gKTkFNRSAgICAgICAgICAgICAgICAgICAgICAg" + - "IFJFQURZICAgU1RBVFVTICAgICBSRVNUQVJUUyAgIEFHRQpudmNmLWFwaS03ZjRjNzZmNzg4LTQ0" + - "dmx0ICAwLzIgICAgIEluaXQ6MC8xICAgMCAgICAgICAgICAxMG0KYGBgCgojIyMgRGlhZ25vc2lz" + - "CgpUaGUgaW5pdCBjb250YWluZXIgaXMgdGhlIHZhdWx0LWFnZW50LWluaXQgaW5qZWN0b3Igd2Fp" + - "dGluZyBmb3IgT3BlbkJhby4KCmBgYGJhc2gKIyBDaGVjayBPcGVuQmFvIHBvZHMKa3ViZWN0bCBn" + - "ZXQgcG9kcyAtbiB2YXVsdC1zeXN0ZW0KCiMgQ2hlY2sgaWYgT3BlbkJhbyBtaWdyYXRpb24gam9i" + - "IHJhbgprdWJlY3RsIGdldCBqb2JzIC1uIHZhdWx0LXN5c3RlbQoKIyBDaGVjayBPcGVuQmFvIHBv" + - "ZCBsb2dzCmt1YmVjdGwgbG9ncyAtbiB2YXVsdC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXItMCAtYyBv" + - "cGVuYmFvCgojIENoZWNrIGluaXQgY29udGFpbmVyIGxvZ3Mgb24gdGhlIHN0dWNrIHBvZAprdWJl" + - "Y3RsIGxvZ3MgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiAtYyB2YXVsdC1hZ2VudC1pbml0CmBg" + - "YAoKIyMjIEZpeGVzCgoxLiAqKk9wZW5CYW8gcG9kcyBub3QgcnVubmluZyoqOiBDaGVjayB0aGVp" + - "ciBldmVudHMgZm9yIGltYWdlIHB1bGwgaXNzdWVzLCByZXNvdXJjZSBpc3N1ZXMsIGV0Yy4KCjIu" + - "ICoqT3BlbkJhbyBtaWdyYXRpb24gam9iIGRpZG4ndCBydW4qKjogVGhpcyBoYXBwZW5zIHdoZW4g" + - "YGhlbG1maWxlIHN5bmNgIHdhcyBpbnRlcnJ1cHRlZC4gRGVzdHJveSBhbmQgcmUtc3luYyBvcGVu" + - "YmFvOgoKICAgYGBgYmFzaAogICBIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3Rv" + - "ciBuYW1lPW9wZW5iYW8tc2VydmVyIGRlc3Ryb3kKICAga3ViZWN0bCBkZWxldGUgbmFtZXNwYWNl" + - "IHZhdWx0LXN5c3RlbQogICBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgdmF1bHQtc3lzdGVtCiAg" + - "ICMgUmUtY3JlYXRlIHB1bGwgc2VjcmV0IGlmIG5lZWRlZAogICBIRUxNRklMRV9FTlY9PGVudj4g" + - "aGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW9wZW5iYW8tc2VydmVyIHN5bmMKICAgYGBgCgozLiAq" + - "Kk9wZW5CYW8gcG9kcyBydW5uaW5nIGJ1dCBub3QgaW5pdGlhbGl6ZWQqKjogQ2hlY2sgdW5zZWFs" + - "IHN0YXR1czoKCiAgIGBgYGJhc2gKICAga3ViZWN0bCBleGVjIC1uIHZhdWx0LXN5c3RlbSBvcGVu" + - "YmFvLXNlcnZlci0wIC1jIG9wZW5iYW8gLS0gYmFvIHN0YXR1cwogICBgYGAKCjQuICoqYHZhdWx0" + - "LWFnZW50LWluaXRgIGxvZ3MgYGF1dGgvand0L2xvZ2luYCAtPiBgNDAwIC4uLiBubyBrbm93biBr" + - "ZXkgc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlZCB0aGUgdG9rZW4gc2lnbmF0dXJlYCoqCiAgIChjb21t" + - "b24gb24gQUtTLCBhbmQgb24gYW55IGNsdXN0ZXIgd2hvc2UgT0lEQyBpc3N1ZXIgcHVibGlzaGVz" + - "IGEgcm90YXRpbmcgbXVsdGkta2V5IEpXS1MpOgogICB0aGUgT3BlbkJhbyBgYXV0aC9qd3RgIG1l" + - "dGhvZCB3YXMgY29uZmlndXJlZCB3aXRoIGEgc2luZ2xlIHN0YXRpYyBtb3VudGVkIHB1YmxpYyBr" + - "ZXkKICAgKGBqd3RfdmFsaWRhdGlvbl9wdWJrZXlzYCkgaW5zdGVhZCBvZiB0aGUgaXNzdWVyJ3Mg" + - "bGl2ZSBKV0tTLCBzbyBpdCBjYW5ub3QgdmFsaWRhdGUgdGhlCiAgIGNsdXN0ZXItc2lnbmVkIFNl" + - "cnZpY2VBY2NvdW50IHRva2VucyB0aGUgdmF1bHQtYWdlbnRzIHByZXNlbnQuIEV2ZXJ5IHNlcnZp" + - "Y2UncwogICBgdmF1bHQtYWdlbnQtaW5pdGAgdGhlbiBsb29wcyBvbiB0aGF0IDQwMCBhbmQgdGhl" + - "IHBvZCBuZXZlciBsZWF2ZXMgYEluaXQ6MC8xYC4gVGhpcyBpcyB0aGUKICAgYmVoYXZpb3Igb2Yg" + - "dGhlIGJhc2UgZGVmYXVsdCBgb3BlbmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFi" + - "bGVkOiBmYWxzZWA7IHRoZQogICBtaWdyYXRpb24gbG9nIHNob3dzIGBPSURDIGlzc3VlciBkaXNj" + - "b3ZlcnkgaXMgZGlzYWJsZWQuIFVzaW5nIFNlcnZpY2VBY2NvdW50IGlzc3VlciBhbmQKICAgbW91" + - "bnRlZCBwdWJsaWMga2V5IGZhbGxiYWNrYC4gRW5hYmxlIGlzc3VlciBkaXNjb3Zlcnkgc28gdGhl" + - "IG1pZ3JhdGlvbiB1c2VzIHRoZSBsaXZlIEpXS1MsCiAgIHRoZW4gcmUtcnVuIGl0OgoKICAgYGBg" + - "YmFzaAogICAjIEluIHlvdXIgZW52IHZhbHVlcyAoZS5nLiBlbnZpcm9ubWVudHMvPGVudj4ueWFt" + - "bCksIHNldDoKICAgIyAgIG9wZW5iYW86CiAgICMgICAgIG1pZ3JhdGlvbnM6CiAgICMgICAgICAg" + - "aXNzdWVyRGlzY292ZXJ5OgogICAjICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICBrdWJlY3RsIGRl" + - "bGV0ZSBqb2IgLW4gdmF1bHQtc3lzdGVtIG9wZW5iYW8tc2VydmVyLW1pZ3JhdGlvbnMKICAgSEVM" + - "TUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBz" + - "eW5jCiAgIGBgYAoKICAgVGhlIG1pZ3JhdGlvbiBsb2cgc2hvdWxkIHRoZW4gc2hvdyBgUmVjZWl2" + - "ZWQgZGlzY292ZXJ5IGRvY3VtZW50IGZyb20KICAgLi4uLy53ZWxsLWtub3duL29wZW5pZC1jb25m" + - "aWd1cmF0aW9uYCBhbmQgYEZpbmFsIE9wZW5CYW8gSldUIEpXS1MgVVJMIHNldCB0bzoKICAgLi4u" + - "L29wZW5pZC92MS9qd2tzYCwgYW5kIHRoZSBzZXJ2aWNlIHBvZHMgYXV0aGVudGljYXRlIGFuZCBy" + - "ZWFjaCBSZWFkeSB3aXRoaW4gfjEgbWluLgogICBBS1MgY2x1c3RlcnMgd2l0aCB0aGUgY2x1c3Rl" + - "ciBPSURDIGlzc3VlciBlbmFibGVkICh0aGUgYGFrcy1jbHVzdGVyYCBkZWZhdWx0KSBhbHdheXMg" + - "bmVlZAogICB0aGlzIGJlY2F1c2UgdGhlIHN0YXRpYy1wdWJrZXkgZmFsbGJhY2sgY2Fubm90IG1h" + - "dGNoIHRoZSBpc3N1ZXIncyByb3RhdGluZyBzaWduaW5nIGtleXMuCgojIyBGYWlsdXJlOiBPT01L" + - "aWxsZWQgb24gQ2Fzc2FuZHJhCgojIyMgU3ltcHRvbXMKCmBgYHRleHQKTkFNRSAgICAgICAgICBS" + - "RUFEWSAgIFNUQVRVUyAgICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5kcmEtMCAgIDAvMSAgICAgT09N" + - "S2lsbGVkICAzICAgICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAprdWJlY3Rs" + - "IGRlc2NyaWJlIHBvZCAtbiBjYXNzYW5kcmEtc3lzdGVtIGNhc3NhbmRyYS0wIHwgZ3JlcCAtQTMg" + - "Ikxhc3QgU3RhdGUiCmBgYAoKIyMjIEZpeAoKT3ZlcnJpZGUgQ2Fzc2FuZHJhIHJlc291cmNlcyB2" + - "aWEgaGVsbWZpbGUgdmFsdWVzLiBTZWUgRXhhbXBsZSAxIGluCltleGFtcGxlcy5tZF0oLi4vZXhh" + - "bXBsZXMubWQpLgoKYGBgeWFtbAotIGNhc3NhbmRyYToKICAgIHJlc291cmNlczoKICAgICAgbGlt" + - "aXRzOgogICAgICAgIGNwdTogIjgiCiAgICAgICAgbWVtb3J5OiA4MTkyTWkKICAgICAgcmVxdWVz" + - "dHM6CiAgICAgICAgY3B1OiAiMiIKICAgICAgICBtZW1vcnk6IDQwOTZNaQpgYGAKCk5vdGU6IGBy" + - "ZXNvdXJjZVByZXNldGAgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgTlZDRiBjYXNzYW5kcmEgd3Jh" + - "cHBlciBjaGFydC4gVXNlIGV4cGxpY2l0IGByZXNvdXJjZXNgLgoKIyMgRmFpbHVyZTogUG9kcyBT" + - "dHVjayBpbiBQZW5kaW5nCgojIyMgU3ltcHRvbXMKCmBgYHRleHQKTkFNRSAgICAgICAgICBSRUFE" + - "WSAgIFNUQVRVUyAgICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5kcmEtMCAgIDAvMSAgICAgUGVuZGlu" + - "ZyAgIDAgICAgICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIGV2" + - "ZW50cyBmb3Igc2NoZWR1bGluZyBmYWlsdXJlcwprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFt" + - "ZXNwYWNlPiA8cG9kLW5hbWU+CgojIENvbW1vbiBjYXVzZXM6CiMgLSAiMC8xMiBub2RlcyBhcmUg" + - "YXZhaWxhYmxlOiAxMiBub2RlKHMpIGRpZG4ndCBtYXRjaCBQb2QncyBub2RlIGFmZmluaXR5Igoj" + - "IC0gIjAvMTIgbm9kZXMgYXJlIGF2YWlsYWJsZTogMTIgSW5zdWZmaWNpZW50IG1lbW9yeSIKIyAt" + - "ICJwZXJzaXN0ZW50dm9sdW1lY2xhaW0gbm90IGZvdW5kIgpgYGAKCiMjIyBGaXhlcwoKMS4gKipO" + - "b2RlIHNlbGVjdG9yIG1pc21hdGNoKio6IENoZWNrIGBub2RlU2VsZWN0b3JzYCBpbiBlbnZpcm9u" + - "bWVudCBmaWxlCgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZ2V0IG5vZGVzIC0tc2hvdy1sYWJlbHMg" + - "fCBncmVwIG52Y2YKICAgYGBgCgoyLiAqKlN0b3JhZ2UgY2xhc3Mgbm90IGZvdW5kKio6IENoZWNr" + - "IHN0b3JhZ2UgY2xhc3MgZXhpc3RzCgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZ2V0IHN0b3JhZ2Vj" + - "bGFzcwogICBgYGAKCjMuICoqSW5zdWZmaWNpZW50IHJlc291cmNlcyoqOiBDaGVjayBub2RlIGNh" + - "cGFjaXR5CgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZGVzY3JpYmUgbm9kZSA8bm9kZS1uYW1lPiB8" + - "IGdyZXAgLUE1ICJBbGxvY2F0ZWQgcmVzb3VyY2VzIgogICBgYGAKCiMjIEZhaWx1cmU6IEhlbG0g" + - "UmVsZWFzZSBpbiBGYWlsZWQgU3RhdGUKCiMjIyBTeW1wdG9tcwoKYGBgYmFzaApoZWxtIGxpc3Qg" + - "LUEKIyBTaG93cyByZWxlYXNlIHdpdGggU1RBVFVTOiBmYWlsZWQKYGBgCgpSZS1ydW5uaW5nIGBo" + - "ZWxtZmlsZSBzeW5jYCBhcHBlYXJzIHRvIHN1Y2NlZWQgYnV0IHNlcnZpY2VzIGRvbid0IHdvcmsg" + - "KG1pZ3JhdGlvbnMgc2tpcHBlZCkuCgojIyMgRGlhZ25vc2lzCgpgYGBiYXNoCmhlbG0gaGlzdG9y" + - "eSA8cmVsZWFzZS1uYW1lPiAtbiA8bmFtZXNwYWNlPgpgYGAKCiMjIyBGaXgKCk11c3QgZGVzdHJv" + - "eSB0aGUgZmFpbGVkIHJlbGVhc2UgYW5kIHJlLXN5bmMgKG5vdCBqdXN0IGFwcGx5KToKCmBgYGJh" + - "c2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT08cmVsZWFzZT4g" + - "ZGVzdHJveQojIElmIG5hbWVzcGFjZSBuZWVkcyBjbGVhbnVwOgprdWJlY3RsIGRlbGV0ZSBuYW1l" + - "c3BhY2UgPG5hbWVzcGFjZT4Ka3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIDxuYW1lc3BhY2U+CiMg" + - "UmUtY3JlYXRlIHB1bGwgc2VjcmV0IGlmIG5lZWRlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZp" + - "bGUgLS1zZWxlY3RvciBuYW1lPTxyZWxlYXNlPiBzeW5jCmBgYAoKIyMgRmFpbHVyZTogQWNjb3Vu" + - "dCBCb290c3RyYXAgSm9iIEZhaWxlZAoKIyMjIFN5bXB0b21zCgpTZXJ2aWNlcyBkZXBsb3kgYnV0" + - "IGZ1bmN0aW9ucyBjYW4ndCBiZSBjcmVhdGVkLiBFdmVudHMgc2hvdyBib290c3RyYXAgam9iIGZh" + - "aWx1cmUuCgojIyMgRGlhZ25vc2lzCgpgYGBiYXNoCiMgQ2hlY2sgYm9vdHN0cmFwIGpvYiBzdGF0" + - "dXMKa3ViZWN0bCBnZXQgam9icyAtbiBudmNmCgojIEdldCBsb2dzIChqb2IgYXV0by1kZWxldGVz" + - "IGFmdGVyIH41IG1pbnV0ZXMpCmt1YmVjdGwgbG9ncyBqb2IvbnZjZi1hcGktYWNjb3VudC1ib290" + - "c3RyYXAgLW4gbnZjZgoKIyBDaGVjayBBUEkgbG9ncwprdWJlY3RsIGxvZ3MgLW4gbnZjZiAtbCBh" + - "cHAua3ViZXJuZXRlcy5pby9uYW1lPW52Y2YtYXBpIC0tdGFpbD0xMDAKYGBgCgojIyMgQ29tbW9u" + - "IENhdXNlcwoKMS4gKipXcm9uZyBiYXNlNjQgY3JlZGVudGlhbHMqKjogQ3JlZGVudGlhbHMgaW4g" + - "YHNlY3JldHMvPGVudj4tc2VjcmV0cy55YW1sYCBtdXN0IGJlIGAkb2F1dGh0b2tlbjpBUElfS0VZ" + - "YCBiYXNlNjQtZW5jb2RlZCwgbm90IGp1c3QgdGhlIEFQSSBrZXkKCiAgIGBgYGJhc2gKICAgIyBW" + - "ZXJpZnkgeW91ciBlbmNvZGVkIGNyZWRlbnRpYWwKICAgZWNobyAnWU9VUl9CQVNFNjRfU1RSSU5H" + - "JyB8IGJhc2U2NCAtZAogICAjIFNob3VsZCBvdXRwdXQ6ICRvYXV0aHRva2VuOm52YXBpLXh4eHh4" + - "CiAgIGBgYAoKMi4gKipSZWdpc3RyeSB1bnJlYWNoYWJsZSoqOiBBUEkgY2FuJ3QgcmVhY2ggdGhl" + - "IHJlZ2lzdHJ5IHNwZWNpZmllZCBpbiBgYWNjb3VudEJvb3RzdHJhcC5yZWdpc3RyeUNyZWRlbnRp" + - "YWxzYAoKIyMjIEZpeAoKRml4IGNyZWRlbnRpYWxzIGluIHNlY3JldHMgZmlsZSwgdGhlbiByZWNv" + - "dmVyIHNlcnZpY2VzIHdpdGhvdXQgZGVzdHJveWluZyBkZXBlbmRlbmNpZXM6CgpgYGBiYXNoCkhF" + - "TE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9c2Vydmlj" + - "ZXMgZGVzdHJveQprdWJlY3RsIGRlbGV0ZSBuYW1lc3BhY2UgbnZjZiBhcGkta2V5cyBlc3Mgc2lz" + - "IC0taWdub3JlLW5vdC1mb3VuZAprdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgbnZjZiAmJiBrdWJl" + - "Y3RsIGNyZWF0ZSBuYW1lc3BhY2UgYXBpLWtleXMgJiYgXAogIGt1YmVjdGwgY3JlYXRlIG5hbWVz" + - "cGFjZSBlc3MgJiYga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIHNpcwojIFJlLWNyZWF0ZSBwdWxs" + - "IHNlY3JldHMgaWYgbmVlZGVkCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9y" + - "IHJlbGVhc2UtZ3JvdXA9c2VydmljZXMgc3luYwpgYGAKCiMjIEZhaWx1cmU6IE5WQ0EgQ2xlYW51" + - "cCBTdHVjayAoRmluYWxpemVycykKCiMjIyBTeW1wdG9tcwoKQ29tcHV0ZS1wbGFuZSBjbGVhbnVw" + - "IGhhbmdzLiBOYW1lc3BhY2VzCnN0dWNrIGluIGBUZXJtaW5hdGluZ2A6CgpgYGBiYXNoCmt1YmVj" + - "dGwgZ2V0IG5zCiMgbnZjYS1vcGVyYXRvciAgICBUZXJtaW5hdGluZyAgIDEwbQojIG52Y2YtYmFj" + - "a2VuZCAgICAgVGVybWluYXRpbmcgICAxMG0KYGBgCgojIyMgRml4CgpSdW4gdGhpcyBvbmx5IGFn" + - "YWluc3QgdGhlIGNvbXB1dGUgY29udGV4dCwgYWZ0ZXIgdGhlIG5vcm1hbCBjb21wdXRlLXBsYW5l" + - "CnRlYXJkb3duIGhhcyBmYWlsZWQuIFJlbW92ZSBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQg" + - "Y3VzdG9tIHJlc291cmNlcyBhbmQKZm9yY2UtZGVsZXRlIHN0dWNrIG5hbWVzcGFjZXM6CgpgYGBi" + - "YXNoCmV4cG9ydCBDT01QVVRFX0NPTlRFWFQ9PGNvbXB1dGUtcGxhbmUtY29udGV4dD4KCiMgUmVt" + - "b3ZlIGZpbmFsaXplcnMgZnJvbSBOVkNGQmFja2VuZCByZXNvdXJjZXMKa3ViZWN0bCAtLWNvbnRl" + - "eHQgIiRDT01QVVRFX0NPTlRFWFQiIGdldCBudmNmYmFja2VuZHMgLUEgLW8ganNvbiB8IFwKICBq" + - "cSAnLml0ZW1zW10gfCAubWV0YWRhdGEubmFtZXNwYWNlICsgIi8iICsgLm1ldGFkYXRhLm5hbWUn" + - "IC1yIHwgXAogIHhhcmdzIC1Je30gc2ggLWMgJ2NvbnRleHQ9IiQxIjsgbnM9IiR7MiUlLyp9Ijsg" + - "bmFtZT0iJHsyIyMqL30iOyBrdWJlY3RsIC0tY29udGV4dCAiJGNvbnRleHQiIHBhdGNoIG52Y2Zi" + - "YWNrZW5kICIkbmFtZSIgLW4gIiRucyIgLS10eXBlPW1lcmdlIC1wICJ7XCJtZXRhZGF0YVwiOntc" + - "ImZpbmFsaXplcnNcIjpbXX19IicgXyAiJENPTVBVVEVfQ09OVEVYVCIge30KCiMgRm9yY2UtZGVs" + - "ZXRlIHN0dWNrIG5hbWVzcGFjZXMgYnkgY2xlYXJpbmcgdGhlaXIgZmluYWxpemVycwpmb3IgbnMg" + - "aW4gbnZjYS1vcGVyYXRvciBudmNmLWJhY2tlbmQ7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgIiRD" + - "T01QVVRFX0NPTlRFWFQiIGdldCBuYW1lc3BhY2UgIiRucyIgLW8ganNvbiAyPi9kZXYvbnVsbCB8" + - "IFwKICAgIGpxICcuc3BlYy5maW5hbGl6ZXJzID0gW10nIHwgXAogICAga3ViZWN0bCAtLWNvbnRl" + - "eHQgIiRDT01QVVRFX0NPTlRFWFQiIHJlcGxhY2UgXAogICAgICAtLXJhdyAiL2FwaS92MS9uYW1l" + - "c3BhY2VzLyRucy9maW5hbGl6ZSIgLWYgLSAyPi9kZXYvbnVsbApkb25lCmBgYAoKIyMgRmFpbHVy" + - "ZTogTlZDQSBPcGVyYXRvciBNaXNzaW5nIG9yIE5vdCBSZWFkeQoKIyMjIFN5bXB0b21zCgpBZnRl" + - "ciBjb21wdXRlLXBsYW5lIGluc3RhbGwgY29tcGxldGVzLCBubyBgbnZjYS1vcGVyYXRvcmAgRGVw" + - "bG95bWVudCBleGlzdHMsIG9yCml0IGV4aXN0cyBidXQgcG9kcyBhcmUgbm90IHJlYWR5OgoKYGBg" + - "YmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgZGVwbG95" + - "bWVudCBudmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yCmt1YmVjdGwgLS1jb250ZXh0" + - "IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGdldCBwb2RzIC1uIG52Y2Etb3BlcmF0b3IKYGBgCgoj" + - "IyMgRGlhZ25vc2lzIGFuZCBGaXhlcwoKRmlyc3QgaWRlbnRpZnkgd2hldGhlciB0aGUgaW5zdGFs" + - "bGF0aW9uIHVzZWQgdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93IG9yIHRoZQpDTEkgcHJvZmlsZSBm" + - "bG93LiBSZS1ydW4gb25seSB0aGF0IGZsb3cncyByZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlv" + - "biBzdGVwcwpmcm9tIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0ZS1w" + - "bGFuZS1pbnN0YWxsYXRpb24ubWQpLiBEbyBub3QKc3Vic3RpdHV0ZSBvbmUgaGFuZG9mZiBmb3Ig" + - "dGhlIG90aGVyLgoKSWYgaW5zdGFsbGF0aW9uIHN1Y2NlZWRzIGJ1dCBwb2RzIHN0aWxsIGZhaWws" + - "IGluc3BlY3QgdGhlIGNvbXB1dGUgY29udGV4dDoKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQg" + - "PGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZGVzY3JpYmUgZGVwbG95IG52Y2Etb3BlcmF0b3IgXAog" + - "IC1uIG52Y2Etb3BlcmF0b3IKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4" + - "dD4gbG9ncyBkZXBsb3ltZW50L252Y2Etb3BlcmF0b3IgXAogIC1uIG52Y2Etb3BlcmF0b3IgLS10" + - "YWlsPTIwMAprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgbnZj" + - "ZmJhY2tlbmQgLW4gbnZjYS1vcGVyYXRvcgpgYGAKCkZvciBwcml2YXRlIHJlZ2lzdHJ5IGZhaWx1" + - "cmVzLCB2ZXJpZnkgdGhhdCB0aGUgcHVsbCBzZWNyZXQgZXhpc3RzIGluCmBudmNhLW9wZXJhdG9y" + - "YC4gVGhlIGNoYXJ0IGFuZCBvcGVyYXRvciBtaXJyb3IgaXQgdG8gYG52Y2Etc3lzdGVtYDsgZG8g" + - "bm90IHVzZSBhCmJyb2FkZXIgbWFudWFsIG5hbWVzcGFjZSBsb29wLiBTZWUKW3B1bGwtc2VjcmV0" + - "cy5tZF0ocHVsbC1zZWNyZXRzLm1kI2NvbXB1dGUtcGxhbmUtc2VjcmV0KS4KCiMjIEZhaWx1cmU6" + - "IEdhdGV3YXkgRW5kcG9pbnQgQ2hhbmdlZAoKIyMjIFN5bXB0b21zCgpSZXF1ZXN0cyB0aHJvdWdo" + - "IHRoZSBjb25maWd1cmVkIHJvdXRlIGRvbWFpbiBmYWlsIGFmdGVyIHRoZSBHYXRld2F5IG9yIGl0" + - "cyBsb2FkIGJhbGFuY2VyIGlzIHJlcGxhY2VkLiBUaGUgR2F0ZXdheSByZXBvcnRzIGEgbmV3IGVu" + - "ZHBvaW50LgoKIyMjIERpYWdub3NpcwoKYGBgYmFzaApHQVRFV0FZX0FERFI9JChrdWJlY3RsIC0t" + - "Y29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1nYXRl" + - "d2F5IC1uIGVudm95LWdhdGV3YXkgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNb" + - "MF0udmFsdWV9JykKdGVzdCAtbiAiJEdBVEVXQVlfQUREUiIKZGlnICtzaG9ydCAiYXBpLjxkb21h" + - "aW4+IgpjdXJsIC1IICJIb3N0OiBhcGkuPGRvbWFpbj4iICJodHRwOi8vJEdBVEVXQVlfQUREUi9o" + - "ZWFsdGgiCgojIENoZWNrIGRpcmVjdCBhZGRyZXNzIGZpZWxkcyB1c2VkIGJ5IGEgc3BsaXQgZGVw" + - "bG95bWVudApncmVwIG52Y2ZOYXRzU2VydmljZVVSTCBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdl" + - "ZC9lbnZpcm9ubWVudHMvPGVudj4ueWFtbApncmVwIC1FICdpY21zU2VydmljZXxyZXZhbFNlcnZp" + - "Y2V8bmF0cycgXAogIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50" + - "cy88ZW52Pi55YW1sCmBgYAoKIyMjIEZpeAoKS2VlcCBgZ2xvYmFsLmRvbWFpbmAsIHJvdXRlIGhv" + - "c3RuYW1lcywgYW5kIEhvc3Qgb3ZlcnJpZGVzIHVuY2hhbmdlZC4gVXBkYXRlIEROUwpvciB0aGUg" + - "ZGlyZWN0IGNsaWVudCBkZXN0aW5hdGlvbi4gRm9yIHNwbGl0IGRlcGxveW1lbnRzLCB1cGRhdGUg" + - "b25seSBkaXJlY3QKR2F0ZXdheS1hZGRyZXNzIGZpZWxkcyBhbmQgcmVmcmVzaCByZWdpc3RyYXRp" + - "b24gYW5kIGluc3RhbGxhdGlvbiB0aHJvdWdoIHRoZQpzYW1lIHNlbGVjdGVkIGhhbmRvZmYuIFNl" + - "ZQpbRXhhbXBsZSA0XSguLi9leGFtcGxlcy5tZCNleGFtcGxlLTQtcmVjb3Zlci1mcm9tLWEtZ2F0" + - "ZXdheS1lbmRwb2ludC1jaGFuZ2UpLgoKIyMgVXNlZnVsIE5hbWVzcGFjZS10by1TZXJ2aWNlIE1h" + - "cHBpbmcKClF1aWNrIHJlZmVyZW5jZSBmb3Igd2hpY2ggc2VydmljZXMgcnVuIGluIHdoaWNoIG5h" + - "bWVzcGFjZToKCnwgTmFtZXNwYWNlIHwgU2VydmljZXMgfAp8LS0tLS0tLS0tLS18LS0tLS0tLS0t" + - "LXwKfCBuYXRzLXN5c3RlbSB8IG5hdHMgfAp8IGNhc3NhbmRyYS1zeXN0ZW0gfCBjYXNzYW5kcmEg" + - "fAp8IHZhdWx0LXN5c3RlbSB8IG9wZW5iYW8tc2VydmVyIHwKfCBudmNmIHwgYXBpLCBpbnZvY2F0" + - "aW9uLXNlcnZpY2UsIGdycGMtcHJveHksIG5vdGFyeS1zZXJ2aWNlLCByZXZhbCwgbGxtLXJlcXVl" + - "c3Qtcm91dGVyLCBsbG0tYXBpLWdhdGV3YXkgfAp8IGFwaS1rZXlzIHwgYXBpLWtleXMsIGFkbWlu" + - "LWlzc3Vlci1wcm94eSB8CnwgZXNzIHwgZXNzLWFwaSB8Cnwgc2lzIHwgc2lzIHwKfCBlbnZveS1n" + - "YXRld2F5LXN5c3RlbSB8IGVudm95IGdhdGV3YXkgKGluZ3Jlc3MgY29udHJvbGxlcikgfAp8IGVu" + - "dm95LWdhdGV3YXkgfCBnYXRld2F5IHJlc291cmNlICsgcm91dGVzIHwKUEsHCLV6cDu1MAAAtTAA" + - "AFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAARAAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5z" + - "dGFsbGF0aW9uL3JlZmVyZW5jZXMvaGVsbWZpbGUtc3RydWN0dXJlLm1kVVQFAAEAps4SIyBIZWxt" + - "ZmlsZSBTdHJ1Y3R1cmUgUmVmZXJlbmNlCgojIyBEaXJlY3RvcnkgTGF5b3V0CgpgYGBiYXNoCm52" + - "Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrLwp8LS0gaGVsbWZpbGUuZC8KfCAgIHwtLSAwMS1kZXBlbmRl" + - "bmNpZXMueWFtbC5nb3RtcGwgICMgTkFUUywgQ2Fzc2FuZHJhLCBPcGVuQmFvCnwgICB8LS0gMDIt" + - "Y29yZS55YW1sLmdvdG1wbCAgICAgICAgICAjIE5WQ0Ygc2VydmljZXMgKyBpbmdyZXNzCnwgICBg" + - "LS0gMDMtb2JzZXJ2YWJpbGl0eS55YW1sLmdvdG1wbCAjIE9ic2VydmFiaWxpdHkgc3RhY2sgKG9w" + - "dGlvbmFsKQp8LS0gZW52aXJvbm1lbnRzLwp8ICAgfC0tIGJhc2UueWFtbCAgICAgICAgICAgICAg" + - "ICAgICAgIyBEZWZhdWx0IHZhbHVlcyAoYWxsIGVudmlyb25tZW50cykKfCAgIGAtLSA8ZW52LW5h" + - "bWU+LnlhbWwgICAgICAgICAgICAgICMgUGVyLWVudmlyb25tZW50IG92ZXJyaWRlcwp8LS0gc2Vj" + - "cmV0cy8KfCAgIGAtLSA8ZW52LW5hbWU+LXNlY3JldHMueWFtbCAgICAgICMgU2Vuc2l0aXZlIHZh" + - "bHVlcyAocmVnaXN0cnkgY3JlZHMsIHBhc3N3b3JkcykKYC0tIGdsb2JhbC55YW1sLmdvdG1wbCAg" + - "ICAgICAgICAgICAgICMgR28gdGVtcGxhdGUgdGhhdCBjb25zdHJ1Y3RzIHBlci1jaGFydCB2YWx1" + - "ZXMKCm52Y2YtY29tcHV0ZS1wbGFuZS1zdGFjay8KfC0tIGhlbG1maWxlLmQvCnwgICB8LS0gMDEt" + - "ZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsICAjIENvbXB1dGUgcGxhbmUgZGVwZW5kZW5jeSBjb21w" + - "b25lbnRzCnwgICBgLS0gMDItbnZjYS55YW1sLmdvdG1wbCAgICAgICAgICAjIG52Y2Etb3BlcmF0" + - "b3IgY2hhcnQgYW5kIG52Y2EgY29uZmlndXJhdGlvbgp8LS0gZW52aXJvbm1lbnRzLwp8ICAgfC0t" + - "IGJhc2UueWFtbCAgICAgICAgICAgICAgICAgICAgIyBEZWZhdWx0IHZhbHVlcyAoYWxsIGVudmly" + - "b25tZW50cykKfCAgIGAtLSA8ZW52LW5hbWU+LnlhbWwgICAgICAgICAgICAgICMgUGVyLWVudmly" + - "b25tZW50IG92ZXJyaWRlcwpgLS0gZ2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAgIyBH" + - "byB0ZW1wbGF0ZSB0aGF0IGNvbnN0cnVjdHMgcGVyLWNoYXJ0IHZhbHVlcwpgYGAKClRoZXNlIHN0" + - "YWNrcyBoYXZlIHNlcGFyYXRlIGVudmlyb25tZW50cyBhbmQgY2x1c3RlciBjb250ZXh0cy4gVGhl" + - "IEhlbG1maWxlCnZhbHVlcyBmbG93IGF1dGhvcnMgYm90aCBlbnZpcm9ubWVudCBmaWxlcy4gVGhl" + - "IENMSSBwcm9maWxlIGZsb3cgaW5zdGVhZCB1c2VzCnRoZSBDTEktZ2VuZXJhdGVkIGNvbnRyb2wt" + - "cGxhbmUgcHJvZmlsZSBhcyBpdHMgZW5kcG9pbnQgc291cmNlLiBEbyBub3QgbWl4IHRoZQpoYW5k" + - "b2Zmcy4gU2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFu" + - "ZS1pbnN0YWxsYXRpb24ubWQpLgoKIyMgR290bXBsIEZpbGVzIGFuZCBUaGVpciBSZWxlYXNlcwoK" + - "IyMjIDAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1l" + - "c3BhY2UgfCBOb3RlcyB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8" + - "IG5hdHMgfCBoZWxtLW52Y2YtbmF0cyB8IG5hdHMtc3lzdGVtIHwgTWVzc2FnaW5nIHwKfCBvcGVu" + - "YmFvLXNlcnZlciB8IGhlbG0tbnZjZi1vcGVuYmFvLXNlcnZlciB8IHZhdWx0LXN5c3RlbSB8IFNl" + - "Y3JldHMgbWFuYWdlbWVudCwgZGVwZW5kcyBvbiBuYXRzIHwKfCBjYXNzYW5kcmEgfCBoZWxtLW52" + - "Y2YtY2Fzc2FuZHJhIHwgY2Fzc2FuZHJhLXN5c3RlbSB8IERhdGFiYXNlIHwKClVzZXMgYDw8OiAq" + - "ZGVwZW5kZW5jeWAgdGVtcGxhdGUgaW5oZXJpdGFuY2Ugd2l0aCBgcmVsZWFzZS1ncm91cDogZGVw" + - "ZW5kZW5jaWVzYCBsYWJlbC4KCiMjIyAwMi1jb3JlLnlhbWwuZ290bXBsCgp8IFJlbGVhc2UgfCBD" + - "aGFydCB8IE5hbWVzcGFjZSB8IExhYmVsIHwKfC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tLS0tLS0t" + - "fC0tLS0tLS18CnwgYXBpLWtleXMgfCBoZWxtLW52Y2YtYXBpLWtleXMgfCBhcGkta2V5cyB8IHNl" + - "cnZpY2VzIHwKfCBzaXMgfCBoZWxtLW52Y2Ytc2lzIHwgc2lzIHwgc2VydmljZXMgfAp8IGFwaSB8" + - "IGhlbG0tbnZjZi1hcGkgfCBudmNmIHwgc2VydmljZXMgfAp8IGludm9jYXRpb24tc2VydmljZSB8" + - "IGhlbG0tbnZjZi1pbnZvY2F0aW9uLXNlcnZpY2UgfCBudmNmIHwgc2VydmljZXMgfAp8IGdycGMt" + - "cHJveHkgfCBoZWxtLW52Y2YtZ3JwYy1wcm94eSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgZXNzLWFw" + - "aSB8IGhlbG0tbnZjZi1lc3MtYXBpIHwgZXNzIHwgc2VydmljZXMgfAp8IG5vdGFyeS1zZXJ2aWNl" + - "IHwgaGVsbS1udmNmLW5vdGFyeS1zZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCByZXZhbCB8" + - "IGhlbG0tcmV2YWwgfCBudmNmIHwgc2VydmljZXMgfAp8IGxsbS1yZXF1ZXN0LXJvdXRlciB8IG52" + - "Y2YvaGVsbS1udmNmLWxsbS1yZXF1ZXN0LXJvdXRlciB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgbGxt" + - "LWFwaS1nYXRld2F5IHwgbnZjZi9oZWxtLW52Y2YtbGxtLWFwaS1nYXRld2F5IHwgbnZjZiB8IHNl" + - "cnZpY2VzIHwKfCBhZG1pbi1pc3N1ZXItcHJveHkgfCBoZWxtLWFkbWluLXRva2VuLWlzc3Vlci1w" + - "cm94eSB8IGFwaS1rZXlzIHwgKG5vIHJlbGVhc2UtZ3JvdXAgbGFiZWwpIHwKfCBpbmdyZXNzIHwg" + - "bnZjZi1nYXRld2F5LXJvdXRlcyB8IGVudm95LWdhdGV3YXktc3lzdGVtIHwgaW5ncmVzcyB8CgpN" + - "b3N0IHNlcnZpY2VzIHVzZSBgaW5oZXJpdDogW3t0ZW1wbGF0ZTogc2VydmljZX1dYC4gTExNIHJl" + - "bGVhc2VzIHVzZSBPQ0kgY2hhcnRzIGZyb20gdGhlIGBudmNmYCByZXBvc2l0b3J5IHdpdGggc3Rh" + - "bmRhbG9uZSBgdmFsdWVzOiBbLi4vZ2xvYmFsLnlhbWwuZ290bXBsXWAgYmxvY2tzOyB0aGV5IGFy" + - "ZSBnYXRlZCBvbiBgYWRkb25zLmxsbS5lbmFibGVkYC4gYGFkbWluLWlzc3Vlci1wcm94eWAgYW5k" + - "IGBpbmdyZXNzYCBoYXZlIHN0YW5kYWxvbmUgYHZhbHVlczpgIGJsb2Nrcy4KCiMjIyAwMy1vYnNl" + - "cnZhYmlsaXR5LnlhbWwuZ290bXBsCgp8IFJlbGVhc2UgfCBDaGFydCB8IE5hbWVzcGFjZSB8IExh" + - "YmVsIHwKfC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS18CnwgKG9ic2VydmFi" + - "aWxpdHkgcmVsZWFzZXMpIHwgKHZhcmlvdXMpIHwgb2JzZXJ2YWJpbGl0eSB8IG9ic2VydmFiaWxp" + - "dHkgfAoKR2F0ZWQgb24gb2JzZXJ2YWJpbGl0eS1zcGVjaWZpYyBmbGFncyBpbiB0aGUgZW52aXJv" + - "bm1lbnQgZmlsZS4gU2tpcHBlZCBpZiBkaXNhYmxlZC4KCiMjIFRlbXBsYXRlIEluaGVyaXRhbmNl" + - "CgojIyMgYDw8OiAqZGVwZW5kZW5jeWAgKFlBTUwgbWVyZ2UpCgpVc2VkIGluIGAwMS1kZXBlbmRl" + - "bmNpZXMueWFtbC5nb3RtcGxgLiBNZXJnZXMgdGhlIHRlbXBsYXRlJ3MgcHJvcGVydGllcyBpbnRv" + - "IHRoZSByZWxlYXNlLgoKKipHb3RjaGEqKjogWUFNTCBtZXJnZSByZXBsYWNlcyBsaXN0cy4gSWYg" + - "eW91IGFkZCBhIGB2YWx1ZXM6YCBrZXkgdG8gdGhlIHJlbGVhc2UsIGl0ICoqcmVwbGFjZXMqKiB0" + - "aGUgdGVtcGxhdGUncyBgdmFsdWVzOmAgbGlzdCBlbnRpcmVseS4gWW91IG11c3QgcmUtaW5jbHVk" + - "ZSBhbGwgdGVtcGxhdGUgdmFsdWVzOgoKSW4gdGhlIHRlbXBsYXRlIGJlbG93LCBgPHByaXZhdGUt" + - "dmFsdWVzPmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0aGUgaGVsbWZp" + - "bGUgc3RhY2sgcm9vdC4KCmBgYHlhbWwKIyBUZW1wbGF0ZSBkZWZpbmVzOgp0ZW1wbGF0ZXM6CiAg" + - "ZGVwZW5kZW5jeTogJmRlcGVuZGVuY3kKICAgIGNoYXJ0OiBudmNmL2hlbG0tbnZjZi17eyAuUmVs" + - "ZWFzZS5OYW1lIH19CiAgICB2YWx1ZXM6CiAgICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAg" + - "ICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9" + - "fS1zZWNyZXRzLnlhbWwKCiMgV2hlbiBvdmVycmlkaW5nLCBNVVNUIHJlLWluY2x1ZGUgYm90aDoK" + - "LSBuYW1lOiBjYXNzYW5kcmEKICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2ds" + - "b2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + - "ICAgICAjIE11c3QgcmUtaW5jbHVkZQogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVp" + - "cmVkRW52ICJIRUxNRklMRV9FTlYiIH19LXNlY3JldHMueWFtbCAgICMgTXVzdCByZS1pbmNsdWRl" + - "CiAgICAtIGNhc3NhbmRyYTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + - "ICAgICAgICAgICAgICAgICAgIyBZb3VyIG92ZXJyaWRlCiAgICAgICAgcmVzb3VyY2VzOgogICAg" + - "ICAgICAgbGltaXRzOgogICAgICAgICAgICBtZW1vcnk6IDgxOTJNaQpgYGAKCiMjIyBgaW5oZXJp" + - "dGAgKEhlbG1maWxlIG5hdGl2ZSkKClVzZWQgaW4gYDAyLWNvcmUueWFtbC5nb3RtcGxgLiBIZWxt" + - "ZmlsZSdzIG5hdGl2ZSBpbmhlcml0YW5jZSBtZWNoYW5pc20uCgpgYGB5YW1sCi0gbmFtZTogYXBp" + - "CiAgdmVyc2lvbjogMS42LjAKICBuYW1lc3BhY2U6IG52Y2YKICBpbmhlcml0OgogICAgLSB0ZW1w" + - "bGF0ZTogc2VydmljZQpgYGAKCldoZW4gYWRkaW5nIGB2YWx1ZXM6YCB0byBhbiBpbmhlcml0ZWQg" + - "cmVsZWFzZSwgeW91IGFsc28gbmVlZCB0byByZS1pbmNsdWRlIHRoZSB0ZW1wbGF0ZSdzIHZhbHVl" + - "cyBmaWxlcyBzaW5jZSBgdmFsdWVzYCBpcyBhIGxpc3QgdGhhdCBnZXRzIHJlcGxhY2VkLgoKIyMg" + - "VmFsdWVzIFByZWNlZGVuY2UKCkZyb20gbG93ZXN0IHRvIGhpZ2hlc3QgcHJpb3JpdHk6CgoxLiBg" + - "ZW52aXJvbm1lbnRzL2Jhc2UueWFtbGAgLS0gZGVmYXVsdHMgc2hhcmVkIGFjcm9zcyBhbGwgZW52" + - "aXJvbm1lbnRzCjIuIGBlbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgLS0gcGVyLWVudmlyb25tZW50" + - "IG92ZXJyaWRlcwozLiBgZ2xvYmFsLnlhbWwuZ290bXBsYCAtLSBHbyB0ZW1wbGF0ZSBwcm9jZXNz" + - "aW5nIChjb25zdHJ1Y3RzIGNoYXJ0LXNwZWNpZmljIHN0cnVjdHVyZSkKNC4gYDxwcml2YXRlLXZh" + - "bHVlcz4vPGVudj4tc2VjcmV0cy55YW1sYCAtLSBzZW5zaXRpdmUgdmFsdWVzCjUuIElubGluZSBg" + - "dmFsdWVzOmAgYmxvY2tzIG9uIHJlbGVhc2VzIC0tIGhpZ2hlc3QgcHJlY2VkZW5jZQoKIyMgV2hh" + - "dCBnbG9iYWwueWFtbC5nb3RtcGwgUGFzc2VzIFRocm91Z2gKCmBnbG9iYWwueWFtbC5nb3RtcGxg" + - "IHJlYWRzIGZyb20gYC5WYWx1ZXNgICh0aGUgbWVyZ2VkIGVudmlyb25tZW50ICsgZW52LXNwZWNp" + - "ZmljIFlBTUwpIGFuZCBjb25zdHJ1Y3RzIGNoYXJ0LXNwZWNpZmljIHZhbHVlcy4gSXQgb25seSBw" + - "YXNzZXMgdGhyb3VnaCBrZXlzIGl0IGV4cGxpY2l0bHkgcmVmZXJlbmNlczoKCiMjIyBDYXNzYW5k" + - "cmEKCi0gYGNhc3NhbmRyYS5yZXBsaWNhQ291bnRgCi0gYGNhc3NhbmRyYS5pbWFnZS4qYCAocmVn" + - "aXN0cnksIHJlcG9zaXRvcnkpCi0gYGNhc3NhbmRyYS5taWdyYXRpb25zLmltYWdlLipgCi0gYGNh" + - "c3NhbmRyYS5wZXJzaXN0ZW5jZS5zaXplYAotIGBjYXNzYW5kcmEubm9kZVNlbGVjdG9yYCAoaWYg" + - "YGdsb2JhbC5ub2RlU2VsZWN0b3JzLmVuYWJsZWRgKQotIGBjYXNzYW5kcmEuZ2xvYmFsLmRlZmF1" + - "bHRTdG9yYWdlQ2xhc3NgCgojIyMgTkFUUwoKLSBgbmF0cy5jb250YWluZXIuaW1hZ2UuKmAKLSBg" + - "bmF0cy5yZWxvYWRlci5pbWFnZS4qYAotIGBuYXRzLm5hdHNCb3guY29udGFpbmVyLmltYWdlLipg" + - "Ci0gYG5hdHMuY29uZmlnLmpldHN0cmVhbS5maWxlU3RvcmUucHZjLnN0b3JhZ2VDbGFzc05hbWVg" + - "Ci0gYG5hdHMucG9kVGVtcGxhdGUubWVyZ2Uuc3BlYy5ub2RlU2VsZWN0b3JgIChpZiBlbmFibGVk" + - "KQoKIyMjIE9wZW5CYW8KCi0gYG9wZW5iYW8ubWlncmF0aW9ucy5pbWFnZS4qYCBhbmQgYG9wZW5i" + - "YW8ubWlncmF0aW9ucy5lbnZgCi0gYG9wZW5iYW8uaW5qZWN0b3IuaW1hZ2UuKmAKLSBgb3BlbmJh" + - "by5zZXJ2ZXIuaW1hZ2UuKmAKLSBgb3BlbmJhby5zZXJ2ZXIuZGF0YVN0b3JhZ2UuKmAKLSBOb2Rl" + - "IHNlbGVjdG9ycyAoaWYgZW5hYmxlZCkKCiMjIyBTZXJ2aWNlcyAoQVBJLCBTSVMsIGV0Yy4pCgot" + - "IGA8c2VydmljZT4uaW1hZ2UuKmAgKHJlZ2lzdHJ5LCByZXBvc2l0b3J5KQotIGA8c2VydmljZT4u" + - "bm9kZVNlbGVjdG9yYCAoaWYgZW5hYmxlZCkKLSBgPHNlcnZpY2U+LmVudi4qYCAob2JzZXJ2YWJp" + - "bGl0eSBzZXR0aW5ncykKCiMjIyBMTE0gRnVuY3Rpb24gRW5hYmxlbWVudAoKRW5hYmxlIHRoZSBM" + - "TE0gYWRkb24gYmVmb3JlIGNyZWF0aW5nIG9yIGludm9raW5nIGZ1bmN0aW9ucyB3aXRoCmBmdW5j" + - "dGlvblR5cGU6ICJMTE0iYC4gVGhlIGFkZG9uIGRlcGxveXMgYGxsbS1yZXF1ZXN0LXJvdXRlcmAg" + - "YW5kCmBsbG0tYXBpLWdhdGV3YXlgLCBhZGRzIHRoZSBgbGxtLmludm9jYXRpb24uPGRvbWFpbj5g" + - "IHJvdXRlIHdoZW4gR2F0ZXdheSBBUEkKaW5ncmVzcyBpcyBlbmFibGVkLCBhbmQgY29uZmlndXJl" + - "cyB3b3JrZXJzIHRvIHVzZSB0aGUgTExNIHNpZGVjYXIuIFRoZSBIZWxtZmlsZQpjb25kaXRpb24g" + - "aXMgYGFkZG9ucy5sbG0uZW5hYmxlZGAuIERvIG5vdCB1c2UgdGhlIG9ic29sZXRlIGBsbG0uZW5h" + - "YmxlZGAgcGF0aC4KCkZvciBhIHNpbmdsZS1ub2RlIGlzb2xhdGVkIHRlc3QgY2x1c3RlciwgYWRk" + - "IHRoaXMgY29uZmlndXJhdGlvbiB0bwpgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgIGJlZm9yZSBh" + - "cHBseWluZyB0aGUgc3RhY2s6CgpgYGB5YW1sCmFkZG9uczoKICBsbG06CiAgICBlbmFibGVkOiB0" + - "cnVlCiAgICBnYXRld2F5OgogICAgICByZXBsaWNhQ291bnQ6IDEKICAgICAgbWV0cmljczoKICAg" + - "ICAgICBzZXJ2aWNlTW9uaXRvcjoKICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCiAgICByZXF1ZXN0" + - "Um91dGVyOgogICAgICByZXBsaWNhQ291bnQ6IDEKICAgICAgbWV0cmljczoKICAgICAgICBzZXJ2" + - "aWNlTW9uaXRvcjoKICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCgphZ2VudENvbmZpZzoKICBtZXJn" + - "ZUNvbmZpZzogfAogICAgY2x1c3RlcjoKICAgICAgdmFsaWRhdGlvblBvbGljeToKICAgICAgICBu" + - "YW1lOiBVbnJlc3RyaWN0ZWQKICAgIHdvcmtsb2FkOgogICAgICBzdGFyZ2F0ZVFVSUNJbnNlY3Vy" + - "ZTogdHJ1ZQpgYGAKClVzZSBgcmVwbGljYUNvdW50OiAxYCBvbmx5IGZvciBsb2NhbCBvciBzaW5n" + - "bGUtbm9kZSB0ZXN0IGNsdXN0ZXJzLiBUaGUgYnVuZGxlZApOVkNGIEFQSSBjdXJyZW50bHkgc2Vy" + - "dmVzIHBsYWludGV4dCBnUlBDIG9uIHBvcnQgOTA5MCwgc28gdGhlIHNlbGYtbWFuYWdlZCBzdGFj" + - "awpkZWZhdWx0cyB0aGUgTExNIEFQSSBHYXRld2F5IGF1dGhlbnRpY2F0aW9uIGhvcCB0byBwbGFp" + - "bnRleHQuIFNldApgYWRkb25zLmxsbS5nYXRld2F5LmF1dGguZ3JwY0luc2VjdXJlOiBmYWxzZWAg" + - "b25seSB3aXRoIGEgVExTLWNhcGFibGUgTlZDRiBBUEkuCgpXb3JrZXItdG8tcm91dGVyIHRyYW5z" + - "cG9ydCBpcyBzZXBhcmF0ZS4gRm9yIHNoYXJlZCBvciBwcm9kdWN0aW9uIGNsdXN0ZXJzLCB1c2UK" + - "dGhlIHJlcXVpcmVkIHJlcGxpY2EgY291bnQgYW5kIHRoZSBtYW5hZ2VkIFRMUyBjb25maWd1cmF0" + - "aW9uLiBUaGUKYHdvcmtsb2FkLnN0YXJnYXRlUVVJQ0luc2VjdXJlYCBzZXR0aW5nIGVuYWJsZXMg" + - "cGxhaW50ZXh0IHdvcmtlciB0cmFuc3BvcnQgYW5kCm11c3Qgbm90IGJlIHVzZWQgaW4gcHJvZHVj" + - "dGlvbi4KClRoZSByZXF1ZXN0IHJvdXRlciB1c2VzIGBwb3dlci1vZi10d29gIHdoZW4gbm8gbG9h" + - "ZC1iYWxhbmNlciBjb25maWd1cmF0aW9uIGlzCnNldC4gQ29uZmlndXJlIG90aGVyIHJvdXRpbmcg" + - "bWV0aG9kcyB3aXRoIHRoZQpbTExNIFJlcXVlc3QgUm91dGVyIExvYWQgQmFsYW5jaW5nXShodHRw" + - "czovL2dpdGh1Yi5jb20vTlZJRElBL252Y2YvYmxvYi9tYWluL2RvY3MvdXNlci9sbG0tcmVxdWVz" + - "dC1yb3V0ZXItbG9hZC1iYWxhbmNpbmcubWQpCmd1aWRlLgoKSWYgdGhlIHNpZGVjYXIgaW1hZ2Ug" + - "aXMgbWlycm9yZWQgb3V0c2lkZSB0aGUgc3RhY2sncyBkZWZhdWx0IGltYWdlIHJlZ2lzdHJ5IGFu" + - "ZApyZXBvc2l0b3J5LCBzZXQgdGhlIGdlbmVyYXRlZCB3b3JrZXIgc2lkZWNhciBpbWFnZSBleHBs" + - "aWNpdGx5OgoKYGBgeWFtbAphcGk6CiAgcmVtb3RlQ29uZmlnOgogICAgY29uZmlnRGF0YToKICAg" + - "ICAgbnZjZjoKICAgICAgICBzaWRlY2FyczoKICAgICAgICAgIGxsbS1yb3V0ZXItY2xpZW50LWlt" + - "YWdlOiA8cmVnaXN0cnk+LzxyZXBvc2l0b3J5Pi9weWxvbjowLjE0LjEKYGBgCgpUaGUgbGVnYWN5" + - "IGBhcGkuZW52Lk5WQ0ZfU0lERUNBUlNfTExNX1JPVVRFUl9DTElFTlRfSU1BR0VgIHBhdGggaXMg" + - "ZGVwcmVjYXRlZC4KVGhlIHN0YWNrIHRyYW5zbGF0ZXMgaXQgZm9yIG9uZSBjb21wYXRpYmlsaXR5" + - "IHdpbmRvdywgYnV0IG5ldyBjb25maWd1cmF0aW9ucwptdXN0IHVzZSB0aGUgcmVtb3RlLWNvbmZp" + - "ZyBwYXRoLiBDb25mbGljdGluZyB2YWx1ZXMgZmFpbCByZW5kZXJpbmcuCgpSZW5kZXIgYW5kIGFw" + - "cGx5IHRoZSB1cGRhdGVkIGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQsIHRoZW4gcmVmcmVzaCBl" + - "dmVyeQpyZWdpc3RlcmVkIGNvbXB1dGUgcGxhbmUgdXNpbmcgdGhlIHNhbWUgaGFuZG9mZiB1c2Vk" + - "IGZvciBpdHMgaW5zdGFsbGF0aW9uIHNvCk5WQ0EgcmVjZWl2ZXMgYGFnZW50Q29uZmlnLm1lcmdl" + - "Q29uZmlnYDoKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIHRlbXBsYXRlCkhF" + - "TE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSBzeW5jCmBgYAoKVXNlIHRoZSBjb21wbGV0ZSBjb21w" + - "dXRlLXBsYW5lIGluc3RhbGwgY29tbWFuZCBmcm9tCltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3Rh" + - "bGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLiBBCkNMSS1wcm9maWxlIGlu" + - "c3RhbGxhdGlvbiBtdXN0IHJlbWFpbiBwcm9maWxlLWRyaXZlbjsgYSBIZWxtZmlsZSBpbnN0YWxs" + - "YXRpb24KbXVzdCByZW1haW4gdmFsdWVzLWRyaXZlbi4KCkV4aXN0aW5nIExMTSBmdW5jdGlvbiB2" + - "ZXJzaW9ucyByZXRhaW4gdGhlIHdvcmtlci1zaWRlY2FyIGltYWdlIG1ldGFkYXRhCmNhcHR1cmVk" + - "IHdoZW4gdGhlIHZlcnNpb24gaXMgY3JlYXRlZC4gUmVwbGFjaW5nIHBvZHMgb3IgcmVkZXBsb3lp" + - "bmcgdGhlIHNhbWUKdmVyc2lvbiBkb2VzIG5vdCBhcHBseSBhIG5ldyBQeWxvbiBpbWFnZS4gQWZ0" + - "ZXIgdGhlIGNvbnRyb2wtcGxhbmUgdXBkYXRlLApjcmVhdGUgYW5kIGRlcGxveSBhIG5ldyBmdW5j" + - "dGlvbiB2ZXJzaW9uLiBWZXJpZnkgdGhlIGNvbnRyb2wgcGxhbmUsIHJvdXRlLCBhbmQKd29ya2Vy" + - "IHNpZGVjYXI6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSAtbiBudmNmIGxsbS1hcGktZ2F0" + - "ZXdheQprdWJlY3RsIGdldCBzdGF0ZWZ1bHNldCAtbiBudmNmIGxsbS1yZXF1ZXN0LXJvdXRlcgpr" + - "dWJlY3RsIGdldCBwb2RzIC1uIG52Y2YgfCBncmVwIC1FICdsbG0tYXBpLWdhdGV3YXl8bGxtLXJl" + - "cXVlc3Qtcm91dGVyJwprdWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIGxsbQprdWJlY3Rs" + - "IC1uIG52Y2YtYmFja2VuZCBnZXQgcG9kIDxmdW5jdGlvbi1wb2Q+IFwKICAtbyBqc29ucGF0aD0n" + - "e3JhbmdlIC5zcGVjLmNvbnRhaW5lcnNbPyhALm5hbWU9PSJsbG0td29ya2VyIildLmFyZ3NbKl19" + - "ey59eyJcXG4ifXtlbmR9JwpgYGAKCkZvciBsb2NhbCBwbGFpbnRleHQgY2x1c3RlcnMsIHRoZSBg" + - "bGxtLXdvcmtlcmAgYXJncyBtdXN0IGluY2x1ZGUKYC0tcXVpYy1pbnNlY3VyZWAuCgpGb3IgbG9h" + - "ZC1iYWxhbmNlciBzY2hlbWEgYW5kIGFsZ29yaXRobSBiZWhhdmlvciwgc2VlIHRoZQpbU3Rhcmdh" + - "dGUgY29uZmlndXJhdGlvbiBndWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9udmNmL2Js" + - "b2IvbWFpbi9zcmMvbGlicmFyaWVzL3J1c3Qvc3RhcmdhdGUvZG9jcy9sb2FkLWJhbGFuY2VyLWNv" + - "bmZpZ3VyYXRpb24ubWQpLgoKIyMgSGVsbWZpbGUgU2VsZWN0b3JzCgpUYXJnZXQgc3BlY2lmaWMg" + - "cmVsZWFzZXMgb3IgZ3JvdXBzOgoKYGBgYmFzaAojIEJ5IHJlbGVhc2UgZ3JvdXAKSEVMTUZJTEVf" + - "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1kZXBlbmRlbmNpZXMg" + - "c3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3Vw" + - "PXNlcnZpY2VzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVs" + - "ZWFzZS1ncm91cD1pbmdyZXNzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2Vs" + - "ZWN0b3IgcmVsZWFzZS1ncm91cD1vYnNlcnZhYmlsaXR5IHN5bmMKCiMgQnkgcmVsZWFzZSBuYW1l" + - "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5" + - "bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1" + - "ZXItcHJveHkgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1l" + - "PWxsbS1yZXF1ZXN0LXJvdXRlciBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + - "bGVjdG9yIG5hbWU9bGxtLWFwaS1nYXRld2F5IHN5bmMKCiMgVGVtcGxhdGUgb25seSAoZHJ5IHJ1" + - "bikKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEg" + - "dGVtcGxhdGUKCiMgRGVzdHJveSBhIHNpbmdsZSByZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBo" + - "ZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIGRlc3Ryb3kKYGBgCgpOb3RlOiBgYWRt" + - "aW4taXNzdWVyLXByb3h5YCBoYXMgbm8gYHJlbGVhc2UtZ3JvdXBgIGxhYmVsLiBVc2UgYC0tc2Vs" + - "ZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHlgLgpQSwcIsTUd2wIqAAACKgAAUEsDBBQACAAA" + - "AAAAIQAAAAAAAAAAAAAAAAA/AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24v" + - "cmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SIyBOVkNGIFVJIEFkZG9uCgpOVkNG" + - "IFVJIGlzIGFuIG9wdGlvbmFsLCBjdXN0b21lci1mYWNpbmcgTlZDRiBhZG1pbi1wYW5lbCBVSS4g" + - "SXQgaXMgZGlzYWJsZWQgYnkKZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFj" + - "a2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBOVkNGIFVJIGFkZG9uLgoKIyMgV2hlbiB0byBlbmFibGUK" + - "CkVuYWJsZSBOVkNGIFVJIG9ubHkgd2hlbiB5b3UgbmVlZCB0aGUgYWRtaW4tcGFuZWwgVUkgYW5k" + - "IHlvdXIgZXh0cmFjdGVkIHN0YWNrCnBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLiBJZiB0aGUg" + - "cGFja2FnZSBkb2VzIG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UKYW5kIGBudmNmVWlg" + - "IHJvdXRlIHZhbHVlcywgc2tpcCB0aGUgYWRkb24gdW50aWwgeW91IHVzZSBhIHBhY2thZ2UgdGhh" + - "dCBpbmNsdWRlcwp0aGVtLgoKIyMgRW5hYmxlIHRoZSBhZGRvbgoKRW5hYmxlIGl0IGluIGBlbnZp" + - "cm9ubWVudHMvPGVudi1uYW1lPi55YW1sYDoKCmBgYHlhbWwKYWRkb25zOgogIG52Y2ZVaToKICAg" + - "IGVuYWJsZWQ6IHRydWUKYGBgCgojIyBDcmVhdGUgbmFtZXNwYWNlIGFuZCBpbWFnZSBwdWxsIHNl" + - "Y3JldAoKQ3JlYXRlIHRoZSBuYW1lc3BhY2UsIGFuZCBhbiBpbWFnZSBwdWxsIHNlY3JldCBvbmx5" + - "IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUKcmVnaXN0cnk6CgpgYGBiYXNoCmt1YmVjdGwgY3Jl" + - "YXRlIG5hbWVzcGFjZSBudmNmLXVpIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwg" + - "YXBwbHkgLWYgLQoKIyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGUu" + - "Zy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmt1YmVjdGwg" + - "Y3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgLS1kb2NrZXItc2Vy" + - "dmVyPW52Y3IuaW8gXAogIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogIC0tZG9j" + - "a2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAtLW5hbWVzcGFjZT1udmNmLXVpIFwKICAt" + - "LWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KYGBgCgpUaGUgZGVm" + - "YXVsdCByb3V0ZSBob3N0IGlzIGBudmNmLXVpLjxkb21haW4+YCBhbmQgdGhlIGJhY2tlbmQgaXMK" + - "YG52Y2YtdWkubnZjZi11aTo4MzAwYC4KCiMjIEFwcGx5IHRoZSBzZXJ2aWNlIGFuZCByb3V0ZQoK" + - "QWZ0ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYG52Y2YtdWlgIHJlbGVh" + - "c2UsIHByZXZpZXcgYW5kIGFwcGx5CnRoZSBzZXJ2aWNlIGFuZCByb3V0ZToKCmBgYGJhc2gKSEVM" + - "TUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgdGVt" + - "cGxhdGUKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52" + - "Y2YtdWkgc3luYwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJl" + - "bGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBgYAoKIyMgVmVyaWZ5CgpWZXJpZnkgdGhlIHJvdXRl" + - "IG9ubHkgd2hlbiB0aGUgYWRkb24gaXMgcHJlc2VudCBhbmQgZW5hYmxlZDoKCmBgYGJhc2gKa3Vi" + - "ZWN0bCBnZXQgZGVwbG95LHN2YyAtbiBudmNmLXVpCmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8" + - "IGdyZXAgLWkgbnZjZi11aQpjdXJsIC1pIC1IICJIb3N0OiBudmNmLXVpLjxkb21haW4+IiAiaHR0" + - "cDovLzxnYXRld2F5LWFkZHJlc3M+L3N0YXR1cyIKYGBgCgojIyBTZWN1cml0eQoKVGhlIE5WQ0Yg" + - "VUkgYWRtaW4gcGFuZWwgaXMgY3VycmVudGx5IHVuYXV0aGVudGljYXRlZC4gRG8gbm90IGV4cG9z" + - "ZSBpdCB0byB0aGUKcHVibGljIGludGVybmV0LiBSZXN0cmljdCBhY2Nlc3MgdG8gYSB0cnVzdGVk" + - "IG5ldHdvcmssIFZQTiwgb3IgYW4gYXV0aGVudGljYXRpbmcKcHJveHkgaW4gZnJvbnQgb2YgdGhl" + - "IGBudmNmLXVpYCByb3V0ZS4KUEsHCDj5J6+5BwAAuQcAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAA" + - "AAAAPgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVs" + - "bC1zZWNyZXRzLm1kVVQFAAEAps4SIyBJbWFnZSBQdWxsIFNlY3JldHMgUmVmZXJlbmNlCgojIyBP" + - "dmVydmlldwoKV2hlbiBwdWxsaW5nIE5WQ0YgaW1hZ2VzIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5" + - "IChmb3IgZXhhbXBsZSwgTkdDCmBudmNyLmlvYCksIEt1YmVybmV0ZXMgbmVlZHMgYGltYWdlUHVs" + - "bFNlY3JldHNgIG9uIGV2ZXJ5IHBvZC4gQ29udHJvbC1wbGFuZSBhbmQKY29tcHV0ZS1wbGFuZSBj" + - "cmVkZW50aWFscyBhcmUgY29uZmlndXJlZCBpbiB0aGVpciBvd24gY2x1c3RlciBjb250ZXh0cy4g" + - "RG8gbm90CnVzZSBvbmUgbWl4ZWQgbmFtZXNwYWNlIGxpc3QuCgpUaGUgcmVjb21tZW5kZWQgY29u" + - "dHJvbC1wbGFuZSBhcHByb2FjaCB1c2VzIEt5dmVybm8gdG8gaW5qZWN0IHRoZSBzZWNyZXQgaW50" + - "bwpjb250cm9sLXBsYW5lIHBvZHMgYXQgYWRtaXNzaW9uIHRpbWUuIFRoZSBjb21wdXRlLXBsYW5l" + - "IGNoYXJ0IGFuZCBvcGVyYXRvciB1c2UKdGhlIHNlY3JldCBpbiBgbnZjYS1vcGVyYXRvcmAgYW5k" + - "IG1pcnJvciBpdCB0byBgbnZjYS1zeXN0ZW1gLgoKIyMgS3l2ZXJubyBBcHByb2FjaCAoUmVjb21t" + - "ZW5kZWQpCgojIyMgMS4gSW5zdGFsbCBLeXZlcm5vCgpgYGBiYXNoCmhlbG0gcmVwbyBhZGQga3l2" + - "ZXJubyBodHRwczovL2t5dmVybm8uZ2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUK" + - "aGVsbSBpbnN0YWxsIGt5dmVybm8ga3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUt" + - "bmFtZXNwYWNlIFwKICAtLWt1YmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PgpgYGAK" + - "CiMjIyAyLiBDcmVhdGUgY29udHJvbC1wbGFuZSBwdWxsIHNlY3JldHMKCmBgYGJhc2gKZXhwb3J0" + - "IE5HQ19BUElfS0VZPSI8eW91ci1uZ2MtYXBpLWtleT4iCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5" + - "c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQt" + - "bWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBj" + - "cmVhdGUgbmFtZXNwYWNlICIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1" + - "YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQoK" + - "Zm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mg" + - "c2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgPGNv" + - "bnRyb2wtcGxhbmUtY29udGV4dD4gY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1j" + - "cmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFt" + - "ZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwK" + - "ICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1" + - "YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQpg" + - "YGAKCkZvciBub24tTkdDIHJlZ2lzdHJpZXMsIHJlcGxhY2UgYC0tZG9ja2VyLXNlcnZlcmAsIGAt" + - "LWRvY2tlci11c2VybmFtZWAsIGFuZCBgLS1kb2NrZXItcGFzc3dvcmRgLgoKIyMjIDMuIEFwcGx5" + - "IEt5dmVybm8gQ2x1c3RlclBvbGljeQoKYGBgeWFtbAphcGlWZXJzaW9uOiBreXZlcm5vLmlvL3Yx" + - "CmtpbmQ6IENsdXN0ZXJQb2xpY3kKbWV0YWRhdGE6CiAgbmFtZTogbnZjZi1hZGQtaW1hZ2VwdWxs" + - "c2VjcmV0cwpzcGVjOgogIGJhY2tncm91bmQ6IGZhbHNlCiAgcnVsZXM6CiAgICAtIG5hbWU6IGFk" + - "ZC1pbWFnZXB1bGxzZWNyZXQtdG8tbnZjZi1wb2RzCiAgICAgIG1hdGNoOgogICAgICAgIGFueToK" + - "ICAgICAgICAtIHJlc291cmNlczoKICAgICAgICAgICAga2luZHM6CiAgICAgICAgICAgIC0gUG9k" + - "CiAgICAgICAgICAgIG5hbWVzcGFjZXM6CiAgICAgICAgICAgIC0gIm52Y2YiCiAgICAgICAgICAg" + - "IC0gImFwaS1rZXlzIgogICAgICAgICAgICAtICJzaXMiCiAgICAgICAgICAgIC0gImVzcyIKICAg" + - "ICAgICAgICAgLSAibmF0cy1zeXN0ZW0iCiAgICAgICAgICAgIC0gImNhc3NhbmRyYS1zeXN0ZW0i" + - "CiAgICAgICAgICAgIC0gInZhdWx0LXN5c3RlbSIKICAgICAgICAgICAgLSAiY2VydC1tYW5hZ2Vy" + - "IgogICAgICBtdXRhdGU6CiAgICAgICAgcGF0Y2hTdHJhdGVnaWNNZXJnZToKICAgICAgICAgIG1l" + - "dGFkYXRhOgogICAgICAgICAgICBhbm5vdGF0aW9uczoKICAgICAgICAgICAgICBudmNmLm52aWRp" + - "YS5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVkLWJ5OiBreXZlcm5vCiAgICAgICAgICBzcGVj" + - "OgogICAgICAgICAgICBpbWFnZVB1bGxTZWNyZXRzOgogICAgICAgICAgICAtIG5hbWU6IG52Y3It" + - "Y3JlZHMKYGBgCgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRl" + - "eHQ+IGFwcGx5IFwKICAtZiBreXZlcm5vLWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAK" + - "CiMjIyA0LiBJbnN0YWxsIHRoZSBjb250cm9sIHBsYW5lCgpDb250aW51ZSB3aXRoIHRoZSBzZWxl" + - "Y3RlZCBjb250cm9sLXBsYW5lIGluc3RhbGxhdGlvbiBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJ" + - "bnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4gTm8KY29udHJvbC1w" + - "bGFuZSBoZWxtZmlsZSBtb2RpZmljYXRpb25zIGFyZSBuZWVkZWQuIEt5dmVybm8gaW5qZWN0cyB0" + - "aGUgcHVsbApzZWNyZXQgaW50byBuZXcgY29udHJvbC1wbGFuZSBwb2RzLgoKIyMgQ29tcHV0ZS1Q" + - "bGFuZSBTZWNyZXQKCkNyZWF0ZSB0aGUgc2VjcmV0IG9ubHkgaW4gYG52Y2Etb3BlcmF0b3JgIG9u" + - "IHRoZSBjb21wdXRlIGNsdXN0ZXI6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + - "LXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3BhY2UgbnZjYS1vcGVyYXRvciBcCiAgLS1kcnkt" + - "cnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5l" + - "LWNvbnRleHQ+IGFwcGx5IC1mIC0KCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNv" + - "bnRleHQ+IGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogIC0tZG9j" + - "a2VyLXNlcnZlcj1udmNyLmlvIFwKICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwK" + - "ICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgLS1uYW1lc3BhY2U9bnZjYS1v" + - "cGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250" + - "ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KYGBgCgpSZWZlcmVuY2UgaXQg" + - "aW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZToKCmBgYHlhbWwKZ2xvYmFsOgog" + - "IGltYWdlUHVsbFNlY3JldHM6CiAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpUaGUgY2hhcnQg" + - "YW5kIG9wZXJhdG9yIHVzZSB0aGF0IHJlZmVyZW5jZSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1p" + - "cnJvciB0aGUKc2VjcmV0IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBjcmVhdGUgYSBicm9hZGVy" + - "IG1hbnVhbCBjb21wdXRlIG5hbWVzcGFjZSBsaXN0LiBGb2xsb3cKW1NwbGl0IENvbXB1dGUtUGxh" + - "bmUgSW5zdGFsbGF0aW9uXShjb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkgZm9yIHRoZQpz" + - "ZWxlY3RlZCBpbnN0YWxsIGZsb3cuCgojIyBWZXJpZmljYXRpb24KCmBgYGJhc2gKIyBDaGVjayB0" + - "aGF0IGEgY29udHJvbC1wbGFuZSBwb2QgaGFzIHRoZSBpbmplY3RlZCBzZWNyZXQKa3ViZWN0bCAt" + - "LWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8" + - "cG9kLW5hbWU+IFwKICAtbyBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9JwojIEV4" + - "cGVjdGVkOiBbeyJuYW1lIjoibnZjci1jcmVkcyJ9XQoKIyBDaGVjayB0aGUgS3l2ZXJubyBhbm5v" + - "dGF0aW9uCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBwb2Qg" + - "LW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiBcCiAgLW8ganNvbnBhdGg9J3subWV0YWRhdGEuYW5u" + - "b3RhdGlvbnMubnZjZlwubnZpZGlhXC5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVkLWJ5fScK" + - "IyBFeHBlY3RlZDoga3l2ZXJubwoKIyBDaGVjayBwdWxsIGV2ZW50cwprdWJlY3RsIC0tY29udGV4" + - "dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZXZlbnRzIC1uIDxuYW1lc3BhY2U+IFwKICAt" + - "LXNvcnQtYnk9Jy5sYXN0VGltZXN0YW1wJyB8IGdyZXAgLWkgcHVsbAojIFNob3VsZCBzaG93ICJT" + - "dWNjZXNzZnVsbHkgcHVsbGVkIiBub3QgIjQwMSBVbmF1dGhvcml6ZWQiCgojIENoZWNrIHRoZSBj" + - "aGFydC9vcGVyYXRvciBtaXJyb3Igb24gdGhlIGNvbXB1dGUgY2x1c3RlcgprdWJlY3RsIC0tY29u" + - "dGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgXAogIC1u" + - "IG52Y2Etc3lzdGVtCmBgYAoKIyMgV2hlbiBQdWxsIFNlY3JldHMgQXJlIE5vdCBOZWVkZWQKCi0g" + - "KipBV1MgRUNSIHdpdGggSUFNIG5vZGUgcm9sZXMqKjogSWYgeW91ciBub2RlcyBoYXZlIGBBbWF6" + - "b25FQzJDb250YWluZXJSZWdpc3RyeVJlYWRPbmx5YCBJQU0gcG9saWN5LCBLdWJlcm5ldGVzIGNh" + - "biBwdWxsIGZyb20gRUNSIHdpdGhvdXQgZXhwbGljaXQgc2VjcmV0cy4KLSAqKlB1YmxpYyByZWdp" + - "c3RyaWVzKio6IE5vIHB1bGwgc2VjcmV0cyBuZWVkZWQuCi0gKipDU1AgYnVpbHQtaW4gY3JlZGVu" + - "dGlhbCBoZWxwZXJzKio6IEdLRSBBcnRpZmFjdCBSZWdpc3RyeSwgQXp1cmUgQUNSIHdpdGggbWFu" + - "YWdlZCBpZGVudGl0eSwgYW5kIHNpbWlsYXIgc2VydmljZXMuCgojIyBUcm91Ymxlc2hvb3RpbmcK" + - "CiMjIyBQb2RzIHN0aWxsIGluIEltYWdlUHVsbEJhY2tPZmYgYWZ0ZXIgYXBwbHlpbmcgcG9saWN5" + - "CgpUaGUgS3l2ZXJubyBwb2xpY3kgb25seSBhZmZlY3RzIHBvZHMgY3JlYXRlZCAqKmFmdGVyKiog" + - "dGhlIHBvbGljeSBpcyBhcHBsaWVkLiBEZWxldGUgc3R1Y2sgcG9kcyB0byB0cmlnZ2VyIHJlY3Jl" + - "YXRpb246CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDx0YXJnZXQtY29udGV4dD4gZGVsZXRl" + - "IHBvZHMgLW4gPG5hbWVzcGFjZT4gLS1hbGwKYGBgCgojIyMgS3l2ZXJubyBhZG1pc3Npb24gY29u" + - "dHJvbGxlciBub3QgcnVubmluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1w" + - "bGFuZS1jb250ZXh0PiBnZXQgcG9kcyAtbiBreXZlcm5vCiMgQWxsIHBvZHMgc2hvdWxkIGJlIFJ1" + - "bm5pbmcKYGBgCgojIyMgUG9saWN5IG5vdCBtYXRjaGluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29u" + - "dGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgY2x1c3RlcnBvbGljeSBudmNmLWFkZC1p" + - "bWFnZXB1bGxzZWNyZXRzCiMgU2hvdWxkIHNob3cgUkVBRFk6IFRydWUKYGBgCgojIyMgV3Jvbmcg" + - "c2VjcmV0IG5hbWUKClRoZSBwb2xpY3kgcmVmZXJlbmNlcyBgbnZjci1jcmVkc2AuIFZlcmlmeSB0" + - "aGUgc2VjcmV0IGV4aXN0cyB3aXRoIHRoYXQgZXhhY3QgbmFtZToKCmBgYGJhc2gKa3ViZWN0bCAt" + - "LWNvbnRleHQgPHRhcmdldC1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgLW4gPG5hbWVz" + - "cGFjZT4KYGBgClBLBwhLQjWoABYAAAAWAABQSwECFAAUAAgAAAAAACEATyM55UoQAABKEAAAEgAJ" + - "AAAAAAAAAAAAAAAAAAAAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAh" + - "AP9282dTYQAAU2EAACMACQAAAAAAAAAAAAAAkxAAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xp" + - "L1NLSUxMLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAG3jewUjDAAAIwwAADMACQAAAAAAAAAA" + - "AAAAQHIAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL2V4YW1wbGVzL2NpLXBpcGVsaW5lcy5t" + - "ZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQChFOOBXQwAAF0MAAA0AAkAAAAAAAAAAAAAAM1+AABk" + - "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9tdWx0aS1jbHVzdGVyLm1kVVQFAAEA" + - "ps4SUEsBAhQAFAAIAAAAAAAhAEInSQ8FDQAABQ0AADcACQAAAAAAAAAAAAAAlYsAAGRhdGEvbnZj" + - "Zi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvYWRkLWNvbXB1dGUtcGxhbmUubWRVVAUAAQCmzhJQ" + - "SwECFAAUAAgAAAAAACEA1N6NNJ8ZAACfGQAAOQAJAAAAAAAAAAAAAAAImQAAZGF0YS9udmNmLXNl" + - "bGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kVVQFAAEAps4SUEsB" + - "AhQAFAAIAAAAAAAhANJD3AQYJQAAGCUAADcACQAAAAAAAAAAAAAAF7MAAGRhdGEvbnZjZi1zZWxm" + - "LW1hbmFnZWQtY2xpL3Byb21wdHMvZGVwbG95LWFuZC1pbnZva2UubWRVVAUAAQCmzhJQSwECFAAU" + - "AAgAAAAAACEAcpIsJr4OAAC+DgAAPQAJAAAAAAAAAAAAAACd2AAAZGF0YS9udmNmLXNlbGYtbWFu" + - "YWdlZC1jbGkvcHJvbXB0cy9kaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZFVUBQABAKbOElBLAQIU" + - "ABQACAAAAAAAIQBCceYeASgAAAEoAAA6AAkAAAAAAAAAAAAAAM/nAABkYXRhL252Y2Ytc2VsZi1t" + - "YW5hZ2VkLWNsaS9wcm9tcHRzL2luc3RhbGwtZnJvbS1zY3JhdGNoLm1kVVQFAAEAps4SUEsBAhQA" + - "FAAIAAAAAAAhAKrhOrnIBwAAyAcAADkACQAAAAAAAAAAAAAAQRABAGRhdGEvbnZjZi1zZWxmLW1h" + - "bmFnZWQtY2xpL3Byb21wdHMvcm90YXRlLWNsdXN0ZXItandrcy5tZFVUBQABAKbOElBLAQIUABQA" + - "CAAAAAAAIQDah2NW5CEAAOQhAAAuAAkAAAAAAAAAAAAAAHkYAQBkYXRhL252Y2Ytc2VsZi1tYW5h" + - "Z2VkLWNsaS9wcm9tcHRzL3RlYXJkb3duLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAHIND2Qh" + - "IwAAISMAADAACQAAAAAAAAAAAAAAwjoBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVy" + - "ZW5jZS9jb21tYW5kcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBzp1pk1QYAANUGAAAyAAkA" + - "AAAAAAAAAAAAAEpeAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZXhpdC1j" + - "b2Rlcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQCZ0OJQFy4AABcuAAAtAAkAAAAAAAAAAAAA" + - "AIhlAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZmxhZ3MubWRVVAUAAQCm" + - "zhJQSwECFAAUAAgAAAAAACEA864ThHQRAAB0EQAANwAJAAAAAAAAAAAAAAADlAEAZGF0YS9udmNm" + - "LXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOElBL" + - "AQIUABQACAAAAAAAIQARwxSTSWIAAEliAAAsAAkAAAAAAAAAAAAAAOWlAQBkYXRhL252Y2Ytc2Vs" + - "Zi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBH" + - "VWpWSlYAAEpWAAA0AAkAAAAAAAAAAAAAAJEIAgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + - "bGxhdGlvbi9ldmFscy9ldmFscy5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAAJSTkB/KAAA" + - "fygAAC8ACQAAAAAAAAAAAAAARl8CAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9u" + - "L2V4YW1wbGVzLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAJZjvFkSMAAAEjAAAEwACQAAAAAA" + - "AAAAAAAAK4gCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMv" + - "Y29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAtXpw" + - "O7UwAAC1MAAAOwAJAAAAAAAAAAAAAADAuAIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + - "YXRpb24vcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAsTUd" + - "2wIqAAACKgAARAAJAAAAAAAAAAAAAADn6QIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + - "YXRpb24vcmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWRVVAUAAQCmzhJQSwECFAAUAAgA" + - "AAAAACEAOPknr7kHAAC5BwAAPwAJAAAAAAAAAAAAAABkFAMAZGF0YS9udmNmLXNlbGYtbWFuYWdl" + - "ZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SUEsBAhQA" + - "FAAIAAAAAAAhAEtCNagAFgAAABYAAD4ACQAAAAAAAAAAAAAAkxwDAGRhdGEvbnZjZi1zZWxmLW1h" + - "bmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SUEsF" + - "BgAAAAAXABcArwkAAAgzAwAAAA==" + "dGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCmRvbmUKYGBgCgpGb3Igbm9u" + + "LU5HQyByZWdpc3RyaWVzLCByZXBsYWNlIGAtLWRvY2tlci1zZXJ2ZXJgLCBgLS1kb2NrZXItdXNl" + + "cm5hbWVgLCBhbmQgYC0tZG9ja2VyLXBhc3N3b3JkYC4KCiMjIyAzLiBBcHBseSBLeXZlcm5vIENs" + + "dXN0ZXJQb2xpY3kKCmBgYHlhbWwKYXBpVmVyc2lvbjoga3l2ZXJuby5pby92MQpraW5kOiBDbHVz" + + "dGVyUG9saWN5Cm1ldGFkYXRhOgogIG5hbWU6IG52Y2YtYWRkLWltYWdlcHVsbHNlY3JldHMKc3Bl" + + "YzoKICBiYWNrZ3JvdW5kOiBmYWxzZQogIHJ1bGVzOgogICAgLSBuYW1lOiBhZGQtaW1hZ2VwdWxs" + + "c2VjcmV0LXRvLW52Y2YtcG9kcwogICAgICBtYXRjaDoKICAgICAgICBhbnk6CiAgICAgICAgLSBy" + + "ZXNvdXJjZXM6CiAgICAgICAgICAgIGtpbmRzOgogICAgICAgICAgICAtIFBvZAogICAgICAgICAg" + + "ICBuYW1lc3BhY2VzOgogICAgICAgICAgICAtICJudmNmIgogICAgICAgICAgICAtICJhcGkta2V5" + + "cyIKICAgICAgICAgICAgLSAic2lzIgogICAgICAgICAgICAtICJlc3MiCiAgICAgICAgICAgIC0g" + + "Im5hdHMtc3lzdGVtIgogICAgICAgICAgICAtICJjYXNzYW5kcmEtc3lzdGVtIgogICAgICAgICAg" + + "ICAtICJ2YXVsdC1zeXN0ZW0iCiAgICAgICAgICAgIC0gImNlcnQtbWFuYWdlciIKICAgICAgbXV0" + + "YXRlOgogICAgICAgIHBhdGNoU3RyYXRlZ2ljTWVyZ2U6CiAgICAgICAgICBtZXRhZGF0YToKICAg" + + "ICAgICAgICAgYW5ub3RhdGlvbnM6CiAgICAgICAgICAgICAgbnZjZi5udmlkaWEuY29tL2ltYWdl" + + "cHVsbHNlY3JldC1pbmplY3RlZC1ieToga3l2ZXJubwogICAgICAgICAgc3BlYzoKICAgICAgICAg" + + "ICAgaW1hZ2VQdWxsU2VjcmV0czoKICAgICAgICAgICAgLSBuYW1lOiBudmNyLWNyZWRzCmBgYAoK" + + "YGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBhcHBseSBc" + + "CiAgLWYga3l2ZXJuby1pbWFnZXB1bGxzZWNyZXQtcG9saWN5LnlhbWwKYGBgCgojIyMgNC4gSW5z" + + "dGFsbCB0aGUgY29udHJvbCBwbGFuZQoKQ29udGludWUgd2l0aCB0aGUgc2VsZWN0ZWQgY29udHJv" + + "bC1wbGFuZSBpbnN0YWxsYXRpb24gaW4KW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9u" + + "XShjb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkuIE5vCmNvbnRyb2wtcGxhbmUgaGVsbWZp" + + "bGUgbW9kaWZpY2F0aW9ucyBhcmUgbmVlZGVkLiBLeXZlcm5vIGluamVjdHMgdGhlIHB1bGwKc2Vj" + + "cmV0IGludG8gbmV3IGNvbnRyb2wtcGxhbmUgcG9kcy4KCiMjIENvbXB1dGUtUGxhbmUgU2VjcmV0" + + "CgpDcmVhdGUgdGhlIHNlY3JldCBvbmx5IGluIGBudmNhLW9wZXJhdG9yYCBvbiB0aGUgY29tcHV0" + + "ZSBjbHVzdGVyOgoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250" + + "ZXh0PiBjcmVhdGUgbmFtZXNwYWNlIG52Y2Etb3BlcmF0b3IgXAogIC0tZHJ5LXJ1bj1jbGllbnQg" + + "LW8geWFtbCB8IFwKICBrdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBh" + + "cHBseSAtZiAtCgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBjcmVh" + + "dGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAtLWRvY2tlci1zZXJ2ZXI9" + + "bnZjci5pbyBcCiAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgLS1kb2NrZXIt" + + "cGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogIC0tbmFtZXNwYWNlPW52Y2Etb3BlcmF0b3IgXAog" + + "IC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IFwKICBrdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0" + + "ZS1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCmBgYAoKUmVmZXJlbmNlIGl0IGluIHRoZSBjb21w" + + "dXRlLXBsYW5lIGVudmlyb25tZW50IGZpbGU6CgpgYGB5YW1sCmdsb2JhbDoKICBpbWFnZVB1bGxT" + + "ZWNyZXRzOgogICAgLSBuYW1lOiBudmNyLWNyZWRzCmBgYAoKVGhlIGNoYXJ0IGFuZCBvcGVyYXRv" + + "ciB1c2UgdGhhdCByZWZlcmVuY2UgaW4gYG52Y2Etb3BlcmF0b3JgIGFuZCBtaXJyb3IgdGhlCnNl" + + "Y3JldCB0byBgbnZjYS1zeXN0ZW1gLiBEbyBub3QgY3JlYXRlIGEgYnJvYWRlciBtYW51YWwgY29t" + + "cHV0ZSBuYW1lc3BhY2UgbGlzdC4gRm9sbG93CltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxh" + + "dGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpIGZvciB0aGUKc2VsZWN0ZWQgaW5z" + + "dGFsbCBmbG93LgoKIyMgVmVyaWZpY2F0aW9uCgpgYGBiYXNoCiMgQ2hlY2sgdGhhdCBhIGNvbnRy" + + "b2wtcGxhbmUgcG9kIGhhcyB0aGUgaW5qZWN0ZWQgc2VjcmV0Cmt1YmVjdGwgLS1jb250ZXh0IDxj" + + "b250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiBc" + + "CiAgLW8ganNvbnBhdGg9J3suc3BlYy5pbWFnZVB1bGxTZWNyZXRzfScKIyBFeHBlY3RlZDogW3si" + + "bmFtZSI6Im52Y3ItY3JlZHMifV0KCiMgQ2hlY2sgdGhlIEt5dmVybm8gYW5ub3RhdGlvbgprdWJl" + + "Y3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgcG9kIC1uIDxuYW1lc3Bh" + + "Y2U+IDxwb2QtbmFtZT4gXAogIC1vIGpzb25wYXRoPSd7Lm1ldGFkYXRhLmFubm90YXRpb25zLm52" + + "Y2ZcLm52aWRpYVwuY29tL2ltYWdlcHVsbHNlY3JldC1pbmplY3RlZC1ieX0nCiMgRXhwZWN0ZWQ6" + + "IGt5dmVybm8KCiMgQ2hlY2sgcHVsbCBldmVudHMKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wt" + + "cGxhbmUtY29udGV4dD4gZ2V0IGV2ZW50cyAtbiA8bmFtZXNwYWNlPiBcCiAgLS1zb3J0LWJ5PScu" + + "bGFzdFRpbWVzdGFtcCcgfCBncmVwIC1pIHB1bGwKIyBTaG91bGQgc2hvdyAiU3VjY2Vzc2Z1bGx5" + + "IHB1bGxlZCIgbm90ICI0MDEgVW5hdXRob3JpemVkIgoKIyBDaGVjayB0aGUgY2hhcnQvb3BlcmF0" + + "b3IgbWlycm9yIG9uIHRoZSBjb21wdXRlIGNsdXN0ZXIKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1" + + "dGUtcGxhbmUtY29udGV4dD4gZ2V0IHNlY3JldCBudmNyLWNyZWRzIFwKICAtbiBudmNhLXN5c3Rl" + + "bQpgYGAKCiMjIFdoZW4gUHVsbCBTZWNyZXRzIEFyZSBOb3QgTmVlZGVkCgotICoqQVdTIEVDUiB3" + + "aXRoIElBTSBub2RlIHJvbGVzKio6IElmIHlvdXIgbm9kZXMgaGF2ZSBgQW1hem9uRUMyQ29udGFp" + + "bmVyUmVnaXN0cnlSZWFkT25seWAgSUFNIHBvbGljeSwgS3ViZXJuZXRlcyBjYW4gcHVsbCBmcm9t" + + "IEVDUiB3aXRob3V0IGV4cGxpY2l0IHNlY3JldHMuCi0gKipQdWJsaWMgcmVnaXN0cmllcyoqOiBO" + + "byBwdWxsIHNlY3JldHMgbmVlZGVkLgotICoqQ1NQIGJ1aWx0LWluIGNyZWRlbnRpYWwgaGVscGVy" + + "cyoqOiBHS0UgQXJ0aWZhY3QgUmVnaXN0cnksIEF6dXJlIEFDUiB3aXRoIG1hbmFnZWQgaWRlbnRp" + + "dHksIGFuZCBzaW1pbGFyIHNlcnZpY2VzLgoKIyMgVHJvdWJsZXNob290aW5nCgojIyMgUG9kcyBz" + + "dGlsbCBpbiBJbWFnZVB1bGxCYWNrT2ZmIGFmdGVyIGFwcGx5aW5nIHBvbGljeQoKVGhlIEt5dmVy" + + "bm8gcG9saWN5IG9ubHkgYWZmZWN0cyBwb2RzIGNyZWF0ZWQgKiphZnRlcioqIHRoZSBwb2xpY3kg" + + "aXMgYXBwbGllZC4gRGVsZXRlIHN0dWNrIHBvZHMgdG8gdHJpZ2dlciByZWNyZWF0aW9uOgoKYGBg" + + "YmFzaAprdWJlY3RsIC0tY29udGV4dCA8dGFyZ2V0LWNvbnRleHQ+IGRlbGV0ZSBwb2RzIC1uIDxu" + + "YW1lc3BhY2U+IC0tYWxsCmBgYAoKIyMjIEt5dmVybm8gYWRtaXNzaW9uIGNvbnRyb2xsZXIgbm90" + + "IHJ1bm5pbmcKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4" + + "dD4gZ2V0IHBvZHMgLW4ga3l2ZXJubwojIEFsbCBwb2RzIHNob3VsZCBiZSBSdW5uaW5nCmBgYAoK" + + "IyMjIFBvbGljeSBub3QgbWF0Y2hpbmcKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + + "b2wtcGxhbmUtY29udGV4dD4gZ2V0IGNsdXN0ZXJwb2xpY3kgbnZjZi1hZGQtaW1hZ2VwdWxsc2Vj" + + "cmV0cwojIFNob3VsZCBzaG93IFJFQURZOiBUcnVlCmBgYAoKIyMjIFdyb25nIHNlY3JldCBuYW1l" + + "CgpUaGUgcG9saWN5IHJlZmVyZW5jZXMgYG52Y3ItY3JlZHNgLiBWZXJpZnkgdGhlIHNlY3JldCBl" + + "eGlzdHMgd2l0aCB0aGF0IGV4YWN0IG5hbWU6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDx0" + + "YXJnZXQtY29udGV4dD4gZ2V0IHNlY3JldCBudmNyLWNyZWRzIC1uIDxuYW1lc3BhY2U+CmBgYApQ" + + "SwcIS0I1qAAWAAAAFgAAUEsBAhQAFAAIAAAAAAAhAAICbAFKEAAAShAAABIACQAAAAAAAAAAAAAA" + + "AAAAAGRhdGEvbWFuaWZlc3QuanNvblVUBQABAKbOElBLAQIUABQACAAAAAAAIQD/dvNnU2EAAFNh" + + "AAAjAAkAAAAAAAAAAAAAAJMQAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9TS0lMTC5tZFVU" + + "BQABAKbOElBLAQIUABQACAAAAAAAIQBn/RgP/AwAAPwMAAAzAAkAAAAAAAAAAAAAAEByAABkYXRh" + + "L252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9jaS1waXBlbGluZXMubWRVVAUAAQCmzhJQ" + + "SwECFAAUAAgAAAAAACEAoRTjgV0MAABdDAAANAAJAAAAAAAAAAAAAACmfwAAZGF0YS9udmNmLXNl" + + "bGYtbWFuYWdlZC1jbGkvZXhhbXBsZXMvbXVsdGktY2x1c3Rlci5tZFVUBQABAKbOElBLAQIUABQA" + + "CAAAAAAAIQBCJ0kPBQ0AAAUNAAA3AAkAAAAAAAAAAAAAAG6MAABkYXRhL252Y2Ytc2VsZi1tYW5h" + + "Z2VkLWNsaS9wcm9tcHRzL2FkZC1jb21wdXRlLXBsYW5lLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAA" + + "AAAhANTejTSfGQAAnxkAADkACQAAAAAAAAAAAAAA4ZkAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + + "Y2xpL3Byb21wdHMvY3JlYXRlLWFuZC1ydW4tdGFzay5tZFVUBQABAKbOElBLAQIUABQACAAAAAAA" + + "IQDSQ9wEGCUAABglAAA3AAkAAAAAAAAAAAAAAPCzAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNs" + + "aS9wcm9tcHRzL2RlcGxveS1hbmQtaW52b2tlLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAHKS" + + "LCa+DgAAvg4AAD0ACQAAAAAAAAAAAAAAdtkAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3By" + + "b21wdHMvZGlhZ25vc2UtZmFpbGVkLWluc3RhbGwubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA" + + "QnHmHgEoAAABKAAAOgAJAAAAAAAAAAAAAACo6AAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkv" + + "cHJvbXB0cy9pbnN0YWxsLWZyb20tc2NyYXRjaC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQCq" + + "4Tq5yAcAAMgHAAA5AAkAAAAAAAAAAAAAABoRAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9w" + + "cm9tcHRzL3JvdGF0ZS1jbHVzdGVyLWp3a3MubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA2odj" + + "VuQhAADkIQAALgAJAAAAAAAAAAAAAABSGQEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJv" + + "bXB0cy90ZWFyZG93bi5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQByDQ9kISMAACEjAAAwAAkA" + + "AAAAAAAAAAAAAJs7AQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvY29tbWFu" + + "ZHMubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAc6daZNUGAADVBgAAMgAJAAAAAAAAAAAAAAAj" + + "XwEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL2V4aXQtY29kZXMubWRVVAUA" + + "AQCmzhJQSwECFAAUAAgAAAAAACEAmdDiUBcuAAAXLgAALQAJAAAAAAAAAAAAAABhZgEAZGF0YS9u" + + "dmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL2ZsYWdzLm1kVVQFAAEAps4SUEsBAhQAFAAI" + + "AAAAAAAhAPOuE4R0EQAAdBEAADcACQAAAAAAAAAAAAAA3JQBAGRhdGEvbnZjZi1zZWxmLW1hbmFn" + + "ZWQtY2xpL3JlZmVyZW5jZS90cm91Ymxlc2hvb3RpbmcubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + + "ACEAEcMUk0liAABJYgAALAAJAAAAAAAAAAAAAAC+pgEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1p" + + "bnN0YWxsYXRpb24vU0tJTEwubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAR1VqVkpWAABKVgAA" + + "NAAJAAAAAAAAAAAAAABqCQIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXZh" + + "bHMvZXZhbHMuanNvblVUBQABAKbOElBLAQIUABQACAAAAAAAIQACUk5AfygAAH8oAAAvAAkAAAAA" + + "AAAAAAAAAB9gAgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9leGFtcGxlcy5t" + + "ZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQCWY7xZEjAAABIwAABMAAkAAAAAAAAAAAAAAASJAgBk" + + "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL2NvbXB1dGUtcGxh" + + "bmUtaW5zdGFsbGF0aW9uLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhALV6cDu1MAAAtTAAADsA" + + "CQAAAAAAAAAAAAAAmbkCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVy" + + "ZW5jZXMvZGVidWdnaW5nLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhALE1HdsCKgAAAioAAEQA" + + "CQAAAAAAAAAAAAAAwOoCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVy" + + "ZW5jZXMvaGVsbWZpbGUtc3RydWN0dXJlLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhADj5J6+5" + + "BwAAuQcAAD8ACQAAAAAAAAAAAAAAPRUDAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0" + + "aW9uL3JlZmVyZW5jZXMvbnZjZi11aS1hZGRvbi5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBL" + + "QjWoABYAAAAWAAA+AAkAAAAAAAAAAAAAAGwdAwBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + + "bGxhdGlvbi9yZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZFVUBQABAKbOElBLBQYAAAAAFwAXAK8J" + + "AADhMwMAAAA=" var ( skillDataOnce sync.Once diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index 9da51e617c..5da8db5fd6 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -695,7 +695,12 @@ func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namesp HumanLabel: "checking for stale NVCF namespaces…", Run: func(ctx context.Context) CheckResult { r := CheckResult{ID: id, Severity: "error"} - stale, err := prober(ctx, kubeContext, namespaces) + // Resolve the context before probing, then probe that exact name. + // Resolving afterwards leaves a window where the current-context + // changes in between, which would have the hints delete namespaces + // in a cluster other than the one that was read. + probedContext := effectiveKubeContext(kubeContext) + stale, err := prober(ctx, probedContext, namespaces) if err != nil { r.Severity = "warning" r.Message = "stale namespace probe failed: " + err.Error() @@ -718,13 +723,13 @@ func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namesp emptyShell = append(emptyShell, ns.Name) } } - // Every hint is pinned to the context that was actually probed. + // Every hint names the context that was actually probed, above. // In split mode the two callers pass different contexts, and with - // no context flag the probe followed the current-context at the - // time it ran. Either way the name is resolved and written into - // the command, because these hints delete namespaces and the - // current-context can change between reading this and pasting it. - kctl := "kubectl" + kubectlContextArg(effectiveKubeContext(kubeContext)) + // no context flag the probe followed the current-context. Either + // way the name goes into the command, because these hints delete + // namespaces and the current-context can change between reading + // the output and pasting it. + kctl := "kubectl" + kubectlContextArg(probedContext) var hints []string if len(terminating) > 0 { // spec.finalizers is writable only through the /finalize diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go index e0271db531..5a852b3867 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go @@ -364,3 +364,18 @@ func TestStaleNamespaceCheck_HintsOmitUnknownContext(t *testing.T) { r := staleNamespaceCheck(prober, "", []string{"nvcf"}).Run(context.Background()) assert.Contains(t, r.Message, "kubectl delete namespace nvcf") } + +// The probe must run against the same context the hints name. Resolving the +// current-context after probing leaves a window where it changes in between, +// which would have the delete hints target a cluster that was never read. +func TestStaleNamespaceCheck_ProbesTheResolvedContext(t *testing.T) { + pinCurrentKubeContext(t, "k3d-local") + var probed string + prober := func(_ context.Context, kctx string, _ []string) ([]StaleNamespace, error) { + probed = kctx + return nil, nil + } + staleNamespaceCheck(prober, "", []string{"nvcf"}).Run(context.Background()) + assert.Equal(t, "k3d-local", probed, + "the probe must target the resolved context, not whatever is current when it runs") +} From 13ddd00e144ff72c4e21f909ba1f2ed00014d4f1 Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 22 Sep 2026 15:41:04 +0530 Subject: [PATCH 31/55] fix(nvcf-cli): stop leaking the NGC key to mirrored registries and restore --pre coverage in split mode --- src/clis/nvcf-cli/cmd/self_hosted_check.go | 69 ++++++++++++--- .../nvcf-cli/cmd/self_hosted_check_test.go | 58 ++++++++++--- src/clis/nvcf-cli/go.mod | 4 +- .../internal/selfhosted/clustervalidator.go | 54 +++++++++--- .../selfhosted/clustervalidator_test.go | 83 ++++++++++++++++++- .../selfhosted/orchestrator_errors_test.go | 4 +- .../nvcf-cli/internal/selfhosted/preflight.go | 60 ++++++++++++-- .../internal/selfhosted/preflight_test.go | 32 +++++++ .../internal/selfhosted/pullsecret.go | 18 +++- .../internal/selfhosted/pullsecret_test.go | 47 +++++++++-- .../internal/selfhosted/registry_cred.go | 25 ++++-- .../internal/selfhosted/registry_cred_test.go | 50 ++++++++++- .../selfhosted/stale_namespace_test.go | 4 +- .../internal/selfhosted/validatortag.go | 6 +- .../internal/selfhosted/validatortag_test.go | 2 +- 15 files changed, 446 insertions(+), 70 deletions(-) diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index c87220f74e..f279e3bb91 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -143,8 +143,12 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { // one-shot stderr note up-front explaining why no validator row // appears in the output. Empty == not configured anywhere. // One image covers both roles (VALIDATOR_ROLE selects the check set). + // *IsVisited, matching the dispatch below. --pre in ModeSplit visits both + // clusters but targets neither role, so gating image resolution on + // *IsTargeted left the validator unresolved and both probes nil, with no + // note explaining why. anyValidatorIsTargeted := !localOnly && !skipClusterValidation && - (computePlaneIsTargeted(mode) || controlPlaneIsTargeted(mode)) + (computePlaneIsVisited(mode) || controlPlaneIsVisited(mode)) clusterValidatorImage := "" if anyValidatorIsTargeted { if img, ok := resolveClusterValidatorImage(c.Context()); ok { @@ -185,7 +189,7 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { // validator row" with "validator silently dropped". Print at most one // reason; --skip-cluster-validation takes precedence over missing // config since it's the explicit operator choice. - if !localOnly && (computePlaneIsTargeted(mode) || controlPlaneIsTargeted(mode)) { + if !localOnly && (computePlaneIsVisited(mode) || controlPlaneIsVisited(mode)) { switch { case skipClusterValidation: fmt.Fprintln(c.ErrOrStderr(), "note: cluster-validator skipped (--skip-cluster-validation)") @@ -320,9 +324,15 @@ func resolveStackValuesFile() string { } } - env := os.Getenv("HELMFILE_ENV") + // selfHostedEnv (--env, default "local"), not HELMFILE_ENV: that variable + // is only ever injected into the helmfile subprocess, so reading it here + // always returned "" and fell through to base.yaml. An operator whose + // local.yaml points global.image.registry at their mirror would get + // base.yaml's nvcr.io, and the preflight would credential-check a registry + // the install never pulls from. + env := strings.TrimSpace(selfHostedEnv) if env == "" { - env = "default" + env = "local" } names := []string{env + ".yaml", "base.yaml"} @@ -494,7 +504,9 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin skipInotify := checkSkipInotifyCheck || os.Getenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY") != "" var inotifyProber selfhosted.NodeInotifyProber - if computePlaneIsTargeted(mode) && !skipInotify { + // Visited, not targeted: the inotify limit is exactly what --pre exists to + // catch before NVCA bootstrap, so it must run for --pre in ModeSplit too. + if computePlaneIsVisited(mode) && !skipInotify { inotifyProber = newInotifyProberForSelfHosted() } @@ -509,7 +521,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin // still creates a ServiceAccount, cluster-wide ClusterRole/CRB, pull secret // and validator Job in the compute cluster. var clusterValidator selfhosted.ClusterValidator - if computePlaneIsTargeted(mode) && clusterValidatorImage != "" { + if computePlaneIsVisited(mode) && clusterValidatorImage != "" { clusterValidator = newClusterValidatorForSelfHosted() } @@ -526,7 +538,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin // clusterValidator is nil and keying off it would drop the control-plane // validator check from the run entirely. var cpClusterValidator selfhosted.ClusterValidator - if controlPlaneIsTargeted(mode) && clusterValidatorImage != "" { + if controlPlaneIsVisited(mode) && clusterValidatorImage != "" { cpClusterValidator = newClusterValidatorForSelfHosted() } @@ -588,19 +600,30 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin _ = eg.Wait() return append(cpResults, gpuResults...) - default: // ModeSingle — one cluster; run only the roles the flags target. + default: // ModeSingle - one cluster; run only the roles the flags target. var results []selfhosted.CheckResult // The stale-namespace probe goes to exactly one role. Both roles share // the cluster here, so handing it to both emits two check_completed // events with the same ID and loads the kubeconfig twice, which means a // second exec-credential-plugin prompt. + // + // The two roles probe disjoint namespace lists, so the skipped role's + // namespaces are merged into the surviving probe rather than dropped. + // Without that, a kai-scheduler or nvca-operator namespace wedged + // Terminating by a failed teardown reports "no stale NVCF namespaces + // detected" and the next install fails into it. staleForControlPlane := staleNSProber staleForComputePlane := staleNSProber + var cpExtraNamespaces, gpuExtraNamespaces []string if runControlPlane { staleForComputePlane = nil + cpExtraNamespaces = selfhosted.ComputePlaneStaleNamespaces( + localStackDir(selfHostedComputePlaneStack)) } else { staleForControlPlane = nil + gpuExtraNamespaces = selfhosted.ControlPlaneStaleNamespaces( + localStackDir(selfHostedControlPlaneStack)) } if runControlPlane { @@ -613,6 +636,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorRegistries: registries, StaleNamespaceProber: staleForControlPlane, StackDir: localStackDir(selfHostedControlPlaneStack), + ExtraStaleNamespaces: cpExtraNamespaces, } results = append(results, selfhosted.RunPreflightForRole(ctx, cpCfg, selfhosted.RoleControlPlane, cpRC, sink)...) @@ -627,6 +651,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, StaleNamespaceProber: staleForComputePlane, StackDir: localStackDir(selfHostedComputePlaneStack), + ExtraStaleNamespaces: gpuExtraNamespaces, } results = append(results, selfhosted.RunPreflightForRole(ctx, gpuCfg, selfhosted.RoleComputePlane, gpuRC, sink)...) @@ -652,17 +677,29 @@ func resolveClusterValidatorImage(ctx context.Context) (string, bool) { // emitCheckFinal emits a Final event with check-mode verdict fields derived // from the result slice. Called once per run (or once per wait-loop exit). func emitCheckFinal(ctx context.Context, sink progress.EventSink, results []selfhosted.CheckResult) { - var passed, failed int + // Success and FailedCount must agree with the process exit code, which is + // driven by anyFailed. Counting every non-pass as a failure made a + // warning-severity result emit success:false / verdict:failed while the + // process exited 0, so a CI gate on final.success broke for anyone whose + // registry credentials live in a Docker credential helper. "warnings" is + // already part of the documented Verdict vocabulary; it was never emitted. + var passed, failed, warned int for _, r := range results { - if r.Passed { + switch { + case r.Passed: passed++ - } else { + case isBlockingFailure(r): failed++ + default: + warned++ } } verdict := "ok" - if failed > 0 { + switch { + case failed > 0: verdict = "failed" + case warned > 0: + verdict = "warnings" } _ = sink.Emit(ctx, progress.Final{ Success: failed == 0, @@ -675,9 +712,15 @@ func emitCheckFinal(ctx context.Context, sink progress.EventSink, results []self // anyFailed returns true if any check failed at error severity. Warnings do // not trigger non-zero exit per spec §6.3. +// isBlockingFailure is the single definition of "this fails the run". Both the +// exit code and the JSON verdict derive from it, so they cannot disagree. +func isBlockingFailure(r selfhosted.CheckResult) bool { + return !r.Passed && r.Severity == selfhosted.SeverityError +} + func anyFailed(results []selfhosted.CheckResult) bool { for _, r := range results { - if !r.Passed && r.Severity == "error" { + if isBlockingFailure(r) { return true } } diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go index cca9e83dd9..f2f661d1f6 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go @@ -30,6 +30,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "nvcf-cli/internal/selfhosted" "nvcf-cli/internal/selfhosted/kubectx" "nvcf-cli/internal/selfhosted/progress" ) @@ -368,8 +369,8 @@ func TestComputePlaneIsTargeted(t *testing.T) { {"--compute-plane split", false, true, false, kubectx.ModeSplit, true}, {"--all single", false, false, true, kubectx.ModeSingle, true}, {"--all split", false, false, true, kubectx.ModeSplit, true}, - {"--pre single — implicit compute plane", true, false, false, kubectx.ModeSingle, true}, - {"--pre split — must not target compute plane", true, false, false, kubectx.ModeSplit, false}, + {"--pre single - implicit compute plane", true, false, false, kubectx.ModeSingle, true}, + {"--pre split - must not target compute plane", true, false, false, kubectx.ModeSplit, false}, {"--control-plane only", false, false, false, kubectx.ModeSingle, false}, {"no relevant flag", false, false, false, kubectx.ModeSingle, false}, } @@ -513,11 +514,11 @@ func TestCheck_ValidatorSkipNoteAppearsOnComputePlane(t *testing.T) { "expected skip note when compute plane is targeted and --skip-cluster-validation is set") } -// TestCheck_ValidatorSkipNoteAbsentForPreInSplitMode verifies that the -// "cluster-validator skipped" note does NOT appear when --pre is used in -// split mode, because the compute plane is not explicitly targeted and -// ModeSplit + --pre does not implicitly make either context the compute plane. -func TestCheck_ValidatorSkipNoteAbsentForPreInSplitMode(t *testing.T) { +// --pre in ModeSplit visits both clusters, so when the validator is skipped the +// operator must be told why. This previously asserted silence, which is the +// "no validator row vs validator silently dropped" confusion the note exists +// to prevent. +func TestCheck_ValidatorSkipNotePresentForPreInSplitMode(t *testing.T) { t.Cleanup(func() { selfHostedJSON = false selfHostedOutput = "text" @@ -539,13 +540,10 @@ func TestCheck_ValidatorSkipNoteAbsentForPreInSplitMode(t *testing.T) { }) _ = rootCmd.Execute() - assert.NotContains(t, stderr.String(), "cluster-validator skipped", - "skip note must not appear for --pre in split mode (compute plane not targeted)") + assert.Contains(t, stderr.String(), "cluster-validator skipped", + "--pre in split mode visits both clusters, so an explicit skip must be explained") } -// parseJSONLLines splits s into non-empty lines, skips any non-JSON lines -// (e.g. cobra error messages written to stderr), and unmarshals each JSON line -// as an object. Returns them in order. func parseJSONLLines(t *testing.T, s string) []map[string]any { t.Helper() var out []map[string]any @@ -676,3 +674,39 @@ func TestCheck_HostLocalChecksRunOnce(t *testing.T) { assert.Equal(t, 1, n, "check %s emitted %d times", id, n) } } + +// The JSON verdict and the exit code must derive from the same predicate. A +// warning-severity result previously emitted success:false / verdict:failed +// while the process exited 0, so a CI gate on final.success broke for every +// user whose registry credentials live in a Docker credential helper. +func TestEmitCheckFinal_WarningIsNotAFailure(t *testing.T) { + results := []selfhosted.CheckResult{ + {ID: "a", Passed: true, Severity: selfhosted.SeverityInfo}, + {ID: "b", Passed: false, Severity: selfhosted.SeverityWarning}, + } + assert.False(t, anyFailed(results), "a warning must not set the exit code") + + var buf bytes.Buffer + sink := progress.NewJSONLRenderer(&buf) + emitCheckFinal(context.Background(), sink, results) + + line := buf.String() + assert.Contains(t, line, `"verdict":"warnings"`) + assert.Contains(t, line, `"success":true`, + "success must agree with the exit code") + assert.Contains(t, line, `"failedCount":0`) +} + +func TestEmitCheckFinal_ErrorIsAFailure(t *testing.T) { + results := []selfhosted.CheckResult{ + {ID: "a", Passed: true, Severity: selfhosted.SeverityInfo}, + {ID: "b", Passed: false, Severity: selfhosted.SeverityError}, + } + assert.True(t, anyFailed(results)) + + var buf bytes.Buffer + sink := progress.NewJSONLRenderer(&buf) + emitCheckFinal(context.Background(), sink, results) + assert.Contains(t, buf.String(), `"verdict":"failed"`) + assert.Contains(t, buf.String(), `"success":false`) +} diff --git a/src/clis/nvcf-cli/go.mod b/src/clis/nvcf-cli/go.mod index 9a4c8d3d83..19cc5ea3ba 100644 --- a/src/clis/nvcf-cli/go.mod +++ b/src/clis/nvcf-cli/go.mod @@ -11,6 +11,7 @@ require ( github.com/charmbracelet/lipgloss v1.0.0 github.com/muesli/termenv v0.15.2 github.com/spf13/cobra v1.9.1 + github.com/spf13/pflag v1.0.6 github.com/spf13/viper v1.18.2 github.com/stretchr/testify v1.10.0 golang.org/x/oauth2 v0.27.0 @@ -23,6 +24,7 @@ require ( k8s.io/apiextensions-apiserver v0.34.1 k8s.io/apimachinery v0.34.1 k8s.io/client-go v0.34.1 + sigs.k8s.io/yaml v1.6.0 ) require ( @@ -68,7 +70,6 @@ require ( github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect - github.com/spf13/pflag v1.0.6 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/x448/float16 v0.8.4 // indirect go.uber.org/multierr v1.11.0 // indirect @@ -89,5 +90,4 @@ require ( sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect sigs.k8s.io/randfill v1.0.0 // indirect sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect - sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index f90b53a5cf..c31b66ec8c 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -146,8 +146,12 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image // under a pod that is still retrying its pull, which the kubelet then // reports as FailedToRetrieveImagePullSecret. Operator-supplied secrets via // the flag aren't labeled by us and are skipped. + // --no-cleanup is honoured here as it is for the RBAC below: an operator + // who keeps the Job for debugging and then re-runs the preserved pod would + // otherwise hit FailedToRetrieveImagePullSecret, the exact symptom the + // per-role secret scoping exists to prevent. defer func() { - if !podMayBeRunning { + if !noCleanup && !podMayBeRunning { sweepManagedPullSecrets(context.Background(), client, role) } }() @@ -159,25 +163,38 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image if err != nil { return ClusterValidatorResult{Err: err} } - if err := ensureClusterValidatorRBAC(vctx, client, role, runID); err != nil { - return ClusterValidatorResult{Err: fmt.Errorf("bootstrapping validator RBAC: %w", err)} - } - // Remove the ClusterRole and ClusterRoleBinding to minimize the window in - // which the elevated SA exists. When --no-cleanup is set the operator - // expects to inspect the Job, so the RBAC stays either way. + // Register the cleanup before the bootstrap, not after. ensureClusterValidatorRBAC + // creates three objects in sequence and returns on the first failure, so a + // kubeconfig that can create a ServiceAccount but not a cluster-scoped + // ClusterRole would otherwise abandon the ServiceAccount on every attempt. + // The names are per-run now, so nothing self-heals by reuse: under --wait + // that leaks one object per poll. The sweep is name-scoped and + // label-guarded, so running it when nothing was created is a no-op. defer func() { if !noCleanup && !podMayBeRunning { sweepClusterValidatorRBAC(context.Background(), client, role, runID) } }() + if err := ensureClusterValidatorRBAC(vctx, client, role, runID); err != nil { + return ClusterValidatorResult{Err: fmt.Errorf("bootstrapping validator RBAC: %w", err)} + } // For the control-plane role, create a ConfigMap with reachability // endpoints and enforcement config so the validator runs its configurable // checks. Best-effort: a failure here is logged but does not abort the - // run — the validator gracefully skips configurable checks when the + // run - the validator gracefully skips configurable checks when the // ConfigMap is absent. var configNote string if role == clusterValidatorControlPlaneRole { + // The ConfigMap is the one object this run creates that had no cleanup + // path, so it was left in the cluster forever. Same gating as the + // other sweeps: keep it when the pod may still read it, or when the + // operator asked to keep the run's artifacts. + defer func() { + if !noCleanup && !podMayBeRunning { + sweepClusterValidatorConfig(context.Background(), client) + } + }() if err := ensureClusterValidatorConfig(vctx, client, registries); err != nil { // Non-fatal: continue without the ConfigMap; the validator skips // configurable reachability and enforcement checks silently unless @@ -187,7 +204,12 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image } sweepOrphanClusterValidatorRBAC(vctx, client, orphanValidatorRBACTTL) - sweepPriorClusterValidatorJobs(vctx, client, role) + // Skipped under --no-cleanup: this runs before the new Job is created, so + // otherwise the next same-role run destroys the Job the operator asked to + // keep. The singleton guarantee is worth less than the artifact they kept. + if !noCleanup { + sweepPriorClusterValidatorJobs(vctx, client, role) + } jobName := fmt.Sprintf("%s-%d", clusterValidatorName, time.Now().UnixNano()) if _, err := client.BatchV1().Jobs(clusterValidatorNamespace).Create( @@ -617,7 +639,7 @@ func parseRegistryHostPort(s string) (host string, port int) { } h, p, err := net.SplitHostPort(s) if err != nil { - // No port present (e.g. "nvcr.io") — return the input as-is. + // No port present (e.g. "nvcr.io") - return the input as-is. return s, 443 } if p == "" { @@ -826,3 +848,15 @@ func kubectlLogsHint(kubeContext, jobName string) string { return fmt.Sprintf("kubectl%s logs -n %s job/%s --tail=-1", kubectlContextArg(kubeContext), clusterValidatorNamespace, jobName) } + +// sweepClusterValidatorConfig removes the network-checks ConfigMap this run +// created. Only ours: the name is a constant an operator could also be using, +// so the managed labels decide. Errors are swallowed, as with the other sweeps. +func sweepClusterValidatorConfig(ctx context.Context, client kubernetes.Interface) { + cms := client.CoreV1().ConfigMaps(clusterValidatorNamespace) + cm, err := cms.Get(ctx, clusterValidatorConfigName, metav1.GetOptions{}) + if err != nil || !hasValidatorManagedLabels(cm.Labels) { + return + } + _ = cms.Delete(ctx, clusterValidatorConfigName, deleteExactly(cm)) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index 3bcc2b9d0d..b04fb3a11f 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -122,6 +122,26 @@ func TestClusterValidatorCheck_OrchestratorErrorStaysWarning(t *testing.T) { assert.Contains(t, r.Message, "cluster-validator did not complete") } +// driveJobToSuccess wires the reactors that make a created Job reach a +// Succeeded terminal state, mirroring TestRunClusterValidator_HappyPath. +func driveJobToSuccess(client *fake.Clientset) { + var jobName atomic.Value + jobName.Store("") + client.PrependReactor("create", "jobs", func(action ktesting.Action) (bool, runtime.Object, error) { + job := action.(ktesting.CreateAction).GetObject().(*batchv1.Job) + jobName.Store(job.Name) + return false, nil, nil + }) + client.PrependReactor("get", "jobs", func(action ktesting.Action) (bool, runtime.Object, error) { + name := jobName.Load().(string) + if name == "" { + return false, nil, nil + } + return jobSucceededReactor(name)(action) + }) + client.PrependReactor("list", "pods", podListReactor("")) +} + func TestRunClusterValidator_HappyPath(t *testing.T) { client := fake.NewSimpleClientset() // Capture the Job name the runner picks, then drive Get/List reactors to @@ -624,7 +644,7 @@ func TestBuildControlPlaneValidatorConfig_WithExtras(t *testing.T) { } func TestBuildControlPlaneValidatorConfig_InvalidRegistrySkipped(t *testing.T) { - // A blank entry is parsed as host="" → skipped; only the valid entry appears. + // A blank entry is parsed as host="" -> skipped; only the valid entry appears. got := buildControlPlaneValidatorConfig([]string{" ", "valid.registry.internal:5000"}) assert.Contains(t, got, "valid.registry.internal", "valid registry must appear") // The blank entry must not add an empty host: line. @@ -639,9 +659,9 @@ func TestParseRegistryHostPort(t *testing.T) { }{ {"nvcr.io:443", "nvcr.io", 443}, {"harbor.company.internal:5000", "harbor.company.internal", 5000}, - {"registry.example.com", "registry.example.com", 443}, // no port → 443 - {"", "", 0}, // empty → skip - {" ", "", 0}, // blank → skip + {"registry.example.com", "registry.example.com", 443}, // no port -> 443 + {"", "", 0}, // empty -> skip + {" ", "", 0}, // blank -> skip // IPv6: net.SplitHostPort handles bracketed literals correctly. {"[::1]:5000", "::1", 5000}, {"[2001:db8::1]:443", "2001:db8::1", 443}, @@ -830,3 +850,58 @@ func TestSweepPriorClusterValidatorJobs_RequiresGeneratedName(t *testing.T) { _, err = jobs.Get(ctx, clusterValidatorName+"-9999999999", metav1.GetOptions{}) assert.NoError(t, err, "the other role's Job must survive") } + +// The network-checks ConfigMap was the one object a run created with no +// cleanup path, so it accumulated in the cluster forever. +func TestSweepClusterValidatorConfig_DeletesOwnAndSparesOperators(t *testing.T) { + managed := &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{ + Name: clusterValidatorConfigName, Namespace: clusterValidatorNamespace, + Labels: clusterValidatorLabels(), + }} + client := fake.NewSimpleClientset(managed) + sweepClusterValidatorConfig(context.Background(), client) + _, err := client.CoreV1().ConfigMaps(clusterValidatorNamespace).Get( + context.Background(), clusterValidatorConfigName, metav1.GetOptions{}) + assert.True(t, apierrors.IsNotFound(err), "our own ConfigMap must be reclaimed") + + // Same name, operator-owned: the name is a constant they could also use. + operator := &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{ + Name: clusterValidatorConfigName, Namespace: clusterValidatorNamespace, + Labels: map[string]string{"owner": "operator"}, + }} + client2 := fake.NewSimpleClientset(operator) + sweepClusterValidatorConfig(context.Background(), client2) + _, err = client2.CoreV1().ConfigMaps(clusterValidatorNamespace).Get( + context.Background(), clusterValidatorConfigName, metav1.GetOptions{}) + assert.NoError(t, err, "an unmanaged ConfigMap with the same name must survive") +} + +// --no-cleanup must preserve the whole run, not just the Job: an operator who +// keeps the Job and re-runs the pod needs its pull secret to still exist. +func TestRunClusterValidator_NoCleanupKeepsPullSecretAndPriorJob(t *testing.T) { + prior := &batchv1.Job{ObjectMeta: metav1.ObjectMeta{ + Name: clusterValidatorName + "-earlier", Namespace: clusterValidatorNamespace, + Labels: clusterValidatorRoleLabels(clusterValidatorControlPlaneRole), + }} + secret := &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: validatorPullSecretRoleName(clusterValidatorControlPlaneRole), + Namespace: clusterValidatorNamespace, + Labels: clusterValidatorRoleLabels(clusterValidatorControlPlaneRole), + }, + Type: corev1.SecretTypeDockerConfigJson, + } + client := fake.NewSimpleClientset(prior, secret) + driveJobToSuccess(client) + + runClusterValidator(context.Background(), client, "nvcr.io/x/validator:1", + "", true /* noCleanup */, clusterValidatorControlPlaneRole, nil) + + _, err := client.BatchV1().Jobs(clusterValidatorNamespace).Get( + context.Background(), prior.Name, metav1.GetOptions{}) + assert.NoError(t, err, "--no-cleanup must not destroy a deliberately preserved Job") + + _, err = client.CoreV1().Secrets(clusterValidatorNamespace).Get( + context.Background(), secret.Name, metav1.GetOptions{}) + assert.NoError(t, err, "--no-cleanup must keep the pull secret the preserved pod needs") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/orchestrator_errors_test.go b/src/clis/nvcf-cli/internal/selfhosted/orchestrator_errors_test.go index 5a1df7f0b7..1bd771a614 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/orchestrator_errors_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/orchestrator_errors_test.go @@ -423,8 +423,8 @@ func TestRetryAfterFromError_Parsing(t *testing.T) { {"Retry-After: 120s", 120}, {"retry-after: 5", 5}, {"no header here", 5}, // default - {"Retry-After: ", 5}, // no digits → default - {"Retry-After: 0", 5}, // zero → default + {"Retry-After: ", 5}, // no digits -> default + {"Retry-After: 0", 5}, // zero -> default {"Retry-After: 300 ok", 300}, // stops at first non-digit } for _, tc := range cases { diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index 5da8db5fd6..dc91752c4a 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -45,6 +45,15 @@ const ( binaryVersionMessage = "%s %s on PATH (%s required)" ) +// Severity values for CheckResult. Typed constants rather than bare strings: +// a typo'd "Error" silently downgraded a hard failure to a warning, and the +// exit code keys off an exact match. +const ( + SeverityInfo = "info" + SeverityWarning = "warning" + SeverityError = "error" +) + // One row in the linkerd-style output. Logs is internal-only and is not // forwarded into the CheckCompleted JSONL wire event, so it never leaks // into the stable JSON contract. @@ -318,6 +327,14 @@ type RoleConfig struct { // so the check follows the stack instead of drifting from it. StackDir string + // ExtraStaleNamespaces are merged into this role's stale-namespace scan. + // In ModeSingle both roles share one cluster, so only one of them runs the + // probe to avoid emitting the same check ID twice; the other role's + // namespaces are passed here instead of being dropped. The two roles probe + // disjoint lists, so without this the skipped role's namespaces are never + // scanned on the one topology where they sit on the same cluster. + ExtraStaleNamespaces []string + // ClusterValidatorRegistries is an optional list of "host:port" registry // endpoints added to the control-plane validator ConfigMap alongside the // built-in nvcr.io probe. Ignored for the compute-plane validator. @@ -351,7 +368,7 @@ func buildCategories(cfg PreflightConfig, role Role, rc RoleConfig) []categorySp out = append(out, *local) } - // Registry credential check runs from the operator's machine — no cluster + // Registry credential check runs from the operator's machine - no cluster // contact needed. RunPreflightForRole is called once per role, so the // caller clears Registries on every role but one to avoid duplicate // check_started/check_completed events. Deduplicating on the role here @@ -412,7 +429,8 @@ func controlPlaneCheckCategory(rc RoleConfig) categorySpec { if rc.StaleNamespaceProber != nil { cat.checks = append(cat.checks, staleNamespaceCheck(rc.StaleNamespaceProber, rc.KubeContext, - resolveStackNamespaces(rc.StackDir, nvcfControlPlaneNamespaces))) + mergeNamespaces(resolveStackNamespaces(rc.StackDir, nvcfControlPlaneNamespaces), + rc.ExtraStaleNamespaces))) } // Containerized cluster-validator probe for control-plane checks // (Gateway API CRDs, Envoy Gateway, StorageClass, external LB, @@ -448,7 +466,8 @@ func computePlaneCheckCategory(rc RoleConfig) categorySpec { if rc.StaleNamespaceProber != nil { cat.checks = append([]binaryCheckSpec{ staleNamespaceCheck(rc.StaleNamespaceProber, rc.KubeContext, - resolveStackNamespaces(rc.StackDir, nvcfComputePlaneNamespaces)), + mergeNamespaces(resolveStackNamespaces(rc.StackDir, nvcfComputePlaneNamespaces), + rc.ExtraStaleNamespaces)), }, cat.checks...) } if rc.SISURL != "" { @@ -648,7 +667,7 @@ func registryCredentialCheck(checker RegistryCredentialChecker, entry RegistryEn } return binaryCheckSpec{ ID: id, - HumanLabel: fmt.Sprintf("checking credentials for %s…", entry.Registry), + HumanLabel: fmt.Sprintf("checking credentials for %s...", entry.Registry), Run: func(ctx context.Context) CheckResult { r := CheckResult{ ID: id, @@ -688,11 +707,31 @@ func registryCredentialCheck(checker RegistryCredentialChecker, entry RegistryEn // staleNamespaceCheck detects NVCF namespaces stuck Terminating or left as // empty shells after a partial teardown. Severity is error; prober errors // degrade to warning so transient kubeconfig issues don't falsely fail. +// mergeNamespaces returns the union of two namespace lists, order-stable and +// de-duplicated. +func mergeNamespaces(base, extra []string) []string { + if len(extra) == 0 { + return base + } + seen := make(map[string]bool, len(base)+len(extra)) + out := make([]string, 0, len(base)+len(extra)) + for _, list := range [][]string{base, extra} { + for _, ns := range list { + if ns == "" || seen[ns] { + continue + } + seen[ns] = true + out = append(out, ns) + } + } + return out +} + func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namespaces []string) binaryCheckSpec { const id = "stale-namespaces" return binaryCheckSpec{ ID: id, - HumanLabel: "checking for stale NVCF namespaces…", + HumanLabel: "checking for stale NVCF namespaces...", Run: func(ctx context.Context) CheckResult { r := CheckResult{ID: id, Severity: "error"} // Resolve the context before probing, then probe that exact name. @@ -928,3 +967,14 @@ func (*noopSink) Close() error { return nil } func RunPreflight(ctx context.Context, cfg PreflightConfig) []CheckResult { return RunPreflightStreaming(ctx, cfg, &noopSink{}) } + +// ControlPlaneStaleNamespaces and ComputePlaneStaleNamespaces expose each +// role's stale-namespace list so the cmd layer can merge the two when a single +// cluster hosts both roles and only one probe runs. +func ControlPlaneStaleNamespaces(stackDir string) []string { + return resolveStackNamespaces(stackDir, nvcfControlPlaneNamespaces) +} + +func ComputePlaneStaleNamespaces(stackDir string) []string { + return resolveStackNamespaces(stackDir, nvcfComputePlaneNamespaces) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight_test.go b/src/clis/nvcf-cli/internal/selfhosted/preflight_test.go index 93dee7b253..862d6bc591 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight_test.go @@ -670,3 +670,35 @@ func TestParseInotifyOutput(t *testing.T) { require.Error(t, err) }) } + +// In ModeSingle one cluster hosts both roles and only one stale-namespace +// probe runs, so the skipped role's namespaces must be merged in. Dropping +// them means a kai-scheduler or nvca-operator namespace wedged Terminating is +// reported as "no stale NVCF namespaces detected". +func TestStaleNamespaceCheck_MergesTheOtherRolesNamespaces(t *testing.T) { + var probed []string + prober := func(_ context.Context, _ string, namespaces []string) ([]StaleNamespace, error) { + probed = namespaces + return nil, nil + } + rc := RoleConfig{ + StaleNamespaceProber: prober, + ExtraStaleNamespaces: ComputePlaneStaleNamespaces(""), + } + cat := controlPlaneCheckCategory(rc) + require.NotEmpty(t, cat.checks) + cat.checks[0].Run(context.Background()) + + for _, ns := range []string{"nvcf", "vault-system"} { + assert.Contains(t, probed, ns, "the control-plane list must still be covered") + } + for _, ns := range []string{"nvca-operator", "kai-scheduler"} { + assert.Contains(t, probed, ns, "the compute-plane list must be merged in, not dropped") + } +} + +func TestMergeNamespaces_DedupesAndKeepsOrder(t *testing.T) { + got := mergeNamespaces([]string{"a", "b"}, []string{"b", "c", ""}) + assert.Equal(t, []string{"a", "b", "c"}, got) + assert.Nil(t, mergeNamespaces(nil, nil)) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go index e9c17d4f8d..08d75b0c44 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go @@ -38,10 +38,15 @@ import ( // preconditions the delete lands on whatever holds the name by then; with them // the apiserver rejects it as a conflict instead. func deleteExactly(o metav1.Object) metav1.DeleteOptions { + // UID only. UID already pins identity, which is the whole goal: a + // delete-and-recreate under the same name changes it. ResourceVersion + // additionally pins the object's version, so any concurrent write turns + // the delete into a 409 that every sweep then swallows. That bites hardest + // on the singleton Job sweep, whose only target is an active Job whose + // .status the Job controller mutates continuously. uid := o.GetUID() - rv := o.GetResourceVersion() return metav1.DeleteOptions{ - Preconditions: &metav1.Preconditions{UID: &uid, ResourceVersion: &rv}, + Preconditions: &metav1.Preconditions{UID: &uid}, } } @@ -211,6 +216,15 @@ func autoCreatePullSecretFromEnv(ctx context.Context, client kubernetes.Interfac if apiKey == "" { return "", nil } + // Only ever hand the NGC key to NGC. Without this an operator who mirrors + // the validator image to ghcr.io or a corporate Harbor and still exports + // NGC_API_KEY gets it written as that registry's password, and the kubelet + // then sends the live key to a third party as HTTP Basic auth, where it + // lands in their access logs. The local probe already guards this the same + // way; the Secret path did not. + if !isNGCRegistry(registry) { + return "", nil + } cfg, err := buildDockerConfigJSON(registry, "$oauthtoken", apiKey) if err != nil { return "", fmt.Errorf("encode dockerconfigjson for %s: %w", registry, err) diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go index e60e908d0d..e989714027 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go @@ -333,13 +333,13 @@ func TestAutoCreatePullSecretFromEnv_KeyPresent(t *testing.T) { t.Setenv("NGC_API_KEY", "nvapi-test-123") client := fake.NewSimpleClientset() - got, err := autoCreatePullSecretFromEnv(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole) + got, err := autoCreatePullSecretFromEnv(context.Background(), client, "nvcr.io", clusterValidatorControlPlaneRole) require.NoError(t, err) assert.Equal(t, validatorPullSecretRoleName(clusterValidatorControlPlaneRole), got) s, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretRoleName(clusterValidatorControlPlaneRole), metav1.GetOptions{}) require.NoError(t, err) - assert.True(t, dockerConfigHasRegistry(s.Data[corev1.DockerConfigJsonKey], "private.registry.test"), + assert.True(t, dockerConfigHasRegistry(s.Data[corev1.DockerConfigJsonKey], "nvcr.io"), "minted secret must contain auth for the validator image's registry") } @@ -384,13 +384,28 @@ func TestResolveValidatorPullSecret_EnvFallback(t *testing.T) { t.Setenv("NVCF_NGC_API_KEY", "nvapi-fallback") client := fake.NewSimpleClientset() - got, err := resolveValidatorPullSecret(context.Background(), client, "", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole) + got, err := resolveValidatorPullSecret(context.Background(), client, "", "nvcr.io/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole) require.NoError(t, err) assert.Equal(t, validatorPullSecretRoleName(clusterValidatorControlPlaneRole), got) s, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretRoleName(clusterValidatorControlPlaneRole), metav1.GetOptions{}) require.NoError(t, err) - assert.True(t, dockerConfigHasRegistry(s.Data[corev1.DockerConfigJsonKey], "private.registry.test")) + assert.True(t, dockerConfigHasRegistry(s.Data[corev1.DockerConfigJsonKey], "nvcr.io")) +} + +// A mirrored validator image must not receive the NGC key via the env +// fallback: the kubelet would send it to that registry as Basic auth. +func TestResolveValidatorPullSecret_EnvFallbackRefusesMirroredRegistry(t *testing.T) { + for _, name := range ngcAPIKeyEnvNames { + t.Setenv(name, "") + } + t.Setenv("NVCF_NGC_API_KEY", "nvapi-fallback") + client := fake.NewSimpleClientset() + + got, err := resolveValidatorPullSecret(context.Background(), client, "", + "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole) + require.NoError(t, err) + assert.Empty(t, got, "no secret may be minted for a non-NGC registry") } func TestResolveValidatorPullSecret_AllEmpty(t *testing.T) { @@ -588,9 +603,10 @@ func TestWriteDockerConfigSecret_TypeMismatchDeletePinsTheInspectedObject(t *tes require.NotNil(t, opts.Preconditions, "delete must carry preconditions") require.NotNil(t, opts.Preconditions.UID) - require.NotNil(t, opts.Preconditions.ResourceVersion) assert.Equal(t, existing.UID, *opts.Preconditions.UID) - assert.Equal(t, existing.ResourceVersion, *opts.Preconditions.ResourceVersion) + assert.Nil(t, opts.Preconditions.ResourceVersion, + "UID alone pins identity; pinning ResourceVersion turns any concurrent "+ + "write into a 409 that the sweeps swallow") } // A conflict means the object changed after the ownership check, so the run @@ -623,3 +639,22 @@ func TestWriteDockerConfigSecret_TypeMismatchStopsOnDeleteConflict(t *testing.T) require.Error(t, err, "a changed object must abort the replace") assert.False(t, created, "must not create over an object that was never vetted") } + +// NGC_API_KEY must never be minted as the password for a registry that is not +// NGC. An operator who mirrors the validator image to ghcr.io or a corporate +// Harbor and still exports NGC_API_KEY would otherwise have the kubelet send +// the live key to a third party as HTTP Basic auth. +func TestAutoCreatePullSecretFromEnv_RefusesNonNGCRegistry(t *testing.T) { + t.Setenv("NGC_API_KEY", "nvapi-secret-value") + client := fake.NewSimpleClientset() + + name, err := autoCreatePullSecretFromEnv(context.Background(), client, + "ghcr.io", clusterValidatorControlPlaneRole) + require.NoError(t, err) + assert.Empty(t, name, "no secret may be minted for a non-NGC registry") + + secrets, err := client.CoreV1().Secrets(clusterValidatorNamespace).List( + context.Background(), metav1.ListOptions{}) + require.NoError(t, err) + assert.Empty(t, secrets.Items, "the NGC key must not reach a third-party registry") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go index 354dd47d15..debfb1863e 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go @@ -122,7 +122,7 @@ func probeRegistryCredential(ctx context.Context, registry, repoHint string, cri } return requireConfiguredCredentials(registry) case http.StatusUnauthorized: - // Auth required — proceed with token exchange. + // Auth required - proceed with token exchange. default: resp.Body.Close() return fmt.Errorf("unexpected status %s from %s", resp.Status, registry) @@ -147,7 +147,7 @@ func probeRegistryCredential(ctx context.Context, registry, repoHint string, cri _, err = exchangeBearerToken(pctx, client, registry, repoHint, wwwAuth) if err != nil { // Use credentialsForRegistry (not ngcCredentials) so NGC_API_KEY does - // not masquerade as credentials for quay.io, GHCR, or Harbor — those + // not masquerade as credentials for quay.io, GHCR, or Harbor - those // registries reject NGC tokens, which would wrongly produce "credentials // rejected" when the real diagnosis is "no credentials configured." if _, _, hasCreds := credentialsForRegistry(registry); !hasCreds { @@ -245,13 +245,23 @@ func EnumerateRegistries(imageRef, stackValuesFile string, extras []string) []Re if registry == "" || seen[registry] { return } + // Every source goes through the same host validation. The probe builds + // "https://" + registry + "/v2/", so a value carrying "/" or "@" moves + // the host: global.image.registry set to "nvcr.io@attacker.example.com" + // in a values file the CLI finds by walking up from CWD would otherwise + // aim an outbound request wherever that names. Extras were guarded via + // parseRegistryHostPort; the image ref and the values file were not. + if !isBareRegistryHost(strings.TrimSuffix(strings.TrimPrefix(registry, "["), "]")) && + !isBareRegistryHost(registry) { + return + } seen[registry] = true out = append(out, RegistryEntry{Registry: registry, RepoHint: repoHint, Critical: critical}) } // Source 1: base registry from the configured validator image. // Carry the repo path as a scope hint so the token exchange uses the - // operator's actual org rather than a fake one — NGC returns 403 for + // operator's actual org rather than a fake one - NGC returns 403 for // orgs the API key cannot access, even if the key itself is valid. // // Critical follows the same rule as every other source rather than being @@ -296,8 +306,13 @@ func EnumerateRegistries(imageRef, stackValuesFile string, extras []string) []Re reg := host if port != 0 && port != 443 { reg = net.JoinHostPort(host, strconv.Itoa(port)) - } else if strings.Contains(host, ":") { - reg = "[" + host + "]" // bare IPv6 literal on the default port + } else if strings.Contains(host, ":") && !strings.HasPrefix(host, "[") { + // Bare IPv6 literal on the default port. parseRegistryHostPort + // returns the input verbatim when SplitHostPort fails, and it + // fails on an already-bracketed "[fd00::1]" with missingPort, so + // without the prefix guard that arrives here still bracketed and + // becomes "[[fd00::1]]", which is not a parseable URL host. + reg = "[" + host + "]" } add(reg, "", false) } diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go index a173aa284e..be9b35b494 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go @@ -34,7 +34,7 @@ import ( // -- probeRegistryCredential -- func TestProbeRegistryCredential_PublicRegistry(t *testing.T) { - // Registry returns 200 on /v2/ with the registry API header → public, + // Registry returns 200 on /v2/ with the registry API header -> public, // no credentials needed. srv := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Docker-Distribution-Api-Version", "registry/2.0") @@ -88,7 +88,7 @@ func TestProbeRegistryCredential_AuthSucceeds(t *testing.T) { } func TestProbeRegistryCredential_AuthFails(t *testing.T) { - // Registry returns 401 but the token endpoint returns 401 too → bad credentials. + // Registry returns 401 but the token endpoint returns 401 too -> bad credentials. tokenSrv := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusUnauthorized) })) @@ -179,7 +179,7 @@ func TestEnumerateRegistries_ExtrasAppended(t *testing.T) { } func TestEnumerateRegistries_NoDuplicates(t *testing.T) { - // Pass nvcr.io both as the image registry and as an extra — must not dedup. + // Pass nvcr.io both as the image registry and as an extra - must not dedup. entries := EnumerateRegistries("nvcr.io/some/image:1.0", "", []string{"nvcr.io"}) @@ -384,3 +384,47 @@ func TestEnumerateRegistries_FallbackDoesNotDuplicateNamedNGC(t *testing.T) { } assert.Equal(t, 1, n, "nvcr.io must appear exactly once") } + +// parseRegistryHostPort returns its input verbatim when SplitHostPort fails, +// and it fails on an already-bracketed literal with missingPort. Without a +// prefix guard that arrives here still bracketed and becomes "[[fd00::1]]", +// which http.NewRequest rejects. The documented bracketed form must work. +func TestEnumerateRegistries_DoesNotDoubleBracketIPv6(t *testing.T) { + for _, in := range []string{"[fd00::1]", "fd00::1"} { + got := EnumerateRegistries("", "", []string{in}) + var found string + for _, e := range got { + if strings.Contains(e.Registry, "fd00") { + found = e.Registry + } + } + assert.Equal(t, "[fd00::1]", found, "input %q must yield a singly-bracketed host", in) + } +} + +func TestEnumerateRegistries_KeepsBracketedIPv6WithPort(t *testing.T) { + got := EnumerateRegistries("", "", []string{"[fd00::1]:5000"}) + var found string + for _, e := range got { + if strings.Contains(e.Registry, "fd00") { + found = e.Registry + } + } + assert.Equal(t, "[fd00::1]:5000", found) +} + +// The probe builds "https://" + registry + "/v2/", so a registry string that +// carries "/" or "@" moves the host. A values file the CLI finds by walking up +// from CWD must not be able to aim an outbound request. +func TestEnumerateRegistries_RejectsHostMovingRegistryStrings(t *testing.T) { + dir := t.TempDir() + values := filepath.Join(dir, "base.yaml") + require.NoError(t, os.WriteFile(values, + []byte("global:\n image:\n registry: nvcr.io@attacker.example.com\n"), 0o600)) + + for _, e := range EnumerateRegistries("nvcr.io@evil.test/x/y:1", values, nil) { + assert.NotContains(t, e.Registry, "@", "a host-moving string must not be probed") + assert.NotContains(t, e.Registry, "attacker.example.com") + assert.NotContains(t, e.Registry, "evil.test") + } +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go index 5a852b3867..3276f2d971 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go @@ -70,7 +70,7 @@ func TestProbeStaleNamespaces_TerminatingIsByPhase(t *testing.T) { } func TestProbeStaleNamespaces_EmptyShellNoHelmSecrets(t *testing.T) { - // Namespace exists and is Active but holds no Helm release secrets → + // Namespace exists and is Active but holds no Helm release secrets -> // leftover empty shell from a partial helm uninstall. client := fake.NewSimpleClientset(&corev1.Namespace{ ObjectMeta: metav1.ObjectMeta{Name: "nvcf"}, @@ -84,7 +84,7 @@ func TestProbeStaleNamespaces_EmptyShellNoHelmSecrets(t *testing.T) { } func TestProbeStaleNamespaces_HealthyReleaseNotStale(t *testing.T) { - // Namespace exists and carries an owner=helm secret → active Helm release, + // Namespace exists and carries an owner=helm secret -> active Helm release, // not stale. client := fake.NewSimpleClientset( &corev1.Namespace{ diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go index 7029581ab4..f608623a4a 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go @@ -205,7 +205,7 @@ func exchangeBearerToken(ctx context.Context, client *http.Client, registry, rep realm, service, scope := parseWWWAuthenticate(wwwAuthenticate) if realm == "" { - // No parseable WWW-Authenticate — use NGC's /proxy_auth as fallback. + // No parseable WWW-Authenticate - use NGC's /proxy_auth as fallback. return exchangeNGCBearerToken(ctx, client, registry, repo) } @@ -252,7 +252,7 @@ func exchangeBearerToken(ctx context.Context, client *http.Client, registry, rep // Use scope from the WWW-Authenticate header when present. // When scope is empty and a repo is provided, synthesize the standard // pull scope. When neither is present (credential probe, no specific - // repo needed), omit scope entirely — most registries issue a valid + // repo needed), omit scope entirely - most registries issue a valid // token and the absence of a resource scope avoids org-level 403s for // non-existent repositories. if scope == "" && repo != "" { @@ -269,7 +269,7 @@ func exchangeBearerToken(ctx context.Context, client *http.Client, registry, rep } // Add credentials when present. Docker config covers any registry; // NGC API key is only applicable to NGC-hosted registries. - // Critically: do NOT apply NGC_API_KEY to non-NGC registries — quay.io, + // Critically: do NOT apply NGC_API_KEY to non-NGC registries - quay.io, // GHCR, and Harbor will reject it, producing a misleading "credentials // rejected" error when the real situation is "no credentials configured." if user, pass, ok := credentialsForRegistry(registry); ok { diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go index d528c4a174..f1dafeb95d 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go @@ -277,7 +277,7 @@ func TestParseWWWAuthenticate_GHCR(t *testing.T) { } func TestParseWWWAuthenticate_NoBearer(t *testing.T) { - // Basic auth challenge — should return empty strings. + // Basic auth challenge - should return empty strings. realm, service, scope := parseWWWAuthenticate(`Basic realm="My Registry"`) assert.Empty(t, realm) assert.Empty(t, service) From bb0d56b73bc39e02de2a83f8b2c62283eab68a8b Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 22 Sep 2026 16:21:00 +0530 Subject: [PATCH 32/55] fix(nvcf-cli): scope pull-secret adoption per role and stop the stale-namespace check deleting healthy namespaces --- src/clis/nvcf-cli/cmd/self_hosted_check.go | 37 +++--- .../nvcf-cli/cmd/self_hosted_check_test.go | 8 +- src/clis/nvcf-cli/cmd/self_hosted_up.go | 22 ++-- .../nvcf-cli/internal/selfhosted/BUILD.bazel | 1 + .../internal/selfhosted/clustervalidator.go | 67 +++++++++- .../selfhosted/clustervalidator_test.go | 117 ++++++++---------- .../nvcf-cli/internal/selfhosted/preflight.go | 27 ++-- .../internal/selfhosted/pullsecret.go | 33 +++-- .../internal/selfhosted/pullsecret_test.go | 60 +++++++++ .../nvcf-cli/internal/selfhosted/register.go | 12 +- .../internal/selfhosted/stack_namespaces.go | 28 +++-- .../selfhosted/stack_namespaces_test.go | 34 ++++- .../internal/selfhosted/stale_namespace.go | 19 ++- .../selfhosted/stale_namespace_test.go | 90 ++++++++++++-- .../internal/selfhosted/validatortag.go | 24 ++-- 15 files changed, 422 insertions(+), 157 deletions(-) diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index f279e3bb91..f400339f1c 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -148,7 +148,7 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { // *IsTargeted left the validator unresolved and both probes nil, with no // note explaining why. anyValidatorIsTargeted := !localOnly && !skipClusterValidation && - (computePlaneIsVisited(mode) || controlPlaneIsVisited(mode)) + (computePlaneIsVisited() || controlPlaneIsVisited()) clusterValidatorImage := "" if anyValidatorIsTargeted { if img, ok := resolveClusterValidatorImage(c.Context()); ok { @@ -189,7 +189,7 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { // validator row" with "validator silently dropped". Print at most one // reason; --skip-cluster-validation takes precedence over missing // config since it's the explicit operator choice. - if !localOnly && (computePlaneIsVisited(mode) || controlPlaneIsVisited(mode)) { + if !localOnly && (computePlaneIsVisited() || controlPlaneIsVisited()) { switch { case skipClusterValidation: fmt.Fprintln(c.ErrOrStderr(), "note: cluster-validator skipped (--skip-cluster-validation)") @@ -406,14 +406,17 @@ func controlPlaneIsTargeted(mode kubectx.Mode) bool { // which is broader than whether its role-specific check set runs. --pre in // ModeSplit visits both clusters for the shared pre-install checks (stale // namespaces) without targeting either role, so the targeting predicates alone -// cannot gate the dispatch. In ModeSingle --pre already targets both roles and -// these are equivalent to their *IsTargeted counterparts. -func computePlaneIsVisited(mode kubectx.Mode) bool { - return computePlaneIsTargeted(mode) || checkPre +// cannot gate the dispatch. +// +// No mode parameter, unlike *IsTargeted: "(X || (pre && single)) || pre" +// absorbs to "X || pre", so the mode cannot change the answer. Taking one +// would imply a mode-dependence that does not exist. +func computePlaneIsVisited() bool { + return checkComputePlane || checkAll || checkPre } -func controlPlaneIsVisited(mode kubectx.Mode) bool { - return controlPlaneIsTargeted(mode) || checkPre +func controlPlaneIsVisited() bool { + return checkControlPlane || checkAll || checkPre } // withoutHostLocalChecks returns a copy of cfg with the inputs for the checks @@ -506,7 +509,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin var inotifyProber selfhosted.NodeInotifyProber // Visited, not targeted: the inotify limit is exactly what --pre exists to // catch before NVCA bootstrap, so it must run for --pre in ModeSplit too. - if computePlaneIsVisited(mode) && !skipInotify { + if computePlaneIsVisited() && !skipInotify { inotifyProber = newInotifyProberForSelfHosted() } @@ -521,7 +524,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin // still creates a ServiceAccount, cluster-wide ClusterRole/CRB, pull secret // and validator Job in the compute cluster. var clusterValidator selfhosted.ClusterValidator - if computePlaneIsVisited(mode) && clusterValidatorImage != "" { + if computePlaneIsVisited() && clusterValidatorImage != "" { clusterValidator = newClusterValidatorForSelfHosted() } @@ -538,7 +541,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin // clusterValidator is nil and keying off it would drop the control-plane // validator check from the run entirely. var cpClusterValidator selfhosted.ClusterValidator - if controlPlaneIsVisited(mode) && clusterValidatorImage != "" { + if controlPlaneIsVisited() && clusterValidatorImage != "" { cpClusterValidator = newClusterValidatorForSelfHosted() } @@ -546,8 +549,8 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin // operator's machine, so they belong to one invocation only. The control // plane carries them when it runs; otherwise the compute plane does, so // neither is silently dropped by a compute-plane-only invocation. - runControlPlane := controlPlaneIsVisited(mode) - runComputePlane := computePlaneIsVisited(mode) + runControlPlane := controlPlaneIsVisited() + runComputePlane := computePlaneIsVisited() cpCfg, gpuCfg := cfg, cfg if runControlPlane { gpuCfg = withoutHostLocalChecks(cfg) @@ -710,14 +713,14 @@ func emitCheckFinal(ctx context.Context, sink progress.EventSink, results []self }) } -// anyFailed returns true if any check failed at error severity. Warnings do -// not trigger non-zero exit per spec §6.3. -// isBlockingFailure is the single definition of "this fails the run". Both the -// exit code and the JSON verdict derive from it, so they cannot disagree. func isBlockingFailure(r selfhosted.CheckResult) bool { return !r.Passed && r.Severity == selfhosted.SeverityError } +// anyFailed returns true if any check failed at error severity. Warnings do +// not trigger non-zero exit per spec §6.3. +// isBlockingFailure is the single definition of "this fails the run". Both the +// exit code and the JSON verdict derive from it, so they cannot disagree. func anyFailed(results []selfhosted.CheckResult) bool { for _, r := range results { if isBlockingFailure(r) { diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go index f2f661d1f6..46e0d312b6 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go @@ -566,6 +566,10 @@ func parseJSONLLines(t *testing.T, s string) []map[string]any { // the targeting predicates: --pre in ModeSplit visits both clusters for the // shared pre-install checks without targeting either role. Gating the split // dispatch on the targeting predicates alone would make --pre a no-op there. +// +// The mode column is kept to document that the answer is the same in both +// modes: the predicate is mode-independent by absorption, so a table that +// varied only the mode would be asserting a dependence that does not exist. func TestPlaneIsVisited(t *testing.T) { t.Cleanup(func() { checkPre = false @@ -593,8 +597,8 @@ func TestPlaneIsVisited(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { checkPre, checkControlPlane, checkComputePlane, checkAll = tt.pre, tt.cp, tt.gpu, tt.all - assert.Equal(t, tt.wantCP, controlPlaneIsVisited(tt.mode)) - assert.Equal(t, tt.wantComputeGP, computePlaneIsVisited(tt.mode)) + assert.Equal(t, tt.wantCP, controlPlaneIsVisited()) + assert.Equal(t, tt.wantComputeGP, computePlaneIsVisited()) }) } } diff --git a/src/clis/nvcf-cli/cmd/self_hosted_up.go b/src/clis/nvcf-cli/cmd/self_hosted_up.go index d9b3f9f9e4..681da61272 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_up.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_up.go @@ -1507,6 +1507,17 @@ func kubectxFor(phaseNum int) string { } } +type registerValuesWriteRequest struct { + StackPath string + ClusterName string + NCAID string + Region string + IdentitySource string + ClusterID string + ClusterGroupID string + Endpoints registerEndpointValues +} + // writeRegisterValuesYAML persists the helm values handoff file the worker-layer // helmfile expects at /out/-register-values.yaml. Schema mirrors // `printRegistrationOutput` (cmd/cluster_registration.go, fixed in `ff9aaf7`): @@ -1519,17 +1530,6 @@ func kubectxFor(phaseNum int) string { // The pre-`ff9aaf7` shape (nested `selfManaged.clusterId`, lowercase-d) left // the chart's `.Values.clusterID` empty → cluster-dto.yaml rendered with empty // IDs → operator failed to fetch backend identity. (Iter #12 from dev-VM E2E.) -type registerValuesWriteRequest struct { - StackPath string - ClusterName string - NCAID string - Region string - IdentitySource string - ClusterID string - ClusterGroupID string - Endpoints registerEndpointValues -} - func writeRegisterValuesYAML(req registerValuesWriteRequest) error { outDir := filepath.Join(req.StackPath, "out") if err := os.MkdirAll(outDir, 0o755); err != nil { diff --git a/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel b/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel index 730c3ebb46..1b08299376 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel +++ b/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel @@ -45,6 +45,7 @@ go_library( "@io_k8s_api//core/v1:core", "@io_k8s_api//rbac/v1:rbac", "@io_k8s_apimachinery//pkg/api/errors", + "@io_k8s_apimachinery//pkg/api/resource", "@io_k8s_apimachinery//pkg/apis/meta/v1:meta", "@io_k8s_apimachinery//pkg/labels", "@io_k8s_client_go//kubernetes", diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index c31b66ec8c..506cc56d93 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -33,6 +33,7 @@ import ( corev1 "k8s.io/api/core/v1" rbacv1 "k8s.io/api/rbac/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/client-go/kubernetes" @@ -356,11 +357,6 @@ func validatorConfigNameForRole(role string) string { return clusterValidatorNoConfigName } -// sweepClusterValidatorRBAC removes the SA, ClusterRole, and ClusterRoleBinding -// created by ensureClusterValidatorRBAC. Called after Job completion (when -// --no-cleanup is not set) to close the window where the elevated ClusterRole -// exists. The next run recreates them via ensureClusterValidatorRBAC. -// Errors are swallowed: stale RBAC is preferable to failing the result. // sweepOrphanClusterValidatorRBAC removes validator RBAC left behind by a run // that died before its deferred cleanup (SIGKILL, OOM, lost terminal). // @@ -409,6 +405,12 @@ func sweepOrphanClusterValidatorRBAC(ctx context.Context, client kubernetes.Inte } } +// sweepClusterValidatorRBAC removes the SA, ClusterRole, and ClusterRoleBinding +// created by ensureClusterValidatorRBAC. Called after Job completion (when +// --no-cleanup is not set) to close the window where the elevated ClusterRole +// exists. Each run mints its own names, so nothing is reused and anything left +// behind is reclaimed by sweepOrphanClusterValidatorRBAC instead. +// Errors are swallowed: stale RBAC is preferable to failing the result. func sweepClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, role, runID string) { name := clusterValidatorRBACName(role, runID) @@ -490,6 +492,10 @@ func validatorRoleSelector(role string) string { // without importing that package. const clusterValidatorControlPlaneRole = "control-plane" +// clusterValidatorComputePlaneRole is the other VALIDATOR_ROLE value. Both are +// named so role-scoping logic reads the same on either side. +const clusterValidatorComputePlaneRole = "compute-plane" + // clusterValidatorConfigName is the default ConfigMap name the validator binary // looks for when VALIDATOR_CONFIG_NAME is empty. Must stay in sync with // defaultConfigMapName in nvca/cmd/cluster-validator/main.go. @@ -661,13 +667,39 @@ func parseRegistryHostPort(s string) (host string, port int) { // write. VALIDATOR_ROLE selects the check set (control-plane vs compute-plane). func buildClusterValidatorJob(name, image, pullSecret, role, runID string, noCleanup bool) *batchv1.Job { backoff := int32(0) + // Pod shape mirrors deployments/nvca-operator/templates/cronjob.yaml, which + // runs this same image. Two producers of one pod spec now exist in two + // languages, so they are kept deliberately in step: without the security + // context the Job is rejected outright by a namespace enforcing the + // PodSecurity "restricted" profile, and without the tolerations it never + // schedules on a cluster whose nodes all carry the control-plane taint. + // Either way waitForClusterValidatorJob burns its full budget and the run + // leaks, so these are correctness, not hardening. + runAsUser := int64(65534) + runAsNonRoot := true + readOnlyRoot := true + allowPrivEsc := false podSpec := corev1.PodSpec{ ServiceAccountName: clusterValidatorRBACName(role, runID), RestartPolicy: corev1.RestartPolicyNever, + Tolerations: clusterValidatorTolerations(), + SecurityContext: &corev1.PodSecurityContext{ + RunAsUser: &runAsUser, + RunAsGroup: &runAsUser, + FSGroup: &runAsUser, + }, Containers: []corev1.Container{{ Name: clusterValidatorContainer, Image: image, ImagePullPolicy: corev1.PullIfNotPresent, + Resources: clusterValidatorResources(), + SecurityContext: &corev1.SecurityContext{ + RunAsNonRoot: &runAsNonRoot, + ReadOnlyRootFilesystem: &readOnlyRoot, + AllowPrivilegeEscalation: &allowPrivEsc, + Capabilities: &corev1.Capabilities{Drop: []corev1.Capability{"ALL"}}, + SeccompProfile: &corev1.SeccompProfile{Type: corev1.SeccompProfileTypeRuntimeDefault}, + }, Env: []corev1.EnvVar{ {Name: "VALIDATOR_CONFIG_NAMESPACE", Value: clusterValidatorNamespace}, // Name the ConfigMap explicitly for the control-plane role and @@ -860,3 +892,28 @@ func sweepClusterValidatorConfig(ctx context.Context, client kubernetes.Interfac } _ = cms.Delete(ctx, clusterValidatorConfigName, deleteExactly(cm)) } + +// clusterValidatorTolerations mirrors the chart's tolerations so the Job can +// schedule on a cluster whose nodes all carry the control-plane taint, which +// is the normal shape for a dedicated control plane. +func clusterValidatorTolerations() []corev1.Toleration { + return []corev1.Toleration{ + {Key: "node-role.kubernetes.io/control-plane", Operator: corev1.TolerationOpExists, Effect: corev1.TaintEffectNoSchedule}, + {Key: "node-role.kubernetes.io/master", Operator: corev1.TolerationOpExists, Effect: corev1.TaintEffectNoSchedule}, + } +} + +// clusterValidatorResources mirrors the chart's defaults. Without requests the +// Job is rejected outright by a namespace carrying a LimitRange or a quota. +func clusterValidatorResources() corev1.ResourceRequirements { + return corev1.ResourceRequirements{ + Requests: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("100m"), + corev1.ResourceMemory: resource.MustParse("64Mi"), + }, + Limits: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("200m"), + corev1.ResourceMemory: resource.MustParse("128Mi"), + }, + } +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index b04fb3a11f..ff61e2a931 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -221,58 +221,25 @@ func TestRunClusterValidator_JobFailed(t *testing.T) { assert.NotEmpty(t, res.JobName, "JobName must be populated on failure for kubectl-logs follow-up") } -func TestRunClusterValidator_RBACIdempotent(t *testing.T) { - // Seed the SA, ClusterRole and ClusterRoleBinding exactly as a prior run - // would have left them: present, and carrying our managed labels. Each - // Create then returns AlreadyExists and the runner must treat that as - // success and proceed to Job creation. - // - // Seeding real objects rather than faking AlreadyExists with a reactor - // matters: the runner refetches on conflict to confirm it owns what it is - // about to bind, so a reactor with nothing behind it is not a valid model. - client := fake.NewSimpleClientset( - &corev1.ServiceAccount{ObjectMeta: metav1.ObjectMeta{ - Name: clusterValidatorName, Namespace: clusterValidatorNamespace, - Labels: clusterValidatorLabels(), - }}, - &rbacv1.ClusterRole{ObjectMeta: metav1.ObjectMeta{ - Name: clusterValidatorName, Labels: clusterValidatorLabels(), - }}, - &rbacv1.ClusterRoleBinding{ - ObjectMeta: metav1.ObjectMeta{ - Name: clusterValidatorName, Labels: clusterValidatorLabels(), - }, - Subjects: []rbacv1.Subject{{ - Kind: rbacv1.ServiceAccountKind, - Name: clusterValidatorName, - Namespace: clusterValidatorNamespace, - }}, - RoleRef: rbacv1.RoleRef{ - APIGroup: rbacv1.GroupName, Kind: "ClusterRole", Name: clusterValidatorName, - }, - }, - ) - - var jobName atomic.Value - jobName.Store("") - client.PrependReactor("create", "jobs", func(action ktesting.Action) (bool, runtime.Object, error) { - jobName.Store(action.(ktesting.CreateAction).GetObject().(*batchv1.Job).Name) - return false, nil, nil - }) - client.PrependReactor("get", "jobs", func(action ktesting.Action) (bool, runtime.Object, error) { - return jobSucceededReactor(jobName.Load().(string))(action) +// Each run mints an unguessable RBAC name, so there is no idempotence left to +// test: a name collision means something else already holds the name this run +// is about to bind cluster-wide permissions to. That must fail, not be adopted. +// (Replaces TestRunClusterValidator_RBACIdempotent, which seeded objects under +// the old fixed name and so never produced the AlreadyExists it described.) +func TestRunClusterValidator_RBACNameCollisionIsNotAdopted(t *testing.T) { + client := fake.NewSimpleClientset() + client.PrependReactor("create", "clusterroles", func(action ktesting.Action) (bool, runtime.Object, error) { + name := action.(ktesting.CreateAction).GetObject().(*rbacv1.ClusterRole).Name + return true, nil, apierrors.NewAlreadyExists( + schema.GroupResource{Group: "rbac.authorization.k8s.io", Resource: "clusterroles"}, name) }) - client.PrependReactor("list", "pods", podListReactor("")) - res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false, "", nil) - require.NoError(t, res.Err, "AlreadyExists on RBAC bootstrap must be treated as success") - assert.True(t, res.Passed) + res := runClusterValidator(context.Background(), client, "nvcr.io/x/validator:1", + "", false, clusterValidatorControlPlaneRole, nil) + require.Error(t, res.Err, "a pre-existing object under our generated name must not be adopted") + assert.Contains(t, res.Err.Error(), "bootstrapping validator RBAC") } -// TestEnsureClusterValidatorRBAC_WritableResources verifies that the -// bootstrapped ClusterRole grants the write verbs required by enforcement -// checks (namespace/pod create+delete), probe log reading (pods/log get), -// and the Gateway API checks. func TestEnsureClusterValidatorRBAC_WritableResources(t *testing.T) { client := fake.NewSimpleClientset() ctx := context.Background() @@ -681,23 +648,6 @@ func TestParseRegistryHostPort(t *testing.T) { }) } } - -func alreadyExistsReactor(resource, name string) ktesting.ReactionFunc { - gr := schema.GroupResource{Resource: resource} - return func(action ktesting.Action) (bool, runtime.Object, error) { - createAction, ok := action.(ktesting.CreateAction) - if !ok { - return false, nil, nil - } - meta, ok := createAction.GetObject().(metav1.Object) - if !ok || meta.GetName() != name { - return false, nil, nil - } - return true, nil, apierrors.NewAlreadyExists(gr, name) - } -} - -// The same invariant for the network-check ConfigMap. func TestEnsureClusterValidatorConfig_RefusesUnmanagedConfigMap(t *testing.T) { ctx := context.Background() client := fake.NewSimpleClientset(&corev1.ConfigMap{ @@ -905,3 +855,40 @@ func TestRunClusterValidator_NoCleanupKeepsPullSecretAndPriorJob(t *testing.T) { context.Background(), secret.Name, metav1.GetOptions{}) assert.NoError(t, err, "--no-cleanup must keep the pull secret the preserved pod needs") } + +// The Job runs the same image as the chart's CronJob, so it needs the same pod +// shape. Without the security context a namespace enforcing the PodSecurity +// "restricted" profile rejects it at admission; without the tolerations it +// never schedules on a cluster whose nodes all carry the control-plane taint. +// Either way the wait burns its full budget and the run leaks. +func TestBuildClusterValidatorJob_MatchesChartPodShape(t *testing.T) { + job := buildClusterValidatorJob("j", "nvcr.io/x/validator:1", "", + clusterValidatorControlPlaneRole, "runid", false) + spec := job.Spec.Template.Spec + + require.NotNil(t, spec.SecurityContext, "pod security context is required under restricted") + require.NotNil(t, spec.SecurityContext.RunAsUser) + assert.Equal(t, int64(65534), *spec.SecurityContext.RunAsUser, "chart runs this image as 65534") + + require.Len(t, spec.Containers, 1) + sc := spec.Containers[0].SecurityContext + require.NotNil(t, sc, "container security context is required under restricted") + require.NotNil(t, sc.RunAsNonRoot) + assert.True(t, *sc.RunAsNonRoot) + require.NotNil(t, sc.AllowPrivilegeEscalation) + assert.False(t, *sc.AllowPrivilegeEscalation) + require.NotNil(t, sc.Capabilities) + assert.Equal(t, []corev1.Capability{"ALL"}, sc.Capabilities.Drop) + require.NotNil(t, sc.SeccompProfile) + assert.Equal(t, corev1.SeccompProfileTypeRuntimeDefault, sc.SeccompProfile.Type) + + var keys []string + for _, tol := range spec.Tolerations { + keys = append(keys, tol.Key) + } + assert.Contains(t, keys, "node-role.kubernetes.io/control-plane") + assert.Contains(t, keys, "node-role.kubernetes.io/master") + + assert.False(t, spec.Containers[0].Resources.Requests.Cpu().IsZero(), + "a namespace with a LimitRange or quota rejects a pod with no requests") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index dc91752c4a..623c132c75 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -704,11 +704,6 @@ func registryCredentialCheck(checker RegistryCredentialChecker, entry RegistryEn } } -// staleNamespaceCheck detects NVCF namespaces stuck Terminating or left as -// empty shells after a partial teardown. Severity is error; prober errors -// degrade to warning so transient kubeconfig issues don't falsely fail. -// mergeNamespaces returns the union of two namespace lists, order-stable and -// de-duplicated. func mergeNamespaces(base, extra []string) []string { if len(extra) == 0 { return base @@ -727,6 +722,11 @@ func mergeNamespaces(base, extra []string) []string { return out } +// staleNamespaceCheck detects NVCF namespaces stuck Terminating or left as +// empty shells after a partial teardown. Severity is error; prober errors +// degrade to warning so transient kubeconfig issues don't falsely fail. +// mergeNamespaces returns the union of two namespace lists, order-stable and +// de-duplicated. func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namespaces []string) binaryCheckSpec { const id = "stale-namespaces" return binaryCheckSpec{ @@ -793,9 +793,22 @@ func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namesp } } if len(emptyShell) > 0 { + // Deliberately not a delete command. A namespace with no Helm + // release is not necessarily stale: the stack gates + // cert-manager, NATS, OpenBao and Cassandra on *.enabled, so an + // operator who installs one the documented upstream way, or via + // Argo, owns a healthy namespace with no owner=helm object. + // Handing them "kubectl delete namespace cert-manager" would + // destroy every Certificate and Issuer in the cluster. hints = append(hints, - fmt.Sprintf("inspect and delete empty namespaces: %s delete namespace %s", - kctl, strings.Join(emptyShell, " "))) + fmt.Sprintf("inspect these and remove them only after confirming they are unused: %s get all -n %s", + kctl, strings.Join(emptyShell, " -n "))) + } + // Only a namespace stuck Terminating blocks the run. "No Helm + // release" is a heuristic over a conditionally-installed stack, so + // it warns rather than turning a supported install shape into exit 2. + if len(terminating) == 0 { + r.Severity = SeverityWarning } r.Message = fmt.Sprintf("%d stale namespace(s) detected: %s. To resolve: %s", len(stale), strings.Join(parts, ", "), strings.Join(hints, "; ")) diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go index 08d75b0c44..5904679b98 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go @@ -182,6 +182,17 @@ func scanAndMirrorPullSecret(ctx context.Context, client kubernetes.Interface, r continue } if s.Namespace == clusterValidatorNamespace { + // Adopt an operator-supplied Secret (no managed labels, so no + // sweep touches it) or this role's own. Never the other + // role's: in ModeSplit both kubecontexts can resolve to one + // cluster, and that role's deferred sweep would delete the + // Secret while this role's pod is still pulling, which the + // kubelet reports as FailedToRetrieveImagePullSecret. That is + // the exact failure per-role naming was introduced to prevent. + if hasValidatorManagedLabels(s.Labels) && + s.Labels[clusterValidatorRoleLabel] != role { + continue + } return s.Name, nil } // Mirror under the validator's well-known name rather than the @@ -357,17 +368,6 @@ func writeDockerConfigSecret(ctx context.Context, client kubernetes.Interface, n return nil } -// isManagedByValidatorCLI reports whether the secret carries the labels -// writeDockerConfigSecret stamps on every secret it creates. Used to -// gate the delete-then-recreate branch so we never destroy an operator- -// or chart-owned secret that happens to share a name with one of ours. -// refuseIfUnmanaged rejects a Secret nvcf-cli does not own. Every path in -// writeDockerConfigSecret that mutates an existing Secret must call this: -// overwriting an operator-owned secret replaces their registry credentials and -// stamps our managed labels on it, after which the role sweep deletes it. -// -// detail is appended to the message when there is something useful to say -// (the conflicting type, the race), otherwise "". func refuseIfUnmanaged(s *corev1.Secret, namespace, name, detail string) error { if isManagedByValidatorCLI(s) { return nil @@ -381,6 +381,17 @@ func refuseIfUnmanaged(s *corev1.Secret, namespace, name, detail string) error { namespace, name, detail) } +// isManagedByValidatorCLI reports whether the secret carries the labels +// writeDockerConfigSecret stamps on every secret it creates. Used to +// gate the delete-then-recreate branch so we never destroy an operator- +// or chart-owned secret that happens to share a name with one of ours. +// refuseIfUnmanaged rejects a Secret nvcf-cli does not own. Every path in +// writeDockerConfigSecret that mutates an existing Secret must call this: +// overwriting an operator-owned secret replaces their registry credentials and +// stamps our managed labels on it, after which the role sweep deletes it. +// +// detail is appended to the message when there is something useful to say +// (the conflicting type, the race), otherwise "". func isManagedByValidatorCLI(s *corev1.Secret) bool { return hasValidatorManagedLabels(s.Labels) } diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go index e989714027..f3d7e7354a 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go @@ -658,3 +658,63 @@ func TestAutoCreatePullSecretFromEnv_RefusesNonNGCRegistry(t *testing.T) { require.NoError(t, err) assert.Empty(t, secrets.Items, "the NGC key must not reach a third-party registry") } + +// In ModeSplit both kubecontexts can resolve to one cluster. Adopting the +// other role's managed Secret means that role's sweep deletes it while this +// role's pod is still pulling. +func TestScanAndMirrorPullSecret_DoesNotAdoptTheOtherRolesSecret(t *testing.T) { + cfg := dockerConfigBlob(t, "nvcr.io", "$oauthtoken", "key") + otherRole := &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: validatorPullSecretRoleName(clusterValidatorControlPlaneRole), + Namespace: clusterValidatorNamespace, + Labels: clusterValidatorRoleLabels(clusterValidatorControlPlaneRole), + }, + Type: corev1.SecretTypeDockerConfigJson, + Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, + } + client := fake.NewSimpleClientset(otherRole) + + got, err := scanAndMirrorPullSecret(context.Background(), client, "nvcr.io", + clusterValidatorComputePlaneRole) + require.NoError(t, err) + assert.NotEqual(t, otherRole.Name, got, + "the compute role must not adopt the control-plane role's managed Secret") +} + +// An operator-supplied Secret carries no managed labels, so no sweep touches +// it and adopting it is safe. +func TestScanAndMirrorPullSecret_AdoptsOperatorSuppliedSecret(t *testing.T) { + cfg := dockerConfigBlob(t, "nvcr.io", "$oauthtoken", "key") + operator := &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{Name: "operator-pull", Namespace: clusterValidatorNamespace}, + Type: corev1.SecretTypeDockerConfigJson, + Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, + } + client := fake.NewSimpleClientset(operator) + + got, err := scanAndMirrorPullSecret(context.Background(), client, "nvcr.io", + clusterValidatorComputePlaneRole) + require.NoError(t, err) + assert.Equal(t, "operator-pull", got) +} + +// This role's own Secret is still adopted rather than re-minted. +func TestScanAndMirrorPullSecret_AdoptsOwnRoleSecret(t *testing.T) { + cfg := dockerConfigBlob(t, "nvcr.io", "$oauthtoken", "key") + own := &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: validatorPullSecretRoleName(clusterValidatorComputePlaneRole), + Namespace: clusterValidatorNamespace, + Labels: clusterValidatorRoleLabels(clusterValidatorComputePlaneRole), + }, + Type: corev1.SecretTypeDockerConfigJson, + Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, + } + client := fake.NewSimpleClientset(own) + + got, err := scanAndMirrorPullSecret(context.Background(), client, "nvcr.io", + clusterValidatorComputePlaneRole) + require.NoError(t, err) + assert.Equal(t, own.Name, got) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/register.go b/src/clis/nvcf-cli/internal/selfhosted/register.go index 1e8f1bc6ae..75908c93f4 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/register.go +++ b/src/clis/nvcf-cli/internal/selfhosted/register.go @@ -315,12 +315,6 @@ func resolveClusterID(resp *client.RegisterClusterResponse) string { // avoid touching a real kubeconfig file. var loadKubeConfigFn = loadKubeConfig -// loadKubeConfig builds a *rest.Config for the given kubeconfig context. -// When kctx is empty the kubeconfig's current-context is used, preserving -// single-cluster behavior. The loading-rules chain follows the same priority -// as kubectl: KUBECONFIG env var → ~/.kube/config. -// currentKubeContextNameFn is a seam: tests must not depend on the developer's -// kubeconfig, and hint output would otherwise vary by machine. var currentKubeContextNameFn = currentKubeContextName // currentKubeContextName returns the kubeconfig's current-context, or "" when @@ -346,6 +340,12 @@ func effectiveKubeContext(kctx string) string { return currentKubeContextNameFn() } +// loadKubeConfig builds a *rest.Config for the given kubeconfig context. +// When kctx is empty the kubeconfig's current-context is used, preserving +// single-cluster behavior. The loading-rules chain follows the same priority +// as kubectl: KUBECONFIG env var → ~/.kube/config. +// currentKubeContextNameFn is a seam: tests must not depend on the developer's +// kubeconfig, and hint output would otherwise vary by machine. func loadKubeConfig(kctx string) (*rest.Config, error) { loadingRules := clientcmd.NewDefaultClientConfigLoadingRules() overrides := &clientcmd.ConfigOverrides{} diff --git a/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces.go b/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces.go index 054a7aa7da..a6bf51426d 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces.go @@ -53,8 +53,16 @@ func stackReleaseNamespaces(stackDir string) []string { if stackDir == "" { return nil } - entries, err := filepath.Glob(filepath.Join(stackDir, "helmfile.d", "*.yaml.gotmpl")) - if err != nil || len(entries) == 0 { + // helmfile accepts plain .yaml fragments as well as .yaml.gotmpl. + var entries []string + for _, pattern := range []string{"*.yaml.gotmpl", "*.yaml"} { + matches, err := filepath.Glob(filepath.Join(stackDir, "helmfile.d", pattern)) + if err != nil { + return nil + } + entries = append(entries, matches...) + } + if len(entries) == 0 { return nil } @@ -62,7 +70,13 @@ func stackReleaseNamespaces(stackDir string) []string { for _, path := range entries { body, err := os.ReadFile(path) if err != nil { - continue + // Bail out rather than deriving a partial list. A single + // unreadable fragment (a root-owned 0600 file left by "sudo + // helmfile", say) would otherwise silently drop a third of the + // namespaces, and the caller prefers any non-empty derived list + // over the complete static fallback. That turns a truncated scan + // into an affirmative all-clear. + return nil } for _, m := range helmfileNamespaceRE.FindAllStringSubmatch(string(body), -1) { if ns := strings.TrimSpace(m[1]); ns != "" { @@ -86,8 +100,8 @@ func stackReleaseNamespaces(stackDir string) []string { // It prefers what the stack actually declares and falls back to the static // list when no stack is available. func resolveStackNamespaces(stackDir string, fallback []string) []string { - if derived := stackReleaseNamespaces(stackDir); len(derived) > 0 { - return derived - } - return fallback + // Union, not replace. The derived list follows the stack, but it cannot see + // namespaces behind a helmfiles: include, so on its own it can still be + // short. Merging keeps the static list as a floor. + return mergeNamespaces(fallback, stackReleaseNamespaces(stackDir)) } diff --git a/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces_test.go b/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces_test.go index febf3ff2c3..b5319c20f2 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces_test.go @@ -88,12 +88,40 @@ func TestResolveStackNamespaces_FallsBackWhenNoStack(t *testing.T) { "a directory with no helmfile.d must use the static list") } -func TestResolveStackNamespaces_PrefersStack(t *testing.T) { +// The derived list is additive, not a replacement: it cannot see namespaces +// behind a helmfiles: include, so on its own it can still be short. The static +// list stays as a floor. +func TestResolveStackNamespaces_UnionsStackWithStatic(t *testing.T) { dir := writeStack(t, map[string]string{ "01.yaml.gotmpl": "releases:\n - name: a\n namespace: from-stack\n", }) - assert.Equal(t, []string{"from-stack"}, resolveStackNamespaces(dir, []string{"static"}), - "a readable stack must win over the static list") + got := resolveStackNamespaces(dir, []string{"static"}) + assert.Contains(t, got, "from-stack", "the stack's namespaces must be picked up") + assert.Contains(t, got, "static", "the static list must remain a floor") +} + +// An unreadable fragment must not yield a truncated list that then overrides +// the complete static one, which would report an affirmative all-clear over a +// scan missing a third of its namespaces. +func TestStackReleaseNamespaces_UnreadableFragmentYieldsNothing(t *testing.T) { + dir := writeStack(t, map[string]string{ + "01.yaml.gotmpl": "releases:\n - name: a\n namespace: one\n", + "02.yaml.gotmpl": "releases:\n - name: b\n namespace: two\n", + }) + unreadable := filepath.Join(dir, "helmfile.d", "02.yaml.gotmpl") + require.NoError(t, os.Chmod(unreadable, 0o000)) + t.Cleanup(func() { _ = os.Chmod(unreadable, 0o600) }) + + assert.Nil(t, stackReleaseNamespaces(dir), + "a partial parse must not masquerade as the stack's full namespace set") +} + +// helmfile accepts plain .yaml fragments too. +func TestStackReleaseNamespaces_ReadsPlainYAMLFragments(t *testing.T) { + dir := writeStack(t, map[string]string{ + "01.yaml": "releases:\n - name: a\n namespace: plain-yaml\n", + }) + assert.Contains(t, stackReleaseNamespaces(dir), "plain-yaml") } // A `namespace:` key nested inside a release's values block is chart diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go index 7dde653238..02a42b108e 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go @@ -138,6 +138,10 @@ func helmReleaseExists( func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, namespaces []string) ([]StaleNamespace, error) { var stale []StaleNamespace + // noRelease is held back until we know the Helm storage driver keeps its + // state in-cluster at all; see the gate below. + var noRelease []string + anyHelmReleaseSeen := false for _, name := range namespaces { ns, err := client.CoreV1().Namespaces().Get(ctx, name, metav1.GetOptions{}) if err != nil { @@ -167,6 +171,7 @@ func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, name return stale, fmt.Errorf("list Helm secrets in %s: %w", name, err) } if found { + anyHelmReleaseSeen = true continue // healthy: active Helm release found via the secret driver } found, err = helmReleaseExists( @@ -180,7 +185,19 @@ func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, name if err != nil { return stale, fmt.Errorf("list Helm configmaps in %s: %w", name, err) } - if !found { + if found { + anyHelmReleaseSeen = true + continue + } + noRelease = append(noRelease, name) + } + + // Only trust the "no Helm release" signal when at least one owner=helm + // object was seen somewhere. HELM_DRIVER=sql keeps release state in a + // database with no in-cluster object at all, so without this every + // namespace of a healthy production install reports stale. + if anyHelmReleaseSeen { + for _, name := range noRelease { stale = append(stale, StaleNamespace{Name: name, Reason: "no Helm release"}) } } diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go index 3276f2d971..6278985c93 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go @@ -72,11 +72,26 @@ func TestProbeStaleNamespaces_TerminatingIsByPhase(t *testing.T) { func TestProbeStaleNamespaces_EmptyShellNoHelmSecrets(t *testing.T) { // Namespace exists and is Active but holds no Helm release secrets -> // leftover empty shell from a partial helm uninstall. - client := fake.NewSimpleClientset(&corev1.Namespace{ - ObjectMeta: metav1.ObjectMeta{Name: "nvcf"}, - Status: corev1.NamespaceStatus{Phase: corev1.NamespaceActive}, - }) - stale, err := probeStaleNamespaces(context.Background(), client, []string{"nvcf"}) + // + // A second namespace carries a real release so the driver is known to keep + // its state in-cluster. Without that the signal is unusable and correctly + // suppressed, which is what HELM_DRIVER=sql looks like. + client := fake.NewSimpleClientset( + &corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{Name: "nvcf"}, + Status: corev1.NamespaceStatus{Phase: corev1.NamespaceActive}, + }, + &corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{Name: "sis"}, + Status: corev1.NamespaceStatus{Phase: corev1.NamespaceActive}, + }, + &corev1.Secret{ObjectMeta: metav1.ObjectMeta{ + Name: "sh.helm.release.v1.sis.v1", + Namespace: "sis", + Labels: map[string]string{"owner": "helm", "name": "sis", "status": "deployed"}, + }}, + ) + stale, err := probeStaleNamespaces(context.Background(), client, []string{"nvcf", "sis"}) require.NoError(t, err) require.Len(t, stale, 1) assert.Equal(t, "nvcf", stale[0].Name) @@ -236,7 +251,7 @@ func TestStaleNamespaceCheck_MessageNamesAllStaleNamespaces(t *testing.T) { assert.Contains(t, r.Message, "api-keys") assert.Contains(t, r.Message, "/api/v1/namespaces/nvcf/finalize", "the remediation must use the finalize subresource; a plain patch is silently reverted") - assert.Contains(t, r.Message, "kubectl delete namespace api-keys") + assert.Contains(t, r.Message, "kubectl get all -n api-keys") } // A namespace on a real install holds many non-Helm Secrets (ServiceAccount @@ -310,7 +325,7 @@ func TestStaleNamespaceCheck_HintsPinTheProbedContext(t *testing.T) { assert.True(t, strings.HasPrefix(cmd, "--context cp-ctx "), "unpinned kubectl invocation in hint: kubectl %s", cmd) } - assert.Contains(t, r.Message, "kubectl --context cp-ctx delete namespace api-keys") + assert.Contains(t, r.Message, "kubectl --context cp-ctx get all -n api-keys") } func TestStaleNamespaceCheck_HintsQuoteTheContext(t *testing.T) { @@ -319,7 +334,7 @@ func TestStaleNamespaceCheck_HintsQuoteTheContext(t *testing.T) { return []StaleNamespace{{Name: "nvcf", Reason: "no Helm release"}}, nil } r := staleNamespaceCheck(prober, "my ctx", []string{"nvcf"}).Run(context.Background()) - assert.Contains(t, r.Message, "--context 'my ctx' delete namespace nvcf", + assert.Contains(t, r.Message, "--context 'my ctx' get all -n nvcf", "a context name with a space must be quoted so the pasted command does not split it") } @@ -352,7 +367,7 @@ func TestStaleNamespaceCheck_HintsNameTheCurrentContext(t *testing.T) { return []StaleNamespace{{Name: "nvcf", Reason: "no Helm release"}}, nil } r := staleNamespaceCheck(prober, "", []string{"nvcf"}).Run(context.Background()) - assert.Contains(t, r.Message, "kubectl --context k3d-local delete namespace nvcf") + assert.Contains(t, r.Message, "kubectl --context k3d-local get all -n nvcf") } // An unreadable kubeconfig must not break the hint; it degrades to no flag. @@ -362,7 +377,7 @@ func TestStaleNamespaceCheck_HintsOmitUnknownContext(t *testing.T) { return []StaleNamespace{{Name: "nvcf", Reason: "no Helm release"}}, nil } r := staleNamespaceCheck(prober, "", []string{"nvcf"}).Run(context.Background()) - assert.Contains(t, r.Message, "kubectl delete namespace nvcf") + assert.Contains(t, r.Message, "kubectl get all -n nvcf") } // The probe must run against the same context the hints name. Resolving the @@ -379,3 +394,58 @@ func TestStaleNamespaceCheck_ProbesTheResolvedContext(t *testing.T) { assert.Equal(t, "k3d-local", probed, "the probe must target the resolved context, not whatever is current when it runs") } + +// HELM_DRIVER=sql keeps release state in a database, so a healthy production +// install has no owner=helm object anywhere. Without a gate every stack +// namespace reports stale at error severity with a delete remediation. +func TestProbeStaleNamespaces_NoHelmObjectsAnywhereReportsNothing(t *testing.T) { + client := fake.NewSimpleClientset( + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "nvcf"}}, + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "sis"}}, + ) + got, err := probeStaleNamespaces(context.Background(), client, []string{"nvcf", "sis"}) + require.NoError(t, err) + assert.Empty(t, got, + "with no in-cluster Helm state at all the signal is unusable, not evidence of staleness") +} + +// A namespace stuck Terminating is still reported even when no Helm release +// object exists anywhere: that signal does not depend on the storage driver. +func TestProbeStaleNamespaces_TerminatingReportedWithoutHelmObjects(t *testing.T) { + client := fake.NewSimpleClientset( + &corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{Name: "nvcf"}, + Status: corev1.NamespaceStatus{Phase: corev1.NamespaceTerminating}, + }, + ) + got, err := probeStaleNamespaces(context.Background(), client, []string{"nvcf"}) + require.NoError(t, err) + require.Len(t, got, 1) + assert.Equal(t, "stuck Terminating", got[0].Reason) +} + +// A conditionally-disabled component installed the upstream way is healthy. +// Reporting it at error severity turns a supported shape into exit 2, and the +// old remediation would have destroyed every Certificate in the cluster. +func TestStaleNamespaceCheck_NoHelmReleaseWarnsAndDoesNotSuggestDelete(t *testing.T) { + pinCurrentKubeContext(t, "") + prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { + return []StaleNamespace{{Name: "cert-manager", Reason: "no Helm release"}}, nil + } + r := staleNamespaceCheck(prober, "", []string{"cert-manager"}).Run(context.Background()) + + assert.Equal(t, SeverityWarning, r.Severity, + "a namespace with no Helm release must not fail the run") + assert.NotContains(t, r.Message, "delete namespace", + "the remediation must not destroy a namespace the operator may own") +} + +// A namespace stuck Terminating does block the run. +func TestStaleNamespaceCheck_TerminatingIsStillAnError(t *testing.T) { + pinCurrentKubeContext(t, "") + prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { + return []StaleNamespace{{Name: "nvcf", Reason: "stuck Terminating"}}, nil + } + r := staleNamespaceCheck(prober, "", []string{"nvcf"}).Run(context.Background()) + assert.Equal(t, SeverityError, r.Severity) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go index f608623a4a..6b96684eee 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go @@ -436,18 +436,6 @@ var ngcApprovedHosts = []string{ ".ngc.nvidia", } -// isNGCRegistry returns true when the registry host belongs to an NVIDIA / NGC -// domain. The check strips any port from the registry string before matching -// so that nvcr.io:443 is handled correctly, and uses dot-boundary matching to -// reject deceptive suffixes such as evilnvcr.io or nvidia.com.invalid. -// isBareRegistryHost reports whether s is a plain host[:port], with nothing in -// it that could move the request somewhere else once concatenated into a URL. -// -// This matters because the registry string is interpolated directly into -// "https://" + registry + "/...". A value like "evil.com/x.nvcr.io" ends with a -// trusted suffix but parses to host evil.com, so a suffix check alone would -// authorize sending credentials to an attacker. IPv6 literals keep their -// brackets and are allowed. func isBareRegistryHost(s string) bool { if s == "" { return false @@ -465,6 +453,18 @@ func isBareRegistryHost(s string) bool { return true } +// isNGCRegistry returns true when the registry host belongs to an NVIDIA / NGC +// domain. The check strips any port from the registry string before matching +// so that nvcr.io:443 is handled correctly, and uses dot-boundary matching to +// reject deceptive suffixes such as evilnvcr.io or nvidia.com.invalid. +// isBareRegistryHost reports whether s is a plain host[:port], with nothing in +// it that could move the request somewhere else once concatenated into a URL. +// +// This matters because the registry string is interpolated directly into +// "https://" + registry + "/...". A value like "evil.com/x.nvcr.io" ends with a +// trusted suffix but parses to host evil.com, so a suffix check alone would +// authorize sending credentials to an attacker. IPv6 literals keep their +// brackets and are allowed. func isNGCRegistry(registry string) bool { // Never treat a value we cannot safely place in a URL as an NGC host: the // caller uses this to decide whether to forward the NGC API key. From e5ab3dde80a48b6fb91999728d69eed74eb891da Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 22 Sep 2026 16:56:44 +0530 Subject: [PATCH 33/55] fix(nvcf-cli): bound the validator Job and make the check command's tests hermetic --- src/clis/nvcf-cli/cmd/main_test.go | 27 +++- src/clis/nvcf-cli/cmd/self_hosted_check.go | 4 +- .../nvcf-cli/cmd/self_hosted_check_test.go | 19 +++ .../internal/selfhosted/clustervalidator.go | 67 ++++++++- .../selfhosted/clustervalidator_test.go | 131 +++++++++++++++++- .../nvcf-cli/internal/selfhosted/preflight.go | 13 +- .../internal/selfhosted/pullsecret.go | 17 +-- .../internal/selfhosted/pullsecret_test.go | 58 ++++---- .../selfhosted/stack_namespaces_test.go | 8 +- .../selfhosted/stale_namespace_test.go | 19 +++ 10 files changed, 309 insertions(+), 54 deletions(-) diff --git a/src/clis/nvcf-cli/cmd/main_test.go b/src/clis/nvcf-cli/cmd/main_test.go index d0fa86ed75..4d65747743 100644 --- a/src/clis/nvcf-cli/cmd/main_test.go +++ b/src/clis/nvcf-cli/cmd/main_test.go @@ -21,14 +21,35 @@ import ( "context" "os" "testing" + + "nvcf-cli/internal/selfhosted" ) -// Default-stub out the validator-tag registry probe so cmd tests don't make -// real network calls or pollute the on-disk cache. Individual tests can -// reassign the variable if they explicitly want to exercise discovery. +// Default-stub every seam that would otherwise reach the developer's cluster or +// the network. Individual tests reassign a variable when they explicitly want +// to exercise that path. +// +// These are not conveniences. Without them `go test ./cmd/` creates a hostPath +// busybox pod per node in `default` (the inotify probe), lists Secrets across +// the stack namespaces of whatever kubeconfig happens to be current, and makes +// an outbound request to nvcr.io per configured registry. That mutates a real +// cluster from a unit test, and it is why the package took minutes and failed +// on a proxied kubeconfig rather than seconds and deterministically. func TestMain(m *testing.M) { resolveLatestValidatorTagForSelfHosted = func(_ context.Context, _ string) (string, bool) { return "", false } + // Nil prober: the inotify check is skipped rather than creating pods. + newInotifyProberForSelfHosted = func() selfhosted.NodeInotifyProber { return nil } + // No cluster contact, and a clean result so the category still renders. + newStaleNamespaceProberForSelfHosted = func() selfhosted.StaleNamespaceProber { + return func(context.Context, string, []string) ([]selfhosted.StaleNamespace, error) { + return nil, nil + } + } + // No outbound registry request. + newRegistryCredentialCheckerForSelfHosted = func() selfhosted.RegistryCredentialChecker { + return func(context.Context, string, string, bool) error { return nil } + } os.Exit(m.Run()) } diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index f400339f1c..e8e80d40c7 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -453,7 +453,9 @@ func maybeShowClusterValidatorLogs(w io.Writer, results []selfhosted.CheckResult fmt.Fprintln(w, "--- cluster-validator logs ---") fmt.Fprint(w, r.Logs) fmt.Fprintln(w, "--- end cluster-validator logs ---") - return + // No early return: both roles produce a cluster-validator result under + // the same ID, so stopping at the first drops the other transcript + // entirely from --all --show-logs. } } diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go index 46e0d312b6..ddf4f72cac 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go @@ -714,3 +714,22 @@ func TestEmitCheckFinal_ErrorIsAFailure(t *testing.T) { assert.Contains(t, buf.String(), `"verdict":"failed"`) assert.Contains(t, buf.String(), `"success":false`) } + +// Both roles emit a cluster-validator result under the same ID, so stopping at +// the first drops the other transcript entirely from --all --show-logs. +func TestMaybeShowClusterValidatorLogs_PrintsBothRoles(t *testing.T) { + prev := checkShowLogs + checkShowLogs = true + t.Cleanup(func() { checkShowLogs = prev }) + + var buf bytes.Buffer + maybeShowClusterValidatorLogs(&buf, []selfhosted.CheckResult{ + {ID: "cluster-validator", Logs: "control-plane transcript\n"}, + {ID: "cluster-validator", Logs: "compute-plane transcript\n"}, + }) + + out := buf.String() + assert.Contains(t, out, "control-plane transcript") + assert.Contains(t, out, "compute-plane transcript") + assert.Equal(t, 2, strings.Count(out, "--- cluster-validator logs ---")) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 506cc56d93..7ce77715cd 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -139,7 +139,7 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image // Resolver errors are non-fatal: fall through to the caller's value and // let waitForClusterValidatorJob surface ImagePullBackOff if needed. - if resolved, err := resolveValidatorPullSecret(ctx, client, pullSecret, image, role); err == nil { + if resolved, err := resolveValidatorPullSecret(ctx, client, pullSecret, image, role, noCleanup); err == nil { pullSecret = resolved } // Sweep only this role's managed pull secret, and only once the pod can no @@ -176,7 +176,7 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image sweepClusterValidatorRBAC(context.Background(), client, role, runID) } }() - if err := ensureClusterValidatorRBAC(vctx, client, role, runID); err != nil { + if err := ensureClusterValidatorRBAC(vctx, client, role, runID, noCleanup); err != nil { return ClusterValidatorResult{Err: fmt.Errorf("bootstrapping validator RBAC: %w", err)} } @@ -259,8 +259,8 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image // Creates the SA/ClusterRole/ClusterRoleBinding the validator pod runs under, // idempotent via AlreadyExists tolerance. ClusterRole uses update-or-create so // newer CLI versions replace stale rules without the operator needing to delete. -func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, role, runID string) error { - roleLabels := clusterValidatorRoleLabels(role) +func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, role, runID string, preserve bool) error { + roleLabels := clusterValidatorRoleLabelsPreserved(role, preserve) name := clusterValidatorRBACName(role, runID) sa := &corev1.ServiceAccount{ @@ -341,8 +341,17 @@ func clusterValidatorLabels() map[string]string { // role's Job mid-command, including under --no-cleanup, which makes the // printed `kubectl logs job/...` hint 404. func clusterValidatorRoleLabels(role string) map[string]string { + return clusterValidatorRoleLabelsPreserved(role, false) +} + +// clusterValidatorRoleLabelsPreserved adds the preserve marker when the run was +// asked to keep its artifacts, so the orphan sweeper leaves them alone. +func clusterValidatorRoleLabelsPreserved(role string, preserve bool) map[string]string { l := clusterValidatorLabels() l[clusterValidatorRoleLabel] = role + if preserve { + l[clusterValidatorPreserveLabel] = "true" + } return l } @@ -373,10 +382,25 @@ func sweepOrphanClusterValidatorRBAC(ctx context.Context, client kubernetes.Inte // reclaimable requires the generated name as well as the labels and the // age. Labels alone are three public constants and can be copied onto // anything, and this deletes cluster-scoped objects with errors swallowed. + // Pull secrets carry the other generated-name prefix. + reclaimableSecret := func(o metav1.Object) bool { + if !strings.HasPrefix(o.GetName(), validatorPullSecretName) { + return false + } + if o.GetLabels()[clusterValidatorPreserveLabel] == "true" { + return false + } + ts := o.GetCreationTimestamp() + return ts.Before(&cutoff) + } + reclaimable := func(o metav1.Object) bool { if !strings.HasPrefix(o.GetName(), clusterValidatorName) { return false } + if o.GetLabels()[clusterValidatorPreserveLabel] == "true" { + return false + } ts := o.GetCreationTimestamp() return ts.Before(&cutoff) } @@ -395,6 +419,18 @@ func sweepOrphanClusterValidatorRBAC(ctx context.Context, client kubernetes.Inte } } } + // Pull secrets too: the deferred sweep is suppressed whenever the pod may + // still be running, and that is exactly the ImagePullBackOff path, so + // without this arm a Secret holding $oauthtoken:$NGC_API_KEY is the one + // object with no reclaim at all. + secrets := client.CoreV1().Secrets(clusterValidatorNamespace) + if l, err := secrets.List(ctx, opts); err == nil { + for i := range l.Items { + if o := &l.Items[i]; reclaimableSecret(o) { + _ = secrets.Delete(ctx, o.Name, deleteExactly(o)) + } + } + } sa := client.CoreV1().ServiceAccounts(clusterValidatorNamespace) if l, err := sa.List(ctx, opts); err == nil { for i := range l.Items { @@ -509,6 +545,12 @@ const clusterValidatorNoConfigName = "cluster-validator-no-config" // clusterValidatorRoleLabel scopes Job selectors to a single validator role. const clusterValidatorRoleLabel = "nvcf.nvidia.com/validator-role" +// clusterValidatorPreserveLabel marks objects an operator asked to keep with +// --no-cleanup. The orphan sweeper skips them: without it a preserved run is +// reclaimed anyway once it is older than the TTL, which makes the flag mean +// "keep for 30 minutes". +const clusterValidatorPreserveLabel = "nvcf.nvidia.com/validator-preserve" + // clusterValidatorRBACName returns the ServiceAccount / ClusterRole / // ClusterRoleBinding name for one run of one role. // @@ -553,7 +595,13 @@ const controlPlaneValidatorConfigTemplate = `reachability: protocol: tcp+tls critical: true enforcement: - enabled: true + # Disabled for preflight. VALIDATOR_PREFLIGHT only suppresses the summary + # write, so enforcement would still run: it creates netpol-validation + # namespaces, server and client pods and NetworkPolicies, and pulls + # busybox from Docker Hub. Doing that on a virgin or air-gapped cluster, + # before anything is installed and with no flag to turn it off, is not + # something a read-only readiness check should do. + enabled: false testImage: busybox:1.36 timeoutSeconds: 60 critical: false @@ -667,6 +715,7 @@ func parseRegistryHostPort(s string) (host string, port int) { // write. VALIDATOR_ROLE selects the check set (control-plane vs compute-plane). func buildClusterValidatorJob(name, image, pullSecret, role, runID string, noCleanup bool) *batchv1.Job { backoff := int32(0) + activeDeadline := int64(clusterValidatorTimeout/time.Second) + 60 // Pod shape mirrors deployments/nvca-operator/templates/cronjob.yaml, which // runs this same image. Two producers of one pod spec now exist in two // languages, so they are kept deliberately in step: without the security @@ -725,6 +774,14 @@ func buildClusterValidatorJob(name, image, pullSecret, role, runID string, noCle }, Spec: batchv1.JobSpec{ BackoffLimit: &backoff, + // Without a deadline an ImagePullBackOff Job never reaches a + // terminal state, so TTLSecondsAfterFinished never fires and the + // Job, its RBAC and its pull secret persist indefinitely. The + // deferred sweeps are suppressed on that path by design, because + // the pod may still be running, so this is the only reclaim. + // Sized above the runner's own budget so it never truncates a wait + // that is still making progress. + ActiveDeadlineSeconds: &activeDeadline, Template: corev1.PodTemplateSpec{ ObjectMeta: metav1.ObjectMeta{Labels: clusterValidatorRoleLabels(role)}, Spec: podSpec, diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index ff61e2a931..f9732e31c1 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -246,7 +246,7 @@ func TestEnsureClusterValidatorRBAC_WritableResources(t *testing.T) { const role = clusterValidatorControlPlaneRole const runID = "testrunid" - require.NoError(t, ensureClusterValidatorRBAC(ctx, client, role, runID)) + require.NoError(t, ensureClusterValidatorRBAC(ctx, client, role, runID, false)) cr, err := client.RbacV1().ClusterRoles().Get(ctx, clusterValidatorRBACName(role, runID), metav1.GetOptions{}) require.NoError(t, err) @@ -706,7 +706,7 @@ func TestEnsureClusterValidatorRBAC_DoesNotAdoptExistingObjects(t *testing.T) { }, }) - err := ensureClusterValidatorRBAC(ctx, client, role, runID) + err := ensureClusterValidatorRBAC(ctx, client, role, runID, false) require.Error(t, err, "a pre-existing object must not be adopted, forged labels or not") _, bindErr := client.RbacV1().ClusterRoleBindings().Get(ctx, name, metav1.GetOptions{}) @@ -831,13 +831,17 @@ func TestSweepClusterValidatorConfig_DeletesOwnAndSparesOperators(t *testing.T) func TestRunClusterValidator_NoCleanupKeepsPullSecretAndPriorJob(t *testing.T) { prior := &batchv1.Job{ObjectMeta: metav1.ObjectMeta{ Name: clusterValidatorName + "-earlier", Namespace: clusterValidatorNamespace, - Labels: clusterValidatorRoleLabels(clusterValidatorControlPlaneRole), + Labels: clusterValidatorRoleLabels(clusterValidatorControlPlaneRole), + CreationTimestamp: metav1.NewTime(time.Now()), }} secret := &corev1.Secret{ ObjectMeta: metav1.ObjectMeta{ Name: validatorPullSecretRoleName(clusterValidatorControlPlaneRole), Namespace: clusterValidatorNamespace, Labels: clusterValidatorRoleLabels(clusterValidatorControlPlaneRole), + // The fake clientset leaves this zero, which the orphan sweeper + // reads as older than any TTL. A real apiserver stamps it. + CreationTimestamp: metav1.NewTime(time.Now()), }, Type: corev1.SecretTypeDockerConfigJson, } @@ -892,3 +896,124 @@ func TestBuildClusterValidatorJob_MatchesChartPodShape(t *testing.T) { assert.False(t, spec.Containers[0].Resources.Requests.Cpu().IsZero(), "a namespace with a LimitRange or quota rejects a pod with no requests") } + +// An ImagePullBackOff Job never reaches a terminal state on its own, so +// TTLSecondsAfterFinished never fires and the Job, its cluster-wide RBAC and +// its NGC-derived pull secret persist forever. The deferred sweeps are +// suppressed on that path by design, so the deadline is the only reclaim. +func TestBuildClusterValidatorJob_SetsActiveDeadline(t *testing.T) { + job := buildClusterValidatorJob("j", "nvcr.io/x/validator:1", "", + clusterValidatorControlPlaneRole, "runid", false) + require.NotNil(t, job.Spec.ActiveDeadlineSeconds, + "a Job with no deadline cannot terminate itself on a pull failure") + assert.Greater(t, *job.Spec.ActiveDeadlineSeconds, int64(clusterValidatorTimeout/time.Second), + "the deadline must outlast the runner's own wait so it never truncates a live run") +} + +// The pull secret holds $oauthtoken:$NGC_API_KEY, and the deferred sweep is +// skipped whenever the pod may still be running, which is the pull-failure +// path. The orphan sweeper is its only other reclaim. +func TestSweepOrphanClusterValidatorRBAC_ReclaimsStalePullSecret(t *testing.T) { + old := metav1.NewTime(time.Now().Add(-time.Hour)) + stale := &corev1.Secret{ObjectMeta: metav1.ObjectMeta{ + Name: validatorPullSecretRoleName(clusterValidatorControlPlaneRole), + Namespace: clusterValidatorNamespace, + Labels: clusterValidatorLabels(), + CreationTimestamp: old, + }} + client := fake.NewSimpleClientset(stale) + sweepOrphanClusterValidatorRBAC(context.Background(), client, orphanValidatorRBACTTL) + + _, err := client.CoreV1().Secrets(clusterValidatorNamespace).Get( + context.Background(), stale.Name, metav1.GetOptions{}) + assert.True(t, apierrors.IsNotFound(err), "a stale managed pull secret must be reclaimed") +} + +// A fresh secret may belong to a concurrent run, and an operator-supplied one +// carries neither our labels nor our name. +func TestSweepOrphanClusterValidatorRBAC_SparesFreshAndUnmanagedSecrets(t *testing.T) { + fresh := &corev1.Secret{ObjectMeta: metav1.ObjectMeta{ + Name: validatorPullSecretRoleName(clusterValidatorControlPlaneRole), + Namespace: clusterValidatorNamespace, + Labels: clusterValidatorLabels(), + CreationTimestamp: metav1.NewTime(time.Now()), + }} + operator := &corev1.Secret{ObjectMeta: metav1.ObjectMeta{ + Name: "operator-pull", + Namespace: clusterValidatorNamespace, + Labels: clusterValidatorLabels(), + CreationTimestamp: metav1.NewTime(time.Now().Add(-time.Hour)), + }} + client := fake.NewSimpleClientset(fresh, operator) + sweepOrphanClusterValidatorRBAC(context.Background(), client, orphanValidatorRBACTTL) + + for _, name := range []string{fresh.Name, operator.Name} { + _, err := client.CoreV1().Secrets(clusterValidatorNamespace).Get( + context.Background(), name, metav1.GetOptions{}) + assert.NoError(t, err, "%s must survive the orphan sweep", name) + } +} + +// The preflight ConfigMap must not switch on active NetworkPolicy enforcement. +// VALIDATOR_PREFLIGHT only suppresses the summary write, so enforcement would +// still create namespaces, pods and NetworkPolicies and pull busybox from +// Docker Hub, on a cluster where nothing is installed yet. +func TestBuildControlPlaneValidatorConfig_EnforcementDisabledForPreflight(t *testing.T) { + cfg := buildControlPlaneValidatorConfig(nil) + idx := strings.Index(cfg, "enforcement:") + require.GreaterOrEqual(t, idx, 0, "the enforcement block must be present") + assert.Contains(t, cfg[idx:], "enabled: false", + "a read-only readiness check must not mutate the cluster or need Docker Hub") +} + +// --no-cleanup must outlast the orphan TTL. Without a preserve marker the +// orphan sweeper reclaims a deliberately kept run after 30 minutes, which +// makes the flag mean "keep for 30 minutes". +func TestSweepOrphanClusterValidatorRBAC_SparesPreservedObjects(t *testing.T) { + labels := clusterValidatorLabels() + labels[clusterValidatorPreserveLabel] = "true" + old := metav1.NewTime(time.Now().Add(-time.Hour)) + client := fake.NewSimpleClientset( + &rbacv1.ClusterRole{ObjectMeta: metav1.ObjectMeta{ + Name: clusterValidatorName + "-control-plane-abc", Labels: labels, CreationTimestamp: old, + }}, + &corev1.Secret{ObjectMeta: metav1.ObjectMeta{ + Name: validatorPullSecretRoleName(clusterValidatorControlPlaneRole), + Namespace: clusterValidatorNamespace, Labels: labels, CreationTimestamp: old, + }}, + ) + sweepOrphanClusterValidatorRBAC(context.Background(), client, orphanValidatorRBACTTL) + + _, err := client.RbacV1().ClusterRoles().Get(context.Background(), + clusterValidatorName+"-control-plane-abc", metav1.GetOptions{}) + assert.NoError(t, err, "a preserved ClusterRole must survive the orphan sweep") + _, err = client.CoreV1().Secrets(clusterValidatorNamespace).Get(context.Background(), + validatorPullSecretRoleName(clusterValidatorControlPlaneRole), metav1.GetOptions{}) + assert.NoError(t, err, "a preserved pull secret must survive the orphan sweep") +} + +// The preserve marker has to be applied at creation, not just honoured by the +// sweeper, or the mechanism is inert. +func TestEnsureClusterValidatorRBAC_LabelsPreservedRun(t *testing.T) { + client := fake.NewSimpleClientset() + require.NoError(t, ensureClusterValidatorRBAC(context.Background(), client, + clusterValidatorControlPlaneRole, "abc123", true)) + + cr, err := client.RbacV1().ClusterRoles().Get(context.Background(), + clusterValidatorRBACName(clusterValidatorControlPlaneRole, "abc123"), metav1.GetOptions{}) + require.NoError(t, err) + assert.Equal(t, "true", cr.Labels[clusterValidatorPreserveLabel], + "--no-cleanup must mark its objects so the orphan sweeper spares them") +} + +func TestEnsureClusterValidatorRBAC_NoPreserveLabelByDefault(t *testing.T) { + client := fake.NewSimpleClientset() + require.NoError(t, ensureClusterValidatorRBAC(context.Background(), client, + clusterValidatorControlPlaneRole, "abc123", false)) + + cr, err := client.RbacV1().ClusterRoles().Get(context.Background(), + clusterValidatorRBACName(clusterValidatorControlPlaneRole, "abc123"), metav1.GetOptions{}) + require.NoError(t, err) + assert.NotContains(t, cr.Labels, clusterValidatorPreserveLabel, + "an ordinary run must stay reclaimable") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index 623c132c75..97285be354 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -800,9 +800,16 @@ func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namesp // Argo, owns a healthy namespace with no owner=helm object. // Handing them "kubectl delete namespace cert-manager" would // destroy every Certificate and Issuer in the cluster. - hints = append(hints, - fmt.Sprintf("inspect these and remove them only after confirming they are unused: %s get all -n %s", - kctl, strings.Join(emptyShell, " -n "))) + // One command per namespace. kubectl takes a single + // namespace and keeps the last -n it sees, so joining them + // produces a command that silently inspects only the last one + // and reports the rest as empty, which is the opposite of what + // an operator deciding whether to delete them needs. + for _, ns := range emptyShell { + hints = append(hints, fmt.Sprintf( + "inspect %s and remove it only after confirming it is unused: %s get all -n %s", + ns, kctl, ns)) + } } // Only a namespace stuck Terminating blocks the run. "No Helm // release" is a heuristic over a conditionally-installed stack, so diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go index 5904679b98..5309838f4b 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go @@ -115,6 +115,7 @@ func resolveValidatorPullSecret( ctx context.Context, client kubernetes.Interface, provided, image, role string, + preserve bool, ) (string, error) { if provided != "" { return provided, nil @@ -127,13 +128,13 @@ func resolveValidatorPullSecret( scanCtx, cancel := context.WithTimeout(ctx, validatorPullSecretScanTimeout) defer cancel() - if name, err := scanAndMirrorPullSecret(scanCtx, client, registry, role); err != nil { + if name, err := scanAndMirrorPullSecret(scanCtx, client, registry, role, preserve); err != nil { return "", err } else if name != "" { return name, nil } - if name, err := autoCreatePullSecretFromEnv(scanCtx, client, registry, role); err != nil { + if name, err := autoCreatePullSecretFromEnv(scanCtx, client, registry, role, preserve); err != nil { return "", err } else if name != "" { return name, nil @@ -165,7 +166,7 @@ func parseRegistryFromImage(image string) string { // registry. Mirrors the body into clusterValidatorNamespace when the match // lives elsewhere, so the Job can reference the secret without cross-namespace // lookups. -func scanAndMirrorPullSecret(ctx context.Context, client kubernetes.Interface, registry, role string) (string, error) { +func scanAndMirrorPullSecret(ctx context.Context, client kubernetes.Interface, registry, role string, preserve bool) (string, error) { for _, ns := range validatorPullSecretSearchNamespaces { // Filter client-side rather than via FieldSelector: server-side // type= selector on Secrets is only honored from k8s 1.27 onward. @@ -201,7 +202,7 @@ func scanAndMirrorPullSecret(ctx context.Context, client kubernetes.Interface, r // the destination namespace, and writeDockerConfigSecret's // delete-and-recreate path would otherwise destroy that // secret on type mismatch. - if err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretRoleName(role), role, cfg); err != nil { + if err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretRoleName(role), role, cfg, preserve); err != nil { return "", fmt.Errorf("mirror pull secret %s/%s to %s/%s: %w", s.Namespace, s.Name, clusterValidatorNamespace, validatorPullSecretRoleName(role), err) } @@ -222,7 +223,7 @@ func dockerConfigHasRegistry(cfg []byte, registry string) bool { return ok } -func autoCreatePullSecretFromEnv(ctx context.Context, client kubernetes.Interface, registry, role string) (string, error) { +func autoCreatePullSecretFromEnv(ctx context.Context, client kubernetes.Interface, registry, role string, preserve bool) (string, error) { apiKey := firstNonEmptyEnv(ngcAPIKeyEnvNames...) if apiKey == "" { return "", nil @@ -240,7 +241,7 @@ func autoCreatePullSecretFromEnv(ctx context.Context, client kubernetes.Interfac if err != nil { return "", fmt.Errorf("encode dockerconfigjson for %s: %w", registry, err) } - if err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretRoleName(role), role, cfg); err != nil { + if err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretRoleName(role), role, cfg, preserve); err != nil { return "", fmt.Errorf("auto-create pull secret %s/%s: %w", clusterValidatorNamespace, validatorPullSecretRoleName(role), err) } @@ -275,8 +276,8 @@ func buildDockerConfigJSON(registry, username, password string) ([]byte, error) // Mirrors cmd/self_hosted_up.go's ensureDockerConfigSecret. Attaches the // CLI's managed-by labels so a future cleanup path can identify resources // to remove. -func writeDockerConfigSecret(ctx context.Context, client kubernetes.Interface, namespace, name, role string, dockerConfig []byte) error { - labels := clusterValidatorRoleLabels(role) +func writeDockerConfigSecret(ctx context.Context, client kubernetes.Interface, namespace, name, role string, dockerConfig []byte, preserve bool) error { + labels := clusterValidatorRoleLabelsPreserved(role, preserve) secrets := client.CoreV1().Secrets(namespace) secret := &corev1.Secret{ ObjectMeta: metav1.ObjectMeta{ diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go index f3d7e7354a..aa0b5227e7 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go @@ -139,7 +139,7 @@ func TestWriteDockerConfigSecret_Create(t *testing.T) { client := fake.NewSimpleClientset() cfg := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "key") - require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", clusterValidatorControlPlaneRole, cfg)) + require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", clusterValidatorControlPlaneRole, cfg, false), false) got, err := client.CoreV1().Secrets("default").Get(context.Background(), "nvcr-pull-secret", metav1.GetOptions{}) require.NoError(t, err) @@ -168,7 +168,7 @@ func TestWriteDockerConfigSecret_Update(t *testing.T) { Data: map[string][]byte{corev1.DockerConfigJsonKey: old}, }) - require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh)) + require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh, false), false) got, _ := client.CoreV1().Secrets("default").Get(context.Background(), "nvcr-pull-secret", metav1.GetOptions{}) assert.Equal(t, fresh, got.Data[corev1.DockerConfigJsonKey], "data must be updated to the fresh body") @@ -191,7 +191,7 @@ func TestWriteDockerConfigSecret_TypeMismatchReplaces(t *testing.T) { Data: map[string][]byte{"some-key": []byte("some-value")}, }) - require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh)) + require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh, false), false) got, err := client.CoreV1().Secrets("default").Get(context.Background(), "nvcr-pull-secret", metav1.GetOptions{}) require.NoError(t, err) @@ -217,7 +217,7 @@ func TestWriteDockerConfigSecret_TypeMismatchRefusesUnlabeledSecret(t *testing.T Data: map[string][]byte{"operator-payload": operatorPayload}, }) - err := writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh) + err := writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh, false) require.Error(t, err, "must refuse to destroy a non-CLI-managed secret") assert.Contains(t, err.Error(), "not managed by nvcf-cli") @@ -236,7 +236,7 @@ func TestScanAndMirrorPullSecret_FoundInDefault(t *testing.T) { Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, }) - name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole) + name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, false) require.NoError(t, err) assert.Equal(t, "operator-secret", name) @@ -257,7 +257,7 @@ func TestScanAndMirrorPullSecret_FoundInNvcfMirroredToDefault(t *testing.T) { Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, }) - name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole) + name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, false) require.NoError(t, err) assert.Equal(t, validatorPullSecretRoleName(clusterValidatorControlPlaneRole), name) @@ -279,14 +279,14 @@ func TestScanAndMirrorPullSecret_RegistryMismatch(t *testing.T) { Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, }) - name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole) + name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, false) require.NoError(t, err) assert.Equal(t, "", name, "secret for a different registry must not match") } func TestScanAndMirrorPullSecret_NoSecrets(t *testing.T) { client := fake.NewSimpleClientset() - name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole) + name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, false) require.NoError(t, err) assert.Equal(t, "", name) } @@ -306,7 +306,7 @@ func TestScanAndMirrorPullSecret_PrefersDefaultNamespace(t *testing.T) { }, ) - name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole) + name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, false) require.NoError(t, err) assert.Equal(t, "in-default", name) } @@ -318,7 +318,7 @@ func TestAutoCreatePullSecretFromEnv_NoEnv(t *testing.T) { } client := fake.NewSimpleClientset() - got, err := autoCreatePullSecretFromEnv(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole) + got, err := autoCreatePullSecretFromEnv(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, false) require.NoError(t, err) assert.Equal(t, "", got, "no env var set means no secret minted") @@ -333,7 +333,7 @@ func TestAutoCreatePullSecretFromEnv_KeyPresent(t *testing.T) { t.Setenv("NGC_API_KEY", "nvapi-test-123") client := fake.NewSimpleClientset() - got, err := autoCreatePullSecretFromEnv(context.Background(), client, "nvcr.io", clusterValidatorControlPlaneRole) + got, err := autoCreatePullSecretFromEnv(context.Background(), client, "nvcr.io", clusterValidatorControlPlaneRole, false) require.NoError(t, err) assert.Equal(t, validatorPullSecretRoleName(clusterValidatorControlPlaneRole), got) @@ -345,7 +345,7 @@ func TestAutoCreatePullSecretFromEnv_KeyPresent(t *testing.T) { func TestResolveValidatorPullSecret_FlagOverride(t *testing.T) { client := fake.NewSimpleClientset() - got, err := resolveValidatorPullSecret(context.Background(), client, "custom-secret", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole) + got, err := resolveValidatorPullSecret(context.Background(), client, "custom-secret", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole, false) require.NoError(t, err) assert.Equal(t, "custom-secret", got, "explicit override always wins") @@ -365,7 +365,7 @@ func TestResolveValidatorPullSecret_ScanWins(t *testing.T) { Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, }) - got, err := resolveValidatorPullSecret(context.Background(), client, "", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole) + got, err := resolveValidatorPullSecret(context.Background(), client, "", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole, false) require.NoError(t, err) // Mirror destination is the validator's well-known name, not the // source secret's name (avoids same-name collisions with operator @@ -384,7 +384,7 @@ func TestResolveValidatorPullSecret_EnvFallback(t *testing.T) { t.Setenv("NVCF_NGC_API_KEY", "nvapi-fallback") client := fake.NewSimpleClientset() - got, err := resolveValidatorPullSecret(context.Background(), client, "", "nvcr.io/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole) + got, err := resolveValidatorPullSecret(context.Background(), client, "", "nvcr.io/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole, false) require.NoError(t, err) assert.Equal(t, validatorPullSecretRoleName(clusterValidatorControlPlaneRole), got) @@ -403,7 +403,7 @@ func TestResolveValidatorPullSecret_EnvFallbackRefusesMirroredRegistry(t *testin client := fake.NewSimpleClientset() got, err := resolveValidatorPullSecret(context.Background(), client, "", - "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole) + "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole, false) require.NoError(t, err) assert.Empty(t, got, "no secret may be minted for a non-NGC registry") } @@ -414,7 +414,7 @@ func TestResolveValidatorPullSecret_AllEmpty(t *testing.T) { } client := fake.NewSimpleClientset() - got, err := resolveValidatorPullSecret(context.Background(), client, "", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole) + got, err := resolveValidatorPullSecret(context.Background(), client, "", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole, false) require.NoError(t, err) assert.Equal(t, "", got, "no override, no scan match, no env var -> empty so kubelet surfaces ImagePullBackOff") } @@ -425,7 +425,7 @@ func TestResolveValidatorPullSecret_UnparsableImage(t *testing.T) { } client := fake.NewSimpleClientset() - got, err := resolveValidatorPullSecret(context.Background(), client, "", "bareimage", clusterValidatorControlPlaneRole) + got, err := resolveValidatorPullSecret(context.Background(), client, "", "bareimage", clusterValidatorControlPlaneRole, false) require.NoError(t, err) assert.Equal(t, "", got, "no registry hostname means no scan target and no auto-create") @@ -450,12 +450,12 @@ func TestManagedPullSecret_IsScopedPerRole(t *testing.T) { cfg := dockerConfigBlob(t, "private.registry.test", "user", "pass") client := fake.NewSimpleClientset() require.NoError(t, writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, - cpName, clusterValidatorControlPlaneRole, cfg)) + cpName, clusterValidatorControlPlaneRole, cfg, false)) require.NoError(t, writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, - gpuName, "compute-plane", cfg)) + gpuName, "compute-plane", cfg, false)) // Our labels, but not a name we generate: must survive. require.NoError(t, writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, - "operator-owned-secret", clusterValidatorControlPlaneRole, cfg)) + "operator-owned-secret", clusterValidatorControlPlaneRole, cfg, false)) sweepManagedPullSecrets(ctx, client, clusterValidatorControlPlaneRole) @@ -481,7 +481,7 @@ func TestManagedPullSecret_LabelsMatchOnlyItsOwnRole(t *testing.T) { cfg := dockerConfigBlob(t, "private.registry.test", "user", "pass") require.NoError(t, writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretRoleName(clusterValidatorControlPlaneRole), - clusterValidatorControlPlaneRole, cfg)) + clusterValidatorControlPlaneRole, cfg, false)) got, err := client.CoreV1().Secrets(clusterValidatorNamespace).Get(ctx, validatorPullSecretRoleName(clusterValidatorControlPlaneRole), metav1.GetOptions{}) @@ -513,7 +513,7 @@ func TestWriteDockerConfigSecret_RefusesUnmanagedSameTypeSecret(t *testing.T) { }) err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, - "nvcf-preflight-pull-secret-control-plane", clusterValidatorControlPlaneRole, ours) + "nvcf-preflight-pull-secret-control-plane", clusterValidatorControlPlaneRole, ours, false) require.Error(t, err, "an unmanaged secret of the same type must not be overwritten") assert.Contains(t, err.Error(), "not managed by nvcf-cli") @@ -568,7 +568,7 @@ func TestWriteDockerConfigSecret_RefusesUnmanagedAfterCreateRace(t *testing.T) { }) err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, name, - clusterValidatorControlPlaneRole, ours) + clusterValidatorControlPlaneRole, ours, false) require.Error(t, err, "losing the create race to an unmanaged secret must not overwrite it") assert.Contains(t, err.Error(), "not managed by nvcf-cli") @@ -599,7 +599,7 @@ func TestWriteDockerConfigSecret_TypeMismatchDeletePinsTheInspectedObject(t *tes }) require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", - "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh)) + "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh, false), false) require.NotNil(t, opts.Preconditions, "delete must carry preconditions") require.NotNil(t, opts.Preconditions.UID) @@ -635,7 +635,7 @@ func TestWriteDockerConfigSecret_TypeMismatchStopsOnDeleteConflict(t *testing.T) }) err := writeDockerConfigSecret(context.Background(), client, "default", - "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh) + "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh, false) require.Error(t, err, "a changed object must abort the replace") assert.False(t, created, "must not create over an object that was never vetted") } @@ -649,7 +649,7 @@ func TestAutoCreatePullSecretFromEnv_RefusesNonNGCRegistry(t *testing.T) { client := fake.NewSimpleClientset() name, err := autoCreatePullSecretFromEnv(context.Background(), client, - "ghcr.io", clusterValidatorControlPlaneRole) + "ghcr.io", clusterValidatorControlPlaneRole, false) require.NoError(t, err) assert.Empty(t, name, "no secret may be minted for a non-NGC registry") @@ -676,7 +676,7 @@ func TestScanAndMirrorPullSecret_DoesNotAdoptTheOtherRolesSecret(t *testing.T) { client := fake.NewSimpleClientset(otherRole) got, err := scanAndMirrorPullSecret(context.Background(), client, "nvcr.io", - clusterValidatorComputePlaneRole) + clusterValidatorComputePlaneRole, false) require.NoError(t, err) assert.NotEqual(t, otherRole.Name, got, "the compute role must not adopt the control-plane role's managed Secret") @@ -694,7 +694,7 @@ func TestScanAndMirrorPullSecret_AdoptsOperatorSuppliedSecret(t *testing.T) { client := fake.NewSimpleClientset(operator) got, err := scanAndMirrorPullSecret(context.Background(), client, "nvcr.io", - clusterValidatorComputePlaneRole) + clusterValidatorComputePlaneRole, false) require.NoError(t, err) assert.Equal(t, "operator-pull", got) } @@ -714,7 +714,7 @@ func TestScanAndMirrorPullSecret_AdoptsOwnRoleSecret(t *testing.T) { client := fake.NewSimpleClientset(own) got, err := scanAndMirrorPullSecret(context.Background(), client, "nvcr.io", - clusterValidatorComputePlaneRole) + clusterValidatorComputePlaneRole, false) require.NoError(t, err) assert.Equal(t, own.Name, got) } diff --git a/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces_test.go b/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces_test.go index b5319c20f2..236e0102fd 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stack_namespaces_test.go @@ -108,9 +108,13 @@ func TestStackReleaseNamespaces_UnreadableFragmentYieldsNothing(t *testing.T) { "01.yaml.gotmpl": "releases:\n - name: a\n namespace: one\n", "02.yaml.gotmpl": "releases:\n - name: b\n namespace: two\n", }) + // A directory, not a chmod 000 file: root bypasses the permission bits, so + // a mode-based fixture passes locally and fails in CI, where tests run as + // root. os.ReadFile returns EISDIR for every UID, so the test means the + // same thing everywhere rather than being skipped where it matters most. unreadable := filepath.Join(dir, "helmfile.d", "02.yaml.gotmpl") - require.NoError(t, os.Chmod(unreadable, 0o000)) - t.Cleanup(func() { _ = os.Chmod(unreadable, 0o600) }) + require.NoError(t, os.Remove(unreadable)) + require.NoError(t, os.Mkdir(unreadable, 0o755)) assert.Nil(t, stackReleaseNamespaces(dir), "a partial parse must not masquerade as the stack's full namespace set") diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go index 6278985c93..e99a06868f 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go @@ -449,3 +449,22 @@ func TestStaleNamespaceCheck_TerminatingIsStillAnError(t *testing.T) { r := staleNamespaceCheck(prober, "", []string{"nvcf"}).Run(context.Background()) assert.Equal(t, SeverityError, r.Severity) } + +// kubectl keeps only the last -n it is given, so a joined command inspects one +// namespace and reports the rest as empty, which is the opposite of what an +// operator deciding whether to delete them needs. +func TestStaleNamespaceCheck_HintsOneCommandPerNamespace(t *testing.T) { + pinCurrentKubeContext(t, "") + prober := func(_ context.Context, _ string, _ []string) ([]StaleNamespace, error) { + return []StaleNamespace{ + {Name: "api-keys", Reason: "no Helm release"}, + {Name: "ess", Reason: "no Helm release"}, + }, nil + } + r := staleNamespaceCheck(prober, "", []string{"api-keys", "ess"}).Run(context.Background()) + + assert.NotContains(t, r.Message, "-n api-keys -n ess", + "a joined namespace list silently inspects only the last one") + assert.Contains(t, r.Message, "get all -n api-keys") + assert.Contains(t, r.Message, "get all -n ess") +} From 937c88d4288e9d793ac761ed96b8293eaa90b692 Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 22 Sep 2026 18:10:09 +0530 Subject: [PATCH 34/55] docs(nvcf-cli): give isBareRegistryHost and isNGCRegistry their own doc comments An earlier insertion landed isBareRegistryHost's doc inside isNGCRegistry's comment block, leaving one function undocumented and the other described by two stacked paragraphs. Same insertion-before-anchor pattern fixed elsewhere in this branch; no behaviour change. --- .../nvcf-cli/internal/selfhosted/validatortag.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go index 6b96684eee..59de253e63 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go @@ -436,6 +436,14 @@ var ngcApprovedHosts = []string{ ".ngc.nvidia", } +// isBareRegistryHost reports whether s is a plain host[:port], with nothing in +// it that could move the request somewhere else once concatenated into a URL. +// +// This matters because the registry string is interpolated directly into +// "https://" + registry + "/...". A value like "evil.com/x.nvcr.io" ends with a +// trusted suffix but parses to host evil.com, so a suffix check alone would +// authorize sending credentials to an attacker. IPv6 literals keep their +// brackets and are allowed. func isBareRegistryHost(s string) bool { if s == "" { return false @@ -457,14 +465,6 @@ func isBareRegistryHost(s string) bool { // domain. The check strips any port from the registry string before matching // so that nvcr.io:443 is handled correctly, and uses dot-boundary matching to // reject deceptive suffixes such as evilnvcr.io or nvidia.com.invalid. -// isBareRegistryHost reports whether s is a plain host[:port], with nothing in -// it that could move the request somewhere else once concatenated into a URL. -// -// This matters because the registry string is interpolated directly into -// "https://" + registry + "/...". A value like "evil.com/x.nvcr.io" ends with a -// trusted suffix but parses to host evil.com, so a suffix check alone would -// authorize sending credentials to an attacker. IPv6 literals keep their -// brackets and are allowed. func isNGCRegistry(registry string) bool { // Never treat a value we cannot safely place in a URL as an NGC host: the // caller uses this to decide whether to forward the NGC API key. From fe418ddf01b1af00ef0206623635526030596e08 Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 22 Sep 2026 18:10:39 +0530 Subject: [PATCH 35/55] fix(nvcf-cli): scope the validator's pull secret and config to one run The pull Secret and the network-checks ConfigMap were both created under predictable names and owned by labels alone. The managed labels are three public constants, so anyone able to create objects in the validator's namespace could pre-create either name wearing those labels, pass the ownership check, and receive whatever the run wrote there. For the Secret that is the NGC credential. Both names now carry the run's unguessable suffix, matching what the RBAC objects already did, and the Secret write is create-only: nothing this CLI created can hold a name it just generated, so an AlreadyExists means another object does and erroring beats overwriting. That removed the last caller of refuseIfUnmanaged, which is deleted here. Run-scoping also removes two lifetime conflicts. Two overlapping commands no longer share one ConfigMap, where the first to finish deleted config the other pod had not read yet; and a sweep can no longer delete a Secret another run selected. The orphan sweeper gains Secret and ConfigMap arms, because run-scoped names removed the accidental self-healing a fixed name gave us: a killed run used to leave one object the next run overwrote, and would now leave one per run, per --wait poll. Also here: the Job carries activeDeadlineSeconds, so an ImagePullBackOff can reach a terminal state and its TTL can fire rather than leaking the Job, its cluster-wide RBAC and its pull secret indefinitely; --no-cleanup marks every object it preserves so the orphan sweeper spares them instead of reclaiming a deliberately kept run after 30 minutes; and enforcement is disabled in the preflight template, since a readiness check should not create namespaces, pods and NetworkPolicies or need Docker Hub egress before anything is installed. --- .../internal/selfhosted/clustervalidator.go | 115 +++-- .../selfhosted/clustervalidator_test.go | 108 ++++- .../internal/selfhosted/pullsecret.go | 164 ++----- .../internal/selfhosted/pullsecret_test.go | 403 +++++------------- 4 files changed, 343 insertions(+), 447 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 7ce77715cd..307c599c43 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -137,9 +137,24 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image // inside it reclaiming them breaks the pod that is still running. podMayBeRunning := false + // Random per-run identity. Every object this run creates carries it, so a + // predictable name cannot be pre-created by someone else and then either + // bound to the validator's cluster-wide permissions or overwritten with the + // NGC credential. Generated before anything is created, because the pull + // secret name needs it too. + runID, err := newValidatorRunID() + if err != nil { + return ClusterValidatorResult{Err: err} + } + + // Reclaim leftovers from dead runs before resolving this run's pull secret, + // not after: the sweep matches on the shared name prefix, so running it + // later can delete the Secret this run just selected. + sweepOrphanClusterValidatorRBAC(vctx, client, orphanValidatorRBACTTL) + // Resolver errors are non-fatal: fall through to the caller's value and // let waitForClusterValidatorJob surface ImagePullBackOff if needed. - if resolved, err := resolveValidatorPullSecret(ctx, client, pullSecret, image, role, noCleanup); err == nil { + if resolved, err := resolveValidatorPullSecret(ctx, client, pullSecret, image, role, runID, noCleanup); err == nil { pullSecret = resolved } // Sweep only this role's managed pull secret, and only once the pod can no @@ -153,17 +168,10 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image // per-role secret scoping exists to prevent. defer func() { if !noCleanup && !podMayBeRunning { - sweepManagedPullSecrets(context.Background(), client, role) + sweepManagedPullSecrets(context.Background(), client, role, runID) } }() - // Random per-run identity for the SA/ClusterRole/ClusterRoleBinding, so a - // predictable name cannot be pre-created by someone else and then bound to - // the validator's cluster-wide permissions. - runID, err := newValidatorRunID() - if err != nil { - return ClusterValidatorResult{Err: err} - } // Register the cleanup before the bootstrap, not after. ensureClusterValidatorRBAC // creates three objects in sequence and returns on the first failure, so a // kubeconfig that can create a ServiceAccount but not a cluster-scoped @@ -193,10 +201,10 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image // operator asked to keep the run's artifacts. defer func() { if !noCleanup && !podMayBeRunning { - sweepClusterValidatorConfig(context.Background(), client) + sweepClusterValidatorConfig(context.Background(), client, runID) } }() - if err := ensureClusterValidatorConfig(vctx, client, registries); err != nil { + if err := ensureClusterValidatorConfig(vctx, client, registries, runID, noCleanup); err != nil { // Non-fatal: continue without the ConfigMap; the validator skips // configurable reachability and enforcement checks silently unless // we surface this note in the transcript. @@ -204,7 +212,6 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image } } - sweepOrphanClusterValidatorRBAC(vctx, client, orphanValidatorRBACTTL) // Skipped under --no-cleanup: this runs before the new Job is created, so // otherwise the next same-role run destroys the Job the operator asked to // keep. The singleton guarantee is worth less than the artifact they kept. @@ -359,13 +366,38 @@ func clusterValidatorRoleLabelsPreserved(role string, preserve bool) map[string] // should read. Only the control-plane role has one; the compute-plane role gets // a sentinel that resolves to nothing so it cannot inherit the control-plane's // reachability and enforcement config. -func validatorConfigNameForRole(role string) string { +func validatorConfigNameForRole(role, runID string) string { if role == clusterValidatorControlPlaneRole { - return clusterValidatorConfigName + return clusterValidatorConfigRunName(runID) } return clusterValidatorNoConfigName } +// clusterValidatorConfigLabels are the managed labels for the network-checks +// ConfigMap, plus the preserve marker when the run was asked to keep its +// artifacts. Without the marker the next run's orphan sweeper reclaims the +// ConfigMap once it is older than the TTL, and an operator re-running a Job +// they deliberately kept gets a validator that silently skips the configurable +// reachability and enforcement checks. +func clusterValidatorConfigLabels(preserve bool) map[string]string { + l := clusterValidatorLabels() + if preserve { + l[clusterValidatorPreserveLabel] = "true" + } + return l +} + +// clusterValidatorConfigRunName scopes the network-checks ConfigMap to one run. +// A shared name lets two overlapping commands overwrite each other's registry +// list, and lets the first to finish delete the config the other pod has not +// read yet. +func clusterValidatorConfigRunName(runID string) string { + if runID == "" { + return clusterValidatorConfigName + } + return clusterValidatorConfigName + "-" + runID +} + // sweepOrphanClusterValidatorRBAC removes validator RBAC left behind by a run // that died before its deferred cleanup (SIGKILL, OOM, lost terminal). // @@ -382,6 +414,18 @@ func sweepOrphanClusterValidatorRBAC(ctx context.Context, client kubernetes.Inte // reclaimable requires the generated name as well as the labels and the // age. Labels alone are three public constants and can be copied onto // anything, and this deletes cluster-scoped objects with errors swallowed. + // Network-check ConfigMaps carry their own generated-name prefix. + reclaimableConfig := func(o metav1.Object) bool { + if !strings.HasPrefix(o.GetName(), clusterValidatorConfigName) { + return false + } + if o.GetLabels()[clusterValidatorPreserveLabel] == "true" { + return false + } + ts := o.GetCreationTimestamp() + return ts.Before(&cutoff) + } + // Pull secrets carry the other generated-name prefix. reclaimableSecret := func(o metav1.Object) bool { if !strings.HasPrefix(o.GetName(), validatorPullSecretName) { @@ -419,6 +463,19 @@ func sweepOrphanClusterValidatorRBAC(ctx context.Context, client kubernetes.Inte } } } + // Network-check ConfigMaps too. Run-scoping the name removed the accidental + // self-healing the fixed name gave us: a killed run used to leave exactly + // one object that the next run overwrote, and now each leaves its own, so + // under --wait they accumulate per poll. Same shape as the RBAC objects. + cms := client.CoreV1().ConfigMaps(clusterValidatorNamespace) + if l, err := cms.List(ctx, opts); err == nil { + for i := range l.Items { + if o := &l.Items[i]; reclaimableConfig(o) { + _ = cms.Delete(ctx, o.Name, deleteExactly(o)) + } + } + } + // Pull secrets too: the deferred sweep is suppressed whenever the pod may // still be running, and that is exactly the ImagePullBackOff path, so // without this arm a Secret holding $oauthtoken:$NGC_API_KEY is the one @@ -500,7 +557,7 @@ func sweepPriorClusterValidatorJobs(ctx context.Context, client kubernetes.Inter // Operator-supplied secrets via --cluster-validator-pull-secret aren't // labeled by us and are skipped by the selector. Errors are swallowed: // failing to clean up is preferable to failing the check itself. -func sweepManagedPullSecrets(ctx context.Context, client kubernetes.Interface, role string) { +func sweepManagedPullSecrets(ctx context.Context, client kubernetes.Interface, role, runID string) { // Same reasoning as sweepPriorClusterValidatorJobs: the generated name is // part of the ownership test, not just the labels. secrets := client.CoreV1().Secrets(clusterValidatorNamespace) @@ -509,7 +566,9 @@ func sweepManagedPullSecrets(ctx context.Context, client kubernetes.Interface, r return } for i := range l.Items { - if !strings.HasPrefix(l.Items[i].Name, validatorPullSecretName) { + // Only this run's Secret. The name is unguessable and unique per run, + // so a sweep can no longer take out a Secret another run selected. + if l.Items[i].Name != validatorPullSecretRunName(role, runID) { continue } _ = secrets.Delete(ctx, l.Items[i].Name, deleteExactly(&l.Items[i])) @@ -610,18 +669,18 @@ enforcement: // ensureClusterValidatorConfig creates or updates the network-check ConfigMap. // extraRegistries are added as non-critical tcp+tls probes. Best-effort: the // validator skips configurable checks when the ConfigMap is absent. -func ensureClusterValidatorConfig(ctx context.Context, client kubernetes.Interface, extraRegistries []string) error { +func ensureClusterValidatorConfig(ctx context.Context, client kubernetes.Interface, extraRegistries []string, runID string, preserve bool) error { content := buildControlPlaneValidatorConfig(extraRegistries) desired := &corev1.ConfigMap{ ObjectMeta: metav1.ObjectMeta{ - Name: clusterValidatorConfigName, + Name: clusterValidatorConfigRunName(runID), Namespace: clusterValidatorNamespace, - Labels: clusterValidatorLabels(), + Labels: clusterValidatorConfigLabels(preserve), }, Data: map[string]string{"config.yaml": content}, } - existing, err := client.CoreV1().ConfigMaps(clusterValidatorNamespace).Get(ctx, clusterValidatorConfigName, metav1.GetOptions{}) + existing, err := client.CoreV1().ConfigMaps(clusterValidatorNamespace).Get(ctx, clusterValidatorConfigRunName(runID), metav1.GetOptions{}) if err != nil { if !apierrors.IsNotFound(err) { return fmt.Errorf("get validator config ConfigMap: %w", err) @@ -637,7 +696,7 @@ func ensureClusterValidatorConfig(ctx context.Context, client kubernetes.Interfa if !hasValidatorManagedLabels(existing.Labels) { return fmt.Errorf( "refusing to overwrite ConfigMap %s/%s which is not managed by nvcf-cli", - clusterValidatorNamespace, clusterValidatorConfigName) + clusterValidatorNamespace, clusterValidatorConfigRunName(runID)) } existing.Data = desired.Data existing.Labels = desired.Labels @@ -757,7 +816,7 @@ func buildClusterValidatorJob(name, image, pullSecret, role, runID string, noCle // default name, so both roles would resolve the same ConfigMap // and the compute-plane preflight would silently run the // control-plane's active NetworkPolicy enforcement. - {Name: "VALIDATOR_CONFIG_NAME", Value: validatorConfigNameForRole(role)}, + {Name: "VALIDATOR_CONFIG_NAME", Value: validatorConfigNameForRole(role, runID)}, {Name: "VALIDATOR_PREFLIGHT", Value: "true"}, {Name: "VALIDATOR_ROLE", Value: role}, }, @@ -939,15 +998,17 @@ func kubectlLogsHint(kubeContext, jobName string) string { } // sweepClusterValidatorConfig removes the network-checks ConfigMap this run -// created. Only ours: the name is a constant an operator could also be using, -// so the managed labels decide. Errors are swallowed, as with the other sweeps. -func sweepClusterValidatorConfig(ctx context.Context, client kubernetes.Interface) { +// created. The name is scoped to this run, and the managed labels are checked +// as well, so a same-named object belonging to anyone else is left alone. +// Errors are swallowed, as with the other sweeps. +func sweepClusterValidatorConfig(ctx context.Context, client kubernetes.Interface, runID string) { cms := client.CoreV1().ConfigMaps(clusterValidatorNamespace) - cm, err := cms.Get(ctx, clusterValidatorConfigName, metav1.GetOptions{}) + name := clusterValidatorConfigRunName(runID) + cm, err := cms.Get(ctx, name, metav1.GetOptions{}) if err != nil || !hasValidatorManagedLabels(cm.Labels) { return } - _ = cms.Delete(ctx, clusterValidatorConfigName, deleteExactly(cm)) + _ = cms.Delete(ctx, name, deleteExactly(cm)) } // clusterValidatorTolerations mirrors the chart's tolerations so the Job can diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index f9732e31c1..bf7f04a654 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -652,19 +652,19 @@ func TestEnsureClusterValidatorConfig_RefusesUnmanagedConfigMap(t *testing.T) { ctx := context.Background() client := fake.NewSimpleClientset(&corev1.ConfigMap{ ObjectMeta: metav1.ObjectMeta{ - Name: clusterValidatorConfigName, + Name: clusterValidatorConfigRunName("runid"), Namespace: clusterValidatorNamespace, Labels: map[string]string{"owner": "operator"}, }, Data: map[string]string{"config.yaml": "operator: content"}, }) - err := ensureClusterValidatorConfig(ctx, client, nil) + err := ensureClusterValidatorConfig(ctx, client, nil, "runid", false) require.Error(t, err, "an unmanaged ConfigMap must not be overwritten") assert.Contains(t, err.Error(), "not managed by nvcf-cli") got, getErr := client.CoreV1().ConfigMaps(clusterValidatorNamespace).Get(ctx, - clusterValidatorConfigName, metav1.GetOptions{}) + clusterValidatorConfigRunName("runid"), metav1.GetOptions{}) require.NoError(t, getErr) assert.Equal(t, "operator: content", got.Data["config.yaml"], "the operator's ConfigMap content must be untouched") @@ -805,24 +805,24 @@ func TestSweepPriorClusterValidatorJobs_RequiresGeneratedName(t *testing.T) { // cleanup path, so it accumulated in the cluster forever. func TestSweepClusterValidatorConfig_DeletesOwnAndSparesOperators(t *testing.T) { managed := &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{ - Name: clusterValidatorConfigName, Namespace: clusterValidatorNamespace, + Name: clusterValidatorConfigRunName("runid"), Namespace: clusterValidatorNamespace, Labels: clusterValidatorLabels(), }} client := fake.NewSimpleClientset(managed) - sweepClusterValidatorConfig(context.Background(), client) + sweepClusterValidatorConfig(context.Background(), client, "runid") _, err := client.CoreV1().ConfigMaps(clusterValidatorNamespace).Get( - context.Background(), clusterValidatorConfigName, metav1.GetOptions{}) + context.Background(), clusterValidatorConfigRunName("runid"), metav1.GetOptions{}) assert.True(t, apierrors.IsNotFound(err), "our own ConfigMap must be reclaimed") // Same name, operator-owned: the name is a constant they could also use. operator := &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{ - Name: clusterValidatorConfigName, Namespace: clusterValidatorNamespace, + Name: clusterValidatorConfigRunName("runid"), Namespace: clusterValidatorNamespace, Labels: map[string]string{"owner": "operator"}, }} client2 := fake.NewSimpleClientset(operator) - sweepClusterValidatorConfig(context.Background(), client2) + sweepClusterValidatorConfig(context.Background(), client2, "runid") _, err = client2.CoreV1().ConfigMaps(clusterValidatorNamespace).Get( - context.Background(), clusterValidatorConfigName, metav1.GetOptions{}) + context.Background(), clusterValidatorConfigRunName("runid"), metav1.GetOptions{}) assert.NoError(t, err, "an unmanaged ConfigMap with the same name must survive") } @@ -836,7 +836,7 @@ func TestRunClusterValidator_NoCleanupKeepsPullSecretAndPriorJob(t *testing.T) { }} secret := &corev1.Secret{ ObjectMeta: metav1.ObjectMeta{ - Name: validatorPullSecretRoleName(clusterValidatorControlPlaneRole), + Name: validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid"), Namespace: clusterValidatorNamespace, Labels: clusterValidatorRoleLabels(clusterValidatorControlPlaneRole), // The fake clientset leaves this zero, which the orphan sweeper @@ -916,7 +916,7 @@ func TestBuildClusterValidatorJob_SetsActiveDeadline(t *testing.T) { func TestSweepOrphanClusterValidatorRBAC_ReclaimsStalePullSecret(t *testing.T) { old := metav1.NewTime(time.Now().Add(-time.Hour)) stale := &corev1.Secret{ObjectMeta: metav1.ObjectMeta{ - Name: validatorPullSecretRoleName(clusterValidatorControlPlaneRole), + Name: validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid"), Namespace: clusterValidatorNamespace, Labels: clusterValidatorLabels(), CreationTimestamp: old, @@ -933,7 +933,7 @@ func TestSweepOrphanClusterValidatorRBAC_ReclaimsStalePullSecret(t *testing.T) { // carries neither our labels nor our name. func TestSweepOrphanClusterValidatorRBAC_SparesFreshAndUnmanagedSecrets(t *testing.T) { fresh := &corev1.Secret{ObjectMeta: metav1.ObjectMeta{ - Name: validatorPullSecretRoleName(clusterValidatorControlPlaneRole), + Name: validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid"), Namespace: clusterValidatorNamespace, Labels: clusterValidatorLabels(), CreationTimestamp: metav1.NewTime(time.Now()), @@ -978,7 +978,7 @@ func TestSweepOrphanClusterValidatorRBAC_SparesPreservedObjects(t *testing.T) { Name: clusterValidatorName + "-control-plane-abc", Labels: labels, CreationTimestamp: old, }}, &corev1.Secret{ObjectMeta: metav1.ObjectMeta{ - Name: validatorPullSecretRoleName(clusterValidatorControlPlaneRole), + Name: validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid"), Namespace: clusterValidatorNamespace, Labels: labels, CreationTimestamp: old, }}, ) @@ -988,7 +988,7 @@ func TestSweepOrphanClusterValidatorRBAC_SparesPreservedObjects(t *testing.T) { clusterValidatorName+"-control-plane-abc", metav1.GetOptions{}) assert.NoError(t, err, "a preserved ClusterRole must survive the orphan sweep") _, err = client.CoreV1().Secrets(clusterValidatorNamespace).Get(context.Background(), - validatorPullSecretRoleName(clusterValidatorControlPlaneRole), metav1.GetOptions{}) + validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid"), metav1.GetOptions{}) assert.NoError(t, err, "a preserved pull secret must survive the orphan sweep") } @@ -1017,3 +1017,83 @@ func TestEnsureClusterValidatorRBAC_NoPreserveLabelByDefault(t *testing.T) { assert.NotContains(t, cr.Labels, clusterValidatorPreserveLabel, "an ordinary run must stay reclaimable") } + +// Run-scoping the ConfigMap name removed the accidental self-healing the fixed +// name gave us: a killed run used to leave exactly one object that the next run +// overwrote, and now each leaves its own. The deferred sweep is suppressed on +// the pull-failure path, so the orphan sweeper is the only reclaim. +func TestSweepOrphanClusterValidatorRBAC_ReclaimsStaleConfigMap(t *testing.T) { + old := metav1.NewTime(time.Now().Add(-time.Hour)) + stale := &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{ + Name: clusterValidatorConfigRunName("deadbeef01"), + Namespace: clusterValidatorNamespace, + Labels: clusterValidatorLabels(), + CreationTimestamp: old, + }} + client := fake.NewSimpleClientset(stale) + sweepOrphanClusterValidatorRBAC(context.Background(), client, orphanValidatorRBACTTL) + + _, err := client.CoreV1().ConfigMaps(clusterValidatorNamespace).Get( + context.Background(), stale.Name, metav1.GetOptions{}) + assert.True(t, apierrors.IsNotFound(err), + "a per-run ConfigMap left by a killed run must be reclaimed") +} + +func TestSweepOrphanClusterValidatorRBAC_SparesFreshAndUnmanagedConfigMaps(t *testing.T) { + fresh := &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{ + Name: clusterValidatorConfigRunName("aaaaaaaa01"), + Namespace: clusterValidatorNamespace, + Labels: clusterValidatorLabels(), + CreationTimestamp: metav1.NewTime(time.Now()), + }} + operator := &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{ + Name: "operator-owned", + Namespace: clusterValidatorNamespace, + Labels: clusterValidatorLabels(), + CreationTimestamp: metav1.NewTime(time.Now().Add(-time.Hour)), + }} + client := fake.NewSimpleClientset(fresh, operator) + sweepOrphanClusterValidatorRBAC(context.Background(), client, orphanValidatorRBACTTL) + + for _, name := range []string{fresh.Name, operator.Name} { + _, err := client.CoreV1().ConfigMaps(clusterValidatorNamespace).Get( + context.Background(), name, metav1.GetOptions{}) + assert.NoError(t, err, "%s must survive the orphan sweep", name) + } +} + +// --no-cleanup must preserve the ConfigMap as well as the Job and its RBAC. +// Without the marker the next run's orphan sweeper reclaims it after the TTL, +// and an operator re-running the Job they kept gets a validator that silently +// skips the configurable reachability and enforcement checks. +func TestEnsureClusterValidatorConfig_MarksPreservedRun(t *testing.T) { + client := fake.NewSimpleClientset() + require.NoError(t, ensureClusterValidatorConfig(context.Background(), client, nil, "runid", true)) + + cm, err := client.CoreV1().ConfigMaps(clusterValidatorNamespace).Get( + context.Background(), clusterValidatorConfigRunName("runid"), metav1.GetOptions{}) + require.NoError(t, err) + assert.Equal(t, "true", cm.Labels[clusterValidatorPreserveLabel]) + + // And the orphan sweeper honours it even once it is older than the TTL. + cm.CreationTimestamp = metav1.NewTime(time.Now().Add(-time.Hour)) + _, err = client.CoreV1().ConfigMaps(clusterValidatorNamespace).Update( + context.Background(), cm, metav1.UpdateOptions{}) + require.NoError(t, err) + sweepOrphanClusterValidatorRBAC(context.Background(), client, orphanValidatorRBACTTL) + + _, err = client.CoreV1().ConfigMaps(clusterValidatorNamespace).Get( + context.Background(), clusterValidatorConfigRunName("runid"), metav1.GetOptions{}) + assert.NoError(t, err, "a preserved ConfigMap must survive the orphan sweep") +} + +func TestEnsureClusterValidatorConfig_NoPreserveMarkerByDefault(t *testing.T) { + client := fake.NewSimpleClientset() + require.NoError(t, ensureClusterValidatorConfig(context.Background(), client, nil, "runid", false)) + + cm, err := client.CoreV1().ConfigMaps(clusterValidatorNamespace).Get( + context.Background(), clusterValidatorConfigRunName("runid"), metav1.GetOptions{}) + require.NoError(t, err) + assert.NotContains(t, cm.Labels, clusterValidatorPreserveLabel, + "an ordinary run must stay reclaimable") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go index 5309838f4b..1fb43122f0 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go @@ -75,6 +75,20 @@ func validatorPullSecretRoleName(role string) string { return validatorPullSecretName + "-" + role } +// validatorPullSecretRunName is the name this run mints under. It carries the +// run's unguessable suffix because the managed labels are three public +// constants: with a predictable name, anyone able to create a Secret in this +// namespace could pre-create it wearing those labels, pass the ownership check, +// and have the NGC credential written into an object they control. Same +// reasoning as the per-run RBAC names. +func validatorPullSecretRunName(role, runID string) string { + base := validatorPullSecretRoleName(role) + if runID == "" { + return base + } + return base + "-" + runID +} + // Mirrors the chain used by ensureLocalImagePullSecrets in cmd/self_hosted_up.go. var ngcAPIKeyEnvNames = []string{ "NGC_IMAGE_PULL_API_KEY", @@ -114,7 +128,7 @@ var validatorPullSecretSearchNamespaces = []string{ func resolveValidatorPullSecret( ctx context.Context, client kubernetes.Interface, - provided, image, role string, + provided, image, role, runID string, preserve bool, ) (string, error) { if provided != "" { @@ -128,13 +142,13 @@ func resolveValidatorPullSecret( scanCtx, cancel := context.WithTimeout(ctx, validatorPullSecretScanTimeout) defer cancel() - if name, err := scanAndMirrorPullSecret(scanCtx, client, registry, role, preserve); err != nil { + if name, err := scanAndMirrorPullSecret(scanCtx, client, registry, role, runID, preserve); err != nil { return "", err } else if name != "" { return name, nil } - if name, err := autoCreatePullSecretFromEnv(scanCtx, client, registry, role, preserve); err != nil { + if name, err := autoCreatePullSecretFromEnv(scanCtx, client, registry, role, runID, preserve); err != nil { return "", err } else if name != "" { return name, nil @@ -166,7 +180,7 @@ func parseRegistryFromImage(image string) string { // registry. Mirrors the body into clusterValidatorNamespace when the match // lives elsewhere, so the Job can reference the secret without cross-namespace // lookups. -func scanAndMirrorPullSecret(ctx context.Context, client kubernetes.Interface, registry, role string, preserve bool) (string, error) { +func scanAndMirrorPullSecret(ctx context.Context, client kubernetes.Interface, registry, role, runID string, preserve bool) (string, error) { for _, ns := range validatorPullSecretSearchNamespaces { // Filter client-side rather than via FieldSelector: server-side // type= selector on Secrets is only honored from k8s 1.27 onward. @@ -202,11 +216,11 @@ func scanAndMirrorPullSecret(ctx context.Context, client kubernetes.Interface, r // the destination namespace, and writeDockerConfigSecret's // delete-and-recreate path would otherwise destroy that // secret on type mismatch. - if err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretRoleName(role), role, cfg, preserve); err != nil { + if err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretRunName(role, runID), role, cfg, preserve); err != nil { return "", fmt.Errorf("mirror pull secret %s/%s to %s/%s: %w", - s.Namespace, s.Name, clusterValidatorNamespace, validatorPullSecretRoleName(role), err) + s.Namespace, s.Name, clusterValidatorNamespace, validatorPullSecretRunName(role, runID), err) } - return validatorPullSecretRoleName(role), nil + return validatorPullSecretRunName(role, runID), nil } } return "", nil @@ -223,7 +237,7 @@ func dockerConfigHasRegistry(cfg []byte, registry string) bool { return ok } -func autoCreatePullSecretFromEnv(ctx context.Context, client kubernetes.Interface, registry, role string, preserve bool) (string, error) { +func autoCreatePullSecretFromEnv(ctx context.Context, client kubernetes.Interface, registry, role, runID string, preserve bool) (string, error) { apiKey := firstNonEmptyEnv(ngcAPIKeyEnvNames...) if apiKey == "" { return "", nil @@ -241,11 +255,11 @@ func autoCreatePullSecretFromEnv(ctx context.Context, client kubernetes.Interfac if err != nil { return "", fmt.Errorf("encode dockerconfigjson for %s: %w", registry, err) } - if err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretRoleName(role), role, cfg, preserve); err != nil { + if err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretRunName(role, runID), role, cfg, preserve); err != nil { return "", fmt.Errorf("auto-create pull secret %s/%s: %w", - clusterValidatorNamespace, validatorPullSecretRoleName(role), err) + clusterValidatorNamespace, validatorPullSecretRunName(role, runID), err) } - return validatorPullSecretRoleName(role), nil + return validatorPullSecretRunName(role, runID), nil } // Mirrors cmd/self_hosted_up.go's firstNonEmptyEnv; kept local to avoid an @@ -273,126 +287,42 @@ func buildDockerConfigJSON(registry, username, password string) ([]byte, error) }) } -// Mirrors cmd/self_hosted_up.go's ensureDockerConfigSecret. Attaches the -// CLI's managed-by labels so a future cleanup path can identify resources -// to remove. +// writeDockerConfigSecret creates the pull Secret this run will reference. +// +// Create-only. The name carries this run's unguessable suffix, so nothing this +// CLI created can already hold it and any collision is another object. +// Adopting one would write the NGC credential into something we do not own, +// which label-based ownership cannot prevent: the managed labels are three +// public constants anyone can copy onto a Secret they pre-create under a +// predictable name. func writeDockerConfigSecret(ctx context.Context, client kubernetes.Interface, namespace, name, role string, dockerConfig []byte, preserve bool) error { - labels := clusterValidatorRoleLabelsPreserved(role, preserve) - secrets := client.CoreV1().Secrets(namespace) secret := &corev1.Secret{ ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: namespace, - Labels: labels, + Labels: clusterValidatorRoleLabelsPreserved(role, preserve), }, Type: corev1.SecretTypeDockerConfigJson, Data: map[string][]byte{corev1.DockerConfigJsonKey: dockerConfig}, } - current, err := secrets.Get(ctx, name, metav1.GetOptions{}) - switch { - case err == nil && current.Type == corev1.SecretTypeDockerConfigJson: - // Same guard as the type-mismatch branch below, for the same reason. A - // matching type is not permission to write: an operator-owned secret - // with a colliding name holds their registry credentials, and this - // would replace the data and stamp our managed labels on it, after - // which the role sweep would delete it outright. - if err := refuseIfUnmanaged(current, namespace, name, ""); err != nil { - return err - } - if current.Data == nil { - current.Data = map[string][]byte{} - } - current.Data[corev1.DockerConfigJsonKey] = dockerConfig - if current.Labels == nil { - current.Labels = map[string]string{} - } - for k, v := range labels { - current.Labels[k] = v - } - if _, err := secrets.Update(ctx, current, metav1.UpdateOptions{}); err != nil { - return fmt.Errorf("update: %w", err) - } - return nil - case err == nil: - // Secret.Type is immutable; can't Update across a type change. - // Guard the delete: only replace secrets we previously managed. - // Without this, an operator-owned secret with a colliding name - // (e.g. an Opaque secret in 'default' sharing the validator's - // pull-secret name) would be silently destroyed. - if err := refuseIfUnmanaged(current, namespace, name, - fmt.Sprintf("type=%s", current.Type)); err != nil { - return err - } - // A conflict means the object changed between the ownership check and - // this delete, so the thing now holding the name was never vetted. - // Stop rather than fall through to Create, which would otherwise - // silently adopt or overwrite it. - if err := secrets.Delete(ctx, name, deleteExactly(current)); err != nil && !apierrors.IsNotFound(err) { - return fmt.Errorf("delete incompatible secret type %s: %w", current.Type, err) - } - case !apierrors.IsNotFound(err): - return fmt.Errorf("get: %w", err) - } - if _, err := secrets.Create(ctx, secret, metav1.CreateOptions{}); err != nil { - if !apierrors.IsAlreadyExists(err) { - return fmt.Errorf("create: %w", err) - } - // Lost a delete->create race: another actor recreated the secret - // in the narrow window between our Delete and Create. Refetch and - // overwrite with our content so the caller still gets the - // credentials it asked for. - current, getErr := secrets.Get(ctx, name, metav1.GetOptions{}) - if getErr != nil { - return fmt.Errorf("get after create race: %w", getErr) - } - if err := refuseIfUnmanaged(current, namespace, name, "lost create race"); err != nil { - return err - } - if current.Type != corev1.SecretTypeDockerConfigJson { - return fmt.Errorf("create race left secret %s/%s with type %s, want %s", - namespace, name, current.Type, corev1.SecretTypeDockerConfigJson) - } - if current.Data == nil { - current.Data = map[string][]byte{} - } - current.Data[corev1.DockerConfigJsonKey] = dockerConfig - if current.Labels == nil { - current.Labels = map[string]string{} - } - for k, v := range labels { - current.Labels[k] = v - } - if _, err := secrets.Update(ctx, current, metav1.UpdateOptions{}); err != nil { - return fmt.Errorf("update after create race: %w", err) + if _, err := client.CoreV1().Secrets(namespace).Create(ctx, secret, metav1.CreateOptions{}); err != nil { + if apierrors.IsAlreadyExists(err) { + return fmt.Errorf( + "refusing to overwrite existing secret %s/%s: this run generated that name, so "+ + "another object already holds it; pass --cluster-validator-pull-secret to "+ + "choose an explicit secret name", + namespace, name) } + return fmt.Errorf("create: %w", err) } return nil } -func refuseIfUnmanaged(s *corev1.Secret, namespace, name, detail string) error { - if isManagedByValidatorCLI(s) { - return nil - } - if detail != "" { - detail = " (" + detail + ")" - } - return fmt.Errorf( - "refusing to overwrite %s/%s%s which is not managed by nvcf-cli; "+ - "pass --cluster-validator-pull-secret to choose an explicit secret name", - namespace, name, detail) -} - -// isManagedByValidatorCLI reports whether the secret carries the labels -// writeDockerConfigSecret stamps on every secret it creates. Used to -// gate the delete-then-recreate branch so we never destroy an operator- -// or chart-owned secret that happens to share a name with one of ours. -// refuseIfUnmanaged rejects a Secret nvcf-cli does not own. Every path in -// writeDockerConfigSecret that mutates an existing Secret must call this: -// overwriting an operator-owned secret replaces their registry credentials and -// stamps our managed labels on it, after which the role sweep deletes it. -// -// detail is appended to the message when there is something useful to say -// (the conflicting type, the race), otherwise "". +// isManagedByValidatorCLI reports whether a Secret carries the labels this CLI +// stamps on the ones it creates. Necessary but not sufficient for ownership: +// the labels are three public constants anyone can copy onto a Secret they +// pre-create, which is why the generated names are run-scoped and the write +// path is create-only rather than adopt-or-update. func isManagedByValidatorCLI(s *corev1.Secret) bool { return hasValidatorManagedLabels(s.Labels) } diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go index aa0b5227e7..ee958421fc 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go @@ -21,7 +21,6 @@ import ( "context" "encoding/base64" "encoding/json" - "errors" "testing" "github.com/stretchr/testify/assert" @@ -30,10 +29,7 @@ import ( corev1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/kubernetes/fake" - ktesting "k8s.io/client-go/testing" ) func dockerConfigBlob(t *testing.T, registry, user, pass string) []byte { @@ -135,99 +131,6 @@ func TestFirstNonEmptyEnv(t *testing.T) { }) } -func TestWriteDockerConfigSecret_Create(t *testing.T) { - client := fake.NewSimpleClientset() - cfg := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "key") - - require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", clusterValidatorControlPlaneRole, cfg, false), false) - - got, err := client.CoreV1().Secrets("default").Get(context.Background(), "nvcr-pull-secret", metav1.GetOptions{}) - require.NoError(t, err) - assert.Equal(t, corev1.SecretTypeDockerConfigJson, got.Type) - assert.Equal(t, cfg, got.Data[corev1.DockerConfigJsonKey]) - assert.Equal(t, clusterValidatorAppLabel, got.Labels["app.kubernetes.io/name"], - "label must be attached so the secret is identifiable as CLI-managed") -} - -func TestWriteDockerConfigSecret_Update(t *testing.T) { - old := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "stale-key") - fresh := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "rotated-key") - - // Managed labels plus an unrelated one: only a secret we own may be - // updated, and updating must not drop labels the operator added. - existingLabels := clusterValidatorLabels() - existingLabels["existing-label"] = "preserved" - - client := fake.NewSimpleClientset(&corev1.Secret{ - ObjectMeta: metav1.ObjectMeta{ - Name: "nvcr-pull-secret", - Namespace: "default", - Labels: existingLabels, - }, - Type: corev1.SecretTypeDockerConfigJson, - Data: map[string][]byte{corev1.DockerConfigJsonKey: old}, - }) - - require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh, false), false) - - got, _ := client.CoreV1().Secrets("default").Get(context.Background(), "nvcr-pull-secret", metav1.GetOptions{}) - assert.Equal(t, fresh, got.Data[corev1.DockerConfigJsonKey], "data must be updated to the fresh body") - assert.Equal(t, "preserved", got.Labels["existing-label"], "pre-existing labels must be preserved on update") - assert.Equal(t, clusterValidatorAppLabel, got.Labels["app.kubernetes.io/name"], "CLI labels must be added on update") -} - -// Regression guard for the immutable-Type silent-failure path: a pre-existing -// secret with the wrong Type (but our labels) must be replaced (delete + -// create), not Updated. -func TestWriteDockerConfigSecret_TypeMismatchReplaces(t *testing.T) { - fresh := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "key") - client := fake.NewSimpleClientset(&corev1.Secret{ - ObjectMeta: metav1.ObjectMeta{ - Name: "nvcr-pull-secret", - Namespace: "default", - Labels: clusterValidatorLabels(), - }, - Type: corev1.SecretTypeOpaque, // wrong type — Update would 422 - Data: map[string][]byte{"some-key": []byte("some-value")}, - }) - - require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh, false), false) - - got, err := client.CoreV1().Secrets("default").Get(context.Background(), "nvcr-pull-secret", metav1.GetOptions{}) - require.NoError(t, err) - assert.Equal(t, corev1.SecretTypeDockerConfigJson, got.Type, - "secret must be recreated with the correct dockerconfigjson type") - assert.Equal(t, fresh, got.Data[corev1.DockerConfigJsonKey]) - assert.NotContains(t, got.Data, "some-key", "old Opaque payload must not survive the recreate") -} - -// Operator-owned secret with the same name but no CLI labels must NOT be -// destroyed. The replace path is the only place operator data is at risk -// (immutable Type forces delete+create), so the label guard lives there. -func TestWriteDockerConfigSecret_TypeMismatchRefusesUnlabeledSecret(t *testing.T) { - fresh := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "key") - operatorPayload := []byte("operator-data-do-not-destroy") - client := fake.NewSimpleClientset(&corev1.Secret{ - ObjectMeta: metav1.ObjectMeta{ - Name: "nvcr-pull-secret", - Namespace: "default", - // No CLI labels: an operator- or chart-owned secret. - }, - Type: corev1.SecretTypeOpaque, - Data: map[string][]byte{"operator-payload": operatorPayload}, - }) - - err := writeDockerConfigSecret(context.Background(), client, "default", "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh, false) - require.Error(t, err, "must refuse to destroy a non-CLI-managed secret") - assert.Contains(t, err.Error(), "not managed by nvcf-cli") - - // Original payload must still be intact. - got, getErr := client.CoreV1().Secrets("default").Get(context.Background(), "nvcr-pull-secret", metav1.GetOptions{}) - require.NoError(t, getErr) - assert.Equal(t, corev1.SecretTypeOpaque, got.Type, "type must be unchanged") - assert.Equal(t, operatorPayload, got.Data["operator-payload"], "operator data must not be touched") -} - func TestScanAndMirrorPullSecret_FoundInDefault(t *testing.T) { cfg := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "key") client := fake.NewSimpleClientset(&corev1.Secret{ @@ -236,7 +139,7 @@ func TestScanAndMirrorPullSecret_FoundInDefault(t *testing.T) { Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, }) - name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, false) + name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, "runid", false) require.NoError(t, err) assert.Equal(t, "operator-secret", name) @@ -257,11 +160,11 @@ func TestScanAndMirrorPullSecret_FoundInNvcfMirroredToDefault(t *testing.T) { Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, }) - name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, false) + name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, "runid", false) require.NoError(t, err) - assert.Equal(t, validatorPullSecretRoleName(clusterValidatorControlPlaneRole), name) + assert.Equal(t, validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid"), name) - mirrored, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretRoleName(clusterValidatorControlPlaneRole), metav1.GetOptions{}) + mirrored, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid"), metav1.GetOptions{}) require.NoError(t, err, "mirror must be created under the role-scoped managed name") assert.Equal(t, cfg, mirrored.Data[corev1.DockerConfigJsonKey]) @@ -279,14 +182,14 @@ func TestScanAndMirrorPullSecret_RegistryMismatch(t *testing.T) { Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, }) - name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, false) + name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, "runid", false) require.NoError(t, err) assert.Equal(t, "", name, "secret for a different registry must not match") } func TestScanAndMirrorPullSecret_NoSecrets(t *testing.T) { client := fake.NewSimpleClientset() - name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, false) + name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, "runid", false) require.NoError(t, err) assert.Equal(t, "", name) } @@ -306,7 +209,7 @@ func TestScanAndMirrorPullSecret_PrefersDefaultNamespace(t *testing.T) { }, ) - name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, false) + name, err := scanAndMirrorPullSecret(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, "runid", false) require.NoError(t, err) assert.Equal(t, "in-default", name) } @@ -318,7 +221,7 @@ func TestAutoCreatePullSecretFromEnv_NoEnv(t *testing.T) { } client := fake.NewSimpleClientset() - got, err := autoCreatePullSecretFromEnv(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, false) + got, err := autoCreatePullSecretFromEnv(context.Background(), client, "private.registry.test", clusterValidatorControlPlaneRole, "runid", false) require.NoError(t, err) assert.Equal(t, "", got, "no env var set means no secret minted") @@ -333,11 +236,11 @@ func TestAutoCreatePullSecretFromEnv_KeyPresent(t *testing.T) { t.Setenv("NGC_API_KEY", "nvapi-test-123") client := fake.NewSimpleClientset() - got, err := autoCreatePullSecretFromEnv(context.Background(), client, "nvcr.io", clusterValidatorControlPlaneRole, false) + got, err := autoCreatePullSecretFromEnv(context.Background(), client, "nvcr.io", clusterValidatorControlPlaneRole, "runid", false) require.NoError(t, err) - assert.Equal(t, validatorPullSecretRoleName(clusterValidatorControlPlaneRole), got) + assert.Equal(t, validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid"), got) - s, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretRoleName(clusterValidatorControlPlaneRole), metav1.GetOptions{}) + s, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid"), metav1.GetOptions{}) require.NoError(t, err) assert.True(t, dockerConfigHasRegistry(s.Data[corev1.DockerConfigJsonKey], "nvcr.io"), "minted secret must contain auth for the validator image's registry") @@ -345,7 +248,7 @@ func TestAutoCreatePullSecretFromEnv_KeyPresent(t *testing.T) { func TestResolveValidatorPullSecret_FlagOverride(t *testing.T) { client := fake.NewSimpleClientset() - got, err := resolveValidatorPullSecret(context.Background(), client, "custom-secret", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole, false) + got, err := resolveValidatorPullSecret(context.Background(), client, "custom-secret", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole, "runid", false) require.NoError(t, err) assert.Equal(t, "custom-secret", got, "explicit override always wins") @@ -365,14 +268,14 @@ func TestResolveValidatorPullSecret_ScanWins(t *testing.T) { Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, }) - got, err := resolveValidatorPullSecret(context.Background(), client, "", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole, false) + got, err := resolveValidatorPullSecret(context.Background(), client, "", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole, "runid", false) require.NoError(t, err) // Mirror destination is the validator's well-known name, not the // source secret's name (avoids same-name collisions with operator // or chart-owned secrets in the destination namespace). - assert.Equal(t, validatorPullSecretRoleName(clusterValidatorControlPlaneRole), got) + assert.Equal(t, validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid"), got) - mirrored, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretRoleName(clusterValidatorControlPlaneRole), metav1.GetOptions{}) + mirrored, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid"), metav1.GetOptions{}) require.NoError(t, err) assert.True(t, dockerConfigHasRegistry(mirrored.Data[corev1.DockerConfigJsonKey], "private.registry.test")) } @@ -384,11 +287,11 @@ func TestResolveValidatorPullSecret_EnvFallback(t *testing.T) { t.Setenv("NVCF_NGC_API_KEY", "nvapi-fallback") client := fake.NewSimpleClientset() - got, err := resolveValidatorPullSecret(context.Background(), client, "", "nvcr.io/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole, false) + got, err := resolveValidatorPullSecret(context.Background(), client, "", "nvcr.io/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole, "runid", false) require.NoError(t, err) - assert.Equal(t, validatorPullSecretRoleName(clusterValidatorControlPlaneRole), got) + assert.Equal(t, validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid"), got) - s, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretRoleName(clusterValidatorControlPlaneRole), metav1.GetOptions{}) + s, err := client.CoreV1().Secrets("default").Get(context.Background(), validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid"), metav1.GetOptions{}) require.NoError(t, err) assert.True(t, dockerConfigHasRegistry(s.Data[corev1.DockerConfigJsonKey], "nvcr.io")) } @@ -403,7 +306,7 @@ func TestResolveValidatorPullSecret_EnvFallbackRefusesMirroredRegistry(t *testin client := fake.NewSimpleClientset() got, err := resolveValidatorPullSecret(context.Background(), client, "", - "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole, false) + "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole, "runid", false) require.NoError(t, err) assert.Empty(t, got, "no secret may be minted for a non-NGC registry") } @@ -414,7 +317,7 @@ func TestResolveValidatorPullSecret_AllEmpty(t *testing.T) { } client := fake.NewSimpleClientset() - got, err := resolveValidatorPullSecret(context.Background(), client, "", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole, false) + got, err := resolveValidatorPullSecret(context.Background(), client, "", "private.registry.test/nvidia/nvcf-byoc/cluster-validator:rc26", clusterValidatorControlPlaneRole, "runid", false) require.NoError(t, err) assert.Equal(t, "", got, "no override, no scan match, no env var -> empty so kubelet surfaces ImagePullBackOff") } @@ -425,7 +328,7 @@ func TestResolveValidatorPullSecret_UnparsableImage(t *testing.T) { } client := fake.NewSimpleClientset() - got, err := resolveValidatorPullSecret(context.Background(), client, "", "bareimage", clusterValidatorControlPlaneRole, false) + got, err := resolveValidatorPullSecret(context.Background(), client, "", "bareimage", clusterValidatorControlPlaneRole, "runid", false) require.NoError(t, err) assert.Equal(t, "", got, "no registry hostname means no scan target and no auto-create") @@ -443,7 +346,7 @@ func TestResolveValidatorPullSecret_UnparsableImage(t *testing.T) { // clientset implements DeleteCollection as a no-op. func TestManagedPullSecret_IsScopedPerRole(t *testing.T) { ctx := context.Background() - cpName := validatorPullSecretRoleName(clusterValidatorControlPlaneRole) + cpName := validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid") gpuName := validatorPullSecretRoleName("compute-plane") require.NotEqual(t, cpName, gpuName, "each role needs its own managed pull secret") @@ -457,7 +360,7 @@ func TestManagedPullSecret_IsScopedPerRole(t *testing.T) { require.NoError(t, writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, "operator-owned-secret", clusterValidatorControlPlaneRole, cfg, false)) - sweepManagedPullSecrets(ctx, client, clusterValidatorControlPlaneRole) + sweepManagedPullSecrets(ctx, client, clusterValidatorControlPlaneRole, "runid") secrets := client.CoreV1().Secrets(clusterValidatorNamespace) _, err := secrets.Get(ctx, cpName, metav1.GetOptions{}) @@ -475,181 +378,28 @@ func TestManagedPullSecret_IsScopedPerRole(t *testing.T) { func TestManagedPullSecret_LabelsMatchOnlyItsOwnRole(t *testing.T) { ctx := context.Background() client := fake.NewSimpleClientset() - - // dockerConfigBlob encodes the auth value at runtime; a literal base64 - // docker credential in the source trips secret scanners. - cfg := dockerConfigBlob(t, "private.registry.test", "user", "pass") + cfg := dockerConfigBlob(t, "nvcr.io", "$oauthtoken", "key") + name := validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid") require.NoError(t, writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, - validatorPullSecretRoleName(clusterValidatorControlPlaneRole), - clusterValidatorControlPlaneRole, cfg, false)) + name, clusterValidatorControlPlaneRole, cfg, false)) - got, err := client.CoreV1().Secrets(clusterValidatorNamespace).Get(ctx, - validatorPullSecretRoleName(clusterValidatorControlPlaneRole), metav1.GetOptions{}) + own, err := client.CoreV1().Secrets(clusterValidatorNamespace).List(ctx, + metav1.ListOptions{LabelSelector: validatorRoleSelector(clusterValidatorControlPlaneRole)}) require.NoError(t, err) + assert.Len(t, own.Items, 1, "the secret must match its own role's selector") - assert.Equal(t, clusterValidatorControlPlaneRole, got.Labels[clusterValidatorRoleLabel], - "a managed secret must carry its own role label") - assert.Equal(t, "nvcf-cli", got.Labels["app.kubernetes.io/managed-by"], - "the managed-by label is what excludes operator-supplied secrets from cleanup") -} - -// A matching Secret type is not permission to write. An operator-owned secret -// with a colliding name holds their registry credentials; overwriting it would -// also stamp our managed labels on it, after which the role sweep would delete -// it outright. -func TestWriteDockerConfigSecret_RefusesUnmanagedSameTypeSecret(t *testing.T) { - ctx := context.Background() - operatorOwned := dockerConfigBlob(t, "private.registry.test", "operator", "their-secret") - ours := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "ours") - - client := fake.NewSimpleClientset(&corev1.Secret{ - ObjectMeta: metav1.ObjectMeta{ - Name: "nvcf-preflight-pull-secret-control-plane", - Namespace: clusterValidatorNamespace, - Labels: map[string]string{"owner": "operator"}, - }, - Type: corev1.SecretTypeDockerConfigJson, - Data: map[string][]byte{corev1.DockerConfigJsonKey: operatorOwned}, - }) - - err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, - "nvcf-preflight-pull-secret-control-plane", clusterValidatorControlPlaneRole, ours, false) - - require.Error(t, err, "an unmanaged secret of the same type must not be overwritten") - assert.Contains(t, err.Error(), "not managed by nvcf-cli") - - got, getErr := client.CoreV1().Secrets(clusterValidatorNamespace).Get(ctx, - "nvcf-preflight-pull-secret-control-plane", metav1.GetOptions{}) - require.NoError(t, getErr) - assert.Equal(t, operatorOwned, got.Data[corev1.DockerConfigJsonKey], - "the operator's credentials must be left untouched") - assert.NotContains(t, got.Labels, "app.kubernetes.io/managed-by", - "managed labels must not be stamped on it, or the sweep would later delete it") -} - -// If an unmanaged Docker-config Secret appears between our Get and our Create, -// Create fails with AlreadyExists and the recovery path refetches it. That path -// must apply the same ownership check as the others, or a lost race silently -// overwrites an operator-owned secret and marks it for sweep deletion. -func TestWriteDockerConfigSecret_RefusesUnmanagedAfterCreateRace(t *testing.T) { - ctx := context.Background() - operatorOwned := dockerConfigBlob(t, "private.registry.test", "operator", "their-secret") - ours := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "ours") - - const name = "nvcf-preflight-pull-secret-control-plane" - client := fake.NewSimpleClientset() - - // First Get: absent, so the code proceeds to Create. Create: AlreadyExists, - // as though another actor won the race. Second Get: their unmanaged secret. - gets := 0 - client.PrependReactor("get", "secrets", func(_ ktesting.Action) (bool, runtime.Object, error) { - gets++ - if gets == 1 { - return true, nil, apierrors.NewNotFound(corev1.Resource("secrets"), name) - } - return true, &corev1.Secret{ - ObjectMeta: metav1.ObjectMeta{ - Name: name, - Namespace: clusterValidatorNamespace, - Labels: map[string]string{"owner": "operator"}, - }, - Type: corev1.SecretTypeDockerConfigJson, - Data: map[string][]byte{corev1.DockerConfigJsonKey: operatorOwned}, - }, nil - }) - client.PrependReactor("create", "secrets", func(_ ktesting.Action) (bool, runtime.Object, error) { - return true, nil, apierrors.NewAlreadyExists(corev1.Resource("secrets"), name) - }) - - var updated bool - client.PrependReactor("update", "secrets", func(_ ktesting.Action) (bool, runtime.Object, error) { - updated = true - return true, nil, nil - }) - - err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, name, - clusterValidatorControlPlaneRole, ours, false) - - require.Error(t, err, "losing the create race to an unmanaged secret must not overwrite it") - assert.Contains(t, err.Error(), "not managed by nvcf-cli") - assert.False(t, updated, "no Update may be issued against an unmanaged secret") -} - -// The ownership check reads the Secret and then deletes it by name. In that -// window another actor can delete and recreate it, so the delete has to name -// the exact object that was vetted rather than whatever holds the name by then. -func TestWriteDockerConfigSecret_TypeMismatchDeletePinsTheInspectedObject(t *testing.T) { - fresh := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "key") - existing := &corev1.Secret{ - ObjectMeta: metav1.ObjectMeta{ - Name: "nvcr-pull-secret", - Namespace: "default", - Labels: clusterValidatorLabels(), - UID: "uid-1", - ResourceVersion: "42", - }, - Type: corev1.SecretTypeOpaque, - } - client := fake.NewSimpleClientset(existing) - - var opts metav1.DeleteOptions - client.PrependReactor("delete", "secrets", func(a ktesting.Action) (bool, runtime.Object, error) { - opts = a.(ktesting.DeleteActionImpl).DeleteOptions - return false, nil, nil - }) - - require.NoError(t, writeDockerConfigSecret(context.Background(), client, "default", - "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh, false), false) - - require.NotNil(t, opts.Preconditions, "delete must carry preconditions") - require.NotNil(t, opts.Preconditions.UID) - assert.Equal(t, existing.UID, *opts.Preconditions.UID) - assert.Nil(t, opts.Preconditions.ResourceVersion, - "UID alone pins identity; pinning ResourceVersion turns any concurrent "+ - "write into a 409 that the sweeps swallow") -} - -// A conflict means the object changed after the ownership check, so the run -// must stop instead of creating over whatever now holds the name. -func TestWriteDockerConfigSecret_TypeMismatchStopsOnDeleteConflict(t *testing.T) { - fresh := dockerConfigBlob(t, "private.registry.test", "$oauthtoken", "key") - client := fake.NewSimpleClientset(&corev1.Secret{ - ObjectMeta: metav1.ObjectMeta{ - Name: "nvcr-pull-secret", - Namespace: "default", - Labels: clusterValidatorLabels(), - UID: "uid-1", - }, - Type: corev1.SecretTypeOpaque, - }) - client.PrependReactor("delete", "secrets", func(ktesting.Action) (bool, runtime.Object, error) { - return true, nil, apierrors.NewConflict( - schema.GroupResource{Resource: "secrets"}, "nvcr-pull-secret", - errors.New("UID precondition mismatch")) - }) - - created := false - client.PrependReactor("create", "secrets", func(ktesting.Action) (bool, runtime.Object, error) { - created = true - return false, nil, nil - }) - - err := writeDockerConfigSecret(context.Background(), client, "default", - "nvcr-pull-secret", clusterValidatorControlPlaneRole, fresh, false) - require.Error(t, err, "a changed object must abort the replace") - assert.False(t, created, "must not create over an object that was never vetted") + other, err := client.CoreV1().Secrets(clusterValidatorNamespace).List(ctx, + metav1.ListOptions{LabelSelector: validatorRoleSelector(clusterValidatorComputePlaneRole)}) + require.NoError(t, err) + assert.Empty(t, other.Items, "it must not match the other role's selector") } -// NGC_API_KEY must never be minted as the password for a registry that is not -// NGC. An operator who mirrors the validator image to ghcr.io or a corporate -// Harbor and still exports NGC_API_KEY would otherwise have the kubelet send -// the live key to a third party as HTTP Basic auth. func TestAutoCreatePullSecretFromEnv_RefusesNonNGCRegistry(t *testing.T) { t.Setenv("NGC_API_KEY", "nvapi-secret-value") client := fake.NewSimpleClientset() name, err := autoCreatePullSecretFromEnv(context.Background(), client, - "ghcr.io", clusterValidatorControlPlaneRole, false) + "ghcr.io", clusterValidatorControlPlaneRole, "runid", false) require.NoError(t, err) assert.Empty(t, name, "no secret may be minted for a non-NGC registry") @@ -666,7 +416,7 @@ func TestScanAndMirrorPullSecret_DoesNotAdoptTheOtherRolesSecret(t *testing.T) { cfg := dockerConfigBlob(t, "nvcr.io", "$oauthtoken", "key") otherRole := &corev1.Secret{ ObjectMeta: metav1.ObjectMeta{ - Name: validatorPullSecretRoleName(clusterValidatorControlPlaneRole), + Name: validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid"), Namespace: clusterValidatorNamespace, Labels: clusterValidatorRoleLabels(clusterValidatorControlPlaneRole), }, @@ -676,7 +426,7 @@ func TestScanAndMirrorPullSecret_DoesNotAdoptTheOtherRolesSecret(t *testing.T) { client := fake.NewSimpleClientset(otherRole) got, err := scanAndMirrorPullSecret(context.Background(), client, "nvcr.io", - clusterValidatorComputePlaneRole, false) + clusterValidatorComputePlaneRole, "runid", false) require.NoError(t, err) assert.NotEqual(t, otherRole.Name, got, "the compute role must not adopt the control-plane role's managed Secret") @@ -694,7 +444,7 @@ func TestScanAndMirrorPullSecret_AdoptsOperatorSuppliedSecret(t *testing.T) { client := fake.NewSimpleClientset(operator) got, err := scanAndMirrorPullSecret(context.Background(), client, "nvcr.io", - clusterValidatorComputePlaneRole, false) + clusterValidatorComputePlaneRole, "runid", false) require.NoError(t, err) assert.Equal(t, "operator-pull", got) } @@ -704,7 +454,7 @@ func TestScanAndMirrorPullSecret_AdoptsOwnRoleSecret(t *testing.T) { cfg := dockerConfigBlob(t, "nvcr.io", "$oauthtoken", "key") own := &corev1.Secret{ ObjectMeta: metav1.ObjectMeta{ - Name: validatorPullSecretRoleName(clusterValidatorComputePlaneRole), + Name: validatorPullSecretRunName(clusterValidatorComputePlaneRole, "runid"), Namespace: clusterValidatorNamespace, Labels: clusterValidatorRoleLabels(clusterValidatorComputePlaneRole), }, @@ -714,7 +464,82 @@ func TestScanAndMirrorPullSecret_AdoptsOwnRoleSecret(t *testing.T) { client := fake.NewSimpleClientset(own) got, err := scanAndMirrorPullSecret(context.Background(), client, "nvcr.io", - clusterValidatorComputePlaneRole, false) + clusterValidatorComputePlaneRole, "runid", false) require.NoError(t, err) assert.Equal(t, own.Name, got) } + +// writeDockerConfigSecret is create-only. The name carries this run's +// unguessable suffix, so nothing this CLI created can already hold it and any +// collision is another object. Adopting one would write the NGC credential +// into something we do not own, which label-based ownership cannot prevent: +// the managed labels are three public constants anyone can copy. +func TestWriteDockerConfigSecret_CreatesUnderTheRunScopedName(t *testing.T) { + cfg := dockerConfigBlob(t, "nvcr.io", "$oauthtoken", "key") + client := fake.NewSimpleClientset() + name := validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid") + + require.NoError(t, writeDockerConfigSecret(context.Background(), client, + clusterValidatorNamespace, name, clusterValidatorControlPlaneRole, cfg, false)) + + s, err := client.CoreV1().Secrets(clusterValidatorNamespace).Get( + context.Background(), name, metav1.GetOptions{}) + require.NoError(t, err) + assert.Equal(t, corev1.SecretTypeDockerConfigJson, s.Type) + assert.True(t, hasValidatorManagedLabels(s.Labels)) +} + +func TestWriteDockerConfigSecret_RefusesAnyCollision(t *testing.T) { + cfg := dockerConfigBlob(t, "nvcr.io", "$oauthtoken", "key") + name := validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid") + + // Even wearing our managed labels: labels are forgeable, the name is not. + squatter := &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: name, Namespace: clusterValidatorNamespace, + Labels: clusterValidatorLabels(), + }, + Type: corev1.SecretTypeOpaque, + Data: map[string][]byte{"planted": []byte("x")}, + } + client := fake.NewSimpleClientset(squatter) + + err := writeDockerConfigSecret(context.Background(), client, + clusterValidatorNamespace, name, clusterValidatorControlPlaneRole, cfg, false) + require.Error(t, err, "a collision on an unguessable name must never be adopted") + assert.Contains(t, err.Error(), "refusing to overwrite") + + got, gerr := client.CoreV1().Secrets(clusterValidatorNamespace).Get( + context.Background(), name, metav1.GetOptions{}) + require.NoError(t, gerr) + assert.Equal(t, corev1.SecretTypeOpaque, got.Type, "the other object must be untouched") + assert.Contains(t, got.Data, "planted") + assert.NotContains(t, got.Data, corev1.DockerConfigJsonKey, + "the NGC credential must not be written into an object we do not own") +} + +// The unguessable suffix is the actual control. Labels cannot carry it: they +// are three public constants, so a predictable name lets anyone able to create +// a Secret here pre-create it wearing those labels and receive the NGC +// credential. Create-only is only safe because the name cannot be guessed. +func TestValidatorPullSecretRunName_CarriesTheRunID(t *testing.T) { + name := validatorPullSecretRunName(clusterValidatorControlPlaneRole, "a1b2c3d4e5") + assert.Contains(t, name, "a1b2c3d4e5", + "a predictable secret name can be pre-created by someone else") + assert.NotEqual(t, validatorPullSecretRoleName(clusterValidatorControlPlaneRole), name) + + // Two runs never collide, so one run's sweep cannot take out another's. + other := validatorPullSecretRunName(clusterValidatorControlPlaneRole, "f6g7h8i9j0") + assert.NotEqual(t, name, other) +} + +// The mint path must use the run-scoped name, not the role name. +func TestAutoCreatePullSecretFromEnv_MintsUnderTheRunScopedName(t *testing.T) { + t.Setenv("NGC_API_KEY", "nvapi-secret-value") + client := fake.NewSimpleClientset() + + got, err := autoCreatePullSecretFromEnv(context.Background(), client, + "nvcr.io", clusterValidatorControlPlaneRole, "a1b2c3d4e5", false) + require.NoError(t, err) + assert.Contains(t, got, "a1b2c3d4e5", "the minted secret must be run-scoped") +} From 35312909d3ec78593c6afcbb18623f7f489b1d13 Mon Sep 17 00:00:00 2001 From: rohithb Date: Tue, 22 Sep 2026 19:01:32 +0530 Subject: [PATCH 36/55] fix(nvcf-cli): preserve the validator Job under --no-cleanup like its other resources The RBAC objects, the pull Secret and the network-checks ConfigMap all take the preserve marker when --no-cleanup is set; the Job did not. The run that sets the flag already skips the prior-Job sweep, so this only showed up later: the next ordinary run of the same role deleted the Job an operator had kept, while its ConfigMap, RBAC and Secret survived, leaving those pointing at a Job that no longer existed. The Job now carries the marker and the sweep skips anything wearing it. The role selector is unaffected, since a label selector matches on subset. --- .../internal/selfhosted/clustervalidator.go | 10 +++++- .../selfhosted/clustervalidator_test.go | 34 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 307c599c43..f3ec9eeca3 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -543,6 +543,14 @@ func sweepPriorClusterValidatorJobs(ctx context.Context, client kubernetes.Inter if !strings.HasPrefix(l.Items[i].Name, clusterValidatorName) { continue } + // A Job an operator kept with --no-cleanup survives later ordinary + // runs too. The current run already skips this sweep under that flag, + // but without the marker the next run of the same role deletes the Job + // while its ConfigMap, RBAC and pull secret survive, leaving the + // preserved artifacts pointing at a Job that no longer exists. + if l.Items[i].Labels[clusterValidatorPreserveLabel] == "true" { + continue + } opts := deleteExactly(&l.Items[i]) opts.PropagationPolicy = &propagation _ = jobs.Delete(ctx, l.Items[i].Name, opts) @@ -829,7 +837,7 @@ func buildClusterValidatorJob(name, image, pullSecret, role, runID string, noCle ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: clusterValidatorNamespace, - Labels: clusterValidatorRoleLabels(role), + Labels: clusterValidatorRoleLabelsPreserved(role, noCleanup), }, Spec: batchv1.JobSpec{ BackoffLimit: &backoff, diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index bf7f04a654..fcf877b4ff 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -1097,3 +1097,37 @@ func TestEnsureClusterValidatorConfig_NoPreserveMarkerByDefault(t *testing.T) { assert.NotContains(t, cm.Labels, clusterValidatorPreserveLabel, "an ordinary run must stay reclaimable") } + +// --no-cleanup has to outlast the run that set it. The run itself already skips +// the prior-Job sweep, but without a marker on the Job the next ordinary run of +// the same role deletes it, while its ConfigMap, RBAC and pull secret survive. +func TestBuildClusterValidatorJob_MarksPreservedRun(t *testing.T) { + kept := buildClusterValidatorJob("j", "nvcr.io/x/v:1", "", + clusterValidatorControlPlaneRole, "runid", true) + assert.Equal(t, "true", kept.Labels[clusterValidatorPreserveLabel]) + + ordinary := buildClusterValidatorJob("j", "nvcr.io/x/v:1", "", + clusterValidatorControlPlaneRole, "runid", false) + assert.NotContains(t, ordinary.Labels, clusterValidatorPreserveLabel, + "an ordinary run must stay sweepable") +} + +func TestSweepPriorClusterValidatorJobs_SparesPreservedJob(t *testing.T) { + preserved := buildClusterValidatorJob(clusterValidatorName+"-kept", "nvcr.io/x/v:1", "", + clusterValidatorControlPlaneRole, "runid", true) + preserved.Namespace = clusterValidatorNamespace + ordinary := buildClusterValidatorJob(clusterValidatorName+"-old", "nvcr.io/x/v:1", "", + clusterValidatorControlPlaneRole, "runid", false) + ordinary.Namespace = clusterValidatorNamespace + + client := fake.NewSimpleClientset(preserved, ordinary) + sweepPriorClusterValidatorJobs(context.Background(), client, clusterValidatorControlPlaneRole) + + _, err := client.BatchV1().Jobs(clusterValidatorNamespace).Get( + context.Background(), preserved.Name, metav1.GetOptions{}) + assert.NoError(t, err, "a Job kept with --no-cleanup must survive a later run's sweep") + + _, err = client.BatchV1().Jobs(clusterValidatorNamespace).Get( + context.Background(), ordinary.Name, metav1.GetOptions{}) + assert.True(t, apierrors.IsNotFound(err), "an ordinary prior Job must still be swept") +} From 6e321290b7d09f9f54135268df7487d6ed032379 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 30 Sep 2026 00:40:23 +0530 Subject: [PATCH 37/55] fix(nvcf-cli): scope validator cleanup to one run and reclaim every artifact it creates Signed-off-by: rohithb --- .../nvcf-self-managed-cli/reference/flags.md | 4 +- src/clis/nvcf-cli/cmd/self_hosted_check.go | 11 +- .../internal/selfhosted/clustervalidator.go | 280 ++++++++++------ .../clustervalidator_lifecycle_test.go | 298 ++++++++++++++++++ .../selfhosted/clustervalidator_test.go | 66 +--- .../nvcf-cli/internal/selfhosted/preflight.go | 19 ++ .../internal/selfhosted/pullsecret.go | 28 +- .../internal/selfhosted/pullsecret_test.go | 40 +-- 8 files changed, 549 insertions(+), 197 deletions(-) create mode 100644 src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go diff --git a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md index cdc0e0cf53..4a2a0df8d8 100644 --- a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md +++ b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md @@ -50,9 +50,9 @@ after the run, so the kubeconfig context needs permission to manage those. |---|---|---| | `--cluster-validator-image REF` | Validator image. Resolution order: flag, `NVCF_CLI_CLUSTER_VALIDATOR_IMAGE`, config key `cluster_validator_image`. A ref with no tag discovers the latest stable tag from the registry. Unset everywhere skips the probe with a warning | - | | `--cluster-validator-registries host:port,...` | Extra registries the control-plane validator probes for reachability. `nvcr.io` is always probed. Repeatable or comma-separated. Env: `NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES`; config key `cluster_validator_registries` | `nvcr.io` only | -| `--cluster-validator-pull-secret NAME` | docker-registry Secret in `default` used to pull the validator image. When empty, the CLI looks for one in the NVCF namespaces and falls back to minting one from `NGC_API_KEY` | auto-detect | +| `--cluster-validator-pull-secret NAME` | docker-registry Secret in `default` used to pull the validator image. When empty, the CLI looks for one in the NVCF namespaces and copies it into `default` for the run. Failing that, and only for an image on an NGC registry, it mints one from `NGC_API_KEY` | auto-detect | | `--skip-cluster-validation` | Skip the in-cluster validator probe entirely. Env: `NVCF_CLI_SELFHOSTED_SKIP_CLUSTER_VALIDATION` | `false` | -| `--no-cleanup` | Keep the validator Job (and its RBAC) after the run for debugging. The next run still sweeps prior Jobs | `false` | +| `--no-cleanup` | Keep the validator Job, its pod, RBAC, pull secret and ConfigMap for debugging. A later check reclaims them after 24 hours; the result prints the `kubectl delete` command that removes them now | `false` | | `--show-logs` | Print the validator transcript to stderr after the check events. The transcript is not JSON, and `--json` also writes to stderr, so leave this off when a parser is reading the stream | `false` | ## `up`-specific diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index e8e80d40c7..6504ad9430 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -107,12 +107,13 @@ func init() { selfHostedCheckCmd.Flags().Lookup("cluster-validator-image")) selfHostedCheckCmd.Flags().StringVar(&checkClusterValidatorPullSecret, "cluster-validator-pull-secret", "", "Name of a docker-registry Secret in the 'default' namespace to pull the validator image. "+ - "When empty, the runner scans NVCF namespaces for a matching secret (mirroring it into "+ - "'default' if found elsewhere) and falls back to auto-creating one from NGC_API_KEY. "+ - "Set to force a specific name.") + "When empty, the runner scans NVCF namespaces for a matching secret and copies it into "+ + "'default' for the run if it lives elsewhere. Failing that, and only when the image is on "+ + "an NGC registry, it mints one from NGC_API_KEY. Set to force a specific name.") selfHostedCheckCmd.Flags().BoolVar(&checkClusterValidatorNoCleanup, "no-cleanup", false, - "Disable the validator Job's TTL so the Job persists for debugging. "+ - "The next run still deletes prior Jobs via the singleton sweep.") + "Keep the validator Job, its pod, RBAC, pull secret and ConfigMap for debugging instead of "+ + "removing them after the run. They are reclaimed by a later check after 24 hours; the "+ + "result prints the kubectl command that removes them now.") selfHostedCheckCmd.Flags().StringSliceVar(&checkClusterValidatorRegistries, "cluster-validator-registries", nil, "Additional container registries to probe for reachability in the control-plane validator. "+ "Format: host:port (e.g. harbor.company.internal:443,ghcr.io:443). "+ diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index f3ec9eeca3..85bf2f3b41 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -21,6 +21,8 @@ import ( "context" cryptorand "crypto/rand" "encoding/hex" + "encoding/json" + "errors" "fmt" "io" "net" @@ -36,6 +38,7 @@ import ( "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/types" "k8s.io/client-go/kubernetes" ) @@ -50,6 +53,18 @@ const ( // orphanValidatorRBACTTL is the minimum age before leftover validator RBAC // is reclaimed. Must exceed the validator timeout so a live run is never hit. orphanValidatorRBACTTL = 30 * time.Minute + // preservedValidatorTTL bounds how long --no-cleanup artifacts survive. + // Exempting them outright left a cluster-wide ClusterRole and an NGC-key + // Secret in place forever once nobody ran the check again. + preservedValidatorTTL = 24 * time.Hour + // clusterValidatorManagedBy tells this CLI's per-run objects apart from the + // fixed-name set released CLIs create. Those releases DeleteCollection on + // managed-by=nvcf-cli, so sharing the value let each version delete the + // other's in-flight Jobs, Secrets and RBAC. + clusterValidatorManagedBy = "nvcf-cli-validator" + // clusterValidatorRunLabel carries the run ID on everything one run + // creates, so the cleanup hint can address exactly that run's objects. + clusterValidatorRunLabel = "nvcf.nvidia.com/validator-run" ) // Vars (not consts) so tests can shorten without the full production budget. @@ -99,7 +114,9 @@ type ClusterValidatorResult struct { ExitCode int32 Logs string JobName string - Err error + // RunID labels every object the run created (clusterValidatorRunLabel). + RunID string + Err error } type ClusterValidator func(ctx context.Context, params ClusterValidatorParams) ClusterValidatorResult @@ -212,25 +229,36 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image } } - // Skipped under --no-cleanup: this runs before the new Job is created, so - // otherwise the next same-role run destroys the Job the operator asked to - // keep. The singleton guarantee is worth less than the artifact they kept. - if !noCleanup { - sweepPriorClusterValidatorJobs(vctx, client, role) - } - + // No sweep of earlier Jobs: every Job now carries a deadline and a TTL, + // so a role-wide sweep could only ever hit an overlapping run's live Job. jobName := fmt.Sprintf("%s-%d", clusterValidatorName, time.Now().UnixNano()) - if _, err := client.BatchV1().Jobs(clusterValidatorNamespace).Create( + job, err := client.BatchV1().Jobs(clusterValidatorNamespace).Create( vctx, buildClusterValidatorJob(jobName, image, pullSecret, role, runID, noCleanup), metav1.CreateOptions{}, - ); err != nil { - return ClusterValidatorResult{Err: fmt.Errorf("creating validator Job: %w", err)} + ) + if err != nil { + return ClusterValidatorResult{RunID: runID, Err: fmt.Errorf("creating validator Job: %w", err)} } podMayBeRunning = true + // The Job owns this run's pull secret and ConfigMap, so they go when its + // TTL (or, for --no-cleanup, the preserved-object sweep) removes it, even + // on paths where the deferred sweeps are suppressed. The ServiceAccount is + // deliberately not owned: the ClusterRole and binding are cluster-scoped + // and cannot be, and deleting the account alone would leave a binding + // that anyone able to recreate that ServiceAccount name could inherit. + var owned []ownedArtifact + if pullSecret == validatorPullSecretRunName(role, runID) { + owned = append(owned, ownedArtifact{kind: "Secret", name: pullSecret}) + } + if role == clusterValidatorControlPlaneRole && configNote == "" { + owned = append(owned, ownedArtifact{kind: "ConfigMap", name: clusterValidatorConfigRunName(runID)}) + } + ownByJob(vctx, client, job, owned) + final, waitErr := waitForClusterValidatorJob(vctx, client, jobName) // A clean wait means the pod reached a terminal state, so the RBAC can go. - // A timeout or pull failure leaves it running: pulling the RBAC then fills - // the surviving transcript with "forbidden" and masks the real cause. + // A timeout leaves it running: pulling the RBAC then fills the surviving + // transcript with "forbidden" and masks the real cause. podMayBeRunning = waitErr != nil // Fetch logs under a fresh ctx from the parent: vctx is expired on the @@ -243,9 +271,21 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image cleaned = configNote + "\n" + cleaned } + // A pull failure is different: the container never started, so nothing + // uses the RBAC, the pull secret or the ConfigMap. Delete the Job so its + // pod stops retrying, and let the deferred sweeps run now rather than + // leaving a cluster-wide ClusterRole and an NGC-key Secret for a later + // run's orphan sweep, or for nobody. + var pullErr *validatorImagePullError + if errors.As(waitErr, &pullErr) && !noCleanup { + deleteValidatorJob(context.Background(), client, jobName) + podMayBeRunning = false + } + if waitErr != nil { return ClusterValidatorResult{ JobName: jobName, + RunID: runID, Logs: cleaned, Err: waitErr, } @@ -260,14 +300,69 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image ExitCode: containerExitCode(exitCtx, client, jobName), Logs: cleaned, JobName: jobName, + RunID: runID, } } +// ownedArtifact names a namespaced object the validator Job should own. +type ownedArtifact struct{ kind, name string } + +// ownByJob sets the Job as the controller-less owner of each artifact, so +// garbage collection removes them with it. Best-effort: a failure only means +// the artifact waits for the deferred or orphan sweep, as before. +func ownByJob(ctx context.Context, client kubernetes.Interface, job *batchv1.Job, artifacts []ownedArtifact) { + if job == nil || job.UID == "" { + return + } + patch, err := json.Marshal(map[string]any{"metadata": map[string]any{ + "ownerReferences": []metav1.OwnerReference{{ + APIVersion: "batch/v1", Kind: "Job", Name: job.Name, UID: job.UID, + }}, + }}) + if err != nil { + return + } + for _, a := range artifacts { + switch a.kind { + case "Secret": + _, _ = client.CoreV1().Secrets(clusterValidatorNamespace).Patch( + ctx, a.name, types.MergePatchType, patch, metav1.PatchOptions{}) + case "ConfigMap": + _, _ = client.CoreV1().ConfigMaps(clusterValidatorNamespace).Patch( + ctx, a.name, types.MergePatchType, patch, metav1.PatchOptions{}) + } + } +} + +// deleteValidatorJob removes this run's Job and its pod, but only a Job +// carrying our labels. +func deleteValidatorJob(ctx context.Context, client kubernetes.Interface, name string) { + dctx, cancel := context.WithTimeout(ctx, 10*time.Second) + defer cancel() + jobs := client.BatchV1().Jobs(clusterValidatorNamespace) + job, err := jobs.Get(dctx, name, metav1.GetOptions{}) + if err != nil || !hasValidatorManagedLabels(job.Labels) { + return + } + propagation := metav1.DeletePropagationBackground + opts := deleteExactly(job) + opts.PropagationPolicy = &propagation + _ = jobs.Delete(dctx, name, opts) +} + +// validatorImagePullError reports that the validator pod could not pull its +// image, so its container never started. +type validatorImagePullError struct{ reason, message string } + +func (e *validatorImagePullError) Error() string { + return fmt.Sprintf("validator pod cannot pull image (%s): %s", e.reason, e.message) +} + // Creates the SA/ClusterRole/ClusterRoleBinding the validator pod runs under, // idempotent via AlreadyExists tolerance. ClusterRole uses update-or-create so // newer CLI versions replace stale rules without the operator needing to delete. func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, role, runID string, preserve bool) error { - roleLabels := clusterValidatorRoleLabelsPreserved(role, preserve) + roleLabels := clusterValidatorRunLabels(role, runID, preserve) name := clusterValidatorRBACName(role, runID) sa := &corev1.ServiceAccount{ @@ -338,7 +433,7 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface func clusterValidatorLabels() map[string]string { return map[string]string{ "app.kubernetes.io/name": clusterValidatorAppLabel, - "app.kubernetes.io/managed-by": "nvcf-cli", + "app.kubernetes.io/managed-by": clusterValidatorManagedBy, "app.kubernetes.io/component": "preflight", } } @@ -348,14 +443,21 @@ func clusterValidatorLabels() map[string]string { // role's Job mid-command, including under --no-cleanup, which makes the // printed `kubectl logs job/...` hint 404. func clusterValidatorRoleLabels(role string) map[string]string { - return clusterValidatorRoleLabelsPreserved(role, false) + return clusterValidatorRunLabels(role, "", false) } -// clusterValidatorRoleLabelsPreserved adds the preserve marker when the run was -// asked to keep its artifacts, so the orphan sweeper leaves them alone. -func clusterValidatorRoleLabelsPreserved(role string, preserve bool) map[string]string { +// clusterValidatorRunLabels are the labels for one run's objects: the managed +// labels, the role, the run ID, and the preserve marker when the run was asked +// to keep its artifacts (which the orphan sweeper then keeps for +// preservedValidatorTTL instead of orphanValidatorRBACTTL). +func clusterValidatorRunLabels(role, runID string, preserve bool) map[string]string { l := clusterValidatorLabels() - l[clusterValidatorRoleLabel] = role + if role != "" { + l[clusterValidatorRoleLabel] = role + } + if runID != "" { + l[clusterValidatorRunLabel] = runID + } if preserve { l[clusterValidatorPreserveLabel] = "true" } @@ -379,12 +481,8 @@ func validatorConfigNameForRole(role, runID string) string { // ConfigMap once it is older than the TTL, and an operator re-running a Job // they deliberately kept gets a validator that silently skips the configurable // reachability and enforcement checks. -func clusterValidatorConfigLabels(preserve bool) map[string]string { - l := clusterValidatorLabels() - if preserve { - l[clusterValidatorPreserveLabel] = "true" - } - return l +func clusterValidatorConfigLabels(runID string, preserve bool) map[string]string { + return clusterValidatorRunLabels("", runID, preserve) } // clusterValidatorConfigRunName scopes the network-checks ConfigMap to one run. @@ -409,44 +507,35 @@ func sweepOrphanClusterValidatorRBAC(ctx context.Context, client kubernetes.Inte // cannot drift from the labels. All three managed labels are required: the // component label is part of what identifies these as ours. opts := metav1.ListOptions{LabelSelector: labels.SelectorFromSet(clusterValidatorLabels()).String()} - cutoff := metav1.Time{Time: time.Now().Add(-ttl)} + now := time.Now() - // reclaimable requires the generated name as well as the labels and the - // age. Labels alone are three public constants and can be copied onto - // anything, and this deletes cluster-scoped objects with errors swallowed. - // Network-check ConfigMaps carry their own generated-name prefix. - reclaimableConfig := func(o metav1.Object) bool { - if !strings.HasPrefix(o.GetName(), clusterValidatorConfigName) { - return false - } + // stale applies the TTL for the object's kind of run. A --no-cleanup run's + // objects are kept longer, not forever: exempting them left a cluster-wide + // ClusterRole and an NGC-key Secret behind permanently. + stale := func(o metav1.Object) bool { + limit := ttl if o.GetLabels()[clusterValidatorPreserveLabel] == "true" { - return false + limit = preservedValidatorTTL } ts := o.GetCreationTimestamp() - return ts.Before(&cutoff) + return ts.Time.Before(now.Add(-limit)) } - // Pull secrets carry the other generated-name prefix. + // Each reclaimable test requires the generated name as well as the labels + // and the age. Labels alone are public constants and can be copied onto + // anything, and this deletes cluster-scoped objects with errors swallowed. + // Network-check ConfigMaps and pull secrets carry their own name prefixes. + reclaimableConfig := func(o metav1.Object) bool { + return strings.HasPrefix(o.GetName(), clusterValidatorConfigName) && stale(o) + } reclaimableSecret := func(o metav1.Object) bool { - if !strings.HasPrefix(o.GetName(), validatorPullSecretName) { - return false - } - if o.GetLabels()[clusterValidatorPreserveLabel] == "true" { - return false - } - ts := o.GetCreationTimestamp() - return ts.Before(&cutoff) + return strings.HasPrefix(o.GetName(), validatorPullSecretName) && stale(o) } - + // The bare legacy name is the fixed-name set released CLIs keep and reuse. + // Its labels no longer match this selector, but exclude it by name too so + // a released CLI's pod never loses its binding mid-run. reclaimable := func(o metav1.Object) bool { - if !strings.HasPrefix(o.GetName(), clusterValidatorName) { - return false - } - if o.GetLabels()[clusterValidatorPreserveLabel] == "true" { - return false - } - ts := o.GetCreationTimestamp() - return ts.Before(&cutoff) + return strings.HasPrefix(o.GetName(), clusterValidatorName+"-") && stale(o) } if l, err := client.RbacV1().ClusterRoleBindings().List(ctx, opts); err == nil { @@ -496,6 +585,24 @@ func sweepOrphanClusterValidatorRBAC(ctx context.Context, client kubernetes.Inte } } } + + // Jobs only need this for --no-cleanup runs: every other Job carries a + // deadline and a TTL. A preserved Job has neither, so without this arm it + // and its pod would stay forever. Background propagation removes the pod, + // and the Job's ownerReferences take its Secret and ConfigMap with it. + jobs := client.BatchV1().Jobs(clusterValidatorNamespace) + if l, err := jobs.List(ctx, opts); err == nil { + propagation := metav1.DeletePropagationBackground + for i := range l.Items { + o := &l.Items[i] + if o.Labels[clusterValidatorPreserveLabel] != "true" || !reclaimable(o) { + continue + } + del := deleteExactly(o) + del.PropagationPolicy = &propagation + _ = jobs.Delete(ctx, o.Name, del) + } + } } // sweepClusterValidatorRBAC removes the SA, ClusterRole, and ClusterRoleBinding @@ -525,38 +632,6 @@ func sweepClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, } } -// Errors are swallowed: a stale Job is preferable to blocking the new run. -func sweepPriorClusterValidatorJobs(ctx context.Context, client kubernetes.Interface, role string) { - // Scope to this role: in ModeSingle both roles run against the same - // cluster, so an unscoped selector deletes the other role's Job mid-command. - // - // List-then-delete rather than DeleteCollection: the name has to be checked - // too, which a collection selector cannot express, and the labels alone are - // public constants that anything could carry. - jobs := client.BatchV1().Jobs(clusterValidatorNamespace) - l, err := jobs.List(ctx, metav1.ListOptions{LabelSelector: validatorRoleSelector(role)}) - if err != nil { - return - } - propagation := metav1.DeletePropagationBackground - for i := range l.Items { - if !strings.HasPrefix(l.Items[i].Name, clusterValidatorName) { - continue - } - // A Job an operator kept with --no-cleanup survives later ordinary - // runs too. The current run already skips this sweep under that flag, - // but without the marker the next run of the same role deletes the Job - // while its ConfigMap, RBAC and pull secret survive, leaving the - // preserved artifacts pointing at a Job that no longer exists. - if l.Items[i].Labels[clusterValidatorPreserveLabel] == "true" { - continue - } - opts := deleteExactly(&l.Items[i]) - opts.PropagationPolicy = &propagation - _ = jobs.Delete(ctx, l.Items[i].Name, opts) - } -} - // sweepManagedPullSecrets removes any docker-registry secrets in // clusterValidatorNamespace that we previously created (mirrored from // another namespace or minted from NGC_API_KEY). Called after the Job @@ -566,8 +641,8 @@ func sweepPriorClusterValidatorJobs(ctx context.Context, client kubernetes.Inter // labeled by us and are skipped by the selector. Errors are swallowed: // failing to clean up is preferable to failing the check itself. func sweepManagedPullSecrets(ctx context.Context, client kubernetes.Interface, role, runID string) { - // Same reasoning as sweepPriorClusterValidatorJobs: the generated name is - // part of the ownership test, not just the labels. + // The generated name is part of the ownership test, not just the labels, + // which are public constants anything could carry. secrets := client.CoreV1().Secrets(clusterValidatorNamespace) l, err := secrets.List(ctx, metav1.ListOptions{LabelSelector: validatorRoleSelector(role)}) if err != nil { @@ -683,7 +758,7 @@ func ensureClusterValidatorConfig(ctx context.Context, client kubernetes.Interfa ObjectMeta: metav1.ObjectMeta{ Name: clusterValidatorConfigRunName(runID), Namespace: clusterValidatorNamespace, - Labels: clusterValidatorConfigLabels(preserve), + Labels: clusterValidatorConfigLabels(runID, preserve), }, Data: map[string]string{"config.yaml": content}, } @@ -782,7 +857,6 @@ func parseRegistryHostPort(s string) (host string, port int) { // write. VALIDATOR_ROLE selects the check set (control-plane vs compute-plane). func buildClusterValidatorJob(name, image, pullSecret, role, runID string, noCleanup bool) *batchv1.Job { backoff := int32(0) - activeDeadline := int64(clusterValidatorTimeout/time.Second) + 60 // Pod shape mirrors deployments/nvca-operator/templates/cronjob.yaml, which // runs this same image. Two producers of one pod spec now exist in two // languages, so they are kept deliberately in step: without the security @@ -837,25 +911,27 @@ func buildClusterValidatorJob(name, image, pullSecret, role, runID string, noCle ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: clusterValidatorNamespace, - Labels: clusterValidatorRoleLabelsPreserved(role, noCleanup), + Labels: clusterValidatorRunLabels(role, runID, noCleanup), }, Spec: batchv1.JobSpec{ BackoffLimit: &backoff, - // Without a deadline an ImagePullBackOff Job never reaches a - // terminal state, so TTLSecondsAfterFinished never fires and the - // Job, its RBAC and its pull secret persist indefinitely. The - // deferred sweeps are suppressed on that path by design, because - // the pod may still be running, so this is the only reclaim. - // Sized above the runner's own budget so it never truncates a wait - // that is still making progress. - ActiveDeadlineSeconds: &activeDeadline, Template: corev1.PodTemplateSpec{ - ObjectMeta: metav1.ObjectMeta{Labels: clusterValidatorRoleLabels(role)}, + ObjectMeta: metav1.ObjectMeta{Labels: clusterValidatorRunLabels(role, runID, false)}, Spec: podSpec, }, }, } if !noCleanup { + // Without a deadline a Job whose pod never finishes never becomes + // terminal, so its TTL never fires. The deadline plus the TTL remove + // the Job and its pod, and through ownerReferences its pull secret and + // ConfigMap. The ServiceAccount, ClusterRole and binding are left to + // the deferred sweeps, or to a later run's orphan sweep. Sized above + // the runner's own budget so it never truncates a wait that is still + // making progress. A --no-cleanup Job gets neither, so the pod and its + // logs survive for debugging until the preserved-object sweep. + activeDeadline := int64(clusterValidatorTimeout/time.Second) + 60 + job.Spec.ActiveDeadlineSeconds = &activeDeadline ttl := clusterValidatorTTLSeconds job.Spec.TTLSecondsAfterFinished = &ttl } @@ -882,7 +958,7 @@ func waitForClusterValidatorJob(ctx context.Context, client kubernetes.Interface return job, nil } if reason, msg := podPullFailureReason(ctx, client, jobName); reason != "" { - return job, fmt.Errorf("validator pod cannot pull image (%s): %s", reason, msg) + return job, &validatorImagePullError{reason: reason, message: msg} } select { case <-ctx.Done(): diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go new file mode 100644 index 0000000000..ce910620e0 --- /dev/null +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go @@ -0,0 +1,298 @@ +/* +SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. +SPDX-License-Identifier: Apache-2.0 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package selfhosted + +import ( + "context" + "sync/atomic" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + batchv1 "k8s.io/api/batch/v1" + corev1 "k8s.io/api/core/v1" + rbacv1 "k8s.io/api/rbac/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/types" + "k8s.io/client-go/kubernetes/fake" + ktesting "k8s.io/client-go/testing" +) + +// leftovers lists what one run left behind, by kind, other than its Job and +// pod (which the Job's deadline and TTL remove). +func leftovers(t *testing.T, client *fake.Clientset, runID string) map[string][]string { + t.Helper() + ctx := context.Background() + opts := metav1.ListOptions{LabelSelector: clusterValidatorRunLabel + "=" + runID} + out := map[string][]string{} + sas, err := client.CoreV1().ServiceAccounts(clusterValidatorNamespace).List(ctx, opts) + require.NoError(t, err) + for _, o := range sas.Items { + out["ServiceAccount"] = append(out["ServiceAccount"], o.Name) + } + crs, err := client.RbacV1().ClusterRoles().List(ctx, opts) + require.NoError(t, err) + for _, o := range crs.Items { + out["ClusterRole"] = append(out["ClusterRole"], o.Name) + } + crbs, err := client.RbacV1().ClusterRoleBindings().List(ctx, opts) + require.NoError(t, err) + for _, o := range crbs.Items { + out["ClusterRoleBinding"] = append(out["ClusterRoleBinding"], o.Name) + } + secrets, err := client.CoreV1().Secrets(clusterValidatorNamespace).List(ctx, opts) + require.NoError(t, err) + for _, o := range secrets.Items { + out["Secret"] = append(out["Secret"], o.Name) + } + cms, err := client.CoreV1().ConfigMaps(clusterValidatorNamespace).List(ctx, opts) + require.NoError(t, err) + for _, o := range cms.Items { + out["ConfigMap"] = append(out["ConfigMap"], o.Name) + } + return out +} + +// lifecycleClient drives a Job through the given terminal behaviour. The Job +// gets a UID, as a real apiserver assigns one, so ownerReferences can be set. +func lifecycleClient(jobStatus func(name string) *batchv1.Job, waiting string) *fake.Clientset { + client := fake.NewSimpleClientset() + var jobName atomic.Value + jobName.Store("") + client.PrependReactor("create", "jobs", func(action ktesting.Action) (bool, runtime.Object, error) { + job := action.(ktesting.CreateAction).GetObject().(*batchv1.Job) + job.UID = types.UID("uid-" + job.Name) + jobName.Store(job.Name) + return false, nil, nil + }) + client.PrependReactor("get", "jobs", func(action ktesting.Action) (bool, runtime.Object, error) { + name := jobName.Load().(string) + if name == "" || action.(ktesting.GetAction).GetName() != name || jobStatus == nil { + return false, nil, nil + } + job := jobStatus(name) + job.Labels = clusterValidatorLabels() + return true, job, nil + }) + client.PrependReactor("list", "pods", podListReactor(waiting)) + client.PrependReactor("get", "pods", func(action ktesting.Action) (bool, runtime.Object, error) { + if action.GetSubresource() != "" { + return false, nil, nil + } + pod := &corev1.Pod{ObjectMeta: metav1.ObjectMeta{ + Name: action.(ktesting.GetAction).GetName(), Namespace: clusterValidatorNamespace, + }} + if waiting != "" { + pod.Status.ContainerStatuses = []corev1.ContainerStatus{{ + Name: clusterValidatorContainer, + State: corev1.ContainerState{Waiting: &corev1.ContainerStateWaiting{Reason: waiting}}, + }} + } else { + pod.Status.ContainerStatuses = []corev1.ContainerStatus{{ + Name: clusterValidatorContainer, + State: corev1.ContainerState{Terminated: &corev1.ContainerStateTerminated{}}, + }} + } + return true, pod, nil + }) + return client +} + +func succeeded(name string) *batchv1.Job { + return &batchv1.Job{ + ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: clusterValidatorNamespace}, + Status: batchv1.JobStatus{Succeeded: 1}, + } +} + +func running(name string) *batchv1.Job { + return &batchv1.Job{ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: clusterValidatorNamespace}} +} + +// A clean run removes everything it created apart from the Job, which its TTL +// removes: the RBAC, the minted NGC pull secret and the network-check +// ConfigMap. +func TestRunClusterValidator_HappyPathLeavesNothingBehind(t *testing.T) { + t.Setenv("NGC_API_KEY", "key") + client := lifecycleClient(succeeded, "") + + res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", + "", false, clusterValidatorControlPlaneRole, nil) + require.NoError(t, res.Err) + require.NotEmpty(t, res.RunID) + assert.Empty(t, leftovers(t, client, res.RunID)) +} + +// A bootstrap that fails after the ServiceAccount exists must not abandon it. +func TestRunClusterValidator_FailedBootstrapLeavesNothingBehind(t *testing.T) { + client := fake.NewSimpleClientset() + client.PrependReactor("create", "clusterroles", func(ktesting.Action) (bool, runtime.Object, error) { + return true, nil, apierrors.NewForbidden( + schema.GroupResource{Group: rbacv1.GroupName, Resource: "clusterroles"}, "", nil) + }) + + res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", + "", false, clusterValidatorComputePlaneRole, nil) + require.Error(t, res.Err) + sas, err := client.CoreV1().ServiceAccounts(clusterValidatorNamespace).List(context.Background(), metav1.ListOptions{}) + require.NoError(t, err) + assert.Empty(t, sas.Items, "the ServiceAccount created before the failure must be removed") +} + +// A pull failure means the container never started, so nothing uses the RBAC, +// the NGC pull secret or the ConfigMap: the Job is deleted and all of them go +// now, instead of waiting 30 minutes for another run's orphan sweep. +func TestRunClusterValidator_PullFailureLeavesNothingBehind(t *testing.T) { + t.Setenv("NGC_API_KEY", "key") + client := lifecycleClient(running, "ImagePullBackOff") + + res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", + "", false, clusterValidatorControlPlaneRole, nil) + require.Error(t, res.Err) + assert.Empty(t, leftovers(t, client, res.RunID)) + deleted := false + for _, a := range client.Actions() { + if a.GetVerb() == "delete" && a.GetResource().Resource == "jobs" && + a.(ktesting.DeleteAction).GetName() == res.JobName { + deleted = true + } + } + assert.True(t, deleted, "the Job must be deleted so its pod stops retrying the pull") +} + +// While the pod may still be running its RBAC must stay, but the Job owns the +// pull secret and ConfigMap so its deadline and TTL take them too. +func TestRunClusterValidator_RunningPodKeepsRBACAndJobOwnsArtifacts(t *testing.T) { + t.Setenv("NGC_API_KEY", "key") + client := lifecycleClient(running, "") + ctx, cancel := context.WithTimeout(context.Background(), 200*time.Millisecond) + defer cancel() + + res := runClusterValidator(ctx, client, "nvcr.io/nvidia/validator:1", + "", false, clusterValidatorControlPlaneRole, nil) + require.Error(t, res.Err) + left := leftovers(t, client, res.RunID) + assert.Len(t, left["ServiceAccount"], 1, "a running pod must keep its RBAC") + require.Len(t, left["Secret"], 1) + require.Len(t, left["ConfigMap"], 1) + + secret, err := client.CoreV1().Secrets(clusterValidatorNamespace).Get(context.Background(), left["Secret"][0], metav1.GetOptions{}) + require.NoError(t, err) + require.Len(t, secret.OwnerReferences, 1) + assert.Equal(t, "Job", secret.OwnerReferences[0].Kind) + assert.Equal(t, res.JobName, secret.OwnerReferences[0].Name) + cm, err := client.CoreV1().ConfigMaps(clusterValidatorNamespace).Get(context.Background(), left["ConfigMap"][0], metav1.GetOptions{}) + require.NoError(t, err) + require.Len(t, cm.OwnerReferences, 1) + assert.Equal(t, res.JobName, cm.OwnerReferences[0].Name) +} + +// The deferred sweep removes only this run's Secret. A concurrent same-role +// run's Secret must survive it, or that run's pod fails its pull mid-flight. +func TestRunClusterValidator_SparesConcurrentSameRoleSecret(t *testing.T) { + t.Setenv("NGC_API_KEY", "key") + other := &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: validatorPullSecretRunName(clusterValidatorComputePlaneRole, "other"), + Namespace: clusterValidatorNamespace, + Labels: clusterValidatorRunLabels(clusterValidatorComputePlaneRole, "other", false), + CreationTimestamp: metav1.Now(), + }, + Type: corev1.SecretTypeDockerConfigJson, + Data: map[string][]byte{corev1.DockerConfigJsonKey: []byte(`{"auths":{}}`)}, + } + client := lifecycleClient(succeeded, "") + _, err := client.CoreV1().Secrets(clusterValidatorNamespace).Create(context.Background(), other, metav1.CreateOptions{}) + require.NoError(t, err) + + res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", + "", false, clusterValidatorComputePlaneRole, nil) + require.NoError(t, res.Err) + _, err = client.CoreV1().Secrets(clusterValidatorNamespace).Get(context.Background(), other.Name, metav1.GetOptions{}) + assert.NoError(t, err, "another run's Secret must survive this run's sweep") +} + +// --no-cleanup keeps everything, labelled with the run so the printed command +// removes exactly that run. +func TestRunClusterValidator_NoCleanupKeepsRunAndPrintsTheCommand(t *testing.T) { + t.Setenv("NGC_API_KEY", "key") + client := lifecycleClient(succeeded, "") + + res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", + "", true, clusterValidatorControlPlaneRole, nil) + require.NoError(t, res.Err) + left := leftovers(t, client, res.RunID) + for _, kind := range []string{"ServiceAccount", "ClusterRole", "ClusterRoleBinding", "Secret", "ConfigMap"} { + assert.Len(t, left[kind], 1, kind) + } + hint := validatorCleanupHint("ctx-a", res.RunID) + assert.Contains(t, hint, clusterValidatorRunLabel+"="+res.RunID) + assert.Contains(t, hint, "clusterrole,clusterrolebinding") + assert.Contains(t, hint, "--context ctx-a") +} + +func stampAge(o metav1.Object, age time.Duration) { + o.SetCreationTimestamp(metav1.NewTime(time.Now().Add(-age))) +} + +// Preserved objects are kept for a day, not forever, and the orphan sweep +// reclaims a preserved Job too. Objects labelled by a released CLI, including +// its fixed legacy name, are never touched. +func TestSweepOrphanClusterValidatorRBAC_PreservedExpireAndLegacyIsSpared(t *testing.T) { + name := func(run string) string { return clusterValidatorRBACName(clusterValidatorControlPlaneRole, run) } + sa := func(n string, lbls map[string]string, age time.Duration) *corev1.ServiceAccount { + o := &corev1.ServiceAccount{ObjectMeta: metav1.ObjectMeta{Name: n, Namespace: clusterValidatorNamespace, Labels: lbls}} + stampAge(o, age) + return o + } + job := func(n string, lbls map[string]string, age time.Duration) *batchv1.Job { + o := &batchv1.Job{ObjectMeta: metav1.ObjectMeta{Name: n, Namespace: clusterValidatorNamespace, Labels: lbls}} + stampAge(o, age) + return o + } + legacy := map[string]string{ + "app.kubernetes.io/name": clusterValidatorAppLabel, "app.kubernetes.io/managed-by": "nvcf-cli", + "app.kubernetes.io/component": "preflight", + } + client := fake.NewSimpleClientset( + sa(name("old-kept"), clusterValidatorRunLabels(clusterValidatorControlPlaneRole, "old-kept", true), 25*time.Hour), + sa(name("new-kept"), clusterValidatorRunLabels(clusterValidatorControlPlaneRole, "new-kept", true), time.Hour), + sa(clusterValidatorName, legacy, 1000*time.Hour), + job(clusterValidatorName+"-1", clusterValidatorRunLabels(clusterValidatorControlPlaneRole, "old-kept", true), 25*time.Hour), + job(clusterValidatorName+"-2", clusterValidatorRunLabels(clusterValidatorControlPlaneRole, "new-kept", true), time.Hour), + ) + + sweepOrphanClusterValidatorRBAC(context.Background(), client, orphanValidatorRBACTTL) + + ctx := context.Background() + _, err := client.CoreV1().ServiceAccounts(clusterValidatorNamespace).Get(ctx, name("old-kept"), metav1.GetOptions{}) + assert.True(t, apierrors.IsNotFound(err), "a preserved object older than a day is reclaimed") + _, err = client.CoreV1().ServiceAccounts(clusterValidatorNamespace).Get(ctx, name("new-kept"), metav1.GetOptions{}) + assert.NoError(t, err, "a preserved object younger than a day is kept") + _, err = client.CoreV1().ServiceAccounts(clusterValidatorNamespace).Get(ctx, clusterValidatorName, metav1.GetOptions{}) + assert.NoError(t, err, "a released CLI's fixed-name object is never touched") + _, err = client.BatchV1().Jobs(clusterValidatorNamespace).Get(ctx, clusterValidatorName+"-1", metav1.GetOptions{}) + assert.True(t, apierrors.IsNotFound(err), "a preserved Job older than a day is reclaimed") + _, err = client.BatchV1().Jobs(clusterValidatorNamespace).Get(ctx, clusterValidatorName+"-2", metav1.GetOptions{}) + assert.NoError(t, err) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index fcf877b4ff..0acbb0b652 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -479,8 +479,13 @@ func TestBuildClusterValidatorJobShape(t *testing.T) { labels := job.Labels assert.Equal(t, clusterValidatorAppLabel, labels["app.kubernetes.io/name"]) - assert.Equal(t, "nvcf-cli", labels["app.kubernetes.io/managed-by"]) + assert.NotEqual(t, "nvcf-cli", labels["app.kubernetes.io/managed-by"], + "released CLIs DeleteCollection on managed-by=nvcf-cli, so a shared value lets each version delete the other's objects") assert.Equal(t, "preflight", labels["app.kubernetes.io/component"]) + assert.Equal(t, "runid", labels[clusterValidatorRunLabel]) + assert.Equal(t, "runid", job.Spec.Template.Labels[clusterValidatorRunLabel]) + require.NotNil(t, job.Spec.ActiveDeadlineSeconds, + "without a deadline a Job whose pod never finishes never becomes terminal, so its TTL never fires") // The validator must run in preflight mode so it skips the summary // ConfigMap write (the metrics path needs the NVCA agent, which is not @@ -519,6 +524,9 @@ func TestBuildClusterValidatorJobShape_NoCleanup(t *testing.T) { job := buildClusterValidatorJob("test-job", "img:1", "", "", "runid", true) assert.Nil(t, job.Spec.TTLSecondsAfterFinished, "--no-cleanup must omit TTLSecondsAfterFinished so the Job persists for debugging") + assert.Nil(t, job.Spec.ActiveDeadlineSeconds, + "a deadline would kill the kept pod, and its logs, shortly after the CLI gives up") + assert.Equal(t, "true", job.Labels[clusterValidatorPreserveLabel]) } func TestCleanValidatorOutput_StripsANSI(t *testing.T) { @@ -765,42 +773,6 @@ func TestParseRegistryHostPort_RejectsMalformedExplicitPort(t *testing.T) { assert.Equal(t, 443, port) } -// The prior-run Job sweep deletes by label plus generated name. Labels alone -// are three public constants, so a Job carrying them under an unrelated name is -// not ours to delete. -func TestSweepPriorClusterValidatorJobs_RequiresGeneratedName(t *testing.T) { - ctx := context.Background() - const role = clusterValidatorControlPlaneRole - ours := clusterValidatorName + "-1700000000" - - client := fake.NewSimpleClientset( - &batchv1.Job{ObjectMeta: metav1.ObjectMeta{ - Name: ours, Namespace: clusterValidatorNamespace, - Labels: clusterValidatorRoleLabels(role), - }}, - &batchv1.Job{ObjectMeta: metav1.ObjectMeta{ - Name: "operator-owned-job", Namespace: clusterValidatorNamespace, - Labels: clusterValidatorRoleLabels(role), - }}, - &batchv1.Job{ObjectMeta: metav1.ObjectMeta{ - Name: clusterValidatorName + "-9999999999", Namespace: clusterValidatorNamespace, - Labels: clusterValidatorRoleLabels("compute-plane"), - }}, - ) - - sweepPriorClusterValidatorJobs(ctx, client, role) - - jobs := client.BatchV1().Jobs(clusterValidatorNamespace) - _, err := jobs.Get(ctx, ours, metav1.GetOptions{}) - assert.True(t, apierrors.IsNotFound(err), "this role's prior Job must be swept") - - _, err = jobs.Get(ctx, "operator-owned-job", metav1.GetOptions{}) - assert.NoError(t, err, "matching labels alone must not authorize deleting someone else's Job") - - _, err = jobs.Get(ctx, clusterValidatorName+"-9999999999", metav1.GetOptions{}) - assert.NoError(t, err, "the other role's Job must survive") -} - // The network-checks ConfigMap was the one object a run created with no // cleanup path, so it accumulated in the cluster forever. func TestSweepClusterValidatorConfig_DeletesOwnAndSparesOperators(t *testing.T) { @@ -1111,23 +1083,3 @@ func TestBuildClusterValidatorJob_MarksPreservedRun(t *testing.T) { assert.NotContains(t, ordinary.Labels, clusterValidatorPreserveLabel, "an ordinary run must stay sweepable") } - -func TestSweepPriorClusterValidatorJobs_SparesPreservedJob(t *testing.T) { - preserved := buildClusterValidatorJob(clusterValidatorName+"-kept", "nvcr.io/x/v:1", "", - clusterValidatorControlPlaneRole, "runid", true) - preserved.Namespace = clusterValidatorNamespace - ordinary := buildClusterValidatorJob(clusterValidatorName+"-old", "nvcr.io/x/v:1", "", - clusterValidatorControlPlaneRole, "runid", false) - ordinary.Namespace = clusterValidatorNamespace - - client := fake.NewSimpleClientset(preserved, ordinary) - sweepPriorClusterValidatorJobs(context.Background(), client, clusterValidatorControlPlaneRole) - - _, err := client.BatchV1().Jobs(clusterValidatorNamespace).Get( - context.Background(), preserved.Name, metav1.GetOptions{}) - assert.NoError(t, err, "a Job kept with --no-cleanup must survive a later run's sweep") - - _, err = client.BatchV1().Jobs(clusterValidatorNamespace).Get( - context.Background(), ordinary.Name, metav1.GetOptions{}) - assert.True(t, apierrors.IsNotFound(err), "an ordinary prior Job must still be swept") -} diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index 97285be354..f0167a0d71 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -613,6 +613,11 @@ func clusterValidatorCheck(cv ClusterValidator, kubeContext, image, pullSecret s }) r.Logs = result.Logs r.Detail = clusterValidatorDetail(kubeContext, result.JobName) + if noCleanup { + if hint := validatorCleanupHint(kubeContext, result.RunID); hint != "" { + r.Detail = strings.TrimPrefix(r.Detail+"; ", "; ") + hint + } + } if result.Err != nil { r.Severity = "warning" @@ -633,6 +638,20 @@ func clusterValidatorCheck(cv ClusterValidator, kubeContext, image, pullSecret s } } +// validatorCleanupHint is the command that removes everything one --no-cleanup +// run kept. Everything it created carries the run label, so one selector +// covers the namespaced objects and one the cluster-scoped RBAC. +func validatorCleanupHint(kubeContext, runID string) string { + if runID == "" { + return "" + } + sel := clusterValidatorRunLabel + "=" + runID + ctx := kubectlContextArg(kubeContext) + return fmt.Sprintf("kept with --no-cleanup; remove with: kubectl%s delete -n %s job,serviceaccount,secret,configmap -l %s && "+ + "kubectl%s delete clusterrole,clusterrolebinding -l %s", + ctx, clusterValidatorNamespace, sel, ctx, sel) +} + func clusterValidatorDetail(kubeContext, jobName string) string { hint := kubectlLogsHint(kubeContext, jobName) if hint == "" { diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go index 1fb43122f0..e23daf1376 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go @@ -197,15 +197,15 @@ func scanAndMirrorPullSecret(ctx context.Context, client kubernetes.Interface, r continue } if s.Namespace == clusterValidatorNamespace { - // Adopt an operator-supplied Secret (no managed labels, so no - // sweep touches it) or this role's own. Never the other - // role's: in ModeSplit both kubecontexts can resolve to one - // cluster, and that role's deferred sweep would delete the - // Secret while this role's pod is still pulling, which the - // kubelet reports as FailedToRetrieveImagePullSecret. That is - // the exact failure per-role naming was introduced to prevent. - if hasValidatorManagedLabels(s.Labels) && - s.Labels[clusterValidatorRoleLabel] != role { + // Adopt only an operator-supplied Secret (no managed labels, so + // no sweep touches it). Never one another run minted: those + // are per-run now, so adopting one reuses a possibly stale + // NGC key (a run with a bad key keeps its Secret while its pod + // may still be pulling), can outlive this run, and can be + // deleted by its own run's sweep mid-pull, which the kubelet + // reports as FailedToRetrieveImagePullSecret. A --no-cleanup + // Secret would otherwise be adopted by every later run. + if hasValidatorManagedLabels(s.Labels) { continue } return s.Name, nil @@ -216,7 +216,7 @@ func scanAndMirrorPullSecret(ctx context.Context, client kubernetes.Interface, r // the destination namespace, and writeDockerConfigSecret's // delete-and-recreate path would otherwise destroy that // secret on type mismatch. - if err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretRunName(role, runID), role, cfg, preserve); err != nil { + if err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretRunName(role, runID), role, runID, cfg, preserve); err != nil { return "", fmt.Errorf("mirror pull secret %s/%s to %s/%s: %w", s.Namespace, s.Name, clusterValidatorNamespace, validatorPullSecretRunName(role, runID), err) } @@ -255,7 +255,7 @@ func autoCreatePullSecretFromEnv(ctx context.Context, client kubernetes.Interfac if err != nil { return "", fmt.Errorf("encode dockerconfigjson for %s: %w", registry, err) } - if err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretRunName(role, runID), role, cfg, preserve); err != nil { + if err := writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, validatorPullSecretRunName(role, runID), role, runID, cfg, preserve); err != nil { return "", fmt.Errorf("auto-create pull secret %s/%s: %w", clusterValidatorNamespace, validatorPullSecretRunName(role, runID), err) } @@ -295,12 +295,14 @@ func buildDockerConfigJSON(registry, username, password string) ([]byte, error) // which label-based ownership cannot prevent: the managed labels are three // public constants anyone can copy onto a Secret they pre-create under a // predictable name. -func writeDockerConfigSecret(ctx context.Context, client kubernetes.Interface, namespace, name, role string, dockerConfig []byte, preserve bool) error { +func writeDockerConfigSecret( + ctx context.Context, client kubernetes.Interface, namespace, name, role, runID string, dockerConfig []byte, preserve bool, +) error { secret := &corev1.Secret{ ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: namespace, - Labels: clusterValidatorRoleLabelsPreserved(role, preserve), + Labels: clusterValidatorRunLabels(role, runID, preserve), }, Type: corev1.SecretTypeDockerConfigJson, Data: map[string][]byte{corev1.DockerConfigJsonKey: dockerConfig}, diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go index ee958421fc..2f4aa2fb07 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go @@ -353,12 +353,12 @@ func TestManagedPullSecret_IsScopedPerRole(t *testing.T) { cfg := dockerConfigBlob(t, "private.registry.test", "user", "pass") client := fake.NewSimpleClientset() require.NoError(t, writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, - cpName, clusterValidatorControlPlaneRole, cfg, false)) + cpName, clusterValidatorControlPlaneRole, "run1", cfg, false)) require.NoError(t, writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, - gpuName, "compute-plane", cfg, false)) + gpuName, "compute-plane", "run1", cfg, false)) // Our labels, but not a name we generate: must survive. require.NoError(t, writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, - "operator-owned-secret", clusterValidatorControlPlaneRole, cfg, false)) + "operator-owned-secret", clusterValidatorControlPlaneRole, "run1", cfg, false)) sweepManagedPullSecrets(ctx, client, clusterValidatorControlPlaneRole, "runid") @@ -381,7 +381,7 @@ func TestManagedPullSecret_LabelsMatchOnlyItsOwnRole(t *testing.T) { cfg := dockerConfigBlob(t, "nvcr.io", "$oauthtoken", "key") name := validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid") require.NoError(t, writeDockerConfigSecret(ctx, client, clusterValidatorNamespace, - name, clusterValidatorControlPlaneRole, cfg, false)) + name, clusterValidatorControlPlaneRole, "run1", cfg, false)) own, err := client.CoreV1().Secrets(clusterValidatorNamespace).List(ctx, metav1.ListOptions{LabelSelector: validatorRoleSelector(clusterValidatorControlPlaneRole)}) @@ -449,24 +449,28 @@ func TestScanAndMirrorPullSecret_AdoptsOperatorSuppliedSecret(t *testing.T) { assert.Equal(t, "operator-pull", got) } -// This role's own Secret is still adopted rather than re-minted. -func TestScanAndMirrorPullSecret_AdoptsOwnRoleSecret(t *testing.T) { +// No Secret another run minted is adopted, even one of the same role: it may +// hold a stale key, may be deleted by its own run's sweep mid-pull, and a +// --no-cleanup one would otherwise be adopted by every later run. +func TestScanAndMirrorPullSecret_NeverAdoptsAnotherRunsSecret(t *testing.T) { cfg := dockerConfigBlob(t, "nvcr.io", "$oauthtoken", "key") - own := &corev1.Secret{ - ObjectMeta: metav1.ObjectMeta{ - Name: validatorPullSecretRunName(clusterValidatorComputePlaneRole, "runid"), - Namespace: clusterValidatorNamespace, - Labels: clusterValidatorRoleLabels(clusterValidatorComputePlaneRole), - }, - Type: corev1.SecretTypeDockerConfigJson, - Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, + secret := func(runID string, preserve bool) *corev1.Secret { + return &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: validatorPullSecretRunName(clusterValidatorComputePlaneRole, runID), + Namespace: clusterValidatorNamespace, + Labels: clusterValidatorRunLabels(clusterValidatorComputePlaneRole, runID, preserve), + }, + Type: corev1.SecretTypeDockerConfigJson, + Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, + } } - client := fake.NewSimpleClientset(own) + client := fake.NewSimpleClientset(secret("earlier", false), secret("kept", true)) got, err := scanAndMirrorPullSecret(context.Background(), client, "nvcr.io", clusterValidatorComputePlaneRole, "runid", false) require.NoError(t, err) - assert.Equal(t, own.Name, got) + assert.Empty(t, got, "a managed Secret from another run must not be adopted") } // writeDockerConfigSecret is create-only. The name carries this run's @@ -480,7 +484,7 @@ func TestWriteDockerConfigSecret_CreatesUnderTheRunScopedName(t *testing.T) { name := validatorPullSecretRunName(clusterValidatorControlPlaneRole, "runid") require.NoError(t, writeDockerConfigSecret(context.Background(), client, - clusterValidatorNamespace, name, clusterValidatorControlPlaneRole, cfg, false)) + clusterValidatorNamespace, name, clusterValidatorControlPlaneRole, "run1", cfg, false)) s, err := client.CoreV1().Secrets(clusterValidatorNamespace).Get( context.Background(), name, metav1.GetOptions{}) @@ -505,7 +509,7 @@ func TestWriteDockerConfigSecret_RefusesAnyCollision(t *testing.T) { client := fake.NewSimpleClientset(squatter) err := writeDockerConfigSecret(context.Background(), client, - clusterValidatorNamespace, name, clusterValidatorControlPlaneRole, cfg, false) + clusterValidatorNamespace, name, clusterValidatorControlPlaneRole, "run1", cfg, false) require.Error(t, err, "a collision on an unguessable name must never be adopted") assert.Contains(t, err.Error(), "refusing to overwrite") From d642bef55f80d870168ba07f07a3a7f126fad2e3 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 30 Sep 2026 01:03:09 +0530 Subject: [PATCH 38/55] fix(nvcf-cli): forward the validator's settings and probe the registries the install uses Signed-off-by: rohithb --- src/clis/nvcf-cli/cmd/main_test.go | 75 +- src/clis/nvcf-cli/cmd/root.go | 1 + src/clis/nvcf-cli/cmd/self_hosted_check.go | 134 +- .../cmd/self_hosted_check_stackvalues_test.go | 82 + .../nvcf-cli/cmd/self_hosted_check_test.go | 14 + .../self_hosted_check_validatorenv_test.go | 99 + src/clis/nvcf-cli/cmd/self_hosted_test.go | 1 + .../agentskill/skilldata_generated.go | 4123 +++++++++-------- .../internal/selfhosted/clustervalidator.go | 131 +- .../clustervalidator_lifecycle_test.go | 75 +- .../selfhosted/clustervalidator_test.go | 81 +- .../nvcf-cli/internal/selfhosted/preflight.go | 19 +- .../internal/selfhosted/registry_cred.go | 157 +- .../internal/selfhosted/registry_cred_test.go | 161 +- 14 files changed, 2888 insertions(+), 2265 deletions(-) create mode 100644 src/clis/nvcf-cli/cmd/self_hosted_check_stackvalues_test.go create mode 100644 src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go diff --git a/src/clis/nvcf-cli/cmd/main_test.go b/src/clis/nvcf-cli/cmd/main_test.go index 4d65747743..c2abc70774 100644 --- a/src/clis/nvcf-cli/cmd/main_test.go +++ b/src/clis/nvcf-cli/cmd/main_test.go @@ -19,9 +19,14 @@ package cmd import ( "context" + "net/http" + "net/http/httptest" "os" "testing" + "github.com/spf13/pflag" + "github.com/spf13/viper" + "nvcf-cli/internal/selfhosted" ) @@ -51,5 +56,73 @@ func TestMain(m *testing.M) { newRegistryCredentialCheckerForSelfHosted = func() selfhosted.RegistryCredentialChecker { return func(context.Context, string, string, bool) error { return nil } } - os.Exit(m.Run()) + // No validator Job. A developer with NVCF_CLI_CLUSTER_VALIDATOR_IMAGE + // exported, or cluster_validator_image in ~/.nvcf-cli.yaml, would + // otherwise have every check test create RBAC, Secrets and Jobs in the + // current kube context and wait up to five minutes per role. + newClusterValidatorForSelfHosted = func() selfhosted.ClusterValidator { + return func(context.Context, selfhosted.ClusterValidatorParams) selfhosted.ClusterValidatorResult { + return selfhosted.ClusterValidatorResult{Passed: true} + } + } + for _, k := range []string{ + "NVCF_CLI_CLUSTER_VALIDATOR_IMAGE", "NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES", + "NVCF_CLI_CLUSTER_VALIDATOR_PROBE_IMAGE", + } { + _ = os.Unsetenv(k) + } + // The SIS reachability check has no seam, but it resolves its URL from + // NVCF_ICMS_URL, so resetCheckFlags points check tests at this local + // server instead of the real SIS. Scoped per test: setting it for the + // whole package would change what the ICMS URL resolution tests resolve. + sis := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.WriteHeader(http.StatusOK) + })) + testSISURL = sis.URL + code := m.Run() + sis.Close() + os.Exit(code) +} + +// testSISURL is a local stand-in for SIS, set by TestMain. +var testSISURL string + +// resetCheckFlags returns every `self-hosted check` flag to its default, +// including cobra's Changed marker, now and when the test ends. The flag +// variables are package globals that survive rootCmd.Execute, so without this +// a test that passes --pre leaks it into whichever test runs next, and a +// regression guard can pass or fail on test order alone. +func resetCheckFlags(t *testing.T) { + t.Helper() + if testSISURL != "" { + t.Setenv("NVCF_ICMS_URL", testSISURL) + } + reset := func() { + checkPre, checkControlPlane, checkComputePlane, checkAll = false, false, false, false + checkClusterName = "" + checkLocalOnly, checkSkipInotifyCheck, checkSkipClusterValidation = false, false, false + checkClusterValidatorImage, checkClusterValidatorPullSecret = "", "" + checkClusterValidatorNoCleanup = false + checkClusterValidatorRegistries = nil + checkClusterValidatorProbeImage = "" + checkShowLogs = false + selfHostedJSON, selfHostedPlain = false, false + selfHostedOutput = "text" + selfHostedWait = "" + selfHostedControlPlaneContext, selfHostedComputePlaneContext = "", "" + for _, fs := range []*pflag.FlagSet{selfHostedCheckCmd.Flags(), selfHostedCmd.PersistentFlags()} { + fs.VisitAll(func(f *pflag.Flag) { f.Changed = false }) + } + // Other tests call viper.Reset(), which drops the bindings made at + // init, so a flag passed to check would silently not be read. + for key, flag := range map[string]string{ + "cluster_validator_image": "cluster-validator-image", + "cluster_validator_registries": "cluster-validator-registries", + "cluster_validator_probe_image": "cluster-validator-probe-image", + } { + _ = viper.BindPFlag(key, selfHostedCheckCmd.Flags().Lookup(flag)) + } + } + reset() + t.Cleanup(reset) } diff --git a/src/clis/nvcf-cli/cmd/root.go b/src/clis/nvcf-cli/cmd/root.go index 2f07f1b943..ee098e5be5 100644 --- a/src/clis/nvcf-cli/cmd/root.go +++ b/src/clis/nvcf-cli/cmd/root.go @@ -286,6 +286,7 @@ func initConfig() { // NVCF_CLI_CLUSTER_VALIDATOR_IMAGE override. viper.BindEnv("cluster_validator_image", "NVCF_CLI_CLUSTER_VALIDATOR_IMAGE") viper.BindEnv("cluster_validator_registries", "NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES") + viper.BindEnv("cluster_validator_probe_image", "NVCF_CLI_CLUSTER_VALIDATOR_PROBE_IMAGE") // If a config file is found, read it in. if err := viper.ReadInConfig(); err == nil && viper.GetBool("debug") { diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index 6504ad9430..2f50b4da38 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -48,6 +48,7 @@ var ( checkClusterValidatorPullSecret string checkClusterValidatorNoCleanup bool checkClusterValidatorRegistries []string + checkClusterValidatorProbeImage string checkShowLogs bool ) @@ -117,10 +118,18 @@ func init() { selfHostedCheckCmd.Flags().StringSliceVar(&checkClusterValidatorRegistries, "cluster-validator-registries", nil, "Additional container registries to probe for reachability in the control-plane validator. "+ "Format: host:port (e.g. harbor.company.internal:443,ghcr.io:443). "+ - "nvcr.io is always included. Env: NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES. "+ + "Added to the registries the install pulls from, which are probed with the same "+ + "criticality as the local credential check. Env: NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES. "+ "Can also be set in nvcf-cli config as cluster_validator_registries (list).") _ = viper.BindPFlag("cluster_validator_registries", selfHostedCheckCmd.Flags().Lookup("cluster-validator-registries")) + selfHostedCheckCmd.Flags().StringVar(&checkClusterValidatorProbeImage, "cluster-validator-probe-image", "", + "Image for the control-plane validator's node-to-node overlay probe (needs sh and busybox-style nc). "+ + "Defaults to busybox:1.36 from Docker Hub; set a mirror for air-gapped clusters. "+ + "Env: NVCF_CLI_CLUSTER_VALIDATOR_PROBE_IMAGE. "+ + "Can also be set in nvcf-cli config as cluster_validator_probe_image.") + _ = viper.BindPFlag("cluster_validator_probe_image", + selfHostedCheckCmd.Flags().Lookup("cluster-validator-probe-image")) selfHostedCheckCmd.Flags().BoolVar(&checkShowLogs, "show-logs", false, "Print the cleaned cluster-validator transcript to stderr after the check events. "+ "Useful when piping --json output to a script that also wants the transcript.") @@ -212,9 +221,8 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { // --cluster-validator-registries extras independently of the image config. if !localOnly { extraRegistries := configuredValidatorRegistries() - stackValuesFile := resolveStackValuesFile() credEntries = selfhosted.EnumerateRegistries( - clusterValidatorImage, stackValuesFile, extraRegistries, + clusterValidatorImage, resolveStackValuesFiles(), extraRegistries, ) if len(credEntries) > 0 { registryChecker = newRegistryCredentialCheckerForSelfHosted() @@ -299,16 +307,14 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { } } -// resolveStackValuesFile returns the environment values YAML to read -// global.image.registry from, or "" when none is available. +// resolveStackValuesFiles returns the stack values files preflight reads, in +// the order helmfile layers them: base.yaml first, then the environment file +// over it. Returns nil when no stack is found. // // It prefers --control-plane-stack, the same source every sibling command uses, -// and only falls back to walking up from the working directory. Within a stack -// it tries HELMFILE_ENV (default "default") and then base.yaml, which is where -// global.image.registry actually lives. The previous version looked only for -// environments/local.yaml, which is not a tracked file, so on any clean -// checkout os.Stat never succeeded and this whole lookup was dead. -func resolveStackValuesFile() string { +// and only falls back to walking up from the working directory. The +// environment follows resolveStackEnv. +func resolveStackValuesFiles() []string { var roots []string if selfHostedControlPlaneStack != "" { roots = append(roots, selfHostedControlPlaneStack) @@ -325,32 +331,45 @@ func resolveStackValuesFile() string { } } - // selfHostedEnv (--env, default "local"), not HELMFILE_ENV: that variable - // is only ever injected into the helmfile subprocess, so reading it here - // always returned "" and fell through to base.yaml. An operator whose - // local.yaml points global.image.registry at their mirror would get - // base.yaml's nvcr.io, and the preflight would credential-check a registry - // the install never pulls from. - env := strings.TrimSpace(selfHostedEnv) - if env == "" { - env = "local" - } - names := []string{env + ".yaml", "base.yaml"} - + env := resolveStackEnv() for _, root := range roots { for _, sub := range [][]string{ {"deploy", "stacks", "self-managed", "environments"}, {"environments"}, // a stack dir passed directly } { - for _, name := range names { - candidate := filepath.Join(append(append([]string{root}, sub...), name)...) + dir := filepath.Join(append([]string{root}, sub...)...) + var files []string + for _, name := range []string{"base.yaml", env + ".yaml"} { + candidate := filepath.Join(dir, name) if _, err := os.Stat(candidate); err == nil { - return candidate + files = append(files, candidate) } } + if len(files) > 0 { + return files + } } } - return "" + return nil +} + +// resolveStackEnv picks the helmfile environment preflight reads: an explicit +// --env, then HELMFILE_ENV for an operator who exports it and runs helmfile +// directly, then --env's default. When the CLI runs helmfile itself it passes +// --env as HELMFILE_ENV, so an explicit flag must win. +func resolveStackEnv() string { + if f := selfHostedCmd.PersistentFlags().Lookup("env"); f != nil && f.Changed { + if env := strings.TrimSpace(selfHostedEnv); env != "" { + return env + } + } + if env := strings.TrimSpace(os.Getenv("HELMFILE_ENV")); env != "" { + return env + } + if env := strings.TrimSpace(selfHostedEnv); env != "" { + return env + } + return "local" } // localStackDir returns src when it points at a readable local directory. @@ -533,9 +552,11 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin staleNSProber := newStaleNamespaceProberForSelfHosted() - // Additional registries to probe in the control-plane validator ConfigMap. - // Priority: flag > env > config file. - registries := configuredValidatorRegistries() + // The control-plane validator probes the same registries, with the same + // criticality, as the local credential check, extras included. + registries := cfg.Registries + validatorEnv := clusterValidatorJobEnv( + selfhosted.LoadStackValues(resolveStackValuesFiles())) // The cluster-validator image is the same for both roles; VALIDATOR_ROLE // in the Job env selects which check set runs inside the binary. @@ -578,6 +599,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorImage: clusterValidatorImage, ClusterValidatorPullSecret: checkClusterValidatorPullSecret, ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, + ClusterValidatorEnv: validatorEnv, ClusterValidatorRegistries: registries, StaleNamespaceProber: staleNSProber, StackDir: localStackDir(selfHostedControlPlaneStack), @@ -596,6 +618,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorImage: clusterValidatorImage, ClusterValidatorPullSecret: checkClusterValidatorPullSecret, ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, + ClusterValidatorEnv: validatorEnv, StaleNamespaceProber: staleNSProber, StackDir: localStackDir(selfHostedComputePlaneStack), } @@ -639,6 +662,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorImage: clusterValidatorImage, ClusterValidatorPullSecret: checkClusterValidatorPullSecret, ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, + ClusterValidatorEnv: validatorEnv, ClusterValidatorRegistries: registries, StaleNamespaceProber: staleForControlPlane, StackDir: localStackDir(selfHostedControlPlaneStack), @@ -655,6 +679,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorImage: clusterValidatorImage, ClusterValidatorPullSecret: checkClusterValidatorPullSecret, ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, + ClusterValidatorEnv: validatorEnv, StaleNamespaceProber: staleForComputePlane, StackDir: localStackDir(selfHostedComputePlaneStack), ExtraStaleNamespaces: gpuExtraNamespaces, @@ -666,6 +691,55 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin } } +// clusterValidatorJobEnv is what the validator container needs from the CLI's +// resolved configuration, matching what the chart CronJob forwards: +// - VALIDATOR_POST_INSTALL on every run except --pre, so an empty control +// plane fails after install instead of passing as pre-install; +// - relocated OpenBao and Envoy Gateway namespaces, without which the Tier +// rows assess the defaults and miss the real components; +// - NVCF_GATEWAY_NAMES, the override for the NVCF Gateway discovery; +// - the overlay probe image, so a mirrored cluster does not pull busybox +// from Docker Hub. +func clusterValidatorJobEnv(stack selfhosted.StackValues) map[string]string { + env := map[string]string{} + if !checkPre { + env["VALIDATOR_POST_INSTALL"] = "true" + } + if ns := configValue("NVCF_OPENBAO_NAMESPACE"); ns != "" { + env["NVCF_OPENBAO_NAMESPACE"] = ns + } + envoyNS := configValue("NVCF_ENVOY_GATEWAY_NAMESPACE") + if envoyNS == "" { + envoyNS = stack.EnvoyGatewayNamespace + } + if envoyNS != "" { + env["NVCF_ENVOY_GATEWAY_NAMESPACE"] = envoyNS + } + if names := configValue("NVCF_GATEWAY_NAMES"); names != "" { + env["NVCF_GATEWAY_NAMES"] = names + } + probe := strings.TrimSpace(viper.GetString("cluster_validator_probe_image")) + if probe == "" { + probe = configValue("NVCF_N2N_PROBE_IMAGE") + } + if probe != "" { + env["NVCF_N2N_PROBE_IMAGE"] = probe + } + return env +} + +// configValue reads a setting the way the CLI's cluster configuration does +// (environment, then the nvcf-cli config file). +func configValue(key string) string { + if v := strings.TrimSpace(os.Getenv(key)); v != "" { + return v + } + if viper.IsSet(key) { + return strings.TrimSpace(viper.GetString(key)) + } + return "" +} + // resolveClusterValidatorImage resolves the validator image from flag > env > // config-file. Returns ("", false) when unconfigured. When only a repo is // given, discovers the latest stable tag (1h cached; falls back on failure). diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_stackvalues_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_stackvalues_test.go new file mode 100644 index 0000000000..ef805f46b6 --- /dev/null +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_stackvalues_test.go @@ -0,0 +1,82 @@ +/* +SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. +SPDX-License-Identifier: Apache-2.0 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cmd + +import ( + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +// stackWithEnvs creates a stack directory holding base.yaml and one file per +// named environment. +func stackWithEnvs(t *testing.T, envs ...string) string { + t.Helper() + dir := t.TempDir() + envDir := filepath.Join(dir, "environments") + require.NoError(t, os.MkdirAll(envDir, 0o755)) + for _, name := range append([]string{"base"}, envs...) { + require.NoError(t, os.WriteFile(filepath.Join(envDir, name+".yaml"), []byte("global: {}\n"), 0o644)) + } + return dir +} + +// withEnvFlag sets --env as if the operator passed it, and restores it. +func withEnvFlag(t *testing.T, value string, changed bool) { + t.Helper() + f := selfHostedCmd.PersistentFlags().Lookup("env") + require.NotNil(t, f) + prevValue, prevChanged := selfHostedEnv, f.Changed + selfHostedEnv, f.Changed = value, changed + t.Cleanup(func() { selfHostedEnv, f.Changed = prevValue, prevChanged }) +} + +// helmfile layers the environment file over base.yaml, so both are returned, +// base first. Returning only the first file that exists dropped whichever +// half the other one set. +func TestResolveStackValuesFiles_LayersEnvOverBase(t *testing.T) { + stack := stackWithEnvs(t, "local") + prev := selfHostedControlPlaneStack + selfHostedControlPlaneStack = stack + t.Cleanup(func() { selfHostedControlPlaneStack = prev }) + t.Setenv("HELMFILE_ENV", "") + withEnvFlag(t, "local", false) + + got := resolveStackValuesFiles() + require.Len(t, got, 2) + assert.Equal(t, "base.yaml", filepath.Base(got[0])) + assert.Equal(t, "local.yaml", filepath.Base(got[1])) +} + +// An operator who exports HELMFILE_ENV and runs helmfile directly gets that +// environment; an explicit --env still wins over it. +func TestResolveStackEnv_Precedence(t *testing.T) { + t.Setenv("HELMFILE_ENV", "airgap") + withEnvFlag(t, "local", false) + assert.Equal(t, "airgap", resolveStackEnv(), "HELMFILE_ENV beats the --env default") + + withEnvFlag(t, "staging", true) + assert.Equal(t, "staging", resolveStackEnv(), "an explicit --env beats HELMFILE_ENV") + + t.Setenv("HELMFILE_ENV", "") + withEnvFlag(t, "local", false) + assert.Equal(t, "local", resolveStackEnv()) +} diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go index ddf4f72cac..31f6a105e1 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go @@ -40,6 +40,7 @@ import ( // - prints a deprecation warning to stderr, AND // - falls through to JSONL streaming behaviour on stderr (same as --json). func TestCheck_LegacyOutputJSONWarnsAndStreams(t *testing.T) { + resetCheckFlags(t) // Reset global flag state left over from other tests. t.Cleanup(func() { selfHostedJSON = false @@ -65,6 +66,7 @@ func TestCheck_LegacyOutputJSONWarnsAndStreams(t *testing.T) { // the §6.6.3 schema: schemaVersion header, then check_started/check_completed/ // category_completed events per check, then a final event with verdict fields. func TestCheck_NewJSON(t *testing.T) { + resetCheckFlags(t) t.Cleanup(func() { selfHostedJSON = false selfHostedOutput = "text" @@ -114,6 +116,7 @@ func TestCheck_NewJSON(t *testing.T) { // TestCheck_WaitTimesOutCleanly verifies that --wait honors the timeout duration. func TestSelfHostedCheck_WaitTimesOutCleanly(t *testing.T) { + resetCheckFlags(t) t.Setenv("NVCF_CLI_SELFHOSTED_LOCAL_ONLY", "1") t.Setenv("NVCF_CLI_SELFHOSTED_FORCE_FAIL", "1") // seam: forces a failing check rootCmd.SetArgs([]string{"self-hosted", "check", "--pre", "--wait", "2s"}) @@ -162,6 +165,7 @@ func TestCheck_OneShotTTYUsesStaticRenderer(t *testing.T) { // TestCheck_PreflightStreamingOrder verifies that for each tool the events arrive // in CheckStarted → CheckCompleted order, and CategoryCompleted follows all checks. func TestCheck_PreflightStreamingOrder(t *testing.T) { + resetCheckFlags(t) t.Cleanup(func() { selfHostedJSON = false selfHostedOutput = "text" @@ -221,6 +225,7 @@ func TestCheck_PreflightStreamingOrder(t *testing.T) { // TestCheck_LocalOnlyFlag verifies that --local-only causes only local-host-tools // events (no control-plane-cluster or compute-plane-cluster events). func TestCheck_LocalOnlyFlag(t *testing.T) { + resetCheckFlags(t) t.Cleanup(func() { selfHostedJSON = false selfHostedOutput = "text" @@ -256,6 +261,7 @@ func TestCheck_LocalOnlyFlag(t *testing.T) { // TestCheck_SingleClusterMode verifies that without context flags, both // control-plane-cluster and compute-plane-cluster category events appear. func TestCheck_SingleClusterMode(t *testing.T) { + resetCheckFlags(t) t.Cleanup(func() { selfHostedJSON = false selfHostedOutput = "text" @@ -287,6 +293,7 @@ func TestCheck_SingleClusterMode(t *testing.T) { } func TestCheck_PreDoesNotProbeSISReachability(t *testing.T) { + resetCheckFlags(t) t.Cleanup(func() { selfHostedJSON = false selfHostedOutput = "text" @@ -311,6 +318,7 @@ func TestCheck_PreDoesNotProbeSISReachability(t *testing.T) { // TestCheck_SplitClusterMode verifies that providing both context flags causes // both control-plane and compute-plane category events (run in parallel). func TestCheck_SplitClusterMode(t *testing.T) { + resetCheckFlags(t) t.Cleanup(func() { selfHostedJSON = false selfHostedOutput = "text" @@ -423,6 +431,7 @@ func TestControlPlaneIsTargeted(t *testing.T) { // produces compute-plane-cluster category events. Before the gating fix this // flag was a complete no-op and produced no check events at all. func TestCheck_ComputePlaneFlagRunsChecks(t *testing.T) { + resetCheckFlags(t) t.Cleanup(func() { selfHostedJSON = false selfHostedOutput = "text" @@ -455,6 +464,7 @@ func TestCheck_ComputePlaneFlagRunsChecks(t *testing.T) { // TestCheck_ControlPlaneFlagRunsChecks verifies that --control-plane alone // produces control-plane-cluster category events. func TestCheck_ControlPlaneFlagRunsChecks(t *testing.T) { + resetCheckFlags(t) t.Cleanup(func() { selfHostedJSON = false selfHostedOutput = "text" @@ -489,6 +499,7 @@ func TestCheck_ControlPlaneFlagRunsChecks(t *testing.T) { // used with --skip-cluster-validation (compute plane is targeted, validator is // suppressed). func TestCheck_ValidatorSkipNoteAppearsOnComputePlane(t *testing.T) { + resetCheckFlags(t) t.Cleanup(func() { selfHostedJSON = false selfHostedOutput = "text" @@ -519,6 +530,7 @@ func TestCheck_ValidatorSkipNoteAppearsOnComputePlane(t *testing.T) { // "no validator row vs validator silently dropped" confusion the note exists // to prevent. func TestCheck_ValidatorSkipNotePresentForPreInSplitMode(t *testing.T) { + resetCheckFlags(t) t.Cleanup(func() { selfHostedJSON = false selfHostedOutput = "text" @@ -608,6 +620,7 @@ func TestPlaneIsVisited(t *testing.T) { // compute cluster must not be contacted at all, so no compute-plane-cluster // category is emitted. func TestCheck_SplitModeControlPlaneOnlySkipsComputeCluster(t *testing.T) { + resetCheckFlags(t) t.Cleanup(func() { selfHostedJSON = false selfHostedOutput = "text" @@ -647,6 +660,7 @@ func TestCheck_SplitModeControlPlaneOnlySkipsComputeCluster(t *testing.T) { // are checked on the operator's machine, so running them for both roles // repeats the same check IDs in --json and double-counts them in the totals. func TestCheck_HostLocalChecksRunOnce(t *testing.T) { + resetCheckFlags(t) t.Cleanup(func() { selfHostedJSON = false selfHostedOutput = "text" diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go new file mode 100644 index 0000000000..140fc2c060 --- /dev/null +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go @@ -0,0 +1,99 @@ +/* +SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. +SPDX-License-Identifier: Apache-2.0 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cmd + +import ( + "bytes" + "context" + "sync" + "testing" + + "github.com/spf13/viper" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "nvcf-cli/internal/selfhosted" +) + +// The Job gets what the chart CronJob forwards: the post-install signal on +// every run but --pre, relocated namespaces, the Gateway override and the +// probe image. +func TestClusterValidatorJobEnv(t *testing.T) { + prevPre := checkPre + t.Cleanup(func() { + checkPre = prevPre + viper.Set("cluster_validator_probe_image", "") + }) + for _, k := range []string{"NVCF_OPENBAO_NAMESPACE", "NVCF_ENVOY_GATEWAY_NAMESPACE", "NVCF_GATEWAY_NAMES", "NVCF_N2N_PROBE_IMAGE"} { + t.Setenv(k, "") + } + + checkPre = false + env := clusterValidatorJobEnv(selfhosted.StackValues{EnvoyGatewayNamespace: "gateway"}) + assert.Equal(t, "true", env["VALIDATOR_POST_INSTALL"], "a post-install run must say so") + assert.Equal(t, "gateway", env["NVCF_ENVOY_GATEWAY_NAMESPACE"], "the stack's controller namespace is forwarded") + assert.NotContains(t, env, "NVCF_OPENBAO_NAMESPACE") + + checkPre = true + t.Setenv("NVCF_OPENBAO_NAMESPACE", "openbao") + t.Setenv("NVCF_ENVOY_GATEWAY_NAMESPACE", "edge") + t.Setenv("NVCF_GATEWAY_NAMES", "gateway/shared-gw") + viper.Set("cluster_validator_probe_image", "mirror.example/busybox:1.36") + env = clusterValidatorJobEnv(selfhosted.StackValues{EnvoyGatewayNamespace: "gateway"}) + assert.NotContains(t, env, "VALIDATOR_POST_INSTALL", "--pre is pre-install") + assert.Equal(t, "openbao", env["NVCF_OPENBAO_NAMESPACE"]) + assert.Equal(t, "edge", env["NVCF_ENVOY_GATEWAY_NAMESPACE"], "an explicit setting beats the stack values") + assert.Equal(t, "gateway/shared-gw", env["NVCF_GATEWAY_NAMES"]) + assert.Equal(t, "mirror.example/busybox:1.36", env["NVCF_N2N_PROBE_IMAGE"]) +} + +// The control-plane validator is handed the registries the credential check +// enumerated (here the validator image's), and the forwarded env. A post-install +// --control-plane run must carry VALIDATOR_POST_INSTALL. +func TestCheck_ControlPlaneValidatorGetsRegistriesAndEnv(t *testing.T) { + resetCheckFlags(t) + var mu sync.Mutex + got := map[string]selfhosted.ClusterValidatorParams{} + prev := newClusterValidatorForSelfHosted + newClusterValidatorForSelfHosted = func() selfhosted.ClusterValidator { + return func(_ context.Context, p selfhosted.ClusterValidatorParams) selfhosted.ClusterValidatorResult { + mu.Lock() + defer mu.Unlock() + got[p.Role] = p + return selfhosted.ClusterValidatorResult{Passed: true} + } + } + t.Cleanup(func() { newClusterValidatorForSelfHosted = prev }) + t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") + + var errBuf bytes.Buffer + rootCmd.SetErr(&errBuf) + rootCmd.SetOut(&bytes.Buffer{}) + rootCmd.SetArgs([]string{"self-hosted", "check", "--control-plane", "--json", + "--cluster-validator-image", "nvcr.io/nvidia/nvcf-byoc/cluster-validator:1.0.0"}) + _ = rootCmd.Execute() + + cp, ok := got["control-plane"] + require.True(t, ok, "the control-plane validator must run; output: %s", errBuf.String()) + var regs []string + for _, r := range cp.Registries { + regs = append(regs, r.Registry) + } + assert.Contains(t, regs, "nvcr.io", "the enumerated registries must reach the validator") + assert.Equal(t, "true", cp.Env["VALIDATOR_POST_INSTALL"]) +} diff --git a/src/clis/nvcf-cli/cmd/self_hosted_test.go b/src/clis/nvcf-cli/cmd/self_hosted_test.go index 8c5e1ce23d..bfec3afd11 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_test.go @@ -58,6 +58,7 @@ func TestSelfHostedFlags_OnlyOneContextErrors(t *testing.T) { } func TestSelfHostedFlags_SameContextErrors(t *testing.T) { + resetCheckFlags(t) rootCmd.SetArgs([]string{"self-hosted", "check", "--control-plane-context=cp", "--compute-plane-context=cp"}) t.Cleanup(func() { selfHostedControlPlaneContext = "" diff --git a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go index fb4c37f925..0db54fc1ad 100644 --- a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go +++ b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go @@ -31,7 +31,7 @@ import ( const skillDataZipBase64 = "" + "UEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAASAAkAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4S" + "ewogICJzY2hlbWFWZXJzaW9uIjogMSwKICAiZ2VuZXJhdGVkQXQiOiAiMTk3MC0wMS0wMVQwMDow" + - "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDMyNDAsCiAgImZp" + + "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDM0MTAsCiAgImZp" + "bGVzIjogWwogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvU0tJTEwu" + "bWQiLAogICAgICAic2hhMjU2IjogImFhOWY3ZTI0NmYzODA0YjMzNDNiNjU2MWU1YmNmZTdiYjcy" + "YjI0MDIxOTMzZTA0OWY4NWUwMDI4OTAzYmJmYTQiLAogICAgICAic2l6ZSI6IDI0OTE1CiAgICB9" + @@ -71,9 +71,9 @@ const skillDataZipBase64 = "" + "ZW5jZS9leGl0LWNvZGVzLm1kIiwKICAgICAgInNoYTI1NiI6ICI2NGI1ZmE5YmNhZjBlMGE1M2Y3" + "ODkyMGI3M2ZjYjUzMGFiNjk0NTFiNDhhNWI0OTNmMjUyY2ExODU4M2FiMDg2IiwKICAgICAgInNp" + "emUiOiAxNzQ5CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1j" + - "bGkvcmVmZXJlbmNlL2ZsYWdzLm1kIiwKICAgICAgInNoYTI1NiI6ICJmMjNhZDhmYzViMGUyNTdk" + - "ZmQ0MmRlMGRjOTA0YmQ5ZTVhYTMxYmNkMTQ5ZWM4OWRmZWUxMjllYTU5NzRiYmZlIiwKICAgICAg" + - "InNpemUiOiAxMTc5OQogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + + "bGkvcmVmZXJlbmNlL2ZsYWdzLm1kIiwKICAgICAgInNoYTI1NiI6ICJkZGU4MjJlYTNiNGZkMDc5" + + "M2RmNzgxNjFiYjBhOTQxYWI4ZGFjMDk1YjlmYjZkZTU5ZjU4YTVlOGUzZWE0YzMwIiwKICAgICAg" + + "InNpemUiOiAxMTk2OQogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + "ZWQtY2xpL3JlZmVyZW5jZS90cm91Ymxlc2hvb3RpbmcubWQiLAogICAgICAic2hhMjU2IjogImE2" + "MzA4NGUyMjQ5ZjFkMTU0YzU5ODFlNGEwNzJiN2M3ODRiODVlYTE0NjA4NjUxNWVhYjRhYjY3MGE5" + "NDBlOTQiLAogICAgICAic2l6ZSI6IDQ0NjgKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogIm52" + @@ -103,7 +103,7 @@ const skillDataZipBase64 = "" + "aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9wdWxsLXNlY3Jl" + "dHMubWQiLAogICAgICAic2hhMjU2IjogImVjMWYzZmZjZDE3ZTVmOTU4M2ZlZTM5NzQ0ZWU4OTdk" + "NDY2YmMzY2Y2Mzg5Mjk0MjY0ZDg5ZTdmOWVkMDFiODciLAogICAgICAic2l6ZSI6IDU2MzIKICAg" + - "IH0KICBdCn0KUEsHCAICbAFKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + + "IH0KICBdCn0KUEsHCG81oMVKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + "dGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQFAAEAps4SLS0tCm5hbWU6IG52Y2Yt" + "c2VsZi1tYW5hZ2VkLWNsaQpkZXNjcmlwdGlvbjogfAogIEluc3RhbGwsIG9wZXJhdGUsIGFuZCB0" + "ZWFyIGRvd24gc2VsZi1ob3N0ZWQgTlZJRElBIENsb3VkIEZ1bmN0aW9ucyAoTlZDRikKICBkZXBs" + @@ -1698,2064 +1698,2067 @@ const skillDataZipBase64 = "" + "dmNyLmlvYCBvbmx5IHwKfCBgLS1jbHVzdGVyLXZhbGlkYXRvci1wdWxsLXNlY3JldCBOQU1FYCB8" + "IGRvY2tlci1yZWdpc3RyeSBTZWNyZXQgaW4gYGRlZmF1bHRgIHVzZWQgdG8gcHVsbCB0aGUgdmFs" + "aWRhdG9yIGltYWdlLiBXaGVuIGVtcHR5LCB0aGUgQ0xJIGxvb2tzIGZvciBvbmUgaW4gdGhlIE5W" + - "Q0YgbmFtZXNwYWNlcyBhbmQgZmFsbHMgYmFjayB0byBtaW50aW5nIG9uZSBmcm9tIGBOR0NfQVBJ" + - "X0tFWWAgfCBhdXRvLWRldGVjdCB8CnwgYC0tc2tpcC1jbHVzdGVyLXZhbGlkYXRpb25gIHwgU2tp" + - "cCB0aGUgaW4tY2x1c3RlciB2YWxpZGF0b3IgcHJvYmUgZW50aXJlbHkuIEVudjogYE5WQ0ZfQ0xJ" + - "X1NFTEZIT1NURURfU0tJUF9DTFVTVEVSX1ZBTElEQVRJT05gIHwgYGZhbHNlYCB8CnwgYC0tbm8t" + - "Y2xlYW51cGAgfCBLZWVwIHRoZSB2YWxpZGF0b3IgSm9iIChhbmQgaXRzIFJCQUMpIGFmdGVyIHRo" + - "ZSBydW4gZm9yIGRlYnVnZ2luZy4gVGhlIG5leHQgcnVuIHN0aWxsIHN3ZWVwcyBwcmlvciBKb2Jz" + - "IHwgYGZhbHNlYCB8CnwgYC0tc2hvdy1sb2dzYCB8IFByaW50IHRoZSB2YWxpZGF0b3IgdHJhbnNj" + - "cmlwdCB0byBzdGRlcnIgYWZ0ZXIgdGhlIGNoZWNrIGV2ZW50cy4gVGhlIHRyYW5zY3JpcHQgaXMg" + - "bm90IEpTT04sIGFuZCBgLS1qc29uYCBhbHNvIHdyaXRlcyB0byBzdGRlcnIsIHNvIGxlYXZlIHRo" + - "aXMgb2ZmIHdoZW4gYSBwYXJzZXIgaXMgcmVhZGluZyB0aGUgc3RyZWFtIHwgYGZhbHNlYCB8Cgoj" + - "IyBgdXBgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0t" + - "LXwKfCBgLS1jbHVzdGVyLW5hbWUgTkFNRWAgfCBJQ01TIGNsdXN0ZXIgcm93IGlkZW50aWZpZXIg" + - "KHJlcXVpcmVkKSB8IC0gfAp8IGAtLW5jYS1pZCBJRGAgfCBOQ0EgYWNjb3VudCBJRCB8IGBudmNm" + - "LWRlZmF1bHRgIHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IENsdXN0ZXIgcmVnaW9uIHwgYHVzLXdl" + - "c3QtMWAgfAp8IGAtLXBsYW4tb25seWAgfCBEcnktcnVuOyBlbWl0IHBoYXNlIHBsYW4gKyBFVEFz" + - "IHdpdGhvdXQgY2hhbmdlcyB8IGBmYWxzZWAgfAoKIyMgYHN0YXR1c2Atc3BlY2lmaWMKCnwgRmxh" + - "ZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0ZXItbmFtZSBO" + - "QU1FYCB8IExpbWl0IHRvIG9uZSBjb21wdXRlIHBsYW5lIHwgLSAoY29udHJvbCArIGFsbCBjbHVz" + - "dGVycykgfAp8IGAtLXdhdGNoYCB8IExpdmUgcmUtcmVuZGVyIHwgYGZhbHNlYCB8CnwgYC0td2F0" + - "Y2gtaW50ZXJ2YWwgRFVSYCB8IGAtLXdhdGNoYCBjYWRlbmNlIHwgYDVzYCB8CnwgYC0tY29tcG9u" + - "ZW50IE5BTUVgIHwgRmlsdGVyIGNvbXBvbmVudHMgcGFuZWwgfCBhbGwgfAp8IGAtLW5vLWV2ZW50" + - "c2AgfCBTa2lwIGV2ZW50cyBwYW5lbCB8IGBmYWxzZWAgfAoKIyMgYGNsdXN0ZXIgcmVnaXN0ZXJg" + - "LXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBg" + - "LS1uYW1lIE5BTUVgIHwgQ2x1c3RlciBuYW1lIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1uY2EtaWQg" + - "SURgIHwgTkNBIElEIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IFJlZ2lv" + - "biB8IGB1cy13ZXN0LTFgIHwKfCBgLS1pY21zLXVybCBVUkxgIHwgSUNNUyBlbmRwb2ludCB8IGZy" + - "b20gY29uZmlnIHwKfCBgLS1pZ25vcmUtZXhpc3RpbmdgIHwgTWF0Y2gtb3ItY3JlYXRlIGluc3Rl" + - "YWQgb2YgZmFpbC1vbi1leGlzdHMgfCBgZmFsc2VgIHwKCiMjIGBhcGkta2V5IGdlbmVyYXRlYC1z" + - "cGVjaWZpYwoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0t" + - "Zm9yIGZ1bmN0aW9uXHx0YXNrYCB8IEdlbmVyYXRlIG9ubHkgdGhlIHNwZWNpZmllZCBrZXkgdHlw" + - "ZSB8IChvbWl0IHRvIGdlbmVyYXRlIGJvdGgpIHwKfCBgLS1kZXNjcmlwdGlvbiBURVhUYCB8IEh1" + - "bWFuLXJlYWRhYmxlIGxhYmVsIGZvciB0aGUga2V5IHwgYEdlbmVyYXRlZCBieSBudmNmLWNsaWAg" + - "fAp8IGAtLWV4cGlyZXMtaW4gRFVSQVRJT05gIHwgRXhwaXJ5IG9mZnNldCAoZS5nLiBgMjRoYCwg" + - "YDdkYCk7IHBhcnNlZCBhcyBleHRlbmRlZCBkdXJhdGlvbiB8IGAyNGhgIHwKfCBgLS1zY29wZXMg" + - "U0NPUEVbLFNDT1BFXWAgfCBPdmVycmlkZSBkZWZhdWx0IHNjb3BlczsgcmVxdWlyZXMgYC0tZm9y" + - "YCB8IChzZXJ2aWNlIGRlZmF1bHRzKSB8CnwgYC0tdmFsaWRhdGVgIHwgVmFsaWRhdGUgZWFjaCBn" + - "ZW5lcmF0ZWQga2V5IGltbWVkaWF0ZWx5IGFmdGVyIG1pbnRpbmcgfCBgZmFsc2VgIHwKCkV4dGVu" + - "ZGVkIGR1cmF0aW9uIHVuaXRzOiBgc2AgKHNlY29uZHMpLCBgbWAgKG1pbnV0ZXMpLCBgaGAgKGhv" + - "dXJzKSwgYGRgIChkYXlzKSwgYHdgICh3ZWVrcykuCgojIyBgZnVuY3Rpb24gY3JlYXRlYC1zcGVj" + - "aWZpYwoKYC0taW5wdXQtZmlsZSBGSUxFYCBpcyByZWNvbW1lbmRlZCBmb3IgcmVwZWF0YWJsZSBm" + - "dW5jdGlvbiBkZWZpbml0aW9ucy4gRm9yIGFkLWhvYyBjcmVhdGVzOgoKfCBGbGFnIHwgUHVycG9z" + - "ZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tbmFtZSBOQU1FYCB8IEZ1bmN0aW9uIG5h" + - "bWUgfCAtIHwKfCBgLS1pbWFnZSBJTUFHRWAgfCBDb250YWluZXIgaW1hZ2UgfCAtIHwKfCBgLS1p" + - "bmZlcmVuY2UtdXJsIFVSSWAgfCBDb250YWluZXIgaW5mZXJlbmNlIGVuZHBvaW50IHwgLSB8Cnwg" + - "YC0taW5mZXJlbmNlLXBvcnQgUE9SVGAgfCBDb250YWluZXIgaW5mZXJlbmNlIHBvcnQgfCAtIHwK" + - "fCBgLS1mdW5jdGlvbi10eXBlIERFRkFVTFRcfFNUUkVBTUlOR1x8TExNYCB8IEZ1bmN0aW9uIHR5" + - "cGUgfCBgREVGQVVMVGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBVUkwg" + - "b3IgT0NJIHJlZmVyZW5jZS4gQ2FuIGJlIHVzZWQgd2l0aCBgLS1mdW5jdGlvbi10eXBlPUxMTWAg" + - "Zm9yIGNoYXJ0LXBhY2thZ2VkIExMTSB3b3JrbG9hZHMuIHwgLSB8CnwgYC0taGVsbS1jaGFydC1z" + - "ZXJ2aWNlIE5BTUVgIHwgS3ViZXJuZXRlcyBTZXJ2aWNlIG5hbWUgZXhwb3NlZCBieSB0aGUgY2hh" + - "cnQuIFJlcXVpcmVkIHdoZW4gYC0taGVsbS1jaGFydGAgaXMgc2V0LiB8IC0gfAp8IGAtLW1vZGVs" + - "cyBOQU1FOlZFUlNJT046VVJJYCB8IFN0YW5kYXJkIG1vZGVsIGFydGlmYWN0OyByZXBlYXRhYmxl" + - "IHwgLSB8CnwgYC0tbGxtLW1vZGVsIFNQRUNgIHwgTExNIG1vZGVsIGNvbmZpZzsgZm9ybWF0IGBu" + - "YW1lPTxtb2RlbD4sdXJpcz08dXJpPlx8PHVyaT4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tl" + - "blJhdGVMaW1pdD08bGltaXQ+YDsgcmVwZWF0YWJsZS4gVG9rZW4gbGltaXRzIHVzZSBgPHZhbHVl" + - "Pi08dW5pdD5gIHdpdGggYFNgLCBgTWAsIGBIYCwgYERgLCBvciBgV2AsIGZvciBleGFtcGxlIGAx" + - "MDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBmb3IgY29tYmluZWQgdG9rZW4gbGltaXRzIGJlY2F1c2Ug" + - "aW5saW5lIHNwZWNzIHVzZSBjb21tYXMgYXMgZmllbGQgc2VwYXJhdG9ycy4gfCAtIHwKfCBgLS1s" + - "bG0tZGVmYXVsdC1wcmlvcml0eSBQUklPUklUWWAgfCBGdW5jdGlvbi1sZXZlbCBkZWZhdWx0IHJl" + - "cXVlc3QgcHJpb3JpdHkuIExvd2VyIHZhbHVlcyBoYXZlIGhpZ2hlciBwcmlvcml0eS4gfCAtIHwK" + - "fCBgLS1sbG0tcGVyLWFjY291bnQtcHJpb3JpdHkgTkNBLUlEOlBSSU9SSVRZYCB8IFBlci1hY2Nv" + - "dW50IHByaW9yaXR5IG92ZXJyaWRlOyByZXBlYXRhYmxlOyBzdXBwb3J0cyB1cCB0byA2NCBkaXN0" + - "aW5jdCBOQ0EgSUQgb3ZlcnJpZGVzLiBSZXF1aXJlcyBhIGRlZmF1bHQgcHJpb3JpdHkuIHwgLSB8" + - "CgpJbiBKU09OIGFuZCBpbmxpbmUgc3BlY3MsIExMTSBmdW5jdGlvbnMgc2V0IGBmdW5jdGlvblR5" + - "cGU6ICJMTE0iYCBhbmQgbW9kZWwgcm91dGluZyBtZXRhZGF0YSB1bmRlciBgbW9kZWxzW10ubGxt" + - "Q29uZmlnYC4gYGxsbUNvbmZpZy51cmlzYCBkZWNsYXJlcyB0aGUgT3BlbkFJLWNvbXBhdGlibGUg" + - "dXBzdHJlYW0gcGF0aHMgZXhwb3NlZCBieSB0aGUgbW9kZWwuIEN1cnJlbnQgc3VwcG9ydGVkIHBh" + - "dGhzIGFyZSBgL3YxL2NoYXQvY29tcGxldGlvbnNgLCBgL3YxL3Jlc3BvbnNlc2AsIGFuZCBgL3Yx" + - "L2VtYmVkZGluZ3NgLiBgbGxtQ29uZmlnLnJvdXRpbmdNZXRob2RgIGFjY2VwdHMgYHJvdW5kX3Jv" + - "YmluYCwgYHBvd2VyX29mX3R3b2AsIGBncm9xX211bHRpcmVnaW9uYCwgYHB1bHNhcmAsIG9yIGBy" + - "YW5kb21gLgpgbGxtQ29uZmlnLnRva2VuUmF0ZUxpbWl0YCBhY2NlcHRzIG9uZSBvciBtb3JlIGNv" + - "bW1hLXNlcGFyYXRlZCBwb3NpdGl2ZSBpbnRlZ2VyIHRva2VuIGxpbWl0cyBpbiBgPHZhbHVlPi08" + - "dW5pdD5gIGZvcm1hdC4gU3VwcG9ydGVkIHVuaXRzIGFyZSBgU2AgKHNlY29uZHMpLCBgTWAgKG1p" + - "bnV0ZXMpLCBgSGAgKGhvdXJzKSwgYERgIChkYXlzKSwgYW5kIGBXYCAod2Vla3MpLiBVc2UgZGlz" + - "dGluY3QgdW5pdHMgd2hlbiBjb21iaW5pbmcgbGltaXRzLCBmb3IgZXhhbXBsZSBgMTAwMC1TLDUw" + - "MDAtTSwxMDAwMDAtSCw1MDAwMDAtRCwxMDAwMDAwLVdgIGluIGlucHV0IEpTT04uCgpIZWxtIGNo" + - "YXJ0IHBhY2thZ2luZyBpcyBpbmRlcGVuZGVudCBvZiBgZnVuY3Rpb25UeXBlYC4gRm9yIGEgSGVs" + - "bS1jaGFydCBiYWNrZWQgTExNIGZ1bmN0aW9uLCBzZXQgYGZ1bmN0aW9uVHlwZTogIkxMTSJgLCBg" + - "aGVsbUNoYXJ0YCwgYGhlbG1DaGFydFNlcnZpY2VOYW1lYCwgYW5kIGBtb2RlbHNbXS5sbG1Db25m" + - "aWdgIGluIHRoZSBzYW1lIGNyZWF0ZSByZXF1ZXN0LiBgaW5mZXJlbmNlUG9ydGAgbXVzdCBiZSB0" + - "aGUgS3ViZXJuZXRlcyBTZXJ2aWNlIHBvcnQgZXhwb3NlZCBieSBgaGVsbUNoYXJ0U2VydmljZU5h" + - "bWVgLgoKTExNIGludm9jYXRpb24gcmVxdWVzdHMgdXNlIGBtb2RlbDogIjxmdW5jdGlvbi1pZD4v" + - "PG1vZGVsLW5hbWU+ImAuIFRoZSBmdW5jdGlvbiBJRCBzZWxlY3RzIHRoZSBOVkNGIGZ1bmN0aW9u" + - "LCBhbmQgdGhlIG1vZGVsIG5hbWUgaXMgZm9yd2FyZGVkIHVwc3RyZWFtLiBDaGF0IGNvbXBsZXRp" + - "b25zIGFuZCBSZXNwb25zZXMgQVBJIHJlcXVlc3RzIGNhbiB1c2UgYHgtbXVsdGktdHVybi1zZXNz" + - "aW9uLWlkYCBmb3Igc2Vzc2lvbiBzdGlja2luZXNzOyBlbWJlZGRpbmdzIHJlcXVlc3RzIGRvIG5v" + - "dC4KCiMjIGBmdW5jdGlvbiB1cGRhdGVgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVm" + - "YXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS10YWdzIFRBR1ssVEFHXWAgfCBSZXBsYWNlIGZ1bmN0" + - "aW9uIHRhZ3MgfCAtIHwKfCBgLS1sbG0tbW9kZWwtdXBkYXRlIFNQRUNgIHwgTExNIG1vZGVsIHVw" + - "ZGF0ZTsgZm9ybWF0IGBuYW1lPTxtb2RlbD4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJh" + - "dGVMaW1pdD08bGltaXQ+YDsgcmVwZWF0YWJsZS4gUm91dGluZyBtZXRob2RzIG1hdGNoIGAtLWxs" + - "bS1tb2RlbGAuIFRva2VuIGxpbWl0IGV4YW1wbGU6IGAxMDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBm" + - "b3IgY29tYmluZWQgdG9rZW4gbGltaXRzLiB8IC0gfAp8IGAtLWxsbS1kZWZhdWx0LXByaW9yaXR5" + - "IFBSSU9SSVRZYCB8IFJlcGxhY2UgdGhlIGZ1bmN0aW9uLWxldmVsIHByaW9yaXR5IGNvbmZpZ3Vy" + - "YXRpb24gd2l0aCB0aGlzIGRlZmF1bHQgYW5kIGFueSBzdXBwbGllZCBwZXItYWNjb3VudCBvdmVy" + - "cmlkZXMuIHwgLSB8CnwgYC0tbGxtLXBlci1hY2NvdW50LXByaW9yaXR5IE5DQS1JRDpQUklPUklU" + - "WWAgfCBQZXItYWNjb3VudCBwcmlvcml0eSBvdmVycmlkZTsgcmVwZWF0YWJsZTsgc3VwcG9ydHMg" + - "dXAgdG8gNjQgZGlzdGluY3QgTkNBIElEIG92ZXJyaWRlcy4gUmVxdWlyZXMgYSBkZWZhdWx0IHBy" + - "aW9yaXR5LiB8IC0gfAoKSW4gSlNPTiwgYGZ1bmN0aW9uIHVwZGF0ZWAgYWNjZXB0cyBgbW9kZWxV" + - "cGRhdGVzW11gIGVudHJpZXMgd2l0aCBgbW9kZWxOYW1lYCBhbmQgYGxsbUNvbmZpZy5yb3V0aW5n" + - "TWV0aG9kYCBhbmQvb3IgYGxsbUNvbmZpZy50b2tlblJhdGVMaW1pdGAuIGB1cmlzYCBhcmUgY3Jl" + - "YXRlLXRpbWUgbW9kZWwgbWV0YWRhdGEgYW5kIGFyZSBub3QgcGFydCBvZiBtb2RlbCB1cGRhdGVz" + - "LgoKIyMgYGZ1bmN0aW9uIGRlcGxveSBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJ" + - "TEVgIGlzIHJlY29tbWVuZGVkIChmdWxsIEpTT04gc3BlYykuIEZvciBhZC1ob2Mgb25lLXNob3Qg" + - "dXNlOgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tZnVu" + - "Y3Rpb24taWQgSURgIHwgRnVuY3Rpb24gSUQgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLWdwdSBOQU1F" + - "YCB8IEdQVSBmYW1pbHkgfCBgSDEwMGAgfAp8IGAtLWluc3RhbmNlLXR5cGUgVFlQRWAgfCBTS1Ug" + - "fCBgTkNQLkdQVS5IMTAwXzF4YCB8CnwgYC0tbWluLWluc3RhbmNlcyBOYCB8IE1pbiByZXBsaWNh" + - "cyB8IGAxYCB8CnwgYC0tbWF4LWluc3RhbmNlcyBOYCB8IE1heCByZXBsaWNhcyB8IGAxYCB8Cnwg" + - "YC0tbWF4LXJlcXVlc3QtY29uY3VycmVuY3kgTmAgfCBDb25jdXJyZW5jeSB8IGAwYCAodW5zZXQ7" + - "IHNlcnZlciBkZWZhdWx0IGFwcGxpZXMpIHwKfCBgLS1jbHVzdGVycyBOQU1FWyxOQU1FXWAgfCBU" + - "YXJnZXQgc3BlY2lmaWMgY29tcHV0ZSBjbHVzdGVycyB8IChhbnkgbWF0Y2hpbmcgU0tVKSB8Cgoj" + - "IyBgdGFzayBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVu" + - "ZGVkIGZvciByZXBlYXRhYmxlIHRhc2sgZGVmaW5pdGlvbnMuIEZvciBhZC1ob2MgdXNlOgoKfCBG" + - "bGFnIHwgUHVycG9zZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGAtLW5hbWUgTkFNRWAgfCBU" + - "YXNrIG5hbWUgKHJlcXVpcmVkKSB8IDEtMTI4IGNoYXJzLCBgXlthLXowLTlBLVpdW2EtejAtOUEt" + - "WlwtX10qJGAgfAp8IGAtLWdwdSBHUFVgIHwgR1BVIG5hbWUgKHJlcXVpcmVkIHdpdGhvdXQgYC0t" + - "aW5wdXQtZmlsZWApIHwgRXhhbXBsZTogYEgxMDBgIHwKfCBgLS1pbnN0YW5jZS10eXBlIFRZUEVg" + - "IHwgSW5zdGFuY2UgdHlwZSAocmVxdWlyZWQgd2l0aG91dCBgLS1pbnB1dC1maWxlYCkgfCBFeGFt" + - "cGxlOiBgTkNQLkdQVS5IMTAwXzF4YCB8CnwgYC0taW1hZ2UgSU1BR0VgIHwgQ29udGFpbmVyIGlt" + - "YWdlIHwgTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYC0taGVsbS1jaGFydGAgfAp8IGAtLWhlbG0t" + - "Y2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJIHJlZmVyZW5jZSB8IE11dHVhbGx5" + - "IGV4Y2x1c2l2ZSB3aXRoIGAtLWltYWdlYCB8CnwgYC0taW5wdXQtZmlsZSBGSUxFYCB8IEpTT04g" + - "dGFzayBzcGVjIGZpbGUgfCBDTEkgZmxhZ3Mgb3ZlcnJpZGUgSlNPTiB2YWx1ZXMgd2hlbiBib3Ro" + - "IGFyZSBzZXQgfAp8IGAtLWJhY2tlbmQgQkFDS0VORGAgfCBCYWNrZW5kIC8gQ1NQIHwgLSB8Cnwg" + - "YC0tY2x1c3RlcnMgTkFNRVssTkFNRV1gIHwgU3BlY2lmaWMgY2x1c3RlcnMgd2l0aGluIHRoZSBp" + - "bnN0YW5jZSB8IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tY29udGFpbmVyLWFyZ3MgQVJHU2AgfCBB" + - "cmdzIHBhc3NlZCB3aGVuIGxhdW5jaGluZyB0aGUgY29udGFpbmVyIHwgU2luZ2xlIHN0cmluZywg" + - "ZS5nLiBgIi0tZXBvY2hzIDEwIC0tYmF0Y2gtc2l6ZSAzMiJgIHwKfCBgLS1jb250YWluZXItZW52" + - "IE5BTUU9dmFsdWVgIHwgQ29udGFpbmVyIGVudmlyb25tZW50IHZhcmlhYmxlOyByZXBlYXRhYmxl" + - "IHwgLSB8CnwgYC0tc2VjcmV0cyBOQU1FPXZhbHVlYCB8IFNlY3JldCBlbnZpcm9ubWVudCB2YXJp" + - "YWJsZTsgcmVwZWF0YWJsZTsgZW5jcnlwdGVkIGF0IHJlc3QgfCAtIHwKfCBgLS1tYXgtcnVudGlt" + - "ZSBEVVJBVElPTmAgfCBNYXggd2FsbC1jbG9jayBydW4gdGltZSAoSVNPIDg2MDEsIGUuZy4gYFBU" + - "NEhgKSB8IE5vIGRlZmF1bHQ7IG9taXQgZm9yIG5vIHRpbWUgbGltaXQgfAp8IGAtLW1heC1xdWV1" + - "ZWQgRFVSQVRJT05gIHwgTWF4IHRpbWUgaW4gcXVldWUgYmVmb3JlIGNhbmNlbGxhdGlvbiAoSVNP" + - "IDg2MDEpIHwgU2VydmVyIGRlZmF1bHQgYFBUNzJIYCB8CnwgYC0tdGVybWluYXRpb24tZ3JhY2Ug" + - "RFVSQVRJT05gIHwgR3JhY2UgcGVyaW9kIGFmdGVyIHN0b3Agc2lnbmFsIChJU08gODYwMSkgfCBT" + - "ZXJ2ZXIgZGVmYXVsdCBgUFQxSGAgfAp8IGAtLXJlc3VsdC1zdHJhdGVneSBVUExPQURcfE5PTkVg" + - "IHwgSG93IHRvIGhhbmRsZSB0YXNrIG91dHB1dCBhcnRpZmFjdHMgfCAtIHwKfCBgLS1yZXN1bHRz" + - "LWxvY2F0aW9uIExPQ0FUSU9OYCB8IFJlc3VsdCB1cGxvYWQgdGFyZ2V0LCBmb3JtYXQgYG9yZy1u" + - "YW1lL1t0ZWFtLW5hbWUvXW1vZGVsLW5hbWVgOyByZXF1aXJlZCB3aGVuIGAtLXJlc3VsdC1zdHJh" + - "dGVneT1VUExPQURgIHwgLSB8CnwgYC0tbW9kZWxzIE5BTUU6VkVSU0lPTjpVUklgIHwgTW9kZWwg" + - "YXJ0aWZhY3Q7IHJlcGVhdGFibGUgfCAtIHwKfCBgLS1yZXNvdXJjZXMgTkFNRTpWRVJTSU9OOlVS" + - "SWAgfCBSZXNvdXJjZSBhcnRpZmFjdDsgcmVwZWF0YWJsZSB8IC0gfAp8IGAtLXRhZ3MgVEFHWyxU" + - "QUddYCB8IFRhc2sgdGFncyB8IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tZGVzY3JpcHRpb24gVEVY" + - "VGAgfCBUYXNrIGRlc2NyaXB0aW9uIHwgLSB8CnwgYC0tbG9ncy10ZWxlbWV0cnktaWQgVVVJRGAg" + - "fCBMb2dzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfAp8IGAtLW1ldHJpY3MtdGVsZW1ldHJ5" + - "LWlkIFVVSURgIHwgTWV0cmljcyB0ZWxlbWV0cnkgZW5kcG9pbnQgSUQgfCAtIHwKfCBgLS10cmFj" + - "ZXMtdGVsZW1ldHJ5LWlkIFVVSURgIHwgVHJhY2VzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0g" + - "fApQSwcImdDiUBcuAAAXLgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA3AAkAZGF0YS9udmNm" + - "LXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOEiMg" + - "VHJvdWJsZXNob290aW5nCgpLbm93biBlcnJvcnMg4oaSIGRpYWdub3N0aWMgY29tbWFuZCDihpIg" + - "cmVtZWRpYXRpb24uIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBzdHJ1Y3R1cmVkIGBwaGFzZV9mYWls" + - "ZWRgIGV2ZW50cyB0aGUgQ0xJIGVtaXRzIChSRVEtMTUpIOKAlCBldmVyeSBlbnRyeSBiZWxvdyBz" + - "aG91bGQgbWFwIHRvIGFuIGBlcnJDYXRlZ29yeWAgYW5kIGEgYHJlbWVkaWF0aW9uYCBhcnJheS4K" + - "CiMjIFByZS1mbGlnaHQKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0t" + - "LXwtLS18CnwgYGt1YmVjdGwgbm90IG9uIFBBVEhgIHwgT3BlcmF0b3IncyBgJFBBVEhgIGRvZXNu" + - "J3QgaW5jbHVkZSBrdWJlY3RsIHwgSW5zdGFsbCBrdWJlY3RsIDEuMjgrOiBodHRwczovL2t1YmVy" + - "bmV0ZXMuaW8vZG9jcy90YXNrcy90b29scy9pbnN0YWxsLWt1YmVjdGwvIHwKfCBgaGVsbWZpbGUg" + - "bm90IG9uIFBBVEhgIHwgU2FtZSB8IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWxtZmlsZS9oZWxtZmls" + - "ZSNpbnN0YWxsYXRpb24gfAp8IGBoZWxtIG5vdCBvbiBQQVRIYCB8IFNhbWUgfCBodHRwczovL2hl" + - "bG0uc2gvZG9jcy9pbnRyby9pbnN0YWxsLyB8CnwgYEdhdGV3YXkgQVBJIENSRHMgbm90IGluc3Rh" + - "bGxlZGAgfCBlbnZveS1nYXRld2F5IHByZXJlcSBtaXNzaW5nIHwgYGhlbG0gaW5zdGFsbCBlZyBv" + - "Y2k6Ly9kb2NrZXIuaW8vZW52b3lwcm94eS9nYXRld2F5LWhlbG0gLS1uYW1lc3BhY2U9ZW52b3kt" + - "Z2F0ZXdheS1zeXN0ZW0gLS1jcmVhdGUtbmFtZXNwYWNlYCB8CnwgYGRlZmF1bHQgU3RvcmFnZUNs" + - "YXNzIG5vdCBhdmFpbGFibGVgIHwgQ2x1c3RlciBoYXMgbm8gZGVmYXVsdCBTQyB8IEFubm90YXRl" + - "IG9uZTogYGt1YmVjdGwgcGF0Y2ggc2MgPG5hbWU+IC1wICd7Im1ldGFkYXRhIjp7ImFubm90YXRp" + - "b25zIjp7InN0b3JhZ2VjbGFzcy5rdWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xhc3MiOiJ0cnVl" + - "In19fSdgIHwKfCBgR1BVIG9wZXJhdG9yIG5vdCBpbnN0YWxsZWRgIChjb21wdXRlLXBsYW5lKSB8" + - "IG52aWRpYSBHUFUgb3BlcmF0b3IgbWlzc2luZyB8IEluc3RhbGwgcGVyIGh0dHBzOi8vZG9jcy5u" + - "dmlkaWEuY29tL2RhdGFjZW50ZXIvY2xvdWQtbmF0aXZlL2dwdS1vcGVyYXRvci9sYXRlc3QvaW5z" + - "dGFsbC1ncHUtb3BlcmF0b3IuaHRtbCwgT1IgdXNlIGBmYWtlLWdwdS1vcGVyYXRvcmAgZm9yIGRl" + - "diB8CnwgYEdQVSBub2RlIGxhYmVscyBtaXNzaW5nYCAoY29tcHV0ZS1wbGFuZSkgfCBOb2RlcyBu" + - "ZWVkIGBudmlkaWEuY29tL2dwdS5mYW1pbHlgIGV0Yy4gfCBTZXQgYC0tazNzLW5vZGUtbGFiZWwg" + - "bnZpZGlhLmNvbS9ncHUuZmFtaWx5PWhvcHBlckBhZ2VudDpOYCBmb3IgazNkIHwKCiMjIEF1dGgK" + - "CnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGFkbWlu" + - "IHRva2VuIHJlcXVpcmVkYCAoaW5pdCBub3QgcnVuKSB8IE5vIGB+Ly5udmNmLWNsaS5zdGF0ZWAg" + - "YW5kIGAtLXRva2VuYCBub3QgcGFzc2VkIHwgYG52Y2YtY2xpIGluaXRgIChpbnRlcmFjdGl2ZSkg" + - "b3IgYC0tdG9rZW49JEpXVCAtLW5vbi1pbnRlcmFjdGl2ZWAgKENJKSB8CnwgYFNpZ25lZCBKV1Qg" + - "cmVqZWN0ZWQ6IEFub3RoZXIgYWxnb3JpdGhtIGV4cGVjdGVkLCBvciBubyBtYXRjaGluZyBrZXko" + - "cykgZm91bmRgIHwgU3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQgY29udHJvbCBw" + - "bGFuZSB8IGBybSB+Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5pdGAgYWdhaW4g" + - "fAp8IGA0MDMgbWlzc2luZyByZXF1ZXN0ZWQgYXV0aG9yaXRpZXNgIChmdW5jdGlvbiBpbnZva2Up" + - "IHwgQWRtaW4gdG9rZW4gZG9lc24ndCBoYXZlIGBpbnZva2VfZnVuY3Rpb25gIHNjb3BlIHwgYG52" + - "Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj3igKZgIHRoZW4gcmUtcnVuIGlu" + - "dm9rZSB8CgojIyBJbnN0YWxsIC8gYHVwYAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlv" + - "biB8CnwtLS18LS0tfC0tLXwKfCBIZWxtIGB0aW1lZCBvdXQgd2FpdGluZyBmb3IgY2Fzc2FuZHJh" + - "YCB8IENhc3NhbmRyYSBTdGF0ZWZ1bFNldCBQVkMgc3R1Y2sgYFBlbmRpbmdgIHwgQ29uZmlybSBk" + - "ZWZhdWx0IFN0b3JhZ2VDbGFzczsgY2hlY2sgYGt1YmVjdGwgZ2V0IHB2LHB2YyAtbiBjYXNzYW5k" + - "cmEtc3lzdGVtYCB8CnwgYEludmFsaWQgR1BVICdOQ1AuR1BVLkgxMDAnIHNwZWNpZmllZGAgKGZ1" + - "bmN0aW9uIGRlcGxveSkgfCBXcm9uZyBmaWVsZCDigJQgYGdwdWAgaXMgdGhlIGZhbWlseSwgbm90" + - "IHRoZSBTS1UgfCBVc2UgYCJncHUiOiAiSDEwMCJgLCBgImluc3RhbmNlVHlwZSI6ICJOQ1AuR1BV" + - "LkgxMDBfMXgiYCB8CnwgYHJlZ2lvbiBtdXN0IGJlIHByb3ZpZGVkYCAoY2x1c3RlciByZWdpc3Rl" + - "ciAvIGluc3RhbGwgLS1jb21wdXRlLXBsYW5lKSB8IGAtLXJlZ2lvbmAgZW1wdHkgKyBgQ0xVU1RF" + - "Ul9SRUdJT05gIGVudiBlbXB0eSB8IFBhc3MgYC0tcmVnaW9uPXVzLXdlc3QtMWAgKG9yIGFueSBu" + - "b24tZW1wdHkgdmFsdWUpIHwKfCBgcmVxdWlyZWRFbnYgIk5DQV9JRCIgaXMgbm90IHNldGAgKGhl" + - "bG1maWxlIGVycm9yIGR1cmluZyBjb21wdXRlLXBsYW5lIGFwcGx5KSB8IE9sZGVyIG52Y2YtY2xp" + - "IGJlZm9yZSBjb21taXQgYDZhYTU3MDRgOyBFeHRyYUVudiBub3QgcHJvcGFnYXRpbmcgTkNBX0lE" + - "IHwgVXBncmFkZSBgbnZjZi1jbGlgIHRvIGEgcmVsZWFzZSBhZnRlciBgNmFhNTcwNGAgfAp8IGBu" + - "dmNhLW9wZXJhdG9yOiBJbWFnZVB1bGxCYWNrT2ZmYCBmb3IgYG52Y2Etb3BlcmF0b3I6cHNhdGAg" + - "fCBJbWFnZSBub3QgaW4gY2x1c3RlciByZWdpc3RyeTsgbXVsdGktY2x1c3RlciBidWlsZCBpcyBs" + - "b2NhbCB8IGBrM2QgaW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Etb3BlcmF0b3I6cHNhdCAt" + - "YyA8Y2x1c3Rlcj5gIHwKCiMjIENvbXB1dGUtcGxhbmUgcnVudGltZQoKfCBTeW1wdG9tIHwgQ2F1" + - "c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBOVkNBIGFnZW50IENyYXNoTG9vcEJh" + - "Y2tPZmYgd2l0aCBgSFRUUCA0MDFgIG9uIGAvdjEvbnZjYS9jbHVzdGVycy8uLi4vcmVnaXN0ZXJg" + - "IHwgU3RhbGUgYG91dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIGZyb20gcHJpb3Ig" + - "cmVnaXN0ZXI7IGNsdXN0ZXIgSUQgZG9lc24ndCBtYXRjaCBJQ01TIHwgRGVsZXRlIHRoZSBzdGFs" + - "ZSBmaWxlOyByZS1ydW4gYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwYCAoaWRlbXBvdGVudCByZWdp" + - "c3RlciB3cml0ZXMgYSBmcmVzaCBmaWxlKSB8CnwgYE5vIGNsdXN0ZXIgZm91bmQgd2l0aCB2YWxp" + - "ZCBKV0tTIGZvciBjbHVzdGVyIElEOiA8aWQ+YCAoSUNNUyBsb2cpIHwgSldLUyBpbiBJQ01TIGRv" + - "ZXNuJ3QgbWF0Y2ggd2hhdCBjb21wdXRlLXBsYW5lIEs4cyBpcyBjdXJyZW50bHkgc2lnbmluZyB8" + - "IGBudmNmLWNsaSBjbHVzdGVyIHJvdGF0ZSAtLWNsdXN0ZXItaWQ9PGlkPmAgfAp8IEZ1bmN0aW9u" + - "IHBvZCBgSW1hZ2VQdWxsQmFja09mZmAgaW4gYG52Y2YtYmFja2VuZGAgfCBJbWFnZS1jcmVkZW50" + - "aWFsLWhlbHBlciBjb25maWcgbWlzc2luZyBvciB3cm9uZyB8IGBrdWJlY3RsIGRlc2NyaWJlIHBv" + - "ZCAtbiBudmNmLWJhY2tlbmQgPHBvZD5gOyBjaGVjayB0aGUgcHVsbCBzZWNyZXQgY29uZmlnIHwK" + - "fCBGdW5jdGlvbiBkZXBsb3kgc3R1Y2sgYERFUExPWUlOR2AgZm9yID41IG1pbiB8IE5BVFMgc3Ry" + - "ZWFtIGluaXQgbGFnIChjb2xkLWNsdXN0ZXIpIOKAlCB3YWl0LCBvciBjaGVjayBOQVRTIGF1dGgt" + - "Y2FsbG91dCBoZWFsdGggfCBga3ViZWN0bCBsb2dzIC1uIG5hdHMtc3lzdGVtIC1sIGFwcC5rdWJl" + - "cm5ldGVzLmlvL25hbWU9bmF0cy1hdXRoLWNhbGxvdXQtc2VydmljZWAgfAoKIyMgVGFza3MKCnwg" + - "U3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYHRhc2sgY3Jl" + - "YXRlYCByZXR1cm5zIGBNaXNzaW5nIDxUWVBFPiByZWdpc3RyeSBjcmVkZW50aWFsIGZvciBob3N0" + - "bmFtZWAsIG9yIGtlZXBzIHVzaW5nIGEgcHJldmlvdXMgY3JlZGVudGlhbCB2YWx1ZSwgc2hvcnRs" + - "eSBhZnRlciBgcmVnaXN0cnktY3JlZGVudGlhbCBhZGQvdXBkYXRlL2RlbGV0ZWAgd2hpbGUgYHJl" + - "Z2lzdHJ5LWNyZWRlbnRpYWwgbGlzdGAvYGdldGAgYWxyZWFkeSBzaG93IHRoZSBuZXcgdmFsdWUg" + - "fCBFeHBlY3RlZCBwcm9wYWdhdGlvbiBkZWxheTogTlZDVCBjYWNoZXMgdGhlIGFjY291bnQncyBy" + - "ZWdpc3RyeSBjcmVkZW50aWFscyB3aXRoIGBudmN0Lm52Y2YuY2FjaGUtdHRsYCAoZGVmYXVsdCBg" + - "UFQ1TWAsIGFib3V0IDUgbWluKSBhbmQgYXBwbGllcyB0aGUgY2hhbmdlIHdoZW4gdGhhdCBjYWNo" + - "ZWQgY29weSByZWZyZXNoZXMgfCBXYWl0IHVwIHRvIGFib3V0IDUgbWluIGFuZCByZXRyeSwgb3Ig" + - "YGt1YmVjdGwgLW4gbnZjZiByb2xsb3V0IHJlc3RhcnQgZGVwbG95bWVudC9udmN0LWFwaWAgdG8g" + - "YXBwbHkgaW1tZWRpYXRlbHkgfApQSwcI864ThHQRAAB0EQAAUEsDBBQACAAAAAAAIQAAAAAAAAAA" + - "AAAAAAAsAAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vU0tJTEwubWRVVAUA" + - "AQCmzhItLS0KbmFtZTogbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uCmRlc2NyaXB0aW9u" + - "OiA+LQogIEluc3RhbGwgYW5kIG9wZXJhdGUgTlZDRiBzZWxmLWhvc3RlZCBjb250cm9sLXBsYW5l" + - "IGFuZCBzZXBhcmF0ZSBjb21wdXRlLXBsYW5lCiAgc3RhY2tzLiBDb3ZlcnMgSGVsbWZpbGUgdmFs" + - "dWVzIGFuZCBDTEkgcHJvZmlsZSBpbnN0YWxsYXRpb24gZmxvd3MsIHRlYXJkb3duLAogIHZhbHVl" + - "cyBvdmVycmlkZXMsIHB1bGwgc2VjcmV0cywgYW5kIHRyb3VibGVzaG9vdGluZy4gVXNlIGZvcgog" + - "IG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrLCBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2ssIHNwbGl0" + - "IGNvbXB1dGUtcGxhbmUKICBpbnN0YWxsYXRpb24sIGNvbnRyb2wtcGxhbmUgaW5zdGFsbGF0aW9u" + - "LCBDTEktZ2VuZXJhdGVkIGNvbnRyb2wtcGxhbmUKICBwcm9maWxlcywgSGVsbWZpbGUsIHNlbGYt" + - "bWFuYWdlZCwgb3Igc2VsZi1ob3N0ZWQgZGVwbG95bWVudHMuIERvIE5PVCB1c2UgZm9yCiAgbG9j" + - "YWwgazNkIGVudmlyb25tZW50czsgdXNlIHRoZSBsb2NhbCBrM2QgZGV2ZWxvcG1lbnQgd29ya2Zs" + - "b3cgaW5zdGVhZC4KbGljZW5zZTogQXBhY2hlLTIuMApjb21wYXRpYmlsaXR5OiBSZXF1aXJlcyBo" + - "ZWxtZmlsZSA+PSAxLjEuMCA8IDEuMi4wLCBoZWxtID49IDMuMTIsIGhlbG0tZGlmZiBwbHVnaW4s" + - "IGt1YmVjdGwgbWF0Y2hpbmcgY2x1c3RlciB2ZXJzaW9uCmF1dGhvcjogIm52Y2YtY29yZS1lbmcg" + - "PG52Y2YtY29yZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCnZlcnNpb246ICIxLjAuMCIKdGFn" + - "czogW252Y2YsIHNlbGYtbWFuYWdlZCwgaGVsbWZpbGUsIHNlbGYtaG9zdGVkLCBjb250cm9sLXBs" + - "YW5lLCBjb21wdXRlLXBsYW5lLCBjbGktcHJvZmlsZSwgaW5zdGFsbGF0aW9uLCBkZXBsb3ltZW50" + - "LCBwdWxsLXNlY3JldHNdCnRvb2xzOiBbU2hlbGwsIFJlYWQsIEVkaXQsIEdyZXAsIEdsb2JdCm1l" + - "dGFkYXRhOgogIGludGVybmFsOiBmYWxzZQogIGF1dGhvcjogIm52Y2YtY29yZS1lbmcgPG52Y2Yt" + - "Y29yZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCiAgdmVyc2lvbjogIjEuMCIKICB0YWdzOiBb" + - "bnZjZiwgc2VsZi1tYW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQsIGNvbnRyb2wtcGxhbmUs" + - "IGNvbXB1dGUtcGxhbmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24sIGRlcGxveW1lbnQsIHB1" + - "bGwtc2VjcmV0c10KICBsYW5ndWFnZXM6IFtiYXNoLCB5YW1sXQogIGZyYW1ld29ya3M6IFtoZWxt" + - "ZmlsZSwgaGVsbSwga3ViZWN0bF0KICBkb21haW46IGNsb3VkLWluZnJhc3RydWN0dXJlCi0tLQoK" + - "IyBOVkNGIFNlbGYtTWFuYWdlZCBTdGFjayBPcGVyYXRpb25zCgpPcGVyYXRpb25hbCBndWlkZSBm" + - "b3IgbWF0Y2hpbmcgTlZDRiBjb250cm9sLXBsYW5lIGFuZCBjb21wdXRlLXBsYW5lIEhlbG1maWxl" + - "IGJ1bmRsZXMuCgojIyBJbnN0cnVjdGlvbnMKClVzZSB0aGlzIHNraWxsIGZvciBpbnN0YWxsLCB1" + - "cGdyYWRlLCBvciB0ZWFyZG93biB3b3JrIGluIG1hdGNoaW5nIGBudmNmLXNlbGYtbWFuYWdlZC1z" + - "dGFja2AgYW5kIGBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXM7IGtlZXAgSGVsbWZp" + - "bGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSBoYW5kb2ZmcyBzZXBhcmF0ZS4gRm9yIGBmdW5jdGlv" + - "blR5cGU6ICJMTE0iYCwgcmVhZCBbTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnRdKHJlZmVyZW5jZXMv" + - "aGVsbWZpbGUtc3RydWN0dXJlLm1kI2xsbS1mdW5jdGlvbi1lbmFibGVtZW50KS4KCiMjIFByZXJl" + - "cXVpc2l0ZXMKCkFzayBmb3IgdGhlIGV4dHJhY3RlZCBgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2tg" + - "IHBhdGguIEZvciBzcGxpdCBpbnN0YWxsYXRpb24sCmFsc28gcmVxdWlyZSB0aGUgbWF0Y2hpbmct" + - "dmVyc2lvbiBgbnZjZi1jb21wdXRlLXBsYW5lLXN0YWNrYCBwYXRoLiBWZXJpZnkgYm90aDoKCmBg" + - "YGJhc2gKbHMgPGNvbnRyb2wtcGxhbmUtc3RhY2s+L2hlbG1maWxlLmQvIDxjb250cm9sLXBsYW5l" + - "LXN0YWNrPi9lbnZpcm9ubWVudHMvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9zZWNyZXRzLyA8Y29u" + - "dHJvbC1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmxzIDxjb21wdXRlLXBsYW5lLXN0" + - "YWNrPi9oZWxtZmlsZS5kLyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZW52aXJvbm1lbnRzLyA8Y29t" + - "cHV0ZS1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmBgYAoKSWYgZWl0aGVyIGRpcmVj" + - "dG9yeSBpcyBtaXNzaW5nLCBkb3dubG9hZCBtYXRjaGluZyBidW5kbGUgdmVyc2lvbnMgZnJvbSBO" + - "R0M6CgpgYGBiYXNoCm5nYyByZWdpc3RyeSByZXNvdXJjZSBkb3dubG9hZC12ZXJzaW9uIDxvcmc+" + - "L252Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrOjx2ZXJzaW9uPgpuZ2MgcmVnaXN0cnkgcmVzb3VyY2Ug" + - "ZG93bmxvYWQtdmVyc2lvbiA8b3JnPi9udmNmLWNvbXB1dGUtcGxhbmUtc3RhY2s6PHZlcnNpb24+" + - "CmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhlIGNvbnRyb2wtcGxh" + - "bmUgYnVuZGxlIHJvb3QuIFNwbGl0LWZsb3cKY29tbWFuZHMgYW5kIHJvb3Qgc3Vic3RpdHV0aW9u" + - "IGFyZSBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29t" + - "cHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLgoKIyMgQmVmb3JlIFlvdSBTdGFydAoKVmVyaWZ5" + - "IHRvb2xpbmcgYW5kIGNvbnRleHQgYmVmb3JlIGFueSBvcGVyYXRpb246CgpgYGBiYXNoCmhlbG1m" + - "aWxlIC0tdmVyc2lvbiAgICMgTXVzdCBiZSAxLjEueCAoMS4yLjAgcmVtb3ZlZCBzZXF1ZW50aWFs" + - "IG1vZGUpCmhlbG0gdmVyc2lvbiAgICAgICAgICMgTXVzdCBiZSA+PSAzLjEyCmhlbG0gcGx1Z2lu" + - "IGxpc3QgICAgICMgTXVzdCBpbmNsdWRlIGhlbG0tZGlmZiA+PSAzLjExCmt1YmVjdGwgdmVyc2lv" + - "biAgICAgICMgQ2xpZW50IG11c3QgYmUgd2l0aGluIDEgbWlub3IgdmVyc2lvbiBvZiBjbHVzdGVy" + - "CmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5kcyBydW4gZnJvbSB0aGUgZXh0cmFjdGVkIGBudmNm" + - "LXNlbGYtbWFuYWdlZC1zdGFjay9gIHJvb3Q6CgpgYGBiYXNoCmNkIHBhdGgvdG8vbnZjZi1zZWxm" + - "LW1hbmFnZWQtc3RhY2sKbHMgaGVsbWZpbGUuZC8gZW52aXJvbm1lbnRzLyBzZWNyZXRzLyBnbG9i" + - "YWwueWFtbC5nb3RtcGwKYGBgCgpJZGVudGlmeSB0aGUgZW52aXJvbm1lbnQgZnJvbSBgZW52aXJv" + - "bm1lbnRzLzxuYW1lPi55YW1sYCBhbmQKYHNlY3JldHMvPG5hbWU+LXNlY3JldHMueWFtbGA7IGZv" + - "ciBFS1MsIHVzZSB0aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczov" + - "L2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4K" + - "CiMjIEhvdyBWYWx1ZXMgRmxvdwoKVW5kZXJzdGFuZGluZyB2YWx1ZSBwcmVjZWRlbmNlIHByZXZl" + - "bnRzIHRoZSBtb3N0IGNvbW1vbiBjb25maWd1cmF0aW9uIG1pc3Rha2VzLgoKYGBgdGV4dAplbnZp" + - "cm9ubWVudHMvYmFzZS55YW1sICAgICAgICAgIChkZWZhdWx0cykKICAgIC0+IG1lcmdlZCB3aXRo" + - "CmVudmlyb25tZW50cy88ZW52Pi55YW1sICAgICAgICAgKHlvdXIgb3ZlcnJpZGVzKQogICAgLT4g" + - "Y29uc3VtZWQgYnkKZ2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAoR28gdGVtcGxhdGUs" + - "IGNvbnN0cnVjdHMgcGVyLWNoYXJ0IHZhbHVlcykKICAgIC0+IGNvbnN1bWVkIGJ5CnNlY3JldHMv" + - "PGVudj4tc2VjcmV0cy55YW1sICAgICAgKHNlbnNpdGl2ZSB2YWx1ZXMpCiAgICAtPiBvdmVycmlk" + - "ZGVuIGJ5CnJlbGVhc2UgaW5saW5lIHZhbHVlczogYmxvY2tzICAgKGhpZ2hlc3QgcHJlY2VkZW5j" + - "ZSkKYGBgCgpDcml0aWNhbDogYGdsb2JhbC55YW1sLmdvdG1wbGAgb25seSBwYXNzZXMgdGhyb3Vn" + - "aCBzcGVjaWZpYyBrZXlzIHRvIGVhY2ggY2hhcnQgKGltYWdlIHJlZ2lzdHJpZXMsIG5vZGUgc2Vs" + - "ZWN0b3JzLCBzdG9yYWdlLCByZXBsaWNhIGNvdW50cykuIFNldHRpbmcgYW4gYXJiaXRyYXJ5IGNo" + - "YXJ0IHZhbHVlIGluIHRoZSBlbnZpcm9ubWVudCBmaWxlIHdpbGwgYmUgc2lsZW50bHkgaWdub3Jl" + - "ZCBpZiBgZ2xvYmFsLnlhbWwuZ290bXBsYCBkb2VzIG5vdCBwcm9wYWdhdGUgaXQuCgpUbyBvdmVy" + - "cmlkZSBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzLCB1c2UgYSBoZWxtZmlsZSByZWxlYXNlIGB2YWx1" + - "ZXM6YCBibG9jay4gU2VlIFtPdmVycmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzXSgjb3ZlcnJpZGlu" + - "Zy1oZWxtLWNoYXJ0LXZhbHVlcykuCgojIyBDbGVhbiBJbnN0YWxsYXRpb24KCiMjIyAxLiBDcmVh" + - "dGUgbmFtZXNwYWNlcyBhbmQgaW1hZ2UgcHVsbCBzZWNyZXRzIChpZiB1c2luZyBhIHByaXZhdGUg" + - "cmVnaXN0cnkpCgpgYGBiYXNoCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVt" + - "IG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1" + - "YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSAiJG5zIiAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBr" + - "dWJlY3RsIGFwcGx5IC1mIC0KZG9uZQoKIyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUg" + - "cmVnaXN0cnkgKGUuZy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtl" + - "eT4iCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMg" + - "ZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgY3JlYXRlIHNl" + - "Y3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZj" + - "ci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2Vy" + - "LXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0t" + - "ZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpkb25lCmBgYAoKSWYg" + - "dXNpbmcgcHVsbCBzZWNyZXRzLCB5b3UgbXVzdCBhbHNvIGNvbmZpZ3VyZSBlYWNoIGhlbG1maWxl" + - "IHJlbGVhc2UgdG8gcmVmZXJlbmNlIHRoZW0uIFNlZSBbSW1hZ2UgUHVsbCBTZWNyZXRzXSgjaW1h" + - "Z2UtcHVsbC1zZWNyZXRzKS4KCiMjIyAyLiBBdXRoZW50aWNhdGUgaGVsbSB0byB5b3VyIGNoYXJ0" + - "IHJlZ2lzdHJ5CgpCb3RoIGBkb2NrZXIgbG9naW5gIEFORCBgaGVsbSByZWdpc3RyeSBsb2dpbmAg" + - "YXJlIHJlcXVpcmVkIGZvciBOR0MuIEhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8g" + - "cHVsbCBPQ0kgY2hhcnRzLCBzbyB0aGUgaGVsbSBjcmVkZW50aWFsIHN0b3JlIG11c3QgYmUgYXV0" + - "aGVudGljYXRlZCBzZXBhcmF0ZWx5LgoKYGBgYmFzaAojIE5HQyAtLSBib3RoIGNvbW1hbmRzIGFy" + - "ZSByZXF1aXJlZApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdD" + - "X0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1w" + - "ICIkTkdDX0FQSV9LRVkiCgojIEVDUgphd3MgZWNyIGdldC1sb2dpbi1wYXNzd29yZCAtLXJlZ2lv" + - "biA8cmVnaW9uPiB8IFwKICBoZWxtIHJlZ2lzdHJ5IGxvZ2luIC0tdXNlcm5hbWUgQVdTIC0tcGFz" + - "c3dvcmQtc3RkaW4gPGFjY291bnQ+LmRrci5lY3IuPHJlZ2lvbj4uYW1hem9uYXdzLmNvbQpgYGAK" + - "Cj4gTm90ZTogYGhlbG0gcmVnaXN0cnkgbG9naW5gIGtlZXBzIG9ubHkgdGhlIGxhc3QgbG9naW4g" + - "cGVyIGhvc3QgKG11bHRpLW9yZyBnb3RjaGEpLgo+IFRoZSBzdGFjayBhbmQgdGhlIGNhY2hlcyBz" + - "cGFuIHNldmVyYWwgTkdDIG9yZ3MgdGhhdCBuZWVkIGRpZmZlcmVudCBrZXlzLCBidXQgdGhleSBh" + - "bGwKPiBsaXZlIHVuZGVyIHRoZSBvbmUgaG9zdCBgbnZjci5pb2AuIEEgc2Vjb25kIGBoZWxtIHJl" + - "Z2lzdHJ5IGxvZ2luIG52Y3IuaW9gIChvcgo+IGBkb2NrZXIgbG9naW5gKSB3aXRoIGEgZGlmZmVy" + - "ZW50IGtleSBzaWxlbnRseSBvdmVyd3JpdGVzIHRoZSBmaXJzdCwgc28gcHVsbHMgZm9yIHRoZQo+" + - "IGZpcnN0IG9yZyB0aGVuIGZhaWwgd2l0aCBhIG1pc2xlYWRpbmcgYDQwMyBBY2Nlc3MgRGVuaWVk" + - "YCAobm90IGEgNDAxOiB0aGUgYXV0aAo+IHN1Y2NlZWRlZCwgaXQncyB0aGUgd3Jvbmctb3JnIGtl" + - "eSkuIElmIHlvdSBwdWxsIGNoYXJ0cy9pbWFnZXMgZnJvbSBtb3JlIHRoYW4gb25lIG9yZywKPiBl" + - "aXRoZXIgcmUtcnVuIHRoZSBsb2dpbiB3aXRoIHRoZSBjb3JyZWN0IGtleSBpbW1lZGlhdGVseSBi" + - "ZWZvcmUgZWFjaCBwdWxsLCBvciBwYXNzCj4gYC0tdXNlcm5hbWUgJyRvYXV0aHRva2VuJyAtLXBh" + - "c3N3b3JkIDxrZXk+YCBwZXIgYGhlbG0gcHVsbGAgaW52b2NhdGlvbiBpbnN0ZWFkIG9mIHJlbHlp" + - "bmcKPiBvbiB0aGUgc3RvcmVkIGxvZ2luLiAoUHVsbGluZyBldmVyeXRoaW5nIGZyb20gYSBzaW5n" + - "bGUgcmVnaXN0cnkgbWlycm9yIGF2b2lkcyB0aGlzCj4gZW50aXJlbHkuKQoKIyMjIDJiLiAoUmVj" + - "b21tZW5kZWQpIFB1bGwgZnJvbSBhIHJlZ2lzdHJ5IHRoZSBjbHVzdGVyIGF1dGhlbnRpY2F0ZXMg" + - "dG8gYXV0b21hdGljYWxseQoKSWYgeW91IG1pcnJvciB0aGUgTlZDRiBpbWFnZXMgaW50byBhIHJl" + - "Z2lzdHJ5IHRoYXQgdGhlIGNsdXN0ZXIgY2FuIHB1bGwgZnJvbSB3aXRob3V0IGFuCmV4cGxpY2l0" + - "IGltYWdlIHB1bGwgc2VjcmV0IChmb3IgZXhhbXBsZSwgYSByZWdpc3RyeSB3aGVyZSB0aGUgbm9k" + - "ZSBvciB3b3JrbG9hZCBpZGVudGl0eSBpcwpncmFudGVkIHB1bGwgYWNjZXNzIGF1dG9tYXRpY2Fs" + - "bHkpLCBwb2ludCB0aGUgc3RhY2sgYXQgaXQgYW5kIHNraXAgdGhlIGNyZWRlbnRpYWwgc3RlcHMK" + - "YWJvdmUuCgoxLiBQb2ludCB0aGUgc3RhY2sgYXQgdGhlIG1pcnJvciBpbiBgZW52aXJvbm1lbnRz" + - "LzxlbnY+LnlhbWxgOgoKICAgYGBgeWFtbAogICBnbG9iYWw6CiAgICAgaW1hZ2U6CiAgICAgICBy" + - "ZWdpc3RyeTogPHlvdXItcmVnaXN0cnk+ICAgICAgICAgICAgIyBlLmcuIHJlZ2lzdHJ5LmV4YW1w" + - "bGUuY29tCiAgICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICAgIGhlbG06CiAg" + - "ICAgICBzb3VyY2VzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25seSBpZiB5b3Ug" + - "YWxzbyBtaXJyb3JlZCB0aGUgaGVsbSBjaGFydHMKICAgICAgICAgcmVnaXN0cnk6IDx5b3VyLXJl" + - "Z2lzdHJ5PgogICAgICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICBgYGAKCiAg" + - "ID4gVGhlIG1hbmlmZXN0IGhhcyBhIG1peCBvZiBPQ0kgYW5kIG5vbi1PQ0kgYXJ0aWZhY3RzLCBz" + - "byBjb252ZXJ0IG5vbi1PQ0kgY2hhcnRzIGJlZm9yZQogICA+IG1pcnJvcmluZy4gQ29udGFpbmVy" + - "IGltYWdlcyAoYG52Y3IuaW8vLi4uYCkgYXJlIGFscmVhZHkgT0NJIGFuZCBtaXJyb3IgYXMtaXMu" + - "IFNvbWUgSGVsbQogICA+IGNoYXJ0cywgdGhvdWdoLCBhcmUgcHVibGlzaGVkIHRvIGFuIGBodHRw" + - "czovL2AgSGVsbSByZXBvc2l0b3J5IChmb3IgZXhhbXBsZQogICA+IGBoZWxtLm5nYy5udmlkaWEu" + - "Y29tYCkuIFRob3NlIGFyZSBub3QgT0NJIGFuZCBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgYGdsb2Jh" + - "bC5oZWxtLnNvdXJjZXNgCiAgID4gKE9DSSkgb3IgbWlycm9yZWQgZGlyZWN0bHkuIEJlZm9yZSBw" + - "b2ludGluZyB0aGUgc3RhY2sgYXQgeW91ciBtaXJyb3IsIGNvbnZlcnQgZWFjaAogICA+IGBodHRw" + - "czovL2AgY2hhcnQgdG8gT0NJOiBgaGVsbSByZXBvIGFkZGAvYGhlbG0gcHVsbGAgdGhlIGAudGd6" + - "YCwgdGhlbgogICA+IGBoZWxtIHB1c2ggPGNoYXJ0Pi50Z3ogb2NpOi8vPHlvdXItcmVnaXN0cnk+" + - "LzxtaXJyb3Itc3ViLXBhdGg+YC4gT25seSBPQ0kgY2hhcnRzIGNhbiBsaXZlCiAgID4gdW5kZXIg" + - "YGdsb2JhbC5oZWxtLnNvdXJjZXNgLgoKMi4gU2tpcCB0aGUgY3JlZGVudGlhbCBzdGVwcyBhYm92" + - "ZS4gV2hlbiB0aGUgY2x1c3RlciBhdXRoZW50aWNhdGVzIHRvIHRoZSByZWdpc3RyeQogICBhdXRv" + - "bWF0aWNhbGx5ICh0aGUgbm9kZSBvciB3b3JrbG9hZCBpZGVudGl0eSBoYXMgcHVsbCBhY2Nlc3Mp" + - "LCB0aGUgcHVsbCBuZWVkcyBubwogICBLdWJlcm5ldGVzIHNlY3JldCwgc28geW91IGRvIG5vdCBu" + - "ZWVkOiB0aGUgcGVyLW5hbWVzcGFjZSBgbnZjci1jcmVkc2AgZnJvbSBzdGVwIDEKICAgKHN0aWxs" + - "IGNyZWF0ZSB0aGUgbmFtZXNwYWNlcywganVzdCBub3QgdGhlIHNlY3JldCksIHRoZSBgZ2xvYmFs" + - "LmltYWdlUHVsbFNlY3JldHNgIGVudHJ5LAogICBvciB0aGUgYGRvY2tlciBsb2dpbmAvYGhlbG0g" + - "cmVnaXN0cnkgbG9naW4gbnZjci5pb2AgZnJvbSBzdGVwIDIuCgogICA+IE9uZSByZXNpZHVhbCBj" + - "cmVkZW50aWFsOiBudmNmLWFwaSBzdGlsbCB2YWxpZGF0ZXMgdGhlIHVzZXIgZnVuY3Rpb24gaW1h" + - "Z2UgYXQKICAgPiBgZnVuY3Rpb24gY3JlYXRlYCB2aWEgdGhlIGFjY291bnQgcmVnaXN0cnkgY3Jl" + - "ZGVudGlhbCwgc28gdGhhdCBjcmVkZW50aWFsIG11c3QgcG9pbnQgYXQKICAgPiB3aGljaGV2ZXIg" + - "cmVnaXN0cnkgaG9sZHMgdGhlIHVzZXIgaW1hZ2UgKHNldCBpdCB0byB5b3VyIG1pcnJvciBpZiB0" + - "aGUgaW1hZ2UgaXMgbWlycm9yZWQKICAgPiB0aGVyZSkuCgojIyMgMy4gU2V0IHRoZSByb3V0ZSBk" + - "b21haW4KCmBnbG9iYWwuZG9tYWluYCBzZXRzIHRoZSBob3N0bmFtZSBzdWZmaXggZm9yIHJvdXRl" + - "cyBzdWNoIGFzIGBhcGkuPGRvbWFpbj5gLiBJdCBkb2VzIG5vdCBjb25maWd1cmUgdGhlIEdhdGV3" + - "YXkgb3IgaXRzIGxvYWQgYmFsYW5jZXIuIFF1ZXJ5IHRoZSBleGFjdCBleGlzdGluZyBHYXRld2F5" + - "OgoKYGBgYmFzaApHQVRFV0FZX0FERFJFU1M9JChrdWJlY3RsIGdldCBnYXRld2F5IDxnYXRld2F5" + - "LW5hbWU+IC1uIDxnYXRld2F5LW5hbWVzcGFjZT4gLW8ganNvbnBhdGg9J3suc3RhdHVzLmFkZHJl" + - "c3Nlc1swXS52YWx1ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSRVNTIgpgYGAKClRoZSBhZGRy" + - "ZXNzIG1heSBiZSBhIGhvc3RuYW1lIG9yIElQLiBDbG91ZCBwcm92aWRlciBhbmQgR2F0ZXdheSBj" + - "b25maWd1cmF0aW9uIGRldGVybWluZSB0aGUgbG9hZCBiYWxhbmNlciB0eXBlIGFuZCBhZGRyZXNz" + - "IGZvcm1hdC4gVGhlIHNlbGYtbWFuYWdlZCBzdGFjayBkb2VzIG5vdCBzZWxlY3QgZWl0aGVyLgoK" + - "Rm9yIHRlbXBvcmFyeSB0ZXN0aW5nIHdpdGhvdXQgRE5TLCB1c2UgYSBzdGFibGUgcmVzZXJ2ZWQg" + - "c3VmZml4IHN1Y2ggYXMgYGdsb2JhbC5kb21haW46ICJudmNmLnRlc3QiYCwgY29ubmVjdCB0byBg" + - "R0FURVdBWV9BRERSRVNTYCwgYW5kIHNlbmQgYEhvc3Q6IGFwaS5udmNmLnRlc3RgLiBGb3IgcHJv" + - "ZHVjdGlvbiwgdXNlIHlvdXIgYmFzZSBETlMgZG9tYWluIGFuZCBwb2ludCBpdHMgcm91dGUgcmVj" + - "b3JkcyB0byBgR0FURVdBWV9BRERSRVNTYC4gSWYgdGhlIGVuZHBvaW50IGxhdGVyIGNoYW5nZXMs" + - "IGtlZXAgYGdsb2JhbC5kb21haW5gIHN0YWJsZSBhbmQgdXBkYXRlIG9ubHkgRE5TIG9yIHRoZSBj" + - "bGllbnQgZGVzdGluYXRpb24uIFNlZSBFeGFtcGxlIDQgaW4gW2V4YW1wbGVzLm1kXShleGFtcGxl" + - "cy5tZCkuCgojIyMgNC4gUHJldmlldyBhbmQgZGVwbG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08" + - "ZW52LW5hbWU+IGhlbG1maWxlIHRlbXBsYXRlICAgIyBQcmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0" + - "cwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSBzeW5jICAgICAgICMgRGVwbG95CmBg" + - "YAoKPiBTZXQgQk9USCBDYXNzYW5kcmEgcGFzc3dvcmRzIGluIHRoZSBzZWNyZXRzIGZpbGUuIFRo" + - "ZSBzZWNyZXRzIGZpbGUgZG9jdW1lbnRzCj4gYERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYCwg" + - "YnV0IHRoZSBjYXNzYW5kcmEgY2hhcnQgaGFzIGEgc2Vjb25kIGNyZWRlbnRpYWwsCj4gYGNhc3Nh" + - "bmRyYS5zZXJ2aWNlUm9sZVBhc3N3b3JkYCwgdGhhdCBkZWZhdWx0cyB0byBgY2hAbmczbTNgLiBJ" + - "ZiB5b3Ugc2V0IG9ubHkKPiBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgLCB0aGUgc2Vydmlj" + - "ZSByb2xlIGtlZXBzIHRoYXQgZGVmYXVsdCBhbmQgZXZlcnkgREItYmFja2VkCj4gc2VydmljZSBj" + - "cmFzaC1sb29wcyB3aXRoIGBCYWQgY3JlZGVudGlhbHNgIG9uY2UgaXQgdHJpZXMgdG8gYXV0aGVu" + - "dGljYXRlLiBTZXQKPiBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHRvIHRoZSBzYW1l" + - "IHZhbHVlIGFzIGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAuCgojIyMgNS4gRGVwbG95bWVu" + - "dCBwaGFzZXMKCkhlbG1maWxlIGRlcGxveXMgaW4gb3JkZXIgd2l0aCBkZXBlbmRlbmNpZXM6Cgp8" + - "IFBoYXNlIHwgU2VsZWN0b3IgfCBTZXJ2aWNlcyB8IFdhaXQgdGltZSB8CnwtLS0tLS0tfC0tLS0t" + - "LS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwKfCAxIHwgYHJlbGVhc2UtZ3JvdXA9ZGVwZW5k" + - "ZW5jaWVzYCB8IE5BVFMsIE9wZW5CYW8sIENhc3NhbmRyYSB8IDUtMTAgbWluIHwKfCAyIHwgYHJl" + - "bGVhc2UtZ3JvdXA9c2VydmljZXNgIHwgQVBJLCBTSVMsIEVTUywgaW52b2NhdGlvbiwgZ3JwYy1w" + - "cm94eSwgbm90YXJ5LCBhcGkta2V5cywgb3B0aW9uYWwgTExNIGdhdGV3YXkvcm91dGVyLCBvcHRp" + - "b25hbCBWYW5pdHkgR2F0ZXdheSwgTlZDRiBVSSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1" + - "ZGVzIHRoZSBhZGRvbiB8IDUtMTAgbWluIHwKfCAzIHwgYHJlbGVhc2UtZ3JvdXA9aW5ncmVzc2Ag" + - "fCBHYXRld2F5IHJvdXRlcyB8IDEtMiBtaW4gfAp8IDQgfCBgcmVsZWFzZS1ncm91cD1vYnNlcnZh" + - "YmlsaXR5YCB8IE9ic2VydmFiaWxpdHkgc3RhY2sgKGlmIGVuYWJsZWQpIHwgMS0yIG1pbiB8CgpN" + - "b25pdG9yIGluIGEgc2VwYXJhdGUgdGVybWluYWw6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZHMg" + - "LUEgLXcKYGBgCgojIyMgNi4gRW5hYmxlIFZhbml0eSBHYXRld2F5IChvcHRpb25hbCkKClZhbml0" + - "eSBHYXRld2F5IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgYW5kIGlzIG9ubHkgbmVlZGVkIGZvciBj" + - "dXN0b21lci1mYWNpbmcKaG9zdG5hbWVzIG9yIHBhdGggbWFwcGluZ3MgaW4gZnJvbnQgb2YgdGhl" + - "IHN0YW5kYXJkIE5WQ0YgQVBJIGFuZCBpbnZvY2F0aW9uCnJvdXRlcy4gSXQgaXMgYXZhaWxhYmxl" + - "IG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBWYW5pdHkgR2F0ZXdheQph" + - "ZGRvbi4gSWYgdGhlIGV4dHJhY3RlZCBzdGFjayBwYWNrYWdlIGRvZXMgbm90IGNvbnRhaW4gYSBg" + - "dmFuaXR5LWdhdGV3YXlgCnJlbGVhc2UgYW5kIGB2YW5pdHlHYXRld2F5YCByb3V0ZSB2YWx1ZXMs" + - "IHNraXAgdGhlc2UgY29tbWFuZHMgYW5kIHVzZSBhIG5ld2VyCnN0YWNrIHBhY2thZ2UgdGhhdCBp" + - "bmNsdWRlcyB0aGVtLgoKSWYgdGhlIHN0YWNrIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLCBl" + - "bmFibGUgaXQgaW4KYGVudmlyb25tZW50cy88ZW52LW5hbWU+LnlhbWxgOgoKYGBgeWFtbAphZGRv" + - "bnM6CiAgdmFuaXR5R2F0ZXdheToKICAgIGVuYWJsZWQ6IHRydWUKICAgIG1hcHBpbmdDb25maWc6" + - "IHt9CmBgYAoKVGhlIGRlZmF1bHQgcm91dGUgaG9zdCBpcyBgdmFuaXR5Ljxkb21haW4+YCBhbmQg" + - "dGhlIGJhY2tlbmQgaXMKYHZhbml0eS1nYXRld2F5Lm52Y2Y6ODA4MGAuIFB1dCBkZXBsb3ltZW50" + - "LXNwZWNpZmljIGhvc3QgYW5kIHBhdGggbWFwcGluZ3MgdW5kZXIKYGFkZG9ucy52YW5pdHlHYXRl" + - "d2F5Lm1hcHBpbmdDb25maWdgLiBJZiB5b3UgbmVlZCBjdXN0b20gdmFuaXR5IGhvc3RzIGluc3Rl" + - "YWQgb2YKYHZhbml0eS48ZG9tYWluPmAsIHVzZSB0aGUgcm91dGUgaG9zdG5hbWUgb3ZlcnJpZGVz" + - "IHN1cHBvcnRlZCBieSB0aGUgc3RhY2sKcGFja2FnZSBhbmQgY3JlYXRlIG1hdGNoaW5nIEROUyBy" + - "ZWNvcmRzLgoKQWZ0ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYHZhbml0" + - "eS1nYXRld2F5YCByZWxlYXNlLCBwcmV2aWV3IGFuZAphcHBseSB0aGUgc2VydmljZSBhbmQgcm91" + - "dGU6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3Ig" + - "bmFtZT12YW5pdHktZ2F0ZXdheSB0ZW1wbGF0ZQpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxt" + - "ZmlsZSAtLXNlbGVjdG9yIG5hbWU9dmFuaXR5LWdhdGV3YXkgc3luYwpIRUxNRklMRV9FTlY9PGVu" + - "di1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBg" + - "YAoKVmVyaWZ5IHRoZSByb3V0ZSBvbmx5IHdoZW4gdGhlIGFkZG9uIGlzIHByZXNlbnQgYW5kIGVu" + - "YWJsZWQ6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSxzdmMgLW4gbnZjZiAtbCBhcHAua3Vi" + - "ZXJuZXRlcy5pby9uYW1lPXZhbml0eS1nYXRld2F5Cmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8" + - "IGdyZXAgLWkgdmFuaXR5CmN1cmwgLUggIkhvc3Q6IHZhbml0eS48ZG9tYWluPiIgImh0dHA6Ly88" + - "Z2F0ZXdheS1hZGRyZXNzPi9oZWFsdGgiCmBgYAoKRG8gbm90IGVuYWJsZSBWYW5pdHkgR2F0ZXdh" + - "eSBmb3Igc3RhbmRhcmQgQVBJLCBBUEkgS2V5cywgaW52b2NhdGlvbiwgTExNCmludm9jYXRpb24s" + - "IG9yIGdSUEMgdHJhZmZpYy4gVGhvc2Ugcm91dGVzIGFyZSBwcm92aWRlZCBieSB0aGUgYmFzZSBn" + - "YXRld2F5CnJvdXRlcy4KCiMjIyA3LiBFbmFibGUgTlZDRiBVSSAob3B0aW9uYWwpCgpOVkNGIFVJ" + - "IGlzIGFuIG9wdGlvbmFsLCBjdXN0b21lci1mYWNpbmcgYWRtaW4tcGFuZWwgVUkuIEl0IGlzIGRp" + - "c2FibGVkIGJ5CmRlZmF1bHQgYW5kIGF2YWlsYWJsZSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRo" + - "YXQgaW5jbHVkZSB0aGUgTlZDRiBVSSBhZGRvbi4gSWYKeW91ciBleHRyYWN0ZWQgc3RhY2sgcGFj" + - "a2FnZSBkb2VzIG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UgYW5kIGBudmNmVWlgCnJv" + - "dXRlIHZhbHVlcywgc2tpcCB0aGlzIHNlY3Rpb24uIFRoZSBOVkNGIFVJIGFkbWluIHBhbmVsIGlz" + - "IGN1cnJlbnRseQp1bmF1dGhlbnRpY2F0ZWQ7IGRvIG5vdCBleHBvc2UgaXQgdG8gdGhlIHB1Ymxp" + - "YyBpbnRlcm5ldC4KCkZvciBlbmFibGVtZW50LCBuYW1lc3BhY2UgYW5kIHB1bGwgc2VjcmV0IHNl" + - "dHVwLCBhcHBseSwgYW5kIHZlcmlmaWNhdGlvbiBzdGVwcywKc2VlIFtOVkNGIFVJIEFkZG9uXShy" + - "ZWZlcmVuY2VzL252Y2YtdWktYWRkb24ubWQpLgoKIyMjIDguIEluc3RhbGwgdGhlIHNlcGFyYXRl" + - "IGNvbXB1dGUtcGxhbmUgc3RhY2sKClRoZSBjb250cm9sLXBsYW5lIHN0YWNrIGRvZXMgbm90IGlu" + - "c3RhbGwgY29tcHV0ZS1wbGFuZSBjb21wb25lbnRzLiBBZnRlciBpdCBpcyBoZWFsdGh5LCBjaG9v" + - "c2UgZXhhY3RseSBvbmUgY29tcHV0ZS1wbGFuZSBoYW5kb2ZmOgoKLSBIZWxtZmlsZSB2YWx1ZXMg" + - "ZmxvdzogYXV0aG9yIHNlcGFyYXRlIGVudmlyb25tZW50IGZpbGVzLCB0aGVuIHJlZ2lzdGVyIGFu" + - "ZAogIGluc3RhbGwgd2l0aCB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZS4KLSBDTEkgcHJvZmls" + - "ZSBmbG93OiB1c2UgdGhlIHByb2ZpbGUgZ2VuZXJhdGVkIGJ5IHRoZSBDTEkgY29udHJvbC1wbGFu" + - "ZSBpbnN0YWxsLAogIHRoZW4gcnVuIHRoZSBjb21wbGV0ZSBDTEkgcmVnaXN0ZXIgYW5kIGluc3Rh" + - "bGwgY29tbWFuZHMuCgpEbyBub3QgbWl4IHRoZXNlIGhhbmRvZmZzLiBGb2xsb3cgW1NwbGl0IENv" + - "bXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFs" + - "bGF0aW9uLm1kKQpmb3IgY29tbWFuZHMsIEVLUyByb3V0aW5nLCBwdWxsIHNlY3JldHMsIHZlcmlm" + - "aWNhdGlvbiwgYW5kIHRlYXJkb3duIG9yZGVyLgoKIyMgQ2xlYW4gVGVhcmRvd24KCkRlc3Ryb3kg" + - "ZXZlcnkgY29tcHV0ZSBwbGFuZSBiZWZvcmUgdGhlIGNvbnRyb2wgcGxhbmUsIHVzaW5nIHRoZSB0" + - "ZWFyZG93biBmb3IKdGhlIHNhbWUgaGFuZG9mZjsgc2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIElu" + - "c3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCN0ZWFy" + - "ZG93bikuCgpTY29wZTogT25seSBkZXN0cm95IHJlbGVhc2VzIG1hbmFnZWQgYnkgdGhpcyBjb250" + - "cm9sLXBsYW5lIGhlbG1maWxlIHN0YWNrLiBUaGUgTlZDRiByZWxlYXNlcyBhcmU6IGBuYXRzYCwg" + - "YG9wZW5iYW8tc2VydmVyYCwgYGNhc3NhbmRyYWAsIGBhcGkta2V5c2AsIGBzaXNgLCBgYXBpYCwg" + - "YGludm9jYXRpb24tc2VydmljZWAsIGBncnBjLXByb3h5YCwgYGVzcy1hcGlgLCBgbm90YXJ5LXNl" + - "cnZpY2VgLCBvcHRpb25hbCBgdmFuaXR5LWdhdGV3YXlgLCBgbnZjZi11aWAsIGBhZG1pbi1pc3N1" + - "ZXItcHJveHlgLCBhbmQgYGluZ3Jlc3NgOyBgY2VydC1tYW5hZ2VyYCBpcyBpbmNsdWRlZCBvbmx5" + - "IHdoZW4gYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IHRydWVgLiBUaGUgY29udHJvbC1wbGFuZSBuYW1l" + - "c3BhY2UgaW52ZW50b3J5IGFsc28gaW5jbHVkZXMgYGNlcnQtbWFuYWdlcmAsIGJ1dCBkZWZhdWx0" + - "IG5hbWVzcGFjZSBjbGVhbnVwIHByZXNlcnZlcyBpdC4gTmFtZXNwYWNlIHByZXNlcnZhdGlvbiBk" + - "b2VzIG5vdCBwcmVzZXJ2ZSB0aGUgSGVsbSByZWxlYXNlLiBFeHRlcm5hbCBjZXJ0LW1hbmFnZXIg" + - "bXVzdCB1c2UgYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNlYDsgb3RoZXJ3aXNlIEhlbG1maWxl" + - "IHRyZWF0cyB0aGUgcmVsZWFzZSBhcyBzdGFjay1tYW5hZ2VkLiBEbyBub3QgZGVsZXRlIG90aGVy" + - "IGhlbG0gcmVsZWFzZXMgb3IgbmFtZXNwYWNlcyBvbiB0aGUgY2x1c3Rlci4KCkJlZm9yZSBjb250" + - "cm9sLXBsYW5lIGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVy" + - "bmFsLiBGb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2Vy" + - "dE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4g" + - "aW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdl" + - "ci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRh" + - "ZGF0YSBhbmQgYWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBQcmVzZXJ2" + - "ZSB0aGUgbmFtZXNwYWNlIGJ5IGRlZmF1bHQ7IG9ubHkgcGxhbiBpdHMgcmVtb3ZhbCBhZnRlciB2" + - "ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGdldHRpbmcgZXhwbGljaXQgY29uZmly" + - "bWF0aW9uLgoKIyMjIFN0YW5kYXJkIHRlYXJkb3duCgpSdW4gZnJvbSBpbnNpZGUgdGhlIGBudmNm" + - "LXNlbGYtbWFuYWdlZC1zdGFjay9gIGRpcmVjdG9yeToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxl" + - "bnYtbmFtZT4gaGVsbWZpbGUgZGVzdHJveQpgYGAKCiMjIyBEZWxldGUgbmFtZXNwYWNlcwoKYGBg" + - "YmFzaApmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlz" + - "IGVzcyBzaXMgbnZjZi11aSB2YXVsdC1zeXN0ZW07IGRvCiAga3ViZWN0bCBkZWxldGUgbmFtZXNw" + - "YWNlICIkbnMiIC0taWdub3JlLW5vdC1mb3VuZApkb25lCmBgYAoKIyMjIFZlcmlmeSBjbGVhbgoK" + - "YGBgYmFzaAprdWJlY3RsIGdldCBucyB8IGdyZXAgLUUgJyhjYXNzYW5kcmF8bmF0c3x2YXVsdHxu" + - "dmNmfGFwaS1rZXlzfGVzc3xzaXMpJwojIFNob3VsZCByZXR1cm4gZW1wdHkKYGBgCgojIyBPdmVy" + - "cmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzCgojIyMgRW52aXJvbm1lbnQgZmlsZSAobGltaXRlZCkK" + - "CldvcmtzIG9ubHkgZm9yIGtleXMgdGhhdCBgZ2xvYmFsLnlhbWwuZ290bXBsYCBwcm9wYWdhdGVz" + - "IChlLmcuLCBgY2Fzc2FuZHJhLnJlcGxpY2FDb3VudGAsIGBnbG9iYWwuc3RvcmFnZUNsYXNzYCwg" + - "YGdsb2JhbC5pbWFnZWApLgoKIyMjIFJlbGVhc2UgdmFsdWVzIGJsb2NrIChhbnkgY2hhcnQgdmFs" + - "dWUpCgpFZGl0IHRoZSByZWxlYXNlIGluIGBoZWxtZmlsZS5kLyoueWFtbC5nb3RtcGxgIGFuZCBh" + - "ZGQgYSBgdmFsdWVzOmAgYmxvY2suIEluIHRoZSBleGFtcGxlcyBiZWxvdywgYDxwcml2YXRlLXZh" + - "bHVlcz5gIHJlZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxl" + - "IHN0YWNrIHJvb3QuCgpgYGB5YW1sCi0gbmFtZTogY2Fzc2FuZHJhCiAgdmVyc2lvbjogMC44LjAK" + - "ICBjb25kaXRpb246IGNhc3NhbmRyYS5lbmFibGVkCiAgbmFtZXNwYWNlOiBjYXNzYW5kcmEtc3lz" + - "dGVtCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3Rt" + - "cGwKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5W" + - "IiB9fS1zZWNyZXRzLnlhbWwKICAgIC0gY2Fzc2FuZHJhOgogICAgICAgIHJlc291cmNlczoKICAg" + - "ICAgICAgIGxpbWl0czoKICAgICAgICAgICAgY3B1OiAiOCIKICAgICAgICAgICAgbWVtb3J5OiA4" + - "MTkyTWkKICAgICAgICAgIHJlcXVlc3RzOgogICAgICAgICAgICBjcHU6ICIyIgogICAgICAgICAg" + - "ICBtZW1vcnk6IDQwOTZNaQpgYGAKCllBTUwgbWVyZ2UgZ290Y2hhOiBXaGVuIGEgcmVsZWFzZSB1" + - "c2VzIGA8PDogKmRlcGVuZGVuY3lgIG9yIGBpbmhlcml0YCwgc3BlY2lmeWluZyBgdmFsdWVzOmAg" + - "cmVwbGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QuIFlvdSBtdXN0IHJlLWluY2x1ZGUg" + - "YGdsb2JhbC55YW1sLmdvdG1wbGAgYW5kIHRoZSBzZWNyZXRzIGZpbGUuCgojIyMgUHJldmlldyBh" + - "bmQgYXBwbHkgYSBzaW5nbGUgcmVsZWFzZQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVs" + - "bWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSAgIyBQcmV2aWV3CkhFTE1G" + - "SUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMgICAg" + - "ICAjIEFwcGx5CmBgYAoKIyMgSW1hZ2UgUHVsbCBTZWNyZXRzCgpUaGVyZSBhcmUgdGhyZWUgZGlz" + - "dGluY3QgY3JlZGVudGlhbCB0eXBlcy4gRG8gbm90IGNvbmZsYXRlIHRoZW0sIGFuZCBtaW5kIHRo" + - "ZQpmb3JtYXQgcnVsZSBiZWxvdyAodHdvIG9mIHRoZW0gZmFpbCBldmVuIHdpdGggdGhlIGNvcnJl" + - "Y3Qga2V5IGlmIHRoZSBmb3JtYXQgaXMgd3JvbmcpOgoKfCB8IENvbnRyb2wgUGxhbmUgUHVsbCBT" + - "ZWNyZXRzIHwgQVBJIEJvb3RzdHJhcCBSZWdpc3RyeSBDcmVkcyB8IFNpZGVjYXIgSW1hZ2UtUHVs" + - "bCBTZWNyZXQgfAp8LS0tfC0tLXwtLS18LS0tfAp8IFB1cnBvc2UgfCBLOHMgcHVsbHMgTlZDRiBz" + - "ZXJ2aWNlIGltYWdlcyB8IG52Y2YtYXBpIHZhbGlkYXRlcyB0aGUgdXNlciBmdW5jdGlvbiBpbWFn" + - "ZSBhdCBgZnVuY3Rpb24gY3JlYXRlYCB8IG52Y2YtYXBpIHB1bGxzIHRoZSBwbGF0Zm9ybSBzaWRl" + - "Y2FycyBpbmplY3RlZCBpbnRvIGV2ZXJ5IHdvcmtlciBwb2QgfAp8IFdoZXJlIHwgSzhzIGBkb2Nr" + - "ZXItcmVnaXN0cnlgIFNlY3JldHMgKyBLeXZlcm5vIENsdXN0ZXJQb2xpY3kgfCBgPHByaXZhdGUt" + - "dmFsdWVzPi88ZW52Pi1zZWNyZXRzLnlhbWxgIChhY2NvdW50LWJvb3RzdHJhcCkgfCBgTlZDRl9B" + - "UElfU0lERUNBUlNfSU1BR0VfUFVMTF9TRUNSRVRgIGluIGA8ZW52Pi1zZWNyZXRzLnlhbWxgIC0+" + - "IE9wZW5CYW8gYHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0" + - "YCAoZmllbGQgYHNlY3JldGApIHwKfCBGb3JtYXQgfCBzdGFuZGFyZCBgLmRvY2tlcmNvbmZpZ2pz" + - "b25gIChrdWJlY3RsIGJ1aWxkcyBpdCBmb3IgeW91KSB8IGBiYXNlNjQoIiRvYXV0aHRva2VuOjxr" + - "ZXk+IilgIHwgYGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAgfAoKPiBOb3RlOiB0aGUgYWNj" + - "b3VudC1ib290c3RyYXAgY3JlZCBhbmQgdGhlIHNpZGVjYXIgc2VjcmV0IGFyZSBOT1QgYQo+IGRv" + - "Y2tlcmNvbmZpZ2pzb24uIFRoZSBzZWNyZXRzIHRlbXBsYXRlIHNoaXBzIHRoZSBwbGFjZWhvbGRl" + - "cgo+IGBSRVBMQUNFX1dJVEhfQkFTRTY0X0RPQ0tFUl9DUkVERU5USUFMYCwgd2hpY2ggcmVhZHMg" + - "YXMgImJhc2U2NCBvZiBhIGRvY2tlcmNvbmZpZ2pzb24uIgo+IEl0IGlzbid0LiBCb3RoIHZhbHVl" + - "cyBhcmUgY29uc3VtZWQgYXMgYSByYXcgZG9ja2VyIGBhdXRoYCBzdHJpbmc6IG52Y2YtYXBpIHRh" + - "a2VzIHRoZQo+IHZhbHVlIHZlcmJhdGltIGFuZCBkcm9wcyBpdCBpbnRvIHRoZSBgYXV0aGAgZmll" + - "bGQgb2YgdGhlIGRvY2tlcmNvbmZpZyBpdCBidWlsZHMuIFNvIHRoZQo+IHZhbHVlIG11c3QgYmUg" + - "YGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAsIGUuZy4gYHByaW50ZiAnJG9hdXRodG9rZW46" + - "JXMnICIkS0VZIiB8IG9wZW5zc2wgYmFzZTY0IC1BYCwKPiBub3QgYGJhc2U2NCg8ZG9ja2VyY29u" + - "ZmlnanNvbj4pYC4KPgo+IC0gV3JvbmcgYWNjb3VudC1ib290c3RyYXAgdmFsdWU6IGBmdW5jdGlv" + - "biBjcmVhdGVgIHJldHVybnMKPiAgICBgNDAwICJtdXN0IGJlIGJhc2U2NCBlbmNvZGVkIHVzZXJu" + - "YW1lOnBhc3N3b3JkIGZvcm1hdCJgLgo+IC0gV3Jvbmcgc2lkZWNhciB2YWx1ZTogZXZlcnkgd29y" + - "a2VyJ3Mgc2lkZWNhciBwdWxsIGdldHMgYSBtYWxmb3JtZWQgY3JlZGVudGlhbCBhbmQKPiAgICBg" + - "NDAzYHMsIHJlZ2FyZGxlc3Mgb2Ygd2hpY2gga2V5IGlzIGluc2lkZS4gVGhlIHN5bXB0b20gbG9v" + - "a3MgbGlrZSBhIGJhZCBvciB3cm9uZy1vcmcKPiAgICBrZXksIGJ1dCB0aGUga2V5IGlzIGZpbmUg" + - "YW5kIHRoZSBlbmNvZGluZyBpcyB0aGUgYnVnLiBUbyByZXBhaXIgYW4gYWxyZWFkeS1pbnN0YWxs" + - "ZWQKPiAgICBzdGFjayB3aXRob3V0IGEgZnVsbCByZS1zeW5jOgo+Cj4gICAgYGBgYmFzaAo+ICAg" + - "IEFVVEg9JChwcmludGYgJyRvYXV0aHRva2VuOiVzJyAiJEtFWSIgfCBvcGVuc3NsIGJhc2U2NCAt" + - "QSkKPiAgICBiYW8ga3YgcHV0IHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1" + - "bGwtc2VjcmV0IHNlY3JldD0iJEFVVEgiCj4gICAgIyBpZiBOVklESUEgQ2xvdWQgVGFza3MgaXMg" + - "ZW5hYmxlZCwgcmVwZWF0IGZvciBzZXJ2aWNlcy9udmN0LWFwaS9rdi9zaWRlY2Fycy9pbWFnZS1w" + - "dWxsLXNlY3JldAo+ICAgIGt1YmVjdGwgcm9sbG91dCByZXN0YXJ0IC1uIG52Y2YgZGVwbG95L252" + - "Y2YtYXBpICAgIyBwaWNrcyB1cCB0aGUgbmV3IHNpZGVjYXIgY3JlZAo+ICAgIGBgYAo+Cj4gTm90" + - "ZSAobXVsdGktb3JnKTogd2hlbiBwdWxsaW5nIGZyb20gTkdDIChub3QgYSBtaXJyb3IpLCB0aGUg" + - "dXNlciBmdW5jdGlvbiBpbWFnZSBhbmQKPiB0aGUgcGxhdGZvcm0gc2lkZWNhcnMgb2Z0ZW4gbGl2" + - "ZSBpbiBkaWZmZXJlbnQgbnZjci5pbyBvcmdzLCBlYWNoIG5lZWRpbmcgYSBkaWZmZXJlbnQKPiBr" + - "ZXksIHNvIHRoZSBhY2NvdW50LWJvb3RzdHJhcCBjcmVkIChmdW5jdGlvbiBpbWFnZSkgYW5kIHRo" + - "ZSBzaWRlY2FyIHNlY3JldCAoc2lkZWNhcnMpCj4gYXJlIGZyZXF1ZW50bHkgdHdvIGRpZmZlcmVu" + - "dCBrZXlzLiBNaXJyb3JpbmcgZXZlcnl0aGluZyBpbnRvIGEgc2luZ2xlIHJlZ2lzdHJ5IHRoZQo+" + - "IGNsdXN0ZXIgYXV0aGVudGljYXRlcyB0byBhdXRvbWF0aWNhbGx5IGNvbGxhcHNlcyB0aGlzIHRv" + - "IG9uZSBjcmVkZW50aWFsIHBhdGguCgojIyMgQ29uZmlndXJpbmcgd2l0aCBLeXZlcm5vIChyZWNv" + - "bW1lbmRlZCkKClVzZSBhIEt5dmVybm8gbXV0YXRpbmcgYWRtaXNzaW9uIHBvbGljeSB0byBhdXRv" + - "bWF0aWNhbGx5IGluamVjdCBgaW1hZ2VQdWxsU2VjcmV0c2AgaW50byBhbGwgcG9kcyBpbiBOVkNG" + - "IG5hbWVzcGFjZXMuIFRoaXMgd29ya3MgdW5pZm9ybWx5IGZvciBhbGwgY2hhcnRzIC0tIG5vIHBl" + - "ci1jaGFydCBjb25maWd1cmF0aW9uIG9yIGhlbG1maWxlIG1vZGlmaWNhdGlvbnMgbmVlZGVkLgoK" + - "YGBgYmFzaAojIDEuIEluc3RhbGwgS3l2ZXJubwpoZWxtIHJlcG8gYWRkIGt5dmVybm8gaHR0cHM6" + - "Ly9reXZlcm5vLmdpdGh1Yi5pby9reXZlcm5vLwpoZWxtIHJlcG8gdXBkYXRlCmhlbG0gaW5zdGFs" + - "bCBreXZlcm5vIGt5dmVybm8va3l2ZXJubyAtbiBreXZlcm5vIC0tY3JlYXRlLW5hbWVzcGFjZQoK" + - "IyAyLiBDcmVhdGUgcHVsbCBzZWNyZXQgaW4gZWFjaCBuYW1lc3BhY2UKZXhwb3J0IE5HQ19BUElf" + - "S0VZPSI8eW91ci1rZXk+Igpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBu" + - "dmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJl" + - "Y3RsIGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogICAgLS1kb2Nr" + - "ZXItc2VydmVyPW52Y3IuaW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBc" + - "CiAgICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5hbWVzcGFjZT0i" + - "JG5zIiBcCiAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0K" + - "ZG9uZQoKIyAzLiBBcHBseSB0aGUgS3l2ZXJubyBDbHVzdGVyUG9saWN5Cmt1YmVjdGwgYXBwbHkg" + - "LWYga3l2ZXJuby1pbWFnZXB1bGxzZWNyZXQtcG9saWN5LnlhbWwKYGBgCgpUaGUgcG9saWN5IG11" + - "dGF0ZXMgZXZlcnkgcG9kIGF0IGFkbWlzc2lvbiB0aW1lLCBhZGRpbmcgYGltYWdlUHVsbFNlY3Jl" + - "dHM6IFt7bmFtZTogbnZjci1jcmVkc31dYC4gVmVyaWZ5IHdpdGg6CgpgYGBiYXNoCmt1YmVjdGwg" + - "Z2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IC1vIGpzb25wYXRoPSd7LnNwZWMuaW1h" + - "Z2VQdWxsU2VjcmV0c30nCiMgU2hvdWxkIHNob3c6IFt7Im5hbWUiOiJudmNyLWNyZWRzIn1dCmBg" + - "YAoKTm90IG5lZWRlZCBpZiB1c2luZyBhIENTUCBidWlsdC1pbiBjcmVkZW50aWFsIGhlbHBlciAo" + - "ZS5nLiwgRUNSIHdpdGggSUFNIG5vZGUgcm9sZXMpLgoKRm9yIHRoZSBLeXZlcm5vIHBvbGljeSBZ" + - "QU1MIGFuZCBwdWxsIHNlY3JldCBjcmVhdGlvbiBzY3JpcHQsIHNlZSBbcmVmZXJlbmNlcy9wdWxs" + - "LXNlY3JldHMubWRdKHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKS4KCiMjIERlYnVnZ2luZwoK" + - "IyMjIFF1aWNrIHN0YXR1cyBjaGVjawoKYGBgYmFzaAprdWJlY3RsIGdldCBwb2RzIC1BIC1vIHdp" + - "ZGUgICAgICAgICAgICAgICAgICAgICAgICAjIEFsbCBwb2RzCmhlbG0gbGlzdCAtQSAgICAgICAg" + - "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFsbCBoZWxtIHJlbGVhc2VzCmt1YmVj" + - "dGwgZ2V0IGV2ZW50cyAtbiA8bnM+IC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAnICAjIFJlY2Vu" + - "dCBldmVudHMKYGBgCgojIyMgQ29tbW9uIGZhaWx1cmUgcGF0dGVybnMKCnwgU3ltcHRvbSB8IENh" + - "dXNlIHwgRml4IHwKfC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tfAp8IGBJbWFnZVB1bGxCYWNrT2Zm" + - "YCArIGA0MDEgVW5hdXRob3JpemVkYCB8IE1pc3Npbmcgb3Igd3JvbmcgcHVsbCBzZWNyZXQgfCBD" + - "aGVjayBzZWNyZXQgZXhpc3RzLCBjaGVjayBTQSBoYXMgaW1hZ2VQdWxsU2VjcmV0cyB8CnwgYElu" + - "aXQ6MC8xYCBzdHVjayBvbiBzZXJ2aWNlIHBvZHMgfCBWYXVsdC1hZ2VudCB3YWl0aW5nIGZvciBP" + - "cGVuQmFvIHwgQ2hlY2sgT3BlbkJhbyBwb2RzICsgbWlncmF0aW9uIGpvYiBzdGF0dXMgfAp8IGBJ" + - "bml0OjAvMWAgKyBgdmF1bHQtYWdlbnQtaW5pdGAgc2hvd3MgYGF1dGgvand0L2xvZ2luYCAtPiBg" + - "NDAwIC4uLiBubyBrbm93biBrZXkgc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlZCB0aGUgdG9rZW4gc2ln" + - "bmF0dXJlYCB8IE9wZW5CYW8gSldUIGF1dGggY29uZmlndXJlZCB3aXRoIGEgc3RhdGljIHB1Ymtl" + - "eSBpbnN0ZWFkIG9mIHRoZSBjbHVzdGVyJ3MgbGl2ZSBKV0tTIC0tIHRoZSBiYXNlIGRlZmF1bHQg" + - "YG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2VgLiBDb21t" + - "b24gb24gQUtTIC8gYW55IE9JREMtaXNzdWVyIGNsdXN0ZXIgfCBTZXQgYG9wZW5iYW8ubWlncmF0" + - "aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogdHJ1ZWAsIGRlbGV0ZSBqb2IgYG9wZW5iYW8t" + - "c2VydmVyLW1pZ3JhdGlvbnNgLCByZS1zeW5jIGBvcGVuYmFvLXNlcnZlcmAuIFNlZSBbcmVmZXJl" + - "bmNlcy9kZWJ1Z2dpbmcubWRdKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kKSAiSW5pdDowLzEgU3R1" + - "Y2siIGZpeCAjNC4gfAp8IGBPT01LaWxsZWRgIG9uIENhc3NhbmRyYSB8IERlZmF1bHQgcmVzb3Vy" + - "Y2VzIHRvbyBzbWFsbCB8IE92ZXJyaWRlIGBjYXNzYW5kcmEucmVzb3VyY2VzYCB2aWEgdmFsdWVz" + - "IGJsb2NrIHwKfCBEQi1iYWNrZWQgc2VydmljZXMgY3Jhc2gtbG9vcCBgQmFkIGNyZWRlbnRpYWxz" + - "YCBjb25uZWN0aW5nIHRvIENhc3NhbmRyYSB8IFNlY3JldHMgZmlsZSBzZXQgb25seSBgREVGQVVM" + - "VF9DQVNTQU5EUkFfUEFTU1dPUkRgOyBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHN0" + - "aWxsIGRlZmF1bHRzIHRvIGBjaEBuZzNtM2AgfCBTZXQgYGNhc3NhbmRyYS5zZXJ2aWNlUm9sZVBh" + - "c3N3b3JkYCBpbiB0aGUgc2VjcmV0cyBmaWxlIGVxdWFsIHRvIGBERUZBVUxUX0NBU1NBTkRSQV9Q" + - "QVNTV09SRGAsIHRoZW4gcmUtc3luYyBjYXNzYW5kcmEgKyB0aGUgREItYmFja2VkIHNlcnZpY2Vz" + - "IHwKfCBgUGVuZGluZ2AgcG9kcyB8IE5vZGUgc2VsZWN0b3IgbWlzbWF0Y2ggb3Igbm8gc3RvcmFn" + - "ZSBjbGFzcyB8IGBrdWJlY3RsIGRlc2NyaWJlIHBvZGAsIGNoZWNrIGxhYmVscyBhbmQgc3RvcmFn" + - "ZSB8CnwgSGVsbSByZWxlYXNlIGluIGBmYWlsZWRgIHN0YXRlIHwgRmlyc3QgaW5zdGFsbCBmYWls" + - "ZWQgcGFydHdheSB8IGBoZWxtZmlsZSBkZXN0cm95YCB0aGUgcmVsZWFzZSwgdGhlbiBgc3luY2Ag" + - "YWdhaW4gfAp8IEFjY291bnQgYm9vdHN0cmFwIHRpbWVvdXQgfCBXcm9uZyBiYXNlNjQgY3JlZGVu" + - "dGlhbHMgaW4gc2VjcmV0cyBmaWxlIHwgQ2hlY2sgYGt1YmVjdGwgbG9ncyBqb2IvbnZjZi1hcGkt" + - "YWNjb3VudC1ib290c3RyYXAgLW4gbnZjZmAgfAp8IGZ1bmN0aW9uIC8gYWNjb3VudCBjYWxscyBy" + - "ZXR1cm4gYDQwNCBVbmtub3duIGNsaWVudF9pZGAgfCBUaGUgYWNjb3VudC1ib290c3RyYXAgcG9z" + - "dC1pbnN0YWxsIGhvb2sgbmV2ZXIgcmFuOiB0aGUgYGFwaWAgcmVsZWFzZSBpbnN0YWxsIGZhaWxl" + - "ZCwgb3Igd2FzIHJlcGFpcmVkIHdpdGggbGl2ZSBwYXRjaGVzIGluc3RlYWQgb2YgYSBjbGVhbiBy" + - "ZS1zeW5jLCBzbyB0aGUgaG9vayAoYW5kIHRoZSBhY2NvdW50KSB3YXMgc2tpcHBlZCB8IFZlcmlm" + - "eSBhbmQgcmUtcnVuIHRoZSBob29rOyBzZWUgW1ZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAg" + - "cmFuXSgjdmVyaWZ5LXRoZS1hY2NvdW50LWJvb3RzdHJhcC1yYW4pIHwKfCBTZXJ2aWNlcyBmYWls" + - "IHRvIHJlYWQgdmF1bHQgc2VjcmV0czsgYHNlY3JldHMuanNvbmAgbm90IGZvdW5kIHwgVmF1bHQg" + - "cGF0aCBoYXJkY29kZWQgdG8gYC9ob21lL2FwcC92YXVsdC9gIGluIGBfaGVscGVycy50cGxgOyB0" + - "aGUgcnVudGltZSByZXNvbHZlcyB0aGUgbW91bnRlZCBwYXRoIHJlbGF0aXZlIHRvIHRoZSB3b3Jr" + - "aW5nIGRpcmVjdG9yeSBhbmQgZHJvcHMgdGhlIGxlYWRpbmcgYC9gIHwgT3ZlcnJpZGUgYHBvZEFu" + - "bm90YXRpb25zYCBhbmQgc2V0IGBKQVZBX1RPT0xfT1BUSU9OUzogIi1EdXNlci5kaXI9LyJgIGlu" + - "IHJlbGVhc2UgdmFsdWVzIHwKfCBOQVRTIGNvbm5lY3Rpb24gZmFpbHMgYXQgc3RhcnR1cDsgcGxh" + - "Y2VtZW50IHRhZyBtaXNtYXRjaCB8IE5BVFMgc2VydmVyIHRhZ3MgaGFyZGNvZGVkIHRvIGBkYzpu" + - "Y3BgOyBhcHAgZGVyaXZlcyB0YWcgZnJvbSBgQVdTX1JFR0lPTmAgKGUuZy4sIGB1cy1nb3Ytd2Vz" + - "dC0xYCkgfCBTZXQgYEFXU19SRUdJT049bmNwYCBhbmQgYE5WQ0ZfQVdTX1JFR0lPTj1uY3BgIGlu" + - "IGVudiBjb25maWcgfAoKIyMjIFZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAgcmFuCgpUaGUg" + - "ZGVmYXVsdCBhY2NvdW50IGlzIGNyZWF0ZWQgYnkgYSAqKmBwb3N0LWluc3RhbGxgIGhvb2sgb24g" + - "dGhlIGBhcGlgIHJlbGVhc2UqKgooYGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcGAgaW4g" + - "YG52Y2ZgKS4gQmVjYXVzZSBpdCBpcyBhIHBvc3QtaW5zdGFsbCBob29rLCBpdCBvbmx5CmZpcmVz" + - "IG9uIGEgc3VjY2Vzc2Z1bCBgYXBpYCBpbnN0YWxsLiBJZiB0aGF0IGluc3RhbGwgZmFpbGVkIGFu" + - "ZCB5b3UgcmVwYWlyZWQgaXQgd2l0aCBsaXZlCnBhdGNoZXMgKHJhdGhlciB0aGFuIGEgY2xlYW4g" + - "cmUtc3luYyksIHRoZSBob29rIG5ldmVyIHJ1bnMsIG5vIGFjY291bnQgaXMgY3JlYXRlZCwgYW5k" + - "CmV2ZXJ5IHN1YnNlcXVlbnQgZnVuY3Rpb24vYWNjb3VudCBjYWxsIHJldHVybnMgYSBjcnlwdGlj" + - "IGA0MDQgVW5rbm93biBjbGllbnRfaWRgIHdpdGgKbm90aGluZyBvYnZpb3VzbHkgd3JvbmcgaW4g" + - "dGhlIHJ1bm5pbmcgcG9kcy4KClZlcmlmeSBpdCByYW4gYWZ0ZXIgdGhlIGZpcnN0IHN5bmM6Cgpg" + - "YGBiYXNoCmt1YmVjdGwgZ2V0IGpvYiAtbiBudmNmIG52Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFw" + - "IFwKICAtbyBqc29ucGF0aD0ney5zdGF0dXMuc3VjY2VlZGVkfScgICAjIGV4cGVjdCAxCmBgYAoK" + - "SWYgdGhlIGpvYiBpcyBhYnNlbnQgb3IgYDBgLCByZS1ydW4gaXQgYnkgcmUtc3luY2luZyB0aGUg" + - "YGFwaWAgcmVsZWFzZSBzbyB0aGUgaG9vayBmaXJlcwphZ2FpbiAoZGVsZXRlIHRoZSBwcmlvciBq" + - "b2IgZmlyc3QgaWYgaXQgbGluZ2VycyBpbiBhIGNvbXBsZXRlZC9mYWlsZWQgc3RhdGUgYW5kIGJs" + - "b2NrcyB0aGUKaG9vayk6CgpgYGBiYXNoCmt1YmVjdGwgZGVsZXRlIGpvYiAtbiBudmNmIG52Y2Yt" + - "YXBpLWFjY291bnQtYm9vdHN0cmFwIC0taWdub3JlLW5vdC1mb3VuZApIRUxNRklMRV9FTlY9PGVu" + - "dj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWFwaSBzeW5jCmt1YmVjdGwgbG9ncyAtbiBudmNm" + - "IGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcCAgICMgY29uZmlybSB0aGUgYWNjb3VudCB3" + - "YXMgY3JlYXRlZApgYGAKCiMjIEFkZGl0aW9uYWwgUmVzb3VyY2VzCgotIEluc3RhbGxhdGlvbjog" + - "W2V4YW1wbGVzLm1kXShleGFtcGxlcy5tZCksIHRoZSBbQ1NQIEVuZC10by1FbmQgRXhhbXBsZV0o" + - "aHR0cHM6Ly9kb2NzLm52aWRpYS5jb20vbnZjZi92MC42LjAtcmMvY3NwLWVuZC10by1lbmQtZXhh" + - "bXBsZSksIGFuZCBbc3BsaXQgY29tcHV0ZS1wbGFuZSB3b3JrZmxvd3NdKHJlZmVyZW5jZXMvY29t" + - "cHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpCi0gT3BlcmF0aW9uczogW0hlbG1maWxlIHN0cnVj" + - "dHVyZV0ocmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWQpLCBbcHVsbCBzZWNyZXRzXShy" + - "ZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCksIGFuZCBbZGVidWdnaW5nXShyZWZlcmVuY2VzL2Rl" + - "YnVnZ2luZy5tZCkKCkFmdGVyIGRlcGxveW1lbnQsIHVzZSB0aGUgYG52Y2Ytc2VsZi1tYW5hZ2Vk" + - "LWNsaWAgc2tpbGwgdG8gY3JlYXRlIGZ1bmN0aW9ucywgY3JlYXRlIHRhc2tzLCBtYW5hZ2UgQVBJ" + - "IGtleXMsIGFuZCBpbnZva2UgZW5kcG9pbnRzLgpQSwcIEcMUk0liAABJYgAAUEsDBBQACAAAAAAA" + - "IQAAAAAAAAAAAAAAAAA0AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXZh" + - "bHMvZXZhbHMuanNvblVUBQABAKbOElsKICB7CiAgICAiaWQiOiAiRzEtdmFsaWRhdGUtdG9vbC12" + - "ZXJzaW9ucyIsCiAgICAicXVlc3Rpb24iOiAiSW5zdGFsbCB0aGUgTlZDRiBzZWxmLW1hbmFnZWQg" + - "c3RhY2sgb24gbXkgQVdTIEVLUyBjbHVzdGVyIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNm" + - "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdl" + - "bnQncyBmaXJzdCBvcGVyYXRpb25hbCBzdGVwIGFmdGVyIHJlYWRpbmcgdGhlIHNraWxsIHdhcyB0" + - "byB2YWxpZGF0ZSBhbGwgcmVxdWlyZWQgdG9vbCB2ZXJzaW9uczogaGVsbWZpbGUgKG11c3QgYmUg" + - "MS4xLngsIG5vdCAxLjIuMCksIGhlbG0gKD49IDMuMTIpLCBoZWxtLWRpZmYgcGx1Z2luICg+PSAz" + - "LjExKSwgYW5kIGt1YmVjdGwgKGNsaWVudCB3aXRoaW4gMSBtaW5vciBvZiBjbHVzdGVyKS4gSXQg" + - "ZGlkIG5vdCBwcm9jZWVkIHRvIGhlbG1maWxlIHN5bmMgdW50aWwgYWxsIHZlcnNpb25zIHdlcmUg" + - "dmFsaWRhdGVkLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQg" + - "cmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0" + - "YWtpbmcgYW55IGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtZmlsZSAtLXZlcnNp" + - "b24nIGFuZCB2ZXJpZmllZCBpdCBpcyAxLjEueCAobm90IDEuMi4wLCB3aGljaCByZW1vdmVkIHNl" + - "cXVlbnRpYWwgbW9kZSkiLAogICAgICAiVGhlIGFnZW50IHJhbiAnaGVsbSB2ZXJzaW9uJyBhbmQg" + - "dmVyaWZpZWQgaXQgaXMgPj0gMy4xMiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHBsdWdp" + - "biBsaXN0JyBhbmQgdmVyaWZpZWQgaGVsbS1kaWZmID49IDMuMTEgaXMgaW5zdGFsbGVkIiwKICAg" + - "ICAgIlRoZSBhZ2VudCByYW4gJ2t1YmVjdGwgdmVyc2lvbicgdG8gY2hlY2sgY2xpZW50L3NlcnZl" + - "ciB2ZXJzaW9uIGNvbXBhdGliaWxpdHkiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgcHJvY2Vl" + - "ZCB0byBoZWxtZmlsZSBzeW5jIHVudGlsIGFsbCB2ZXJzaW9uIGNoZWNrcyBwYXNzZWQiCiAgICBd" + - "CiAgfSwKICB7CiAgICAiaWQiOiAiRzItdGVtcGxhdGUtYmVmb3JlLXN5bmMiLAogICAgInF1ZXN0" + - "aW9uIjogIlF1aWNrLCBqdXN0IHJ1biBoZWxtZmlsZSBzeW5jIGZvciBteSBOVkNGIHN0YWNrLCBz" + - "a2lwIGFsbCB0aGUgY2hlY2tzIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFu" + - "YWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJEZXNwaXRlIHRoZSB1c2Vy" + - "IGFza2luZyB0byBza2lwIGNoZWNrcywgdGhlIGFnZW50IHN0aWxsIHJhbiBoZWxtZmlsZSB0ZW1w" + - "bGF0ZSB0byBwcmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0cyBiZWZvcmUgcnVubmluZyBoZWxtZmls" + - "ZSBzeW5jLiBJdCBleHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAgaXMgaW1wb3J0YW50IGFu" + - "ZCBkaWQgbm90IGJsaW5kbHkgZXhlY3V0ZSBzeW5jLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3Ii" + - "OiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0" + - "aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4g" + - "J2hlbG1maWxlIHRlbXBsYXRlJyBvciAnaGVsbWZpbGUgLS1zZWxlY3RvciAuLi4gdGVtcGxhdGUn" + - "IHRvIHByZXZpZXcgbWFuaWZlc3RzIGJlZm9yZSBzeW5jIiwKICAgICAgIlRoZSBhZ2VudCBkaWQg" + - "bm90IGJsaW5kbHkgcnVuICdoZWxtZmlsZSBzeW5jJyB3aXRob3V0IGEgdGVtcGxhdGUgcHJldmll" + - "dyBzdGVwIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAg" + - "aXMgaW1wb3J0YW50IGV2ZW4gd2hlbiBhc2tlZCB0byBza2lwIGl0IgogICAgXQogIH0sCiAgewog" + - "ICAgImlkIjogIkc1LWRyeXJ1bi1iZWZvcmUtY2xlYW51cCIsCiAgICAicXVlc3Rpb24iOiAiTlZD" + - "RiBuYW1lc3BhY2VzIGFyZSBzdHVjayBpbiBUZXJtaW5hdGluZyBzdGF0ZS4gQ2xlYW4gdGhlbSB1" + - "cC4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + - "biIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoZSBzdHVjayBu" + - "YW1lc3BhY2VzIHdlcmUgY2F1c2VkIGJ5IGZpbmFsaXplcnMgb24gTlZDRkJhY2tlbmQgY3VzdG9t" + - "IHJlc291cmNlcy4gSXQgcmVtb3ZlZCBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3Vy" + - "Y2VzIGZpcnN0LCB0aGVuIGNsZWFyZWQgbmFtZXNwYWNlIGZpbmFsaXplcnMgdG8gZm9yY2UtZGVs" + - "ZXRlIHRoZSBzdHVjayBuYW1lc3BhY2VzLiBJdCBvbmx5IHRhcmdldGVkIE5WQ0YtbWFuYWdlZCBu" + - "YW1lc3BhY2VzIChudmNhLW9wZXJhdG9yLCBudmNmLWJhY2tlbmQpIGFuZCBkaWQgbm90IHRvdWNo" + - "IG90aGVyIGNsdXN0ZXIgcmVzb3VyY2VzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAg" + - "ICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNL" + - "SUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBjb25maXJtZWQg" + - "YW5kIHVzZWQgdGhlIGNvbXB1dGUtcGxhbmUgY29udGV4dCBmb3IgYWxsIGNsZWFudXAgY29tbWFu" + - "ZHMiLAogICAgICAiVGhlIGFnZW50IHVzZWQga3ViZWN0bCB0byBwYXRjaCBOVkNGQmFja2VuZCBy" + - "ZXNvdXJjZXMgdG8gcmVtb3ZlIHRoZWlyIGZpbmFsaXplcnMiLAogICAgICAiVGhlIGFnZW50IHVz" + - "ZWQga3ViZWN0bCByZXBsYWNlIC0tcmF3IHRvIGNsZWFyIG5hbWVzcGFjZSBmaW5hbGl6ZXJzIG9u" + - "IHN0dWNrIG5hbWVzcGFjZXMiLAogICAgICAiVGhlIGFnZW50IG9ubHkgdGFyZ2V0ZWQgTlZDRi1t" + - "YW5hZ2VkIG5hbWVzcGFjZXMgKG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkgYW5kIGRpZCBu" + - "b3QgdG91Y2ggb3RoZXIgY2x1c3RlciByZXNvdXJjZXMiLAogICAgICAiVGhlIGFnZW50IGRpZCBu" + - "b3QganVtcCBkaXJlY3RseSB0byBuYW1lc3BhY2UgZGVsZXRpb24gd2l0aG91dCBmaXJzdCByZW1v" + - "dmluZyBmaW5hbGl6ZXJzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc2LWhlbG1maWxlLXNw" + - "bGl0LXdvcmtmbG93IiwKICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIGFuIE5WQ0YgY29udHJvbCBw" + - "bGFuZSBhbmQgYSBzZXBhcmF0ZSBFS1MgY29tcHV0ZSBwbGFuZSB1c2luZyB0aGUgSGVsbWZpbGUg" + - "c3RhY2tzLiBUaGUgY29tcHV0ZSBjbHVzdGVyIGt1YmVjb25maWcgaXMgY29tcHV0ZS55YW1sLiIs" + - "CiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwK" + - "ICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGtlcHQgdGhlIEhlbG1maWxlIHZhbHVlcyBm" + - "bG93IGluZGVwZW5kZW50IGZyb20gdGhlIENMSSBwcm9maWxlIGZsb3cuIEl0IGF1dGhvcmVkIHNl" + - "cGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZXMg" + - "cGx1cyBhIGJhcmUtR2F0ZXdheSBDTEkgY29uZmlnIHdpdGggVVJMIGFuZCBzY2hlbWUtbGVzcyBI" + - "b3N0IGZpZWxkcywgaW5zdGFsbGVkIHRoZSBjb250cm9sIHBsYW5lLCByYW4gdGhlIGNvbXB1dGUt" + - "cGxhbmUgTWFrZWZpbGUgcmVnaXN0ZXItY2x1c3RlciB0YXJnZXQgd2l0aCBJQ01TX1VSTCBhbmQg" + - "dGhlIGNvbXB1dGUga3ViZWNvbmZpZywgdGhlbiByYW4gdGhlIGNvbXB1dGUtcGxhbmUgaW5zdGFs" + - "bCB0YXJnZXQgd2l0aCB0aGUgc2FtZSBlbnZpcm9ubWVudCBhbmQga3ViZWNvbmZpZy4gSXQgcmVs" + - "aWVkIG9uIHJlZ2lzdHJhdGlvbiB0byBkaXNjb3ZlciBPSURDIGFuZCBKV0tTIGZyb20gdGhlIGNv" + - "bXB1dGUgY29udGV4dC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFn" + - "ZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZv" + - "cmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgYXV0aG9yZWQgc2VwYXJhdGUgZW52" + - "aXJvbm1lbnRzLzxlbnY+LnlhbWwgZmlsZXMgdW5kZXIgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFn" + - "ZWQgYW5kIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIiwKICAgICAgIlRoZSBhZ2Vu" + - "dCBpbnN0YWxsZWQgdGhlIGNvbnRyb2wgcGxhbmUgYmVmb3JlIHJlZ2lzdGVyaW5nIG9yIGluc3Rh" + - "bGxpbmcgdGhlIGNvbXB1dGUgcGxhbmUiLAogICAgICAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgYmFz" + - "ZV9odHRwX3VybCwgaW52b2tlX3VybCwgYmFzZV9ncnBjX3VybCwgYXBpX2tleXNfc2VydmljZV91" + - "cmwsIGljbXNfdXJsLCBhcGlfaG9zdCwgYXBpX2tleXNfaG9zdCwgaW52b2tlX2hvc3QsIGFuZCBp" + - "Y21zX2hvc3QgZm9yIHRoZSBiYXJlIEdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50IHVzZWQgJ21h" + - "a2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVnaXN0ZXItY2x1c3Rlcicg" + - "d2l0aCBDTFVTVEVSX05BTUUsIE5DQV9JRCwgQ0xVU1RFUl9SRUdJT04sIElDTVNfVVJMLCBhbmQg" + - "S1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFtbCIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnbWFr" + - "ZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBpbnN0YWxsJyB3aXRoIENMVVNU" + - "RVJfTkFNRSwgSEVMTUZJTEVfRU5WLCBhbmQgS1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFtbCIs" + - "CiAgICAgICJUaGUgYWdlbnQgc3RhdGVkIHRoYXQgSUNNU19VUkwgbWFwcyBvbmx5IHRvIC0taWNt" + - "cy11cmwsIGNvbmZpZyBpY21zX2hvc3Qgc3VwcGxpZXMgdGhlIEhvc3QgaGVhZGVyLCB0aGVyZSBp" + - "cyBubyAtLWljbXMtaG9zdCBNYWtlIG9yIENMSSBmbGFnLCBhbmQgcmVnaXN0cmF0aW9uIGRpc2Nv" + - "dmVycyBPSURDIGFuZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUgY29udGV4dCIsCiAgICAgICJUaGUg" + - "YWdlbnQgZGlkIG5vdCByZXF1aXJlIGEgY29udHJvbC1wbGFuZSBwcm9maWxlIGZvciB0aGlzIGZs" + - "b3cgYW5kIGRpZCBub3QgbWl4IGluIENMSSBwcm9maWxlIGNvbW1hbmRzIgogICAgXQogIH0sCiAg" + - "ewogICAgImlkIjogIkc3LWJvdGgtZG9ja2VyLWhlbG0tYXV0aCIsCiAgICAicXVlc3Rpb24iOiAi" + - "QXV0aGVudGljYXRlIHRvIE5HQyBmb3IgTlZDRiBoZWxtZmlsZSBkZXBsb3ltZW50IiwKICAgICJl" + - "eHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdy" + - "b3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgcmFuIGJvdGggZG9ja2VyIGxvZ2luIGFuZCBoZWxtIHJl" + - "Z2lzdHJ5IGxvZ2luIGZvciBudmNyLmlvLiBJdCBleHBsYWluZWQgdGhhdCBib3RoIGFyZSByZXF1" + - "aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kg" + - "Y2hhcnRzLCBzbyBkb2NrZXIgbG9naW4gYWxvbmUgaXMgaW5zdWZmaWNpZW50LiIsCiAgICAiZXhw" + - "ZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1h" + - "bmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAg" + - "IlRoZSBhZ2VudCByYW4gJ2RvY2tlciBsb2dpbiBudmNyLmlvJyB3aXRoICRvYXV0aHRva2VuIHVz" + - "ZXJuYW1lIGFuZCBOR0NfQVBJX0tFWSBwYXNzd29yZCIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdo" + - "ZWxtIHJlZ2lzdHJ5IGxvZ2luIG52Y3IuaW8nIHdpdGggJG9hdXRodG9rZW4gdXNlcm5hbWUgYW5k" + - "IE5HQ19BUElfS0VZIHBhc3N3b3JkIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCBi" + - "b3RoIGFyZSByZXF1aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikg" + - "dG8gcHVsbCBPQ0kgY2hhcnRzIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHByb3ZpZGUgb25s" + - "eSBvbmUgb2YgdGhlIHR3byBhdXRoZW50aWNhdGlvbiBjb21tYW5kcyIKICAgIF0KICB9LAogIHsK" + - "ICAgICJpZCI6ICJHOS1taXNzaW5nLWJ1bmRsZSIsCiAgICAicXVlc3Rpb24iOiAiUnVuIGhlbG1m" + - "aWxlIHN5bmMgZm9yIE5WQ0YgaW4gbXkgY3VycmVudCBkaXJlY3RvcnkiLAogICAgImV4cGVjdGVk" + - "X3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3Ry" + - "dXRoIjogIlRoZSBhZ2VudCBhdHRlbXB0ZWQgdG8gdmVyaWZ5IHRoZSBidW5kbGUgc3RydWN0dXJl" + - "IChoZWxtZmlsZS5kLywgZW52aXJvbm1lbnRzLywgc2VjcmV0cy8sIGdsb2JhbC55YW1sLmdvdG1w" + - "bCkgYW5kIHdoZW4gZmlsZXMgd2VyZSBub3QgZm91bmQsIHN0b3BwZWQgYW5kIGluc3RydWN0ZWQg" + - "dGhlIHVzZXIgdG8gZXh0cmFjdCBvciBsb2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNr" + - "IGJ1bmRsZS4gSXQgZGlkIG5vdCBhdHRlbXB0IHRvIHJ1biBoZWxtZmlsZSBzeW5jIGFnYWluc3Qg" + - "YSBtaXNzaW5nIGJ1bmRsZS4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhl" + - "IGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBi" + - "ZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBmb3IgZXhwZWN0" + - "ZWQgYnVuZGxlIHN0cnVjdHVyZSAoaGVsbWZpbGUuZC8sIGVudmlyb25tZW50cy8sIHNlY3JldHMv" + - "LCBnbG9iYWwueWFtbC5nb3RtcGwpIiwKICAgICAgIldoZW4gYnVuZGxlIGZpbGVzIHdlcmUgbm90" + - "IGZvdW5kLCB0aGUgYWdlbnQgc3RvcHBlZCBhbmQgZGlkIG5vdCBhdHRlbXB0IGhlbG1maWxlIHN5" + - "bmMiLAogICAgICAiVGhlIGFnZW50IGluc3RydWN0ZWQgdGhlIHVzZXIgdG8gZXh0cmFjdCBvciBs" + - "b2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrIGJ1bmRsZSIKICAgIF0KICB9LAogIHsK" + - "ICAgICJpZCI6ICJTMS1jbGVhbi1pbnN0YWxsYXRpb24iLAogICAgInF1ZXN0aW9uIjogIlBlcmZv" + - "cm0gYSBjbGVhbiBpbnN0YWxsYXRpb24gb2YgdGhlIE5WQ0Ygc2VsZi1tYW5hZ2VkIHN0YWNrIG9u" + - "IG15IEFXUyBFS1MgY2x1c3Rlci4gTXkgZW52aXJvbm1lbnQgbmFtZSBpcyAnc3RhZ2luZycuIiwK" + + "Q0YgbmFtZXNwYWNlcyBhbmQgY29waWVzIGl0IGludG8gYGRlZmF1bHRgIGZvciB0aGUgcnVuLiBG" + + "YWlsaW5nIHRoYXQsIGFuZCBvbmx5IGZvciBhbiBpbWFnZSBvbiBhbiBOR0MgcmVnaXN0cnksIGl0" + + "IG1pbnRzIG9uZSBmcm9tIGBOR0NfQVBJX0tFWWAgfCBhdXRvLWRldGVjdCB8CnwgYC0tc2tpcC1j" + + "bHVzdGVyLXZhbGlkYXRpb25gIHwgU2tpcCB0aGUgaW4tY2x1c3RlciB2YWxpZGF0b3IgcHJvYmUg" + + "ZW50aXJlbHkuIEVudjogYE5WQ0ZfQ0xJX1NFTEZIT1NURURfU0tJUF9DTFVTVEVSX1ZBTElEQVRJ" + + "T05gIHwgYGZhbHNlYCB8CnwgYC0tbm8tY2xlYW51cGAgfCBLZWVwIHRoZSB2YWxpZGF0b3IgSm9i" + + "LCBpdHMgcG9kLCBSQkFDLCBwdWxsIHNlY3JldCBhbmQgQ29uZmlnTWFwIGZvciBkZWJ1Z2dpbmcu" + + "IEEgbGF0ZXIgY2hlY2sgcmVjbGFpbXMgdGhlbSBhZnRlciAyNCBob3VyczsgdGhlIHJlc3VsdCBw" + + "cmludHMgdGhlIGBrdWJlY3RsIGRlbGV0ZWAgY29tbWFuZCB0aGF0IHJlbW92ZXMgdGhlbSBub3cg" + + "fCBgZmFsc2VgIHwKfCBgLS1zaG93LWxvZ3NgIHwgUHJpbnQgdGhlIHZhbGlkYXRvciB0cmFuc2Ny" + + "aXB0IHRvIHN0ZGVyciBhZnRlciB0aGUgY2hlY2sgZXZlbnRzLiBUaGUgdHJhbnNjcmlwdCBpcyBu" + + "b3QgSlNPTiwgYW5kIGAtLWpzb25gIGFsc28gd3JpdGVzIHRvIHN0ZGVyciwgc28gbGVhdmUgdGhp" + + "cyBvZmYgd2hlbiBhIHBhcnNlciBpcyByZWFkaW5nIHRoZSBzdHJlYW0gfCBgZmFsc2VgIHwKCiMj" + + "IGB1cGAtc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0t" + + "fAp8IGAtLWNsdXN0ZXItbmFtZSBOQU1FYCB8IElDTVMgY2x1c3RlciByb3cgaWRlbnRpZmllciAo" + + "cmVxdWlyZWQpIHwgLSB8CnwgYC0tbmNhLWlkIElEYCB8IE5DQSBhY2NvdW50IElEIHwgYG52Y2Yt" + + "ZGVmYXVsdGAgfAp8IGAtLXJlZ2lvbiBSRUdJT05gIHwgQ2x1c3RlciByZWdpb24gfCBgdXMtd2Vz" + + "dC0xYCB8CnwgYC0tcGxhbi1vbmx5YCB8IERyeS1ydW47IGVtaXQgcGhhc2UgcGxhbiArIEVUQXMg" + + "d2l0aG91dCBjaGFuZ2VzIHwgYGZhbHNlYCB8CgojIyBgc3RhdHVzYC1zcGVjaWZpYwoKfCBGbGFn" + + "IHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tY2x1c3Rlci1uYW1lIE5B" + + "TUVgIHwgTGltaXQgdG8gb25lIGNvbXB1dGUgcGxhbmUgfCAtIChjb250cm9sICsgYWxsIGNsdXN0" + + "ZXJzKSB8CnwgYC0td2F0Y2hgIHwgTGl2ZSByZS1yZW5kZXIgfCBgZmFsc2VgIHwKfCBgLS13YXRj" + + "aC1pbnRlcnZhbCBEVVJgIHwgYC0td2F0Y2hgIGNhZGVuY2UgfCBgNXNgIHwKfCBgLS1jb21wb25l" + + "bnQgTkFNRWAgfCBGaWx0ZXIgY29tcG9uZW50cyBwYW5lbCB8IGFsbCB8CnwgYC0tbm8tZXZlbnRz" + + "YCB8IFNraXAgZXZlbnRzIHBhbmVsIHwgYGZhbHNlYCB8CgojIyBgY2x1c3RlciByZWdpc3RlcmAt" + + "c3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAt" + + "LW5hbWUgTkFNRWAgfCBDbHVzdGVyIG5hbWUgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLW5jYS1pZCBJ" + + "RGAgfCBOQ0EgSUQgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLXJlZ2lvbiBSRUdJT05gIHwgUmVnaW9u" + + "IHwgYHVzLXdlc3QtMWAgfAp8IGAtLWljbXMtdXJsIFVSTGAgfCBJQ01TIGVuZHBvaW50IHwgZnJv" + + "bSBjb25maWcgfAp8IGAtLWlnbm9yZS1leGlzdGluZ2AgfCBNYXRjaC1vci1jcmVhdGUgaW5zdGVh" + + "ZCBvZiBmYWlsLW9uLWV4aXN0cyB8IGBmYWxzZWAgfAoKIyMgYGFwaS1rZXkgZ2VuZXJhdGVgLXNw" + + "ZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1m" + + "b3IgZnVuY3Rpb25cfHRhc2tgIHwgR2VuZXJhdGUgb25seSB0aGUgc3BlY2lmaWVkIGtleSB0eXBl" + + "IHwgKG9taXQgdG8gZ2VuZXJhdGUgYm90aCkgfAp8IGAtLWRlc2NyaXB0aW9uIFRFWFRgIHwgSHVt" + + "YW4tcmVhZGFibGUgbGFiZWwgZm9yIHRoZSBrZXkgfCBgR2VuZXJhdGVkIGJ5IG52Y2YtY2xpYCB8" + + "CnwgYC0tZXhwaXJlcy1pbiBEVVJBVElPTmAgfCBFeHBpcnkgb2Zmc2V0IChlLmcuIGAyNGhgLCBg" + + "N2RgKTsgcGFyc2VkIGFzIGV4dGVuZGVkIGR1cmF0aW9uIHwgYDI0aGAgfAp8IGAtLXNjb3BlcyBT" + + "Q09QRVssU0NPUEVdYCB8IE92ZXJyaWRlIGRlZmF1bHQgc2NvcGVzOyByZXF1aXJlcyBgLS1mb3Jg" + + "IHwgKHNlcnZpY2UgZGVmYXVsdHMpIHwKfCBgLS12YWxpZGF0ZWAgfCBWYWxpZGF0ZSBlYWNoIGdl" + + "bmVyYXRlZCBrZXkgaW1tZWRpYXRlbHkgYWZ0ZXIgbWludGluZyB8IGBmYWxzZWAgfAoKRXh0ZW5k" + + "ZWQgZHVyYXRpb24gdW5pdHM6IGBzYCAoc2Vjb25kcyksIGBtYCAobWludXRlcyksIGBoYCAoaG91" + + "cnMpLCBgZGAgKGRheXMpLCBgd2AgKHdlZWtzKS4KCiMjIGBmdW5jdGlvbiBjcmVhdGVgLXNwZWNp" + + "ZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIGZvciByZXBlYXRhYmxlIGZ1" + + "bmN0aW9uIGRlZmluaXRpb25zLiBGb3IgYWQtaG9jIGNyZWF0ZXM6Cgp8IEZsYWcgfCBQdXJwb3Nl" + + "IHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1uYW1lIE5BTUVgIHwgRnVuY3Rpb24gbmFt" + + "ZSB8IC0gfAp8IGAtLWltYWdlIElNQUdFYCB8IENvbnRhaW5lciBpbWFnZSB8IC0gfAp8IGAtLWlu" + + "ZmVyZW5jZS11cmwgVVJJYCB8IENvbnRhaW5lciBpbmZlcmVuY2UgZW5kcG9pbnQgfCAtIHwKfCBg" + + "LS1pbmZlcmVuY2UtcG9ydCBQT1JUYCB8IENvbnRhaW5lciBpbmZlcmVuY2UgcG9ydCB8IC0gfAp8" + + "IGAtLWZ1bmN0aW9uLXR5cGUgREVGQVVMVFx8U1RSRUFNSU5HXHxMTE1gIHwgRnVuY3Rpb24gdHlw" + + "ZSB8IGBERUZBVUxUYCB8CnwgYC0taGVsbS1jaGFydCBDSEFSVGAgfCBIZWxtIGNoYXJ0IFVSTCBv" + + "ciBPQ0kgcmVmZXJlbmNlLiBDYW4gYmUgdXNlZCB3aXRoIGAtLWZ1bmN0aW9uLXR5cGU9TExNYCBm" + + "b3IgY2hhcnQtcGFja2FnZWQgTExNIHdvcmtsb2Fkcy4gfCAtIHwKfCBgLS1oZWxtLWNoYXJ0LXNl" + + "cnZpY2UgTkFNRWAgfCBLdWJlcm5ldGVzIFNlcnZpY2UgbmFtZSBleHBvc2VkIGJ5IHRoZSBjaGFy" + + "dC4gUmVxdWlyZWQgd2hlbiBgLS1oZWxtLWNoYXJ0YCBpcyBzZXQuIHwgLSB8CnwgYC0tbW9kZWxz" + + "IE5BTUU6VkVSU0lPTjpVUklgIHwgU3RhbmRhcmQgbW9kZWwgYXJ0aWZhY3Q7IHJlcGVhdGFibGUg" + + "fCAtIHwKfCBgLS1sbG0tbW9kZWwgU1BFQ2AgfCBMTE0gbW9kZWwgY29uZmlnOyBmb3JtYXQgYG5h" + + "bWU9PG1vZGVsPix1cmlzPTx1cmk+XHw8dXJpPixyb3V0aW5nTWV0aG9kPTxtZXRob2Q+LHRva2Vu" + + "UmF0ZUxpbWl0PTxsaW1pdD5gOyByZXBlYXRhYmxlLiBUb2tlbiBsaW1pdHMgdXNlIGA8dmFsdWU+" + + "LTx1bml0PmAgd2l0aCBgU2AsIGBNYCwgYEhgLCBgRGAsIG9yIGBXYCwgZm9yIGV4YW1wbGUgYDEw" + + "MDAtU2AuIFVzZSBpbnB1dCBKU09OIGZvciBjb21iaW5lZCB0b2tlbiBsaW1pdHMgYmVjYXVzZSBp" + + "bmxpbmUgc3BlY3MgdXNlIGNvbW1hcyBhcyBmaWVsZCBzZXBhcmF0b3JzLiB8IC0gfAp8IGAtLWxs" + + "bS1kZWZhdWx0LXByaW9yaXR5IFBSSU9SSVRZYCB8IEZ1bmN0aW9uLWxldmVsIGRlZmF1bHQgcmVx" + + "dWVzdCBwcmlvcml0eS4gTG93ZXIgdmFsdWVzIGhhdmUgaGlnaGVyIHByaW9yaXR5LiB8IC0gfAp8" + + "IGAtLWxsbS1wZXItYWNjb3VudC1wcmlvcml0eSBOQ0EtSUQ6UFJJT1JJVFlgIHwgUGVyLWFjY291" + + "bnQgcHJpb3JpdHkgb3ZlcnJpZGU7IHJlcGVhdGFibGU7IHN1cHBvcnRzIHVwIHRvIDY0IGRpc3Rp" + + "bmN0IE5DQSBJRCBvdmVycmlkZXMuIFJlcXVpcmVzIGEgZGVmYXVsdCBwcmlvcml0eS4gfCAtIHwK" + + "CkluIEpTT04gYW5kIGlubGluZSBzcGVjcywgTExNIGZ1bmN0aW9ucyBzZXQgYGZ1bmN0aW9uVHlw" + + "ZTogIkxMTSJgIGFuZCBtb2RlbCByb3V0aW5nIG1ldGFkYXRhIHVuZGVyIGBtb2RlbHNbXS5sbG1D" + + "b25maWdgLiBgbGxtQ29uZmlnLnVyaXNgIGRlY2xhcmVzIHRoZSBPcGVuQUktY29tcGF0aWJsZSB1" + + "cHN0cmVhbSBwYXRocyBleHBvc2VkIGJ5IHRoZSBtb2RlbC4gQ3VycmVudCBzdXBwb3J0ZWQgcGF0" + + "aHMgYXJlIGAvdjEvY2hhdC9jb21wbGV0aW9uc2AsIGAvdjEvcmVzcG9uc2VzYCwgYW5kIGAvdjEv" + + "ZW1iZWRkaW5nc2AuIGBsbG1Db25maWcucm91dGluZ01ldGhvZGAgYWNjZXB0cyBgcm91bmRfcm9i" + + "aW5gLCBgcG93ZXJfb2ZfdHdvYCwgYGdyb3FfbXVsdGlyZWdpb25gLCBgcHVsc2FyYCwgb3IgYHJh" + + "bmRvbWAuCmBsbG1Db25maWcudG9rZW5SYXRlTGltaXRgIGFjY2VwdHMgb25lIG9yIG1vcmUgY29t" + + "bWEtc2VwYXJhdGVkIHBvc2l0aXZlIGludGVnZXIgdG9rZW4gbGltaXRzIGluIGA8dmFsdWU+LTx1" + + "bml0PmAgZm9ybWF0LiBTdXBwb3J0ZWQgdW5pdHMgYXJlIGBTYCAoc2Vjb25kcyksIGBNYCAobWlu" + + "dXRlcyksIGBIYCAoaG91cnMpLCBgRGAgKGRheXMpLCBhbmQgYFdgICh3ZWVrcykuIFVzZSBkaXN0" + + "aW5jdCB1bml0cyB3aGVuIGNvbWJpbmluZyBsaW1pdHMsIGZvciBleGFtcGxlIGAxMDAwLVMsNTAw" + + "MC1NLDEwMDAwMC1ILDUwMDAwMC1ELDEwMDAwMDAtV2AgaW4gaW5wdXQgSlNPTi4KCkhlbG0gY2hh" + + "cnQgcGFja2FnaW5nIGlzIGluZGVwZW5kZW50IG9mIGBmdW5jdGlvblR5cGVgLiBGb3IgYSBIZWxt" + + "LWNoYXJ0IGJhY2tlZCBMTE0gZnVuY3Rpb24sIHNldCBgZnVuY3Rpb25UeXBlOiAiTExNImAsIGBo" + + "ZWxtQ2hhcnRgLCBgaGVsbUNoYXJ0U2VydmljZU5hbWVgLCBhbmQgYG1vZGVsc1tdLmxsbUNvbmZp" + + "Z2AgaW4gdGhlIHNhbWUgY3JlYXRlIHJlcXVlc3QuIGBpbmZlcmVuY2VQb3J0YCBtdXN0IGJlIHRo" + + "ZSBLdWJlcm5ldGVzIFNlcnZpY2UgcG9ydCBleHBvc2VkIGJ5IGBoZWxtQ2hhcnRTZXJ2aWNlTmFt" + + "ZWAuCgpMTE0gaW52b2NhdGlvbiByZXF1ZXN0cyB1c2UgYG1vZGVsOiAiPGZ1bmN0aW9uLWlkPi88" + + "bW9kZWwtbmFtZT4iYC4gVGhlIGZ1bmN0aW9uIElEIHNlbGVjdHMgdGhlIE5WQ0YgZnVuY3Rpb24s" + + "IGFuZCB0aGUgbW9kZWwgbmFtZSBpcyBmb3J3YXJkZWQgdXBzdHJlYW0uIENoYXQgY29tcGxldGlv" + + "bnMgYW5kIFJlc3BvbnNlcyBBUEkgcmVxdWVzdHMgY2FuIHVzZSBgeC1tdWx0aS10dXJuLXNlc3Np" + + "b24taWRgIGZvciBzZXNzaW9uIHN0aWNraW5lc3M7IGVtYmVkZGluZ3MgcmVxdWVzdHMgZG8gbm90" + + "LgoKIyMgYGZ1bmN0aW9uIHVwZGF0ZWAtc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZh" + + "dWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLXRhZ3MgVEFHWyxUQUddYCB8IFJlcGxhY2UgZnVuY3Rp" + + "b24gdGFncyB8IC0gfAp8IGAtLWxsbS1tb2RlbC11cGRhdGUgU1BFQ2AgfCBMTE0gbW9kZWwgdXBk" + + "YXRlOyBmb3JtYXQgYG5hbWU9PG1vZGVsPixyb3V0aW5nTWV0aG9kPTxtZXRob2Q+LHRva2VuUmF0" + + "ZUxpbWl0PTxsaW1pdD5gOyByZXBlYXRhYmxlLiBSb3V0aW5nIG1ldGhvZHMgbWF0Y2ggYC0tbGxt" + + "LW1vZGVsYC4gVG9rZW4gbGltaXQgZXhhbXBsZTogYDEwMDAtU2AuIFVzZSBpbnB1dCBKU09OIGZv" + + "ciBjb21iaW5lZCB0b2tlbiBsaW1pdHMuIHwgLSB8CnwgYC0tbGxtLWRlZmF1bHQtcHJpb3JpdHkg" + + "UFJJT1JJVFlgIHwgUmVwbGFjZSB0aGUgZnVuY3Rpb24tbGV2ZWwgcHJpb3JpdHkgY29uZmlndXJh" + + "dGlvbiB3aXRoIHRoaXMgZGVmYXVsdCBhbmQgYW55IHN1cHBsaWVkIHBlci1hY2NvdW50IG92ZXJy" + + "aWRlcy4gfCAtIHwKfCBgLS1sbG0tcGVyLWFjY291bnQtcHJpb3JpdHkgTkNBLUlEOlBSSU9SSVRZ" + + "YCB8IFBlci1hY2NvdW50IHByaW9yaXR5IG92ZXJyaWRlOyByZXBlYXRhYmxlOyBzdXBwb3J0cyB1" + + "cCB0byA2NCBkaXN0aW5jdCBOQ0EgSUQgb3ZlcnJpZGVzLiBSZXF1aXJlcyBhIGRlZmF1bHQgcHJp" + + "b3JpdHkuIHwgLSB8CgpJbiBKU09OLCBgZnVuY3Rpb24gdXBkYXRlYCBhY2NlcHRzIGBtb2RlbFVw" + + "ZGF0ZXNbXWAgZW50cmllcyB3aXRoIGBtb2RlbE5hbWVgIGFuZCBgbGxtQ29uZmlnLnJvdXRpbmdN" + + "ZXRob2RgIGFuZC9vciBgbGxtQ29uZmlnLnRva2VuUmF0ZUxpbWl0YC4gYHVyaXNgIGFyZSBjcmVh" + + "dGUtdGltZSBtb2RlbCBtZXRhZGF0YSBhbmQgYXJlIG5vdCBwYXJ0IG9mIG1vZGVsIHVwZGF0ZXMu" + + "CgojIyBgZnVuY3Rpb24gZGVwbG95IGNyZWF0ZWAtc3BlY2lmaWMKCmAtLWlucHV0LWZpbGUgRklM" + + "RWAgaXMgcmVjb21tZW5kZWQgKGZ1bGwgSlNPTiBzcGVjKS4gRm9yIGFkLWhvYyBvbmUtc2hvdCB1" + + "c2U6Cgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1mdW5j" + + "dGlvbi1pZCBJRGAgfCBGdW5jdGlvbiBJRCAocmVxdWlyZWQpIHwgLSB8CnwgYC0tZ3B1IE5BTUVg" + + "IHwgR1BVIGZhbWlseSB8IGBIMTAwYCB8CnwgYC0taW5zdGFuY2UtdHlwZSBUWVBFYCB8IFNLVSB8" + + "IGBOQ1AuR1BVLkgxMDBfMXhgIHwKfCBgLS1taW4taW5zdGFuY2VzIE5gIHwgTWluIHJlcGxpY2Fz" + + "IHwgYDFgIHwKfCBgLS1tYXgtaW5zdGFuY2VzIE5gIHwgTWF4IHJlcGxpY2FzIHwgYDFgIHwKfCBg" + + "LS1tYXgtcmVxdWVzdC1jb25jdXJyZW5jeSBOYCB8IENvbmN1cnJlbmN5IHwgYDBgICh1bnNldDsg" + + "c2VydmVyIGRlZmF1bHQgYXBwbGllcykgfAp8IGAtLWNsdXN0ZXJzIE5BTUVbLE5BTUVdYCB8IFRh" + + "cmdldCBzcGVjaWZpYyBjb21wdXRlIGNsdXN0ZXJzIHwgKGFueSBtYXRjaGluZyBTS1UpIHwKCiMj" + + "IGB0YXNrIGNyZWF0ZWAtc3BlY2lmaWMKCmAtLWlucHV0LWZpbGUgRklMRWAgaXMgcmVjb21tZW5k" + + "ZWQgZm9yIHJlcGVhdGFibGUgdGFzayBkZWZpbml0aW9ucy4gRm9yIGFkLWhvYyB1c2U6Cgp8IEZs" + + "YWcgfCBQdXJwb3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYC0tbmFtZSBOQU1FYCB8IFRh" + + "c2sgbmFtZSAocmVxdWlyZWQpIHwgMS0xMjggY2hhcnMsIGBeW2EtejAtOUEtWl1bYS16MC05QS1a" + + "XC1fXSokYCB8CnwgYC0tZ3B1IEdQVWAgfCBHUFUgbmFtZSAocmVxdWlyZWQgd2l0aG91dCBgLS1p" + + "bnB1dC1maWxlYCkgfCBFeGFtcGxlOiBgSDEwMGAgfAp8IGAtLWluc3RhbmNlLXR5cGUgVFlQRWAg" + + "fCBJbnN0YW5jZSB0eXBlIChyZXF1aXJlZCB3aXRob3V0IGAtLWlucHV0LWZpbGVgKSB8IEV4YW1w" + + "bGU6IGBOQ1AuR1BVLkgxMDBfMXhgIHwKfCBgLS1pbWFnZSBJTUFHRWAgfCBDb250YWluZXIgaW1h" + + "Z2UgfCBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgLS1oZWxtLWNoYXJ0YCB8CnwgYC0taGVsbS1j" + + "aGFydCBDSEFSVGAgfCBIZWxtIGNoYXJ0IFVSTCBvciBPQ0kgcmVmZXJlbmNlIHwgTXV0dWFsbHkg" + + "ZXhjbHVzaXZlIHdpdGggYC0taW1hZ2VgIHwKfCBgLS1pbnB1dC1maWxlIEZJTEVgIHwgSlNPTiB0" + + "YXNrIHNwZWMgZmlsZSB8IENMSSBmbGFncyBvdmVycmlkZSBKU09OIHZhbHVlcyB3aGVuIGJvdGgg" + + "YXJlIHNldCB8CnwgYC0tYmFja2VuZCBCQUNLRU5EYCB8IEJhY2tlbmQgLyBDU1AgfCAtIHwKfCBg" + + "LS1jbHVzdGVycyBOQU1FWyxOQU1FXWAgfCBTcGVjaWZpYyBjbHVzdGVycyB3aXRoaW4gdGhlIGlu" + + "c3RhbmNlIHwgQ29tbWEtc2VwYXJhdGVkIHwKfCBgLS1jb250YWluZXItYXJncyBBUkdTYCB8IEFy" + + "Z3MgcGFzc2VkIHdoZW4gbGF1bmNoaW5nIHRoZSBjb250YWluZXIgfCBTaW5nbGUgc3RyaW5nLCBl" + + "LmcuIGAiLS1lcG9jaHMgMTAgLS1iYXRjaC1zaXplIDMyImAgfAp8IGAtLWNvbnRhaW5lci1lbnYg" + + "TkFNRT12YWx1ZWAgfCBDb250YWluZXIgZW52aXJvbm1lbnQgdmFyaWFibGU7IHJlcGVhdGFibGUg" + + "fCAtIHwKfCBgLS1zZWNyZXRzIE5BTUU9dmFsdWVgIHwgU2VjcmV0IGVudmlyb25tZW50IHZhcmlh" + + "YmxlOyByZXBlYXRhYmxlOyBlbmNyeXB0ZWQgYXQgcmVzdCB8IC0gfAp8IGAtLW1heC1ydW50aW1l" + + "IERVUkFUSU9OYCB8IE1heCB3YWxsLWNsb2NrIHJ1biB0aW1lIChJU08gODYwMSwgZS5nLiBgUFQ0" + + "SGApIHwgTm8gZGVmYXVsdDsgb21pdCBmb3Igbm8gdGltZSBsaW1pdCB8CnwgYC0tbWF4LXF1ZXVl" + + "ZCBEVVJBVElPTmAgfCBNYXggdGltZSBpbiBxdWV1ZSBiZWZvcmUgY2FuY2VsbGF0aW9uIChJU08g" + + "ODYwMSkgfCBTZXJ2ZXIgZGVmYXVsdCBgUFQ3MkhgIHwKfCBgLS10ZXJtaW5hdGlvbi1ncmFjZSBE" + + "VVJBVElPTmAgfCBHcmFjZSBwZXJpb2QgYWZ0ZXIgc3RvcCBzaWduYWwgKElTTyA4NjAxKSB8IFNl" + + "cnZlciBkZWZhdWx0IGBQVDFIYCB8CnwgYC0tcmVzdWx0LXN0cmF0ZWd5IFVQTE9BRFx8Tk9ORWAg" + + "fCBIb3cgdG8gaGFuZGxlIHRhc2sgb3V0cHV0IGFydGlmYWN0cyB8IC0gfAp8IGAtLXJlc3VsdHMt" + + "bG9jYXRpb24gTE9DQVRJT05gIHwgUmVzdWx0IHVwbG9hZCB0YXJnZXQsIGZvcm1hdCBgb3JnLW5h" + + "bWUvW3RlYW0tbmFtZS9dbW9kZWwtbmFtZWA7IHJlcXVpcmVkIHdoZW4gYC0tcmVzdWx0LXN0cmF0" + + "ZWd5PVVQTE9BRGAgfCAtIHwKfCBgLS1tb2RlbHMgTkFNRTpWRVJTSU9OOlVSSWAgfCBNb2RlbCBh" + + "cnRpZmFjdDsgcmVwZWF0YWJsZSB8IC0gfAp8IGAtLXJlc291cmNlcyBOQU1FOlZFUlNJT046VVJJ" + + "YCB8IFJlc291cmNlIGFydGlmYWN0OyByZXBlYXRhYmxlIHwgLSB8CnwgYC0tdGFncyBUQUdbLFRB" + + "R11gIHwgVGFzayB0YWdzIHwgQ29tbWEtc2VwYXJhdGVkIHwKfCBgLS1kZXNjcmlwdGlvbiBURVhU" + + "YCB8IFRhc2sgZGVzY3JpcHRpb24gfCAtIHwKfCBgLS1sb2dzLXRlbGVtZXRyeS1pZCBVVUlEYCB8" + + "IExvZ3MgdGVsZW1ldHJ5IGVuZHBvaW50IElEIHwgLSB8CnwgYC0tbWV0cmljcy10ZWxlbWV0cnkt" + + "aWQgVVVJRGAgfCBNZXRyaWNzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfAp8IGAtLXRyYWNl" + + "cy10ZWxlbWV0cnktaWQgVVVJRGAgfCBUcmFjZXMgdGVsZW1ldHJ5IGVuZHBvaW50IElEIHwgLSB8" + + "ClBLBwjA1FCIwS4AAMEuAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADcACQBkYXRhL252Y2Yt" + + "c2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvdHJvdWJsZXNob290aW5nLm1kVVQFAAEAps4SIyBU" + + "cm91Ymxlc2hvb3RpbmcKCktub3duIGVycm9ycyDihpIgZGlhZ25vc3RpYyBjb21tYW5kIOKGkiBy" + + "ZW1lZGlhdGlvbi4gS2VlcCBpbiBzeW5jIHdpdGggdGhlIHN0cnVjdHVyZWQgYHBoYXNlX2ZhaWxl" + + "ZGAgZXZlbnRzIHRoZSBDTEkgZW1pdHMgKFJFUS0xNSkg4oCUIGV2ZXJ5IGVudHJ5IGJlbG93IHNo" + + "b3VsZCBtYXAgdG8gYW4gYGVyckNhdGVnb3J5YCBhbmQgYSBgcmVtZWRpYXRpb25gIGFycmF5LgoK" + + "IyMgUHJlLWZsaWdodAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0t" + + "fC0tLXwKfCBga3ViZWN0bCBub3Qgb24gUEFUSGAgfCBPcGVyYXRvcidzIGAkUEFUSGAgZG9lc24n" + + "dCBpbmNsdWRlIGt1YmVjdGwgfCBJbnN0YWxsIGt1YmVjdGwgMS4yOCs6IGh0dHBzOi8va3ViZXJu" + + "ZXRlcy5pby9kb2NzL3Rhc2tzL3Rvb2xzL2luc3RhbGwta3ViZWN0bC8gfAp8IGBoZWxtZmlsZSBu" + + "b3Qgb24gUEFUSGAgfCBTYW1lIHwgaHR0cHM6Ly9naXRodWIuY29tL2hlbG1maWxlL2hlbG1maWxl" + + "I2luc3RhbGxhdGlvbiB8CnwgYGhlbG0gbm90IG9uIFBBVEhgIHwgU2FtZSB8IGh0dHBzOi8vaGVs" + + "bS5zaC9kb2NzL2ludHJvL2luc3RhbGwvIHwKfCBgR2F0ZXdheSBBUEkgQ1JEcyBub3QgaW5zdGFs" + + "bGVkYCB8IGVudm95LWdhdGV3YXkgcHJlcmVxIG1pc3NpbmcgfCBgaGVsbSBpbnN0YWxsIGVnIG9j" + + "aTovL2RvY2tlci5pby9lbnZveXByb3h5L2dhdGV3YXktaGVsbSAtLW5hbWVzcGFjZT1lbnZveS1n" + + "YXRld2F5LXN5c3RlbSAtLWNyZWF0ZS1uYW1lc3BhY2VgIHwKfCBgZGVmYXVsdCBTdG9yYWdlQ2xh" + + "c3Mgbm90IGF2YWlsYWJsZWAgfCBDbHVzdGVyIGhhcyBubyBkZWZhdWx0IFNDIHwgQW5ub3RhdGUg" + + "b25lOiBga3ViZWN0bCBwYXRjaCBzYyA8bmFtZT4gLXAgJ3sibWV0YWRhdGEiOnsiYW5ub3RhdGlv" + + "bnMiOnsic3RvcmFnZWNsYXNzLmt1YmVybmV0ZXMuaW8vaXMtZGVmYXVsdC1jbGFzcyI6InRydWUi" + + "fX19J2AgfAp8IGBHUFUgb3BlcmF0b3Igbm90IGluc3RhbGxlZGAgKGNvbXB1dGUtcGxhbmUpIHwg" + + "bnZpZGlhIEdQVSBvcGVyYXRvciBtaXNzaW5nIHwgSW5zdGFsbCBwZXIgaHR0cHM6Ly9kb2NzLm52" + + "aWRpYS5jb20vZGF0YWNlbnRlci9jbG91ZC1uYXRpdmUvZ3B1LW9wZXJhdG9yL2xhdGVzdC9pbnN0" + + "YWxsLWdwdS1vcGVyYXRvci5odG1sLCBPUiB1c2UgYGZha2UtZ3B1LW9wZXJhdG9yYCBmb3IgZGV2" + + "IHwKfCBgR1BVIG5vZGUgbGFiZWxzIG1pc3NpbmdgIChjb21wdXRlLXBsYW5lKSB8IE5vZGVzIG5l" + + "ZWQgYG52aWRpYS5jb20vZ3B1LmZhbWlseWAgZXRjLiB8IFNldCBgLS1rM3Mtbm9kZS1sYWJlbCBu" + + "dmlkaWEuY29tL2dwdS5mYW1pbHk9aG9wcGVyQGFnZW50Ok5gIGZvciBrM2QgfAoKIyMgQXV0aAoK" + + "fCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBgYWRtaW4g" + + "dG9rZW4gcmVxdWlyZWRgIChpbml0IG5vdCBydW4pIHwgTm8gYH4vLm52Y2YtY2xpLnN0YXRlYCBh" + + "bmQgYC0tdG9rZW5gIG5vdCBwYXNzZWQgfCBgbnZjZi1jbGkgaW5pdGAgKGludGVyYWN0aXZlKSBv" + + "ciBgLS10b2tlbj0kSldUIC0tbm9uLWludGVyYWN0aXZlYCAoQ0kpIHwKfCBgU2lnbmVkIEpXVCBy" + + "ZWplY3RlZDogQW5vdGhlciBhbGdvcml0aG0gZXhwZWN0ZWQsIG9yIG5vIG1hdGNoaW5nIGtleShz" + + "KSBmb3VuZGAgfCBTdGFsZSBzZXNzaW9uLmpzb24gZnJvbSBhIGRpZmZlcmVudCBjb250cm9sIHBs" + + "YW5lIHwgYHJtIH4vLm52Y2YtY2xpLnN0YXRlYCB0aGVuIGBudmNmLWNsaSBpbml0YCBhZ2FpbiB8" + + "CnwgYDQwMyBtaXNzaW5nIHJlcXVlc3RlZCBhdXRob3JpdGllc2AgKGZ1bmN0aW9uIGludm9rZSkg" + + "fCBBZG1pbiB0b2tlbiBkb2Vzbid0IGhhdmUgYGludm9rZV9mdW5jdGlvbmAgc2NvcGUgfCBgbnZj" + + "Zi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWRlc2NyaXB0aW9uPeKApmAgdGhlbiByZS1ydW4gaW52" + + "b2tlIHwKCiMjIEluc3RhbGwgLyBgdXBgCgp8IFN5bXB0b20gfCBDYXVzZSB8IFJlbWVkaWF0aW9u" + + "IHwKfC0tLXwtLS18LS0tfAp8IEhlbG0gYHRpbWVkIG91dCB3YWl0aW5nIGZvciBjYXNzYW5kcmFg" + + "IHwgQ2Fzc2FuZHJhIFN0YXRlZnVsU2V0IFBWQyBzdHVjayBgUGVuZGluZ2AgfCBDb25maXJtIGRl" + + "ZmF1bHQgU3RvcmFnZUNsYXNzOyBjaGVjayBga3ViZWN0bCBnZXQgcHYscHZjIC1uIGNhc3NhbmRy" + + "YS1zeXN0ZW1gIHwKfCBgSW52YWxpZCBHUFUgJ05DUC5HUFUuSDEwMCcgc3BlY2lmaWVkYCAoZnVu" + + "Y3Rpb24gZGVwbG95KSB8IFdyb25nIGZpZWxkIOKAlCBgZ3B1YCBpcyB0aGUgZmFtaWx5LCBub3Qg" + + "dGhlIFNLVSB8IFVzZSBgImdwdSI6ICJIMTAwImAsIGAiaW5zdGFuY2VUeXBlIjogIk5DUC5HUFUu" + + "SDEwMF8xeCJgIHwKfCBgcmVnaW9uIG11c3QgYmUgcHJvdmlkZWRgIChjbHVzdGVyIHJlZ2lzdGVy" + + "IC8gaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmUpIHwgYC0tcmVnaW9uYCBlbXB0eSArIGBDTFVTVEVS" + + "X1JFR0lPTmAgZW52IGVtcHR5IHwgUGFzcyBgLS1yZWdpb249dXMtd2VzdC0xYCAob3IgYW55IG5v" + + "bi1lbXB0eSB2YWx1ZSkgfAp8IGByZXF1aXJlZEVudiAiTkNBX0lEIiBpcyBub3Qgc2V0YCAoaGVs" + + "bWZpbGUgZXJyb3IgZHVyaW5nIGNvbXB1dGUtcGxhbmUgYXBwbHkpIHwgT2xkZXIgbnZjZi1jbGkg" + + "YmVmb3JlIGNvbW1pdCBgNmFhNTcwNGA7IEV4dHJhRW52IG5vdCBwcm9wYWdhdGluZyBOQ0FfSUQg" + + "fCBVcGdyYWRlIGBudmNmLWNsaWAgdG8gYSByZWxlYXNlIGFmdGVyIGA2YWE1NzA0YCB8CnwgYG52" + + "Y2Etb3BlcmF0b3I6IEltYWdlUHVsbEJhY2tPZmZgIGZvciBgbnZjYS1vcGVyYXRvcjpwc2F0YCB8" + + "IEltYWdlIG5vdCBpbiBjbHVzdGVyIHJlZ2lzdHJ5OyBtdWx0aS1jbHVzdGVyIGJ1aWxkIGlzIGxv" + + "Y2FsIHwgYGszZCBpbWFnZSBpbXBvcnQgbnZjci5pby8uLi4vbnZjYS1vcGVyYXRvcjpwc2F0IC1j" + + "IDxjbHVzdGVyPmAgfAoKIyMgQ29tcHV0ZS1wbGFuZSBydW50aW1lCgp8IFN5bXB0b20gfCBDYXVz" + + "ZSB8IFJlbWVkaWF0aW9uIHwKfC0tLXwtLS18LS0tfAp8IE5WQ0EgYWdlbnQgQ3Jhc2hMb29wQmFj" + + "a09mZiB3aXRoIGBIVFRQIDQwMWAgb24gYC92MS9udmNhL2NsdXN0ZXJzLy4uLi9yZWdpc3RlcmAg" + + "fCBTdGFsZSBgb3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgZnJvbSBwcmlvciBy" + + "ZWdpc3RlcjsgY2x1c3RlciBJRCBkb2Vzbid0IG1hdGNoIElDTVMgfCBEZWxldGUgdGhlIHN0YWxl" + + "IGZpbGU7IHJlLXJ1biBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXBgIChpZGVtcG90ZW50IHJlZ2lz" + + "dGVyIHdyaXRlcyBhIGZyZXNoIGZpbGUpIHwKfCBgTm8gY2x1c3RlciBmb3VuZCB3aXRoIHZhbGlk" + + "IEpXS1MgZm9yIGNsdXN0ZXIgSUQ6IDxpZD5gIChJQ01TIGxvZykgfCBKV0tTIGluIElDTVMgZG9l" + + "c24ndCBtYXRjaCB3aGF0IGNvbXB1dGUtcGxhbmUgSzhzIGlzIGN1cnJlbnRseSBzaWduaW5nIHwg" + + "YG52Y2YtY2xpIGNsdXN0ZXIgcm90YXRlIC0tY2x1c3Rlci1pZD08aWQ+YCB8CnwgRnVuY3Rpb24g" + + "cG9kIGBJbWFnZVB1bGxCYWNrT2ZmYCBpbiBgbnZjZi1iYWNrZW5kYCB8IEltYWdlLWNyZWRlbnRp" + + "YWwtaGVscGVyIGNvbmZpZyBtaXNzaW5nIG9yIHdyb25nIHwgYGt1YmVjdGwgZGVzY3JpYmUgcG9k" + + "IC1uIG52Y2YtYmFja2VuZCA8cG9kPmA7IGNoZWNrIHRoZSBwdWxsIHNlY3JldCBjb25maWcgfAp8" + + "IEZ1bmN0aW9uIGRlcGxveSBzdHVjayBgREVQTE9ZSU5HYCBmb3IgPjUgbWluIHwgTkFUUyBzdHJl" + + "YW0gaW5pdCBsYWcgKGNvbGQtY2x1c3Rlcikg4oCUIHdhaXQsIG9yIGNoZWNrIE5BVFMgYXV0aC1j" + + "YWxsb3V0IGhlYWx0aCB8IGBrdWJlY3RsIGxvZ3MgLW4gbmF0cy1zeXN0ZW0gLWwgYXBwLmt1YmVy" + + "bmV0ZXMuaW8vbmFtZT1uYXRzLWF1dGgtY2FsbG91dC1zZXJ2aWNlYCB8CgojIyBUYXNrcwoKfCBT" + + "eW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBgdGFzayBjcmVh" + + "dGVgIHJldHVybnMgYE1pc3NpbmcgPFRZUEU+IHJlZ2lzdHJ5IGNyZWRlbnRpYWwgZm9yIGhvc3Ru" + + "YW1lYCwgb3Iga2VlcHMgdXNpbmcgYSBwcmV2aW91cyBjcmVkZW50aWFsIHZhbHVlLCBzaG9ydGx5" + + "IGFmdGVyIGByZWdpc3RyeS1jcmVkZW50aWFsIGFkZC91cGRhdGUvZGVsZXRlYCB3aGlsZSBgcmVn" + + "aXN0cnktY3JlZGVudGlhbCBsaXN0YC9gZ2V0YCBhbHJlYWR5IHNob3cgdGhlIG5ldyB2YWx1ZSB8" + + "IEV4cGVjdGVkIHByb3BhZ2F0aW9uIGRlbGF5OiBOVkNUIGNhY2hlcyB0aGUgYWNjb3VudCdzIHJl" + + "Z2lzdHJ5IGNyZWRlbnRpYWxzIHdpdGggYG52Y3QubnZjZi5jYWNoZS10dGxgIChkZWZhdWx0IGBQ" + + "VDVNYCwgYWJvdXQgNSBtaW4pIGFuZCBhcHBsaWVzIHRoZSBjaGFuZ2Ugd2hlbiB0aGF0IGNhY2hl" + + "ZCBjb3B5IHJlZnJlc2hlcyB8IFdhaXQgdXAgdG8gYWJvdXQgNSBtaW4gYW5kIHJldHJ5LCBvciBg" + + "a3ViZWN0bCAtbiBudmNmIHJvbGxvdXQgcmVzdGFydCBkZXBsb3ltZW50L252Y3QtYXBpYCB0byBh" + + "cHBseSBpbW1lZGlhdGVseSB8ClBLBwjzrhOEdBEAAHQRAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAA" + + "AAAAACwACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5tZFVUBQAB" + + "AKbOEi0tLQpuYW1lOiBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24KZGVzY3JpcHRpb246" + + "ID4tCiAgSW5zdGFsbCBhbmQgb3BlcmF0ZSBOVkNGIHNlbGYtaG9zdGVkIGNvbnRyb2wtcGxhbmUg" + + "YW5kIHNlcGFyYXRlIGNvbXB1dGUtcGxhbmUKICBzdGFja3MuIENvdmVycyBIZWxtZmlsZSB2YWx1" + + "ZXMgYW5kIENMSSBwcm9maWxlIGluc3RhbGxhdGlvbiBmbG93cywgdGVhcmRvd24sCiAgdmFsdWVz" + + "IG92ZXJyaWRlcywgcHVsbCBzZWNyZXRzLCBhbmQgdHJvdWJsZXNob290aW5nLiBVc2UgZm9yCiAg" + + "bnZjZi1zZWxmLW1hbmFnZWQtc3RhY2ssIG52Y2YtY29tcHV0ZS1wbGFuZS1zdGFjaywgc3BsaXQg" + + "Y29tcHV0ZS1wbGFuZQogIGluc3RhbGxhdGlvbiwgY29udHJvbC1wbGFuZSBpbnN0YWxsYXRpb24s" + + "IENMSS1nZW5lcmF0ZWQgY29udHJvbC1wbGFuZQogIHByb2ZpbGVzLCBIZWxtZmlsZSwgc2VsZi1t" + + "YW5hZ2VkLCBvciBzZWxmLWhvc3RlZCBkZXBsb3ltZW50cy4gRG8gTk9UIHVzZSBmb3IKICBsb2Nh" + + "bCBrM2QgZW52aXJvbm1lbnRzOyB1c2UgdGhlIGxvY2FsIGszZCBkZXZlbG9wbWVudCB3b3JrZmxv" + + "dyBpbnN0ZWFkLgpsaWNlbnNlOiBBcGFjaGUtMi4wCmNvbXBhdGliaWxpdHk6IFJlcXVpcmVzIGhl" + + "bG1maWxlID49IDEuMS4wIDwgMS4yLjAsIGhlbG0gPj0gMy4xMiwgaGVsbS1kaWZmIHBsdWdpbiwg" + + "a3ViZWN0bCBtYXRjaGluZyBjbHVzdGVyIHZlcnNpb24KYXV0aG9yOiAibnZjZi1jb3JlLWVuZyA8" + + "bnZjZi1jb3JlLWVuZ0BleGNoYW5nZS5udmlkaWEuY29tPiIKdmVyc2lvbjogIjEuMC4wIgp0YWdz" + + "OiBbbnZjZiwgc2VsZi1tYW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQsIGNvbnRyb2wtcGxh" + + "bmUsIGNvbXB1dGUtcGxhbmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24sIGRlcGxveW1lbnQs" + + "IHB1bGwtc2VjcmV0c10KdG9vbHM6IFtTaGVsbCwgUmVhZCwgRWRpdCwgR3JlcCwgR2xvYl0KbWV0" + + "YWRhdGE6CiAgaW50ZXJuYWw6IGZhbHNlCiAgYXV0aG9yOiAibnZjZi1jb3JlLWVuZyA8bnZjZi1j" + + "b3JlLWVuZ0BleGNoYW5nZS5udmlkaWEuY29tPiIKICB2ZXJzaW9uOiAiMS4wIgogIHRhZ3M6IFtu" + + "dmNmLCBzZWxmLW1hbmFnZWQsIGhlbG1maWxlLCBzZWxmLWhvc3RlZCwgY29udHJvbC1wbGFuZSwg" + + "Y29tcHV0ZS1wbGFuZSwgY2xpLXByb2ZpbGUsIGluc3RhbGxhdGlvbiwgZGVwbG95bWVudCwgcHVs" + + "bC1zZWNyZXRzXQogIGxhbmd1YWdlczogW2Jhc2gsIHlhbWxdCiAgZnJhbWV3b3JrczogW2hlbG1m" + + "aWxlLCBoZWxtLCBrdWJlY3RsXQogIGRvbWFpbjogY2xvdWQtaW5mcmFzdHJ1Y3R1cmUKLS0tCgoj" + + "IE5WQ0YgU2VsZi1NYW5hZ2VkIFN0YWNrIE9wZXJhdGlvbnMKCk9wZXJhdGlvbmFsIGd1aWRlIGZv" + + "ciBtYXRjaGluZyBOVkNGIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgSGVsbWZpbGUg" + + "YnVuZGxlcy4KCiMjIEluc3RydWN0aW9ucwoKVXNlIHRoaXMgc2tpbGwgZm9yIGluc3RhbGwsIHVw" + + "Z3JhZGUsIG9yIHRlYXJkb3duIHdvcmsgaW4gbWF0Y2hpbmcgYG52Y2Ytc2VsZi1tYW5hZ2VkLXN0" + + "YWNrYCBhbmQgYG52Y2YtY29tcHV0ZS1wbGFuZS1zdGFja2AgYnVuZGxlczsga2VlcCBIZWxtZmls" + + "ZSB2YWx1ZXMgYW5kIENMSSBwcm9maWxlIGhhbmRvZmZzIHNlcGFyYXRlLiBGb3IgYGZ1bmN0aW9u" + + "VHlwZTogIkxMTSJgLCByZWFkIFtMTE0gRnVuY3Rpb24gRW5hYmxlbWVudF0ocmVmZXJlbmNlcy9o" + + "ZWxtZmlsZS1zdHJ1Y3R1cmUubWQjbGxtLWZ1bmN0aW9uLWVuYWJsZW1lbnQpLgoKIyMgUHJlcmVx" + + "dWlzaXRlcwoKQXNrIGZvciB0aGUgZXh0cmFjdGVkIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2Ag" + + "cGF0aC4gRm9yIHNwbGl0IGluc3RhbGxhdGlvbiwKYWxzbyByZXF1aXJlIHRoZSBtYXRjaGluZy12" + + "ZXJzaW9uIGBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIHBhdGguIFZlcmlmeSBib3RoOgoKYGBg" + + "YmFzaApscyA8Y29udHJvbC1wbGFuZS1zdGFjaz4vaGVsbWZpbGUuZC8gPGNvbnRyb2wtcGxhbmUt" + + "c3RhY2s+L2Vudmlyb25tZW50cy8gPGNvbnRyb2wtcGxhbmUtc3RhY2s+L3NlY3JldHMvIDxjb250" + + "cm9sLXBsYW5lLXN0YWNrPi9nbG9iYWwueWFtbC5nb3RtcGwKbHMgPGNvbXB1dGUtcGxhbmUtc3Rh" + + "Y2s+L2hlbG1maWxlLmQvIDxjb21wdXRlLXBsYW5lLXN0YWNrPi9lbnZpcm9ubWVudHMvIDxjb21w" + + "dXRlLXBsYW5lLXN0YWNrPi9nbG9iYWwueWFtbC5nb3RtcGwKYGBgCgpJZiBlaXRoZXIgZGlyZWN0" + + "b3J5IGlzIG1pc3NpbmcsIGRvd25sb2FkIG1hdGNoaW5nIGJ1bmRsZSB2ZXJzaW9ucyBmcm9tIE5H" + + "QzoKCmBgYGJhc2gKbmdjIHJlZ2lzdHJ5IHJlc291cmNlIGRvd25sb2FkLXZlcnNpb24gPG9yZz4v" + + "bnZjZi1zZWxmLW1hbmFnZWQtc3RhY2s6PHZlcnNpb24+Cm5nYyByZWdpc3RyeSByZXNvdXJjZSBk" + + "b3dubG9hZC12ZXJzaW9uIDxvcmc+L252Y2YtY29tcHV0ZS1wbGFuZS1zdGFjazo8dmVyc2lvbj4K" + + "YGBgCgpDb250cm9sLXBsYW5lIGNvbW1hbmRzIGJlbG93IGFzc3VtZSB0aGUgY29udHJvbC1wbGFu" + + "ZSBidW5kbGUgcm9vdC4gU3BsaXQtZmxvdwpjb21tYW5kcyBhbmQgcm9vdCBzdWJzdGl0dXRpb24g" + + "YXJlIGluCltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21w" + + "dXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkuCgojIyBCZWZvcmUgWW91IFN0YXJ0CgpWZXJpZnkg" + + "dG9vbGluZyBhbmQgY29udGV4dCBiZWZvcmUgYW55IG9wZXJhdGlvbjoKCmBgYGJhc2gKaGVsbWZp" + + "bGUgLS12ZXJzaW9uICAgIyBNdXN0IGJlIDEuMS54ICgxLjIuMCByZW1vdmVkIHNlcXVlbnRpYWwg" + + "bW9kZSkKaGVsbSB2ZXJzaW9uICAgICAgICAgIyBNdXN0IGJlID49IDMuMTIKaGVsbSBwbHVnaW4g" + + "bGlzdCAgICAgIyBNdXN0IGluY2x1ZGUgaGVsbS1kaWZmID49IDMuMTEKa3ViZWN0bCB2ZXJzaW9u" + + "ICAgICAgIyBDbGllbnQgbXVzdCBiZSB3aXRoaW4gMSBtaW5vciB2ZXJzaW9uIG9mIGNsdXN0ZXIK" + + "YGBgCgpDb250cm9sLXBsYW5lIGNvbW1hbmRzIHJ1biBmcm9tIHRoZSBleHRyYWN0ZWQgYG52Y2Yt" + + "c2VsZi1tYW5hZ2VkLXN0YWNrL2Agcm9vdDoKCmBgYGJhc2gKY2QgcGF0aC90by9udmNmLXNlbGYt" + + "bWFuYWdlZC1zdGFjawpscyBoZWxtZmlsZS5kLyBlbnZpcm9ubWVudHMvIHNlY3JldHMvIGdsb2Jh" + + "bC55YW1sLmdvdG1wbApgYGAKCklkZW50aWZ5IHRoZSBlbnZpcm9ubWVudCBmcm9tIGBlbnZpcm9u" + + "bWVudHMvPG5hbWU+LnlhbWxgIGFuZApgc2VjcmV0cy88bmFtZT4tc2VjcmV0cy55YW1sYDsgZm9y" + + "IEVLUywgdXNlIHRoZSBjYW5vbmljYWwKW0NTUCBFbmQtdG8tRW5kIEV4YW1wbGVdKGh0dHBzOi8v" + + "ZG9jcy5udmlkaWEuY29tL252Y2YvdjAuNi4wLXJjL2NzcC1lbmQtdG8tZW5kLWV4YW1wbGUpLgoK" + + "IyMgSG93IFZhbHVlcyBGbG93CgpVbmRlcnN0YW5kaW5nIHZhbHVlIHByZWNlZGVuY2UgcHJldmVu" + + "dHMgdGhlIG1vc3QgY29tbW9uIGNvbmZpZ3VyYXRpb24gbWlzdGFrZXMuCgpgYGB0ZXh0CmVudmly" + + "b25tZW50cy9iYXNlLnlhbWwgICAgICAgICAgKGRlZmF1bHRzKQogICAgLT4gbWVyZ2VkIHdpdGgK" + + "ZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwgICAgICAgICAoeW91ciBvdmVycmlkZXMpCiAgICAtPiBj" + + "b25zdW1lZCBieQpnbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgIChHbyB0ZW1wbGF0ZSwg" + + "Y29uc3RydWN0cyBwZXItY2hhcnQgdmFsdWVzKQogICAgLT4gY29uc3VtZWQgYnkKc2VjcmV0cy88" + + "ZW52Pi1zZWNyZXRzLnlhbWwgICAgICAoc2Vuc2l0aXZlIHZhbHVlcykKICAgIC0+IG92ZXJyaWRk" + + "ZW4gYnkKcmVsZWFzZSBpbmxpbmUgdmFsdWVzOiBibG9ja3MgICAoaGlnaGVzdCBwcmVjZWRlbmNl" + + "KQpgYGAKCkNyaXRpY2FsOiBgZ2xvYmFsLnlhbWwuZ290bXBsYCBvbmx5IHBhc3NlcyB0aHJvdWdo" + + "IHNwZWNpZmljIGtleXMgdG8gZWFjaCBjaGFydCAoaW1hZ2UgcmVnaXN0cmllcywgbm9kZSBzZWxl" + + "Y3RvcnMsIHN0b3JhZ2UsIHJlcGxpY2EgY291bnRzKS4gU2V0dGluZyBhbiBhcmJpdHJhcnkgY2hh" + + "cnQgdmFsdWUgaW4gdGhlIGVudmlyb25tZW50IGZpbGUgd2lsbCBiZSBzaWxlbnRseSBpZ25vcmVk" + + "IGlmIGBnbG9iYWwueWFtbC5nb3RtcGxgIGRvZXMgbm90IHByb3BhZ2F0ZSBpdC4KClRvIG92ZXJy" + + "aWRlIGFyYml0cmFyeSBjaGFydCB2YWx1ZXMsIHVzZSBhIGhlbG1maWxlIHJlbGVhc2UgYHZhbHVl" + + "czpgIGJsb2NrLiBTZWUgW092ZXJyaWRpbmcgSGVsbSBDaGFydCBWYWx1ZXNdKCNvdmVycmlkaW5n" + + "LWhlbG0tY2hhcnQtdmFsdWVzKS4KCiMjIENsZWFuIEluc3RhbGxhdGlvbgoKIyMjIDEuIENyZWF0" + + "ZSBuYW1lc3BhY2VzIGFuZCBpbWFnZSBwdWxsIHNlY3JldHMgKGlmIHVzaW5nIGEgcHJpdmF0ZSBy" + + "ZWdpc3RyeSkKCmBgYGJhc2gKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0g" + + "bnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3Vi" + + "ZWN0bCBjcmVhdGUgbmFtZXNwYWNlICIkbnMiIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1" + + "YmVjdGwgYXBwbHkgLWYgLQpkb25lCgojIE9ubHkgaWYgcHVsbGluZyBmcm9tIGEgcHJpdmF0ZSBy" + + "ZWdpc3RyeSAoZS5nLiwgTkdDIG52Y3IuaW8pCmV4cG9ydCBOR0NfQVBJX0tFWT0iPHlvdXIta2V5" + + "PiIKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBl" + + "c3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCBjcmVhdGUgc2Vj" + + "cmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNlcnZlcj1udmNy" + + "LmlvIFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAgLS1kb2NrZXIt" + + "cGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIgXAogICAgLS1k" + + "cnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCmRvbmUKYGBgCgpJZiB1" + + "c2luZyBwdWxsIHNlY3JldHMsIHlvdSBtdXN0IGFsc28gY29uZmlndXJlIGVhY2ggaGVsbWZpbGUg" + + "cmVsZWFzZSB0byByZWZlcmVuY2UgdGhlbS4gU2VlIFtJbWFnZSBQdWxsIFNlY3JldHNdKCNpbWFn" + + "ZS1wdWxsLXNlY3JldHMpLgoKIyMjIDIuIEF1dGhlbnRpY2F0ZSBoZWxtIHRvIHlvdXIgY2hhcnQg" + + "cmVnaXN0cnkKCkJvdGggYGRvY2tlciBsb2dpbmAgQU5EIGBoZWxtIHJlZ2lzdHJ5IGxvZ2luYCBh" + + "cmUgcmVxdWlyZWQgZm9yIE5HQy4gSGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0byBw" + + "dWxsIE9DSSBjaGFydHMsIHNvIHRoZSBoZWxtIGNyZWRlbnRpYWwgc3RvcmUgbXVzdCBiZSBhdXRo" + + "ZW50aWNhdGVkIHNlcGFyYXRlbHkuCgpgYGBiYXNoCiMgTkdDIC0tIGJvdGggY29tbWFuZHMgYXJl" + + "IHJlcXVpcmVkCmRvY2tlciBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tlbicgLXAgIiROR0Nf" + + "QVBJX0tFWSIKaGVsbSByZWdpc3RyeSBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tlbicgLXAg" + + "IiROR0NfQVBJX0tFWSIKCiMgRUNSCmF3cyBlY3IgZ2V0LWxvZ2luLXBhc3N3b3JkIC0tcmVnaW9u" + + "IDxyZWdpb24+IHwgXAogIGhlbG0gcmVnaXN0cnkgbG9naW4gLS11c2VybmFtZSBBV1MgLS1wYXNz" + + "d29yZC1zdGRpbiA8YWNjb3VudD4uZGtyLmVjci48cmVnaW9uPi5hbWF6b25hd3MuY29tCmBgYAoK" + + "PiBOb3RlOiBgaGVsbSByZWdpc3RyeSBsb2dpbmAga2VlcHMgb25seSB0aGUgbGFzdCBsb2dpbiBw" + + "ZXIgaG9zdCAobXVsdGktb3JnIGdvdGNoYSkuCj4gVGhlIHN0YWNrIGFuZCB0aGUgY2FjaGVzIHNw" + + "YW4gc2V2ZXJhbCBOR0Mgb3JncyB0aGF0IG5lZWQgZGlmZmVyZW50IGtleXMsIGJ1dCB0aGV5IGFs" + + "bAo+IGxpdmUgdW5kZXIgdGhlIG9uZSBob3N0IGBudmNyLmlvYC4gQSBzZWNvbmQgYGhlbG0gcmVn" + + "aXN0cnkgbG9naW4gbnZjci5pb2AgKG9yCj4gYGRvY2tlciBsb2dpbmApIHdpdGggYSBkaWZmZXJl" + + "bnQga2V5IHNpbGVudGx5IG92ZXJ3cml0ZXMgdGhlIGZpcnN0LCBzbyBwdWxscyBmb3IgdGhlCj4g" + + "Zmlyc3Qgb3JnIHRoZW4gZmFpbCB3aXRoIGEgbWlzbGVhZGluZyBgNDAzIEFjY2VzcyBEZW5pZWRg" + + "IChub3QgYSA0MDE6IHRoZSBhdXRoCj4gc3VjY2VlZGVkLCBpdCdzIHRoZSB3cm9uZy1vcmcga2V5" + + "KS4gSWYgeW91IHB1bGwgY2hhcnRzL2ltYWdlcyBmcm9tIG1vcmUgdGhhbiBvbmUgb3JnLAo+IGVp" + + "dGhlciByZS1ydW4gdGhlIGxvZ2luIHdpdGggdGhlIGNvcnJlY3Qga2V5IGltbWVkaWF0ZWx5IGJl" + + "Zm9yZSBlYWNoIHB1bGwsIG9yIHBhc3MKPiBgLS11c2VybmFtZSAnJG9hdXRodG9rZW4nIC0tcGFz" + + "c3dvcmQgPGtleT5gIHBlciBgaGVsbSBwdWxsYCBpbnZvY2F0aW9uIGluc3RlYWQgb2YgcmVseWlu" + + "Zwo+IG9uIHRoZSBzdG9yZWQgbG9naW4uIChQdWxsaW5nIGV2ZXJ5dGhpbmcgZnJvbSBhIHNpbmds" + + "ZSByZWdpc3RyeSBtaXJyb3IgYXZvaWRzIHRoaXMKPiBlbnRpcmVseS4pCgojIyMgMmIuIChSZWNv" + + "bW1lbmRlZCkgUHVsbCBmcm9tIGEgcmVnaXN0cnkgdGhlIGNsdXN0ZXIgYXV0aGVudGljYXRlcyB0" + + "byBhdXRvbWF0aWNhbGx5CgpJZiB5b3UgbWlycm9yIHRoZSBOVkNGIGltYWdlcyBpbnRvIGEgcmVn" + + "aXN0cnkgdGhhdCB0aGUgY2x1c3RlciBjYW4gcHVsbCBmcm9tIHdpdGhvdXQgYW4KZXhwbGljaXQg" + + "aW1hZ2UgcHVsbCBzZWNyZXQgKGZvciBleGFtcGxlLCBhIHJlZ2lzdHJ5IHdoZXJlIHRoZSBub2Rl" + + "IG9yIHdvcmtsb2FkIGlkZW50aXR5IGlzCmdyYW50ZWQgcHVsbCBhY2Nlc3MgYXV0b21hdGljYWxs" + + "eSksIHBvaW50IHRoZSBzdGFjayBhdCBpdCBhbmQgc2tpcCB0aGUgY3JlZGVudGlhbCBzdGVwcwph" + + "Ym92ZS4KCjEuIFBvaW50IHRoZSBzdGFjayBhdCB0aGUgbWlycm9yIGluIGBlbnZpcm9ubWVudHMv" + + "PGVudj4ueWFtbGA6CgogICBgYGB5YW1sCiAgIGdsb2JhbDoKICAgICBpbWFnZToKICAgICAgIHJl" + + "Z2lzdHJ5OiA8eW91ci1yZWdpc3RyeT4gICAgICAgICAgICAjIGUuZy4gcmVnaXN0cnkuZXhhbXBs" + + "ZS5jb20KICAgICAgIHJlcG9zaXRvcnk6IDxtaXJyb3Itc3ViLXBhdGg+CiAgICAgaGVsbToKICAg" + + "ICAgIHNvdXJjZXM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbmx5IGlmIHlvdSBh" + + "bHNvIG1pcnJvcmVkIHRoZSBoZWxtIGNoYXJ0cwogICAgICAgICByZWdpc3RyeTogPHlvdXItcmVn" + + "aXN0cnk+CiAgICAgICAgIHJlcG9zaXRvcnk6IDxtaXJyb3Itc3ViLXBhdGg+CiAgIGBgYAoKICAg" + + "PiBUaGUgbWFuaWZlc3QgaGFzIGEgbWl4IG9mIE9DSSBhbmQgbm9uLU9DSSBhcnRpZmFjdHMsIHNv" + + "IGNvbnZlcnQgbm9uLU9DSSBjaGFydHMgYmVmb3JlCiAgID4gbWlycm9yaW5nLiBDb250YWluZXIg" + + "aW1hZ2VzIChgbnZjci5pby8uLi5gKSBhcmUgYWxyZWFkeSBPQ0kgYW5kIG1pcnJvciBhcy1pcy4g" + + "U29tZSBIZWxtCiAgID4gY2hhcnRzLCB0aG91Z2gsIGFyZSBwdWJsaXNoZWQgdG8gYW4gYGh0dHBz" + + "Oi8vYCBIZWxtIHJlcG9zaXRvcnkgKGZvciBleGFtcGxlCiAgID4gYGhlbG0ubmdjLm52aWRpYS5j" + + "b21gKS4gVGhvc2UgYXJlIG5vdCBPQ0kgYW5kIGNhbm5vdCBiZSByZXNvbHZlZCBieSBgZ2xvYmFs" + + "LmhlbG0uc291cmNlc2AKICAgPiAoT0NJKSBvciBtaXJyb3JlZCBkaXJlY3RseS4gQmVmb3JlIHBv" + + "aW50aW5nIHRoZSBzdGFjayBhdCB5b3VyIG1pcnJvciwgY29udmVydCBlYWNoCiAgID4gYGh0dHBz" + + "Oi8vYCBjaGFydCB0byBPQ0k6IGBoZWxtIHJlcG8gYWRkYC9gaGVsbSBwdWxsYCB0aGUgYC50Z3pg" + + "LCB0aGVuCiAgID4gYGhlbG0gcHVzaCA8Y2hhcnQ+LnRneiBvY2k6Ly88eW91ci1yZWdpc3RyeT4v" + + "PG1pcnJvci1zdWItcGF0aD5gLiBPbmx5IE9DSSBjaGFydHMgY2FuIGxpdmUKICAgPiB1bmRlciBg" + + "Z2xvYmFsLmhlbG0uc291cmNlc2AuCgoyLiBTa2lwIHRoZSBjcmVkZW50aWFsIHN0ZXBzIGFib3Zl" + + "LiBXaGVuIHRoZSBjbHVzdGVyIGF1dGhlbnRpY2F0ZXMgdG8gdGhlIHJlZ2lzdHJ5CiAgIGF1dG9t" + + "YXRpY2FsbHkgKHRoZSBub2RlIG9yIHdvcmtsb2FkIGlkZW50aXR5IGhhcyBwdWxsIGFjY2Vzcyks" + + "IHRoZSBwdWxsIG5lZWRzIG5vCiAgIEt1YmVybmV0ZXMgc2VjcmV0LCBzbyB5b3UgZG8gbm90IG5l" + + "ZWQ6IHRoZSBwZXItbmFtZXNwYWNlIGBudmNyLWNyZWRzYCBmcm9tIHN0ZXAgMQogICAoc3RpbGwg" + + "Y3JlYXRlIHRoZSBuYW1lc3BhY2VzLCBqdXN0IG5vdCB0aGUgc2VjcmV0KSwgdGhlIGBnbG9iYWwu" + + "aW1hZ2VQdWxsU2VjcmV0c2AgZW50cnksCiAgIG9yIHRoZSBgZG9ja2VyIGxvZ2luYC9gaGVsbSBy" + + "ZWdpc3RyeSBsb2dpbiBudmNyLmlvYCBmcm9tIHN0ZXAgMi4KCiAgID4gT25lIHJlc2lkdWFsIGNy" + + "ZWRlbnRpYWw6IG52Y2YtYXBpIHN0aWxsIHZhbGlkYXRlcyB0aGUgdXNlciBmdW5jdGlvbiBpbWFn" + + "ZSBhdAogICA+IGBmdW5jdGlvbiBjcmVhdGVgIHZpYSB0aGUgYWNjb3VudCByZWdpc3RyeSBjcmVk" + + "ZW50aWFsLCBzbyB0aGF0IGNyZWRlbnRpYWwgbXVzdCBwb2ludCBhdAogICA+IHdoaWNoZXZlciBy" + + "ZWdpc3RyeSBob2xkcyB0aGUgdXNlciBpbWFnZSAoc2V0IGl0IHRvIHlvdXIgbWlycm9yIGlmIHRo" + + "ZSBpbWFnZSBpcyBtaXJyb3JlZAogICA+IHRoZXJlKS4KCiMjIyAzLiBTZXQgdGhlIHJvdXRlIGRv" + + "bWFpbgoKYGdsb2JhbC5kb21haW5gIHNldHMgdGhlIGhvc3RuYW1lIHN1ZmZpeCBmb3Igcm91dGVz" + + "IHN1Y2ggYXMgYGFwaS48ZG9tYWluPmAuIEl0IGRvZXMgbm90IGNvbmZpZ3VyZSB0aGUgR2F0ZXdh" + + "eSBvciBpdHMgbG9hZCBiYWxhbmNlci4gUXVlcnkgdGhlIGV4YWN0IGV4aXN0aW5nIEdhdGV3YXk6" + + "CgpgYGBiYXNoCkdBVEVXQVlfQUREUkVTUz0kKGt1YmVjdGwgZ2V0IGdhdGV3YXkgPGdhdGV3YXkt" + + "bmFtZT4gLW4gPGdhdGV3YXktbmFtZXNwYWNlPiAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVz" + + "c2VzWzBdLnZhbHVlfScpCnRlc3QgLW4gIiRHQVRFV0FZX0FERFJFU1MiCmBgYAoKVGhlIGFkZHJl" + + "c3MgbWF5IGJlIGEgaG9zdG5hbWUgb3IgSVAuIENsb3VkIHByb3ZpZGVyIGFuZCBHYXRld2F5IGNv" + + "bmZpZ3VyYXRpb24gZGV0ZXJtaW5lIHRoZSBsb2FkIGJhbGFuY2VyIHR5cGUgYW5kIGFkZHJlc3Mg" + + "Zm9ybWF0LiBUaGUgc2VsZi1tYW5hZ2VkIHN0YWNrIGRvZXMgbm90IHNlbGVjdCBlaXRoZXIuCgpG" + + "b3IgdGVtcG9yYXJ5IHRlc3Rpbmcgd2l0aG91dCBETlMsIHVzZSBhIHN0YWJsZSByZXNlcnZlZCBz" + + "dWZmaXggc3VjaCBhcyBgZ2xvYmFsLmRvbWFpbjogIm52Y2YudGVzdCJgLCBjb25uZWN0IHRvIGBH" + + "QVRFV0FZX0FERFJFU1NgLCBhbmQgc2VuZCBgSG9zdDogYXBpLm52Y2YudGVzdGAuIEZvciBwcm9k" + + "dWN0aW9uLCB1c2UgeW91ciBiYXNlIEROUyBkb21haW4gYW5kIHBvaW50IGl0cyByb3V0ZSByZWNv" + + "cmRzIHRvIGBHQVRFV0FZX0FERFJFU1NgLiBJZiB0aGUgZW5kcG9pbnQgbGF0ZXIgY2hhbmdlcywg" + + "a2VlcCBgZ2xvYmFsLmRvbWFpbmAgc3RhYmxlIGFuZCB1cGRhdGUgb25seSBETlMgb3IgdGhlIGNs" + + "aWVudCBkZXN0aW5hdGlvbi4gU2VlIEV4YW1wbGUgNCBpbiBbZXhhbXBsZXMubWRdKGV4YW1wbGVz" + + "Lm1kKS4KCiMjIyA0LiBQcmV2aWV3IGFuZCBkZXBsb3kKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxl" + + "bnYtbmFtZT4gaGVsbWZpbGUgdGVtcGxhdGUgICAjIFByZXZpZXcgcmVuZGVyZWQgbWFuaWZlc3Rz" + + "CkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIHN5bmMgICAgICAgIyBEZXBsb3kKYGBg" + + "Cgo+IFNldCBCT1RIIENhc3NhbmRyYSBwYXNzd29yZHMgaW4gdGhlIHNlY3JldHMgZmlsZS4gVGhl" + + "IHNlY3JldHMgZmlsZSBkb2N1bWVudHMKPiBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgLCBi" + + "dXQgdGhlIGNhc3NhbmRyYSBjaGFydCBoYXMgYSBzZWNvbmQgY3JlZGVudGlhbCwKPiBgY2Fzc2Fu" + + "ZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgLCB0aGF0IGRlZmF1bHRzIHRvIGBjaEBuZzNtM2AuIElm" + + "IHlvdSBzZXQgb25seQo+IGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAsIHRoZSBzZXJ2aWNl" + + "IHJvbGUga2VlcHMgdGhhdCBkZWZhdWx0IGFuZCBldmVyeSBEQi1iYWNrZWQKPiBzZXJ2aWNlIGNy" + + "YXNoLWxvb3BzIHdpdGggYEJhZCBjcmVkZW50aWFsc2Agb25jZSBpdCB0cmllcyB0byBhdXRoZW50" + + "aWNhdGUuIFNldAo+IGBjYXNzYW5kcmEuc2VydmljZVJvbGVQYXNzd29yZGAgdG8gdGhlIHNhbWUg" + + "dmFsdWUgYXMgYERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYC4KCiMjIyA1LiBEZXBsb3ltZW50" + + "IHBoYXNlcwoKSGVsbWZpbGUgZGVwbG95cyBpbiBvcmRlciB3aXRoIGRlcGVuZGVuY2llczoKCnwg" + + "UGhhc2UgfCBTZWxlY3RvciB8IFNlcnZpY2VzIHwgV2FpdCB0aW1lIHwKfC0tLS0tLS18LS0tLS0t" + + "LS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS0tfAp8IDEgfCBgcmVsZWFzZS1ncm91cD1kZXBlbmRl" + + "bmNpZXNgIHwgTkFUUywgT3BlbkJhbywgQ2Fzc2FuZHJhIHwgNS0xMCBtaW4gfAp8IDIgfCBgcmVs" + + "ZWFzZS1ncm91cD1zZXJ2aWNlc2AgfCBBUEksIFNJUywgRVNTLCBpbnZvY2F0aW9uLCBncnBjLXBy" + + "b3h5LCBub3RhcnksIGFwaS1rZXlzLCBvcHRpb25hbCBMTE0gZ2F0ZXdheS9yb3V0ZXIsIG9wdGlv" + + "bmFsIFZhbml0eSBHYXRld2F5LCBOVkNGIFVJIHdoZW4gdGhlIHN0YWNrIHBhY2thZ2UgaW5jbHVk" + + "ZXMgdGhlIGFkZG9uIHwgNS0xMCBtaW4gfAp8IDMgfCBgcmVsZWFzZS1ncm91cD1pbmdyZXNzYCB8" + + "IEdhdGV3YXkgcm91dGVzIHwgMS0yIG1pbiB8CnwgNCB8IGByZWxlYXNlLWdyb3VwPW9ic2VydmFi" + + "aWxpdHlgIHwgT2JzZXJ2YWJpbGl0eSBzdGFjayAoaWYgZW5hYmxlZCkgfCAxLTIgbWluIHwKCk1v" + + "bml0b3IgaW4gYSBzZXBhcmF0ZSB0ZXJtaW5hbDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgcG9kcyAt" + + "QSAtdwpgYGAKCiMjIyA2LiBFbmFibGUgVmFuaXR5IEdhdGV3YXkgKG9wdGlvbmFsKQoKVmFuaXR5" + + "IEdhdGV3YXkgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBhbmQgaXMgb25seSBuZWVkZWQgZm9yIGN1" + + "c3RvbWVyLWZhY2luZwpob3N0bmFtZXMgb3IgcGF0aCBtYXBwaW5ncyBpbiBmcm9udCBvZiB0aGUg" + + "c3RhbmRhcmQgTlZDRiBBUEkgYW5kIGludm9jYXRpb24Kcm91dGVzLiBJdCBpcyBhdmFpbGFibGUg" + + "b25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhlIFZhbml0eSBHYXRld2F5CmFk" + + "ZG9uLiBJZiB0aGUgZXh0cmFjdGVkIHN0YWNrIHBhY2thZ2UgZG9lcyBub3QgY29udGFpbiBhIGB2" + + "YW5pdHktZ2F0ZXdheWAKcmVsZWFzZSBhbmQgYHZhbml0eUdhdGV3YXlgIHJvdXRlIHZhbHVlcywg" + + "c2tpcCB0aGVzZSBjb21tYW5kcyBhbmQgdXNlIGEgbmV3ZXIKc3RhY2sgcGFja2FnZSB0aGF0IGlu" + + "Y2x1ZGVzIHRoZW0uCgpJZiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGUgYWRkb24sIGVu" + + "YWJsZSBpdCBpbgpgZW52aXJvbm1lbnRzLzxlbnYtbmFtZT4ueWFtbGA6CgpgYGB5YW1sCmFkZG9u" + + "czoKICB2YW5pdHlHYXRld2F5OgogICAgZW5hYmxlZDogdHJ1ZQogICAgbWFwcGluZ0NvbmZpZzog" + + "e30KYGBgCgpUaGUgZGVmYXVsdCByb3V0ZSBob3N0IGlzIGB2YW5pdHkuPGRvbWFpbj5gIGFuZCB0" + + "aGUgYmFja2VuZCBpcwpgdmFuaXR5LWdhdGV3YXkubnZjZjo4MDgwYC4gUHV0IGRlcGxveW1lbnQt" + + "c3BlY2lmaWMgaG9zdCBhbmQgcGF0aCBtYXBwaW5ncyB1bmRlcgpgYWRkb25zLnZhbml0eUdhdGV3" + + "YXkubWFwcGluZ0NvbmZpZ2AuIElmIHlvdSBuZWVkIGN1c3RvbSB2YW5pdHkgaG9zdHMgaW5zdGVh" + + "ZCBvZgpgdmFuaXR5Ljxkb21haW4+YCwgdXNlIHRoZSByb3V0ZSBob3N0bmFtZSBvdmVycmlkZXMg" + + "c3VwcG9ydGVkIGJ5IHRoZSBzdGFjawpwYWNrYWdlIGFuZCBjcmVhdGUgbWF0Y2hpbmcgRE5TIHJl" + + "Y29yZHMuCgpBZnRlciBjb25maXJtaW5nIHRoZSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBgdmFuaXR5" + + "LWdhdGV3YXlgIHJlbGVhc2UsIHByZXZpZXcgYW5kCmFwcGx5IHRoZSBzZXJ2aWNlIGFuZCByb3V0" + + "ZToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBu" + + "YW1lPXZhbml0eS1nYXRld2F5IHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1m" + + "aWxlIC0tc2VsZWN0b3IgbmFtZT12YW5pdHktZ2F0ZXdheSBzeW5jCkhFTE1GSUxFX0VOVj08ZW52" + + "LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1pbmdyZXNzIHN5bmMKYGBg" + + "CgpWZXJpZnkgdGhlIHJvdXRlIG9ubHkgd2hlbiB0aGUgYWRkb24gaXMgcHJlc2VudCBhbmQgZW5h" + + "YmxlZDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgZGVwbG95LHN2YyAtbiBudmNmIC1sIGFwcC5rdWJl" + + "cm5ldGVzLmlvL25hbWU9dmFuaXR5LWdhdGV3YXkKa3ViZWN0bCBnZXQgaHR0cHJvdXRlIC1BIHwg" + + "Z3JlcCAtaSB2YW5pdHkKY3VybCAtSCAiSG9zdDogdmFuaXR5Ljxkb21haW4+IiAiaHR0cDovLzxn" + + "YXRld2F5LWFkZHJlc3M+L2hlYWx0aCIKYGBgCgpEbyBub3QgZW5hYmxlIFZhbml0eSBHYXRld2F5" + + "IGZvciBzdGFuZGFyZCBBUEksIEFQSSBLZXlzLCBpbnZvY2F0aW9uLCBMTE0KaW52b2NhdGlvbiwg" + + "b3IgZ1JQQyB0cmFmZmljLiBUaG9zZSByb3V0ZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBiYXNlIGdh" + + "dGV3YXkKcm91dGVzLgoKIyMjIDcuIEVuYWJsZSBOVkNGIFVJIChvcHRpb25hbCkKCk5WQ0YgVUkg" + + "aXMgYW4gb3B0aW9uYWwsIGN1c3RvbWVyLWZhY2luZyBhZG1pbi1wYW5lbCBVSS4gSXQgaXMgZGlz" + + "YWJsZWQgYnkKZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhh" + + "dCBpbmNsdWRlIHRoZSBOVkNGIFVJIGFkZG9uLiBJZgp5b3VyIGV4dHJhY3RlZCBzdGFjayBwYWNr" + + "YWdlIGRvZXMgbm90IGNvbnRhaW4gYSBgbnZjZi11aWAgcmVsZWFzZSBhbmQgYG52Y2ZVaWAKcm91" + + "dGUgdmFsdWVzLCBza2lwIHRoaXMgc2VjdGlvbi4gVGhlIE5WQ0YgVUkgYWRtaW4gcGFuZWwgaXMg" + + "Y3VycmVudGx5CnVuYXV0aGVudGljYXRlZDsgZG8gbm90IGV4cG9zZSBpdCB0byB0aGUgcHVibGlj" + + "IGludGVybmV0LgoKRm9yIGVuYWJsZW1lbnQsIG5hbWVzcGFjZSBhbmQgcHVsbCBzZWNyZXQgc2V0" + + "dXAsIGFwcGx5LCBhbmQgdmVyaWZpY2F0aW9uIHN0ZXBzLApzZWUgW05WQ0YgVUkgQWRkb25dKHJl" + + "ZmVyZW5jZXMvbnZjZi11aS1hZGRvbi5tZCkuCgojIyMgOC4gSW5zdGFsbCB0aGUgc2VwYXJhdGUg" + + "Y29tcHV0ZS1wbGFuZSBzdGFjawoKVGhlIGNvbnRyb2wtcGxhbmUgc3RhY2sgZG9lcyBub3QgaW5z" + + "dGFsbCBjb21wdXRlLXBsYW5lIGNvbXBvbmVudHMuIEFmdGVyIGl0IGlzIGhlYWx0aHksIGNob29z" + + "ZSBleGFjdGx5IG9uZSBjb21wdXRlLXBsYW5lIGhhbmRvZmY6CgotIEhlbG1maWxlIHZhbHVlcyBm" + + "bG93OiBhdXRob3Igc2VwYXJhdGUgZW52aXJvbm1lbnQgZmlsZXMsIHRoZW4gcmVnaXN0ZXIgYW5k" + + "CiAgaW5zdGFsbCB3aXRoIHRoZSBjb21wdXRlLXBsYW5lIE1ha2VmaWxlLgotIENMSSBwcm9maWxl" + + "IGZsb3c6IHVzZSB0aGUgcHJvZmlsZSBnZW5lcmF0ZWQgYnkgdGhlIENMSSBjb250cm9sLXBsYW5l" + + "IGluc3RhbGwsCiAgdGhlbiBydW4gdGhlIGNvbXBsZXRlIENMSSByZWdpc3RlciBhbmQgaW5zdGFs" + + "bCBjb21tYW5kcy4KCkRvIG5vdCBtaXggdGhlc2UgaGFuZG9mZnMuIEZvbGxvdyBbU3BsaXQgQ29t" + + "cHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxs" + + "YXRpb24ubWQpCmZvciBjb21tYW5kcywgRUtTIHJvdXRpbmcsIHB1bGwgc2VjcmV0cywgdmVyaWZp" + + "Y2F0aW9uLCBhbmQgdGVhcmRvd24gb3JkZXIuCgojIyBDbGVhbiBUZWFyZG93bgoKRGVzdHJveSBl" + + "dmVyeSBjb21wdXRlIHBsYW5lIGJlZm9yZSB0aGUgY29udHJvbCBwbGFuZSwgdXNpbmcgdGhlIHRl" + + "YXJkb3duIGZvcgp0aGUgc2FtZSBoYW5kb2ZmOyBzZWUgW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5z" + + "dGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kI3RlYXJk" + + "b3duKS4KClNjb3BlOiBPbmx5IGRlc3Ryb3kgcmVsZWFzZXMgbWFuYWdlZCBieSB0aGlzIGNvbnRy" + + "b2wtcGxhbmUgaGVsbWZpbGUgc3RhY2suIFRoZSBOVkNGIHJlbGVhc2VzIGFyZTogYG5hdHNgLCBg" + + "b3BlbmJhby1zZXJ2ZXJgLCBgY2Fzc2FuZHJhYCwgYGFwaS1rZXlzYCwgYHNpc2AsIGBhcGlgLCBg" + + "aW52b2NhdGlvbi1zZXJ2aWNlYCwgYGdycGMtcHJveHlgLCBgZXNzLWFwaWAsIGBub3Rhcnktc2Vy" + + "dmljZWAsIG9wdGlvbmFsIGB2YW5pdHktZ2F0ZXdheWAsIGBudmNmLXVpYCwgYGFkbWluLWlzc3Vl" + + "ci1wcm94eWAsIGFuZCBgaW5ncmVzc2A7IGBjZXJ0LW1hbmFnZXJgIGlzIGluY2x1ZGVkIG9ubHkg" + + "d2hlbiBgY2VydE1hbmFnZXIuZW5hYmxlZDogdHJ1ZWAuIFRoZSBjb250cm9sLXBsYW5lIG5hbWVz" + + "cGFjZSBpbnZlbnRvcnkgYWxzbyBpbmNsdWRlcyBgY2VydC1tYW5hZ2VyYCwgYnV0IGRlZmF1bHQg" + + "bmFtZXNwYWNlIGNsZWFudXAgcHJlc2VydmVzIGl0LiBOYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRv" + + "ZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEV4dGVybmFsIGNlcnQtbWFuYWdlciBt" + + "dXN0IHVzZSBgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgOyBvdGhlcndpc2UgSGVsbWZpbGUg" + + "dHJlYXRzIHRoZSByZWxlYXNlIGFzIHN0YWNrLW1hbmFnZWQuIERvIG5vdCBkZWxldGUgb3RoZXIg" + + "aGVsbSByZWxlYXNlcyBvciBuYW1lc3BhY2VzIG9uIHRoZSBjbHVzdGVyLgoKQmVmb3JlIGNvbnRy" + + "b2wtcGxhbmUgZGVzdHJveSwgaWRlbnRpZnkgd2hldGhlciBjZXJ0LW1hbmFnZXIgaXMgZXh0ZXJu" + + "YWwuIEZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlIGBjZXJ0" + + "TWFuYWdlci5lbmFibGVkOiBmYWxzZWAgYW5kIGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBhbiBp" + + "bnRlbmRlZCBzdGFjay1tYW5hZ2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUgYGNlcnRNYW5hZ2Vy" + + "LmVuYWJsZWQ6IHRydWVgLCB2ZXJpZnkgbWF0Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1ldGFk" + + "YXRhIGFuZCBhYm9ydCBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQgZXZpZGVuY2UuIFByZXNlcnZl" + + "IHRoZSBuYW1lc3BhY2UgYnkgZGVmYXVsdDsgb25seSBwbGFuIGl0cyByZW1vdmFsIGFmdGVyIHZl" + + "cmlmeWluZyBuYW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQgZ2V0dGluZyBleHBsaWNpdCBjb25maXJt" + + "YXRpb24uCgojIyMgU3RhbmRhcmQgdGVhcmRvd24KClJ1biBmcm9tIGluc2lkZSB0aGUgYG52Y2Yt" + + "c2VsZi1tYW5hZ2VkLXN0YWNrL2AgZGlyZWN0b3J5OgoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVu" + + "di1uYW1lPiBoZWxtZmlsZSBkZXN0cm95CmBgYAoKIyMjIERlbGV0ZSBuYW1lc3BhY2VzCgpgYGBi" + + "YXNoCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMg" + + "ZXNzIHNpcyBudmNmLXVpIHZhdWx0LXN5c3RlbTsgZG8KICBrdWJlY3RsIGRlbGV0ZSBuYW1lc3Bh" + + "Y2UgIiRucyIgLS1pZ25vcmUtbm90LWZvdW5kCmRvbmUKYGBgCgojIyMgVmVyaWZ5IGNsZWFuCgpg" + + "YGBiYXNoCmt1YmVjdGwgZ2V0IG5zIHwgZ3JlcCAtRSAnKGNhc3NhbmRyYXxuYXRzfHZhdWx0fG52" + + "Y2Z8YXBpLWtleXN8ZXNzfHNpcyknCiMgU2hvdWxkIHJldHVybiBlbXB0eQpgYGAKCiMjIE92ZXJy" + + "aWRpbmcgSGVsbSBDaGFydCBWYWx1ZXMKCiMjIyBFbnZpcm9ubWVudCBmaWxlIChsaW1pdGVkKQoK" + + "V29ya3Mgb25seSBmb3Iga2V5cyB0aGF0IGBnbG9iYWwueWFtbC5nb3RtcGxgIHByb3BhZ2F0ZXMg" + + "KGUuZy4sIGBjYXNzYW5kcmEucmVwbGljYUNvdW50YCwgYGdsb2JhbC5zdG9yYWdlQ2xhc3NgLCBg" + + "Z2xvYmFsLmltYWdlYCkuCgojIyMgUmVsZWFzZSB2YWx1ZXMgYmxvY2sgKGFueSBjaGFydCB2YWx1" + + "ZSkKCkVkaXQgdGhlIHJlbGVhc2UgaW4gYGhlbG1maWxlLmQvKi55YW1sLmdvdG1wbGAgYW5kIGFk" + + "ZCBhIGB2YWx1ZXM6YCBibG9jay4gSW4gdGhlIGV4YW1wbGVzIGJlbG93LCBgPHByaXZhdGUtdmFs" + + "dWVzPmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUg" + + "c3RhY2sgcm9vdC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNzYW5kcmEKICB2ZXJzaW9uOiAwLjguMAog" + + "IGNvbmRpdGlvbjogY2Fzc2FuZHJhLmVuYWJsZWQKICBuYW1lc3BhY2U6IGNhc3NhbmRyYS1zeXN0" + + "ZW0KICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1w" + + "bAogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52ICJIRUxNRklMRV9FTlYi" + + "IH19LXNlY3JldHMueWFtbAogICAgLSBjYXNzYW5kcmE6CiAgICAgICAgcmVzb3VyY2VzOgogICAg" + + "ICAgICAgbGltaXRzOgogICAgICAgICAgICBjcHU6ICI4IgogICAgICAgICAgICBtZW1vcnk6IDgx" + + "OTJNaQogICAgICAgICAgcmVxdWVzdHM6CiAgICAgICAgICAgIGNwdTogIjIiCiAgICAgICAgICAg" + + "IG1lbW9yeTogNDA5Nk1pCmBgYAoKWUFNTCBtZXJnZSBnb3RjaGE6IFdoZW4gYSByZWxlYXNlIHVz" + + "ZXMgYDw8OiAqZGVwZW5kZW5jeWAgb3IgYGluaGVyaXRgLCBzcGVjaWZ5aW5nIGB2YWx1ZXM6YCBy" + + "ZXBsYWNlcyB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgbGlzdC4gWW91IG11c3QgcmUtaW5jbHVkZSBg" + + "Z2xvYmFsLnlhbWwuZ290bXBsYCBhbmQgdGhlIHNlY3JldHMgZmlsZS4KCiMjIyBQcmV2aWV3IGFu" + + "ZCBhcHBseSBhIHNpbmdsZSByZWxlYXNlCgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxt" + + "ZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlICAjIFByZXZpZXcKSEVMTUZJ" + + "TEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgc3luYyAgICAg" + + "ICMgQXBwbHkKYGBgCgojIyBJbWFnZSBQdWxsIFNlY3JldHMKClRoZXJlIGFyZSB0aHJlZSBkaXN0" + + "aW5jdCBjcmVkZW50aWFsIHR5cGVzLiBEbyBub3QgY29uZmxhdGUgdGhlbSwgYW5kIG1pbmQgdGhl" + + "CmZvcm1hdCBydWxlIGJlbG93ICh0d28gb2YgdGhlbSBmYWlsIGV2ZW4gd2l0aCB0aGUgY29ycmVj" + + "dCBrZXkgaWYgdGhlIGZvcm1hdCBpcyB3cm9uZyk6Cgp8IHwgQ29udHJvbCBQbGFuZSBQdWxsIFNl" + + "Y3JldHMgfCBBUEkgQm9vdHN0cmFwIFJlZ2lzdHJ5IENyZWRzIHwgU2lkZWNhciBJbWFnZS1QdWxs" + + "IFNlY3JldCB8CnwtLS18LS0tfC0tLXwtLS18CnwgUHVycG9zZSB8IEs4cyBwdWxscyBOVkNGIHNl" + + "cnZpY2UgaW1hZ2VzIHwgbnZjZi1hcGkgdmFsaWRhdGVzIHRoZSB1c2VyIGZ1bmN0aW9uIGltYWdl" + + "IGF0IGBmdW5jdGlvbiBjcmVhdGVgIHwgbnZjZi1hcGkgcHVsbHMgdGhlIHBsYXRmb3JtIHNpZGVj" + + "YXJzIGluamVjdGVkIGludG8gZXZlcnkgd29ya2VyIHBvZCB8CnwgV2hlcmUgfCBLOHMgYGRvY2tl" + + "ci1yZWdpc3RyeWAgU2VjcmV0cyArIEt5dmVybm8gQ2x1c3RlclBvbGljeSB8IGA8cHJpdmF0ZS12" + + "YWx1ZXM+LzxlbnY+LXNlY3JldHMueWFtbGAgKGFjY291bnQtYm9vdHN0cmFwKSB8IGBOVkNGX0FQ" + + "SV9TSURFQ0FSU19JTUFHRV9QVUxMX1NFQ1JFVGAgaW4gYDxlbnY+LXNlY3JldHMueWFtbGAgLT4g" + + "T3BlbkJhbyBgc2VydmljZXMvbnZjZi1hcGkva3Yvc2lkZWNhcnMvaW1hZ2UtcHVsbC1zZWNyZXRg" + + "IChmaWVsZCBgc2VjcmV0YCkgfAp8IEZvcm1hdCB8IHN0YW5kYXJkIGAuZG9ja2VyY29uZmlnanNv" + + "bmAgKGt1YmVjdGwgYnVpbGRzIGl0IGZvciB5b3UpIHwgYGJhc2U2NCgiJG9hdXRodG9rZW46PGtl" + + "eT4iKWAgfCBgYmFzZTY0KCIkb2F1dGh0b2tlbjo8a2V5PiIpYCB8Cgo+IE5vdGU6IHRoZSBhY2Nv" + + "dW50LWJvb3RzdHJhcCBjcmVkIGFuZCB0aGUgc2lkZWNhciBzZWNyZXQgYXJlIE5PVCBhCj4gZG9j" + + "a2VyY29uZmlnanNvbi4gVGhlIHNlY3JldHMgdGVtcGxhdGUgc2hpcHMgdGhlIHBsYWNlaG9sZGVy" + + "Cj4gYFJFUExBQ0VfV0lUSF9CQVNFNjRfRE9DS0VSX0NSRURFTlRJQUxgLCB3aGljaCByZWFkcyBh" + + "cyAiYmFzZTY0IG9mIGEgZG9ja2VyY29uZmlnanNvbi4iCj4gSXQgaXNuJ3QuIEJvdGggdmFsdWVz" + + "IGFyZSBjb25zdW1lZCBhcyBhIHJhdyBkb2NrZXIgYGF1dGhgIHN0cmluZzogbnZjZi1hcGkgdGFr" + + "ZXMgdGhlCj4gdmFsdWUgdmVyYmF0aW0gYW5kIGRyb3BzIGl0IGludG8gdGhlIGBhdXRoYCBmaWVs" + + "ZCBvZiB0aGUgZG9ja2VyY29uZmlnIGl0IGJ1aWxkcy4gU28gdGhlCj4gdmFsdWUgbXVzdCBiZSBg" + + "YmFzZTY0KCIkb2F1dGh0b2tlbjo8a2V5PiIpYCwgZS5nLiBgcHJpbnRmICckb2F1dGh0b2tlbjol" + + "cycgIiRLRVkiIHwgb3BlbnNzbCBiYXNlNjQgLUFgLAo+IG5vdCBgYmFzZTY0KDxkb2NrZXJjb25m" + + "aWdqc29uPilgLgo+Cj4gLSBXcm9uZyBhY2NvdW50LWJvb3RzdHJhcCB2YWx1ZTogYGZ1bmN0aW9u" + + "IGNyZWF0ZWAgcmV0dXJucwo+ICAgIGA0MDAgIm11c3QgYmUgYmFzZTY0IGVuY29kZWQgdXNlcm5h" + + "bWU6cGFzc3dvcmQgZm9ybWF0ImAuCj4gLSBXcm9uZyBzaWRlY2FyIHZhbHVlOiBldmVyeSB3b3Jr" + + "ZXIncyBzaWRlY2FyIHB1bGwgZ2V0cyBhIG1hbGZvcm1lZCBjcmVkZW50aWFsIGFuZAo+ICAgIGA0" + + "MDNgcywgcmVnYXJkbGVzcyBvZiB3aGljaCBrZXkgaXMgaW5zaWRlLiBUaGUgc3ltcHRvbSBsb29r" + + "cyBsaWtlIGEgYmFkIG9yIHdyb25nLW9yZwo+ICAgIGtleSwgYnV0IHRoZSBrZXkgaXMgZmluZSBh" + + "bmQgdGhlIGVuY29kaW5nIGlzIHRoZSBidWcuIFRvIHJlcGFpciBhbiBhbHJlYWR5LWluc3RhbGxl" + + "ZAo+ICAgIHN0YWNrIHdpdGhvdXQgYSBmdWxsIHJlLXN5bmM6Cj4KPiAgICBgYGBiYXNoCj4gICAg" + + "QVVUSD0kKHByaW50ZiAnJG9hdXRodG9rZW46JXMnICIkS0VZIiB8IG9wZW5zc2wgYmFzZTY0IC1B" + + "KQo+ICAgIGJhbyBrdiBwdXQgc2VydmljZXMvbnZjZi1hcGkva3Yvc2lkZWNhcnMvaW1hZ2UtcHVs" + + "bC1zZWNyZXQgc2VjcmV0PSIkQVVUSCIKPiAgICAjIGlmIE5WSURJQSBDbG91ZCBUYXNrcyBpcyBl" + + "bmFibGVkLCByZXBlYXQgZm9yIHNlcnZpY2VzL252Y3QtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1" + + "bGwtc2VjcmV0Cj4gICAga3ViZWN0bCByb2xsb3V0IHJlc3RhcnQgLW4gbnZjZiBkZXBsb3kvbnZj" + + "Zi1hcGkgICAjIHBpY2tzIHVwIHRoZSBuZXcgc2lkZWNhciBjcmVkCj4gICAgYGBgCj4KPiBOb3Rl" + + "IChtdWx0aS1vcmcpOiB3aGVuIHB1bGxpbmcgZnJvbSBOR0MgKG5vdCBhIG1pcnJvciksIHRoZSB1" + + "c2VyIGZ1bmN0aW9uIGltYWdlIGFuZAo+IHRoZSBwbGF0Zm9ybSBzaWRlY2FycyBvZnRlbiBsaXZl" + + "IGluIGRpZmZlcmVudCBudmNyLmlvIG9yZ3MsIGVhY2ggbmVlZGluZyBhIGRpZmZlcmVudAo+IGtl" + + "eSwgc28gdGhlIGFjY291bnQtYm9vdHN0cmFwIGNyZWQgKGZ1bmN0aW9uIGltYWdlKSBhbmQgdGhl" + + "IHNpZGVjYXIgc2VjcmV0IChzaWRlY2FycykKPiBhcmUgZnJlcXVlbnRseSB0d28gZGlmZmVyZW50" + + "IGtleXMuIE1pcnJvcmluZyBldmVyeXRoaW5nIGludG8gYSBzaW5nbGUgcmVnaXN0cnkgdGhlCj4g" + + "Y2x1c3RlciBhdXRoZW50aWNhdGVzIHRvIGF1dG9tYXRpY2FsbHkgY29sbGFwc2VzIHRoaXMgdG8g" + + "b25lIGNyZWRlbnRpYWwgcGF0aC4KCiMjIyBDb25maWd1cmluZyB3aXRoIEt5dmVybm8gKHJlY29t" + + "bWVuZGVkKQoKVXNlIGEgS3l2ZXJubyBtdXRhdGluZyBhZG1pc3Npb24gcG9saWN5IHRvIGF1dG9t" + + "YXRpY2FsbHkgaW5qZWN0IGBpbWFnZVB1bGxTZWNyZXRzYCBpbnRvIGFsbCBwb2RzIGluIE5WQ0Yg" + + "bmFtZXNwYWNlcy4gVGhpcyB3b3JrcyB1bmlmb3JtbHkgZm9yIGFsbCBjaGFydHMgLS0gbm8gcGVy" + + "LWNoYXJ0IGNvbmZpZ3VyYXRpb24gb3IgaGVsbWZpbGUgbW9kaWZpY2F0aW9ucyBuZWVkZWQuCgpg" + + "YGBiYXNoCiMgMS4gSW5zdGFsbCBLeXZlcm5vCmhlbG0gcmVwbyBhZGQga3l2ZXJubyBodHRwczov" + + "L2t5dmVybm8uZ2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUKaGVsbSBpbnN0YWxs" + + "IGt5dmVybm8ga3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUtbmFtZXNwYWNlCgoj" + + "IDIuIENyZWF0ZSBwdWxsIHNlY3JldCBpbiBlYWNoIG5hbWVzcGFjZQpleHBvcnQgTkdDX0FQSV9L" + + "RVk9Ijx5b3VyLWtleT4iCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52" + + "Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVj" + + "dGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tl" + + "ci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwK" + + "ICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIk" + + "bnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpk" + + "b25lCgojIDMuIEFwcGx5IHRoZSBLeXZlcm5vIENsdXN0ZXJQb2xpY3kKa3ViZWN0bCBhcHBseSAt" + + "ZiBreXZlcm5vLWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAKClRoZSBwb2xpY3kgbXV0" + + "YXRlcyBldmVyeSBwb2QgYXQgYWRtaXNzaW9uIHRpbWUsIGFkZGluZyBgaW1hZ2VQdWxsU2VjcmV0" + + "czogW3tuYW1lOiBudmNyLWNyZWRzfV1gLiBWZXJpZnkgd2l0aDoKCmBgYGJhc2gKa3ViZWN0bCBn" + + "ZXQgcG9kIC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gLW8ganNvbnBhdGg9J3suc3BlYy5pbWFn" + + "ZVB1bGxTZWNyZXRzfScKIyBTaG91bGQgc2hvdzogW3sibmFtZSI6Im52Y3ItY3JlZHMifV0KYGBg" + + "CgpOb3QgbmVlZGVkIGlmIHVzaW5nIGEgQ1NQIGJ1aWx0LWluIGNyZWRlbnRpYWwgaGVscGVyIChl" + + "LmcuLCBFQ1Igd2l0aCBJQU0gbm9kZSByb2xlcykuCgpGb3IgdGhlIEt5dmVybm8gcG9saWN5IFlB" + + "TUwgYW5kIHB1bGwgc2VjcmV0IGNyZWF0aW9uIHNjcmlwdCwgc2VlIFtyZWZlcmVuY2VzL3B1bGwt" + + "c2VjcmV0cy5tZF0ocmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWQpLgoKIyMgRGVidWdnaW5nCgoj" + + "IyMgUXVpY2sgc3RhdHVzIGNoZWNrCgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLW8gd2lk" + + "ZSAgICAgICAgICAgICAgICAgICAgICAgICMgQWxsIHBvZHMKaGVsbSBsaXN0IC1BICAgICAgICAg" + + "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWxsIGhlbG0gcmVsZWFzZXMKa3ViZWN0" + + "bCBnZXQgZXZlbnRzIC1uIDxucz4gLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcgICMgUmVjZW50" + + "IGV2ZW50cwpgYGAKCiMjIyBDb21tb24gZmFpbHVyZSBwYXR0ZXJucwoKfCBTeW1wdG9tIHwgQ2F1" + + "c2UgfCBGaXggfAp8LS0tLS0tLS0tfC0tLS0tLS18LS0tLS18CnwgYEltYWdlUHVsbEJhY2tPZmZg" + + "ICsgYDQwMSBVbmF1dGhvcml6ZWRgIHwgTWlzc2luZyBvciB3cm9uZyBwdWxsIHNlY3JldCB8IENo" + + "ZWNrIHNlY3JldCBleGlzdHMsIGNoZWNrIFNBIGhhcyBpbWFnZVB1bGxTZWNyZXRzIHwKfCBgSW5p" + + "dDowLzFgIHN0dWNrIG9uIHNlcnZpY2UgcG9kcyB8IFZhdWx0LWFnZW50IHdhaXRpbmcgZm9yIE9w" + + "ZW5CYW8gfCBDaGVjayBPcGVuQmFvIHBvZHMgKyBtaWdyYXRpb24gam9iIHN0YXR1cyB8CnwgYElu" + + "aXQ6MC8xYCArIGB2YXVsdC1hZ2VudC1pbml0YCBzaG93cyBgYXV0aC9qd3QvbG9naW5gIC0+IGA0" + + "MDAgLi4uIG5vIGtub3duIGtleSBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkIHRoZSB0b2tlbiBzaWdu" + + "YXR1cmVgIHwgT3BlbkJhbyBKV1QgYXV0aCBjb25maWd1cmVkIHdpdGggYSBzdGF0aWMgcHVia2V5" + + "IGluc3RlYWQgb2YgdGhlIGNsdXN0ZXIncyBsaXZlIEpXS1MgLS0gdGhlIGJhc2UgZGVmYXVsdCBg" + + "b3BlbmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkOiBmYWxzZWAuIENvbW1v" + + "biBvbiBBS1MgLyBhbnkgT0lEQy1pc3N1ZXIgY2x1c3RlciB8IFNldCBgb3BlbmJhby5taWdyYXRp" + + "b25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkOiB0cnVlYCwgZGVsZXRlIGpvYiBgb3BlbmJhby1z" + + "ZXJ2ZXItbWlncmF0aW9uc2AsIHJlLXN5bmMgYG9wZW5iYW8tc2VydmVyYC4gU2VlIFtyZWZlcmVu" + + "Y2VzL2RlYnVnZ2luZy5tZF0ocmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQpICJJbml0OjAvMSBTdHVj" + + "ayIgZml4ICM0LiB8CnwgYE9PTUtpbGxlZGAgb24gQ2Fzc2FuZHJhIHwgRGVmYXVsdCByZXNvdXJj" + + "ZXMgdG9vIHNtYWxsIHwgT3ZlcnJpZGUgYGNhc3NhbmRyYS5yZXNvdXJjZXNgIHZpYSB2YWx1ZXMg" + + "YmxvY2sgfAp8IERCLWJhY2tlZCBzZXJ2aWNlcyBjcmFzaC1sb29wIGBCYWQgY3JlZGVudGlhbHNg" + + "IGNvbm5lY3RpbmcgdG8gQ2Fzc2FuZHJhIHwgU2VjcmV0cyBmaWxlIHNldCBvbmx5IGBERUZBVUxU" + + "X0NBU1NBTkRSQV9QQVNTV09SRGA7IGBjYXNzYW5kcmEuc2VydmljZVJvbGVQYXNzd29yZGAgc3Rp" + + "bGwgZGVmYXVsdHMgdG8gYGNoQG5nM20zYCB8IFNldCBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFz" + + "c3dvcmRgIGluIHRoZSBzZWNyZXRzIGZpbGUgZXF1YWwgdG8gYERFRkFVTFRfQ0FTU0FORFJBX1BB" + + "U1NXT1JEYCwgdGhlbiByZS1zeW5jIGNhc3NhbmRyYSArIHRoZSBEQi1iYWNrZWQgc2VydmljZXMg" + + "fAp8IGBQZW5kaW5nYCBwb2RzIHwgTm9kZSBzZWxlY3RvciBtaXNtYXRjaCBvciBubyBzdG9yYWdl" + + "IGNsYXNzIHwgYGt1YmVjdGwgZGVzY3JpYmUgcG9kYCwgY2hlY2sgbGFiZWxzIGFuZCBzdG9yYWdl" + + "IHwKfCBIZWxtIHJlbGVhc2UgaW4gYGZhaWxlZGAgc3RhdGUgfCBGaXJzdCBpbnN0YWxsIGZhaWxl" + + "ZCBwYXJ0d2F5IHwgYGhlbG1maWxlIGRlc3Ryb3lgIHRoZSByZWxlYXNlLCB0aGVuIGBzeW5jYCBh" + + "Z2FpbiB8CnwgQWNjb3VudCBib290c3RyYXAgdGltZW91dCB8IFdyb25nIGJhc2U2NCBjcmVkZW50" + + "aWFscyBpbiBzZWNyZXRzIGZpbGUgfCBDaGVjayBga3ViZWN0bCBsb2dzIGpvYi9udmNmLWFwaS1h" + + "Y2NvdW50LWJvb3RzdHJhcCAtbiBudmNmYCB8CnwgZnVuY3Rpb24gLyBhY2NvdW50IGNhbGxzIHJl" + + "dHVybiBgNDA0IFVua25vd24gY2xpZW50X2lkYCB8IFRoZSBhY2NvdW50LWJvb3RzdHJhcCBwb3N0" + + "LWluc3RhbGwgaG9vayBuZXZlciByYW46IHRoZSBgYXBpYCByZWxlYXNlIGluc3RhbGwgZmFpbGVk" + + "LCBvciB3YXMgcmVwYWlyZWQgd2l0aCBsaXZlIHBhdGNoZXMgaW5zdGVhZCBvZiBhIGNsZWFuIHJl" + + "LXN5bmMsIHNvIHRoZSBob29rIChhbmQgdGhlIGFjY291bnQpIHdhcyBza2lwcGVkIHwgVmVyaWZ5" + + "IGFuZCByZS1ydW4gdGhlIGhvb2s7IHNlZSBbVmVyaWZ5IHRoZSBhY2NvdW50IGJvb3RzdHJhcCBy" + + "YW5dKCN2ZXJpZnktdGhlLWFjY291bnQtYm9vdHN0cmFwLXJhbikgfAp8IFNlcnZpY2VzIGZhaWwg" + + "dG8gcmVhZCB2YXVsdCBzZWNyZXRzOyBgc2VjcmV0cy5qc29uYCBub3QgZm91bmQgfCBWYXVsdCBw" + + "YXRoIGhhcmRjb2RlZCB0byBgL2hvbWUvYXBwL3ZhdWx0L2AgaW4gYF9oZWxwZXJzLnRwbGA7IHRo" + + "ZSBydW50aW1lIHJlc29sdmVzIHRoZSBtb3VudGVkIHBhdGggcmVsYXRpdmUgdG8gdGhlIHdvcmtp" + + "bmcgZGlyZWN0b3J5IGFuZCBkcm9wcyB0aGUgbGVhZGluZyBgL2AgfCBPdmVycmlkZSBgcG9kQW5u" + + "b3RhdGlvbnNgIGFuZCBzZXQgYEpBVkFfVE9PTF9PUFRJT05TOiAiLUR1c2VyLmRpcj0vImAgaW4g" + + "cmVsZWFzZSB2YWx1ZXMgfAp8IE5BVFMgY29ubmVjdGlvbiBmYWlscyBhdCBzdGFydHVwOyBwbGFj" + + "ZW1lbnQgdGFnIG1pc21hdGNoIHwgTkFUUyBzZXJ2ZXIgdGFncyBoYXJkY29kZWQgdG8gYGRjOm5j" + + "cGA7IGFwcCBkZXJpdmVzIHRhZyBmcm9tIGBBV1NfUkVHSU9OYCAoZS5nLiwgYHVzLWdvdi13ZXN0" + + "LTFgKSB8IFNldCBgQVdTX1JFR0lPTj1uY3BgIGFuZCBgTlZDRl9BV1NfUkVHSU9OPW5jcGAgaW4g" + + "ZW52IGNvbmZpZyB8CgojIyMgVmVyaWZ5IHRoZSBhY2NvdW50IGJvb3RzdHJhcCByYW4KClRoZSBk" + + "ZWZhdWx0IGFjY291bnQgaXMgY3JlYXRlZCBieSBhICoqYHBvc3QtaW5zdGFsbGAgaG9vayBvbiB0" + + "aGUgYGFwaWAgcmVsZWFzZSoqCihgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwYCBpbiBg" + + "bnZjZmApLiBCZWNhdXNlIGl0IGlzIGEgcG9zdC1pbnN0YWxsIGhvb2ssIGl0IG9ubHkKZmlyZXMg" + + "b24gYSBzdWNjZXNzZnVsIGBhcGlgIGluc3RhbGwuIElmIHRoYXQgaW5zdGFsbCBmYWlsZWQgYW5k" + + "IHlvdSByZXBhaXJlZCBpdCB3aXRoIGxpdmUKcGF0Y2hlcyAocmF0aGVyIHRoYW4gYSBjbGVhbiBy" + + "ZS1zeW5jKSwgdGhlIGhvb2sgbmV2ZXIgcnVucywgbm8gYWNjb3VudCBpcyBjcmVhdGVkLCBhbmQK" + + "ZXZlcnkgc3Vic2VxdWVudCBmdW5jdGlvbi9hY2NvdW50IGNhbGwgcmV0dXJucyBhIGNyeXB0aWMg" + + "YDQwNCBVbmtub3duIGNsaWVudF9pZGAgd2l0aApub3RoaW5nIG9idmlvdXNseSB3cm9uZyBpbiB0" + + "aGUgcnVubmluZyBwb2RzLgoKVmVyaWZ5IGl0IHJhbiBhZnRlciB0aGUgZmlyc3Qgc3luYzoKCmBg" + + "YGJhc2gKa3ViZWN0bCBnZXQgam9iIC1uIG52Y2YgbnZjZi1hcGktYWNjb3VudC1ib290c3RyYXAg" + + "XAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5zdWNjZWVkZWR9JyAgICMgZXhwZWN0IDEKYGBgCgpJ" + + "ZiB0aGUgam9iIGlzIGFic2VudCBvciBgMGAsIHJlLXJ1biBpdCBieSByZS1zeW5jaW5nIHRoZSBg" + + "YXBpYCByZWxlYXNlIHNvIHRoZSBob29rIGZpcmVzCmFnYWluIChkZWxldGUgdGhlIHByaW9yIGpv" + + "YiBmaXJzdCBpZiBpdCBsaW5nZXJzIGluIGEgY29tcGxldGVkL2ZhaWxlZCBzdGF0ZSBhbmQgYmxv" + + "Y2tzIHRoZQpob29rKToKCmBgYGJhc2gKa3ViZWN0bCBkZWxldGUgam9iIC1uIG52Y2YgbnZjZi1h" + + "cGktYWNjb3VudC1ib290c3RyYXAgLS1pZ25vcmUtbm90LWZvdW5kCkhFTE1GSUxFX0VOVj08ZW52" + + "PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9YXBpIHN5bmMKa3ViZWN0bCBsb2dzIC1uIG52Y2Yg" + + "am9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwICAgIyBjb25maXJtIHRoZSBhY2NvdW50IHdh" + + "cyBjcmVhdGVkCmBgYAoKIyMgQWRkaXRpb25hbCBSZXNvdXJjZXMKCi0gSW5zdGFsbGF0aW9uOiBb" + + "ZXhhbXBsZXMubWRdKGV4YW1wbGVzLm1kKSwgdGhlIFtDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXSho" + + "dHRwczovL2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFt" + + "cGxlKSwgYW5kIFtzcGxpdCBjb21wdXRlLXBsYW5lIHdvcmtmbG93c10ocmVmZXJlbmNlcy9jb21w" + + "dXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkKLSBPcGVyYXRpb25zOiBbSGVsbWZpbGUgc3RydWN0" + + "dXJlXShyZWZlcmVuY2VzL2hlbG1maWxlLXN0cnVjdHVyZS5tZCksIFtwdWxsIHNlY3JldHNdKHJl" + + "ZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKSwgYW5kIFtkZWJ1Z2dpbmddKHJlZmVyZW5jZXMvZGVi" + + "dWdnaW5nLm1kKQoKQWZ0ZXIgZGVwbG95bWVudCwgdXNlIHRoZSBgbnZjZi1zZWxmLW1hbmFnZWQt" + + "Y2xpYCBza2lsbCB0byBjcmVhdGUgZnVuY3Rpb25zLCBjcmVhdGUgdGFza3MsIG1hbmFnZSBBUEkg" + + "a2V5cywgYW5kIGludm9rZSBlbmRwb2ludHMuClBLBwgRwxSTSWIAAEliAABQSwMEFAAIAAAAAAAh" + + "AAAAAAAAAAAAAAAAADQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9ldmFs" + + "cy9ldmFscy5qc29uVVQFAAEAps4SWwogIHsKICAgICJpZCI6ICJHMS12YWxpZGF0ZS10b29sLXZl" + + "cnNpb25zIiwKICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIHRoZSBOVkNGIHNlbGYtbWFuYWdlZCBz" + + "dGFjayBvbiBteSBBV1MgRUtTIGNsdXN0ZXIiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Yt" + + "c2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2Vu" + + "dCdzIGZpcnN0IG9wZXJhdGlvbmFsIHN0ZXAgYWZ0ZXIgcmVhZGluZyB0aGUgc2tpbGwgd2FzIHRv" + + "IHZhbGlkYXRlIGFsbCByZXF1aXJlZCB0b29sIHZlcnNpb25zOiBoZWxtZmlsZSAobXVzdCBiZSAx" + + "LjEueCwgbm90IDEuMi4wKSwgaGVsbSAoPj0gMy4xMiksIGhlbG0tZGlmZiBwbHVnaW4gKD49IDMu" + + "MTEpLCBhbmQga3ViZWN0bCAoY2xpZW50IHdpdGhpbiAxIG1pbm9yIG9mIGNsdXN0ZXIpLiBJdCBk" + + "aWQgbm90IHByb2NlZWQgdG8gaGVsbWZpbGUgc3luYyB1bnRpbCBhbGwgdmVyc2lvbnMgd2VyZSB2" + + "YWxpZGF0ZWQuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCBy" + + "ZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRh" + + "a2luZyBhbnkgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG1maWxlIC0tdmVyc2lv" + + "bicgYW5kIHZlcmlmaWVkIGl0IGlzIDEuMS54IChub3QgMS4yLjAsIHdoaWNoIHJlbW92ZWQgc2Vx" + + "dWVudGlhbCBtb2RlKSIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHZlcnNpb24nIGFuZCB2" + + "ZXJpZmllZCBpdCBpcyA+PSAzLjEyIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG0gcGx1Z2lu" + + "IGxpc3QnIGFuZCB2ZXJpZmllZCBoZWxtLWRpZmYgPj0gMy4xMSBpcyBpbnN0YWxsZWQiLAogICAg" + + "ICAiVGhlIGFnZW50IHJhbiAna3ViZWN0bCB2ZXJzaW9uJyB0byBjaGVjayBjbGllbnQvc2VydmVy" + + "IHZlcnNpb24gY29tcGF0aWJpbGl0eSIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm9jZWVk" + + "IHRvIGhlbG1maWxlIHN5bmMgdW50aWwgYWxsIHZlcnNpb24gY2hlY2tzIHBhc3NlZCIKICAgIF0K" + + "ICB9LAogIHsKICAgICJpZCI6ICJHMi10ZW1wbGF0ZS1iZWZvcmUtc3luYyIsCiAgICAicXVlc3Rp" + + "b24iOiAiUXVpY2ssIGp1c3QgcnVuIGhlbG1maWxlIHN5bmMgZm9yIG15IE5WQ0Ygc3RhY2ssIHNr" + + "aXAgYWxsIHRoZSBjaGVja3MiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5h" + + "Z2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIkRlc3BpdGUgdGhlIHVzZXIg" + + "YXNraW5nIHRvIHNraXAgY2hlY2tzLCB0aGUgYWdlbnQgc3RpbGwgcmFuIGhlbG1maWxlIHRlbXBs" + + "YXRlIHRvIHByZXZpZXcgcmVuZGVyZWQgbWFuaWZlc3RzIGJlZm9yZSBydW5uaW5nIGhlbG1maWxl" + + "IHN5bmMuIEl0IGV4cGxhaW5lZCB3aHkgdGhlIHByZXZpZXcgc3RlcCBpcyBpbXBvcnRhbnQgYW5k" + + "IGRpZCBub3QgYmxpbmRseSBleGVjdXRlIHN5bmMuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6" + + "IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRp" + + "b24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IHJhbiAn" + + "aGVsbWZpbGUgdGVtcGxhdGUnIG9yICdoZWxtZmlsZSAtLXNlbGVjdG9yIC4uLiB0ZW1wbGF0ZScg" + + "dG8gcHJldmlldyBtYW5pZmVzdHMgYmVmb3JlIHN5bmMiLAogICAgICAiVGhlIGFnZW50IGRpZCBu" + + "b3QgYmxpbmRseSBydW4gJ2hlbG1maWxlIHN5bmMnIHdpdGhvdXQgYSB0ZW1wbGF0ZSBwcmV2aWV3" + + "IHN0ZXAiLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB3aHkgdGhlIHByZXZpZXcgc3RlcCBp" + + "cyBpbXBvcnRhbnQgZXZlbiB3aGVuIGFza2VkIHRvIHNraXAgaXQiCiAgICBdCiAgfSwKICB7CiAg" + + "ICAiaWQiOiAiRzUtZHJ5cnVuLWJlZm9yZS1jbGVhbnVwIiwKICAgICJxdWVzdGlvbiI6ICJOVkNG" + + "IG5hbWVzcGFjZXMgYXJlIHN0dWNrIGluIFRlcm1pbmF0aW5nIHN0YXRlLiBDbGVhbiB0aGVtIHVw" + + "LiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9u" + + "IiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGlkZW50aWZpZWQgdGhlIHN0dWNrIG5h" + + "bWVzcGFjZXMgd2VyZSBjYXVzZWQgYnkgZmluYWxpemVycyBvbiBOVkNGQmFja2VuZCBjdXN0b20g" + + "cmVzb3VyY2VzLiBJdCByZW1vdmVkIGZpbmFsaXplcnMgZnJvbSBOVkNGQmFja2VuZCByZXNvdXJj" + + "ZXMgZmlyc3QsIHRoZW4gY2xlYXJlZCBuYW1lc3BhY2UgZmluYWxpemVycyB0byBmb3JjZS1kZWxl" + + "dGUgdGhlIHN0dWNrIG5hbWVzcGFjZXMuIEl0IG9ubHkgdGFyZ2V0ZWQgTlZDRi1tYW5hZ2VkIG5h" + + "bWVzcGFjZXMgKG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkgYW5kIGRpZCBub3QgdG91Y2gg" + + "b3RoZXIgY2x1c3RlciByZXNvdXJjZXMuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAg" + + "ICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJ" + + "TEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGNvbmZpcm1lZCBh" + + "bmQgdXNlZCB0aGUgY29tcHV0ZS1wbGFuZSBjb250ZXh0IGZvciBhbGwgY2xlYW51cCBjb21tYW5k" + + "cyIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCBrdWJlY3RsIHRvIHBhdGNoIE5WQ0ZCYWNrZW5kIHJl" + + "c291cmNlcyB0byByZW1vdmUgdGhlaXIgZmluYWxpemVycyIsCiAgICAgICJUaGUgYWdlbnQgdXNl" + + "ZCBrdWJlY3RsIHJlcGxhY2UgLS1yYXcgdG8gY2xlYXIgbmFtZXNwYWNlIGZpbmFsaXplcnMgb24g" + + "c3R1Y2sgbmFtZXNwYWNlcyIsCiAgICAgICJUaGUgYWdlbnQgb25seSB0YXJnZXRlZCBOVkNGLW1h" + + "bmFnZWQgbmFtZXNwYWNlcyAobnZjYS1vcGVyYXRvciwgbnZjZi1iYWNrZW5kKSBhbmQgZGlkIG5v" + + "dCB0b3VjaCBvdGhlciBjbHVzdGVyIHJlc291cmNlcyIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5v" + + "dCBqdW1wIGRpcmVjdGx5IHRvIG5hbWVzcGFjZSBkZWxldGlvbiB3aXRob3V0IGZpcnN0IHJlbW92" + + "aW5nIGZpbmFsaXplcnMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzYtaGVsbWZpbGUtc3Bs" + + "aXQtd29ya2Zsb3ciLAogICAgInF1ZXN0aW9uIjogIkluc3RhbGwgYW4gTlZDRiBjb250cm9sIHBs" + + "YW5lIGFuZCBhIHNlcGFyYXRlIEVLUyBjb21wdXRlIHBsYW5lIHVzaW5nIHRoZSBIZWxtZmlsZSBz" + + "dGFja3MuIFRoZSBjb21wdXRlIGNsdXN0ZXIga3ViZWNvbmZpZyBpcyBjb21wdXRlLnlhbWwuIiwK" + "ICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAog" + - "ICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgY29tcGxldGVkIHRoZSBjb250cm9sLXBsYW5l" + - "IGluc3RhbGxhdGlvbiBmaXJzdDogdmFsaWRhdGVkIHRvb2xzIGFuZCBidW5kbGUgc3RydWN0dXJl" + - "LCBjcmVhdGVkIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNsdWRpbmcgY2VydC1tYW5hZ2Vy" + - "LCBhdXRoZW50aWNhdGVkIHRoZSByZWdpc3RyaWVzLCBwcmV2aWV3ZWQsIGRlcGxveWVkLCBhbmQg" + - "bW9uaXRvcmVkIHRoZSBmb3VyIGNvbnRyb2wtcGxhbmUgcGhhc2VzLiBJdCB0aGVuIHNlbGVjdGVk" + - "IG9uZSBkb2N1bWVudGVkIGhhbmRvZmYgYW5kIHJlZ2lzdGVyZWQgYW5kIGluc3RhbGxlZCB0aGUg" + - "Y29tcHV0ZSBwbGFuZSBhcyBhIHNlcGFyYXRlIHN0YWNrIHdpdGhvdXQgbWl4aW5nIHByb2ZpbGUg" + - "YW5kIEhlbG1maWxlIHZhbHVlcyBmbG93cy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwog" + - "ICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBT" + - "S0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgdmFsaWRhdGVk" + - "IHRvb2wgdmVyc2lvbnMgKGhlbG1maWxlLCBoZWxtLCBoZWxtLWRpZmYsIGt1YmVjdGwpIiwKICAg" + - "ICAgIlRoZSBhZ2VudCB2ZXJpZmllZCB0aGUgYnVuZGxlIHN0cnVjdHVyZSBleGlzdHMiLAogICAg" + - "ICAiVGhlIGFnZW50IGNyZWF0ZWQgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIChjYXNzYW5kcmEt" + - "c3lzdGVtLCBuYXRzLXN5c3RlbSwgbnZjZiwgYXBpLWtleXMsIGVzcywgc2lzLCB2YXVsdC1zeXN0" + - "ZW0sIGNlcnQtbWFuYWdlcikgd2l0aG91dCBhZGRpbmcgY29tcHV0ZS1vbmx5IG5hbWVzcGFjZXMi" + - "LAogICAgICAiVGhlIGFnZW50IHJhbiAnSEVMTUZJTEVfRU5WPXN0YWdpbmcgaGVsbWZpbGUgdGVt" + - "cGxhdGUnIHRvIHByZXZpZXcgYmVmb3JlIGRlcGxveWluZyIsCiAgICAgICJUaGUgYWdlbnQgcmFu" + - "ICdIRUxNRklMRV9FTlY9c3RhZ2luZyBoZWxtZmlsZSBzeW5jJyB0byBkZXBsb3kiLAogICAgICAi" + - "VGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgNCBjb250cm9sLXBsYW5lIHBoYXNlcyAoZGVwZW5kZW5j" + - "aWVzLCBzZXJ2aWNlcywgaW5ncmVzcywgb2JzZXJ2YWJpbGl0eSkgYW5kIGFwcHJveGltYXRlIHdh" + - "aXQgdGltZXMiLAogICAgICAiQWZ0ZXIgdGhlIGNvbnRyb2wgcGxhbmUgd2FzIGhlYWx0aHksIHRo" + - "ZSBhZ2VudCByZWdpc3RlcmVkIGFuZCBpbnN0YWxsZWQgdGhlIHNlcGFyYXRlIGNvbXB1dGUtcGxh" + - "bmUgc3RhY2sgdXNpbmcgZXhhY3RseSBvbmUgZG9jdW1lbnRlZCBoYW5kb2ZmIiwKICAgICAgIlRo" + - "ZSBhZ2VudCBkaWQgbm90IG1peCBhIENMSS1nZW5lcmF0ZWQgY29udHJvbC1wbGFuZSBwcm9maWxl" + - "IHdpdGggdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93IgogICAgXQogIH0sCiAgewogICAgImlkIjog" + - "IlMzLWNsaS1wcm9maWxlLXdvcmtmbG93IiwKICAgICJxdWVzdGlvbiI6ICJVc2UgbnZjZi1jbGkg" + - "dG8gaW5zdGFsbCBteSBjb250cm9sIHBsYW5lIGFuZCB0aGVuIHJlZ2lzdGVyIGFuZCBpbnN0YWxs" + - "IGEgc2VwYXJhdGUgY29tcHV0ZSBjbHVzdGVyLiBTaG93IGV2ZXJ5IHJlcXVpcmVkIGdsb2JhbCBm" + - "bGFnLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0" + - "aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGZpcnN0IHJhbiB0aGUgQ0xJIGNv" + - "bnRyb2wtcGxhbmUgaW5zdGFsbCBhbmQgcmVxdWlyZWQgaXRzIGdlbmVyYXRlZCBjb250cm9sLXBs" + - "YW5lLXByb2ZpbGUueWFtbC4gSXQgdGhlbiBzaG93ZWQgY29tcGxldGUgcmVnaXN0ZXIgYW5kIGlu" + - "c3RhbGwgY29tbWFuZHMsIGVhY2ggaW5jbHVkaW5nIC0tY29uZmlnLCAtLWNvbnRyb2wtcGxhbmUt" + - "c3RhY2ssIC0tY29tcHV0ZS1wbGFuZS1zdGFjaywgLS1lbnYsIGFuZCAtLXBsYWluIGJlZm9yZSB0" + - "aGUgY29tcHV0ZS1wbGFuZSBzdWJjb21tYW5kLiBSZWdpc3RyYXRpb24gY29uc3VtZWQgdGhlIHBy" + - "b2ZpbGUgYW5kIHByb2R1Y2VkIHRoZSB2YWx1ZXMgZmlsZSBjb25zdW1lZCBieSBpbnN0YWxsLiBJ" + - "dCBkaWQgbm90IHN3aXRjaCB0byB0aGUgSGVsbWZpbGUgdmFsdWVzIGhhbmRvZmYuIiwKICAgICJl" + - "eHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYt" + - "bWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAg" + - "ICAiVGhlIGFnZW50IHJhbiBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1w" + - "bGFuZSBhbmQgdmVyaWZpZWQgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wt" + - "cGxhbmUtcHJvZmlsZS55YW1sIGV4aXN0cyIsCiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBp" + - "bmNsdWRlZCAtLWNvbmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAtLWNvbXB1dGUtcGxhbmUt" + - "c3RhY2ssIC0tZW52LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBp" + - "bmNsdWRlZCAtLWNvbnRyb2wtcGxhbmUtcHJvZmlsZSwgLS1jbHVzdGVyLW5hbWUsIC0ta3ViZS1j" + - "b250ZXh0LCAtLXJlZ2lvbiwgYW5kIC0tb3V0cHV0IiwKICAgICAgIlRoZSBpbnN0YWxsIGNvbW1h" + - "bmQgcmVwZWF0ZWQgLS1jb25maWcsIC0tY29udHJvbC1wbGFuZS1zdGFjaywgLS1jb21wdXRlLXBs" + - "YW5lLXN0YWNrLCAtLWVudiwgYW5kIC0tcGxhaW4iLAogICAgICAiVGhlIGluc3RhbGwgY29tbWFu" + - "ZCBpbmNsdWRlZCAtLXZhbHVlcywgLS1rdWJlLWNvbnRleHQsIGFuZCAtLWNsdXN0ZXItbmFtZSIs" + - "CiAgICAgICJUaGUgYWdlbnQga2VwdCB0aGUgZ2VuZXJhdGVkIHByb2ZpbGUgYXMgdGhlIGVuZHBv" + - "aW50IHNvdXJjZSBhbmQgZGlkIG5vdCBtaXggaW4gSGVsbWZpbGUgdmFsdWVzIHJlZ2lzdHJhdGlv" + - "biIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTNC1vdmVycmlkZS1jYXNzYW5kcmEtcmVzb3Vy" + - "Y2VzIiwKICAgICJxdWVzdGlvbiI6ICJDYXNzYW5kcmEgcG9kcyBrZWVwIGdldHRpbmcgT09NS2ls" + - "bGVkLiBJbmNyZWFzZSBtZW1vcnkgbGltaXRzIHRvIDE2R2kuIiwKICAgICJleHBlY3RlZF9za2ls" + - "bCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6" + - "ICJUaGUgYWdlbnQgY2FwdHVyZWQgdGhlIGJhc2VsaW5lIHdpdGggaGVsbWZpbGUgdGVtcGxhdGUs" + - "IHRoZW4gbW9kaWZpZWQgdGhlIGNhc3NhbmRyYSByZWxlYXNlIHdpdGggaW5saW5lIHZhbHVlcyBy" + - "ZS1pbmNsdWRpbmcgZ2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNyZXRzIGluIHRoZSB2YWx1ZXMg" + - "YmxvY2suIEl0IHdhcm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGEgYW5kIHByZXZpZXdl" + - "ZCB0aGUgZGlmZiBiZWZvcmUgYXBwbHlpbmcuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsK" + - "ICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24g" + - "U0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGNhcHR1cmVk" + - "IGJhc2VsaW5lIHdpdGggJ2hlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxh" + - "dGUnIiwKICAgICAgIlRoZSBhZ2VudCBtb2RpZmllZCB0aGUgcmVsZWFzZSB2YWx1ZXMgYmxvY2sg" + - "dG8gaW5jbHVkZSByZXNvdXJjZSBsaW1pdHMgd2l0aCBtZW1vcnk6IDE2R2kiLAogICAgICAiVGhl" + - "IGFnZW50IHJlLWluY2x1ZGVkIGdsb2JhbC55YW1sLmdvdG1wbCBhbmQgc2VjcmV0cyBmaWxlIGlu" + - "IHRoZSB2YWx1ZXM6IGJsb2NrIChub3QganVzdCB0aGUgb3ZlcnJpZGUgYWxvbmUpIiwKICAgICAg" + - "IlRoZSBhZ2VudCB3YXJuZWQgYWJvdXQgdGhlIFlBTUwgbWVyZ2UgZ290Y2hhOiBzcGVjaWZ5aW5n" + - "IHZhbHVlczogcmVwbGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QgZW50aXJlbHkiLAog" + - "ICAgICAiVGhlIGFnZW50IHByZXZpZXdlZCB0aGUgY2hhbmdlIHdpdGggaGVsbWZpbGUgdGVtcGxh" + - "dGUgYW5kIGRpZmYgYmVmb3JlIGFwcGx5aW5nIHdpdGggc3luYyIKICAgIF0KICB9LAogIHsKICAg" + - "ICJpZCI6ICJTNi1zZWxlY3RpdmUtc3luYy1kZXBlbmRlbmNpZXMiLAogICAgInF1ZXN0aW9uIjog" + - "IkRlcGxveSBvbmx5IHRoZSBOVkNGIGRlcGVuZGVuY2llcyAtLSBOQVRTLCBDYXNzYW5kcmEsIGFu" + - "ZCBPcGVuQmFvIC0tIGZvciB0ZXN0aW5nIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNl" + - "bGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQg" + - "dXNlZCB0aGUgaGVsbWZpbGUgc2VsZWN0b3IgdG8gZGVwbG95IG9ubHkgdGhlIGRlcGVuZGVuY2ll" + - "cyByZWxlYXNlIGdyb3VwLCB0aGVuIHZlcmlmaWVkIHBvZHMgaW4gdGhlIGRlcGVuZGVuY3kgbmFt" + - "ZXNwYWNlcy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJl" + - "YWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFr" + - "aW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnaGVsbWZpbGUgLS1zZWxlY3RvciBy" + - "ZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llcyBzeW5jJyB0byBkZXBsb3kgb25seSBkZXBlbmRlbmNp" + - "ZXMiLAogICAgICAiVGhlIGFnZW50IHZlcmlmaWVkIHBvZHMgaW4gZGVwZW5kZW5jeSBuYW1lc3Bh" + - "Y2VzIChuYXRzLXN5c3RlbSwgY2Fzc2FuZHJhLXN5c3RlbSwgdmF1bHQtc3lzdGVtKSIsCiAgICAg" + - "ICJUaGUgYWdlbnQgcHJvdmlkZWQgdGhlIHNlbGVjdG9yIHJlZmVyZW5jZSBmb3IgdGFyZ2V0aW5n" + - "IG90aGVyIHJlbGVhc2UgZ3JvdXBzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlM3LWRlYnVn" + - "LWltYWdlcHVsbGJhY2tvZmYiLAogICAgInF1ZXN0aW9uIjogIkNhc3NhbmRyYSBwb2RzIGFyZSBp" + - "biBJbWFnZVB1bGxCYWNrT2ZmIHdpdGggNDAxIFVuYXV0aG9yaXplZCIsCiAgICAiZXhwZWN0ZWRf" + + "ICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQga2VwdCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZs" + + "b3cgaW5kZXBlbmRlbnQgZnJvbSB0aGUgQ0xJIHByb2ZpbGUgZmxvdy4gSXQgYXV0aG9yZWQgc2Vw" + + "YXJhdGUgY29udHJvbC1wbGFuZSBhbmQgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCBmaWxlcyBw" + + "bHVzIGEgYmFyZS1HYXRld2F5IENMSSBjb25maWcgd2l0aCBVUkwgYW5kIHNjaGVtZS1sZXNzIEhv" + + "c3QgZmllbGRzLCBpbnN0YWxsZWQgdGhlIGNvbnRyb2wgcGxhbmUsIHJhbiB0aGUgY29tcHV0ZS1w" + + "bGFuZSBNYWtlZmlsZSByZWdpc3Rlci1jbHVzdGVyIHRhcmdldCB3aXRoIElDTVNfVVJMIGFuZCB0" + + "aGUgY29tcHV0ZSBrdWJlY29uZmlnLCB0aGVuIHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBpbnN0YWxs" + + "IHRhcmdldCB3aXRoIHRoZSBzYW1lIGVudmlyb25tZW50IGFuZCBrdWJlY29uZmlnLiBJdCByZWxp" + + "ZWQgb24gcmVnaXN0cmF0aW9uIHRvIGRpc2NvdmVyIE9JREMgYW5kIEpXS1MgZnJvbSB0aGUgY29t" + + "cHV0ZSBjb250ZXh0LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdl" + + "bnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9y" + + "ZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBhdXRob3JlZCBzZXBhcmF0ZSBlbnZp" + + "cm9ubWVudHMvPGVudj4ueWFtbCBmaWxlcyB1bmRlciBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdl" + + "ZCBhbmQgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUiLAogICAgICAiVGhlIGFnZW50" + + "IGluc3RhbGxlZCB0aGUgY29udHJvbCBwbGFuZSBiZWZvcmUgcmVnaXN0ZXJpbmcgb3IgaW5zdGFs" + + "bGluZyB0aGUgY29tcHV0ZSBwbGFuZSIsCiAgICAgICJUaGUgYWdlbnQgY29uZmlndXJlZCBiYXNl" + + "X2h0dHBfdXJsLCBpbnZva2VfdXJsLCBiYXNlX2dycGNfdXJsLCBhcGlfa2V5c19zZXJ2aWNlX3Vy" + + "bCwgaWNtc191cmwsIGFwaV9ob3N0LCBhcGlfa2V5c19ob3N0LCBpbnZva2VfaG9zdCwgYW5kIGlj" + + "bXNfaG9zdCBmb3IgdGhlIGJhcmUgR2F0ZXdheSIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnbWFr" + + "ZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSByZWdpc3Rlci1jbHVzdGVyJyB3" + + "aXRoIENMVVNURVJfTkFNRSwgTkNBX0lELCBDTFVTVEVSX1JFR0lPTiwgSUNNU19VUkwsIGFuZCBL" + + "VUJFQ09ORklHX0ZJTEU9Y29tcHV0ZS55YW1sIiwKICAgICAgIlRoZSBhZ2VudCB1c2VkICdtYWtl" + + "IC1DIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGluc3RhbGwnIHdpdGggQ0xVU1RF" + + "Ul9OQU1FLCBIRUxNRklMRV9FTlYsIGFuZCBLVUJFQ09ORklHX0ZJTEU9Y29tcHV0ZS55YW1sIiwK" + + "ICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCBJQ01TX1VSTCBtYXBzIG9ubHkgdG8gLS1pY21z" + + "LXVybCwgY29uZmlnIGljbXNfaG9zdCBzdXBwbGllcyB0aGUgSG9zdCBoZWFkZXIsIHRoZXJlIGlz" + + "IG5vIC0taWNtcy1ob3N0IE1ha2Ugb3IgQ0xJIGZsYWcsIGFuZCByZWdpc3RyYXRpb24gZGlzY292" + + "ZXJzIE9JREMgYW5kIEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0IiwKICAgICAgIlRoZSBh" + + "Z2VudCBkaWQgbm90IHJlcXVpcmUgYSBjb250cm9sLXBsYW5lIHByb2ZpbGUgZm9yIHRoaXMgZmxv" + + "dyBhbmQgZGlkIG5vdCBtaXggaW4gQ0xJIHByb2ZpbGUgY29tbWFuZHMiCiAgICBdCiAgfSwKICB7" + + "CiAgICAiaWQiOiAiRzctYm90aC1kb2NrZXItaGVsbS1hdXRoIiwKICAgICJxdWVzdGlvbiI6ICJB" + + "dXRoZW50aWNhdGUgdG8gTkdDIGZvciBOVkNGIGhlbG1maWxlIGRlcGxveW1lbnQiLAogICAgImV4" + + "cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3Jv" + + "dW5kX3RydXRoIjogIlRoZSBhZ2VudCByYW4gYm90aCBkb2NrZXIgbG9naW4gYW5kIGhlbG0gcmVn" + + "aXN0cnkgbG9naW4gZm9yIG52Y3IuaW8uIEl0IGV4cGxhaW5lZCB0aGF0IGJvdGggYXJlIHJlcXVp" + + "cmVkIGJlY2F1c2UgaGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0byBwdWxsIE9DSSBj" + + "aGFydHMsIHNvIGRvY2tlciBsb2dpbiBhbG9uZSBpcyBpbnN1ZmZpY2llbnQuIiwKICAgICJleHBl" + + "Y3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFu" + + "YWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAi" + + "VGhlIGFnZW50IHJhbiAnZG9ja2VyIGxvZ2luIG52Y3IuaW8nIHdpdGggJG9hdXRodG9rZW4gdXNl" + + "cm5hbWUgYW5kIE5HQ19BUElfS0VZIHBhc3N3b3JkIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hl" + + "bG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbycgd2l0aCAkb2F1dGh0b2tlbiB1c2VybmFtZSBhbmQg" + + "TkdDX0FQSV9LRVkgcGFzc3dvcmQiLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGF0IGJv" + + "dGggYXJlIHJlcXVpcmVkIGJlY2F1c2UgaGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0" + + "byBwdWxsIE9DSSBjaGFydHMiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgcHJvdmlkZSBvbmx5" + + "IG9uZSBvZiB0aGUgdHdvIGF1dGhlbnRpY2F0aW9uIGNvbW1hbmRzIgogICAgXQogIH0sCiAgewog" + + "ICAgImlkIjogIkc5LW1pc3NpbmctYnVuZGxlIiwKICAgICJxdWVzdGlvbiI6ICJSdW4gaGVsbWZp" + + "bGUgc3luYyBmb3IgTlZDRiBpbiBteSBjdXJyZW50IGRpcmVjdG9yeSIsCiAgICAiZXhwZWN0ZWRf" + "c2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1" + - "dGgiOiAiVGhlIGFnZW50IHJlYWQgdGhlIGRlYnVnZ2luZyByZWZlcmVuY2UgYW5kIHJhbiBkaWFn" + - "bm9zdGljIGNvbW1hbmRzIHRvIGlkZW50aWZ5IHRoZSByb290IGNhdXNlOiBkZXNjcmliZWQgdGhl" + - "IHBvZCwgY2hlY2tlZCBmb3IgcHVsbCBzZWNyZXRzLCBjaGVja2VkIGltYWdlUHVsbFNlY3JldHMg" + - "b24gdGhlIHBvZCBzcGVjIGFuZCBzZXJ2aWNlIGFjY291bnQuIEl0IGlkZW50aWZpZWQgdGhlIGlz" + - "c3VlIChtaXNzaW5nIHNlY3JldCwgd3JvbmcgY3JlZGVudGlhbHMsIG9yIG1pc3NpbmcgaW1hZ2VQ" + - "dWxsU2VjcmV0cykgYW5kIHByb3ZpZGVkIHRoZSBjb3JyZWN0IGZpeC4iLAogICAgImV4cGVjdGVk" + - "X2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2Vk" + - "LWluc3RhbGxhdGlvbiBTS0lMTC5tZCBhbmQgcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQiLAogICAg" + - "ICAiVGhlIGFnZW50IHJhbiAna3ViZWN0bCBkZXNjcmliZSBwb2QnIHRvIHNlZSB0aGUgSW1hZ2VQ" + - "dWxsQmFja09mZiBldmVudHMiLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQgZm9yIHB1bGwgc2Vj" + - "cmV0cyBpbiB0aGUgY2Fzc2FuZHJhLXN5c3RlbSBuYW1lc3BhY2UiLAogICAgICAiVGhlIGFnZW50" + - "IGNoZWNrZWQgaW1hZ2VQdWxsU2VjcmV0cyBvbiB0aGUgcG9kIHNwZWMgYW5kL29yIHNlcnZpY2Ug" + - "YWNjb3VudCIsCiAgICAgICJUaGUgYWdlbnQgaWRlbnRpZmllZCB0aGUgcm9vdCBjYXVzZSBhbmQg" + - "cHJvdmlkZWQgYSBzcGVjaWZpYyBmaXgiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzktcmVt" + - "b3RlLWVrcy1yb3V0aW5nLWFuZC1zZWNyZXRzIiwKICAgICJxdWVzdGlvbiI6ICJDb25maWd1cmUg" + - "YSByZW1vdGUgRUtTIGNvbXB1dGUgY2x1c3RlciB0byByZWFjaCBteSBOVkNGIGNvbnRyb2wgcGxh" + - "bmUgdGhyb3VnaCBpdHMgRW52b3kgR2F0ZXdheSwgaW5jbHVkaW5nIE5BVFMgYW5kIHByaXZhdGUt" + - "cmVnaXN0cnkgcHVsbCBzZWNyZXRzLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxm" + - "LW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGNv" + - "bmZpZ3VyZWQgdGhlIGNvbnRyb2wgcGxhbmUgdG8gdXNlIHRoZSBFbnZveSBHYXRld2F5IGNvbnRy" + - "b2xsZXIgaW4gZW52b3ktZ2F0ZXdheS1zeXN0ZW0gYW5kIEdhdGV3YXkvbnZjZi1nYXRld2F5IGlu" + - "IGVudm95LWdhdGV3YXksIHNldCBhbGwgc2l4IHJlbW90ZSB3b3JrZXIgZW5kcG9pbnRzIGFuZCB0" + - "aGUgZ3JwYy1wcm94eSBsb2NhbCBvdmVycmlkZSwgZW5hYmxlZCBOVkNGIGFuZCBOVkNUIGdSUEMg" + - "cm91dGVzIHBsdXMgTkFUUywgYW5kIGVuYWJsZWQgT3BlbkJhbyBpc3N1ZXIgZGlzY292ZXJ5LiBJ" + - "dCBjb25maWd1cmVkIHRoZSBiYXJlLUdhdGV3YXkgQ0xJIFVSTCBhbmQgSG9zdCBmaWVsZHMgaW5j" + - "bHVkaW5nIGljbXNfaG9zdCwgcGx1cyB0aGUgY29tcHV0ZS1wbGFuZSBJQ01TLCBSZVZhbCwgYW5k" + - "IE5BVFMgZXh0ZXJuYWwgVVJMcyBhbmQgaG9zdCBvdmVycmlkZXMuIEl0IGNyZWF0ZWQgdGhlIHB1" + - "bGwgc2VjcmV0IGluIGFsbCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMgaW5jbHVkaW5nIGNlcnQt" + - "bWFuYWdlciwgYnV0IG9ubHkgaW4gbnZjYS1vcGVyYXRvciBvbiB0aGUgY29tcHV0ZSBjbHVzdGVy" + - "OyB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0byBudmNhLXN5c3RlbS4iLAogICAg" + - "ImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2Vs" + - "Zi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAg" + - "ICAgICJUaGUgYWdlbnQgc2V0IGluZ3Jlc3MuZ2F0ZXdheUFwaS5jb250cm9sbGVyTmFtZXNwYWNl" + - "IHRvIGVudm95LWdhdGV3YXktc3lzdGVtIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgc2hhcmVkLCBn" + - "cnBjLCBhbmQgbmF0cyBHYXRld2F5IHJlZmVyZW5jZXMgdG8gbmFtZSBudmNmLWdhdGV3YXkgYW5k" + - "IG5hbWVzcGFjZSBlbnZveS1nYXRld2F5IiwKICAgICAgIlRoZSBhZ2VudCBzZXQgZ2xvYmFsLndv" + - "cmtlckVuZHBvaW50cy5udmNmU2VydmljZVVSTCwgbnZjZkdycGNTZXJ2aWNlVVJMLCBudmNmTmF0" + - "c1NlcnZpY2VVUkwsIG52Y3RTZXJ2aWNlVVJMLCBudmN0R3JwY1NlcnZpY2VVUkwsIGFuZCBpbnZv" + - "Y2F0aW9uU2VydmljZVVSTCIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGdycGNwcm94eS5udmNmR3Jw" + - "Y1NlcnZpY2VVUkwgdG8gdGhlIGNvbnRyb2wtcGxhbmUtbG9jYWwgQVBJIGdSUEMgc2VydmljZSIs" + - "CiAgICAgICJUaGUgYWdlbnQgZW5hYmxlZCBib3RoIGluZ3Jlc3MuZ2F0ZXdheUFwaS5yb3V0ZXMu" + - "bnZjZkFwaS5ncnBjIGFuZCBudmN0QXBpLmdycGMgd2l0aCB3b3JrZXItYXBpIGFuZCB3b3JrZXIt" + - "dGFza3MgaG9zdG5hbWVzIiwKICAgICAgIlRoZSBhZ2VudCBleHBsaWNpdGx5IHNldCBpbmdyZXNz" + - "LmdhdGV3YXlBcGkucm91dGVzLm5hdHMuZW5hYmxlZCB0byB0cnVlIiwKICAgICAgIlRoZSBhZ2Vu" + - "dCBzZXQgb3BlbmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkIHRvIHRydWUi" + - "LAogICAgICAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgdGhlIGJhcmUtR2F0ZXdheSBDTEkgVVJMIGFu" + - "ZCBIb3N0IGZpZWxkcywgaW5jbHVkaW5nIHNjaGVtZS1sZXNzIGljbXNfaG9zdCIsCiAgICAgICJU" + - "aGUgYWdlbnQgY29uZmlndXJlZCBjb21wdXRlLXBsYW5lIGljbXNTZXJ2aWNlVVJMLCBpY21zU2Vy" + - "dmljZUhvc3RIZWFkZXJPdmVycmlkZSwgcmV2YWxTZXJ2aWNlVVJMLCByZXZhbFNlcnZpY2VIb3N0" + - "SGVhZGVyT3ZlcnJpZGUsIG5hdHNVUkwsIGFuZCBuYXRzSG9zdE92ZXJyaWRlIiwKICAgICAgIlRo" + - "ZSBjb250cm9sLXBsYW5lIHB1bGwtc2VjcmV0IG5hbWVzcGFjZSBsaXN0IGluY2x1ZGVkIGNlcnQt" + - "bWFuYWdlciIsCiAgICAgICJUaGUgY29tcHV0ZS1wbGFuZSBzZWNyZXQgd2FzIGNyZWF0ZWQgb25s" + - "eSBpbiBudmNhLW9wZXJhdG9yIGFuZCBtaXJyb3JlZCBieSB0aGUgY2hhcnQgYW5kIG9wZXJhdG9y" + - "IHRvIG52Y2Etc3lzdGVtIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkcxMS1zcGxpdC10ZWFy" + - "ZG93biIsCiAgICAicXVlc3Rpb24iOiAiVGVhciBkb3duIG15IHNwbGl0IGNvbnRyb2wtcGxhbmUg" + - "YW5kIGNvbXB1dGUtcGxhbmUgZGVwbG95bWVudCBzYWZlbHkuIFNob3cgYm90aCB0aGUgSGVsbWZp" + - "bGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSB2YXJpYW50cy4iLAogICAgImV4cGVjdGVkX3NraWxs" + + "dGgiOiAiVGhlIGFnZW50IGF0dGVtcHRlZCB0byB2ZXJpZnkgdGhlIGJ1bmRsZSBzdHJ1Y3R1cmUg" + + "KGhlbG1maWxlLmQvLCBlbnZpcm9ubWVudHMvLCBzZWNyZXRzLywgZ2xvYmFsLnlhbWwuZ290bXBs" + + "KSBhbmQgd2hlbiBmaWxlcyB3ZXJlIG5vdCBmb3VuZCwgc3RvcHBlZCBhbmQgaW5zdHJ1Y3RlZCB0" + + "aGUgdXNlciB0byBleHRyYWN0IG9yIGxvY2F0ZSB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sg" + + "YnVuZGxlLiBJdCBkaWQgbm90IGF0dGVtcHQgdG8gcnVuIGhlbG1maWxlIHN5bmMgYWdhaW5zdCBh" + + "IG1pc3NpbmcgYnVuZGxlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUg" + + "YWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJl" + + "Zm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBjaGVja2VkIGZvciBleHBlY3Rl" + + "ZCBidW5kbGUgc3RydWN0dXJlIChoZWxtZmlsZS5kLywgZW52aXJvbm1lbnRzLywgc2VjcmV0cy8s" + + "IGdsb2JhbC55YW1sLmdvdG1wbCkiLAogICAgICAiV2hlbiBidW5kbGUgZmlsZXMgd2VyZSBub3Qg" + + "Zm91bmQsIHRoZSBhZ2VudCBzdG9wcGVkIGFuZCBkaWQgbm90IGF0dGVtcHQgaGVsbWZpbGUgc3lu" + + "YyIsCiAgICAgICJUaGUgYWdlbnQgaW5zdHJ1Y3RlZCB0aGUgdXNlciB0byBleHRyYWN0IG9yIGxv" + + "Y2F0ZSB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sgYnVuZGxlIgogICAgXQogIH0sCiAgewog" + + "ICAgImlkIjogIlMxLWNsZWFuLWluc3RhbGxhdGlvbiIsCiAgICAicXVlc3Rpb24iOiAiUGVyZm9y" + + "bSBhIGNsZWFuIGluc3RhbGxhdGlvbiBvZiB0aGUgTlZDRiBzZWxmLW1hbmFnZWQgc3RhY2sgb24g" + + "bXkgQVdTIEVLUyBjbHVzdGVyLiBNeSBlbnZpcm9ubWVudCBuYW1lIGlzICdzdGFnaW5nJy4iLAog" + + "ICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAg" + + "ICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBjb21wbGV0ZWQgdGhlIGNvbnRyb2wtcGxhbmUg" + + "aW5zdGFsbGF0aW9uIGZpcnN0OiB2YWxpZGF0ZWQgdG9vbHMgYW5kIGJ1bmRsZSBzdHJ1Y3R1cmUs" + + "IGNyZWF0ZWQgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIGluY2x1ZGluZyBjZXJ0LW1hbmFnZXIs" + + "IGF1dGhlbnRpY2F0ZWQgdGhlIHJlZ2lzdHJpZXMsIHByZXZpZXdlZCwgZGVwbG95ZWQsIGFuZCBt" + + "b25pdG9yZWQgdGhlIGZvdXIgY29udHJvbC1wbGFuZSBwaGFzZXMuIEl0IHRoZW4gc2VsZWN0ZWQg" + + "b25lIGRvY3VtZW50ZWQgaGFuZG9mZiBhbmQgcmVnaXN0ZXJlZCBhbmQgaW5zdGFsbGVkIHRoZSBj" + + "b21wdXRlIHBsYW5lIGFzIGEgc2VwYXJhdGUgc3RhY2sgd2l0aG91dCBtaXhpbmcgcHJvZmlsZSBh" + + "bmQgSGVsbWZpbGUgdmFsdWVzIGZsb3dzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAg" + + "ICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNL" + + "SUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCB2YWxpZGF0ZWQg" + + "dG9vbCB2ZXJzaW9ucyAoaGVsbWZpbGUsIGhlbG0sIGhlbG0tZGlmZiwga3ViZWN0bCkiLAogICAg" + + "ICAiVGhlIGFnZW50IHZlcmlmaWVkIHRoZSBidW5kbGUgc3RydWN0dXJlIGV4aXN0cyIsCiAgICAg" + + "ICJUaGUgYWdlbnQgY3JlYXRlZCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMgKGNhc3NhbmRyYS1z" + + "eXN0ZW0sIG5hdHMtc3lzdGVtLCBudmNmLCBhcGkta2V5cywgZXNzLCBzaXMsIHZhdWx0LXN5c3Rl" + + "bSwgY2VydC1tYW5hZ2VyKSB3aXRob3V0IGFkZGluZyBjb21wdXRlLW9ubHkgbmFtZXNwYWNlcyIs" + + "CiAgICAgICJUaGUgYWdlbnQgcmFuICdIRUxNRklMRV9FTlY9c3RhZ2luZyBoZWxtZmlsZSB0ZW1w" + + "bGF0ZScgdG8gcHJldmlldyBiZWZvcmUgZGVwbG95aW5nIiwKICAgICAgIlRoZSBhZ2VudCByYW4g" + + "J0hFTE1GSUxFX0VOVj1zdGFnaW5nIGhlbG1maWxlIHN5bmMnIHRvIGRlcGxveSIsCiAgICAgICJU" + + "aGUgYWdlbnQgZXhwbGFpbmVkIHRoZSA0IGNvbnRyb2wtcGxhbmUgcGhhc2VzIChkZXBlbmRlbmNp" + + "ZXMsIHNlcnZpY2VzLCBpbmdyZXNzLCBvYnNlcnZhYmlsaXR5KSBhbmQgYXBwcm94aW1hdGUgd2Fp" + + "dCB0aW1lcyIsCiAgICAgICJBZnRlciB0aGUgY29udHJvbCBwbGFuZSB3YXMgaGVhbHRoeSwgdGhl" + + "IGFnZW50IHJlZ2lzdGVyZWQgYW5kIGluc3RhbGxlZCB0aGUgc2VwYXJhdGUgY29tcHV0ZS1wbGFu" + + "ZSBzdGFjayB1c2luZyBleGFjdGx5IG9uZSBkb2N1bWVudGVkIGhhbmRvZmYiLAogICAgICAiVGhl" + + "IGFnZW50IGRpZCBub3QgbWl4IGEgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBsYW5lIHByb2ZpbGUg" + + "d2l0aCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZsb3ciCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAi" + + "UzMtY2xpLXByb2ZpbGUtd29ya2Zsb3ciLAogICAgInF1ZXN0aW9uIjogIlVzZSBudmNmLWNsaSB0" + + "byBpbnN0YWxsIG15IGNvbnRyb2wgcGxhbmUgYW5kIHRoZW4gcmVnaXN0ZXIgYW5kIGluc3RhbGwg" + + "YSBzZXBhcmF0ZSBjb21wdXRlIGNsdXN0ZXIuIFNob3cgZXZlcnkgcmVxdWlyZWQgZ2xvYmFsIGZs" + + "YWcuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRp" + + "b24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZmlyc3QgcmFuIHRoZSBDTEkgY29u" + + "dHJvbC1wbGFuZSBpbnN0YWxsIGFuZCByZXF1aXJlZCBpdHMgZ2VuZXJhdGVkIGNvbnRyb2wtcGxh" + + "bmUtcHJvZmlsZS55YW1sLiBJdCB0aGVuIHNob3dlZCBjb21wbGV0ZSByZWdpc3RlciBhbmQgaW5z" + + "dGFsbCBjb21tYW5kcywgZWFjaCBpbmNsdWRpbmcgLS1jb25maWcsIC0tY29udHJvbC1wbGFuZS1z" + + "dGFjaywgLS1jb21wdXRlLXBsYW5lLXN0YWNrLCAtLWVudiwgYW5kIC0tcGxhaW4gYmVmb3JlIHRo" + + "ZSBjb21wdXRlLXBsYW5lIHN1YmNvbW1hbmQuIFJlZ2lzdHJhdGlvbiBjb25zdW1lZCB0aGUgcHJv" + + "ZmlsZSBhbmQgcHJvZHVjZWQgdGhlIHZhbHVlcyBmaWxlIGNvbnN1bWVkIGJ5IGluc3RhbGwuIEl0" + + "IGRpZCBub3Qgc3dpdGNoIHRvIHRoZSBIZWxtZmlsZSB2YWx1ZXMgaGFuZG9mZi4iLAogICAgImV4" + + "cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1t" + + "YW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAg" + + "ICJUaGUgYWdlbnQgcmFuIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGluc3RhbGwgLS1jb250cm9sLXBs" + + "YW5lIGFuZCB2ZXJpZmllZCBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1w" + + "bGFuZS1wcm9maWxlLnlhbWwgZXhpc3RzIiwKICAgICAgIlRoZSByZWdpc3RlciBjb21tYW5kIGlu" + + "Y2x1ZGVkIC0tY29uZmlnLCAtLWNvbnRyb2wtcGxhbmUtc3RhY2ssIC0tY29tcHV0ZS1wbGFuZS1z" + + "dGFjaywgLS1lbnYsIGFuZCAtLXBsYWluIiwKICAgICAgIlRoZSByZWdpc3RlciBjb21tYW5kIGlu" + + "Y2x1ZGVkIC0tY29udHJvbC1wbGFuZS1wcm9maWxlLCAtLWNsdXN0ZXItbmFtZSwgLS1rdWJlLWNv" + + "bnRleHQsIC0tcmVnaW9uLCBhbmQgLS1vdXRwdXQiLAogICAgICAiVGhlIGluc3RhbGwgY29tbWFu" + + "ZCByZXBlYXRlZCAtLWNvbmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAtLWNvbXB1dGUtcGxh" + + "bmUtc3RhY2ssIC0tZW52LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgaW5zdGFsbCBjb21tYW5k" + + "IGluY2x1ZGVkIC0tdmFsdWVzLCAtLWt1YmUtY29udGV4dCwgYW5kIC0tY2x1c3Rlci1uYW1lIiwK" + + "ICAgICAgIlRoZSBhZ2VudCBrZXB0IHRoZSBnZW5lcmF0ZWQgcHJvZmlsZSBhcyB0aGUgZW5kcG9p" + + "bnQgc291cmNlIGFuZCBkaWQgbm90IG1peCBpbiBIZWxtZmlsZSB2YWx1ZXMgcmVnaXN0cmF0aW9u" + + "IgogICAgXQogIH0sCiAgewogICAgImlkIjogIlM0LW92ZXJyaWRlLWNhc3NhbmRyYS1yZXNvdXJj" + + "ZXMiLAogICAgInF1ZXN0aW9uIjogIkNhc3NhbmRyYSBwb2RzIGtlZXAgZ2V0dGluZyBPT01LaWxs" + + "ZWQuIEluY3JlYXNlIG1lbW9yeSBsaW1pdHMgdG8gMTZHaS4iLAogICAgImV4cGVjdGVkX3NraWxs" + "IjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjog" + - "IlRoZSBIZWxtZmlsZSBmbG93IGRlc3Ryb3llZCBhbmQgY29uZmlybWVkIGRlcmVnaXN0cmF0aW9u" + - "IG9mIGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciBiZWZvcmUgZGVzdHJveWluZyB0aGUgY29udHJvbCBw" + - "bGFuZSBhbmQgcGFzc2VkIGJvdGggY29udHJvbC1wbGFuZSBrdWJlY29uZmlnIGZvcm1zLiBCZWZv" + - "cmUgZWl0aGVyIGhhbmRvZmYgY291bGQgZGVzdHJveSB0aGUgY29udHJvbCBwbGFuZSwgYm90aCB0" + - "ZWFyZG93biBmbG93cyB3YXJuZWQgdGhhdCBuYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRvZXMgbm90" + - "IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UsIHJlcXVpcmVkIGVmZmVjdGl2ZSBjZXJ0TWFuYWdl" + - "ci5lbmFibGVkOiBmYWxzZSBmb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uIGFuZCBhYm9ydGVk" + - "IGlmIHRydWUsIGFuZCB2ZXJpZmllZCBtYXRjaGluZyByZWxlYXNlIG93bmVyc2hpcCBmb3IgYW4g" + - "aW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxlYXNlLCBhYm9ydGluZyBvbiBtaXNzaW5nIG9yIG1p" + - "c21hdGNoZWQgZXZpZGVuY2UuIFRoZXkgcHJlc2VydmVkIHRoZSBuYW1lc3BhY2UgYnkgZGVmYXVs" + - "dCBhbmQgZGlkIG5vdCBkZWxldGUgaXQgd2l0aG91dCBuYW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQg" + - "ZXhwbGljaXQgY29uZmlybWF0aW9uLiBUaGUgQ0xJIGZsb3cgcmV0YWluZWQgdGhlIGdlbmVyYXRl" + - "ZCByZWdpc3RyYXRpb24gdmFsdWVzLCB1c2VkIHRoZSBmdWxsLXByZWZpeCBzdGF0dXMgY29tbWFu" + - "ZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRoYXQgbmFtZWQtY2x1c3Rl" + - "ciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90IHByZWRpY3QgY29uZGl0" + - "aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLCBhbmQgZ290IGV4cGxpY2l0IGNvbmZpcm1hdGlv" + - "biB3aGVuIHRoZSB0YXJnZXQgd2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3Rlci4gSXQgdGhl" + - "biBwcmV2aWV3ZWQgYW5kIHJhbiBkb3duIHdpdGggdGhlIGZ1bGwgcGVyc2lzdGVudCBwcmVmaXgs" + - "IHJlbW92aW5nIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgdGhlIGxhc3QgcmVnaXN0cmF0" + - "aW9uIHdhcyBnb25lLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdl" + - "bnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9y" + - "ZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIkZvciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRoZSBI" + - "ZWxtZmlsZSBmbG93IHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZSBkZXN0cm95IHRhcmdl" + - "dCB3aXRoIGl0cyBjb21wdXRlIGt1YmVjb25maWciLAogICAgICAiQWZ0ZXIgY29uZmlybWF0aW9u" + - "LCB0aGUgSGVsbWZpbGUgZmxvdyByYW4gY2x1c3RlciBkZWxldGUgd2l0aCBjbHVzdGVySUQgYW5k" + - "IG5jYUlEIGJlZm9yZSBjb250cm9sLXBsYW5lIGRlc3RydWN0aW9uIiwKICAgICAgIkJlZm9yZSBl" + - "aXRoZXIgaGFuZG9mZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBib3RoIHRlYXJk" + - "b3duIGZsb3dzIHdhcm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9lcyBub3QgcHJl" + - "c2VydmUgdGhlIEhlbG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZlIGNlcnRNYW5hZ2VyLmVu" + - "YWJsZWQ6IGZhbHNlIGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24gYW5kIGFib3J0ZWQgaWYg" + - "dHJ1ZSwgYW5kIHZlcmlmaWVkIGludGVuZGVkIHN0YWNrIG93bmVyc2hpcCB3aGVuIGVuYWJsZWQs" + - "IGFib3J0aW5nIG9uIG1pc3Npbmcgb3IgbWlzbWF0Y2hlZCBldmlkZW5jZSIsCiAgICAgICJCb3Ro" + - "IHRlYXJkb3duIGZsb3dzIHByZXNlcnZlZCB0aGUgY2VydC1tYW5hZ2VyIG5hbWVzcGFjZSBieSBk" + - "ZWZhdWx0IGFuZCBkaWQgbm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBwcm92ZW5hbmNl" + - "IGFuZCBleHBsaWNpdCBjb25maXJtYXRpb24iLAogICAgICAiVGhlIEhlbG1maWxlIGZsb3cgcmFu" + - "IGNvbnRyb2wtcGxhbmUgTWFrZWZpbGUgZGVzdHJveSB3aXRoIGJvdGggS1VCRUNPTkZJRyBhbmQg" + - "S1VCRUNPTkZJR19GSUxFIiwKICAgICAgIlRoZSBDTEkgZmxvdyByZXRhaW5lZCBvdXQvPGNsdXN0" + - "ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWwgdW50aWwgdGVhcmRvd24gY29tcGxldGVkIiwK" + - "ICAgICAgIkJlZm9yZSByZWFsIGRvd24sIHRoZSBDTEkgZmxvdyB1c2VkIHRoZSBmdWxsLXByZWZp" + - "eCBzdGF0dXMgY29tbWFuZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRo" + - "YXQgbmFtZWQtY2x1c3RlciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90" + - "IHByZWRpY3QgY29uZGl0aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLCB3YXJuZWQgd2hlbiB0" + - "aGUgdGFyZ2V0IHdhcyB0aGUgbGFzdCByZWdpc3RlcmVkIGNsdXN0ZXIsIGFuZCBnb3QgZXhwbGlj" + - "aXQgY29uZmlybWF0aW9uIiwKICAgICAgIlRoZSBDTEkgZmxvdyB1c2VkIC0tY29uZmlnLCBib3Ro" + - "IHN0YWNrIHBhdGhzLCAtLWVudiwgLS1wbGFpbiwgYm90aCBjb250ZXh0cywgYW5kIC0taWNtcy11" + - "cmwgZm9yIGRvd24gLS1wbGFuLW9ubHkgYW5kIHRoZW4gZG93biIsCiAgICAgICJUaGUgYWdlbnQg" + - "c3RhdGVkIHRoYXQgZG93biB1bnJlZ2lzdGVycyBlYWNoIGNvbXB1dGUgY2x1c3RlciBhbmQgcmVt" + - "b3ZlcyB0aGUgY29udHJvbCBwbGFuZSBvbmx5IGFmdGVyIG5vIHJlZ2lzdHJhdGlvbnMgcmVtYWlu" + - "IgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMxMy12YWx1ZXMtcHJlY2VkZW5jZSIsCiAgICAi" + - "cXVlc3Rpb24iOiAiSSBhZGRlZCBhIHZhbHVlIHRvIG15IGVudmlyb25tZW50IFlBTUwgYnV0IGl0" + - "J3MgYmVpbmcgc2lsZW50bHkgaWdub3JlZC4gSG93IGRvIGhlbG1maWxlIHZhbHVlcyB3b3JrIGlu" + - "IE5WQ0Y/IiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + - "YXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSB2YWx1" + - "ZXMgcHJlY2VkZW5jZSBjaGFpbiAoYmFzZS55YW1sLCBlbnYgWUFNTCwgZ2xvYmFsLnlhbWwuZ290" + - "bXBsLCBzZWNyZXRzLCBpbmxpbmUgdmFsdWVzKSwgaWRlbnRpZmllZCB0aGF0IGdsb2JhbC55YW1s" + - "LmdvdG1wbCBvbmx5IHBhc3NlcyB0aHJvdWdoIHNwZWNpZmljIGtleXMsIGFuZCBleHBsYWluZWQg" + - "dGhhdCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzIG11c3QgdXNlIHJlbGVhc2UgaW5saW5lIHZhbHVl" + - "cyBibG9ja3MuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCBy" + - "ZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRh" + - "a2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgdmFsdWVzIHByZWNl" + - "ZGVuY2UgY2hhaW46IGJhc2UueWFtbCAtPiBlbnYgWUFNTCAtPiBnbG9iYWwueWFtbC5nb3RtcGwg" + - "LT4gc2VjcmV0cyAtPiBpbmxpbmUgdmFsdWVzIiwKICAgICAgIlRoZSBhZ2VudCBpZGVudGlmaWVk" + - "IHRoYXQgZ2xvYmFsLnlhbWwuZ290bXBsIG9ubHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMga2V5" + - "cyAoY2Fzc2FuZHJhLnJlcGxpY2FDb3VudCwgZ2xvYmFsLnN0b3JhZ2VDbGFzcywgZ2xvYmFsLmlt" + - "YWdlLCBldGMuKSIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgYXJiaXRyYXJ5IGNo" + - "YXJ0IHZhbHVlcyBtdXN0IGJlIHNldCB2aWEgcmVsZWFzZSBpbmxpbmUgdmFsdWVzOiBibG9ja3Mi" + - "LAogICAgICAiVGhlIGFnZW50IGxpc3RlZCBleGFtcGxlcyBvZiB2YWx1ZXMgdGhhdCBhcmUgcHJv" + - "cGFnYXRlZCBhbmQgYXJiaXRyYXJ5IGNoYXJ0IHZhbHVlcyB0aGF0IHJlcXVpcmUgYSByZWxlYXNl" + - "IHZhbHVlcyBibG9jayIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTMTQtZW5hYmxlLWxsbS1m" + - "dW5jdGlvbnMiLAogICAgInF1ZXN0aW9uIjogIkkgbmVlZCB0byBkZXBsb3kgZnVuY3Rpb25UeXBl" + - "OiBMTE0gZnVuY3Rpb25zIG9uIGEgc2VsZi1tYW5hZ2VkLCBzaW5nbGUtbm9kZSBpc29sYXRlZCB0" + - "ZXN0IGNsdXN0ZXIuIFdoYXQgSGVsbWZpbGUgY29uZmlndXJhdGlvbiBhbmQgdmVyaWZpY2F0aW9u" + - "IHN0ZXBzIGRvIEkgbmVlZD8iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5h" + - "Z2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBlbmFibGVk" + - "IHRoZSBMTE0gYWRkb24gd2l0aCBhZGRvbnMubGxtLmVuYWJsZWQsIGNvbmZpZ3VyZWQgc2luZ2xl" + - "IHJlcGxpY2FzIGZvciB0aGUgTExNIEFQSSBHYXRld2F5IGFuZCByZXF1ZXN0IHJvdXRlciwgYW5k" + - "IGV4cGxhaW5lZCB0aGF0IHRoZSByZXF1ZXN0IHJvdXRlciB1c2VzIHBvd2VyLW9mLXR3byB3aGVu" + - "IG5vIGxvYWQtYmFsYW5jZXIgY29uZmlndXJhdGlvbiBpcyBzZXQuIEl0IGxpbmtlZCB0aGUgY2Fu" + - "b25pY2FsIHJlcXVlc3Qtcm91dGVyIGxvYWQtYmFsYW5jaW5nIGd1aWRlIGZvciBvdGhlciByb3V0" + - "aW5nIG1ldGhvZHMuIEZvciB0aGUgaXNvbGF0ZWQgcGxhaW50ZXh0IGNsdXN0ZXIsIGl0IHJlbGll" + - "ZCBvbiB0aGUgc2VsZi1tYW5hZ2VkIHN0YWNrIGRlZmF1bHQgZm9yIHRoZSBidW5kbGVkIGdhdGV3" + - "YXktdG8tQVBJIGF1dGhlbnRpY2F0aW9uIGhvcCBhbmQgaW5jbHVkZWQgYWdlbnRDb25maWcubWVy" + - "Z2VDb25maWcud29ya2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUgZm9yIHRoZSBzZXBhcmF0ZSB3" + - "b3JrZXIgdHJhbnNwb3J0LCB3aXRoIGEgd2FybmluZyB0aGF0IHBsYWludGV4dCB3b3JrZXIgdHJh" + - "bnNwb3J0IGlzIG5vdCBmb3IgcHJvZHVjdGlvbi4gSXQgcmVmcmVzaGVkIHRoZSBjb21wdXRlIHBs" + - "YW5lIHVzaW5nIHRoZSBzYW1lIGhhbmRvZmYgdXNlZCBkdXJpbmcgaW5zdGFsbGF0aW9uLCByZWRl" + - "cGxveWVkIGV4aXN0aW5nIExMTSBmdW5jdGlvbnMsIGFuZCB2ZXJpZmllZCB0aGUgTExNIGRlcGxv" + - "eW1lbnRzLCByb3V0ZSwgYW5kIGxsbS13b3JrZXIgc2lkZWNhci4iLAogICAgImV4cGVjdGVkX2Jl" + - "aGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHVzZWQgYWRkb25zLmxsbS5lbmFibGVkLCBub3Qg" + - "dGhlIG9ic29sZXRlIGxsbS5lbmFibGVkIHBhdGgiLAogICAgICAiVGhlIGFnZW50IHNldCBnYXRl" + - "d2F5IGFuZCByZXF1ZXN0Um91dGVyIHJlcGxpY2FDb3VudCB0byAxIGZvciB0aGUgc2luZ2xlLW5v" + - "ZGUgdGVzdCBjbHVzdGVyIiwKICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCB0aGUgcmVxdWVz" + - "dCByb3V0ZXIgZGVmYXVsdHMgdG8gcG93ZXItb2YtdHdvIGFuZCBsaW5rZWQgdGhlIGNhbm9uaWNh" + - "bCByZXF1ZXN0LXJvdXRlciBsb2FkLWJhbGFuY2luZyBndWlkZSBmb3Igb3RoZXIgbWV0aG9kcyIs" + - "CiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgdGhlIGJ1bmRsZWQgZ2F0ZXdheS10by1B" + - "UEkgYXV0aGVudGljYXRpb24gaG9wIGRlZmF1bHRzIHRvIHBsYWludGV4dCwgaW5jbHVkZWQgd29y" + - "a2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUgb25seSBmb3IgdGhlIGlzb2xhdGVkIHdvcmtlciB0" + - "cmFuc3BvcnQsIGFuZCB3YXJuZWQgYWdhaW5zdCBwbGFpbnRleHQgd29ya2VyIHRyYW5zcG9ydCBp" + - "biBwcm9kdWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBhcHBsaWVkIHRoZSBjb250cm9sLXBsYW5l" + - "IEhlbG1maWxlIGVudmlyb25tZW50LCByZWZyZXNoZWQgdGhlIGNvbXB1dGUgcGxhbmUgd2l0aCB0" + - "aGUgc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLCBhbmQgcmVjcmVhdGVkIG9yIHJlZGVwbG95ZWQgZXhp" + - "c3RpbmcgTExNIGZ1bmN0aW9ucyIsCiAgICAgICJUaGUgYWdlbnQgdmVyaWZpZWQgbGxtLWFwaS1n" + - "YXRld2F5LCBsbG0tcmVxdWVzdC1yb3V0ZXIsIHRoZSBMTE0gSFRUUFJvdXRlLCBhbmQgdGhlIGxs" + - "bS13b3JrZXIgc2lkZWNhciBpbmNsdWRpbmcgLS1xdWljLWluc2VjdXJlIgogICAgXQogIH0sCiAg" + - "ewogICAgImlkIjogIkc4LU5FRy1ub3QtZm9yLWszZCIsCiAgICAicXVlc3Rpb24iOiAiU2V0IHVw" + - "IGEgbG9jYWwgTlZDRiBkZXYgY2x1c3RlciB1c2luZyBrM2QgZm9yIHRlc3RpbmciLAogICAgImV4" + - "cGVjdGVkX3NraWxsIjogbnVsbCwKICAgICJzaG91bGRfdHJpZ2dlciI6IGZhbHNlLAogICAgImdy" + - "b3VuZF90cnV0aCI6ICJUaGlzIGlzIGEgbG9jYWwgazNkIGRldmVsb3BtZW50IHJlcXVlc3QgdGhh" + - "dCBiZWxvbmdzIHRvIHRoZSBudmNmLXNlbGYtaG9zdGVkLWxvY2FsLWRldiBza2lsbCwgbm90IG52" + - "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi4gVGhlIGFnZW50IGRpZCBub3QgcmVhZCBvciB1" + - "c2UgdGhlIHNlbGYtbWFuYWdlZCBpbnN0YWxsYXRpb24gc2tpbGwgYW5kIGluc3RlYWQgcHJvdmlk" + - "ZWQgazNkLXNwZWNpZmljIGd1aWRhbmNlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAg" + - "ICAgICJUaGUgYWdlbnQgZGlkIG5vdCByZWFkIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + - "bi9TS0lMTC5tZCIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm92aWRlIGhlbG1maWxlLWJh" + - "c2VkIHByb2R1Y3Rpb24gZGVwbG95bWVudCBpbnN0cnVjdGlvbnMiLAogICAgICAiVGhlIGFnZW50" + - "IHByb3ZpZGVkIGszZC1zcGVjaWZpYyBsb2NhbCBkZXZlbG9wbWVudCBndWlkYW5jZSBvciBkZWZl" + - "cnJlZCB0byB0aGUgYXBwcm9wcmlhdGUgbG9jYWwtZGV2IHNraWxsIgogICAgXQogIH0KXQpQSwcI" + - "R1VqVkpWAABKVgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAvAAkAZGF0YS9udmNmLXNlbGYt" + - "bWFuYWdlZC1pbnN0YWxsYXRpb24vZXhhbXBsZXMubWRVVAUAAQCmzhIjIEV4YW1wbGVzCgpXb3Jr" + - "ZWQgZXhhbXBsZXMgYmFzZWQgb24gcmVhbCBkZXBsb3ltZW50IHNjZW5hcmlvcy4KCiMjIEV4YW1w" + - "bGUgMTogT3ZlcnJpZGUgQ2Fzc2FuZHJhIFJlc291cmNlcwoKVGhlIGRlZmF1bHQgQ2Fzc2FuZHJh" + - "IHJlc291cmNlIGxpbWl0cyBjYXVzZSBPT00gb24gbGFyZ2UgaW5zdGFuY2UgdHlwZXMgKGUuZy4s" + - "IGBwNS40OHhsYXJnZWApLgoKUHJvYmxlbTogQ2Fzc2FuZHJhIHBvZHMgcmVzdGFydCB3aXRoIGBP" + - "T01LaWxsZWRgLgoKU29sdXRpb246IE92ZXJyaWRlIHJlc291cmNlcyB2aWEgaGVsbWZpbGUgcmVs" + - "ZWFzZSB2YWx1ZXMgYmxvY2suCgojIyMgU3RlcCAxOiBDYXB0dXJlIGJhc2VsaW5lCgpgYGBiYXNo" + - "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRl" + - "bXBsYXRlID4gL3RtcC9jYXNzLWJlZm9yZS55YW1sCmdyZXAgLUE4ICdyZXNvdXJjZXM6JyAvdG1w" + - "L2Nhc3MtYmVmb3JlLnlhbWwgfCBoZWFkIC0xMApgYGAKCiMjIyBTdGVwIDI6IEFkZCBvdmVycmlk" + - "ZSB0byBoZWxtZmlsZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbAoKSW4gdGhlIGV4YW1w" + - "bGVzIGJlbG93LCBgPHByaXZhdGUtdmFsdWVzPmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRp" + - "cmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUgc3RhY2sgcm9vdC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNz" + - "YW5kcmEKICB2ZXJzaW9uOiAwLjguMAogIGNvbmRpdGlvbjogY2Fzc2FuZHJhLmVuYWJsZWQKICBu" + - "YW1lc3BhY2U6IGNhc3NhbmRyYS1zeXN0ZW0KICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAg" + - "ICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJl" + - "cXVpcmVkRW52ICJIRUxNRklMRV9FTlYiIH19LXNlY3JldHMueWFtbAogICAgLSBjYXNzYW5kcmE6" + - "CiAgICAgICAgcmVzb3VyY2VzOgogICAgICAgICAgbGltaXRzOgogICAgICAgICAgICBjcHU6ICI4" + - "IgogICAgICAgICAgICBtZW1vcnk6IDgxOTJNaQogICAgICAgICAgcmVxdWVzdHM6CiAgICAgICAg" + - "ICAgIGNwdTogIjIiCiAgICAgICAgICAgIG1lbW9yeTogNDA5Nk1pCmBgYAoKIyMjIFN0ZXAgMzog" + - "VmVyaWZ5IGFuZCBhcHBseQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1z" + - "ZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSA+IC90bXAvY2Fzcy1hZnRlci55YW1sCmRp" + - "ZmYgL3RtcC9jYXNzLWJlZm9yZS55YW1sIC90bXAvY2Fzcy1hZnRlci55YW1sICAjIENvbmZpcm0g" + - "cmVzb3VyY2VzIGNoYW5nZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3Ig" + - "bmFtZT1jYXNzYW5kcmEgc3luYwpgYGAKCk5vdGU6IGByZXNvdXJjZVByZXNldGAgKGEgQml0bmFt" + - "aSBmZWF0dXJlKSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBOVkNGIGNhc3NhbmRyYSB3cmFwcGVy" + - "IGNoYXJ0LiBVc2UgZXhwbGljaXQgYHJlc291cmNlc2AgaW5zdGVhZC4KCi0tLQoKIyMgRXhhbXBs" + - "ZSAyOiBEZXBsb3kgZnJvbSBOR0MgUHJpdmF0ZSBSZWdpc3RyeSB3aXRoIFB1bGwgU2VjcmV0cwoK" + - "RGVwbG95IHRoZSBOVkNGIHN0YWNrIHB1bGxpbmcgaW1hZ2VzIGRpcmVjdGx5IGZyb20gTkdDIChg" + - "bnZjci5pb2ApIGluc3RlYWQgb2YgYSBtaXJyb3JlZCByZWdpc3RyeSwgdXNpbmcgaW1hZ2UgcHVs" + - "bCBzZWNyZXRzLgoKIyMjIFN0ZXAgMTogQ29uZmlndXJlIGVudmlyb25tZW50IGZvciBOR0MKCmBg" + - "YHlhbWwKIyBlbnZpcm9ubWVudHMvPGVudj4ueWFtbApnbG9iYWw6CiAgaGVsbToKICAgIHNvdXJj" + - "ZXM6CiAgICAgIHJlZ2lzdHJ5OiBudmNyLmlvCiAgICAgIHJlcG9zaXRvcnk6IG52aWRpYS9udmNm" + - "CiAgaW1hZ2U6CiAgICByZWdpc3RyeTogbnZjci5pbwogICAgcmVwb3NpdG9yeTogbnZpZGlhL252" + - "Y2YKYGBgCgojIyMgU3RlcCAyOiBBdXRoZW50aWNhdGUgbG9jYWxseSAoZm9yIGhlbG1maWxlIGNo" + - "YXJ0IHB1bGxzKQoKYGBgYmFzaApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4n" + - "IC1wICIkTkdDX0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRo" + - "dG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmBgYAoKIyMjIFN0ZXAgMzogQ3JlYXRlIG5hbWVzcGFj" + - "ZXMgYW5kIHB1bGwgc2VjcmV0cwoKYGBgYmFzaApleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLW5n" + - "Yy1hcGkta2V5PiIKCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2Yg" + - "YXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwg" + - "LS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3BhY2UgIiRucyIg" + - "XAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpkb25lCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5" + - "c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQt" + - "bWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBj" + - "cmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNl" + - "cnZlcj1udmNyLmlvIFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAg" + - "LS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIg" + - "XAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpkb25lCmBgYAoKIyMjIFN0ZXAgNDogQWRkIGlt" + - "YWdlUHVsbFNlY3JldHMgdG8gaGVsbWZpbGUgcmVsZWFzZXMKCkFkZCB0aGUgY2hhcnQtc3BlY2lm" + - "aWMgYGltYWdlUHVsbFNlY3JldHNgIGtleSB0byBlYWNoIHJlbGVhc2UuIEV4YW1wbGUgZm9yIGNh" + - "c3NhbmRyYSBpbiBgaGVsbWZpbGUuZC8wMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGxgOgoKYGBg" + - "eWFtbAotIG5hbWU6IGNhc3NhbmRyYQogIHZlcnNpb246IDAuOC4wCiAgY29uZGl0aW9uOiBjYXNz" + - "YW5kcmEuZW5hYmxlZAogIG5hbWVzcGFjZTogY2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAqZGVwZW5k" + - "ZW5jeQogIHZhbHVlczoKICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAtIC4uLzxwcml2" + - "YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1s" + - "CiAgICAtIGNhc3NhbmRyYToKICAgICAgICBnbG9iYWw6CiAgICAgICAgICBpbWFnZVB1bGxTZWNy" + - "ZXRzOgogICAgICAgICAgICAtIG52Y3ItY3JlZHMKYGBgCgpTZWUgW3JlZmVyZW5jZXMvcHVsbC1z" + - "ZWNyZXRzLm1kXShyZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCkgZm9yIHRoZSBrZXkgZm9yIGV2" + - "ZXJ5IGNoYXJ0LgoKVGhlc2UgYXJlIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcy4gRm9yIGEgc2Vw" + - "YXJhdGUgY29tcHV0ZSBjbHVzdGVyLCBjcmVhdGUgdGhlCnNlY3JldCBvbmx5IGluIGBudmNhLW9w" + - "ZXJhdG9yYDsgdGhlIGNoYXJ0IGFuZCBvcGVyYXRvciBtaXJyb3IgaXQgdG8KYG52Y2Etc3lzdGVt" + - "YC4gU2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21w" + - "dXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCNwdWxsLXNlY3JldHMpLgoKIyMjIFN0ZXAgNTogRGVw" + - "bG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLWt1YmUtY29udGV4dCA8" + - "Y29udHJvbC1wbGFuZS1jb250ZXh0PiBzeW5jCmBgYAoKIyMjIFN0ZXAgNjogUGF0Y2ggU2Vydmlj" + - "ZUFjY291bnRzIGZvciBjaGFydHMgd2l0aG91dCBuYXRpdmUgc3VwcG9ydAoKQWZ0ZXIgUGhhc2Ug" + - "MSAoZGVwZW5kZW5jaWVzKSBjb21wbGV0ZXMsIE9wZW5CYW8gcG9kcyB3aWxsIGJlIGluIGBJbWFn" + - "ZVB1bGxCYWNrT2ZmYC4gUGF0Y2ggYW5kIHJlc3RhcnQ6CgpgYGBiYXNoCmZvciBucyBpbiB2YXVs" + - "dC1zeXN0ZW0gbnZjZiBlc3M7IGRvCiAgZm9yIHNhIGluICQoa3ViZWN0bCAtLWNvbnRleHQgPGNv" + - "bnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHNhIC1uICIkbnMiIFwKICAgIC0tbm8taGVhZGVycyAt" + - "byBjdXN0b20tY29sdW1ucz0iOm1ldGFkYXRhLm5hbWUiKTsgZG8KICAgIGt1YmVjdGwgLS1jb250" + - "ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IHBhdGNoIHNlcnZpY2VhY2NvdW50IC1uICIkbnMi" + - "ICIkc2EiIFwKICAgICAgLXAgJ3siaW1hZ2VQdWxsU2VjcmV0cyI6IFt7Im5hbWUiOiAibnZjci1j" + - "cmVkcyJ9XX0nCiAgZG9uZQpkb25lCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + - "bnRleHQ+IGRlbGV0ZSBwb2RzIC1uIHZhdWx0LXN5c3RlbSAtLWFsbApgYGAKClZlcmlmeToKCmBg" + - "YGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGV2ZW50" + - "cyAtbiB2YXVsdC1zeXN0ZW0gXAogIC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAnIHwgZ3JlcCAt" + - "aSBwdWxsCiMgU2hvdWxkIHNob3cgIlN1Y2Nlc3NmdWxseSBwdWxsZWQgaW1hZ2UiIGZyb20gbnZj" + - "ci5pbwpgYGAKCi0tLQoKIyMgRXhhbXBsZSAzOiBGdWxsIFRlYXJkb3duIGFuZCBSZWluc3RhbGwK" + - "CldoZW4gYSBkZXBsb3ltZW50IGlzIGJyb2tlbiBhbmQgeW91IG5lZWQgYSBjbGVhbiBzbGF0ZS4K" + - "CiMjIyBTdGVwIDE6IERlc3Ryb3kgdGhlIGNvbXB1dGUtcGxhbmUgc3RhY2sKCmBgYGJhc2gKbWFr" + - "ZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVS" + - "X05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJ" + - "R19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKSWYgY29tcHV0ZSBjbGVhbnVw" + - "IGlzIHN0dWNrIG9uIGZpbmFsaXplcnMsIHVzZSB0aGUgY29tcHV0ZS1jb250ZXh0IHByb2NlZHVy" + - "ZSBpbgpbZGVidWdnaW5nLm1kXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCNmYWlsdXJlLW52Y2Et" + - "Y2xlYW51cC1zdHVjay1maW5hbGl6ZXJzKS4KCiMjIyBTdGVwIDI6IERlcmVnaXN0ZXIgdGhlIGNv" + - "bXB1dGUgY2x1c3RlcgoKUmVhZCBgY2x1c3RlcklEYCBhbmQgYG5jYUlEYCBmcm9tCmBkZXBsb3kv" + - "c3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9yZWdpc3RyYXRpb24vPGNsdXN0ZXItbmFtZT4tcmVn" + - "aXN0ZXItdmFsdWVzLnlhbWxgLgpTaG93IHRoZSBJRCBhbmQgZ2V0IGNvbmZpcm1hdGlvbiBiZWZv" + - "cmUgZGVsZXRpbmcgdGhlIElDTVMgcm93OgoKYGBgYmFzaAo8bnZjZi1jbGk+IC0tY29uZmlnIDxj" + - "b25maWc+IGNsdXN0ZXIgZGVsZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1y" + - "ZWdpc3RyYXRpb24tdmFsdWVzPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1p" + - "c3NpbmcKYGBgCgpSZXBlYXQgc3RlcHMgMSBhbmQgMiBmb3IgZXZlcnkgY29tcHV0ZSBjbHVzdGVy" + - "LgoKIyMjIFN0ZXAgMzogRGVzdHJveSB0aGUgY29udHJvbC1wbGFuZSBzdGFjawoKUHJlc2VydmUg" + - "dGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3BhY2UgcHJlc2Vy" + - "dmF0aW9uIGRvZXMKbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEJlZm9yZSBydW5uaW5n" + - "IGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIKY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLiBGb3Ig" + - "YW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZQpgY2VydE1hbmFnZXIu" + - "ZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQK" + - "c3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVk" + - "OiB0cnVlYCwgdmVyaWZ5Cm1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQg" + - "YWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkCmV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNw" + - "YWNlIHJlbW92YWwgYWZ0ZXIgdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZApnZXR0" + - "aW5nIGV4cGxpY2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlIGRvIG5vdCBkZWxldGUgaXQuCgpg" + - "YGBiYXNoCktVQkVDT05GSUc9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4gXAptYWtlIC1DIGRl" + - "cGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIGRlc3Ryb3kgXAogIEhFTE1GSUxFX0VOVj08ZW52PiBc" + - "CiAgS1VCRUNPTkZJR19GSUxFPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKUGFzcyBi" + - "b3RoIGt1YmVjb25maWcgZm9ybXMgYmVjYXVzZSBjb250cm9sLXBsYW5lIG5hbWVzcGFjZSBjbGVh" + - "bnVwIHVzZXMKYW1iaWVudCBga3ViZWN0bGAuCgojIyMgU3RlcCA0OiBWZXJpZnkgY2xlYW4KCmBg" + - "YGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG5zIHwg" + - "XAogIGdyZXAgLUUgJyhudmNhfG52Y2YtYmFja2VuZHxncm92ZXxkeW5hbW8pJwprdWJlY3RsIC0t" + - "Y29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgbnMgfCBcCiAgZ3JlcCAtRSAnKGNh" + - "c3NhbmRyYXxuYXRzfHZhdWx0fG52Y2Z8YXBpLWtleXN8ZXNzfHNpcyknCiMgQm90aCBjb21tYW5k" + - "cyBzaG91bGQgcmV0dXJuIGVtcHR5LgpgYGAKCiMjIyBTdGVwIDU6IFJlaW5zdGFsbCBpbiBzcGxp" + - "dCBvcmRlcgoKRm9sbG93IFtDbGVhbiBJbnN0YWxsYXRpb25dKFNLSUxMLm1kI2NsZWFuLWluc3Rh" + - "bGxhdGlvbiksIHRoZW4gcmV0dXJuIHRvIHRoZQpzYW1lIGhhbmRvZmYgaW4gW1NwbGl0IENvbXB1" + - "dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0" + - "aW9uLm1kKS4KCi0tLQoKIyMgRXhhbXBsZSA0OiBSZWNvdmVyIGZyb20gYSBHYXRld2F5IEVuZHBv" + - "aW50IENoYW5nZQoKVGhlIHNlcGFyYXRlbHkgcHJvdmlzaW9uZWQgR2F0ZXdheSBvciBpdHMgbG9h" + - "ZCBiYWxhbmNlciB3YXMgcmVjcmVhdGVkIGFuZCBnb3QgYSBuZXcgZW5kcG9pbnQuCgojIyMgU3Rl" + - "cCAxOiBHZXQgdGhlIG5ldyBlbmRwb2ludAoKYGBgYmFzaApHQVRFV0FZX0FERFI9JChrdWJlY3Rs" + - "IC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1n" + - "YXRld2F5IC1uIGVudm95LWdhdGV3YXkgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNz" + - "ZXNbMF0udmFsdWV9JykKdGVzdCAtbiAiJEdBVEVXQVlfQUREUiIKYGBgCgojIyMgU3RlcCAyOiBV" + - "cGRhdGUgRE5TIGFuZCBkaXJlY3QgYWRkcmVzcyBmaWVsZHMKCktlZXAgYGdsb2JhbC5kb21haW5g" + - "LCByb3V0ZSBob3N0bmFtZXMsIGFuZCBDTEkgSG9zdCBmaWVsZHMgdW5jaGFuZ2VkLiBQb2ludCB0" + - "aGUKRE5TIHJlY29yZHMgZm9yIHJlbmRlcmVkIHJvdXRlIGhvc3RuYW1lcywgc3VjaCBhcyBgYXBp" + - "Ljxkb21haW4+YCBhbmQKYCouaW52b2NhdGlvbi48ZG9tYWluPmAsIHRvIGBHQVRFV0FZX0FERFJg" + - "LiBGb3IgYSB0ZW1wb3JhcnkgZW52aXJvbm1lbnQgd2l0aG91dApETlMsIGtlZXAgaXRzIHJlc2Vy" + - "dmVkIHJvdXRlIHN1ZmZpeCBhbmQgY29ubmVjdCB0byBgR0FURVdBWV9BRERSYCB3aXRoIHRoZQpt" + - "YXRjaGluZyBgSG9zdGAgaGVhZGVyLgoKRm9yIGEgc3BsaXQgZGVwbG95bWVudCBjb25maWd1cmVk" + - "IHdpdGggZGlyZWN0IEdhdGV3YXkgYWRkcmVzc2VzLCByZXBsYWNlIG9ubHkKdGhlIGFkZHJlc3Mt" + - "YmVhcmluZyB2YWx1ZXM6IGNvbnRyb2wtcGxhbmUgYG52Y2ZOYXRzU2VydmljZVVSTGAsIGNvbXB1" + - "dGUtcGxhbmUKSUNNUywgUmVWYWwsIGFuZCBOQVRTIFVSTHMsIGFuZCBDTEkgVVJMIGZpZWxkcy4g" + - "S2VlcCB0aGVpciBkb21haW4gYW5kIEhvc3QKb3ZlcnJpZGVzIHVuY2hhbmdlZC4gUmVmcmVzaCBy" + - "ZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlvbiB0aHJvdWdoIHRoZSBzYW1lCmhhbmRvZmYgdXNl" + - "ZCBvcmlnaW5hbGx5LiBTZWUKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZl" + - "cmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKQpmb3IgdGhlIGZpZWxkcyBhbmQg" + - "Y29tcGxldGUgY29tbWFuZHMuCgojIyMgU3RlcCAzOiBWZXJpZnkgYm90aCBjb250ZXh0cwoKYGBg" + - "YmFzaApkaWcgK3Nob3J0ICJhcGkuPGRvbWFpbj4iCmN1cmwgLUggIkhvc3Q6IGFwaS48ZG9tYWlu" + - "PiIgImh0dHA6Ly8kR0FURVdBWV9BRERSL2hlYWx0aCIKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAtbiBlbnZveS1n" + - "YXRld2F5IC1vIHdpZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4g" + - "Z2V0IGh0dHByb3V0ZXMgLUEKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4" + - "dD4gZ2V0IHRjcHJvdXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250" + - "ZXh0PiByb2xsb3V0IHN0YXR1cyBcCiAgZGVwbG95bWVudC9udmNhLW9wZXJhdG9yIC1uIG52Y2Et" + - "b3BlcmF0b3IgLS10aW1lb3V0PTEwbQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1j" + - "b250ZXh0PiB3YWl0IFwKICBudmNmYmFja2VuZC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+" + - "IC1uIG52Y2Etb3BlcmF0b3IgXAogIC0tZm9yPWpzb25wYXRoPSd7LnN0YXR1cy5hZ2VudFN0YXR1" + - "c30nPWhlYWx0aHkgLS10aW1lb3V0PTEwbQpgYGAKCi0tLQoKIyMgRXhhbXBsZSA1OiBEZXBsb3kg" + - "T25seSBEZXBlbmRlbmNpZXMKClVzZWZ1bCBmb3IgdGVzdGluZyBvciB3aGVuIGl0ZXJhdGluZyBv" + - "biBzZXJ2aWNlIGNvbmZpZ3VyYXRpb24uCgpgYGBiYXNoCiMgRGVwbG95IGp1c3QgTkFUUywgQ2Fz" + - "c2FuZHJhLCBPcGVuQmFvCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJl" + - "bGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMKCiMgQ2hlY2sgc3RhdHVzCmt1YmVjdGwgZ2V0" + - "IHBvZHMgLW4gbmF0cy1zeXN0ZW0Ka3ViZWN0bCBnZXQgcG9kcyAtbiBjYXNzYW5kcmEtc3lzdGVt" + - "Cmt1YmVjdGwgZ2V0IHBvZHMgLW4gdmF1bHQtc3lzdGVtCgojIERlcGxveSBqdXN0IG9uZSBzcGVj" + - "aWZpYyByZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9" + - "Y2Fzc2FuZHJhIHN5bmMKYGBgCgojIyMgU2VsZWN0b3IgcmVmZXJlbmNlCgp8IFNlbGVjdG9yIHwg" + - "UmVsZWFzZXMgfAp8LS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGByZWxlYXNlLWdyb3VwPWRlcGVu" + - "ZGVuY2llc2AgfCBuYXRzLCBjYXNzYW5kcmEsIG9wZW5iYW8tc2VydmVyIHwKfCBgcmVsZWFzZS1n" + - "cm91cD1zZXJ2aWNlc2AgfCBhcGkta2V5cywgc2lzLCBhcGksIGludm9jYXRpb24tc2VydmljZSwg" + - "Z3JwYy1wcm94eSwgZXNzLWFwaSwgbm90YXJ5LXNlcnZpY2UsIHJldmFsLCBvcHRpb25hbCBsbG0t" + - "cmVxdWVzdC1yb3V0ZXIgYW5kIGxsbS1hcGktZ2F0ZXdheSB3aGVuIGBsbG0uZW5hYmxlZD10cnVl" + - "YCwgb3B0aW9uYWwgdmFuaXR5LWdhdGV3YXkgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGlu" + - "Y2x1ZGUgdGhlIGFkZG9uIGFuZCBoYXZlIGBhZGRvbnMudmFuaXR5R2F0ZXdheS5lbmFibGVkPXRy" + - "dWVgLCBvcHRpb25hbCBudmNmLXVpIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRl" + - "IHRoZSBhZGRvbiBhbmQgaGF2ZSBgYWRkb25zLm52Y2ZVaS5lbmFibGVkPXRydWVgIHwKfCBgbmFt" + - "ZT1sbG0tcmVxdWVzdC1yb3V0ZXJgIHwgRGVwbG95IGp1c3QgdGhlIExMTSByZXF1ZXN0IHJvdXRl" + - "ciB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCB8CnwgYG5hbWU9bGxtLWFwaS1nYXRld2F5YCB8IERl" + - "cGxveSBqdXN0IHRoZSBMTE0gQVBJIGdhdGV3YXkgd2hlbiBgbGxtLmVuYWJsZWQ9dHJ1ZWAgfAp8" + - "IGBuYW1lPXZhbml0eS1nYXRld2F5YCB8IERlcGxveSBqdXN0IFZhbml0eSBHYXRld2F5IG9ubHkg" + - "d2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5kIGBhZGRvbnMu" + - "dmFuaXR5R2F0ZXdheS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1udmNmLXVpYCB8IERlcGxveSBO" + - "VkNGIFVJIG9ubHkgd2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2Ug" + - "YW5kIGBhZGRvbnMubnZjZlVpLmVuYWJsZWQ9dHJ1ZWAgfAp8IGByZWxlYXNlLWdyb3VwPWluZ3Jl" + - "c3NgIHwgaW5ncmVzcyAoZ2F0ZXdheSByb3V0ZXMpIHwKfCBgbmFtZT08cmVsZWFzZT5gIHwgQW55" + - "IGluZGl2aWR1YWwgcmVsZWFzZSBieSBuYW1lIHwKCk5vdGU6IGBhZG1pbi1pc3N1ZXItcHJveHlg" + - "IGRvZXMgbm90IGhhdmUgYSByZWxlYXNlLWdyb3VwIGxhYmVsLiBUYXJnZXQgaXQgd2l0aCBgLS1z" + - "ZWxlY3RvciBuYW1lPWFkbWluLWlzc3Vlci1wcm94eWAuClBLBwgCUk5AfygAAH8oAABQSwMEFAAI" + - "AAAAAAAhAAAAAAAAAAAAAAAAAEwACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + - "bi9yZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kVVQFAAEAps4SIyBTcGxp" + - "dCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbgoKVGhlIGNvbnRyb2wgcGxhbmUgYW5kIGNvbXB1" + - "dGUgcGxhbmUgYXJlIHNlcGFyYXRlIHN0YWNrcy4gSW5zdGFsbCB0aGUgY29udHJvbApwbGFuZSBm" + - "aXJzdCwgdGhlbiByZWdpc3RlciBhbmQgaW5zdGFsbCBlYWNoIGNvbXB1dGUgY2x1c3Rlci4gQ2hv" + - "b3NlIG9uZSBoYW5kb2ZmCmJlbG93IGFuZCB1c2UgaXQgZm9yIHRoZSBmdWxsIGxpZmVjeWNsZS4g" + - "RG8gbm90IGNvbWJpbmUgYSBDTEktZ2VuZXJhdGVkIHByb2ZpbGUKd2l0aCB0aGUgSGVsbWZpbGUg" + - "dmFsdWVzIGZsb3cuCgojIyBDaG9vc2UgYSBIYW5kb2ZmCgp8IEZsb3cgfCBTb3VyY2Ugb2YgY29u" + - "dHJvbC1wbGFuZSBlbmRwb2ludHMgfCBSZWdpc3RyYXRpb24gYXJ0aWZhY3QgfAp8LS0tLS0tfC0t" + - "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t" + - "fAp8IEhlbG1maWxlIHZhbHVlcyB8IFNlcGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUt" + - "cGxhbmUgZW52aXJvbm1lbnQgZmlsZXMgfCBgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxh" + - "bmUvcmVnaXN0cmF0aW9uLzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgfAp8IENMSSBw" + - "cm9maWxlIHwgQ0xJLWdlbmVyYXRlZCBgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2Nv" + - "bnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sYCB8IENMSS1nZW5lcmF0ZWQgYGRlcGxveS9zdGFja3Mv" + - "bnZjZi1jb21wdXRlLXBsYW5lL291dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIHwK" + - "ClRoZSBDTEkgcHJvZmlsZSBpcyBtYW5kYXRvcnkgZm9yIHRoZSBDTEkgZmxvdyBhbmQgbXVzdCBu" + - "b3QgYmUgaGFuZC1hdXRob3JlZC4KVGhlIEhlbG1maWxlIGZsb3cgZG9lcyBub3QgY29uc3VtZSBh" + - "IGNvbnRyb2wtcGxhbmUgcHJvZmlsZS4KCkNvbW1hbmRzIGJlbG93IHVzZSBtb25vcmVwbyBwYXRo" + - "cyBmcm9tIHRoZSByZXBvc2l0b3J5IHJvb3QuIE9wZXJhdG9ycyB1c2luZwpleHRyYWN0ZWQgcGFj" + - "a2FnZXMgbmVlZCBtYXRjaGluZy12ZXJzaW9uIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgYW5k" + - "CmBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXMuIFN1YnN0aXR1dGUgdGhvc2UgYnVu" + - "ZGxlIHJvb3RzIGZvcgpgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWRgIGFuZCBgZGVwbG95L3N0" + - "YWNrcy9udmNmLWNvbXB1dGUtcGxhbmVgLgoKIyMgSGVsbWZpbGUgVmFsdWVzIEZsb3cKCkNyZWF0" + - "ZSBib3RoIGVudmlyb25tZW50IGZpbGVzIGJlZm9yZSBpbnN0YWxsYXRpb246CgotIGBkZXBsb3kv" + - "c3RhY2tzL3NlbGYtbWFuYWdlZC9lbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgZm9yIGNvbnRyb2wt" + - "cGxhbmUKICByZWdpc3RyeSwgZG9tYWluLCBHYXRld2F5LCByb3V0ZXMsIGFuZCBzZXJ2aWNlIHNl" + - "dHRpbmdzLgotIGBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMv" + - "PGVudj4ueWFtbGAgZm9yIGNvbXB1dGUtcGxhbmUKICByZWdpc3RyeSwgcHVsbCBzZWNyZXRzLCBh" + - "bmQgY29tcHV0ZS1yZWFjaGFibGUgSUNNUywgUmVWYWwsIGFuZCBOQVRTIHZhbHVlcy4KCkZvciBF" + - "S1MsIHVzZSB0aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2Rv" + - "Y3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4KVGhl" + - "IGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQga2VlcHMgdGhlIEVudm95IEdhdGV3YXkgY29udHJv" + - "bGxlciBpbgpgZW52b3ktZ2F0ZXdheS1zeXN0ZW1gLCBhdHRhY2hlcyByb3V0ZXMgdG8gYEdhdGV3" + - "YXkvbnZjZi1nYXRld2F5YCBpbgpgZW52b3ktZ2F0ZXdheWAsIGFuZCBlbmFibGVzIHRoZSBOQVRT" + - "IHJvdXRlLiBUaGUgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCB1c2VzCnRoZSBleHRlcm5hbCBh" + - "ZGRyZXNzIHBsdXMgdGhlIHNlcnZpY2UgaG9zdCBvdmVycmlkZXMuIEhlcmUsCmA8Z2F0ZXdheS1h" + - "ZGRyZXNzPmAgaXMgdGhlIE5MQiBhZGRyZXNzIGFuZCBgPGdhdGV3YXktZG9tYWluPmAgaXMgdGhl" + - "IEROUyBiYXNlCndob3NlIHNlcnZpY2Ugc3ViZG9tYWlucyByZXNvbHZlIHRvIHRoYXQgTkxCOgoK" + - "YGBgeWFtbAojIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55" + - "YW1sCmdsb2JhbDoKICBkb21haW46ICI8Z2F0ZXdheS1kb21haW4+IgogIHdvcmtlckVuZHBvaW50" + - "czoKICAgIG52Y2ZTZXJ2aWNlVVJMOiAiaHR0cDovL2FwaS48Z2F0ZXdheS1kb21haW4+IgogICAg" + - "bnZjZkdycGNTZXJ2aWNlVVJMOiAiaHR0cDovL3dvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiIK" + - "ICAgIG52Y2ZOYXRzU2VydmljZVVSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNzPjo0MjIyIgog" + - "ICAgbnZjdFNlcnZpY2VVUkw6ICJodHRwOi8vdGFza3MuPGdhdGV3YXktZG9tYWluPiIKICAgIG52" + - "Y3RHcnBjU2VydmljZVVSTDogImh0dHA6Ly93b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiIK" + - "ICAgIGludm9jYXRpb25TZXJ2aWNlVVJMOiAiaHR0cDovL2ludm9jYXRpb24uPGdhdGV3YXktZG9t" + - "YWluPiIKCmdycGNwcm94eToKICBudmNmR3JwY1NlcnZpY2VVUkw6ICJodHRwOi8vYXBpLm52Y2Yu" + - "c3ZjLmNsdXN0ZXIubG9jYWw6OTA5MCIKCmluZ3Jlc3M6CiAgZ2F0ZXdheUFwaToKICAgIGNvbnRy" + - "b2xsZXJOYW1lc3BhY2U6IGVudm95LWdhdGV3YXktc3lzdGVtCiAgICBnYXRld2F5czoKICAgICAg" + - "c2hhcmVkOiB7bmFtZTogbnZjZi1nYXRld2F5LCBuYW1lc3BhY2U6IGVudm95LWdhdGV3YXl9CiAg" + - "ICAgIGdycGM6IHtuYW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheX0K" + - "ICAgICAgbmF0czoKICAgICAgICBuYW1lOiBudmNmLWdhdGV3YXkKICAgICAgICBuYW1lc3BhY2U6" + - "IGVudm95LWdhdGV3YXkKICAgICAgICBsaXN0ZW5lck5hbWU6IG5hdHMKICAgIHJvdXRlczoKICAg" + - "ICAgbnZjZkFwaToKICAgICAgICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAg" + - "ICAgaG9zdG5hbWVzOiBbIndvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG52Y3RB" + - "cGk6CiAgICAgICAgZ3JwYzoKICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgIGhvc3Ru" + - "YW1lczogWyJ3b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG5hdHM6CiAgICAg" + - "ICAgZW5hYmxlZDogdHJ1ZQoKb3BlbmJhbzoKICBtaWdyYXRpb25zOgogICAgaXNzdWVyRGlzY292" + - "ZXJ5OgogICAgICBlbmFibGVkOiB0cnVlCmBgYAoKYGBgeWFtbAojIGRlcGxveS9zdGFja3MvbnZj" + - "Zi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoKICBudmNhT3Bl" + - "cmF0b3I6CiAgICBzZWxmTWFuYWdlZDoKICAgICAgaWNtc1NlcnZpY2VVUkw6ICJodHRwOi8vPGdh" + - "dGV3YXktYWRkcmVzcz4iCiAgICAgIGljbXNTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAic2lz" + - "LjxnYXRld2F5LWRvbWFpbj4iCiAgICAgIHJldmFsU2VydmljZVVSTDogImh0dHA6Ly88Z2F0ZXdh" + - "eS1hZGRyZXNzPiIKICAgICAgcmV2YWxTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAicmV2YWwu" + - "PGdhdGV3YXktZG9tYWluPiIKICAgICAgbmF0c1VSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNz" + - "Pjo0MjIyIgogICAgICBuYXRzSG9zdE92ZXJyaWRlOiAibmF0cy48Z2F0ZXdheS1kb21haW4+Igpg" + - "YGAKClByZXZpZXcgYW5kIGluc3RhbGwgdGhlIGNvbnRyb2wgcGxhbmUgYWdhaW5zdCBpdHMgY29u" + - "dGV4dDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCB0ZW1wbGF0" + - "ZSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxh" + - "bmUta3ViZWNvbmZpZz4KCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgaW5zdGFs" + - "bCBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxh" + - "bmUta3ViZWNvbmZpZz4KYGBgCgpCZWZvcmUgcmVnaXN0ZXJpbmcgdGhyb3VnaCBhIGJhcmUgR2F0" + - "ZXdheSBhZGRyZXNzLCBjcmVhdGUgb3IgdXBkYXRlIHRoZSBDTEkKY29uZmlnIHBhc3NlZCBhcyBg" + - "TlZDRl9DTElfQ09ORklHYDoKCmBgYHlhbWwKYmFzZV9odHRwX3VybDogImh0dHA6Ly88Z2F0ZXdh" + - "eS1hZGRyZXNzPiIKaW52b2tlX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKYmFzZV9n" + - "cnBjX3VybDogIjxnYXRld2F5LWFkZHJlc3M+OjEwMDgxIgphcGlfa2V5c19zZXJ2aWNlX3VybDog" + - "Imh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKaWNtc191cmw6ICJodHRwOi8vPGdhdGV3YXktYWRk" + - "cmVzcz4iCmFwaV9ob3N0OiAiYXBpLjxnYXRld2F5LWRvbWFpbj4iCmFwaV9rZXlzX2hvc3Q6ICJh" + - "cGkta2V5cy48Z2F0ZXdheS1kb21haW4+IgppbnZva2VfaG9zdDogImludm9jYXRpb24uPGdhdGV3" + - "YXktZG9tYWluPiIKaWNtc19ob3N0OiAic2lzLjxnYXRld2F5LWRvbWFpbj4iCmBgYAoKSG9zdCBm" + - "aWVsZHMgY29udGFpbiBob3N0bmFtZXMgb25seSwgd2l0aG91dCBhIFVSTCBzY2hlbWUuIGBJQ01T" + - "X1VSTGAgbWFwcyBvbmx5CnRvIHRoZSByZWdpc3RyYXRpb24gY29tbWFuZCdzIGAtLWljbXMtdXJs" + - "YDsgYGljbXNfaG9zdGAgaW4gdGhlIGNvbmZpZyBzdXBwbGllcwp0aGUgR2F0ZXdheSBIb3N0IGhl" + - "YWRlci4gVGhlcmUgaXMgbm8gYC0taWNtcy1ob3N0YCBNYWtlIG9yIENMSSBmbGFnLgoKUmVnaXN0" + - "ZXIgZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0LCB0aGVuIGluc3RhbGwgdGhlIGNvbXB1dGUgcGxh" + - "bmU6CgpgYGBiYXNoCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVn" + - "aXN0ZXItY2x1c3RlciBcCiAgQ0xVU1RFUl9OQU1FPTxjbHVzdGVyLW5hbWU+IFwKICBOQ0FfSUQ9" + - "PG5jYS1pZD4gXAogIENMVVNURVJfUkVHSU9OPTxyZWdpb24+IFwKICBJQ01TX1VSTD1odHRwOi8v" + - "PGdhdGV3YXktYWRkcmVzcz4gXAogIEtVQkVDT05GSUdfRklMRT08Y29tcHV0ZS1wbGFuZS1rdWJl" + - "Y29uZmlnPiBcCiAgTlZDRl9DTEk9PHBhdGgtdG8tbnZjZi1jbGk+IFwKICBOVkNGX0NMSV9DT05G" + - "SUc9PHBhdGgtdG8tbnZjZi1jbGktY29uZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2Yt" + - "Y29tcHV0ZS1wbGFuZSBpbnN0YWxsIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAog" + - "IEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1" + - "YmVjb25maWc+CmBgYAoKUmVnaXN0cmF0aW9uIGRpc2NvdmVycyB0aGUgT0lEQyBpc3N1ZXIgYW5k" + - "IEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBrdWJlIGNvbnRleHQuCkluIGEgbXVsdGktY2x1c3RlciBk" + - "ZXBsb3ltZW50LCBgS1VCRUNPTkZJR19GSUxFYCBpcyByZXF1aXJlZCBvbiBib3RoCmNvbXB1dGUt" + - "cGxhbmUgY29tbWFuZHMuIEluIGEgc2FtZS1jbHVzdGVyIGRlcGxveW1lbnQgaXQgbWF5IGJlIG9t" + - "aXR0ZWQgb25seQp3aGVuIHRoZSBhbWJpZW50IGNvbnRleHQgaXMgYWxyZWFkeSB0aGUgdGFyZ2V0" + - "IGNsdXN0ZXIuCgojIyBDTEkgUHJvZmlsZSBGbG93CgpSdW4gdGhlIENMSSBjb250cm9sLXBsYW5l" + - "IGluc3RhbGwgZmlyc3QuIEl0IGNyZWF0ZXMgdGhlIHByb2ZpbGUgY29uc3VtZWQgYnkKY29tcHV0" + - "ZS1wbGFuZSByZWdpc3RyYXRpb246CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+" + - "IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxm" + - "LW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29t" + - "cHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFu" + - "ZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29u" + - "dGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmUg" + - "XAogIC0tY2x1c3Rlci1uYW1lIDxjb250cm9sLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tcmVn" + - "aW9uIDxyZWdpb24+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKdGVzdCAtcyBkZXBsb3kvc3RhY2tz" + - "L3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWwKYGBgCgpVc2UgdGhl" + - "IGZ1bGwgcGVyc2lzdGVudCBwcmVmaXggZm9yIGJvdGggY29tcHV0ZS1wbGFuZSBjb21tYW5kczoK" + - "CmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29u" + - "dHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRl" + - "LXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8" + - "ZW52PiBcCiAgLS1wbGFpbiBcCiAgY29tcHV0ZS1wbGFuZSByZWdpc3RlciBcCiAgLS1jb250cm9s" + - "LXBsYW5lLXByb2ZpbGUgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxh" + - "bmUtcHJvZmlsZS55YW1sIFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVy" + - "LW5hbWU+IFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1y" + - "ZWdpb24gPHJlZ2lvbj4gXAogIC0tb3V0cHV0IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBs" + - "YW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1s" + - "CgpudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBs" + - "YW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUt" + - "c3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwK" + - "ICAtLXBsYWluIFwKICBjb21wdXRlLXBsYW5lIGluc3RhbGwgXAogIC0tdmFsdWVzIGRlcGxveS9z" + - "dGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+" + - "LXJlZ2lzdGVyLXZhbHVlcy55YW1sIFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1j" + - "b250ZXh0PiBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPgpg" + - "YGAKClJlZ2lzdHJhdGlvbiBzZWxlY3RzIHRoZSBwcm9maWxlJ3MgaW4tY2x1c3RlciBvciBjb21w" + - "dXRlLXJlYWNoYWJsZSBlbmRwb2ludHMKZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0IGFuZCBwcm9i" + - "ZXMgaXRzIEpXS1MuIERvIG5vdCByZXBsYWNlIHByb2ZpbGUgZW5kcG9pbnRzCndpdGggaGFuZC1h" + - "dXRob3JlZCBIZWxtZmlsZSBlbmRwb2ludCB2YWx1ZXMuCgojIyBQdWxsIFNlY3JldHMKCkNyZWF0" + - "ZSB0aGUgY29udHJvbC1wbGFuZSBzZWNyZXQgaW4gdGhlc2UgbmFtZXNwYWNlcyBvbiB0aGUgY29u" + - "dHJvbC1wbGFuZQpjb250ZXh0OgoKYGBgdGV4dApjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVt" + - "IG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyCmBgYAoKT24g" + - "dGhlIGNvbXB1dGUgY29udGV4dCwgY3JlYXRlIHRoZSBzZWNyZXQgb25seSBpbiBgbnZjYS1vcGVy" + - "YXRvcmAgYW5kIHJlZmVyZW5jZQppdCB0aHJvdWdoIGBnbG9iYWwuaW1hZ2VQdWxsU2VjcmV0c2Ag" + - "aW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQuIFRoZSBjaGFydAphbmQgb3BlcmF0b3Ig" + - "dXNlIGl0IGluIGBudmNhLW9wZXJhdG9yYCBhbmQgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWAu" + - "IERvIG5vdCBhZGQKZWl0aGVyIG5hbWVzcGFjZSB0byB0aGUgY29udHJvbC1wbGFuZSBsaXN0LiBG" + - "b3IgY29tbWFuZHMgYW5kIHBvbGljeSBleGFtcGxlcywKc2VlIFtwdWxsLXNlY3JldHMubWRdKHB1" + - "bGwtc2VjcmV0cy5tZCkuCgojIyBWZXJpZmljYXRpb24KClVzZSB0aGUgZXhwbGljaXQgR2F0ZXdh" + - "eSBuYW1lIGFuZCBuYW1lc3BhY2U6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9s" + - "LXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5IG52Y2YtZ2F0ZXdheSBcCiAgLW4gZW52b3ktZ2F0" + - "ZXdheSAtbyB3aWRlCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdl" + - "dCB0Y3Byb3V0ZSAtbiBlbnZveS1nYXRld2F5Cmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBs" + - "YW5lLWNvbnRleHQ+IHJvbGxvdXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Etb3BlcmF0b3Ig" + - "LW4gbnZjYS1vcGVyYXRvciAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + - "LXBsYW5lLWNvbnRleHQ+IHdhaXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBsYW5lLWNsdXN0" + - "ZXItbmFtZT4gLW4gbnZjYS1vcGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3suc3RhdHVzLmFn" + - "ZW50U3RhdHVzfSc9aGVhbHRoeSAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21w" + - "dXRlLXBsYW5lLWNvbnRleHQ+IGdldCBzZWNyZXQgPHB1bGwtc2VjcmV0PiAtbiBudmNhLXN5c3Rl" + - "bQpgYGAKCiMjIFRlYXJkb3duCgpEZXN0cm95IGFuZCBkZXJlZ2lzdGVyIGV2ZXJ5IGNvbXB1dGUg" + - "cGxhbmUgYmVmb3JlIHRoZSBjb250cm9sIHBsYW5lLiBCb3RoCmhhbmRvZmZzIGNhbiBkZXN0cm95" + - "IHRoZSBjb250cm9sIHBsYW5lLCBzbyBhcHBseSB0aGlzIHByZWZsaWdodCBiZWZvcmUgZWl0aGVy" + - "Cm9uZS4gUHJlc2VydmUgdGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBO" + - "YW1lc3BhY2UgcHJlc2VydmF0aW9uCmRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2Uu" + - "IElkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLgpGb3IgYW4gZXh0ZXJu" + - "YWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIuZW5hYmxlZDog" + - "ZmFsc2VgCmFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFu" + - "YWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlCmBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwg" + - "dmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQKYWJvcnQgb24g" + - "bWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNwYWNlIHJlbW92" + - "YWwgYWZ0ZXIKdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBnZXR0aW5nIGV4cGxp" + - "Y2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlCmRvIG5vdCBkZWxldGUgaXQuCgpGb3IgdGhlIEhl" + - "bG1maWxlIHZhbHVlcyBmbG93LCByZXRhaW4gZWFjaCByZWdpc3RyYXRpb24gdmFsdWVzIGZpbGUg" + - "dW50aWwKY2xlYW51cCBpcyB2ZXJpZmllZDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tz" + - "L252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFt" + - "ZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBs" + - "YW5lLWt1YmVjb25maWc+Cgo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNsdXN0ZXIgZGVs" + - "ZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1yZWdpc3RyYXRpb24tdmFsdWVz" + - "PiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBgCgpSZWFkIGBj" + - "bHVzdGVySURgIGFuZCBgbmNhSURgIGZyb20KYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBs" + - "YW5lL3JlZ2lzdHJhdGlvbi88Y2x1c3Rlci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuClNo" + - "b3cgdGhlIGV4YWN0IGNsdXN0ZXIgSUQgYW5kIGdldCBjb25maXJtYXRpb24gYmVmb3JlIGBjbHVz" + - "dGVyIGRlbGV0ZWAuIFJlcGVhdApjb21wdXRlIGRlc3Ryb3kgYW5kIGRlcmVnaXN0cmF0aW9uIGZv" + - "ciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRoZW4gZGVzdHJveSB0aGUKY29udHJvbCBwbGFuZS4K" + - "CmBgYGJhc2gKS1VCRUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBcCm1ha2UgLUMg" + - "ZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+" + - "IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpCb3Ro" + - "IGBLVUJFQ09ORklHYCBhbmQgYEtVQkVDT05GSUdfRklMRWAgYXJlIHJlcXVpcmVkIG9uIHRoZSBj" + - "b250cm9sLXBsYW5lCmRlc3Ryb3kgYmVjYXVzZSBpdHMgbmFtZXNwYWNlIGNsZWFudXAgdXNlcyBh" + - "bWJpZW50IGBrdWJlY3RsYC4KCkZvciB0aGUgQ0xJIHByb2ZpbGUgZmxvdywga2VlcApgZGVwbG95" + - "L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvb3V0LzxjbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZh" + - "bHVlcy55YW1sYAp1bnRpbCB0ZWFyZG93biBjb21wbGV0ZXMgYmVjYXVzZSBgZG93bmAgcmVhZHMg" + - "aXRzIGNsdXN0ZXIgSUQuIEZpcnN0IHF1ZXJ5IHRoZQpsaXZlIHJlZ2lzdHJhdGlvbiBzZXQgd2l0" + - "aCB0aGUgc2FtZSBjb21wbGV0ZSBwZXJzaXN0ZW50IHByZWZpeDoKCmBgYGJhc2gKbnZjZi1jbGkg" + - "LS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBk" + - "ZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxv" + - "eS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBc" + - "CiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0t" + - "Y29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMt" + - "dXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAogIHN0YXR1cyBcCiAgLS1jbHVzdGVy" + - "LW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4K" + - "YGBgCgpTaG93IHRoZSByZWdpc3RlcmVkIGNvbXB1dGUtcGxhbmUgbGlzdC4gTmFtZWQtY2x1c3Rl" + - "ciBgZG93biAtLXBsYW4tb25seWAgZG9lcwpub3QgcXVlcnkgSUNNUywgc28gaXQgcHJldmlld3Mg" + - "b25seSB0aGF0IGNvbXB1dGUgcGxhbmUgYW5kIGNhbm5vdCBzaG93IHRoZQpjb25kaXRpb25hbCBj" + - "b250cm9sLXBsYW5lIHJlbW92YWwuIElmIHRoZSB0YXJnZXQgaXMgdGhlIGxhc3QgcmVnaXN0ZXJl" + - "ZApjbHVzdGVyLCByZWFsIGBkb3duYCBhbHNvIGRlc3Ryb3lzIHRoZSBjb250cm9sIHBsYW5lLiBH" + - "ZXQgZXhwbGljaXQgY29uZmlybWF0aW9uCmZvciBib3RoIHJlbW92YWxzIGJlZm9yZSBjb250aW51" + - "aW5nLiBUaGVuIHByZXZpZXcgYW5kIGV4ZWN1dGUgd2l0aCB0aGUgc2FtZQpwcmVmaXg6CgpgYGBi" + - "YXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wt" + - "cGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFu" + - "ZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4g" + - "XAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + - "bnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0" + - "PiBcCiAgLS1pY21zLXVybCA8Y29tcHV0ZS1yZWFjaGFibGUtaWNtcy11cmw+IFwKICBkb3duIC0t" + - "cGxhbi1vbmx5IFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+" + - "IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1o" + - "b3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdl" + - "ZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBs" + - "YW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRl" + - "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxj" + - "b21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1p" + - "Y21zLXVybD4gXAogIGRvd24gXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0" + - "ZXItbmFtZT4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+CmBgYAoKUmVwZWF0IGBkb3duYCBmb3IgZWFj" + - "aCBjb21wdXRlIGNsdXN0ZXIuIEVhY2ggcnVuIGRlc3Ryb3lzIHRoYXQgY29tcHV0ZSBwbGFuZSBh" + - "bmQKdW5yZWdpc3RlcnMgaXRzIElDTVMgcm93LiBJdCByZW1vdmVzIHRoZSBjb250cm9sIHBsYW5l" + - "IG9ubHkgYWZ0ZXIgbm8gY2x1c3RlcgpyZWdpc3RyYXRpb25zIHJlbWFpbi4KUEsHCJZjvFkSMAAA" + - "EjAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAOwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + - "aW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvZGVidWdnaW5nLm1kVVQFAAEAps4SIyBEZWJ1Z2dpbmcg" + - "UmVmZXJlbmNlCgpSZWNpcGVzIGZvciBkaWFnbm9zaW5nIGFuZCBmaXhpbmcgY29tbW9uIE5WQ0Yg" + - "c2VsZi1tYW5hZ2VkIHN0YWNrIGZhaWx1cmVzLgoKIyMgUXVpY2sgU3RhdHVzIENvbW1hbmRzCgpg" + - "YGBiYXNoCiMgQWxsIHBvZHMgYWNyb3NzIGFsbCBuYW1lc3BhY2VzCmt1YmVjdGwgZ2V0IHBvZHMg" + - "LUEgLW8gd2lkZQoKIyBQb2RzIGluIGEgc3BlY2lmaWMgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHBv" + - "ZHMgLW4gPG5hbWVzcGFjZT4KCiMgQWxsIGhlbG0gcmVsZWFzZXMKaGVsbSBsaXN0IC1BCgojIFJl" + - "Y2VudCBldmVudHMgKG1vc3QgdXNlZnVsIGZvciBkaWFnbm9zaW5nIGZhaWx1cmVzKQprdWJlY3Rs" + - "IGdldCBldmVudHMgLW4gPG5hbWVzcGFjZT4gLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcKCiMg" + - "RGVzY3JpYmUgYSBzcGVjaWZpYyBwb2QgKHNob3dzIGV2ZW50cywgY29uZGl0aW9ucywgdm9sdW1l" + - "cykKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPgpgYGAKCiMj" + - "IEZhaWx1cmU6IEltYWdlUHVsbEJhY2tPZmYKCiMjIyBTeW1wdG9tcwoKYGBgdGV4dApOQU1FICAg" + - "ICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICAgICAgICAgICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5k" + - "cmEtMCAgICAwLzEgICAgIEltYWdlUHVsbEJhY2tPZmYgICAwICAgICAgICAgIDVtCmBgYAoKRXZl" + - "bnRzIHNob3c6CgpgYGB0ZXh0CkZhaWxlZCB0byBwdWxsIGltYWdlICJudmNyLmlvLy4uLi9pbWFn" + - "ZTp0YWciOiA0MDEgVW5hdXRob3JpemVkCmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENo" + - "ZWNrIHdoYXQgaW1hZ2UgaXMgZmFpbGluZwprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNw" + - "YWNlPiA8cG9kLW5hbWU+IHwgZ3JlcCAtQTUgIkV2ZW50czoiCgojIENoZWNrIGlmIHB1bGwgc2Vj" + - "cmV0IGV4aXN0cyBpbiB0aGUgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHNlY3JldCBudmNyLWNyZWRz" + - "IC1uIDxuYW1lc3BhY2U+CgojIENoZWNrIGlmIHRoZSBwb2Qgc3BlYyBoYXMgaW1hZ2VQdWxsU2Vj" + - "cmV0cwprdWJlY3RsIGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiAtbyBqc29ucGF0" + - "aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9JwoKIyBDaGVjayBpZiB0aGUgU2VydmljZUFjY291" + - "bnQgaGFzIGltYWdlUHVsbFNlY3JldHMKa3ViZWN0bCBnZXQgc2EgPHNhLW5hbWU+IC1uIDxuYW1l" + - "c3BhY2U+IC1vIGpzb25wYXRoPSd7LmltYWdlUHVsbFNlY3JldHN9JwpgYGAKCiMjIyBGaXhlcwoK" + - "MS4gKipTZWNyZXQgbWlzc2luZyBpbiBuYW1lc3BhY2UqKjogQ3JlYXRlIGl0CgogICBgYGBiYXNo" + - "CiAgIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAg" + - "ICAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1" + - "dGh0b2tlbicgXAogICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgICAt" + - "LW5hbWVzcGFjZT08bmFtZXNwYWNlPiBcCiAgICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwg" + - "a3ViZWN0bCBhcHBseSAtZiAtCiAgIGBgYAoKMi4gKipTZWNyZXQgZXhpc3RzIGJ1dCBwb2QgZG9l" + - "c24ndCByZWZlcmVuY2UgaXQqKjogVGhlIGNoYXJ0IG5lZWRzIGBpbWFnZVB1bGxTZWNyZXRzYCBj" + - "b25maWd1cmVkIHZpYSBoZWxtZmlsZSB2YWx1ZXMuIFNlZSBbcHVsbC1zZWNyZXRzLm1kXShwdWxs" + - "LXNlY3JldHMubWQpLgoKMy4gKipDaGFydCBkb2Vzbid0IHN1cHBvcnQgaW1hZ2VQdWxsU2VjcmV0" + - "cyoqIChvcGVuYmFvLCBpbnZvY2F0aW9uLXNlcnZpY2UsIGVzcy1hcGksIG5vdGFyeS1zZXJ2aWNl" + - "KTogUGF0Y2ggU2VydmljZUFjY291bnRzIGFuZCByZXN0YXJ0IHBvZHMuIFNlZSBbcHVsbC1zZWNy" + - "ZXRzLm1kXShwdWxsLXNlY3JldHMubWQpLgoKNC4gKipXcm9uZyBjcmVkZW50aWFscyBpbiBzZWNy" + - "ZXQqKjogRGVsZXRlIGFuZCByZWNyZWF0ZQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGRlbGV0ZSBz" + - "ZWNyZXQgbnZjci1jcmVkcyAtbiA8bmFtZXNwYWNlPgogICAjIFJlY3JlYXRlIHdpdGggY29ycmVj" + - "dCBjcmVkZW50aWFscwogICBgYGAKCiMjIEZhaWx1cmU6IEluaXQ6MC8xIFN0dWNrIChWYXVsdCBB" + - "Z2VudCkKCiMjIyBTeW1wdG9tcwoKU2VydmljZSBwb2RzIHN0dWNrIGluIGBJbml0OjAvMWAgZm9y" + - "IG1pbnV0ZXM6CgpgYGBiYXNoCk5BTUUgICAgICAgICAgICAgICAgICAgICAgICBSRUFEWSAgIFNU" + - "QVRVUyAgICAgUkVTVEFSVFMgICBBR0UKbnZjZi1hcGktN2Y0Yzc2Zjc4OC00NHZsdCAgMC8yICAg" + - "ICBJbml0OjAvMSAgIDAgICAgICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoKVGhlIGluaXQg" + - "Y29udGFpbmVyIGlzIHRoZSB2YXVsdC1hZ2VudC1pbml0IGluamVjdG9yIHdhaXRpbmcgZm9yIE9w" + - "ZW5CYW8uCgpgYGBiYXNoCiMgQ2hlY2sgT3BlbkJhbyBwb2RzCmt1YmVjdGwgZ2V0IHBvZHMgLW4g" + - "dmF1bHQtc3lzdGVtCgojIENoZWNrIGlmIE9wZW5CYW8gbWlncmF0aW9uIGpvYiByYW4Ka3ViZWN0" + - "bCBnZXQgam9icyAtbiB2YXVsdC1zeXN0ZW0KCiMgQ2hlY2sgT3BlbkJhbyBwb2QgbG9ncwprdWJl" + - "Y3RsIGxvZ3MgLW4gdmF1bHQtc3lzdGVtIG9wZW5iYW8tc2VydmVyLTAgLWMgb3BlbmJhbwoKIyBD" + - "aGVjayBpbml0IGNvbnRhaW5lciBsb2dzIG9uIHRoZSBzdHVjayBwb2QKa3ViZWN0bCBsb2dzIC1u" + - "IDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gLWMgdmF1bHQtYWdlbnQtaW5pdApgYGAKCiMjIyBGaXhl" + - "cwoKMS4gKipPcGVuQmFvIHBvZHMgbm90IHJ1bm5pbmcqKjogQ2hlY2sgdGhlaXIgZXZlbnRzIGZv" + - "ciBpbWFnZSBwdWxsIGlzc3VlcywgcmVzb3VyY2UgaXNzdWVzLCBldGMuCgoyLiAqKk9wZW5CYW8g" + - "bWlncmF0aW9uIGpvYiBkaWRuJ3QgcnVuKio6IFRoaXMgaGFwcGVucyB3aGVuIGBoZWxtZmlsZSBz" + - "eW5jYCB3YXMgaW50ZXJydXB0ZWQuIERlc3Ryb3kgYW5kIHJlLXN5bmMgb3BlbmJhbzoKCiAgIGBg" + - "YGJhc2gKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVu" + - "YmFvLXNlcnZlciBkZXN0cm95CiAgIGt1YmVjdGwgZGVsZXRlIG5hbWVzcGFjZSB2YXVsdC1zeXN0" + - "ZW0KICAga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIHZhdWx0LXN5c3RlbQogICAjIFJlLWNyZWF0" + - "ZSBwdWxsIHNlY3JldCBpZiBuZWVkZWQKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0t" + - "c2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBzeW5jCiAgIGBgYAoKMy4gKipPcGVuQmFvIHBv" + - "ZHMgcnVubmluZyBidXQgbm90IGluaXRpYWxpemVkKio6IENoZWNrIHVuc2VhbCBzdGF0dXM6Cgog" + - "ICBgYGBiYXNoCiAgIGt1YmVjdGwgZXhlYyAtbiB2YXVsdC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXIt" + - "MCAtYyBvcGVuYmFvIC0tIGJhbyBzdGF0dXMKICAgYGBgCgo0LiAqKmB2YXVsdC1hZ2VudC1pbml0" + - "YCBsb2dzIGBhdXRoL2p3dC9sb2dpbmAgLT4gYDQwMCAuLi4gbm8ga25vd24ga2V5IHN1Y2Nlc3Nm" + - "dWxseSB2YWxpZGF0ZWQgdGhlIHRva2VuIHNpZ25hdHVyZWAqKgogICAoY29tbW9uIG9uIEFLUywg" + - "YW5kIG9uIGFueSBjbHVzdGVyIHdob3NlIE9JREMgaXNzdWVyIHB1Ymxpc2hlcyBhIHJvdGF0aW5n" + - "IG11bHRpLWtleSBKV0tTKToKICAgdGhlIE9wZW5CYW8gYGF1dGgvand0YCBtZXRob2Qgd2FzIGNv" + - "bmZpZ3VyZWQgd2l0aCBhIHNpbmdsZSBzdGF0aWMgbW91bnRlZCBwdWJsaWMga2V5CiAgIChgand0" + - "X3ZhbGlkYXRpb25fcHVia2V5c2ApIGluc3RlYWQgb2YgdGhlIGlzc3VlcidzIGxpdmUgSldLUywg" + - "c28gaXQgY2Fubm90IHZhbGlkYXRlIHRoZQogICBjbHVzdGVyLXNpZ25lZCBTZXJ2aWNlQWNjb3Vu" + - "dCB0b2tlbnMgdGhlIHZhdWx0LWFnZW50cyBwcmVzZW50LiBFdmVyeSBzZXJ2aWNlJ3MKICAgYHZh" + - "dWx0LWFnZW50LWluaXRgIHRoZW4gbG9vcHMgb24gdGhhdCA0MDAgYW5kIHRoZSBwb2QgbmV2ZXIg" + - "bGVhdmVzIGBJbml0OjAvMWAuIFRoaXMgaXMgdGhlCiAgIGJlaGF2aW9yIG9mIHRoZSBiYXNlIGRl" + - "ZmF1bHQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2Vg" + - "OyB0aGUKICAgbWlncmF0aW9uIGxvZyBzaG93cyBgT0lEQyBpc3N1ZXIgZGlzY292ZXJ5IGlzIGRp" + - "c2FibGVkLiBVc2luZyBTZXJ2aWNlQWNjb3VudCBpc3N1ZXIgYW5kCiAgIG1vdW50ZWQgcHVibGlj" + - "IGtleSBmYWxsYmFja2AuIEVuYWJsZSBpc3N1ZXIgZGlzY292ZXJ5IHNvIHRoZSBtaWdyYXRpb24g" + - "dXNlcyB0aGUgbGl2ZSBKV0tTLAogICB0aGVuIHJlLXJ1biBpdDoKCiAgIGBgYGJhc2gKICAgIyBJ" + - "biB5b3VyIGVudiB2YWx1ZXMgKGUuZy4gZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwpLCBzZXQ6CiAg" + - "ICMgICBvcGVuYmFvOgogICAjICAgICBtaWdyYXRpb25zOgogICAjICAgICAgIGlzc3VlckRpc2Nv" + - "dmVyeToKICAgIyAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAga3ViZWN0bCBkZWxldGUgam9iIC1u" + - "IHZhdWx0LXN5c3RlbSBvcGVuYmFvLXNlcnZlci1taWdyYXRpb25zCiAgIEhFTE1GSUxFX0VOVj08" + - "ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9b3BlbmJhby1zZXJ2ZXIgc3luYwogICBgYGAK" + - "CiAgIFRoZSBtaWdyYXRpb24gbG9nIHNob3VsZCB0aGVuIHNob3cgYFJlY2VpdmVkIGRpc2NvdmVy" + - "eSBkb2N1bWVudCBmcm9tCiAgIC4uLi8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbmAg" + - "YW5kIGBGaW5hbCBPcGVuQmFvIEpXVCBKV0tTIFVSTCBzZXQgdG86CiAgIC4uLi9vcGVuaWQvdjEv" + - "andrc2AsIGFuZCB0aGUgc2VydmljZSBwb2RzIGF1dGhlbnRpY2F0ZSBhbmQgcmVhY2ggUmVhZHkg" + - "d2l0aGluIH4xIG1pbi4KICAgQUtTIGNsdXN0ZXJzIHdpdGggdGhlIGNsdXN0ZXIgT0lEQyBpc3N1" + - "ZXIgZW5hYmxlZCAodGhlIGBha3MtY2x1c3RlcmAgZGVmYXVsdCkgYWx3YXlzIG5lZWQKICAgdGhp" + - "cyBiZWNhdXNlIHRoZSBzdGF0aWMtcHVia2V5IGZhbGxiYWNrIGNhbm5vdCBtYXRjaCB0aGUgaXNz" + - "dWVyJ3Mgcm90YXRpbmcgc2lnbmluZyBrZXlzLgoKIyMgRmFpbHVyZTogT09NS2lsbGVkIG9uIENh" + - "c3NhbmRyYQoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFU" + - "VVMgICAgUkVTVEFSVFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIE9PTUtpbGxlZCAgMyAg" + - "ICAgICAgIDEwbQpgYGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKa3ViZWN0bCBkZXNjcmliZSBw" + - "b2QgLW4gY2Fzc2FuZHJhLXN5c3RlbSBjYXNzYW5kcmEtMCB8IGdyZXAgLUEzICJMYXN0IFN0YXRl" + - "IgpgYGAKCiMjIyBGaXgKCk92ZXJyaWRlIENhc3NhbmRyYSByZXNvdXJjZXMgdmlhIGhlbG1maWxl" + - "IHZhbHVlcy4gU2VlIEV4YW1wbGUgMSBpbgpbZXhhbXBsZXMubWRdKC4uL2V4YW1wbGVzLm1kKS4K" + - "CmBgYHlhbWwKLSBjYXNzYW5kcmE6CiAgICByZXNvdXJjZXM6CiAgICAgIGxpbWl0czoKICAgICAg" + - "ICBjcHU6ICI4IgogICAgICAgIG1lbW9yeTogODE5Mk1pCiAgICAgIHJlcXVlc3RzOgogICAgICAg" + - "IGNwdTogIjIiCiAgICAgICAgbWVtb3J5OiA0MDk2TWkKYGBgCgpOb3RlOiBgcmVzb3VyY2VQcmVz" + - "ZXRgIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIE5WQ0YgY2Fzc2FuZHJhIHdyYXBwZXIgY2hhcnQu" + - "IFVzZSBleHBsaWNpdCBgcmVzb3VyY2VzYC4KCiMjIEZhaWx1cmU6IFBvZHMgU3R1Y2sgaW4gUGVu" + - "ZGluZwoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMg" + - "ICAgUkVTVEFSVFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIFBlbmRpbmcgICAwICAgICAg" + - "ICAgIDEwbQpgYGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKIyBDaGVjayBldmVudHMgZm9yIHNj" + - "aGVkdWxpbmcgZmFpbHVyZXMKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBv" + - "ZC1uYW1lPgoKIyBDb21tb24gY2F1c2VzOgojIC0gIjAvMTIgbm9kZXMgYXJlIGF2YWlsYWJsZTog" + - "MTIgbm9kZShzKSBkaWRuJ3QgbWF0Y2ggUG9kJ3Mgbm9kZSBhZmZpbml0eSIKIyAtICIwLzEyIG5v" + - "ZGVzIGFyZSBhdmFpbGFibGU6IDEyIEluc3VmZmljaWVudCBtZW1vcnkiCiMgLSAicGVyc2lzdGVu" + - "dHZvbHVtZWNsYWltIG5vdCBmb3VuZCIKYGBgCgojIyMgRml4ZXMKCjEuICoqTm9kZSBzZWxlY3Rv" + - "ciBtaXNtYXRjaCoqOiBDaGVjayBgbm9kZVNlbGVjdG9yc2AgaW4gZW52aXJvbm1lbnQgZmlsZQoK" + - "ICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBub2RlcyAtLXNob3ctbGFiZWxzIHwgZ3JlcCBudmNm" + - "CiAgIGBgYAoKMi4gKipTdG9yYWdlIGNsYXNzIG5vdCBmb3VuZCoqOiBDaGVjayBzdG9yYWdlIGNs" + - "YXNzIGV4aXN0cwoKICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBzdG9yYWdlY2xhc3MKICAgYGBg" + - "CgozLiAqKkluc3VmZmljaWVudCByZXNvdXJjZXMqKjogQ2hlY2sgbm9kZSBjYXBhY2l0eQoKICAg" + - "YGBgYmFzaAogICBrdWJlY3RsIGRlc2NyaWJlIG5vZGUgPG5vZGUtbmFtZT4gfCBncmVwIC1BNSAi" + - "QWxsb2NhdGVkIHJlc291cmNlcyIKICAgYGBgCgojIyBGYWlsdXJlOiBIZWxtIFJlbGVhc2UgaW4g" + - "RmFpbGVkIFN0YXRlCgojIyMgU3ltcHRvbXMKCmBgYGJhc2gKaGVsbSBsaXN0IC1BCiMgU2hvd3Mg" + - "cmVsZWFzZSB3aXRoIFNUQVRVUzogZmFpbGVkCmBgYAoKUmUtcnVubmluZyBgaGVsbWZpbGUgc3lu" + - "Y2AgYXBwZWFycyB0byBzdWNjZWVkIGJ1dCBzZXJ2aWNlcyBkb24ndCB3b3JrIChtaWdyYXRpb25z" + - "IHNraXBwZWQpLgoKIyMjIERpYWdub3NpcwoKYGBgYmFzaApoZWxtIGhpc3RvcnkgPHJlbGVhc2Ut" + - "bmFtZT4gLW4gPG5hbWVzcGFjZT4KYGBgCgojIyMgRml4CgpNdXN0IGRlc3Ryb3kgdGhlIGZhaWxl" + - "ZCByZWxlYXNlIGFuZCByZS1zeW5jIChub3QganVzdCBhcHBseSk6CgpgYGBiYXNoCkhFTE1GSUxF" + - "X0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9PHJlbGVhc2U+IGRlc3Ryb3kKIyBJ" + - "ZiBuYW1lc3BhY2UgbmVlZHMgY2xlYW51cDoKa3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIDxuYW1l" + - "c3BhY2U+Cmt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSA8bmFtZXNwYWNlPgojIFJlLWNyZWF0ZSBw" + - "dWxsIHNlY3JldCBpZiBuZWVkZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0" + - "b3IgbmFtZT08cmVsZWFzZT4gc3luYwpgYGAKCiMjIEZhaWx1cmU6IEFjY291bnQgQm9vdHN0cmFw" + - "IEpvYiBGYWlsZWQKCiMjIyBTeW1wdG9tcwoKU2VydmljZXMgZGVwbG95IGJ1dCBmdW5jdGlvbnMg" + - "Y2FuJ3QgYmUgY3JlYXRlZC4gRXZlbnRzIHNob3cgYm9vdHN0cmFwIGpvYiBmYWlsdXJlLgoKIyMj" + - "IERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIGJvb3RzdHJhcCBqb2Igc3RhdHVzCmt1YmVjdGwg" + - "Z2V0IGpvYnMgLW4gbnZjZgoKIyBHZXQgbG9ncyAoam9iIGF1dG8tZGVsZXRlcyBhZnRlciB+NSBt" + - "aW51dGVzKQprdWJlY3RsIGxvZ3Mgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIC1uIG52" + - "Y2YKCiMgQ2hlY2sgQVBJIGxvZ3MKa3ViZWN0bCBsb2dzIC1uIG52Y2YgLWwgYXBwLmt1YmVybmV0" + - "ZXMuaW8vbmFtZT1udmNmLWFwaSAtLXRhaWw9MTAwCmBgYAoKIyMjIENvbW1vbiBDYXVzZXMKCjEu" + - "ICoqV3JvbmcgYmFzZTY0IGNyZWRlbnRpYWxzKio6IENyZWRlbnRpYWxzIGluIGBzZWNyZXRzLzxl" + - "bnY+LXNlY3JldHMueWFtbGAgbXVzdCBiZSBgJG9hdXRodG9rZW46QVBJX0tFWWAgYmFzZTY0LWVu" + - "Y29kZWQsIG5vdCBqdXN0IHRoZSBBUEkga2V5CgogICBgYGBiYXNoCiAgICMgVmVyaWZ5IHlvdXIg" + - "ZW5jb2RlZCBjcmVkZW50aWFsCiAgIGVjaG8gJ1lPVVJfQkFTRTY0X1NUUklORycgfCBiYXNlNjQg" + - "LWQKICAgIyBTaG91bGQgb3V0cHV0OiAkb2F1dGh0b2tlbjpudmFwaS14eHh4eAogICBgYGAKCjIu" + - "ICoqUmVnaXN0cnkgdW5yZWFjaGFibGUqKjogQVBJIGNhbid0IHJlYWNoIHRoZSByZWdpc3RyeSBz" + - "cGVjaWZpZWQgaW4gYGFjY291bnRCb290c3RyYXAucmVnaXN0cnlDcmVkZW50aWFsc2AKCiMjIyBG" + - "aXgKCkZpeCBjcmVkZW50aWFscyBpbiBzZWNyZXRzIGZpbGUsIHRoZW4gcmVjb3ZlciBzZXJ2aWNl" + - "cyB3aXRob3V0IGRlc3Ryb3lpbmcgZGVwZW5kZW5jaWVzOgoKYGBgYmFzaApIRUxNRklMRV9FTlY9" + - "PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIGRlc3Ryb3kK" + - "a3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIG52Y2YgYXBpLWtleXMgZXNzIHNpcyAtLWlnbm9yZS1u" + - "b3QtZm91bmQKa3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIG52Y2YgJiYga3ViZWN0bCBjcmVhdGUg" + - "bmFtZXNwYWNlIGFwaS1rZXlzICYmIFwKICBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgZXNzICYm" + - "IGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBzaXMKIyBSZS1jcmVhdGUgcHVsbCBzZWNyZXRzIGlm" + - "IG5lZWRlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdy" + - "b3VwPXNlcnZpY2VzIHN5bmMKYGBgCgojIyBGYWlsdXJlOiBOVkNBIENsZWFudXAgU3R1Y2sgKEZp" + - "bmFsaXplcnMpCgojIyMgU3ltcHRvbXMKCkNvbXB1dGUtcGxhbmUgY2xlYW51cCBoYW5ncy4gTmFt" + - "ZXNwYWNlcwpzdHVjayBpbiBgVGVybWluYXRpbmdgOgoKYGBgYmFzaAprdWJlY3RsIGdldCBucwoj" + - "IG52Y2Etb3BlcmF0b3IgICAgVGVybWluYXRpbmcgICAxMG0KIyBudmNmLWJhY2tlbmQgICAgIFRl" + - "cm1pbmF0aW5nICAgMTBtCmBgYAoKIyMjIEZpeAoKUnVuIHRoaXMgb25seSBhZ2FpbnN0IHRoZSBj" + - "b21wdXRlIGNvbnRleHQsIGFmdGVyIHRoZSBub3JtYWwgY29tcHV0ZS1wbGFuZQp0ZWFyZG93biBo" + - "YXMgZmFpbGVkLiBSZW1vdmUgZmluYWxpemVycyBmcm9tIE5WQ0ZCYWNrZW5kIGN1c3RvbSByZXNv" + - "dXJjZXMgYW5kCmZvcmNlLWRlbGV0ZSBzdHVjayBuYW1lc3BhY2VzOgoKYGBgYmFzaApleHBvcnQg" + - "Q09NUFVURV9DT05URVhUPTxjb21wdXRlLXBsYW5lLWNvbnRleHQ+CgojIFJlbW92ZSBmaW5hbGl6" + - "ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3VyY2VzCmt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVU" + - "RV9DT05URVhUIiBnZXQgbnZjZmJhY2tlbmRzIC1BIC1vIGpzb24gfCBcCiAganEgJy5pdGVtc1td" + - "IHwgLm1ldGFkYXRhLm5hbWVzcGFjZSArICIvIiArIC5tZXRhZGF0YS5uYW1lJyAtciB8IFwKICB4" + - "YXJncyAtSXt9IHNoIC1jICdjb250ZXh0PSIkMSI7IG5zPSIkezIlJS8qfSI7IG5hbWU9IiR7MiMj" + - "Ki99Ijsga3ViZWN0bCAtLWNvbnRleHQgIiRjb250ZXh0IiBwYXRjaCBudmNmYmFja2VuZCAiJG5h" + - "bWUiIC1uICIkbnMiIC0tdHlwZT1tZXJnZSAtcCAie1wibWV0YWRhdGFcIjp7XCJmaW5hbGl6ZXJz" + - "XCI6W119fSInIF8gIiRDT01QVVRFX0NPTlRFWFQiIHt9CgojIEZvcmNlLWRlbGV0ZSBzdHVjayBu" + - "YW1lc3BhY2VzIGJ5IGNsZWFyaW5nIHRoZWlyIGZpbmFsaXplcnMKZm9yIG5zIGluIG52Y2Etb3Bl" + - "cmF0b3IgbnZjZi1iYWNrZW5kOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05U" + - "RVhUIiBnZXQgbmFtZXNwYWNlICIkbnMiIC1vIGpzb24gMj4vZGV2L251bGwgfCBcCiAgICBqcSAn" + - "LnNwZWMuZmluYWxpemVycyA9IFtdJyB8IFwKICAgIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVU" + - "RV9DT05URVhUIiByZXBsYWNlIFwKICAgICAgLS1yYXcgIi9hcGkvdjEvbmFtZXNwYWNlcy8kbnMv" + - "ZmluYWxpemUiIC1mIC0gMj4vZGV2L251bGwKZG9uZQpgYGAKCiMjIEZhaWx1cmU6IE5WQ0EgT3Bl" + - "cmF0b3IgTWlzc2luZyBvciBOb3QgUmVhZHkKCiMjIyBTeW1wdG9tcwoKQWZ0ZXIgY29tcHV0ZS1w" + - "bGFuZSBpbnN0YWxsIGNvbXBsZXRlcywgbm8gYG52Y2Etb3BlcmF0b3JgIERlcGxveW1lbnQgZXhp" + - "c3RzLCBvcgppdCBleGlzdHMgYnV0IHBvZHMgYXJlIG5vdCByZWFkeToKCmBgYGJhc2gKa3ViZWN0" + - "bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IGRlcGxveW1lbnQgbnZjYS1v" + - "cGVyYXRvciBcCiAgLW4gbnZjYS1vcGVyYXRvcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1w" + - "bGFuZS1jb250ZXh0PiBnZXQgcG9kcyAtbiBudmNhLW9wZXJhdG9yCmBgYAoKIyMjIERpYWdub3Np" + - "cyBhbmQgRml4ZXMKCkZpcnN0IGlkZW50aWZ5IHdoZXRoZXIgdGhlIGluc3RhbGxhdGlvbiB1c2Vk" + - "IHRoZSBIZWxtZmlsZSB2YWx1ZXMgZmxvdyBvciB0aGUKQ0xJIHByb2ZpbGUgZmxvdy4gUmUtcnVu" + - "IG9ubHkgdGhhdCBmbG93J3MgcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24gc3RlcHMKZnJv" + - "bSBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFs" + - "bGF0aW9uLm1kKS4gRG8gbm90CnN1YnN0aXR1dGUgb25lIGhhbmRvZmYgZm9yIHRoZSBvdGhlci4K" + - "CklmIGluc3RhbGxhdGlvbiBzdWNjZWVkcyBidXQgcG9kcyBzdGlsbCBmYWlsLCBpbnNwZWN0IHRo" + - "ZSBjb21wdXRlIGNvbnRleHQ6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBs" + - "YW5lLWNvbnRleHQ+IGRlc2NyaWJlIGRlcGxveSBudmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9w" + - "ZXJhdG9yCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGxvZ3MgZGVw" + - "bG95bWVudC9udmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yIC0tdGFpbD0yMDAKa3Vi" + - "ZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG52Y2ZiYWNrZW5kIC1u" + - "IG52Y2Etb3BlcmF0b3IKYGBgCgpGb3IgcHJpdmF0ZSByZWdpc3RyeSBmYWlsdXJlcywgdmVyaWZ5" + - "IHRoYXQgdGhlIHB1bGwgc2VjcmV0IGV4aXN0cyBpbgpgbnZjYS1vcGVyYXRvcmAuIFRoZSBjaGFy" + - "dCBhbmQgb3BlcmF0b3IgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWA7IGRvIG5vdCB1c2UgYQpi" + - "cm9hZGVyIG1hbnVhbCBuYW1lc3BhY2UgbG9vcC4gU2VlCltwdWxsLXNlY3JldHMubWRdKHB1bGwt" + - "c2VjcmV0cy5tZCNjb21wdXRlLXBsYW5lLXNlY3JldCkuCgojIyBGYWlsdXJlOiBHYXRld2F5IEVu" + - "ZHBvaW50IENoYW5nZWQKCiMjIyBTeW1wdG9tcwoKUmVxdWVzdHMgdGhyb3VnaCB0aGUgY29uZmln" + - "dXJlZCByb3V0ZSBkb21haW4gZmFpbCBhZnRlciB0aGUgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxh" + - "bmNlciBpcyByZXBsYWNlZC4gVGhlIEdhdGV3YXkgcmVwb3J0cyBhIG5ldyBlbmRwb2ludC4KCiMj" + - "IyBEaWFnbm9zaXMKCmBgYGJhc2gKR0FURVdBWV9BRERSPSQoa3ViZWN0bCAtLWNvbnRleHQgPGNv" + - "bnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgXAogIG52Y2YtZ2F0ZXdheSAtbiBlbnZv" + - "eS1nYXRld2F5IFwKICAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScp" + - "CnRlc3QgLW4gIiRHQVRFV0FZX0FERFIiCmRpZyArc2hvcnQgImFwaS48ZG9tYWluPiIKY3VybCAt" + - "SCAiSG9zdDogYXBpLjxkb21haW4+IiAiaHR0cDovLyRHQVRFV0FZX0FERFIvaGVhbHRoIgoKIyBD" + - "aGVjayBkaXJlY3QgYWRkcmVzcyBmaWVsZHMgdXNlZCBieSBhIHNwbGl0IGRlcGxveW1lbnQKZ3Jl" + - "cCBudmNmTmF0c1NlcnZpY2VVUkwgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvZW52aXJvbm1l" + - "bnRzLzxlbnY+LnlhbWwKZ3JlcCAtRSAnaWNtc1NlcnZpY2V8cmV2YWxTZXJ2aWNlfG5hdHMnIFwK" + - "ICBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMvPGVudj4ueWFt" + - "bApgYGAKCiMjIyBGaXgKCktlZXAgYGdsb2JhbC5kb21haW5gLCByb3V0ZSBob3N0bmFtZXMsIGFu" + - "ZCBIb3N0IG92ZXJyaWRlcyB1bmNoYW5nZWQuIFVwZGF0ZSBETlMKb3IgdGhlIGRpcmVjdCBjbGll" + - "bnQgZGVzdGluYXRpb24uIEZvciBzcGxpdCBkZXBsb3ltZW50cywgdXBkYXRlIG9ubHkgZGlyZWN0" + - "CkdhdGV3YXktYWRkcmVzcyBmaWVsZHMgYW5kIHJlZnJlc2ggcmVnaXN0cmF0aW9uIGFuZCBpbnN0" + - "YWxsYXRpb24gdGhyb3VnaCB0aGUKc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLiBTZWUKW0V4YW1wbGUg" + - "NF0oLi4vZXhhbXBsZXMubWQjZXhhbXBsZS00LXJlY292ZXItZnJvbS1hLWdhdGV3YXktZW5kcG9p" + - "bnQtY2hhbmdlKS4KCiMjIFVzZWZ1bCBOYW1lc3BhY2UtdG8tU2VydmljZSBNYXBwaW5nCgpRdWlj" + - "ayByZWZlcmVuY2UgZm9yIHdoaWNoIHNlcnZpY2VzIHJ1biBpbiB3aGljaCBuYW1lc3BhY2U6Cgp8" + - "IE5hbWVzcGFjZSB8IFNlcnZpY2VzIHwKfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgbmF0cy1z" + - "eXN0ZW0gfCBuYXRzIHwKfCBjYXNzYW5kcmEtc3lzdGVtIHwgY2Fzc2FuZHJhIHwKfCB2YXVsdC1z" + - "eXN0ZW0gfCBvcGVuYmFvLXNlcnZlciB8CnwgbnZjZiB8IGFwaSwgaW52b2NhdGlvbi1zZXJ2aWNl" + - "LCBncnBjLXByb3h5LCBub3Rhcnktc2VydmljZSwgcmV2YWwsIGxsbS1yZXF1ZXN0LXJvdXRlciwg" + - "bGxtLWFwaS1nYXRld2F5IHwKfCBhcGkta2V5cyB8IGFwaS1rZXlzLCBhZG1pbi1pc3N1ZXItcHJv" + - "eHkgfAp8IGVzcyB8IGVzcy1hcGkgfAp8IHNpcyB8IHNpcyB8CnwgZW52b3ktZ2F0ZXdheS1zeXN0" + - "ZW0gfCBlbnZveSBnYXRld2F5IChpbmdyZXNzIGNvbnRyb2xsZXIpIHwKfCBlbnZveS1nYXRld2F5" + - "IHwgZ2F0ZXdheSByZXNvdXJjZSArIHJvdXRlcyB8ClBLBwi1enA7tTAAALUwAABQSwMEFAAIAAAA" + - "AAAhAAAAAAAAAAAAAAAAAEQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9y" + - "ZWZlcmVuY2VzL2hlbG1maWxlLXN0cnVjdHVyZS5tZFVUBQABAKbOEiMgSGVsbWZpbGUgU3RydWN0" + - "dXJlIFJlZmVyZW5jZQoKIyMgRGlyZWN0b3J5IExheW91dAoKYGBgYmFzaApudmNmLXNlbGYtbWFu" + - "YWdlZC1zdGFjay8KfC0tIGhlbG1maWxlLmQvCnwgICB8LS0gMDEtZGVwZW5kZW5jaWVzLnlhbWwu" + - "Z290bXBsICAjIE5BVFMsIENhc3NhbmRyYSwgT3BlbkJhbwp8ICAgfC0tIDAyLWNvcmUueWFtbC5n" + - "b3RtcGwgICAgICAgICAgIyBOVkNGIHNlcnZpY2VzICsgaW5ncmVzcwp8ICAgYC0tIDAzLW9ic2Vy" + - "dmFiaWxpdHkueWFtbC5nb3RtcGwgIyBPYnNlcnZhYmlsaXR5IHN0YWNrIChvcHRpb25hbCkKfC0t" + - "IGVudmlyb25tZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAgICAgICAgICAgICMgRGVm" + - "YXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVudi1uYW1lPi55YW1sICAg" + - "ICAgICAgICAgICAjIFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKfC0tIHNlY3JldHMvCnwgICBg" + - "LS0gPGVudi1uYW1lPi1zZWNyZXRzLnlhbWwgICAgICAjIFNlbnNpdGl2ZSB2YWx1ZXMgKHJlZ2lz" + - "dHJ5IGNyZWRzLCBwYXNzd29yZHMpCmAtLSBnbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAg" + - "ICAjIEdvIHRlbXBsYXRlIHRoYXQgY29uc3RydWN0cyBwZXItY2hhcnQgdmFsdWVzCgpudmNmLWNv" + - "bXB1dGUtcGxhbmUtc3RhY2svCnwtLSBoZWxtZmlsZS5kLwp8ICAgfC0tIDAxLWRlcGVuZGVuY2ll" + - "cy55YW1sLmdvdG1wbCAgIyBDb21wdXRlIHBsYW5lIGRlcGVuZGVuY3kgY29tcG9uZW50cwp8ICAg" + - "YC0tIDAyLW52Y2EueWFtbC5nb3RtcGwgICAgICAgICAgIyBudmNhLW9wZXJhdG9yIGNoYXJ0IGFu" + - "ZCBudmNhIGNvbmZpZ3VyYXRpb24KfC0tIGVudmlyb25tZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwg" + - "ICAgICAgICAgICAgICAgICAgICMgRGVmYXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwg" + - "ICBgLS0gPGVudi1uYW1lPi55YW1sICAgICAgICAgICAgICAjIFBlci1lbnZpcm9ubWVudCBvdmVy" + - "cmlkZXMKYC0tIGdsb2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAgICMgR28gdGVtcGxhdGUg" + - "dGhhdCBjb25zdHJ1Y3RzIHBlci1jaGFydCB2YWx1ZXMKYGBgCgpUaGVzZSBzdGFja3MgaGF2ZSBz" + - "ZXBhcmF0ZSBlbnZpcm9ubWVudHMgYW5kIGNsdXN0ZXIgY29udGV4dHMuIFRoZSBIZWxtZmlsZQp2" + - "YWx1ZXMgZmxvdyBhdXRob3JzIGJvdGggZW52aXJvbm1lbnQgZmlsZXMuIFRoZSBDTEkgcHJvZmls" + - "ZSBmbG93IGluc3RlYWQgdXNlcwp0aGUgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBsYW5lIHByb2Zp" + - "bGUgYXMgaXRzIGVuZHBvaW50IHNvdXJjZS4gRG8gbm90IG1peCB0aGUKaGFuZG9mZnMuIFNlZSBb" + - "U3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0" + - "aW9uLm1kKS4KCiMjIEdvdG1wbCBGaWxlcyBhbmQgVGhlaXIgUmVsZWFzZXMKCiMjIyAwMS1kZXBl" + - "bmRlbmNpZXMueWFtbC5nb3RtcGwKCnwgUmVsZWFzZSB8IENoYXJ0IHwgTmFtZXNwYWNlIHwgTm90" + - "ZXMgfAp8LS0tLS0tLS0tfC0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLXwKfCBuYXRzIHwgaGVs" + - "bS1udmNmLW5hdHMgfCBuYXRzLXN5c3RlbSB8IE1lc3NhZ2luZyB8Cnwgb3BlbmJhby1zZXJ2ZXIg" + - "fCBoZWxtLW52Y2Ytb3BlbmJhby1zZXJ2ZXIgfCB2YXVsdC1zeXN0ZW0gfCBTZWNyZXRzIG1hbmFn" + - "ZW1lbnQsIGRlcGVuZHMgb24gbmF0cyB8CnwgY2Fzc2FuZHJhIHwgaGVsbS1udmNmLWNhc3NhbmRy" + - "YSB8IGNhc3NhbmRyYS1zeXN0ZW0gfCBEYXRhYmFzZSB8CgpVc2VzIGA8PDogKmRlcGVuZGVuY3lg" + - "IHRlbXBsYXRlIGluaGVyaXRhbmNlIHdpdGggYHJlbGVhc2UtZ3JvdXA6IGRlcGVuZGVuY2llc2Ag" + - "bGFiZWwuCgojIyMgMDItY29yZS55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1l" + - "c3BhY2UgfCBMYWJlbCB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8" + - "IGFwaS1rZXlzIHwgaGVsbS1udmNmLWFwaS1rZXlzIHwgYXBpLWtleXMgfCBzZXJ2aWNlcyB8Cnwg" + - "c2lzIHwgaGVsbS1udmNmLXNpcyB8IHNpcyB8IHNlcnZpY2VzIHwKfCBhcGkgfCBoZWxtLW52Y2Yt" + - "YXBpIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBpbnZvY2F0aW9uLXNlcnZpY2UgfCBoZWxtLW52Y2Yt" + - "aW52b2NhdGlvbi1zZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBncnBjLXByb3h5IHwgaGVs" + - "bS1udmNmLWdycGMtcHJveHkgfCBudmNmIHwgc2VydmljZXMgfAp8IGVzcy1hcGkgfCBoZWxtLW52" + - "Y2YtZXNzLWFwaSB8IGVzcyB8IHNlcnZpY2VzIHwKfCBub3Rhcnktc2VydmljZSB8IGhlbG0tbnZj" + - "Zi1ub3Rhcnktc2VydmljZSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgcmV2YWwgfCBoZWxtLXJldmFs" + - "IHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBsbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNmL2hlbG0tbnZj" + - "Zi1sbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNmIHwgc2VydmljZXMgfAp8IGxsbS1hcGktZ2F0ZXdh" + - "eSB8IG52Y2YvaGVsbS1udmNmLWxsbS1hcGktZ2F0ZXdheSB8IG52Y2YgfCBzZXJ2aWNlcyB8Cnwg" + - "YWRtaW4taXNzdWVyLXByb3h5IHwgaGVsbS1hZG1pbi10b2tlbi1pc3N1ZXItcHJveHkgfCBhcGkt" + - "a2V5cyB8IChubyByZWxlYXNlLWdyb3VwIGxhYmVsKSB8CnwgaW5ncmVzcyB8IG52Y2YtZ2F0ZXdh" + - "eS1yb3V0ZXMgfCBlbnZveS1nYXRld2F5LXN5c3RlbSB8IGluZ3Jlc3MgfAoKTW9zdCBzZXJ2aWNl" + - "cyB1c2UgYGluaGVyaXQ6IFt7dGVtcGxhdGU6IHNlcnZpY2V9XWAuIExMTSByZWxlYXNlcyB1c2Ug" + - "T0NJIGNoYXJ0cyBmcm9tIHRoZSBgbnZjZmAgcmVwb3NpdG9yeSB3aXRoIHN0YW5kYWxvbmUgYHZh" + - "bHVlczogWy4uL2dsb2JhbC55YW1sLmdvdG1wbF1gIGJsb2NrczsgdGhleSBhcmUgZ2F0ZWQgb24g" + - "YGFkZG9ucy5sbG0uZW5hYmxlZGAuIGBhZG1pbi1pc3N1ZXItcHJveHlgIGFuZCBgaW5ncmVzc2Ag" + - "aGF2ZSBzdGFuZGFsb25lIGB2YWx1ZXM6YCBibG9ja3MuCgojIyMgMDMtb2JzZXJ2YWJpbGl0eS55" + - "YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBMYWJlbCB8CnwtLS0t" + - "LS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IChvYnNlcnZhYmlsaXR5IHJlbGVh" + - "c2VzKSB8ICh2YXJpb3VzKSB8IG9ic2VydmFiaWxpdHkgfCBvYnNlcnZhYmlsaXR5IHwKCkdhdGVk" + - "IG9uIG9ic2VydmFiaWxpdHktc3BlY2lmaWMgZmxhZ3MgaW4gdGhlIGVudmlyb25tZW50IGZpbGUu" + - "IFNraXBwZWQgaWYgZGlzYWJsZWQuCgojIyBUZW1wbGF0ZSBJbmhlcml0YW5jZQoKIyMjIGA8PDog" + - "KmRlcGVuZGVuY3lgIChZQU1MIG1lcmdlKQoKVXNlZCBpbiBgMDEtZGVwZW5kZW5jaWVzLnlhbWwu" + - "Z290bXBsYC4gTWVyZ2VzIHRoZSB0ZW1wbGF0ZSdzIHByb3BlcnRpZXMgaW50byB0aGUgcmVsZWFz" + - "ZS4KCioqR290Y2hhKio6IFlBTUwgbWVyZ2UgcmVwbGFjZXMgbGlzdHMuIElmIHlvdSBhZGQgYSBg" + - "dmFsdWVzOmAga2V5IHRvIHRoZSByZWxlYXNlLCBpdCAqKnJlcGxhY2VzKiogdGhlIHRlbXBsYXRl" + - "J3MgYHZhbHVlczpgIGxpc3QgZW50aXJlbHkuIFlvdSBtdXN0IHJlLWluY2x1ZGUgYWxsIHRlbXBs" + - "YXRlIHZhbHVlczoKCkluIHRoZSB0ZW1wbGF0ZSBiZWxvdywgYDxwcml2YXRlLXZhbHVlcz5gIHJl" + - "ZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxlIHN0YWNrIHJv" + - "b3QuCgpgYGB5YW1sCiMgVGVtcGxhdGUgZGVmaW5lczoKdGVtcGxhdGVzOgogIGRlcGVuZGVuY3k6" + - "ICZkZXBlbmRlbmN5CiAgICBjaGFydDogbnZjZi9oZWxtLW52Y2Yte3sgLlJlbGVhc2UuTmFtZSB9" + - "fQogICAgdmFsdWVzOgogICAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAgICAtIC4uLzxw" + - "cml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55" + - "YW1sCgojIFdoZW4gb3ZlcnJpZGluZywgTVVTVCByZS1pbmNsdWRlIGJvdGg6Ci0gbmFtZTogY2Fz" + - "c2FuZHJhCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5n" + - "b3RtcGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNdXN0" + - "IHJlLWluY2x1ZGUKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVM" + - "TUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwgICAjIE11c3QgcmUtaW5jbHVkZQogICAgLSBjYXNz" + - "YW5kcmE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + - "ICAgICAgICMgWW91ciBvdmVycmlkZQogICAgICAgIHJlc291cmNlczoKICAgICAgICAgIGxpbWl0" + - "czoKICAgICAgICAgICAgbWVtb3J5OiA4MTkyTWkKYGBgCgojIyMgYGluaGVyaXRgIChIZWxtZmls" + - "ZSBuYXRpdmUpCgpVc2VkIGluIGAwMi1jb3JlLnlhbWwuZ290bXBsYC4gSGVsbWZpbGUncyBuYXRp" + - "dmUgaW5oZXJpdGFuY2UgbWVjaGFuaXNtLgoKYGBgeWFtbAotIG5hbWU6IGFwaQogIHZlcnNpb246" + - "IDEuNi4wCiAgbmFtZXNwYWNlOiBudmNmCiAgaW5oZXJpdDoKICAgIC0gdGVtcGxhdGU6IHNlcnZp" + - "Y2UKYGBgCgpXaGVuIGFkZGluZyBgdmFsdWVzOmAgdG8gYW4gaW5oZXJpdGVkIHJlbGVhc2UsIHlv" + - "dSBhbHNvIG5lZWQgdG8gcmUtaW5jbHVkZSB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgZmlsZXMgc2lu" + - "Y2UgYHZhbHVlc2AgaXMgYSBsaXN0IHRoYXQgZ2V0cyByZXBsYWNlZC4KCiMjIFZhbHVlcyBQcmVj" + - "ZWRlbmNlCgpGcm9tIGxvd2VzdCB0byBoaWdoZXN0IHByaW9yaXR5OgoKMS4gYGVudmlyb25tZW50" + - "cy9iYXNlLnlhbWxgIC0tIGRlZmF1bHRzIHNoYXJlZCBhY3Jvc3MgYWxsIGVudmlyb25tZW50cwoy" + - "LiBgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgIC0tIHBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMK" + - "My4gYGdsb2JhbC55YW1sLmdvdG1wbGAgLS0gR28gdGVtcGxhdGUgcHJvY2Vzc2luZyAoY29uc3Ry" + - "dWN0cyBjaGFydC1zcGVjaWZpYyBzdHJ1Y3R1cmUpCjQuIGA8cHJpdmF0ZS12YWx1ZXM+LzxlbnY+" + - "LXNlY3JldHMueWFtbGAgLS0gc2Vuc2l0aXZlIHZhbHVlcwo1LiBJbmxpbmUgYHZhbHVlczpgIGJs" + - "b2NrcyBvbiByZWxlYXNlcyAtLSBoaWdoZXN0IHByZWNlZGVuY2UKCiMjIFdoYXQgZ2xvYmFsLnlh" + - "bWwuZ290bXBsIFBhc3NlcyBUaHJvdWdoCgpgZ2xvYmFsLnlhbWwuZ290bXBsYCByZWFkcyBmcm9t" + - "IGAuVmFsdWVzYCAodGhlIG1lcmdlZCBlbnZpcm9ubWVudCArIGVudi1zcGVjaWZpYyBZQU1MKSBh" + - "bmQgY29uc3RydWN0cyBjaGFydC1zcGVjaWZpYyB2YWx1ZXMuIEl0IG9ubHkgcGFzc2VzIHRocm91" + - "Z2gga2V5cyBpdCBleHBsaWNpdGx5IHJlZmVyZW5jZXM6CgojIyMgQ2Fzc2FuZHJhCgotIGBjYXNz" + - "YW5kcmEucmVwbGljYUNvdW50YAotIGBjYXNzYW5kcmEuaW1hZ2UuKmAgKHJlZ2lzdHJ5LCByZXBv" + - "c2l0b3J5KQotIGBjYXNzYW5kcmEubWlncmF0aW9ucy5pbWFnZS4qYAotIGBjYXNzYW5kcmEucGVy" + - "c2lzdGVuY2Uuc2l6ZWAKLSBgY2Fzc2FuZHJhLm5vZGVTZWxlY3RvcmAgKGlmIGBnbG9iYWwubm9k" + - "ZVNlbGVjdG9ycy5lbmFibGVkYCkKLSBgY2Fzc2FuZHJhLmdsb2JhbC5kZWZhdWx0U3RvcmFnZUNs" + - "YXNzYAoKIyMjIE5BVFMKCi0gYG5hdHMuY29udGFpbmVyLmltYWdlLipgCi0gYG5hdHMucmVsb2Fk" + - "ZXIuaW1hZ2UuKmAKLSBgbmF0cy5uYXRzQm94LmNvbnRhaW5lci5pbWFnZS4qYAotIGBuYXRzLmNv" + - "bmZpZy5qZXRzdHJlYW0uZmlsZVN0b3JlLnB2Yy5zdG9yYWdlQ2xhc3NOYW1lYAotIGBuYXRzLnBv" + - "ZFRlbXBsYXRlLm1lcmdlLnNwZWMubm9kZVNlbGVjdG9yYCAoaWYgZW5hYmxlZCkKCiMjIyBPcGVu" + - "QmFvCgotIGBvcGVuYmFvLm1pZ3JhdGlvbnMuaW1hZ2UuKmAgYW5kIGBvcGVuYmFvLm1pZ3JhdGlv" + - "bnMuZW52YAotIGBvcGVuYmFvLmluamVjdG9yLmltYWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmlt" + - "YWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmRhdGFTdG9yYWdlLipgCi0gTm9kZSBzZWxlY3RvcnMg" + - "KGlmIGVuYWJsZWQpCgojIyMgU2VydmljZXMgKEFQSSwgU0lTLCBldGMuKQoKLSBgPHNlcnZpY2U+" + - "LmltYWdlLipgIChyZWdpc3RyeSwgcmVwb3NpdG9yeSkKLSBgPHNlcnZpY2U+Lm5vZGVTZWxlY3Rv" + - "cmAgKGlmIGVuYWJsZWQpCi0gYDxzZXJ2aWNlPi5lbnYuKmAgKG9ic2VydmFiaWxpdHkgc2V0dGlu" + - "Z3MpCgojIyMgTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnQKCkVuYWJsZSB0aGUgTExNIGFkZG9uIGJl" + - "Zm9yZSBjcmVhdGluZyBvciBpbnZva2luZyBmdW5jdGlvbnMgd2l0aApgZnVuY3Rpb25UeXBlOiAi" + - "TExNImAuIFRoZSBhZGRvbiBkZXBsb3lzIGBsbG0tcmVxdWVzdC1yb3V0ZXJgIGFuZApgbGxtLWFw" + - "aS1nYXRld2F5YCwgYWRkcyB0aGUgYGxsbS5pbnZvY2F0aW9uLjxkb21haW4+YCByb3V0ZSB3aGVu" + - "IEdhdGV3YXkgQVBJCmluZ3Jlc3MgaXMgZW5hYmxlZCwgYW5kIGNvbmZpZ3VyZXMgd29ya2VycyB0" + - "byB1c2UgdGhlIExMTSBzaWRlY2FyLiBUaGUgSGVsbWZpbGUKY29uZGl0aW9uIGlzIGBhZGRvbnMu" + - "bGxtLmVuYWJsZWRgLiBEbyBub3QgdXNlIHRoZSBvYnNvbGV0ZSBgbGxtLmVuYWJsZWRgIHBhdGgu" + - "CgpGb3IgYSBzaW5nbGUtbm9kZSBpc29sYXRlZCB0ZXN0IGNsdXN0ZXIsIGFkZCB0aGlzIGNvbmZp" + - "Z3VyYXRpb24gdG8KYGVudmlyb25tZW50cy88ZW52Pi55YW1sYCBiZWZvcmUgYXBwbHlpbmcgdGhl" + - "IHN0YWNrOgoKYGBgeWFtbAphZGRvbnM6CiAgbGxtOgogICAgZW5hYmxlZDogdHJ1ZQogICAgZ2F0" + - "ZXdheToKICAgICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2Vydmlj" + - "ZU1vbml0b3I6CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQogICAgcmVxdWVzdFJvdXRlcjoKICAg" + - "ICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2VydmljZU1vbml0b3I6" + - "CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQoKYWdlbnRDb25maWc6CiAgbWVyZ2VDb25maWc6IHwK" + - "ICAgIGNsdXN0ZXI6CiAgICAgIHZhbGlkYXRpb25Qb2xpY3k6CiAgICAgICAgbmFtZTogVW5yZXN0" + - "cmljdGVkCiAgICB3b3JrbG9hZDoKICAgICAgc3RhcmdhdGVRVUlDSW5zZWN1cmU6IHRydWUKYGBg" + - "CgpVc2UgYHJlcGxpY2FDb3VudDogMWAgb25seSBmb3IgbG9jYWwgb3Igc2luZ2xlLW5vZGUgdGVz" + - "dCBjbHVzdGVycy4gVGhlIGJ1bmRsZWQKTlZDRiBBUEkgY3VycmVudGx5IHNlcnZlcyBwbGFpbnRl" + - "eHQgZ1JQQyBvbiBwb3J0IDkwOTAsIHNvIHRoZSBzZWxmLW1hbmFnZWQgc3RhY2sKZGVmYXVsdHMg" + - "dGhlIExMTSBBUEkgR2F0ZXdheSBhdXRoZW50aWNhdGlvbiBob3AgdG8gcGxhaW50ZXh0LiBTZXQK" + - "YGFkZG9ucy5sbG0uZ2F0ZXdheS5hdXRoLmdycGNJbnNlY3VyZTogZmFsc2VgIG9ubHkgd2l0aCBh" + - "IFRMUy1jYXBhYmxlIE5WQ0YgQVBJLgoKV29ya2VyLXRvLXJvdXRlciB0cmFuc3BvcnQgaXMgc2Vw" + - "YXJhdGUuIEZvciBzaGFyZWQgb3IgcHJvZHVjdGlvbiBjbHVzdGVycywgdXNlCnRoZSByZXF1aXJl" + - "ZCByZXBsaWNhIGNvdW50IGFuZCB0aGUgbWFuYWdlZCBUTFMgY29uZmlndXJhdGlvbi4gVGhlCmB3" + - "b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZWAgc2V0dGluZyBlbmFibGVzIHBsYWludGV4dCB3" + - "b3JrZXIgdHJhbnNwb3J0IGFuZAptdXN0IG5vdCBiZSB1c2VkIGluIHByb2R1Y3Rpb24uCgpUaGUg" + - "cmVxdWVzdCByb3V0ZXIgdXNlcyBgcG93ZXItb2YtdHdvYCB3aGVuIG5vIGxvYWQtYmFsYW5jZXIg" + - "Y29uZmlndXJhdGlvbiBpcwpzZXQuIENvbmZpZ3VyZSBvdGhlciByb3V0aW5nIG1ldGhvZHMgd2l0" + - "aCB0aGUKW0xMTSBSZXF1ZXN0IFJvdXRlciBMb2FkIEJhbGFuY2luZ10oaHR0cHM6Ly9naXRodWIu" + - "Y29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9kb2NzL3VzZXIvbGxtLXJlcXVlc3Qtcm91dGVyLWxv" + - "YWQtYmFsYW5jaW5nLm1kKQpndWlkZS4KCklmIHRoZSBzaWRlY2FyIGltYWdlIGlzIG1pcnJvcmVk" + - "IG91dHNpZGUgdGhlIHN0YWNrJ3MgZGVmYXVsdCBpbWFnZSByZWdpc3RyeSBhbmQKcmVwb3NpdG9y" + - "eSwgc2V0IHRoZSBnZW5lcmF0ZWQgd29ya2VyIHNpZGVjYXIgaW1hZ2UgZXhwbGljaXRseToKCmBg" + - "YHlhbWwKYXBpOgogIHJlbW90ZUNvbmZpZzoKICAgIGNvbmZpZ0RhdGE6CiAgICAgIG52Y2Y6CiAg" + - "ICAgICAgc2lkZWNhcnM6CiAgICAgICAgICBsbG0tcm91dGVyLWNsaWVudC1pbWFnZTogPHJlZ2lz" + - "dHJ5Pi88cmVwb3NpdG9yeT4vcHlsb246MC4xNC4xCmBgYAoKVGhlIGxlZ2FjeSBgYXBpLmVudi5O" + - "VkNGX1NJREVDQVJTX0xMTV9ST1VURVJfQ0xJRU5UX0lNQUdFYCBwYXRoIGlzIGRlcHJlY2F0ZWQu" + - "ClRoZSBzdGFjayB0cmFuc2xhdGVzIGl0IGZvciBvbmUgY29tcGF0aWJpbGl0eSB3aW5kb3csIGJ1" + - "dCBuZXcgY29uZmlndXJhdGlvbnMKbXVzdCB1c2UgdGhlIHJlbW90ZS1jb25maWcgcGF0aC4gQ29u" + - "ZmxpY3RpbmcgdmFsdWVzIGZhaWwgcmVuZGVyaW5nLgoKUmVuZGVyIGFuZCBhcHBseSB0aGUgdXBk" + - "YXRlZCBjb250cm9sLXBsYW5lIGVudmlyb25tZW50LCB0aGVuIHJlZnJlc2ggZXZlcnkKcmVnaXN0" + - "ZXJlZCBjb21wdXRlIHBsYW5lIHVzaW5nIHRoZSBzYW1lIGhhbmRvZmYgdXNlZCBmb3IgaXRzIGlu" + - "c3RhbGxhdGlvbiBzbwpOVkNBIHJlY2VpdmVzIGBhZ2VudENvbmZpZy5tZXJnZUNvbmZpZ2A6Cgpg" + - "YGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSB0ZW1wbGF0ZQpIRUxNRklMRV9FTlY9" + - "PGVudj4gaGVsbWZpbGUgc3luYwpgYGAKClVzZSB0aGUgY29tcGxldGUgY29tcHV0ZS1wbGFuZSBp" + - "bnN0YWxsIGNvbW1hbmQgZnJvbQpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNv" + - "bXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4gQQpDTEktcHJvZmlsZSBpbnN0YWxsYXRpb24g" + - "bXVzdCByZW1haW4gcHJvZmlsZS1kcml2ZW47IGEgSGVsbWZpbGUgaW5zdGFsbGF0aW9uCm11c3Qg" + - "cmVtYWluIHZhbHVlcy1kcml2ZW4uCgpFeGlzdGluZyBMTE0gZnVuY3Rpb24gdmVyc2lvbnMgcmV0" + - "YWluIHRoZSB3b3JrZXItc2lkZWNhciBpbWFnZSBtZXRhZGF0YQpjYXB0dXJlZCB3aGVuIHRoZSB2" + - "ZXJzaW9uIGlzIGNyZWF0ZWQuIFJlcGxhY2luZyBwb2RzIG9yIHJlZGVwbG95aW5nIHRoZSBzYW1l" + - "CnZlcnNpb24gZG9lcyBub3QgYXBwbHkgYSBuZXcgUHlsb24gaW1hZ2UuIEFmdGVyIHRoZSBjb250" + - "cm9sLXBsYW5lIHVwZGF0ZSwKY3JlYXRlIGFuZCBkZXBsb3kgYSBuZXcgZnVuY3Rpb24gdmVyc2lv" + - "bi4gVmVyaWZ5IHRoZSBjb250cm9sIHBsYW5lLCByb3V0ZSwgYW5kCndvcmtlciBzaWRlY2FyOgoK" + - "YGBgYmFzaAprdWJlY3RsIGdldCBkZXBsb3kgLW4gbnZjZiBsbG0tYXBpLWdhdGV3YXkKa3ViZWN0" + - "bCBnZXQgc3RhdGVmdWxzZXQgLW4gbnZjZiBsbG0tcmVxdWVzdC1yb3V0ZXIKa3ViZWN0bCBnZXQg" + - "cG9kcyAtbiBudmNmIHwgZ3JlcCAtRSAnbGxtLWFwaS1nYXRld2F5fGxsbS1yZXF1ZXN0LXJvdXRl" + - "cicKa3ViZWN0bCBnZXQgaHR0cHJvdXRlIC1BIHwgZ3JlcCBsbG0Ka3ViZWN0bCAtbiBudmNmLWJh" + - "Y2tlbmQgZ2V0IHBvZCA8ZnVuY3Rpb24tcG9kPiBcCiAgLW8ganNvbnBhdGg9J3tyYW5nZSAuc3Bl" + - "Yy5jb250YWluZXJzWz8oQC5uYW1lPT0ibGxtLXdvcmtlciIpXS5hcmdzWypdfXsufXsiXFxuIn17" + - "ZW5kfScKYGBgCgpGb3IgbG9jYWwgcGxhaW50ZXh0IGNsdXN0ZXJzLCB0aGUgYGxsbS13b3JrZXJg" + - "IGFyZ3MgbXVzdCBpbmNsdWRlCmAtLXF1aWMtaW5zZWN1cmVgLgoKRm9yIGxvYWQtYmFsYW5jZXIg" + - "c2NoZW1hIGFuZCBhbGdvcml0aG0gYmVoYXZpb3IsIHNlZSB0aGUKW1N0YXJnYXRlIGNvbmZpZ3Vy" + - "YXRpb24gZ3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9OVklESUEvbnZjZi9ibG9iL21haW4vc3Jj" + - "L2xpYnJhcmllcy9ydXN0L3N0YXJnYXRlL2RvY3MvbG9hZC1iYWxhbmNlci1jb25maWd1cmF0aW9u" + - "Lm1kKS4KCiMjIEhlbG1maWxlIFNlbGVjdG9ycwoKVGFyZ2V0IHNwZWNpZmljIHJlbGVhc2VzIG9y" + - "IGdyb3VwczoKCmBgYGJhc2gKIyBCeSByZWxlYXNlIGdyb3VwCkhFTE1GSUxFX0VOVj08ZW52PiBo" + - "ZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMKSEVMTUZJ" + - "TEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1zZXJ2aWNlcyBz" + - "eW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9" + - "aW5ncmVzcyBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVh" + - "c2UtZ3JvdXA9b2JzZXJ2YWJpbGl0eSBzeW5jCgojIEJ5IHJlbGVhc2UgbmFtZQpIRUxNRklMRV9F" + - "TlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSBzeW5jCkhFTE1GSUxF" + - "X0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9YWRtaW4taXNzdWVyLXByb3h5IHN5" + - "bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1sbG0tcmVxdWVz" + - "dC1yb3V0ZXIgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1l" + - "PWxsbS1hcGktZ2F0ZXdheSBzeW5jCgojIFRlbXBsYXRlIG9ubHkgKGRyeSBydW4pCkhFTE1GSUxF" + - "X0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlCgoj" + - "IERlc3Ryb3kgYSBzaW5nbGUgcmVsZWFzZQpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1z" + - "ZWxlY3RvciBuYW1lPWNhc3NhbmRyYSBkZXN0cm95CmBgYAoKTm90ZTogYGFkbWluLWlzc3Vlci1w" + - "cm94eWAgaGFzIG5vIGByZWxlYXNlLWdyb3VwYCBsYWJlbC4gVXNlIGAtLXNlbGVjdG9yIG5hbWU9" + - "YWRtaW4taXNzdWVyLXByb3h5YC4KUEsHCLE1HdsCKgAAAioAAFBLAwQUAAgAAAAAACEAAAAAAAAA" + - "AAAAAAAAPwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMv" + - "bnZjZi11aS1hZGRvbi5tZFVUBQABAKbOEiMgTlZDRiBVSSBBZGRvbgoKTlZDRiBVSSBpcyBhbiBv" + - "cHRpb25hbCwgY3VzdG9tZXItZmFjaW5nIE5WQ0YgYWRtaW4tcGFuZWwgVUkuIEl0IGlzIGRpc2Fi" + - "bGVkIGJ5CmRlZmF1bHQgYW5kIGF2YWlsYWJsZSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRoYXQg" + - "aW5jbHVkZSB0aGUgTlZDRiBVSSBhZGRvbi4KCiMjIFdoZW4gdG8gZW5hYmxlCgpFbmFibGUgTlZD" + - "RiBVSSBvbmx5IHdoZW4geW91IG5lZWQgdGhlIGFkbWluLXBhbmVsIFVJIGFuZCB5b3VyIGV4dHJh" + - "Y3RlZCBzdGFjawpwYWNrYWdlIGluY2x1ZGVzIHRoZSBhZGRvbi4gSWYgdGhlIHBhY2thZ2UgZG9l" + - "cyBub3QgY29udGFpbiBhIGBudmNmLXVpYCByZWxlYXNlCmFuZCBgbnZjZlVpYCByb3V0ZSB2YWx1" + - "ZXMsIHNraXAgdGhlIGFkZG9uIHVudGlsIHlvdSB1c2UgYSBwYWNrYWdlIHRoYXQgaW5jbHVkZXMK" + - "dGhlbS4KCiMjIEVuYWJsZSB0aGUgYWRkb24KCkVuYWJsZSBpdCBpbiBgZW52aXJvbm1lbnRzLzxl" + - "bnYtbmFtZT4ueWFtbGA6CgpgYGB5YW1sCmFkZG9uczoKICBudmNmVWk6CiAgICBlbmFibGVkOiB0" + - "cnVlCmBgYAoKIyMgQ3JlYXRlIG5hbWVzcGFjZSBhbmQgaW1hZ2UgcHVsbCBzZWNyZXQKCkNyZWF0" + - "ZSB0aGUgbmFtZXNwYWNlLCBhbmQgYW4gaW1hZ2UgcHVsbCBzZWNyZXQgb25seSBpZiBwdWxsaW5n" + - "IGZyb20gYSBwcml2YXRlCnJlZ2lzdHJ5OgoKYGBgYmFzaAprdWJlY3RsIGNyZWF0ZSBuYW1lc3Bh" + - "Y2UgbnZjZi11aSAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0K" + - "CiMgT25seSBpZiBwdWxsaW5nIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5IChlLmcuLCBOR0MgbnZj" + - "ci5pbykKZXhwb3J0IE5HQ19BUElfS0VZPSI8eW91ci1rZXk+IgprdWJlY3RsIGNyZWF0ZSBzZWNy" + - "ZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogIC0tZG9ja2VyLXNlcnZlcj1udmNyLmlv" + - "IFwKICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAtLWRvY2tlci1wYXNzd29y" + - "ZD0iJE5HQ19BUElfS0VZIiBcCiAgLS1uYW1lc3BhY2U9bnZjZi11aSBcCiAgLS1kcnktcnVuPWNs" + - "aWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCmBgYAoKVGhlIGRlZmF1bHQgcm91dGUg" + - "aG9zdCBpcyBgbnZjZi11aS48ZG9tYWluPmAgYW5kIHRoZSBiYWNrZW5kIGlzCmBudmNmLXVpLm52" + - "Y2YtdWk6ODMwMGAuCgojIyBBcHBseSB0aGUgc2VydmljZSBhbmQgcm91dGUKCkFmdGVyIGNvbmZp" + - "cm1pbmcgdGhlIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGBudmNmLXVpYCByZWxlYXNlLCBwcmV2aWV3" + - "IGFuZCBhcHBseQp0aGUgc2VydmljZSBhbmQgcm91dGU6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08" + - "ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1udmNmLXVpIHRlbXBsYXRlCkhFTE1G" + - "SUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1udmNmLXVpIHN5bmMK" + - "SEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3Vw" + - "PWluZ3Jlc3Mgc3luYwpgYGAKCiMjIFZlcmlmeQoKVmVyaWZ5IHRoZSByb3V0ZSBvbmx5IHdoZW4g" + - "dGhlIGFkZG9uIGlzIHByZXNlbnQgYW5kIGVuYWJsZWQ6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGRl" + - "cGxveSxzdmMgLW4gbnZjZi11aQprdWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIC1pIG52" + - "Y2YtdWkKY3VybCAtaSAtSCAiSG9zdDogbnZjZi11aS48ZG9tYWluPiIgImh0dHA6Ly88Z2F0ZXdh" + - "eS1hZGRyZXNzPi9zdGF0dXMiCmBgYAoKIyMgU2VjdXJpdHkKClRoZSBOVkNGIFVJIGFkbWluIHBh" + - "bmVsIGlzIGN1cnJlbnRseSB1bmF1dGhlbnRpY2F0ZWQuIERvIG5vdCBleHBvc2UgaXQgdG8gdGhl" + - "CnB1YmxpYyBpbnRlcm5ldC4gUmVzdHJpY3QgYWNjZXNzIHRvIGEgdHJ1c3RlZCBuZXR3b3JrLCBW" + - "UE4sIG9yIGFuIGF1dGhlbnRpY2F0aW5nCnByb3h5IGluIGZyb250IG9mIHRoZSBgbnZjZi11aWAg" + - "cm91dGUuClBLBwg4+SevuQcAALkHAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAD4ACQBkYXRh" + - "L252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5t" + - "ZFVUBQABAKbOEiMgSW1hZ2UgUHVsbCBTZWNyZXRzIFJlZmVyZW5jZQoKIyMgT3ZlcnZpZXcKCldo" + - "ZW4gcHVsbGluZyBOVkNGIGltYWdlcyBmcm9tIGEgcHJpdmF0ZSByZWdpc3RyeSAoZm9yIGV4YW1w" + - "bGUsIE5HQwpgbnZjci5pb2ApLCBLdWJlcm5ldGVzIG5lZWRzIGBpbWFnZVB1bGxTZWNyZXRzYCBv" + - "biBldmVyeSBwb2QuIENvbnRyb2wtcGxhbmUgYW5kCmNvbXB1dGUtcGxhbmUgY3JlZGVudGlhbHMg" + - "YXJlIGNvbmZpZ3VyZWQgaW4gdGhlaXIgb3duIGNsdXN0ZXIgY29udGV4dHMuIERvIG5vdAp1c2Ug" + - "b25lIG1peGVkIG5hbWVzcGFjZSBsaXN0LgoKVGhlIHJlY29tbWVuZGVkIGNvbnRyb2wtcGxhbmUg" + - "YXBwcm9hY2ggdXNlcyBLeXZlcm5vIHRvIGluamVjdCB0aGUgc2VjcmV0IGludG8KY29udHJvbC1w" + - "bGFuZSBwb2RzIGF0IGFkbWlzc2lvbiB0aW1lLiBUaGUgY29tcHV0ZS1wbGFuZSBjaGFydCBhbmQg" + - "b3BlcmF0b3IgdXNlCnRoZSBzZWNyZXQgaW4gYG52Y2Etb3BlcmF0b3JgIGFuZCBtaXJyb3IgaXQg" + - "dG8gYG52Y2Etc3lzdGVtYC4KCiMjIEt5dmVybm8gQXBwcm9hY2ggKFJlY29tbWVuZGVkKQoKIyMj" + - "IDEuIEluc3RhbGwgS3l2ZXJubwoKYGBgYmFzaApoZWxtIHJlcG8gYWRkIGt5dmVybm8gaHR0cHM6" + - "Ly9reXZlcm5vLmdpdGh1Yi5pby9reXZlcm5vLwpoZWxtIHJlcG8gdXBkYXRlCmhlbG0gaW5zdGFs" + - "bCBreXZlcm5vIGt5dmVybm8va3l2ZXJubyAtbiBreXZlcm5vIC0tY3JlYXRlLW5hbWVzcGFjZSBc" + - "CiAgLS1rdWJlLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4KYGBgCgojIyMgMi4gQ3Jl" + - "YXRlIGNvbnRyb2wtcGxhbmUgcHVsbCBzZWNyZXRzCgpgYGBiYXNoCmV4cG9ydCBOR0NfQVBJX0tF" + - "WT0iPHlvdXItbmdjLWFwaS1rZXk+IgoKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1z" + - "eXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRv" + - "CiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gY3JlYXRlIG5hbWVz" + - "cGFjZSAiJG5zIiBcCiAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIC0tY29u" + - "dGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCmRvbmUKCmZvciBucyBpbiBj" + - "YXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1z" + - "eXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5l" + - "LWNvbnRleHQ+IGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogICAg" + - "LS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRv" + - "a2VuJyBcCiAgICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5hbWVz" + - "cGFjZT0iJG5zIiBcCiAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIC0tY29u" + - "dGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCmRvbmUKYGBgCgpGb3Igbm9u" + - "LU5HQyByZWdpc3RyaWVzLCByZXBsYWNlIGAtLWRvY2tlci1zZXJ2ZXJgLCBgLS1kb2NrZXItdXNl" + - "cm5hbWVgLCBhbmQgYC0tZG9ja2VyLXBhc3N3b3JkYC4KCiMjIyAzLiBBcHBseSBLeXZlcm5vIENs" + - "dXN0ZXJQb2xpY3kKCmBgYHlhbWwKYXBpVmVyc2lvbjoga3l2ZXJuby5pby92MQpraW5kOiBDbHVz" + - "dGVyUG9saWN5Cm1ldGFkYXRhOgogIG5hbWU6IG52Y2YtYWRkLWltYWdlcHVsbHNlY3JldHMKc3Bl" + - "YzoKICBiYWNrZ3JvdW5kOiBmYWxzZQogIHJ1bGVzOgogICAgLSBuYW1lOiBhZGQtaW1hZ2VwdWxs" + - "c2VjcmV0LXRvLW52Y2YtcG9kcwogICAgICBtYXRjaDoKICAgICAgICBhbnk6CiAgICAgICAgLSBy" + - "ZXNvdXJjZXM6CiAgICAgICAgICAgIGtpbmRzOgogICAgICAgICAgICAtIFBvZAogICAgICAgICAg" + - "ICBuYW1lc3BhY2VzOgogICAgICAgICAgICAtICJudmNmIgogICAgICAgICAgICAtICJhcGkta2V5" + - "cyIKICAgICAgICAgICAgLSAic2lzIgogICAgICAgICAgICAtICJlc3MiCiAgICAgICAgICAgIC0g" + - "Im5hdHMtc3lzdGVtIgogICAgICAgICAgICAtICJjYXNzYW5kcmEtc3lzdGVtIgogICAgICAgICAg" + - "ICAtICJ2YXVsdC1zeXN0ZW0iCiAgICAgICAgICAgIC0gImNlcnQtbWFuYWdlciIKICAgICAgbXV0" + - "YXRlOgogICAgICAgIHBhdGNoU3RyYXRlZ2ljTWVyZ2U6CiAgICAgICAgICBtZXRhZGF0YToKICAg" + - "ICAgICAgICAgYW5ub3RhdGlvbnM6CiAgICAgICAgICAgICAgbnZjZi5udmlkaWEuY29tL2ltYWdl" + - "cHVsbHNlY3JldC1pbmplY3RlZC1ieToga3l2ZXJubwogICAgICAgICAgc3BlYzoKICAgICAgICAg" + - "ICAgaW1hZ2VQdWxsU2VjcmV0czoKICAgICAgICAgICAgLSBuYW1lOiBudmNyLWNyZWRzCmBgYAoK" + - "YGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBhcHBseSBc" + - "CiAgLWYga3l2ZXJuby1pbWFnZXB1bGxzZWNyZXQtcG9saWN5LnlhbWwKYGBgCgojIyMgNC4gSW5z" + - "dGFsbCB0aGUgY29udHJvbCBwbGFuZQoKQ29udGludWUgd2l0aCB0aGUgc2VsZWN0ZWQgY29udHJv" + - "bC1wbGFuZSBpbnN0YWxsYXRpb24gaW4KW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9u" + - "XShjb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkuIE5vCmNvbnRyb2wtcGxhbmUgaGVsbWZp" + - "bGUgbW9kaWZpY2F0aW9ucyBhcmUgbmVlZGVkLiBLeXZlcm5vIGluamVjdHMgdGhlIHB1bGwKc2Vj" + - "cmV0IGludG8gbmV3IGNvbnRyb2wtcGxhbmUgcG9kcy4KCiMjIENvbXB1dGUtUGxhbmUgU2VjcmV0" + - "CgpDcmVhdGUgdGhlIHNlY3JldCBvbmx5IGluIGBudmNhLW9wZXJhdG9yYCBvbiB0aGUgY29tcHV0" + - "ZSBjbHVzdGVyOgoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250" + - "ZXh0PiBjcmVhdGUgbmFtZXNwYWNlIG52Y2Etb3BlcmF0b3IgXAogIC0tZHJ5LXJ1bj1jbGllbnQg" + - "LW8geWFtbCB8IFwKICBrdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBh" + - "cHBseSAtZiAtCgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBjcmVh" + - "dGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAtLWRvY2tlci1zZXJ2ZXI9" + - "bnZjci5pbyBcCiAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgLS1kb2NrZXIt" + - "cGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogIC0tbmFtZXNwYWNlPW52Y2Etb3BlcmF0b3IgXAog" + - "IC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IFwKICBrdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0" + - "ZS1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCmBgYAoKUmVmZXJlbmNlIGl0IGluIHRoZSBjb21w" + - "dXRlLXBsYW5lIGVudmlyb25tZW50IGZpbGU6CgpgYGB5YW1sCmdsb2JhbDoKICBpbWFnZVB1bGxT" + - "ZWNyZXRzOgogICAgLSBuYW1lOiBudmNyLWNyZWRzCmBgYAoKVGhlIGNoYXJ0IGFuZCBvcGVyYXRv" + - "ciB1c2UgdGhhdCByZWZlcmVuY2UgaW4gYG52Y2Etb3BlcmF0b3JgIGFuZCBtaXJyb3IgdGhlCnNl" + - "Y3JldCB0byBgbnZjYS1zeXN0ZW1gLiBEbyBub3QgY3JlYXRlIGEgYnJvYWRlciBtYW51YWwgY29t" + - "cHV0ZSBuYW1lc3BhY2UgbGlzdC4gRm9sbG93CltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxh" + - "dGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpIGZvciB0aGUKc2VsZWN0ZWQgaW5z" + - "dGFsbCBmbG93LgoKIyMgVmVyaWZpY2F0aW9uCgpgYGBiYXNoCiMgQ2hlY2sgdGhhdCBhIGNvbnRy" + - "b2wtcGxhbmUgcG9kIGhhcyB0aGUgaW5qZWN0ZWQgc2VjcmV0Cmt1YmVjdGwgLS1jb250ZXh0IDxj" + - "b250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiBc" + - "CiAgLW8ganNvbnBhdGg9J3suc3BlYy5pbWFnZVB1bGxTZWNyZXRzfScKIyBFeHBlY3RlZDogW3si" + - "bmFtZSI6Im52Y3ItY3JlZHMifV0KCiMgQ2hlY2sgdGhlIEt5dmVybm8gYW5ub3RhdGlvbgprdWJl" + - "Y3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgcG9kIC1uIDxuYW1lc3Bh" + - "Y2U+IDxwb2QtbmFtZT4gXAogIC1vIGpzb25wYXRoPSd7Lm1ldGFkYXRhLmFubm90YXRpb25zLm52" + - "Y2ZcLm52aWRpYVwuY29tL2ltYWdlcHVsbHNlY3JldC1pbmplY3RlZC1ieX0nCiMgRXhwZWN0ZWQ6" + - "IGt5dmVybm8KCiMgQ2hlY2sgcHVsbCBldmVudHMKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wt" + - "cGxhbmUtY29udGV4dD4gZ2V0IGV2ZW50cyAtbiA8bmFtZXNwYWNlPiBcCiAgLS1zb3J0LWJ5PScu" + - "bGFzdFRpbWVzdGFtcCcgfCBncmVwIC1pIHB1bGwKIyBTaG91bGQgc2hvdyAiU3VjY2Vzc2Z1bGx5" + - "IHB1bGxlZCIgbm90ICI0MDEgVW5hdXRob3JpemVkIgoKIyBDaGVjayB0aGUgY2hhcnQvb3BlcmF0" + - "b3IgbWlycm9yIG9uIHRoZSBjb21wdXRlIGNsdXN0ZXIKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1" + - "dGUtcGxhbmUtY29udGV4dD4gZ2V0IHNlY3JldCBudmNyLWNyZWRzIFwKICAtbiBudmNhLXN5c3Rl" + - "bQpgYGAKCiMjIFdoZW4gUHVsbCBTZWNyZXRzIEFyZSBOb3QgTmVlZGVkCgotICoqQVdTIEVDUiB3" + - "aXRoIElBTSBub2RlIHJvbGVzKio6IElmIHlvdXIgbm9kZXMgaGF2ZSBgQW1hem9uRUMyQ29udGFp" + - "bmVyUmVnaXN0cnlSZWFkT25seWAgSUFNIHBvbGljeSwgS3ViZXJuZXRlcyBjYW4gcHVsbCBmcm9t" + - "IEVDUiB3aXRob3V0IGV4cGxpY2l0IHNlY3JldHMuCi0gKipQdWJsaWMgcmVnaXN0cmllcyoqOiBO" + - "byBwdWxsIHNlY3JldHMgbmVlZGVkLgotICoqQ1NQIGJ1aWx0LWluIGNyZWRlbnRpYWwgaGVscGVy" + - "cyoqOiBHS0UgQXJ0aWZhY3QgUmVnaXN0cnksIEF6dXJlIEFDUiB3aXRoIG1hbmFnZWQgaWRlbnRp" + - "dHksIGFuZCBzaW1pbGFyIHNlcnZpY2VzLgoKIyMgVHJvdWJsZXNob290aW5nCgojIyMgUG9kcyBz" + - "dGlsbCBpbiBJbWFnZVB1bGxCYWNrT2ZmIGFmdGVyIGFwcGx5aW5nIHBvbGljeQoKVGhlIEt5dmVy" + - "bm8gcG9saWN5IG9ubHkgYWZmZWN0cyBwb2RzIGNyZWF0ZWQgKiphZnRlcioqIHRoZSBwb2xpY3kg" + - "aXMgYXBwbGllZC4gRGVsZXRlIHN0dWNrIHBvZHMgdG8gdHJpZ2dlciByZWNyZWF0aW9uOgoKYGBg" + - "YmFzaAprdWJlY3RsIC0tY29udGV4dCA8dGFyZ2V0LWNvbnRleHQ+IGRlbGV0ZSBwb2RzIC1uIDxu" + - "YW1lc3BhY2U+IC0tYWxsCmBgYAoKIyMjIEt5dmVybm8gYWRtaXNzaW9uIGNvbnRyb2xsZXIgbm90" + - "IHJ1bm5pbmcKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4" + - "dD4gZ2V0IHBvZHMgLW4ga3l2ZXJubwojIEFsbCBwb2RzIHNob3VsZCBiZSBSdW5uaW5nCmBgYAoK" + - "IyMjIFBvbGljeSBub3QgbWF0Y2hpbmcKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gZ2V0IGNsdXN0ZXJwb2xpY3kgbnZjZi1hZGQtaW1hZ2VwdWxsc2Vj" + - "cmV0cwojIFNob3VsZCBzaG93IFJFQURZOiBUcnVlCmBgYAoKIyMjIFdyb25nIHNlY3JldCBuYW1l" + - "CgpUaGUgcG9saWN5IHJlZmVyZW5jZXMgYG52Y3ItY3JlZHNgLiBWZXJpZnkgdGhlIHNlY3JldCBl" + - "eGlzdHMgd2l0aCB0aGF0IGV4YWN0IG5hbWU6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDx0" + - "YXJnZXQtY29udGV4dD4gZ2V0IHNlY3JldCBudmNyLWNyZWRzIC1uIDxuYW1lc3BhY2U+CmBgYApQ" + - "SwcIS0I1qAAWAAAAFgAAUEsBAhQAFAAIAAAAAAAhAAICbAFKEAAAShAAABIACQAAAAAAAAAAAAAA" + - "AAAAAGRhdGEvbWFuaWZlc3QuanNvblVUBQABAKbOElBLAQIUABQACAAAAAAAIQD/dvNnU2EAAFNh" + - "AAAjAAkAAAAAAAAAAAAAAJMQAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9TS0lMTC5tZFVU" + - "BQABAKbOElBLAQIUABQACAAAAAAAIQBn/RgP/AwAAPwMAAAzAAkAAAAAAAAAAAAAAEByAABkYXRh" + - "L252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9jaS1waXBlbGluZXMubWRVVAUAAQCmzhJQ" + - "SwECFAAUAAgAAAAAACEAoRTjgV0MAABdDAAANAAJAAAAAAAAAAAAAACmfwAAZGF0YS9udmNmLXNl" + - "bGYtbWFuYWdlZC1jbGkvZXhhbXBsZXMvbXVsdGktY2x1c3Rlci5tZFVUBQABAKbOElBLAQIUABQA" + - "CAAAAAAAIQBCJ0kPBQ0AAAUNAAA3AAkAAAAAAAAAAAAAAG6MAABkYXRhL252Y2Ytc2VsZi1tYW5h" + - "Z2VkLWNsaS9wcm9tcHRzL2FkZC1jb21wdXRlLXBsYW5lLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAA" + - "AAAhANTejTSfGQAAnxkAADkACQAAAAAAAAAAAAAA4ZkAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + - "Y2xpL3Byb21wdHMvY3JlYXRlLWFuZC1ydW4tdGFzay5tZFVUBQABAKbOElBLAQIUABQACAAAAAAA" + - "IQDSQ9wEGCUAABglAAA3AAkAAAAAAAAAAAAAAPCzAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNs" + - "aS9wcm9tcHRzL2RlcGxveS1hbmQtaW52b2tlLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAHKS" + - "LCa+DgAAvg4AAD0ACQAAAAAAAAAAAAAAdtkAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3By" + - "b21wdHMvZGlhZ25vc2UtZmFpbGVkLWluc3RhbGwubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA" + - "QnHmHgEoAAABKAAAOgAJAAAAAAAAAAAAAACo6AAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkv" + - "cHJvbXB0cy9pbnN0YWxsLWZyb20tc2NyYXRjaC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQCq" + - "4Tq5yAcAAMgHAAA5AAkAAAAAAAAAAAAAABoRAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9w" + - "cm9tcHRzL3JvdGF0ZS1jbHVzdGVyLWp3a3MubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA2odj" + - "VuQhAADkIQAALgAJAAAAAAAAAAAAAABSGQEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJv" + - "bXB0cy90ZWFyZG93bi5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQByDQ9kISMAACEjAAAwAAkA" + - "AAAAAAAAAAAAAJs7AQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvY29tbWFu" + - "ZHMubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAc6daZNUGAADVBgAAMgAJAAAAAAAAAAAAAAAj" + - "XwEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL2V4aXQtY29kZXMubWRVVAUA" + - "AQCmzhJQSwECFAAUAAgAAAAAACEAmdDiUBcuAAAXLgAALQAJAAAAAAAAAAAAAABhZgEAZGF0YS9u" + - "dmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL2ZsYWdzLm1kVVQFAAEAps4SUEsBAhQAFAAI" + - "AAAAAAAhAPOuE4R0EQAAdBEAADcACQAAAAAAAAAAAAAA3JQBAGRhdGEvbnZjZi1zZWxmLW1hbmFn" + - "ZWQtY2xpL3JlZmVyZW5jZS90cm91Ymxlc2hvb3RpbmcubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + - "ACEAEcMUk0liAABJYgAALAAJAAAAAAAAAAAAAAC+pgEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1p" + - "bnN0YWxsYXRpb24vU0tJTEwubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAR1VqVkpWAABKVgAA" + - "NAAJAAAAAAAAAAAAAABqCQIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXZh" + - "bHMvZXZhbHMuanNvblVUBQABAKbOElBLAQIUABQACAAAAAAAIQACUk5AfygAAH8oAAAvAAkAAAAA" + - "AAAAAAAAAB9gAgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9leGFtcGxlcy5t" + - "ZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQCWY7xZEjAAABIwAABMAAkAAAAAAAAAAAAAAASJAgBk" + - "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL2NvbXB1dGUtcGxh" + - "bmUtaW5zdGFsbGF0aW9uLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhALV6cDu1MAAAtTAAADsA" + - "CQAAAAAAAAAAAAAAmbkCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVy" + - "ZW5jZXMvZGVidWdnaW5nLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhALE1HdsCKgAAAioAAEQA" + - "CQAAAAAAAAAAAAAAwOoCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVy" + - "ZW5jZXMvaGVsbWZpbGUtc3RydWN0dXJlLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhADj5J6+5" + - "BwAAuQcAAD8ACQAAAAAAAAAAAAAAPRUDAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0" + - "aW9uL3JlZmVyZW5jZXMvbnZjZi11aS1hZGRvbi5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBL" + - "QjWoABYAAAAWAAA+AAkAAAAAAAAAAAAAAGwdAwBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + - "bGxhdGlvbi9yZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZFVUBQABAKbOElBLBQYAAAAAFwAXAK8J" + - "AADhMwMAAAA=" + "IlRoZSBhZ2VudCBjYXB0dXJlZCB0aGUgYmFzZWxpbmUgd2l0aCBoZWxtZmlsZSB0ZW1wbGF0ZSwg" + + "dGhlbiBtb2RpZmllZCB0aGUgY2Fzc2FuZHJhIHJlbGVhc2Ugd2l0aCBpbmxpbmUgdmFsdWVzIHJl" + + "LWluY2x1ZGluZyBnbG9iYWwueWFtbC5nb3RtcGwgYW5kIHNlY3JldHMgaW4gdGhlIHZhbHVlcyBi" + + "bG9jay4gSXQgd2FybmVkIGFib3V0IHRoZSBZQU1MIG1lcmdlIGdvdGNoYSBhbmQgcHJldmlld2Vk" + + "IHRoZSBkaWZmIGJlZm9yZSBhcHBseWluZy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwog" + + "ICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBT" + + "S0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgY2FwdHVyZWQg" + + "YmFzZWxpbmUgd2l0aCAnaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0" + + "ZSciLAogICAgICAiVGhlIGFnZW50IG1vZGlmaWVkIHRoZSByZWxlYXNlIHZhbHVlcyBibG9jayB0" + + "byBpbmNsdWRlIHJlc291cmNlIGxpbWl0cyB3aXRoIG1lbW9yeTogMTZHaSIsCiAgICAgICJUaGUg" + + "YWdlbnQgcmUtaW5jbHVkZWQgZ2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNyZXRzIGZpbGUgaW4g" + + "dGhlIHZhbHVlczogYmxvY2sgKG5vdCBqdXN0IHRoZSBvdmVycmlkZSBhbG9uZSkiLAogICAgICAi" + + "VGhlIGFnZW50IHdhcm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGE6IHNwZWNpZnlpbmcg" + + "dmFsdWVzOiByZXBsYWNlcyB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgbGlzdCBlbnRpcmVseSIsCiAg" + + "ICAgICJUaGUgYWdlbnQgcHJldmlld2VkIHRoZSBjaGFuZ2Ugd2l0aCBoZWxtZmlsZSB0ZW1wbGF0" + + "ZSBhbmQgZGlmZiBiZWZvcmUgYXBwbHlpbmcgd2l0aCBzeW5jIgogICAgXQogIH0sCiAgewogICAg" + + "ImlkIjogIlM2LXNlbGVjdGl2ZS1zeW5jLWRlcGVuZGVuY2llcyIsCiAgICAicXVlc3Rpb24iOiAi" + + "RGVwbG95IG9ubHkgdGhlIE5WQ0YgZGVwZW5kZW5jaWVzIC0tIE5BVFMsIENhc3NhbmRyYSwgYW5k" + + "IE9wZW5CYW8gLS0gZm9yIHRlc3RpbmciLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCB1" + + "c2VkIHRoZSBoZWxtZmlsZSBzZWxlY3RvciB0byBkZXBsb3kgb25seSB0aGUgZGVwZW5kZW5jaWVz" + + "IHJlbGVhc2UgZ3JvdXAsIHRoZW4gdmVyaWZpZWQgcG9kcyBpbiB0aGUgZGVwZW5kZW5jeSBuYW1l" + + "c3BhY2VzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVh" + + "ZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtp" + + "bmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCB1c2VkICdoZWxtZmlsZSAtLXNlbGVjdG9yIHJl" + + "bGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMnIHRvIGRlcGxveSBvbmx5IGRlcGVuZGVuY2ll" + + "cyIsCiAgICAgICJUaGUgYWdlbnQgdmVyaWZpZWQgcG9kcyBpbiBkZXBlbmRlbmN5IG5hbWVzcGFj" + + "ZXMgKG5hdHMtc3lzdGVtLCBjYXNzYW5kcmEtc3lzdGVtLCB2YXVsdC1zeXN0ZW0pIiwKICAgICAg" + + "IlRoZSBhZ2VudCBwcm92aWRlZCB0aGUgc2VsZWN0b3IgcmVmZXJlbmNlIGZvciB0YXJnZXRpbmcg" + + "b3RoZXIgcmVsZWFzZSBncm91cHMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzctZGVidWct" + + "aW1hZ2VwdWxsYmFja29mZiIsCiAgICAicXVlc3Rpb24iOiAiQ2Fzc2FuZHJhIHBvZHMgYXJlIGlu" + + "IEltYWdlUHVsbEJhY2tPZmYgd2l0aCA0MDEgVW5hdXRob3JpemVkIiwKICAgICJleHBlY3RlZF9z" + + "a2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0" + + "aCI6ICJUaGUgYWdlbnQgcmVhZCB0aGUgZGVidWdnaW5nIHJlZmVyZW5jZSBhbmQgcmFuIGRpYWdu" + + "b3N0aWMgY29tbWFuZHMgdG8gaWRlbnRpZnkgdGhlIHJvb3QgY2F1c2U6IGRlc2NyaWJlZCB0aGUg" + + "cG9kLCBjaGVja2VkIGZvciBwdWxsIHNlY3JldHMsIGNoZWNrZWQgaW1hZ2VQdWxsU2VjcmV0cyBv" + + "biB0aGUgcG9kIHNwZWMgYW5kIHNlcnZpY2UgYWNjb3VudC4gSXQgaWRlbnRpZmllZCB0aGUgaXNz" + + "dWUgKG1pc3Npbmcgc2VjcmV0LCB3cm9uZyBjcmVkZW50aWFscywgb3IgbWlzc2luZyBpbWFnZVB1" + + "bGxTZWNyZXRzKSBhbmQgcHJvdmlkZWQgdGhlIGNvcnJlY3QgZml4LiIsCiAgICAiZXhwZWN0ZWRf" + + "YmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQt" + + "aW5zdGFsbGF0aW9uIFNLSUxMLm1kIGFuZCByZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCIsCiAgICAg" + + "ICJUaGUgYWdlbnQgcmFuICdrdWJlY3RsIGRlc2NyaWJlIHBvZCcgdG8gc2VlIHRoZSBJbWFnZVB1" + + "bGxCYWNrT2ZmIGV2ZW50cyIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBmb3IgcHVsbCBzZWNy" + + "ZXRzIGluIHRoZSBjYXNzYW5kcmEtc3lzdGVtIG5hbWVzcGFjZSIsCiAgICAgICJUaGUgYWdlbnQg" + + "Y2hlY2tlZCBpbWFnZVB1bGxTZWNyZXRzIG9uIHRoZSBwb2Qgc3BlYyBhbmQvb3Igc2VydmljZSBh" + + "Y2NvdW50IiwKICAgICAgIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoZSByb290IGNhdXNlIGFuZCBw" + + "cm92aWRlZCBhIHNwZWNpZmljIGZpeCIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTOS1yZW1v" + + "dGUtZWtzLXJvdXRpbmctYW5kLXNlY3JldHMiLAogICAgInF1ZXN0aW9uIjogIkNvbmZpZ3VyZSBh" + + "IHJlbW90ZSBFS1MgY29tcHV0ZSBjbHVzdGVyIHRvIHJlYWNoIG15IE5WQ0YgY29udHJvbCBwbGFu" + + "ZSB0aHJvdWdoIGl0cyBFbnZveSBHYXRld2F5LCBpbmNsdWRpbmcgTkFUUyBhbmQgcHJpdmF0ZS1y" + + "ZWdpc3RyeSBwdWxsIHNlY3JldHMuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYt" + + "bWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgY29u" + + "ZmlndXJlZCB0aGUgY29udHJvbCBwbGFuZSB0byB1c2UgdGhlIEVudm95IEdhdGV3YXkgY29udHJv" + + "bGxlciBpbiBlbnZveS1nYXRld2F5LXN5c3RlbSBhbmQgR2F0ZXdheS9udmNmLWdhdGV3YXkgaW4g" + + "ZW52b3ktZ2F0ZXdheSwgc2V0IGFsbCBzaXggcmVtb3RlIHdvcmtlciBlbmRwb2ludHMgYW5kIHRo" + + "ZSBncnBjLXByb3h5IGxvY2FsIG92ZXJyaWRlLCBlbmFibGVkIE5WQ0YgYW5kIE5WQ1QgZ1JQQyBy" + + "b3V0ZXMgcGx1cyBOQVRTLCBhbmQgZW5hYmxlZCBPcGVuQmFvIGlzc3VlciBkaXNjb3ZlcnkuIEl0" + + "IGNvbmZpZ3VyZWQgdGhlIGJhcmUtR2F0ZXdheSBDTEkgVVJMIGFuZCBIb3N0IGZpZWxkcyBpbmNs" + + "dWRpbmcgaWNtc19ob3N0LCBwbHVzIHRoZSBjb21wdXRlLXBsYW5lIElDTVMsIFJlVmFsLCBhbmQg" + + "TkFUUyBleHRlcm5hbCBVUkxzIGFuZCBob3N0IG92ZXJyaWRlcy4gSXQgY3JlYXRlZCB0aGUgcHVs" + + "bCBzZWNyZXQgaW4gYWxsIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNsdWRpbmcgY2VydC1t" + + "YW5hZ2VyLCBidXQgb25seSBpbiBudmNhLW9wZXJhdG9yIG9uIHRoZSBjb21wdXRlIGNsdXN0ZXI7" + + "IHRoZSBjaGFydCBhbmQgb3BlcmF0b3IgbWlycm9yIGl0IHRvIG52Y2Etc3lzdGVtLiIsCiAgICAi" + + "ZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxm" + + "LW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAg" + + "ICAgIlRoZSBhZ2VudCBzZXQgaW5ncmVzcy5nYXRld2F5QXBpLmNvbnRyb2xsZXJOYW1lc3BhY2Ug" + + "dG8gZW52b3ktZ2F0ZXdheS1zeXN0ZW0iLAogICAgICAiVGhlIGFnZW50IHNldCBzaGFyZWQsIGdy" + + "cGMsIGFuZCBuYXRzIEdhdGV3YXkgcmVmZXJlbmNlcyB0byBuYW1lIG52Y2YtZ2F0ZXdheSBhbmQg" + + "bmFtZXNwYWNlIGVudm95LWdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50IHNldCBnbG9iYWwud29y" + + "a2VyRW5kcG9pbnRzLm52Y2ZTZXJ2aWNlVVJMLCBudmNmR3JwY1NlcnZpY2VVUkwsIG52Y2ZOYXRz" + + "U2VydmljZVVSTCwgbnZjdFNlcnZpY2VVUkwsIG52Y3RHcnBjU2VydmljZVVSTCwgYW5kIGludm9j" + + "YXRpb25TZXJ2aWNlVVJMIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgZ3JwY3Byb3h5Lm52Y2ZHcnBj" + + "U2VydmljZVVSTCB0byB0aGUgY29udHJvbC1wbGFuZS1sb2NhbCBBUEkgZ1JQQyBzZXJ2aWNlIiwK" + + "ICAgICAgIlRoZSBhZ2VudCBlbmFibGVkIGJvdGggaW5ncmVzcy5nYXRld2F5QXBpLnJvdXRlcy5u" + + "dmNmQXBpLmdycGMgYW5kIG52Y3RBcGkuZ3JwYyB3aXRoIHdvcmtlci1hcGkgYW5kIHdvcmtlci10" + + "YXNrcyBob3N0bmFtZXMiLAogICAgICAiVGhlIGFnZW50IGV4cGxpY2l0bHkgc2V0IGluZ3Jlc3Mu" + + "Z2F0ZXdheUFwaS5yb3V0ZXMubmF0cy5lbmFibGVkIHRvIHRydWUiLAogICAgICAiVGhlIGFnZW50" + + "IHNldCBvcGVuYmFvLm1pZ3JhdGlvbnMuaXNzdWVyRGlzY292ZXJ5LmVuYWJsZWQgdG8gdHJ1ZSIs" + + "CiAgICAgICJUaGUgYWdlbnQgY29uZmlndXJlZCB0aGUgYmFyZS1HYXRld2F5IENMSSBVUkwgYW5k" + + "IEhvc3QgZmllbGRzLCBpbmNsdWRpbmcgc2NoZW1lLWxlc3MgaWNtc19ob3N0IiwKICAgICAgIlRo" + + "ZSBhZ2VudCBjb25maWd1cmVkIGNvbXB1dGUtcGxhbmUgaWNtc1NlcnZpY2VVUkwsIGljbXNTZXJ2" + + "aWNlSG9zdEhlYWRlck92ZXJyaWRlLCByZXZhbFNlcnZpY2VVUkwsIHJldmFsU2VydmljZUhvc3RI" + + "ZWFkZXJPdmVycmlkZSwgbmF0c1VSTCwgYW5kIG5hdHNIb3N0T3ZlcnJpZGUiLAogICAgICAiVGhl" + + "IGNvbnRyb2wtcGxhbmUgcHVsbC1zZWNyZXQgbmFtZXNwYWNlIGxpc3QgaW5jbHVkZWQgY2VydC1t" + + "YW5hZ2VyIiwKICAgICAgIlRoZSBjb21wdXRlLXBsYW5lIHNlY3JldCB3YXMgY3JlYXRlZCBvbmx5" + + "IGluIG52Y2Etb3BlcmF0b3IgYW5kIG1pcnJvcmVkIGJ5IHRoZSBjaGFydCBhbmQgb3BlcmF0b3Ig" + + "dG8gbnZjYS1zeXN0ZW0iCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzExLXNwbGl0LXRlYXJk" + + "b3duIiwKICAgICJxdWVzdGlvbiI6ICJUZWFyIGRvd24gbXkgc3BsaXQgY29udHJvbC1wbGFuZSBh" + + "bmQgY29tcHV0ZS1wbGFuZSBkZXBsb3ltZW50IHNhZmVseS4gU2hvdyBib3RoIHRoZSBIZWxtZmls" + + "ZSB2YWx1ZXMgYW5kIENMSSBwcm9maWxlIHZhcmlhbnRzLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwi" + + "OiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAi" + + "VGhlIEhlbG1maWxlIGZsb3cgZGVzdHJveWVkIGFuZCBjb25maXJtZWQgZGVyZWdpc3RyYXRpb24g" + + "b2YgZXZlcnkgY29tcHV0ZSBjbHVzdGVyIGJlZm9yZSBkZXN0cm95aW5nIHRoZSBjb250cm9sIHBs" + + "YW5lIGFuZCBwYXNzZWQgYm90aCBjb250cm9sLXBsYW5lIGt1YmVjb25maWcgZm9ybXMuIEJlZm9y" + + "ZSBlaXRoZXIgaGFuZG9mZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBib3RoIHRl" + + "YXJkb3duIGZsb3dzIHdhcm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9lcyBub3Qg" + + "cHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZlIGNlcnRNYW5hZ2Vy" + + "LmVuYWJsZWQ6IGZhbHNlIGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24gYW5kIGFib3J0ZWQg" + + "aWYgdHJ1ZSwgYW5kIHZlcmlmaWVkIG1hdGNoaW5nIHJlbGVhc2Ugb3duZXJzaGlwIGZvciBhbiBp" + + "bnRlbmRlZCBzdGFjay1tYW5hZ2VkIHJlbGVhc2UsIGFib3J0aW5nIG9uIG1pc3Npbmcgb3IgbWlz" + + "bWF0Y2hlZCBldmlkZW5jZS4gVGhleSBwcmVzZXJ2ZWQgdGhlIG5hbWVzcGFjZSBieSBkZWZhdWx0" + + "IGFuZCBkaWQgbm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBl" + + "eHBsaWNpdCBjb25maXJtYXRpb24uIFRoZSBDTEkgZmxvdyByZXRhaW5lZCB0aGUgZ2VuZXJhdGVk" + + "IHJlZ2lzdHJhdGlvbiB2YWx1ZXMsIHVzZWQgdGhlIGZ1bGwtcHJlZml4IHN0YXR1cyBjb21tYW5k" + + "IHRvIGluc3BlY3QgbGl2ZSByZWdpc3RyYXRpb25zLCBzdGF0ZWQgdGhhdCBuYW1lZC1jbHVzdGVy" + + "IHBsYW4tb25seSBkb2VzIG5vdCBxdWVyeSBJQ01TIGFuZCBjYW5ub3QgcHJlZGljdCBjb25kaXRp" + + "b25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwsIGFuZCBnb3QgZXhwbGljaXQgY29uZmlybWF0aW9u" + + "IHdoZW4gdGhlIHRhcmdldCB3YXMgdGhlIGxhc3QgcmVnaXN0ZXJlZCBjbHVzdGVyLiBJdCB0aGVu" + + "IHByZXZpZXdlZCBhbmQgcmFuIGRvd24gd2l0aCB0aGUgZnVsbCBwZXJzaXN0ZW50IHByZWZpeCwg" + + "cmVtb3ZpbmcgdGhlIGNvbnRyb2wgcGxhbmUgb25seSBhZnRlciB0aGUgbGFzdCByZWdpc3RyYXRp" + + "b24gd2FzIGdvbmUuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2Vu" + + "dCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3Jl" + + "IHRha2luZyBhY3Rpb24iLAogICAgICAiRm9yIGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciwgdGhlIEhl" + + "bG1maWxlIGZsb3cgcmFuIHRoZSBjb21wdXRlLXBsYW5lIE1ha2VmaWxlIGRlc3Ryb3kgdGFyZ2V0" + + "IHdpdGggaXRzIGNvbXB1dGUga3ViZWNvbmZpZyIsCiAgICAgICJBZnRlciBjb25maXJtYXRpb24s" + + "IHRoZSBIZWxtZmlsZSBmbG93IHJhbiBjbHVzdGVyIGRlbGV0ZSB3aXRoIGNsdXN0ZXJJRCBhbmQg" + + "bmNhSUQgYmVmb3JlIGNvbnRyb2wtcGxhbmUgZGVzdHJ1Y3Rpb24iLAogICAgICAiQmVmb3JlIGVp" + + "dGhlciBoYW5kb2ZmIGNvdWxkIGRlc3Ryb3kgdGhlIGNvbnRyb2wgcGxhbmUsIGJvdGggdGVhcmRv" + + "d24gZmxvd3Mgd2FybmVkIHRoYXQgbmFtZXNwYWNlIHByZXNlcnZhdGlvbiBkb2VzIG5vdCBwcmVz" + + "ZXJ2ZSB0aGUgSGVsbSByZWxlYXNlLCByZXF1aXJlZCBlZmZlY3RpdmUgY2VydE1hbmFnZXIuZW5h" + + "YmxlZDogZmFsc2UgZm9yIGFuIGV4dGVybmFsIGluc3RhbGxhdGlvbiBhbmQgYWJvcnRlZCBpZiB0" + + "cnVlLCBhbmQgdmVyaWZpZWQgaW50ZW5kZWQgc3RhY2sgb3duZXJzaGlwIHdoZW4gZW5hYmxlZCwg" + + "YWJvcnRpbmcgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlIiwKICAgICAgIkJvdGgg" + + "dGVhcmRvd24gZmxvd3MgcHJlc2VydmVkIHRoZSBjZXJ0LW1hbmFnZXIgbmFtZXNwYWNlIGJ5IGRl" + + "ZmF1bHQgYW5kIGRpZCBub3QgZGVsZXRlIGl0IHdpdGhvdXQgbmFtZXNwYWNlIHByb3ZlbmFuY2Ug" + + "YW5kIGV4cGxpY2l0IGNvbmZpcm1hdGlvbiIsCiAgICAgICJUaGUgSGVsbWZpbGUgZmxvdyByYW4g" + + "Y29udHJvbC1wbGFuZSBNYWtlZmlsZSBkZXN0cm95IHdpdGggYm90aCBLVUJFQ09ORklHIGFuZCBL" + + "VUJFQ09ORklHX0ZJTEUiLAogICAgICAiVGhlIENMSSBmbG93IHJldGFpbmVkIG91dC88Y2x1c3Rl" + + "ci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbCB1bnRpbCB0ZWFyZG93biBjb21wbGV0ZWQiLAog" + + "ICAgICAiQmVmb3JlIHJlYWwgZG93biwgdGhlIENMSSBmbG93IHVzZWQgdGhlIGZ1bGwtcHJlZml4" + + "IHN0YXR1cyBjb21tYW5kIHRvIGluc3BlY3QgbGl2ZSByZWdpc3RyYXRpb25zLCBzdGF0ZWQgdGhh" + + "dCBuYW1lZC1jbHVzdGVyIHBsYW4tb25seSBkb2VzIG5vdCBxdWVyeSBJQ01TIGFuZCBjYW5ub3Qg" + + "cHJlZGljdCBjb25kaXRpb25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwsIHdhcm5lZCB3aGVuIHRo" + + "ZSB0YXJnZXQgd2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3RlciwgYW5kIGdvdCBleHBsaWNp" + + "dCBjb25maXJtYXRpb24iLAogICAgICAiVGhlIENMSSBmbG93IHVzZWQgLS1jb25maWcsIGJvdGgg" + + "c3RhY2sgcGF0aHMsIC0tZW52LCAtLXBsYWluLCBib3RoIGNvbnRleHRzLCBhbmQgLS1pY21zLXVy" + + "bCBmb3IgZG93biAtLXBsYW4tb25seSBhbmQgdGhlbiBkb3duIiwKICAgICAgIlRoZSBhZ2VudCBz" + + "dGF0ZWQgdGhhdCBkb3duIHVucmVnaXN0ZXJzIGVhY2ggY29tcHV0ZSBjbHVzdGVyIGFuZCByZW1v" + + "dmVzIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgbm8gcmVnaXN0cmF0aW9ucyByZW1haW4i" + + "CiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzEzLXZhbHVlcy1wcmVjZWRlbmNlIiwKICAgICJx" + + "dWVzdGlvbiI6ICJJIGFkZGVkIGEgdmFsdWUgdG8gbXkgZW52aXJvbm1lbnQgWUFNTCBidXQgaXQn" + + "cyBiZWluZyBzaWxlbnRseSBpZ25vcmVkLiBIb3cgZG8gaGVsbWZpbGUgdmFsdWVzIHdvcmsgaW4g" + + "TlZDRj8iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxh" + + "dGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBleHBsYWluZWQgdGhlIHZhbHVl" + + "cyBwcmVjZWRlbmNlIGNoYWluIChiYXNlLnlhbWwsIGVudiBZQU1MLCBnbG9iYWwueWFtbC5nb3Rt" + + "cGwsIHNlY3JldHMsIGlubGluZSB2YWx1ZXMpLCBpZGVudGlmaWVkIHRoYXQgZ2xvYmFsLnlhbWwu" + + "Z290bXBsIG9ubHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMga2V5cywgYW5kIGV4cGxhaW5lZCB0" + + "aGF0IGFyYml0cmFyeSBjaGFydCB2YWx1ZXMgbXVzdCB1c2UgcmVsZWFzZSBpbmxpbmUgdmFsdWVz" + + "IGJsb2Nrcy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJl" + + "YWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFr" + + "aW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSB2YWx1ZXMgcHJlY2Vk" + + "ZW5jZSBjaGFpbjogYmFzZS55YW1sIC0+IGVudiBZQU1MIC0+IGdsb2JhbC55YW1sLmdvdG1wbCAt" + + "PiBzZWNyZXRzIC0+IGlubGluZSB2YWx1ZXMiLAogICAgICAiVGhlIGFnZW50IGlkZW50aWZpZWQg" + + "dGhhdCBnbG9iYWwueWFtbC5nb3RtcGwgb25seSBwYXNzZXMgdGhyb3VnaCBzcGVjaWZpYyBrZXlz" + + "IChjYXNzYW5kcmEucmVwbGljYUNvdW50LCBnbG9iYWwuc3RvcmFnZUNsYXNzLCBnbG9iYWwuaW1h" + + "Z2UsIGV0Yy4pIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCBhcmJpdHJhcnkgY2hh" + + "cnQgdmFsdWVzIG11c3QgYmUgc2V0IHZpYSByZWxlYXNlIGlubGluZSB2YWx1ZXM6IGJsb2NrcyIs" + + "CiAgICAgICJUaGUgYWdlbnQgbGlzdGVkIGV4YW1wbGVzIG9mIHZhbHVlcyB0aGF0IGFyZSBwcm9w" + + "YWdhdGVkIGFuZCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzIHRoYXQgcmVxdWlyZSBhIHJlbGVhc2Ug" + + "dmFsdWVzIGJsb2NrIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMxNC1lbmFibGUtbGxtLWZ1" + + "bmN0aW9ucyIsCiAgICAicXVlc3Rpb24iOiAiSSBuZWVkIHRvIGRlcGxveSBmdW5jdGlvblR5cGU6" + + "IExMTSBmdW5jdGlvbnMgb24gYSBzZWxmLW1hbmFnZWQsIHNpbmdsZS1ub2RlIGlzb2xhdGVkIHRl" + + "c3QgY2x1c3Rlci4gV2hhdCBIZWxtZmlsZSBjb25maWd1cmF0aW9uIGFuZCB2ZXJpZmljYXRpb24g" + + "c3RlcHMgZG8gSSBuZWVkPyIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFn" + + "ZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGVuYWJsZWQg" + + "dGhlIExMTSBhZGRvbiB3aXRoIGFkZG9ucy5sbG0uZW5hYmxlZCwgY29uZmlndXJlZCBzaW5nbGUg" + + "cmVwbGljYXMgZm9yIHRoZSBMTE0gQVBJIEdhdGV3YXkgYW5kIHJlcXVlc3Qgcm91dGVyLCBhbmQg" + + "ZXhwbGFpbmVkIHRoYXQgdGhlIHJlcXVlc3Qgcm91dGVyIHVzZXMgcG93ZXItb2YtdHdvIHdoZW4g" + + "bm8gbG9hZC1iYWxhbmNlciBjb25maWd1cmF0aW9uIGlzIHNldC4gSXQgbGlua2VkIHRoZSBjYW5v" + + "bmljYWwgcmVxdWVzdC1yb3V0ZXIgbG9hZC1iYWxhbmNpbmcgZ3VpZGUgZm9yIG90aGVyIHJvdXRp" + + "bmcgbWV0aG9kcy4gRm9yIHRoZSBpc29sYXRlZCBwbGFpbnRleHQgY2x1c3RlciwgaXQgcmVsaWVk" + + "IG9uIHRoZSBzZWxmLW1hbmFnZWQgc3RhY2sgZGVmYXVsdCBmb3IgdGhlIGJ1bmRsZWQgZ2F0ZXdh" + + "eS10by1BUEkgYXV0aGVudGljYXRpb24gaG9wIGFuZCBpbmNsdWRlZCBhZ2VudENvbmZpZy5tZXJn" + + "ZUNvbmZpZy53b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZSBmb3IgdGhlIHNlcGFyYXRlIHdv" + + "cmtlciB0cmFuc3BvcnQsIHdpdGggYSB3YXJuaW5nIHRoYXQgcGxhaW50ZXh0IHdvcmtlciB0cmFu" + + "c3BvcnQgaXMgbm90IGZvciBwcm9kdWN0aW9uLiBJdCByZWZyZXNoZWQgdGhlIGNvbXB1dGUgcGxh" + + "bmUgdXNpbmcgdGhlIHNhbWUgaGFuZG9mZiB1c2VkIGR1cmluZyBpbnN0YWxsYXRpb24sIHJlZGVw" + + "bG95ZWQgZXhpc3RpbmcgTExNIGZ1bmN0aW9ucywgYW5kIHZlcmlmaWVkIHRoZSBMTE0gZGVwbG95" + + "bWVudHMsIHJvdXRlLCBhbmQgbGxtLXdvcmtlciBzaWRlY2FyLiIsCiAgICAiZXhwZWN0ZWRfYmVo" + + "YXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgdXNlZCBhZGRvbnMubGxtLmVuYWJsZWQsIG5vdCB0" + + "aGUgb2Jzb2xldGUgbGxtLmVuYWJsZWQgcGF0aCIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGdhdGV3" + + "YXkgYW5kIHJlcXVlc3RSb3V0ZXIgcmVwbGljYUNvdW50IHRvIDEgZm9yIHRoZSBzaW5nbGUtbm9k" + + "ZSB0ZXN0IGNsdXN0ZXIiLAogICAgICAiVGhlIGFnZW50IHN0YXRlZCB0aGF0IHRoZSByZXF1ZXN0" + + "IHJvdXRlciBkZWZhdWx0cyB0byBwb3dlci1vZi10d28gYW5kIGxpbmtlZCB0aGUgY2Fub25pY2Fs" + + "IHJlcXVlc3Qtcm91dGVyIGxvYWQtYmFsYW5jaW5nIGd1aWRlIGZvciBvdGhlciBtZXRob2RzIiwK" + + "ICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCB0aGUgYnVuZGxlZCBnYXRld2F5LXRvLUFQ" + + "SSBhdXRoZW50aWNhdGlvbiBob3AgZGVmYXVsdHMgdG8gcGxhaW50ZXh0LCBpbmNsdWRlZCB3b3Jr" + + "bG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZSBvbmx5IGZvciB0aGUgaXNvbGF0ZWQgd29ya2VyIHRy" + + "YW5zcG9ydCwgYW5kIHdhcm5lZCBhZ2FpbnN0IHBsYWludGV4dCB3b3JrZXIgdHJhbnNwb3J0IGlu" + + "IHByb2R1Y3Rpb24iLAogICAgICAiVGhlIGFnZW50IGFwcGxpZWQgdGhlIGNvbnRyb2wtcGxhbmUg" + + "SGVsbWZpbGUgZW52aXJvbm1lbnQsIHJlZnJlc2hlZCB0aGUgY29tcHV0ZSBwbGFuZSB3aXRoIHRo" + + "ZSBzYW1lIHNlbGVjdGVkIGhhbmRvZmYsIGFuZCByZWNyZWF0ZWQgb3IgcmVkZXBsb3llZCBleGlz" + + "dGluZyBMTE0gZnVuY3Rpb25zIiwKICAgICAgIlRoZSBhZ2VudCB2ZXJpZmllZCBsbG0tYXBpLWdh" + + "dGV3YXksIGxsbS1yZXF1ZXN0LXJvdXRlciwgdGhlIExMTSBIVFRQUm91dGUsIGFuZCB0aGUgbGxt" + + "LXdvcmtlciBzaWRlY2FyIGluY2x1ZGluZyAtLXF1aWMtaW5zZWN1cmUiCiAgICBdCiAgfSwKICB7" + + "CiAgICAiaWQiOiAiRzgtTkVHLW5vdC1mb3ItazNkIiwKICAgICJxdWVzdGlvbiI6ICJTZXQgdXAg" + + "YSBsb2NhbCBOVkNGIGRldiBjbHVzdGVyIHVzaW5nIGszZCBmb3IgdGVzdGluZyIsCiAgICAiZXhw" + + "ZWN0ZWRfc2tpbGwiOiBudWxsLAogICAgInNob3VsZF90cmlnZ2VyIjogZmFsc2UsCiAgICAiZ3Jv" + + "dW5kX3RydXRoIjogIlRoaXMgaXMgYSBsb2NhbCBrM2QgZGV2ZWxvcG1lbnQgcmVxdWVzdCB0aGF0" + + "IGJlbG9uZ3MgdG8gdGhlIG52Y2Ytc2VsZi1ob3N0ZWQtbG9jYWwtZGV2IHNraWxsLCBub3QgbnZj" + + "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uLiBUaGUgYWdlbnQgZGlkIG5vdCByZWFkIG9yIHVz" + + "ZSB0aGUgc2VsZi1tYW5hZ2VkIGluc3RhbGxhdGlvbiBza2lsbCBhbmQgaW5zdGVhZCBwcm92aWRl" + + "ZCBrM2Qtc3BlY2lmaWMgZ3VpZGFuY2UuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAg" + + "ICAgIlRoZSBhZ2VudCBkaWQgbm90IHJlYWQgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9u" + + "L1NLSUxMLm1kIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHByb3ZpZGUgaGVsbWZpbGUtYmFz" + + "ZWQgcHJvZHVjdGlvbiBkZXBsb3ltZW50IGluc3RydWN0aW9ucyIsCiAgICAgICJUaGUgYWdlbnQg" + + "cHJvdmlkZWQgazNkLXNwZWNpZmljIGxvY2FsIGRldmVsb3BtZW50IGd1aWRhbmNlIG9yIGRlZmVy" + + "cmVkIHRvIHRoZSBhcHByb3ByaWF0ZSBsb2NhbC1kZXYgc2tpbGwiCiAgICBdCiAgfQpdClBLBwhH" + + "VWpWSlYAAEpWAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAC8ACQBkYXRhL252Y2Ytc2VsZi1t" + + "YW5hZ2VkLWluc3RhbGxhdGlvbi9leGFtcGxlcy5tZFVUBQABAKbOEiMgRXhhbXBsZXMKCldvcmtl" + + "ZCBleGFtcGxlcyBiYXNlZCBvbiByZWFsIGRlcGxveW1lbnQgc2NlbmFyaW9zLgoKIyMgRXhhbXBs" + + "ZSAxOiBPdmVycmlkZSBDYXNzYW5kcmEgUmVzb3VyY2VzCgpUaGUgZGVmYXVsdCBDYXNzYW5kcmEg" + + "cmVzb3VyY2UgbGltaXRzIGNhdXNlIE9PTSBvbiBsYXJnZSBpbnN0YW5jZSB0eXBlcyAoZS5nLiwg" + + "YHA1LjQ4eGxhcmdlYCkuCgpQcm9ibGVtOiBDYXNzYW5kcmEgcG9kcyByZXN0YXJ0IHdpdGggYE9P" + + "TUtpbGxlZGAuCgpTb2x1dGlvbjogT3ZlcnJpZGUgcmVzb3VyY2VzIHZpYSBoZWxtZmlsZSByZWxl" + + "YXNlIHZhbHVlcyBibG9jay4KCiMjIyBTdGVwIDE6IENhcHR1cmUgYmFzZWxpbmUKCmBgYGJhc2gK" + + "SEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVt" + + "cGxhdGUgPiAvdG1wL2Nhc3MtYmVmb3JlLnlhbWwKZ3JlcCAtQTggJ3Jlc291cmNlczonIC90bXAv" + + "Y2Fzcy1iZWZvcmUueWFtbCB8IGhlYWQgLTEwCmBgYAoKIyMjIFN0ZXAgMjogQWRkIG92ZXJyaWRl" + + "IHRvIGhlbG1maWxlLmQvMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsCgpJbiB0aGUgZXhhbXBs" + + "ZXMgYmVsb3csIGA8cHJpdmF0ZS12YWx1ZXM+YCByZWZlcnMgdG8gdGhlIGBzZWNyZXRzL2AgZGly" + + "ZWN0b3J5IGF0IHRoZSBoZWxtZmlsZSBzdGFjayByb290LgoKYGBgeWFtbAotIG5hbWU6IGNhc3Nh" + + "bmRyYQogIHZlcnNpb246IDAuOC4wCiAgY29uZGl0aW9uOiBjYXNzYW5kcmEuZW5hYmxlZAogIG5h" + + "bWVzcGFjZTogY2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAqZGVwZW5kZW5jeQogIHZhbHVlczoKICAg" + + "IC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAtIC4uLzxwcml2YXRlLXZhbHVlcz4ve3sgcmVx" + + "dWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCiAgICAtIGNhc3NhbmRyYToK" + + "ICAgICAgICByZXNvdXJjZXM6CiAgICAgICAgICBsaW1pdHM6CiAgICAgICAgICAgIGNwdTogIjgi" + + "CiAgICAgICAgICAgIG1lbW9yeTogODE5Mk1pCiAgICAgICAgICByZXF1ZXN0czoKICAgICAgICAg" + + "ICAgY3B1OiAiMiIKICAgICAgICAgICAgbWVtb3J5OiA0MDk2TWkKYGBgCgojIyMgU3RlcCAzOiBW" + + "ZXJpZnkgYW5kIGFwcGx5CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + + "bGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlID4gL3RtcC9jYXNzLWFmdGVyLnlhbWwKZGlm" + + "ZiAvdG1wL2Nhc3MtYmVmb3JlLnlhbWwgL3RtcC9jYXNzLWFmdGVyLnlhbWwgICMgQ29uZmlybSBy" + + "ZXNvdXJjZXMgY2hhbmdlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBu" + + "YW1lPWNhc3NhbmRyYSBzeW5jCmBgYAoKTm90ZTogYHJlc291cmNlUHJlc2V0YCAoYSBCaXRuYW1p" + + "IGZlYXR1cmUpIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIE5WQ0YgY2Fzc2FuZHJhIHdyYXBwZXIg" + + "Y2hhcnQuIFVzZSBleHBsaWNpdCBgcmVzb3VyY2VzYCBpbnN0ZWFkLgoKLS0tCgojIyBFeGFtcGxl" + + "IDI6IERlcGxveSBmcm9tIE5HQyBQcml2YXRlIFJlZ2lzdHJ5IHdpdGggUHVsbCBTZWNyZXRzCgpE" + + "ZXBsb3kgdGhlIE5WQ0Ygc3RhY2sgcHVsbGluZyBpbWFnZXMgZGlyZWN0bHkgZnJvbSBOR0MgKGBu" + + "dmNyLmlvYCkgaW5zdGVhZCBvZiBhIG1pcnJvcmVkIHJlZ2lzdHJ5LCB1c2luZyBpbWFnZSBwdWxs" + + "IHNlY3JldHMuCgojIyMgU3RlcCAxOiBDb25maWd1cmUgZW52aXJvbm1lbnQgZm9yIE5HQwoKYGBg" + + "eWFtbAojIGVudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoKICBoZWxtOgogICAgc291cmNl" + + "czoKICAgICAgcmVnaXN0cnk6IG52Y3IuaW8KICAgICAgcmVwb3NpdG9yeTogbnZpZGlhL252Y2YK" + + "ICBpbWFnZToKICAgIHJlZ2lzdHJ5OiBudmNyLmlvCiAgICByZXBvc2l0b3J5OiBudmlkaWEvbnZj" + + "ZgpgYGAKCiMjIyBTdGVwIDI6IEF1dGhlbnRpY2F0ZSBsb2NhbGx5IChmb3IgaGVsbWZpbGUgY2hh" + + "cnQgcHVsbHMpCgpgYGBiYXNoCmRvY2tlciBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tlbicg" + + "LXAgIiROR0NfQVBJX0tFWSIKaGVsbSByZWdpc3RyeSBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0" + + "b2tlbicgLXAgIiROR0NfQVBJX0tFWSIKYGBgCgojIyMgU3RlcCAzOiBDcmVhdGUgbmFtZXNwYWNl" + + "cyBhbmQgcHVsbCBzZWNyZXRzCgpgYGBiYXNoCmV4cG9ydCBOR0NfQVBJX0tFWT0iPHlvdXItbmdj" + + "LWFwaS1rZXk+IgoKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBh" + + "cGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAt" + + "LWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gY3JlYXRlIG5hbWVzcGFjZSAiJG5zIiBc" + + "CiAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJv" + + "bC1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCmRvbmUKCmZvciBucyBpbiBjYXNzYW5kcmEtc3lz" + + "dGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1t" + + "YW5hZ2VyOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGNy" + + "ZWF0ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogICAgLS1kb2NrZXItc2Vy" + + "dmVyPW52Y3IuaW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgICAt" + + "LWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5hbWVzcGFjZT0iJG5zIiBc" + + "CiAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJv" + + "bC1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCmRvbmUKYGBgCgojIyMgU3RlcCA0OiBBZGQgaW1h" + + "Z2VQdWxsU2VjcmV0cyB0byBoZWxtZmlsZSByZWxlYXNlcwoKQWRkIHRoZSBjaGFydC1zcGVjaWZp" + + "YyBgaW1hZ2VQdWxsU2VjcmV0c2Aga2V5IHRvIGVhY2ggcmVsZWFzZS4gRXhhbXBsZSBmb3IgY2Fz" + + "c2FuZHJhIGluIGBoZWxtZmlsZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbGA6CgpgYGB5" + + "YW1sCi0gbmFtZTogY2Fzc2FuZHJhCiAgdmVyc2lvbjogMC44LjAKICBjb25kaXRpb246IGNhc3Nh" + + "bmRyYS5lbmFibGVkCiAgbmFtZXNwYWNlOiBjYXNzYW5kcmEtc3lzdGVtCiAgPDw6ICpkZXBlbmRl" + + "bmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwKICAgIC0gLi4vPHByaXZh" + + "dGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwK" + + "ICAgIC0gY2Fzc2FuZHJhOgogICAgICAgIGdsb2JhbDoKICAgICAgICAgIGltYWdlUHVsbFNlY3Jl" + + "dHM6CiAgICAgICAgICAgIC0gbnZjci1jcmVkcwpgYGAKClNlZSBbcmVmZXJlbmNlcy9wdWxsLXNl" + + "Y3JldHMubWRdKHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKSBmb3IgdGhlIGtleSBmb3IgZXZl" + + "cnkgY2hhcnQuCgpUaGVzZSBhcmUgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzLiBGb3IgYSBzZXBh" + + "cmF0ZSBjb21wdXRlIGNsdXN0ZXIsIGNyZWF0ZSB0aGUKc2VjcmV0IG9ubHkgaW4gYG52Y2Etb3Bl" + + "cmF0b3JgOyB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0bwpgbnZjYS1zeXN0ZW1g" + + "LiBTZWUgW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1" + + "dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kI3B1bGwtc2VjcmV0cykuCgojIyMgU3RlcCA1OiBEZXBs" + + "b3kKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0ta3ViZS1jb250ZXh0IDxj" + + "b250cm9sLXBsYW5lLWNvbnRleHQ+IHN5bmMKYGBgCgojIyMgU3RlcCA2OiBQYXRjaCBTZXJ2aWNl" + + "QWNjb3VudHMgZm9yIGNoYXJ0cyB3aXRob3V0IG5hdGl2ZSBzdXBwb3J0CgpBZnRlciBQaGFzZSAx" + + "IChkZXBlbmRlbmNpZXMpIGNvbXBsZXRlcywgT3BlbkJhbyBwb2RzIHdpbGwgYmUgaW4gYEltYWdl" + + "UHVsbEJhY2tPZmZgLiBQYXRjaCBhbmQgcmVzdGFydDoKCmBgYGJhc2gKZm9yIG5zIGluIHZhdWx0" + + "LXN5c3RlbSBudmNmIGVzczsgZG8KICBmb3Igc2EgaW4gJChrdWJlY3RsIC0tY29udGV4dCA8Y29u" + + "dHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgc2EgLW4gIiRucyIgXAogICAgLS1uby1oZWFkZXJzIC1v" + + "IGN1c3RvbS1jb2x1bW5zPSI6bWV0YWRhdGEubmFtZSIpOyBkbwogICAga3ViZWN0bCAtLWNvbnRl" + + "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gcGF0Y2ggc2VydmljZWFjY291bnQgLW4gIiRucyIg" + + "IiRzYSIgXAogICAgICAtcCAneyJpbWFnZVB1bGxTZWNyZXRzIjogW3sibmFtZSI6ICJudmNyLWNy" + + "ZWRzIn1dfScKICBkb25lCmRvbmUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + + "dGV4dD4gZGVsZXRlIHBvZHMgLW4gdmF1bHQtc3lzdGVtIC0tYWxsCmBgYAoKVmVyaWZ5OgoKYGBg" + + "YmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZXZlbnRz" + + "IC1uIHZhdWx0LXN5c3RlbSBcCiAgLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcgfCBncmVwIC1p" + + "IHB1bGwKIyBTaG91bGQgc2hvdyAiU3VjY2Vzc2Z1bGx5IHB1bGxlZCBpbWFnZSIgZnJvbSBudmNy" + + "LmlvCmBgYAoKLS0tCgojIyBFeGFtcGxlIDM6IEZ1bGwgVGVhcmRvd24gYW5kIFJlaW5zdGFsbAoK" + + "V2hlbiBhIGRlcGxveW1lbnQgaXMgYnJva2VuIGFuZCB5b3UgbmVlZCBhIGNsZWFuIHNsYXRlLgoK" + + "IyMjIFN0ZXAgMTogRGVzdHJveSB0aGUgY29tcHV0ZS1wbGFuZSBzdGFjawoKYGBgYmFzaAptYWtl" + + "IC1DIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGRlc3Ryb3kgXAogIENMVVNURVJf" + + "TkFNRT08Y2x1c3Rlci1uYW1lPiBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklH" + + "X0ZJTEU9PGNvbXB1dGUtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpJZiBjb21wdXRlIGNsZWFudXAg" + + "aXMgc3R1Y2sgb24gZmluYWxpemVycywgdXNlIHRoZSBjb21wdXRlLWNvbnRleHQgcHJvY2VkdXJl" + + "IGluCltkZWJ1Z2dpbmcubWRdKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kI2ZhaWx1cmUtbnZjYS1j" + + "bGVhbnVwLXN0dWNrLWZpbmFsaXplcnMpLgoKIyMjIFN0ZXAgMjogRGVyZWdpc3RlciB0aGUgY29t" + + "cHV0ZSBjbHVzdGVyCgpSZWFkIGBjbHVzdGVySURgIGFuZCBgbmNhSURgIGZyb20KYGRlcGxveS9z" + + "dGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL3JlZ2lzdHJhdGlvbi88Y2x1c3Rlci1uYW1lPi1yZWdp" + + "c3Rlci12YWx1ZXMueWFtbGAuClNob3cgdGhlIElEIGFuZCBnZXQgY29uZmlybWF0aW9uIGJlZm9y" + + "ZSBkZWxldGluZyB0aGUgSUNNUyByb3c6CgpgYGBiYXNoCjxudmNmLWNsaT4gLS1jb25maWcgPGNv" + + "bmZpZz4gY2x1c3RlciBkZWxldGUgXAogIC0tY2x1c3Rlci1pZCA8Y2x1c3Rlci1pZC1mcm9tLXJl" + + "Z2lzdHJhdGlvbi12YWx1ZXM+IFwKICAtLW5jYS1pZCA8bmNhLWlkPiBcCiAgLS1pZ25vcmUtbWlz" + + "c2luZwpgYGAKClJlcGVhdCBzdGVwcyAxIGFuZCAyIGZvciBldmVyeSBjb21wdXRlIGNsdXN0ZXIu" + + "CgojIyMgU3RlcCAzOiBEZXN0cm95IHRoZSBjb250cm9sLXBsYW5lIHN0YWNrCgpQcmVzZXJ2ZSB0" + + "aGUgYGNlcnQtbWFuYWdlcmAgbmFtZXNwYWNlIGJ5IGRlZmF1bHQuIE5hbWVzcGFjZSBwcmVzZXJ2" + + "YXRpb24gZG9lcwpub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZS4gQmVmb3JlIHJ1bm5pbmcg" + + "ZGVzdHJveSwgaWRlbnRpZnkgd2hldGhlcgpjZXJ0LW1hbmFnZXIgaXMgZXh0ZXJuYWwuIEZvciBh" + + "biBleHRlcm5hbCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlCmBjZXJ0TWFuYWdlci5l" + + "bmFibGVkOiBmYWxzZWAgYW5kIGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBhbiBpbnRlbmRlZApz" + + "dGFjay1tYW5hZ2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUgYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6" + + "IHRydWVgLCB2ZXJpZnkKbWF0Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1ldGFkYXRhIGFuZCBh" + + "Ym9ydCBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQKZXZpZGVuY2UuIE9ubHkgcGxhbiBuYW1lc3Bh" + + "Y2UgcmVtb3ZhbCBhZnRlciB2ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kCmdldHRp" + + "bmcgZXhwbGljaXQgY29uZmlybWF0aW9uOyBvdGhlcndpc2UgZG8gbm90IGRlbGV0ZSBpdC4KCmBg" + + "YGJhc2gKS1VCRUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBcCm1ha2UgLUMgZGVw" + + "bG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwK" + + "ICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpQYXNzIGJv" + + "dGgga3ViZWNvbmZpZyBmb3JtcyBiZWNhdXNlIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlIGNsZWFu" + + "dXAgdXNlcwphbWJpZW50IGBrdWJlY3RsYC4KCiMjIyBTdGVwIDQ6IFZlcmlmeSBjbGVhbgoKYGBg" + + "YmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgbnMgfCBc" + + "CiAgZ3JlcCAtRSAnKG52Y2F8bnZjZi1iYWNrZW5kfGdyb3ZlfGR5bmFtbyknCmt1YmVjdGwgLS1j" + + "b250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBucyB8IFwKICBncmVwIC1FICcoY2Fz" + + "c2FuZHJhfG5hdHN8dmF1bHR8bnZjZnxhcGkta2V5c3xlc3N8c2lzKScKIyBCb3RoIGNvbW1hbmRz" + + "IHNob3VsZCByZXR1cm4gZW1wdHkuCmBgYAoKIyMjIFN0ZXAgNTogUmVpbnN0YWxsIGluIHNwbGl0" + + "IG9yZGVyCgpGb2xsb3cgW0NsZWFuIEluc3RhbGxhdGlvbl0oU0tJTEwubWQjY2xlYW4taW5zdGFs" + + "bGF0aW9uKSwgdGhlbiByZXR1cm4gdG8gdGhlCnNhbWUgaGFuZG9mZiBpbiBbU3BsaXQgQ29tcHV0" + + "ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRp" + + "b24ubWQpLgoKLS0tCgojIyBFeGFtcGxlIDQ6IFJlY292ZXIgZnJvbSBhIEdhdGV3YXkgRW5kcG9p" + + "bnQgQ2hhbmdlCgpUaGUgc2VwYXJhdGVseSBwcm92aXNpb25lZCBHYXRld2F5IG9yIGl0cyBsb2Fk" + + "IGJhbGFuY2VyIHdhcyByZWNyZWF0ZWQgYW5kIGdvdCBhIG5ldyBlbmRwb2ludC4KCiMjIyBTdGVw" + + "IDE6IEdldCB0aGUgbmV3IGVuZHBvaW50CgpgYGBiYXNoCkdBVEVXQVlfQUREUj0kKGt1YmVjdGwg" + + "LS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5IFwKICBudmNmLWdh" + + "dGV3YXkgLW4gZW52b3ktZ2F0ZXdheSBcCiAgLW8ganNvbnBhdGg9J3suc3RhdHVzLmFkZHJlc3Nl" + + "c1swXS52YWx1ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSIgpgYGAKCiMjIyBTdGVwIDI6IFVw" + + "ZGF0ZSBETlMgYW5kIGRpcmVjdCBhZGRyZXNzIGZpZWxkcwoKS2VlcCBgZ2xvYmFsLmRvbWFpbmAs" + + "IHJvdXRlIGhvc3RuYW1lcywgYW5kIENMSSBIb3N0IGZpZWxkcyB1bmNoYW5nZWQuIFBvaW50IHRo" + + "ZQpETlMgcmVjb3JkcyBmb3IgcmVuZGVyZWQgcm91dGUgaG9zdG5hbWVzLCBzdWNoIGFzIGBhcGku" + + "PGRvbWFpbj5gIGFuZApgKi5pbnZvY2F0aW9uLjxkb21haW4+YCwgdG8gYEdBVEVXQVlfQUREUmAu" + + "IEZvciBhIHRlbXBvcmFyeSBlbnZpcm9ubWVudCB3aXRob3V0CkROUywga2VlcCBpdHMgcmVzZXJ2" + + "ZWQgcm91dGUgc3VmZml4IGFuZCBjb25uZWN0IHRvIGBHQVRFV0FZX0FERFJgIHdpdGggdGhlCm1h" + + "dGNoaW5nIGBIb3N0YCBoZWFkZXIuCgpGb3IgYSBzcGxpdCBkZXBsb3ltZW50IGNvbmZpZ3VyZWQg" + + "d2l0aCBkaXJlY3QgR2F0ZXdheSBhZGRyZXNzZXMsIHJlcGxhY2Ugb25seQp0aGUgYWRkcmVzcy1i" + + "ZWFyaW5nIHZhbHVlczogY29udHJvbC1wbGFuZSBgbnZjZk5hdHNTZXJ2aWNlVVJMYCwgY29tcHV0" + + "ZS1wbGFuZQpJQ01TLCBSZVZhbCwgYW5kIE5BVFMgVVJMcywgYW5kIENMSSBVUkwgZmllbGRzLiBL" + + "ZWVwIHRoZWlyIGRvbWFpbiBhbmQgSG9zdApvdmVycmlkZXMgdW5jaGFuZ2VkLiBSZWZyZXNoIHJl" + + "Z2lzdHJhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIHRocm91Z2ggdGhlIHNhbWUKaGFuZG9mZiB1c2Vk" + + "IG9yaWdpbmFsbHkuIFNlZQpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVy" + + "ZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpCmZvciB0aGUgZmllbGRzIGFuZCBj" + + "b21wbGV0ZSBjb21tYW5kcy4KCiMjIyBTdGVwIDM6IFZlcmlmeSBib3RoIGNvbnRleHRzCgpgYGBi" + + "YXNoCmRpZyArc2hvcnQgImFwaS48ZG9tYWluPiIKY3VybCAtSCAiSG9zdDogYXBpLjxkb21haW4+" + + "IiAiaHR0cDovLyRHQVRFV0FZX0FERFIvaGVhbHRoIgprdWJlY3RsIC0tY29udGV4dCA8Y29udHJv" + + "bC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBudmNmLWdhdGV3YXkgXAogIC1uIGVudm95LWdh" + + "dGV3YXkgLW8gd2lkZQprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBn" + + "ZXQgaHR0cHJvdXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0" + + "PiBnZXQgdGNwcm91dGVzIC1BCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + + "eHQ+IHJvbGxvdXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Etb3BlcmF0b3IgLW4gbnZjYS1v" + + "cGVyYXRvciAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNv" + + "bnRleHQ+IHdhaXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4g" + + "LW4gbnZjYS1vcGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3suc3RhdHVzLmFnZW50U3RhdHVz" + + "fSc9aGVhbHRoeSAtLXRpbWVvdXQ9MTBtCmBgYAoKLS0tCgojIyBFeGFtcGxlIDU6IERlcGxveSBP" + + "bmx5IERlcGVuZGVuY2llcwoKVXNlZnVsIGZvciB0ZXN0aW5nIG9yIHdoZW4gaXRlcmF0aW5nIG9u" + + "IHNlcnZpY2UgY29uZmlndXJhdGlvbi4KCmBgYGJhc2gKIyBEZXBsb3kganVzdCBOQVRTLCBDYXNz" + + "YW5kcmEsIE9wZW5CYW8KSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVs" + + "ZWFzZS1ncm91cD1kZXBlbmRlbmNpZXMgc3luYwoKIyBDaGVjayBzdGF0dXMKa3ViZWN0bCBnZXQg" + + "cG9kcyAtbiBuYXRzLXN5c3RlbQprdWJlY3RsIGdldCBwb2RzIC1uIGNhc3NhbmRyYS1zeXN0ZW0K" + + "a3ViZWN0bCBnZXQgcG9kcyAtbiB2YXVsdC1zeXN0ZW0KCiMgRGVwbG95IGp1c3Qgb25lIHNwZWNp" + + "ZmljIHJlbGVhc2UKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1j" + + "YXNzYW5kcmEgc3luYwpgYGAKCiMjIyBTZWxlY3RvciByZWZlcmVuY2UKCnwgU2VsZWN0b3IgfCBS" + + "ZWxlYXNlcyB8CnwtLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgYHJlbGVhc2UtZ3JvdXA9ZGVwZW5k" + + "ZW5jaWVzYCB8IG5hdHMsIGNhc3NhbmRyYSwgb3BlbmJhby1zZXJ2ZXIgfAp8IGByZWxlYXNlLWdy" + + "b3VwPXNlcnZpY2VzYCB8IGFwaS1rZXlzLCBzaXMsIGFwaSwgaW52b2NhdGlvbi1zZXJ2aWNlLCBn" + + "cnBjLXByb3h5LCBlc3MtYXBpLCBub3Rhcnktc2VydmljZSwgcmV2YWwsIG9wdGlvbmFsIGxsbS1y" + + "ZXF1ZXN0LXJvdXRlciBhbmQgbGxtLWFwaS1nYXRld2F5IHdoZW4gYGxsbS5lbmFibGVkPXRydWVg" + + "LCBvcHRpb25hbCB2YW5pdHktZ2F0ZXdheSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRoYXQgaW5j" + + "bHVkZSB0aGUgYWRkb24gYW5kIGhhdmUgYGFkZG9ucy52YW5pdHlHYXRld2F5LmVuYWJsZWQ9dHJ1" + + "ZWAsIG9wdGlvbmFsIG52Y2YtdWkgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUg" + + "dGhlIGFkZG9uIGFuZCBoYXZlIGBhZGRvbnMubnZjZlVpLmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1l" + + "PWxsbS1yZXF1ZXN0LXJvdXRlcmAgfCBEZXBsb3kganVzdCB0aGUgTExNIHJlcXVlc3Qgcm91dGVy" + + "IHdoZW4gYGxsbS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1sbG0tYXBpLWdhdGV3YXlgIHwgRGVw" + + "bG95IGp1c3QgdGhlIExMTSBBUEkgZ2F0ZXdheSB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCB8Cnwg" + + "YG5hbWU9dmFuaXR5LWdhdGV3YXlgIHwgRGVwbG95IGp1c3QgVmFuaXR5IEdhdGV3YXkgb25seSB3" + + "aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoYXQgcmVsZWFzZSBhbmQgYGFkZG9ucy52" + + "YW5pdHlHYXRld2F5LmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1lPW52Y2YtdWlgIHwgRGVwbG95IE5W" + + "Q0YgVUkgb25seSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoYXQgcmVsZWFzZSBh" + + "bmQgYGFkZG9ucy5udmNmVWkuZW5hYmxlZD10cnVlYCB8CnwgYHJlbGVhc2UtZ3JvdXA9aW5ncmVz" + + "c2AgfCBpbmdyZXNzIChnYXRld2F5IHJvdXRlcykgfAp8IGBuYW1lPTxyZWxlYXNlPmAgfCBBbnkg" + + "aW5kaXZpZHVhbCByZWxlYXNlIGJ5IG5hbWUgfAoKTm90ZTogYGFkbWluLWlzc3Vlci1wcm94eWAg" + + "ZG9lcyBub3QgaGF2ZSBhIHJlbGVhc2UtZ3JvdXAgbGFiZWwuIFRhcmdldCBpdCB3aXRoIGAtLXNl" + + "bGVjdG9yIG5hbWU9YWRtaW4taXNzdWVyLXByb3h5YC4KUEsHCAJSTkB/KAAAfygAAFBLAwQUAAgA" + + "AAAAACEAAAAAAAAAAAAAAAAATAAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9u" + + "L3JlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWRVVAUAAQCmzhIjIFNwbGl0" + + "IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uCgpUaGUgY29udHJvbCBwbGFuZSBhbmQgY29tcHV0" + + "ZSBwbGFuZSBhcmUgc2VwYXJhdGUgc3RhY2tzLiBJbnN0YWxsIHRoZSBjb250cm9sCnBsYW5lIGZp" + + "cnN0LCB0aGVuIHJlZ2lzdGVyIGFuZCBpbnN0YWxsIGVhY2ggY29tcHV0ZSBjbHVzdGVyLiBDaG9v" + + "c2Ugb25lIGhhbmRvZmYKYmVsb3cgYW5kIHVzZSBpdCBmb3IgdGhlIGZ1bGwgbGlmZWN5Y2xlLiBE" + + "byBub3QgY29tYmluZSBhIENMSS1nZW5lcmF0ZWQgcHJvZmlsZQp3aXRoIHRoZSBIZWxtZmlsZSB2" + + "YWx1ZXMgZmxvdy4KCiMjIENob29zZSBhIEhhbmRvZmYKCnwgRmxvdyB8IFNvdXJjZSBvZiBjb250" + + "cm9sLXBsYW5lIGVuZHBvaW50cyB8IFJlZ2lzdHJhdGlvbiBhcnRpZmFjdCB8CnwtLS0tLS18LS0t" + + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18" + + "CnwgSGVsbWZpbGUgdmFsdWVzIHwgU2VwYXJhdGUgY29udHJvbC1wbGFuZSBhbmQgY29tcHV0ZS1w" + + "bGFuZSBlbnZpcm9ubWVudCBmaWxlcyB8IGBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFu" + + "ZS9yZWdpc3RyYXRpb24vPGNsdXN0ZXI+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYCB8CnwgQ0xJIHBy" + + "b2ZpbGUgfCBDTEktZ2VuZXJhdGVkIGBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29u" + + "dHJvbC1wbGFuZS1wcm9maWxlLnlhbWxgIHwgQ0xJLWdlbmVyYXRlZCBgZGVwbG95L3N0YWNrcy9u" + + "dmNmLWNvbXB1dGUtcGxhbmUvb3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgfAoK" + + "VGhlIENMSSBwcm9maWxlIGlzIG1hbmRhdG9yeSBmb3IgdGhlIENMSSBmbG93IGFuZCBtdXN0IG5v" + + "dCBiZSBoYW5kLWF1dGhvcmVkLgpUaGUgSGVsbWZpbGUgZmxvdyBkb2VzIG5vdCBjb25zdW1lIGEg" + + "Y29udHJvbC1wbGFuZSBwcm9maWxlLgoKQ29tbWFuZHMgYmVsb3cgdXNlIG1vbm9yZXBvIHBhdGhz" + + "IGZyb20gdGhlIHJlcG9zaXRvcnkgcm9vdC4gT3BlcmF0b3JzIHVzaW5nCmV4dHJhY3RlZCBwYWNr" + + "YWdlcyBuZWVkIG1hdGNoaW5nLXZlcnNpb24gYG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrYCBhbmQK" + + "YG52Y2YtY29tcHV0ZS1wbGFuZS1zdGFja2AgYnVuZGxlcy4gU3Vic3RpdHV0ZSB0aG9zZSBidW5k" + + "bGUgcm9vdHMgZm9yCmBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZGAgYW5kIGBkZXBsb3kvc3Rh" + + "Y2tzL252Y2YtY29tcHV0ZS1wbGFuZWAuCgojIyBIZWxtZmlsZSBWYWx1ZXMgRmxvdwoKQ3JlYXRl" + + "IGJvdGggZW52aXJvbm1lbnQgZmlsZXMgYmVmb3JlIGluc3RhbGxhdGlvbjoKCi0gYGRlcGxveS9z" + + "dGFja3Mvc2VsZi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55YW1sYCBmb3IgY29udHJvbC1w" + + "bGFuZQogIHJlZ2lzdHJ5LCBkb21haW4sIEdhdGV3YXksIHJvdXRlcywgYW5kIHNlcnZpY2Ugc2V0" + + "dGluZ3MuCi0gYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50cy88" + + "ZW52Pi55YW1sYCBmb3IgY29tcHV0ZS1wbGFuZQogIHJlZ2lzdHJ5LCBwdWxsIHNlY3JldHMsIGFu" + + "ZCBjb21wdXRlLXJlYWNoYWJsZSBJQ01TLCBSZVZhbCwgYW5kIE5BVFMgdmFsdWVzLgoKRm9yIEVL" + + "UywgdXNlIHRoZSBjYW5vbmljYWwKW0NTUCBFbmQtdG8tRW5kIEV4YW1wbGVdKGh0dHBzOi8vZG9j" + + "cy5udmlkaWEuY29tL252Y2YvdjAuNi4wLXJjL2NzcC1lbmQtdG8tZW5kLWV4YW1wbGUpLgpUaGUg" + + "Y29udHJvbC1wbGFuZSBlbnZpcm9ubWVudCBrZWVwcyB0aGUgRW52b3kgR2F0ZXdheSBjb250cm9s" + + "bGVyIGluCmBlbnZveS1nYXRld2F5LXN5c3RlbWAsIGF0dGFjaGVzIHJvdXRlcyB0byBgR2F0ZXdh" + + "eS9udmNmLWdhdGV3YXlgIGluCmBlbnZveS1nYXRld2F5YCwgYW5kIGVuYWJsZXMgdGhlIE5BVFMg" + + "cm91dGUuIFRoZSBjb21wdXRlLXBsYW5lIGVudmlyb25tZW50IHVzZXMKdGhlIGV4dGVybmFsIGFk" + + "ZHJlc3MgcGx1cyB0aGUgc2VydmljZSBob3N0IG92ZXJyaWRlcy4gSGVyZSwKYDxnYXRld2F5LWFk" + + "ZHJlc3M+YCBpcyB0aGUgTkxCIGFkZHJlc3MgYW5kIGA8Z2F0ZXdheS1kb21haW4+YCBpcyB0aGUg" + + "RE5TIGJhc2UKd2hvc2Ugc2VydmljZSBzdWJkb21haW5zIHJlc29sdmUgdG8gdGhhdCBOTEI6Cgpg" + + "YGB5YW1sCiMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvZW52aXJvbm1lbnRzLzxlbnY+Lnlh" + + "bWwKZ2xvYmFsOgogIGRvbWFpbjogIjxnYXRld2F5LWRvbWFpbj4iCiAgd29ya2VyRW5kcG9pbnRz" + + "OgogICAgbnZjZlNlcnZpY2VVUkw6ICJodHRwOi8vYXBpLjxnYXRld2F5LWRvbWFpbj4iCiAgICBu" + + "dmNmR3JwY1NlcnZpY2VVUkw6ICJodHRwOi8vd29ya2VyLWFwaS48Z2F0ZXdheS1kb21haW4+Igog" + + "ICAgbnZjZk5hdHNTZXJ2aWNlVVJMOiAibmF0czovLzxnYXRld2F5LWFkZHJlc3M+OjQyMjIiCiAg" + + "ICBudmN0U2VydmljZVVSTDogImh0dHA6Ly90YXNrcy48Z2F0ZXdheS1kb21haW4+IgogICAgbnZj" + + "dEdycGNTZXJ2aWNlVVJMOiAiaHR0cDovL3dvcmtlci10YXNrcy48Z2F0ZXdheS1kb21haW4+Igog" + + "ICAgaW52b2NhdGlvblNlcnZpY2VVUkw6ICJodHRwOi8vaW52b2NhdGlvbi48Z2F0ZXdheS1kb21h" + + "aW4+IgoKZ3JwY3Byb3h5OgogIG52Y2ZHcnBjU2VydmljZVVSTDogImh0dHA6Ly9hcGkubnZjZi5z" + + "dmMuY2x1c3Rlci5sb2NhbDo5MDkwIgoKaW5ncmVzczoKICBnYXRld2F5QXBpOgogICAgY29udHJv" + + "bGxlck5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheS1zeXN0ZW0KICAgIGdhdGV3YXlzOgogICAgICBz" + + "aGFyZWQ6IHtuYW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheX0KICAg" + + "ICAgZ3JwYzoge25hbWU6IG52Y2YtZ2F0ZXdheSwgbmFtZXNwYWNlOiBlbnZveS1nYXRld2F5fQog" + + "ICAgICBuYXRzOgogICAgICAgIG5hbWU6IG52Y2YtZ2F0ZXdheQogICAgICAgIG5hbWVzcGFjZTog" + + "ZW52b3ktZ2F0ZXdheQogICAgICAgIGxpc3RlbmVyTmFtZTogbmF0cwogICAgcm91dGVzOgogICAg" + + "ICBudmNmQXBpOgogICAgICAgIGdycGM6CiAgICAgICAgICBlbmFibGVkOiB0cnVlCiAgICAgICAg" + + "ICBob3N0bmFtZXM6IFsid29ya2VyLWFwaS48Z2F0ZXdheS1kb21haW4+Il0KICAgICAgbnZjdEFw" + + "aToKICAgICAgICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAgICAgaG9zdG5h" + + "bWVzOiBbIndvcmtlci10YXNrcy48Z2F0ZXdheS1kb21haW4+Il0KICAgICAgbmF0czoKICAgICAg" + + "ICBlbmFibGVkOiB0cnVlCgpvcGVuYmFvOgogIG1pZ3JhdGlvbnM6CiAgICBpc3N1ZXJEaXNjb3Zl" + + "cnk6CiAgICAgIGVuYWJsZWQ6IHRydWUKYGBgCgpgYGB5YW1sCiMgZGVwbG95L3N0YWNrcy9udmNm" + + "LWNvbXB1dGUtcGxhbmUvZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwKZ2xvYmFsOgogIG52Y2FPcGVy" + + "YXRvcjoKICAgIHNlbGZNYW5hZ2VkOgogICAgICBpY21zU2VydmljZVVSTDogImh0dHA6Ly88Z2F0" + + "ZXdheS1hZGRyZXNzPiIKICAgICAgaWNtc1NlcnZpY2VIb3N0SGVhZGVyT3ZlcnJpZGU6ICJzaXMu" + + "PGdhdGV3YXktZG9tYWluPiIKICAgICAgcmV2YWxTZXJ2aWNlVVJMOiAiaHR0cDovLzxnYXRld2F5" + + "LWFkZHJlc3M+IgogICAgICByZXZhbFNlcnZpY2VIb3N0SGVhZGVyT3ZlcnJpZGU6ICJyZXZhbC48" + + "Z2F0ZXdheS1kb21haW4+IgogICAgICBuYXRzVVJMOiAibmF0czovLzxnYXRld2F5LWFkZHJlc3M+" + + "OjQyMjIiCiAgICAgIG5hdHNIb3N0T3ZlcnJpZGU6ICJuYXRzLjxnYXRld2F5LWRvbWFpbj4iCmBg" + + "YAoKUHJldmlldyBhbmQgaW5zdGFsbCB0aGUgY29udHJvbCBwbGFuZSBhZ2FpbnN0IGl0cyBjb250" + + "ZXh0OgoKYGBgYmFzaAptYWtlIC1DIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIHRlbXBsYXRl" + + "IFwKICBIRUxNRklMRV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklMRT08Y29udHJvbC1wbGFu" + + "ZS1rdWJlY29uZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBpbnN0YWxs" + + "IFwKICBIRUxNRklMRV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklMRT08Y29udHJvbC1wbGFu" + + "ZS1rdWJlY29uZmlnPgpgYGAKCkJlZm9yZSByZWdpc3RlcmluZyB0aHJvdWdoIGEgYmFyZSBHYXRl" + + "d2F5IGFkZHJlc3MsIGNyZWF0ZSBvciB1cGRhdGUgdGhlIENMSQpjb25maWcgcGFzc2VkIGFzIGBO" + + "VkNGX0NMSV9DT05GSUdgOgoKYGBgeWFtbApiYXNlX2h0dHBfdXJsOiAiaHR0cDovLzxnYXRld2F5" + + "LWFkZHJlc3M+IgppbnZva2VfdXJsOiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+IgpiYXNlX2dy" + + "cGNfdXJsOiAiPGdhdGV3YXktYWRkcmVzcz46MTAwODEiCmFwaV9rZXlzX3NlcnZpY2VfdXJsOiAi" + + "aHR0cDovLzxnYXRld2F5LWFkZHJlc3M+IgppY21zX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRy" + + "ZXNzPiIKYXBpX2hvc3Q6ICJhcGkuPGdhdGV3YXktZG9tYWluPiIKYXBpX2tleXNfaG9zdDogImFw" + + "aS1rZXlzLjxnYXRld2F5LWRvbWFpbj4iCmludm9rZV9ob3N0OiAiaW52b2NhdGlvbi48Z2F0ZXdh" + + "eS1kb21haW4+IgppY21zX2hvc3Q6ICJzaXMuPGdhdGV3YXktZG9tYWluPiIKYGBgCgpIb3N0IGZp" + + "ZWxkcyBjb250YWluIGhvc3RuYW1lcyBvbmx5LCB3aXRob3V0IGEgVVJMIHNjaGVtZS4gYElDTVNf" + + "VVJMYCBtYXBzIG9ubHkKdG8gdGhlIHJlZ2lzdHJhdGlvbiBjb21tYW5kJ3MgYC0taWNtcy11cmxg" + + "OyBgaWNtc19ob3N0YCBpbiB0aGUgY29uZmlnIHN1cHBsaWVzCnRoZSBHYXRld2F5IEhvc3QgaGVh" + + "ZGVyLiBUaGVyZSBpcyBubyBgLS1pY21zLWhvc3RgIE1ha2Ugb3IgQ0xJIGZsYWcuCgpSZWdpc3Rl" + + "ciBmcm9tIHRoZSBjb21wdXRlIGNvbnRleHQsIHRoZW4gaW5zdGFsbCB0aGUgY29tcHV0ZSBwbGFu" + + "ZToKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSByZWdp" + + "c3Rlci1jbHVzdGVyIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIE5DQV9JRD08" + + "bmNhLWlkPiBcCiAgQ0xVU1RFUl9SRUdJT049PHJlZ2lvbj4gXAogIElDTVNfVVJMPWh0dHA6Ly88" + + "Z2F0ZXdheS1hZGRyZXNzPiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVj" + + "b25maWc+IFwKICBOVkNGX0NMST08cGF0aC10by1udmNmLWNsaT4gXAogIE5WQ0ZfQ0xJX0NPTkZJ" + + "Rz08cGF0aC10by1udmNmLWNsaS1jb25maWc+CgptYWtlIC1DIGRlcGxveS9zdGFja3MvbnZjZi1j" + + "b21wdXRlLXBsYW5lIGluc3RhbGwgXAogIENMVVNURVJfTkFNRT08Y2x1c3Rlci1uYW1lPiBcCiAg" + + "SEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbXB1dGUtcGxhbmUta3Vi" + + "ZWNvbmZpZz4KYGBgCgpSZWdpc3RyYXRpb24gZGlzY292ZXJzIHRoZSBPSURDIGlzc3VlciBhbmQg" + + "SldLUyBmcm9tIHRoZSBjb21wdXRlIGt1YmUgY29udGV4dC4KSW4gYSBtdWx0aS1jbHVzdGVyIGRl" + + "cGxveW1lbnQsIGBLVUJFQ09ORklHX0ZJTEVgIGlzIHJlcXVpcmVkIG9uIGJvdGgKY29tcHV0ZS1w" + + "bGFuZSBjb21tYW5kcy4gSW4gYSBzYW1lLWNsdXN0ZXIgZGVwbG95bWVudCBpdCBtYXkgYmUgb21p" + + "dHRlZCBvbmx5CndoZW4gdGhlIGFtYmllbnQgY29udGV4dCBpcyBhbHJlYWR5IHRoZSB0YXJnZXQg" + + "Y2x1c3Rlci4KCiMjIENMSSBQcm9maWxlIEZsb3cKClJ1biB0aGUgQ0xJIGNvbnRyb2wtcGxhbmUg" + + "aW5zdGFsbCBmaXJzdC4gSXQgY3JlYXRlcyB0aGUgcHJvZmlsZSBjb25zdW1lZCBieQpjb21wdXRl" + + "LXBsYW5lIHJlZ2lzdHJhdGlvbjoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4g" + + "c2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYt" + + "bWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21w" + + "dXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5l" + + "LWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250" + + "ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSBc" + + "CiAgLS1jbHVzdGVyLW5hbWUgPGNvbnRyb2wtcGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1yZWdp" + + "b24gPHJlZ2lvbj4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+Cgp0ZXN0IC1zIGRlcGxveS9zdGFja3Mv" + + "c2VsZi1tYW5hZ2VkL291dC9jb250cm9sLXBsYW5lLXByb2ZpbGUueWFtbApgYGAKClVzZSB0aGUg" + + "ZnVsbCBwZXJzaXN0ZW50IHByZWZpeCBmb3IgYm90aCBjb21wdXRlLXBsYW5lIGNvbW1hbmRzOgoK" + + "YGBgYmFzaApudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250" + + "cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUt" + + "cGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxl" + + "bnY+IFwKICAtLXBsYWluIFwKICBjb21wdXRlLXBsYW5lIHJlZ2lzdGVyIFwKICAtLWNvbnRyb2wt" + + "cGxhbmUtcHJvZmlsZSBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1wbGFu" + + "ZS1wcm9maWxlLnlhbWwgXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0ZXIt" + + "bmFtZT4gXAogIC0ta3ViZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLXJl" + + "Z2lvbiA8cmVnaW9uPiBcCiAgLS1vdXRwdXQgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxh" + + "bmUvb3V0Lzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWwK" + + "Cm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxh" + + "bmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1z" + + "dGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAog" + + "IC0tcGxhaW4gXAogIGNvbXB1dGUtcGxhbmUgaW5zdGFsbCBcCiAgLS12YWx1ZXMgZGVwbG95L3N0" + + "YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvb3V0Lzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4t" + + "cmVnaXN0ZXItdmFsdWVzLnlhbWwgXAogIC0ta3ViZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNv" + + "bnRleHQ+IFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+CmBg" + + "YAoKUmVnaXN0cmF0aW9uIHNlbGVjdHMgdGhlIHByb2ZpbGUncyBpbi1jbHVzdGVyIG9yIGNvbXB1" + + "dGUtcmVhY2hhYmxlIGVuZHBvaW50cwpmcm9tIHRoZSBjb21wdXRlIGNvbnRleHQgYW5kIHByb2Jl" + + "cyBpdHMgSldLUy4gRG8gbm90IHJlcGxhY2UgcHJvZmlsZSBlbmRwb2ludHMKd2l0aCBoYW5kLWF1" + + "dGhvcmVkIEhlbG1maWxlIGVuZHBvaW50IHZhbHVlcy4KCiMjIFB1bGwgU2VjcmV0cwoKQ3JlYXRl" + + "IHRoZSBjb250cm9sLXBsYW5lIHNlY3JldCBpbiB0aGVzZSBuYW1lc3BhY2VzIG9uIHRoZSBjb250" + + "cm9sLXBsYW5lCmNvbnRleHQ6CgpgYGB0ZXh0CmNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0g" + + "bnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXIKYGBgCgpPbiB0" + + "aGUgY29tcHV0ZSBjb250ZXh0LCBjcmVhdGUgdGhlIHNlY3JldCBvbmx5IGluIGBudmNhLW9wZXJh" + + "dG9yYCBhbmQgcmVmZXJlbmNlCml0IHRocm91Z2ggYGdsb2JhbC5pbWFnZVB1bGxTZWNyZXRzYCBp" + + "biB0aGUgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudC4gVGhlIGNoYXJ0CmFuZCBvcGVyYXRvciB1" + + "c2UgaXQgaW4gYG52Y2Etb3BlcmF0b3JgIGFuZCBtaXJyb3IgaXQgdG8gYG52Y2Etc3lzdGVtYC4g" + + "RG8gbm90IGFkZAplaXRoZXIgbmFtZXNwYWNlIHRvIHRoZSBjb250cm9sLXBsYW5lIGxpc3QuIEZv" + + "ciBjb21tYW5kcyBhbmQgcG9saWN5IGV4YW1wbGVzLApzZWUgW3B1bGwtc2VjcmV0cy5tZF0ocHVs" + + "bC1zZWNyZXRzLm1kKS4KCiMjIFZlcmlmaWNhdGlvbgoKVXNlIHRoZSBleHBsaWNpdCBHYXRld2F5" + + "IG5hbWUgYW5kIG5hbWVzcGFjZToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wt" + + "cGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAtbiBlbnZveS1nYXRl" + + "d2F5IC1vIHdpZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0" + + "IHRjcHJvdXRlIC1uIGVudm95LWdhdGV3YXkKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxh" + + "bmUtY29udGV4dD4gcm9sbG91dCBzdGF0dXMgXAogIGRlcGxveW1lbnQvbnZjYS1vcGVyYXRvciAt" + + "biBudmNhLW9wZXJhdG9yIC0tdGltZW91dD0xMG0Ka3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUt" + + "cGxhbmUtY29udGV4dD4gd2FpdCBcCiAgbnZjZmJhY2tlbmQvPGNvbXB1dGUtcGxhbmUtY2x1c3Rl" + + "ci1uYW1lPiAtbiBudmNhLW9wZXJhdG9yIFwKICAtLWZvcj1qc29ucGF0aD0ney5zdGF0dXMuYWdl" + + "bnRTdGF0dXN9Jz1oZWFsdGh5IC0tdGltZW91dD0xMG0Ka3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1" + + "dGUtcGxhbmUtY29udGV4dD4gZ2V0IHNlY3JldCA8cHVsbC1zZWNyZXQ+IC1uIG52Y2Etc3lzdGVt" + + "CmBgYAoKIyMgVGVhcmRvd24KCkRlc3Ryb3kgYW5kIGRlcmVnaXN0ZXIgZXZlcnkgY29tcHV0ZSBw" + + "bGFuZSBiZWZvcmUgdGhlIGNvbnRyb2wgcGxhbmUuIEJvdGgKaGFuZG9mZnMgY2FuIGRlc3Ryb3kg" + + "dGhlIGNvbnRyb2wgcGxhbmUsIHNvIGFwcGx5IHRoaXMgcHJlZmxpZ2h0IGJlZm9yZSBlaXRoZXIK" + + "b25lLiBQcmVzZXJ2ZSB0aGUgYGNlcnQtbWFuYWdlcmAgbmFtZXNwYWNlIGJ5IGRlZmF1bHQuIE5h" + + "bWVzcGFjZSBwcmVzZXJ2YXRpb24KZG9lcyBub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZS4g" + + "SWRlbnRpZnkgd2hldGhlciBjZXJ0LW1hbmFnZXIgaXMgZXh0ZXJuYWwuCkZvciBhbiBleHRlcm5h" + + "bCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVkOiBm" + + "YWxzZWAKYW5kIGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBhbiBpbnRlbmRlZCBzdGFjay1tYW5h" + + "Z2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUKYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IHRydWVgLCB2" + + "ZXJpZnkgbWF0Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1ldGFkYXRhIGFuZAphYm9ydCBvbiBt" + + "aXNzaW5nIG9yIG1pc21hdGNoZWQgZXZpZGVuY2UuIE9ubHkgcGxhbiBuYW1lc3BhY2UgcmVtb3Zh" + + "bCBhZnRlcgp2ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGdldHRpbmcgZXhwbGlj" + + "aXQgY29uZmlybWF0aW9uOyBvdGhlcndpc2UKZG8gbm90IGRlbGV0ZSBpdC4KCkZvciB0aGUgSGVs" + + "bWZpbGUgdmFsdWVzIGZsb3csIHJldGFpbiBlYWNoIHJlZ2lzdHJhdGlvbiB2YWx1ZXMgZmlsZSB1" + + "bnRpbApjbGVhbnVwIGlzIHZlcmlmaWVkOgoKYGBgYmFzaAptYWtlIC1DIGRlcGxveS9zdGFja3Mv" + + "bnZjZi1jb21wdXRlLXBsYW5lIGRlc3Ryb3kgXAogIENMVVNURVJfTkFNRT08Y2x1c3Rlci1uYW1l" + + "PiBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbXB1dGUtcGxh" + + "bmUta3ViZWNvbmZpZz4KCjxudmNmLWNsaT4gLS1jb25maWcgPGNvbmZpZz4gY2x1c3RlciBkZWxl" + + "dGUgXAogIC0tY2x1c3Rlci1pZCA8Y2x1c3Rlci1pZC1mcm9tLXJlZ2lzdHJhdGlvbi12YWx1ZXM+" + + "IFwKICAtLW5jYS1pZCA8bmNhLWlkPiBcCiAgLS1pZ25vcmUtbWlzc2luZwpgYGAKClJlYWQgYGNs" + + "dXN0ZXJJRGAgYW5kIGBuY2FJRGAgZnJvbQpgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxh" + + "bmUvcmVnaXN0cmF0aW9uLzxjbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYC4KU2hv" + + "dyB0aGUgZXhhY3QgY2x1c3RlciBJRCBhbmQgZ2V0IGNvbmZpcm1hdGlvbiBiZWZvcmUgYGNsdXN0" + + "ZXIgZGVsZXRlYC4gUmVwZWF0CmNvbXB1dGUgZGVzdHJveSBhbmQgZGVyZWdpc3RyYXRpb24gZm9y" + + "IGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciwgdGhlbiBkZXN0cm95IHRoZQpjb250cm9sIHBsYW5lLgoK" + + "YGBgYmFzaApLVUJFQ09ORklHPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+IFwKbWFrZSAtQyBk" + + "ZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBkZXN0cm95IFwKICBIRUxNRklMRV9FTlY9PGVudj4g" + + "XAogIEtVQkVDT05GSUdfRklMRT08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPgpgYGAKCkJvdGgg" + + "YEtVQkVDT05GSUdgIGFuZCBgS1VCRUNPTkZJR19GSUxFYCBhcmUgcmVxdWlyZWQgb24gdGhlIGNv" + + "bnRyb2wtcGxhbmUKZGVzdHJveSBiZWNhdXNlIGl0cyBuYW1lc3BhY2UgY2xlYW51cCB1c2VzIGFt" + + "YmllbnQgYGt1YmVjdGxgLgoKRm9yIHRoZSBDTEkgcHJvZmlsZSBmbG93LCBrZWVwCmBkZXBsb3kv" + + "c3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9vdXQvPGNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFs" + + "dWVzLnlhbWxgCnVudGlsIHRlYXJkb3duIGNvbXBsZXRlcyBiZWNhdXNlIGBkb3duYCByZWFkcyBp" + + "dHMgY2x1c3RlciBJRC4gRmlyc3QgcXVlcnkgdGhlCmxpdmUgcmVnaXN0cmF0aW9uIHNldCB3aXRo" + + "IHRoZSBzYW1lIGNvbXBsZXRlIHBlcnNpc3RlbnQgcHJlZml4OgoKYGBgYmFzaApudmNmLWNsaSAt" + + "LWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNrIGRl" + + "cGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95" + + "L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWluIFwK" + + "ICAtLWNvbnRyb2wtcGxhbmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBcCiAgLS1j" + + "b21wdXRlLXBsYW5lLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gXAogIC0taWNtcy11" + + "cmwgPGNvbXB1dGUtcmVhY2hhYmxlLWljbXMtdXJsPiBcCiAgc3RhdHVzIFwKICAtLWNsdXN0ZXIt" + + "bmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgpg" + + "YGAKClNob3cgdGhlIHJlZ2lzdGVyZWQgY29tcHV0ZS1wbGFuZSBsaXN0LiBOYW1lZC1jbHVzdGVy" + + "IGBkb3duIC0tcGxhbi1vbmx5YCBkb2VzCm5vdCBxdWVyeSBJQ01TLCBzbyBpdCBwcmV2aWV3cyBv" + + "bmx5IHRoYXQgY29tcHV0ZSBwbGFuZSBhbmQgY2Fubm90IHNob3cgdGhlCmNvbmRpdGlvbmFsIGNv" + + "bnRyb2wtcGxhbmUgcmVtb3ZhbC4gSWYgdGhlIHRhcmdldCBpcyB0aGUgbGFzdCByZWdpc3RlcmVk" + + "CmNsdXN0ZXIsIHJlYWwgYGRvd25gIGFsc28gZGVzdHJveXMgdGhlIGNvbnRyb2wgcGxhbmUuIEdl" + + "dCBleHBsaWNpdCBjb25maXJtYXRpb24KZm9yIGJvdGggcmVtb3ZhbHMgYmVmb3JlIGNvbnRpbnVp" + + "bmcuIFRoZW4gcHJldmlldyBhbmQgZXhlY3V0ZSB3aXRoIHRoZSBzYW1lCnByZWZpeDoKCmBgYGJh" + + "c2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1w" + + "bGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5l" + + "LXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBc" + + "CiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + + "dGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+" + + "IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAogIGRvd24gLS1w" + + "bGFuLW9ubHkgXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4g" + + "XAogIC0tbmNhLWlkIDxuY2EtaWQ+CgpudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhv" + + "c3RlZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2Vk" + + "IFwKICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxh" + + "bmUgXAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWluIFwKICAtLWNvbnRyb2wtcGxhbmUtY29udGV4" + + "dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBcCiAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQgPGNv" + + "bXB1dGUtcGxhbmUtY29udGV4dD4gXAogIC0taWNtcy11cmwgPGNvbXB1dGUtcmVhY2hhYmxlLWlj" + + "bXMtdXJsPiBcCiAgZG93biBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rl" + + "ci1uYW1lPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4KYGBgCgpSZXBlYXQgYGRvd25gIGZvciBlYWNo" + + "IGNvbXB1dGUgY2x1c3Rlci4gRWFjaCBydW4gZGVzdHJveXMgdGhhdCBjb21wdXRlIHBsYW5lIGFu" + + "ZAp1bnJlZ2lzdGVycyBpdHMgSUNNUyByb3cuIEl0IHJlbW92ZXMgdGhlIGNvbnRyb2wgcGxhbmUg" + + "b25seSBhZnRlciBubyBjbHVzdGVyCnJlZ2lzdHJhdGlvbnMgcmVtYWluLgpQSwcIlmO8WRIwAAAS" + + "MAAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA7AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1p" + + "bnN0YWxsYXRpb24vcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhIjIERlYnVnZ2luZyBS" + + "ZWZlcmVuY2UKClJlY2lwZXMgZm9yIGRpYWdub3NpbmcgYW5kIGZpeGluZyBjb21tb24gTlZDRiBz" + + "ZWxmLW1hbmFnZWQgc3RhY2sgZmFpbHVyZXMuCgojIyBRdWljayBTdGF0dXMgQ29tbWFuZHMKCmBg" + + "YGJhc2gKIyBBbGwgcG9kcyBhY3Jvc3MgYWxsIG5hbWVzcGFjZXMKa3ViZWN0bCBnZXQgcG9kcyAt" + + "QSAtbyB3aWRlCgojIFBvZHMgaW4gYSBzcGVjaWZpYyBuYW1lc3BhY2UKa3ViZWN0bCBnZXQgcG9k" + + "cyAtbiA8bmFtZXNwYWNlPgoKIyBBbGwgaGVsbSByZWxlYXNlcwpoZWxtIGxpc3QgLUEKCiMgUmVj" + + "ZW50IGV2ZW50cyAobW9zdCB1c2VmdWwgZm9yIGRpYWdub3NpbmcgZmFpbHVyZXMpCmt1YmVjdGwg" + + "Z2V0IGV2ZW50cyAtbiA8bmFtZXNwYWNlPiAtLXNvcnQtYnk9Jy5sYXN0VGltZXN0YW1wJwoKIyBE" + + "ZXNjcmliZSBhIHNwZWNpZmljIHBvZCAoc2hvd3MgZXZlbnRzLCBjb25kaXRpb25zLCB2b2x1bWVz" + + "KQprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+CmBgYAoKIyMg" + + "RmFpbHVyZTogSW1hZ2VQdWxsQmFja09mZgoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAg" + + "ICAgICAgIFJFQURZICAgU1RBVFVTICAgICAgICAgICAgIFJFU1RBUlRTICAgQUdFCmNhc3NhbmRy" + + "YS0wICAgIDAvMSAgICAgSW1hZ2VQdWxsQmFja09mZiAgIDAgICAgICAgICAgNW0KYGBgCgpFdmVu" + + "dHMgc2hvdzoKCmBgYHRleHQKRmFpbGVkIHRvIHB1bGwgaW1hZ2UgIm52Y3IuaW8vLi4uL2ltYWdl" + + "OnRhZyI6IDQwMSBVbmF1dGhvcml6ZWQKYGBgCgojIyMgRGlhZ25vc2lzCgpgYGBiYXNoCiMgQ2hl" + + "Y2sgd2hhdCBpbWFnZSBpcyBmYWlsaW5nCmt1YmVjdGwgZGVzY3JpYmUgcG9kIC1uIDxuYW1lc3Bh" + + "Y2U+IDxwb2QtbmFtZT4gfCBncmVwIC1BNSAiRXZlbnRzOiIKCiMgQ2hlY2sgaWYgcHVsbCBzZWNy" + + "ZXQgZXhpc3RzIGluIHRoZSBuYW1lc3BhY2UKa3ViZWN0bCBnZXQgc2VjcmV0IG52Y3ItY3JlZHMg" + + "LW4gPG5hbWVzcGFjZT4KCiMgQ2hlY2sgaWYgdGhlIHBvZCBzcGVjIGhhcyBpbWFnZVB1bGxTZWNy" + + "ZXRzCmt1YmVjdGwgZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IC1vIGpzb25wYXRo" + + "PSd7LnNwZWMuaW1hZ2VQdWxsU2VjcmV0c30nCgojIENoZWNrIGlmIHRoZSBTZXJ2aWNlQWNjb3Vu" + + "dCBoYXMgaW1hZ2VQdWxsU2VjcmV0cwprdWJlY3RsIGdldCBzYSA8c2EtbmFtZT4gLW4gPG5hbWVz" + + "cGFjZT4gLW8ganNvbnBhdGg9J3suaW1hZ2VQdWxsU2VjcmV0c30nCmBgYAoKIyMjIEZpeGVzCgox" + + "LiAqKlNlY3JldCBtaXNzaW5nIGluIG5hbWVzcGFjZSoqOiBDcmVhdGUgaXQKCiAgIGBgYGJhc2gK" + + "ICAga3ViZWN0bCBjcmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAg" + + "ICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0" + + "aHRva2VuJyBcCiAgICAgLS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgIC0t" + + "bmFtZXNwYWNlPTxuYW1lc3BhY2U+IFwKICAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBr" + + "dWJlY3RsIGFwcGx5IC1mIC0KICAgYGBgCgoyLiAqKlNlY3JldCBleGlzdHMgYnV0IHBvZCBkb2Vz" + + "bid0IHJlZmVyZW5jZSBpdCoqOiBUaGUgY2hhcnQgbmVlZHMgYGltYWdlUHVsbFNlY3JldHNgIGNv" + + "bmZpZ3VyZWQgdmlhIGhlbG1maWxlIHZhbHVlcy4gU2VlIFtwdWxsLXNlY3JldHMubWRdKHB1bGwt" + + "c2VjcmV0cy5tZCkuCgozLiAqKkNoYXJ0IGRvZXNuJ3Qgc3VwcG9ydCBpbWFnZVB1bGxTZWNyZXRz" + + "KiogKG9wZW5iYW8sIGludm9jYXRpb24tc2VydmljZSwgZXNzLWFwaSwgbm90YXJ5LXNlcnZpY2Up" + + "OiBQYXRjaCBTZXJ2aWNlQWNjb3VudHMgYW5kIHJlc3RhcnQgcG9kcy4gU2VlIFtwdWxsLXNlY3Jl" + + "dHMubWRdKHB1bGwtc2VjcmV0cy5tZCkuCgo0LiAqKldyb25nIGNyZWRlbnRpYWxzIGluIHNlY3Jl" + + "dCoqOiBEZWxldGUgYW5kIHJlY3JlYXRlCgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZGVsZXRlIHNl" + + "Y3JldCBudmNyLWNyZWRzIC1uIDxuYW1lc3BhY2U+CiAgICMgUmVjcmVhdGUgd2l0aCBjb3JyZWN0" + + "IGNyZWRlbnRpYWxzCiAgIGBgYAoKIyMgRmFpbHVyZTogSW5pdDowLzEgU3R1Y2sgKFZhdWx0IEFn" + + "ZW50KQoKIyMjIFN5bXB0b21zCgpTZXJ2aWNlIHBvZHMgc3R1Y2sgaW4gYEluaXQ6MC8xYCBmb3Ig" + + "bWludXRlczoKCmBgYGJhc2gKTkFNRSAgICAgICAgICAgICAgICAgICAgICAgIFJFQURZICAgU1RB" + + "VFVTICAgICBSRVNUQVJUUyAgIEFHRQpudmNmLWFwaS03ZjRjNzZmNzg4LTQ0dmx0ICAwLzIgICAg" + + "IEluaXQ6MC8xICAgMCAgICAgICAgICAxMG0KYGBgCgojIyMgRGlhZ25vc2lzCgpUaGUgaW5pdCBj" + + "b250YWluZXIgaXMgdGhlIHZhdWx0LWFnZW50LWluaXQgaW5qZWN0b3Igd2FpdGluZyBmb3IgT3Bl" + + "bkJhby4KCmBgYGJhc2gKIyBDaGVjayBPcGVuQmFvIHBvZHMKa3ViZWN0bCBnZXQgcG9kcyAtbiB2" + + "YXVsdC1zeXN0ZW0KCiMgQ2hlY2sgaWYgT3BlbkJhbyBtaWdyYXRpb24gam9iIHJhbgprdWJlY3Rs" + + "IGdldCBqb2JzIC1uIHZhdWx0LXN5c3RlbQoKIyBDaGVjayBPcGVuQmFvIHBvZCBsb2dzCmt1YmVj" + + "dGwgbG9ncyAtbiB2YXVsdC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXItMCAtYyBvcGVuYmFvCgojIENo" + + "ZWNrIGluaXQgY29udGFpbmVyIGxvZ3Mgb24gdGhlIHN0dWNrIHBvZAprdWJlY3RsIGxvZ3MgLW4g" + + "PG5hbWVzcGFjZT4gPHBvZC1uYW1lPiAtYyB2YXVsdC1hZ2VudC1pbml0CmBgYAoKIyMjIEZpeGVz" + + "CgoxLiAqKk9wZW5CYW8gcG9kcyBub3QgcnVubmluZyoqOiBDaGVjayB0aGVpciBldmVudHMgZm9y" + + "IGltYWdlIHB1bGwgaXNzdWVzLCByZXNvdXJjZSBpc3N1ZXMsIGV0Yy4KCjIuICoqT3BlbkJhbyBt" + + "aWdyYXRpb24gam9iIGRpZG4ndCBydW4qKjogVGhpcyBoYXBwZW5zIHdoZW4gYGhlbG1maWxlIHN5" + + "bmNgIHdhcyBpbnRlcnJ1cHRlZC4gRGVzdHJveSBhbmQgcmUtc3luYyBvcGVuYmFvOgoKICAgYGBg" + + "YmFzaAogICBIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW9wZW5i" + + "YW8tc2VydmVyIGRlc3Ryb3kKICAga3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIHZhdWx0LXN5c3Rl" + + "bQogICBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgdmF1bHQtc3lzdGVtCiAgICMgUmUtY3JlYXRl" + + "IHB1bGwgc2VjcmV0IGlmIG5lZWRlZAogICBIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1z" + + "ZWxlY3RvciBuYW1lPW9wZW5iYW8tc2VydmVyIHN5bmMKICAgYGBgCgozLiAqKk9wZW5CYW8gcG9k" + + "cyBydW5uaW5nIGJ1dCBub3QgaW5pdGlhbGl6ZWQqKjogQ2hlY2sgdW5zZWFsIHN0YXR1czoKCiAg" + + "IGBgYGJhc2gKICAga3ViZWN0bCBleGVjIC1uIHZhdWx0LXN5c3RlbSBvcGVuYmFvLXNlcnZlci0w" + + "IC1jIG9wZW5iYW8gLS0gYmFvIHN0YXR1cwogICBgYGAKCjQuICoqYHZhdWx0LWFnZW50LWluaXRg" + + "IGxvZ3MgYGF1dGgvand0L2xvZ2luYCAtPiBgNDAwIC4uLiBubyBrbm93biBrZXkgc3VjY2Vzc2Z1" + + "bGx5IHZhbGlkYXRlZCB0aGUgdG9rZW4gc2lnbmF0dXJlYCoqCiAgIChjb21tb24gb24gQUtTLCBh" + + "bmQgb24gYW55IGNsdXN0ZXIgd2hvc2UgT0lEQyBpc3N1ZXIgcHVibGlzaGVzIGEgcm90YXRpbmcg" + + "bXVsdGkta2V5IEpXS1MpOgogICB0aGUgT3BlbkJhbyBgYXV0aC9qd3RgIG1ldGhvZCB3YXMgY29u" + + "ZmlndXJlZCB3aXRoIGEgc2luZ2xlIHN0YXRpYyBtb3VudGVkIHB1YmxpYyBrZXkKICAgKGBqd3Rf" + + "dmFsaWRhdGlvbl9wdWJrZXlzYCkgaW5zdGVhZCBvZiB0aGUgaXNzdWVyJ3MgbGl2ZSBKV0tTLCBz" + + "byBpdCBjYW5ub3QgdmFsaWRhdGUgdGhlCiAgIGNsdXN0ZXItc2lnbmVkIFNlcnZpY2VBY2NvdW50" + + "IHRva2VucyB0aGUgdmF1bHQtYWdlbnRzIHByZXNlbnQuIEV2ZXJ5IHNlcnZpY2UncwogICBgdmF1" + + "bHQtYWdlbnQtaW5pdGAgdGhlbiBsb29wcyBvbiB0aGF0IDQwMCBhbmQgdGhlIHBvZCBuZXZlciBs" + + "ZWF2ZXMgYEluaXQ6MC8xYC4gVGhpcyBpcyB0aGUKICAgYmVoYXZpb3Igb2YgdGhlIGJhc2UgZGVm" + + "YXVsdCBgb3BlbmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkOiBmYWxzZWA7" + + "IHRoZQogICBtaWdyYXRpb24gbG9nIHNob3dzIGBPSURDIGlzc3VlciBkaXNjb3ZlcnkgaXMgZGlz" + + "YWJsZWQuIFVzaW5nIFNlcnZpY2VBY2NvdW50IGlzc3VlciBhbmQKICAgbW91bnRlZCBwdWJsaWMg" + + "a2V5IGZhbGxiYWNrYC4gRW5hYmxlIGlzc3VlciBkaXNjb3Zlcnkgc28gdGhlIG1pZ3JhdGlvbiB1" + + "c2VzIHRoZSBsaXZlIEpXS1MsCiAgIHRoZW4gcmUtcnVuIGl0OgoKICAgYGBgYmFzaAogICAjIElu" + + "IHlvdXIgZW52IHZhbHVlcyAoZS5nLiBlbnZpcm9ubWVudHMvPGVudj4ueWFtbCksIHNldDoKICAg" + + "IyAgIG9wZW5iYW86CiAgICMgICAgIG1pZ3JhdGlvbnM6CiAgICMgICAgICAgaXNzdWVyRGlzY292" + + "ZXJ5OgogICAjICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICBrdWJlY3RsIGRlbGV0ZSBqb2IgLW4g" + + "dmF1bHQtc3lzdGVtIG9wZW5iYW8tc2VydmVyLW1pZ3JhdGlvbnMKICAgSEVMTUZJTEVfRU5WPTxl" + + "bnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBzeW5jCiAgIGBgYAoK" + + "ICAgVGhlIG1pZ3JhdGlvbiBsb2cgc2hvdWxkIHRoZW4gc2hvdyBgUmVjZWl2ZWQgZGlzY292ZXJ5" + + "IGRvY3VtZW50IGZyb20KICAgLi4uLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uYCBh" + + "bmQgYEZpbmFsIE9wZW5CYW8gSldUIEpXS1MgVVJMIHNldCB0bzoKICAgLi4uL29wZW5pZC92MS9q" + + "d2tzYCwgYW5kIHRoZSBzZXJ2aWNlIHBvZHMgYXV0aGVudGljYXRlIGFuZCByZWFjaCBSZWFkeSB3" + + "aXRoaW4gfjEgbWluLgogICBBS1MgY2x1c3RlcnMgd2l0aCB0aGUgY2x1c3RlciBPSURDIGlzc3Vl" + + "ciBlbmFibGVkICh0aGUgYGFrcy1jbHVzdGVyYCBkZWZhdWx0KSBhbHdheXMgbmVlZAogICB0aGlz" + + "IGJlY2F1c2UgdGhlIHN0YXRpYy1wdWJrZXkgZmFsbGJhY2sgY2Fubm90IG1hdGNoIHRoZSBpc3N1" + + "ZXIncyByb3RhdGluZyBzaWduaW5nIGtleXMuCgojIyBGYWlsdXJlOiBPT01LaWxsZWQgb24gQ2Fz" + + "c2FuZHJhCgojIyMgU3ltcHRvbXMKCmBgYHRleHQKTkFNRSAgICAgICAgICBSRUFEWSAgIFNUQVRV" + + "UyAgICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5kcmEtMCAgIDAvMSAgICAgT09NS2lsbGVkICAzICAg" + + "ICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAprdWJlY3RsIGRlc2NyaWJlIHBv" + + "ZCAtbiBjYXNzYW5kcmEtc3lzdGVtIGNhc3NhbmRyYS0wIHwgZ3JlcCAtQTMgIkxhc3QgU3RhdGUi" + + "CmBgYAoKIyMjIEZpeAoKT3ZlcnJpZGUgQ2Fzc2FuZHJhIHJlc291cmNlcyB2aWEgaGVsbWZpbGUg" + + "dmFsdWVzLiBTZWUgRXhhbXBsZSAxIGluCltleGFtcGxlcy5tZF0oLi4vZXhhbXBsZXMubWQpLgoK" + + "YGBgeWFtbAotIGNhc3NhbmRyYToKICAgIHJlc291cmNlczoKICAgICAgbGltaXRzOgogICAgICAg" + + "IGNwdTogIjgiCiAgICAgICAgbWVtb3J5OiA4MTkyTWkKICAgICAgcmVxdWVzdHM6CiAgICAgICAg" + + "Y3B1OiAiMiIKICAgICAgICBtZW1vcnk6IDQwOTZNaQpgYGAKCk5vdGU6IGByZXNvdXJjZVByZXNl" + + "dGAgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgTlZDRiBjYXNzYW5kcmEgd3JhcHBlciBjaGFydC4g" + + "VXNlIGV4cGxpY2l0IGByZXNvdXJjZXNgLgoKIyMgRmFpbHVyZTogUG9kcyBTdHVjayBpbiBQZW5k" + + "aW5nCgojIyMgU3ltcHRvbXMKCmBgYHRleHQKTkFNRSAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAg" + + "ICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5kcmEtMCAgIDAvMSAgICAgUGVuZGluZyAgIDAgICAgICAg" + + "ICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIGV2ZW50cyBmb3Igc2No" + + "ZWR1bGluZyBmYWlsdXJlcwprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9k" + + "LW5hbWU+CgojIENvbW1vbiBjYXVzZXM6CiMgLSAiMC8xMiBub2RlcyBhcmUgYXZhaWxhYmxlOiAx" + + "MiBub2RlKHMpIGRpZG4ndCBtYXRjaCBQb2QncyBub2RlIGFmZmluaXR5IgojIC0gIjAvMTIgbm9k" + + "ZXMgYXJlIGF2YWlsYWJsZTogMTIgSW5zdWZmaWNpZW50IG1lbW9yeSIKIyAtICJwZXJzaXN0ZW50" + + "dm9sdW1lY2xhaW0gbm90IGZvdW5kIgpgYGAKCiMjIyBGaXhlcwoKMS4gKipOb2RlIHNlbGVjdG9y" + + "IG1pc21hdGNoKio6IENoZWNrIGBub2RlU2VsZWN0b3JzYCBpbiBlbnZpcm9ubWVudCBmaWxlCgog" + + "ICBgYGBiYXNoCiAgIGt1YmVjdGwgZ2V0IG5vZGVzIC0tc2hvdy1sYWJlbHMgfCBncmVwIG52Y2YK" + + "ICAgYGBgCgoyLiAqKlN0b3JhZ2UgY2xhc3Mgbm90IGZvdW5kKio6IENoZWNrIHN0b3JhZ2UgY2xh" + + "c3MgZXhpc3RzCgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZ2V0IHN0b3JhZ2VjbGFzcwogICBgYGAK" + + "CjMuICoqSW5zdWZmaWNpZW50IHJlc291cmNlcyoqOiBDaGVjayBub2RlIGNhcGFjaXR5CgogICBg" + + "YGBiYXNoCiAgIGt1YmVjdGwgZGVzY3JpYmUgbm9kZSA8bm9kZS1uYW1lPiB8IGdyZXAgLUE1ICJB" + + "bGxvY2F0ZWQgcmVzb3VyY2VzIgogICBgYGAKCiMjIEZhaWx1cmU6IEhlbG0gUmVsZWFzZSBpbiBG" + + "YWlsZWQgU3RhdGUKCiMjIyBTeW1wdG9tcwoKYGBgYmFzaApoZWxtIGxpc3QgLUEKIyBTaG93cyBy" + + "ZWxlYXNlIHdpdGggU1RBVFVTOiBmYWlsZWQKYGBgCgpSZS1ydW5uaW5nIGBoZWxtZmlsZSBzeW5j" + + "YCBhcHBlYXJzIHRvIHN1Y2NlZWQgYnV0IHNlcnZpY2VzIGRvbid0IHdvcmsgKG1pZ3JhdGlvbnMg" + + "c2tpcHBlZCkuCgojIyMgRGlhZ25vc2lzCgpgYGBiYXNoCmhlbG0gaGlzdG9yeSA8cmVsZWFzZS1u" + + "YW1lPiAtbiA8bmFtZXNwYWNlPgpgYGAKCiMjIyBGaXgKCk11c3QgZGVzdHJveSB0aGUgZmFpbGVk" + + "IHJlbGVhc2UgYW5kIHJlLXN5bmMgKG5vdCBqdXN0IGFwcGx5KToKCmBgYGJhc2gKSEVMTUZJTEVf" + + "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT08cmVsZWFzZT4gZGVzdHJveQojIElm" + + "IG5hbWVzcGFjZSBuZWVkcyBjbGVhbnVwOgprdWJlY3RsIGRlbGV0ZSBuYW1lc3BhY2UgPG5hbWVz" + + "cGFjZT4Ka3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIDxuYW1lc3BhY2U+CiMgUmUtY3JlYXRlIHB1" + + "bGwgc2VjcmV0IGlmIG5lZWRlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3Rv" + + "ciBuYW1lPTxyZWxlYXNlPiBzeW5jCmBgYAoKIyMgRmFpbHVyZTogQWNjb3VudCBCb290c3RyYXAg" + + "Sm9iIEZhaWxlZAoKIyMjIFN5bXB0b21zCgpTZXJ2aWNlcyBkZXBsb3kgYnV0IGZ1bmN0aW9ucyBj" + + "YW4ndCBiZSBjcmVhdGVkLiBFdmVudHMgc2hvdyBib290c3RyYXAgam9iIGZhaWx1cmUuCgojIyMg" + + "RGlhZ25vc2lzCgpgYGBiYXNoCiMgQ2hlY2sgYm9vdHN0cmFwIGpvYiBzdGF0dXMKa3ViZWN0bCBn" + + "ZXQgam9icyAtbiBudmNmCgojIEdldCBsb2dzIChqb2IgYXV0by1kZWxldGVzIGFmdGVyIH41IG1p" + + "bnV0ZXMpCmt1YmVjdGwgbG9ncyBqb2IvbnZjZi1hcGktYWNjb3VudC1ib290c3RyYXAgLW4gbnZj" + + "ZgoKIyBDaGVjayBBUEkgbG9ncwprdWJlY3RsIGxvZ3MgLW4gbnZjZiAtbCBhcHAua3ViZXJuZXRl" + + "cy5pby9uYW1lPW52Y2YtYXBpIC0tdGFpbD0xMDAKYGBgCgojIyMgQ29tbW9uIENhdXNlcwoKMS4g" + + "KipXcm9uZyBiYXNlNjQgY3JlZGVudGlhbHMqKjogQ3JlZGVudGlhbHMgaW4gYHNlY3JldHMvPGVu" + + "dj4tc2VjcmV0cy55YW1sYCBtdXN0IGJlIGAkb2F1dGh0b2tlbjpBUElfS0VZYCBiYXNlNjQtZW5j" + + "b2RlZCwgbm90IGp1c3QgdGhlIEFQSSBrZXkKCiAgIGBgYGJhc2gKICAgIyBWZXJpZnkgeW91ciBl" + + "bmNvZGVkIGNyZWRlbnRpYWwKICAgZWNobyAnWU9VUl9CQVNFNjRfU1RSSU5HJyB8IGJhc2U2NCAt" + + "ZAogICAjIFNob3VsZCBvdXRwdXQ6ICRvYXV0aHRva2VuOm52YXBpLXh4eHh4CiAgIGBgYAoKMi4g" + + "KipSZWdpc3RyeSB1bnJlYWNoYWJsZSoqOiBBUEkgY2FuJ3QgcmVhY2ggdGhlIHJlZ2lzdHJ5IHNw" + + "ZWNpZmllZCBpbiBgYWNjb3VudEJvb3RzdHJhcC5yZWdpc3RyeUNyZWRlbnRpYWxzYAoKIyMjIEZp" + + "eAoKRml4IGNyZWRlbnRpYWxzIGluIHNlY3JldHMgZmlsZSwgdGhlbiByZWNvdmVyIHNlcnZpY2Vz" + + "IHdpdGhvdXQgZGVzdHJveWluZyBkZXBlbmRlbmNpZXM6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08" + + "ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9c2VydmljZXMgZGVzdHJveQpr" + + "dWJlY3RsIGRlbGV0ZSBuYW1lc3BhY2UgbnZjZiBhcGkta2V5cyBlc3Mgc2lzIC0taWdub3JlLW5v" + + "dC1mb3VuZAprdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgbnZjZiAmJiBrdWJlY3RsIGNyZWF0ZSBu" + + "YW1lc3BhY2UgYXBpLWtleXMgJiYgXAogIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBlc3MgJiYg" + + "a3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIHNpcwojIFJlLWNyZWF0ZSBwdWxsIHNlY3JldHMgaWYg" + + "bmVlZGVkCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3Jv" + + "dXA9c2VydmljZXMgc3luYwpgYGAKCiMjIEZhaWx1cmU6IE5WQ0EgQ2xlYW51cCBTdHVjayAoRmlu" + + "YWxpemVycykKCiMjIyBTeW1wdG9tcwoKQ29tcHV0ZS1wbGFuZSBjbGVhbnVwIGhhbmdzLiBOYW1l" + + "c3BhY2VzCnN0dWNrIGluIGBUZXJtaW5hdGluZ2A6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IG5zCiMg" + + "bnZjYS1vcGVyYXRvciAgICBUZXJtaW5hdGluZyAgIDEwbQojIG52Y2YtYmFja2VuZCAgICAgVGVy" + + "bWluYXRpbmcgICAxMG0KYGBgCgojIyMgRml4CgpSdW4gdGhpcyBvbmx5IGFnYWluc3QgdGhlIGNv" + + "bXB1dGUgY29udGV4dCwgYWZ0ZXIgdGhlIG5vcm1hbCBjb21wdXRlLXBsYW5lCnRlYXJkb3duIGhh" + + "cyBmYWlsZWQuIFJlbW92ZSBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgY3VzdG9tIHJlc291" + + "cmNlcyBhbmQKZm9yY2UtZGVsZXRlIHN0dWNrIG5hbWVzcGFjZXM6CgpgYGBiYXNoCmV4cG9ydCBD" + + "T01QVVRFX0NPTlRFWFQ9PGNvbXB1dGUtcGxhbmUtY29udGV4dD4KCiMgUmVtb3ZlIGZpbmFsaXpl" + + "cnMgZnJvbSBOVkNGQmFja2VuZCByZXNvdXJjZXMKa3ViZWN0bCAtLWNvbnRleHQgIiRDT01QVVRF" + + "X0NPTlRFWFQiIGdldCBudmNmYmFja2VuZHMgLUEgLW8ganNvbiB8IFwKICBqcSAnLml0ZW1zW10g" + + "fCAubWV0YWRhdGEubmFtZXNwYWNlICsgIi8iICsgLm1ldGFkYXRhLm5hbWUnIC1yIHwgXAogIHhh" + + "cmdzIC1Je30gc2ggLWMgJ2NvbnRleHQ9IiQxIjsgbnM9IiR7MiUlLyp9IjsgbmFtZT0iJHsyIyMq" + + "L30iOyBrdWJlY3RsIC0tY29udGV4dCAiJGNvbnRleHQiIHBhdGNoIG52Y2ZiYWNrZW5kICIkbmFt" + + "ZSIgLW4gIiRucyIgLS10eXBlPW1lcmdlIC1wICJ7XCJtZXRhZGF0YVwiOntcImZpbmFsaXplcnNc" + + "IjpbXX19IicgXyAiJENPTVBVVEVfQ09OVEVYVCIge30KCiMgRm9yY2UtZGVsZXRlIHN0dWNrIG5h" + + "bWVzcGFjZXMgYnkgY2xlYXJpbmcgdGhlaXIgZmluYWxpemVycwpmb3IgbnMgaW4gbnZjYS1vcGVy" + + "YXRvciBudmNmLWJhY2tlbmQ7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgIiRDT01QVVRFX0NPTlRF" + + "WFQiIGdldCBuYW1lc3BhY2UgIiRucyIgLW8ganNvbiAyPi9kZXYvbnVsbCB8IFwKICAgIGpxICcu" + + "c3BlYy5maW5hbGl6ZXJzID0gW10nIHwgXAogICAga3ViZWN0bCAtLWNvbnRleHQgIiRDT01QVVRF" + + "X0NPTlRFWFQiIHJlcGxhY2UgXAogICAgICAtLXJhdyAiL2FwaS92MS9uYW1lc3BhY2VzLyRucy9m" + + "aW5hbGl6ZSIgLWYgLSAyPi9kZXYvbnVsbApkb25lCmBgYAoKIyMgRmFpbHVyZTogTlZDQSBPcGVy" + + "YXRvciBNaXNzaW5nIG9yIE5vdCBSZWFkeQoKIyMjIFN5bXB0b21zCgpBZnRlciBjb21wdXRlLXBs" + + "YW5lIGluc3RhbGwgY29tcGxldGVzLCBubyBgbnZjYS1vcGVyYXRvcmAgRGVwbG95bWVudCBleGlz" + + "dHMsIG9yCml0IGV4aXN0cyBidXQgcG9kcyBhcmUgbm90IHJlYWR5OgoKYGBgYmFzaAprdWJlY3Rs" + + "IC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgZGVwbG95bWVudCBudmNhLW9w" + + "ZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBs" + + "YW5lLWNvbnRleHQ+IGdldCBwb2RzIC1uIG52Y2Etb3BlcmF0b3IKYGBgCgojIyMgRGlhZ25vc2lz" + + "IGFuZCBGaXhlcwoKRmlyc3QgaWRlbnRpZnkgd2hldGhlciB0aGUgaW5zdGFsbGF0aW9uIHVzZWQg" + + "dGhlIEhlbG1maWxlIHZhbHVlcyBmbG93IG9yIHRoZQpDTEkgcHJvZmlsZSBmbG93LiBSZS1ydW4g" + + "b25seSB0aGF0IGZsb3cncyByZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlvbiBzdGVwcwpmcm9t" + + "IFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxs" + + "YXRpb24ubWQpLiBEbyBub3QKc3Vic3RpdHV0ZSBvbmUgaGFuZG9mZiBmb3IgdGhlIG90aGVyLgoK" + + "SWYgaW5zdGFsbGF0aW9uIHN1Y2NlZWRzIGJ1dCBwb2RzIHN0aWxsIGZhaWwsIGluc3BlY3QgdGhl" + + "IGNvbXB1dGUgY29udGV4dDoKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxh" + + "bmUtY29udGV4dD4gZGVzY3JpYmUgZGVwbG95IG52Y2Etb3BlcmF0b3IgXAogIC1uIG52Y2Etb3Bl" + + "cmF0b3IKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gbG9ncyBkZXBs" + + "b3ltZW50L252Y2Etb3BlcmF0b3IgXAogIC1uIG52Y2Etb3BlcmF0b3IgLS10YWlsPTIwMAprdWJl" + + "Y3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgbnZjZmJhY2tlbmQgLW4g" + + "bnZjYS1vcGVyYXRvcgpgYGAKCkZvciBwcml2YXRlIHJlZ2lzdHJ5IGZhaWx1cmVzLCB2ZXJpZnkg" + + "dGhhdCB0aGUgcHVsbCBzZWNyZXQgZXhpc3RzIGluCmBudmNhLW9wZXJhdG9yYC4gVGhlIGNoYXJ0" + + "IGFuZCBvcGVyYXRvciBtaXJyb3IgaXQgdG8gYG52Y2Etc3lzdGVtYDsgZG8gbm90IHVzZSBhCmJy" + + "b2FkZXIgbWFudWFsIG5hbWVzcGFjZSBsb29wLiBTZWUKW3B1bGwtc2VjcmV0cy5tZF0ocHVsbC1z" + + "ZWNyZXRzLm1kI2NvbXB1dGUtcGxhbmUtc2VjcmV0KS4KCiMjIEZhaWx1cmU6IEdhdGV3YXkgRW5k" + + "cG9pbnQgQ2hhbmdlZAoKIyMjIFN5bXB0b21zCgpSZXF1ZXN0cyB0aHJvdWdoIHRoZSBjb25maWd1" + + "cmVkIHJvdXRlIGRvbWFpbiBmYWlsIGFmdGVyIHRoZSBHYXRld2F5IG9yIGl0cyBsb2FkIGJhbGFu" + + "Y2VyIGlzIHJlcGxhY2VkLiBUaGUgR2F0ZXdheSByZXBvcnRzIGEgbmV3IGVuZHBvaW50LgoKIyMj" + + "IERpYWdub3NpcwoKYGBgYmFzaApHQVRFV0FZX0FERFI9JChrdWJlY3RsIC0tY29udGV4dCA8Y29u" + + "dHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1nYXRld2F5IC1uIGVudm95" + + "LWdhdGV3YXkgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFsdWV9JykK" + + "dGVzdCAtbiAiJEdBVEVXQVlfQUREUiIKZGlnICtzaG9ydCAiYXBpLjxkb21haW4+IgpjdXJsIC1I" + + "ICJIb3N0OiBhcGkuPGRvbWFpbj4iICJodHRwOi8vJEdBVEVXQVlfQUREUi9oZWFsdGgiCgojIENo" + + "ZWNrIGRpcmVjdCBhZGRyZXNzIGZpZWxkcyB1c2VkIGJ5IGEgc3BsaXQgZGVwbG95bWVudApncmVw" + + "IG52Y2ZOYXRzU2VydmljZVVSTCBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9lbnZpcm9ubWVu" + + "dHMvPGVudj4ueWFtbApncmVwIC1FICdpY21zU2VydmljZXxyZXZhbFNlcnZpY2V8bmF0cycgXAog" + + "IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1s" + + "CmBgYAoKIyMjIEZpeAoKS2VlcCBgZ2xvYmFsLmRvbWFpbmAsIHJvdXRlIGhvc3RuYW1lcywgYW5k" + + "IEhvc3Qgb3ZlcnJpZGVzIHVuY2hhbmdlZC4gVXBkYXRlIEROUwpvciB0aGUgZGlyZWN0IGNsaWVu" + + "dCBkZXN0aW5hdGlvbi4gRm9yIHNwbGl0IGRlcGxveW1lbnRzLCB1cGRhdGUgb25seSBkaXJlY3QK" + + "R2F0ZXdheS1hZGRyZXNzIGZpZWxkcyBhbmQgcmVmcmVzaCByZWdpc3RyYXRpb24gYW5kIGluc3Rh" + + "bGxhdGlvbiB0aHJvdWdoIHRoZQpzYW1lIHNlbGVjdGVkIGhhbmRvZmYuIFNlZQpbRXhhbXBsZSA0" + + "XSguLi9leGFtcGxlcy5tZCNleGFtcGxlLTQtcmVjb3Zlci1mcm9tLWEtZ2F0ZXdheS1lbmRwb2lu" + + "dC1jaGFuZ2UpLgoKIyMgVXNlZnVsIE5hbWVzcGFjZS10by1TZXJ2aWNlIE1hcHBpbmcKClF1aWNr" + + "IHJlZmVyZW5jZSBmb3Igd2hpY2ggc2VydmljZXMgcnVuIGluIHdoaWNoIG5hbWVzcGFjZToKCnwg" + + "TmFtZXNwYWNlIHwgU2VydmljZXMgfAp8LS0tLS0tLS0tLS18LS0tLS0tLS0tLXwKfCBuYXRzLXN5" + + "c3RlbSB8IG5hdHMgfAp8IGNhc3NhbmRyYS1zeXN0ZW0gfCBjYXNzYW5kcmEgfAp8IHZhdWx0LXN5" + + "c3RlbSB8IG9wZW5iYW8tc2VydmVyIHwKfCBudmNmIHwgYXBpLCBpbnZvY2F0aW9uLXNlcnZpY2Us" + + "IGdycGMtcHJveHksIG5vdGFyeS1zZXJ2aWNlLCByZXZhbCwgbGxtLXJlcXVlc3Qtcm91dGVyLCBs" + + "bG0tYXBpLWdhdGV3YXkgfAp8IGFwaS1rZXlzIHwgYXBpLWtleXMsIGFkbWluLWlzc3Vlci1wcm94" + + "eSB8CnwgZXNzIHwgZXNzLWFwaSB8Cnwgc2lzIHwgc2lzIHwKfCBlbnZveS1nYXRld2F5LXN5c3Rl" + + "bSB8IGVudm95IGdhdGV3YXkgKGluZ3Jlc3MgY29udHJvbGxlcikgfAp8IGVudm95LWdhdGV3YXkg" + + "fCBnYXRld2F5IHJlc291cmNlICsgcm91dGVzIHwKUEsHCLV6cDu1MAAAtTAAAFBLAwQUAAgAAAAA" + + "ACEAAAAAAAAAAAAAAAAARAAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3Jl" + + "ZmVyZW5jZXMvaGVsbWZpbGUtc3RydWN0dXJlLm1kVVQFAAEAps4SIyBIZWxtZmlsZSBTdHJ1Y3R1" + + "cmUgUmVmZXJlbmNlCgojIyBEaXJlY3RvcnkgTGF5b3V0CgpgYGBiYXNoCm52Y2Ytc2VsZi1tYW5h" + + "Z2VkLXN0YWNrLwp8LS0gaGVsbWZpbGUuZC8KfCAgIHwtLSAwMS1kZXBlbmRlbmNpZXMueWFtbC5n" + + "b3RtcGwgICMgTkFUUywgQ2Fzc2FuZHJhLCBPcGVuQmFvCnwgICB8LS0gMDItY29yZS55YW1sLmdv" + + "dG1wbCAgICAgICAgICAjIE5WQ0Ygc2VydmljZXMgKyBpbmdyZXNzCnwgICBgLS0gMDMtb2JzZXJ2" + + "YWJpbGl0eS55YW1sLmdvdG1wbCAjIE9ic2VydmFiaWxpdHkgc3RhY2sgKG9wdGlvbmFsKQp8LS0g" + + "ZW52aXJvbm1lbnRzLwp8ICAgfC0tIGJhc2UueWFtbCAgICAgICAgICAgICAgICAgICAgIyBEZWZh" + + "dWx0IHZhbHVlcyAoYWxsIGVudmlyb25tZW50cykKfCAgIGAtLSA8ZW52LW5hbWU+LnlhbWwgICAg" + + "ICAgICAgICAgICMgUGVyLWVudmlyb25tZW50IG92ZXJyaWRlcwp8LS0gc2VjcmV0cy8KfCAgIGAt" + + "LSA8ZW52LW5hbWU+LXNlY3JldHMueWFtbCAgICAgICMgU2Vuc2l0aXZlIHZhbHVlcyAocmVnaXN0" + + "cnkgY3JlZHMsIHBhc3N3b3JkcykKYC0tIGdsb2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAg" + + "ICMgR28gdGVtcGxhdGUgdGhhdCBjb25zdHJ1Y3RzIHBlci1jaGFydCB2YWx1ZXMKCm52Y2YtY29t" + + "cHV0ZS1wbGFuZS1zdGFjay8KfC0tIGhlbG1maWxlLmQvCnwgICB8LS0gMDEtZGVwZW5kZW5jaWVz" + + "LnlhbWwuZ290bXBsICAjIENvbXB1dGUgcGxhbmUgZGVwZW5kZW5jeSBjb21wb25lbnRzCnwgICBg" + + "LS0gMDItbnZjYS55YW1sLmdvdG1wbCAgICAgICAgICAjIG52Y2Etb3BlcmF0b3IgY2hhcnQgYW5k" + + "IG52Y2EgY29uZmlndXJhdGlvbgp8LS0gZW52aXJvbm1lbnRzLwp8ICAgfC0tIGJhc2UueWFtbCAg" + + "ICAgICAgICAgICAgICAgICAgIyBEZWZhdWx0IHZhbHVlcyAoYWxsIGVudmlyb25tZW50cykKfCAg" + + "IGAtLSA8ZW52LW5hbWU+LnlhbWwgICAgICAgICAgICAgICMgUGVyLWVudmlyb25tZW50IG92ZXJy" + + "aWRlcwpgLS0gZ2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAgIyBHbyB0ZW1wbGF0ZSB0" + + "aGF0IGNvbnN0cnVjdHMgcGVyLWNoYXJ0IHZhbHVlcwpgYGAKClRoZXNlIHN0YWNrcyBoYXZlIHNl" + + "cGFyYXRlIGVudmlyb25tZW50cyBhbmQgY2x1c3RlciBjb250ZXh0cy4gVGhlIEhlbG1maWxlCnZh" + + "bHVlcyBmbG93IGF1dGhvcnMgYm90aCBlbnZpcm9ubWVudCBmaWxlcy4gVGhlIENMSSBwcm9maWxl" + + "IGZsb3cgaW5zdGVhZCB1c2VzCnRoZSBDTEktZ2VuZXJhdGVkIGNvbnRyb2wtcGxhbmUgcHJvZmls" + + "ZSBhcyBpdHMgZW5kcG9pbnQgc291cmNlLiBEbyBub3QgbWl4IHRoZQpoYW5kb2Zmcy4gU2VlIFtT" + + "cGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRp" + + "b24ubWQpLgoKIyMgR290bXBsIEZpbGVzIGFuZCBUaGVpciBSZWxlYXNlcwoKIyMjIDAxLWRlcGVu" + + "ZGVuY2llcy55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBOb3Rl" + + "cyB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IG5hdHMgfCBoZWxt" + + "LW52Y2YtbmF0cyB8IG5hdHMtc3lzdGVtIHwgTWVzc2FnaW5nIHwKfCBvcGVuYmFvLXNlcnZlciB8" + + "IGhlbG0tbnZjZi1vcGVuYmFvLXNlcnZlciB8IHZhdWx0LXN5c3RlbSB8IFNlY3JldHMgbWFuYWdl" + + "bWVudCwgZGVwZW5kcyBvbiBuYXRzIHwKfCBjYXNzYW5kcmEgfCBoZWxtLW52Y2YtY2Fzc2FuZHJh" + + "IHwgY2Fzc2FuZHJhLXN5c3RlbSB8IERhdGFiYXNlIHwKClVzZXMgYDw8OiAqZGVwZW5kZW5jeWAg" + + "dGVtcGxhdGUgaW5oZXJpdGFuY2Ugd2l0aCBgcmVsZWFzZS1ncm91cDogZGVwZW5kZW5jaWVzYCBs" + + "YWJlbC4KCiMjIyAwMi1jb3JlLnlhbWwuZ290bXBsCgp8IFJlbGVhc2UgfCBDaGFydCB8IE5hbWVz" + + "cGFjZSB8IExhYmVsIHwKfC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS18Cnwg" + + "YXBpLWtleXMgfCBoZWxtLW52Y2YtYXBpLWtleXMgfCBhcGkta2V5cyB8IHNlcnZpY2VzIHwKfCBz" + + "aXMgfCBoZWxtLW52Y2Ytc2lzIHwgc2lzIHwgc2VydmljZXMgfAp8IGFwaSB8IGhlbG0tbnZjZi1h" + + "cGkgfCBudmNmIHwgc2VydmljZXMgfAp8IGludm9jYXRpb24tc2VydmljZSB8IGhlbG0tbnZjZi1p" + + "bnZvY2F0aW9uLXNlcnZpY2UgfCBudmNmIHwgc2VydmljZXMgfAp8IGdycGMtcHJveHkgfCBoZWxt" + + "LW52Y2YtZ3JwYy1wcm94eSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgZXNzLWFwaSB8IGhlbG0tbnZj" + + "Zi1lc3MtYXBpIHwgZXNzIHwgc2VydmljZXMgfAp8IG5vdGFyeS1zZXJ2aWNlIHwgaGVsbS1udmNm" + + "LW5vdGFyeS1zZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCByZXZhbCB8IGhlbG0tcmV2YWwg" + + "fCBudmNmIHwgc2VydmljZXMgfAp8IGxsbS1yZXF1ZXN0LXJvdXRlciB8IG52Y2YvaGVsbS1udmNm" + + "LWxsbS1yZXF1ZXN0LXJvdXRlciB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgbGxtLWFwaS1nYXRld2F5" + + "IHwgbnZjZi9oZWxtLW52Y2YtbGxtLWFwaS1nYXRld2F5IHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBh" + + "ZG1pbi1pc3N1ZXItcHJveHkgfCBoZWxtLWFkbWluLXRva2VuLWlzc3Vlci1wcm94eSB8IGFwaS1r" + + "ZXlzIHwgKG5vIHJlbGVhc2UtZ3JvdXAgbGFiZWwpIHwKfCBpbmdyZXNzIHwgbnZjZi1nYXRld2F5" + + "LXJvdXRlcyB8IGVudm95LWdhdGV3YXktc3lzdGVtIHwgaW5ncmVzcyB8CgpNb3N0IHNlcnZpY2Vz" + + "IHVzZSBgaW5oZXJpdDogW3t0ZW1wbGF0ZTogc2VydmljZX1dYC4gTExNIHJlbGVhc2VzIHVzZSBP" + + "Q0kgY2hhcnRzIGZyb20gdGhlIGBudmNmYCByZXBvc2l0b3J5IHdpdGggc3RhbmRhbG9uZSBgdmFs" + + "dWVzOiBbLi4vZ2xvYmFsLnlhbWwuZ290bXBsXWAgYmxvY2tzOyB0aGV5IGFyZSBnYXRlZCBvbiBg" + + "YWRkb25zLmxsbS5lbmFibGVkYC4gYGFkbWluLWlzc3Vlci1wcm94eWAgYW5kIGBpbmdyZXNzYCBo" + + "YXZlIHN0YW5kYWxvbmUgYHZhbHVlczpgIGJsb2Nrcy4KCiMjIyAwMy1vYnNlcnZhYmlsaXR5Lnlh" + + "bWwuZ290bXBsCgp8IFJlbGVhc2UgfCBDaGFydCB8IE5hbWVzcGFjZSB8IExhYmVsIHwKfC0tLS0t" + + "LS0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS18CnwgKG9ic2VydmFiaWxpdHkgcmVsZWFz" + + "ZXMpIHwgKHZhcmlvdXMpIHwgb2JzZXJ2YWJpbGl0eSB8IG9ic2VydmFiaWxpdHkgfAoKR2F0ZWQg" + + "b24gb2JzZXJ2YWJpbGl0eS1zcGVjaWZpYyBmbGFncyBpbiB0aGUgZW52aXJvbm1lbnQgZmlsZS4g" + + "U2tpcHBlZCBpZiBkaXNhYmxlZC4KCiMjIFRlbXBsYXRlIEluaGVyaXRhbmNlCgojIyMgYDw8OiAq" + + "ZGVwZW5kZW5jeWAgKFlBTUwgbWVyZ2UpCgpVc2VkIGluIGAwMS1kZXBlbmRlbmNpZXMueWFtbC5n" + + "b3RtcGxgLiBNZXJnZXMgdGhlIHRlbXBsYXRlJ3MgcHJvcGVydGllcyBpbnRvIHRoZSByZWxlYXNl" + + "LgoKKipHb3RjaGEqKjogWUFNTCBtZXJnZSByZXBsYWNlcyBsaXN0cy4gSWYgeW91IGFkZCBhIGB2" + + "YWx1ZXM6YCBrZXkgdG8gdGhlIHJlbGVhc2UsIGl0ICoqcmVwbGFjZXMqKiB0aGUgdGVtcGxhdGUn" + + "cyBgdmFsdWVzOmAgbGlzdCBlbnRpcmVseS4gWW91IG11c3QgcmUtaW5jbHVkZSBhbGwgdGVtcGxh" + + "dGUgdmFsdWVzOgoKSW4gdGhlIHRlbXBsYXRlIGJlbG93LCBgPHByaXZhdGUtdmFsdWVzPmAgcmVm" + + "ZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUgc3RhY2sgcm9v" + + "dC4KCmBgYHlhbWwKIyBUZW1wbGF0ZSBkZWZpbmVzOgp0ZW1wbGF0ZXM6CiAgZGVwZW5kZW5jeTog" + + "JmRlcGVuZGVuY3kKICAgIGNoYXJ0OiBudmNmL2hlbG0tbnZjZi17eyAuUmVsZWFzZS5OYW1lIH19" + + "CiAgICB2YWx1ZXM6CiAgICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAgIC0gLi4vPHBy" + + "aXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlh" + + "bWwKCiMgV2hlbiBvdmVycmlkaW5nLCBNVVNUIHJlLWluY2x1ZGUgYm90aDoKLSBuYW1lOiBjYXNz" + + "YW5kcmEKICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2dsb2JhbC55YW1sLmdv" + + "dG1wbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE11c3Qg" + + "cmUtaW5jbHVkZQogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52ICJIRUxN" + + "RklMRV9FTlYiIH19LXNlY3JldHMueWFtbCAgICMgTXVzdCByZS1pbmNsdWRlCiAgICAtIGNhc3Nh" + + "bmRyYTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + + "ICAgICAgIyBZb3VyIG92ZXJyaWRlCiAgICAgICAgcmVzb3VyY2VzOgogICAgICAgICAgbGltaXRz" + + "OgogICAgICAgICAgICBtZW1vcnk6IDgxOTJNaQpgYGAKCiMjIyBgaW5oZXJpdGAgKEhlbG1maWxl" + + "IG5hdGl2ZSkKClVzZWQgaW4gYDAyLWNvcmUueWFtbC5nb3RtcGxgLiBIZWxtZmlsZSdzIG5hdGl2" + + "ZSBpbmhlcml0YW5jZSBtZWNoYW5pc20uCgpgYGB5YW1sCi0gbmFtZTogYXBpCiAgdmVyc2lvbjog" + + "MS42LjAKICBuYW1lc3BhY2U6IG52Y2YKICBpbmhlcml0OgogICAgLSB0ZW1wbGF0ZTogc2Vydmlj" + + "ZQpgYGAKCldoZW4gYWRkaW5nIGB2YWx1ZXM6YCB0byBhbiBpbmhlcml0ZWQgcmVsZWFzZSwgeW91" + + "IGFsc28gbmVlZCB0byByZS1pbmNsdWRlIHRoZSB0ZW1wbGF0ZSdzIHZhbHVlcyBmaWxlcyBzaW5j" + + "ZSBgdmFsdWVzYCBpcyBhIGxpc3QgdGhhdCBnZXRzIHJlcGxhY2VkLgoKIyMgVmFsdWVzIFByZWNl" + + "ZGVuY2UKCkZyb20gbG93ZXN0IHRvIGhpZ2hlc3QgcHJpb3JpdHk6CgoxLiBgZW52aXJvbm1lbnRz" + + "L2Jhc2UueWFtbGAgLS0gZGVmYXVsdHMgc2hhcmVkIGFjcm9zcyBhbGwgZW52aXJvbm1lbnRzCjIu" + + "IGBlbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgLS0gcGVyLWVudmlyb25tZW50IG92ZXJyaWRlcwoz" + + "LiBgZ2xvYmFsLnlhbWwuZ290bXBsYCAtLSBHbyB0ZW1wbGF0ZSBwcm9jZXNzaW5nIChjb25zdHJ1" + + "Y3RzIGNoYXJ0LXNwZWNpZmljIHN0cnVjdHVyZSkKNC4gYDxwcml2YXRlLXZhbHVlcz4vPGVudj4t" + + "c2VjcmV0cy55YW1sYCAtLSBzZW5zaXRpdmUgdmFsdWVzCjUuIElubGluZSBgdmFsdWVzOmAgYmxv" + + "Y2tzIG9uIHJlbGVhc2VzIC0tIGhpZ2hlc3QgcHJlY2VkZW5jZQoKIyMgV2hhdCBnbG9iYWwueWFt" + + "bC5nb3RtcGwgUGFzc2VzIFRocm91Z2gKCmBnbG9iYWwueWFtbC5nb3RtcGxgIHJlYWRzIGZyb20g" + + "YC5WYWx1ZXNgICh0aGUgbWVyZ2VkIGVudmlyb25tZW50ICsgZW52LXNwZWNpZmljIFlBTUwpIGFu" + + "ZCBjb25zdHJ1Y3RzIGNoYXJ0LXNwZWNpZmljIHZhbHVlcy4gSXQgb25seSBwYXNzZXMgdGhyb3Vn" + + "aCBrZXlzIGl0IGV4cGxpY2l0bHkgcmVmZXJlbmNlczoKCiMjIyBDYXNzYW5kcmEKCi0gYGNhc3Nh" + + "bmRyYS5yZXBsaWNhQ291bnRgCi0gYGNhc3NhbmRyYS5pbWFnZS4qYCAocmVnaXN0cnksIHJlcG9z" + + "aXRvcnkpCi0gYGNhc3NhbmRyYS5taWdyYXRpb25zLmltYWdlLipgCi0gYGNhc3NhbmRyYS5wZXJz" + + "aXN0ZW5jZS5zaXplYAotIGBjYXNzYW5kcmEubm9kZVNlbGVjdG9yYCAoaWYgYGdsb2JhbC5ub2Rl" + + "U2VsZWN0b3JzLmVuYWJsZWRgKQotIGBjYXNzYW5kcmEuZ2xvYmFsLmRlZmF1bHRTdG9yYWdlQ2xh" + + "c3NgCgojIyMgTkFUUwoKLSBgbmF0cy5jb250YWluZXIuaW1hZ2UuKmAKLSBgbmF0cy5yZWxvYWRl" + + "ci5pbWFnZS4qYAotIGBuYXRzLm5hdHNCb3guY29udGFpbmVyLmltYWdlLipgCi0gYG5hdHMuY29u" + + "ZmlnLmpldHN0cmVhbS5maWxlU3RvcmUucHZjLnN0b3JhZ2VDbGFzc05hbWVgCi0gYG5hdHMucG9k" + + "VGVtcGxhdGUubWVyZ2Uuc3BlYy5ub2RlU2VsZWN0b3JgIChpZiBlbmFibGVkKQoKIyMjIE9wZW5C" + + "YW8KCi0gYG9wZW5iYW8ubWlncmF0aW9ucy5pbWFnZS4qYCBhbmQgYG9wZW5iYW8ubWlncmF0aW9u" + + "cy5lbnZgCi0gYG9wZW5iYW8uaW5qZWN0b3IuaW1hZ2UuKmAKLSBgb3BlbmJhby5zZXJ2ZXIuaW1h" + + "Z2UuKmAKLSBgb3BlbmJhby5zZXJ2ZXIuZGF0YVN0b3JhZ2UuKmAKLSBOb2RlIHNlbGVjdG9ycyAo" + + "aWYgZW5hYmxlZCkKCiMjIyBTZXJ2aWNlcyAoQVBJLCBTSVMsIGV0Yy4pCgotIGA8c2VydmljZT4u" + + "aW1hZ2UuKmAgKHJlZ2lzdHJ5LCByZXBvc2l0b3J5KQotIGA8c2VydmljZT4ubm9kZVNlbGVjdG9y" + + "YCAoaWYgZW5hYmxlZCkKLSBgPHNlcnZpY2U+LmVudi4qYCAob2JzZXJ2YWJpbGl0eSBzZXR0aW5n" + + "cykKCiMjIyBMTE0gRnVuY3Rpb24gRW5hYmxlbWVudAoKRW5hYmxlIHRoZSBMTE0gYWRkb24gYmVm" + + "b3JlIGNyZWF0aW5nIG9yIGludm9raW5nIGZ1bmN0aW9ucyB3aXRoCmBmdW5jdGlvblR5cGU6ICJM" + + "TE0iYC4gVGhlIGFkZG9uIGRlcGxveXMgYGxsbS1yZXF1ZXN0LXJvdXRlcmAgYW5kCmBsbG0tYXBp" + + "LWdhdGV3YXlgLCBhZGRzIHRoZSBgbGxtLmludm9jYXRpb24uPGRvbWFpbj5gIHJvdXRlIHdoZW4g" + + "R2F0ZXdheSBBUEkKaW5ncmVzcyBpcyBlbmFibGVkLCBhbmQgY29uZmlndXJlcyB3b3JrZXJzIHRv" + + "IHVzZSB0aGUgTExNIHNpZGVjYXIuIFRoZSBIZWxtZmlsZQpjb25kaXRpb24gaXMgYGFkZG9ucy5s" + + "bG0uZW5hYmxlZGAuIERvIG5vdCB1c2UgdGhlIG9ic29sZXRlIGBsbG0uZW5hYmxlZGAgcGF0aC4K" + + "CkZvciBhIHNpbmdsZS1ub2RlIGlzb2xhdGVkIHRlc3QgY2x1c3RlciwgYWRkIHRoaXMgY29uZmln" + + "dXJhdGlvbiB0bwpgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgIGJlZm9yZSBhcHBseWluZyB0aGUg" + + "c3RhY2s6CgpgYGB5YW1sCmFkZG9uczoKICBsbG06CiAgICBlbmFibGVkOiB0cnVlCiAgICBnYXRl" + + "d2F5OgogICAgICByZXBsaWNhQ291bnQ6IDEKICAgICAgbWV0cmljczoKICAgICAgICBzZXJ2aWNl" + + "TW9uaXRvcjoKICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCiAgICByZXF1ZXN0Um91dGVyOgogICAg" + + "ICByZXBsaWNhQ291bnQ6IDEKICAgICAgbWV0cmljczoKICAgICAgICBzZXJ2aWNlTW9uaXRvcjoK" + + "ICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCgphZ2VudENvbmZpZzoKICBtZXJnZUNvbmZpZzogfAog" + + "ICAgY2x1c3RlcjoKICAgICAgdmFsaWRhdGlvblBvbGljeToKICAgICAgICBuYW1lOiBVbnJlc3Ry" + + "aWN0ZWQKICAgIHdvcmtsb2FkOgogICAgICBzdGFyZ2F0ZVFVSUNJbnNlY3VyZTogdHJ1ZQpgYGAK" + + "ClVzZSBgcmVwbGljYUNvdW50OiAxYCBvbmx5IGZvciBsb2NhbCBvciBzaW5nbGUtbm9kZSB0ZXN0" + + "IGNsdXN0ZXJzLiBUaGUgYnVuZGxlZApOVkNGIEFQSSBjdXJyZW50bHkgc2VydmVzIHBsYWludGV4" + + "dCBnUlBDIG9uIHBvcnQgOTA5MCwgc28gdGhlIHNlbGYtbWFuYWdlZCBzdGFjawpkZWZhdWx0cyB0" + + "aGUgTExNIEFQSSBHYXRld2F5IGF1dGhlbnRpY2F0aW9uIGhvcCB0byBwbGFpbnRleHQuIFNldApg" + + "YWRkb25zLmxsbS5nYXRld2F5LmF1dGguZ3JwY0luc2VjdXJlOiBmYWxzZWAgb25seSB3aXRoIGEg" + + "VExTLWNhcGFibGUgTlZDRiBBUEkuCgpXb3JrZXItdG8tcm91dGVyIHRyYW5zcG9ydCBpcyBzZXBh" + + "cmF0ZS4gRm9yIHNoYXJlZCBvciBwcm9kdWN0aW9uIGNsdXN0ZXJzLCB1c2UKdGhlIHJlcXVpcmVk" + + "IHJlcGxpY2EgY291bnQgYW5kIHRoZSBtYW5hZ2VkIFRMUyBjb25maWd1cmF0aW9uLiBUaGUKYHdv" + + "cmtsb2FkLnN0YXJnYXRlUVVJQ0luc2VjdXJlYCBzZXR0aW5nIGVuYWJsZXMgcGxhaW50ZXh0IHdv" + + "cmtlciB0cmFuc3BvcnQgYW5kCm11c3Qgbm90IGJlIHVzZWQgaW4gcHJvZHVjdGlvbi4KClRoZSBy" + + "ZXF1ZXN0IHJvdXRlciB1c2VzIGBwb3dlci1vZi10d29gIHdoZW4gbm8gbG9hZC1iYWxhbmNlciBj" + + "b25maWd1cmF0aW9uIGlzCnNldC4gQ29uZmlndXJlIG90aGVyIHJvdXRpbmcgbWV0aG9kcyB3aXRo" + + "IHRoZQpbTExNIFJlcXVlc3QgUm91dGVyIExvYWQgQmFsYW5jaW5nXShodHRwczovL2dpdGh1Yi5j" + + "b20vTlZJRElBL252Y2YvYmxvYi9tYWluL2RvY3MvdXNlci9sbG0tcmVxdWVzdC1yb3V0ZXItbG9h" + + "ZC1iYWxhbmNpbmcubWQpCmd1aWRlLgoKSWYgdGhlIHNpZGVjYXIgaW1hZ2UgaXMgbWlycm9yZWQg" + + "b3V0c2lkZSB0aGUgc3RhY2sncyBkZWZhdWx0IGltYWdlIHJlZ2lzdHJ5IGFuZApyZXBvc2l0b3J5" + + "LCBzZXQgdGhlIGdlbmVyYXRlZCB3b3JrZXIgc2lkZWNhciBpbWFnZSBleHBsaWNpdGx5OgoKYGBg" + + "eWFtbAphcGk6CiAgcmVtb3RlQ29uZmlnOgogICAgY29uZmlnRGF0YToKICAgICAgbnZjZjoKICAg" + + "ICAgICBzaWRlY2FyczoKICAgICAgICAgIGxsbS1yb3V0ZXItY2xpZW50LWltYWdlOiA8cmVnaXN0" + + "cnk+LzxyZXBvc2l0b3J5Pi9weWxvbjowLjE0LjEKYGBgCgpUaGUgbGVnYWN5IGBhcGkuZW52Lk5W" + + "Q0ZfU0lERUNBUlNfTExNX1JPVVRFUl9DTElFTlRfSU1BR0VgIHBhdGggaXMgZGVwcmVjYXRlZC4K" + + "VGhlIHN0YWNrIHRyYW5zbGF0ZXMgaXQgZm9yIG9uZSBjb21wYXRpYmlsaXR5IHdpbmRvdywgYnV0" + + "IG5ldyBjb25maWd1cmF0aW9ucwptdXN0IHVzZSB0aGUgcmVtb3RlLWNvbmZpZyBwYXRoLiBDb25m" + + "bGljdGluZyB2YWx1ZXMgZmFpbCByZW5kZXJpbmcuCgpSZW5kZXIgYW5kIGFwcGx5IHRoZSB1cGRh" + + "dGVkIGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQsIHRoZW4gcmVmcmVzaCBldmVyeQpyZWdpc3Rl" + + "cmVkIGNvbXB1dGUgcGxhbmUgdXNpbmcgdGhlIHNhbWUgaGFuZG9mZiB1c2VkIGZvciBpdHMgaW5z" + + "dGFsbGF0aW9uIHNvCk5WQ0EgcmVjZWl2ZXMgYGFnZW50Q29uZmlnLm1lcmdlQ29uZmlnYDoKCmBg" + + "YGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08" + + "ZW52PiBoZWxtZmlsZSBzeW5jCmBgYAoKVXNlIHRoZSBjb21wbGV0ZSBjb21wdXRlLXBsYW5lIGlu" + + "c3RhbGwgY29tbWFuZCBmcm9tCltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29t" + + "cHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLiBBCkNMSS1wcm9maWxlIGluc3RhbGxhdGlvbiBt" + + "dXN0IHJlbWFpbiBwcm9maWxlLWRyaXZlbjsgYSBIZWxtZmlsZSBpbnN0YWxsYXRpb24KbXVzdCBy" + + "ZW1haW4gdmFsdWVzLWRyaXZlbi4KCkV4aXN0aW5nIExMTSBmdW5jdGlvbiB2ZXJzaW9ucyByZXRh" + + "aW4gdGhlIHdvcmtlci1zaWRlY2FyIGltYWdlIG1ldGFkYXRhCmNhcHR1cmVkIHdoZW4gdGhlIHZl" + + "cnNpb24gaXMgY3JlYXRlZC4gUmVwbGFjaW5nIHBvZHMgb3IgcmVkZXBsb3lpbmcgdGhlIHNhbWUK" + + "dmVyc2lvbiBkb2VzIG5vdCBhcHBseSBhIG5ldyBQeWxvbiBpbWFnZS4gQWZ0ZXIgdGhlIGNvbnRy" + + "b2wtcGxhbmUgdXBkYXRlLApjcmVhdGUgYW5kIGRlcGxveSBhIG5ldyBmdW5jdGlvbiB2ZXJzaW9u" + + "LiBWZXJpZnkgdGhlIGNvbnRyb2wgcGxhbmUsIHJvdXRlLCBhbmQKd29ya2VyIHNpZGVjYXI6Cgpg" + + "YGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSAtbiBudmNmIGxsbS1hcGktZ2F0ZXdheQprdWJlY3Rs" + + "IGdldCBzdGF0ZWZ1bHNldCAtbiBudmNmIGxsbS1yZXF1ZXN0LXJvdXRlcgprdWJlY3RsIGdldCBw" + + "b2RzIC1uIG52Y2YgfCBncmVwIC1FICdsbG0tYXBpLWdhdGV3YXl8bGxtLXJlcXVlc3Qtcm91dGVy" + + "JwprdWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIGxsbQprdWJlY3RsIC1uIG52Y2YtYmFj" + + "a2VuZCBnZXQgcG9kIDxmdW5jdGlvbi1wb2Q+IFwKICAtbyBqc29ucGF0aD0ne3JhbmdlIC5zcGVj" + + "LmNvbnRhaW5lcnNbPyhALm5hbWU9PSJsbG0td29ya2VyIildLmFyZ3NbKl19ey59eyJcXG4ifXtl" + + "bmR9JwpgYGAKCkZvciBsb2NhbCBwbGFpbnRleHQgY2x1c3RlcnMsIHRoZSBgbGxtLXdvcmtlcmAg" + + "YXJncyBtdXN0IGluY2x1ZGUKYC0tcXVpYy1pbnNlY3VyZWAuCgpGb3IgbG9hZC1iYWxhbmNlciBz" + + "Y2hlbWEgYW5kIGFsZ29yaXRobSBiZWhhdmlvciwgc2VlIHRoZQpbU3RhcmdhdGUgY29uZmlndXJh" + + "dGlvbiBndWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9zcmMv" + + "bGlicmFyaWVzL3J1c3Qvc3RhcmdhdGUvZG9jcy9sb2FkLWJhbGFuY2VyLWNvbmZpZ3VyYXRpb24u" + + "bWQpLgoKIyMgSGVsbWZpbGUgU2VsZWN0b3JzCgpUYXJnZXQgc3BlY2lmaWMgcmVsZWFzZXMgb3Ig" + + "Z3JvdXBzOgoKYGBgYmFzaAojIEJ5IHJlbGVhc2UgZ3JvdXAKSEVMTUZJTEVfRU5WPTxlbnY+IGhl" + + "bG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1kZXBlbmRlbmNpZXMgc3luYwpIRUxNRklM" + + "RV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIHN5" + + "bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1p" + + "bmdyZXNzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFz" + + "ZS1ncm91cD1vYnNlcnZhYmlsaXR5IHN5bmMKCiMgQnkgcmVsZWFzZSBuYW1lCkhFTE1GSUxFX0VO" + + "Vj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMKSEVMTUZJTEVf" + + "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHkgc3lu" + + "YwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWxsbS1yZXF1ZXN0" + + "LXJvdXRlciBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9" + + "bGxtLWFwaS1nYXRld2F5IHN5bmMKCiMgVGVtcGxhdGUgb25seSAoZHJ5IHJ1bikKSEVMTUZJTEVf" + + "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUKCiMg" + + "RGVzdHJveSBhIHNpbmdsZSByZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + + "bGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIGRlc3Ryb3kKYGBgCgpOb3RlOiBgYWRtaW4taXNzdWVyLXBy" + + "b3h5YCBoYXMgbm8gYHJlbGVhc2UtZ3JvdXBgIGxhYmVsLiBVc2UgYC0tc2VsZWN0b3IgbmFtZT1h" + + "ZG1pbi1pc3N1ZXItcHJveHlgLgpQSwcIsTUd2wIqAAACKgAAUEsDBBQACAAAAAAAIQAAAAAAAAAA" + + "AAAAAAA/AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9u" + + "dmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SIyBOVkNGIFVJIEFkZG9uCgpOVkNGIFVJIGlzIGFuIG9w" + + "dGlvbmFsLCBjdXN0b21lci1mYWNpbmcgTlZDRiBhZG1pbi1wYW5lbCBVSS4gSXQgaXMgZGlzYWJs" + + "ZWQgYnkKZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBp" + + "bmNsdWRlIHRoZSBOVkNGIFVJIGFkZG9uLgoKIyMgV2hlbiB0byBlbmFibGUKCkVuYWJsZSBOVkNG" + + "IFVJIG9ubHkgd2hlbiB5b3UgbmVlZCB0aGUgYWRtaW4tcGFuZWwgVUkgYW5kIHlvdXIgZXh0cmFj" + + "dGVkIHN0YWNrCnBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLiBJZiB0aGUgcGFja2FnZSBkb2Vz" + + "IG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UKYW5kIGBudmNmVWlgIHJvdXRlIHZhbHVl" + + "cywgc2tpcCB0aGUgYWRkb24gdW50aWwgeW91IHVzZSBhIHBhY2thZ2UgdGhhdCBpbmNsdWRlcwp0" + + "aGVtLgoKIyMgRW5hYmxlIHRoZSBhZGRvbgoKRW5hYmxlIGl0IGluIGBlbnZpcm9ubWVudHMvPGVu" + + "di1uYW1lPi55YW1sYDoKCmBgYHlhbWwKYWRkb25zOgogIG52Y2ZVaToKICAgIGVuYWJsZWQ6IHRy" + + "dWUKYGBgCgojIyBDcmVhdGUgbmFtZXNwYWNlIGFuZCBpbWFnZSBwdWxsIHNlY3JldAoKQ3JlYXRl" + + "IHRoZSBuYW1lc3BhY2UsIGFuZCBhbiBpbWFnZSBwdWxsIHNlY3JldCBvbmx5IGlmIHB1bGxpbmcg" + + "ZnJvbSBhIHByaXZhdGUKcmVnaXN0cnk6CgpgYGBiYXNoCmt1YmVjdGwgY3JlYXRlIG5hbWVzcGFj" + + "ZSBudmNmLXVpIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQoK" + + "IyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGUuZy4sIE5HQyBudmNy" + + "LmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmt1YmVjdGwgY3JlYXRlIHNlY3Jl" + + "dCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8g" + + "XAogIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogIC0tZG9ja2VyLXBhc3N3b3Jk" + + "PSIkTkdDX0FQSV9LRVkiIFwKICAtLW5hbWVzcGFjZT1udmNmLXVpIFwKICAtLWRyeS1ydW49Y2xp" + + "ZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KYGBgCgpUaGUgZGVmYXVsdCByb3V0ZSBo" + + "b3N0IGlzIGBudmNmLXVpLjxkb21haW4+YCBhbmQgdGhlIGJhY2tlbmQgaXMKYG52Y2YtdWkubnZj" + + "Zi11aTo4MzAwYC4KCiMjIEFwcGx5IHRoZSBzZXJ2aWNlIGFuZCByb3V0ZQoKQWZ0ZXIgY29uZmly" + + "bWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYG52Y2YtdWlgIHJlbGVhc2UsIHByZXZpZXcg" + + "YW5kIGFwcGx5CnRoZSBzZXJ2aWNlIGFuZCByb3V0ZToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxl" + + "bnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgdGVtcGxhdGUKSEVMTUZJ" + + "TEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgc3luYwpI" + + "RUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9" + + "aW5ncmVzcyBzeW5jCmBgYAoKIyMgVmVyaWZ5CgpWZXJpZnkgdGhlIHJvdXRlIG9ubHkgd2hlbiB0" + + "aGUgYWRkb24gaXMgcHJlc2VudCBhbmQgZW5hYmxlZDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgZGVw" + + "bG95LHN2YyAtbiBudmNmLXVpCmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgLWkgbnZj" + + "Zi11aQpjdXJsIC1pIC1IICJIb3N0OiBudmNmLXVpLjxkb21haW4+IiAiaHR0cDovLzxnYXRld2F5" + + "LWFkZHJlc3M+L3N0YXR1cyIKYGBgCgojIyBTZWN1cml0eQoKVGhlIE5WQ0YgVUkgYWRtaW4gcGFu" + + "ZWwgaXMgY3VycmVudGx5IHVuYXV0aGVudGljYXRlZC4gRG8gbm90IGV4cG9zZSBpdCB0byB0aGUK" + + "cHVibGljIGludGVybmV0LiBSZXN0cmljdCBhY2Nlc3MgdG8gYSB0cnVzdGVkIG5ldHdvcmssIFZQ" + + "Tiwgb3IgYW4gYXV0aGVudGljYXRpbmcKcHJveHkgaW4gZnJvbnQgb2YgdGhlIGBudmNmLXVpYCBy" + + "b3V0ZS4KUEsHCDj5J6+5BwAAuQcAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAPgAJAGRhdGEv" + + "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1k" + + "VVQFAAEAps4SIyBJbWFnZSBQdWxsIFNlY3JldHMgUmVmZXJlbmNlCgojIyBPdmVydmlldwoKV2hl" + + "biBwdWxsaW5nIE5WQ0YgaW1hZ2VzIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5IChmb3IgZXhhbXBs" + + "ZSwgTkdDCmBudmNyLmlvYCksIEt1YmVybmV0ZXMgbmVlZHMgYGltYWdlUHVsbFNlY3JldHNgIG9u" + + "IGV2ZXJ5IHBvZC4gQ29udHJvbC1wbGFuZSBhbmQKY29tcHV0ZS1wbGFuZSBjcmVkZW50aWFscyBh" + + "cmUgY29uZmlndXJlZCBpbiB0aGVpciBvd24gY2x1c3RlciBjb250ZXh0cy4gRG8gbm90CnVzZSBv" + + "bmUgbWl4ZWQgbmFtZXNwYWNlIGxpc3QuCgpUaGUgcmVjb21tZW5kZWQgY29udHJvbC1wbGFuZSBh" + + "cHByb2FjaCB1c2VzIEt5dmVybm8gdG8gaW5qZWN0IHRoZSBzZWNyZXQgaW50bwpjb250cm9sLXBs" + + "YW5lIHBvZHMgYXQgYWRtaXNzaW9uIHRpbWUuIFRoZSBjb21wdXRlLXBsYW5lIGNoYXJ0IGFuZCBv" + + "cGVyYXRvciB1c2UKdGhlIHNlY3JldCBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciBpdCB0" + + "byBgbnZjYS1zeXN0ZW1gLgoKIyMgS3l2ZXJubyBBcHByb2FjaCAoUmVjb21tZW5kZWQpCgojIyMg" + + "MS4gSW5zdGFsbCBLeXZlcm5vCgpgYGBiYXNoCmhlbG0gcmVwbyBhZGQga3l2ZXJubyBodHRwczov" + + "L2t5dmVybm8uZ2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUKaGVsbSBpbnN0YWxs" + + "IGt5dmVybm8ga3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUtbmFtZXNwYWNlIFwK" + + "ICAtLWt1YmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PgpgYGAKCiMjIyAyLiBDcmVh" + + "dGUgY29udHJvbC1wbGFuZSBwdWxsIHNlY3JldHMKCmBgYGJhc2gKZXhwb3J0IE5HQ19BUElfS0VZ" + + "PSI8eW91ci1uZ2MtYXBpLWtleT4iCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5" + + "c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8K" + + "ICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgbmFtZXNw" + + "YWNlICIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250" + + "ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQoKZm9yIG5zIGluIGNh" + + "c3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5" + + "c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + + "Y29udGV4dD4gY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAt" + + "LWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9r" + + "ZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNw" + + "YWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250" + + "ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQpgYGAKCkZvciBub24t" + + "TkdDIHJlZ2lzdHJpZXMsIHJlcGxhY2UgYC0tZG9ja2VyLXNlcnZlcmAsIGAtLWRvY2tlci11c2Vy" + + "bmFtZWAsIGFuZCBgLS1kb2NrZXItcGFzc3dvcmRgLgoKIyMjIDMuIEFwcGx5IEt5dmVybm8gQ2x1" + + "c3RlclBvbGljeQoKYGBgeWFtbAphcGlWZXJzaW9uOiBreXZlcm5vLmlvL3YxCmtpbmQ6IENsdXN0" + + "ZXJQb2xpY3kKbWV0YWRhdGE6CiAgbmFtZTogbnZjZi1hZGQtaW1hZ2VwdWxsc2VjcmV0cwpzcGVj" + + "OgogIGJhY2tncm91bmQ6IGZhbHNlCiAgcnVsZXM6CiAgICAtIG5hbWU6IGFkZC1pbWFnZXB1bGxz" + + "ZWNyZXQtdG8tbnZjZi1wb2RzCiAgICAgIG1hdGNoOgogICAgICAgIGFueToKICAgICAgICAtIHJl" + + "c291cmNlczoKICAgICAgICAgICAga2luZHM6CiAgICAgICAgICAgIC0gUG9kCiAgICAgICAgICAg" + + "IG5hbWVzcGFjZXM6CiAgICAgICAgICAgIC0gIm52Y2YiCiAgICAgICAgICAgIC0gImFwaS1rZXlz" + + "IgogICAgICAgICAgICAtICJzaXMiCiAgICAgICAgICAgIC0gImVzcyIKICAgICAgICAgICAgLSAi" + + "bmF0cy1zeXN0ZW0iCiAgICAgICAgICAgIC0gImNhc3NhbmRyYS1zeXN0ZW0iCiAgICAgICAgICAg" + + "IC0gInZhdWx0LXN5c3RlbSIKICAgICAgICAgICAgLSAiY2VydC1tYW5hZ2VyIgogICAgICBtdXRh" + + "dGU6CiAgICAgICAgcGF0Y2hTdHJhdGVnaWNNZXJnZToKICAgICAgICAgIG1ldGFkYXRhOgogICAg" + + "ICAgICAgICBhbm5vdGF0aW9uczoKICAgICAgICAgICAgICBudmNmLm52aWRpYS5jb20vaW1hZ2Vw" + + "dWxsc2VjcmV0LWluamVjdGVkLWJ5OiBreXZlcm5vCiAgICAgICAgICBzcGVjOgogICAgICAgICAg" + + "ICBpbWFnZVB1bGxTZWNyZXRzOgogICAgICAgICAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpg" + + "YGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IFwK" + + "ICAtZiBreXZlcm5vLWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAKCiMjIyA0LiBJbnN0" + + "YWxsIHRoZSBjb250cm9sIHBsYW5lCgpDb250aW51ZSB3aXRoIHRoZSBzZWxlY3RlZCBjb250cm9s" + + "LXBsYW5lIGluc3RhbGxhdGlvbiBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25d" + + "KGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4gTm8KY29udHJvbC1wbGFuZSBoZWxtZmls" + + "ZSBtb2RpZmljYXRpb25zIGFyZSBuZWVkZWQuIEt5dmVybm8gaW5qZWN0cyB0aGUgcHVsbApzZWNy" + + "ZXQgaW50byBuZXcgY29udHJvbC1wbGFuZSBwb2RzLgoKIyMgQ29tcHV0ZS1QbGFuZSBTZWNyZXQK" + + "CkNyZWF0ZSB0aGUgc2VjcmV0IG9ubHkgaW4gYG52Y2Etb3BlcmF0b3JgIG9uIHRoZSBjb21wdXRl" + + "IGNsdXN0ZXI6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + + "eHQ+IGNyZWF0ZSBuYW1lc3BhY2UgbnZjYS1vcGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAt" + + "byB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGFw" + + "cGx5IC1mIC0KCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGNyZWF0" + + "ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogIC0tZG9ja2VyLXNlcnZlcj1u" + + "dmNyLmlvIFwKICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAtLWRvY2tlci1w" + + "YXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgLS1uYW1lc3BhY2U9bnZjYS1vcGVyYXRvciBcCiAg" + + "LS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + + "LXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KYGBgCgpSZWZlcmVuY2UgaXQgaW4gdGhlIGNvbXB1" + + "dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZToKCmBgYHlhbWwKZ2xvYmFsOgogIGltYWdlUHVsbFNl" + + "Y3JldHM6CiAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpUaGUgY2hhcnQgYW5kIG9wZXJhdG9y" + + "IHVzZSB0aGF0IHJlZmVyZW5jZSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciB0aGUKc2Vj" + + "cmV0IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBjcmVhdGUgYSBicm9hZGVyIG1hbnVhbCBjb21w" + + "dXRlIG5hbWVzcGFjZSBsaXN0LiBGb2xsb3cKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0" + + "aW9uXShjb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkgZm9yIHRoZQpzZWxlY3RlZCBpbnN0" + + "YWxsIGZsb3cuCgojIyBWZXJpZmljYXRpb24KCmBgYGJhc2gKIyBDaGVjayB0aGF0IGEgY29udHJv" + + "bC1wbGFuZSBwb2QgaGFzIHRoZSBpbmplY3RlZCBzZWNyZXQKa3ViZWN0bCAtLWNvbnRleHQgPGNv" + + "bnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IFwK" + + "ICAtbyBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9JwojIEV4cGVjdGVkOiBbeyJu" + + "YW1lIjoibnZjci1jcmVkcyJ9XQoKIyBDaGVjayB0aGUgS3l2ZXJubyBhbm5vdGF0aW9uCmt1YmVj" + + "dGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBwb2QgLW4gPG5hbWVzcGFj" + + "ZT4gPHBvZC1uYW1lPiBcCiAgLW8ganNvbnBhdGg9J3subWV0YWRhdGEuYW5ub3RhdGlvbnMubnZj" + + "ZlwubnZpZGlhXC5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVkLWJ5fScKIyBFeHBlY3RlZDog" + + "a3l2ZXJubwoKIyBDaGVjayBwdWxsIGV2ZW50cwprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1w" + + "bGFuZS1jb250ZXh0PiBnZXQgZXZlbnRzIC1uIDxuYW1lc3BhY2U+IFwKICAtLXNvcnQtYnk9Jy5s" + + "YXN0VGltZXN0YW1wJyB8IGdyZXAgLWkgcHVsbAojIFNob3VsZCBzaG93ICJTdWNjZXNzZnVsbHkg" + + "cHVsbGVkIiBub3QgIjQwMSBVbmF1dGhvcml6ZWQiCgojIENoZWNrIHRoZSBjaGFydC9vcGVyYXRv" + + "ciBtaXJyb3Igb24gdGhlIGNvbXB1dGUgY2x1c3RlcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0" + + "ZS1wbGFuZS1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgXAogIC1uIG52Y2Etc3lzdGVt" + + "CmBgYAoKIyMgV2hlbiBQdWxsIFNlY3JldHMgQXJlIE5vdCBOZWVkZWQKCi0gKipBV1MgRUNSIHdp" + + "dGggSUFNIG5vZGUgcm9sZXMqKjogSWYgeW91ciBub2RlcyBoYXZlIGBBbWF6b25FQzJDb250YWlu" + + "ZXJSZWdpc3RyeVJlYWRPbmx5YCBJQU0gcG9saWN5LCBLdWJlcm5ldGVzIGNhbiBwdWxsIGZyb20g" + + "RUNSIHdpdGhvdXQgZXhwbGljaXQgc2VjcmV0cy4KLSAqKlB1YmxpYyByZWdpc3RyaWVzKio6IE5v" + + "IHB1bGwgc2VjcmV0cyBuZWVkZWQuCi0gKipDU1AgYnVpbHQtaW4gY3JlZGVudGlhbCBoZWxwZXJz" + + "Kio6IEdLRSBBcnRpZmFjdCBSZWdpc3RyeSwgQXp1cmUgQUNSIHdpdGggbWFuYWdlZCBpZGVudGl0" + + "eSwgYW5kIHNpbWlsYXIgc2VydmljZXMuCgojIyBUcm91Ymxlc2hvb3RpbmcKCiMjIyBQb2RzIHN0" + + "aWxsIGluIEltYWdlUHVsbEJhY2tPZmYgYWZ0ZXIgYXBwbHlpbmcgcG9saWN5CgpUaGUgS3l2ZXJu" + + "byBwb2xpY3kgb25seSBhZmZlY3RzIHBvZHMgY3JlYXRlZCAqKmFmdGVyKiogdGhlIHBvbGljeSBp" + + "cyBhcHBsaWVkLiBEZWxldGUgc3R1Y2sgcG9kcyB0byB0cmlnZ2VyIHJlY3JlYXRpb246CgpgYGBi" + + "YXNoCmt1YmVjdGwgLS1jb250ZXh0IDx0YXJnZXQtY29udGV4dD4gZGVsZXRlIHBvZHMgLW4gPG5h" + + "bWVzcGFjZT4gLS1hbGwKYGBgCgojIyMgS3l2ZXJubyBhZG1pc3Npb24gY29udHJvbGxlciBub3Qg" + + "cnVubmluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0" + + "PiBnZXQgcG9kcyAtbiBreXZlcm5vCiMgQWxsIHBvZHMgc2hvdWxkIGJlIFJ1bm5pbmcKYGBgCgoj" + + "IyMgUG9saWN5IG5vdCBtYXRjaGluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJv" + + "bC1wbGFuZS1jb250ZXh0PiBnZXQgY2x1c3RlcnBvbGljeSBudmNmLWFkZC1pbWFnZXB1bGxzZWNy" + + "ZXRzCiMgU2hvdWxkIHNob3cgUkVBRFk6IFRydWUKYGBgCgojIyMgV3Jvbmcgc2VjcmV0IG5hbWUK" + + "ClRoZSBwb2xpY3kgcmVmZXJlbmNlcyBgbnZjci1jcmVkc2AuIFZlcmlmeSB0aGUgc2VjcmV0IGV4" + + "aXN0cyB3aXRoIHRoYXQgZXhhY3QgbmFtZToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPHRh" + + "cmdldC1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgLW4gPG5hbWVzcGFjZT4KYGBgClBL" + + "BwhLQjWoABYAAAAWAABQSwECFAAUAAgAAAAAACEAbzWgxUoQAABKEAAAEgAJAAAAAAAAAAAAAAAA" + + "AAAAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAP9282dTYQAAU2EA" + + "ACMACQAAAAAAAAAAAAAAkxAAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQF" + + "AAEAps4SUEsBAhQAFAAIAAAAAAAhAGf9GA/8DAAA/AwAADMACQAAAAAAAAAAAAAAQHIAAGRhdGEv" + + "bnZjZi1zZWxmLW1hbmFnZWQtY2xpL2V4YW1wbGVzL2NpLXBpcGVsaW5lcy5tZFVUBQABAKbOElBL" + + "AQIUABQACAAAAAAAIQChFOOBXQwAAF0MAAA0AAkAAAAAAAAAAAAAAKZ/AABkYXRhL252Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9tdWx0aS1jbHVzdGVyLm1kVVQFAAEAps4SUEsBAhQAFAAI" + + "AAAAAAAhAEInSQ8FDQAABQ0AADcACQAAAAAAAAAAAAAAbowAAGRhdGEvbnZjZi1zZWxmLW1hbmFn" + + "ZWQtY2xpL3Byb21wdHMvYWRkLWNvbXB1dGUtcGxhbmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + + "ACEA1N6NNJ8ZAACfGQAAOQAJAAAAAAAAAAAAAADhmQAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1j" + + "bGkvcHJvbXB0cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAh" + + "ANJD3AQYJQAAGCUAADcACQAAAAAAAAAAAAAA8LMAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xp" + + "L3Byb21wdHMvZGVwbG95LWFuZC1pbnZva2UubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAcpIs" + + "Jr4OAAC+DgAAPQAJAAAAAAAAAAAAAAB22QAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJv" + + "bXB0cy9kaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBC" + + "ceYeASgAAAEoAAA6AAkAAAAAAAAAAAAAAKjoAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9w" + + "cm9tcHRzL2luc3RhbGwtZnJvbS1zY3JhdGNoLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAKrh" + + "OrnIBwAAyAcAADkACQAAAAAAAAAAAAAAGhEBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3By" + + "b21wdHMvcm90YXRlLWNsdXN0ZXItandrcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQDah2NW" + + "5CEAAOQhAAAuAAkAAAAAAAAAAAAAAFIZAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9t" + + "cHRzL3RlYXJkb3duLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAHIND2QhIwAAISMAADAACQAA" + + "AAAAAAAAAAAAmzsBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9jb21tYW5k" + + "cy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBzp1pk1QYAANUGAAAyAAkAAAAAAAAAAAAAACNf" + + "AQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZXhpdC1jb2Rlcy5tZFVUBQAB" + + "AKbOElBLAQIUABQACAAAAAAAIQDA1FCIwS4AAMEuAAAtAAkAAAAAAAAAAAAAAGFmAQBkYXRhL252" + + "Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZmxhZ3MubWRVVAUAAQCmzhJQSwECFAAUAAgA" + + "AAAAACEA864ThHQRAAB0EQAANwAJAAAAAAAAAAAAAACGlQEAZGF0YS9udmNmLXNlbGYtbWFuYWdl" + + "ZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAA" + + "IQARwxSTSWIAAEliAAAsAAkAAAAAAAAAAAAAAGinAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWlu" + + "c3RhbGxhdGlvbi9TS0lMTC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBHVWpWSlYAAEpWAAA0" + + "AAkAAAAAAAAAAAAAABQKAgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9ldmFs" + + "cy9ldmFscy5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAAJSTkB/KAAAfygAAC8ACQAAAAAA" + + "AAAAAAAAyWACAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL2V4YW1wbGVzLm1k" + + "VVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAJZjvFkSMAAAEjAAAEwACQAAAAAAAAAAAAAArokCAGRh" + + "dGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvY29tcHV0ZS1wbGFu" + + "ZS1pbnN0YWxsYXRpb24ubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAtXpwO7UwAAC1MAAAOwAJ" + + "AAAAAAAAAAAAAABDugIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJl" + + "bmNlcy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAsTUd2wIqAAACKgAARAAJ" + + "AAAAAAAAAAAAAABq6wIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJl" + + "bmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAOPknr7kH" + + "AAC5BwAAPwAJAAAAAAAAAAAAAADnFQMAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRp" + + "b24vcmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEtC" + + "NagAFgAAABYAAD4ACQAAAAAAAAAAAAAAFh4DAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + + "bGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SUEsFBgAAAAAXABcArwkA" + + "AIs0AwAAAA==" var ( skillDataOnce sync.Once diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 85bf2f3b41..84b8faef95 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -27,6 +27,7 @@ import ( "io" "net" "regexp" + "sort" "strconv" "strings" "time" @@ -99,11 +100,13 @@ type ClusterValidatorParams struct { // "compute-plane" (empty = compute-plane default). Passed to the Job as // VALIDATOR_ROLE. See clustervalidator.RoleControlPlane / RoleComputePlane. Role string - // Registries is a list of additional "host:port" registry endpoints to - // probe for reachability in the control-plane validator ConfigMap (in - // addition to nvcr.io which is always included). Ignored for the - // compute-plane role. - Registries []string + // Registries are probed for reachability by the control-plane validator: + // the same list, with the same criticality, the local credential check + // uses. Ignored for the compute-plane role. + Registries []RegistryEntry + // Env is passed to the validator container: namespace overrides, the + // probe image, and whether the control plane is expected to be installed. + Env map[string]string } // Err is non-nil only when the run failed to execute (RBAC bootstrap, @@ -133,12 +136,15 @@ func NewClusterValidator() ClusterValidator { if err != nil { return ClusterValidatorResult{Err: fmt.Errorf("building kubernetes client: %w", err)} } - return runClusterValidator(ctx, client, p.Image, p.PullSecret, p.NoCleanup, p.Role, p.Registries) + return runClusterValidator(ctx, client, p.Image, p.PullSecret, p.NoCleanup, p.Role, p.Registries, p.Env) } } // Testable core. Pass a fake clientset to unit-test without a real cluster. -func runClusterValidator(ctx context.Context, client kubernetes.Interface, image, pullSecret string, noCleanup bool, role string, registries []string) ClusterValidatorResult { +func runClusterValidator( + ctx context.Context, client kubernetes.Interface, image, pullSecret string, noCleanup bool, role string, + registries []RegistryEntry, env map[string]string, +) ClusterValidatorResult { if image == "" { // Defensive: callers gate on configured image before invoking the // validator, so this branch shouldn't fire in normal use. @@ -233,7 +239,7 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image // so a role-wide sweep could only ever hit an overlapping run's live Job. jobName := fmt.Sprintf("%s-%d", clusterValidatorName, time.Now().UnixNano()) job, err := client.BatchV1().Jobs(clusterValidatorNamespace).Create( - vctx, buildClusterValidatorJob(jobName, image, pullSecret, role, runID, noCleanup), metav1.CreateOptions{}, + vctx, buildClusterValidatorJob(jobName, image, pullSecret, role, runID, noCleanup, env), metav1.CreateOptions{}, ) if err != nil { return ClusterValidatorResult{RunID: runID, Err: fmt.Errorf("creating validator Job: %w", err)} @@ -304,6 +310,28 @@ func runClusterValidator(ctx context.Context, client kubernetes.Interface, image } } +// extraValidatorEnv returns env as container variables in a stable order, +// skipping empty values and any name the Job already sets, so an override can +// never change the role, the config name or preflight mode. +func extraValidatorEnv(base []corev1.EnvVar, env map[string]string) []corev1.EnvVar { + set := map[string]bool{} + for _, e := range base { + set[e.Name] = true + } + names := make([]string, 0, len(env)) + for k, v := range env { + if v != "" && !set[k] { + names = append(names, k) + } + } + sort.Strings(names) + out := make([]corev1.EnvVar, 0, len(names)) + for _, k := range names { + out = append(out, corev1.EnvVar{Name: k, Value: env[k]}) + } + return out +} + // ownedArtifact names a namespaced object the validator Job should own. type ownedArtifact struct{ kind, name string } @@ -398,8 +426,12 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface // DaemonSets: create/delete for the node-to-node DaemonSet probe; list to watch pod readiness. {APIGroups: []string{"apps"}, Resources: []string{"deployments", "statefulsets"}, Verbs: []string{"get", "list"}}, {APIGroups: []string{"apps"}, Resources: []string{"daemonsets"}, Verbs: []string{"get", "list", "create", "delete"}}, - // Gateway API: control-plane gateway and route health checks. - {APIGroups: []string{"gateway.networking.k8s.io"}, Resources: []string{"gatewayclasses", "gateways", "httproutes", "grpcroutes"}, Verbs: []string{"get", "list"}}, + // Gateway API: control-plane gateway and route health checks. The + // validator follows every NVCF route kind's parentRefs to learn + // which Gateways are NVCF's, so all four route kinds are read. + {APIGroups: []string{"gateway.networking.k8s.io"}, Resources: []string{ + "gatewayclasses", "gateways", "httproutes", "grpcroutes", "tcproutes", "udproutes", + }, Verbs: []string{"get", "list"}}, {NonResourceURLs: []string{"/readyz", "/version", "/healthz"}, Verbs: []string{"get"}}, }, } @@ -729,14 +761,9 @@ func newValidatorRunID() (string, error) { // controlPlaneValidatorConfigTemplate is the baseline network-check ConfigMap for // control-plane preflight: nvcr.io reachability (critical) and NetworkPolicy // enforcement (non-critical). Extra registries are appended as non-critical probes. -const controlPlaneValidatorConfigTemplate = `reachability: - endpoints: - - name: nvcr.io - host: nvcr.io - port: 443 - protocol: tcp+tls - critical: true -enforcement: +// controlPlaneValidatorEnforcementConfig follows the generated reachability +// section in the control-plane validator ConfigMap. +const controlPlaneValidatorEnforcementConfig = `enforcement: # Disabled for preflight. VALIDATOR_PREFLIGHT only suppresses the summary # write, so enforcement would still run: it creates netpol-validation # namespaces, server and client pods and NetworkPolicies, and pulls @@ -750,10 +777,9 @@ enforcement: ` // ensureClusterValidatorConfig creates or updates the network-check ConfigMap. -// extraRegistries are added as non-critical tcp+tls probes. Best-effort: the -// validator skips configurable checks when the ConfigMap is absent. -func ensureClusterValidatorConfig(ctx context.Context, client kubernetes.Interface, extraRegistries []string, runID string, preserve bool) error { - content := buildControlPlaneValidatorConfig(extraRegistries) +// Best-effort: the validator skips configurable checks when it is absent. +func ensureClusterValidatorConfig(ctx context.Context, client kubernetes.Interface, registries []RegistryEntry, runID string, preserve bool) error { + content := buildControlPlaneValidatorConfig(registries) desired := &corev1.ConfigMap{ ObjectMeta: metav1.ObjectMeta{ Name: clusterValidatorConfigRunName(runID), @@ -789,36 +815,33 @@ func ensureClusterValidatorConfig(ctx context.Context, client kubernetes.Interfa return nil } -// buildControlPlaneValidatorConfig assembles the network-check ConfigMap YAML -// from the baseline template plus any operator-supplied extra registries. -func buildControlPlaneValidatorConfig(extraRegistries []string) string { - if len(extraRegistries) == 0 { - return controlPlaneValidatorConfigTemplate - } - - // Parse host:port entries and append as non-critical tcp+tls endpoints. - var extra strings.Builder - for _, reg := range extraRegistries { - host, port := parseRegistryHostPort(reg) +// buildControlPlaneValidatorConfig assembles the network-check ConfigMap YAML. +// The reachability endpoints are the registries the install pulls from, as +// EnumerateRegistries resolved them for the local credential check, with the +// same criticality, so the two checks cannot disagree. A fixed critical +// nvcr.io entry failed every mirrored or air-gapped control plane, the exact +// install shape EnumerateRegistries deliberately does not send to nvcr.io. +// With no registries the section is omitted and the validator runs without +// configured reachability endpoints. +func buildControlPlaneValidatorConfig(registries []RegistryEntry) string { + var b strings.Builder + for _, reg := range registries { + host, port := parseRegistryHostPort(reg.Registry) if host == "" { continue } - // Append under the existing reachability.endpoints list. Quote the host: - // it comes from operator input, and parseRegistryHostPort passes a value - // it cannot split through verbatim. An unquoted "[" or embedded newline - // would make the whole ConfigMap unparseable, and the validator then - // silently drops every reachability and enforcement check. - fmt.Fprintf(&extra, - " - name: %q\n host: %q\n port: %d\n protocol: tcp+tls\n critical: false\n", - host, host, port) - } - if extra.Len() == 0 { - return controlPlaneValidatorConfigTemplate - } - - // Insert extra endpoints after the nvcr.io entry (before the enforcement block). - return strings.Replace(controlPlaneValidatorConfigTemplate, - "enforcement:", extra.String()+"enforcement:", 1) + if b.Len() == 0 { + b.WriteString("reachability:\n endpoints:\n") + } + // Quote the values: they come from operator input and the stack + // values. An unquoted "[" or embedded newline would make the whole + // ConfigMap unparseable, and the validator then silently drops every + // reachability and enforcement check. + fmt.Fprintf(&b, + " - name: %q\n host: %q\n port: %d\n protocol: tcp+tls\n critical: %t\n", + reg.Registry, host, port, reg.Critical) + } + return b.String() + controlPlaneValidatorEnforcementConfig } // parseRegistryHostPort splits a "host:port" string using net.SplitHostPort, @@ -835,8 +858,11 @@ func parseRegistryHostPort(s string) (host string, port int) { } h, p, err := net.SplitHostPort(s) if err != nil { - // No port present (e.g. "nvcr.io") - return the input as-is. - return s, 443 + // No port present (e.g. "nvcr.io"). Strip IPv6 brackets: the value + // goes into the validator ConfigMap as a bare host, and the validator + // brackets it itself with net.JoinHostPort, so "[fd00::1]" would be + // dialled as "[[fd00::1]]:443" and reported unreachable. + return strings.TrimSuffix(strings.TrimPrefix(s, "["), "]"), 443 } if p == "" { // Trailing colon with no port digit (e.g. "nvcr.io:") is the same typo. @@ -855,7 +881,7 @@ func parseRegistryHostPort(s string) (host string, port int) { // buildClusterValidatorJob creates the validator Job. PullIfNotPresent reuses // locally-imported images. VALIDATOR_PREFLIGHT=true skips the summary ConfigMap // write. VALIDATOR_ROLE selects the check set (control-plane vs compute-plane). -func buildClusterValidatorJob(name, image, pullSecret, role, runID string, noCleanup bool) *batchv1.Job { +func buildClusterValidatorJob(name, image, pullSecret, role, runID string, noCleanup bool, env map[string]string) *batchv1.Job { backoff := int32(0) // Pod shape mirrors deployments/nvca-operator/templates/cronjob.yaml, which // runs this same image. Two producers of one pod spec now exist in two @@ -904,6 +930,7 @@ func buildClusterValidatorJob(name, image, pullSecret, role, runID string, noCle }, }}, } + podSpec.Containers[0].Env = append(podSpec.Containers[0].Env, extraValidatorEnv(podSpec.Containers[0].Env, env)...) if pullSecret != "" { podSpec.ImagePullSecrets = []corev1.LocalObjectReference{{Name: pullSecret}} } diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go index ce910620e0..b0595aba11 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go @@ -137,7 +137,7 @@ func TestRunClusterValidator_HappyPathLeavesNothingBehind(t *testing.T) { client := lifecycleClient(succeeded, "") res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", - "", false, clusterValidatorControlPlaneRole, nil) + "", false, clusterValidatorControlPlaneRole, nil, nil) require.NoError(t, res.Err) require.NotEmpty(t, res.RunID) assert.Empty(t, leftovers(t, client, res.RunID)) @@ -152,7 +152,7 @@ func TestRunClusterValidator_FailedBootstrapLeavesNothingBehind(t *testing.T) { }) res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", - "", false, clusterValidatorComputePlaneRole, nil) + "", false, clusterValidatorComputePlaneRole, nil, nil) require.Error(t, res.Err) sas, err := client.CoreV1().ServiceAccounts(clusterValidatorNamespace).List(context.Background(), metav1.ListOptions{}) require.NoError(t, err) @@ -167,7 +167,7 @@ func TestRunClusterValidator_PullFailureLeavesNothingBehind(t *testing.T) { client := lifecycleClient(running, "ImagePullBackOff") res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", - "", false, clusterValidatorControlPlaneRole, nil) + "", false, clusterValidatorControlPlaneRole, nil, nil) require.Error(t, res.Err) assert.Empty(t, leftovers(t, client, res.RunID)) deleted := false @@ -189,7 +189,7 @@ func TestRunClusterValidator_RunningPodKeepsRBACAndJobOwnsArtifacts(t *testing.T defer cancel() res := runClusterValidator(ctx, client, "nvcr.io/nvidia/validator:1", - "", false, clusterValidatorControlPlaneRole, nil) + "", false, clusterValidatorControlPlaneRole, nil, nil) require.Error(t, res.Err) left := leftovers(t, client, res.RunID) assert.Len(t, left["ServiceAccount"], 1, "a running pod must keep its RBAC") @@ -226,7 +226,7 @@ func TestRunClusterValidator_SparesConcurrentSameRoleSecret(t *testing.T) { require.NoError(t, err) res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", - "", false, clusterValidatorComputePlaneRole, nil) + "", false, clusterValidatorComputePlaneRole, nil, nil) require.NoError(t, res.Err) _, err = client.CoreV1().Secrets(clusterValidatorNamespace).Get(context.Background(), other.Name, metav1.GetOptions{}) assert.NoError(t, err, "another run's Secret must survive this run's sweep") @@ -239,7 +239,7 @@ func TestRunClusterValidator_NoCleanupKeepsRunAndPrintsTheCommand(t *testing.T) client := lifecycleClient(succeeded, "") res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", - "", true, clusterValidatorControlPlaneRole, nil) + "", true, clusterValidatorControlPlaneRole, nil, nil) require.NoError(t, res.Err) left := leftovers(t, client, res.RunID) for _, kind := range []string{"ServiceAccount", "ClusterRole", "ClusterRoleBinding", "Secret", "ConfigMap"} { @@ -296,3 +296,66 @@ func TestSweepOrphanClusterValidatorRBAC_PreservedExpireAndLegacyIsSpared(t *tes _, err = client.BatchV1().Jobs(clusterValidatorNamespace).Get(ctx, clusterValidatorName+"-2", metav1.GetOptions{}) assert.NoError(t, err) } + +// Forwarded settings reach the container in a stable order, empty values are +// dropped, and nothing forwarded can override what the Job itself sets. +func TestBuildClusterValidatorJob_ForwardsEnvWithoutOverridingCore(t *testing.T) { + job := buildClusterValidatorJob("j", "img:1", "", clusterValidatorControlPlaneRole, "runid", false, map[string]string{ + "NVCF_OPENBAO_NAMESPACE": "openbao", + "VALIDATOR_POST_INSTALL": "true", + "VALIDATOR_ROLE": "compute-plane", + "NVCF_GATEWAY_NAMES": "", + }) + env := map[string]string{} + var order []string + for _, e := range job.Spec.Template.Spec.Containers[0].Env { + env[e.Name] = e.Value + order = append(order, e.Name) + } + assert.Equal(t, "openbao", env["NVCF_OPENBAO_NAMESPACE"]) + assert.Equal(t, "true", env["VALIDATOR_POST_INSTALL"]) + assert.Equal(t, clusterValidatorControlPlaneRole, env["VALIDATOR_ROLE"], "a forwarded value must not override the role") + _, hasEmpty := env["NVCF_GATEWAY_NAMES"] + assert.False(t, hasEmpty, "empty values are not forwarded") + assert.Equal(t, []string{"VALIDATOR_CONFIG_NAMESPACE", "VALIDATOR_CONFIG_NAME", "VALIDATOR_PREFLIGHT", + "VALIDATOR_ROLE", "NVCF_OPENBAO_NAMESPACE", "VALIDATOR_POST_INSTALL"}, order) +} + +// The validator discovers NVCF Gateways from every route kind and reads the +// Gateways' classes, so the CLI's ClusterRole must allow all of them. +func TestEnsureClusterValidatorRBAC_GrantsGatewayAPIReads(t *testing.T) { + client := fake.NewSimpleClientset() + require.NoError(t, ensureClusterValidatorRBAC(context.Background(), client, clusterValidatorControlPlaneRole, "runid", false)) + cr, err := client.RbacV1().ClusterRoles().Get(context.Background(), + clusterValidatorRBACName(clusterValidatorControlPlaneRole, "runid"), metav1.GetOptions{}) + require.NoError(t, err) + granted := map[string]bool{} + for _, r := range cr.Rules { + for _, g := range r.APIGroups { + if g != "gateway.networking.k8s.io" { + continue + } + for _, res := range r.Resources { + granted[res] = true + } + } + } + for _, res := range []string{"gateways", "httproutes", "grpcroutes", "tcproutes", "udproutes"} { + assert.True(t, granted[res], res) + } +} + +// The control-plane validator receives the enumerated registries and the +// forwarded env; the compute-plane one gets the env but no registries. +func TestClusterValidatorCheck_PassesRegistriesAndEnv(t *testing.T) { + var got ClusterValidatorParams + cv := func(_ context.Context, p ClusterValidatorParams) ClusterValidatorResult { + got = p + return ClusterValidatorResult{Passed: true} + } + regs := []RegistryEntry{{Registry: "harbor.corp.example"}} + env := map[string]string{"VALIDATOR_POST_INSTALL": "true"} + clusterValidatorCheck(cv, "", "img:1", "", false, validatorRoleControlPlane, regs, env).Run(context.Background()) + assert.Equal(t, regs, got.Registries) + assert.Equal(t, env, got.Env) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index 0acbb0b652..d41dd58887 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -104,7 +104,7 @@ func TestRunClusterValidator_EmptyImage(t *testing.T) { // branch is defensive. Verify it returns a clear error and makes // no API calls. client := fake.NewSimpleClientset() - res := runClusterValidator(context.Background(), client, "", "", false, "", nil) + res := runClusterValidator(context.Background(), client, "", "", false, "", nil, nil) require.Error(t, res.Err) assert.Contains(t, res.Err.Error(), "image is empty") assert.False(t, res.Passed) @@ -115,7 +115,7 @@ func TestClusterValidatorCheck_OrchestratorErrorStaysWarning(t *testing.T) { cv := func(_ context.Context, _ ClusterValidatorParams) ClusterValidatorResult { return ClusterValidatorResult{Err: fmt.Errorf("transient: API server unreachable")} } - r := clusterValidatorCheck(cv, "", "", "", false, "", nil).Run(context.Background()) + r := clusterValidatorCheck(cv, "", "", "", false, "", nil, nil).Run(context.Background()) assert.False(t, r.Passed) assert.Equal(t, "warning", r.Severity, "transient orchestrator failures should not fail the overall preflight") @@ -179,7 +179,7 @@ func TestRunClusterValidator_HappyPath(t *testing.T) { }, nil }) - res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false, "", nil) + res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false, "", nil, nil) require.NoError(t, res.Err, "happy path must not surface an error") assert.True(t, res.Passed, "Succeeded>0 maps to Passed=true") assert.Equal(t, int32(0), res.ExitCode) @@ -215,7 +215,7 @@ func TestRunClusterValidator_JobFailed(t *testing.T) { }) client.PrependReactor("list", "pods", podListReactor("")) - res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false, "", nil) + res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false, "", nil, nil) require.NoError(t, res.Err, "a clean Passed=false verdict must not set Err") assert.False(t, res.Passed, "Failed>0 maps to Passed=false") assert.NotEmpty(t, res.JobName, "JobName must be populated on failure for kubectl-logs follow-up") @@ -235,7 +235,7 @@ func TestRunClusterValidator_RBACNameCollisionIsNotAdopted(t *testing.T) { }) res := runClusterValidator(context.Background(), client, "nvcr.io/x/validator:1", - "", false, clusterValidatorControlPlaneRole, nil) + "", false, clusterValidatorControlPlaneRole, nil, nil) require.Error(t, res.Err, "a pre-existing object under our generated name must not be adopted") assert.Contains(t, res.Err.Error(), "bootstrapping validator RBAC") } @@ -360,7 +360,7 @@ func TestRunClusterValidator_ImagePullBackOffShortCircuits(t *testing.T) { }) start := time.Now() - res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false, "", nil) + res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false, "", nil, nil) elapsed := time.Since(start) require.Error(t, res.Err, "ImagePullBackOff must short-circuit the wait with an error") @@ -398,7 +398,7 @@ func TestRunClusterValidator_LogFetchSurvivesValidatorTimeout(t *testing.T) { client.PrependReactor("list", "pods", podListReactor("")) // Parent ctx stays alive for the entire run; only vctx expires. - res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false, "", nil) + res := runClusterValidator(context.Background(), client, "test-image:1.0", "", false, "", nil, nil) require.Error(t, res.Err, "wait must surface the deadline-exceeded error") assert.Contains(t, res.Err.Error(), "waiting for job", @@ -451,13 +451,13 @@ func TestRunClusterValidator_ContextCanceled(t *testing.T) { time.Sleep(50 * time.Millisecond) cancel() }() - res := runClusterValidator(ctx, client, "test-image:1.0", "", false, "", nil) + res := runClusterValidator(ctx, client, "test-image:1.0", "", false, "", nil, nil) require.Error(t, res.Err) assert.Contains(t, res.Err.Error(), "context") } func TestBuildClusterValidatorJobShape(t *testing.T) { - job := buildClusterValidatorJob("test-job", "img:1", "", "", "runid", false) + job := buildClusterValidatorJob("test-job", "img:1", "", "", "runid", false, nil) assert.Equal(t, "test-job", job.Name) assert.Equal(t, clusterValidatorNamespace, job.Namespace) @@ -499,7 +499,7 @@ func TestBuildClusterValidatorJobShape(t *testing.T) { } func TestBuildClusterValidatorJobShape_ValidatorRoleInEnv(t *testing.T) { - job := buildClusterValidatorJob("test-job", "img:1", "", clusterValidatorControlPlaneRole, "runid", false) + job := buildClusterValidatorJob("test-job", "img:1", "", clusterValidatorControlPlaneRole, "runid", false, nil) env := map[string]string{} for _, e := range job.Spec.Template.Spec.Containers[0].Env { env[e.Name] = e.Value @@ -509,19 +509,19 @@ func TestBuildClusterValidatorJobShape_ValidatorRoleInEnv(t *testing.T) { } func TestBuildClusterValidatorJobShape_WithPullSecret(t *testing.T) { - job := buildClusterValidatorJob("test-job", "img:1", "nvcr-pull-secret", "", "runid", false) + job := buildClusterValidatorJob("test-job", "img:1", "nvcr-pull-secret", "", "runid", false, nil) require.Len(t, job.Spec.Template.Spec.ImagePullSecrets, 1) assert.Equal(t, "nvcr-pull-secret", job.Spec.Template.Spec.ImagePullSecrets[0].Name) } func TestBuildClusterValidatorJobShape_NoPullSecret(t *testing.T) { - job := buildClusterValidatorJob("test-job", "img:1", "", "", "runid", false) + job := buildClusterValidatorJob("test-job", "img:1", "", "", "runid", false, nil) assert.Empty(t, job.Spec.Template.Spec.ImagePullSecrets, "empty pull-secret arg must not produce an empty-name ImagePullSecrets entry") } func TestBuildClusterValidatorJobShape_NoCleanup(t *testing.T) { - job := buildClusterValidatorJob("test-job", "img:1", "", "", "runid", true) + job := buildClusterValidatorJob("test-job", "img:1", "", "", "runid", true, nil) assert.Nil(t, job.Spec.TTLSecondsAfterFinished, "--no-cleanup must omit TTLSecondsAfterFinished so the Job persists for debugging") assert.Nil(t, job.Spec.ActiveDeadlineSeconds, @@ -598,32 +598,41 @@ func TestKubectlLogsHint_EmptyJob(t *testing.T) { "empty jobName must produce empty hint so callers can compose detail without conditionals") } -func TestBuildControlPlaneValidatorConfig_NoExtras(t *testing.T) { +// With no registries the reachability section is omitted rather than filled +// with a guess. +func TestBuildControlPlaneValidatorConfig_NoRegistries(t *testing.T) { got := buildControlPlaneValidatorConfig(nil) - assert.Equal(t, controlPlaneValidatorConfigTemplate, got, - "no extra registries must return the template unchanged") - assert.Contains(t, got, "nvcr.io", "nvcr.io must always be present") + assert.NotContains(t, got, "reachability:") + assert.NotContains(t, got, "nvcr.io", "no hardcoded nvcr.io endpoint") assert.Contains(t, got, "enforcement:", "enforcement block must be present") } -func TestBuildControlPlaneValidatorConfig_WithExtras(t *testing.T) { - got := buildControlPlaneValidatorConfig([]string{"harbor.company.internal:443", "ghcr.io:443"}) - assert.Contains(t, got, "harbor.company.internal") - assert.Contains(t, got, "ghcr.io") - assert.Contains(t, got, "nvcr.io", "nvcr.io must still be present alongside extras") - assert.Contains(t, got, "enforcement:", "enforcement block must still be present after extras") - // Extra registries must appear BEFORE enforcement. - harborIdx := strings.Index(got, "harbor.company.internal") - enforcementIdx := strings.Index(got, "enforcement:") - assert.Less(t, harborIdx, enforcementIdx, "extra registry endpoints must appear before the enforcement block") +// The endpoints are exactly the enumerated registries, with the same +// criticality. A mirrored install whose list has no nvcr.io must not be made +// to dial it: a fixed critical nvcr.io failed every such control plane. +func TestBuildControlPlaneValidatorConfig_FollowsEnumeratedRegistries(t *testing.T) { + got := buildControlPlaneValidatorConfig([]RegistryEntry{ + {Registry: "harbor.company.internal", Critical: false}, + {Registry: "registry.example:5000", Critical: true}, + }) + assert.NotContains(t, got, "nvcr.io") + assert.Contains(t, got, `host: "harbor.company.internal"`) + assert.Contains(t, got, `host: "registry.example"`) + assert.Contains(t, got, "port: 5000") + assert.Contains(t, got, "host: \"harbor.company.internal\"\n port: 443\n protocol: tcp+tls\n critical: false\n") + assert.Contains(t, got, "host: \"registry.example\"\n port: 5000\n protocol: tcp+tls\n critical: true\n") + assert.Less(t, strings.Index(got, "harbor.company.internal"), strings.Index(got, "enforcement:"), + "endpoints must appear before the enforcement block") + + ngc := buildControlPlaneValidatorConfig([]RegistryEntry{{Registry: "nvcr.io", Critical: true}}) + assert.Contains(t, ngc, `host: "nvcr.io"`) + assert.Contains(t, ngc, "critical: true", "an NGC install keeps nvcr.io critical") } func TestBuildControlPlaneValidatorConfig_InvalidRegistrySkipped(t *testing.T) { - // A blank entry is parsed as host="" -> skipped; only the valid entry appears. - got := buildControlPlaneValidatorConfig([]string{" ", "valid.registry.internal:5000"}) + got := buildControlPlaneValidatorConfig([]RegistryEntry{{Registry: " "}, {Registry: "valid.registry.internal:5000"}}) assert.Contains(t, got, "valid.registry.internal", "valid registry must appear") - // The blank entry must not add an empty host: line. - assert.NotContains(t, got, "host: \n", "blank entry must not produce an empty host line") + assert.NotContains(t, got, "host: \"\"", "blank entry must not produce an empty host") } func TestParseRegistryHostPort(t *testing.T) { @@ -821,7 +830,7 @@ func TestRunClusterValidator_NoCleanupKeepsPullSecretAndPriorJob(t *testing.T) { driveJobToSuccess(client) runClusterValidator(context.Background(), client, "nvcr.io/x/validator:1", - "", true /* noCleanup */, clusterValidatorControlPlaneRole, nil) + "", true /* noCleanup */, clusterValidatorControlPlaneRole, nil, nil) _, err := client.BatchV1().Jobs(clusterValidatorNamespace).Get( context.Background(), prior.Name, metav1.GetOptions{}) @@ -839,7 +848,7 @@ func TestRunClusterValidator_NoCleanupKeepsPullSecretAndPriorJob(t *testing.T) { // Either way the wait burns its full budget and the run leaks. func TestBuildClusterValidatorJob_MatchesChartPodShape(t *testing.T) { job := buildClusterValidatorJob("j", "nvcr.io/x/validator:1", "", - clusterValidatorControlPlaneRole, "runid", false) + clusterValidatorControlPlaneRole, "runid", false, nil) spec := job.Spec.Template.Spec require.NotNil(t, spec.SecurityContext, "pod security context is required under restricted") @@ -875,7 +884,7 @@ func TestBuildClusterValidatorJob_MatchesChartPodShape(t *testing.T) { // suppressed on that path by design, so the deadline is the only reclaim. func TestBuildClusterValidatorJob_SetsActiveDeadline(t *testing.T) { job := buildClusterValidatorJob("j", "nvcr.io/x/validator:1", "", - clusterValidatorControlPlaneRole, "runid", false) + clusterValidatorControlPlaneRole, "runid", false, nil) require.NotNil(t, job.Spec.ActiveDeadlineSeconds, "a Job with no deadline cannot terminate itself on a pull failure") assert.Greater(t, *job.Spec.ActiveDeadlineSeconds, int64(clusterValidatorTimeout/time.Second), @@ -1075,11 +1084,11 @@ func TestEnsureClusterValidatorConfig_NoPreserveMarkerByDefault(t *testing.T) { // the same role deletes it, while its ConfigMap, RBAC and pull secret survive. func TestBuildClusterValidatorJob_MarksPreservedRun(t *testing.T) { kept := buildClusterValidatorJob("j", "nvcr.io/x/v:1", "", - clusterValidatorControlPlaneRole, "runid", true) + clusterValidatorControlPlaneRole, "runid", true, nil) assert.Equal(t, "true", kept.Labels[clusterValidatorPreserveLabel]) ordinary := buildClusterValidatorJob("j", "nvcr.io/x/v:1", "", - clusterValidatorControlPlaneRole, "runid", false) + clusterValidatorControlPlaneRole, "runid", false, nil) assert.NotContains(t, ordinary.Labels, clusterValidatorPreserveLabel, "an ordinary run must stay sweepable") } diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index f0167a0d71..0ebb35d7d4 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -335,10 +335,13 @@ type RoleConfig struct { // scanned on the one topology where they sit on the same cluster. ExtraStaleNamespaces []string - // ClusterValidatorRegistries is an optional list of "host:port" registry - // endpoints added to the control-plane validator ConfigMap alongside the - // built-in nvcr.io probe. Ignored for the compute-plane validator. - ClusterValidatorRegistries []string + // ClusterValidatorRegistries are the registries the control-plane + // validator probes for reachability: the EnumerateRegistries result the + // local credential check also uses. Ignored for the compute-plane validator. + ClusterValidatorRegistries []RegistryEntry + + // ClusterValidatorEnv is passed to the validator container for both roles. + ClusterValidatorEnv map[string]string } // categorySpec groups a set of checks under a named category. Categories run @@ -444,6 +447,7 @@ func controlPlaneCheckCategory(rc RoleConfig) categorySpec { rc.ClusterValidatorNoCleanup, validatorRoleControlPlane, rc.ClusterValidatorRegistries, + rc.ClusterValidatorEnv, )) } return cat @@ -485,6 +489,7 @@ func computePlaneCheckCategory(rc RoleConfig) categorySpec { rc.ClusterValidatorNoCleanup, validatorRoleComputePlane, nil, // registries: compute-plane doesn't use the ConfigMap reachability list + rc.ClusterValidatorEnv, )) } return cat @@ -593,7 +598,10 @@ func nodeInotifyCheck(prober NodeInotifyProber, kubeContext string) binaryCheckS // clusterValidatorCheck runs the validator Job. Runner errors (RBAC/timeout) // are warning severity; validator failures are error. role selects the check // set via VALIDATOR_ROLE; registries extends the ConfigMap reachability list. -func clusterValidatorCheck(cv ClusterValidator, kubeContext, image, pullSecret string, noCleanup bool, role string, registries []string) binaryCheckSpec { +func clusterValidatorCheck( + cv ClusterValidator, kubeContext, image, pullSecret string, noCleanup bool, role string, + registries []RegistryEntry, env map[string]string, +) binaryCheckSpec { const id = "cluster-validator" return binaryCheckSpec{ ID: id, @@ -610,6 +618,7 @@ func clusterValidatorCheck(cv ClusterValidator, kubeContext, image, pullSecret s NoCleanup: noCleanup, Role: role, Registries: registries, + Env: env, }) r.Logs = result.Logs r.Detail = clusterValidatorDetail(kubeContext, result.JobName) diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go index debfb1863e..9336d8b798 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go @@ -233,17 +233,92 @@ type RegistryEntry struct { Critical bool } +// StackValues are the stack settings preflight needs, read from the stack's +// environment values with the same layering helmfile uses. +type StackValues struct { + // Found is true when at least one values file was read. + Found bool + // ImageRegistry is global.image.registry. The stack renders + // registry + "/" + repository, so it may carry a path. + ImageRegistry string + // ACMESolverRepository is certManager.acmesolver.image.repository. When + // unset the ACME solver keeps the chart's quay.io/jetstack default. + ACMESolverRepository string + // EnvoyGatewayNamespace is ingress.gatewayApi.controllerNamespace. + EnvoyGatewayNamespace string +} + +// LoadStackValues reads files in order and layers each over the previous, +// the way helmfile layers an environment file over base.yaml. Unreadable or +// malformed files are skipped. +func LoadStackValues(files []string) StackValues { + merged := map[string]any{} + found := false + for _, path := range files { + data, err := os.ReadFile(path) + if err != nil { + continue + } + var doc map[string]any + if err := yaml.Unmarshal(data, &doc); err != nil { + continue + } + found = true + mergeValues(merged, doc) + } + return StackValues{ + Found: found, + ImageRegistry: digString(merged, "global", "image", "registry"), + ACMESolverRepository: digString(merged, "certManager", "acmesolver", "image", "repository"), + EnvoyGatewayNamespace: digString(merged, "ingress", "gatewayApi", "controllerNamespace"), + } +} + +// mergeValues deep-merges src into dst: maps merge key by key, anything else +// in src replaces what dst held. +func mergeValues(dst, src map[string]any) { + for k, v := range src { + if sv, ok := v.(map[string]any); ok { + if dv, ok := dst[k].(map[string]any); ok { + mergeValues(dv, sv) + continue + } + } + dst[k] = v + } +} + +func digString(m map[string]any, keys ...string) string { + var cur any = m + for _, k := range keys { + mm, ok := cur.(map[string]any) + if !ok { + return "" + } + cur = mm[k] + } + s, _ := cur.(string) + return strings.TrimSpace(s) +} + // EnumerateRegistries builds the deduplicated list of registries to credential- -// check from the image ref, cert-manager (quay.io), the stack values file -// (global.image.registry), and operator-supplied extras. -func EnumerateRegistries(imageRef, stackValuesFile string, extras []string) []RegistryEntry { +// check from the image ref, cert-manager (quay.io), the stack values +// (global.image.registry), and operator-supplied extras. stackValuesFiles are +// layered in order (base.yaml first, then the environment file). +func EnumerateRegistries(imageRef string, stackValuesFiles []string, extras []string) []RegistryEntry { seen := make(map[string]bool) var out []RegistryEntry + stack := LoadStackValues(stackValuesFiles) - add := func(registry, repoHint string, critical bool) { + // add reports whether the registry is in the list, so a source only counts + // as having named a registry once its value passed validation. + add := func(registry, repoHint string, critical bool) bool { registry = strings.TrimSpace(registry) - if registry == "" || seen[registry] { - return + if registry == "" { + return false + } + if seen[registry] { + return true } // Every source goes through the same host validation. The probe builds // "https://" + registry + "/v2/", so a value carrying "/" or "@" moves @@ -253,10 +328,11 @@ func EnumerateRegistries(imageRef, stackValuesFile string, extras []string) []Re // parseRegistryHostPort; the image ref and the values file were not. if !isBareRegistryHost(strings.TrimSuffix(strings.TrimPrefix(registry, "["), "]")) && !isBareRegistryHost(registry) { - return + return false } seen[registry] = true out = append(out, RegistryEntry{Registry: registry, RepoHint: repoHint, Critical: critical}) + return true } // Source 1: base registry from the configured validator image. @@ -269,28 +345,27 @@ func EnumerateRegistries(imageRef, stackValuesFile string, extras []string) []Re // contacts this registry at pull time (ImagePullPolicy is IfNotPresent). imageNamedRegistry := false if reg, repo, _, ok := parseImageRef(imageRef); ok && reg != "" { - imageNamedRegistry = true - add(reg, repo, isNGCRegistry(reg)) + imageNamedRegistry = add(reg, repo, isNGCRegistry(reg)) } - // Source 2: read global.image.registry from the environment values file. - // This catches cases where the operator points at a custom NGC org or a - // staging environment that differs from the validator image's registry. - stackRegistry := "" - if stackValuesFile != "" { - stackRegistry = readGlobalImageRegistry(stackValuesFile) - if stackRegistry != "" { - // If it's an NGC registry, mark critical; customer mirrors are non-critical. - add(stackRegistry, "", isNGCRegistry(stackRegistry)) - } + // Source 2: global.image.registry from the stack values. This catches an + // operator pointing at a custom NGC org or a staging registry that differs + // from the validator image's. The stack renders registry + "/" + repository, + // so "harbor.corp.example/nvcf" is a valid value: probe its host and carry + // the path as the scope hint rather than rejecting the whole value. + stackNamedRegistry := false + if host, path, _ := strings.Cut(stack.ImageRegistry, "/"); host != "" { + // If it's an NGC registry, mark critical; customer mirrors are non-critical. + stackNamedRegistry = add(host, path, isNGCRegistry(host)) } - // Source 3: cert-manager, but only when the stack is not mirroring it. - // deploy/stacks/self-managed/global.yaml.gotmpl rewrites every cert-manager - // image to global.image.registry, so on a configured stack quay.io is never - // contacted and probing it is a pointless round trip. It is only reachable - // when no stack values file resolved. - if stackRegistry == "" { + // Source 3: cert-manager's ACME solver. global.yaml.gotmpl moves the + // controller images to the mirror, but the solver keeps the chart's + // quay.io/jetstack default unless certManager.acmesolver.image is set, so + // a mirrored site still pulls it from quay.io at its first HTTP-01 order. + // Probe quay.io unless the stack points the solver somewhere else. + if acme := stack.ACMESolverRepository; !stack.Found || acme == "" || + strings.HasPrefix(acme, certManagerRegistry+"/") { add(certManagerRegistry, "", false) } @@ -306,12 +381,9 @@ func EnumerateRegistries(imageRef, stackValuesFile string, extras []string) []Re reg := host if port != 0 && port != 443 { reg = net.JoinHostPort(host, strconv.Itoa(port)) - } else if strings.Contains(host, ":") && !strings.HasPrefix(host, "[") { - // Bare IPv6 literal on the default port. parseRegistryHostPort - // returns the input verbatim when SplitHostPort fails, and it - // fails on an already-bracketed "[fd00::1]" with missingPort, so - // without the prefix guard that arrives here still bracketed and - // becomes "[[fd00::1]]", which is not a parseable URL host. + } else if strings.Contains(host, ":") { + // IPv6 literal on the default port. parseRegistryHostPort returns + // it unbracketed, so bracket it once for the URL host. reg = "[" + host + "]" } add(reg, "", false) @@ -331,30 +403,9 @@ func EnumerateRegistries(imageRef, stackValuesFile string, extras []string) []Re // // Non-critical, unlike an NGC registry a source actually named. A guess // must not hard-fail the run, and this category has no opt-out flag. - if !imageNamedRegistry && stackRegistry == "" { + if !imageNamedRegistry && !stackNamedRegistry { add(ngcRegistry, "", false) } return out } - -// readGlobalImageRegistry reads the global.image.registry key from an -// environment values YAML file (e.g. environments/local.yaml). Returns "" -// on any error so the caller can safely ignore missing or malformed files. -func readGlobalImageRegistry(path string) string { - data, err := os.ReadFile(path) - if err != nil { - return "" - } - var vals struct { - Global struct { - Image struct { - Registry string `json:"registry" yaml:"registry"` - } `json:"image" yaml:"image"` - } `json:"global" yaml:"global"` - } - if err := yaml.Unmarshal(data, &vals); err != nil { - return "" - } - return strings.TrimSpace(vals.Global.Image.Registry) -} diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go index be9b35b494..e589752390 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go @@ -125,7 +125,7 @@ func TestProbeRegistryCredential_ECRSkipped(t *testing.T) { // -- EnumerateRegistries -- func TestEnumerateRegistries_FromImageRef(t *testing.T) { - entries := EnumerateRegistries("nvcr.io/nvidia/nvcf-byoc/cluster-validator:3.1.0", "", nil) + entries := EnumerateRegistries("nvcr.io/nvidia/nvcf-byoc/cluster-validator:3.1.0", nil, nil) require.NotEmpty(t, entries) found := false @@ -141,7 +141,7 @@ func TestEnumerateRegistries_FromImageRef(t *testing.T) { func TestEnumerateRegistries_RepoHintFromImageRef(t *testing.T) { // The RepoHint must be the repo path from the image ref so the token // exchange uses the operator's actual org, not a fake one. - entries := EnumerateRegistries("nvcr.io/nvidia/nvcf-byoc/cluster-validator:3.1.0", "", nil) + entries := EnumerateRegistries("nvcr.io/nvidia/nvcf-byoc/cluster-validator:3.1.0", nil, nil) for _, e := range entries { if e.Registry == "nvcr.io" { assert.Equal(t, "nvidia/nvcf-byoc/cluster-validator", e.RepoHint, @@ -155,7 +155,7 @@ func TestEnumerateRegistries_RepoHintFromImageRef(t *testing.T) { func TestEnumerateRegistries_IncludesCertManagerWhenStackIsNotMirroring(t *testing.T) { // With no stack values file there is no global.image.registry to mirror // cert-manager to, so its upstream registry is genuinely contacted. - entries := EnumerateRegistries("nvcr.io/some/image:1.0", "", nil) + entries := EnumerateRegistries("nvcr.io/some/image:1.0", nil, nil) found := false for _, e := range entries { if e.Registry == "quay.io" { @@ -167,7 +167,7 @@ func TestEnumerateRegistries_IncludesCertManagerWhenStackIsNotMirroring(t *testi } func TestEnumerateRegistries_ExtrasAppended(t *testing.T) { - entries := EnumerateRegistries("nvcr.io/some/image:1.0", "", + entries := EnumerateRegistries("nvcr.io/some/image:1.0", nil, []string{"harbor.company.internal:443", "ghcr.io:443"}) registries := make(map[string]bool, len(entries)) @@ -180,7 +180,7 @@ func TestEnumerateRegistries_ExtrasAppended(t *testing.T) { func TestEnumerateRegistries_NoDuplicates(t *testing.T) { // Pass nvcr.io both as the image registry and as an extra - must not dedup. - entries := EnumerateRegistries("nvcr.io/some/image:1.0", "", + entries := EnumerateRegistries("nvcr.io/some/image:1.0", nil, []string{"nvcr.io"}) count := 0 @@ -202,7 +202,7 @@ global: registry: stg.nvcr.io `))) - entries := EnumerateRegistries("nvcr.io/some/image:1.0", valuesPath, nil) + entries := EnumerateRegistries("nvcr.io/some/image:1.0", []string{valuesPath}, nil) found := false for _, e := range entries { if e.Registry == "stg.nvcr.io" { @@ -222,12 +222,12 @@ global: registry: nvcr.io repository: nvidia/nvcf-byoc `))) - got := readGlobalImageRegistry(path) + got := LoadStackValues([]string{path}).ImageRegistry assert.Equal(t, "nvcr.io", got) } func TestReadGlobalImageRegistry_MissingFile(t *testing.T) { - got := readGlobalImageRegistry("/nonexistent/path/values.yaml") + got := LoadStackValues([]string{"/nonexistent/path/values.yaml"}).ImageRegistry assert.Empty(t, got, "missing file must return empty string, not error") } @@ -235,7 +235,7 @@ func TestReadGlobalImageRegistry_MissingKey(t *testing.T) { dir := t.TempDir() path := dir + "/values.yaml" require.NoError(t, writeFile(path, []byte(`other: value`))) - got := readGlobalImageRegistry(path) + got := LoadStackValues([]string{path}).ImageRegistry assert.Empty(t, got, "missing global.image.registry must return empty string") } @@ -289,19 +289,22 @@ func writeFile(path string, data []byte) error { return os.WriteFile(path, data, 0o644) } -// The stack rewrites every cert-manager image to global.image.registry, so on -// a configured stack quay.io is never contacted at pull time and probing it is -// a pointless 10-second round trip on every invocation. -func TestEnumerateRegistries_SkipsCertManagerWhenStackMirrors(t *testing.T) { +// When the stack also mirrors the ACME solver, nothing it installs is pulled +// from quay.io, so probing it is a pointless 10-second round trip. +func TestEnumerateRegistries_SkipsCertManagerWhenSolverIsMirrored(t *testing.T) { dir := t.TempDir() valuesPath := dir + "/base.yaml" require.NoError(t, writeFile(valuesPath, []byte(` global: image: registry: mirror.company.internal +certManager: + acmesolver: + image: + repository: mirror.company.internal/jetstack/cert-manager-acmesolver `))) - entries := EnumerateRegistries("nvcr.io/some/image:1.0", valuesPath, nil) + entries := EnumerateRegistries("nvcr.io/some/image:1.0", []string{valuesPath}, nil) for _, e := range entries { assert.NotEqual(t, certManagerRegistry, e.Registry, "a stack mirroring images must not trigger a quay.io probe") @@ -310,7 +313,7 @@ global: // A bare IPv6 literal must stay bracketed or the probe URL is malformed. func TestEnumerateRegistries_BracketsIPv6Extras(t *testing.T) { - entries := EnumerateRegistries("nvcr.io/some/image:1.0", "", []string{"[::1]:5000"}) + entries := EnumerateRegistries("nvcr.io/some/image:1.0", nil, []string{"[::1]:5000"}) found := false for _, e := range entries { @@ -327,7 +330,7 @@ func TestEnumerateRegistries_BracketsIPv6Extras(t *testing.T) { // other source. Forcing it true makes an air-gapped install fail preflight for // a registry that is never contacted (ImagePullPolicy is IfNotPresent). func TestEnumerateRegistries_NonNGCImageRegistryIsNotCritical(t *testing.T) { - entries := EnumerateRegistries("mirror.company.internal/nvcf/cluster-validator:1.0", "", nil) + entries := EnumerateRegistries("mirror.company.internal/nvcf/cluster-validator:1.0", nil, nil) for _, e := range entries { if e.Registry == "mirror.company.internal" { assert.False(t, e.Critical, "a non-NGC mirror must not be forced critical") @@ -341,7 +344,7 @@ func TestEnumerateRegistries_NonNGCImageRegistryIsNotCritical(t *testing.T) { // and the run would report on quay.io alone, leaving the operator's NGC // credentials unchecked in what is the default configuration. func TestEnumerateRegistries_FallsBackToNGCWhenNothingNamesARegistry(t *testing.T) { - got := EnumerateRegistries("", "", nil) + got := EnumerateRegistries("", nil, nil) var ngc *RegistryEntry for i := range got { @@ -362,7 +365,7 @@ func TestEnumerateRegistries_NoNGCFallbackForAMirroredStack(t *testing.T) { require.NoError(t, os.WriteFile(values, []byte("global:\n image:\n registry: harbor.example.com\n"), 0o600)) - got := EnumerateRegistries("", values, nil) + got := EnumerateRegistries("", []string{values}, nil) for _, e := range got { assert.NotEqual(t, "nvcr.io", e.Registry, "a stack that named its own registry must not be probed against NGC") @@ -372,7 +375,7 @@ func TestEnumerateRegistries_NoNGCFallbackForAMirroredStack(t *testing.T) { // The fallback must not shadow or duplicate an NGC registry a source named, // which carries a repo hint and is critical. func TestEnumerateRegistries_FallbackDoesNotDuplicateNamedNGC(t *testing.T) { - got := EnumerateRegistries("nvcr.io/nvidia/nvcf-byoc/cluster-validator:1.0.0", "", nil) + got := EnumerateRegistries("nvcr.io/nvidia/nvcf-byoc/cluster-validator:1.0.0", nil, nil) n := 0 for _, e := range got { @@ -391,7 +394,7 @@ func TestEnumerateRegistries_FallbackDoesNotDuplicateNamedNGC(t *testing.T) { // which http.NewRequest rejects. The documented bracketed form must work. func TestEnumerateRegistries_DoesNotDoubleBracketIPv6(t *testing.T) { for _, in := range []string{"[fd00::1]", "fd00::1"} { - got := EnumerateRegistries("", "", []string{in}) + got := EnumerateRegistries("", nil, []string{in}) var found string for _, e := range got { if strings.Contains(e.Registry, "fd00") { @@ -403,7 +406,7 @@ func TestEnumerateRegistries_DoesNotDoubleBracketIPv6(t *testing.T) { } func TestEnumerateRegistries_KeepsBracketedIPv6WithPort(t *testing.T) { - got := EnumerateRegistries("", "", []string{"[fd00::1]:5000"}) + got := EnumerateRegistries("", nil, []string{"[fd00::1]:5000"}) var found string for _, e := range got { if strings.Contains(e.Registry, "fd00") { @@ -422,9 +425,123 @@ func TestEnumerateRegistries_RejectsHostMovingRegistryStrings(t *testing.T) { require.NoError(t, os.WriteFile(values, []byte("global:\n image:\n registry: nvcr.io@attacker.example.com\n"), 0o600)) - for _, e := range EnumerateRegistries("nvcr.io@evil.test/x/y:1", values, nil) { + for _, e := range EnumerateRegistries("nvcr.io@evil.test/x/y:1", []string{values}, nil) { assert.NotContains(t, e.Registry, "@", "a host-moving string must not be probed") assert.NotContains(t, e.Registry, "attacker.example.com") assert.NotContains(t, e.Registry, "evil.test") } } + +// helmfile layers the environment file over base.yaml, so an env file that +// overrides only the repository keeps base.yaml's registry, and an env file +// that sets a mirror replaces it. +func TestLoadStackValues_LayersEnvOverBase(t *testing.T) { + dir := t.TempDir() + base, env := dir+"/base.yaml", dir+"/airgap.yaml" + require.NoError(t, writeFile(base, []byte(` +global: + image: + registry: nvcr.io + repository: nvidia/nvcf-byoc +ingress: + gatewayApi: + controllerNamespace: envoy-gateway-system +`))) + require.NoError(t, writeFile(env, []byte(` +global: + image: + repository: other/repo +`))) + got := LoadStackValues([]string{base, env}) + assert.True(t, got.Found) + assert.Equal(t, "nvcr.io", got.ImageRegistry, "an env file that only overrides the repository keeps the base registry") + assert.Equal(t, "envoy-gateway-system", got.EnvoyGatewayNamespace) + + require.NoError(t, writeFile(env, []byte(` +global: + image: + registry: harbor.corp.example +`))) + assert.Equal(t, "harbor.corp.example", LoadStackValues([]string{base, env}).ImageRegistry) +} + +// A registry value carrying a path is valid for the stack, which renders +// registry + "/" + repository. It must still be probed, and it must still +// suppress the nvcr.io guess, rather than dropping the whole category. +func TestEnumerateRegistries_StackRegistryWithPath(t *testing.T) { + dir := t.TempDir() + values := dir + "/base.yaml" + require.NoError(t, writeFile(values, []byte(` +global: + image: + registry: harbor.corp.example/nvcf +certManager: + acmesolver: + image: + repository: harbor.corp.example/jetstack/cert-manager-acmesolver +`))) + got := EnumerateRegistries("", []string{values}, nil) + require.Len(t, got, 1) + assert.Equal(t, "harbor.corp.example", got[0].Registry) + assert.Equal(t, "nvcf", got[0].RepoHint) +} + +// A rejected registry value must not count as a source naming a registry: +// otherwise it suppresses the nvcr.io fallback and the category vanishes. +func TestEnumerateRegistries_RejectedValueDoesNotSuppressFallback(t *testing.T) { + dir := t.TempDir() + values := dir + "/base.yaml" + require.NoError(t, writeFile(values, []byte("global:\n image:\n registry: \"nvcr.io@evil.test\"\n"))) + got := EnumerateRegistries("", []string{values}, nil) + var names []string + for _, e := range got { + names = append(names, e.Registry) + } + assert.Contains(t, names, ngcRegistry) + assert.NotContains(t, names, "nvcr.io@evil.test") +} + +// quay.io depends on the ACME solver image, which the stack leaves on +// quay.io/jetstack unless it is overridden, not on whether a values file was +// found. +func TestEnumerateRegistries_QuayFollowsTheACMESolverImage(t *testing.T) { + dir := t.TempDir() + values := dir + "/base.yaml" + names := func() []string { + var out []string + for _, e := range EnumerateRegistries("", []string{values}, nil) { + out = append(out, e.Registry) + } + return out + } + require.NoError(t, writeFile(values, []byte("global:\n image:\n registry: harbor.corp.example\n"))) + assert.Contains(t, names(), certManagerRegistry, "a mirrored stack still pulls the default ACME solver from quay.io") + + require.NoError(t, writeFile(values, []byte( + "global:\n image:\n registry: harbor.corp.example\ncertManager:\n acmesolver:\n image:\n repository: harbor.corp.example/jetstack/acmesolver\n"))) + assert.NotContains(t, names(), certManagerRegistry, "a mirrored ACME solver never reaches quay.io") +} + +// "[fd00::1]" with no port must reach the ConfigMap unbracketed; the validator +// brackets it itself, and a double bracket is never reachable. +func TestParseRegistryHostPort_StripsIPv6Brackets(t *testing.T) { + host, port := parseRegistryHostPort("[fd00::1]") + assert.Equal(t, "fd00::1", host) + assert.Equal(t, 443, port) + got := EnumerateRegistries("", nil, []string{"[fd00::1]"}) + var names []string + for _, e := range got { + names = append(names, e.Registry) + } + assert.Contains(t, names, "[fd00::1]") +} + +// A validator image whose registry fails validation must not count as naming +// a registry either, or the nvcr.io fallback is suppressed with nothing probed. +func TestEnumerateRegistries_RejectedImageRegistryDoesNotSuppressFallback(t *testing.T) { + var names []string + for _, e := range EnumerateRegistries("user@evil.test/nvidia/validator:1", nil, nil) { + names = append(names, e.Registry) + } + assert.Contains(t, names, ngcRegistry) +} From af2c3c3052be231ac23f77d452d858a9689fdff1 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 30 Sep 2026 01:20:11 +0530 Subject: [PATCH 39/55] fix(nvcf-cli): count checks by one rule, scope stale namespaces and SIS to the requested roles, and read helper-stored credentials Signed-off-by: rohithb --- .../examples/ci-pipelines.md | 5 +- .../nvcf-self-managed-cli/reference/flags.md | 4 +- src/clis/nvcf-cli/cmd/self_hosted_check.go | 39 +- .../cmd/self_hosted_check_scope_test.go | 95 + .../nvcf-cli/cmd/self_hosted_helm_runtime.go | 2 +- .../agentskill/skilldata_generated.go | 6414 +++++++++-------- .../internal/selfhosted/credhelper_test.go | 99 + .../internal/selfhosted/helm_runtime.go | 4 +- .../nvcf-cli/internal/selfhosted/output.go | 8 +- .../nvcf-cli/internal/selfhosted/preflight.go | 93 +- .../internal/selfhosted/preflight_test.go | 14 + .../internal/selfhosted/progress/event.go | 7 +- .../selfhosted/progress/render_jsonl.go | 26 +- .../selfhosted/progress/render_plain.go | 4 +- .../selfhosted/progress/render_tty.go | 40 +- .../selfhosted/progress/render_tty_test.go | 23 + .../progress/testdata/jsonl_check.golden | 2 +- .../progress/testdata/plain_check.golden | 2 +- .../internal/selfhosted/registry_cred.go | 33 +- .../internal/selfhosted/stale_namespace.go | 22 +- .../selfhosted/stale_namespace_test.go | 40 +- .../internal/selfhosted/validatortag.go | 51 +- 22 files changed, 3695 insertions(+), 3332 deletions(-) create mode 100644 src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go create mode 100644 src/clis/nvcf-cli/internal/selfhosted/credhelper_test.go diff --git a/ai-tooling/user/skills/nvcf-self-managed-cli/examples/ci-pipelines.md b/ai-tooling/user/skills/nvcf-self-managed-cli/examples/ci-pipelines.md index ee36891ae5..a41e605e14 100644 --- a/ai-tooling/user/skills/nvcf-self-managed-cli/examples/ci-pipelines.md +++ b/ai-tooling/user/skills/nvcf-self-managed-cli/examples/ci-pipelines.md @@ -12,7 +12,7 @@ deploy_nvcf: variables: KUBECONFIG: $KUBECONFIG_FILE script: - - nvcf-cli self-hosted check --pre --json 2>&1 >/dev/null | grep '^{' | jq -se 'length > 0 and all(.[]; .event != "phase_failed")' || exit 2 + - nvcf-cli self-hosted check --pre --json 2>&1 >/dev/null | grep '^{' | jq -se 'any(.[]; .event == "final" and .success)' || exit 2 - nvcf-cli self-hosted up --cluster-name=$CLUSTER_NAME --token=$NVCF_ADMIN_JWT --non-interactive --json - nvcf-cli self-hosted status --json 2>&1 >/dev/null | grep '^{' | jq -se 'any(.[]; .verdict == "healthy")' ``` @@ -22,7 +22,8 @@ Notes: - `--non-interactive --token=$JWT` is required in CI; never use interactive `init`. - Always `--json` for machine-parsing. - `--json` writes JSONL to stderr, not stdout, so redirect with `2>&1 >/dev/null` before a parser. -- Slurp with `jq -s` before testing a condition. Without it `jq -e` takes its exit status from the last event alone, so a `phase_failed` followed by any other event still exits 0. +- `check` reports its verdict in one `final` event, with `success: false` when any check failed at error severity. Gate on that event: `check` never emits `phase_failed`, so a condition on it always passes. Requiring the `final` event also fails the step when the command dies before emitting it. +- Slurp with `jq -s` before testing a condition. Without it `jq -e` takes its exit status from the last event alone. - stderr also carries plain-text notices, so filter to JSON lines. Do not add `--show-logs` here: it appends a non-JSON transcript to the same stream. - Final status check gates downstream stages on `verdict == "healthy"`. diff --git a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md index 4a2a0df8d8..2f6a0c35c1 100644 --- a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md +++ b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md @@ -33,10 +33,10 @@ required. Each selects a role; only the selected roles contact a cluster. | Flag | Purpose | Default | |---|---|---| -| `--pre` | Pre-flight: local-host tools plus cluster readiness | `false` | +| `--pre` | Pre-flight: local-host tools plus cluster readiness. Skips SIS reachability, since SIS is not installed yet, unless `--all` or `--compute-plane` is also passed | `false` | | `--control-plane` | Control-plane checks | `false` | | `--compute-plane` | Compute-plane checks | `false` | -| `--all` | Every category | `false` | +| `--all` | Every category, including SIS reachability when combined with `--pre` | `false` | | `--cluster-name NAME` | Cluster name for compute-plane checks | - | | `--skip-inotify-check` | Skip the per-node inotify-limits probe. Needed when the kubeconfig user cannot create pods in `default`. Env: `NVCF_CLI_SELFHOSTED_SKIP_INOTIFY` | `false` | diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index 2f50b4da38..6e64c02d9b 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -518,12 +518,13 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin return selfhosted.RunPreflightForRole(ctx, cfg, selfhosted.RoleLocalOnly, selfhosted.RoleConfig{}, sink) } - // SIS reachability is a compute-plane concern, and it is skipped pre-install - // because SIS is not up yet. The previous `!checkPre` form was also true - // whenever --control-plane was passed, so a control-plane run fired an HTTP - // request at SIS that the operator never asked for. + // SIS reachability is a compute-plane concern. A bare --pre skips it + // because SIS is not up before install, but an explicit --all or + // --compute-plane still asks for it, as it always has. Requiring the + // compute plane to be targeted stops a --control-plane run from probing + // SIS, which the older `|| !checkPre` form did. icmsURL := "" - if computePlaneIsTargeted(mode) && !checkPre { + if computePlaneIsTargeted(mode) && (checkAll || checkComputePlane || !checkPre) { icmsURL = resolveICMSURL(selfHostedICMSURL) } @@ -642,17 +643,20 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin // Without that, a kai-scheduler or nvca-operator namespace wedged // Terminating by a failed teardown reports "no stale NVCF namespaces // detected" and the next install fails into it. + // Merged only when both roles run: a --control-plane run must not + // report a stuck kai-scheduler namespace, nor --compute-plane a stuck + // vault-system, which is the rule ModeSplit already follows. staleForControlPlane := staleNSProber staleForComputePlane := staleNSProber - var cpExtraNamespaces, gpuExtraNamespaces []string + var cpExtraNamespaces []string if runControlPlane { staleForComputePlane = nil - cpExtraNamespaces = selfhosted.ComputePlaneStaleNamespaces( - localStackDir(selfHostedComputePlaneStack)) + if runComputePlane { + cpExtraNamespaces = selfhosted.ComputePlaneStaleNamespaces( + localStackDir(selfHostedComputePlaneStack)) + } } else { staleForControlPlane = nil - gpuExtraNamespaces = selfhosted.ControlPlaneStaleNamespaces( - localStackDir(selfHostedControlPlaneStack)) } if runControlPlane { @@ -682,7 +686,6 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorEnv: validatorEnv, StaleNamespaceProber: staleForComputePlane, StackDir: localStackDir(selfHostedComputePlaneStack), - ExtraStaleNamespaces: gpuExtraNamespaces, } results = append(results, selfhosted.RunPreflightForRole(ctx, gpuCfg, selfhosted.RoleComputePlane, gpuRC, sink)...) @@ -763,17 +766,7 @@ func emitCheckFinal(ctx context.Context, sink progress.EventSink, results []self // process exited 0, so a CI gate on final.success broke for anyone whose // registry credentials live in a Docker credential helper. "warnings" is // already part of the documented Verdict vocabulary; it was never emitted. - var passed, failed, warned int - for _, r := range results { - switch { - case r.Passed: - passed++ - case isBlockingFailure(r): - failed++ - default: - warned++ - } - } + passed, failed, warned := selfhosted.CountResults(results) verdict := "ok" switch { case failed > 0: @@ -791,7 +784,7 @@ func emitCheckFinal(ctx context.Context, sink progress.EventSink, results []self } func isBlockingFailure(r selfhosted.CheckResult) bool { - return !r.Passed && r.Severity == selfhosted.SeverityError + return r.IsBlockingFailure() } // anyFailed returns true if any check failed at error severity. Warnings do diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go new file mode 100644 index 0000000000..41fc8df9a6 --- /dev/null +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go @@ -0,0 +1,95 @@ +/* +SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. +SPDX-License-Identifier: Apache-2.0 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cmd + +import ( + "bytes" + "context" + "net/http" + "net/http/httptest" + "sync" + "sync/atomic" + "testing" + + "github.com/stretchr/testify/assert" + + "nvcf-cli/internal/selfhosted" +) + +// runCheckRecording runs `self-hosted check` in ModeSingle with the given +// flags and returns the namespaces the stale-namespace probe was asked about +// and how many times SIS was contacted. +func runCheckRecording(t *testing.T, args ...string) (namespaces []string, sisHits int64) { + t.Helper() + resetCheckFlags(t) + var hits atomic.Int64 + sis := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + hits.Add(1) + w.WriteHeader(http.StatusOK) + })) + t.Cleanup(sis.Close) + t.Setenv("NVCF_ICMS_URL", sis.URL) + t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") + + var mu sync.Mutex + prev := newStaleNamespaceProberForSelfHosted + newStaleNamespaceProberForSelfHosted = func() selfhosted.StaleNamespaceProber { + return func(_ context.Context, _ string, ns []string) ([]selfhosted.StaleNamespace, error) { + mu.Lock() + defer mu.Unlock() + namespaces = append(namespaces, ns...) + return nil, nil + } + } + t.Cleanup(func() { newStaleNamespaceProberForSelfHosted = prev }) + + rootCmd.SetErr(&bytes.Buffer{}) + rootCmd.SetOut(&bytes.Buffer{}) + rootCmd.SetArgs(append([]string{"self-hosted", "check", "--skip-cluster-validation", "--json"}, args...)) + _ = rootCmd.Execute() + return namespaces, hits.Load() +} + +// Each role's namespaces are scanned only when that role runs. Merging both in +// for a single-role run reported a stuck kai-scheduler on --control-plane. +func TestCheck_StaleNamespacesFollowTheRequestedRoles(t *testing.T) { + ns, _ := runCheckRecording(t, "--control-plane") + assert.Contains(t, ns, "vault-system") + assert.NotContains(t, ns, "kai-scheduler", "--control-plane must not scan compute namespaces") + + ns, _ = runCheckRecording(t, "--compute-plane") + assert.Contains(t, ns, "kai-scheduler") + assert.NotContains(t, ns, "vault-system", "--compute-plane must not scan control-plane namespaces") + + ns, _ = runCheckRecording(t, "--all") + assert.Contains(t, ns, "vault-system") + assert.Contains(t, ns, "kai-scheduler", "--all scans both") +} + +// A bare --pre skips SIS, which is not up before install; an explicit --all or +// --compute-plane still asks for it; --control-plane never contacts it. +func TestCheck_SISReachabilityScope(t *testing.T) { + _, hits := runCheckRecording(t, "--pre") + assert.Zero(t, hits, "--pre alone is pre-install") + _, hits = runCheckRecording(t, "--pre", "--all") + assert.NotZero(t, hits, "--all asks for every category, --pre included") + _, hits = runCheckRecording(t, "--pre", "--compute-plane") + assert.NotZero(t, hits) + _, hits = runCheckRecording(t, "--control-plane") + assert.Zero(t, hits, "SIS is a compute-plane check") +} diff --git a/src/clis/nvcf-cli/cmd/self_hosted_helm_runtime.go b/src/clis/nvcf-cli/cmd/self_hosted_helm_runtime.go index 66aeaa4fbe..ec9b4939ae 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_helm_runtime.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_helm_runtime.go @@ -30,7 +30,7 @@ var resolveSelfHostedHelmRuntimeMode = func(ctx context.Context) (selfhosted.Hel Tools: selfHostedHelmRuntimePreflightTools(), }) for _, result := range results { - if !result.Passed && result.Severity == "error" { + if result.IsBlockingFailure() { return "", fmt.Errorf("%s: %s", result.ID, result.Message) } } diff --git a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go index 0db54fc1ad..c50b8202f9 100644 --- a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go +++ b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go @@ -31,14 +31,14 @@ import ( const skillDataZipBase64 = "" + "UEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAASAAkAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4S" + "ewogICJzY2hlbWFWZXJzaW9uIjogMSwKICAiZ2VuZXJhdGVkQXQiOiAiMTk3MC0wMS0wMVQwMDow" + - "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDM0MTAsCiAgImZp" + + "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDM3OTgsCiAgImZp" + "bGVzIjogWwogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvU0tJTEwu" + "bWQiLAogICAgICAic2hhMjU2IjogImFhOWY3ZTI0NmYzODA0YjMzNDNiNjU2MWU1YmNmZTdiYjcy" + "YjI0MDIxOTMzZTA0OWY4NWUwMDI4OTAzYmJmYTQiLAogICAgICAic2l6ZSI6IDI0OTE1CiAgICB9" + "LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvZXhhbXBsZXMvY2kt" + - "cGlwZWxpbmVzLm1kIiwKICAgICAgInNoYTI1NiI6ICJkMzM5M2VmOTVhZWRiYWE1NzBiY2JiZjQ3" + - "MzVkM2ZhYjI1MzY0MDdlM2U1NjdlZmMzNzhhOWVkM2JiYTJmMWNjIiwKICAgICAgInNpemUiOiAz" + - "MzI0CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvZXhh" + + "cGlwZWxpbmVzLm1kIiwKICAgICAgInNoYTI1NiI6ICI5OTMzYTc0ZGVhNGUxZGQ3ZWNiNzdjNjg4" + + "YTRlMTE3M2IwODE5MzgzNmMxODE2ZGI3NmYyOTYwOTkwN2VkZGJkIiwKICAgICAgInNpemUiOiAz" + + "NTQ5CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvZXhh" + "bXBsZXMvbXVsdGktY2x1c3Rlci5tZCIsCiAgICAgICJzaGEyNTYiOiAiNmRmMjg0NjBiNTgzNDNl" + "MjEwMjVhYTViZDc5ZjMzYjUxMmRjYTlmZjM5YjZhYjI2MDRmYzNmZWJiMDE1ODhiNCIsCiAgICAg" + "ICJzaXplIjogMzE2NQogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + @@ -71,9 +71,9 @@ const skillDataZipBase64 = "" + "ZW5jZS9leGl0LWNvZGVzLm1kIiwKICAgICAgInNoYTI1NiI6ICI2NGI1ZmE5YmNhZjBlMGE1M2Y3" + "ODkyMGI3M2ZjYjUzMGFiNjk0NTFiNDhhNWI0OTNmMjUyY2ExODU4M2FiMDg2IiwKICAgICAgInNp" + "emUiOiAxNzQ5CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1j" + - "bGkvcmVmZXJlbmNlL2ZsYWdzLm1kIiwKICAgICAgInNoYTI1NiI6ICJkZGU4MjJlYTNiNGZkMDc5" + - "M2RmNzgxNjFiYjBhOTQxYWI4ZGFjMDk1YjlmYjZkZTU5ZjU4YTVlOGUzZWE0YzMwIiwKICAgICAg" + - "InNpemUiOiAxMTk2OQogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + + "bGkvcmVmZXJlbmNlL2ZsYWdzLm1kIiwKICAgICAgInNoYTI1NiI6ICI1OTM1ZDkzNjE4ZGM5M2Qx" + + "OTM5ZGMxNmYzYWQ5NjRjOGRjOGY0YjllOTYxNzViNmQxM2QxM2Q3ZWY1YzM0OTE3IiwKICAgICAg" + + "InNpemUiOiAxMjEzMgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + "ZWQtY2xpL3JlZmVyZW5jZS90cm91Ymxlc2hvb3RpbmcubWQiLAogICAgICAic2hhMjU2IjogImE2" + "MzA4NGUyMjQ5ZjFkMTU0YzU5ODFlNGEwNzJiN2M3ODRiODVlYTE0NjA4NjUxNWVhYjRhYjY3MGE5" + "NDBlOTQiLAogICAgICAic2l6ZSI6IDQ0NjgKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogIm52" + @@ -103,7 +103,7 @@ const skillDataZipBase64 = "" + "aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9wdWxsLXNlY3Jl" + "dHMubWQiLAogICAgICAic2hhMjU2IjogImVjMWYzZmZjZDE3ZTVmOTU4M2ZlZTM5NzQ0ZWU4OTdk" + "NDY2YmMzY2Y2Mzg5Mjk0MjY0ZDg5ZTdmOWVkMDFiODciLAogICAgICAic2l6ZSI6IDU2MzIKICAg" + - "IH0KICBdCn0KUEsHCG81oMVKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + + "IH0KICBdCn0KUEsHCJeqZHVKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + "dGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQFAAEAps4SLS0tCm5hbWU6IG52Y2Yt" + "c2VsZi1tYW5hZ2VkLWNsaQpkZXNjcmlwdGlvbjogfAogIEluc3RhbGwsIG9wZXJhdGUsIGFuZCB0" + "ZWFyIGRvd24gc2VsZi1ob3N0ZWQgTlZJRElBIENsb3VkIEZ1bmN0aW9ucyAoTlZDRikKICBkZXBs" + @@ -551,2258 +551,3092 @@ const skillDataZipBase64 = "" + "MjE1ODY0OTc5L25jcC1kZXYvbnZjZi1jbGk6MS40LjAKICB2YXJpYWJsZXM6CiAgICBLVUJFQ09O" + "RklHOiAkS1VCRUNPTkZJR19GSUxFCiAgc2NyaXB0OgogICAgLSBudmNmLWNsaSBzZWxmLWhvc3Rl" + "ZCBjaGVjayAtLXByZSAtLWpzb24gMj4mMSA+L2Rldi9udWxsIHwgZ3JlcCAnXnsnIHwganEgLXNl" + - "ICdsZW5ndGggPiAwIGFuZCBhbGwoLltdOyAuZXZlbnQgIT0gInBoYXNlX2ZhaWxlZCIpJyB8fCBl" + - "eGl0IDIKICAgIC0gbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXAgLS1jbHVzdGVyLW5hbWU9JENMVVNU" + - "RVJfTkFNRSAtLXRva2VuPSROVkNGX0FETUlOX0pXVCAtLW5vbi1pbnRlcmFjdGl2ZSAtLWpzb24K" + - "ICAgIC0gbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzIC0tanNvbiAyPiYxID4vZGV2L251bGwg" + - "fCBncmVwICdeeycgfCBqcSAtc2UgJ2FueSguW107IC52ZXJkaWN0ID09ICJoZWFsdGh5IiknCmBg" + - "YAoKTm90ZXM6CgotIGAtLW5vbi1pbnRlcmFjdGl2ZSAtLXRva2VuPSRKV1RgIGlzIHJlcXVpcmVk" + - "IGluIENJOyBuZXZlciB1c2UgaW50ZXJhY3RpdmUgYGluaXRgLgotIEFsd2F5cyBgLS1qc29uYCBm" + - "b3IgbWFjaGluZS1wYXJzaW5nLgotIGAtLWpzb25gIHdyaXRlcyBKU09OTCB0byBzdGRlcnIsIG5v" + - "dCBzdGRvdXQsIHNvIHJlZGlyZWN0IHdpdGggYDI+JjEgPi9kZXYvbnVsbGAgYmVmb3JlIGEgcGFy" + - "c2VyLgotIFNsdXJwIHdpdGggYGpxIC1zYCBiZWZvcmUgdGVzdGluZyBhIGNvbmRpdGlvbi4gV2l0" + - "aG91dCBpdCBganEgLWVgIHRha2VzIGl0cyBleGl0IHN0YXR1cyBmcm9tIHRoZSBsYXN0IGV2ZW50" + - "IGFsb25lLCBzbyBhIGBwaGFzZV9mYWlsZWRgIGZvbGxvd2VkIGJ5IGFueSBvdGhlciBldmVudCBz" + - "dGlsbCBleGl0cyAwLgotIHN0ZGVyciBhbHNvIGNhcnJpZXMgcGxhaW4tdGV4dCBub3RpY2VzLCBz" + - "byBmaWx0ZXIgdG8gSlNPTiBsaW5lcy4gRG8gbm90IGFkZCBgLS1zaG93LWxvZ3NgIGhlcmU6IGl0" + - "IGFwcGVuZHMgYSBub24tSlNPTiB0cmFuc2NyaXB0IHRvIHRoZSBzYW1lIHN0cmVhbS4KLSBGaW5h" + - "bCBzdGF0dXMgY2hlY2sgZ2F0ZXMgZG93bnN0cmVhbSBzdGFnZXMgb24gYHZlcmRpY3QgPT0gImhl" + - "YWx0aHkiYC4KCiMjIEdpdE9wcyAoQXJnbyAvIEZsdXgpIHBhdHRlcm4KCkNJIGRvZXNuJ3QgYGt1" + - "YmVjdGwgYXBwbHlgIOKAlCBpbnN0ZWFkLCByZW5kZXIgbWFuaWZlc3RzLCBjb21taXQgdGhlbSwg" + - "bGV0IHRoZSBjb250cm9sbGVyIGFwcGx5LgoKYGBgeWFtbApyZW5kZXI6CiAgc2NyaXB0OgogICAg" + - "LSBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSAtLW5vLWFwcGx5" + - "ID4gcmVuZGVyZWQvY29udHJvbC1wbGFuZS55YW1sCiAgICAtIG52Y2YtY2xpIHNlbGYtaG9zdGVk" + - "IGluc3RhbGwgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPSROQU1FIC0tbm8tYXBwbHkg" + - "PiByZW5kZXJlZC9jb21wdXRlLXBsYW5lLnlhbWwKICAgIC0gZ2l0IGFkZCByZW5kZXJlZC8gJiYg" + - "Z2l0IGNvbW1pdCAtbSAiZGVwbG95IE5WQ0YgJFRBRyIgJiYgZ2l0IHB1c2gKYGBgCgpUaGVuIEFy" + - "Z29DRCBvciBGbHV4IHdhdGNoZXMgYHJlbmRlcmVkL2AgYW5kIGFwcGxpZXMuIFRoZSBDTEkgbmV2" + - "ZXIgdG91Y2hlcyB0aGUgY2x1c3RlciBkaXJlY3RseS4KCkZvciB0aGUgcmVnaXN0ZXIgc3RlcCAo" + - "d2hpY2ggbXV0YXRlcyBJQ01TLCBub3QganVzdCBLOHMpOgoKYGBgeWFtbApyZWdpc3RlcjoKICBz" + - "Y3JpcHQ6CiAgICAtIG52Y2YtY2xpIGNsdXN0ZXIgcmVnaXN0ZXIgLS1uYW1lPSROQU1FIC0tbmNh" + - "LWlkPSROQ0EgLS1yZWdpb249JFJFR0lPTiAtLWlnbm9yZS1leGlzdGluZwpgYGAKCmAtLWlnbm9y" + - "ZS1leGlzdGluZ2AgaXMgdGhlIEdpdE9wcy1mcmllbmRseSBpZGVtcG90ZW50IGNvbnRyYWN0LgoK" + - "IyMgTXVsdGktY2x1c3RlciBwaXBlbGluZQoKV2hlbiB0aGUgcGlwZWxpbmUgbWFuYWdlcyBtYW55" + - "IGNvbXB1dGUgY2x1c3RlcnMgYWdhaW5zdCBvbmUgY29udHJvbCBwbGFuZToKCmBgYHlhbWwKZGVw" + - "bG95X2NvbXB1dGVfcGxhbmVzOgogIHBhcmFsbGVsOgogICAgbWF0cml4OgogICAgICAtIENMVVNU" + - "RVI6IG5jcC1lYXN0LTEKICAgICAgICBDT05URVhUOiBhZG1pbkBncHUtZWFzdC0xCiAgICAgIC0g" + - "Q0xVU1RFUjogbmNwLXdlc3QtMQogICAgICAgIENPTlRFWFQ6IGFkbWluQGdwdS13ZXN0LTEKICAg" + - "ICAgLSBDTFVTVEVSOiBuY3AtZXUtMQogICAgICAgIENPTlRFWFQ6IGFkbWluQGdwdS1ldS0xCiAg" + - "c2NyaXB0OgogICAgLSBudmNmLWNsaSBzZWxmLWhvc3RlZCB1cAogICAgICAgIC0tY2x1c3Rlci1u" + - "YW1lPSRDTFVTVEVSCiAgICAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9JENPTlRFWFQKICAg" + - "ICAgICAtLWljbXMtdXJsPSRJQ01TX1BVQkxJQ19VUkwKICAgICAgICAtLXRva2VuPSROVkNGX0FE" + - "TUlOX0pXVAogICAgICAgIC0tbm9uLWludGVyYWN0aXZlCiAgICAgICAgLS1qc29uCmBgYAoKRWFj" + - "aCBwYXJhbGxlbCBqb2IgcmVnaXN0ZXJzICsgaW5zdGFsbHMgb25lIGNvbXB1dGUgcGxhbmUgYWdh" + - "aW5zdCB0aGUgc2hhcmVkIGNvbnRyb2wgcGxhbmUuIEZhaWx1cmVzIGFyZSBpc29sYXRlZC4KCiMj" + - "IFBsYW4tb25seSBwcmV2aWV3IGluIFBScwoKYGBgeWFtbApwcmV2aWV3OgogIHJ1bGVzOgogICAg" + - "LSBpZjogJENJX1BJUEVMSU5FX1NPVVJDRSA9PSAibWVyZ2VfcmVxdWVzdF9ldmVudCIKICBzY3Jp" + - "cHQ6CiAgICAtIHwKICAgICAgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXAgXAogICAgICAgIC0tY2x1" + - "c3Rlci1uYW1lPSRDTFVTVEVSX05BTUUgXAogICAgICAgIC0tcGxhbi1vbmx5IFwKICAgICAgICAt" + - "LWpzb24gfCB0ZWUgcGxhbi5qc29ubAogICAgLSBqcSAtcyAnLlswXScgcGxhbi5qc29ubCA+IHBs" + - "YW4uanNvbgogICAgLSAnZ2l0bGFiLW1yLWNvbW1lbnQgIiMjIE5WQ0YgZGVwbG95IHBsYW5cblxu" + - "XGBcYFxganNvblxuJChjYXQgcGxhbi5qc29uKVxuXGBcYFxgIicKYGBgCgpgLS1wbGFuLW9ubHlg" + - "IGV4aXRzIDAgd2l0aG91dCBjaGFuZ2luZyBjbHVzdGVyIHN0YXRlOyB0aGUgSlNPTkwgb3V0cHV0" + - "IGxpc3RzIGVhY2ggcGhhc2UgKyBFVEEuIFJlbmRlcnMgbmljZWx5IGFzIGFuIE1SIGNvbW1lbnQu" + - "ClBLBwhn/RgP/AwAAPwMAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADQACQBkYXRhL252Y2Yt" + - "c2VsZi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9tdWx0aS1jbHVzdGVyLm1kVVQFAAEAps4SIyBNdWx0" + - "aS1jbHVzdGVyIHBhdHRlcm5zCgpFeGFtcGxlcyBvZiBzcGxpdC1jbHVzdGVyICsgbWFueS1jb21w" + - "dXRlLXBsYW5lIG9wZXJhdGlvbi4KCiMjIE9uZSBjb250cm9sIHBsYW5lICsgTiBjb21wdXRlIHBs" + - "YW5lcwoKVGhlIGNhbm9uaWNhbCBtdWx0aS1jbHVzdGVyIHRvcG9sb2d5LiBFYWNoIGNvbXB1dGUg" + - "cGxhbmUgaXMgcmVnaXN0ZXJlZCBzZXBhcmF0ZWx5OgoKYGBgc2gKIyAxLiBCcmluZyB1cCB0aGUg" + - "Y29udHJvbCBwbGFuZSAob25lLXRpbWUsIG9uIHRoZSBjb250cm9sLXBsYW5lIGNsdXN0ZXIpOgpL" + - "VUJFQ09ORklHPWNwLnlhbWwgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgaW5zdGFsbCAtLWNvbnRyb2wt" + - "cGxhbmUgfCBrdWJlY3RsIGFwcGx5IC1mIC0KbnZjZi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1j" + - "b250cm9sLXBsYW5lIC0td2FpdCA1bQoKIyAyLiBSZWdpc3RlciArIGluc3RhbGwgZWFjaCBjb21w" + - "dXRlIHBsYW5lOgpmb3IgQ1RYIGluIGFkbWluQGdwdS1lYXN0LTEgYWRtaW5AZ3B1LXdlc3QtMSBh" + - "ZG1pbkBncHUtZXUtMTsgZG8KICBOQU1FPSQoZWNobyAiJENUWCIgfCBjdXQgLWRAIC1mMikKICBu" + - "dmNmLWNsaSBzZWxmLWhvc3RlZCB1cCBcCiAgICAtLWNsdXN0ZXItbmFtZT0kTkFNRSBcCiAgICAt" + - "LWNvbXB1dGUtcGxhbmUtY29udGV4dD0kQ1RYIFwKICAgIC0taWNtcy11cmw9aHR0cHM6Ly9pY21z" + - "Lm52Y2YuZXhhbXBsZS5jb20gXAogICAgLS10b2tlbj0kTlZDRl9BRE1JTl9KV1QgXAogICAgLS1u" + - "b24taW50ZXJhY3RpdmUgXAogICAgLS1qc29uCmRvbmUKCiMgMy4gVmVyaWZ5IGFsbCBjb21wdXRl" + - "IHBsYW5lcyByZWdpc3RlcmVkOgpudmNmLWNsaSBjbHVzdGVyIGxpc3QtcmVnaXN0ZXJlZCAtLW5j" + - "YS1pZD0kTkNBX0lEIC0taWNtcy11cmw9JElDTVMgLS1qc29uIFwKICB8IGpxICcuY2x1c3RlcnNb" + - "XSB8IHtuYW1lOiAuY2x1c3Rlck5hbWUsIHN0YXR1cywgbnZjYVZlcnNpb259JwpgYGAKCiMjIENv" + - "bXB1dGUtcGxhbmUtb25seSBvcGVyYXRvciBzY2VuYXJpbwoKVGhlIG9wZXJhdG9yIGhhcyBrdWJl" + - "Y3RsIGFjY2VzcyB0byBPTkUgY29tcHV0ZSBwbGFuZSBvbmx5IOKAlCB0aGUgY29udHJvbCBwbGFu" + - "ZSBpcyBvcGVyYXRlZCBieSBzb21lb25lIGVsc2UgKGUuZy4gWW90dGEgcnVucyB0aGUgY29udHJv" + - "bCBwbGFuZSBmb3IgYSBjdXN0b21lcikuCgpgYGBzaAojIE1pbnQgYSB0b2tlbiB2aWEgdGhlIHB1" + - "YmxpYyBhcGkgZ2F0ZXdheSAodGhlIGNvbnRyb2wgcGxhbmUncyBBUEkgS2V5cwojIHNlcnZpY2Ug" + - "aXMgcmVhY2hhYmxlIHZpYSBhcGkubnZjZi5leGFtcGxlLmNvbSDigJQgbm8ga3ViZWN0bCBhY2Nl" + - "c3MgbmVlZGVkKToKbnZjZi1jbGkgaW5pdCAtLWFwaS11cmw9aHR0cHM6Ly9hcGkubnZjZi5leGFt" + - "cGxlLmNvbQoKIyBSdW4gcHJlLWZsaWdodCBzY29wZWQgdG8gdGhlIGNvbXB1dGUgcGxhbmUgb25s" + - "eToKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1wcmUgXAogIC0tY29tcHV0ZS1wbGFuZS1j" + - "b250ZXh0PWFkbWluQGdwdTEgXAogIC0taWNtcy11cmw9aHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBs" + - "ZS5jb20gXAogIC0tanNvbgoKIyBCcmluZyB1cCBqdXN0IHRoZSBjb21wdXRlIHBsYW5lOgpudmNm" + - "LWNsaSBzZWxmLWhvc3RlZCB1cCBcCiAgLS1jbHVzdGVyLW5hbWU9bXktY29tcHV0ZS0xIFwKICAt" + - "LWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAtLWljbXMtdXJsPWh0dHBzOi8v" + - "aWNtcy5udmNmLmV4YW1wbGUuY29tIFwKICAtLXRva2VuPSRBRE1JTl9KV1QgXAogIC0tbm9uLWlu" + - "dGVyYWN0aXZlCgojIFN0YXR1cyAoY29tcHV0ZS1vbmx5IOKAlCBvcGVyYXRvciBjYW4ndCBzZWUg" + - "Y29udHJvbC1wbGFuZSBjb21wb25lbnQgaGVhbHRoKToKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3Rh" + - "dHVzIFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAtLWljbXMtdXJs" + - "PWh0dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUuY29tCmBgYAoKIyMgRnVuY3Rpb25zIHRhcmdldGlu" + - "ZyBzcGVjaWZpYyBjb21wdXRlIHBsYW5lcwoKV2hlbiB5b3UgaGF2ZSBtdWx0aXBsZSBjb21wdXRl" + - "IHBsYW5lcyBhbmQgd2FudCBhIGZ1bmN0aW9uIHRvIGRlcGxveSB0byBvbmU6CgpgYGBqc29uCnsK" + - "ICAiZnVuY3Rpb25JZCI6ICI8Zm5faWQ+IiwKICAidmVyc2lvbklkIjogIjx2ZXJfaWQ+IiwKICAi" + - "ZGVwbG95bWVudFNwZWNpZmljYXRpb25zIjogW3sKICAgICJncHUiOiAiSDEwMCIsCiAgICAiaW5z" + - "dGFuY2VUeXBlIjogIk5DUC5HUFUuSDEwMF8xeCIsCiAgICAibWluSW5zdGFuY2VzIjogMSwKICAg" + - "ICJtYXhJbnN0YW5jZXMiOiAxLAogICAgImNsdXN0ZXJzIjogWyJncHUtZWFzdC0xIl0KICB9XQp9" + - "CmBgYAoKVGhlIGBjbHVzdGVyc2AgYXJyYXkgKHVzaW5nIGNsdXN0ZXIgbmFtZXMsIG5vdCBJRHMp" + - "IGxpbWl0cyBzY2hlZHVsaW5nIHRvIHRob3NlIGNvbXB1dGUgcGxhbmVzLiBPbWl0IHRvIGxldCBJ" + - "Q01TIGNob29zZSBhbnkgY29tcHV0ZSBwbGFuZSB3aXRoIGEgbWF0Y2hpbmcgU0tVLgoKIyMgU3Rh" + - "dHVzIGZhbi1vdXQgYWNyb3NzIGNvbXB1dGUgcGxhbmVzCgpgYGBzaAojIExpc3QgYWxsIHJlZ2lz" + - "dGVyZWQgY29tcHV0ZSBwbGFuZXM6Cm52Y2YtY2xpIGNsdXN0ZXIgbGlzdC1yZWdpc3RlcmVkIC0t" + - "bmNhLWlkPSROQ0FfSUQgLS1pY21zLXVybD0kSUNNUyAtLWpzb24gXAogIHwganEgLXIgJy5jbHVz" + - "dGVyc1tdLmNsdXN0ZXJOYW1lJyA+IGNsdXN0ZXJzLnR4dAoKIyBTdGF0dXMgc25hcHNob3QgcGVy" + - "IGNvbXB1dGUgcGxhbmUgKGFzc3VtaW5nIGVhY2ggY29udGV4dCBuYW1lIG1hdGNoZXMpOgp3aGls" + - "ZSByZWFkIE5BTUU7IGRvCiAgZWNobyAiPT09ICROQU1FID09PSIKICBudmNmLWNsaSBzZWxmLWhv" + - "c3RlZCBzdGF0dXMgXAogICAgLS1jbHVzdGVyLW5hbWU9JE5BTUUgXAogICAgLS1jb21wdXRlLXBs" + - "YW5lLWNvbnRleHQ9YWRtaW5AJE5BTUUgXAogICAgLS1qc29uIHwganEgLWMgJ3tjbHVzdGVyOi5j" + - "bHVzdGVyLCB2ZXJkaWN0Oi52ZXJkaWN0LCByZWNvbmNpbGU6LnJlY29uY2lsZUFnZVNlY30nCmRv" + - "bmUgPCBjbHVzdGVycy50eHQKYGBgCgpBIGZ1dHVyZSBNKzExIG1pbGVzdG9uZSB3aWxsIGFkZCBu" + - "YXRpdmUgZmFuLW91dCAoYHN0YXR1cyAtLWFsbC1jb21wdXRlLXBsYW5lc2ApIHNvIHRoaXMgZG9l" + - "c24ndCBuZWVkIGEgc2hlbGwgbG9vcC4KUEsHCKEU44FdDAAAXQwAAFBLAwQUAAgAAAAAACEAAAAA" + - "AAAAAAAAAAAANwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvYWRkLWNvbXB1" + - "dGUtcGxhbmUubWRVVAUAAQCmzhIjIEFkZCBhIGNvbXB1dGUgcGxhbmUgdG8gYW4gZXhpc3Rpbmcg" + - "Y29udHJvbCBwbGFuZQoKVXNlciBoYXMgYSB3b3JraW5nIE5WQ0YgY29udHJvbCBwbGFuZSAocnVu" + - "bmluZyBzb21ld2hlcmUpIGFuZCB3YW50cyB0byByZWdpc3RlciBhIG5ldyBHUFUgY2x1c3RlciBh" + - "Z2FpbnN0IGl0LiBUaGlzIGlzIHRoZSBtdWx0aS1jbHVzdGVyIHNjYWxpbmcgcGF0aDogb25lIGNv" + - "bnRyb2wgcGxhbmUg4oaSIE4gY29tcHV0ZSBwbGFuZXMuCgojIyBQcmVyZXF1aXNpdGVzIHRoZSB1" + - "c2VyIG11c3QgaGF2ZQoKLSAqKmt1YmVjdGwgY29udGV4dCBmb3IgdGhlIG5ldyBjb21wdXRlIHBs" + - "YW5lKiogaW4gdGhlaXIgYEtVQkVDT05GSUdgLgotICoqUHVibGljIElDTVMgVVJMKiogb2YgdGhl" + - "IGV4aXN0aW5nIGNvbnRyb2wgcGxhbmUgKGUuZy4gYGh0dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUu" + - "Y29tYCkuCi0gKipBZG1pbiBKV1QqKiBmb3IgdGhlIGNvbnRyb2wgcGxhbmUncyBhY2NvdW50LCBP" + - "UiBhYmlsaXR5IHRvIG1pbnQgb25lIHZpYSBgbnZjZi1jbGkgaW5pdGAgYWdhaW5zdCB0aGUgY29u" + - "dHJvbCBwbGFuZSdzIHB1YmxpYyBhcGkgZW5kcG9pbnQuIChBZG1pbiB0b2tlbnMgY29tZSBmcm9t" + - "IHRoZSBBUEkgS2V5cyBzZXJ2aWNlIHZpYSB0aGUgcHVibGljIGFwaSBnYXRld2F5IOKAlCBrdWJl" + - "Y3RsIGFjY2VzcyB0byB0aGUgY29udHJvbCBwbGFuZSBpcyBOT1QgcmVxdWlyZWQgdG8gb2J0YWlu" + - "IG9uZS4pCi0gQSB1bmlxdWUgYC0tY2x1c3Rlci1uYW1lYCB0aGF0IGRvZXNuJ3QgY29sbGlkZSB3" + - "aXRoIGFscmVhZHktcmVnaXN0ZXJlZCBjbHVzdGVycy4gVXNlIGBudmNmLWNsaSBjbHVzdGVyIGxp" + - "c3QtcmVnaXN0ZXJlZCAtLW5jYS1pZD0kTkNBX0lEIC0taWNtcy11cmw9JElDTVNgIHRvIGNoZWNr" + - "LgoKIyMgU3RlcHMKCjEuICoqQXNrIGZvciBpbnB1dHM6KioKICAgLSBgLS1jbHVzdGVyLW5hbWU9" + - "PHVuaXF1ZT5gIOKAlCBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGNvbnRyb2wgcGxhbmUncyBO" + - "Q0Egc2NvcGUKICAgLSBgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9PGNvbnRleHQ+YCDigJQgdGhl" + - "IG5ldyBHUFUgY2x1c3RlcidzIGt1YmVjdGwgY29udGV4dAogICAtIGAtLWljbXMtdXJsPTxodHRw" + - "czovL2ljbXMubnZjZi5leGFtcGxlLmNvbT5gIOKAlCBjb250cm9sIHBsYW5lJ3MgcHVibGljIElD" + - "TVMgVVJMCiAgIC0gR1BVIHR5cGU/IChkZWZhdWx0IGBIMTAwYCwgYnV0IGFzaykKCjIuICoqUHJl" + - "LWZsaWdodCBqdXN0IHRoZSBjb21wdXRlIHBsYW5lOioqCgogICBgYGBzaAogICBudmNmLWNsaSBz" + - "ZWxmLWhvc3RlZCBjaGVjayAtLXByZSBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9JENU" + - "WCBcCiAgICAgLS1pY21zLXVybD0kSUNNUyBcCiAgICAgLS1qc29uIHwganEgLWMgLgogICBgYGAK" + - "CiAgIFRoaXMgdmFsaWRhdGVzIHRoZSBHUFUgb3BlcmF0b3IgaXMgaW5zdGFsbGVkLCBHUFUgbm9k" + - "ZSBsYWJlbHMgYXJlIHByZXNlbnQsIGFuZCBJQ01TIGlzIHJlYWNoYWJsZSB2aWEgSFRUUC4gQWRk" + - "cmVzcyBhbnkgZmFpbHVyZXMgYmVmb3JlIHByb2NlZWRpbmcuCgozLiAqKlJ1biBgYWRkLWNvbXB1" + - "dGUtcGxhbmVgOioqCgogICBgYGBzaAogICBudmNmLWNsaSBzZWxmLWhvc3RlZCBhZGQtY29tcHV0" + - "ZS1wbGFuZSBcCiAgICAgLS1jbHVzdGVyLW5hbWU9JE5BTUUgXAogICAgIC0tY29tcHV0ZS1wbGFu" + - "ZS1jb250ZXh0PSRDVFggXAogICAgIC0taWNtcy11cmw9JElDTVMgXAogICAgIC0tdG9rZW49JEpX" + - "VCBcCiAgICAgLS1ub24taW50ZXJhY3RpdmUgXAogICAgIC0tanNvbgogICBgYGAKCiAgIFRoaXMg" + - "aXMgYSBzZXBhcmF0ZSBzdWJjb21tYW5kIGZyb20gYHVwYC4gSXQgcnVucyBvbmx5IHRoZSBjb21w" + - "dXRlLXBsYW5lLXJlbGV2YW50IHBoYXNlczogMSAoY29tcHV0ZS1wbGFuZSBwcmVmbGlnaHQpLCA1" + - "IChyZWdpc3RlciksIDYgKGNvbXB1dGUtcGxhbmUgYXBwbHkpLCA4IChmaW5hbCBoZWFsdGggb24g" + - "dGhlIG5ldyBjb21wdXRlIHBsYW5lKS4gSXQgZG9lcyBOT1QgdG91Y2ggdGhlIGNvbnRyb2wgcGxh" + - "bmUgYW5kIGRvZXMgTk9UIGFjY2VwdCBgLS1jb250cm9sLXBsYW5lLWNvbnRleHRgIOKAlCB0aGUg" + - "Y29udHJvbCBwbGFuZSBpcyByZWFjaGVkIG92ZXIgSFRUUFMgYXQgYC0taWNtcy11cmxgLiBgLS10" + - "b2tlbmAgaXMgcmVxdWlyZWQgYmVjYXVzZSB0aGVyZSdzIG5vIGt1YmVjdGwgcGF0aCB0byBtaW50" + - "IG9uZSBmcm9tLgoKNC4gKipWZXJpZnkuKiogYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1cyAt" + - "LWNsdXN0ZXItbmFtZT0kTkFNRSAtLWpzb24gfCBqcWAg4oCUIGV4cGVjdCBgdmVyZGljdDogImhl" + - "YWx0aHkiYC4gVGhlIFJlZ2lzdGVyZWQgQ29tcHV0ZSBQbGFuZXMgcGFuZWwgZnJvbSBJQ01TIHNo" + - "b3VsZCBub3cgbGlzdCB0aGUgbmV3IGNsdXN0ZXIuCgo1LiAqKlNtb2tlLioqIFtkZXBsb3ktYW5k" + - "LWludm9rZS5tZF0oZGVwbG95LWFuZC1pbnZva2UubWQpIOKAlCBkZXBsb3kgYSBzbWFsbCBmdW5j" + - "dGlvbiB0byB0aGUgbmV3IGNvbXB1dGUgcGxhbmUgdG8gY29uZmlybSBzY2hlZHVsaW5nIHdvcmtz" + - "LgoKIyMgV2hhdCBpZiBhIGNsdXN0ZXIgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3Rz" + - "PwoKYGFkZC1jb21wdXRlLXBsYW5lYCdzIHJlZ2lzdGVyIHBoYXNlIHVzZXMgYC0taWdub3JlLWV4" + - "aXN0aW5nYCBzZW1hbnRpY3Mg4oCUIGl0J2xsIG1hdGNoIHRoZSBleGlzdGluZyBJQ01TIHJvdyBh" + - "bmQgcmV1c2UgaXRzIGNsdXN0ZXJJZC4gVHdvIHNjZW5hcmlvczoKCi0gKipSZS1yZWdpc3Rlcmlu" + - "ZyB0aGUgc2FtZSBjbHVzdGVyKiogKHJlLXJ1bm5pbmcgb24gdGhlIHNhbWUgY29tcHV0ZSBwbGFu" + - "ZSB0aGF0IHdhcyBwcmV2aW91c2x5IHJlZ2lzdGVyZWQpOiBleHBlY3RlZCwgbm8tb3Agc2VtYW50" + - "aWNzLgotICoqRGlmZmVyZW50IHBoeXNpY2FsIGNsdXN0ZXIgYnV0IHNhbWUgbmFtZSoqOiB0aGUg" + - "c2Vjb25kIGF0dGVtcHQgd2lsbCByZXVzZSB0aGUgSUNNUyByb3csIGJ1dCB0aGUgbmV3IGNvbXB1" + - "dGUgcGxhbmUncyBKV0tTIHdpbGwgYmUgc2lsZW50bHkgKnJlcGxhY2VkKiDigJQgdGhlIG9sZCBj" + - "b21wdXRlIHBsYW5lJ3MgTlZDQSBhZ2VudCB3aWxsIHN0YXJ0IGZhaWxpbmcgUFNBVCBhdXRoLiAq" + - "KkNvbmZpcm0gd2l0aCB0aGUgdXNlcioqIHRoYXQgdGhleSBtZWFudCB0byBvdmVyd3JpdGUuCgpX" + - "aGVuIGluIGRvdWJ0LCBydW4gYG52Y2YtY2xpIGNsdXN0ZXIgbGlzdC1yZWdpc3RlcmVkIC0tbmNh" + - "LWlkPSROQ0FfSUQgLS1pY21zLXVybD0kSUNNU2AgZmlyc3QgYW5kIGFzayB0aGUgdXNlciBiZWZv" + - "cmUgcHJvY2VlZGluZyB3aXRoIGEgbmFtZSB0aGF0IGFscmVhZHkgZXhpc3RzLgpQSwcIQidJDwUN" + - "AAAFDQAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA5AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdl" + - "ZC1jbGkvcHJvbXB0cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kVVQFAAEAps4SIyBDcmVhdGUgYW5k" + - "IHJ1biBhIHRhc2sKClN0YW5kYXJkIGZsb3c6IG1pbnQgQVBJIGtleXMgLT4gdGFzayBDUkVBVEUg" + - "LT4gbW9uaXRvciAtPiByZXRyaWV2ZSByZXN1bHRzIC0+IGNsZWFudXAuCgojIyAxLiBNaW50IEFQ" + - "SSBrZXlzCgpUaGUgYWRtaW4gdG9rZW4gZnJvbSBgaW5pdGAgZG9lcyBub3QgY2FycnkgdGFzayBp" + - "bnZvY2F0aW9uIHNjb3BlLiBHZW5lcmF0ZSBBUEkga2V5czoKCmBgYHNoCm52Y2YtY2xpIGFwaS1r" + - "ZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj0idGFzayBzbW9rZSB0ZXN0IiAtLWV4cGlyZXMtaW49" + - "OGgKIyAtPiBmdW5jdGlvbiBrZXk6IG52YXBpLS4uLgojIC0+IHRhc2sga2V5OiBudmFwaS0uLi4K" + - "YGBgCgpCb3RoIGtleXMgYXJlIHNhdmVkIHRvIENMSSBzdGF0ZS4gVG8gbWludCBvbmx5IHRoZSB0" + - "YXNrIGtleToKCmBgYHNoCm52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1mb3IgdGFzayAtLWRl" + - "c2NyaXB0aW9uPSJ0YXNrIHNtb2tlIHRlc3QiIC0tZXhwaXJlcy1pbj04aApgYGAKClRvIHZhbGlk" + - "YXRlIGVhY2gga2V5IGltbWVkaWF0ZWx5IGFmdGVyIG1pbnRpbmc6CgpgYGBzaApudmNmLWNsaSBh" + - "cGkta2V5IGdlbmVyYXRlIC0tZGVzY3JpcHRpb249InRhc2sgc21va2UgdGVzdCIgLS1leHBpcmVz" + - "LWluPThoIC0tdmFsaWRhdGUKIyAtPiBmdW5jdGlvbiBBUEkga2V5IHZhbGlkYXRpb24gcGFzc2Vk" + - "IQojIC0+IHRhc2sgQVBJIGtleSB2YWxpZGF0aW9uIHBhc3NlZCEKYGBgCgpOZXZlciBlY2hvIHRo" + - "ZSBrZXkgdmFsdWUgKG52YXBpLS4uLikgaW50byBjaGF0IG9yIGxvZ3MuIFJlcG9ydCBvbmx5IHRo" + - "YXQgdGhlIGtleSB3YXMgbWludGVkLCBpdHMgZGVzY3JpcHRpb24sIGFuZCBpdHMgZXhwaXJ5IOKA" + - "lCBuZXZlciB0aGUgdmFsdWUgaXRzZWxmLgoKIyMjIEZyZXNoIHNlc3Npb24gcHJlLWZsaWdodAoK" + - "QmVmb3JlIHJ1bm5pbmcgYW55IGB0YXNrYCBjb21tYW5kIGluIGEgZnJlc2ggYWdlbnQgc2Vzc2lv" + - "biwgdmVyaWZ5IGNyZWRlbnRpYWxzOgoKMS4gQ2hlY2sgd2hldGhlciBgTlZDRl9BUElfS0VZYCBp" + - "cyBzZXQ6CgogICBgYGBzaAogICBwcmludGVudiBOVkNGX0FQSV9LRVkgPiAvZGV2L251bGwgMj4m" + - "MSAmJiBlY2hvIHNldCB8fCBlY2hvIHVuc2V0CiAgIGBgYAoKMi4gSWYgdW5zZXQsIHJlYWQgdGhl" + - "IHN0b3JlZCBrZXkgZXhwaXJ5IHdpdGhvdXQgcHJpbnRpbmcgdGhlIHZhbHVlOgoKICAgYGBgc2gK" + - "ICAgcHl0aG9uMyAtYyAiaW1wb3J0IGpzb24scGF0aGxpYjsgcz1qc29uLmxvYWRzKHBhdGhsaWIu" + - "UGF0aCgnfi8ubnZjZi1jbGkuc3RhdGUnKS5leHBhbmR1c2VyKCkucmVhZF90ZXh0KCkpOyBwcmlu" + - "dChzLmdldCgnbnZjdEFwaUtleUV4cGlyYXRpb24nLCdtaXNzaW5nJykpIgogICBgYGAKCjMuIElm" + - "IHRoZSBleHBpcnkgaXMgaW4gdGhlIHBhc3Qgb3IgbWlzc2luZywgcmVnZW5lcmF0ZToKCiAgIGBg" + - "YHNoCiAgIG52Y2YtY2xpIHJlZnJlc2gKICAgbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWZv" + - "ciB0YXNrIC0tZGVzY3JpcHRpb249InRhc2sta2V5IiAtLWV4cGlyZXMtaW49MjRoIC0tdmFsaWRh" + - "dGUKICAgYGBgCgo0LiBJbmplY3QgdGhlIHN0b3JlZCBrZXkgaW50byB0aGUgc3VicHJvY2VzcyBl" + - "bnYgd2l0aG91dCBsb2dnaW5nIHRoZSB2YWx1ZS4gVXNlIGEgc2hlbGwgc3Vic2hlbGwgb3IgZW52" + - "IHByZWZpeCDigJQgbmV2ZXIgcHJpbnQgdGhlIGtleSBpbnRvIGNoYXQuCgpFcnJvciBjbGFzc2lm" + - "aWNhdGlvbjoKCi0gIm1pc3NpbmcgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMiIG9yIGV4aXQg" + - "Mjoga2V5IG5vdCBpbmplY3RlZDsgcmVwZWF0IHByZS1mbGlnaHQuCi0gSFRUUCA0MDM6IGtleSBl" + - "eHBpcmVkIG9yIHdyb25nIGF1ZGllbmNlOyByZWdlbmVyYXRlLgotIEVtcHR5IHRhc2sgbGlzdDog" + - "dmFsaWQ7IG5vIHRhc2tzIGV4aXN0IHlldC4KCiMjIDIuIFRhc2sgQ1JFQVRFOiBjb250YWluZXIK" + - "CkRlZmluZSB0aGUgdGFzayBpbiBhIEpTT04gZmlsZS4gTWluaW11bSB2aWFibGUgY29udGFpbmVy" + - "IHRhc2s6CgpgYGBqc29uCnsKICAibmFtZSI6ICJzbW9rZS1jb250YWluZXItdGFzayIsCiAgImdw" + - "dVNwZWNpZmljYXRpb24iOiB7CiAgICAiZ3B1IjogIkgxMDAiLAogICAgImluc3RhbmNlVHlwZSI6" + - "ICJOQ1AuR1BVLkgxMDBfMXgiLAogICAgImJhY2tlbmQiOiAibmNwLWxvY2FsIgogIH0sCiAgImNv" + - "bnRhaW5lckltYWdlIjogIm52Y3IuaW8vbnZpZGlhL25lbW86bGF0ZXN0IiwKICAiY29udGFpbmVy" + - "QXJncyI6ICJweXRob24gLWMgXCJwcmludCgnaGVsbG8gZnJvbSB0YXNrJylcIiIsCiAgInJlc3Vs" + - "dEhhbmRsaW5nU3RyYXRlZ3kiOiAiTk9ORSIKfQpgYGAKCmBgYHNoCm52Y2YtY2xpIHRhc2sgY3Jl" + - "YXRlIC0taW5wdXQtZmlsZT10YXNrLWNvbnRhaW5lci5qc29uCiMgLT4gVGFzayBJRDogPHRhc2tf" + - "aWQ+CmBgYAoKQ2FwdHVyZSB0aGUgdGFzayBJRCBmcm9tIHRoZSBvdXRwdXQuIFN0YXRlIHBlcnNp" + - "c3RlbmNlIGNhbiBmYWlsIHNpbGVudGx5LCBzbyBwYXNzCmA8dGFza0lkPmAgZXhwbGljaXRseSBv" + - "biBzdWJzZXF1ZW50IGNvbW1hbmRzIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gc2F2ZWQgc3RhdGUu" + - "CgpFcXVpdmFsZW50IENMSSBmbGFncyBmb3JtIGZvciBxdWljayBhZC1ob2MgcnVuczoKCmBgYHNo" + - "Cm52Y2YtY2xpIHRhc2sgY3JlYXRlIFwKICAtLW5hbWU9c21va2UtY29udGFpbmVyLXRhc2sgXAog" + - "IC0tZ3B1PUgxMDAgXAogIC0taW5zdGFuY2UtdHlwZT1OQ1AuR1BVLkgxMDBfMXggXAogIC0tYmFj" + - "a2VuZD1uY3AtbG9jYWwgXAogIC0taW1hZ2U9bnZjci5pby9udmlkaWEvbmVtbzpsYXRlc3QgXAog" + - "IC0tY29udGFpbmVyLWFyZ3M9InB5dGhvbiAtYyAncHJpbnQoaGVsbG8gZnJvbSB0YXNrKSciIFwK" + - "ICAtLXJlc3VsdC1zdHJhdGVneT1OT05FCmBgYAoKVG8gdGFyZ2V0IGEgc3BlY2lmaWMgY29tcHV0" + - "ZSBjbHVzdGVyOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPXRhc2st" + - "Y29udGFpbmVyLmpzb24gLS1jbHVzdGVycz1teS1jbHVzdGVyCmBgYAoKVG8gaW5qZWN0IGVudmly" + - "b25tZW50IHZhcmlhYmxlcyBvciBzZWNyZXRzLCBlaXRoZXIgcGFzcyBmbGFnczoKCmBgYHNoCm52" + - "Y2YtY2xpIHRhc2sgY3JlYXRlIC0taW5wdXQtZmlsZT10YXNrLWNvbnRhaW5lci5qc29uIFwKICAt" + - "LWNvbnRhaW5lci1lbnYgTVlfRU5WPXZhbHVlIFwKICAtLXNlY3JldHMgTVlfU0VDUkVUPXMzY3Iz" + - "dApgYGAKCm9yIHNldCB0aGVtIGluIHRoZSBKU09OIGZpbGU6CgpgYGBqc29uCnsKICAiY29udGFp" + - "bmVyRW52aXJvbm1lbnQiOiBbCiAgICB7ImtleSI6ICJNWV9FTlYiLCAidmFsdWUiOiAidmFsdWUi" + - "fQogIF0sCiAgInNlY3JldHMiOiBbCiAgICB7Im5hbWUiOiAiTVlfU0VDUkVUIiwgInZhbHVlIjog" + - "InMzY3IzdCJ9CiAgXQp9CmBgYAoKU2VjcmV0cyBhcmUgZW5jcnlwdGVkIGF0IHJlc3QgYW5kIG5v" + - "dCByZXR1cm5lZCBpbiBsaXN0IG9yIGdldCByZXNwb25zZXMgYnkgZGVmYXVsdDsgZG8gbm90IGxv" + - "ZyB0aGVtLgoKIyMgMy4gVGFzayBDUkVBVEU6IEhlbG0KCkZvciBIZWxtLXR5cGUgdGFza3MsIHJl" + - "cGxhY2UgYGNvbnRhaW5lckltYWdlYCB3aXRoIGBoZWxtQ2hhcnRgOgoKYGBganNvbgp7CiAgIm5h" + - "bWUiOiAic21va2UtaGVsbS10YXNrIiwKICAiZ3B1U3BlY2lmaWNhdGlvbiI6IHsKICAgICJncHUi" + - "OiAiSDEwMCIsCiAgICAiaW5zdGFuY2VUeXBlIjogIk5DUC5HUFUuSDEwMF8xeCIsCiAgICAiYmFj" + - "a2VuZCI6ICJuY3AtbG9jYWwiCiAgfSwKICAiaGVsbUNoYXJ0IjogImh0dHBzOi8vaGVsbS5uZ2Mu" + - "bnZpZGlhLmNvbS88b3JnPi9jaGFydHMvZXhhbXBsZS10YXNrLTAuMS4wLnRneiIsCiAgInJlc3Vs" + - "dEhhbmRsaW5nU3RyYXRlZ3kiOiAiTk9ORSIKfQpgYGAKCmBgYHNoCm52Y2YtY2xpIHRhc2sgY3Jl" + - "YXRlIC0taW5wdXQtZmlsZT10YXNrLWhlbG0uanNvbgojIC0+IFRhc2sgSUQ6IDx0YXNrX2lkPgpg" + - "YGAKCmBoZWxtQ2hhcnRgIGFuZCBgY29udGFpbmVySW1hZ2VgIGFyZSBtdXR1YWxseSBleGNsdXNp" + - "dmUuCgojIyAzYi4gVXBkYXRlIHNlY3JldHMgb24gYSBydW5uaW5nIHRhc2sKCmBgYHNoCm52Y2Yt" + - "Y2xpIHRhc2sgdXBkYXRlLXNlY3JldHMgPHRhc2tfaWQ+IC0tc2VjcmV0cyBOQU1FPXZhbHVlCmBg" + - "YAoKYHVwZGF0ZS1zZWNyZXRzYCBtZXJnZXMgc2VjcmV0cyBieSBuYW1lOiBzdXBwbGllZCBzZWNy" + - "ZXRzIGFyZSBhZGRlZCBvciB1cGRhdGVkLCBhbmQgZXhpc3Rpbmcgc2VjcmV0cyBub3QgaW5jbHVk" + - "ZWQgaW4gdGhlIHJlcXVlc3QgYXJlIHByZXNlcnZlZC4gRG8gbm90IGVjaG8gc2VjcmV0IHZhbHVl" + - "cyBpbnRvIGNoYXQuCgojIyA0LiBNb25pdG9yCgpQb2xsIHRhc2sgc3RhdGU6CgpgYGBzaApudmNm" + - "LWNsaSB0YXNrIGdldCA8dGFza19pZD4KIyAtPiBpZDogPHRhc2tfaWQ+CiMgLT4gc3RhdHVzOiBS" + - "VU5OSU5HCmBgYAoKT3IgdXNlIHRoZSB0YXNrIElEIHNhdmVkIHRvIHN0YXRlIGZyb20gdGhlIG1v" + - "c3QgcmVjZW50IGB0YXNrIGNyZWF0ZWA6CgpgYGBzaApudmNmLWNsaSB0YXNrIGdldApgYGAKClN0" + - "YXR1cyB2YWx1ZXM6IGBRVUVVRURgLCBgTEFVTkNIRURgLCBgUlVOTklOR2AsIGBDT01QTEVURURg" + - "LCBgRVJST1JFRGAsIGBDQU5DRUxFRGAsIGBFWENFRURFRF9NQVhfUlVOVElNRV9EVVJBVElPTmAs" + - "IGBFWENFRURFRF9NQVhfUVVFVUVEX0RVUkFUSU9OYC4KCkluc3BlY3QgbGlmZWN5Y2xlIGV2ZW50" + - "cyBmb3IgcHJvZ3Jlc3MgZGV0YWlscyBvciBmYWlsdXJlIGNvbnRleHQ6CgpgYGBzaApudmNmLWNs" + - "aSB0YXNrIGV2ZW50cyA8dGFza19pZD4KYGBgCgpJZiB0aGUgdGFzayBpcyBzdHVjayBpbiBgUVVF" + - "VUVEYCwgY2hlY2sgdGhhdCBhIGNvbXB1dGUgY2x1c3RlciB3aXRoIGEgbWF0Y2hpbmcgR1BVIFNL" + - "VQppcyByZWdpc3RlcmVkIGFuZCBoZWFsdGh5IChgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVz" + - "YCkuCgpJZiB0aGUgdGFzayBtb3ZlcyB0byBgRVJST1JFRGAsIHRoZSBldmVudHMgb3V0cHV0IGNv" + - "bnRhaW5zIHRoZSBmYWlsdXJlIHJlYXNvbi4gRm9yCmNvbnRhaW5lci1sZXZlbCBkZXRhaWwsIGlu" + - "c3BlY3QgdGhlIHRhc2sgd29ya2xvYWQgcG9kcyBvbiB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVy" + - "IHdpdGgKYGt1YmVjdGxgIGFnYWluc3QgdGhlIGFwcHJvcHJpYXRlIG5hbWVzcGFjZSBhbmQgY29u" + - "dGV4dC4KCiMjIDUuIFJldHJpZXZlIHJlc3VsdHMKCkZvciB0YXNrcyB3aXRoIGByZXN1bHRIYW5k" + - "bGluZ1N0cmF0ZWd5OiBOT05FYCwgcmVzdWx0cyBhcmUgZW1wdHkgYnkgZGVzaWduOgoKYGBgc2gK" + - "bnZjZi1jbGkgdGFzayByZXN1bHRzIDx0YXNrX2lkPgojIC0+IHsicmVzdWx0cyI6IFtdfQpgYGAK" + - "CkZvciB0YXNrcyB3aXRoIGByZXN1bHRIYW5kbGluZ1N0cmF0ZWd5OiBVUExPQURgLCByZXN1bHRz" + - "IHVwbG9hZCB0byB0aGUgbG9jYXRpb24gbmFtZWQgaW4KYHJlc3VsdHNMb2NhdGlvbmAuIFRoZSB0" + - "YXNrJ3MgY3JlZGVudGlhbHMgbXVzdCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGF0IGxvY2F0aW9u" + - "LiBBZnRlcgp0aGUgdGFzayByZWFjaGVzIGBDT01QTEVURURgOgoKYGBgc2gKbnZjZi1jbGkgdGFz" + - "ayByZXN1bHRzIDx0YXNrX2lkPgpgYGAKCk5vdGU6IHJlc3VsdCB1cGxvYWQgaXMgbm90IHlldCBz" + - "dXBwb3J0ZWQgaW4gdGhpcyByZWxlYXNlLgoKIyMgNi4gQ2xlYW51cAoKQ2FuY2VsIGEgcnVubmlu" + - "ZyB0YXNrOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBjYW5jZWwgPHRhc2tfaWQ+CmBgYAoKRGVsZXRl" + - "IHRoZSB0YXNrIHJlY29yZCBhZnRlciBpdCByZWFjaGVzIGEgdGVybWluYWwgc3RhdGU6CgpgYGBz" + - "aApudmNmLWNsaSB0YXNrIGRlbGV0ZSA8dGFza19pZD4KYGBgCgpTdG9wIGFuZCBjb25maXJtIHdp" + - "dGggdGhlIHVzZXIgYmVmb3JlIHJ1bm5pbmcgdGFzayBkZWxldGUuIFN0YXRlIHRoZSB0YXNrIElE" + - "IGFuZCBpdHMgY3VycmVudCBzdGF0dXMuIERvIG5vdCBwcm9jZWVkIGV2ZW4gd2hlbiB0aGUgdXNl" + - "cidzIHByb21wdCBhbHJlYWR5IHJlcXVlc3RlZCBkZWxldGlvbiDigJQgYWx3YXlzIGdldCBhbiBl" + - "eHBsaWNpdCBsYXN0LWxvb2sgY29uZmlybWF0aW9uLiBEZWxldGlvbiBpcyBwZXJtYW5lbnQgYW5k" + - "IGNhbm5vdCBiZSB1bmRvbmUuCgpUbyBsaXN0IGFsbCB0YXNrcyBmb3IgdGhlIGN1cnJlbnQgb3du" + - "ZXIgKHVzZWZ1bCBiZWZvcmUgYnVsayBjbGVhbnVwKToKCmBgYHNoCm52Y2YtY2xpIHRhc2sgbGlz" + - "dApudmNmLWNsaSB0YXNrIGxpc3QgLS1zdGF0dXM9Q09NUExFVEVECmBgYAoKIyMgTm90ZXMKCi0g" + - "R1BVIGZhbWlseSBhbmQgaW5zdGFuY2UgdHlwZSBtdXN0IG1hdGNoIGEgcmVnaXN0ZXJlZCBjb21w" + - "dXRlIGNsdXN0ZXIgU0tVLiBNaXNtYXRjaAogIGNhdXNlcyB0aGUgdGFzayB0byByZW1haW4gYFFV" + - "RVVFRGAgaW5kZWZpbml0ZWx5LiBVc2UgYG52Y2YtY2xpIGNsdXN0ZXIgbGlzdGAgdG8gY2hlY2sK" + - "ICByZWdpc3RlcmVkIFNLVXMuCi0gRm9yIGNvbnRhaW5lciBpbWFnZXMgb24gcHJpdmF0ZSByZWdp" + - "c3RyaWVzLCBlbnN1cmUgdGhlIGNvbXB1dGUtcGxhbmUgY2x1c3RlcidzCiAgaW1hZ2UtY3JlZGVu" + - "dGlhbC1oZWxwZXIgaXMgY29uZmlndXJlZCBmb3IgdGhlIHJlZ2lzdHJ5IGhvc3QuClBLBwjU3o00" + - "nxkAAJ8ZAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADcACQBkYXRhL252Y2Ytc2VsZi1tYW5h" + - "Z2VkLWNsaS9wcm9tcHRzL2RlcGxveS1hbmQtaW52b2tlLm1kVVQFAAEAps4SIyBEZXBsb3kgYW5k" + - "IGludm9rZSBhIGNvbnRhaW5lciBmdW5jdGlvbgoKU3RhbmRhcmQgZm91ci1zdGVwIGZsb3c6IGZ1" + - "bmN0aW9uIENSRUFURSDihpIgREVQTE9ZIOKGkiBBUEkga2V5IChmb3IgaW52b2tlIHNjb3BlKSDi" + - "hpIgSU5WT0tFLgoKIyMgMS4gRnVuY3Rpb24gQ1JFQVRFCgpEZWZpbmUgdGhlIGZ1bmN0aW9uIGlu" + - "IGEgSlNPTiBmaWxlLiBNaW5pbXVtOgoKQmVmb3JlIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiwgY29u" + - "ZmlybSB0aGUgZXhhY3QgZnVuY3Rpb24gbmFtZSBhbmQgY29udGFpbmVyIGltYWdlIHdpdGggdGhl" + - "IHVzZXIuIElmIGVpdGhlciB2YWx1ZSBpcyBtaXNzaW5nLCBzdG9wIGFuZCBhc2suIERvIG5vdCBp" + - "bnZlbnQgb3Igc3VibWl0IGV4YW1wbGUgdmFsdWVzIGZvciB0aGVzZSBmaWVsZHMuCgpgYGBqc29u" + - "CnsKICAibmFtZSI6ICI8Y29uZmlybWVkLWZ1bmN0aW9uLW5hbWU+IiwKICAiY29udGFpbmVySW1h" + - "Z2UiOiAiPGNvbmZpcm1lZC1jb250YWluZXItaW1hZ2U+IiwKICAiaW5mZXJlbmNlVXJsIjogIi9l" + - "Y2hvIiwKICAiaW5mZXJlbmNlUG9ydCI6IDgwMDAsCiAgImRlc2NyaXB0aW9uIjogInNtb2tlIHRl" + - "c3QgZWNobyBmdW5jdGlvbiIsCiAgImZ1bmN0aW9uVHlwZSI6ICJERUZBVUxUIiwKICAiYXBpQm9k" + - "eUZvcm1hdCI6ICJDVVNUT00iLAogICJoZWFsdGgiOiB7CiAgICAicHJvdG9jb2wiOiAiSFRUUCIs" + - "CiAgICAidXJpIjogIi9oZWFsdGgiLAogICAgInBvcnQiOiA4MDAwLAogICAgInRpbWVvdXQiOiAi" + - "UFQzMFMiLAogICAgImV4cGVjdGVkU3RhdHVzQ29kZSI6IDIwMAogIH0KfQpgYGAKCmBgYHNoCm52" + - "Y2YtY2xpIGZ1bmN0aW9uIGNyZWF0ZSAtLWlucHV0LWZpbGU9Y3JlYXRlLWZuLmpzb24KIyDihpIg" + - "RnVuY3Rpb24gSUQ6IDxmbl9pZD4KIyDihpIgVmVyc2lvbiBJRDogPHZlcl9pZD4KYGBgCgpTYXZl" + - "IHRoZSBJRHMg4oCUIHRoZXkncmUgbmVlZGVkIGZvciBkZXBsb3kgKyBpbnZva2UuCgojIyMgTExN" + - "IGZ1bmN0aW9uIHZhcmlhbnQKCkZvciBhbiBPcGVuQUktY29tcGF0aWJsZSBMTE0gZnVuY3Rpb24s" + - "IHNldCBgZnVuY3Rpb25UeXBlOiAiTExNImAgYW5kIHB1dCByb3V0ZSBtZXRhZGF0YSB1bmRlciBg" + - "bW9kZWxzW10ubGxtQ29uZmlnYDoKCkJlZm9yZSBjcmVhdGluZyB0aGUgZnVuY3Rpb24sIGNvbmZp" + - "cm0gdGhlIGV4YWN0IGZ1bmN0aW9uIG5hbWUsIGNvbnRhaW5lciBpbWFnZSwgYW5kIG1vZGVsIG5h" + - "bWUgd2l0aCB0aGUgdXNlci4gSWYgYW55IHZhbHVlIGlzIG1pc3NpbmcsIHN0b3AgYW5kIGFzay4g" + - "RG8gbm90IGludmVudCBvciBzdWJtaXQgZXhhbXBsZSB2YWx1ZXMgZm9yIHRoZXNlIGZpZWxkcy4K" + - "CmBgYGpzb24KewogICJuYW1lIjogIjxjb25maXJtZWQtZnVuY3Rpb24tbmFtZT4iLAogICJjb250" + - "YWluZXJJbWFnZSI6ICI8Y29uZmlybWVkLWNvbnRhaW5lci1pbWFnZT4iLAogICJpbmZlcmVuY2VV" + - "cmwiOiAiLyIsCiAgImluZmVyZW5jZVBvcnQiOiA4MDAwLAogICJmdW5jdGlvblR5cGUiOiAiTExN" + - "IiwKICAiaGVhbHRoIjogewogICAgInByb3RvY29sIjogIkhUVFAiLAogICAgInVyaSI6ICIvaGVh" + - "bHRoIiwKICAgICJwb3J0IjogODAwMCwKICAgICJ0aW1lb3V0IjogIlBUMzBTIiwKICAgICJleHBl" + - "Y3RlZFN0YXR1c0NvZGUiOiAyMDAKICB9LAogICJtb2RlbHMiOiBbCiAgICB7CiAgICAgICJuYW1l" + - "IjogIjxjb25maXJtZWQtbW9kZWwtbmFtZT4iLAogICAgICAibGxtQ29uZmlnIjogewogICAgICAg" + - "ICJ1cmlzIjogWyIvdjEvY2hhdC9jb21wbGV0aW9ucyIsICIvdjEvcmVzcG9uc2VzIiwgIi92MS9l" + - "bWJlZGRpbmdzIl0sCiAgICAgICAgInJvdXRpbmdNZXRob2QiOiAicm91bmRfcm9iaW4iLAogICAg" + - "ICAgICJ0b2tlblJhdGVMaW1pdCI6ICIxMDAwLVMiCiAgICAgIH0KICAgIH0KICBdCn0KYGBgCgpF" + - "cXVpdmFsZW50IENMSSBmbGFnIGZvcm06CgpgYGBzaApudmNmLWNsaSBmdW5jdGlvbiBjcmVhdGUg" + - "XAogIC0tbmFtZT0iPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1lPiIgXAogIC0taW1hZ2U9Ijxjb25m" + - "aXJtZWQtY29udGFpbmVyLWltYWdlPiIgXAogIC0taW5mZXJlbmNlLXVybD0vIFwKICAtLWluZmVy" + - "ZW5jZS1wb3J0PTgwMDAgXAogIC0taGVhbHRoLXVyaT0vaGVhbHRoIFwKICAtLWhlYWx0aC1wb3J0" + - "PTgwMDAgXAogIC0taGVhbHRoLXRpbWVvdXQ9UFQzMFMgXAogIC0taGVhbHRoLXByb3RvY29sPUhU" + - "VFAgXAogIC0taGVhbHRoLWV4cGVjdGVkLXN0YXR1cz0yMDAgXAogIC0tZnVuY3Rpb24tdHlwZT1M" + - "TE0gXAogIC0tbGxtLW1vZGVsPSduYW1lPTxjb25maXJtZWQtbW9kZWwtbmFtZT4sdXJpcz0vdjEv" + - "Y2hhdC9jb21wbGV0aW9uc3wvdjEvcmVzcG9uc2VzfC92MS9lbWJlZGRpbmdzLHJvdXRpbmdNZXRo" + - "b2Q9cm91bmRfcm9iaW4sdG9rZW5SYXRlTGltaXQ9MTAwMC1TJwpgYGAKClVzZSB0aGUgc2FtZSBk" + - "ZXBsb3kgc3RlcCBiZWxvdyBhZnRlciB0aGUgTExNIGZ1bmN0aW9uIGlzIGNyZWF0ZWQuCgpPcHRp" + - "b25hbCBtb2RlbCByb3V0aW5nIHVwZGF0ZSBhZnRlciBjcmVhdGlvbjoKCmBgYHNoCm52Y2YtY2xp" + - "IGZ1bmN0aW9uIHVwZGF0ZSBcCiAgLS1mdW5jdGlvbi1pZD08Zm5faWQ+IFwKICAtLXZlcnNpb24t" + - "aWQ9PHZlcl9pZD4gXAogIC0tbGxtLW1vZGVsLXVwZGF0ZT0nbmFtZT08Y29uZmlybWVkLW1vZGVs" + - "LW5hbWU+LHJvdXRpbmdNZXRob2Q9cG93ZXJfb2ZfdHdvLHRva2VuUmF0ZUxpbWl0PTEwMDAtUycK" + - "YGBgCgpVc2UgdGhpcyBmb3IgbXV0YWJsZSBgcm91dGluZ01ldGhvZGAgYW5kIGB0b2tlblJhdGVM" + - "aW1pdGA7IGNyZWF0ZS10aW1lIGB1cmlzYCBzdGF5IGluIGBtb2RlbHNbXS5sbG1Db25maWdgLgpg" + - "dG9rZW5SYXRlTGltaXRgIHN1cHBvcnRzIHBvc2l0aXZlIGludGVnZXIgdG9rZW4gbGltaXRzIGZv" + - "ciBgU2AsIGBNYCwgYEhgLCBgRGAsIGFuZCBgV2AuIFVzZSBgMTAwMC1TYCBmb3IgYSBzaW5nbGUg" + - "aW5saW5lIENMSSBsaW1pdC4gVXNlIGlucHV0IEpTT04gZm9yIGNvbWJpbmVkIGxpbWl0cywgc3Vj" + - "aCBhcyBgMTAwMC1TLDUwMDAtTSwxMDAwMDAtSCw1MDAwMDAtRCwxMDAwMDAwLVdgLCBiZWNhdXNl" + - "IGlubGluZSBtb2RlbCBzcGVjcyB1c2UgY29tbWFzIGFzIGZpZWxkIHNlcGFyYXRvcnMuCgojIyMg" + - "SGVsbSBjaGFydCBMTE0gZnVuY3Rpb24gdmFyaWFudAoKTExNIGZ1bmN0aW9uIHR5cGUgaXMgaW5k" + - "ZXBlbmRlbnQgb2Ygd29ya2xvYWQgcGFja2FnaW5nLiBGb3IgYSBIZWxtLWNoYXJ0IGJhY2tlZCBM" + - "TE0gZnVuY3Rpb24sIGtlZXAgdGhlIHNhbWUgYGZ1bmN0aW9uVHlwZWAgYW5kIGBtb2RlbHNbXS5s" + - "bG1Db25maWdgIGZpZWxkcywgdGhlbiBzZXQgYGhlbG1DaGFydGAgYW5kIGBoZWxtQ2hhcnRTZXJ2" + - "aWNlTmFtZWAuIFRoZSBzZXJ2aWNlIG5hbWUgbXVzdCBtYXRjaCBhIEt1YmVybmV0ZXMgU2Vydmlj" + - "ZSByZW5kZXJlZCBieSB0aGUgY2hhcnQsIGFuZCBgaW5mZXJlbmNlUG9ydGAgbXVzdCBiZSB0aGF0" + - "IFNlcnZpY2UgcG9ydC4KCkJlZm9yZSBjcmVhdGluZyB0aGUgZnVuY3Rpb24sIGNvbmZpcm0gdGhl" + - "IGV4YWN0IGZ1bmN0aW9uIG5hbWUgYW5kIG1vZGVsIG5hbWUgd2l0aCB0aGUgdXNlci4gSWYgZWl0" + - "aGVyIHZhbHVlIGlzIG1pc3NpbmcsIHN0b3AgYW5kIGFzay4gRG8gbm90IGludmVudCBvciBzdWJt" + - "aXQgZXhhbXBsZSB2YWx1ZXMgZm9yIHRoZXNlIGZpZWxkcy4KCmBgYGpzb24KewogICJuYW1lIjog" + - "Ijxjb25maXJtZWQtZnVuY3Rpb24tbmFtZT4iLAogICJpbmZlcmVuY2VVcmwiOiAiLyIsCiAgImlu" + - "ZmVyZW5jZVBvcnQiOiA4MDAwLAogICJmdW5jdGlvblR5cGUiOiAiTExNIiwKICAiaGVhbHRoIjog" + - "ewogICAgInByb3RvY29sIjogIkhUVFAiLAogICAgInVyaSI6ICIvaGVhbHRoIiwKICAgICJwb3J0" + - "IjogODAwMCwKICAgICJ0aW1lb3V0IjogIlBUMzBTIiwKICAgICJleHBlY3RlZFN0YXR1c0NvZGUi" + - "OiAyMDAKICB9LAogICJoZWxtQ2hhcnQiOiAiaHR0cHM6Ly9oZWxtLm5nYy5udmlkaWEuY29tL2V4" + - "YW1wbGUvdGVhbS9jaGFydHMvb3BlbmFpLWNvbXBhdGlibGUtMC4xLjAudGd6IiwKICAiaGVsbUNo" + - "YXJ0U2VydmljZU5hbWUiOiAib3BlbmFpLWNvbXBhdGlibGUiLAogICJtb2RlbHMiOiBbCiAgICB7" + - "CiAgICAgICJuYW1lIjogIjxjb25maXJtZWQtbW9kZWwtbmFtZT4iLAogICAgICAibGxtQ29uZmln" + - "IjogewogICAgICAgICJ1cmlzIjogWyIvdjEvY2hhdC9jb21wbGV0aW9ucyIsICIvdjEvcmVzcG9u" + - "c2VzIiwgIi92MS9lbWJlZGRpbmdzIl0sCiAgICAgICAgInJvdXRpbmdNZXRob2QiOiAicm91bmRf" + - "cm9iaW4iLAogICAgICAgICJ0b2tlblJhdGVMaW1pdCI6ICIxMDAwLVMiCiAgICAgIH0KICAgIH0K" + - "ICBdCn0KYGBgCgpFcXVpdmFsZW50IENMSSBmbGFnIGZvcm06CgpgYGBzaApudmNmLWNsaSBmdW5j" + - "dGlvbiBjcmVhdGUgXAogIC0tbmFtZT0iPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1lPiIgXAogIC0t" + - "aW5mZXJlbmNlLXVybD0vIFwKICAtLWluZmVyZW5jZS1wb3J0PTgwMDAgXAogIC0taGVhbHRoLXVy" + - "aT0vaGVhbHRoIFwKICAtLWhlYWx0aC1wb3J0PTgwMDAgXAogIC0taGVhbHRoLXRpbWVvdXQ9UFQz" + - "MFMgXAogIC0taGVhbHRoLXByb3RvY29sPUhUVFAgXAogIC0taGVhbHRoLWV4cGVjdGVkLXN0YXR1" + - "cz0yMDAgXAogIC0tZnVuY3Rpb24tdHlwZT1MTE0gXAogIC0taGVsbS1jaGFydD1odHRwczovL2hl" + - "bG0ubmdjLm52aWRpYS5jb20vZXhhbXBsZS90ZWFtL2NoYXJ0cy9vcGVuYWktY29tcGF0aWJsZS0w" + - "LjEuMC50Z3ogXAogIC0taGVsbS1jaGFydC1zZXJ2aWNlPW9wZW5haS1jb21wYXRpYmxlIFwKICAt" + - "LWxsbS1tb2RlbD0nbmFtZT08Y29uZmlybWVkLW1vZGVsLW5hbWU+LHVyaXM9L3YxL2NoYXQvY29t" + - "cGxldGlvbnN8L3YxL3Jlc3BvbnNlc3wvdjEvZW1iZWRkaW5ncyxyb3V0aW5nTWV0aG9kPXJvdW5k" + - "X3JvYmluLHRva2VuUmF0ZUxpbWl0PTEwMDAtUycKYGBgCgpEZXBsb3kgaXMgdW5jaGFuZ2VkLiBQ" + - "dXQgY2hhcnQtc3BlY2lmaWMgdmFsdWVzIHVuZGVyIGBkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnNb" + - "XS5jb25maWd1cmF0aW9uYCBvbmx5IHdoZW4gdGhlIGNoYXJ0IG5lZWRzIHZhbHVlIG92ZXJyaWRl" + - "czoKCmBgYGpzb24KewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAi" + - "PHZlcl9pZD4iLAogICJkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnMiOiBbewogICAgImdwdSI6ICJI" + - "MTAwIiwKICAgICJpbnN0YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAwXzF4IiwKICAgICJtaW5JbnN0" + - "YW5jZXMiOiAxLAogICAgIm1heEluc3RhbmNlcyI6IDEsCiAgICAibWF4UmVxdWVzdENvbmN1cnJl" + - "bmN5IjogMTAsCiAgICAiY29uZmlndXJhdGlvbiI6IHsKICAgICAgInNlcnZpbmciOiB7CiAgICAg" + - "ICAgInRlbnNvclBhcmFsbGVsU2l6ZSI6IDEKICAgICAgfQogICAgfQogIH1dCn0KYGBgCgpMTE0g" + - "R2F0ZXdheSByb3V0ZXMgcmVxdWVzdHMgYnkgdGhlIE9wZW5BSSBgbW9kZWxgIHZhbHVlLiBVc2Ug" + - "YDxmdW5jdGlvbi1pZD4vPG1vZGVsLW5hbWU+YDogdGhlIGZ1bmN0aW9uIElEIHNlbGVjdHMgdGhl" + - "IE5WQ0YgZnVuY3Rpb24sIGFuZCB0aGUgbW9kZWwgbmFtZSBpcyBmb3J3YXJkZWQgdG8gdGhlIHVw" + - "c3RyZWFtIGNvbnRhaW5lciB0aHJvdWdoIGBzdGFyZ2F0ZS1jbGllbnRgLgoKU3VwcG9ydGVkIExM" + - "TSBwYXRoczoKCnwgUGF0aCB8IE5vdGVzIHwKfCAtLS0gfCAtLS0gfAp8IGAvdjEvY2hhdC9jb21w" + - "bGV0aW9uc2AgfCBTdXBwb3J0cyBzdHJlYW1pbmcgYW5kIHNlc3Npb24gc3RpY2tpbmVzcy4gfAp8" + - "IGAvdjEvcmVzcG9uc2VzYCB8IE5hdGl2ZSBSZXNwb25zZXMgcHJveHkgcGF0aDsgcmVsYXlzIFNT" + - "RSBmb3Igc3RyZWFtaW5nIGNsaWVudHMgYW5kIHJldHVybnMgdGVybWluYWwgSlNPTiBmb3Igbm9u" + - "LXN0cmVhbWluZyBjbGllbnRzLiBTdXBwb3J0cyBzZXNzaW9uIHN0aWNraW5lc3MuIHwKfCBgL3Yx" + - "L2VtYmVkZGluZ3NgIHwgQWNjZXB0cyBzdHJpbmcgb3Igc3RyaW5nLWFycmF5IGBpbnB1dGA7IGlu" + - "cHV0IG11c3QgYmUgbm9uLWVtcHR5IGFuZCBtYXkgY29udGFpbiBhdCBtb3N0IDIwNDggZW50cmll" + - "cy4gTm8gc2Vzc2lvbiBzdGlja2luZXNzLiB8CgojIyAyLiBGdW5jdGlvbiBERVBMT1kKCmBgYGpz" + - "b24KewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAiPHZlcl9pZD4i" + - "LAogICJkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnMiOiBbewogICAgImdwdSI6ICJIMTAwIiwKICAg" + - "ICJpbnN0YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAwXzF4IiwKICAgICJtaW5JbnN0YW5jZXMiOiAx" + - "LAogICAgIm1heEluc3RhbmNlcyI6IDEsCiAgICAibWF4UmVxdWVzdENvbmN1cnJlbmN5IjogMTAK" + - "ICB9XQp9CmBgYAoKTm90ZTogYGdwdWAgaXMgdGhlIEdQVSAqKmZhbWlseSoqIChlLmcuIGBIMTAw" + - "YCksIGBpbnN0YW5jZVR5cGVgIGlzIHRoZSBTS1UgKGUuZy4gYE5DUC5HUFUuSDEwMF8xeGApLiBN" + - "aXNtYXRjaCByZXR1cm5zIElDTVMgNDAwICJJbnZhbGlkIEdQVSIuCgpgYGBzaApudmNmLWNsaSBm" + - "dW5jdGlvbiBkZXBsb3kgY3JlYXRlIC0taW5wdXQtZmlsZT1kZXBsb3ktZm4uanNvbgpgYGAKClRo" + - "aXMgY29tbWFuZCAqKmJsb2NrcyoqIHVudGlsIHRoZSBkZXBsb3ltZW50IHJlYWNoZXMgQUNUSVZF" + - "IChkZWZhdWx0IDkwMHMgdGltZW91dCkuIFdoZW4gaXQgcmV0dXJucyByYz0wLCBhIGZ1bmN0aW9u" + - "IHBvZCBpcyBydW5uaW5nIGluIHRoZSBgbnZjZi1iYWNrZW5kYCBuYW1lc3BhY2Ugb24gdGhlIGNv" + - "bXB1dGUtcGxhbmUgY2x1c3Rlci4KCiMjIDMuIE1pbnQgYW4gQVBJIGtleSB3aXRoIGBpbnZva2Vf" + - "ZnVuY3Rpb25gIHNjb3BlCgpgbnZjZi1jbGkgaW5pdGAncyBhZG1pbiB0b2tlbiBkb2VzIE5PVCBj" + - "YXJyeSB0aGUgYGludm9rZV9mdW5jdGlvbmAgc2NvcGUg4oCUIGludm9rZSB3b3VsZCA0MDMgd2l0" + - "aCAibWlzc2luZyByZXF1ZXN0ZWQgYXV0aG9yaXRpZXMiLiBNaW50IGFuIEFQSSBrZXk6CgpgYGBz" + - "aApudmNmLWNsaSBhcGkta2V5IGdlbmVyYXRlIC0tZGVzY3JpcHRpb249Ijxjb25maXJtZWQtZnVu" + - "Y3Rpb24tbmFtZT4gaW52b2tlIiAtLWV4cGlyZXMtaW49MWgKIyDihpIgQVBJIEtleTogbnZhcGkt" + - "bnZjZi1zdGctLi4uCmBgYAoKVGhlIGtleSBpcyBhdXRvbWF0aWNhbGx5IHNhdmVkIHRvIHRoZSBD" + - "TEkgc3RhdGUgZmlsZSBhbmQgdXNlZCBieSB0aGUgbmV4dCBgZnVuY3Rpb24gaW52b2tlYCBjYWxs" + - "LiAqKkRvbid0IGVjaG8gdGhlIGtleSBpbnRvIGNoYXQgLyBsb2dzKiouCgojIyA0LiBGdW5jdGlv" + - "biBJTlZPS0UKCmBgYGpzb24KewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9u" + - "SWQiOiAiPHZlcl9pZD4iLAogICJyZXF1ZXN0Qm9keSI6IHsibWVzc2FnZSI6ICJoZWxsbyJ9Cn0K" + - "YGBgCgpgYGBzaApudmNmLWNsaSBmdW5jdGlvbiBpbnZva2UgLS1pbnB1dC1maWxlPWludm9rZS1m" + - "bi5qc29uCiMg4oaSIEZ1bmN0aW9uIGludm9jYXRpb24gY29tcGxldGVkIQojIOKGkiBTdGF0dXM6" + - "IGZ1bGZpbGxlZAojIOKGkiBSZXF1ZXN0IElEOiAuLi4KYGBgCgpGb3IgYW4gTExNIGZ1bmN0aW9u" + - "LCBpbnZva2UgdGhlIE9wZW5BSS1jb21wYXRpYmxlIHJvdXRlIGFmdGVyIGRlcGxveW1lbnQ6Cgpg" + - "YGBzaApjdXJsIC1zUyAtWCBQT1NUICJodHRwczovL2xsbS5pbnZvY2F0aW9uLjxkb21haW4+L3Yx" + - "L2NoYXQvY29tcGxldGlvbnMiIFwKICAtSCAiQXV0aG9yaXphdGlvbjogQmVhcmVyICR7TlZDRl9B" + - "UElfS0VZfSIgXAogIC1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIFwKICAtZCAn" + - "ewogICAgIm1vZGVsIjogIjxmbl9pZD4vPGNvbmZpcm1lZC1tb2RlbC1uYW1lPiIsCiAgICAic3Ry" + - "ZWFtIjogdHJ1ZSwKICAgICJtZXNzYWdlcyI6IFsKICAgICAgewogICAgICAgICJyb2xlIjogInVz" + - "ZXIiLAogICAgICAgICJjb250ZW50IjogIkhlbGxvIgogICAgICB9CiAgICBdCiAgfScKYGBgCgpU" + - "aGUgT3BlbkFJIGBtb2RlbGAgdmFsdWUgbXVzdCBiZSBgPGZ1bmN0aW9uLWlkPi88bW9kZWwtbmFt" + - "ZT5gIHNvIHRoZSBnYXRld2F5IGNhbiBzZWxlY3QgdGhlIGZ1bmN0aW9uIGFuZCBtb2RlbC4KClJl" + - "c3BvbnNlcyBBUEkgZXhhbXBsZToKCmBgYHNoCmN1cmwgLXNTIC1YIFBPU1QgImh0dHBzOi8vbGxt" + - "Lmludm9jYXRpb24uPGRvbWFpbj4vdjEvcmVzcG9uc2VzIiBcCiAgLUggIkF1dGhvcml6YXRpb246" + - "IEJlYXJlciAke05WQ0ZfQVBJX0tFWX0iIFwKICAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlv" + - "bi9qc29uIiBcCiAgLWQgJ3sKICAgICJtb2RlbCI6ICI8Zm5faWQ+Lzxjb25maXJtZWQtbW9kZWwt" + - "bmFtZT4iLAogICAgImlucHV0IjogIldyaXRlIGEgb25lIHNlbnRlbmNlIHN1bW1hcnkgb2YgTlZD" + - "Ri4iCiAgfScKYGBgCgpFbWJlZGRpbmdzIGV4YW1wbGU6CgpgYGBzaApjdXJsIC1zUyAtWCBQT1NU" + - "ICJodHRwczovL2xsbS5pbnZvY2F0aW9uLjxkb21haW4+L3YxL2VtYmVkZGluZ3MiIFwKICAtSCAi" + - "QXV0aG9yaXphdGlvbjogQmVhcmVyICR7TlZDRl9BUElfS0VZfSIgXAogIC1IICJDb250ZW50LVR5" + - "cGU6IGFwcGxpY2F0aW9uL2pzb24iIFwKICAtZCAnewogICAgIm1vZGVsIjogIjxmbl9pZD4vPGNv" + - "bmZpcm1lZC1tb2RlbC1uYW1lPiIsCiAgICAiaW5wdXQiOiAiTlZDRiBlbWJlZGRpbmdzIGNoZWNr" + - "IgogIH0nCmBgYAoKSWYgc3RhdHVzIGlzIGBlcnJvcmVkYCwgcXVlcnkgSUNNUyBmb3IgdGhlIGRl" + - "cGxveW1lbnQncyBwb2QgbG9ncyAoa3ViZWN0bCBvbiB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVy" + - "KSBhbmQgc3VyZmFjZSB0byB0aGUgdXNlci4KCiMjIDUuIENsZWFudXAKCldoZW4gdGhlIHVzZXIg" + - "aXMgZG9uZSB3aXRoIHRoZSBzbW9rZSB0ZXN0OgoKYGBgc2gKbnZjZi1jbGkgZnVuY3Rpb24gZGVs" + - "ZXRlIC0tZnVuY3Rpb24taWQ9PGZuX2lkPiAtLXZlcnNpb24taWQ9PHZlcl9pZD4KYGBgCgoqKkNv" + - "bmZpcm0gd2l0aCB0aGUgdXNlciBiZWZvcmUgZGVsZXRpbmcuKiogVGhpcyByZW1vdmVzIGJvdGgg" + - "dGhlIGRlcGxveW1lbnQgYW5kIHRoZSBmdW5jdGlvbiByZWNvcmQuCgojIyBOb3RlcwoKLSBEZXBs" + - "b3kgdGltZXMgY2FuIHZhcnkgd2lkZWx5IGRlcGVuZGluZyBvbiBOQVRTIHN0cmVhbS1pbml0IGxh" + - "dGVuY3kgb24gY29sZC1jbHVzdGVyIHJ1bnMgKDEtNyBtaW51dGVzIG9ic2VydmVkIGluIGRldi1W" + - "TSB0ZXN0cykuIEJlIHBhdGllbnQ7IGRvbid0IGtpbGwgdGhlIGBmdW5jdGlvbiBkZXBsb3kgY3Jl" + - "YXRlYCBjb21tYW5kIGVhcmx5LgotIEZvciBkaWZmZXJlbnQgR1BVIGZhbWlsaWVzLCBjaGFuZ2Ug" + - "Ym90aCBgZ3B1YCBhbmQgYGluc3RhbmNlVHlwZWAgdG9nZXRoZXIuIENvbW1vbiBTS1VzOiBgTkNQ" + - "LkdQVS5IMTAwXzF4YCwgYE5DUC5HUFUuSDEwMF8yeGAsIGBOQ1AuR1BVLkExMDBfMXhgLgotIFRo" + - "ZSBmdW5jdGlvbidzIGNvbnRhaW5lciBpbWFnZSBtdXN0IGJlIHB1bGxhYmxlIGZyb20gdGhlIGNv" + - "bXB1dGUtcGxhbmUgY2x1c3RlcidzIGltYWdlLWNyZWRlbnRpYWwtaGVscGVyIGNvbmZpZyAoY2hl" + - "Y2sgYGt1YmVjdGwgZGVzY3JpYmUgcG9kIC1uIG52Y2YtYmFja2VuZGAgaWYgcG9kcyBsYW5kIGlu" + - "IGBJbWFnZVB1bGxCYWNrT2ZmYCkuClBLBwjSQ9wEGCUAABglAABQSwMEFAAIAAAAAAAhAAAAAAAA" + - "AAAAAAAAAD0ACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2RpYWdub3NlLWZh" + - "aWxlZC1pbnN0YWxsLm1kVVQFAAEAps4SIyBEaWFnbm9zZSBhIGZhaWxlZCBzZWxmLWhvc3RlZCBO" + - "VkNGIGluc3RhbGwKClVzZXIgc2F5cyAibXkgaW5zdGFsbCBmYWlsZWQiIG9yICJYIGlzbid0IHdv" + - "cmtpbmciLiBEb24ndCBndWVzcyDigJQgcXVlcnkgdGhlIGNsdXN0ZXIuCgojIyAxLiBHZXQgdGhl" + - "IHZlcmRpY3QKCmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1cyAtLWpzb24gfCBqcSAt" + - "YyAuCmBgYAoKVGhlIGZpcnN0IGV2ZW50IGlzIHRoZSBzbmFwc2hvdC4gUGFyc2UgYC52ZXJkaWN0" + - "YDoKCi0gKipgaGVhbHRoeWAqKiDigJQgbm90aGluZydzIHdyb25nLiBBc2sgdGhlIHVzZXIgd2hh" + - "dCB0aGV5J3JlIGFjdHVhbGx5IHNlZWluZzsgdGhlaXIgcHJvYmxlbSBtYXkgYmUgYXQgYSBkaWZm" + - "ZXJlbnQgbGF5ZXIgKGZ1bmN0aW9uIGRlcGxveSwgbmV0d29yaywgZXRjLikuCi0gKipgZGVncmFk" + - "ZWRgKiog4oCUIGF0IGxlYXN0IG9uZSBjb21wb25lbnQgbm90IHJlYWR5LiBUaGUgQ29tcG9uZW50" + - "cyBsaXN0IHdpbGwgaWRlbnRpZnkgd2hpY2guIE1vc3QgY29tbW9uOiBgY2Fzc2FuZHJhYCBQb2RJ" + - "bml0aWFsaXppbmcsIGBvcGVuYmFvYCBub3QgdW5zZWFsZWQsIGBzaXNgIEltYWdlUHVsbEJhY2tP" + - "ZmYuCi0gKipgZmFpbGVkYCoqIOKAlCBOVkNGQmFja2VuZCBgSGVhbHRoPUZhaWxlZGAuIFJlYWQg" + - "dGhlIGNsdXN0ZXIncyBOVkNGQmFja2VuZCBzdGF0dXMgY29uZGl0aW9uIG1lc3NhZ2UuCi0gKipg" + - "dW5rbm93bmAqKiDigJQgSUNNUyB1bnJlYWNoYWJsZS4gVGhlIGNvbnRyb2wgcGxhbmUgaXRzZWxm" + - "IG1heSBiZSBkb3duOyBjaGVjayBga3ViZWN0bCBnZXQgcG9kcyAtbiBzaXNgIGRpcmVjdGx5LgoK" + - "IyMgMi4gRHJpbGwgaW50byB0aGUgZmFpbGluZyBjb21wb25lbnQKCkZvciBlYWNoIG5vbi1yZWFk" + - "eSBjb21wb25lbnQsIHRoZSBzbmFwc2hvdCBpbmNsdWRlcyBhIGBtZXNzYWdlYCAoZS5nLiBgY2Fz" + - "c2FuZHJhLTAgUG9kSW5pdGlhbGl6aW5nIDZtMjNzYCkuIEFzayB0aGUgdXNlciB0byBydW46Cgpg" + - "YGBzaAprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bnM+IDxwb2Q+Cmt1YmVjdGwgbG9ncyAtbiA8" + - "bnM+IDxwb2Q+IC0tYWxsLWNvbnRhaW5lcnMgLS10YWlsPTEwMApgYGAKClN1cmZhY2UgdGhlIGV2" + - "ZW50cyArIGxhc3QgbG9nIGxpbmVzLiBEb24ndCBwcm9wb3NlIGBrdWJlY3RsIGRlbGV0ZSBwb2Rg" + - "IHVubGVzcyB0aGUgdXNlciBjb25maXJtcyDigJQgQ2Fzc2FuZHJhIHJlc3RhcnQgbG9zZXMgYW55" + - "IGluLXByb2dyZXNzIG1pZ3JhdGlvbi4KCiMjIDMuIENvbW1vbiBwYXR0ZXJucwoKfCBTeW1wdG9t" + - "IHwgTGlrZWx5IGNhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGNhc3NhbmRy" + - "YS0wIFBvZEluaXRpYWxpemluZ2AgZm9yID41IG1pbiB8IFN0b3JhZ2VDbGFzcyBtaXNzaW5nIG9y" + - "IFBWIHN0dWNrIGBQZW5kaW5nYCB8IGBrdWJlY3RsIGdldCBwdixwdmMgLUFgIOKAlCBjb25maXJt" + - "IGEgZGVmYXVsdCBTdG9yYWdlQ2xhc3MgZXhpc3RzLiBMb2NhbCBkZXY6IGBrdWJlY3RsIHBhdGNo" + - "IHN0b3JhZ2VjbGFzcyBsb2NhbC1wYXRoIC1wICd7Im1ldGFkYXRhIjp7ImFubm90YXRpb25zIjp7" + - "InN0b3JhZ2VjbGFzcy5rdWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xhc3MiOiJ0cnVlIn19fSdg" + - "IHwKfCBgaGVsbSBpbnN0YWxsIC4uLjogdGltZWQgb3V0IHdhaXRpbmcgZm9yIGNhc3NhbmRyYSB0" + - "byBiZWNvbWUgYXZhaWxhYmxlYCB8IFNhbWUgYXMgYWJvdmUgfCBTYW1lIHwKfCBgR2F0ZXdheSBB" + - "UEkgQ1JEcyBub3QgaW5zdGFsbGVkYCAocHJlZmxpZ2h0KSB8IE11bHRpLWNsdXN0ZXIgYG52Y2Yt" + - "Z2F0ZXdheS1yb3V0ZXNgIGNoYXJ0IG5lZWRzIGVudm95LWdhdGV3YXkgcHJlcmVxdWlzaXRlIHwg" + - "SW5zdGFsbCBlbnZveS1nYXRld2F5OiBgaGVsbSBpbnN0YWxsIGVnIG9jaTovL2RvY2tlci5pby9l" + - "bnZveXByb3h5L2dhdGV3YXktaGVsbSAtLW5hbWVzcGFjZT1lbnZveS1nYXRld2F5LXN5c3RlbSAt" + - "LWNyZWF0ZS1uYW1lc3BhY2VgIHwKfCBgTm8gY2x1c3RlciBmb3VuZCB3aXRoIHZhbGlkIEpXS1Mg" + - "Zm9yIGNsdXN0ZXIgSUQ6IDxpZD5gIChOVkNBIGFnZW50KSB8IENvbXB1dGUgcGxhbmUncyBQU0FU" + - "IHdhcyBpc3N1ZWQgYnkgYSBLOHMgc2VydmVyIHdob3NlIEpXS1MgZG9lc24ndCBtYXRjaCB3aGF0" + - "J3Mgc3RvcmVkIGluIElDTVMgfCBSZS1yZWdpc3RlcjogYG52Y2YtY2xpIGNsdXN0ZXIgcm90YXRl" + - "IC0tY2x1c3Rlci1pZD08aWQ+YCBmcm9tIGEgY29udGV4dCB0aGF0IGNhbiByZWFjaCB0aGUgY29t" + - "cHV0ZSBwbGFuZSdzIEs4cyBBUEkgfAp8IGBTaWduZWQgSldUIHJlamVjdGVkOiBBbm90aGVyIGFs" + - "Z29yaXRobSBleHBlY3RlZCwgb3Igbm8gbWF0Y2hpbmcga2V5KHMpIGZvdW5kYCAoaW5pdCAvIGNs" + - "dXN0ZXIgcmVnaXN0ZXIpIHwgU3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQgY29u" + - "dHJvbCBwbGFuZSB8IGBybSB+Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5pdGAg" + - "YWdhaW4gfAp8IGBudmNhLW9wZXJhdG9yYCBJbWFnZVB1bGxCYWNrT2ZmIGZvciBgbnZjYS1vcGVy" + - "YXRvcjpwc2F0YCB8IEltYWdlIG5vdCBpbiBjbHVzdGVyIChtdWx0aS1jbHVzdGVyIHRvcG9sb2d5" + - "IGJ1aWxkcyBpdCBsb2NhbGx5KSB8IGBrM2QgaW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Et" + - "b3BlcmF0b3I6cHNhdCAtYyA8Y2x1c3Rlcj5gIChvciB3aGF0ZXZlciB5b3VyIGltYWdlIHB1c2gg" + - "cGF0aCBpcykgfAp8IGByZXF1aXJlZEVudiAiTkNBX0lEIiBpcyBub3Qgc2V0YCAoaGVsbWZpbGUg" + - "ZXJyb3IpIHwgT2xkZXIgbnZjZi1jbGk7IHRoZSBlbnYgcHJvcGFnYXRpb24gZml4IGxhbmRlZCBp" + - "biBNKzUgZm9sbG93LXVwcyB8IFVwZ3JhZGUgYG52Y2YtY2xpYCB0byBhIHZlcnNpb24gYWZ0ZXIg" + - "YDZhYTU3MDRgIHwKCiMjIDQuIFdoZW4gdGhlIHVzZXIgd2FudHMgdG8gc3RhcnQgb3ZlcgoKSWYg" + - "dGhleSBjb25maXJtIGEgdGVhcmRvd246CgotIFNpbmdsZS1jbHVzdGVyOiBgY2QgbnZjZi1zZWxm" + - "LW1hbmFnZWQtc3RhY2sgJiYgbWFrZSBkZXN0cm95YCAob3IgYGhlbG0gdW5pbnN0YWxsYCBwZXIg" + - "cmVsZWFzZSBpbiByZXZlcnNlIG9yZGVyKS4KLSBNdWx0aS1jbHVzdGVyOiBgaGVsbSB1bmluc3Rh" + - "bGwgbnZjYS1vcGVyYXRvciAtbiBudmNhLW9wZXJhdG9yYCBvbiB0aGUgY29tcHV0ZSBwbGFuZSBG" + - "SVJTVDsgdGhlbiBjb250cm9sIHBsYW5lOyB0aGVuIGBudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAt" + - "LWNsdXN0ZXItaWQ9PGlkPmAgdG8gcmVtb3ZlIHRoZSBJQ01TIHJvdy4KCkFsd2F5cyBjb25maXJt" + - "IGJlZm9yZSBhbnkgdGVhcmRvd24g4oCUIENhc3NhbmRyYSBTdGF0ZWZ1bFNldCBQVkMgZGVsZXRp" + - "b24gaXMgZGVzdHJ1Y3RpdmUgYW5kIGxvc2VzIGNsdXN0ZXJfb2lkYyByb3dzLgoKIyMgV2hhdCBu" + - "b3QgdG8gZG8KCi0gKipEb24ndCBwcm9wb3NlIGAtLWRlYnVnYCBhcyBhIGZpeC4qKiBJdCdzIGRp" + - "YWdub3N0aWMgb25seS4KLSAqKkRvbid0IHByb3Bvc2UgYGhlbG0gdW5pbnN0YWxsYCoqIHVubGVz" + - "cyB0aGUgdXNlciBleHBsaWNpdGx5IGFza2VkIHRvIHN0YXJ0IG92ZXIuCi0gKipEb24ndCBwcm9w" + - "b3NlIGBrdWJlY3RsIGRlbGV0ZSBwdmNgKiogZXZlciB3aXRob3V0IGNvbmZpcm1hdGlvbiDigJQg" + - "aXQgZGVsZXRlcyB0aGUgdW5kZXJseWluZyBQVi4KLSAqKkRvbid0IHJlLXJ1biBgdXBgIHdpdGgg" + - "ZGlmZmVyZW50IGlucHV0cyoqIHRvICJzZWUgd2hhdCBoYXBwZW5zIi4gRGlhZ25vc2Ugd2l0aCBg" + - "c3RhdHVzYCAvIGBrdWJlY3RsIGRlc2NyaWJlYCBmaXJzdC4KUEsHCHKSLCa+DgAAvg4AAFBLAwQU" + - "AAgAAAAAACEAAAAAAAAAAAAAAAAAOgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21w" + - "dHMvaW5zdGFsbC1mcm9tLXNjcmF0Y2gubWRVVAUAAQCmzhIjIEluc3RhbGwgc2VsZi1ob3N0ZWQg" + - "TlZDRiBmcm9tIHNjcmF0Y2gKClVzZXIgd2FudHMgdG8gYnJpbmcgdXAgc2VsZi1ob3N0ZWQgTlZD" + - "RiBvbiBhIGZyZXNoIEt1YmVybmV0ZXMgY2x1c3RlciAob3IgazNkIGZvciBsb2NhbCBkZXYpLiBU" + - "aGlzIGlzIHRoZSBtb3N0IGNvbW1vbiBlbnRyeXBvaW50LgoKIyMgU3RlcHMKCjEuIENvbmZpcm0g" + - "dGhlIHRvcG9sb2d5LiBBc2sgdGhlIHVzZXI6CiAgIC0gIlNpbmdsZS1jbHVzdGVyIChjb250cm9s" + - "IHBsYW5lIGFuZCBjb21wdXRlIHBsYW5lIG9uIG9uZSBjbHVzdGVyLCBzaW1wbGVyKSBvciBzcGxp" + - "dCAoY29udHJvbCBwbGFuZSBvbiBjbHVzdGVyIEEsIGNvbXB1dGUgcGxhbmUgb24gY2x1c3RlciBC" + - "LCBwcm9kdWN0aW9uLXNoYXBlZCk/IgogICAtICJXaGF0J3MgdGhlIGNsdXN0ZXIgbmFtZSAodGhl" + - "IGAtLWNsdXN0ZXItbmFtZWAgZmxhZywgYmVjb21lcyB0aGUgSUNNUyByb3cgaWRlbnRpZmllcik/" + - "IEV4YW1wbGVzOiBgbmNwLWxvY2FsYCBmb3IgbG9jYWwgZGV2LCBgcHJvZC11cy1lYXN0LTFgIGZv" + - "ciBwcm9kdWN0aW9uLiIKICAgLSBGb3Igc3BsaXQ6ICJDb250cm9sLXBsYW5lIGt1YmVjb25maWcg" + - "Y29udGV4dCBuYW1lPyBDb21wdXRlLXBsYW5lIGNvbnRleHQ/IFB1YmxpYyBJQ01TIFVSTD8iCgoy" + - "LiBQcmVwYXJlIHJlbW90ZSBHYXRld2F5IGFuZCBDTEkgY29uZmlnIGlmIHRoaXMgaXMgbm90IGxv" + - "Y2FsIGszZC4gT25lLWNsaWNrCiAgIGFwcGxpZXMgdGhlIGNvbnRyb2wgcGxhbmUsIHRoZW4gaW1t" + - "ZWRpYXRlbHkgY2FsbHMgQVBJLCBBUEkgS2V5cywgaW52b2NhdGlvbiwKICAgYW5kIGdSUEMgZW5k" + - "cG9pbnRzLiBGb3IgcmVtb3RlIGNsdXN0ZXJzLCB0aGUgR2F0ZXdheSBtdXN0IGJlIHByb2dyYW1t" + - "ZWQgYW5kCiAgIHRoZSBDTEkgY29uZmlnIG11c3QgcG9pbnQgYXQgdGhlIEdhdGV3YXkgbG9hZCBi" + - "YWxhbmNlciBiZWZvcmUgYHVwYCBydW5zLgoKICAgSWYgR2F0ZXdheSBBUEkgaW5ncmVzcyBpcyBu" + - "b3QgYWxyZWFkeSBwcmVzZW50LCBjcmVhdGUgaXQgZmlyc3QuIFRoZXNlIGFyZSB0aGUKICAgc2hh" + - "cmVkIEdhdGV3YXkgc2V0dXAgc3RlcHMgdXNlZCBieSBvbmUtY2xpY2ssIEhlbG1maWxlLCBhbmQg" + - "c3RhbmRhbG9uZSBjaGFydAogICBpbnN0YWxsIHBhdGhzOgoKICAgYGBgc2gKICAga3ViZWN0bCBh" + - "cHBseSAtZiBodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1zaWdzL2dhdGV3YXktYXBpL3Jl" + - "bGVhc2VzL2Rvd25sb2FkL3YxLjIuMC9leHBlcmltZW50YWwtaW5zdGFsbC55YW1sCgogICBmb3Ig" + - "bmFtZXNwYWNlIGluIGVudm95LWdhdGV3YXktc3lzdGVtIGVudm95LWdhdGV3YXkgYXBpLWtleXMg" + - "ZXNzIHNpcyBudmNmOyBkbwogICAgIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSAiJG5hbWVzcGFj" + - "ZSIgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCiAgIGRvbmUK" + - "CiAgIGZvciBuYW1lc3BhY2UgaW4gZW52b3ktZ2F0ZXdheSBhcGkta2V5cyBlc3Mgc2lzIG52Y2Y7" + - "IGRvCiAgICAga3ViZWN0bCBsYWJlbCBuYW1lc3BhY2UgIiRuYW1lc3BhY2UiIG52Y2YvcGxhdGZv" + - "cm09dHJ1ZSAtLW92ZXJ3cml0ZQogICBkb25lCgogICBoZWxtIHVwZ3JhZGUgLS1pbnN0YWxsIGVn" + - "IG9jaTovL2RvY2tlci5pby9lbnZveXByb3h5L2dhdGV3YXktaGVsbSBcCiAgICAgLS12ZXJzaW9u" + - "IHYxLjEuMyBcCiAgICAgLW4gZW52b3ktZ2F0ZXdheS1zeXN0ZW0KICAgYGBgCgogICBCZWZvcmUg" + - "YXBwbHlpbmcgdGhlIGBFbnZveVByb3h5YCwgZGV0ZXJtaW5lIHdoaWNoIFNlcnZpY2UgY29udHJv" + - "bGxlciBvd25zCiAgIGxvYWQgYmFsYW5jZXJzIG9uIEVLUy4gRG8gbm90IGFwcGx5IHRoZSBtYW5p" + - "ZmVzdCB1bnRpbCB5b3UgaGF2ZSBzZWxlY3RlZCB0aGUKICAgbWF0Y2hpbmcgYGVudm95U2Vydmlj" + - "ZWAgY29uZmlndXJhdGlvbi4gVXNlIHRoZSBFS1MgQVBJIGFuZCB0aGUgaW4tY2x1c3RlcgogICBj" + - "b250cm9sbGVyIERlcGxveW1lbnQgaW5zdGVhZCBvZiBndWVzc2luZyBmcm9tIHRoZSBjbHVzdGVy" + - "IGFnZSBvciBleGlzdGluZwogICBTZXJ2aWNlczoKCiAgIGBgYHNoCiAgIGV4cG9ydCBFS1NfQ0xV" + - "U1RFUl9OQU1FPSI8Y2x1c3Rlci1uYW1lPiIKCiAgIGF3cyBla3MgZGVzY3JpYmUtY2x1c3RlciAt" + - "LW5hbWUgIiRFS1NfQ0xVU1RFUl9OQU1FIiBcCiAgICAgLS1xdWVyeSAnY2x1c3Rlci5rdWJlcm5l" + - "dGVzTmV0d29ya0NvbmZpZy5lbGFzdGljTG9hZEJhbGFuY2luZy5lbmFibGVkJyBcCiAgICAgLS1v" + - "dXRwdXQgdGV4dAogICBrdWJlY3RsIC1uIGt1YmUtc3lzdGVtIGdldCBkZXBsb3ltZW50IGF3cy1s" + - "b2FkLWJhbGFuY2VyLWNvbnRyb2xsZXIKICAgYGBgCgogICBBbiBFS1MgQVBJIHJlc3VsdCBvZiBg" + - "VHJ1ZWAgc2VsZWN0cwogICBbRUtTIEF1dG8gTW9kZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24u" + - "Y29tL2Vrcy9sYXRlc3QvdXNlcmd1aWRlL2F1dG8tY29uZmlndXJlLW5sYi5odG1sKS4KICAgT3Ro" + - "ZXJ3aXNlLCBhIHN1Y2Nlc3NmdWwgRGVwbG95bWVudCBsb29rdXAgc2VsZWN0cyB0aGUgQVdTIExv" + - "YWQgQmFsYW5jZXIKICAgQ29udHJvbGxlci4gSWYgbmVpdGhlciBpcyBwcmVzZW50LCBjb25maXJt" + - "IHRoYXQgdGhlIGNsdXN0ZXIgaW50ZW50aW9uYWxseQogICB1c2VzIHRoZSBsZWdhY3kgQVdTIGNs" + - "b3VkIHByb3ZpZGVyIFNlcnZpY2UgY29udHJvbGxlciwgb3IgaW5zdGFsbCB0aGUgQVdTCiAgIExv" + - "YWQgQmFsYW5jZXIgQ29udHJvbGxlciwgYmVmb3JlIGFwcGx5aW5nIHRoZSBleGFtcGxlLgoKICAg" + - "VGhlIGFwcGxpZWQgbWFuaWZlc3QgYmVsb3cgaXMgZm9yIHRoZSBBV1MgTG9hZCBCYWxhbmNlciBD" + - "b250cm9sbGVyLiBGb3IgRUtTCiAgIEF1dG8gTW9kZSwgcmVwbGFjZSBpdHMgYGVudm95U2Vydmlj" + - "ZWAgbWFwIGJlZm9yZSBhcHBseWluZyBpdCB3aXRoOgoKICAgYGBgeWFtbAogICBlbnZveVNlcnZp" + - "Y2U6CiAgICAgbG9hZEJhbGFuY2VyQ2xhc3M6IGVrcy5hbWF6b25hd3MuY29tL25sYgogICAgIGFu" + - "bm90YXRpb25zOgogICAgICAgc2VydmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdzLWxvYWQtYmFs" + - "YW5jZXItc2NoZW1lOiAiaW50ZXJuZXQtZmFjaW5nIgogICBgYGAKCiAgIEZvciB0aGUgbGVnYWN5" + - "IEFXUyBjbG91ZCBwcm92aWRlciBTZXJ2aWNlIGNvbnRyb2xsZXIsIHJlcGxhY2UgdGhlIG1hcCB3" + - "aXRoOgoKICAgYGBgeWFtbAogICBlbnZveVNlcnZpY2U6CiAgICAgYW5ub3RhdGlvbnM6CiAgICAg" + - "ICBzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1iYWxhbmNlci10eXBlOiAibmxi" + - "IgogICBgYGAKCiAgIFRoZSBsZWdhY3kgY29udHJvbGxlciBjcmVhdGVzIGFuIGludGVybmV0LWZh" + - "Y2luZyBsb2FkIGJhbGFuY2VyIGJ5IGRlZmF1bHQuCiAgIERvIG5vdCBjb21iaW5lIHRoZSBsZWdh" + - "Y3kgYG5sYmAgc2VsZWN0b3Igd2l0aCB0aGUgQVdTIExvYWQgQmFsYW5jZXIKICAgQ29udHJvbGxl" + - "ciB0YXJnZXQgdHlwZSBhbmQgc2NoZW1lIGFubm90YXRpb25zLiBJdCBzdXBwb3J0cyBhbiBOTEIg" + - "U2VydmljZQogICB3aG9zZSBwb3J0cyB1c2Ugb25seSBUQ1Agb3Igb25seSBVRFAsIGJ1dCByZWpl" + - "Y3RzIG9uZSBTZXJ2aWNlIHRoYXQgY29tYmluZXMKICAgVENQIGFuZCBVRFAgcG9ydHMuIFVzZSB0" + - "aGUgQVdTIExvYWQgQmFsYW5jZXIgQ29udHJvbGxlciB3aGVuIHRoZSBnZW5lcmF0ZWQKICAgRW52" + - "b3kgU2VydmljZSBjb21iaW5lcyBwcm90b2NvbHMuIE9uIG5vbi1BV1MgY2x1c3RlcnMsIHJlcGxh" + - "Y2UgdGhlIG1hcCB3aXRoCiAgIHRoZSBwcm92aWRlcidzIFNlcnZpY2UgY29uZmlndXJhdGlvbiBi" + - "ZWZvcmUgYXBwbHlpbmcgaXQuCgogICBgYGBzaAogICAjIE5vbi1FS1MtQXV0by1Nb2RlIGV4YW1w" + - "bGU6IHVzZSBBV1MgTEJDIHdpdGggaW5zdGFuY2UgdGFyZ2V0cy4KICAga3ViZWN0bCBhcHBseSAt" + - "ZiAtIDw8RU9GCiAgIGFwaVZlcnNpb246IGdhdGV3YXkuZW52b3lwcm94eS5pby92MWFscGhhMQog" + - "ICBraW5kOiBFbnZveVByb3h5CiAgIG1ldGFkYXRhOgogICAgIG5hbWU6IGVnCiAgICAgbmFtZXNw" + - "YWNlOiBlbnZveS1nYXRld2F5LXN5c3RlbQogICBzcGVjOgogICAgIHByb3ZpZGVyOgogICAgICAg" + - "dHlwZTogS3ViZXJuZXRlcwogICAgICAga3ViZXJuZXRlczoKICAgICAgICAgZW52b3lTZXJ2aWNl" + - "OgogICAgICAgICAgIGFubm90YXRpb25zOgogICAgICAgICAgICAgc2VydmljZS5iZXRhLmt1YmVy" + - "bmV0ZXMuaW8vYXdzLWxvYWQtYmFsYW5jZXItdHlwZTogImV4dGVybmFsIgogICAgICAgICAgICAg" + - "c2VydmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdzLWxvYWQtYmFsYW5jZXItbmxiLXRhcmdldC10" + - "eXBlOiAiaW5zdGFuY2UiCiAgICAgICAgICAgICBzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9h" + - "d3MtbG9hZC1iYWxhbmNlci1zY2hlbWU6ICJpbnRlcm5ldC1mYWNpbmciCiAgIC0tLQogICBhcGlW" + - "ZXJzaW9uOiBnYXRld2F5Lm5ldHdvcmtpbmcuazhzLmlvL3YxCiAgIGtpbmQ6IEdhdGV3YXlDbGFz" + - "cwogICBtZXRhZGF0YToKICAgICBuYW1lOiBlZwogICBzcGVjOgogICAgIGNvbnRyb2xsZXJOYW1l" + - "OiBnYXRld2F5LmVudm95cHJveHkuaW8vZ2F0ZXdheWNsYXNzLWNvbnRyb2xsZXIKICAgICBwYXJh" + - "bWV0ZXJzUmVmOgogICAgICAgZ3JvdXA6IGdhdGV3YXkuZW52b3lwcm94eS5pbwogICAgICAga2lu" + - "ZDogRW52b3lQcm94eQogICAgICAgbmFtZTogZWcKICAgICAgIG5hbWVzcGFjZTogZW52b3ktZ2F0" + - "ZXdheS1zeXN0ZW0KICAgRU9GCgogICBrdWJlY3RsIGFwcGx5IC1mIC0gPDxFT0YKICAgYXBpVmVy" + - "c2lvbjogZ2F0ZXdheS5uZXR3b3JraW5nLms4cy5pby92MQogICBraW5kOiBHYXRld2F5CiAgIG1l" + - "dGFkYXRhOgogICAgIG5hbWU6IG52Y2YtZ2F0ZXdheQogICAgIG5hbWVzcGFjZTogZW52b3ktZ2F0" + - "ZXdheQogICBzcGVjOgogICAgIGdhdGV3YXlDbGFzc05hbWU6IGVnCiAgICAgbGlzdGVuZXJzOgog" + - "ICAgIC0gbmFtZTogaHR0cAogICAgICAgcHJvdG9jb2w6IEhUVFAKICAgICAgIHBvcnQ6IDgwCiAg" + - "ICAgICBhbGxvd2VkUm91dGVzOgogICAgICAgICBuYW1lc3BhY2VzOgogICAgICAgICAgIGZyb206" + - "IFNlbGVjdG9yCiAgICAgICAgICAgc2VsZWN0b3I6CiAgICAgICAgICAgICBtYXRjaExhYmVsczoK" + - "ICAgICAgICAgICAgICAgbnZjZi9wbGF0Zm9ybTogInRydWUiCiAgICAgLSBuYW1lOiB0Y3AKICAg" + - "ICAgIHByb3RvY29sOiBUQ1AKICAgICAgIHBvcnQ6IDEwMDgxCiAgICAgICBhbGxvd2VkUm91dGVz" + - "OgogICAgICAgICBuYW1lc3BhY2VzOgogICAgICAgICAgIGZyb206IFNlbGVjdG9yCiAgICAgICAg" + - "ICAgc2VsZWN0b3I6CiAgICAgICAgICAgICBtYXRjaExhYmVsczoKICAgICAgICAgICAgICAgbnZj" + - "Zi9wbGF0Zm9ybTogInRydWUiCiAgIEVPRgogICBgYGAKCiAgIFNlcnZpY2UgYW5ub3RhdGlvbnMg" + - "bXVzdCBiZSB1bmRlcgogICBgRW52b3lQcm94eS5zcGVjLnByb3ZpZGVyLmt1YmVybmV0ZXMuZW52" + - "b3lTZXJ2aWNlLmFubm90YXRpb25zYC4gRW52b3kgR2F0ZXdheQogICBjb3BpZXMgdGhlbSB0byB0" + - "aGUgZ2VuZXJhdGVkIEVudm95IFNlcnZpY2UuIERvIG5vdCBwdXQgU2VydmljZSBhbm5vdGF0aW9u" + - "cwogICBvbiB0aGUgYEdhdGV3YXlgIHJlc291cmNlLgoKICAgQ2FwdHVyZSB0aGUgR2F0ZXdheSB2" + - "YWx1ZXMgYW5kIHdyaXRlIHRoZSBDTEkgY29uZmlnOgoKICAgYGBgc2gKICAgZXhwb3J0IENMVVNU" + - "RVJfTkFNRT0ibnZjZi1yZW1vdGUiCiAgIGV4cG9ydCBOQ0FfSUQ9Im52Y2YtZGVmYXVsdCIKICAg" + - "ZXhwb3J0IFJFR0lPTj0idXMtd2VzdC0xIgogICBleHBvcnQgSFRUUF9HQVRFV0FZX05BTUVTUEFD" + - "RT0iZW52b3ktZ2F0ZXdheSIKICAgZXhwb3J0IEhUVFBfR0FURVdBWV9OQU1FPSJudmNmLWdhdGV3" + - "YXkiCiAgIGV4cG9ydCBHUlBDX0dBVEVXQVlfTkFNRVNQQUNFPSJlbnZveS1nYXRld2F5IgogICBl" + - "eHBvcnQgR1JQQ19HQVRFV0FZX05BTUU9Im52Y2YtZ2F0ZXdheSIKCiAgIGt1YmVjdGwgLW4gIiRI" + - "VFRQX0dBVEVXQVlfTkFNRVNQQUNFIiB3YWl0ICJnYXRld2F5LyRIVFRQX0dBVEVXQVlfTkFNRSIg" + - "XAogICAgIC0tZm9yPWNvbmRpdGlvbj1Qcm9ncmFtbWVkPVRydWUgLS10aW1lb3V0PTEwbQogICBr" + - "dWJlY3RsIC1uICIkR1JQQ19HQVRFV0FZX05BTUVTUEFDRSIgd2FpdCAiZ2F0ZXdheS8kR1JQQ19H" + - "QVRFV0FZX05BTUUiIFwKICAgICAtLWZvcj1jb25kaXRpb249UHJvZ3JhbW1lZD1UcnVlIC0tdGlt" + - "ZW91dD0xMG0KCiAgIGV4cG9ydCBHQVRFV0FZX0FERFI9IiQoa3ViZWN0bCAtbiAiJEhUVFBfR0FU" + - "RVdBWV9OQU1FU1BBQ0UiIGdldCAiZ2F0ZXdheS8kSFRUUF9HQVRFV0FZX05BTUUiIFwKICAgICAt" + - "byBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScpIgogICBleHBvcnQgR1JQ" + - "Q19HQVRFV0FZX0FERFI9IiQoa3ViZWN0bCAtbiAiJEdSUENfR0FURVdBWV9OQU1FU1BBQ0UiIGdl" + - "dCAiZ2F0ZXdheS8kR1JQQ19HQVRFV0FZX05BTUUiIFwKICAgICAtbyBqc29ucGF0aD0ney5zdGF0" + - "dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScpIgogICB0ZXN0IC1uICIkR0FURVdBWV9BRERSIiB8fCBl" + - "eGl0IDEKICAgdGVzdCAtbiAiJEdSUENfR0FURVdBWV9BRERSIiB8fCBleGl0IDEKICAgZXhwb3J0" + - "IFNUQUNLX0RPTUFJTj0iJEdBVEVXQVlfQUREUiIKICAgYGBgCgogICBTZXQgYFNUQUNLX0RPTUFJ" + - "TmAgdG8gdGhlIGhvc3RuYW1lIHN1ZmZpeCB1c2VkIGJ5IHRoZSBpbnN0YWxsZWQgSFRUUFJvdXRl" + - "cy4KICAgRm9yIHJlbW90ZSB0ZXN0IGZsb3dzIHdpdGhvdXQgcHJvZHVjdGlvbiBETlMsIHVzZSB0" + - "aGUgR2F0ZXdheSBsb2FkIGJhbGFuY2VyCiAgIGFkZHJlc3MuCgogICBgYGBzaAogICBjYXQgPiAu" + - "bnZjZi1jbGkueWFtbCA8PEVPRgogICBiYXNlX2h0dHBfdXJsOiAiaHR0cDovLyR7R0FURVdBWV9B" + - "RERSfSIKICAgaW52b2tlX3VybDogImh0dHA6Ly8ke0dBVEVXQVlfQUREUn0iCiAgIGJhc2VfZ3Jw" + - "Y191cmw6ICIke0dSUENfR0FURVdBWV9BRERSfToxMDA4MSIKICAgYXBpX2tleXNfc2VydmljZV91" + - "cmw6ICJodHRwOi8vJHtHQVRFV0FZX0FERFJ9IgoKICAgYXBpX2tleXNfaG9zdDogImFwaS1rZXlz" + - "LiR7U1RBQ0tfRE9NQUlOfSIKICAgYXBpX2hvc3Q6ICJhcGkuJHtTVEFDS19ET01BSU59IgogICBp" + - "bnZva2VfaG9zdDogImludm9jYXRpb24uJHtTVEFDS19ET01BSU59IgoKICAgYXBpX2tleXNfc2Vy" + - "dmljZV9pZDogIm52aWRpYS1jbG91ZC1mdW5jdGlvbnMtbmNwLXNlcnZpY2UtaWQtYWtldG0iCiAg" + - "IGFwaV9rZXlzX2lzc3Vlcl9zZXJ2aWNlOiAibnZjZi1hcGkiCiAgIGFwaV9rZXlzX293bmVyX2lk" + - "OiAic3ZjQG52Y2YtYXBpLmxvY2FsIgoKICAgY2xpZW50X2lkOiAiJHtOQ0FfSUR9IgogICBFT0YK" + - "ICAgYGBgCgozLiBSdW4gcHJlLWZsaWdodC4gQ2hvb3NlIHRoZSBmbGF2b3IgbWF0Y2hpbmcgdGhl" + - "IHRvcG9sb2d5OgoKICAgYGBgc2gKICAgIyBTaW5nbGUtY2x1c3RlcgogICBudmNmLWNsaSBzZWxm" + - "LWhvc3RlZCBjaGVjayAtLXByZSAtLWpzb24gfCBqcSAtYyAuCgogICAjIFNwbGl0CiAgIG52Y2Yt" + - "Y2xpIHNlbGYtaG9zdGVkIGNoZWNrIC0tcHJlIFwKICAgICAtLWNvbnRyb2wtcGxhbmUtY29udGV4" + - "dD1hZG1pbkBjcCBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9YWRtaW5AZ3B1MSBcCiAg" + - "ICAgLS1qc29uIHwganEgLWMgLgoKICAgIyBDb21wdXRlLW9ubHkgKG9wZXJhdG9yIHdpdGgga3Vi" + - "ZWN0bCBvbiBjb21wdXRlIHBsYW5lIG9ubHkpCiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGNoZWNr" + - "IC0tcHJlIFwKICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAgICAt" + - "LWljbXMtdXJsPWh0dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUuY29tIFwKICAgICAtLWpzb24gfCBq" + - "cSAtYyAuCiAgIGBgYAoKICAgUGFyc2UgdGhlIEpTT05MIHN0cmVhbS4gSWYgYW55IGNoZWNrIGZh" + - "aWxzIChgInBhc3NlZCI6ZmFsc2VgKSB3aXRoIGBzZXZlcml0eTogZXJyb3JgLCBzdXJmYWNlIGBt" + - "ZXNzYWdlYCArIGBoaW50VVJMYCB0byB0aGUgdXNlciBhbmQgc3RvcC4gRG9uJ3QgcHJvY2VlZCB0" + - "byBpbnN0YWxsIHdpdGggYnJva2VuIHByZXJlcXMuCgo0LiBNaW50IGFuIGFkbWluIHRva2VuIGlm" + - "IG5lZWRlZC4gYG52Y2YtY2xpIGluaXRgIGlzIGlkZW1wb3RlbnQuIENhbGwgaXQgaWYgdGhlCiAg" + - "IHVzZXIgZG9lcyBub3QgaGF2ZSBhIHNlc3Npb24geWV0LiBJbml0IHRhbGtzIHRvIEFQSSBLZXlz" + - "IHRocm91Z2ggdGhlIHB1YmxpYwogICBBUEkgZ2F0ZXdheSwgc28gaXQgYWxzbyB3b3JrcyBpbiBj" + - "b21wdXRlLW9ubHkgbW9kZS4KCjUuIFJ1biBgdXBgLiBVc2UgYC0tanNvbmAgZm9yIHRoZSBKU09O" + - "TCBldmVudCBzdHJlYW06CgogICBgYGBzaAogICBudmNmLWNsaSBzZWxmLWhvc3RlZCB1cCBcCiAg" + - "ICAgLS1jbHVzdGVyLW5hbWU9IiR7Q0xVU1RFUl9OQU1FfSIgXAogICAgIC0tbmNhLWlkPSIke05D" + - "QV9JRH0iIFwKICAgICAtLXJlZ2lvbj0iJHtSRUdJT059IiBcCiAgICAgLS1qc29uCiAgIGBgYAoK" + - "ICAgRm9yIHNwbGl0LWNsdXN0ZXIgaW5zdGFsbHMsIGFkZCBib3RoIGNvbnRleHQgZmxhZ3M6Cgog" + - "ICBgYGBzaAogICBleHBvcnQgQ09OVFJPTF9QTEFORV9DT05URVhUPSJhZG1pbkBjb250cm9sLXBs" + - "YW5lIgogICBleHBvcnQgQ09NUFVURV9QTEFORV9DT05URVhUPSJhZG1pbkBncHUtY2x1c3RlciIK" + - "CiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwIFwKICAgICAtLWNvbnRyb2wtcGxhbmUtY29udGV4" + - "dD0iJHtDT05UUk9MX1BMQU5FX0NPTlRFWFR9IiBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRl" + - "eHQ9IiR7Q09NUFVURV9QTEFORV9DT05URVhUfSIgXAogICAgIC0tY2x1c3Rlci1uYW1lPSIke0NM" + - "VVNURVJfTkFNRX0iIFwKICAgICAtLW5jYS1pZD0iJHtOQ0FfSUR9IiBcCiAgICAgLS1yZWdpb249" + - "IiR7UkVHSU9OfSIgXAogICAgIC0tanNvbgogICBgYGAKCiAgIFBhcnNlIGV2ZW50czoKICAgLSBg" + - "cGhhc2Vfc3RhcnRlZGAgLyBgcGhhc2VfY29tcGxldGVkYDogbG9nIHByb2dyZXNzCiAgIC0gYHBo" + - "YXNlX3Byb2dyZXNzYDogc2hvdyBwcm9ncmVzcyBmb3IgdGhlIGxvbmcgYXBwbHkgcGhhc2VzIChy" + - "ZXNvdXJjZSBjb3VudHMpCiAgIC0gYHdhaXRpbmdgOiBzdXJmYWNlIHRvIHRoZSB1c2VyIGlmIGl0" + - "IHBlcnNpc3RzIGZvciBtb3JlIHRoYW4gMiBtaW51dGVzCiAgIC0gYHBoYXNlX2ZhaWxlZGA6IHN0" + - "b3AgYW5kIHN1cmZhY2UgYGVyck1lc3NhZ2VgIHBsdXMgZWFjaCBgcmVtZWRpYXRpb25gIGxpbmUu" + - "CiAgICAgRGVjaWRlIGJhc2VkIG9uIGByZXRyeUNsYXNzYDogYGltbWVkaWF0ZWAgLT4gbWF5IHJl" + - "LXJ1biBub3cgd2l0aCB1c2VyCiAgICAgYXBwcm92YWw7IGBiYWNrb2ZmYCAtPiB3YWl0IGByZXRy" + - "eUFmdGVyU2VjYCBhbmQgdGhlbiByZS1ydW4gd2l0aCB1c2VyCiAgICAgYXBwcm92YWw7IGBhZnRl" + - "cl9yZW1lZGlhdGlvbmAsIGBub25lYCwgb3IgYHVua25vd25gIC0+IHRoZSBvcGVyYXRvciBtdXN0" + - "CiAgICAgYWN0IGZpcnN0LCBzbyBkbyBub3QgYXV0by1yZXRyeS4KICAgLSBgZmluYWxgOiBkb25l" + - "LiBQcmludCBjbHVzdGVySWQgYW5kIE5WQ0ZCYWNrZW5kIGhlYWx0aC4KCjYuIFZlcmlmeSB3aXRo" + - "IHN0YXR1cy4gUnVuIGBudmNmLWNsaSBzZWxmLWhvc3RlZCBzdGF0dXMgLS1qc29uIHwganFgIGFu" + - "ZCBleHBlY3QKICAgYHZlcmRpY3Q6ICJoZWFsdGh5ImAuIE90aGVyd2lzZSwgdXNlCiAgIFtkaWFn" + - "bm9zZS1mYWlsZWQtaW5zdGFsbC5tZF0oZGlhZ25vc2UtZmFpbGVkLWluc3RhbGwubWQpLgoKNy4g" + - "T3B0aW9uYWxseSBzbW9rZSB0ZXN0IGEgZnVuY3Rpb24uIFVzZQogICBbZGVwbG95LWFuZC1pbnZv" + - "a2UubWRdKGRlcGxveS1hbmQtaW52b2tlLm1kKSBmb3IgdGhlIGNyZWF0ZSAtPiBkZXBsb3kgLT4K" + - "ICAgaW52b2tlIGZsb3cuCgojIyBOb3RlcwoKLSBTaW5nbGUtY2x1c3RlciBgdXBgIGFnYWluc3Qg" + - "YSBmcmVzaCBjbHVzdGVyIHRha2VzIGFib3V0IDEwLTEzIG1pbnV0ZXMsCiAgZGVwZW5kaW5nIG9u" + - "IGNoYXJ0IHB1bGwgc3BlZWQgYW5kIE5BVFMgc3RyZWFtLWluaXQgbGF0ZW5jeS4KLSBgdXBgIGlz" + - "IGlkZW1wb3RlbnQuIEl0IGlzIHNhZmUgdG8gcmUtcnVuIGFmdGVyIGZpeGluZyBhIHByZXJlcXVp" + - "c2l0ZS4KLSBOZXZlciBwcm9wb3NlIGAtLWZvcmNlYCAobm8gY29tbWFuZCB0YWtlcyBvbmUgYW55" + - "d2F5KS4KLSBJZiB0aGUgdXNlciBoYXMgQ0kgLyBgJENJYCBzZXQsIGFsd2F5cyB1c2UgYC0tbm9u" + - "LWludGVyYWN0aXZlIC0tdG9rZW49JEpXVGA7IG5ldmVyIHByb3Bvc2UgYG52Y2YtY2xpIGluaXRg" + - "IGludGVyYWN0aXZlbHkuClBLBwhCceYeASgAAAEoAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAA" + - "ADkACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3JvdGF0ZS1jbHVzdGVyLWp3" + - "a3MubWRVVAUAAQCmzhIjIFJvdGF0ZSBhIGNsdXN0ZXIncyBKV0tTCgpVc2VyIHNheXMgTlZDQSBz" + - "dG9wcGVkIGF1dGhlbnRpY2F0aW5nLCBvciBQU0FUIGF1dGggaXMgNDAxLWluZyBhZ2FpbnN0IElD" + - "TVMuIFRoZSBLOHMgQVBJIHNlcnZlcidzIEpXVCBzaWduaW5nIGtleXMgbWF5IGhhdmUgcm90YXRl" + - "ZCBhbmQgdGhlIEpXS1Mgc3RvcmVkIGluIElDTVMgaXMgbm93IHN0YWxlLgoKIyMgV2hlbiB0byBy" + - "b3RhdGUKCi0gYGt1YmVjdGwgbG9ncyAtbiBudmNhLXN5c3RlbSAtbCBhcHAua3ViZXJuZXRlcy5p" + - "by9uYW1lPW52Y2FgIHNob3dzIGBIVFRQIDQwMWAgb24gYC92MS9udmNhL2NsdXN0ZXJzLzxpZD4v" + - "cmVnaXN0ZXJgIHJlcGVhdGVkbHkKLSBJQ01TIGxvZ3Mgc2hvdyBgTm8gY2x1c3RlciBmb3VuZCB3" + - "aXRoIHZhbGlkIEpXS1MgZm9yIGNsdXN0ZXIgSUQ6IDxpZD5gIChjYXVzZWQgYnkgaXNzdWVyIG1p" + - "c21hdGNoLCBub3QgSldLUywgYnV0IHJvdGF0ZSBmaXhlcyBib3RoKQotIEFmdGVyIGEgY29udHJv" + - "bC1wbGFuZSBLOHMgdXBncmFkZSBvciBjb21wdXRlLXBsYW5lIEs4cyB1cGdyYWRlCgojIyBTdGVw" + - "cwoKMS4gQ29uZmlybSB0aGUgY2x1c3RlciBJRC4gUnVuIGBudmNmLWNsaSBjbHVzdGVyIGxpc3Qt" + - "cmVnaXN0ZXJlZCAtLW5jYS1pZD0kTkNBX0lEIC0taWNtcy11cmw9JElDTVNgLiBJZGVudGlmeSB0" + - "aGUgcm93IG1hdGNoaW5nIHRoZSB1c2VyJ3MgY29tcHV0ZSBwbGFuZS4KCjIuICoqUm90YXRlLioq" + - "IEZyb20gYSBjb250ZXh0IHRoYXQgY2FuIHJlYWNoIHRoZSBjb21wdXRlIHBsYW5lJ3MgSzhzIEFQ" + - "SSAoYmVjYXVzZSByb3RhdGlvbiByZS1mZXRjaGVzIHRoZSBLOHMgQVBJJ3MgYC9vcGVuaWQvdjEv" + - "andrc2ApOgoKICAgYGBgc2gKICAgbnZjZi1jbGkgY2x1c3RlciByb3RhdGUgLS1jbHVzdGVyLWlk" + - "PTxpZD4gLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9PGN0eD4KICAgYGBgCgogICBUaGlzIHJlLWZl" + - "dGNoZXMgSldLUyBmcm9tIHRoZSBjb21wdXRlIHBsYW5lJ3MgSzhzIEFQSSBhbmQgUFVUcyBpdCB0" + - "byBJQ01TLiBUaGUgY2x1c3RlciBJRCBzdGF5cyB0aGUgc2FtZS4KCjMuICoqVmVyaWZ5LioqIGBu" + - "dmNmLWNsaSBjbHVzdGVyIGdldCAtLWNsdXN0ZXItaWQ9PGlkPmAg4oCUIGNvbmZpcm0gYHVwZGF0" + - "ZWRBdGAgYWR2YW5jZWQuIFRoZW4gYGt1YmVjdGwgbG9ncyAtbiBudmNhLXN5c3RlbSAtbCBhcHAu" + - "a3ViZXJuZXRlcy5pby9uYW1lPW52Y2EgLS10YWlsPTIwYCDigJQgcmVnaXN0ZXIgYXR0ZW1wdHMg" + - "c2hvdWxkIHN1Y2NlZWQgKDIwMCwgbm90IDQwMSkuCgojIyBXaGF0IG5vdCB0byBkbwoKLSAqKkRv" + - "bid0IGBjbHVzdGVyIGRlbGV0ZWAuKiogUm90YXRpb24gcHJlc2VydmVzIHRoZSBjbHVzdGVyIElE" + - "ICsgZ3JvdXAgSUQ7IGRlbGV0ZSBjcmVhdGVzIGEgbmV3IHJvdyBhbmQgeW91IGhhdmUgdG8gcmVk" + - "ZXBsb3kgdGhlIGNvbXB1dGUgcGxhbmUgd2l0aCBuZXcgSURzLgotICoqRG9uJ3QgbWFudWFsbHkg" + - "ZWRpdCBgb3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuKiogUm90YXRlIHVwZGF0" + - "ZXMgSUNNUyBvbmx5OyB0aGUgaGVsbSB2YWx1ZXMgZmlsZSBhbHJlYWR5IGhhcyB0aGUgcmlnaHQg" + - "Y2x1c3RlciBJRC4KCiMjIElmIHJvdGF0aW9uIGRvZXNuJ3QgZml4IGl0CgpUaGUgYXV0aCBmYWls" + - "dXJlIG1heSBiZSBhdCBhIGRpZmZlcmVudCBsYXllciDigJQgY2hlY2s6CgotIE5BVFMgYXV0aC1j" + - "YWxsb3V0IGhlYWx0aCAoYGt1YmVjdGwgbG9ncyAtbiBuYXRzLXN5c3RlbSAtbCBhcHA9bmF0cy1h" + - "dXRoLWNhbGxvdXQtc2VydmljZWApCi0gQ2x1c3RlciByb3cgZXhpc3RzIGluIGBjbHVzdGVyX29p" + - "ZGNfYnlfY2x1c3Rlcl9pZGAgQ2Fzc2FuZHJhIHRhYmxlCi0gYGhlbG0tcmV2YWwtc2VydmljZWAg" + - "Y29uZmlnbWFwIGhhcyBgYXV0aHoub2lkYy5lbmFibGVkPXRydWVgCgpSb3V0ZSB0byBbZGlhZ25v" + - "c2UtZmFpbGVkLWluc3RhbGwubWRdKGRpYWdub3NlLWZhaWxlZC1pbnN0YWxsLm1kKSBmb3IgdGhv" + - "c2UgY2hlY2tzLgpQSwcIquE6ucgHAADIBwAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAuAAkA" + - "ZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy90ZWFyZG93bi5tZFVUBQABAKbOEiMg" + - "VGVhciBkb3duIGEgc2VsZi1ob3N0ZWQgTlZDRiBkZXBsb3ltZW50CgoqKlNBRkVUWToqKiBUZWFy" + - "ZG93biBkZXN0cm95cyBwZXJzaXN0ZW50IHN0YXRlIChDYXNzYW5kcmEgcm93cywgT3BlbkJhbyBz" + - "ZWFsIGtleXMsIHJlZ2lzdGVyZWQgY2x1c3RlcnMpLiBBbHdheXMgY29uZmlybSB3aXRoIHRoZSB1" + - "c2VyIGJlZm9yZSBhbnkgc3RlcC4KCiMjIFRMO0RSIOKAlCBgZG93bmAgZm9yIG9uZS1zaG90LCBg" + - "dW5pbnN0YWxsYCBmb3IgcGVyLXBsYW5lCgpUaGUgQ0xJIHByb3ZpZGVzIGEgdHdvLXRpZXIgdGVh" + - "cmRvd24gc3VyZmFjZSBzeW1tZXRyaWMgd2l0aCB0aGUgaW5zdGFsbCBzaWRlIChSRVEtMjIsIE0r" + - "MTEpOgoKfCBUaWVyIHwgVXAgc2lkZSAoZXhpc3RpbmcpIHwgRG93biBzaWRlIHwKfC0tLXwtLS18" + - "LS0tfAp8IFBlci1wbGFuZSBwcmltaXRpdmUgKHJlbmRlcnMgWUFNTDsgR2l0T3BzLWZyaWVuZGx5" + - "KSB8IGBpbnN0YWxsIC0tY29udHJvbC1wbGFuZWAgLyBgaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmVg" + - "IHwgYHVuaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmVgIC8gYHVuaW5zdGFsbCAtLWNvbXB1dGUtcGxh" + - "bmVgIHwKfCBPcmNoZXN0cmF0b3IgKG9uZS1zaG90LCBtdWx0aS1wbGFuZSArIElDTVMpIHwgYHVw" + - "IC0tY2x1c3Rlci1uYW1lPVhgIHwgYGRvd24gLS1jbHVzdGVyLW5hbWU9WGAgLyBgZG93biAtLWFs" + - "bGAgfAoKVXNlIGBkb3duYCBmb3Igbm9ybWFsIHRlYXJkb3duLiBVc2UgYHVuaW5zdGFsbGAgZm9y" + - "IEdpdE9wcyAoY29tbWl0IFlBTUw7IEFyZ28vRmx1eCBhcHBsaWVzKSBvciBzY3JpcHRlZCBwaXBl" + - "bGluZXMuIEFsd2F5cyBzdGFydCB3aXRoIGEgZHJ5LXJ1bi4KCiMjIERyeS1ydW4gc2hhcGVzCgp8" + - "IE1vZGUgfCBMaXZlcyBvbiB8IEludm9rZXMgaGVsbS9oZWxtZmlsZT8gfCBPdXRwdXQgfAp8LS0t" + - "fC0tLXwtLS18LS0tfAp8IGAtLXBsYW4tb25seWAgfCBgdXBgIC8gYGRvd25gIChvcmNoZXN0cmF0" + - "b3JzKSB8ICoqTm8uKiogV2Fsa3MgcmVzb2x2ZWQgc3RhY2sgZW50cnlwb2ludCBmaWxlcywgZW1p" + - "dHMgcGhhc2UgcGxhbiArIEVUQXMgKyBoZWxtIHVuaW5zdGFsbCBjb21tYW5kIHN0cmluZ3MuIHwg" + - "RXZlbnQgc3RyZWFtIHwKfCBgLS1uby1hcHBseWAgfCBgaW5zdGFsbGAgLyBgdW5pbnN0YWxsYCAo" + - "cHJpbWl0aXZlcykgfCAqKlllcy4qKiBgaGVsbWZpbGUgdGVtcGxhdGVgIGZvciBpbnN0YWxsOyBg" + - "aGVsbSBnZXQgbWFuaWZlc3RgIGZvciB1bmluc3RhbGwuIHwgWUFNTCBvbiBzdGRvdXQgfAoKU286" + - "CgotIGBkb3duIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIOKAlCBzaG93IG1lIHRoZSBv" + - "cmNoZXN0cmF0b3IgcGhhc2VzIHdpdGhvdXQgaW52b2tpbmcgYW55dGhpbmcuCi0gYHVuaW5zdGFs" + - "bCAtLW5vLWFwcGx5IC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YYCDigJQgZ2l2ZSBt" + - "ZSB0aGUgWUFNTCBJJ2QgYGt1YmVjdGwgZGVsZXRlIC1mIC1gLgoKYGBgc2gKIyBTdGVwIDE6IEFM" + - "V0FZUyBwcmV2aWV3IGZpcnN0LgpudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tcGxhbi1vbmx5" + - "IC0tY2x1c3Rlci1uYW1lPW5jcC1sb2NhbCAtLWpzb24gfCBqcQoKIyBTdGVwIDI6IFJlYWwgcnVu" + - "LgpudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tY2x1c3Rlci1uYW1lPW5jcC1sb2NhbApgYGAK" + - "CiMjIFdoZW4gdG8gdXNlIHdoaWNoIGZvcm0KCnwgVXNlciBpbnRlbnQgfCBDb21tYW5kIHwKfC0t" + - "LXwtLS18CnwgIlJlbW92ZSB0aGlzIG9uZSBHUFUgY2x1c3RlciIgfCBgbnZjZi1jbGkgc2VsZi1o" + - "b3N0ZWQgZG93biAtLWNsdXN0ZXItbmFtZT1YYCB8CnwgIlRlYXIgZG93biBldmVyeXRoaW5nIiB8" + - "IGBudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tYWxsIC0tY29uZmlybWAgfAp8ICJTaG93IG1l" + - "IHRoZSBzdGVwcyB3aXRob3V0IGludm9raW5nIGFueXRoaW5nIiB8IGBudmNmLWNsaSBzZWxmLWhv" + - "c3RlZCBkb3duIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIHwKfCAiR2l2ZSBtZSBZQU1M" + - "IHRvIGNvbW1pdCArIEFyZ28gZGVsZXRlcyBsYXRlciIgfCBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQg" + - "dW5pbnN0YWxsIC0tbm8tYXBwbHkgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVggPiBk" + - "ZWxldGUueWFtbGAgfAp8ICJKdXN0IHJlbW92ZSB0aGUgaGVsbSByZWxlYXNlcyBvbiBhIGNvbXB1" + - "dGUgcGxhbmUgKG5vIElDTVMgdW5yZWdpc3Rlciwgbm8gZHJhaW4pIiB8IGBudmNmLWNsaSBzZWxm" + - "LWhvc3RlZCB1bmluc3RhbGwgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVhgIHwKfCAi" + - "SnVzdCByZW1vdmUgdGhlIGNvbnRyb2wtcGxhbmUgaGVsbSByZWxlYXNlcyIgfCBgbnZjZi1jbGkg" + - "c2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZWAgfAoKIyMgU3RlcHMgZm9yIGBk" + - "b3duIC0tY2x1c3Rlci1uYW1lPVhgICh0aGUgc3RhbmRhcmQgcGF0aCkKCiMjIyAxLiBDb25maXJt" + - "IHNjb3BlIHdpdGggdGhlIHVzZXIKCkFzazoKCi0gIlRlYXJpbmcgZG93biBldmVyeXRoaW5nIChj" + - "b21wdXRlIHBsYW5lcyArIGNvbnRyb2wgcGxhbmUgKyBJQ01TIHJvd3MpIG9yIGp1c3Qgb25lIGNv" + - "bXB1dGUgcGxhbmU/IgotICJBcmUgdGhlcmUgQUNUSVZFIGZ1bmN0aW9uIGRlcGxveW1lbnRzIG9u" + - "IHRoaXMgY2x1c3Rlcj8gYG52Y2YtY2xpIGZ1bmN0aW9uIGRlcGxveSBsaXN0YCB0byBjaGVjay4i" + - "IChJbXBvcnRhbnQg4oCUIGBkb3duYCB3aWxsIHJlZnVzZSB3aXRob3V0IGAtLWRyYWluLWFjdGl2" + - "ZT10cnVlfHByb21wdGAgaWYgYW55IGFyZSBBQ1RJVkUuKQotICJTaG91bGQgd2Ugd2lwZSBwZXJz" + - "aXN0ZW50IHN0YXRlIChDYXNzYW5kcmEgZGF0YSwgT3BlbkJhbyBzZWFsIGtleXMsIHNyLWRlZmF1" + - "bHQgdXNlciBkYXRhKT8gRGVmYXVsdCBpcyB0byAqKnByZXNlcnZlKiogdGhlbS4gYC0tcmVtb3Zl" + - "LXBlcnNpc3RlbnRgIG9wdHMgaW4gdG8gZGVsZXRpb24uICoqTG9zcyBpcyB1bnJlY292ZXJhYmxl" + - "LioqIgoKIyMjIDIuIFJ1biBwbGFuLW9ubHkgZmlyc3QKCmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9z" + - "dGVkIGRvd24gLS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9JE5BTUUgLS1qc29uIHwganEKYGBg" + - "CgpUaGlzIGVtaXRzIGEgYHBsYW5uZWRgIGV2ZW50IGxpc3RpbmcgZWFjaCBwaGFzZSwgdGhlIGhl" + - "bG0gcmVsZWFzZXMgdGhhdCB3b3VsZCBiZSB1bmluc3RhbGxlZCwgdGhlIElDTVMgcm93cyB0aGF0" + - "IHdvdWxkIGJlIHJlbW92ZWQsIGFuZCBFVEFzLiBDb3B5IHRoZSBgd2lsbFVuaW5zdGFsbC5jb21t" + - "YW5kc1tdYCBhcnJheSB0byB0aGUgdXNlciDigJQgdGhvc2UgYXJlIHRoZSBsaXRlcmFsIGBoZWxt" + - "IHVuaW5zdGFsbCDigKZgIGludm9jYXRpb25zIHRoZSBvcmNoZXN0cmF0b3Igd2lsbCBydW4uCgoj" + - "IyMgMy4gRXhlY3V0ZSB0aGUgZG93bgoKYGBgc2gKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93biAt" + - "LWNsdXN0ZXItbmFtZT0kTkFNRSAtLWpzb24KYGBgCgpQaGFzZXMgKDEtNywgbWlycm9ycyDCpzYu" + - "Ny4xKToKCjEuIFByZWZsaWdodCDigJQga3ViZWN0bCBhY2Nlc3MgKyBJQ01TIHJlYWNoYWJsZQoy" + - "LiBSZXNvbHZlIHN0YWNrIGJ1bmRsZQozLiBEcmFpbiBhY3RpdmUgZGVwbG95bWVudHMg4oCUIHJ1" + - "bnMgYGZ1bmN0aW9uIGRlcGxveSByZW1vdmVgIGZvciBlYWNoIEFDVElWRSBkZXBsb3ltZW50LCBw" + - "b2xscyB1bnRpbCBTVE9QUEVELiBTdWJqZWN0IHRvIGAtLWRyYWluLWFjdGl2ZT10cnVlfGZhbHNl" + - "fHByb21wdGAgKGRlZmF1bHQgaXMgYHByb21wdGAgaW4gVFRZKS4KNC4gVW5pbnN0YWxsIGNvbXB1" + - "dGUgcGxhbmUg4oCUIGRlbGVnYXRlcyB0byBgdW5pbnN0YWxsIC0tY29tcHV0ZS1wbGFuZWA7IGBo" + - "ZWxtIHVuaW5zdGFsbCA8cmVsZWFzZT5gIHBlciByZWxlYXNlIGluIHJldmVyc2UtREFHIG9yZGVy" + - "CjUuIFJlbW92ZSBwZXJzaXN0ZW50IChza2lwcGVkIHVubGVzcyBgLS1yZW1vdmUtcGVyc2lzdGVu" + - "dGApCjYuIFVucmVnaXN0ZXIgY2x1c3RlciBmcm9tIElDTVMKNy4gRmluYWwgdmVyaWZ5CgojIyMg" + - "NC4gVGVhciBkb3duIHRoZSBjb250cm9sIHBsYW5lIChpZiBhcHBsaWNhYmxlKQoKYGBgc2gKbnZj" + - "Zi1jbGkgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZQpgYGAKCk9yIHZpYSB0" + - "aGUgb3JjaGVzdHJhdG9yJ3MgYC0tYWxsYCBtb2RlIGlmIGV2ZXJ5IGNvbXB1dGUgcGxhbmUgaXMg" + - "YWxzbyBnb2luZyBhd2F5IChzZWUgc3RlcCA1KS4KCmB1bmluc3RhbGwgLS1jb250cm9sLXBsYW5l" + - "YCByZWZ1c2VzIGlmIGFueSBjb21wdXRlIHBsYW5lIGlzIHN0aWxsIHJlZ2lzdGVyZWQgaW4gSUNN" + - "Uy4gVXNlIGAtLWZvcmNlLXdpdGgtcmVnaXN0ZXJlZC1jbHVzdGVyc2AgdG8gb3ZlcnJpZGUgKipv" + - "bmx5KiogaWYgdGhlIHVzZXIgZXhwbGljaXRseSB3YW50cyB0byBvcnBoYW4gY29tcHV0ZSBwbGFu" + - "ZXMgKFBTQVQgYXV0aCBicmVha3MgZm9yIHRob3NlIGNsdXN0ZXJzIOKAlCB0aGV5IHdpbGwgc3Rh" + - "cnQgZmFpbGluZyBldmVyeSBoZWFsdGggY2hlY2spLiBBbHdheXMgc3RhdGUgdGhlIGNvbnNlcXVl" + - "bmNlIGJlZm9yZSBwYXNzaW5nIHRoZSBmbGFnLgoKIyMjIDUuIE9yLCBudWtlIGV2ZXJ5dGhpbmcK" + - "CmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24gLS1hbGwgLS1jb25maXJtCmBgYAoKVGhp" + - "cyBpdGVyYXRlcyBldmVyeSByZWdpc3RlcmVkIGNvbXB1dGUgcGxhbmUgaW4gSUNNUywgcnVucyB0" + - "aGUgcGVyLWNsdXN0ZXIgZG93biBmb3IgZWFjaCBpbiBwYXJhbGxlbCAoYm91bmRlZCBieSBgLS1h" + - "bGwtY29uY3VycmVuY3lgLCBkZWZhdWx0IDQpLCB0aGVuIHJ1bnMgYHVuaW5zdGFsbCAtLWNvbnRy" + - "b2wtcGxhbmVgLiBJbnRlcmFjdGl2ZSBtb2RlIHByb21wdHMgdGhlIG9wZXJhdG9yIHdpdGggdGhl" + - "IGNsdXN0ZXIgbGlzdCBiZWZvcmUgcHJvY2VlZGluZzsgYC0tY29uZmlybWAgc2tpcHMgdGhlIHBy" + - "b21wdCBmb3Igbm9uLWludGVyYWN0aXZlIHVzZS4KCiMjIEdpdE9wcyBwYXRoIChpZiB1c2VyIGhh" + - "cyBBcmdvIC8gRmx1eCkKCmBgYHNoCiMgUmVuZGVyIGRlbGV0ZSBZQU1MIGZvciB0aGUgY29tcHV0" + - "ZSBwbGFuZToKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tbm8tYXBwbHkgLS1jb21w" + - "dXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPSROQU1FID4gZGVsZXRlLnlhbWwKCiMgT3BlcmF0b3Ig" + - "Y29tbWl0cyBkZWxldGUueWFtbCB0byB0aGVpciBHaXRPcHMgcmVwby4gQXJnby9GbHV4IGFwcGxp" + - "ZXMgdGhlIGRlbGV0aW9uIG9uIG5leHQgc3luYy4KZ2l0IGFkZCBkZWxldGUueWFtbDsgZ2l0IGNv" + - "bW1pdCAtbSAicmVtb3ZlIGNvbXB1dGUgcGxhbmUgJE5BTUUiOyBnaXQgcHVzaAoKIyBBZnRlciBB" + - "cmdvIHN5bmMgcmVtb3ZlcyB0aGUgSzhzIHJlc291cmNlcywgc2VwYXJhdGVseSByZW1vdmUgdGhl" + - "IElDTVMgcm93OgpudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNsdXN0ZXItaWQ9JENMVVNURVJf" + - "SUQKYGBgCgpOb3RlOiBgLS1uby1hcHBseWAgZG9lcyBOT1QgaW5jbHVkZSB0aGUgSUNNUyBgY2x1" + - "c3RlciBkZWxldGVgIChoZWxtIGRvZXNuJ3QgbWFuYWdlIHRoYXQpLiBPcGVyYXRvcnMgZm9sbG93" + - "aW5nIEdpdE9wcyBtdXN0IHJ1biBgbnZjZi1jbGkgY2x1c3RlciBkZWxldGVgIHNlcGFyYXRlbHks" + - "IG9yIHVzZSBgZG93bmAgdG8gb3JjaGVzdHJhdGUgYm90aC4KCiMjIEZhaWx1cmUgcmVjb3ZlcnkK" + - "CklmIGBkb3duYCBwYXJ0aWFsLWZhaWxzIG1pZC13YXksICoqcmUtcnVuIHRoZSBzYW1lIGNvbW1h" + - "bmQqKi4gVGhlIG9yY2hlc3RyYXRvciBpcyBpZGVtcG90ZW50OiBgaGVsbSB1bmluc3RhbGxgIHNr" + - "aXBzIHJlbGVhc2VzIHRoYXQgYXJlIGFscmVhZHkgZ29uZSwgYW5kIGBjbHVzdGVyIGRlbGV0ZSAt" + - "LWlnbm9yZS1taXNzaW5nYCBza2lwcyBJQ01TIHJvd3MgdGhhdCBhcmUgYWxyZWFkeSBnb25lLiBQ" + - "aGFzZSA0ICsgNiBlbWl0IGBwaGFzZTogc2tpcHBlZCAoYWxyZWFkeSBjbGVhbilgIG9uIHRoZSBz" + - "ZWNvbmQgcnVuLgoKSWYgYSBgcGhhc2VfZmFpbGVkYCBldmVudCBzdXJmYWNlczoKCi0gYGVyckNh" + - "dGVnb3J5OiAiaGVsbV9wZW5kaW5nX3VwZ3JhZGUiLCByZXRyeUNsYXNzOiAiYWZ0ZXJfcmVtZWRp" + - "YXRpb24iYCDihpIgcnVuIGBoZWxtIHJvbGxiYWNrIDxyZWxlYXNlPiAwIC0ta3ViZS1jb250ZXh0" + - "PeKApmAgKHRoZSBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGFjdCByZWxlYXNlIG5hbWUpIHRoZW4g" + - "cmUtcnVuIGBkb3duYC4gRG8gTk9UIGF1dG8tcm9sbGJhY2sgd2l0aG91dCB1c2VyIGNvbmZpcm1h" + - "dGlvbi4KLSBgZXJyQ2F0ZWdvcnk6ICJjb21wdXRlX3BsYW5lIiwgcmV0cnlDbGFzczogImFmdGVy" + - "X3JlbWVkaWF0aW9uImAgd2l0aCBtZXNzYWdlIGFib3V0IEFDVElWRSBkZXBsb3ltZW50cyDihpIg" + - "dXNlciBwYXNzZWQgYC0tZHJhaW4tYWN0aXZlPWZhbHNlYCBidXQgZGVwbG95bWVudHMgZXhpc3Qu" + - "IFJlLXJ1biB3aXRoIGAtLWRyYWluLWFjdGl2ZT10cnVlYCBvciBgLS1kcmFpbi1hY3RpdmU9cHJv" + - "bXB0YCBhbmQgY29uZmlybSB3aXRoIHRoZSB1c2VyLgotIE90aGVyIGNhdGVnb3JpZXMg4oaSIHN1" + - "cmZhY2UgYGVyck1lc3NhZ2VgICsgZWFjaCBgcmVtZWRpYXRpb25gIHN0cmluZyB2ZXJiYXRpbS4g" + - "U1RPUC4gRG8gbm90IHByb3Bvc2UgcmV0cnkgd2l0aG91dCB1c2VyIGlucHV0LgoKIyMgQWx3YXlz" + - "IGNvbmZpcm0KCkZvciBldmVyeSBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93bmAgb3IgYHVuaW5z" + - "dGFsbGAgaW52b2NhdGlvbiwgZXNwZWNpYWxseSB3aXRoIGRlc3RydWN0aXZlIGZsYWdzOgoKLSBT" + - "dGF0ZSB0aGUgZXhhY3QgYC0tY2x1c3Rlci1uYW1lYCAob3IgYC0tYWxsYCkuCi0gU3RhdGUgd2hh" + - "dCdzIGxvc3QgKGUuZy4gImFsbCBmdW5jdGlvbiBkZXBsb3ltZW50cyBzY2hlZHVsZWQgb24gYG5j" + - "cC1sb2NhbGAgd2lsbCBzdG9wOyBjb21wdXRlIHBsYW5lIHdpbGwgZGVyZWdpc3RlciBmcm9tIElD" + - "TVMiKS4KLSBJZiBgLS1yZW1vdmUtcGVyc2lzdGVudGAgaXMgYmVpbmcgY29uc2lkZXJlZCwgc3Rh" + - "dGUgdGhhdCBDYXNzYW5kcmEgcm93cyArIE9wZW5CYW8gc2VhbCBrZXlzIHdpbGwgYmUgZGVsZXRl" + - "ZCBhbmQgdGhhdCB0aGlzIGlzIHVucmVjb3ZlcmFibGUuCi0gV2FpdCBmb3IgZXhwbGljaXQgdXNl" + - "ciBjb25maXJtYXRpb24uCi0gTmV2ZXIgcHJvcG9zZSBgLS1mb3JjZS13aXRoLXJlZ2lzdGVyZWQt" + - "Y2x1c3RlcnNgIHdpdGhvdXQgZXhwbGFpbmluZyB0aGF0IGNvbXB1dGUgcGxhbmVzIHdpbGwgYmUg" + - "b3JwaGFuZWQuCi0gTmV2ZXIgcHJvcG9zZSBgLS1yZW1vdmUtcGVyc2lzdGVudGAgd2l0aG91dCBl" + - "eHBsYWluaW5nIHRoZSBsb3NzLgoKIyMgTWFudWFsIGZhbGxiYWNrIChpZiBgbnZjZi1jbGkgc2Vs" + - "Zi1ob3N0ZWQge3VuaW5zdGFsbCxkb3dufWAgaXMgdW5hdmFpbGFibGUpCgpJZiB0aGUgdXNlciBp" + - "cyBvbiBhIENMSSB2ZXJzaW9uIG9sZGVyIHRoYW4gTSsxMSwgZmFsbCBiYWNrIHRvOgoKYGBgc2gK" + - "IyBQZXIgY29tcHV0ZSBwbGFuZSAob24gaXRzIGt1YmVjdGwgY29udGV4dCk6CmhlbG0gdW5pbnN0" + - "YWxsIG52Y2EtYWdlbnQgLW4gbnZjYS1zeXN0ZW0KaGVsbSB1bmluc3RhbGwgbnZjYS1vcGVyYXRv" + - "ciAtbiBudmNhLW9wZXJhdG9yCmhlbG0gdW5pbnN0YWxsIGltYWdlLWNyZWRlbnRpYWwtaGVscGVy" + - "IC1uIG52Y2Etc3lzdGVtCmhlbG0gdW5pbnN0YWxsIHNoYXJlZHN0b3JhZ2UgLW4gbnZjYS1zeXN0" + - "ZW0KCiMgRHJhaW4gdGhlIElDTVMgcm93OgpudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNsdXN0" + - "ZXItaWQ9PGlkPgoKIyBDb250cm9sIHBsYW5lIHRlYXJkb3duIChvbiBpdHMga3ViZWN0bCBjb250" + - "ZXh0KToKY2QgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sKbWFrZSBkZXN0cm95ICAgIyBpbnZva2Vz" + - "IGhlbG1maWxlIGRlc3Ryb3kgYWNyb3NzIGFsbCByZWxlYXNlcwoKIyBJZiB1c2luZyBzcGxpdCBz" + - "dGFjayBidW5kbGVzLCB0ZWFyZG93biBjb21wdXRlIHBsYW5lIHJlbGVhc2VzIHRvbzoKY2QgLi4v" + - "bnZjZi1jb21wdXRlLXBsYW5lLXN0YWNrCm1ha2UgZGVzdHJveQpgYGAKClRoaXMgaXMgdGhlIG1h" + - "bnVhbCBwYXRoOyBwcmVmZXIgdGhlIG5ldyBzdWJjb21tYW5kcyB3aGVuZXZlciB0aGV5J3JlIGlu" + - "c3RhbGxlZC4KCiMjIFdoYXQgYGt1YmVjdGwgZGVsZXRlIHB2Y2AgZG9lcwoKSWYgdGhlIHVzZXIg" + - "YXNrcyAid2h5IGlzIG15IG5ldyBpbnN0YWxsIHNlZWluZyB0aGUgb2xkIGRhdGE/IiDigJQgdGhl" + - "IFN0YXRlZnVsU2V0IFBWQ3MgKENhc3NhbmRyYSwgT3BlbkJhbykgYXJlIE5PVCBkZWxldGVkIGJ5" + - "IGBoZWxtIHVuaW5zdGFsbGAgKGFuZCBzbyBhcmUgTk9UIGRlbGV0ZWQgYnkgYG52Y2YtY2xpIHNl" + - "bGYtaG9zdGVkIGRvd25gIGVpdGhlciwgYnkgZGVmYXVsdCkuIFRoZXkgcGVyc2lzdCBpbnRlbnRp" + - "b25hbGx5IHNvIGEgcmUtYHVwYCBjYW4gcmVzdW1lIGFnYWluc3QgZXhpc3RpbmcgZGF0YS4gVG8g" + - "d2lwZSBjb21wbGV0ZWx5IG9uIHRoZSBuZXh0IGBkb3duYDoKCmBgYHNoCm52Y2YtY2xpIHNlbGYt" + - "aG9zdGVkIGRvd24gLS1jbHVzdGVyLW5hbWU9bmNwLWxvY2FsIC0tcmVtb3ZlLXBlcnNpc3RlbnQK" + - "YGBgCgpPciwgcG9zdC1kb3duLCBtYW51YWxseToKCmBgYHNoCmt1YmVjdGwgZGVsZXRlIHB2YyAt" + - "biBjYXNzYW5kcmEtc3lzdGVtIC0tYWxsCmt1YmVjdGwgZGVsZXRlIHB2YyAtbiB2YXVsdC1zeXN0" + - "ZW0gLS1hbGwKYGBgCgoqKkNvbmZpcm0gd2l0aCB1c2VyLioqIFRoaXMgaXMgdGhlIGRlc3RydWN0" + - "aXZlIHN0ZXAuClBLBwjah2NW5CEAAOQhAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADAACQBk" + - "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvY29tbWFuZHMubWRVVAUAAQCmzhIj" + - "IGBudmNmLWNsaWAgY29tbWFuZCByZWZlcmVuY2UKCkZ1bGwgc3ViY29tbWFuZCBsaXN0LiBBbHdh" + - "eXMgcGFpciB3aXRoIFtmbGFncy5tZF0oZmxhZ3MubWQpIGZvciBnbG9iYWwgZmxhZ3MgYW5kIFtl" + - "eGl0LWNvZGVzLm1kXShleGl0LWNvZGVzLm1kKSBmb3IgcmV0dXJuIGNvZGVzLgoKIyMgU2VsZi1o" + - "b3N0ZWQgbGlmZWN5Y2xlCgp8IENvbW1hbmQgfCBQdXJwb3NlIHwgT3V0cHV0IHwgTm90ZXMgfAp8" + - "LS0tfC0tLXwtLS18LS0tfAp8IGBzZWxmLWhvc3RlZCBjaGVjayAtLXByZSBbZmxhZ3NdYCB8IFBy" + - "ZS1mbGlnaHQgdmFsaWRhdGlvbiAobm8gYWRtaW4gY3JlZHMpIHwgc3RyZWFtaW5nIGV2ZW50cyB8" + - "IFBlci1yb2xlIHdpdGggYC0tY29udHJvbC1wbGFuZS1jb250ZXh0YCAvIGAtLWNvbXB1dGUtcGxh" + - "bmUtY29udGV4dGA7IGAtLWxvY2FsLW9ubHlgIHNraXBzIGt1YmVjdGwgfAp8IGBzZWxmLWhvc3Rl" + - "ZCBjaGVjayAtLWNvbnRyb2wtcGxhbmUgWy0td2FpdCBEVVJdYCB8IEV2ZXJ5IENQIHJlbGVhc2Ug" + - "aGVhbHRoeSB8IHN0cmVhbWluZyBldmVudHMgfCBQb2xscyB1bnRpbCBwYXNzIG9yIGAtLXdhaXRg" + - "IGVsYXBzZXMgfAp8IGBzZWxmLWhvc3RlZCBjaGVjayAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVy" + - "LW5hbWU9WCBbLS13YWl0IERVUl1gIHwgUGVyLWNsdXN0ZXIgd29ya2VyIHN0YXRlIHwgc3RyZWFt" + - "aW5nIGV2ZW50cyB8IE5WQ0EgKyBvcGVyYXRvciArIEpXS1MtZmluZ2VycHJpbnQgbWF0Y2ggfAp8" + - "IGBzZWxmLWhvc3RlZCBjaGVjayAtLWFsbCBbLS13YWl0IERVUl1gIHwgRmFuLW91dCBvdmVyIGFs" + - "bCBvZiB0aGUgYWJvdmUgfCBzdHJlYW1pbmcgZXZlbnRzIHwgfAp8IGBzZWxmLWhvc3RlZCBpbnN0" + - "YWxsIC0tY29udHJvbC1wbGFuZWAgfCBSZW5kZXIgY29udHJvbC1wbGFuZSBtYW5pZmVzdHMgfCBZ" + - "QU1MIG9uIHN0ZG91dCB8IFBpcGUgdG8gYGt1YmVjdGwgYXBwbHkgLWYgLWAgfAp8IGBzZWxmLWhv" + - "c3RlZCBpbnN0YWxsIC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YYCB8IFJlZ2lzdGVy" + - "IGNsdXN0ZXIgKyByZW5kZXIgY29tcHV0ZSBtYW5pZmVzdHMgfCBZQU1MIG9uIHN0ZG91dCB8IE9u" + - "ZSBpbnZvY2F0aW9uIHBlciBHUFUgY2x1c3RlciB8CnwgYHNlbGYtaG9zdGVkIHVwIC0tY2x1c3Rl" + - "ci1uYW1lPVhgIHwgT25lLXNob3QgZmlyc3QgaW5zdGFsbCAoYm90aCBwbGFuZXMpIHwgKGVtcHR5" + - "KSBzdGRvdXQsIHByb2dyZXNzIG9uIHN0ZGVyciB8IEFsd2F5cyBpbnN0YWxscyBib3RoIHBsYW5l" + - "czsgZm9yIGNvbXB1dGUtb25seSB1c2UgYGFkZC1jb21wdXRlLXBsYW5lYCB8CnwgYHNlbGYtaG9z" + - "dGVkIHVwIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIHwgRHJ5LXJ1biBwcmV2aWV3IHwg" + - "SlNPTkwgb24gc3RkZXJyIHwgQWdlbnQtZnJpZW5kbHksIG5vIGNsdXN0ZXIgY2hhbmdlcyB8Cnwg" + - "YHNlbGYtaG9zdGVkIGFkZC1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVggLS1jb21wdXRl" + - "LXBsYW5lLWNvbnRleHQ9WSAtLWljbXMtdXJsPVVSTCAtLXRva2VuPSRKV1RgIHwgQWRkIGEgY29t" + - "cHV0ZSBwbGFuZSB0byBhbiBleGlzdGluZyBjb250cm9sIHBsYW5lIHwgcHJvZ3Jlc3Mgb24gc3Rk" + - "ZXJyIHwgRm9yIDJuZCwgM3JkLCDigKYgR1BVIGNsdXN0ZXIgYWZ0ZXIgdGhlIGZpcnN0IGluc3Rh" + - "bGwuIENQIG5vdCB0b3VjaGVkLiB8CnwgYHNlbGYtaG9zdGVkIHN0YXR1cyBbLS1jbHVzdGVyLW5h" + - "bWU9WF0gWy0td2F0Y2hdYCB8IFNuYXBzaG90IGNsdXN0ZXIgaGVhbHRoIHwgVFRZL3BsYWluL0pT" + - "T05MIHwgYC0td2F0Y2hgIGZvciBsaXZlIHJlLXJlbmRlciB8CnwgYHNlbGYtaG9zdGVkIHVuaW5z" + - "dGFsbCAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9WGAgfCBQZXItcGxhbmUgcHJpbWl0" + - "aXZlOiBgaGVsbWZpbGUgZGVzdHJveWAgb24gb25lIGNvbXB1dGUgcGxhbmUgKG5vIElDTVMgdW5y" + - "ZWdpc3Rlciwgbm8gZHJhaW4pIHwgcHJvZ3Jlc3MgfCBKdXN0IHRoZSBoZWxtIHJlbGVhc2VzIG9u" + - "IHRoYXQgY29tcHV0ZSBwbGFuZSB8CnwgYHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAtLWNvbnRyb2wt" + - "cGxhbmUgWy0tZm9yY2Utd2l0aC1yZWdpc3RlcmVkLWNsdXN0ZXJzXWAgfCBQZXItcGxhbmUgcHJp" + - "bWl0aXZlOiBgaGVsbWZpbGUgZGVzdHJveWAgb24gdGhlIGNvbnRyb2wgcGxhbmUgfCBwcm9ncmVz" + - "cyB8IFJlZnVzZXMgaWYgY29tcHV0ZSBwbGFuZXMgc3RpbGwgcmVnaXN0ZXJlZCB1bmxlc3MgYC0t" + - "Zm9yY2Utd2l0aC1yZWdpc3RlcmVkLWNsdXN0ZXJzYCB8CnwgYHNlbGYtaG9zdGVkIHVuaW5zdGFs" + - "bCAtLW5vLWFwcGx5IDxwbGFuZT5gIHwgUmVuZGVyIGRlbGV0ZSBZQU1MIHZpYSBgaGVsbSBnZXQg" + - "bWFuaWZlc3RgIHBlciByZWxlYXNlIHwgWUFNTCBvbiBzdGRvdXQgfCBHaXRPcHM7IHBpcGUgdG8g" + - "YGt1YmVjdGwgZGVsZXRlIC1mIC1gIG9yIGNvbW1pdCArIEFyZ28gYXBwbGllcy4gTWlycm9ycyBg" + - "aW5zdGFsbCAtLW5vLWFwcGx5YCB8CnwgYHNlbGYtaG9zdGVkIGRvd24gLS1jbHVzdGVyLW5hbWU9" + - "WCBbLS1kcmFpbi1hY3RpdmVdIFstLXJlbW92ZS1wZXJzaXN0ZW50XWAgfCBPcmNoZXN0cmF0b3I6" + - "IGRyYWluIOKGkiB1bmluc3RhbGwgLS1jb21wdXRlLXBsYW5lIOKGkiBjbHVzdGVyIGRlbGV0ZSBp" + - "biBJQ01TIHwgcHJvZ3Jlc3MgfCBTeW1tZXRyaWMgY29tcGFuaW9uIHRvIGB1cCAtLWNsdXN0ZXIt" + - "bmFtZT1YYCB8CnwgYHNlbGYtaG9zdGVkIGRvd24gLS1hbGwgWy0tY29uZmlybV1gIHwgT3JjaGVz" + - "dHJhdG9yOiB0ZWFyIGRvd24gZXZlcnkgcmVnaXN0ZXJlZCBjb21wdXRlIHBsYW5lICsgY29udHJv" + - "bCBwbGFuZSB8IHByb2dyZXNzIHwgQm91bmRlZCBwYXJhbGxlbGlzbSB2aWEgYC0tYWxsLWNvbmN1" + - "cnJlbmN5YCAoZGVmYXVsdCA0KTsgYC0tY29uZmlybWAgcmVxdWlyZWQgaW4gbm9uLWludGVyYWN0" + - "aXZlIHwKfCBgc2VsZi1ob3N0ZWQgZG93biAtLXBsYW4tb25seSAuLi5gIHwgT3JjaGVzdHJhdG9y" + - "IGRyeS1ydW46IHBoYXNlcyArIGhlbG0gcmVsZWFzZXMgKyBJQ01TIHJvd3MgKyBFVEFzIChubyBo" + - "ZWxtL2hlbG1maWxlIGNvbnRhY3QpIHwgSlNPTkwgfCAqKkFsd2F5cyBydW4gYmVmb3JlIGFueSBh" + - "Y3R1YWwgYGRvd25gKiogfAoKIyMgQ2x1c3RlciBtYW5hZ2VtZW50Cgp8IENvbW1hbmQgfCBQdXJw" + - "b3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYGNsdXN0ZXIgcmVnaXN0ZXIgLS1uYW1lPVgg" + - "LS1uY2EtaWQ9WSBbLS1yZWdpb249Wl0gWy0taWdub3JlLWV4aXN0aW5nXWAgfCBSZWdpc3RlciBh" + - "IEpXS1MrT0lEQyB3aXRoIElDTVMgfCBVc2VkIGJ5IGB1cGAgUGhhc2UgNSBpbnRlcm5hbGx5OyBz" + - "dGFuZGFsb25lIGZvciBtYW51YWwgcmVnaXN0cmF0aW9uIHwKfCBgY2x1c3RlciBsaXN0LXJlZ2lz" + - "dGVyZWQgLS1uY2EtaWQ9WSBbLS1pY21zLXVybD1VUkxdYCB8IExpc3Qgc2VsZi1ob3N0ZWQgY2x1" + - "c3RlciByZWdpc3RyYXRpb25zIGZyb20gSUNNUyB8IFVzZXMgdGhlIGFkbWluIHRva2VuOyBgLS1q" + - "c29uYCBmb3IgbWFjaGluZS1yZWFkYWJsZSBvdXRwdXQgfAp8IGBjbHVzdGVyIHJvdGF0ZSAtLWNs" + - "dXN0ZXItaWQ9SURgIHwgUmUtZmV0Y2ggSldLUyBmcm9tIEs4cyBhbmQgUFVUIHRvIElDTVMgfCBB" + - "ZnRlciBLOHMgQVBJIHNlcnZlciBzaWduaW5nIGtleSByb3RhdGlvbiB8CnwgYGNsdXN0ZXIgZGVs" + - "ZXRlIC0tY2x1c3Rlci1pZD1JRGAgfCBSZW1vdmUgSUNNUyByb3cgfCAqKkRFU1RSVUNUSVZFOiBj" + - "b25maXJtIHdpdGggdXNlcioqIHwKCiMjIEZ1bmN0aW9ucwoKfCBDb21tYW5kIHwgUHVycG9zZSB8" + - "IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGBmdW5jdGlvbiBjcmVhdGUgLS1pbnB1dC1maWxlPUZJ" + - "TEVgIHwgQ3JlYXRlIGZ1bmN0aW9uIG1ldGFkYXRhIHwgUmV0dXJucyBGdW5jdGlvbiBJRCArIFZl" + - "cnNpb24gSUQ7IExMTSBmdW5jdGlvbnMgdXNlIGBmdW5jdGlvblR5cGU6ICJMTE0iYCBhbmQgYG1v" + - "ZGVsc1tdLmxsbUNvbmZpZy51cmlzYCBmb3IgYC92MS9jaGF0L2NvbXBsZXRpb25zYCwgYC92MS9y" + - "ZXNwb25zZXNgLCBhbmQgYC92MS9lbWJlZGRpbmdzYCB8CnwgYGZ1bmN0aW9uIGxpc3RgIC8gYGZ1" + - "bmN0aW9uIGxpc3QtaWRzYCB8IExpc3QgZnVuY3Rpb25zIC8gSURzIG9ubHkgfCB8CnwgYGZ1bmN0" + - "aW9uIGdldCAtLWZ1bmN0aW9uLWlkPUlEIC0tdmVyc2lvbi1pZD1WSURgIHwgRnVuY3Rpb24gbWV0" + - "YWRhdGEgfCB8CnwgYGZ1bmN0aW9uIHVwZGF0ZSAtLWZ1bmN0aW9uLWlkPUlEIC0tdmVyc2lvbi1p" + - "ZD1WSUQgLS10YWdzPVRBR1ssVEFHXWAgfCBVcGRhdGUgZnVuY3Rpb24gdGFncyB8IHwKfCBgZnVu" + - "Y3Rpb24gdXBkYXRlIC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRCAtLWxsbS1tb2Rl" + - "bC11cGRhdGU9U1BFQ2AgfCBVcGRhdGUgTExNIG1vZGVsIHJvdXRpbmcgY29uZmlnIHwgYFNQRUNg" + - "IHVzZXMgYG5hbWU9PG1vZGVsPixyb3V0aW5nTWV0aG9kPTxtZXRob2Q+LHRva2VuUmF0ZUxpbWl0" + - "PTxsaW1pdD5gOyBhY2NlcHRlZCBtZXRob2RzIGFyZSBsaXN0ZWQgaW4gW2ZsYWdzLm1kXShmbGFn" + - "cy5tZCkgfAp8IGBmdW5jdGlvbiBkZXBsb3kgY3JlYXRlIC0taW5wdXQtZmlsZT1GSUxFYCB8IFNj" + - "aGVkdWxlIGEgZGVwbG95bWVudCB8IEJsb2NrcyB1bnRpbCBBQ1RJVkUgKGRlZmF1bHQgOTAwcykg" + - "fAp8IGBmdW5jdGlvbiBkZXBsb3kgZ2V0IC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJ" + - "RCBbLS1qc29uXWAgfCBEZXBsb3ltZW50IHN0YXR1cyB8IGBmdW5jdGlvblN0YXR1czogQUNUSVZF" + - "XHxERVBMT1lJTkdcfEVSUk9SXHxGQUlMRURgIHwKfCBgZnVuY3Rpb24gZGVwbG95IHVwZGF0ZSAt" + - "LWlucHV0LWZpbGU9RklMRWAgfCBNb2RpZnkgYSBkZXBsb3ltZW50IGluIHBsYWNlIHwgfAp8IGBm" + - "dW5jdGlvbiBkZXBsb3kgcmVtb3ZlIC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRGAg" + - "fCBTdG9wIGEgZGVwbG95bWVudCwga2VlcCBmdW5jdGlvbiByZWNvcmQgfCB8CnwgYGZ1bmN0aW9u" + - "IGludm9rZSAtLWlucHV0LWZpbGU9RklMRWAgfCBDYWxsIGEgcmVndWxhciBmdW5jdGlvbiB8IFJl" + - "cXVpcmVzIEFQSSBrZXkgKG5vdCBhZG1pbiB0b2tlbik7IExMTSBmdW5jdGlvbnMgYXJlIGludm9r" + - "ZWQgdGhyb3VnaCBgbGxtLmludm9jYXRpb24uPGRvbWFpbj5gIHdpdGggYG1vZGVsOiAiPGZ1bmN0" + - "aW9uLWlkPi88bW9kZWwtbmFtZT4iYCB8CnwgYGZ1bmN0aW9uIGRlbGV0ZSAtLWZ1bmN0aW9uLWlk" + - "PUlEIC0tdmVyc2lvbi1pZD1WSURgIHwgUmVtb3ZlIGZ1bmN0aW9uICsgZGVwbG95bWVudCB8ICoq" + - "REVTVFJVQ1RJVkU6IGNvbmZpcm0gd2l0aCB1c2VyKiogfAoKIyMgVGFza3MKClRhc2sgY29tbWFu" + - "ZHMgcmVxdWlyZSBgTlZDRl9BUElfS0VZYCBzZXQgdG8gYSB0YXNrLXNjb3BlZCBrZXkgYW5kIGBO" + - "VkNGX0JBU0VfTlZDVF9VUkxgIHNldCB0byB0aGUgTlZDVCBnYXRld2F5IGVuZHBvaW50LiBJbiBh" + - "IGZyZXNoIHNlc3Npb24sIHJlYWQgYG52Y3RBcGlLZXlgIGZyb20gYH4vLm52Y2YtY2xpLnN0YXRl" + - "YCBhbmQgaW5qZWN0IGl0IGFzIGBOVkNGX0FQSV9LRVlgIHdpdGhvdXQgbG9nZ2luZyB0aGUgdmFs" + - "dWU7IGNoZWNrIGBudmN0QXBpS2V5RXhwaXJhdGlvbmAgZmlyc3QgYW5kIHJlZ2VuZXJhdGUgd2l0" + - "aCBgYXBpLWtleSBnZW5lcmF0ZSAtLWZvciB0YXNrIC0tdmFsaWRhdGVgIGlmIGV4cGlyZWQuIFJ1" + - "biBgYXBpLWtleSBnZW5lcmF0ZSAtLWZvciB0YXNrYCBhZnRlciBgaW5pdGAgdG8gbWludCBhIG5l" + - "dyBrZXkuCgp8IENvbW1hbmQgfCBQdXJwb3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYHRh" + - "c2sgY3JlYXRlIC0tbmFtZT1YIC0tZ3B1PUdQVSAtLWluc3RhbmNlLXR5cGU9VFlQRSAtLWltYWdl" + - "PUlNR2AgfCBTdWJtaXQgYSBjb250YWluZXIgdGFzayB8IFNhdmVzIHRhc2sgSUQgdG8gQ0xJIHN0" + - "YXRlOyB1c2UgYC0taW5wdXQtZmlsZWAgZm9yIHJlcGVhdGFibGUgY29uZmlncyB8CnwgYHRhc2sg" + - "Y3JlYXRlIC0tbmFtZT1YIC0tZ3B1PUdQVSAtLWluc3RhbmNlLXR5cGU9VFlQRSAtLWhlbG0tY2hh" + - "cnQ9Q0hBUlRgIHwgU3VibWl0IGEgSGVsbSB0YXNrIHwgYC0taGVsbS1jaGFydGAgcmVwbGFjZXMg" + - "YC0taW1hZ2VgIHwKfCBgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPUZJTEVgIHwgU3VibWl0IGEg" + - "dGFzayBmcm9tIGEgSlNPTiBjb25maWcgZmlsZSB8IFJlY29tbWVuZGVkIGZvciByZXBlYXRhYmxl" + - "IGNvbmZpZ3VyYXRpb25zIHwKfCBgdGFzayBsaXN0IFstLXN0YXR1cz1TVEFUVVNdIFstLWxpbWl0" + - "PU5dYCB8IExpc3QgdGFza3MsIG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgc3RhdHVzIHwgU3RhdHVz" + - "ZXM6IGBRVUVVRURgLCBgTEFVTkNIRURgLCBgUlVOTklOR2AsIGBDT01QTEVURURgLCBgRVJST1JF" + - "RGAsIGBDQU5DRUxFRGAsIGBFWENFRURFRF9NQVhfUlVOVElNRV9EVVJBVElPTmAsIGBFWENFRURF" + - "RF9NQVhfUVVFVUVEX0RVUkFUSU9OYCB8CnwgYHRhc2sgZ2V0IFt0YXNrSWRdYCB8IEdldCB0YXNr" + - "IGRldGFpbHMgfCBVc2VzIHNhdmVkIHRhc2sgSUQgZnJvbSBzdGF0ZSBpZiBvbWl0dGVkIHwKfCBg" + - "dGFzayBldmVudHMgW3Rhc2tJZF0gWy0tbGltaXQ9Tl1gIHwgTGlzdCBsaWZlY3ljbGUgZXZlbnRz" + - "IGZvciBhIHRhc2sgfCB8CnwgYHRhc2sgcmVzdWx0cyBbdGFza0lkXWAgfCBMaXN0IHJlc3VsdCBh" + - "cnRpZmFjdHMgZm9yIGEgY29tcGxldGVkIHRhc2sgfCBSZXR1cm5zIGVtcHR5IGxpc3Qgd2hlbiBg" + - "cmVzdWx0SGFuZGxpbmdTdHJhdGVneWAgaXMgYE5PTkVgOyByZXN1bHQgdXBsb2FkIG5vdCB5ZXQg" + - "c3VwcG9ydGVkIHwKfCBgdGFzayBjYW5jZWwgW3Rhc2tJZF1gIHwgQ2FuY2VsIGEgcnVubmluZyB0" + - "YXNrIHwgTm8tb3AgaWYgYWxyZWFkeSBpbiB0ZXJtaW5hbCBzdGF0ZSB8CnwgYHRhc2sgZGVsZXRl" + - "IFt0YXNrSWRdYCB8IERlbGV0ZSBhIHRhc2sgcmVjb3JkIHwgKipTdG9wLCBzdGF0ZSB0YXNrIElE" + - "ICsgY3VycmVudCBzdGF0dXMsIGFuZCB3YWl0IGZvciBhIHN1YnNlcXVlbnQgdXNlciByZXBseSBl" + - "eHBsaWNpdGx5IGNvbmZpcm1pbmcgZGVsZXRpb24gb2YgdGhhdCBzcGVjaWZpYyB0YXNrLiBEbyBu" + - "b3QgdHJlYXQgdGhlIG9yaWdpbmFsIGRlbGV0ZSByZXF1ZXN0IGFzIGNvbmZpcm1hdGlvbi4qKiB8" + - "CnwgYHRhc2sgdXBkYXRlLXNlY3JldHMgW3Rhc2tJZF0gLS1zZWNyZXRzIE5BTUU9dmFsdWVgIHwg" + - "VXBkYXRlIHNlY3JldHMgb24gYSB0YXNrOyBzdXBwbGllZCBzZWNyZXRzIGFyZSBhZGRlZCBvciB1" + - "cGRhdGVkIGJ5IG5hbWUsIGV4aXN0aW5nIHNlY3JldHMgbm90IGluIHRoZSByZXF1ZXN0IGFyZSBw" + - "cmVzZXJ2ZWQgfCBWYWx1ZXMgYXJlIGVuY3J5cHRlZCBhdCByZXN0IHwKfCBgdGFzayBidWxrIC0t" + - "dGFzay1pZHM9SUQxWyxJRDIs4oCmXWAgfCBGZXRjaCBkZXRhaWxzIGZvciBtdWx0aXBsZSB0YXNr" + - "cyBpbiBvbmUgcmVxdWVzdCB8IHwKCiMjIEF1dGgKCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBOb3Rl" + - "cyB8CnwtLS18LS0tfC0tLXwKfCBgaW5pdGAgfCBNaW50IGFkbWluIHRva2VuIGZyb20gQVBJIEtl" + - "eXMgdmlhIHB1YmxpYyBhcGkgZ2F0ZXdheSB8IElkZW1wb3RlbnQ7IHdyaXRlcyBgfi8ubnZjZi1j" + - "bGkuc3RhdGVgOyBjbGVhcnMgc2F2ZWQgZnVuY3Rpb24gc3RhdGUgYW5kIGFsbCBBUEkga2V5cyAo" + - "ZnVuY3Rpb24gYW5kIHRhc2spIHwKfCBgc3RhdHVzYCB8IFNob3cgQ0xJIHN0YXRlICh0b2tlbiwg" + - "bGFzdCBlbmRwb2ludHMsIGZ1bmN0aW9uIGNvbnRleHQpIHwgRGlzdGluY3QgZnJvbSBgc2VsZi1o" + - "b3N0ZWQgc3RhdHVzYCB8CnwgYGFwaS1rZXkgZ2VuZXJhdGUgWy0tZm9yIGZ1bmN0aW9uXHx0YXNr" + - "XSBbLS1kZXNjcmlwdGlvbj3igKZdIFstLWV4cGlyZXMtaW494oCmXWAgfCBNaW50IEFQSSBrZXlz" + - "IHwgRGVmYXVsdCAobm8gYC0tZm9yYCk6IGdlbmVyYXRlcyBib3RoIGEgZnVuY3Rpb24ga2V5IGFu" + - "ZCBhIHRhc2sga2V5OyBgLS1mb3IgZnVuY3Rpb25gIG9yIGAtLWZvciB0YXNrYCBnZW5lcmF0ZXMg" + - "b25lIG9ubHk7IGAtLXNjb3Blc2AgcmVxdWlyZXMgYC0tZm9yYCB8CnwgYGFwaS1rZXkgZ2VuZXJh" + - "dGUgLS12YWxpZGF0ZWAgfCBNaW50IGFuZCBpbW1lZGlhdGVseSB2YWxpZGF0ZSBlYWNoIGdlbmVy" + - "YXRlZCBrZXkgfCBWYWxpZGF0ZXMgZWFjaCBrZXkgYWdhaW5zdCBpdHMgY29ycmVjdCBhdWRpZW5j" + - "ZSAoTlZDRiBmb3IgZnVuY3Rpb24ga2V5cywgTlZDVCBmb3IgdGFzayBrZXlzKSB8CnwgYGFwaS1r" + - "ZXkgbGlzdGAgfCBMaXN0IEFQSSBrZXlzIGZvciBjdXJyZW50IG93bmVyIHwgTGlzdHMgTlZDRi1z" + - "Y29wZWQga2V5cyBvbmx5IHwKfCBgYXBpLWtleSBkZWxldGUgS0VZLUlEYCAvIGBhcGkta2V5IHJl" + - "dm9rZSBLRVktSURgIHwgUmVtb3ZlIGFuIEFQSSBrZXkgfCAqKkNvbmZpcm0gd2l0aCB1c2VyKiog" + - "fAp8IGBhcGkta2V5IHNob3dgIHwgU2hvdyBjdXJyZW50bHkgc2F2ZWQgQVBJIGtleSBmcm9tIHN0" + - "YXRlIHwgfAoKIyMgQWdlbnQgc2tpbGwKCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBOb3RlcyB8Cnwt" + - "LS18LS0tfC0tLXwKfCBgYWdlbnQtc2tpbGwgaW5zdGFsbCBbLS10YXJnZXQ9RElSXWAgfCBJbnN0" + - "YWxsIGFsbCBidW5kbGVkIHB1YmxpYyB1c2VyIHNraWxscyBpbnRvIGB+Ly5jbGF1ZGUvc2tpbGxz" + - "L2AgYW5kIGB+Ly5hZ2VudHMvc2tpbGxzL2AgfCBEZWZhdWx0OiBib3RoIGJhc2Ugc2tpbGxzIGRp" + - "cmVjdG9yaWVzIHwKfCBgYWdlbnQtc2tpbGwgdW5pbnN0YWxsIFstLXRhcmdldD1ESVJdYCB8IFJl" + - "bW92ZSBvbmx5IGJ1bmRsZWQgcHVibGljIHVzZXIgc2tpbGxzIGZyb20gdGhlIHRhcmdldCBiYXNl" + - "IHNraWxscyBkaXJlY3RvcmllcyB8IElkZW1wb3RlbnQ7IHVucmVsYXRlZCBza2lsbHMgcmVtYWlu" + - "IHwKfCBgYWdlbnQtc2tpbGwgc2hvdyBbLS1maWxlPVJFTF1gIHwgUHJpbnQgYnVuZGxlZCBgbnZj" + - "Zi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kYCBvciBhbm90aGVyIGVtYmVkZGVkIGZpbGUgfCBG" + - "b3IgZGVidWdnaW5nIHwKfCBgYWdlbnQtc2tpbGwgdmVyc2lvbmAgfCBQcmludCBidWlsZCBTSEEg" + - "YW5kIGVtYmVkZGVkIHB1YmxpYyB1c2VyIHNraWxsIHN1bW1hcnkgfCB8ClBLBwhyDQ9kISMAACEj" + - "AABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADIACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNs" + - "aS9yZWZlcmVuY2UvZXhpdC1jb2Rlcy5tZFVUBQABAKbOEiMgYG52Y2YtY2xpYCBleGl0IGNvZGVz" + - "CgpTdGFibGUgYWNyb3NzIHN1YmNvbW1hbmRzLiBVc2UgdGhlc2UgdG8gZHJpdmUgYWdlbnQgcmV0" + - "cnkgLyBzdXJmYWNpbmcgbG9naWMuCgp8IENvZGUgfCBNZWFuaW5nIHwgRXhhbXBsZSBjYXVzZXMg" + - "fAp8LS0tfC0tLXwtLS18CnwgYDBgIHwgU3VjY2VzcyB8IEFsbCBjaGVja3MgcGFzc2VkOyBpbnN0" + - "YWxsIGNvbXBsZXRlZDsgZGVwbG95bWVudCBBQ1RJVkUgfAp8IGAxYCB8IEdlbmVyaWMgZXJyb3Ig" + - "fCBIZWxtIHJlbmRlciBmYWlsZWQ7IG5ldHdvcmsgdW5yZWFjaGFibGU7IGZpbGUgbm90IGZvdW5k" + - "OyBZQU1MIHBhcnNlIGVycm9yIHwKfCBgMmAgfCBQcmUtZmxpZ2h0IGNoZWNrIGZhaWxlZCB8IEdh" + - "dGV3YXkgQVBJIENSRHMgbWlzc2luZzsga3ViZWN0bCBub3Qgb24gUEFUSDsgZGVmYXVsdCBTdG9y" + - "YWdlQ2xhc3MgYWJzZW50IHwKfCBgM2AgfCBBZG1pbiBhdXRoIGZhaWxlZCB8IE5vIHRva2VuICsg" + - "YC0tbm9uLWludGVyYWN0aXZlYCBzZXQ7IElDTVMgcmVqZWN0ZWQgSldUOyBpbml0IGVuZHBvaW50" + - "IHVucmVhY2hhYmxlIHwKfCBgNWAgfCBNYW5pZmVzdCBhcHBseSBvciBgLS13YWl0YCB0aW1lZCBv" + - "dXQgfCBIZWxtIGluc3RhbGwgdGltZW91dDsgY2hlY2sgcG9sbGVkIGJ1dCBkaWRuJ3QgcGFzcyBi" + - "ZWZvcmUgZHVyYXRpb24gfAp8IGAxMzBgIHwgQ2FuY2VsbGVkIGJ5IFNJR0lOVC9TSUdURVJNIHwg" + - "VXNlciBDdHJsLUM7IENJIGJ1ZGdldCBleGNlZWRlZDsgcG9kIGV2aWN0ZWQgfAoKIyMgSG93IGFu" + - "IGFnZW50IHNob3VsZCByZWFjdAoKfCBDb2RlIHwgQWdlbnQgYmVoYXZpb3IgfAp8LS0tfC0tLXwK" + - "fCBgMGAgfCBDb250aW51ZSAvIHJlcG9ydCBzdWNjZXNzLiB8CnwgYDFgIHwgU3VyZmFjZSBzdGRl" + - "cnIgdG8gdXNlcjsgYXNrIGJlZm9yZSBhbnkgcmV0cnkuIEdlbmVyaWMgZXJyb3JzIHVzdWFsbHkg" + - "bmVlZCBhIGh1bWFuIHRvIHJlYWQgdGhlIG1lc3NhZ2UuIHwKfCBgMmAgfCBTdXJmYWNlIGZhaWxl" + - "ZCBjaGVja3MgKyB0aGVpciBgaGludFVSTGAuIERvbid0IHByb3Bvc2UgYHVwYCB1bnRpbCB0aGUg" + - "dXNlciBmaXhlcyBwcmVyZXFzLiB8CnwgYDNgIHwgU3VnZ2VzdCBgbnZjZi1jbGkgaW5pdGAgKGlu" + - "dGVyYWN0aXZlKSBPUiBgLS10b2tlbj0kSldUYCAoQ0kpLiBEb24ndCBhdXRvLW1pbnQgd2l0aG91" + - "dCB1c2VyIE9LLiB8CnwgYDVgIHwgQXNrIHVzZXIgaWYgdGhleSB3YW50IHRvIHdhaXQgbG9uZ2Vy" + - "LCBkaWcgaW50byB0aGUgc3RhbGxlZCBjb21wb25lbnQsIG9yIGNhbmNlbC4gfAp8IGAxMzBgIHwg" + - "RG9uJ3QgcmV0cnkgYXV0b21hdGljYWxseTsgdXNlciBleHBsaWNpdGx5IGNhbmNlbGxlZC4gQ29u" + - "ZmlybSBiZWZvcmUgcmUtcnVubmluZy4gfAoKIyMgV2hlcmUgdG8gZmluZCBtb3JlIGRldGFpbAoK" + - "RXZlcnkgbm9uLXplcm8gZXhpdCBlbWl0cyBhIHN0cnVjdHVyZWQgYHBoYXNlX2ZhaWxlZGAgSlNP" + - "TiBldmVudCB3aXRoIGBlcnJDYXRlZ29yeWAsIGBlcnJNZXNzYWdlYCwgYHJlbWVkaWF0aW9uYCAo" + - "YXJyYXkpLCBgcmV0cnlDbGFzc2AgKGVudW06IGBub25lfGltbWVkaWF0ZXxiYWNrb2ZmfGFmdGVy" + - "X3JlbWVkaWF0aW9ufHVua25vd25gKSwgYHJldHJ5QWZ0ZXJTZWNgIChpbnQsIG9wdGlvbmFsKSwg" + - "YW5kIGByYXdgIChzdWJwcm9jZXNzICsgSFRUUCArIEt1YmVybmV0ZXMgc2lnbmFsKS4gQWx3YXlz" + - "IGNvbnN1bWUgdGhlc2UgaW4gYC0tanNvbmAgbW9kZSByYXRoZXIgdGhhbiBwYXJzaW5nIEVuZ2xp" + - "c2ggZnJvbSBzdGRlcnIuClBLBwhzp1pk1QYAANUGAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAA" + - "AC0ACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZmxhZ3MubWRVVAUAAQCm" + - "zhIjIGBudmNmLWNsaWAgZmxhZyByZWZlcmVuY2UKCiMjIEdsb2JhbCBmbGFncyAoZXZlcnkgc3Vi" + - "Y29tbWFuZCkKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAt" + - "LWNvbmZpZyBGSUxFYCB8IENvbmZpZyBmaWxlIHBhdGggfCBgJEhPTUUvLm52Y2YtY2xpLnlhbWxg" + - "IHwKfCBgLS1kZWJ1Z2AgfCBWZXJib3NlIEhUVFAgbG9nZ2luZyBvbiBzdGRlcnIgfCBgZmFsc2Vg" + - "IHwKfCBgLS1qc29uYCB8IEpTT05MIGV2ZW50cyBvbiBzdGRlcnIgfCBhdXRvIChvZmYgaW4gVFRZ" + - "LCBvbiB1bmRlciBgLS1ub24taW50ZXJhY3RpdmVgKSB8CgojIyBgc2VsZi1ob3N0ZWRgIHBhcmVu" + - "dCAocGVyc2lzdGVudCBhY3Jvc3Mgc3ViY29tbWFuZHMpCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVm" + - "YXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1jb250cm9sLXBsYW5lLXN0YWNrPeKApmAgfCBDb250" + - "cm9sLXBsYW5lIGJ1bmRsZSBzb3VyY2U6IGxvY2FsIHBhdGgsIGdpdCBVUkwsIG9yIGBvY2k6Ly9g" + - "IFVSTCB8IGVtYmVkZGVkIE9DSSBVUkwgcGlubmVkIGJ5IENMSSB2ZXJzaW9uIHwKfCBgLS1jb21w" + - "dXRlLXBsYW5lLXN0YWNrPeKApmAgfCBDb21wdXRlLXBsYW5lIGJ1bmRsZSBzb3VyY2U6IGxvY2Fs" + - "IHBhdGgsIGdpdCBVUkwsIG9yIGBvY2k6Ly9gIFVSTCB8IGVtYmVkZGVkIE9DSSBVUkwgcGlubmVk" + - "IGJ5IENMSSB2ZXJzaW9uIHwKfCBgLS1lbnY9bG9jYWxcfHByZFx84oCmYCB8IEhlbG1maWxlIGVu" + - "dmlyb25tZW50IG5hbWUgfCBgbG9jYWxgIGZvciBkZXYgYnVpbGRzLCBgcHJkYCBmb3IgcmVsZWFz" + - "ZXMgfAp8IGAtLW5vbi1pbnRlcmFjdGl2ZWAgfCBEaXNhYmxlIGFsbCBzdGRpbiBwcm9tcHRzIHwg" + - "YGZhbHNlYCB8CnwgYC0tdG9rZW49JEpXVGAgfCBBZG1pbiBKV1QsIG92ZXJyaWRlcyBzdG9yZWQg" + - "c2Vzc2lvbiB8IC0gfAp8IGAtLW5vLWFwcGx5YCB8IGBpbnN0YWxsYCBvbmx5IC0gZW1pdCBZQU1M" + - "LCBkbyBub3Qga3ViZWN0bCBhcHBseSB8IGBmYWxzZWAgfAp8IGAtLW91dHB1dD10ZXh0XHxqc29u" + - "YCB8IExlZ2FjeSBhbGlhcyBmb3IgYC0tanNvbmAgKGRlcHJlY2F0ZWQsIHJlbW92ZWQgaW4gbmV4" + - "dCBtYWpvcikgfCBgdGV4dGAgfAp8IGAtLXBsYWluYCB8IEZvcmNlIHBsYWluIHN0cmVhbWluZyBv" + - "dXRwdXQgfCBhdXRvLWRldGVjdCB8CnwgYC0td2FpdCBEVVJBVElPTmAgfCBgY2hlY2tgIG9ubHk7" + - "IGJsb2NrIHVudGlsIHBhc3MgfCAtIHwKfCBgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgQ1RYYCB8" + - "IGt1YmVjdGwgY29udGV4dCBmb3IgY29udHJvbCBwbGFuZSAoUkVRLTIwKSB8IGN1cnJlbnQgY29u" + - "dGV4dCB8CnwgYC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IENUWGAgfCBrdWJlY3RsIGNvbnRleHQg" + - "Zm9yIGNvbXB1dGUgcGxhbmUgKFJFUS0yMCkgfCBjdXJyZW50IGNvbnRleHQgfAp8IGAtLWljbXMt" + - "dXJsIFVSTGAgfCBQdWJsaWMgSUNNUyBVUkw7IHJlcXVpcmVkIHdoZW4gY29udGV4dHMgZGlmZmVy" + - "IHwgZGVyaXZlZCBmcm9tIGBiYXNlX2h0dHBfdXJsYCB8CnwgYC0tbG9jYWwtb25seWAgfCBgY2hl" + - "Y2sgLS1wcmVgIG9ubHk7IHNraXAgYWxsIGt1YmVjdGwgY29udGFjdCB8IGBmYWxzZWAgfAoKIyMg" + - "YGNoZWNrYC1zcGVjaWZpYwoKQXQgbGVhc3Qgb25lIG9mIGAtLXByZWAsIGAtLWNvbnRyb2wtcGxh" + - "bmVgLCBgLS1jb21wdXRlLXBsYW5lYCwgb3IgYC0tYWxsYCBpcwpyZXF1aXJlZC4gRWFjaCBzZWxl" + - "Y3RzIGEgcm9sZTsgb25seSB0aGUgc2VsZWN0ZWQgcm9sZXMgY29udGFjdCBhIGNsdXN0ZXIuCgp8" + - "IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1wcmVgIHwgUHJl" + - "LWZsaWdodDogbG9jYWwtaG9zdCB0b29scyBwbHVzIGNsdXN0ZXIgcmVhZGluZXNzIHwgYGZhbHNl" + - "YCB8CnwgYC0tY29udHJvbC1wbGFuZWAgfCBDb250cm9sLXBsYW5lIGNoZWNrcyB8IGBmYWxzZWAg" + - "fAp8IGAtLWNvbXB1dGUtcGxhbmVgIHwgQ29tcHV0ZS1wbGFuZSBjaGVja3MgfCBgZmFsc2VgIHwK" + - "fCBgLS1hbGxgIHwgRXZlcnkgY2F0ZWdvcnkgfCBgZmFsc2VgIHwKfCBgLS1jbHVzdGVyLW5hbWUg" + - "TkFNRWAgfCBDbHVzdGVyIG5hbWUgZm9yIGNvbXB1dGUtcGxhbmUgY2hlY2tzIHwgLSB8CnwgYC0t" + - "c2tpcC1pbm90aWZ5LWNoZWNrYCB8IFNraXAgdGhlIHBlci1ub2RlIGlub3RpZnktbGltaXRzIHBy" + - "b2JlLiBOZWVkZWQgd2hlbiB0aGUga3ViZWNvbmZpZyB1c2VyIGNhbm5vdCBjcmVhdGUgcG9kcyBp" + - "biBgZGVmYXVsdGAuIEVudjogYE5WQ0ZfQ0xJX1NFTEZIT1NURURfU0tJUF9JTk9USUZZYCB8IGBm" + - "YWxzZWAgfAoKIyMjIENsdXN0ZXItdmFsaWRhdG9yIGZsYWdzCgpUaGUgdmFsaWRhdG9yIHJ1bnMg" + - "YXMgYSBKb2IgaW4gdGhlIGNsdXN0ZXIgYmVpbmcgY2hlY2tlZC4gVGhlIENMSSBjcmVhdGVzIGEK" + - "U2VydmljZUFjY291bnQsIENsdXN0ZXJSb2xlLCBhbmQgQ2x1c3RlclJvbGVCaW5kaW5nIGZvciBp" + - "dCBhbmQgcmVtb3ZlcyB0aGVtCmFmdGVyIHRoZSBydW4sIHNvIHRoZSBrdWJlY29uZmlnIGNvbnRl" + - "eHQgbmVlZHMgcGVybWlzc2lvbiB0byBtYW5hZ2UgdGhvc2UuCgp8IEZsYWcgfCBQdXJwb3NlIHwg" + - "RGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1jbHVzdGVyLXZhbGlkYXRvci1pbWFnZSBSRUZg" + - "IHwgVmFsaWRhdG9yIGltYWdlLiBSZXNvbHV0aW9uIG9yZGVyOiBmbGFnLCBgTlZDRl9DTElfQ0xV" + - "U1RFUl9WQUxJREFUT1JfSU1BR0VgLCBjb25maWcga2V5IGBjbHVzdGVyX3ZhbGlkYXRvcl9pbWFn" + - "ZWAuIEEgcmVmIHdpdGggbm8gdGFnIGRpc2NvdmVycyB0aGUgbGF0ZXN0IHN0YWJsZSB0YWcgZnJv" + - "bSB0aGUgcmVnaXN0cnkuIFVuc2V0IGV2ZXJ5d2hlcmUgc2tpcHMgdGhlIHByb2JlIHdpdGggYSB3" + - "YXJuaW5nIHwgLSB8CnwgYC0tY2x1c3Rlci12YWxpZGF0b3ItcmVnaXN0cmllcyBob3N0OnBvcnQs" + - "Li4uYCB8IEV4dHJhIHJlZ2lzdHJpZXMgdGhlIGNvbnRyb2wtcGxhbmUgdmFsaWRhdG9yIHByb2Jl" + - "cyBmb3IgcmVhY2hhYmlsaXR5LiBgbnZjci5pb2AgaXMgYWx3YXlzIHByb2JlZC4gUmVwZWF0YWJs" + - "ZSBvciBjb21tYS1zZXBhcmF0ZWQuIEVudjogYE5WQ0ZfQ0xJX0NMVVNURVJfVkFMSURBVE9SX1JF" + - "R0lTVFJJRVNgOyBjb25maWcga2V5IGBjbHVzdGVyX3ZhbGlkYXRvcl9yZWdpc3RyaWVzYCB8IGBu" + - "dmNyLmlvYCBvbmx5IHwKfCBgLS1jbHVzdGVyLXZhbGlkYXRvci1wdWxsLXNlY3JldCBOQU1FYCB8" + - "IGRvY2tlci1yZWdpc3RyeSBTZWNyZXQgaW4gYGRlZmF1bHRgIHVzZWQgdG8gcHVsbCB0aGUgdmFs" + - "aWRhdG9yIGltYWdlLiBXaGVuIGVtcHR5LCB0aGUgQ0xJIGxvb2tzIGZvciBvbmUgaW4gdGhlIE5W" + - "Q0YgbmFtZXNwYWNlcyBhbmQgY29waWVzIGl0IGludG8gYGRlZmF1bHRgIGZvciB0aGUgcnVuLiBG" + - "YWlsaW5nIHRoYXQsIGFuZCBvbmx5IGZvciBhbiBpbWFnZSBvbiBhbiBOR0MgcmVnaXN0cnksIGl0" + - "IG1pbnRzIG9uZSBmcm9tIGBOR0NfQVBJX0tFWWAgfCBhdXRvLWRldGVjdCB8CnwgYC0tc2tpcC1j" + - "bHVzdGVyLXZhbGlkYXRpb25gIHwgU2tpcCB0aGUgaW4tY2x1c3RlciB2YWxpZGF0b3IgcHJvYmUg" + - "ZW50aXJlbHkuIEVudjogYE5WQ0ZfQ0xJX1NFTEZIT1NURURfU0tJUF9DTFVTVEVSX1ZBTElEQVRJ" + - "T05gIHwgYGZhbHNlYCB8CnwgYC0tbm8tY2xlYW51cGAgfCBLZWVwIHRoZSB2YWxpZGF0b3IgSm9i" + - "LCBpdHMgcG9kLCBSQkFDLCBwdWxsIHNlY3JldCBhbmQgQ29uZmlnTWFwIGZvciBkZWJ1Z2dpbmcu" + - "IEEgbGF0ZXIgY2hlY2sgcmVjbGFpbXMgdGhlbSBhZnRlciAyNCBob3VyczsgdGhlIHJlc3VsdCBw" + - "cmludHMgdGhlIGBrdWJlY3RsIGRlbGV0ZWAgY29tbWFuZCB0aGF0IHJlbW92ZXMgdGhlbSBub3cg" + - "fCBgZmFsc2VgIHwKfCBgLS1zaG93LWxvZ3NgIHwgUHJpbnQgdGhlIHZhbGlkYXRvciB0cmFuc2Ny" + - "aXB0IHRvIHN0ZGVyciBhZnRlciB0aGUgY2hlY2sgZXZlbnRzLiBUaGUgdHJhbnNjcmlwdCBpcyBu" + - "b3QgSlNPTiwgYW5kIGAtLWpzb25gIGFsc28gd3JpdGVzIHRvIHN0ZGVyciwgc28gbGVhdmUgdGhp" + - "cyBvZmYgd2hlbiBhIHBhcnNlciBpcyByZWFkaW5nIHRoZSBzdHJlYW0gfCBgZmFsc2VgIHwKCiMj" + - "IGB1cGAtc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0t" + - "fAp8IGAtLWNsdXN0ZXItbmFtZSBOQU1FYCB8IElDTVMgY2x1c3RlciByb3cgaWRlbnRpZmllciAo" + - "cmVxdWlyZWQpIHwgLSB8CnwgYC0tbmNhLWlkIElEYCB8IE5DQSBhY2NvdW50IElEIHwgYG52Y2Yt" + - "ZGVmYXVsdGAgfAp8IGAtLXJlZ2lvbiBSRUdJT05gIHwgQ2x1c3RlciByZWdpb24gfCBgdXMtd2Vz" + - "dC0xYCB8CnwgYC0tcGxhbi1vbmx5YCB8IERyeS1ydW47IGVtaXQgcGhhc2UgcGxhbiArIEVUQXMg" + - "d2l0aG91dCBjaGFuZ2VzIHwgYGZhbHNlYCB8CgojIyBgc3RhdHVzYC1zcGVjaWZpYwoKfCBGbGFn" + - "IHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tY2x1c3Rlci1uYW1lIE5B" + - "TUVgIHwgTGltaXQgdG8gb25lIGNvbXB1dGUgcGxhbmUgfCAtIChjb250cm9sICsgYWxsIGNsdXN0" + - "ZXJzKSB8CnwgYC0td2F0Y2hgIHwgTGl2ZSByZS1yZW5kZXIgfCBgZmFsc2VgIHwKfCBgLS13YXRj" + - "aC1pbnRlcnZhbCBEVVJgIHwgYC0td2F0Y2hgIGNhZGVuY2UgfCBgNXNgIHwKfCBgLS1jb21wb25l" + - "bnQgTkFNRWAgfCBGaWx0ZXIgY29tcG9uZW50cyBwYW5lbCB8IGFsbCB8CnwgYC0tbm8tZXZlbnRz" + - "YCB8IFNraXAgZXZlbnRzIHBhbmVsIHwgYGZhbHNlYCB8CgojIyBgY2x1c3RlciByZWdpc3RlcmAt" + - "c3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAt" + - "LW5hbWUgTkFNRWAgfCBDbHVzdGVyIG5hbWUgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLW5jYS1pZCBJ" + - "RGAgfCBOQ0EgSUQgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLXJlZ2lvbiBSRUdJT05gIHwgUmVnaW9u" + - "IHwgYHVzLXdlc3QtMWAgfAp8IGAtLWljbXMtdXJsIFVSTGAgfCBJQ01TIGVuZHBvaW50IHwgZnJv" + - "bSBjb25maWcgfAp8IGAtLWlnbm9yZS1leGlzdGluZ2AgfCBNYXRjaC1vci1jcmVhdGUgaW5zdGVh" + - "ZCBvZiBmYWlsLW9uLWV4aXN0cyB8IGBmYWxzZWAgfAoKIyMgYGFwaS1rZXkgZ2VuZXJhdGVgLXNw" + - "ZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1m" + - "b3IgZnVuY3Rpb25cfHRhc2tgIHwgR2VuZXJhdGUgb25seSB0aGUgc3BlY2lmaWVkIGtleSB0eXBl" + - "IHwgKG9taXQgdG8gZ2VuZXJhdGUgYm90aCkgfAp8IGAtLWRlc2NyaXB0aW9uIFRFWFRgIHwgSHVt" + - "YW4tcmVhZGFibGUgbGFiZWwgZm9yIHRoZSBrZXkgfCBgR2VuZXJhdGVkIGJ5IG52Y2YtY2xpYCB8" + - "CnwgYC0tZXhwaXJlcy1pbiBEVVJBVElPTmAgfCBFeHBpcnkgb2Zmc2V0IChlLmcuIGAyNGhgLCBg" + - "N2RgKTsgcGFyc2VkIGFzIGV4dGVuZGVkIGR1cmF0aW9uIHwgYDI0aGAgfAp8IGAtLXNjb3BlcyBT" + - "Q09QRVssU0NPUEVdYCB8IE92ZXJyaWRlIGRlZmF1bHQgc2NvcGVzOyByZXF1aXJlcyBgLS1mb3Jg" + - "IHwgKHNlcnZpY2UgZGVmYXVsdHMpIHwKfCBgLS12YWxpZGF0ZWAgfCBWYWxpZGF0ZSBlYWNoIGdl" + - "bmVyYXRlZCBrZXkgaW1tZWRpYXRlbHkgYWZ0ZXIgbWludGluZyB8IGBmYWxzZWAgfAoKRXh0ZW5k" + - "ZWQgZHVyYXRpb24gdW5pdHM6IGBzYCAoc2Vjb25kcyksIGBtYCAobWludXRlcyksIGBoYCAoaG91" + - "cnMpLCBgZGAgKGRheXMpLCBgd2AgKHdlZWtzKS4KCiMjIGBmdW5jdGlvbiBjcmVhdGVgLXNwZWNp" + - "ZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIGZvciByZXBlYXRhYmxlIGZ1" + - "bmN0aW9uIGRlZmluaXRpb25zLiBGb3IgYWQtaG9jIGNyZWF0ZXM6Cgp8IEZsYWcgfCBQdXJwb3Nl" + - "IHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1uYW1lIE5BTUVgIHwgRnVuY3Rpb24gbmFt" + - "ZSB8IC0gfAp8IGAtLWltYWdlIElNQUdFYCB8IENvbnRhaW5lciBpbWFnZSB8IC0gfAp8IGAtLWlu" + - "ZmVyZW5jZS11cmwgVVJJYCB8IENvbnRhaW5lciBpbmZlcmVuY2UgZW5kcG9pbnQgfCAtIHwKfCBg" + - "LS1pbmZlcmVuY2UtcG9ydCBQT1JUYCB8IENvbnRhaW5lciBpbmZlcmVuY2UgcG9ydCB8IC0gfAp8" + - "IGAtLWZ1bmN0aW9uLXR5cGUgREVGQVVMVFx8U1RSRUFNSU5HXHxMTE1gIHwgRnVuY3Rpb24gdHlw" + - "ZSB8IGBERUZBVUxUYCB8CnwgYC0taGVsbS1jaGFydCBDSEFSVGAgfCBIZWxtIGNoYXJ0IFVSTCBv" + - "ciBPQ0kgcmVmZXJlbmNlLiBDYW4gYmUgdXNlZCB3aXRoIGAtLWZ1bmN0aW9uLXR5cGU9TExNYCBm" + - "b3IgY2hhcnQtcGFja2FnZWQgTExNIHdvcmtsb2Fkcy4gfCAtIHwKfCBgLS1oZWxtLWNoYXJ0LXNl" + - "cnZpY2UgTkFNRWAgfCBLdWJlcm5ldGVzIFNlcnZpY2UgbmFtZSBleHBvc2VkIGJ5IHRoZSBjaGFy" + - "dC4gUmVxdWlyZWQgd2hlbiBgLS1oZWxtLWNoYXJ0YCBpcyBzZXQuIHwgLSB8CnwgYC0tbW9kZWxz" + - "IE5BTUU6VkVSU0lPTjpVUklgIHwgU3RhbmRhcmQgbW9kZWwgYXJ0aWZhY3Q7IHJlcGVhdGFibGUg" + - "fCAtIHwKfCBgLS1sbG0tbW9kZWwgU1BFQ2AgfCBMTE0gbW9kZWwgY29uZmlnOyBmb3JtYXQgYG5h" + - "bWU9PG1vZGVsPix1cmlzPTx1cmk+XHw8dXJpPixyb3V0aW5nTWV0aG9kPTxtZXRob2Q+LHRva2Vu" + - "UmF0ZUxpbWl0PTxsaW1pdD5gOyByZXBlYXRhYmxlLiBUb2tlbiBsaW1pdHMgdXNlIGA8dmFsdWU+" + - "LTx1bml0PmAgd2l0aCBgU2AsIGBNYCwgYEhgLCBgRGAsIG9yIGBXYCwgZm9yIGV4YW1wbGUgYDEw" + - "MDAtU2AuIFVzZSBpbnB1dCBKU09OIGZvciBjb21iaW5lZCB0b2tlbiBsaW1pdHMgYmVjYXVzZSBp" + - "bmxpbmUgc3BlY3MgdXNlIGNvbW1hcyBhcyBmaWVsZCBzZXBhcmF0b3JzLiB8IC0gfAp8IGAtLWxs" + - "bS1kZWZhdWx0LXByaW9yaXR5IFBSSU9SSVRZYCB8IEZ1bmN0aW9uLWxldmVsIGRlZmF1bHQgcmVx" + - "dWVzdCBwcmlvcml0eS4gTG93ZXIgdmFsdWVzIGhhdmUgaGlnaGVyIHByaW9yaXR5LiB8IC0gfAp8" + - "IGAtLWxsbS1wZXItYWNjb3VudC1wcmlvcml0eSBOQ0EtSUQ6UFJJT1JJVFlgIHwgUGVyLWFjY291" + - "bnQgcHJpb3JpdHkgb3ZlcnJpZGU7IHJlcGVhdGFibGU7IHN1cHBvcnRzIHVwIHRvIDY0IGRpc3Rp" + - "bmN0IE5DQSBJRCBvdmVycmlkZXMuIFJlcXVpcmVzIGEgZGVmYXVsdCBwcmlvcml0eS4gfCAtIHwK" + - "CkluIEpTT04gYW5kIGlubGluZSBzcGVjcywgTExNIGZ1bmN0aW9ucyBzZXQgYGZ1bmN0aW9uVHlw" + - "ZTogIkxMTSJgIGFuZCBtb2RlbCByb3V0aW5nIG1ldGFkYXRhIHVuZGVyIGBtb2RlbHNbXS5sbG1D" + - "b25maWdgLiBgbGxtQ29uZmlnLnVyaXNgIGRlY2xhcmVzIHRoZSBPcGVuQUktY29tcGF0aWJsZSB1" + - "cHN0cmVhbSBwYXRocyBleHBvc2VkIGJ5IHRoZSBtb2RlbC4gQ3VycmVudCBzdXBwb3J0ZWQgcGF0" + - "aHMgYXJlIGAvdjEvY2hhdC9jb21wbGV0aW9uc2AsIGAvdjEvcmVzcG9uc2VzYCwgYW5kIGAvdjEv" + - "ZW1iZWRkaW5nc2AuIGBsbG1Db25maWcucm91dGluZ01ldGhvZGAgYWNjZXB0cyBgcm91bmRfcm9i" + - "aW5gLCBgcG93ZXJfb2ZfdHdvYCwgYGdyb3FfbXVsdGlyZWdpb25gLCBgcHVsc2FyYCwgb3IgYHJh" + - "bmRvbWAuCmBsbG1Db25maWcudG9rZW5SYXRlTGltaXRgIGFjY2VwdHMgb25lIG9yIG1vcmUgY29t" + - "bWEtc2VwYXJhdGVkIHBvc2l0aXZlIGludGVnZXIgdG9rZW4gbGltaXRzIGluIGA8dmFsdWU+LTx1" + - "bml0PmAgZm9ybWF0LiBTdXBwb3J0ZWQgdW5pdHMgYXJlIGBTYCAoc2Vjb25kcyksIGBNYCAobWlu" + - "dXRlcyksIGBIYCAoaG91cnMpLCBgRGAgKGRheXMpLCBhbmQgYFdgICh3ZWVrcykuIFVzZSBkaXN0" + - "aW5jdCB1bml0cyB3aGVuIGNvbWJpbmluZyBsaW1pdHMsIGZvciBleGFtcGxlIGAxMDAwLVMsNTAw" + - "MC1NLDEwMDAwMC1ILDUwMDAwMC1ELDEwMDAwMDAtV2AgaW4gaW5wdXQgSlNPTi4KCkhlbG0gY2hh" + - "cnQgcGFja2FnaW5nIGlzIGluZGVwZW5kZW50IG9mIGBmdW5jdGlvblR5cGVgLiBGb3IgYSBIZWxt" + - "LWNoYXJ0IGJhY2tlZCBMTE0gZnVuY3Rpb24sIHNldCBgZnVuY3Rpb25UeXBlOiAiTExNImAsIGBo" + - "ZWxtQ2hhcnRgLCBgaGVsbUNoYXJ0U2VydmljZU5hbWVgLCBhbmQgYG1vZGVsc1tdLmxsbUNvbmZp" + - "Z2AgaW4gdGhlIHNhbWUgY3JlYXRlIHJlcXVlc3QuIGBpbmZlcmVuY2VQb3J0YCBtdXN0IGJlIHRo" + - "ZSBLdWJlcm5ldGVzIFNlcnZpY2UgcG9ydCBleHBvc2VkIGJ5IGBoZWxtQ2hhcnRTZXJ2aWNlTmFt" + - "ZWAuCgpMTE0gaW52b2NhdGlvbiByZXF1ZXN0cyB1c2UgYG1vZGVsOiAiPGZ1bmN0aW9uLWlkPi88" + - "bW9kZWwtbmFtZT4iYC4gVGhlIGZ1bmN0aW9uIElEIHNlbGVjdHMgdGhlIE5WQ0YgZnVuY3Rpb24s" + - "IGFuZCB0aGUgbW9kZWwgbmFtZSBpcyBmb3J3YXJkZWQgdXBzdHJlYW0uIENoYXQgY29tcGxldGlv" + - "bnMgYW5kIFJlc3BvbnNlcyBBUEkgcmVxdWVzdHMgY2FuIHVzZSBgeC1tdWx0aS10dXJuLXNlc3Np" + - "b24taWRgIGZvciBzZXNzaW9uIHN0aWNraW5lc3M7IGVtYmVkZGluZ3MgcmVxdWVzdHMgZG8gbm90" + - "LgoKIyMgYGZ1bmN0aW9uIHVwZGF0ZWAtc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZh" + - "dWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLXRhZ3MgVEFHWyxUQUddYCB8IFJlcGxhY2UgZnVuY3Rp" + - "b24gdGFncyB8IC0gfAp8IGAtLWxsbS1tb2RlbC11cGRhdGUgU1BFQ2AgfCBMTE0gbW9kZWwgdXBk" + - "YXRlOyBmb3JtYXQgYG5hbWU9PG1vZGVsPixyb3V0aW5nTWV0aG9kPTxtZXRob2Q+LHRva2VuUmF0" + - "ZUxpbWl0PTxsaW1pdD5gOyByZXBlYXRhYmxlLiBSb3V0aW5nIG1ldGhvZHMgbWF0Y2ggYC0tbGxt" + - "LW1vZGVsYC4gVG9rZW4gbGltaXQgZXhhbXBsZTogYDEwMDAtU2AuIFVzZSBpbnB1dCBKU09OIGZv" + - "ciBjb21iaW5lZCB0b2tlbiBsaW1pdHMuIHwgLSB8CnwgYC0tbGxtLWRlZmF1bHQtcHJpb3JpdHkg" + - "UFJJT1JJVFlgIHwgUmVwbGFjZSB0aGUgZnVuY3Rpb24tbGV2ZWwgcHJpb3JpdHkgY29uZmlndXJh" + - "dGlvbiB3aXRoIHRoaXMgZGVmYXVsdCBhbmQgYW55IHN1cHBsaWVkIHBlci1hY2NvdW50IG92ZXJy" + - "aWRlcy4gfCAtIHwKfCBgLS1sbG0tcGVyLWFjY291bnQtcHJpb3JpdHkgTkNBLUlEOlBSSU9SSVRZ" + - "YCB8IFBlci1hY2NvdW50IHByaW9yaXR5IG92ZXJyaWRlOyByZXBlYXRhYmxlOyBzdXBwb3J0cyB1" + - "cCB0byA2NCBkaXN0aW5jdCBOQ0EgSUQgb3ZlcnJpZGVzLiBSZXF1aXJlcyBhIGRlZmF1bHQgcHJp" + - "b3JpdHkuIHwgLSB8CgpJbiBKU09OLCBgZnVuY3Rpb24gdXBkYXRlYCBhY2NlcHRzIGBtb2RlbFVw" + - "ZGF0ZXNbXWAgZW50cmllcyB3aXRoIGBtb2RlbE5hbWVgIGFuZCBgbGxtQ29uZmlnLnJvdXRpbmdN" + - "ZXRob2RgIGFuZC9vciBgbGxtQ29uZmlnLnRva2VuUmF0ZUxpbWl0YC4gYHVyaXNgIGFyZSBjcmVh" + - "dGUtdGltZSBtb2RlbCBtZXRhZGF0YSBhbmQgYXJlIG5vdCBwYXJ0IG9mIG1vZGVsIHVwZGF0ZXMu" + - "CgojIyBgZnVuY3Rpb24gZGVwbG95IGNyZWF0ZWAtc3BlY2lmaWMKCmAtLWlucHV0LWZpbGUgRklM" + - "RWAgaXMgcmVjb21tZW5kZWQgKGZ1bGwgSlNPTiBzcGVjKS4gRm9yIGFkLWhvYyBvbmUtc2hvdCB1" + - "c2U6Cgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1mdW5j" + - "dGlvbi1pZCBJRGAgfCBGdW5jdGlvbiBJRCAocmVxdWlyZWQpIHwgLSB8CnwgYC0tZ3B1IE5BTUVg" + - "IHwgR1BVIGZhbWlseSB8IGBIMTAwYCB8CnwgYC0taW5zdGFuY2UtdHlwZSBUWVBFYCB8IFNLVSB8" + - "IGBOQ1AuR1BVLkgxMDBfMXhgIHwKfCBgLS1taW4taW5zdGFuY2VzIE5gIHwgTWluIHJlcGxpY2Fz" + - "IHwgYDFgIHwKfCBgLS1tYXgtaW5zdGFuY2VzIE5gIHwgTWF4IHJlcGxpY2FzIHwgYDFgIHwKfCBg" + - "LS1tYXgtcmVxdWVzdC1jb25jdXJyZW5jeSBOYCB8IENvbmN1cnJlbmN5IHwgYDBgICh1bnNldDsg" + - "c2VydmVyIGRlZmF1bHQgYXBwbGllcykgfAp8IGAtLWNsdXN0ZXJzIE5BTUVbLE5BTUVdYCB8IFRh" + - "cmdldCBzcGVjaWZpYyBjb21wdXRlIGNsdXN0ZXJzIHwgKGFueSBtYXRjaGluZyBTS1UpIHwKCiMj" + - "IGB0YXNrIGNyZWF0ZWAtc3BlY2lmaWMKCmAtLWlucHV0LWZpbGUgRklMRWAgaXMgcmVjb21tZW5k" + - "ZWQgZm9yIHJlcGVhdGFibGUgdGFzayBkZWZpbml0aW9ucy4gRm9yIGFkLWhvYyB1c2U6Cgp8IEZs" + - "YWcgfCBQdXJwb3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYC0tbmFtZSBOQU1FYCB8IFRh" + - "c2sgbmFtZSAocmVxdWlyZWQpIHwgMS0xMjggY2hhcnMsIGBeW2EtejAtOUEtWl1bYS16MC05QS1a" + - "XC1fXSokYCB8CnwgYC0tZ3B1IEdQVWAgfCBHUFUgbmFtZSAocmVxdWlyZWQgd2l0aG91dCBgLS1p" + - "bnB1dC1maWxlYCkgfCBFeGFtcGxlOiBgSDEwMGAgfAp8IGAtLWluc3RhbmNlLXR5cGUgVFlQRWAg" + - "fCBJbnN0YW5jZSB0eXBlIChyZXF1aXJlZCB3aXRob3V0IGAtLWlucHV0LWZpbGVgKSB8IEV4YW1w" + - "bGU6IGBOQ1AuR1BVLkgxMDBfMXhgIHwKfCBgLS1pbWFnZSBJTUFHRWAgfCBDb250YWluZXIgaW1h" + - "Z2UgfCBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgLS1oZWxtLWNoYXJ0YCB8CnwgYC0taGVsbS1j" + - "aGFydCBDSEFSVGAgfCBIZWxtIGNoYXJ0IFVSTCBvciBPQ0kgcmVmZXJlbmNlIHwgTXV0dWFsbHkg" + - "ZXhjbHVzaXZlIHdpdGggYC0taW1hZ2VgIHwKfCBgLS1pbnB1dC1maWxlIEZJTEVgIHwgSlNPTiB0" + - "YXNrIHNwZWMgZmlsZSB8IENMSSBmbGFncyBvdmVycmlkZSBKU09OIHZhbHVlcyB3aGVuIGJvdGgg" + - "YXJlIHNldCB8CnwgYC0tYmFja2VuZCBCQUNLRU5EYCB8IEJhY2tlbmQgLyBDU1AgfCAtIHwKfCBg" + - "LS1jbHVzdGVycyBOQU1FWyxOQU1FXWAgfCBTcGVjaWZpYyBjbHVzdGVycyB3aXRoaW4gdGhlIGlu" + - "c3RhbmNlIHwgQ29tbWEtc2VwYXJhdGVkIHwKfCBgLS1jb250YWluZXItYXJncyBBUkdTYCB8IEFy" + - "Z3MgcGFzc2VkIHdoZW4gbGF1bmNoaW5nIHRoZSBjb250YWluZXIgfCBTaW5nbGUgc3RyaW5nLCBl" + - "LmcuIGAiLS1lcG9jaHMgMTAgLS1iYXRjaC1zaXplIDMyImAgfAp8IGAtLWNvbnRhaW5lci1lbnYg" + - "TkFNRT12YWx1ZWAgfCBDb250YWluZXIgZW52aXJvbm1lbnQgdmFyaWFibGU7IHJlcGVhdGFibGUg" + - "fCAtIHwKfCBgLS1zZWNyZXRzIE5BTUU9dmFsdWVgIHwgU2VjcmV0IGVudmlyb25tZW50IHZhcmlh" + - "YmxlOyByZXBlYXRhYmxlOyBlbmNyeXB0ZWQgYXQgcmVzdCB8IC0gfAp8IGAtLW1heC1ydW50aW1l" + - "IERVUkFUSU9OYCB8IE1heCB3YWxsLWNsb2NrIHJ1biB0aW1lIChJU08gODYwMSwgZS5nLiBgUFQ0" + - "SGApIHwgTm8gZGVmYXVsdDsgb21pdCBmb3Igbm8gdGltZSBsaW1pdCB8CnwgYC0tbWF4LXF1ZXVl" + - "ZCBEVVJBVElPTmAgfCBNYXggdGltZSBpbiBxdWV1ZSBiZWZvcmUgY2FuY2VsbGF0aW9uIChJU08g" + - "ODYwMSkgfCBTZXJ2ZXIgZGVmYXVsdCBgUFQ3MkhgIHwKfCBgLS10ZXJtaW5hdGlvbi1ncmFjZSBE" + - "VVJBVElPTmAgfCBHcmFjZSBwZXJpb2QgYWZ0ZXIgc3RvcCBzaWduYWwgKElTTyA4NjAxKSB8IFNl" + - "cnZlciBkZWZhdWx0IGBQVDFIYCB8CnwgYC0tcmVzdWx0LXN0cmF0ZWd5IFVQTE9BRFx8Tk9ORWAg" + - "fCBIb3cgdG8gaGFuZGxlIHRhc2sgb3V0cHV0IGFydGlmYWN0cyB8IC0gfAp8IGAtLXJlc3VsdHMt" + - "bG9jYXRpb24gTE9DQVRJT05gIHwgUmVzdWx0IHVwbG9hZCB0YXJnZXQsIGZvcm1hdCBgb3JnLW5h" + - "bWUvW3RlYW0tbmFtZS9dbW9kZWwtbmFtZWA7IHJlcXVpcmVkIHdoZW4gYC0tcmVzdWx0LXN0cmF0" + - "ZWd5PVVQTE9BRGAgfCAtIHwKfCBgLS1tb2RlbHMgTkFNRTpWRVJTSU9OOlVSSWAgfCBNb2RlbCBh" + - "cnRpZmFjdDsgcmVwZWF0YWJsZSB8IC0gfAp8IGAtLXJlc291cmNlcyBOQU1FOlZFUlNJT046VVJJ" + - "YCB8IFJlc291cmNlIGFydGlmYWN0OyByZXBlYXRhYmxlIHwgLSB8CnwgYC0tdGFncyBUQUdbLFRB" + - "R11gIHwgVGFzayB0YWdzIHwgQ29tbWEtc2VwYXJhdGVkIHwKfCBgLS1kZXNjcmlwdGlvbiBURVhU" + - "YCB8IFRhc2sgZGVzY3JpcHRpb24gfCAtIHwKfCBgLS1sb2dzLXRlbGVtZXRyeS1pZCBVVUlEYCB8" + - "IExvZ3MgdGVsZW1ldHJ5IGVuZHBvaW50IElEIHwgLSB8CnwgYC0tbWV0cmljcy10ZWxlbWV0cnkt" + - "aWQgVVVJRGAgfCBNZXRyaWNzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfAp8IGAtLXRyYWNl" + - "cy10ZWxlbWV0cnktaWQgVVVJRGAgfCBUcmFjZXMgdGVsZW1ldHJ5IGVuZHBvaW50IElEIHwgLSB8" + - "ClBLBwjA1FCIwS4AAMEuAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADcACQBkYXRhL252Y2Yt" + - "c2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvdHJvdWJsZXNob290aW5nLm1kVVQFAAEAps4SIyBU" + - "cm91Ymxlc2hvb3RpbmcKCktub3duIGVycm9ycyDihpIgZGlhZ25vc3RpYyBjb21tYW5kIOKGkiBy" + - "ZW1lZGlhdGlvbi4gS2VlcCBpbiBzeW5jIHdpdGggdGhlIHN0cnVjdHVyZWQgYHBoYXNlX2ZhaWxl" + - "ZGAgZXZlbnRzIHRoZSBDTEkgZW1pdHMgKFJFUS0xNSkg4oCUIGV2ZXJ5IGVudHJ5IGJlbG93IHNo" + - "b3VsZCBtYXAgdG8gYW4gYGVyckNhdGVnb3J5YCBhbmQgYSBgcmVtZWRpYXRpb25gIGFycmF5LgoK" + - "IyMgUHJlLWZsaWdodAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0t" + - "fC0tLXwKfCBga3ViZWN0bCBub3Qgb24gUEFUSGAgfCBPcGVyYXRvcidzIGAkUEFUSGAgZG9lc24n" + - "dCBpbmNsdWRlIGt1YmVjdGwgfCBJbnN0YWxsIGt1YmVjdGwgMS4yOCs6IGh0dHBzOi8va3ViZXJu" + - "ZXRlcy5pby9kb2NzL3Rhc2tzL3Rvb2xzL2luc3RhbGwta3ViZWN0bC8gfAp8IGBoZWxtZmlsZSBu" + - "b3Qgb24gUEFUSGAgfCBTYW1lIHwgaHR0cHM6Ly9naXRodWIuY29tL2hlbG1maWxlL2hlbG1maWxl" + - "I2luc3RhbGxhdGlvbiB8CnwgYGhlbG0gbm90IG9uIFBBVEhgIHwgU2FtZSB8IGh0dHBzOi8vaGVs" + - "bS5zaC9kb2NzL2ludHJvL2luc3RhbGwvIHwKfCBgR2F0ZXdheSBBUEkgQ1JEcyBub3QgaW5zdGFs" + - "bGVkYCB8IGVudm95LWdhdGV3YXkgcHJlcmVxIG1pc3NpbmcgfCBgaGVsbSBpbnN0YWxsIGVnIG9j" + - "aTovL2RvY2tlci5pby9lbnZveXByb3h5L2dhdGV3YXktaGVsbSAtLW5hbWVzcGFjZT1lbnZveS1n" + - "YXRld2F5LXN5c3RlbSAtLWNyZWF0ZS1uYW1lc3BhY2VgIHwKfCBgZGVmYXVsdCBTdG9yYWdlQ2xh" + - "c3Mgbm90IGF2YWlsYWJsZWAgfCBDbHVzdGVyIGhhcyBubyBkZWZhdWx0IFNDIHwgQW5ub3RhdGUg" + - "b25lOiBga3ViZWN0bCBwYXRjaCBzYyA8bmFtZT4gLXAgJ3sibWV0YWRhdGEiOnsiYW5ub3RhdGlv" + - "bnMiOnsic3RvcmFnZWNsYXNzLmt1YmVybmV0ZXMuaW8vaXMtZGVmYXVsdC1jbGFzcyI6InRydWUi" + - "fX19J2AgfAp8IGBHUFUgb3BlcmF0b3Igbm90IGluc3RhbGxlZGAgKGNvbXB1dGUtcGxhbmUpIHwg" + - "bnZpZGlhIEdQVSBvcGVyYXRvciBtaXNzaW5nIHwgSW5zdGFsbCBwZXIgaHR0cHM6Ly9kb2NzLm52" + - "aWRpYS5jb20vZGF0YWNlbnRlci9jbG91ZC1uYXRpdmUvZ3B1LW9wZXJhdG9yL2xhdGVzdC9pbnN0" + - "YWxsLWdwdS1vcGVyYXRvci5odG1sLCBPUiB1c2UgYGZha2UtZ3B1LW9wZXJhdG9yYCBmb3IgZGV2" + - "IHwKfCBgR1BVIG5vZGUgbGFiZWxzIG1pc3NpbmdgIChjb21wdXRlLXBsYW5lKSB8IE5vZGVzIG5l" + - "ZWQgYG52aWRpYS5jb20vZ3B1LmZhbWlseWAgZXRjLiB8IFNldCBgLS1rM3Mtbm9kZS1sYWJlbCBu" + - "dmlkaWEuY29tL2dwdS5mYW1pbHk9aG9wcGVyQGFnZW50Ok5gIGZvciBrM2QgfAoKIyMgQXV0aAoK" + - "fCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBgYWRtaW4g" + - "dG9rZW4gcmVxdWlyZWRgIChpbml0IG5vdCBydW4pIHwgTm8gYH4vLm52Y2YtY2xpLnN0YXRlYCBh" + - "bmQgYC0tdG9rZW5gIG5vdCBwYXNzZWQgfCBgbnZjZi1jbGkgaW5pdGAgKGludGVyYWN0aXZlKSBv" + - "ciBgLS10b2tlbj0kSldUIC0tbm9uLWludGVyYWN0aXZlYCAoQ0kpIHwKfCBgU2lnbmVkIEpXVCBy" + - "ZWplY3RlZDogQW5vdGhlciBhbGdvcml0aG0gZXhwZWN0ZWQsIG9yIG5vIG1hdGNoaW5nIGtleShz" + - "KSBmb3VuZGAgfCBTdGFsZSBzZXNzaW9uLmpzb24gZnJvbSBhIGRpZmZlcmVudCBjb250cm9sIHBs" + - "YW5lIHwgYHJtIH4vLm52Y2YtY2xpLnN0YXRlYCB0aGVuIGBudmNmLWNsaSBpbml0YCBhZ2FpbiB8" + - "CnwgYDQwMyBtaXNzaW5nIHJlcXVlc3RlZCBhdXRob3JpdGllc2AgKGZ1bmN0aW9uIGludm9rZSkg" + - "fCBBZG1pbiB0b2tlbiBkb2Vzbid0IGhhdmUgYGludm9rZV9mdW5jdGlvbmAgc2NvcGUgfCBgbnZj" + - "Zi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWRlc2NyaXB0aW9uPeKApmAgdGhlbiByZS1ydW4gaW52" + - "b2tlIHwKCiMjIEluc3RhbGwgLyBgdXBgCgp8IFN5bXB0b20gfCBDYXVzZSB8IFJlbWVkaWF0aW9u" + - "IHwKfC0tLXwtLS18LS0tfAp8IEhlbG0gYHRpbWVkIG91dCB3YWl0aW5nIGZvciBjYXNzYW5kcmFg" + - "IHwgQ2Fzc2FuZHJhIFN0YXRlZnVsU2V0IFBWQyBzdHVjayBgUGVuZGluZ2AgfCBDb25maXJtIGRl" + - "ZmF1bHQgU3RvcmFnZUNsYXNzOyBjaGVjayBga3ViZWN0bCBnZXQgcHYscHZjIC1uIGNhc3NhbmRy" + - "YS1zeXN0ZW1gIHwKfCBgSW52YWxpZCBHUFUgJ05DUC5HUFUuSDEwMCcgc3BlY2lmaWVkYCAoZnVu" + - "Y3Rpb24gZGVwbG95KSB8IFdyb25nIGZpZWxkIOKAlCBgZ3B1YCBpcyB0aGUgZmFtaWx5LCBub3Qg" + - "dGhlIFNLVSB8IFVzZSBgImdwdSI6ICJIMTAwImAsIGAiaW5zdGFuY2VUeXBlIjogIk5DUC5HUFUu" + - "SDEwMF8xeCJgIHwKfCBgcmVnaW9uIG11c3QgYmUgcHJvdmlkZWRgIChjbHVzdGVyIHJlZ2lzdGVy" + - "IC8gaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmUpIHwgYC0tcmVnaW9uYCBlbXB0eSArIGBDTFVTVEVS" + - "X1JFR0lPTmAgZW52IGVtcHR5IHwgUGFzcyBgLS1yZWdpb249dXMtd2VzdC0xYCAob3IgYW55IG5v" + - "bi1lbXB0eSB2YWx1ZSkgfAp8IGByZXF1aXJlZEVudiAiTkNBX0lEIiBpcyBub3Qgc2V0YCAoaGVs" + - "bWZpbGUgZXJyb3IgZHVyaW5nIGNvbXB1dGUtcGxhbmUgYXBwbHkpIHwgT2xkZXIgbnZjZi1jbGkg" + - "YmVmb3JlIGNvbW1pdCBgNmFhNTcwNGA7IEV4dHJhRW52IG5vdCBwcm9wYWdhdGluZyBOQ0FfSUQg" + - "fCBVcGdyYWRlIGBudmNmLWNsaWAgdG8gYSByZWxlYXNlIGFmdGVyIGA2YWE1NzA0YCB8CnwgYG52" + - "Y2Etb3BlcmF0b3I6IEltYWdlUHVsbEJhY2tPZmZgIGZvciBgbnZjYS1vcGVyYXRvcjpwc2F0YCB8" + - "IEltYWdlIG5vdCBpbiBjbHVzdGVyIHJlZ2lzdHJ5OyBtdWx0aS1jbHVzdGVyIGJ1aWxkIGlzIGxv" + - "Y2FsIHwgYGszZCBpbWFnZSBpbXBvcnQgbnZjci5pby8uLi4vbnZjYS1vcGVyYXRvcjpwc2F0IC1j" + - "IDxjbHVzdGVyPmAgfAoKIyMgQ29tcHV0ZS1wbGFuZSBydW50aW1lCgp8IFN5bXB0b20gfCBDYXVz" + - "ZSB8IFJlbWVkaWF0aW9uIHwKfC0tLXwtLS18LS0tfAp8IE5WQ0EgYWdlbnQgQ3Jhc2hMb29wQmFj" + - "a09mZiB3aXRoIGBIVFRQIDQwMWAgb24gYC92MS9udmNhL2NsdXN0ZXJzLy4uLi9yZWdpc3RlcmAg" + - "fCBTdGFsZSBgb3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgZnJvbSBwcmlvciBy" + - "ZWdpc3RlcjsgY2x1c3RlciBJRCBkb2Vzbid0IG1hdGNoIElDTVMgfCBEZWxldGUgdGhlIHN0YWxl" + - "IGZpbGU7IHJlLXJ1biBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXBgIChpZGVtcG90ZW50IHJlZ2lz" + - "dGVyIHdyaXRlcyBhIGZyZXNoIGZpbGUpIHwKfCBgTm8gY2x1c3RlciBmb3VuZCB3aXRoIHZhbGlk" + - "IEpXS1MgZm9yIGNsdXN0ZXIgSUQ6IDxpZD5gIChJQ01TIGxvZykgfCBKV0tTIGluIElDTVMgZG9l" + - "c24ndCBtYXRjaCB3aGF0IGNvbXB1dGUtcGxhbmUgSzhzIGlzIGN1cnJlbnRseSBzaWduaW5nIHwg" + - "YG52Y2YtY2xpIGNsdXN0ZXIgcm90YXRlIC0tY2x1c3Rlci1pZD08aWQ+YCB8CnwgRnVuY3Rpb24g" + - "cG9kIGBJbWFnZVB1bGxCYWNrT2ZmYCBpbiBgbnZjZi1iYWNrZW5kYCB8IEltYWdlLWNyZWRlbnRp" + - "YWwtaGVscGVyIGNvbmZpZyBtaXNzaW5nIG9yIHdyb25nIHwgYGt1YmVjdGwgZGVzY3JpYmUgcG9k" + - "IC1uIG52Y2YtYmFja2VuZCA8cG9kPmA7IGNoZWNrIHRoZSBwdWxsIHNlY3JldCBjb25maWcgfAp8" + - "IEZ1bmN0aW9uIGRlcGxveSBzdHVjayBgREVQTE9ZSU5HYCBmb3IgPjUgbWluIHwgTkFUUyBzdHJl" + - "YW0gaW5pdCBsYWcgKGNvbGQtY2x1c3Rlcikg4oCUIHdhaXQsIG9yIGNoZWNrIE5BVFMgYXV0aC1j" + - "YWxsb3V0IGhlYWx0aCB8IGBrdWJlY3RsIGxvZ3MgLW4gbmF0cy1zeXN0ZW0gLWwgYXBwLmt1YmVy" + - "bmV0ZXMuaW8vbmFtZT1uYXRzLWF1dGgtY2FsbG91dC1zZXJ2aWNlYCB8CgojIyBUYXNrcwoKfCBT" + - "eW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBgdGFzayBjcmVh" + - "dGVgIHJldHVybnMgYE1pc3NpbmcgPFRZUEU+IHJlZ2lzdHJ5IGNyZWRlbnRpYWwgZm9yIGhvc3Ru" + - "YW1lYCwgb3Iga2VlcHMgdXNpbmcgYSBwcmV2aW91cyBjcmVkZW50aWFsIHZhbHVlLCBzaG9ydGx5" + - "IGFmdGVyIGByZWdpc3RyeS1jcmVkZW50aWFsIGFkZC91cGRhdGUvZGVsZXRlYCB3aGlsZSBgcmVn" + - "aXN0cnktY3JlZGVudGlhbCBsaXN0YC9gZ2V0YCBhbHJlYWR5IHNob3cgdGhlIG5ldyB2YWx1ZSB8" + - "IEV4cGVjdGVkIHByb3BhZ2F0aW9uIGRlbGF5OiBOVkNUIGNhY2hlcyB0aGUgYWNjb3VudCdzIHJl" + - "Z2lzdHJ5IGNyZWRlbnRpYWxzIHdpdGggYG52Y3QubnZjZi5jYWNoZS10dGxgIChkZWZhdWx0IGBQ" + - "VDVNYCwgYWJvdXQgNSBtaW4pIGFuZCBhcHBsaWVzIHRoZSBjaGFuZ2Ugd2hlbiB0aGF0IGNhY2hl" + - "ZCBjb3B5IHJlZnJlc2hlcyB8IFdhaXQgdXAgdG8gYWJvdXQgNSBtaW4gYW5kIHJldHJ5LCBvciBg" + - "a3ViZWN0bCAtbiBudmNmIHJvbGxvdXQgcmVzdGFydCBkZXBsb3ltZW50L252Y3QtYXBpYCB0byBh" + - "cHBseSBpbW1lZGlhdGVseSB8ClBLBwjzrhOEdBEAAHQRAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAA" + - "AAAAACwACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5tZFVUBQAB" + - "AKbOEi0tLQpuYW1lOiBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24KZGVzY3JpcHRpb246" + - "ID4tCiAgSW5zdGFsbCBhbmQgb3BlcmF0ZSBOVkNGIHNlbGYtaG9zdGVkIGNvbnRyb2wtcGxhbmUg" + - "YW5kIHNlcGFyYXRlIGNvbXB1dGUtcGxhbmUKICBzdGFja3MuIENvdmVycyBIZWxtZmlsZSB2YWx1" + - "ZXMgYW5kIENMSSBwcm9maWxlIGluc3RhbGxhdGlvbiBmbG93cywgdGVhcmRvd24sCiAgdmFsdWVz" + - "IG92ZXJyaWRlcywgcHVsbCBzZWNyZXRzLCBhbmQgdHJvdWJsZXNob290aW5nLiBVc2UgZm9yCiAg" + - "bnZjZi1zZWxmLW1hbmFnZWQtc3RhY2ssIG52Y2YtY29tcHV0ZS1wbGFuZS1zdGFjaywgc3BsaXQg" + - "Y29tcHV0ZS1wbGFuZQogIGluc3RhbGxhdGlvbiwgY29udHJvbC1wbGFuZSBpbnN0YWxsYXRpb24s" + - "IENMSS1nZW5lcmF0ZWQgY29udHJvbC1wbGFuZQogIHByb2ZpbGVzLCBIZWxtZmlsZSwgc2VsZi1t" + - "YW5hZ2VkLCBvciBzZWxmLWhvc3RlZCBkZXBsb3ltZW50cy4gRG8gTk9UIHVzZSBmb3IKICBsb2Nh" + - "bCBrM2QgZW52aXJvbm1lbnRzOyB1c2UgdGhlIGxvY2FsIGszZCBkZXZlbG9wbWVudCB3b3JrZmxv" + - "dyBpbnN0ZWFkLgpsaWNlbnNlOiBBcGFjaGUtMi4wCmNvbXBhdGliaWxpdHk6IFJlcXVpcmVzIGhl" + - "bG1maWxlID49IDEuMS4wIDwgMS4yLjAsIGhlbG0gPj0gMy4xMiwgaGVsbS1kaWZmIHBsdWdpbiwg" + - "a3ViZWN0bCBtYXRjaGluZyBjbHVzdGVyIHZlcnNpb24KYXV0aG9yOiAibnZjZi1jb3JlLWVuZyA8" + - "bnZjZi1jb3JlLWVuZ0BleGNoYW5nZS5udmlkaWEuY29tPiIKdmVyc2lvbjogIjEuMC4wIgp0YWdz" + - "OiBbbnZjZiwgc2VsZi1tYW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQsIGNvbnRyb2wtcGxh" + - "bmUsIGNvbXB1dGUtcGxhbmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24sIGRlcGxveW1lbnQs" + - "IHB1bGwtc2VjcmV0c10KdG9vbHM6IFtTaGVsbCwgUmVhZCwgRWRpdCwgR3JlcCwgR2xvYl0KbWV0" + - "YWRhdGE6CiAgaW50ZXJuYWw6IGZhbHNlCiAgYXV0aG9yOiAibnZjZi1jb3JlLWVuZyA8bnZjZi1j" + - "b3JlLWVuZ0BleGNoYW5nZS5udmlkaWEuY29tPiIKICB2ZXJzaW9uOiAiMS4wIgogIHRhZ3M6IFtu" + - "dmNmLCBzZWxmLW1hbmFnZWQsIGhlbG1maWxlLCBzZWxmLWhvc3RlZCwgY29udHJvbC1wbGFuZSwg" + - "Y29tcHV0ZS1wbGFuZSwgY2xpLXByb2ZpbGUsIGluc3RhbGxhdGlvbiwgZGVwbG95bWVudCwgcHVs" + - "bC1zZWNyZXRzXQogIGxhbmd1YWdlczogW2Jhc2gsIHlhbWxdCiAgZnJhbWV3b3JrczogW2hlbG1m" + - "aWxlLCBoZWxtLCBrdWJlY3RsXQogIGRvbWFpbjogY2xvdWQtaW5mcmFzdHJ1Y3R1cmUKLS0tCgoj" + - "IE5WQ0YgU2VsZi1NYW5hZ2VkIFN0YWNrIE9wZXJhdGlvbnMKCk9wZXJhdGlvbmFsIGd1aWRlIGZv" + - "ciBtYXRjaGluZyBOVkNGIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgSGVsbWZpbGUg" + - "YnVuZGxlcy4KCiMjIEluc3RydWN0aW9ucwoKVXNlIHRoaXMgc2tpbGwgZm9yIGluc3RhbGwsIHVw" + - "Z3JhZGUsIG9yIHRlYXJkb3duIHdvcmsgaW4gbWF0Y2hpbmcgYG52Y2Ytc2VsZi1tYW5hZ2VkLXN0" + - "YWNrYCBhbmQgYG52Y2YtY29tcHV0ZS1wbGFuZS1zdGFja2AgYnVuZGxlczsga2VlcCBIZWxtZmls" + - "ZSB2YWx1ZXMgYW5kIENMSSBwcm9maWxlIGhhbmRvZmZzIHNlcGFyYXRlLiBGb3IgYGZ1bmN0aW9u" + - "VHlwZTogIkxMTSJgLCByZWFkIFtMTE0gRnVuY3Rpb24gRW5hYmxlbWVudF0ocmVmZXJlbmNlcy9o" + - "ZWxtZmlsZS1zdHJ1Y3R1cmUubWQjbGxtLWZ1bmN0aW9uLWVuYWJsZW1lbnQpLgoKIyMgUHJlcmVx" + - "dWlzaXRlcwoKQXNrIGZvciB0aGUgZXh0cmFjdGVkIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2Ag" + - "cGF0aC4gRm9yIHNwbGl0IGluc3RhbGxhdGlvbiwKYWxzbyByZXF1aXJlIHRoZSBtYXRjaGluZy12" + - "ZXJzaW9uIGBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIHBhdGguIFZlcmlmeSBib3RoOgoKYGBg" + - "YmFzaApscyA8Y29udHJvbC1wbGFuZS1zdGFjaz4vaGVsbWZpbGUuZC8gPGNvbnRyb2wtcGxhbmUt" + - "c3RhY2s+L2Vudmlyb25tZW50cy8gPGNvbnRyb2wtcGxhbmUtc3RhY2s+L3NlY3JldHMvIDxjb250" + - "cm9sLXBsYW5lLXN0YWNrPi9nbG9iYWwueWFtbC5nb3RtcGwKbHMgPGNvbXB1dGUtcGxhbmUtc3Rh" + - "Y2s+L2hlbG1maWxlLmQvIDxjb21wdXRlLXBsYW5lLXN0YWNrPi9lbnZpcm9ubWVudHMvIDxjb21w" + - "dXRlLXBsYW5lLXN0YWNrPi9nbG9iYWwueWFtbC5nb3RtcGwKYGBgCgpJZiBlaXRoZXIgZGlyZWN0" + - "b3J5IGlzIG1pc3NpbmcsIGRvd25sb2FkIG1hdGNoaW5nIGJ1bmRsZSB2ZXJzaW9ucyBmcm9tIE5H" + - "QzoKCmBgYGJhc2gKbmdjIHJlZ2lzdHJ5IHJlc291cmNlIGRvd25sb2FkLXZlcnNpb24gPG9yZz4v" + - "bnZjZi1zZWxmLW1hbmFnZWQtc3RhY2s6PHZlcnNpb24+Cm5nYyByZWdpc3RyeSByZXNvdXJjZSBk" + - "b3dubG9hZC12ZXJzaW9uIDxvcmc+L252Y2YtY29tcHV0ZS1wbGFuZS1zdGFjazo8dmVyc2lvbj4K" + - "YGBgCgpDb250cm9sLXBsYW5lIGNvbW1hbmRzIGJlbG93IGFzc3VtZSB0aGUgY29udHJvbC1wbGFu" + - "ZSBidW5kbGUgcm9vdC4gU3BsaXQtZmxvdwpjb21tYW5kcyBhbmQgcm9vdCBzdWJzdGl0dXRpb24g" + - "YXJlIGluCltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21w" + - "dXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkuCgojIyBCZWZvcmUgWW91IFN0YXJ0CgpWZXJpZnkg" + - "dG9vbGluZyBhbmQgY29udGV4dCBiZWZvcmUgYW55IG9wZXJhdGlvbjoKCmBgYGJhc2gKaGVsbWZp" + - "bGUgLS12ZXJzaW9uICAgIyBNdXN0IGJlIDEuMS54ICgxLjIuMCByZW1vdmVkIHNlcXVlbnRpYWwg" + - "bW9kZSkKaGVsbSB2ZXJzaW9uICAgICAgICAgIyBNdXN0IGJlID49IDMuMTIKaGVsbSBwbHVnaW4g" + - "bGlzdCAgICAgIyBNdXN0IGluY2x1ZGUgaGVsbS1kaWZmID49IDMuMTEKa3ViZWN0bCB2ZXJzaW9u" + - "ICAgICAgIyBDbGllbnQgbXVzdCBiZSB3aXRoaW4gMSBtaW5vciB2ZXJzaW9uIG9mIGNsdXN0ZXIK" + - "YGBgCgpDb250cm9sLXBsYW5lIGNvbW1hbmRzIHJ1biBmcm9tIHRoZSBleHRyYWN0ZWQgYG52Y2Yt" + - "c2VsZi1tYW5hZ2VkLXN0YWNrL2Agcm9vdDoKCmBgYGJhc2gKY2QgcGF0aC90by9udmNmLXNlbGYt" + - "bWFuYWdlZC1zdGFjawpscyBoZWxtZmlsZS5kLyBlbnZpcm9ubWVudHMvIHNlY3JldHMvIGdsb2Jh" + - "bC55YW1sLmdvdG1wbApgYGAKCklkZW50aWZ5IHRoZSBlbnZpcm9ubWVudCBmcm9tIGBlbnZpcm9u" + - "bWVudHMvPG5hbWU+LnlhbWxgIGFuZApgc2VjcmV0cy88bmFtZT4tc2VjcmV0cy55YW1sYDsgZm9y" + - "IEVLUywgdXNlIHRoZSBjYW5vbmljYWwKW0NTUCBFbmQtdG8tRW5kIEV4YW1wbGVdKGh0dHBzOi8v" + - "ZG9jcy5udmlkaWEuY29tL252Y2YvdjAuNi4wLXJjL2NzcC1lbmQtdG8tZW5kLWV4YW1wbGUpLgoK" + - "IyMgSG93IFZhbHVlcyBGbG93CgpVbmRlcnN0YW5kaW5nIHZhbHVlIHByZWNlZGVuY2UgcHJldmVu" + - "dHMgdGhlIG1vc3QgY29tbW9uIGNvbmZpZ3VyYXRpb24gbWlzdGFrZXMuCgpgYGB0ZXh0CmVudmly" + - "b25tZW50cy9iYXNlLnlhbWwgICAgICAgICAgKGRlZmF1bHRzKQogICAgLT4gbWVyZ2VkIHdpdGgK" + - "ZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwgICAgICAgICAoeW91ciBvdmVycmlkZXMpCiAgICAtPiBj" + - "b25zdW1lZCBieQpnbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgIChHbyB0ZW1wbGF0ZSwg" + - "Y29uc3RydWN0cyBwZXItY2hhcnQgdmFsdWVzKQogICAgLT4gY29uc3VtZWQgYnkKc2VjcmV0cy88" + - "ZW52Pi1zZWNyZXRzLnlhbWwgICAgICAoc2Vuc2l0aXZlIHZhbHVlcykKICAgIC0+IG92ZXJyaWRk" + - "ZW4gYnkKcmVsZWFzZSBpbmxpbmUgdmFsdWVzOiBibG9ja3MgICAoaGlnaGVzdCBwcmVjZWRlbmNl" + - "KQpgYGAKCkNyaXRpY2FsOiBgZ2xvYmFsLnlhbWwuZ290bXBsYCBvbmx5IHBhc3NlcyB0aHJvdWdo" + - "IHNwZWNpZmljIGtleXMgdG8gZWFjaCBjaGFydCAoaW1hZ2UgcmVnaXN0cmllcywgbm9kZSBzZWxl" + - "Y3RvcnMsIHN0b3JhZ2UsIHJlcGxpY2EgY291bnRzKS4gU2V0dGluZyBhbiBhcmJpdHJhcnkgY2hh" + - "cnQgdmFsdWUgaW4gdGhlIGVudmlyb25tZW50IGZpbGUgd2lsbCBiZSBzaWxlbnRseSBpZ25vcmVk" + - "IGlmIGBnbG9iYWwueWFtbC5nb3RtcGxgIGRvZXMgbm90IHByb3BhZ2F0ZSBpdC4KClRvIG92ZXJy" + - "aWRlIGFyYml0cmFyeSBjaGFydCB2YWx1ZXMsIHVzZSBhIGhlbG1maWxlIHJlbGVhc2UgYHZhbHVl" + - "czpgIGJsb2NrLiBTZWUgW092ZXJyaWRpbmcgSGVsbSBDaGFydCBWYWx1ZXNdKCNvdmVycmlkaW5n" + - "LWhlbG0tY2hhcnQtdmFsdWVzKS4KCiMjIENsZWFuIEluc3RhbGxhdGlvbgoKIyMjIDEuIENyZWF0" + - "ZSBuYW1lc3BhY2VzIGFuZCBpbWFnZSBwdWxsIHNlY3JldHMgKGlmIHVzaW5nIGEgcHJpdmF0ZSBy" + - "ZWdpc3RyeSkKCmBgYGJhc2gKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0g" + - "bnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3Vi" + - "ZWN0bCBjcmVhdGUgbmFtZXNwYWNlICIkbnMiIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1" + - "YmVjdGwgYXBwbHkgLWYgLQpkb25lCgojIE9ubHkgaWYgcHVsbGluZyBmcm9tIGEgcHJpdmF0ZSBy" + - "ZWdpc3RyeSAoZS5nLiwgTkdDIG52Y3IuaW8pCmV4cG9ydCBOR0NfQVBJX0tFWT0iPHlvdXIta2V5" + - "PiIKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBl" + - "c3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCBjcmVhdGUgc2Vj" + - "cmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNlcnZlcj1udmNy" + - "LmlvIFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAgLS1kb2NrZXIt" + - "cGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIgXAogICAgLS1k" + - "cnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCmRvbmUKYGBgCgpJZiB1" + - "c2luZyBwdWxsIHNlY3JldHMsIHlvdSBtdXN0IGFsc28gY29uZmlndXJlIGVhY2ggaGVsbWZpbGUg" + - "cmVsZWFzZSB0byByZWZlcmVuY2UgdGhlbS4gU2VlIFtJbWFnZSBQdWxsIFNlY3JldHNdKCNpbWFn" + - "ZS1wdWxsLXNlY3JldHMpLgoKIyMjIDIuIEF1dGhlbnRpY2F0ZSBoZWxtIHRvIHlvdXIgY2hhcnQg" + - "cmVnaXN0cnkKCkJvdGggYGRvY2tlciBsb2dpbmAgQU5EIGBoZWxtIHJlZ2lzdHJ5IGxvZ2luYCBh" + - "cmUgcmVxdWlyZWQgZm9yIE5HQy4gSGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0byBw" + - "dWxsIE9DSSBjaGFydHMsIHNvIHRoZSBoZWxtIGNyZWRlbnRpYWwgc3RvcmUgbXVzdCBiZSBhdXRo" + - "ZW50aWNhdGVkIHNlcGFyYXRlbHkuCgpgYGBiYXNoCiMgTkdDIC0tIGJvdGggY29tbWFuZHMgYXJl" + - "IHJlcXVpcmVkCmRvY2tlciBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tlbicgLXAgIiROR0Nf" + - "QVBJX0tFWSIKaGVsbSByZWdpc3RyeSBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tlbicgLXAg" + - "IiROR0NfQVBJX0tFWSIKCiMgRUNSCmF3cyBlY3IgZ2V0LWxvZ2luLXBhc3N3b3JkIC0tcmVnaW9u" + - "IDxyZWdpb24+IHwgXAogIGhlbG0gcmVnaXN0cnkgbG9naW4gLS11c2VybmFtZSBBV1MgLS1wYXNz" + - "d29yZC1zdGRpbiA8YWNjb3VudD4uZGtyLmVjci48cmVnaW9uPi5hbWF6b25hd3MuY29tCmBgYAoK" + - "PiBOb3RlOiBgaGVsbSByZWdpc3RyeSBsb2dpbmAga2VlcHMgb25seSB0aGUgbGFzdCBsb2dpbiBw" + - "ZXIgaG9zdCAobXVsdGktb3JnIGdvdGNoYSkuCj4gVGhlIHN0YWNrIGFuZCB0aGUgY2FjaGVzIHNw" + - "YW4gc2V2ZXJhbCBOR0Mgb3JncyB0aGF0IG5lZWQgZGlmZmVyZW50IGtleXMsIGJ1dCB0aGV5IGFs" + - "bAo+IGxpdmUgdW5kZXIgdGhlIG9uZSBob3N0IGBudmNyLmlvYC4gQSBzZWNvbmQgYGhlbG0gcmVn" + - "aXN0cnkgbG9naW4gbnZjci5pb2AgKG9yCj4gYGRvY2tlciBsb2dpbmApIHdpdGggYSBkaWZmZXJl" + - "bnQga2V5IHNpbGVudGx5IG92ZXJ3cml0ZXMgdGhlIGZpcnN0LCBzbyBwdWxscyBmb3IgdGhlCj4g" + - "Zmlyc3Qgb3JnIHRoZW4gZmFpbCB3aXRoIGEgbWlzbGVhZGluZyBgNDAzIEFjY2VzcyBEZW5pZWRg" + - "IChub3QgYSA0MDE6IHRoZSBhdXRoCj4gc3VjY2VlZGVkLCBpdCdzIHRoZSB3cm9uZy1vcmcga2V5" + - "KS4gSWYgeW91IHB1bGwgY2hhcnRzL2ltYWdlcyBmcm9tIG1vcmUgdGhhbiBvbmUgb3JnLAo+IGVp" + - "dGhlciByZS1ydW4gdGhlIGxvZ2luIHdpdGggdGhlIGNvcnJlY3Qga2V5IGltbWVkaWF0ZWx5IGJl" + - "Zm9yZSBlYWNoIHB1bGwsIG9yIHBhc3MKPiBgLS11c2VybmFtZSAnJG9hdXRodG9rZW4nIC0tcGFz" + - "c3dvcmQgPGtleT5gIHBlciBgaGVsbSBwdWxsYCBpbnZvY2F0aW9uIGluc3RlYWQgb2YgcmVseWlu" + - "Zwo+IG9uIHRoZSBzdG9yZWQgbG9naW4uIChQdWxsaW5nIGV2ZXJ5dGhpbmcgZnJvbSBhIHNpbmds" + - "ZSByZWdpc3RyeSBtaXJyb3IgYXZvaWRzIHRoaXMKPiBlbnRpcmVseS4pCgojIyMgMmIuIChSZWNv" + - "bW1lbmRlZCkgUHVsbCBmcm9tIGEgcmVnaXN0cnkgdGhlIGNsdXN0ZXIgYXV0aGVudGljYXRlcyB0" + - "byBhdXRvbWF0aWNhbGx5CgpJZiB5b3UgbWlycm9yIHRoZSBOVkNGIGltYWdlcyBpbnRvIGEgcmVn" + - "aXN0cnkgdGhhdCB0aGUgY2x1c3RlciBjYW4gcHVsbCBmcm9tIHdpdGhvdXQgYW4KZXhwbGljaXQg" + - "aW1hZ2UgcHVsbCBzZWNyZXQgKGZvciBleGFtcGxlLCBhIHJlZ2lzdHJ5IHdoZXJlIHRoZSBub2Rl" + - "IG9yIHdvcmtsb2FkIGlkZW50aXR5IGlzCmdyYW50ZWQgcHVsbCBhY2Nlc3MgYXV0b21hdGljYWxs" + - "eSksIHBvaW50IHRoZSBzdGFjayBhdCBpdCBhbmQgc2tpcCB0aGUgY3JlZGVudGlhbCBzdGVwcwph" + - "Ym92ZS4KCjEuIFBvaW50IHRoZSBzdGFjayBhdCB0aGUgbWlycm9yIGluIGBlbnZpcm9ubWVudHMv" + - "PGVudj4ueWFtbGA6CgogICBgYGB5YW1sCiAgIGdsb2JhbDoKICAgICBpbWFnZToKICAgICAgIHJl" + - "Z2lzdHJ5OiA8eW91ci1yZWdpc3RyeT4gICAgICAgICAgICAjIGUuZy4gcmVnaXN0cnkuZXhhbXBs" + - "ZS5jb20KICAgICAgIHJlcG9zaXRvcnk6IDxtaXJyb3Itc3ViLXBhdGg+CiAgICAgaGVsbToKICAg" + - "ICAgIHNvdXJjZXM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbmx5IGlmIHlvdSBh" + - "bHNvIG1pcnJvcmVkIHRoZSBoZWxtIGNoYXJ0cwogICAgICAgICByZWdpc3RyeTogPHlvdXItcmVn" + - "aXN0cnk+CiAgICAgICAgIHJlcG9zaXRvcnk6IDxtaXJyb3Itc3ViLXBhdGg+CiAgIGBgYAoKICAg" + - "PiBUaGUgbWFuaWZlc3QgaGFzIGEgbWl4IG9mIE9DSSBhbmQgbm9uLU9DSSBhcnRpZmFjdHMsIHNv" + - "IGNvbnZlcnQgbm9uLU9DSSBjaGFydHMgYmVmb3JlCiAgID4gbWlycm9yaW5nLiBDb250YWluZXIg" + - "aW1hZ2VzIChgbnZjci5pby8uLi5gKSBhcmUgYWxyZWFkeSBPQ0kgYW5kIG1pcnJvciBhcy1pcy4g" + - "U29tZSBIZWxtCiAgID4gY2hhcnRzLCB0aG91Z2gsIGFyZSBwdWJsaXNoZWQgdG8gYW4gYGh0dHBz" + - "Oi8vYCBIZWxtIHJlcG9zaXRvcnkgKGZvciBleGFtcGxlCiAgID4gYGhlbG0ubmdjLm52aWRpYS5j" + - "b21gKS4gVGhvc2UgYXJlIG5vdCBPQ0kgYW5kIGNhbm5vdCBiZSByZXNvbHZlZCBieSBgZ2xvYmFs" + - "LmhlbG0uc291cmNlc2AKICAgPiAoT0NJKSBvciBtaXJyb3JlZCBkaXJlY3RseS4gQmVmb3JlIHBv" + - "aW50aW5nIHRoZSBzdGFjayBhdCB5b3VyIG1pcnJvciwgY29udmVydCBlYWNoCiAgID4gYGh0dHBz" + - "Oi8vYCBjaGFydCB0byBPQ0k6IGBoZWxtIHJlcG8gYWRkYC9gaGVsbSBwdWxsYCB0aGUgYC50Z3pg" + - "LCB0aGVuCiAgID4gYGhlbG0gcHVzaCA8Y2hhcnQ+LnRneiBvY2k6Ly88eW91ci1yZWdpc3RyeT4v" + - "PG1pcnJvci1zdWItcGF0aD5gLiBPbmx5IE9DSSBjaGFydHMgY2FuIGxpdmUKICAgPiB1bmRlciBg" + - "Z2xvYmFsLmhlbG0uc291cmNlc2AuCgoyLiBTa2lwIHRoZSBjcmVkZW50aWFsIHN0ZXBzIGFib3Zl" + - "LiBXaGVuIHRoZSBjbHVzdGVyIGF1dGhlbnRpY2F0ZXMgdG8gdGhlIHJlZ2lzdHJ5CiAgIGF1dG9t" + - "YXRpY2FsbHkgKHRoZSBub2RlIG9yIHdvcmtsb2FkIGlkZW50aXR5IGhhcyBwdWxsIGFjY2Vzcyks" + - "IHRoZSBwdWxsIG5lZWRzIG5vCiAgIEt1YmVybmV0ZXMgc2VjcmV0LCBzbyB5b3UgZG8gbm90IG5l" + - "ZWQ6IHRoZSBwZXItbmFtZXNwYWNlIGBudmNyLWNyZWRzYCBmcm9tIHN0ZXAgMQogICAoc3RpbGwg" + - "Y3JlYXRlIHRoZSBuYW1lc3BhY2VzLCBqdXN0IG5vdCB0aGUgc2VjcmV0KSwgdGhlIGBnbG9iYWwu" + - "aW1hZ2VQdWxsU2VjcmV0c2AgZW50cnksCiAgIG9yIHRoZSBgZG9ja2VyIGxvZ2luYC9gaGVsbSBy" + - "ZWdpc3RyeSBsb2dpbiBudmNyLmlvYCBmcm9tIHN0ZXAgMi4KCiAgID4gT25lIHJlc2lkdWFsIGNy" + - "ZWRlbnRpYWw6IG52Y2YtYXBpIHN0aWxsIHZhbGlkYXRlcyB0aGUgdXNlciBmdW5jdGlvbiBpbWFn" + - "ZSBhdAogICA+IGBmdW5jdGlvbiBjcmVhdGVgIHZpYSB0aGUgYWNjb3VudCByZWdpc3RyeSBjcmVk" + - "ZW50aWFsLCBzbyB0aGF0IGNyZWRlbnRpYWwgbXVzdCBwb2ludCBhdAogICA+IHdoaWNoZXZlciBy" + - "ZWdpc3RyeSBob2xkcyB0aGUgdXNlciBpbWFnZSAoc2V0IGl0IHRvIHlvdXIgbWlycm9yIGlmIHRo" + - "ZSBpbWFnZSBpcyBtaXJyb3JlZAogICA+IHRoZXJlKS4KCiMjIyAzLiBTZXQgdGhlIHJvdXRlIGRv" + - "bWFpbgoKYGdsb2JhbC5kb21haW5gIHNldHMgdGhlIGhvc3RuYW1lIHN1ZmZpeCBmb3Igcm91dGVz" + - "IHN1Y2ggYXMgYGFwaS48ZG9tYWluPmAuIEl0IGRvZXMgbm90IGNvbmZpZ3VyZSB0aGUgR2F0ZXdh" + - "eSBvciBpdHMgbG9hZCBiYWxhbmNlci4gUXVlcnkgdGhlIGV4YWN0IGV4aXN0aW5nIEdhdGV3YXk6" + - "CgpgYGBiYXNoCkdBVEVXQVlfQUREUkVTUz0kKGt1YmVjdGwgZ2V0IGdhdGV3YXkgPGdhdGV3YXkt" + - "bmFtZT4gLW4gPGdhdGV3YXktbmFtZXNwYWNlPiAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVz" + - "c2VzWzBdLnZhbHVlfScpCnRlc3QgLW4gIiRHQVRFV0FZX0FERFJFU1MiCmBgYAoKVGhlIGFkZHJl" + - "c3MgbWF5IGJlIGEgaG9zdG5hbWUgb3IgSVAuIENsb3VkIHByb3ZpZGVyIGFuZCBHYXRld2F5IGNv" + - "bmZpZ3VyYXRpb24gZGV0ZXJtaW5lIHRoZSBsb2FkIGJhbGFuY2VyIHR5cGUgYW5kIGFkZHJlc3Mg" + - "Zm9ybWF0LiBUaGUgc2VsZi1tYW5hZ2VkIHN0YWNrIGRvZXMgbm90IHNlbGVjdCBlaXRoZXIuCgpG" + - "b3IgdGVtcG9yYXJ5IHRlc3Rpbmcgd2l0aG91dCBETlMsIHVzZSBhIHN0YWJsZSByZXNlcnZlZCBz" + - "dWZmaXggc3VjaCBhcyBgZ2xvYmFsLmRvbWFpbjogIm52Y2YudGVzdCJgLCBjb25uZWN0IHRvIGBH" + - "QVRFV0FZX0FERFJFU1NgLCBhbmQgc2VuZCBgSG9zdDogYXBpLm52Y2YudGVzdGAuIEZvciBwcm9k" + - "dWN0aW9uLCB1c2UgeW91ciBiYXNlIEROUyBkb21haW4gYW5kIHBvaW50IGl0cyByb3V0ZSByZWNv" + - "cmRzIHRvIGBHQVRFV0FZX0FERFJFU1NgLiBJZiB0aGUgZW5kcG9pbnQgbGF0ZXIgY2hhbmdlcywg" + - "a2VlcCBgZ2xvYmFsLmRvbWFpbmAgc3RhYmxlIGFuZCB1cGRhdGUgb25seSBETlMgb3IgdGhlIGNs" + - "aWVudCBkZXN0aW5hdGlvbi4gU2VlIEV4YW1wbGUgNCBpbiBbZXhhbXBsZXMubWRdKGV4YW1wbGVz" + - "Lm1kKS4KCiMjIyA0LiBQcmV2aWV3IGFuZCBkZXBsb3kKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxl" + - "bnYtbmFtZT4gaGVsbWZpbGUgdGVtcGxhdGUgICAjIFByZXZpZXcgcmVuZGVyZWQgbWFuaWZlc3Rz" + - "CkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIHN5bmMgICAgICAgIyBEZXBsb3kKYGBg" + - "Cgo+IFNldCBCT1RIIENhc3NhbmRyYSBwYXNzd29yZHMgaW4gdGhlIHNlY3JldHMgZmlsZS4gVGhl" + - "IHNlY3JldHMgZmlsZSBkb2N1bWVudHMKPiBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgLCBi" + - "dXQgdGhlIGNhc3NhbmRyYSBjaGFydCBoYXMgYSBzZWNvbmQgY3JlZGVudGlhbCwKPiBgY2Fzc2Fu" + - "ZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgLCB0aGF0IGRlZmF1bHRzIHRvIGBjaEBuZzNtM2AuIElm" + - "IHlvdSBzZXQgb25seQo+IGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAsIHRoZSBzZXJ2aWNl" + - "IHJvbGUga2VlcHMgdGhhdCBkZWZhdWx0IGFuZCBldmVyeSBEQi1iYWNrZWQKPiBzZXJ2aWNlIGNy" + - "YXNoLWxvb3BzIHdpdGggYEJhZCBjcmVkZW50aWFsc2Agb25jZSBpdCB0cmllcyB0byBhdXRoZW50" + - "aWNhdGUuIFNldAo+IGBjYXNzYW5kcmEuc2VydmljZVJvbGVQYXNzd29yZGAgdG8gdGhlIHNhbWUg" + - "dmFsdWUgYXMgYERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYC4KCiMjIyA1LiBEZXBsb3ltZW50" + - "IHBoYXNlcwoKSGVsbWZpbGUgZGVwbG95cyBpbiBvcmRlciB3aXRoIGRlcGVuZGVuY2llczoKCnwg" + - "UGhhc2UgfCBTZWxlY3RvciB8IFNlcnZpY2VzIHwgV2FpdCB0aW1lIHwKfC0tLS0tLS18LS0tLS0t" + - "LS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS0tfAp8IDEgfCBgcmVsZWFzZS1ncm91cD1kZXBlbmRl" + - "bmNpZXNgIHwgTkFUUywgT3BlbkJhbywgQ2Fzc2FuZHJhIHwgNS0xMCBtaW4gfAp8IDIgfCBgcmVs" + - "ZWFzZS1ncm91cD1zZXJ2aWNlc2AgfCBBUEksIFNJUywgRVNTLCBpbnZvY2F0aW9uLCBncnBjLXBy" + - "b3h5LCBub3RhcnksIGFwaS1rZXlzLCBvcHRpb25hbCBMTE0gZ2F0ZXdheS9yb3V0ZXIsIG9wdGlv" + - "bmFsIFZhbml0eSBHYXRld2F5LCBOVkNGIFVJIHdoZW4gdGhlIHN0YWNrIHBhY2thZ2UgaW5jbHVk" + - "ZXMgdGhlIGFkZG9uIHwgNS0xMCBtaW4gfAp8IDMgfCBgcmVsZWFzZS1ncm91cD1pbmdyZXNzYCB8" + - "IEdhdGV3YXkgcm91dGVzIHwgMS0yIG1pbiB8CnwgNCB8IGByZWxlYXNlLWdyb3VwPW9ic2VydmFi" + - "aWxpdHlgIHwgT2JzZXJ2YWJpbGl0eSBzdGFjayAoaWYgZW5hYmxlZCkgfCAxLTIgbWluIHwKCk1v" + - "bml0b3IgaW4gYSBzZXBhcmF0ZSB0ZXJtaW5hbDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgcG9kcyAt" + - "QSAtdwpgYGAKCiMjIyA2LiBFbmFibGUgVmFuaXR5IEdhdGV3YXkgKG9wdGlvbmFsKQoKVmFuaXR5" + - "IEdhdGV3YXkgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBhbmQgaXMgb25seSBuZWVkZWQgZm9yIGN1" + - "c3RvbWVyLWZhY2luZwpob3N0bmFtZXMgb3IgcGF0aCBtYXBwaW5ncyBpbiBmcm9udCBvZiB0aGUg" + - "c3RhbmRhcmQgTlZDRiBBUEkgYW5kIGludm9jYXRpb24Kcm91dGVzLiBJdCBpcyBhdmFpbGFibGUg" + - "b25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhlIFZhbml0eSBHYXRld2F5CmFk" + - "ZG9uLiBJZiB0aGUgZXh0cmFjdGVkIHN0YWNrIHBhY2thZ2UgZG9lcyBub3QgY29udGFpbiBhIGB2" + - "YW5pdHktZ2F0ZXdheWAKcmVsZWFzZSBhbmQgYHZhbml0eUdhdGV3YXlgIHJvdXRlIHZhbHVlcywg" + - "c2tpcCB0aGVzZSBjb21tYW5kcyBhbmQgdXNlIGEgbmV3ZXIKc3RhY2sgcGFja2FnZSB0aGF0IGlu" + - "Y2x1ZGVzIHRoZW0uCgpJZiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGUgYWRkb24sIGVu" + - "YWJsZSBpdCBpbgpgZW52aXJvbm1lbnRzLzxlbnYtbmFtZT4ueWFtbGA6CgpgYGB5YW1sCmFkZG9u" + - "czoKICB2YW5pdHlHYXRld2F5OgogICAgZW5hYmxlZDogdHJ1ZQogICAgbWFwcGluZ0NvbmZpZzog" + - "e30KYGBgCgpUaGUgZGVmYXVsdCByb3V0ZSBob3N0IGlzIGB2YW5pdHkuPGRvbWFpbj5gIGFuZCB0" + - "aGUgYmFja2VuZCBpcwpgdmFuaXR5LWdhdGV3YXkubnZjZjo4MDgwYC4gUHV0IGRlcGxveW1lbnQt" + - "c3BlY2lmaWMgaG9zdCBhbmQgcGF0aCBtYXBwaW5ncyB1bmRlcgpgYWRkb25zLnZhbml0eUdhdGV3" + - "YXkubWFwcGluZ0NvbmZpZ2AuIElmIHlvdSBuZWVkIGN1c3RvbSB2YW5pdHkgaG9zdHMgaW5zdGVh" + - "ZCBvZgpgdmFuaXR5Ljxkb21haW4+YCwgdXNlIHRoZSByb3V0ZSBob3N0bmFtZSBvdmVycmlkZXMg" + - "c3VwcG9ydGVkIGJ5IHRoZSBzdGFjawpwYWNrYWdlIGFuZCBjcmVhdGUgbWF0Y2hpbmcgRE5TIHJl" + - "Y29yZHMuCgpBZnRlciBjb25maXJtaW5nIHRoZSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBgdmFuaXR5" + - "LWdhdGV3YXlgIHJlbGVhc2UsIHByZXZpZXcgYW5kCmFwcGx5IHRoZSBzZXJ2aWNlIGFuZCByb3V0" + - "ZToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBu" + - "YW1lPXZhbml0eS1nYXRld2F5IHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1m" + - "aWxlIC0tc2VsZWN0b3IgbmFtZT12YW5pdHktZ2F0ZXdheSBzeW5jCkhFTE1GSUxFX0VOVj08ZW52" + - "LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1pbmdyZXNzIHN5bmMKYGBg" + - "CgpWZXJpZnkgdGhlIHJvdXRlIG9ubHkgd2hlbiB0aGUgYWRkb24gaXMgcHJlc2VudCBhbmQgZW5h" + - "YmxlZDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgZGVwbG95LHN2YyAtbiBudmNmIC1sIGFwcC5rdWJl" + - "cm5ldGVzLmlvL25hbWU9dmFuaXR5LWdhdGV3YXkKa3ViZWN0bCBnZXQgaHR0cHJvdXRlIC1BIHwg" + - "Z3JlcCAtaSB2YW5pdHkKY3VybCAtSCAiSG9zdDogdmFuaXR5Ljxkb21haW4+IiAiaHR0cDovLzxn" + - "YXRld2F5LWFkZHJlc3M+L2hlYWx0aCIKYGBgCgpEbyBub3QgZW5hYmxlIFZhbml0eSBHYXRld2F5" + - "IGZvciBzdGFuZGFyZCBBUEksIEFQSSBLZXlzLCBpbnZvY2F0aW9uLCBMTE0KaW52b2NhdGlvbiwg" + - "b3IgZ1JQQyB0cmFmZmljLiBUaG9zZSByb3V0ZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBiYXNlIGdh" + - "dGV3YXkKcm91dGVzLgoKIyMjIDcuIEVuYWJsZSBOVkNGIFVJIChvcHRpb25hbCkKCk5WQ0YgVUkg" + - "aXMgYW4gb3B0aW9uYWwsIGN1c3RvbWVyLWZhY2luZyBhZG1pbi1wYW5lbCBVSS4gSXQgaXMgZGlz" + - "YWJsZWQgYnkKZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhh" + - "dCBpbmNsdWRlIHRoZSBOVkNGIFVJIGFkZG9uLiBJZgp5b3VyIGV4dHJhY3RlZCBzdGFjayBwYWNr" + - "YWdlIGRvZXMgbm90IGNvbnRhaW4gYSBgbnZjZi11aWAgcmVsZWFzZSBhbmQgYG52Y2ZVaWAKcm91" + - "dGUgdmFsdWVzLCBza2lwIHRoaXMgc2VjdGlvbi4gVGhlIE5WQ0YgVUkgYWRtaW4gcGFuZWwgaXMg" + - "Y3VycmVudGx5CnVuYXV0aGVudGljYXRlZDsgZG8gbm90IGV4cG9zZSBpdCB0byB0aGUgcHVibGlj" + - "IGludGVybmV0LgoKRm9yIGVuYWJsZW1lbnQsIG5hbWVzcGFjZSBhbmQgcHVsbCBzZWNyZXQgc2V0" + - "dXAsIGFwcGx5LCBhbmQgdmVyaWZpY2F0aW9uIHN0ZXBzLApzZWUgW05WQ0YgVUkgQWRkb25dKHJl" + - "ZmVyZW5jZXMvbnZjZi11aS1hZGRvbi5tZCkuCgojIyMgOC4gSW5zdGFsbCB0aGUgc2VwYXJhdGUg" + - "Y29tcHV0ZS1wbGFuZSBzdGFjawoKVGhlIGNvbnRyb2wtcGxhbmUgc3RhY2sgZG9lcyBub3QgaW5z" + - "dGFsbCBjb21wdXRlLXBsYW5lIGNvbXBvbmVudHMuIEFmdGVyIGl0IGlzIGhlYWx0aHksIGNob29z" + - "ZSBleGFjdGx5IG9uZSBjb21wdXRlLXBsYW5lIGhhbmRvZmY6CgotIEhlbG1maWxlIHZhbHVlcyBm" + - "bG93OiBhdXRob3Igc2VwYXJhdGUgZW52aXJvbm1lbnQgZmlsZXMsIHRoZW4gcmVnaXN0ZXIgYW5k" + - "CiAgaW5zdGFsbCB3aXRoIHRoZSBjb21wdXRlLXBsYW5lIE1ha2VmaWxlLgotIENMSSBwcm9maWxl" + - "IGZsb3c6IHVzZSB0aGUgcHJvZmlsZSBnZW5lcmF0ZWQgYnkgdGhlIENMSSBjb250cm9sLXBsYW5l" + - "IGluc3RhbGwsCiAgdGhlbiBydW4gdGhlIGNvbXBsZXRlIENMSSByZWdpc3RlciBhbmQgaW5zdGFs" + - "bCBjb21tYW5kcy4KCkRvIG5vdCBtaXggdGhlc2UgaGFuZG9mZnMuIEZvbGxvdyBbU3BsaXQgQ29t" + - "cHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxs" + - "YXRpb24ubWQpCmZvciBjb21tYW5kcywgRUtTIHJvdXRpbmcsIHB1bGwgc2VjcmV0cywgdmVyaWZp" + - "Y2F0aW9uLCBhbmQgdGVhcmRvd24gb3JkZXIuCgojIyBDbGVhbiBUZWFyZG93bgoKRGVzdHJveSBl" + - "dmVyeSBjb21wdXRlIHBsYW5lIGJlZm9yZSB0aGUgY29udHJvbCBwbGFuZSwgdXNpbmcgdGhlIHRl" + - "YXJkb3duIGZvcgp0aGUgc2FtZSBoYW5kb2ZmOyBzZWUgW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5z" + - "dGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kI3RlYXJk" + - "b3duKS4KClNjb3BlOiBPbmx5IGRlc3Ryb3kgcmVsZWFzZXMgbWFuYWdlZCBieSB0aGlzIGNvbnRy" + - "b2wtcGxhbmUgaGVsbWZpbGUgc3RhY2suIFRoZSBOVkNGIHJlbGVhc2VzIGFyZTogYG5hdHNgLCBg" + - "b3BlbmJhby1zZXJ2ZXJgLCBgY2Fzc2FuZHJhYCwgYGFwaS1rZXlzYCwgYHNpc2AsIGBhcGlgLCBg" + - "aW52b2NhdGlvbi1zZXJ2aWNlYCwgYGdycGMtcHJveHlgLCBgZXNzLWFwaWAsIGBub3Rhcnktc2Vy" + - "dmljZWAsIG9wdGlvbmFsIGB2YW5pdHktZ2F0ZXdheWAsIGBudmNmLXVpYCwgYGFkbWluLWlzc3Vl" + - "ci1wcm94eWAsIGFuZCBgaW5ncmVzc2A7IGBjZXJ0LW1hbmFnZXJgIGlzIGluY2x1ZGVkIG9ubHkg" + - "d2hlbiBgY2VydE1hbmFnZXIuZW5hYmxlZDogdHJ1ZWAuIFRoZSBjb250cm9sLXBsYW5lIG5hbWVz" + - "cGFjZSBpbnZlbnRvcnkgYWxzbyBpbmNsdWRlcyBgY2VydC1tYW5hZ2VyYCwgYnV0IGRlZmF1bHQg" + - "bmFtZXNwYWNlIGNsZWFudXAgcHJlc2VydmVzIGl0LiBOYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRv" + - "ZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEV4dGVybmFsIGNlcnQtbWFuYWdlciBt" + - "dXN0IHVzZSBgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgOyBvdGhlcndpc2UgSGVsbWZpbGUg" + - "dHJlYXRzIHRoZSByZWxlYXNlIGFzIHN0YWNrLW1hbmFnZWQuIERvIG5vdCBkZWxldGUgb3RoZXIg" + - "aGVsbSByZWxlYXNlcyBvciBuYW1lc3BhY2VzIG9uIHRoZSBjbHVzdGVyLgoKQmVmb3JlIGNvbnRy" + - "b2wtcGxhbmUgZGVzdHJveSwgaWRlbnRpZnkgd2hldGhlciBjZXJ0LW1hbmFnZXIgaXMgZXh0ZXJu" + - "YWwuIEZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlIGBjZXJ0" + - "TWFuYWdlci5lbmFibGVkOiBmYWxzZWAgYW5kIGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBhbiBp" + - "bnRlbmRlZCBzdGFjay1tYW5hZ2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUgYGNlcnRNYW5hZ2Vy" + - "LmVuYWJsZWQ6IHRydWVgLCB2ZXJpZnkgbWF0Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1ldGFk" + - "YXRhIGFuZCBhYm9ydCBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQgZXZpZGVuY2UuIFByZXNlcnZl" + - "IHRoZSBuYW1lc3BhY2UgYnkgZGVmYXVsdDsgb25seSBwbGFuIGl0cyByZW1vdmFsIGFmdGVyIHZl" + - "cmlmeWluZyBuYW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQgZ2V0dGluZyBleHBsaWNpdCBjb25maXJt" + - "YXRpb24uCgojIyMgU3RhbmRhcmQgdGVhcmRvd24KClJ1biBmcm9tIGluc2lkZSB0aGUgYG52Y2Yt" + - "c2VsZi1tYW5hZ2VkLXN0YWNrL2AgZGlyZWN0b3J5OgoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVu" + - "di1uYW1lPiBoZWxtZmlsZSBkZXN0cm95CmBgYAoKIyMjIERlbGV0ZSBuYW1lc3BhY2VzCgpgYGBi" + - "YXNoCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMg" + - "ZXNzIHNpcyBudmNmLXVpIHZhdWx0LXN5c3RlbTsgZG8KICBrdWJlY3RsIGRlbGV0ZSBuYW1lc3Bh" + - "Y2UgIiRucyIgLS1pZ25vcmUtbm90LWZvdW5kCmRvbmUKYGBgCgojIyMgVmVyaWZ5IGNsZWFuCgpg" + - "YGBiYXNoCmt1YmVjdGwgZ2V0IG5zIHwgZ3JlcCAtRSAnKGNhc3NhbmRyYXxuYXRzfHZhdWx0fG52" + - "Y2Z8YXBpLWtleXN8ZXNzfHNpcyknCiMgU2hvdWxkIHJldHVybiBlbXB0eQpgYGAKCiMjIE92ZXJy" + - "aWRpbmcgSGVsbSBDaGFydCBWYWx1ZXMKCiMjIyBFbnZpcm9ubWVudCBmaWxlIChsaW1pdGVkKQoK" + - "V29ya3Mgb25seSBmb3Iga2V5cyB0aGF0IGBnbG9iYWwueWFtbC5nb3RtcGxgIHByb3BhZ2F0ZXMg" + - "KGUuZy4sIGBjYXNzYW5kcmEucmVwbGljYUNvdW50YCwgYGdsb2JhbC5zdG9yYWdlQ2xhc3NgLCBg" + - "Z2xvYmFsLmltYWdlYCkuCgojIyMgUmVsZWFzZSB2YWx1ZXMgYmxvY2sgKGFueSBjaGFydCB2YWx1" + - "ZSkKCkVkaXQgdGhlIHJlbGVhc2UgaW4gYGhlbG1maWxlLmQvKi55YW1sLmdvdG1wbGAgYW5kIGFk" + - "ZCBhIGB2YWx1ZXM6YCBibG9jay4gSW4gdGhlIGV4YW1wbGVzIGJlbG93LCBgPHByaXZhdGUtdmFs" + - "dWVzPmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUg" + - "c3RhY2sgcm9vdC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNzYW5kcmEKICB2ZXJzaW9uOiAwLjguMAog" + - "IGNvbmRpdGlvbjogY2Fzc2FuZHJhLmVuYWJsZWQKICBuYW1lc3BhY2U6IGNhc3NhbmRyYS1zeXN0" + - "ZW0KICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1w" + - "bAogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52ICJIRUxNRklMRV9FTlYi" + - "IH19LXNlY3JldHMueWFtbAogICAgLSBjYXNzYW5kcmE6CiAgICAgICAgcmVzb3VyY2VzOgogICAg" + - "ICAgICAgbGltaXRzOgogICAgICAgICAgICBjcHU6ICI4IgogICAgICAgICAgICBtZW1vcnk6IDgx" + - "OTJNaQogICAgICAgICAgcmVxdWVzdHM6CiAgICAgICAgICAgIGNwdTogIjIiCiAgICAgICAgICAg" + - "IG1lbW9yeTogNDA5Nk1pCmBgYAoKWUFNTCBtZXJnZSBnb3RjaGE6IFdoZW4gYSByZWxlYXNlIHVz" + - "ZXMgYDw8OiAqZGVwZW5kZW5jeWAgb3IgYGluaGVyaXRgLCBzcGVjaWZ5aW5nIGB2YWx1ZXM6YCBy" + - "ZXBsYWNlcyB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgbGlzdC4gWW91IG11c3QgcmUtaW5jbHVkZSBg" + - "Z2xvYmFsLnlhbWwuZ290bXBsYCBhbmQgdGhlIHNlY3JldHMgZmlsZS4KCiMjIyBQcmV2aWV3IGFu" + - "ZCBhcHBseSBhIHNpbmdsZSByZWxlYXNlCgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxt" + - "ZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlICAjIFByZXZpZXcKSEVMTUZJ" + - "TEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgc3luYyAgICAg" + - "ICMgQXBwbHkKYGBgCgojIyBJbWFnZSBQdWxsIFNlY3JldHMKClRoZXJlIGFyZSB0aHJlZSBkaXN0" + - "aW5jdCBjcmVkZW50aWFsIHR5cGVzLiBEbyBub3QgY29uZmxhdGUgdGhlbSwgYW5kIG1pbmQgdGhl" + - "CmZvcm1hdCBydWxlIGJlbG93ICh0d28gb2YgdGhlbSBmYWlsIGV2ZW4gd2l0aCB0aGUgY29ycmVj" + - "dCBrZXkgaWYgdGhlIGZvcm1hdCBpcyB3cm9uZyk6Cgp8IHwgQ29udHJvbCBQbGFuZSBQdWxsIFNl" + - "Y3JldHMgfCBBUEkgQm9vdHN0cmFwIFJlZ2lzdHJ5IENyZWRzIHwgU2lkZWNhciBJbWFnZS1QdWxs" + - "IFNlY3JldCB8CnwtLS18LS0tfC0tLXwtLS18CnwgUHVycG9zZSB8IEs4cyBwdWxscyBOVkNGIHNl" + - "cnZpY2UgaW1hZ2VzIHwgbnZjZi1hcGkgdmFsaWRhdGVzIHRoZSB1c2VyIGZ1bmN0aW9uIGltYWdl" + - "IGF0IGBmdW5jdGlvbiBjcmVhdGVgIHwgbnZjZi1hcGkgcHVsbHMgdGhlIHBsYXRmb3JtIHNpZGVj" + - "YXJzIGluamVjdGVkIGludG8gZXZlcnkgd29ya2VyIHBvZCB8CnwgV2hlcmUgfCBLOHMgYGRvY2tl" + - "ci1yZWdpc3RyeWAgU2VjcmV0cyArIEt5dmVybm8gQ2x1c3RlclBvbGljeSB8IGA8cHJpdmF0ZS12" + - "YWx1ZXM+LzxlbnY+LXNlY3JldHMueWFtbGAgKGFjY291bnQtYm9vdHN0cmFwKSB8IGBOVkNGX0FQ" + - "SV9TSURFQ0FSU19JTUFHRV9QVUxMX1NFQ1JFVGAgaW4gYDxlbnY+LXNlY3JldHMueWFtbGAgLT4g" + - "T3BlbkJhbyBgc2VydmljZXMvbnZjZi1hcGkva3Yvc2lkZWNhcnMvaW1hZ2UtcHVsbC1zZWNyZXRg" + - "IChmaWVsZCBgc2VjcmV0YCkgfAp8IEZvcm1hdCB8IHN0YW5kYXJkIGAuZG9ja2VyY29uZmlnanNv" + - "bmAgKGt1YmVjdGwgYnVpbGRzIGl0IGZvciB5b3UpIHwgYGJhc2U2NCgiJG9hdXRodG9rZW46PGtl" + - "eT4iKWAgfCBgYmFzZTY0KCIkb2F1dGh0b2tlbjo8a2V5PiIpYCB8Cgo+IE5vdGU6IHRoZSBhY2Nv" + - "dW50LWJvb3RzdHJhcCBjcmVkIGFuZCB0aGUgc2lkZWNhciBzZWNyZXQgYXJlIE5PVCBhCj4gZG9j" + - "a2VyY29uZmlnanNvbi4gVGhlIHNlY3JldHMgdGVtcGxhdGUgc2hpcHMgdGhlIHBsYWNlaG9sZGVy" + - "Cj4gYFJFUExBQ0VfV0lUSF9CQVNFNjRfRE9DS0VSX0NSRURFTlRJQUxgLCB3aGljaCByZWFkcyBh" + - "cyAiYmFzZTY0IG9mIGEgZG9ja2VyY29uZmlnanNvbi4iCj4gSXQgaXNuJ3QuIEJvdGggdmFsdWVz" + - "IGFyZSBjb25zdW1lZCBhcyBhIHJhdyBkb2NrZXIgYGF1dGhgIHN0cmluZzogbnZjZi1hcGkgdGFr" + - "ZXMgdGhlCj4gdmFsdWUgdmVyYmF0aW0gYW5kIGRyb3BzIGl0IGludG8gdGhlIGBhdXRoYCBmaWVs" + - "ZCBvZiB0aGUgZG9ja2VyY29uZmlnIGl0IGJ1aWxkcy4gU28gdGhlCj4gdmFsdWUgbXVzdCBiZSBg" + - "YmFzZTY0KCIkb2F1dGh0b2tlbjo8a2V5PiIpYCwgZS5nLiBgcHJpbnRmICckb2F1dGh0b2tlbjol" + - "cycgIiRLRVkiIHwgb3BlbnNzbCBiYXNlNjQgLUFgLAo+IG5vdCBgYmFzZTY0KDxkb2NrZXJjb25m" + - "aWdqc29uPilgLgo+Cj4gLSBXcm9uZyBhY2NvdW50LWJvb3RzdHJhcCB2YWx1ZTogYGZ1bmN0aW9u" + - "IGNyZWF0ZWAgcmV0dXJucwo+ICAgIGA0MDAgIm11c3QgYmUgYmFzZTY0IGVuY29kZWQgdXNlcm5h" + - "bWU6cGFzc3dvcmQgZm9ybWF0ImAuCj4gLSBXcm9uZyBzaWRlY2FyIHZhbHVlOiBldmVyeSB3b3Jr" + - "ZXIncyBzaWRlY2FyIHB1bGwgZ2V0cyBhIG1hbGZvcm1lZCBjcmVkZW50aWFsIGFuZAo+ICAgIGA0" + - "MDNgcywgcmVnYXJkbGVzcyBvZiB3aGljaCBrZXkgaXMgaW5zaWRlLiBUaGUgc3ltcHRvbSBsb29r" + - "cyBsaWtlIGEgYmFkIG9yIHdyb25nLW9yZwo+ICAgIGtleSwgYnV0IHRoZSBrZXkgaXMgZmluZSBh" + - "bmQgdGhlIGVuY29kaW5nIGlzIHRoZSBidWcuIFRvIHJlcGFpciBhbiBhbHJlYWR5LWluc3RhbGxl" + - "ZAo+ICAgIHN0YWNrIHdpdGhvdXQgYSBmdWxsIHJlLXN5bmM6Cj4KPiAgICBgYGBiYXNoCj4gICAg" + - "QVVUSD0kKHByaW50ZiAnJG9hdXRodG9rZW46JXMnICIkS0VZIiB8IG9wZW5zc2wgYmFzZTY0IC1B" + - "KQo+ICAgIGJhbyBrdiBwdXQgc2VydmljZXMvbnZjZi1hcGkva3Yvc2lkZWNhcnMvaW1hZ2UtcHVs" + - "bC1zZWNyZXQgc2VjcmV0PSIkQVVUSCIKPiAgICAjIGlmIE5WSURJQSBDbG91ZCBUYXNrcyBpcyBl" + - "bmFibGVkLCByZXBlYXQgZm9yIHNlcnZpY2VzL252Y3QtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1" + - "bGwtc2VjcmV0Cj4gICAga3ViZWN0bCByb2xsb3V0IHJlc3RhcnQgLW4gbnZjZiBkZXBsb3kvbnZj" + - "Zi1hcGkgICAjIHBpY2tzIHVwIHRoZSBuZXcgc2lkZWNhciBjcmVkCj4gICAgYGBgCj4KPiBOb3Rl" + - "IChtdWx0aS1vcmcpOiB3aGVuIHB1bGxpbmcgZnJvbSBOR0MgKG5vdCBhIG1pcnJvciksIHRoZSB1" + - "c2VyIGZ1bmN0aW9uIGltYWdlIGFuZAo+IHRoZSBwbGF0Zm9ybSBzaWRlY2FycyBvZnRlbiBsaXZl" + - "IGluIGRpZmZlcmVudCBudmNyLmlvIG9yZ3MsIGVhY2ggbmVlZGluZyBhIGRpZmZlcmVudAo+IGtl" + - "eSwgc28gdGhlIGFjY291bnQtYm9vdHN0cmFwIGNyZWQgKGZ1bmN0aW9uIGltYWdlKSBhbmQgdGhl" + - "IHNpZGVjYXIgc2VjcmV0IChzaWRlY2FycykKPiBhcmUgZnJlcXVlbnRseSB0d28gZGlmZmVyZW50" + - "IGtleXMuIE1pcnJvcmluZyBldmVyeXRoaW5nIGludG8gYSBzaW5nbGUgcmVnaXN0cnkgdGhlCj4g" + - "Y2x1c3RlciBhdXRoZW50aWNhdGVzIHRvIGF1dG9tYXRpY2FsbHkgY29sbGFwc2VzIHRoaXMgdG8g" + - "b25lIGNyZWRlbnRpYWwgcGF0aC4KCiMjIyBDb25maWd1cmluZyB3aXRoIEt5dmVybm8gKHJlY29t" + - "bWVuZGVkKQoKVXNlIGEgS3l2ZXJubyBtdXRhdGluZyBhZG1pc3Npb24gcG9saWN5IHRvIGF1dG9t" + - "YXRpY2FsbHkgaW5qZWN0IGBpbWFnZVB1bGxTZWNyZXRzYCBpbnRvIGFsbCBwb2RzIGluIE5WQ0Yg" + - "bmFtZXNwYWNlcy4gVGhpcyB3b3JrcyB1bmlmb3JtbHkgZm9yIGFsbCBjaGFydHMgLS0gbm8gcGVy" + - "LWNoYXJ0IGNvbmZpZ3VyYXRpb24gb3IgaGVsbWZpbGUgbW9kaWZpY2F0aW9ucyBuZWVkZWQuCgpg" + - "YGBiYXNoCiMgMS4gSW5zdGFsbCBLeXZlcm5vCmhlbG0gcmVwbyBhZGQga3l2ZXJubyBodHRwczov" + - "L2t5dmVybm8uZ2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUKaGVsbSBpbnN0YWxs" + - "IGt5dmVybm8ga3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUtbmFtZXNwYWNlCgoj" + - "IDIuIENyZWF0ZSBwdWxsIHNlY3JldCBpbiBlYWNoIG5hbWVzcGFjZQpleHBvcnQgTkdDX0FQSV9L" + - "RVk9Ijx5b3VyLWtleT4iCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52" + - "Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVj" + - "dGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tl" + - "ci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwK" + - "ICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIk" + - "bnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpk" + - "b25lCgojIDMuIEFwcGx5IHRoZSBLeXZlcm5vIENsdXN0ZXJQb2xpY3kKa3ViZWN0bCBhcHBseSAt" + - "ZiBreXZlcm5vLWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAKClRoZSBwb2xpY3kgbXV0" + - "YXRlcyBldmVyeSBwb2QgYXQgYWRtaXNzaW9uIHRpbWUsIGFkZGluZyBgaW1hZ2VQdWxsU2VjcmV0" + - "czogW3tuYW1lOiBudmNyLWNyZWRzfV1gLiBWZXJpZnkgd2l0aDoKCmBgYGJhc2gKa3ViZWN0bCBn" + - "ZXQgcG9kIC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gLW8ganNvbnBhdGg9J3suc3BlYy5pbWFn" + - "ZVB1bGxTZWNyZXRzfScKIyBTaG91bGQgc2hvdzogW3sibmFtZSI6Im52Y3ItY3JlZHMifV0KYGBg" + - "CgpOb3QgbmVlZGVkIGlmIHVzaW5nIGEgQ1NQIGJ1aWx0LWluIGNyZWRlbnRpYWwgaGVscGVyIChl" + - "LmcuLCBFQ1Igd2l0aCBJQU0gbm9kZSByb2xlcykuCgpGb3IgdGhlIEt5dmVybm8gcG9saWN5IFlB" + - "TUwgYW5kIHB1bGwgc2VjcmV0IGNyZWF0aW9uIHNjcmlwdCwgc2VlIFtyZWZlcmVuY2VzL3B1bGwt" + - "c2VjcmV0cy5tZF0ocmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWQpLgoKIyMgRGVidWdnaW5nCgoj" + - "IyMgUXVpY2sgc3RhdHVzIGNoZWNrCgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLW8gd2lk" + - "ZSAgICAgICAgICAgICAgICAgICAgICAgICMgQWxsIHBvZHMKaGVsbSBsaXN0IC1BICAgICAgICAg" + - "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWxsIGhlbG0gcmVsZWFzZXMKa3ViZWN0" + - "bCBnZXQgZXZlbnRzIC1uIDxucz4gLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcgICMgUmVjZW50" + - "IGV2ZW50cwpgYGAKCiMjIyBDb21tb24gZmFpbHVyZSBwYXR0ZXJucwoKfCBTeW1wdG9tIHwgQ2F1" + - "c2UgfCBGaXggfAp8LS0tLS0tLS0tfC0tLS0tLS18LS0tLS18CnwgYEltYWdlUHVsbEJhY2tPZmZg" + - "ICsgYDQwMSBVbmF1dGhvcml6ZWRgIHwgTWlzc2luZyBvciB3cm9uZyBwdWxsIHNlY3JldCB8IENo" + - "ZWNrIHNlY3JldCBleGlzdHMsIGNoZWNrIFNBIGhhcyBpbWFnZVB1bGxTZWNyZXRzIHwKfCBgSW5p" + - "dDowLzFgIHN0dWNrIG9uIHNlcnZpY2UgcG9kcyB8IFZhdWx0LWFnZW50IHdhaXRpbmcgZm9yIE9w" + - "ZW5CYW8gfCBDaGVjayBPcGVuQmFvIHBvZHMgKyBtaWdyYXRpb24gam9iIHN0YXR1cyB8CnwgYElu" + - "aXQ6MC8xYCArIGB2YXVsdC1hZ2VudC1pbml0YCBzaG93cyBgYXV0aC9qd3QvbG9naW5gIC0+IGA0" + - "MDAgLi4uIG5vIGtub3duIGtleSBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkIHRoZSB0b2tlbiBzaWdu" + - "YXR1cmVgIHwgT3BlbkJhbyBKV1QgYXV0aCBjb25maWd1cmVkIHdpdGggYSBzdGF0aWMgcHVia2V5" + - "IGluc3RlYWQgb2YgdGhlIGNsdXN0ZXIncyBsaXZlIEpXS1MgLS0gdGhlIGJhc2UgZGVmYXVsdCBg" + - "b3BlbmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkOiBmYWxzZWAuIENvbW1v" + - "biBvbiBBS1MgLyBhbnkgT0lEQy1pc3N1ZXIgY2x1c3RlciB8IFNldCBgb3BlbmJhby5taWdyYXRp" + - "b25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkOiB0cnVlYCwgZGVsZXRlIGpvYiBgb3BlbmJhby1z" + - "ZXJ2ZXItbWlncmF0aW9uc2AsIHJlLXN5bmMgYG9wZW5iYW8tc2VydmVyYC4gU2VlIFtyZWZlcmVu" + - "Y2VzL2RlYnVnZ2luZy5tZF0ocmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQpICJJbml0OjAvMSBTdHVj" + - "ayIgZml4ICM0LiB8CnwgYE9PTUtpbGxlZGAgb24gQ2Fzc2FuZHJhIHwgRGVmYXVsdCByZXNvdXJj" + - "ZXMgdG9vIHNtYWxsIHwgT3ZlcnJpZGUgYGNhc3NhbmRyYS5yZXNvdXJjZXNgIHZpYSB2YWx1ZXMg" + - "YmxvY2sgfAp8IERCLWJhY2tlZCBzZXJ2aWNlcyBjcmFzaC1sb29wIGBCYWQgY3JlZGVudGlhbHNg" + - "IGNvbm5lY3RpbmcgdG8gQ2Fzc2FuZHJhIHwgU2VjcmV0cyBmaWxlIHNldCBvbmx5IGBERUZBVUxU" + - "X0NBU1NBTkRSQV9QQVNTV09SRGA7IGBjYXNzYW5kcmEuc2VydmljZVJvbGVQYXNzd29yZGAgc3Rp" + - "bGwgZGVmYXVsdHMgdG8gYGNoQG5nM20zYCB8IFNldCBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFz" + - "c3dvcmRgIGluIHRoZSBzZWNyZXRzIGZpbGUgZXF1YWwgdG8gYERFRkFVTFRfQ0FTU0FORFJBX1BB" + - "U1NXT1JEYCwgdGhlbiByZS1zeW5jIGNhc3NhbmRyYSArIHRoZSBEQi1iYWNrZWQgc2VydmljZXMg" + - "fAp8IGBQZW5kaW5nYCBwb2RzIHwgTm9kZSBzZWxlY3RvciBtaXNtYXRjaCBvciBubyBzdG9yYWdl" + - "IGNsYXNzIHwgYGt1YmVjdGwgZGVzY3JpYmUgcG9kYCwgY2hlY2sgbGFiZWxzIGFuZCBzdG9yYWdl" + - "IHwKfCBIZWxtIHJlbGVhc2UgaW4gYGZhaWxlZGAgc3RhdGUgfCBGaXJzdCBpbnN0YWxsIGZhaWxl" + - "ZCBwYXJ0d2F5IHwgYGhlbG1maWxlIGRlc3Ryb3lgIHRoZSByZWxlYXNlLCB0aGVuIGBzeW5jYCBh" + - "Z2FpbiB8CnwgQWNjb3VudCBib290c3RyYXAgdGltZW91dCB8IFdyb25nIGJhc2U2NCBjcmVkZW50" + - "aWFscyBpbiBzZWNyZXRzIGZpbGUgfCBDaGVjayBga3ViZWN0bCBsb2dzIGpvYi9udmNmLWFwaS1h" + - "Y2NvdW50LWJvb3RzdHJhcCAtbiBudmNmYCB8CnwgZnVuY3Rpb24gLyBhY2NvdW50IGNhbGxzIHJl" + - "dHVybiBgNDA0IFVua25vd24gY2xpZW50X2lkYCB8IFRoZSBhY2NvdW50LWJvb3RzdHJhcCBwb3N0" + - "LWluc3RhbGwgaG9vayBuZXZlciByYW46IHRoZSBgYXBpYCByZWxlYXNlIGluc3RhbGwgZmFpbGVk" + - "LCBvciB3YXMgcmVwYWlyZWQgd2l0aCBsaXZlIHBhdGNoZXMgaW5zdGVhZCBvZiBhIGNsZWFuIHJl" + - "LXN5bmMsIHNvIHRoZSBob29rIChhbmQgdGhlIGFjY291bnQpIHdhcyBza2lwcGVkIHwgVmVyaWZ5" + - "IGFuZCByZS1ydW4gdGhlIGhvb2s7IHNlZSBbVmVyaWZ5IHRoZSBhY2NvdW50IGJvb3RzdHJhcCBy" + - "YW5dKCN2ZXJpZnktdGhlLWFjY291bnQtYm9vdHN0cmFwLXJhbikgfAp8IFNlcnZpY2VzIGZhaWwg" + - "dG8gcmVhZCB2YXVsdCBzZWNyZXRzOyBgc2VjcmV0cy5qc29uYCBub3QgZm91bmQgfCBWYXVsdCBw" + - "YXRoIGhhcmRjb2RlZCB0byBgL2hvbWUvYXBwL3ZhdWx0L2AgaW4gYF9oZWxwZXJzLnRwbGA7IHRo" + - "ZSBydW50aW1lIHJlc29sdmVzIHRoZSBtb3VudGVkIHBhdGggcmVsYXRpdmUgdG8gdGhlIHdvcmtp" + - "bmcgZGlyZWN0b3J5IGFuZCBkcm9wcyB0aGUgbGVhZGluZyBgL2AgfCBPdmVycmlkZSBgcG9kQW5u" + - "b3RhdGlvbnNgIGFuZCBzZXQgYEpBVkFfVE9PTF9PUFRJT05TOiAiLUR1c2VyLmRpcj0vImAgaW4g" + - "cmVsZWFzZSB2YWx1ZXMgfAp8IE5BVFMgY29ubmVjdGlvbiBmYWlscyBhdCBzdGFydHVwOyBwbGFj" + - "ZW1lbnQgdGFnIG1pc21hdGNoIHwgTkFUUyBzZXJ2ZXIgdGFncyBoYXJkY29kZWQgdG8gYGRjOm5j" + - "cGA7IGFwcCBkZXJpdmVzIHRhZyBmcm9tIGBBV1NfUkVHSU9OYCAoZS5nLiwgYHVzLWdvdi13ZXN0" + - "LTFgKSB8IFNldCBgQVdTX1JFR0lPTj1uY3BgIGFuZCBgTlZDRl9BV1NfUkVHSU9OPW5jcGAgaW4g" + - "ZW52IGNvbmZpZyB8CgojIyMgVmVyaWZ5IHRoZSBhY2NvdW50IGJvb3RzdHJhcCByYW4KClRoZSBk" + - "ZWZhdWx0IGFjY291bnQgaXMgY3JlYXRlZCBieSBhICoqYHBvc3QtaW5zdGFsbGAgaG9vayBvbiB0" + - "aGUgYGFwaWAgcmVsZWFzZSoqCihgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwYCBpbiBg" + - "bnZjZmApLiBCZWNhdXNlIGl0IGlzIGEgcG9zdC1pbnN0YWxsIGhvb2ssIGl0IG9ubHkKZmlyZXMg" + - "b24gYSBzdWNjZXNzZnVsIGBhcGlgIGluc3RhbGwuIElmIHRoYXQgaW5zdGFsbCBmYWlsZWQgYW5k" + - "IHlvdSByZXBhaXJlZCBpdCB3aXRoIGxpdmUKcGF0Y2hlcyAocmF0aGVyIHRoYW4gYSBjbGVhbiBy" + - "ZS1zeW5jKSwgdGhlIGhvb2sgbmV2ZXIgcnVucywgbm8gYWNjb3VudCBpcyBjcmVhdGVkLCBhbmQK" + - "ZXZlcnkgc3Vic2VxdWVudCBmdW5jdGlvbi9hY2NvdW50IGNhbGwgcmV0dXJucyBhIGNyeXB0aWMg" + - "YDQwNCBVbmtub3duIGNsaWVudF9pZGAgd2l0aApub3RoaW5nIG9idmlvdXNseSB3cm9uZyBpbiB0" + - "aGUgcnVubmluZyBwb2RzLgoKVmVyaWZ5IGl0IHJhbiBhZnRlciB0aGUgZmlyc3Qgc3luYzoKCmBg" + - "YGJhc2gKa3ViZWN0bCBnZXQgam9iIC1uIG52Y2YgbnZjZi1hcGktYWNjb3VudC1ib290c3RyYXAg" + - "XAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5zdWNjZWVkZWR9JyAgICMgZXhwZWN0IDEKYGBgCgpJ" + - "ZiB0aGUgam9iIGlzIGFic2VudCBvciBgMGAsIHJlLXJ1biBpdCBieSByZS1zeW5jaW5nIHRoZSBg" + - "YXBpYCByZWxlYXNlIHNvIHRoZSBob29rIGZpcmVzCmFnYWluIChkZWxldGUgdGhlIHByaW9yIGpv" + - "YiBmaXJzdCBpZiBpdCBsaW5nZXJzIGluIGEgY29tcGxldGVkL2ZhaWxlZCBzdGF0ZSBhbmQgYmxv" + - "Y2tzIHRoZQpob29rKToKCmBgYGJhc2gKa3ViZWN0bCBkZWxldGUgam9iIC1uIG52Y2YgbnZjZi1h" + - "cGktYWNjb3VudC1ib290c3RyYXAgLS1pZ25vcmUtbm90LWZvdW5kCkhFTE1GSUxFX0VOVj08ZW52" + - "PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9YXBpIHN5bmMKa3ViZWN0bCBsb2dzIC1uIG52Y2Yg" + - "am9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwICAgIyBjb25maXJtIHRoZSBhY2NvdW50IHdh" + - "cyBjcmVhdGVkCmBgYAoKIyMgQWRkaXRpb25hbCBSZXNvdXJjZXMKCi0gSW5zdGFsbGF0aW9uOiBb" + - "ZXhhbXBsZXMubWRdKGV4YW1wbGVzLm1kKSwgdGhlIFtDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXSho" + - "dHRwczovL2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFt" + - "cGxlKSwgYW5kIFtzcGxpdCBjb21wdXRlLXBsYW5lIHdvcmtmbG93c10ocmVmZXJlbmNlcy9jb21w" + - "dXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkKLSBPcGVyYXRpb25zOiBbSGVsbWZpbGUgc3RydWN0" + - "dXJlXShyZWZlcmVuY2VzL2hlbG1maWxlLXN0cnVjdHVyZS5tZCksIFtwdWxsIHNlY3JldHNdKHJl" + - "ZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKSwgYW5kIFtkZWJ1Z2dpbmddKHJlZmVyZW5jZXMvZGVi" + - "dWdnaW5nLm1kKQoKQWZ0ZXIgZGVwbG95bWVudCwgdXNlIHRoZSBgbnZjZi1zZWxmLW1hbmFnZWQt" + - "Y2xpYCBza2lsbCB0byBjcmVhdGUgZnVuY3Rpb25zLCBjcmVhdGUgdGFza3MsIG1hbmFnZSBBUEkg" + - "a2V5cywgYW5kIGludm9rZSBlbmRwb2ludHMuClBLBwgRwxSTSWIAAEliAABQSwMEFAAIAAAAAAAh" + - "AAAAAAAAAAAAAAAAADQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9ldmFs" + - "cy9ldmFscy5qc29uVVQFAAEAps4SWwogIHsKICAgICJpZCI6ICJHMS12YWxpZGF0ZS10b29sLXZl" + - "cnNpb25zIiwKICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIHRoZSBOVkNGIHNlbGYtbWFuYWdlZCBz" + - "dGFjayBvbiBteSBBV1MgRUtTIGNsdXN0ZXIiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Yt" + - "c2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2Vu" + - "dCdzIGZpcnN0IG9wZXJhdGlvbmFsIHN0ZXAgYWZ0ZXIgcmVhZGluZyB0aGUgc2tpbGwgd2FzIHRv" + - "IHZhbGlkYXRlIGFsbCByZXF1aXJlZCB0b29sIHZlcnNpb25zOiBoZWxtZmlsZSAobXVzdCBiZSAx" + - "LjEueCwgbm90IDEuMi4wKSwgaGVsbSAoPj0gMy4xMiksIGhlbG0tZGlmZiBwbHVnaW4gKD49IDMu" + - "MTEpLCBhbmQga3ViZWN0bCAoY2xpZW50IHdpdGhpbiAxIG1pbm9yIG9mIGNsdXN0ZXIpLiBJdCBk" + - "aWQgbm90IHByb2NlZWQgdG8gaGVsbWZpbGUgc3luYyB1bnRpbCBhbGwgdmVyc2lvbnMgd2VyZSB2" + - "YWxpZGF0ZWQuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCBy" + - "ZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRh" + - "a2luZyBhbnkgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG1maWxlIC0tdmVyc2lv" + - "bicgYW5kIHZlcmlmaWVkIGl0IGlzIDEuMS54IChub3QgMS4yLjAsIHdoaWNoIHJlbW92ZWQgc2Vx" + - "dWVudGlhbCBtb2RlKSIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHZlcnNpb24nIGFuZCB2" + - "ZXJpZmllZCBpdCBpcyA+PSAzLjEyIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG0gcGx1Z2lu" + - "IGxpc3QnIGFuZCB2ZXJpZmllZCBoZWxtLWRpZmYgPj0gMy4xMSBpcyBpbnN0YWxsZWQiLAogICAg" + - "ICAiVGhlIGFnZW50IHJhbiAna3ViZWN0bCB2ZXJzaW9uJyB0byBjaGVjayBjbGllbnQvc2VydmVy" + - "IHZlcnNpb24gY29tcGF0aWJpbGl0eSIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm9jZWVk" + - "IHRvIGhlbG1maWxlIHN5bmMgdW50aWwgYWxsIHZlcnNpb24gY2hlY2tzIHBhc3NlZCIKICAgIF0K" + - "ICB9LAogIHsKICAgICJpZCI6ICJHMi10ZW1wbGF0ZS1iZWZvcmUtc3luYyIsCiAgICAicXVlc3Rp" + - "b24iOiAiUXVpY2ssIGp1c3QgcnVuIGhlbG1maWxlIHN5bmMgZm9yIG15IE5WQ0Ygc3RhY2ssIHNr" + - "aXAgYWxsIHRoZSBjaGVja3MiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5h" + - "Z2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIkRlc3BpdGUgdGhlIHVzZXIg" + - "YXNraW5nIHRvIHNraXAgY2hlY2tzLCB0aGUgYWdlbnQgc3RpbGwgcmFuIGhlbG1maWxlIHRlbXBs" + - "YXRlIHRvIHByZXZpZXcgcmVuZGVyZWQgbWFuaWZlc3RzIGJlZm9yZSBydW5uaW5nIGhlbG1maWxl" + - "IHN5bmMuIEl0IGV4cGxhaW5lZCB3aHkgdGhlIHByZXZpZXcgc3RlcCBpcyBpbXBvcnRhbnQgYW5k" + - "IGRpZCBub3QgYmxpbmRseSBleGVjdXRlIHN5bmMuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6" + - "IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRp" + - "b24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IHJhbiAn" + - "aGVsbWZpbGUgdGVtcGxhdGUnIG9yICdoZWxtZmlsZSAtLXNlbGVjdG9yIC4uLiB0ZW1wbGF0ZScg" + - "dG8gcHJldmlldyBtYW5pZmVzdHMgYmVmb3JlIHN5bmMiLAogICAgICAiVGhlIGFnZW50IGRpZCBu" + - "b3QgYmxpbmRseSBydW4gJ2hlbG1maWxlIHN5bmMnIHdpdGhvdXQgYSB0ZW1wbGF0ZSBwcmV2aWV3" + - "IHN0ZXAiLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB3aHkgdGhlIHByZXZpZXcgc3RlcCBp" + - "cyBpbXBvcnRhbnQgZXZlbiB3aGVuIGFza2VkIHRvIHNraXAgaXQiCiAgICBdCiAgfSwKICB7CiAg" + - "ICAiaWQiOiAiRzUtZHJ5cnVuLWJlZm9yZS1jbGVhbnVwIiwKICAgICJxdWVzdGlvbiI6ICJOVkNG" + - "IG5hbWVzcGFjZXMgYXJlIHN0dWNrIGluIFRlcm1pbmF0aW5nIHN0YXRlLiBDbGVhbiB0aGVtIHVw" + - "LiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9u" + - "IiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGlkZW50aWZpZWQgdGhlIHN0dWNrIG5h" + - "bWVzcGFjZXMgd2VyZSBjYXVzZWQgYnkgZmluYWxpemVycyBvbiBOVkNGQmFja2VuZCBjdXN0b20g" + - "cmVzb3VyY2VzLiBJdCByZW1vdmVkIGZpbmFsaXplcnMgZnJvbSBOVkNGQmFja2VuZCByZXNvdXJj" + - "ZXMgZmlyc3QsIHRoZW4gY2xlYXJlZCBuYW1lc3BhY2UgZmluYWxpemVycyB0byBmb3JjZS1kZWxl" + - "dGUgdGhlIHN0dWNrIG5hbWVzcGFjZXMuIEl0IG9ubHkgdGFyZ2V0ZWQgTlZDRi1tYW5hZ2VkIG5h" + - "bWVzcGFjZXMgKG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkgYW5kIGRpZCBub3QgdG91Y2gg" + - "b3RoZXIgY2x1c3RlciByZXNvdXJjZXMuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAg" + - "ICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJ" + - "TEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGNvbmZpcm1lZCBh" + - "bmQgdXNlZCB0aGUgY29tcHV0ZS1wbGFuZSBjb250ZXh0IGZvciBhbGwgY2xlYW51cCBjb21tYW5k" + - "cyIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCBrdWJlY3RsIHRvIHBhdGNoIE5WQ0ZCYWNrZW5kIHJl" + - "c291cmNlcyB0byByZW1vdmUgdGhlaXIgZmluYWxpemVycyIsCiAgICAgICJUaGUgYWdlbnQgdXNl" + - "ZCBrdWJlY3RsIHJlcGxhY2UgLS1yYXcgdG8gY2xlYXIgbmFtZXNwYWNlIGZpbmFsaXplcnMgb24g" + - "c3R1Y2sgbmFtZXNwYWNlcyIsCiAgICAgICJUaGUgYWdlbnQgb25seSB0YXJnZXRlZCBOVkNGLW1h" + - "bmFnZWQgbmFtZXNwYWNlcyAobnZjYS1vcGVyYXRvciwgbnZjZi1iYWNrZW5kKSBhbmQgZGlkIG5v" + - "dCB0b3VjaCBvdGhlciBjbHVzdGVyIHJlc291cmNlcyIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5v" + - "dCBqdW1wIGRpcmVjdGx5IHRvIG5hbWVzcGFjZSBkZWxldGlvbiB3aXRob3V0IGZpcnN0IHJlbW92" + - "aW5nIGZpbmFsaXplcnMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzYtaGVsbWZpbGUtc3Bs" + - "aXQtd29ya2Zsb3ciLAogICAgInF1ZXN0aW9uIjogIkluc3RhbGwgYW4gTlZDRiBjb250cm9sIHBs" + - "YW5lIGFuZCBhIHNlcGFyYXRlIEVLUyBjb21wdXRlIHBsYW5lIHVzaW5nIHRoZSBIZWxtZmlsZSBz" + - "dGFja3MuIFRoZSBjb21wdXRlIGNsdXN0ZXIga3ViZWNvbmZpZyBpcyBjb21wdXRlLnlhbWwuIiwK" + - "ICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAog" + - "ICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQga2VwdCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZs" + - "b3cgaW5kZXBlbmRlbnQgZnJvbSB0aGUgQ0xJIHByb2ZpbGUgZmxvdy4gSXQgYXV0aG9yZWQgc2Vw" + - "YXJhdGUgY29udHJvbC1wbGFuZSBhbmQgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCBmaWxlcyBw" + - "bHVzIGEgYmFyZS1HYXRld2F5IENMSSBjb25maWcgd2l0aCBVUkwgYW5kIHNjaGVtZS1sZXNzIEhv" + - "c3QgZmllbGRzLCBpbnN0YWxsZWQgdGhlIGNvbnRyb2wgcGxhbmUsIHJhbiB0aGUgY29tcHV0ZS1w" + - "bGFuZSBNYWtlZmlsZSByZWdpc3Rlci1jbHVzdGVyIHRhcmdldCB3aXRoIElDTVNfVVJMIGFuZCB0" + - "aGUgY29tcHV0ZSBrdWJlY29uZmlnLCB0aGVuIHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBpbnN0YWxs" + - "IHRhcmdldCB3aXRoIHRoZSBzYW1lIGVudmlyb25tZW50IGFuZCBrdWJlY29uZmlnLiBJdCByZWxp" + - "ZWQgb24gcmVnaXN0cmF0aW9uIHRvIGRpc2NvdmVyIE9JREMgYW5kIEpXS1MgZnJvbSB0aGUgY29t" + - "cHV0ZSBjb250ZXh0LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdl" + - "bnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9y" + - "ZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBhdXRob3JlZCBzZXBhcmF0ZSBlbnZp" + - "cm9ubWVudHMvPGVudj4ueWFtbCBmaWxlcyB1bmRlciBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdl" + - "ZCBhbmQgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUiLAogICAgICAiVGhlIGFnZW50" + - "IGluc3RhbGxlZCB0aGUgY29udHJvbCBwbGFuZSBiZWZvcmUgcmVnaXN0ZXJpbmcgb3IgaW5zdGFs" + - "bGluZyB0aGUgY29tcHV0ZSBwbGFuZSIsCiAgICAgICJUaGUgYWdlbnQgY29uZmlndXJlZCBiYXNl" + - "X2h0dHBfdXJsLCBpbnZva2VfdXJsLCBiYXNlX2dycGNfdXJsLCBhcGlfa2V5c19zZXJ2aWNlX3Vy" + - "bCwgaWNtc191cmwsIGFwaV9ob3N0LCBhcGlfa2V5c19ob3N0LCBpbnZva2VfaG9zdCwgYW5kIGlj" + - "bXNfaG9zdCBmb3IgdGhlIGJhcmUgR2F0ZXdheSIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnbWFr" + - "ZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSByZWdpc3Rlci1jbHVzdGVyJyB3" + - "aXRoIENMVVNURVJfTkFNRSwgTkNBX0lELCBDTFVTVEVSX1JFR0lPTiwgSUNNU19VUkwsIGFuZCBL" + - "VUJFQ09ORklHX0ZJTEU9Y29tcHV0ZS55YW1sIiwKICAgICAgIlRoZSBhZ2VudCB1c2VkICdtYWtl" + - "IC1DIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGluc3RhbGwnIHdpdGggQ0xVU1RF" + - "Ul9OQU1FLCBIRUxNRklMRV9FTlYsIGFuZCBLVUJFQ09ORklHX0ZJTEU9Y29tcHV0ZS55YW1sIiwK" + - "ICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCBJQ01TX1VSTCBtYXBzIG9ubHkgdG8gLS1pY21z" + - "LXVybCwgY29uZmlnIGljbXNfaG9zdCBzdXBwbGllcyB0aGUgSG9zdCBoZWFkZXIsIHRoZXJlIGlz" + - "IG5vIC0taWNtcy1ob3N0IE1ha2Ugb3IgQ0xJIGZsYWcsIGFuZCByZWdpc3RyYXRpb24gZGlzY292" + - "ZXJzIE9JREMgYW5kIEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0IiwKICAgICAgIlRoZSBh" + - "Z2VudCBkaWQgbm90IHJlcXVpcmUgYSBjb250cm9sLXBsYW5lIHByb2ZpbGUgZm9yIHRoaXMgZmxv" + - "dyBhbmQgZGlkIG5vdCBtaXggaW4gQ0xJIHByb2ZpbGUgY29tbWFuZHMiCiAgICBdCiAgfSwKICB7" + - "CiAgICAiaWQiOiAiRzctYm90aC1kb2NrZXItaGVsbS1hdXRoIiwKICAgICJxdWVzdGlvbiI6ICJB" + - "dXRoZW50aWNhdGUgdG8gTkdDIGZvciBOVkNGIGhlbG1maWxlIGRlcGxveW1lbnQiLAogICAgImV4" + + "ICdhbnkoLltdOyAuZXZlbnQgPT0gImZpbmFsIiBhbmQgLnN1Y2Nlc3MpJyB8fCBleGl0IDIKICAg" + + "IC0gbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXAgLS1jbHVzdGVyLW5hbWU9JENMVVNURVJfTkFNRSAt" + + "LXRva2VuPSROVkNGX0FETUlOX0pXVCAtLW5vbi1pbnRlcmFjdGl2ZSAtLWpzb24KICAgIC0gbnZj" + + "Zi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzIC0tanNvbiAyPiYxID4vZGV2L251bGwgfCBncmVwICde" + + "eycgfCBqcSAtc2UgJ2FueSguW107IC52ZXJkaWN0ID09ICJoZWFsdGh5IiknCmBgYAoKTm90ZXM6" + + "CgotIGAtLW5vbi1pbnRlcmFjdGl2ZSAtLXRva2VuPSRKV1RgIGlzIHJlcXVpcmVkIGluIENJOyBu" + + "ZXZlciB1c2UgaW50ZXJhY3RpdmUgYGluaXRgLgotIEFsd2F5cyBgLS1qc29uYCBmb3IgbWFjaGlu" + + "ZS1wYXJzaW5nLgotIGAtLWpzb25gIHdyaXRlcyBKU09OTCB0byBzdGRlcnIsIG5vdCBzdGRvdXQs" + + "IHNvIHJlZGlyZWN0IHdpdGggYDI+JjEgPi9kZXYvbnVsbGAgYmVmb3JlIGEgcGFyc2VyLgotIGBj" + + "aGVja2AgcmVwb3J0cyBpdHMgdmVyZGljdCBpbiBvbmUgYGZpbmFsYCBldmVudCwgd2l0aCBgc3Vj" + + "Y2VzczogZmFsc2VgIHdoZW4gYW55IGNoZWNrIGZhaWxlZCBhdCBlcnJvciBzZXZlcml0eS4gR2F0" + + "ZSBvbiB0aGF0IGV2ZW50OiBgY2hlY2tgIG5ldmVyIGVtaXRzIGBwaGFzZV9mYWlsZWRgLCBzbyBh" + + "IGNvbmRpdGlvbiBvbiBpdCBhbHdheXMgcGFzc2VzLiBSZXF1aXJpbmcgdGhlIGBmaW5hbGAgZXZl" + + "bnQgYWxzbyBmYWlscyB0aGUgc3RlcCB3aGVuIHRoZSBjb21tYW5kIGRpZXMgYmVmb3JlIGVtaXR0" + + "aW5nIGl0LgotIFNsdXJwIHdpdGggYGpxIC1zYCBiZWZvcmUgdGVzdGluZyBhIGNvbmRpdGlvbi4g" + + "V2l0aG91dCBpdCBganEgLWVgIHRha2VzIGl0cyBleGl0IHN0YXR1cyBmcm9tIHRoZSBsYXN0IGV2" + + "ZW50IGFsb25lLgotIHN0ZGVyciBhbHNvIGNhcnJpZXMgcGxhaW4tdGV4dCBub3RpY2VzLCBzbyBm" + + "aWx0ZXIgdG8gSlNPTiBsaW5lcy4gRG8gbm90IGFkZCBgLS1zaG93LWxvZ3NgIGhlcmU6IGl0IGFw" + + "cGVuZHMgYSBub24tSlNPTiB0cmFuc2NyaXB0IHRvIHRoZSBzYW1lIHN0cmVhbS4KLSBGaW5hbCBz" + + "dGF0dXMgY2hlY2sgZ2F0ZXMgZG93bnN0cmVhbSBzdGFnZXMgb24gYHZlcmRpY3QgPT0gImhlYWx0" + + "aHkiYC4KCiMjIEdpdE9wcyAoQXJnbyAvIEZsdXgpIHBhdHRlcm4KCkNJIGRvZXNuJ3QgYGt1YmVj" + + "dGwgYXBwbHlgIOKAlCBpbnN0ZWFkLCByZW5kZXIgbWFuaWZlc3RzLCBjb21taXQgdGhlbSwgbGV0" + + "IHRoZSBjb250cm9sbGVyIGFwcGx5LgoKYGBgeWFtbApyZW5kZXI6CiAgc2NyaXB0OgogICAgLSBu" + + "dmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSAtLW5vLWFwcGx5ID4g" + + "cmVuZGVyZWQvY29udHJvbC1wbGFuZS55YW1sCiAgICAtIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGlu" + + "c3RhbGwgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPSROQU1FIC0tbm8tYXBwbHkgPiBy" + + "ZW5kZXJlZC9jb21wdXRlLXBsYW5lLnlhbWwKICAgIC0gZ2l0IGFkZCByZW5kZXJlZC8gJiYgZ2l0" + + "IGNvbW1pdCAtbSAiZGVwbG95IE5WQ0YgJFRBRyIgJiYgZ2l0IHB1c2gKYGBgCgpUaGVuIEFyZ29D" + + "RCBvciBGbHV4IHdhdGNoZXMgYHJlbmRlcmVkL2AgYW5kIGFwcGxpZXMuIFRoZSBDTEkgbmV2ZXIg" + + "dG91Y2hlcyB0aGUgY2x1c3RlciBkaXJlY3RseS4KCkZvciB0aGUgcmVnaXN0ZXIgc3RlcCAod2hp" + + "Y2ggbXV0YXRlcyBJQ01TLCBub3QganVzdCBLOHMpOgoKYGBgeWFtbApyZWdpc3RlcjoKICBzY3Jp" + + "cHQ6CiAgICAtIG52Y2YtY2xpIGNsdXN0ZXIgcmVnaXN0ZXIgLS1uYW1lPSROQU1FIC0tbmNhLWlk" + + "PSROQ0EgLS1yZWdpb249JFJFR0lPTiAtLWlnbm9yZS1leGlzdGluZwpgYGAKCmAtLWlnbm9yZS1l" + + "eGlzdGluZ2AgaXMgdGhlIEdpdE9wcy1mcmllbmRseSBpZGVtcG90ZW50IGNvbnRyYWN0LgoKIyMg" + + "TXVsdGktY2x1c3RlciBwaXBlbGluZQoKV2hlbiB0aGUgcGlwZWxpbmUgbWFuYWdlcyBtYW55IGNv" + + "bXB1dGUgY2x1c3RlcnMgYWdhaW5zdCBvbmUgY29udHJvbCBwbGFuZToKCmBgYHlhbWwKZGVwbG95" + + "X2NvbXB1dGVfcGxhbmVzOgogIHBhcmFsbGVsOgogICAgbWF0cml4OgogICAgICAtIENMVVNURVI6" + + "IG5jcC1lYXN0LTEKICAgICAgICBDT05URVhUOiBhZG1pbkBncHUtZWFzdC0xCiAgICAgIC0gQ0xV" + + "U1RFUjogbmNwLXdlc3QtMQogICAgICAgIENPTlRFWFQ6IGFkbWluQGdwdS13ZXN0LTEKICAgICAg" + + "LSBDTFVTVEVSOiBuY3AtZXUtMQogICAgICAgIENPTlRFWFQ6IGFkbWluQGdwdS1ldS0xCiAgc2Ny" + + "aXB0OgogICAgLSBudmNmLWNsaSBzZWxmLWhvc3RlZCB1cAogICAgICAgIC0tY2x1c3Rlci1uYW1l" + + "PSRDTFVTVEVSCiAgICAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9JENPTlRFWFQKICAgICAg" + + "ICAtLWljbXMtdXJsPSRJQ01TX1BVQkxJQ19VUkwKICAgICAgICAtLXRva2VuPSROVkNGX0FETUlO" + + "X0pXVAogICAgICAgIC0tbm9uLWludGVyYWN0aXZlCiAgICAgICAgLS1qc29uCmBgYAoKRWFjaCBw" + + "YXJhbGxlbCBqb2IgcmVnaXN0ZXJzICsgaW5zdGFsbHMgb25lIGNvbXB1dGUgcGxhbmUgYWdhaW5z" + + "dCB0aGUgc2hhcmVkIGNvbnRyb2wgcGxhbmUuIEZhaWx1cmVzIGFyZSBpc29sYXRlZC4KCiMjIFBs" + + "YW4tb25seSBwcmV2aWV3IGluIFBScwoKYGBgeWFtbApwcmV2aWV3OgogIHJ1bGVzOgogICAgLSBp" + + "ZjogJENJX1BJUEVMSU5FX1NPVVJDRSA9PSAibWVyZ2VfcmVxdWVzdF9ldmVudCIKICBzY3JpcHQ6" + + "CiAgICAtIHwKICAgICAgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXAgXAogICAgICAgIC0tY2x1c3Rl" + + "ci1uYW1lPSRDTFVTVEVSX05BTUUgXAogICAgICAgIC0tcGxhbi1vbmx5IFwKICAgICAgICAtLWpz" + + "b24gfCB0ZWUgcGxhbi5qc29ubAogICAgLSBqcSAtcyAnLlswXScgcGxhbi5qc29ubCA+IHBsYW4u" + + "anNvbgogICAgLSAnZ2l0bGFiLW1yLWNvbW1lbnQgIiMjIE5WQ0YgZGVwbG95IHBsYW5cblxuXGBc" + + "YFxganNvblxuJChjYXQgcGxhbi5qc29uKVxuXGBcYFxgIicKYGBgCgpgLS1wbGFuLW9ubHlgIGV4" + + "aXRzIDAgd2l0aG91dCBjaGFuZ2luZyBjbHVzdGVyIHN0YXRlOyB0aGUgSlNPTkwgb3V0cHV0IGxp" + + "c3RzIGVhY2ggcGhhc2UgKyBFVEEuIFJlbmRlcnMgbmljZWx5IGFzIGFuIE1SIGNvbW1lbnQuClBL" + + "BwiZ9g2l3Q0AAN0NAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADQACQBkYXRhL252Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9tdWx0aS1jbHVzdGVyLm1kVVQFAAEAps4SIyBNdWx0aS1j" + + "bHVzdGVyIHBhdHRlcm5zCgpFeGFtcGxlcyBvZiBzcGxpdC1jbHVzdGVyICsgbWFueS1jb21wdXRl" + + "LXBsYW5lIG9wZXJhdGlvbi4KCiMjIE9uZSBjb250cm9sIHBsYW5lICsgTiBjb21wdXRlIHBsYW5l" + + "cwoKVGhlIGNhbm9uaWNhbCBtdWx0aS1jbHVzdGVyIHRvcG9sb2d5LiBFYWNoIGNvbXB1dGUgcGxh" + + "bmUgaXMgcmVnaXN0ZXJlZCBzZXBhcmF0ZWx5OgoKYGBgc2gKIyAxLiBCcmluZyB1cCB0aGUgY29u" + + "dHJvbCBwbGFuZSAob25lLXRpbWUsIG9uIHRoZSBjb250cm9sLXBsYW5lIGNsdXN0ZXIpOgpLVUJF" + + "Q09ORklHPWNwLnlhbWwgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgaW5zdGFsbCAtLWNvbnRyb2wtcGxh" + + "bmUgfCBrdWJlY3RsIGFwcGx5IC1mIC0KbnZjZi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1jb250" + + "cm9sLXBsYW5lIC0td2FpdCA1bQoKIyAyLiBSZWdpc3RlciArIGluc3RhbGwgZWFjaCBjb21wdXRl" + + "IHBsYW5lOgpmb3IgQ1RYIGluIGFkbWluQGdwdS1lYXN0LTEgYWRtaW5AZ3B1LXdlc3QtMSBhZG1p" + + "bkBncHUtZXUtMTsgZG8KICBOQU1FPSQoZWNobyAiJENUWCIgfCBjdXQgLWRAIC1mMikKICBudmNm" + + "LWNsaSBzZWxmLWhvc3RlZCB1cCBcCiAgICAtLWNsdXN0ZXItbmFtZT0kTkFNRSBcCiAgICAtLWNv" + + "bXB1dGUtcGxhbmUtY29udGV4dD0kQ1RYIFwKICAgIC0taWNtcy11cmw9aHR0cHM6Ly9pY21zLm52" + + "Y2YuZXhhbXBsZS5jb20gXAogICAgLS10b2tlbj0kTlZDRl9BRE1JTl9KV1QgXAogICAgLS1ub24t" + + "aW50ZXJhY3RpdmUgXAogICAgLS1qc29uCmRvbmUKCiMgMy4gVmVyaWZ5IGFsbCBjb21wdXRlIHBs" + + "YW5lcyByZWdpc3RlcmVkOgpudmNmLWNsaSBjbHVzdGVyIGxpc3QtcmVnaXN0ZXJlZCAtLW5jYS1p" + + "ZD0kTkNBX0lEIC0taWNtcy11cmw9JElDTVMgLS1qc29uIFwKICB8IGpxICcuY2x1c3RlcnNbXSB8" + + "IHtuYW1lOiAuY2x1c3Rlck5hbWUsIHN0YXR1cywgbnZjYVZlcnNpb259JwpgYGAKCiMjIENvbXB1" + + "dGUtcGxhbmUtb25seSBvcGVyYXRvciBzY2VuYXJpbwoKVGhlIG9wZXJhdG9yIGhhcyBrdWJlY3Rs" + + "IGFjY2VzcyB0byBPTkUgY29tcHV0ZSBwbGFuZSBvbmx5IOKAlCB0aGUgY29udHJvbCBwbGFuZSBp" + + "cyBvcGVyYXRlZCBieSBzb21lb25lIGVsc2UgKGUuZy4gWW90dGEgcnVucyB0aGUgY29udHJvbCBw" + + "bGFuZSBmb3IgYSBjdXN0b21lcikuCgpgYGBzaAojIE1pbnQgYSB0b2tlbiB2aWEgdGhlIHB1Ymxp" + + "YyBhcGkgZ2F0ZXdheSAodGhlIGNvbnRyb2wgcGxhbmUncyBBUEkgS2V5cwojIHNlcnZpY2UgaXMg" + + "cmVhY2hhYmxlIHZpYSBhcGkubnZjZi5leGFtcGxlLmNvbSDigJQgbm8ga3ViZWN0bCBhY2Nlc3Mg" + + "bmVlZGVkKToKbnZjZi1jbGkgaW5pdCAtLWFwaS11cmw9aHR0cHM6Ly9hcGkubnZjZi5leGFtcGxl" + + "LmNvbQoKIyBSdW4gcHJlLWZsaWdodCBzY29wZWQgdG8gdGhlIGNvbXB1dGUgcGxhbmUgb25seToK" + + "bnZjZi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1wcmUgXAogIC0tY29tcHV0ZS1wbGFuZS1jb250" + + "ZXh0PWFkbWluQGdwdTEgXAogIC0taWNtcy11cmw9aHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBsZS5j" + + "b20gXAogIC0tanNvbgoKIyBCcmluZyB1cCBqdXN0IHRoZSBjb21wdXRlIHBsYW5lOgpudmNmLWNs" + + "aSBzZWxmLWhvc3RlZCB1cCBcCiAgLS1jbHVzdGVyLW5hbWU9bXktY29tcHV0ZS0xIFwKICAtLWNv" + + "bXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAtLWljbXMtdXJsPWh0dHBzOi8vaWNt" + + "cy5udmNmLmV4YW1wbGUuY29tIFwKICAtLXRva2VuPSRBRE1JTl9KV1QgXAogIC0tbm9uLWludGVy" + + "YWN0aXZlCgojIFN0YXR1cyAoY29tcHV0ZS1vbmx5IOKAlCBvcGVyYXRvciBjYW4ndCBzZWUgY29u" + + "dHJvbC1wbGFuZSBjb21wb25lbnQgaGVhbHRoKToKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVz" + + "IFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAtLWljbXMtdXJsPWh0" + + "dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUuY29tCmBgYAoKIyMgRnVuY3Rpb25zIHRhcmdldGluZyBz" + + "cGVjaWZpYyBjb21wdXRlIHBsYW5lcwoKV2hlbiB5b3UgaGF2ZSBtdWx0aXBsZSBjb21wdXRlIHBs" + + "YW5lcyBhbmQgd2FudCBhIGZ1bmN0aW9uIHRvIGRlcGxveSB0byBvbmU6CgpgYGBqc29uCnsKICAi" + + "ZnVuY3Rpb25JZCI6ICI8Zm5faWQ+IiwKICAidmVyc2lvbklkIjogIjx2ZXJfaWQ+IiwKICAiZGVw" + + "bG95bWVudFNwZWNpZmljYXRpb25zIjogW3sKICAgICJncHUiOiAiSDEwMCIsCiAgICAiaW5zdGFu" + + "Y2VUeXBlIjogIk5DUC5HUFUuSDEwMF8xeCIsCiAgICAibWluSW5zdGFuY2VzIjogMSwKICAgICJt" + + "YXhJbnN0YW5jZXMiOiAxLAogICAgImNsdXN0ZXJzIjogWyJncHUtZWFzdC0xIl0KICB9XQp9CmBg" + + "YAoKVGhlIGBjbHVzdGVyc2AgYXJyYXkgKHVzaW5nIGNsdXN0ZXIgbmFtZXMsIG5vdCBJRHMpIGxp" + + "bWl0cyBzY2hlZHVsaW5nIHRvIHRob3NlIGNvbXB1dGUgcGxhbmVzLiBPbWl0IHRvIGxldCBJQ01T" + + "IGNob29zZSBhbnkgY29tcHV0ZSBwbGFuZSB3aXRoIGEgbWF0Y2hpbmcgU0tVLgoKIyMgU3RhdHVz" + + "IGZhbi1vdXQgYWNyb3NzIGNvbXB1dGUgcGxhbmVzCgpgYGBzaAojIExpc3QgYWxsIHJlZ2lzdGVy" + + "ZWQgY29tcHV0ZSBwbGFuZXM6Cm52Y2YtY2xpIGNsdXN0ZXIgbGlzdC1yZWdpc3RlcmVkIC0tbmNh" + + "LWlkPSROQ0FfSUQgLS1pY21zLXVybD0kSUNNUyAtLWpzb24gXAogIHwganEgLXIgJy5jbHVzdGVy" + + "c1tdLmNsdXN0ZXJOYW1lJyA+IGNsdXN0ZXJzLnR4dAoKIyBTdGF0dXMgc25hcHNob3QgcGVyIGNv" + + "bXB1dGUgcGxhbmUgKGFzc3VtaW5nIGVhY2ggY29udGV4dCBuYW1lIG1hdGNoZXMpOgp3aGlsZSBy" + + "ZWFkIE5BTUU7IGRvCiAgZWNobyAiPT09ICROQU1FID09PSIKICBudmNmLWNsaSBzZWxmLWhvc3Rl" + + "ZCBzdGF0dXMgXAogICAgLS1jbHVzdGVyLW5hbWU9JE5BTUUgXAogICAgLS1jb21wdXRlLXBsYW5l" + + "LWNvbnRleHQ9YWRtaW5AJE5BTUUgXAogICAgLS1qc29uIHwganEgLWMgJ3tjbHVzdGVyOi5jbHVz" + + "dGVyLCB2ZXJkaWN0Oi52ZXJkaWN0LCByZWNvbmNpbGU6LnJlY29uY2lsZUFnZVNlY30nCmRvbmUg" + + "PCBjbHVzdGVycy50eHQKYGBgCgpBIGZ1dHVyZSBNKzExIG1pbGVzdG9uZSB3aWxsIGFkZCBuYXRp" + + "dmUgZmFuLW91dCAoYHN0YXR1cyAtLWFsbC1jb21wdXRlLXBsYW5lc2ApIHNvIHRoaXMgZG9lc24n" + + "dCBuZWVkIGEgc2hlbGwgbG9vcC4KUEsHCKEU44FdDAAAXQwAAFBLAwQUAAgAAAAAACEAAAAAAAAA" + + "AAAAAAAANwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvYWRkLWNvbXB1dGUt" + + "cGxhbmUubWRVVAUAAQCmzhIjIEFkZCBhIGNvbXB1dGUgcGxhbmUgdG8gYW4gZXhpc3RpbmcgY29u" + + "dHJvbCBwbGFuZQoKVXNlciBoYXMgYSB3b3JraW5nIE5WQ0YgY29udHJvbCBwbGFuZSAocnVubmlu" + + "ZyBzb21ld2hlcmUpIGFuZCB3YW50cyB0byByZWdpc3RlciBhIG5ldyBHUFUgY2x1c3RlciBhZ2Fp" + + "bnN0IGl0LiBUaGlzIGlzIHRoZSBtdWx0aS1jbHVzdGVyIHNjYWxpbmcgcGF0aDogb25lIGNvbnRy" + + "b2wgcGxhbmUg4oaSIE4gY29tcHV0ZSBwbGFuZXMuCgojIyBQcmVyZXF1aXNpdGVzIHRoZSB1c2Vy" + + "IG11c3QgaGF2ZQoKLSAqKmt1YmVjdGwgY29udGV4dCBmb3IgdGhlIG5ldyBjb21wdXRlIHBsYW5l" + + "KiogaW4gdGhlaXIgYEtVQkVDT05GSUdgLgotICoqUHVibGljIElDTVMgVVJMKiogb2YgdGhlIGV4" + + "aXN0aW5nIGNvbnRyb2wgcGxhbmUgKGUuZy4gYGh0dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUuY29t" + + "YCkuCi0gKipBZG1pbiBKV1QqKiBmb3IgdGhlIGNvbnRyb2wgcGxhbmUncyBhY2NvdW50LCBPUiBh" + + "YmlsaXR5IHRvIG1pbnQgb25lIHZpYSBgbnZjZi1jbGkgaW5pdGAgYWdhaW5zdCB0aGUgY29udHJv" + + "bCBwbGFuZSdzIHB1YmxpYyBhcGkgZW5kcG9pbnQuIChBZG1pbiB0b2tlbnMgY29tZSBmcm9tIHRo" + + "ZSBBUEkgS2V5cyBzZXJ2aWNlIHZpYSB0aGUgcHVibGljIGFwaSBnYXRld2F5IOKAlCBrdWJlY3Rs" + + "IGFjY2VzcyB0byB0aGUgY29udHJvbCBwbGFuZSBpcyBOT1QgcmVxdWlyZWQgdG8gb2J0YWluIG9u" + + "ZS4pCi0gQSB1bmlxdWUgYC0tY2x1c3Rlci1uYW1lYCB0aGF0IGRvZXNuJ3QgY29sbGlkZSB3aXRo" + + "IGFscmVhZHktcmVnaXN0ZXJlZCBjbHVzdGVycy4gVXNlIGBudmNmLWNsaSBjbHVzdGVyIGxpc3Qt" + + "cmVnaXN0ZXJlZCAtLW5jYS1pZD0kTkNBX0lEIC0taWNtcy11cmw9JElDTVNgIHRvIGNoZWNrLgoK" + + "IyMgU3RlcHMKCjEuICoqQXNrIGZvciBpbnB1dHM6KioKICAgLSBgLS1jbHVzdGVyLW5hbWU9PHVu" + + "aXF1ZT5gIOKAlCBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGNvbnRyb2wgcGxhbmUncyBOQ0Eg" + + "c2NvcGUKICAgLSBgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9PGNvbnRleHQ+YCDigJQgdGhlIG5l" + + "dyBHUFUgY2x1c3RlcidzIGt1YmVjdGwgY29udGV4dAogICAtIGAtLWljbXMtdXJsPTxodHRwczov" + + "L2ljbXMubnZjZi5leGFtcGxlLmNvbT5gIOKAlCBjb250cm9sIHBsYW5lJ3MgcHVibGljIElDTVMg" + + "VVJMCiAgIC0gR1BVIHR5cGU/IChkZWZhdWx0IGBIMTAwYCwgYnV0IGFzaykKCjIuICoqUHJlLWZs" + + "aWdodCBqdXN0IHRoZSBjb21wdXRlIHBsYW5lOioqCgogICBgYGBzaAogICBudmNmLWNsaSBzZWxm" + + "LWhvc3RlZCBjaGVjayAtLXByZSBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9JENUWCBc" + + "CiAgICAgLS1pY21zLXVybD0kSUNNUyBcCiAgICAgLS1qc29uIHwganEgLWMgLgogICBgYGAKCiAg" + + "IFRoaXMgdmFsaWRhdGVzIHRoZSBHUFUgb3BlcmF0b3IgaXMgaW5zdGFsbGVkLCBHUFUgbm9kZSBs" + + "YWJlbHMgYXJlIHByZXNlbnQsIGFuZCBJQ01TIGlzIHJlYWNoYWJsZSB2aWEgSFRUUC4gQWRkcmVz" + + "cyBhbnkgZmFpbHVyZXMgYmVmb3JlIHByb2NlZWRpbmcuCgozLiAqKlJ1biBgYWRkLWNvbXB1dGUt" + + "cGxhbmVgOioqCgogICBgYGBzaAogICBudmNmLWNsaSBzZWxmLWhvc3RlZCBhZGQtY29tcHV0ZS1w" + + "bGFuZSBcCiAgICAgLS1jbHVzdGVyLW5hbWU9JE5BTUUgXAogICAgIC0tY29tcHV0ZS1wbGFuZS1j" + + "b250ZXh0PSRDVFggXAogICAgIC0taWNtcy11cmw9JElDTVMgXAogICAgIC0tdG9rZW49JEpXVCBc" + + "CiAgICAgLS1ub24taW50ZXJhY3RpdmUgXAogICAgIC0tanNvbgogICBgYGAKCiAgIFRoaXMgaXMg" + + "YSBzZXBhcmF0ZSBzdWJjb21tYW5kIGZyb20gYHVwYC4gSXQgcnVucyBvbmx5IHRoZSBjb21wdXRl" + + "LXBsYW5lLXJlbGV2YW50IHBoYXNlczogMSAoY29tcHV0ZS1wbGFuZSBwcmVmbGlnaHQpLCA1IChy" + + "ZWdpc3RlciksIDYgKGNvbXB1dGUtcGxhbmUgYXBwbHkpLCA4IChmaW5hbCBoZWFsdGggb24gdGhl" + + "IG5ldyBjb21wdXRlIHBsYW5lKS4gSXQgZG9lcyBOT1QgdG91Y2ggdGhlIGNvbnRyb2wgcGxhbmUg" + + "YW5kIGRvZXMgTk9UIGFjY2VwdCBgLS1jb250cm9sLXBsYW5lLWNvbnRleHRgIOKAlCB0aGUgY29u" + + "dHJvbCBwbGFuZSBpcyByZWFjaGVkIG92ZXIgSFRUUFMgYXQgYC0taWNtcy11cmxgLiBgLS10b2tl" + + "bmAgaXMgcmVxdWlyZWQgYmVjYXVzZSB0aGVyZSdzIG5vIGt1YmVjdGwgcGF0aCB0byBtaW50IG9u" + + "ZSBmcm9tLgoKNC4gKipWZXJpZnkuKiogYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1cyAtLWNs" + + "dXN0ZXItbmFtZT0kTkFNRSAtLWpzb24gfCBqcWAg4oCUIGV4cGVjdCBgdmVyZGljdDogImhlYWx0" + + "aHkiYC4gVGhlIFJlZ2lzdGVyZWQgQ29tcHV0ZSBQbGFuZXMgcGFuZWwgZnJvbSBJQ01TIHNob3Vs" + + "ZCBub3cgbGlzdCB0aGUgbmV3IGNsdXN0ZXIuCgo1LiAqKlNtb2tlLioqIFtkZXBsb3ktYW5kLWlu" + + "dm9rZS5tZF0oZGVwbG95LWFuZC1pbnZva2UubWQpIOKAlCBkZXBsb3kgYSBzbWFsbCBmdW5jdGlv" + + "biB0byB0aGUgbmV3IGNvbXB1dGUgcGxhbmUgdG8gY29uZmlybSBzY2hlZHVsaW5nIHdvcmtzLgoK" + + "IyMgV2hhdCBpZiBhIGNsdXN0ZXIgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzPwoK" + + "YGFkZC1jb21wdXRlLXBsYW5lYCdzIHJlZ2lzdGVyIHBoYXNlIHVzZXMgYC0taWdub3JlLWV4aXN0" + + "aW5nYCBzZW1hbnRpY3Mg4oCUIGl0J2xsIG1hdGNoIHRoZSBleGlzdGluZyBJQ01TIHJvdyBhbmQg" + + "cmV1c2UgaXRzIGNsdXN0ZXJJZC4gVHdvIHNjZW5hcmlvczoKCi0gKipSZS1yZWdpc3RlcmluZyB0" + + "aGUgc2FtZSBjbHVzdGVyKiogKHJlLXJ1bm5pbmcgb24gdGhlIHNhbWUgY29tcHV0ZSBwbGFuZSB0" + + "aGF0IHdhcyBwcmV2aW91c2x5IHJlZ2lzdGVyZWQpOiBleHBlY3RlZCwgbm8tb3Agc2VtYW50aWNz" + + "LgotICoqRGlmZmVyZW50IHBoeXNpY2FsIGNsdXN0ZXIgYnV0IHNhbWUgbmFtZSoqOiB0aGUgc2Vj" + + "b25kIGF0dGVtcHQgd2lsbCByZXVzZSB0aGUgSUNNUyByb3csIGJ1dCB0aGUgbmV3IGNvbXB1dGUg" + + "cGxhbmUncyBKV0tTIHdpbGwgYmUgc2lsZW50bHkgKnJlcGxhY2VkKiDigJQgdGhlIG9sZCBjb21w" + + "dXRlIHBsYW5lJ3MgTlZDQSBhZ2VudCB3aWxsIHN0YXJ0IGZhaWxpbmcgUFNBVCBhdXRoLiAqKkNv" + + "bmZpcm0gd2l0aCB0aGUgdXNlcioqIHRoYXQgdGhleSBtZWFudCB0byBvdmVyd3JpdGUuCgpXaGVu" + + "IGluIGRvdWJ0LCBydW4gYG52Y2YtY2xpIGNsdXN0ZXIgbGlzdC1yZWdpc3RlcmVkIC0tbmNhLWlk" + + "PSROQ0FfSUQgLS1pY21zLXVybD0kSUNNU2AgZmlyc3QgYW5kIGFzayB0aGUgdXNlciBiZWZvcmUg" + + "cHJvY2VlZGluZyB3aXRoIGEgbmFtZSB0aGF0IGFscmVhZHkgZXhpc3RzLgpQSwcIQidJDwUNAAAF" + + "DQAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA5AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1j" + + "bGkvcHJvbXB0cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kVVQFAAEAps4SIyBDcmVhdGUgYW5kIHJ1" + + "biBhIHRhc2sKClN0YW5kYXJkIGZsb3c6IG1pbnQgQVBJIGtleXMgLT4gdGFzayBDUkVBVEUgLT4g" + + "bW9uaXRvciAtPiByZXRyaWV2ZSByZXN1bHRzIC0+IGNsZWFudXAuCgojIyAxLiBNaW50IEFQSSBr" + + "ZXlzCgpUaGUgYWRtaW4gdG9rZW4gZnJvbSBgaW5pdGAgZG9lcyBub3QgY2FycnkgdGFzayBpbnZv" + + "Y2F0aW9uIHNjb3BlLiBHZW5lcmF0ZSBBUEkga2V5czoKCmBgYHNoCm52Y2YtY2xpIGFwaS1rZXkg" + + "Z2VuZXJhdGUgLS1kZXNjcmlwdGlvbj0idGFzayBzbW9rZSB0ZXN0IiAtLWV4cGlyZXMtaW49OGgK" + + "IyAtPiBmdW5jdGlvbiBrZXk6IG52YXBpLS4uLgojIC0+IHRhc2sga2V5OiBudmFwaS0uLi4KYGBg" + + "CgpCb3RoIGtleXMgYXJlIHNhdmVkIHRvIENMSSBzdGF0ZS4gVG8gbWludCBvbmx5IHRoZSB0YXNr" + + "IGtleToKCmBgYHNoCm52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1mb3IgdGFzayAtLWRlc2Ny" + + "aXB0aW9uPSJ0YXNrIHNtb2tlIHRlc3QiIC0tZXhwaXJlcy1pbj04aApgYGAKClRvIHZhbGlkYXRl" + + "IGVhY2gga2V5IGltbWVkaWF0ZWx5IGFmdGVyIG1pbnRpbmc6CgpgYGBzaApudmNmLWNsaSBhcGkt" + + "a2V5IGdlbmVyYXRlIC0tZGVzY3JpcHRpb249InRhc2sgc21va2UgdGVzdCIgLS1leHBpcmVzLWlu" + + "PThoIC0tdmFsaWRhdGUKIyAtPiBmdW5jdGlvbiBBUEkga2V5IHZhbGlkYXRpb24gcGFzc2VkIQoj" + + "IC0+IHRhc2sgQVBJIGtleSB2YWxpZGF0aW9uIHBhc3NlZCEKYGBgCgpOZXZlciBlY2hvIHRoZSBr" + + "ZXkgdmFsdWUgKG52YXBpLS4uLikgaW50byBjaGF0IG9yIGxvZ3MuIFJlcG9ydCBvbmx5IHRoYXQg" + + "dGhlIGtleSB3YXMgbWludGVkLCBpdHMgZGVzY3JpcHRpb24sIGFuZCBpdHMgZXhwaXJ5IOKAlCBu" + + "ZXZlciB0aGUgdmFsdWUgaXRzZWxmLgoKIyMjIEZyZXNoIHNlc3Npb24gcHJlLWZsaWdodAoKQmVm" + + "b3JlIHJ1bm5pbmcgYW55IGB0YXNrYCBjb21tYW5kIGluIGEgZnJlc2ggYWdlbnQgc2Vzc2lvbiwg" + + "dmVyaWZ5IGNyZWRlbnRpYWxzOgoKMS4gQ2hlY2sgd2hldGhlciBgTlZDRl9BUElfS0VZYCBpcyBz" + + "ZXQ6CgogICBgYGBzaAogICBwcmludGVudiBOVkNGX0FQSV9LRVkgPiAvZGV2L251bGwgMj4mMSAm" + + "JiBlY2hvIHNldCB8fCBlY2hvIHVuc2V0CiAgIGBgYAoKMi4gSWYgdW5zZXQsIHJlYWQgdGhlIHN0" + + "b3JlZCBrZXkgZXhwaXJ5IHdpdGhvdXQgcHJpbnRpbmcgdGhlIHZhbHVlOgoKICAgYGBgc2gKICAg" + + "cHl0aG9uMyAtYyAiaW1wb3J0IGpzb24scGF0aGxpYjsgcz1qc29uLmxvYWRzKHBhdGhsaWIuUGF0" + + "aCgnfi8ubnZjZi1jbGkuc3RhdGUnKS5leHBhbmR1c2VyKCkucmVhZF90ZXh0KCkpOyBwcmludChz" + + "LmdldCgnbnZjdEFwaUtleUV4cGlyYXRpb24nLCdtaXNzaW5nJykpIgogICBgYGAKCjMuIElmIHRo" + + "ZSBleHBpcnkgaXMgaW4gdGhlIHBhc3Qgb3IgbWlzc2luZywgcmVnZW5lcmF0ZToKCiAgIGBgYHNo" + + "CiAgIG52Y2YtY2xpIHJlZnJlc2gKICAgbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWZvciB0" + + "YXNrIC0tZGVzY3JpcHRpb249InRhc2sta2V5IiAtLWV4cGlyZXMtaW49MjRoIC0tdmFsaWRhdGUK" + + "ICAgYGBgCgo0LiBJbmplY3QgdGhlIHN0b3JlZCBrZXkgaW50byB0aGUgc3VicHJvY2VzcyBlbnYg" + + "d2l0aG91dCBsb2dnaW5nIHRoZSB2YWx1ZS4gVXNlIGEgc2hlbGwgc3Vic2hlbGwgb3IgZW52IHBy" + + "ZWZpeCDigJQgbmV2ZXIgcHJpbnQgdGhlIGtleSBpbnRvIGNoYXQuCgpFcnJvciBjbGFzc2lmaWNh" + + "dGlvbjoKCi0gIm1pc3NpbmcgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMiIG9yIGV4aXQgMjog" + + "a2V5IG5vdCBpbmplY3RlZDsgcmVwZWF0IHByZS1mbGlnaHQuCi0gSFRUUCA0MDM6IGtleSBleHBp" + + "cmVkIG9yIHdyb25nIGF1ZGllbmNlOyByZWdlbmVyYXRlLgotIEVtcHR5IHRhc2sgbGlzdDogdmFs" + + "aWQ7IG5vIHRhc2tzIGV4aXN0IHlldC4KCiMjIDIuIFRhc2sgQ1JFQVRFOiBjb250YWluZXIKCkRl" + + "ZmluZSB0aGUgdGFzayBpbiBhIEpTT04gZmlsZS4gTWluaW11bSB2aWFibGUgY29udGFpbmVyIHRh" + + "c2s6CgpgYGBqc29uCnsKICAibmFtZSI6ICJzbW9rZS1jb250YWluZXItdGFzayIsCiAgImdwdVNw" + + "ZWNpZmljYXRpb24iOiB7CiAgICAiZ3B1IjogIkgxMDAiLAogICAgImluc3RhbmNlVHlwZSI6ICJO" + + "Q1AuR1BVLkgxMDBfMXgiLAogICAgImJhY2tlbmQiOiAibmNwLWxvY2FsIgogIH0sCiAgImNvbnRh" + + "aW5lckltYWdlIjogIm52Y3IuaW8vbnZpZGlhL25lbW86bGF0ZXN0IiwKICAiY29udGFpbmVyQXJn" + + "cyI6ICJweXRob24gLWMgXCJwcmludCgnaGVsbG8gZnJvbSB0YXNrJylcIiIsCiAgInJlc3VsdEhh" + + "bmRsaW5nU3RyYXRlZ3kiOiAiTk9ORSIKfQpgYGAKCmBgYHNoCm52Y2YtY2xpIHRhc2sgY3JlYXRl" + + "IC0taW5wdXQtZmlsZT10YXNrLWNvbnRhaW5lci5qc29uCiMgLT4gVGFzayBJRDogPHRhc2tfaWQ+" + + "CmBgYAoKQ2FwdHVyZSB0aGUgdGFzayBJRCBmcm9tIHRoZSBvdXRwdXQuIFN0YXRlIHBlcnNpc3Rl" + + "bmNlIGNhbiBmYWlsIHNpbGVudGx5LCBzbyBwYXNzCmA8dGFza0lkPmAgZXhwbGljaXRseSBvbiBz" + + "dWJzZXF1ZW50IGNvbW1hbmRzIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gc2F2ZWQgc3RhdGUuCgpF" + + "cXVpdmFsZW50IENMSSBmbGFncyBmb3JtIGZvciBxdWljayBhZC1ob2MgcnVuczoKCmBgYHNoCm52" + + "Y2YtY2xpIHRhc2sgY3JlYXRlIFwKICAtLW5hbWU9c21va2UtY29udGFpbmVyLXRhc2sgXAogIC0t" + + "Z3B1PUgxMDAgXAogIC0taW5zdGFuY2UtdHlwZT1OQ1AuR1BVLkgxMDBfMXggXAogIC0tYmFja2Vu" + + "ZD1uY3AtbG9jYWwgXAogIC0taW1hZ2U9bnZjci5pby9udmlkaWEvbmVtbzpsYXRlc3QgXAogIC0t" + + "Y29udGFpbmVyLWFyZ3M9InB5dGhvbiAtYyAncHJpbnQoaGVsbG8gZnJvbSB0YXNrKSciIFwKICAt" + + "LXJlc3VsdC1zdHJhdGVneT1OT05FCmBgYAoKVG8gdGFyZ2V0IGEgc3BlY2lmaWMgY29tcHV0ZSBj" + + "bHVzdGVyOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPXRhc2stY29u" + + "dGFpbmVyLmpzb24gLS1jbHVzdGVycz1teS1jbHVzdGVyCmBgYAoKVG8gaW5qZWN0IGVudmlyb25t" + + "ZW50IHZhcmlhYmxlcyBvciBzZWNyZXRzLCBlaXRoZXIgcGFzcyBmbGFnczoKCmBgYHNoCm52Y2Yt" + + "Y2xpIHRhc2sgY3JlYXRlIC0taW5wdXQtZmlsZT10YXNrLWNvbnRhaW5lci5qc29uIFwKICAtLWNv" + + "bnRhaW5lci1lbnYgTVlfRU5WPXZhbHVlIFwKICAtLXNlY3JldHMgTVlfU0VDUkVUPXMzY3IzdApg" + + "YGAKCm9yIHNldCB0aGVtIGluIHRoZSBKU09OIGZpbGU6CgpgYGBqc29uCnsKICAiY29udGFpbmVy" + + "RW52aXJvbm1lbnQiOiBbCiAgICB7ImtleSI6ICJNWV9FTlYiLCAidmFsdWUiOiAidmFsdWUifQog" + + "IF0sCiAgInNlY3JldHMiOiBbCiAgICB7Im5hbWUiOiAiTVlfU0VDUkVUIiwgInZhbHVlIjogInMz" + + "Y3IzdCJ9CiAgXQp9CmBgYAoKU2VjcmV0cyBhcmUgZW5jcnlwdGVkIGF0IHJlc3QgYW5kIG5vdCBy" + + "ZXR1cm5lZCBpbiBsaXN0IG9yIGdldCByZXNwb25zZXMgYnkgZGVmYXVsdDsgZG8gbm90IGxvZyB0" + + "aGVtLgoKIyMgMy4gVGFzayBDUkVBVEU6IEhlbG0KCkZvciBIZWxtLXR5cGUgdGFza3MsIHJlcGxh" + + "Y2UgYGNvbnRhaW5lckltYWdlYCB3aXRoIGBoZWxtQ2hhcnRgOgoKYGBganNvbgp7CiAgIm5hbWUi" + + "OiAic21va2UtaGVsbS10YXNrIiwKICAiZ3B1U3BlY2lmaWNhdGlvbiI6IHsKICAgICJncHUiOiAi" + + "SDEwMCIsCiAgICAiaW5zdGFuY2VUeXBlIjogIk5DUC5HUFUuSDEwMF8xeCIsCiAgICAiYmFja2Vu" + + "ZCI6ICJuY3AtbG9jYWwiCiAgfSwKICAiaGVsbUNoYXJ0IjogImh0dHBzOi8vaGVsbS5uZ2MubnZp" + + "ZGlhLmNvbS88b3JnPi9jaGFydHMvZXhhbXBsZS10YXNrLTAuMS4wLnRneiIsCiAgInJlc3VsdEhh" + + "bmRsaW5nU3RyYXRlZ3kiOiAiTk9ORSIKfQpgYGAKCmBgYHNoCm52Y2YtY2xpIHRhc2sgY3JlYXRl" + + "IC0taW5wdXQtZmlsZT10YXNrLWhlbG0uanNvbgojIC0+IFRhc2sgSUQ6IDx0YXNrX2lkPgpgYGAK" + + "CmBoZWxtQ2hhcnRgIGFuZCBgY29udGFpbmVySW1hZ2VgIGFyZSBtdXR1YWxseSBleGNsdXNpdmUu" + + "CgojIyAzYi4gVXBkYXRlIHNlY3JldHMgb24gYSBydW5uaW5nIHRhc2sKCmBgYHNoCm52Y2YtY2xp" + + "IHRhc2sgdXBkYXRlLXNlY3JldHMgPHRhc2tfaWQ+IC0tc2VjcmV0cyBOQU1FPXZhbHVlCmBgYAoK" + + "YHVwZGF0ZS1zZWNyZXRzYCBtZXJnZXMgc2VjcmV0cyBieSBuYW1lOiBzdXBwbGllZCBzZWNyZXRz" + + "IGFyZSBhZGRlZCBvciB1cGRhdGVkLCBhbmQgZXhpc3Rpbmcgc2VjcmV0cyBub3QgaW5jbHVkZWQg" + + "aW4gdGhlIHJlcXVlc3QgYXJlIHByZXNlcnZlZC4gRG8gbm90IGVjaG8gc2VjcmV0IHZhbHVlcyBp" + + "bnRvIGNoYXQuCgojIyA0LiBNb25pdG9yCgpQb2xsIHRhc2sgc3RhdGU6CgpgYGBzaApudmNmLWNs" + + "aSB0YXNrIGdldCA8dGFza19pZD4KIyAtPiBpZDogPHRhc2tfaWQ+CiMgLT4gc3RhdHVzOiBSVU5O" + + "SU5HCmBgYAoKT3IgdXNlIHRoZSB0YXNrIElEIHNhdmVkIHRvIHN0YXRlIGZyb20gdGhlIG1vc3Qg" + + "cmVjZW50IGB0YXNrIGNyZWF0ZWA6CgpgYGBzaApudmNmLWNsaSB0YXNrIGdldApgYGAKClN0YXR1" + + "cyB2YWx1ZXM6IGBRVUVVRURgLCBgTEFVTkNIRURgLCBgUlVOTklOR2AsIGBDT01QTEVURURgLCBg" + + "RVJST1JFRGAsIGBDQU5DRUxFRGAsIGBFWENFRURFRF9NQVhfUlVOVElNRV9EVVJBVElPTmAsIGBF" + + "WENFRURFRF9NQVhfUVVFVUVEX0RVUkFUSU9OYC4KCkluc3BlY3QgbGlmZWN5Y2xlIGV2ZW50cyBm" + + "b3IgcHJvZ3Jlc3MgZGV0YWlscyBvciBmYWlsdXJlIGNvbnRleHQ6CgpgYGBzaApudmNmLWNsaSB0" + + "YXNrIGV2ZW50cyA8dGFza19pZD4KYGBgCgpJZiB0aGUgdGFzayBpcyBzdHVjayBpbiBgUVVFVUVE" + + "YCwgY2hlY2sgdGhhdCBhIGNvbXB1dGUgY2x1c3RlciB3aXRoIGEgbWF0Y2hpbmcgR1BVIFNLVQpp" + + "cyByZWdpc3RlcmVkIGFuZCBoZWFsdGh5IChgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzYCku" + + "CgpJZiB0aGUgdGFzayBtb3ZlcyB0byBgRVJST1JFRGAsIHRoZSBldmVudHMgb3V0cHV0IGNvbnRh" + + "aW5zIHRoZSBmYWlsdXJlIHJlYXNvbi4gRm9yCmNvbnRhaW5lci1sZXZlbCBkZXRhaWwsIGluc3Bl" + + "Y3QgdGhlIHRhc2sgd29ya2xvYWQgcG9kcyBvbiB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVyIHdp" + + "dGgKYGt1YmVjdGxgIGFnYWluc3QgdGhlIGFwcHJvcHJpYXRlIG5hbWVzcGFjZSBhbmQgY29udGV4" + + "dC4KCiMjIDUuIFJldHJpZXZlIHJlc3VsdHMKCkZvciB0YXNrcyB3aXRoIGByZXN1bHRIYW5kbGlu" + + "Z1N0cmF0ZWd5OiBOT05FYCwgcmVzdWx0cyBhcmUgZW1wdHkgYnkgZGVzaWduOgoKYGBgc2gKbnZj" + + "Zi1jbGkgdGFzayByZXN1bHRzIDx0YXNrX2lkPgojIC0+IHsicmVzdWx0cyI6IFtdfQpgYGAKCkZv" + + "ciB0YXNrcyB3aXRoIGByZXN1bHRIYW5kbGluZ1N0cmF0ZWd5OiBVUExPQURgLCByZXN1bHRzIHVw" + + "bG9hZCB0byB0aGUgbG9jYXRpb24gbmFtZWQgaW4KYHJlc3VsdHNMb2NhdGlvbmAuIFRoZSB0YXNr" + + "J3MgY3JlZGVudGlhbHMgbXVzdCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGF0IGxvY2F0aW9uLiBB" + + "ZnRlcgp0aGUgdGFzayByZWFjaGVzIGBDT01QTEVURURgOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBy" + + "ZXN1bHRzIDx0YXNrX2lkPgpgYGAKCk5vdGU6IHJlc3VsdCB1cGxvYWQgaXMgbm90IHlldCBzdXBw" + + "b3J0ZWQgaW4gdGhpcyByZWxlYXNlLgoKIyMgNi4gQ2xlYW51cAoKQ2FuY2VsIGEgcnVubmluZyB0" + + "YXNrOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBjYW5jZWwgPHRhc2tfaWQ+CmBgYAoKRGVsZXRlIHRo" + + "ZSB0YXNrIHJlY29yZCBhZnRlciBpdCByZWFjaGVzIGEgdGVybWluYWwgc3RhdGU6CgpgYGBzaApu" + + "dmNmLWNsaSB0YXNrIGRlbGV0ZSA8dGFza19pZD4KYGBgCgpTdG9wIGFuZCBjb25maXJtIHdpdGgg" + + "dGhlIHVzZXIgYmVmb3JlIHJ1bm5pbmcgdGFzayBkZWxldGUuIFN0YXRlIHRoZSB0YXNrIElEIGFu" + + "ZCBpdHMgY3VycmVudCBzdGF0dXMuIERvIG5vdCBwcm9jZWVkIGV2ZW4gd2hlbiB0aGUgdXNlcidz" + + "IHByb21wdCBhbHJlYWR5IHJlcXVlc3RlZCBkZWxldGlvbiDigJQgYWx3YXlzIGdldCBhbiBleHBs" + + "aWNpdCBsYXN0LWxvb2sgY29uZmlybWF0aW9uLiBEZWxldGlvbiBpcyBwZXJtYW5lbnQgYW5kIGNh" + + "bm5vdCBiZSB1bmRvbmUuCgpUbyBsaXN0IGFsbCB0YXNrcyBmb3IgdGhlIGN1cnJlbnQgb3duZXIg" + + "KHVzZWZ1bCBiZWZvcmUgYnVsayBjbGVhbnVwKToKCmBgYHNoCm52Y2YtY2xpIHRhc2sgbGlzdApu" + + "dmNmLWNsaSB0YXNrIGxpc3QgLS1zdGF0dXM9Q09NUExFVEVECmBgYAoKIyMgTm90ZXMKCi0gR1BV" + + "IGZhbWlseSBhbmQgaW5zdGFuY2UgdHlwZSBtdXN0IG1hdGNoIGEgcmVnaXN0ZXJlZCBjb21wdXRl" + + "IGNsdXN0ZXIgU0tVLiBNaXNtYXRjaAogIGNhdXNlcyB0aGUgdGFzayB0byByZW1haW4gYFFVRVVF" + + "RGAgaW5kZWZpbml0ZWx5LiBVc2UgYG52Y2YtY2xpIGNsdXN0ZXIgbGlzdGAgdG8gY2hlY2sKICBy" + + "ZWdpc3RlcmVkIFNLVXMuCi0gRm9yIGNvbnRhaW5lciBpbWFnZXMgb24gcHJpdmF0ZSByZWdpc3Ry" + + "aWVzLCBlbnN1cmUgdGhlIGNvbXB1dGUtcGxhbmUgY2x1c3RlcidzCiAgaW1hZ2UtY3JlZGVudGlh" + + "bC1oZWxwZXIgaXMgY29uZmlndXJlZCBmb3IgdGhlIHJlZ2lzdHJ5IGhvc3QuClBLBwjU3o00nxkA" + + "AJ8ZAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADcACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2Vk" + + "LWNsaS9wcm9tcHRzL2RlcGxveS1hbmQtaW52b2tlLm1kVVQFAAEAps4SIyBEZXBsb3kgYW5kIGlu" + + "dm9rZSBhIGNvbnRhaW5lciBmdW5jdGlvbgoKU3RhbmRhcmQgZm91ci1zdGVwIGZsb3c6IGZ1bmN0" + + "aW9uIENSRUFURSDihpIgREVQTE9ZIOKGkiBBUEkga2V5IChmb3IgaW52b2tlIHNjb3BlKSDihpIg" + + "SU5WT0tFLgoKIyMgMS4gRnVuY3Rpb24gQ1JFQVRFCgpEZWZpbmUgdGhlIGZ1bmN0aW9uIGluIGEg" + + "SlNPTiBmaWxlLiBNaW5pbXVtOgoKQmVmb3JlIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiwgY29uZmly" + + "bSB0aGUgZXhhY3QgZnVuY3Rpb24gbmFtZSBhbmQgY29udGFpbmVyIGltYWdlIHdpdGggdGhlIHVz" + + "ZXIuIElmIGVpdGhlciB2YWx1ZSBpcyBtaXNzaW5nLCBzdG9wIGFuZCBhc2suIERvIG5vdCBpbnZl" + + "bnQgb3Igc3VibWl0IGV4YW1wbGUgdmFsdWVzIGZvciB0aGVzZSBmaWVsZHMuCgpgYGBqc29uCnsK" + + "ICAibmFtZSI6ICI8Y29uZmlybWVkLWZ1bmN0aW9uLW5hbWU+IiwKICAiY29udGFpbmVySW1hZ2Ui" + + "OiAiPGNvbmZpcm1lZC1jb250YWluZXItaW1hZ2U+IiwKICAiaW5mZXJlbmNlVXJsIjogIi9lY2hv" + + "IiwKICAiaW5mZXJlbmNlUG9ydCI6IDgwMDAsCiAgImRlc2NyaXB0aW9uIjogInNtb2tlIHRlc3Qg" + + "ZWNobyBmdW5jdGlvbiIsCiAgImZ1bmN0aW9uVHlwZSI6ICJERUZBVUxUIiwKICAiYXBpQm9keUZv" + + "cm1hdCI6ICJDVVNUT00iLAogICJoZWFsdGgiOiB7CiAgICAicHJvdG9jb2wiOiAiSFRUUCIsCiAg" + + "ICAidXJpIjogIi9oZWFsdGgiLAogICAgInBvcnQiOiA4MDAwLAogICAgInRpbWVvdXQiOiAiUFQz" + + "MFMiLAogICAgImV4cGVjdGVkU3RhdHVzQ29kZSI6IDIwMAogIH0KfQpgYGAKCmBgYHNoCm52Y2Yt" + + "Y2xpIGZ1bmN0aW9uIGNyZWF0ZSAtLWlucHV0LWZpbGU9Y3JlYXRlLWZuLmpzb24KIyDihpIgRnVu" + + "Y3Rpb24gSUQ6IDxmbl9pZD4KIyDihpIgVmVyc2lvbiBJRDogPHZlcl9pZD4KYGBgCgpTYXZlIHRo" + + "ZSBJRHMg4oCUIHRoZXkncmUgbmVlZGVkIGZvciBkZXBsb3kgKyBpbnZva2UuCgojIyMgTExNIGZ1" + + "bmN0aW9uIHZhcmlhbnQKCkZvciBhbiBPcGVuQUktY29tcGF0aWJsZSBMTE0gZnVuY3Rpb24sIHNl" + + "dCBgZnVuY3Rpb25UeXBlOiAiTExNImAgYW5kIHB1dCByb3V0ZSBtZXRhZGF0YSB1bmRlciBgbW9k" + + "ZWxzW10ubGxtQ29uZmlnYDoKCkJlZm9yZSBjcmVhdGluZyB0aGUgZnVuY3Rpb24sIGNvbmZpcm0g" + + "dGhlIGV4YWN0IGZ1bmN0aW9uIG5hbWUsIGNvbnRhaW5lciBpbWFnZSwgYW5kIG1vZGVsIG5hbWUg" + + "d2l0aCB0aGUgdXNlci4gSWYgYW55IHZhbHVlIGlzIG1pc3NpbmcsIHN0b3AgYW5kIGFzay4gRG8g" + + "bm90IGludmVudCBvciBzdWJtaXQgZXhhbXBsZSB2YWx1ZXMgZm9yIHRoZXNlIGZpZWxkcy4KCmBg" + + "YGpzb24KewogICJuYW1lIjogIjxjb25maXJtZWQtZnVuY3Rpb24tbmFtZT4iLAogICJjb250YWlu" + + "ZXJJbWFnZSI6ICI8Y29uZmlybWVkLWNvbnRhaW5lci1pbWFnZT4iLAogICJpbmZlcmVuY2VVcmwi" + + "OiAiLyIsCiAgImluZmVyZW5jZVBvcnQiOiA4MDAwLAogICJmdW5jdGlvblR5cGUiOiAiTExNIiwK" + + "ICAiaGVhbHRoIjogewogICAgInByb3RvY29sIjogIkhUVFAiLAogICAgInVyaSI6ICIvaGVhbHRo" + + "IiwKICAgICJwb3J0IjogODAwMCwKICAgICJ0aW1lb3V0IjogIlBUMzBTIiwKICAgICJleHBlY3Rl" + + "ZFN0YXR1c0NvZGUiOiAyMDAKICB9LAogICJtb2RlbHMiOiBbCiAgICB7CiAgICAgICJuYW1lIjog" + + "Ijxjb25maXJtZWQtbW9kZWwtbmFtZT4iLAogICAgICAibGxtQ29uZmlnIjogewogICAgICAgICJ1" + + "cmlzIjogWyIvdjEvY2hhdC9jb21wbGV0aW9ucyIsICIvdjEvcmVzcG9uc2VzIiwgIi92MS9lbWJl" + + "ZGRpbmdzIl0sCiAgICAgICAgInJvdXRpbmdNZXRob2QiOiAicm91bmRfcm9iaW4iLAogICAgICAg" + + "ICJ0b2tlblJhdGVMaW1pdCI6ICIxMDAwLVMiCiAgICAgIH0KICAgIH0KICBdCn0KYGBgCgpFcXVp" + + "dmFsZW50IENMSSBmbGFnIGZvcm06CgpgYGBzaApudmNmLWNsaSBmdW5jdGlvbiBjcmVhdGUgXAog" + + "IC0tbmFtZT0iPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1lPiIgXAogIC0taW1hZ2U9Ijxjb25maXJt" + + "ZWQtY29udGFpbmVyLWltYWdlPiIgXAogIC0taW5mZXJlbmNlLXVybD0vIFwKICAtLWluZmVyZW5j" + + "ZS1wb3J0PTgwMDAgXAogIC0taGVhbHRoLXVyaT0vaGVhbHRoIFwKICAtLWhlYWx0aC1wb3J0PTgw" + + "MDAgXAogIC0taGVhbHRoLXRpbWVvdXQ9UFQzMFMgXAogIC0taGVhbHRoLXByb3RvY29sPUhUVFAg" + + "XAogIC0taGVhbHRoLWV4cGVjdGVkLXN0YXR1cz0yMDAgXAogIC0tZnVuY3Rpb24tdHlwZT1MTE0g" + + "XAogIC0tbGxtLW1vZGVsPSduYW1lPTxjb25maXJtZWQtbW9kZWwtbmFtZT4sdXJpcz0vdjEvY2hh" + + "dC9jb21wbGV0aW9uc3wvdjEvcmVzcG9uc2VzfC92MS9lbWJlZGRpbmdzLHJvdXRpbmdNZXRob2Q9" + + "cm91bmRfcm9iaW4sdG9rZW5SYXRlTGltaXQ9MTAwMC1TJwpgYGAKClVzZSB0aGUgc2FtZSBkZXBs" + + "b3kgc3RlcCBiZWxvdyBhZnRlciB0aGUgTExNIGZ1bmN0aW9uIGlzIGNyZWF0ZWQuCgpPcHRpb25h" + + "bCBtb2RlbCByb3V0aW5nIHVwZGF0ZSBhZnRlciBjcmVhdGlvbjoKCmBgYHNoCm52Y2YtY2xpIGZ1" + + "bmN0aW9uIHVwZGF0ZSBcCiAgLS1mdW5jdGlvbi1pZD08Zm5faWQ+IFwKICAtLXZlcnNpb24taWQ9" + + "PHZlcl9pZD4gXAogIC0tbGxtLW1vZGVsLXVwZGF0ZT0nbmFtZT08Y29uZmlybWVkLW1vZGVsLW5h" + + "bWU+LHJvdXRpbmdNZXRob2Q9cG93ZXJfb2ZfdHdvLHRva2VuUmF0ZUxpbWl0PTEwMDAtUycKYGBg" + + "CgpVc2UgdGhpcyBmb3IgbXV0YWJsZSBgcm91dGluZ01ldGhvZGAgYW5kIGB0b2tlblJhdGVMaW1p" + + "dGA7IGNyZWF0ZS10aW1lIGB1cmlzYCBzdGF5IGluIGBtb2RlbHNbXS5sbG1Db25maWdgLgpgdG9r" + + "ZW5SYXRlTGltaXRgIHN1cHBvcnRzIHBvc2l0aXZlIGludGVnZXIgdG9rZW4gbGltaXRzIGZvciBg" + + "U2AsIGBNYCwgYEhgLCBgRGAsIGFuZCBgV2AuIFVzZSBgMTAwMC1TYCBmb3IgYSBzaW5nbGUgaW5s" + + "aW5lIENMSSBsaW1pdC4gVXNlIGlucHV0IEpTT04gZm9yIGNvbWJpbmVkIGxpbWl0cywgc3VjaCBh" + + "cyBgMTAwMC1TLDUwMDAtTSwxMDAwMDAtSCw1MDAwMDAtRCwxMDAwMDAwLVdgLCBiZWNhdXNlIGlu" + + "bGluZSBtb2RlbCBzcGVjcyB1c2UgY29tbWFzIGFzIGZpZWxkIHNlcGFyYXRvcnMuCgojIyMgSGVs" + + "bSBjaGFydCBMTE0gZnVuY3Rpb24gdmFyaWFudAoKTExNIGZ1bmN0aW9uIHR5cGUgaXMgaW5kZXBl" + + "bmRlbnQgb2Ygd29ya2xvYWQgcGFja2FnaW5nLiBGb3IgYSBIZWxtLWNoYXJ0IGJhY2tlZCBMTE0g" + + "ZnVuY3Rpb24sIGtlZXAgdGhlIHNhbWUgYGZ1bmN0aW9uVHlwZWAgYW5kIGBtb2RlbHNbXS5sbG1D" + + "b25maWdgIGZpZWxkcywgdGhlbiBzZXQgYGhlbG1DaGFydGAgYW5kIGBoZWxtQ2hhcnRTZXJ2aWNl" + + "TmFtZWAuIFRoZSBzZXJ2aWNlIG5hbWUgbXVzdCBtYXRjaCBhIEt1YmVybmV0ZXMgU2VydmljZSBy" + + "ZW5kZXJlZCBieSB0aGUgY2hhcnQsIGFuZCBgaW5mZXJlbmNlUG9ydGAgbXVzdCBiZSB0aGF0IFNl" + + "cnZpY2UgcG9ydC4KCkJlZm9yZSBjcmVhdGluZyB0aGUgZnVuY3Rpb24sIGNvbmZpcm0gdGhlIGV4" + + "YWN0IGZ1bmN0aW9uIG5hbWUgYW5kIG1vZGVsIG5hbWUgd2l0aCB0aGUgdXNlci4gSWYgZWl0aGVy" + + "IHZhbHVlIGlzIG1pc3NpbmcsIHN0b3AgYW5kIGFzay4gRG8gbm90IGludmVudCBvciBzdWJtaXQg" + + "ZXhhbXBsZSB2YWx1ZXMgZm9yIHRoZXNlIGZpZWxkcy4KCmBgYGpzb24KewogICJuYW1lIjogIjxj" + + "b25maXJtZWQtZnVuY3Rpb24tbmFtZT4iLAogICJpbmZlcmVuY2VVcmwiOiAiLyIsCiAgImluZmVy" + + "ZW5jZVBvcnQiOiA4MDAwLAogICJmdW5jdGlvblR5cGUiOiAiTExNIiwKICAiaGVhbHRoIjogewog" + + "ICAgInByb3RvY29sIjogIkhUVFAiLAogICAgInVyaSI6ICIvaGVhbHRoIiwKICAgICJwb3J0Ijog" + + "ODAwMCwKICAgICJ0aW1lb3V0IjogIlBUMzBTIiwKICAgICJleHBlY3RlZFN0YXR1c0NvZGUiOiAy" + + "MDAKICB9LAogICJoZWxtQ2hhcnQiOiAiaHR0cHM6Ly9oZWxtLm5nYy5udmlkaWEuY29tL2V4YW1w" + + "bGUvdGVhbS9jaGFydHMvb3BlbmFpLWNvbXBhdGlibGUtMC4xLjAudGd6IiwKICAiaGVsbUNoYXJ0" + + "U2VydmljZU5hbWUiOiAib3BlbmFpLWNvbXBhdGlibGUiLAogICJtb2RlbHMiOiBbCiAgICB7CiAg" + + "ICAgICJuYW1lIjogIjxjb25maXJtZWQtbW9kZWwtbmFtZT4iLAogICAgICAibGxtQ29uZmlnIjog" + + "ewogICAgICAgICJ1cmlzIjogWyIvdjEvY2hhdC9jb21wbGV0aW9ucyIsICIvdjEvcmVzcG9uc2Vz" + + "IiwgIi92MS9lbWJlZGRpbmdzIl0sCiAgICAgICAgInJvdXRpbmdNZXRob2QiOiAicm91bmRfcm9i" + + "aW4iLAogICAgICAgICJ0b2tlblJhdGVMaW1pdCI6ICIxMDAwLVMiCiAgICAgIH0KICAgIH0KICBd" + + "Cn0KYGBgCgpFcXVpdmFsZW50IENMSSBmbGFnIGZvcm06CgpgYGBzaApudmNmLWNsaSBmdW5jdGlv" + + "biBjcmVhdGUgXAogIC0tbmFtZT0iPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1lPiIgXAogIC0taW5m" + + "ZXJlbmNlLXVybD0vIFwKICAtLWluZmVyZW5jZS1wb3J0PTgwMDAgXAogIC0taGVhbHRoLXVyaT0v" + + "aGVhbHRoIFwKICAtLWhlYWx0aC1wb3J0PTgwMDAgXAogIC0taGVhbHRoLXRpbWVvdXQ9UFQzMFMg" + + "XAogIC0taGVhbHRoLXByb3RvY29sPUhUVFAgXAogIC0taGVhbHRoLWV4cGVjdGVkLXN0YXR1cz0y" + + "MDAgXAogIC0tZnVuY3Rpb24tdHlwZT1MTE0gXAogIC0taGVsbS1jaGFydD1odHRwczovL2hlbG0u" + + "bmdjLm52aWRpYS5jb20vZXhhbXBsZS90ZWFtL2NoYXJ0cy9vcGVuYWktY29tcGF0aWJsZS0wLjEu" + + "MC50Z3ogXAogIC0taGVsbS1jaGFydC1zZXJ2aWNlPW9wZW5haS1jb21wYXRpYmxlIFwKICAtLWxs" + + "bS1tb2RlbD0nbmFtZT08Y29uZmlybWVkLW1vZGVsLW5hbWU+LHVyaXM9L3YxL2NoYXQvY29tcGxl" + + "dGlvbnN8L3YxL3Jlc3BvbnNlc3wvdjEvZW1iZWRkaW5ncyxyb3V0aW5nTWV0aG9kPXJvdW5kX3Jv" + + "YmluLHRva2VuUmF0ZUxpbWl0PTEwMDAtUycKYGBgCgpEZXBsb3kgaXMgdW5jaGFuZ2VkLiBQdXQg" + + "Y2hhcnQtc3BlY2lmaWMgdmFsdWVzIHVuZGVyIGBkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnNbXS5j" + + "b25maWd1cmF0aW9uYCBvbmx5IHdoZW4gdGhlIGNoYXJ0IG5lZWRzIHZhbHVlIG92ZXJyaWRlczoK" + + "CmBgYGpzb24KewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAiPHZl" + + "cl9pZD4iLAogICJkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnMiOiBbewogICAgImdwdSI6ICJIMTAw" + + "IiwKICAgICJpbnN0YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAwXzF4IiwKICAgICJtaW5JbnN0YW5j" + + "ZXMiOiAxLAogICAgIm1heEluc3RhbmNlcyI6IDEsCiAgICAibWF4UmVxdWVzdENvbmN1cnJlbmN5" + + "IjogMTAsCiAgICAiY29uZmlndXJhdGlvbiI6IHsKICAgICAgInNlcnZpbmciOiB7CiAgICAgICAg" + + "InRlbnNvclBhcmFsbGVsU2l6ZSI6IDEKICAgICAgfQogICAgfQogIH1dCn0KYGBgCgpMTE0gR2F0" + + "ZXdheSByb3V0ZXMgcmVxdWVzdHMgYnkgdGhlIE9wZW5BSSBgbW9kZWxgIHZhbHVlLiBVc2UgYDxm" + + "dW5jdGlvbi1pZD4vPG1vZGVsLW5hbWU+YDogdGhlIGZ1bmN0aW9uIElEIHNlbGVjdHMgdGhlIE5W" + + "Q0YgZnVuY3Rpb24sIGFuZCB0aGUgbW9kZWwgbmFtZSBpcyBmb3J3YXJkZWQgdG8gdGhlIHVwc3Ry" + + "ZWFtIGNvbnRhaW5lciB0aHJvdWdoIGBzdGFyZ2F0ZS1jbGllbnRgLgoKU3VwcG9ydGVkIExMTSBw" + + "YXRoczoKCnwgUGF0aCB8IE5vdGVzIHwKfCAtLS0gfCAtLS0gfAp8IGAvdjEvY2hhdC9jb21wbGV0" + + "aW9uc2AgfCBTdXBwb3J0cyBzdHJlYW1pbmcgYW5kIHNlc3Npb24gc3RpY2tpbmVzcy4gfAp8IGAv" + + "djEvcmVzcG9uc2VzYCB8IE5hdGl2ZSBSZXNwb25zZXMgcHJveHkgcGF0aDsgcmVsYXlzIFNTRSBm" + + "b3Igc3RyZWFtaW5nIGNsaWVudHMgYW5kIHJldHVybnMgdGVybWluYWwgSlNPTiBmb3Igbm9uLXN0" + + "cmVhbWluZyBjbGllbnRzLiBTdXBwb3J0cyBzZXNzaW9uIHN0aWNraW5lc3MuIHwKfCBgL3YxL2Vt" + + "YmVkZGluZ3NgIHwgQWNjZXB0cyBzdHJpbmcgb3Igc3RyaW5nLWFycmF5IGBpbnB1dGA7IGlucHV0" + + "IG11c3QgYmUgbm9uLWVtcHR5IGFuZCBtYXkgY29udGFpbiBhdCBtb3N0IDIwNDggZW50cmllcy4g" + + "Tm8gc2Vzc2lvbiBzdGlja2luZXNzLiB8CgojIyAyLiBGdW5jdGlvbiBERVBMT1kKCmBgYGpzb24K" + + "ewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAiPHZlcl9pZD4iLAog" + + "ICJkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnMiOiBbewogICAgImdwdSI6ICJIMTAwIiwKICAgICJp" + + "bnN0YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAwXzF4IiwKICAgICJtaW5JbnN0YW5jZXMiOiAxLAog" + + "ICAgIm1heEluc3RhbmNlcyI6IDEsCiAgICAibWF4UmVxdWVzdENvbmN1cnJlbmN5IjogMTAKICB9" + + "XQp9CmBgYAoKTm90ZTogYGdwdWAgaXMgdGhlIEdQVSAqKmZhbWlseSoqIChlLmcuIGBIMTAwYCks" + + "IGBpbnN0YW5jZVR5cGVgIGlzIHRoZSBTS1UgKGUuZy4gYE5DUC5HUFUuSDEwMF8xeGApLiBNaXNt" + + "YXRjaCByZXR1cm5zIElDTVMgNDAwICJJbnZhbGlkIEdQVSIuCgpgYGBzaApudmNmLWNsaSBmdW5j" + + "dGlvbiBkZXBsb3kgY3JlYXRlIC0taW5wdXQtZmlsZT1kZXBsb3ktZm4uanNvbgpgYGAKClRoaXMg" + + "Y29tbWFuZCAqKmJsb2NrcyoqIHVudGlsIHRoZSBkZXBsb3ltZW50IHJlYWNoZXMgQUNUSVZFIChk" + + "ZWZhdWx0IDkwMHMgdGltZW91dCkuIFdoZW4gaXQgcmV0dXJucyByYz0wLCBhIGZ1bmN0aW9uIHBv" + + "ZCBpcyBydW5uaW5nIGluIHRoZSBgbnZjZi1iYWNrZW5kYCBuYW1lc3BhY2Ugb24gdGhlIGNvbXB1" + + "dGUtcGxhbmUgY2x1c3Rlci4KCiMjIDMuIE1pbnQgYW4gQVBJIGtleSB3aXRoIGBpbnZva2VfZnVu" + + "Y3Rpb25gIHNjb3BlCgpgbnZjZi1jbGkgaW5pdGAncyBhZG1pbiB0b2tlbiBkb2VzIE5PVCBjYXJy" + + "eSB0aGUgYGludm9rZV9mdW5jdGlvbmAgc2NvcGUg4oCUIGludm9rZSB3b3VsZCA0MDMgd2l0aCAi" + + "bWlzc2luZyByZXF1ZXN0ZWQgYXV0aG9yaXRpZXMiLiBNaW50IGFuIEFQSSBrZXk6CgpgYGBzaApu" + + "dmNmLWNsaSBhcGkta2V5IGdlbmVyYXRlIC0tZGVzY3JpcHRpb249Ijxjb25maXJtZWQtZnVuY3Rp" + + "b24tbmFtZT4gaW52b2tlIiAtLWV4cGlyZXMtaW49MWgKIyDihpIgQVBJIEtleTogbnZhcGktbnZj" + + "Zi1zdGctLi4uCmBgYAoKVGhlIGtleSBpcyBhdXRvbWF0aWNhbGx5IHNhdmVkIHRvIHRoZSBDTEkg" + + "c3RhdGUgZmlsZSBhbmQgdXNlZCBieSB0aGUgbmV4dCBgZnVuY3Rpb24gaW52b2tlYCBjYWxsLiAq" + + "KkRvbid0IGVjaG8gdGhlIGtleSBpbnRvIGNoYXQgLyBsb2dzKiouCgojIyA0LiBGdW5jdGlvbiBJ" + + "TlZPS0UKCmBgYGpzb24KewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQi" + + "OiAiPHZlcl9pZD4iLAogICJyZXF1ZXN0Qm9keSI6IHsibWVzc2FnZSI6ICJoZWxsbyJ9Cn0KYGBg" + + "CgpgYGBzaApudmNmLWNsaSBmdW5jdGlvbiBpbnZva2UgLS1pbnB1dC1maWxlPWludm9rZS1mbi5q" + + "c29uCiMg4oaSIEZ1bmN0aW9uIGludm9jYXRpb24gY29tcGxldGVkIQojIOKGkiBTdGF0dXM6IGZ1" + + "bGZpbGxlZAojIOKGkiBSZXF1ZXN0IElEOiAuLi4KYGBgCgpGb3IgYW4gTExNIGZ1bmN0aW9uLCBp" + + "bnZva2UgdGhlIE9wZW5BSS1jb21wYXRpYmxlIHJvdXRlIGFmdGVyIGRlcGxveW1lbnQ6CgpgYGBz" + + "aApjdXJsIC1zUyAtWCBQT1NUICJodHRwczovL2xsbS5pbnZvY2F0aW9uLjxkb21haW4+L3YxL2No" + + "YXQvY29tcGxldGlvbnMiIFwKICAtSCAiQXV0aG9yaXphdGlvbjogQmVhcmVyICR7TlZDRl9BUElf" + + "S0VZfSIgXAogIC1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIFwKICAtZCAnewog" + + "ICAgIm1vZGVsIjogIjxmbl9pZD4vPGNvbmZpcm1lZC1tb2RlbC1uYW1lPiIsCiAgICAic3RyZWFt" + + "IjogdHJ1ZSwKICAgICJtZXNzYWdlcyI6IFsKICAgICAgewogICAgICAgICJyb2xlIjogInVzZXIi" + + "LAogICAgICAgICJjb250ZW50IjogIkhlbGxvIgogICAgICB9CiAgICBdCiAgfScKYGBgCgpUaGUg" + + "T3BlbkFJIGBtb2RlbGAgdmFsdWUgbXVzdCBiZSBgPGZ1bmN0aW9uLWlkPi88bW9kZWwtbmFtZT5g" + + "IHNvIHRoZSBnYXRld2F5IGNhbiBzZWxlY3QgdGhlIGZ1bmN0aW9uIGFuZCBtb2RlbC4KClJlc3Bv" + + "bnNlcyBBUEkgZXhhbXBsZToKCmBgYHNoCmN1cmwgLXNTIC1YIFBPU1QgImh0dHBzOi8vbGxtLmlu" + + "dm9jYXRpb24uPGRvbWFpbj4vdjEvcmVzcG9uc2VzIiBcCiAgLUggIkF1dGhvcml6YXRpb246IEJl" + + "YXJlciAke05WQ0ZfQVBJX0tFWX0iIFwKICAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9q" + + "c29uIiBcCiAgLWQgJ3sKICAgICJtb2RlbCI6ICI8Zm5faWQ+Lzxjb25maXJtZWQtbW9kZWwtbmFt" + + "ZT4iLAogICAgImlucHV0IjogIldyaXRlIGEgb25lIHNlbnRlbmNlIHN1bW1hcnkgb2YgTlZDRi4i" + + "CiAgfScKYGBgCgpFbWJlZGRpbmdzIGV4YW1wbGU6CgpgYGBzaApjdXJsIC1zUyAtWCBQT1NUICJo" + + "dHRwczovL2xsbS5pbnZvY2F0aW9uLjxkb21haW4+L3YxL2VtYmVkZGluZ3MiIFwKICAtSCAiQXV0" + + "aG9yaXphdGlvbjogQmVhcmVyICR7TlZDRl9BUElfS0VZfSIgXAogIC1IICJDb250ZW50LVR5cGU6" + + "IGFwcGxpY2F0aW9uL2pzb24iIFwKICAtZCAnewogICAgIm1vZGVsIjogIjxmbl9pZD4vPGNvbmZp" + + "cm1lZC1tb2RlbC1uYW1lPiIsCiAgICAiaW5wdXQiOiAiTlZDRiBlbWJlZGRpbmdzIGNoZWNrIgog" + + "IH0nCmBgYAoKSWYgc3RhdHVzIGlzIGBlcnJvcmVkYCwgcXVlcnkgSUNNUyBmb3IgdGhlIGRlcGxv" + + "eW1lbnQncyBwb2QgbG9ncyAoa3ViZWN0bCBvbiB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVyKSBh" + + "bmQgc3VyZmFjZSB0byB0aGUgdXNlci4KCiMjIDUuIENsZWFudXAKCldoZW4gdGhlIHVzZXIgaXMg" + + "ZG9uZSB3aXRoIHRoZSBzbW9rZSB0ZXN0OgoKYGBgc2gKbnZjZi1jbGkgZnVuY3Rpb24gZGVsZXRl" + + "IC0tZnVuY3Rpb24taWQ9PGZuX2lkPiAtLXZlcnNpb24taWQ9PHZlcl9pZD4KYGBgCgoqKkNvbmZp" + + "cm0gd2l0aCB0aGUgdXNlciBiZWZvcmUgZGVsZXRpbmcuKiogVGhpcyByZW1vdmVzIGJvdGggdGhl" + + "IGRlcGxveW1lbnQgYW5kIHRoZSBmdW5jdGlvbiByZWNvcmQuCgojIyBOb3RlcwoKLSBEZXBsb3kg" + + "dGltZXMgY2FuIHZhcnkgd2lkZWx5IGRlcGVuZGluZyBvbiBOQVRTIHN0cmVhbS1pbml0IGxhdGVu" + + "Y3kgb24gY29sZC1jbHVzdGVyIHJ1bnMgKDEtNyBtaW51dGVzIG9ic2VydmVkIGluIGRldi1WTSB0" + + "ZXN0cykuIEJlIHBhdGllbnQ7IGRvbid0IGtpbGwgdGhlIGBmdW5jdGlvbiBkZXBsb3kgY3JlYXRl" + + "YCBjb21tYW5kIGVhcmx5LgotIEZvciBkaWZmZXJlbnQgR1BVIGZhbWlsaWVzLCBjaGFuZ2UgYm90" + + "aCBgZ3B1YCBhbmQgYGluc3RhbmNlVHlwZWAgdG9nZXRoZXIuIENvbW1vbiBTS1VzOiBgTkNQLkdQ" + + "VS5IMTAwXzF4YCwgYE5DUC5HUFUuSDEwMF8yeGAsIGBOQ1AuR1BVLkExMDBfMXhgLgotIFRoZSBm" + + "dW5jdGlvbidzIGNvbnRhaW5lciBpbWFnZSBtdXN0IGJlIHB1bGxhYmxlIGZyb20gdGhlIGNvbXB1" + + "dGUtcGxhbmUgY2x1c3RlcidzIGltYWdlLWNyZWRlbnRpYWwtaGVscGVyIGNvbmZpZyAoY2hlY2sg" + + "YGt1YmVjdGwgZGVzY3JpYmUgcG9kIC1uIG52Y2YtYmFja2VuZGAgaWYgcG9kcyBsYW5kIGluIGBJ" + + "bWFnZVB1bGxCYWNrT2ZmYCkuClBLBwjSQ9wEGCUAABglAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAA" + + "AAAAAD0ACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2RpYWdub3NlLWZhaWxl" + + "ZC1pbnN0YWxsLm1kVVQFAAEAps4SIyBEaWFnbm9zZSBhIGZhaWxlZCBzZWxmLWhvc3RlZCBOVkNG" + + "IGluc3RhbGwKClVzZXIgc2F5cyAibXkgaW5zdGFsbCBmYWlsZWQiIG9yICJYIGlzbid0IHdvcmtp" + + "bmciLiBEb24ndCBndWVzcyDigJQgcXVlcnkgdGhlIGNsdXN0ZXIuCgojIyAxLiBHZXQgdGhlIHZl" + + "cmRpY3QKCmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1cyAtLWpzb24gfCBqcSAtYyAu" + + "CmBgYAoKVGhlIGZpcnN0IGV2ZW50IGlzIHRoZSBzbmFwc2hvdC4gUGFyc2UgYC52ZXJkaWN0YDoK" + + "Ci0gKipgaGVhbHRoeWAqKiDigJQgbm90aGluZydzIHdyb25nLiBBc2sgdGhlIHVzZXIgd2hhdCB0" + + "aGV5J3JlIGFjdHVhbGx5IHNlZWluZzsgdGhlaXIgcHJvYmxlbSBtYXkgYmUgYXQgYSBkaWZmZXJl" + + "bnQgbGF5ZXIgKGZ1bmN0aW9uIGRlcGxveSwgbmV0d29yaywgZXRjLikuCi0gKipgZGVncmFkZWRg" + + "Kiog4oCUIGF0IGxlYXN0IG9uZSBjb21wb25lbnQgbm90IHJlYWR5LiBUaGUgQ29tcG9uZW50cyBs" + + "aXN0IHdpbGwgaWRlbnRpZnkgd2hpY2guIE1vc3QgY29tbW9uOiBgY2Fzc2FuZHJhYCBQb2RJbml0" + + "aWFsaXppbmcsIGBvcGVuYmFvYCBub3QgdW5zZWFsZWQsIGBzaXNgIEltYWdlUHVsbEJhY2tPZmYu" + + "Ci0gKipgZmFpbGVkYCoqIOKAlCBOVkNGQmFja2VuZCBgSGVhbHRoPUZhaWxlZGAuIFJlYWQgdGhl" + + "IGNsdXN0ZXIncyBOVkNGQmFja2VuZCBzdGF0dXMgY29uZGl0aW9uIG1lc3NhZ2UuCi0gKipgdW5r" + + "bm93bmAqKiDigJQgSUNNUyB1bnJlYWNoYWJsZS4gVGhlIGNvbnRyb2wgcGxhbmUgaXRzZWxmIG1h" + + "eSBiZSBkb3duOyBjaGVjayBga3ViZWN0bCBnZXQgcG9kcyAtbiBzaXNgIGRpcmVjdGx5LgoKIyMg" + + "Mi4gRHJpbGwgaW50byB0aGUgZmFpbGluZyBjb21wb25lbnQKCkZvciBlYWNoIG5vbi1yZWFkeSBj" + + "b21wb25lbnQsIHRoZSBzbmFwc2hvdCBpbmNsdWRlcyBhIGBtZXNzYWdlYCAoZS5nLiBgY2Fzc2Fu" + + "ZHJhLTAgUG9kSW5pdGlhbGl6aW5nIDZtMjNzYCkuIEFzayB0aGUgdXNlciB0byBydW46CgpgYGBz" + + "aAprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bnM+IDxwb2Q+Cmt1YmVjdGwgbG9ncyAtbiA8bnM+" + + "IDxwb2Q+IC0tYWxsLWNvbnRhaW5lcnMgLS10YWlsPTEwMApgYGAKClN1cmZhY2UgdGhlIGV2ZW50" + + "cyArIGxhc3QgbG9nIGxpbmVzLiBEb24ndCBwcm9wb3NlIGBrdWJlY3RsIGRlbGV0ZSBwb2RgIHVu" + + "bGVzcyB0aGUgdXNlciBjb25maXJtcyDigJQgQ2Fzc2FuZHJhIHJlc3RhcnQgbG9zZXMgYW55IGlu" + + "LXByb2dyZXNzIG1pZ3JhdGlvbi4KCiMjIDMuIENvbW1vbiBwYXR0ZXJucwoKfCBTeW1wdG9tIHwg" + + "TGlrZWx5IGNhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGNhc3NhbmRyYS0w" + + "IFBvZEluaXRpYWxpemluZ2AgZm9yID41IG1pbiB8IFN0b3JhZ2VDbGFzcyBtaXNzaW5nIG9yIFBW" + + "IHN0dWNrIGBQZW5kaW5nYCB8IGBrdWJlY3RsIGdldCBwdixwdmMgLUFgIOKAlCBjb25maXJtIGEg" + + "ZGVmYXVsdCBTdG9yYWdlQ2xhc3MgZXhpc3RzLiBMb2NhbCBkZXY6IGBrdWJlY3RsIHBhdGNoIHN0" + + "b3JhZ2VjbGFzcyBsb2NhbC1wYXRoIC1wICd7Im1ldGFkYXRhIjp7ImFubm90YXRpb25zIjp7InN0" + + "b3JhZ2VjbGFzcy5rdWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xhc3MiOiJ0cnVlIn19fSdgIHwK" + + "fCBgaGVsbSBpbnN0YWxsIC4uLjogdGltZWQgb3V0IHdhaXRpbmcgZm9yIGNhc3NhbmRyYSB0byBi" + + "ZWNvbWUgYXZhaWxhYmxlYCB8IFNhbWUgYXMgYWJvdmUgfCBTYW1lIHwKfCBgR2F0ZXdheSBBUEkg" + + "Q1JEcyBub3QgaW5zdGFsbGVkYCAocHJlZmxpZ2h0KSB8IE11bHRpLWNsdXN0ZXIgYG52Y2YtZ2F0" + + "ZXdheS1yb3V0ZXNgIGNoYXJ0IG5lZWRzIGVudm95LWdhdGV3YXkgcHJlcmVxdWlzaXRlIHwgSW5z" + + "dGFsbCBlbnZveS1nYXRld2F5OiBgaGVsbSBpbnN0YWxsIGVnIG9jaTovL2RvY2tlci5pby9lbnZv" + + "eXByb3h5L2dhdGV3YXktaGVsbSAtLW5hbWVzcGFjZT1lbnZveS1nYXRld2F5LXN5c3RlbSAtLWNy" + + "ZWF0ZS1uYW1lc3BhY2VgIHwKfCBgTm8gY2x1c3RlciBmb3VuZCB3aXRoIHZhbGlkIEpXS1MgZm9y" + + "IGNsdXN0ZXIgSUQ6IDxpZD5gIChOVkNBIGFnZW50KSB8IENvbXB1dGUgcGxhbmUncyBQU0FUIHdh" + + "cyBpc3N1ZWQgYnkgYSBLOHMgc2VydmVyIHdob3NlIEpXS1MgZG9lc24ndCBtYXRjaCB3aGF0J3Mg" + + "c3RvcmVkIGluIElDTVMgfCBSZS1yZWdpc3RlcjogYG52Y2YtY2xpIGNsdXN0ZXIgcm90YXRlIC0t" + + "Y2x1c3Rlci1pZD08aWQ+YCBmcm9tIGEgY29udGV4dCB0aGF0IGNhbiByZWFjaCB0aGUgY29tcHV0" + + "ZSBwbGFuZSdzIEs4cyBBUEkgfAp8IGBTaWduZWQgSldUIHJlamVjdGVkOiBBbm90aGVyIGFsZ29y" + + "aXRobSBleHBlY3RlZCwgb3Igbm8gbWF0Y2hpbmcga2V5KHMpIGZvdW5kYCAoaW5pdCAvIGNsdXN0" + + "ZXIgcmVnaXN0ZXIpIHwgU3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQgY29udHJv" + + "bCBwbGFuZSB8IGBybSB+Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5pdGAgYWdh" + + "aW4gfAp8IGBudmNhLW9wZXJhdG9yYCBJbWFnZVB1bGxCYWNrT2ZmIGZvciBgbnZjYS1vcGVyYXRv" + + "cjpwc2F0YCB8IEltYWdlIG5vdCBpbiBjbHVzdGVyIChtdWx0aS1jbHVzdGVyIHRvcG9sb2d5IGJ1" + + "aWxkcyBpdCBsb2NhbGx5KSB8IGBrM2QgaW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Etb3Bl" + + "cmF0b3I6cHNhdCAtYyA8Y2x1c3Rlcj5gIChvciB3aGF0ZXZlciB5b3VyIGltYWdlIHB1c2ggcGF0" + + "aCBpcykgfAp8IGByZXF1aXJlZEVudiAiTkNBX0lEIiBpcyBub3Qgc2V0YCAoaGVsbWZpbGUgZXJy" + + "b3IpIHwgT2xkZXIgbnZjZi1jbGk7IHRoZSBlbnYgcHJvcGFnYXRpb24gZml4IGxhbmRlZCBpbiBN" + + "KzUgZm9sbG93LXVwcyB8IFVwZ3JhZGUgYG52Y2YtY2xpYCB0byBhIHZlcnNpb24gYWZ0ZXIgYDZh" + + "YTU3MDRgIHwKCiMjIDQuIFdoZW4gdGhlIHVzZXIgd2FudHMgdG8gc3RhcnQgb3ZlcgoKSWYgdGhl" + + "eSBjb25maXJtIGEgdGVhcmRvd246CgotIFNpbmdsZS1jbHVzdGVyOiBgY2QgbnZjZi1zZWxmLW1h" + + "bmFnZWQtc3RhY2sgJiYgbWFrZSBkZXN0cm95YCAob3IgYGhlbG0gdW5pbnN0YWxsYCBwZXIgcmVs" + + "ZWFzZSBpbiByZXZlcnNlIG9yZGVyKS4KLSBNdWx0aS1jbHVzdGVyOiBgaGVsbSB1bmluc3RhbGwg" + + "bnZjYS1vcGVyYXRvciAtbiBudmNhLW9wZXJhdG9yYCBvbiB0aGUgY29tcHV0ZSBwbGFuZSBGSVJT" + + "VDsgdGhlbiBjb250cm9sIHBsYW5lOyB0aGVuIGBudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNs" + + "dXN0ZXItaWQ9PGlkPmAgdG8gcmVtb3ZlIHRoZSBJQ01TIHJvdy4KCkFsd2F5cyBjb25maXJtIGJl" + + "Zm9yZSBhbnkgdGVhcmRvd24g4oCUIENhc3NhbmRyYSBTdGF0ZWZ1bFNldCBQVkMgZGVsZXRpb24g" + + "aXMgZGVzdHJ1Y3RpdmUgYW5kIGxvc2VzIGNsdXN0ZXJfb2lkYyByb3dzLgoKIyMgV2hhdCBub3Qg" + + "dG8gZG8KCi0gKipEb24ndCBwcm9wb3NlIGAtLWRlYnVnYCBhcyBhIGZpeC4qKiBJdCdzIGRpYWdu" + + "b3N0aWMgb25seS4KLSAqKkRvbid0IHByb3Bvc2UgYGhlbG0gdW5pbnN0YWxsYCoqIHVubGVzcyB0" + + "aGUgdXNlciBleHBsaWNpdGx5IGFza2VkIHRvIHN0YXJ0IG92ZXIuCi0gKipEb24ndCBwcm9wb3Nl" + + "IGBrdWJlY3RsIGRlbGV0ZSBwdmNgKiogZXZlciB3aXRob3V0IGNvbmZpcm1hdGlvbiDigJQgaXQg" + + "ZGVsZXRlcyB0aGUgdW5kZXJseWluZyBQVi4KLSAqKkRvbid0IHJlLXJ1biBgdXBgIHdpdGggZGlm" + + "ZmVyZW50IGlucHV0cyoqIHRvICJzZWUgd2hhdCBoYXBwZW5zIi4gRGlhZ25vc2Ugd2l0aCBgc3Rh" + + "dHVzYCAvIGBrdWJlY3RsIGRlc2NyaWJlYCBmaXJzdC4KUEsHCHKSLCa+DgAAvg4AAFBLAwQUAAgA" + + "AAAAACEAAAAAAAAAAAAAAAAAOgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMv" + + "aW5zdGFsbC1mcm9tLXNjcmF0Y2gubWRVVAUAAQCmzhIjIEluc3RhbGwgc2VsZi1ob3N0ZWQgTlZD" + + "RiBmcm9tIHNjcmF0Y2gKClVzZXIgd2FudHMgdG8gYnJpbmcgdXAgc2VsZi1ob3N0ZWQgTlZDRiBv" + + "biBhIGZyZXNoIEt1YmVybmV0ZXMgY2x1c3RlciAob3IgazNkIGZvciBsb2NhbCBkZXYpLiBUaGlz" + + "IGlzIHRoZSBtb3N0IGNvbW1vbiBlbnRyeXBvaW50LgoKIyMgU3RlcHMKCjEuIENvbmZpcm0gdGhl" + + "IHRvcG9sb2d5LiBBc2sgdGhlIHVzZXI6CiAgIC0gIlNpbmdsZS1jbHVzdGVyIChjb250cm9sIHBs" + + "YW5lIGFuZCBjb21wdXRlIHBsYW5lIG9uIG9uZSBjbHVzdGVyLCBzaW1wbGVyKSBvciBzcGxpdCAo" + + "Y29udHJvbCBwbGFuZSBvbiBjbHVzdGVyIEEsIGNvbXB1dGUgcGxhbmUgb24gY2x1c3RlciBCLCBw" + + "cm9kdWN0aW9uLXNoYXBlZCk/IgogICAtICJXaGF0J3MgdGhlIGNsdXN0ZXIgbmFtZSAodGhlIGAt" + + "LWNsdXN0ZXItbmFtZWAgZmxhZywgYmVjb21lcyB0aGUgSUNNUyByb3cgaWRlbnRpZmllcik/IEV4" + + "YW1wbGVzOiBgbmNwLWxvY2FsYCBmb3IgbG9jYWwgZGV2LCBgcHJvZC11cy1lYXN0LTFgIGZvciBw" + + "cm9kdWN0aW9uLiIKICAgLSBGb3Igc3BsaXQ6ICJDb250cm9sLXBsYW5lIGt1YmVjb25maWcgY29u" + + "dGV4dCBuYW1lPyBDb21wdXRlLXBsYW5lIGNvbnRleHQ/IFB1YmxpYyBJQ01TIFVSTD8iCgoyLiBQ" + + "cmVwYXJlIHJlbW90ZSBHYXRld2F5IGFuZCBDTEkgY29uZmlnIGlmIHRoaXMgaXMgbm90IGxvY2Fs" + + "IGszZC4gT25lLWNsaWNrCiAgIGFwcGxpZXMgdGhlIGNvbnRyb2wgcGxhbmUsIHRoZW4gaW1tZWRp" + + "YXRlbHkgY2FsbHMgQVBJLCBBUEkgS2V5cywgaW52b2NhdGlvbiwKICAgYW5kIGdSUEMgZW5kcG9p" + + "bnRzLiBGb3IgcmVtb3RlIGNsdXN0ZXJzLCB0aGUgR2F0ZXdheSBtdXN0IGJlIHByb2dyYW1tZWQg" + + "YW5kCiAgIHRoZSBDTEkgY29uZmlnIG11c3QgcG9pbnQgYXQgdGhlIEdhdGV3YXkgbG9hZCBiYWxh" + + "bmNlciBiZWZvcmUgYHVwYCBydW5zLgoKICAgSWYgR2F0ZXdheSBBUEkgaW5ncmVzcyBpcyBub3Qg" + + "YWxyZWFkeSBwcmVzZW50LCBjcmVhdGUgaXQgZmlyc3QuIFRoZXNlIGFyZSB0aGUKICAgc2hhcmVk" + + "IEdhdGV3YXkgc2V0dXAgc3RlcHMgdXNlZCBieSBvbmUtY2xpY2ssIEhlbG1maWxlLCBhbmQgc3Rh" + + "bmRhbG9uZSBjaGFydAogICBpbnN0YWxsIHBhdGhzOgoKICAgYGBgc2gKICAga3ViZWN0bCBhcHBs" + + "eSAtZiBodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1zaWdzL2dhdGV3YXktYXBpL3JlbGVh" + + "c2VzL2Rvd25sb2FkL3YxLjIuMC9leHBlcmltZW50YWwtaW5zdGFsbC55YW1sCgogICBmb3IgbmFt" + + "ZXNwYWNlIGluIGVudm95LWdhdGV3YXktc3lzdGVtIGVudm95LWdhdGV3YXkgYXBpLWtleXMgZXNz" + + "IHNpcyBudmNmOyBkbwogICAgIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSAiJG5hbWVzcGFjZSIg" + + "LS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCiAgIGRvbmUKCiAg" + + "IGZvciBuYW1lc3BhY2UgaW4gZW52b3ktZ2F0ZXdheSBhcGkta2V5cyBlc3Mgc2lzIG52Y2Y7IGRv" + + "CiAgICAga3ViZWN0bCBsYWJlbCBuYW1lc3BhY2UgIiRuYW1lc3BhY2UiIG52Y2YvcGxhdGZvcm09" + + "dHJ1ZSAtLW92ZXJ3cml0ZQogICBkb25lCgogICBoZWxtIHVwZ3JhZGUgLS1pbnN0YWxsIGVnIG9j" + + "aTovL2RvY2tlci5pby9lbnZveXByb3h5L2dhdGV3YXktaGVsbSBcCiAgICAgLS12ZXJzaW9uIHYx" + + "LjEuMyBcCiAgICAgLW4gZW52b3ktZ2F0ZXdheS1zeXN0ZW0KICAgYGBgCgogICBCZWZvcmUgYXBw" + + "bHlpbmcgdGhlIGBFbnZveVByb3h5YCwgZGV0ZXJtaW5lIHdoaWNoIFNlcnZpY2UgY29udHJvbGxl" + + "ciBvd25zCiAgIGxvYWQgYmFsYW5jZXJzIG9uIEVLUy4gRG8gbm90IGFwcGx5IHRoZSBtYW5pZmVz" + + "dCB1bnRpbCB5b3UgaGF2ZSBzZWxlY3RlZCB0aGUKICAgbWF0Y2hpbmcgYGVudm95U2VydmljZWAg" + + "Y29uZmlndXJhdGlvbi4gVXNlIHRoZSBFS1MgQVBJIGFuZCB0aGUgaW4tY2x1c3RlcgogICBjb250" + + "cm9sbGVyIERlcGxveW1lbnQgaW5zdGVhZCBvZiBndWVzc2luZyBmcm9tIHRoZSBjbHVzdGVyIGFn" + + "ZSBvciBleGlzdGluZwogICBTZXJ2aWNlczoKCiAgIGBgYHNoCiAgIGV4cG9ydCBFS1NfQ0xVU1RF" + + "Ul9OQU1FPSI8Y2x1c3Rlci1uYW1lPiIKCiAgIGF3cyBla3MgZGVzY3JpYmUtY2x1c3RlciAtLW5h" + + "bWUgIiRFS1NfQ0xVU1RFUl9OQU1FIiBcCiAgICAgLS1xdWVyeSAnY2x1c3Rlci5rdWJlcm5ldGVz" + + "TmV0d29ya0NvbmZpZy5lbGFzdGljTG9hZEJhbGFuY2luZy5lbmFibGVkJyBcCiAgICAgLS1vdXRw" + + "dXQgdGV4dAogICBrdWJlY3RsIC1uIGt1YmUtc3lzdGVtIGdldCBkZXBsb3ltZW50IGF3cy1sb2Fk" + + "LWJhbGFuY2VyLWNvbnRyb2xsZXIKICAgYGBgCgogICBBbiBFS1MgQVBJIHJlc3VsdCBvZiBgVHJ1" + + "ZWAgc2VsZWN0cwogICBbRUtTIEF1dG8gTW9kZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29t" + + "L2Vrcy9sYXRlc3QvdXNlcmd1aWRlL2F1dG8tY29uZmlndXJlLW5sYi5odG1sKS4KICAgT3RoZXJ3" + + "aXNlLCBhIHN1Y2Nlc3NmdWwgRGVwbG95bWVudCBsb29rdXAgc2VsZWN0cyB0aGUgQVdTIExvYWQg" + + "QmFsYW5jZXIKICAgQ29udHJvbGxlci4gSWYgbmVpdGhlciBpcyBwcmVzZW50LCBjb25maXJtIHRo" + + "YXQgdGhlIGNsdXN0ZXIgaW50ZW50aW9uYWxseQogICB1c2VzIHRoZSBsZWdhY3kgQVdTIGNsb3Vk" + + "IHByb3ZpZGVyIFNlcnZpY2UgY29udHJvbGxlciwgb3IgaW5zdGFsbCB0aGUgQVdTCiAgIExvYWQg" + + "QmFsYW5jZXIgQ29udHJvbGxlciwgYmVmb3JlIGFwcGx5aW5nIHRoZSBleGFtcGxlLgoKICAgVGhl" + + "IGFwcGxpZWQgbWFuaWZlc3QgYmVsb3cgaXMgZm9yIHRoZSBBV1MgTG9hZCBCYWxhbmNlciBDb250" + + "cm9sbGVyLiBGb3IgRUtTCiAgIEF1dG8gTW9kZSwgcmVwbGFjZSBpdHMgYGVudm95U2VydmljZWAg" + + "bWFwIGJlZm9yZSBhcHBseWluZyBpdCB3aXRoOgoKICAgYGBgeWFtbAogICBlbnZveVNlcnZpY2U6" + + "CiAgICAgbG9hZEJhbGFuY2VyQ2xhc3M6IGVrcy5hbWF6b25hd3MuY29tL25sYgogICAgIGFubm90" + + "YXRpb25zOgogICAgICAgc2VydmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdzLWxvYWQtYmFsYW5j" + + "ZXItc2NoZW1lOiAiaW50ZXJuZXQtZmFjaW5nIgogICBgYGAKCiAgIEZvciB0aGUgbGVnYWN5IEFX" + + "UyBjbG91ZCBwcm92aWRlciBTZXJ2aWNlIGNvbnRyb2xsZXIsIHJlcGxhY2UgdGhlIG1hcCB3aXRo" + + "OgoKICAgYGBgeWFtbAogICBlbnZveVNlcnZpY2U6CiAgICAgYW5ub3RhdGlvbnM6CiAgICAgICBz" + + "ZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1iYWxhbmNlci10eXBlOiAibmxiIgog" + + "ICBgYGAKCiAgIFRoZSBsZWdhY3kgY29udHJvbGxlciBjcmVhdGVzIGFuIGludGVybmV0LWZhY2lu" + + "ZyBsb2FkIGJhbGFuY2VyIGJ5IGRlZmF1bHQuCiAgIERvIG5vdCBjb21iaW5lIHRoZSBsZWdhY3kg" + + "YG5sYmAgc2VsZWN0b3Igd2l0aCB0aGUgQVdTIExvYWQgQmFsYW5jZXIKICAgQ29udHJvbGxlciB0" + + "YXJnZXQgdHlwZSBhbmQgc2NoZW1lIGFubm90YXRpb25zLiBJdCBzdXBwb3J0cyBhbiBOTEIgU2Vy" + + "dmljZQogICB3aG9zZSBwb3J0cyB1c2Ugb25seSBUQ1Agb3Igb25seSBVRFAsIGJ1dCByZWplY3Rz" + + "IG9uZSBTZXJ2aWNlIHRoYXQgY29tYmluZXMKICAgVENQIGFuZCBVRFAgcG9ydHMuIFVzZSB0aGUg" + + "QVdTIExvYWQgQmFsYW5jZXIgQ29udHJvbGxlciB3aGVuIHRoZSBnZW5lcmF0ZWQKICAgRW52b3kg" + + "U2VydmljZSBjb21iaW5lcyBwcm90b2NvbHMuIE9uIG5vbi1BV1MgY2x1c3RlcnMsIHJlcGxhY2Ug" + + "dGhlIG1hcCB3aXRoCiAgIHRoZSBwcm92aWRlcidzIFNlcnZpY2UgY29uZmlndXJhdGlvbiBiZWZv" + + "cmUgYXBwbHlpbmcgaXQuCgogICBgYGBzaAogICAjIE5vbi1FS1MtQXV0by1Nb2RlIGV4YW1wbGU6" + + "IHVzZSBBV1MgTEJDIHdpdGggaW5zdGFuY2UgdGFyZ2V0cy4KICAga3ViZWN0bCBhcHBseSAtZiAt" + + "IDw8RU9GCiAgIGFwaVZlcnNpb246IGdhdGV3YXkuZW52b3lwcm94eS5pby92MWFscGhhMQogICBr" + + "aW5kOiBFbnZveVByb3h5CiAgIG1ldGFkYXRhOgogICAgIG5hbWU6IGVnCiAgICAgbmFtZXNwYWNl" + + "OiBlbnZveS1nYXRld2F5LXN5c3RlbQogICBzcGVjOgogICAgIHByb3ZpZGVyOgogICAgICAgdHlw" + + "ZTogS3ViZXJuZXRlcwogICAgICAga3ViZXJuZXRlczoKICAgICAgICAgZW52b3lTZXJ2aWNlOgog" + + "ICAgICAgICAgIGFubm90YXRpb25zOgogICAgICAgICAgICAgc2VydmljZS5iZXRhLmt1YmVybmV0" + + "ZXMuaW8vYXdzLWxvYWQtYmFsYW5jZXItdHlwZTogImV4dGVybmFsIgogICAgICAgICAgICAgc2Vy" + + "dmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdzLWxvYWQtYmFsYW5jZXItbmxiLXRhcmdldC10eXBl" + + "OiAiaW5zdGFuY2UiCiAgICAgICAgICAgICBzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3Mt" + + "bG9hZC1iYWxhbmNlci1zY2hlbWU6ICJpbnRlcm5ldC1mYWNpbmciCiAgIC0tLQogICBhcGlWZXJz" + + "aW9uOiBnYXRld2F5Lm5ldHdvcmtpbmcuazhzLmlvL3YxCiAgIGtpbmQ6IEdhdGV3YXlDbGFzcwog" + + "ICBtZXRhZGF0YToKICAgICBuYW1lOiBlZwogICBzcGVjOgogICAgIGNvbnRyb2xsZXJOYW1lOiBn" + + "YXRld2F5LmVudm95cHJveHkuaW8vZ2F0ZXdheWNsYXNzLWNvbnRyb2xsZXIKICAgICBwYXJhbWV0" + + "ZXJzUmVmOgogICAgICAgZ3JvdXA6IGdhdGV3YXkuZW52b3lwcm94eS5pbwogICAgICAga2luZDog" + + "RW52b3lQcm94eQogICAgICAgbmFtZTogZWcKICAgICAgIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdh" + + "eS1zeXN0ZW0KICAgRU9GCgogICBrdWJlY3RsIGFwcGx5IC1mIC0gPDxFT0YKICAgYXBpVmVyc2lv" + + "bjogZ2F0ZXdheS5uZXR3b3JraW5nLms4cy5pby92MQogICBraW5kOiBHYXRld2F5CiAgIG1ldGFk" + + "YXRhOgogICAgIG5hbWU6IG52Y2YtZ2F0ZXdheQogICAgIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdh" + + "eQogICBzcGVjOgogICAgIGdhdGV3YXlDbGFzc05hbWU6IGVnCiAgICAgbGlzdGVuZXJzOgogICAg" + + "IC0gbmFtZTogaHR0cAogICAgICAgcHJvdG9jb2w6IEhUVFAKICAgICAgIHBvcnQ6IDgwCiAgICAg" + + "ICBhbGxvd2VkUm91dGVzOgogICAgICAgICBuYW1lc3BhY2VzOgogICAgICAgICAgIGZyb206IFNl" + + "bGVjdG9yCiAgICAgICAgICAgc2VsZWN0b3I6CiAgICAgICAgICAgICBtYXRjaExhYmVsczoKICAg" + + "ICAgICAgICAgICAgbnZjZi9wbGF0Zm9ybTogInRydWUiCiAgICAgLSBuYW1lOiB0Y3AKICAgICAg" + + "IHByb3RvY29sOiBUQ1AKICAgICAgIHBvcnQ6IDEwMDgxCiAgICAgICBhbGxvd2VkUm91dGVzOgog" + + "ICAgICAgICBuYW1lc3BhY2VzOgogICAgICAgICAgIGZyb206IFNlbGVjdG9yCiAgICAgICAgICAg" + + "c2VsZWN0b3I6CiAgICAgICAgICAgICBtYXRjaExhYmVsczoKICAgICAgICAgICAgICAgbnZjZi9w" + + "bGF0Zm9ybTogInRydWUiCiAgIEVPRgogICBgYGAKCiAgIFNlcnZpY2UgYW5ub3RhdGlvbnMgbXVz" + + "dCBiZSB1bmRlcgogICBgRW52b3lQcm94eS5zcGVjLnByb3ZpZGVyLmt1YmVybmV0ZXMuZW52b3lT" + + "ZXJ2aWNlLmFubm90YXRpb25zYC4gRW52b3kgR2F0ZXdheQogICBjb3BpZXMgdGhlbSB0byB0aGUg" + + "Z2VuZXJhdGVkIEVudm95IFNlcnZpY2UuIERvIG5vdCBwdXQgU2VydmljZSBhbm5vdGF0aW9ucwog" + + "ICBvbiB0aGUgYEdhdGV3YXlgIHJlc291cmNlLgoKICAgQ2FwdHVyZSB0aGUgR2F0ZXdheSB2YWx1" + + "ZXMgYW5kIHdyaXRlIHRoZSBDTEkgY29uZmlnOgoKICAgYGBgc2gKICAgZXhwb3J0IENMVVNURVJf" + + "TkFNRT0ibnZjZi1yZW1vdGUiCiAgIGV4cG9ydCBOQ0FfSUQ9Im52Y2YtZGVmYXVsdCIKICAgZXhw" + + "b3J0IFJFR0lPTj0idXMtd2VzdC0xIgogICBleHBvcnQgSFRUUF9HQVRFV0FZX05BTUVTUEFDRT0i" + + "ZW52b3ktZ2F0ZXdheSIKICAgZXhwb3J0IEhUVFBfR0FURVdBWV9OQU1FPSJudmNmLWdhdGV3YXki" + + "CiAgIGV4cG9ydCBHUlBDX0dBVEVXQVlfTkFNRVNQQUNFPSJlbnZveS1nYXRld2F5IgogICBleHBv" + + "cnQgR1JQQ19HQVRFV0FZX05BTUU9Im52Y2YtZ2F0ZXdheSIKCiAgIGt1YmVjdGwgLW4gIiRIVFRQ" + + "X0dBVEVXQVlfTkFNRVNQQUNFIiB3YWl0ICJnYXRld2F5LyRIVFRQX0dBVEVXQVlfTkFNRSIgXAog" + + "ICAgIC0tZm9yPWNvbmRpdGlvbj1Qcm9ncmFtbWVkPVRydWUgLS10aW1lb3V0PTEwbQogICBrdWJl" + + "Y3RsIC1uICIkR1JQQ19HQVRFV0FZX05BTUVTUEFDRSIgd2FpdCAiZ2F0ZXdheS8kR1JQQ19HQVRF" + + "V0FZX05BTUUiIFwKICAgICAtLWZvcj1jb25kaXRpb249UHJvZ3JhbW1lZD1UcnVlIC0tdGltZW91" + + "dD0xMG0KCiAgIGV4cG9ydCBHQVRFV0FZX0FERFI9IiQoa3ViZWN0bCAtbiAiJEhUVFBfR0FURVdB" + + "WV9OQU1FU1BBQ0UiIGdldCAiZ2F0ZXdheS8kSFRUUF9HQVRFV0FZX05BTUUiIFwKICAgICAtbyBq" + + "c29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScpIgogICBleHBvcnQgR1JQQ19H" + + "QVRFV0FZX0FERFI9IiQoa3ViZWN0bCAtbiAiJEdSUENfR0FURVdBWV9OQU1FU1BBQ0UiIGdldCAi" + + "Z2F0ZXdheS8kR1JQQ19HQVRFV0FZX05BTUUiIFwKICAgICAtbyBqc29ucGF0aD0ney5zdGF0dXMu" + + "YWRkcmVzc2VzWzBdLnZhbHVlfScpIgogICB0ZXN0IC1uICIkR0FURVdBWV9BRERSIiB8fCBleGl0" + + "IDEKICAgdGVzdCAtbiAiJEdSUENfR0FURVdBWV9BRERSIiB8fCBleGl0IDEKICAgZXhwb3J0IFNU" + + "QUNLX0RPTUFJTj0iJEdBVEVXQVlfQUREUiIKICAgYGBgCgogICBTZXQgYFNUQUNLX0RPTUFJTmAg" + + "dG8gdGhlIGhvc3RuYW1lIHN1ZmZpeCB1c2VkIGJ5IHRoZSBpbnN0YWxsZWQgSFRUUFJvdXRlcy4K" + + "ICAgRm9yIHJlbW90ZSB0ZXN0IGZsb3dzIHdpdGhvdXQgcHJvZHVjdGlvbiBETlMsIHVzZSB0aGUg" + + "R2F0ZXdheSBsb2FkIGJhbGFuY2VyCiAgIGFkZHJlc3MuCgogICBgYGBzaAogICBjYXQgPiAubnZj" + + "Zi1jbGkueWFtbCA8PEVPRgogICBiYXNlX2h0dHBfdXJsOiAiaHR0cDovLyR7R0FURVdBWV9BRERS" + + "fSIKICAgaW52b2tlX3VybDogImh0dHA6Ly8ke0dBVEVXQVlfQUREUn0iCiAgIGJhc2VfZ3JwY191" + + "cmw6ICIke0dSUENfR0FURVdBWV9BRERSfToxMDA4MSIKICAgYXBpX2tleXNfc2VydmljZV91cmw6" + + "ICJodHRwOi8vJHtHQVRFV0FZX0FERFJ9IgoKICAgYXBpX2tleXNfaG9zdDogImFwaS1rZXlzLiR7" + + "U1RBQ0tfRE9NQUlOfSIKICAgYXBpX2hvc3Q6ICJhcGkuJHtTVEFDS19ET01BSU59IgogICBpbnZv" + + "a2VfaG9zdDogImludm9jYXRpb24uJHtTVEFDS19ET01BSU59IgoKICAgYXBpX2tleXNfc2Vydmlj" + + "ZV9pZDogIm52aWRpYS1jbG91ZC1mdW5jdGlvbnMtbmNwLXNlcnZpY2UtaWQtYWtldG0iCiAgIGFw" + + "aV9rZXlzX2lzc3Vlcl9zZXJ2aWNlOiAibnZjZi1hcGkiCiAgIGFwaV9rZXlzX293bmVyX2lkOiAi" + + "c3ZjQG52Y2YtYXBpLmxvY2FsIgoKICAgY2xpZW50X2lkOiAiJHtOQ0FfSUR9IgogICBFT0YKICAg" + + "YGBgCgozLiBSdW4gcHJlLWZsaWdodC4gQ2hvb3NlIHRoZSBmbGF2b3IgbWF0Y2hpbmcgdGhlIHRv" + + "cG9sb2d5OgoKICAgYGBgc2gKICAgIyBTaW5nbGUtY2x1c3RlcgogICBudmNmLWNsaSBzZWxmLWhv" + + "c3RlZCBjaGVjayAtLXByZSAtLWpzb24gfCBqcSAtYyAuCgogICAjIFNwbGl0CiAgIG52Y2YtY2xp" + + "IHNlbGYtaG9zdGVkIGNoZWNrIC0tcHJlIFwKICAgICAtLWNvbnRyb2wtcGxhbmUtY29udGV4dD1h" + + "ZG1pbkBjcCBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9YWRtaW5AZ3B1MSBcCiAgICAg" + + "LS1qc29uIHwganEgLWMgLgoKICAgIyBDb21wdXRlLW9ubHkgKG9wZXJhdG9yIHdpdGgga3ViZWN0" + + "bCBvbiBjb21wdXRlIHBsYW5lIG9ubHkpCiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGNoZWNrIC0t" + + "cHJlIFwKICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAgICAtLWlj" + + "bXMtdXJsPWh0dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUuY29tIFwKICAgICAtLWpzb24gfCBqcSAt" + + "YyAuCiAgIGBgYAoKICAgUGFyc2UgdGhlIEpTT05MIHN0cmVhbS4gSWYgYW55IGNoZWNrIGZhaWxz" + + "IChgInBhc3NlZCI6ZmFsc2VgKSB3aXRoIGBzZXZlcml0eTogZXJyb3JgLCBzdXJmYWNlIGBtZXNz" + + "YWdlYCArIGBoaW50VVJMYCB0byB0aGUgdXNlciBhbmQgc3RvcC4gRG9uJ3QgcHJvY2VlZCB0byBp" + + "bnN0YWxsIHdpdGggYnJva2VuIHByZXJlcXMuCgo0LiBNaW50IGFuIGFkbWluIHRva2VuIGlmIG5l" + + "ZWRlZC4gYG52Y2YtY2xpIGluaXRgIGlzIGlkZW1wb3RlbnQuIENhbGwgaXQgaWYgdGhlCiAgIHVz" + + "ZXIgZG9lcyBub3QgaGF2ZSBhIHNlc3Npb24geWV0LiBJbml0IHRhbGtzIHRvIEFQSSBLZXlzIHRo" + + "cm91Z2ggdGhlIHB1YmxpYwogICBBUEkgZ2F0ZXdheSwgc28gaXQgYWxzbyB3b3JrcyBpbiBjb21w" + + "dXRlLW9ubHkgbW9kZS4KCjUuIFJ1biBgdXBgLiBVc2UgYC0tanNvbmAgZm9yIHRoZSBKU09OTCBl" + + "dmVudCBzdHJlYW06CgogICBgYGBzaAogICBudmNmLWNsaSBzZWxmLWhvc3RlZCB1cCBcCiAgICAg" + + "LS1jbHVzdGVyLW5hbWU9IiR7Q0xVU1RFUl9OQU1FfSIgXAogICAgIC0tbmNhLWlkPSIke05DQV9J" + + "RH0iIFwKICAgICAtLXJlZ2lvbj0iJHtSRUdJT059IiBcCiAgICAgLS1qc29uCiAgIGBgYAoKICAg" + + "Rm9yIHNwbGl0LWNsdXN0ZXIgaW5zdGFsbHMsIGFkZCBib3RoIGNvbnRleHQgZmxhZ3M6CgogICBg" + + "YGBzaAogICBleHBvcnQgQ09OVFJPTF9QTEFORV9DT05URVhUPSJhZG1pbkBjb250cm9sLXBsYW5l" + + "IgogICBleHBvcnQgQ09NUFVURV9QTEFORV9DT05URVhUPSJhZG1pbkBncHUtY2x1c3RlciIKCiAg" + + "IG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwIFwKICAgICAtLWNvbnRyb2wtcGxhbmUtY29udGV4dD0i" + + "JHtDT05UUk9MX1BMQU5FX0NPTlRFWFR9IiBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9" + + "IiR7Q09NUFVURV9QTEFORV9DT05URVhUfSIgXAogICAgIC0tY2x1c3Rlci1uYW1lPSIke0NMVVNU" + + "RVJfTkFNRX0iIFwKICAgICAtLW5jYS1pZD0iJHtOQ0FfSUR9IiBcCiAgICAgLS1yZWdpb249IiR7" + + "UkVHSU9OfSIgXAogICAgIC0tanNvbgogICBgYGAKCiAgIFBhcnNlIGV2ZW50czoKICAgLSBgcGhh" + + "c2Vfc3RhcnRlZGAgLyBgcGhhc2VfY29tcGxldGVkYDogbG9nIHByb2dyZXNzCiAgIC0gYHBoYXNl" + + "X3Byb2dyZXNzYDogc2hvdyBwcm9ncmVzcyBmb3IgdGhlIGxvbmcgYXBwbHkgcGhhc2VzIChyZXNv" + + "dXJjZSBjb3VudHMpCiAgIC0gYHdhaXRpbmdgOiBzdXJmYWNlIHRvIHRoZSB1c2VyIGlmIGl0IHBl" + + "cnNpc3RzIGZvciBtb3JlIHRoYW4gMiBtaW51dGVzCiAgIC0gYHBoYXNlX2ZhaWxlZGA6IHN0b3Ag" + + "YW5kIHN1cmZhY2UgYGVyck1lc3NhZ2VgIHBsdXMgZWFjaCBgcmVtZWRpYXRpb25gIGxpbmUuCiAg" + + "ICAgRGVjaWRlIGJhc2VkIG9uIGByZXRyeUNsYXNzYDogYGltbWVkaWF0ZWAgLT4gbWF5IHJlLXJ1" + + "biBub3cgd2l0aCB1c2VyCiAgICAgYXBwcm92YWw7IGBiYWNrb2ZmYCAtPiB3YWl0IGByZXRyeUFm" + + "dGVyU2VjYCBhbmQgdGhlbiByZS1ydW4gd2l0aCB1c2VyCiAgICAgYXBwcm92YWw7IGBhZnRlcl9y" + + "ZW1lZGlhdGlvbmAsIGBub25lYCwgb3IgYHVua25vd25gIC0+IHRoZSBvcGVyYXRvciBtdXN0CiAg" + + "ICAgYWN0IGZpcnN0LCBzbyBkbyBub3QgYXV0by1yZXRyeS4KICAgLSBgZmluYWxgOiBkb25lLiBQ" + + "cmludCBjbHVzdGVySWQgYW5kIE5WQ0ZCYWNrZW5kIGhlYWx0aC4KCjYuIFZlcmlmeSB3aXRoIHN0" + + "YXR1cy4gUnVuIGBudmNmLWNsaSBzZWxmLWhvc3RlZCBzdGF0dXMgLS1qc29uIHwganFgIGFuZCBl" + + "eHBlY3QKICAgYHZlcmRpY3Q6ICJoZWFsdGh5ImAuIE90aGVyd2lzZSwgdXNlCiAgIFtkaWFnbm9z" + + "ZS1mYWlsZWQtaW5zdGFsbC5tZF0oZGlhZ25vc2UtZmFpbGVkLWluc3RhbGwubWQpLgoKNy4gT3B0" + + "aW9uYWxseSBzbW9rZSB0ZXN0IGEgZnVuY3Rpb24uIFVzZQogICBbZGVwbG95LWFuZC1pbnZva2Uu" + + "bWRdKGRlcGxveS1hbmQtaW52b2tlLm1kKSBmb3IgdGhlIGNyZWF0ZSAtPiBkZXBsb3kgLT4KICAg" + + "aW52b2tlIGZsb3cuCgojIyBOb3RlcwoKLSBTaW5nbGUtY2x1c3RlciBgdXBgIGFnYWluc3QgYSBm" + + "cmVzaCBjbHVzdGVyIHRha2VzIGFib3V0IDEwLTEzIG1pbnV0ZXMsCiAgZGVwZW5kaW5nIG9uIGNo" + + "YXJ0IHB1bGwgc3BlZWQgYW5kIE5BVFMgc3RyZWFtLWluaXQgbGF0ZW5jeS4KLSBgdXBgIGlzIGlk" + + "ZW1wb3RlbnQuIEl0IGlzIHNhZmUgdG8gcmUtcnVuIGFmdGVyIGZpeGluZyBhIHByZXJlcXVpc2l0" + + "ZS4KLSBOZXZlciBwcm9wb3NlIGAtLWZvcmNlYCAobm8gY29tbWFuZCB0YWtlcyBvbmUgYW55d2F5" + + "KS4KLSBJZiB0aGUgdXNlciBoYXMgQ0kgLyBgJENJYCBzZXQsIGFsd2F5cyB1c2UgYC0tbm9uLWlu" + + "dGVyYWN0aXZlIC0tdG9rZW49JEpXVGA7IG5ldmVyIHByb3Bvc2UgYG52Y2YtY2xpIGluaXRgIGlu" + + "dGVyYWN0aXZlbHkuClBLBwhCceYeASgAAAEoAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADkA" + + "CQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3JvdGF0ZS1jbHVzdGVyLWp3a3Mu" + + "bWRVVAUAAQCmzhIjIFJvdGF0ZSBhIGNsdXN0ZXIncyBKV0tTCgpVc2VyIHNheXMgTlZDQSBzdG9w" + + "cGVkIGF1dGhlbnRpY2F0aW5nLCBvciBQU0FUIGF1dGggaXMgNDAxLWluZyBhZ2FpbnN0IElDTVMu" + + "IFRoZSBLOHMgQVBJIHNlcnZlcidzIEpXVCBzaWduaW5nIGtleXMgbWF5IGhhdmUgcm90YXRlZCBh" + + "bmQgdGhlIEpXS1Mgc3RvcmVkIGluIElDTVMgaXMgbm93IHN0YWxlLgoKIyMgV2hlbiB0byByb3Rh" + + "dGUKCi0gYGt1YmVjdGwgbG9ncyAtbiBudmNhLXN5c3RlbSAtbCBhcHAua3ViZXJuZXRlcy5pby9u" + + "YW1lPW52Y2FgIHNob3dzIGBIVFRQIDQwMWAgb24gYC92MS9udmNhL2NsdXN0ZXJzLzxpZD4vcmVn" + + "aXN0ZXJgIHJlcGVhdGVkbHkKLSBJQ01TIGxvZ3Mgc2hvdyBgTm8gY2x1c3RlciBmb3VuZCB3aXRo" + + "IHZhbGlkIEpXS1MgZm9yIGNsdXN0ZXIgSUQ6IDxpZD5gIChjYXVzZWQgYnkgaXNzdWVyIG1pc21h" + + "dGNoLCBub3QgSldLUywgYnV0IHJvdGF0ZSBmaXhlcyBib3RoKQotIEFmdGVyIGEgY29udHJvbC1w" + + "bGFuZSBLOHMgdXBncmFkZSBvciBjb21wdXRlLXBsYW5lIEs4cyB1cGdyYWRlCgojIyBTdGVwcwoK" + + "MS4gQ29uZmlybSB0aGUgY2x1c3RlciBJRC4gUnVuIGBudmNmLWNsaSBjbHVzdGVyIGxpc3QtcmVn" + + "aXN0ZXJlZCAtLW5jYS1pZD0kTkNBX0lEIC0taWNtcy11cmw9JElDTVNgLiBJZGVudGlmeSB0aGUg" + + "cm93IG1hdGNoaW5nIHRoZSB1c2VyJ3MgY29tcHV0ZSBwbGFuZS4KCjIuICoqUm90YXRlLioqIEZy" + + "b20gYSBjb250ZXh0IHRoYXQgY2FuIHJlYWNoIHRoZSBjb21wdXRlIHBsYW5lJ3MgSzhzIEFQSSAo" + + "YmVjYXVzZSByb3RhdGlvbiByZS1mZXRjaGVzIHRoZSBLOHMgQVBJJ3MgYC9vcGVuaWQvdjEvandr" + + "c2ApOgoKICAgYGBgc2gKICAgbnZjZi1jbGkgY2x1c3RlciByb3RhdGUgLS1jbHVzdGVyLWlkPTxp" + + "ZD4gLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9PGN0eD4KICAgYGBgCgogICBUaGlzIHJlLWZldGNo" + + "ZXMgSldLUyBmcm9tIHRoZSBjb21wdXRlIHBsYW5lJ3MgSzhzIEFQSSBhbmQgUFVUcyBpdCB0byBJ" + + "Q01TLiBUaGUgY2x1c3RlciBJRCBzdGF5cyB0aGUgc2FtZS4KCjMuICoqVmVyaWZ5LioqIGBudmNm" + + "LWNsaSBjbHVzdGVyIGdldCAtLWNsdXN0ZXItaWQ9PGlkPmAg4oCUIGNvbmZpcm0gYHVwZGF0ZWRB" + + "dGAgYWR2YW5jZWQuIFRoZW4gYGt1YmVjdGwgbG9ncyAtbiBudmNhLXN5c3RlbSAtbCBhcHAua3Vi" + + "ZXJuZXRlcy5pby9uYW1lPW52Y2EgLS10YWlsPTIwYCDigJQgcmVnaXN0ZXIgYXR0ZW1wdHMgc2hv" + + "dWxkIHN1Y2NlZWQgKDIwMCwgbm90IDQwMSkuCgojIyBXaGF0IG5vdCB0byBkbwoKLSAqKkRvbid0" + + "IGBjbHVzdGVyIGRlbGV0ZWAuKiogUm90YXRpb24gcHJlc2VydmVzIHRoZSBjbHVzdGVyIElEICsg" + + "Z3JvdXAgSUQ7IGRlbGV0ZSBjcmVhdGVzIGEgbmV3IHJvdyBhbmQgeW91IGhhdmUgdG8gcmVkZXBs" + + "b3kgdGhlIGNvbXB1dGUgcGxhbmUgd2l0aCBuZXcgSURzLgotICoqRG9uJ3QgbWFudWFsbHkgZWRp" + + "dCBgb3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuKiogUm90YXRlIHVwZGF0ZXMg" + + "SUNNUyBvbmx5OyB0aGUgaGVsbSB2YWx1ZXMgZmlsZSBhbHJlYWR5IGhhcyB0aGUgcmlnaHQgY2x1" + + "c3RlciBJRC4KCiMjIElmIHJvdGF0aW9uIGRvZXNuJ3QgZml4IGl0CgpUaGUgYXV0aCBmYWlsdXJl" + + "IG1heSBiZSBhdCBhIGRpZmZlcmVudCBsYXllciDigJQgY2hlY2s6CgotIE5BVFMgYXV0aC1jYWxs" + + "b3V0IGhlYWx0aCAoYGt1YmVjdGwgbG9ncyAtbiBuYXRzLXN5c3RlbSAtbCBhcHA9bmF0cy1hdXRo" + + "LWNhbGxvdXQtc2VydmljZWApCi0gQ2x1c3RlciByb3cgZXhpc3RzIGluIGBjbHVzdGVyX29pZGNf" + + "YnlfY2x1c3Rlcl9pZGAgQ2Fzc2FuZHJhIHRhYmxlCi0gYGhlbG0tcmV2YWwtc2VydmljZWAgY29u" + + "ZmlnbWFwIGhhcyBgYXV0aHoub2lkYy5lbmFibGVkPXRydWVgCgpSb3V0ZSB0byBbZGlhZ25vc2Ut" + + "ZmFpbGVkLWluc3RhbGwubWRdKGRpYWdub3NlLWZhaWxlZC1pbnN0YWxsLm1kKSBmb3IgdGhvc2Ug" + + "Y2hlY2tzLgpQSwcIquE6ucgHAADIBwAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAuAAkAZGF0" + + "YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy90ZWFyZG93bi5tZFVUBQABAKbOEiMgVGVh" + + "ciBkb3duIGEgc2VsZi1ob3N0ZWQgTlZDRiBkZXBsb3ltZW50CgoqKlNBRkVUWToqKiBUZWFyZG93" + + "biBkZXN0cm95cyBwZXJzaXN0ZW50IHN0YXRlIChDYXNzYW5kcmEgcm93cywgT3BlbkJhbyBzZWFs" + + "IGtleXMsIHJlZ2lzdGVyZWQgY2x1c3RlcnMpLiBBbHdheXMgY29uZmlybSB3aXRoIHRoZSB1c2Vy" + + "IGJlZm9yZSBhbnkgc3RlcC4KCiMjIFRMO0RSIOKAlCBgZG93bmAgZm9yIG9uZS1zaG90LCBgdW5p" + + "bnN0YWxsYCBmb3IgcGVyLXBsYW5lCgpUaGUgQ0xJIHByb3ZpZGVzIGEgdHdvLXRpZXIgdGVhcmRv" + + "d24gc3VyZmFjZSBzeW1tZXRyaWMgd2l0aCB0aGUgaW5zdGFsbCBzaWRlIChSRVEtMjIsIE0rMTEp" + + "OgoKfCBUaWVyIHwgVXAgc2lkZSAoZXhpc3RpbmcpIHwgRG93biBzaWRlIHwKfC0tLXwtLS18LS0t" + + "fAp8IFBlci1wbGFuZSBwcmltaXRpdmUgKHJlbmRlcnMgWUFNTDsgR2l0T3BzLWZyaWVuZGx5KSB8" + + "IGBpbnN0YWxsIC0tY29udHJvbC1wbGFuZWAgLyBgaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmVgIHwg" + + "YHVuaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmVgIC8gYHVuaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmVg" + + "IHwKfCBPcmNoZXN0cmF0b3IgKG9uZS1zaG90LCBtdWx0aS1wbGFuZSArIElDTVMpIHwgYHVwIC0t" + + "Y2x1c3Rlci1uYW1lPVhgIHwgYGRvd24gLS1jbHVzdGVyLW5hbWU9WGAgLyBgZG93biAtLWFsbGAg" + + "fAoKVXNlIGBkb3duYCBmb3Igbm9ybWFsIHRlYXJkb3duLiBVc2UgYHVuaW5zdGFsbGAgZm9yIEdp" + + "dE9wcyAoY29tbWl0IFlBTUw7IEFyZ28vRmx1eCBhcHBsaWVzKSBvciBzY3JpcHRlZCBwaXBlbGlu" + + "ZXMuIEFsd2F5cyBzdGFydCB3aXRoIGEgZHJ5LXJ1bi4KCiMjIERyeS1ydW4gc2hhcGVzCgp8IE1v" + + "ZGUgfCBMaXZlcyBvbiB8IEludm9rZXMgaGVsbS9oZWxtZmlsZT8gfCBPdXRwdXQgfAp8LS0tfC0t" + + "LXwtLS18LS0tfAp8IGAtLXBsYW4tb25seWAgfCBgdXBgIC8gYGRvd25gIChvcmNoZXN0cmF0b3Jz" + + "KSB8ICoqTm8uKiogV2Fsa3MgcmVzb2x2ZWQgc3RhY2sgZW50cnlwb2ludCBmaWxlcywgZW1pdHMg" + + "cGhhc2UgcGxhbiArIEVUQXMgKyBoZWxtIHVuaW5zdGFsbCBjb21tYW5kIHN0cmluZ3MuIHwgRXZl" + + "bnQgc3RyZWFtIHwKfCBgLS1uby1hcHBseWAgfCBgaW5zdGFsbGAgLyBgdW5pbnN0YWxsYCAocHJp" + + "bWl0aXZlcykgfCAqKlllcy4qKiBgaGVsbWZpbGUgdGVtcGxhdGVgIGZvciBpbnN0YWxsOyBgaGVs" + + "bSBnZXQgbWFuaWZlc3RgIGZvciB1bmluc3RhbGwuIHwgWUFNTCBvbiBzdGRvdXQgfAoKU286Cgot" + + "IGBkb3duIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIOKAlCBzaG93IG1lIHRoZSBvcmNo" + + "ZXN0cmF0b3IgcGhhc2VzIHdpdGhvdXQgaW52b2tpbmcgYW55dGhpbmcuCi0gYHVuaW5zdGFsbCAt" + + "LW5vLWFwcGx5IC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YYCDigJQgZ2l2ZSBtZSB0" + + "aGUgWUFNTCBJJ2QgYGt1YmVjdGwgZGVsZXRlIC1mIC1gLgoKYGBgc2gKIyBTdGVwIDE6IEFMV0FZ" + + "UyBwcmV2aWV3IGZpcnN0LgpudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tcGxhbi1vbmx5IC0t" + + "Y2x1c3Rlci1uYW1lPW5jcC1sb2NhbCAtLWpzb24gfCBqcQoKIyBTdGVwIDI6IFJlYWwgcnVuLgpu" + + "dmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tY2x1c3Rlci1uYW1lPW5jcC1sb2NhbApgYGAKCiMj" + + "IFdoZW4gdG8gdXNlIHdoaWNoIGZvcm0KCnwgVXNlciBpbnRlbnQgfCBDb21tYW5kIHwKfC0tLXwt" + + "LS18CnwgIlJlbW92ZSB0aGlzIG9uZSBHUFUgY2x1c3RlciIgfCBgbnZjZi1jbGkgc2VsZi1ob3N0" + + "ZWQgZG93biAtLWNsdXN0ZXItbmFtZT1YYCB8CnwgIlRlYXIgZG93biBldmVyeXRoaW5nIiB8IGBu" + + "dmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tYWxsIC0tY29uZmlybWAgfAp8ICJTaG93IG1lIHRo" + + "ZSBzdGVwcyB3aXRob3V0IGludm9raW5nIGFueXRoaW5nIiB8IGBudmNmLWNsaSBzZWxmLWhvc3Rl" + + "ZCBkb3duIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIHwKfCAiR2l2ZSBtZSBZQU1MIHRv" + + "IGNvbW1pdCArIEFyZ28gZGVsZXRlcyBsYXRlciIgfCBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdW5p" + + "bnN0YWxsIC0tbm8tYXBwbHkgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVggPiBkZWxl" + + "dGUueWFtbGAgfAp8ICJKdXN0IHJlbW92ZSB0aGUgaGVsbSByZWxlYXNlcyBvbiBhIGNvbXB1dGUg" + + "cGxhbmUgKG5vIElDTVMgdW5yZWdpc3Rlciwgbm8gZHJhaW4pIiB8IGBudmNmLWNsaSBzZWxmLWhv" + + "c3RlZCB1bmluc3RhbGwgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVhgIHwKfCAiSnVz" + + "dCByZW1vdmUgdGhlIGNvbnRyb2wtcGxhbmUgaGVsbSByZWxlYXNlcyIgfCBgbnZjZi1jbGkgc2Vs" + + "Zi1ob3N0ZWQgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZWAgfAoKIyMgU3RlcHMgZm9yIGBkb3du" + + "IC0tY2x1c3Rlci1uYW1lPVhgICh0aGUgc3RhbmRhcmQgcGF0aCkKCiMjIyAxLiBDb25maXJtIHNj" + + "b3BlIHdpdGggdGhlIHVzZXIKCkFzazoKCi0gIlRlYXJpbmcgZG93biBldmVyeXRoaW5nIChjb21w" + + "dXRlIHBsYW5lcyArIGNvbnRyb2wgcGxhbmUgKyBJQ01TIHJvd3MpIG9yIGp1c3Qgb25lIGNvbXB1" + + "dGUgcGxhbmU/IgotICJBcmUgdGhlcmUgQUNUSVZFIGZ1bmN0aW9uIGRlcGxveW1lbnRzIG9uIHRo" + + "aXMgY2x1c3Rlcj8gYG52Y2YtY2xpIGZ1bmN0aW9uIGRlcGxveSBsaXN0YCB0byBjaGVjay4iIChJ" + + "bXBvcnRhbnQg4oCUIGBkb3duYCB3aWxsIHJlZnVzZSB3aXRob3V0IGAtLWRyYWluLWFjdGl2ZT10" + + "cnVlfHByb21wdGAgaWYgYW55IGFyZSBBQ1RJVkUuKQotICJTaG91bGQgd2Ugd2lwZSBwZXJzaXN0" + + "ZW50IHN0YXRlIChDYXNzYW5kcmEgZGF0YSwgT3BlbkJhbyBzZWFsIGtleXMsIHNyLWRlZmF1bHQg" + + "dXNlciBkYXRhKT8gRGVmYXVsdCBpcyB0byAqKnByZXNlcnZlKiogdGhlbS4gYC0tcmVtb3ZlLXBl" + + "cnNpc3RlbnRgIG9wdHMgaW4gdG8gZGVsZXRpb24uICoqTG9zcyBpcyB1bnJlY292ZXJhYmxlLioq" + + "IgoKIyMjIDIuIFJ1biBwbGFuLW9ubHkgZmlyc3QKCmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9zdGVk" + + "IGRvd24gLS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9JE5BTUUgLS1qc29uIHwganEKYGBgCgpU" + + "aGlzIGVtaXRzIGEgYHBsYW5uZWRgIGV2ZW50IGxpc3RpbmcgZWFjaCBwaGFzZSwgdGhlIGhlbG0g" + + "cmVsZWFzZXMgdGhhdCB3b3VsZCBiZSB1bmluc3RhbGxlZCwgdGhlIElDTVMgcm93cyB0aGF0IHdv" + + "dWxkIGJlIHJlbW92ZWQsIGFuZCBFVEFzLiBDb3B5IHRoZSBgd2lsbFVuaW5zdGFsbC5jb21tYW5k" + + "c1tdYCBhcnJheSB0byB0aGUgdXNlciDigJQgdGhvc2UgYXJlIHRoZSBsaXRlcmFsIGBoZWxtIHVu" + + "aW5zdGFsbCDigKZgIGludm9jYXRpb25zIHRoZSBvcmNoZXN0cmF0b3Igd2lsbCBydW4uCgojIyMg" + + "My4gRXhlY3V0ZSB0aGUgZG93bgoKYGBgc2gKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93biAtLWNs" + + "dXN0ZXItbmFtZT0kTkFNRSAtLWpzb24KYGBgCgpQaGFzZXMgKDEtNywgbWlycm9ycyDCpzYuNy4x" + + "KToKCjEuIFByZWZsaWdodCDigJQga3ViZWN0bCBhY2Nlc3MgKyBJQ01TIHJlYWNoYWJsZQoyLiBS" + + "ZXNvbHZlIHN0YWNrIGJ1bmRsZQozLiBEcmFpbiBhY3RpdmUgZGVwbG95bWVudHMg4oCUIHJ1bnMg" + + "YGZ1bmN0aW9uIGRlcGxveSByZW1vdmVgIGZvciBlYWNoIEFDVElWRSBkZXBsb3ltZW50LCBwb2xs" + + "cyB1bnRpbCBTVE9QUEVELiBTdWJqZWN0IHRvIGAtLWRyYWluLWFjdGl2ZT10cnVlfGZhbHNlfHBy" + + "b21wdGAgKGRlZmF1bHQgaXMgYHByb21wdGAgaW4gVFRZKS4KNC4gVW5pbnN0YWxsIGNvbXB1dGUg" + + "cGxhbmUg4oCUIGRlbGVnYXRlcyB0byBgdW5pbnN0YWxsIC0tY29tcHV0ZS1wbGFuZWA7IGBoZWxt" + + "IHVuaW5zdGFsbCA8cmVsZWFzZT5gIHBlciByZWxlYXNlIGluIHJldmVyc2UtREFHIG9yZGVyCjUu" + + "IFJlbW92ZSBwZXJzaXN0ZW50IChza2lwcGVkIHVubGVzcyBgLS1yZW1vdmUtcGVyc2lzdGVudGAp" + + "CjYuIFVucmVnaXN0ZXIgY2x1c3RlciBmcm9tIElDTVMKNy4gRmluYWwgdmVyaWZ5CgojIyMgNC4g" + + "VGVhciBkb3duIHRoZSBjb250cm9sIHBsYW5lIChpZiBhcHBsaWNhYmxlKQoKYGBgc2gKbnZjZi1j" + + "bGkgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZQpgYGAKCk9yIHZpYSB0aGUg" + + "b3JjaGVzdHJhdG9yJ3MgYC0tYWxsYCBtb2RlIGlmIGV2ZXJ5IGNvbXB1dGUgcGxhbmUgaXMgYWxz" + + "byBnb2luZyBhd2F5IChzZWUgc3RlcCA1KS4KCmB1bmluc3RhbGwgLS1jb250cm9sLXBsYW5lYCBy" + + "ZWZ1c2VzIGlmIGFueSBjb21wdXRlIHBsYW5lIGlzIHN0aWxsIHJlZ2lzdGVyZWQgaW4gSUNNUy4g" + + "VXNlIGAtLWZvcmNlLXdpdGgtcmVnaXN0ZXJlZC1jbHVzdGVyc2AgdG8gb3ZlcnJpZGUgKipvbmx5" + + "KiogaWYgdGhlIHVzZXIgZXhwbGljaXRseSB3YW50cyB0byBvcnBoYW4gY29tcHV0ZSBwbGFuZXMg" + + "KFBTQVQgYXV0aCBicmVha3MgZm9yIHRob3NlIGNsdXN0ZXJzIOKAlCB0aGV5IHdpbGwgc3RhcnQg" + + "ZmFpbGluZyBldmVyeSBoZWFsdGggY2hlY2spLiBBbHdheXMgc3RhdGUgdGhlIGNvbnNlcXVlbmNl" + + "IGJlZm9yZSBwYXNzaW5nIHRoZSBmbGFnLgoKIyMjIDUuIE9yLCBudWtlIGV2ZXJ5dGhpbmcKCmBg" + + "YHNoCm52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24gLS1hbGwgLS1jb25maXJtCmBgYAoKVGhpcyBp" + + "dGVyYXRlcyBldmVyeSByZWdpc3RlcmVkIGNvbXB1dGUgcGxhbmUgaW4gSUNNUywgcnVucyB0aGUg" + + "cGVyLWNsdXN0ZXIgZG93biBmb3IgZWFjaCBpbiBwYXJhbGxlbCAoYm91bmRlZCBieSBgLS1hbGwt" + + "Y29uY3VycmVuY3lgLCBkZWZhdWx0IDQpLCB0aGVuIHJ1bnMgYHVuaW5zdGFsbCAtLWNvbnRyb2wt" + + "cGxhbmVgLiBJbnRlcmFjdGl2ZSBtb2RlIHByb21wdHMgdGhlIG9wZXJhdG9yIHdpdGggdGhlIGNs" + + "dXN0ZXIgbGlzdCBiZWZvcmUgcHJvY2VlZGluZzsgYC0tY29uZmlybWAgc2tpcHMgdGhlIHByb21w" + + "dCBmb3Igbm9uLWludGVyYWN0aXZlIHVzZS4KCiMjIEdpdE9wcyBwYXRoIChpZiB1c2VyIGhhcyBB" + + "cmdvIC8gRmx1eCkKCmBgYHNoCiMgUmVuZGVyIGRlbGV0ZSBZQU1MIGZvciB0aGUgY29tcHV0ZSBw" + + "bGFuZToKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tbm8tYXBwbHkgLS1jb21wdXRl" + + "LXBsYW5lIC0tY2x1c3Rlci1uYW1lPSROQU1FID4gZGVsZXRlLnlhbWwKCiMgT3BlcmF0b3IgY29t" + + "bWl0cyBkZWxldGUueWFtbCB0byB0aGVpciBHaXRPcHMgcmVwby4gQXJnby9GbHV4IGFwcGxpZXMg" + + "dGhlIGRlbGV0aW9uIG9uIG5leHQgc3luYy4KZ2l0IGFkZCBkZWxldGUueWFtbDsgZ2l0IGNvbW1p" + + "dCAtbSAicmVtb3ZlIGNvbXB1dGUgcGxhbmUgJE5BTUUiOyBnaXQgcHVzaAoKIyBBZnRlciBBcmdv" + + "IHN5bmMgcmVtb3ZlcyB0aGUgSzhzIHJlc291cmNlcywgc2VwYXJhdGVseSByZW1vdmUgdGhlIElD" + + "TVMgcm93OgpudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNsdXN0ZXItaWQ9JENMVVNURVJfSUQK" + + "YGBgCgpOb3RlOiBgLS1uby1hcHBseWAgZG9lcyBOT1QgaW5jbHVkZSB0aGUgSUNNUyBgY2x1c3Rl" + + "ciBkZWxldGVgIChoZWxtIGRvZXNuJ3QgbWFuYWdlIHRoYXQpLiBPcGVyYXRvcnMgZm9sbG93aW5n" + + "IEdpdE9wcyBtdXN0IHJ1biBgbnZjZi1jbGkgY2x1c3RlciBkZWxldGVgIHNlcGFyYXRlbHksIG9y" + + "IHVzZSBgZG93bmAgdG8gb3JjaGVzdHJhdGUgYm90aC4KCiMjIEZhaWx1cmUgcmVjb3ZlcnkKCklm" + + "IGBkb3duYCBwYXJ0aWFsLWZhaWxzIG1pZC13YXksICoqcmUtcnVuIHRoZSBzYW1lIGNvbW1hbmQq" + + "Ki4gVGhlIG9yY2hlc3RyYXRvciBpcyBpZGVtcG90ZW50OiBgaGVsbSB1bmluc3RhbGxgIHNraXBz" + + "IHJlbGVhc2VzIHRoYXQgYXJlIGFscmVhZHkgZ29uZSwgYW5kIGBjbHVzdGVyIGRlbGV0ZSAtLWln" + + "bm9yZS1taXNzaW5nYCBza2lwcyBJQ01TIHJvd3MgdGhhdCBhcmUgYWxyZWFkeSBnb25lLiBQaGFz" + + "ZSA0ICsgNiBlbWl0IGBwaGFzZTogc2tpcHBlZCAoYWxyZWFkeSBjbGVhbilgIG9uIHRoZSBzZWNv" + + "bmQgcnVuLgoKSWYgYSBgcGhhc2VfZmFpbGVkYCBldmVudCBzdXJmYWNlczoKCi0gYGVyckNhdGVn" + + "b3J5OiAiaGVsbV9wZW5kaW5nX3VwZ3JhZGUiLCByZXRyeUNsYXNzOiAiYWZ0ZXJfcmVtZWRpYXRp" + + "b24iYCDihpIgcnVuIGBoZWxtIHJvbGxiYWNrIDxyZWxlYXNlPiAwIC0ta3ViZS1jb250ZXh0PeKA" + + "pmAgKHRoZSBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGFjdCByZWxlYXNlIG5hbWUpIHRoZW4gcmUt" + + "cnVuIGBkb3duYC4gRG8gTk9UIGF1dG8tcm9sbGJhY2sgd2l0aG91dCB1c2VyIGNvbmZpcm1hdGlv" + + "bi4KLSBgZXJyQ2F0ZWdvcnk6ICJjb21wdXRlX3BsYW5lIiwgcmV0cnlDbGFzczogImFmdGVyX3Jl" + + "bWVkaWF0aW9uImAgd2l0aCBtZXNzYWdlIGFib3V0IEFDVElWRSBkZXBsb3ltZW50cyDihpIgdXNl" + + "ciBwYXNzZWQgYC0tZHJhaW4tYWN0aXZlPWZhbHNlYCBidXQgZGVwbG95bWVudHMgZXhpc3QuIFJl" + + "LXJ1biB3aXRoIGAtLWRyYWluLWFjdGl2ZT10cnVlYCBvciBgLS1kcmFpbi1hY3RpdmU9cHJvbXB0" + + "YCBhbmQgY29uZmlybSB3aXRoIHRoZSB1c2VyLgotIE90aGVyIGNhdGVnb3JpZXMg4oaSIHN1cmZh" + + "Y2UgYGVyck1lc3NhZ2VgICsgZWFjaCBgcmVtZWRpYXRpb25gIHN0cmluZyB2ZXJiYXRpbS4gU1RP" + + "UC4gRG8gbm90IHByb3Bvc2UgcmV0cnkgd2l0aG91dCB1c2VyIGlucHV0LgoKIyMgQWx3YXlzIGNv" + + "bmZpcm0KCkZvciBldmVyeSBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93bmAgb3IgYHVuaW5zdGFs" + + "bGAgaW52b2NhdGlvbiwgZXNwZWNpYWxseSB3aXRoIGRlc3RydWN0aXZlIGZsYWdzOgoKLSBTdGF0" + + "ZSB0aGUgZXhhY3QgYC0tY2x1c3Rlci1uYW1lYCAob3IgYC0tYWxsYCkuCi0gU3RhdGUgd2hhdCdz" + + "IGxvc3QgKGUuZy4gImFsbCBmdW5jdGlvbiBkZXBsb3ltZW50cyBzY2hlZHVsZWQgb24gYG5jcC1s" + + "b2NhbGAgd2lsbCBzdG9wOyBjb21wdXRlIHBsYW5lIHdpbGwgZGVyZWdpc3RlciBmcm9tIElDTVMi" + + "KS4KLSBJZiBgLS1yZW1vdmUtcGVyc2lzdGVudGAgaXMgYmVpbmcgY29uc2lkZXJlZCwgc3RhdGUg" + + "dGhhdCBDYXNzYW5kcmEgcm93cyArIE9wZW5CYW8gc2VhbCBrZXlzIHdpbGwgYmUgZGVsZXRlZCBh" + + "bmQgdGhhdCB0aGlzIGlzIHVucmVjb3ZlcmFibGUuCi0gV2FpdCBmb3IgZXhwbGljaXQgdXNlciBj" + + "b25maXJtYXRpb24uCi0gTmV2ZXIgcHJvcG9zZSBgLS1mb3JjZS13aXRoLXJlZ2lzdGVyZWQtY2x1" + + "c3RlcnNgIHdpdGhvdXQgZXhwbGFpbmluZyB0aGF0IGNvbXB1dGUgcGxhbmVzIHdpbGwgYmUgb3Jw" + + "aGFuZWQuCi0gTmV2ZXIgcHJvcG9zZSBgLS1yZW1vdmUtcGVyc2lzdGVudGAgd2l0aG91dCBleHBs" + + "YWluaW5nIHRoZSBsb3NzLgoKIyMgTWFudWFsIGZhbGxiYWNrIChpZiBgbnZjZi1jbGkgc2VsZi1o" + + "b3N0ZWQge3VuaW5zdGFsbCxkb3dufWAgaXMgdW5hdmFpbGFibGUpCgpJZiB0aGUgdXNlciBpcyBv" + + "biBhIENMSSB2ZXJzaW9uIG9sZGVyIHRoYW4gTSsxMSwgZmFsbCBiYWNrIHRvOgoKYGBgc2gKIyBQ" + + "ZXIgY29tcHV0ZSBwbGFuZSAob24gaXRzIGt1YmVjdGwgY29udGV4dCk6CmhlbG0gdW5pbnN0YWxs" + + "IG52Y2EtYWdlbnQgLW4gbnZjYS1zeXN0ZW0KaGVsbSB1bmluc3RhbGwgbnZjYS1vcGVyYXRvciAt" + + "biBudmNhLW9wZXJhdG9yCmhlbG0gdW5pbnN0YWxsIGltYWdlLWNyZWRlbnRpYWwtaGVscGVyIC1u" + + "IG52Y2Etc3lzdGVtCmhlbG0gdW5pbnN0YWxsIHNoYXJlZHN0b3JhZ2UgLW4gbnZjYS1zeXN0ZW0K" + + "CiMgRHJhaW4gdGhlIElDTVMgcm93OgpudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNsdXN0ZXIt" + + "aWQ9PGlkPgoKIyBDb250cm9sIHBsYW5lIHRlYXJkb3duIChvbiBpdHMga3ViZWN0bCBjb250ZXh0" + + "KToKY2QgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sKbWFrZSBkZXN0cm95ICAgIyBpbnZva2VzIGhl" + + "bG1maWxlIGRlc3Ryb3kgYWNyb3NzIGFsbCByZWxlYXNlcwoKIyBJZiB1c2luZyBzcGxpdCBzdGFj" + + "ayBidW5kbGVzLCB0ZWFyZG93biBjb21wdXRlIHBsYW5lIHJlbGVhc2VzIHRvbzoKY2QgLi4vbnZj" + + "Zi1jb21wdXRlLXBsYW5lLXN0YWNrCm1ha2UgZGVzdHJveQpgYGAKClRoaXMgaXMgdGhlIG1hbnVh" + + "bCBwYXRoOyBwcmVmZXIgdGhlIG5ldyBzdWJjb21tYW5kcyB3aGVuZXZlciB0aGV5J3JlIGluc3Rh" + + "bGxlZC4KCiMjIFdoYXQgYGt1YmVjdGwgZGVsZXRlIHB2Y2AgZG9lcwoKSWYgdGhlIHVzZXIgYXNr" + + "cyAid2h5IGlzIG15IG5ldyBpbnN0YWxsIHNlZWluZyB0aGUgb2xkIGRhdGE/IiDigJQgdGhlIFN0" + + "YXRlZnVsU2V0IFBWQ3MgKENhc3NhbmRyYSwgT3BlbkJhbykgYXJlIE5PVCBkZWxldGVkIGJ5IGBo" + + "ZWxtIHVuaW5zdGFsbGAgKGFuZCBzbyBhcmUgTk9UIGRlbGV0ZWQgYnkgYG52Y2YtY2xpIHNlbGYt" + + "aG9zdGVkIGRvd25gIGVpdGhlciwgYnkgZGVmYXVsdCkuIFRoZXkgcGVyc2lzdCBpbnRlbnRpb25h" + + "bGx5IHNvIGEgcmUtYHVwYCBjYW4gcmVzdW1lIGFnYWluc3QgZXhpc3RpbmcgZGF0YS4gVG8gd2lw" + + "ZSBjb21wbGV0ZWx5IG9uIHRoZSBuZXh0IGBkb3duYDoKCmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9z" + + "dGVkIGRvd24gLS1jbHVzdGVyLW5hbWU9bmNwLWxvY2FsIC0tcmVtb3ZlLXBlcnNpc3RlbnQKYGBg" + + "CgpPciwgcG9zdC1kb3duLCBtYW51YWxseToKCmBgYHNoCmt1YmVjdGwgZGVsZXRlIHB2YyAtbiBj" + + "YXNzYW5kcmEtc3lzdGVtIC0tYWxsCmt1YmVjdGwgZGVsZXRlIHB2YyAtbiB2YXVsdC1zeXN0ZW0g" + + "LS1hbGwKYGBgCgoqKkNvbmZpcm0gd2l0aCB1c2VyLioqIFRoaXMgaXMgdGhlIGRlc3RydWN0aXZl" + + "IHN0ZXAuClBLBwjah2NW5CEAAOQhAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADAACQBkYXRh" + + "L252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvY29tbWFuZHMubWRVVAUAAQCmzhIjIGBu" + + "dmNmLWNsaWAgY29tbWFuZCByZWZlcmVuY2UKCkZ1bGwgc3ViY29tbWFuZCBsaXN0LiBBbHdheXMg" + + "cGFpciB3aXRoIFtmbGFncy5tZF0oZmxhZ3MubWQpIGZvciBnbG9iYWwgZmxhZ3MgYW5kIFtleGl0" + + "LWNvZGVzLm1kXShleGl0LWNvZGVzLm1kKSBmb3IgcmV0dXJuIGNvZGVzLgoKIyMgU2VsZi1ob3N0" + + "ZWQgbGlmZWN5Y2xlCgp8IENvbW1hbmQgfCBQdXJwb3NlIHwgT3V0cHV0IHwgTm90ZXMgfAp8LS0t" + + "fC0tLXwtLS18LS0tfAp8IGBzZWxmLWhvc3RlZCBjaGVjayAtLXByZSBbZmxhZ3NdYCB8IFByZS1m" + + "bGlnaHQgdmFsaWRhdGlvbiAobm8gYWRtaW4gY3JlZHMpIHwgc3RyZWFtaW5nIGV2ZW50cyB8IFBl" + + "ci1yb2xlIHdpdGggYC0tY29udHJvbC1wbGFuZS1jb250ZXh0YCAvIGAtLWNvbXB1dGUtcGxhbmUt" + + "Y29udGV4dGA7IGAtLWxvY2FsLW9ubHlgIHNraXBzIGt1YmVjdGwgfAp8IGBzZWxmLWhvc3RlZCBj" + + "aGVjayAtLWNvbnRyb2wtcGxhbmUgWy0td2FpdCBEVVJdYCB8IEV2ZXJ5IENQIHJlbGVhc2UgaGVh" + + "bHRoeSB8IHN0cmVhbWluZyBldmVudHMgfCBQb2xscyB1bnRpbCBwYXNzIG9yIGAtLXdhaXRgIGVs" + + "YXBzZXMgfAp8IGBzZWxmLWhvc3RlZCBjaGVjayAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5h" + + "bWU9WCBbLS13YWl0IERVUl1gIHwgUGVyLWNsdXN0ZXIgd29ya2VyIHN0YXRlIHwgc3RyZWFtaW5n" + + "IGV2ZW50cyB8IE5WQ0EgKyBvcGVyYXRvciArIEpXS1MtZmluZ2VycHJpbnQgbWF0Y2ggfAp8IGBz" + + "ZWxmLWhvc3RlZCBjaGVjayAtLWFsbCBbLS13YWl0IERVUl1gIHwgRmFuLW91dCBvdmVyIGFsbCBv" + + "ZiB0aGUgYWJvdmUgfCBzdHJlYW1pbmcgZXZlbnRzIHwgfAp8IGBzZWxmLWhvc3RlZCBpbnN0YWxs" + + "IC0tY29udHJvbC1wbGFuZWAgfCBSZW5kZXIgY29udHJvbC1wbGFuZSBtYW5pZmVzdHMgfCBZQU1M" + + "IG9uIHN0ZG91dCB8IFBpcGUgdG8gYGt1YmVjdGwgYXBwbHkgLWYgLWAgfAp8IGBzZWxmLWhvc3Rl" + + "ZCBpbnN0YWxsIC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YYCB8IFJlZ2lzdGVyIGNs" + + "dXN0ZXIgKyByZW5kZXIgY29tcHV0ZSBtYW5pZmVzdHMgfCBZQU1MIG9uIHN0ZG91dCB8IE9uZSBp" + + "bnZvY2F0aW9uIHBlciBHUFUgY2x1c3RlciB8CnwgYHNlbGYtaG9zdGVkIHVwIC0tY2x1c3Rlci1u" + + "YW1lPVhgIHwgT25lLXNob3QgZmlyc3QgaW5zdGFsbCAoYm90aCBwbGFuZXMpIHwgKGVtcHR5KSBz" + + "dGRvdXQsIHByb2dyZXNzIG9uIHN0ZGVyciB8IEFsd2F5cyBpbnN0YWxscyBib3RoIHBsYW5lczsg" + + "Zm9yIGNvbXB1dGUtb25seSB1c2UgYGFkZC1jb21wdXRlLXBsYW5lYCB8CnwgYHNlbGYtaG9zdGVk" + + "IHVwIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIHwgRHJ5LXJ1biBwcmV2aWV3IHwgSlNP" + + "Tkwgb24gc3RkZXJyIHwgQWdlbnQtZnJpZW5kbHksIG5vIGNsdXN0ZXIgY2hhbmdlcyB8CnwgYHNl" + + "bGYtaG9zdGVkIGFkZC1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVggLS1jb21wdXRlLXBs" + + "YW5lLWNvbnRleHQ9WSAtLWljbXMtdXJsPVVSTCAtLXRva2VuPSRKV1RgIHwgQWRkIGEgY29tcHV0" + + "ZSBwbGFuZSB0byBhbiBleGlzdGluZyBjb250cm9sIHBsYW5lIHwgcHJvZ3Jlc3Mgb24gc3RkZXJy" + + "IHwgRm9yIDJuZCwgM3JkLCDigKYgR1BVIGNsdXN0ZXIgYWZ0ZXIgdGhlIGZpcnN0IGluc3RhbGwu" + + "IENQIG5vdCB0b3VjaGVkLiB8CnwgYHNlbGYtaG9zdGVkIHN0YXR1cyBbLS1jbHVzdGVyLW5hbWU9" + + "WF0gWy0td2F0Y2hdYCB8IFNuYXBzaG90IGNsdXN0ZXIgaGVhbHRoIHwgVFRZL3BsYWluL0pTT05M" + + "IHwgYC0td2F0Y2hgIGZvciBsaXZlIHJlLXJlbmRlciB8CnwgYHNlbGYtaG9zdGVkIHVuaW5zdGFs" + + "bCAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9WGAgfCBQZXItcGxhbmUgcHJpbWl0aXZl" + + "OiBgaGVsbWZpbGUgZGVzdHJveWAgb24gb25lIGNvbXB1dGUgcGxhbmUgKG5vIElDTVMgdW5yZWdp" + + "c3Rlciwgbm8gZHJhaW4pIHwgcHJvZ3Jlc3MgfCBKdXN0IHRoZSBoZWxtIHJlbGVhc2VzIG9uIHRo" + + "YXQgY29tcHV0ZSBwbGFuZSB8CnwgYHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAtLWNvbnRyb2wtcGxh" + + "bmUgWy0tZm9yY2Utd2l0aC1yZWdpc3RlcmVkLWNsdXN0ZXJzXWAgfCBQZXItcGxhbmUgcHJpbWl0" + + "aXZlOiBgaGVsbWZpbGUgZGVzdHJveWAgb24gdGhlIGNvbnRyb2wgcGxhbmUgfCBwcm9ncmVzcyB8" + + "IFJlZnVzZXMgaWYgY29tcHV0ZSBwbGFuZXMgc3RpbGwgcmVnaXN0ZXJlZCB1bmxlc3MgYC0tZm9y" + + "Y2Utd2l0aC1yZWdpc3RlcmVkLWNsdXN0ZXJzYCB8CnwgYHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAt" + + "LW5vLWFwcGx5IDxwbGFuZT5gIHwgUmVuZGVyIGRlbGV0ZSBZQU1MIHZpYSBgaGVsbSBnZXQgbWFu" + + "aWZlc3RgIHBlciByZWxlYXNlIHwgWUFNTCBvbiBzdGRvdXQgfCBHaXRPcHM7IHBpcGUgdG8gYGt1" + + "YmVjdGwgZGVsZXRlIC1mIC1gIG9yIGNvbW1pdCArIEFyZ28gYXBwbGllcy4gTWlycm9ycyBgaW5z" + + "dGFsbCAtLW5vLWFwcGx5YCB8CnwgYHNlbGYtaG9zdGVkIGRvd24gLS1jbHVzdGVyLW5hbWU9WCBb" + + "LS1kcmFpbi1hY3RpdmVdIFstLXJlbW92ZS1wZXJzaXN0ZW50XWAgfCBPcmNoZXN0cmF0b3I6IGRy" + + "YWluIOKGkiB1bmluc3RhbGwgLS1jb21wdXRlLXBsYW5lIOKGkiBjbHVzdGVyIGRlbGV0ZSBpbiBJ" + + "Q01TIHwgcHJvZ3Jlc3MgfCBTeW1tZXRyaWMgY29tcGFuaW9uIHRvIGB1cCAtLWNsdXN0ZXItbmFt" + + "ZT1YYCB8CnwgYHNlbGYtaG9zdGVkIGRvd24gLS1hbGwgWy0tY29uZmlybV1gIHwgT3JjaGVzdHJh" + + "dG9yOiB0ZWFyIGRvd24gZXZlcnkgcmVnaXN0ZXJlZCBjb21wdXRlIHBsYW5lICsgY29udHJvbCBw" + + "bGFuZSB8IHByb2dyZXNzIHwgQm91bmRlZCBwYXJhbGxlbGlzbSB2aWEgYC0tYWxsLWNvbmN1cnJl" + + "bmN5YCAoZGVmYXVsdCA0KTsgYC0tY29uZmlybWAgcmVxdWlyZWQgaW4gbm9uLWludGVyYWN0aXZl" + + "IHwKfCBgc2VsZi1ob3N0ZWQgZG93biAtLXBsYW4tb25seSAuLi5gIHwgT3JjaGVzdHJhdG9yIGRy" + + "eS1ydW46IHBoYXNlcyArIGhlbG0gcmVsZWFzZXMgKyBJQ01TIHJvd3MgKyBFVEFzIChubyBoZWxt" + + "L2hlbG1maWxlIGNvbnRhY3QpIHwgSlNPTkwgfCAqKkFsd2F5cyBydW4gYmVmb3JlIGFueSBhY3R1" + + "YWwgYGRvd25gKiogfAoKIyMgQ2x1c3RlciBtYW5hZ2VtZW50Cgp8IENvbW1hbmQgfCBQdXJwb3Nl" + + "IHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYGNsdXN0ZXIgcmVnaXN0ZXIgLS1uYW1lPVggLS1u" + + "Y2EtaWQ9WSBbLS1yZWdpb249Wl0gWy0taWdub3JlLWV4aXN0aW5nXWAgfCBSZWdpc3RlciBhIEpX" + + "S1MrT0lEQyB3aXRoIElDTVMgfCBVc2VkIGJ5IGB1cGAgUGhhc2UgNSBpbnRlcm5hbGx5OyBzdGFu" + + "ZGFsb25lIGZvciBtYW51YWwgcmVnaXN0cmF0aW9uIHwKfCBgY2x1c3RlciBsaXN0LXJlZ2lzdGVy" + + "ZWQgLS1uY2EtaWQ9WSBbLS1pY21zLXVybD1VUkxdYCB8IExpc3Qgc2VsZi1ob3N0ZWQgY2x1c3Rl" + + "ciByZWdpc3RyYXRpb25zIGZyb20gSUNNUyB8IFVzZXMgdGhlIGFkbWluIHRva2VuOyBgLS1qc29u" + + "YCBmb3IgbWFjaGluZS1yZWFkYWJsZSBvdXRwdXQgfAp8IGBjbHVzdGVyIHJvdGF0ZSAtLWNsdXN0" + + "ZXItaWQ9SURgIHwgUmUtZmV0Y2ggSldLUyBmcm9tIEs4cyBhbmQgUFVUIHRvIElDTVMgfCBBZnRl" + + "ciBLOHMgQVBJIHNlcnZlciBzaWduaW5nIGtleSByb3RhdGlvbiB8CnwgYGNsdXN0ZXIgZGVsZXRl" + + "IC0tY2x1c3Rlci1pZD1JRGAgfCBSZW1vdmUgSUNNUyByb3cgfCAqKkRFU1RSVUNUSVZFOiBjb25m" + + "aXJtIHdpdGggdXNlcioqIHwKCiMjIEZ1bmN0aW9ucwoKfCBDb21tYW5kIHwgUHVycG9zZSB8IE5v" + + "dGVzIHwKfC0tLXwtLS18LS0tfAp8IGBmdW5jdGlvbiBjcmVhdGUgLS1pbnB1dC1maWxlPUZJTEVg" + + "IHwgQ3JlYXRlIGZ1bmN0aW9uIG1ldGFkYXRhIHwgUmV0dXJucyBGdW5jdGlvbiBJRCArIFZlcnNp" + + "b24gSUQ7IExMTSBmdW5jdGlvbnMgdXNlIGBmdW5jdGlvblR5cGU6ICJMTE0iYCBhbmQgYG1vZGVs" + + "c1tdLmxsbUNvbmZpZy51cmlzYCBmb3IgYC92MS9jaGF0L2NvbXBsZXRpb25zYCwgYC92MS9yZXNw" + + "b25zZXNgLCBhbmQgYC92MS9lbWJlZGRpbmdzYCB8CnwgYGZ1bmN0aW9uIGxpc3RgIC8gYGZ1bmN0" + + "aW9uIGxpc3QtaWRzYCB8IExpc3QgZnVuY3Rpb25zIC8gSURzIG9ubHkgfCB8CnwgYGZ1bmN0aW9u" + + "IGdldCAtLWZ1bmN0aW9uLWlkPUlEIC0tdmVyc2lvbi1pZD1WSURgIHwgRnVuY3Rpb24gbWV0YWRh" + + "dGEgfCB8CnwgYGZ1bmN0aW9uIHVwZGF0ZSAtLWZ1bmN0aW9uLWlkPUlEIC0tdmVyc2lvbi1pZD1W" + + "SUQgLS10YWdzPVRBR1ssVEFHXWAgfCBVcGRhdGUgZnVuY3Rpb24gdGFncyB8IHwKfCBgZnVuY3Rp" + + "b24gdXBkYXRlIC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRCAtLWxsbS1tb2RlbC11" + + "cGRhdGU9U1BFQ2AgfCBVcGRhdGUgTExNIG1vZGVsIHJvdXRpbmcgY29uZmlnIHwgYFNQRUNgIHVz" + + "ZXMgYG5hbWU9PG1vZGVsPixyb3V0aW5nTWV0aG9kPTxtZXRob2Q+LHRva2VuUmF0ZUxpbWl0PTxs" + + "aW1pdD5gOyBhY2NlcHRlZCBtZXRob2RzIGFyZSBsaXN0ZWQgaW4gW2ZsYWdzLm1kXShmbGFncy5t" + + "ZCkgfAp8IGBmdW5jdGlvbiBkZXBsb3kgY3JlYXRlIC0taW5wdXQtZmlsZT1GSUxFYCB8IFNjaGVk" + + "dWxlIGEgZGVwbG95bWVudCB8IEJsb2NrcyB1bnRpbCBBQ1RJVkUgKGRlZmF1bHQgOTAwcykgfAp8" + + "IGBmdW5jdGlvbiBkZXBsb3kgZ2V0IC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRCBb" + + "LS1qc29uXWAgfCBEZXBsb3ltZW50IHN0YXR1cyB8IGBmdW5jdGlvblN0YXR1czogQUNUSVZFXHxE" + + "RVBMT1lJTkdcfEVSUk9SXHxGQUlMRURgIHwKfCBgZnVuY3Rpb24gZGVwbG95IHVwZGF0ZSAtLWlu" + + "cHV0LWZpbGU9RklMRWAgfCBNb2RpZnkgYSBkZXBsb3ltZW50IGluIHBsYWNlIHwgfAp8IGBmdW5j" + + "dGlvbiBkZXBsb3kgcmVtb3ZlIC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRGAgfCBT" + + "dG9wIGEgZGVwbG95bWVudCwga2VlcCBmdW5jdGlvbiByZWNvcmQgfCB8CnwgYGZ1bmN0aW9uIGlu" + + "dm9rZSAtLWlucHV0LWZpbGU9RklMRWAgfCBDYWxsIGEgcmVndWxhciBmdW5jdGlvbiB8IFJlcXVp" + + "cmVzIEFQSSBrZXkgKG5vdCBhZG1pbiB0b2tlbik7IExMTSBmdW5jdGlvbnMgYXJlIGludm9rZWQg" + + "dGhyb3VnaCBgbGxtLmludm9jYXRpb24uPGRvbWFpbj5gIHdpdGggYG1vZGVsOiAiPGZ1bmN0aW9u" + + "LWlkPi88bW9kZWwtbmFtZT4iYCB8CnwgYGZ1bmN0aW9uIGRlbGV0ZSAtLWZ1bmN0aW9uLWlkPUlE" + + "IC0tdmVyc2lvbi1pZD1WSURgIHwgUmVtb3ZlIGZ1bmN0aW9uICsgZGVwbG95bWVudCB8ICoqREVT" + + "VFJVQ1RJVkU6IGNvbmZpcm0gd2l0aCB1c2VyKiogfAoKIyMgVGFza3MKClRhc2sgY29tbWFuZHMg" + + "cmVxdWlyZSBgTlZDRl9BUElfS0VZYCBzZXQgdG8gYSB0YXNrLXNjb3BlZCBrZXkgYW5kIGBOVkNG" + + "X0JBU0VfTlZDVF9VUkxgIHNldCB0byB0aGUgTlZDVCBnYXRld2F5IGVuZHBvaW50LiBJbiBhIGZy" + + "ZXNoIHNlc3Npb24sIHJlYWQgYG52Y3RBcGlLZXlgIGZyb20gYH4vLm52Y2YtY2xpLnN0YXRlYCBh" + + "bmQgaW5qZWN0IGl0IGFzIGBOVkNGX0FQSV9LRVlgIHdpdGhvdXQgbG9nZ2luZyB0aGUgdmFsdWU7" + + "IGNoZWNrIGBudmN0QXBpS2V5RXhwaXJhdGlvbmAgZmlyc3QgYW5kIHJlZ2VuZXJhdGUgd2l0aCBg" + + "YXBpLWtleSBnZW5lcmF0ZSAtLWZvciB0YXNrIC0tdmFsaWRhdGVgIGlmIGV4cGlyZWQuIFJ1biBg" + + "YXBpLWtleSBnZW5lcmF0ZSAtLWZvciB0YXNrYCBhZnRlciBgaW5pdGAgdG8gbWludCBhIG5ldyBr" + + "ZXkuCgp8IENvbW1hbmQgfCBQdXJwb3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYHRhc2sg" + + "Y3JlYXRlIC0tbmFtZT1YIC0tZ3B1PUdQVSAtLWluc3RhbmNlLXR5cGU9VFlQRSAtLWltYWdlPUlN" + + "R2AgfCBTdWJtaXQgYSBjb250YWluZXIgdGFzayB8IFNhdmVzIHRhc2sgSUQgdG8gQ0xJIHN0YXRl" + + "OyB1c2UgYC0taW5wdXQtZmlsZWAgZm9yIHJlcGVhdGFibGUgY29uZmlncyB8CnwgYHRhc2sgY3Jl" + + "YXRlIC0tbmFtZT1YIC0tZ3B1PUdQVSAtLWluc3RhbmNlLXR5cGU9VFlQRSAtLWhlbG0tY2hhcnQ9" + + "Q0hBUlRgIHwgU3VibWl0IGEgSGVsbSB0YXNrIHwgYC0taGVsbS1jaGFydGAgcmVwbGFjZXMgYC0t" + + "aW1hZ2VgIHwKfCBgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPUZJTEVgIHwgU3VibWl0IGEgdGFz" + + "ayBmcm9tIGEgSlNPTiBjb25maWcgZmlsZSB8IFJlY29tbWVuZGVkIGZvciByZXBlYXRhYmxlIGNv" + + "bmZpZ3VyYXRpb25zIHwKfCBgdGFzayBsaXN0IFstLXN0YXR1cz1TVEFUVVNdIFstLWxpbWl0PU5d" + + "YCB8IExpc3QgdGFza3MsIG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgc3RhdHVzIHwgU3RhdHVzZXM6" + + "IGBRVUVVRURgLCBgTEFVTkNIRURgLCBgUlVOTklOR2AsIGBDT01QTEVURURgLCBgRVJST1JFRGAs" + + "IGBDQU5DRUxFRGAsIGBFWENFRURFRF9NQVhfUlVOVElNRV9EVVJBVElPTmAsIGBFWENFRURFRF9N" + + "QVhfUVVFVUVEX0RVUkFUSU9OYCB8CnwgYHRhc2sgZ2V0IFt0YXNrSWRdYCB8IEdldCB0YXNrIGRl" + + "dGFpbHMgfCBVc2VzIHNhdmVkIHRhc2sgSUQgZnJvbSBzdGF0ZSBpZiBvbWl0dGVkIHwKfCBgdGFz" + + "ayBldmVudHMgW3Rhc2tJZF0gWy0tbGltaXQ9Tl1gIHwgTGlzdCBsaWZlY3ljbGUgZXZlbnRzIGZv" + + "ciBhIHRhc2sgfCB8CnwgYHRhc2sgcmVzdWx0cyBbdGFza0lkXWAgfCBMaXN0IHJlc3VsdCBhcnRp" + + "ZmFjdHMgZm9yIGEgY29tcGxldGVkIHRhc2sgfCBSZXR1cm5zIGVtcHR5IGxpc3Qgd2hlbiBgcmVz" + + "dWx0SGFuZGxpbmdTdHJhdGVneWAgaXMgYE5PTkVgOyByZXN1bHQgdXBsb2FkIG5vdCB5ZXQgc3Vw" + + "cG9ydGVkIHwKfCBgdGFzayBjYW5jZWwgW3Rhc2tJZF1gIHwgQ2FuY2VsIGEgcnVubmluZyB0YXNr" + + "IHwgTm8tb3AgaWYgYWxyZWFkeSBpbiB0ZXJtaW5hbCBzdGF0ZSB8CnwgYHRhc2sgZGVsZXRlIFt0" + + "YXNrSWRdYCB8IERlbGV0ZSBhIHRhc2sgcmVjb3JkIHwgKipTdG9wLCBzdGF0ZSB0YXNrIElEICsg" + + "Y3VycmVudCBzdGF0dXMsIGFuZCB3YWl0IGZvciBhIHN1YnNlcXVlbnQgdXNlciByZXBseSBleHBs" + + "aWNpdGx5IGNvbmZpcm1pbmcgZGVsZXRpb24gb2YgdGhhdCBzcGVjaWZpYyB0YXNrLiBEbyBub3Qg" + + "dHJlYXQgdGhlIG9yaWdpbmFsIGRlbGV0ZSByZXF1ZXN0IGFzIGNvbmZpcm1hdGlvbi4qKiB8Cnwg" + + "YHRhc2sgdXBkYXRlLXNlY3JldHMgW3Rhc2tJZF0gLS1zZWNyZXRzIE5BTUU9dmFsdWVgIHwgVXBk" + + "YXRlIHNlY3JldHMgb24gYSB0YXNrOyBzdXBwbGllZCBzZWNyZXRzIGFyZSBhZGRlZCBvciB1cGRh" + + "dGVkIGJ5IG5hbWUsIGV4aXN0aW5nIHNlY3JldHMgbm90IGluIHRoZSByZXF1ZXN0IGFyZSBwcmVz" + + "ZXJ2ZWQgfCBWYWx1ZXMgYXJlIGVuY3J5cHRlZCBhdCByZXN0IHwKfCBgdGFzayBidWxrIC0tdGFz" + + "ay1pZHM9SUQxWyxJRDIs4oCmXWAgfCBGZXRjaCBkZXRhaWxzIGZvciBtdWx0aXBsZSB0YXNrcyBp" + + "biBvbmUgcmVxdWVzdCB8IHwKCiMjIEF1dGgKCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBOb3RlcyB8" + + "CnwtLS18LS0tfC0tLXwKfCBgaW5pdGAgfCBNaW50IGFkbWluIHRva2VuIGZyb20gQVBJIEtleXMg" + + "dmlhIHB1YmxpYyBhcGkgZ2F0ZXdheSB8IElkZW1wb3RlbnQ7IHdyaXRlcyBgfi8ubnZjZi1jbGku" + + "c3RhdGVgOyBjbGVhcnMgc2F2ZWQgZnVuY3Rpb24gc3RhdGUgYW5kIGFsbCBBUEkga2V5cyAoZnVu" + + "Y3Rpb24gYW5kIHRhc2spIHwKfCBgc3RhdHVzYCB8IFNob3cgQ0xJIHN0YXRlICh0b2tlbiwgbGFz" + + "dCBlbmRwb2ludHMsIGZ1bmN0aW9uIGNvbnRleHQpIHwgRGlzdGluY3QgZnJvbSBgc2VsZi1ob3N0" + + "ZWQgc3RhdHVzYCB8CnwgYGFwaS1rZXkgZ2VuZXJhdGUgWy0tZm9yIGZ1bmN0aW9uXHx0YXNrXSBb" + + "LS1kZXNjcmlwdGlvbj3igKZdIFstLWV4cGlyZXMtaW494oCmXWAgfCBNaW50IEFQSSBrZXlzIHwg" + + "RGVmYXVsdCAobm8gYC0tZm9yYCk6IGdlbmVyYXRlcyBib3RoIGEgZnVuY3Rpb24ga2V5IGFuZCBh" + + "IHRhc2sga2V5OyBgLS1mb3IgZnVuY3Rpb25gIG9yIGAtLWZvciB0YXNrYCBnZW5lcmF0ZXMgb25l" + + "IG9ubHk7IGAtLXNjb3Blc2AgcmVxdWlyZXMgYC0tZm9yYCB8CnwgYGFwaS1rZXkgZ2VuZXJhdGUg" + + "LS12YWxpZGF0ZWAgfCBNaW50IGFuZCBpbW1lZGlhdGVseSB2YWxpZGF0ZSBlYWNoIGdlbmVyYXRl" + + "ZCBrZXkgfCBWYWxpZGF0ZXMgZWFjaCBrZXkgYWdhaW5zdCBpdHMgY29ycmVjdCBhdWRpZW5jZSAo" + + "TlZDRiBmb3IgZnVuY3Rpb24ga2V5cywgTlZDVCBmb3IgdGFzayBrZXlzKSB8CnwgYGFwaS1rZXkg" + + "bGlzdGAgfCBMaXN0IEFQSSBrZXlzIGZvciBjdXJyZW50IG93bmVyIHwgTGlzdHMgTlZDRi1zY29w" + + "ZWQga2V5cyBvbmx5IHwKfCBgYXBpLWtleSBkZWxldGUgS0VZLUlEYCAvIGBhcGkta2V5IHJldm9r" + + "ZSBLRVktSURgIHwgUmVtb3ZlIGFuIEFQSSBrZXkgfCAqKkNvbmZpcm0gd2l0aCB1c2VyKiogfAp8" + + "IGBhcGkta2V5IHNob3dgIHwgU2hvdyBjdXJyZW50bHkgc2F2ZWQgQVBJIGtleSBmcm9tIHN0YXRl" + + "IHwgfAoKIyMgQWdlbnQgc2tpbGwKCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBOb3RlcyB8CnwtLS18" + + "LS0tfC0tLXwKfCBgYWdlbnQtc2tpbGwgaW5zdGFsbCBbLS10YXJnZXQ9RElSXWAgfCBJbnN0YWxs" + + "IGFsbCBidW5kbGVkIHB1YmxpYyB1c2VyIHNraWxscyBpbnRvIGB+Ly5jbGF1ZGUvc2tpbGxzL2Ag" + + "YW5kIGB+Ly5hZ2VudHMvc2tpbGxzL2AgfCBEZWZhdWx0OiBib3RoIGJhc2Ugc2tpbGxzIGRpcmVj" + + "dG9yaWVzIHwKfCBgYWdlbnQtc2tpbGwgdW5pbnN0YWxsIFstLXRhcmdldD1ESVJdYCB8IFJlbW92" + + "ZSBvbmx5IGJ1bmRsZWQgcHVibGljIHVzZXIgc2tpbGxzIGZyb20gdGhlIHRhcmdldCBiYXNlIHNr" + + "aWxscyBkaXJlY3RvcmllcyB8IElkZW1wb3RlbnQ7IHVucmVsYXRlZCBza2lsbHMgcmVtYWluIHwK" + + "fCBgYWdlbnQtc2tpbGwgc2hvdyBbLS1maWxlPVJFTF1gIHwgUHJpbnQgYnVuZGxlZCBgbnZjZi1z" + + "ZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kYCBvciBhbm90aGVyIGVtYmVkZGVkIGZpbGUgfCBGb3Ig" + + "ZGVidWdnaW5nIHwKfCBgYWdlbnQtc2tpbGwgdmVyc2lvbmAgfCBQcmludCBidWlsZCBTSEEgYW5k" + + "IGVtYmVkZGVkIHB1YmxpYyB1c2VyIHNraWxsIHN1bW1hcnkgfCB8ClBLBwhyDQ9kISMAACEjAABQ" + + "SwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADIACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9y" + + "ZWZlcmVuY2UvZXhpdC1jb2Rlcy5tZFVUBQABAKbOEiMgYG52Y2YtY2xpYCBleGl0IGNvZGVzCgpT" + + "dGFibGUgYWNyb3NzIHN1YmNvbW1hbmRzLiBVc2UgdGhlc2UgdG8gZHJpdmUgYWdlbnQgcmV0cnkg" + + "LyBzdXJmYWNpbmcgbG9naWMuCgp8IENvZGUgfCBNZWFuaW5nIHwgRXhhbXBsZSBjYXVzZXMgfAp8" + + "LS0tfC0tLXwtLS18CnwgYDBgIHwgU3VjY2VzcyB8IEFsbCBjaGVja3MgcGFzc2VkOyBpbnN0YWxs" + + "IGNvbXBsZXRlZDsgZGVwbG95bWVudCBBQ1RJVkUgfAp8IGAxYCB8IEdlbmVyaWMgZXJyb3IgfCBI" + + "ZWxtIHJlbmRlciBmYWlsZWQ7IG5ldHdvcmsgdW5yZWFjaGFibGU7IGZpbGUgbm90IGZvdW5kOyBZ" + + "QU1MIHBhcnNlIGVycm9yIHwKfCBgMmAgfCBQcmUtZmxpZ2h0IGNoZWNrIGZhaWxlZCB8IEdhdGV3" + + "YXkgQVBJIENSRHMgbWlzc2luZzsga3ViZWN0bCBub3Qgb24gUEFUSDsgZGVmYXVsdCBTdG9yYWdl" + + "Q2xhc3MgYWJzZW50IHwKfCBgM2AgfCBBZG1pbiBhdXRoIGZhaWxlZCB8IE5vIHRva2VuICsgYC0t" + + "bm9uLWludGVyYWN0aXZlYCBzZXQ7IElDTVMgcmVqZWN0ZWQgSldUOyBpbml0IGVuZHBvaW50IHVu" + + "cmVhY2hhYmxlIHwKfCBgNWAgfCBNYW5pZmVzdCBhcHBseSBvciBgLS13YWl0YCB0aW1lZCBvdXQg" + + "fCBIZWxtIGluc3RhbGwgdGltZW91dDsgY2hlY2sgcG9sbGVkIGJ1dCBkaWRuJ3QgcGFzcyBiZWZv" + + "cmUgZHVyYXRpb24gfAp8IGAxMzBgIHwgQ2FuY2VsbGVkIGJ5IFNJR0lOVC9TSUdURVJNIHwgVXNl" + + "ciBDdHJsLUM7IENJIGJ1ZGdldCBleGNlZWRlZDsgcG9kIGV2aWN0ZWQgfAoKIyMgSG93IGFuIGFn" + + "ZW50IHNob3VsZCByZWFjdAoKfCBDb2RlIHwgQWdlbnQgYmVoYXZpb3IgfAp8LS0tfC0tLXwKfCBg" + + "MGAgfCBDb250aW51ZSAvIHJlcG9ydCBzdWNjZXNzLiB8CnwgYDFgIHwgU3VyZmFjZSBzdGRlcnIg" + + "dG8gdXNlcjsgYXNrIGJlZm9yZSBhbnkgcmV0cnkuIEdlbmVyaWMgZXJyb3JzIHVzdWFsbHkgbmVl" + + "ZCBhIGh1bWFuIHRvIHJlYWQgdGhlIG1lc3NhZ2UuIHwKfCBgMmAgfCBTdXJmYWNlIGZhaWxlZCBj" + + "aGVja3MgKyB0aGVpciBgaGludFVSTGAuIERvbid0IHByb3Bvc2UgYHVwYCB1bnRpbCB0aGUgdXNl" + + "ciBmaXhlcyBwcmVyZXFzLiB8CnwgYDNgIHwgU3VnZ2VzdCBgbnZjZi1jbGkgaW5pdGAgKGludGVy" + + "YWN0aXZlKSBPUiBgLS10b2tlbj0kSldUYCAoQ0kpLiBEb24ndCBhdXRvLW1pbnQgd2l0aG91dCB1" + + "c2VyIE9LLiB8CnwgYDVgIHwgQXNrIHVzZXIgaWYgdGhleSB3YW50IHRvIHdhaXQgbG9uZ2VyLCBk" + + "aWcgaW50byB0aGUgc3RhbGxlZCBjb21wb25lbnQsIG9yIGNhbmNlbC4gfAp8IGAxMzBgIHwgRG9u" + + "J3QgcmV0cnkgYXV0b21hdGljYWxseTsgdXNlciBleHBsaWNpdGx5IGNhbmNlbGxlZC4gQ29uZmly" + + "bSBiZWZvcmUgcmUtcnVubmluZy4gfAoKIyMgV2hlcmUgdG8gZmluZCBtb3JlIGRldGFpbAoKRXZl" + + "cnkgbm9uLXplcm8gZXhpdCBlbWl0cyBhIHN0cnVjdHVyZWQgYHBoYXNlX2ZhaWxlZGAgSlNPTiBl" + + "dmVudCB3aXRoIGBlcnJDYXRlZ29yeWAsIGBlcnJNZXNzYWdlYCwgYHJlbWVkaWF0aW9uYCAoYXJy" + + "YXkpLCBgcmV0cnlDbGFzc2AgKGVudW06IGBub25lfGltbWVkaWF0ZXxiYWNrb2ZmfGFmdGVyX3Jl" + + "bWVkaWF0aW9ufHVua25vd25gKSwgYHJldHJ5QWZ0ZXJTZWNgIChpbnQsIG9wdGlvbmFsKSwgYW5k" + + "IGByYXdgIChzdWJwcm9jZXNzICsgSFRUUCArIEt1YmVybmV0ZXMgc2lnbmFsKS4gQWx3YXlzIGNv" + + "bnN1bWUgdGhlc2UgaW4gYC0tanNvbmAgbW9kZSByYXRoZXIgdGhhbiBwYXJzaW5nIEVuZ2xpc2gg" + + "ZnJvbSBzdGRlcnIuClBLBwhzp1pk1QYAANUGAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAC0A" + + "CQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZmxhZ3MubWRVVAUAAQCmzhIj" + + "IGBudmNmLWNsaWAgZmxhZyByZWZlcmVuY2UKCiMjIEdsb2JhbCBmbGFncyAoZXZlcnkgc3ViY29t" + + "bWFuZCkKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNv" + + "bmZpZyBGSUxFYCB8IENvbmZpZyBmaWxlIHBhdGggfCBgJEhPTUUvLm52Y2YtY2xpLnlhbWxgIHwK" + + "fCBgLS1kZWJ1Z2AgfCBWZXJib3NlIEhUVFAgbG9nZ2luZyBvbiBzdGRlcnIgfCBgZmFsc2VgIHwK" + + "fCBgLS1qc29uYCB8IEpTT05MIGV2ZW50cyBvbiBzdGRlcnIgfCBhdXRvIChvZmYgaW4gVFRZLCBv" + + "biB1bmRlciBgLS1ub24taW50ZXJhY3RpdmVgKSB8CgojIyBgc2VsZi1ob3N0ZWRgIHBhcmVudCAo" + + "cGVyc2lzdGVudCBhY3Jvc3Mgc3ViY29tbWFuZHMpCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVs" + + "dCB8CnwtLS18LS0tfC0tLXwKfCBgLS1jb250cm9sLXBsYW5lLXN0YWNrPeKApmAgfCBDb250cm9s" + + "LXBsYW5lIGJ1bmRsZSBzb3VyY2U6IGxvY2FsIHBhdGgsIGdpdCBVUkwsIG9yIGBvY2k6Ly9gIFVS" + + "TCB8IGVtYmVkZGVkIE9DSSBVUkwgcGlubmVkIGJ5IENMSSB2ZXJzaW9uIHwKfCBgLS1jb21wdXRl" + + "LXBsYW5lLXN0YWNrPeKApmAgfCBDb21wdXRlLXBsYW5lIGJ1bmRsZSBzb3VyY2U6IGxvY2FsIHBh" + + "dGgsIGdpdCBVUkwsIG9yIGBvY2k6Ly9gIFVSTCB8IGVtYmVkZGVkIE9DSSBVUkwgcGlubmVkIGJ5" + + "IENMSSB2ZXJzaW9uIHwKfCBgLS1lbnY9bG9jYWxcfHByZFx84oCmYCB8IEhlbG1maWxlIGVudmly" + + "b25tZW50IG5hbWUgfCBgbG9jYWxgIGZvciBkZXYgYnVpbGRzLCBgcHJkYCBmb3IgcmVsZWFzZXMg" + + "fAp8IGAtLW5vbi1pbnRlcmFjdGl2ZWAgfCBEaXNhYmxlIGFsbCBzdGRpbiBwcm9tcHRzIHwgYGZh" + + "bHNlYCB8CnwgYC0tdG9rZW49JEpXVGAgfCBBZG1pbiBKV1QsIG92ZXJyaWRlcyBzdG9yZWQgc2Vz" + + "c2lvbiB8IC0gfAp8IGAtLW5vLWFwcGx5YCB8IGBpbnN0YWxsYCBvbmx5IC0gZW1pdCBZQU1MLCBk" + + "byBub3Qga3ViZWN0bCBhcHBseSB8IGBmYWxzZWAgfAp8IGAtLW91dHB1dD10ZXh0XHxqc29uYCB8" + + "IExlZ2FjeSBhbGlhcyBmb3IgYC0tanNvbmAgKGRlcHJlY2F0ZWQsIHJlbW92ZWQgaW4gbmV4dCBt" + + "YWpvcikgfCBgdGV4dGAgfAp8IGAtLXBsYWluYCB8IEZvcmNlIHBsYWluIHN0cmVhbWluZyBvdXRw" + + "dXQgfCBhdXRvLWRldGVjdCB8CnwgYC0td2FpdCBEVVJBVElPTmAgfCBgY2hlY2tgIG9ubHk7IGJs" + + "b2NrIHVudGlsIHBhc3MgfCAtIHwKfCBgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgQ1RYYCB8IGt1" + + "YmVjdGwgY29udGV4dCBmb3IgY29udHJvbCBwbGFuZSAoUkVRLTIwKSB8IGN1cnJlbnQgY29udGV4" + + "dCB8CnwgYC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IENUWGAgfCBrdWJlY3RsIGNvbnRleHQgZm9y" + + "IGNvbXB1dGUgcGxhbmUgKFJFUS0yMCkgfCBjdXJyZW50IGNvbnRleHQgfAp8IGAtLWljbXMtdXJs" + + "IFVSTGAgfCBQdWJsaWMgSUNNUyBVUkw7IHJlcXVpcmVkIHdoZW4gY29udGV4dHMgZGlmZmVyIHwg" + + "ZGVyaXZlZCBmcm9tIGBiYXNlX2h0dHBfdXJsYCB8CnwgYC0tbG9jYWwtb25seWAgfCBgY2hlY2sg" + + "LS1wcmVgIG9ubHk7IHNraXAgYWxsIGt1YmVjdGwgY29udGFjdCB8IGBmYWxzZWAgfAoKIyMgYGNo" + + "ZWNrYC1zcGVjaWZpYwoKQXQgbGVhc3Qgb25lIG9mIGAtLXByZWAsIGAtLWNvbnRyb2wtcGxhbmVg" + + "LCBgLS1jb21wdXRlLXBsYW5lYCwgb3IgYC0tYWxsYCBpcwpyZXF1aXJlZC4gRWFjaCBzZWxlY3Rz" + + "IGEgcm9sZTsgb25seSB0aGUgc2VsZWN0ZWQgcm9sZXMgY29udGFjdCBhIGNsdXN0ZXIuCgp8IEZs" + + "YWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1wcmVgIHwgUHJlLWZs" + + "aWdodDogbG9jYWwtaG9zdCB0b29scyBwbHVzIGNsdXN0ZXIgcmVhZGluZXNzLiBTa2lwcyBTSVMg" + + "cmVhY2hhYmlsaXR5LCBzaW5jZSBTSVMgaXMgbm90IGluc3RhbGxlZCB5ZXQsIHVubGVzcyBgLS1h" + + "bGxgIG9yIGAtLWNvbXB1dGUtcGxhbmVgIGlzIGFsc28gcGFzc2VkIHwgYGZhbHNlYCB8CnwgYC0t" + + "Y29udHJvbC1wbGFuZWAgfCBDb250cm9sLXBsYW5lIGNoZWNrcyB8IGBmYWxzZWAgfAp8IGAtLWNv" + + "bXB1dGUtcGxhbmVgIHwgQ29tcHV0ZS1wbGFuZSBjaGVja3MgfCBgZmFsc2VgIHwKfCBgLS1hbGxg" + + "IHwgRXZlcnkgY2F0ZWdvcnksIGluY2x1ZGluZyBTSVMgcmVhY2hhYmlsaXR5IHdoZW4gY29tYmlu" + + "ZWQgd2l0aCBgLS1wcmVgIHwgYGZhbHNlYCB8CnwgYC0tY2x1c3Rlci1uYW1lIE5BTUVgIHwgQ2x1" + + "c3RlciBuYW1lIGZvciBjb21wdXRlLXBsYW5lIGNoZWNrcyB8IC0gfAp8IGAtLXNraXAtaW5vdGlm" + + "eS1jaGVja2AgfCBTa2lwIHRoZSBwZXItbm9kZSBpbm90aWZ5LWxpbWl0cyBwcm9iZS4gTmVlZGVk" + + "IHdoZW4gdGhlIGt1YmVjb25maWcgdXNlciBjYW5ub3QgY3JlYXRlIHBvZHMgaW4gYGRlZmF1bHRg" + + "LiBFbnY6IGBOVkNGX0NMSV9TRUxGSE9TVEVEX1NLSVBfSU5PVElGWWAgfCBgZmFsc2VgIHwKCiMj" + + "IyBDbHVzdGVyLXZhbGlkYXRvciBmbGFncwoKVGhlIHZhbGlkYXRvciBydW5zIGFzIGEgSm9iIGlu" + + "IHRoZSBjbHVzdGVyIGJlaW5nIGNoZWNrZWQuIFRoZSBDTEkgY3JlYXRlcyBhClNlcnZpY2VBY2Nv" + + "dW50LCBDbHVzdGVyUm9sZSwgYW5kIENsdXN0ZXJSb2xlQmluZGluZyBmb3IgaXQgYW5kIHJlbW92" + + "ZXMgdGhlbQphZnRlciB0aGUgcnVuLCBzbyB0aGUga3ViZWNvbmZpZyBjb250ZXh0IG5lZWRzIHBl" + + "cm1pc3Npb24gdG8gbWFuYWdlIHRob3NlLgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8" + + "LS0tfC0tLXwtLS18CnwgYC0tY2x1c3Rlci12YWxpZGF0b3ItaW1hZ2UgUkVGYCB8IFZhbGlkYXRv" + + "ciBpbWFnZS4gUmVzb2x1dGlvbiBvcmRlcjogZmxhZywgYE5WQ0ZfQ0xJX0NMVVNURVJfVkFMSURB" + + "VE9SX0lNQUdFYCwgY29uZmlnIGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfaW1hZ2VgLiBBIHJlZiB3" + + "aXRoIG5vIHRhZyBkaXNjb3ZlcnMgdGhlIGxhdGVzdCBzdGFibGUgdGFnIGZyb20gdGhlIHJlZ2lz" + + "dHJ5LiBVbnNldCBldmVyeXdoZXJlIHNraXBzIHRoZSBwcm9iZSB3aXRoIGEgd2FybmluZyB8IC0g" + + "fAp8IGAtLWNsdXN0ZXItdmFsaWRhdG9yLXJlZ2lzdHJpZXMgaG9zdDpwb3J0LC4uLmAgfCBFeHRy" + + "YSByZWdpc3RyaWVzIHRoZSBjb250cm9sLXBsYW5lIHZhbGlkYXRvciBwcm9iZXMgZm9yIHJlYWNo" + + "YWJpbGl0eS4gYG52Y3IuaW9gIGlzIGFsd2F5cyBwcm9iZWQuIFJlcGVhdGFibGUgb3IgY29tbWEt" + + "c2VwYXJhdGVkLiBFbnY6IGBOVkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9SRUdJU1RSSUVTYDsg" + + "Y29uZmlnIGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfcmVnaXN0cmllc2AgfCBgbnZjci5pb2Agb25s" + + "eSB8CnwgYC0tY2x1c3Rlci12YWxpZGF0b3ItcHVsbC1zZWNyZXQgTkFNRWAgfCBkb2NrZXItcmVn" + + "aXN0cnkgU2VjcmV0IGluIGBkZWZhdWx0YCB1c2VkIHRvIHB1bGwgdGhlIHZhbGlkYXRvciBpbWFn" + + "ZS4gV2hlbiBlbXB0eSwgdGhlIENMSSBsb29rcyBmb3Igb25lIGluIHRoZSBOVkNGIG5hbWVzcGFj" + + "ZXMgYW5kIGNvcGllcyBpdCBpbnRvIGBkZWZhdWx0YCBmb3IgdGhlIHJ1bi4gRmFpbGluZyB0aGF0" + + "LCBhbmQgb25seSBmb3IgYW4gaW1hZ2Ugb24gYW4gTkdDIHJlZ2lzdHJ5LCBpdCBtaW50cyBvbmUg" + + "ZnJvbSBgTkdDX0FQSV9LRVlgIHwgYXV0by1kZXRlY3QgfAp8IGAtLXNraXAtY2x1c3Rlci12YWxp" + + "ZGF0aW9uYCB8IFNraXAgdGhlIGluLWNsdXN0ZXIgdmFsaWRhdG9yIHByb2JlIGVudGlyZWx5LiBF" + + "bnY6IGBOVkNGX0NMSV9TRUxGSE9TVEVEX1NLSVBfQ0xVU1RFUl9WQUxJREFUSU9OYCB8IGBmYWxz" + + "ZWAgfAp8IGAtLW5vLWNsZWFudXBgIHwgS2VlcCB0aGUgdmFsaWRhdG9yIEpvYiwgaXRzIHBvZCwg" + + "UkJBQywgcHVsbCBzZWNyZXQgYW5kIENvbmZpZ01hcCBmb3IgZGVidWdnaW5nLiBBIGxhdGVyIGNo" + + "ZWNrIHJlY2xhaW1zIHRoZW0gYWZ0ZXIgMjQgaG91cnM7IHRoZSByZXN1bHQgcHJpbnRzIHRoZSBg" + + "a3ViZWN0bCBkZWxldGVgIGNvbW1hbmQgdGhhdCByZW1vdmVzIHRoZW0gbm93IHwgYGZhbHNlYCB8" + + "CnwgYC0tc2hvdy1sb2dzYCB8IFByaW50IHRoZSB2YWxpZGF0b3IgdHJhbnNjcmlwdCB0byBzdGRl" + + "cnIgYWZ0ZXIgdGhlIGNoZWNrIGV2ZW50cy4gVGhlIHRyYW5zY3JpcHQgaXMgbm90IEpTT04sIGFu" + + "ZCBgLS1qc29uYCBhbHNvIHdyaXRlcyB0byBzdGRlcnIsIHNvIGxlYXZlIHRoaXMgb2ZmIHdoZW4g" + + "YSBwYXJzZXIgaXMgcmVhZGluZyB0aGUgc3RyZWFtIHwgYGZhbHNlYCB8CgojIyBgdXBgLXNwZWNp" + + "ZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1jbHVz" + + "dGVyLW5hbWUgTkFNRWAgfCBJQ01TIGNsdXN0ZXIgcm93IGlkZW50aWZpZXIgKHJlcXVpcmVkKSB8" + + "IC0gfAp8IGAtLW5jYS1pZCBJRGAgfCBOQ0EgYWNjb3VudCBJRCB8IGBudmNmLWRlZmF1bHRgIHwK" + + "fCBgLS1yZWdpb24gUkVHSU9OYCB8IENsdXN0ZXIgcmVnaW9uIHwgYHVzLXdlc3QtMWAgfAp8IGAt" + + "LXBsYW4tb25seWAgfCBEcnktcnVuOyBlbWl0IHBoYXNlIHBsYW4gKyBFVEFzIHdpdGhvdXQgY2hh" + + "bmdlcyB8IGBmYWxzZWAgfAoKIyMgYHN0YXR1c2Atc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2Ug" + + "fCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0ZXItbmFtZSBOQU1FYCB8IExpbWl0" + + "IHRvIG9uZSBjb21wdXRlIHBsYW5lIHwgLSAoY29udHJvbCArIGFsbCBjbHVzdGVycykgfAp8IGAt" + + "LXdhdGNoYCB8IExpdmUgcmUtcmVuZGVyIHwgYGZhbHNlYCB8CnwgYC0td2F0Y2gtaW50ZXJ2YWwg" + + "RFVSYCB8IGAtLXdhdGNoYCBjYWRlbmNlIHwgYDVzYCB8CnwgYC0tY29tcG9uZW50IE5BTUVgIHwg" + + "RmlsdGVyIGNvbXBvbmVudHMgcGFuZWwgfCBhbGwgfAp8IGAtLW5vLWV2ZW50c2AgfCBTa2lwIGV2" + + "ZW50cyBwYW5lbCB8IGBmYWxzZWAgfAoKIyMgYGNsdXN0ZXIgcmVnaXN0ZXJgLXNwZWNpZmljCgp8" + + "IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1uYW1lIE5BTUVg" + + "IHwgQ2x1c3RlciBuYW1lIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1uY2EtaWQgSURgIHwgTkNBIElE" + + "IChyZXF1aXJlZCkgfCAtIHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IFJlZ2lvbiB8IGB1cy13ZXN0" + + "LTFgIHwKfCBgLS1pY21zLXVybCBVUkxgIHwgSUNNUyBlbmRwb2ludCB8IGZyb20gY29uZmlnIHwK" + + "fCBgLS1pZ25vcmUtZXhpc3RpbmdgIHwgTWF0Y2gtb3ItY3JlYXRlIGluc3RlYWQgb2YgZmFpbC1v" + + "bi1leGlzdHMgfCBgZmFsc2VgIHwKCiMjIGBhcGkta2V5IGdlbmVyYXRlYC1zcGVjaWZpYwoKfCBG" + + "bGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tZm9yIGZ1bmN0aW9u" + + "XHx0YXNrYCB8IEdlbmVyYXRlIG9ubHkgdGhlIHNwZWNpZmllZCBrZXkgdHlwZSB8IChvbWl0IHRv" + + "IGdlbmVyYXRlIGJvdGgpIHwKfCBgLS1kZXNjcmlwdGlvbiBURVhUYCB8IEh1bWFuLXJlYWRhYmxl" + + "IGxhYmVsIGZvciB0aGUga2V5IHwgYEdlbmVyYXRlZCBieSBudmNmLWNsaWAgfAp8IGAtLWV4cGly" + + "ZXMtaW4gRFVSQVRJT05gIHwgRXhwaXJ5IG9mZnNldCAoZS5nLiBgMjRoYCwgYDdkYCk7IHBhcnNl" + + "ZCBhcyBleHRlbmRlZCBkdXJhdGlvbiB8IGAyNGhgIHwKfCBgLS1zY29wZXMgU0NPUEVbLFNDT1BF" + + "XWAgfCBPdmVycmlkZSBkZWZhdWx0IHNjb3BlczsgcmVxdWlyZXMgYC0tZm9yYCB8IChzZXJ2aWNl" + + "IGRlZmF1bHRzKSB8CnwgYC0tdmFsaWRhdGVgIHwgVmFsaWRhdGUgZWFjaCBnZW5lcmF0ZWQga2V5" + + "IGltbWVkaWF0ZWx5IGFmdGVyIG1pbnRpbmcgfCBgZmFsc2VgIHwKCkV4dGVuZGVkIGR1cmF0aW9u" + + "IHVuaXRzOiBgc2AgKHNlY29uZHMpLCBgbWAgKG1pbnV0ZXMpLCBgaGAgKGhvdXJzKSwgYGRgIChk" + + "YXlzKSwgYHdgICh3ZWVrcykuCgojIyBgZnVuY3Rpb24gY3JlYXRlYC1zcGVjaWZpYwoKYC0taW5w" + + "dXQtZmlsZSBGSUxFYCBpcyByZWNvbW1lbmRlZCBmb3IgcmVwZWF0YWJsZSBmdW5jdGlvbiBkZWZp" + + "bml0aW9ucy4gRm9yIGFkLWhvYyBjcmVhdGVzOgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQg" + + "fAp8LS0tfC0tLXwtLS18CnwgYC0tbmFtZSBOQU1FYCB8IEZ1bmN0aW9uIG5hbWUgfCAtIHwKfCBg" + + "LS1pbWFnZSBJTUFHRWAgfCBDb250YWluZXIgaW1hZ2UgfCAtIHwKfCBgLS1pbmZlcmVuY2UtdXJs" + + "IFVSSWAgfCBDb250YWluZXIgaW5mZXJlbmNlIGVuZHBvaW50IHwgLSB8CnwgYC0taW5mZXJlbmNl" + + "LXBvcnQgUE9SVGAgfCBDb250YWluZXIgaW5mZXJlbmNlIHBvcnQgfCAtIHwKfCBgLS1mdW5jdGlv" + + "bi10eXBlIERFRkFVTFRcfFNUUkVBTUlOR1x8TExNYCB8IEZ1bmN0aW9uIHR5cGUgfCBgREVGQVVM" + + "VGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJIHJlZmVy" + + "ZW5jZS4gQ2FuIGJlIHVzZWQgd2l0aCBgLS1mdW5jdGlvbi10eXBlPUxMTWAgZm9yIGNoYXJ0LXBh" + + "Y2thZ2VkIExMTSB3b3JrbG9hZHMuIHwgLSB8CnwgYC0taGVsbS1jaGFydC1zZXJ2aWNlIE5BTUVg" + + "IHwgS3ViZXJuZXRlcyBTZXJ2aWNlIG5hbWUgZXhwb3NlZCBieSB0aGUgY2hhcnQuIFJlcXVpcmVk" + + "IHdoZW4gYC0taGVsbS1jaGFydGAgaXMgc2V0LiB8IC0gfAp8IGAtLW1vZGVscyBOQU1FOlZFUlNJ" + + "T046VVJJYCB8IFN0YW5kYXJkIG1vZGVsIGFydGlmYWN0OyByZXBlYXRhYmxlIHwgLSB8CnwgYC0t" + + "bGxtLW1vZGVsIFNQRUNgIHwgTExNIG1vZGVsIGNvbmZpZzsgZm9ybWF0IGBuYW1lPTxtb2RlbD4s" + + "dXJpcz08dXJpPlx8PHVyaT4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJhdGVMaW1pdD08" + + "bGltaXQ+YDsgcmVwZWF0YWJsZS4gVG9rZW4gbGltaXRzIHVzZSBgPHZhbHVlPi08dW5pdD5gIHdp" + + "dGggYFNgLCBgTWAsIGBIYCwgYERgLCBvciBgV2AsIGZvciBleGFtcGxlIGAxMDAwLVNgLiBVc2Ug" + + "aW5wdXQgSlNPTiBmb3IgY29tYmluZWQgdG9rZW4gbGltaXRzIGJlY2F1c2UgaW5saW5lIHNwZWNz" + + "IHVzZSBjb21tYXMgYXMgZmllbGQgc2VwYXJhdG9ycy4gfCAtIHwKfCBgLS1sbG0tZGVmYXVsdC1w" + + "cmlvcml0eSBQUklPUklUWWAgfCBGdW5jdGlvbi1sZXZlbCBkZWZhdWx0IHJlcXVlc3QgcHJpb3Jp" + + "dHkuIExvd2VyIHZhbHVlcyBoYXZlIGhpZ2hlciBwcmlvcml0eS4gfCAtIHwKfCBgLS1sbG0tcGVy" + + "LWFjY291bnQtcHJpb3JpdHkgTkNBLUlEOlBSSU9SSVRZYCB8IFBlci1hY2NvdW50IHByaW9yaXR5" + + "IG92ZXJyaWRlOyByZXBlYXRhYmxlOyBzdXBwb3J0cyB1cCB0byA2NCBkaXN0aW5jdCBOQ0EgSUQg" + + "b3ZlcnJpZGVzLiBSZXF1aXJlcyBhIGRlZmF1bHQgcHJpb3JpdHkuIHwgLSB8CgpJbiBKU09OIGFu" + + "ZCBpbmxpbmUgc3BlY3MsIExMTSBmdW5jdGlvbnMgc2V0IGBmdW5jdGlvblR5cGU6ICJMTE0iYCBh" + + "bmQgbW9kZWwgcm91dGluZyBtZXRhZGF0YSB1bmRlciBgbW9kZWxzW10ubGxtQ29uZmlnYC4gYGxs" + + "bUNvbmZpZy51cmlzYCBkZWNsYXJlcyB0aGUgT3BlbkFJLWNvbXBhdGlibGUgdXBzdHJlYW0gcGF0" + + "aHMgZXhwb3NlZCBieSB0aGUgbW9kZWwuIEN1cnJlbnQgc3VwcG9ydGVkIHBhdGhzIGFyZSBgL3Yx" + + "L2NoYXQvY29tcGxldGlvbnNgLCBgL3YxL3Jlc3BvbnNlc2AsIGFuZCBgL3YxL2VtYmVkZGluZ3Ng" + + "LiBgbGxtQ29uZmlnLnJvdXRpbmdNZXRob2RgIGFjY2VwdHMgYHJvdW5kX3JvYmluYCwgYHBvd2Vy" + + "X29mX3R3b2AsIGBncm9xX211bHRpcmVnaW9uYCwgYHB1bHNhcmAsIG9yIGByYW5kb21gLgpgbGxt" + + "Q29uZmlnLnRva2VuUmF0ZUxpbWl0YCBhY2NlcHRzIG9uZSBvciBtb3JlIGNvbW1hLXNlcGFyYXRl" + + "ZCBwb3NpdGl2ZSBpbnRlZ2VyIHRva2VuIGxpbWl0cyBpbiBgPHZhbHVlPi08dW5pdD5gIGZvcm1h" + + "dC4gU3VwcG9ydGVkIHVuaXRzIGFyZSBgU2AgKHNlY29uZHMpLCBgTWAgKG1pbnV0ZXMpLCBgSGAg" + + "KGhvdXJzKSwgYERgIChkYXlzKSwgYW5kIGBXYCAod2Vla3MpLiBVc2UgZGlzdGluY3QgdW5pdHMg" + + "d2hlbiBjb21iaW5pbmcgbGltaXRzLCBmb3IgZXhhbXBsZSBgMTAwMC1TLDUwMDAtTSwxMDAwMDAt" + + "SCw1MDAwMDAtRCwxMDAwMDAwLVdgIGluIGlucHV0IEpTT04uCgpIZWxtIGNoYXJ0IHBhY2thZ2lu" + + "ZyBpcyBpbmRlcGVuZGVudCBvZiBgZnVuY3Rpb25UeXBlYC4gRm9yIGEgSGVsbS1jaGFydCBiYWNr" + + "ZWQgTExNIGZ1bmN0aW9uLCBzZXQgYGZ1bmN0aW9uVHlwZTogIkxMTSJgLCBgaGVsbUNoYXJ0YCwg" + + "YGhlbG1DaGFydFNlcnZpY2VOYW1lYCwgYW5kIGBtb2RlbHNbXS5sbG1Db25maWdgIGluIHRoZSBz" + + "YW1lIGNyZWF0ZSByZXF1ZXN0LiBgaW5mZXJlbmNlUG9ydGAgbXVzdCBiZSB0aGUgS3ViZXJuZXRl" + + "cyBTZXJ2aWNlIHBvcnQgZXhwb3NlZCBieSBgaGVsbUNoYXJ0U2VydmljZU5hbWVgLgoKTExNIGlu" + + "dm9jYXRpb24gcmVxdWVzdHMgdXNlIGBtb2RlbDogIjxmdW5jdGlvbi1pZD4vPG1vZGVsLW5hbWU+" + + "ImAuIFRoZSBmdW5jdGlvbiBJRCBzZWxlY3RzIHRoZSBOVkNGIGZ1bmN0aW9uLCBhbmQgdGhlIG1v" + + "ZGVsIG5hbWUgaXMgZm9yd2FyZGVkIHVwc3RyZWFtLiBDaGF0IGNvbXBsZXRpb25zIGFuZCBSZXNw" + + "b25zZXMgQVBJIHJlcXVlc3RzIGNhbiB1c2UgYHgtbXVsdGktdHVybi1zZXNzaW9uLWlkYCBmb3Ig" + + "c2Vzc2lvbiBzdGlja2luZXNzOyBlbWJlZGRpbmdzIHJlcXVlc3RzIGRvIG5vdC4KCiMjIGBmdW5j" + + "dGlvbiB1cGRhdGVgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18" + + "LS0tfC0tLXwKfCBgLS10YWdzIFRBR1ssVEFHXWAgfCBSZXBsYWNlIGZ1bmN0aW9uIHRhZ3MgfCAt" + + "IHwKfCBgLS1sbG0tbW9kZWwtdXBkYXRlIFNQRUNgIHwgTExNIG1vZGVsIHVwZGF0ZTsgZm9ybWF0" + + "IGBuYW1lPTxtb2RlbD4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJhdGVMaW1pdD08bGlt" + + "aXQ+YDsgcmVwZWF0YWJsZS4gUm91dGluZyBtZXRob2RzIG1hdGNoIGAtLWxsbS1tb2RlbGAuIFRv" + + "a2VuIGxpbWl0IGV4YW1wbGU6IGAxMDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBmb3IgY29tYmluZWQg" + + "dG9rZW4gbGltaXRzLiB8IC0gfAp8IGAtLWxsbS1kZWZhdWx0LXByaW9yaXR5IFBSSU9SSVRZYCB8" + + "IFJlcGxhY2UgdGhlIGZ1bmN0aW9uLWxldmVsIHByaW9yaXR5IGNvbmZpZ3VyYXRpb24gd2l0aCB0" + + "aGlzIGRlZmF1bHQgYW5kIGFueSBzdXBwbGllZCBwZXItYWNjb3VudCBvdmVycmlkZXMuIHwgLSB8" + + "CnwgYC0tbGxtLXBlci1hY2NvdW50LXByaW9yaXR5IE5DQS1JRDpQUklPUklUWWAgfCBQZXItYWNj" + + "b3VudCBwcmlvcml0eSBvdmVycmlkZTsgcmVwZWF0YWJsZTsgc3VwcG9ydHMgdXAgdG8gNjQgZGlz" + + "dGluY3QgTkNBIElEIG92ZXJyaWRlcy4gUmVxdWlyZXMgYSBkZWZhdWx0IHByaW9yaXR5LiB8IC0g" + + "fAoKSW4gSlNPTiwgYGZ1bmN0aW9uIHVwZGF0ZWAgYWNjZXB0cyBgbW9kZWxVcGRhdGVzW11gIGVu" + + "dHJpZXMgd2l0aCBgbW9kZWxOYW1lYCBhbmQgYGxsbUNvbmZpZy5yb3V0aW5nTWV0aG9kYCBhbmQv" + + "b3IgYGxsbUNvbmZpZy50b2tlblJhdGVMaW1pdGAuIGB1cmlzYCBhcmUgY3JlYXRlLXRpbWUgbW9k" + + "ZWwgbWV0YWRhdGEgYW5kIGFyZSBub3QgcGFydCBvZiBtb2RlbCB1cGRhdGVzLgoKIyMgYGZ1bmN0" + + "aW9uIGRlcGxveSBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29t" + + "bWVuZGVkIChmdWxsIEpTT04gc3BlYykuIEZvciBhZC1ob2Mgb25lLXNob3QgdXNlOgoKfCBGbGFn" + + "IHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tZnVuY3Rpb24taWQgSURg" + + "IHwgRnVuY3Rpb24gSUQgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLWdwdSBOQU1FYCB8IEdQVSBmYW1p" + + "bHkgfCBgSDEwMGAgfAp8IGAtLWluc3RhbmNlLXR5cGUgVFlQRWAgfCBTS1UgfCBgTkNQLkdQVS5I" + + "MTAwXzF4YCB8CnwgYC0tbWluLWluc3RhbmNlcyBOYCB8IE1pbiByZXBsaWNhcyB8IGAxYCB8Cnwg" + + "YC0tbWF4LWluc3RhbmNlcyBOYCB8IE1heCByZXBsaWNhcyB8IGAxYCB8CnwgYC0tbWF4LXJlcXVl" + + "c3QtY29uY3VycmVuY3kgTmAgfCBDb25jdXJyZW5jeSB8IGAwYCAodW5zZXQ7IHNlcnZlciBkZWZh" + + "dWx0IGFwcGxpZXMpIHwKfCBgLS1jbHVzdGVycyBOQU1FWyxOQU1FXWAgfCBUYXJnZXQgc3BlY2lm" + + "aWMgY29tcHV0ZSBjbHVzdGVycyB8IChhbnkgbWF0Y2hpbmcgU0tVKSB8CgojIyBgdGFzayBjcmVh" + + "dGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIGZvciByZXBl" + + "YXRhYmxlIHRhc2sgZGVmaW5pdGlvbnMuIEZvciBhZC1ob2MgdXNlOgoKfCBGbGFnIHwgUHVycG9z" + + "ZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGAtLW5hbWUgTkFNRWAgfCBUYXNrIG5hbWUgKHJl" + + "cXVpcmVkKSB8IDEtMTI4IGNoYXJzLCBgXlthLXowLTlBLVpdW2EtejAtOUEtWlwtX10qJGAgfAp8" + + "IGAtLWdwdSBHUFVgIHwgR1BVIG5hbWUgKHJlcXVpcmVkIHdpdGhvdXQgYC0taW5wdXQtZmlsZWAp" + + "IHwgRXhhbXBsZTogYEgxMDBgIHwKfCBgLS1pbnN0YW5jZS10eXBlIFRZUEVgIHwgSW5zdGFuY2Ug" + + "dHlwZSAocmVxdWlyZWQgd2l0aG91dCBgLS1pbnB1dC1maWxlYCkgfCBFeGFtcGxlOiBgTkNQLkdQ" + + "VS5IMTAwXzF4YCB8CnwgYC0taW1hZ2UgSU1BR0VgIHwgQ29udGFpbmVyIGltYWdlIHwgTXV0dWFs" + + "bHkgZXhjbHVzaXZlIHdpdGggYC0taGVsbS1jaGFydGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hBUlRg" + + "IHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJIHJlZmVyZW5jZSB8IE11dHVhbGx5IGV4Y2x1c2l2ZSB3" + + "aXRoIGAtLWltYWdlYCB8CnwgYC0taW5wdXQtZmlsZSBGSUxFYCB8IEpTT04gdGFzayBzcGVjIGZp" + + "bGUgfCBDTEkgZmxhZ3Mgb3ZlcnJpZGUgSlNPTiB2YWx1ZXMgd2hlbiBib3RoIGFyZSBzZXQgfAp8" + + "IGAtLWJhY2tlbmQgQkFDS0VORGAgfCBCYWNrZW5kIC8gQ1NQIHwgLSB8CnwgYC0tY2x1c3RlcnMg" + + "TkFNRVssTkFNRV1gIHwgU3BlY2lmaWMgY2x1c3RlcnMgd2l0aGluIHRoZSBpbnN0YW5jZSB8IENv" + + "bW1hLXNlcGFyYXRlZCB8CnwgYC0tY29udGFpbmVyLWFyZ3MgQVJHU2AgfCBBcmdzIHBhc3NlZCB3" + + "aGVuIGxhdW5jaGluZyB0aGUgY29udGFpbmVyIHwgU2luZ2xlIHN0cmluZywgZS5nLiBgIi0tZXBv" + + "Y2hzIDEwIC0tYmF0Y2gtc2l6ZSAzMiJgIHwKfCBgLS1jb250YWluZXItZW52IE5BTUU9dmFsdWVg" + + "IHwgQ29udGFpbmVyIGVudmlyb25tZW50IHZhcmlhYmxlOyByZXBlYXRhYmxlIHwgLSB8CnwgYC0t" + + "c2VjcmV0cyBOQU1FPXZhbHVlYCB8IFNlY3JldCBlbnZpcm9ubWVudCB2YXJpYWJsZTsgcmVwZWF0" + + "YWJsZTsgZW5jcnlwdGVkIGF0IHJlc3QgfCAtIHwKfCBgLS1tYXgtcnVudGltZSBEVVJBVElPTmAg" + + "fCBNYXggd2FsbC1jbG9jayBydW4gdGltZSAoSVNPIDg2MDEsIGUuZy4gYFBUNEhgKSB8IE5vIGRl" + + "ZmF1bHQ7IG9taXQgZm9yIG5vIHRpbWUgbGltaXQgfAp8IGAtLW1heC1xdWV1ZWQgRFVSQVRJT05g" + + "IHwgTWF4IHRpbWUgaW4gcXVldWUgYmVmb3JlIGNhbmNlbGxhdGlvbiAoSVNPIDg2MDEpIHwgU2Vy" + + "dmVyIGRlZmF1bHQgYFBUNzJIYCB8CnwgYC0tdGVybWluYXRpb24tZ3JhY2UgRFVSQVRJT05gIHwg" + + "R3JhY2UgcGVyaW9kIGFmdGVyIHN0b3Agc2lnbmFsIChJU08gODYwMSkgfCBTZXJ2ZXIgZGVmYXVs" + + "dCBgUFQxSGAgfAp8IGAtLXJlc3VsdC1zdHJhdGVneSBVUExPQURcfE5PTkVgIHwgSG93IHRvIGhh" + + "bmRsZSB0YXNrIG91dHB1dCBhcnRpZmFjdHMgfCAtIHwKfCBgLS1yZXN1bHRzLWxvY2F0aW9uIExP" + + "Q0FUSU9OYCB8IFJlc3VsdCB1cGxvYWQgdGFyZ2V0LCBmb3JtYXQgYG9yZy1uYW1lL1t0ZWFtLW5h" + + "bWUvXW1vZGVsLW5hbWVgOyByZXF1aXJlZCB3aGVuIGAtLXJlc3VsdC1zdHJhdGVneT1VUExPQURg" + + "IHwgLSB8CnwgYC0tbW9kZWxzIE5BTUU6VkVSU0lPTjpVUklgIHwgTW9kZWwgYXJ0aWZhY3Q7IHJl" + + "cGVhdGFibGUgfCAtIHwKfCBgLS1yZXNvdXJjZXMgTkFNRTpWRVJTSU9OOlVSSWAgfCBSZXNvdXJj" + + "ZSBhcnRpZmFjdDsgcmVwZWF0YWJsZSB8IC0gfAp8IGAtLXRhZ3MgVEFHWyxUQUddYCB8IFRhc2sg" + + "dGFncyB8IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tZGVzY3JpcHRpb24gVEVYVGAgfCBUYXNrIGRl" + + "c2NyaXB0aW9uIHwgLSB8CnwgYC0tbG9ncy10ZWxlbWV0cnktaWQgVVVJRGAgfCBMb2dzIHRlbGVt" + + "ZXRyeSBlbmRwb2ludCBJRCB8IC0gfAp8IGAtLW1ldHJpY3MtdGVsZW1ldHJ5LWlkIFVVSURgIHwg" + + "TWV0cmljcyB0ZWxlbWV0cnkgZW5kcG9pbnQgSUQgfCAtIHwKfCBgLS10cmFjZXMtdGVsZW1ldHJ5" + + "LWlkIFVVSURgIHwgVHJhY2VzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfApQSwcIm1pHP2Qv" + + "AABkLwAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA3AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdl" + + "ZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOEiMgVHJvdWJsZXNob290" + + "aW5nCgpLbm93biBlcnJvcnMg4oaSIGRpYWdub3N0aWMgY29tbWFuZCDihpIgcmVtZWRpYXRpb24u" + + "IEtlZXAgaW4gc3luYyB3aXRoIHRoZSBzdHJ1Y3R1cmVkIGBwaGFzZV9mYWlsZWRgIGV2ZW50cyB0" + + "aGUgQ0xJIGVtaXRzIChSRVEtMTUpIOKAlCBldmVyeSBlbnRyeSBiZWxvdyBzaG91bGQgbWFwIHRv" + + "IGFuIGBlcnJDYXRlZ29yeWAgYW5kIGEgYHJlbWVkaWF0aW9uYCBhcnJheS4KCiMjIFByZS1mbGln" + + "aHQKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGt1" + + "YmVjdGwgbm90IG9uIFBBVEhgIHwgT3BlcmF0b3IncyBgJFBBVEhgIGRvZXNuJ3QgaW5jbHVkZSBr" + + "dWJlY3RsIHwgSW5zdGFsbCBrdWJlY3RsIDEuMjgrOiBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9j" + + "cy90YXNrcy90b29scy9pbnN0YWxsLWt1YmVjdGwvIHwKfCBgaGVsbWZpbGUgbm90IG9uIFBBVEhg" + + "IHwgU2FtZSB8IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWxtZmlsZS9oZWxtZmlsZSNpbnN0YWxsYXRp" + + "b24gfAp8IGBoZWxtIG5vdCBvbiBQQVRIYCB8IFNhbWUgfCBodHRwczovL2hlbG0uc2gvZG9jcy9p" + + "bnRyby9pbnN0YWxsLyB8CnwgYEdhdGV3YXkgQVBJIENSRHMgbm90IGluc3RhbGxlZGAgfCBlbnZv" + + "eS1nYXRld2F5IHByZXJlcSBtaXNzaW5nIHwgYGhlbG0gaW5zdGFsbCBlZyBvY2k6Ly9kb2NrZXIu" + + "aW8vZW52b3lwcm94eS9nYXRld2F5LWhlbG0gLS1uYW1lc3BhY2U9ZW52b3ktZ2F0ZXdheS1zeXN0" + + "ZW0gLS1jcmVhdGUtbmFtZXNwYWNlYCB8CnwgYGRlZmF1bHQgU3RvcmFnZUNsYXNzIG5vdCBhdmFp" + + "bGFibGVgIHwgQ2x1c3RlciBoYXMgbm8gZGVmYXVsdCBTQyB8IEFubm90YXRlIG9uZTogYGt1YmVj" + + "dGwgcGF0Y2ggc2MgPG5hbWU+IC1wICd7Im1ldGFkYXRhIjp7ImFubm90YXRpb25zIjp7InN0b3Jh" + + "Z2VjbGFzcy5rdWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xhc3MiOiJ0cnVlIn19fSdgIHwKfCBg" + + "R1BVIG9wZXJhdG9yIG5vdCBpbnN0YWxsZWRgIChjb21wdXRlLXBsYW5lKSB8IG52aWRpYSBHUFUg" + + "b3BlcmF0b3IgbWlzc2luZyB8IEluc3RhbGwgcGVyIGh0dHBzOi8vZG9jcy5udmlkaWEuY29tL2Rh" + + "dGFjZW50ZXIvY2xvdWQtbmF0aXZlL2dwdS1vcGVyYXRvci9sYXRlc3QvaW5zdGFsbC1ncHUtb3Bl" + + "cmF0b3IuaHRtbCwgT1IgdXNlIGBmYWtlLWdwdS1vcGVyYXRvcmAgZm9yIGRldiB8CnwgYEdQVSBu" + + "b2RlIGxhYmVscyBtaXNzaW5nYCAoY29tcHV0ZS1wbGFuZSkgfCBOb2RlcyBuZWVkIGBudmlkaWEu" + + "Y29tL2dwdS5mYW1pbHlgIGV0Yy4gfCBTZXQgYC0tazNzLW5vZGUtbGFiZWwgbnZpZGlhLmNvbS9n" + + "cHUuZmFtaWx5PWhvcHBlckBhZ2VudDpOYCBmb3IgazNkIHwKCiMjIEF1dGgKCnwgU3ltcHRvbSB8" + + "IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGFkbWluIHRva2VuIHJlcXVp" + + "cmVkYCAoaW5pdCBub3QgcnVuKSB8IE5vIGB+Ly5udmNmLWNsaS5zdGF0ZWAgYW5kIGAtLXRva2Vu" + + "YCBub3QgcGFzc2VkIHwgYG52Y2YtY2xpIGluaXRgIChpbnRlcmFjdGl2ZSkgb3IgYC0tdG9rZW49" + + "JEpXVCAtLW5vbi1pbnRlcmFjdGl2ZWAgKENJKSB8CnwgYFNpZ25lZCBKV1QgcmVqZWN0ZWQ6IEFu" + + "b3RoZXIgYWxnb3JpdGhtIGV4cGVjdGVkLCBvciBubyBtYXRjaGluZyBrZXkocykgZm91bmRgIHwg" + + "U3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQgY29udHJvbCBwbGFuZSB8IGBybSB+" + + "Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5pdGAgYWdhaW4gfAp8IGA0MDMgbWlz" + + "c2luZyByZXF1ZXN0ZWQgYXV0aG9yaXRpZXNgIChmdW5jdGlvbiBpbnZva2UpIHwgQWRtaW4gdG9r" + + "ZW4gZG9lc24ndCBoYXZlIGBpbnZva2VfZnVuY3Rpb25gIHNjb3BlIHwgYG52Y2YtY2xpIGFwaS1r" + + "ZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj3igKZgIHRoZW4gcmUtcnVuIGludm9rZSB8CgojIyBJ" + + "bnN0YWxsIC8gYHVwYAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0t" + + "fC0tLXwKfCBIZWxtIGB0aW1lZCBvdXQgd2FpdGluZyBmb3IgY2Fzc2FuZHJhYCB8IENhc3NhbmRy" + + "YSBTdGF0ZWZ1bFNldCBQVkMgc3R1Y2sgYFBlbmRpbmdgIHwgQ29uZmlybSBkZWZhdWx0IFN0b3Jh" + + "Z2VDbGFzczsgY2hlY2sgYGt1YmVjdGwgZ2V0IHB2LHB2YyAtbiBjYXNzYW5kcmEtc3lzdGVtYCB8" + + "CnwgYEludmFsaWQgR1BVICdOQ1AuR1BVLkgxMDAnIHNwZWNpZmllZGAgKGZ1bmN0aW9uIGRlcGxv" + + "eSkgfCBXcm9uZyBmaWVsZCDigJQgYGdwdWAgaXMgdGhlIGZhbWlseSwgbm90IHRoZSBTS1UgfCBV" + + "c2UgYCJncHUiOiAiSDEwMCJgLCBgImluc3RhbmNlVHlwZSI6ICJOQ1AuR1BVLkgxMDBfMXgiYCB8" + + "CnwgYHJlZ2lvbiBtdXN0IGJlIHByb3ZpZGVkYCAoY2x1c3RlciByZWdpc3RlciAvIGluc3RhbGwg" + + "LS1jb21wdXRlLXBsYW5lKSB8IGAtLXJlZ2lvbmAgZW1wdHkgKyBgQ0xVU1RFUl9SRUdJT05gIGVu" + + "diBlbXB0eSB8IFBhc3MgYC0tcmVnaW9uPXVzLXdlc3QtMWAgKG9yIGFueSBub24tZW1wdHkgdmFs" + + "dWUpIHwKfCBgcmVxdWlyZWRFbnYgIk5DQV9JRCIgaXMgbm90IHNldGAgKGhlbG1maWxlIGVycm9y" + + "IGR1cmluZyBjb21wdXRlLXBsYW5lIGFwcGx5KSB8IE9sZGVyIG52Y2YtY2xpIGJlZm9yZSBjb21t" + + "aXQgYDZhYTU3MDRgOyBFeHRyYUVudiBub3QgcHJvcGFnYXRpbmcgTkNBX0lEIHwgVXBncmFkZSBg" + + "bnZjZi1jbGlgIHRvIGEgcmVsZWFzZSBhZnRlciBgNmFhNTcwNGAgfAp8IGBudmNhLW9wZXJhdG9y" + + "OiBJbWFnZVB1bGxCYWNrT2ZmYCBmb3IgYG52Y2Etb3BlcmF0b3I6cHNhdGAgfCBJbWFnZSBub3Qg" + + "aW4gY2x1c3RlciByZWdpc3RyeTsgbXVsdGktY2x1c3RlciBidWlsZCBpcyBsb2NhbCB8IGBrM2Qg" + + "aW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Etb3BlcmF0b3I6cHNhdCAtYyA8Y2x1c3Rlcj5g" + + "IHwKCiMjIENvbXB1dGUtcGxhbmUgcnVudGltZQoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlh" + + "dGlvbiB8CnwtLS18LS0tfC0tLXwKfCBOVkNBIGFnZW50IENyYXNoTG9vcEJhY2tPZmYgd2l0aCBg" + + "SFRUUCA0MDFgIG9uIGAvdjEvbnZjYS9jbHVzdGVycy8uLi4vcmVnaXN0ZXJgIHwgU3RhbGUgYG91" + + "dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIGZyb20gcHJpb3IgcmVnaXN0ZXI7IGNs" + + "dXN0ZXIgSUQgZG9lc24ndCBtYXRjaCBJQ01TIHwgRGVsZXRlIHRoZSBzdGFsZSBmaWxlOyByZS1y" + + "dW4gYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwYCAoaWRlbXBvdGVudCByZWdpc3RlciB3cml0ZXMg" + + "YSBmcmVzaCBmaWxlKSB8CnwgYE5vIGNsdXN0ZXIgZm91bmQgd2l0aCB2YWxpZCBKV0tTIGZvciBj" + + "bHVzdGVyIElEOiA8aWQ+YCAoSUNNUyBsb2cpIHwgSldLUyBpbiBJQ01TIGRvZXNuJ3QgbWF0Y2gg" + + "d2hhdCBjb21wdXRlLXBsYW5lIEs4cyBpcyBjdXJyZW50bHkgc2lnbmluZyB8IGBudmNmLWNsaSBj" + + "bHVzdGVyIHJvdGF0ZSAtLWNsdXN0ZXItaWQ9PGlkPmAgfAp8IEZ1bmN0aW9uIHBvZCBgSW1hZ2VQ" + + "dWxsQmFja09mZmAgaW4gYG52Y2YtYmFja2VuZGAgfCBJbWFnZS1jcmVkZW50aWFsLWhlbHBlciBj" + + "b25maWcgbWlzc2luZyBvciB3cm9uZyB8IGBrdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiBudmNmLWJh" + + "Y2tlbmQgPHBvZD5gOyBjaGVjayB0aGUgcHVsbCBzZWNyZXQgY29uZmlnIHwKfCBGdW5jdGlvbiBk" + + "ZXBsb3kgc3R1Y2sgYERFUExPWUlOR2AgZm9yID41IG1pbiB8IE5BVFMgc3RyZWFtIGluaXQgbGFn" + + "IChjb2xkLWNsdXN0ZXIpIOKAlCB3YWl0LCBvciBjaGVjayBOQVRTIGF1dGgtY2FsbG91dCBoZWFs" + + "dGggfCBga3ViZWN0bCBsb2dzIC1uIG5hdHMtc3lzdGVtIC1sIGFwcC5rdWJlcm5ldGVzLmlvL25h" + + "bWU9bmF0cy1hdXRoLWNhbGxvdXQtc2VydmljZWAgfAoKIyMgVGFza3MKCnwgU3ltcHRvbSB8IENh" + + "dXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYHRhc2sgY3JlYXRlYCByZXR1cm5z" + + "IGBNaXNzaW5nIDxUWVBFPiByZWdpc3RyeSBjcmVkZW50aWFsIGZvciBob3N0bmFtZWAsIG9yIGtl" + + "ZXBzIHVzaW5nIGEgcHJldmlvdXMgY3JlZGVudGlhbCB2YWx1ZSwgc2hvcnRseSBhZnRlciBgcmVn" + + "aXN0cnktY3JlZGVudGlhbCBhZGQvdXBkYXRlL2RlbGV0ZWAgd2hpbGUgYHJlZ2lzdHJ5LWNyZWRl" + + "bnRpYWwgbGlzdGAvYGdldGAgYWxyZWFkeSBzaG93IHRoZSBuZXcgdmFsdWUgfCBFeHBlY3RlZCBw" + + "cm9wYWdhdGlvbiBkZWxheTogTlZDVCBjYWNoZXMgdGhlIGFjY291bnQncyByZWdpc3RyeSBjcmVk" + + "ZW50aWFscyB3aXRoIGBudmN0Lm52Y2YuY2FjaGUtdHRsYCAoZGVmYXVsdCBgUFQ1TWAsIGFib3V0" + + "IDUgbWluKSBhbmQgYXBwbGllcyB0aGUgY2hhbmdlIHdoZW4gdGhhdCBjYWNoZWQgY29weSByZWZy" + + "ZXNoZXMgfCBXYWl0IHVwIHRvIGFib3V0IDUgbWluIGFuZCByZXRyeSwgb3IgYGt1YmVjdGwgLW4g" + + "bnZjZiByb2xsb3V0IHJlc3RhcnQgZGVwbG95bWVudC9udmN0LWFwaWAgdG8gYXBwbHkgaW1tZWRp" + + "YXRlbHkgfApQSwcI864ThHQRAAB0EQAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAsAAkAZGF0" + + "YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vU0tJTEwubWRVVAUAAQCmzhItLS0KbmFt" + + "ZTogbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uCmRlc2NyaXB0aW9uOiA+LQogIEluc3Rh" + + "bGwgYW5kIG9wZXJhdGUgTlZDRiBzZWxmLWhvc3RlZCBjb250cm9sLXBsYW5lIGFuZCBzZXBhcmF0" + + "ZSBjb21wdXRlLXBsYW5lCiAgc3RhY2tzLiBDb3ZlcnMgSGVsbWZpbGUgdmFsdWVzIGFuZCBDTEkg" + + "cHJvZmlsZSBpbnN0YWxsYXRpb24gZmxvd3MsIHRlYXJkb3duLAogIHZhbHVlcyBvdmVycmlkZXMs" + + "IHB1bGwgc2VjcmV0cywgYW5kIHRyb3VibGVzaG9vdGluZy4gVXNlIGZvcgogIG52Y2Ytc2VsZi1t" + + "YW5hZ2VkLXN0YWNrLCBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2ssIHNwbGl0IGNvbXB1dGUtcGxh" + + "bmUKICBpbnN0YWxsYXRpb24sIGNvbnRyb2wtcGxhbmUgaW5zdGFsbGF0aW9uLCBDTEktZ2VuZXJh" + + "dGVkIGNvbnRyb2wtcGxhbmUKICBwcm9maWxlcywgSGVsbWZpbGUsIHNlbGYtbWFuYWdlZCwgb3Ig" + + "c2VsZi1ob3N0ZWQgZGVwbG95bWVudHMuIERvIE5PVCB1c2UgZm9yCiAgbG9jYWwgazNkIGVudmly" + + "b25tZW50czsgdXNlIHRoZSBsb2NhbCBrM2QgZGV2ZWxvcG1lbnQgd29ya2Zsb3cgaW5zdGVhZC4K" + + "bGljZW5zZTogQXBhY2hlLTIuMApjb21wYXRpYmlsaXR5OiBSZXF1aXJlcyBoZWxtZmlsZSA+PSAx" + + "LjEuMCA8IDEuMi4wLCBoZWxtID49IDMuMTIsIGhlbG0tZGlmZiBwbHVnaW4sIGt1YmVjdGwgbWF0" + + "Y2hpbmcgY2x1c3RlciB2ZXJzaW9uCmF1dGhvcjogIm52Y2YtY29yZS1lbmcgPG52Y2YtY29yZS1l" + + "bmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCnZlcnNpb246ICIxLjAuMCIKdGFnczogW252Y2YsIHNl" + + "bGYtbWFuYWdlZCwgaGVsbWZpbGUsIHNlbGYtaG9zdGVkLCBjb250cm9sLXBsYW5lLCBjb21wdXRl" + + "LXBsYW5lLCBjbGktcHJvZmlsZSwgaW5zdGFsbGF0aW9uLCBkZXBsb3ltZW50LCBwdWxsLXNlY3Jl" + + "dHNdCnRvb2xzOiBbU2hlbGwsIFJlYWQsIEVkaXQsIEdyZXAsIEdsb2JdCm1ldGFkYXRhOgogIGlu" + + "dGVybmFsOiBmYWxzZQogIGF1dGhvcjogIm52Y2YtY29yZS1lbmcgPG52Y2YtY29yZS1lbmdAZXhj" + + "aGFuZ2UubnZpZGlhLmNvbT4iCiAgdmVyc2lvbjogIjEuMCIKICB0YWdzOiBbbnZjZiwgc2VsZi1t" + + "YW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQsIGNvbnRyb2wtcGxhbmUsIGNvbXB1dGUtcGxh" + + "bmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24sIGRlcGxveW1lbnQsIHB1bGwtc2VjcmV0c10K" + + "ICBsYW5ndWFnZXM6IFtiYXNoLCB5YW1sXQogIGZyYW1ld29ya3M6IFtoZWxtZmlsZSwgaGVsbSwg" + + "a3ViZWN0bF0KICBkb21haW46IGNsb3VkLWluZnJhc3RydWN0dXJlCi0tLQoKIyBOVkNGIFNlbGYt" + + "TWFuYWdlZCBTdGFjayBPcGVyYXRpb25zCgpPcGVyYXRpb25hbCBndWlkZSBmb3IgbWF0Y2hpbmcg" + + "TlZDRiBjb250cm9sLXBsYW5lIGFuZCBjb21wdXRlLXBsYW5lIEhlbG1maWxlIGJ1bmRsZXMuCgoj" + + "IyBJbnN0cnVjdGlvbnMKClVzZSB0aGlzIHNraWxsIGZvciBpbnN0YWxsLCB1cGdyYWRlLCBvciB0" + + "ZWFyZG93biB3b3JrIGluIG1hdGNoaW5nIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgYW5kIGBu" + + "dmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXM7IGtlZXAgSGVsbWZpbGUgdmFsdWVzIGFu" + + "ZCBDTEkgcHJvZmlsZSBoYW5kb2ZmcyBzZXBhcmF0ZS4gRm9yIGBmdW5jdGlvblR5cGU6ICJMTE0i" + + "YCwgcmVhZCBbTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnRdKHJlZmVyZW5jZXMvaGVsbWZpbGUtc3Ry" + + "dWN0dXJlLm1kI2xsbS1mdW5jdGlvbi1lbmFibGVtZW50KS4KCiMjIFByZXJlcXVpc2l0ZXMKCkFz" + + "ayBmb3IgdGhlIGV4dHJhY3RlZCBgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2tgIHBhdGguIEZvciBz" + + "cGxpdCBpbnN0YWxsYXRpb24sCmFsc28gcmVxdWlyZSB0aGUgbWF0Y2hpbmctdmVyc2lvbiBgbnZj" + + "Zi1jb21wdXRlLXBsYW5lLXN0YWNrYCBwYXRoLiBWZXJpZnkgYm90aDoKCmBgYGJhc2gKbHMgPGNv" + + "bnRyb2wtcGxhbmUtc3RhY2s+L2hlbG1maWxlLmQvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9lbnZp" + + "cm9ubWVudHMvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9zZWNyZXRzLyA8Y29udHJvbC1wbGFuZS1z" + + "dGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmxzIDxjb21wdXRlLXBsYW5lLXN0YWNrPi9oZWxtZmls" + + "ZS5kLyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZW52aXJvbm1lbnRzLyA8Y29tcHV0ZS1wbGFuZS1z" + + "dGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmBgYAoKSWYgZWl0aGVyIGRpcmVjdG9yeSBpcyBtaXNz" + + "aW5nLCBkb3dubG9hZCBtYXRjaGluZyBidW5kbGUgdmVyc2lvbnMgZnJvbSBOR0M6CgpgYGBiYXNo" + + "Cm5nYyByZWdpc3RyeSByZXNvdXJjZSBkb3dubG9hZC12ZXJzaW9uIDxvcmc+L252Y2Ytc2VsZi1t" + + "YW5hZ2VkLXN0YWNrOjx2ZXJzaW9uPgpuZ2MgcmVnaXN0cnkgcmVzb3VyY2UgZG93bmxvYWQtdmVy" + + "c2lvbiA8b3JnPi9udmNmLWNvbXB1dGUtcGxhbmUtc3RhY2s6PHZlcnNpb24+CmBgYAoKQ29udHJv" + + "bC1wbGFuZSBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhlIGNvbnRyb2wtcGxhbmUgYnVuZGxlIHJv" + + "b3QuIFNwbGl0LWZsb3cKY29tbWFuZHMgYW5kIHJvb3Qgc3Vic3RpdHV0aW9uIGFyZSBpbgpbU3Bs" + + "aXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1p" + + "bnN0YWxsYXRpb24ubWQpLgoKIyMgQmVmb3JlIFlvdSBTdGFydAoKVmVyaWZ5IHRvb2xpbmcgYW5k" + + "IGNvbnRleHQgYmVmb3JlIGFueSBvcGVyYXRpb246CgpgYGBiYXNoCmhlbG1maWxlIC0tdmVyc2lv" + + "biAgICMgTXVzdCBiZSAxLjEueCAoMS4yLjAgcmVtb3ZlZCBzZXF1ZW50aWFsIG1vZGUpCmhlbG0g" + + "dmVyc2lvbiAgICAgICAgICMgTXVzdCBiZSA+PSAzLjEyCmhlbG0gcGx1Z2luIGxpc3QgICAgICMg" + + "TXVzdCBpbmNsdWRlIGhlbG0tZGlmZiA+PSAzLjExCmt1YmVjdGwgdmVyc2lvbiAgICAgICMgQ2xp" + + "ZW50IG11c3QgYmUgd2l0aGluIDEgbWlub3IgdmVyc2lvbiBvZiBjbHVzdGVyCmBgYAoKQ29udHJv" + + "bC1wbGFuZSBjb21tYW5kcyBydW4gZnJvbSB0aGUgZXh0cmFjdGVkIGBudmNmLXNlbGYtbWFuYWdl" + + "ZC1zdGFjay9gIHJvb3Q6CgpgYGBiYXNoCmNkIHBhdGgvdG8vbnZjZi1zZWxmLW1hbmFnZWQtc3Rh" + + "Y2sKbHMgaGVsbWZpbGUuZC8gZW52aXJvbm1lbnRzLyBzZWNyZXRzLyBnbG9iYWwueWFtbC5nb3Rt" + + "cGwKYGBgCgpJZGVudGlmeSB0aGUgZW52aXJvbm1lbnQgZnJvbSBgZW52aXJvbm1lbnRzLzxuYW1l" + + "Pi55YW1sYCBhbmQKYHNlY3JldHMvPG5hbWU+LXNlY3JldHMueWFtbGA7IGZvciBFS1MsIHVzZSB0" + + "aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2RvY3MubnZpZGlh" + + "LmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4KCiMjIEhvdyBWYWx1" + + "ZXMgRmxvdwoKVW5kZXJzdGFuZGluZyB2YWx1ZSBwcmVjZWRlbmNlIHByZXZlbnRzIHRoZSBtb3N0" + + "IGNvbW1vbiBjb25maWd1cmF0aW9uIG1pc3Rha2VzLgoKYGBgdGV4dAplbnZpcm9ubWVudHMvYmFz" + + "ZS55YW1sICAgICAgICAgIChkZWZhdWx0cykKICAgIC0+IG1lcmdlZCB3aXRoCmVudmlyb25tZW50" + + "cy88ZW52Pi55YW1sICAgICAgICAgKHlvdXIgb3ZlcnJpZGVzKQogICAgLT4gY29uc3VtZWQgYnkK" + + "Z2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAoR28gdGVtcGxhdGUsIGNvbnN0cnVjdHMg" + + "cGVyLWNoYXJ0IHZhbHVlcykKICAgIC0+IGNvbnN1bWVkIGJ5CnNlY3JldHMvPGVudj4tc2VjcmV0" + + "cy55YW1sICAgICAgKHNlbnNpdGl2ZSB2YWx1ZXMpCiAgICAtPiBvdmVycmlkZGVuIGJ5CnJlbGVh" + + "c2UgaW5saW5lIHZhbHVlczogYmxvY2tzICAgKGhpZ2hlc3QgcHJlY2VkZW5jZSkKYGBgCgpDcml0" + + "aWNhbDogYGdsb2JhbC55YW1sLmdvdG1wbGAgb25seSBwYXNzZXMgdGhyb3VnaCBzcGVjaWZpYyBr" + + "ZXlzIHRvIGVhY2ggY2hhcnQgKGltYWdlIHJlZ2lzdHJpZXMsIG5vZGUgc2VsZWN0b3JzLCBzdG9y" + + "YWdlLCByZXBsaWNhIGNvdW50cykuIFNldHRpbmcgYW4gYXJiaXRyYXJ5IGNoYXJ0IHZhbHVlIGlu" + + "IHRoZSBlbnZpcm9ubWVudCBmaWxlIHdpbGwgYmUgc2lsZW50bHkgaWdub3JlZCBpZiBgZ2xvYmFs" + + "LnlhbWwuZ290bXBsYCBkb2VzIG5vdCBwcm9wYWdhdGUgaXQuCgpUbyBvdmVycmlkZSBhcmJpdHJh" + + "cnkgY2hhcnQgdmFsdWVzLCB1c2UgYSBoZWxtZmlsZSByZWxlYXNlIGB2YWx1ZXM6YCBibG9jay4g" + + "U2VlIFtPdmVycmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzXSgjb3ZlcnJpZGluZy1oZWxtLWNoYXJ0" + + "LXZhbHVlcykuCgojIyBDbGVhbiBJbnN0YWxsYXRpb24KCiMjIyAxLiBDcmVhdGUgbmFtZXNwYWNl" + + "cyBhbmQgaW1hZ2UgcHVsbCBzZWNyZXRzIChpZiB1c2luZyBhIHByaXZhdGUgcmVnaXN0cnkpCgpg" + + "YGBiYXNoCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtl" + + "eXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgY3JlYXRl" + + "IG5hbWVzcGFjZSAiJG5zIiAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5" + + "IC1mIC0KZG9uZQoKIyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGUu" + + "Zy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmZvciBucyBp" + + "biBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVs" + + "dC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXIt" + + "cmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAt" + + "LWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIk" + + "TkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGll" + + "bnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpkb25lCmBgYAoKSWYgdXNpbmcgcHVsbCBz" + + "ZWNyZXRzLCB5b3UgbXVzdCBhbHNvIGNvbmZpZ3VyZSBlYWNoIGhlbG1maWxlIHJlbGVhc2UgdG8g" + + "cmVmZXJlbmNlIHRoZW0uIFNlZSBbSW1hZ2UgUHVsbCBTZWNyZXRzXSgjaW1hZ2UtcHVsbC1zZWNy" + + "ZXRzKS4KCiMjIyAyLiBBdXRoZW50aWNhdGUgaGVsbSB0byB5b3VyIGNoYXJ0IHJlZ2lzdHJ5CgpC" + + "b3RoIGBkb2NrZXIgbG9naW5gIEFORCBgaGVsbSByZWdpc3RyeSBsb2dpbmAgYXJlIHJlcXVpcmVk" + + "IGZvciBOR0MuIEhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kgY2hh" + + "cnRzLCBzbyB0aGUgaGVsbSBjcmVkZW50aWFsIHN0b3JlIG11c3QgYmUgYXV0aGVudGljYXRlZCBz" + + "ZXBhcmF0ZWx5LgoKYGBgYmFzaAojIE5HQyAtLSBib3RoIGNvbW1hbmRzIGFyZSByZXF1aXJlZApk" + + "b2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmhl" + + "bG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9L" + + "RVkiCgojIEVDUgphd3MgZWNyIGdldC1sb2dpbi1wYXNzd29yZCAtLXJlZ2lvbiA8cmVnaW9uPiB8" + + "IFwKICBoZWxtIHJlZ2lzdHJ5IGxvZ2luIC0tdXNlcm5hbWUgQVdTIC0tcGFzc3dvcmQtc3RkaW4g" + + "PGFjY291bnQ+LmRrci5lY3IuPHJlZ2lvbj4uYW1hem9uYXdzLmNvbQpgYGAKCj4gTm90ZTogYGhl" + + "bG0gcmVnaXN0cnkgbG9naW5gIGtlZXBzIG9ubHkgdGhlIGxhc3QgbG9naW4gcGVyIGhvc3QgKG11" + + "bHRpLW9yZyBnb3RjaGEpLgo+IFRoZSBzdGFjayBhbmQgdGhlIGNhY2hlcyBzcGFuIHNldmVyYWwg" + + "TkdDIG9yZ3MgdGhhdCBuZWVkIGRpZmZlcmVudCBrZXlzLCBidXQgdGhleSBhbGwKPiBsaXZlIHVu" + + "ZGVyIHRoZSBvbmUgaG9zdCBgbnZjci5pb2AuIEEgc2Vjb25kIGBoZWxtIHJlZ2lzdHJ5IGxvZ2lu" + + "IG52Y3IuaW9gIChvcgo+IGBkb2NrZXIgbG9naW5gKSB3aXRoIGEgZGlmZmVyZW50IGtleSBzaWxl" + + "bnRseSBvdmVyd3JpdGVzIHRoZSBmaXJzdCwgc28gcHVsbHMgZm9yIHRoZQo+IGZpcnN0IG9yZyB0" + + "aGVuIGZhaWwgd2l0aCBhIG1pc2xlYWRpbmcgYDQwMyBBY2Nlc3MgRGVuaWVkYCAobm90IGEgNDAx" + + "OiB0aGUgYXV0aAo+IHN1Y2NlZWRlZCwgaXQncyB0aGUgd3Jvbmctb3JnIGtleSkuIElmIHlvdSBw" + + "dWxsIGNoYXJ0cy9pbWFnZXMgZnJvbSBtb3JlIHRoYW4gb25lIG9yZywKPiBlaXRoZXIgcmUtcnVu" + + "IHRoZSBsb2dpbiB3aXRoIHRoZSBjb3JyZWN0IGtleSBpbW1lZGlhdGVseSBiZWZvcmUgZWFjaCBw" + + "dWxsLCBvciBwYXNzCj4gYC0tdXNlcm5hbWUgJyRvYXV0aHRva2VuJyAtLXBhc3N3b3JkIDxrZXk+" + + "YCBwZXIgYGhlbG0gcHVsbGAgaW52b2NhdGlvbiBpbnN0ZWFkIG9mIHJlbHlpbmcKPiBvbiB0aGUg" + + "c3RvcmVkIGxvZ2luLiAoUHVsbGluZyBldmVyeXRoaW5nIGZyb20gYSBzaW5nbGUgcmVnaXN0cnkg" + + "bWlycm9yIGF2b2lkcyB0aGlzCj4gZW50aXJlbHkuKQoKIyMjIDJiLiAoUmVjb21tZW5kZWQpIFB1" + + "bGwgZnJvbSBhIHJlZ2lzdHJ5IHRoZSBjbHVzdGVyIGF1dGhlbnRpY2F0ZXMgdG8gYXV0b21hdGlj" + + "YWxseQoKSWYgeW91IG1pcnJvciB0aGUgTlZDRiBpbWFnZXMgaW50byBhIHJlZ2lzdHJ5IHRoYXQg" + + "dGhlIGNsdXN0ZXIgY2FuIHB1bGwgZnJvbSB3aXRob3V0IGFuCmV4cGxpY2l0IGltYWdlIHB1bGwg" + + "c2VjcmV0IChmb3IgZXhhbXBsZSwgYSByZWdpc3RyeSB3aGVyZSB0aGUgbm9kZSBvciB3b3JrbG9h" + + "ZCBpZGVudGl0eSBpcwpncmFudGVkIHB1bGwgYWNjZXNzIGF1dG9tYXRpY2FsbHkpLCBwb2ludCB0" + + "aGUgc3RhY2sgYXQgaXQgYW5kIHNraXAgdGhlIGNyZWRlbnRpYWwgc3RlcHMKYWJvdmUuCgoxLiBQ" + + "b2ludCB0aGUgc3RhY2sgYXQgdGhlIG1pcnJvciBpbiBgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxg" + + "OgoKICAgYGBgeWFtbAogICBnbG9iYWw6CiAgICAgaW1hZ2U6CiAgICAgICByZWdpc3RyeTogPHlv" + + "dXItcmVnaXN0cnk+ICAgICAgICAgICAgIyBlLmcuIHJlZ2lzdHJ5LmV4YW1wbGUuY29tCiAgICAg" + + "ICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICAgIGhlbG06CiAgICAgICBzb3VyY2Vz" + + "OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25seSBpZiB5b3UgYWxzbyBtaXJyb3Jl" + + "ZCB0aGUgaGVsbSBjaGFydHMKICAgICAgICAgcmVnaXN0cnk6IDx5b3VyLXJlZ2lzdHJ5PgogICAg" + + "ICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICBgYGAKCiAgID4gVGhlIG1hbmlm" + + "ZXN0IGhhcyBhIG1peCBvZiBPQ0kgYW5kIG5vbi1PQ0kgYXJ0aWZhY3RzLCBzbyBjb252ZXJ0IG5v" + + "bi1PQ0kgY2hhcnRzIGJlZm9yZQogICA+IG1pcnJvcmluZy4gQ29udGFpbmVyIGltYWdlcyAoYG52" + + "Y3IuaW8vLi4uYCkgYXJlIGFscmVhZHkgT0NJIGFuZCBtaXJyb3IgYXMtaXMuIFNvbWUgSGVsbQog" + + "ICA+IGNoYXJ0cywgdGhvdWdoLCBhcmUgcHVibGlzaGVkIHRvIGFuIGBodHRwczovL2AgSGVsbSBy" + + "ZXBvc2l0b3J5IChmb3IgZXhhbXBsZQogICA+IGBoZWxtLm5nYy5udmlkaWEuY29tYCkuIFRob3Nl" + + "IGFyZSBub3QgT0NJIGFuZCBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgYGdsb2JhbC5oZWxtLnNvdXJj" + + "ZXNgCiAgID4gKE9DSSkgb3IgbWlycm9yZWQgZGlyZWN0bHkuIEJlZm9yZSBwb2ludGluZyB0aGUg" + + "c3RhY2sgYXQgeW91ciBtaXJyb3IsIGNvbnZlcnQgZWFjaAogICA+IGBodHRwczovL2AgY2hhcnQg" + + "dG8gT0NJOiBgaGVsbSByZXBvIGFkZGAvYGhlbG0gcHVsbGAgdGhlIGAudGd6YCwgdGhlbgogICA+" + + "IGBoZWxtIHB1c2ggPGNoYXJ0Pi50Z3ogb2NpOi8vPHlvdXItcmVnaXN0cnk+LzxtaXJyb3Itc3Vi" + + "LXBhdGg+YC4gT25seSBPQ0kgY2hhcnRzIGNhbiBsaXZlCiAgID4gdW5kZXIgYGdsb2JhbC5oZWxt" + + "LnNvdXJjZXNgLgoKMi4gU2tpcCB0aGUgY3JlZGVudGlhbCBzdGVwcyBhYm92ZS4gV2hlbiB0aGUg" + + "Y2x1c3RlciBhdXRoZW50aWNhdGVzIHRvIHRoZSByZWdpc3RyeQogICBhdXRvbWF0aWNhbGx5ICh0" + + "aGUgbm9kZSBvciB3b3JrbG9hZCBpZGVudGl0eSBoYXMgcHVsbCBhY2Nlc3MpLCB0aGUgcHVsbCBu" + + "ZWVkcyBubwogICBLdWJlcm5ldGVzIHNlY3JldCwgc28geW91IGRvIG5vdCBuZWVkOiB0aGUgcGVy" + + "LW5hbWVzcGFjZSBgbnZjci1jcmVkc2AgZnJvbSBzdGVwIDEKICAgKHN0aWxsIGNyZWF0ZSB0aGUg" + + "bmFtZXNwYWNlcywganVzdCBub3QgdGhlIHNlY3JldCksIHRoZSBgZ2xvYmFsLmltYWdlUHVsbFNl" + + "Y3JldHNgIGVudHJ5LAogICBvciB0aGUgYGRvY2tlciBsb2dpbmAvYGhlbG0gcmVnaXN0cnkgbG9n" + + "aW4gbnZjci5pb2AgZnJvbSBzdGVwIDIuCgogICA+IE9uZSByZXNpZHVhbCBjcmVkZW50aWFsOiBu" + + "dmNmLWFwaSBzdGlsbCB2YWxpZGF0ZXMgdGhlIHVzZXIgZnVuY3Rpb24gaW1hZ2UgYXQKICAgPiBg" + + "ZnVuY3Rpb24gY3JlYXRlYCB2aWEgdGhlIGFjY291bnQgcmVnaXN0cnkgY3JlZGVudGlhbCwgc28g" + + "dGhhdCBjcmVkZW50aWFsIG11c3QgcG9pbnQgYXQKICAgPiB3aGljaGV2ZXIgcmVnaXN0cnkgaG9s" + + "ZHMgdGhlIHVzZXIgaW1hZ2UgKHNldCBpdCB0byB5b3VyIG1pcnJvciBpZiB0aGUgaW1hZ2UgaXMg" + + "bWlycm9yZWQKICAgPiB0aGVyZSkuCgojIyMgMy4gU2V0IHRoZSByb3V0ZSBkb21haW4KCmBnbG9i" + + "YWwuZG9tYWluYCBzZXRzIHRoZSBob3N0bmFtZSBzdWZmaXggZm9yIHJvdXRlcyBzdWNoIGFzIGBh" + + "cGkuPGRvbWFpbj5gLiBJdCBkb2VzIG5vdCBjb25maWd1cmUgdGhlIEdhdGV3YXkgb3IgaXRzIGxv" + + "YWQgYmFsYW5jZXIuIFF1ZXJ5IHRoZSBleGFjdCBleGlzdGluZyBHYXRld2F5OgoKYGBgYmFzaApH" + + "QVRFV0FZX0FERFJFU1M9JChrdWJlY3RsIGdldCBnYXRld2F5IDxnYXRld2F5LW5hbWU+IC1uIDxn" + + "YXRld2F5LW5hbWVzcGFjZT4gLW8ganNvbnBhdGg9J3suc3RhdHVzLmFkZHJlc3Nlc1swXS52YWx1" + + "ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSRVNTIgpgYGAKClRoZSBhZGRyZXNzIG1heSBiZSBh" + + "IGhvc3RuYW1lIG9yIElQLiBDbG91ZCBwcm92aWRlciBhbmQgR2F0ZXdheSBjb25maWd1cmF0aW9u" + + "IGRldGVybWluZSB0aGUgbG9hZCBiYWxhbmNlciB0eXBlIGFuZCBhZGRyZXNzIGZvcm1hdC4gVGhl" + + "IHNlbGYtbWFuYWdlZCBzdGFjayBkb2VzIG5vdCBzZWxlY3QgZWl0aGVyLgoKRm9yIHRlbXBvcmFy" + + "eSB0ZXN0aW5nIHdpdGhvdXQgRE5TLCB1c2UgYSBzdGFibGUgcmVzZXJ2ZWQgc3VmZml4IHN1Y2gg" + + "YXMgYGdsb2JhbC5kb21haW46ICJudmNmLnRlc3QiYCwgY29ubmVjdCB0byBgR0FURVdBWV9BRERS" + + "RVNTYCwgYW5kIHNlbmQgYEhvc3Q6IGFwaS5udmNmLnRlc3RgLiBGb3IgcHJvZHVjdGlvbiwgdXNl" + + "IHlvdXIgYmFzZSBETlMgZG9tYWluIGFuZCBwb2ludCBpdHMgcm91dGUgcmVjb3JkcyB0byBgR0FU" + + "RVdBWV9BRERSRVNTYC4gSWYgdGhlIGVuZHBvaW50IGxhdGVyIGNoYW5nZXMsIGtlZXAgYGdsb2Jh" + + "bC5kb21haW5gIHN0YWJsZSBhbmQgdXBkYXRlIG9ubHkgRE5TIG9yIHRoZSBjbGllbnQgZGVzdGlu" + + "YXRpb24uIFNlZSBFeGFtcGxlIDQgaW4gW2V4YW1wbGVzLm1kXShleGFtcGxlcy5tZCkuCgojIyMg" + + "NC4gUHJldmlldyBhbmQgZGVwbG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhl" + + "bG1maWxlIHRlbXBsYXRlICAgIyBQcmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0cwpIRUxNRklMRV9F" + + "TlY9PGVudi1uYW1lPiBoZWxtZmlsZSBzeW5jICAgICAgICMgRGVwbG95CmBgYAoKPiBTZXQgQk9U" + + "SCBDYXNzYW5kcmEgcGFzc3dvcmRzIGluIHRoZSBzZWNyZXRzIGZpbGUuIFRoZSBzZWNyZXRzIGZp" + + "bGUgZG9jdW1lbnRzCj4gYERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYCwgYnV0IHRoZSBjYXNz" + + "YW5kcmEgY2hhcnQgaGFzIGEgc2Vjb25kIGNyZWRlbnRpYWwsCj4gYGNhc3NhbmRyYS5zZXJ2aWNl" + + "Um9sZVBhc3N3b3JkYCwgdGhhdCBkZWZhdWx0cyB0byBgY2hAbmczbTNgLiBJZiB5b3Ugc2V0IG9u" + + "bHkKPiBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgLCB0aGUgc2VydmljZSByb2xlIGtlZXBz" + + "IHRoYXQgZGVmYXVsdCBhbmQgZXZlcnkgREItYmFja2VkCj4gc2VydmljZSBjcmFzaC1sb29wcyB3" + + "aXRoIGBCYWQgY3JlZGVudGlhbHNgIG9uY2UgaXQgdHJpZXMgdG8gYXV0aGVudGljYXRlLiBTZXQK" + + "PiBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHRvIHRoZSBzYW1lIHZhbHVlIGFzIGBE" + + "RUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAuCgojIyMgNS4gRGVwbG95bWVudCBwaGFzZXMKCkhl" + + "bG1maWxlIGRlcGxveXMgaW4gb3JkZXIgd2l0aCBkZXBlbmRlbmNpZXM6Cgp8IFBoYXNlIHwgU2Vs" + + "ZWN0b3IgfCBTZXJ2aWNlcyB8IFdhaXQgdGltZSB8CnwtLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0t" + + "LS0tLXwtLS0tLS0tLS0tLXwKfCAxIHwgYHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzYCB8IE5B" + + "VFMsIE9wZW5CYW8sIENhc3NhbmRyYSB8IDUtMTAgbWluIHwKfCAyIHwgYHJlbGVhc2UtZ3JvdXA9" + + "c2VydmljZXNgIHwgQVBJLCBTSVMsIEVTUywgaW52b2NhdGlvbiwgZ3JwYy1wcm94eSwgbm90YXJ5" + + "LCBhcGkta2V5cywgb3B0aW9uYWwgTExNIGdhdGV3YXkvcm91dGVyLCBvcHRpb25hbCBWYW5pdHkg" + + "R2F0ZXdheSwgTlZDRiBVSSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoZSBhZGRv" + + "biB8IDUtMTAgbWluIHwKfCAzIHwgYHJlbGVhc2UtZ3JvdXA9aW5ncmVzc2AgfCBHYXRld2F5IHJv" + + "dXRlcyB8IDEtMiBtaW4gfAp8IDQgfCBgcmVsZWFzZS1ncm91cD1vYnNlcnZhYmlsaXR5YCB8IE9i" + + "c2VydmFiaWxpdHkgc3RhY2sgKGlmIGVuYWJsZWQpIHwgMS0yIG1pbiB8CgpNb25pdG9yIGluIGEg" + + "c2VwYXJhdGUgdGVybWluYWw6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLXcKYGBgCgoj" + + "IyMgNi4gRW5hYmxlIFZhbml0eSBHYXRld2F5IChvcHRpb25hbCkKClZhbml0eSBHYXRld2F5IGlz" + + "IGRpc2FibGVkIGJ5IGRlZmF1bHQgYW5kIGlzIG9ubHkgbmVlZGVkIGZvciBjdXN0b21lci1mYWNp" + + "bmcKaG9zdG5hbWVzIG9yIHBhdGggbWFwcGluZ3MgaW4gZnJvbnQgb2YgdGhlIHN0YW5kYXJkIE5W" + + "Q0YgQVBJIGFuZCBpbnZvY2F0aW9uCnJvdXRlcy4gSXQgaXMgYXZhaWxhYmxlIG9ubHkgaW4gc3Rh" + + "Y2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBWYW5pdHkgR2F0ZXdheQphZGRvbi4gSWYgdGhl" + + "IGV4dHJhY3RlZCBzdGFjayBwYWNrYWdlIGRvZXMgbm90IGNvbnRhaW4gYSBgdmFuaXR5LWdhdGV3" + + "YXlgCnJlbGVhc2UgYW5kIGB2YW5pdHlHYXRld2F5YCByb3V0ZSB2YWx1ZXMsIHNraXAgdGhlc2Ug" + + "Y29tbWFuZHMgYW5kIHVzZSBhIG5ld2VyCnN0YWNrIHBhY2thZ2UgdGhhdCBpbmNsdWRlcyB0aGVt" + + "LgoKSWYgdGhlIHN0YWNrIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLCBlbmFibGUgaXQgaW4K" + + "YGVudmlyb25tZW50cy88ZW52LW5hbWU+LnlhbWxgOgoKYGBgeWFtbAphZGRvbnM6CiAgdmFuaXR5" + + "R2F0ZXdheToKICAgIGVuYWJsZWQ6IHRydWUKICAgIG1hcHBpbmdDb25maWc6IHt9CmBgYAoKVGhl" + + "IGRlZmF1bHQgcm91dGUgaG9zdCBpcyBgdmFuaXR5Ljxkb21haW4+YCBhbmQgdGhlIGJhY2tlbmQg" + + "aXMKYHZhbml0eS1nYXRld2F5Lm52Y2Y6ODA4MGAuIFB1dCBkZXBsb3ltZW50LXNwZWNpZmljIGhv" + + "c3QgYW5kIHBhdGggbWFwcGluZ3MgdW5kZXIKYGFkZG9ucy52YW5pdHlHYXRld2F5Lm1hcHBpbmdD" + + "b25maWdgLiBJZiB5b3UgbmVlZCBjdXN0b20gdmFuaXR5IGhvc3RzIGluc3RlYWQgb2YKYHZhbml0" + + "eS48ZG9tYWluPmAsIHVzZSB0aGUgcm91dGUgaG9zdG5hbWUgb3ZlcnJpZGVzIHN1cHBvcnRlZCBi" + + "eSB0aGUgc3RhY2sKcGFja2FnZSBhbmQgY3JlYXRlIG1hdGNoaW5nIEROUyByZWNvcmRzLgoKQWZ0" + + "ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYHZhbml0eS1nYXRld2F5YCBy" + + "ZWxlYXNlLCBwcmV2aWV3IGFuZAphcHBseSB0aGUgc2VydmljZSBhbmQgcm91dGU6CgpgYGBiYXNo" + + "CkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT12YW5pdHkt" + + "Z2F0ZXdheSB0ZW1wbGF0ZQpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVj" + + "dG9yIG5hbWU9dmFuaXR5LWdhdGV3YXkgc3luYwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxt" + + "ZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBgYAoKVmVyaWZ5IHRo" + + "ZSByb3V0ZSBvbmx5IHdoZW4gdGhlIGFkZG9uIGlzIHByZXNlbnQgYW5kIGVuYWJsZWQ6CgpgYGBi" + + "YXNoCmt1YmVjdGwgZ2V0IGRlcGxveSxzdmMgLW4gbnZjZiAtbCBhcHAua3ViZXJuZXRlcy5pby9u" + + "YW1lPXZhbml0eS1nYXRld2F5Cmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgLWkgdmFu" + + "aXR5CmN1cmwgLUggIkhvc3Q6IHZhbml0eS48ZG9tYWluPiIgImh0dHA6Ly88Z2F0ZXdheS1hZGRy" + + "ZXNzPi9oZWFsdGgiCmBgYAoKRG8gbm90IGVuYWJsZSBWYW5pdHkgR2F0ZXdheSBmb3Igc3RhbmRh" + + "cmQgQVBJLCBBUEkgS2V5cywgaW52b2NhdGlvbiwgTExNCmludm9jYXRpb24sIG9yIGdSUEMgdHJh" + + "ZmZpYy4gVGhvc2Ugcm91dGVzIGFyZSBwcm92aWRlZCBieSB0aGUgYmFzZSBnYXRld2F5CnJvdXRl" + + "cy4KCiMjIyA3LiBFbmFibGUgTlZDRiBVSSAob3B0aW9uYWwpCgpOVkNGIFVJIGlzIGFuIG9wdGlv" + + "bmFsLCBjdXN0b21lci1mYWNpbmcgYWRtaW4tcGFuZWwgVUkuIEl0IGlzIGRpc2FibGVkIGJ5CmRl" + + "ZmF1bHQgYW5kIGF2YWlsYWJsZSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRoYXQgaW5jbHVkZSB0" + + "aGUgTlZDRiBVSSBhZGRvbi4gSWYKeW91ciBleHRyYWN0ZWQgc3RhY2sgcGFja2FnZSBkb2VzIG5v" + + "dCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UgYW5kIGBudmNmVWlgCnJvdXRlIHZhbHVlcywg" + + "c2tpcCB0aGlzIHNlY3Rpb24uIFRoZSBOVkNGIFVJIGFkbWluIHBhbmVsIGlzIGN1cnJlbnRseQp1" + + "bmF1dGhlbnRpY2F0ZWQ7IGRvIG5vdCBleHBvc2UgaXQgdG8gdGhlIHB1YmxpYyBpbnRlcm5ldC4K" + + "CkZvciBlbmFibGVtZW50LCBuYW1lc3BhY2UgYW5kIHB1bGwgc2VjcmV0IHNldHVwLCBhcHBseSwg" + + "YW5kIHZlcmlmaWNhdGlvbiBzdGVwcywKc2VlIFtOVkNGIFVJIEFkZG9uXShyZWZlcmVuY2VzL252" + + "Y2YtdWktYWRkb24ubWQpLgoKIyMjIDguIEluc3RhbGwgdGhlIHNlcGFyYXRlIGNvbXB1dGUtcGxh" + + "bmUgc3RhY2sKClRoZSBjb250cm9sLXBsYW5lIHN0YWNrIGRvZXMgbm90IGluc3RhbGwgY29tcHV0" + + "ZS1wbGFuZSBjb21wb25lbnRzLiBBZnRlciBpdCBpcyBoZWFsdGh5LCBjaG9vc2UgZXhhY3RseSBv" + + "bmUgY29tcHV0ZS1wbGFuZSBoYW5kb2ZmOgoKLSBIZWxtZmlsZSB2YWx1ZXMgZmxvdzogYXV0aG9y" + + "IHNlcGFyYXRlIGVudmlyb25tZW50IGZpbGVzLCB0aGVuIHJlZ2lzdGVyIGFuZAogIGluc3RhbGwg" + + "d2l0aCB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZS4KLSBDTEkgcHJvZmlsZSBmbG93OiB1c2Ug" + + "dGhlIHByb2ZpbGUgZ2VuZXJhdGVkIGJ5IHRoZSBDTEkgY29udHJvbC1wbGFuZSBpbnN0YWxsLAog" + + "IHRoZW4gcnVuIHRoZSBjb21wbGV0ZSBDTEkgcmVnaXN0ZXIgYW5kIGluc3RhbGwgY29tbWFuZHMu" + + "CgpEbyBub3QgbWl4IHRoZXNlIGhhbmRvZmZzLiBGb2xsb3cgW1NwbGl0IENvbXB1dGUtUGxhbmUg" + + "SW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKQpm" + + "b3IgY29tbWFuZHMsIEVLUyByb3V0aW5nLCBwdWxsIHNlY3JldHMsIHZlcmlmaWNhdGlvbiwgYW5k" + + "IHRlYXJkb3duIG9yZGVyLgoKIyMgQ2xlYW4gVGVhcmRvd24KCkRlc3Ryb3kgZXZlcnkgY29tcHV0" + + "ZSBwbGFuZSBiZWZvcmUgdGhlIGNvbnRyb2wgcGxhbmUsIHVzaW5nIHRoZSB0ZWFyZG93biBmb3IK" + + "dGhlIHNhbWUgaGFuZG9mZjsgc2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0o" + + "cmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCN0ZWFyZG93bikuCgpTY29w" + + "ZTogT25seSBkZXN0cm95IHJlbGVhc2VzIG1hbmFnZWQgYnkgdGhpcyBjb250cm9sLXBsYW5lIGhl" + + "bG1maWxlIHN0YWNrLiBUaGUgTlZDRiByZWxlYXNlcyBhcmU6IGBuYXRzYCwgYG9wZW5iYW8tc2Vy" + + "dmVyYCwgYGNhc3NhbmRyYWAsIGBhcGkta2V5c2AsIGBzaXNgLCBgYXBpYCwgYGludm9jYXRpb24t" + + "c2VydmljZWAsIGBncnBjLXByb3h5YCwgYGVzcy1hcGlgLCBgbm90YXJ5LXNlcnZpY2VgLCBvcHRp" + + "b25hbCBgdmFuaXR5LWdhdGV3YXlgLCBgbnZjZi11aWAsIGBhZG1pbi1pc3N1ZXItcHJveHlgLCBh" + + "bmQgYGluZ3Jlc3NgOyBgY2VydC1tYW5hZ2VyYCBpcyBpbmNsdWRlZCBvbmx5IHdoZW4gYGNlcnRN" + + "YW5hZ2VyLmVuYWJsZWQ6IHRydWVgLiBUaGUgY29udHJvbC1wbGFuZSBuYW1lc3BhY2UgaW52ZW50" + + "b3J5IGFsc28gaW5jbHVkZXMgYGNlcnQtbWFuYWdlcmAsIGJ1dCBkZWZhdWx0IG5hbWVzcGFjZSBj" + + "bGVhbnVwIHByZXNlcnZlcyBpdC4gTmFtZXNwYWNlIHByZXNlcnZhdGlvbiBkb2VzIG5vdCBwcmVz" + + "ZXJ2ZSB0aGUgSGVsbSByZWxlYXNlLiBFeHRlcm5hbCBjZXJ0LW1hbmFnZXIgbXVzdCB1c2UgYGNl" + + "cnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNlYDsgb3RoZXJ3aXNlIEhlbG1maWxlIHRyZWF0cyB0aGUg" + + "cmVsZWFzZSBhcyBzdGFjay1tYW5hZ2VkLiBEbyBub3QgZGVsZXRlIG90aGVyIGhlbG0gcmVsZWFz" + + "ZXMgb3IgbmFtZXNwYWNlcyBvbiB0aGUgY2x1c3Rlci4KCkJlZm9yZSBjb250cm9sLXBsYW5lIGRl" + + "c3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLiBGb3IgYW4g" + + "ZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIuZW5h" + + "YmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQgc3Rh" + + "Y2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVkOiB0" + + "cnVlYCwgdmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQgYWJv" + + "cnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBQcmVzZXJ2ZSB0aGUgbmFtZXNw" + + "YWNlIGJ5IGRlZmF1bHQ7IG9ubHkgcGxhbiBpdHMgcmVtb3ZhbCBhZnRlciB2ZXJpZnlpbmcgbmFt" + + "ZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGdldHRpbmcgZXhwbGljaXQgY29uZmlybWF0aW9uLgoKIyMj" + + "IFN0YW5kYXJkIHRlYXJkb3duCgpSdW4gZnJvbSBpbnNpZGUgdGhlIGBudmNmLXNlbGYtbWFuYWdl" + + "ZC1zdGFjay9gIGRpcmVjdG9yeToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVs" + + "bWZpbGUgZGVzdHJveQpgYGAKCiMjIyBEZWxldGUgbmFtZXNwYWNlcwoKYGBgYmFzaApmb3IgbnMg" + + "aW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgbnZj" + + "Zi11aSB2YXVsdC1zeXN0ZW07IGRvCiAga3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlICIkbnMiIC0t" + + "aWdub3JlLW5vdC1mb3VuZApkb25lCmBgYAoKIyMjIFZlcmlmeSBjbGVhbgoKYGBgYmFzaAprdWJl" + + "Y3RsIGdldCBucyB8IGdyZXAgLUUgJyhjYXNzYW5kcmF8bmF0c3x2YXVsdHxudmNmfGFwaS1rZXlz" + + "fGVzc3xzaXMpJwojIFNob3VsZCByZXR1cm4gZW1wdHkKYGBgCgojIyBPdmVycmlkaW5nIEhlbG0g" + + "Q2hhcnQgVmFsdWVzCgojIyMgRW52aXJvbm1lbnQgZmlsZSAobGltaXRlZCkKCldvcmtzIG9ubHkg" + + "Zm9yIGtleXMgdGhhdCBgZ2xvYmFsLnlhbWwuZ290bXBsYCBwcm9wYWdhdGVzIChlLmcuLCBgY2Fz" + + "c2FuZHJhLnJlcGxpY2FDb3VudGAsIGBnbG9iYWwuc3RvcmFnZUNsYXNzYCwgYGdsb2JhbC5pbWFn" + + "ZWApLgoKIyMjIFJlbGVhc2UgdmFsdWVzIGJsb2NrIChhbnkgY2hhcnQgdmFsdWUpCgpFZGl0IHRo" + + "ZSByZWxlYXNlIGluIGBoZWxtZmlsZS5kLyoueWFtbC5nb3RtcGxgIGFuZCBhZGQgYSBgdmFsdWVz" + + "OmAgYmxvY2suIEluIHRoZSBleGFtcGxlcyBiZWxvdywgYDxwcml2YXRlLXZhbHVlcz5gIHJlZmVy" + + "cyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxlIHN0YWNrIHJvb3Qu" + + "CgpgYGB5YW1sCi0gbmFtZTogY2Fzc2FuZHJhCiAgdmVyc2lvbjogMC44LjAKICBjb25kaXRpb246" + + "IGNhc3NhbmRyYS5lbmFibGVkCiAgbmFtZXNwYWNlOiBjYXNzYW5kcmEtc3lzdGVtCiAgPDw6ICpk" + + "ZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwKICAgIC0gLi4v" + + "PHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRz" + + "LnlhbWwKICAgIC0gY2Fzc2FuZHJhOgogICAgICAgIHJlc291cmNlczoKICAgICAgICAgIGxpbWl0" + + "czoKICAgICAgICAgICAgY3B1OiAiOCIKICAgICAgICAgICAgbWVtb3J5OiA4MTkyTWkKICAgICAg" + + "ICAgIHJlcXVlc3RzOgogICAgICAgICAgICBjcHU6ICIyIgogICAgICAgICAgICBtZW1vcnk6IDQw" + + "OTZNaQpgYGAKCllBTUwgbWVyZ2UgZ290Y2hhOiBXaGVuIGEgcmVsZWFzZSB1c2VzIGA8PDogKmRl" + + "cGVuZGVuY3lgIG9yIGBpbmhlcml0YCwgc3BlY2lmeWluZyBgdmFsdWVzOmAgcmVwbGFjZXMgdGhl" + + "IHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QuIFlvdSBtdXN0IHJlLWluY2x1ZGUgYGdsb2JhbC55YW1s" + + "LmdvdG1wbGAgYW5kIHRoZSBzZWNyZXRzIGZpbGUuCgojIyMgUHJldmlldyBhbmQgYXBwbHkgYSBz" + + "aW5nbGUgcmVsZWFzZQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxl" + + "Y3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSAgIyBQcmV2aWV3CkhFTE1GSUxFX0VOVj08ZW52" + + "PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMgICAgICAjIEFwcGx5CmBg" + + "YAoKIyMgSW1hZ2UgUHVsbCBTZWNyZXRzCgpUaGVyZSBhcmUgdGhyZWUgZGlzdGluY3QgY3JlZGVu" + + "dGlhbCB0eXBlcy4gRG8gbm90IGNvbmZsYXRlIHRoZW0sIGFuZCBtaW5kIHRoZQpmb3JtYXQgcnVs" + + "ZSBiZWxvdyAodHdvIG9mIHRoZW0gZmFpbCBldmVuIHdpdGggdGhlIGNvcnJlY3Qga2V5IGlmIHRo" + + "ZSBmb3JtYXQgaXMgd3JvbmcpOgoKfCB8IENvbnRyb2wgUGxhbmUgUHVsbCBTZWNyZXRzIHwgQVBJ" + + "IEJvb3RzdHJhcCBSZWdpc3RyeSBDcmVkcyB8IFNpZGVjYXIgSW1hZ2UtUHVsbCBTZWNyZXQgfAp8" + + "LS0tfC0tLXwtLS18LS0tfAp8IFB1cnBvc2UgfCBLOHMgcHVsbHMgTlZDRiBzZXJ2aWNlIGltYWdl" + + "cyB8IG52Y2YtYXBpIHZhbGlkYXRlcyB0aGUgdXNlciBmdW5jdGlvbiBpbWFnZSBhdCBgZnVuY3Rp" + + "b24gY3JlYXRlYCB8IG52Y2YtYXBpIHB1bGxzIHRoZSBwbGF0Zm9ybSBzaWRlY2FycyBpbmplY3Rl" + + "ZCBpbnRvIGV2ZXJ5IHdvcmtlciBwb2QgfAp8IFdoZXJlIHwgSzhzIGBkb2NrZXItcmVnaXN0cnlg" + + "IFNlY3JldHMgKyBLeXZlcm5vIENsdXN0ZXJQb2xpY3kgfCBgPHByaXZhdGUtdmFsdWVzPi88ZW52" + + "Pi1zZWNyZXRzLnlhbWxgIChhY2NvdW50LWJvb3RzdHJhcCkgfCBgTlZDRl9BUElfU0lERUNBUlNf" + + "SU1BR0VfUFVMTF9TRUNSRVRgIGluIGA8ZW52Pi1zZWNyZXRzLnlhbWxgIC0+IE9wZW5CYW8gYHNl" + + "cnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0YCAoZmllbGQgYHNl" + + "Y3JldGApIHwKfCBGb3JtYXQgfCBzdGFuZGFyZCBgLmRvY2tlcmNvbmZpZ2pzb25gIChrdWJlY3Rs" + + "IGJ1aWxkcyBpdCBmb3IgeW91KSB8IGBiYXNlNjQoIiRvYXV0aHRva2VuOjxrZXk+IilgIHwgYGJh" + + "c2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAgfAoKPiBOb3RlOiB0aGUgYWNjb3VudC1ib290c3Ry" + + "YXAgY3JlZCBhbmQgdGhlIHNpZGVjYXIgc2VjcmV0IGFyZSBOT1QgYQo+IGRvY2tlcmNvbmZpZ2pz" + + "b24uIFRoZSBzZWNyZXRzIHRlbXBsYXRlIHNoaXBzIHRoZSBwbGFjZWhvbGRlcgo+IGBSRVBMQUNF" + + "X1dJVEhfQkFTRTY0X0RPQ0tFUl9DUkVERU5USUFMYCwgd2hpY2ggcmVhZHMgYXMgImJhc2U2NCBv" + + "ZiBhIGRvY2tlcmNvbmZpZ2pzb24uIgo+IEl0IGlzbid0LiBCb3RoIHZhbHVlcyBhcmUgY29uc3Vt" + + "ZWQgYXMgYSByYXcgZG9ja2VyIGBhdXRoYCBzdHJpbmc6IG52Y2YtYXBpIHRha2VzIHRoZQo+IHZh" + + "bHVlIHZlcmJhdGltIGFuZCBkcm9wcyBpdCBpbnRvIHRoZSBgYXV0aGAgZmllbGQgb2YgdGhlIGRv" + + "Y2tlcmNvbmZpZyBpdCBidWlsZHMuIFNvIHRoZQo+IHZhbHVlIG11c3QgYmUgYGJhc2U2NCgiJG9h" + + "dXRodG9rZW46PGtleT4iKWAsIGUuZy4gYHByaW50ZiAnJG9hdXRodG9rZW46JXMnICIkS0VZIiB8" + + "IG9wZW5zc2wgYmFzZTY0IC1BYCwKPiBub3QgYGJhc2U2NCg8ZG9ja2VyY29uZmlnanNvbj4pYC4K" + + "Pgo+IC0gV3JvbmcgYWNjb3VudC1ib290c3RyYXAgdmFsdWU6IGBmdW5jdGlvbiBjcmVhdGVgIHJl" + + "dHVybnMKPiAgICBgNDAwICJtdXN0IGJlIGJhc2U2NCBlbmNvZGVkIHVzZXJuYW1lOnBhc3N3b3Jk" + + "IGZvcm1hdCJgLgo+IC0gV3Jvbmcgc2lkZWNhciB2YWx1ZTogZXZlcnkgd29ya2VyJ3Mgc2lkZWNh" + + "ciBwdWxsIGdldHMgYSBtYWxmb3JtZWQgY3JlZGVudGlhbCBhbmQKPiAgICBgNDAzYHMsIHJlZ2Fy" + + "ZGxlc3Mgb2Ygd2hpY2gga2V5IGlzIGluc2lkZS4gVGhlIHN5bXB0b20gbG9va3MgbGlrZSBhIGJh" + + "ZCBvciB3cm9uZy1vcmcKPiAgICBrZXksIGJ1dCB0aGUga2V5IGlzIGZpbmUgYW5kIHRoZSBlbmNv" + + "ZGluZyBpcyB0aGUgYnVnLiBUbyByZXBhaXIgYW4gYWxyZWFkeS1pbnN0YWxsZWQKPiAgICBzdGFj" + + "ayB3aXRob3V0IGEgZnVsbCByZS1zeW5jOgo+Cj4gICAgYGBgYmFzaAo+ICAgIEFVVEg9JChwcmlu" + + "dGYgJyRvYXV0aHRva2VuOiVzJyAiJEtFWSIgfCBvcGVuc3NsIGJhc2U2NCAtQSkKPiAgICBiYW8g" + + "a3YgcHV0IHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0IHNl" + + "Y3JldD0iJEFVVEgiCj4gICAgIyBpZiBOVklESUEgQ2xvdWQgVGFza3MgaXMgZW5hYmxlZCwgcmVw" + + "ZWF0IGZvciBzZXJ2aWNlcy9udmN0LWFwaS9rdi9zaWRlY2Fycy9pbWFnZS1wdWxsLXNlY3JldAo+" + + "ICAgIGt1YmVjdGwgcm9sbG91dCByZXN0YXJ0IC1uIG52Y2YgZGVwbG95L252Y2YtYXBpICAgIyBw" + + "aWNrcyB1cCB0aGUgbmV3IHNpZGVjYXIgY3JlZAo+ICAgIGBgYAo+Cj4gTm90ZSAobXVsdGktb3Jn" + + "KTogd2hlbiBwdWxsaW5nIGZyb20gTkdDIChub3QgYSBtaXJyb3IpLCB0aGUgdXNlciBmdW5jdGlv" + + "biBpbWFnZSBhbmQKPiB0aGUgcGxhdGZvcm0gc2lkZWNhcnMgb2Z0ZW4gbGl2ZSBpbiBkaWZmZXJl" + + "bnQgbnZjci5pbyBvcmdzLCBlYWNoIG5lZWRpbmcgYSBkaWZmZXJlbnQKPiBrZXksIHNvIHRoZSBh" + + "Y2NvdW50LWJvb3RzdHJhcCBjcmVkIChmdW5jdGlvbiBpbWFnZSkgYW5kIHRoZSBzaWRlY2FyIHNl" + + "Y3JldCAoc2lkZWNhcnMpCj4gYXJlIGZyZXF1ZW50bHkgdHdvIGRpZmZlcmVudCBrZXlzLiBNaXJy" + + "b3JpbmcgZXZlcnl0aGluZyBpbnRvIGEgc2luZ2xlIHJlZ2lzdHJ5IHRoZQo+IGNsdXN0ZXIgYXV0" + + "aGVudGljYXRlcyB0byBhdXRvbWF0aWNhbGx5IGNvbGxhcHNlcyB0aGlzIHRvIG9uZSBjcmVkZW50" + + "aWFsIHBhdGguCgojIyMgQ29uZmlndXJpbmcgd2l0aCBLeXZlcm5vIChyZWNvbW1lbmRlZCkKClVz" + + "ZSBhIEt5dmVybm8gbXV0YXRpbmcgYWRtaXNzaW9uIHBvbGljeSB0byBhdXRvbWF0aWNhbGx5IGlu" + + "amVjdCBgaW1hZ2VQdWxsU2VjcmV0c2AgaW50byBhbGwgcG9kcyBpbiBOVkNGIG5hbWVzcGFjZXMu" + + "IFRoaXMgd29ya3MgdW5pZm9ybWx5IGZvciBhbGwgY2hhcnRzIC0tIG5vIHBlci1jaGFydCBjb25m" + + "aWd1cmF0aW9uIG9yIGhlbG1maWxlIG1vZGlmaWNhdGlvbnMgbmVlZGVkLgoKYGBgYmFzaAojIDEu" + + "IEluc3RhbGwgS3l2ZXJubwpoZWxtIHJlcG8gYWRkIGt5dmVybm8gaHR0cHM6Ly9reXZlcm5vLmdp" + + "dGh1Yi5pby9reXZlcm5vLwpoZWxtIHJlcG8gdXBkYXRlCmhlbG0gaW5zdGFsbCBreXZlcm5vIGt5" + + "dmVybm8va3l2ZXJubyAtbiBreXZlcm5vIC0tY3JlYXRlLW5hbWVzcGFjZQoKIyAyLiBDcmVhdGUg" + + "cHVsbCBzZWNyZXQgaW4gZWFjaCBuYW1lc3BhY2UKZXhwb3J0IE5HQ19BUElfS0VZPSI8eW91ci1r" + + "ZXk+Igpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlz" + + "IGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIGNyZWF0ZSBz" + + "ZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogICAgLS1kb2NrZXItc2VydmVyPW52" + + "Y3IuaW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgICAtLWRvY2tl" + + "ci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5hbWVzcGFjZT0iJG5zIiBcCiAgICAt" + + "LWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KZG9uZQoKIyAzLiBB" + + "cHBseSB0aGUgS3l2ZXJubyBDbHVzdGVyUG9saWN5Cmt1YmVjdGwgYXBwbHkgLWYga3l2ZXJuby1p" + + "bWFnZXB1bGxzZWNyZXQtcG9saWN5LnlhbWwKYGBgCgpUaGUgcG9saWN5IG11dGF0ZXMgZXZlcnkg" + + "cG9kIGF0IGFkbWlzc2lvbiB0aW1lLCBhZGRpbmcgYGltYWdlUHVsbFNlY3JldHM6IFt7bmFtZTog" + + "bnZjci1jcmVkc31dYC4gVmVyaWZ5IHdpdGg6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZCAtbiA8" + + "bmFtZXNwYWNlPiA8cG9kLW5hbWU+IC1vIGpzb25wYXRoPSd7LnNwZWMuaW1hZ2VQdWxsU2VjcmV0" + + "c30nCiMgU2hvdWxkIHNob3c6IFt7Im5hbWUiOiJudmNyLWNyZWRzIn1dCmBgYAoKTm90IG5lZWRl" + + "ZCBpZiB1c2luZyBhIENTUCBidWlsdC1pbiBjcmVkZW50aWFsIGhlbHBlciAoZS5nLiwgRUNSIHdp" + + "dGggSUFNIG5vZGUgcm9sZXMpLgoKRm9yIHRoZSBLeXZlcm5vIHBvbGljeSBZQU1MIGFuZCBwdWxs" + + "IHNlY3JldCBjcmVhdGlvbiBzY3JpcHQsIHNlZSBbcmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWRd" + + "KHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKS4KCiMjIERlYnVnZ2luZwoKIyMjIFF1aWNrIHN0" + + "YXR1cyBjaGVjawoKYGBgYmFzaAprdWJlY3RsIGdldCBwb2RzIC1BIC1vIHdpZGUgICAgICAgICAg" + + "ICAgICAgICAgICAgICAjIEFsbCBwb2RzCmhlbG0gbGlzdCAtQSAgICAgICAgICAgICAgICAgICAg" + + "ICAgICAgICAgICAgICAgICAgICAjIEFsbCBoZWxtIHJlbGVhc2VzCmt1YmVjdGwgZ2V0IGV2ZW50" + + "cyAtbiA8bnM+IC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAnICAjIFJlY2VudCBldmVudHMKYGBg" + + "CgojIyMgQ29tbW9uIGZhaWx1cmUgcGF0dGVybnMKCnwgU3ltcHRvbSB8IENhdXNlIHwgRml4IHwK" + + "fC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tfAp8IGBJbWFnZVB1bGxCYWNrT2ZmYCArIGA0MDEgVW5h" + + "dXRob3JpemVkYCB8IE1pc3Npbmcgb3Igd3JvbmcgcHVsbCBzZWNyZXQgfCBDaGVjayBzZWNyZXQg" + + "ZXhpc3RzLCBjaGVjayBTQSBoYXMgaW1hZ2VQdWxsU2VjcmV0cyB8CnwgYEluaXQ6MC8xYCBzdHVj" + + "ayBvbiBzZXJ2aWNlIHBvZHMgfCBWYXVsdC1hZ2VudCB3YWl0aW5nIGZvciBPcGVuQmFvIHwgQ2hl" + + "Y2sgT3BlbkJhbyBwb2RzICsgbWlncmF0aW9uIGpvYiBzdGF0dXMgfAp8IGBJbml0OjAvMWAgKyBg" + + "dmF1bHQtYWdlbnQtaW5pdGAgc2hvd3MgYGF1dGgvand0L2xvZ2luYCAtPiBgNDAwIC4uLiBubyBr" + + "bm93biBrZXkgc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlZCB0aGUgdG9rZW4gc2lnbmF0dXJlYCB8IE9w" + + "ZW5CYW8gSldUIGF1dGggY29uZmlndXJlZCB3aXRoIGEgc3RhdGljIHB1YmtleSBpbnN0ZWFkIG9m" + + "IHRoZSBjbHVzdGVyJ3MgbGl2ZSBKV0tTIC0tIHRoZSBiYXNlIGRlZmF1bHQgYG9wZW5iYW8ubWln" + + "cmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2VgLiBDb21tb24gb24gQUtTIC8g" + + "YW55IE9JREMtaXNzdWVyIGNsdXN0ZXIgfCBTZXQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJE" + + "aXNjb3ZlcnkuZW5hYmxlZDogdHJ1ZWAsIGRlbGV0ZSBqb2IgYG9wZW5iYW8tc2VydmVyLW1pZ3Jh" + + "dGlvbnNgLCByZS1zeW5jIGBvcGVuYmFvLXNlcnZlcmAuIFNlZSBbcmVmZXJlbmNlcy9kZWJ1Z2dp" + + "bmcubWRdKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kKSAiSW5pdDowLzEgU3R1Y2siIGZpeCAjNC4g" + + "fAp8IGBPT01LaWxsZWRgIG9uIENhc3NhbmRyYSB8IERlZmF1bHQgcmVzb3VyY2VzIHRvbyBzbWFs" + + "bCB8IE92ZXJyaWRlIGBjYXNzYW5kcmEucmVzb3VyY2VzYCB2aWEgdmFsdWVzIGJsb2NrIHwKfCBE" + + "Qi1iYWNrZWQgc2VydmljZXMgY3Jhc2gtbG9vcCBgQmFkIGNyZWRlbnRpYWxzYCBjb25uZWN0aW5n" + + "IHRvIENhc3NhbmRyYSB8IFNlY3JldHMgZmlsZSBzZXQgb25seSBgREVGQVVMVF9DQVNTQU5EUkFf" + + "UEFTU1dPUkRgOyBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHN0aWxsIGRlZmF1bHRz" + + "IHRvIGBjaEBuZzNtM2AgfCBTZXQgYGNhc3NhbmRyYS5zZXJ2aWNlUm9sZVBhc3N3b3JkYCBpbiB0" + + "aGUgc2VjcmV0cyBmaWxlIGVxdWFsIHRvIGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAsIHRo" + + "ZW4gcmUtc3luYyBjYXNzYW5kcmEgKyB0aGUgREItYmFja2VkIHNlcnZpY2VzIHwKfCBgUGVuZGlu" + + "Z2AgcG9kcyB8IE5vZGUgc2VsZWN0b3IgbWlzbWF0Y2ggb3Igbm8gc3RvcmFnZSBjbGFzcyB8IGBr" + + "dWJlY3RsIGRlc2NyaWJlIHBvZGAsIGNoZWNrIGxhYmVscyBhbmQgc3RvcmFnZSB8CnwgSGVsbSBy" + + "ZWxlYXNlIGluIGBmYWlsZWRgIHN0YXRlIHwgRmlyc3QgaW5zdGFsbCBmYWlsZWQgcGFydHdheSB8" + + "IGBoZWxtZmlsZSBkZXN0cm95YCB0aGUgcmVsZWFzZSwgdGhlbiBgc3luY2AgYWdhaW4gfAp8IEFj" + + "Y291bnQgYm9vdHN0cmFwIHRpbWVvdXQgfCBXcm9uZyBiYXNlNjQgY3JlZGVudGlhbHMgaW4gc2Vj" + + "cmV0cyBmaWxlIHwgQ2hlY2sgYGt1YmVjdGwgbG9ncyBqb2IvbnZjZi1hcGktYWNjb3VudC1ib290" + + "c3RyYXAgLW4gbnZjZmAgfAp8IGZ1bmN0aW9uIC8gYWNjb3VudCBjYWxscyByZXR1cm4gYDQwNCBV" + + "bmtub3duIGNsaWVudF9pZGAgfCBUaGUgYWNjb3VudC1ib290c3RyYXAgcG9zdC1pbnN0YWxsIGhv" + + "b2sgbmV2ZXIgcmFuOiB0aGUgYGFwaWAgcmVsZWFzZSBpbnN0YWxsIGZhaWxlZCwgb3Igd2FzIHJl" + + "cGFpcmVkIHdpdGggbGl2ZSBwYXRjaGVzIGluc3RlYWQgb2YgYSBjbGVhbiByZS1zeW5jLCBzbyB0" + + "aGUgaG9vayAoYW5kIHRoZSBhY2NvdW50KSB3YXMgc2tpcHBlZCB8IFZlcmlmeSBhbmQgcmUtcnVu" + + "IHRoZSBob29rOyBzZWUgW1ZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAgcmFuXSgjdmVyaWZ5" + + "LXRoZS1hY2NvdW50LWJvb3RzdHJhcC1yYW4pIHwKfCBTZXJ2aWNlcyBmYWlsIHRvIHJlYWQgdmF1" + + "bHQgc2VjcmV0czsgYHNlY3JldHMuanNvbmAgbm90IGZvdW5kIHwgVmF1bHQgcGF0aCBoYXJkY29k" + + "ZWQgdG8gYC9ob21lL2FwcC92YXVsdC9gIGluIGBfaGVscGVycy50cGxgOyB0aGUgcnVudGltZSBy" + + "ZXNvbHZlcyB0aGUgbW91bnRlZCBwYXRoIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9y" + + "eSBhbmQgZHJvcHMgdGhlIGxlYWRpbmcgYC9gIHwgT3ZlcnJpZGUgYHBvZEFubm90YXRpb25zYCBh" + + "bmQgc2V0IGBKQVZBX1RPT0xfT1BUSU9OUzogIi1EdXNlci5kaXI9LyJgIGluIHJlbGVhc2UgdmFs" + + "dWVzIHwKfCBOQVRTIGNvbm5lY3Rpb24gZmFpbHMgYXQgc3RhcnR1cDsgcGxhY2VtZW50IHRhZyBt" + + "aXNtYXRjaCB8IE5BVFMgc2VydmVyIHRhZ3MgaGFyZGNvZGVkIHRvIGBkYzpuY3BgOyBhcHAgZGVy" + + "aXZlcyB0YWcgZnJvbSBgQVdTX1JFR0lPTmAgKGUuZy4sIGB1cy1nb3Ytd2VzdC0xYCkgfCBTZXQg" + + "YEFXU19SRUdJT049bmNwYCBhbmQgYE5WQ0ZfQVdTX1JFR0lPTj1uY3BgIGluIGVudiBjb25maWcg" + + "fAoKIyMjIFZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAgcmFuCgpUaGUgZGVmYXVsdCBhY2Nv" + + "dW50IGlzIGNyZWF0ZWQgYnkgYSAqKmBwb3N0LWluc3RhbGxgIGhvb2sgb24gdGhlIGBhcGlgIHJl" + + "bGVhc2UqKgooYGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcGAgaW4gYG52Y2ZgKS4gQmVj" + + "YXVzZSBpdCBpcyBhIHBvc3QtaW5zdGFsbCBob29rLCBpdCBvbmx5CmZpcmVzIG9uIGEgc3VjY2Vz" + + "c2Z1bCBgYXBpYCBpbnN0YWxsLiBJZiB0aGF0IGluc3RhbGwgZmFpbGVkIGFuZCB5b3UgcmVwYWly" + + "ZWQgaXQgd2l0aCBsaXZlCnBhdGNoZXMgKHJhdGhlciB0aGFuIGEgY2xlYW4gcmUtc3luYyksIHRo" + + "ZSBob29rIG5ldmVyIHJ1bnMsIG5vIGFjY291bnQgaXMgY3JlYXRlZCwgYW5kCmV2ZXJ5IHN1YnNl" + + "cXVlbnQgZnVuY3Rpb24vYWNjb3VudCBjYWxsIHJldHVybnMgYSBjcnlwdGljIGA0MDQgVW5rbm93" + + "biBjbGllbnRfaWRgIHdpdGgKbm90aGluZyBvYnZpb3VzbHkgd3JvbmcgaW4gdGhlIHJ1bm5pbmcg" + + "cG9kcy4KClZlcmlmeSBpdCByYW4gYWZ0ZXIgdGhlIGZpcnN0IHN5bmM6CgpgYGBiYXNoCmt1YmVj" + + "dGwgZ2V0IGpvYiAtbiBudmNmIG52Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIFwKICAtbyBqc29u" + + "cGF0aD0ney5zdGF0dXMuc3VjY2VlZGVkfScgICAjIGV4cGVjdCAxCmBgYAoKSWYgdGhlIGpvYiBp" + + "cyBhYnNlbnQgb3IgYDBgLCByZS1ydW4gaXQgYnkgcmUtc3luY2luZyB0aGUgYGFwaWAgcmVsZWFz" + + "ZSBzbyB0aGUgaG9vayBmaXJlcwphZ2FpbiAoZGVsZXRlIHRoZSBwcmlvciBqb2IgZmlyc3QgaWYg" + + "aXQgbGluZ2VycyBpbiBhIGNvbXBsZXRlZC9mYWlsZWQgc3RhdGUgYW5kIGJsb2NrcyB0aGUKaG9v" + + "ayk6CgpgYGBiYXNoCmt1YmVjdGwgZGVsZXRlIGpvYiAtbiBudmNmIG52Y2YtYXBpLWFjY291bnQt" + + "Ym9vdHN0cmFwIC0taWdub3JlLW5vdC1mb3VuZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUg" + + "LS1zZWxlY3RvciBuYW1lPWFwaSBzeW5jCmt1YmVjdGwgbG9ncyAtbiBudmNmIGpvYi9udmNmLWFw" + + "aS1hY2NvdW50LWJvb3RzdHJhcCAgICMgY29uZmlybSB0aGUgYWNjb3VudCB3YXMgY3JlYXRlZApg" + + "YGAKCiMjIEFkZGl0aW9uYWwgUmVzb3VyY2VzCgotIEluc3RhbGxhdGlvbjogW2V4YW1wbGVzLm1k" + + "XShleGFtcGxlcy5tZCksIHRoZSBbQ1NQIEVuZC10by1FbmQgRXhhbXBsZV0oaHR0cHM6Ly9kb2Nz" + + "Lm52aWRpYS5jb20vbnZjZi92MC42LjAtcmMvY3NwLWVuZC10by1lbmQtZXhhbXBsZSksIGFuZCBb" + + "c3BsaXQgY29tcHV0ZS1wbGFuZSB3b3JrZmxvd3NdKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1p" + + "bnN0YWxsYXRpb24ubWQpCi0gT3BlcmF0aW9uczogW0hlbG1maWxlIHN0cnVjdHVyZV0ocmVmZXJl" + + "bmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWQpLCBbcHVsbCBzZWNyZXRzXShyZWZlcmVuY2VzL3B1" + + "bGwtc2VjcmV0cy5tZCksIGFuZCBbZGVidWdnaW5nXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCkK" + + "CkFmdGVyIGRlcGxveW1lbnQsIHVzZSB0aGUgYG52Y2Ytc2VsZi1tYW5hZ2VkLWNsaWAgc2tpbGwg" + + "dG8gY3JlYXRlIGZ1bmN0aW9ucywgY3JlYXRlIHRhc2tzLCBtYW5hZ2UgQVBJIGtleXMsIGFuZCBp" + + "bnZva2UgZW5kcG9pbnRzLgpQSwcIEcMUk0liAABJYgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAA" + + "AAA0AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXZhbHMvZXZhbHMuanNv" + + "blVUBQABAKbOElsKICB7CiAgICAiaWQiOiAiRzEtdmFsaWRhdGUtdG9vbC12ZXJzaW9ucyIsCiAg" + + "ICAicXVlc3Rpb24iOiAiSW5zdGFsbCB0aGUgTlZDRiBzZWxmLW1hbmFnZWQgc3RhY2sgb24gbXkg" + + "QVdTIEVLUyBjbHVzdGVyIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdl" + + "ZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQncyBmaXJzdCBv" + + "cGVyYXRpb25hbCBzdGVwIGFmdGVyIHJlYWRpbmcgdGhlIHNraWxsIHdhcyB0byB2YWxpZGF0ZSBh" + + "bGwgcmVxdWlyZWQgdG9vbCB2ZXJzaW9uczogaGVsbWZpbGUgKG11c3QgYmUgMS4xLngsIG5vdCAx" + + "LjIuMCksIGhlbG0gKD49IDMuMTIpLCBoZWxtLWRpZmYgcGx1Z2luICg+PSAzLjExKSwgYW5kIGt1" + + "YmVjdGwgKGNsaWVudCB3aXRoaW4gMSBtaW5vciBvZiBjbHVzdGVyKS4gSXQgZGlkIG5vdCBwcm9j" + + "ZWVkIHRvIGhlbG1maWxlIHN5bmMgdW50aWwgYWxsIHZlcnNpb25zIHdlcmUgdmFsaWRhdGVkLiIs" + + "CiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZj" + + "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYW55IGFj" + + "dGlvbiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtZmlsZSAtLXZlcnNpb24nIGFuZCB2ZXJp" + + "ZmllZCBpdCBpcyAxLjEueCAobm90IDEuMi4wLCB3aGljaCByZW1vdmVkIHNlcXVlbnRpYWwgbW9k" + + "ZSkiLAogICAgICAiVGhlIGFnZW50IHJhbiAnaGVsbSB2ZXJzaW9uJyBhbmQgdmVyaWZpZWQgaXQg" + + "aXMgPj0gMy4xMiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHBsdWdpbiBsaXN0JyBhbmQg" + + "dmVyaWZpZWQgaGVsbS1kaWZmID49IDMuMTEgaXMgaW5zdGFsbGVkIiwKICAgICAgIlRoZSBhZ2Vu" + + "dCByYW4gJ2t1YmVjdGwgdmVyc2lvbicgdG8gY2hlY2sgY2xpZW50L3NlcnZlciB2ZXJzaW9uIGNv" + + "bXBhdGliaWxpdHkiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgcHJvY2VlZCB0byBoZWxtZmls" + + "ZSBzeW5jIHVudGlsIGFsbCB2ZXJzaW9uIGNoZWNrcyBwYXNzZWQiCiAgICBdCiAgfSwKICB7CiAg" + + "ICAiaWQiOiAiRzItdGVtcGxhdGUtYmVmb3JlLXN5bmMiLAogICAgInF1ZXN0aW9uIjogIlF1aWNr" + + "LCBqdXN0IHJ1biBoZWxtZmlsZSBzeW5jIGZvciBteSBOVkNGIHN0YWNrLCBza2lwIGFsbCB0aGUg" + + "Y2hlY2tzIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + + "YXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJEZXNwaXRlIHRoZSB1c2VyIGFza2luZyB0byBz" + + "a2lwIGNoZWNrcywgdGhlIGFnZW50IHN0aWxsIHJhbiBoZWxtZmlsZSB0ZW1wbGF0ZSB0byBwcmV2" + + "aWV3IHJlbmRlcmVkIG1hbmlmZXN0cyBiZWZvcmUgcnVubmluZyBoZWxtZmlsZSBzeW5jLiBJdCBl" + + "eHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAgaXMgaW1wb3J0YW50IGFuZCBkaWQgbm90IGJs" + + "aW5kbHkgZXhlY3V0ZSBzeW5jLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJU" + + "aGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1k" + + "IGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG1maWxlIHRl" + + "bXBsYXRlJyBvciAnaGVsbWZpbGUgLS1zZWxlY3RvciAuLi4gdGVtcGxhdGUnIHRvIHByZXZpZXcg" + + "bWFuaWZlc3RzIGJlZm9yZSBzeW5jIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IGJsaW5kbHkg" + + "cnVuICdoZWxtZmlsZSBzeW5jJyB3aXRob3V0IGEgdGVtcGxhdGUgcHJldmlldyBzdGVwIiwKICAg" + + "ICAgIlRoZSBhZ2VudCBleHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAgaXMgaW1wb3J0YW50" + + "IGV2ZW4gd2hlbiBhc2tlZCB0byBza2lwIGl0IgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc1" + + "LWRyeXJ1bi1iZWZvcmUtY2xlYW51cCIsCiAgICAicXVlc3Rpb24iOiAiTlZDRiBuYW1lc3BhY2Vz" + + "IGFyZSBzdHVjayBpbiBUZXJtaW5hdGluZyBzdGF0ZS4gQ2xlYW4gdGhlbSB1cC4iLAogICAgImV4" + "cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3Jv" + - "dW5kX3RydXRoIjogIlRoZSBhZ2VudCByYW4gYm90aCBkb2NrZXIgbG9naW4gYW5kIGhlbG0gcmVn" + - "aXN0cnkgbG9naW4gZm9yIG52Y3IuaW8uIEl0IGV4cGxhaW5lZCB0aGF0IGJvdGggYXJlIHJlcXVp" + - "cmVkIGJlY2F1c2UgaGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0byBwdWxsIE9DSSBj" + - "aGFydHMsIHNvIGRvY2tlciBsb2dpbiBhbG9uZSBpcyBpbnN1ZmZpY2llbnQuIiwKICAgICJleHBl" + - "Y3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFu" + - "YWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAi" + - "VGhlIGFnZW50IHJhbiAnZG9ja2VyIGxvZ2luIG52Y3IuaW8nIHdpdGggJG9hdXRodG9rZW4gdXNl" + - "cm5hbWUgYW5kIE5HQ19BUElfS0VZIHBhc3N3b3JkIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hl" + - "bG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbycgd2l0aCAkb2F1dGh0b2tlbiB1c2VybmFtZSBhbmQg" + - "TkdDX0FQSV9LRVkgcGFzc3dvcmQiLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGF0IGJv" + - "dGggYXJlIHJlcXVpcmVkIGJlY2F1c2UgaGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0" + - "byBwdWxsIE9DSSBjaGFydHMiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgcHJvdmlkZSBvbmx5" + - "IG9uZSBvZiB0aGUgdHdvIGF1dGhlbnRpY2F0aW9uIGNvbW1hbmRzIgogICAgXQogIH0sCiAgewog" + - "ICAgImlkIjogIkc5LW1pc3NpbmctYnVuZGxlIiwKICAgICJxdWVzdGlvbiI6ICJSdW4gaGVsbWZp" + - "bGUgc3luYyBmb3IgTlZDRiBpbiBteSBjdXJyZW50IGRpcmVjdG9yeSIsCiAgICAiZXhwZWN0ZWRf" + - "c2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1" + - "dGgiOiAiVGhlIGFnZW50IGF0dGVtcHRlZCB0byB2ZXJpZnkgdGhlIGJ1bmRsZSBzdHJ1Y3R1cmUg" + - "KGhlbG1maWxlLmQvLCBlbnZpcm9ubWVudHMvLCBzZWNyZXRzLywgZ2xvYmFsLnlhbWwuZ290bXBs" + - "KSBhbmQgd2hlbiBmaWxlcyB3ZXJlIG5vdCBmb3VuZCwgc3RvcHBlZCBhbmQgaW5zdHJ1Y3RlZCB0" + - "aGUgdXNlciB0byBleHRyYWN0IG9yIGxvY2F0ZSB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sg" + - "YnVuZGxlLiBJdCBkaWQgbm90IGF0dGVtcHQgdG8gcnVuIGhlbG1maWxlIHN5bmMgYWdhaW5zdCBh" + - "IG1pc3NpbmcgYnVuZGxlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUg" + - "YWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJl" + - "Zm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBjaGVja2VkIGZvciBleHBlY3Rl" + - "ZCBidW5kbGUgc3RydWN0dXJlIChoZWxtZmlsZS5kLywgZW52aXJvbm1lbnRzLywgc2VjcmV0cy8s" + - "IGdsb2JhbC55YW1sLmdvdG1wbCkiLAogICAgICAiV2hlbiBidW5kbGUgZmlsZXMgd2VyZSBub3Qg" + - "Zm91bmQsIHRoZSBhZ2VudCBzdG9wcGVkIGFuZCBkaWQgbm90IGF0dGVtcHQgaGVsbWZpbGUgc3lu" + - "YyIsCiAgICAgICJUaGUgYWdlbnQgaW5zdHJ1Y3RlZCB0aGUgdXNlciB0byBleHRyYWN0IG9yIGxv" + - "Y2F0ZSB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sgYnVuZGxlIgogICAgXQogIH0sCiAgewog" + - "ICAgImlkIjogIlMxLWNsZWFuLWluc3RhbGxhdGlvbiIsCiAgICAicXVlc3Rpb24iOiAiUGVyZm9y" + - "bSBhIGNsZWFuIGluc3RhbGxhdGlvbiBvZiB0aGUgTlZDRiBzZWxmLW1hbmFnZWQgc3RhY2sgb24g" + - "bXkgQVdTIEVLUyBjbHVzdGVyLiBNeSBlbnZpcm9ubWVudCBuYW1lIGlzICdzdGFnaW5nJy4iLAog" + - "ICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAg" + - "ICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBjb21wbGV0ZWQgdGhlIGNvbnRyb2wtcGxhbmUg" + - "aW5zdGFsbGF0aW9uIGZpcnN0OiB2YWxpZGF0ZWQgdG9vbHMgYW5kIGJ1bmRsZSBzdHJ1Y3R1cmUs" + - "IGNyZWF0ZWQgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIGluY2x1ZGluZyBjZXJ0LW1hbmFnZXIs" + - "IGF1dGhlbnRpY2F0ZWQgdGhlIHJlZ2lzdHJpZXMsIHByZXZpZXdlZCwgZGVwbG95ZWQsIGFuZCBt" + - "b25pdG9yZWQgdGhlIGZvdXIgY29udHJvbC1wbGFuZSBwaGFzZXMuIEl0IHRoZW4gc2VsZWN0ZWQg" + - "b25lIGRvY3VtZW50ZWQgaGFuZG9mZiBhbmQgcmVnaXN0ZXJlZCBhbmQgaW5zdGFsbGVkIHRoZSBj" + - "b21wdXRlIHBsYW5lIGFzIGEgc2VwYXJhdGUgc3RhY2sgd2l0aG91dCBtaXhpbmcgcHJvZmlsZSBh" + - "bmQgSGVsbWZpbGUgdmFsdWVzIGZsb3dzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAg" + - "ICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNL" + - "SUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCB2YWxpZGF0ZWQg" + - "dG9vbCB2ZXJzaW9ucyAoaGVsbWZpbGUsIGhlbG0sIGhlbG0tZGlmZiwga3ViZWN0bCkiLAogICAg" + - "ICAiVGhlIGFnZW50IHZlcmlmaWVkIHRoZSBidW5kbGUgc3RydWN0dXJlIGV4aXN0cyIsCiAgICAg" + - "ICJUaGUgYWdlbnQgY3JlYXRlZCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMgKGNhc3NhbmRyYS1z" + - "eXN0ZW0sIG5hdHMtc3lzdGVtLCBudmNmLCBhcGkta2V5cywgZXNzLCBzaXMsIHZhdWx0LXN5c3Rl" + - "bSwgY2VydC1tYW5hZ2VyKSB3aXRob3V0IGFkZGluZyBjb21wdXRlLW9ubHkgbmFtZXNwYWNlcyIs" + - "CiAgICAgICJUaGUgYWdlbnQgcmFuICdIRUxNRklMRV9FTlY9c3RhZ2luZyBoZWxtZmlsZSB0ZW1w" + - "bGF0ZScgdG8gcHJldmlldyBiZWZvcmUgZGVwbG95aW5nIiwKICAgICAgIlRoZSBhZ2VudCByYW4g" + - "J0hFTE1GSUxFX0VOVj1zdGFnaW5nIGhlbG1maWxlIHN5bmMnIHRvIGRlcGxveSIsCiAgICAgICJU" + - "aGUgYWdlbnQgZXhwbGFpbmVkIHRoZSA0IGNvbnRyb2wtcGxhbmUgcGhhc2VzIChkZXBlbmRlbmNp" + - "ZXMsIHNlcnZpY2VzLCBpbmdyZXNzLCBvYnNlcnZhYmlsaXR5KSBhbmQgYXBwcm94aW1hdGUgd2Fp" + - "dCB0aW1lcyIsCiAgICAgICJBZnRlciB0aGUgY29udHJvbCBwbGFuZSB3YXMgaGVhbHRoeSwgdGhl" + - "IGFnZW50IHJlZ2lzdGVyZWQgYW5kIGluc3RhbGxlZCB0aGUgc2VwYXJhdGUgY29tcHV0ZS1wbGFu" + - "ZSBzdGFjayB1c2luZyBleGFjdGx5IG9uZSBkb2N1bWVudGVkIGhhbmRvZmYiLAogICAgICAiVGhl" + - "IGFnZW50IGRpZCBub3QgbWl4IGEgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBsYW5lIHByb2ZpbGUg" + - "d2l0aCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZsb3ciCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAi" + - "UzMtY2xpLXByb2ZpbGUtd29ya2Zsb3ciLAogICAgInF1ZXN0aW9uIjogIlVzZSBudmNmLWNsaSB0" + - "byBpbnN0YWxsIG15IGNvbnRyb2wgcGxhbmUgYW5kIHRoZW4gcmVnaXN0ZXIgYW5kIGluc3RhbGwg" + - "YSBzZXBhcmF0ZSBjb21wdXRlIGNsdXN0ZXIuIFNob3cgZXZlcnkgcmVxdWlyZWQgZ2xvYmFsIGZs" + - "YWcuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRp" + - "b24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZmlyc3QgcmFuIHRoZSBDTEkgY29u" + - "dHJvbC1wbGFuZSBpbnN0YWxsIGFuZCByZXF1aXJlZCBpdHMgZ2VuZXJhdGVkIGNvbnRyb2wtcGxh" + - "bmUtcHJvZmlsZS55YW1sLiBJdCB0aGVuIHNob3dlZCBjb21wbGV0ZSByZWdpc3RlciBhbmQgaW5z" + - "dGFsbCBjb21tYW5kcywgZWFjaCBpbmNsdWRpbmcgLS1jb25maWcsIC0tY29udHJvbC1wbGFuZS1z" + - "dGFjaywgLS1jb21wdXRlLXBsYW5lLXN0YWNrLCAtLWVudiwgYW5kIC0tcGxhaW4gYmVmb3JlIHRo" + - "ZSBjb21wdXRlLXBsYW5lIHN1YmNvbW1hbmQuIFJlZ2lzdHJhdGlvbiBjb25zdW1lZCB0aGUgcHJv" + - "ZmlsZSBhbmQgcHJvZHVjZWQgdGhlIHZhbHVlcyBmaWxlIGNvbnN1bWVkIGJ5IGluc3RhbGwuIEl0" + - "IGRpZCBub3Qgc3dpdGNoIHRvIHRoZSBIZWxtZmlsZSB2YWx1ZXMgaGFuZG9mZi4iLAogICAgImV4" + - "cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1t" + - "YW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAg" + - "ICJUaGUgYWdlbnQgcmFuIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGluc3RhbGwgLS1jb250cm9sLXBs" + - "YW5lIGFuZCB2ZXJpZmllZCBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1w" + - "bGFuZS1wcm9maWxlLnlhbWwgZXhpc3RzIiwKICAgICAgIlRoZSByZWdpc3RlciBjb21tYW5kIGlu" + - "Y2x1ZGVkIC0tY29uZmlnLCAtLWNvbnRyb2wtcGxhbmUtc3RhY2ssIC0tY29tcHV0ZS1wbGFuZS1z" + - "dGFjaywgLS1lbnYsIGFuZCAtLXBsYWluIiwKICAgICAgIlRoZSByZWdpc3RlciBjb21tYW5kIGlu" + - "Y2x1ZGVkIC0tY29udHJvbC1wbGFuZS1wcm9maWxlLCAtLWNsdXN0ZXItbmFtZSwgLS1rdWJlLWNv" + - "bnRleHQsIC0tcmVnaW9uLCBhbmQgLS1vdXRwdXQiLAogICAgICAiVGhlIGluc3RhbGwgY29tbWFu" + - "ZCByZXBlYXRlZCAtLWNvbmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAtLWNvbXB1dGUtcGxh" + - "bmUtc3RhY2ssIC0tZW52LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgaW5zdGFsbCBjb21tYW5k" + - "IGluY2x1ZGVkIC0tdmFsdWVzLCAtLWt1YmUtY29udGV4dCwgYW5kIC0tY2x1c3Rlci1uYW1lIiwK" + - "ICAgICAgIlRoZSBhZ2VudCBrZXB0IHRoZSBnZW5lcmF0ZWQgcHJvZmlsZSBhcyB0aGUgZW5kcG9p" + - "bnQgc291cmNlIGFuZCBkaWQgbm90IG1peCBpbiBIZWxtZmlsZSB2YWx1ZXMgcmVnaXN0cmF0aW9u" + - "IgogICAgXQogIH0sCiAgewogICAgImlkIjogIlM0LW92ZXJyaWRlLWNhc3NhbmRyYS1yZXNvdXJj" + - "ZXMiLAogICAgInF1ZXN0aW9uIjogIkNhc3NhbmRyYSBwb2RzIGtlZXAgZ2V0dGluZyBPT01LaWxs" + - "ZWQuIEluY3JlYXNlIG1lbW9yeSBsaW1pdHMgdG8gMTZHaS4iLAogICAgImV4cGVjdGVkX3NraWxs" + - "IjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjog" + - "IlRoZSBhZ2VudCBjYXB0dXJlZCB0aGUgYmFzZWxpbmUgd2l0aCBoZWxtZmlsZSB0ZW1wbGF0ZSwg" + - "dGhlbiBtb2RpZmllZCB0aGUgY2Fzc2FuZHJhIHJlbGVhc2Ugd2l0aCBpbmxpbmUgdmFsdWVzIHJl" + - "LWluY2x1ZGluZyBnbG9iYWwueWFtbC5nb3RtcGwgYW5kIHNlY3JldHMgaW4gdGhlIHZhbHVlcyBi" + - "bG9jay4gSXQgd2FybmVkIGFib3V0IHRoZSBZQU1MIG1lcmdlIGdvdGNoYSBhbmQgcHJldmlld2Vk" + - "IHRoZSBkaWZmIGJlZm9yZSBhcHBseWluZy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwog" + - "ICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBT" + - "S0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgY2FwdHVyZWQg" + - "YmFzZWxpbmUgd2l0aCAnaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0" + - "ZSciLAogICAgICAiVGhlIGFnZW50IG1vZGlmaWVkIHRoZSByZWxlYXNlIHZhbHVlcyBibG9jayB0" + - "byBpbmNsdWRlIHJlc291cmNlIGxpbWl0cyB3aXRoIG1lbW9yeTogMTZHaSIsCiAgICAgICJUaGUg" + - "YWdlbnQgcmUtaW5jbHVkZWQgZ2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNyZXRzIGZpbGUgaW4g" + - "dGhlIHZhbHVlczogYmxvY2sgKG5vdCBqdXN0IHRoZSBvdmVycmlkZSBhbG9uZSkiLAogICAgICAi" + - "VGhlIGFnZW50IHdhcm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGE6IHNwZWNpZnlpbmcg" + - "dmFsdWVzOiByZXBsYWNlcyB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgbGlzdCBlbnRpcmVseSIsCiAg" + - "ICAgICJUaGUgYWdlbnQgcHJldmlld2VkIHRoZSBjaGFuZ2Ugd2l0aCBoZWxtZmlsZSB0ZW1wbGF0" + - "ZSBhbmQgZGlmZiBiZWZvcmUgYXBwbHlpbmcgd2l0aCBzeW5jIgogICAgXQogIH0sCiAgewogICAg" + - "ImlkIjogIlM2LXNlbGVjdGl2ZS1zeW5jLWRlcGVuZGVuY2llcyIsCiAgICAicXVlc3Rpb24iOiAi" + - "RGVwbG95IG9ubHkgdGhlIE5WQ0YgZGVwZW5kZW5jaWVzIC0tIE5BVFMsIENhc3NhbmRyYSwgYW5k" + - "IE9wZW5CYW8gLS0gZm9yIHRlc3RpbmciLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2Vs" + - "Zi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCB1" + - "c2VkIHRoZSBoZWxtZmlsZSBzZWxlY3RvciB0byBkZXBsb3kgb25seSB0aGUgZGVwZW5kZW5jaWVz" + - "IHJlbGVhc2UgZ3JvdXAsIHRoZW4gdmVyaWZpZWQgcG9kcyBpbiB0aGUgZGVwZW5kZW5jeSBuYW1l" + - "c3BhY2VzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVh" + - "ZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtp" + - "bmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCB1c2VkICdoZWxtZmlsZSAtLXNlbGVjdG9yIHJl" + - "bGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMnIHRvIGRlcGxveSBvbmx5IGRlcGVuZGVuY2ll" + - "cyIsCiAgICAgICJUaGUgYWdlbnQgdmVyaWZpZWQgcG9kcyBpbiBkZXBlbmRlbmN5IG5hbWVzcGFj" + - "ZXMgKG5hdHMtc3lzdGVtLCBjYXNzYW5kcmEtc3lzdGVtLCB2YXVsdC1zeXN0ZW0pIiwKICAgICAg" + - "IlRoZSBhZ2VudCBwcm92aWRlZCB0aGUgc2VsZWN0b3IgcmVmZXJlbmNlIGZvciB0YXJnZXRpbmcg" + - "b3RoZXIgcmVsZWFzZSBncm91cHMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzctZGVidWct" + - "aW1hZ2VwdWxsYmFja29mZiIsCiAgICAicXVlc3Rpb24iOiAiQ2Fzc2FuZHJhIHBvZHMgYXJlIGlu" + - "IEltYWdlUHVsbEJhY2tPZmYgd2l0aCA0MDEgVW5hdXRob3JpemVkIiwKICAgICJleHBlY3RlZF9z" + - "a2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0" + - "aCI6ICJUaGUgYWdlbnQgcmVhZCB0aGUgZGVidWdnaW5nIHJlZmVyZW5jZSBhbmQgcmFuIGRpYWdu" + - "b3N0aWMgY29tbWFuZHMgdG8gaWRlbnRpZnkgdGhlIHJvb3QgY2F1c2U6IGRlc2NyaWJlZCB0aGUg" + - "cG9kLCBjaGVja2VkIGZvciBwdWxsIHNlY3JldHMsIGNoZWNrZWQgaW1hZ2VQdWxsU2VjcmV0cyBv" + - "biB0aGUgcG9kIHNwZWMgYW5kIHNlcnZpY2UgYWNjb3VudC4gSXQgaWRlbnRpZmllZCB0aGUgaXNz" + - "dWUgKG1pc3Npbmcgc2VjcmV0LCB3cm9uZyBjcmVkZW50aWFscywgb3IgbWlzc2luZyBpbWFnZVB1" + - "bGxTZWNyZXRzKSBhbmQgcHJvdmlkZWQgdGhlIGNvcnJlY3QgZml4LiIsCiAgICAiZXhwZWN0ZWRf" + - "YmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQt" + - "aW5zdGFsbGF0aW9uIFNLSUxMLm1kIGFuZCByZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCIsCiAgICAg" + - "ICJUaGUgYWdlbnQgcmFuICdrdWJlY3RsIGRlc2NyaWJlIHBvZCcgdG8gc2VlIHRoZSBJbWFnZVB1" + - "bGxCYWNrT2ZmIGV2ZW50cyIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBmb3IgcHVsbCBzZWNy" + - "ZXRzIGluIHRoZSBjYXNzYW5kcmEtc3lzdGVtIG5hbWVzcGFjZSIsCiAgICAgICJUaGUgYWdlbnQg" + - "Y2hlY2tlZCBpbWFnZVB1bGxTZWNyZXRzIG9uIHRoZSBwb2Qgc3BlYyBhbmQvb3Igc2VydmljZSBh" + - "Y2NvdW50IiwKICAgICAgIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoZSByb290IGNhdXNlIGFuZCBw" + - "cm92aWRlZCBhIHNwZWNpZmljIGZpeCIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTOS1yZW1v" + - "dGUtZWtzLXJvdXRpbmctYW5kLXNlY3JldHMiLAogICAgInF1ZXN0aW9uIjogIkNvbmZpZ3VyZSBh" + - "IHJlbW90ZSBFS1MgY29tcHV0ZSBjbHVzdGVyIHRvIHJlYWNoIG15IE5WQ0YgY29udHJvbCBwbGFu" + - "ZSB0aHJvdWdoIGl0cyBFbnZveSBHYXRld2F5LCBpbmNsdWRpbmcgTkFUUyBhbmQgcHJpdmF0ZS1y" + - "ZWdpc3RyeSBwdWxsIHNlY3JldHMuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYt" + - "bWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgY29u" + - "ZmlndXJlZCB0aGUgY29udHJvbCBwbGFuZSB0byB1c2UgdGhlIEVudm95IEdhdGV3YXkgY29udHJv" + - "bGxlciBpbiBlbnZveS1nYXRld2F5LXN5c3RlbSBhbmQgR2F0ZXdheS9udmNmLWdhdGV3YXkgaW4g" + - "ZW52b3ktZ2F0ZXdheSwgc2V0IGFsbCBzaXggcmVtb3RlIHdvcmtlciBlbmRwb2ludHMgYW5kIHRo" + - "ZSBncnBjLXByb3h5IGxvY2FsIG92ZXJyaWRlLCBlbmFibGVkIE5WQ0YgYW5kIE5WQ1QgZ1JQQyBy" + - "b3V0ZXMgcGx1cyBOQVRTLCBhbmQgZW5hYmxlZCBPcGVuQmFvIGlzc3VlciBkaXNjb3ZlcnkuIEl0" + - "IGNvbmZpZ3VyZWQgdGhlIGJhcmUtR2F0ZXdheSBDTEkgVVJMIGFuZCBIb3N0IGZpZWxkcyBpbmNs" + - "dWRpbmcgaWNtc19ob3N0LCBwbHVzIHRoZSBjb21wdXRlLXBsYW5lIElDTVMsIFJlVmFsLCBhbmQg" + - "TkFUUyBleHRlcm5hbCBVUkxzIGFuZCBob3N0IG92ZXJyaWRlcy4gSXQgY3JlYXRlZCB0aGUgcHVs" + - "bCBzZWNyZXQgaW4gYWxsIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNsdWRpbmcgY2VydC1t" + - "YW5hZ2VyLCBidXQgb25seSBpbiBudmNhLW9wZXJhdG9yIG9uIHRoZSBjb21wdXRlIGNsdXN0ZXI7" + - "IHRoZSBjaGFydCBhbmQgb3BlcmF0b3IgbWlycm9yIGl0IHRvIG52Y2Etc3lzdGVtLiIsCiAgICAi" + - "ZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxm" + - "LW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAg" + - "ICAgIlRoZSBhZ2VudCBzZXQgaW5ncmVzcy5nYXRld2F5QXBpLmNvbnRyb2xsZXJOYW1lc3BhY2Ug" + - "dG8gZW52b3ktZ2F0ZXdheS1zeXN0ZW0iLAogICAgICAiVGhlIGFnZW50IHNldCBzaGFyZWQsIGdy" + - "cGMsIGFuZCBuYXRzIEdhdGV3YXkgcmVmZXJlbmNlcyB0byBuYW1lIG52Y2YtZ2F0ZXdheSBhbmQg" + - "bmFtZXNwYWNlIGVudm95LWdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50IHNldCBnbG9iYWwud29y" + - "a2VyRW5kcG9pbnRzLm52Y2ZTZXJ2aWNlVVJMLCBudmNmR3JwY1NlcnZpY2VVUkwsIG52Y2ZOYXRz" + - "U2VydmljZVVSTCwgbnZjdFNlcnZpY2VVUkwsIG52Y3RHcnBjU2VydmljZVVSTCwgYW5kIGludm9j" + - "YXRpb25TZXJ2aWNlVVJMIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgZ3JwY3Byb3h5Lm52Y2ZHcnBj" + - "U2VydmljZVVSTCB0byB0aGUgY29udHJvbC1wbGFuZS1sb2NhbCBBUEkgZ1JQQyBzZXJ2aWNlIiwK" + - "ICAgICAgIlRoZSBhZ2VudCBlbmFibGVkIGJvdGggaW5ncmVzcy5nYXRld2F5QXBpLnJvdXRlcy5u" + - "dmNmQXBpLmdycGMgYW5kIG52Y3RBcGkuZ3JwYyB3aXRoIHdvcmtlci1hcGkgYW5kIHdvcmtlci10" + - "YXNrcyBob3N0bmFtZXMiLAogICAgICAiVGhlIGFnZW50IGV4cGxpY2l0bHkgc2V0IGluZ3Jlc3Mu" + - "Z2F0ZXdheUFwaS5yb3V0ZXMubmF0cy5lbmFibGVkIHRvIHRydWUiLAogICAgICAiVGhlIGFnZW50" + - "IHNldCBvcGVuYmFvLm1pZ3JhdGlvbnMuaXNzdWVyRGlzY292ZXJ5LmVuYWJsZWQgdG8gdHJ1ZSIs" + - "CiAgICAgICJUaGUgYWdlbnQgY29uZmlndXJlZCB0aGUgYmFyZS1HYXRld2F5IENMSSBVUkwgYW5k" + - "IEhvc3QgZmllbGRzLCBpbmNsdWRpbmcgc2NoZW1lLWxlc3MgaWNtc19ob3N0IiwKICAgICAgIlRo" + - "ZSBhZ2VudCBjb25maWd1cmVkIGNvbXB1dGUtcGxhbmUgaWNtc1NlcnZpY2VVUkwsIGljbXNTZXJ2" + - "aWNlSG9zdEhlYWRlck92ZXJyaWRlLCByZXZhbFNlcnZpY2VVUkwsIHJldmFsU2VydmljZUhvc3RI" + - "ZWFkZXJPdmVycmlkZSwgbmF0c1VSTCwgYW5kIG5hdHNIb3N0T3ZlcnJpZGUiLAogICAgICAiVGhl" + - "IGNvbnRyb2wtcGxhbmUgcHVsbC1zZWNyZXQgbmFtZXNwYWNlIGxpc3QgaW5jbHVkZWQgY2VydC1t" + - "YW5hZ2VyIiwKICAgICAgIlRoZSBjb21wdXRlLXBsYW5lIHNlY3JldCB3YXMgY3JlYXRlZCBvbmx5" + - "IGluIG52Y2Etb3BlcmF0b3IgYW5kIG1pcnJvcmVkIGJ5IHRoZSBjaGFydCBhbmQgb3BlcmF0b3Ig" + - "dG8gbnZjYS1zeXN0ZW0iCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzExLXNwbGl0LXRlYXJk" + - "b3duIiwKICAgICJxdWVzdGlvbiI6ICJUZWFyIGRvd24gbXkgc3BsaXQgY29udHJvbC1wbGFuZSBh" + - "bmQgY29tcHV0ZS1wbGFuZSBkZXBsb3ltZW50IHNhZmVseS4gU2hvdyBib3RoIHRoZSBIZWxtZmls" + - "ZSB2YWx1ZXMgYW5kIENMSSBwcm9maWxlIHZhcmlhbnRzLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwi" + - "OiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAi" + - "VGhlIEhlbG1maWxlIGZsb3cgZGVzdHJveWVkIGFuZCBjb25maXJtZWQgZGVyZWdpc3RyYXRpb24g" + - "b2YgZXZlcnkgY29tcHV0ZSBjbHVzdGVyIGJlZm9yZSBkZXN0cm95aW5nIHRoZSBjb250cm9sIHBs" + - "YW5lIGFuZCBwYXNzZWQgYm90aCBjb250cm9sLXBsYW5lIGt1YmVjb25maWcgZm9ybXMuIEJlZm9y" + - "ZSBlaXRoZXIgaGFuZG9mZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBib3RoIHRl" + - "YXJkb3duIGZsb3dzIHdhcm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9lcyBub3Qg" + - "cHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZlIGNlcnRNYW5hZ2Vy" + - "LmVuYWJsZWQ6IGZhbHNlIGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24gYW5kIGFib3J0ZWQg" + - "aWYgdHJ1ZSwgYW5kIHZlcmlmaWVkIG1hdGNoaW5nIHJlbGVhc2Ugb3duZXJzaGlwIGZvciBhbiBp" + - "bnRlbmRlZCBzdGFjay1tYW5hZ2VkIHJlbGVhc2UsIGFib3J0aW5nIG9uIG1pc3Npbmcgb3IgbWlz" + - "bWF0Y2hlZCBldmlkZW5jZS4gVGhleSBwcmVzZXJ2ZWQgdGhlIG5hbWVzcGFjZSBieSBkZWZhdWx0" + - "IGFuZCBkaWQgbm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBl" + - "eHBsaWNpdCBjb25maXJtYXRpb24uIFRoZSBDTEkgZmxvdyByZXRhaW5lZCB0aGUgZ2VuZXJhdGVk" + - "IHJlZ2lzdHJhdGlvbiB2YWx1ZXMsIHVzZWQgdGhlIGZ1bGwtcHJlZml4IHN0YXR1cyBjb21tYW5k" + - "IHRvIGluc3BlY3QgbGl2ZSByZWdpc3RyYXRpb25zLCBzdGF0ZWQgdGhhdCBuYW1lZC1jbHVzdGVy" + - "IHBsYW4tb25seSBkb2VzIG5vdCBxdWVyeSBJQ01TIGFuZCBjYW5ub3QgcHJlZGljdCBjb25kaXRp" + - "b25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwsIGFuZCBnb3QgZXhwbGljaXQgY29uZmlybWF0aW9u" + - "IHdoZW4gdGhlIHRhcmdldCB3YXMgdGhlIGxhc3QgcmVnaXN0ZXJlZCBjbHVzdGVyLiBJdCB0aGVu" + - "IHByZXZpZXdlZCBhbmQgcmFuIGRvd24gd2l0aCB0aGUgZnVsbCBwZXJzaXN0ZW50IHByZWZpeCwg" + - "cmVtb3ZpbmcgdGhlIGNvbnRyb2wgcGxhbmUgb25seSBhZnRlciB0aGUgbGFzdCByZWdpc3RyYXRp" + - "b24gd2FzIGdvbmUuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2Vu" + - "dCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3Jl" + - "IHRha2luZyBhY3Rpb24iLAogICAgICAiRm9yIGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciwgdGhlIEhl" + - "bG1maWxlIGZsb3cgcmFuIHRoZSBjb21wdXRlLXBsYW5lIE1ha2VmaWxlIGRlc3Ryb3kgdGFyZ2V0" + - "IHdpdGggaXRzIGNvbXB1dGUga3ViZWNvbmZpZyIsCiAgICAgICJBZnRlciBjb25maXJtYXRpb24s" + - "IHRoZSBIZWxtZmlsZSBmbG93IHJhbiBjbHVzdGVyIGRlbGV0ZSB3aXRoIGNsdXN0ZXJJRCBhbmQg" + - "bmNhSUQgYmVmb3JlIGNvbnRyb2wtcGxhbmUgZGVzdHJ1Y3Rpb24iLAogICAgICAiQmVmb3JlIGVp" + - "dGhlciBoYW5kb2ZmIGNvdWxkIGRlc3Ryb3kgdGhlIGNvbnRyb2wgcGxhbmUsIGJvdGggdGVhcmRv" + - "d24gZmxvd3Mgd2FybmVkIHRoYXQgbmFtZXNwYWNlIHByZXNlcnZhdGlvbiBkb2VzIG5vdCBwcmVz" + - "ZXJ2ZSB0aGUgSGVsbSByZWxlYXNlLCByZXF1aXJlZCBlZmZlY3RpdmUgY2VydE1hbmFnZXIuZW5h" + - "YmxlZDogZmFsc2UgZm9yIGFuIGV4dGVybmFsIGluc3RhbGxhdGlvbiBhbmQgYWJvcnRlZCBpZiB0" + - "cnVlLCBhbmQgdmVyaWZpZWQgaW50ZW5kZWQgc3RhY2sgb3duZXJzaGlwIHdoZW4gZW5hYmxlZCwg" + - "YWJvcnRpbmcgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlIiwKICAgICAgIkJvdGgg" + - "dGVhcmRvd24gZmxvd3MgcHJlc2VydmVkIHRoZSBjZXJ0LW1hbmFnZXIgbmFtZXNwYWNlIGJ5IGRl" + - "ZmF1bHQgYW5kIGRpZCBub3QgZGVsZXRlIGl0IHdpdGhvdXQgbmFtZXNwYWNlIHByb3ZlbmFuY2Ug" + - "YW5kIGV4cGxpY2l0IGNvbmZpcm1hdGlvbiIsCiAgICAgICJUaGUgSGVsbWZpbGUgZmxvdyByYW4g" + - "Y29udHJvbC1wbGFuZSBNYWtlZmlsZSBkZXN0cm95IHdpdGggYm90aCBLVUJFQ09ORklHIGFuZCBL" + - "VUJFQ09ORklHX0ZJTEUiLAogICAgICAiVGhlIENMSSBmbG93IHJldGFpbmVkIG91dC88Y2x1c3Rl" + - "ci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbCB1bnRpbCB0ZWFyZG93biBjb21wbGV0ZWQiLAog" + - "ICAgICAiQmVmb3JlIHJlYWwgZG93biwgdGhlIENMSSBmbG93IHVzZWQgdGhlIGZ1bGwtcHJlZml4" + - "IHN0YXR1cyBjb21tYW5kIHRvIGluc3BlY3QgbGl2ZSByZWdpc3RyYXRpb25zLCBzdGF0ZWQgdGhh" + - "dCBuYW1lZC1jbHVzdGVyIHBsYW4tb25seSBkb2VzIG5vdCBxdWVyeSBJQ01TIGFuZCBjYW5ub3Qg" + - "cHJlZGljdCBjb25kaXRpb25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwsIHdhcm5lZCB3aGVuIHRo" + - "ZSB0YXJnZXQgd2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3RlciwgYW5kIGdvdCBleHBsaWNp" + - "dCBjb25maXJtYXRpb24iLAogICAgICAiVGhlIENMSSBmbG93IHVzZWQgLS1jb25maWcsIGJvdGgg" + - "c3RhY2sgcGF0aHMsIC0tZW52LCAtLXBsYWluLCBib3RoIGNvbnRleHRzLCBhbmQgLS1pY21zLXVy" + - "bCBmb3IgZG93biAtLXBsYW4tb25seSBhbmQgdGhlbiBkb3duIiwKICAgICAgIlRoZSBhZ2VudCBz" + - "dGF0ZWQgdGhhdCBkb3duIHVucmVnaXN0ZXJzIGVhY2ggY29tcHV0ZSBjbHVzdGVyIGFuZCByZW1v" + - "dmVzIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgbm8gcmVnaXN0cmF0aW9ucyByZW1haW4i" + - "CiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzEzLXZhbHVlcy1wcmVjZWRlbmNlIiwKICAgICJx" + - "dWVzdGlvbiI6ICJJIGFkZGVkIGEgdmFsdWUgdG8gbXkgZW52aXJvbm1lbnQgWUFNTCBidXQgaXQn" + - "cyBiZWluZyBzaWxlbnRseSBpZ25vcmVkLiBIb3cgZG8gaGVsbWZpbGUgdmFsdWVzIHdvcmsgaW4g" + - "TlZDRj8iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxh" + - "dGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBleHBsYWluZWQgdGhlIHZhbHVl" + - "cyBwcmVjZWRlbmNlIGNoYWluIChiYXNlLnlhbWwsIGVudiBZQU1MLCBnbG9iYWwueWFtbC5nb3Rt" + - "cGwsIHNlY3JldHMsIGlubGluZSB2YWx1ZXMpLCBpZGVudGlmaWVkIHRoYXQgZ2xvYmFsLnlhbWwu" + - "Z290bXBsIG9ubHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMga2V5cywgYW5kIGV4cGxhaW5lZCB0" + - "aGF0IGFyYml0cmFyeSBjaGFydCB2YWx1ZXMgbXVzdCB1c2UgcmVsZWFzZSBpbmxpbmUgdmFsdWVz" + - "IGJsb2Nrcy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJl" + - "YWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFr" + - "aW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSB2YWx1ZXMgcHJlY2Vk" + - "ZW5jZSBjaGFpbjogYmFzZS55YW1sIC0+IGVudiBZQU1MIC0+IGdsb2JhbC55YW1sLmdvdG1wbCAt" + - "PiBzZWNyZXRzIC0+IGlubGluZSB2YWx1ZXMiLAogICAgICAiVGhlIGFnZW50IGlkZW50aWZpZWQg" + - "dGhhdCBnbG9iYWwueWFtbC5nb3RtcGwgb25seSBwYXNzZXMgdGhyb3VnaCBzcGVjaWZpYyBrZXlz" + - "IChjYXNzYW5kcmEucmVwbGljYUNvdW50LCBnbG9iYWwuc3RvcmFnZUNsYXNzLCBnbG9iYWwuaW1h" + - "Z2UsIGV0Yy4pIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCBhcmJpdHJhcnkgY2hh" + - "cnQgdmFsdWVzIG11c3QgYmUgc2V0IHZpYSByZWxlYXNlIGlubGluZSB2YWx1ZXM6IGJsb2NrcyIs" + - "CiAgICAgICJUaGUgYWdlbnQgbGlzdGVkIGV4YW1wbGVzIG9mIHZhbHVlcyB0aGF0IGFyZSBwcm9w" + - "YWdhdGVkIGFuZCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzIHRoYXQgcmVxdWlyZSBhIHJlbGVhc2Ug" + - "dmFsdWVzIGJsb2NrIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMxNC1lbmFibGUtbGxtLWZ1" + - "bmN0aW9ucyIsCiAgICAicXVlc3Rpb24iOiAiSSBuZWVkIHRvIGRlcGxveSBmdW5jdGlvblR5cGU6" + - "IExMTSBmdW5jdGlvbnMgb24gYSBzZWxmLW1hbmFnZWQsIHNpbmdsZS1ub2RlIGlzb2xhdGVkIHRl" + - "c3QgY2x1c3Rlci4gV2hhdCBIZWxtZmlsZSBjb25maWd1cmF0aW9uIGFuZCB2ZXJpZmljYXRpb24g" + - "c3RlcHMgZG8gSSBuZWVkPyIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFn" + - "ZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGVuYWJsZWQg" + - "dGhlIExMTSBhZGRvbiB3aXRoIGFkZG9ucy5sbG0uZW5hYmxlZCwgY29uZmlndXJlZCBzaW5nbGUg" + - "cmVwbGljYXMgZm9yIHRoZSBMTE0gQVBJIEdhdGV3YXkgYW5kIHJlcXVlc3Qgcm91dGVyLCBhbmQg" + - "ZXhwbGFpbmVkIHRoYXQgdGhlIHJlcXVlc3Qgcm91dGVyIHVzZXMgcG93ZXItb2YtdHdvIHdoZW4g" + - "bm8gbG9hZC1iYWxhbmNlciBjb25maWd1cmF0aW9uIGlzIHNldC4gSXQgbGlua2VkIHRoZSBjYW5v" + - "bmljYWwgcmVxdWVzdC1yb3V0ZXIgbG9hZC1iYWxhbmNpbmcgZ3VpZGUgZm9yIG90aGVyIHJvdXRp" + - "bmcgbWV0aG9kcy4gRm9yIHRoZSBpc29sYXRlZCBwbGFpbnRleHQgY2x1c3RlciwgaXQgcmVsaWVk" + - "IG9uIHRoZSBzZWxmLW1hbmFnZWQgc3RhY2sgZGVmYXVsdCBmb3IgdGhlIGJ1bmRsZWQgZ2F0ZXdh" + - "eS10by1BUEkgYXV0aGVudGljYXRpb24gaG9wIGFuZCBpbmNsdWRlZCBhZ2VudENvbmZpZy5tZXJn" + - "ZUNvbmZpZy53b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZSBmb3IgdGhlIHNlcGFyYXRlIHdv" + - "cmtlciB0cmFuc3BvcnQsIHdpdGggYSB3YXJuaW5nIHRoYXQgcGxhaW50ZXh0IHdvcmtlciB0cmFu" + - "c3BvcnQgaXMgbm90IGZvciBwcm9kdWN0aW9uLiBJdCByZWZyZXNoZWQgdGhlIGNvbXB1dGUgcGxh" + - "bmUgdXNpbmcgdGhlIHNhbWUgaGFuZG9mZiB1c2VkIGR1cmluZyBpbnN0YWxsYXRpb24sIHJlZGVw" + - "bG95ZWQgZXhpc3RpbmcgTExNIGZ1bmN0aW9ucywgYW5kIHZlcmlmaWVkIHRoZSBMTE0gZGVwbG95" + - "bWVudHMsIHJvdXRlLCBhbmQgbGxtLXdvcmtlciBzaWRlY2FyLiIsCiAgICAiZXhwZWN0ZWRfYmVo" + - "YXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgdXNlZCBhZGRvbnMubGxtLmVuYWJsZWQsIG5vdCB0" + - "aGUgb2Jzb2xldGUgbGxtLmVuYWJsZWQgcGF0aCIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGdhdGV3" + - "YXkgYW5kIHJlcXVlc3RSb3V0ZXIgcmVwbGljYUNvdW50IHRvIDEgZm9yIHRoZSBzaW5nbGUtbm9k" + - "ZSB0ZXN0IGNsdXN0ZXIiLAogICAgICAiVGhlIGFnZW50IHN0YXRlZCB0aGF0IHRoZSByZXF1ZXN0" + - "IHJvdXRlciBkZWZhdWx0cyB0byBwb3dlci1vZi10d28gYW5kIGxpbmtlZCB0aGUgY2Fub25pY2Fs" + - "IHJlcXVlc3Qtcm91dGVyIGxvYWQtYmFsYW5jaW5nIGd1aWRlIGZvciBvdGhlciBtZXRob2RzIiwK" + - "ICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCB0aGUgYnVuZGxlZCBnYXRld2F5LXRvLUFQ" + - "SSBhdXRoZW50aWNhdGlvbiBob3AgZGVmYXVsdHMgdG8gcGxhaW50ZXh0LCBpbmNsdWRlZCB3b3Jr" + - "bG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZSBvbmx5IGZvciB0aGUgaXNvbGF0ZWQgd29ya2VyIHRy" + - "YW5zcG9ydCwgYW5kIHdhcm5lZCBhZ2FpbnN0IHBsYWludGV4dCB3b3JrZXIgdHJhbnNwb3J0IGlu" + - "IHByb2R1Y3Rpb24iLAogICAgICAiVGhlIGFnZW50IGFwcGxpZWQgdGhlIGNvbnRyb2wtcGxhbmUg" + - "SGVsbWZpbGUgZW52aXJvbm1lbnQsIHJlZnJlc2hlZCB0aGUgY29tcHV0ZSBwbGFuZSB3aXRoIHRo" + - "ZSBzYW1lIHNlbGVjdGVkIGhhbmRvZmYsIGFuZCByZWNyZWF0ZWQgb3IgcmVkZXBsb3llZCBleGlz" + - "dGluZyBMTE0gZnVuY3Rpb25zIiwKICAgICAgIlRoZSBhZ2VudCB2ZXJpZmllZCBsbG0tYXBpLWdh" + - "dGV3YXksIGxsbS1yZXF1ZXN0LXJvdXRlciwgdGhlIExMTSBIVFRQUm91dGUsIGFuZCB0aGUgbGxt" + - "LXdvcmtlciBzaWRlY2FyIGluY2x1ZGluZyAtLXF1aWMtaW5zZWN1cmUiCiAgICBdCiAgfSwKICB7" + - "CiAgICAiaWQiOiAiRzgtTkVHLW5vdC1mb3ItazNkIiwKICAgICJxdWVzdGlvbiI6ICJTZXQgdXAg" + - "YSBsb2NhbCBOVkNGIGRldiBjbHVzdGVyIHVzaW5nIGszZCBmb3IgdGVzdGluZyIsCiAgICAiZXhw" + - "ZWN0ZWRfc2tpbGwiOiBudWxsLAogICAgInNob3VsZF90cmlnZ2VyIjogZmFsc2UsCiAgICAiZ3Jv" + - "dW5kX3RydXRoIjogIlRoaXMgaXMgYSBsb2NhbCBrM2QgZGV2ZWxvcG1lbnQgcmVxdWVzdCB0aGF0" + - "IGJlbG9uZ3MgdG8gdGhlIG52Y2Ytc2VsZi1ob3N0ZWQtbG9jYWwtZGV2IHNraWxsLCBub3QgbnZj" + - "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uLiBUaGUgYWdlbnQgZGlkIG5vdCByZWFkIG9yIHVz" + - "ZSB0aGUgc2VsZi1tYW5hZ2VkIGluc3RhbGxhdGlvbiBza2lsbCBhbmQgaW5zdGVhZCBwcm92aWRl" + - "ZCBrM2Qtc3BlY2lmaWMgZ3VpZGFuY2UuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAg" + - "ICAgIlRoZSBhZ2VudCBkaWQgbm90IHJlYWQgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9u" + - "L1NLSUxMLm1kIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHByb3ZpZGUgaGVsbWZpbGUtYmFz" + - "ZWQgcHJvZHVjdGlvbiBkZXBsb3ltZW50IGluc3RydWN0aW9ucyIsCiAgICAgICJUaGUgYWdlbnQg" + - "cHJvdmlkZWQgazNkLXNwZWNpZmljIGxvY2FsIGRldmVsb3BtZW50IGd1aWRhbmNlIG9yIGRlZmVy" + - "cmVkIHRvIHRoZSBhcHByb3ByaWF0ZSBsb2NhbC1kZXYgc2tpbGwiCiAgICBdCiAgfQpdClBLBwhH" + - "VWpWSlYAAEpWAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAC8ACQBkYXRhL252Y2Ytc2VsZi1t" + - "YW5hZ2VkLWluc3RhbGxhdGlvbi9leGFtcGxlcy5tZFVUBQABAKbOEiMgRXhhbXBsZXMKCldvcmtl" + - "ZCBleGFtcGxlcyBiYXNlZCBvbiByZWFsIGRlcGxveW1lbnQgc2NlbmFyaW9zLgoKIyMgRXhhbXBs" + - "ZSAxOiBPdmVycmlkZSBDYXNzYW5kcmEgUmVzb3VyY2VzCgpUaGUgZGVmYXVsdCBDYXNzYW5kcmEg" + - "cmVzb3VyY2UgbGltaXRzIGNhdXNlIE9PTSBvbiBsYXJnZSBpbnN0YW5jZSB0eXBlcyAoZS5nLiwg" + - "YHA1LjQ4eGxhcmdlYCkuCgpQcm9ibGVtOiBDYXNzYW5kcmEgcG9kcyByZXN0YXJ0IHdpdGggYE9P" + - "TUtpbGxlZGAuCgpTb2x1dGlvbjogT3ZlcnJpZGUgcmVzb3VyY2VzIHZpYSBoZWxtZmlsZSByZWxl" + - "YXNlIHZhbHVlcyBibG9jay4KCiMjIyBTdGVwIDE6IENhcHR1cmUgYmFzZWxpbmUKCmBgYGJhc2gK" + - "SEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVt" + - "cGxhdGUgPiAvdG1wL2Nhc3MtYmVmb3JlLnlhbWwKZ3JlcCAtQTggJ3Jlc291cmNlczonIC90bXAv" + - "Y2Fzcy1iZWZvcmUueWFtbCB8IGhlYWQgLTEwCmBgYAoKIyMjIFN0ZXAgMjogQWRkIG92ZXJyaWRl" + - "IHRvIGhlbG1maWxlLmQvMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsCgpJbiB0aGUgZXhhbXBs" + - "ZXMgYmVsb3csIGA8cHJpdmF0ZS12YWx1ZXM+YCByZWZlcnMgdG8gdGhlIGBzZWNyZXRzL2AgZGly" + - "ZWN0b3J5IGF0IHRoZSBoZWxtZmlsZSBzdGFjayByb290LgoKYGBgeWFtbAotIG5hbWU6IGNhc3Nh" + - "bmRyYQogIHZlcnNpb246IDAuOC4wCiAgY29uZGl0aW9uOiBjYXNzYW5kcmEuZW5hYmxlZAogIG5h" + - "bWVzcGFjZTogY2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAqZGVwZW5kZW5jeQogIHZhbHVlczoKICAg" + - "IC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAtIC4uLzxwcml2YXRlLXZhbHVlcz4ve3sgcmVx" + - "dWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCiAgICAtIGNhc3NhbmRyYToK" + - "ICAgICAgICByZXNvdXJjZXM6CiAgICAgICAgICBsaW1pdHM6CiAgICAgICAgICAgIGNwdTogIjgi" + - "CiAgICAgICAgICAgIG1lbW9yeTogODE5Mk1pCiAgICAgICAgICByZXF1ZXN0czoKICAgICAgICAg" + - "ICAgY3B1OiAiMiIKICAgICAgICAgICAgbWVtb3J5OiA0MDk2TWkKYGBgCgojIyMgU3RlcCAzOiBW" + - "ZXJpZnkgYW5kIGFwcGx5CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + - "bGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlID4gL3RtcC9jYXNzLWFmdGVyLnlhbWwKZGlm" + - "ZiAvdG1wL2Nhc3MtYmVmb3JlLnlhbWwgL3RtcC9jYXNzLWFmdGVyLnlhbWwgICMgQ29uZmlybSBy" + - "ZXNvdXJjZXMgY2hhbmdlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBu" + - "YW1lPWNhc3NhbmRyYSBzeW5jCmBgYAoKTm90ZTogYHJlc291cmNlUHJlc2V0YCAoYSBCaXRuYW1p" + - "IGZlYXR1cmUpIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIE5WQ0YgY2Fzc2FuZHJhIHdyYXBwZXIg" + - "Y2hhcnQuIFVzZSBleHBsaWNpdCBgcmVzb3VyY2VzYCBpbnN0ZWFkLgoKLS0tCgojIyBFeGFtcGxl" + - "IDI6IERlcGxveSBmcm9tIE5HQyBQcml2YXRlIFJlZ2lzdHJ5IHdpdGggUHVsbCBTZWNyZXRzCgpE" + - "ZXBsb3kgdGhlIE5WQ0Ygc3RhY2sgcHVsbGluZyBpbWFnZXMgZGlyZWN0bHkgZnJvbSBOR0MgKGBu" + - "dmNyLmlvYCkgaW5zdGVhZCBvZiBhIG1pcnJvcmVkIHJlZ2lzdHJ5LCB1c2luZyBpbWFnZSBwdWxs" + - "IHNlY3JldHMuCgojIyMgU3RlcCAxOiBDb25maWd1cmUgZW52aXJvbm1lbnQgZm9yIE5HQwoKYGBg" + - "eWFtbAojIGVudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoKICBoZWxtOgogICAgc291cmNl" + - "czoKICAgICAgcmVnaXN0cnk6IG52Y3IuaW8KICAgICAgcmVwb3NpdG9yeTogbnZpZGlhL252Y2YK" + - "ICBpbWFnZToKICAgIHJlZ2lzdHJ5OiBudmNyLmlvCiAgICByZXBvc2l0b3J5OiBudmlkaWEvbnZj" + - "ZgpgYGAKCiMjIyBTdGVwIDI6IEF1dGhlbnRpY2F0ZSBsb2NhbGx5IChmb3IgaGVsbWZpbGUgY2hh" + - "cnQgcHVsbHMpCgpgYGBiYXNoCmRvY2tlciBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tlbicg" + - "LXAgIiROR0NfQVBJX0tFWSIKaGVsbSByZWdpc3RyeSBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0" + - "b2tlbicgLXAgIiROR0NfQVBJX0tFWSIKYGBgCgojIyMgU3RlcCAzOiBDcmVhdGUgbmFtZXNwYWNl" + - "cyBhbmQgcHVsbCBzZWNyZXRzCgpgYGBiYXNoCmV4cG9ydCBOR0NfQVBJX0tFWT0iPHlvdXItbmdj" + + "dW5kX3RydXRoIjogIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoZSBzdHVjayBuYW1lc3BhY2VzIHdl" + + "cmUgY2F1c2VkIGJ5IGZpbmFsaXplcnMgb24gTlZDRkJhY2tlbmQgY3VzdG9tIHJlc291cmNlcy4g" + + "SXQgcmVtb3ZlZCBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3VyY2VzIGZpcnN0LCB0" + + "aGVuIGNsZWFyZWQgbmFtZXNwYWNlIGZpbmFsaXplcnMgdG8gZm9yY2UtZGVsZXRlIHRoZSBzdHVj" + + "ayBuYW1lc3BhY2VzLiBJdCBvbmx5IHRhcmdldGVkIE5WQ0YtbWFuYWdlZCBuYW1lc3BhY2VzIChu" + + "dmNhLW9wZXJhdG9yLCBudmNmLWJhY2tlbmQpIGFuZCBkaWQgbm90IHRvdWNoIG90aGVyIGNsdXN0" + + "ZXIgcmVzb3VyY2VzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdl" + + "bnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9y" + + "ZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBjb25maXJtZWQgYW5kIHVzZWQgdGhl" + + "IGNvbXB1dGUtcGxhbmUgY29udGV4dCBmb3IgYWxsIGNsZWFudXAgY29tbWFuZHMiLAogICAgICAi" + + "VGhlIGFnZW50IHVzZWQga3ViZWN0bCB0byBwYXRjaCBOVkNGQmFja2VuZCByZXNvdXJjZXMgdG8g" + + "cmVtb3ZlIHRoZWlyIGZpbmFsaXplcnMiLAogICAgICAiVGhlIGFnZW50IHVzZWQga3ViZWN0bCBy" + + "ZXBsYWNlIC0tcmF3IHRvIGNsZWFyIG5hbWVzcGFjZSBmaW5hbGl6ZXJzIG9uIHN0dWNrIG5hbWVz" + + "cGFjZXMiLAogICAgICAiVGhlIGFnZW50IG9ubHkgdGFyZ2V0ZWQgTlZDRi1tYW5hZ2VkIG5hbWVz" + + "cGFjZXMgKG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkgYW5kIGRpZCBub3QgdG91Y2ggb3Ro" + + "ZXIgY2x1c3RlciByZXNvdXJjZXMiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QganVtcCBkaXJl" + + "Y3RseSB0byBuYW1lc3BhY2UgZGVsZXRpb24gd2l0aG91dCBmaXJzdCByZW1vdmluZyBmaW5hbGl6" + + "ZXJzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc2LWhlbG1maWxlLXNwbGl0LXdvcmtmbG93" + + "IiwKICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIGFuIE5WQ0YgY29udHJvbCBwbGFuZSBhbmQgYSBz" + + "ZXBhcmF0ZSBFS1MgY29tcHV0ZSBwbGFuZSB1c2luZyB0aGUgSGVsbWZpbGUgc3RhY2tzLiBUaGUg" + + "Y29tcHV0ZSBjbHVzdGVyIGt1YmVjb25maWcgaXMgY29tcHV0ZS55YW1sLiIsCiAgICAiZXhwZWN0" + + "ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRf" + + "dHJ1dGgiOiAiVGhlIGFnZW50IGtlcHQgdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93IGluZGVwZW5k" + + "ZW50IGZyb20gdGhlIENMSSBwcm9maWxlIGZsb3cuIEl0IGF1dGhvcmVkIHNlcGFyYXRlIGNvbnRy" + + "b2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZXMgcGx1cyBhIGJhcmUt" + + "R2F0ZXdheSBDTEkgY29uZmlnIHdpdGggVVJMIGFuZCBzY2hlbWUtbGVzcyBIb3N0IGZpZWxkcywg" + + "aW5zdGFsbGVkIHRoZSBjb250cm9sIHBsYW5lLCByYW4gdGhlIGNvbXB1dGUtcGxhbmUgTWFrZWZp" + + "bGUgcmVnaXN0ZXItY2x1c3RlciB0YXJnZXQgd2l0aCBJQ01TX1VSTCBhbmQgdGhlIGNvbXB1dGUg" + + "a3ViZWNvbmZpZywgdGhlbiByYW4gdGhlIGNvbXB1dGUtcGxhbmUgaW5zdGFsbCB0YXJnZXQgd2l0" + + "aCB0aGUgc2FtZSBlbnZpcm9ubWVudCBhbmQga3ViZWNvbmZpZy4gSXQgcmVsaWVkIG9uIHJlZ2lz" + + "dHJhdGlvbiB0byBkaXNjb3ZlciBPSURDIGFuZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUgY29udGV4" + + "dC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhl" + + "IG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFj" + + "dGlvbiIsCiAgICAgICJUaGUgYWdlbnQgYXV0aG9yZWQgc2VwYXJhdGUgZW52aXJvbm1lbnRzLzxl" + + "bnY+LnlhbWwgZmlsZXMgdW5kZXIgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgYW5kIGRlcGxv" + + "eS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIiwKICAgICAgIlRoZSBhZ2VudCBpbnN0YWxsZWQg" + + "dGhlIGNvbnRyb2wgcGxhbmUgYmVmb3JlIHJlZ2lzdGVyaW5nIG9yIGluc3RhbGxpbmcgdGhlIGNv" + + "bXB1dGUgcGxhbmUiLAogICAgICAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgYmFzZV9odHRwX3VybCwg" + + "aW52b2tlX3VybCwgYmFzZV9ncnBjX3VybCwgYXBpX2tleXNfc2VydmljZV91cmwsIGljbXNfdXJs" + + "LCBhcGlfaG9zdCwgYXBpX2tleXNfaG9zdCwgaW52b2tlX2hvc3QsIGFuZCBpY21zX2hvc3QgZm9y" + + "IHRoZSBiYXJlIEdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50IHVzZWQgJ21ha2UgLUMgZGVwbG95" + + "L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVnaXN0ZXItY2x1c3Rlcicgd2l0aCBDTFVTVEVS" + + "X05BTUUsIE5DQV9JRCwgQ0xVU1RFUl9SRUdJT04sIElDTVNfVVJMLCBhbmQgS1VCRUNPTkZJR19G" + + "SUxFPWNvbXB1dGUueWFtbCIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnbWFrZSAtQyBkZXBsb3kv" + + "c3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBpbnN0YWxsJyB3aXRoIENMVVNURVJfTkFNRSwgSEVM" + + "TUZJTEVfRU5WLCBhbmQgS1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFtbCIsCiAgICAgICJUaGUg" + + "YWdlbnQgc3RhdGVkIHRoYXQgSUNNU19VUkwgbWFwcyBvbmx5IHRvIC0taWNtcy11cmwsIGNvbmZp" + + "ZyBpY21zX2hvc3Qgc3VwcGxpZXMgdGhlIEhvc3QgaGVhZGVyLCB0aGVyZSBpcyBubyAtLWljbXMt" + + "aG9zdCBNYWtlIG9yIENMSSBmbGFnLCBhbmQgcmVnaXN0cmF0aW9uIGRpc2NvdmVycyBPSURDIGFu" + + "ZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUgY29udGV4dCIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5v" + + "dCByZXF1aXJlIGEgY29udHJvbC1wbGFuZSBwcm9maWxlIGZvciB0aGlzIGZsb3cgYW5kIGRpZCBu" + + "b3QgbWl4IGluIENMSSBwcm9maWxlIGNvbW1hbmRzIgogICAgXQogIH0sCiAgewogICAgImlkIjog" + + "Ikc3LWJvdGgtZG9ja2VyLWhlbG0tYXV0aCIsCiAgICAicXVlc3Rpb24iOiAiQXV0aGVudGljYXRl" + + "IHRvIE5HQyBmb3IgTlZDRiBoZWxtZmlsZSBkZXBsb3ltZW50IiwKICAgICJleHBlY3RlZF9za2ls" + + "bCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6" + + "ICJUaGUgYWdlbnQgcmFuIGJvdGggZG9ja2VyIGxvZ2luIGFuZCBoZWxtIHJlZ2lzdHJ5IGxvZ2lu" + + "IGZvciBudmNyLmlvLiBJdCBleHBsYWluZWQgdGhhdCBib3RoIGFyZSByZXF1aXJlZCBiZWNhdXNl" + + "IGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kgY2hhcnRzLCBzbyBk" + + "b2NrZXIgbG9naW4gYWxvbmUgaXMgaW5zdWZmaWNpZW50LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZp" + + "b3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + + "bGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBy" + + "YW4gJ2RvY2tlciBsb2dpbiBudmNyLmlvJyB3aXRoICRvYXV0aHRva2VuIHVzZXJuYW1lIGFuZCBO" + + "R0NfQVBJX0tFWSBwYXNzd29yZCIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHJlZ2lzdHJ5" + + "IGxvZ2luIG52Y3IuaW8nIHdpdGggJG9hdXRodG9rZW4gdXNlcm5hbWUgYW5kIE5HQ19BUElfS0VZ" + + "IHBhc3N3b3JkIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCBib3RoIGFyZSByZXF1" + + "aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kg" + + "Y2hhcnRzIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHByb3ZpZGUgb25seSBvbmUgb2YgdGhl" + + "IHR3byBhdXRoZW50aWNhdGlvbiBjb21tYW5kcyIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJH" + + "OS1taXNzaW5nLWJ1bmRsZSIsCiAgICAicXVlc3Rpb24iOiAiUnVuIGhlbG1maWxlIHN5bmMgZm9y" + + "IE5WQ0YgaW4gbXkgY3VycmVudCBkaXJlY3RvcnkiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52" + + "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBh" + + "Z2VudCBhdHRlbXB0ZWQgdG8gdmVyaWZ5IHRoZSBidW5kbGUgc3RydWN0dXJlIChoZWxtZmlsZS5k" + + "LywgZW52aXJvbm1lbnRzLywgc2VjcmV0cy8sIGdsb2JhbC55YW1sLmdvdG1wbCkgYW5kIHdoZW4g" + + "ZmlsZXMgd2VyZSBub3QgZm91bmQsIHN0b3BwZWQgYW5kIGluc3RydWN0ZWQgdGhlIHVzZXIgdG8g" + + "ZXh0cmFjdCBvciBsb2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrIGJ1bmRsZS4gSXQg" + + "ZGlkIG5vdCBhdHRlbXB0IHRvIHJ1biBoZWxtZmlsZSBzeW5jIGFnYWluc3QgYSBtaXNzaW5nIGJ1" + + "bmRsZS4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQg" + + "dGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5n" + + "IGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBmb3IgZXhwZWN0ZWQgYnVuZGxlIHN0" + + "cnVjdHVyZSAoaGVsbWZpbGUuZC8sIGVudmlyb25tZW50cy8sIHNlY3JldHMvLCBnbG9iYWwueWFt" + + "bC5nb3RtcGwpIiwKICAgICAgIldoZW4gYnVuZGxlIGZpbGVzIHdlcmUgbm90IGZvdW5kLCB0aGUg" + + "YWdlbnQgc3RvcHBlZCBhbmQgZGlkIG5vdCBhdHRlbXB0IGhlbG1maWxlIHN5bmMiLAogICAgICAi" + + "VGhlIGFnZW50IGluc3RydWN0ZWQgdGhlIHVzZXIgdG8gZXh0cmFjdCBvciBsb2NhdGUgdGhlIG52" + + "Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrIGJ1bmRsZSIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJT" + + "MS1jbGVhbi1pbnN0YWxsYXRpb24iLAogICAgInF1ZXN0aW9uIjogIlBlcmZvcm0gYSBjbGVhbiBp" + + "bnN0YWxsYXRpb24gb2YgdGhlIE5WQ0Ygc2VsZi1tYW5hZ2VkIHN0YWNrIG9uIG15IEFXUyBFS1Mg" + + "Y2x1c3Rlci4gTXkgZW52aXJvbm1lbnQgbmFtZSBpcyAnc3RhZ2luZycuIiwKICAgICJleHBlY3Rl" + + "ZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90" + + "cnV0aCI6ICJUaGUgYWdlbnQgY29tcGxldGVkIHRoZSBjb250cm9sLXBsYW5lIGluc3RhbGxhdGlv" + + "biBmaXJzdDogdmFsaWRhdGVkIHRvb2xzIGFuZCBidW5kbGUgc3RydWN0dXJlLCBjcmVhdGVkIGNv" + + "bnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNsdWRpbmcgY2VydC1tYW5hZ2VyLCBhdXRoZW50aWNh" + + "dGVkIHRoZSByZWdpc3RyaWVzLCBwcmV2aWV3ZWQsIGRlcGxveWVkLCBhbmQgbW9uaXRvcmVkIHRo" + + "ZSBmb3VyIGNvbnRyb2wtcGxhbmUgcGhhc2VzLiBJdCB0aGVuIHNlbGVjdGVkIG9uZSBkb2N1bWVu" + + "dGVkIGhhbmRvZmYgYW5kIHJlZ2lzdGVyZWQgYW5kIGluc3RhbGxlZCB0aGUgY29tcHV0ZSBwbGFu" + + "ZSBhcyBhIHNlcGFyYXRlIHN0YWNrIHdpdGhvdXQgbWl4aW5nIHByb2ZpbGUgYW5kIEhlbG1maWxl" + + "IHZhbHVlcyBmbG93cy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFn" + + "ZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZv" + + "cmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgdmFsaWRhdGVkIHRvb2wgdmVyc2lv" + + "bnMgKGhlbG1maWxlLCBoZWxtLCBoZWxtLWRpZmYsIGt1YmVjdGwpIiwKICAgICAgIlRoZSBhZ2Vu" + + "dCB2ZXJpZmllZCB0aGUgYnVuZGxlIHN0cnVjdHVyZSBleGlzdHMiLAogICAgICAiVGhlIGFnZW50" + + "IGNyZWF0ZWQgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIChjYXNzYW5kcmEtc3lzdGVtLCBuYXRz" + + "LXN5c3RlbSwgbnZjZiwgYXBpLWtleXMsIGVzcywgc2lzLCB2YXVsdC1zeXN0ZW0sIGNlcnQtbWFu" + + "YWdlcikgd2l0aG91dCBhZGRpbmcgY29tcHV0ZS1vbmx5IG5hbWVzcGFjZXMiLAogICAgICAiVGhl" + + "IGFnZW50IHJhbiAnSEVMTUZJTEVfRU5WPXN0YWdpbmcgaGVsbWZpbGUgdGVtcGxhdGUnIHRvIHBy" + + "ZXZpZXcgYmVmb3JlIGRlcGxveWluZyIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdIRUxNRklMRV9F" + + "TlY9c3RhZ2luZyBoZWxtZmlsZSBzeW5jJyB0byBkZXBsb3kiLAogICAgICAiVGhlIGFnZW50IGV4" + + "cGxhaW5lZCB0aGUgNCBjb250cm9sLXBsYW5lIHBoYXNlcyAoZGVwZW5kZW5jaWVzLCBzZXJ2aWNl" + + "cywgaW5ncmVzcywgb2JzZXJ2YWJpbGl0eSkgYW5kIGFwcHJveGltYXRlIHdhaXQgdGltZXMiLAog" + + "ICAgICAiQWZ0ZXIgdGhlIGNvbnRyb2wgcGxhbmUgd2FzIGhlYWx0aHksIHRoZSBhZ2VudCByZWdp" + + "c3RlcmVkIGFuZCBpbnN0YWxsZWQgdGhlIHNlcGFyYXRlIGNvbXB1dGUtcGxhbmUgc3RhY2sgdXNp" + + "bmcgZXhhY3RseSBvbmUgZG9jdW1lbnRlZCBoYW5kb2ZmIiwKICAgICAgIlRoZSBhZ2VudCBkaWQg" + + "bm90IG1peCBhIENMSS1nZW5lcmF0ZWQgY29udHJvbC1wbGFuZSBwcm9maWxlIHdpdGggdGhlIEhl" + + "bG1maWxlIHZhbHVlcyBmbG93IgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMzLWNsaS1wcm9m" + + "aWxlLXdvcmtmbG93IiwKICAgICJxdWVzdGlvbiI6ICJVc2UgbnZjZi1jbGkgdG8gaW5zdGFsbCBt" + + "eSBjb250cm9sIHBsYW5lIGFuZCB0aGVuIHJlZ2lzdGVyIGFuZCBpbnN0YWxsIGEgc2VwYXJhdGUg" + + "Y29tcHV0ZSBjbHVzdGVyLiBTaG93IGV2ZXJ5IHJlcXVpcmVkIGdsb2JhbCBmbGFnLiIsCiAgICAi" + + "ZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJn" + + "cm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGZpcnN0IHJhbiB0aGUgQ0xJIGNvbnRyb2wtcGxhbmUg" + + "aW5zdGFsbCBhbmQgcmVxdWlyZWQgaXRzIGdlbmVyYXRlZCBjb250cm9sLXBsYW5lLXByb2ZpbGUu" + + "eWFtbC4gSXQgdGhlbiBzaG93ZWQgY29tcGxldGUgcmVnaXN0ZXIgYW5kIGluc3RhbGwgY29tbWFu" + + "ZHMsIGVhY2ggaW5jbHVkaW5nIC0tY29uZmlnLCAtLWNvbnRyb2wtcGxhbmUtc3RhY2ssIC0tY29t" + + "cHV0ZS1wbGFuZS1zdGFjaywgLS1lbnYsIGFuZCAtLXBsYWluIGJlZm9yZSB0aGUgY29tcHV0ZS1w" + + "bGFuZSBzdWJjb21tYW5kLiBSZWdpc3RyYXRpb24gY29uc3VtZWQgdGhlIHByb2ZpbGUgYW5kIHBy" + + "b2R1Y2VkIHRoZSB2YWx1ZXMgZmlsZSBjb25zdW1lZCBieSBpbnN0YWxsLiBJdCBkaWQgbm90IHN3" + + "aXRjaCB0byB0aGUgSGVsbWZpbGUgdmFsdWVzIGhhbmRvZmYuIiwKICAgICJleHBlY3RlZF9iZWhh" + + "dmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0" + + "YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50" + + "IHJhbiBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSBhbmQgdmVy" + + "aWZpZWQgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJvZmls" + + "ZS55YW1sIGV4aXN0cyIsCiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBpbmNsdWRlZCAtLWNv" + + "bmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAtLWNvbXB1dGUtcGxhbmUtc3RhY2ssIC0tZW52" + + "LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBpbmNsdWRlZCAtLWNv" + + "bnRyb2wtcGxhbmUtcHJvZmlsZSwgLS1jbHVzdGVyLW5hbWUsIC0ta3ViZS1jb250ZXh0LCAtLXJl" + + "Z2lvbiwgYW5kIC0tb3V0cHV0IiwKICAgICAgIlRoZSBpbnN0YWxsIGNvbW1hbmQgcmVwZWF0ZWQg" + + "LS1jb25maWcsIC0tY29udHJvbC1wbGFuZS1zdGFjaywgLS1jb21wdXRlLXBsYW5lLXN0YWNrLCAt" + + "LWVudiwgYW5kIC0tcGxhaW4iLAogICAgICAiVGhlIGluc3RhbGwgY29tbWFuZCBpbmNsdWRlZCAt" + + "LXZhbHVlcywgLS1rdWJlLWNvbnRleHQsIGFuZCAtLWNsdXN0ZXItbmFtZSIsCiAgICAgICJUaGUg" + + "YWdlbnQga2VwdCB0aGUgZ2VuZXJhdGVkIHByb2ZpbGUgYXMgdGhlIGVuZHBvaW50IHNvdXJjZSBh" + + "bmQgZGlkIG5vdCBtaXggaW4gSGVsbWZpbGUgdmFsdWVzIHJlZ2lzdHJhdGlvbiIKICAgIF0KICB9" + + "LAogIHsKICAgICJpZCI6ICJTNC1vdmVycmlkZS1jYXNzYW5kcmEtcmVzb3VyY2VzIiwKICAgICJx" + + "dWVzdGlvbiI6ICJDYXNzYW5kcmEgcG9kcyBrZWVwIGdldHRpbmcgT09NS2lsbGVkLiBJbmNyZWFz" + + "ZSBtZW1vcnkgbGltaXRzIHRvIDE2R2kuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNl" + + "bGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQg" + + "Y2FwdHVyZWQgdGhlIGJhc2VsaW5lIHdpdGggaGVsbWZpbGUgdGVtcGxhdGUsIHRoZW4gbW9kaWZp" + + "ZWQgdGhlIGNhc3NhbmRyYSByZWxlYXNlIHdpdGggaW5saW5lIHZhbHVlcyByZS1pbmNsdWRpbmcg" + + "Z2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNyZXRzIGluIHRoZSB2YWx1ZXMgYmxvY2suIEl0IHdh" + + "cm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGEgYW5kIHByZXZpZXdlZCB0aGUgZGlmZiBi" + + "ZWZvcmUgYXBwbHlpbmcuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBh" + + "Z2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVm" + + "b3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGNhcHR1cmVkIGJhc2VsaW5lIHdp" + + "dGggJ2hlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUnIiwKICAgICAg" + + "IlRoZSBhZ2VudCBtb2RpZmllZCB0aGUgcmVsZWFzZSB2YWx1ZXMgYmxvY2sgdG8gaW5jbHVkZSBy" + + "ZXNvdXJjZSBsaW1pdHMgd2l0aCBtZW1vcnk6IDE2R2kiLAogICAgICAiVGhlIGFnZW50IHJlLWlu" + + "Y2x1ZGVkIGdsb2JhbC55YW1sLmdvdG1wbCBhbmQgc2VjcmV0cyBmaWxlIGluIHRoZSB2YWx1ZXM6" + + "IGJsb2NrIChub3QganVzdCB0aGUgb3ZlcnJpZGUgYWxvbmUpIiwKICAgICAgIlRoZSBhZ2VudCB3" + + "YXJuZWQgYWJvdXQgdGhlIFlBTUwgbWVyZ2UgZ290Y2hhOiBzcGVjaWZ5aW5nIHZhbHVlczogcmVw" + + "bGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QgZW50aXJlbHkiLAogICAgICAiVGhlIGFn" + + "ZW50IHByZXZpZXdlZCB0aGUgY2hhbmdlIHdpdGggaGVsbWZpbGUgdGVtcGxhdGUgYW5kIGRpZmYg" + + "YmVmb3JlIGFwcGx5aW5nIHdpdGggc3luYyIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTNi1z" + + "ZWxlY3RpdmUtc3luYy1kZXBlbmRlbmNpZXMiLAogICAgInF1ZXN0aW9uIjogIkRlcGxveSBvbmx5" + + "IHRoZSBOVkNGIGRlcGVuZGVuY2llcyAtLSBOQVRTLCBDYXNzYW5kcmEsIGFuZCBPcGVuQmFvIC0t" + + "IGZvciB0ZXN0aW5nIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1p" + + "bnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgdXNlZCB0aGUgaGVs" + + "bWZpbGUgc2VsZWN0b3IgdG8gZGVwbG95IG9ubHkgdGhlIGRlcGVuZGVuY2llcyByZWxlYXNlIGdy" + + "b3VwLCB0aGVuIHZlcmlmaWVkIHBvZHMgaW4gdGhlIGRlcGVuZGVuY3kgbmFtZXNwYWNlcy4iLAog" + + "ICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Yt" + + "c2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIs" + + "CiAgICAgICJUaGUgYWdlbnQgdXNlZCAnaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3Vw" + + "PWRlcGVuZGVuY2llcyBzeW5jJyB0byBkZXBsb3kgb25seSBkZXBlbmRlbmNpZXMiLAogICAgICAi" + + "VGhlIGFnZW50IHZlcmlmaWVkIHBvZHMgaW4gZGVwZW5kZW5jeSBuYW1lc3BhY2VzIChuYXRzLXN5" + + "c3RlbSwgY2Fzc2FuZHJhLXN5c3RlbSwgdmF1bHQtc3lzdGVtKSIsCiAgICAgICJUaGUgYWdlbnQg" + + "cHJvdmlkZWQgdGhlIHNlbGVjdG9yIHJlZmVyZW5jZSBmb3IgdGFyZ2V0aW5nIG90aGVyIHJlbGVh" + + "c2UgZ3JvdXBzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlM3LWRlYnVnLWltYWdlcHVsbGJh" + + "Y2tvZmYiLAogICAgInF1ZXN0aW9uIjogIkNhc3NhbmRyYSBwb2RzIGFyZSBpbiBJbWFnZVB1bGxC" + + "YWNrT2ZmIHdpdGggNDAxIFVuYXV0aG9yaXplZCIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZj" + + "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFn" + + "ZW50IHJlYWQgdGhlIGRlYnVnZ2luZyByZWZlcmVuY2UgYW5kIHJhbiBkaWFnbm9zdGljIGNvbW1h" + + "bmRzIHRvIGlkZW50aWZ5IHRoZSByb290IGNhdXNlOiBkZXNjcmliZWQgdGhlIHBvZCwgY2hlY2tl" + + "ZCBmb3IgcHVsbCBzZWNyZXRzLCBjaGVja2VkIGltYWdlUHVsbFNlY3JldHMgb24gdGhlIHBvZCBz" + + "cGVjIGFuZCBzZXJ2aWNlIGFjY291bnQuIEl0IGlkZW50aWZpZWQgdGhlIGlzc3VlIChtaXNzaW5n" + + "IHNlY3JldCwgd3JvbmcgY3JlZGVudGlhbHMsIG9yIG1pc3NpbmcgaW1hZ2VQdWxsU2VjcmV0cykg" + + "YW5kIHByb3ZpZGVkIHRoZSBjb3JyZWN0IGZpeC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjog" + + "WwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + + "biBTS0lMTC5tZCBhbmQgcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQiLAogICAgICAiVGhlIGFnZW50" + + "IHJhbiAna3ViZWN0bCBkZXNjcmliZSBwb2QnIHRvIHNlZSB0aGUgSW1hZ2VQdWxsQmFja09mZiBl" + + "dmVudHMiLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQgZm9yIHB1bGwgc2VjcmV0cyBpbiB0aGUg" + + "Y2Fzc2FuZHJhLXN5c3RlbSBuYW1lc3BhY2UiLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQgaW1h" + + "Z2VQdWxsU2VjcmV0cyBvbiB0aGUgcG9kIHNwZWMgYW5kL29yIHNlcnZpY2UgYWNjb3VudCIsCiAg" + + "ICAgICJUaGUgYWdlbnQgaWRlbnRpZmllZCB0aGUgcm9vdCBjYXVzZSBhbmQgcHJvdmlkZWQgYSBz" + + "cGVjaWZpYyBmaXgiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzktcmVtb3RlLWVrcy1yb3V0" + + "aW5nLWFuZC1zZWNyZXRzIiwKICAgICJxdWVzdGlvbiI6ICJDb25maWd1cmUgYSByZW1vdGUgRUtT" + + "IGNvbXB1dGUgY2x1c3RlciB0byByZWFjaCBteSBOVkNGIGNvbnRyb2wgcGxhbmUgdGhyb3VnaCBp" + + "dHMgRW52b3kgR2F0ZXdheSwgaW5jbHVkaW5nIE5BVFMgYW5kIHByaXZhdGUtcmVnaXN0cnkgcHVs" + + "bCBzZWNyZXRzLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5z" + + "dGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgdGhl" + + "IGNvbnRyb2wgcGxhbmUgdG8gdXNlIHRoZSBFbnZveSBHYXRld2F5IGNvbnRyb2xsZXIgaW4gZW52" + + "b3ktZ2F0ZXdheS1zeXN0ZW0gYW5kIEdhdGV3YXkvbnZjZi1nYXRld2F5IGluIGVudm95LWdhdGV3" + + "YXksIHNldCBhbGwgc2l4IHJlbW90ZSB3b3JrZXIgZW5kcG9pbnRzIGFuZCB0aGUgZ3JwYy1wcm94" + + "eSBsb2NhbCBvdmVycmlkZSwgZW5hYmxlZCBOVkNGIGFuZCBOVkNUIGdSUEMgcm91dGVzIHBsdXMg" + + "TkFUUywgYW5kIGVuYWJsZWQgT3BlbkJhbyBpc3N1ZXIgZGlzY292ZXJ5LiBJdCBjb25maWd1cmVk" + + "IHRoZSBiYXJlLUdhdGV3YXkgQ0xJIFVSTCBhbmQgSG9zdCBmaWVsZHMgaW5jbHVkaW5nIGljbXNf" + + "aG9zdCwgcGx1cyB0aGUgY29tcHV0ZS1wbGFuZSBJQ01TLCBSZVZhbCwgYW5kIE5BVFMgZXh0ZXJu" + + "YWwgVVJMcyBhbmQgaG9zdCBvdmVycmlkZXMuIEl0IGNyZWF0ZWQgdGhlIHB1bGwgc2VjcmV0IGlu" + + "IGFsbCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMgaW5jbHVkaW5nIGNlcnQtbWFuYWdlciwgYnV0" + + "IG9ubHkgaW4gbnZjYS1vcGVyYXRvciBvbiB0aGUgY29tcHV0ZSBjbHVzdGVyOyB0aGUgY2hhcnQg" + + "YW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0byBudmNhLXN5c3RlbS4iLAogICAgImV4cGVjdGVkX2Jl" + + "aGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWlu" + + "c3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdl" + + "bnQgc2V0IGluZ3Jlc3MuZ2F0ZXdheUFwaS5jb250cm9sbGVyTmFtZXNwYWNlIHRvIGVudm95LWdh" + + "dGV3YXktc3lzdGVtIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgc2hhcmVkLCBncnBjLCBhbmQgbmF0" + + "cyBHYXRld2F5IHJlZmVyZW5jZXMgdG8gbmFtZSBudmNmLWdhdGV3YXkgYW5kIG5hbWVzcGFjZSBl" + + "bnZveS1nYXRld2F5IiwKICAgICAgIlRoZSBhZ2VudCBzZXQgZ2xvYmFsLndvcmtlckVuZHBvaW50" + + "cy5udmNmU2VydmljZVVSTCwgbnZjZkdycGNTZXJ2aWNlVVJMLCBudmNmTmF0c1NlcnZpY2VVUkws" + + "IG52Y3RTZXJ2aWNlVVJMLCBudmN0R3JwY1NlcnZpY2VVUkwsIGFuZCBpbnZvY2F0aW9uU2Vydmlj" + + "ZVVSTCIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGdycGNwcm94eS5udmNmR3JwY1NlcnZpY2VVUkwg" + + "dG8gdGhlIGNvbnRyb2wtcGxhbmUtbG9jYWwgQVBJIGdSUEMgc2VydmljZSIsCiAgICAgICJUaGUg" + + "YWdlbnQgZW5hYmxlZCBib3RoIGluZ3Jlc3MuZ2F0ZXdheUFwaS5yb3V0ZXMubnZjZkFwaS5ncnBj" + + "IGFuZCBudmN0QXBpLmdycGMgd2l0aCB3b3JrZXItYXBpIGFuZCB3b3JrZXItdGFza3MgaG9zdG5h" + + "bWVzIiwKICAgICAgIlRoZSBhZ2VudCBleHBsaWNpdGx5IHNldCBpbmdyZXNzLmdhdGV3YXlBcGku" + + "cm91dGVzLm5hdHMuZW5hYmxlZCB0byB0cnVlIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgb3BlbmJh" + + "by5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkIHRvIHRydWUiLAogICAgICAiVGhl" + + "IGFnZW50IGNvbmZpZ3VyZWQgdGhlIGJhcmUtR2F0ZXdheSBDTEkgVVJMIGFuZCBIb3N0IGZpZWxk" + + "cywgaW5jbHVkaW5nIHNjaGVtZS1sZXNzIGljbXNfaG9zdCIsCiAgICAgICJUaGUgYWdlbnQgY29u" + + "ZmlndXJlZCBjb21wdXRlLXBsYW5lIGljbXNTZXJ2aWNlVVJMLCBpY21zU2VydmljZUhvc3RIZWFk" + + "ZXJPdmVycmlkZSwgcmV2YWxTZXJ2aWNlVVJMLCByZXZhbFNlcnZpY2VIb3N0SGVhZGVyT3ZlcnJp" + + "ZGUsIG5hdHNVUkwsIGFuZCBuYXRzSG9zdE92ZXJyaWRlIiwKICAgICAgIlRoZSBjb250cm9sLXBs" + + "YW5lIHB1bGwtc2VjcmV0IG5hbWVzcGFjZSBsaXN0IGluY2x1ZGVkIGNlcnQtbWFuYWdlciIsCiAg" + + "ICAgICJUaGUgY29tcHV0ZS1wbGFuZSBzZWNyZXQgd2FzIGNyZWF0ZWQgb25seSBpbiBudmNhLW9w" + + "ZXJhdG9yIGFuZCBtaXJyb3JlZCBieSB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIHRvIG52Y2Etc3lz" + + "dGVtIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkcxMS1zcGxpdC10ZWFyZG93biIsCiAgICAi" + + "cXVlc3Rpb24iOiAiVGVhciBkb3duIG15IHNwbGl0IGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUt" + + "cGxhbmUgZGVwbG95bWVudCBzYWZlbHkuIFNob3cgYm90aCB0aGUgSGVsbWZpbGUgdmFsdWVzIGFu" + + "ZCBDTEkgcHJvZmlsZSB2YXJpYW50cy4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBIZWxtZmls" + + "ZSBmbG93IGRlc3Ryb3llZCBhbmQgY29uZmlybWVkIGRlcmVnaXN0cmF0aW9uIG9mIGV2ZXJ5IGNv" + + "bXB1dGUgY2x1c3RlciBiZWZvcmUgZGVzdHJveWluZyB0aGUgY29udHJvbCBwbGFuZSBhbmQgcGFz" + + "c2VkIGJvdGggY29udHJvbC1wbGFuZSBrdWJlY29uZmlnIGZvcm1zLiBCZWZvcmUgZWl0aGVyIGhh" + + "bmRvZmYgY291bGQgZGVzdHJveSB0aGUgY29udHJvbCBwbGFuZSwgYm90aCB0ZWFyZG93biBmbG93" + + "cyB3YXJuZWQgdGhhdCBuYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRvZXMgbm90IHByZXNlcnZlIHRo" + + "ZSBIZWxtIHJlbGVhc2UsIHJlcXVpcmVkIGVmZmVjdGl2ZSBjZXJ0TWFuYWdlci5lbmFibGVkOiBm" + + "YWxzZSBmb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uIGFuZCBhYm9ydGVkIGlmIHRydWUsIGFu" + + "ZCB2ZXJpZmllZCBtYXRjaGluZyByZWxlYXNlIG93bmVyc2hpcCBmb3IgYW4gaW50ZW5kZWQgc3Rh" + + "Y2stbWFuYWdlZCByZWxlYXNlLCBhYm9ydGluZyBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQgZXZp" + + "ZGVuY2UuIFRoZXkgcHJlc2VydmVkIHRoZSBuYW1lc3BhY2UgYnkgZGVmYXVsdCBhbmQgZGlkIG5v" + + "dCBkZWxldGUgaXQgd2l0aG91dCBuYW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQgZXhwbGljaXQgY29u" + + "ZmlybWF0aW9uLiBUaGUgQ0xJIGZsb3cgcmV0YWluZWQgdGhlIGdlbmVyYXRlZCByZWdpc3RyYXRp" + + "b24gdmFsdWVzLCB1c2VkIHRoZSBmdWxsLXByZWZpeCBzdGF0dXMgY29tbWFuZCB0byBpbnNwZWN0" + + "IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRoYXQgbmFtZWQtY2x1c3RlciBwbGFuLW9ubHkg" + + "ZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90IHByZWRpY3QgY29uZGl0aW9uYWwgY29udHJv" + + "bC1wbGFuZSByZW1vdmFsLCBhbmQgZ290IGV4cGxpY2l0IGNvbmZpcm1hdGlvbiB3aGVuIHRoZSB0" + + "YXJnZXQgd2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3Rlci4gSXQgdGhlbiBwcmV2aWV3ZWQg" + + "YW5kIHJhbiBkb3duIHdpdGggdGhlIGZ1bGwgcGVyc2lzdGVudCBwcmVmaXgsIHJlbW92aW5nIHRo" + + "ZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgdGhlIGxhc3QgcmVnaXN0cmF0aW9uIHdhcyBnb25l" + + "LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUg" + + "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0" + + "aW9uIiwKICAgICAgIkZvciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRoZSBIZWxtZmlsZSBmbG93" + + "IHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZSBkZXN0cm95IHRhcmdldCB3aXRoIGl0cyBj" + + "b21wdXRlIGt1YmVjb25maWciLAogICAgICAiQWZ0ZXIgY29uZmlybWF0aW9uLCB0aGUgSGVsbWZp" + + "bGUgZmxvdyByYW4gY2x1c3RlciBkZWxldGUgd2l0aCBjbHVzdGVySUQgYW5kIG5jYUlEIGJlZm9y" + + "ZSBjb250cm9sLXBsYW5lIGRlc3RydWN0aW9uIiwKICAgICAgIkJlZm9yZSBlaXRoZXIgaGFuZG9m" + + "ZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBib3RoIHRlYXJkb3duIGZsb3dzIHdh" + + "cm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9lcyBub3QgcHJlc2VydmUgdGhlIEhl" + + "bG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZlIGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNl" + + "IGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24gYW5kIGFib3J0ZWQgaWYgdHJ1ZSwgYW5kIHZl" + + "cmlmaWVkIGludGVuZGVkIHN0YWNrIG93bmVyc2hpcCB3aGVuIGVuYWJsZWQsIGFib3J0aW5nIG9u" + + "IG1pc3Npbmcgb3IgbWlzbWF0Y2hlZCBldmlkZW5jZSIsCiAgICAgICJCb3RoIHRlYXJkb3duIGZs" + + "b3dzIHByZXNlcnZlZCB0aGUgY2VydC1tYW5hZ2VyIG5hbWVzcGFjZSBieSBkZWZhdWx0IGFuZCBk" + + "aWQgbm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBleHBsaWNp" + + "dCBjb25maXJtYXRpb24iLAogICAgICAiVGhlIEhlbG1maWxlIGZsb3cgcmFuIGNvbnRyb2wtcGxh" + + "bmUgTWFrZWZpbGUgZGVzdHJveSB3aXRoIGJvdGggS1VCRUNPTkZJRyBhbmQgS1VCRUNPTkZJR19G" + + "SUxFIiwKICAgICAgIlRoZSBDTEkgZmxvdyByZXRhaW5lZCBvdXQvPGNsdXN0ZXItbmFtZT4tcmVn" + + "aXN0ZXItdmFsdWVzLnlhbWwgdW50aWwgdGVhcmRvd24gY29tcGxldGVkIiwKICAgICAgIkJlZm9y" + + "ZSByZWFsIGRvd24sIHRoZSBDTEkgZmxvdyB1c2VkIHRoZSBmdWxsLXByZWZpeCBzdGF0dXMgY29t" + + "bWFuZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRoYXQgbmFtZWQtY2x1" + + "c3RlciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90IHByZWRpY3QgY29u" + + "ZGl0aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLCB3YXJuZWQgd2hlbiB0aGUgdGFyZ2V0IHdh" + + "cyB0aGUgbGFzdCByZWdpc3RlcmVkIGNsdXN0ZXIsIGFuZCBnb3QgZXhwbGljaXQgY29uZmlybWF0" + + "aW9uIiwKICAgICAgIlRoZSBDTEkgZmxvdyB1c2VkIC0tY29uZmlnLCBib3RoIHN0YWNrIHBhdGhz" + + "LCAtLWVudiwgLS1wbGFpbiwgYm90aCBjb250ZXh0cywgYW5kIC0taWNtcy11cmwgZm9yIGRvd24g" + + "LS1wbGFuLW9ubHkgYW5kIHRoZW4gZG93biIsCiAgICAgICJUaGUgYWdlbnQgc3RhdGVkIHRoYXQg" + + "ZG93biB1bnJlZ2lzdGVycyBlYWNoIGNvbXB1dGUgY2x1c3RlciBhbmQgcmVtb3ZlcyB0aGUgY29u" + + "dHJvbCBwbGFuZSBvbmx5IGFmdGVyIG5vIHJlZ2lzdHJhdGlvbnMgcmVtYWluIgogICAgXQogIH0s" + + "CiAgewogICAgImlkIjogIlMxMy12YWx1ZXMtcHJlY2VkZW5jZSIsCiAgICAicXVlc3Rpb24iOiAi" + + "SSBhZGRlZCBhIHZhbHVlIHRvIG15IGVudmlyb25tZW50IFlBTUwgYnV0IGl0J3MgYmVpbmcgc2ls" + + "ZW50bHkgaWdub3JlZC4gSG93IGRvIGhlbG1maWxlIHZhbHVlcyB3b3JrIGluIE5WQ0Y/IiwKICAg" + + "ICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAg" + + "Imdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSB2YWx1ZXMgcHJlY2VkZW5j" + + "ZSBjaGFpbiAoYmFzZS55YW1sLCBlbnYgWUFNTCwgZ2xvYmFsLnlhbWwuZ290bXBsLCBzZWNyZXRz" + + "LCBpbmxpbmUgdmFsdWVzKSwgaWRlbnRpZmllZCB0aGF0IGdsb2JhbC55YW1sLmdvdG1wbCBvbmx5" + + "IHBhc3NlcyB0aHJvdWdoIHNwZWNpZmljIGtleXMsIGFuZCBleHBsYWluZWQgdGhhdCBhcmJpdHJh" + + "cnkgY2hhcnQgdmFsdWVzIG11c3QgdXNlIHJlbGVhc2UgaW5saW5lIHZhbHVlcyBibG9ja3MuIiwK" + + "ICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNm" + + "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24i" + + "LAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgdmFsdWVzIHByZWNlZGVuY2UgY2hhaW46" + + "IGJhc2UueWFtbCAtPiBlbnYgWUFNTCAtPiBnbG9iYWwueWFtbC5nb3RtcGwgLT4gc2VjcmV0cyAt" + + "PiBpbmxpbmUgdmFsdWVzIiwKICAgICAgIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoYXQgZ2xvYmFs" + + "LnlhbWwuZ290bXBsIG9ubHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMga2V5cyAoY2Fzc2FuZHJh" + + "LnJlcGxpY2FDb3VudCwgZ2xvYmFsLnN0b3JhZ2VDbGFzcywgZ2xvYmFsLmltYWdlLCBldGMuKSIs" + + "CiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgYXJiaXRyYXJ5IGNoYXJ0IHZhbHVlcyBt" + + "dXN0IGJlIHNldCB2aWEgcmVsZWFzZSBpbmxpbmUgdmFsdWVzOiBibG9ja3MiLAogICAgICAiVGhl" + + "IGFnZW50IGxpc3RlZCBleGFtcGxlcyBvZiB2YWx1ZXMgdGhhdCBhcmUgcHJvcGFnYXRlZCBhbmQg" + + "YXJiaXRyYXJ5IGNoYXJ0IHZhbHVlcyB0aGF0IHJlcXVpcmUgYSByZWxlYXNlIHZhbHVlcyBibG9j" + + "ayIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTMTQtZW5hYmxlLWxsbS1mdW5jdGlvbnMiLAog" + + "ICAgInF1ZXN0aW9uIjogIkkgbmVlZCB0byBkZXBsb3kgZnVuY3Rpb25UeXBlOiBMTE0gZnVuY3Rp" + + "b25zIG9uIGEgc2VsZi1tYW5hZ2VkLCBzaW5nbGUtbm9kZSBpc29sYXRlZCB0ZXN0IGNsdXN0ZXIu" + + "IFdoYXQgSGVsbWZpbGUgY29uZmlndXJhdGlvbiBhbmQgdmVyaWZpY2F0aW9uIHN0ZXBzIGRvIEkg" + + "bmVlZD8iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxh" + + "dGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBlbmFibGVkIHRoZSBMTE0gYWRk" + + "b24gd2l0aCBhZGRvbnMubGxtLmVuYWJsZWQsIGNvbmZpZ3VyZWQgc2luZ2xlIHJlcGxpY2FzIGZv" + + "ciB0aGUgTExNIEFQSSBHYXRld2F5IGFuZCByZXF1ZXN0IHJvdXRlciwgYW5kIGV4cGxhaW5lZCB0" + + "aGF0IHRoZSByZXF1ZXN0IHJvdXRlciB1c2VzIHBvd2VyLW9mLXR3byB3aGVuIG5vIGxvYWQtYmFs" + + "YW5jZXIgY29uZmlndXJhdGlvbiBpcyBzZXQuIEl0IGxpbmtlZCB0aGUgY2Fub25pY2FsIHJlcXVl" + + "c3Qtcm91dGVyIGxvYWQtYmFsYW5jaW5nIGd1aWRlIGZvciBvdGhlciByb3V0aW5nIG1ldGhvZHMu" + + "IEZvciB0aGUgaXNvbGF0ZWQgcGxhaW50ZXh0IGNsdXN0ZXIsIGl0IHJlbGllZCBvbiB0aGUgc2Vs" + + "Zi1tYW5hZ2VkIHN0YWNrIGRlZmF1bHQgZm9yIHRoZSBidW5kbGVkIGdhdGV3YXktdG8tQVBJIGF1" + + "dGhlbnRpY2F0aW9uIGhvcCBhbmQgaW5jbHVkZWQgYWdlbnRDb25maWcubWVyZ2VDb25maWcud29y" + + "a2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUgZm9yIHRoZSBzZXBhcmF0ZSB3b3JrZXIgdHJhbnNw" + + "b3J0LCB3aXRoIGEgd2FybmluZyB0aGF0IHBsYWludGV4dCB3b3JrZXIgdHJhbnNwb3J0IGlzIG5v" + + "dCBmb3IgcHJvZHVjdGlvbi4gSXQgcmVmcmVzaGVkIHRoZSBjb21wdXRlIHBsYW5lIHVzaW5nIHRo" + + "ZSBzYW1lIGhhbmRvZmYgdXNlZCBkdXJpbmcgaW5zdGFsbGF0aW9uLCByZWRlcGxveWVkIGV4aXN0" + + "aW5nIExMTSBmdW5jdGlvbnMsIGFuZCB2ZXJpZmllZCB0aGUgTExNIGRlcGxveW1lbnRzLCByb3V0" + + "ZSwgYW5kIGxsbS13b3JrZXIgc2lkZWNhci4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwog" + + "ICAgICAiVGhlIGFnZW50IHVzZWQgYWRkb25zLmxsbS5lbmFibGVkLCBub3QgdGhlIG9ic29sZXRl" + + "IGxsbS5lbmFibGVkIHBhdGgiLAogICAgICAiVGhlIGFnZW50IHNldCBnYXRld2F5IGFuZCByZXF1" + + "ZXN0Um91dGVyIHJlcGxpY2FDb3VudCB0byAxIGZvciB0aGUgc2luZ2xlLW5vZGUgdGVzdCBjbHVz" + + "dGVyIiwKICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCB0aGUgcmVxdWVzdCByb3V0ZXIgZGVm" + + "YXVsdHMgdG8gcG93ZXItb2YtdHdvIGFuZCBsaW5rZWQgdGhlIGNhbm9uaWNhbCByZXF1ZXN0LXJv" + + "dXRlciBsb2FkLWJhbGFuY2luZyBndWlkZSBmb3Igb3RoZXIgbWV0aG9kcyIsCiAgICAgICJUaGUg" + + "YWdlbnQgZXhwbGFpbmVkIHRoYXQgdGhlIGJ1bmRsZWQgZ2F0ZXdheS10by1BUEkgYXV0aGVudGlj" + + "YXRpb24gaG9wIGRlZmF1bHRzIHRvIHBsYWludGV4dCwgaW5jbHVkZWQgd29ya2xvYWQuc3Rhcmdh" + + "dGVRVUlDSW5zZWN1cmUgb25seSBmb3IgdGhlIGlzb2xhdGVkIHdvcmtlciB0cmFuc3BvcnQsIGFu" + + "ZCB3YXJuZWQgYWdhaW5zdCBwbGFpbnRleHQgd29ya2VyIHRyYW5zcG9ydCBpbiBwcm9kdWN0aW9u" + + "IiwKICAgICAgIlRoZSBhZ2VudCBhcHBsaWVkIHRoZSBjb250cm9sLXBsYW5lIEhlbG1maWxlIGVu" + + "dmlyb25tZW50LCByZWZyZXNoZWQgdGhlIGNvbXB1dGUgcGxhbmUgd2l0aCB0aGUgc2FtZSBzZWxl" + + "Y3RlZCBoYW5kb2ZmLCBhbmQgcmVjcmVhdGVkIG9yIHJlZGVwbG95ZWQgZXhpc3RpbmcgTExNIGZ1" + + "bmN0aW9ucyIsCiAgICAgICJUaGUgYWdlbnQgdmVyaWZpZWQgbGxtLWFwaS1nYXRld2F5LCBsbG0t" + + "cmVxdWVzdC1yb3V0ZXIsIHRoZSBMTE0gSFRUUFJvdXRlLCBhbmQgdGhlIGxsbS13b3JrZXIgc2lk" + + "ZWNhciBpbmNsdWRpbmcgLS1xdWljLWluc2VjdXJlIgogICAgXQogIH0sCiAgewogICAgImlkIjog" + + "Ikc4LU5FRy1ub3QtZm9yLWszZCIsCiAgICAicXVlc3Rpb24iOiAiU2V0IHVwIGEgbG9jYWwgTlZD" + + "RiBkZXYgY2x1c3RlciB1c2luZyBrM2QgZm9yIHRlc3RpbmciLAogICAgImV4cGVjdGVkX3NraWxs" + + "IjogbnVsbCwKICAgICJzaG91bGRfdHJpZ2dlciI6IGZhbHNlLAogICAgImdyb3VuZF90cnV0aCI6" + + "ICJUaGlzIGlzIGEgbG9jYWwgazNkIGRldmVsb3BtZW50IHJlcXVlc3QgdGhhdCBiZWxvbmdzIHRv" + + "IHRoZSBudmNmLXNlbGYtaG9zdGVkLWxvY2FsLWRldiBza2lsbCwgbm90IG52Y2Ytc2VsZi1tYW5h" + + "Z2VkLWluc3RhbGxhdGlvbi4gVGhlIGFnZW50IGRpZCBub3QgcmVhZCBvciB1c2UgdGhlIHNlbGYt" + + "bWFuYWdlZCBpbnN0YWxsYXRpb24gc2tpbGwgYW5kIGluc3RlYWQgcHJvdmlkZWQgazNkLXNwZWNp" + + "ZmljIGd1aWRhbmNlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdl" + + "bnQgZGlkIG5vdCByZWFkIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5tZCIs" + + "CiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm92aWRlIGhlbG1maWxlLWJhc2VkIHByb2R1Y3Rp" + + "b24gZGVwbG95bWVudCBpbnN0cnVjdGlvbnMiLAogICAgICAiVGhlIGFnZW50IHByb3ZpZGVkIGsz" + + "ZC1zcGVjaWZpYyBsb2NhbCBkZXZlbG9wbWVudCBndWlkYW5jZSBvciBkZWZlcnJlZCB0byB0aGUg" + + "YXBwcm9wcmlhdGUgbG9jYWwtZGV2IHNraWxsIgogICAgXQogIH0KXQpQSwcIR1VqVkpWAABKVgAA" + + "UEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAvAAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0" + + "YWxsYXRpb24vZXhhbXBsZXMubWRVVAUAAQCmzhIjIEV4YW1wbGVzCgpXb3JrZWQgZXhhbXBsZXMg" + + "YmFzZWQgb24gcmVhbCBkZXBsb3ltZW50IHNjZW5hcmlvcy4KCiMjIEV4YW1wbGUgMTogT3ZlcnJp" + + "ZGUgQ2Fzc2FuZHJhIFJlc291cmNlcwoKVGhlIGRlZmF1bHQgQ2Fzc2FuZHJhIHJlc291cmNlIGxp" + + "bWl0cyBjYXVzZSBPT00gb24gbGFyZ2UgaW5zdGFuY2UgdHlwZXMgKGUuZy4sIGBwNS40OHhsYXJn" + + "ZWApLgoKUHJvYmxlbTogQ2Fzc2FuZHJhIHBvZHMgcmVzdGFydCB3aXRoIGBPT01LaWxsZWRgLgoK" + + "U29sdXRpb246IE92ZXJyaWRlIHJlc291cmNlcyB2aWEgaGVsbWZpbGUgcmVsZWFzZSB2YWx1ZXMg" + + "YmxvY2suCgojIyMgU3RlcCAxOiBDYXB0dXJlIGJhc2VsaW5lCgpgYGBiYXNoCkhFTE1GSUxFX0VO" + + "Vj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlID4gL3Rt" + + "cC9jYXNzLWJlZm9yZS55YW1sCmdyZXAgLUE4ICdyZXNvdXJjZXM6JyAvdG1wL2Nhc3MtYmVmb3Jl" + + "LnlhbWwgfCBoZWFkIC0xMApgYGAKCiMjIyBTdGVwIDI6IEFkZCBvdmVycmlkZSB0byBoZWxtZmls" + + "ZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbAoKSW4gdGhlIGV4YW1wbGVzIGJlbG93LCBg" + + "PHByaXZhdGUtdmFsdWVzPmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0" + + "aGUgaGVsbWZpbGUgc3RhY2sgcm9vdC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNzYW5kcmEKICB2ZXJz" + + "aW9uOiAwLjguMAogIGNvbmRpdGlvbjogY2Fzc2FuZHJhLmVuYWJsZWQKICBuYW1lc3BhY2U6IGNh" + + "c3NhbmRyYS1zeXN0ZW0KICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2dsb2Jh" + + "bC55YW1sLmdvdG1wbAogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52ICJI" + + "RUxNRklMRV9FTlYiIH19LXNlY3JldHMueWFtbAogICAgLSBjYXNzYW5kcmE6CiAgICAgICAgcmVz" + + "b3VyY2VzOgogICAgICAgICAgbGltaXRzOgogICAgICAgICAgICBjcHU6ICI4IgogICAgICAgICAg" + + "ICBtZW1vcnk6IDgxOTJNaQogICAgICAgICAgcmVxdWVzdHM6CiAgICAgICAgICAgIGNwdTogIjIi" + + "CiAgICAgICAgICAgIG1lbW9yeTogNDA5Nk1pCmBgYAoKIyMjIFN0ZXAgMzogVmVyaWZ5IGFuZCBh" + + "cHBseQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1l" + + "PWNhc3NhbmRyYSB0ZW1wbGF0ZSA+IC90bXAvY2Fzcy1hZnRlci55YW1sCmRpZmYgL3RtcC9jYXNz" + + "LWJlZm9yZS55YW1sIC90bXAvY2Fzcy1hZnRlci55YW1sICAjIENvbmZpcm0gcmVzb3VyY2VzIGNo" + + "YW5nZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5k" + + "cmEgc3luYwpgYGAKCk5vdGU6IGByZXNvdXJjZVByZXNldGAgKGEgQml0bmFtaSBmZWF0dXJlKSBp" + + "cyBub3QgYXZhaWxhYmxlIGluIHRoZSBOVkNGIGNhc3NhbmRyYSB3cmFwcGVyIGNoYXJ0LiBVc2Ug" + + "ZXhwbGljaXQgYHJlc291cmNlc2AgaW5zdGVhZC4KCi0tLQoKIyMgRXhhbXBsZSAyOiBEZXBsb3kg" + + "ZnJvbSBOR0MgUHJpdmF0ZSBSZWdpc3RyeSB3aXRoIFB1bGwgU2VjcmV0cwoKRGVwbG95IHRoZSBO" + + "VkNGIHN0YWNrIHB1bGxpbmcgaW1hZ2VzIGRpcmVjdGx5IGZyb20gTkdDIChgbnZjci5pb2ApIGlu" + + "c3RlYWQgb2YgYSBtaXJyb3JlZCByZWdpc3RyeSwgdXNpbmcgaW1hZ2UgcHVsbCBzZWNyZXRzLgoK" + + "IyMjIFN0ZXAgMTogQ29uZmlndXJlIGVudmlyb25tZW50IGZvciBOR0MKCmBgYHlhbWwKIyBlbnZp" + + "cm9ubWVudHMvPGVudj4ueWFtbApnbG9iYWw6CiAgaGVsbToKICAgIHNvdXJjZXM6CiAgICAgIHJl" + + "Z2lzdHJ5OiBudmNyLmlvCiAgICAgIHJlcG9zaXRvcnk6IG52aWRpYS9udmNmCiAgaW1hZ2U6CiAg" + + "ICByZWdpc3RyeTogbnZjci5pbwogICAgcmVwb3NpdG9yeTogbnZpZGlhL252Y2YKYGBgCgojIyMg" + + "U3RlcCAyOiBBdXRoZW50aWNhdGUgbG9jYWxseSAoZm9yIGhlbG1maWxlIGNoYXJ0IHB1bGxzKQoK" + + "YGBgYmFzaApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQ" + + "SV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIk" + + "TkdDX0FQSV9LRVkiCmBgYAoKIyMjIFN0ZXAgMzogQ3JlYXRlIG5hbWVzcGFjZXMgYW5kIHB1bGwg" + + "c2VjcmV0cwoKYGBgYmFzaApleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLW5nYy1hcGkta2V5PiIK" + + "CmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNz" + + "IHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0IDxj" + + "b250cm9sLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3BhY2UgIiRucyIgXAogICAgLS1kcnkt" + + "cnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + + "dGV4dD4gYXBwbHkgLWYgLQpkb25lCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5" + + "c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8K" + + "ICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgc2VjcmV0" + + "IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNlcnZlcj1udmNyLmlv" + + "IFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAgLS1kb2NrZXItcGFz" + + "c3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIgXAogICAgLS1kcnkt" + + "cnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + + "dGV4dD4gYXBwbHkgLWYgLQpkb25lCmBgYAoKIyMjIFN0ZXAgNDogQWRkIGltYWdlUHVsbFNlY3Jl" + + "dHMgdG8gaGVsbWZpbGUgcmVsZWFzZXMKCkFkZCB0aGUgY2hhcnQtc3BlY2lmaWMgYGltYWdlUHVs" + + "bFNlY3JldHNgIGtleSB0byBlYWNoIHJlbGVhc2UuIEV4YW1wbGUgZm9yIGNhc3NhbmRyYSBpbiBg" + + "aGVsbWZpbGUuZC8wMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGxgOgoKYGBgeWFtbAotIG5hbWU6" + + "IGNhc3NhbmRyYQogIHZlcnNpb246IDAuOC4wCiAgY29uZGl0aW9uOiBjYXNzYW5kcmEuZW5hYmxl" + + "ZAogIG5hbWVzcGFjZTogY2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAqZGVwZW5kZW5jeQogIHZhbHVl" + + "czoKICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAtIC4uLzxwcml2YXRlLXZhbHVlcz4v" + + "e3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCiAgICAtIGNhc3Nh" + + "bmRyYToKICAgICAgICBnbG9iYWw6CiAgICAgICAgICBpbWFnZVB1bGxTZWNyZXRzOgogICAgICAg" + + "ICAgICAtIG52Y3ItY3JlZHMKYGBgCgpTZWUgW3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kXShy" + + "ZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCkgZm9yIHRoZSBrZXkgZm9yIGV2ZXJ5IGNoYXJ0LgoK" + + "VGhlc2UgYXJlIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcy4gRm9yIGEgc2VwYXJhdGUgY29tcHV0" + + "ZSBjbHVzdGVyLCBjcmVhdGUgdGhlCnNlY3JldCBvbmx5IGluIGBudmNhLW9wZXJhdG9yYDsgdGhl" + + "IGNoYXJ0IGFuZCBvcGVyYXRvciBtaXJyb3IgaXQgdG8KYG52Y2Etc3lzdGVtYC4gU2VlIFtTcGxp" + + "dCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWlu" + + "c3RhbGxhdGlvbi5tZCNwdWxsLXNlY3JldHMpLgoKIyMjIFN0ZXAgNTogRGVwbG95CgpgYGBiYXNo" + + "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLWt1YmUtY29udGV4dCA8Y29udHJvbC1wbGFu" + + "ZS1jb250ZXh0PiBzeW5jCmBgYAoKIyMjIFN0ZXAgNjogUGF0Y2ggU2VydmljZUFjY291bnRzIGZv" + + "ciBjaGFydHMgd2l0aG91dCBuYXRpdmUgc3VwcG9ydAoKQWZ0ZXIgUGhhc2UgMSAoZGVwZW5kZW5j" + + "aWVzKSBjb21wbGV0ZXMsIE9wZW5CYW8gcG9kcyB3aWxsIGJlIGluIGBJbWFnZVB1bGxCYWNrT2Zm" + + "YC4gUGF0Y2ggYW5kIHJlc3RhcnQ6CgpgYGBiYXNoCmZvciBucyBpbiB2YXVsdC1zeXN0ZW0gbnZj" + + "ZiBlc3M7IGRvCiAgZm9yIHNhIGluICQoa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + + "Y29udGV4dD4gZ2V0IHNhIC1uICIkbnMiIFwKICAgIC0tbm8taGVhZGVycyAtbyBjdXN0b20tY29s" + + "dW1ucz0iOm1ldGFkYXRhLm5hbWUiKTsgZG8KICAgIGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9s" + + "LXBsYW5lLWNvbnRleHQ+IHBhdGNoIHNlcnZpY2VhY2NvdW50IC1uICIkbnMiICIkc2EiIFwKICAg" + + "ICAgLXAgJ3siaW1hZ2VQdWxsU2VjcmV0cyI6IFt7Im5hbWUiOiAibnZjci1jcmVkcyJ9XX0nCiAg" + + "ZG9uZQpkb25lCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGRlbGV0" + + "ZSBwb2RzIC1uIHZhdWx0LXN5c3RlbSAtLWFsbApgYGAKClZlcmlmeToKCmBgYGJhc2gKa3ViZWN0" + + "bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGV2ZW50cyAtbiB2YXVsdC1z" + + "eXN0ZW0gXAogIC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAnIHwgZ3JlcCAtaSBwdWxsCiMgU2hv" + + "dWxkIHNob3cgIlN1Y2Nlc3NmdWxseSBwdWxsZWQgaW1hZ2UiIGZyb20gbnZjci5pbwpgYGAKCi0t" + + "LQoKIyMgRXhhbXBsZSAzOiBGdWxsIFRlYXJkb3duIGFuZCBSZWluc3RhbGwKCldoZW4gYSBkZXBs" + + "b3ltZW50IGlzIGJyb2tlbiBhbmQgeW91IG5lZWQgYSBjbGVhbiBzbGF0ZS4KCiMjIyBTdGVwIDE6" + + "IERlc3Ryb3kgdGhlIGNvbXB1dGUtcGxhbmUgc3RhY2sKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kv" + + "c3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVSX05BTUU9PGNsdXN0" + + "ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21w" + + "dXRlLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKSWYgY29tcHV0ZSBjbGVhbnVwIGlzIHN0dWNrIG9u" + + "IGZpbmFsaXplcnMsIHVzZSB0aGUgY29tcHV0ZS1jb250ZXh0IHByb2NlZHVyZSBpbgpbZGVidWdn" + + "aW5nLm1kXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCNmYWlsdXJlLW52Y2EtY2xlYW51cC1zdHVj" + + "ay1maW5hbGl6ZXJzKS4KCiMjIyBTdGVwIDI6IERlcmVnaXN0ZXIgdGhlIGNvbXB1dGUgY2x1c3Rl" + + "cgoKUmVhZCBgY2x1c3RlcklEYCBhbmQgYG5jYUlEYCBmcm9tCmBkZXBsb3kvc3RhY2tzL252Y2Yt" + + "Y29tcHV0ZS1wbGFuZS9yZWdpc3RyYXRpb24vPGNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVz" + + "LnlhbWxgLgpTaG93IHRoZSBJRCBhbmQgZ2V0IGNvbmZpcm1hdGlvbiBiZWZvcmUgZGVsZXRpbmcg" + + "dGhlIElDTVMgcm93OgoKYGBgYmFzaAo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNsdXN0" + + "ZXIgZGVsZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1yZWdpc3RyYXRpb24t" + + "dmFsdWVzPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBgCgpS" + + "ZXBlYXQgc3RlcHMgMSBhbmQgMiBmb3IgZXZlcnkgY29tcHV0ZSBjbHVzdGVyLgoKIyMjIFN0ZXAg" + + "MzogRGVzdHJveSB0aGUgY29udHJvbC1wbGFuZSBzdGFjawoKUHJlc2VydmUgdGhlIGBjZXJ0LW1h" + + "bmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRvZXMK" + + "bm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEJlZm9yZSBydW5uaW5nIGRlc3Ryb3ksIGlk" + + "ZW50aWZ5IHdoZXRoZXIKY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLiBGb3IgYW4gZXh0ZXJuYWwg" + + "aW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZQpgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFs" + + "c2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQKc3RhY2stbWFuYWdl" + + "ZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwgdmVy" + + "aWZ5Cm1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQgYWJvcnQgb24gbWlz" + + "c2luZyBvciBtaXNtYXRjaGVkCmV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNwYWNlIHJlbW92YWwg" + + "YWZ0ZXIgdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZApnZXR0aW5nIGV4cGxpY2l0" + + "IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlIGRvIG5vdCBkZWxldGUgaXQuCgpgYGBiYXNoCktVQkVD" + + "T05GSUc9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4gXAptYWtlIC1DIGRlcGxveS9zdGFja3Mv" + + "c2VsZi1tYW5hZ2VkIGRlc3Ryb3kgXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJ" + + "R19GSUxFPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKUGFzcyBib3RoIGt1YmVjb25m" + + "aWcgZm9ybXMgYmVjYXVzZSBjb250cm9sLXBsYW5lIG5hbWVzcGFjZSBjbGVhbnVwIHVzZXMKYW1i" + + "aWVudCBga3ViZWN0bGAuCgojIyMgU3RlcCA0OiBWZXJpZnkgY2xlYW4KCmBgYGJhc2gKa3ViZWN0" + + "bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG5zIHwgXAogIGdyZXAgLUUg" + + "JyhudmNhfG52Y2YtYmFja2VuZHxncm92ZXxkeW5hbW8pJwprdWJlY3RsIC0tY29udGV4dCA8Y29u" + + "dHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgbnMgfCBcCiAgZ3JlcCAtRSAnKGNhc3NhbmRyYXxuYXRz" + + "fHZhdWx0fG52Y2Z8YXBpLWtleXN8ZXNzfHNpcyknCiMgQm90aCBjb21tYW5kcyBzaG91bGQgcmV0" + + "dXJuIGVtcHR5LgpgYGAKCiMjIyBTdGVwIDU6IFJlaW5zdGFsbCBpbiBzcGxpdCBvcmRlcgoKRm9s" + + "bG93IFtDbGVhbiBJbnN0YWxsYXRpb25dKFNLSUxMLm1kI2NsZWFuLWluc3RhbGxhdGlvbiksIHRo" + + "ZW4gcmV0dXJuIHRvIHRoZQpzYW1lIGhhbmRvZmYgaW4gW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5z" + + "dGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4KCi0t" + + "LQoKIyMgRXhhbXBsZSA0OiBSZWNvdmVyIGZyb20gYSBHYXRld2F5IEVuZHBvaW50IENoYW5nZQoK" + + "VGhlIHNlcGFyYXRlbHkgcHJvdmlzaW9uZWQgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxhbmNlciB3" + + "YXMgcmVjcmVhdGVkIGFuZCBnb3QgYSBuZXcgZW5kcG9pbnQuCgojIyMgU3RlcCAxOiBHZXQgdGhl" + + "IG5ldyBlbmRwb2ludAoKYGBgYmFzaApHQVRFV0FZX0FERFI9JChrdWJlY3RsIC0tY29udGV4dCA8" + + "Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1nYXRld2F5IC1uIGVu" + + "dm95LWdhdGV3YXkgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFsdWV9" + + "JykKdGVzdCAtbiAiJEdBVEVXQVlfQUREUiIKYGBgCgojIyMgU3RlcCAyOiBVcGRhdGUgRE5TIGFu" + + "ZCBkaXJlY3QgYWRkcmVzcyBmaWVsZHMKCktlZXAgYGdsb2JhbC5kb21haW5gLCByb3V0ZSBob3N0" + + "bmFtZXMsIGFuZCBDTEkgSG9zdCBmaWVsZHMgdW5jaGFuZ2VkLiBQb2ludCB0aGUKRE5TIHJlY29y" + + "ZHMgZm9yIHJlbmRlcmVkIHJvdXRlIGhvc3RuYW1lcywgc3VjaCBhcyBgYXBpLjxkb21haW4+YCBh" + + "bmQKYCouaW52b2NhdGlvbi48ZG9tYWluPmAsIHRvIGBHQVRFV0FZX0FERFJgLiBGb3IgYSB0ZW1w" + + "b3JhcnkgZW52aXJvbm1lbnQgd2l0aG91dApETlMsIGtlZXAgaXRzIHJlc2VydmVkIHJvdXRlIHN1" + + "ZmZpeCBhbmQgY29ubmVjdCB0byBgR0FURVdBWV9BRERSYCB3aXRoIHRoZQptYXRjaGluZyBgSG9z" + + "dGAgaGVhZGVyLgoKRm9yIGEgc3BsaXQgZGVwbG95bWVudCBjb25maWd1cmVkIHdpdGggZGlyZWN0" + + "IEdhdGV3YXkgYWRkcmVzc2VzLCByZXBsYWNlIG9ubHkKdGhlIGFkZHJlc3MtYmVhcmluZyB2YWx1" + + "ZXM6IGNvbnRyb2wtcGxhbmUgYG52Y2ZOYXRzU2VydmljZVVSTGAsIGNvbXB1dGUtcGxhbmUKSUNN" + + "UywgUmVWYWwsIGFuZCBOQVRTIFVSTHMsIGFuZCBDTEkgVVJMIGZpZWxkcy4gS2VlcCB0aGVpciBk" + + "b21haW4gYW5kIEhvc3QKb3ZlcnJpZGVzIHVuY2hhbmdlZC4gUmVmcmVzaCByZWdpc3RyYXRpb24g" + + "YW5kIGluc3RhbGxhdGlvbiB0aHJvdWdoIHRoZSBzYW1lCmhhbmRvZmYgdXNlZCBvcmlnaW5hbGx5" + + "LiBTZWUKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1" + + "dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKQpmb3IgdGhlIGZpZWxkcyBhbmQgY29tcGxldGUgY29t" + + "bWFuZHMuCgojIyMgU3RlcCAzOiBWZXJpZnkgYm90aCBjb250ZXh0cwoKYGBgYmFzaApkaWcgK3No" + + "b3J0ICJhcGkuPGRvbWFpbj4iCmN1cmwgLUggIkhvc3Q6IGFwaS48ZG9tYWluPiIgImh0dHA6Ly8k" + + "R0FURVdBWV9BRERSL2hlYWx0aCIKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + + "dGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAtbiBlbnZveS1nYXRld2F5IC1vIHdp" + + "ZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGh0dHByb3V0" + + "ZXMgLUEKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHRjcHJv" + + "dXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiByb2xsb3V0" + + "IHN0YXR1cyBcCiAgZGVwbG95bWVudC9udmNhLW9wZXJhdG9yIC1uIG52Y2Etb3BlcmF0b3IgLS10" + + "aW1lb3V0PTEwbQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiB3YWl0" + + "IFwKICBudmNmYmFja2VuZC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IC1uIG52Y2Etb3Bl" + + "cmF0b3IgXAogIC0tZm9yPWpzb25wYXRoPSd7LnN0YXR1cy5hZ2VudFN0YXR1c30nPWhlYWx0aHkg" + + "LS10aW1lb3V0PTEwbQpgYGAKCi0tLQoKIyMgRXhhbXBsZSA1OiBEZXBsb3kgT25seSBEZXBlbmRl" + + "bmNpZXMKClVzZWZ1bCBmb3IgdGVzdGluZyBvciB3aGVuIGl0ZXJhdGluZyBvbiBzZXJ2aWNlIGNv" + + "bmZpZ3VyYXRpb24uCgpgYGBiYXNoCiMgRGVwbG95IGp1c3QgTkFUUywgQ2Fzc2FuZHJhLCBPcGVu" + + "QmFvCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9" + + "ZGVwZW5kZW5jaWVzIHN5bmMKCiMgQ2hlY2sgc3RhdHVzCmt1YmVjdGwgZ2V0IHBvZHMgLW4gbmF0" + + "cy1zeXN0ZW0Ka3ViZWN0bCBnZXQgcG9kcyAtbiBjYXNzYW5kcmEtc3lzdGVtCmt1YmVjdGwgZ2V0" + + "IHBvZHMgLW4gdmF1bHQtc3lzdGVtCgojIERlcGxveSBqdXN0IG9uZSBzcGVjaWZpYyByZWxlYXNl" + + "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5" + + "bmMKYGBgCgojIyMgU2VsZWN0b3IgcmVmZXJlbmNlCgp8IFNlbGVjdG9yIHwgUmVsZWFzZXMgfAp8" + + "LS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGByZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llc2AgfCBu" + + "YXRzLCBjYXNzYW5kcmEsIG9wZW5iYW8tc2VydmVyIHwKfCBgcmVsZWFzZS1ncm91cD1zZXJ2aWNl" + + "c2AgfCBhcGkta2V5cywgc2lzLCBhcGksIGludm9jYXRpb24tc2VydmljZSwgZ3JwYy1wcm94eSwg" + + "ZXNzLWFwaSwgbm90YXJ5LXNlcnZpY2UsIHJldmFsLCBvcHRpb25hbCBsbG0tcmVxdWVzdC1yb3V0" + + "ZXIgYW5kIGxsbS1hcGktZ2F0ZXdheSB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCwgb3B0aW9uYWwg" + + "dmFuaXR5LWdhdGV3YXkgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhlIGFk" + + "ZG9uIGFuZCBoYXZlIGBhZGRvbnMudmFuaXR5R2F0ZXdheS5lbmFibGVkPXRydWVgLCBvcHRpb25h" + + "bCBudmNmLXVpIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBhZGRvbiBh" + + "bmQgaGF2ZSBgYWRkb25zLm52Y2ZVaS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1sbG0tcmVxdWVz" + + "dC1yb3V0ZXJgIHwgRGVwbG95IGp1c3QgdGhlIExMTSByZXF1ZXN0IHJvdXRlciB3aGVuIGBsbG0u" + + "ZW5hYmxlZD10cnVlYCB8CnwgYG5hbWU9bGxtLWFwaS1nYXRld2F5YCB8IERlcGxveSBqdXN0IHRo" + + "ZSBMTE0gQVBJIGdhdGV3YXkgd2hlbiBgbGxtLmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1lPXZhbml0" + + "eS1nYXRld2F5YCB8IERlcGxveSBqdXN0IFZhbml0eSBHYXRld2F5IG9ubHkgd2hlbiB0aGUgc3Rh" + + "Y2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5kIGBhZGRvbnMudmFuaXR5R2F0ZXdh" + + "eS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1udmNmLXVpYCB8IERlcGxveSBOVkNGIFVJIG9ubHkg" + + "d2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5kIGBhZGRvbnMu" + + "bnZjZlVpLmVuYWJsZWQ9dHJ1ZWAgfAp8IGByZWxlYXNlLWdyb3VwPWluZ3Jlc3NgIHwgaW5ncmVz" + + "cyAoZ2F0ZXdheSByb3V0ZXMpIHwKfCBgbmFtZT08cmVsZWFzZT5gIHwgQW55IGluZGl2aWR1YWwg" + + "cmVsZWFzZSBieSBuYW1lIHwKCk5vdGU6IGBhZG1pbi1pc3N1ZXItcHJveHlgIGRvZXMgbm90IGhh" + + "dmUgYSByZWxlYXNlLWdyb3VwIGxhYmVsLiBUYXJnZXQgaXQgd2l0aCBgLS1zZWxlY3RvciBuYW1l" + + "PWFkbWluLWlzc3Vlci1wcm94eWAuClBLBwgCUk5AfygAAH8oAABQSwMEFAAIAAAAAAAhAAAAAAAA" + + "AAAAAAAAAEwACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2Vz" + + "L2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kVVQFAAEAps4SIyBTcGxpdCBDb21wdXRlLVBs" + + "YW5lIEluc3RhbGxhdGlvbgoKVGhlIGNvbnRyb2wgcGxhbmUgYW5kIGNvbXB1dGUgcGxhbmUgYXJl" + + "IHNlcGFyYXRlIHN0YWNrcy4gSW5zdGFsbCB0aGUgY29udHJvbApwbGFuZSBmaXJzdCwgdGhlbiBy" + + "ZWdpc3RlciBhbmQgaW5zdGFsbCBlYWNoIGNvbXB1dGUgY2x1c3Rlci4gQ2hvb3NlIG9uZSBoYW5k" + + "b2ZmCmJlbG93IGFuZCB1c2UgaXQgZm9yIHRoZSBmdWxsIGxpZmVjeWNsZS4gRG8gbm90IGNvbWJp" + + "bmUgYSBDTEktZ2VuZXJhdGVkIHByb2ZpbGUKd2l0aCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZsb3cu" + + "CgojIyBDaG9vc2UgYSBIYW5kb2ZmCgp8IEZsb3cgfCBTb3VyY2Ugb2YgY29udHJvbC1wbGFuZSBl" + + "bmRwb2ludHMgfCBSZWdpc3RyYXRpb24gYXJ0aWZhY3QgfAp8LS0tLS0tfC0tLS0tLS0tLS0tLS0t" + + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IEhlbG1maWxl" + + "IHZhbHVlcyB8IFNlcGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZW52aXJv" + + "bm1lbnQgZmlsZXMgfCBgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvcmVnaXN0cmF0" + + "aW9uLzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgfAp8IENMSSBwcm9maWxlIHwgQ0xJ" + + "LWdlbmVyYXRlZCBgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUt" + + "cHJvZmlsZS55YW1sYCB8IENMSS1nZW5lcmF0ZWQgYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRl" + + "LXBsYW5lL291dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIHwKClRoZSBDTEkgcHJv" + + "ZmlsZSBpcyBtYW5kYXRvcnkgZm9yIHRoZSBDTEkgZmxvdyBhbmQgbXVzdCBub3QgYmUgaGFuZC1h" + + "dXRob3JlZC4KVGhlIEhlbG1maWxlIGZsb3cgZG9lcyBub3QgY29uc3VtZSBhIGNvbnRyb2wtcGxh" + + "bmUgcHJvZmlsZS4KCkNvbW1hbmRzIGJlbG93IHVzZSBtb25vcmVwbyBwYXRocyBmcm9tIHRoZSBy" + + "ZXBvc2l0b3J5IHJvb3QuIE9wZXJhdG9ycyB1c2luZwpleHRyYWN0ZWQgcGFja2FnZXMgbmVlZCBt" + + "YXRjaGluZy12ZXJzaW9uIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgYW5kCmBudmNmLWNvbXB1" + + "dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXMuIFN1YnN0aXR1dGUgdGhvc2UgYnVuZGxlIHJvb3RzIGZv" + + "cgpgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWRgIGFuZCBgZGVwbG95L3N0YWNrcy9udmNmLWNv" + + "bXB1dGUtcGxhbmVgLgoKIyMgSGVsbWZpbGUgVmFsdWVzIEZsb3cKCkNyZWF0ZSBib3RoIGVudmly" + + "b25tZW50IGZpbGVzIGJlZm9yZSBpbnN0YWxsYXRpb246CgotIGBkZXBsb3kvc3RhY2tzL3NlbGYt" + + "bWFuYWdlZC9lbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgZm9yIGNvbnRyb2wtcGxhbmUKICByZWdp" + + "c3RyeSwgZG9tYWluLCBHYXRld2F5LCByb3V0ZXMsIGFuZCBzZXJ2aWNlIHNldHRpbmdzLgotIGBk" + + "ZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMvPGVudj4ueWFtbGAg" + + "Zm9yIGNvbXB1dGUtcGxhbmUKICByZWdpc3RyeSwgcHVsbCBzZWNyZXRzLCBhbmQgY29tcHV0ZS1y" + + "ZWFjaGFibGUgSUNNUywgUmVWYWwsIGFuZCBOQVRTIHZhbHVlcy4KCkZvciBFS1MsIHVzZSB0aGUg" + + "Y2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2RvY3MubnZpZGlhLmNv" + + "bS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4KVGhlIGNvbnRyb2wtcGxh" + + "bmUgZW52aXJvbm1lbnQga2VlcHMgdGhlIEVudm95IEdhdGV3YXkgY29udHJvbGxlciBpbgpgZW52" + + "b3ktZ2F0ZXdheS1zeXN0ZW1gLCBhdHRhY2hlcyByb3V0ZXMgdG8gYEdhdGV3YXkvbnZjZi1nYXRl" + + "d2F5YCBpbgpgZW52b3ktZ2F0ZXdheWAsIGFuZCBlbmFibGVzIHRoZSBOQVRTIHJvdXRlLiBUaGUg" + + "Y29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCB1c2VzCnRoZSBleHRlcm5hbCBhZGRyZXNzIHBsdXMg" + + "dGhlIHNlcnZpY2UgaG9zdCBvdmVycmlkZXMuIEhlcmUsCmA8Z2F0ZXdheS1hZGRyZXNzPmAgaXMg" + + "dGhlIE5MQiBhZGRyZXNzIGFuZCBgPGdhdGV3YXktZG9tYWluPmAgaXMgdGhlIEROUyBiYXNlCndo" + + "b3NlIHNlcnZpY2Ugc3ViZG9tYWlucyByZXNvbHZlIHRvIHRoYXQgTkxCOgoKYGBgeWFtbAojIGRl" + + "cGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoK" + + "ICBkb21haW46ICI8Z2F0ZXdheS1kb21haW4+IgogIHdvcmtlckVuZHBvaW50czoKICAgIG52Y2ZT" + + "ZXJ2aWNlVVJMOiAiaHR0cDovL2FwaS48Z2F0ZXdheS1kb21haW4+IgogICAgbnZjZkdycGNTZXJ2" + + "aWNlVVJMOiAiaHR0cDovL3dvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiIKICAgIG52Y2ZOYXRz" + + "U2VydmljZVVSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNzPjo0MjIyIgogICAgbnZjdFNlcnZp" + + "Y2VVUkw6ICJodHRwOi8vdGFza3MuPGdhdGV3YXktZG9tYWluPiIKICAgIG52Y3RHcnBjU2Vydmlj" + + "ZVVSTDogImh0dHA6Ly93b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiIKICAgIGludm9jYXRp" + + "b25TZXJ2aWNlVVJMOiAiaHR0cDovL2ludm9jYXRpb24uPGdhdGV3YXktZG9tYWluPiIKCmdycGNw" + + "cm94eToKICBudmNmR3JwY1NlcnZpY2VVUkw6ICJodHRwOi8vYXBpLm52Y2Yuc3ZjLmNsdXN0ZXIu" + + "bG9jYWw6OTA5MCIKCmluZ3Jlc3M6CiAgZ2F0ZXdheUFwaToKICAgIGNvbnRyb2xsZXJOYW1lc3Bh" + + "Y2U6IGVudm95LWdhdGV3YXktc3lzdGVtCiAgICBnYXRld2F5czoKICAgICAgc2hhcmVkOiB7bmFt" + + "ZTogbnZjZi1nYXRld2F5LCBuYW1lc3BhY2U6IGVudm95LWdhdGV3YXl9CiAgICAgIGdycGM6IHtu" + + "YW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheX0KICAgICAgbmF0czoK" + + "ICAgICAgICBuYW1lOiBudmNmLWdhdGV3YXkKICAgICAgICBuYW1lc3BhY2U6IGVudm95LWdhdGV3" + + "YXkKICAgICAgICBsaXN0ZW5lck5hbWU6IG5hdHMKICAgIHJvdXRlczoKICAgICAgbnZjZkFwaToK" + + "ICAgICAgICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAgICAgaG9zdG5hbWVz" + + "OiBbIndvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG52Y3RBcGk6CiAgICAgICAg" + + "Z3JwYzoKICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgIGhvc3RuYW1lczogWyJ3b3Jr" + + "ZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG5hdHM6CiAgICAgICAgZW5hYmxlZDog" + + "dHJ1ZQoKb3BlbmJhbzoKICBtaWdyYXRpb25zOgogICAgaXNzdWVyRGlzY292ZXJ5OgogICAgICBl" + + "bmFibGVkOiB0cnVlCmBgYAoKYGBgeWFtbAojIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBs" + + "YW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoKICBudmNhT3BlcmF0b3I6CiAgICBz" + + "ZWxmTWFuYWdlZDoKICAgICAgaWNtc1NlcnZpY2VVUkw6ICJodHRwOi8vPGdhdGV3YXktYWRkcmVz" + + "cz4iCiAgICAgIGljbXNTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAic2lzLjxnYXRld2F5LWRv" + + "bWFpbj4iCiAgICAgIHJldmFsU2VydmljZVVSTDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIK" + + "ICAgICAgcmV2YWxTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAicmV2YWwuPGdhdGV3YXktZG9t" + + "YWluPiIKICAgICAgbmF0c1VSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNzPjo0MjIyIgogICAg" + + "ICBuYXRzSG9zdE92ZXJyaWRlOiAibmF0cy48Z2F0ZXdheS1kb21haW4+IgpgYGAKClByZXZpZXcg" + + "YW5kIGluc3RhbGwgdGhlIGNvbnRyb2wgcGxhbmUgYWdhaW5zdCBpdHMgY29udGV4dDoKCmBgYGJh" + + "c2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCB0ZW1wbGF0ZSBcCiAgSEVMTUZJ" + + "TEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZp" + + "Zz4KCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgaW5zdGFsbCBcCiAgSEVMTUZJ" + + "TEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZp" + + "Zz4KYGBgCgpCZWZvcmUgcmVnaXN0ZXJpbmcgdGhyb3VnaCBhIGJhcmUgR2F0ZXdheSBhZGRyZXNz" + + "LCBjcmVhdGUgb3IgdXBkYXRlIHRoZSBDTEkKY29uZmlnIHBhc3NlZCBhcyBgTlZDRl9DTElfQ09O" + + "RklHYDoKCmBgYHlhbWwKYmFzZV9odHRwX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIK" + + "aW52b2tlX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKYmFzZV9ncnBjX3VybDogIjxn" + + "YXRld2F5LWFkZHJlc3M+OjEwMDgxIgphcGlfa2V5c19zZXJ2aWNlX3VybDogImh0dHA6Ly88Z2F0" + + "ZXdheS1hZGRyZXNzPiIKaWNtc191cmw6ICJodHRwOi8vPGdhdGV3YXktYWRkcmVzcz4iCmFwaV9o" + + "b3N0OiAiYXBpLjxnYXRld2F5LWRvbWFpbj4iCmFwaV9rZXlzX2hvc3Q6ICJhcGkta2V5cy48Z2F0" + + "ZXdheS1kb21haW4+IgppbnZva2VfaG9zdDogImludm9jYXRpb24uPGdhdGV3YXktZG9tYWluPiIK" + + "aWNtc19ob3N0OiAic2lzLjxnYXRld2F5LWRvbWFpbj4iCmBgYAoKSG9zdCBmaWVsZHMgY29udGFp" + + "biBob3N0bmFtZXMgb25seSwgd2l0aG91dCBhIFVSTCBzY2hlbWUuIGBJQ01TX1VSTGAgbWFwcyBv" + + "bmx5CnRvIHRoZSByZWdpc3RyYXRpb24gY29tbWFuZCdzIGAtLWljbXMtdXJsYDsgYGljbXNfaG9z" + + "dGAgaW4gdGhlIGNvbmZpZyBzdXBwbGllcwp0aGUgR2F0ZXdheSBIb3N0IGhlYWRlci4gVGhlcmUg" + + "aXMgbm8gYC0taWNtcy1ob3N0YCBNYWtlIG9yIENMSSBmbGFnLgoKUmVnaXN0ZXIgZnJvbSB0aGUg" + + "Y29tcHV0ZSBjb250ZXh0LCB0aGVuIGluc3RhbGwgdGhlIGNvbXB1dGUgcGxhbmU6CgpgYGBiYXNo" + + "Cm1ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVnaXN0ZXItY2x1c3Rl" + + "ciBcCiAgQ0xVU1RFUl9OQU1FPTxjbHVzdGVyLW5hbWU+IFwKICBOQ0FfSUQ9PG5jYS1pZD4gXAog" + + "IENMVVNURVJfUkVHSU9OPTxyZWdpb24+IFwKICBJQ01TX1VSTD1odHRwOi8vPGdhdGV3YXktYWRk" + + "cmVzcz4gXAogIEtVQkVDT05GSUdfRklMRT08Y29tcHV0ZS1wbGFuZS1rdWJlY29uZmlnPiBcCiAg" + + "TlZDRl9DTEk9PHBhdGgtdG8tbnZjZi1jbGk+IFwKICBOVkNGX0NMSV9DT05GSUc9PHBhdGgtdG8t" + + "bnZjZi1jbGktY29uZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFu" + + "ZSBpbnN0YWxsIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VO" + + "Vj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+CmBg" + + "YAoKUmVnaXN0cmF0aW9uIGRpc2NvdmVycyB0aGUgT0lEQyBpc3N1ZXIgYW5kIEpXS1MgZnJvbSB0" + + "aGUgY29tcHV0ZSBrdWJlIGNvbnRleHQuCkluIGEgbXVsdGktY2x1c3RlciBkZXBsb3ltZW50LCBg" + + "S1VCRUNPTkZJR19GSUxFYCBpcyByZXF1aXJlZCBvbiBib3RoCmNvbXB1dGUtcGxhbmUgY29tbWFu" + + "ZHMuIEluIGEgc2FtZS1jbHVzdGVyIGRlcGxveW1lbnQgaXQgbWF5IGJlIG9taXR0ZWQgb25seQp3" + + "aGVuIHRoZSBhbWJpZW50IGNvbnRleHQgaXMgYWxyZWFkeSB0aGUgdGFyZ2V0IGNsdXN0ZXIuCgoj" + + "IyBDTEkgUHJvZmlsZSBGbG93CgpSdW4gdGhlIENMSSBjb250cm9sLXBsYW5lIGluc3RhbGwgZmly" + + "c3QuIEl0IGNyZWF0ZXMgdGhlIHByb2ZpbGUgY29uc3VtZWQgYnkKY29tcHV0ZS1wbGFuZSByZWdp" + + "c3RyYXRpb246CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVk" + + "IFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAog" + + "IC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBc" + + "CiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0IDxj" + + "b250cm9sLXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29tcHV0" + + "ZS1wbGFuZS1jb250ZXh0PiBcCiAgaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmUgXAogIC0tY2x1c3Rl" + + "ci1uYW1lIDxjb250cm9sLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tcmVnaW9uIDxyZWdpb24+" + + "IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKdGVzdCAtcyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdl" + + "ZC9vdXQvY29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWwKYGBgCgpVc2UgdGhlIGZ1bGwgcGVyc2lz" + + "dGVudCBwcmVmaXggZm9yIGJvdGggY29tcHV0ZS1wbGFuZSBjb21tYW5kczoKCmBgYGJhc2gKbnZj" + + "Zi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1z" + + "dGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNr" + + "IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1w" + + "bGFpbiBcCiAgY29tcHV0ZS1wbGFuZSByZWdpc3RlciBcCiAgLS1jb250cm9sLXBsYW5lLXByb2Zp" + + "bGUgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJvZmlsZS55" + + "YW1sIFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAt" + + "LWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1yZWdpb24gPHJlZ2lv" + + "bj4gXAogIC0tb3V0cHV0IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88Y29t" + + "cHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sCgpudmNmLWNsaSAt" + + "LWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNrIGRl" + + "cGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95" + + "L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWluIFwK" + + "ICBjb21wdXRlLXBsYW5lIGluc3RhbGwgXAogIC0tdmFsdWVzIGRlcGxveS9zdGFja3MvbnZjZi1j" + + "b21wdXRlLXBsYW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZh" + + "bHVlcy55YW1sIFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAg" + + "LS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPgpgYGAKClJlZ2lzdHJh" + + "dGlvbiBzZWxlY3RzIHRoZSBwcm9maWxlJ3MgaW4tY2x1c3RlciBvciBjb21wdXRlLXJlYWNoYWJs" + + "ZSBlbmRwb2ludHMKZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0IGFuZCBwcm9iZXMgaXRzIEpXS1Mu" + + "IERvIG5vdCByZXBsYWNlIHByb2ZpbGUgZW5kcG9pbnRzCndpdGggaGFuZC1hdXRob3JlZCBIZWxt" + + "ZmlsZSBlbmRwb2ludCB2YWx1ZXMuCgojIyBQdWxsIFNlY3JldHMKCkNyZWF0ZSB0aGUgY29udHJv" + + "bC1wbGFuZSBzZWNyZXQgaW4gdGhlc2UgbmFtZXNwYWNlcyBvbiB0aGUgY29udHJvbC1wbGFuZQpj" + + "b250ZXh0OgoKYGBgdGV4dApjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtl" + + "eXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyCmBgYAoKT24gdGhlIGNvbXB1dGUg" + + "Y29udGV4dCwgY3JlYXRlIHRoZSBzZWNyZXQgb25seSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIHJl" + + "ZmVyZW5jZQppdCB0aHJvdWdoIGBnbG9iYWwuaW1hZ2VQdWxsU2VjcmV0c2AgaW4gdGhlIGNvbXB1" + + "dGUtcGxhbmUgZW52aXJvbm1lbnQuIFRoZSBjaGFydAphbmQgb3BlcmF0b3IgdXNlIGl0IGluIGBu" + + "dmNhLW9wZXJhdG9yYCBhbmQgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBhZGQK" + + "ZWl0aGVyIG5hbWVzcGFjZSB0byB0aGUgY29udHJvbC1wbGFuZSBsaXN0LiBGb3IgY29tbWFuZHMg" + + "YW5kIHBvbGljeSBleGFtcGxlcywKc2VlIFtwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0cy5t" + + "ZCkuCgojIyBWZXJpZmljYXRpb24KClVzZSB0aGUgZXhwbGljaXQgR2F0ZXdheSBuYW1lIGFuZCBu" + + "YW1lc3BhY2U6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRl" + + "eHQ+IGdldCBnYXRld2F5IG52Y2YtZ2F0ZXdheSBcCiAgLW4gZW52b3ktZ2F0ZXdheSAtbyB3aWRl" + + "Cmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCB0Y3Byb3V0ZSAt" + + "biBlbnZveS1nYXRld2F5Cmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+" + + "IHJvbGxvdXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Etb3BlcmF0b3IgLW4gbnZjYS1vcGVy" + + "YXRvciAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + + "eHQ+IHdhaXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4gLW4g" + + "bnZjYS1vcGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3suc3RhdHVzLmFnZW50U3RhdHVzfSc9" + + "aGVhbHRoeSAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNv" + + "bnRleHQ+IGdldCBzZWNyZXQgPHB1bGwtc2VjcmV0PiAtbiBudmNhLXN5c3RlbQpgYGAKCiMjIFRl" + + "YXJkb3duCgpEZXN0cm95IGFuZCBkZXJlZ2lzdGVyIGV2ZXJ5IGNvbXB1dGUgcGxhbmUgYmVmb3Jl" + + "IHRoZSBjb250cm9sIHBsYW5lLiBCb3RoCmhhbmRvZmZzIGNhbiBkZXN0cm95IHRoZSBjb250cm9s" + + "IHBsYW5lLCBzbyBhcHBseSB0aGlzIHByZWZsaWdodCBiZWZvcmUgZWl0aGVyCm9uZS4gUHJlc2Vy" + + "dmUgdGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3BhY2UgcHJl" + + "c2VydmF0aW9uCmRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIElkZW50aWZ5IHdo" + + "ZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLgpGb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0" + + "aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgCmFuZCBh" + + "Ym9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxlYXNl" + + "IHdpdGggZWZmZWN0aXZlCmBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5IG1hdGNo" + + "aW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQKYWJvcnQgb24gbWlzc2luZyBvciBt" + + "aXNtYXRjaGVkIGV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNwYWNlIHJlbW92YWwgYWZ0ZXIKdmVy" + + "aWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBnZXR0aW5nIGV4cGxpY2l0IGNvbmZpcm1h" + + "dGlvbjsgb3RoZXJ3aXNlCmRvIG5vdCBkZWxldGUgaXQuCgpGb3IgdGhlIEhlbG1maWxlIHZhbHVl" + + "cyBmbG93LCByZXRhaW4gZWFjaCByZWdpc3RyYXRpb24gdmFsdWVzIGZpbGUgdW50aWwKY2xlYW51" + + "cCBpcyB2ZXJpZmllZDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0" + + "ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1G" + + "SUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25m" + + "aWc+Cgo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNsdXN0ZXIgZGVsZXRlIFwKICAtLWNs" + + "dXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1yZWdpc3RyYXRpb24tdmFsdWVzPiBcCiAgLS1uY2Et" + + "aWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBgCgpSZWFkIGBjbHVzdGVySURgIGFu" + + "ZCBgbmNhSURgIGZyb20KYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL3JlZ2lzdHJh" + + "dGlvbi88Y2x1c3Rlci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuClNob3cgdGhlIGV4YWN0" + + "IGNsdXN0ZXIgSUQgYW5kIGdldCBjb25maXJtYXRpb24gYmVmb3JlIGBjbHVzdGVyIGRlbGV0ZWAu" + + "IFJlcGVhdApjb21wdXRlIGRlc3Ryb3kgYW5kIGRlcmVnaXN0cmF0aW9uIGZvciBldmVyeSBjb21w" + + "dXRlIGNsdXN0ZXIsIHRoZW4gZGVzdHJveSB0aGUKY29udHJvbCBwbGFuZS4KCmBgYGJhc2gKS1VC" + + "RUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBcCm1ha2UgLUMgZGVwbG95L3N0YWNr" + + "cy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09O" + + "RklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpCb3RoIGBLVUJFQ09ORklH" + + "YCBhbmQgYEtVQkVDT05GSUdfRklMRWAgYXJlIHJlcXVpcmVkIG9uIHRoZSBjb250cm9sLXBsYW5l" + + "CmRlc3Ryb3kgYmVjYXVzZSBpdHMgbmFtZXNwYWNlIGNsZWFudXAgdXNlcyBhbWJpZW50IGBrdWJl" + + "Y3RsYC4KCkZvciB0aGUgQ0xJIHByb2ZpbGUgZmxvdywga2VlcApgZGVwbG95L3N0YWNrcy9udmNm" + + "LWNvbXB1dGUtcGxhbmUvb3V0LzxjbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYAp1" + + "bnRpbCB0ZWFyZG93biBjb21wbGV0ZXMgYmVjYXVzZSBgZG93bmAgcmVhZHMgaXRzIGNsdXN0ZXIg" + + "SUQuIEZpcnN0IHF1ZXJ5IHRoZQpsaXZlIHJlZ2lzdHJhdGlvbiBzZXQgd2l0aCB0aGUgc2FtZSBj" + + "b21wbGV0ZSBwZXJzaXN0ZW50IHByZWZpeDoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNv" + + "bmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tz" + + "L3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZj" + + "Zi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9s" + + "LXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFu" + + "ZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRl" + + "LXJlYWNoYWJsZS1pY21zLXVybD4gXAogIHN0YXR1cyBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1" + + "dGUtcGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4KYGBgCgpTaG93IHRo" + + "ZSByZWdpc3RlcmVkIGNvbXB1dGUtcGxhbmUgbGlzdC4gTmFtZWQtY2x1c3RlciBgZG93biAtLXBs" + + "YW4tb25seWAgZG9lcwpub3QgcXVlcnkgSUNNUywgc28gaXQgcHJldmlld3Mgb25seSB0aGF0IGNv" + + "bXB1dGUgcGxhbmUgYW5kIGNhbm5vdCBzaG93IHRoZQpjb25kaXRpb25hbCBjb250cm9sLXBsYW5l" + + "IHJlbW92YWwuIElmIHRoZSB0YXJnZXQgaXMgdGhlIGxhc3QgcmVnaXN0ZXJlZApjbHVzdGVyLCBy" + + "ZWFsIGBkb3duYCBhbHNvIGRlc3Ryb3lzIHRoZSBjb250cm9sIHBsYW5lLiBHZXQgZXhwbGljaXQg" + + "Y29uZmlybWF0aW9uCmZvciBib3RoIHJlbW92YWxzIGJlZm9yZSBjb250aW51aW5nLiBUaGVuIHBy" + + "ZXZpZXcgYW5kIGV4ZWN1dGUgd2l0aCB0aGUgc2FtZQpwcmVmaXg6CgpgYGBiYXNoCm52Y2YtY2xp" + + "IC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sg" + + "ZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBs" + + "b3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4g" + + "XAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IFwKICAt" + + "LWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1pY21z" + + "LXVybCA8Y29tcHV0ZS1yZWFjaGFibGUtaWNtcy11cmw+IFwKICBkb3duIC0tcGxhbi1vbmx5IFwK" + + "ICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAtLW5jYS1p" + + "ZCA8bmNhLWlkPgoKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0t" + + "Y29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21w" + + "dXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVu" + + "diA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wt" + + "cGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5l" + + "LWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAog" + + "IGRvd24gXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAog" + + "IC0tbmNhLWlkIDxuY2EtaWQ+CmBgYAoKUmVwZWF0IGBkb3duYCBmb3IgZWFjaCBjb21wdXRlIGNs" + + "dXN0ZXIuIEVhY2ggcnVuIGRlc3Ryb3lzIHRoYXQgY29tcHV0ZSBwbGFuZSBhbmQKdW5yZWdpc3Rl" + + "cnMgaXRzIElDTVMgcm93LiBJdCByZW1vdmVzIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIg" + + "bm8gY2x1c3RlcgpyZWdpc3RyYXRpb25zIHJlbWFpbi4KUEsHCJZjvFkSMAAAEjAAAFBLAwQUAAgA" + + "AAAAACEAAAAAAAAAAAAAAAAAOwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9u" + + "L3JlZmVyZW5jZXMvZGVidWdnaW5nLm1kVVQFAAEAps4SIyBEZWJ1Z2dpbmcgUmVmZXJlbmNlCgpS" + + "ZWNpcGVzIGZvciBkaWFnbm9zaW5nIGFuZCBmaXhpbmcgY29tbW9uIE5WQ0Ygc2VsZi1tYW5hZ2Vk" + + "IHN0YWNrIGZhaWx1cmVzLgoKIyMgUXVpY2sgU3RhdHVzIENvbW1hbmRzCgpgYGBiYXNoCiMgQWxs" + + "IHBvZHMgYWNyb3NzIGFsbCBuYW1lc3BhY2VzCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLW8gd2lkZQoK" + + "IyBQb2RzIGluIGEgc3BlY2lmaWMgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHBvZHMgLW4gPG5hbWVz" + + "cGFjZT4KCiMgQWxsIGhlbG0gcmVsZWFzZXMKaGVsbSBsaXN0IC1BCgojIFJlY2VudCBldmVudHMg" + + "KG1vc3QgdXNlZnVsIGZvciBkaWFnbm9zaW5nIGZhaWx1cmVzKQprdWJlY3RsIGdldCBldmVudHMg" + + "LW4gPG5hbWVzcGFjZT4gLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcKCiMgRGVzY3JpYmUgYSBz" + + "cGVjaWZpYyBwb2QgKHNob3dzIGV2ZW50cywgY29uZGl0aW9ucywgdm9sdW1lcykKa3ViZWN0bCBk" + + "ZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPgpgYGAKCiMjIEZhaWx1cmU6IElt" + + "YWdlUHVsbEJhY2tPZmYKCiMjIyBTeW1wdG9tcwoKYGBgdGV4dApOQU1FICAgICAgICAgICBSRUFE" + + "WSAgIFNUQVRVUyAgICAgICAgICAgICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5kcmEtMCAgICAwLzEg" + + "ICAgIEltYWdlUHVsbEJhY2tPZmYgICAwICAgICAgICAgIDVtCmBgYAoKRXZlbnRzIHNob3c6Cgpg" + + "YGB0ZXh0CkZhaWxlZCB0byBwdWxsIGltYWdlICJudmNyLmlvLy4uLi9pbWFnZTp0YWciOiA0MDEg" + + "VW5hdXRob3JpemVkCmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIHdoYXQgaW1h" + + "Z2UgaXMgZmFpbGluZwprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5h" + + "bWU+IHwgZ3JlcCAtQTUgIkV2ZW50czoiCgojIENoZWNrIGlmIHB1bGwgc2VjcmV0IGV4aXN0cyBp" + + "biB0aGUgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHNlY3JldCBudmNyLWNyZWRzIC1uIDxuYW1lc3Bh" + + "Y2U+CgojIENoZWNrIGlmIHRoZSBwb2Qgc3BlYyBoYXMgaW1hZ2VQdWxsU2VjcmV0cwprdWJlY3Rs" + + "IGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiAtbyBqc29ucGF0aD0ney5zcGVjLmlt" + + "YWdlUHVsbFNlY3JldHN9JwoKIyBDaGVjayBpZiB0aGUgU2VydmljZUFjY291bnQgaGFzIGltYWdl" + + "UHVsbFNlY3JldHMKa3ViZWN0bCBnZXQgc2EgPHNhLW5hbWU+IC1uIDxuYW1lc3BhY2U+IC1vIGpz" + + "b25wYXRoPSd7LmltYWdlUHVsbFNlY3JldHN9JwpgYGAKCiMjIyBGaXhlcwoKMS4gKipTZWNyZXQg" + + "bWlzc2luZyBpbiBuYW1lc3BhY2UqKjogQ3JlYXRlIGl0CgogICBgYGBiYXNoCiAgIGt1YmVjdGwg" + + "Y3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAgLS1kb2NrZXIt" + + "c2VydmVyPW52Y3IuaW8gXAogICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAog" + + "ICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgICAtLW5hbWVzcGFjZT08" + + "bmFtZXNwYWNlPiBcCiAgICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBs" + + "eSAtZiAtCiAgIGBgYAoKMi4gKipTZWNyZXQgZXhpc3RzIGJ1dCBwb2QgZG9lc24ndCByZWZlcmVu" + + "Y2UgaXQqKjogVGhlIGNoYXJ0IG5lZWRzIGBpbWFnZVB1bGxTZWNyZXRzYCBjb25maWd1cmVkIHZp" + + "YSBoZWxtZmlsZSB2YWx1ZXMuIFNlZSBbcHVsbC1zZWNyZXRzLm1kXShwdWxsLXNlY3JldHMubWQp" + + "LgoKMy4gKipDaGFydCBkb2Vzbid0IHN1cHBvcnQgaW1hZ2VQdWxsU2VjcmV0cyoqIChvcGVuYmFv" + + "LCBpbnZvY2F0aW9uLXNlcnZpY2UsIGVzcy1hcGksIG5vdGFyeS1zZXJ2aWNlKTogUGF0Y2ggU2Vy" + + "dmljZUFjY291bnRzIGFuZCByZXN0YXJ0IHBvZHMuIFNlZSBbcHVsbC1zZWNyZXRzLm1kXShwdWxs" + + "LXNlY3JldHMubWQpLgoKNC4gKipXcm9uZyBjcmVkZW50aWFscyBpbiBzZWNyZXQqKjogRGVsZXRl" + + "IGFuZCByZWNyZWF0ZQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGRlbGV0ZSBzZWNyZXQgbnZjci1j" + + "cmVkcyAtbiA8bmFtZXNwYWNlPgogICAjIFJlY3JlYXRlIHdpdGggY29ycmVjdCBjcmVkZW50aWFs" + + "cwogICBgYGAKCiMjIEZhaWx1cmU6IEluaXQ6MC8xIFN0dWNrIChWYXVsdCBBZ2VudCkKCiMjIyBT" + + "eW1wdG9tcwoKU2VydmljZSBwb2RzIHN0dWNrIGluIGBJbml0OjAvMWAgZm9yIG1pbnV0ZXM6Cgpg" + + "YGBiYXNoCk5BTUUgICAgICAgICAgICAgICAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICAgUkVT" + + "VEFSVFMgICBBR0UKbnZjZi1hcGktN2Y0Yzc2Zjc4OC00NHZsdCAgMC8yICAgICBJbml0OjAvMSAg" + + "IDAgICAgICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoKVGhlIGluaXQgY29udGFpbmVyIGlz" + + "IHRoZSB2YXVsdC1hZ2VudC1pbml0IGluamVjdG9yIHdhaXRpbmcgZm9yIE9wZW5CYW8uCgpgYGBi" + + "YXNoCiMgQ2hlY2sgT3BlbkJhbyBwb2RzCmt1YmVjdGwgZ2V0IHBvZHMgLW4gdmF1bHQtc3lzdGVt" + + "CgojIENoZWNrIGlmIE9wZW5CYW8gbWlncmF0aW9uIGpvYiByYW4Ka3ViZWN0bCBnZXQgam9icyAt" + + "biB2YXVsdC1zeXN0ZW0KCiMgQ2hlY2sgT3BlbkJhbyBwb2QgbG9ncwprdWJlY3RsIGxvZ3MgLW4g" + + "dmF1bHQtc3lzdGVtIG9wZW5iYW8tc2VydmVyLTAgLWMgb3BlbmJhbwoKIyBDaGVjayBpbml0IGNv" + + "bnRhaW5lciBsb2dzIG9uIHRoZSBzdHVjayBwb2QKa3ViZWN0bCBsb2dzIC1uIDxuYW1lc3BhY2U+" + + "IDxwb2QtbmFtZT4gLWMgdmF1bHQtYWdlbnQtaW5pdApgYGAKCiMjIyBGaXhlcwoKMS4gKipPcGVu" + + "QmFvIHBvZHMgbm90IHJ1bm5pbmcqKjogQ2hlY2sgdGhlaXIgZXZlbnRzIGZvciBpbWFnZSBwdWxs" + + "IGlzc3VlcywgcmVzb3VyY2UgaXNzdWVzLCBldGMuCgoyLiAqKk9wZW5CYW8gbWlncmF0aW9uIGpv" + + "YiBkaWRuJ3QgcnVuKio6IFRoaXMgaGFwcGVucyB3aGVuIGBoZWxtZmlsZSBzeW5jYCB3YXMgaW50" + + "ZXJydXB0ZWQuIERlc3Ryb3kgYW5kIHJlLXN5bmMgb3BlbmJhbzoKCiAgIGBgYGJhc2gKICAgSEVM" + + "TUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBk" + + "ZXN0cm95CiAgIGt1YmVjdGwgZGVsZXRlIG5hbWVzcGFjZSB2YXVsdC1zeXN0ZW0KICAga3ViZWN0" + + "bCBjcmVhdGUgbmFtZXNwYWNlIHZhdWx0LXN5c3RlbQogICAjIFJlLWNyZWF0ZSBwdWxsIHNlY3Jl" + + "dCBpZiBuZWVkZWQKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFt" + + "ZT1vcGVuYmFvLXNlcnZlciBzeW5jCiAgIGBgYAoKMy4gKipPcGVuQmFvIHBvZHMgcnVubmluZyBi" + + "dXQgbm90IGluaXRpYWxpemVkKio6IENoZWNrIHVuc2VhbCBzdGF0dXM6CgogICBgYGBiYXNoCiAg" + + "IGt1YmVjdGwgZXhlYyAtbiB2YXVsdC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXItMCAtYyBvcGVuYmFv" + + "IC0tIGJhbyBzdGF0dXMKICAgYGBgCgo0LiAqKmB2YXVsdC1hZ2VudC1pbml0YCBsb2dzIGBhdXRo" + + "L2p3dC9sb2dpbmAgLT4gYDQwMCAuLi4gbm8ga25vd24ga2V5IHN1Y2Nlc3NmdWxseSB2YWxpZGF0" + + "ZWQgdGhlIHRva2VuIHNpZ25hdHVyZWAqKgogICAoY29tbW9uIG9uIEFLUywgYW5kIG9uIGFueSBj" + + "bHVzdGVyIHdob3NlIE9JREMgaXNzdWVyIHB1Ymxpc2hlcyBhIHJvdGF0aW5nIG11bHRpLWtleSBK" + + "V0tTKToKICAgdGhlIE9wZW5CYW8gYGF1dGgvand0YCBtZXRob2Qgd2FzIGNvbmZpZ3VyZWQgd2l0" + + "aCBhIHNpbmdsZSBzdGF0aWMgbW91bnRlZCBwdWJsaWMga2V5CiAgIChgand0X3ZhbGlkYXRpb25f" + + "cHVia2V5c2ApIGluc3RlYWQgb2YgdGhlIGlzc3VlcidzIGxpdmUgSldLUywgc28gaXQgY2Fubm90" + + "IHZhbGlkYXRlIHRoZQogICBjbHVzdGVyLXNpZ25lZCBTZXJ2aWNlQWNjb3VudCB0b2tlbnMgdGhl" + + "IHZhdWx0LWFnZW50cyBwcmVzZW50LiBFdmVyeSBzZXJ2aWNlJ3MKICAgYHZhdWx0LWFnZW50LWlu" + + "aXRgIHRoZW4gbG9vcHMgb24gdGhhdCA0MDAgYW5kIHRoZSBwb2QgbmV2ZXIgbGVhdmVzIGBJbml0" + + "OjAvMWAuIFRoaXMgaXMgdGhlCiAgIGJlaGF2aW9yIG9mIHRoZSBiYXNlIGRlZmF1bHQgYG9wZW5i" + + "YW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2VgOyB0aGUKICAgbWln" + + "cmF0aW9uIGxvZyBzaG93cyBgT0lEQyBpc3N1ZXIgZGlzY292ZXJ5IGlzIGRpc2FibGVkLiBVc2lu" + + "ZyBTZXJ2aWNlQWNjb3VudCBpc3N1ZXIgYW5kCiAgIG1vdW50ZWQgcHVibGljIGtleSBmYWxsYmFj" + + "a2AuIEVuYWJsZSBpc3N1ZXIgZGlzY292ZXJ5IHNvIHRoZSBtaWdyYXRpb24gdXNlcyB0aGUgbGl2" + + "ZSBKV0tTLAogICB0aGVuIHJlLXJ1biBpdDoKCiAgIGBgYGJhc2gKICAgIyBJbiB5b3VyIGVudiB2" + + "YWx1ZXMgKGUuZy4gZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwpLCBzZXQ6CiAgICMgICBvcGVuYmFv" + + "OgogICAjICAgICBtaWdyYXRpb25zOgogICAjICAgICAgIGlzc3VlckRpc2NvdmVyeToKICAgIyAg" + + "ICAgICAgIGVuYWJsZWQ6IHRydWUKICAga3ViZWN0bCBkZWxldGUgam9iIC1uIHZhdWx0LXN5c3Rl" + + "bSBvcGVuYmFvLXNlcnZlci1taWdyYXRpb25zCiAgIEhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmls" + + "ZSAtLXNlbGVjdG9yIG5hbWU9b3BlbmJhby1zZXJ2ZXIgc3luYwogICBgYGAKCiAgIFRoZSBtaWdy" + + "YXRpb24gbG9nIHNob3VsZCB0aGVuIHNob3cgYFJlY2VpdmVkIGRpc2NvdmVyeSBkb2N1bWVudCBm" + + "cm9tCiAgIC4uLi8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbmAgYW5kIGBGaW5hbCBP" + + "cGVuQmFvIEpXVCBKV0tTIFVSTCBzZXQgdG86CiAgIC4uLi9vcGVuaWQvdjEvandrc2AsIGFuZCB0" + + "aGUgc2VydmljZSBwb2RzIGF1dGhlbnRpY2F0ZSBhbmQgcmVhY2ggUmVhZHkgd2l0aGluIH4xIG1p" + + "bi4KICAgQUtTIGNsdXN0ZXJzIHdpdGggdGhlIGNsdXN0ZXIgT0lEQyBpc3N1ZXIgZW5hYmxlZCAo" + + "dGhlIGBha3MtY2x1c3RlcmAgZGVmYXVsdCkgYWx3YXlzIG5lZWQKICAgdGhpcyBiZWNhdXNlIHRo" + + "ZSBzdGF0aWMtcHVia2V5IGZhbGxiYWNrIGNhbm5vdCBtYXRjaCB0aGUgaXNzdWVyJ3Mgcm90YXRp" + + "bmcgc2lnbmluZyBrZXlzLgoKIyMgRmFpbHVyZTogT09NS2lsbGVkIG9uIENhc3NhbmRyYQoKIyMj" + + "IFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMgICAgUkVTVEFS" + + "VFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIE9PTUtpbGxlZCAgMyAgICAgICAgIDEwbQpg" + + "YGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gY2Fzc2Fu" + + "ZHJhLXN5c3RlbSBjYXNzYW5kcmEtMCB8IGdyZXAgLUEzICJMYXN0IFN0YXRlIgpgYGAKCiMjIyBG" + + "aXgKCk92ZXJyaWRlIENhc3NhbmRyYSByZXNvdXJjZXMgdmlhIGhlbG1maWxlIHZhbHVlcy4gU2Vl" + + "IEV4YW1wbGUgMSBpbgpbZXhhbXBsZXMubWRdKC4uL2V4YW1wbGVzLm1kKS4KCmBgYHlhbWwKLSBj" + + "YXNzYW5kcmE6CiAgICByZXNvdXJjZXM6CiAgICAgIGxpbWl0czoKICAgICAgICBjcHU6ICI4Igog" + + "ICAgICAgIG1lbW9yeTogODE5Mk1pCiAgICAgIHJlcXVlc3RzOgogICAgICAgIGNwdTogIjIiCiAg" + + "ICAgICAgbWVtb3J5OiA0MDk2TWkKYGBgCgpOb3RlOiBgcmVzb3VyY2VQcmVzZXRgIGlzIG5vdCBh" + + "dmFpbGFibGUgaW4gdGhlIE5WQ0YgY2Fzc2FuZHJhIHdyYXBwZXIgY2hhcnQuIFVzZSBleHBsaWNp" + + "dCBgcmVzb3VyY2VzYC4KCiMjIEZhaWx1cmU6IFBvZHMgU3R1Y2sgaW4gUGVuZGluZwoKIyMjIFN5" + + "bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMgICAgUkVTVEFSVFMg" + + "ICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIFBlbmRpbmcgICAwICAgICAgICAgIDEwbQpgYGAK" + + "CiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKIyBDaGVjayBldmVudHMgZm9yIHNjaGVkdWxpbmcgZmFp" + + "bHVyZXMKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPgoKIyBD" + + "b21tb24gY2F1c2VzOgojIC0gIjAvMTIgbm9kZXMgYXJlIGF2YWlsYWJsZTogMTIgbm9kZShzKSBk" + + "aWRuJ3QgbWF0Y2ggUG9kJ3Mgbm9kZSBhZmZpbml0eSIKIyAtICIwLzEyIG5vZGVzIGFyZSBhdmFp" + + "bGFibGU6IDEyIEluc3VmZmljaWVudCBtZW1vcnkiCiMgLSAicGVyc2lzdGVudHZvbHVtZWNsYWlt" + + "IG5vdCBmb3VuZCIKYGBgCgojIyMgRml4ZXMKCjEuICoqTm9kZSBzZWxlY3RvciBtaXNtYXRjaCoq" + + "OiBDaGVjayBgbm9kZVNlbGVjdG9yc2AgaW4gZW52aXJvbm1lbnQgZmlsZQoKICAgYGBgYmFzaAog" + + "ICBrdWJlY3RsIGdldCBub2RlcyAtLXNob3ctbGFiZWxzIHwgZ3JlcCBudmNmCiAgIGBgYAoKMi4g" + + "KipTdG9yYWdlIGNsYXNzIG5vdCBmb3VuZCoqOiBDaGVjayBzdG9yYWdlIGNsYXNzIGV4aXN0cwoK" + + "ICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBzdG9yYWdlY2xhc3MKICAgYGBgCgozLiAqKkluc3Vm" + + "ZmljaWVudCByZXNvdXJjZXMqKjogQ2hlY2sgbm9kZSBjYXBhY2l0eQoKICAgYGBgYmFzaAogICBr" + + "dWJlY3RsIGRlc2NyaWJlIG5vZGUgPG5vZGUtbmFtZT4gfCBncmVwIC1BNSAiQWxsb2NhdGVkIHJl" + + "c291cmNlcyIKICAgYGBgCgojIyBGYWlsdXJlOiBIZWxtIFJlbGVhc2UgaW4gRmFpbGVkIFN0YXRl" + + "CgojIyMgU3ltcHRvbXMKCmBgYGJhc2gKaGVsbSBsaXN0IC1BCiMgU2hvd3MgcmVsZWFzZSB3aXRo" + + "IFNUQVRVUzogZmFpbGVkCmBgYAoKUmUtcnVubmluZyBgaGVsbWZpbGUgc3luY2AgYXBwZWFycyB0" + + "byBzdWNjZWVkIGJ1dCBzZXJ2aWNlcyBkb24ndCB3b3JrIChtaWdyYXRpb25zIHNraXBwZWQpLgoK" + + "IyMjIERpYWdub3NpcwoKYGBgYmFzaApoZWxtIGhpc3RvcnkgPHJlbGVhc2UtbmFtZT4gLW4gPG5h" + + "bWVzcGFjZT4KYGBgCgojIyMgRml4CgpNdXN0IGRlc3Ryb3kgdGhlIGZhaWxlZCByZWxlYXNlIGFu" + + "ZCByZS1zeW5jIChub3QganVzdCBhcHBseSk6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBo" + + "ZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9PHJlbGVhc2U+IGRlc3Ryb3kKIyBJZiBuYW1lc3BhY2Ug" + + "bmVlZHMgY2xlYW51cDoKa3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIDxuYW1lc3BhY2U+Cmt1YmVj" + + "dGwgY3JlYXRlIG5hbWVzcGFjZSA8bmFtZXNwYWNlPgojIFJlLWNyZWF0ZSBwdWxsIHNlY3JldCBp" + + "ZiBuZWVkZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT08cmVs" + + "ZWFzZT4gc3luYwpgYGAKCiMjIEZhaWx1cmU6IEFjY291bnQgQm9vdHN0cmFwIEpvYiBGYWlsZWQK" + + "CiMjIyBTeW1wdG9tcwoKU2VydmljZXMgZGVwbG95IGJ1dCBmdW5jdGlvbnMgY2FuJ3QgYmUgY3Jl" + + "YXRlZC4gRXZlbnRzIHNob3cgYm9vdHN0cmFwIGpvYiBmYWlsdXJlLgoKIyMjIERpYWdub3NpcwoK" + + "YGBgYmFzaAojIENoZWNrIGJvb3RzdHJhcCBqb2Igc3RhdHVzCmt1YmVjdGwgZ2V0IGpvYnMgLW4g" + + "bnZjZgoKIyBHZXQgbG9ncyAoam9iIGF1dG8tZGVsZXRlcyBhZnRlciB+NSBtaW51dGVzKQprdWJl" + + "Y3RsIGxvZ3Mgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIC1uIG52Y2YKCiMgQ2hlY2sg" + + "QVBJIGxvZ3MKa3ViZWN0bCBsb2dzIC1uIG52Y2YgLWwgYXBwLmt1YmVybmV0ZXMuaW8vbmFtZT1u" + + "dmNmLWFwaSAtLXRhaWw9MTAwCmBgYAoKIyMjIENvbW1vbiBDYXVzZXMKCjEuICoqV3JvbmcgYmFz" + + "ZTY0IGNyZWRlbnRpYWxzKio6IENyZWRlbnRpYWxzIGluIGBzZWNyZXRzLzxlbnY+LXNlY3JldHMu" + + "eWFtbGAgbXVzdCBiZSBgJG9hdXRodG9rZW46QVBJX0tFWWAgYmFzZTY0LWVuY29kZWQsIG5vdCBq" + + "dXN0IHRoZSBBUEkga2V5CgogICBgYGBiYXNoCiAgICMgVmVyaWZ5IHlvdXIgZW5jb2RlZCBjcmVk" + + "ZW50aWFsCiAgIGVjaG8gJ1lPVVJfQkFTRTY0X1NUUklORycgfCBiYXNlNjQgLWQKICAgIyBTaG91" + + "bGQgb3V0cHV0OiAkb2F1dGh0b2tlbjpudmFwaS14eHh4eAogICBgYGAKCjIuICoqUmVnaXN0cnkg" + + "dW5yZWFjaGFibGUqKjogQVBJIGNhbid0IHJlYWNoIHRoZSByZWdpc3RyeSBzcGVjaWZpZWQgaW4g" + + "YGFjY291bnRCb290c3RyYXAucmVnaXN0cnlDcmVkZW50aWFsc2AKCiMjIyBGaXgKCkZpeCBjcmVk" + + "ZW50aWFscyBpbiBzZWNyZXRzIGZpbGUsIHRoZW4gcmVjb3ZlciBzZXJ2aWNlcyB3aXRob3V0IGRl" + + "c3Ryb3lpbmcgZGVwZW5kZW5jaWVzOgoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZp" + + "bGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIGRlc3Ryb3kKa3ViZWN0bCBkZWxl" + + "dGUgbmFtZXNwYWNlIG52Y2YgYXBpLWtleXMgZXNzIHNpcyAtLWlnbm9yZS1ub3QtZm91bmQKa3Vi" + + "ZWN0bCBjcmVhdGUgbmFtZXNwYWNlIG52Y2YgJiYga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIGFw" + + "aS1rZXlzICYmIFwKICBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgZXNzICYmIGt1YmVjdGwgY3Jl" + + "YXRlIG5hbWVzcGFjZSBzaXMKIyBSZS1jcmVhdGUgcHVsbCBzZWNyZXRzIGlmIG5lZWRlZApIRUxN" + + "RklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2Vz" + + "IHN5bmMKYGBgCgojIyBGYWlsdXJlOiBOVkNBIENsZWFudXAgU3R1Y2sgKEZpbmFsaXplcnMpCgoj" + + "IyMgU3ltcHRvbXMKCkNvbXB1dGUtcGxhbmUgY2xlYW51cCBoYW5ncy4gTmFtZXNwYWNlcwpzdHVj" + + "ayBpbiBgVGVybWluYXRpbmdgOgoKYGBgYmFzaAprdWJlY3RsIGdldCBucwojIG52Y2Etb3BlcmF0" + + "b3IgICAgVGVybWluYXRpbmcgICAxMG0KIyBudmNmLWJhY2tlbmQgICAgIFRlcm1pbmF0aW5nICAg" + + "MTBtCmBgYAoKIyMjIEZpeAoKUnVuIHRoaXMgb25seSBhZ2FpbnN0IHRoZSBjb21wdXRlIGNvbnRl" + + "eHQsIGFmdGVyIHRoZSBub3JtYWwgY29tcHV0ZS1wbGFuZQp0ZWFyZG93biBoYXMgZmFpbGVkLiBS" + + "ZW1vdmUgZmluYWxpemVycyBmcm9tIE5WQ0ZCYWNrZW5kIGN1c3RvbSByZXNvdXJjZXMgYW5kCmZv" + + "cmNlLWRlbGV0ZSBzdHVjayBuYW1lc3BhY2VzOgoKYGBgYmFzaApleHBvcnQgQ09NUFVURV9DT05U" + + "RVhUPTxjb21wdXRlLXBsYW5lLWNvbnRleHQ+CgojIFJlbW92ZSBmaW5hbGl6ZXJzIGZyb20gTlZD" + + "RkJhY2tlbmQgcmVzb3VyY2VzCmt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhUIiBn" + + "ZXQgbnZjZmJhY2tlbmRzIC1BIC1vIGpzb24gfCBcCiAganEgJy5pdGVtc1tdIHwgLm1ldGFkYXRh" + + "Lm5hbWVzcGFjZSArICIvIiArIC5tZXRhZGF0YS5uYW1lJyAtciB8IFwKICB4YXJncyAtSXt9IHNo" + + "IC1jICdjb250ZXh0PSIkMSI7IG5zPSIkezIlJS8qfSI7IG5hbWU9IiR7MiMjKi99Ijsga3ViZWN0" + + "bCAtLWNvbnRleHQgIiRjb250ZXh0IiBwYXRjaCBudmNmYmFja2VuZCAiJG5hbWUiIC1uICIkbnMi" + + "IC0tdHlwZT1tZXJnZSAtcCAie1wibWV0YWRhdGFcIjp7XCJmaW5hbGl6ZXJzXCI6W119fSInIF8g" + + "IiRDT01QVVRFX0NPTlRFWFQiIHt9CgojIEZvcmNlLWRlbGV0ZSBzdHVjayBuYW1lc3BhY2VzIGJ5" + + "IGNsZWFyaW5nIHRoZWlyIGZpbmFsaXplcnMKZm9yIG5zIGluIG52Y2Etb3BlcmF0b3IgbnZjZi1i" + + "YWNrZW5kOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhUIiBnZXQgbmFt" + + "ZXNwYWNlICIkbnMiIC1vIGpzb24gMj4vZGV2L251bGwgfCBcCiAgICBqcSAnLnNwZWMuZmluYWxp" + + "emVycyA9IFtdJyB8IFwKICAgIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhUIiBy" + + "ZXBsYWNlIFwKICAgICAgLS1yYXcgIi9hcGkvdjEvbmFtZXNwYWNlcy8kbnMvZmluYWxpemUiIC1m" + + "IC0gMj4vZGV2L251bGwKZG9uZQpgYGAKCiMjIEZhaWx1cmU6IE5WQ0EgT3BlcmF0b3IgTWlzc2lu" + + "ZyBvciBOb3QgUmVhZHkKCiMjIyBTeW1wdG9tcwoKQWZ0ZXIgY29tcHV0ZS1wbGFuZSBpbnN0YWxs" + + "IGNvbXBsZXRlcywgbm8gYG52Y2Etb3BlcmF0b3JgIERlcGxveW1lbnQgZXhpc3RzLCBvcgppdCBl" + + "eGlzdHMgYnV0IHBvZHMgYXJlIG5vdCByZWFkeToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQg" + + "PGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IGRlcGxveW1lbnQgbnZjYS1vcGVyYXRvciBcCiAg" + + "LW4gbnZjYS1vcGVyYXRvcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0" + + "PiBnZXQgcG9kcyAtbiBudmNhLW9wZXJhdG9yCmBgYAoKIyMjIERpYWdub3NpcyBhbmQgRml4ZXMK" + + "CkZpcnN0IGlkZW50aWZ5IHdoZXRoZXIgdGhlIGluc3RhbGxhdGlvbiB1c2VkIHRoZSBIZWxtZmls" + + "ZSB2YWx1ZXMgZmxvdyBvciB0aGUKQ0xJIHByb2ZpbGUgZmxvdy4gUmUtcnVuIG9ubHkgdGhhdCBm" + + "bG93J3MgcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24gc3RlcHMKZnJvbSBbU3BsaXQgQ29t" + + "cHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4g" + + "RG8gbm90CnN1YnN0aXR1dGUgb25lIGhhbmRvZmYgZm9yIHRoZSBvdGhlci4KCklmIGluc3RhbGxh" + + "dGlvbiBzdWNjZWVkcyBidXQgcG9kcyBzdGlsbCBmYWlsLCBpbnNwZWN0IHRoZSBjb21wdXRlIGNv" + + "bnRleHQ6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+" + + "IGRlc2NyaWJlIGRlcGxveSBudmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yCmt1YmVj" + + "dGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGxvZ3MgZGVwbG95bWVudC9udmNh" + + "LW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yIC0tdGFpbD0yMDAKa3ViZWN0bCAtLWNvbnRl" + + "eHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG52Y2ZiYWNrZW5kIC1uIG52Y2Etb3BlcmF0" + + "b3IKYGBgCgpGb3IgcHJpdmF0ZSByZWdpc3RyeSBmYWlsdXJlcywgdmVyaWZ5IHRoYXQgdGhlIHB1" + + "bGwgc2VjcmV0IGV4aXN0cyBpbgpgbnZjYS1vcGVyYXRvcmAuIFRoZSBjaGFydCBhbmQgb3BlcmF0" + + "b3IgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWA7IGRvIG5vdCB1c2UgYQpicm9hZGVyIG1hbnVh" + + "bCBuYW1lc3BhY2UgbG9vcC4gU2VlCltwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0cy5tZCNj" + + "b21wdXRlLXBsYW5lLXNlY3JldCkuCgojIyBGYWlsdXJlOiBHYXRld2F5IEVuZHBvaW50IENoYW5n" + + "ZWQKCiMjIyBTeW1wdG9tcwoKUmVxdWVzdHMgdGhyb3VnaCB0aGUgY29uZmlndXJlZCByb3V0ZSBk" + + "b21haW4gZmFpbCBhZnRlciB0aGUgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxhbmNlciBpcyByZXBs" + + "YWNlZC4gVGhlIEdhdGV3YXkgcmVwb3J0cyBhIG5ldyBlbmRwb2ludC4KCiMjIyBEaWFnbm9zaXMK" + + "CmBgYGJhc2gKR0FURVdBWV9BRERSPSQoa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + + "Y29udGV4dD4gZ2V0IGdhdGV3YXkgXAogIG52Y2YtZ2F0ZXdheSAtbiBlbnZveS1nYXRld2F5IFwK" + + "ICAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScpCnRlc3QgLW4gIiRH" + + "QVRFV0FZX0FERFIiCmRpZyArc2hvcnQgImFwaS48ZG9tYWluPiIKY3VybCAtSCAiSG9zdDogYXBp" + + "Ljxkb21haW4+IiAiaHR0cDovLyRHQVRFV0FZX0FERFIvaGVhbHRoIgoKIyBDaGVjayBkaXJlY3Qg" + + "YWRkcmVzcyBmaWVsZHMgdXNlZCBieSBhIHNwbGl0IGRlcGxveW1lbnQKZ3JlcCBudmNmTmF0c1Nl" + + "cnZpY2VVUkwgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvZW52aXJvbm1lbnRzLzxlbnY+Lnlh" + + "bWwKZ3JlcCAtRSAnaWNtc1NlcnZpY2V8cmV2YWxTZXJ2aWNlfG5hdHMnIFwKICBkZXBsb3kvc3Rh" + + "Y2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMvPGVudj4ueWFtbApgYGAKCiMjIyBG" + + "aXgKCktlZXAgYGdsb2JhbC5kb21haW5gLCByb3V0ZSBob3N0bmFtZXMsIGFuZCBIb3N0IG92ZXJy" + + "aWRlcyB1bmNoYW5nZWQuIFVwZGF0ZSBETlMKb3IgdGhlIGRpcmVjdCBjbGllbnQgZGVzdGluYXRp" + + "b24uIEZvciBzcGxpdCBkZXBsb3ltZW50cywgdXBkYXRlIG9ubHkgZGlyZWN0CkdhdGV3YXktYWRk" + + "cmVzcyBmaWVsZHMgYW5kIHJlZnJlc2ggcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24gdGhy" + + "b3VnaCB0aGUKc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLiBTZWUKW0V4YW1wbGUgNF0oLi4vZXhhbXBs" + + "ZXMubWQjZXhhbXBsZS00LXJlY292ZXItZnJvbS1hLWdhdGV3YXktZW5kcG9pbnQtY2hhbmdlKS4K" + + "CiMjIFVzZWZ1bCBOYW1lc3BhY2UtdG8tU2VydmljZSBNYXBwaW5nCgpRdWljayByZWZlcmVuY2Ug" + + "Zm9yIHdoaWNoIHNlcnZpY2VzIHJ1biBpbiB3aGljaCBuYW1lc3BhY2U6Cgp8IE5hbWVzcGFjZSB8" + + "IFNlcnZpY2VzIHwKfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgbmF0cy1zeXN0ZW0gfCBuYXRz" + + "IHwKfCBjYXNzYW5kcmEtc3lzdGVtIHwgY2Fzc2FuZHJhIHwKfCB2YXVsdC1zeXN0ZW0gfCBvcGVu" + + "YmFvLXNlcnZlciB8CnwgbnZjZiB8IGFwaSwgaW52b2NhdGlvbi1zZXJ2aWNlLCBncnBjLXByb3h5" + + "LCBub3Rhcnktc2VydmljZSwgcmV2YWwsIGxsbS1yZXF1ZXN0LXJvdXRlciwgbGxtLWFwaS1nYXRl" + + "d2F5IHwKfCBhcGkta2V5cyB8IGFwaS1rZXlzLCBhZG1pbi1pc3N1ZXItcHJveHkgfAp8IGVzcyB8" + + "IGVzcy1hcGkgfAp8IHNpcyB8IHNpcyB8CnwgZW52b3ktZ2F0ZXdheS1zeXN0ZW0gfCBlbnZveSBn" + + "YXRld2F5IChpbmdyZXNzIGNvbnRyb2xsZXIpIHwKfCBlbnZveS1nYXRld2F5IHwgZ2F0ZXdheSBy" + + "ZXNvdXJjZSArIHJvdXRlcyB8ClBLBwi1enA7tTAAALUwAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAA" + + "AAAAAEQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL2hl" + + "bG1maWxlLXN0cnVjdHVyZS5tZFVUBQABAKbOEiMgSGVsbWZpbGUgU3RydWN0dXJlIFJlZmVyZW5j" + + "ZQoKIyMgRGlyZWN0b3J5IExheW91dAoKYGBgYmFzaApudmNmLXNlbGYtbWFuYWdlZC1zdGFjay8K" + + "fC0tIGhlbG1maWxlLmQvCnwgICB8LS0gMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsICAjIE5B" + + "VFMsIENhc3NhbmRyYSwgT3BlbkJhbwp8ICAgfC0tIDAyLWNvcmUueWFtbC5nb3RtcGwgICAgICAg" + + "ICAgIyBOVkNGIHNlcnZpY2VzICsgaW5ncmVzcwp8ICAgYC0tIDAzLW9ic2VydmFiaWxpdHkueWFt" + + "bC5nb3RtcGwgIyBPYnNlcnZhYmlsaXR5IHN0YWNrIChvcHRpb25hbCkKfC0tIGVudmlyb25tZW50" + + "cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAgICAgICAgICAgICMgRGVmYXVsdCB2YWx1ZXMg" + + "KGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVudi1uYW1lPi55YW1sICAgICAgICAgICAgICAj" + + "IFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKfC0tIHNlY3JldHMvCnwgICBgLS0gPGVudi1uYW1l" + + "Pi1zZWNyZXRzLnlhbWwgICAgICAjIFNlbnNpdGl2ZSB2YWx1ZXMgKHJlZ2lzdHJ5IGNyZWRzLCBw" + + "YXNzd29yZHMpCmAtLSBnbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgICAjIEdvIHRlbXBs" + + "YXRlIHRoYXQgY29uc3RydWN0cyBwZXItY2hhcnQgdmFsdWVzCgpudmNmLWNvbXB1dGUtcGxhbmUt" + + "c3RhY2svCnwtLSBoZWxtZmlsZS5kLwp8ICAgfC0tIDAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1w" + + "bCAgIyBDb21wdXRlIHBsYW5lIGRlcGVuZGVuY3kgY29tcG9uZW50cwp8ICAgYC0tIDAyLW52Y2Eu" + + "eWFtbC5nb3RtcGwgICAgICAgICAgIyBudmNhLW9wZXJhdG9yIGNoYXJ0IGFuZCBudmNhIGNvbmZp" + + "Z3VyYXRpb24KfC0tIGVudmlyb25tZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAgICAg" + + "ICAgICAgICMgRGVmYXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVudi1u" + + "YW1lPi55YW1sICAgICAgICAgICAgICAjIFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKYC0tIGds" + + "b2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAgICMgR28gdGVtcGxhdGUgdGhhdCBjb25zdHJ1" + + "Y3RzIHBlci1jaGFydCB2YWx1ZXMKYGBgCgpUaGVzZSBzdGFja3MgaGF2ZSBzZXBhcmF0ZSBlbnZp" + + "cm9ubWVudHMgYW5kIGNsdXN0ZXIgY29udGV4dHMuIFRoZSBIZWxtZmlsZQp2YWx1ZXMgZmxvdyBh" + + "dXRob3JzIGJvdGggZW52aXJvbm1lbnQgZmlsZXMuIFRoZSBDTEkgcHJvZmlsZSBmbG93IGluc3Rl" + + "YWQgdXNlcwp0aGUgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBsYW5lIHByb2ZpbGUgYXMgaXRzIGVu" + + "ZHBvaW50IHNvdXJjZS4gRG8gbm90IG1peCB0aGUKaGFuZG9mZnMuIFNlZSBbU3BsaXQgQ29tcHV0" + + "ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4KCiMj" + + "IEdvdG1wbCBGaWxlcyBhbmQgVGhlaXIgUmVsZWFzZXMKCiMjIyAwMS1kZXBlbmRlbmNpZXMueWFt" + + "bC5nb3RtcGwKCnwgUmVsZWFzZSB8IENoYXJ0IHwgTmFtZXNwYWNlIHwgTm90ZXMgfAp8LS0tLS0t" + + "LS0tfC0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLXwKfCBuYXRzIHwgaGVsbS1udmNmLW5hdHMg" + + "fCBuYXRzLXN5c3RlbSB8IE1lc3NhZ2luZyB8Cnwgb3BlbmJhby1zZXJ2ZXIgfCBoZWxtLW52Y2Yt" + + "b3BlbmJhby1zZXJ2ZXIgfCB2YXVsdC1zeXN0ZW0gfCBTZWNyZXRzIG1hbmFnZW1lbnQsIGRlcGVu" + + "ZHMgb24gbmF0cyB8CnwgY2Fzc2FuZHJhIHwgaGVsbS1udmNmLWNhc3NhbmRyYSB8IGNhc3NhbmRy" + + "YS1zeXN0ZW0gfCBEYXRhYmFzZSB8CgpVc2VzIGA8PDogKmRlcGVuZGVuY3lgIHRlbXBsYXRlIGlu" + + "aGVyaXRhbmNlIHdpdGggYHJlbGVhc2UtZ3JvdXA6IGRlcGVuZGVuY2llc2AgbGFiZWwuCgojIyMg" + + "MDItY29yZS55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBMYWJl" + + "bCB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IGFwaS1rZXlzIHwg" + + "aGVsbS1udmNmLWFwaS1rZXlzIHwgYXBpLWtleXMgfCBzZXJ2aWNlcyB8Cnwgc2lzIHwgaGVsbS1u" + + "dmNmLXNpcyB8IHNpcyB8IHNlcnZpY2VzIHwKfCBhcGkgfCBoZWxtLW52Y2YtYXBpIHwgbnZjZiB8" + + "IHNlcnZpY2VzIHwKfCBpbnZvY2F0aW9uLXNlcnZpY2UgfCBoZWxtLW52Y2YtaW52b2NhdGlvbi1z" + + "ZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBncnBjLXByb3h5IHwgaGVsbS1udmNmLWdycGMt" + + "cHJveHkgfCBudmNmIHwgc2VydmljZXMgfAp8IGVzcy1hcGkgfCBoZWxtLW52Y2YtZXNzLWFwaSB8" + + "IGVzcyB8IHNlcnZpY2VzIHwKfCBub3Rhcnktc2VydmljZSB8IGhlbG0tbnZjZi1ub3Rhcnktc2Vy" + + "dmljZSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgcmV2YWwgfCBoZWxtLXJldmFsIHwgbnZjZiB8IHNl" + + "cnZpY2VzIHwKfCBsbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNmL2hlbG0tbnZjZi1sbG0tcmVxdWVz" + + "dC1yb3V0ZXIgfCBudmNmIHwgc2VydmljZXMgfAp8IGxsbS1hcGktZ2F0ZXdheSB8IG52Y2YvaGVs" + + "bS1udmNmLWxsbS1hcGktZ2F0ZXdheSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgYWRtaW4taXNzdWVy" + + "LXByb3h5IHwgaGVsbS1hZG1pbi10b2tlbi1pc3N1ZXItcHJveHkgfCBhcGkta2V5cyB8IChubyBy" + + "ZWxlYXNlLWdyb3VwIGxhYmVsKSB8CnwgaW5ncmVzcyB8IG52Y2YtZ2F0ZXdheS1yb3V0ZXMgfCBl" + + "bnZveS1nYXRld2F5LXN5c3RlbSB8IGluZ3Jlc3MgfAoKTW9zdCBzZXJ2aWNlcyB1c2UgYGluaGVy" + + "aXQ6IFt7dGVtcGxhdGU6IHNlcnZpY2V9XWAuIExMTSByZWxlYXNlcyB1c2UgT0NJIGNoYXJ0cyBm" + + "cm9tIHRoZSBgbnZjZmAgcmVwb3NpdG9yeSB3aXRoIHN0YW5kYWxvbmUgYHZhbHVlczogWy4uL2ds" + + "b2JhbC55YW1sLmdvdG1wbF1gIGJsb2NrczsgdGhleSBhcmUgZ2F0ZWQgb24gYGFkZG9ucy5sbG0u" + + "ZW5hYmxlZGAuIGBhZG1pbi1pc3N1ZXItcHJveHlgIGFuZCBgaW5ncmVzc2AgaGF2ZSBzdGFuZGFs" + + "b25lIGB2YWx1ZXM6YCBibG9ja3MuCgojIyMgMDMtb2JzZXJ2YWJpbGl0eS55YW1sLmdvdG1wbAoK" + + "fCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBMYWJlbCB8CnwtLS0tLS0tLS18LS0tLS0t" + + "LXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IChvYnNlcnZhYmlsaXR5IHJlbGVhc2VzKSB8ICh2YXJp" + + "b3VzKSB8IG9ic2VydmFiaWxpdHkgfCBvYnNlcnZhYmlsaXR5IHwKCkdhdGVkIG9uIG9ic2VydmFi" + + "aWxpdHktc3BlY2lmaWMgZmxhZ3MgaW4gdGhlIGVudmlyb25tZW50IGZpbGUuIFNraXBwZWQgaWYg" + + "ZGlzYWJsZWQuCgojIyBUZW1wbGF0ZSBJbmhlcml0YW5jZQoKIyMjIGA8PDogKmRlcGVuZGVuY3lg" + + "IChZQU1MIG1lcmdlKQoKVXNlZCBpbiBgMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsYC4gTWVy" + + "Z2VzIHRoZSB0ZW1wbGF0ZSdzIHByb3BlcnRpZXMgaW50byB0aGUgcmVsZWFzZS4KCioqR290Y2hh" + + "Kio6IFlBTUwgbWVyZ2UgcmVwbGFjZXMgbGlzdHMuIElmIHlvdSBhZGQgYSBgdmFsdWVzOmAga2V5" + + "IHRvIHRoZSByZWxlYXNlLCBpdCAqKnJlcGxhY2VzKiogdGhlIHRlbXBsYXRlJ3MgYHZhbHVlczpg" + + "IGxpc3QgZW50aXJlbHkuIFlvdSBtdXN0IHJlLWluY2x1ZGUgYWxsIHRlbXBsYXRlIHZhbHVlczoK" + + "CkluIHRoZSB0ZW1wbGF0ZSBiZWxvdywgYDxwcml2YXRlLXZhbHVlcz5gIHJlZmVycyB0byB0aGUg" + + "YHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxlIHN0YWNrIHJvb3QuCgpgYGB5YW1s" + + "CiMgVGVtcGxhdGUgZGVmaW5lczoKdGVtcGxhdGVzOgogIGRlcGVuZGVuY3k6ICZkZXBlbmRlbmN5" + + "CiAgICBjaGFydDogbnZjZi9oZWxtLW52Y2Yte3sgLlJlbGVhc2UuTmFtZSB9fQogICAgdmFsdWVz" + + "OgogICAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAgICAtIC4uLzxwcml2YXRlLXZhbHVl" + + "cz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCgojIFdoZW4g" + + "b3ZlcnJpZGluZywgTVVTVCByZS1pbmNsdWRlIGJvdGg6Ci0gbmFtZTogY2Fzc2FuZHJhCiAgPDw6" + + "ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwgICAgICAg" + + "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNdXN0IHJlLWluY2x1ZGUK" + + "ICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9" + + "fS1zZWNyZXRzLnlhbWwgICAjIE11c3QgcmUtaW5jbHVkZQogICAgLSBjYXNzYW5kcmE6ICAgICAg" + + "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgWW91" + + "ciBvdmVycmlkZQogICAgICAgIHJlc291cmNlczoKICAgICAgICAgIGxpbWl0czoKICAgICAgICAg" + + "ICAgbWVtb3J5OiA4MTkyTWkKYGBgCgojIyMgYGluaGVyaXRgIChIZWxtZmlsZSBuYXRpdmUpCgpV" + + "c2VkIGluIGAwMi1jb3JlLnlhbWwuZ290bXBsYC4gSGVsbWZpbGUncyBuYXRpdmUgaW5oZXJpdGFu" + + "Y2UgbWVjaGFuaXNtLgoKYGBgeWFtbAotIG5hbWU6IGFwaQogIHZlcnNpb246IDEuNi4wCiAgbmFt" + + "ZXNwYWNlOiBudmNmCiAgaW5oZXJpdDoKICAgIC0gdGVtcGxhdGU6IHNlcnZpY2UKYGBgCgpXaGVu" + + "IGFkZGluZyBgdmFsdWVzOmAgdG8gYW4gaW5oZXJpdGVkIHJlbGVhc2UsIHlvdSBhbHNvIG5lZWQg" + + "dG8gcmUtaW5jbHVkZSB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgZmlsZXMgc2luY2UgYHZhbHVlc2Ag" + + "aXMgYSBsaXN0IHRoYXQgZ2V0cyByZXBsYWNlZC4KCiMjIFZhbHVlcyBQcmVjZWRlbmNlCgpGcm9t" + + "IGxvd2VzdCB0byBoaWdoZXN0IHByaW9yaXR5OgoKMS4gYGVudmlyb25tZW50cy9iYXNlLnlhbWxg" + + "IC0tIGRlZmF1bHRzIHNoYXJlZCBhY3Jvc3MgYWxsIGVudmlyb25tZW50cwoyLiBgZW52aXJvbm1l" + + "bnRzLzxlbnY+LnlhbWxgIC0tIHBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKMy4gYGdsb2JhbC55" + + "YW1sLmdvdG1wbGAgLS0gR28gdGVtcGxhdGUgcHJvY2Vzc2luZyAoY29uc3RydWN0cyBjaGFydC1z" + + "cGVjaWZpYyBzdHJ1Y3R1cmUpCjQuIGA8cHJpdmF0ZS12YWx1ZXM+LzxlbnY+LXNlY3JldHMueWFt" + + "bGAgLS0gc2Vuc2l0aXZlIHZhbHVlcwo1LiBJbmxpbmUgYHZhbHVlczpgIGJsb2NrcyBvbiByZWxl" + + "YXNlcyAtLSBoaWdoZXN0IHByZWNlZGVuY2UKCiMjIFdoYXQgZ2xvYmFsLnlhbWwuZ290bXBsIFBh" + + "c3NlcyBUaHJvdWdoCgpgZ2xvYmFsLnlhbWwuZ290bXBsYCByZWFkcyBmcm9tIGAuVmFsdWVzYCAo" + + "dGhlIG1lcmdlZCBlbnZpcm9ubWVudCArIGVudi1zcGVjaWZpYyBZQU1MKSBhbmQgY29uc3RydWN0" + + "cyBjaGFydC1zcGVjaWZpYyB2YWx1ZXMuIEl0IG9ubHkgcGFzc2VzIHRocm91Z2gga2V5cyBpdCBl" + + "eHBsaWNpdGx5IHJlZmVyZW5jZXM6CgojIyMgQ2Fzc2FuZHJhCgotIGBjYXNzYW5kcmEucmVwbGlj" + + "YUNvdW50YAotIGBjYXNzYW5kcmEuaW1hZ2UuKmAgKHJlZ2lzdHJ5LCByZXBvc2l0b3J5KQotIGBj" + + "YXNzYW5kcmEubWlncmF0aW9ucy5pbWFnZS4qYAotIGBjYXNzYW5kcmEucGVyc2lzdGVuY2Uuc2l6" + + "ZWAKLSBgY2Fzc2FuZHJhLm5vZGVTZWxlY3RvcmAgKGlmIGBnbG9iYWwubm9kZVNlbGVjdG9ycy5l" + + "bmFibGVkYCkKLSBgY2Fzc2FuZHJhLmdsb2JhbC5kZWZhdWx0U3RvcmFnZUNsYXNzYAoKIyMjIE5B" + + "VFMKCi0gYG5hdHMuY29udGFpbmVyLmltYWdlLipgCi0gYG5hdHMucmVsb2FkZXIuaW1hZ2UuKmAK" + + "LSBgbmF0cy5uYXRzQm94LmNvbnRhaW5lci5pbWFnZS4qYAotIGBuYXRzLmNvbmZpZy5qZXRzdHJl" + + "YW0uZmlsZVN0b3JlLnB2Yy5zdG9yYWdlQ2xhc3NOYW1lYAotIGBuYXRzLnBvZFRlbXBsYXRlLm1l" + + "cmdlLnNwZWMubm9kZVNlbGVjdG9yYCAoaWYgZW5hYmxlZCkKCiMjIyBPcGVuQmFvCgotIGBvcGVu" + + "YmFvLm1pZ3JhdGlvbnMuaW1hZ2UuKmAgYW5kIGBvcGVuYmFvLm1pZ3JhdGlvbnMuZW52YAotIGBv" + + "cGVuYmFvLmluamVjdG9yLmltYWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmltYWdlLipgCi0gYG9w" + + "ZW5iYW8uc2VydmVyLmRhdGFTdG9yYWdlLipgCi0gTm9kZSBzZWxlY3RvcnMgKGlmIGVuYWJsZWQp" + + "CgojIyMgU2VydmljZXMgKEFQSSwgU0lTLCBldGMuKQoKLSBgPHNlcnZpY2U+LmltYWdlLipgIChy" + + "ZWdpc3RyeSwgcmVwb3NpdG9yeSkKLSBgPHNlcnZpY2U+Lm5vZGVTZWxlY3RvcmAgKGlmIGVuYWJs" + + "ZWQpCi0gYDxzZXJ2aWNlPi5lbnYuKmAgKG9ic2VydmFiaWxpdHkgc2V0dGluZ3MpCgojIyMgTExN" + + "IEZ1bmN0aW9uIEVuYWJsZW1lbnQKCkVuYWJsZSB0aGUgTExNIGFkZG9uIGJlZm9yZSBjcmVhdGlu" + + "ZyBvciBpbnZva2luZyBmdW5jdGlvbnMgd2l0aApgZnVuY3Rpb25UeXBlOiAiTExNImAuIFRoZSBh" + + "ZGRvbiBkZXBsb3lzIGBsbG0tcmVxdWVzdC1yb3V0ZXJgIGFuZApgbGxtLWFwaS1nYXRld2F5YCwg" + + "YWRkcyB0aGUgYGxsbS5pbnZvY2F0aW9uLjxkb21haW4+YCByb3V0ZSB3aGVuIEdhdGV3YXkgQVBJ" + + "CmluZ3Jlc3MgaXMgZW5hYmxlZCwgYW5kIGNvbmZpZ3VyZXMgd29ya2VycyB0byB1c2UgdGhlIExM" + + "TSBzaWRlY2FyLiBUaGUgSGVsbWZpbGUKY29uZGl0aW9uIGlzIGBhZGRvbnMubGxtLmVuYWJsZWRg" + + "LiBEbyBub3QgdXNlIHRoZSBvYnNvbGV0ZSBgbGxtLmVuYWJsZWRgIHBhdGguCgpGb3IgYSBzaW5n" + + "bGUtbm9kZSBpc29sYXRlZCB0ZXN0IGNsdXN0ZXIsIGFkZCB0aGlzIGNvbmZpZ3VyYXRpb24gdG8K" + + "YGVudmlyb25tZW50cy88ZW52Pi55YW1sYCBiZWZvcmUgYXBwbHlpbmcgdGhlIHN0YWNrOgoKYGBg" + + "eWFtbAphZGRvbnM6CiAgbGxtOgogICAgZW5hYmxlZDogdHJ1ZQogICAgZ2F0ZXdheToKICAgICAg" + + "cmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2VydmljZU1vbml0b3I6CiAg" + + "ICAgICAgICBlbmFibGVkOiBmYWxzZQogICAgcmVxdWVzdFJvdXRlcjoKICAgICAgcmVwbGljYUNv" + + "dW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2VydmljZU1vbml0b3I6CiAgICAgICAgICBl" + + "bmFibGVkOiBmYWxzZQoKYWdlbnRDb25maWc6CiAgbWVyZ2VDb25maWc6IHwKICAgIGNsdXN0ZXI6" + + "CiAgICAgIHZhbGlkYXRpb25Qb2xpY3k6CiAgICAgICAgbmFtZTogVW5yZXN0cmljdGVkCiAgICB3" + + "b3JrbG9hZDoKICAgICAgc3RhcmdhdGVRVUlDSW5zZWN1cmU6IHRydWUKYGBgCgpVc2UgYHJlcGxp" + + "Y2FDb3VudDogMWAgb25seSBmb3IgbG9jYWwgb3Igc2luZ2xlLW5vZGUgdGVzdCBjbHVzdGVycy4g" + + "VGhlIGJ1bmRsZWQKTlZDRiBBUEkgY3VycmVudGx5IHNlcnZlcyBwbGFpbnRleHQgZ1JQQyBvbiBw" + + "b3J0IDkwOTAsIHNvIHRoZSBzZWxmLW1hbmFnZWQgc3RhY2sKZGVmYXVsdHMgdGhlIExMTSBBUEkg" + + "R2F0ZXdheSBhdXRoZW50aWNhdGlvbiBob3AgdG8gcGxhaW50ZXh0LiBTZXQKYGFkZG9ucy5sbG0u" + + "Z2F0ZXdheS5hdXRoLmdycGNJbnNlY3VyZTogZmFsc2VgIG9ubHkgd2l0aCBhIFRMUy1jYXBhYmxl" + + "IE5WQ0YgQVBJLgoKV29ya2VyLXRvLXJvdXRlciB0cmFuc3BvcnQgaXMgc2VwYXJhdGUuIEZvciBz" + + "aGFyZWQgb3IgcHJvZHVjdGlvbiBjbHVzdGVycywgdXNlCnRoZSByZXF1aXJlZCByZXBsaWNhIGNv" + + "dW50IGFuZCB0aGUgbWFuYWdlZCBUTFMgY29uZmlndXJhdGlvbi4gVGhlCmB3b3JrbG9hZC5zdGFy" + + "Z2F0ZVFVSUNJbnNlY3VyZWAgc2V0dGluZyBlbmFibGVzIHBsYWludGV4dCB3b3JrZXIgdHJhbnNw" + + "b3J0IGFuZAptdXN0IG5vdCBiZSB1c2VkIGluIHByb2R1Y3Rpb24uCgpUaGUgcmVxdWVzdCByb3V0" + + "ZXIgdXNlcyBgcG93ZXItb2YtdHdvYCB3aGVuIG5vIGxvYWQtYmFsYW5jZXIgY29uZmlndXJhdGlv" + + "biBpcwpzZXQuIENvbmZpZ3VyZSBvdGhlciByb3V0aW5nIG1ldGhvZHMgd2l0aCB0aGUKW0xMTSBS" + + "ZXF1ZXN0IFJvdXRlciBMb2FkIEJhbGFuY2luZ10oaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9u" + + "dmNmL2Jsb2IvbWFpbi9kb2NzL3VzZXIvbGxtLXJlcXVlc3Qtcm91dGVyLWxvYWQtYmFsYW5jaW5n" + + "Lm1kKQpndWlkZS4KCklmIHRoZSBzaWRlY2FyIGltYWdlIGlzIG1pcnJvcmVkIG91dHNpZGUgdGhl" + + "IHN0YWNrJ3MgZGVmYXVsdCBpbWFnZSByZWdpc3RyeSBhbmQKcmVwb3NpdG9yeSwgc2V0IHRoZSBn" + + "ZW5lcmF0ZWQgd29ya2VyIHNpZGVjYXIgaW1hZ2UgZXhwbGljaXRseToKCmBgYHlhbWwKYXBpOgog" + + "IHJlbW90ZUNvbmZpZzoKICAgIGNvbmZpZ0RhdGE6CiAgICAgIG52Y2Y6CiAgICAgICAgc2lkZWNh" + + "cnM6CiAgICAgICAgICBsbG0tcm91dGVyLWNsaWVudC1pbWFnZTogPHJlZ2lzdHJ5Pi88cmVwb3Np" + + "dG9yeT4vcHlsb246MC4xNC4xCmBgYAoKVGhlIGxlZ2FjeSBgYXBpLmVudi5OVkNGX1NJREVDQVJT" + + "X0xMTV9ST1VURVJfQ0xJRU5UX0lNQUdFYCBwYXRoIGlzIGRlcHJlY2F0ZWQuClRoZSBzdGFjayB0" + + "cmFuc2xhdGVzIGl0IGZvciBvbmUgY29tcGF0aWJpbGl0eSB3aW5kb3csIGJ1dCBuZXcgY29uZmln" + + "dXJhdGlvbnMKbXVzdCB1c2UgdGhlIHJlbW90ZS1jb25maWcgcGF0aC4gQ29uZmxpY3RpbmcgdmFs" + + "dWVzIGZhaWwgcmVuZGVyaW5nLgoKUmVuZGVyIGFuZCBhcHBseSB0aGUgdXBkYXRlZCBjb250cm9s" + + "LXBsYW5lIGVudmlyb25tZW50LCB0aGVuIHJlZnJlc2ggZXZlcnkKcmVnaXN0ZXJlZCBjb21wdXRl" + + "IHBsYW5lIHVzaW5nIHRoZSBzYW1lIGhhbmRvZmYgdXNlZCBmb3IgaXRzIGluc3RhbGxhdGlvbiBz" + + "bwpOVkNBIHJlY2VpdmVzIGBhZ2VudENvbmZpZy5tZXJnZUNvbmZpZ2A6CgpgYGBiYXNoCkhFTE1G" + + "SUxFX0VOVj08ZW52PiBoZWxtZmlsZSB0ZW1wbGF0ZQpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZp" + + "bGUgc3luYwpgYGAKClVzZSB0aGUgY29tcGxldGUgY29tcHV0ZS1wbGFuZSBpbnN0YWxsIGNvbW1h" + + "bmQgZnJvbQpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUt" + + "aW5zdGFsbGF0aW9uLm1kKS4gQQpDTEktcHJvZmlsZSBpbnN0YWxsYXRpb24gbXVzdCByZW1haW4g" + + "cHJvZmlsZS1kcml2ZW47IGEgSGVsbWZpbGUgaW5zdGFsbGF0aW9uCm11c3QgcmVtYWluIHZhbHVl" + + "cy1kcml2ZW4uCgpFeGlzdGluZyBMTE0gZnVuY3Rpb24gdmVyc2lvbnMgcmV0YWluIHRoZSB3b3Jr" + + "ZXItc2lkZWNhciBpbWFnZSBtZXRhZGF0YQpjYXB0dXJlZCB3aGVuIHRoZSB2ZXJzaW9uIGlzIGNy" + + "ZWF0ZWQuIFJlcGxhY2luZyBwb2RzIG9yIHJlZGVwbG95aW5nIHRoZSBzYW1lCnZlcnNpb24gZG9l" + + "cyBub3QgYXBwbHkgYSBuZXcgUHlsb24gaW1hZ2UuIEFmdGVyIHRoZSBjb250cm9sLXBsYW5lIHVw" + + "ZGF0ZSwKY3JlYXRlIGFuZCBkZXBsb3kgYSBuZXcgZnVuY3Rpb24gdmVyc2lvbi4gVmVyaWZ5IHRo" + + "ZSBjb250cm9sIHBsYW5lLCByb3V0ZSwgYW5kCndvcmtlciBzaWRlY2FyOgoKYGBgYmFzaAprdWJl" + + "Y3RsIGdldCBkZXBsb3kgLW4gbnZjZiBsbG0tYXBpLWdhdGV3YXkKa3ViZWN0bCBnZXQgc3RhdGVm" + + "dWxzZXQgLW4gbnZjZiBsbG0tcmVxdWVzdC1yb3V0ZXIKa3ViZWN0bCBnZXQgcG9kcyAtbiBudmNm" + + "IHwgZ3JlcCAtRSAnbGxtLWFwaS1nYXRld2F5fGxsbS1yZXF1ZXN0LXJvdXRlcicKa3ViZWN0bCBn" + + "ZXQgaHR0cHJvdXRlIC1BIHwgZ3JlcCBsbG0Ka3ViZWN0bCAtbiBudmNmLWJhY2tlbmQgZ2V0IHBv" + + "ZCA8ZnVuY3Rpb24tcG9kPiBcCiAgLW8ganNvbnBhdGg9J3tyYW5nZSAuc3BlYy5jb250YWluZXJz" + + "Wz8oQC5uYW1lPT0ibGxtLXdvcmtlciIpXS5hcmdzWypdfXsufXsiXFxuIn17ZW5kfScKYGBgCgpG" + + "b3IgbG9jYWwgcGxhaW50ZXh0IGNsdXN0ZXJzLCB0aGUgYGxsbS13b3JrZXJgIGFyZ3MgbXVzdCBp" + + "bmNsdWRlCmAtLXF1aWMtaW5zZWN1cmVgLgoKRm9yIGxvYWQtYmFsYW5jZXIgc2NoZW1hIGFuZCBh" + + "bGdvcml0aG0gYmVoYXZpb3IsIHNlZSB0aGUKW1N0YXJnYXRlIGNvbmZpZ3VyYXRpb24gZ3VpZGVd" + + "KGh0dHBzOi8vZ2l0aHViLmNvbS9OVklESUEvbnZjZi9ibG9iL21haW4vc3JjL2xpYnJhcmllcy9y" + + "dXN0L3N0YXJnYXRlL2RvY3MvbG9hZC1iYWxhbmNlci1jb25maWd1cmF0aW9uLm1kKS4KCiMjIEhl" + + "bG1maWxlIFNlbGVjdG9ycwoKVGFyZ2V0IHNwZWNpZmljIHJlbGVhc2VzIG9yIGdyb3VwczoKCmBg" + + "YGJhc2gKIyBCeSByZWxlYXNlIGdyb3VwCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + + "bGVjdG9yIHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+" + + "IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1zZXJ2aWNlcyBzeW5jCkhFTE1GSUxF" + + "X0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5j" + + "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9b2Jz" + + "ZXJ2YWJpbGl0eSBzeW5jCgojIEJ5IHJlbGVhc2UgbmFtZQpIRUxNRklMRV9FTlY9PGVudj4gaGVs" + + "bWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBo" + + "ZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9YWRtaW4taXNzdWVyLXByb3h5IHN5bmMKSEVMTUZJTEVf" + + "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1sbG0tcmVxdWVzdC1yb3V0ZXIgc3lu" + + "YwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWxsbS1hcGktZ2F0" + + "ZXdheSBzeW5jCgojIFRlbXBsYXRlIG9ubHkgKGRyeSBydW4pCkhFTE1GSUxFX0VOVj08ZW52PiBo" + + "ZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlCgojIERlc3Ryb3kgYSBz" + + "aW5nbGUgcmVsZWFzZQpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1l" + + "PWNhc3NhbmRyYSBkZXN0cm95CmBgYAoKTm90ZTogYGFkbWluLWlzc3Vlci1wcm94eWAgaGFzIG5v" + + "IGByZWxlYXNlLWdyb3VwYCBsYWJlbC4gVXNlIGAtLXNlbGVjdG9yIG5hbWU9YWRtaW4taXNzdWVy" + + "LXByb3h5YC4KUEsHCLE1HdsCKgAAAioAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAPwAJAGRh" + + "dGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvbnZjZi11aS1hZGRv" + + "bi5tZFVUBQABAKbOEiMgTlZDRiBVSSBBZGRvbgoKTlZDRiBVSSBpcyBhbiBvcHRpb25hbCwgY3Vz" + + "dG9tZXItZmFjaW5nIE5WQ0YgYWRtaW4tcGFuZWwgVUkuIEl0IGlzIGRpc2FibGVkIGJ5CmRlZmF1" + + "bHQgYW5kIGF2YWlsYWJsZSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRoYXQgaW5jbHVkZSB0aGUg" + + "TlZDRiBVSSBhZGRvbi4KCiMjIFdoZW4gdG8gZW5hYmxlCgpFbmFibGUgTlZDRiBVSSBvbmx5IHdo" + + "ZW4geW91IG5lZWQgdGhlIGFkbWluLXBhbmVsIFVJIGFuZCB5b3VyIGV4dHJhY3RlZCBzdGFjawpw" + + "YWNrYWdlIGluY2x1ZGVzIHRoZSBhZGRvbi4gSWYgdGhlIHBhY2thZ2UgZG9lcyBub3QgY29udGFp" + + "biBhIGBudmNmLXVpYCByZWxlYXNlCmFuZCBgbnZjZlVpYCByb3V0ZSB2YWx1ZXMsIHNraXAgdGhl" + + "IGFkZG9uIHVudGlsIHlvdSB1c2UgYSBwYWNrYWdlIHRoYXQgaW5jbHVkZXMKdGhlbS4KCiMjIEVu" + + "YWJsZSB0aGUgYWRkb24KCkVuYWJsZSBpdCBpbiBgZW52aXJvbm1lbnRzLzxlbnYtbmFtZT4ueWFt" + + "bGA6CgpgYGB5YW1sCmFkZG9uczoKICBudmNmVWk6CiAgICBlbmFibGVkOiB0cnVlCmBgYAoKIyMg" + + "Q3JlYXRlIG5hbWVzcGFjZSBhbmQgaW1hZ2UgcHVsbCBzZWNyZXQKCkNyZWF0ZSB0aGUgbmFtZXNw" + + "YWNlLCBhbmQgYW4gaW1hZ2UgcHVsbCBzZWNyZXQgb25seSBpZiBwdWxsaW5nIGZyb20gYSBwcml2" + + "YXRlCnJlZ2lzdHJ5OgoKYGBgYmFzaAprdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgbnZjZi11aSAt" + + "LWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KCiMgT25seSBpZiBw" + + "dWxsaW5nIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5IChlLmcuLCBOR0MgbnZjci5pbykKZXhwb3J0" + + "IE5HQ19BUElfS0VZPSI8eW91ci1rZXk+IgprdWJlY3RsIGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJl" + + "Z2lzdHJ5IG52Y3ItY3JlZHMgXAogIC0tZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAtLWRvY2tl" + + "ci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElf" + + "S0VZIiBcCiAgLS1uYW1lc3BhY2U9bnZjZi11aSBcCiAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1s" + + "IHwga3ViZWN0bCBhcHBseSAtZiAtCmBgYAoKVGhlIGRlZmF1bHQgcm91dGUgaG9zdCBpcyBgbnZj" + + "Zi11aS48ZG9tYWluPmAgYW5kIHRoZSBiYWNrZW5kIGlzCmBudmNmLXVpLm52Y2YtdWk6ODMwMGAu" + + "CgojIyBBcHBseSB0aGUgc2VydmljZSBhbmQgcm91dGUKCkFmdGVyIGNvbmZpcm1pbmcgdGhlIHBh" + + "Y2thZ2UgaW5jbHVkZXMgdGhlIGBudmNmLXVpYCByZWxlYXNlLCBwcmV2aWV3IGFuZCBhcHBseQp0" + + "aGUgc2VydmljZSBhbmQgcm91dGU6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhl" + + "bG1maWxlIC0tc2VsZWN0b3IgbmFtZT1udmNmLXVpIHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08ZW52" + + "LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1udmNmLXVpIHN5bmMKSEVMTUZJTEVfRU5W" + + "PTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPWluZ3Jlc3Mgc3lu" + + "YwpgYGAKCiMjIFZlcmlmeQoKVmVyaWZ5IHRoZSByb3V0ZSBvbmx5IHdoZW4gdGhlIGFkZG9uIGlz" + + "IHByZXNlbnQgYW5kIGVuYWJsZWQ6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSxzdmMgLW4g" + + "bnZjZi11aQprdWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIC1pIG52Y2YtdWkKY3VybCAt" + + "aSAtSCAiSG9zdDogbnZjZi11aS48ZG9tYWluPiIgImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPi9z" + + "dGF0dXMiCmBgYAoKIyMgU2VjdXJpdHkKClRoZSBOVkNGIFVJIGFkbWluIHBhbmVsIGlzIGN1cnJl" + + "bnRseSB1bmF1dGhlbnRpY2F0ZWQuIERvIG5vdCBleHBvc2UgaXQgdG8gdGhlCnB1YmxpYyBpbnRl" + + "cm5ldC4gUmVzdHJpY3QgYWNjZXNzIHRvIGEgdHJ1c3RlZCBuZXR3b3JrLCBWUE4sIG9yIGFuIGF1" + + "dGhlbnRpY2F0aW5nCnByb3h5IGluIGZyb250IG9mIHRoZSBgbnZjZi11aWAgcm91dGUuClBLBwg4" + + "+SevuQcAALkHAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAD4ACQBkYXRhL252Y2Ytc2VsZi1t" + + "YW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZFVUBQABAKbOEiMg" + + "SW1hZ2UgUHVsbCBTZWNyZXRzIFJlZmVyZW5jZQoKIyMgT3ZlcnZpZXcKCldoZW4gcHVsbGluZyBO" + + "VkNGIGltYWdlcyBmcm9tIGEgcHJpdmF0ZSByZWdpc3RyeSAoZm9yIGV4YW1wbGUsIE5HQwpgbnZj" + + "ci5pb2ApLCBLdWJlcm5ldGVzIG5lZWRzIGBpbWFnZVB1bGxTZWNyZXRzYCBvbiBldmVyeSBwb2Qu" + + "IENvbnRyb2wtcGxhbmUgYW5kCmNvbXB1dGUtcGxhbmUgY3JlZGVudGlhbHMgYXJlIGNvbmZpZ3Vy" + + "ZWQgaW4gdGhlaXIgb3duIGNsdXN0ZXIgY29udGV4dHMuIERvIG5vdAp1c2Ugb25lIG1peGVkIG5h" + + "bWVzcGFjZSBsaXN0LgoKVGhlIHJlY29tbWVuZGVkIGNvbnRyb2wtcGxhbmUgYXBwcm9hY2ggdXNl" + + "cyBLeXZlcm5vIHRvIGluamVjdCB0aGUgc2VjcmV0IGludG8KY29udHJvbC1wbGFuZSBwb2RzIGF0" + + "IGFkbWlzc2lvbiB0aW1lLiBUaGUgY29tcHV0ZS1wbGFuZSBjaGFydCBhbmQgb3BlcmF0b3IgdXNl" + + "CnRoZSBzZWNyZXQgaW4gYG52Y2Etb3BlcmF0b3JgIGFuZCBtaXJyb3IgaXQgdG8gYG52Y2Etc3lz" + + "dGVtYC4KCiMjIEt5dmVybm8gQXBwcm9hY2ggKFJlY29tbWVuZGVkKQoKIyMjIDEuIEluc3RhbGwg" + + "S3l2ZXJubwoKYGBgYmFzaApoZWxtIHJlcG8gYWRkIGt5dmVybm8gaHR0cHM6Ly9reXZlcm5vLmdp" + + "dGh1Yi5pby9reXZlcm5vLwpoZWxtIHJlcG8gdXBkYXRlCmhlbG0gaW5zdGFsbCBreXZlcm5vIGt5" + + "dmVybm8va3l2ZXJubyAtbiBreXZlcm5vIC0tY3JlYXRlLW5hbWVzcGFjZSBcCiAgLS1rdWJlLWNv" + + "bnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4KYGBgCgojIyMgMi4gQ3JlYXRlIGNvbnRyb2wt" + + "cGxhbmUgcHVsbCBzZWNyZXRzCgpgYGBiYXNoCmV4cG9ydCBOR0NfQVBJX0tFWT0iPHlvdXItbmdj" + "LWFwaS1rZXk+IgoKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBh" + "cGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAt" + "LWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gY3JlYXRlIG5hbWVzcGFjZSAiJG5zIiBc" + @@ -2814,951 +3648,123 @@ const skillDataZipBase64 = "" + "dmVyPW52Y3IuaW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgICAt" + "LWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5hbWVzcGFjZT0iJG5zIiBc" + "CiAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJv" + - "bC1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCmRvbmUKYGBgCgojIyMgU3RlcCA0OiBBZGQgaW1h" + - "Z2VQdWxsU2VjcmV0cyB0byBoZWxtZmlsZSByZWxlYXNlcwoKQWRkIHRoZSBjaGFydC1zcGVjaWZp" + - "YyBgaW1hZ2VQdWxsU2VjcmV0c2Aga2V5IHRvIGVhY2ggcmVsZWFzZS4gRXhhbXBsZSBmb3IgY2Fz" + - "c2FuZHJhIGluIGBoZWxtZmlsZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbGA6CgpgYGB5" + - "YW1sCi0gbmFtZTogY2Fzc2FuZHJhCiAgdmVyc2lvbjogMC44LjAKICBjb25kaXRpb246IGNhc3Nh" + - "bmRyYS5lbmFibGVkCiAgbmFtZXNwYWNlOiBjYXNzYW5kcmEtc3lzdGVtCiAgPDw6ICpkZXBlbmRl" + - "bmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwKICAgIC0gLi4vPHByaXZh" + - "dGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwK" + - "ICAgIC0gY2Fzc2FuZHJhOgogICAgICAgIGdsb2JhbDoKICAgICAgICAgIGltYWdlUHVsbFNlY3Jl" + - "dHM6CiAgICAgICAgICAgIC0gbnZjci1jcmVkcwpgYGAKClNlZSBbcmVmZXJlbmNlcy9wdWxsLXNl" + - "Y3JldHMubWRdKHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKSBmb3IgdGhlIGtleSBmb3IgZXZl" + - "cnkgY2hhcnQuCgpUaGVzZSBhcmUgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzLiBGb3IgYSBzZXBh" + - "cmF0ZSBjb21wdXRlIGNsdXN0ZXIsIGNyZWF0ZSB0aGUKc2VjcmV0IG9ubHkgaW4gYG52Y2Etb3Bl" + - "cmF0b3JgOyB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0bwpgbnZjYS1zeXN0ZW1g" + - "LiBTZWUgW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1" + - "dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kI3B1bGwtc2VjcmV0cykuCgojIyMgU3RlcCA1OiBEZXBs" + - "b3kKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0ta3ViZS1jb250ZXh0IDxj" + - "b250cm9sLXBsYW5lLWNvbnRleHQ+IHN5bmMKYGBgCgojIyMgU3RlcCA2OiBQYXRjaCBTZXJ2aWNl" + - "QWNjb3VudHMgZm9yIGNoYXJ0cyB3aXRob3V0IG5hdGl2ZSBzdXBwb3J0CgpBZnRlciBQaGFzZSAx" + - "IChkZXBlbmRlbmNpZXMpIGNvbXBsZXRlcywgT3BlbkJhbyBwb2RzIHdpbGwgYmUgaW4gYEltYWdl" + - "UHVsbEJhY2tPZmZgLiBQYXRjaCBhbmQgcmVzdGFydDoKCmBgYGJhc2gKZm9yIG5zIGluIHZhdWx0" + - "LXN5c3RlbSBudmNmIGVzczsgZG8KICBmb3Igc2EgaW4gJChrdWJlY3RsIC0tY29udGV4dCA8Y29u" + - "dHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgc2EgLW4gIiRucyIgXAogICAgLS1uby1oZWFkZXJzIC1v" + - "IGN1c3RvbS1jb2x1bW5zPSI6bWV0YWRhdGEubmFtZSIpOyBkbwogICAga3ViZWN0bCAtLWNvbnRl" + - "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gcGF0Y2ggc2VydmljZWFjY291bnQgLW4gIiRucyIg" + - "IiRzYSIgXAogICAgICAtcCAneyJpbWFnZVB1bGxTZWNyZXRzIjogW3sibmFtZSI6ICJudmNyLWNy" + - "ZWRzIn1dfScKICBkb25lCmRvbmUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + - "dGV4dD4gZGVsZXRlIHBvZHMgLW4gdmF1bHQtc3lzdGVtIC0tYWxsCmBgYAoKVmVyaWZ5OgoKYGBg" + - "YmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZXZlbnRz" + - "IC1uIHZhdWx0LXN5c3RlbSBcCiAgLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcgfCBncmVwIC1p" + - "IHB1bGwKIyBTaG91bGQgc2hvdyAiU3VjY2Vzc2Z1bGx5IHB1bGxlZCBpbWFnZSIgZnJvbSBudmNy" + - "LmlvCmBgYAoKLS0tCgojIyBFeGFtcGxlIDM6IEZ1bGwgVGVhcmRvd24gYW5kIFJlaW5zdGFsbAoK" + - "V2hlbiBhIGRlcGxveW1lbnQgaXMgYnJva2VuIGFuZCB5b3UgbmVlZCBhIGNsZWFuIHNsYXRlLgoK" + - "IyMjIFN0ZXAgMTogRGVzdHJveSB0aGUgY29tcHV0ZS1wbGFuZSBzdGFjawoKYGBgYmFzaAptYWtl" + - "IC1DIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGRlc3Ryb3kgXAogIENMVVNURVJf" + - "TkFNRT08Y2x1c3Rlci1uYW1lPiBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklH" + - "X0ZJTEU9PGNvbXB1dGUtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpJZiBjb21wdXRlIGNsZWFudXAg" + - "aXMgc3R1Y2sgb24gZmluYWxpemVycywgdXNlIHRoZSBjb21wdXRlLWNvbnRleHQgcHJvY2VkdXJl" + - "IGluCltkZWJ1Z2dpbmcubWRdKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kI2ZhaWx1cmUtbnZjYS1j" + - "bGVhbnVwLXN0dWNrLWZpbmFsaXplcnMpLgoKIyMjIFN0ZXAgMjogRGVyZWdpc3RlciB0aGUgY29t" + - "cHV0ZSBjbHVzdGVyCgpSZWFkIGBjbHVzdGVySURgIGFuZCBgbmNhSURgIGZyb20KYGRlcGxveS9z" + - "dGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL3JlZ2lzdHJhdGlvbi88Y2x1c3Rlci1uYW1lPi1yZWdp" + - "c3Rlci12YWx1ZXMueWFtbGAuClNob3cgdGhlIElEIGFuZCBnZXQgY29uZmlybWF0aW9uIGJlZm9y" + - "ZSBkZWxldGluZyB0aGUgSUNNUyByb3c6CgpgYGBiYXNoCjxudmNmLWNsaT4gLS1jb25maWcgPGNv" + - "bmZpZz4gY2x1c3RlciBkZWxldGUgXAogIC0tY2x1c3Rlci1pZCA8Y2x1c3Rlci1pZC1mcm9tLXJl" + - "Z2lzdHJhdGlvbi12YWx1ZXM+IFwKICAtLW5jYS1pZCA8bmNhLWlkPiBcCiAgLS1pZ25vcmUtbWlz" + - "c2luZwpgYGAKClJlcGVhdCBzdGVwcyAxIGFuZCAyIGZvciBldmVyeSBjb21wdXRlIGNsdXN0ZXIu" + - "CgojIyMgU3RlcCAzOiBEZXN0cm95IHRoZSBjb250cm9sLXBsYW5lIHN0YWNrCgpQcmVzZXJ2ZSB0" + - "aGUgYGNlcnQtbWFuYWdlcmAgbmFtZXNwYWNlIGJ5IGRlZmF1bHQuIE5hbWVzcGFjZSBwcmVzZXJ2" + - "YXRpb24gZG9lcwpub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZS4gQmVmb3JlIHJ1bm5pbmcg" + - "ZGVzdHJveSwgaWRlbnRpZnkgd2hldGhlcgpjZXJ0LW1hbmFnZXIgaXMgZXh0ZXJuYWwuIEZvciBh" + - "biBleHRlcm5hbCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlCmBjZXJ0TWFuYWdlci5l" + - "bmFibGVkOiBmYWxzZWAgYW5kIGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBhbiBpbnRlbmRlZApz" + - "dGFjay1tYW5hZ2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUgYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6" + - "IHRydWVgLCB2ZXJpZnkKbWF0Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1ldGFkYXRhIGFuZCBh" + - "Ym9ydCBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQKZXZpZGVuY2UuIE9ubHkgcGxhbiBuYW1lc3Bh" + - "Y2UgcmVtb3ZhbCBhZnRlciB2ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kCmdldHRp" + - "bmcgZXhwbGljaXQgY29uZmlybWF0aW9uOyBvdGhlcndpc2UgZG8gbm90IGRlbGV0ZSBpdC4KCmBg" + - "YGJhc2gKS1VCRUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBcCm1ha2UgLUMgZGVw" + - "bG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwK" + - "ICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpQYXNzIGJv" + - "dGgga3ViZWNvbmZpZyBmb3JtcyBiZWNhdXNlIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlIGNsZWFu" + - "dXAgdXNlcwphbWJpZW50IGBrdWJlY3RsYC4KCiMjIyBTdGVwIDQ6IFZlcmlmeSBjbGVhbgoKYGBg" + - "YmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgbnMgfCBc" + - "CiAgZ3JlcCAtRSAnKG52Y2F8bnZjZi1iYWNrZW5kfGdyb3ZlfGR5bmFtbyknCmt1YmVjdGwgLS1j" + - "b250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBucyB8IFwKICBncmVwIC1FICcoY2Fz" + - "c2FuZHJhfG5hdHN8dmF1bHR8bnZjZnxhcGkta2V5c3xlc3N8c2lzKScKIyBCb3RoIGNvbW1hbmRz" + - "IHNob3VsZCByZXR1cm4gZW1wdHkuCmBgYAoKIyMjIFN0ZXAgNTogUmVpbnN0YWxsIGluIHNwbGl0" + - "IG9yZGVyCgpGb2xsb3cgW0NsZWFuIEluc3RhbGxhdGlvbl0oU0tJTEwubWQjY2xlYW4taW5zdGFs" + - "bGF0aW9uKSwgdGhlbiByZXR1cm4gdG8gdGhlCnNhbWUgaGFuZG9mZiBpbiBbU3BsaXQgQ29tcHV0" + - "ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRp" + - "b24ubWQpLgoKLS0tCgojIyBFeGFtcGxlIDQ6IFJlY292ZXIgZnJvbSBhIEdhdGV3YXkgRW5kcG9p" + - "bnQgQ2hhbmdlCgpUaGUgc2VwYXJhdGVseSBwcm92aXNpb25lZCBHYXRld2F5IG9yIGl0cyBsb2Fk" + - "IGJhbGFuY2VyIHdhcyByZWNyZWF0ZWQgYW5kIGdvdCBhIG5ldyBlbmRwb2ludC4KCiMjIyBTdGVw" + - "IDE6IEdldCB0aGUgbmV3IGVuZHBvaW50CgpgYGBiYXNoCkdBVEVXQVlfQUREUj0kKGt1YmVjdGwg" + - "LS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5IFwKICBudmNmLWdh" + - "dGV3YXkgLW4gZW52b3ktZ2F0ZXdheSBcCiAgLW8ganNvbnBhdGg9J3suc3RhdHVzLmFkZHJlc3Nl" + - "c1swXS52YWx1ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSIgpgYGAKCiMjIyBTdGVwIDI6IFVw" + - "ZGF0ZSBETlMgYW5kIGRpcmVjdCBhZGRyZXNzIGZpZWxkcwoKS2VlcCBgZ2xvYmFsLmRvbWFpbmAs" + - "IHJvdXRlIGhvc3RuYW1lcywgYW5kIENMSSBIb3N0IGZpZWxkcyB1bmNoYW5nZWQuIFBvaW50IHRo" + - "ZQpETlMgcmVjb3JkcyBmb3IgcmVuZGVyZWQgcm91dGUgaG9zdG5hbWVzLCBzdWNoIGFzIGBhcGku" + - "PGRvbWFpbj5gIGFuZApgKi5pbnZvY2F0aW9uLjxkb21haW4+YCwgdG8gYEdBVEVXQVlfQUREUmAu" + - "IEZvciBhIHRlbXBvcmFyeSBlbnZpcm9ubWVudCB3aXRob3V0CkROUywga2VlcCBpdHMgcmVzZXJ2" + - "ZWQgcm91dGUgc3VmZml4IGFuZCBjb25uZWN0IHRvIGBHQVRFV0FZX0FERFJgIHdpdGggdGhlCm1h" + - "dGNoaW5nIGBIb3N0YCBoZWFkZXIuCgpGb3IgYSBzcGxpdCBkZXBsb3ltZW50IGNvbmZpZ3VyZWQg" + - "d2l0aCBkaXJlY3QgR2F0ZXdheSBhZGRyZXNzZXMsIHJlcGxhY2Ugb25seQp0aGUgYWRkcmVzcy1i" + - "ZWFyaW5nIHZhbHVlczogY29udHJvbC1wbGFuZSBgbnZjZk5hdHNTZXJ2aWNlVVJMYCwgY29tcHV0" + - "ZS1wbGFuZQpJQ01TLCBSZVZhbCwgYW5kIE5BVFMgVVJMcywgYW5kIENMSSBVUkwgZmllbGRzLiBL" + - "ZWVwIHRoZWlyIGRvbWFpbiBhbmQgSG9zdApvdmVycmlkZXMgdW5jaGFuZ2VkLiBSZWZyZXNoIHJl" + - "Z2lzdHJhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIHRocm91Z2ggdGhlIHNhbWUKaGFuZG9mZiB1c2Vk" + - "IG9yaWdpbmFsbHkuIFNlZQpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVy" + - "ZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpCmZvciB0aGUgZmllbGRzIGFuZCBj" + - "b21wbGV0ZSBjb21tYW5kcy4KCiMjIyBTdGVwIDM6IFZlcmlmeSBib3RoIGNvbnRleHRzCgpgYGBi" + - "YXNoCmRpZyArc2hvcnQgImFwaS48ZG9tYWluPiIKY3VybCAtSCAiSG9zdDogYXBpLjxkb21haW4+" + - "IiAiaHR0cDovLyRHQVRFV0FZX0FERFIvaGVhbHRoIgprdWJlY3RsIC0tY29udGV4dCA8Y29udHJv" + - "bC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBudmNmLWdhdGV3YXkgXAogIC1uIGVudm95LWdh" + - "dGV3YXkgLW8gd2lkZQprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBn" + - "ZXQgaHR0cHJvdXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0" + - "PiBnZXQgdGNwcm91dGVzIC1BCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + - "eHQ+IHJvbGxvdXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Etb3BlcmF0b3IgLW4gbnZjYS1v" + - "cGVyYXRvciAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNv" + - "bnRleHQ+IHdhaXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4g" + - "LW4gbnZjYS1vcGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3suc3RhdHVzLmFnZW50U3RhdHVz" + - "fSc9aGVhbHRoeSAtLXRpbWVvdXQ9MTBtCmBgYAoKLS0tCgojIyBFeGFtcGxlIDU6IERlcGxveSBP" + - "bmx5IERlcGVuZGVuY2llcwoKVXNlZnVsIGZvciB0ZXN0aW5nIG9yIHdoZW4gaXRlcmF0aW5nIG9u" + - "IHNlcnZpY2UgY29uZmlndXJhdGlvbi4KCmBgYGJhc2gKIyBEZXBsb3kganVzdCBOQVRTLCBDYXNz" + - "YW5kcmEsIE9wZW5CYW8KSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVs" + - "ZWFzZS1ncm91cD1kZXBlbmRlbmNpZXMgc3luYwoKIyBDaGVjayBzdGF0dXMKa3ViZWN0bCBnZXQg" + - "cG9kcyAtbiBuYXRzLXN5c3RlbQprdWJlY3RsIGdldCBwb2RzIC1uIGNhc3NhbmRyYS1zeXN0ZW0K" + - "a3ViZWN0bCBnZXQgcG9kcyAtbiB2YXVsdC1zeXN0ZW0KCiMgRGVwbG95IGp1c3Qgb25lIHNwZWNp" + - "ZmljIHJlbGVhc2UKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1j" + - "YXNzYW5kcmEgc3luYwpgYGAKCiMjIyBTZWxlY3RvciByZWZlcmVuY2UKCnwgU2VsZWN0b3IgfCBS" + - "ZWxlYXNlcyB8CnwtLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgYHJlbGVhc2UtZ3JvdXA9ZGVwZW5k" + - "ZW5jaWVzYCB8IG5hdHMsIGNhc3NhbmRyYSwgb3BlbmJhby1zZXJ2ZXIgfAp8IGByZWxlYXNlLWdy" + - "b3VwPXNlcnZpY2VzYCB8IGFwaS1rZXlzLCBzaXMsIGFwaSwgaW52b2NhdGlvbi1zZXJ2aWNlLCBn" + - "cnBjLXByb3h5LCBlc3MtYXBpLCBub3Rhcnktc2VydmljZSwgcmV2YWwsIG9wdGlvbmFsIGxsbS1y" + - "ZXF1ZXN0LXJvdXRlciBhbmQgbGxtLWFwaS1nYXRld2F5IHdoZW4gYGxsbS5lbmFibGVkPXRydWVg" + - "LCBvcHRpb25hbCB2YW5pdHktZ2F0ZXdheSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRoYXQgaW5j" + - "bHVkZSB0aGUgYWRkb24gYW5kIGhhdmUgYGFkZG9ucy52YW5pdHlHYXRld2F5LmVuYWJsZWQ9dHJ1" + - "ZWAsIG9wdGlvbmFsIG52Y2YtdWkgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUg" + - "dGhlIGFkZG9uIGFuZCBoYXZlIGBhZGRvbnMubnZjZlVpLmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1l" + - "PWxsbS1yZXF1ZXN0LXJvdXRlcmAgfCBEZXBsb3kganVzdCB0aGUgTExNIHJlcXVlc3Qgcm91dGVy" + - "IHdoZW4gYGxsbS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1sbG0tYXBpLWdhdGV3YXlgIHwgRGVw" + - "bG95IGp1c3QgdGhlIExMTSBBUEkgZ2F0ZXdheSB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCB8Cnwg" + - "YG5hbWU9dmFuaXR5LWdhdGV3YXlgIHwgRGVwbG95IGp1c3QgVmFuaXR5IEdhdGV3YXkgb25seSB3" + - "aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoYXQgcmVsZWFzZSBhbmQgYGFkZG9ucy52" + - "YW5pdHlHYXRld2F5LmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1lPW52Y2YtdWlgIHwgRGVwbG95IE5W" + - "Q0YgVUkgb25seSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoYXQgcmVsZWFzZSBh" + - "bmQgYGFkZG9ucy5udmNmVWkuZW5hYmxlZD10cnVlYCB8CnwgYHJlbGVhc2UtZ3JvdXA9aW5ncmVz" + - "c2AgfCBpbmdyZXNzIChnYXRld2F5IHJvdXRlcykgfAp8IGBuYW1lPTxyZWxlYXNlPmAgfCBBbnkg" + - "aW5kaXZpZHVhbCByZWxlYXNlIGJ5IG5hbWUgfAoKTm90ZTogYGFkbWluLWlzc3Vlci1wcm94eWAg" + - "ZG9lcyBub3QgaGF2ZSBhIHJlbGVhc2UtZ3JvdXAgbGFiZWwuIFRhcmdldCBpdCB3aXRoIGAtLXNl" + - "bGVjdG9yIG5hbWU9YWRtaW4taXNzdWVyLXByb3h5YC4KUEsHCAJSTkB/KAAAfygAAFBLAwQUAAgA" + - "AAAAACEAAAAAAAAAAAAAAAAATAAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9u" + - "L3JlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWRVVAUAAQCmzhIjIFNwbGl0" + - "IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uCgpUaGUgY29udHJvbCBwbGFuZSBhbmQgY29tcHV0" + - "ZSBwbGFuZSBhcmUgc2VwYXJhdGUgc3RhY2tzLiBJbnN0YWxsIHRoZSBjb250cm9sCnBsYW5lIGZp" + - "cnN0LCB0aGVuIHJlZ2lzdGVyIGFuZCBpbnN0YWxsIGVhY2ggY29tcHV0ZSBjbHVzdGVyLiBDaG9v" + - "c2Ugb25lIGhhbmRvZmYKYmVsb3cgYW5kIHVzZSBpdCBmb3IgdGhlIGZ1bGwgbGlmZWN5Y2xlLiBE" + - "byBub3QgY29tYmluZSBhIENMSS1nZW5lcmF0ZWQgcHJvZmlsZQp3aXRoIHRoZSBIZWxtZmlsZSB2" + - "YWx1ZXMgZmxvdy4KCiMjIENob29zZSBhIEhhbmRvZmYKCnwgRmxvdyB8IFNvdXJjZSBvZiBjb250" + - "cm9sLXBsYW5lIGVuZHBvaW50cyB8IFJlZ2lzdHJhdGlvbiBhcnRpZmFjdCB8CnwtLS0tLS18LS0t" + - "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18" + - "CnwgSGVsbWZpbGUgdmFsdWVzIHwgU2VwYXJhdGUgY29udHJvbC1wbGFuZSBhbmQgY29tcHV0ZS1w" + - "bGFuZSBlbnZpcm9ubWVudCBmaWxlcyB8IGBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFu" + - "ZS9yZWdpc3RyYXRpb24vPGNsdXN0ZXI+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYCB8CnwgQ0xJIHBy" + - "b2ZpbGUgfCBDTEktZ2VuZXJhdGVkIGBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29u" + - "dHJvbC1wbGFuZS1wcm9maWxlLnlhbWxgIHwgQ0xJLWdlbmVyYXRlZCBgZGVwbG95L3N0YWNrcy9u" + - "dmNmLWNvbXB1dGUtcGxhbmUvb3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgfAoK" + - "VGhlIENMSSBwcm9maWxlIGlzIG1hbmRhdG9yeSBmb3IgdGhlIENMSSBmbG93IGFuZCBtdXN0IG5v" + - "dCBiZSBoYW5kLWF1dGhvcmVkLgpUaGUgSGVsbWZpbGUgZmxvdyBkb2VzIG5vdCBjb25zdW1lIGEg" + - "Y29udHJvbC1wbGFuZSBwcm9maWxlLgoKQ29tbWFuZHMgYmVsb3cgdXNlIG1vbm9yZXBvIHBhdGhz" + - "IGZyb20gdGhlIHJlcG9zaXRvcnkgcm9vdC4gT3BlcmF0b3JzIHVzaW5nCmV4dHJhY3RlZCBwYWNr" + - "YWdlcyBuZWVkIG1hdGNoaW5nLXZlcnNpb24gYG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrYCBhbmQK" + - "YG52Y2YtY29tcHV0ZS1wbGFuZS1zdGFja2AgYnVuZGxlcy4gU3Vic3RpdHV0ZSB0aG9zZSBidW5k" + - "bGUgcm9vdHMgZm9yCmBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZGAgYW5kIGBkZXBsb3kvc3Rh" + - "Y2tzL252Y2YtY29tcHV0ZS1wbGFuZWAuCgojIyBIZWxtZmlsZSBWYWx1ZXMgRmxvdwoKQ3JlYXRl" + - "IGJvdGggZW52aXJvbm1lbnQgZmlsZXMgYmVmb3JlIGluc3RhbGxhdGlvbjoKCi0gYGRlcGxveS9z" + - "dGFja3Mvc2VsZi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55YW1sYCBmb3IgY29udHJvbC1w" + - "bGFuZQogIHJlZ2lzdHJ5LCBkb21haW4sIEdhdGV3YXksIHJvdXRlcywgYW5kIHNlcnZpY2Ugc2V0" + - "dGluZ3MuCi0gYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50cy88" + - "ZW52Pi55YW1sYCBmb3IgY29tcHV0ZS1wbGFuZQogIHJlZ2lzdHJ5LCBwdWxsIHNlY3JldHMsIGFu" + - "ZCBjb21wdXRlLXJlYWNoYWJsZSBJQ01TLCBSZVZhbCwgYW5kIE5BVFMgdmFsdWVzLgoKRm9yIEVL" + - "UywgdXNlIHRoZSBjYW5vbmljYWwKW0NTUCBFbmQtdG8tRW5kIEV4YW1wbGVdKGh0dHBzOi8vZG9j" + - "cy5udmlkaWEuY29tL252Y2YvdjAuNi4wLXJjL2NzcC1lbmQtdG8tZW5kLWV4YW1wbGUpLgpUaGUg" + - "Y29udHJvbC1wbGFuZSBlbnZpcm9ubWVudCBrZWVwcyB0aGUgRW52b3kgR2F0ZXdheSBjb250cm9s" + - "bGVyIGluCmBlbnZveS1nYXRld2F5LXN5c3RlbWAsIGF0dGFjaGVzIHJvdXRlcyB0byBgR2F0ZXdh" + - "eS9udmNmLWdhdGV3YXlgIGluCmBlbnZveS1nYXRld2F5YCwgYW5kIGVuYWJsZXMgdGhlIE5BVFMg" + - "cm91dGUuIFRoZSBjb21wdXRlLXBsYW5lIGVudmlyb25tZW50IHVzZXMKdGhlIGV4dGVybmFsIGFk" + - "ZHJlc3MgcGx1cyB0aGUgc2VydmljZSBob3N0IG92ZXJyaWRlcy4gSGVyZSwKYDxnYXRld2F5LWFk" + - "ZHJlc3M+YCBpcyB0aGUgTkxCIGFkZHJlc3MgYW5kIGA8Z2F0ZXdheS1kb21haW4+YCBpcyB0aGUg" + - "RE5TIGJhc2UKd2hvc2Ugc2VydmljZSBzdWJkb21haW5zIHJlc29sdmUgdG8gdGhhdCBOTEI6Cgpg" + - "YGB5YW1sCiMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvZW52aXJvbm1lbnRzLzxlbnY+Lnlh" + - "bWwKZ2xvYmFsOgogIGRvbWFpbjogIjxnYXRld2F5LWRvbWFpbj4iCiAgd29ya2VyRW5kcG9pbnRz" + - "OgogICAgbnZjZlNlcnZpY2VVUkw6ICJodHRwOi8vYXBpLjxnYXRld2F5LWRvbWFpbj4iCiAgICBu" + - "dmNmR3JwY1NlcnZpY2VVUkw6ICJodHRwOi8vd29ya2VyLWFwaS48Z2F0ZXdheS1kb21haW4+Igog" + - "ICAgbnZjZk5hdHNTZXJ2aWNlVVJMOiAibmF0czovLzxnYXRld2F5LWFkZHJlc3M+OjQyMjIiCiAg" + - "ICBudmN0U2VydmljZVVSTDogImh0dHA6Ly90YXNrcy48Z2F0ZXdheS1kb21haW4+IgogICAgbnZj" + - "dEdycGNTZXJ2aWNlVVJMOiAiaHR0cDovL3dvcmtlci10YXNrcy48Z2F0ZXdheS1kb21haW4+Igog" + - "ICAgaW52b2NhdGlvblNlcnZpY2VVUkw6ICJodHRwOi8vaW52b2NhdGlvbi48Z2F0ZXdheS1kb21h" + - "aW4+IgoKZ3JwY3Byb3h5OgogIG52Y2ZHcnBjU2VydmljZVVSTDogImh0dHA6Ly9hcGkubnZjZi5z" + - "dmMuY2x1c3Rlci5sb2NhbDo5MDkwIgoKaW5ncmVzczoKICBnYXRld2F5QXBpOgogICAgY29udHJv" + - "bGxlck5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheS1zeXN0ZW0KICAgIGdhdGV3YXlzOgogICAgICBz" + - "aGFyZWQ6IHtuYW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheX0KICAg" + - "ICAgZ3JwYzoge25hbWU6IG52Y2YtZ2F0ZXdheSwgbmFtZXNwYWNlOiBlbnZveS1nYXRld2F5fQog" + - "ICAgICBuYXRzOgogICAgICAgIG5hbWU6IG52Y2YtZ2F0ZXdheQogICAgICAgIG5hbWVzcGFjZTog" + - "ZW52b3ktZ2F0ZXdheQogICAgICAgIGxpc3RlbmVyTmFtZTogbmF0cwogICAgcm91dGVzOgogICAg" + - "ICBudmNmQXBpOgogICAgICAgIGdycGM6CiAgICAgICAgICBlbmFibGVkOiB0cnVlCiAgICAgICAg" + - "ICBob3N0bmFtZXM6IFsid29ya2VyLWFwaS48Z2F0ZXdheS1kb21haW4+Il0KICAgICAgbnZjdEFw" + - "aToKICAgICAgICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAgICAgaG9zdG5h" + - "bWVzOiBbIndvcmtlci10YXNrcy48Z2F0ZXdheS1kb21haW4+Il0KICAgICAgbmF0czoKICAgICAg" + - "ICBlbmFibGVkOiB0cnVlCgpvcGVuYmFvOgogIG1pZ3JhdGlvbnM6CiAgICBpc3N1ZXJEaXNjb3Zl" + - "cnk6CiAgICAgIGVuYWJsZWQ6IHRydWUKYGBgCgpgYGB5YW1sCiMgZGVwbG95L3N0YWNrcy9udmNm" + - "LWNvbXB1dGUtcGxhbmUvZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwKZ2xvYmFsOgogIG52Y2FPcGVy" + - "YXRvcjoKICAgIHNlbGZNYW5hZ2VkOgogICAgICBpY21zU2VydmljZVVSTDogImh0dHA6Ly88Z2F0" + - "ZXdheS1hZGRyZXNzPiIKICAgICAgaWNtc1NlcnZpY2VIb3N0SGVhZGVyT3ZlcnJpZGU6ICJzaXMu" + - "PGdhdGV3YXktZG9tYWluPiIKICAgICAgcmV2YWxTZXJ2aWNlVVJMOiAiaHR0cDovLzxnYXRld2F5" + - "LWFkZHJlc3M+IgogICAgICByZXZhbFNlcnZpY2VIb3N0SGVhZGVyT3ZlcnJpZGU6ICJyZXZhbC48" + - "Z2F0ZXdheS1kb21haW4+IgogICAgICBuYXRzVVJMOiAibmF0czovLzxnYXRld2F5LWFkZHJlc3M+" + - "OjQyMjIiCiAgICAgIG5hdHNIb3N0T3ZlcnJpZGU6ICJuYXRzLjxnYXRld2F5LWRvbWFpbj4iCmBg" + - "YAoKUHJldmlldyBhbmQgaW5zdGFsbCB0aGUgY29udHJvbCBwbGFuZSBhZ2FpbnN0IGl0cyBjb250" + - "ZXh0OgoKYGBgYmFzaAptYWtlIC1DIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIHRlbXBsYXRl" + - "IFwKICBIRUxNRklMRV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklMRT08Y29udHJvbC1wbGFu" + - "ZS1rdWJlY29uZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBpbnN0YWxs" + - "IFwKICBIRUxNRklMRV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklMRT08Y29udHJvbC1wbGFu" + - "ZS1rdWJlY29uZmlnPgpgYGAKCkJlZm9yZSByZWdpc3RlcmluZyB0aHJvdWdoIGEgYmFyZSBHYXRl" + - "d2F5IGFkZHJlc3MsIGNyZWF0ZSBvciB1cGRhdGUgdGhlIENMSQpjb25maWcgcGFzc2VkIGFzIGBO" + - "VkNGX0NMSV9DT05GSUdgOgoKYGBgeWFtbApiYXNlX2h0dHBfdXJsOiAiaHR0cDovLzxnYXRld2F5" + - "LWFkZHJlc3M+IgppbnZva2VfdXJsOiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+IgpiYXNlX2dy" + - "cGNfdXJsOiAiPGdhdGV3YXktYWRkcmVzcz46MTAwODEiCmFwaV9rZXlzX3NlcnZpY2VfdXJsOiAi" + - "aHR0cDovLzxnYXRld2F5LWFkZHJlc3M+IgppY21zX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRy" + - "ZXNzPiIKYXBpX2hvc3Q6ICJhcGkuPGdhdGV3YXktZG9tYWluPiIKYXBpX2tleXNfaG9zdDogImFw" + - "aS1rZXlzLjxnYXRld2F5LWRvbWFpbj4iCmludm9rZV9ob3N0OiAiaW52b2NhdGlvbi48Z2F0ZXdh" + - "eS1kb21haW4+IgppY21zX2hvc3Q6ICJzaXMuPGdhdGV3YXktZG9tYWluPiIKYGBgCgpIb3N0IGZp" + - "ZWxkcyBjb250YWluIGhvc3RuYW1lcyBvbmx5LCB3aXRob3V0IGEgVVJMIHNjaGVtZS4gYElDTVNf" + - "VVJMYCBtYXBzIG9ubHkKdG8gdGhlIHJlZ2lzdHJhdGlvbiBjb21tYW5kJ3MgYC0taWNtcy11cmxg" + - "OyBgaWNtc19ob3N0YCBpbiB0aGUgY29uZmlnIHN1cHBsaWVzCnRoZSBHYXRld2F5IEhvc3QgaGVh" + - "ZGVyLiBUaGVyZSBpcyBubyBgLS1pY21zLWhvc3RgIE1ha2Ugb3IgQ0xJIGZsYWcuCgpSZWdpc3Rl" + - "ciBmcm9tIHRoZSBjb21wdXRlIGNvbnRleHQsIHRoZW4gaW5zdGFsbCB0aGUgY29tcHV0ZSBwbGFu" + - "ZToKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSByZWdp" + - "c3Rlci1jbHVzdGVyIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIE5DQV9JRD08" + - "bmNhLWlkPiBcCiAgQ0xVU1RFUl9SRUdJT049PHJlZ2lvbj4gXAogIElDTVNfVVJMPWh0dHA6Ly88" + - "Z2F0ZXdheS1hZGRyZXNzPiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVj" + - "b25maWc+IFwKICBOVkNGX0NMST08cGF0aC10by1udmNmLWNsaT4gXAogIE5WQ0ZfQ0xJX0NPTkZJ" + - "Rz08cGF0aC10by1udmNmLWNsaS1jb25maWc+CgptYWtlIC1DIGRlcGxveS9zdGFja3MvbnZjZi1j" + - "b21wdXRlLXBsYW5lIGluc3RhbGwgXAogIENMVVNURVJfTkFNRT08Y2x1c3Rlci1uYW1lPiBcCiAg" + - "SEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbXB1dGUtcGxhbmUta3Vi" + - "ZWNvbmZpZz4KYGBgCgpSZWdpc3RyYXRpb24gZGlzY292ZXJzIHRoZSBPSURDIGlzc3VlciBhbmQg" + - "SldLUyBmcm9tIHRoZSBjb21wdXRlIGt1YmUgY29udGV4dC4KSW4gYSBtdWx0aS1jbHVzdGVyIGRl" + - "cGxveW1lbnQsIGBLVUJFQ09ORklHX0ZJTEVgIGlzIHJlcXVpcmVkIG9uIGJvdGgKY29tcHV0ZS1w" + - "bGFuZSBjb21tYW5kcy4gSW4gYSBzYW1lLWNsdXN0ZXIgZGVwbG95bWVudCBpdCBtYXkgYmUgb21p" + - "dHRlZCBvbmx5CndoZW4gdGhlIGFtYmllbnQgY29udGV4dCBpcyBhbHJlYWR5IHRoZSB0YXJnZXQg" + - "Y2x1c3Rlci4KCiMjIENMSSBQcm9maWxlIEZsb3cKClJ1biB0aGUgQ0xJIGNvbnRyb2wtcGxhbmUg" + - "aW5zdGFsbCBmaXJzdC4gSXQgY3JlYXRlcyB0aGUgcHJvZmlsZSBjb25zdW1lZCBieQpjb21wdXRl" + - "LXBsYW5lIHJlZ2lzdHJhdGlvbjoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4g" + - "c2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYt" + - "bWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21w" + - "dXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5l" + - "LWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250" + - "ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSBc" + - "CiAgLS1jbHVzdGVyLW5hbWUgPGNvbnRyb2wtcGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1yZWdp" + - "b24gPHJlZ2lvbj4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+Cgp0ZXN0IC1zIGRlcGxveS9zdGFja3Mv" + - "c2VsZi1tYW5hZ2VkL291dC9jb250cm9sLXBsYW5lLXByb2ZpbGUueWFtbApgYGAKClVzZSB0aGUg" + - "ZnVsbCBwZXJzaXN0ZW50IHByZWZpeCBmb3IgYm90aCBjb21wdXRlLXBsYW5lIGNvbW1hbmRzOgoK" + - "YGBgYmFzaApudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250" + - "cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUt" + - "cGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxl" + - "bnY+IFwKICAtLXBsYWluIFwKICBjb21wdXRlLXBsYW5lIHJlZ2lzdGVyIFwKICAtLWNvbnRyb2wt" + - "cGxhbmUtcHJvZmlsZSBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1wbGFu" + - "ZS1wcm9maWxlLnlhbWwgXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0ZXIt" + - "bmFtZT4gXAogIC0ta3ViZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLXJl" + - "Z2lvbiA8cmVnaW9uPiBcCiAgLS1vdXRwdXQgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxh" + - "bmUvb3V0Lzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWwK" + - "Cm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxh" + - "bmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1z" + - "dGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAog" + - "IC0tcGxhaW4gXAogIGNvbXB1dGUtcGxhbmUgaW5zdGFsbCBcCiAgLS12YWx1ZXMgZGVwbG95L3N0" + - "YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvb3V0Lzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4t" + - "cmVnaXN0ZXItdmFsdWVzLnlhbWwgXAogIC0ta3ViZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNv" + - "bnRleHQ+IFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+CmBg" + - "YAoKUmVnaXN0cmF0aW9uIHNlbGVjdHMgdGhlIHByb2ZpbGUncyBpbi1jbHVzdGVyIG9yIGNvbXB1" + - "dGUtcmVhY2hhYmxlIGVuZHBvaW50cwpmcm9tIHRoZSBjb21wdXRlIGNvbnRleHQgYW5kIHByb2Jl" + - "cyBpdHMgSldLUy4gRG8gbm90IHJlcGxhY2UgcHJvZmlsZSBlbmRwb2ludHMKd2l0aCBoYW5kLWF1" + - "dGhvcmVkIEhlbG1maWxlIGVuZHBvaW50IHZhbHVlcy4KCiMjIFB1bGwgU2VjcmV0cwoKQ3JlYXRl" + - "IHRoZSBjb250cm9sLXBsYW5lIHNlY3JldCBpbiB0aGVzZSBuYW1lc3BhY2VzIG9uIHRoZSBjb250" + - "cm9sLXBsYW5lCmNvbnRleHQ6CgpgYGB0ZXh0CmNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0g" + - "bnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXIKYGBgCgpPbiB0" + - "aGUgY29tcHV0ZSBjb250ZXh0LCBjcmVhdGUgdGhlIHNlY3JldCBvbmx5IGluIGBudmNhLW9wZXJh" + - "dG9yYCBhbmQgcmVmZXJlbmNlCml0IHRocm91Z2ggYGdsb2JhbC5pbWFnZVB1bGxTZWNyZXRzYCBp" + - "biB0aGUgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudC4gVGhlIGNoYXJ0CmFuZCBvcGVyYXRvciB1" + - "c2UgaXQgaW4gYG52Y2Etb3BlcmF0b3JgIGFuZCBtaXJyb3IgaXQgdG8gYG52Y2Etc3lzdGVtYC4g" + - "RG8gbm90IGFkZAplaXRoZXIgbmFtZXNwYWNlIHRvIHRoZSBjb250cm9sLXBsYW5lIGxpc3QuIEZv" + - "ciBjb21tYW5kcyBhbmQgcG9saWN5IGV4YW1wbGVzLApzZWUgW3B1bGwtc2VjcmV0cy5tZF0ocHVs" + - "bC1zZWNyZXRzLm1kKS4KCiMjIFZlcmlmaWNhdGlvbgoKVXNlIHRoZSBleHBsaWNpdCBHYXRld2F5" + - "IG5hbWUgYW5kIG5hbWVzcGFjZToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wt" + - "cGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAtbiBlbnZveS1nYXRl" + - "d2F5IC1vIHdpZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0" + - "IHRjcHJvdXRlIC1uIGVudm95LWdhdGV3YXkKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxh" + - "bmUtY29udGV4dD4gcm9sbG91dCBzdGF0dXMgXAogIGRlcGxveW1lbnQvbnZjYS1vcGVyYXRvciAt" + - "biBudmNhLW9wZXJhdG9yIC0tdGltZW91dD0xMG0Ka3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUt" + - "cGxhbmUtY29udGV4dD4gd2FpdCBcCiAgbnZjZmJhY2tlbmQvPGNvbXB1dGUtcGxhbmUtY2x1c3Rl" + - "ci1uYW1lPiAtbiBudmNhLW9wZXJhdG9yIFwKICAtLWZvcj1qc29ucGF0aD0ney5zdGF0dXMuYWdl" + - "bnRTdGF0dXN9Jz1oZWFsdGh5IC0tdGltZW91dD0xMG0Ka3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1" + - "dGUtcGxhbmUtY29udGV4dD4gZ2V0IHNlY3JldCA8cHVsbC1zZWNyZXQ+IC1uIG52Y2Etc3lzdGVt" + - "CmBgYAoKIyMgVGVhcmRvd24KCkRlc3Ryb3kgYW5kIGRlcmVnaXN0ZXIgZXZlcnkgY29tcHV0ZSBw" + - "bGFuZSBiZWZvcmUgdGhlIGNvbnRyb2wgcGxhbmUuIEJvdGgKaGFuZG9mZnMgY2FuIGRlc3Ryb3kg" + - "dGhlIGNvbnRyb2wgcGxhbmUsIHNvIGFwcGx5IHRoaXMgcHJlZmxpZ2h0IGJlZm9yZSBlaXRoZXIK" + - "b25lLiBQcmVzZXJ2ZSB0aGUgYGNlcnQtbWFuYWdlcmAgbmFtZXNwYWNlIGJ5IGRlZmF1bHQuIE5h" + - "bWVzcGFjZSBwcmVzZXJ2YXRpb24KZG9lcyBub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZS4g" + - "SWRlbnRpZnkgd2hldGhlciBjZXJ0LW1hbmFnZXIgaXMgZXh0ZXJuYWwuCkZvciBhbiBleHRlcm5h" + - "bCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVkOiBm" + - "YWxzZWAKYW5kIGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBhbiBpbnRlbmRlZCBzdGFjay1tYW5h" + - "Z2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUKYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IHRydWVgLCB2" + - "ZXJpZnkgbWF0Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1ldGFkYXRhIGFuZAphYm9ydCBvbiBt" + - "aXNzaW5nIG9yIG1pc21hdGNoZWQgZXZpZGVuY2UuIE9ubHkgcGxhbiBuYW1lc3BhY2UgcmVtb3Zh" + - "bCBhZnRlcgp2ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGdldHRpbmcgZXhwbGlj" + - "aXQgY29uZmlybWF0aW9uOyBvdGhlcndpc2UKZG8gbm90IGRlbGV0ZSBpdC4KCkZvciB0aGUgSGVs" + - "bWZpbGUgdmFsdWVzIGZsb3csIHJldGFpbiBlYWNoIHJlZ2lzdHJhdGlvbiB2YWx1ZXMgZmlsZSB1" + - "bnRpbApjbGVhbnVwIGlzIHZlcmlmaWVkOgoKYGBgYmFzaAptYWtlIC1DIGRlcGxveS9zdGFja3Mv" + - "bnZjZi1jb21wdXRlLXBsYW5lIGRlc3Ryb3kgXAogIENMVVNURVJfTkFNRT08Y2x1c3Rlci1uYW1l" + - "PiBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbXB1dGUtcGxh" + - "bmUta3ViZWNvbmZpZz4KCjxudmNmLWNsaT4gLS1jb25maWcgPGNvbmZpZz4gY2x1c3RlciBkZWxl" + - "dGUgXAogIC0tY2x1c3Rlci1pZCA8Y2x1c3Rlci1pZC1mcm9tLXJlZ2lzdHJhdGlvbi12YWx1ZXM+" + - "IFwKICAtLW5jYS1pZCA8bmNhLWlkPiBcCiAgLS1pZ25vcmUtbWlzc2luZwpgYGAKClJlYWQgYGNs" + - "dXN0ZXJJRGAgYW5kIGBuY2FJRGAgZnJvbQpgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxh" + - "bmUvcmVnaXN0cmF0aW9uLzxjbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYC4KU2hv" + - "dyB0aGUgZXhhY3QgY2x1c3RlciBJRCBhbmQgZ2V0IGNvbmZpcm1hdGlvbiBiZWZvcmUgYGNsdXN0" + - "ZXIgZGVsZXRlYC4gUmVwZWF0CmNvbXB1dGUgZGVzdHJveSBhbmQgZGVyZWdpc3RyYXRpb24gZm9y" + - "IGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciwgdGhlbiBkZXN0cm95IHRoZQpjb250cm9sIHBsYW5lLgoK" + - "YGBgYmFzaApLVUJFQ09ORklHPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+IFwKbWFrZSAtQyBk" + - "ZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBkZXN0cm95IFwKICBIRUxNRklMRV9FTlY9PGVudj4g" + - "XAogIEtVQkVDT05GSUdfRklMRT08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPgpgYGAKCkJvdGgg" + - "YEtVQkVDT05GSUdgIGFuZCBgS1VCRUNPTkZJR19GSUxFYCBhcmUgcmVxdWlyZWQgb24gdGhlIGNv" + - "bnRyb2wtcGxhbmUKZGVzdHJveSBiZWNhdXNlIGl0cyBuYW1lc3BhY2UgY2xlYW51cCB1c2VzIGFt" + - "YmllbnQgYGt1YmVjdGxgLgoKRm9yIHRoZSBDTEkgcHJvZmlsZSBmbG93LCBrZWVwCmBkZXBsb3kv" + - "c3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9vdXQvPGNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFs" + - "dWVzLnlhbWxgCnVudGlsIHRlYXJkb3duIGNvbXBsZXRlcyBiZWNhdXNlIGBkb3duYCByZWFkcyBp" + - "dHMgY2x1c3RlciBJRC4gRmlyc3QgcXVlcnkgdGhlCmxpdmUgcmVnaXN0cmF0aW9uIHNldCB3aXRo" + - "IHRoZSBzYW1lIGNvbXBsZXRlIHBlcnNpc3RlbnQgcHJlZml4OgoKYGBgYmFzaApudmNmLWNsaSAt" + - "LWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNrIGRl" + - "cGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95" + - "L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWluIFwK" + - "ICAtLWNvbnRyb2wtcGxhbmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBcCiAgLS1j" + - "b21wdXRlLXBsYW5lLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gXAogIC0taWNtcy11" + - "cmwgPGNvbXB1dGUtcmVhY2hhYmxlLWljbXMtdXJsPiBcCiAgc3RhdHVzIFwKICAtLWNsdXN0ZXIt" + - "bmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgpg" + - "YGAKClNob3cgdGhlIHJlZ2lzdGVyZWQgY29tcHV0ZS1wbGFuZSBsaXN0LiBOYW1lZC1jbHVzdGVy" + - "IGBkb3duIC0tcGxhbi1vbmx5YCBkb2VzCm5vdCBxdWVyeSBJQ01TLCBzbyBpdCBwcmV2aWV3cyBv" + - "bmx5IHRoYXQgY29tcHV0ZSBwbGFuZSBhbmQgY2Fubm90IHNob3cgdGhlCmNvbmRpdGlvbmFsIGNv" + - "bnRyb2wtcGxhbmUgcmVtb3ZhbC4gSWYgdGhlIHRhcmdldCBpcyB0aGUgbGFzdCByZWdpc3RlcmVk" + - "CmNsdXN0ZXIsIHJlYWwgYGRvd25gIGFsc28gZGVzdHJveXMgdGhlIGNvbnRyb2wgcGxhbmUuIEdl" + - "dCBleHBsaWNpdCBjb25maXJtYXRpb24KZm9yIGJvdGggcmVtb3ZhbHMgYmVmb3JlIGNvbnRpbnVp" + - "bmcuIFRoZW4gcHJldmlldyBhbmQgZXhlY3V0ZSB3aXRoIHRoZSBzYW1lCnByZWZpeDoKCmBgYGJh" + - "c2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1w" + - "bGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5l" + - "LXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBc" + - "CiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + - "dGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+" + - "IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAogIGRvd24gLS1w" + - "bGFuLW9ubHkgXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4g" + - "XAogIC0tbmNhLWlkIDxuY2EtaWQ+CgpudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhv" + - "c3RlZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2Vk" + - "IFwKICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxh" + - "bmUgXAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWluIFwKICAtLWNvbnRyb2wtcGxhbmUtY29udGV4" + - "dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBcCiAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQgPGNv" + - "bXB1dGUtcGxhbmUtY29udGV4dD4gXAogIC0taWNtcy11cmwgPGNvbXB1dGUtcmVhY2hhYmxlLWlj" + - "bXMtdXJsPiBcCiAgZG93biBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rl" + - "ci1uYW1lPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4KYGBgCgpSZXBlYXQgYGRvd25gIGZvciBlYWNo" + - "IGNvbXB1dGUgY2x1c3Rlci4gRWFjaCBydW4gZGVzdHJveXMgdGhhdCBjb21wdXRlIHBsYW5lIGFu" + - "ZAp1bnJlZ2lzdGVycyBpdHMgSUNNUyByb3cuIEl0IHJlbW92ZXMgdGhlIGNvbnRyb2wgcGxhbmUg" + - "b25seSBhZnRlciBubyBjbHVzdGVyCnJlZ2lzdHJhdGlvbnMgcmVtYWluLgpQSwcIlmO8WRIwAAAS" + - "MAAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA7AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1p" + - "bnN0YWxsYXRpb24vcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhIjIERlYnVnZ2luZyBS" + - "ZWZlcmVuY2UKClJlY2lwZXMgZm9yIGRpYWdub3NpbmcgYW5kIGZpeGluZyBjb21tb24gTlZDRiBz" + - "ZWxmLW1hbmFnZWQgc3RhY2sgZmFpbHVyZXMuCgojIyBRdWljayBTdGF0dXMgQ29tbWFuZHMKCmBg" + - "YGJhc2gKIyBBbGwgcG9kcyBhY3Jvc3MgYWxsIG5hbWVzcGFjZXMKa3ViZWN0bCBnZXQgcG9kcyAt" + - "QSAtbyB3aWRlCgojIFBvZHMgaW4gYSBzcGVjaWZpYyBuYW1lc3BhY2UKa3ViZWN0bCBnZXQgcG9k" + - "cyAtbiA8bmFtZXNwYWNlPgoKIyBBbGwgaGVsbSByZWxlYXNlcwpoZWxtIGxpc3QgLUEKCiMgUmVj" + - "ZW50IGV2ZW50cyAobW9zdCB1c2VmdWwgZm9yIGRpYWdub3NpbmcgZmFpbHVyZXMpCmt1YmVjdGwg" + - "Z2V0IGV2ZW50cyAtbiA8bmFtZXNwYWNlPiAtLXNvcnQtYnk9Jy5sYXN0VGltZXN0YW1wJwoKIyBE" + - "ZXNjcmliZSBhIHNwZWNpZmljIHBvZCAoc2hvd3MgZXZlbnRzLCBjb25kaXRpb25zLCB2b2x1bWVz" + - "KQprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+CmBgYAoKIyMg" + - "RmFpbHVyZTogSW1hZ2VQdWxsQmFja09mZgoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAg" + - "ICAgICAgIFJFQURZICAgU1RBVFVTICAgICAgICAgICAgIFJFU1RBUlRTICAgQUdFCmNhc3NhbmRy" + - "YS0wICAgIDAvMSAgICAgSW1hZ2VQdWxsQmFja09mZiAgIDAgICAgICAgICAgNW0KYGBgCgpFdmVu" + - "dHMgc2hvdzoKCmBgYHRleHQKRmFpbGVkIHRvIHB1bGwgaW1hZ2UgIm52Y3IuaW8vLi4uL2ltYWdl" + - "OnRhZyI6IDQwMSBVbmF1dGhvcml6ZWQKYGBgCgojIyMgRGlhZ25vc2lzCgpgYGBiYXNoCiMgQ2hl" + - "Y2sgd2hhdCBpbWFnZSBpcyBmYWlsaW5nCmt1YmVjdGwgZGVzY3JpYmUgcG9kIC1uIDxuYW1lc3Bh" + - "Y2U+IDxwb2QtbmFtZT4gfCBncmVwIC1BNSAiRXZlbnRzOiIKCiMgQ2hlY2sgaWYgcHVsbCBzZWNy" + - "ZXQgZXhpc3RzIGluIHRoZSBuYW1lc3BhY2UKa3ViZWN0bCBnZXQgc2VjcmV0IG52Y3ItY3JlZHMg" + - "LW4gPG5hbWVzcGFjZT4KCiMgQ2hlY2sgaWYgdGhlIHBvZCBzcGVjIGhhcyBpbWFnZVB1bGxTZWNy" + - "ZXRzCmt1YmVjdGwgZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IC1vIGpzb25wYXRo" + - "PSd7LnNwZWMuaW1hZ2VQdWxsU2VjcmV0c30nCgojIENoZWNrIGlmIHRoZSBTZXJ2aWNlQWNjb3Vu" + - "dCBoYXMgaW1hZ2VQdWxsU2VjcmV0cwprdWJlY3RsIGdldCBzYSA8c2EtbmFtZT4gLW4gPG5hbWVz" + - "cGFjZT4gLW8ganNvbnBhdGg9J3suaW1hZ2VQdWxsU2VjcmV0c30nCmBgYAoKIyMjIEZpeGVzCgox" + - "LiAqKlNlY3JldCBtaXNzaW5nIGluIG5hbWVzcGFjZSoqOiBDcmVhdGUgaXQKCiAgIGBgYGJhc2gK" + - "ICAga3ViZWN0bCBjcmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAg" + - "ICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0" + - "aHRva2VuJyBcCiAgICAgLS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgIC0t" + - "bmFtZXNwYWNlPTxuYW1lc3BhY2U+IFwKICAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBr" + - "dWJlY3RsIGFwcGx5IC1mIC0KICAgYGBgCgoyLiAqKlNlY3JldCBleGlzdHMgYnV0IHBvZCBkb2Vz" + - "bid0IHJlZmVyZW5jZSBpdCoqOiBUaGUgY2hhcnQgbmVlZHMgYGltYWdlUHVsbFNlY3JldHNgIGNv" + - "bmZpZ3VyZWQgdmlhIGhlbG1maWxlIHZhbHVlcy4gU2VlIFtwdWxsLXNlY3JldHMubWRdKHB1bGwt" + - "c2VjcmV0cy5tZCkuCgozLiAqKkNoYXJ0IGRvZXNuJ3Qgc3VwcG9ydCBpbWFnZVB1bGxTZWNyZXRz" + - "KiogKG9wZW5iYW8sIGludm9jYXRpb24tc2VydmljZSwgZXNzLWFwaSwgbm90YXJ5LXNlcnZpY2Up" + - "OiBQYXRjaCBTZXJ2aWNlQWNjb3VudHMgYW5kIHJlc3RhcnQgcG9kcy4gU2VlIFtwdWxsLXNlY3Jl" + - "dHMubWRdKHB1bGwtc2VjcmV0cy5tZCkuCgo0LiAqKldyb25nIGNyZWRlbnRpYWxzIGluIHNlY3Jl" + - "dCoqOiBEZWxldGUgYW5kIHJlY3JlYXRlCgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZGVsZXRlIHNl" + - "Y3JldCBudmNyLWNyZWRzIC1uIDxuYW1lc3BhY2U+CiAgICMgUmVjcmVhdGUgd2l0aCBjb3JyZWN0" + - "IGNyZWRlbnRpYWxzCiAgIGBgYAoKIyMgRmFpbHVyZTogSW5pdDowLzEgU3R1Y2sgKFZhdWx0IEFn" + - "ZW50KQoKIyMjIFN5bXB0b21zCgpTZXJ2aWNlIHBvZHMgc3R1Y2sgaW4gYEluaXQ6MC8xYCBmb3Ig" + - "bWludXRlczoKCmBgYGJhc2gKTkFNRSAgICAgICAgICAgICAgICAgICAgICAgIFJFQURZICAgU1RB" + - "VFVTICAgICBSRVNUQVJUUyAgIEFHRQpudmNmLWFwaS03ZjRjNzZmNzg4LTQ0dmx0ICAwLzIgICAg" + - "IEluaXQ6MC8xICAgMCAgICAgICAgICAxMG0KYGBgCgojIyMgRGlhZ25vc2lzCgpUaGUgaW5pdCBj" + - "b250YWluZXIgaXMgdGhlIHZhdWx0LWFnZW50LWluaXQgaW5qZWN0b3Igd2FpdGluZyBmb3IgT3Bl" + - "bkJhby4KCmBgYGJhc2gKIyBDaGVjayBPcGVuQmFvIHBvZHMKa3ViZWN0bCBnZXQgcG9kcyAtbiB2" + - "YXVsdC1zeXN0ZW0KCiMgQ2hlY2sgaWYgT3BlbkJhbyBtaWdyYXRpb24gam9iIHJhbgprdWJlY3Rs" + - "IGdldCBqb2JzIC1uIHZhdWx0LXN5c3RlbQoKIyBDaGVjayBPcGVuQmFvIHBvZCBsb2dzCmt1YmVj" + - "dGwgbG9ncyAtbiB2YXVsdC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXItMCAtYyBvcGVuYmFvCgojIENo" + - "ZWNrIGluaXQgY29udGFpbmVyIGxvZ3Mgb24gdGhlIHN0dWNrIHBvZAprdWJlY3RsIGxvZ3MgLW4g" + - "PG5hbWVzcGFjZT4gPHBvZC1uYW1lPiAtYyB2YXVsdC1hZ2VudC1pbml0CmBgYAoKIyMjIEZpeGVz" + - "CgoxLiAqKk9wZW5CYW8gcG9kcyBub3QgcnVubmluZyoqOiBDaGVjayB0aGVpciBldmVudHMgZm9y" + - "IGltYWdlIHB1bGwgaXNzdWVzLCByZXNvdXJjZSBpc3N1ZXMsIGV0Yy4KCjIuICoqT3BlbkJhbyBt" + - "aWdyYXRpb24gam9iIGRpZG4ndCBydW4qKjogVGhpcyBoYXBwZW5zIHdoZW4gYGhlbG1maWxlIHN5" + - "bmNgIHdhcyBpbnRlcnJ1cHRlZC4gRGVzdHJveSBhbmQgcmUtc3luYyBvcGVuYmFvOgoKICAgYGBg" + - "YmFzaAogICBIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW9wZW5i" + - "YW8tc2VydmVyIGRlc3Ryb3kKICAga3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIHZhdWx0LXN5c3Rl" + - "bQogICBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgdmF1bHQtc3lzdGVtCiAgICMgUmUtY3JlYXRl" + - "IHB1bGwgc2VjcmV0IGlmIG5lZWRlZAogICBIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1z" + - "ZWxlY3RvciBuYW1lPW9wZW5iYW8tc2VydmVyIHN5bmMKICAgYGBgCgozLiAqKk9wZW5CYW8gcG9k" + - "cyBydW5uaW5nIGJ1dCBub3QgaW5pdGlhbGl6ZWQqKjogQ2hlY2sgdW5zZWFsIHN0YXR1czoKCiAg" + - "IGBgYGJhc2gKICAga3ViZWN0bCBleGVjIC1uIHZhdWx0LXN5c3RlbSBvcGVuYmFvLXNlcnZlci0w" + - "IC1jIG9wZW5iYW8gLS0gYmFvIHN0YXR1cwogICBgYGAKCjQuICoqYHZhdWx0LWFnZW50LWluaXRg" + - "IGxvZ3MgYGF1dGgvand0L2xvZ2luYCAtPiBgNDAwIC4uLiBubyBrbm93biBrZXkgc3VjY2Vzc2Z1" + - "bGx5IHZhbGlkYXRlZCB0aGUgdG9rZW4gc2lnbmF0dXJlYCoqCiAgIChjb21tb24gb24gQUtTLCBh" + - "bmQgb24gYW55IGNsdXN0ZXIgd2hvc2UgT0lEQyBpc3N1ZXIgcHVibGlzaGVzIGEgcm90YXRpbmcg" + - "bXVsdGkta2V5IEpXS1MpOgogICB0aGUgT3BlbkJhbyBgYXV0aC9qd3RgIG1ldGhvZCB3YXMgY29u" + - "ZmlndXJlZCB3aXRoIGEgc2luZ2xlIHN0YXRpYyBtb3VudGVkIHB1YmxpYyBrZXkKICAgKGBqd3Rf" + - "dmFsaWRhdGlvbl9wdWJrZXlzYCkgaW5zdGVhZCBvZiB0aGUgaXNzdWVyJ3MgbGl2ZSBKV0tTLCBz" + - "byBpdCBjYW5ub3QgdmFsaWRhdGUgdGhlCiAgIGNsdXN0ZXItc2lnbmVkIFNlcnZpY2VBY2NvdW50" + - "IHRva2VucyB0aGUgdmF1bHQtYWdlbnRzIHByZXNlbnQuIEV2ZXJ5IHNlcnZpY2UncwogICBgdmF1" + - "bHQtYWdlbnQtaW5pdGAgdGhlbiBsb29wcyBvbiB0aGF0IDQwMCBhbmQgdGhlIHBvZCBuZXZlciBs" + - "ZWF2ZXMgYEluaXQ6MC8xYC4gVGhpcyBpcyB0aGUKICAgYmVoYXZpb3Igb2YgdGhlIGJhc2UgZGVm" + - "YXVsdCBgb3BlbmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkOiBmYWxzZWA7" + - "IHRoZQogICBtaWdyYXRpb24gbG9nIHNob3dzIGBPSURDIGlzc3VlciBkaXNjb3ZlcnkgaXMgZGlz" + - "YWJsZWQuIFVzaW5nIFNlcnZpY2VBY2NvdW50IGlzc3VlciBhbmQKICAgbW91bnRlZCBwdWJsaWMg" + - "a2V5IGZhbGxiYWNrYC4gRW5hYmxlIGlzc3VlciBkaXNjb3Zlcnkgc28gdGhlIG1pZ3JhdGlvbiB1" + - "c2VzIHRoZSBsaXZlIEpXS1MsCiAgIHRoZW4gcmUtcnVuIGl0OgoKICAgYGBgYmFzaAogICAjIElu" + - "IHlvdXIgZW52IHZhbHVlcyAoZS5nLiBlbnZpcm9ubWVudHMvPGVudj4ueWFtbCksIHNldDoKICAg" + - "IyAgIG9wZW5iYW86CiAgICMgICAgIG1pZ3JhdGlvbnM6CiAgICMgICAgICAgaXNzdWVyRGlzY292" + - "ZXJ5OgogICAjICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICBrdWJlY3RsIGRlbGV0ZSBqb2IgLW4g" + - "dmF1bHQtc3lzdGVtIG9wZW5iYW8tc2VydmVyLW1pZ3JhdGlvbnMKICAgSEVMTUZJTEVfRU5WPTxl" + - "bnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBzeW5jCiAgIGBgYAoK" + - "ICAgVGhlIG1pZ3JhdGlvbiBsb2cgc2hvdWxkIHRoZW4gc2hvdyBgUmVjZWl2ZWQgZGlzY292ZXJ5" + - "IGRvY3VtZW50IGZyb20KICAgLi4uLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uYCBh" + - "bmQgYEZpbmFsIE9wZW5CYW8gSldUIEpXS1MgVVJMIHNldCB0bzoKICAgLi4uL29wZW5pZC92MS9q" + - "d2tzYCwgYW5kIHRoZSBzZXJ2aWNlIHBvZHMgYXV0aGVudGljYXRlIGFuZCByZWFjaCBSZWFkeSB3" + - "aXRoaW4gfjEgbWluLgogICBBS1MgY2x1c3RlcnMgd2l0aCB0aGUgY2x1c3RlciBPSURDIGlzc3Vl" + - "ciBlbmFibGVkICh0aGUgYGFrcy1jbHVzdGVyYCBkZWZhdWx0KSBhbHdheXMgbmVlZAogICB0aGlz" + - "IGJlY2F1c2UgdGhlIHN0YXRpYy1wdWJrZXkgZmFsbGJhY2sgY2Fubm90IG1hdGNoIHRoZSBpc3N1" + - "ZXIncyByb3RhdGluZyBzaWduaW5nIGtleXMuCgojIyBGYWlsdXJlOiBPT01LaWxsZWQgb24gQ2Fz" + - "c2FuZHJhCgojIyMgU3ltcHRvbXMKCmBgYHRleHQKTkFNRSAgICAgICAgICBSRUFEWSAgIFNUQVRV" + - "UyAgICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5kcmEtMCAgIDAvMSAgICAgT09NS2lsbGVkICAzICAg" + - "ICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAprdWJlY3RsIGRlc2NyaWJlIHBv" + - "ZCAtbiBjYXNzYW5kcmEtc3lzdGVtIGNhc3NhbmRyYS0wIHwgZ3JlcCAtQTMgIkxhc3QgU3RhdGUi" + - "CmBgYAoKIyMjIEZpeAoKT3ZlcnJpZGUgQ2Fzc2FuZHJhIHJlc291cmNlcyB2aWEgaGVsbWZpbGUg" + - "dmFsdWVzLiBTZWUgRXhhbXBsZSAxIGluCltleGFtcGxlcy5tZF0oLi4vZXhhbXBsZXMubWQpLgoK" + - "YGBgeWFtbAotIGNhc3NhbmRyYToKICAgIHJlc291cmNlczoKICAgICAgbGltaXRzOgogICAgICAg" + - "IGNwdTogIjgiCiAgICAgICAgbWVtb3J5OiA4MTkyTWkKICAgICAgcmVxdWVzdHM6CiAgICAgICAg" + - "Y3B1OiAiMiIKICAgICAgICBtZW1vcnk6IDQwOTZNaQpgYGAKCk5vdGU6IGByZXNvdXJjZVByZXNl" + - "dGAgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgTlZDRiBjYXNzYW5kcmEgd3JhcHBlciBjaGFydC4g" + - "VXNlIGV4cGxpY2l0IGByZXNvdXJjZXNgLgoKIyMgRmFpbHVyZTogUG9kcyBTdHVjayBpbiBQZW5k" + - "aW5nCgojIyMgU3ltcHRvbXMKCmBgYHRleHQKTkFNRSAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAg" + - "ICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5kcmEtMCAgIDAvMSAgICAgUGVuZGluZyAgIDAgICAgICAg" + - "ICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIGV2ZW50cyBmb3Igc2No" + - "ZWR1bGluZyBmYWlsdXJlcwprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9k" + - "LW5hbWU+CgojIENvbW1vbiBjYXVzZXM6CiMgLSAiMC8xMiBub2RlcyBhcmUgYXZhaWxhYmxlOiAx" + - "MiBub2RlKHMpIGRpZG4ndCBtYXRjaCBQb2QncyBub2RlIGFmZmluaXR5IgojIC0gIjAvMTIgbm9k" + - "ZXMgYXJlIGF2YWlsYWJsZTogMTIgSW5zdWZmaWNpZW50IG1lbW9yeSIKIyAtICJwZXJzaXN0ZW50" + - "dm9sdW1lY2xhaW0gbm90IGZvdW5kIgpgYGAKCiMjIyBGaXhlcwoKMS4gKipOb2RlIHNlbGVjdG9y" + - "IG1pc21hdGNoKio6IENoZWNrIGBub2RlU2VsZWN0b3JzYCBpbiBlbnZpcm9ubWVudCBmaWxlCgog" + - "ICBgYGBiYXNoCiAgIGt1YmVjdGwgZ2V0IG5vZGVzIC0tc2hvdy1sYWJlbHMgfCBncmVwIG52Y2YK" + - "ICAgYGBgCgoyLiAqKlN0b3JhZ2UgY2xhc3Mgbm90IGZvdW5kKio6IENoZWNrIHN0b3JhZ2UgY2xh" + - "c3MgZXhpc3RzCgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZ2V0IHN0b3JhZ2VjbGFzcwogICBgYGAK" + - "CjMuICoqSW5zdWZmaWNpZW50IHJlc291cmNlcyoqOiBDaGVjayBub2RlIGNhcGFjaXR5CgogICBg" + - "YGBiYXNoCiAgIGt1YmVjdGwgZGVzY3JpYmUgbm9kZSA8bm9kZS1uYW1lPiB8IGdyZXAgLUE1ICJB" + - "bGxvY2F0ZWQgcmVzb3VyY2VzIgogICBgYGAKCiMjIEZhaWx1cmU6IEhlbG0gUmVsZWFzZSBpbiBG" + - "YWlsZWQgU3RhdGUKCiMjIyBTeW1wdG9tcwoKYGBgYmFzaApoZWxtIGxpc3QgLUEKIyBTaG93cyBy" + - "ZWxlYXNlIHdpdGggU1RBVFVTOiBmYWlsZWQKYGBgCgpSZS1ydW5uaW5nIGBoZWxtZmlsZSBzeW5j" + - "YCBhcHBlYXJzIHRvIHN1Y2NlZWQgYnV0IHNlcnZpY2VzIGRvbid0IHdvcmsgKG1pZ3JhdGlvbnMg" + - "c2tpcHBlZCkuCgojIyMgRGlhZ25vc2lzCgpgYGBiYXNoCmhlbG0gaGlzdG9yeSA8cmVsZWFzZS1u" + - "YW1lPiAtbiA8bmFtZXNwYWNlPgpgYGAKCiMjIyBGaXgKCk11c3QgZGVzdHJveSB0aGUgZmFpbGVk" + - "IHJlbGVhc2UgYW5kIHJlLXN5bmMgKG5vdCBqdXN0IGFwcGx5KToKCmBgYGJhc2gKSEVMTUZJTEVf" + - "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT08cmVsZWFzZT4gZGVzdHJveQojIElm" + - "IG5hbWVzcGFjZSBuZWVkcyBjbGVhbnVwOgprdWJlY3RsIGRlbGV0ZSBuYW1lc3BhY2UgPG5hbWVz" + - "cGFjZT4Ka3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIDxuYW1lc3BhY2U+CiMgUmUtY3JlYXRlIHB1" + - "bGwgc2VjcmV0IGlmIG5lZWRlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3Rv" + - "ciBuYW1lPTxyZWxlYXNlPiBzeW5jCmBgYAoKIyMgRmFpbHVyZTogQWNjb3VudCBCb290c3RyYXAg" + - "Sm9iIEZhaWxlZAoKIyMjIFN5bXB0b21zCgpTZXJ2aWNlcyBkZXBsb3kgYnV0IGZ1bmN0aW9ucyBj" + - "YW4ndCBiZSBjcmVhdGVkLiBFdmVudHMgc2hvdyBib290c3RyYXAgam9iIGZhaWx1cmUuCgojIyMg" + - "RGlhZ25vc2lzCgpgYGBiYXNoCiMgQ2hlY2sgYm9vdHN0cmFwIGpvYiBzdGF0dXMKa3ViZWN0bCBn" + - "ZXQgam9icyAtbiBudmNmCgojIEdldCBsb2dzIChqb2IgYXV0by1kZWxldGVzIGFmdGVyIH41IG1p" + - "bnV0ZXMpCmt1YmVjdGwgbG9ncyBqb2IvbnZjZi1hcGktYWNjb3VudC1ib290c3RyYXAgLW4gbnZj" + - "ZgoKIyBDaGVjayBBUEkgbG9ncwprdWJlY3RsIGxvZ3MgLW4gbnZjZiAtbCBhcHAua3ViZXJuZXRl" + - "cy5pby9uYW1lPW52Y2YtYXBpIC0tdGFpbD0xMDAKYGBgCgojIyMgQ29tbW9uIENhdXNlcwoKMS4g" + - "KipXcm9uZyBiYXNlNjQgY3JlZGVudGlhbHMqKjogQ3JlZGVudGlhbHMgaW4gYHNlY3JldHMvPGVu" + - "dj4tc2VjcmV0cy55YW1sYCBtdXN0IGJlIGAkb2F1dGh0b2tlbjpBUElfS0VZYCBiYXNlNjQtZW5j" + - "b2RlZCwgbm90IGp1c3QgdGhlIEFQSSBrZXkKCiAgIGBgYGJhc2gKICAgIyBWZXJpZnkgeW91ciBl" + - "bmNvZGVkIGNyZWRlbnRpYWwKICAgZWNobyAnWU9VUl9CQVNFNjRfU1RSSU5HJyB8IGJhc2U2NCAt" + - "ZAogICAjIFNob3VsZCBvdXRwdXQ6ICRvYXV0aHRva2VuOm52YXBpLXh4eHh4CiAgIGBgYAoKMi4g" + - "KipSZWdpc3RyeSB1bnJlYWNoYWJsZSoqOiBBUEkgY2FuJ3QgcmVhY2ggdGhlIHJlZ2lzdHJ5IHNw" + - "ZWNpZmllZCBpbiBgYWNjb3VudEJvb3RzdHJhcC5yZWdpc3RyeUNyZWRlbnRpYWxzYAoKIyMjIEZp" + - "eAoKRml4IGNyZWRlbnRpYWxzIGluIHNlY3JldHMgZmlsZSwgdGhlbiByZWNvdmVyIHNlcnZpY2Vz" + - "IHdpdGhvdXQgZGVzdHJveWluZyBkZXBlbmRlbmNpZXM6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08" + - "ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9c2VydmljZXMgZGVzdHJveQpr" + - "dWJlY3RsIGRlbGV0ZSBuYW1lc3BhY2UgbnZjZiBhcGkta2V5cyBlc3Mgc2lzIC0taWdub3JlLW5v" + - "dC1mb3VuZAprdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgbnZjZiAmJiBrdWJlY3RsIGNyZWF0ZSBu" + - "YW1lc3BhY2UgYXBpLWtleXMgJiYgXAogIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBlc3MgJiYg" + - "a3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIHNpcwojIFJlLWNyZWF0ZSBwdWxsIHNlY3JldHMgaWYg" + - "bmVlZGVkCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3Jv" + - "dXA9c2VydmljZXMgc3luYwpgYGAKCiMjIEZhaWx1cmU6IE5WQ0EgQ2xlYW51cCBTdHVjayAoRmlu" + - "YWxpemVycykKCiMjIyBTeW1wdG9tcwoKQ29tcHV0ZS1wbGFuZSBjbGVhbnVwIGhhbmdzLiBOYW1l" + - "c3BhY2VzCnN0dWNrIGluIGBUZXJtaW5hdGluZ2A6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IG5zCiMg" + - "bnZjYS1vcGVyYXRvciAgICBUZXJtaW5hdGluZyAgIDEwbQojIG52Y2YtYmFja2VuZCAgICAgVGVy" + - "bWluYXRpbmcgICAxMG0KYGBgCgojIyMgRml4CgpSdW4gdGhpcyBvbmx5IGFnYWluc3QgdGhlIGNv" + - "bXB1dGUgY29udGV4dCwgYWZ0ZXIgdGhlIG5vcm1hbCBjb21wdXRlLXBsYW5lCnRlYXJkb3duIGhh" + - "cyBmYWlsZWQuIFJlbW92ZSBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgY3VzdG9tIHJlc291" + - "cmNlcyBhbmQKZm9yY2UtZGVsZXRlIHN0dWNrIG5hbWVzcGFjZXM6CgpgYGBiYXNoCmV4cG9ydCBD" + - "T01QVVRFX0NPTlRFWFQ9PGNvbXB1dGUtcGxhbmUtY29udGV4dD4KCiMgUmVtb3ZlIGZpbmFsaXpl" + - "cnMgZnJvbSBOVkNGQmFja2VuZCByZXNvdXJjZXMKa3ViZWN0bCAtLWNvbnRleHQgIiRDT01QVVRF" + - "X0NPTlRFWFQiIGdldCBudmNmYmFja2VuZHMgLUEgLW8ganNvbiB8IFwKICBqcSAnLml0ZW1zW10g" + - "fCAubWV0YWRhdGEubmFtZXNwYWNlICsgIi8iICsgLm1ldGFkYXRhLm5hbWUnIC1yIHwgXAogIHhh" + - "cmdzIC1Je30gc2ggLWMgJ2NvbnRleHQ9IiQxIjsgbnM9IiR7MiUlLyp9IjsgbmFtZT0iJHsyIyMq" + - "L30iOyBrdWJlY3RsIC0tY29udGV4dCAiJGNvbnRleHQiIHBhdGNoIG52Y2ZiYWNrZW5kICIkbmFt" + - "ZSIgLW4gIiRucyIgLS10eXBlPW1lcmdlIC1wICJ7XCJtZXRhZGF0YVwiOntcImZpbmFsaXplcnNc" + - "IjpbXX19IicgXyAiJENPTVBVVEVfQ09OVEVYVCIge30KCiMgRm9yY2UtZGVsZXRlIHN0dWNrIG5h" + - "bWVzcGFjZXMgYnkgY2xlYXJpbmcgdGhlaXIgZmluYWxpemVycwpmb3IgbnMgaW4gbnZjYS1vcGVy" + - "YXRvciBudmNmLWJhY2tlbmQ7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgIiRDT01QVVRFX0NPTlRF" + - "WFQiIGdldCBuYW1lc3BhY2UgIiRucyIgLW8ganNvbiAyPi9kZXYvbnVsbCB8IFwKICAgIGpxICcu" + - "c3BlYy5maW5hbGl6ZXJzID0gW10nIHwgXAogICAga3ViZWN0bCAtLWNvbnRleHQgIiRDT01QVVRF" + - "X0NPTlRFWFQiIHJlcGxhY2UgXAogICAgICAtLXJhdyAiL2FwaS92MS9uYW1lc3BhY2VzLyRucy9m" + - "aW5hbGl6ZSIgLWYgLSAyPi9kZXYvbnVsbApkb25lCmBgYAoKIyMgRmFpbHVyZTogTlZDQSBPcGVy" + - "YXRvciBNaXNzaW5nIG9yIE5vdCBSZWFkeQoKIyMjIFN5bXB0b21zCgpBZnRlciBjb21wdXRlLXBs" + - "YW5lIGluc3RhbGwgY29tcGxldGVzLCBubyBgbnZjYS1vcGVyYXRvcmAgRGVwbG95bWVudCBleGlz" + - "dHMsIG9yCml0IGV4aXN0cyBidXQgcG9kcyBhcmUgbm90IHJlYWR5OgoKYGBgYmFzaAprdWJlY3Rs" + - "IC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgZGVwbG95bWVudCBudmNhLW9w" + - "ZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBs" + - "YW5lLWNvbnRleHQ+IGdldCBwb2RzIC1uIG52Y2Etb3BlcmF0b3IKYGBgCgojIyMgRGlhZ25vc2lz" + - "IGFuZCBGaXhlcwoKRmlyc3QgaWRlbnRpZnkgd2hldGhlciB0aGUgaW5zdGFsbGF0aW9uIHVzZWQg" + - "dGhlIEhlbG1maWxlIHZhbHVlcyBmbG93IG9yIHRoZQpDTEkgcHJvZmlsZSBmbG93LiBSZS1ydW4g" + - "b25seSB0aGF0IGZsb3cncyByZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlvbiBzdGVwcwpmcm9t" + - "IFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxs" + - "YXRpb24ubWQpLiBEbyBub3QKc3Vic3RpdHV0ZSBvbmUgaGFuZG9mZiBmb3IgdGhlIG90aGVyLgoK" + - "SWYgaW5zdGFsbGF0aW9uIHN1Y2NlZWRzIGJ1dCBwb2RzIHN0aWxsIGZhaWwsIGluc3BlY3QgdGhl" + - "IGNvbXB1dGUgY29udGV4dDoKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxh" + - "bmUtY29udGV4dD4gZGVzY3JpYmUgZGVwbG95IG52Y2Etb3BlcmF0b3IgXAogIC1uIG52Y2Etb3Bl" + - "cmF0b3IKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gbG9ncyBkZXBs" + - "b3ltZW50L252Y2Etb3BlcmF0b3IgXAogIC1uIG52Y2Etb3BlcmF0b3IgLS10YWlsPTIwMAprdWJl" + - "Y3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgbnZjZmJhY2tlbmQgLW4g" + - "bnZjYS1vcGVyYXRvcgpgYGAKCkZvciBwcml2YXRlIHJlZ2lzdHJ5IGZhaWx1cmVzLCB2ZXJpZnkg" + - "dGhhdCB0aGUgcHVsbCBzZWNyZXQgZXhpc3RzIGluCmBudmNhLW9wZXJhdG9yYC4gVGhlIGNoYXJ0" + - "IGFuZCBvcGVyYXRvciBtaXJyb3IgaXQgdG8gYG52Y2Etc3lzdGVtYDsgZG8gbm90IHVzZSBhCmJy" + - "b2FkZXIgbWFudWFsIG5hbWVzcGFjZSBsb29wLiBTZWUKW3B1bGwtc2VjcmV0cy5tZF0ocHVsbC1z" + - "ZWNyZXRzLm1kI2NvbXB1dGUtcGxhbmUtc2VjcmV0KS4KCiMjIEZhaWx1cmU6IEdhdGV3YXkgRW5k" + - "cG9pbnQgQ2hhbmdlZAoKIyMjIFN5bXB0b21zCgpSZXF1ZXN0cyB0aHJvdWdoIHRoZSBjb25maWd1" + - "cmVkIHJvdXRlIGRvbWFpbiBmYWlsIGFmdGVyIHRoZSBHYXRld2F5IG9yIGl0cyBsb2FkIGJhbGFu" + - "Y2VyIGlzIHJlcGxhY2VkLiBUaGUgR2F0ZXdheSByZXBvcnRzIGEgbmV3IGVuZHBvaW50LgoKIyMj" + - "IERpYWdub3NpcwoKYGBgYmFzaApHQVRFV0FZX0FERFI9JChrdWJlY3RsIC0tY29udGV4dCA8Y29u" + - "dHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1nYXRld2F5IC1uIGVudm95" + - "LWdhdGV3YXkgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFsdWV9JykK" + - "dGVzdCAtbiAiJEdBVEVXQVlfQUREUiIKZGlnICtzaG9ydCAiYXBpLjxkb21haW4+IgpjdXJsIC1I" + - "ICJIb3N0OiBhcGkuPGRvbWFpbj4iICJodHRwOi8vJEdBVEVXQVlfQUREUi9oZWFsdGgiCgojIENo" + - "ZWNrIGRpcmVjdCBhZGRyZXNzIGZpZWxkcyB1c2VkIGJ5IGEgc3BsaXQgZGVwbG95bWVudApncmVw" + - "IG52Y2ZOYXRzU2VydmljZVVSTCBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9lbnZpcm9ubWVu" + - "dHMvPGVudj4ueWFtbApncmVwIC1FICdpY21zU2VydmljZXxyZXZhbFNlcnZpY2V8bmF0cycgXAog" + - "IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1s" + - "CmBgYAoKIyMjIEZpeAoKS2VlcCBgZ2xvYmFsLmRvbWFpbmAsIHJvdXRlIGhvc3RuYW1lcywgYW5k" + - "IEhvc3Qgb3ZlcnJpZGVzIHVuY2hhbmdlZC4gVXBkYXRlIEROUwpvciB0aGUgZGlyZWN0IGNsaWVu" + - "dCBkZXN0aW5hdGlvbi4gRm9yIHNwbGl0IGRlcGxveW1lbnRzLCB1cGRhdGUgb25seSBkaXJlY3QK" + - "R2F0ZXdheS1hZGRyZXNzIGZpZWxkcyBhbmQgcmVmcmVzaCByZWdpc3RyYXRpb24gYW5kIGluc3Rh" + - "bGxhdGlvbiB0aHJvdWdoIHRoZQpzYW1lIHNlbGVjdGVkIGhhbmRvZmYuIFNlZQpbRXhhbXBsZSA0" + - "XSguLi9leGFtcGxlcy5tZCNleGFtcGxlLTQtcmVjb3Zlci1mcm9tLWEtZ2F0ZXdheS1lbmRwb2lu" + - "dC1jaGFuZ2UpLgoKIyMgVXNlZnVsIE5hbWVzcGFjZS10by1TZXJ2aWNlIE1hcHBpbmcKClF1aWNr" + - "IHJlZmVyZW5jZSBmb3Igd2hpY2ggc2VydmljZXMgcnVuIGluIHdoaWNoIG5hbWVzcGFjZToKCnwg" + - "TmFtZXNwYWNlIHwgU2VydmljZXMgfAp8LS0tLS0tLS0tLS18LS0tLS0tLS0tLXwKfCBuYXRzLXN5" + - "c3RlbSB8IG5hdHMgfAp8IGNhc3NhbmRyYS1zeXN0ZW0gfCBjYXNzYW5kcmEgfAp8IHZhdWx0LXN5" + - "c3RlbSB8IG9wZW5iYW8tc2VydmVyIHwKfCBudmNmIHwgYXBpLCBpbnZvY2F0aW9uLXNlcnZpY2Us" + - "IGdycGMtcHJveHksIG5vdGFyeS1zZXJ2aWNlLCByZXZhbCwgbGxtLXJlcXVlc3Qtcm91dGVyLCBs" + - "bG0tYXBpLWdhdGV3YXkgfAp8IGFwaS1rZXlzIHwgYXBpLWtleXMsIGFkbWluLWlzc3Vlci1wcm94" + - "eSB8CnwgZXNzIHwgZXNzLWFwaSB8Cnwgc2lzIHwgc2lzIHwKfCBlbnZveS1nYXRld2F5LXN5c3Rl" + - "bSB8IGVudm95IGdhdGV3YXkgKGluZ3Jlc3MgY29udHJvbGxlcikgfAp8IGVudm95LWdhdGV3YXkg" + - "fCBnYXRld2F5IHJlc291cmNlICsgcm91dGVzIHwKUEsHCLV6cDu1MAAAtTAAAFBLAwQUAAgAAAAA" + - "ACEAAAAAAAAAAAAAAAAARAAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3Jl" + - "ZmVyZW5jZXMvaGVsbWZpbGUtc3RydWN0dXJlLm1kVVQFAAEAps4SIyBIZWxtZmlsZSBTdHJ1Y3R1" + - "cmUgUmVmZXJlbmNlCgojIyBEaXJlY3RvcnkgTGF5b3V0CgpgYGBiYXNoCm52Y2Ytc2VsZi1tYW5h" + - "Z2VkLXN0YWNrLwp8LS0gaGVsbWZpbGUuZC8KfCAgIHwtLSAwMS1kZXBlbmRlbmNpZXMueWFtbC5n" + - "b3RtcGwgICMgTkFUUywgQ2Fzc2FuZHJhLCBPcGVuQmFvCnwgICB8LS0gMDItY29yZS55YW1sLmdv" + - "dG1wbCAgICAgICAgICAjIE5WQ0Ygc2VydmljZXMgKyBpbmdyZXNzCnwgICBgLS0gMDMtb2JzZXJ2" + - "YWJpbGl0eS55YW1sLmdvdG1wbCAjIE9ic2VydmFiaWxpdHkgc3RhY2sgKG9wdGlvbmFsKQp8LS0g" + - "ZW52aXJvbm1lbnRzLwp8ICAgfC0tIGJhc2UueWFtbCAgICAgICAgICAgICAgICAgICAgIyBEZWZh" + - "dWx0IHZhbHVlcyAoYWxsIGVudmlyb25tZW50cykKfCAgIGAtLSA8ZW52LW5hbWU+LnlhbWwgICAg" + - "ICAgICAgICAgICMgUGVyLWVudmlyb25tZW50IG92ZXJyaWRlcwp8LS0gc2VjcmV0cy8KfCAgIGAt" + - "LSA8ZW52LW5hbWU+LXNlY3JldHMueWFtbCAgICAgICMgU2Vuc2l0aXZlIHZhbHVlcyAocmVnaXN0" + - "cnkgY3JlZHMsIHBhc3N3b3JkcykKYC0tIGdsb2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAg" + - "ICMgR28gdGVtcGxhdGUgdGhhdCBjb25zdHJ1Y3RzIHBlci1jaGFydCB2YWx1ZXMKCm52Y2YtY29t" + - "cHV0ZS1wbGFuZS1zdGFjay8KfC0tIGhlbG1maWxlLmQvCnwgICB8LS0gMDEtZGVwZW5kZW5jaWVz" + - "LnlhbWwuZ290bXBsICAjIENvbXB1dGUgcGxhbmUgZGVwZW5kZW5jeSBjb21wb25lbnRzCnwgICBg" + - "LS0gMDItbnZjYS55YW1sLmdvdG1wbCAgICAgICAgICAjIG52Y2Etb3BlcmF0b3IgY2hhcnQgYW5k" + - "IG52Y2EgY29uZmlndXJhdGlvbgp8LS0gZW52aXJvbm1lbnRzLwp8ICAgfC0tIGJhc2UueWFtbCAg" + - "ICAgICAgICAgICAgICAgICAgIyBEZWZhdWx0IHZhbHVlcyAoYWxsIGVudmlyb25tZW50cykKfCAg" + - "IGAtLSA8ZW52LW5hbWU+LnlhbWwgICAgICAgICAgICAgICMgUGVyLWVudmlyb25tZW50IG92ZXJy" + - "aWRlcwpgLS0gZ2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAgIyBHbyB0ZW1wbGF0ZSB0" + - "aGF0IGNvbnN0cnVjdHMgcGVyLWNoYXJ0IHZhbHVlcwpgYGAKClRoZXNlIHN0YWNrcyBoYXZlIHNl" + - "cGFyYXRlIGVudmlyb25tZW50cyBhbmQgY2x1c3RlciBjb250ZXh0cy4gVGhlIEhlbG1maWxlCnZh" + - "bHVlcyBmbG93IGF1dGhvcnMgYm90aCBlbnZpcm9ubWVudCBmaWxlcy4gVGhlIENMSSBwcm9maWxl" + - "IGZsb3cgaW5zdGVhZCB1c2VzCnRoZSBDTEktZ2VuZXJhdGVkIGNvbnRyb2wtcGxhbmUgcHJvZmls" + - "ZSBhcyBpdHMgZW5kcG9pbnQgc291cmNlLiBEbyBub3QgbWl4IHRoZQpoYW5kb2Zmcy4gU2VlIFtT" + - "cGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRp" + - "b24ubWQpLgoKIyMgR290bXBsIEZpbGVzIGFuZCBUaGVpciBSZWxlYXNlcwoKIyMjIDAxLWRlcGVu" + - "ZGVuY2llcy55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBOb3Rl" + - "cyB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IG5hdHMgfCBoZWxt" + - "LW52Y2YtbmF0cyB8IG5hdHMtc3lzdGVtIHwgTWVzc2FnaW5nIHwKfCBvcGVuYmFvLXNlcnZlciB8" + - "IGhlbG0tbnZjZi1vcGVuYmFvLXNlcnZlciB8IHZhdWx0LXN5c3RlbSB8IFNlY3JldHMgbWFuYWdl" + - "bWVudCwgZGVwZW5kcyBvbiBuYXRzIHwKfCBjYXNzYW5kcmEgfCBoZWxtLW52Y2YtY2Fzc2FuZHJh" + - "IHwgY2Fzc2FuZHJhLXN5c3RlbSB8IERhdGFiYXNlIHwKClVzZXMgYDw8OiAqZGVwZW5kZW5jeWAg" + - "dGVtcGxhdGUgaW5oZXJpdGFuY2Ugd2l0aCBgcmVsZWFzZS1ncm91cDogZGVwZW5kZW5jaWVzYCBs" + - "YWJlbC4KCiMjIyAwMi1jb3JlLnlhbWwuZ290bXBsCgp8IFJlbGVhc2UgfCBDaGFydCB8IE5hbWVz" + - "cGFjZSB8IExhYmVsIHwKfC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS18Cnwg" + - "YXBpLWtleXMgfCBoZWxtLW52Y2YtYXBpLWtleXMgfCBhcGkta2V5cyB8IHNlcnZpY2VzIHwKfCBz" + - "aXMgfCBoZWxtLW52Y2Ytc2lzIHwgc2lzIHwgc2VydmljZXMgfAp8IGFwaSB8IGhlbG0tbnZjZi1h" + - "cGkgfCBudmNmIHwgc2VydmljZXMgfAp8IGludm9jYXRpb24tc2VydmljZSB8IGhlbG0tbnZjZi1p" + - "bnZvY2F0aW9uLXNlcnZpY2UgfCBudmNmIHwgc2VydmljZXMgfAp8IGdycGMtcHJveHkgfCBoZWxt" + - "LW52Y2YtZ3JwYy1wcm94eSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgZXNzLWFwaSB8IGhlbG0tbnZj" + - "Zi1lc3MtYXBpIHwgZXNzIHwgc2VydmljZXMgfAp8IG5vdGFyeS1zZXJ2aWNlIHwgaGVsbS1udmNm" + - "LW5vdGFyeS1zZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCByZXZhbCB8IGhlbG0tcmV2YWwg" + - "fCBudmNmIHwgc2VydmljZXMgfAp8IGxsbS1yZXF1ZXN0LXJvdXRlciB8IG52Y2YvaGVsbS1udmNm" + - "LWxsbS1yZXF1ZXN0LXJvdXRlciB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgbGxtLWFwaS1nYXRld2F5" + - "IHwgbnZjZi9oZWxtLW52Y2YtbGxtLWFwaS1nYXRld2F5IHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBh" + - "ZG1pbi1pc3N1ZXItcHJveHkgfCBoZWxtLWFkbWluLXRva2VuLWlzc3Vlci1wcm94eSB8IGFwaS1r" + - "ZXlzIHwgKG5vIHJlbGVhc2UtZ3JvdXAgbGFiZWwpIHwKfCBpbmdyZXNzIHwgbnZjZi1nYXRld2F5" + - "LXJvdXRlcyB8IGVudm95LWdhdGV3YXktc3lzdGVtIHwgaW5ncmVzcyB8CgpNb3N0IHNlcnZpY2Vz" + - "IHVzZSBgaW5oZXJpdDogW3t0ZW1wbGF0ZTogc2VydmljZX1dYC4gTExNIHJlbGVhc2VzIHVzZSBP" + - "Q0kgY2hhcnRzIGZyb20gdGhlIGBudmNmYCByZXBvc2l0b3J5IHdpdGggc3RhbmRhbG9uZSBgdmFs" + - "dWVzOiBbLi4vZ2xvYmFsLnlhbWwuZ290bXBsXWAgYmxvY2tzOyB0aGV5IGFyZSBnYXRlZCBvbiBg" + - "YWRkb25zLmxsbS5lbmFibGVkYC4gYGFkbWluLWlzc3Vlci1wcm94eWAgYW5kIGBpbmdyZXNzYCBo" + - "YXZlIHN0YW5kYWxvbmUgYHZhbHVlczpgIGJsb2Nrcy4KCiMjIyAwMy1vYnNlcnZhYmlsaXR5Lnlh" + - "bWwuZ290bXBsCgp8IFJlbGVhc2UgfCBDaGFydCB8IE5hbWVzcGFjZSB8IExhYmVsIHwKfC0tLS0t" + - "LS0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS18CnwgKG9ic2VydmFiaWxpdHkgcmVsZWFz" + - "ZXMpIHwgKHZhcmlvdXMpIHwgb2JzZXJ2YWJpbGl0eSB8IG9ic2VydmFiaWxpdHkgfAoKR2F0ZWQg" + - "b24gb2JzZXJ2YWJpbGl0eS1zcGVjaWZpYyBmbGFncyBpbiB0aGUgZW52aXJvbm1lbnQgZmlsZS4g" + - "U2tpcHBlZCBpZiBkaXNhYmxlZC4KCiMjIFRlbXBsYXRlIEluaGVyaXRhbmNlCgojIyMgYDw8OiAq" + - "ZGVwZW5kZW5jeWAgKFlBTUwgbWVyZ2UpCgpVc2VkIGluIGAwMS1kZXBlbmRlbmNpZXMueWFtbC5n" + - "b3RtcGxgLiBNZXJnZXMgdGhlIHRlbXBsYXRlJ3MgcHJvcGVydGllcyBpbnRvIHRoZSByZWxlYXNl" + - "LgoKKipHb3RjaGEqKjogWUFNTCBtZXJnZSByZXBsYWNlcyBsaXN0cy4gSWYgeW91IGFkZCBhIGB2" + - "YWx1ZXM6YCBrZXkgdG8gdGhlIHJlbGVhc2UsIGl0ICoqcmVwbGFjZXMqKiB0aGUgdGVtcGxhdGUn" + - "cyBgdmFsdWVzOmAgbGlzdCBlbnRpcmVseS4gWW91IG11c3QgcmUtaW5jbHVkZSBhbGwgdGVtcGxh" + - "dGUgdmFsdWVzOgoKSW4gdGhlIHRlbXBsYXRlIGJlbG93LCBgPHByaXZhdGUtdmFsdWVzPmAgcmVm" + - "ZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUgc3RhY2sgcm9v" + - "dC4KCmBgYHlhbWwKIyBUZW1wbGF0ZSBkZWZpbmVzOgp0ZW1wbGF0ZXM6CiAgZGVwZW5kZW5jeTog" + - "JmRlcGVuZGVuY3kKICAgIGNoYXJ0OiBudmNmL2hlbG0tbnZjZi17eyAuUmVsZWFzZS5OYW1lIH19" + - "CiAgICB2YWx1ZXM6CiAgICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAgIC0gLi4vPHBy" + - "aXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlh" + - "bWwKCiMgV2hlbiBvdmVycmlkaW5nLCBNVVNUIHJlLWluY2x1ZGUgYm90aDoKLSBuYW1lOiBjYXNz" + - "YW5kcmEKICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2dsb2JhbC55YW1sLmdv" + - "dG1wbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE11c3Qg" + - "cmUtaW5jbHVkZQogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52ICJIRUxN" + - "RklMRV9FTlYiIH19LXNlY3JldHMueWFtbCAgICMgTXVzdCByZS1pbmNsdWRlCiAgICAtIGNhc3Nh" + - "bmRyYTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + - "ICAgICAgIyBZb3VyIG92ZXJyaWRlCiAgICAgICAgcmVzb3VyY2VzOgogICAgICAgICAgbGltaXRz" + - "OgogICAgICAgICAgICBtZW1vcnk6IDgxOTJNaQpgYGAKCiMjIyBgaW5oZXJpdGAgKEhlbG1maWxl" + - "IG5hdGl2ZSkKClVzZWQgaW4gYDAyLWNvcmUueWFtbC5nb3RtcGxgLiBIZWxtZmlsZSdzIG5hdGl2" + - "ZSBpbmhlcml0YW5jZSBtZWNoYW5pc20uCgpgYGB5YW1sCi0gbmFtZTogYXBpCiAgdmVyc2lvbjog" + - "MS42LjAKICBuYW1lc3BhY2U6IG52Y2YKICBpbmhlcml0OgogICAgLSB0ZW1wbGF0ZTogc2Vydmlj" + - "ZQpgYGAKCldoZW4gYWRkaW5nIGB2YWx1ZXM6YCB0byBhbiBpbmhlcml0ZWQgcmVsZWFzZSwgeW91" + - "IGFsc28gbmVlZCB0byByZS1pbmNsdWRlIHRoZSB0ZW1wbGF0ZSdzIHZhbHVlcyBmaWxlcyBzaW5j" + - "ZSBgdmFsdWVzYCBpcyBhIGxpc3QgdGhhdCBnZXRzIHJlcGxhY2VkLgoKIyMgVmFsdWVzIFByZWNl" + - "ZGVuY2UKCkZyb20gbG93ZXN0IHRvIGhpZ2hlc3QgcHJpb3JpdHk6CgoxLiBgZW52aXJvbm1lbnRz" + - "L2Jhc2UueWFtbGAgLS0gZGVmYXVsdHMgc2hhcmVkIGFjcm9zcyBhbGwgZW52aXJvbm1lbnRzCjIu" + - "IGBlbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgLS0gcGVyLWVudmlyb25tZW50IG92ZXJyaWRlcwoz" + - "LiBgZ2xvYmFsLnlhbWwuZ290bXBsYCAtLSBHbyB0ZW1wbGF0ZSBwcm9jZXNzaW5nIChjb25zdHJ1" + - "Y3RzIGNoYXJ0LXNwZWNpZmljIHN0cnVjdHVyZSkKNC4gYDxwcml2YXRlLXZhbHVlcz4vPGVudj4t" + - "c2VjcmV0cy55YW1sYCAtLSBzZW5zaXRpdmUgdmFsdWVzCjUuIElubGluZSBgdmFsdWVzOmAgYmxv" + - "Y2tzIG9uIHJlbGVhc2VzIC0tIGhpZ2hlc3QgcHJlY2VkZW5jZQoKIyMgV2hhdCBnbG9iYWwueWFt" + - "bC5nb3RtcGwgUGFzc2VzIFRocm91Z2gKCmBnbG9iYWwueWFtbC5nb3RtcGxgIHJlYWRzIGZyb20g" + - "YC5WYWx1ZXNgICh0aGUgbWVyZ2VkIGVudmlyb25tZW50ICsgZW52LXNwZWNpZmljIFlBTUwpIGFu" + - "ZCBjb25zdHJ1Y3RzIGNoYXJ0LXNwZWNpZmljIHZhbHVlcy4gSXQgb25seSBwYXNzZXMgdGhyb3Vn" + - "aCBrZXlzIGl0IGV4cGxpY2l0bHkgcmVmZXJlbmNlczoKCiMjIyBDYXNzYW5kcmEKCi0gYGNhc3Nh" + - "bmRyYS5yZXBsaWNhQ291bnRgCi0gYGNhc3NhbmRyYS5pbWFnZS4qYCAocmVnaXN0cnksIHJlcG9z" + - "aXRvcnkpCi0gYGNhc3NhbmRyYS5taWdyYXRpb25zLmltYWdlLipgCi0gYGNhc3NhbmRyYS5wZXJz" + - "aXN0ZW5jZS5zaXplYAotIGBjYXNzYW5kcmEubm9kZVNlbGVjdG9yYCAoaWYgYGdsb2JhbC5ub2Rl" + - "U2VsZWN0b3JzLmVuYWJsZWRgKQotIGBjYXNzYW5kcmEuZ2xvYmFsLmRlZmF1bHRTdG9yYWdlQ2xh" + - "c3NgCgojIyMgTkFUUwoKLSBgbmF0cy5jb250YWluZXIuaW1hZ2UuKmAKLSBgbmF0cy5yZWxvYWRl" + - "ci5pbWFnZS4qYAotIGBuYXRzLm5hdHNCb3guY29udGFpbmVyLmltYWdlLipgCi0gYG5hdHMuY29u" + - "ZmlnLmpldHN0cmVhbS5maWxlU3RvcmUucHZjLnN0b3JhZ2VDbGFzc05hbWVgCi0gYG5hdHMucG9k" + - "VGVtcGxhdGUubWVyZ2Uuc3BlYy5ub2RlU2VsZWN0b3JgIChpZiBlbmFibGVkKQoKIyMjIE9wZW5C" + - "YW8KCi0gYG9wZW5iYW8ubWlncmF0aW9ucy5pbWFnZS4qYCBhbmQgYG9wZW5iYW8ubWlncmF0aW9u" + - "cy5lbnZgCi0gYG9wZW5iYW8uaW5qZWN0b3IuaW1hZ2UuKmAKLSBgb3BlbmJhby5zZXJ2ZXIuaW1h" + - "Z2UuKmAKLSBgb3BlbmJhby5zZXJ2ZXIuZGF0YVN0b3JhZ2UuKmAKLSBOb2RlIHNlbGVjdG9ycyAo" + - "aWYgZW5hYmxlZCkKCiMjIyBTZXJ2aWNlcyAoQVBJLCBTSVMsIGV0Yy4pCgotIGA8c2VydmljZT4u" + - "aW1hZ2UuKmAgKHJlZ2lzdHJ5LCByZXBvc2l0b3J5KQotIGA8c2VydmljZT4ubm9kZVNlbGVjdG9y" + - "YCAoaWYgZW5hYmxlZCkKLSBgPHNlcnZpY2U+LmVudi4qYCAob2JzZXJ2YWJpbGl0eSBzZXR0aW5n" + - "cykKCiMjIyBMTE0gRnVuY3Rpb24gRW5hYmxlbWVudAoKRW5hYmxlIHRoZSBMTE0gYWRkb24gYmVm" + - "b3JlIGNyZWF0aW5nIG9yIGludm9raW5nIGZ1bmN0aW9ucyB3aXRoCmBmdW5jdGlvblR5cGU6ICJM" + - "TE0iYC4gVGhlIGFkZG9uIGRlcGxveXMgYGxsbS1yZXF1ZXN0LXJvdXRlcmAgYW5kCmBsbG0tYXBp" + - "LWdhdGV3YXlgLCBhZGRzIHRoZSBgbGxtLmludm9jYXRpb24uPGRvbWFpbj5gIHJvdXRlIHdoZW4g" + - "R2F0ZXdheSBBUEkKaW5ncmVzcyBpcyBlbmFibGVkLCBhbmQgY29uZmlndXJlcyB3b3JrZXJzIHRv" + - "IHVzZSB0aGUgTExNIHNpZGVjYXIuIFRoZSBIZWxtZmlsZQpjb25kaXRpb24gaXMgYGFkZG9ucy5s" + - "bG0uZW5hYmxlZGAuIERvIG5vdCB1c2UgdGhlIG9ic29sZXRlIGBsbG0uZW5hYmxlZGAgcGF0aC4K" + - "CkZvciBhIHNpbmdsZS1ub2RlIGlzb2xhdGVkIHRlc3QgY2x1c3RlciwgYWRkIHRoaXMgY29uZmln" + - "dXJhdGlvbiB0bwpgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgIGJlZm9yZSBhcHBseWluZyB0aGUg" + - "c3RhY2s6CgpgYGB5YW1sCmFkZG9uczoKICBsbG06CiAgICBlbmFibGVkOiB0cnVlCiAgICBnYXRl" + - "d2F5OgogICAgICByZXBsaWNhQ291bnQ6IDEKICAgICAgbWV0cmljczoKICAgICAgICBzZXJ2aWNl" + - "TW9uaXRvcjoKICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCiAgICByZXF1ZXN0Um91dGVyOgogICAg" + - "ICByZXBsaWNhQ291bnQ6IDEKICAgICAgbWV0cmljczoKICAgICAgICBzZXJ2aWNlTW9uaXRvcjoK" + - "ICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCgphZ2VudENvbmZpZzoKICBtZXJnZUNvbmZpZzogfAog" + - "ICAgY2x1c3RlcjoKICAgICAgdmFsaWRhdGlvblBvbGljeToKICAgICAgICBuYW1lOiBVbnJlc3Ry" + - "aWN0ZWQKICAgIHdvcmtsb2FkOgogICAgICBzdGFyZ2F0ZVFVSUNJbnNlY3VyZTogdHJ1ZQpgYGAK" + - "ClVzZSBgcmVwbGljYUNvdW50OiAxYCBvbmx5IGZvciBsb2NhbCBvciBzaW5nbGUtbm9kZSB0ZXN0" + - "IGNsdXN0ZXJzLiBUaGUgYnVuZGxlZApOVkNGIEFQSSBjdXJyZW50bHkgc2VydmVzIHBsYWludGV4" + - "dCBnUlBDIG9uIHBvcnQgOTA5MCwgc28gdGhlIHNlbGYtbWFuYWdlZCBzdGFjawpkZWZhdWx0cyB0" + - "aGUgTExNIEFQSSBHYXRld2F5IGF1dGhlbnRpY2F0aW9uIGhvcCB0byBwbGFpbnRleHQuIFNldApg" + - "YWRkb25zLmxsbS5nYXRld2F5LmF1dGguZ3JwY0luc2VjdXJlOiBmYWxzZWAgb25seSB3aXRoIGEg" + - "VExTLWNhcGFibGUgTlZDRiBBUEkuCgpXb3JrZXItdG8tcm91dGVyIHRyYW5zcG9ydCBpcyBzZXBh" + - "cmF0ZS4gRm9yIHNoYXJlZCBvciBwcm9kdWN0aW9uIGNsdXN0ZXJzLCB1c2UKdGhlIHJlcXVpcmVk" + - "IHJlcGxpY2EgY291bnQgYW5kIHRoZSBtYW5hZ2VkIFRMUyBjb25maWd1cmF0aW9uLiBUaGUKYHdv" + - "cmtsb2FkLnN0YXJnYXRlUVVJQ0luc2VjdXJlYCBzZXR0aW5nIGVuYWJsZXMgcGxhaW50ZXh0IHdv" + - "cmtlciB0cmFuc3BvcnQgYW5kCm11c3Qgbm90IGJlIHVzZWQgaW4gcHJvZHVjdGlvbi4KClRoZSBy" + - "ZXF1ZXN0IHJvdXRlciB1c2VzIGBwb3dlci1vZi10d29gIHdoZW4gbm8gbG9hZC1iYWxhbmNlciBj" + - "b25maWd1cmF0aW9uIGlzCnNldC4gQ29uZmlndXJlIG90aGVyIHJvdXRpbmcgbWV0aG9kcyB3aXRo" + - "IHRoZQpbTExNIFJlcXVlc3QgUm91dGVyIExvYWQgQmFsYW5jaW5nXShodHRwczovL2dpdGh1Yi5j" + - "b20vTlZJRElBL252Y2YvYmxvYi9tYWluL2RvY3MvdXNlci9sbG0tcmVxdWVzdC1yb3V0ZXItbG9h" + - "ZC1iYWxhbmNpbmcubWQpCmd1aWRlLgoKSWYgdGhlIHNpZGVjYXIgaW1hZ2UgaXMgbWlycm9yZWQg" + - "b3V0c2lkZSB0aGUgc3RhY2sncyBkZWZhdWx0IGltYWdlIHJlZ2lzdHJ5IGFuZApyZXBvc2l0b3J5" + - "LCBzZXQgdGhlIGdlbmVyYXRlZCB3b3JrZXIgc2lkZWNhciBpbWFnZSBleHBsaWNpdGx5OgoKYGBg" + - "eWFtbAphcGk6CiAgcmVtb3RlQ29uZmlnOgogICAgY29uZmlnRGF0YToKICAgICAgbnZjZjoKICAg" + - "ICAgICBzaWRlY2FyczoKICAgICAgICAgIGxsbS1yb3V0ZXItY2xpZW50LWltYWdlOiA8cmVnaXN0" + - "cnk+LzxyZXBvc2l0b3J5Pi9weWxvbjowLjE0LjEKYGBgCgpUaGUgbGVnYWN5IGBhcGkuZW52Lk5W" + - "Q0ZfU0lERUNBUlNfTExNX1JPVVRFUl9DTElFTlRfSU1BR0VgIHBhdGggaXMgZGVwcmVjYXRlZC4K" + - "VGhlIHN0YWNrIHRyYW5zbGF0ZXMgaXQgZm9yIG9uZSBjb21wYXRpYmlsaXR5IHdpbmRvdywgYnV0" + - "IG5ldyBjb25maWd1cmF0aW9ucwptdXN0IHVzZSB0aGUgcmVtb3RlLWNvbmZpZyBwYXRoLiBDb25m" + - "bGljdGluZyB2YWx1ZXMgZmFpbCByZW5kZXJpbmcuCgpSZW5kZXIgYW5kIGFwcGx5IHRoZSB1cGRh" + - "dGVkIGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQsIHRoZW4gcmVmcmVzaCBldmVyeQpyZWdpc3Rl" + - "cmVkIGNvbXB1dGUgcGxhbmUgdXNpbmcgdGhlIHNhbWUgaGFuZG9mZiB1c2VkIGZvciBpdHMgaW5z" + - "dGFsbGF0aW9uIHNvCk5WQ0EgcmVjZWl2ZXMgYGFnZW50Q29uZmlnLm1lcmdlQ29uZmlnYDoKCmBg" + - "YGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08" + - "ZW52PiBoZWxtZmlsZSBzeW5jCmBgYAoKVXNlIHRoZSBjb21wbGV0ZSBjb21wdXRlLXBsYW5lIGlu" + - "c3RhbGwgY29tbWFuZCBmcm9tCltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29t" + - "cHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLiBBCkNMSS1wcm9maWxlIGluc3RhbGxhdGlvbiBt" + - "dXN0IHJlbWFpbiBwcm9maWxlLWRyaXZlbjsgYSBIZWxtZmlsZSBpbnN0YWxsYXRpb24KbXVzdCBy" + - "ZW1haW4gdmFsdWVzLWRyaXZlbi4KCkV4aXN0aW5nIExMTSBmdW5jdGlvbiB2ZXJzaW9ucyByZXRh" + - "aW4gdGhlIHdvcmtlci1zaWRlY2FyIGltYWdlIG1ldGFkYXRhCmNhcHR1cmVkIHdoZW4gdGhlIHZl" + - "cnNpb24gaXMgY3JlYXRlZC4gUmVwbGFjaW5nIHBvZHMgb3IgcmVkZXBsb3lpbmcgdGhlIHNhbWUK" + - "dmVyc2lvbiBkb2VzIG5vdCBhcHBseSBhIG5ldyBQeWxvbiBpbWFnZS4gQWZ0ZXIgdGhlIGNvbnRy" + - "b2wtcGxhbmUgdXBkYXRlLApjcmVhdGUgYW5kIGRlcGxveSBhIG5ldyBmdW5jdGlvbiB2ZXJzaW9u" + - "LiBWZXJpZnkgdGhlIGNvbnRyb2wgcGxhbmUsIHJvdXRlLCBhbmQKd29ya2VyIHNpZGVjYXI6Cgpg" + - "YGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSAtbiBudmNmIGxsbS1hcGktZ2F0ZXdheQprdWJlY3Rs" + - "IGdldCBzdGF0ZWZ1bHNldCAtbiBudmNmIGxsbS1yZXF1ZXN0LXJvdXRlcgprdWJlY3RsIGdldCBw" + - "b2RzIC1uIG52Y2YgfCBncmVwIC1FICdsbG0tYXBpLWdhdGV3YXl8bGxtLXJlcXVlc3Qtcm91dGVy" + - "JwprdWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIGxsbQprdWJlY3RsIC1uIG52Y2YtYmFj" + - "a2VuZCBnZXQgcG9kIDxmdW5jdGlvbi1wb2Q+IFwKICAtbyBqc29ucGF0aD0ne3JhbmdlIC5zcGVj" + - "LmNvbnRhaW5lcnNbPyhALm5hbWU9PSJsbG0td29ya2VyIildLmFyZ3NbKl19ey59eyJcXG4ifXtl" + - "bmR9JwpgYGAKCkZvciBsb2NhbCBwbGFpbnRleHQgY2x1c3RlcnMsIHRoZSBgbGxtLXdvcmtlcmAg" + - "YXJncyBtdXN0IGluY2x1ZGUKYC0tcXVpYy1pbnNlY3VyZWAuCgpGb3IgbG9hZC1iYWxhbmNlciBz" + - "Y2hlbWEgYW5kIGFsZ29yaXRobSBiZWhhdmlvciwgc2VlIHRoZQpbU3RhcmdhdGUgY29uZmlndXJh" + - "dGlvbiBndWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9zcmMv" + - "bGlicmFyaWVzL3J1c3Qvc3RhcmdhdGUvZG9jcy9sb2FkLWJhbGFuY2VyLWNvbmZpZ3VyYXRpb24u" + - "bWQpLgoKIyMgSGVsbWZpbGUgU2VsZWN0b3JzCgpUYXJnZXQgc3BlY2lmaWMgcmVsZWFzZXMgb3Ig" + - "Z3JvdXBzOgoKYGBgYmFzaAojIEJ5IHJlbGVhc2UgZ3JvdXAKSEVMTUZJTEVfRU5WPTxlbnY+IGhl" + - "bG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1kZXBlbmRlbmNpZXMgc3luYwpIRUxNRklM" + - "RV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIHN5" + - "bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1p" + - "bmdyZXNzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFz" + - "ZS1ncm91cD1vYnNlcnZhYmlsaXR5IHN5bmMKCiMgQnkgcmVsZWFzZSBuYW1lCkhFTE1GSUxFX0VO" + - "Vj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMKSEVMTUZJTEVf" + - "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHkgc3lu" + - "YwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWxsbS1yZXF1ZXN0" + - "LXJvdXRlciBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9" + - "bGxtLWFwaS1nYXRld2F5IHN5bmMKCiMgVGVtcGxhdGUgb25seSAoZHJ5IHJ1bikKSEVMTUZJTEVf" + - "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUKCiMg" + - "RGVzdHJveSBhIHNpbmdsZSByZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + - "bGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIGRlc3Ryb3kKYGBgCgpOb3RlOiBgYWRtaW4taXNzdWVyLXBy" + - "b3h5YCBoYXMgbm8gYHJlbGVhc2UtZ3JvdXBgIGxhYmVsLiBVc2UgYC0tc2VsZWN0b3IgbmFtZT1h" + - "ZG1pbi1pc3N1ZXItcHJveHlgLgpQSwcIsTUd2wIqAAACKgAAUEsDBBQACAAAAAAAIQAAAAAAAAAA" + - "AAAAAAA/AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9u" + - "dmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SIyBOVkNGIFVJIEFkZG9uCgpOVkNGIFVJIGlzIGFuIG9w" + - "dGlvbmFsLCBjdXN0b21lci1mYWNpbmcgTlZDRiBhZG1pbi1wYW5lbCBVSS4gSXQgaXMgZGlzYWJs" + - "ZWQgYnkKZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBp" + - "bmNsdWRlIHRoZSBOVkNGIFVJIGFkZG9uLgoKIyMgV2hlbiB0byBlbmFibGUKCkVuYWJsZSBOVkNG" + - "IFVJIG9ubHkgd2hlbiB5b3UgbmVlZCB0aGUgYWRtaW4tcGFuZWwgVUkgYW5kIHlvdXIgZXh0cmFj" + - "dGVkIHN0YWNrCnBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLiBJZiB0aGUgcGFja2FnZSBkb2Vz" + - "IG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UKYW5kIGBudmNmVWlgIHJvdXRlIHZhbHVl" + - "cywgc2tpcCB0aGUgYWRkb24gdW50aWwgeW91IHVzZSBhIHBhY2thZ2UgdGhhdCBpbmNsdWRlcwp0" + - "aGVtLgoKIyMgRW5hYmxlIHRoZSBhZGRvbgoKRW5hYmxlIGl0IGluIGBlbnZpcm9ubWVudHMvPGVu" + - "di1uYW1lPi55YW1sYDoKCmBgYHlhbWwKYWRkb25zOgogIG52Y2ZVaToKICAgIGVuYWJsZWQ6IHRy" + - "dWUKYGBgCgojIyBDcmVhdGUgbmFtZXNwYWNlIGFuZCBpbWFnZSBwdWxsIHNlY3JldAoKQ3JlYXRl" + - "IHRoZSBuYW1lc3BhY2UsIGFuZCBhbiBpbWFnZSBwdWxsIHNlY3JldCBvbmx5IGlmIHB1bGxpbmcg" + - "ZnJvbSBhIHByaXZhdGUKcmVnaXN0cnk6CgpgYGBiYXNoCmt1YmVjdGwgY3JlYXRlIG5hbWVzcGFj" + - "ZSBudmNmLXVpIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQoK" + - "IyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGUuZy4sIE5HQyBudmNy" + - "LmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmt1YmVjdGwgY3JlYXRlIHNlY3Jl" + - "dCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8g" + - "XAogIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogIC0tZG9ja2VyLXBhc3N3b3Jk" + - "PSIkTkdDX0FQSV9LRVkiIFwKICAtLW5hbWVzcGFjZT1udmNmLXVpIFwKICAtLWRyeS1ydW49Y2xp" + - "ZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KYGBgCgpUaGUgZGVmYXVsdCByb3V0ZSBo" + - "b3N0IGlzIGBudmNmLXVpLjxkb21haW4+YCBhbmQgdGhlIGJhY2tlbmQgaXMKYG52Y2YtdWkubnZj" + - "Zi11aTo4MzAwYC4KCiMjIEFwcGx5IHRoZSBzZXJ2aWNlIGFuZCByb3V0ZQoKQWZ0ZXIgY29uZmly" + - "bWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYG52Y2YtdWlgIHJlbGVhc2UsIHByZXZpZXcg" + - "YW5kIGFwcGx5CnRoZSBzZXJ2aWNlIGFuZCByb3V0ZToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxl" + - "bnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgdGVtcGxhdGUKSEVMTUZJ" + - "TEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgc3luYwpI" + - "RUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9" + - "aW5ncmVzcyBzeW5jCmBgYAoKIyMgVmVyaWZ5CgpWZXJpZnkgdGhlIHJvdXRlIG9ubHkgd2hlbiB0" + - "aGUgYWRkb24gaXMgcHJlc2VudCBhbmQgZW5hYmxlZDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgZGVw" + - "bG95LHN2YyAtbiBudmNmLXVpCmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgLWkgbnZj" + - "Zi11aQpjdXJsIC1pIC1IICJIb3N0OiBudmNmLXVpLjxkb21haW4+IiAiaHR0cDovLzxnYXRld2F5" + - "LWFkZHJlc3M+L3N0YXR1cyIKYGBgCgojIyBTZWN1cml0eQoKVGhlIE5WQ0YgVUkgYWRtaW4gcGFu" + - "ZWwgaXMgY3VycmVudGx5IHVuYXV0aGVudGljYXRlZC4gRG8gbm90IGV4cG9zZSBpdCB0byB0aGUK" + - "cHVibGljIGludGVybmV0LiBSZXN0cmljdCBhY2Nlc3MgdG8gYSB0cnVzdGVkIG5ldHdvcmssIFZQ" + - "Tiwgb3IgYW4gYXV0aGVudGljYXRpbmcKcHJveHkgaW4gZnJvbnQgb2YgdGhlIGBudmNmLXVpYCBy" + - "b3V0ZS4KUEsHCDj5J6+5BwAAuQcAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAPgAJAGRhdGEv" + - "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1k" + - "VVQFAAEAps4SIyBJbWFnZSBQdWxsIFNlY3JldHMgUmVmZXJlbmNlCgojIyBPdmVydmlldwoKV2hl" + - "biBwdWxsaW5nIE5WQ0YgaW1hZ2VzIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5IChmb3IgZXhhbXBs" + - "ZSwgTkdDCmBudmNyLmlvYCksIEt1YmVybmV0ZXMgbmVlZHMgYGltYWdlUHVsbFNlY3JldHNgIG9u" + - "IGV2ZXJ5IHBvZC4gQ29udHJvbC1wbGFuZSBhbmQKY29tcHV0ZS1wbGFuZSBjcmVkZW50aWFscyBh" + - "cmUgY29uZmlndXJlZCBpbiB0aGVpciBvd24gY2x1c3RlciBjb250ZXh0cy4gRG8gbm90CnVzZSBv" + - "bmUgbWl4ZWQgbmFtZXNwYWNlIGxpc3QuCgpUaGUgcmVjb21tZW5kZWQgY29udHJvbC1wbGFuZSBh" + - "cHByb2FjaCB1c2VzIEt5dmVybm8gdG8gaW5qZWN0IHRoZSBzZWNyZXQgaW50bwpjb250cm9sLXBs" + - "YW5lIHBvZHMgYXQgYWRtaXNzaW9uIHRpbWUuIFRoZSBjb21wdXRlLXBsYW5lIGNoYXJ0IGFuZCBv" + - "cGVyYXRvciB1c2UKdGhlIHNlY3JldCBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciBpdCB0" + - "byBgbnZjYS1zeXN0ZW1gLgoKIyMgS3l2ZXJubyBBcHByb2FjaCAoUmVjb21tZW5kZWQpCgojIyMg" + - "MS4gSW5zdGFsbCBLeXZlcm5vCgpgYGBiYXNoCmhlbG0gcmVwbyBhZGQga3l2ZXJubyBodHRwczov" + - "L2t5dmVybm8uZ2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUKaGVsbSBpbnN0YWxs" + - "IGt5dmVybm8ga3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUtbmFtZXNwYWNlIFwK" + - "ICAtLWt1YmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PgpgYGAKCiMjIyAyLiBDcmVh" + - "dGUgY29udHJvbC1wbGFuZSBwdWxsIHNlY3JldHMKCmBgYGJhc2gKZXhwb3J0IE5HQ19BUElfS0VZ" + - "PSI8eW91ci1uZ2MtYXBpLWtleT4iCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5" + - "c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8K" + - "ICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgbmFtZXNw" + - "YWNlICIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250" + - "ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQoKZm9yIG5zIGluIGNh" + - "c3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5" + - "c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + - "Y29udGV4dD4gY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAt" + - "LWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9r" + - "ZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNw" + - "YWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250" + - "ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQpgYGAKCkZvciBub24t" + - "TkdDIHJlZ2lzdHJpZXMsIHJlcGxhY2UgYC0tZG9ja2VyLXNlcnZlcmAsIGAtLWRvY2tlci11c2Vy" + - "bmFtZWAsIGFuZCBgLS1kb2NrZXItcGFzc3dvcmRgLgoKIyMjIDMuIEFwcGx5IEt5dmVybm8gQ2x1" + - "c3RlclBvbGljeQoKYGBgeWFtbAphcGlWZXJzaW9uOiBreXZlcm5vLmlvL3YxCmtpbmQ6IENsdXN0" + - "ZXJQb2xpY3kKbWV0YWRhdGE6CiAgbmFtZTogbnZjZi1hZGQtaW1hZ2VwdWxsc2VjcmV0cwpzcGVj" + - "OgogIGJhY2tncm91bmQ6IGZhbHNlCiAgcnVsZXM6CiAgICAtIG5hbWU6IGFkZC1pbWFnZXB1bGxz" + - "ZWNyZXQtdG8tbnZjZi1wb2RzCiAgICAgIG1hdGNoOgogICAgICAgIGFueToKICAgICAgICAtIHJl" + - "c291cmNlczoKICAgICAgICAgICAga2luZHM6CiAgICAgICAgICAgIC0gUG9kCiAgICAgICAgICAg" + - "IG5hbWVzcGFjZXM6CiAgICAgICAgICAgIC0gIm52Y2YiCiAgICAgICAgICAgIC0gImFwaS1rZXlz" + - "IgogICAgICAgICAgICAtICJzaXMiCiAgICAgICAgICAgIC0gImVzcyIKICAgICAgICAgICAgLSAi" + - "bmF0cy1zeXN0ZW0iCiAgICAgICAgICAgIC0gImNhc3NhbmRyYS1zeXN0ZW0iCiAgICAgICAgICAg" + - "IC0gInZhdWx0LXN5c3RlbSIKICAgICAgICAgICAgLSAiY2VydC1tYW5hZ2VyIgogICAgICBtdXRh" + - "dGU6CiAgICAgICAgcGF0Y2hTdHJhdGVnaWNNZXJnZToKICAgICAgICAgIG1ldGFkYXRhOgogICAg" + - "ICAgICAgICBhbm5vdGF0aW9uczoKICAgICAgICAgICAgICBudmNmLm52aWRpYS5jb20vaW1hZ2Vw" + - "dWxsc2VjcmV0LWluamVjdGVkLWJ5OiBreXZlcm5vCiAgICAgICAgICBzcGVjOgogICAgICAgICAg" + - "ICBpbWFnZVB1bGxTZWNyZXRzOgogICAgICAgICAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpg" + - "YGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IFwK" + - "ICAtZiBreXZlcm5vLWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAKCiMjIyA0LiBJbnN0" + - "YWxsIHRoZSBjb250cm9sIHBsYW5lCgpDb250aW51ZSB3aXRoIHRoZSBzZWxlY3RlZCBjb250cm9s" + - "LXBsYW5lIGluc3RhbGxhdGlvbiBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25d" + - "KGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4gTm8KY29udHJvbC1wbGFuZSBoZWxtZmls" + - "ZSBtb2RpZmljYXRpb25zIGFyZSBuZWVkZWQuIEt5dmVybm8gaW5qZWN0cyB0aGUgcHVsbApzZWNy" + - "ZXQgaW50byBuZXcgY29udHJvbC1wbGFuZSBwb2RzLgoKIyMgQ29tcHV0ZS1QbGFuZSBTZWNyZXQK" + - "CkNyZWF0ZSB0aGUgc2VjcmV0IG9ubHkgaW4gYG52Y2Etb3BlcmF0b3JgIG9uIHRoZSBjb21wdXRl" + - "IGNsdXN0ZXI6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + - "eHQ+IGNyZWF0ZSBuYW1lc3BhY2UgbnZjYS1vcGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAt" + - "byB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGFw" + - "cGx5IC1mIC0KCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGNyZWF0" + - "ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogIC0tZG9ja2VyLXNlcnZlcj1u" + - "dmNyLmlvIFwKICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAtLWRvY2tlci1w" + - "YXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgLS1uYW1lc3BhY2U9bnZjYS1vcGVyYXRvciBcCiAg" + - "LS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + - "LXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KYGBgCgpSZWZlcmVuY2UgaXQgaW4gdGhlIGNvbXB1" + - "dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZToKCmBgYHlhbWwKZ2xvYmFsOgogIGltYWdlUHVsbFNl" + - "Y3JldHM6CiAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpUaGUgY2hhcnQgYW5kIG9wZXJhdG9y" + - "IHVzZSB0aGF0IHJlZmVyZW5jZSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciB0aGUKc2Vj" + - "cmV0IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBjcmVhdGUgYSBicm9hZGVyIG1hbnVhbCBjb21w" + - "dXRlIG5hbWVzcGFjZSBsaXN0LiBGb2xsb3cKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0" + - "aW9uXShjb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkgZm9yIHRoZQpzZWxlY3RlZCBpbnN0" + - "YWxsIGZsb3cuCgojIyBWZXJpZmljYXRpb24KCmBgYGJhc2gKIyBDaGVjayB0aGF0IGEgY29udHJv" + - "bC1wbGFuZSBwb2QgaGFzIHRoZSBpbmplY3RlZCBzZWNyZXQKa3ViZWN0bCAtLWNvbnRleHQgPGNv" + - "bnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IFwK" + - "ICAtbyBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9JwojIEV4cGVjdGVkOiBbeyJu" + - "YW1lIjoibnZjci1jcmVkcyJ9XQoKIyBDaGVjayB0aGUgS3l2ZXJubyBhbm5vdGF0aW9uCmt1YmVj" + - "dGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBwb2QgLW4gPG5hbWVzcGFj" + - "ZT4gPHBvZC1uYW1lPiBcCiAgLW8ganNvbnBhdGg9J3subWV0YWRhdGEuYW5ub3RhdGlvbnMubnZj" + - "ZlwubnZpZGlhXC5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVkLWJ5fScKIyBFeHBlY3RlZDog" + - "a3l2ZXJubwoKIyBDaGVjayBwdWxsIGV2ZW50cwprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1w" + - "bGFuZS1jb250ZXh0PiBnZXQgZXZlbnRzIC1uIDxuYW1lc3BhY2U+IFwKICAtLXNvcnQtYnk9Jy5s" + - "YXN0VGltZXN0YW1wJyB8IGdyZXAgLWkgcHVsbAojIFNob3VsZCBzaG93ICJTdWNjZXNzZnVsbHkg" + - "cHVsbGVkIiBub3QgIjQwMSBVbmF1dGhvcml6ZWQiCgojIENoZWNrIHRoZSBjaGFydC9vcGVyYXRv" + - "ciBtaXJyb3Igb24gdGhlIGNvbXB1dGUgY2x1c3RlcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0" + - "ZS1wbGFuZS1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgXAogIC1uIG52Y2Etc3lzdGVt" + - "CmBgYAoKIyMgV2hlbiBQdWxsIFNlY3JldHMgQXJlIE5vdCBOZWVkZWQKCi0gKipBV1MgRUNSIHdp" + - "dGggSUFNIG5vZGUgcm9sZXMqKjogSWYgeW91ciBub2RlcyBoYXZlIGBBbWF6b25FQzJDb250YWlu" + - "ZXJSZWdpc3RyeVJlYWRPbmx5YCBJQU0gcG9saWN5LCBLdWJlcm5ldGVzIGNhbiBwdWxsIGZyb20g" + - "RUNSIHdpdGhvdXQgZXhwbGljaXQgc2VjcmV0cy4KLSAqKlB1YmxpYyByZWdpc3RyaWVzKio6IE5v" + - "IHB1bGwgc2VjcmV0cyBuZWVkZWQuCi0gKipDU1AgYnVpbHQtaW4gY3JlZGVudGlhbCBoZWxwZXJz" + - "Kio6IEdLRSBBcnRpZmFjdCBSZWdpc3RyeSwgQXp1cmUgQUNSIHdpdGggbWFuYWdlZCBpZGVudGl0" + - "eSwgYW5kIHNpbWlsYXIgc2VydmljZXMuCgojIyBUcm91Ymxlc2hvb3RpbmcKCiMjIyBQb2RzIHN0" + - "aWxsIGluIEltYWdlUHVsbEJhY2tPZmYgYWZ0ZXIgYXBwbHlpbmcgcG9saWN5CgpUaGUgS3l2ZXJu" + - "byBwb2xpY3kgb25seSBhZmZlY3RzIHBvZHMgY3JlYXRlZCAqKmFmdGVyKiogdGhlIHBvbGljeSBp" + - "cyBhcHBsaWVkLiBEZWxldGUgc3R1Y2sgcG9kcyB0byB0cmlnZ2VyIHJlY3JlYXRpb246CgpgYGBi" + - "YXNoCmt1YmVjdGwgLS1jb250ZXh0IDx0YXJnZXQtY29udGV4dD4gZGVsZXRlIHBvZHMgLW4gPG5h" + - "bWVzcGFjZT4gLS1hbGwKYGBgCgojIyMgS3l2ZXJubyBhZG1pc3Npb24gY29udHJvbGxlciBub3Qg" + - "cnVubmluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0" + - "PiBnZXQgcG9kcyAtbiBreXZlcm5vCiMgQWxsIHBvZHMgc2hvdWxkIGJlIFJ1bm5pbmcKYGBgCgoj" + - "IyMgUG9saWN5IG5vdCBtYXRjaGluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJv" + - "bC1wbGFuZS1jb250ZXh0PiBnZXQgY2x1c3RlcnBvbGljeSBudmNmLWFkZC1pbWFnZXB1bGxzZWNy" + - "ZXRzCiMgU2hvdWxkIHNob3cgUkVBRFk6IFRydWUKYGBgCgojIyMgV3Jvbmcgc2VjcmV0IG5hbWUK" + - "ClRoZSBwb2xpY3kgcmVmZXJlbmNlcyBgbnZjci1jcmVkc2AuIFZlcmlmeSB0aGUgc2VjcmV0IGV4" + - "aXN0cyB3aXRoIHRoYXQgZXhhY3QgbmFtZToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPHRh" + - "cmdldC1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgLW4gPG5hbWVzcGFjZT4KYGBgClBL" + - "BwhLQjWoABYAAAAWAABQSwECFAAUAAgAAAAAACEAbzWgxUoQAABKEAAAEgAJAAAAAAAAAAAAAAAA" + - "AAAAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAP9282dTYQAAU2EA" + - "ACMACQAAAAAAAAAAAAAAkxAAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQF" + - "AAEAps4SUEsBAhQAFAAIAAAAAAAhAGf9GA/8DAAA/AwAADMACQAAAAAAAAAAAAAAQHIAAGRhdGEv" + - "bnZjZi1zZWxmLW1hbmFnZWQtY2xpL2V4YW1wbGVzL2NpLXBpcGVsaW5lcy5tZFVUBQABAKbOElBL" + - "AQIUABQACAAAAAAAIQChFOOBXQwAAF0MAAA0AAkAAAAAAAAAAAAAAKZ/AABkYXRhL252Y2Ytc2Vs" + - "Zi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9tdWx0aS1jbHVzdGVyLm1kVVQFAAEAps4SUEsBAhQAFAAI" + - "AAAAAAAhAEInSQ8FDQAABQ0AADcACQAAAAAAAAAAAAAAbowAAGRhdGEvbnZjZi1zZWxmLW1hbmFn" + - "ZWQtY2xpL3Byb21wdHMvYWRkLWNvbXB1dGUtcGxhbmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + - "ACEA1N6NNJ8ZAACfGQAAOQAJAAAAAAAAAAAAAADhmQAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1j" + - "bGkvcHJvbXB0cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAh" + - "ANJD3AQYJQAAGCUAADcACQAAAAAAAAAAAAAA8LMAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xp" + - "L3Byb21wdHMvZGVwbG95LWFuZC1pbnZva2UubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAcpIs" + - "Jr4OAAC+DgAAPQAJAAAAAAAAAAAAAAB22QAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJv" + - "bXB0cy9kaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBC" + - "ceYeASgAAAEoAAA6AAkAAAAAAAAAAAAAAKjoAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9w" + - "cm9tcHRzL2luc3RhbGwtZnJvbS1zY3JhdGNoLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAKrh" + - "OrnIBwAAyAcAADkACQAAAAAAAAAAAAAAGhEBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3By" + - "b21wdHMvcm90YXRlLWNsdXN0ZXItandrcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQDah2NW" + - "5CEAAOQhAAAuAAkAAAAAAAAAAAAAAFIZAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9t" + - "cHRzL3RlYXJkb3duLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAHIND2QhIwAAISMAADAACQAA" + - "AAAAAAAAAAAAmzsBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9jb21tYW5k" + - "cy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBzp1pk1QYAANUGAAAyAAkAAAAAAAAAAAAAACNf" + - "AQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZXhpdC1jb2Rlcy5tZFVUBQAB" + - "AKbOElBLAQIUABQACAAAAAAAIQDA1FCIwS4AAMEuAAAtAAkAAAAAAAAAAAAAAGFmAQBkYXRhL252" + - "Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZmxhZ3MubWRVVAUAAQCmzhJQSwECFAAUAAgA" + - "AAAAACEA864ThHQRAAB0EQAANwAJAAAAAAAAAAAAAACGlQEAZGF0YS9udmNmLXNlbGYtbWFuYWdl" + - "ZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAA" + - "IQARwxSTSWIAAEliAAAsAAkAAAAAAAAAAAAAAGinAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWlu" + - "c3RhbGxhdGlvbi9TS0lMTC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBHVWpWSlYAAEpWAAA0" + - "AAkAAAAAAAAAAAAAABQKAgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9ldmFs" + - "cy9ldmFscy5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAAJSTkB/KAAAfygAAC8ACQAAAAAA" + - "AAAAAAAAyWACAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL2V4YW1wbGVzLm1k" + - "VVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAJZjvFkSMAAAEjAAAEwACQAAAAAAAAAAAAAArokCAGRh" + - "dGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvY29tcHV0ZS1wbGFu" + - "ZS1pbnN0YWxsYXRpb24ubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAtXpwO7UwAAC1MAAAOwAJ" + - "AAAAAAAAAAAAAABDugIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJl" + - "bmNlcy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAsTUd2wIqAAACKgAARAAJ" + - "AAAAAAAAAAAAAABq6wIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJl" + - "bmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAOPknr7kH" + - "AAC5BwAAPwAJAAAAAAAAAAAAAADnFQMAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRp" + - "b24vcmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEtC" + - "NagAFgAAABYAAD4ACQAAAAAAAAAAAAAAFh4DAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + - "bGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SUEsFBgAAAAAXABcArwkA" + - "AIs0AwAAAA==" + "bC1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCmRvbmUKYGBgCgpGb3Igbm9uLU5HQyByZWdpc3Ry" + + "aWVzLCByZXBsYWNlIGAtLWRvY2tlci1zZXJ2ZXJgLCBgLS1kb2NrZXItdXNlcm5hbWVgLCBhbmQg" + + "YC0tZG9ja2VyLXBhc3N3b3JkYC4KCiMjIyAzLiBBcHBseSBLeXZlcm5vIENsdXN0ZXJQb2xpY3kK" + + "CmBgYHlhbWwKYXBpVmVyc2lvbjoga3l2ZXJuby5pby92MQpraW5kOiBDbHVzdGVyUG9saWN5Cm1l" + + "dGFkYXRhOgogIG5hbWU6IG52Y2YtYWRkLWltYWdlcHVsbHNlY3JldHMKc3BlYzoKICBiYWNrZ3Jv" + + "dW5kOiBmYWxzZQogIHJ1bGVzOgogICAgLSBuYW1lOiBhZGQtaW1hZ2VwdWxsc2VjcmV0LXRvLW52" + + "Y2YtcG9kcwogICAgICBtYXRjaDoKICAgICAgICBhbnk6CiAgICAgICAgLSByZXNvdXJjZXM6CiAg" + + "ICAgICAgICAgIGtpbmRzOgogICAgICAgICAgICAtIFBvZAogICAgICAgICAgICBuYW1lc3BhY2Vz" + + "OgogICAgICAgICAgICAtICJudmNmIgogICAgICAgICAgICAtICJhcGkta2V5cyIKICAgICAgICAg" + + "ICAgLSAic2lzIgogICAgICAgICAgICAtICJlc3MiCiAgICAgICAgICAgIC0gIm5hdHMtc3lzdGVt" + + "IgogICAgICAgICAgICAtICJjYXNzYW5kcmEtc3lzdGVtIgogICAgICAgICAgICAtICJ2YXVsdC1z" + + "eXN0ZW0iCiAgICAgICAgICAgIC0gImNlcnQtbWFuYWdlciIKICAgICAgbXV0YXRlOgogICAgICAg" + + "IHBhdGNoU3RyYXRlZ2ljTWVyZ2U6CiAgICAgICAgICBtZXRhZGF0YToKICAgICAgICAgICAgYW5u" + + "b3RhdGlvbnM6CiAgICAgICAgICAgICAgbnZjZi5udmlkaWEuY29tL2ltYWdlcHVsbHNlY3JldC1p" + + "bmplY3RlZC1ieToga3l2ZXJubwogICAgICAgICAgc3BlYzoKICAgICAgICAgICAgaW1hZ2VQdWxs" + + "U2VjcmV0czoKICAgICAgICAgICAgLSBuYW1lOiBudmNyLWNyZWRzCmBgYAoKYGBgYmFzaAprdWJl" + + "Y3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBhcHBseSBcCiAgLWYga3l2ZXJu" + + "by1pbWFnZXB1bGxzZWNyZXQtcG9saWN5LnlhbWwKYGBgCgojIyMgNC4gSW5zdGFsbCB0aGUgY29u" + + "dHJvbCBwbGFuZQoKQ29udGludWUgd2l0aCB0aGUgc2VsZWN0ZWQgY29udHJvbC1wbGFuZSBpbnN0" + + "YWxsYXRpb24gaW4KW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShjb21wdXRlLXBs" + + "YW5lLWluc3RhbGxhdGlvbi5tZCkuIE5vCmNvbnRyb2wtcGxhbmUgaGVsbWZpbGUgbW9kaWZpY2F0" + + "aW9ucyBhcmUgbmVlZGVkLiBLeXZlcm5vIGluamVjdHMgdGhlIHB1bGwKc2VjcmV0IGludG8gbmV3" + + "IGNvbnRyb2wtcGxhbmUgcG9kcy4KCiMjIENvbXB1dGUtUGxhbmUgU2VjcmV0CgpDcmVhdGUgdGhl" + + "IHNlY3JldCBvbmx5IGluIGBudmNhLW9wZXJhdG9yYCBvbiB0aGUgY29tcHV0ZSBjbHVzdGVyOgoK" + + "YGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBjcmVhdGUg" + + "bmFtZXNwYWNlIG52Y2Etb3BlcmF0b3IgXAogIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IFwK" + + "ICBrdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCgpr" + + "dWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBjcmVhdGUgc2VjcmV0IGRv" + + "Y2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAg" + + "LS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgLS1kb2NrZXItcGFzc3dvcmQ9IiRO" + + "R0NfQVBJX0tFWSIgXAogIC0tbmFtZXNwYWNlPW52Y2Etb3BlcmF0b3IgXAogIC0tZHJ5LXJ1bj1j" + + "bGllbnQgLW8geWFtbCB8IFwKICBrdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250" + + "ZXh0PiBhcHBseSAtZiAtCmBgYAoKUmVmZXJlbmNlIGl0IGluIHRoZSBjb21wdXRlLXBsYW5lIGVu" + + "dmlyb25tZW50IGZpbGU6CgpgYGB5YW1sCmdsb2JhbDoKICBpbWFnZVB1bGxTZWNyZXRzOgogICAg" + + "LSBuYW1lOiBudmNyLWNyZWRzCmBgYAoKVGhlIGNoYXJ0IGFuZCBvcGVyYXRvciB1c2UgdGhhdCBy" + + "ZWZlcmVuY2UgaW4gYG52Y2Etb3BlcmF0b3JgIGFuZCBtaXJyb3IgdGhlCnNlY3JldCB0byBgbnZj" + + "YS1zeXN0ZW1gLiBEbyBub3QgY3JlYXRlIGEgYnJvYWRlciBtYW51YWwgY29tcHV0ZSBuYW1lc3Bh" + + "Y2UgbGlzdC4gRm9sbG93CltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0" + + "ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpIGZvciB0aGUKc2VsZWN0ZWQgaW5zdGFsbCBmbG93LgoK" + + "IyMgVmVyaWZpY2F0aW9uCgpgYGBiYXNoCiMgQ2hlY2sgdGhhdCBhIGNvbnRyb2wtcGxhbmUgcG9k" + + "IGhhcyB0aGUgaW5qZWN0ZWQgc2VjcmV0Cmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5l" + + "LWNvbnRleHQ+IGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiBcCiAgLW8ganNvbnBh" + + "dGg9J3suc3BlYy5pbWFnZVB1bGxTZWNyZXRzfScKIyBFeHBlY3RlZDogW3sibmFtZSI6Im52Y3It" + + "Y3JlZHMifV0KCiMgQ2hlY2sgdGhlIEt5dmVybm8gYW5ub3RhdGlvbgprdWJlY3RsIC0tY29udGV4" + + "dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgcG9kIC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFt" + + "ZT4gXAogIC1vIGpzb25wYXRoPSd7Lm1ldGFkYXRhLmFubm90YXRpb25zLm52Y2ZcLm52aWRpYVwu" + + "Y29tL2ltYWdlcHVsbHNlY3JldC1pbmplY3RlZC1ieX0nCiMgRXhwZWN0ZWQ6IGt5dmVybm8KCiMg" + + "Q2hlY2sgcHVsbCBldmVudHMKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4" + + "dD4gZ2V0IGV2ZW50cyAtbiA8bmFtZXNwYWNlPiBcCiAgLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFt" + + "cCcgfCBncmVwIC1pIHB1bGwKIyBTaG91bGQgc2hvdyAiU3VjY2Vzc2Z1bGx5IHB1bGxlZCIgbm90" + + "ICI0MDEgVW5hdXRob3JpemVkIgoKIyBDaGVjayB0aGUgY2hhcnQvb3BlcmF0b3IgbWlycm9yIG9u" + + "IHRoZSBjb21wdXRlIGNsdXN0ZXIKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29u" + + "dGV4dD4gZ2V0IHNlY3JldCBudmNyLWNyZWRzIFwKICAtbiBudmNhLXN5c3RlbQpgYGAKCiMjIFdo" + + "ZW4gUHVsbCBTZWNyZXRzIEFyZSBOb3QgTmVlZGVkCgotICoqQVdTIEVDUiB3aXRoIElBTSBub2Rl" + + "IHJvbGVzKio6IElmIHlvdXIgbm9kZXMgaGF2ZSBgQW1hem9uRUMyQ29udGFpbmVyUmVnaXN0cnlS" + + "ZWFkT25seWAgSUFNIHBvbGljeSwgS3ViZXJuZXRlcyBjYW4gcHVsbCBmcm9tIEVDUiB3aXRob3V0" + + "IGV4cGxpY2l0IHNlY3JldHMuCi0gKipQdWJsaWMgcmVnaXN0cmllcyoqOiBObyBwdWxsIHNlY3Jl" + + "dHMgbmVlZGVkLgotICoqQ1NQIGJ1aWx0LWluIGNyZWRlbnRpYWwgaGVscGVycyoqOiBHS0UgQXJ0" + + "aWZhY3QgUmVnaXN0cnksIEF6dXJlIEFDUiB3aXRoIG1hbmFnZWQgaWRlbnRpdHksIGFuZCBzaW1p" + + "bGFyIHNlcnZpY2VzLgoKIyMgVHJvdWJsZXNob290aW5nCgojIyMgUG9kcyBzdGlsbCBpbiBJbWFn" + + "ZVB1bGxCYWNrT2ZmIGFmdGVyIGFwcGx5aW5nIHBvbGljeQoKVGhlIEt5dmVybm8gcG9saWN5IG9u" + + "bHkgYWZmZWN0cyBwb2RzIGNyZWF0ZWQgKiphZnRlcioqIHRoZSBwb2xpY3kgaXMgYXBwbGllZC4g" + + "RGVsZXRlIHN0dWNrIHBvZHMgdG8gdHJpZ2dlciByZWNyZWF0aW9uOgoKYGBgYmFzaAprdWJlY3Rs" + + "IC0tY29udGV4dCA8dGFyZ2V0LWNvbnRleHQ+IGRlbGV0ZSBwb2RzIC1uIDxuYW1lc3BhY2U+IC0t" + + "YWxsCmBgYAoKIyMjIEt5dmVybm8gYWRtaXNzaW9uIGNvbnRyb2xsZXIgbm90IHJ1bm5pbmcKCmBg" + + "YGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHBvZHMg" + + "LW4ga3l2ZXJubwojIEFsbCBwb2RzIHNob3VsZCBiZSBSdW5uaW5nCmBgYAoKIyMjIFBvbGljeSBu" + + "b3QgbWF0Y2hpbmcKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + + "dGV4dD4gZ2V0IGNsdXN0ZXJwb2xpY3kgbnZjZi1hZGQtaW1hZ2VwdWxsc2VjcmV0cwojIFNob3Vs" + + "ZCBzaG93IFJFQURZOiBUcnVlCmBgYAoKIyMjIFdyb25nIHNlY3JldCBuYW1lCgpUaGUgcG9saWN5" + + "IHJlZmVyZW5jZXMgYG52Y3ItY3JlZHNgLiBWZXJpZnkgdGhlIHNlY3JldCBleGlzdHMgd2l0aCB0" + + "aGF0IGV4YWN0IG5hbWU6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDx0YXJnZXQtY29udGV4" + + "dD4gZ2V0IHNlY3JldCBudmNyLWNyZWRzIC1uIDxuYW1lc3BhY2U+CmBgYApQSwcIS0I1qAAWAAAA" + + "FgAAUEsBAhQAFAAIAAAAAAAhAJeqZHVKEAAAShAAABIACQAAAAAAAAAAAAAAAAAAAGRhdGEvbWFu" + + "aWZlc3QuanNvblVUBQABAKbOElBLAQIUABQACAAAAAAAIQD/dvNnU2EAAFNhAAAjAAkAAAAAAAAA" + + "AAAAAJMQAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9TS0lMTC5tZFVUBQABAKbOElBLAQIU" + + "ABQACAAAAAAAIQCZ9g2l3Q0AAN0NAAAzAAkAAAAAAAAAAAAAAEByAABkYXRhL252Y2Ytc2VsZi1t" + + "YW5hZ2VkLWNsaS9leGFtcGxlcy9jaS1waXBlbGluZXMubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + + "ACEAoRTjgV0MAABdDAAANAAJAAAAAAAAAAAAAACHgAAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1j" + + "bGkvZXhhbXBsZXMvbXVsdGktY2x1c3Rlci5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBCJ0kP" + + "BQ0AAAUNAAA3AAkAAAAAAAAAAAAAAE+NAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9t" + + "cHRzL2FkZC1jb21wdXRlLXBsYW5lLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhANTejTSfGQAA" + + "nxkAADkACQAAAAAAAAAAAAAAwpoAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMv" + + "Y3JlYXRlLWFuZC1ydW4tdGFzay5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQDSQ9wEGCUAABgl" + + "AAA3AAkAAAAAAAAAAAAAANG0AABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2Rl" + + "cGxveS1hbmQtaW52b2tlLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAHKSLCa+DgAAvg4AAD0A" + + "CQAAAAAAAAAAAAAAV9oAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvZGlhZ25v" + + "c2UtZmFpbGVkLWluc3RhbGwubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAQnHmHgEoAAABKAAA" + + "OgAJAAAAAAAAAAAAAACJ6QAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9pbnN0" + + "YWxsLWZyb20tc2NyYXRjaC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQCq4Tq5yAcAAMgHAAA5" + + "AAkAAAAAAAAAAAAAAPsRAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3JvdGF0" + + "ZS1jbHVzdGVyLWp3a3MubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA2odjVuQhAADkIQAALgAJ" + + "AAAAAAAAAAAAAAAzGgEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy90ZWFyZG93" + + "bi5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQByDQ9kISMAACEjAAAwAAkAAAAAAAAAAAAAAHw8" + + "AQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvY29tbWFuZHMubWRVVAUAAQCm" + + "zhJQSwECFAAUAAgAAAAAACEAc6daZNUGAADVBgAAMgAJAAAAAAAAAAAAAAAEYAEAZGF0YS9udmNm" + + "LXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL2V4aXQtY29kZXMubWRVVAUAAQCmzhJQSwECFAAU" + + "AAgAAAAAACEAm1pHP2QvAABkLwAALQAJAAAAAAAAAAAAAABCZwEAZGF0YS9udmNmLXNlbGYtbWFu" + + "YWdlZC1jbGkvcmVmZXJlbmNlL2ZsYWdzLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAPOuE4R0" + + "EQAAdBEAADcACQAAAAAAAAAAAAAACpcBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVy" + + "ZW5jZS90cm91Ymxlc2hvb3RpbmcubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAEcMUk0liAABJ" + + "YgAALAAJAAAAAAAAAAAAAADsqAEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24v" + + "U0tJTEwubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAR1VqVkpWAABKVgAANAAJAAAAAAAAAAAA" + + "AACYCwIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXZhbHMvZXZhbHMuanNv" + + "blVUBQABAKbOElBLAQIUABQACAAAAAAAIQACUk5AfygAAH8oAAAvAAkAAAAAAAAAAAAAAE1iAgBk" + + "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9leGFtcGxlcy5tZFVUBQABAKbOElBL" + + "AQIUABQACAAAAAAAIQCWY7xZEjAAABIwAABMAAkAAAAAAAAAAAAAADKLAgBkYXRhL252Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0" + + "aW9uLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhALV6cDu1MAAAtTAAADsACQAAAAAAAAAAAAAA" + + "x7sCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvZGVidWdn" + + "aW5nLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhALE1HdsCKgAAAioAAEQACQAAAAAAAAAAAAAA" + + "7uwCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvaGVsbWZp" + + "bGUtc3RydWN0dXJlLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhADj5J6+5BwAAuQcAAD8ACQAA" + + "AAAAAAAAAAAAaxcDAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5j" + + "ZXMvbnZjZi11aS1hZGRvbi5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBLQjWoABYAAAAWAAA+" + + "AAkAAAAAAAAAAAAAAJofAwBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZl" + + "cmVuY2VzL3B1bGwtc2VjcmV0cy5tZFVUBQABAKbOElBLBQYAAAAAFwAXAK8JAAAPNgMAAAA=" var ( skillDataOnce sync.Once diff --git a/src/clis/nvcf-cli/internal/selfhosted/credhelper_test.go b/src/clis/nvcf-cli/internal/selfhosted/credhelper_test.go new file mode 100644 index 0000000000..751afb93f9 --- /dev/null +++ b/src/clis/nvcf-cli/internal/selfhosted/credhelper_test.go @@ -0,0 +1,99 @@ +/* +SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. +SPDX-License-Identifier: Apache-2.0 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package selfhosted + +import ( + "os" + "path/filepath" + "runtime" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +// A registry may send several WWW-Authenticate headers. The Bearer one is +// answered wherever it appears; reading only the first reported a registry +// answering "Negotiate" then "Bearer" as a clean skip. +func TestSelectAuthChallenge(t *testing.T) { + bearer := `Bearer realm="https://auth.example/token",service="registry"` + assert.Equal(t, bearer, selectAuthChallenge([]string{"Negotiate", bearer})) + assert.Equal(t, `Basic realm="r"`, selectAuthChallenge([]string{`Basic realm="r"`})) + assert.Equal(t, "", selectAuthChallenge(nil)) +} + +// dockerHome writes ~/.docker/config.json under a temporary HOME and puts a +// fake docker-credential- for each helper on PATH, each answering with +// its own secret. +func dockerHome(t *testing.T, config string, helpers ...string) { + t.Helper() + if runtime.GOOS == "windows" { + t.Skip("shell-script credential helpers") + } + home := t.TempDir() + require.NoError(t, os.MkdirAll(filepath.Join(home, ".docker"), 0o755)) + require.NoError(t, os.WriteFile(filepath.Join(home, ".docker", "config.json"), []byte(config), 0o600)) + t.Setenv("HOME", home) + bin := t.TempDir() + for _, h := range helpers { + script := "#!/bin/sh\n[ \"$1\" = get ] || exit 1\nread server\n" + + "printf '{\"ServerURL\":\"%s\",\"Username\":\"u-" + h + "\",\"Secret\":\"s-" + h + "\"}' \"$server\"\n" + require.NoError(t, os.WriteFile(filepath.Join(bin, "docker-credential-"+h), []byte(script), 0o755)) + } + t.Setenv("PATH", bin+string(os.PathListSeparator)+os.Getenv("PATH")) + prev := credentialHelperTimeout + credentialHelperTimeout = time.Minute + t.Cleanup(func() { credentialHelperTimeout = prev }) +} + +// Docker Desktop leaves only an empty auths entry and keeps the login in +// credsStore, so a working `docker login` must be read through the helper. +func TestCredsFromDockerConfig_UsesCredsStore(t *testing.T) { + dockerHome(t, `{"auths":{"nvcr.io":{}},"credsStore":"store"}`, "store") + u, p, ok := credsFromDockerConfig("nvcr.io") + require.True(t, ok) + assert.Equal(t, "u-store", u) + assert.Equal(t, "s-store", p) +} + +// A per-registry credHelpers entry wins over the global store. +func TestCredsFromDockerConfig_CredHelpersBeatCredsStore(t *testing.T) { + dockerHome(t, `{"credsStore":"store","credHelpers":{"nvcr.io":"ngc"}}`, "store", "ngc") + u, _, ok := credsFromDockerConfig("nvcr.io") + require.True(t, ok) + assert.Equal(t, "u-ngc", u) +} + +// Inline credentials are still read without running any helper. +func TestCredsFromDockerConfig_InlineAuthNeedsNoHelper(t *testing.T) { + dockerHome(t, `{"auths":{"nvcr.io":{"username":"x","password":"y"}},"credsStore":"missing"}`) + u, p, ok := credsFromDockerConfig("nvcr.io") + require.True(t, ok) + assert.Equal(t, "x", u) + assert.Equal(t, "y", p) +} + +// The helper name comes from a file; anything that is not a plain helper +// suffix is refused rather than put on an exec path. +func TestCredsFromDockerConfig_RefusesUnsafeHelperName(t *testing.T) { + // The helper exists on PATH, so only the name check can refuse it. + dockerHome(t, `{"credsStore":"bad name"}`, "bad name") + _, _, ok := credsFromDockerConfig("nvcr.io") + assert.False(t, ok) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/helm_runtime.go b/src/clis/nvcf-cli/internal/selfhosted/helm_runtime.go index 7af90e8492..6441e14149 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/helm_runtime.go +++ b/src/clis/nvcf-cli/internal/selfhosted/helm_runtime.go @@ -71,7 +71,7 @@ func checkHelmRuntimeCompatibility(ctx context.Context, helmfileSpec, helmSpec B r := CheckResult{ ID: "local-host-tools-helm-runtime", Category: "local-host-tools", - Severity: "error", + Severity: SeverityError, HintURL: "https://github.com/helmfile/helmfile#installation", } _, helmfileVersion, err := probeBinarySpecVersion(ctx, helmfileSpec) @@ -93,7 +93,7 @@ func checkHelmRuntimeCompatibility(ctx context.Context, helmfileSpec, helmSpec B return r } r.Passed = true - r.Severity = "info" + r.Severity = SeverityInfo r.Detail = string(mode) r.Message = fmt.Sprintf("Helm %s with helmfile %s uses %s mode", helmVersion, helmfileVersion, mode) return r diff --git a/src/clis/nvcf-cli/internal/selfhosted/output.go b/src/clis/nvcf-cli/internal/selfhosted/output.go index c0fdf3d919..cbfb7920dc 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/output.go +++ b/src/clis/nvcf-cli/internal/selfhosted/output.go @@ -77,7 +77,7 @@ func mark(r CheckResult) string { switch { case r.Passed: return "✓" - case r.Severity == "warning": + case r.Severity == SeverityWarning: return "‼" default: return "×" @@ -98,10 +98,10 @@ func statusGlyph(status string) string { func overallStatus(results []CheckResult) string { hasWarn := false for _, r := range results { - if !r.Passed && r.Severity == "error" { - return "error" + if r.IsBlockingFailure() { + return SeverityError } - if !r.Passed && r.Severity == "warning" { + if r.IsWarning() { hasWarn = true } } diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index 0ebb35d7d4..3ab81ecccc 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -54,6 +54,33 @@ const ( SeverityError = "error" ) +// IsBlockingFailure reports whether the result fails the run: a miss at error +// severity. The exit code, the final event, the category counts and the +// summaries all derive from this one rule so they cannot disagree. +func (r CheckResult) IsBlockingFailure() bool { + return !r.Passed && r.Severity == SeverityError +} + +// IsWarning reports a miss that does not fail the run. +func (r CheckResult) IsWarning() bool { + return !r.Passed && !r.IsBlockingFailure() +} + +// CountResults tallies results by the one rule every count uses. +func CountResults(results []CheckResult) (passed, failed, warned int) { + for _, r := range results { + switch { + case r.Passed: + passed++ + case r.IsBlockingFailure(): + failed++ + default: + warned++ + } + } + return passed, failed, warned +} + // One row in the linkerd-style output. Logs is internal-only and is not // forwarded into the CheckCompleted JSONL wire event, so it never leaks // into the stable JSON contract. @@ -85,7 +112,7 @@ func checkBinary(ctx context.Context, s BinarySpec) CheckResult { r := CheckResult{ ID: "local-host-tools-" + s.Name, Category: "local-host-tools", - Severity: "error", + Severity: SeverityError, HintURL: s.HintURL, } path, err := s.LookPath(s.Name) @@ -533,18 +560,18 @@ func nodeInotifyCheck(prober NodeInotifyProber, kubeContext string) binaryCheckS Run: func(ctx context.Context) CheckResult { r := CheckResult{ ID: id, - Severity: "error", + Severity: SeverityError, HintURL: inotifyHintURL, } limits, err := prober(ctx, kubeContext) if err != nil { - r.Severity = "warning" + r.Severity = SeverityWarning r.Message = "node inotify probe failed: " + err.Error() r.Err = err return r } if len(limits) == 0 { - r.Severity = "warning" + r.Severity = SeverityWarning r.Passed = true r.Message = "no nodes returned by inotify probe; skipping" return r @@ -581,7 +608,7 @@ func nodeInotifyCheck(prober NodeInotifyProber, kubeContext string) binaryCheckS return r } if len(probeErrs) > 0 { - r.Severity = "warning" + r.Severity = SeverityWarning r.Message = fmt.Sprintf( "could not probe inotify limits on %d node(s): %s", len(probeErrs), strings.Join(probeErrs, "; "), @@ -629,18 +656,18 @@ func clusterValidatorCheck( } if result.Err != nil { - r.Severity = "warning" + r.Severity = SeverityWarning r.Message = "cluster-validator did not complete: " + result.Err.Error() r.Err = result.Err return r } r.Passed = result.Passed if result.Passed { - r.Severity = "info" + r.Severity = SeverityInfo r.Message = "cluster passed cluster-validator built-in checks" return r } - r.Severity = "error" + r.Severity = SeverityError r.Message = fmt.Sprintf("cluster-validator reported failures (exit code %d)", result.ExitCode) return r }, @@ -711,11 +738,11 @@ func registryCredentialCheck(checker RegistryCredentialChecker, entry RegistryEn switch { case errors.As(err, &skipped): r.Passed = true - r.Severity = "info" + r.Severity = SeverityInfo r.Message = entry.Registry + ": skipped (" + skipped.reason + ")" return r case errors.As(err, &unverified): - r.Severity = "warning" + r.Severity = SeverityWarning r.Message = entry.Registry + ": " + err.Error() r.Err = err return r @@ -725,7 +752,7 @@ func registryCredentialCheck(checker RegistryCredentialChecker, entry RegistryEn return r } r.Passed = true - r.Severity = "info" + r.Severity = SeverityInfo r.Message = entry.Registry + ": credentials valid" return r }, @@ -761,7 +788,7 @@ func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namesp ID: id, HumanLabel: "checking for stale NVCF namespaces...", Run: func(ctx context.Context) CheckResult { - r := CheckResult{ID: id, Severity: "error"} + r := CheckResult{ID: id, Severity: SeverityError} // Resolve the context before probing, then probe that exact name. // Resolving afterwards leaves a window where the current-context // changes in between, which would have the hints delete namespaces @@ -769,13 +796,13 @@ func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namesp probedContext := effectiveKubeContext(kubeContext) stale, err := prober(ctx, probedContext, namespaces) if err != nil { - r.Severity = "warning" + r.Severity = SeverityWarning r.Message = "stale namespace probe failed: " + err.Error() r.Err = err return r } if len(stale) == 0 { - r.Severity = "info" + r.Severity = SeverityInfo r.Passed = true r.Message = "no stale NVCF namespaces detected" return r @@ -833,10 +860,16 @@ func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namesp // produces a command that silently inspects only the last one // and reports the rest as empty, which is the opposite of what // an operator deciding whether to delete them needs. + // Enumerate every namespaced kind, not `get all`: that omits + // PVCs, Secrets, ConfigMaps and custom resources, so after a + // partial teardown it reports "No resources found" over the + // Cassandra volumes and the OpenBao unseal Secret. for _, ns := range emptyShell { hints = append(hints, fmt.Sprintf( - "inspect %s and remove it only after confirming it is unused: %s get all -n %s", - ns, kctl, ns)) + "inspect %s and remove it only after confirming it is unused: "+ + "%s api-resources --verbs=list --namespaced -o name | "+ + "xargs -n1 %s get -n %s --show-kind --ignore-not-found", + ns, kctl, kctl, ns)) } } // Only a namespace stuck Terminating blocks the run. "No Helm @@ -890,7 +923,7 @@ func placeholderCheck(id, label, message string) binaryCheckSpec { Run: func(_ context.Context) CheckResult { return CheckResult{ ID: id, - Severity: "info", + Severity: SeverityInfo, Passed: true, Message: message, } @@ -909,7 +942,7 @@ func sisReachabilityCheck(sisURL string) binaryCheckSpec { req, err := http.NewRequestWithContext(ctx, http.MethodGet, strings.TrimRight(sisURL, "/")+"/v1/health", nil) if err != nil { return CheckResult{ - ID: "sis-reachability", Severity: "error", Passed: false, + ID: "sis-reachability", Severity: SeverityError, Passed: false, Message: "SIS request build failed: " + err.Error(), HintURL: "https://docs.nvidia.com/nvcf/self-hosted/troubleshooting#sis-reachability", } @@ -917,7 +950,7 @@ func sisReachabilityCheck(sisURL string) binaryCheckSpec { resp, err := cli.Do(req) if err != nil { return CheckResult{ - ID: "sis-reachability", Severity: "error", Passed: false, + ID: "sis-reachability", Severity: SeverityError, Passed: false, Message: "SIS unreachable: " + err.Error(), HintURL: "https://docs.nvidia.com/nvcf/self-hosted/troubleshooting#sis-reachability", } @@ -925,13 +958,13 @@ func sisReachabilityCheck(sisURL string) binaryCheckSpec { defer resp.Body.Close() if resp.StatusCode >= 500 { return CheckResult{ - ID: "sis-reachability", Severity: "error", Passed: false, + ID: "sis-reachability", Severity: SeverityError, Passed: false, Message: fmt.Sprintf("SIS returned %d", resp.StatusCode), HintURL: "https://docs.nvidia.com/nvcf/self-hosted/troubleshooting#sis-reachability", } } return CheckResult{ - ID: "sis-reachability", Severity: "info", Passed: true, + ID: "sis-reachability", Severity: SeverityInfo, Passed: true, Message: fmt.Sprintf("SIS reachable (%d)", resp.StatusCode), } }, @@ -961,7 +994,7 @@ func runPreflightImpl(ctx context.Context, cfg PreflightConfig, role Role, rc Ro categories := buildCategories(cfg, role, rc) for _, cat := range categories { catStart := time.Now() - var passed, failed int + var catResults []CheckResult for _, spec := range cat.checks { if ctx.Err() != nil { return all @@ -983,17 +1016,15 @@ func runPreflightImpl(ctx context.Context, cfg PreflightConfig, role Role, rc Ro Detail: res.Detail, HintURL: res.HintURL, }) - if res.Passed { - passed++ - } else { - failed++ - } + catResults = append(catResults, res) } + passed, failed, warned := CountResults(catResults) _ = sink.Emit(ctx, progress.CategoryCompleted{ - Category: cat.name, - PassedCount: passed, - FailedCount: failed, - DurationSec: time.Since(catStart).Seconds(), + Category: cat.name, + PassedCount: passed, + FailedCount: failed, + WarningCount: warned, + DurationSec: time.Since(catStart).Seconds(), }) } return all diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight_test.go b/src/clis/nvcf-cli/internal/selfhosted/preflight_test.go index 862d6bc591..66725d4662 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight_test.go @@ -702,3 +702,17 @@ func TestMergeNamespaces_DedupesAndKeepsOrder(t *testing.T) { assert.Equal(t, []string{"a", "b", "c"}, got) assert.Nil(t, mergeNamespaces(nil, nil)) } + +// Every count derives from one rule: only an error-severity miss fails; any +// other miss is a warning. +func TestCountResults_OneRule(t *testing.T) { + p, f, w := CountResults([]CheckResult{ + {Passed: true, Severity: SeverityInfo}, + {Passed: false, Severity: SeverityError}, + {Passed: false, Severity: SeverityWarning}, + {Passed: false, Severity: SeverityInfo}, + }) + assert.Equal(t, 1, p) + assert.Equal(t, 1, f) + assert.Equal(t, 2, w) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/event.go b/src/clis/nvcf-cli/internal/selfhosted/progress/event.go index a0bb6075da..b69d96fb1a 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/event.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/event.go @@ -288,8 +288,11 @@ func (CheckCompleted) kind() eventKind { return "check_completed" } type CategoryCompleted struct { Category string PassedCount int - FailedCount int - DurationSec float64 + // FailedCount counts error-severity failures only, the ones that fail the + // run; WarningCount counts the non-passing rest. + FailedCount int + WarningCount int + DurationSec float64 } func (CategoryCompleted) kind() eventKind { return "category_completed" } diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/render_jsonl.go b/src/clis/nvcf-cli/internal/selfhosted/progress/render_jsonl.go index 736f861e06..17a3d85df4 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/render_jsonl.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/render_jsonl.go @@ -547,12 +547,13 @@ func (r *JSONLRenderer) toWire(e Event, ts string) any { } case CategoryCompleted: return wireCategoryCompleted{ - Event: "category_completed", - TS: ts, - Category: ev.Category, - PassedCount: ev.PassedCount, - FailedCount: ev.FailedCount, - DurationSec: ev.DurationSec, + Event: "category_completed", + TS: ts, + Category: ev.Category, + PassedCount: ev.PassedCount, + FailedCount: ev.FailedCount, + WarningCount: ev.WarningCount, + DurationSec: ev.DurationSec, } } return nil @@ -750,12 +751,13 @@ type wireCheckCompleted struct { } type wireCategoryCompleted struct { - Event string `json:"event"` - TS string `json:"ts"` - Category string `json:"category"` - PassedCount int `json:"passedCount"` - FailedCount int `json:"failedCount"` - DurationSec float64 `json:"durationSec"` + Event string `json:"event"` + TS string `json:"ts"` + Category string `json:"category"` + PassedCount int `json:"passedCount"` + FailedCount int `json:"failedCount"` + WarningCount int `json:"warningCount"` + DurationSec float64 `json:"durationSec"` } // Wire structs for composed status snapshot (Plan Deviation #19 / §6.5.4). diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/render_plain.go b/src/clis/nvcf-cli/internal/selfhosted/progress/render_plain.go index 1d3046f07c..3c37759008 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/render_plain.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/render_plain.go @@ -239,8 +239,8 @@ func (r *PlainRenderer) Emit(_ context.Context, e Event) error { } return r.writef("\n") case CategoryCompleted: - return r.writef("%s [pre] category_completed %-25spassed=%d failed=%d duration=%gs\n", - ts, ev.Category, ev.PassedCount, ev.FailedCount, ev.DurationSec) + return r.writef("%s [pre] category_completed %-25spassed=%d failed=%d warnings=%d duration=%gs\n", + ts, ev.Category, ev.PassedCount, ev.FailedCount, ev.WarningCount, ev.DurationSec) case DrainProgress: return r.writef("%s [%02d/%d] drain-active: %s → %s\n", ts, ev.Num, r.effectiveTotalPhases(), ev.Deployment, ev.State) diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go index 16b10cb677..6191c974dd 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go @@ -1819,7 +1819,7 @@ func (m Model) viewCheck(now time.Time) string { } // ── status line ─────────────────────────────────────────────────────────── - passed, failed, total := m.checkTally() + passed, failed, warned, total := m.checkTally() if m.finished && m.checkFinalTotal > 0 { passed = m.checkFinalPassed failed = m.checkFinalFailed @@ -1843,16 +1843,22 @@ func (m Model) viewCheck(now time.Time) string { } allFinished := !anyInFlight && m.finished + tally := fmt.Sprintf("%d/%d passed, %d failed", passed, total, failed) + if warned > 0 { + tally += fmt.Sprintf(", %d warning(s)", warned) + } var statusLine string switch { case anyInFlight || (!m.finished && len(m.checkCategories) > 0 && !allFinished): - statusLine = fmt.Sprintf("Status: in progress (%d/%d passed, 0 failed)", passed, total) + statusLine = fmt.Sprintf("Status: in progress (%d/%d passed, %d failed)", passed, total, failed) case m.finished && failed > 0: - statusLine = fmt.Sprintf("Status: ✘ failed (%d/%d passed, %d failed)", passed, total, failed) - case m.finished && failed == 0: - statusLine = fmt.Sprintf("Status: ✓ ok (%d/%d passed, 0 failed)", passed, total) + statusLine = fmt.Sprintf("Status: ✘ failed (%s)", tally) + case m.finished && warned > 0: + statusLine = fmt.Sprintf("Status: ✓ ok with warnings (%s)", tally) + case m.finished: + statusLine = fmt.Sprintf("Status: ✓ ok (%s)", tally) default: - statusLine = fmt.Sprintf("Status: in progress (%d/%d passed, 0 failed)", passed, total) + statusLine = fmt.Sprintf("Status: in progress (%d/%d passed, %d failed)", passed, total, failed) } b.WriteString("\n") @@ -1863,20 +1869,26 @@ func (m Model) viewCheck(now time.Time) string { } // checkTally returns (passed, failed, total) counts from all accumulated check rows. -func (m Model) checkTally() (passed, failed, total int) { +// checkTally counts finished rows by the same rule as the final event: only an +// error-severity miss is a failure, any other miss is a warning. +func (m Model) checkTally() (passed, failed, warned, total int) { for _, cat := range m.checkCategories { for _, row := range cat.checks { total++ - if row.finished { - if row.passed { - passed++ - } else { - failed++ - } + if !row.finished { + continue + } + switch { + case row.passed: + passed++ + case row.severity == "error": + failed++ + default: + warned++ } } } - return passed, failed, total + return passed, failed, warned, total } // ─── style helpers ──────────────────────────────────────────────────────────── diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty_test.go b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty_test.go index df09f04d18..e55823d69d 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty_test.go @@ -881,3 +881,26 @@ func TestTTY_StatusWatchTickResetsBetweenSnapshots(t *testing.T) { assert.Equal(t, 1, sisCount, "rendered View should show SIS exactly once after 5 watch ticks, not %d times", sisCount) } + +// A finished run with a warning says so and accounts for it, rather than +// printing "ok (2/3 passed, 0 failed)" with one check unexplained. +func TestTTY_CheckCompleteWithWarning(t *testing.T) { + t.Setenv("NO_COLOR", "1") + m := NewModel(ModelOpts{Mode: ModeCheck, AsciiOnly: true, TotalChecks: 3, + NowFunc: func() time.Time { return ts("2026-04-29T03:45:12Z") }}) + m.SetSize(120, 40) + events := []Event{ + CheckStarted{Category: "local-host-tools", ID: "a"}, + CheckCompleted{Category: "local-host-tools", ID: "a", Passed: true, Severity: "info", Message: "a"}, + CheckStarted{Category: "local-host-tools", ID: "b"}, + CheckCompleted{Category: "local-host-tools", ID: "b", Passed: true, Severity: "info", Message: "b"}, + CheckStarted{Category: "registry-credentials", ID: "c"}, + CheckCompleted{Category: "registry-credentials", ID: "c", Passed: false, Severity: "warning", Message: "c"}, + Final{Success: true, TotalChecks: 3, PassedCount: 2, FailedCount: 0}, + } + var model tea.Model = m + for _, e := range events { + model, _ = model.(Model).applyCheckEvent(e) + } + assert.Contains(t, model.(Model).View(), "ok with warnings (2/3 passed, 0 failed, 1 warning(s))") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/testdata/jsonl_check.golden b/src/clis/nvcf-cli/internal/selfhosted/progress/testdata/jsonl_check.golden index 597f7b68f9..5c668e09bc 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/testdata/jsonl_check.golden +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/testdata/jsonl_check.golden @@ -5,5 +5,5 @@ {"event":"check_completed","ts":"2026-04-29T03:45:01Z","category":"local-host-tools","id":"helmfile-on-path","passed":true,"severity":"info","message":"helmfile 0.162.0 on PATH","detail":"0.162.0"} {"event":"check_started","ts":"2026-04-29T03:45:08Z","category":"pre-kubernetes-setup","id":"gateway-api"} {"event":"check_completed","ts":"2026-04-29T03:45:08Z","category":"pre-kubernetes-setup","id":"gateway-api","passed":false,"severity":"error","message":"Gateway API CRDs not installed","hintURL":"https://docs.nvidia.com/nvcf/self-hosted/gateway-api"} -{"event":"category_completed","ts":"2026-04-29T03:45:08Z","category":"pre-kubernetes-setup","passedCount":13,"failedCount":1,"durationSec":2.4} +{"event":"category_completed","ts":"2026-04-29T03:45:08Z","category":"pre-kubernetes-setup","passedCount":13,"failedCount":1,"warningCount":0,"durationSec":2.4} {"event":"final","ts":"2026-04-29T03:45:09Z","success":false,"durationSec":0,"droppedProgressEvents":0,"verdict":"failed","totalChecks":14,"passedCount":13,"failedCount":1} diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/testdata/plain_check.golden b/src/clis/nvcf-cli/internal/selfhosted/progress/testdata/plain_check.golden index 6312b923fe..2ddf8bc6ed 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/testdata/plain_check.golden +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/testdata/plain_check.golden @@ -4,5 +4,5 @@ 2026-04-29T03:45:01Z [pre] check_completed local-host-tools/helmfile-on-path passed=true detail="0.162.0" 2026-04-29T03:45:08Z [pre] check_started pre-kubernetes-setup/gateway-api 2026-04-29T03:45:08Z [pre] check_completed pre-kubernetes-setup/gateway-api passed=false severity=error message="Gateway API CRDs not installed" hintURL="https://docs.nvidia.com/nvcf/self-hosted/gateway-api" -2026-04-29T03:45:08Z [pre] category_completed pre-kubernetes-setup passed=13 failed=1 duration=2.4s +2026-04-29T03:45:08Z [pre] category_completed pre-kubernetes-setup passed=13 failed=1 warnings=0 duration=2.4s 2026-04-29T03:45:09Z final verdict=failed totalChecks=14 passed=13 failed=1 diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go index 9336d8b798..e06d477d8f 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go @@ -99,7 +99,7 @@ func probeRegistryCredential(ctx context.Context, registry, repoHint string, cri // identify itself as an OCI registry so a captive portal or TLS-intercepting // proxy answering 200 HTML is not read as success. isOCI := resp.Header.Get("Docker-Distribution-Api-Version") != "" || - strings.Contains(resp.Header.Get("Www-Authenticate"), "realm") + strings.Contains(strings.Join(resp.Header.Values("Www-Authenticate"), ","), "realm") switch resp.StatusCode { case http.StatusOK: @@ -132,7 +132,7 @@ func probeRegistryCredential(ctx context.Context, registry, repoHint string, cri // from the configured image (repoHint). Using a fake repo name causes // org-level 403s from NGC and GHCR for non-existent orgs, which is // indistinguishable from bad credentials. - wwwAuth := resp.Header.Get("Www-Authenticate") + wwwAuth := selectAuthChallenge(resp.Header.Values("Www-Authenticate")) resp.Body.Close() // Only the Bearer flow is implemented. Self-hosted Harbor and htpasswd @@ -152,8 +152,9 @@ func probeRegistryCredential(ctx context.Context, registry, repoHint string, cri // rejected" when the real diagnosis is "no credentials configured." if _, _, hasCreds := credentialsForRegistry(registry); !hasCreds { // Same situation as the critical path below, so the same verdict: - // no readable local credential is not proof that none exists, since - // a credential helper is invisible here. + // no readable local credential is not proof that none exists (a + // helper binary may be missing from PATH, or the login may live + // outside the docker config entirely). return errRegistryCredentialsUnverified{registry: registry} } return fmt.Errorf("credentials rejected by %s: %w", registry, err) @@ -172,6 +173,22 @@ type errRegistryProbeSkipped struct{ reason string } func (e errRegistryProbeSkipped) Error() string { return e.reason } +// selectAuthChallenge picks the challenge to answer when a registry offers +// several, as it may in separate WWW-Authenticate headers: the Bearer one if +// present, otherwise the first. Reading only the first header reported a +// registry answering "Negotiate" then "Bearer" as a clean skip. +func selectAuthChallenge(challenges []string) string { + for _, c := range challenges { + if strings.EqualFold(authChallengeScheme(c), "Bearer") { + return c + } + } + if len(challenges) > 0 { + return challenges[0] + } + return "" +} + // authChallengeScheme returns the auth scheme named by a WWW-Authenticate // header, or "" when the header is absent or malformed. func authChallengeScheme(header string) string { @@ -189,10 +206,10 @@ func authChallengeScheme(header string) string { // for the registry. // // A missing credential is a warning, not a hard failure: credsFromDockerConfig -// reads only inline auth entries, so a workstation using a credential helper -// (credsStore on Docker Desktop, docker-credential-pass on Linux) has a working -// docker login that is invisible here. The install path also mints or mirrors a -// pull secret of its own, so preflight must not be the thing that blocks. +// reads inline auth entries and asks credsStore / credHelpers helpers, but a +// helper binary can be absent from PATH or refuse to answer non-interactively. +// The install path also mints or mirrors a pull secret of its own, so preflight +// must not be the thing that blocks. func requireConfiguredCredentials(registry string) error { if _, _, ok := credentialsForRegistry(registry); ok { return nil diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go index 02a42b108e..c93c8dccb9 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go @@ -20,6 +20,8 @@ package selfhosted import ( "context" "fmt" + "os" + "strings" corev1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" @@ -136,12 +138,17 @@ func helmReleaseExists( return false, fmt.Errorf("gave up after %d pages scanning for Helm releases", helmReleaseListMaxPages) } +// helmReleasesAreInCluster reports whether Helm stores release state as +// in-cluster Secrets or ConfigMaps, the drivers this probe can see. +func helmReleasesAreInCluster() bool { + return !strings.EqualFold(strings.TrimSpace(os.Getenv("HELM_DRIVER")), "sql") +} + func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, namespaces []string) ([]StaleNamespace, error) { var stale []StaleNamespace // noRelease is held back until we know the Helm storage driver keeps its // state in-cluster at all; see the gate below. var noRelease []string - anyHelmReleaseSeen := false for _, name := range namespaces { ns, err := client.CoreV1().Namespaces().Get(ctx, name, metav1.GetOptions{}) if err != nil { @@ -171,7 +178,6 @@ func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, name return stale, fmt.Errorf("list Helm secrets in %s: %w", name, err) } if found { - anyHelmReleaseSeen = true continue // healthy: active Helm release found via the secret driver } found, err = helmReleaseExists( @@ -186,17 +192,17 @@ func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, name return stale, fmt.Errorf("list Helm configmaps in %s: %w", name, err) } if found { - anyHelmReleaseSeen = true continue } noRelease = append(noRelease, name) } - // Only trust the "no Helm release" signal when at least one owner=helm - // object was seen somewhere. HELM_DRIVER=sql keeps release state in a - // database with no in-cluster object at all, so without this every - // namespace of a healthy production install reports stale. - if anyHelmReleaseSeen { + // Trust the "no Helm release" signal unless Helm keeps its release state + // outside the cluster. HELM_DRIVER=sql stores it in a database, so every + // namespace of a healthy install would look stale. Inferring the driver + // from "no owner=helm object anywhere" hid exactly the state `down` + // leaves behind: every release destroyed, every namespace and PVC kept. + if helmReleasesAreInCluster() { for _, name := range noRelease { stale = append(stale, StaleNamespace{Name: name, Reason: "no Helm release"}) } diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go index e99a06868f..821947fa8d 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go @@ -251,7 +251,8 @@ func TestStaleNamespaceCheck_MessageNamesAllStaleNamespaces(t *testing.T) { assert.Contains(t, r.Message, "api-keys") assert.Contains(t, r.Message, "/api/v1/namespaces/nvcf/finalize", "the remediation must use the finalize subresource; a plain patch is silently reverted") - assert.Contains(t, r.Message, "kubectl get all -n api-keys") + assert.Contains(t, r.Message, "xargs -n1 kubectl get -n api-keys --show-kind --ignore-not-found") + assert.NotContains(t, r.Message, "get all", "get all omits PVCs, Secrets and custom resources") } // A namespace on a real install holds many non-Helm Secrets (ServiceAccount @@ -325,7 +326,7 @@ func TestStaleNamespaceCheck_HintsPinTheProbedContext(t *testing.T) { assert.True(t, strings.HasPrefix(cmd, "--context cp-ctx "), "unpinned kubectl invocation in hint: kubectl %s", cmd) } - assert.Contains(t, r.Message, "kubectl --context cp-ctx get all -n api-keys") + assert.Contains(t, r.Message, "xargs -n1 kubectl --context cp-ctx get -n api-keys") } func TestStaleNamespaceCheck_HintsQuoteTheContext(t *testing.T) { @@ -334,7 +335,7 @@ func TestStaleNamespaceCheck_HintsQuoteTheContext(t *testing.T) { return []StaleNamespace{{Name: "nvcf", Reason: "no Helm release"}}, nil } r := staleNamespaceCheck(prober, "my ctx", []string{"nvcf"}).Run(context.Background()) - assert.Contains(t, r.Message, "--context 'my ctx' get all -n nvcf", + assert.Contains(t, r.Message, "--context 'my ctx' get -n nvcf", "a context name with a space must be quoted so the pasted command does not split it") } @@ -367,7 +368,7 @@ func TestStaleNamespaceCheck_HintsNameTheCurrentContext(t *testing.T) { return []StaleNamespace{{Name: "nvcf", Reason: "no Helm release"}}, nil } r := staleNamespaceCheck(prober, "", []string{"nvcf"}).Run(context.Background()) - assert.Contains(t, r.Message, "kubectl --context k3d-local get all -n nvcf") + assert.Contains(t, r.Message, "xargs -n1 kubectl --context k3d-local get -n nvcf") } // An unreadable kubeconfig must not break the hint; it degrades to no flag. @@ -377,7 +378,7 @@ func TestStaleNamespaceCheck_HintsOmitUnknownContext(t *testing.T) { return []StaleNamespace{{Name: "nvcf", Reason: "no Helm release"}}, nil } r := staleNamespaceCheck(prober, "", []string{"nvcf"}).Run(context.Background()) - assert.Contains(t, r.Message, "kubectl get all -n nvcf") + assert.Contains(t, r.Message, "xargs -n1 kubectl get -n nvcf") } // The probe must run against the same context the hints name. Resolving the @@ -395,18 +396,31 @@ func TestStaleNamespaceCheck_ProbesTheResolvedContext(t *testing.T) { "the probe must target the resolved context, not whatever is current when it runs") } -// HELM_DRIVER=sql keeps release state in a database, so a healthy production -// install has no owner=helm object anywhere. Without a gate every stack -// namespace reports stale at error severity with a delete remediation. -func TestProbeStaleNamespaces_NoHelmObjectsAnywhereReportsNothing(t *testing.T) { +// `down` destroys every release but keeps the namespaces and their PVCs, so no +// owner=helm object exists anywhere. With the default driver that is exactly +// the stale state to report; a reinstall would silently reattach the old +// Cassandra and OpenBao volumes. +func TestProbeStaleNamespaces_AfterDownReportsEveryNamespace(t *testing.T) { + t.Setenv("HELM_DRIVER", "") client := fake.NewSimpleClientset( &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "nvcf"}}, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "sis"}}, ) got, err := probeStaleNamespaces(context.Background(), client, []string{"nvcf", "sis"}) require.NoError(t, err) - assert.Empty(t, got, - "with no in-cluster Helm state at all the signal is unusable, not evidence of staleness") + assert.Len(t, got, 2) +} + +// HELM_DRIVER=sql keeps release state in a database, so the absence of an +// in-cluster release object says nothing and must not be reported. +func TestProbeStaleNamespaces_SQLDriverSkipsTheNoReleaseSignal(t *testing.T) { + t.Setenv("HELM_DRIVER", "sql") + client := fake.NewSimpleClientset( + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "nvcf"}}, + ) + got, err := probeStaleNamespaces(context.Background(), client, []string{"nvcf"}) + require.NoError(t, err) + assert.Empty(t, got) } // A namespace stuck Terminating is still reported even when no Helm release @@ -465,6 +479,6 @@ func TestStaleNamespaceCheck_HintsOneCommandPerNamespace(t *testing.T) { assert.NotContains(t, r.Message, "-n api-keys -n ess", "a joined namespace list silently inspects only the last one") - assert.Contains(t, r.Message, "get all -n api-keys") - assert.Contains(t, r.Message, "get all -n ess") + assert.Contains(t, r.Message, "get -n api-keys --show-kind") + assert.Contains(t, r.Message, "get -n ess --show-kind") } diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go index 59de253e63..99c6434c88 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go @@ -27,6 +27,7 @@ import ( "net/http" "net/url" "os" + "os/exec" "path/filepath" "regexp" "sort" @@ -155,7 +156,7 @@ func fetchWithBearer(ctx context.Context, rawURL, registry, repo string) ([]byte return nil, fmt.Errorf("registry returned %s", resp.Status) } // Capture the auth challenge before closing. - wwwAuth := resp.Header.Get("Www-Authenticate") + wwwAuth := selectAuthChallenge(resp.Header.Values("Www-Authenticate")) resp.Body.Close() // Generic OCI Bearer-token exchange: uses the realm/service/scope from @@ -536,12 +537,24 @@ func credsFromDockerConfig(registry string) (string, string, bool) { Username string `json:"username"` Password string `json:"password"` } `json:"auths"` + CredsStore string `json:"credsStore"` + CredHelpers map[string]string `json:"credHelpers"` } if err := json.Unmarshal(body, &doc); err != nil { return "", "", false } + // A per-registry helper wins over the global store, as in docker itself. + // Docker Desktop keeps every login in credsStore and leaves only an empty + // auths entry, so without this a working `docker login` is invisible. + helper := doc.CredHelpers[registry] + if helper == "" { + helper = doc.CredsStore + } entry, ok := doc.Auths[registry] - if !ok { + if !ok || (entry.Auth == "" && entry.Username == "") { + if helper != "" { + return credsFromHelper(helper, registry) + } return "", "", false } if entry.Username != "" && entry.Password != "" { @@ -561,6 +574,40 @@ func credsFromDockerConfig(registry string) (string, string, bool) { return "", "", false } +// credentialHelperName matches the docker-credential- suffixes docker +// accepts. Anything else is refused rather than put on an exec path. +var credentialHelperName = regexp.MustCompile(`^[A-Za-z0-9][A-Za-z0-9_.-]*$`) + +// credentialHelperTimeout bounds one helper call; a helper waiting on a +// keychain prompt must not stall preflight. A var so tests can allow for a +// loaded machine starting a freshly written helper script. +var credentialHelperTimeout = 5 * time.Second + +// credsFromHelper asks docker-credential- for registry's credential +// using the credential-helper protocol docker uses: "get" with the server URL +// on stdin, JSON {"Username","Secret"} on stdout. +func credsFromHelper(helper, registry string) (string, string, bool) { + if !credentialHelperName.MatchString(helper) { + return "", "", false + } + ctx, cancel := context.WithTimeout(context.Background(), credentialHelperTimeout) + defer cancel() + cmd := exec.CommandContext(ctx, "docker-credential-"+helper, "get") + cmd.Stdin = strings.NewReader(registry) + out, err := cmd.Output() + if err != nil { + return "", "", false + } + var cred struct { + Username string `json:"Username"` + Secret string `json:"Secret"` + } + if err := json.Unmarshal(out, &cred); err != nil || cred.Secret == "" { + return "", "", false + } + return cred.Username, cred.Secret, true +} + // pickBestValidatorTag filters to recognized validator tags and returns // the best one: // From b375d4bc24e8269dcb7b2da4db1e9427e80b9106 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 30 Sep 2026 01:21:37 +0530 Subject: [PATCH 40/55] build(nvcf-cli): register the new validator tests and deps with Bazel Signed-off-by: rohithb --- src/clis/nvcf-cli/cmd/BUILD.bazel | 3 +++ src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/clis/nvcf-cli/cmd/BUILD.bazel b/src/clis/nvcf-cli/cmd/BUILD.bazel index f67e61ba00..fffbab7f87 100644 --- a/src/clis/nvcf-cli/cmd/BUILD.bazel +++ b/src/clis/nvcf-cli/cmd/BUILD.bazel @@ -120,7 +120,10 @@ go_test( "main_test.go", "registry_test.go", "root_test.go", + "self_hosted_check_scope_test.go", + "self_hosted_check_stackvalues_test.go", "self_hosted_check_test.go", + "self_hosted_check_validatorenv_test.go", "self_hosted_compute_plane_test.go", "self_hosted_control_plane_test.go", "self_hosted_down_test.go", diff --git a/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel b/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel index 1b08299376..dd7ceab04d 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel +++ b/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel @@ -48,6 +48,7 @@ go_library( "@io_k8s_apimachinery//pkg/api/resource", "@io_k8s_apimachinery//pkg/apis/meta/v1:meta", "@io_k8s_apimachinery//pkg/labels", + "@io_k8s_apimachinery//pkg/types", "@io_k8s_client_go//kubernetes", "@io_k8s_client_go//rest", "@io_k8s_client_go//tools/clientcmd", @@ -59,7 +60,9 @@ go_library( go_test( name = "selfhosted_test", srcs = [ + "clustervalidator_lifecycle_test.go", "clustervalidator_test.go", + "credhelper_test.go", "inotify_probe_test.go", "orchestrator_errors_test.go", "output_test.go", @@ -88,6 +91,7 @@ go_test( "@io_k8s_apimachinery//pkg/apis/meta/v1:meta", "@io_k8s_apimachinery//pkg/runtime", "@io_k8s_apimachinery//pkg/runtime/schema", + "@io_k8s_apimachinery//pkg/types", "@io_k8s_client_go//kubernetes/fake", "@io_k8s_client_go//rest", "@io_k8s_client_go//testing", From fbe7599d5d890d8dfe6adb38c24a3f57020d1ce4 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 30 Sep 2026 01:58:56 +0530 Subject: [PATCH 41/55] fix(nvcf-cli): report a validator image without role support as a warning instead of a failed control plane Signed-off-by: rohithb --- src/clis/nvcf-cli/.nvcf-cli.yaml.template | 5 ++++- .../clustervalidator_lifecycle_test.go | 22 +++++++++++++++++++ .../nvcf-cli/internal/selfhosted/preflight.go | 19 ++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/clis/nvcf-cli/.nvcf-cli.yaml.template b/src/clis/nvcf-cli/.nvcf-cli.yaml.template index f21daa19d5..65d66132f0 100644 --- a/src/clis/nvcf-cli/.nvcf-cli.yaml.template +++ b/src/clis/nvcf-cli/.nvcf-cli.yaml.template @@ -143,7 +143,10 @@ api_keys_owner_id: svc@nvcf-api.local # Image reference for the cluster-validator pod used by # `nvcf-cli self-hosted check`. The CLI runs this image as a Job in the # cluster being checked to verify prerequisites before install. One image -# serves both roles; the Job environment selects the check set. +# serves both roles; the Job environment selects the check set. The +# control-plane checks need an image from an NVCA release that supports +# validator roles; with an older image the CLI reports a warning instead of +# running them. # # The Job needs a ServiceAccount, ClusterRole, and ClusterRoleBinding, which # the CLI creates and removes per run. The kubeconfig context therefore needs diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go index b0595aba11..943f0a938c 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go @@ -359,3 +359,25 @@ func TestClusterValidatorCheck_PassesRegistriesAndEnv(t *testing.T) { assert.Equal(t, regs, got.Registries) assert.Equal(t, env, got.Env) } + +// An image that predates validator roles runs the GPU checks on the control +// plane and fails. Without the role line in its transcript that is the image +// being too old, not the cluster failing, so it is a warning. +func TestClusterValidatorCheck_PreRoleImageIsAWarning(t *testing.T) { + run := func(logs string, passed bool) CheckResult { + cv := func(context.Context, ClusterValidatorParams) ClusterValidatorResult { + return ClusterValidatorResult{Passed: passed, ExitCode: 1, Logs: logs} + } + return clusterValidatorCheck(cv, "", "img:1", "", false, validatorRoleControlPlane, nil, nil).Run(context.Background()) + } + + old := run("Starting NVCF cluster validation\nGPU Resources: none found\n", false) + assert.Equal(t, SeverityWarning, old.Severity) + assert.Contains(t, old.Message, "does not support the control-plane checks") + + current := run("Starting NVCF cluster validation\nValidator role: control-plane\nTier-1: failed\n", false) + assert.Equal(t, SeverityError, current.Severity, "a role-aware image's failure is a real failure") + + unread := run("", false) + assert.Equal(t, SeverityError, unread.Severity, "an empty transcript proves nothing about the image") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index a0bc93b329..8fe5f27b1f 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -661,6 +661,20 @@ func clusterValidatorCheck( r.Err = result.Err return r } + // An image that predates role support ignores VALIDATOR_ROLE and runs + // the compute-plane GPU checks, which fail on a CPU-only control + // plane. The latest tag can be such an image until a release with + // role support is published, so report it as the image being too + // old rather than as the cluster failing. An empty transcript + // proves nothing, so it is left to the normal handling. + if role == validatorRoleControlPlane && result.Logs != "" && + !strings.Contains(result.Logs, validatorRoleMarker+validatorRoleControlPlane) { + r.Severity = SeverityWarning + r.Message = "cluster-validator image does not support the control-plane checks (it ran the " + + "compute-plane set); use an image from an NVCA release that supports validator roles, " + + "or pass --skip-cluster-validation" + return r + } r.Passed = result.Passed if result.Passed { r.Severity = SeverityInfo @@ -674,6 +688,11 @@ func clusterValidatorCheck( } } +// validatorRoleMarker prefixes the line a role-aware validator prints naming +// the check set it runs. Must match RoleMarker in +// nvca/internal/clustervalidator/validator.go. +const validatorRoleMarker = "Validator role: " + // validatorCleanupHint is the command that removes everything one --no-cleanup // run kept. Everything it created carries the run label, so one selector // covers the namespaced objects and one the cluster-scoped RBAC. From 79590671787c07901687667adf2e3530465e4b4c Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 30 Sep 2026 02:00:34 +0530 Subject: [PATCH 42/55] docs(nvcf-cli): drop a comment reference to the removed prior-Job sweep Signed-off-by: rohithb --- src/clis/nvcf-cli/internal/selfhosted/pullsecret.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go index e23daf1376..498262795e 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go @@ -42,8 +42,7 @@ func deleteExactly(o metav1.Object) metav1.DeleteOptions { // delete-and-recreate under the same name changes it. ResourceVersion // additionally pins the object's version, so any concurrent write turns // the delete into a 409 that every sweep then swallows. That bites hardest - // on the singleton Job sweep, whose only target is an active Job whose - // .status the Job controller mutates continuously. + // on a Job, whose .status the Job controller mutates continuously. uid := o.GetUID() return metav1.DeleteOptions{ Preconditions: &metav1.Preconditions{UID: &uid}, From 178461e69f6e1bfb1bbb84ea6390b35a93ec7c9d Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 30 Sep 2026 03:20:09 +0530 Subject: [PATCH 43/55] fix(nvcf-cli): require positive evidence of a legacy validator, clean up on interrupt, and follow docker's credential order Signed-off-by: rohithb --- src/clis/nvcf-cli/cmd/self_hosted_check.go | 10 +- .../agentskill/skilldata_generated.go | 479 +++++++++--------- .../nvcf-cli/internal/selfhosted/BUILD.bazel | 1 + .../internal/selfhosted/clustervalidator.go | 9 + .../clustervalidator_lifecycle_test.go | 32 +- .../internal/selfhosted/credhelper_test.go | 78 ++- .../nvcf-cli/internal/selfhosted/main_test.go | 37 ++ .../nvcf-cli/internal/selfhosted/preflight.go | 26 +- .../internal/selfhosted/pullsecret.go | 13 +- .../internal/selfhosted/pullsecret_test.go | 25 + .../internal/selfhosted/registry_cred.go | 41 +- .../internal/selfhosted/registry_cred_test.go | 27 + .../internal/selfhosted/validatortag.go | 72 ++- .../internal/selfhosted/validatortag_test.go | 35 +- 14 files changed, 617 insertions(+), 268 deletions(-) create mode 100644 src/clis/nvcf-cli/internal/selfhosted/main_test.go diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index 6e64c02d9b..caa4e57221 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -22,8 +22,10 @@ import ( "fmt" "io" "os" + "os/signal" "path/filepath" "strings" + "syscall" "time" "github.com/spf13/cobra" @@ -186,7 +188,13 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { outerTimeout += waitDur } } - ctx, cancel := context.WithTimeout(c.Context(), outerTimeout) + // Catch Ctrl-C and SIGTERM so an interrupted run unwinds through its + // deferred cleanup. Without this the process exits on the signal and the + // validator's cluster-wide ClusterRole, bound to a ServiceAccount in + // default, stays behind until a later check's orphan sweep. + sigCtx, stop := signal.NotifyContext(c.Context(), os.Interrupt, syscall.SIGTERM) + defer stop() + ctx, cancel := context.WithTimeout(sigCtx, outerTimeout) defer cancel() // Legacy --output=json: warn and treat as --json. diff --git a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go index c50b8202f9..526fbada7d 100644 --- a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go +++ b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go @@ -31,7 +31,7 @@ import ( const skillDataZipBase64 = "" + "UEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAASAAkAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4S" + "ewogICJzY2hlbWFWZXJzaW9uIjogMSwKICAiZ2VuZXJhdGVkQXQiOiAiMTk3MC0wMS0wMVQwMDow" + - "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDM3OTgsCiAgImZp" + + "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDM4MDYsCiAgImZp" + "bGVzIjogWwogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvU0tJTEwu" + "bWQiLAogICAgICAic2hhMjU2IjogImFhOWY3ZTI0NmYzODA0YjMzNDNiNjU2MWU1YmNmZTdiYjcy" + "YjI0MDIxOTMzZTA0OWY4NWUwMDI4OTAzYmJmYTQiLAogICAgICAic2l6ZSI6IDI0OTE1CiAgICB9" + @@ -94,16 +94,16 @@ const skillDataZipBase64 = "" + "ICAic2hhMjU2IjogImQwZWZkNjI0Njg3OGQ2MWFlZTZmYmUzNTZjMDI1YmE1ZDU4ZDA1M2UyZmRk" + "ZTNkNzFiYzkyYzYzMTE5ZTM4YjEiLAogICAgICAic2l6ZSI6IDEyNDY5CiAgICB9LAogICAgewog" + "ICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9o" + - "ZWxtZmlsZS1zdHJ1Y3R1cmUubWQiLAogICAgICAic2hhMjU2IjogImVkNDA2NWVhOWNlMTFjY2Q1" + - "Mjc5OTNmOGNlMjdjNDViYzdiZWYxNDM1MzNjNmRiOWFlM2I3ZmU3Njk3ZWQwZDUiLAogICAgICAi" + - "c2l6ZSI6IDEwNzU0CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdl" + + "ZWxtZmlsZS1zdHJ1Y3R1cmUubWQiLAogICAgICAic2hhMjU2IjogImZhOTRiYmZjYjA1MWJhYTJl" + + "MDdjYWFlNDI3YTY3YmI0NWY5ODBkZGJhZGRhMzJhNGEwYzgzMDMzODYzOWU0NjgiLAogICAgICAi" + + "c2l6ZSI6IDEwNzYyCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdl" + "ZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kIiwKICAgICAgInNoYTI1" + "NiI6ICI1MDUyNGU2ZTE5NzExODNiZGM5YWQwYWMzOGE4MDdkZjcyY2MwODUxYjc5ZjUxOGZlMTFh" + "NDhlNDU5N2M4NTBlIiwKICAgICAgInNpemUiOiAxOTc3CiAgICB9LAogICAgewogICAgICAicGF0" + "aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9wdWxsLXNlY3Jl" + "dHMubWQiLAogICAgICAic2hhMjU2IjogImVjMWYzZmZjZDE3ZTVmOTU4M2ZlZTM5NzQ0ZWU4OTdk" + "NDY2YmMzY2Y2Mzg5Mjk0MjY0ZDg5ZTdmOWVkMDFiODciLAogICAgICAic2l6ZSI6IDU2MzIKICAg" + - "IH0KICBdCn0KUEsHCJeqZHVKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + + "IH0KICBdCn0KUEsHCKv81L5KEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + "dGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQFAAEAps4SLS0tCm5hbWU6IG52Y2Yt" + "c2VsZi1tYW5hZ2VkLWNsaQpkZXNjcmlwdGlvbjogfAogIEluc3RhbGwsIG9wZXJhdGUsIGFuZCB0" + "ZWFyIGRvd24gc2VsZi1ob3N0ZWQgTlZJRElBIENsb3VkIEZ1bmN0aW9ucyAoTlZDRikKICBkZXBs" + @@ -3531,240 +3531,241 @@ const skillDataZipBase64 = "" + "ZXIgdXNlcyBgcG93ZXItb2YtdHdvYCB3aGVuIG5vIGxvYWQtYmFsYW5jZXIgY29uZmlndXJhdGlv" + "biBpcwpzZXQuIENvbmZpZ3VyZSBvdGhlciByb3V0aW5nIG1ldGhvZHMgd2l0aCB0aGUKW0xMTSBS" + "ZXF1ZXN0IFJvdXRlciBMb2FkIEJhbGFuY2luZ10oaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9u" + - "dmNmL2Jsb2IvbWFpbi9kb2NzL3VzZXIvbGxtLXJlcXVlc3Qtcm91dGVyLWxvYWQtYmFsYW5jaW5n" + - "Lm1kKQpndWlkZS4KCklmIHRoZSBzaWRlY2FyIGltYWdlIGlzIG1pcnJvcmVkIG91dHNpZGUgdGhl" + - "IHN0YWNrJ3MgZGVmYXVsdCBpbWFnZSByZWdpc3RyeSBhbmQKcmVwb3NpdG9yeSwgc2V0IHRoZSBn" + - "ZW5lcmF0ZWQgd29ya2VyIHNpZGVjYXIgaW1hZ2UgZXhwbGljaXRseToKCmBgYHlhbWwKYXBpOgog" + - "IHJlbW90ZUNvbmZpZzoKICAgIGNvbmZpZ0RhdGE6CiAgICAgIG52Y2Y6CiAgICAgICAgc2lkZWNh" + - "cnM6CiAgICAgICAgICBsbG0tcm91dGVyLWNsaWVudC1pbWFnZTogPHJlZ2lzdHJ5Pi88cmVwb3Np" + - "dG9yeT4vcHlsb246MC4xNC4xCmBgYAoKVGhlIGxlZ2FjeSBgYXBpLmVudi5OVkNGX1NJREVDQVJT" + - "X0xMTV9ST1VURVJfQ0xJRU5UX0lNQUdFYCBwYXRoIGlzIGRlcHJlY2F0ZWQuClRoZSBzdGFjayB0" + - "cmFuc2xhdGVzIGl0IGZvciBvbmUgY29tcGF0aWJpbGl0eSB3aW5kb3csIGJ1dCBuZXcgY29uZmln" + - "dXJhdGlvbnMKbXVzdCB1c2UgdGhlIHJlbW90ZS1jb25maWcgcGF0aC4gQ29uZmxpY3RpbmcgdmFs" + - "dWVzIGZhaWwgcmVuZGVyaW5nLgoKUmVuZGVyIGFuZCBhcHBseSB0aGUgdXBkYXRlZCBjb250cm9s" + - "LXBsYW5lIGVudmlyb25tZW50LCB0aGVuIHJlZnJlc2ggZXZlcnkKcmVnaXN0ZXJlZCBjb21wdXRl" + - "IHBsYW5lIHVzaW5nIHRoZSBzYW1lIGhhbmRvZmYgdXNlZCBmb3IgaXRzIGluc3RhbGxhdGlvbiBz" + - "bwpOVkNBIHJlY2VpdmVzIGBhZ2VudENvbmZpZy5tZXJnZUNvbmZpZ2A6CgpgYGBiYXNoCkhFTE1G" + - "SUxFX0VOVj08ZW52PiBoZWxtZmlsZSB0ZW1wbGF0ZQpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZp" + - "bGUgc3luYwpgYGAKClVzZSB0aGUgY29tcGxldGUgY29tcHV0ZS1wbGFuZSBpbnN0YWxsIGNvbW1h" + - "bmQgZnJvbQpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUt" + - "aW5zdGFsbGF0aW9uLm1kKS4gQQpDTEktcHJvZmlsZSBpbnN0YWxsYXRpb24gbXVzdCByZW1haW4g" + - "cHJvZmlsZS1kcml2ZW47IGEgSGVsbWZpbGUgaW5zdGFsbGF0aW9uCm11c3QgcmVtYWluIHZhbHVl" + - "cy1kcml2ZW4uCgpFeGlzdGluZyBMTE0gZnVuY3Rpb24gdmVyc2lvbnMgcmV0YWluIHRoZSB3b3Jr" + - "ZXItc2lkZWNhciBpbWFnZSBtZXRhZGF0YQpjYXB0dXJlZCB3aGVuIHRoZSB2ZXJzaW9uIGlzIGNy" + - "ZWF0ZWQuIFJlcGxhY2luZyBwb2RzIG9yIHJlZGVwbG95aW5nIHRoZSBzYW1lCnZlcnNpb24gZG9l" + - "cyBub3QgYXBwbHkgYSBuZXcgUHlsb24gaW1hZ2UuIEFmdGVyIHRoZSBjb250cm9sLXBsYW5lIHVw" + - "ZGF0ZSwKY3JlYXRlIGFuZCBkZXBsb3kgYSBuZXcgZnVuY3Rpb24gdmVyc2lvbi4gVmVyaWZ5IHRo" + - "ZSBjb250cm9sIHBsYW5lLCByb3V0ZSwgYW5kCndvcmtlciBzaWRlY2FyOgoKYGBgYmFzaAprdWJl" + - "Y3RsIGdldCBkZXBsb3kgLW4gbnZjZiBsbG0tYXBpLWdhdGV3YXkKa3ViZWN0bCBnZXQgc3RhdGVm" + - "dWxzZXQgLW4gbnZjZiBsbG0tcmVxdWVzdC1yb3V0ZXIKa3ViZWN0bCBnZXQgcG9kcyAtbiBudmNm" + - "IHwgZ3JlcCAtRSAnbGxtLWFwaS1nYXRld2F5fGxsbS1yZXF1ZXN0LXJvdXRlcicKa3ViZWN0bCBn" + - "ZXQgaHR0cHJvdXRlIC1BIHwgZ3JlcCBsbG0Ka3ViZWN0bCAtbiBudmNmLWJhY2tlbmQgZ2V0IHBv" + - "ZCA8ZnVuY3Rpb24tcG9kPiBcCiAgLW8ganNvbnBhdGg9J3tyYW5nZSAuc3BlYy5jb250YWluZXJz" + - "Wz8oQC5uYW1lPT0ibGxtLXdvcmtlciIpXS5hcmdzWypdfXsufXsiXFxuIn17ZW5kfScKYGBgCgpG" + - "b3IgbG9jYWwgcGxhaW50ZXh0IGNsdXN0ZXJzLCB0aGUgYGxsbS13b3JrZXJgIGFyZ3MgbXVzdCBp" + - "bmNsdWRlCmAtLXF1aWMtaW5zZWN1cmVgLgoKRm9yIGxvYWQtYmFsYW5jZXIgc2NoZW1hIGFuZCBh" + - "bGdvcml0aG0gYmVoYXZpb3IsIHNlZSB0aGUKW1N0YXJnYXRlIGNvbmZpZ3VyYXRpb24gZ3VpZGVd" + - "KGh0dHBzOi8vZ2l0aHViLmNvbS9OVklESUEvbnZjZi9ibG9iL21haW4vc3JjL2xpYnJhcmllcy9y" + - "dXN0L3N0YXJnYXRlL2RvY3MvbG9hZC1iYWxhbmNlci1jb25maWd1cmF0aW9uLm1kKS4KCiMjIEhl" + - "bG1maWxlIFNlbGVjdG9ycwoKVGFyZ2V0IHNwZWNpZmljIHJlbGVhc2VzIG9yIGdyb3VwczoKCmBg" + - "YGJhc2gKIyBCeSByZWxlYXNlIGdyb3VwCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + - "bGVjdG9yIHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+" + - "IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1zZXJ2aWNlcyBzeW5jCkhFTE1GSUxF" + - "X0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5j" + - "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9b2Jz" + - "ZXJ2YWJpbGl0eSBzeW5jCgojIEJ5IHJlbGVhc2UgbmFtZQpIRUxNRklMRV9FTlY9PGVudj4gaGVs" + - "bWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBo" + - "ZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9YWRtaW4taXNzdWVyLXByb3h5IHN5bmMKSEVMTUZJTEVf" + - "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1sbG0tcmVxdWVzdC1yb3V0ZXIgc3lu" + - "YwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWxsbS1hcGktZ2F0" + - "ZXdheSBzeW5jCgojIFRlbXBsYXRlIG9ubHkgKGRyeSBydW4pCkhFTE1GSUxFX0VOVj08ZW52PiBo" + - "ZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlCgojIERlc3Ryb3kgYSBz" + - "aW5nbGUgcmVsZWFzZQpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1l" + - "PWNhc3NhbmRyYSBkZXN0cm95CmBgYAoKTm90ZTogYGFkbWluLWlzc3Vlci1wcm94eWAgaGFzIG5v" + - "IGByZWxlYXNlLWdyb3VwYCBsYWJlbC4gVXNlIGAtLXNlbGVjdG9yIG5hbWU9YWRtaW4taXNzdWVy" + - "LXByb3h5YC4KUEsHCLE1HdsCKgAAAioAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAPwAJAGRh" + - "dGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvbnZjZi11aS1hZGRv" + - "bi5tZFVUBQABAKbOEiMgTlZDRiBVSSBBZGRvbgoKTlZDRiBVSSBpcyBhbiBvcHRpb25hbCwgY3Vz" + - "dG9tZXItZmFjaW5nIE5WQ0YgYWRtaW4tcGFuZWwgVUkuIEl0IGlzIGRpc2FibGVkIGJ5CmRlZmF1" + - "bHQgYW5kIGF2YWlsYWJsZSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRoYXQgaW5jbHVkZSB0aGUg" + - "TlZDRiBVSSBhZGRvbi4KCiMjIFdoZW4gdG8gZW5hYmxlCgpFbmFibGUgTlZDRiBVSSBvbmx5IHdo" + - "ZW4geW91IG5lZWQgdGhlIGFkbWluLXBhbmVsIFVJIGFuZCB5b3VyIGV4dHJhY3RlZCBzdGFjawpw" + - "YWNrYWdlIGluY2x1ZGVzIHRoZSBhZGRvbi4gSWYgdGhlIHBhY2thZ2UgZG9lcyBub3QgY29udGFp" + - "biBhIGBudmNmLXVpYCByZWxlYXNlCmFuZCBgbnZjZlVpYCByb3V0ZSB2YWx1ZXMsIHNraXAgdGhl" + - "IGFkZG9uIHVudGlsIHlvdSB1c2UgYSBwYWNrYWdlIHRoYXQgaW5jbHVkZXMKdGhlbS4KCiMjIEVu" + - "YWJsZSB0aGUgYWRkb24KCkVuYWJsZSBpdCBpbiBgZW52aXJvbm1lbnRzLzxlbnYtbmFtZT4ueWFt" + - "bGA6CgpgYGB5YW1sCmFkZG9uczoKICBudmNmVWk6CiAgICBlbmFibGVkOiB0cnVlCmBgYAoKIyMg" + - "Q3JlYXRlIG5hbWVzcGFjZSBhbmQgaW1hZ2UgcHVsbCBzZWNyZXQKCkNyZWF0ZSB0aGUgbmFtZXNw" + - "YWNlLCBhbmQgYW4gaW1hZ2UgcHVsbCBzZWNyZXQgb25seSBpZiBwdWxsaW5nIGZyb20gYSBwcml2" + - "YXRlCnJlZ2lzdHJ5OgoKYGBgYmFzaAprdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgbnZjZi11aSAt" + - "LWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KCiMgT25seSBpZiBw" + - "dWxsaW5nIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5IChlLmcuLCBOR0MgbnZjci5pbykKZXhwb3J0" + - "IE5HQ19BUElfS0VZPSI8eW91ci1rZXk+IgprdWJlY3RsIGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJl" + - "Z2lzdHJ5IG52Y3ItY3JlZHMgXAogIC0tZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAtLWRvY2tl" + - "ci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElf" + - "S0VZIiBcCiAgLS1uYW1lc3BhY2U9bnZjZi11aSBcCiAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1s" + - "IHwga3ViZWN0bCBhcHBseSAtZiAtCmBgYAoKVGhlIGRlZmF1bHQgcm91dGUgaG9zdCBpcyBgbnZj" + - "Zi11aS48ZG9tYWluPmAgYW5kIHRoZSBiYWNrZW5kIGlzCmBudmNmLXVpLm52Y2YtdWk6ODMwMGAu" + - "CgojIyBBcHBseSB0aGUgc2VydmljZSBhbmQgcm91dGUKCkFmdGVyIGNvbmZpcm1pbmcgdGhlIHBh" + - "Y2thZ2UgaW5jbHVkZXMgdGhlIGBudmNmLXVpYCByZWxlYXNlLCBwcmV2aWV3IGFuZCBhcHBseQp0" + - "aGUgc2VydmljZSBhbmQgcm91dGU6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhl" + - "bG1maWxlIC0tc2VsZWN0b3IgbmFtZT1udmNmLXVpIHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08ZW52" + - "LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1udmNmLXVpIHN5bmMKSEVMTUZJTEVfRU5W" + - "PTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPWluZ3Jlc3Mgc3lu" + - "YwpgYGAKCiMjIFZlcmlmeQoKVmVyaWZ5IHRoZSByb3V0ZSBvbmx5IHdoZW4gdGhlIGFkZG9uIGlz" + - "IHByZXNlbnQgYW5kIGVuYWJsZWQ6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSxzdmMgLW4g" + - "bnZjZi11aQprdWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIC1pIG52Y2YtdWkKY3VybCAt" + - "aSAtSCAiSG9zdDogbnZjZi11aS48ZG9tYWluPiIgImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPi9z" + - "dGF0dXMiCmBgYAoKIyMgU2VjdXJpdHkKClRoZSBOVkNGIFVJIGFkbWluIHBhbmVsIGlzIGN1cnJl" + - "bnRseSB1bmF1dGhlbnRpY2F0ZWQuIERvIG5vdCBleHBvc2UgaXQgdG8gdGhlCnB1YmxpYyBpbnRl" + - "cm5ldC4gUmVzdHJpY3QgYWNjZXNzIHRvIGEgdHJ1c3RlZCBuZXR3b3JrLCBWUE4sIG9yIGFuIGF1" + - "dGhlbnRpY2F0aW5nCnByb3h5IGluIGZyb250IG9mIHRoZSBgbnZjZi11aWAgcm91dGUuClBLBwg4" + - "+SevuQcAALkHAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAD4ACQBkYXRhL252Y2Ytc2VsZi1t" + - "YW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZFVUBQABAKbOEiMg" + - "SW1hZ2UgUHVsbCBTZWNyZXRzIFJlZmVyZW5jZQoKIyMgT3ZlcnZpZXcKCldoZW4gcHVsbGluZyBO" + - "VkNGIGltYWdlcyBmcm9tIGEgcHJpdmF0ZSByZWdpc3RyeSAoZm9yIGV4YW1wbGUsIE5HQwpgbnZj" + - "ci5pb2ApLCBLdWJlcm5ldGVzIG5lZWRzIGBpbWFnZVB1bGxTZWNyZXRzYCBvbiBldmVyeSBwb2Qu" + - "IENvbnRyb2wtcGxhbmUgYW5kCmNvbXB1dGUtcGxhbmUgY3JlZGVudGlhbHMgYXJlIGNvbmZpZ3Vy" + - "ZWQgaW4gdGhlaXIgb3duIGNsdXN0ZXIgY29udGV4dHMuIERvIG5vdAp1c2Ugb25lIG1peGVkIG5h" + - "bWVzcGFjZSBsaXN0LgoKVGhlIHJlY29tbWVuZGVkIGNvbnRyb2wtcGxhbmUgYXBwcm9hY2ggdXNl" + - "cyBLeXZlcm5vIHRvIGluamVjdCB0aGUgc2VjcmV0IGludG8KY29udHJvbC1wbGFuZSBwb2RzIGF0" + - "IGFkbWlzc2lvbiB0aW1lLiBUaGUgY29tcHV0ZS1wbGFuZSBjaGFydCBhbmQgb3BlcmF0b3IgdXNl" + - "CnRoZSBzZWNyZXQgaW4gYG52Y2Etb3BlcmF0b3JgIGFuZCBtaXJyb3IgaXQgdG8gYG52Y2Etc3lz" + - "dGVtYC4KCiMjIEt5dmVybm8gQXBwcm9hY2ggKFJlY29tbWVuZGVkKQoKIyMjIDEuIEluc3RhbGwg" + - "S3l2ZXJubwoKYGBgYmFzaApoZWxtIHJlcG8gYWRkIGt5dmVybm8gaHR0cHM6Ly9reXZlcm5vLmdp" + - "dGh1Yi5pby9reXZlcm5vLwpoZWxtIHJlcG8gdXBkYXRlCmhlbG0gaW5zdGFsbCBreXZlcm5vIGt5" + - "dmVybm8va3l2ZXJubyAtbiBreXZlcm5vIC0tY3JlYXRlLW5hbWVzcGFjZSBcCiAgLS1rdWJlLWNv" + - "bnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4KYGBgCgojIyMgMi4gQ3JlYXRlIGNvbnRyb2wt" + - "cGxhbmUgcHVsbCBzZWNyZXRzCgpgYGBiYXNoCmV4cG9ydCBOR0NfQVBJX0tFWT0iPHlvdXItbmdj" + - "LWFwaS1rZXk+IgoKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBh" + - "cGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAt" + - "LWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gY3JlYXRlIG5hbWVzcGFjZSAiJG5zIiBc" + - "CiAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJv" + - "bC1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCmRvbmUKCmZvciBucyBpbiBjYXNzYW5kcmEtc3lz" + - "dGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1t" + - "YW5hZ2VyOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGNy" + - "ZWF0ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogICAgLS1kb2NrZXItc2Vy" + - "dmVyPW52Y3IuaW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgICAt" + - "LWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5hbWVzcGFjZT0iJG5zIiBc" + - "CiAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJv" + - "bC1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCmRvbmUKYGBgCgpGb3Igbm9uLU5HQyByZWdpc3Ry" + - "aWVzLCByZXBsYWNlIGAtLWRvY2tlci1zZXJ2ZXJgLCBgLS1kb2NrZXItdXNlcm5hbWVgLCBhbmQg" + - "YC0tZG9ja2VyLXBhc3N3b3JkYC4KCiMjIyAzLiBBcHBseSBLeXZlcm5vIENsdXN0ZXJQb2xpY3kK" + - "CmBgYHlhbWwKYXBpVmVyc2lvbjoga3l2ZXJuby5pby92MQpraW5kOiBDbHVzdGVyUG9saWN5Cm1l" + - "dGFkYXRhOgogIG5hbWU6IG52Y2YtYWRkLWltYWdlcHVsbHNlY3JldHMKc3BlYzoKICBiYWNrZ3Jv" + - "dW5kOiBmYWxzZQogIHJ1bGVzOgogICAgLSBuYW1lOiBhZGQtaW1hZ2VwdWxsc2VjcmV0LXRvLW52" + - "Y2YtcG9kcwogICAgICBtYXRjaDoKICAgICAgICBhbnk6CiAgICAgICAgLSByZXNvdXJjZXM6CiAg" + - "ICAgICAgICAgIGtpbmRzOgogICAgICAgICAgICAtIFBvZAogICAgICAgICAgICBuYW1lc3BhY2Vz" + - "OgogICAgICAgICAgICAtICJudmNmIgogICAgICAgICAgICAtICJhcGkta2V5cyIKICAgICAgICAg" + - "ICAgLSAic2lzIgogICAgICAgICAgICAtICJlc3MiCiAgICAgICAgICAgIC0gIm5hdHMtc3lzdGVt" + - "IgogICAgICAgICAgICAtICJjYXNzYW5kcmEtc3lzdGVtIgogICAgICAgICAgICAtICJ2YXVsdC1z" + - "eXN0ZW0iCiAgICAgICAgICAgIC0gImNlcnQtbWFuYWdlciIKICAgICAgbXV0YXRlOgogICAgICAg" + - "IHBhdGNoU3RyYXRlZ2ljTWVyZ2U6CiAgICAgICAgICBtZXRhZGF0YToKICAgICAgICAgICAgYW5u" + - "b3RhdGlvbnM6CiAgICAgICAgICAgICAgbnZjZi5udmlkaWEuY29tL2ltYWdlcHVsbHNlY3JldC1p" + - "bmplY3RlZC1ieToga3l2ZXJubwogICAgICAgICAgc3BlYzoKICAgICAgICAgICAgaW1hZ2VQdWxs" + - "U2VjcmV0czoKICAgICAgICAgICAgLSBuYW1lOiBudmNyLWNyZWRzCmBgYAoKYGBgYmFzaAprdWJl" + - "Y3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBhcHBseSBcCiAgLWYga3l2ZXJu" + - "by1pbWFnZXB1bGxzZWNyZXQtcG9saWN5LnlhbWwKYGBgCgojIyMgNC4gSW5zdGFsbCB0aGUgY29u" + - "dHJvbCBwbGFuZQoKQ29udGludWUgd2l0aCB0aGUgc2VsZWN0ZWQgY29udHJvbC1wbGFuZSBpbnN0" + - "YWxsYXRpb24gaW4KW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShjb21wdXRlLXBs" + - "YW5lLWluc3RhbGxhdGlvbi5tZCkuIE5vCmNvbnRyb2wtcGxhbmUgaGVsbWZpbGUgbW9kaWZpY2F0" + - "aW9ucyBhcmUgbmVlZGVkLiBLeXZlcm5vIGluamVjdHMgdGhlIHB1bGwKc2VjcmV0IGludG8gbmV3" + - "IGNvbnRyb2wtcGxhbmUgcG9kcy4KCiMjIENvbXB1dGUtUGxhbmUgU2VjcmV0CgpDcmVhdGUgdGhl" + - "IHNlY3JldCBvbmx5IGluIGBudmNhLW9wZXJhdG9yYCBvbiB0aGUgY29tcHV0ZSBjbHVzdGVyOgoK" + - "YGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBjcmVhdGUg" + - "bmFtZXNwYWNlIG52Y2Etb3BlcmF0b3IgXAogIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IFwK" + - "ICBrdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBhcHBseSAtZiAtCgpr" + - "dWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBjcmVhdGUgc2VjcmV0IGRv" + - "Y2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAg" + - "LS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgLS1kb2NrZXItcGFzc3dvcmQ9IiRO" + - "R0NfQVBJX0tFWSIgXAogIC0tbmFtZXNwYWNlPW52Y2Etb3BlcmF0b3IgXAogIC0tZHJ5LXJ1bj1j" + - "bGllbnQgLW8geWFtbCB8IFwKICBrdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250" + - "ZXh0PiBhcHBseSAtZiAtCmBgYAoKUmVmZXJlbmNlIGl0IGluIHRoZSBjb21wdXRlLXBsYW5lIGVu" + - "dmlyb25tZW50IGZpbGU6CgpgYGB5YW1sCmdsb2JhbDoKICBpbWFnZVB1bGxTZWNyZXRzOgogICAg" + - "LSBuYW1lOiBudmNyLWNyZWRzCmBgYAoKVGhlIGNoYXJ0IGFuZCBvcGVyYXRvciB1c2UgdGhhdCBy" + - "ZWZlcmVuY2UgaW4gYG52Y2Etb3BlcmF0b3JgIGFuZCBtaXJyb3IgdGhlCnNlY3JldCB0byBgbnZj" + - "YS1zeXN0ZW1gLiBEbyBub3QgY3JlYXRlIGEgYnJvYWRlciBtYW51YWwgY29tcHV0ZSBuYW1lc3Bh" + - "Y2UgbGlzdC4gRm9sbG93CltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0" + - "ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpIGZvciB0aGUKc2VsZWN0ZWQgaW5zdGFsbCBmbG93LgoK" + - "IyMgVmVyaWZpY2F0aW9uCgpgYGBiYXNoCiMgQ2hlY2sgdGhhdCBhIGNvbnRyb2wtcGxhbmUgcG9k" + - "IGhhcyB0aGUgaW5qZWN0ZWQgc2VjcmV0Cmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5l" + - "LWNvbnRleHQ+IGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiBcCiAgLW8ganNvbnBh" + - "dGg9J3suc3BlYy5pbWFnZVB1bGxTZWNyZXRzfScKIyBFeHBlY3RlZDogW3sibmFtZSI6Im52Y3It" + - "Y3JlZHMifV0KCiMgQ2hlY2sgdGhlIEt5dmVybm8gYW5ub3RhdGlvbgprdWJlY3RsIC0tY29udGV4" + - "dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgcG9kIC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFt" + - "ZT4gXAogIC1vIGpzb25wYXRoPSd7Lm1ldGFkYXRhLmFubm90YXRpb25zLm52Y2ZcLm52aWRpYVwu" + - "Y29tL2ltYWdlcHVsbHNlY3JldC1pbmplY3RlZC1ieX0nCiMgRXhwZWN0ZWQ6IGt5dmVybm8KCiMg" + - "Q2hlY2sgcHVsbCBldmVudHMKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4" + - "dD4gZ2V0IGV2ZW50cyAtbiA8bmFtZXNwYWNlPiBcCiAgLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFt" + - "cCcgfCBncmVwIC1pIHB1bGwKIyBTaG91bGQgc2hvdyAiU3VjY2Vzc2Z1bGx5IHB1bGxlZCIgbm90" + - "ICI0MDEgVW5hdXRob3JpemVkIgoKIyBDaGVjayB0aGUgY2hhcnQvb3BlcmF0b3IgbWlycm9yIG9u" + - "IHRoZSBjb21wdXRlIGNsdXN0ZXIKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29u" + - "dGV4dD4gZ2V0IHNlY3JldCBudmNyLWNyZWRzIFwKICAtbiBudmNhLXN5c3RlbQpgYGAKCiMjIFdo" + - "ZW4gUHVsbCBTZWNyZXRzIEFyZSBOb3QgTmVlZGVkCgotICoqQVdTIEVDUiB3aXRoIElBTSBub2Rl" + - "IHJvbGVzKio6IElmIHlvdXIgbm9kZXMgaGF2ZSBgQW1hem9uRUMyQ29udGFpbmVyUmVnaXN0cnlS" + - "ZWFkT25seWAgSUFNIHBvbGljeSwgS3ViZXJuZXRlcyBjYW4gcHVsbCBmcm9tIEVDUiB3aXRob3V0" + - "IGV4cGxpY2l0IHNlY3JldHMuCi0gKipQdWJsaWMgcmVnaXN0cmllcyoqOiBObyBwdWxsIHNlY3Jl" + - "dHMgbmVlZGVkLgotICoqQ1NQIGJ1aWx0LWluIGNyZWRlbnRpYWwgaGVscGVycyoqOiBHS0UgQXJ0" + - "aWZhY3QgUmVnaXN0cnksIEF6dXJlIEFDUiB3aXRoIG1hbmFnZWQgaWRlbnRpdHksIGFuZCBzaW1p" + - "bGFyIHNlcnZpY2VzLgoKIyMgVHJvdWJsZXNob290aW5nCgojIyMgUG9kcyBzdGlsbCBpbiBJbWFn" + - "ZVB1bGxCYWNrT2ZmIGFmdGVyIGFwcGx5aW5nIHBvbGljeQoKVGhlIEt5dmVybm8gcG9saWN5IG9u" + - "bHkgYWZmZWN0cyBwb2RzIGNyZWF0ZWQgKiphZnRlcioqIHRoZSBwb2xpY3kgaXMgYXBwbGllZC4g" + - "RGVsZXRlIHN0dWNrIHBvZHMgdG8gdHJpZ2dlciByZWNyZWF0aW9uOgoKYGBgYmFzaAprdWJlY3Rs" + - "IC0tY29udGV4dCA8dGFyZ2V0LWNvbnRleHQ+IGRlbGV0ZSBwb2RzIC1uIDxuYW1lc3BhY2U+IC0t" + - "YWxsCmBgYAoKIyMjIEt5dmVybm8gYWRtaXNzaW9uIGNvbnRyb2xsZXIgbm90IHJ1bm5pbmcKCmBg" + - "YGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHBvZHMg" + - "LW4ga3l2ZXJubwojIEFsbCBwb2RzIHNob3VsZCBiZSBSdW5uaW5nCmBgYAoKIyMjIFBvbGljeSBu" + - "b3QgbWF0Y2hpbmcKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + - "dGV4dD4gZ2V0IGNsdXN0ZXJwb2xpY3kgbnZjZi1hZGQtaW1hZ2VwdWxsc2VjcmV0cwojIFNob3Vs" + - "ZCBzaG93IFJFQURZOiBUcnVlCmBgYAoKIyMjIFdyb25nIHNlY3JldCBuYW1lCgpUaGUgcG9saWN5" + - "IHJlZmVyZW5jZXMgYG52Y3ItY3JlZHNgLiBWZXJpZnkgdGhlIHNlY3JldCBleGlzdHMgd2l0aCB0" + - "aGF0IGV4YWN0IG5hbWU6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDx0YXJnZXQtY29udGV4" + - "dD4gZ2V0IHNlY3JldCBudmNyLWNyZWRzIC1uIDxuYW1lc3BhY2U+CmBgYApQSwcIS0I1qAAWAAAA" + - "FgAAUEsBAhQAFAAIAAAAAAAhAJeqZHVKEAAAShAAABIACQAAAAAAAAAAAAAAAAAAAGRhdGEvbWFu" + - "aWZlc3QuanNvblVUBQABAKbOElBLAQIUABQACAAAAAAAIQD/dvNnU2EAAFNhAAAjAAkAAAAAAAAA" + - "AAAAAJMQAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9TS0lMTC5tZFVUBQABAKbOElBLAQIU" + - "ABQACAAAAAAAIQCZ9g2l3Q0AAN0NAAAzAAkAAAAAAAAAAAAAAEByAABkYXRhL252Y2Ytc2VsZi1t" + - "YW5hZ2VkLWNsaS9leGFtcGxlcy9jaS1waXBlbGluZXMubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + - "ACEAoRTjgV0MAABdDAAANAAJAAAAAAAAAAAAAACHgAAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1j" + - "bGkvZXhhbXBsZXMvbXVsdGktY2x1c3Rlci5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBCJ0kP" + - "BQ0AAAUNAAA3AAkAAAAAAAAAAAAAAE+NAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9t" + - "cHRzL2FkZC1jb21wdXRlLXBsYW5lLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhANTejTSfGQAA" + - "nxkAADkACQAAAAAAAAAAAAAAwpoAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMv" + - "Y3JlYXRlLWFuZC1ydW4tdGFzay5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQDSQ9wEGCUAABgl" + - "AAA3AAkAAAAAAAAAAAAAANG0AABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2Rl" + - "cGxveS1hbmQtaW52b2tlLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAHKSLCa+DgAAvg4AAD0A" + - "CQAAAAAAAAAAAAAAV9oAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvZGlhZ25v" + - "c2UtZmFpbGVkLWluc3RhbGwubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAQnHmHgEoAAABKAAA" + - "OgAJAAAAAAAAAAAAAACJ6QAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9pbnN0" + - "YWxsLWZyb20tc2NyYXRjaC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQCq4Tq5yAcAAMgHAAA5" + - "AAkAAAAAAAAAAAAAAPsRAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3JvdGF0" + - "ZS1jbHVzdGVyLWp3a3MubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA2odjVuQhAADkIQAALgAJ" + - "AAAAAAAAAAAAAAAzGgEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy90ZWFyZG93" + - "bi5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQByDQ9kISMAACEjAAAwAAkAAAAAAAAAAAAAAHw8" + - "AQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvY29tbWFuZHMubWRVVAUAAQCm" + - "zhJQSwECFAAUAAgAAAAAACEAc6daZNUGAADVBgAAMgAJAAAAAAAAAAAAAAAEYAEAZGF0YS9udmNm" + - "LXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL2V4aXQtY29kZXMubWRVVAUAAQCmzhJQSwECFAAU" + - "AAgAAAAAACEAm1pHP2QvAABkLwAALQAJAAAAAAAAAAAAAABCZwEAZGF0YS9udmNmLXNlbGYtbWFu" + - "YWdlZC1jbGkvcmVmZXJlbmNlL2ZsYWdzLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAPOuE4R0" + - "EQAAdBEAADcACQAAAAAAAAAAAAAACpcBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVy" + - "ZW5jZS90cm91Ymxlc2hvb3RpbmcubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAEcMUk0liAABJ" + - "YgAALAAJAAAAAAAAAAAAAADsqAEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24v" + - "U0tJTEwubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAR1VqVkpWAABKVgAANAAJAAAAAAAAAAAA" + - "AACYCwIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXZhbHMvZXZhbHMuanNv" + - "blVUBQABAKbOElBLAQIUABQACAAAAAAAIQACUk5AfygAAH8oAAAvAAkAAAAAAAAAAAAAAE1iAgBk" + - "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9leGFtcGxlcy5tZFVUBQABAKbOElBL" + - "AQIUABQACAAAAAAAIQCWY7xZEjAAABIwAABMAAkAAAAAAAAAAAAAADKLAgBkYXRhL252Y2Ytc2Vs" + - "Zi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0" + - "aW9uLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhALV6cDu1MAAAtTAAADsACQAAAAAAAAAAAAAA" + - "x7sCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvZGVidWdn" + - "aW5nLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhALE1HdsCKgAAAioAAEQACQAAAAAAAAAAAAAA" + - "7uwCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvaGVsbWZp" + - "bGUtc3RydWN0dXJlLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhADj5J6+5BwAAuQcAAD8ACQAA" + - "AAAAAAAAAAAAaxcDAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5j" + - "ZXMvbnZjZi11aS1hZGRvbi5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBLQjWoABYAAAAWAAA+" + - "AAkAAAAAAAAAAAAAAJofAwBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZl" + - "cmVuY2VzL3B1bGwtc2VjcmV0cy5tZFVUBQABAKbOElBLBQYAAAAAFwAXAK8JAAAPNgMAAAA=" + "dmNmL2Jsb2IvbWFpbi9kb2NzL3NlbGYtbWFuYWdlZC9sbG0tcmVxdWVzdC1yb3V0ZXItbG9hZC1i" + + "YWxhbmNpbmcubWQpCmd1aWRlLgoKSWYgdGhlIHNpZGVjYXIgaW1hZ2UgaXMgbWlycm9yZWQgb3V0" + + "c2lkZSB0aGUgc3RhY2sncyBkZWZhdWx0IGltYWdlIHJlZ2lzdHJ5IGFuZApyZXBvc2l0b3J5LCBz" + + "ZXQgdGhlIGdlbmVyYXRlZCB3b3JrZXIgc2lkZWNhciBpbWFnZSBleHBsaWNpdGx5OgoKYGBgeWFt" + + "bAphcGk6CiAgcmVtb3RlQ29uZmlnOgogICAgY29uZmlnRGF0YToKICAgICAgbnZjZjoKICAgICAg" + + "ICBzaWRlY2FyczoKICAgICAgICAgIGxsbS1yb3V0ZXItY2xpZW50LWltYWdlOiA8cmVnaXN0cnk+" + + "LzxyZXBvc2l0b3J5Pi9weWxvbjowLjE0LjEKYGBgCgpUaGUgbGVnYWN5IGBhcGkuZW52Lk5WQ0Zf" + + "U0lERUNBUlNfTExNX1JPVVRFUl9DTElFTlRfSU1BR0VgIHBhdGggaXMgZGVwcmVjYXRlZC4KVGhl" + + "IHN0YWNrIHRyYW5zbGF0ZXMgaXQgZm9yIG9uZSBjb21wYXRpYmlsaXR5IHdpbmRvdywgYnV0IG5l" + + "dyBjb25maWd1cmF0aW9ucwptdXN0IHVzZSB0aGUgcmVtb3RlLWNvbmZpZyBwYXRoLiBDb25mbGlj" + + "dGluZyB2YWx1ZXMgZmFpbCByZW5kZXJpbmcuCgpSZW5kZXIgYW5kIGFwcGx5IHRoZSB1cGRhdGVk" + + "IGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQsIHRoZW4gcmVmcmVzaCBldmVyeQpyZWdpc3RlcmVk" + + "IGNvbXB1dGUgcGxhbmUgdXNpbmcgdGhlIHNhbWUgaGFuZG9mZiB1c2VkIGZvciBpdHMgaW5zdGFs" + + "bGF0aW9uIHNvCk5WQ0EgcmVjZWl2ZXMgYGFnZW50Q29uZmlnLm1lcmdlQ29uZmlnYDoKCmBgYGJh" + + "c2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08ZW52" + + "PiBoZWxtZmlsZSBzeW5jCmBgYAoKVXNlIHRoZSBjb21wbGV0ZSBjb21wdXRlLXBsYW5lIGluc3Rh" + + "bGwgY29tbWFuZCBmcm9tCltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0" + + "ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLiBBCkNMSS1wcm9maWxlIGluc3RhbGxhdGlvbiBtdXN0" + + "IHJlbWFpbiBwcm9maWxlLWRyaXZlbjsgYSBIZWxtZmlsZSBpbnN0YWxsYXRpb24KbXVzdCByZW1h" + + "aW4gdmFsdWVzLWRyaXZlbi4KCkV4aXN0aW5nIExMTSBmdW5jdGlvbiB2ZXJzaW9ucyByZXRhaW4g" + + "dGhlIHdvcmtlci1zaWRlY2FyIGltYWdlIG1ldGFkYXRhCmNhcHR1cmVkIHdoZW4gdGhlIHZlcnNp" + + "b24gaXMgY3JlYXRlZC4gUmVwbGFjaW5nIHBvZHMgb3IgcmVkZXBsb3lpbmcgdGhlIHNhbWUKdmVy" + + "c2lvbiBkb2VzIG5vdCBhcHBseSBhIG5ldyBQeWxvbiBpbWFnZS4gQWZ0ZXIgdGhlIGNvbnRyb2wt" + + "cGxhbmUgdXBkYXRlLApjcmVhdGUgYW5kIGRlcGxveSBhIG5ldyBmdW5jdGlvbiB2ZXJzaW9uLiBW" + + "ZXJpZnkgdGhlIGNvbnRyb2wgcGxhbmUsIHJvdXRlLCBhbmQKd29ya2VyIHNpZGVjYXI6CgpgYGBi" + + "YXNoCmt1YmVjdGwgZ2V0IGRlcGxveSAtbiBudmNmIGxsbS1hcGktZ2F0ZXdheQprdWJlY3RsIGdl" + + "dCBzdGF0ZWZ1bHNldCAtbiBudmNmIGxsbS1yZXF1ZXN0LXJvdXRlcgprdWJlY3RsIGdldCBwb2Rz" + + "IC1uIG52Y2YgfCBncmVwIC1FICdsbG0tYXBpLWdhdGV3YXl8bGxtLXJlcXVlc3Qtcm91dGVyJwpr" + + "dWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIGxsbQprdWJlY3RsIC1uIG52Y2YtYmFja2Vu" + + "ZCBnZXQgcG9kIDxmdW5jdGlvbi1wb2Q+IFwKICAtbyBqc29ucGF0aD0ne3JhbmdlIC5zcGVjLmNv" + + "bnRhaW5lcnNbPyhALm5hbWU9PSJsbG0td29ya2VyIildLmFyZ3NbKl19ey59eyJcXG4ifXtlbmR9" + + "JwpgYGAKCkZvciBsb2NhbCBwbGFpbnRleHQgY2x1c3RlcnMsIHRoZSBgbGxtLXdvcmtlcmAgYXJn" + + "cyBtdXN0IGluY2x1ZGUKYC0tcXVpYy1pbnNlY3VyZWAuCgpGb3IgbG9hZC1iYWxhbmNlciBzY2hl" + + "bWEgYW5kIGFsZ29yaXRobSBiZWhhdmlvciwgc2VlIHRoZQpbU3RhcmdhdGUgY29uZmlndXJhdGlv" + + "biBndWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9zcmMvbGli" + + "cmFyaWVzL3J1c3Qvc3RhcmdhdGUvZG9jcy9sb2FkLWJhbGFuY2VyLWNvbmZpZ3VyYXRpb24ubWQp" + + "LgoKIyMgSGVsbWZpbGUgU2VsZWN0b3JzCgpUYXJnZXQgc3BlY2lmaWMgcmVsZWFzZXMgb3IgZ3Jv" + + "dXBzOgoKYGBgYmFzaAojIEJ5IHJlbGVhc2UgZ3JvdXAKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1m" + + "aWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1kZXBlbmRlbmNpZXMgc3luYwpIRUxNRklMRV9F" + + "TlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIHN5bmMK" + + "SEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1pbmdy" + + "ZXNzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1n" + + "cm91cD1vYnNlcnZhYmlsaXR5IHN5bmMKCiMgQnkgcmVsZWFzZSBuYW1lCkhFTE1GSUxFX0VOVj08" + + "ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMKSEVMTUZJTEVfRU5W" + + "PTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHkgc3luYwpI" + + "RUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWxsbS1yZXF1ZXN0LXJv" + + "dXRlciBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9bGxt" + + "LWFwaS1nYXRld2F5IHN5bmMKCiMgVGVtcGxhdGUgb25seSAoZHJ5IHJ1bikKSEVMTUZJTEVfRU5W" + + "PTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUKCiMgRGVz" + + "dHJveSBhIHNpbmdsZSByZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVj" + + "dG9yIG5hbWU9Y2Fzc2FuZHJhIGRlc3Ryb3kKYGBgCgpOb3RlOiBgYWRtaW4taXNzdWVyLXByb3h5" + + "YCBoYXMgbm8gYHJlbGVhc2UtZ3JvdXBgIGxhYmVsLiBVc2UgYC0tc2VsZWN0b3IgbmFtZT1hZG1p" + + "bi1pc3N1ZXItcHJveHlgLgpQSwcIExHsjQoqAAAKKgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAA" + + "AAA/AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9udmNm" + + "LXVpLWFkZG9uLm1kVVQFAAEAps4SIyBOVkNGIFVJIEFkZG9uCgpOVkNGIFVJIGlzIGFuIG9wdGlv" + + "bmFsLCBjdXN0b21lci1mYWNpbmcgTlZDRiBhZG1pbi1wYW5lbCBVSS4gSXQgaXMgZGlzYWJsZWQg" + + "YnkKZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNs" + + "dWRlIHRoZSBOVkNGIFVJIGFkZG9uLgoKIyMgV2hlbiB0byBlbmFibGUKCkVuYWJsZSBOVkNGIFVJ" + + "IG9ubHkgd2hlbiB5b3UgbmVlZCB0aGUgYWRtaW4tcGFuZWwgVUkgYW5kIHlvdXIgZXh0cmFjdGVk" + + "IHN0YWNrCnBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLiBJZiB0aGUgcGFja2FnZSBkb2VzIG5v" + + "dCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UKYW5kIGBudmNmVWlgIHJvdXRlIHZhbHVlcywg" + + "c2tpcCB0aGUgYWRkb24gdW50aWwgeW91IHVzZSBhIHBhY2thZ2UgdGhhdCBpbmNsdWRlcwp0aGVt" + + "LgoKIyMgRW5hYmxlIHRoZSBhZGRvbgoKRW5hYmxlIGl0IGluIGBlbnZpcm9ubWVudHMvPGVudi1u" + + "YW1lPi55YW1sYDoKCmBgYHlhbWwKYWRkb25zOgogIG52Y2ZVaToKICAgIGVuYWJsZWQ6IHRydWUK" + + "YGBgCgojIyBDcmVhdGUgbmFtZXNwYWNlIGFuZCBpbWFnZSBwdWxsIHNlY3JldAoKQ3JlYXRlIHRo" + + "ZSBuYW1lc3BhY2UsIGFuZCBhbiBpbWFnZSBwdWxsIHNlY3JldCBvbmx5IGlmIHB1bGxpbmcgZnJv" + + "bSBhIHByaXZhdGUKcmVnaXN0cnk6CgpgYGBiYXNoCmt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBu" + + "dmNmLXVpIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQoKIyBP" + + "bmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGUuZy4sIE5HQyBudmNyLmlv" + + "KQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmt1YmVjdGwgY3JlYXRlIHNlY3JldCBk" + + "b2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAog" + + "IC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogIC0tZG9ja2VyLXBhc3N3b3JkPSIk" + + "TkdDX0FQSV9LRVkiIFwKICAtLW5hbWVzcGFjZT1udmNmLXVpIFwKICAtLWRyeS1ydW49Y2xpZW50" + + "IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KYGBgCgpUaGUgZGVmYXVsdCByb3V0ZSBob3N0" + + "IGlzIGBudmNmLXVpLjxkb21haW4+YCBhbmQgdGhlIGJhY2tlbmQgaXMKYG52Y2YtdWkubnZjZi11" + + "aTo4MzAwYC4KCiMjIEFwcGx5IHRoZSBzZXJ2aWNlIGFuZCByb3V0ZQoKQWZ0ZXIgY29uZmlybWlu" + + "ZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYG52Y2YtdWlgIHJlbGVhc2UsIHByZXZpZXcgYW5k" + + "IGFwcGx5CnRoZSBzZXJ2aWNlIGFuZCByb3V0ZToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYt" + + "bmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgdGVtcGxhdGUKSEVMTUZJTEVf" + + "RU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgc3luYwpIRUxN" + + "RklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5n" + + "cmVzcyBzeW5jCmBgYAoKIyMgVmVyaWZ5CgpWZXJpZnkgdGhlIHJvdXRlIG9ubHkgd2hlbiB0aGUg" + + "YWRkb24gaXMgcHJlc2VudCBhbmQgZW5hYmxlZDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgZGVwbG95" + + "LHN2YyAtbiBudmNmLXVpCmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgLWkgbnZjZi11" + + "aQpjdXJsIC1pIC1IICJIb3N0OiBudmNmLXVpLjxkb21haW4+IiAiaHR0cDovLzxnYXRld2F5LWFk" + + "ZHJlc3M+L3N0YXR1cyIKYGBgCgojIyBTZWN1cml0eQoKVGhlIE5WQ0YgVUkgYWRtaW4gcGFuZWwg" + + "aXMgY3VycmVudGx5IHVuYXV0aGVudGljYXRlZC4gRG8gbm90IGV4cG9zZSBpdCB0byB0aGUKcHVi" + + "bGljIGludGVybmV0LiBSZXN0cmljdCBhY2Nlc3MgdG8gYSB0cnVzdGVkIG5ldHdvcmssIFZQTiwg" + + "b3IgYW4gYXV0aGVudGljYXRpbmcKcHJveHkgaW4gZnJvbnQgb2YgdGhlIGBudmNmLXVpYCByb3V0" + + "ZS4KUEsHCDj5J6+5BwAAuQcAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAPgAJAGRhdGEvbnZj" + + "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kVVQF" + + "AAEAps4SIyBJbWFnZSBQdWxsIFNlY3JldHMgUmVmZXJlbmNlCgojIyBPdmVydmlldwoKV2hlbiBw" + + "dWxsaW5nIE5WQ0YgaW1hZ2VzIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5IChmb3IgZXhhbXBsZSwg" + + "TkdDCmBudmNyLmlvYCksIEt1YmVybmV0ZXMgbmVlZHMgYGltYWdlUHVsbFNlY3JldHNgIG9uIGV2" + + "ZXJ5IHBvZC4gQ29udHJvbC1wbGFuZSBhbmQKY29tcHV0ZS1wbGFuZSBjcmVkZW50aWFscyBhcmUg" + + "Y29uZmlndXJlZCBpbiB0aGVpciBvd24gY2x1c3RlciBjb250ZXh0cy4gRG8gbm90CnVzZSBvbmUg" + + "bWl4ZWQgbmFtZXNwYWNlIGxpc3QuCgpUaGUgcmVjb21tZW5kZWQgY29udHJvbC1wbGFuZSBhcHBy" + + "b2FjaCB1c2VzIEt5dmVybm8gdG8gaW5qZWN0IHRoZSBzZWNyZXQgaW50bwpjb250cm9sLXBsYW5l" + + "IHBvZHMgYXQgYWRtaXNzaW9uIHRpbWUuIFRoZSBjb21wdXRlLXBsYW5lIGNoYXJ0IGFuZCBvcGVy" + + "YXRvciB1c2UKdGhlIHNlY3JldCBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciBpdCB0byBg" + + "bnZjYS1zeXN0ZW1gLgoKIyMgS3l2ZXJubyBBcHByb2FjaCAoUmVjb21tZW5kZWQpCgojIyMgMS4g" + + "SW5zdGFsbCBLeXZlcm5vCgpgYGBiYXNoCmhlbG0gcmVwbyBhZGQga3l2ZXJubyBodHRwczovL2t5" + + "dmVybm8uZ2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUKaGVsbSBpbnN0YWxsIGt5" + + "dmVybm8ga3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUtbmFtZXNwYWNlIFwKICAt" + + "LWt1YmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PgpgYGAKCiMjIyAyLiBDcmVhdGUg" + + "Y29udHJvbC1wbGFuZSBwdWxsIHNlY3JldHMKCmBgYGJhc2gKZXhwb3J0IE5HQ19BUElfS0VZPSI8" + + "eW91ci1uZ2MtYXBpLWtleT4iCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3Rl" + + "bSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBr" + + "dWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgbmFtZXNwYWNl" + + "ICIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250ZXh0" + + "IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQoKZm9yIG5zIGluIGNhc3Nh" + + "bmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3Rl" + + "bSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + + "dGV4dD4gY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRv" + + "Y2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4n" + + "IFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNl" + + "PSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250ZXh0" + + "IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQpgYGAKCkZvciBub24tTkdD" + + "IHJlZ2lzdHJpZXMsIHJlcGxhY2UgYC0tZG9ja2VyLXNlcnZlcmAsIGAtLWRvY2tlci11c2VybmFt" + + "ZWAsIGFuZCBgLS1kb2NrZXItcGFzc3dvcmRgLgoKIyMjIDMuIEFwcGx5IEt5dmVybm8gQ2x1c3Rl" + + "clBvbGljeQoKYGBgeWFtbAphcGlWZXJzaW9uOiBreXZlcm5vLmlvL3YxCmtpbmQ6IENsdXN0ZXJQ" + + "b2xpY3kKbWV0YWRhdGE6CiAgbmFtZTogbnZjZi1hZGQtaW1hZ2VwdWxsc2VjcmV0cwpzcGVjOgog" + + "IGJhY2tncm91bmQ6IGZhbHNlCiAgcnVsZXM6CiAgICAtIG5hbWU6IGFkZC1pbWFnZXB1bGxzZWNy" + + "ZXQtdG8tbnZjZi1wb2RzCiAgICAgIG1hdGNoOgogICAgICAgIGFueToKICAgICAgICAtIHJlc291" + + "cmNlczoKICAgICAgICAgICAga2luZHM6CiAgICAgICAgICAgIC0gUG9kCiAgICAgICAgICAgIG5h" + + "bWVzcGFjZXM6CiAgICAgICAgICAgIC0gIm52Y2YiCiAgICAgICAgICAgIC0gImFwaS1rZXlzIgog" + + "ICAgICAgICAgICAtICJzaXMiCiAgICAgICAgICAgIC0gImVzcyIKICAgICAgICAgICAgLSAibmF0" + + "cy1zeXN0ZW0iCiAgICAgICAgICAgIC0gImNhc3NhbmRyYS1zeXN0ZW0iCiAgICAgICAgICAgIC0g" + + "InZhdWx0LXN5c3RlbSIKICAgICAgICAgICAgLSAiY2VydC1tYW5hZ2VyIgogICAgICBtdXRhdGU6" + + "CiAgICAgICAgcGF0Y2hTdHJhdGVnaWNNZXJnZToKICAgICAgICAgIG1ldGFkYXRhOgogICAgICAg" + + "ICAgICBhbm5vdGF0aW9uczoKICAgICAgICAgICAgICBudmNmLm52aWRpYS5jb20vaW1hZ2VwdWxs" + + "c2VjcmV0LWluamVjdGVkLWJ5OiBreXZlcm5vCiAgICAgICAgICBzcGVjOgogICAgICAgICAgICBp" + + "bWFnZVB1bGxTZWNyZXRzOgogICAgICAgICAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpgYGBi" + + "YXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IFwKICAt" + + "ZiBreXZlcm5vLWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAKCiMjIyA0LiBJbnN0YWxs" + + "IHRoZSBjb250cm9sIHBsYW5lCgpDb250aW51ZSB3aXRoIHRoZSBzZWxlY3RlZCBjb250cm9sLXBs" + + "YW5lIGluc3RhbGxhdGlvbiBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNv" + + "bXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4gTm8KY29udHJvbC1wbGFuZSBoZWxtZmlsZSBt" + + "b2RpZmljYXRpb25zIGFyZSBuZWVkZWQuIEt5dmVybm8gaW5qZWN0cyB0aGUgcHVsbApzZWNyZXQg" + + "aW50byBuZXcgY29udHJvbC1wbGFuZSBwb2RzLgoKIyMgQ29tcHV0ZS1QbGFuZSBTZWNyZXQKCkNy" + + "ZWF0ZSB0aGUgc2VjcmV0IG9ubHkgaW4gYG52Y2Etb3BlcmF0b3JgIG9uIHRoZSBjb21wdXRlIGNs" + + "dXN0ZXI6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+" + + "IGNyZWF0ZSBuYW1lc3BhY2UgbnZjYS1vcGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAtbyB5" + + "YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGFwcGx5" + + "IC1mIC0KCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBz" + + "ZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogIC0tZG9ja2VyLXNlcnZlcj1udmNy" + + "LmlvIFwKICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAtLWRvY2tlci1wYXNz" + + "d29yZD0iJE5HQ19BUElfS0VZIiBcCiAgLS1uYW1lc3BhY2U9bnZjYS1vcGVyYXRvciBcCiAgLS1k" + + "cnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBs" + + "YW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KYGBgCgpSZWZlcmVuY2UgaXQgaW4gdGhlIGNvbXB1dGUt" + + "cGxhbmUgZW52aXJvbm1lbnQgZmlsZToKCmBgYHlhbWwKZ2xvYmFsOgogIGltYWdlUHVsbFNlY3Jl" + + "dHM6CiAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpUaGUgY2hhcnQgYW5kIG9wZXJhdG9yIHVz" + + "ZSB0aGF0IHJlZmVyZW5jZSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciB0aGUKc2VjcmV0" + + "IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBjcmVhdGUgYSBicm9hZGVyIG1hbnVhbCBjb21wdXRl" + + "IG5hbWVzcGFjZSBsaXN0LiBGb2xsb3cKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9u" + + "XShjb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkgZm9yIHRoZQpzZWxlY3RlZCBpbnN0YWxs" + + "IGZsb3cuCgojIyBWZXJpZmljYXRpb24KCmBgYGJhc2gKIyBDaGVjayB0aGF0IGEgY29udHJvbC1w" + + "bGFuZSBwb2QgaGFzIHRoZSBpbmplY3RlZCBzZWNyZXQKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + + "b2wtcGxhbmUtY29udGV4dD4gZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IFwKICAt" + + "byBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9JwojIEV4cGVjdGVkOiBbeyJuYW1l" + + "IjoibnZjci1jcmVkcyJ9XQoKIyBDaGVjayB0aGUgS3l2ZXJubyBhbm5vdGF0aW9uCmt1YmVjdGwg" + + "LS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBwb2QgLW4gPG5hbWVzcGFjZT4g" + + "PHBvZC1uYW1lPiBcCiAgLW8ganNvbnBhdGg9J3subWV0YWRhdGEuYW5ub3RhdGlvbnMubnZjZlwu" + + "bnZpZGlhXC5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVkLWJ5fScKIyBFeHBlY3RlZDoga3l2" + + "ZXJubwoKIyBDaGVjayBwdWxsIGV2ZW50cwprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFu" + + "ZS1jb250ZXh0PiBnZXQgZXZlbnRzIC1uIDxuYW1lc3BhY2U+IFwKICAtLXNvcnQtYnk9Jy5sYXN0" + + "VGltZXN0YW1wJyB8IGdyZXAgLWkgcHVsbAojIFNob3VsZCBzaG93ICJTdWNjZXNzZnVsbHkgcHVs" + + "bGVkIiBub3QgIjQwMSBVbmF1dGhvcml6ZWQiCgojIENoZWNrIHRoZSBjaGFydC9vcGVyYXRvciBt" + + "aXJyb3Igb24gdGhlIGNvbXB1dGUgY2x1c3RlcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1w" + + "bGFuZS1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgXAogIC1uIG52Y2Etc3lzdGVtCmBg" + + "YAoKIyMgV2hlbiBQdWxsIFNlY3JldHMgQXJlIE5vdCBOZWVkZWQKCi0gKipBV1MgRUNSIHdpdGgg" + + "SUFNIG5vZGUgcm9sZXMqKjogSWYgeW91ciBub2RlcyBoYXZlIGBBbWF6b25FQzJDb250YWluZXJS" + + "ZWdpc3RyeVJlYWRPbmx5YCBJQU0gcG9saWN5LCBLdWJlcm5ldGVzIGNhbiBwdWxsIGZyb20gRUNS" + + "IHdpdGhvdXQgZXhwbGljaXQgc2VjcmV0cy4KLSAqKlB1YmxpYyByZWdpc3RyaWVzKio6IE5vIHB1" + + "bGwgc2VjcmV0cyBuZWVkZWQuCi0gKipDU1AgYnVpbHQtaW4gY3JlZGVudGlhbCBoZWxwZXJzKio6" + + "IEdLRSBBcnRpZmFjdCBSZWdpc3RyeSwgQXp1cmUgQUNSIHdpdGggbWFuYWdlZCBpZGVudGl0eSwg" + + "YW5kIHNpbWlsYXIgc2VydmljZXMuCgojIyBUcm91Ymxlc2hvb3RpbmcKCiMjIyBQb2RzIHN0aWxs" + + "IGluIEltYWdlUHVsbEJhY2tPZmYgYWZ0ZXIgYXBwbHlpbmcgcG9saWN5CgpUaGUgS3l2ZXJubyBw" + + "b2xpY3kgb25seSBhZmZlY3RzIHBvZHMgY3JlYXRlZCAqKmFmdGVyKiogdGhlIHBvbGljeSBpcyBh" + + "cHBsaWVkLiBEZWxldGUgc3R1Y2sgcG9kcyB0byB0cmlnZ2VyIHJlY3JlYXRpb246CgpgYGBiYXNo" + + "Cmt1YmVjdGwgLS1jb250ZXh0IDx0YXJnZXQtY29udGV4dD4gZGVsZXRlIHBvZHMgLW4gPG5hbWVz" + + "cGFjZT4gLS1hbGwKYGBgCgojIyMgS3l2ZXJubyBhZG1pc3Npb24gY29udHJvbGxlciBub3QgcnVu" + + "bmluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBn" + + "ZXQgcG9kcyAtbiBreXZlcm5vCiMgQWxsIHBvZHMgc2hvdWxkIGJlIFJ1bm5pbmcKYGBgCgojIyMg" + + "UG9saWN5IG5vdCBtYXRjaGluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1w" + + "bGFuZS1jb250ZXh0PiBnZXQgY2x1c3RlcnBvbGljeSBudmNmLWFkZC1pbWFnZXB1bGxzZWNyZXRz" + + "CiMgU2hvdWxkIHNob3cgUkVBRFk6IFRydWUKYGBgCgojIyMgV3Jvbmcgc2VjcmV0IG5hbWUKClRo" + + "ZSBwb2xpY3kgcmVmZXJlbmNlcyBgbnZjci1jcmVkc2AuIFZlcmlmeSB0aGUgc2VjcmV0IGV4aXN0" + + "cyB3aXRoIHRoYXQgZXhhY3QgbmFtZToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPHRhcmdl" + + "dC1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgLW4gPG5hbWVzcGFjZT4KYGBgClBLBwhL" + + "QjWoABYAAAAWAABQSwECFAAUAAgAAAAAACEAq/zUvkoQAABKEAAAEgAJAAAAAAAAAAAAAAAAAAAA" + + "ZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAP9282dTYQAAU2EAACMA" + + "CQAAAAAAAAAAAAAAkxAAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQFAAEA" + + "ps4SUEsBAhQAFAAIAAAAAAAhAJn2DaXdDQAA3Q0AADMACQAAAAAAAAAAAAAAQHIAAGRhdGEvbnZj" + + "Zi1zZWxmLW1hbmFnZWQtY2xpL2V4YW1wbGVzL2NpLXBpcGVsaW5lcy5tZFVUBQABAKbOElBLAQIU" + + "ABQACAAAAAAAIQChFOOBXQwAAF0MAAA0AAkAAAAAAAAAAAAAAIeAAABkYXRhL252Y2Ytc2VsZi1t" + + "YW5hZ2VkLWNsaS9leGFtcGxlcy9tdWx0aS1jbHVzdGVyLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAA" + + "AAAhAEInSQ8FDQAABQ0AADcACQAAAAAAAAAAAAAAT40AAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + + "Y2xpL3Byb21wdHMvYWRkLWNvbXB1dGUtcGxhbmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA" + + "1N6NNJ8ZAACfGQAAOQAJAAAAAAAAAAAAAADCmgAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkv" + + "cHJvbXB0cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhANJD" + + "3AQYJQAAGCUAADcACQAAAAAAAAAAAAAA0bQAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3By" + + "b21wdHMvZGVwbG95LWFuZC1pbnZva2UubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAcpIsJr4O" + + "AAC+DgAAPQAJAAAAAAAAAAAAAABX2gAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0" + + "cy9kaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBCceYe" + + "ASgAAAEoAAA6AAkAAAAAAAAAAAAAAInpAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9t" + + "cHRzL2luc3RhbGwtZnJvbS1zY3JhdGNoLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAKrhOrnI" + + "BwAAyAcAADkACQAAAAAAAAAAAAAA+xEBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21w" + + "dHMvcm90YXRlLWNsdXN0ZXItandrcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQDah2NW5CEA" + + "AOQhAAAuAAkAAAAAAAAAAAAAADMaAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRz" + + "L3RlYXJkb3duLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAHIND2QhIwAAISMAADAACQAAAAAA" + + "AAAAAAAAfDwBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9jb21tYW5kcy5t" + + "ZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBzp1pk1QYAANUGAAAyAAkAAAAAAAAAAAAAAARgAQBk" + + "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZXhpdC1jb2Rlcy5tZFVUBQABAKbO" + + "ElBLAQIUABQACAAAAAAAIQCbWkc/ZC8AAGQvAAAtAAkAAAAAAAAAAAAAAEJnAQBkYXRhL252Y2Yt" + + "c2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZmxhZ3MubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + + "ACEA864ThHQRAAB0EQAANwAJAAAAAAAAAAAAAAAKlwEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1j" + + "bGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQAR" + + "wxSTSWIAAEliAAAsAAkAAAAAAAAAAAAAAOyoAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + + "bGxhdGlvbi9TS0lMTC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBHVWpWSlYAAEpWAAA0AAkA" + + "AAAAAAAAAAAAAJgLAgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9ldmFscy9l" + + "dmFscy5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAAJSTkB/KAAAfygAAC8ACQAAAAAAAAAA" + + "AAAATWICAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL2V4YW1wbGVzLm1kVVQF" + + "AAEAps4SUEsBAhQAFAAIAAAAAAAhAJZjvFkSMAAAEjAAAEwACQAAAAAAAAAAAAAAMosCAGRhdGEv" + + "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1p" + + "bnN0YWxsYXRpb24ubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAtXpwO7UwAAC1MAAAOwAJAAAA" + + "AAAAAAAAAADHuwIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNl" + + "cy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAExHsjQoqAAAKKgAARAAJAAAA" + + "AAAAAAAAAADu7AIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNl" + + "cy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAOPknr7kHAAC5" + + "BwAAPwAJAAAAAAAAAAAAAABzFwMAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24v" + + "cmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEtCNagA" + + "FgAAABYAAD4ACQAAAAAAAAAAAAAAoh8DAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0" + + "aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SUEsFBgAAAAAXABcArwkAABc2" + + "AwAAAA==" var ( skillDataOnce sync.Once diff --git a/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel b/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel index dd7ceab04d..8b0ad18555 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel +++ b/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel @@ -64,6 +64,7 @@ go_test( "clustervalidator_test.go", "credhelper_test.go", "inotify_probe_test.go", + "main_test.go", "orchestrator_errors_test.go", "output_test.go", "preflight_test.go", diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 84b8faef95..765aa5fc7b 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -287,6 +287,15 @@ func runClusterValidator( deleteValidatorJob(context.Background(), client, jobName) podMayBeRunning = false } + // An interrupt (Ctrl-C, SIGTERM) cancels the caller's context. The + // operator has abandoned the run, so stop the pod and reclaim everything + // now rather than leave cluster-wide RBAC for a later orphan sweep. A + // timeout is different: it leaves ctx itself live, and a pod that may + // still be running keeps its RBAC. + if errors.Is(ctx.Err(), context.Canceled) && !noCleanup { + deleteValidatorJob(context.Background(), client, jobName) + podMayBeRunning = false + } if waitErr != nil { return ClusterValidatorResult{ diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go index 943f0a938c..854218a902 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go @@ -371,13 +371,43 @@ func TestClusterValidatorCheck_PreRoleImageIsAWarning(t *testing.T) { return clusterValidatorCheck(cv, "", "img:1", "", false, validatorRoleControlPlane, nil, nil).Run(context.Background()) } - old := run("Starting NVCF cluster validation\nGPU Resources: none found\n", false) + old := run("Starting NVCF cluster validation\n=== GPU Resources ===\nno GPUs found\n", false) assert.Equal(t, SeverityWarning, old.Severity) assert.Contains(t, old.Message, "does not support the control-plane checks") + // A role-aware image that fails before printing its role line prints no + // GPU section either, so its failure must stand. + early := run("level=fatal msg=\"Failed to create Kubernetes client\"\n", false) + assert.Equal(t, SeverityError, early.Severity, "a missing role line alone is not proof of an old image") + current := run("Starting NVCF cluster validation\nValidator role: control-plane\nTier-1: failed\n", false) assert.Equal(t, SeverityError, current.Severity, "a role-aware image's failure is a real failure") unread := run("", false) assert.Equal(t, SeverityError, unread.Severity, "an empty transcript proves nothing about the image") } + +// An interrupt cancels the caller's context. The operator abandoned the run, +// so the Job is stopped and everything reclaimed now, rather than leaving a +// cluster-wide ClusterRole bound in default until a later orphan sweep. +func TestRunClusterValidator_InterruptLeavesNothingBehind(t *testing.T) { + t.Setenv("NGC_API_KEY", "key") + client := lifecycleClient(running, "") + ctx, cancel := context.WithCancel(context.Background()) + go func() { + time.Sleep(200 * time.Millisecond) + cancel() + }() + + res := runClusterValidator(ctx, client, "nvcr.io/nvidia/validator:1", + "", false, clusterValidatorControlPlaneRole, nil, nil) + require.Error(t, res.Err) + assert.Empty(t, leftovers(t, client, res.RunID)) + deleted := false + for _, a := range client.Actions() { + if a.GetVerb() == "delete" && a.GetResource().Resource == "jobs" { + deleted = true + } + } + assert.True(t, deleted, "the Job must be stopped so its pod stops using the RBAC") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/credhelper_test.go b/src/clis/nvcf-cli/internal/selfhosted/credhelper_test.go index 751afb93f9..94b58a4181 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/credhelper_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/credhelper_test.go @@ -18,6 +18,7 @@ limitations under the License. package selfhosted import ( + "encoding/json" "os" "path/filepath" "runtime" @@ -41,6 +42,21 @@ func TestSelectAuthChallenge(t *testing.T) { // dockerHome writes ~/.docker/config.json under a temporary HOME and puts a // fake docker-credential- for each helper on PATH, each answering with // its own secret. +// inlineDockerConfig builds a config.json with one inline credential at run +// time. A literal auths blob trips secret scanners even with fake values. +func inlineDockerConfig(t *testing.T, registry, user, pass, credsStore string) string { + t.Helper() + cfg := map[string]any{"auths": map[string]any{ + registry: map[string]string{"username": user, "password": pass}, + }} + if credsStore != "" { + cfg["credsStore"] = credsStore + } + b, err := json.Marshal(cfg) + require.NoError(t, err) + return string(b) +} + func dockerHome(t *testing.T, config string, helpers ...string) { t.Helper() if runtime.GOOS == "windows" { @@ -80,15 +96,63 @@ func TestCredsFromDockerConfig_CredHelpersBeatCredsStore(t *testing.T) { assert.Equal(t, "u-ngc", u) } -// Inline credentials are still read without running any helper. -func TestCredsFromDockerConfig_InlineAuthNeedsNoHelper(t *testing.T) { - dockerHome(t, `{"auths":{"nvcr.io":{"username":"x","password":"y"}},"credsStore":"missing"}`) +// Inline credentials are read when no store is configured. +func TestCredsFromDockerConfig_InlineAuthWithoutAStore(t *testing.T) { + dockerHome(t, inlineDockerConfig(t, "nvcr.io", "x", "y", "")) u, p, ok := credsFromDockerConfig("nvcr.io") require.True(t, ok) assert.Equal(t, "x", u) assert.Equal(t, "y", p) } +// With a store configured docker never reads an inline password, so a stale +// one left in the file must not win over the store. +func TestCredsFromDockerConfig_StoreBeatsStaleInlineAuth(t *testing.T) { + dockerHome(t, inlineDockerConfig(t, "nvcr.io", "old", "stale", "store"), "store") + u, p, ok := credsFromDockerConfig("nvcr.io") + require.True(t, ok) + assert.Equal(t, "u-store", u) + assert.Equal(t, "s-store", p) +} + +// Docker Hub logins live under the legacy index key, whatever host name the +// image uses. +func TestCredsFromDockerConfig_DockerHubKey(t *testing.T) { + dockerHome(t, inlineDockerConfig(t, "https://index.docker.io/v1/", "hub", "pw", "")) + for _, host := range []string{"docker.io", "index.docker.io", "registry-1.docker.io"} { + u, _, ok := credsFromDockerConfig(host) + require.True(t, ok, host) + assert.Equal(t, "hub", u) + } +} + +// The timeout holds even when the helper leaves a child holding stdout open. +func TestCredsFromHelper_TimeoutIsEnforced(t *testing.T) { + dockerHome(t, `{"credsStore":"hang"}`) + bin := t.TempDir() + script := "#!/bin/sh\nsleep 30 &\nsleep 30\n" + require.NoError(t, os.WriteFile(filepath.Join(bin, "docker-credential-hang"), []byte(script), 0o755)) + t.Setenv("PATH", bin+string(os.PathListSeparator)+os.Getenv("PATH")) + credentialHelperTimeout = 500 * time.Millisecond + + start := time.Now() + _, _, ok := credsFromDockerConfig("nvcr.io") + assert.False(t, ok) + assert.Less(t, time.Since(start), 10*time.Second, "the helper call must not outlive its timeout by the child's lifetime") +} + +// A helper that floods stdout is refused rather than buffered without bound. +func TestCredsFromHelper_OutputIsCapped(t *testing.T) { + dockerHome(t, `{"credsStore":"flood"}`) + bin := t.TempDir() + // Valid JSON padded past the cap, so only the cap can refuse it. + script := "#!/bin/sh\nprintf '{\"Username\":\"u\",\"Secret\":\"s\"}'\nhead -c 200000 /dev/zero | tr '\\0' ' '\n" + require.NoError(t, os.WriteFile(filepath.Join(bin, "docker-credential-flood"), []byte(script), 0o755)) + t.Setenv("PATH", bin+string(os.PathListSeparator)+os.Getenv("PATH")) + _, _, ok := credsFromDockerConfig("nvcr.io") + assert.False(t, ok) +} + // The helper name comes from a file; anything that is not a plain helper // suffix is refused rather than put on an exec path. func TestCredsFromDockerConfig_RefusesUnsafeHelperName(t *testing.T) { @@ -97,3 +161,11 @@ func TestCredsFromDockerConfig_RefusesUnsafeHelperName(t *testing.T) { _, _, ok := credsFromDockerConfig("nvcr.io") assert.False(t, ok) } + +// Several challenges can share one header, comma-separated. +func TestSelectAuthChallenge_JoinedInOneHeader(t *testing.T) { + got := selectAuthChallenge([]string{`Negotiate, Bearer realm="https://auth.example/token",service="r"`}) + assert.Equal(t, `Bearer realm="https://auth.example/token",service="r"`, got) + assert.Equal(t, `Basic realm="bearer thing"`, selectAuthChallenge([]string{`Basic realm="bearer thing"`}), + "a quoted word is not a challenge") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/main_test.go b/src/clis/nvcf-cli/internal/selfhosted/main_test.go new file mode 100644 index 0000000000..6c652255a8 --- /dev/null +++ b/src/clis/nvcf-cli/internal/selfhosted/main_test.go @@ -0,0 +1,37 @@ +/* +SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. +SPDX-License-Identifier: Apache-2.0 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package selfhosted + +import ( + "os" + "testing" +) + +// TestMain points HOME at an empty directory so no test reads the developer's +// ~/.docker/config.json, or runs a credential helper it names. Tests that need +// a docker config write their own under a temporary HOME. +func TestMain(m *testing.M) { + home, err := os.MkdirTemp("", "selfhosted-test-home-") + if err != nil { + panic(err) + } + _ = os.Setenv("HOME", home) + code := m.Run() + _ = os.RemoveAll(home) + os.Exit(code) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index 8fe5f27b1f..f8d58fd08c 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -665,10 +665,11 @@ func clusterValidatorCheck( // the compute-plane GPU checks, which fail on a CPU-only control // plane. The latest tag can be such an image until a release with // role support is published, so report it as the image being too - // old rather than as the cluster failing. An empty transcript - // proves nothing, so it is left to the normal handling. - if role == validatorRoleControlPlane && result.Logs != "" && - !strings.Contains(result.Logs, validatorRoleMarker+validatorRoleControlPlane) { + // old rather than as the cluster failing. That needs positive + // evidence of the legacy check set, not just a missing role line: a + // role-aware image that fails before printing it (say, building its + // Kubernetes client) must still fail the run. + if role == validatorRoleControlPlane && isLegacyComputePlaneTranscript(result.Logs) { r.Severity = SeverityWarning r.Message = "cluster-validator image does not support the control-plane checks (it ran the " + "compute-plane set); use an image from an NVCA release that supports validator roles, " + @@ -693,6 +694,17 @@ func clusterValidatorCheck( // nvca/internal/clustervalidator/validator.go. const validatorRoleMarker = "Validator role: " +// legacyComputePlaneHeader is a section header only the compute-plane check +// set prints. A validator that predates roles always runs that set. +const legacyComputePlaneHeader = "GPU Resources" + +// isLegacyComputePlaneTranscript reports whether logs come from a validator +// that ignored the requested control-plane role: no role line, and the +// compute-plane check set's output instead. +func isLegacyComputePlaneTranscript(logs string) bool { + return !strings.Contains(logs, validatorRoleMarker) && strings.Contains(logs, legacyComputePlaneHeader) +} + // validatorCleanupHint is the command that removes everything one --no-cleanup // run kept. Everything it created carries the run label, so one selector // covers the namespaced objects and one the cluster-scoped RBAC. @@ -754,7 +766,13 @@ func registryCredentialCheck(checker RegistryCredentialChecker, entry RegistryEn // credential. Neither may block the run. var skipped errRegistryProbeSkipped var unverified errRegistryCredentialsUnverified + var notVerified errRegistryCredentialsNotVerified switch { + case errors.As(err, ¬Verified): + r.Passed = true + r.Severity = SeverityInfo + r.Message = entry.Registry + ": " + err.Error() + return r case errors.As(err, &skipped): r.Passed = true r.Severity = SeverityInfo diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go index 498262795e..dff41a7094 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret.go @@ -204,7 +204,7 @@ func scanAndMirrorPullSecret(ctx context.Context, client kubernetes.Interface, r // deleted by its own run's sweep mid-pull, which the kubelet // reports as FailedToRetrieveImagePullSecret. A --no-cleanup // Secret would otherwise be adopted by every later run. - if hasValidatorManagedLabels(s.Labels) { + if isAnyValidatorSecret(&s) { continue } return s.Name, nil @@ -328,6 +328,17 @@ func isManagedByValidatorCLI(s *corev1.Secret) bool { return hasValidatorManagedLabels(s.Labels) } +// isAnyValidatorSecret reports whether a Secret was minted by any version of +// this CLI's validator, including released ones that label with +// managed-by=nvcf-cli and use the bare nvcf-preflight-pull-secret name. Such a +// Secret belongs to another run: its CLI deletes it on exit, possibly while +// this run's pod is still pulling, and a stale one would be reused forever. +func isAnyValidatorSecret(s *corev1.Secret) bool { + return hasValidatorManagedLabels(s.Labels) || + s.Labels["app.kubernetes.io/name"] == clusterValidatorAppLabel || + strings.HasPrefix(s.Name, validatorPullSecretName) +} + // hasValidatorManagedLabels reports whether an object carries the labels this // CLI stamps on everything it creates. It is the ownership test for every // resource the validator writes to or deletes by name, not just Secrets. diff --git a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go index 2f4aa2fb07..f6cbc29653 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/pullsecret_test.go @@ -547,3 +547,28 @@ func TestAutoCreatePullSecretFromEnv_MintsUnderTheRunScopedName(t *testing.T) { require.NoError(t, err) assert.Contains(t, got, "a1b2c3d4e5", "the minted secret must be run-scoped") } + +// A released CLI's pull Secret carries managed-by=nvcf-cli and the bare name. +// It is that CLI's to delete, so adopting it breaks a pull mid-flight or +// reuses a stale key forever. +func TestScanAndMirrorPullSecret_NeverAdoptsAReleasedCLIsSecret(t *testing.T) { + cfg := dockerConfigBlob(t, "nvcr.io", "$oauthtoken", "key") + legacy := &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: validatorPullSecretName, + Namespace: clusterValidatorNamespace, + Labels: map[string]string{ + "app.kubernetes.io/name": clusterValidatorAppLabel, + "app.kubernetes.io/managed-by": "nvcf-cli", + "app.kubernetes.io/component": "preflight", + }, + }, + Type: corev1.SecretTypeDockerConfigJson, + Data: map[string][]byte{corev1.DockerConfigJsonKey: cfg}, + } + client := fake.NewSimpleClientset(legacy) + got, err := scanAndMirrorPullSecret(context.Background(), client, "nvcr.io", + clusterValidatorComputePlaneRole, "runid", false) + require.NoError(t, err) + assert.Empty(t, got) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go index e06d477d8f..a0bee9386d 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go @@ -115,12 +115,16 @@ func probeRegistryCredential(ctx context.Context, registry, repoHint string, cri } } // Anonymous read works. For a critical registry that is still not - // enough: the install pulls private repositories, so fall through to - // the credential requirement below rather than returning early. + // enough: the install pulls private repositories, so a credential must + // exist. It cannot be verified here, since /v2/ accepts anyone, so say + // so rather than report "credentials valid". if !critical { return nil } - return requireConfiguredCredentials(registry) + if err := requireConfiguredCredentials(registry); err != nil { + return err + } + return errRegistryCredentialsNotVerified{registry: registry} case http.StatusUnauthorized: // Auth required - proceed with token exchange. default: @@ -167,6 +171,15 @@ func probeRegistryCredential(ctx context.Context, registry, repoHint string, cri return nil } +// errRegistryCredentialsNotVerified marks a registry that allows anonymous +// access to /v2/: a local credential exists, but nothing here proves the +// registry accepts it. Reported as a pass that says so. +type errRegistryCredentialsNotVerified struct{ registry string } + +func (e errRegistryCredentialsNotVerified) Error() string { + return "credentials configured; not verified, because the registry allows anonymous access to /v2/" +} + // errRegistryProbeSkipped marks a registry this probe cannot speak to. The // caller reports it as a skip rather than a credential failure. type errRegistryProbeSkipped struct{ reason string } @@ -182,6 +195,11 @@ func selectAuthChallenge(challenges []string) string { if strings.EqualFold(authChallengeScheme(c), "Bearer") { return c } + // Several challenges can also share one header, comma-separated: + // `Negotiate, Bearer realm="..."`. Take the Bearer one from there. + if i := bearerChallengeStart(c); i > 0 { + return c[i:] + } } if len(challenges) > 0 { return challenges[0] @@ -189,6 +207,23 @@ func selectAuthChallenge(challenges []string) string { return "" } +// bearerChallengeStart returns where a Bearer challenge begins after a comma +// in a joined WWW-Authenticate value, or -1. +func bearerChallengeStart(header string) int { + lower := strings.ToLower(header) + for from := 0; ; { + j := strings.Index(lower[from:], "bearer ") + if j < 0 { + return -1 + } + j += from + if j > 0 && strings.HasSuffix(strings.TrimRight(lower[:j], " "), ",") { + return j + } + from = j + 1 + } +} + // authChallengeScheme returns the auth scheme named by a WWW-Authenticate // header, or "" when the header is absent or malformed. func authChallengeScheme(header string) string { diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go index e589752390..162b08a2ee 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go @@ -545,3 +545,30 @@ func TestEnumerateRegistries_RejectedImageRegistryDoesNotSuppressFallback(t *tes } assert.Contains(t, names, ngcRegistry) } + +// A critical registry whose /v2/ answers 200 lets anyone in, so a configured +// credential cannot be checked there. The result says so instead of +// "credentials valid", and the check still passes. +func TestProbeRegistryCredential_CriticalAnonymousIsNotVerified(t *testing.T) { + srv := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Docker-Distribution-Api-Version", "registry/2.0") + w.WriteHeader(http.StatusOK) + })) + defer srv.Close() + origTransport := http.DefaultTransport + http.DefaultTransport = srv.Client().Transport + t.Cleanup(func() { http.DefaultTransport = origTransport }) + host := strings.TrimPrefix(srv.URL, "https://") + dockerHome(t, inlineDockerConfig(t, host, "u", "p", "")) + + err := probeRegistryCredential(context.Background(), host, "", true) + var notVerified errRegistryCredentialsNotVerified + require.ErrorAs(t, err, ¬Verified) + + r := registryCredentialCheck(func(ctx context.Context, reg, repo string, critical bool) error { + return probeRegistryCredential(ctx, reg, repo, critical) + }, RegistryEntry{Registry: host, Critical: true}).Run(context.Background()) + assert.True(t, r.Passed) + assert.NotContains(t, r.Message, "credentials valid") + assert.Contains(t, r.Message, "not verified") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go index 99c6434c88..4830f3d55a 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go @@ -18,6 +18,7 @@ limitations under the License. package selfhosted import ( + "bytes" "context" "encoding/base64" "encoding/json" @@ -228,7 +229,9 @@ func exchangeBearerToken(ctx context.Context, client *http.Client, registry, rep // or is an NGC auth domain when the registry is NGC-hosted (NGC delegates // token issuance to authn.nvidia.com and other nvidia.com sub-domains). realmHost := strings.ToLower(u.Hostname()) - regHost := strings.ToLower(registry) + // Brackets off, to match u.Hostname(): "[fd00::1]" with no port fails + // SplitHostPort and would otherwise reject its own token server. + regHost := strings.ToLower(strings.TrimSuffix(strings.TrimPrefix(registry, "["), "]")) if h, _, err := net.SplitHostPort(registry); err == nil { regHost = strings.ToLower(h) } @@ -543,18 +546,21 @@ func credsFromDockerConfig(registry string) (string, string, bool) { if err := json.Unmarshal(body, &doc); err != nil { return "", "", false } - // A per-registry helper wins over the global store, as in docker itself. - // Docker Desktop keeps every login in credsStore and leaves only an empty - // auths entry, so without this a working `docker login` is invisible. - helper := doc.CredHelpers[registry] + // Docker's order: a per-registry credHelpers entry, else credsStore, and + // only with neither configured the inline auths entry. With a store + // configured docker never reads an inline password, so an old one left in + // the file must not win here either: that sent a stale key while `docker + // pull` worked. + key := dockerConfigKey(registry) + helper := doc.CredHelpers[key] if helper == "" { helper = doc.CredsStore } - entry, ok := doc.Auths[registry] - if !ok || (entry.Auth == "" && entry.Username == "") { - if helper != "" { - return credsFromHelper(helper, registry) - } + if helper != "" { + return credsFromHelper(helper, key) + } + entry, ok := doc.Auths[key] + if !ok { return "", "", false } if entry.Username != "" && entry.Password != "" { @@ -574,6 +580,20 @@ func credsFromDockerConfig(registry string) (string, string, bool) { return "", "", false } +// dockerHubConfigKey is the key docker stores Docker Hub logins under. +const dockerHubConfigKey = "https://index.docker.io/v1/" + +// dockerConfigKey maps a registry host to the key docker uses for it in +// config.json. Docker Hub's hosts all share one legacy key; every other +// registry is keyed by its host. +func dockerConfigKey(registry string) string { + switch registry { + case "docker.io", "index.docker.io", "registry-1.docker.io": + return dockerHubConfigKey + } + return registry +} + // credentialHelperName matches the docker-credential- suffixes docker // accepts. Anything else is refused rather than put on an exec path. var credentialHelperName = regexp.MustCompile(`^[A-Za-z0-9][A-Za-z0-9_.-]*$`) @@ -594,20 +614,46 @@ func credsFromHelper(helper, registry string) (string, string, bool) { defer cancel() cmd := exec.CommandContext(ctx, "docker-credential-"+helper, "get") cmd.Stdin = strings.NewReader(registry) - out, err := cmd.Output() - if err != nil { + // Without WaitDelay a helper that leaves a child holding stdout open keeps + // Output waiting past the timeout. The output cap keeps a misbehaving + // helper from filling memory; a credential is a few hundred bytes. + cmd.WaitDelay = time.Second + var out cappedBuffer + cmd.Stdout = &out + if err := cmd.Run(); err != nil || out.overflow { return "", "", false } var cred struct { Username string `json:"Username"` Secret string `json:"Secret"` } - if err := json.Unmarshal(out, &cred); err != nil || cred.Secret == "" { + if err := json.Unmarshal(out.buf.Bytes(), &cred); err != nil || cred.Secret == "" { return "", "", false } return cred.Username, cred.Secret, true } +// credentialHelperOutputLimit caps what a credential helper may write. +const credentialHelperOutputLimit = 64 << 10 + +// cappedBuffer keeps at most credentialHelperOutputLimit bytes and records +// whether more were written. +type cappedBuffer struct { + buf bytes.Buffer + overflow bool +} + +func (c *cappedBuffer) Write(p []byte) (int, error) { + if room := credentialHelperOutputLimit - c.buf.Len(); len(p) > room { + c.overflow = true + if room > 0 { + c.buf.Write(p[:room]) + } + return len(p), nil + } + return c.buf.Write(p) +} + // pickBestValidatorTag filters to recognized validator tags and returns // the best one: // diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go index f1dafeb95d..3d12742105 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag_test.go @@ -372,8 +372,9 @@ func TestExchangeBearerToken_RejectsAttackerRealm(t *testing.T) { // // Credentials have to be configured for the assertion to mean anything: if // none were present, no request could carry an Authorization header whether - // the control works or not. - t.Setenv("NGC_API_KEY", "test-key") + // the control works or not. NGC_API_KEY is not one: it only applies to NGC + // registries, so it left this assertion vacuous. + dockerHome(t, inlineDockerConfig(t, "harbor.company.internal", "u", "p", "")) rec := &recordingTransport{inner: http.DefaultTransport} client := &http.Client{Transport: rec} @@ -396,7 +397,7 @@ func TestExchangeBearerToken_RejectsAttackerRealm(t *testing.T) { // u.Host (":443") so it clears the relative-realm guard, but Hostname() is "", // and an empty trustedRealmDelegations lookup would compare equal to it. func TestExchangeBearerToken_RejectsEmptyRealmHost(t *testing.T) { - t.Setenv("NGC_API_KEY", "test-key") + dockerHome(t, inlineDockerConfig(t, "harbor.company.internal", "u", "p", "")) rec := &recordingTransport{inner: http.DefaultTransport} client := &http.Client{Transport: rec} @@ -500,3 +501,31 @@ func TestExchangeNGCBearerToken_RejectsHostConfusion(t *testing.T) { assert.Empty(t, rec.withAuth, "the NGC API key must not be sent to a confused host") assert.Empty(t, rec.requests, "no request may be issued at all") } + +// A bracketed IPv6 registry on the default port must accept its own token +// server: u.Hostname() drops the brackets, so the registry side must too. +func TestExchangeBearerToken_AcceptsBracketedIPv6Registry(t *testing.T) { + dockerHome(t, inlineDockerConfig(t, "[fd00::1]", "u", "p", "")) + rec := &recordingTransport{inner: roundTripperFunc(func(r *http.Request) (*http.Response, error) { + return &http.Response{ + StatusCode: http.StatusOK, + Body: io.NopCloser(strings.NewReader(`{"token":"t"}`)), + Header: make(http.Header), + }, nil + })} + tok, err := exchangeBearerToken(context.Background(), &http.Client{Transport: rec}, + "[fd00::1]", "repo", `Bearer realm="https://[fd00::1]/token",service="r"`) + require.NoError(t, err) + assert.Equal(t, "t", tok) +} + +// A redirect may not downgrade to cleartext: Go keeps the Authorization header +// across a same-host redirect whatever the scheme. +func TestRefuseInsecureRedirect(t *testing.T) { + plain, err := http.NewRequest(http.MethodGet, "http://reg.example.com/token", nil) + require.NoError(t, err) + assert.Error(t, refuseInsecureRedirect(plain, nil)) + secure, err := http.NewRequest(http.MethodGet, "https://reg.example.com/token", nil) + require.NoError(t, err) + assert.NoError(t, refuseInsecureRedirect(secure, nil)) +} From 047d62c6f4689483a48dfffb5db58bcc88686f32 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 30 Sep 2026 03:23:31 +0530 Subject: [PATCH 44/55] fix(nvcf-cli): trim the validator ClusterRole to the verbs its checks use Signed-off-by: rohithb --- .../internal/selfhosted/clustervalidator.go | 24 ++++++++++--------- .../clustervalidator_lifecycle_test.go | 21 ++++++++++++++++ .../selfhosted/clustervalidator_test.go | 11 ++++----- 3 files changed, 39 insertions(+), 17 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 765aa5fc7b..80ee140294 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -418,14 +418,16 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface cr := &rbacv1.ClusterRole{ ObjectMeta: metav1.ObjectMeta{Name: name, Labels: roleLabels}, + // Least privilege: only what the validator actually calls. It never + // creates Services, reads pod logs or watches anything, and it reads + // GatewayClasses through discovery alone. Rules: []rbacv1.PolicyRule{ - // Read-only: cluster inventory and configuration. - {APIGroups: []string{""}, Resources: []string{"nodes", "configmaps"}, Verbs: []string{"get", "list", "watch"}}, - // Read + write: enforcement checks create and delete probe namespaces - // and pods; the active-LB check creates and deletes a probe service. - {APIGroups: []string{""}, Resources: []string{"namespaces", "pods", "services"}, Verbs: []string{"get", "list", "watch", "create", "delete"}}, - // Pod log subresource: read probe output without exec. - {APIGroups: []string{""}, Resources: []string{"pods/log"}, Verbs: []string{"get"}}, + // Read-only: cluster inventory, its config ConfigMap, and the + // LoadBalancer Services the external-LB check inspects. + {APIGroups: []string{""}, Resources: []string{"nodes", "configmaps", "services"}, Verbs: []string{"get", "list"}}, + // Read + write: the overlay and enforcement probes create and delete + // their own namespaces and pods. + {APIGroups: []string{""}, Resources: []string{"namespaces", "pods"}, Verbs: []string{"get", "list", "create", "delete"}}, {APIGroups: []string{"storage.k8s.io"}, Resources: []string{"csidrivers", "storageclasses"}, Verbs: []string{"get", "list"}}, // NetworkPolicies: read for CNI detection; write for enforcement // check which creates/updates/deletes policies in the temp namespace. @@ -435,11 +437,11 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface // DaemonSets: create/delete for the node-to-node DaemonSet probe; list to watch pod readiness. {APIGroups: []string{"apps"}, Resources: []string{"deployments", "statefulsets"}, Verbs: []string{"get", "list"}}, {APIGroups: []string{"apps"}, Resources: []string{"daemonsets"}, Verbs: []string{"get", "list", "create", "delete"}}, - // Gateway API: control-plane gateway and route health checks. The - // validator follows every NVCF route kind's parentRefs to learn - // which Gateways are NVCF's, so all four route kinds are read. + // Gateway API: the validator follows every NVCF route kind's + // parentRefs to learn which Gateways are NVCF's, and reads those + // Gateways' classes. {APIGroups: []string{"gateway.networking.k8s.io"}, Resources: []string{ - "gatewayclasses", "gateways", "httproutes", "grpcroutes", "tcproutes", "udproutes", + "gateways", "httproutes", "grpcroutes", "tcproutes", "udproutes", }, Verbs: []string{"get", "list"}}, {NonResourceURLs: []string{"/readyz", "/version", "/healthz"}, Verbs: []string{"get"}}, }, diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go index 854218a902..4c490806b3 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go @@ -411,3 +411,24 @@ func TestRunClusterValidator_InterruptLeavesNothingBehind(t *testing.T) { } assert.True(t, deleted, "the Job must be stopped so its pod stops using the RBAC") } + +// The run's ClusterRole grants only what the validator calls. It never creates +// Services, reads pod logs or watches anything. +func TestEnsureClusterValidatorRBAC_LeastPrivilege(t *testing.T) { + client := fake.NewSimpleClientset() + require.NoError(t, ensureClusterValidatorRBAC(context.Background(), client, clusterValidatorControlPlaneRole, "runid", false)) + cr, err := client.RbacV1().ClusterRoles().Get(context.Background(), + clusterValidatorRBACName(clusterValidatorControlPlaneRole, "runid"), metav1.GetOptions{}) + require.NoError(t, err) + for _, r := range cr.Rules { + for _, v := range r.Verbs { + assert.NotEqual(t, "watch", v, "no rule needs watch") + } + for _, res := range r.Resources { + assert.NotEqual(t, "pods/log", res) + if res == "services" { + assert.ElementsMatch(t, []string{"get", "list"}, r.Verbs, "services are only read") + } + } + } +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index d41dd58887..3bc0a496a6 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -263,17 +263,16 @@ func TestEnsureClusterValidatorRBAC_WritableResources(t *testing.T) { // Probe pods spun up for node-to-node and inter-namespace checks. {"", "pods", "create"}, {"", "pods", "delete"}, - // Log reading: fetch probe output without exec. - {"", "pods/log", "get"}, - // Active LB probe service. - {"", "services", "create"}, - {"", "services", "delete"}, + // The external-LB check lists LoadBalancer Services. + {"", "services", "list"}, + // The node-to-node probe DaemonSet. + {"apps", "daemonsets", "create"}, + {"apps", "daemonsets", "delete"}, // Enforcement check creates/updates/deletes NetworkPolicies in temp namespace. {"networking.k8s.io", "networkpolicies", "create"}, {"networking.k8s.io", "networkpolicies", "update"}, {"networking.k8s.io", "networkpolicies", "delete"}, // Gateway API health checks. - {"gateway.networking.k8s.io", "gatewayclasses", "get"}, {"gateway.networking.k8s.io", "gateways", "list"}, {"gateway.networking.k8s.io", "httproutes", "get"}, {"gateway.networking.k8s.io", "grpcroutes", "list"}, From 8581a783201eb0b89b266d348909cf570a517706 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 30 Sep 2026 03:31:54 +0530 Subject: [PATCH 45/55] fix(nvcf-cli): keep the no-cleanup hint on RBAC failure, forward list-valued gateway names, and mark warnings apart from failures Signed-off-by: rohithb --- src/clis/nvcf-cli/cmd/self_hosted_check.go | 24 +++++++-- .../cmd/self_hosted_check_scope_test.go | 13 +++++ .../self_hosted_check_validatorenv_test.go | 49 +++++++++++++++++++ .../internal/selfhosted/clustervalidator.go | 43 +++++++++------- .../clustervalidator_lifecycle_test.go | 35 +++++++++++++ .../nvcf-cli/internal/selfhosted/preflight.go | 31 +++++++----- .../selfhosted/progress/render_tty.go | 7 ++- .../selfhosted/progress/render_tty_test.go | 7 +++ .../selfhosted/stale_namespace_test.go | 4 ++ 9 files changed, 175 insertions(+), 38 deletions(-) diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index caa4e57221..67b233ef1f 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -207,6 +207,11 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { // validator row" with "validator silently dropped". Print at most one // reason; --skip-cluster-validation takes precedence over missing // config since it's the explicit operator choice. + // --local-only overrides the required scope flag, so say which checks + // that drops rather than print a clean host-only result for --all. + if localOnly { + fmt.Fprintln(c.ErrOrStderr(), "note: --local-only runs the local host checks only; cluster checks for the requested scope are skipped") + } if !localOnly && (computePlaneIsVisited() || controlPlaneIsVisited()) { switch { case skipClusterValidation: @@ -740,15 +745,26 @@ func clusterValidatorJobEnv(stack selfhosted.StackValues) map[string]string { } // configValue reads a setting the way the CLI's cluster configuration does -// (environment, then the nvcf-cli config file). +// (environment, then the nvcf-cli config file). A YAML list in the config +// file is joined with commas, the form the validator's list settings parse; +// GetString alone returns "" for a list and would drop it silently. func configValue(key string) string { if v := strings.TrimSpace(os.Getenv(key)); v != "" { return v } - if viper.IsSet(key) { - return strings.TrimSpace(viper.GetString(key)) + if !viper.IsSet(key) { + return "" } - return "" + if _, isList := viper.Get(key).([]any); isList { + var items []string + for _, item := range viper.GetStringSlice(key) { + if item = strings.TrimSpace(item); item != "" { + items = append(items, item) + } + } + return strings.Join(items, ",") + } + return strings.TrimSpace(viper.GetString(key)) } // resolveClusterValidatorImage resolves the validator image from flag > env > diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go index 41fc8df9a6..79db6a6cb6 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go @@ -93,3 +93,16 @@ func TestCheck_SISReachabilityScope(t *testing.T) { _, hits = runCheckRecording(t, "--control-plane") assert.Zero(t, hits, "SIS is a compute-plane check") } + +// --local-only overrides the required scope flag; the run says so on stderr. +func TestCheck_LocalOnlyNotesSkippedClusterChecks(t *testing.T) { + resetCheckFlags(t) + t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") + var stderr bytes.Buffer + rootCmd.SetErr(&stderr) + rootCmd.SetOut(&bytes.Buffer{}) + t.Cleanup(func() { rootCmd.SetErr(nil); rootCmd.SetOut(nil) }) + rootCmd.SetArgs([]string{"self-hosted", "check", "--all", "--local-only", "--json"}) + _ = rootCmd.Execute() + assert.Contains(t, stderr.String(), "--local-only runs the local host checks only") +} diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go index 140fc2c060..a37649344b 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go @@ -97,3 +97,52 @@ func TestCheck_ControlPlaneValidatorGetsRegistriesAndEnv(t *testing.T) { assert.Contains(t, regs, "nvcr.io", "the enumerated registries must reach the validator") assert.Equal(t, "true", cp.Env["VALIDATOR_POST_INSTALL"]) } + +// NVCF_GATEWAY_NAMES written as a YAML list in the config file reaches the Job +// in the comma form the validator parses, not as an empty string. +func TestClusterValidatorJobEnv_GatewayNamesYAMLList(t *testing.T) { + t.Setenv("NVCF_GATEWAY_NAMES", "") + viper.Set("NVCF_GATEWAY_NAMES", []any{"gateway/nvcf-gw", " edge/shared ", ""}) + t.Cleanup(func() { viper.Set("NVCF_GATEWAY_NAMES", nil) }) + + env := clusterValidatorJobEnv(selfhosted.StackValues{}) + assert.Equal(t, "gateway/nvcf-gw,edge/shared", env["NVCF_GATEWAY_NAMES"]) +} + +// --pre in split mode visits both clusters, so each gets its own validator +// role against its own context, both marked pre-install. +func TestCheck_PreSplitRunsBothValidatorRoles(t *testing.T) { + resetCheckFlags(t) + var mu sync.Mutex + got := map[string]selfhosted.ClusterValidatorParams{} + prev := newClusterValidatorForSelfHosted + newClusterValidatorForSelfHosted = func() selfhosted.ClusterValidator { + return func(_ context.Context, p selfhosted.ClusterValidatorParams) selfhosted.ClusterValidatorResult { + mu.Lock() + defer mu.Unlock() + got[p.Role] = p + return selfhosted.ClusterValidatorResult{Passed: true} + } + } + t.Cleanup(func() { newClusterValidatorForSelfHosted = prev }) + t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") + + var errBuf bytes.Buffer + rootCmd.SetErr(&errBuf) + rootCmd.SetOut(&bytes.Buffer{}) + rootCmd.SetArgs([]string{"self-hosted", "check", "--pre", "--json", + "--control-plane-context", "cp-ctx", "--compute-plane-context", "gpu-ctx", + "--icms-url", "https://sis.example.invalid", + "--cluster-validator-image", "nvcr.io/nvidia/nvcf-byoc/cluster-validator:1.0.0"}) + _ = rootCmd.Execute() + + mu.Lock() + defer mu.Unlock() + cp, ok := got["control-plane"] + require.True(t, ok, "the control-plane validator must run; output: %s", errBuf.String()) + gpu, ok := got["compute-plane"] + require.True(t, ok, "the compute-plane validator must run; output: %s", errBuf.String()) + assert.Equal(t, "cp-ctx", cp.KubeContext) + assert.Equal(t, "gpu-ctx", gpu.KubeContext) + assert.NotContains(t, cp.Env, "VALIDATOR_POST_INSTALL", "--pre is pre-install") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 80ee140294..ebcc4592d0 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -208,7 +208,9 @@ func runClusterValidator( } }() if err := ensureClusterValidatorRBAC(vctx, client, role, runID, noCleanup); err != nil { - return ClusterValidatorResult{Err: fmt.Errorf("bootstrapping validator RBAC: %w", err)} + // RunID lets --no-cleanup print the command that removes whatever the + // failed bootstrap and the pull-secret step already created. + return ClusterValidatorResult{RunID: runID, Err: fmt.Errorf("bootstrapping validator RBAC: %w", err)} } // For the control-plane role, create a ConfigMap with reachability @@ -246,9 +248,10 @@ func runClusterValidator( } podMayBeRunning = true - // The Job owns this run's pull secret and ConfigMap, so they go when its - // TTL (or, for --no-cleanup, the preserved-object sweep) removes it, even - // on paths where the deferred sweeps are suppressed. The ServiceAccount is + // The Job owns this run's pull secret and ConfigMap, so they go when the + // Job goes, even on paths where the deferred sweeps are suppressed: its + // TTL removes it, or for --no-cleanup a later check's orphan sweep once + // preservedValidatorTTL has passed. The ServiceAccount is // deliberately not owned: the ClusterRole and binding are cluster-scoped // and cannot be, and deleting the account alone would leave a binding // that anyone able to recreate that ServiceAccount name could inherit. @@ -395,9 +398,9 @@ func (e *validatorImagePullError) Error() string { return fmt.Sprintf("validator pod cannot pull image (%s): %s", e.reason, e.message) } -// Creates the SA/ClusterRole/ClusterRoleBinding the validator pod runs under, -// idempotent via AlreadyExists tolerance. ClusterRole uses update-or-create so -// newer CLI versions replace stale rules without the operator needing to delete. +// ensureClusterValidatorRBAC creates this run's ServiceAccount, ClusterRole and +// ClusterRoleBinding for the validator pod. Create only: the names are unique +// per run, so an object that already exists was not made by this run. func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, role, runID string, preserve bool) error { roleLabels := clusterValidatorRunLabels(role, runID, preserve) name := clusterValidatorRBACName(role, runID) @@ -481,10 +484,9 @@ func clusterValidatorLabels() map[string]string { } } -// clusterValidatorRoleLabels adds the role so the prior-run sweep only matches -// Jobs from the same role. Without it, a ModeSingle run deletes the other -// role's Job mid-command, including under --no-cleanup, which makes the -// printed `kubectl logs job/...` hint 404. +// clusterValidatorRoleLabels are the managed labels plus the role, with no run +// ID. validatorRoleSelector matches on them, so a lookup for one role never +// returns the other role's objects in a ModeSingle run. func clusterValidatorRoleLabels(role string) map[string]string { return clusterValidatorRunLabels(role, "", false) } @@ -675,10 +677,11 @@ func sweepClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface, } } -// sweepManagedPullSecrets removes any docker-registry secrets in -// clusterValidatorNamespace that we previously created (mirrored from -// another namespace or minted from NGC_API_KEY). Called after the Job -// terminates so NGC credentials don't persist across preflight runs. +// sweepManagedPullSecrets removes this run's docker-registry secret in +// clusterValidatorNamespace (mirrored from another namespace or minted from +// NGC_API_KEY). Called after the Job terminates so NGC credentials don't +// persist across preflight runs. Other runs' secrets are left to their own +// sweeps or to sweepOrphanClusterValidatorRBAC. // // Operator-supplied secrets via --cluster-validator-pull-secret aren't // labeled by us and are skipped by the selector. Errors are swallowed: @@ -787,7 +790,7 @@ const controlPlaneValidatorEnforcementConfig = `enforcement: critical: false ` -// ensureClusterValidatorConfig creates or updates the network-check ConfigMap. +// ensureClusterValidatorConfig creates this run's network-check ConfigMap. // Best-effort: the validator skips configurable checks when it is absent. func ensureClusterValidatorConfig(ctx context.Context, client kubernetes.Interface, registries []RegistryEntry, runID string, preserve bool) error { content := buildControlPlaneValidatorConfig(registries) @@ -811,8 +814,9 @@ func ensureClusterValidatorConfig(ctx context.Context, client kubernetes.Interfa return nil } - // Always update so a newer CLI version's config (or new registries) replaces - // stale content, but never overwrite a ConfigMap we do not own. + // The name is per run, so an existing object was not created by this run. + // Replace the content only when it carries our labels; never overwrite a + // ConfigMap we do not own. if !hasValidatorManagedLabels(existing.Labels) { return fmt.Errorf( "refusing to overwrite ConfigMap %s/%s which is not managed by nvcf-cli", @@ -967,7 +971,8 @@ func buildClusterValidatorJob(name, image, pullSecret, role, runID string, noCle // the deferred sweeps, or to a later run's orphan sweep. Sized above // the runner's own budget so it never truncates a wait that is still // making progress. A --no-cleanup Job gets neither, so the pod and its - // logs survive for debugging until the preserved-object sweep. + // logs survive for debugging until the operator removes them or a + // later check's orphan sweep runs after preservedValidatorTTL. activeDeadline := int64(clusterValidatorTimeout/time.Second) + 60 job.Spec.ActiveDeadlineSeconds = &activeDeadline ttl := clusterValidatorTTLSeconds diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go index 4c490806b3..00d142c276 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go @@ -159,6 +159,22 @@ func TestRunClusterValidator_FailedBootstrapLeavesNothingBehind(t *testing.T) { assert.Empty(t, sas.Items, "the ServiceAccount created before the failure must be removed") } +// Under --no-cleanup a failed bootstrap keeps what it created, so the result +// still carries the run ID the removal command selects on. +func TestRunClusterValidator_NoCleanupFailedBootstrapReportsTheRun(t *testing.T) { + client := fake.NewSimpleClientset() + client.PrependReactor("create", "clusterroles", func(ktesting.Action) (bool, runtime.Object, error) { + return true, nil, apierrors.NewForbidden( + schema.GroupResource{Group: rbacv1.GroupName, Resource: "clusterroles"}, "", nil) + }) + + res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", + "", true, clusterValidatorComputePlaneRole, nil, nil) + require.Error(t, res.Err) + require.NotEmpty(t, res.RunID) + assert.Len(t, leftovers(t, client, res.RunID)["ServiceAccount"], 1) +} + // A pull failure means the container never started, so nothing uses the RBAC, // the NGC pull secret or the ConfigMap: the Job is deleted and all of them go // now, instead of waiting 30 minutes for another run's orphan sweep. @@ -432,3 +448,22 @@ func TestEnsureClusterValidatorRBAC_LeastPrivilege(t *testing.T) { } } } + +// Only the control-plane Job reads a network-check ConfigMap. The compute-plane +// Job gets a non-empty name that resolves to nothing: an empty value would let +// the validator fall back to its default name and pick up control-plane config. +func TestBuildClusterValidatorJob_ConfigNamePerRole(t *testing.T) { + configName := func(role string) string { + job := buildClusterValidatorJob("j", "img:1", "", role, "runid", false, nil) + for _, e := range job.Spec.Template.Spec.Containers[0].Env { + if e.Name == "VALIDATOR_CONFIG_NAME" { + return e.Value + } + } + return "" + } + assert.Equal(t, clusterValidatorConfigRunName("runid"), configName(clusterValidatorControlPlaneRole)) + cp := configName(clusterValidatorComputePlaneRole) + assert.Equal(t, clusterValidatorNoConfigName, cp) + assert.NotEqual(t, clusterValidatorConfigName, cp, "must not be the validator's default name") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index f8d58fd08c..7b2c6b1f35 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -796,6 +796,8 @@ func registryCredentialCheck(checker RegistryCredentialChecker, entry RegistryEn } } +// mergeNamespaces returns the union of two namespace lists, order-stable and +// de-duplicated. func mergeNamespaces(base, extra []string) []string { if len(extra) == 0 { return base @@ -817,8 +819,6 @@ func mergeNamespaces(base, extra []string) []string { // staleNamespaceCheck detects NVCF namespaces stuck Terminating or left as // empty shells after a partial teardown. Severity is error; prober errors // degrade to warning so transient kubeconfig issues don't falsely fail. -// mergeNamespaces returns the union of two namespace lists, order-stable and -// de-duplicated. func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namespaces []string) binaryCheckSpec { const id = "stale-namespaces" return binaryCheckSpec{ @@ -863,26 +863,31 @@ func staleNamespaceCheck(prober StaleNamespaceProber, kubeContext string, namesp kctl := "kubectl" + kubectlContextArg(probedContext) var hints []string if len(terminating) > 0 { - // spec.finalizers is writable only through the /finalize - // subresource: a plain patch or update is silently reverted by - // the apiserver's namespace strategy, so `kubectl patch ... - // --type=merge` prints "patched" and changes nothing. - for _, ns := range terminating { - hints = append(hints, fmt.Sprintf( - "clear namespace finalizers on %s: %s get ns %s -o json | "+ - "jq '.spec.finalizers=[]' | %s replace --raw /api/v1/namespaces/%s/finalize -f -", - ns, kctl, ns, kctl, ns)) - } + // Inspect first, force last. A namespace usually stays + // Terminating because an object inside it still has a + // finalizer; clearing the namespace's own finalizers skips that + // object's cleanup and can orphan what it manages, such as a + // cloud load balancer or volume. // One command per namespace with the real name substituted. A // `` placeholder is not pasteable: the shell reads `<` and // `>` as redirection, so the command fails before kubectl runs. for _, ns := range terminating { hints = append(hints, fmt.Sprintf( - "if %s stays Terminating, the deadlock is on objects inside it: "+ + "find what is holding %s in Terminating: "+ "%s api-resources --verbs=list --namespaced -o name | "+ "xargs -n1 %s get -n %s --show-kind --ignore-not-found", ns, kctl, kctl, ns)) } + // spec.finalizers is writable only through the /finalize + // subresource: a plain patch or update is silently reverted by + // the apiserver's namespace strategy, so `kubectl patch ... + // --type=merge` prints "patched" and changes nothing. + for _, ns := range terminating { + hints = append(hints, fmt.Sprintf( + "only if nothing inside %s can be cleaned up, force-clear its finalizers: %s get ns %s -o json | "+ + "jq '.spec.finalizers=[]' | %s replace --raw /api/v1/namespaces/%s/finalize -f -", + ns, kctl, ns, kctl, ns)) + } } if len(emptyShell) > 0 { // Deliberately not a delete command. A namespace with no Helm diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go index 6191c974dd..7af56b8e17 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go @@ -1763,13 +1763,16 @@ func humanCategoryName(raw string) string { // checkGlyph returns the bracketed glyph for a check row. Matches install-mode // convention: bracket + unicode, unchanged in ASCII-only mode (AsciiOnly only -// strips ANSI color codes, not unicode characters). +// strips ANSI color codes, not unicode characters). A miss below error +// severity is a warning, tallied and exited on as one, so it gets its own mark. func checkGlyph(row checkRow) string { switch { case row.finished && row.passed: return "[✓]" - case row.finished && !row.passed: + case row.finished && row.severity == "error": return "[✘]" + case row.finished: + return "[!]" case row.started && !row.finished: return "[▶]" default: diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty_test.go b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty_test.go index e55823d69d..1c1250e0e4 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty_test.go @@ -568,6 +568,13 @@ func TestCheckOneShotRenderer_FlushesFailedSummaryOnFinal(t *testing.T) { assert.Contains(t, out, "Status: ✘ failed (1/2 passed, 1 failed)") } +// A warning row is not marked as a failure: it does not fail the run. +func TestCheckGlyph_WarningIsNotAFailure(t *testing.T) { + assert.Equal(t, "[✓]", checkGlyph(checkRow{finished: true, passed: true})) + assert.Equal(t, "[✘]", checkGlyph(checkRow{finished: true, severity: "error"})) + assert.Equal(t, "[!]", checkGlyph(checkRow{finished: true, severity: "warning"})) +} + func TestCheckOneShotRenderer_UsesFinalTallyForStatus(t *testing.T) { t.Setenv("NO_COLOR", "1") diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go index 821947fa8d..d2b4b8aa67 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go @@ -225,6 +225,10 @@ func TestStaleNamespaceCheck_StaleIsError(t *testing.T) { assert.Contains(t, r.Message, "nvcf") assert.Contains(t, r.Message, "/api/v1/namespaces/nvcf/finalize", "the remediation must use the finalize subresource; a plain patch is silently reverted") + inspect := strings.Index(r.Message, "xargs -n1 kubectl get -n nvcf") + force := strings.Index(r.Message, "/finalize") + require.GreaterOrEqual(t, inspect, 0) + assert.Less(t, inspect, force, "inspecting the namespace comes before force-clearing its finalizers") } func TestStaleNamespaceCheck_CleanPasses(t *testing.T) { From 88072220616cdaceb13bbcb733105f8821594487 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 30 Sep 2026 03:31:54 +0530 Subject: [PATCH 46/55] docs(nvcf-cli): document the validator registry set, probe image, local-only scope and check exit codes Signed-off-by: rohithb --- .../reference/exit-codes.md | 4 +- .../nvcf-self-managed-cli/reference/flags.md | 5 +- .../agentskill/skilldata_generated.go | 4319 +++++++++-------- 3 files changed, 2173 insertions(+), 2155 deletions(-) diff --git a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/exit-codes.md b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/exit-codes.md index fe27d62671..1c6924095f 100644 --- a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/exit-codes.md +++ b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/exit-codes.md @@ -6,7 +6,7 @@ Stable across subcommands. Use these to drive agent retry / surfacing logic. |---|---|---| | `0` | Success | All checks passed; install completed; deployment ACTIVE | | `1` | Generic error | Helm render failed; network unreachable; file not found; YAML parse error | -| `2` | Pre-flight check failed | Gateway API CRDs missing; kubectl not on PATH; default StorageClass absent | +| `2` | Pre-flight check failed | A `check` result at error severity: Gateway API CRDs missing; kubectl not on PATH; default StorageClass absent. Warning-severity results, such as a validator that could not run, exit `0` | | `3` | Admin auth failed | No token + `--non-interactive` set; ICMS rejected JWT; init endpoint unreachable | | `5` | Manifest apply or `--wait` timed out | Helm install timeout; check polled but didn't pass before duration | | `130` | Cancelled by SIGINT/SIGTERM | User Ctrl-C; CI budget exceeded; pod evicted | @@ -24,4 +24,4 @@ Stable across subcommands. Use these to drive agent retry / surfacing logic. ## Where to find more detail -Every non-zero exit emits a structured `phase_failed` JSON event with `errCategory`, `errMessage`, `remediation` (array), `retryClass` (enum: `none|immediate|backoff|after_remediation|unknown`), `retryAfterSec` (int, optional), and `raw` (subprocess + HTTP + Kubernetes signal). Always consume these in `--json` mode rather than parsing English from stderr. +`check` reports its outcome in one `final` event (`success`, `verdict`, `failedCount`) and never emits `phase_failed`; see `examples/ci-pipelines.md`. Every other non-zero exit emits a structured `phase_failed` JSON event with `errCategory`, `errMessage`, `remediation` (array), `retryClass` (enum: `none|immediate|backoff|after_remediation|unknown`), `retryAfterSec` (int, optional), and `raw` (subprocess + HTTP + Kubernetes signal). Always consume these in `--json` mode rather than parsing English from stderr. diff --git a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md index 2f6a0c35c1..19b255688b 100644 --- a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md +++ b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md @@ -24,7 +24,7 @@ | `--control-plane-context CTX` | kubectl context for control plane (REQ-20) | current context | | `--compute-plane-context CTX` | kubectl context for compute plane (REQ-20) | current context | | `--icms-url URL` | Public ICMS URL; required when contexts differ | derived from `base_http_url` | -| `--local-only` | `check --pre` only; skip all kubectl contact | `false` | +| `--local-only` | `check` only; run the local-host checks and skip all kubectl contact, whatever scope flag is passed. The CLI prints a note saying so. Env: `NVCF_CLI_SELFHOSTED_LOCAL_ONLY` | `false` | ## `check`-specific @@ -49,7 +49,8 @@ after the run, so the kubeconfig context needs permission to manage those. | Flag | Purpose | Default | |---|---|---| | `--cluster-validator-image REF` | Validator image. Resolution order: flag, `NVCF_CLI_CLUSTER_VALIDATOR_IMAGE`, config key `cluster_validator_image`. A ref with no tag discovers the latest stable tag from the registry. Unset everywhere skips the probe with a warning | - | -| `--cluster-validator-registries host:port,...` | Extra registries the control-plane validator probes for reachability. `nvcr.io` is always probed. Repeatable or comma-separated. Env: `NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES`; config key `cluster_validator_registries` | `nvcr.io` only | +| `--cluster-validator-registries host:port,...` | Extra registries the control-plane validator probes for reachability. They are added to the registries the install pulls from: the validator image's registry, the stack's `global.image.registry`, and `quay.io` for the cert-manager ACME solver unless the stack sets `certManager.acmesolver.image`. `nvcr.io` is probed, as non-critical, only when neither the image nor the stack names a registry. Repeatable or comma-separated. Env: `NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES`; config key `cluster_validator_registries` | - | +| `--cluster-validator-probe-image REF` | Image for the control-plane validator's node-to-node overlay probe. Needs `sh` and a busybox-style `nc`. Set a mirror for air-gapped clusters. Env: `NVCF_CLI_CLUSTER_VALIDATOR_PROBE_IMAGE`; config key `cluster_validator_probe_image` | `busybox:1.36` from Docker Hub | | `--cluster-validator-pull-secret NAME` | docker-registry Secret in `default` used to pull the validator image. When empty, the CLI looks for one in the NVCF namespaces and copies it into `default` for the run. Failing that, and only for an image on an NGC registry, it mints one from `NGC_API_KEY` | auto-detect | | `--skip-cluster-validation` | Skip the in-cluster validator probe entirely. Env: `NVCF_CLI_SELFHOSTED_SKIP_CLUSTER_VALIDATION` | `false` | | `--no-cleanup` | Keep the validator Job, its pod, RBAC, pull secret and ConfigMap for debugging. A later check reclaims them after 24 hours; the result prints the `kubectl delete` command that removes them now | `false` | diff --git a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go index 526fbada7d..2655ad84e6 100644 --- a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go +++ b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go @@ -31,7 +31,7 @@ import ( const skillDataZipBase64 = "" + "UEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAASAAkAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4S" + "ewogICJzY2hlbWFWZXJzaW9uIjogMSwKICAiZ2VuZXJhdGVkQXQiOiAiMTk3MC0wMS0wMVQwMDow" + - "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDM4MDYsCiAgImZp" + + "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDQ3OTYsCiAgImZp" + "bGVzIjogWwogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvU0tJTEwu" + "bWQiLAogICAgICAic2hhMjU2IjogImFhOWY3ZTI0NmYzODA0YjMzNDNiNjU2MWU1YmNmZTdiYjcy" + "YjI0MDIxOTMzZTA0OWY4NWUwMDI4OTAzYmJmYTQiLAogICAgICAic2l6ZSI6IDI0OTE1CiAgICB9" + @@ -68,12 +68,12 @@ const skillDataZipBase64 = "" + "b21tYW5kcy5tZCIsCiAgICAgICJzaGEyNTYiOiAiMmI0YjAzNmU3NTA3MDZiOWUzYjgxZmNkNjAy" + "YzcwNmY3NGY3N2Y2MjQwZmI3YWFkNjIwYzg3OWZmNzQ5NmNkOCIsCiAgICAgICJzaXplIjogODk5" + "MwogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVy" + - "ZW5jZS9leGl0LWNvZGVzLm1kIiwKICAgICAgInNoYTI1NiI6ICI2NGI1ZmE5YmNhZjBlMGE1M2Y3" + - "ODkyMGI3M2ZjYjUzMGFiNjk0NTFiNDhhNWI0OTNmMjUyY2ExODU4M2FiMDg2IiwKICAgICAgInNp" + - "emUiOiAxNzQ5CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1j" + - "bGkvcmVmZXJlbmNlL2ZsYWdzLm1kIiwKICAgICAgInNoYTI1NiI6ICI1OTM1ZDkzNjE4ZGM5M2Qx" + - "OTM5ZGMxNmYzYWQ5NjRjOGRjOGY0YjllOTYxNzViNmQxM2QxM2Q3ZWY1YzM0OTE3IiwKICAgICAg" + - "InNpemUiOiAxMjEzMgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + + "ZW5jZS9leGl0LWNvZGVzLm1kIiwKICAgICAgInNoYTI1NiI6ICJjNDgzOTMwM2MwNGU4ZjUzYmVh" + + "N2FkMzQyZGI1MGY4YjRmNzI5ODUzNjEzOTJlZjhjMDcyNDFkMmZhM2I4MDc3IiwKICAgICAgInNp" + + "emUiOiAyMDE4CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1j" + + "bGkvcmVmZXJlbmNlL2ZsYWdzLm1kIiwKICAgICAgInNoYTI1NiI6ICIyNzYzYWY2ZjA2YzYzM2E4" + + "YzU5MzY4NTJkYWIzMmViYzgwMDQ1MTFiZDdkZmNhOGQ2ZTZhMmM0N2Q3N2VmNTcxIiwKICAgICAg" + + "InNpemUiOiAxMjg1MwogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + "ZWQtY2xpL3JlZmVyZW5jZS90cm91Ymxlc2hvb3RpbmcubWQiLAogICAgICAic2hhMjU2IjogImE2" + "MzA4NGUyMjQ5ZjFkMTU0YzU5ODFlNGEwNzJiN2M3ODRiODVlYTE0NjA4NjUxNWVhYjRhYjY3MGE5" + "NDBlOTQiLAogICAgICAic2l6ZSI6IDQ0NjgKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogIm52" + @@ -103,7 +103,7 @@ const skillDataZipBase64 = "" + "aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9wdWxsLXNlY3Jl" + "dHMubWQiLAogICAgICAic2hhMjU2IjogImVjMWYzZmZjZDE3ZTVmOTU4M2ZlZTM5NzQ0ZWU4OTdk" + "NDY2YmMzY2Y2Mzg5Mjk0MjY0ZDg5ZTdmOWVkMDFiODciLAogICAgICAic2l6ZSI6IDU2MzIKICAg" + - "IH0KICBdCn0KUEsHCKv81L5KEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + + "IH0KICBdCn0KUEsHCF3Gf9hKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + "dGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQFAAEAps4SLS0tCm5hbWU6IG52Y2Yt" + "c2VsZi1tYW5hZ2VkLWNsaQpkZXNjcmlwdGlvbjogfAogIEluc3RhbGwsIG9wZXJhdGUsIGFuZCB0" + "ZWFyIGRvd24gc2VsZi1ob3N0ZWQgTlZJRElBIENsb3VkIEZ1bmN0aW9ucyAoTlZDRikKICBkZXBs" + @@ -1617,2155 +1617,2172 @@ const skillDataZipBase64 = "" + "LS0tfC0tLXwtLS18CnwgYDBgIHwgU3VjY2VzcyB8IEFsbCBjaGVja3MgcGFzc2VkOyBpbnN0YWxs" + "IGNvbXBsZXRlZDsgZGVwbG95bWVudCBBQ1RJVkUgfAp8IGAxYCB8IEdlbmVyaWMgZXJyb3IgfCBI" + "ZWxtIHJlbmRlciBmYWlsZWQ7IG5ldHdvcmsgdW5yZWFjaGFibGU7IGZpbGUgbm90IGZvdW5kOyBZ" + - "QU1MIHBhcnNlIGVycm9yIHwKfCBgMmAgfCBQcmUtZmxpZ2h0IGNoZWNrIGZhaWxlZCB8IEdhdGV3" + - "YXkgQVBJIENSRHMgbWlzc2luZzsga3ViZWN0bCBub3Qgb24gUEFUSDsgZGVmYXVsdCBTdG9yYWdl" + - "Q2xhc3MgYWJzZW50IHwKfCBgM2AgfCBBZG1pbiBhdXRoIGZhaWxlZCB8IE5vIHRva2VuICsgYC0t" + - "bm9uLWludGVyYWN0aXZlYCBzZXQ7IElDTVMgcmVqZWN0ZWQgSldUOyBpbml0IGVuZHBvaW50IHVu" + - "cmVhY2hhYmxlIHwKfCBgNWAgfCBNYW5pZmVzdCBhcHBseSBvciBgLS13YWl0YCB0aW1lZCBvdXQg" + - "fCBIZWxtIGluc3RhbGwgdGltZW91dDsgY2hlY2sgcG9sbGVkIGJ1dCBkaWRuJ3QgcGFzcyBiZWZv" + - "cmUgZHVyYXRpb24gfAp8IGAxMzBgIHwgQ2FuY2VsbGVkIGJ5IFNJR0lOVC9TSUdURVJNIHwgVXNl" + - "ciBDdHJsLUM7IENJIGJ1ZGdldCBleGNlZWRlZDsgcG9kIGV2aWN0ZWQgfAoKIyMgSG93IGFuIGFn" + - "ZW50IHNob3VsZCByZWFjdAoKfCBDb2RlIHwgQWdlbnQgYmVoYXZpb3IgfAp8LS0tfC0tLXwKfCBg" + - "MGAgfCBDb250aW51ZSAvIHJlcG9ydCBzdWNjZXNzLiB8CnwgYDFgIHwgU3VyZmFjZSBzdGRlcnIg" + - "dG8gdXNlcjsgYXNrIGJlZm9yZSBhbnkgcmV0cnkuIEdlbmVyaWMgZXJyb3JzIHVzdWFsbHkgbmVl" + - "ZCBhIGh1bWFuIHRvIHJlYWQgdGhlIG1lc3NhZ2UuIHwKfCBgMmAgfCBTdXJmYWNlIGZhaWxlZCBj" + - "aGVja3MgKyB0aGVpciBgaGludFVSTGAuIERvbid0IHByb3Bvc2UgYHVwYCB1bnRpbCB0aGUgdXNl" + - "ciBmaXhlcyBwcmVyZXFzLiB8CnwgYDNgIHwgU3VnZ2VzdCBgbnZjZi1jbGkgaW5pdGAgKGludGVy" + - "YWN0aXZlKSBPUiBgLS10b2tlbj0kSldUYCAoQ0kpLiBEb24ndCBhdXRvLW1pbnQgd2l0aG91dCB1" + - "c2VyIE9LLiB8CnwgYDVgIHwgQXNrIHVzZXIgaWYgdGhleSB3YW50IHRvIHdhaXQgbG9uZ2VyLCBk" + - "aWcgaW50byB0aGUgc3RhbGxlZCBjb21wb25lbnQsIG9yIGNhbmNlbC4gfAp8IGAxMzBgIHwgRG9u" + - "J3QgcmV0cnkgYXV0b21hdGljYWxseTsgdXNlciBleHBsaWNpdGx5IGNhbmNlbGxlZC4gQ29uZmly" + - "bSBiZWZvcmUgcmUtcnVubmluZy4gfAoKIyMgV2hlcmUgdG8gZmluZCBtb3JlIGRldGFpbAoKRXZl" + - "cnkgbm9uLXplcm8gZXhpdCBlbWl0cyBhIHN0cnVjdHVyZWQgYHBoYXNlX2ZhaWxlZGAgSlNPTiBl" + - "dmVudCB3aXRoIGBlcnJDYXRlZ29yeWAsIGBlcnJNZXNzYWdlYCwgYHJlbWVkaWF0aW9uYCAoYXJy" + - "YXkpLCBgcmV0cnlDbGFzc2AgKGVudW06IGBub25lfGltbWVkaWF0ZXxiYWNrb2ZmfGFmdGVyX3Jl" + - "bWVkaWF0aW9ufHVua25vd25gKSwgYHJldHJ5QWZ0ZXJTZWNgIChpbnQsIG9wdGlvbmFsKSwgYW5k" + - "IGByYXdgIChzdWJwcm9jZXNzICsgSFRUUCArIEt1YmVybmV0ZXMgc2lnbmFsKS4gQWx3YXlzIGNv" + - "bnN1bWUgdGhlc2UgaW4gYC0tanNvbmAgbW9kZSByYXRoZXIgdGhhbiBwYXJzaW5nIEVuZ2xpc2gg" + - "ZnJvbSBzdGRlcnIuClBLBwhzp1pk1QYAANUGAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAC0A" + - "CQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZmxhZ3MubWRVVAUAAQCmzhIj" + - "IGBudmNmLWNsaWAgZmxhZyByZWZlcmVuY2UKCiMjIEdsb2JhbCBmbGFncyAoZXZlcnkgc3ViY29t" + - "bWFuZCkKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNv" + - "bmZpZyBGSUxFYCB8IENvbmZpZyBmaWxlIHBhdGggfCBgJEhPTUUvLm52Y2YtY2xpLnlhbWxgIHwK" + - "fCBgLS1kZWJ1Z2AgfCBWZXJib3NlIEhUVFAgbG9nZ2luZyBvbiBzdGRlcnIgfCBgZmFsc2VgIHwK" + - "fCBgLS1qc29uYCB8IEpTT05MIGV2ZW50cyBvbiBzdGRlcnIgfCBhdXRvIChvZmYgaW4gVFRZLCBv" + - "biB1bmRlciBgLS1ub24taW50ZXJhY3RpdmVgKSB8CgojIyBgc2VsZi1ob3N0ZWRgIHBhcmVudCAo" + - "cGVyc2lzdGVudCBhY3Jvc3Mgc3ViY29tbWFuZHMpCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVs" + - "dCB8CnwtLS18LS0tfC0tLXwKfCBgLS1jb250cm9sLXBsYW5lLXN0YWNrPeKApmAgfCBDb250cm9s" + - "LXBsYW5lIGJ1bmRsZSBzb3VyY2U6IGxvY2FsIHBhdGgsIGdpdCBVUkwsIG9yIGBvY2k6Ly9gIFVS" + - "TCB8IGVtYmVkZGVkIE9DSSBVUkwgcGlubmVkIGJ5IENMSSB2ZXJzaW9uIHwKfCBgLS1jb21wdXRl" + - "LXBsYW5lLXN0YWNrPeKApmAgfCBDb21wdXRlLXBsYW5lIGJ1bmRsZSBzb3VyY2U6IGxvY2FsIHBh" + - "dGgsIGdpdCBVUkwsIG9yIGBvY2k6Ly9gIFVSTCB8IGVtYmVkZGVkIE9DSSBVUkwgcGlubmVkIGJ5" + - "IENMSSB2ZXJzaW9uIHwKfCBgLS1lbnY9bG9jYWxcfHByZFx84oCmYCB8IEhlbG1maWxlIGVudmly" + - "b25tZW50IG5hbWUgfCBgbG9jYWxgIGZvciBkZXYgYnVpbGRzLCBgcHJkYCBmb3IgcmVsZWFzZXMg" + - "fAp8IGAtLW5vbi1pbnRlcmFjdGl2ZWAgfCBEaXNhYmxlIGFsbCBzdGRpbiBwcm9tcHRzIHwgYGZh" + - "bHNlYCB8CnwgYC0tdG9rZW49JEpXVGAgfCBBZG1pbiBKV1QsIG92ZXJyaWRlcyBzdG9yZWQgc2Vz" + - "c2lvbiB8IC0gfAp8IGAtLW5vLWFwcGx5YCB8IGBpbnN0YWxsYCBvbmx5IC0gZW1pdCBZQU1MLCBk" + - "byBub3Qga3ViZWN0bCBhcHBseSB8IGBmYWxzZWAgfAp8IGAtLW91dHB1dD10ZXh0XHxqc29uYCB8" + - "IExlZ2FjeSBhbGlhcyBmb3IgYC0tanNvbmAgKGRlcHJlY2F0ZWQsIHJlbW92ZWQgaW4gbmV4dCBt" + - "YWpvcikgfCBgdGV4dGAgfAp8IGAtLXBsYWluYCB8IEZvcmNlIHBsYWluIHN0cmVhbWluZyBvdXRw" + - "dXQgfCBhdXRvLWRldGVjdCB8CnwgYC0td2FpdCBEVVJBVElPTmAgfCBgY2hlY2tgIG9ubHk7IGJs" + - "b2NrIHVudGlsIHBhc3MgfCAtIHwKfCBgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgQ1RYYCB8IGt1" + - "YmVjdGwgY29udGV4dCBmb3IgY29udHJvbCBwbGFuZSAoUkVRLTIwKSB8IGN1cnJlbnQgY29udGV4" + - "dCB8CnwgYC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IENUWGAgfCBrdWJlY3RsIGNvbnRleHQgZm9y" + - "IGNvbXB1dGUgcGxhbmUgKFJFUS0yMCkgfCBjdXJyZW50IGNvbnRleHQgfAp8IGAtLWljbXMtdXJs" + - "IFVSTGAgfCBQdWJsaWMgSUNNUyBVUkw7IHJlcXVpcmVkIHdoZW4gY29udGV4dHMgZGlmZmVyIHwg" + - "ZGVyaXZlZCBmcm9tIGBiYXNlX2h0dHBfdXJsYCB8CnwgYC0tbG9jYWwtb25seWAgfCBgY2hlY2sg" + - "LS1wcmVgIG9ubHk7IHNraXAgYWxsIGt1YmVjdGwgY29udGFjdCB8IGBmYWxzZWAgfAoKIyMgYGNo" + - "ZWNrYC1zcGVjaWZpYwoKQXQgbGVhc3Qgb25lIG9mIGAtLXByZWAsIGAtLWNvbnRyb2wtcGxhbmVg" + - "LCBgLS1jb21wdXRlLXBsYW5lYCwgb3IgYC0tYWxsYCBpcwpyZXF1aXJlZC4gRWFjaCBzZWxlY3Rz" + - "IGEgcm9sZTsgb25seSB0aGUgc2VsZWN0ZWQgcm9sZXMgY29udGFjdCBhIGNsdXN0ZXIuCgp8IEZs" + - "YWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1wcmVgIHwgUHJlLWZs" + - "aWdodDogbG9jYWwtaG9zdCB0b29scyBwbHVzIGNsdXN0ZXIgcmVhZGluZXNzLiBTa2lwcyBTSVMg" + - "cmVhY2hhYmlsaXR5LCBzaW5jZSBTSVMgaXMgbm90IGluc3RhbGxlZCB5ZXQsIHVubGVzcyBgLS1h" + - "bGxgIG9yIGAtLWNvbXB1dGUtcGxhbmVgIGlzIGFsc28gcGFzc2VkIHwgYGZhbHNlYCB8CnwgYC0t" + - "Y29udHJvbC1wbGFuZWAgfCBDb250cm9sLXBsYW5lIGNoZWNrcyB8IGBmYWxzZWAgfAp8IGAtLWNv" + - "bXB1dGUtcGxhbmVgIHwgQ29tcHV0ZS1wbGFuZSBjaGVja3MgfCBgZmFsc2VgIHwKfCBgLS1hbGxg" + - "IHwgRXZlcnkgY2F0ZWdvcnksIGluY2x1ZGluZyBTSVMgcmVhY2hhYmlsaXR5IHdoZW4gY29tYmlu" + - "ZWQgd2l0aCBgLS1wcmVgIHwgYGZhbHNlYCB8CnwgYC0tY2x1c3Rlci1uYW1lIE5BTUVgIHwgQ2x1" + - "c3RlciBuYW1lIGZvciBjb21wdXRlLXBsYW5lIGNoZWNrcyB8IC0gfAp8IGAtLXNraXAtaW5vdGlm" + - "eS1jaGVja2AgfCBTa2lwIHRoZSBwZXItbm9kZSBpbm90aWZ5LWxpbWl0cyBwcm9iZS4gTmVlZGVk" + - "IHdoZW4gdGhlIGt1YmVjb25maWcgdXNlciBjYW5ub3QgY3JlYXRlIHBvZHMgaW4gYGRlZmF1bHRg" + - "LiBFbnY6IGBOVkNGX0NMSV9TRUxGSE9TVEVEX1NLSVBfSU5PVElGWWAgfCBgZmFsc2VgIHwKCiMj" + - "IyBDbHVzdGVyLXZhbGlkYXRvciBmbGFncwoKVGhlIHZhbGlkYXRvciBydW5zIGFzIGEgSm9iIGlu" + - "IHRoZSBjbHVzdGVyIGJlaW5nIGNoZWNrZWQuIFRoZSBDTEkgY3JlYXRlcyBhClNlcnZpY2VBY2Nv" + - "dW50LCBDbHVzdGVyUm9sZSwgYW5kIENsdXN0ZXJSb2xlQmluZGluZyBmb3IgaXQgYW5kIHJlbW92" + - "ZXMgdGhlbQphZnRlciB0aGUgcnVuLCBzbyB0aGUga3ViZWNvbmZpZyBjb250ZXh0IG5lZWRzIHBl" + - "cm1pc3Npb24gdG8gbWFuYWdlIHRob3NlLgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8" + - "LS0tfC0tLXwtLS18CnwgYC0tY2x1c3Rlci12YWxpZGF0b3ItaW1hZ2UgUkVGYCB8IFZhbGlkYXRv" + - "ciBpbWFnZS4gUmVzb2x1dGlvbiBvcmRlcjogZmxhZywgYE5WQ0ZfQ0xJX0NMVVNURVJfVkFMSURB" + - "VE9SX0lNQUdFYCwgY29uZmlnIGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfaW1hZ2VgLiBBIHJlZiB3" + - "aXRoIG5vIHRhZyBkaXNjb3ZlcnMgdGhlIGxhdGVzdCBzdGFibGUgdGFnIGZyb20gdGhlIHJlZ2lz" + - "dHJ5LiBVbnNldCBldmVyeXdoZXJlIHNraXBzIHRoZSBwcm9iZSB3aXRoIGEgd2FybmluZyB8IC0g" + - "fAp8IGAtLWNsdXN0ZXItdmFsaWRhdG9yLXJlZ2lzdHJpZXMgaG9zdDpwb3J0LC4uLmAgfCBFeHRy" + - "YSByZWdpc3RyaWVzIHRoZSBjb250cm9sLXBsYW5lIHZhbGlkYXRvciBwcm9iZXMgZm9yIHJlYWNo" + - "YWJpbGl0eS4gYG52Y3IuaW9gIGlzIGFsd2F5cyBwcm9iZWQuIFJlcGVhdGFibGUgb3IgY29tbWEt" + - "c2VwYXJhdGVkLiBFbnY6IGBOVkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9SRUdJU1RSSUVTYDsg" + - "Y29uZmlnIGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfcmVnaXN0cmllc2AgfCBgbnZjci5pb2Agb25s" + - "eSB8CnwgYC0tY2x1c3Rlci12YWxpZGF0b3ItcHVsbC1zZWNyZXQgTkFNRWAgfCBkb2NrZXItcmVn" + - "aXN0cnkgU2VjcmV0IGluIGBkZWZhdWx0YCB1c2VkIHRvIHB1bGwgdGhlIHZhbGlkYXRvciBpbWFn" + - "ZS4gV2hlbiBlbXB0eSwgdGhlIENMSSBsb29rcyBmb3Igb25lIGluIHRoZSBOVkNGIG5hbWVzcGFj" + - "ZXMgYW5kIGNvcGllcyBpdCBpbnRvIGBkZWZhdWx0YCBmb3IgdGhlIHJ1bi4gRmFpbGluZyB0aGF0" + - "LCBhbmQgb25seSBmb3IgYW4gaW1hZ2Ugb24gYW4gTkdDIHJlZ2lzdHJ5LCBpdCBtaW50cyBvbmUg" + - "ZnJvbSBgTkdDX0FQSV9LRVlgIHwgYXV0by1kZXRlY3QgfAp8IGAtLXNraXAtY2x1c3Rlci12YWxp" + - "ZGF0aW9uYCB8IFNraXAgdGhlIGluLWNsdXN0ZXIgdmFsaWRhdG9yIHByb2JlIGVudGlyZWx5LiBF" + - "bnY6IGBOVkNGX0NMSV9TRUxGSE9TVEVEX1NLSVBfQ0xVU1RFUl9WQUxJREFUSU9OYCB8IGBmYWxz" + - "ZWAgfAp8IGAtLW5vLWNsZWFudXBgIHwgS2VlcCB0aGUgdmFsaWRhdG9yIEpvYiwgaXRzIHBvZCwg" + - "UkJBQywgcHVsbCBzZWNyZXQgYW5kIENvbmZpZ01hcCBmb3IgZGVidWdnaW5nLiBBIGxhdGVyIGNo" + - "ZWNrIHJlY2xhaW1zIHRoZW0gYWZ0ZXIgMjQgaG91cnM7IHRoZSByZXN1bHQgcHJpbnRzIHRoZSBg" + - "a3ViZWN0bCBkZWxldGVgIGNvbW1hbmQgdGhhdCByZW1vdmVzIHRoZW0gbm93IHwgYGZhbHNlYCB8" + - "CnwgYC0tc2hvdy1sb2dzYCB8IFByaW50IHRoZSB2YWxpZGF0b3IgdHJhbnNjcmlwdCB0byBzdGRl" + - "cnIgYWZ0ZXIgdGhlIGNoZWNrIGV2ZW50cy4gVGhlIHRyYW5zY3JpcHQgaXMgbm90IEpTT04sIGFu" + - "ZCBgLS1qc29uYCBhbHNvIHdyaXRlcyB0byBzdGRlcnIsIHNvIGxlYXZlIHRoaXMgb2ZmIHdoZW4g" + - "YSBwYXJzZXIgaXMgcmVhZGluZyB0aGUgc3RyZWFtIHwgYGZhbHNlYCB8CgojIyBgdXBgLXNwZWNp" + - "ZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1jbHVz" + - "dGVyLW5hbWUgTkFNRWAgfCBJQ01TIGNsdXN0ZXIgcm93IGlkZW50aWZpZXIgKHJlcXVpcmVkKSB8" + - "IC0gfAp8IGAtLW5jYS1pZCBJRGAgfCBOQ0EgYWNjb3VudCBJRCB8IGBudmNmLWRlZmF1bHRgIHwK" + - "fCBgLS1yZWdpb24gUkVHSU9OYCB8IENsdXN0ZXIgcmVnaW9uIHwgYHVzLXdlc3QtMWAgfAp8IGAt" + - "LXBsYW4tb25seWAgfCBEcnktcnVuOyBlbWl0IHBoYXNlIHBsYW4gKyBFVEFzIHdpdGhvdXQgY2hh" + - "bmdlcyB8IGBmYWxzZWAgfAoKIyMgYHN0YXR1c2Atc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2Ug" + - "fCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0ZXItbmFtZSBOQU1FYCB8IExpbWl0" + - "IHRvIG9uZSBjb21wdXRlIHBsYW5lIHwgLSAoY29udHJvbCArIGFsbCBjbHVzdGVycykgfAp8IGAt" + - "LXdhdGNoYCB8IExpdmUgcmUtcmVuZGVyIHwgYGZhbHNlYCB8CnwgYC0td2F0Y2gtaW50ZXJ2YWwg" + - "RFVSYCB8IGAtLXdhdGNoYCBjYWRlbmNlIHwgYDVzYCB8CnwgYC0tY29tcG9uZW50IE5BTUVgIHwg" + - "RmlsdGVyIGNvbXBvbmVudHMgcGFuZWwgfCBhbGwgfAp8IGAtLW5vLWV2ZW50c2AgfCBTa2lwIGV2" + - "ZW50cyBwYW5lbCB8IGBmYWxzZWAgfAoKIyMgYGNsdXN0ZXIgcmVnaXN0ZXJgLXNwZWNpZmljCgp8" + - "IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1uYW1lIE5BTUVg" + - "IHwgQ2x1c3RlciBuYW1lIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1uY2EtaWQgSURgIHwgTkNBIElE" + - "IChyZXF1aXJlZCkgfCAtIHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IFJlZ2lvbiB8IGB1cy13ZXN0" + - "LTFgIHwKfCBgLS1pY21zLXVybCBVUkxgIHwgSUNNUyBlbmRwb2ludCB8IGZyb20gY29uZmlnIHwK" + - "fCBgLS1pZ25vcmUtZXhpc3RpbmdgIHwgTWF0Y2gtb3ItY3JlYXRlIGluc3RlYWQgb2YgZmFpbC1v" + - "bi1leGlzdHMgfCBgZmFsc2VgIHwKCiMjIGBhcGkta2V5IGdlbmVyYXRlYC1zcGVjaWZpYwoKfCBG" + - "bGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tZm9yIGZ1bmN0aW9u" + - "XHx0YXNrYCB8IEdlbmVyYXRlIG9ubHkgdGhlIHNwZWNpZmllZCBrZXkgdHlwZSB8IChvbWl0IHRv" + - "IGdlbmVyYXRlIGJvdGgpIHwKfCBgLS1kZXNjcmlwdGlvbiBURVhUYCB8IEh1bWFuLXJlYWRhYmxl" + - "IGxhYmVsIGZvciB0aGUga2V5IHwgYEdlbmVyYXRlZCBieSBudmNmLWNsaWAgfAp8IGAtLWV4cGly" + - "ZXMtaW4gRFVSQVRJT05gIHwgRXhwaXJ5IG9mZnNldCAoZS5nLiBgMjRoYCwgYDdkYCk7IHBhcnNl" + - "ZCBhcyBleHRlbmRlZCBkdXJhdGlvbiB8IGAyNGhgIHwKfCBgLS1zY29wZXMgU0NPUEVbLFNDT1BF" + - "XWAgfCBPdmVycmlkZSBkZWZhdWx0IHNjb3BlczsgcmVxdWlyZXMgYC0tZm9yYCB8IChzZXJ2aWNl" + - "IGRlZmF1bHRzKSB8CnwgYC0tdmFsaWRhdGVgIHwgVmFsaWRhdGUgZWFjaCBnZW5lcmF0ZWQga2V5" + - "IGltbWVkaWF0ZWx5IGFmdGVyIG1pbnRpbmcgfCBgZmFsc2VgIHwKCkV4dGVuZGVkIGR1cmF0aW9u" + - "IHVuaXRzOiBgc2AgKHNlY29uZHMpLCBgbWAgKG1pbnV0ZXMpLCBgaGAgKGhvdXJzKSwgYGRgIChk" + - "YXlzKSwgYHdgICh3ZWVrcykuCgojIyBgZnVuY3Rpb24gY3JlYXRlYC1zcGVjaWZpYwoKYC0taW5w" + - "dXQtZmlsZSBGSUxFYCBpcyByZWNvbW1lbmRlZCBmb3IgcmVwZWF0YWJsZSBmdW5jdGlvbiBkZWZp" + - "bml0aW9ucy4gRm9yIGFkLWhvYyBjcmVhdGVzOgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQg" + - "fAp8LS0tfC0tLXwtLS18CnwgYC0tbmFtZSBOQU1FYCB8IEZ1bmN0aW9uIG5hbWUgfCAtIHwKfCBg" + - "LS1pbWFnZSBJTUFHRWAgfCBDb250YWluZXIgaW1hZ2UgfCAtIHwKfCBgLS1pbmZlcmVuY2UtdXJs" + - "IFVSSWAgfCBDb250YWluZXIgaW5mZXJlbmNlIGVuZHBvaW50IHwgLSB8CnwgYC0taW5mZXJlbmNl" + - "LXBvcnQgUE9SVGAgfCBDb250YWluZXIgaW5mZXJlbmNlIHBvcnQgfCAtIHwKfCBgLS1mdW5jdGlv" + - "bi10eXBlIERFRkFVTFRcfFNUUkVBTUlOR1x8TExNYCB8IEZ1bmN0aW9uIHR5cGUgfCBgREVGQVVM" + - "VGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJIHJlZmVy" + - "ZW5jZS4gQ2FuIGJlIHVzZWQgd2l0aCBgLS1mdW5jdGlvbi10eXBlPUxMTWAgZm9yIGNoYXJ0LXBh" + - "Y2thZ2VkIExMTSB3b3JrbG9hZHMuIHwgLSB8CnwgYC0taGVsbS1jaGFydC1zZXJ2aWNlIE5BTUVg" + - "IHwgS3ViZXJuZXRlcyBTZXJ2aWNlIG5hbWUgZXhwb3NlZCBieSB0aGUgY2hhcnQuIFJlcXVpcmVk" + - "IHdoZW4gYC0taGVsbS1jaGFydGAgaXMgc2V0LiB8IC0gfAp8IGAtLW1vZGVscyBOQU1FOlZFUlNJ" + - "T046VVJJYCB8IFN0YW5kYXJkIG1vZGVsIGFydGlmYWN0OyByZXBlYXRhYmxlIHwgLSB8CnwgYC0t" + - "bGxtLW1vZGVsIFNQRUNgIHwgTExNIG1vZGVsIGNvbmZpZzsgZm9ybWF0IGBuYW1lPTxtb2RlbD4s" + - "dXJpcz08dXJpPlx8PHVyaT4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJhdGVMaW1pdD08" + - "bGltaXQ+YDsgcmVwZWF0YWJsZS4gVG9rZW4gbGltaXRzIHVzZSBgPHZhbHVlPi08dW5pdD5gIHdp" + - "dGggYFNgLCBgTWAsIGBIYCwgYERgLCBvciBgV2AsIGZvciBleGFtcGxlIGAxMDAwLVNgLiBVc2Ug" + - "aW5wdXQgSlNPTiBmb3IgY29tYmluZWQgdG9rZW4gbGltaXRzIGJlY2F1c2UgaW5saW5lIHNwZWNz" + - "IHVzZSBjb21tYXMgYXMgZmllbGQgc2VwYXJhdG9ycy4gfCAtIHwKfCBgLS1sbG0tZGVmYXVsdC1w" + - "cmlvcml0eSBQUklPUklUWWAgfCBGdW5jdGlvbi1sZXZlbCBkZWZhdWx0IHJlcXVlc3QgcHJpb3Jp" + - "dHkuIExvd2VyIHZhbHVlcyBoYXZlIGhpZ2hlciBwcmlvcml0eS4gfCAtIHwKfCBgLS1sbG0tcGVy" + - "LWFjY291bnQtcHJpb3JpdHkgTkNBLUlEOlBSSU9SSVRZYCB8IFBlci1hY2NvdW50IHByaW9yaXR5" + - "IG92ZXJyaWRlOyByZXBlYXRhYmxlOyBzdXBwb3J0cyB1cCB0byA2NCBkaXN0aW5jdCBOQ0EgSUQg" + - "b3ZlcnJpZGVzLiBSZXF1aXJlcyBhIGRlZmF1bHQgcHJpb3JpdHkuIHwgLSB8CgpJbiBKU09OIGFu" + - "ZCBpbmxpbmUgc3BlY3MsIExMTSBmdW5jdGlvbnMgc2V0IGBmdW5jdGlvblR5cGU6ICJMTE0iYCBh" + - "bmQgbW9kZWwgcm91dGluZyBtZXRhZGF0YSB1bmRlciBgbW9kZWxzW10ubGxtQ29uZmlnYC4gYGxs" + - "bUNvbmZpZy51cmlzYCBkZWNsYXJlcyB0aGUgT3BlbkFJLWNvbXBhdGlibGUgdXBzdHJlYW0gcGF0" + - "aHMgZXhwb3NlZCBieSB0aGUgbW9kZWwuIEN1cnJlbnQgc3VwcG9ydGVkIHBhdGhzIGFyZSBgL3Yx" + - "L2NoYXQvY29tcGxldGlvbnNgLCBgL3YxL3Jlc3BvbnNlc2AsIGFuZCBgL3YxL2VtYmVkZGluZ3Ng" + - "LiBgbGxtQ29uZmlnLnJvdXRpbmdNZXRob2RgIGFjY2VwdHMgYHJvdW5kX3JvYmluYCwgYHBvd2Vy" + - "X29mX3R3b2AsIGBncm9xX211bHRpcmVnaW9uYCwgYHB1bHNhcmAsIG9yIGByYW5kb21gLgpgbGxt" + - "Q29uZmlnLnRva2VuUmF0ZUxpbWl0YCBhY2NlcHRzIG9uZSBvciBtb3JlIGNvbW1hLXNlcGFyYXRl" + - "ZCBwb3NpdGl2ZSBpbnRlZ2VyIHRva2VuIGxpbWl0cyBpbiBgPHZhbHVlPi08dW5pdD5gIGZvcm1h" + - "dC4gU3VwcG9ydGVkIHVuaXRzIGFyZSBgU2AgKHNlY29uZHMpLCBgTWAgKG1pbnV0ZXMpLCBgSGAg" + - "KGhvdXJzKSwgYERgIChkYXlzKSwgYW5kIGBXYCAod2Vla3MpLiBVc2UgZGlzdGluY3QgdW5pdHMg" + - "d2hlbiBjb21iaW5pbmcgbGltaXRzLCBmb3IgZXhhbXBsZSBgMTAwMC1TLDUwMDAtTSwxMDAwMDAt" + - "SCw1MDAwMDAtRCwxMDAwMDAwLVdgIGluIGlucHV0IEpTT04uCgpIZWxtIGNoYXJ0IHBhY2thZ2lu" + - "ZyBpcyBpbmRlcGVuZGVudCBvZiBgZnVuY3Rpb25UeXBlYC4gRm9yIGEgSGVsbS1jaGFydCBiYWNr" + - "ZWQgTExNIGZ1bmN0aW9uLCBzZXQgYGZ1bmN0aW9uVHlwZTogIkxMTSJgLCBgaGVsbUNoYXJ0YCwg" + - "YGhlbG1DaGFydFNlcnZpY2VOYW1lYCwgYW5kIGBtb2RlbHNbXS5sbG1Db25maWdgIGluIHRoZSBz" + - "YW1lIGNyZWF0ZSByZXF1ZXN0LiBgaW5mZXJlbmNlUG9ydGAgbXVzdCBiZSB0aGUgS3ViZXJuZXRl" + - "cyBTZXJ2aWNlIHBvcnQgZXhwb3NlZCBieSBgaGVsbUNoYXJ0U2VydmljZU5hbWVgLgoKTExNIGlu" + - "dm9jYXRpb24gcmVxdWVzdHMgdXNlIGBtb2RlbDogIjxmdW5jdGlvbi1pZD4vPG1vZGVsLW5hbWU+" + - "ImAuIFRoZSBmdW5jdGlvbiBJRCBzZWxlY3RzIHRoZSBOVkNGIGZ1bmN0aW9uLCBhbmQgdGhlIG1v" + - "ZGVsIG5hbWUgaXMgZm9yd2FyZGVkIHVwc3RyZWFtLiBDaGF0IGNvbXBsZXRpb25zIGFuZCBSZXNw" + - "b25zZXMgQVBJIHJlcXVlc3RzIGNhbiB1c2UgYHgtbXVsdGktdHVybi1zZXNzaW9uLWlkYCBmb3Ig" + - "c2Vzc2lvbiBzdGlja2luZXNzOyBlbWJlZGRpbmdzIHJlcXVlc3RzIGRvIG5vdC4KCiMjIGBmdW5j" + - "dGlvbiB1cGRhdGVgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18" + - "LS0tfC0tLXwKfCBgLS10YWdzIFRBR1ssVEFHXWAgfCBSZXBsYWNlIGZ1bmN0aW9uIHRhZ3MgfCAt" + - "IHwKfCBgLS1sbG0tbW9kZWwtdXBkYXRlIFNQRUNgIHwgTExNIG1vZGVsIHVwZGF0ZTsgZm9ybWF0" + - "IGBuYW1lPTxtb2RlbD4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJhdGVMaW1pdD08bGlt" + - "aXQ+YDsgcmVwZWF0YWJsZS4gUm91dGluZyBtZXRob2RzIG1hdGNoIGAtLWxsbS1tb2RlbGAuIFRv" + - "a2VuIGxpbWl0IGV4YW1wbGU6IGAxMDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBmb3IgY29tYmluZWQg" + - "dG9rZW4gbGltaXRzLiB8IC0gfAp8IGAtLWxsbS1kZWZhdWx0LXByaW9yaXR5IFBSSU9SSVRZYCB8" + - "IFJlcGxhY2UgdGhlIGZ1bmN0aW9uLWxldmVsIHByaW9yaXR5IGNvbmZpZ3VyYXRpb24gd2l0aCB0" + - "aGlzIGRlZmF1bHQgYW5kIGFueSBzdXBwbGllZCBwZXItYWNjb3VudCBvdmVycmlkZXMuIHwgLSB8" + - "CnwgYC0tbGxtLXBlci1hY2NvdW50LXByaW9yaXR5IE5DQS1JRDpQUklPUklUWWAgfCBQZXItYWNj" + - "b3VudCBwcmlvcml0eSBvdmVycmlkZTsgcmVwZWF0YWJsZTsgc3VwcG9ydHMgdXAgdG8gNjQgZGlz" + - "dGluY3QgTkNBIElEIG92ZXJyaWRlcy4gUmVxdWlyZXMgYSBkZWZhdWx0IHByaW9yaXR5LiB8IC0g" + - "fAoKSW4gSlNPTiwgYGZ1bmN0aW9uIHVwZGF0ZWAgYWNjZXB0cyBgbW9kZWxVcGRhdGVzW11gIGVu" + - "dHJpZXMgd2l0aCBgbW9kZWxOYW1lYCBhbmQgYGxsbUNvbmZpZy5yb3V0aW5nTWV0aG9kYCBhbmQv" + - "b3IgYGxsbUNvbmZpZy50b2tlblJhdGVMaW1pdGAuIGB1cmlzYCBhcmUgY3JlYXRlLXRpbWUgbW9k" + - "ZWwgbWV0YWRhdGEgYW5kIGFyZSBub3QgcGFydCBvZiBtb2RlbCB1cGRhdGVzLgoKIyMgYGZ1bmN0" + - "aW9uIGRlcGxveSBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29t" + - "bWVuZGVkIChmdWxsIEpTT04gc3BlYykuIEZvciBhZC1ob2Mgb25lLXNob3QgdXNlOgoKfCBGbGFn" + - "IHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tZnVuY3Rpb24taWQgSURg" + - "IHwgRnVuY3Rpb24gSUQgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLWdwdSBOQU1FYCB8IEdQVSBmYW1p" + - "bHkgfCBgSDEwMGAgfAp8IGAtLWluc3RhbmNlLXR5cGUgVFlQRWAgfCBTS1UgfCBgTkNQLkdQVS5I" + - "MTAwXzF4YCB8CnwgYC0tbWluLWluc3RhbmNlcyBOYCB8IE1pbiByZXBsaWNhcyB8IGAxYCB8Cnwg" + - "YC0tbWF4LWluc3RhbmNlcyBOYCB8IE1heCByZXBsaWNhcyB8IGAxYCB8CnwgYC0tbWF4LXJlcXVl" + - "c3QtY29uY3VycmVuY3kgTmAgfCBDb25jdXJyZW5jeSB8IGAwYCAodW5zZXQ7IHNlcnZlciBkZWZh" + - "dWx0IGFwcGxpZXMpIHwKfCBgLS1jbHVzdGVycyBOQU1FWyxOQU1FXWAgfCBUYXJnZXQgc3BlY2lm" + - "aWMgY29tcHV0ZSBjbHVzdGVycyB8IChhbnkgbWF0Y2hpbmcgU0tVKSB8CgojIyBgdGFzayBjcmVh" + - "dGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIGZvciByZXBl" + - "YXRhYmxlIHRhc2sgZGVmaW5pdGlvbnMuIEZvciBhZC1ob2MgdXNlOgoKfCBGbGFnIHwgUHVycG9z" + - "ZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGAtLW5hbWUgTkFNRWAgfCBUYXNrIG5hbWUgKHJl" + - "cXVpcmVkKSB8IDEtMTI4IGNoYXJzLCBgXlthLXowLTlBLVpdW2EtejAtOUEtWlwtX10qJGAgfAp8" + - "IGAtLWdwdSBHUFVgIHwgR1BVIG5hbWUgKHJlcXVpcmVkIHdpdGhvdXQgYC0taW5wdXQtZmlsZWAp" + - "IHwgRXhhbXBsZTogYEgxMDBgIHwKfCBgLS1pbnN0YW5jZS10eXBlIFRZUEVgIHwgSW5zdGFuY2Ug" + - "dHlwZSAocmVxdWlyZWQgd2l0aG91dCBgLS1pbnB1dC1maWxlYCkgfCBFeGFtcGxlOiBgTkNQLkdQ" + - "VS5IMTAwXzF4YCB8CnwgYC0taW1hZ2UgSU1BR0VgIHwgQ29udGFpbmVyIGltYWdlIHwgTXV0dWFs" + - "bHkgZXhjbHVzaXZlIHdpdGggYC0taGVsbS1jaGFydGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hBUlRg" + - "IHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJIHJlZmVyZW5jZSB8IE11dHVhbGx5IGV4Y2x1c2l2ZSB3" + - "aXRoIGAtLWltYWdlYCB8CnwgYC0taW5wdXQtZmlsZSBGSUxFYCB8IEpTT04gdGFzayBzcGVjIGZp" + - "bGUgfCBDTEkgZmxhZ3Mgb3ZlcnJpZGUgSlNPTiB2YWx1ZXMgd2hlbiBib3RoIGFyZSBzZXQgfAp8" + - "IGAtLWJhY2tlbmQgQkFDS0VORGAgfCBCYWNrZW5kIC8gQ1NQIHwgLSB8CnwgYC0tY2x1c3RlcnMg" + - "TkFNRVssTkFNRV1gIHwgU3BlY2lmaWMgY2x1c3RlcnMgd2l0aGluIHRoZSBpbnN0YW5jZSB8IENv" + - "bW1hLXNlcGFyYXRlZCB8CnwgYC0tY29udGFpbmVyLWFyZ3MgQVJHU2AgfCBBcmdzIHBhc3NlZCB3" + - "aGVuIGxhdW5jaGluZyB0aGUgY29udGFpbmVyIHwgU2luZ2xlIHN0cmluZywgZS5nLiBgIi0tZXBv" + - "Y2hzIDEwIC0tYmF0Y2gtc2l6ZSAzMiJgIHwKfCBgLS1jb250YWluZXItZW52IE5BTUU9dmFsdWVg" + - "IHwgQ29udGFpbmVyIGVudmlyb25tZW50IHZhcmlhYmxlOyByZXBlYXRhYmxlIHwgLSB8CnwgYC0t" + - "c2VjcmV0cyBOQU1FPXZhbHVlYCB8IFNlY3JldCBlbnZpcm9ubWVudCB2YXJpYWJsZTsgcmVwZWF0" + - "YWJsZTsgZW5jcnlwdGVkIGF0IHJlc3QgfCAtIHwKfCBgLS1tYXgtcnVudGltZSBEVVJBVElPTmAg" + - "fCBNYXggd2FsbC1jbG9jayBydW4gdGltZSAoSVNPIDg2MDEsIGUuZy4gYFBUNEhgKSB8IE5vIGRl" + - "ZmF1bHQ7IG9taXQgZm9yIG5vIHRpbWUgbGltaXQgfAp8IGAtLW1heC1xdWV1ZWQgRFVSQVRJT05g" + - "IHwgTWF4IHRpbWUgaW4gcXVldWUgYmVmb3JlIGNhbmNlbGxhdGlvbiAoSVNPIDg2MDEpIHwgU2Vy" + - "dmVyIGRlZmF1bHQgYFBUNzJIYCB8CnwgYC0tdGVybWluYXRpb24tZ3JhY2UgRFVSQVRJT05gIHwg" + - "R3JhY2UgcGVyaW9kIGFmdGVyIHN0b3Agc2lnbmFsIChJU08gODYwMSkgfCBTZXJ2ZXIgZGVmYXVs" + - "dCBgUFQxSGAgfAp8IGAtLXJlc3VsdC1zdHJhdGVneSBVUExPQURcfE5PTkVgIHwgSG93IHRvIGhh" + - "bmRsZSB0YXNrIG91dHB1dCBhcnRpZmFjdHMgfCAtIHwKfCBgLS1yZXN1bHRzLWxvY2F0aW9uIExP" + - "Q0FUSU9OYCB8IFJlc3VsdCB1cGxvYWQgdGFyZ2V0LCBmb3JtYXQgYG9yZy1uYW1lL1t0ZWFtLW5h" + - "bWUvXW1vZGVsLW5hbWVgOyByZXF1aXJlZCB3aGVuIGAtLXJlc3VsdC1zdHJhdGVneT1VUExPQURg" + - "IHwgLSB8CnwgYC0tbW9kZWxzIE5BTUU6VkVSU0lPTjpVUklgIHwgTW9kZWwgYXJ0aWZhY3Q7IHJl" + - "cGVhdGFibGUgfCAtIHwKfCBgLS1yZXNvdXJjZXMgTkFNRTpWRVJTSU9OOlVSSWAgfCBSZXNvdXJj" + - "ZSBhcnRpZmFjdDsgcmVwZWF0YWJsZSB8IC0gfAp8IGAtLXRhZ3MgVEFHWyxUQUddYCB8IFRhc2sg" + - "dGFncyB8IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tZGVzY3JpcHRpb24gVEVYVGAgfCBUYXNrIGRl" + - "c2NyaXB0aW9uIHwgLSB8CnwgYC0tbG9ncy10ZWxlbWV0cnktaWQgVVVJRGAgfCBMb2dzIHRlbGVt" + - "ZXRyeSBlbmRwb2ludCBJRCB8IC0gfAp8IGAtLW1ldHJpY3MtdGVsZW1ldHJ5LWlkIFVVSURgIHwg" + - "TWV0cmljcyB0ZWxlbWV0cnkgZW5kcG9pbnQgSUQgfCAtIHwKfCBgLS10cmFjZXMtdGVsZW1ldHJ5" + - "LWlkIFVVSURgIHwgVHJhY2VzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfApQSwcIm1pHP2Qv" + - "AABkLwAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA3AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdl" + - "ZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOEiMgVHJvdWJsZXNob290" + - "aW5nCgpLbm93biBlcnJvcnMg4oaSIGRpYWdub3N0aWMgY29tbWFuZCDihpIgcmVtZWRpYXRpb24u" + - "IEtlZXAgaW4gc3luYyB3aXRoIHRoZSBzdHJ1Y3R1cmVkIGBwaGFzZV9mYWlsZWRgIGV2ZW50cyB0" + - "aGUgQ0xJIGVtaXRzIChSRVEtMTUpIOKAlCBldmVyeSBlbnRyeSBiZWxvdyBzaG91bGQgbWFwIHRv" + - "IGFuIGBlcnJDYXRlZ29yeWAgYW5kIGEgYHJlbWVkaWF0aW9uYCBhcnJheS4KCiMjIFByZS1mbGln" + - "aHQKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGt1" + - "YmVjdGwgbm90IG9uIFBBVEhgIHwgT3BlcmF0b3IncyBgJFBBVEhgIGRvZXNuJ3QgaW5jbHVkZSBr" + - "dWJlY3RsIHwgSW5zdGFsbCBrdWJlY3RsIDEuMjgrOiBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9j" + - "cy90YXNrcy90b29scy9pbnN0YWxsLWt1YmVjdGwvIHwKfCBgaGVsbWZpbGUgbm90IG9uIFBBVEhg" + - "IHwgU2FtZSB8IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWxtZmlsZS9oZWxtZmlsZSNpbnN0YWxsYXRp" + - "b24gfAp8IGBoZWxtIG5vdCBvbiBQQVRIYCB8IFNhbWUgfCBodHRwczovL2hlbG0uc2gvZG9jcy9p" + - "bnRyby9pbnN0YWxsLyB8CnwgYEdhdGV3YXkgQVBJIENSRHMgbm90IGluc3RhbGxlZGAgfCBlbnZv" + - "eS1nYXRld2F5IHByZXJlcSBtaXNzaW5nIHwgYGhlbG0gaW5zdGFsbCBlZyBvY2k6Ly9kb2NrZXIu" + - "aW8vZW52b3lwcm94eS9nYXRld2F5LWhlbG0gLS1uYW1lc3BhY2U9ZW52b3ktZ2F0ZXdheS1zeXN0" + - "ZW0gLS1jcmVhdGUtbmFtZXNwYWNlYCB8CnwgYGRlZmF1bHQgU3RvcmFnZUNsYXNzIG5vdCBhdmFp" + - "bGFibGVgIHwgQ2x1c3RlciBoYXMgbm8gZGVmYXVsdCBTQyB8IEFubm90YXRlIG9uZTogYGt1YmVj" + - "dGwgcGF0Y2ggc2MgPG5hbWU+IC1wICd7Im1ldGFkYXRhIjp7ImFubm90YXRpb25zIjp7InN0b3Jh" + - "Z2VjbGFzcy5rdWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xhc3MiOiJ0cnVlIn19fSdgIHwKfCBg" + - "R1BVIG9wZXJhdG9yIG5vdCBpbnN0YWxsZWRgIChjb21wdXRlLXBsYW5lKSB8IG52aWRpYSBHUFUg" + - "b3BlcmF0b3IgbWlzc2luZyB8IEluc3RhbGwgcGVyIGh0dHBzOi8vZG9jcy5udmlkaWEuY29tL2Rh" + - "dGFjZW50ZXIvY2xvdWQtbmF0aXZlL2dwdS1vcGVyYXRvci9sYXRlc3QvaW5zdGFsbC1ncHUtb3Bl" + - "cmF0b3IuaHRtbCwgT1IgdXNlIGBmYWtlLWdwdS1vcGVyYXRvcmAgZm9yIGRldiB8CnwgYEdQVSBu" + - "b2RlIGxhYmVscyBtaXNzaW5nYCAoY29tcHV0ZS1wbGFuZSkgfCBOb2RlcyBuZWVkIGBudmlkaWEu" + - "Y29tL2dwdS5mYW1pbHlgIGV0Yy4gfCBTZXQgYC0tazNzLW5vZGUtbGFiZWwgbnZpZGlhLmNvbS9n" + - "cHUuZmFtaWx5PWhvcHBlckBhZ2VudDpOYCBmb3IgazNkIHwKCiMjIEF1dGgKCnwgU3ltcHRvbSB8" + - "IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGFkbWluIHRva2VuIHJlcXVp" + - "cmVkYCAoaW5pdCBub3QgcnVuKSB8IE5vIGB+Ly5udmNmLWNsaS5zdGF0ZWAgYW5kIGAtLXRva2Vu" + - "YCBub3QgcGFzc2VkIHwgYG52Y2YtY2xpIGluaXRgIChpbnRlcmFjdGl2ZSkgb3IgYC0tdG9rZW49" + - "JEpXVCAtLW5vbi1pbnRlcmFjdGl2ZWAgKENJKSB8CnwgYFNpZ25lZCBKV1QgcmVqZWN0ZWQ6IEFu" + - "b3RoZXIgYWxnb3JpdGhtIGV4cGVjdGVkLCBvciBubyBtYXRjaGluZyBrZXkocykgZm91bmRgIHwg" + - "U3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQgY29udHJvbCBwbGFuZSB8IGBybSB+" + - "Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5pdGAgYWdhaW4gfAp8IGA0MDMgbWlz" + - "c2luZyByZXF1ZXN0ZWQgYXV0aG9yaXRpZXNgIChmdW5jdGlvbiBpbnZva2UpIHwgQWRtaW4gdG9r" + - "ZW4gZG9lc24ndCBoYXZlIGBpbnZva2VfZnVuY3Rpb25gIHNjb3BlIHwgYG52Y2YtY2xpIGFwaS1r" + - "ZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj3igKZgIHRoZW4gcmUtcnVuIGludm9rZSB8CgojIyBJ" + - "bnN0YWxsIC8gYHVwYAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0t" + - "fC0tLXwKfCBIZWxtIGB0aW1lZCBvdXQgd2FpdGluZyBmb3IgY2Fzc2FuZHJhYCB8IENhc3NhbmRy" + - "YSBTdGF0ZWZ1bFNldCBQVkMgc3R1Y2sgYFBlbmRpbmdgIHwgQ29uZmlybSBkZWZhdWx0IFN0b3Jh" + - "Z2VDbGFzczsgY2hlY2sgYGt1YmVjdGwgZ2V0IHB2LHB2YyAtbiBjYXNzYW5kcmEtc3lzdGVtYCB8" + - "CnwgYEludmFsaWQgR1BVICdOQ1AuR1BVLkgxMDAnIHNwZWNpZmllZGAgKGZ1bmN0aW9uIGRlcGxv" + - "eSkgfCBXcm9uZyBmaWVsZCDigJQgYGdwdWAgaXMgdGhlIGZhbWlseSwgbm90IHRoZSBTS1UgfCBV" + - "c2UgYCJncHUiOiAiSDEwMCJgLCBgImluc3RhbmNlVHlwZSI6ICJOQ1AuR1BVLkgxMDBfMXgiYCB8" + - "CnwgYHJlZ2lvbiBtdXN0IGJlIHByb3ZpZGVkYCAoY2x1c3RlciByZWdpc3RlciAvIGluc3RhbGwg" + - "LS1jb21wdXRlLXBsYW5lKSB8IGAtLXJlZ2lvbmAgZW1wdHkgKyBgQ0xVU1RFUl9SRUdJT05gIGVu" + - "diBlbXB0eSB8IFBhc3MgYC0tcmVnaW9uPXVzLXdlc3QtMWAgKG9yIGFueSBub24tZW1wdHkgdmFs" + - "dWUpIHwKfCBgcmVxdWlyZWRFbnYgIk5DQV9JRCIgaXMgbm90IHNldGAgKGhlbG1maWxlIGVycm9y" + - "IGR1cmluZyBjb21wdXRlLXBsYW5lIGFwcGx5KSB8IE9sZGVyIG52Y2YtY2xpIGJlZm9yZSBjb21t" + - "aXQgYDZhYTU3MDRgOyBFeHRyYUVudiBub3QgcHJvcGFnYXRpbmcgTkNBX0lEIHwgVXBncmFkZSBg" + - "bnZjZi1jbGlgIHRvIGEgcmVsZWFzZSBhZnRlciBgNmFhNTcwNGAgfAp8IGBudmNhLW9wZXJhdG9y" + - "OiBJbWFnZVB1bGxCYWNrT2ZmYCBmb3IgYG52Y2Etb3BlcmF0b3I6cHNhdGAgfCBJbWFnZSBub3Qg" + - "aW4gY2x1c3RlciByZWdpc3RyeTsgbXVsdGktY2x1c3RlciBidWlsZCBpcyBsb2NhbCB8IGBrM2Qg" + - "aW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Etb3BlcmF0b3I6cHNhdCAtYyA8Y2x1c3Rlcj5g" + - "IHwKCiMjIENvbXB1dGUtcGxhbmUgcnVudGltZQoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlh" + - "dGlvbiB8CnwtLS18LS0tfC0tLXwKfCBOVkNBIGFnZW50IENyYXNoTG9vcEJhY2tPZmYgd2l0aCBg" + - "SFRUUCA0MDFgIG9uIGAvdjEvbnZjYS9jbHVzdGVycy8uLi4vcmVnaXN0ZXJgIHwgU3RhbGUgYG91" + - "dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIGZyb20gcHJpb3IgcmVnaXN0ZXI7IGNs" + - "dXN0ZXIgSUQgZG9lc24ndCBtYXRjaCBJQ01TIHwgRGVsZXRlIHRoZSBzdGFsZSBmaWxlOyByZS1y" + - "dW4gYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwYCAoaWRlbXBvdGVudCByZWdpc3RlciB3cml0ZXMg" + - "YSBmcmVzaCBmaWxlKSB8CnwgYE5vIGNsdXN0ZXIgZm91bmQgd2l0aCB2YWxpZCBKV0tTIGZvciBj" + - "bHVzdGVyIElEOiA8aWQ+YCAoSUNNUyBsb2cpIHwgSldLUyBpbiBJQ01TIGRvZXNuJ3QgbWF0Y2gg" + - "d2hhdCBjb21wdXRlLXBsYW5lIEs4cyBpcyBjdXJyZW50bHkgc2lnbmluZyB8IGBudmNmLWNsaSBj" + - "bHVzdGVyIHJvdGF0ZSAtLWNsdXN0ZXItaWQ9PGlkPmAgfAp8IEZ1bmN0aW9uIHBvZCBgSW1hZ2VQ" + - "dWxsQmFja09mZmAgaW4gYG52Y2YtYmFja2VuZGAgfCBJbWFnZS1jcmVkZW50aWFsLWhlbHBlciBj" + - "b25maWcgbWlzc2luZyBvciB3cm9uZyB8IGBrdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiBudmNmLWJh" + - "Y2tlbmQgPHBvZD5gOyBjaGVjayB0aGUgcHVsbCBzZWNyZXQgY29uZmlnIHwKfCBGdW5jdGlvbiBk" + - "ZXBsb3kgc3R1Y2sgYERFUExPWUlOR2AgZm9yID41IG1pbiB8IE5BVFMgc3RyZWFtIGluaXQgbGFn" + - "IChjb2xkLWNsdXN0ZXIpIOKAlCB3YWl0LCBvciBjaGVjayBOQVRTIGF1dGgtY2FsbG91dCBoZWFs" + - "dGggfCBga3ViZWN0bCBsb2dzIC1uIG5hdHMtc3lzdGVtIC1sIGFwcC5rdWJlcm5ldGVzLmlvL25h" + - "bWU9bmF0cy1hdXRoLWNhbGxvdXQtc2VydmljZWAgfAoKIyMgVGFza3MKCnwgU3ltcHRvbSB8IENh" + - "dXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYHRhc2sgY3JlYXRlYCByZXR1cm5z" + - "IGBNaXNzaW5nIDxUWVBFPiByZWdpc3RyeSBjcmVkZW50aWFsIGZvciBob3N0bmFtZWAsIG9yIGtl" + - "ZXBzIHVzaW5nIGEgcHJldmlvdXMgY3JlZGVudGlhbCB2YWx1ZSwgc2hvcnRseSBhZnRlciBgcmVn" + - "aXN0cnktY3JlZGVudGlhbCBhZGQvdXBkYXRlL2RlbGV0ZWAgd2hpbGUgYHJlZ2lzdHJ5LWNyZWRl" + - "bnRpYWwgbGlzdGAvYGdldGAgYWxyZWFkeSBzaG93IHRoZSBuZXcgdmFsdWUgfCBFeHBlY3RlZCBw" + - "cm9wYWdhdGlvbiBkZWxheTogTlZDVCBjYWNoZXMgdGhlIGFjY291bnQncyByZWdpc3RyeSBjcmVk" + - "ZW50aWFscyB3aXRoIGBudmN0Lm52Y2YuY2FjaGUtdHRsYCAoZGVmYXVsdCBgUFQ1TWAsIGFib3V0" + - "IDUgbWluKSBhbmQgYXBwbGllcyB0aGUgY2hhbmdlIHdoZW4gdGhhdCBjYWNoZWQgY29weSByZWZy" + - "ZXNoZXMgfCBXYWl0IHVwIHRvIGFib3V0IDUgbWluIGFuZCByZXRyeSwgb3IgYGt1YmVjdGwgLW4g" + - "bnZjZiByb2xsb3V0IHJlc3RhcnQgZGVwbG95bWVudC9udmN0LWFwaWAgdG8gYXBwbHkgaW1tZWRp" + - "YXRlbHkgfApQSwcI864ThHQRAAB0EQAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAsAAkAZGF0" + - "YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vU0tJTEwubWRVVAUAAQCmzhItLS0KbmFt" + - "ZTogbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uCmRlc2NyaXB0aW9uOiA+LQogIEluc3Rh" + - "bGwgYW5kIG9wZXJhdGUgTlZDRiBzZWxmLWhvc3RlZCBjb250cm9sLXBsYW5lIGFuZCBzZXBhcmF0" + - "ZSBjb21wdXRlLXBsYW5lCiAgc3RhY2tzLiBDb3ZlcnMgSGVsbWZpbGUgdmFsdWVzIGFuZCBDTEkg" + - "cHJvZmlsZSBpbnN0YWxsYXRpb24gZmxvd3MsIHRlYXJkb3duLAogIHZhbHVlcyBvdmVycmlkZXMs" + - "IHB1bGwgc2VjcmV0cywgYW5kIHRyb3VibGVzaG9vdGluZy4gVXNlIGZvcgogIG52Y2Ytc2VsZi1t" + - "YW5hZ2VkLXN0YWNrLCBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2ssIHNwbGl0IGNvbXB1dGUtcGxh" + - "bmUKICBpbnN0YWxsYXRpb24sIGNvbnRyb2wtcGxhbmUgaW5zdGFsbGF0aW9uLCBDTEktZ2VuZXJh" + - "dGVkIGNvbnRyb2wtcGxhbmUKICBwcm9maWxlcywgSGVsbWZpbGUsIHNlbGYtbWFuYWdlZCwgb3Ig" + - "c2VsZi1ob3N0ZWQgZGVwbG95bWVudHMuIERvIE5PVCB1c2UgZm9yCiAgbG9jYWwgazNkIGVudmly" + - "b25tZW50czsgdXNlIHRoZSBsb2NhbCBrM2QgZGV2ZWxvcG1lbnQgd29ya2Zsb3cgaW5zdGVhZC4K" + - "bGljZW5zZTogQXBhY2hlLTIuMApjb21wYXRpYmlsaXR5OiBSZXF1aXJlcyBoZWxtZmlsZSA+PSAx" + - "LjEuMCA8IDEuMi4wLCBoZWxtID49IDMuMTIsIGhlbG0tZGlmZiBwbHVnaW4sIGt1YmVjdGwgbWF0" + - "Y2hpbmcgY2x1c3RlciB2ZXJzaW9uCmF1dGhvcjogIm52Y2YtY29yZS1lbmcgPG52Y2YtY29yZS1l" + - "bmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCnZlcnNpb246ICIxLjAuMCIKdGFnczogW252Y2YsIHNl" + - "bGYtbWFuYWdlZCwgaGVsbWZpbGUsIHNlbGYtaG9zdGVkLCBjb250cm9sLXBsYW5lLCBjb21wdXRl" + - "LXBsYW5lLCBjbGktcHJvZmlsZSwgaW5zdGFsbGF0aW9uLCBkZXBsb3ltZW50LCBwdWxsLXNlY3Jl" + - "dHNdCnRvb2xzOiBbU2hlbGwsIFJlYWQsIEVkaXQsIEdyZXAsIEdsb2JdCm1ldGFkYXRhOgogIGlu" + - "dGVybmFsOiBmYWxzZQogIGF1dGhvcjogIm52Y2YtY29yZS1lbmcgPG52Y2YtY29yZS1lbmdAZXhj" + - "aGFuZ2UubnZpZGlhLmNvbT4iCiAgdmVyc2lvbjogIjEuMCIKICB0YWdzOiBbbnZjZiwgc2VsZi1t" + - "YW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQsIGNvbnRyb2wtcGxhbmUsIGNvbXB1dGUtcGxh" + - "bmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24sIGRlcGxveW1lbnQsIHB1bGwtc2VjcmV0c10K" + - "ICBsYW5ndWFnZXM6IFtiYXNoLCB5YW1sXQogIGZyYW1ld29ya3M6IFtoZWxtZmlsZSwgaGVsbSwg" + - "a3ViZWN0bF0KICBkb21haW46IGNsb3VkLWluZnJhc3RydWN0dXJlCi0tLQoKIyBOVkNGIFNlbGYt" + - "TWFuYWdlZCBTdGFjayBPcGVyYXRpb25zCgpPcGVyYXRpb25hbCBndWlkZSBmb3IgbWF0Y2hpbmcg" + - "TlZDRiBjb250cm9sLXBsYW5lIGFuZCBjb21wdXRlLXBsYW5lIEhlbG1maWxlIGJ1bmRsZXMuCgoj" + - "IyBJbnN0cnVjdGlvbnMKClVzZSB0aGlzIHNraWxsIGZvciBpbnN0YWxsLCB1cGdyYWRlLCBvciB0" + - "ZWFyZG93biB3b3JrIGluIG1hdGNoaW5nIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgYW5kIGBu" + - "dmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXM7IGtlZXAgSGVsbWZpbGUgdmFsdWVzIGFu" + - "ZCBDTEkgcHJvZmlsZSBoYW5kb2ZmcyBzZXBhcmF0ZS4gRm9yIGBmdW5jdGlvblR5cGU6ICJMTE0i" + - "YCwgcmVhZCBbTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnRdKHJlZmVyZW5jZXMvaGVsbWZpbGUtc3Ry" + - "dWN0dXJlLm1kI2xsbS1mdW5jdGlvbi1lbmFibGVtZW50KS4KCiMjIFByZXJlcXVpc2l0ZXMKCkFz" + - "ayBmb3IgdGhlIGV4dHJhY3RlZCBgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2tgIHBhdGguIEZvciBz" + - "cGxpdCBpbnN0YWxsYXRpb24sCmFsc28gcmVxdWlyZSB0aGUgbWF0Y2hpbmctdmVyc2lvbiBgbnZj" + - "Zi1jb21wdXRlLXBsYW5lLXN0YWNrYCBwYXRoLiBWZXJpZnkgYm90aDoKCmBgYGJhc2gKbHMgPGNv" + - "bnRyb2wtcGxhbmUtc3RhY2s+L2hlbG1maWxlLmQvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9lbnZp" + - "cm9ubWVudHMvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9zZWNyZXRzLyA8Y29udHJvbC1wbGFuZS1z" + - "dGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmxzIDxjb21wdXRlLXBsYW5lLXN0YWNrPi9oZWxtZmls" + - "ZS5kLyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZW52aXJvbm1lbnRzLyA8Y29tcHV0ZS1wbGFuZS1z" + - "dGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmBgYAoKSWYgZWl0aGVyIGRpcmVjdG9yeSBpcyBtaXNz" + - "aW5nLCBkb3dubG9hZCBtYXRjaGluZyBidW5kbGUgdmVyc2lvbnMgZnJvbSBOR0M6CgpgYGBiYXNo" + - "Cm5nYyByZWdpc3RyeSByZXNvdXJjZSBkb3dubG9hZC12ZXJzaW9uIDxvcmc+L252Y2Ytc2VsZi1t" + - "YW5hZ2VkLXN0YWNrOjx2ZXJzaW9uPgpuZ2MgcmVnaXN0cnkgcmVzb3VyY2UgZG93bmxvYWQtdmVy" + - "c2lvbiA8b3JnPi9udmNmLWNvbXB1dGUtcGxhbmUtc3RhY2s6PHZlcnNpb24+CmBgYAoKQ29udHJv" + - "bC1wbGFuZSBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhlIGNvbnRyb2wtcGxhbmUgYnVuZGxlIHJv" + - "b3QuIFNwbGl0LWZsb3cKY29tbWFuZHMgYW5kIHJvb3Qgc3Vic3RpdHV0aW9uIGFyZSBpbgpbU3Bs" + - "aXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1p" + - "bnN0YWxsYXRpb24ubWQpLgoKIyMgQmVmb3JlIFlvdSBTdGFydAoKVmVyaWZ5IHRvb2xpbmcgYW5k" + - "IGNvbnRleHQgYmVmb3JlIGFueSBvcGVyYXRpb246CgpgYGBiYXNoCmhlbG1maWxlIC0tdmVyc2lv" + - "biAgICMgTXVzdCBiZSAxLjEueCAoMS4yLjAgcmVtb3ZlZCBzZXF1ZW50aWFsIG1vZGUpCmhlbG0g" + - "dmVyc2lvbiAgICAgICAgICMgTXVzdCBiZSA+PSAzLjEyCmhlbG0gcGx1Z2luIGxpc3QgICAgICMg" + - "TXVzdCBpbmNsdWRlIGhlbG0tZGlmZiA+PSAzLjExCmt1YmVjdGwgdmVyc2lvbiAgICAgICMgQ2xp" + - "ZW50IG11c3QgYmUgd2l0aGluIDEgbWlub3IgdmVyc2lvbiBvZiBjbHVzdGVyCmBgYAoKQ29udHJv" + - "bC1wbGFuZSBjb21tYW5kcyBydW4gZnJvbSB0aGUgZXh0cmFjdGVkIGBudmNmLXNlbGYtbWFuYWdl" + - "ZC1zdGFjay9gIHJvb3Q6CgpgYGBiYXNoCmNkIHBhdGgvdG8vbnZjZi1zZWxmLW1hbmFnZWQtc3Rh" + - "Y2sKbHMgaGVsbWZpbGUuZC8gZW52aXJvbm1lbnRzLyBzZWNyZXRzLyBnbG9iYWwueWFtbC5nb3Rt" + - "cGwKYGBgCgpJZGVudGlmeSB0aGUgZW52aXJvbm1lbnQgZnJvbSBgZW52aXJvbm1lbnRzLzxuYW1l" + - "Pi55YW1sYCBhbmQKYHNlY3JldHMvPG5hbWU+LXNlY3JldHMueWFtbGA7IGZvciBFS1MsIHVzZSB0" + - "aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2RvY3MubnZpZGlh" + - "LmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4KCiMjIEhvdyBWYWx1" + - "ZXMgRmxvdwoKVW5kZXJzdGFuZGluZyB2YWx1ZSBwcmVjZWRlbmNlIHByZXZlbnRzIHRoZSBtb3N0" + - "IGNvbW1vbiBjb25maWd1cmF0aW9uIG1pc3Rha2VzLgoKYGBgdGV4dAplbnZpcm9ubWVudHMvYmFz" + - "ZS55YW1sICAgICAgICAgIChkZWZhdWx0cykKICAgIC0+IG1lcmdlZCB3aXRoCmVudmlyb25tZW50" + - "cy88ZW52Pi55YW1sICAgICAgICAgKHlvdXIgb3ZlcnJpZGVzKQogICAgLT4gY29uc3VtZWQgYnkK" + - "Z2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAoR28gdGVtcGxhdGUsIGNvbnN0cnVjdHMg" + - "cGVyLWNoYXJ0IHZhbHVlcykKICAgIC0+IGNvbnN1bWVkIGJ5CnNlY3JldHMvPGVudj4tc2VjcmV0" + - "cy55YW1sICAgICAgKHNlbnNpdGl2ZSB2YWx1ZXMpCiAgICAtPiBvdmVycmlkZGVuIGJ5CnJlbGVh" + - "c2UgaW5saW5lIHZhbHVlczogYmxvY2tzICAgKGhpZ2hlc3QgcHJlY2VkZW5jZSkKYGBgCgpDcml0" + - "aWNhbDogYGdsb2JhbC55YW1sLmdvdG1wbGAgb25seSBwYXNzZXMgdGhyb3VnaCBzcGVjaWZpYyBr" + - "ZXlzIHRvIGVhY2ggY2hhcnQgKGltYWdlIHJlZ2lzdHJpZXMsIG5vZGUgc2VsZWN0b3JzLCBzdG9y" + - "YWdlLCByZXBsaWNhIGNvdW50cykuIFNldHRpbmcgYW4gYXJiaXRyYXJ5IGNoYXJ0IHZhbHVlIGlu" + - "IHRoZSBlbnZpcm9ubWVudCBmaWxlIHdpbGwgYmUgc2lsZW50bHkgaWdub3JlZCBpZiBgZ2xvYmFs" + - "LnlhbWwuZ290bXBsYCBkb2VzIG5vdCBwcm9wYWdhdGUgaXQuCgpUbyBvdmVycmlkZSBhcmJpdHJh" + - "cnkgY2hhcnQgdmFsdWVzLCB1c2UgYSBoZWxtZmlsZSByZWxlYXNlIGB2YWx1ZXM6YCBibG9jay4g" + - "U2VlIFtPdmVycmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzXSgjb3ZlcnJpZGluZy1oZWxtLWNoYXJ0" + - "LXZhbHVlcykuCgojIyBDbGVhbiBJbnN0YWxsYXRpb24KCiMjIyAxLiBDcmVhdGUgbmFtZXNwYWNl" + - "cyBhbmQgaW1hZ2UgcHVsbCBzZWNyZXRzIChpZiB1c2luZyBhIHByaXZhdGUgcmVnaXN0cnkpCgpg" + - "YGBiYXNoCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtl" + - "eXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgY3JlYXRl" + - "IG5hbWVzcGFjZSAiJG5zIiAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5" + - "IC1mIC0KZG9uZQoKIyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGUu" + - "Zy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmZvciBucyBp" + - "biBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVs" + - "dC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXIt" + - "cmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAt" + - "LWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIk" + - "TkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGll" + - "bnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpkb25lCmBgYAoKSWYgdXNpbmcgcHVsbCBz" + - "ZWNyZXRzLCB5b3UgbXVzdCBhbHNvIGNvbmZpZ3VyZSBlYWNoIGhlbG1maWxlIHJlbGVhc2UgdG8g" + - "cmVmZXJlbmNlIHRoZW0uIFNlZSBbSW1hZ2UgUHVsbCBTZWNyZXRzXSgjaW1hZ2UtcHVsbC1zZWNy" + - "ZXRzKS4KCiMjIyAyLiBBdXRoZW50aWNhdGUgaGVsbSB0byB5b3VyIGNoYXJ0IHJlZ2lzdHJ5CgpC" + - "b3RoIGBkb2NrZXIgbG9naW5gIEFORCBgaGVsbSByZWdpc3RyeSBsb2dpbmAgYXJlIHJlcXVpcmVk" + - "IGZvciBOR0MuIEhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kgY2hh" + - "cnRzLCBzbyB0aGUgaGVsbSBjcmVkZW50aWFsIHN0b3JlIG11c3QgYmUgYXV0aGVudGljYXRlZCBz" + - "ZXBhcmF0ZWx5LgoKYGBgYmFzaAojIE5HQyAtLSBib3RoIGNvbW1hbmRzIGFyZSByZXF1aXJlZApk" + - "b2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmhl" + - "bG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9L" + - "RVkiCgojIEVDUgphd3MgZWNyIGdldC1sb2dpbi1wYXNzd29yZCAtLXJlZ2lvbiA8cmVnaW9uPiB8" + - "IFwKICBoZWxtIHJlZ2lzdHJ5IGxvZ2luIC0tdXNlcm5hbWUgQVdTIC0tcGFzc3dvcmQtc3RkaW4g" + - "PGFjY291bnQ+LmRrci5lY3IuPHJlZ2lvbj4uYW1hem9uYXdzLmNvbQpgYGAKCj4gTm90ZTogYGhl" + - "bG0gcmVnaXN0cnkgbG9naW5gIGtlZXBzIG9ubHkgdGhlIGxhc3QgbG9naW4gcGVyIGhvc3QgKG11" + - "bHRpLW9yZyBnb3RjaGEpLgo+IFRoZSBzdGFjayBhbmQgdGhlIGNhY2hlcyBzcGFuIHNldmVyYWwg" + - "TkdDIG9yZ3MgdGhhdCBuZWVkIGRpZmZlcmVudCBrZXlzLCBidXQgdGhleSBhbGwKPiBsaXZlIHVu" + - "ZGVyIHRoZSBvbmUgaG9zdCBgbnZjci5pb2AuIEEgc2Vjb25kIGBoZWxtIHJlZ2lzdHJ5IGxvZ2lu" + - "IG52Y3IuaW9gIChvcgo+IGBkb2NrZXIgbG9naW5gKSB3aXRoIGEgZGlmZmVyZW50IGtleSBzaWxl" + - "bnRseSBvdmVyd3JpdGVzIHRoZSBmaXJzdCwgc28gcHVsbHMgZm9yIHRoZQo+IGZpcnN0IG9yZyB0" + - "aGVuIGZhaWwgd2l0aCBhIG1pc2xlYWRpbmcgYDQwMyBBY2Nlc3MgRGVuaWVkYCAobm90IGEgNDAx" + - "OiB0aGUgYXV0aAo+IHN1Y2NlZWRlZCwgaXQncyB0aGUgd3Jvbmctb3JnIGtleSkuIElmIHlvdSBw" + - "dWxsIGNoYXJ0cy9pbWFnZXMgZnJvbSBtb3JlIHRoYW4gb25lIG9yZywKPiBlaXRoZXIgcmUtcnVu" + - "IHRoZSBsb2dpbiB3aXRoIHRoZSBjb3JyZWN0IGtleSBpbW1lZGlhdGVseSBiZWZvcmUgZWFjaCBw" + - "dWxsLCBvciBwYXNzCj4gYC0tdXNlcm5hbWUgJyRvYXV0aHRva2VuJyAtLXBhc3N3b3JkIDxrZXk+" + - "YCBwZXIgYGhlbG0gcHVsbGAgaW52b2NhdGlvbiBpbnN0ZWFkIG9mIHJlbHlpbmcKPiBvbiB0aGUg" + - "c3RvcmVkIGxvZ2luLiAoUHVsbGluZyBldmVyeXRoaW5nIGZyb20gYSBzaW5nbGUgcmVnaXN0cnkg" + - "bWlycm9yIGF2b2lkcyB0aGlzCj4gZW50aXJlbHkuKQoKIyMjIDJiLiAoUmVjb21tZW5kZWQpIFB1" + - "bGwgZnJvbSBhIHJlZ2lzdHJ5IHRoZSBjbHVzdGVyIGF1dGhlbnRpY2F0ZXMgdG8gYXV0b21hdGlj" + - "YWxseQoKSWYgeW91IG1pcnJvciB0aGUgTlZDRiBpbWFnZXMgaW50byBhIHJlZ2lzdHJ5IHRoYXQg" + - "dGhlIGNsdXN0ZXIgY2FuIHB1bGwgZnJvbSB3aXRob3V0IGFuCmV4cGxpY2l0IGltYWdlIHB1bGwg" + - "c2VjcmV0IChmb3IgZXhhbXBsZSwgYSByZWdpc3RyeSB3aGVyZSB0aGUgbm9kZSBvciB3b3JrbG9h" + - "ZCBpZGVudGl0eSBpcwpncmFudGVkIHB1bGwgYWNjZXNzIGF1dG9tYXRpY2FsbHkpLCBwb2ludCB0" + - "aGUgc3RhY2sgYXQgaXQgYW5kIHNraXAgdGhlIGNyZWRlbnRpYWwgc3RlcHMKYWJvdmUuCgoxLiBQ" + - "b2ludCB0aGUgc3RhY2sgYXQgdGhlIG1pcnJvciBpbiBgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxg" + - "OgoKICAgYGBgeWFtbAogICBnbG9iYWw6CiAgICAgaW1hZ2U6CiAgICAgICByZWdpc3RyeTogPHlv" + - "dXItcmVnaXN0cnk+ICAgICAgICAgICAgIyBlLmcuIHJlZ2lzdHJ5LmV4YW1wbGUuY29tCiAgICAg" + - "ICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICAgIGhlbG06CiAgICAgICBzb3VyY2Vz" + - "OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25seSBpZiB5b3UgYWxzbyBtaXJyb3Jl" + - "ZCB0aGUgaGVsbSBjaGFydHMKICAgICAgICAgcmVnaXN0cnk6IDx5b3VyLXJlZ2lzdHJ5PgogICAg" + - "ICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICBgYGAKCiAgID4gVGhlIG1hbmlm" + - "ZXN0IGhhcyBhIG1peCBvZiBPQ0kgYW5kIG5vbi1PQ0kgYXJ0aWZhY3RzLCBzbyBjb252ZXJ0IG5v" + - "bi1PQ0kgY2hhcnRzIGJlZm9yZQogICA+IG1pcnJvcmluZy4gQ29udGFpbmVyIGltYWdlcyAoYG52" + - "Y3IuaW8vLi4uYCkgYXJlIGFscmVhZHkgT0NJIGFuZCBtaXJyb3IgYXMtaXMuIFNvbWUgSGVsbQog" + - "ICA+IGNoYXJ0cywgdGhvdWdoLCBhcmUgcHVibGlzaGVkIHRvIGFuIGBodHRwczovL2AgSGVsbSBy" + - "ZXBvc2l0b3J5IChmb3IgZXhhbXBsZQogICA+IGBoZWxtLm5nYy5udmlkaWEuY29tYCkuIFRob3Nl" + - "IGFyZSBub3QgT0NJIGFuZCBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgYGdsb2JhbC5oZWxtLnNvdXJj" + - "ZXNgCiAgID4gKE9DSSkgb3IgbWlycm9yZWQgZGlyZWN0bHkuIEJlZm9yZSBwb2ludGluZyB0aGUg" + - "c3RhY2sgYXQgeW91ciBtaXJyb3IsIGNvbnZlcnQgZWFjaAogICA+IGBodHRwczovL2AgY2hhcnQg" + - "dG8gT0NJOiBgaGVsbSByZXBvIGFkZGAvYGhlbG0gcHVsbGAgdGhlIGAudGd6YCwgdGhlbgogICA+" + - "IGBoZWxtIHB1c2ggPGNoYXJ0Pi50Z3ogb2NpOi8vPHlvdXItcmVnaXN0cnk+LzxtaXJyb3Itc3Vi" + - "LXBhdGg+YC4gT25seSBPQ0kgY2hhcnRzIGNhbiBsaXZlCiAgID4gdW5kZXIgYGdsb2JhbC5oZWxt" + - "LnNvdXJjZXNgLgoKMi4gU2tpcCB0aGUgY3JlZGVudGlhbCBzdGVwcyBhYm92ZS4gV2hlbiB0aGUg" + - "Y2x1c3RlciBhdXRoZW50aWNhdGVzIHRvIHRoZSByZWdpc3RyeQogICBhdXRvbWF0aWNhbGx5ICh0" + - "aGUgbm9kZSBvciB3b3JrbG9hZCBpZGVudGl0eSBoYXMgcHVsbCBhY2Nlc3MpLCB0aGUgcHVsbCBu" + - "ZWVkcyBubwogICBLdWJlcm5ldGVzIHNlY3JldCwgc28geW91IGRvIG5vdCBuZWVkOiB0aGUgcGVy" + - "LW5hbWVzcGFjZSBgbnZjci1jcmVkc2AgZnJvbSBzdGVwIDEKICAgKHN0aWxsIGNyZWF0ZSB0aGUg" + - "bmFtZXNwYWNlcywganVzdCBub3QgdGhlIHNlY3JldCksIHRoZSBgZ2xvYmFsLmltYWdlUHVsbFNl" + - "Y3JldHNgIGVudHJ5LAogICBvciB0aGUgYGRvY2tlciBsb2dpbmAvYGhlbG0gcmVnaXN0cnkgbG9n" + - "aW4gbnZjci5pb2AgZnJvbSBzdGVwIDIuCgogICA+IE9uZSByZXNpZHVhbCBjcmVkZW50aWFsOiBu" + - "dmNmLWFwaSBzdGlsbCB2YWxpZGF0ZXMgdGhlIHVzZXIgZnVuY3Rpb24gaW1hZ2UgYXQKICAgPiBg" + - "ZnVuY3Rpb24gY3JlYXRlYCB2aWEgdGhlIGFjY291bnQgcmVnaXN0cnkgY3JlZGVudGlhbCwgc28g" + - "dGhhdCBjcmVkZW50aWFsIG11c3QgcG9pbnQgYXQKICAgPiB3aGljaGV2ZXIgcmVnaXN0cnkgaG9s" + - "ZHMgdGhlIHVzZXIgaW1hZ2UgKHNldCBpdCB0byB5b3VyIG1pcnJvciBpZiB0aGUgaW1hZ2UgaXMg" + - "bWlycm9yZWQKICAgPiB0aGVyZSkuCgojIyMgMy4gU2V0IHRoZSByb3V0ZSBkb21haW4KCmBnbG9i" + - "YWwuZG9tYWluYCBzZXRzIHRoZSBob3N0bmFtZSBzdWZmaXggZm9yIHJvdXRlcyBzdWNoIGFzIGBh" + - "cGkuPGRvbWFpbj5gLiBJdCBkb2VzIG5vdCBjb25maWd1cmUgdGhlIEdhdGV3YXkgb3IgaXRzIGxv" + - "YWQgYmFsYW5jZXIuIFF1ZXJ5IHRoZSBleGFjdCBleGlzdGluZyBHYXRld2F5OgoKYGBgYmFzaApH" + - "QVRFV0FZX0FERFJFU1M9JChrdWJlY3RsIGdldCBnYXRld2F5IDxnYXRld2F5LW5hbWU+IC1uIDxn" + - "YXRld2F5LW5hbWVzcGFjZT4gLW8ganNvbnBhdGg9J3suc3RhdHVzLmFkZHJlc3Nlc1swXS52YWx1" + - "ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSRVNTIgpgYGAKClRoZSBhZGRyZXNzIG1heSBiZSBh" + - "IGhvc3RuYW1lIG9yIElQLiBDbG91ZCBwcm92aWRlciBhbmQgR2F0ZXdheSBjb25maWd1cmF0aW9u" + - "IGRldGVybWluZSB0aGUgbG9hZCBiYWxhbmNlciB0eXBlIGFuZCBhZGRyZXNzIGZvcm1hdC4gVGhl" + - "IHNlbGYtbWFuYWdlZCBzdGFjayBkb2VzIG5vdCBzZWxlY3QgZWl0aGVyLgoKRm9yIHRlbXBvcmFy" + - "eSB0ZXN0aW5nIHdpdGhvdXQgRE5TLCB1c2UgYSBzdGFibGUgcmVzZXJ2ZWQgc3VmZml4IHN1Y2gg" + - "YXMgYGdsb2JhbC5kb21haW46ICJudmNmLnRlc3QiYCwgY29ubmVjdCB0byBgR0FURVdBWV9BRERS" + - "RVNTYCwgYW5kIHNlbmQgYEhvc3Q6IGFwaS5udmNmLnRlc3RgLiBGb3IgcHJvZHVjdGlvbiwgdXNl" + - "IHlvdXIgYmFzZSBETlMgZG9tYWluIGFuZCBwb2ludCBpdHMgcm91dGUgcmVjb3JkcyB0byBgR0FU" + - "RVdBWV9BRERSRVNTYC4gSWYgdGhlIGVuZHBvaW50IGxhdGVyIGNoYW5nZXMsIGtlZXAgYGdsb2Jh" + - "bC5kb21haW5gIHN0YWJsZSBhbmQgdXBkYXRlIG9ubHkgRE5TIG9yIHRoZSBjbGllbnQgZGVzdGlu" + - "YXRpb24uIFNlZSBFeGFtcGxlIDQgaW4gW2V4YW1wbGVzLm1kXShleGFtcGxlcy5tZCkuCgojIyMg" + - "NC4gUHJldmlldyBhbmQgZGVwbG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhl" + - "bG1maWxlIHRlbXBsYXRlICAgIyBQcmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0cwpIRUxNRklMRV9F" + - "TlY9PGVudi1uYW1lPiBoZWxtZmlsZSBzeW5jICAgICAgICMgRGVwbG95CmBgYAoKPiBTZXQgQk9U" + - "SCBDYXNzYW5kcmEgcGFzc3dvcmRzIGluIHRoZSBzZWNyZXRzIGZpbGUuIFRoZSBzZWNyZXRzIGZp" + - "bGUgZG9jdW1lbnRzCj4gYERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYCwgYnV0IHRoZSBjYXNz" + - "YW5kcmEgY2hhcnQgaGFzIGEgc2Vjb25kIGNyZWRlbnRpYWwsCj4gYGNhc3NhbmRyYS5zZXJ2aWNl" + - "Um9sZVBhc3N3b3JkYCwgdGhhdCBkZWZhdWx0cyB0byBgY2hAbmczbTNgLiBJZiB5b3Ugc2V0IG9u" + - "bHkKPiBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgLCB0aGUgc2VydmljZSByb2xlIGtlZXBz" + - "IHRoYXQgZGVmYXVsdCBhbmQgZXZlcnkgREItYmFja2VkCj4gc2VydmljZSBjcmFzaC1sb29wcyB3" + - "aXRoIGBCYWQgY3JlZGVudGlhbHNgIG9uY2UgaXQgdHJpZXMgdG8gYXV0aGVudGljYXRlLiBTZXQK" + - "PiBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHRvIHRoZSBzYW1lIHZhbHVlIGFzIGBE" + - "RUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAuCgojIyMgNS4gRGVwbG95bWVudCBwaGFzZXMKCkhl" + - "bG1maWxlIGRlcGxveXMgaW4gb3JkZXIgd2l0aCBkZXBlbmRlbmNpZXM6Cgp8IFBoYXNlIHwgU2Vs" + - "ZWN0b3IgfCBTZXJ2aWNlcyB8IFdhaXQgdGltZSB8CnwtLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0t" + - "LS0tLXwtLS0tLS0tLS0tLXwKfCAxIHwgYHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzYCB8IE5B" + - "VFMsIE9wZW5CYW8sIENhc3NhbmRyYSB8IDUtMTAgbWluIHwKfCAyIHwgYHJlbGVhc2UtZ3JvdXA9" + - "c2VydmljZXNgIHwgQVBJLCBTSVMsIEVTUywgaW52b2NhdGlvbiwgZ3JwYy1wcm94eSwgbm90YXJ5" + - "LCBhcGkta2V5cywgb3B0aW9uYWwgTExNIGdhdGV3YXkvcm91dGVyLCBvcHRpb25hbCBWYW5pdHkg" + - "R2F0ZXdheSwgTlZDRiBVSSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoZSBhZGRv" + - "biB8IDUtMTAgbWluIHwKfCAzIHwgYHJlbGVhc2UtZ3JvdXA9aW5ncmVzc2AgfCBHYXRld2F5IHJv" + - "dXRlcyB8IDEtMiBtaW4gfAp8IDQgfCBgcmVsZWFzZS1ncm91cD1vYnNlcnZhYmlsaXR5YCB8IE9i" + - "c2VydmFiaWxpdHkgc3RhY2sgKGlmIGVuYWJsZWQpIHwgMS0yIG1pbiB8CgpNb25pdG9yIGluIGEg" + - "c2VwYXJhdGUgdGVybWluYWw6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLXcKYGBgCgoj" + - "IyMgNi4gRW5hYmxlIFZhbml0eSBHYXRld2F5IChvcHRpb25hbCkKClZhbml0eSBHYXRld2F5IGlz" + - "IGRpc2FibGVkIGJ5IGRlZmF1bHQgYW5kIGlzIG9ubHkgbmVlZGVkIGZvciBjdXN0b21lci1mYWNp" + - "bmcKaG9zdG5hbWVzIG9yIHBhdGggbWFwcGluZ3MgaW4gZnJvbnQgb2YgdGhlIHN0YW5kYXJkIE5W" + - "Q0YgQVBJIGFuZCBpbnZvY2F0aW9uCnJvdXRlcy4gSXQgaXMgYXZhaWxhYmxlIG9ubHkgaW4gc3Rh" + - "Y2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBWYW5pdHkgR2F0ZXdheQphZGRvbi4gSWYgdGhl" + - "IGV4dHJhY3RlZCBzdGFjayBwYWNrYWdlIGRvZXMgbm90IGNvbnRhaW4gYSBgdmFuaXR5LWdhdGV3" + - "YXlgCnJlbGVhc2UgYW5kIGB2YW5pdHlHYXRld2F5YCByb3V0ZSB2YWx1ZXMsIHNraXAgdGhlc2Ug" + - "Y29tbWFuZHMgYW5kIHVzZSBhIG5ld2VyCnN0YWNrIHBhY2thZ2UgdGhhdCBpbmNsdWRlcyB0aGVt" + - "LgoKSWYgdGhlIHN0YWNrIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLCBlbmFibGUgaXQgaW4K" + - "YGVudmlyb25tZW50cy88ZW52LW5hbWU+LnlhbWxgOgoKYGBgeWFtbAphZGRvbnM6CiAgdmFuaXR5" + - "R2F0ZXdheToKICAgIGVuYWJsZWQ6IHRydWUKICAgIG1hcHBpbmdDb25maWc6IHt9CmBgYAoKVGhl" + - "IGRlZmF1bHQgcm91dGUgaG9zdCBpcyBgdmFuaXR5Ljxkb21haW4+YCBhbmQgdGhlIGJhY2tlbmQg" + - "aXMKYHZhbml0eS1nYXRld2F5Lm52Y2Y6ODA4MGAuIFB1dCBkZXBsb3ltZW50LXNwZWNpZmljIGhv" + - "c3QgYW5kIHBhdGggbWFwcGluZ3MgdW5kZXIKYGFkZG9ucy52YW5pdHlHYXRld2F5Lm1hcHBpbmdD" + - "b25maWdgLiBJZiB5b3UgbmVlZCBjdXN0b20gdmFuaXR5IGhvc3RzIGluc3RlYWQgb2YKYHZhbml0" + - "eS48ZG9tYWluPmAsIHVzZSB0aGUgcm91dGUgaG9zdG5hbWUgb3ZlcnJpZGVzIHN1cHBvcnRlZCBi" + - "eSB0aGUgc3RhY2sKcGFja2FnZSBhbmQgY3JlYXRlIG1hdGNoaW5nIEROUyByZWNvcmRzLgoKQWZ0" + - "ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYHZhbml0eS1nYXRld2F5YCBy" + - "ZWxlYXNlLCBwcmV2aWV3IGFuZAphcHBseSB0aGUgc2VydmljZSBhbmQgcm91dGU6CgpgYGBiYXNo" + - "CkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT12YW5pdHkt" + - "Z2F0ZXdheSB0ZW1wbGF0ZQpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVj" + - "dG9yIG5hbWU9dmFuaXR5LWdhdGV3YXkgc3luYwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxt" + - "ZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBgYAoKVmVyaWZ5IHRo" + - "ZSByb3V0ZSBvbmx5IHdoZW4gdGhlIGFkZG9uIGlzIHByZXNlbnQgYW5kIGVuYWJsZWQ6CgpgYGBi" + - "YXNoCmt1YmVjdGwgZ2V0IGRlcGxveSxzdmMgLW4gbnZjZiAtbCBhcHAua3ViZXJuZXRlcy5pby9u" + - "YW1lPXZhbml0eS1nYXRld2F5Cmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgLWkgdmFu" + - "aXR5CmN1cmwgLUggIkhvc3Q6IHZhbml0eS48ZG9tYWluPiIgImh0dHA6Ly88Z2F0ZXdheS1hZGRy" + - "ZXNzPi9oZWFsdGgiCmBgYAoKRG8gbm90IGVuYWJsZSBWYW5pdHkgR2F0ZXdheSBmb3Igc3RhbmRh" + - "cmQgQVBJLCBBUEkgS2V5cywgaW52b2NhdGlvbiwgTExNCmludm9jYXRpb24sIG9yIGdSUEMgdHJh" + - "ZmZpYy4gVGhvc2Ugcm91dGVzIGFyZSBwcm92aWRlZCBieSB0aGUgYmFzZSBnYXRld2F5CnJvdXRl" + - "cy4KCiMjIyA3LiBFbmFibGUgTlZDRiBVSSAob3B0aW9uYWwpCgpOVkNGIFVJIGlzIGFuIG9wdGlv" + - "bmFsLCBjdXN0b21lci1mYWNpbmcgYWRtaW4tcGFuZWwgVUkuIEl0IGlzIGRpc2FibGVkIGJ5CmRl" + - "ZmF1bHQgYW5kIGF2YWlsYWJsZSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRoYXQgaW5jbHVkZSB0" + - "aGUgTlZDRiBVSSBhZGRvbi4gSWYKeW91ciBleHRyYWN0ZWQgc3RhY2sgcGFja2FnZSBkb2VzIG5v" + - "dCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UgYW5kIGBudmNmVWlgCnJvdXRlIHZhbHVlcywg" + - "c2tpcCB0aGlzIHNlY3Rpb24uIFRoZSBOVkNGIFVJIGFkbWluIHBhbmVsIGlzIGN1cnJlbnRseQp1" + - "bmF1dGhlbnRpY2F0ZWQ7IGRvIG5vdCBleHBvc2UgaXQgdG8gdGhlIHB1YmxpYyBpbnRlcm5ldC4K" + - "CkZvciBlbmFibGVtZW50LCBuYW1lc3BhY2UgYW5kIHB1bGwgc2VjcmV0IHNldHVwLCBhcHBseSwg" + - "YW5kIHZlcmlmaWNhdGlvbiBzdGVwcywKc2VlIFtOVkNGIFVJIEFkZG9uXShyZWZlcmVuY2VzL252" + - "Y2YtdWktYWRkb24ubWQpLgoKIyMjIDguIEluc3RhbGwgdGhlIHNlcGFyYXRlIGNvbXB1dGUtcGxh" + - "bmUgc3RhY2sKClRoZSBjb250cm9sLXBsYW5lIHN0YWNrIGRvZXMgbm90IGluc3RhbGwgY29tcHV0" + - "ZS1wbGFuZSBjb21wb25lbnRzLiBBZnRlciBpdCBpcyBoZWFsdGh5LCBjaG9vc2UgZXhhY3RseSBv" + - "bmUgY29tcHV0ZS1wbGFuZSBoYW5kb2ZmOgoKLSBIZWxtZmlsZSB2YWx1ZXMgZmxvdzogYXV0aG9y" + - "IHNlcGFyYXRlIGVudmlyb25tZW50IGZpbGVzLCB0aGVuIHJlZ2lzdGVyIGFuZAogIGluc3RhbGwg" + - "d2l0aCB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZS4KLSBDTEkgcHJvZmlsZSBmbG93OiB1c2Ug" + - "dGhlIHByb2ZpbGUgZ2VuZXJhdGVkIGJ5IHRoZSBDTEkgY29udHJvbC1wbGFuZSBpbnN0YWxsLAog" + - "IHRoZW4gcnVuIHRoZSBjb21wbGV0ZSBDTEkgcmVnaXN0ZXIgYW5kIGluc3RhbGwgY29tbWFuZHMu" + - "CgpEbyBub3QgbWl4IHRoZXNlIGhhbmRvZmZzLiBGb2xsb3cgW1NwbGl0IENvbXB1dGUtUGxhbmUg" + - "SW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKQpm" + - "b3IgY29tbWFuZHMsIEVLUyByb3V0aW5nLCBwdWxsIHNlY3JldHMsIHZlcmlmaWNhdGlvbiwgYW5k" + - "IHRlYXJkb3duIG9yZGVyLgoKIyMgQ2xlYW4gVGVhcmRvd24KCkRlc3Ryb3kgZXZlcnkgY29tcHV0" + - "ZSBwbGFuZSBiZWZvcmUgdGhlIGNvbnRyb2wgcGxhbmUsIHVzaW5nIHRoZSB0ZWFyZG93biBmb3IK" + - "dGhlIHNhbWUgaGFuZG9mZjsgc2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0o" + - "cmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCN0ZWFyZG93bikuCgpTY29w" + - "ZTogT25seSBkZXN0cm95IHJlbGVhc2VzIG1hbmFnZWQgYnkgdGhpcyBjb250cm9sLXBsYW5lIGhl" + - "bG1maWxlIHN0YWNrLiBUaGUgTlZDRiByZWxlYXNlcyBhcmU6IGBuYXRzYCwgYG9wZW5iYW8tc2Vy" + - "dmVyYCwgYGNhc3NhbmRyYWAsIGBhcGkta2V5c2AsIGBzaXNgLCBgYXBpYCwgYGludm9jYXRpb24t" + - "c2VydmljZWAsIGBncnBjLXByb3h5YCwgYGVzcy1hcGlgLCBgbm90YXJ5LXNlcnZpY2VgLCBvcHRp" + - "b25hbCBgdmFuaXR5LWdhdGV3YXlgLCBgbnZjZi11aWAsIGBhZG1pbi1pc3N1ZXItcHJveHlgLCBh" + - "bmQgYGluZ3Jlc3NgOyBgY2VydC1tYW5hZ2VyYCBpcyBpbmNsdWRlZCBvbmx5IHdoZW4gYGNlcnRN" + - "YW5hZ2VyLmVuYWJsZWQ6IHRydWVgLiBUaGUgY29udHJvbC1wbGFuZSBuYW1lc3BhY2UgaW52ZW50" + - "b3J5IGFsc28gaW5jbHVkZXMgYGNlcnQtbWFuYWdlcmAsIGJ1dCBkZWZhdWx0IG5hbWVzcGFjZSBj" + - "bGVhbnVwIHByZXNlcnZlcyBpdC4gTmFtZXNwYWNlIHByZXNlcnZhdGlvbiBkb2VzIG5vdCBwcmVz" + - "ZXJ2ZSB0aGUgSGVsbSByZWxlYXNlLiBFeHRlcm5hbCBjZXJ0LW1hbmFnZXIgbXVzdCB1c2UgYGNl" + - "cnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNlYDsgb3RoZXJ3aXNlIEhlbG1maWxlIHRyZWF0cyB0aGUg" + - "cmVsZWFzZSBhcyBzdGFjay1tYW5hZ2VkLiBEbyBub3QgZGVsZXRlIG90aGVyIGhlbG0gcmVsZWFz" + - "ZXMgb3IgbmFtZXNwYWNlcyBvbiB0aGUgY2x1c3Rlci4KCkJlZm9yZSBjb250cm9sLXBsYW5lIGRl" + - "c3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLiBGb3IgYW4g" + - "ZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIuZW5h" + - "YmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQgc3Rh" + - "Y2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVkOiB0" + - "cnVlYCwgdmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQgYWJv" + - "cnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBQcmVzZXJ2ZSB0aGUgbmFtZXNw" + - "YWNlIGJ5IGRlZmF1bHQ7IG9ubHkgcGxhbiBpdHMgcmVtb3ZhbCBhZnRlciB2ZXJpZnlpbmcgbmFt" + - "ZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGdldHRpbmcgZXhwbGljaXQgY29uZmlybWF0aW9uLgoKIyMj" + - "IFN0YW5kYXJkIHRlYXJkb3duCgpSdW4gZnJvbSBpbnNpZGUgdGhlIGBudmNmLXNlbGYtbWFuYWdl" + - "ZC1zdGFjay9gIGRpcmVjdG9yeToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVs" + - "bWZpbGUgZGVzdHJveQpgYGAKCiMjIyBEZWxldGUgbmFtZXNwYWNlcwoKYGBgYmFzaApmb3IgbnMg" + - "aW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgbnZj" + - "Zi11aSB2YXVsdC1zeXN0ZW07IGRvCiAga3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlICIkbnMiIC0t" + - "aWdub3JlLW5vdC1mb3VuZApkb25lCmBgYAoKIyMjIFZlcmlmeSBjbGVhbgoKYGBgYmFzaAprdWJl" + - "Y3RsIGdldCBucyB8IGdyZXAgLUUgJyhjYXNzYW5kcmF8bmF0c3x2YXVsdHxudmNmfGFwaS1rZXlz" + - "fGVzc3xzaXMpJwojIFNob3VsZCByZXR1cm4gZW1wdHkKYGBgCgojIyBPdmVycmlkaW5nIEhlbG0g" + - "Q2hhcnQgVmFsdWVzCgojIyMgRW52aXJvbm1lbnQgZmlsZSAobGltaXRlZCkKCldvcmtzIG9ubHkg" + - "Zm9yIGtleXMgdGhhdCBgZ2xvYmFsLnlhbWwuZ290bXBsYCBwcm9wYWdhdGVzIChlLmcuLCBgY2Fz" + - "c2FuZHJhLnJlcGxpY2FDb3VudGAsIGBnbG9iYWwuc3RvcmFnZUNsYXNzYCwgYGdsb2JhbC5pbWFn" + - "ZWApLgoKIyMjIFJlbGVhc2UgdmFsdWVzIGJsb2NrIChhbnkgY2hhcnQgdmFsdWUpCgpFZGl0IHRo" + - "ZSByZWxlYXNlIGluIGBoZWxtZmlsZS5kLyoueWFtbC5nb3RtcGxgIGFuZCBhZGQgYSBgdmFsdWVz" + - "OmAgYmxvY2suIEluIHRoZSBleGFtcGxlcyBiZWxvdywgYDxwcml2YXRlLXZhbHVlcz5gIHJlZmVy" + - "cyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxlIHN0YWNrIHJvb3Qu" + - "CgpgYGB5YW1sCi0gbmFtZTogY2Fzc2FuZHJhCiAgdmVyc2lvbjogMC44LjAKICBjb25kaXRpb246" + - "IGNhc3NhbmRyYS5lbmFibGVkCiAgbmFtZXNwYWNlOiBjYXNzYW5kcmEtc3lzdGVtCiAgPDw6ICpk" + - "ZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwKICAgIC0gLi4v" + - "PHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRz" + - "LnlhbWwKICAgIC0gY2Fzc2FuZHJhOgogICAgICAgIHJlc291cmNlczoKICAgICAgICAgIGxpbWl0" + - "czoKICAgICAgICAgICAgY3B1OiAiOCIKICAgICAgICAgICAgbWVtb3J5OiA4MTkyTWkKICAgICAg" + - "ICAgIHJlcXVlc3RzOgogICAgICAgICAgICBjcHU6ICIyIgogICAgICAgICAgICBtZW1vcnk6IDQw" + - "OTZNaQpgYGAKCllBTUwgbWVyZ2UgZ290Y2hhOiBXaGVuIGEgcmVsZWFzZSB1c2VzIGA8PDogKmRl" + - "cGVuZGVuY3lgIG9yIGBpbmhlcml0YCwgc3BlY2lmeWluZyBgdmFsdWVzOmAgcmVwbGFjZXMgdGhl" + - "IHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QuIFlvdSBtdXN0IHJlLWluY2x1ZGUgYGdsb2JhbC55YW1s" + - "LmdvdG1wbGAgYW5kIHRoZSBzZWNyZXRzIGZpbGUuCgojIyMgUHJldmlldyBhbmQgYXBwbHkgYSBz" + - "aW5nbGUgcmVsZWFzZQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxl" + - "Y3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSAgIyBQcmV2aWV3CkhFTE1GSUxFX0VOVj08ZW52" + - "PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMgICAgICAjIEFwcGx5CmBg" + - "YAoKIyMgSW1hZ2UgUHVsbCBTZWNyZXRzCgpUaGVyZSBhcmUgdGhyZWUgZGlzdGluY3QgY3JlZGVu" + - "dGlhbCB0eXBlcy4gRG8gbm90IGNvbmZsYXRlIHRoZW0sIGFuZCBtaW5kIHRoZQpmb3JtYXQgcnVs" + - "ZSBiZWxvdyAodHdvIG9mIHRoZW0gZmFpbCBldmVuIHdpdGggdGhlIGNvcnJlY3Qga2V5IGlmIHRo" + - "ZSBmb3JtYXQgaXMgd3JvbmcpOgoKfCB8IENvbnRyb2wgUGxhbmUgUHVsbCBTZWNyZXRzIHwgQVBJ" + - "IEJvb3RzdHJhcCBSZWdpc3RyeSBDcmVkcyB8IFNpZGVjYXIgSW1hZ2UtUHVsbCBTZWNyZXQgfAp8" + - "LS0tfC0tLXwtLS18LS0tfAp8IFB1cnBvc2UgfCBLOHMgcHVsbHMgTlZDRiBzZXJ2aWNlIGltYWdl" + - "cyB8IG52Y2YtYXBpIHZhbGlkYXRlcyB0aGUgdXNlciBmdW5jdGlvbiBpbWFnZSBhdCBgZnVuY3Rp" + - "b24gY3JlYXRlYCB8IG52Y2YtYXBpIHB1bGxzIHRoZSBwbGF0Zm9ybSBzaWRlY2FycyBpbmplY3Rl" + - "ZCBpbnRvIGV2ZXJ5IHdvcmtlciBwb2QgfAp8IFdoZXJlIHwgSzhzIGBkb2NrZXItcmVnaXN0cnlg" + - "IFNlY3JldHMgKyBLeXZlcm5vIENsdXN0ZXJQb2xpY3kgfCBgPHByaXZhdGUtdmFsdWVzPi88ZW52" + - "Pi1zZWNyZXRzLnlhbWxgIChhY2NvdW50LWJvb3RzdHJhcCkgfCBgTlZDRl9BUElfU0lERUNBUlNf" + - "SU1BR0VfUFVMTF9TRUNSRVRgIGluIGA8ZW52Pi1zZWNyZXRzLnlhbWxgIC0+IE9wZW5CYW8gYHNl" + - "cnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0YCAoZmllbGQgYHNl" + - "Y3JldGApIHwKfCBGb3JtYXQgfCBzdGFuZGFyZCBgLmRvY2tlcmNvbmZpZ2pzb25gIChrdWJlY3Rs" + - "IGJ1aWxkcyBpdCBmb3IgeW91KSB8IGBiYXNlNjQoIiRvYXV0aHRva2VuOjxrZXk+IilgIHwgYGJh" + - "c2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAgfAoKPiBOb3RlOiB0aGUgYWNjb3VudC1ib290c3Ry" + - "YXAgY3JlZCBhbmQgdGhlIHNpZGVjYXIgc2VjcmV0IGFyZSBOT1QgYQo+IGRvY2tlcmNvbmZpZ2pz" + - "b24uIFRoZSBzZWNyZXRzIHRlbXBsYXRlIHNoaXBzIHRoZSBwbGFjZWhvbGRlcgo+IGBSRVBMQUNF" + - "X1dJVEhfQkFTRTY0X0RPQ0tFUl9DUkVERU5USUFMYCwgd2hpY2ggcmVhZHMgYXMgImJhc2U2NCBv" + - "ZiBhIGRvY2tlcmNvbmZpZ2pzb24uIgo+IEl0IGlzbid0LiBCb3RoIHZhbHVlcyBhcmUgY29uc3Vt" + - "ZWQgYXMgYSByYXcgZG9ja2VyIGBhdXRoYCBzdHJpbmc6IG52Y2YtYXBpIHRha2VzIHRoZQo+IHZh" + - "bHVlIHZlcmJhdGltIGFuZCBkcm9wcyBpdCBpbnRvIHRoZSBgYXV0aGAgZmllbGQgb2YgdGhlIGRv" + - "Y2tlcmNvbmZpZyBpdCBidWlsZHMuIFNvIHRoZQo+IHZhbHVlIG11c3QgYmUgYGJhc2U2NCgiJG9h" + - "dXRodG9rZW46PGtleT4iKWAsIGUuZy4gYHByaW50ZiAnJG9hdXRodG9rZW46JXMnICIkS0VZIiB8" + - "IG9wZW5zc2wgYmFzZTY0IC1BYCwKPiBub3QgYGJhc2U2NCg8ZG9ja2VyY29uZmlnanNvbj4pYC4K" + - "Pgo+IC0gV3JvbmcgYWNjb3VudC1ib290c3RyYXAgdmFsdWU6IGBmdW5jdGlvbiBjcmVhdGVgIHJl" + - "dHVybnMKPiAgICBgNDAwICJtdXN0IGJlIGJhc2U2NCBlbmNvZGVkIHVzZXJuYW1lOnBhc3N3b3Jk" + - "IGZvcm1hdCJgLgo+IC0gV3Jvbmcgc2lkZWNhciB2YWx1ZTogZXZlcnkgd29ya2VyJ3Mgc2lkZWNh" + - "ciBwdWxsIGdldHMgYSBtYWxmb3JtZWQgY3JlZGVudGlhbCBhbmQKPiAgICBgNDAzYHMsIHJlZ2Fy" + - "ZGxlc3Mgb2Ygd2hpY2gga2V5IGlzIGluc2lkZS4gVGhlIHN5bXB0b20gbG9va3MgbGlrZSBhIGJh" + - "ZCBvciB3cm9uZy1vcmcKPiAgICBrZXksIGJ1dCB0aGUga2V5IGlzIGZpbmUgYW5kIHRoZSBlbmNv" + - "ZGluZyBpcyB0aGUgYnVnLiBUbyByZXBhaXIgYW4gYWxyZWFkeS1pbnN0YWxsZWQKPiAgICBzdGFj" + - "ayB3aXRob3V0IGEgZnVsbCByZS1zeW5jOgo+Cj4gICAgYGBgYmFzaAo+ICAgIEFVVEg9JChwcmlu" + - "dGYgJyRvYXV0aHRva2VuOiVzJyAiJEtFWSIgfCBvcGVuc3NsIGJhc2U2NCAtQSkKPiAgICBiYW8g" + - "a3YgcHV0IHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0IHNl" + - "Y3JldD0iJEFVVEgiCj4gICAgIyBpZiBOVklESUEgQ2xvdWQgVGFza3MgaXMgZW5hYmxlZCwgcmVw" + - "ZWF0IGZvciBzZXJ2aWNlcy9udmN0LWFwaS9rdi9zaWRlY2Fycy9pbWFnZS1wdWxsLXNlY3JldAo+" + - "ICAgIGt1YmVjdGwgcm9sbG91dCByZXN0YXJ0IC1uIG52Y2YgZGVwbG95L252Y2YtYXBpICAgIyBw" + - "aWNrcyB1cCB0aGUgbmV3IHNpZGVjYXIgY3JlZAo+ICAgIGBgYAo+Cj4gTm90ZSAobXVsdGktb3Jn" + - "KTogd2hlbiBwdWxsaW5nIGZyb20gTkdDIChub3QgYSBtaXJyb3IpLCB0aGUgdXNlciBmdW5jdGlv" + - "biBpbWFnZSBhbmQKPiB0aGUgcGxhdGZvcm0gc2lkZWNhcnMgb2Z0ZW4gbGl2ZSBpbiBkaWZmZXJl" + - "bnQgbnZjci5pbyBvcmdzLCBlYWNoIG5lZWRpbmcgYSBkaWZmZXJlbnQKPiBrZXksIHNvIHRoZSBh" + - "Y2NvdW50LWJvb3RzdHJhcCBjcmVkIChmdW5jdGlvbiBpbWFnZSkgYW5kIHRoZSBzaWRlY2FyIHNl" + - "Y3JldCAoc2lkZWNhcnMpCj4gYXJlIGZyZXF1ZW50bHkgdHdvIGRpZmZlcmVudCBrZXlzLiBNaXJy" + - "b3JpbmcgZXZlcnl0aGluZyBpbnRvIGEgc2luZ2xlIHJlZ2lzdHJ5IHRoZQo+IGNsdXN0ZXIgYXV0" + - "aGVudGljYXRlcyB0byBhdXRvbWF0aWNhbGx5IGNvbGxhcHNlcyB0aGlzIHRvIG9uZSBjcmVkZW50" + - "aWFsIHBhdGguCgojIyMgQ29uZmlndXJpbmcgd2l0aCBLeXZlcm5vIChyZWNvbW1lbmRlZCkKClVz" + - "ZSBhIEt5dmVybm8gbXV0YXRpbmcgYWRtaXNzaW9uIHBvbGljeSB0byBhdXRvbWF0aWNhbGx5IGlu" + - "amVjdCBgaW1hZ2VQdWxsU2VjcmV0c2AgaW50byBhbGwgcG9kcyBpbiBOVkNGIG5hbWVzcGFjZXMu" + - "IFRoaXMgd29ya3MgdW5pZm9ybWx5IGZvciBhbGwgY2hhcnRzIC0tIG5vIHBlci1jaGFydCBjb25m" + - "aWd1cmF0aW9uIG9yIGhlbG1maWxlIG1vZGlmaWNhdGlvbnMgbmVlZGVkLgoKYGBgYmFzaAojIDEu" + - "IEluc3RhbGwgS3l2ZXJubwpoZWxtIHJlcG8gYWRkIGt5dmVybm8gaHR0cHM6Ly9reXZlcm5vLmdp" + - "dGh1Yi5pby9reXZlcm5vLwpoZWxtIHJlcG8gdXBkYXRlCmhlbG0gaW5zdGFsbCBreXZlcm5vIGt5" + - "dmVybm8va3l2ZXJubyAtbiBreXZlcm5vIC0tY3JlYXRlLW5hbWVzcGFjZQoKIyAyLiBDcmVhdGUg" + - "cHVsbCBzZWNyZXQgaW4gZWFjaCBuYW1lc3BhY2UKZXhwb3J0IE5HQ19BUElfS0VZPSI8eW91ci1r" + - "ZXk+Igpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlz" + - "IGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIGNyZWF0ZSBz" + - "ZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogICAgLS1kb2NrZXItc2VydmVyPW52" + - "Y3IuaW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgICAtLWRvY2tl" + - "ci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5hbWVzcGFjZT0iJG5zIiBcCiAgICAt" + - "LWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KZG9uZQoKIyAzLiBB" + - "cHBseSB0aGUgS3l2ZXJubyBDbHVzdGVyUG9saWN5Cmt1YmVjdGwgYXBwbHkgLWYga3l2ZXJuby1p" + - "bWFnZXB1bGxzZWNyZXQtcG9saWN5LnlhbWwKYGBgCgpUaGUgcG9saWN5IG11dGF0ZXMgZXZlcnkg" + - "cG9kIGF0IGFkbWlzc2lvbiB0aW1lLCBhZGRpbmcgYGltYWdlUHVsbFNlY3JldHM6IFt7bmFtZTog" + - "bnZjci1jcmVkc31dYC4gVmVyaWZ5IHdpdGg6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZCAtbiA8" + - "bmFtZXNwYWNlPiA8cG9kLW5hbWU+IC1vIGpzb25wYXRoPSd7LnNwZWMuaW1hZ2VQdWxsU2VjcmV0" + - "c30nCiMgU2hvdWxkIHNob3c6IFt7Im5hbWUiOiJudmNyLWNyZWRzIn1dCmBgYAoKTm90IG5lZWRl" + - "ZCBpZiB1c2luZyBhIENTUCBidWlsdC1pbiBjcmVkZW50aWFsIGhlbHBlciAoZS5nLiwgRUNSIHdp" + - "dGggSUFNIG5vZGUgcm9sZXMpLgoKRm9yIHRoZSBLeXZlcm5vIHBvbGljeSBZQU1MIGFuZCBwdWxs" + - "IHNlY3JldCBjcmVhdGlvbiBzY3JpcHQsIHNlZSBbcmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWRd" + - "KHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKS4KCiMjIERlYnVnZ2luZwoKIyMjIFF1aWNrIHN0" + - "YXR1cyBjaGVjawoKYGBgYmFzaAprdWJlY3RsIGdldCBwb2RzIC1BIC1vIHdpZGUgICAgICAgICAg" + - "ICAgICAgICAgICAgICAjIEFsbCBwb2RzCmhlbG0gbGlzdCAtQSAgICAgICAgICAgICAgICAgICAg" + - "ICAgICAgICAgICAgICAgICAgICAjIEFsbCBoZWxtIHJlbGVhc2VzCmt1YmVjdGwgZ2V0IGV2ZW50" + - "cyAtbiA8bnM+IC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAnICAjIFJlY2VudCBldmVudHMKYGBg" + - "CgojIyMgQ29tbW9uIGZhaWx1cmUgcGF0dGVybnMKCnwgU3ltcHRvbSB8IENhdXNlIHwgRml4IHwK" + - "fC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tfAp8IGBJbWFnZVB1bGxCYWNrT2ZmYCArIGA0MDEgVW5h" + - "dXRob3JpemVkYCB8IE1pc3Npbmcgb3Igd3JvbmcgcHVsbCBzZWNyZXQgfCBDaGVjayBzZWNyZXQg" + - "ZXhpc3RzLCBjaGVjayBTQSBoYXMgaW1hZ2VQdWxsU2VjcmV0cyB8CnwgYEluaXQ6MC8xYCBzdHVj" + - "ayBvbiBzZXJ2aWNlIHBvZHMgfCBWYXVsdC1hZ2VudCB3YWl0aW5nIGZvciBPcGVuQmFvIHwgQ2hl" + - "Y2sgT3BlbkJhbyBwb2RzICsgbWlncmF0aW9uIGpvYiBzdGF0dXMgfAp8IGBJbml0OjAvMWAgKyBg" + - "dmF1bHQtYWdlbnQtaW5pdGAgc2hvd3MgYGF1dGgvand0L2xvZ2luYCAtPiBgNDAwIC4uLiBubyBr" + - "bm93biBrZXkgc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlZCB0aGUgdG9rZW4gc2lnbmF0dXJlYCB8IE9w" + - "ZW5CYW8gSldUIGF1dGggY29uZmlndXJlZCB3aXRoIGEgc3RhdGljIHB1YmtleSBpbnN0ZWFkIG9m" + - "IHRoZSBjbHVzdGVyJ3MgbGl2ZSBKV0tTIC0tIHRoZSBiYXNlIGRlZmF1bHQgYG9wZW5iYW8ubWln" + - "cmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2VgLiBDb21tb24gb24gQUtTIC8g" + - "YW55IE9JREMtaXNzdWVyIGNsdXN0ZXIgfCBTZXQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJE" + - "aXNjb3ZlcnkuZW5hYmxlZDogdHJ1ZWAsIGRlbGV0ZSBqb2IgYG9wZW5iYW8tc2VydmVyLW1pZ3Jh" + - "dGlvbnNgLCByZS1zeW5jIGBvcGVuYmFvLXNlcnZlcmAuIFNlZSBbcmVmZXJlbmNlcy9kZWJ1Z2dp" + - "bmcubWRdKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kKSAiSW5pdDowLzEgU3R1Y2siIGZpeCAjNC4g" + - "fAp8IGBPT01LaWxsZWRgIG9uIENhc3NhbmRyYSB8IERlZmF1bHQgcmVzb3VyY2VzIHRvbyBzbWFs" + - "bCB8IE92ZXJyaWRlIGBjYXNzYW5kcmEucmVzb3VyY2VzYCB2aWEgdmFsdWVzIGJsb2NrIHwKfCBE" + - "Qi1iYWNrZWQgc2VydmljZXMgY3Jhc2gtbG9vcCBgQmFkIGNyZWRlbnRpYWxzYCBjb25uZWN0aW5n" + - "IHRvIENhc3NhbmRyYSB8IFNlY3JldHMgZmlsZSBzZXQgb25seSBgREVGQVVMVF9DQVNTQU5EUkFf" + - "UEFTU1dPUkRgOyBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHN0aWxsIGRlZmF1bHRz" + - "IHRvIGBjaEBuZzNtM2AgfCBTZXQgYGNhc3NhbmRyYS5zZXJ2aWNlUm9sZVBhc3N3b3JkYCBpbiB0" + - "aGUgc2VjcmV0cyBmaWxlIGVxdWFsIHRvIGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAsIHRo" + - "ZW4gcmUtc3luYyBjYXNzYW5kcmEgKyB0aGUgREItYmFja2VkIHNlcnZpY2VzIHwKfCBgUGVuZGlu" + - "Z2AgcG9kcyB8IE5vZGUgc2VsZWN0b3IgbWlzbWF0Y2ggb3Igbm8gc3RvcmFnZSBjbGFzcyB8IGBr" + - "dWJlY3RsIGRlc2NyaWJlIHBvZGAsIGNoZWNrIGxhYmVscyBhbmQgc3RvcmFnZSB8CnwgSGVsbSBy" + - "ZWxlYXNlIGluIGBmYWlsZWRgIHN0YXRlIHwgRmlyc3QgaW5zdGFsbCBmYWlsZWQgcGFydHdheSB8" + - "IGBoZWxtZmlsZSBkZXN0cm95YCB0aGUgcmVsZWFzZSwgdGhlbiBgc3luY2AgYWdhaW4gfAp8IEFj" + - "Y291bnQgYm9vdHN0cmFwIHRpbWVvdXQgfCBXcm9uZyBiYXNlNjQgY3JlZGVudGlhbHMgaW4gc2Vj" + - "cmV0cyBmaWxlIHwgQ2hlY2sgYGt1YmVjdGwgbG9ncyBqb2IvbnZjZi1hcGktYWNjb3VudC1ib290" + - "c3RyYXAgLW4gbnZjZmAgfAp8IGZ1bmN0aW9uIC8gYWNjb3VudCBjYWxscyByZXR1cm4gYDQwNCBV" + - "bmtub3duIGNsaWVudF9pZGAgfCBUaGUgYWNjb3VudC1ib290c3RyYXAgcG9zdC1pbnN0YWxsIGhv" + - "b2sgbmV2ZXIgcmFuOiB0aGUgYGFwaWAgcmVsZWFzZSBpbnN0YWxsIGZhaWxlZCwgb3Igd2FzIHJl" + - "cGFpcmVkIHdpdGggbGl2ZSBwYXRjaGVzIGluc3RlYWQgb2YgYSBjbGVhbiByZS1zeW5jLCBzbyB0" + - "aGUgaG9vayAoYW5kIHRoZSBhY2NvdW50KSB3YXMgc2tpcHBlZCB8IFZlcmlmeSBhbmQgcmUtcnVu" + - "IHRoZSBob29rOyBzZWUgW1ZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAgcmFuXSgjdmVyaWZ5" + - "LXRoZS1hY2NvdW50LWJvb3RzdHJhcC1yYW4pIHwKfCBTZXJ2aWNlcyBmYWlsIHRvIHJlYWQgdmF1" + - "bHQgc2VjcmV0czsgYHNlY3JldHMuanNvbmAgbm90IGZvdW5kIHwgVmF1bHQgcGF0aCBoYXJkY29k" + - "ZWQgdG8gYC9ob21lL2FwcC92YXVsdC9gIGluIGBfaGVscGVycy50cGxgOyB0aGUgcnVudGltZSBy" + - "ZXNvbHZlcyB0aGUgbW91bnRlZCBwYXRoIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9y" + - "eSBhbmQgZHJvcHMgdGhlIGxlYWRpbmcgYC9gIHwgT3ZlcnJpZGUgYHBvZEFubm90YXRpb25zYCBh" + - "bmQgc2V0IGBKQVZBX1RPT0xfT1BUSU9OUzogIi1EdXNlci5kaXI9LyJgIGluIHJlbGVhc2UgdmFs" + - "dWVzIHwKfCBOQVRTIGNvbm5lY3Rpb24gZmFpbHMgYXQgc3RhcnR1cDsgcGxhY2VtZW50IHRhZyBt" + - "aXNtYXRjaCB8IE5BVFMgc2VydmVyIHRhZ3MgaGFyZGNvZGVkIHRvIGBkYzpuY3BgOyBhcHAgZGVy" + - "aXZlcyB0YWcgZnJvbSBgQVdTX1JFR0lPTmAgKGUuZy4sIGB1cy1nb3Ytd2VzdC0xYCkgfCBTZXQg" + - "YEFXU19SRUdJT049bmNwYCBhbmQgYE5WQ0ZfQVdTX1JFR0lPTj1uY3BgIGluIGVudiBjb25maWcg" + - "fAoKIyMjIFZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAgcmFuCgpUaGUgZGVmYXVsdCBhY2Nv" + - "dW50IGlzIGNyZWF0ZWQgYnkgYSAqKmBwb3N0LWluc3RhbGxgIGhvb2sgb24gdGhlIGBhcGlgIHJl" + - "bGVhc2UqKgooYGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcGAgaW4gYG52Y2ZgKS4gQmVj" + - "YXVzZSBpdCBpcyBhIHBvc3QtaW5zdGFsbCBob29rLCBpdCBvbmx5CmZpcmVzIG9uIGEgc3VjY2Vz" + - "c2Z1bCBgYXBpYCBpbnN0YWxsLiBJZiB0aGF0IGluc3RhbGwgZmFpbGVkIGFuZCB5b3UgcmVwYWly" + - "ZWQgaXQgd2l0aCBsaXZlCnBhdGNoZXMgKHJhdGhlciB0aGFuIGEgY2xlYW4gcmUtc3luYyksIHRo" + - "ZSBob29rIG5ldmVyIHJ1bnMsIG5vIGFjY291bnQgaXMgY3JlYXRlZCwgYW5kCmV2ZXJ5IHN1YnNl" + - "cXVlbnQgZnVuY3Rpb24vYWNjb3VudCBjYWxsIHJldHVybnMgYSBjcnlwdGljIGA0MDQgVW5rbm93" + - "biBjbGllbnRfaWRgIHdpdGgKbm90aGluZyBvYnZpb3VzbHkgd3JvbmcgaW4gdGhlIHJ1bm5pbmcg" + - "cG9kcy4KClZlcmlmeSBpdCByYW4gYWZ0ZXIgdGhlIGZpcnN0IHN5bmM6CgpgYGBiYXNoCmt1YmVj" + - "dGwgZ2V0IGpvYiAtbiBudmNmIG52Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIFwKICAtbyBqc29u" + - "cGF0aD0ney5zdGF0dXMuc3VjY2VlZGVkfScgICAjIGV4cGVjdCAxCmBgYAoKSWYgdGhlIGpvYiBp" + - "cyBhYnNlbnQgb3IgYDBgLCByZS1ydW4gaXQgYnkgcmUtc3luY2luZyB0aGUgYGFwaWAgcmVsZWFz" + - "ZSBzbyB0aGUgaG9vayBmaXJlcwphZ2FpbiAoZGVsZXRlIHRoZSBwcmlvciBqb2IgZmlyc3QgaWYg" + - "aXQgbGluZ2VycyBpbiBhIGNvbXBsZXRlZC9mYWlsZWQgc3RhdGUgYW5kIGJsb2NrcyB0aGUKaG9v" + - "ayk6CgpgYGBiYXNoCmt1YmVjdGwgZGVsZXRlIGpvYiAtbiBudmNmIG52Y2YtYXBpLWFjY291bnQt" + - "Ym9vdHN0cmFwIC0taWdub3JlLW5vdC1mb3VuZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUg" + - "LS1zZWxlY3RvciBuYW1lPWFwaSBzeW5jCmt1YmVjdGwgbG9ncyAtbiBudmNmIGpvYi9udmNmLWFw" + - "aS1hY2NvdW50LWJvb3RzdHJhcCAgICMgY29uZmlybSB0aGUgYWNjb3VudCB3YXMgY3JlYXRlZApg" + - "YGAKCiMjIEFkZGl0aW9uYWwgUmVzb3VyY2VzCgotIEluc3RhbGxhdGlvbjogW2V4YW1wbGVzLm1k" + - "XShleGFtcGxlcy5tZCksIHRoZSBbQ1NQIEVuZC10by1FbmQgRXhhbXBsZV0oaHR0cHM6Ly9kb2Nz" + - "Lm52aWRpYS5jb20vbnZjZi92MC42LjAtcmMvY3NwLWVuZC10by1lbmQtZXhhbXBsZSksIGFuZCBb" + - "c3BsaXQgY29tcHV0ZS1wbGFuZSB3b3JrZmxvd3NdKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1p" + - "bnN0YWxsYXRpb24ubWQpCi0gT3BlcmF0aW9uczogW0hlbG1maWxlIHN0cnVjdHVyZV0ocmVmZXJl" + - "bmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWQpLCBbcHVsbCBzZWNyZXRzXShyZWZlcmVuY2VzL3B1" + - "bGwtc2VjcmV0cy5tZCksIGFuZCBbZGVidWdnaW5nXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCkK" + - "CkFmdGVyIGRlcGxveW1lbnQsIHVzZSB0aGUgYG52Y2Ytc2VsZi1tYW5hZ2VkLWNsaWAgc2tpbGwg" + - "dG8gY3JlYXRlIGZ1bmN0aW9ucywgY3JlYXRlIHRhc2tzLCBtYW5hZ2UgQVBJIGtleXMsIGFuZCBp" + - "bnZva2UgZW5kcG9pbnRzLgpQSwcIEcMUk0liAABJYgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAA" + - "AAA0AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXZhbHMvZXZhbHMuanNv" + - "blVUBQABAKbOElsKICB7CiAgICAiaWQiOiAiRzEtdmFsaWRhdGUtdG9vbC12ZXJzaW9ucyIsCiAg" + - "ICAicXVlc3Rpb24iOiAiSW5zdGFsbCB0aGUgTlZDRiBzZWxmLW1hbmFnZWQgc3RhY2sgb24gbXkg" + - "QVdTIEVLUyBjbHVzdGVyIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdl" + - "ZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQncyBmaXJzdCBv" + - "cGVyYXRpb25hbCBzdGVwIGFmdGVyIHJlYWRpbmcgdGhlIHNraWxsIHdhcyB0byB2YWxpZGF0ZSBh" + - "bGwgcmVxdWlyZWQgdG9vbCB2ZXJzaW9uczogaGVsbWZpbGUgKG11c3QgYmUgMS4xLngsIG5vdCAx" + - "LjIuMCksIGhlbG0gKD49IDMuMTIpLCBoZWxtLWRpZmYgcGx1Z2luICg+PSAzLjExKSwgYW5kIGt1" + - "YmVjdGwgKGNsaWVudCB3aXRoaW4gMSBtaW5vciBvZiBjbHVzdGVyKS4gSXQgZGlkIG5vdCBwcm9j" + - "ZWVkIHRvIGhlbG1maWxlIHN5bmMgdW50aWwgYWxsIHZlcnNpb25zIHdlcmUgdmFsaWRhdGVkLiIs" + - "CiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZj" + - "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYW55IGFj" + - "dGlvbiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtZmlsZSAtLXZlcnNpb24nIGFuZCB2ZXJp" + - "ZmllZCBpdCBpcyAxLjEueCAobm90IDEuMi4wLCB3aGljaCByZW1vdmVkIHNlcXVlbnRpYWwgbW9k" + - "ZSkiLAogICAgICAiVGhlIGFnZW50IHJhbiAnaGVsbSB2ZXJzaW9uJyBhbmQgdmVyaWZpZWQgaXQg" + - "aXMgPj0gMy4xMiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHBsdWdpbiBsaXN0JyBhbmQg" + - "dmVyaWZpZWQgaGVsbS1kaWZmID49IDMuMTEgaXMgaW5zdGFsbGVkIiwKICAgICAgIlRoZSBhZ2Vu" + - "dCByYW4gJ2t1YmVjdGwgdmVyc2lvbicgdG8gY2hlY2sgY2xpZW50L3NlcnZlciB2ZXJzaW9uIGNv" + - "bXBhdGliaWxpdHkiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgcHJvY2VlZCB0byBoZWxtZmls" + - "ZSBzeW5jIHVudGlsIGFsbCB2ZXJzaW9uIGNoZWNrcyBwYXNzZWQiCiAgICBdCiAgfSwKICB7CiAg" + - "ICAiaWQiOiAiRzItdGVtcGxhdGUtYmVmb3JlLXN5bmMiLAogICAgInF1ZXN0aW9uIjogIlF1aWNr" + - "LCBqdXN0IHJ1biBoZWxtZmlsZSBzeW5jIGZvciBteSBOVkNGIHN0YWNrLCBza2lwIGFsbCB0aGUg" + - "Y2hlY2tzIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + - "YXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJEZXNwaXRlIHRoZSB1c2VyIGFza2luZyB0byBz" + - "a2lwIGNoZWNrcywgdGhlIGFnZW50IHN0aWxsIHJhbiBoZWxtZmlsZSB0ZW1wbGF0ZSB0byBwcmV2" + - "aWV3IHJlbmRlcmVkIG1hbmlmZXN0cyBiZWZvcmUgcnVubmluZyBoZWxtZmlsZSBzeW5jLiBJdCBl" + - "eHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAgaXMgaW1wb3J0YW50IGFuZCBkaWQgbm90IGJs" + - "aW5kbHkgZXhlY3V0ZSBzeW5jLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJU" + - "aGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1k" + - "IGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG1maWxlIHRl" + - "bXBsYXRlJyBvciAnaGVsbWZpbGUgLS1zZWxlY3RvciAuLi4gdGVtcGxhdGUnIHRvIHByZXZpZXcg" + - "bWFuaWZlc3RzIGJlZm9yZSBzeW5jIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IGJsaW5kbHkg" + - "cnVuICdoZWxtZmlsZSBzeW5jJyB3aXRob3V0IGEgdGVtcGxhdGUgcHJldmlldyBzdGVwIiwKICAg" + - "ICAgIlRoZSBhZ2VudCBleHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAgaXMgaW1wb3J0YW50" + - "IGV2ZW4gd2hlbiBhc2tlZCB0byBza2lwIGl0IgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc1" + - "LWRyeXJ1bi1iZWZvcmUtY2xlYW51cCIsCiAgICAicXVlc3Rpb24iOiAiTlZDRiBuYW1lc3BhY2Vz" + - "IGFyZSBzdHVjayBpbiBUZXJtaW5hdGluZyBzdGF0ZS4gQ2xlYW4gdGhlbSB1cC4iLAogICAgImV4" + - "cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3Jv" + - "dW5kX3RydXRoIjogIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoZSBzdHVjayBuYW1lc3BhY2VzIHdl" + - "cmUgY2F1c2VkIGJ5IGZpbmFsaXplcnMgb24gTlZDRkJhY2tlbmQgY3VzdG9tIHJlc291cmNlcy4g" + - "SXQgcmVtb3ZlZCBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3VyY2VzIGZpcnN0LCB0" + - "aGVuIGNsZWFyZWQgbmFtZXNwYWNlIGZpbmFsaXplcnMgdG8gZm9yY2UtZGVsZXRlIHRoZSBzdHVj" + - "ayBuYW1lc3BhY2VzLiBJdCBvbmx5IHRhcmdldGVkIE5WQ0YtbWFuYWdlZCBuYW1lc3BhY2VzIChu" + - "dmNhLW9wZXJhdG9yLCBudmNmLWJhY2tlbmQpIGFuZCBkaWQgbm90IHRvdWNoIG90aGVyIGNsdXN0" + - "ZXIgcmVzb3VyY2VzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdl" + - "bnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9y" + - "ZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBjb25maXJtZWQgYW5kIHVzZWQgdGhl" + - "IGNvbXB1dGUtcGxhbmUgY29udGV4dCBmb3IgYWxsIGNsZWFudXAgY29tbWFuZHMiLAogICAgICAi" + - "VGhlIGFnZW50IHVzZWQga3ViZWN0bCB0byBwYXRjaCBOVkNGQmFja2VuZCByZXNvdXJjZXMgdG8g" + - "cmVtb3ZlIHRoZWlyIGZpbmFsaXplcnMiLAogICAgICAiVGhlIGFnZW50IHVzZWQga3ViZWN0bCBy" + - "ZXBsYWNlIC0tcmF3IHRvIGNsZWFyIG5hbWVzcGFjZSBmaW5hbGl6ZXJzIG9uIHN0dWNrIG5hbWVz" + - "cGFjZXMiLAogICAgICAiVGhlIGFnZW50IG9ubHkgdGFyZ2V0ZWQgTlZDRi1tYW5hZ2VkIG5hbWVz" + - "cGFjZXMgKG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkgYW5kIGRpZCBub3QgdG91Y2ggb3Ro" + - "ZXIgY2x1c3RlciByZXNvdXJjZXMiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QganVtcCBkaXJl" + - "Y3RseSB0byBuYW1lc3BhY2UgZGVsZXRpb24gd2l0aG91dCBmaXJzdCByZW1vdmluZyBmaW5hbGl6" + - "ZXJzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc2LWhlbG1maWxlLXNwbGl0LXdvcmtmbG93" + - "IiwKICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIGFuIE5WQ0YgY29udHJvbCBwbGFuZSBhbmQgYSBz" + - "ZXBhcmF0ZSBFS1MgY29tcHV0ZSBwbGFuZSB1c2luZyB0aGUgSGVsbWZpbGUgc3RhY2tzLiBUaGUg" + - "Y29tcHV0ZSBjbHVzdGVyIGt1YmVjb25maWcgaXMgY29tcHV0ZS55YW1sLiIsCiAgICAiZXhwZWN0" + - "ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRf" + - "dHJ1dGgiOiAiVGhlIGFnZW50IGtlcHQgdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93IGluZGVwZW5k" + - "ZW50IGZyb20gdGhlIENMSSBwcm9maWxlIGZsb3cuIEl0IGF1dGhvcmVkIHNlcGFyYXRlIGNvbnRy" + - "b2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZXMgcGx1cyBhIGJhcmUt" + - "R2F0ZXdheSBDTEkgY29uZmlnIHdpdGggVVJMIGFuZCBzY2hlbWUtbGVzcyBIb3N0IGZpZWxkcywg" + - "aW5zdGFsbGVkIHRoZSBjb250cm9sIHBsYW5lLCByYW4gdGhlIGNvbXB1dGUtcGxhbmUgTWFrZWZp" + - "bGUgcmVnaXN0ZXItY2x1c3RlciB0YXJnZXQgd2l0aCBJQ01TX1VSTCBhbmQgdGhlIGNvbXB1dGUg" + - "a3ViZWNvbmZpZywgdGhlbiByYW4gdGhlIGNvbXB1dGUtcGxhbmUgaW5zdGFsbCB0YXJnZXQgd2l0" + - "aCB0aGUgc2FtZSBlbnZpcm9ubWVudCBhbmQga3ViZWNvbmZpZy4gSXQgcmVsaWVkIG9uIHJlZ2lz" + - "dHJhdGlvbiB0byBkaXNjb3ZlciBPSURDIGFuZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUgY29udGV4" + - "dC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhl" + - "IG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFj" + - "dGlvbiIsCiAgICAgICJUaGUgYWdlbnQgYXV0aG9yZWQgc2VwYXJhdGUgZW52aXJvbm1lbnRzLzxl" + - "bnY+LnlhbWwgZmlsZXMgdW5kZXIgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgYW5kIGRlcGxv" + - "eS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIiwKICAgICAgIlRoZSBhZ2VudCBpbnN0YWxsZWQg" + - "dGhlIGNvbnRyb2wgcGxhbmUgYmVmb3JlIHJlZ2lzdGVyaW5nIG9yIGluc3RhbGxpbmcgdGhlIGNv" + - "bXB1dGUgcGxhbmUiLAogICAgICAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgYmFzZV9odHRwX3VybCwg" + - "aW52b2tlX3VybCwgYmFzZV9ncnBjX3VybCwgYXBpX2tleXNfc2VydmljZV91cmwsIGljbXNfdXJs" + - "LCBhcGlfaG9zdCwgYXBpX2tleXNfaG9zdCwgaW52b2tlX2hvc3QsIGFuZCBpY21zX2hvc3QgZm9y" + - "IHRoZSBiYXJlIEdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50IHVzZWQgJ21ha2UgLUMgZGVwbG95" + - "L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVnaXN0ZXItY2x1c3Rlcicgd2l0aCBDTFVTVEVS" + - "X05BTUUsIE5DQV9JRCwgQ0xVU1RFUl9SRUdJT04sIElDTVNfVVJMLCBhbmQgS1VCRUNPTkZJR19G" + - "SUxFPWNvbXB1dGUueWFtbCIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnbWFrZSAtQyBkZXBsb3kv" + - "c3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBpbnN0YWxsJyB3aXRoIENMVVNURVJfTkFNRSwgSEVM" + - "TUZJTEVfRU5WLCBhbmQgS1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFtbCIsCiAgICAgICJUaGUg" + - "YWdlbnQgc3RhdGVkIHRoYXQgSUNNU19VUkwgbWFwcyBvbmx5IHRvIC0taWNtcy11cmwsIGNvbmZp" + - "ZyBpY21zX2hvc3Qgc3VwcGxpZXMgdGhlIEhvc3QgaGVhZGVyLCB0aGVyZSBpcyBubyAtLWljbXMt" + - "aG9zdCBNYWtlIG9yIENMSSBmbGFnLCBhbmQgcmVnaXN0cmF0aW9uIGRpc2NvdmVycyBPSURDIGFu" + - "ZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUgY29udGV4dCIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5v" + - "dCByZXF1aXJlIGEgY29udHJvbC1wbGFuZSBwcm9maWxlIGZvciB0aGlzIGZsb3cgYW5kIGRpZCBu" + - "b3QgbWl4IGluIENMSSBwcm9maWxlIGNvbW1hbmRzIgogICAgXQogIH0sCiAgewogICAgImlkIjog" + - "Ikc3LWJvdGgtZG9ja2VyLWhlbG0tYXV0aCIsCiAgICAicXVlc3Rpb24iOiAiQXV0aGVudGljYXRl" + - "IHRvIE5HQyBmb3IgTlZDRiBoZWxtZmlsZSBkZXBsb3ltZW50IiwKICAgICJleHBlY3RlZF9za2ls" + + "QU1MIHBhcnNlIGVycm9yIHwKfCBgMmAgfCBQcmUtZmxpZ2h0IGNoZWNrIGZhaWxlZCB8IEEgYGNo" + + "ZWNrYCByZXN1bHQgYXQgZXJyb3Igc2V2ZXJpdHk6IEdhdGV3YXkgQVBJIENSRHMgbWlzc2luZzsg" + + "a3ViZWN0bCBub3Qgb24gUEFUSDsgZGVmYXVsdCBTdG9yYWdlQ2xhc3MgYWJzZW50LiBXYXJuaW5n" + + "LXNldmVyaXR5IHJlc3VsdHMsIHN1Y2ggYXMgYSB2YWxpZGF0b3IgdGhhdCBjb3VsZCBub3QgcnVu" + + "LCBleGl0IGAwYCB8CnwgYDNgIHwgQWRtaW4gYXV0aCBmYWlsZWQgfCBObyB0b2tlbiArIGAtLW5v" + + "bi1pbnRlcmFjdGl2ZWAgc2V0OyBJQ01TIHJlamVjdGVkIEpXVDsgaW5pdCBlbmRwb2ludCB1bnJl" + + "YWNoYWJsZSB8CnwgYDVgIHwgTWFuaWZlc3QgYXBwbHkgb3IgYC0td2FpdGAgdGltZWQgb3V0IHwg" + + "SGVsbSBpbnN0YWxsIHRpbWVvdXQ7IGNoZWNrIHBvbGxlZCBidXQgZGlkbid0IHBhc3MgYmVmb3Jl" + + "IGR1cmF0aW9uIHwKfCBgMTMwYCB8IENhbmNlbGxlZCBieSBTSUdJTlQvU0lHVEVSTSB8IFVzZXIg" + + "Q3RybC1DOyBDSSBidWRnZXQgZXhjZWVkZWQ7IHBvZCBldmljdGVkIHwKCiMjIEhvdyBhbiBhZ2Vu" + + "dCBzaG91bGQgcmVhY3QKCnwgQ29kZSB8IEFnZW50IGJlaGF2aW9yIHwKfC0tLXwtLS18CnwgYDBg" + + "IHwgQ29udGludWUgLyByZXBvcnQgc3VjY2Vzcy4gfAp8IGAxYCB8IFN1cmZhY2Ugc3RkZXJyIHRv" + + "IHVzZXI7IGFzayBiZWZvcmUgYW55IHJldHJ5LiBHZW5lcmljIGVycm9ycyB1c3VhbGx5IG5lZWQg" + + "YSBodW1hbiB0byByZWFkIHRoZSBtZXNzYWdlLiB8CnwgYDJgIHwgU3VyZmFjZSBmYWlsZWQgY2hl" + + "Y2tzICsgdGhlaXIgYGhpbnRVUkxgLiBEb24ndCBwcm9wb3NlIGB1cGAgdW50aWwgdGhlIHVzZXIg" + + "Zml4ZXMgcHJlcmVxcy4gfAp8IGAzYCB8IFN1Z2dlc3QgYG52Y2YtY2xpIGluaXRgIChpbnRlcmFj" + + "dGl2ZSkgT1IgYC0tdG9rZW49JEpXVGAgKENJKS4gRG9uJ3QgYXV0by1taW50IHdpdGhvdXQgdXNl" + + "ciBPSy4gfAp8IGA1YCB8IEFzayB1c2VyIGlmIHRoZXkgd2FudCB0byB3YWl0IGxvbmdlciwgZGln" + + "IGludG8gdGhlIHN0YWxsZWQgY29tcG9uZW50LCBvciBjYW5jZWwuIHwKfCBgMTMwYCB8IERvbid0" + + "IHJldHJ5IGF1dG9tYXRpY2FsbHk7IHVzZXIgZXhwbGljaXRseSBjYW5jZWxsZWQuIENvbmZpcm0g" + + "YmVmb3JlIHJlLXJ1bm5pbmcuIHwKCiMjIFdoZXJlIHRvIGZpbmQgbW9yZSBkZXRhaWwKCmBjaGVj" + + "a2AgcmVwb3J0cyBpdHMgb3V0Y29tZSBpbiBvbmUgYGZpbmFsYCBldmVudCAoYHN1Y2Nlc3NgLCBg" + + "dmVyZGljdGAsIGBmYWlsZWRDb3VudGApIGFuZCBuZXZlciBlbWl0cyBgcGhhc2VfZmFpbGVkYDsg" + + "c2VlIGBleGFtcGxlcy9jaS1waXBlbGluZXMubWRgLiBFdmVyeSBvdGhlciBub24temVybyBleGl0" + + "IGVtaXRzIGEgc3RydWN0dXJlZCBgcGhhc2VfZmFpbGVkYCBKU09OIGV2ZW50IHdpdGggYGVyckNh" + + "dGVnb3J5YCwgYGVyck1lc3NhZ2VgLCBgcmVtZWRpYXRpb25gIChhcnJheSksIGByZXRyeUNsYXNz" + + "YCAoZW51bTogYG5vbmV8aW1tZWRpYXRlfGJhY2tvZmZ8YWZ0ZXJfcmVtZWRpYXRpb258dW5rbm93" + + "bmApLCBgcmV0cnlBZnRlclNlY2AgKGludCwgb3B0aW9uYWwpLCBhbmQgYHJhd2AgKHN1YnByb2Nl" + + "c3MgKyBIVFRQICsgS3ViZXJuZXRlcyBzaWduYWwpLiBBbHdheXMgY29uc3VtZSB0aGVzZSBpbiBg" + + "LS1qc29uYCBtb2RlIHJhdGhlciB0aGFuIHBhcnNpbmcgRW5nbGlzaCBmcm9tIHN0ZGVyci4KUEsH" + + "CE/s1mHiBwAA4gcAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAALQAJAGRhdGEvbnZjZi1zZWxm" + + "LW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9mbGFncy5tZFVUBQABAKbOEiMgYG52Y2YtY2xpYCBmbGFn" + + "IHJlZmVyZW5jZQoKIyMgR2xvYmFsIGZsYWdzIChldmVyeSBzdWJjb21tYW5kKQoKfCBGbGFnIHwg" + + "UHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tY29uZmlnIEZJTEVgIHwgQ29u" + + "ZmlnIGZpbGUgcGF0aCB8IGAkSE9NRS8ubnZjZi1jbGkueWFtbGAgfAp8IGAtLWRlYnVnYCB8IFZl" + + "cmJvc2UgSFRUUCBsb2dnaW5nIG9uIHN0ZGVyciB8IGBmYWxzZWAgfAp8IGAtLWpzb25gIHwgSlNP" + + "TkwgZXZlbnRzIG9uIHN0ZGVyciB8IGF1dG8gKG9mZiBpbiBUVFksIG9uIHVuZGVyIGAtLW5vbi1p" + + "bnRlcmFjdGl2ZWApIHwKCiMjIGBzZWxmLWhvc3RlZGAgcGFyZW50IChwZXJzaXN0ZW50IGFjcm9z" + + "cyBzdWJjb21tYW5kcykKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0t" + + "fAp8IGAtLWNvbnRyb2wtcGxhbmUtc3RhY2s94oCmYCB8IENvbnRyb2wtcGxhbmUgYnVuZGxlIHNv" + + "dXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwgb3IgYG9jaTovL2AgVVJMIHwgZW1iZWRkZWQgT0NJ" + + "IFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24gfAp8IGAtLWNvbXB1dGUtcGxhbmUtc3RhY2s94oCm" + + "YCB8IENvbXB1dGUtcGxhbmUgYnVuZGxlIHNvdXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwgb3Ig" + + "YG9jaTovL2AgVVJMIHwgZW1iZWRkZWQgT0NJIFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24gfAp8" + + "IGAtLWVudj1sb2NhbFx8cHJkXHzigKZgIHwgSGVsbWZpbGUgZW52aXJvbm1lbnQgbmFtZSB8IGBs" + + "b2NhbGAgZm9yIGRldiBidWlsZHMsIGBwcmRgIGZvciByZWxlYXNlcyB8CnwgYC0tbm9uLWludGVy" + + "YWN0aXZlYCB8IERpc2FibGUgYWxsIHN0ZGluIHByb21wdHMgfCBgZmFsc2VgIHwKfCBgLS10b2tl" + + "bj0kSldUYCB8IEFkbWluIEpXVCwgb3ZlcnJpZGVzIHN0b3JlZCBzZXNzaW9uIHwgLSB8CnwgYC0t" + + "bm8tYXBwbHlgIHwgYGluc3RhbGxgIG9ubHkgLSBlbWl0IFlBTUwsIGRvIG5vdCBrdWJlY3RsIGFw" + + "cGx5IHwgYGZhbHNlYCB8CnwgYC0tb3V0cHV0PXRleHRcfGpzb25gIHwgTGVnYWN5IGFsaWFzIGZv" + + "ciBgLS1qc29uYCAoZGVwcmVjYXRlZCwgcmVtb3ZlZCBpbiBuZXh0IG1ham9yKSB8IGB0ZXh0YCB8" + + "CnwgYC0tcGxhaW5gIHwgRm9yY2UgcGxhaW4gc3RyZWFtaW5nIG91dHB1dCB8IGF1dG8tZGV0ZWN0" + + "IHwKfCBgLS13YWl0IERVUkFUSU9OYCB8IGBjaGVja2Agb25seTsgYmxvY2sgdW50aWwgcGFzcyB8" + + "IC0gfAp8IGAtLWNvbnRyb2wtcGxhbmUtY29udGV4dCBDVFhgIHwga3ViZWN0bCBjb250ZXh0IGZv" + + "ciBjb250cm9sIHBsYW5lIChSRVEtMjApIHwgY3VycmVudCBjb250ZXh0IHwKfCBgLS1jb21wdXRl" + + "LXBsYW5lLWNvbnRleHQgQ1RYYCB8IGt1YmVjdGwgY29udGV4dCBmb3IgY29tcHV0ZSBwbGFuZSAo" + + "UkVRLTIwKSB8IGN1cnJlbnQgY29udGV4dCB8CnwgYC0taWNtcy11cmwgVVJMYCB8IFB1YmxpYyBJ" + + "Q01TIFVSTDsgcmVxdWlyZWQgd2hlbiBjb250ZXh0cyBkaWZmZXIgfCBkZXJpdmVkIGZyb20gYGJh" + + "c2VfaHR0cF91cmxgIHwKfCBgLS1sb2NhbC1vbmx5YCB8IGBjaGVja2Agb25seTsgcnVuIHRoZSBs" + + "b2NhbC1ob3N0IGNoZWNrcyBhbmQgc2tpcCBhbGwga3ViZWN0bCBjb250YWN0LCB3aGF0ZXZlciBz" + + "Y29wZSBmbGFnIGlzIHBhc3NlZC4gVGhlIENMSSBwcmludHMgYSBub3RlIHNheWluZyBzby4gRW52" + + "OiBgTlZDRl9DTElfU0VMRkhPU1RFRF9MT0NBTF9PTkxZYCB8IGBmYWxzZWAgfAoKIyMgYGNoZWNr" + + "YC1zcGVjaWZpYwoKQXQgbGVhc3Qgb25lIG9mIGAtLXByZWAsIGAtLWNvbnRyb2wtcGxhbmVgLCBg" + + "LS1jb21wdXRlLXBsYW5lYCwgb3IgYC0tYWxsYCBpcwpyZXF1aXJlZC4gRWFjaCBzZWxlY3RzIGEg" + + "cm9sZTsgb25seSB0aGUgc2VsZWN0ZWQgcm9sZXMgY29udGFjdCBhIGNsdXN0ZXIuCgp8IEZsYWcg" + + "fCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1wcmVgIHwgUHJlLWZsaWdo" + + "dDogbG9jYWwtaG9zdCB0b29scyBwbHVzIGNsdXN0ZXIgcmVhZGluZXNzLiBTa2lwcyBTSVMgcmVh" + + "Y2hhYmlsaXR5LCBzaW5jZSBTSVMgaXMgbm90IGluc3RhbGxlZCB5ZXQsIHVubGVzcyBgLS1hbGxg" + + "IG9yIGAtLWNvbXB1dGUtcGxhbmVgIGlzIGFsc28gcGFzc2VkIHwgYGZhbHNlYCB8CnwgYC0tY29u" + + "dHJvbC1wbGFuZWAgfCBDb250cm9sLXBsYW5lIGNoZWNrcyB8IGBmYWxzZWAgfAp8IGAtLWNvbXB1" + + "dGUtcGxhbmVgIHwgQ29tcHV0ZS1wbGFuZSBjaGVja3MgfCBgZmFsc2VgIHwKfCBgLS1hbGxgIHwg" + + "RXZlcnkgY2F0ZWdvcnksIGluY2x1ZGluZyBTSVMgcmVhY2hhYmlsaXR5IHdoZW4gY29tYmluZWQg" + + "d2l0aCBgLS1wcmVgIHwgYGZhbHNlYCB8CnwgYC0tY2x1c3Rlci1uYW1lIE5BTUVgIHwgQ2x1c3Rl" + + "ciBuYW1lIGZvciBjb21wdXRlLXBsYW5lIGNoZWNrcyB8IC0gfAp8IGAtLXNraXAtaW5vdGlmeS1j" + + "aGVja2AgfCBTa2lwIHRoZSBwZXItbm9kZSBpbm90aWZ5LWxpbWl0cyBwcm9iZS4gTmVlZGVkIHdo" + + "ZW4gdGhlIGt1YmVjb25maWcgdXNlciBjYW5ub3QgY3JlYXRlIHBvZHMgaW4gYGRlZmF1bHRgLiBF" + + "bnY6IGBOVkNGX0NMSV9TRUxGSE9TVEVEX1NLSVBfSU5PVElGWWAgfCBgZmFsc2VgIHwKCiMjIyBD" + + "bHVzdGVyLXZhbGlkYXRvciBmbGFncwoKVGhlIHZhbGlkYXRvciBydW5zIGFzIGEgSm9iIGluIHRo" + + "ZSBjbHVzdGVyIGJlaW5nIGNoZWNrZWQuIFRoZSBDTEkgY3JlYXRlcyBhClNlcnZpY2VBY2NvdW50" + + "LCBDbHVzdGVyUm9sZSwgYW5kIENsdXN0ZXJSb2xlQmluZGluZyBmb3IgaXQgYW5kIHJlbW92ZXMg" + + "dGhlbQphZnRlciB0aGUgcnVuLCBzbyB0aGUga3ViZWNvbmZpZyBjb250ZXh0IG5lZWRzIHBlcm1p" + + "c3Npb24gdG8gbWFuYWdlIHRob3NlLgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0t" + + "fC0tLXwtLS18CnwgYC0tY2x1c3Rlci12YWxpZGF0b3ItaW1hZ2UgUkVGYCB8IFZhbGlkYXRvciBp" + + "bWFnZS4gUmVzb2x1dGlvbiBvcmRlcjogZmxhZywgYE5WQ0ZfQ0xJX0NMVVNURVJfVkFMSURBVE9S" + + "X0lNQUdFYCwgY29uZmlnIGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfaW1hZ2VgLiBBIHJlZiB3aXRo" + + "IG5vIHRhZyBkaXNjb3ZlcnMgdGhlIGxhdGVzdCBzdGFibGUgdGFnIGZyb20gdGhlIHJlZ2lzdHJ5" + + "LiBVbnNldCBldmVyeXdoZXJlIHNraXBzIHRoZSBwcm9iZSB3aXRoIGEgd2FybmluZyB8IC0gfAp8" + + "IGAtLWNsdXN0ZXItdmFsaWRhdG9yLXJlZ2lzdHJpZXMgaG9zdDpwb3J0LC4uLmAgfCBFeHRyYSBy" + + "ZWdpc3RyaWVzIHRoZSBjb250cm9sLXBsYW5lIHZhbGlkYXRvciBwcm9iZXMgZm9yIHJlYWNoYWJp" + + "bGl0eS4gVGhleSBhcmUgYWRkZWQgdG8gdGhlIHJlZ2lzdHJpZXMgdGhlIGluc3RhbGwgcHVsbHMg" + + "ZnJvbTogdGhlIHZhbGlkYXRvciBpbWFnZSdzIHJlZ2lzdHJ5LCB0aGUgc3RhY2sncyBgZ2xvYmFs" + + "LmltYWdlLnJlZ2lzdHJ5YCwgYW5kIGBxdWF5LmlvYCBmb3IgdGhlIGNlcnQtbWFuYWdlciBBQ01F" + + "IHNvbHZlciB1bmxlc3MgdGhlIHN0YWNrIHNldHMgYGNlcnRNYW5hZ2VyLmFjbWVzb2x2ZXIuaW1h" + + "Z2VgLiBgbnZjci5pb2AgaXMgcHJvYmVkLCBhcyBub24tY3JpdGljYWwsIG9ubHkgd2hlbiBuZWl0" + + "aGVyIHRoZSBpbWFnZSBub3IgdGhlIHN0YWNrIG5hbWVzIGEgcmVnaXN0cnkuIFJlcGVhdGFibGUg" + + "b3IgY29tbWEtc2VwYXJhdGVkLiBFbnY6IGBOVkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9SRUdJ" + + "U1RSSUVTYDsgY29uZmlnIGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfcmVnaXN0cmllc2AgfCAtIHwK" + + "fCBgLS1jbHVzdGVyLXZhbGlkYXRvci1wcm9iZS1pbWFnZSBSRUZgIHwgSW1hZ2UgZm9yIHRoZSBj" + + "b250cm9sLXBsYW5lIHZhbGlkYXRvcidzIG5vZGUtdG8tbm9kZSBvdmVybGF5IHByb2JlLiBOZWVk" + + "cyBgc2hgIGFuZCBhIGJ1c3lib3gtc3R5bGUgYG5jYC4gU2V0IGEgbWlycm9yIGZvciBhaXItZ2Fw" + + "cGVkIGNsdXN0ZXJzLiBFbnY6IGBOVkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9QUk9CRV9JTUFH" + + "RWA7IGNvbmZpZyBrZXkgYGNsdXN0ZXJfdmFsaWRhdG9yX3Byb2JlX2ltYWdlYCB8IGBidXN5Ym94" + + "OjEuMzZgIGZyb20gRG9ja2VyIEh1YiB8CnwgYC0tY2x1c3Rlci12YWxpZGF0b3ItcHVsbC1zZWNy" + + "ZXQgTkFNRWAgfCBkb2NrZXItcmVnaXN0cnkgU2VjcmV0IGluIGBkZWZhdWx0YCB1c2VkIHRvIHB1" + + "bGwgdGhlIHZhbGlkYXRvciBpbWFnZS4gV2hlbiBlbXB0eSwgdGhlIENMSSBsb29rcyBmb3Igb25l" + + "IGluIHRoZSBOVkNGIG5hbWVzcGFjZXMgYW5kIGNvcGllcyBpdCBpbnRvIGBkZWZhdWx0YCBmb3Ig" + + "dGhlIHJ1bi4gRmFpbGluZyB0aGF0LCBhbmQgb25seSBmb3IgYW4gaW1hZ2Ugb24gYW4gTkdDIHJl" + + "Z2lzdHJ5LCBpdCBtaW50cyBvbmUgZnJvbSBgTkdDX0FQSV9LRVlgIHwgYXV0by1kZXRlY3QgfAp8" + + "IGAtLXNraXAtY2x1c3Rlci12YWxpZGF0aW9uYCB8IFNraXAgdGhlIGluLWNsdXN0ZXIgdmFsaWRh" + + "dG9yIHByb2JlIGVudGlyZWx5LiBFbnY6IGBOVkNGX0NMSV9TRUxGSE9TVEVEX1NLSVBfQ0xVU1RF" + + "Ul9WQUxJREFUSU9OYCB8IGBmYWxzZWAgfAp8IGAtLW5vLWNsZWFudXBgIHwgS2VlcCB0aGUgdmFs" + + "aWRhdG9yIEpvYiwgaXRzIHBvZCwgUkJBQywgcHVsbCBzZWNyZXQgYW5kIENvbmZpZ01hcCBmb3Ig" + + "ZGVidWdnaW5nLiBBIGxhdGVyIGNoZWNrIHJlY2xhaW1zIHRoZW0gYWZ0ZXIgMjQgaG91cnM7IHRo" + + "ZSByZXN1bHQgcHJpbnRzIHRoZSBga3ViZWN0bCBkZWxldGVgIGNvbW1hbmQgdGhhdCByZW1vdmVz" + + "IHRoZW0gbm93IHwgYGZhbHNlYCB8CnwgYC0tc2hvdy1sb2dzYCB8IFByaW50IHRoZSB2YWxpZGF0" + + "b3IgdHJhbnNjcmlwdCB0byBzdGRlcnIgYWZ0ZXIgdGhlIGNoZWNrIGV2ZW50cy4gVGhlIHRyYW5z" + + "Y3JpcHQgaXMgbm90IEpTT04sIGFuZCBgLS1qc29uYCBhbHNvIHdyaXRlcyB0byBzdGRlcnIsIHNv" + + "IGxlYXZlIHRoaXMgb2ZmIHdoZW4gYSBwYXJzZXIgaXMgcmVhZGluZyB0aGUgc3RyZWFtIHwgYGZh" + + "bHNlYCB8CgojIyBgdXBgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8Cnwt" + + "LS18LS0tfC0tLXwKfCBgLS1jbHVzdGVyLW5hbWUgTkFNRWAgfCBJQ01TIGNsdXN0ZXIgcm93IGlk" + + "ZW50aWZpZXIgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLW5jYS1pZCBJRGAgfCBOQ0EgYWNjb3VudCBJ" + + "RCB8IGBudmNmLWRlZmF1bHRgIHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IENsdXN0ZXIgcmVnaW9u" + + "IHwgYHVzLXdlc3QtMWAgfAp8IGAtLXBsYW4tb25seWAgfCBEcnktcnVuOyBlbWl0IHBoYXNlIHBs" + + "YW4gKyBFVEFzIHdpdGhvdXQgY2hhbmdlcyB8IGBmYWxzZWAgfAoKIyMgYHN0YXR1c2Atc3BlY2lm" + + "aWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0" + + "ZXItbmFtZSBOQU1FYCB8IExpbWl0IHRvIG9uZSBjb21wdXRlIHBsYW5lIHwgLSAoY29udHJvbCAr" + + "IGFsbCBjbHVzdGVycykgfAp8IGAtLXdhdGNoYCB8IExpdmUgcmUtcmVuZGVyIHwgYGZhbHNlYCB8" + + "CnwgYC0td2F0Y2gtaW50ZXJ2YWwgRFVSYCB8IGAtLXdhdGNoYCBjYWRlbmNlIHwgYDVzYCB8Cnwg" + + "YC0tY29tcG9uZW50IE5BTUVgIHwgRmlsdGVyIGNvbXBvbmVudHMgcGFuZWwgfCBhbGwgfAp8IGAt" + + "LW5vLWV2ZW50c2AgfCBTa2lwIGV2ZW50cyBwYW5lbCB8IGBmYWxzZWAgfAoKIyMgYGNsdXN0ZXIg" + + "cmVnaXN0ZXJgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0t" + + "fC0tLXwKfCBgLS1uYW1lIE5BTUVgIHwgQ2x1c3RlciBuYW1lIChyZXF1aXJlZCkgfCAtIHwKfCBg" + + "LS1uY2EtaWQgSURgIHwgTkNBIElEIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1yZWdpb24gUkVHSU9O" + + "YCB8IFJlZ2lvbiB8IGB1cy13ZXN0LTFgIHwKfCBgLS1pY21zLXVybCBVUkxgIHwgSUNNUyBlbmRw" + + "b2ludCB8IGZyb20gY29uZmlnIHwKfCBgLS1pZ25vcmUtZXhpc3RpbmdgIHwgTWF0Y2gtb3ItY3Jl" + + "YXRlIGluc3RlYWQgb2YgZmFpbC1vbi1leGlzdHMgfCBgZmFsc2VgIHwKCiMjIGBhcGkta2V5IGdl" + + "bmVyYXRlYC1zcGVjaWZpYwoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwt" + + "LS18CnwgYC0tZm9yIGZ1bmN0aW9uXHx0YXNrYCB8IEdlbmVyYXRlIG9ubHkgdGhlIHNwZWNpZmll" + + "ZCBrZXkgdHlwZSB8IChvbWl0IHRvIGdlbmVyYXRlIGJvdGgpIHwKfCBgLS1kZXNjcmlwdGlvbiBU" + + "RVhUYCB8IEh1bWFuLXJlYWRhYmxlIGxhYmVsIGZvciB0aGUga2V5IHwgYEdlbmVyYXRlZCBieSBu" + + "dmNmLWNsaWAgfAp8IGAtLWV4cGlyZXMtaW4gRFVSQVRJT05gIHwgRXhwaXJ5IG9mZnNldCAoZS5n" + + "LiBgMjRoYCwgYDdkYCk7IHBhcnNlZCBhcyBleHRlbmRlZCBkdXJhdGlvbiB8IGAyNGhgIHwKfCBg" + + "LS1zY29wZXMgU0NPUEVbLFNDT1BFXWAgfCBPdmVycmlkZSBkZWZhdWx0IHNjb3BlczsgcmVxdWly" + + "ZXMgYC0tZm9yYCB8IChzZXJ2aWNlIGRlZmF1bHRzKSB8CnwgYC0tdmFsaWRhdGVgIHwgVmFsaWRh" + + "dGUgZWFjaCBnZW5lcmF0ZWQga2V5IGltbWVkaWF0ZWx5IGFmdGVyIG1pbnRpbmcgfCBgZmFsc2Vg" + + "IHwKCkV4dGVuZGVkIGR1cmF0aW9uIHVuaXRzOiBgc2AgKHNlY29uZHMpLCBgbWAgKG1pbnV0ZXMp" + + "LCBgaGAgKGhvdXJzKSwgYGRgIChkYXlzKSwgYHdgICh3ZWVrcykuCgojIyBgZnVuY3Rpb24gY3Jl" + + "YXRlYC1zcGVjaWZpYwoKYC0taW5wdXQtZmlsZSBGSUxFYCBpcyByZWNvbW1lbmRlZCBmb3IgcmVw" + + "ZWF0YWJsZSBmdW5jdGlvbiBkZWZpbml0aW9ucy4gRm9yIGFkLWhvYyBjcmVhdGVzOgoKfCBGbGFn" + + "IHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tbmFtZSBOQU1FYCB8IEZ1" + + "bmN0aW9uIG5hbWUgfCAtIHwKfCBgLS1pbWFnZSBJTUFHRWAgfCBDb250YWluZXIgaW1hZ2UgfCAt" + + "IHwKfCBgLS1pbmZlcmVuY2UtdXJsIFVSSWAgfCBDb250YWluZXIgaW5mZXJlbmNlIGVuZHBvaW50" + + "IHwgLSB8CnwgYC0taW5mZXJlbmNlLXBvcnQgUE9SVGAgfCBDb250YWluZXIgaW5mZXJlbmNlIHBv" + + "cnQgfCAtIHwKfCBgLS1mdW5jdGlvbi10eXBlIERFRkFVTFRcfFNUUkVBTUlOR1x8TExNYCB8IEZ1" + + "bmN0aW9uIHR5cGUgfCBgREVGQVVMVGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hBUlRgIHwgSGVsbSBj" + + "aGFydCBVUkwgb3IgT0NJIHJlZmVyZW5jZS4gQ2FuIGJlIHVzZWQgd2l0aCBgLS1mdW5jdGlvbi10" + + "eXBlPUxMTWAgZm9yIGNoYXJ0LXBhY2thZ2VkIExMTSB3b3JrbG9hZHMuIHwgLSB8CnwgYC0taGVs" + + "bS1jaGFydC1zZXJ2aWNlIE5BTUVgIHwgS3ViZXJuZXRlcyBTZXJ2aWNlIG5hbWUgZXhwb3NlZCBi" + + "eSB0aGUgY2hhcnQuIFJlcXVpcmVkIHdoZW4gYC0taGVsbS1jaGFydGAgaXMgc2V0LiB8IC0gfAp8" + + "IGAtLW1vZGVscyBOQU1FOlZFUlNJT046VVJJYCB8IFN0YW5kYXJkIG1vZGVsIGFydGlmYWN0OyBy" + + "ZXBlYXRhYmxlIHwgLSB8CnwgYC0tbGxtLW1vZGVsIFNQRUNgIHwgTExNIG1vZGVsIGNvbmZpZzsg" + + "Zm9ybWF0IGBuYW1lPTxtb2RlbD4sdXJpcz08dXJpPlx8PHVyaT4scm91dGluZ01ldGhvZD08bWV0" + + "aG9kPix0b2tlblJhdGVMaW1pdD08bGltaXQ+YDsgcmVwZWF0YWJsZS4gVG9rZW4gbGltaXRzIHVz" + + "ZSBgPHZhbHVlPi08dW5pdD5gIHdpdGggYFNgLCBgTWAsIGBIYCwgYERgLCBvciBgV2AsIGZvciBl" + + "eGFtcGxlIGAxMDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBmb3IgY29tYmluZWQgdG9rZW4gbGltaXRz" + + "IGJlY2F1c2UgaW5saW5lIHNwZWNzIHVzZSBjb21tYXMgYXMgZmllbGQgc2VwYXJhdG9ycy4gfCAt" + + "IHwKfCBgLS1sbG0tZGVmYXVsdC1wcmlvcml0eSBQUklPUklUWWAgfCBGdW5jdGlvbi1sZXZlbCBk" + + "ZWZhdWx0IHJlcXVlc3QgcHJpb3JpdHkuIExvd2VyIHZhbHVlcyBoYXZlIGhpZ2hlciBwcmlvcml0" + + "eS4gfCAtIHwKfCBgLS1sbG0tcGVyLWFjY291bnQtcHJpb3JpdHkgTkNBLUlEOlBSSU9SSVRZYCB8" + + "IFBlci1hY2NvdW50IHByaW9yaXR5IG92ZXJyaWRlOyByZXBlYXRhYmxlOyBzdXBwb3J0cyB1cCB0" + + "byA2NCBkaXN0aW5jdCBOQ0EgSUQgb3ZlcnJpZGVzLiBSZXF1aXJlcyBhIGRlZmF1bHQgcHJpb3Jp" + + "dHkuIHwgLSB8CgpJbiBKU09OIGFuZCBpbmxpbmUgc3BlY3MsIExMTSBmdW5jdGlvbnMgc2V0IGBm" + + "dW5jdGlvblR5cGU6ICJMTE0iYCBhbmQgbW9kZWwgcm91dGluZyBtZXRhZGF0YSB1bmRlciBgbW9k" + + "ZWxzW10ubGxtQ29uZmlnYC4gYGxsbUNvbmZpZy51cmlzYCBkZWNsYXJlcyB0aGUgT3BlbkFJLWNv" + + "bXBhdGlibGUgdXBzdHJlYW0gcGF0aHMgZXhwb3NlZCBieSB0aGUgbW9kZWwuIEN1cnJlbnQgc3Vw" + + "cG9ydGVkIHBhdGhzIGFyZSBgL3YxL2NoYXQvY29tcGxldGlvbnNgLCBgL3YxL3Jlc3BvbnNlc2As" + + "IGFuZCBgL3YxL2VtYmVkZGluZ3NgLiBgbGxtQ29uZmlnLnJvdXRpbmdNZXRob2RgIGFjY2VwdHMg" + + "YHJvdW5kX3JvYmluYCwgYHBvd2VyX29mX3R3b2AsIGBncm9xX211bHRpcmVnaW9uYCwgYHB1bHNh" + + "cmAsIG9yIGByYW5kb21gLgpgbGxtQ29uZmlnLnRva2VuUmF0ZUxpbWl0YCBhY2NlcHRzIG9uZSBv" + + "ciBtb3JlIGNvbW1hLXNlcGFyYXRlZCBwb3NpdGl2ZSBpbnRlZ2VyIHRva2VuIGxpbWl0cyBpbiBg" + + "PHZhbHVlPi08dW5pdD5gIGZvcm1hdC4gU3VwcG9ydGVkIHVuaXRzIGFyZSBgU2AgKHNlY29uZHMp" + + "LCBgTWAgKG1pbnV0ZXMpLCBgSGAgKGhvdXJzKSwgYERgIChkYXlzKSwgYW5kIGBXYCAod2Vla3Mp" + + "LiBVc2UgZGlzdGluY3QgdW5pdHMgd2hlbiBjb21iaW5pbmcgbGltaXRzLCBmb3IgZXhhbXBsZSBg" + + "MTAwMC1TLDUwMDAtTSwxMDAwMDAtSCw1MDAwMDAtRCwxMDAwMDAwLVdgIGluIGlucHV0IEpTT04u" + + "CgpIZWxtIGNoYXJ0IHBhY2thZ2luZyBpcyBpbmRlcGVuZGVudCBvZiBgZnVuY3Rpb25UeXBlYC4g" + + "Rm9yIGEgSGVsbS1jaGFydCBiYWNrZWQgTExNIGZ1bmN0aW9uLCBzZXQgYGZ1bmN0aW9uVHlwZTog" + + "IkxMTSJgLCBgaGVsbUNoYXJ0YCwgYGhlbG1DaGFydFNlcnZpY2VOYW1lYCwgYW5kIGBtb2RlbHNb" + + "XS5sbG1Db25maWdgIGluIHRoZSBzYW1lIGNyZWF0ZSByZXF1ZXN0LiBgaW5mZXJlbmNlUG9ydGAg" + + "bXVzdCBiZSB0aGUgS3ViZXJuZXRlcyBTZXJ2aWNlIHBvcnQgZXhwb3NlZCBieSBgaGVsbUNoYXJ0" + + "U2VydmljZU5hbWVgLgoKTExNIGludm9jYXRpb24gcmVxdWVzdHMgdXNlIGBtb2RlbDogIjxmdW5j" + + "dGlvbi1pZD4vPG1vZGVsLW5hbWU+ImAuIFRoZSBmdW5jdGlvbiBJRCBzZWxlY3RzIHRoZSBOVkNG" + + "IGZ1bmN0aW9uLCBhbmQgdGhlIG1vZGVsIG5hbWUgaXMgZm9yd2FyZGVkIHVwc3RyZWFtLiBDaGF0" + + "IGNvbXBsZXRpb25zIGFuZCBSZXNwb25zZXMgQVBJIHJlcXVlc3RzIGNhbiB1c2UgYHgtbXVsdGkt" + + "dHVybi1zZXNzaW9uLWlkYCBmb3Igc2Vzc2lvbiBzdGlja2luZXNzOyBlbWJlZGRpbmdzIHJlcXVl" + + "c3RzIGRvIG5vdC4KCiMjIGBmdW5jdGlvbiB1cGRhdGVgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJw" + + "b3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS10YWdzIFRBR1ssVEFHXWAgfCBSZXBs" + + "YWNlIGZ1bmN0aW9uIHRhZ3MgfCAtIHwKfCBgLS1sbG0tbW9kZWwtdXBkYXRlIFNQRUNgIHwgTExN" + + "IG1vZGVsIHVwZGF0ZTsgZm9ybWF0IGBuYW1lPTxtb2RlbD4scm91dGluZ01ldGhvZD08bWV0aG9k" + + "Pix0b2tlblJhdGVMaW1pdD08bGltaXQ+YDsgcmVwZWF0YWJsZS4gUm91dGluZyBtZXRob2RzIG1h" + + "dGNoIGAtLWxsbS1tb2RlbGAuIFRva2VuIGxpbWl0IGV4YW1wbGU6IGAxMDAwLVNgLiBVc2UgaW5w" + + "dXQgSlNPTiBmb3IgY29tYmluZWQgdG9rZW4gbGltaXRzLiB8IC0gfAp8IGAtLWxsbS1kZWZhdWx0" + + "LXByaW9yaXR5IFBSSU9SSVRZYCB8IFJlcGxhY2UgdGhlIGZ1bmN0aW9uLWxldmVsIHByaW9yaXR5" + + "IGNvbmZpZ3VyYXRpb24gd2l0aCB0aGlzIGRlZmF1bHQgYW5kIGFueSBzdXBwbGllZCBwZXItYWNj" + + "b3VudCBvdmVycmlkZXMuIHwgLSB8CnwgYC0tbGxtLXBlci1hY2NvdW50LXByaW9yaXR5IE5DQS1J" + + "RDpQUklPUklUWWAgfCBQZXItYWNjb3VudCBwcmlvcml0eSBvdmVycmlkZTsgcmVwZWF0YWJsZTsg" + + "c3VwcG9ydHMgdXAgdG8gNjQgZGlzdGluY3QgTkNBIElEIG92ZXJyaWRlcy4gUmVxdWlyZXMgYSBk" + + "ZWZhdWx0IHByaW9yaXR5LiB8IC0gfAoKSW4gSlNPTiwgYGZ1bmN0aW9uIHVwZGF0ZWAgYWNjZXB0" + + "cyBgbW9kZWxVcGRhdGVzW11gIGVudHJpZXMgd2l0aCBgbW9kZWxOYW1lYCBhbmQgYGxsbUNvbmZp" + + "Zy5yb3V0aW5nTWV0aG9kYCBhbmQvb3IgYGxsbUNvbmZpZy50b2tlblJhdGVMaW1pdGAuIGB1cmlz" + + "YCBhcmUgY3JlYXRlLXRpbWUgbW9kZWwgbWV0YWRhdGEgYW5kIGFyZSBub3QgcGFydCBvZiBtb2Rl" + + "bCB1cGRhdGVzLgoKIyMgYGZ1bmN0aW9uIGRlcGxveSBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1" + + "dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIChmdWxsIEpTT04gc3BlYykuIEZvciBhZC1ob2Mg" + + "b25lLXNob3QgdXNlOgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18" + + "CnwgYC0tZnVuY3Rpb24taWQgSURgIHwgRnVuY3Rpb24gSUQgKHJlcXVpcmVkKSB8IC0gfAp8IGAt" + + "LWdwdSBOQU1FYCB8IEdQVSBmYW1pbHkgfCBgSDEwMGAgfAp8IGAtLWluc3RhbmNlLXR5cGUgVFlQ" + + "RWAgfCBTS1UgfCBgTkNQLkdQVS5IMTAwXzF4YCB8CnwgYC0tbWluLWluc3RhbmNlcyBOYCB8IE1p" + + "biByZXBsaWNhcyB8IGAxYCB8CnwgYC0tbWF4LWluc3RhbmNlcyBOYCB8IE1heCByZXBsaWNhcyB8" + + "IGAxYCB8CnwgYC0tbWF4LXJlcXVlc3QtY29uY3VycmVuY3kgTmAgfCBDb25jdXJyZW5jeSB8IGAw" + + "YCAodW5zZXQ7IHNlcnZlciBkZWZhdWx0IGFwcGxpZXMpIHwKfCBgLS1jbHVzdGVycyBOQU1FWyxO" + + "QU1FXWAgfCBUYXJnZXQgc3BlY2lmaWMgY29tcHV0ZSBjbHVzdGVycyB8IChhbnkgbWF0Y2hpbmcg" + + "U0tVKSB8CgojIyBgdGFzayBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlz" + + "IHJlY29tbWVuZGVkIGZvciByZXBlYXRhYmxlIHRhc2sgZGVmaW5pdGlvbnMuIEZvciBhZC1ob2Mg" + + "dXNlOgoKfCBGbGFnIHwgUHVycG9zZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGAtLW5hbWUg" + + "TkFNRWAgfCBUYXNrIG5hbWUgKHJlcXVpcmVkKSB8IDEtMTI4IGNoYXJzLCBgXlthLXowLTlBLVpd" + + "W2EtejAtOUEtWlwtX10qJGAgfAp8IGAtLWdwdSBHUFVgIHwgR1BVIG5hbWUgKHJlcXVpcmVkIHdp" + + "dGhvdXQgYC0taW5wdXQtZmlsZWApIHwgRXhhbXBsZTogYEgxMDBgIHwKfCBgLS1pbnN0YW5jZS10" + + "eXBlIFRZUEVgIHwgSW5zdGFuY2UgdHlwZSAocmVxdWlyZWQgd2l0aG91dCBgLS1pbnB1dC1maWxl" + + "YCkgfCBFeGFtcGxlOiBgTkNQLkdQVS5IMTAwXzF4YCB8CnwgYC0taW1hZ2UgSU1BR0VgIHwgQ29u" + + "dGFpbmVyIGltYWdlIHwgTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYC0taGVsbS1jaGFydGAgfAp8" + + "IGAtLWhlbG0tY2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJIHJlZmVyZW5jZSB8" + + "IE11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGAtLWltYWdlYCB8CnwgYC0taW5wdXQtZmlsZSBGSUxF" + + "YCB8IEpTT04gdGFzayBzcGVjIGZpbGUgfCBDTEkgZmxhZ3Mgb3ZlcnJpZGUgSlNPTiB2YWx1ZXMg" + + "d2hlbiBib3RoIGFyZSBzZXQgfAp8IGAtLWJhY2tlbmQgQkFDS0VORGAgfCBCYWNrZW5kIC8gQ1NQ" + + "IHwgLSB8CnwgYC0tY2x1c3RlcnMgTkFNRVssTkFNRV1gIHwgU3BlY2lmaWMgY2x1c3RlcnMgd2l0" + + "aGluIHRoZSBpbnN0YW5jZSB8IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tY29udGFpbmVyLWFyZ3Mg" + + "QVJHU2AgfCBBcmdzIHBhc3NlZCB3aGVuIGxhdW5jaGluZyB0aGUgY29udGFpbmVyIHwgU2luZ2xl" + + "IHN0cmluZywgZS5nLiBgIi0tZXBvY2hzIDEwIC0tYmF0Y2gtc2l6ZSAzMiJgIHwKfCBgLS1jb250" + + "YWluZXItZW52IE5BTUU9dmFsdWVgIHwgQ29udGFpbmVyIGVudmlyb25tZW50IHZhcmlhYmxlOyBy" + + "ZXBlYXRhYmxlIHwgLSB8CnwgYC0tc2VjcmV0cyBOQU1FPXZhbHVlYCB8IFNlY3JldCBlbnZpcm9u" + + "bWVudCB2YXJpYWJsZTsgcmVwZWF0YWJsZTsgZW5jcnlwdGVkIGF0IHJlc3QgfCAtIHwKfCBgLS1t" + + "YXgtcnVudGltZSBEVVJBVElPTmAgfCBNYXggd2FsbC1jbG9jayBydW4gdGltZSAoSVNPIDg2MDEs" + + "IGUuZy4gYFBUNEhgKSB8IE5vIGRlZmF1bHQ7IG9taXQgZm9yIG5vIHRpbWUgbGltaXQgfAp8IGAt" + + "LW1heC1xdWV1ZWQgRFVSQVRJT05gIHwgTWF4IHRpbWUgaW4gcXVldWUgYmVmb3JlIGNhbmNlbGxh" + + "dGlvbiAoSVNPIDg2MDEpIHwgU2VydmVyIGRlZmF1bHQgYFBUNzJIYCB8CnwgYC0tdGVybWluYXRp" + + "b24tZ3JhY2UgRFVSQVRJT05gIHwgR3JhY2UgcGVyaW9kIGFmdGVyIHN0b3Agc2lnbmFsIChJU08g" + + "ODYwMSkgfCBTZXJ2ZXIgZGVmYXVsdCBgUFQxSGAgfAp8IGAtLXJlc3VsdC1zdHJhdGVneSBVUExP" + + "QURcfE5PTkVgIHwgSG93IHRvIGhhbmRsZSB0YXNrIG91dHB1dCBhcnRpZmFjdHMgfCAtIHwKfCBg" + + "LS1yZXN1bHRzLWxvY2F0aW9uIExPQ0FUSU9OYCB8IFJlc3VsdCB1cGxvYWQgdGFyZ2V0LCBmb3Jt" + + "YXQgYG9yZy1uYW1lL1t0ZWFtLW5hbWUvXW1vZGVsLW5hbWVgOyByZXF1aXJlZCB3aGVuIGAtLXJl" + + "c3VsdC1zdHJhdGVneT1VUExPQURgIHwgLSB8CnwgYC0tbW9kZWxzIE5BTUU6VkVSU0lPTjpVUklg" + + "IHwgTW9kZWwgYXJ0aWZhY3Q7IHJlcGVhdGFibGUgfCAtIHwKfCBgLS1yZXNvdXJjZXMgTkFNRTpW" + + "RVJTSU9OOlVSSWAgfCBSZXNvdXJjZSBhcnRpZmFjdDsgcmVwZWF0YWJsZSB8IC0gfAp8IGAtLXRh" + + "Z3MgVEFHWyxUQUddYCB8IFRhc2sgdGFncyB8IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tZGVzY3Jp" + + "cHRpb24gVEVYVGAgfCBUYXNrIGRlc2NyaXB0aW9uIHwgLSB8CnwgYC0tbG9ncy10ZWxlbWV0cnkt" + + "aWQgVVVJRGAgfCBMb2dzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfAp8IGAtLW1ldHJpY3Mt" + + "dGVsZW1ldHJ5LWlkIFVVSURgIHwgTWV0cmljcyB0ZWxlbWV0cnkgZW5kcG9pbnQgSUQgfCAtIHwK" + + "fCBgLS10cmFjZXMtdGVsZW1ldHJ5LWlkIFVVSURgIHwgVHJhY2VzIHRlbGVtZXRyeSBlbmRwb2lu" + + "dCBJRCB8IC0gfApQSwcIjsCI8TUyAAA1MgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA3AAkA" + + "ZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVU" + + "BQABAKbOEiMgVHJvdWJsZXNob290aW5nCgpLbm93biBlcnJvcnMg4oaSIGRpYWdub3N0aWMgY29t" + + "bWFuZCDihpIgcmVtZWRpYXRpb24uIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBzdHJ1Y3R1cmVkIGBw" + + "aGFzZV9mYWlsZWRgIGV2ZW50cyB0aGUgQ0xJIGVtaXRzIChSRVEtMTUpIOKAlCBldmVyeSBlbnRy" + + "eSBiZWxvdyBzaG91bGQgbWFwIHRvIGFuIGBlcnJDYXRlZ29yeWAgYW5kIGEgYHJlbWVkaWF0aW9u" + + "YCBhcnJheS4KCiMjIFByZS1mbGlnaHQKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24g" + + "fAp8LS0tfC0tLXwtLS18CnwgYGt1YmVjdGwgbm90IG9uIFBBVEhgIHwgT3BlcmF0b3IncyBgJFBB" + + "VEhgIGRvZXNuJ3QgaW5jbHVkZSBrdWJlY3RsIHwgSW5zdGFsbCBrdWJlY3RsIDEuMjgrOiBodHRw" + + "czovL2t1YmVybmV0ZXMuaW8vZG9jcy90YXNrcy90b29scy9pbnN0YWxsLWt1YmVjdGwvIHwKfCBg" + + "aGVsbWZpbGUgbm90IG9uIFBBVEhgIHwgU2FtZSB8IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWxtZmls" + + "ZS9oZWxtZmlsZSNpbnN0YWxsYXRpb24gfAp8IGBoZWxtIG5vdCBvbiBQQVRIYCB8IFNhbWUgfCBo" + + "dHRwczovL2hlbG0uc2gvZG9jcy9pbnRyby9pbnN0YWxsLyB8CnwgYEdhdGV3YXkgQVBJIENSRHMg" + + "bm90IGluc3RhbGxlZGAgfCBlbnZveS1nYXRld2F5IHByZXJlcSBtaXNzaW5nIHwgYGhlbG0gaW5z" + + "dGFsbCBlZyBvY2k6Ly9kb2NrZXIuaW8vZW52b3lwcm94eS9nYXRld2F5LWhlbG0gLS1uYW1lc3Bh" + + "Y2U9ZW52b3ktZ2F0ZXdheS1zeXN0ZW0gLS1jcmVhdGUtbmFtZXNwYWNlYCB8CnwgYGRlZmF1bHQg" + + "U3RvcmFnZUNsYXNzIG5vdCBhdmFpbGFibGVgIHwgQ2x1c3RlciBoYXMgbm8gZGVmYXVsdCBTQyB8" + + "IEFubm90YXRlIG9uZTogYGt1YmVjdGwgcGF0Y2ggc2MgPG5hbWU+IC1wICd7Im1ldGFkYXRhIjp7" + + "ImFubm90YXRpb25zIjp7InN0b3JhZ2VjbGFzcy5rdWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xh" + + "c3MiOiJ0cnVlIn19fSdgIHwKfCBgR1BVIG9wZXJhdG9yIG5vdCBpbnN0YWxsZWRgIChjb21wdXRl" + + "LXBsYW5lKSB8IG52aWRpYSBHUFUgb3BlcmF0b3IgbWlzc2luZyB8IEluc3RhbGwgcGVyIGh0dHBz" + + "Oi8vZG9jcy5udmlkaWEuY29tL2RhdGFjZW50ZXIvY2xvdWQtbmF0aXZlL2dwdS1vcGVyYXRvci9s" + + "YXRlc3QvaW5zdGFsbC1ncHUtb3BlcmF0b3IuaHRtbCwgT1IgdXNlIGBmYWtlLWdwdS1vcGVyYXRv" + + "cmAgZm9yIGRldiB8CnwgYEdQVSBub2RlIGxhYmVscyBtaXNzaW5nYCAoY29tcHV0ZS1wbGFuZSkg" + + "fCBOb2RlcyBuZWVkIGBudmlkaWEuY29tL2dwdS5mYW1pbHlgIGV0Yy4gfCBTZXQgYC0tazNzLW5v" + + "ZGUtbGFiZWwgbnZpZGlhLmNvbS9ncHUuZmFtaWx5PWhvcHBlckBhZ2VudDpOYCBmb3IgazNkIHwK" + + "CiMjIEF1dGgKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18" + + "CnwgYGFkbWluIHRva2VuIHJlcXVpcmVkYCAoaW5pdCBub3QgcnVuKSB8IE5vIGB+Ly5udmNmLWNs" + + "aS5zdGF0ZWAgYW5kIGAtLXRva2VuYCBub3QgcGFzc2VkIHwgYG52Y2YtY2xpIGluaXRgIChpbnRl" + + "cmFjdGl2ZSkgb3IgYC0tdG9rZW49JEpXVCAtLW5vbi1pbnRlcmFjdGl2ZWAgKENJKSB8CnwgYFNp" + + "Z25lZCBKV1QgcmVqZWN0ZWQ6IEFub3RoZXIgYWxnb3JpdGhtIGV4cGVjdGVkLCBvciBubyBtYXRj" + + "aGluZyBrZXkocykgZm91bmRgIHwgU3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQg" + + "Y29udHJvbCBwbGFuZSB8IGBybSB+Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5p" + + "dGAgYWdhaW4gfAp8IGA0MDMgbWlzc2luZyByZXF1ZXN0ZWQgYXV0aG9yaXRpZXNgIChmdW5jdGlv" + + "biBpbnZva2UpIHwgQWRtaW4gdG9rZW4gZG9lc24ndCBoYXZlIGBpbnZva2VfZnVuY3Rpb25gIHNj" + + "b3BlIHwgYG52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj3igKZgIHRoZW4g" + + "cmUtcnVuIGludm9rZSB8CgojIyBJbnN0YWxsIC8gYHVwYAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBS" + + "ZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBIZWxtIGB0aW1lZCBvdXQgd2FpdGluZyBmb3Ig" + + "Y2Fzc2FuZHJhYCB8IENhc3NhbmRyYSBTdGF0ZWZ1bFNldCBQVkMgc3R1Y2sgYFBlbmRpbmdgIHwg" + + "Q29uZmlybSBkZWZhdWx0IFN0b3JhZ2VDbGFzczsgY2hlY2sgYGt1YmVjdGwgZ2V0IHB2LHB2YyAt" + + "biBjYXNzYW5kcmEtc3lzdGVtYCB8CnwgYEludmFsaWQgR1BVICdOQ1AuR1BVLkgxMDAnIHNwZWNp" + + "ZmllZGAgKGZ1bmN0aW9uIGRlcGxveSkgfCBXcm9uZyBmaWVsZCDigJQgYGdwdWAgaXMgdGhlIGZh" + + "bWlseSwgbm90IHRoZSBTS1UgfCBVc2UgYCJncHUiOiAiSDEwMCJgLCBgImluc3RhbmNlVHlwZSI6" + + "ICJOQ1AuR1BVLkgxMDBfMXgiYCB8CnwgYHJlZ2lvbiBtdXN0IGJlIHByb3ZpZGVkYCAoY2x1c3Rl" + + "ciByZWdpc3RlciAvIGluc3RhbGwgLS1jb21wdXRlLXBsYW5lKSB8IGAtLXJlZ2lvbmAgZW1wdHkg" + + "KyBgQ0xVU1RFUl9SRUdJT05gIGVudiBlbXB0eSB8IFBhc3MgYC0tcmVnaW9uPXVzLXdlc3QtMWAg" + + "KG9yIGFueSBub24tZW1wdHkgdmFsdWUpIHwKfCBgcmVxdWlyZWRFbnYgIk5DQV9JRCIgaXMgbm90" + + "IHNldGAgKGhlbG1maWxlIGVycm9yIGR1cmluZyBjb21wdXRlLXBsYW5lIGFwcGx5KSB8IE9sZGVy" + + "IG52Y2YtY2xpIGJlZm9yZSBjb21taXQgYDZhYTU3MDRgOyBFeHRyYUVudiBub3QgcHJvcGFnYXRp" + + "bmcgTkNBX0lEIHwgVXBncmFkZSBgbnZjZi1jbGlgIHRvIGEgcmVsZWFzZSBhZnRlciBgNmFhNTcw" + + "NGAgfAp8IGBudmNhLW9wZXJhdG9yOiBJbWFnZVB1bGxCYWNrT2ZmYCBmb3IgYG52Y2Etb3BlcmF0" + + "b3I6cHNhdGAgfCBJbWFnZSBub3QgaW4gY2x1c3RlciByZWdpc3RyeTsgbXVsdGktY2x1c3RlciBi" + + "dWlsZCBpcyBsb2NhbCB8IGBrM2QgaW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Etb3BlcmF0" + + "b3I6cHNhdCAtYyA8Y2x1c3Rlcj5gIHwKCiMjIENvbXB1dGUtcGxhbmUgcnVudGltZQoKfCBTeW1w" + + "dG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBOVkNBIGFnZW50IENy" + + "YXNoTG9vcEJhY2tPZmYgd2l0aCBgSFRUUCA0MDFgIG9uIGAvdjEvbnZjYS9jbHVzdGVycy8uLi4v" + + "cmVnaXN0ZXJgIHwgU3RhbGUgYG91dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIGZy" + + "b20gcHJpb3IgcmVnaXN0ZXI7IGNsdXN0ZXIgSUQgZG9lc24ndCBtYXRjaCBJQ01TIHwgRGVsZXRl" + + "IHRoZSBzdGFsZSBmaWxlOyByZS1ydW4gYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwYCAoaWRlbXBv" + + "dGVudCByZWdpc3RlciB3cml0ZXMgYSBmcmVzaCBmaWxlKSB8CnwgYE5vIGNsdXN0ZXIgZm91bmQg" + + "d2l0aCB2YWxpZCBKV0tTIGZvciBjbHVzdGVyIElEOiA8aWQ+YCAoSUNNUyBsb2cpIHwgSldLUyBp" + + "biBJQ01TIGRvZXNuJ3QgbWF0Y2ggd2hhdCBjb21wdXRlLXBsYW5lIEs4cyBpcyBjdXJyZW50bHkg" + + "c2lnbmluZyB8IGBudmNmLWNsaSBjbHVzdGVyIHJvdGF0ZSAtLWNsdXN0ZXItaWQ9PGlkPmAgfAp8" + + "IEZ1bmN0aW9uIHBvZCBgSW1hZ2VQdWxsQmFja09mZmAgaW4gYG52Y2YtYmFja2VuZGAgfCBJbWFn" + + "ZS1jcmVkZW50aWFsLWhlbHBlciBjb25maWcgbWlzc2luZyBvciB3cm9uZyB8IGBrdWJlY3RsIGRl" + + "c2NyaWJlIHBvZCAtbiBudmNmLWJhY2tlbmQgPHBvZD5gOyBjaGVjayB0aGUgcHVsbCBzZWNyZXQg" + + "Y29uZmlnIHwKfCBGdW5jdGlvbiBkZXBsb3kgc3R1Y2sgYERFUExPWUlOR2AgZm9yID41IG1pbiB8" + + "IE5BVFMgc3RyZWFtIGluaXQgbGFnIChjb2xkLWNsdXN0ZXIpIOKAlCB3YWl0LCBvciBjaGVjayBO" + + "QVRTIGF1dGgtY2FsbG91dCBoZWFsdGggfCBga3ViZWN0bCBsb2dzIC1uIG5hdHMtc3lzdGVtIC1s" + + "IGFwcC5rdWJlcm5ldGVzLmlvL25hbWU9bmF0cy1hdXRoLWNhbGxvdXQtc2VydmljZWAgfAoKIyMg" + + "VGFza3MKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18Cnwg" + + "YHRhc2sgY3JlYXRlYCByZXR1cm5zIGBNaXNzaW5nIDxUWVBFPiByZWdpc3RyeSBjcmVkZW50aWFs" + + "IGZvciBob3N0bmFtZWAsIG9yIGtlZXBzIHVzaW5nIGEgcHJldmlvdXMgY3JlZGVudGlhbCB2YWx1" + + "ZSwgc2hvcnRseSBhZnRlciBgcmVnaXN0cnktY3JlZGVudGlhbCBhZGQvdXBkYXRlL2RlbGV0ZWAg" + + "d2hpbGUgYHJlZ2lzdHJ5LWNyZWRlbnRpYWwgbGlzdGAvYGdldGAgYWxyZWFkeSBzaG93IHRoZSBu" + + "ZXcgdmFsdWUgfCBFeHBlY3RlZCBwcm9wYWdhdGlvbiBkZWxheTogTlZDVCBjYWNoZXMgdGhlIGFj" + + "Y291bnQncyByZWdpc3RyeSBjcmVkZW50aWFscyB3aXRoIGBudmN0Lm52Y2YuY2FjaGUtdHRsYCAo" + + "ZGVmYXVsdCBgUFQ1TWAsIGFib3V0IDUgbWluKSBhbmQgYXBwbGllcyB0aGUgY2hhbmdlIHdoZW4g" + + "dGhhdCBjYWNoZWQgY29weSByZWZyZXNoZXMgfCBXYWl0IHVwIHRvIGFib3V0IDUgbWluIGFuZCBy" + + "ZXRyeSwgb3IgYGt1YmVjdGwgLW4gbnZjZiByb2xsb3V0IHJlc3RhcnQgZGVwbG95bWVudC9udmN0" + + "LWFwaWAgdG8gYXBwbHkgaW1tZWRpYXRlbHkgfApQSwcI864ThHQRAAB0EQAAUEsDBBQACAAAAAAA" + + "IQAAAAAAAAAAAAAAAAAsAAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vU0tJ" + + "TEwubWRVVAUAAQCmzhItLS0KbmFtZTogbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uCmRl" + + "c2NyaXB0aW9uOiA+LQogIEluc3RhbGwgYW5kIG9wZXJhdGUgTlZDRiBzZWxmLWhvc3RlZCBjb250" + + "cm9sLXBsYW5lIGFuZCBzZXBhcmF0ZSBjb21wdXRlLXBsYW5lCiAgc3RhY2tzLiBDb3ZlcnMgSGVs" + + "bWZpbGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSBpbnN0YWxsYXRpb24gZmxvd3MsIHRlYXJkb3du" + + "LAogIHZhbHVlcyBvdmVycmlkZXMsIHB1bGwgc2VjcmV0cywgYW5kIHRyb3VibGVzaG9vdGluZy4g" + + "VXNlIGZvcgogIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrLCBudmNmLWNvbXB1dGUtcGxhbmUtc3Rh" + + "Y2ssIHNwbGl0IGNvbXB1dGUtcGxhbmUKICBpbnN0YWxsYXRpb24sIGNvbnRyb2wtcGxhbmUgaW5z" + + "dGFsbGF0aW9uLCBDTEktZ2VuZXJhdGVkIGNvbnRyb2wtcGxhbmUKICBwcm9maWxlcywgSGVsbWZp" + + "bGUsIHNlbGYtbWFuYWdlZCwgb3Igc2VsZi1ob3N0ZWQgZGVwbG95bWVudHMuIERvIE5PVCB1c2Ug" + + "Zm9yCiAgbG9jYWwgazNkIGVudmlyb25tZW50czsgdXNlIHRoZSBsb2NhbCBrM2QgZGV2ZWxvcG1l" + + "bnQgd29ya2Zsb3cgaW5zdGVhZC4KbGljZW5zZTogQXBhY2hlLTIuMApjb21wYXRpYmlsaXR5OiBS" + + "ZXF1aXJlcyBoZWxtZmlsZSA+PSAxLjEuMCA8IDEuMi4wLCBoZWxtID49IDMuMTIsIGhlbG0tZGlm" + + "ZiBwbHVnaW4sIGt1YmVjdGwgbWF0Y2hpbmcgY2x1c3RlciB2ZXJzaW9uCmF1dGhvcjogIm52Y2Yt" + + "Y29yZS1lbmcgPG52Y2YtY29yZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCnZlcnNpb246ICIx" + + "LjAuMCIKdGFnczogW252Y2YsIHNlbGYtbWFuYWdlZCwgaGVsbWZpbGUsIHNlbGYtaG9zdGVkLCBj" + + "b250cm9sLXBsYW5lLCBjb21wdXRlLXBsYW5lLCBjbGktcHJvZmlsZSwgaW5zdGFsbGF0aW9uLCBk" + + "ZXBsb3ltZW50LCBwdWxsLXNlY3JldHNdCnRvb2xzOiBbU2hlbGwsIFJlYWQsIEVkaXQsIEdyZXAs" + + "IEdsb2JdCm1ldGFkYXRhOgogIGludGVybmFsOiBmYWxzZQogIGF1dGhvcjogIm52Y2YtY29yZS1l" + + "bmcgPG52Y2YtY29yZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCiAgdmVyc2lvbjogIjEuMCIK" + + "ICB0YWdzOiBbbnZjZiwgc2VsZi1tYW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQsIGNvbnRy" + + "b2wtcGxhbmUsIGNvbXB1dGUtcGxhbmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24sIGRlcGxv" + + "eW1lbnQsIHB1bGwtc2VjcmV0c10KICBsYW5ndWFnZXM6IFtiYXNoLCB5YW1sXQogIGZyYW1ld29y" + + "a3M6IFtoZWxtZmlsZSwgaGVsbSwga3ViZWN0bF0KICBkb21haW46IGNsb3VkLWluZnJhc3RydWN0" + + "dXJlCi0tLQoKIyBOVkNGIFNlbGYtTWFuYWdlZCBTdGFjayBPcGVyYXRpb25zCgpPcGVyYXRpb25h" + + "bCBndWlkZSBmb3IgbWF0Y2hpbmcgTlZDRiBjb250cm9sLXBsYW5lIGFuZCBjb21wdXRlLXBsYW5l" + + "IEhlbG1maWxlIGJ1bmRsZXMuCgojIyBJbnN0cnVjdGlvbnMKClVzZSB0aGlzIHNraWxsIGZvciBp" + + "bnN0YWxsLCB1cGdyYWRlLCBvciB0ZWFyZG93biB3b3JrIGluIG1hdGNoaW5nIGBudmNmLXNlbGYt" + + "bWFuYWdlZC1zdGFja2AgYW5kIGBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXM7IGtl" + + "ZXAgSGVsbWZpbGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSBoYW5kb2ZmcyBzZXBhcmF0ZS4gRm9y" + + "IGBmdW5jdGlvblR5cGU6ICJMTE0iYCwgcmVhZCBbTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnRdKHJl" + + "ZmVyZW5jZXMvaGVsbWZpbGUtc3RydWN0dXJlLm1kI2xsbS1mdW5jdGlvbi1lbmFibGVtZW50KS4K" + + "CiMjIFByZXJlcXVpc2l0ZXMKCkFzayBmb3IgdGhlIGV4dHJhY3RlZCBgbnZjZi1zZWxmLW1hbmFn" + + "ZWQtc3RhY2tgIHBhdGguIEZvciBzcGxpdCBpbnN0YWxsYXRpb24sCmFsc28gcmVxdWlyZSB0aGUg" + + "bWF0Y2hpbmctdmVyc2lvbiBgbnZjZi1jb21wdXRlLXBsYW5lLXN0YWNrYCBwYXRoLiBWZXJpZnkg" + + "Ym90aDoKCmBgYGJhc2gKbHMgPGNvbnRyb2wtcGxhbmUtc3RhY2s+L2hlbG1maWxlLmQvIDxjb250" + + "cm9sLXBsYW5lLXN0YWNrPi9lbnZpcm9ubWVudHMvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9zZWNy" + + "ZXRzLyA8Y29udHJvbC1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmxzIDxjb21wdXRl" + + "LXBsYW5lLXN0YWNrPi9oZWxtZmlsZS5kLyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZW52aXJvbm1l" + + "bnRzLyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmBgYAoKSWYgZWl0" + + "aGVyIGRpcmVjdG9yeSBpcyBtaXNzaW5nLCBkb3dubG9hZCBtYXRjaGluZyBidW5kbGUgdmVyc2lv" + + "bnMgZnJvbSBOR0M6CgpgYGBiYXNoCm5nYyByZWdpc3RyeSByZXNvdXJjZSBkb3dubG9hZC12ZXJz" + + "aW9uIDxvcmc+L252Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrOjx2ZXJzaW9uPgpuZ2MgcmVnaXN0cnkg" + + "cmVzb3VyY2UgZG93bmxvYWQtdmVyc2lvbiA8b3JnPi9udmNmLWNvbXB1dGUtcGxhbmUtc3RhY2s6" + + "PHZlcnNpb24+CmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhlIGNv" + + "bnRyb2wtcGxhbmUgYnVuZGxlIHJvb3QuIFNwbGl0LWZsb3cKY29tbWFuZHMgYW5kIHJvb3Qgc3Vi" + + "c3RpdHV0aW9uIGFyZSBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVy" + + "ZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLgoKIyMgQmVmb3JlIFlvdSBTdGFy" + + "dAoKVmVyaWZ5IHRvb2xpbmcgYW5kIGNvbnRleHQgYmVmb3JlIGFueSBvcGVyYXRpb246CgpgYGBi" + + "YXNoCmhlbG1maWxlIC0tdmVyc2lvbiAgICMgTXVzdCBiZSAxLjEueCAoMS4yLjAgcmVtb3ZlZCBz" + + "ZXF1ZW50aWFsIG1vZGUpCmhlbG0gdmVyc2lvbiAgICAgICAgICMgTXVzdCBiZSA+PSAzLjEyCmhl" + + "bG0gcGx1Z2luIGxpc3QgICAgICMgTXVzdCBpbmNsdWRlIGhlbG0tZGlmZiA+PSAzLjExCmt1YmVj" + + "dGwgdmVyc2lvbiAgICAgICMgQ2xpZW50IG11c3QgYmUgd2l0aGluIDEgbWlub3IgdmVyc2lvbiBv" + + "ZiBjbHVzdGVyCmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5kcyBydW4gZnJvbSB0aGUgZXh0cmFj" + + "dGVkIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFjay9gIHJvb3Q6CgpgYGBiYXNoCmNkIHBhdGgvdG8v" + + "bnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sKbHMgaGVsbWZpbGUuZC8gZW52aXJvbm1lbnRzLyBzZWNy" + + "ZXRzLyBnbG9iYWwueWFtbC5nb3RtcGwKYGBgCgpJZGVudGlmeSB0aGUgZW52aXJvbm1lbnQgZnJv" + + "bSBgZW52aXJvbm1lbnRzLzxuYW1lPi55YW1sYCBhbmQKYHNlY3JldHMvPG5hbWU+LXNlY3JldHMu" + + "eWFtbGA7IGZvciBFS1MsIHVzZSB0aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxl" + + "XShodHRwczovL2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1l" + + "eGFtcGxlKS4KCiMjIEhvdyBWYWx1ZXMgRmxvdwoKVW5kZXJzdGFuZGluZyB2YWx1ZSBwcmVjZWRl" + + "bmNlIHByZXZlbnRzIHRoZSBtb3N0IGNvbW1vbiBjb25maWd1cmF0aW9uIG1pc3Rha2VzLgoKYGBg" + + "dGV4dAplbnZpcm9ubWVudHMvYmFzZS55YW1sICAgICAgICAgIChkZWZhdWx0cykKICAgIC0+IG1l" + + "cmdlZCB3aXRoCmVudmlyb25tZW50cy88ZW52Pi55YW1sICAgICAgICAgKHlvdXIgb3ZlcnJpZGVz" + + "KQogICAgLT4gY29uc3VtZWQgYnkKZ2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAoR28g" + + "dGVtcGxhdGUsIGNvbnN0cnVjdHMgcGVyLWNoYXJ0IHZhbHVlcykKICAgIC0+IGNvbnN1bWVkIGJ5" + + "CnNlY3JldHMvPGVudj4tc2VjcmV0cy55YW1sICAgICAgKHNlbnNpdGl2ZSB2YWx1ZXMpCiAgICAt" + + "PiBvdmVycmlkZGVuIGJ5CnJlbGVhc2UgaW5saW5lIHZhbHVlczogYmxvY2tzICAgKGhpZ2hlc3Qg" + + "cHJlY2VkZW5jZSkKYGBgCgpDcml0aWNhbDogYGdsb2JhbC55YW1sLmdvdG1wbGAgb25seSBwYXNz" + + "ZXMgdGhyb3VnaCBzcGVjaWZpYyBrZXlzIHRvIGVhY2ggY2hhcnQgKGltYWdlIHJlZ2lzdHJpZXMs" + + "IG5vZGUgc2VsZWN0b3JzLCBzdG9yYWdlLCByZXBsaWNhIGNvdW50cykuIFNldHRpbmcgYW4gYXJi" + + "aXRyYXJ5IGNoYXJ0IHZhbHVlIGluIHRoZSBlbnZpcm9ubWVudCBmaWxlIHdpbGwgYmUgc2lsZW50" + + "bHkgaWdub3JlZCBpZiBgZ2xvYmFsLnlhbWwuZ290bXBsYCBkb2VzIG5vdCBwcm9wYWdhdGUgaXQu" + + "CgpUbyBvdmVycmlkZSBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzLCB1c2UgYSBoZWxtZmlsZSByZWxl" + + "YXNlIGB2YWx1ZXM6YCBibG9jay4gU2VlIFtPdmVycmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzXSgj" + + "b3ZlcnJpZGluZy1oZWxtLWNoYXJ0LXZhbHVlcykuCgojIyBDbGVhbiBJbnN0YWxsYXRpb24KCiMj" + + "IyAxLiBDcmVhdGUgbmFtZXNwYWNlcyBhbmQgaW1hZ2UgcHVsbCBzZWNyZXRzIChpZiB1c2luZyBh" + + "IHByaXZhdGUgcmVnaXN0cnkpCgpgYGBiYXNoCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5h" + + "dHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2Vy" + + "OyBkbwogIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSAiJG5zIiAtLWRyeS1ydW49Y2xpZW50IC1v" + + "IHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KZG9uZQoKIyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBh" + + "IHByaXZhdGUgcmVnaXN0cnkgKGUuZy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9" + + "Ijx5b3VyLWtleT4iCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2Yg" + + "YXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwg" + + "Y3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1z" + + "ZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAg" + + "IC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMi" + + "IFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpkb25l" + + "CmBgYAoKSWYgdXNpbmcgcHVsbCBzZWNyZXRzLCB5b3UgbXVzdCBhbHNvIGNvbmZpZ3VyZSBlYWNo" + + "IGhlbG1maWxlIHJlbGVhc2UgdG8gcmVmZXJlbmNlIHRoZW0uIFNlZSBbSW1hZ2UgUHVsbCBTZWNy" + + "ZXRzXSgjaW1hZ2UtcHVsbC1zZWNyZXRzKS4KCiMjIyAyLiBBdXRoZW50aWNhdGUgaGVsbSB0byB5" + + "b3VyIGNoYXJ0IHJlZ2lzdHJ5CgpCb3RoIGBkb2NrZXIgbG9naW5gIEFORCBgaGVsbSByZWdpc3Ry" + + "eSBsb2dpbmAgYXJlIHJlcXVpcmVkIGZvciBOR0MuIEhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRv" + + "Y2tlcikgdG8gcHVsbCBPQ0kgY2hhcnRzLCBzbyB0aGUgaGVsbSBjcmVkZW50aWFsIHN0b3JlIG11" + + "c3QgYmUgYXV0aGVudGljYXRlZCBzZXBhcmF0ZWx5LgoKYGBgYmFzaAojIE5HQyAtLSBib3RoIGNv" + + "bW1hbmRzIGFyZSByZXF1aXJlZApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4n" + + "IC1wICIkTkdDX0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRo" + + "dG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCgojIEVDUgphd3MgZWNyIGdldC1sb2dpbi1wYXNzd29y" + + "ZCAtLXJlZ2lvbiA8cmVnaW9uPiB8IFwKICBoZWxtIHJlZ2lzdHJ5IGxvZ2luIC0tdXNlcm5hbWUg" + + "QVdTIC0tcGFzc3dvcmQtc3RkaW4gPGFjY291bnQ+LmRrci5lY3IuPHJlZ2lvbj4uYW1hem9uYXdz" + + "LmNvbQpgYGAKCj4gTm90ZTogYGhlbG0gcmVnaXN0cnkgbG9naW5gIGtlZXBzIG9ubHkgdGhlIGxh" + + "c3QgbG9naW4gcGVyIGhvc3QgKG11bHRpLW9yZyBnb3RjaGEpLgo+IFRoZSBzdGFjayBhbmQgdGhl" + + "IGNhY2hlcyBzcGFuIHNldmVyYWwgTkdDIG9yZ3MgdGhhdCBuZWVkIGRpZmZlcmVudCBrZXlzLCBi" + + "dXQgdGhleSBhbGwKPiBsaXZlIHVuZGVyIHRoZSBvbmUgaG9zdCBgbnZjci5pb2AuIEEgc2Vjb25k" + + "IGBoZWxtIHJlZ2lzdHJ5IGxvZ2luIG52Y3IuaW9gIChvcgo+IGBkb2NrZXIgbG9naW5gKSB3aXRo" + + "IGEgZGlmZmVyZW50IGtleSBzaWxlbnRseSBvdmVyd3JpdGVzIHRoZSBmaXJzdCwgc28gcHVsbHMg" + + "Zm9yIHRoZQo+IGZpcnN0IG9yZyB0aGVuIGZhaWwgd2l0aCBhIG1pc2xlYWRpbmcgYDQwMyBBY2Nl" + + "c3MgRGVuaWVkYCAobm90IGEgNDAxOiB0aGUgYXV0aAo+IHN1Y2NlZWRlZCwgaXQncyB0aGUgd3Jv" + + "bmctb3JnIGtleSkuIElmIHlvdSBwdWxsIGNoYXJ0cy9pbWFnZXMgZnJvbSBtb3JlIHRoYW4gb25l" + + "IG9yZywKPiBlaXRoZXIgcmUtcnVuIHRoZSBsb2dpbiB3aXRoIHRoZSBjb3JyZWN0IGtleSBpbW1l" + + "ZGlhdGVseSBiZWZvcmUgZWFjaCBwdWxsLCBvciBwYXNzCj4gYC0tdXNlcm5hbWUgJyRvYXV0aHRv" + + "a2VuJyAtLXBhc3N3b3JkIDxrZXk+YCBwZXIgYGhlbG0gcHVsbGAgaW52b2NhdGlvbiBpbnN0ZWFk" + + "IG9mIHJlbHlpbmcKPiBvbiB0aGUgc3RvcmVkIGxvZ2luLiAoUHVsbGluZyBldmVyeXRoaW5nIGZy" + + "b20gYSBzaW5nbGUgcmVnaXN0cnkgbWlycm9yIGF2b2lkcyB0aGlzCj4gZW50aXJlbHkuKQoKIyMj" + + "IDJiLiAoUmVjb21tZW5kZWQpIFB1bGwgZnJvbSBhIHJlZ2lzdHJ5IHRoZSBjbHVzdGVyIGF1dGhl" + + "bnRpY2F0ZXMgdG8gYXV0b21hdGljYWxseQoKSWYgeW91IG1pcnJvciB0aGUgTlZDRiBpbWFnZXMg" + + "aW50byBhIHJlZ2lzdHJ5IHRoYXQgdGhlIGNsdXN0ZXIgY2FuIHB1bGwgZnJvbSB3aXRob3V0IGFu" + + "CmV4cGxpY2l0IGltYWdlIHB1bGwgc2VjcmV0IChmb3IgZXhhbXBsZSwgYSByZWdpc3RyeSB3aGVy" + + "ZSB0aGUgbm9kZSBvciB3b3JrbG9hZCBpZGVudGl0eSBpcwpncmFudGVkIHB1bGwgYWNjZXNzIGF1" + + "dG9tYXRpY2FsbHkpLCBwb2ludCB0aGUgc3RhY2sgYXQgaXQgYW5kIHNraXAgdGhlIGNyZWRlbnRp" + + "YWwgc3RlcHMKYWJvdmUuCgoxLiBQb2ludCB0aGUgc3RhY2sgYXQgdGhlIG1pcnJvciBpbiBgZW52" + + "aXJvbm1lbnRzLzxlbnY+LnlhbWxgOgoKICAgYGBgeWFtbAogICBnbG9iYWw6CiAgICAgaW1hZ2U6" + + "CiAgICAgICByZWdpc3RyeTogPHlvdXItcmVnaXN0cnk+ICAgICAgICAgICAgIyBlLmcuIHJlZ2lz" + + "dHJ5LmV4YW1wbGUuY29tCiAgICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICAg" + + "IGhlbG06CiAgICAgICBzb3VyY2VzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25s" + + "eSBpZiB5b3UgYWxzbyBtaXJyb3JlZCB0aGUgaGVsbSBjaGFydHMKICAgICAgICAgcmVnaXN0cnk6" + + "IDx5b3VyLXJlZ2lzdHJ5PgogICAgICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgog" + + "ICBgYGAKCiAgID4gVGhlIG1hbmlmZXN0IGhhcyBhIG1peCBvZiBPQ0kgYW5kIG5vbi1PQ0kgYXJ0" + + "aWZhY3RzLCBzbyBjb252ZXJ0IG5vbi1PQ0kgY2hhcnRzIGJlZm9yZQogICA+IG1pcnJvcmluZy4g" + + "Q29udGFpbmVyIGltYWdlcyAoYG52Y3IuaW8vLi4uYCkgYXJlIGFscmVhZHkgT0NJIGFuZCBtaXJy" + + "b3IgYXMtaXMuIFNvbWUgSGVsbQogICA+IGNoYXJ0cywgdGhvdWdoLCBhcmUgcHVibGlzaGVkIHRv" + + "IGFuIGBodHRwczovL2AgSGVsbSByZXBvc2l0b3J5IChmb3IgZXhhbXBsZQogICA+IGBoZWxtLm5n" + + "Yy5udmlkaWEuY29tYCkuIFRob3NlIGFyZSBub3QgT0NJIGFuZCBjYW5ub3QgYmUgcmVzb2x2ZWQg" + + "YnkgYGdsb2JhbC5oZWxtLnNvdXJjZXNgCiAgID4gKE9DSSkgb3IgbWlycm9yZWQgZGlyZWN0bHku" + + "IEJlZm9yZSBwb2ludGluZyB0aGUgc3RhY2sgYXQgeW91ciBtaXJyb3IsIGNvbnZlcnQgZWFjaAog" + + "ICA+IGBodHRwczovL2AgY2hhcnQgdG8gT0NJOiBgaGVsbSByZXBvIGFkZGAvYGhlbG0gcHVsbGAg" + + "dGhlIGAudGd6YCwgdGhlbgogICA+IGBoZWxtIHB1c2ggPGNoYXJ0Pi50Z3ogb2NpOi8vPHlvdXIt" + + "cmVnaXN0cnk+LzxtaXJyb3Itc3ViLXBhdGg+YC4gT25seSBPQ0kgY2hhcnRzIGNhbiBsaXZlCiAg" + + "ID4gdW5kZXIgYGdsb2JhbC5oZWxtLnNvdXJjZXNgLgoKMi4gU2tpcCB0aGUgY3JlZGVudGlhbCBz" + + "dGVwcyBhYm92ZS4gV2hlbiB0aGUgY2x1c3RlciBhdXRoZW50aWNhdGVzIHRvIHRoZSByZWdpc3Ry" + + "eQogICBhdXRvbWF0aWNhbGx5ICh0aGUgbm9kZSBvciB3b3JrbG9hZCBpZGVudGl0eSBoYXMgcHVs" + + "bCBhY2Nlc3MpLCB0aGUgcHVsbCBuZWVkcyBubwogICBLdWJlcm5ldGVzIHNlY3JldCwgc28geW91" + + "IGRvIG5vdCBuZWVkOiB0aGUgcGVyLW5hbWVzcGFjZSBgbnZjci1jcmVkc2AgZnJvbSBzdGVwIDEK" + + "ICAgKHN0aWxsIGNyZWF0ZSB0aGUgbmFtZXNwYWNlcywganVzdCBub3QgdGhlIHNlY3JldCksIHRo" + + "ZSBgZ2xvYmFsLmltYWdlUHVsbFNlY3JldHNgIGVudHJ5LAogICBvciB0aGUgYGRvY2tlciBsb2dp" + + "bmAvYGhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pb2AgZnJvbSBzdGVwIDIuCgogICA+IE9uZSBy" + + "ZXNpZHVhbCBjcmVkZW50aWFsOiBudmNmLWFwaSBzdGlsbCB2YWxpZGF0ZXMgdGhlIHVzZXIgZnVu" + + "Y3Rpb24gaW1hZ2UgYXQKICAgPiBgZnVuY3Rpb24gY3JlYXRlYCB2aWEgdGhlIGFjY291bnQgcmVn" + + "aXN0cnkgY3JlZGVudGlhbCwgc28gdGhhdCBjcmVkZW50aWFsIG11c3QgcG9pbnQgYXQKICAgPiB3" + + "aGljaGV2ZXIgcmVnaXN0cnkgaG9sZHMgdGhlIHVzZXIgaW1hZ2UgKHNldCBpdCB0byB5b3VyIG1p" + + "cnJvciBpZiB0aGUgaW1hZ2UgaXMgbWlycm9yZWQKICAgPiB0aGVyZSkuCgojIyMgMy4gU2V0IHRo" + + "ZSByb3V0ZSBkb21haW4KCmBnbG9iYWwuZG9tYWluYCBzZXRzIHRoZSBob3N0bmFtZSBzdWZmaXgg" + + "Zm9yIHJvdXRlcyBzdWNoIGFzIGBhcGkuPGRvbWFpbj5gLiBJdCBkb2VzIG5vdCBjb25maWd1cmUg" + + "dGhlIEdhdGV3YXkgb3IgaXRzIGxvYWQgYmFsYW5jZXIuIFF1ZXJ5IHRoZSBleGFjdCBleGlzdGlu" + + "ZyBHYXRld2F5OgoKYGBgYmFzaApHQVRFV0FZX0FERFJFU1M9JChrdWJlY3RsIGdldCBnYXRld2F5" + + "IDxnYXRld2F5LW5hbWU+IC1uIDxnYXRld2F5LW5hbWVzcGFjZT4gLW8ganNvbnBhdGg9J3suc3Rh" + + "dHVzLmFkZHJlc3Nlc1swXS52YWx1ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSRVNTIgpgYGAK" + + "ClRoZSBhZGRyZXNzIG1heSBiZSBhIGhvc3RuYW1lIG9yIElQLiBDbG91ZCBwcm92aWRlciBhbmQg" + + "R2F0ZXdheSBjb25maWd1cmF0aW9uIGRldGVybWluZSB0aGUgbG9hZCBiYWxhbmNlciB0eXBlIGFu" + + "ZCBhZGRyZXNzIGZvcm1hdC4gVGhlIHNlbGYtbWFuYWdlZCBzdGFjayBkb2VzIG5vdCBzZWxlY3Qg" + + "ZWl0aGVyLgoKRm9yIHRlbXBvcmFyeSB0ZXN0aW5nIHdpdGhvdXQgRE5TLCB1c2UgYSBzdGFibGUg" + + "cmVzZXJ2ZWQgc3VmZml4IHN1Y2ggYXMgYGdsb2JhbC5kb21haW46ICJudmNmLnRlc3QiYCwgY29u" + + "bmVjdCB0byBgR0FURVdBWV9BRERSRVNTYCwgYW5kIHNlbmQgYEhvc3Q6IGFwaS5udmNmLnRlc3Rg" + + "LiBGb3IgcHJvZHVjdGlvbiwgdXNlIHlvdXIgYmFzZSBETlMgZG9tYWluIGFuZCBwb2ludCBpdHMg" + + "cm91dGUgcmVjb3JkcyB0byBgR0FURVdBWV9BRERSRVNTYC4gSWYgdGhlIGVuZHBvaW50IGxhdGVy" + + "IGNoYW5nZXMsIGtlZXAgYGdsb2JhbC5kb21haW5gIHN0YWJsZSBhbmQgdXBkYXRlIG9ubHkgRE5T" + + "IG9yIHRoZSBjbGllbnQgZGVzdGluYXRpb24uIFNlZSBFeGFtcGxlIDQgaW4gW2V4YW1wbGVzLm1k" + + "XShleGFtcGxlcy5tZCkuCgojIyMgNC4gUHJldmlldyBhbmQgZGVwbG95CgpgYGBiYXNoCkhFTE1G" + + "SUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIHRlbXBsYXRlICAgIyBQcmV2aWV3IHJlbmRlcmVk" + + "IG1hbmlmZXN0cwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSBzeW5jICAgICAgICMg" + + "RGVwbG95CmBgYAoKPiBTZXQgQk9USCBDYXNzYW5kcmEgcGFzc3dvcmRzIGluIHRoZSBzZWNyZXRz" + + "IGZpbGUuIFRoZSBzZWNyZXRzIGZpbGUgZG9jdW1lbnRzCj4gYERFRkFVTFRfQ0FTU0FORFJBX1BB" + + "U1NXT1JEYCwgYnV0IHRoZSBjYXNzYW5kcmEgY2hhcnQgaGFzIGEgc2Vjb25kIGNyZWRlbnRpYWws" + + "Cj4gYGNhc3NhbmRyYS5zZXJ2aWNlUm9sZVBhc3N3b3JkYCwgdGhhdCBkZWZhdWx0cyB0byBgY2hA" + + "bmczbTNgLiBJZiB5b3Ugc2V0IG9ubHkKPiBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgLCB0" + + "aGUgc2VydmljZSByb2xlIGtlZXBzIHRoYXQgZGVmYXVsdCBhbmQgZXZlcnkgREItYmFja2VkCj4g" + + "c2VydmljZSBjcmFzaC1sb29wcyB3aXRoIGBCYWQgY3JlZGVudGlhbHNgIG9uY2UgaXQgdHJpZXMg" + + "dG8gYXV0aGVudGljYXRlLiBTZXQKPiBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHRv" + + "IHRoZSBzYW1lIHZhbHVlIGFzIGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAuCgojIyMgNS4g" + + "RGVwbG95bWVudCBwaGFzZXMKCkhlbG1maWxlIGRlcGxveXMgaW4gb3JkZXIgd2l0aCBkZXBlbmRl" + + "bmNpZXM6Cgp8IFBoYXNlIHwgU2VsZWN0b3IgfCBTZXJ2aWNlcyB8IFdhaXQgdGltZSB8CnwtLS0t" + + "LS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwKfCAxIHwgYHJlbGVhc2UtZ3Jv" + + "dXA9ZGVwZW5kZW5jaWVzYCB8IE5BVFMsIE9wZW5CYW8sIENhc3NhbmRyYSB8IDUtMTAgbWluIHwK" + + "fCAyIHwgYHJlbGVhc2UtZ3JvdXA9c2VydmljZXNgIHwgQVBJLCBTSVMsIEVTUywgaW52b2NhdGlv" + + "biwgZ3JwYy1wcm94eSwgbm90YXJ5LCBhcGkta2V5cywgb3B0aW9uYWwgTExNIGdhdGV3YXkvcm91" + + "dGVyLCBvcHRpb25hbCBWYW5pdHkgR2F0ZXdheSwgTlZDRiBVSSB3aGVuIHRoZSBzdGFjayBwYWNr" + + "YWdlIGluY2x1ZGVzIHRoZSBhZGRvbiB8IDUtMTAgbWluIHwKfCAzIHwgYHJlbGVhc2UtZ3JvdXA9" + + "aW5ncmVzc2AgfCBHYXRld2F5IHJvdXRlcyB8IDEtMiBtaW4gfAp8IDQgfCBgcmVsZWFzZS1ncm91" + + "cD1vYnNlcnZhYmlsaXR5YCB8IE9ic2VydmFiaWxpdHkgc3RhY2sgKGlmIGVuYWJsZWQpIHwgMS0y" + + "IG1pbiB8CgpNb25pdG9yIGluIGEgc2VwYXJhdGUgdGVybWluYWw6CgpgYGBiYXNoCmt1YmVjdGwg" + + "Z2V0IHBvZHMgLUEgLXcKYGBgCgojIyMgNi4gRW5hYmxlIFZhbml0eSBHYXRld2F5IChvcHRpb25h" + + "bCkKClZhbml0eSBHYXRld2F5IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgYW5kIGlzIG9ubHkgbmVl" + + "ZGVkIGZvciBjdXN0b21lci1mYWNpbmcKaG9zdG5hbWVzIG9yIHBhdGggbWFwcGluZ3MgaW4gZnJv" + + "bnQgb2YgdGhlIHN0YW5kYXJkIE5WQ0YgQVBJIGFuZCBpbnZvY2F0aW9uCnJvdXRlcy4gSXQgaXMg" + + "YXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBWYW5pdHkg" + + "R2F0ZXdheQphZGRvbi4gSWYgdGhlIGV4dHJhY3RlZCBzdGFjayBwYWNrYWdlIGRvZXMgbm90IGNv" + + "bnRhaW4gYSBgdmFuaXR5LWdhdGV3YXlgCnJlbGVhc2UgYW5kIGB2YW5pdHlHYXRld2F5YCByb3V0" + + "ZSB2YWx1ZXMsIHNraXAgdGhlc2UgY29tbWFuZHMgYW5kIHVzZSBhIG5ld2VyCnN0YWNrIHBhY2th" + + "Z2UgdGhhdCBpbmNsdWRlcyB0aGVtLgoKSWYgdGhlIHN0YWNrIHBhY2thZ2UgaW5jbHVkZXMgdGhl" + + "IGFkZG9uLCBlbmFibGUgaXQgaW4KYGVudmlyb25tZW50cy88ZW52LW5hbWU+LnlhbWxgOgoKYGBg" + + "eWFtbAphZGRvbnM6CiAgdmFuaXR5R2F0ZXdheToKICAgIGVuYWJsZWQ6IHRydWUKICAgIG1hcHBp" + + "bmdDb25maWc6IHt9CmBgYAoKVGhlIGRlZmF1bHQgcm91dGUgaG9zdCBpcyBgdmFuaXR5Ljxkb21h" + + "aW4+YCBhbmQgdGhlIGJhY2tlbmQgaXMKYHZhbml0eS1nYXRld2F5Lm52Y2Y6ODA4MGAuIFB1dCBk" + + "ZXBsb3ltZW50LXNwZWNpZmljIGhvc3QgYW5kIHBhdGggbWFwcGluZ3MgdW5kZXIKYGFkZG9ucy52" + + "YW5pdHlHYXRld2F5Lm1hcHBpbmdDb25maWdgLiBJZiB5b3UgbmVlZCBjdXN0b20gdmFuaXR5IGhv" + + "c3RzIGluc3RlYWQgb2YKYHZhbml0eS48ZG9tYWluPmAsIHVzZSB0aGUgcm91dGUgaG9zdG5hbWUg" + + "b3ZlcnJpZGVzIHN1cHBvcnRlZCBieSB0aGUgc3RhY2sKcGFja2FnZSBhbmQgY3JlYXRlIG1hdGNo" + + "aW5nIEROUyByZWNvcmRzLgoKQWZ0ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0" + + "aGUgYHZhbml0eS1nYXRld2F5YCByZWxlYXNlLCBwcmV2aWV3IGFuZAphcHBseSB0aGUgc2Vydmlj" + + "ZSBhbmQgcm91dGU6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0t" + + "c2VsZWN0b3IgbmFtZT12YW5pdHktZ2F0ZXdheSB0ZW1wbGF0ZQpIRUxNRklMRV9FTlY9PGVudi1u" + + "YW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9dmFuaXR5LWdhdGV3YXkgc3luYwpIRUxNRklM" + + "RV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVz" + + "cyBzeW5jCmBgYAoKVmVyaWZ5IHRoZSByb3V0ZSBvbmx5IHdoZW4gdGhlIGFkZG9uIGlzIHByZXNl" + + "bnQgYW5kIGVuYWJsZWQ6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSxzdmMgLW4gbnZjZiAt" + + "bCBhcHAua3ViZXJuZXRlcy5pby9uYW1lPXZhbml0eS1nYXRld2F5Cmt1YmVjdGwgZ2V0IGh0dHBy" + + "b3V0ZSAtQSB8IGdyZXAgLWkgdmFuaXR5CmN1cmwgLUggIkhvc3Q6IHZhbml0eS48ZG9tYWluPiIg" + + "Imh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPi9oZWFsdGgiCmBgYAoKRG8gbm90IGVuYWJsZSBWYW5p" + + "dHkgR2F0ZXdheSBmb3Igc3RhbmRhcmQgQVBJLCBBUEkgS2V5cywgaW52b2NhdGlvbiwgTExNCmlu" + + "dm9jYXRpb24sIG9yIGdSUEMgdHJhZmZpYy4gVGhvc2Ugcm91dGVzIGFyZSBwcm92aWRlZCBieSB0" + + "aGUgYmFzZSBnYXRld2F5CnJvdXRlcy4KCiMjIyA3LiBFbmFibGUgTlZDRiBVSSAob3B0aW9uYWwp" + + "CgpOVkNGIFVJIGlzIGFuIG9wdGlvbmFsLCBjdXN0b21lci1mYWNpbmcgYWRtaW4tcGFuZWwgVUku" + + "IEl0IGlzIGRpc2FibGVkIGJ5CmRlZmF1bHQgYW5kIGF2YWlsYWJsZSBvbmx5IGluIHN0YWNrIHBh" + + "Y2thZ2VzIHRoYXQgaW5jbHVkZSB0aGUgTlZDRiBVSSBhZGRvbi4gSWYKeW91ciBleHRyYWN0ZWQg" + + "c3RhY2sgcGFja2FnZSBkb2VzIG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UgYW5kIGBu" + + "dmNmVWlgCnJvdXRlIHZhbHVlcywgc2tpcCB0aGlzIHNlY3Rpb24uIFRoZSBOVkNGIFVJIGFkbWlu" + + "IHBhbmVsIGlzIGN1cnJlbnRseQp1bmF1dGhlbnRpY2F0ZWQ7IGRvIG5vdCBleHBvc2UgaXQgdG8g" + + "dGhlIHB1YmxpYyBpbnRlcm5ldC4KCkZvciBlbmFibGVtZW50LCBuYW1lc3BhY2UgYW5kIHB1bGwg" + + "c2VjcmV0IHNldHVwLCBhcHBseSwgYW5kIHZlcmlmaWNhdGlvbiBzdGVwcywKc2VlIFtOVkNGIFVJ" + + "IEFkZG9uXShyZWZlcmVuY2VzL252Y2YtdWktYWRkb24ubWQpLgoKIyMjIDguIEluc3RhbGwgdGhl" + + "IHNlcGFyYXRlIGNvbXB1dGUtcGxhbmUgc3RhY2sKClRoZSBjb250cm9sLXBsYW5lIHN0YWNrIGRv" + + "ZXMgbm90IGluc3RhbGwgY29tcHV0ZS1wbGFuZSBjb21wb25lbnRzLiBBZnRlciBpdCBpcyBoZWFs" + + "dGh5LCBjaG9vc2UgZXhhY3RseSBvbmUgY29tcHV0ZS1wbGFuZSBoYW5kb2ZmOgoKLSBIZWxtZmls" + + "ZSB2YWx1ZXMgZmxvdzogYXV0aG9yIHNlcGFyYXRlIGVudmlyb25tZW50IGZpbGVzLCB0aGVuIHJl" + + "Z2lzdGVyIGFuZAogIGluc3RhbGwgd2l0aCB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZS4KLSBD" + + "TEkgcHJvZmlsZSBmbG93OiB1c2UgdGhlIHByb2ZpbGUgZ2VuZXJhdGVkIGJ5IHRoZSBDTEkgY29u" + + "dHJvbC1wbGFuZSBpbnN0YWxsLAogIHRoZW4gcnVuIHRoZSBjb21wbGV0ZSBDTEkgcmVnaXN0ZXIg" + + "YW5kIGluc3RhbGwgY29tbWFuZHMuCgpEbyBub3QgbWl4IHRoZXNlIGhhbmRvZmZzLiBGb2xsb3cg" + + "W1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxh" + + "bmUtaW5zdGFsbGF0aW9uLm1kKQpmb3IgY29tbWFuZHMsIEVLUyByb3V0aW5nLCBwdWxsIHNlY3Jl" + + "dHMsIHZlcmlmaWNhdGlvbiwgYW5kIHRlYXJkb3duIG9yZGVyLgoKIyMgQ2xlYW4gVGVhcmRvd24K" + + "CkRlc3Ryb3kgZXZlcnkgY29tcHV0ZSBwbGFuZSBiZWZvcmUgdGhlIGNvbnRyb2wgcGxhbmUsIHVz" + + "aW5nIHRoZSB0ZWFyZG93biBmb3IKdGhlIHNhbWUgaGFuZG9mZjsgc2VlIFtTcGxpdCBDb21wdXRl" + + "LVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlv" + + "bi5tZCN0ZWFyZG93bikuCgpTY29wZTogT25seSBkZXN0cm95IHJlbGVhc2VzIG1hbmFnZWQgYnkg" + + "dGhpcyBjb250cm9sLXBsYW5lIGhlbG1maWxlIHN0YWNrLiBUaGUgTlZDRiByZWxlYXNlcyBhcmU6" + + "IGBuYXRzYCwgYG9wZW5iYW8tc2VydmVyYCwgYGNhc3NhbmRyYWAsIGBhcGkta2V5c2AsIGBzaXNg" + + "LCBgYXBpYCwgYGludm9jYXRpb24tc2VydmljZWAsIGBncnBjLXByb3h5YCwgYGVzcy1hcGlgLCBg" + + "bm90YXJ5LXNlcnZpY2VgLCBvcHRpb25hbCBgdmFuaXR5LWdhdGV3YXlgLCBgbnZjZi11aWAsIGBh" + + "ZG1pbi1pc3N1ZXItcHJveHlgLCBhbmQgYGluZ3Jlc3NgOyBgY2VydC1tYW5hZ2VyYCBpcyBpbmNs" + + "dWRlZCBvbmx5IHdoZW4gYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IHRydWVgLiBUaGUgY29udHJvbC1w" + + "bGFuZSBuYW1lc3BhY2UgaW52ZW50b3J5IGFsc28gaW5jbHVkZXMgYGNlcnQtbWFuYWdlcmAsIGJ1" + + "dCBkZWZhdWx0IG5hbWVzcGFjZSBjbGVhbnVwIHByZXNlcnZlcyBpdC4gTmFtZXNwYWNlIHByZXNl" + + "cnZhdGlvbiBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgSGVsbSByZWxlYXNlLiBFeHRlcm5hbCBjZXJ0" + + "LW1hbmFnZXIgbXVzdCB1c2UgYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNlYDsgb3RoZXJ3aXNl" + + "IEhlbG1maWxlIHRyZWF0cyB0aGUgcmVsZWFzZSBhcyBzdGFjay1tYW5hZ2VkLiBEbyBub3QgZGVs" + + "ZXRlIG90aGVyIGhlbG0gcmVsZWFzZXMgb3IgbmFtZXNwYWNlcyBvbiB0aGUgY2x1c3Rlci4KCkJl" + + "Zm9yZSBjb250cm9sLXBsYW5lIGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2Vy" + + "IGlzIGV4dGVybmFsLiBGb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVj" + + "dGl2ZSBgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVl" + + "LiBGb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBj" + + "ZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVs" + + "ZWFzZSBtZXRhZGF0YSBhbmQgYWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNl" + + "LiBQcmVzZXJ2ZSB0aGUgbmFtZXNwYWNlIGJ5IGRlZmF1bHQ7IG9ubHkgcGxhbiBpdHMgcmVtb3Zh" + + "bCBhZnRlciB2ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGdldHRpbmcgZXhwbGlj" + + "aXQgY29uZmlybWF0aW9uLgoKIyMjIFN0YW5kYXJkIHRlYXJkb3duCgpSdW4gZnJvbSBpbnNpZGUg" + + "dGhlIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFjay9gIGRpcmVjdG9yeToKCmBgYGJhc2gKSEVMTUZJ" + + "TEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgZGVzdHJveQpgYGAKCiMjIyBEZWxldGUgbmFtZXNw" + + "YWNlcwoKYGBgYmFzaApmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNm" + + "IGFwaS1rZXlzIGVzcyBzaXMgbnZjZi11aSB2YXVsdC1zeXN0ZW07IGRvCiAga3ViZWN0bCBkZWxl" + + "dGUgbmFtZXNwYWNlICIkbnMiIC0taWdub3JlLW5vdC1mb3VuZApkb25lCmBgYAoKIyMjIFZlcmlm" + + "eSBjbGVhbgoKYGBgYmFzaAprdWJlY3RsIGdldCBucyB8IGdyZXAgLUUgJyhjYXNzYW5kcmF8bmF0" + + "c3x2YXVsdHxudmNmfGFwaS1rZXlzfGVzc3xzaXMpJwojIFNob3VsZCByZXR1cm4gZW1wdHkKYGBg" + + "CgojIyBPdmVycmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzCgojIyMgRW52aXJvbm1lbnQgZmlsZSAo" + + "bGltaXRlZCkKCldvcmtzIG9ubHkgZm9yIGtleXMgdGhhdCBgZ2xvYmFsLnlhbWwuZ290bXBsYCBw" + + "cm9wYWdhdGVzIChlLmcuLCBgY2Fzc2FuZHJhLnJlcGxpY2FDb3VudGAsIGBnbG9iYWwuc3RvcmFn" + + "ZUNsYXNzYCwgYGdsb2JhbC5pbWFnZWApLgoKIyMjIFJlbGVhc2UgdmFsdWVzIGJsb2NrIChhbnkg" + + "Y2hhcnQgdmFsdWUpCgpFZGl0IHRoZSByZWxlYXNlIGluIGBoZWxtZmlsZS5kLyoueWFtbC5nb3Rt" + + "cGxgIGFuZCBhZGQgYSBgdmFsdWVzOmAgYmxvY2suIEluIHRoZSBleGFtcGxlcyBiZWxvdywgYDxw" + + "cml2YXRlLXZhbHVlcz5gIHJlZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhl" + + "IGhlbG1maWxlIHN0YWNrIHJvb3QuCgpgYGB5YW1sCi0gbmFtZTogY2Fzc2FuZHJhCiAgdmVyc2lv" + + "bjogMC44LjAKICBjb25kaXRpb246IGNhc3NhbmRyYS5lbmFibGVkCiAgbmFtZXNwYWNlOiBjYXNz" + + "YW5kcmEtc3lzdGVtCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwu" + + "eWFtbC5nb3RtcGwKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVM" + + "TUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwKICAgIC0gY2Fzc2FuZHJhOgogICAgICAgIHJlc291" + + "cmNlczoKICAgICAgICAgIGxpbWl0czoKICAgICAgICAgICAgY3B1OiAiOCIKICAgICAgICAgICAg" + + "bWVtb3J5OiA4MTkyTWkKICAgICAgICAgIHJlcXVlc3RzOgogICAgICAgICAgICBjcHU6ICIyIgog" + + "ICAgICAgICAgICBtZW1vcnk6IDQwOTZNaQpgYGAKCllBTUwgbWVyZ2UgZ290Y2hhOiBXaGVuIGEg" + + "cmVsZWFzZSB1c2VzIGA8PDogKmRlcGVuZGVuY3lgIG9yIGBpbmhlcml0YCwgc3BlY2lmeWluZyBg" + + "dmFsdWVzOmAgcmVwbGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QuIFlvdSBtdXN0IHJl" + + "LWluY2x1ZGUgYGdsb2JhbC55YW1sLmdvdG1wbGAgYW5kIHRoZSBzZWNyZXRzIGZpbGUuCgojIyMg" + + "UHJldmlldyBhbmQgYXBwbHkgYSBzaW5nbGUgcmVsZWFzZQoKYGBgYmFzaApIRUxNRklMRV9FTlY9" + + "PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSAgIyBQcmV2" + + "aWV3CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJh" + + "IHN5bmMgICAgICAjIEFwcGx5CmBgYAoKIyMgSW1hZ2UgUHVsbCBTZWNyZXRzCgpUaGVyZSBhcmUg" + + "dGhyZWUgZGlzdGluY3QgY3JlZGVudGlhbCB0eXBlcy4gRG8gbm90IGNvbmZsYXRlIHRoZW0sIGFu" + + "ZCBtaW5kIHRoZQpmb3JtYXQgcnVsZSBiZWxvdyAodHdvIG9mIHRoZW0gZmFpbCBldmVuIHdpdGgg" + + "dGhlIGNvcnJlY3Qga2V5IGlmIHRoZSBmb3JtYXQgaXMgd3JvbmcpOgoKfCB8IENvbnRyb2wgUGxh" + + "bmUgUHVsbCBTZWNyZXRzIHwgQVBJIEJvb3RzdHJhcCBSZWdpc3RyeSBDcmVkcyB8IFNpZGVjYXIg" + + "SW1hZ2UtUHVsbCBTZWNyZXQgfAp8LS0tfC0tLXwtLS18LS0tfAp8IFB1cnBvc2UgfCBLOHMgcHVs" + + "bHMgTlZDRiBzZXJ2aWNlIGltYWdlcyB8IG52Y2YtYXBpIHZhbGlkYXRlcyB0aGUgdXNlciBmdW5j" + + "dGlvbiBpbWFnZSBhdCBgZnVuY3Rpb24gY3JlYXRlYCB8IG52Y2YtYXBpIHB1bGxzIHRoZSBwbGF0" + + "Zm9ybSBzaWRlY2FycyBpbmplY3RlZCBpbnRvIGV2ZXJ5IHdvcmtlciBwb2QgfAp8IFdoZXJlIHwg" + + "SzhzIGBkb2NrZXItcmVnaXN0cnlgIFNlY3JldHMgKyBLeXZlcm5vIENsdXN0ZXJQb2xpY3kgfCBg" + + "PHByaXZhdGUtdmFsdWVzPi88ZW52Pi1zZWNyZXRzLnlhbWxgIChhY2NvdW50LWJvb3RzdHJhcCkg" + + "fCBgTlZDRl9BUElfU0lERUNBUlNfSU1BR0VfUFVMTF9TRUNSRVRgIGluIGA8ZW52Pi1zZWNyZXRz" + + "LnlhbWxgIC0+IE9wZW5CYW8gYHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1" + + "bGwtc2VjcmV0YCAoZmllbGQgYHNlY3JldGApIHwKfCBGb3JtYXQgfCBzdGFuZGFyZCBgLmRvY2tl" + + "cmNvbmZpZ2pzb25gIChrdWJlY3RsIGJ1aWxkcyBpdCBmb3IgeW91KSB8IGBiYXNlNjQoIiRvYXV0" + + "aHRva2VuOjxrZXk+IilgIHwgYGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAgfAoKPiBOb3Rl" + + "OiB0aGUgYWNjb3VudC1ib290c3RyYXAgY3JlZCBhbmQgdGhlIHNpZGVjYXIgc2VjcmV0IGFyZSBO" + + "T1QgYQo+IGRvY2tlcmNvbmZpZ2pzb24uIFRoZSBzZWNyZXRzIHRlbXBsYXRlIHNoaXBzIHRoZSBw" + + "bGFjZWhvbGRlcgo+IGBSRVBMQUNFX1dJVEhfQkFTRTY0X0RPQ0tFUl9DUkVERU5USUFMYCwgd2hp" + + "Y2ggcmVhZHMgYXMgImJhc2U2NCBvZiBhIGRvY2tlcmNvbmZpZ2pzb24uIgo+IEl0IGlzbid0LiBC" + + "b3RoIHZhbHVlcyBhcmUgY29uc3VtZWQgYXMgYSByYXcgZG9ja2VyIGBhdXRoYCBzdHJpbmc6IG52" + + "Y2YtYXBpIHRha2VzIHRoZQo+IHZhbHVlIHZlcmJhdGltIGFuZCBkcm9wcyBpdCBpbnRvIHRoZSBg" + + "YXV0aGAgZmllbGQgb2YgdGhlIGRvY2tlcmNvbmZpZyBpdCBidWlsZHMuIFNvIHRoZQo+IHZhbHVl" + + "IG11c3QgYmUgYGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAsIGUuZy4gYHByaW50ZiAnJG9h" + + "dXRodG9rZW46JXMnICIkS0VZIiB8IG9wZW5zc2wgYmFzZTY0IC1BYCwKPiBub3QgYGJhc2U2NCg8" + + "ZG9ja2VyY29uZmlnanNvbj4pYC4KPgo+IC0gV3JvbmcgYWNjb3VudC1ib290c3RyYXAgdmFsdWU6" + + "IGBmdW5jdGlvbiBjcmVhdGVgIHJldHVybnMKPiAgICBgNDAwICJtdXN0IGJlIGJhc2U2NCBlbmNv" + + "ZGVkIHVzZXJuYW1lOnBhc3N3b3JkIGZvcm1hdCJgLgo+IC0gV3Jvbmcgc2lkZWNhciB2YWx1ZTog" + + "ZXZlcnkgd29ya2VyJ3Mgc2lkZWNhciBwdWxsIGdldHMgYSBtYWxmb3JtZWQgY3JlZGVudGlhbCBh" + + "bmQKPiAgICBgNDAzYHMsIHJlZ2FyZGxlc3Mgb2Ygd2hpY2gga2V5IGlzIGluc2lkZS4gVGhlIHN5" + + "bXB0b20gbG9va3MgbGlrZSBhIGJhZCBvciB3cm9uZy1vcmcKPiAgICBrZXksIGJ1dCB0aGUga2V5" + + "IGlzIGZpbmUgYW5kIHRoZSBlbmNvZGluZyBpcyB0aGUgYnVnLiBUbyByZXBhaXIgYW4gYWxyZWFk" + + "eS1pbnN0YWxsZWQKPiAgICBzdGFjayB3aXRob3V0IGEgZnVsbCByZS1zeW5jOgo+Cj4gICAgYGBg" + + "YmFzaAo+ICAgIEFVVEg9JChwcmludGYgJyRvYXV0aHRva2VuOiVzJyAiJEtFWSIgfCBvcGVuc3Ns" + + "IGJhc2U2NCAtQSkKPiAgICBiYW8ga3YgcHV0IHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJz" + + "L2ltYWdlLXB1bGwtc2VjcmV0IHNlY3JldD0iJEFVVEgiCj4gICAgIyBpZiBOVklESUEgQ2xvdWQg" + + "VGFza3MgaXMgZW5hYmxlZCwgcmVwZWF0IGZvciBzZXJ2aWNlcy9udmN0LWFwaS9rdi9zaWRlY2Fy" + + "cy9pbWFnZS1wdWxsLXNlY3JldAo+ICAgIGt1YmVjdGwgcm9sbG91dCByZXN0YXJ0IC1uIG52Y2Yg" + + "ZGVwbG95L252Y2YtYXBpICAgIyBwaWNrcyB1cCB0aGUgbmV3IHNpZGVjYXIgY3JlZAo+ICAgIGBg" + + "YAo+Cj4gTm90ZSAobXVsdGktb3JnKTogd2hlbiBwdWxsaW5nIGZyb20gTkdDIChub3QgYSBtaXJy" + + "b3IpLCB0aGUgdXNlciBmdW5jdGlvbiBpbWFnZSBhbmQKPiB0aGUgcGxhdGZvcm0gc2lkZWNhcnMg" + + "b2Z0ZW4gbGl2ZSBpbiBkaWZmZXJlbnQgbnZjci5pbyBvcmdzLCBlYWNoIG5lZWRpbmcgYSBkaWZm" + + "ZXJlbnQKPiBrZXksIHNvIHRoZSBhY2NvdW50LWJvb3RzdHJhcCBjcmVkIChmdW5jdGlvbiBpbWFn" + + "ZSkgYW5kIHRoZSBzaWRlY2FyIHNlY3JldCAoc2lkZWNhcnMpCj4gYXJlIGZyZXF1ZW50bHkgdHdv" + + "IGRpZmZlcmVudCBrZXlzLiBNaXJyb3JpbmcgZXZlcnl0aGluZyBpbnRvIGEgc2luZ2xlIHJlZ2lz" + + "dHJ5IHRoZQo+IGNsdXN0ZXIgYXV0aGVudGljYXRlcyB0byBhdXRvbWF0aWNhbGx5IGNvbGxhcHNl" + + "cyB0aGlzIHRvIG9uZSBjcmVkZW50aWFsIHBhdGguCgojIyMgQ29uZmlndXJpbmcgd2l0aCBLeXZl" + + "cm5vIChyZWNvbW1lbmRlZCkKClVzZSBhIEt5dmVybm8gbXV0YXRpbmcgYWRtaXNzaW9uIHBvbGlj" + + "eSB0byBhdXRvbWF0aWNhbGx5IGluamVjdCBgaW1hZ2VQdWxsU2VjcmV0c2AgaW50byBhbGwgcG9k" + + "cyBpbiBOVkNGIG5hbWVzcGFjZXMuIFRoaXMgd29ya3MgdW5pZm9ybWx5IGZvciBhbGwgY2hhcnRz" + + "IC0tIG5vIHBlci1jaGFydCBjb25maWd1cmF0aW9uIG9yIGhlbG1maWxlIG1vZGlmaWNhdGlvbnMg" + + "bmVlZGVkLgoKYGBgYmFzaAojIDEuIEluc3RhbGwgS3l2ZXJubwpoZWxtIHJlcG8gYWRkIGt5dmVy" + + "bm8gaHR0cHM6Ly9reXZlcm5vLmdpdGh1Yi5pby9reXZlcm5vLwpoZWxtIHJlcG8gdXBkYXRlCmhl" + + "bG0gaW5zdGFsbCBreXZlcm5vIGt5dmVybm8va3l2ZXJubyAtbiBreXZlcm5vIC0tY3JlYXRlLW5h" + + "bWVzcGFjZQoKIyAyLiBDcmVhdGUgcHVsbCBzZWNyZXQgaW4gZWFjaCBuYW1lc3BhY2UKZXhwb3J0" + + "IE5HQ19BUElfS0VZPSI8eW91ci1rZXk+Igpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRz" + + "LXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsg" + + "ZG8KICBrdWJlY3RsIGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAog" + + "ICAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0" + + "aHRva2VuJyBcCiAgICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5h" + + "bWVzcGFjZT0iJG5zIiBcCiAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFw" + + "cGx5IC1mIC0KZG9uZQoKIyAzLiBBcHBseSB0aGUgS3l2ZXJubyBDbHVzdGVyUG9saWN5Cmt1YmVj" + + "dGwgYXBwbHkgLWYga3l2ZXJuby1pbWFnZXB1bGxzZWNyZXQtcG9saWN5LnlhbWwKYGBgCgpUaGUg" + + "cG9saWN5IG11dGF0ZXMgZXZlcnkgcG9kIGF0IGFkbWlzc2lvbiB0aW1lLCBhZGRpbmcgYGltYWdl" + + "UHVsbFNlY3JldHM6IFt7bmFtZTogbnZjci1jcmVkc31dYC4gVmVyaWZ5IHdpdGg6CgpgYGBiYXNo" + + "Cmt1YmVjdGwgZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IC1vIGpzb25wYXRoPSd7" + + "LnNwZWMuaW1hZ2VQdWxsU2VjcmV0c30nCiMgU2hvdWxkIHNob3c6IFt7Im5hbWUiOiJudmNyLWNy" + + "ZWRzIn1dCmBgYAoKTm90IG5lZWRlZCBpZiB1c2luZyBhIENTUCBidWlsdC1pbiBjcmVkZW50aWFs" + + "IGhlbHBlciAoZS5nLiwgRUNSIHdpdGggSUFNIG5vZGUgcm9sZXMpLgoKRm9yIHRoZSBLeXZlcm5v" + + "IHBvbGljeSBZQU1MIGFuZCBwdWxsIHNlY3JldCBjcmVhdGlvbiBzY3JpcHQsIHNlZSBbcmVmZXJl" + + "bmNlcy9wdWxsLXNlY3JldHMubWRdKHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKS4KCiMjIERl" + + "YnVnZ2luZwoKIyMjIFF1aWNrIHN0YXR1cyBjaGVjawoKYGBgYmFzaAprdWJlY3RsIGdldCBwb2Rz" + + "IC1BIC1vIHdpZGUgICAgICAgICAgICAgICAgICAgICAgICAjIEFsbCBwb2RzCmhlbG0gbGlzdCAt" + + "QSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFsbCBoZWxtIHJlbGVh" + + "c2VzCmt1YmVjdGwgZ2V0IGV2ZW50cyAtbiA8bnM+IC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAn" + + "ICAjIFJlY2VudCBldmVudHMKYGBgCgojIyMgQ29tbW9uIGZhaWx1cmUgcGF0dGVybnMKCnwgU3lt" + + "cHRvbSB8IENhdXNlIHwgRml4IHwKfC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tfAp8IGBJbWFnZVB1" + + "bGxCYWNrT2ZmYCArIGA0MDEgVW5hdXRob3JpemVkYCB8IE1pc3Npbmcgb3Igd3JvbmcgcHVsbCBz" + + "ZWNyZXQgfCBDaGVjayBzZWNyZXQgZXhpc3RzLCBjaGVjayBTQSBoYXMgaW1hZ2VQdWxsU2VjcmV0" + + "cyB8CnwgYEluaXQ6MC8xYCBzdHVjayBvbiBzZXJ2aWNlIHBvZHMgfCBWYXVsdC1hZ2VudCB3YWl0" + + "aW5nIGZvciBPcGVuQmFvIHwgQ2hlY2sgT3BlbkJhbyBwb2RzICsgbWlncmF0aW9uIGpvYiBzdGF0" + + "dXMgfAp8IGBJbml0OjAvMWAgKyBgdmF1bHQtYWdlbnQtaW5pdGAgc2hvd3MgYGF1dGgvand0L2xv" + + "Z2luYCAtPiBgNDAwIC4uLiBubyBrbm93biBrZXkgc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlZCB0aGUg" + + "dG9rZW4gc2lnbmF0dXJlYCB8IE9wZW5CYW8gSldUIGF1dGggY29uZmlndXJlZCB3aXRoIGEgc3Rh" + + "dGljIHB1YmtleSBpbnN0ZWFkIG9mIHRoZSBjbHVzdGVyJ3MgbGl2ZSBKV0tTIC0tIHRoZSBiYXNl" + + "IGRlZmF1bHQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFs" + + "c2VgLiBDb21tb24gb24gQUtTIC8gYW55IE9JREMtaXNzdWVyIGNsdXN0ZXIgfCBTZXQgYG9wZW5i" + + "YW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogdHJ1ZWAsIGRlbGV0ZSBqb2Ig" + + "YG9wZW5iYW8tc2VydmVyLW1pZ3JhdGlvbnNgLCByZS1zeW5jIGBvcGVuYmFvLXNlcnZlcmAuIFNl" + + "ZSBbcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRdKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kKSAiSW5p" + + "dDowLzEgU3R1Y2siIGZpeCAjNC4gfAp8IGBPT01LaWxsZWRgIG9uIENhc3NhbmRyYSB8IERlZmF1" + + "bHQgcmVzb3VyY2VzIHRvbyBzbWFsbCB8IE92ZXJyaWRlIGBjYXNzYW5kcmEucmVzb3VyY2VzYCB2" + + "aWEgdmFsdWVzIGJsb2NrIHwKfCBEQi1iYWNrZWQgc2VydmljZXMgY3Jhc2gtbG9vcCBgQmFkIGNy" + + "ZWRlbnRpYWxzYCBjb25uZWN0aW5nIHRvIENhc3NhbmRyYSB8IFNlY3JldHMgZmlsZSBzZXQgb25s" + + "eSBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgOyBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFz" + + "c3dvcmRgIHN0aWxsIGRlZmF1bHRzIHRvIGBjaEBuZzNtM2AgfCBTZXQgYGNhc3NhbmRyYS5zZXJ2" + + "aWNlUm9sZVBhc3N3b3JkYCBpbiB0aGUgc2VjcmV0cyBmaWxlIGVxdWFsIHRvIGBERUZBVUxUX0NB" + + "U1NBTkRSQV9QQVNTV09SRGAsIHRoZW4gcmUtc3luYyBjYXNzYW5kcmEgKyB0aGUgREItYmFja2Vk" + + "IHNlcnZpY2VzIHwKfCBgUGVuZGluZ2AgcG9kcyB8IE5vZGUgc2VsZWN0b3IgbWlzbWF0Y2ggb3Ig" + + "bm8gc3RvcmFnZSBjbGFzcyB8IGBrdWJlY3RsIGRlc2NyaWJlIHBvZGAsIGNoZWNrIGxhYmVscyBh" + + "bmQgc3RvcmFnZSB8CnwgSGVsbSByZWxlYXNlIGluIGBmYWlsZWRgIHN0YXRlIHwgRmlyc3QgaW5z" + + "dGFsbCBmYWlsZWQgcGFydHdheSB8IGBoZWxtZmlsZSBkZXN0cm95YCB0aGUgcmVsZWFzZSwgdGhl" + + "biBgc3luY2AgYWdhaW4gfAp8IEFjY291bnQgYm9vdHN0cmFwIHRpbWVvdXQgfCBXcm9uZyBiYXNl" + + "NjQgY3JlZGVudGlhbHMgaW4gc2VjcmV0cyBmaWxlIHwgQ2hlY2sgYGt1YmVjdGwgbG9ncyBqb2Iv" + + "bnZjZi1hcGktYWNjb3VudC1ib290c3RyYXAgLW4gbnZjZmAgfAp8IGZ1bmN0aW9uIC8gYWNjb3Vu" + + "dCBjYWxscyByZXR1cm4gYDQwNCBVbmtub3duIGNsaWVudF9pZGAgfCBUaGUgYWNjb3VudC1ib290" + + "c3RyYXAgcG9zdC1pbnN0YWxsIGhvb2sgbmV2ZXIgcmFuOiB0aGUgYGFwaWAgcmVsZWFzZSBpbnN0" + + "YWxsIGZhaWxlZCwgb3Igd2FzIHJlcGFpcmVkIHdpdGggbGl2ZSBwYXRjaGVzIGluc3RlYWQgb2Yg" + + "YSBjbGVhbiByZS1zeW5jLCBzbyB0aGUgaG9vayAoYW5kIHRoZSBhY2NvdW50KSB3YXMgc2tpcHBl" + + "ZCB8IFZlcmlmeSBhbmQgcmUtcnVuIHRoZSBob29rOyBzZWUgW1ZlcmlmeSB0aGUgYWNjb3VudCBi" + + "b290c3RyYXAgcmFuXSgjdmVyaWZ5LXRoZS1hY2NvdW50LWJvb3RzdHJhcC1yYW4pIHwKfCBTZXJ2" + + "aWNlcyBmYWlsIHRvIHJlYWQgdmF1bHQgc2VjcmV0czsgYHNlY3JldHMuanNvbmAgbm90IGZvdW5k" + + "IHwgVmF1bHQgcGF0aCBoYXJkY29kZWQgdG8gYC9ob21lL2FwcC92YXVsdC9gIGluIGBfaGVscGVy" + + "cy50cGxgOyB0aGUgcnVudGltZSByZXNvbHZlcyB0aGUgbW91bnRlZCBwYXRoIHJlbGF0aXZlIHRv" + + "IHRoZSB3b3JraW5nIGRpcmVjdG9yeSBhbmQgZHJvcHMgdGhlIGxlYWRpbmcgYC9gIHwgT3ZlcnJp" + + "ZGUgYHBvZEFubm90YXRpb25zYCBhbmQgc2V0IGBKQVZBX1RPT0xfT1BUSU9OUzogIi1EdXNlci5k" + + "aXI9LyJgIGluIHJlbGVhc2UgdmFsdWVzIHwKfCBOQVRTIGNvbm5lY3Rpb24gZmFpbHMgYXQgc3Rh" + + "cnR1cDsgcGxhY2VtZW50IHRhZyBtaXNtYXRjaCB8IE5BVFMgc2VydmVyIHRhZ3MgaGFyZGNvZGVk" + + "IHRvIGBkYzpuY3BgOyBhcHAgZGVyaXZlcyB0YWcgZnJvbSBgQVdTX1JFR0lPTmAgKGUuZy4sIGB1" + + "cy1nb3Ytd2VzdC0xYCkgfCBTZXQgYEFXU19SRUdJT049bmNwYCBhbmQgYE5WQ0ZfQVdTX1JFR0lP" + + "Tj1uY3BgIGluIGVudiBjb25maWcgfAoKIyMjIFZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAg" + + "cmFuCgpUaGUgZGVmYXVsdCBhY2NvdW50IGlzIGNyZWF0ZWQgYnkgYSAqKmBwb3N0LWluc3RhbGxg" + + "IGhvb2sgb24gdGhlIGBhcGlgIHJlbGVhc2UqKgooYGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3Rz" + + "dHJhcGAgaW4gYG52Y2ZgKS4gQmVjYXVzZSBpdCBpcyBhIHBvc3QtaW5zdGFsbCBob29rLCBpdCBv" + + "bmx5CmZpcmVzIG9uIGEgc3VjY2Vzc2Z1bCBgYXBpYCBpbnN0YWxsLiBJZiB0aGF0IGluc3RhbGwg" + + "ZmFpbGVkIGFuZCB5b3UgcmVwYWlyZWQgaXQgd2l0aCBsaXZlCnBhdGNoZXMgKHJhdGhlciB0aGFu" + + "IGEgY2xlYW4gcmUtc3luYyksIHRoZSBob29rIG5ldmVyIHJ1bnMsIG5vIGFjY291bnQgaXMgY3Jl" + + "YXRlZCwgYW5kCmV2ZXJ5IHN1YnNlcXVlbnQgZnVuY3Rpb24vYWNjb3VudCBjYWxsIHJldHVybnMg" + + "YSBjcnlwdGljIGA0MDQgVW5rbm93biBjbGllbnRfaWRgIHdpdGgKbm90aGluZyBvYnZpb3VzbHkg" + + "d3JvbmcgaW4gdGhlIHJ1bm5pbmcgcG9kcy4KClZlcmlmeSBpdCByYW4gYWZ0ZXIgdGhlIGZpcnN0" + + "IHN5bmM6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGpvYiAtbiBudmNmIG52Y2YtYXBpLWFjY291bnQt" + + "Ym9vdHN0cmFwIFwKICAtbyBqc29ucGF0aD0ney5zdGF0dXMuc3VjY2VlZGVkfScgICAjIGV4cGVj" + + "dCAxCmBgYAoKSWYgdGhlIGpvYiBpcyBhYnNlbnQgb3IgYDBgLCByZS1ydW4gaXQgYnkgcmUtc3lu" + + "Y2luZyB0aGUgYGFwaWAgcmVsZWFzZSBzbyB0aGUgaG9vayBmaXJlcwphZ2FpbiAoZGVsZXRlIHRo" + + "ZSBwcmlvciBqb2IgZmlyc3QgaWYgaXQgbGluZ2VycyBpbiBhIGNvbXBsZXRlZC9mYWlsZWQgc3Rh" + + "dGUgYW5kIGJsb2NrcyB0aGUKaG9vayk6CgpgYGBiYXNoCmt1YmVjdGwgZGVsZXRlIGpvYiAtbiBu" + + "dmNmIG52Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIC0taWdub3JlLW5vdC1mb3VuZApIRUxNRklM" + + "RV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWFwaSBzeW5jCmt1YmVjdGwgbG9n" + + "cyAtbiBudmNmIGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcCAgICMgY29uZmlybSB0aGUg" + + "YWNjb3VudCB3YXMgY3JlYXRlZApgYGAKCiMjIEFkZGl0aW9uYWwgUmVzb3VyY2VzCgotIEluc3Rh" + + "bGxhdGlvbjogW2V4YW1wbGVzLm1kXShleGFtcGxlcy5tZCksIHRoZSBbQ1NQIEVuZC10by1FbmQg" + + "RXhhbXBsZV0oaHR0cHM6Ly9kb2NzLm52aWRpYS5jb20vbnZjZi92MC42LjAtcmMvY3NwLWVuZC10" + + "by1lbmQtZXhhbXBsZSksIGFuZCBbc3BsaXQgY29tcHV0ZS1wbGFuZSB3b3JrZmxvd3NdKHJlZmVy" + + "ZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpCi0gT3BlcmF0aW9uczogW0hlbG1m" + + "aWxlIHN0cnVjdHVyZV0ocmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWQpLCBbcHVsbCBz" + + "ZWNyZXRzXShyZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCksIGFuZCBbZGVidWdnaW5nXShyZWZl" + + "cmVuY2VzL2RlYnVnZ2luZy5tZCkKCkFmdGVyIGRlcGxveW1lbnQsIHVzZSB0aGUgYG52Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLWNsaWAgc2tpbGwgdG8gY3JlYXRlIGZ1bmN0aW9ucywgY3JlYXRlIHRhc2tzLCBt" + + "YW5hZ2UgQVBJIGtleXMsIGFuZCBpbnZva2UgZW5kcG9pbnRzLgpQSwcIEcMUk0liAABJYgAAUEsD" + + "BBQACAAAAAAAIQAAAAAAAAAAAAAAAAA0AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + + "YXRpb24vZXZhbHMvZXZhbHMuanNvblVUBQABAKbOElsKICB7CiAgICAiaWQiOiAiRzEtdmFsaWRh" + + "dGUtdG9vbC12ZXJzaW9ucyIsCiAgICAicXVlc3Rpb24iOiAiSW5zdGFsbCB0aGUgTlZDRiBzZWxm" + + "LW1hbmFnZWQgc3RhY2sgb24gbXkgQVdTIEVLUyBjbHVzdGVyIiwKICAgICJleHBlY3RlZF9za2ls" + "bCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6" + - "ICJUaGUgYWdlbnQgcmFuIGJvdGggZG9ja2VyIGxvZ2luIGFuZCBoZWxtIHJlZ2lzdHJ5IGxvZ2lu" + - "IGZvciBudmNyLmlvLiBJdCBleHBsYWluZWQgdGhhdCBib3RoIGFyZSByZXF1aXJlZCBiZWNhdXNl" + - "IGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kgY2hhcnRzLCBzbyBk" + - "b2NrZXIgbG9naW4gYWxvbmUgaXMgaW5zdWZmaWNpZW50LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZp" + + "ICJUaGUgYWdlbnQncyBmaXJzdCBvcGVyYXRpb25hbCBzdGVwIGFmdGVyIHJlYWRpbmcgdGhlIHNr" + + "aWxsIHdhcyB0byB2YWxpZGF0ZSBhbGwgcmVxdWlyZWQgdG9vbCB2ZXJzaW9uczogaGVsbWZpbGUg" + + "KG11c3QgYmUgMS4xLngsIG5vdCAxLjIuMCksIGhlbG0gKD49IDMuMTIpLCBoZWxtLWRpZmYgcGx1" + + "Z2luICg+PSAzLjExKSwgYW5kIGt1YmVjdGwgKGNsaWVudCB3aXRoaW4gMSBtaW5vciBvZiBjbHVz" + + "dGVyKS4gSXQgZGlkIG5vdCBwcm9jZWVkIHRvIGhlbG1maWxlIHN5bmMgdW50aWwgYWxsIHZlcnNp" + + "b25zIHdlcmUgdmFsaWRhdGVkLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJU" + + "aGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1k" + + "IGJlZm9yZSB0YWtpbmcgYW55IGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtZmls" + + "ZSAtLXZlcnNpb24nIGFuZCB2ZXJpZmllZCBpdCBpcyAxLjEueCAobm90IDEuMi4wLCB3aGljaCBy" + + "ZW1vdmVkIHNlcXVlbnRpYWwgbW9kZSkiLAogICAgICAiVGhlIGFnZW50IHJhbiAnaGVsbSB2ZXJz" + + "aW9uJyBhbmQgdmVyaWZpZWQgaXQgaXMgPj0gMy4xMiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdo" + + "ZWxtIHBsdWdpbiBsaXN0JyBhbmQgdmVyaWZpZWQgaGVsbS1kaWZmID49IDMuMTEgaXMgaW5zdGFs" + + "bGVkIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2t1YmVjdGwgdmVyc2lvbicgdG8gY2hlY2sgY2xp" + + "ZW50L3NlcnZlciB2ZXJzaW9uIGNvbXBhdGliaWxpdHkiLAogICAgICAiVGhlIGFnZW50IGRpZCBu" + + "b3QgcHJvY2VlZCB0byBoZWxtZmlsZSBzeW5jIHVudGlsIGFsbCB2ZXJzaW9uIGNoZWNrcyBwYXNz" + + "ZWQiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzItdGVtcGxhdGUtYmVmb3JlLXN5bmMiLAog" + + "ICAgInF1ZXN0aW9uIjogIlF1aWNrLCBqdXN0IHJ1biBoZWxtZmlsZSBzeW5jIGZvciBteSBOVkNG" + + "IHN0YWNrLCBza2lwIGFsbCB0aGUgY2hlY2tzIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNm" + + "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJEZXNwaXRl" + + "IHRoZSB1c2VyIGFza2luZyB0byBza2lwIGNoZWNrcywgdGhlIGFnZW50IHN0aWxsIHJhbiBoZWxt" + + "ZmlsZSB0ZW1wbGF0ZSB0byBwcmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0cyBiZWZvcmUgcnVubmlu" + + "ZyBoZWxtZmlsZSBzeW5jLiBJdCBleHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAgaXMgaW1w" + + "b3J0YW50IGFuZCBkaWQgbm90IGJsaW5kbHkgZXhlY3V0ZSBzeW5jLiIsCiAgICAiZXhwZWN0ZWRf" + + "YmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQt" + + "aW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBh" + + "Z2VudCByYW4gJ2hlbG1maWxlIHRlbXBsYXRlJyBvciAnaGVsbWZpbGUgLS1zZWxlY3RvciAuLi4g" + + "dGVtcGxhdGUnIHRvIHByZXZpZXcgbWFuaWZlc3RzIGJlZm9yZSBzeW5jIiwKICAgICAgIlRoZSBh" + + "Z2VudCBkaWQgbm90IGJsaW5kbHkgcnVuICdoZWxtZmlsZSBzeW5jJyB3aXRob3V0IGEgdGVtcGxh" + + "dGUgcHJldmlldyBzdGVwIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgd2h5IHRoZSBwcmV2" + + "aWV3IHN0ZXAgaXMgaW1wb3J0YW50IGV2ZW4gd2hlbiBhc2tlZCB0byBza2lwIGl0IgogICAgXQog" + + "IH0sCiAgewogICAgImlkIjogIkc1LWRyeXJ1bi1iZWZvcmUtY2xlYW51cCIsCiAgICAicXVlc3Rp" + + "b24iOiAiTlZDRiBuYW1lc3BhY2VzIGFyZSBzdHVjayBpbiBUZXJtaW5hdGluZyBzdGF0ZS4gQ2xl" + + "YW4gdGhlbSB1cC4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWlu" + + "c3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRo" + + "ZSBzdHVjayBuYW1lc3BhY2VzIHdlcmUgY2F1c2VkIGJ5IGZpbmFsaXplcnMgb24gTlZDRkJhY2tl" + + "bmQgY3VzdG9tIHJlc291cmNlcy4gSXQgcmVtb3ZlZCBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tl" + + "bmQgcmVzb3VyY2VzIGZpcnN0LCB0aGVuIGNsZWFyZWQgbmFtZXNwYWNlIGZpbmFsaXplcnMgdG8g" + + "Zm9yY2UtZGVsZXRlIHRoZSBzdHVjayBuYW1lc3BhY2VzLiBJdCBvbmx5IHRhcmdldGVkIE5WQ0Yt" + + "bWFuYWdlZCBuYW1lc3BhY2VzIChudmNhLW9wZXJhdG9yLCBudmNmLWJhY2tlbmQpIGFuZCBkaWQg" + + "bm90IHRvdWNoIG90aGVyIGNsdXN0ZXIgcmVzb3VyY2VzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZp" + "b3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + - "bGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBy" + - "YW4gJ2RvY2tlciBsb2dpbiBudmNyLmlvJyB3aXRoICRvYXV0aHRva2VuIHVzZXJuYW1lIGFuZCBO" + - "R0NfQVBJX0tFWSBwYXNzd29yZCIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHJlZ2lzdHJ5" + - "IGxvZ2luIG52Y3IuaW8nIHdpdGggJG9hdXRodG9rZW4gdXNlcm5hbWUgYW5kIE5HQ19BUElfS0VZ" + - "IHBhc3N3b3JkIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCBib3RoIGFyZSByZXF1" + - "aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kg" + - "Y2hhcnRzIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHByb3ZpZGUgb25seSBvbmUgb2YgdGhl" + - "IHR3byBhdXRoZW50aWNhdGlvbiBjb21tYW5kcyIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJH" + - "OS1taXNzaW5nLWJ1bmRsZSIsCiAgICAicXVlc3Rpb24iOiAiUnVuIGhlbG1maWxlIHN5bmMgZm9y" + - "IE5WQ0YgaW4gbXkgY3VycmVudCBkaXJlY3RvcnkiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52" + - "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBh" + - "Z2VudCBhdHRlbXB0ZWQgdG8gdmVyaWZ5IHRoZSBidW5kbGUgc3RydWN0dXJlIChoZWxtZmlsZS5k" + - "LywgZW52aXJvbm1lbnRzLywgc2VjcmV0cy8sIGdsb2JhbC55YW1sLmdvdG1wbCkgYW5kIHdoZW4g" + - "ZmlsZXMgd2VyZSBub3QgZm91bmQsIHN0b3BwZWQgYW5kIGluc3RydWN0ZWQgdGhlIHVzZXIgdG8g" + - "ZXh0cmFjdCBvciBsb2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrIGJ1bmRsZS4gSXQg" + - "ZGlkIG5vdCBhdHRlbXB0IHRvIHJ1biBoZWxtZmlsZSBzeW5jIGFnYWluc3QgYSBtaXNzaW5nIGJ1" + - "bmRsZS4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQg" + - "dGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5n" + - "IGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBmb3IgZXhwZWN0ZWQgYnVuZGxlIHN0" + - "cnVjdHVyZSAoaGVsbWZpbGUuZC8sIGVudmlyb25tZW50cy8sIHNlY3JldHMvLCBnbG9iYWwueWFt" + - "bC5nb3RtcGwpIiwKICAgICAgIldoZW4gYnVuZGxlIGZpbGVzIHdlcmUgbm90IGZvdW5kLCB0aGUg" + - "YWdlbnQgc3RvcHBlZCBhbmQgZGlkIG5vdCBhdHRlbXB0IGhlbG1maWxlIHN5bmMiLAogICAgICAi" + - "VGhlIGFnZW50IGluc3RydWN0ZWQgdGhlIHVzZXIgdG8gZXh0cmFjdCBvciBsb2NhdGUgdGhlIG52" + - "Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrIGJ1bmRsZSIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJT" + - "MS1jbGVhbi1pbnN0YWxsYXRpb24iLAogICAgInF1ZXN0aW9uIjogIlBlcmZvcm0gYSBjbGVhbiBp" + - "bnN0YWxsYXRpb24gb2YgdGhlIE5WQ0Ygc2VsZi1tYW5hZ2VkIHN0YWNrIG9uIG15IEFXUyBFS1Mg" + - "Y2x1c3Rlci4gTXkgZW52aXJvbm1lbnQgbmFtZSBpcyAnc3RhZ2luZycuIiwKICAgICJleHBlY3Rl" + - "ZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90" + - "cnV0aCI6ICJUaGUgYWdlbnQgY29tcGxldGVkIHRoZSBjb250cm9sLXBsYW5lIGluc3RhbGxhdGlv" + - "biBmaXJzdDogdmFsaWRhdGVkIHRvb2xzIGFuZCBidW5kbGUgc3RydWN0dXJlLCBjcmVhdGVkIGNv" + - "bnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNsdWRpbmcgY2VydC1tYW5hZ2VyLCBhdXRoZW50aWNh" + - "dGVkIHRoZSByZWdpc3RyaWVzLCBwcmV2aWV3ZWQsIGRlcGxveWVkLCBhbmQgbW9uaXRvcmVkIHRo" + - "ZSBmb3VyIGNvbnRyb2wtcGxhbmUgcGhhc2VzLiBJdCB0aGVuIHNlbGVjdGVkIG9uZSBkb2N1bWVu" + - "dGVkIGhhbmRvZmYgYW5kIHJlZ2lzdGVyZWQgYW5kIGluc3RhbGxlZCB0aGUgY29tcHV0ZSBwbGFu" + - "ZSBhcyBhIHNlcGFyYXRlIHN0YWNrIHdpdGhvdXQgbWl4aW5nIHByb2ZpbGUgYW5kIEhlbG1maWxl" + - "IHZhbHVlcyBmbG93cy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFn" + - "ZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZv" + - "cmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgdmFsaWRhdGVkIHRvb2wgdmVyc2lv" + - "bnMgKGhlbG1maWxlLCBoZWxtLCBoZWxtLWRpZmYsIGt1YmVjdGwpIiwKICAgICAgIlRoZSBhZ2Vu" + - "dCB2ZXJpZmllZCB0aGUgYnVuZGxlIHN0cnVjdHVyZSBleGlzdHMiLAogICAgICAiVGhlIGFnZW50" + - "IGNyZWF0ZWQgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIChjYXNzYW5kcmEtc3lzdGVtLCBuYXRz" + - "LXN5c3RlbSwgbnZjZiwgYXBpLWtleXMsIGVzcywgc2lzLCB2YXVsdC1zeXN0ZW0sIGNlcnQtbWFu" + - "YWdlcikgd2l0aG91dCBhZGRpbmcgY29tcHV0ZS1vbmx5IG5hbWVzcGFjZXMiLAogICAgICAiVGhl" + - "IGFnZW50IHJhbiAnSEVMTUZJTEVfRU5WPXN0YWdpbmcgaGVsbWZpbGUgdGVtcGxhdGUnIHRvIHBy" + - "ZXZpZXcgYmVmb3JlIGRlcGxveWluZyIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdIRUxNRklMRV9F" + - "TlY9c3RhZ2luZyBoZWxtZmlsZSBzeW5jJyB0byBkZXBsb3kiLAogICAgICAiVGhlIGFnZW50IGV4" + - "cGxhaW5lZCB0aGUgNCBjb250cm9sLXBsYW5lIHBoYXNlcyAoZGVwZW5kZW5jaWVzLCBzZXJ2aWNl" + - "cywgaW5ncmVzcywgb2JzZXJ2YWJpbGl0eSkgYW5kIGFwcHJveGltYXRlIHdhaXQgdGltZXMiLAog" + - "ICAgICAiQWZ0ZXIgdGhlIGNvbnRyb2wgcGxhbmUgd2FzIGhlYWx0aHksIHRoZSBhZ2VudCByZWdp" + - "c3RlcmVkIGFuZCBpbnN0YWxsZWQgdGhlIHNlcGFyYXRlIGNvbXB1dGUtcGxhbmUgc3RhY2sgdXNp" + - "bmcgZXhhY3RseSBvbmUgZG9jdW1lbnRlZCBoYW5kb2ZmIiwKICAgICAgIlRoZSBhZ2VudCBkaWQg" + - "bm90IG1peCBhIENMSS1nZW5lcmF0ZWQgY29udHJvbC1wbGFuZSBwcm9maWxlIHdpdGggdGhlIEhl" + - "bG1maWxlIHZhbHVlcyBmbG93IgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMzLWNsaS1wcm9m" + - "aWxlLXdvcmtmbG93IiwKICAgICJxdWVzdGlvbiI6ICJVc2UgbnZjZi1jbGkgdG8gaW5zdGFsbCBt" + - "eSBjb250cm9sIHBsYW5lIGFuZCB0aGVuIHJlZ2lzdGVyIGFuZCBpbnN0YWxsIGEgc2VwYXJhdGUg" + - "Y29tcHV0ZSBjbHVzdGVyLiBTaG93IGV2ZXJ5IHJlcXVpcmVkIGdsb2JhbCBmbGFnLiIsCiAgICAi" + - "ZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJn" + - "cm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGZpcnN0IHJhbiB0aGUgQ0xJIGNvbnRyb2wtcGxhbmUg" + - "aW5zdGFsbCBhbmQgcmVxdWlyZWQgaXRzIGdlbmVyYXRlZCBjb250cm9sLXBsYW5lLXByb2ZpbGUu" + - "eWFtbC4gSXQgdGhlbiBzaG93ZWQgY29tcGxldGUgcmVnaXN0ZXIgYW5kIGluc3RhbGwgY29tbWFu" + - "ZHMsIGVhY2ggaW5jbHVkaW5nIC0tY29uZmlnLCAtLWNvbnRyb2wtcGxhbmUtc3RhY2ssIC0tY29t" + - "cHV0ZS1wbGFuZS1zdGFjaywgLS1lbnYsIGFuZCAtLXBsYWluIGJlZm9yZSB0aGUgY29tcHV0ZS1w" + - "bGFuZSBzdWJjb21tYW5kLiBSZWdpc3RyYXRpb24gY29uc3VtZWQgdGhlIHByb2ZpbGUgYW5kIHBy" + - "b2R1Y2VkIHRoZSB2YWx1ZXMgZmlsZSBjb25zdW1lZCBieSBpbnN0YWxsLiBJdCBkaWQgbm90IHN3" + - "aXRjaCB0byB0aGUgSGVsbWZpbGUgdmFsdWVzIGhhbmRvZmYuIiwKICAgICJleHBlY3RlZF9iZWhh" + + "bGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBj" + + "b25maXJtZWQgYW5kIHVzZWQgdGhlIGNvbXB1dGUtcGxhbmUgY29udGV4dCBmb3IgYWxsIGNsZWFu" + + "dXAgY29tbWFuZHMiLAogICAgICAiVGhlIGFnZW50IHVzZWQga3ViZWN0bCB0byBwYXRjaCBOVkNG" + + "QmFja2VuZCByZXNvdXJjZXMgdG8gcmVtb3ZlIHRoZWlyIGZpbmFsaXplcnMiLAogICAgICAiVGhl" + + "IGFnZW50IHVzZWQga3ViZWN0bCByZXBsYWNlIC0tcmF3IHRvIGNsZWFyIG5hbWVzcGFjZSBmaW5h" + + "bGl6ZXJzIG9uIHN0dWNrIG5hbWVzcGFjZXMiLAogICAgICAiVGhlIGFnZW50IG9ubHkgdGFyZ2V0" + + "ZWQgTlZDRi1tYW5hZ2VkIG5hbWVzcGFjZXMgKG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkg" + + "YW5kIGRpZCBub3QgdG91Y2ggb3RoZXIgY2x1c3RlciByZXNvdXJjZXMiLAogICAgICAiVGhlIGFn" + + "ZW50IGRpZCBub3QganVtcCBkaXJlY3RseSB0byBuYW1lc3BhY2UgZGVsZXRpb24gd2l0aG91dCBm" + + "aXJzdCByZW1vdmluZyBmaW5hbGl6ZXJzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc2LWhl" + + "bG1maWxlLXNwbGl0LXdvcmtmbG93IiwKICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIGFuIE5WQ0Yg" + + "Y29udHJvbCBwbGFuZSBhbmQgYSBzZXBhcmF0ZSBFS1MgY29tcHV0ZSBwbGFuZSB1c2luZyB0aGUg" + + "SGVsbWZpbGUgc3RhY2tzLiBUaGUgY29tcHV0ZSBjbHVzdGVyIGt1YmVjb25maWcgaXMgY29tcHV0" + + "ZS55YW1sLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + + "bGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGtlcHQgdGhlIEhlbG1maWxl" + + "IHZhbHVlcyBmbG93IGluZGVwZW5kZW50IGZyb20gdGhlIENMSSBwcm9maWxlIGZsb3cuIEl0IGF1" + + "dGhvcmVkIHNlcGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1l" + + "bnQgZmlsZXMgcGx1cyBhIGJhcmUtR2F0ZXdheSBDTEkgY29uZmlnIHdpdGggVVJMIGFuZCBzY2hl" + + "bWUtbGVzcyBIb3N0IGZpZWxkcywgaW5zdGFsbGVkIHRoZSBjb250cm9sIHBsYW5lLCByYW4gdGhl" + + "IGNvbXB1dGUtcGxhbmUgTWFrZWZpbGUgcmVnaXN0ZXItY2x1c3RlciB0YXJnZXQgd2l0aCBJQ01T" + + "X1VSTCBhbmQgdGhlIGNvbXB1dGUga3ViZWNvbmZpZywgdGhlbiByYW4gdGhlIGNvbXB1dGUtcGxh" + + "bmUgaW5zdGFsbCB0YXJnZXQgd2l0aCB0aGUgc2FtZSBlbnZpcm9ubWVudCBhbmQga3ViZWNvbmZp" + + "Zy4gSXQgcmVsaWVkIG9uIHJlZ2lzdHJhdGlvbiB0byBkaXNjb3ZlciBPSURDIGFuZCBKV0tTIGZy" + + "b20gdGhlIGNvbXB1dGUgY29udGV4dC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAg" + + "ICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lM" + + "TC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgYXV0aG9yZWQgc2Vw" + + "YXJhdGUgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwgZmlsZXMgdW5kZXIgZGVwbG95L3N0YWNrcy9z" + + "ZWxmLW1hbmFnZWQgYW5kIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIiwKICAgICAg" + + "IlRoZSBhZ2VudCBpbnN0YWxsZWQgdGhlIGNvbnRyb2wgcGxhbmUgYmVmb3JlIHJlZ2lzdGVyaW5n" + + "IG9yIGluc3RhbGxpbmcgdGhlIGNvbXB1dGUgcGxhbmUiLAogICAgICAiVGhlIGFnZW50IGNvbmZp" + + "Z3VyZWQgYmFzZV9odHRwX3VybCwgaW52b2tlX3VybCwgYmFzZV9ncnBjX3VybCwgYXBpX2tleXNf" + + "c2VydmljZV91cmwsIGljbXNfdXJsLCBhcGlfaG9zdCwgYXBpX2tleXNfaG9zdCwgaW52b2tlX2hv" + + "c3QsIGFuZCBpY21zX2hvc3QgZm9yIHRoZSBiYXJlIEdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50" + + "IHVzZWQgJ21ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVnaXN0ZXIt" + + "Y2x1c3Rlcicgd2l0aCBDTFVTVEVSX05BTUUsIE5DQV9JRCwgQ0xVU1RFUl9SRUdJT04sIElDTVNf" + + "VVJMLCBhbmQgS1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFtbCIsCiAgICAgICJUaGUgYWdlbnQg" + + "dXNlZCAnbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBpbnN0YWxsJyB3" + + "aXRoIENMVVNURVJfTkFNRSwgSEVMTUZJTEVfRU5WLCBhbmQgS1VCRUNPTkZJR19GSUxFPWNvbXB1" + + "dGUueWFtbCIsCiAgICAgICJUaGUgYWdlbnQgc3RhdGVkIHRoYXQgSUNNU19VUkwgbWFwcyBvbmx5" + + "IHRvIC0taWNtcy11cmwsIGNvbmZpZyBpY21zX2hvc3Qgc3VwcGxpZXMgdGhlIEhvc3QgaGVhZGVy" + + "LCB0aGVyZSBpcyBubyAtLWljbXMtaG9zdCBNYWtlIG9yIENMSSBmbGFnLCBhbmQgcmVnaXN0cmF0" + + "aW9uIGRpc2NvdmVycyBPSURDIGFuZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUgY29udGV4dCIsCiAg" + + "ICAgICJUaGUgYWdlbnQgZGlkIG5vdCByZXF1aXJlIGEgY29udHJvbC1wbGFuZSBwcm9maWxlIGZv" + + "ciB0aGlzIGZsb3cgYW5kIGRpZCBub3QgbWl4IGluIENMSSBwcm9maWxlIGNvbW1hbmRzIgogICAg" + + "XQogIH0sCiAgewogICAgImlkIjogIkc3LWJvdGgtZG9ja2VyLWhlbG0tYXV0aCIsCiAgICAicXVl" + + "c3Rpb24iOiAiQXV0aGVudGljYXRlIHRvIE5HQyBmb3IgTlZDRiBoZWxtZmlsZSBkZXBsb3ltZW50" + + "IiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24i" + + "LAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgcmFuIGJvdGggZG9ja2VyIGxvZ2luIGFu" + + "ZCBoZWxtIHJlZ2lzdHJ5IGxvZ2luIGZvciBudmNyLmlvLiBJdCBleHBsYWluZWQgdGhhdCBib3Ro" + + "IGFyZSByZXF1aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8g" + + "cHVsbCBPQ0kgY2hhcnRzLCBzbyBkb2NrZXIgbG9naW4gYWxvbmUgaXMgaW5zdWZmaWNpZW50LiIs" + + "CiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZj" + + "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9u" + + "IiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2RvY2tlciBsb2dpbiBudmNyLmlvJyB3aXRoICRvYXV0" + + "aHRva2VuIHVzZXJuYW1lIGFuZCBOR0NfQVBJX0tFWSBwYXNzd29yZCIsCiAgICAgICJUaGUgYWdl" + + "bnQgcmFuICdoZWxtIHJlZ2lzdHJ5IGxvZ2luIG52Y3IuaW8nIHdpdGggJG9hdXRodG9rZW4gdXNl" + + "cm5hbWUgYW5kIE5HQ19BUElfS0VZIHBhc3N3b3JkIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWlu" + + "ZWQgdGhhdCBib3RoIGFyZSByZXF1aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90" + + "IGRvY2tlcikgdG8gcHVsbCBPQ0kgY2hhcnRzIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHBy" + + "b3ZpZGUgb25seSBvbmUgb2YgdGhlIHR3byBhdXRoZW50aWNhdGlvbiBjb21tYW5kcyIKICAgIF0K" + + "ICB9LAogIHsKICAgICJpZCI6ICJHOS1taXNzaW5nLWJ1bmRsZSIsCiAgICAicXVlc3Rpb24iOiAi" + + "UnVuIGhlbG1maWxlIHN5bmMgZm9yIE5WQ0YgaW4gbXkgY3VycmVudCBkaXJlY3RvcnkiLAogICAg" + + "ImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAi" + + "Z3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBhdHRlbXB0ZWQgdG8gdmVyaWZ5IHRoZSBidW5kbGUg" + + "c3RydWN0dXJlIChoZWxtZmlsZS5kLywgZW52aXJvbm1lbnRzLywgc2VjcmV0cy8sIGdsb2JhbC55" + + "YW1sLmdvdG1wbCkgYW5kIHdoZW4gZmlsZXMgd2VyZSBub3QgZm91bmQsIHN0b3BwZWQgYW5kIGlu" + + "c3RydWN0ZWQgdGhlIHVzZXIgdG8gZXh0cmFjdCBvciBsb2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5h" + + "Z2VkLXN0YWNrIGJ1bmRsZS4gSXQgZGlkIG5vdCBhdHRlbXB0IHRvIHJ1biBoZWxtZmlsZSBzeW5j" + + "IGFnYWluc3QgYSBtaXNzaW5nIGJ1bmRsZS4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwog" + + "ICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBT" + + "S0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBm" + + "b3IgZXhwZWN0ZWQgYnVuZGxlIHN0cnVjdHVyZSAoaGVsbWZpbGUuZC8sIGVudmlyb25tZW50cy8s" + + "IHNlY3JldHMvLCBnbG9iYWwueWFtbC5nb3RtcGwpIiwKICAgICAgIldoZW4gYnVuZGxlIGZpbGVz" + + "IHdlcmUgbm90IGZvdW5kLCB0aGUgYWdlbnQgc3RvcHBlZCBhbmQgZGlkIG5vdCBhdHRlbXB0IGhl" + + "bG1maWxlIHN5bmMiLAogICAgICAiVGhlIGFnZW50IGluc3RydWN0ZWQgdGhlIHVzZXIgdG8gZXh0" + + "cmFjdCBvciBsb2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrIGJ1bmRsZSIKICAgIF0K" + + "ICB9LAogIHsKICAgICJpZCI6ICJTMS1jbGVhbi1pbnN0YWxsYXRpb24iLAogICAgInF1ZXN0aW9u" + + "IjogIlBlcmZvcm0gYSBjbGVhbiBpbnN0YWxsYXRpb24gb2YgdGhlIE5WQ0Ygc2VsZi1tYW5hZ2Vk" + + "IHN0YWNrIG9uIG15IEFXUyBFS1MgY2x1c3Rlci4gTXkgZW52aXJvbm1lbnQgbmFtZSBpcyAnc3Rh" + + "Z2luZycuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + + "YXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgY29tcGxldGVkIHRoZSBjb250" + + "cm9sLXBsYW5lIGluc3RhbGxhdGlvbiBmaXJzdDogdmFsaWRhdGVkIHRvb2xzIGFuZCBidW5kbGUg" + + "c3RydWN0dXJlLCBjcmVhdGVkIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNsdWRpbmcgY2Vy" + + "dC1tYW5hZ2VyLCBhdXRoZW50aWNhdGVkIHRoZSByZWdpc3RyaWVzLCBwcmV2aWV3ZWQsIGRlcGxv" + + "eWVkLCBhbmQgbW9uaXRvcmVkIHRoZSBmb3VyIGNvbnRyb2wtcGxhbmUgcGhhc2VzLiBJdCB0aGVu" + + "IHNlbGVjdGVkIG9uZSBkb2N1bWVudGVkIGhhbmRvZmYgYW5kIHJlZ2lzdGVyZWQgYW5kIGluc3Rh" + + "bGxlZCB0aGUgY29tcHV0ZSBwbGFuZSBhcyBhIHNlcGFyYXRlIHN0YWNrIHdpdGhvdXQgbWl4aW5n" + + "IHByb2ZpbGUgYW5kIEhlbG1maWxlIHZhbHVlcyBmbG93cy4iLAogICAgImV4cGVjdGVkX2JlaGF2" + + "aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + + "bGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQg" + + "dmFsaWRhdGVkIHRvb2wgdmVyc2lvbnMgKGhlbG1maWxlLCBoZWxtLCBoZWxtLWRpZmYsIGt1YmVj" + + "dGwpIiwKICAgICAgIlRoZSBhZ2VudCB2ZXJpZmllZCB0aGUgYnVuZGxlIHN0cnVjdHVyZSBleGlz" + + "dHMiLAogICAgICAiVGhlIGFnZW50IGNyZWF0ZWQgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIChj" + + "YXNzYW5kcmEtc3lzdGVtLCBuYXRzLXN5c3RlbSwgbnZjZiwgYXBpLWtleXMsIGVzcywgc2lzLCB2" + + "YXVsdC1zeXN0ZW0sIGNlcnQtbWFuYWdlcikgd2l0aG91dCBhZGRpbmcgY29tcHV0ZS1vbmx5IG5h" + + "bWVzcGFjZXMiLAogICAgICAiVGhlIGFnZW50IHJhbiAnSEVMTUZJTEVfRU5WPXN0YWdpbmcgaGVs" + + "bWZpbGUgdGVtcGxhdGUnIHRvIHByZXZpZXcgYmVmb3JlIGRlcGxveWluZyIsCiAgICAgICJUaGUg" + + "YWdlbnQgcmFuICdIRUxNRklMRV9FTlY9c3RhZ2luZyBoZWxtZmlsZSBzeW5jJyB0byBkZXBsb3ki" + + "LAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgNCBjb250cm9sLXBsYW5lIHBoYXNlcyAo" + + "ZGVwZW5kZW5jaWVzLCBzZXJ2aWNlcywgaW5ncmVzcywgb2JzZXJ2YWJpbGl0eSkgYW5kIGFwcHJv" + + "eGltYXRlIHdhaXQgdGltZXMiLAogICAgICAiQWZ0ZXIgdGhlIGNvbnRyb2wgcGxhbmUgd2FzIGhl" + + "YWx0aHksIHRoZSBhZ2VudCByZWdpc3RlcmVkIGFuZCBpbnN0YWxsZWQgdGhlIHNlcGFyYXRlIGNv" + + "bXB1dGUtcGxhbmUgc3RhY2sgdXNpbmcgZXhhY3RseSBvbmUgZG9jdW1lbnRlZCBoYW5kb2ZmIiwK" + + "ICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IG1peCBhIENMSS1nZW5lcmF0ZWQgY29udHJvbC1wbGFu" + + "ZSBwcm9maWxlIHdpdGggdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93IgogICAgXQogIH0sCiAgewog" + + "ICAgImlkIjogIlMzLWNsaS1wcm9maWxlLXdvcmtmbG93IiwKICAgICJxdWVzdGlvbiI6ICJVc2Ug" + + "bnZjZi1jbGkgdG8gaW5zdGFsbCBteSBjb250cm9sIHBsYW5lIGFuZCB0aGVuIHJlZ2lzdGVyIGFu" + + "ZCBpbnN0YWxsIGEgc2VwYXJhdGUgY29tcHV0ZSBjbHVzdGVyLiBTaG93IGV2ZXJ5IHJlcXVpcmVk" + + "IGdsb2JhbCBmbGFnLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQt" + + "aW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGZpcnN0IHJhbiB0" + + "aGUgQ0xJIGNvbnRyb2wtcGxhbmUgaW5zdGFsbCBhbmQgcmVxdWlyZWQgaXRzIGdlbmVyYXRlZCBj" + + "b250cm9sLXBsYW5lLXByb2ZpbGUueWFtbC4gSXQgdGhlbiBzaG93ZWQgY29tcGxldGUgcmVnaXN0" + + "ZXIgYW5kIGluc3RhbGwgY29tbWFuZHMsIGVhY2ggaW5jbHVkaW5nIC0tY29uZmlnLCAtLWNvbnRy" + + "b2wtcGxhbmUtc3RhY2ssIC0tY29tcHV0ZS1wbGFuZS1zdGFjaywgLS1lbnYsIGFuZCAtLXBsYWlu" + + "IGJlZm9yZSB0aGUgY29tcHV0ZS1wbGFuZSBzdWJjb21tYW5kLiBSZWdpc3RyYXRpb24gY29uc3Vt" + + "ZWQgdGhlIHByb2ZpbGUgYW5kIHByb2R1Y2VkIHRoZSB2YWx1ZXMgZmlsZSBjb25zdW1lZCBieSBp" + + "bnN0YWxsLiBJdCBkaWQgbm90IHN3aXRjaCB0byB0aGUgSGVsbWZpbGUgdmFsdWVzIGhhbmRvZmYu" + + "IiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBu" + + "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rp" + + "b24iLAogICAgICAiVGhlIGFnZW50IHJhbiBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0t" + + "Y29udHJvbC1wbGFuZSBhbmQgdmVyaWZpZWQgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0" + + "L2NvbnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sIGV4aXN0cyIsCiAgICAgICJUaGUgcmVnaXN0ZXIg" + + "Y29tbWFuZCBpbmNsdWRlZCAtLWNvbmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAtLWNvbXB1" + + "dGUtcGxhbmUtc3RhY2ssIC0tZW52LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgcmVnaXN0ZXIg" + + "Y29tbWFuZCBpbmNsdWRlZCAtLWNvbnRyb2wtcGxhbmUtcHJvZmlsZSwgLS1jbHVzdGVyLW5hbWUs" + + "IC0ta3ViZS1jb250ZXh0LCAtLXJlZ2lvbiwgYW5kIC0tb3V0cHV0IiwKICAgICAgIlRoZSBpbnN0" + + "YWxsIGNvbW1hbmQgcmVwZWF0ZWQgLS1jb25maWcsIC0tY29udHJvbC1wbGFuZS1zdGFjaywgLS1j" + + "b21wdXRlLXBsYW5lLXN0YWNrLCAtLWVudiwgYW5kIC0tcGxhaW4iLAogICAgICAiVGhlIGluc3Rh" + + "bGwgY29tbWFuZCBpbmNsdWRlZCAtLXZhbHVlcywgLS1rdWJlLWNvbnRleHQsIGFuZCAtLWNsdXN0" + + "ZXItbmFtZSIsCiAgICAgICJUaGUgYWdlbnQga2VwdCB0aGUgZ2VuZXJhdGVkIHByb2ZpbGUgYXMg" + + "dGhlIGVuZHBvaW50IHNvdXJjZSBhbmQgZGlkIG5vdCBtaXggaW4gSGVsbWZpbGUgdmFsdWVzIHJl" + + "Z2lzdHJhdGlvbiIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTNC1vdmVycmlkZS1jYXNzYW5k" + + "cmEtcmVzb3VyY2VzIiwKICAgICJxdWVzdGlvbiI6ICJDYXNzYW5kcmEgcG9kcyBrZWVwIGdldHRp" + + "bmcgT09NS2lsbGVkLiBJbmNyZWFzZSBtZW1vcnkgbGltaXRzIHRvIDE2R2kuIiwKICAgICJleHBl" + + "Y3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3Vu" + + "ZF90cnV0aCI6ICJUaGUgYWdlbnQgY2FwdHVyZWQgdGhlIGJhc2VsaW5lIHdpdGggaGVsbWZpbGUg" + + "dGVtcGxhdGUsIHRoZW4gbW9kaWZpZWQgdGhlIGNhc3NhbmRyYSByZWxlYXNlIHdpdGggaW5saW5l" + + "IHZhbHVlcyByZS1pbmNsdWRpbmcgZ2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNyZXRzIGluIHRo" + + "ZSB2YWx1ZXMgYmxvY2suIEl0IHdhcm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGEgYW5k" + + "IHByZXZpZXdlZCB0aGUgZGlmZiBiZWZvcmUgYXBwbHlpbmcuIiwKICAgICJleHBlY3RlZF9iZWhh" + "dmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0" + "YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50" + - "IHJhbiBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSBhbmQgdmVy" + - "aWZpZWQgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJvZmls" + - "ZS55YW1sIGV4aXN0cyIsCiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBpbmNsdWRlZCAtLWNv" + - "bmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAtLWNvbXB1dGUtcGxhbmUtc3RhY2ssIC0tZW52" + - "LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBpbmNsdWRlZCAtLWNv" + - "bnRyb2wtcGxhbmUtcHJvZmlsZSwgLS1jbHVzdGVyLW5hbWUsIC0ta3ViZS1jb250ZXh0LCAtLXJl" + - "Z2lvbiwgYW5kIC0tb3V0cHV0IiwKICAgICAgIlRoZSBpbnN0YWxsIGNvbW1hbmQgcmVwZWF0ZWQg" + - "LS1jb25maWcsIC0tY29udHJvbC1wbGFuZS1zdGFjaywgLS1jb21wdXRlLXBsYW5lLXN0YWNrLCAt" + - "LWVudiwgYW5kIC0tcGxhaW4iLAogICAgICAiVGhlIGluc3RhbGwgY29tbWFuZCBpbmNsdWRlZCAt" + - "LXZhbHVlcywgLS1rdWJlLWNvbnRleHQsIGFuZCAtLWNsdXN0ZXItbmFtZSIsCiAgICAgICJUaGUg" + - "YWdlbnQga2VwdCB0aGUgZ2VuZXJhdGVkIHByb2ZpbGUgYXMgdGhlIGVuZHBvaW50IHNvdXJjZSBh" + - "bmQgZGlkIG5vdCBtaXggaW4gSGVsbWZpbGUgdmFsdWVzIHJlZ2lzdHJhdGlvbiIKICAgIF0KICB9" + - "LAogIHsKICAgICJpZCI6ICJTNC1vdmVycmlkZS1jYXNzYW5kcmEtcmVzb3VyY2VzIiwKICAgICJx" + - "dWVzdGlvbiI6ICJDYXNzYW5kcmEgcG9kcyBrZWVwIGdldHRpbmcgT09NS2lsbGVkLiBJbmNyZWFz" + - "ZSBtZW1vcnkgbGltaXRzIHRvIDE2R2kuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNl" + - "bGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQg" + - "Y2FwdHVyZWQgdGhlIGJhc2VsaW5lIHdpdGggaGVsbWZpbGUgdGVtcGxhdGUsIHRoZW4gbW9kaWZp" + - "ZWQgdGhlIGNhc3NhbmRyYSByZWxlYXNlIHdpdGggaW5saW5lIHZhbHVlcyByZS1pbmNsdWRpbmcg" + - "Z2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNyZXRzIGluIHRoZSB2YWx1ZXMgYmxvY2suIEl0IHdh" + - "cm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGEgYW5kIHByZXZpZXdlZCB0aGUgZGlmZiBi" + - "ZWZvcmUgYXBwbHlpbmcuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBh" + - "Z2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVm" + - "b3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGNhcHR1cmVkIGJhc2VsaW5lIHdp" + - "dGggJ2hlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUnIiwKICAgICAg" + - "IlRoZSBhZ2VudCBtb2RpZmllZCB0aGUgcmVsZWFzZSB2YWx1ZXMgYmxvY2sgdG8gaW5jbHVkZSBy" + - "ZXNvdXJjZSBsaW1pdHMgd2l0aCBtZW1vcnk6IDE2R2kiLAogICAgICAiVGhlIGFnZW50IHJlLWlu" + - "Y2x1ZGVkIGdsb2JhbC55YW1sLmdvdG1wbCBhbmQgc2VjcmV0cyBmaWxlIGluIHRoZSB2YWx1ZXM6" + - "IGJsb2NrIChub3QganVzdCB0aGUgb3ZlcnJpZGUgYWxvbmUpIiwKICAgICAgIlRoZSBhZ2VudCB3" + - "YXJuZWQgYWJvdXQgdGhlIFlBTUwgbWVyZ2UgZ290Y2hhOiBzcGVjaWZ5aW5nIHZhbHVlczogcmVw" + - "bGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QgZW50aXJlbHkiLAogICAgICAiVGhlIGFn" + - "ZW50IHByZXZpZXdlZCB0aGUgY2hhbmdlIHdpdGggaGVsbWZpbGUgdGVtcGxhdGUgYW5kIGRpZmYg" + - "YmVmb3JlIGFwcGx5aW5nIHdpdGggc3luYyIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTNi1z" + - "ZWxlY3RpdmUtc3luYy1kZXBlbmRlbmNpZXMiLAogICAgInF1ZXN0aW9uIjogIkRlcGxveSBvbmx5" + - "IHRoZSBOVkNGIGRlcGVuZGVuY2llcyAtLSBOQVRTLCBDYXNzYW5kcmEsIGFuZCBPcGVuQmFvIC0t" + - "IGZvciB0ZXN0aW5nIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1p" + - "bnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgdXNlZCB0aGUgaGVs" + - "bWZpbGUgc2VsZWN0b3IgdG8gZGVwbG95IG9ubHkgdGhlIGRlcGVuZGVuY2llcyByZWxlYXNlIGdy" + - "b3VwLCB0aGVuIHZlcmlmaWVkIHBvZHMgaW4gdGhlIGRlcGVuZGVuY3kgbmFtZXNwYWNlcy4iLAog" + - "ICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Yt" + - "c2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIs" + - "CiAgICAgICJUaGUgYWdlbnQgdXNlZCAnaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3Vw" + - "PWRlcGVuZGVuY2llcyBzeW5jJyB0byBkZXBsb3kgb25seSBkZXBlbmRlbmNpZXMiLAogICAgICAi" + - "VGhlIGFnZW50IHZlcmlmaWVkIHBvZHMgaW4gZGVwZW5kZW5jeSBuYW1lc3BhY2VzIChuYXRzLXN5" + - "c3RlbSwgY2Fzc2FuZHJhLXN5c3RlbSwgdmF1bHQtc3lzdGVtKSIsCiAgICAgICJUaGUgYWdlbnQg" + - "cHJvdmlkZWQgdGhlIHNlbGVjdG9yIHJlZmVyZW5jZSBmb3IgdGFyZ2V0aW5nIG90aGVyIHJlbGVh" + - "c2UgZ3JvdXBzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlM3LWRlYnVnLWltYWdlcHVsbGJh" + - "Y2tvZmYiLAogICAgInF1ZXN0aW9uIjogIkNhc3NhbmRyYSBwb2RzIGFyZSBpbiBJbWFnZVB1bGxC" + - "YWNrT2ZmIHdpdGggNDAxIFVuYXV0aG9yaXplZCIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZj" + - "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFn" + - "ZW50IHJlYWQgdGhlIGRlYnVnZ2luZyByZWZlcmVuY2UgYW5kIHJhbiBkaWFnbm9zdGljIGNvbW1h" + - "bmRzIHRvIGlkZW50aWZ5IHRoZSByb290IGNhdXNlOiBkZXNjcmliZWQgdGhlIHBvZCwgY2hlY2tl" + - "ZCBmb3IgcHVsbCBzZWNyZXRzLCBjaGVja2VkIGltYWdlUHVsbFNlY3JldHMgb24gdGhlIHBvZCBz" + - "cGVjIGFuZCBzZXJ2aWNlIGFjY291bnQuIEl0IGlkZW50aWZpZWQgdGhlIGlzc3VlIChtaXNzaW5n" + - "IHNlY3JldCwgd3JvbmcgY3JlZGVudGlhbHMsIG9yIG1pc3NpbmcgaW1hZ2VQdWxsU2VjcmV0cykg" + - "YW5kIHByb3ZpZGVkIHRoZSBjb3JyZWN0IGZpeC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjog" + - "WwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + - "biBTS0lMTC5tZCBhbmQgcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQiLAogICAgICAiVGhlIGFnZW50" + - "IHJhbiAna3ViZWN0bCBkZXNjcmliZSBwb2QnIHRvIHNlZSB0aGUgSW1hZ2VQdWxsQmFja09mZiBl" + - "dmVudHMiLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQgZm9yIHB1bGwgc2VjcmV0cyBpbiB0aGUg" + - "Y2Fzc2FuZHJhLXN5c3RlbSBuYW1lc3BhY2UiLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQgaW1h" + - "Z2VQdWxsU2VjcmV0cyBvbiB0aGUgcG9kIHNwZWMgYW5kL29yIHNlcnZpY2UgYWNjb3VudCIsCiAg" + - "ICAgICJUaGUgYWdlbnQgaWRlbnRpZmllZCB0aGUgcm9vdCBjYXVzZSBhbmQgcHJvdmlkZWQgYSBz" + - "cGVjaWZpYyBmaXgiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzktcmVtb3RlLWVrcy1yb3V0" + - "aW5nLWFuZC1zZWNyZXRzIiwKICAgICJxdWVzdGlvbiI6ICJDb25maWd1cmUgYSByZW1vdGUgRUtT" + - "IGNvbXB1dGUgY2x1c3RlciB0byByZWFjaCBteSBOVkNGIGNvbnRyb2wgcGxhbmUgdGhyb3VnaCBp" + - "dHMgRW52b3kgR2F0ZXdheSwgaW5jbHVkaW5nIE5BVFMgYW5kIHByaXZhdGUtcmVnaXN0cnkgcHVs" + - "bCBzZWNyZXRzLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5z" + - "dGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgdGhl" + - "IGNvbnRyb2wgcGxhbmUgdG8gdXNlIHRoZSBFbnZveSBHYXRld2F5IGNvbnRyb2xsZXIgaW4gZW52" + - "b3ktZ2F0ZXdheS1zeXN0ZW0gYW5kIEdhdGV3YXkvbnZjZi1nYXRld2F5IGluIGVudm95LWdhdGV3" + - "YXksIHNldCBhbGwgc2l4IHJlbW90ZSB3b3JrZXIgZW5kcG9pbnRzIGFuZCB0aGUgZ3JwYy1wcm94" + - "eSBsb2NhbCBvdmVycmlkZSwgZW5hYmxlZCBOVkNGIGFuZCBOVkNUIGdSUEMgcm91dGVzIHBsdXMg" + - "TkFUUywgYW5kIGVuYWJsZWQgT3BlbkJhbyBpc3N1ZXIgZGlzY292ZXJ5LiBJdCBjb25maWd1cmVk" + - "IHRoZSBiYXJlLUdhdGV3YXkgQ0xJIFVSTCBhbmQgSG9zdCBmaWVsZHMgaW5jbHVkaW5nIGljbXNf" + - "aG9zdCwgcGx1cyB0aGUgY29tcHV0ZS1wbGFuZSBJQ01TLCBSZVZhbCwgYW5kIE5BVFMgZXh0ZXJu" + - "YWwgVVJMcyBhbmQgaG9zdCBvdmVycmlkZXMuIEl0IGNyZWF0ZWQgdGhlIHB1bGwgc2VjcmV0IGlu" + - "IGFsbCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMgaW5jbHVkaW5nIGNlcnQtbWFuYWdlciwgYnV0" + - "IG9ubHkgaW4gbnZjYS1vcGVyYXRvciBvbiB0aGUgY29tcHV0ZSBjbHVzdGVyOyB0aGUgY2hhcnQg" + - "YW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0byBudmNhLXN5c3RlbS4iLAogICAgImV4cGVjdGVkX2Jl" + - "aGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWlu" + - "c3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdl" + - "bnQgc2V0IGluZ3Jlc3MuZ2F0ZXdheUFwaS5jb250cm9sbGVyTmFtZXNwYWNlIHRvIGVudm95LWdh" + - "dGV3YXktc3lzdGVtIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgc2hhcmVkLCBncnBjLCBhbmQgbmF0" + - "cyBHYXRld2F5IHJlZmVyZW5jZXMgdG8gbmFtZSBudmNmLWdhdGV3YXkgYW5kIG5hbWVzcGFjZSBl" + - "bnZveS1nYXRld2F5IiwKICAgICAgIlRoZSBhZ2VudCBzZXQgZ2xvYmFsLndvcmtlckVuZHBvaW50" + - "cy5udmNmU2VydmljZVVSTCwgbnZjZkdycGNTZXJ2aWNlVVJMLCBudmNmTmF0c1NlcnZpY2VVUkws" + - "IG52Y3RTZXJ2aWNlVVJMLCBudmN0R3JwY1NlcnZpY2VVUkwsIGFuZCBpbnZvY2F0aW9uU2Vydmlj" + - "ZVVSTCIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGdycGNwcm94eS5udmNmR3JwY1NlcnZpY2VVUkwg" + - "dG8gdGhlIGNvbnRyb2wtcGxhbmUtbG9jYWwgQVBJIGdSUEMgc2VydmljZSIsCiAgICAgICJUaGUg" + - "YWdlbnQgZW5hYmxlZCBib3RoIGluZ3Jlc3MuZ2F0ZXdheUFwaS5yb3V0ZXMubnZjZkFwaS5ncnBj" + - "IGFuZCBudmN0QXBpLmdycGMgd2l0aCB3b3JrZXItYXBpIGFuZCB3b3JrZXItdGFza3MgaG9zdG5h" + - "bWVzIiwKICAgICAgIlRoZSBhZ2VudCBleHBsaWNpdGx5IHNldCBpbmdyZXNzLmdhdGV3YXlBcGku" + - "cm91dGVzLm5hdHMuZW5hYmxlZCB0byB0cnVlIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgb3BlbmJh" + - "by5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkIHRvIHRydWUiLAogICAgICAiVGhl" + - "IGFnZW50IGNvbmZpZ3VyZWQgdGhlIGJhcmUtR2F0ZXdheSBDTEkgVVJMIGFuZCBIb3N0IGZpZWxk" + - "cywgaW5jbHVkaW5nIHNjaGVtZS1sZXNzIGljbXNfaG9zdCIsCiAgICAgICJUaGUgYWdlbnQgY29u" + - "ZmlndXJlZCBjb21wdXRlLXBsYW5lIGljbXNTZXJ2aWNlVVJMLCBpY21zU2VydmljZUhvc3RIZWFk" + - "ZXJPdmVycmlkZSwgcmV2YWxTZXJ2aWNlVVJMLCByZXZhbFNlcnZpY2VIb3N0SGVhZGVyT3ZlcnJp" + - "ZGUsIG5hdHNVUkwsIGFuZCBuYXRzSG9zdE92ZXJyaWRlIiwKICAgICAgIlRoZSBjb250cm9sLXBs" + - "YW5lIHB1bGwtc2VjcmV0IG5hbWVzcGFjZSBsaXN0IGluY2x1ZGVkIGNlcnQtbWFuYWdlciIsCiAg" + - "ICAgICJUaGUgY29tcHV0ZS1wbGFuZSBzZWNyZXQgd2FzIGNyZWF0ZWQgb25seSBpbiBudmNhLW9w" + - "ZXJhdG9yIGFuZCBtaXJyb3JlZCBieSB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIHRvIG52Y2Etc3lz" + - "dGVtIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkcxMS1zcGxpdC10ZWFyZG93biIsCiAgICAi" + - "cXVlc3Rpb24iOiAiVGVhciBkb3duIG15IHNwbGl0IGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUt" + - "cGxhbmUgZGVwbG95bWVudCBzYWZlbHkuIFNob3cgYm90aCB0aGUgSGVsbWZpbGUgdmFsdWVzIGFu" + - "ZCBDTEkgcHJvZmlsZSB2YXJpYW50cy4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2Vs" + - "Zi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBIZWxtZmls" + - "ZSBmbG93IGRlc3Ryb3llZCBhbmQgY29uZmlybWVkIGRlcmVnaXN0cmF0aW9uIG9mIGV2ZXJ5IGNv" + - "bXB1dGUgY2x1c3RlciBiZWZvcmUgZGVzdHJveWluZyB0aGUgY29udHJvbCBwbGFuZSBhbmQgcGFz" + - "c2VkIGJvdGggY29udHJvbC1wbGFuZSBrdWJlY29uZmlnIGZvcm1zLiBCZWZvcmUgZWl0aGVyIGhh" + - "bmRvZmYgY291bGQgZGVzdHJveSB0aGUgY29udHJvbCBwbGFuZSwgYm90aCB0ZWFyZG93biBmbG93" + - "cyB3YXJuZWQgdGhhdCBuYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRvZXMgbm90IHByZXNlcnZlIHRo" + - "ZSBIZWxtIHJlbGVhc2UsIHJlcXVpcmVkIGVmZmVjdGl2ZSBjZXJ0TWFuYWdlci5lbmFibGVkOiBm" + - "YWxzZSBmb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uIGFuZCBhYm9ydGVkIGlmIHRydWUsIGFu" + - "ZCB2ZXJpZmllZCBtYXRjaGluZyByZWxlYXNlIG93bmVyc2hpcCBmb3IgYW4gaW50ZW5kZWQgc3Rh" + - "Y2stbWFuYWdlZCByZWxlYXNlLCBhYm9ydGluZyBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQgZXZp" + - "ZGVuY2UuIFRoZXkgcHJlc2VydmVkIHRoZSBuYW1lc3BhY2UgYnkgZGVmYXVsdCBhbmQgZGlkIG5v" + - "dCBkZWxldGUgaXQgd2l0aG91dCBuYW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQgZXhwbGljaXQgY29u" + - "ZmlybWF0aW9uLiBUaGUgQ0xJIGZsb3cgcmV0YWluZWQgdGhlIGdlbmVyYXRlZCByZWdpc3RyYXRp" + - "b24gdmFsdWVzLCB1c2VkIHRoZSBmdWxsLXByZWZpeCBzdGF0dXMgY29tbWFuZCB0byBpbnNwZWN0" + - "IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRoYXQgbmFtZWQtY2x1c3RlciBwbGFuLW9ubHkg" + - "ZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90IHByZWRpY3QgY29uZGl0aW9uYWwgY29udHJv" + - "bC1wbGFuZSByZW1vdmFsLCBhbmQgZ290IGV4cGxpY2l0IGNvbmZpcm1hdGlvbiB3aGVuIHRoZSB0" + - "YXJnZXQgd2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3Rlci4gSXQgdGhlbiBwcmV2aWV3ZWQg" + - "YW5kIHJhbiBkb3duIHdpdGggdGhlIGZ1bGwgcGVyc2lzdGVudCBwcmVmaXgsIHJlbW92aW5nIHRo" + - "ZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgdGhlIGxhc3QgcmVnaXN0cmF0aW9uIHdhcyBnb25l" + - "LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUg" + - "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0" + - "aW9uIiwKICAgICAgIkZvciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRoZSBIZWxtZmlsZSBmbG93" + - "IHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZSBkZXN0cm95IHRhcmdldCB3aXRoIGl0cyBj" + - "b21wdXRlIGt1YmVjb25maWciLAogICAgICAiQWZ0ZXIgY29uZmlybWF0aW9uLCB0aGUgSGVsbWZp" + - "bGUgZmxvdyByYW4gY2x1c3RlciBkZWxldGUgd2l0aCBjbHVzdGVySUQgYW5kIG5jYUlEIGJlZm9y" + - "ZSBjb250cm9sLXBsYW5lIGRlc3RydWN0aW9uIiwKICAgICAgIkJlZm9yZSBlaXRoZXIgaGFuZG9m" + - "ZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBib3RoIHRlYXJkb3duIGZsb3dzIHdh" + - "cm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9lcyBub3QgcHJlc2VydmUgdGhlIEhl" + - "bG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZlIGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNl" + - "IGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24gYW5kIGFib3J0ZWQgaWYgdHJ1ZSwgYW5kIHZl" + - "cmlmaWVkIGludGVuZGVkIHN0YWNrIG93bmVyc2hpcCB3aGVuIGVuYWJsZWQsIGFib3J0aW5nIG9u" + - "IG1pc3Npbmcgb3IgbWlzbWF0Y2hlZCBldmlkZW5jZSIsCiAgICAgICJCb3RoIHRlYXJkb3duIGZs" + - "b3dzIHByZXNlcnZlZCB0aGUgY2VydC1tYW5hZ2VyIG5hbWVzcGFjZSBieSBkZWZhdWx0IGFuZCBk" + - "aWQgbm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBleHBsaWNp" + - "dCBjb25maXJtYXRpb24iLAogICAgICAiVGhlIEhlbG1maWxlIGZsb3cgcmFuIGNvbnRyb2wtcGxh" + - "bmUgTWFrZWZpbGUgZGVzdHJveSB3aXRoIGJvdGggS1VCRUNPTkZJRyBhbmQgS1VCRUNPTkZJR19G" + - "SUxFIiwKICAgICAgIlRoZSBDTEkgZmxvdyByZXRhaW5lZCBvdXQvPGNsdXN0ZXItbmFtZT4tcmVn" + - "aXN0ZXItdmFsdWVzLnlhbWwgdW50aWwgdGVhcmRvd24gY29tcGxldGVkIiwKICAgICAgIkJlZm9y" + - "ZSByZWFsIGRvd24sIHRoZSBDTEkgZmxvdyB1c2VkIHRoZSBmdWxsLXByZWZpeCBzdGF0dXMgY29t" + - "bWFuZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRoYXQgbmFtZWQtY2x1" + - "c3RlciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90IHByZWRpY3QgY29u" + - "ZGl0aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLCB3YXJuZWQgd2hlbiB0aGUgdGFyZ2V0IHdh" + - "cyB0aGUgbGFzdCByZWdpc3RlcmVkIGNsdXN0ZXIsIGFuZCBnb3QgZXhwbGljaXQgY29uZmlybWF0" + - "aW9uIiwKICAgICAgIlRoZSBDTEkgZmxvdyB1c2VkIC0tY29uZmlnLCBib3RoIHN0YWNrIHBhdGhz" + - "LCAtLWVudiwgLS1wbGFpbiwgYm90aCBjb250ZXh0cywgYW5kIC0taWNtcy11cmwgZm9yIGRvd24g" + - "LS1wbGFuLW9ubHkgYW5kIHRoZW4gZG93biIsCiAgICAgICJUaGUgYWdlbnQgc3RhdGVkIHRoYXQg" + - "ZG93biB1bnJlZ2lzdGVycyBlYWNoIGNvbXB1dGUgY2x1c3RlciBhbmQgcmVtb3ZlcyB0aGUgY29u" + - "dHJvbCBwbGFuZSBvbmx5IGFmdGVyIG5vIHJlZ2lzdHJhdGlvbnMgcmVtYWluIgogICAgXQogIH0s" + - "CiAgewogICAgImlkIjogIlMxMy12YWx1ZXMtcHJlY2VkZW5jZSIsCiAgICAicXVlc3Rpb24iOiAi" + - "SSBhZGRlZCBhIHZhbHVlIHRvIG15IGVudmlyb25tZW50IFlBTUwgYnV0IGl0J3MgYmVpbmcgc2ls" + - "ZW50bHkgaWdub3JlZC4gSG93IGRvIGhlbG1maWxlIHZhbHVlcyB3b3JrIGluIE5WQ0Y/IiwKICAg" + - "ICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAg" + - "Imdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSB2YWx1ZXMgcHJlY2VkZW5j" + - "ZSBjaGFpbiAoYmFzZS55YW1sLCBlbnYgWUFNTCwgZ2xvYmFsLnlhbWwuZ290bXBsLCBzZWNyZXRz" + - "LCBpbmxpbmUgdmFsdWVzKSwgaWRlbnRpZmllZCB0aGF0IGdsb2JhbC55YW1sLmdvdG1wbCBvbmx5" + - "IHBhc3NlcyB0aHJvdWdoIHNwZWNpZmljIGtleXMsIGFuZCBleHBsYWluZWQgdGhhdCBhcmJpdHJh" + - "cnkgY2hhcnQgdmFsdWVzIG11c3QgdXNlIHJlbGVhc2UgaW5saW5lIHZhbHVlcyBibG9ja3MuIiwK" + - "ICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNm" + - "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24i" + - "LAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgdmFsdWVzIHByZWNlZGVuY2UgY2hhaW46" + - "IGJhc2UueWFtbCAtPiBlbnYgWUFNTCAtPiBnbG9iYWwueWFtbC5nb3RtcGwgLT4gc2VjcmV0cyAt" + - "PiBpbmxpbmUgdmFsdWVzIiwKICAgICAgIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoYXQgZ2xvYmFs" + - "LnlhbWwuZ290bXBsIG9ubHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMga2V5cyAoY2Fzc2FuZHJh" + - "LnJlcGxpY2FDb3VudCwgZ2xvYmFsLnN0b3JhZ2VDbGFzcywgZ2xvYmFsLmltYWdlLCBldGMuKSIs" + - "CiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgYXJiaXRyYXJ5IGNoYXJ0IHZhbHVlcyBt" + - "dXN0IGJlIHNldCB2aWEgcmVsZWFzZSBpbmxpbmUgdmFsdWVzOiBibG9ja3MiLAogICAgICAiVGhl" + - "IGFnZW50IGxpc3RlZCBleGFtcGxlcyBvZiB2YWx1ZXMgdGhhdCBhcmUgcHJvcGFnYXRlZCBhbmQg" + - "YXJiaXRyYXJ5IGNoYXJ0IHZhbHVlcyB0aGF0IHJlcXVpcmUgYSByZWxlYXNlIHZhbHVlcyBibG9j" + - "ayIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTMTQtZW5hYmxlLWxsbS1mdW5jdGlvbnMiLAog" + - "ICAgInF1ZXN0aW9uIjogIkkgbmVlZCB0byBkZXBsb3kgZnVuY3Rpb25UeXBlOiBMTE0gZnVuY3Rp" + - "b25zIG9uIGEgc2VsZi1tYW5hZ2VkLCBzaW5nbGUtbm9kZSBpc29sYXRlZCB0ZXN0IGNsdXN0ZXIu" + - "IFdoYXQgSGVsbWZpbGUgY29uZmlndXJhdGlvbiBhbmQgdmVyaWZpY2F0aW9uIHN0ZXBzIGRvIEkg" + - "bmVlZD8iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxh" + - "dGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBlbmFibGVkIHRoZSBMTE0gYWRk" + - "b24gd2l0aCBhZGRvbnMubGxtLmVuYWJsZWQsIGNvbmZpZ3VyZWQgc2luZ2xlIHJlcGxpY2FzIGZv" + - "ciB0aGUgTExNIEFQSSBHYXRld2F5IGFuZCByZXF1ZXN0IHJvdXRlciwgYW5kIGV4cGxhaW5lZCB0" + - "aGF0IHRoZSByZXF1ZXN0IHJvdXRlciB1c2VzIHBvd2VyLW9mLXR3byB3aGVuIG5vIGxvYWQtYmFs" + - "YW5jZXIgY29uZmlndXJhdGlvbiBpcyBzZXQuIEl0IGxpbmtlZCB0aGUgY2Fub25pY2FsIHJlcXVl" + - "c3Qtcm91dGVyIGxvYWQtYmFsYW5jaW5nIGd1aWRlIGZvciBvdGhlciByb3V0aW5nIG1ldGhvZHMu" + - "IEZvciB0aGUgaXNvbGF0ZWQgcGxhaW50ZXh0IGNsdXN0ZXIsIGl0IHJlbGllZCBvbiB0aGUgc2Vs" + - "Zi1tYW5hZ2VkIHN0YWNrIGRlZmF1bHQgZm9yIHRoZSBidW5kbGVkIGdhdGV3YXktdG8tQVBJIGF1" + - "dGhlbnRpY2F0aW9uIGhvcCBhbmQgaW5jbHVkZWQgYWdlbnRDb25maWcubWVyZ2VDb25maWcud29y" + - "a2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUgZm9yIHRoZSBzZXBhcmF0ZSB3b3JrZXIgdHJhbnNw" + - "b3J0LCB3aXRoIGEgd2FybmluZyB0aGF0IHBsYWludGV4dCB3b3JrZXIgdHJhbnNwb3J0IGlzIG5v" + - "dCBmb3IgcHJvZHVjdGlvbi4gSXQgcmVmcmVzaGVkIHRoZSBjb21wdXRlIHBsYW5lIHVzaW5nIHRo" + - "ZSBzYW1lIGhhbmRvZmYgdXNlZCBkdXJpbmcgaW5zdGFsbGF0aW9uLCByZWRlcGxveWVkIGV4aXN0" + - "aW5nIExMTSBmdW5jdGlvbnMsIGFuZCB2ZXJpZmllZCB0aGUgTExNIGRlcGxveW1lbnRzLCByb3V0" + - "ZSwgYW5kIGxsbS13b3JrZXIgc2lkZWNhci4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwog" + - "ICAgICAiVGhlIGFnZW50IHVzZWQgYWRkb25zLmxsbS5lbmFibGVkLCBub3QgdGhlIG9ic29sZXRl" + - "IGxsbS5lbmFibGVkIHBhdGgiLAogICAgICAiVGhlIGFnZW50IHNldCBnYXRld2F5IGFuZCByZXF1" + - "ZXN0Um91dGVyIHJlcGxpY2FDb3VudCB0byAxIGZvciB0aGUgc2luZ2xlLW5vZGUgdGVzdCBjbHVz" + - "dGVyIiwKICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCB0aGUgcmVxdWVzdCByb3V0ZXIgZGVm" + - "YXVsdHMgdG8gcG93ZXItb2YtdHdvIGFuZCBsaW5rZWQgdGhlIGNhbm9uaWNhbCByZXF1ZXN0LXJv" + - "dXRlciBsb2FkLWJhbGFuY2luZyBndWlkZSBmb3Igb3RoZXIgbWV0aG9kcyIsCiAgICAgICJUaGUg" + - "YWdlbnQgZXhwbGFpbmVkIHRoYXQgdGhlIGJ1bmRsZWQgZ2F0ZXdheS10by1BUEkgYXV0aGVudGlj" + - "YXRpb24gaG9wIGRlZmF1bHRzIHRvIHBsYWludGV4dCwgaW5jbHVkZWQgd29ya2xvYWQuc3Rhcmdh" + - "dGVRVUlDSW5zZWN1cmUgb25seSBmb3IgdGhlIGlzb2xhdGVkIHdvcmtlciB0cmFuc3BvcnQsIGFu" + - "ZCB3YXJuZWQgYWdhaW5zdCBwbGFpbnRleHQgd29ya2VyIHRyYW5zcG9ydCBpbiBwcm9kdWN0aW9u" + - "IiwKICAgICAgIlRoZSBhZ2VudCBhcHBsaWVkIHRoZSBjb250cm9sLXBsYW5lIEhlbG1maWxlIGVu" + - "dmlyb25tZW50LCByZWZyZXNoZWQgdGhlIGNvbXB1dGUgcGxhbmUgd2l0aCB0aGUgc2FtZSBzZWxl" + - "Y3RlZCBoYW5kb2ZmLCBhbmQgcmVjcmVhdGVkIG9yIHJlZGVwbG95ZWQgZXhpc3RpbmcgTExNIGZ1" + - "bmN0aW9ucyIsCiAgICAgICJUaGUgYWdlbnQgdmVyaWZpZWQgbGxtLWFwaS1nYXRld2F5LCBsbG0t" + - "cmVxdWVzdC1yb3V0ZXIsIHRoZSBMTE0gSFRUUFJvdXRlLCBhbmQgdGhlIGxsbS13b3JrZXIgc2lk" + - "ZWNhciBpbmNsdWRpbmcgLS1xdWljLWluc2VjdXJlIgogICAgXQogIH0sCiAgewogICAgImlkIjog" + - "Ikc4LU5FRy1ub3QtZm9yLWszZCIsCiAgICAicXVlc3Rpb24iOiAiU2V0IHVwIGEgbG9jYWwgTlZD" + - "RiBkZXYgY2x1c3RlciB1c2luZyBrM2QgZm9yIHRlc3RpbmciLAogICAgImV4cGVjdGVkX3NraWxs" + - "IjogbnVsbCwKICAgICJzaG91bGRfdHJpZ2dlciI6IGZhbHNlLAogICAgImdyb3VuZF90cnV0aCI6" + - "ICJUaGlzIGlzIGEgbG9jYWwgazNkIGRldmVsb3BtZW50IHJlcXVlc3QgdGhhdCBiZWxvbmdzIHRv" + - "IHRoZSBudmNmLXNlbGYtaG9zdGVkLWxvY2FsLWRldiBza2lsbCwgbm90IG52Y2Ytc2VsZi1tYW5h" + - "Z2VkLWluc3RhbGxhdGlvbi4gVGhlIGFnZW50IGRpZCBub3QgcmVhZCBvciB1c2UgdGhlIHNlbGYt" + - "bWFuYWdlZCBpbnN0YWxsYXRpb24gc2tpbGwgYW5kIGluc3RlYWQgcHJvdmlkZWQgazNkLXNwZWNp" + - "ZmljIGd1aWRhbmNlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdl" + - "bnQgZGlkIG5vdCByZWFkIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5tZCIs" + - "CiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm92aWRlIGhlbG1maWxlLWJhc2VkIHByb2R1Y3Rp" + - "b24gZGVwbG95bWVudCBpbnN0cnVjdGlvbnMiLAogICAgICAiVGhlIGFnZW50IHByb3ZpZGVkIGsz" + - "ZC1zcGVjaWZpYyBsb2NhbCBkZXZlbG9wbWVudCBndWlkYW5jZSBvciBkZWZlcnJlZCB0byB0aGUg" + - "YXBwcm9wcmlhdGUgbG9jYWwtZGV2IHNraWxsIgogICAgXQogIH0KXQpQSwcIR1VqVkpWAABKVgAA" + - "UEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAvAAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0" + - "YWxsYXRpb24vZXhhbXBsZXMubWRVVAUAAQCmzhIjIEV4YW1wbGVzCgpXb3JrZWQgZXhhbXBsZXMg" + - "YmFzZWQgb24gcmVhbCBkZXBsb3ltZW50IHNjZW5hcmlvcy4KCiMjIEV4YW1wbGUgMTogT3ZlcnJp" + - "ZGUgQ2Fzc2FuZHJhIFJlc291cmNlcwoKVGhlIGRlZmF1bHQgQ2Fzc2FuZHJhIHJlc291cmNlIGxp" + - "bWl0cyBjYXVzZSBPT00gb24gbGFyZ2UgaW5zdGFuY2UgdHlwZXMgKGUuZy4sIGBwNS40OHhsYXJn" + - "ZWApLgoKUHJvYmxlbTogQ2Fzc2FuZHJhIHBvZHMgcmVzdGFydCB3aXRoIGBPT01LaWxsZWRgLgoK" + - "U29sdXRpb246IE92ZXJyaWRlIHJlc291cmNlcyB2aWEgaGVsbWZpbGUgcmVsZWFzZSB2YWx1ZXMg" + - "YmxvY2suCgojIyMgU3RlcCAxOiBDYXB0dXJlIGJhc2VsaW5lCgpgYGBiYXNoCkhFTE1GSUxFX0VO" + - "Vj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlID4gL3Rt" + - "cC9jYXNzLWJlZm9yZS55YW1sCmdyZXAgLUE4ICdyZXNvdXJjZXM6JyAvdG1wL2Nhc3MtYmVmb3Jl" + - "LnlhbWwgfCBoZWFkIC0xMApgYGAKCiMjIyBTdGVwIDI6IEFkZCBvdmVycmlkZSB0byBoZWxtZmls" + - "ZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbAoKSW4gdGhlIGV4YW1wbGVzIGJlbG93LCBg" + - "PHByaXZhdGUtdmFsdWVzPmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0" + - "aGUgaGVsbWZpbGUgc3RhY2sgcm9vdC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNzYW5kcmEKICB2ZXJz" + - "aW9uOiAwLjguMAogIGNvbmRpdGlvbjogY2Fzc2FuZHJhLmVuYWJsZWQKICBuYW1lc3BhY2U6IGNh" + - "c3NhbmRyYS1zeXN0ZW0KICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2dsb2Jh" + - "bC55YW1sLmdvdG1wbAogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52ICJI" + - "RUxNRklMRV9FTlYiIH19LXNlY3JldHMueWFtbAogICAgLSBjYXNzYW5kcmE6CiAgICAgICAgcmVz" + - "b3VyY2VzOgogICAgICAgICAgbGltaXRzOgogICAgICAgICAgICBjcHU6ICI4IgogICAgICAgICAg" + - "ICBtZW1vcnk6IDgxOTJNaQogICAgICAgICAgcmVxdWVzdHM6CiAgICAgICAgICAgIGNwdTogIjIi" + - "CiAgICAgICAgICAgIG1lbW9yeTogNDA5Nk1pCmBgYAoKIyMjIFN0ZXAgMzogVmVyaWZ5IGFuZCBh" + - "cHBseQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1l" + - "PWNhc3NhbmRyYSB0ZW1wbGF0ZSA+IC90bXAvY2Fzcy1hZnRlci55YW1sCmRpZmYgL3RtcC9jYXNz" + - "LWJlZm9yZS55YW1sIC90bXAvY2Fzcy1hZnRlci55YW1sICAjIENvbmZpcm0gcmVzb3VyY2VzIGNo" + - "YW5nZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5k" + - "cmEgc3luYwpgYGAKCk5vdGU6IGByZXNvdXJjZVByZXNldGAgKGEgQml0bmFtaSBmZWF0dXJlKSBp" + - "cyBub3QgYXZhaWxhYmxlIGluIHRoZSBOVkNGIGNhc3NhbmRyYSB3cmFwcGVyIGNoYXJ0LiBVc2Ug" + - "ZXhwbGljaXQgYHJlc291cmNlc2AgaW5zdGVhZC4KCi0tLQoKIyMgRXhhbXBsZSAyOiBEZXBsb3kg" + - "ZnJvbSBOR0MgUHJpdmF0ZSBSZWdpc3RyeSB3aXRoIFB1bGwgU2VjcmV0cwoKRGVwbG95IHRoZSBO" + - "VkNGIHN0YWNrIHB1bGxpbmcgaW1hZ2VzIGRpcmVjdGx5IGZyb20gTkdDIChgbnZjci5pb2ApIGlu" + - "c3RlYWQgb2YgYSBtaXJyb3JlZCByZWdpc3RyeSwgdXNpbmcgaW1hZ2UgcHVsbCBzZWNyZXRzLgoK" + - "IyMjIFN0ZXAgMTogQ29uZmlndXJlIGVudmlyb25tZW50IGZvciBOR0MKCmBgYHlhbWwKIyBlbnZp" + - "cm9ubWVudHMvPGVudj4ueWFtbApnbG9iYWw6CiAgaGVsbToKICAgIHNvdXJjZXM6CiAgICAgIHJl" + - "Z2lzdHJ5OiBudmNyLmlvCiAgICAgIHJlcG9zaXRvcnk6IG52aWRpYS9udmNmCiAgaW1hZ2U6CiAg" + - "ICByZWdpc3RyeTogbnZjci5pbwogICAgcmVwb3NpdG9yeTogbnZpZGlhL252Y2YKYGBgCgojIyMg" + - "U3RlcCAyOiBBdXRoZW50aWNhdGUgbG9jYWxseSAoZm9yIGhlbG1maWxlIGNoYXJ0IHB1bGxzKQoK" + - "YGBgYmFzaApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQ" + - "SV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIk" + - "TkdDX0FQSV9LRVkiCmBgYAoKIyMjIFN0ZXAgMzogQ3JlYXRlIG5hbWVzcGFjZXMgYW5kIHB1bGwg" + - "c2VjcmV0cwoKYGBgYmFzaApleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLW5nYy1hcGkta2V5PiIK" + - "CmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNz" + - "IHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0IDxj" + - "b250cm9sLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3BhY2UgIiRucyIgXAogICAgLS1kcnkt" + - "cnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + - "dGV4dD4gYXBwbHkgLWYgLQpkb25lCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5" + - "c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8K" + - "ICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgc2VjcmV0" + - "IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNlcnZlcj1udmNyLmlv" + - "IFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAgLS1kb2NrZXItcGFz" + - "c3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIgXAogICAgLS1kcnkt" + - "cnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + - "dGV4dD4gYXBwbHkgLWYgLQpkb25lCmBgYAoKIyMjIFN0ZXAgNDogQWRkIGltYWdlUHVsbFNlY3Jl" + - "dHMgdG8gaGVsbWZpbGUgcmVsZWFzZXMKCkFkZCB0aGUgY2hhcnQtc3BlY2lmaWMgYGltYWdlUHVs" + - "bFNlY3JldHNgIGtleSB0byBlYWNoIHJlbGVhc2UuIEV4YW1wbGUgZm9yIGNhc3NhbmRyYSBpbiBg" + - "aGVsbWZpbGUuZC8wMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGxgOgoKYGBgeWFtbAotIG5hbWU6" + - "IGNhc3NhbmRyYQogIHZlcnNpb246IDAuOC4wCiAgY29uZGl0aW9uOiBjYXNzYW5kcmEuZW5hYmxl" + - "ZAogIG5hbWVzcGFjZTogY2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAqZGVwZW5kZW5jeQogIHZhbHVl" + - "czoKICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAtIC4uLzxwcml2YXRlLXZhbHVlcz4v" + - "e3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCiAgICAtIGNhc3Nh" + - "bmRyYToKICAgICAgICBnbG9iYWw6CiAgICAgICAgICBpbWFnZVB1bGxTZWNyZXRzOgogICAgICAg" + - "ICAgICAtIG52Y3ItY3JlZHMKYGBgCgpTZWUgW3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kXShy" + - "ZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCkgZm9yIHRoZSBrZXkgZm9yIGV2ZXJ5IGNoYXJ0LgoK" + - "VGhlc2UgYXJlIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcy4gRm9yIGEgc2VwYXJhdGUgY29tcHV0" + - "ZSBjbHVzdGVyLCBjcmVhdGUgdGhlCnNlY3JldCBvbmx5IGluIGBudmNhLW9wZXJhdG9yYDsgdGhl" + - "IGNoYXJ0IGFuZCBvcGVyYXRvciBtaXJyb3IgaXQgdG8KYG52Y2Etc3lzdGVtYC4gU2VlIFtTcGxp" + - "dCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWlu" + - "c3RhbGxhdGlvbi5tZCNwdWxsLXNlY3JldHMpLgoKIyMjIFN0ZXAgNTogRGVwbG95CgpgYGBiYXNo" + - "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLWt1YmUtY29udGV4dCA8Y29udHJvbC1wbGFu" + - "ZS1jb250ZXh0PiBzeW5jCmBgYAoKIyMjIFN0ZXAgNjogUGF0Y2ggU2VydmljZUFjY291bnRzIGZv" + - "ciBjaGFydHMgd2l0aG91dCBuYXRpdmUgc3VwcG9ydAoKQWZ0ZXIgUGhhc2UgMSAoZGVwZW5kZW5j" + - "aWVzKSBjb21wbGV0ZXMsIE9wZW5CYW8gcG9kcyB3aWxsIGJlIGluIGBJbWFnZVB1bGxCYWNrT2Zm" + - "YC4gUGF0Y2ggYW5kIHJlc3RhcnQ6CgpgYGBiYXNoCmZvciBucyBpbiB2YXVsdC1zeXN0ZW0gbnZj" + - "ZiBlc3M7IGRvCiAgZm9yIHNhIGluICQoa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + - "Y29udGV4dD4gZ2V0IHNhIC1uICIkbnMiIFwKICAgIC0tbm8taGVhZGVycyAtbyBjdXN0b20tY29s" + - "dW1ucz0iOm1ldGFkYXRhLm5hbWUiKTsgZG8KICAgIGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9s" + - "LXBsYW5lLWNvbnRleHQ+IHBhdGNoIHNlcnZpY2VhY2NvdW50IC1uICIkbnMiICIkc2EiIFwKICAg" + - "ICAgLXAgJ3siaW1hZ2VQdWxsU2VjcmV0cyI6IFt7Im5hbWUiOiAibnZjci1jcmVkcyJ9XX0nCiAg" + - "ZG9uZQpkb25lCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGRlbGV0" + - "ZSBwb2RzIC1uIHZhdWx0LXN5c3RlbSAtLWFsbApgYGAKClZlcmlmeToKCmBgYGJhc2gKa3ViZWN0" + - "bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGV2ZW50cyAtbiB2YXVsdC1z" + - "eXN0ZW0gXAogIC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAnIHwgZ3JlcCAtaSBwdWxsCiMgU2hv" + - "dWxkIHNob3cgIlN1Y2Nlc3NmdWxseSBwdWxsZWQgaW1hZ2UiIGZyb20gbnZjci5pbwpgYGAKCi0t" + - "LQoKIyMgRXhhbXBsZSAzOiBGdWxsIFRlYXJkb3duIGFuZCBSZWluc3RhbGwKCldoZW4gYSBkZXBs" + - "b3ltZW50IGlzIGJyb2tlbiBhbmQgeW91IG5lZWQgYSBjbGVhbiBzbGF0ZS4KCiMjIyBTdGVwIDE6" + - "IERlc3Ryb3kgdGhlIGNvbXB1dGUtcGxhbmUgc3RhY2sKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kv" + - "c3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVSX05BTUU9PGNsdXN0" + - "ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21w" + - "dXRlLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKSWYgY29tcHV0ZSBjbGVhbnVwIGlzIHN0dWNrIG9u" + - "IGZpbmFsaXplcnMsIHVzZSB0aGUgY29tcHV0ZS1jb250ZXh0IHByb2NlZHVyZSBpbgpbZGVidWdn" + - "aW5nLm1kXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCNmYWlsdXJlLW52Y2EtY2xlYW51cC1zdHVj" + - "ay1maW5hbGl6ZXJzKS4KCiMjIyBTdGVwIDI6IERlcmVnaXN0ZXIgdGhlIGNvbXB1dGUgY2x1c3Rl" + - "cgoKUmVhZCBgY2x1c3RlcklEYCBhbmQgYG5jYUlEYCBmcm9tCmBkZXBsb3kvc3RhY2tzL252Y2Yt" + - "Y29tcHV0ZS1wbGFuZS9yZWdpc3RyYXRpb24vPGNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVz" + - "LnlhbWxgLgpTaG93IHRoZSBJRCBhbmQgZ2V0IGNvbmZpcm1hdGlvbiBiZWZvcmUgZGVsZXRpbmcg" + - "dGhlIElDTVMgcm93OgoKYGBgYmFzaAo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNsdXN0" + - "ZXIgZGVsZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1yZWdpc3RyYXRpb24t" + - "dmFsdWVzPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBgCgpS" + - "ZXBlYXQgc3RlcHMgMSBhbmQgMiBmb3IgZXZlcnkgY29tcHV0ZSBjbHVzdGVyLgoKIyMjIFN0ZXAg" + - "MzogRGVzdHJveSB0aGUgY29udHJvbC1wbGFuZSBzdGFjawoKUHJlc2VydmUgdGhlIGBjZXJ0LW1h" + - "bmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRvZXMK" + - "bm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEJlZm9yZSBydW5uaW5nIGRlc3Ryb3ksIGlk" + - "ZW50aWZ5IHdoZXRoZXIKY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLiBGb3IgYW4gZXh0ZXJuYWwg" + - "aW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZQpgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFs" + - "c2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQKc3RhY2stbWFuYWdl" + - "ZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwgdmVy" + - "aWZ5Cm1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQgYWJvcnQgb24gbWlz" + - "c2luZyBvciBtaXNtYXRjaGVkCmV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNwYWNlIHJlbW92YWwg" + - "YWZ0ZXIgdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZApnZXR0aW5nIGV4cGxpY2l0" + - "IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlIGRvIG5vdCBkZWxldGUgaXQuCgpgYGBiYXNoCktVQkVD" + - "T05GSUc9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4gXAptYWtlIC1DIGRlcGxveS9zdGFja3Mv" + - "c2VsZi1tYW5hZ2VkIGRlc3Ryb3kgXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJ" + - "R19GSUxFPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKUGFzcyBib3RoIGt1YmVjb25m" + - "aWcgZm9ybXMgYmVjYXVzZSBjb250cm9sLXBsYW5lIG5hbWVzcGFjZSBjbGVhbnVwIHVzZXMKYW1i" + - "aWVudCBga3ViZWN0bGAuCgojIyMgU3RlcCA0OiBWZXJpZnkgY2xlYW4KCmBgYGJhc2gKa3ViZWN0" + - "bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG5zIHwgXAogIGdyZXAgLUUg" + - "JyhudmNhfG52Y2YtYmFja2VuZHxncm92ZXxkeW5hbW8pJwprdWJlY3RsIC0tY29udGV4dCA8Y29u" + - "dHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgbnMgfCBcCiAgZ3JlcCAtRSAnKGNhc3NhbmRyYXxuYXRz" + - "fHZhdWx0fG52Y2Z8YXBpLWtleXN8ZXNzfHNpcyknCiMgQm90aCBjb21tYW5kcyBzaG91bGQgcmV0" + - "dXJuIGVtcHR5LgpgYGAKCiMjIyBTdGVwIDU6IFJlaW5zdGFsbCBpbiBzcGxpdCBvcmRlcgoKRm9s" + - "bG93IFtDbGVhbiBJbnN0YWxsYXRpb25dKFNLSUxMLm1kI2NsZWFuLWluc3RhbGxhdGlvbiksIHRo" + - "ZW4gcmV0dXJuIHRvIHRoZQpzYW1lIGhhbmRvZmYgaW4gW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5z" + - "dGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4KCi0t" + - "LQoKIyMgRXhhbXBsZSA0OiBSZWNvdmVyIGZyb20gYSBHYXRld2F5IEVuZHBvaW50IENoYW5nZQoK" + - "VGhlIHNlcGFyYXRlbHkgcHJvdmlzaW9uZWQgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxhbmNlciB3" + - "YXMgcmVjcmVhdGVkIGFuZCBnb3QgYSBuZXcgZW5kcG9pbnQuCgojIyMgU3RlcCAxOiBHZXQgdGhl" + - "IG5ldyBlbmRwb2ludAoKYGBgYmFzaApHQVRFV0FZX0FERFI9JChrdWJlY3RsIC0tY29udGV4dCA8" + - "Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1nYXRld2F5IC1uIGVu" + - "dm95LWdhdGV3YXkgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFsdWV9" + - "JykKdGVzdCAtbiAiJEdBVEVXQVlfQUREUiIKYGBgCgojIyMgU3RlcCAyOiBVcGRhdGUgRE5TIGFu" + - "ZCBkaXJlY3QgYWRkcmVzcyBmaWVsZHMKCktlZXAgYGdsb2JhbC5kb21haW5gLCByb3V0ZSBob3N0" + - "bmFtZXMsIGFuZCBDTEkgSG9zdCBmaWVsZHMgdW5jaGFuZ2VkLiBQb2ludCB0aGUKRE5TIHJlY29y" + - "ZHMgZm9yIHJlbmRlcmVkIHJvdXRlIGhvc3RuYW1lcywgc3VjaCBhcyBgYXBpLjxkb21haW4+YCBh" + - "bmQKYCouaW52b2NhdGlvbi48ZG9tYWluPmAsIHRvIGBHQVRFV0FZX0FERFJgLiBGb3IgYSB0ZW1w" + - "b3JhcnkgZW52aXJvbm1lbnQgd2l0aG91dApETlMsIGtlZXAgaXRzIHJlc2VydmVkIHJvdXRlIHN1" + - "ZmZpeCBhbmQgY29ubmVjdCB0byBgR0FURVdBWV9BRERSYCB3aXRoIHRoZQptYXRjaGluZyBgSG9z" + - "dGAgaGVhZGVyLgoKRm9yIGEgc3BsaXQgZGVwbG95bWVudCBjb25maWd1cmVkIHdpdGggZGlyZWN0" + - "IEdhdGV3YXkgYWRkcmVzc2VzLCByZXBsYWNlIG9ubHkKdGhlIGFkZHJlc3MtYmVhcmluZyB2YWx1" + - "ZXM6IGNvbnRyb2wtcGxhbmUgYG52Y2ZOYXRzU2VydmljZVVSTGAsIGNvbXB1dGUtcGxhbmUKSUNN" + - "UywgUmVWYWwsIGFuZCBOQVRTIFVSTHMsIGFuZCBDTEkgVVJMIGZpZWxkcy4gS2VlcCB0aGVpciBk" + - "b21haW4gYW5kIEhvc3QKb3ZlcnJpZGVzIHVuY2hhbmdlZC4gUmVmcmVzaCByZWdpc3RyYXRpb24g" + - "YW5kIGluc3RhbGxhdGlvbiB0aHJvdWdoIHRoZSBzYW1lCmhhbmRvZmYgdXNlZCBvcmlnaW5hbGx5" + - "LiBTZWUKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1" + - "dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKQpmb3IgdGhlIGZpZWxkcyBhbmQgY29tcGxldGUgY29t" + - "bWFuZHMuCgojIyMgU3RlcCAzOiBWZXJpZnkgYm90aCBjb250ZXh0cwoKYGBgYmFzaApkaWcgK3No" + - "b3J0ICJhcGkuPGRvbWFpbj4iCmN1cmwgLUggIkhvc3Q6IGFwaS48ZG9tYWluPiIgImh0dHA6Ly8k" + - "R0FURVdBWV9BRERSL2hlYWx0aCIKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + - "dGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAtbiBlbnZveS1nYXRld2F5IC1vIHdp" + - "ZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGh0dHByb3V0" + - "ZXMgLUEKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHRjcHJv" + - "dXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiByb2xsb3V0" + - "IHN0YXR1cyBcCiAgZGVwbG95bWVudC9udmNhLW9wZXJhdG9yIC1uIG52Y2Etb3BlcmF0b3IgLS10" + - "aW1lb3V0PTEwbQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiB3YWl0" + - "IFwKICBudmNmYmFja2VuZC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IC1uIG52Y2Etb3Bl" + - "cmF0b3IgXAogIC0tZm9yPWpzb25wYXRoPSd7LnN0YXR1cy5hZ2VudFN0YXR1c30nPWhlYWx0aHkg" + - "LS10aW1lb3V0PTEwbQpgYGAKCi0tLQoKIyMgRXhhbXBsZSA1OiBEZXBsb3kgT25seSBEZXBlbmRl" + - "bmNpZXMKClVzZWZ1bCBmb3IgdGVzdGluZyBvciB3aGVuIGl0ZXJhdGluZyBvbiBzZXJ2aWNlIGNv" + - "bmZpZ3VyYXRpb24uCgpgYGBiYXNoCiMgRGVwbG95IGp1c3QgTkFUUywgQ2Fzc2FuZHJhLCBPcGVu" + - "QmFvCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9" + - "ZGVwZW5kZW5jaWVzIHN5bmMKCiMgQ2hlY2sgc3RhdHVzCmt1YmVjdGwgZ2V0IHBvZHMgLW4gbmF0" + - "cy1zeXN0ZW0Ka3ViZWN0bCBnZXQgcG9kcyAtbiBjYXNzYW5kcmEtc3lzdGVtCmt1YmVjdGwgZ2V0" + - "IHBvZHMgLW4gdmF1bHQtc3lzdGVtCgojIERlcGxveSBqdXN0IG9uZSBzcGVjaWZpYyByZWxlYXNl" + - "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5" + - "bmMKYGBgCgojIyMgU2VsZWN0b3IgcmVmZXJlbmNlCgp8IFNlbGVjdG9yIHwgUmVsZWFzZXMgfAp8" + - "LS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGByZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llc2AgfCBu" + - "YXRzLCBjYXNzYW5kcmEsIG9wZW5iYW8tc2VydmVyIHwKfCBgcmVsZWFzZS1ncm91cD1zZXJ2aWNl" + - "c2AgfCBhcGkta2V5cywgc2lzLCBhcGksIGludm9jYXRpb24tc2VydmljZSwgZ3JwYy1wcm94eSwg" + - "ZXNzLWFwaSwgbm90YXJ5LXNlcnZpY2UsIHJldmFsLCBvcHRpb25hbCBsbG0tcmVxdWVzdC1yb3V0" + - "ZXIgYW5kIGxsbS1hcGktZ2F0ZXdheSB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCwgb3B0aW9uYWwg" + - "dmFuaXR5LWdhdGV3YXkgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhlIGFk" + - "ZG9uIGFuZCBoYXZlIGBhZGRvbnMudmFuaXR5R2F0ZXdheS5lbmFibGVkPXRydWVgLCBvcHRpb25h" + - "bCBudmNmLXVpIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBhZGRvbiBh" + - "bmQgaGF2ZSBgYWRkb25zLm52Y2ZVaS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1sbG0tcmVxdWVz" + - "dC1yb3V0ZXJgIHwgRGVwbG95IGp1c3QgdGhlIExMTSByZXF1ZXN0IHJvdXRlciB3aGVuIGBsbG0u" + - "ZW5hYmxlZD10cnVlYCB8CnwgYG5hbWU9bGxtLWFwaS1nYXRld2F5YCB8IERlcGxveSBqdXN0IHRo" + - "ZSBMTE0gQVBJIGdhdGV3YXkgd2hlbiBgbGxtLmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1lPXZhbml0" + - "eS1nYXRld2F5YCB8IERlcGxveSBqdXN0IFZhbml0eSBHYXRld2F5IG9ubHkgd2hlbiB0aGUgc3Rh" + - "Y2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5kIGBhZGRvbnMudmFuaXR5R2F0ZXdh" + - "eS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1udmNmLXVpYCB8IERlcGxveSBOVkNGIFVJIG9ubHkg" + - "d2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5kIGBhZGRvbnMu" + - "bnZjZlVpLmVuYWJsZWQ9dHJ1ZWAgfAp8IGByZWxlYXNlLWdyb3VwPWluZ3Jlc3NgIHwgaW5ncmVz" + - "cyAoZ2F0ZXdheSByb3V0ZXMpIHwKfCBgbmFtZT08cmVsZWFzZT5gIHwgQW55IGluZGl2aWR1YWwg" + - "cmVsZWFzZSBieSBuYW1lIHwKCk5vdGU6IGBhZG1pbi1pc3N1ZXItcHJveHlgIGRvZXMgbm90IGhh" + - "dmUgYSByZWxlYXNlLWdyb3VwIGxhYmVsLiBUYXJnZXQgaXQgd2l0aCBgLS1zZWxlY3RvciBuYW1l" + - "PWFkbWluLWlzc3Vlci1wcm94eWAuClBLBwgCUk5AfygAAH8oAABQSwMEFAAIAAAAAAAhAAAAAAAA" + - "AAAAAAAAAEwACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2Vz" + - "L2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kVVQFAAEAps4SIyBTcGxpdCBDb21wdXRlLVBs" + - "YW5lIEluc3RhbGxhdGlvbgoKVGhlIGNvbnRyb2wgcGxhbmUgYW5kIGNvbXB1dGUgcGxhbmUgYXJl" + - "IHNlcGFyYXRlIHN0YWNrcy4gSW5zdGFsbCB0aGUgY29udHJvbApwbGFuZSBmaXJzdCwgdGhlbiBy" + - "ZWdpc3RlciBhbmQgaW5zdGFsbCBlYWNoIGNvbXB1dGUgY2x1c3Rlci4gQ2hvb3NlIG9uZSBoYW5k" + - "b2ZmCmJlbG93IGFuZCB1c2UgaXQgZm9yIHRoZSBmdWxsIGxpZmVjeWNsZS4gRG8gbm90IGNvbWJp" + - "bmUgYSBDTEktZ2VuZXJhdGVkIHByb2ZpbGUKd2l0aCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZsb3cu" + - "CgojIyBDaG9vc2UgYSBIYW5kb2ZmCgp8IEZsb3cgfCBTb3VyY2Ugb2YgY29udHJvbC1wbGFuZSBl" + - "bmRwb2ludHMgfCBSZWdpc3RyYXRpb24gYXJ0aWZhY3QgfAp8LS0tLS0tfC0tLS0tLS0tLS0tLS0t" + - "LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IEhlbG1maWxl" + - "IHZhbHVlcyB8IFNlcGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZW52aXJv" + - "bm1lbnQgZmlsZXMgfCBgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvcmVnaXN0cmF0" + - "aW9uLzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgfAp8IENMSSBwcm9maWxlIHwgQ0xJ" + - "LWdlbmVyYXRlZCBgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUt" + - "cHJvZmlsZS55YW1sYCB8IENMSS1nZW5lcmF0ZWQgYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRl" + - "LXBsYW5lL291dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIHwKClRoZSBDTEkgcHJv" + - "ZmlsZSBpcyBtYW5kYXRvcnkgZm9yIHRoZSBDTEkgZmxvdyBhbmQgbXVzdCBub3QgYmUgaGFuZC1h" + - "dXRob3JlZC4KVGhlIEhlbG1maWxlIGZsb3cgZG9lcyBub3QgY29uc3VtZSBhIGNvbnRyb2wtcGxh" + - "bmUgcHJvZmlsZS4KCkNvbW1hbmRzIGJlbG93IHVzZSBtb25vcmVwbyBwYXRocyBmcm9tIHRoZSBy" + - "ZXBvc2l0b3J5IHJvb3QuIE9wZXJhdG9ycyB1c2luZwpleHRyYWN0ZWQgcGFja2FnZXMgbmVlZCBt" + - "YXRjaGluZy12ZXJzaW9uIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgYW5kCmBudmNmLWNvbXB1" + - "dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXMuIFN1YnN0aXR1dGUgdGhvc2UgYnVuZGxlIHJvb3RzIGZv" + - "cgpgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWRgIGFuZCBgZGVwbG95L3N0YWNrcy9udmNmLWNv" + - "bXB1dGUtcGxhbmVgLgoKIyMgSGVsbWZpbGUgVmFsdWVzIEZsb3cKCkNyZWF0ZSBib3RoIGVudmly" + - "b25tZW50IGZpbGVzIGJlZm9yZSBpbnN0YWxsYXRpb246CgotIGBkZXBsb3kvc3RhY2tzL3NlbGYt" + - "bWFuYWdlZC9lbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgZm9yIGNvbnRyb2wtcGxhbmUKICByZWdp" + - "c3RyeSwgZG9tYWluLCBHYXRld2F5LCByb3V0ZXMsIGFuZCBzZXJ2aWNlIHNldHRpbmdzLgotIGBk" + - "ZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMvPGVudj4ueWFtbGAg" + - "Zm9yIGNvbXB1dGUtcGxhbmUKICByZWdpc3RyeSwgcHVsbCBzZWNyZXRzLCBhbmQgY29tcHV0ZS1y" + - "ZWFjaGFibGUgSUNNUywgUmVWYWwsIGFuZCBOQVRTIHZhbHVlcy4KCkZvciBFS1MsIHVzZSB0aGUg" + - "Y2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2RvY3MubnZpZGlhLmNv" + - "bS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4KVGhlIGNvbnRyb2wtcGxh" + - "bmUgZW52aXJvbm1lbnQga2VlcHMgdGhlIEVudm95IEdhdGV3YXkgY29udHJvbGxlciBpbgpgZW52" + - "b3ktZ2F0ZXdheS1zeXN0ZW1gLCBhdHRhY2hlcyByb3V0ZXMgdG8gYEdhdGV3YXkvbnZjZi1nYXRl" + - "d2F5YCBpbgpgZW52b3ktZ2F0ZXdheWAsIGFuZCBlbmFibGVzIHRoZSBOQVRTIHJvdXRlLiBUaGUg" + - "Y29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCB1c2VzCnRoZSBleHRlcm5hbCBhZGRyZXNzIHBsdXMg" + - "dGhlIHNlcnZpY2UgaG9zdCBvdmVycmlkZXMuIEhlcmUsCmA8Z2F0ZXdheS1hZGRyZXNzPmAgaXMg" + - "dGhlIE5MQiBhZGRyZXNzIGFuZCBgPGdhdGV3YXktZG9tYWluPmAgaXMgdGhlIEROUyBiYXNlCndo" + - "b3NlIHNlcnZpY2Ugc3ViZG9tYWlucyByZXNvbHZlIHRvIHRoYXQgTkxCOgoKYGBgeWFtbAojIGRl" + - "cGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoK" + - "ICBkb21haW46ICI8Z2F0ZXdheS1kb21haW4+IgogIHdvcmtlckVuZHBvaW50czoKICAgIG52Y2ZT" + - "ZXJ2aWNlVVJMOiAiaHR0cDovL2FwaS48Z2F0ZXdheS1kb21haW4+IgogICAgbnZjZkdycGNTZXJ2" + - "aWNlVVJMOiAiaHR0cDovL3dvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiIKICAgIG52Y2ZOYXRz" + - "U2VydmljZVVSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNzPjo0MjIyIgogICAgbnZjdFNlcnZp" + - "Y2VVUkw6ICJodHRwOi8vdGFza3MuPGdhdGV3YXktZG9tYWluPiIKICAgIG52Y3RHcnBjU2Vydmlj" + - "ZVVSTDogImh0dHA6Ly93b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiIKICAgIGludm9jYXRp" + - "b25TZXJ2aWNlVVJMOiAiaHR0cDovL2ludm9jYXRpb24uPGdhdGV3YXktZG9tYWluPiIKCmdycGNw" + - "cm94eToKICBudmNmR3JwY1NlcnZpY2VVUkw6ICJodHRwOi8vYXBpLm52Y2Yuc3ZjLmNsdXN0ZXIu" + - "bG9jYWw6OTA5MCIKCmluZ3Jlc3M6CiAgZ2F0ZXdheUFwaToKICAgIGNvbnRyb2xsZXJOYW1lc3Bh" + - "Y2U6IGVudm95LWdhdGV3YXktc3lzdGVtCiAgICBnYXRld2F5czoKICAgICAgc2hhcmVkOiB7bmFt" + - "ZTogbnZjZi1nYXRld2F5LCBuYW1lc3BhY2U6IGVudm95LWdhdGV3YXl9CiAgICAgIGdycGM6IHtu" + - "YW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheX0KICAgICAgbmF0czoK" + - "ICAgICAgICBuYW1lOiBudmNmLWdhdGV3YXkKICAgICAgICBuYW1lc3BhY2U6IGVudm95LWdhdGV3" + - "YXkKICAgICAgICBsaXN0ZW5lck5hbWU6IG5hdHMKICAgIHJvdXRlczoKICAgICAgbnZjZkFwaToK" + - "ICAgICAgICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAgICAgaG9zdG5hbWVz" + - "OiBbIndvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG52Y3RBcGk6CiAgICAgICAg" + - "Z3JwYzoKICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgIGhvc3RuYW1lczogWyJ3b3Jr" + - "ZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG5hdHM6CiAgICAgICAgZW5hYmxlZDog" + - "dHJ1ZQoKb3BlbmJhbzoKICBtaWdyYXRpb25zOgogICAgaXNzdWVyRGlzY292ZXJ5OgogICAgICBl" + - "bmFibGVkOiB0cnVlCmBgYAoKYGBgeWFtbAojIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBs" + - "YW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoKICBudmNhT3BlcmF0b3I6CiAgICBz" + - "ZWxmTWFuYWdlZDoKICAgICAgaWNtc1NlcnZpY2VVUkw6ICJodHRwOi8vPGdhdGV3YXktYWRkcmVz" + - "cz4iCiAgICAgIGljbXNTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAic2lzLjxnYXRld2F5LWRv" + - "bWFpbj4iCiAgICAgIHJldmFsU2VydmljZVVSTDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIK" + - "ICAgICAgcmV2YWxTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAicmV2YWwuPGdhdGV3YXktZG9t" + - "YWluPiIKICAgICAgbmF0c1VSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNzPjo0MjIyIgogICAg" + - "ICBuYXRzSG9zdE92ZXJyaWRlOiAibmF0cy48Z2F0ZXdheS1kb21haW4+IgpgYGAKClByZXZpZXcg" + - "YW5kIGluc3RhbGwgdGhlIGNvbnRyb2wgcGxhbmUgYWdhaW5zdCBpdHMgY29udGV4dDoKCmBgYGJh" + - "c2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCB0ZW1wbGF0ZSBcCiAgSEVMTUZJ" + - "TEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZp" + - "Zz4KCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgaW5zdGFsbCBcCiAgSEVMTUZJ" + - "TEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZp" + - "Zz4KYGBgCgpCZWZvcmUgcmVnaXN0ZXJpbmcgdGhyb3VnaCBhIGJhcmUgR2F0ZXdheSBhZGRyZXNz" + - "LCBjcmVhdGUgb3IgdXBkYXRlIHRoZSBDTEkKY29uZmlnIHBhc3NlZCBhcyBgTlZDRl9DTElfQ09O" + - "RklHYDoKCmBgYHlhbWwKYmFzZV9odHRwX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIK" + - "aW52b2tlX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKYmFzZV9ncnBjX3VybDogIjxn" + - "YXRld2F5LWFkZHJlc3M+OjEwMDgxIgphcGlfa2V5c19zZXJ2aWNlX3VybDogImh0dHA6Ly88Z2F0" + - "ZXdheS1hZGRyZXNzPiIKaWNtc191cmw6ICJodHRwOi8vPGdhdGV3YXktYWRkcmVzcz4iCmFwaV9o" + - "b3N0OiAiYXBpLjxnYXRld2F5LWRvbWFpbj4iCmFwaV9rZXlzX2hvc3Q6ICJhcGkta2V5cy48Z2F0" + - "ZXdheS1kb21haW4+IgppbnZva2VfaG9zdDogImludm9jYXRpb24uPGdhdGV3YXktZG9tYWluPiIK" + - "aWNtc19ob3N0OiAic2lzLjxnYXRld2F5LWRvbWFpbj4iCmBgYAoKSG9zdCBmaWVsZHMgY29udGFp" + - "biBob3N0bmFtZXMgb25seSwgd2l0aG91dCBhIFVSTCBzY2hlbWUuIGBJQ01TX1VSTGAgbWFwcyBv" + - "bmx5CnRvIHRoZSByZWdpc3RyYXRpb24gY29tbWFuZCdzIGAtLWljbXMtdXJsYDsgYGljbXNfaG9z" + - "dGAgaW4gdGhlIGNvbmZpZyBzdXBwbGllcwp0aGUgR2F0ZXdheSBIb3N0IGhlYWRlci4gVGhlcmUg" + - "aXMgbm8gYC0taWNtcy1ob3N0YCBNYWtlIG9yIENMSSBmbGFnLgoKUmVnaXN0ZXIgZnJvbSB0aGUg" + - "Y29tcHV0ZSBjb250ZXh0LCB0aGVuIGluc3RhbGwgdGhlIGNvbXB1dGUgcGxhbmU6CgpgYGBiYXNo" + - "Cm1ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVnaXN0ZXItY2x1c3Rl" + - "ciBcCiAgQ0xVU1RFUl9OQU1FPTxjbHVzdGVyLW5hbWU+IFwKICBOQ0FfSUQ9PG5jYS1pZD4gXAog" + - "IENMVVNURVJfUkVHSU9OPTxyZWdpb24+IFwKICBJQ01TX1VSTD1odHRwOi8vPGdhdGV3YXktYWRk" + - "cmVzcz4gXAogIEtVQkVDT05GSUdfRklMRT08Y29tcHV0ZS1wbGFuZS1rdWJlY29uZmlnPiBcCiAg" + - "TlZDRl9DTEk9PHBhdGgtdG8tbnZjZi1jbGk+IFwKICBOVkNGX0NMSV9DT05GSUc9PHBhdGgtdG8t" + - "bnZjZi1jbGktY29uZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFu" + - "ZSBpbnN0YWxsIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VO" + - "Vj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+CmBg" + - "YAoKUmVnaXN0cmF0aW9uIGRpc2NvdmVycyB0aGUgT0lEQyBpc3N1ZXIgYW5kIEpXS1MgZnJvbSB0" + - "aGUgY29tcHV0ZSBrdWJlIGNvbnRleHQuCkluIGEgbXVsdGktY2x1c3RlciBkZXBsb3ltZW50LCBg" + - "S1VCRUNPTkZJR19GSUxFYCBpcyByZXF1aXJlZCBvbiBib3RoCmNvbXB1dGUtcGxhbmUgY29tbWFu" + - "ZHMuIEluIGEgc2FtZS1jbHVzdGVyIGRlcGxveW1lbnQgaXQgbWF5IGJlIG9taXR0ZWQgb25seQp3" + - "aGVuIHRoZSBhbWJpZW50IGNvbnRleHQgaXMgYWxyZWFkeSB0aGUgdGFyZ2V0IGNsdXN0ZXIuCgoj" + - "IyBDTEkgUHJvZmlsZSBGbG93CgpSdW4gdGhlIENMSSBjb250cm9sLXBsYW5lIGluc3RhbGwgZmly" + - "c3QuIEl0IGNyZWF0ZXMgdGhlIHByb2ZpbGUgY29uc3VtZWQgYnkKY29tcHV0ZS1wbGFuZSByZWdp" + - "c3RyYXRpb246CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVk" + - "IFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAog" + - "IC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBc" + - "CiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0IDxj" + - "b250cm9sLXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29tcHV0" + - "ZS1wbGFuZS1jb250ZXh0PiBcCiAgaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmUgXAogIC0tY2x1c3Rl" + - "ci1uYW1lIDxjb250cm9sLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tcmVnaW9uIDxyZWdpb24+" + - "IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKdGVzdCAtcyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdl" + - "ZC9vdXQvY29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWwKYGBgCgpVc2UgdGhlIGZ1bGwgcGVyc2lz" + - "dGVudCBwcmVmaXggZm9yIGJvdGggY29tcHV0ZS1wbGFuZSBjb21tYW5kczoKCmBgYGJhc2gKbnZj" + - "Zi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1z" + - "dGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNr" + - "IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1w" + - "bGFpbiBcCiAgY29tcHV0ZS1wbGFuZSByZWdpc3RlciBcCiAgLS1jb250cm9sLXBsYW5lLXByb2Zp" + - "bGUgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJvZmlsZS55" + - "YW1sIFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAt" + - "LWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1yZWdpb24gPHJlZ2lv" + - "bj4gXAogIC0tb3V0cHV0IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88Y29t" + - "cHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sCgpudmNmLWNsaSAt" + - "LWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNrIGRl" + - "cGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95" + - "L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWluIFwK" + - "ICBjb21wdXRlLXBsYW5lIGluc3RhbGwgXAogIC0tdmFsdWVzIGRlcGxveS9zdGFja3MvbnZjZi1j" + + "IGNhcHR1cmVkIGJhc2VsaW5lIHdpdGggJ2hlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5k" + + "cmEgdGVtcGxhdGUnIiwKICAgICAgIlRoZSBhZ2VudCBtb2RpZmllZCB0aGUgcmVsZWFzZSB2YWx1" + + "ZXMgYmxvY2sgdG8gaW5jbHVkZSByZXNvdXJjZSBsaW1pdHMgd2l0aCBtZW1vcnk6IDE2R2kiLAog" + + "ICAgICAiVGhlIGFnZW50IHJlLWluY2x1ZGVkIGdsb2JhbC55YW1sLmdvdG1wbCBhbmQgc2VjcmV0" + + "cyBmaWxlIGluIHRoZSB2YWx1ZXM6IGJsb2NrIChub3QganVzdCB0aGUgb3ZlcnJpZGUgYWxvbmUp" + + "IiwKICAgICAgIlRoZSBhZ2VudCB3YXJuZWQgYWJvdXQgdGhlIFlBTUwgbWVyZ2UgZ290Y2hhOiBz" + + "cGVjaWZ5aW5nIHZhbHVlczogcmVwbGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QgZW50" + + "aXJlbHkiLAogICAgICAiVGhlIGFnZW50IHByZXZpZXdlZCB0aGUgY2hhbmdlIHdpdGggaGVsbWZp" + + "bGUgdGVtcGxhdGUgYW5kIGRpZmYgYmVmb3JlIGFwcGx5aW5nIHdpdGggc3luYyIKICAgIF0KICB9" + + "LAogIHsKICAgICJpZCI6ICJTNi1zZWxlY3RpdmUtc3luYy1kZXBlbmRlbmNpZXMiLAogICAgInF1" + + "ZXN0aW9uIjogIkRlcGxveSBvbmx5IHRoZSBOVkNGIGRlcGVuZGVuY2llcyAtLSBOQVRTLCBDYXNz" + + "YW5kcmEsIGFuZCBPcGVuQmFvIC0tIGZvciB0ZXN0aW5nIiwKICAgICJleHBlY3RlZF9za2lsbCI6" + + "ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJU" + + "aGUgYWdlbnQgdXNlZCB0aGUgaGVsbWZpbGUgc2VsZWN0b3IgdG8gZGVwbG95IG9ubHkgdGhlIGRl" + + "cGVuZGVuY2llcyByZWxlYXNlIGdyb3VwLCB0aGVuIHZlcmlmaWVkIHBvZHMgaW4gdGhlIGRlcGVu" + + "ZGVuY3kgbmFtZXNwYWNlcy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhl" + + "IGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBi" + + "ZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnaGVsbWZpbGUgLS1z" + + "ZWxlY3RvciByZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llcyBzeW5jJyB0byBkZXBsb3kgb25seSBk" + + "ZXBlbmRlbmNpZXMiLAogICAgICAiVGhlIGFnZW50IHZlcmlmaWVkIHBvZHMgaW4gZGVwZW5kZW5j" + + "eSBuYW1lc3BhY2VzIChuYXRzLXN5c3RlbSwgY2Fzc2FuZHJhLXN5c3RlbSwgdmF1bHQtc3lzdGVt" + + "KSIsCiAgICAgICJUaGUgYWdlbnQgcHJvdmlkZWQgdGhlIHNlbGVjdG9yIHJlZmVyZW5jZSBmb3Ig" + + "dGFyZ2V0aW5nIG90aGVyIHJlbGVhc2UgZ3JvdXBzIgogICAgXQogIH0sCiAgewogICAgImlkIjog" + + "IlM3LWRlYnVnLWltYWdlcHVsbGJhY2tvZmYiLAogICAgInF1ZXN0aW9uIjogIkNhc3NhbmRyYSBw" + + "b2RzIGFyZSBpbiBJbWFnZVB1bGxCYWNrT2ZmIHdpdGggNDAxIFVuYXV0aG9yaXplZCIsCiAgICAi" + + "ZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJn" + + "cm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IHJlYWQgdGhlIGRlYnVnZ2luZyByZWZlcmVuY2UgYW5k" + + "IHJhbiBkaWFnbm9zdGljIGNvbW1hbmRzIHRvIGlkZW50aWZ5IHRoZSByb290IGNhdXNlOiBkZXNj" + + "cmliZWQgdGhlIHBvZCwgY2hlY2tlZCBmb3IgcHVsbCBzZWNyZXRzLCBjaGVja2VkIGltYWdlUHVs" + + "bFNlY3JldHMgb24gdGhlIHBvZCBzcGVjIGFuZCBzZXJ2aWNlIGFjY291bnQuIEl0IGlkZW50aWZp" + + "ZWQgdGhlIGlzc3VlIChtaXNzaW5nIHNlY3JldCwgd3JvbmcgY3JlZGVudGlhbHMsIG9yIG1pc3Np" + + "bmcgaW1hZ2VQdWxsU2VjcmV0cykgYW5kIHByb3ZpZGVkIHRoZSBjb3JyZWN0IGZpeC4iLAogICAg" + + "ImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBhbmQgcmVmZXJlbmNlcy9kZWJ1Z2dpbmcu" + + "bWQiLAogICAgICAiVGhlIGFnZW50IHJhbiAna3ViZWN0bCBkZXNjcmliZSBwb2QnIHRvIHNlZSB0" + + "aGUgSW1hZ2VQdWxsQmFja09mZiBldmVudHMiLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQgZm9y" + + "IHB1bGwgc2VjcmV0cyBpbiB0aGUgY2Fzc2FuZHJhLXN5c3RlbSBuYW1lc3BhY2UiLAogICAgICAi" + + "VGhlIGFnZW50IGNoZWNrZWQgaW1hZ2VQdWxsU2VjcmV0cyBvbiB0aGUgcG9kIHNwZWMgYW5kL29y" + + "IHNlcnZpY2UgYWNjb3VudCIsCiAgICAgICJUaGUgYWdlbnQgaWRlbnRpZmllZCB0aGUgcm9vdCBj" + + "YXVzZSBhbmQgcHJvdmlkZWQgYSBzcGVjaWZpYyBmaXgiCiAgICBdCiAgfSwKICB7CiAgICAiaWQi" + + "OiAiUzktcmVtb3RlLWVrcy1yb3V0aW5nLWFuZC1zZWNyZXRzIiwKICAgICJxdWVzdGlvbiI6ICJD" + + "b25maWd1cmUgYSByZW1vdGUgRUtTIGNvbXB1dGUgY2x1c3RlciB0byByZWFjaCBteSBOVkNGIGNv" + + "bnRyb2wgcGxhbmUgdGhyb3VnaCBpdHMgRW52b3kgR2F0ZXdheSwgaW5jbHVkaW5nIE5BVFMgYW5k" + + "IHByaXZhdGUtcmVnaXN0cnkgcHVsbCBzZWNyZXRzLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAi" + + "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhl" + + "IGFnZW50IGNvbmZpZ3VyZWQgdGhlIGNvbnRyb2wgcGxhbmUgdG8gdXNlIHRoZSBFbnZveSBHYXRl" + + "d2F5IGNvbnRyb2xsZXIgaW4gZW52b3ktZ2F0ZXdheS1zeXN0ZW0gYW5kIEdhdGV3YXkvbnZjZi1n" + + "YXRld2F5IGluIGVudm95LWdhdGV3YXksIHNldCBhbGwgc2l4IHJlbW90ZSB3b3JrZXIgZW5kcG9p" + + "bnRzIGFuZCB0aGUgZ3JwYy1wcm94eSBsb2NhbCBvdmVycmlkZSwgZW5hYmxlZCBOVkNGIGFuZCBO" + + "VkNUIGdSUEMgcm91dGVzIHBsdXMgTkFUUywgYW5kIGVuYWJsZWQgT3BlbkJhbyBpc3N1ZXIgZGlz" + + "Y292ZXJ5LiBJdCBjb25maWd1cmVkIHRoZSBiYXJlLUdhdGV3YXkgQ0xJIFVSTCBhbmQgSG9zdCBm" + + "aWVsZHMgaW5jbHVkaW5nIGljbXNfaG9zdCwgcGx1cyB0aGUgY29tcHV0ZS1wbGFuZSBJQ01TLCBS" + + "ZVZhbCwgYW5kIE5BVFMgZXh0ZXJuYWwgVVJMcyBhbmQgaG9zdCBvdmVycmlkZXMuIEl0IGNyZWF0" + + "ZWQgdGhlIHB1bGwgc2VjcmV0IGluIGFsbCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMgaW5jbHVk" + + "aW5nIGNlcnQtbWFuYWdlciwgYnV0IG9ubHkgaW4gbnZjYS1vcGVyYXRvciBvbiB0aGUgY29tcHV0" + + "ZSBjbHVzdGVyOyB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0byBudmNhLXN5c3Rl" + + "bS4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhl" + + "IG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFj" + + "dGlvbiIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGluZ3Jlc3MuZ2F0ZXdheUFwaS5jb250cm9sbGVy" + + "TmFtZXNwYWNlIHRvIGVudm95LWdhdGV3YXktc3lzdGVtIiwKICAgICAgIlRoZSBhZ2VudCBzZXQg" + + "c2hhcmVkLCBncnBjLCBhbmQgbmF0cyBHYXRld2F5IHJlZmVyZW5jZXMgdG8gbmFtZSBudmNmLWdh" + + "dGV3YXkgYW5kIG5hbWVzcGFjZSBlbnZveS1nYXRld2F5IiwKICAgICAgIlRoZSBhZ2VudCBzZXQg" + + "Z2xvYmFsLndvcmtlckVuZHBvaW50cy5udmNmU2VydmljZVVSTCwgbnZjZkdycGNTZXJ2aWNlVVJM" + + "LCBudmNmTmF0c1NlcnZpY2VVUkwsIG52Y3RTZXJ2aWNlVVJMLCBudmN0R3JwY1NlcnZpY2VVUkws" + + "IGFuZCBpbnZvY2F0aW9uU2VydmljZVVSTCIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGdycGNwcm94" + + "eS5udmNmR3JwY1NlcnZpY2VVUkwgdG8gdGhlIGNvbnRyb2wtcGxhbmUtbG9jYWwgQVBJIGdSUEMg" + + "c2VydmljZSIsCiAgICAgICJUaGUgYWdlbnQgZW5hYmxlZCBib3RoIGluZ3Jlc3MuZ2F0ZXdheUFw" + + "aS5yb3V0ZXMubnZjZkFwaS5ncnBjIGFuZCBudmN0QXBpLmdycGMgd2l0aCB3b3JrZXItYXBpIGFu" + + "ZCB3b3JrZXItdGFza3MgaG9zdG5hbWVzIiwKICAgICAgIlRoZSBhZ2VudCBleHBsaWNpdGx5IHNl" + + "dCBpbmdyZXNzLmdhdGV3YXlBcGkucm91dGVzLm5hdHMuZW5hYmxlZCB0byB0cnVlIiwKICAgICAg" + + "IlRoZSBhZ2VudCBzZXQgb3BlbmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVk" + + "IHRvIHRydWUiLAogICAgICAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgdGhlIGJhcmUtR2F0ZXdheSBD" + + "TEkgVVJMIGFuZCBIb3N0IGZpZWxkcywgaW5jbHVkaW5nIHNjaGVtZS1sZXNzIGljbXNfaG9zdCIs" + + "CiAgICAgICJUaGUgYWdlbnQgY29uZmlndXJlZCBjb21wdXRlLXBsYW5lIGljbXNTZXJ2aWNlVVJM" + + "LCBpY21zU2VydmljZUhvc3RIZWFkZXJPdmVycmlkZSwgcmV2YWxTZXJ2aWNlVVJMLCByZXZhbFNl" + + "cnZpY2VIb3N0SGVhZGVyT3ZlcnJpZGUsIG5hdHNVUkwsIGFuZCBuYXRzSG9zdE92ZXJyaWRlIiwK" + + "ICAgICAgIlRoZSBjb250cm9sLXBsYW5lIHB1bGwtc2VjcmV0IG5hbWVzcGFjZSBsaXN0IGluY2x1" + + "ZGVkIGNlcnQtbWFuYWdlciIsCiAgICAgICJUaGUgY29tcHV0ZS1wbGFuZSBzZWNyZXQgd2FzIGNy" + + "ZWF0ZWQgb25seSBpbiBudmNhLW9wZXJhdG9yIGFuZCBtaXJyb3JlZCBieSB0aGUgY2hhcnQgYW5k" + + "IG9wZXJhdG9yIHRvIG52Y2Etc3lzdGVtIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkcxMS1z" + + "cGxpdC10ZWFyZG93biIsCiAgICAicXVlc3Rpb24iOiAiVGVhciBkb3duIG15IHNwbGl0IGNvbnRy" + + "b2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZGVwbG95bWVudCBzYWZlbHkuIFNob3cgYm90aCB0" + + "aGUgSGVsbWZpbGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSB2YXJpYW50cy4iLAogICAgImV4cGVj" + + "dGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5k" + + "X3RydXRoIjogIlRoZSBIZWxtZmlsZSBmbG93IGRlc3Ryb3llZCBhbmQgY29uZmlybWVkIGRlcmVn" + + "aXN0cmF0aW9uIG9mIGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciBiZWZvcmUgZGVzdHJveWluZyB0aGUg" + + "Y29udHJvbCBwbGFuZSBhbmQgcGFzc2VkIGJvdGggY29udHJvbC1wbGFuZSBrdWJlY29uZmlnIGZv" + + "cm1zLiBCZWZvcmUgZWl0aGVyIGhhbmRvZmYgY291bGQgZGVzdHJveSB0aGUgY29udHJvbCBwbGFu" + + "ZSwgYm90aCB0ZWFyZG93biBmbG93cyB3YXJuZWQgdGhhdCBuYW1lc3BhY2UgcHJlc2VydmF0aW9u" + + "IGRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UsIHJlcXVpcmVkIGVmZmVjdGl2ZSBj" + + "ZXJ0TWFuYWdlci5lbmFibGVkOiBmYWxzZSBmb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uIGFu" + + "ZCBhYm9ydGVkIGlmIHRydWUsIGFuZCB2ZXJpZmllZCBtYXRjaGluZyByZWxlYXNlIG93bmVyc2hp" + + "cCBmb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxlYXNlLCBhYm9ydGluZyBvbiBtaXNz" + + "aW5nIG9yIG1pc21hdGNoZWQgZXZpZGVuY2UuIFRoZXkgcHJlc2VydmVkIHRoZSBuYW1lc3BhY2Ug" + + "YnkgZGVmYXVsdCBhbmQgZGlkIG5vdCBkZWxldGUgaXQgd2l0aG91dCBuYW1lc3BhY2UgcHJvdmVu" + + "YW5jZSBhbmQgZXhwbGljaXQgY29uZmlybWF0aW9uLiBUaGUgQ0xJIGZsb3cgcmV0YWluZWQgdGhl" + + "IGdlbmVyYXRlZCByZWdpc3RyYXRpb24gdmFsdWVzLCB1c2VkIHRoZSBmdWxsLXByZWZpeCBzdGF0" + + "dXMgY29tbWFuZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRoYXQgbmFt" + + "ZWQtY2x1c3RlciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90IHByZWRp" + + "Y3QgY29uZGl0aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLCBhbmQgZ290IGV4cGxpY2l0IGNv" + + "bmZpcm1hdGlvbiB3aGVuIHRoZSB0YXJnZXQgd2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3Rl" + + "ci4gSXQgdGhlbiBwcmV2aWV3ZWQgYW5kIHJhbiBkb3duIHdpdGggdGhlIGZ1bGwgcGVyc2lzdGVu" + + "dCBwcmVmaXgsIHJlbW92aW5nIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgdGhlIGxhc3Qg" + + "cmVnaXN0cmF0aW9uIHdhcyBnb25lLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAg" + + "ICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxM" + + "Lm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIkZvciBldmVyeSBjb21wdXRlIGNsdXN0" + + "ZXIsIHRoZSBIZWxtZmlsZSBmbG93IHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZSBkZXN0" + + "cm95IHRhcmdldCB3aXRoIGl0cyBjb21wdXRlIGt1YmVjb25maWciLAogICAgICAiQWZ0ZXIgY29u" + + "ZmlybWF0aW9uLCB0aGUgSGVsbWZpbGUgZmxvdyByYW4gY2x1c3RlciBkZWxldGUgd2l0aCBjbHVz" + + "dGVySUQgYW5kIG5jYUlEIGJlZm9yZSBjb250cm9sLXBsYW5lIGRlc3RydWN0aW9uIiwKICAgICAg" + + "IkJlZm9yZSBlaXRoZXIgaGFuZG9mZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBi" + + "b3RoIHRlYXJkb3duIGZsb3dzIHdhcm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9l" + + "cyBub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZlIGNlcnRN" + + "YW5hZ2VyLmVuYWJsZWQ6IGZhbHNlIGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24gYW5kIGFi" + + "b3J0ZWQgaWYgdHJ1ZSwgYW5kIHZlcmlmaWVkIGludGVuZGVkIHN0YWNrIG93bmVyc2hpcCB3aGVu" + + "IGVuYWJsZWQsIGFib3J0aW5nIG9uIG1pc3Npbmcgb3IgbWlzbWF0Y2hlZCBldmlkZW5jZSIsCiAg" + + "ICAgICJCb3RoIHRlYXJkb3duIGZsb3dzIHByZXNlcnZlZCB0aGUgY2VydC1tYW5hZ2VyIG5hbWVz" + + "cGFjZSBieSBkZWZhdWx0IGFuZCBkaWQgbm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBw" + + "cm92ZW5hbmNlIGFuZCBleHBsaWNpdCBjb25maXJtYXRpb24iLAogICAgICAiVGhlIEhlbG1maWxl" + + "IGZsb3cgcmFuIGNvbnRyb2wtcGxhbmUgTWFrZWZpbGUgZGVzdHJveSB3aXRoIGJvdGggS1VCRUNP" + + "TkZJRyBhbmQgS1VCRUNPTkZJR19GSUxFIiwKICAgICAgIlRoZSBDTEkgZmxvdyByZXRhaW5lZCBv" + + "dXQvPGNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWwgdW50aWwgdGVhcmRvd24gY29t" + + "cGxldGVkIiwKICAgICAgIkJlZm9yZSByZWFsIGRvd24sIHRoZSBDTEkgZmxvdyB1c2VkIHRoZSBm" + + "dWxsLXByZWZpeCBzdGF0dXMgY29tbWFuZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywg" + + "c3RhdGVkIHRoYXQgbmFtZWQtY2x1c3RlciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkgSUNNUyBh" + + "bmQgY2Fubm90IHByZWRpY3QgY29uZGl0aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLCB3YXJu" + + "ZWQgd2hlbiB0aGUgdGFyZ2V0IHdhcyB0aGUgbGFzdCByZWdpc3RlcmVkIGNsdXN0ZXIsIGFuZCBn" + + "b3QgZXhwbGljaXQgY29uZmlybWF0aW9uIiwKICAgICAgIlRoZSBDTEkgZmxvdyB1c2VkIC0tY29u" + + "ZmlnLCBib3RoIHN0YWNrIHBhdGhzLCAtLWVudiwgLS1wbGFpbiwgYm90aCBjb250ZXh0cywgYW5k" + + "IC0taWNtcy11cmwgZm9yIGRvd24gLS1wbGFuLW9ubHkgYW5kIHRoZW4gZG93biIsCiAgICAgICJU" + + "aGUgYWdlbnQgc3RhdGVkIHRoYXQgZG93biB1bnJlZ2lzdGVycyBlYWNoIGNvbXB1dGUgY2x1c3Rl" + + "ciBhbmQgcmVtb3ZlcyB0aGUgY29udHJvbCBwbGFuZSBvbmx5IGFmdGVyIG5vIHJlZ2lzdHJhdGlv" + + "bnMgcmVtYWluIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMxMy12YWx1ZXMtcHJlY2VkZW5j" + + "ZSIsCiAgICAicXVlc3Rpb24iOiAiSSBhZGRlZCBhIHZhbHVlIHRvIG15IGVudmlyb25tZW50IFlB" + + "TUwgYnV0IGl0J3MgYmVpbmcgc2lsZW50bHkgaWdub3JlZC4gSG93IGRvIGhlbG1maWxlIHZhbHVl" + + "cyB3b3JrIGluIE5WQ0Y/IiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdl" + + "ZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZXhwbGFpbmVk" + + "IHRoZSB2YWx1ZXMgcHJlY2VkZW5jZSBjaGFpbiAoYmFzZS55YW1sLCBlbnYgWUFNTCwgZ2xvYmFs" + + "LnlhbWwuZ290bXBsLCBzZWNyZXRzLCBpbmxpbmUgdmFsdWVzKSwgaWRlbnRpZmllZCB0aGF0IGds" + + "b2JhbC55YW1sLmdvdG1wbCBvbmx5IHBhc3NlcyB0aHJvdWdoIHNwZWNpZmljIGtleXMsIGFuZCBl" + + "eHBsYWluZWQgdGhhdCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzIG11c3QgdXNlIHJlbGVhc2UgaW5s" + + "aW5lIHZhbHVlcyBibG9ja3MuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRo" + + "ZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQg" + + "YmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgdmFs" + + "dWVzIHByZWNlZGVuY2UgY2hhaW46IGJhc2UueWFtbCAtPiBlbnYgWUFNTCAtPiBnbG9iYWwueWFt" + + "bC5nb3RtcGwgLT4gc2VjcmV0cyAtPiBpbmxpbmUgdmFsdWVzIiwKICAgICAgIlRoZSBhZ2VudCBp" + + "ZGVudGlmaWVkIHRoYXQgZ2xvYmFsLnlhbWwuZ290bXBsIG9ubHkgcGFzc2VzIHRocm91Z2ggc3Bl" + + "Y2lmaWMga2V5cyAoY2Fzc2FuZHJhLnJlcGxpY2FDb3VudCwgZ2xvYmFsLnN0b3JhZ2VDbGFzcywg" + + "Z2xvYmFsLmltYWdlLCBldGMuKSIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgYXJi" + + "aXRyYXJ5IGNoYXJ0IHZhbHVlcyBtdXN0IGJlIHNldCB2aWEgcmVsZWFzZSBpbmxpbmUgdmFsdWVz" + + "OiBibG9ja3MiLAogICAgICAiVGhlIGFnZW50IGxpc3RlZCBleGFtcGxlcyBvZiB2YWx1ZXMgdGhh" + + "dCBhcmUgcHJvcGFnYXRlZCBhbmQgYXJiaXRyYXJ5IGNoYXJ0IHZhbHVlcyB0aGF0IHJlcXVpcmUg" + + "YSByZWxlYXNlIHZhbHVlcyBibG9jayIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTMTQtZW5h" + + "YmxlLWxsbS1mdW5jdGlvbnMiLAogICAgInF1ZXN0aW9uIjogIkkgbmVlZCB0byBkZXBsb3kgZnVu" + + "Y3Rpb25UeXBlOiBMTE0gZnVuY3Rpb25zIG9uIGEgc2VsZi1tYW5hZ2VkLCBzaW5nbGUtbm9kZSBp" + + "c29sYXRlZCB0ZXN0IGNsdXN0ZXIuIFdoYXQgSGVsbWZpbGUgY29uZmlndXJhdGlvbiBhbmQgdmVy" + + "aWZpY2F0aW9uIHN0ZXBzIGRvIEkgbmVlZD8iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Yt" + + "c2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2Vu" + + "dCBlbmFibGVkIHRoZSBMTE0gYWRkb24gd2l0aCBhZGRvbnMubGxtLmVuYWJsZWQsIGNvbmZpZ3Vy" + + "ZWQgc2luZ2xlIHJlcGxpY2FzIGZvciB0aGUgTExNIEFQSSBHYXRld2F5IGFuZCByZXF1ZXN0IHJv" + + "dXRlciwgYW5kIGV4cGxhaW5lZCB0aGF0IHRoZSByZXF1ZXN0IHJvdXRlciB1c2VzIHBvd2VyLW9m" + + "LXR3byB3aGVuIG5vIGxvYWQtYmFsYW5jZXIgY29uZmlndXJhdGlvbiBpcyBzZXQuIEl0IGxpbmtl" + + "ZCB0aGUgY2Fub25pY2FsIHJlcXVlc3Qtcm91dGVyIGxvYWQtYmFsYW5jaW5nIGd1aWRlIGZvciBv" + + "dGhlciByb3V0aW5nIG1ldGhvZHMuIEZvciB0aGUgaXNvbGF0ZWQgcGxhaW50ZXh0IGNsdXN0ZXIs" + + "IGl0IHJlbGllZCBvbiB0aGUgc2VsZi1tYW5hZ2VkIHN0YWNrIGRlZmF1bHQgZm9yIHRoZSBidW5k" + + "bGVkIGdhdGV3YXktdG8tQVBJIGF1dGhlbnRpY2F0aW9uIGhvcCBhbmQgaW5jbHVkZWQgYWdlbnRD" + + "b25maWcubWVyZ2VDb25maWcud29ya2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUgZm9yIHRoZSBz" + + "ZXBhcmF0ZSB3b3JrZXIgdHJhbnNwb3J0LCB3aXRoIGEgd2FybmluZyB0aGF0IHBsYWludGV4dCB3" + + "b3JrZXIgdHJhbnNwb3J0IGlzIG5vdCBmb3IgcHJvZHVjdGlvbi4gSXQgcmVmcmVzaGVkIHRoZSBj" + + "b21wdXRlIHBsYW5lIHVzaW5nIHRoZSBzYW1lIGhhbmRvZmYgdXNlZCBkdXJpbmcgaW5zdGFsbGF0" + + "aW9uLCByZWRlcGxveWVkIGV4aXN0aW5nIExMTSBmdW5jdGlvbnMsIGFuZCB2ZXJpZmllZCB0aGUg" + + "TExNIGRlcGxveW1lbnRzLCByb3V0ZSwgYW5kIGxsbS13b3JrZXIgc2lkZWNhci4iLAogICAgImV4" + + "cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHVzZWQgYWRkb25zLmxsbS5lbmFi" + + "bGVkLCBub3QgdGhlIG9ic29sZXRlIGxsbS5lbmFibGVkIHBhdGgiLAogICAgICAiVGhlIGFnZW50" + + "IHNldCBnYXRld2F5IGFuZCByZXF1ZXN0Um91dGVyIHJlcGxpY2FDb3VudCB0byAxIGZvciB0aGUg" + + "c2luZ2xlLW5vZGUgdGVzdCBjbHVzdGVyIiwKICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCB0" + + "aGUgcmVxdWVzdCByb3V0ZXIgZGVmYXVsdHMgdG8gcG93ZXItb2YtdHdvIGFuZCBsaW5rZWQgdGhl" + + "IGNhbm9uaWNhbCByZXF1ZXN0LXJvdXRlciBsb2FkLWJhbGFuY2luZyBndWlkZSBmb3Igb3RoZXIg" + + "bWV0aG9kcyIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgdGhlIGJ1bmRsZWQgZ2F0" + + "ZXdheS10by1BUEkgYXV0aGVudGljYXRpb24gaG9wIGRlZmF1bHRzIHRvIHBsYWludGV4dCwgaW5j" + + "bHVkZWQgd29ya2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUgb25seSBmb3IgdGhlIGlzb2xhdGVk" + + "IHdvcmtlciB0cmFuc3BvcnQsIGFuZCB3YXJuZWQgYWdhaW5zdCBwbGFpbnRleHQgd29ya2VyIHRy" + + "YW5zcG9ydCBpbiBwcm9kdWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBhcHBsaWVkIHRoZSBjb250" + + "cm9sLXBsYW5lIEhlbG1maWxlIGVudmlyb25tZW50LCByZWZyZXNoZWQgdGhlIGNvbXB1dGUgcGxh" + + "bmUgd2l0aCB0aGUgc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLCBhbmQgcmVjcmVhdGVkIG9yIHJlZGVw" + + "bG95ZWQgZXhpc3RpbmcgTExNIGZ1bmN0aW9ucyIsCiAgICAgICJUaGUgYWdlbnQgdmVyaWZpZWQg" + + "bGxtLWFwaS1nYXRld2F5LCBsbG0tcmVxdWVzdC1yb3V0ZXIsIHRoZSBMTE0gSFRUUFJvdXRlLCBh" + + "bmQgdGhlIGxsbS13b3JrZXIgc2lkZWNhciBpbmNsdWRpbmcgLS1xdWljLWluc2VjdXJlIgogICAg" + + "XQogIH0sCiAgewogICAgImlkIjogIkc4LU5FRy1ub3QtZm9yLWszZCIsCiAgICAicXVlc3Rpb24i" + + "OiAiU2V0IHVwIGEgbG9jYWwgTlZDRiBkZXYgY2x1c3RlciB1c2luZyBrM2QgZm9yIHRlc3Rpbmci" + + "LAogICAgImV4cGVjdGVkX3NraWxsIjogbnVsbCwKICAgICJzaG91bGRfdHJpZ2dlciI6IGZhbHNl" + + "LAogICAgImdyb3VuZF90cnV0aCI6ICJUaGlzIGlzIGEgbG9jYWwgazNkIGRldmVsb3BtZW50IHJl" + + "cXVlc3QgdGhhdCBiZWxvbmdzIHRvIHRoZSBudmNmLXNlbGYtaG9zdGVkLWxvY2FsLWRldiBza2ls" + + "bCwgbm90IG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi4gVGhlIGFnZW50IGRpZCBub3Qg" + + "cmVhZCBvciB1c2UgdGhlIHNlbGYtbWFuYWdlZCBpbnN0YWxsYXRpb24gc2tpbGwgYW5kIGluc3Rl" + + "YWQgcHJvdmlkZWQgazNkLXNwZWNpZmljIGd1aWRhbmNlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZp" + + "b3IiOiBbCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCByZWFkIG52Y2Ytc2VsZi1tYW5hZ2VkLWlu" + + "c3RhbGxhdGlvbi9TS0lMTC5tZCIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm92aWRlIGhl" + + "bG1maWxlLWJhc2VkIHByb2R1Y3Rpb24gZGVwbG95bWVudCBpbnN0cnVjdGlvbnMiLAogICAgICAi" + + "VGhlIGFnZW50IHByb3ZpZGVkIGszZC1zcGVjaWZpYyBsb2NhbCBkZXZlbG9wbWVudCBndWlkYW5j" + + "ZSBvciBkZWZlcnJlZCB0byB0aGUgYXBwcm9wcmlhdGUgbG9jYWwtZGV2IHNraWxsIgogICAgXQog" + + "IH0KXQpQSwcIR1VqVkpWAABKVgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAvAAkAZGF0YS9u" + + "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXhhbXBsZXMubWRVVAUAAQCmzhIjIEV4YW1w" + + "bGVzCgpXb3JrZWQgZXhhbXBsZXMgYmFzZWQgb24gcmVhbCBkZXBsb3ltZW50IHNjZW5hcmlvcy4K" + + "CiMjIEV4YW1wbGUgMTogT3ZlcnJpZGUgQ2Fzc2FuZHJhIFJlc291cmNlcwoKVGhlIGRlZmF1bHQg" + + "Q2Fzc2FuZHJhIHJlc291cmNlIGxpbWl0cyBjYXVzZSBPT00gb24gbGFyZ2UgaW5zdGFuY2UgdHlw" + + "ZXMgKGUuZy4sIGBwNS40OHhsYXJnZWApLgoKUHJvYmxlbTogQ2Fzc2FuZHJhIHBvZHMgcmVzdGFy" + + "dCB3aXRoIGBPT01LaWxsZWRgLgoKU29sdXRpb246IE92ZXJyaWRlIHJlc291cmNlcyB2aWEgaGVs" + + "bWZpbGUgcmVsZWFzZSB2YWx1ZXMgYmxvY2suCgojIyMgU3RlcCAxOiBDYXB0dXJlIGJhc2VsaW5l" + + "CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fz" + + "c2FuZHJhIHRlbXBsYXRlID4gL3RtcC9jYXNzLWJlZm9yZS55YW1sCmdyZXAgLUE4ICdyZXNvdXJj" + + "ZXM6JyAvdG1wL2Nhc3MtYmVmb3JlLnlhbWwgfCBoZWFkIC0xMApgYGAKCiMjIyBTdGVwIDI6IEFk" + + "ZCBvdmVycmlkZSB0byBoZWxtZmlsZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbAoKSW4g" + + "dGhlIGV4YW1wbGVzIGJlbG93LCBgPHByaXZhdGUtdmFsdWVzPmAgcmVmZXJzIHRvIHRoZSBgc2Vj" + + "cmV0cy9gIGRpcmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUgc3RhY2sgcm9vdC4KCmBgYHlhbWwKLSBu" + + "YW1lOiBjYXNzYW5kcmEKICB2ZXJzaW9uOiAwLjguMAogIGNvbmRpdGlvbjogY2Fzc2FuZHJhLmVu" + + "YWJsZWQKICBuYW1lc3BhY2U6IGNhc3NhbmRyYS1zeXN0ZW0KICA8PDogKmRlcGVuZGVuY3kKICB2" + + "YWx1ZXM6CiAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAgLSAuLi88cHJpdmF0ZS12YWx1" + + "ZXM+L3t7IHJlcXVpcmVkRW52ICJIRUxNRklMRV9FTlYiIH19LXNlY3JldHMueWFtbAogICAgLSBj" + + "YXNzYW5kcmE6CiAgICAgICAgcmVzb3VyY2VzOgogICAgICAgICAgbGltaXRzOgogICAgICAgICAg" + + "ICBjcHU6ICI4IgogICAgICAgICAgICBtZW1vcnk6IDgxOTJNaQogICAgICAgICAgcmVxdWVzdHM6" + + "CiAgICAgICAgICAgIGNwdTogIjIiCiAgICAgICAgICAgIG1lbW9yeTogNDA5Nk1pCmBgYAoKIyMj" + + "IFN0ZXAgMzogVmVyaWZ5IGFuZCBhcHBseQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVs" + + "bWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSA+IC90bXAvY2Fzcy1hZnRl" + + "ci55YW1sCmRpZmYgL3RtcC9jYXNzLWJlZm9yZS55YW1sIC90bXAvY2Fzcy1hZnRlci55YW1sICAj" + + "IENvbmZpcm0gcmVzb3VyY2VzIGNoYW5nZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0t" + + "c2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgc3luYwpgYGAKCk5vdGU6IGByZXNvdXJjZVByZXNldGAg" + + "KGEgQml0bmFtaSBmZWF0dXJlKSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBOVkNGIGNhc3NhbmRy" + + "YSB3cmFwcGVyIGNoYXJ0LiBVc2UgZXhwbGljaXQgYHJlc291cmNlc2AgaW5zdGVhZC4KCi0tLQoK" + + "IyMgRXhhbXBsZSAyOiBEZXBsb3kgZnJvbSBOR0MgUHJpdmF0ZSBSZWdpc3RyeSB3aXRoIFB1bGwg" + + "U2VjcmV0cwoKRGVwbG95IHRoZSBOVkNGIHN0YWNrIHB1bGxpbmcgaW1hZ2VzIGRpcmVjdGx5IGZy" + + "b20gTkdDIChgbnZjci5pb2ApIGluc3RlYWQgb2YgYSBtaXJyb3JlZCByZWdpc3RyeSwgdXNpbmcg" + + "aW1hZ2UgcHVsbCBzZWNyZXRzLgoKIyMjIFN0ZXAgMTogQ29uZmlndXJlIGVudmlyb25tZW50IGZv" + + "ciBOR0MKCmBgYHlhbWwKIyBlbnZpcm9ubWVudHMvPGVudj4ueWFtbApnbG9iYWw6CiAgaGVsbToK" + + "ICAgIHNvdXJjZXM6CiAgICAgIHJlZ2lzdHJ5OiBudmNyLmlvCiAgICAgIHJlcG9zaXRvcnk6IG52" + + "aWRpYS9udmNmCiAgaW1hZ2U6CiAgICByZWdpc3RyeTogbnZjci5pbwogICAgcmVwb3NpdG9yeTog" + + "bnZpZGlhL252Y2YKYGBgCgojIyMgU3RlcCAyOiBBdXRoZW50aWNhdGUgbG9jYWxseSAoZm9yIGhl" + + "bG1maWxlIGNoYXJ0IHB1bGxzKQoKYGBgYmFzaApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9h" + + "dXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAt" + + "dSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmBgYAoKIyMjIFN0ZXAgMzogQ3JlYXRl" + + "IG5hbWVzcGFjZXMgYW5kIHB1bGwgc2VjcmV0cwoKYGBgYmFzaApleHBvcnQgTkdDX0FQSV9LRVk9" + + "Ijx5b3VyLW5nYy1hcGkta2V5PiIKCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lz" + + "dGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwog" + + "IGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3Bh" + + "Y2UgIiRucyIgXAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRl" + + "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpkb25lCgpmb3IgbnMgaW4gY2Fz" + + "c2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lz" + + "dGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1j" + + "b250ZXh0PiBjcmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0t" + + "ZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tl" + + "bicgXAogICAgLS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3Bh" + + "Y2U9IiRucyIgXAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRl" + + "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpkb25lCmBgYAoKIyMjIFN0ZXAg" + + "NDogQWRkIGltYWdlUHVsbFNlY3JldHMgdG8gaGVsbWZpbGUgcmVsZWFzZXMKCkFkZCB0aGUgY2hh" + + "cnQtc3BlY2lmaWMgYGltYWdlUHVsbFNlY3JldHNgIGtleSB0byBlYWNoIHJlbGVhc2UuIEV4YW1w" + + "bGUgZm9yIGNhc3NhbmRyYSBpbiBgaGVsbWZpbGUuZC8wMS1kZXBlbmRlbmNpZXMueWFtbC5nb3Rt" + + "cGxgOgoKYGBgeWFtbAotIG5hbWU6IGNhc3NhbmRyYQogIHZlcnNpb246IDAuOC4wCiAgY29uZGl0" + + "aW9uOiBjYXNzYW5kcmEuZW5hYmxlZAogIG5hbWVzcGFjZTogY2Fzc2FuZHJhLXN5c3RlbQogIDw8" + + "OiAqZGVwZW5kZW5jeQogIHZhbHVlczoKICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAt" + + "IC4uLzxwcml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2Vj" + + "cmV0cy55YW1sCiAgICAtIGNhc3NhbmRyYToKICAgICAgICBnbG9iYWw6CiAgICAgICAgICBpbWFn" + + "ZVB1bGxTZWNyZXRzOgogICAgICAgICAgICAtIG52Y3ItY3JlZHMKYGBgCgpTZWUgW3JlZmVyZW5j" + + "ZXMvcHVsbC1zZWNyZXRzLm1kXShyZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCkgZm9yIHRoZSBr" + + "ZXkgZm9yIGV2ZXJ5IGNoYXJ0LgoKVGhlc2UgYXJlIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcy4g" + + "Rm9yIGEgc2VwYXJhdGUgY29tcHV0ZSBjbHVzdGVyLCBjcmVhdGUgdGhlCnNlY3JldCBvbmx5IGlu" + + "IGBudmNhLW9wZXJhdG9yYDsgdGhlIGNoYXJ0IGFuZCBvcGVyYXRvciBtaXJyb3IgaXQgdG8KYG52" + + "Y2Etc3lzdGVtYC4gU2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJl" + + "bmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCNwdWxsLXNlY3JldHMpLgoKIyMjIFN0" + + "ZXAgNTogRGVwbG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLWt1YmUt" + + "Y29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBzeW5jCmBgYAoKIyMjIFN0ZXAgNjogUGF0" + + "Y2ggU2VydmljZUFjY291bnRzIGZvciBjaGFydHMgd2l0aG91dCBuYXRpdmUgc3VwcG9ydAoKQWZ0" + + "ZXIgUGhhc2UgMSAoZGVwZW5kZW5jaWVzKSBjb21wbGV0ZXMsIE9wZW5CYW8gcG9kcyB3aWxsIGJl" + + "IGluIGBJbWFnZVB1bGxCYWNrT2ZmYC4gUGF0Y2ggYW5kIHJlc3RhcnQ6CgpgYGBiYXNoCmZvciBu" + + "cyBpbiB2YXVsdC1zeXN0ZW0gbnZjZiBlc3M7IGRvCiAgZm9yIHNhIGluICQoa3ViZWN0bCAtLWNv" + + "bnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHNhIC1uICIkbnMiIFwKICAgIC0tbm8t" + + "aGVhZGVycyAtbyBjdXN0b20tY29sdW1ucz0iOm1ldGFkYXRhLm5hbWUiKTsgZG8KICAgIGt1YmVj" + + "dGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IHBhdGNoIHNlcnZpY2VhY2NvdW50" + + "IC1uICIkbnMiICIkc2EiIFwKICAgICAgLXAgJ3siaW1hZ2VQdWxsU2VjcmV0cyI6IFt7Im5hbWUi" + + "OiAibnZjci1jcmVkcyJ9XX0nCiAgZG9uZQpkb25lCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9s" + + "LXBsYW5lLWNvbnRleHQ+IGRlbGV0ZSBwb2RzIC1uIHZhdWx0LXN5c3RlbSAtLWFsbApgYGAKClZl" + + "cmlmeToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4g" + + "Z2V0IGV2ZW50cyAtbiB2YXVsdC1zeXN0ZW0gXAogIC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAn" + + "IHwgZ3JlcCAtaSBwdWxsCiMgU2hvdWxkIHNob3cgIlN1Y2Nlc3NmdWxseSBwdWxsZWQgaW1hZ2Ui" + + "IGZyb20gbnZjci5pbwpgYGAKCi0tLQoKIyMgRXhhbXBsZSAzOiBGdWxsIFRlYXJkb3duIGFuZCBS" + + "ZWluc3RhbGwKCldoZW4gYSBkZXBsb3ltZW50IGlzIGJyb2tlbiBhbmQgeW91IG5lZWQgYSBjbGVh" + + "biBzbGF0ZS4KCiMjIyBTdGVwIDE6IERlc3Ryb3kgdGhlIGNvbXB1dGUtcGxhbmUgc3RhY2sKCmBg" + + "YGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwK" + + "ICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAg" + + "S1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKSWYgY29tcHV0" + + "ZSBjbGVhbnVwIGlzIHN0dWNrIG9uIGZpbmFsaXplcnMsIHVzZSB0aGUgY29tcHV0ZS1jb250ZXh0" + + "IHByb2NlZHVyZSBpbgpbZGVidWdnaW5nLm1kXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCNmYWls" + + "dXJlLW52Y2EtY2xlYW51cC1zdHVjay1maW5hbGl6ZXJzKS4KCiMjIyBTdGVwIDI6IERlcmVnaXN0" + + "ZXIgdGhlIGNvbXB1dGUgY2x1c3RlcgoKUmVhZCBgY2x1c3RlcklEYCBhbmQgYG5jYUlEYCBmcm9t" + + "CmBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9yZWdpc3RyYXRpb24vPGNsdXN0ZXIt" + + "bmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgLgpTaG93IHRoZSBJRCBhbmQgZ2V0IGNvbmZpcm1h" + + "dGlvbiBiZWZvcmUgZGVsZXRpbmcgdGhlIElDTVMgcm93OgoKYGBgYmFzaAo8bnZjZi1jbGk+IC0t" + + "Y29uZmlnIDxjb25maWc+IGNsdXN0ZXIgZGVsZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXIt" + + "aWQtZnJvbS1yZWdpc3RyYXRpb24tdmFsdWVzPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0t" + + "aWdub3JlLW1pc3NpbmcKYGBgCgpSZXBlYXQgc3RlcHMgMSBhbmQgMiBmb3IgZXZlcnkgY29tcHV0" + + "ZSBjbHVzdGVyLgoKIyMjIFN0ZXAgMzogRGVzdHJveSB0aGUgY29udHJvbC1wbGFuZSBzdGFjawoK" + + "UHJlc2VydmUgdGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3Bh" + + "Y2UgcHJlc2VydmF0aW9uIGRvZXMKbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEJlZm9y" + + "ZSBydW5uaW5nIGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIKY2VydC1tYW5hZ2VyIGlzIGV4dGVy" + + "bmFsLiBGb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZQpgY2Vy" + + "dE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4g" + + "aW50ZW5kZWQKc3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdl" + + "ci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5Cm1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRh" + + "ZGF0YSBhbmQgYWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkCmV2aWRlbmNlLiBPbmx5IHBs" + + "YW4gbmFtZXNwYWNlIHJlbW92YWwgYWZ0ZXIgdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNl" + + "IGFuZApnZXR0aW5nIGV4cGxpY2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlIGRvIG5vdCBkZWxl" + + "dGUgaXQuCgpgYGBiYXNoCktVQkVDT05GSUc9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4gXApt" + + "YWtlIC1DIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIGRlc3Ryb3kgXAogIEhFTE1GSUxFX0VO" + + "Vj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+CmBg" + + "YAoKUGFzcyBib3RoIGt1YmVjb25maWcgZm9ybXMgYmVjYXVzZSBjb250cm9sLXBsYW5lIG5hbWVz" + + "cGFjZSBjbGVhbnVwIHVzZXMKYW1iaWVudCBga3ViZWN0bGAuCgojIyMgU3RlcCA0OiBWZXJpZnkg" + + "Y2xlYW4KCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4g" + + "Z2V0IG5zIHwgXAogIGdyZXAgLUUgJyhudmNhfG52Y2YtYmFja2VuZHxncm92ZXxkeW5hbW8pJwpr" + + "dWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgbnMgfCBcCiAgZ3Jl" + + "cCAtRSAnKGNhc3NhbmRyYXxuYXRzfHZhdWx0fG52Y2Z8YXBpLWtleXN8ZXNzfHNpcyknCiMgQm90" + + "aCBjb21tYW5kcyBzaG91bGQgcmV0dXJuIGVtcHR5LgpgYGAKCiMjIyBTdGVwIDU6IFJlaW5zdGFs" + + "bCBpbiBzcGxpdCBvcmRlcgoKRm9sbG93IFtDbGVhbiBJbnN0YWxsYXRpb25dKFNLSUxMLm1kI2Ns" + + "ZWFuLWluc3RhbGxhdGlvbiksIHRoZW4gcmV0dXJuIHRvIHRoZQpzYW1lIGhhbmRvZmYgaW4gW1Nw" + + "bGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUt" + + "aW5zdGFsbGF0aW9uLm1kKS4KCi0tLQoKIyMgRXhhbXBsZSA0OiBSZWNvdmVyIGZyb20gYSBHYXRl" + + "d2F5IEVuZHBvaW50IENoYW5nZQoKVGhlIHNlcGFyYXRlbHkgcHJvdmlzaW9uZWQgR2F0ZXdheSBv" + + "ciBpdHMgbG9hZCBiYWxhbmNlciB3YXMgcmVjcmVhdGVkIGFuZCBnb3QgYSBuZXcgZW5kcG9pbnQu" + + "CgojIyMgU3RlcCAxOiBHZXQgdGhlIG5ldyBlbmRwb2ludAoKYGBgYmFzaApHQVRFV0FZX0FERFI9" + + "JChrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBc" + + "CiAgbnZjZi1nYXRld2F5IC1uIGVudm95LWdhdGV3YXkgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1" + + "cy5hZGRyZXNzZXNbMF0udmFsdWV9JykKdGVzdCAtbiAiJEdBVEVXQVlfQUREUiIKYGBgCgojIyMg" + + "U3RlcCAyOiBVcGRhdGUgRE5TIGFuZCBkaXJlY3QgYWRkcmVzcyBmaWVsZHMKCktlZXAgYGdsb2Jh" + + "bC5kb21haW5gLCByb3V0ZSBob3N0bmFtZXMsIGFuZCBDTEkgSG9zdCBmaWVsZHMgdW5jaGFuZ2Vk" + + "LiBQb2ludCB0aGUKRE5TIHJlY29yZHMgZm9yIHJlbmRlcmVkIHJvdXRlIGhvc3RuYW1lcywgc3Vj" + + "aCBhcyBgYXBpLjxkb21haW4+YCBhbmQKYCouaW52b2NhdGlvbi48ZG9tYWluPmAsIHRvIGBHQVRF" + + "V0FZX0FERFJgLiBGb3IgYSB0ZW1wb3JhcnkgZW52aXJvbm1lbnQgd2l0aG91dApETlMsIGtlZXAg" + + "aXRzIHJlc2VydmVkIHJvdXRlIHN1ZmZpeCBhbmQgY29ubmVjdCB0byBgR0FURVdBWV9BRERSYCB3" + + "aXRoIHRoZQptYXRjaGluZyBgSG9zdGAgaGVhZGVyLgoKRm9yIGEgc3BsaXQgZGVwbG95bWVudCBj" + + "b25maWd1cmVkIHdpdGggZGlyZWN0IEdhdGV3YXkgYWRkcmVzc2VzLCByZXBsYWNlIG9ubHkKdGhl" + + "IGFkZHJlc3MtYmVhcmluZyB2YWx1ZXM6IGNvbnRyb2wtcGxhbmUgYG52Y2ZOYXRzU2VydmljZVVS" + + "TGAsIGNvbXB1dGUtcGxhbmUKSUNNUywgUmVWYWwsIGFuZCBOQVRTIFVSTHMsIGFuZCBDTEkgVVJM" + + "IGZpZWxkcy4gS2VlcCB0aGVpciBkb21haW4gYW5kIEhvc3QKb3ZlcnJpZGVzIHVuY2hhbmdlZC4g" + + "UmVmcmVzaCByZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlvbiB0aHJvdWdoIHRoZSBzYW1lCmhh" + + "bmRvZmYgdXNlZCBvcmlnaW5hbGx5LiBTZWUKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0" + + "aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKQpmb3IgdGhlIGZp" + + "ZWxkcyBhbmQgY29tcGxldGUgY29tbWFuZHMuCgojIyMgU3RlcCAzOiBWZXJpZnkgYm90aCBjb250" + + "ZXh0cwoKYGBgYmFzaApkaWcgK3Nob3J0ICJhcGkuPGRvbWFpbj4iCmN1cmwgLUggIkhvc3Q6IGFw" + + "aS48ZG9tYWluPiIgImh0dHA6Ly8kR0FURVdBWV9BRERSL2hlYWx0aCIKa3ViZWN0bCAtLWNvbnRl" + + "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAt" + + "biBlbnZveS1nYXRld2F5IC1vIHdpZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + + "Y29udGV4dD4gZ2V0IGh0dHByb3V0ZXMgLUEKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxh" + + "bmUtY29udGV4dD4gZ2V0IHRjcHJvdXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1w" + + "bGFuZS1jb250ZXh0PiByb2xsb3V0IHN0YXR1cyBcCiAgZGVwbG95bWVudC9udmNhLW9wZXJhdG9y" + + "IC1uIG52Y2Etb3BlcmF0b3IgLS10aW1lb3V0PTEwbQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0" + + "ZS1wbGFuZS1jb250ZXh0PiB3YWl0IFwKICBudmNmYmFja2VuZC88Y29tcHV0ZS1wbGFuZS1jbHVz" + + "dGVyLW5hbWU+IC1uIG52Y2Etb3BlcmF0b3IgXAogIC0tZm9yPWpzb25wYXRoPSd7LnN0YXR1cy5h" + + "Z2VudFN0YXR1c30nPWhlYWx0aHkgLS10aW1lb3V0PTEwbQpgYGAKCi0tLQoKIyMgRXhhbXBsZSA1" + + "OiBEZXBsb3kgT25seSBEZXBlbmRlbmNpZXMKClVzZWZ1bCBmb3IgdGVzdGluZyBvciB3aGVuIGl0" + + "ZXJhdGluZyBvbiBzZXJ2aWNlIGNvbmZpZ3VyYXRpb24uCgpgYGBiYXNoCiMgRGVwbG95IGp1c3Qg" + + "TkFUUywgQ2Fzc2FuZHJhLCBPcGVuQmFvCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + + "bGVjdG9yIHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMKCiMgQ2hlY2sgc3RhdHVzCmt1" + + "YmVjdGwgZ2V0IHBvZHMgLW4gbmF0cy1zeXN0ZW0Ka3ViZWN0bCBnZXQgcG9kcyAtbiBjYXNzYW5k" + + "cmEtc3lzdGVtCmt1YmVjdGwgZ2V0IHBvZHMgLW4gdmF1bHQtc3lzdGVtCgojIERlcGxveSBqdXN0" + + "IG9uZSBzcGVjaWZpYyByZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVj" + + "dG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMKYGBgCgojIyMgU2VsZWN0b3IgcmVmZXJlbmNlCgp8IFNl" + + "bGVjdG9yIHwgUmVsZWFzZXMgfAp8LS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGByZWxlYXNlLWdy" + + "b3VwPWRlcGVuZGVuY2llc2AgfCBuYXRzLCBjYXNzYW5kcmEsIG9wZW5iYW8tc2VydmVyIHwKfCBg" + + "cmVsZWFzZS1ncm91cD1zZXJ2aWNlc2AgfCBhcGkta2V5cywgc2lzLCBhcGksIGludm9jYXRpb24t" + + "c2VydmljZSwgZ3JwYy1wcm94eSwgZXNzLWFwaSwgbm90YXJ5LXNlcnZpY2UsIHJldmFsLCBvcHRp" + + "b25hbCBsbG0tcmVxdWVzdC1yb3V0ZXIgYW5kIGxsbS1hcGktZ2F0ZXdheSB3aGVuIGBsbG0uZW5h" + + "YmxlZD10cnVlYCwgb3B0aW9uYWwgdmFuaXR5LWdhdGV3YXkgb25seSBpbiBzdGFjayBwYWNrYWdl" + + "cyB0aGF0IGluY2x1ZGUgdGhlIGFkZG9uIGFuZCBoYXZlIGBhZGRvbnMudmFuaXR5R2F0ZXdheS5l" + + "bmFibGVkPXRydWVgLCBvcHRpb25hbCBudmNmLXVpIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhh" + + "dCBpbmNsdWRlIHRoZSBhZGRvbiBhbmQgaGF2ZSBgYWRkb25zLm52Y2ZVaS5lbmFibGVkPXRydWVg" + + "IHwKfCBgbmFtZT1sbG0tcmVxdWVzdC1yb3V0ZXJgIHwgRGVwbG95IGp1c3QgdGhlIExMTSByZXF1" + + "ZXN0IHJvdXRlciB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCB8CnwgYG5hbWU9bGxtLWFwaS1nYXRl" + + "d2F5YCB8IERlcGxveSBqdXN0IHRoZSBMTE0gQVBJIGdhdGV3YXkgd2hlbiBgbGxtLmVuYWJsZWQ9" + + "dHJ1ZWAgfAp8IGBuYW1lPXZhbml0eS1nYXRld2F5YCB8IERlcGxveSBqdXN0IFZhbml0eSBHYXRl" + + "d2F5IG9ubHkgd2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5k" + + "IGBhZGRvbnMudmFuaXR5R2F0ZXdheS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1udmNmLXVpYCB8" + + "IERlcGxveSBOVkNGIFVJIG9ubHkgd2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0" + + "IHJlbGVhc2UgYW5kIGBhZGRvbnMubnZjZlVpLmVuYWJsZWQ9dHJ1ZWAgfAp8IGByZWxlYXNlLWdy" + + "b3VwPWluZ3Jlc3NgIHwgaW5ncmVzcyAoZ2F0ZXdheSByb3V0ZXMpIHwKfCBgbmFtZT08cmVsZWFz" + + "ZT5gIHwgQW55IGluZGl2aWR1YWwgcmVsZWFzZSBieSBuYW1lIHwKCk5vdGU6IGBhZG1pbi1pc3N1" + + "ZXItcHJveHlgIGRvZXMgbm90IGhhdmUgYSByZWxlYXNlLWdyb3VwIGxhYmVsLiBUYXJnZXQgaXQg" + + "d2l0aCBgLS1zZWxlY3RvciBuYW1lPWFkbWluLWlzc3Vlci1wcm94eWAuClBLBwgCUk5AfygAAH8o" + + "AABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAEwACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWlu" + + "c3RhbGxhdGlvbi9yZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kVVQFAAEA" + + "ps4SIyBTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbgoKVGhlIGNvbnRyb2wgcGxhbmUg" + + "YW5kIGNvbXB1dGUgcGxhbmUgYXJlIHNlcGFyYXRlIHN0YWNrcy4gSW5zdGFsbCB0aGUgY29udHJv" + + "bApwbGFuZSBmaXJzdCwgdGhlbiByZWdpc3RlciBhbmQgaW5zdGFsbCBlYWNoIGNvbXB1dGUgY2x1" + + "c3Rlci4gQ2hvb3NlIG9uZSBoYW5kb2ZmCmJlbG93IGFuZCB1c2UgaXQgZm9yIHRoZSBmdWxsIGxp" + + "ZmVjeWNsZS4gRG8gbm90IGNvbWJpbmUgYSBDTEktZ2VuZXJhdGVkIHByb2ZpbGUKd2l0aCB0aGUg" + + "SGVsbWZpbGUgdmFsdWVzIGZsb3cuCgojIyBDaG9vc2UgYSBIYW5kb2ZmCgp8IEZsb3cgfCBTb3Vy" + + "Y2Ugb2YgY29udHJvbC1wbGFuZSBlbmRwb2ludHMgfCBSZWdpc3RyYXRpb24gYXJ0aWZhY3QgfAp8" + + "LS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0t" + + "LS0tLS0tLS0tfAp8IEhlbG1maWxlIHZhbHVlcyB8IFNlcGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5k" + + "IGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZXMgfCBgZGVwbG95L3N0YWNrcy9udmNmLWNv" + + "bXB1dGUtcGxhbmUvcmVnaXN0cmF0aW9uLzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAg" + + "fAp8IENMSSBwcm9maWxlIHwgQ0xJLWdlbmVyYXRlZCBgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFn" + + "ZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sYCB8IENMSS1nZW5lcmF0ZWQgYGRlcGxv" + + "eS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVz" + + "LnlhbWxgIHwKClRoZSBDTEkgcHJvZmlsZSBpcyBtYW5kYXRvcnkgZm9yIHRoZSBDTEkgZmxvdyBh" + + "bmQgbXVzdCBub3QgYmUgaGFuZC1hdXRob3JlZC4KVGhlIEhlbG1maWxlIGZsb3cgZG9lcyBub3Qg" + + "Y29uc3VtZSBhIGNvbnRyb2wtcGxhbmUgcHJvZmlsZS4KCkNvbW1hbmRzIGJlbG93IHVzZSBtb25v" + + "cmVwbyBwYXRocyBmcm9tIHRoZSByZXBvc2l0b3J5IHJvb3QuIE9wZXJhdG9ycyB1c2luZwpleHRy" + + "YWN0ZWQgcGFja2FnZXMgbmVlZCBtYXRjaGluZy12ZXJzaW9uIGBudmNmLXNlbGYtbWFuYWdlZC1z" + + "dGFja2AgYW5kCmBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXMuIFN1YnN0aXR1dGUg" + + "dGhvc2UgYnVuZGxlIHJvb3RzIGZvcgpgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWRgIGFuZCBg" + + "ZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmVgLgoKIyMgSGVsbWZpbGUgVmFsdWVzIEZs" + + "b3cKCkNyZWF0ZSBib3RoIGVudmlyb25tZW50IGZpbGVzIGJlZm9yZSBpbnN0YWxsYXRpb246Cgot" + + "IGBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9lbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgZm9y" + + "IGNvbnRyb2wtcGxhbmUKICByZWdpc3RyeSwgZG9tYWluLCBHYXRld2F5LCByb3V0ZXMsIGFuZCBz" + + "ZXJ2aWNlIHNldHRpbmdzLgotIGBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZp" + + "cm9ubWVudHMvPGVudj4ueWFtbGAgZm9yIGNvbXB1dGUtcGxhbmUKICByZWdpc3RyeSwgcHVsbCBz" + + "ZWNyZXRzLCBhbmQgY29tcHV0ZS1yZWFjaGFibGUgSUNNUywgUmVWYWwsIGFuZCBOQVRTIHZhbHVl" + + "cy4KCkZvciBFS1MsIHVzZSB0aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXSho" + + "dHRwczovL2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFt" + + "cGxlKS4KVGhlIGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQga2VlcHMgdGhlIEVudm95IEdhdGV3" + + "YXkgY29udHJvbGxlciBpbgpgZW52b3ktZ2F0ZXdheS1zeXN0ZW1gLCBhdHRhY2hlcyByb3V0ZXMg" + + "dG8gYEdhdGV3YXkvbnZjZi1nYXRld2F5YCBpbgpgZW52b3ktZ2F0ZXdheWAsIGFuZCBlbmFibGVz" + + "IHRoZSBOQVRTIHJvdXRlLiBUaGUgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCB1c2VzCnRoZSBl" + + "eHRlcm5hbCBhZGRyZXNzIHBsdXMgdGhlIHNlcnZpY2UgaG9zdCBvdmVycmlkZXMuIEhlcmUsCmA8" + + "Z2F0ZXdheS1hZGRyZXNzPmAgaXMgdGhlIE5MQiBhZGRyZXNzIGFuZCBgPGdhdGV3YXktZG9tYWlu" + + "PmAgaXMgdGhlIEROUyBiYXNlCndob3NlIHNlcnZpY2Ugc3ViZG9tYWlucyByZXNvbHZlIHRvIHRo" + + "YXQgTkxCOgoKYGBgeWFtbAojIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL2Vudmlyb25tZW50" + + "cy88ZW52Pi55YW1sCmdsb2JhbDoKICBkb21haW46ICI8Z2F0ZXdheS1kb21haW4+IgogIHdvcmtl" + + "ckVuZHBvaW50czoKICAgIG52Y2ZTZXJ2aWNlVVJMOiAiaHR0cDovL2FwaS48Z2F0ZXdheS1kb21h" + + "aW4+IgogICAgbnZjZkdycGNTZXJ2aWNlVVJMOiAiaHR0cDovL3dvcmtlci1hcGkuPGdhdGV3YXkt" + + "ZG9tYWluPiIKICAgIG52Y2ZOYXRzU2VydmljZVVSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNz" + + "Pjo0MjIyIgogICAgbnZjdFNlcnZpY2VVUkw6ICJodHRwOi8vdGFza3MuPGdhdGV3YXktZG9tYWlu" + + "PiIKICAgIG52Y3RHcnBjU2VydmljZVVSTDogImh0dHA6Ly93b3JrZXItdGFza3MuPGdhdGV3YXkt" + + "ZG9tYWluPiIKICAgIGludm9jYXRpb25TZXJ2aWNlVVJMOiAiaHR0cDovL2ludm9jYXRpb24uPGdh" + + "dGV3YXktZG9tYWluPiIKCmdycGNwcm94eToKICBudmNmR3JwY1NlcnZpY2VVUkw6ICJodHRwOi8v" + + "YXBpLm52Y2Yuc3ZjLmNsdXN0ZXIubG9jYWw6OTA5MCIKCmluZ3Jlc3M6CiAgZ2F0ZXdheUFwaToK" + + "ICAgIGNvbnRyb2xsZXJOYW1lc3BhY2U6IGVudm95LWdhdGV3YXktc3lzdGVtCiAgICBnYXRld2F5" + + "czoKICAgICAgc2hhcmVkOiB7bmFtZTogbnZjZi1nYXRld2F5LCBuYW1lc3BhY2U6IGVudm95LWdh" + + "dGV3YXl9CiAgICAgIGdycGM6IHtuYW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3kt" + + "Z2F0ZXdheX0KICAgICAgbmF0czoKICAgICAgICBuYW1lOiBudmNmLWdhdGV3YXkKICAgICAgICBu" + + "YW1lc3BhY2U6IGVudm95LWdhdGV3YXkKICAgICAgICBsaXN0ZW5lck5hbWU6IG5hdHMKICAgIHJv" + + "dXRlczoKICAgICAgbnZjZkFwaToKICAgICAgICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1" + + "ZQogICAgICAgICAgaG9zdG5hbWVzOiBbIndvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiJdCiAg" + + "ICAgIG52Y3RBcGk6CiAgICAgICAgZ3JwYzoKICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAg" + + "ICAgIGhvc3RuYW1lczogWyJ3b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG5h" + + "dHM6CiAgICAgICAgZW5hYmxlZDogdHJ1ZQoKb3BlbmJhbzoKICBtaWdyYXRpb25zOgogICAgaXNz" + + "dWVyRGlzY292ZXJ5OgogICAgICBlbmFibGVkOiB0cnVlCmBgYAoKYGBgeWFtbAojIGRlcGxveS9z" + + "dGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoK" + + "ICBudmNhT3BlcmF0b3I6CiAgICBzZWxmTWFuYWdlZDoKICAgICAgaWNtc1NlcnZpY2VVUkw6ICJo" + + "dHRwOi8vPGdhdGV3YXktYWRkcmVzcz4iCiAgICAgIGljbXNTZXJ2aWNlSG9zdEhlYWRlck92ZXJy" + + "aWRlOiAic2lzLjxnYXRld2F5LWRvbWFpbj4iCiAgICAgIHJldmFsU2VydmljZVVSTDogImh0dHA6" + + "Ly88Z2F0ZXdheS1hZGRyZXNzPiIKICAgICAgcmV2YWxTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRl" + + "OiAicmV2YWwuPGdhdGV3YXktZG9tYWluPiIKICAgICAgbmF0c1VSTDogIm5hdHM6Ly88Z2F0ZXdh" + + "eS1hZGRyZXNzPjo0MjIyIgogICAgICBuYXRzSG9zdE92ZXJyaWRlOiAibmF0cy48Z2F0ZXdheS1k" + + "b21haW4+IgpgYGAKClByZXZpZXcgYW5kIGluc3RhbGwgdGhlIGNvbnRyb2wgcGxhbmUgYWdhaW5z" + + "dCBpdHMgY29udGV4dDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdl" + + "ZCB0ZW1wbGF0ZSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNv" + + "bnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFn" + + "ZWQgaW5zdGFsbCBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNv" + + "bnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpCZWZvcmUgcmVnaXN0ZXJpbmcgdGhyb3VnaCBh" + + "IGJhcmUgR2F0ZXdheSBhZGRyZXNzLCBjcmVhdGUgb3IgdXBkYXRlIHRoZSBDTEkKY29uZmlnIHBh" + + "c3NlZCBhcyBgTlZDRl9DTElfQ09ORklHYDoKCmBgYHlhbWwKYmFzZV9odHRwX3VybDogImh0dHA6" + + "Ly88Z2F0ZXdheS1hZGRyZXNzPiIKaW52b2tlX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNz" + + "PiIKYmFzZV9ncnBjX3VybDogIjxnYXRld2F5LWFkZHJlc3M+OjEwMDgxIgphcGlfa2V5c19zZXJ2" + + "aWNlX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKaWNtc191cmw6ICJodHRwOi8vPGdh" + + "dGV3YXktYWRkcmVzcz4iCmFwaV9ob3N0OiAiYXBpLjxnYXRld2F5LWRvbWFpbj4iCmFwaV9rZXlz" + + "X2hvc3Q6ICJhcGkta2V5cy48Z2F0ZXdheS1kb21haW4+IgppbnZva2VfaG9zdDogImludm9jYXRp" + + "b24uPGdhdGV3YXktZG9tYWluPiIKaWNtc19ob3N0OiAic2lzLjxnYXRld2F5LWRvbWFpbj4iCmBg" + + "YAoKSG9zdCBmaWVsZHMgY29udGFpbiBob3N0bmFtZXMgb25seSwgd2l0aG91dCBhIFVSTCBzY2hl" + + "bWUuIGBJQ01TX1VSTGAgbWFwcyBvbmx5CnRvIHRoZSByZWdpc3RyYXRpb24gY29tbWFuZCdzIGAt" + + "LWljbXMtdXJsYDsgYGljbXNfaG9zdGAgaW4gdGhlIGNvbmZpZyBzdXBwbGllcwp0aGUgR2F0ZXdh" + + "eSBIb3N0IGhlYWRlci4gVGhlcmUgaXMgbm8gYC0taWNtcy1ob3N0YCBNYWtlIG9yIENMSSBmbGFn" + + "LgoKUmVnaXN0ZXIgZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0LCB0aGVuIGluc3RhbGwgdGhlIGNv" + + "bXB1dGUgcGxhbmU6CgpgYGBiYXNoCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUt" + + "cGxhbmUgcmVnaXN0ZXItY2x1c3RlciBcCiAgQ0xVU1RFUl9OQU1FPTxjbHVzdGVyLW5hbWU+IFwK" + + "ICBOQ0FfSUQ9PG5jYS1pZD4gXAogIENMVVNURVJfUkVHSU9OPTxyZWdpb24+IFwKICBJQ01TX1VS" + + "TD1odHRwOi8vPGdhdGV3YXktYWRkcmVzcz4gXAogIEtVQkVDT05GSUdfRklMRT08Y29tcHV0ZS1w" + + "bGFuZS1rdWJlY29uZmlnPiBcCiAgTlZDRl9DTEk9PHBhdGgtdG8tbnZjZi1jbGk+IFwKICBOVkNG" + + "X0NMSV9DT05GSUc9PHBhdGgtdG8tbnZjZi1jbGktY29uZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3Rh" + + "Y2tzL252Y2YtY29tcHV0ZS1wbGFuZSBpbnN0YWxsIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXIt" + + "bmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRl" + + "LXBsYW5lLWt1YmVjb25maWc+CmBgYAoKUmVnaXN0cmF0aW9uIGRpc2NvdmVycyB0aGUgT0lEQyBp" + + "c3N1ZXIgYW5kIEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBrdWJlIGNvbnRleHQuCkluIGEgbXVsdGkt" + + "Y2x1c3RlciBkZXBsb3ltZW50LCBgS1VCRUNPTkZJR19GSUxFYCBpcyByZXF1aXJlZCBvbiBib3Ro" + + "CmNvbXB1dGUtcGxhbmUgY29tbWFuZHMuIEluIGEgc2FtZS1jbHVzdGVyIGRlcGxveW1lbnQgaXQg" + + "bWF5IGJlIG9taXR0ZWQgb25seQp3aGVuIHRoZSBhbWJpZW50IGNvbnRleHQgaXMgYWxyZWFkeSB0" + + "aGUgdGFyZ2V0IGNsdXN0ZXIuCgojIyBDTEkgUHJvZmlsZSBGbG93CgpSdW4gdGhlIENMSSBjb250" + + "cm9sLXBsYW5lIGluc3RhbGwgZmlyc3QuIEl0IGNyZWF0ZXMgdGhlIHByb2ZpbGUgY29uc3VtZWQg" + + "YnkKY29tcHV0ZS1wbGFuZSByZWdpc3RyYXRpb246CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmln" + + "IDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0" + + "YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tz" + + "L252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29u" + + "dHJvbC1wbGFuZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUt" + + "cGxhbmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgaW5zdGFsbCAtLWNvbnRy" + + "b2wtcGxhbmUgXAogIC0tY2x1c3Rlci1uYW1lIDxjb250cm9sLXBsYW5lLWNsdXN0ZXItbmFtZT4g" + + "XAogIC0tcmVnaW9uIDxyZWdpb24+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKdGVzdCAtcyBkZXBs" + + "b3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWwKYGBg" + + "CgpVc2UgdGhlIGZ1bGwgcGVyc2lzdGVudCBwcmVmaXggZm9yIGJvdGggY29tcHV0ZS1wbGFuZSBj" + + "b21tYW5kczoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQg" + + "XAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAg" + + "LS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwK" + + "ICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgY29tcHV0ZS1wbGFuZSByZWdpc3RlciBcCiAg" + + "LS1jb250cm9sLXBsYW5lLXByb2ZpbGUgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2Nv" + + "bnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sIFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFu" + + "ZS1jbHVzdGVyLW5hbWU+IFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0" + + "PiBcCiAgLS1yZWdpb24gPHJlZ2lvbj4gXAogIC0tb3V0cHV0IGRlcGxveS9zdGFja3MvbnZjZi1j" + "b21wdXRlLXBsYW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZh" + - "bHVlcy55YW1sIFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAg" + - "LS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPgpgYGAKClJlZ2lzdHJh" + - "dGlvbiBzZWxlY3RzIHRoZSBwcm9maWxlJ3MgaW4tY2x1c3RlciBvciBjb21wdXRlLXJlYWNoYWJs" + - "ZSBlbmRwb2ludHMKZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0IGFuZCBwcm9iZXMgaXRzIEpXS1Mu" + - "IERvIG5vdCByZXBsYWNlIHByb2ZpbGUgZW5kcG9pbnRzCndpdGggaGFuZC1hdXRob3JlZCBIZWxt" + - "ZmlsZSBlbmRwb2ludCB2YWx1ZXMuCgojIyBQdWxsIFNlY3JldHMKCkNyZWF0ZSB0aGUgY29udHJv" + - "bC1wbGFuZSBzZWNyZXQgaW4gdGhlc2UgbmFtZXNwYWNlcyBvbiB0aGUgY29udHJvbC1wbGFuZQpj" + - "b250ZXh0OgoKYGBgdGV4dApjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtl" + - "eXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyCmBgYAoKT24gdGhlIGNvbXB1dGUg" + - "Y29udGV4dCwgY3JlYXRlIHRoZSBzZWNyZXQgb25seSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIHJl" + - "ZmVyZW5jZQppdCB0aHJvdWdoIGBnbG9iYWwuaW1hZ2VQdWxsU2VjcmV0c2AgaW4gdGhlIGNvbXB1" + - "dGUtcGxhbmUgZW52aXJvbm1lbnQuIFRoZSBjaGFydAphbmQgb3BlcmF0b3IgdXNlIGl0IGluIGBu" + - "dmNhLW9wZXJhdG9yYCBhbmQgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBhZGQK" + - "ZWl0aGVyIG5hbWVzcGFjZSB0byB0aGUgY29udHJvbC1wbGFuZSBsaXN0LiBGb3IgY29tbWFuZHMg" + - "YW5kIHBvbGljeSBleGFtcGxlcywKc2VlIFtwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0cy5t" + - "ZCkuCgojIyBWZXJpZmljYXRpb24KClVzZSB0aGUgZXhwbGljaXQgR2F0ZXdheSBuYW1lIGFuZCBu" + - "YW1lc3BhY2U6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRl" + - "eHQ+IGdldCBnYXRld2F5IG52Y2YtZ2F0ZXdheSBcCiAgLW4gZW52b3ktZ2F0ZXdheSAtbyB3aWRl" + - "Cmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCB0Y3Byb3V0ZSAt" + - "biBlbnZveS1nYXRld2F5Cmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+" + - "IHJvbGxvdXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Etb3BlcmF0b3IgLW4gbnZjYS1vcGVy" + - "YXRvciAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + - "eHQ+IHdhaXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4gLW4g" + - "bnZjYS1vcGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3suc3RhdHVzLmFnZW50U3RhdHVzfSc9" + - "aGVhbHRoeSAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNv" + - "bnRleHQ+IGdldCBzZWNyZXQgPHB1bGwtc2VjcmV0PiAtbiBudmNhLXN5c3RlbQpgYGAKCiMjIFRl" + - "YXJkb3duCgpEZXN0cm95IGFuZCBkZXJlZ2lzdGVyIGV2ZXJ5IGNvbXB1dGUgcGxhbmUgYmVmb3Jl" + - "IHRoZSBjb250cm9sIHBsYW5lLiBCb3RoCmhhbmRvZmZzIGNhbiBkZXN0cm95IHRoZSBjb250cm9s" + - "IHBsYW5lLCBzbyBhcHBseSB0aGlzIHByZWZsaWdodCBiZWZvcmUgZWl0aGVyCm9uZS4gUHJlc2Vy" + - "dmUgdGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3BhY2UgcHJl" + - "c2VydmF0aW9uCmRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIElkZW50aWZ5IHdo" + - "ZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLgpGb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0" + - "aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgCmFuZCBh" + - "Ym9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxlYXNl" + - "IHdpdGggZWZmZWN0aXZlCmBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5IG1hdGNo" + - "aW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQKYWJvcnQgb24gbWlzc2luZyBvciBt" + - "aXNtYXRjaGVkIGV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNwYWNlIHJlbW92YWwgYWZ0ZXIKdmVy" + - "aWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBnZXR0aW5nIGV4cGxpY2l0IGNvbmZpcm1h" + - "dGlvbjsgb3RoZXJ3aXNlCmRvIG5vdCBkZWxldGUgaXQuCgpGb3IgdGhlIEhlbG1maWxlIHZhbHVl" + - "cyBmbG93LCByZXRhaW4gZWFjaCByZWdpc3RyYXRpb24gdmFsdWVzIGZpbGUgdW50aWwKY2xlYW51" + - "cCBpcyB2ZXJpZmllZDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0" + - "ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1G" + - "SUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25m" + - "aWc+Cgo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNsdXN0ZXIgZGVsZXRlIFwKICAtLWNs" + - "dXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1yZWdpc3RyYXRpb24tdmFsdWVzPiBcCiAgLS1uY2Et" + - "aWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBgCgpSZWFkIGBjbHVzdGVySURgIGFu" + - "ZCBgbmNhSURgIGZyb20KYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL3JlZ2lzdHJh" + - "dGlvbi88Y2x1c3Rlci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuClNob3cgdGhlIGV4YWN0" + - "IGNsdXN0ZXIgSUQgYW5kIGdldCBjb25maXJtYXRpb24gYmVmb3JlIGBjbHVzdGVyIGRlbGV0ZWAu" + - "IFJlcGVhdApjb21wdXRlIGRlc3Ryb3kgYW5kIGRlcmVnaXN0cmF0aW9uIGZvciBldmVyeSBjb21w" + - "dXRlIGNsdXN0ZXIsIHRoZW4gZGVzdHJveSB0aGUKY29udHJvbCBwbGFuZS4KCmBgYGJhc2gKS1VC" + - "RUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBcCm1ha2UgLUMgZGVwbG95L3N0YWNr" + - "cy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09O" + - "RklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpCb3RoIGBLVUJFQ09ORklH" + - "YCBhbmQgYEtVQkVDT05GSUdfRklMRWAgYXJlIHJlcXVpcmVkIG9uIHRoZSBjb250cm9sLXBsYW5l" + - "CmRlc3Ryb3kgYmVjYXVzZSBpdHMgbmFtZXNwYWNlIGNsZWFudXAgdXNlcyBhbWJpZW50IGBrdWJl" + - "Y3RsYC4KCkZvciB0aGUgQ0xJIHByb2ZpbGUgZmxvdywga2VlcApgZGVwbG95L3N0YWNrcy9udmNm" + - "LWNvbXB1dGUtcGxhbmUvb3V0LzxjbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYAp1" + - "bnRpbCB0ZWFyZG93biBjb21wbGV0ZXMgYmVjYXVzZSBgZG93bmAgcmVhZHMgaXRzIGNsdXN0ZXIg" + - "SUQuIEZpcnN0IHF1ZXJ5IHRoZQpsaXZlIHJlZ2lzdHJhdGlvbiBzZXQgd2l0aCB0aGUgc2FtZSBj" + - "b21wbGV0ZSBwZXJzaXN0ZW50IHByZWZpeDoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNv" + - "bmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tz" + - "L3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZj" + - "Zi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9s" + - "LXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFu" + - "ZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRl" + - "LXJlYWNoYWJsZS1pY21zLXVybD4gXAogIHN0YXR1cyBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1" + - "dGUtcGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4KYGBgCgpTaG93IHRo" + - "ZSByZWdpc3RlcmVkIGNvbXB1dGUtcGxhbmUgbGlzdC4gTmFtZWQtY2x1c3RlciBgZG93biAtLXBs" + - "YW4tb25seWAgZG9lcwpub3QgcXVlcnkgSUNNUywgc28gaXQgcHJldmlld3Mgb25seSB0aGF0IGNv" + - "bXB1dGUgcGxhbmUgYW5kIGNhbm5vdCBzaG93IHRoZQpjb25kaXRpb25hbCBjb250cm9sLXBsYW5l" + - "IHJlbW92YWwuIElmIHRoZSB0YXJnZXQgaXMgdGhlIGxhc3QgcmVnaXN0ZXJlZApjbHVzdGVyLCBy" + - "ZWFsIGBkb3duYCBhbHNvIGRlc3Ryb3lzIHRoZSBjb250cm9sIHBsYW5lLiBHZXQgZXhwbGljaXQg" + - "Y29uZmlybWF0aW9uCmZvciBib3RoIHJlbW92YWxzIGJlZm9yZSBjb250aW51aW5nLiBUaGVuIHBy" + - "ZXZpZXcgYW5kIGV4ZWN1dGUgd2l0aCB0aGUgc2FtZQpwcmVmaXg6CgpgYGBiYXNoCm52Y2YtY2xp" + - "IC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sg" + - "ZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBs" + - "b3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4g" + - "XAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IFwKICAt" + - "LWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1pY21z" + - "LXVybCA8Y29tcHV0ZS1yZWFjaGFibGUtaWNtcy11cmw+IFwKICBkb3duIC0tcGxhbi1vbmx5IFwK" + - "ICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAtLW5jYS1p" + - "ZCA8bmNhLWlkPgoKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0t" + - "Y29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21w" + - "dXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVu" + - "diA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wt" + - "cGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5l" + - "LWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAog" + - "IGRvd24gXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAog" + - "IC0tbmNhLWlkIDxuY2EtaWQ+CmBgYAoKUmVwZWF0IGBkb3duYCBmb3IgZWFjaCBjb21wdXRlIGNs" + - "dXN0ZXIuIEVhY2ggcnVuIGRlc3Ryb3lzIHRoYXQgY29tcHV0ZSBwbGFuZSBhbmQKdW5yZWdpc3Rl" + - "cnMgaXRzIElDTVMgcm93LiBJdCByZW1vdmVzIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIg" + - "bm8gY2x1c3RlcgpyZWdpc3RyYXRpb25zIHJlbWFpbi4KUEsHCJZjvFkSMAAAEjAAAFBLAwQUAAgA" + - "AAAAACEAAAAAAAAAAAAAAAAAOwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9u" + - "L3JlZmVyZW5jZXMvZGVidWdnaW5nLm1kVVQFAAEAps4SIyBEZWJ1Z2dpbmcgUmVmZXJlbmNlCgpS" + - "ZWNpcGVzIGZvciBkaWFnbm9zaW5nIGFuZCBmaXhpbmcgY29tbW9uIE5WQ0Ygc2VsZi1tYW5hZ2Vk" + - "IHN0YWNrIGZhaWx1cmVzLgoKIyMgUXVpY2sgU3RhdHVzIENvbW1hbmRzCgpgYGBiYXNoCiMgQWxs" + - "IHBvZHMgYWNyb3NzIGFsbCBuYW1lc3BhY2VzCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLW8gd2lkZQoK" + - "IyBQb2RzIGluIGEgc3BlY2lmaWMgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHBvZHMgLW4gPG5hbWVz" + - "cGFjZT4KCiMgQWxsIGhlbG0gcmVsZWFzZXMKaGVsbSBsaXN0IC1BCgojIFJlY2VudCBldmVudHMg" + - "KG1vc3QgdXNlZnVsIGZvciBkaWFnbm9zaW5nIGZhaWx1cmVzKQprdWJlY3RsIGdldCBldmVudHMg" + - "LW4gPG5hbWVzcGFjZT4gLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcKCiMgRGVzY3JpYmUgYSBz" + - "cGVjaWZpYyBwb2QgKHNob3dzIGV2ZW50cywgY29uZGl0aW9ucywgdm9sdW1lcykKa3ViZWN0bCBk" + - "ZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPgpgYGAKCiMjIEZhaWx1cmU6IElt" + - "YWdlUHVsbEJhY2tPZmYKCiMjIyBTeW1wdG9tcwoKYGBgdGV4dApOQU1FICAgICAgICAgICBSRUFE" + - "WSAgIFNUQVRVUyAgICAgICAgICAgICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5kcmEtMCAgICAwLzEg" + - "ICAgIEltYWdlUHVsbEJhY2tPZmYgICAwICAgICAgICAgIDVtCmBgYAoKRXZlbnRzIHNob3c6Cgpg" + - "YGB0ZXh0CkZhaWxlZCB0byBwdWxsIGltYWdlICJudmNyLmlvLy4uLi9pbWFnZTp0YWciOiA0MDEg" + - "VW5hdXRob3JpemVkCmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIHdoYXQgaW1h" + - "Z2UgaXMgZmFpbGluZwprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5h" + - "bWU+IHwgZ3JlcCAtQTUgIkV2ZW50czoiCgojIENoZWNrIGlmIHB1bGwgc2VjcmV0IGV4aXN0cyBp" + - "biB0aGUgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHNlY3JldCBudmNyLWNyZWRzIC1uIDxuYW1lc3Bh" + - "Y2U+CgojIENoZWNrIGlmIHRoZSBwb2Qgc3BlYyBoYXMgaW1hZ2VQdWxsU2VjcmV0cwprdWJlY3Rs" + - "IGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiAtbyBqc29ucGF0aD0ney5zcGVjLmlt" + - "YWdlUHVsbFNlY3JldHN9JwoKIyBDaGVjayBpZiB0aGUgU2VydmljZUFjY291bnQgaGFzIGltYWdl" + - "UHVsbFNlY3JldHMKa3ViZWN0bCBnZXQgc2EgPHNhLW5hbWU+IC1uIDxuYW1lc3BhY2U+IC1vIGpz" + - "b25wYXRoPSd7LmltYWdlUHVsbFNlY3JldHN9JwpgYGAKCiMjIyBGaXhlcwoKMS4gKipTZWNyZXQg" + - "bWlzc2luZyBpbiBuYW1lc3BhY2UqKjogQ3JlYXRlIGl0CgogICBgYGBiYXNoCiAgIGt1YmVjdGwg" + - "Y3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAgLS1kb2NrZXIt" + - "c2VydmVyPW52Y3IuaW8gXAogICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAog" + - "ICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgICAtLW5hbWVzcGFjZT08" + - "bmFtZXNwYWNlPiBcCiAgICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBs" + - "eSAtZiAtCiAgIGBgYAoKMi4gKipTZWNyZXQgZXhpc3RzIGJ1dCBwb2QgZG9lc24ndCByZWZlcmVu" + - "Y2UgaXQqKjogVGhlIGNoYXJ0IG5lZWRzIGBpbWFnZVB1bGxTZWNyZXRzYCBjb25maWd1cmVkIHZp" + - "YSBoZWxtZmlsZSB2YWx1ZXMuIFNlZSBbcHVsbC1zZWNyZXRzLm1kXShwdWxsLXNlY3JldHMubWQp" + - "LgoKMy4gKipDaGFydCBkb2Vzbid0IHN1cHBvcnQgaW1hZ2VQdWxsU2VjcmV0cyoqIChvcGVuYmFv" + - "LCBpbnZvY2F0aW9uLXNlcnZpY2UsIGVzcy1hcGksIG5vdGFyeS1zZXJ2aWNlKTogUGF0Y2ggU2Vy" + - "dmljZUFjY291bnRzIGFuZCByZXN0YXJ0IHBvZHMuIFNlZSBbcHVsbC1zZWNyZXRzLm1kXShwdWxs" + - "LXNlY3JldHMubWQpLgoKNC4gKipXcm9uZyBjcmVkZW50aWFscyBpbiBzZWNyZXQqKjogRGVsZXRl" + - "IGFuZCByZWNyZWF0ZQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGRlbGV0ZSBzZWNyZXQgbnZjci1j" + - "cmVkcyAtbiA8bmFtZXNwYWNlPgogICAjIFJlY3JlYXRlIHdpdGggY29ycmVjdCBjcmVkZW50aWFs" + - "cwogICBgYGAKCiMjIEZhaWx1cmU6IEluaXQ6MC8xIFN0dWNrIChWYXVsdCBBZ2VudCkKCiMjIyBT" + - "eW1wdG9tcwoKU2VydmljZSBwb2RzIHN0dWNrIGluIGBJbml0OjAvMWAgZm9yIG1pbnV0ZXM6Cgpg" + - "YGBiYXNoCk5BTUUgICAgICAgICAgICAgICAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICAgUkVT" + - "VEFSVFMgICBBR0UKbnZjZi1hcGktN2Y0Yzc2Zjc4OC00NHZsdCAgMC8yICAgICBJbml0OjAvMSAg" + - "IDAgICAgICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoKVGhlIGluaXQgY29udGFpbmVyIGlz" + - "IHRoZSB2YXVsdC1hZ2VudC1pbml0IGluamVjdG9yIHdhaXRpbmcgZm9yIE9wZW5CYW8uCgpgYGBi" + - "YXNoCiMgQ2hlY2sgT3BlbkJhbyBwb2RzCmt1YmVjdGwgZ2V0IHBvZHMgLW4gdmF1bHQtc3lzdGVt" + - "CgojIENoZWNrIGlmIE9wZW5CYW8gbWlncmF0aW9uIGpvYiByYW4Ka3ViZWN0bCBnZXQgam9icyAt" + - "biB2YXVsdC1zeXN0ZW0KCiMgQ2hlY2sgT3BlbkJhbyBwb2QgbG9ncwprdWJlY3RsIGxvZ3MgLW4g" + - "dmF1bHQtc3lzdGVtIG9wZW5iYW8tc2VydmVyLTAgLWMgb3BlbmJhbwoKIyBDaGVjayBpbml0IGNv" + - "bnRhaW5lciBsb2dzIG9uIHRoZSBzdHVjayBwb2QKa3ViZWN0bCBsb2dzIC1uIDxuYW1lc3BhY2U+" + - "IDxwb2QtbmFtZT4gLWMgdmF1bHQtYWdlbnQtaW5pdApgYGAKCiMjIyBGaXhlcwoKMS4gKipPcGVu" + - "QmFvIHBvZHMgbm90IHJ1bm5pbmcqKjogQ2hlY2sgdGhlaXIgZXZlbnRzIGZvciBpbWFnZSBwdWxs" + - "IGlzc3VlcywgcmVzb3VyY2UgaXNzdWVzLCBldGMuCgoyLiAqKk9wZW5CYW8gbWlncmF0aW9uIGpv" + - "YiBkaWRuJ3QgcnVuKio6IFRoaXMgaGFwcGVucyB3aGVuIGBoZWxtZmlsZSBzeW5jYCB3YXMgaW50" + - "ZXJydXB0ZWQuIERlc3Ryb3kgYW5kIHJlLXN5bmMgb3BlbmJhbzoKCiAgIGBgYGJhc2gKICAgSEVM" + - "TUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBk" + - "ZXN0cm95CiAgIGt1YmVjdGwgZGVsZXRlIG5hbWVzcGFjZSB2YXVsdC1zeXN0ZW0KICAga3ViZWN0" + - "bCBjcmVhdGUgbmFtZXNwYWNlIHZhdWx0LXN5c3RlbQogICAjIFJlLWNyZWF0ZSBwdWxsIHNlY3Jl" + - "dCBpZiBuZWVkZWQKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFt" + - "ZT1vcGVuYmFvLXNlcnZlciBzeW5jCiAgIGBgYAoKMy4gKipPcGVuQmFvIHBvZHMgcnVubmluZyBi" + - "dXQgbm90IGluaXRpYWxpemVkKio6IENoZWNrIHVuc2VhbCBzdGF0dXM6CgogICBgYGBiYXNoCiAg" + - "IGt1YmVjdGwgZXhlYyAtbiB2YXVsdC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXItMCAtYyBvcGVuYmFv" + - "IC0tIGJhbyBzdGF0dXMKICAgYGBgCgo0LiAqKmB2YXVsdC1hZ2VudC1pbml0YCBsb2dzIGBhdXRo" + - "L2p3dC9sb2dpbmAgLT4gYDQwMCAuLi4gbm8ga25vd24ga2V5IHN1Y2Nlc3NmdWxseSB2YWxpZGF0" + - "ZWQgdGhlIHRva2VuIHNpZ25hdHVyZWAqKgogICAoY29tbW9uIG9uIEFLUywgYW5kIG9uIGFueSBj" + - "bHVzdGVyIHdob3NlIE9JREMgaXNzdWVyIHB1Ymxpc2hlcyBhIHJvdGF0aW5nIG11bHRpLWtleSBK" + - "V0tTKToKICAgdGhlIE9wZW5CYW8gYGF1dGgvand0YCBtZXRob2Qgd2FzIGNvbmZpZ3VyZWQgd2l0" + - "aCBhIHNpbmdsZSBzdGF0aWMgbW91bnRlZCBwdWJsaWMga2V5CiAgIChgand0X3ZhbGlkYXRpb25f" + - "cHVia2V5c2ApIGluc3RlYWQgb2YgdGhlIGlzc3VlcidzIGxpdmUgSldLUywgc28gaXQgY2Fubm90" + - "IHZhbGlkYXRlIHRoZQogICBjbHVzdGVyLXNpZ25lZCBTZXJ2aWNlQWNjb3VudCB0b2tlbnMgdGhl" + - "IHZhdWx0LWFnZW50cyBwcmVzZW50LiBFdmVyeSBzZXJ2aWNlJ3MKICAgYHZhdWx0LWFnZW50LWlu" + - "aXRgIHRoZW4gbG9vcHMgb24gdGhhdCA0MDAgYW5kIHRoZSBwb2QgbmV2ZXIgbGVhdmVzIGBJbml0" + - "OjAvMWAuIFRoaXMgaXMgdGhlCiAgIGJlaGF2aW9yIG9mIHRoZSBiYXNlIGRlZmF1bHQgYG9wZW5i" + - "YW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2VgOyB0aGUKICAgbWln" + - "cmF0aW9uIGxvZyBzaG93cyBgT0lEQyBpc3N1ZXIgZGlzY292ZXJ5IGlzIGRpc2FibGVkLiBVc2lu" + - "ZyBTZXJ2aWNlQWNjb3VudCBpc3N1ZXIgYW5kCiAgIG1vdW50ZWQgcHVibGljIGtleSBmYWxsYmFj" + - "a2AuIEVuYWJsZSBpc3N1ZXIgZGlzY292ZXJ5IHNvIHRoZSBtaWdyYXRpb24gdXNlcyB0aGUgbGl2" + - "ZSBKV0tTLAogICB0aGVuIHJlLXJ1biBpdDoKCiAgIGBgYGJhc2gKICAgIyBJbiB5b3VyIGVudiB2" + - "YWx1ZXMgKGUuZy4gZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwpLCBzZXQ6CiAgICMgICBvcGVuYmFv" + - "OgogICAjICAgICBtaWdyYXRpb25zOgogICAjICAgICAgIGlzc3VlckRpc2NvdmVyeToKICAgIyAg" + - "ICAgICAgIGVuYWJsZWQ6IHRydWUKICAga3ViZWN0bCBkZWxldGUgam9iIC1uIHZhdWx0LXN5c3Rl" + - "bSBvcGVuYmFvLXNlcnZlci1taWdyYXRpb25zCiAgIEhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmls" + - "ZSAtLXNlbGVjdG9yIG5hbWU9b3BlbmJhby1zZXJ2ZXIgc3luYwogICBgYGAKCiAgIFRoZSBtaWdy" + - "YXRpb24gbG9nIHNob3VsZCB0aGVuIHNob3cgYFJlY2VpdmVkIGRpc2NvdmVyeSBkb2N1bWVudCBm" + - "cm9tCiAgIC4uLi8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbmAgYW5kIGBGaW5hbCBP" + - "cGVuQmFvIEpXVCBKV0tTIFVSTCBzZXQgdG86CiAgIC4uLi9vcGVuaWQvdjEvandrc2AsIGFuZCB0" + - "aGUgc2VydmljZSBwb2RzIGF1dGhlbnRpY2F0ZSBhbmQgcmVhY2ggUmVhZHkgd2l0aGluIH4xIG1p" + - "bi4KICAgQUtTIGNsdXN0ZXJzIHdpdGggdGhlIGNsdXN0ZXIgT0lEQyBpc3N1ZXIgZW5hYmxlZCAo" + - "dGhlIGBha3MtY2x1c3RlcmAgZGVmYXVsdCkgYWx3YXlzIG5lZWQKICAgdGhpcyBiZWNhdXNlIHRo" + - "ZSBzdGF0aWMtcHVia2V5IGZhbGxiYWNrIGNhbm5vdCBtYXRjaCB0aGUgaXNzdWVyJ3Mgcm90YXRp" + - "bmcgc2lnbmluZyBrZXlzLgoKIyMgRmFpbHVyZTogT09NS2lsbGVkIG9uIENhc3NhbmRyYQoKIyMj" + - "IFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMgICAgUkVTVEFS" + - "VFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIE9PTUtpbGxlZCAgMyAgICAgICAgIDEwbQpg" + - "YGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gY2Fzc2Fu" + - "ZHJhLXN5c3RlbSBjYXNzYW5kcmEtMCB8IGdyZXAgLUEzICJMYXN0IFN0YXRlIgpgYGAKCiMjIyBG" + - "aXgKCk92ZXJyaWRlIENhc3NhbmRyYSByZXNvdXJjZXMgdmlhIGhlbG1maWxlIHZhbHVlcy4gU2Vl" + - "IEV4YW1wbGUgMSBpbgpbZXhhbXBsZXMubWRdKC4uL2V4YW1wbGVzLm1kKS4KCmBgYHlhbWwKLSBj" + - "YXNzYW5kcmE6CiAgICByZXNvdXJjZXM6CiAgICAgIGxpbWl0czoKICAgICAgICBjcHU6ICI4Igog" + - "ICAgICAgIG1lbW9yeTogODE5Mk1pCiAgICAgIHJlcXVlc3RzOgogICAgICAgIGNwdTogIjIiCiAg" + - "ICAgICAgbWVtb3J5OiA0MDk2TWkKYGBgCgpOb3RlOiBgcmVzb3VyY2VQcmVzZXRgIGlzIG5vdCBh" + - "dmFpbGFibGUgaW4gdGhlIE5WQ0YgY2Fzc2FuZHJhIHdyYXBwZXIgY2hhcnQuIFVzZSBleHBsaWNp" + - "dCBgcmVzb3VyY2VzYC4KCiMjIEZhaWx1cmU6IFBvZHMgU3R1Y2sgaW4gUGVuZGluZwoKIyMjIFN5" + - "bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMgICAgUkVTVEFSVFMg" + - "ICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIFBlbmRpbmcgICAwICAgICAgICAgIDEwbQpgYGAK" + - "CiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKIyBDaGVjayBldmVudHMgZm9yIHNjaGVkdWxpbmcgZmFp" + - "bHVyZXMKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPgoKIyBD" + - "b21tb24gY2F1c2VzOgojIC0gIjAvMTIgbm9kZXMgYXJlIGF2YWlsYWJsZTogMTIgbm9kZShzKSBk" + - "aWRuJ3QgbWF0Y2ggUG9kJ3Mgbm9kZSBhZmZpbml0eSIKIyAtICIwLzEyIG5vZGVzIGFyZSBhdmFp" + - "bGFibGU6IDEyIEluc3VmZmljaWVudCBtZW1vcnkiCiMgLSAicGVyc2lzdGVudHZvbHVtZWNsYWlt" + - "IG5vdCBmb3VuZCIKYGBgCgojIyMgRml4ZXMKCjEuICoqTm9kZSBzZWxlY3RvciBtaXNtYXRjaCoq" + - "OiBDaGVjayBgbm9kZVNlbGVjdG9yc2AgaW4gZW52aXJvbm1lbnQgZmlsZQoKICAgYGBgYmFzaAog" + - "ICBrdWJlY3RsIGdldCBub2RlcyAtLXNob3ctbGFiZWxzIHwgZ3JlcCBudmNmCiAgIGBgYAoKMi4g" + - "KipTdG9yYWdlIGNsYXNzIG5vdCBmb3VuZCoqOiBDaGVjayBzdG9yYWdlIGNsYXNzIGV4aXN0cwoK" + - "ICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBzdG9yYWdlY2xhc3MKICAgYGBgCgozLiAqKkluc3Vm" + - "ZmljaWVudCByZXNvdXJjZXMqKjogQ2hlY2sgbm9kZSBjYXBhY2l0eQoKICAgYGBgYmFzaAogICBr" + - "dWJlY3RsIGRlc2NyaWJlIG5vZGUgPG5vZGUtbmFtZT4gfCBncmVwIC1BNSAiQWxsb2NhdGVkIHJl" + - "c291cmNlcyIKICAgYGBgCgojIyBGYWlsdXJlOiBIZWxtIFJlbGVhc2UgaW4gRmFpbGVkIFN0YXRl" + - "CgojIyMgU3ltcHRvbXMKCmBgYGJhc2gKaGVsbSBsaXN0IC1BCiMgU2hvd3MgcmVsZWFzZSB3aXRo" + - "IFNUQVRVUzogZmFpbGVkCmBgYAoKUmUtcnVubmluZyBgaGVsbWZpbGUgc3luY2AgYXBwZWFycyB0" + - "byBzdWNjZWVkIGJ1dCBzZXJ2aWNlcyBkb24ndCB3b3JrIChtaWdyYXRpb25zIHNraXBwZWQpLgoK" + - "IyMjIERpYWdub3NpcwoKYGBgYmFzaApoZWxtIGhpc3RvcnkgPHJlbGVhc2UtbmFtZT4gLW4gPG5h" + - "bWVzcGFjZT4KYGBgCgojIyMgRml4CgpNdXN0IGRlc3Ryb3kgdGhlIGZhaWxlZCByZWxlYXNlIGFu" + - "ZCByZS1zeW5jIChub3QganVzdCBhcHBseSk6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBo" + - "ZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9PHJlbGVhc2U+IGRlc3Ryb3kKIyBJZiBuYW1lc3BhY2Ug" + - "bmVlZHMgY2xlYW51cDoKa3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIDxuYW1lc3BhY2U+Cmt1YmVj" + - "dGwgY3JlYXRlIG5hbWVzcGFjZSA8bmFtZXNwYWNlPgojIFJlLWNyZWF0ZSBwdWxsIHNlY3JldCBp" + - "ZiBuZWVkZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT08cmVs" + - "ZWFzZT4gc3luYwpgYGAKCiMjIEZhaWx1cmU6IEFjY291bnQgQm9vdHN0cmFwIEpvYiBGYWlsZWQK" + - "CiMjIyBTeW1wdG9tcwoKU2VydmljZXMgZGVwbG95IGJ1dCBmdW5jdGlvbnMgY2FuJ3QgYmUgY3Jl" + - "YXRlZC4gRXZlbnRzIHNob3cgYm9vdHN0cmFwIGpvYiBmYWlsdXJlLgoKIyMjIERpYWdub3NpcwoK" + - "YGBgYmFzaAojIENoZWNrIGJvb3RzdHJhcCBqb2Igc3RhdHVzCmt1YmVjdGwgZ2V0IGpvYnMgLW4g" + - "bnZjZgoKIyBHZXQgbG9ncyAoam9iIGF1dG8tZGVsZXRlcyBhZnRlciB+NSBtaW51dGVzKQprdWJl" + - "Y3RsIGxvZ3Mgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIC1uIG52Y2YKCiMgQ2hlY2sg" + - "QVBJIGxvZ3MKa3ViZWN0bCBsb2dzIC1uIG52Y2YgLWwgYXBwLmt1YmVybmV0ZXMuaW8vbmFtZT1u" + - "dmNmLWFwaSAtLXRhaWw9MTAwCmBgYAoKIyMjIENvbW1vbiBDYXVzZXMKCjEuICoqV3JvbmcgYmFz" + - "ZTY0IGNyZWRlbnRpYWxzKio6IENyZWRlbnRpYWxzIGluIGBzZWNyZXRzLzxlbnY+LXNlY3JldHMu" + - "eWFtbGAgbXVzdCBiZSBgJG9hdXRodG9rZW46QVBJX0tFWWAgYmFzZTY0LWVuY29kZWQsIG5vdCBq" + - "dXN0IHRoZSBBUEkga2V5CgogICBgYGBiYXNoCiAgICMgVmVyaWZ5IHlvdXIgZW5jb2RlZCBjcmVk" + - "ZW50aWFsCiAgIGVjaG8gJ1lPVVJfQkFTRTY0X1NUUklORycgfCBiYXNlNjQgLWQKICAgIyBTaG91" + - "bGQgb3V0cHV0OiAkb2F1dGh0b2tlbjpudmFwaS14eHh4eAogICBgYGAKCjIuICoqUmVnaXN0cnkg" + - "dW5yZWFjaGFibGUqKjogQVBJIGNhbid0IHJlYWNoIHRoZSByZWdpc3RyeSBzcGVjaWZpZWQgaW4g" + - "YGFjY291bnRCb290c3RyYXAucmVnaXN0cnlDcmVkZW50aWFsc2AKCiMjIyBGaXgKCkZpeCBjcmVk" + - "ZW50aWFscyBpbiBzZWNyZXRzIGZpbGUsIHRoZW4gcmVjb3ZlciBzZXJ2aWNlcyB3aXRob3V0IGRl" + - "c3Ryb3lpbmcgZGVwZW5kZW5jaWVzOgoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZp" + - "bGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIGRlc3Ryb3kKa3ViZWN0bCBkZWxl" + - "dGUgbmFtZXNwYWNlIG52Y2YgYXBpLWtleXMgZXNzIHNpcyAtLWlnbm9yZS1ub3QtZm91bmQKa3Vi" + - "ZWN0bCBjcmVhdGUgbmFtZXNwYWNlIG52Y2YgJiYga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIGFw" + - "aS1rZXlzICYmIFwKICBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgZXNzICYmIGt1YmVjdGwgY3Jl" + - "YXRlIG5hbWVzcGFjZSBzaXMKIyBSZS1jcmVhdGUgcHVsbCBzZWNyZXRzIGlmIG5lZWRlZApIRUxN" + + "bHVlcy55YW1sCgpudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1j" + + "b250cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1" + + "dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52" + + "IDxlbnY+IFwKICAtLXBsYWluIFwKICBjb21wdXRlLXBsYW5lIGluc3RhbGwgXAogIC0tdmFsdWVz" + + "IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVz" + + "dGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sIFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0" + + "ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rl" + + "ci1uYW1lPgpgYGAKClJlZ2lzdHJhdGlvbiBzZWxlY3RzIHRoZSBwcm9maWxlJ3MgaW4tY2x1c3Rl" + + "ciBvciBjb21wdXRlLXJlYWNoYWJsZSBlbmRwb2ludHMKZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0" + + "IGFuZCBwcm9iZXMgaXRzIEpXS1MuIERvIG5vdCByZXBsYWNlIHByb2ZpbGUgZW5kcG9pbnRzCndp" + + "dGggaGFuZC1hdXRob3JlZCBIZWxtZmlsZSBlbmRwb2ludCB2YWx1ZXMuCgojIyBQdWxsIFNlY3Jl" + + "dHMKCkNyZWF0ZSB0aGUgY29udHJvbC1wbGFuZSBzZWNyZXQgaW4gdGhlc2UgbmFtZXNwYWNlcyBv" + + "biB0aGUgY29udHJvbC1wbGFuZQpjb250ZXh0OgoKYGBgdGV4dApjYXNzYW5kcmEtc3lzdGVtIG5h" + + "dHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2Vy" + + "CmBgYAoKT24gdGhlIGNvbXB1dGUgY29udGV4dCwgY3JlYXRlIHRoZSBzZWNyZXQgb25seSBpbiBg" + + "bnZjYS1vcGVyYXRvcmAgYW5kIHJlZmVyZW5jZQppdCB0aHJvdWdoIGBnbG9iYWwuaW1hZ2VQdWxs" + + "U2VjcmV0c2AgaW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQuIFRoZSBjaGFydAphbmQg" + + "b3BlcmF0b3IgdXNlIGl0IGluIGBudmNhLW9wZXJhdG9yYCBhbmQgbWlycm9yIGl0IHRvIGBudmNh" + + "LXN5c3RlbWAuIERvIG5vdCBhZGQKZWl0aGVyIG5hbWVzcGFjZSB0byB0aGUgY29udHJvbC1wbGFu" + + "ZSBsaXN0LiBGb3IgY29tbWFuZHMgYW5kIHBvbGljeSBleGFtcGxlcywKc2VlIFtwdWxsLXNlY3Jl" + + "dHMubWRdKHB1bGwtc2VjcmV0cy5tZCkuCgojIyBWZXJpZmljYXRpb24KClVzZSB0aGUgZXhwbGlj" + + "aXQgR2F0ZXdheSBuYW1lIGFuZCBuYW1lc3BhY2U6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0" + + "IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5IG52Y2YtZ2F0ZXdheSBcCiAgLW4g" + + "ZW52b3ktZ2F0ZXdheSAtbyB3aWRlCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + + "bnRleHQ+IGdldCB0Y3Byb3V0ZSAtbiBlbnZveS1nYXRld2F5Cmt1YmVjdGwgLS1jb250ZXh0IDxj" + + "b21wdXRlLXBsYW5lLWNvbnRleHQ+IHJvbGxvdXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Et" + + "b3BlcmF0b3IgLW4gbnZjYS1vcGVyYXRvciAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0" + + "IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IHdhaXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBs" + + "YW5lLWNsdXN0ZXItbmFtZT4gLW4gbnZjYS1vcGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3su" + + "c3RhdHVzLmFnZW50U3RhdHVzfSc9aGVhbHRoeSAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250" + + "ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGdldCBzZWNyZXQgPHB1bGwtc2VjcmV0PiAtbiBu" + + "dmNhLXN5c3RlbQpgYGAKCiMjIFRlYXJkb3duCgpEZXN0cm95IGFuZCBkZXJlZ2lzdGVyIGV2ZXJ5" + + "IGNvbXB1dGUgcGxhbmUgYmVmb3JlIHRoZSBjb250cm9sIHBsYW5lLiBCb3RoCmhhbmRvZmZzIGNh" + + "biBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBzbyBhcHBseSB0aGlzIHByZWZsaWdodCBiZWZv" + + "cmUgZWl0aGVyCm9uZS4gUHJlc2VydmUgdGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBk" + + "ZWZhdWx0LiBOYW1lc3BhY2UgcHJlc2VydmF0aW9uCmRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxt" + + "IHJlbGVhc2UuIElkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLgpGb3Ig" + + "YW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIu" + + "ZW5hYmxlZDogZmFsc2VgCmFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQg" + + "c3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlCmBjZXJ0TWFuYWdlci5lbmFibGVk" + + "OiB0cnVlYCwgdmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQK" + + "YWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNw" + + "YWNlIHJlbW92YWwgYWZ0ZXIKdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBnZXR0" + + "aW5nIGV4cGxpY2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlCmRvIG5vdCBkZWxldGUgaXQuCgpG" + + "b3IgdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93LCByZXRhaW4gZWFjaCByZWdpc3RyYXRpb24gdmFs" + + "dWVzIGZpbGUgdW50aWwKY2xlYW51cCBpcyB2ZXJpZmllZDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBs" + + "b3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVSX05BTUU9PGNs" + + "dXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxj" + + "b21wdXRlLXBsYW5lLWt1YmVjb25maWc+Cgo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNs" + + "dXN0ZXIgZGVsZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1yZWdpc3RyYXRp" + + "b24tdmFsdWVzPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBg" + + "CgpSZWFkIGBjbHVzdGVySURgIGFuZCBgbmNhSURgIGZyb20KYGRlcGxveS9zdGFja3MvbnZjZi1j" + + "b21wdXRlLXBsYW5lL3JlZ2lzdHJhdGlvbi88Y2x1c3Rlci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMu" + + "eWFtbGAuClNob3cgdGhlIGV4YWN0IGNsdXN0ZXIgSUQgYW5kIGdldCBjb25maXJtYXRpb24gYmVm" + + "b3JlIGBjbHVzdGVyIGRlbGV0ZWAuIFJlcGVhdApjb21wdXRlIGRlc3Ryb3kgYW5kIGRlcmVnaXN0" + + "cmF0aW9uIGZvciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRoZW4gZGVzdHJveSB0aGUKY29udHJv" + + "bCBwbGFuZS4KCmBgYGJhc2gKS1VCRUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBc" + + "Cm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVf" + + "RU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4K" + + "YGBgCgpCb3RoIGBLVUJFQ09ORklHYCBhbmQgYEtVQkVDT05GSUdfRklMRWAgYXJlIHJlcXVpcmVk" + + "IG9uIHRoZSBjb250cm9sLXBsYW5lCmRlc3Ryb3kgYmVjYXVzZSBpdHMgbmFtZXNwYWNlIGNsZWFu" + + "dXAgdXNlcyBhbWJpZW50IGBrdWJlY3RsYC4KCkZvciB0aGUgQ0xJIHByb2ZpbGUgZmxvdywga2Vl" + + "cApgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvb3V0LzxjbHVzdGVyLW5hbWU+LXJl" + + "Z2lzdGVyLXZhbHVlcy55YW1sYAp1bnRpbCB0ZWFyZG93biBjb21wbGV0ZXMgYmVjYXVzZSBgZG93" + + "bmAgcmVhZHMgaXRzIGNsdXN0ZXIgSUQuIEZpcnN0IHF1ZXJ5IHRoZQpsaXZlIHJlZ2lzdHJhdGlv" + + "biBzZXQgd2l0aCB0aGUgc2FtZSBjb21wbGV0ZSBwZXJzaXN0ZW50IHByZWZpeDoKCmBgYGJhc2gK" + + "bnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFu" + + "ZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0" + + "YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAg" + + "LS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4" + + "dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwK" + + "ICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAogIHN0YXR1cyBcCiAg" + + "LS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1uY2EtaWQg" + + "PG5jYS1pZD4KYGBgCgpTaG93IHRoZSByZWdpc3RlcmVkIGNvbXB1dGUtcGxhbmUgbGlzdC4gTmFt" + + "ZWQtY2x1c3RlciBgZG93biAtLXBsYW4tb25seWAgZG9lcwpub3QgcXVlcnkgSUNNUywgc28gaXQg" + + "cHJldmlld3Mgb25seSB0aGF0IGNvbXB1dGUgcGxhbmUgYW5kIGNhbm5vdCBzaG93IHRoZQpjb25k" + + "aXRpb25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwuIElmIHRoZSB0YXJnZXQgaXMgdGhlIGxhc3Qg" + + "cmVnaXN0ZXJlZApjbHVzdGVyLCByZWFsIGBkb3duYCBhbHNvIGRlc3Ryb3lzIHRoZSBjb250cm9s" + + "IHBsYW5lLiBHZXQgZXhwbGljaXQgY29uZmlybWF0aW9uCmZvciBib3RoIHJlbW92YWxzIGJlZm9y" + + "ZSBjb250aW51aW5nLiBUaGVuIHByZXZpZXcgYW5kIGV4ZWN1dGUgd2l0aCB0aGUgc2FtZQpwcmVm" + + "aXg6CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAt" + + "LWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29t" + + "cHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1l" + + "bnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0IDxjb250cm9s" + + "LXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29tcHV0ZS1wbGFu" + + "ZS1jb250ZXh0PiBcCiAgLS1pY21zLXVybCA8Y29tcHV0ZS1yZWFjaGFibGUtaWNtcy11cmw+IFwK" + + "ICBkb3duIC0tcGxhbi1vbmx5IFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVz" + + "dGVyLW5hbWU+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZp" + + "Zz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3Nl" + + "bGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1j" + + "b21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBs" + + "YW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1j" + + "b250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJl" + + "YWNoYWJsZS1pY21zLXVybD4gXAogIGRvd24gXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBs" + + "YW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+CmBgYAoKUmVwZWF0IGBkb3du" + + "YCBmb3IgZWFjaCBjb21wdXRlIGNsdXN0ZXIuIEVhY2ggcnVuIGRlc3Ryb3lzIHRoYXQgY29tcHV0" + + "ZSBwbGFuZSBhbmQKdW5yZWdpc3RlcnMgaXRzIElDTVMgcm93LiBJdCByZW1vdmVzIHRoZSBjb250" + + "cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgbm8gY2x1c3RlcgpyZWdpc3RyYXRpb25zIHJlbWFpbi4KUEsH" + + "CJZjvFkSMAAAEjAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAOwAJAGRhdGEvbnZjZi1zZWxm" + + "LW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvZGVidWdnaW5nLm1kVVQFAAEAps4SIyBE" + + "ZWJ1Z2dpbmcgUmVmZXJlbmNlCgpSZWNpcGVzIGZvciBkaWFnbm9zaW5nIGFuZCBmaXhpbmcgY29t" + + "bW9uIE5WQ0Ygc2VsZi1tYW5hZ2VkIHN0YWNrIGZhaWx1cmVzLgoKIyMgUXVpY2sgU3RhdHVzIENv" + + "bW1hbmRzCgpgYGBiYXNoCiMgQWxsIHBvZHMgYWNyb3NzIGFsbCBuYW1lc3BhY2VzCmt1YmVjdGwg" + + "Z2V0IHBvZHMgLUEgLW8gd2lkZQoKIyBQb2RzIGluIGEgc3BlY2lmaWMgbmFtZXNwYWNlCmt1YmVj" + + "dGwgZ2V0IHBvZHMgLW4gPG5hbWVzcGFjZT4KCiMgQWxsIGhlbG0gcmVsZWFzZXMKaGVsbSBsaXN0" + + "IC1BCgojIFJlY2VudCBldmVudHMgKG1vc3QgdXNlZnVsIGZvciBkaWFnbm9zaW5nIGZhaWx1cmVz" + + "KQprdWJlY3RsIGdldCBldmVudHMgLW4gPG5hbWVzcGFjZT4gLS1zb3J0LWJ5PScubGFzdFRpbWVz" + + "dGFtcCcKCiMgRGVzY3JpYmUgYSBzcGVjaWZpYyBwb2QgKHNob3dzIGV2ZW50cywgY29uZGl0aW9u" + + "cywgdm9sdW1lcykKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1l" + + "PgpgYGAKCiMjIEZhaWx1cmU6IEltYWdlUHVsbEJhY2tPZmYKCiMjIyBTeW1wdG9tcwoKYGBgdGV4" + + "dApOQU1FICAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICAgICAgICAgICBSRVNUQVJUUyAgIEFH" + + "RQpjYXNzYW5kcmEtMCAgICAwLzEgICAgIEltYWdlUHVsbEJhY2tPZmYgICAwICAgICAgICAgIDVt" + + "CmBgYAoKRXZlbnRzIHNob3c6CgpgYGB0ZXh0CkZhaWxlZCB0byBwdWxsIGltYWdlICJudmNyLmlv" + + "Ly4uLi9pbWFnZTp0YWciOiA0MDEgVW5hdXRob3JpemVkCmBgYAoKIyMjIERpYWdub3NpcwoKYGBg" + + "YmFzaAojIENoZWNrIHdoYXQgaW1hZ2UgaXMgZmFpbGluZwprdWJlY3RsIGRlc2NyaWJlIHBvZCAt" + + "biA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IHwgZ3JlcCAtQTUgIkV2ZW50czoiCgojIENoZWNrIGlm" + + "IHB1bGwgc2VjcmV0IGV4aXN0cyBpbiB0aGUgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHNlY3JldCBu" + + "dmNyLWNyZWRzIC1uIDxuYW1lc3BhY2U+CgojIENoZWNrIGlmIHRoZSBwb2Qgc3BlYyBoYXMgaW1h" + + "Z2VQdWxsU2VjcmV0cwprdWJlY3RsIGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiAt" + + "byBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9JwoKIyBDaGVjayBpZiB0aGUgU2Vy" + + "dmljZUFjY291bnQgaGFzIGltYWdlUHVsbFNlY3JldHMKa3ViZWN0bCBnZXQgc2EgPHNhLW5hbWU+" + + "IC1uIDxuYW1lc3BhY2U+IC1vIGpzb25wYXRoPSd7LmltYWdlUHVsbFNlY3JldHN9JwpgYGAKCiMj" + + "IyBGaXhlcwoKMS4gKipTZWNyZXQgbWlzc2luZyBpbiBuYW1lc3BhY2UqKjogQ3JlYXRlIGl0Cgog" + + "ICBgYGBiYXNoCiAgIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1j" + + "cmVkcyBcCiAgICAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogICAgIC0tZG9ja2VyLXVzZXJu" + + "YW1lPSckb2F1dGh0b2tlbicgXAogICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVki" + + "IFwKICAgICAtLW5hbWVzcGFjZT08bmFtZXNwYWNlPiBcCiAgICAgLS1kcnktcnVuPWNsaWVudCAt" + + "byB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCiAgIGBgYAoKMi4gKipTZWNyZXQgZXhpc3RzIGJ1" + + "dCBwb2QgZG9lc24ndCByZWZlcmVuY2UgaXQqKjogVGhlIGNoYXJ0IG5lZWRzIGBpbWFnZVB1bGxT" + + "ZWNyZXRzYCBjb25maWd1cmVkIHZpYSBoZWxtZmlsZSB2YWx1ZXMuIFNlZSBbcHVsbC1zZWNyZXRz" + + "Lm1kXShwdWxsLXNlY3JldHMubWQpLgoKMy4gKipDaGFydCBkb2Vzbid0IHN1cHBvcnQgaW1hZ2VQ" + + "dWxsU2VjcmV0cyoqIChvcGVuYmFvLCBpbnZvY2F0aW9uLXNlcnZpY2UsIGVzcy1hcGksIG5vdGFy" + + "eS1zZXJ2aWNlKTogUGF0Y2ggU2VydmljZUFjY291bnRzIGFuZCByZXN0YXJ0IHBvZHMuIFNlZSBb" + + "cHVsbC1zZWNyZXRzLm1kXShwdWxsLXNlY3JldHMubWQpLgoKNC4gKipXcm9uZyBjcmVkZW50aWFs" + + "cyBpbiBzZWNyZXQqKjogRGVsZXRlIGFuZCByZWNyZWF0ZQoKICAgYGBgYmFzaAogICBrdWJlY3Rs" + + "IGRlbGV0ZSBzZWNyZXQgbnZjci1jcmVkcyAtbiA8bmFtZXNwYWNlPgogICAjIFJlY3JlYXRlIHdp" + + "dGggY29ycmVjdCBjcmVkZW50aWFscwogICBgYGAKCiMjIEZhaWx1cmU6IEluaXQ6MC8xIFN0dWNr" + + "IChWYXVsdCBBZ2VudCkKCiMjIyBTeW1wdG9tcwoKU2VydmljZSBwb2RzIHN0dWNrIGluIGBJbml0" + + "OjAvMWAgZm9yIG1pbnV0ZXM6CgpgYGBiYXNoCk5BTUUgICAgICAgICAgICAgICAgICAgICAgICBS" + + "RUFEWSAgIFNUQVRVUyAgICAgUkVTVEFSVFMgICBBR0UKbnZjZi1hcGktN2Y0Yzc2Zjc4OC00NHZs" + + "dCAgMC8yICAgICBJbml0OjAvMSAgIDAgICAgICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoK" + + "VGhlIGluaXQgY29udGFpbmVyIGlzIHRoZSB2YXVsdC1hZ2VudC1pbml0IGluamVjdG9yIHdhaXRp" + + "bmcgZm9yIE9wZW5CYW8uCgpgYGBiYXNoCiMgQ2hlY2sgT3BlbkJhbyBwb2RzCmt1YmVjdGwgZ2V0" + + "IHBvZHMgLW4gdmF1bHQtc3lzdGVtCgojIENoZWNrIGlmIE9wZW5CYW8gbWlncmF0aW9uIGpvYiBy" + + "YW4Ka3ViZWN0bCBnZXQgam9icyAtbiB2YXVsdC1zeXN0ZW0KCiMgQ2hlY2sgT3BlbkJhbyBwb2Qg" + + "bG9ncwprdWJlY3RsIGxvZ3MgLW4gdmF1bHQtc3lzdGVtIG9wZW5iYW8tc2VydmVyLTAgLWMgb3Bl" + + "bmJhbwoKIyBDaGVjayBpbml0IGNvbnRhaW5lciBsb2dzIG9uIHRoZSBzdHVjayBwb2QKa3ViZWN0" + + "bCBsb2dzIC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gLWMgdmF1bHQtYWdlbnQtaW5pdApgYGAK" + + "CiMjIyBGaXhlcwoKMS4gKipPcGVuQmFvIHBvZHMgbm90IHJ1bm5pbmcqKjogQ2hlY2sgdGhlaXIg" + + "ZXZlbnRzIGZvciBpbWFnZSBwdWxsIGlzc3VlcywgcmVzb3VyY2UgaXNzdWVzLCBldGMuCgoyLiAq" + + "Kk9wZW5CYW8gbWlncmF0aW9uIGpvYiBkaWRuJ3QgcnVuKio6IFRoaXMgaGFwcGVucyB3aGVuIGBo" + + "ZWxtZmlsZSBzeW5jYCB3YXMgaW50ZXJydXB0ZWQuIERlc3Ryb3kgYW5kIHJlLXN5bmMgb3BlbmJh" + + "bzoKCiAgIGBgYGJhc2gKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3Ig" + + "bmFtZT1vcGVuYmFvLXNlcnZlciBkZXN0cm95CiAgIGt1YmVjdGwgZGVsZXRlIG5hbWVzcGFjZSB2" + + "YXVsdC1zeXN0ZW0KICAga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIHZhdWx0LXN5c3RlbQogICAj" + + "IFJlLWNyZWF0ZSBwdWxsIHNlY3JldCBpZiBuZWVkZWQKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhl" + + "bG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBzeW5jCiAgIGBgYAoKMy4gKipP" + + "cGVuQmFvIHBvZHMgcnVubmluZyBidXQgbm90IGluaXRpYWxpemVkKio6IENoZWNrIHVuc2VhbCBz" + + "dGF0dXM6CgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZXhlYyAtbiB2YXVsdC1zeXN0ZW0gb3BlbmJh" + + "by1zZXJ2ZXItMCAtYyBvcGVuYmFvIC0tIGJhbyBzdGF0dXMKICAgYGBgCgo0LiAqKmB2YXVsdC1h" + + "Z2VudC1pbml0YCBsb2dzIGBhdXRoL2p3dC9sb2dpbmAgLT4gYDQwMCAuLi4gbm8ga25vd24ga2V5" + + "IHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQgdGhlIHRva2VuIHNpZ25hdHVyZWAqKgogICAoY29tbW9u" + + "IG9uIEFLUywgYW5kIG9uIGFueSBjbHVzdGVyIHdob3NlIE9JREMgaXNzdWVyIHB1Ymxpc2hlcyBh" + + "IHJvdGF0aW5nIG11bHRpLWtleSBKV0tTKToKICAgdGhlIE9wZW5CYW8gYGF1dGgvand0YCBtZXRo" + + "b2Qgd2FzIGNvbmZpZ3VyZWQgd2l0aCBhIHNpbmdsZSBzdGF0aWMgbW91bnRlZCBwdWJsaWMga2V5" + + "CiAgIChgand0X3ZhbGlkYXRpb25fcHVia2V5c2ApIGluc3RlYWQgb2YgdGhlIGlzc3VlcidzIGxp" + + "dmUgSldLUywgc28gaXQgY2Fubm90IHZhbGlkYXRlIHRoZQogICBjbHVzdGVyLXNpZ25lZCBTZXJ2" + + "aWNlQWNjb3VudCB0b2tlbnMgdGhlIHZhdWx0LWFnZW50cyBwcmVzZW50LiBFdmVyeSBzZXJ2aWNl" + + "J3MKICAgYHZhdWx0LWFnZW50LWluaXRgIHRoZW4gbG9vcHMgb24gdGhhdCA0MDAgYW5kIHRoZSBw" + + "b2QgbmV2ZXIgbGVhdmVzIGBJbml0OjAvMWAuIFRoaXMgaXMgdGhlCiAgIGJlaGF2aW9yIG9mIHRo" + + "ZSBiYXNlIGRlZmF1bHQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxl" + + "ZDogZmFsc2VgOyB0aGUKICAgbWlncmF0aW9uIGxvZyBzaG93cyBgT0lEQyBpc3N1ZXIgZGlzY292" + + "ZXJ5IGlzIGRpc2FibGVkLiBVc2luZyBTZXJ2aWNlQWNjb3VudCBpc3N1ZXIgYW5kCiAgIG1vdW50" + + "ZWQgcHVibGljIGtleSBmYWxsYmFja2AuIEVuYWJsZSBpc3N1ZXIgZGlzY292ZXJ5IHNvIHRoZSBt" + + "aWdyYXRpb24gdXNlcyB0aGUgbGl2ZSBKV0tTLAogICB0aGVuIHJlLXJ1biBpdDoKCiAgIGBgYGJh" + + "c2gKICAgIyBJbiB5b3VyIGVudiB2YWx1ZXMgKGUuZy4gZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwp" + + "LCBzZXQ6CiAgICMgICBvcGVuYmFvOgogICAjICAgICBtaWdyYXRpb25zOgogICAjICAgICAgIGlz" + + "c3VlckRpc2NvdmVyeToKICAgIyAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAga3ViZWN0bCBkZWxl" + + "dGUgam9iIC1uIHZhdWx0LXN5c3RlbSBvcGVuYmFvLXNlcnZlci1taWdyYXRpb25zCiAgIEhFTE1G" + + "SUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9b3BlbmJhby1zZXJ2ZXIgc3lu" + + "YwogICBgYGAKCiAgIFRoZSBtaWdyYXRpb24gbG9nIHNob3VsZCB0aGVuIHNob3cgYFJlY2VpdmVk" + + "IGRpc2NvdmVyeSBkb2N1bWVudCBmcm9tCiAgIC4uLi8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmln" + + "dXJhdGlvbmAgYW5kIGBGaW5hbCBPcGVuQmFvIEpXVCBKV0tTIFVSTCBzZXQgdG86CiAgIC4uLi9v" + + "cGVuaWQvdjEvandrc2AsIGFuZCB0aGUgc2VydmljZSBwb2RzIGF1dGhlbnRpY2F0ZSBhbmQgcmVh" + + "Y2ggUmVhZHkgd2l0aGluIH4xIG1pbi4KICAgQUtTIGNsdXN0ZXJzIHdpdGggdGhlIGNsdXN0ZXIg" + + "T0lEQyBpc3N1ZXIgZW5hYmxlZCAodGhlIGBha3MtY2x1c3RlcmAgZGVmYXVsdCkgYWx3YXlzIG5l" + + "ZWQKICAgdGhpcyBiZWNhdXNlIHRoZSBzdGF0aWMtcHVia2V5IGZhbGxiYWNrIGNhbm5vdCBtYXRj" + + "aCB0aGUgaXNzdWVyJ3Mgcm90YXRpbmcgc2lnbmluZyBrZXlzLgoKIyMgRmFpbHVyZTogT09NS2ls" + + "bGVkIG9uIENhc3NhbmRyYQoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVB" + + "RFkgICBTVEFUVVMgICAgUkVTVEFSVFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIE9PTUtp" + + "bGxlZCAgMyAgICAgICAgIDEwbQpgYGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKa3ViZWN0bCBk" + + "ZXNjcmliZSBwb2QgLW4gY2Fzc2FuZHJhLXN5c3RlbSBjYXNzYW5kcmEtMCB8IGdyZXAgLUEzICJM" + + "YXN0IFN0YXRlIgpgYGAKCiMjIyBGaXgKCk92ZXJyaWRlIENhc3NhbmRyYSByZXNvdXJjZXMgdmlh" + + "IGhlbG1maWxlIHZhbHVlcy4gU2VlIEV4YW1wbGUgMSBpbgpbZXhhbXBsZXMubWRdKC4uL2V4YW1w" + + "bGVzLm1kKS4KCmBgYHlhbWwKLSBjYXNzYW5kcmE6CiAgICByZXNvdXJjZXM6CiAgICAgIGxpbWl0" + + "czoKICAgICAgICBjcHU6ICI4IgogICAgICAgIG1lbW9yeTogODE5Mk1pCiAgICAgIHJlcXVlc3Rz" + + "OgogICAgICAgIGNwdTogIjIiCiAgICAgICAgbWVtb3J5OiA0MDk2TWkKYGBgCgpOb3RlOiBgcmVz" + + "b3VyY2VQcmVzZXRgIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIE5WQ0YgY2Fzc2FuZHJhIHdyYXBw" + + "ZXIgY2hhcnQuIFVzZSBleHBsaWNpdCBgcmVzb3VyY2VzYC4KCiMjIEZhaWx1cmU6IFBvZHMgU3R1" + + "Y2sgaW4gUGVuZGluZwoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkg" + + "ICBTVEFUVVMgICAgUkVTVEFSVFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIFBlbmRpbmcg" + + "ICAwICAgICAgICAgIDEwbQpgYGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKIyBDaGVjayBldmVu" + + "dHMgZm9yIHNjaGVkdWxpbmcgZmFpbHVyZXMKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVz" + + "cGFjZT4gPHBvZC1uYW1lPgoKIyBDb21tb24gY2F1c2VzOgojIC0gIjAvMTIgbm9kZXMgYXJlIGF2" + + "YWlsYWJsZTogMTIgbm9kZShzKSBkaWRuJ3QgbWF0Y2ggUG9kJ3Mgbm9kZSBhZmZpbml0eSIKIyAt" + + "ICIwLzEyIG5vZGVzIGFyZSBhdmFpbGFibGU6IDEyIEluc3VmZmljaWVudCBtZW1vcnkiCiMgLSAi" + + "cGVyc2lzdGVudHZvbHVtZWNsYWltIG5vdCBmb3VuZCIKYGBgCgojIyMgRml4ZXMKCjEuICoqTm9k" + + "ZSBzZWxlY3RvciBtaXNtYXRjaCoqOiBDaGVjayBgbm9kZVNlbGVjdG9yc2AgaW4gZW52aXJvbm1l" + + "bnQgZmlsZQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBub2RlcyAtLXNob3ctbGFiZWxzIHwg" + + "Z3JlcCBudmNmCiAgIGBgYAoKMi4gKipTdG9yYWdlIGNsYXNzIG5vdCBmb3VuZCoqOiBDaGVjayBz" + + "dG9yYWdlIGNsYXNzIGV4aXN0cwoKICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBzdG9yYWdlY2xh" + + "c3MKICAgYGBgCgozLiAqKkluc3VmZmljaWVudCByZXNvdXJjZXMqKjogQ2hlY2sgbm9kZSBjYXBh" + + "Y2l0eQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGRlc2NyaWJlIG5vZGUgPG5vZGUtbmFtZT4gfCBn" + + "cmVwIC1BNSAiQWxsb2NhdGVkIHJlc291cmNlcyIKICAgYGBgCgojIyBGYWlsdXJlOiBIZWxtIFJl" + + "bGVhc2UgaW4gRmFpbGVkIFN0YXRlCgojIyMgU3ltcHRvbXMKCmBgYGJhc2gKaGVsbSBsaXN0IC1B" + + "CiMgU2hvd3MgcmVsZWFzZSB3aXRoIFNUQVRVUzogZmFpbGVkCmBgYAoKUmUtcnVubmluZyBgaGVs" + + "bWZpbGUgc3luY2AgYXBwZWFycyB0byBzdWNjZWVkIGJ1dCBzZXJ2aWNlcyBkb24ndCB3b3JrICht" + + "aWdyYXRpb25zIHNraXBwZWQpLgoKIyMjIERpYWdub3NpcwoKYGBgYmFzaApoZWxtIGhpc3Rvcnkg" + + "PHJlbGVhc2UtbmFtZT4gLW4gPG5hbWVzcGFjZT4KYGBgCgojIyMgRml4CgpNdXN0IGRlc3Ryb3kg" + + "dGhlIGZhaWxlZCByZWxlYXNlIGFuZCByZS1zeW5jIChub3QganVzdCBhcHBseSk6CgpgYGBiYXNo" + + "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9PHJlbGVhc2U+IGRl" + + "c3Ryb3kKIyBJZiBuYW1lc3BhY2UgbmVlZHMgY2xlYW51cDoKa3ViZWN0bCBkZWxldGUgbmFtZXNw" + + "YWNlIDxuYW1lc3BhY2U+Cmt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSA8bmFtZXNwYWNlPgojIFJl" + + "LWNyZWF0ZSBwdWxsIHNlY3JldCBpZiBuZWVkZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxl" + + "IC0tc2VsZWN0b3IgbmFtZT08cmVsZWFzZT4gc3luYwpgYGAKCiMjIEZhaWx1cmU6IEFjY291bnQg" + + "Qm9vdHN0cmFwIEpvYiBGYWlsZWQKCiMjIyBTeW1wdG9tcwoKU2VydmljZXMgZGVwbG95IGJ1dCBm" + + "dW5jdGlvbnMgY2FuJ3QgYmUgY3JlYXRlZC4gRXZlbnRzIHNob3cgYm9vdHN0cmFwIGpvYiBmYWls" + + "dXJlLgoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIGJvb3RzdHJhcCBqb2Igc3RhdHVz" + + "Cmt1YmVjdGwgZ2V0IGpvYnMgLW4gbnZjZgoKIyBHZXQgbG9ncyAoam9iIGF1dG8tZGVsZXRlcyBh" + + "ZnRlciB+NSBtaW51dGVzKQprdWJlY3RsIGxvZ3Mgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0" + + "cmFwIC1uIG52Y2YKCiMgQ2hlY2sgQVBJIGxvZ3MKa3ViZWN0bCBsb2dzIC1uIG52Y2YgLWwgYXBw" + + "Lmt1YmVybmV0ZXMuaW8vbmFtZT1udmNmLWFwaSAtLXRhaWw9MTAwCmBgYAoKIyMjIENvbW1vbiBD" + + "YXVzZXMKCjEuICoqV3JvbmcgYmFzZTY0IGNyZWRlbnRpYWxzKio6IENyZWRlbnRpYWxzIGluIGBz" + + "ZWNyZXRzLzxlbnY+LXNlY3JldHMueWFtbGAgbXVzdCBiZSBgJG9hdXRodG9rZW46QVBJX0tFWWAg" + + "YmFzZTY0LWVuY29kZWQsIG5vdCBqdXN0IHRoZSBBUEkga2V5CgogICBgYGBiYXNoCiAgICMgVmVy" + + "aWZ5IHlvdXIgZW5jb2RlZCBjcmVkZW50aWFsCiAgIGVjaG8gJ1lPVVJfQkFTRTY0X1NUUklORycg" + + "fCBiYXNlNjQgLWQKICAgIyBTaG91bGQgb3V0cHV0OiAkb2F1dGh0b2tlbjpudmFwaS14eHh4eAog" + + "ICBgYGAKCjIuICoqUmVnaXN0cnkgdW5yZWFjaGFibGUqKjogQVBJIGNhbid0IHJlYWNoIHRoZSBy" + + "ZWdpc3RyeSBzcGVjaWZpZWQgaW4gYGFjY291bnRCb290c3RyYXAucmVnaXN0cnlDcmVkZW50aWFs" + + "c2AKCiMjIyBGaXgKCkZpeCBjcmVkZW50aWFscyBpbiBzZWNyZXRzIGZpbGUsIHRoZW4gcmVjb3Zl" + + "ciBzZXJ2aWNlcyB3aXRob3V0IGRlc3Ryb3lpbmcgZGVwZW5kZW5jaWVzOgoKYGBgYmFzaApIRUxN" + "RklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2Vz" + - "IHN5bmMKYGBgCgojIyBGYWlsdXJlOiBOVkNBIENsZWFudXAgU3R1Y2sgKEZpbmFsaXplcnMpCgoj" + - "IyMgU3ltcHRvbXMKCkNvbXB1dGUtcGxhbmUgY2xlYW51cCBoYW5ncy4gTmFtZXNwYWNlcwpzdHVj" + - "ayBpbiBgVGVybWluYXRpbmdgOgoKYGBgYmFzaAprdWJlY3RsIGdldCBucwojIG52Y2Etb3BlcmF0" + - "b3IgICAgVGVybWluYXRpbmcgICAxMG0KIyBudmNmLWJhY2tlbmQgICAgIFRlcm1pbmF0aW5nICAg" + - "MTBtCmBgYAoKIyMjIEZpeAoKUnVuIHRoaXMgb25seSBhZ2FpbnN0IHRoZSBjb21wdXRlIGNvbnRl" + - "eHQsIGFmdGVyIHRoZSBub3JtYWwgY29tcHV0ZS1wbGFuZQp0ZWFyZG93biBoYXMgZmFpbGVkLiBS" + - "ZW1vdmUgZmluYWxpemVycyBmcm9tIE5WQ0ZCYWNrZW5kIGN1c3RvbSByZXNvdXJjZXMgYW5kCmZv" + - "cmNlLWRlbGV0ZSBzdHVjayBuYW1lc3BhY2VzOgoKYGBgYmFzaApleHBvcnQgQ09NUFVURV9DT05U" + - "RVhUPTxjb21wdXRlLXBsYW5lLWNvbnRleHQ+CgojIFJlbW92ZSBmaW5hbGl6ZXJzIGZyb20gTlZD" + - "RkJhY2tlbmQgcmVzb3VyY2VzCmt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhUIiBn" + - "ZXQgbnZjZmJhY2tlbmRzIC1BIC1vIGpzb24gfCBcCiAganEgJy5pdGVtc1tdIHwgLm1ldGFkYXRh" + - "Lm5hbWVzcGFjZSArICIvIiArIC5tZXRhZGF0YS5uYW1lJyAtciB8IFwKICB4YXJncyAtSXt9IHNo" + - "IC1jICdjb250ZXh0PSIkMSI7IG5zPSIkezIlJS8qfSI7IG5hbWU9IiR7MiMjKi99Ijsga3ViZWN0" + - "bCAtLWNvbnRleHQgIiRjb250ZXh0IiBwYXRjaCBudmNmYmFja2VuZCAiJG5hbWUiIC1uICIkbnMi" + - "IC0tdHlwZT1tZXJnZSAtcCAie1wibWV0YWRhdGFcIjp7XCJmaW5hbGl6ZXJzXCI6W119fSInIF8g" + - "IiRDT01QVVRFX0NPTlRFWFQiIHt9CgojIEZvcmNlLWRlbGV0ZSBzdHVjayBuYW1lc3BhY2VzIGJ5" + - "IGNsZWFyaW5nIHRoZWlyIGZpbmFsaXplcnMKZm9yIG5zIGluIG52Y2Etb3BlcmF0b3IgbnZjZi1i" + - "YWNrZW5kOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhUIiBnZXQgbmFt" + - "ZXNwYWNlICIkbnMiIC1vIGpzb24gMj4vZGV2L251bGwgfCBcCiAgICBqcSAnLnNwZWMuZmluYWxp" + - "emVycyA9IFtdJyB8IFwKICAgIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhUIiBy" + - "ZXBsYWNlIFwKICAgICAgLS1yYXcgIi9hcGkvdjEvbmFtZXNwYWNlcy8kbnMvZmluYWxpemUiIC1m" + - "IC0gMj4vZGV2L251bGwKZG9uZQpgYGAKCiMjIEZhaWx1cmU6IE5WQ0EgT3BlcmF0b3IgTWlzc2lu" + - "ZyBvciBOb3QgUmVhZHkKCiMjIyBTeW1wdG9tcwoKQWZ0ZXIgY29tcHV0ZS1wbGFuZSBpbnN0YWxs" + - "IGNvbXBsZXRlcywgbm8gYG52Y2Etb3BlcmF0b3JgIERlcGxveW1lbnQgZXhpc3RzLCBvcgppdCBl" + - "eGlzdHMgYnV0IHBvZHMgYXJlIG5vdCByZWFkeToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQg" + - "PGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IGRlcGxveW1lbnQgbnZjYS1vcGVyYXRvciBcCiAg" + - "LW4gbnZjYS1vcGVyYXRvcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0" + - "PiBnZXQgcG9kcyAtbiBudmNhLW9wZXJhdG9yCmBgYAoKIyMjIERpYWdub3NpcyBhbmQgRml4ZXMK" + - "CkZpcnN0IGlkZW50aWZ5IHdoZXRoZXIgdGhlIGluc3RhbGxhdGlvbiB1c2VkIHRoZSBIZWxtZmls" + - "ZSB2YWx1ZXMgZmxvdyBvciB0aGUKQ0xJIHByb2ZpbGUgZmxvdy4gUmUtcnVuIG9ubHkgdGhhdCBm" + - "bG93J3MgcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24gc3RlcHMKZnJvbSBbU3BsaXQgQ29t" + - "cHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4g" + - "RG8gbm90CnN1YnN0aXR1dGUgb25lIGhhbmRvZmYgZm9yIHRoZSBvdGhlci4KCklmIGluc3RhbGxh" + - "dGlvbiBzdWNjZWVkcyBidXQgcG9kcyBzdGlsbCBmYWlsLCBpbnNwZWN0IHRoZSBjb21wdXRlIGNv" + - "bnRleHQ6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+" + - "IGRlc2NyaWJlIGRlcGxveSBudmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yCmt1YmVj" + - "dGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGxvZ3MgZGVwbG95bWVudC9udmNh" + - "LW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yIC0tdGFpbD0yMDAKa3ViZWN0bCAtLWNvbnRl" + - "eHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG52Y2ZiYWNrZW5kIC1uIG52Y2Etb3BlcmF0" + - "b3IKYGBgCgpGb3IgcHJpdmF0ZSByZWdpc3RyeSBmYWlsdXJlcywgdmVyaWZ5IHRoYXQgdGhlIHB1" + - "bGwgc2VjcmV0IGV4aXN0cyBpbgpgbnZjYS1vcGVyYXRvcmAuIFRoZSBjaGFydCBhbmQgb3BlcmF0" + - "b3IgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWA7IGRvIG5vdCB1c2UgYQpicm9hZGVyIG1hbnVh" + - "bCBuYW1lc3BhY2UgbG9vcC4gU2VlCltwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0cy5tZCNj" + - "b21wdXRlLXBsYW5lLXNlY3JldCkuCgojIyBGYWlsdXJlOiBHYXRld2F5IEVuZHBvaW50IENoYW5n" + - "ZWQKCiMjIyBTeW1wdG9tcwoKUmVxdWVzdHMgdGhyb3VnaCB0aGUgY29uZmlndXJlZCByb3V0ZSBk" + - "b21haW4gZmFpbCBhZnRlciB0aGUgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxhbmNlciBpcyByZXBs" + - "YWNlZC4gVGhlIEdhdGV3YXkgcmVwb3J0cyBhIG5ldyBlbmRwb2ludC4KCiMjIyBEaWFnbm9zaXMK" + - "CmBgYGJhc2gKR0FURVdBWV9BRERSPSQoa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + - "Y29udGV4dD4gZ2V0IGdhdGV3YXkgXAogIG52Y2YtZ2F0ZXdheSAtbiBlbnZveS1nYXRld2F5IFwK" + - "ICAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScpCnRlc3QgLW4gIiRH" + - "QVRFV0FZX0FERFIiCmRpZyArc2hvcnQgImFwaS48ZG9tYWluPiIKY3VybCAtSCAiSG9zdDogYXBp" + - "Ljxkb21haW4+IiAiaHR0cDovLyRHQVRFV0FZX0FERFIvaGVhbHRoIgoKIyBDaGVjayBkaXJlY3Qg" + - "YWRkcmVzcyBmaWVsZHMgdXNlZCBieSBhIHNwbGl0IGRlcGxveW1lbnQKZ3JlcCBudmNmTmF0c1Nl" + - "cnZpY2VVUkwgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvZW52aXJvbm1lbnRzLzxlbnY+Lnlh" + - "bWwKZ3JlcCAtRSAnaWNtc1NlcnZpY2V8cmV2YWxTZXJ2aWNlfG5hdHMnIFwKICBkZXBsb3kvc3Rh" + - "Y2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMvPGVudj4ueWFtbApgYGAKCiMjIyBG" + - "aXgKCktlZXAgYGdsb2JhbC5kb21haW5gLCByb3V0ZSBob3N0bmFtZXMsIGFuZCBIb3N0IG92ZXJy" + - "aWRlcyB1bmNoYW5nZWQuIFVwZGF0ZSBETlMKb3IgdGhlIGRpcmVjdCBjbGllbnQgZGVzdGluYXRp" + - "b24uIEZvciBzcGxpdCBkZXBsb3ltZW50cywgdXBkYXRlIG9ubHkgZGlyZWN0CkdhdGV3YXktYWRk" + - "cmVzcyBmaWVsZHMgYW5kIHJlZnJlc2ggcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24gdGhy" + - "b3VnaCB0aGUKc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLiBTZWUKW0V4YW1wbGUgNF0oLi4vZXhhbXBs" + - "ZXMubWQjZXhhbXBsZS00LXJlY292ZXItZnJvbS1hLWdhdGV3YXktZW5kcG9pbnQtY2hhbmdlKS4K" + - "CiMjIFVzZWZ1bCBOYW1lc3BhY2UtdG8tU2VydmljZSBNYXBwaW5nCgpRdWljayByZWZlcmVuY2Ug" + - "Zm9yIHdoaWNoIHNlcnZpY2VzIHJ1biBpbiB3aGljaCBuYW1lc3BhY2U6Cgp8IE5hbWVzcGFjZSB8" + - "IFNlcnZpY2VzIHwKfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgbmF0cy1zeXN0ZW0gfCBuYXRz" + - "IHwKfCBjYXNzYW5kcmEtc3lzdGVtIHwgY2Fzc2FuZHJhIHwKfCB2YXVsdC1zeXN0ZW0gfCBvcGVu" + - "YmFvLXNlcnZlciB8CnwgbnZjZiB8IGFwaSwgaW52b2NhdGlvbi1zZXJ2aWNlLCBncnBjLXByb3h5" + - "LCBub3Rhcnktc2VydmljZSwgcmV2YWwsIGxsbS1yZXF1ZXN0LXJvdXRlciwgbGxtLWFwaS1nYXRl" + - "d2F5IHwKfCBhcGkta2V5cyB8IGFwaS1rZXlzLCBhZG1pbi1pc3N1ZXItcHJveHkgfAp8IGVzcyB8" + - "IGVzcy1hcGkgfAp8IHNpcyB8IHNpcyB8CnwgZW52b3ktZ2F0ZXdheS1zeXN0ZW0gfCBlbnZveSBn" + - "YXRld2F5IChpbmdyZXNzIGNvbnRyb2xsZXIpIHwKfCBlbnZveS1nYXRld2F5IHwgZ2F0ZXdheSBy" + - "ZXNvdXJjZSArIHJvdXRlcyB8ClBLBwi1enA7tTAAALUwAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAA" + - "AAAAAEQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL2hl" + - "bG1maWxlLXN0cnVjdHVyZS5tZFVUBQABAKbOEiMgSGVsbWZpbGUgU3RydWN0dXJlIFJlZmVyZW5j" + - "ZQoKIyMgRGlyZWN0b3J5IExheW91dAoKYGBgYmFzaApudmNmLXNlbGYtbWFuYWdlZC1zdGFjay8K" + - "fC0tIGhlbG1maWxlLmQvCnwgICB8LS0gMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsICAjIE5B" + - "VFMsIENhc3NhbmRyYSwgT3BlbkJhbwp8ICAgfC0tIDAyLWNvcmUueWFtbC5nb3RtcGwgICAgICAg" + - "ICAgIyBOVkNGIHNlcnZpY2VzICsgaW5ncmVzcwp8ICAgYC0tIDAzLW9ic2VydmFiaWxpdHkueWFt" + - "bC5nb3RtcGwgIyBPYnNlcnZhYmlsaXR5IHN0YWNrIChvcHRpb25hbCkKfC0tIGVudmlyb25tZW50" + - "cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAgICAgICAgICAgICMgRGVmYXVsdCB2YWx1ZXMg" + - "KGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVudi1uYW1lPi55YW1sICAgICAgICAgICAgICAj" + - "IFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKfC0tIHNlY3JldHMvCnwgICBgLS0gPGVudi1uYW1l" + - "Pi1zZWNyZXRzLnlhbWwgICAgICAjIFNlbnNpdGl2ZSB2YWx1ZXMgKHJlZ2lzdHJ5IGNyZWRzLCBw" + - "YXNzd29yZHMpCmAtLSBnbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgICAjIEdvIHRlbXBs" + - "YXRlIHRoYXQgY29uc3RydWN0cyBwZXItY2hhcnQgdmFsdWVzCgpudmNmLWNvbXB1dGUtcGxhbmUt" + - "c3RhY2svCnwtLSBoZWxtZmlsZS5kLwp8ICAgfC0tIDAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1w" + - "bCAgIyBDb21wdXRlIHBsYW5lIGRlcGVuZGVuY3kgY29tcG9uZW50cwp8ICAgYC0tIDAyLW52Y2Eu" + - "eWFtbC5nb3RtcGwgICAgICAgICAgIyBudmNhLW9wZXJhdG9yIGNoYXJ0IGFuZCBudmNhIGNvbmZp" + - "Z3VyYXRpb24KfC0tIGVudmlyb25tZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAgICAg" + - "ICAgICAgICMgRGVmYXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVudi1u" + - "YW1lPi55YW1sICAgICAgICAgICAgICAjIFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKYC0tIGds" + - "b2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAgICMgR28gdGVtcGxhdGUgdGhhdCBjb25zdHJ1" + - "Y3RzIHBlci1jaGFydCB2YWx1ZXMKYGBgCgpUaGVzZSBzdGFja3MgaGF2ZSBzZXBhcmF0ZSBlbnZp" + - "cm9ubWVudHMgYW5kIGNsdXN0ZXIgY29udGV4dHMuIFRoZSBIZWxtZmlsZQp2YWx1ZXMgZmxvdyBh" + - "dXRob3JzIGJvdGggZW52aXJvbm1lbnQgZmlsZXMuIFRoZSBDTEkgcHJvZmlsZSBmbG93IGluc3Rl" + - "YWQgdXNlcwp0aGUgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBsYW5lIHByb2ZpbGUgYXMgaXRzIGVu" + - "ZHBvaW50IHNvdXJjZS4gRG8gbm90IG1peCB0aGUKaGFuZG9mZnMuIFNlZSBbU3BsaXQgQ29tcHV0" + - "ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4KCiMj" + - "IEdvdG1wbCBGaWxlcyBhbmQgVGhlaXIgUmVsZWFzZXMKCiMjIyAwMS1kZXBlbmRlbmNpZXMueWFt" + - "bC5nb3RtcGwKCnwgUmVsZWFzZSB8IENoYXJ0IHwgTmFtZXNwYWNlIHwgTm90ZXMgfAp8LS0tLS0t" + - "LS0tfC0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLXwKfCBuYXRzIHwgaGVsbS1udmNmLW5hdHMg" + - "fCBuYXRzLXN5c3RlbSB8IE1lc3NhZ2luZyB8Cnwgb3BlbmJhby1zZXJ2ZXIgfCBoZWxtLW52Y2Yt" + - "b3BlbmJhby1zZXJ2ZXIgfCB2YXVsdC1zeXN0ZW0gfCBTZWNyZXRzIG1hbmFnZW1lbnQsIGRlcGVu" + - "ZHMgb24gbmF0cyB8CnwgY2Fzc2FuZHJhIHwgaGVsbS1udmNmLWNhc3NhbmRyYSB8IGNhc3NhbmRy" + - "YS1zeXN0ZW0gfCBEYXRhYmFzZSB8CgpVc2VzIGA8PDogKmRlcGVuZGVuY3lgIHRlbXBsYXRlIGlu" + - "aGVyaXRhbmNlIHdpdGggYHJlbGVhc2UtZ3JvdXA6IGRlcGVuZGVuY2llc2AgbGFiZWwuCgojIyMg" + - "MDItY29yZS55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBMYWJl" + - "bCB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IGFwaS1rZXlzIHwg" + - "aGVsbS1udmNmLWFwaS1rZXlzIHwgYXBpLWtleXMgfCBzZXJ2aWNlcyB8Cnwgc2lzIHwgaGVsbS1u" + - "dmNmLXNpcyB8IHNpcyB8IHNlcnZpY2VzIHwKfCBhcGkgfCBoZWxtLW52Y2YtYXBpIHwgbnZjZiB8" + - "IHNlcnZpY2VzIHwKfCBpbnZvY2F0aW9uLXNlcnZpY2UgfCBoZWxtLW52Y2YtaW52b2NhdGlvbi1z" + - "ZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBncnBjLXByb3h5IHwgaGVsbS1udmNmLWdycGMt" + - "cHJveHkgfCBudmNmIHwgc2VydmljZXMgfAp8IGVzcy1hcGkgfCBoZWxtLW52Y2YtZXNzLWFwaSB8" + - "IGVzcyB8IHNlcnZpY2VzIHwKfCBub3Rhcnktc2VydmljZSB8IGhlbG0tbnZjZi1ub3Rhcnktc2Vy" + - "dmljZSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgcmV2YWwgfCBoZWxtLXJldmFsIHwgbnZjZiB8IHNl" + - "cnZpY2VzIHwKfCBsbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNmL2hlbG0tbnZjZi1sbG0tcmVxdWVz" + - "dC1yb3V0ZXIgfCBudmNmIHwgc2VydmljZXMgfAp8IGxsbS1hcGktZ2F0ZXdheSB8IG52Y2YvaGVs" + - "bS1udmNmLWxsbS1hcGktZ2F0ZXdheSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgYWRtaW4taXNzdWVy" + - "LXByb3h5IHwgaGVsbS1hZG1pbi10b2tlbi1pc3N1ZXItcHJveHkgfCBhcGkta2V5cyB8IChubyBy" + - "ZWxlYXNlLWdyb3VwIGxhYmVsKSB8CnwgaW5ncmVzcyB8IG52Y2YtZ2F0ZXdheS1yb3V0ZXMgfCBl" + - "bnZveS1nYXRld2F5LXN5c3RlbSB8IGluZ3Jlc3MgfAoKTW9zdCBzZXJ2aWNlcyB1c2UgYGluaGVy" + - "aXQ6IFt7dGVtcGxhdGU6IHNlcnZpY2V9XWAuIExMTSByZWxlYXNlcyB1c2UgT0NJIGNoYXJ0cyBm" + - "cm9tIHRoZSBgbnZjZmAgcmVwb3NpdG9yeSB3aXRoIHN0YW5kYWxvbmUgYHZhbHVlczogWy4uL2ds" + - "b2JhbC55YW1sLmdvdG1wbF1gIGJsb2NrczsgdGhleSBhcmUgZ2F0ZWQgb24gYGFkZG9ucy5sbG0u" + - "ZW5hYmxlZGAuIGBhZG1pbi1pc3N1ZXItcHJveHlgIGFuZCBgaW5ncmVzc2AgaGF2ZSBzdGFuZGFs" + - "b25lIGB2YWx1ZXM6YCBibG9ja3MuCgojIyMgMDMtb2JzZXJ2YWJpbGl0eS55YW1sLmdvdG1wbAoK" + - "fCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBMYWJlbCB8CnwtLS0tLS0tLS18LS0tLS0t" + - "LXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IChvYnNlcnZhYmlsaXR5IHJlbGVhc2VzKSB8ICh2YXJp" + - "b3VzKSB8IG9ic2VydmFiaWxpdHkgfCBvYnNlcnZhYmlsaXR5IHwKCkdhdGVkIG9uIG9ic2VydmFi" + - "aWxpdHktc3BlY2lmaWMgZmxhZ3MgaW4gdGhlIGVudmlyb25tZW50IGZpbGUuIFNraXBwZWQgaWYg" + - "ZGlzYWJsZWQuCgojIyBUZW1wbGF0ZSBJbmhlcml0YW5jZQoKIyMjIGA8PDogKmRlcGVuZGVuY3lg" + - "IChZQU1MIG1lcmdlKQoKVXNlZCBpbiBgMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsYC4gTWVy" + - "Z2VzIHRoZSB0ZW1wbGF0ZSdzIHByb3BlcnRpZXMgaW50byB0aGUgcmVsZWFzZS4KCioqR290Y2hh" + - "Kio6IFlBTUwgbWVyZ2UgcmVwbGFjZXMgbGlzdHMuIElmIHlvdSBhZGQgYSBgdmFsdWVzOmAga2V5" + - "IHRvIHRoZSByZWxlYXNlLCBpdCAqKnJlcGxhY2VzKiogdGhlIHRlbXBsYXRlJ3MgYHZhbHVlczpg" + - "IGxpc3QgZW50aXJlbHkuIFlvdSBtdXN0IHJlLWluY2x1ZGUgYWxsIHRlbXBsYXRlIHZhbHVlczoK" + - "CkluIHRoZSB0ZW1wbGF0ZSBiZWxvdywgYDxwcml2YXRlLXZhbHVlcz5gIHJlZmVycyB0byB0aGUg" + - "YHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxlIHN0YWNrIHJvb3QuCgpgYGB5YW1s" + - "CiMgVGVtcGxhdGUgZGVmaW5lczoKdGVtcGxhdGVzOgogIGRlcGVuZGVuY3k6ICZkZXBlbmRlbmN5" + - "CiAgICBjaGFydDogbnZjZi9oZWxtLW52Y2Yte3sgLlJlbGVhc2UuTmFtZSB9fQogICAgdmFsdWVz" + - "OgogICAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAgICAtIC4uLzxwcml2YXRlLXZhbHVl" + - "cz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCgojIFdoZW4g" + - "b3ZlcnJpZGluZywgTVVTVCByZS1pbmNsdWRlIGJvdGg6Ci0gbmFtZTogY2Fzc2FuZHJhCiAgPDw6" + - "ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwgICAgICAg" + - "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNdXN0IHJlLWluY2x1ZGUK" + - "ICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9" + - "fS1zZWNyZXRzLnlhbWwgICAjIE11c3QgcmUtaW5jbHVkZQogICAgLSBjYXNzYW5kcmE6ICAgICAg" + - "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgWW91" + - "ciBvdmVycmlkZQogICAgICAgIHJlc291cmNlczoKICAgICAgICAgIGxpbWl0czoKICAgICAgICAg" + - "ICAgbWVtb3J5OiA4MTkyTWkKYGBgCgojIyMgYGluaGVyaXRgIChIZWxtZmlsZSBuYXRpdmUpCgpV" + - "c2VkIGluIGAwMi1jb3JlLnlhbWwuZ290bXBsYC4gSGVsbWZpbGUncyBuYXRpdmUgaW5oZXJpdGFu" + - "Y2UgbWVjaGFuaXNtLgoKYGBgeWFtbAotIG5hbWU6IGFwaQogIHZlcnNpb246IDEuNi4wCiAgbmFt" + - "ZXNwYWNlOiBudmNmCiAgaW5oZXJpdDoKICAgIC0gdGVtcGxhdGU6IHNlcnZpY2UKYGBgCgpXaGVu" + - "IGFkZGluZyBgdmFsdWVzOmAgdG8gYW4gaW5oZXJpdGVkIHJlbGVhc2UsIHlvdSBhbHNvIG5lZWQg" + - "dG8gcmUtaW5jbHVkZSB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgZmlsZXMgc2luY2UgYHZhbHVlc2Ag" + - "aXMgYSBsaXN0IHRoYXQgZ2V0cyByZXBsYWNlZC4KCiMjIFZhbHVlcyBQcmVjZWRlbmNlCgpGcm9t" + - "IGxvd2VzdCB0byBoaWdoZXN0IHByaW9yaXR5OgoKMS4gYGVudmlyb25tZW50cy9iYXNlLnlhbWxg" + - "IC0tIGRlZmF1bHRzIHNoYXJlZCBhY3Jvc3MgYWxsIGVudmlyb25tZW50cwoyLiBgZW52aXJvbm1l" + - "bnRzLzxlbnY+LnlhbWxgIC0tIHBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKMy4gYGdsb2JhbC55" + - "YW1sLmdvdG1wbGAgLS0gR28gdGVtcGxhdGUgcHJvY2Vzc2luZyAoY29uc3RydWN0cyBjaGFydC1z" + - "cGVjaWZpYyBzdHJ1Y3R1cmUpCjQuIGA8cHJpdmF0ZS12YWx1ZXM+LzxlbnY+LXNlY3JldHMueWFt" + - "bGAgLS0gc2Vuc2l0aXZlIHZhbHVlcwo1LiBJbmxpbmUgYHZhbHVlczpgIGJsb2NrcyBvbiByZWxl" + - "YXNlcyAtLSBoaWdoZXN0IHByZWNlZGVuY2UKCiMjIFdoYXQgZ2xvYmFsLnlhbWwuZ290bXBsIFBh" + - "c3NlcyBUaHJvdWdoCgpgZ2xvYmFsLnlhbWwuZ290bXBsYCByZWFkcyBmcm9tIGAuVmFsdWVzYCAo" + - "dGhlIG1lcmdlZCBlbnZpcm9ubWVudCArIGVudi1zcGVjaWZpYyBZQU1MKSBhbmQgY29uc3RydWN0" + - "cyBjaGFydC1zcGVjaWZpYyB2YWx1ZXMuIEl0IG9ubHkgcGFzc2VzIHRocm91Z2gga2V5cyBpdCBl" + - "eHBsaWNpdGx5IHJlZmVyZW5jZXM6CgojIyMgQ2Fzc2FuZHJhCgotIGBjYXNzYW5kcmEucmVwbGlj" + - "YUNvdW50YAotIGBjYXNzYW5kcmEuaW1hZ2UuKmAgKHJlZ2lzdHJ5LCByZXBvc2l0b3J5KQotIGBj" + - "YXNzYW5kcmEubWlncmF0aW9ucy5pbWFnZS4qYAotIGBjYXNzYW5kcmEucGVyc2lzdGVuY2Uuc2l6" + - "ZWAKLSBgY2Fzc2FuZHJhLm5vZGVTZWxlY3RvcmAgKGlmIGBnbG9iYWwubm9kZVNlbGVjdG9ycy5l" + - "bmFibGVkYCkKLSBgY2Fzc2FuZHJhLmdsb2JhbC5kZWZhdWx0U3RvcmFnZUNsYXNzYAoKIyMjIE5B" + - "VFMKCi0gYG5hdHMuY29udGFpbmVyLmltYWdlLipgCi0gYG5hdHMucmVsb2FkZXIuaW1hZ2UuKmAK" + - "LSBgbmF0cy5uYXRzQm94LmNvbnRhaW5lci5pbWFnZS4qYAotIGBuYXRzLmNvbmZpZy5qZXRzdHJl" + - "YW0uZmlsZVN0b3JlLnB2Yy5zdG9yYWdlQ2xhc3NOYW1lYAotIGBuYXRzLnBvZFRlbXBsYXRlLm1l" + - "cmdlLnNwZWMubm9kZVNlbGVjdG9yYCAoaWYgZW5hYmxlZCkKCiMjIyBPcGVuQmFvCgotIGBvcGVu" + - "YmFvLm1pZ3JhdGlvbnMuaW1hZ2UuKmAgYW5kIGBvcGVuYmFvLm1pZ3JhdGlvbnMuZW52YAotIGBv" + - "cGVuYmFvLmluamVjdG9yLmltYWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmltYWdlLipgCi0gYG9w" + - "ZW5iYW8uc2VydmVyLmRhdGFTdG9yYWdlLipgCi0gTm9kZSBzZWxlY3RvcnMgKGlmIGVuYWJsZWQp" + - "CgojIyMgU2VydmljZXMgKEFQSSwgU0lTLCBldGMuKQoKLSBgPHNlcnZpY2U+LmltYWdlLipgIChy" + - "ZWdpc3RyeSwgcmVwb3NpdG9yeSkKLSBgPHNlcnZpY2U+Lm5vZGVTZWxlY3RvcmAgKGlmIGVuYWJs" + - "ZWQpCi0gYDxzZXJ2aWNlPi5lbnYuKmAgKG9ic2VydmFiaWxpdHkgc2V0dGluZ3MpCgojIyMgTExN" + - "IEZ1bmN0aW9uIEVuYWJsZW1lbnQKCkVuYWJsZSB0aGUgTExNIGFkZG9uIGJlZm9yZSBjcmVhdGlu" + - "ZyBvciBpbnZva2luZyBmdW5jdGlvbnMgd2l0aApgZnVuY3Rpb25UeXBlOiAiTExNImAuIFRoZSBh" + - "ZGRvbiBkZXBsb3lzIGBsbG0tcmVxdWVzdC1yb3V0ZXJgIGFuZApgbGxtLWFwaS1nYXRld2F5YCwg" + - "YWRkcyB0aGUgYGxsbS5pbnZvY2F0aW9uLjxkb21haW4+YCByb3V0ZSB3aGVuIEdhdGV3YXkgQVBJ" + - "CmluZ3Jlc3MgaXMgZW5hYmxlZCwgYW5kIGNvbmZpZ3VyZXMgd29ya2VycyB0byB1c2UgdGhlIExM" + - "TSBzaWRlY2FyLiBUaGUgSGVsbWZpbGUKY29uZGl0aW9uIGlzIGBhZGRvbnMubGxtLmVuYWJsZWRg" + - "LiBEbyBub3QgdXNlIHRoZSBvYnNvbGV0ZSBgbGxtLmVuYWJsZWRgIHBhdGguCgpGb3IgYSBzaW5n" + - "bGUtbm9kZSBpc29sYXRlZCB0ZXN0IGNsdXN0ZXIsIGFkZCB0aGlzIGNvbmZpZ3VyYXRpb24gdG8K" + - "YGVudmlyb25tZW50cy88ZW52Pi55YW1sYCBiZWZvcmUgYXBwbHlpbmcgdGhlIHN0YWNrOgoKYGBg" + - "eWFtbAphZGRvbnM6CiAgbGxtOgogICAgZW5hYmxlZDogdHJ1ZQogICAgZ2F0ZXdheToKICAgICAg" + - "cmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2VydmljZU1vbml0b3I6CiAg" + - "ICAgICAgICBlbmFibGVkOiBmYWxzZQogICAgcmVxdWVzdFJvdXRlcjoKICAgICAgcmVwbGljYUNv" + - "dW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2VydmljZU1vbml0b3I6CiAgICAgICAgICBl" + - "bmFibGVkOiBmYWxzZQoKYWdlbnRDb25maWc6CiAgbWVyZ2VDb25maWc6IHwKICAgIGNsdXN0ZXI6" + - "CiAgICAgIHZhbGlkYXRpb25Qb2xpY3k6CiAgICAgICAgbmFtZTogVW5yZXN0cmljdGVkCiAgICB3" + - "b3JrbG9hZDoKICAgICAgc3RhcmdhdGVRVUlDSW5zZWN1cmU6IHRydWUKYGBgCgpVc2UgYHJlcGxp" + - "Y2FDb3VudDogMWAgb25seSBmb3IgbG9jYWwgb3Igc2luZ2xlLW5vZGUgdGVzdCBjbHVzdGVycy4g" + - "VGhlIGJ1bmRsZWQKTlZDRiBBUEkgY3VycmVudGx5IHNlcnZlcyBwbGFpbnRleHQgZ1JQQyBvbiBw" + - "b3J0IDkwOTAsIHNvIHRoZSBzZWxmLW1hbmFnZWQgc3RhY2sKZGVmYXVsdHMgdGhlIExMTSBBUEkg" + - "R2F0ZXdheSBhdXRoZW50aWNhdGlvbiBob3AgdG8gcGxhaW50ZXh0LiBTZXQKYGFkZG9ucy5sbG0u" + - "Z2F0ZXdheS5hdXRoLmdycGNJbnNlY3VyZTogZmFsc2VgIG9ubHkgd2l0aCBhIFRMUy1jYXBhYmxl" + - "IE5WQ0YgQVBJLgoKV29ya2VyLXRvLXJvdXRlciB0cmFuc3BvcnQgaXMgc2VwYXJhdGUuIEZvciBz" + - "aGFyZWQgb3IgcHJvZHVjdGlvbiBjbHVzdGVycywgdXNlCnRoZSByZXF1aXJlZCByZXBsaWNhIGNv" + - "dW50IGFuZCB0aGUgbWFuYWdlZCBUTFMgY29uZmlndXJhdGlvbi4gVGhlCmB3b3JrbG9hZC5zdGFy" + - "Z2F0ZVFVSUNJbnNlY3VyZWAgc2V0dGluZyBlbmFibGVzIHBsYWludGV4dCB3b3JrZXIgdHJhbnNw" + - "b3J0IGFuZAptdXN0IG5vdCBiZSB1c2VkIGluIHByb2R1Y3Rpb24uCgpUaGUgcmVxdWVzdCByb3V0" + - "ZXIgdXNlcyBgcG93ZXItb2YtdHdvYCB3aGVuIG5vIGxvYWQtYmFsYW5jZXIgY29uZmlndXJhdGlv" + - "biBpcwpzZXQuIENvbmZpZ3VyZSBvdGhlciByb3V0aW5nIG1ldGhvZHMgd2l0aCB0aGUKW0xMTSBS" + - "ZXF1ZXN0IFJvdXRlciBMb2FkIEJhbGFuY2luZ10oaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9u" + - "dmNmL2Jsb2IvbWFpbi9kb2NzL3NlbGYtbWFuYWdlZC9sbG0tcmVxdWVzdC1yb3V0ZXItbG9hZC1i" + - "YWxhbmNpbmcubWQpCmd1aWRlLgoKSWYgdGhlIHNpZGVjYXIgaW1hZ2UgaXMgbWlycm9yZWQgb3V0" + - "c2lkZSB0aGUgc3RhY2sncyBkZWZhdWx0IGltYWdlIHJlZ2lzdHJ5IGFuZApyZXBvc2l0b3J5LCBz" + - "ZXQgdGhlIGdlbmVyYXRlZCB3b3JrZXIgc2lkZWNhciBpbWFnZSBleHBsaWNpdGx5OgoKYGBgeWFt" + - "bAphcGk6CiAgcmVtb3RlQ29uZmlnOgogICAgY29uZmlnRGF0YToKICAgICAgbnZjZjoKICAgICAg" + - "ICBzaWRlY2FyczoKICAgICAgICAgIGxsbS1yb3V0ZXItY2xpZW50LWltYWdlOiA8cmVnaXN0cnk+" + - "LzxyZXBvc2l0b3J5Pi9weWxvbjowLjE0LjEKYGBgCgpUaGUgbGVnYWN5IGBhcGkuZW52Lk5WQ0Zf" + - "U0lERUNBUlNfTExNX1JPVVRFUl9DTElFTlRfSU1BR0VgIHBhdGggaXMgZGVwcmVjYXRlZC4KVGhl" + - "IHN0YWNrIHRyYW5zbGF0ZXMgaXQgZm9yIG9uZSBjb21wYXRpYmlsaXR5IHdpbmRvdywgYnV0IG5l" + - "dyBjb25maWd1cmF0aW9ucwptdXN0IHVzZSB0aGUgcmVtb3RlLWNvbmZpZyBwYXRoLiBDb25mbGlj" + - "dGluZyB2YWx1ZXMgZmFpbCByZW5kZXJpbmcuCgpSZW5kZXIgYW5kIGFwcGx5IHRoZSB1cGRhdGVk" + - "IGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQsIHRoZW4gcmVmcmVzaCBldmVyeQpyZWdpc3RlcmVk" + - "IGNvbXB1dGUgcGxhbmUgdXNpbmcgdGhlIHNhbWUgaGFuZG9mZiB1c2VkIGZvciBpdHMgaW5zdGFs" + - "bGF0aW9uIHNvCk5WQ0EgcmVjZWl2ZXMgYGFnZW50Q29uZmlnLm1lcmdlQ29uZmlnYDoKCmBgYGJh" + - "c2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08ZW52" + - "PiBoZWxtZmlsZSBzeW5jCmBgYAoKVXNlIHRoZSBjb21wbGV0ZSBjb21wdXRlLXBsYW5lIGluc3Rh" + - "bGwgY29tbWFuZCBmcm9tCltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0" + - "ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLiBBCkNMSS1wcm9maWxlIGluc3RhbGxhdGlvbiBtdXN0" + - "IHJlbWFpbiBwcm9maWxlLWRyaXZlbjsgYSBIZWxtZmlsZSBpbnN0YWxsYXRpb24KbXVzdCByZW1h" + - "aW4gdmFsdWVzLWRyaXZlbi4KCkV4aXN0aW5nIExMTSBmdW5jdGlvbiB2ZXJzaW9ucyByZXRhaW4g" + - "dGhlIHdvcmtlci1zaWRlY2FyIGltYWdlIG1ldGFkYXRhCmNhcHR1cmVkIHdoZW4gdGhlIHZlcnNp" + - "b24gaXMgY3JlYXRlZC4gUmVwbGFjaW5nIHBvZHMgb3IgcmVkZXBsb3lpbmcgdGhlIHNhbWUKdmVy" + - "c2lvbiBkb2VzIG5vdCBhcHBseSBhIG5ldyBQeWxvbiBpbWFnZS4gQWZ0ZXIgdGhlIGNvbnRyb2wt" + - "cGxhbmUgdXBkYXRlLApjcmVhdGUgYW5kIGRlcGxveSBhIG5ldyBmdW5jdGlvbiB2ZXJzaW9uLiBW" + - "ZXJpZnkgdGhlIGNvbnRyb2wgcGxhbmUsIHJvdXRlLCBhbmQKd29ya2VyIHNpZGVjYXI6CgpgYGBi" + - "YXNoCmt1YmVjdGwgZ2V0IGRlcGxveSAtbiBudmNmIGxsbS1hcGktZ2F0ZXdheQprdWJlY3RsIGdl" + - "dCBzdGF0ZWZ1bHNldCAtbiBudmNmIGxsbS1yZXF1ZXN0LXJvdXRlcgprdWJlY3RsIGdldCBwb2Rz" + - "IC1uIG52Y2YgfCBncmVwIC1FICdsbG0tYXBpLWdhdGV3YXl8bGxtLXJlcXVlc3Qtcm91dGVyJwpr" + - "dWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIGxsbQprdWJlY3RsIC1uIG52Y2YtYmFja2Vu" + - "ZCBnZXQgcG9kIDxmdW5jdGlvbi1wb2Q+IFwKICAtbyBqc29ucGF0aD0ne3JhbmdlIC5zcGVjLmNv" + - "bnRhaW5lcnNbPyhALm5hbWU9PSJsbG0td29ya2VyIildLmFyZ3NbKl19ey59eyJcXG4ifXtlbmR9" + - "JwpgYGAKCkZvciBsb2NhbCBwbGFpbnRleHQgY2x1c3RlcnMsIHRoZSBgbGxtLXdvcmtlcmAgYXJn" + - "cyBtdXN0IGluY2x1ZGUKYC0tcXVpYy1pbnNlY3VyZWAuCgpGb3IgbG9hZC1iYWxhbmNlciBzY2hl" + - "bWEgYW5kIGFsZ29yaXRobSBiZWhhdmlvciwgc2VlIHRoZQpbU3RhcmdhdGUgY29uZmlndXJhdGlv" + - "biBndWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9zcmMvbGli" + - "cmFyaWVzL3J1c3Qvc3RhcmdhdGUvZG9jcy9sb2FkLWJhbGFuY2VyLWNvbmZpZ3VyYXRpb24ubWQp" + - "LgoKIyMgSGVsbWZpbGUgU2VsZWN0b3JzCgpUYXJnZXQgc3BlY2lmaWMgcmVsZWFzZXMgb3IgZ3Jv" + - "dXBzOgoKYGBgYmFzaAojIEJ5IHJlbGVhc2UgZ3JvdXAKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1m" + - "aWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1kZXBlbmRlbmNpZXMgc3luYwpIRUxNRklMRV9F" + - "TlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIHN5bmMK" + - "SEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1pbmdy" + - "ZXNzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1n" + - "cm91cD1vYnNlcnZhYmlsaXR5IHN5bmMKCiMgQnkgcmVsZWFzZSBuYW1lCkhFTE1GSUxFX0VOVj08" + - "ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMKSEVMTUZJTEVfRU5W" + - "PTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHkgc3luYwpI" + - "RUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWxsbS1yZXF1ZXN0LXJv" + - "dXRlciBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9bGxt" + - "LWFwaS1nYXRld2F5IHN5bmMKCiMgVGVtcGxhdGUgb25seSAoZHJ5IHJ1bikKSEVMTUZJTEVfRU5W" + - "PTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUKCiMgRGVz" + - "dHJveSBhIHNpbmdsZSByZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVj" + - "dG9yIG5hbWU9Y2Fzc2FuZHJhIGRlc3Ryb3kKYGBgCgpOb3RlOiBgYWRtaW4taXNzdWVyLXByb3h5" + - "YCBoYXMgbm8gYHJlbGVhc2UtZ3JvdXBgIGxhYmVsLiBVc2UgYC0tc2VsZWN0b3IgbmFtZT1hZG1p" + - "bi1pc3N1ZXItcHJveHlgLgpQSwcIExHsjQoqAAAKKgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAA" + - "AAA/AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9udmNm" + - "LXVpLWFkZG9uLm1kVVQFAAEAps4SIyBOVkNGIFVJIEFkZG9uCgpOVkNGIFVJIGlzIGFuIG9wdGlv" + - "bmFsLCBjdXN0b21lci1mYWNpbmcgTlZDRiBhZG1pbi1wYW5lbCBVSS4gSXQgaXMgZGlzYWJsZWQg" + - "YnkKZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNs" + - "dWRlIHRoZSBOVkNGIFVJIGFkZG9uLgoKIyMgV2hlbiB0byBlbmFibGUKCkVuYWJsZSBOVkNGIFVJ" + - "IG9ubHkgd2hlbiB5b3UgbmVlZCB0aGUgYWRtaW4tcGFuZWwgVUkgYW5kIHlvdXIgZXh0cmFjdGVk" + - "IHN0YWNrCnBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLiBJZiB0aGUgcGFja2FnZSBkb2VzIG5v" + - "dCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UKYW5kIGBudmNmVWlgIHJvdXRlIHZhbHVlcywg" + - "c2tpcCB0aGUgYWRkb24gdW50aWwgeW91IHVzZSBhIHBhY2thZ2UgdGhhdCBpbmNsdWRlcwp0aGVt" + - "LgoKIyMgRW5hYmxlIHRoZSBhZGRvbgoKRW5hYmxlIGl0IGluIGBlbnZpcm9ubWVudHMvPGVudi1u" + - "YW1lPi55YW1sYDoKCmBgYHlhbWwKYWRkb25zOgogIG52Y2ZVaToKICAgIGVuYWJsZWQ6IHRydWUK" + - "YGBgCgojIyBDcmVhdGUgbmFtZXNwYWNlIGFuZCBpbWFnZSBwdWxsIHNlY3JldAoKQ3JlYXRlIHRo" + - "ZSBuYW1lc3BhY2UsIGFuZCBhbiBpbWFnZSBwdWxsIHNlY3JldCBvbmx5IGlmIHB1bGxpbmcgZnJv" + - "bSBhIHByaXZhdGUKcmVnaXN0cnk6CgpgYGBiYXNoCmt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBu" + - "dmNmLXVpIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQoKIyBP" + - "bmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGUuZy4sIE5HQyBudmNyLmlv" + - "KQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmt1YmVjdGwgY3JlYXRlIHNlY3JldCBk" + - "b2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAog" + - "IC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogIC0tZG9ja2VyLXBhc3N3b3JkPSIk" + - "TkdDX0FQSV9LRVkiIFwKICAtLW5hbWVzcGFjZT1udmNmLXVpIFwKICAtLWRyeS1ydW49Y2xpZW50" + - "IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KYGBgCgpUaGUgZGVmYXVsdCByb3V0ZSBob3N0" + - "IGlzIGBudmNmLXVpLjxkb21haW4+YCBhbmQgdGhlIGJhY2tlbmQgaXMKYG52Y2YtdWkubnZjZi11" + - "aTo4MzAwYC4KCiMjIEFwcGx5IHRoZSBzZXJ2aWNlIGFuZCByb3V0ZQoKQWZ0ZXIgY29uZmlybWlu" + - "ZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYG52Y2YtdWlgIHJlbGVhc2UsIHByZXZpZXcgYW5k" + - "IGFwcGx5CnRoZSBzZXJ2aWNlIGFuZCByb3V0ZToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYt" + - "bmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgdGVtcGxhdGUKSEVMTUZJTEVf" + - "RU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgc3luYwpIRUxN" + - "RklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5n" + - "cmVzcyBzeW5jCmBgYAoKIyMgVmVyaWZ5CgpWZXJpZnkgdGhlIHJvdXRlIG9ubHkgd2hlbiB0aGUg" + - "YWRkb24gaXMgcHJlc2VudCBhbmQgZW5hYmxlZDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgZGVwbG95" + - "LHN2YyAtbiBudmNmLXVpCmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgLWkgbnZjZi11" + - "aQpjdXJsIC1pIC1IICJIb3N0OiBudmNmLXVpLjxkb21haW4+IiAiaHR0cDovLzxnYXRld2F5LWFk" + - "ZHJlc3M+L3N0YXR1cyIKYGBgCgojIyBTZWN1cml0eQoKVGhlIE5WQ0YgVUkgYWRtaW4gcGFuZWwg" + - "aXMgY3VycmVudGx5IHVuYXV0aGVudGljYXRlZC4gRG8gbm90IGV4cG9zZSBpdCB0byB0aGUKcHVi" + - "bGljIGludGVybmV0LiBSZXN0cmljdCBhY2Nlc3MgdG8gYSB0cnVzdGVkIG5ldHdvcmssIFZQTiwg" + - "b3IgYW4gYXV0aGVudGljYXRpbmcKcHJveHkgaW4gZnJvbnQgb2YgdGhlIGBudmNmLXVpYCByb3V0" + - "ZS4KUEsHCDj5J6+5BwAAuQcAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAPgAJAGRhdGEvbnZj" + - "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kVVQF" + - "AAEAps4SIyBJbWFnZSBQdWxsIFNlY3JldHMgUmVmZXJlbmNlCgojIyBPdmVydmlldwoKV2hlbiBw" + - "dWxsaW5nIE5WQ0YgaW1hZ2VzIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5IChmb3IgZXhhbXBsZSwg" + - "TkdDCmBudmNyLmlvYCksIEt1YmVybmV0ZXMgbmVlZHMgYGltYWdlUHVsbFNlY3JldHNgIG9uIGV2" + - "ZXJ5IHBvZC4gQ29udHJvbC1wbGFuZSBhbmQKY29tcHV0ZS1wbGFuZSBjcmVkZW50aWFscyBhcmUg" + - "Y29uZmlndXJlZCBpbiB0aGVpciBvd24gY2x1c3RlciBjb250ZXh0cy4gRG8gbm90CnVzZSBvbmUg" + - "bWl4ZWQgbmFtZXNwYWNlIGxpc3QuCgpUaGUgcmVjb21tZW5kZWQgY29udHJvbC1wbGFuZSBhcHBy" + - "b2FjaCB1c2VzIEt5dmVybm8gdG8gaW5qZWN0IHRoZSBzZWNyZXQgaW50bwpjb250cm9sLXBsYW5l" + - "IHBvZHMgYXQgYWRtaXNzaW9uIHRpbWUuIFRoZSBjb21wdXRlLXBsYW5lIGNoYXJ0IGFuZCBvcGVy" + - "YXRvciB1c2UKdGhlIHNlY3JldCBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciBpdCB0byBg" + - "bnZjYS1zeXN0ZW1gLgoKIyMgS3l2ZXJubyBBcHByb2FjaCAoUmVjb21tZW5kZWQpCgojIyMgMS4g" + - "SW5zdGFsbCBLeXZlcm5vCgpgYGBiYXNoCmhlbG0gcmVwbyBhZGQga3l2ZXJubyBodHRwczovL2t5" + - "dmVybm8uZ2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUKaGVsbSBpbnN0YWxsIGt5" + - "dmVybm8ga3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUtbmFtZXNwYWNlIFwKICAt" + - "LWt1YmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PgpgYGAKCiMjIyAyLiBDcmVhdGUg" + - "Y29udHJvbC1wbGFuZSBwdWxsIHNlY3JldHMKCmBgYGJhc2gKZXhwb3J0IE5HQ19BUElfS0VZPSI8" + - "eW91ci1uZ2MtYXBpLWtleT4iCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3Rl" + - "bSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBr" + - "dWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgbmFtZXNwYWNl" + - "ICIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250ZXh0" + - "IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQoKZm9yIG5zIGluIGNhc3Nh" + - "bmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3Rl" + - "bSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + - "dGV4dD4gY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRv" + - "Y2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4n" + - "IFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNl" + - "PSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250ZXh0" + - "IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQpgYGAKCkZvciBub24tTkdD" + - "IHJlZ2lzdHJpZXMsIHJlcGxhY2UgYC0tZG9ja2VyLXNlcnZlcmAsIGAtLWRvY2tlci11c2VybmFt" + - "ZWAsIGFuZCBgLS1kb2NrZXItcGFzc3dvcmRgLgoKIyMjIDMuIEFwcGx5IEt5dmVybm8gQ2x1c3Rl" + - "clBvbGljeQoKYGBgeWFtbAphcGlWZXJzaW9uOiBreXZlcm5vLmlvL3YxCmtpbmQ6IENsdXN0ZXJQ" + - "b2xpY3kKbWV0YWRhdGE6CiAgbmFtZTogbnZjZi1hZGQtaW1hZ2VwdWxsc2VjcmV0cwpzcGVjOgog" + - "IGJhY2tncm91bmQ6IGZhbHNlCiAgcnVsZXM6CiAgICAtIG5hbWU6IGFkZC1pbWFnZXB1bGxzZWNy" + - "ZXQtdG8tbnZjZi1wb2RzCiAgICAgIG1hdGNoOgogICAgICAgIGFueToKICAgICAgICAtIHJlc291" + - "cmNlczoKICAgICAgICAgICAga2luZHM6CiAgICAgICAgICAgIC0gUG9kCiAgICAgICAgICAgIG5h" + - "bWVzcGFjZXM6CiAgICAgICAgICAgIC0gIm52Y2YiCiAgICAgICAgICAgIC0gImFwaS1rZXlzIgog" + - "ICAgICAgICAgICAtICJzaXMiCiAgICAgICAgICAgIC0gImVzcyIKICAgICAgICAgICAgLSAibmF0" + - "cy1zeXN0ZW0iCiAgICAgICAgICAgIC0gImNhc3NhbmRyYS1zeXN0ZW0iCiAgICAgICAgICAgIC0g" + - "InZhdWx0LXN5c3RlbSIKICAgICAgICAgICAgLSAiY2VydC1tYW5hZ2VyIgogICAgICBtdXRhdGU6" + - "CiAgICAgICAgcGF0Y2hTdHJhdGVnaWNNZXJnZToKICAgICAgICAgIG1ldGFkYXRhOgogICAgICAg" + - "ICAgICBhbm5vdGF0aW9uczoKICAgICAgICAgICAgICBudmNmLm52aWRpYS5jb20vaW1hZ2VwdWxs" + - "c2VjcmV0LWluamVjdGVkLWJ5OiBreXZlcm5vCiAgICAgICAgICBzcGVjOgogICAgICAgICAgICBp" + - "bWFnZVB1bGxTZWNyZXRzOgogICAgICAgICAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpgYGBi" + - "YXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IFwKICAt" + - "ZiBreXZlcm5vLWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAKCiMjIyA0LiBJbnN0YWxs" + - "IHRoZSBjb250cm9sIHBsYW5lCgpDb250aW51ZSB3aXRoIHRoZSBzZWxlY3RlZCBjb250cm9sLXBs" + - "YW5lIGluc3RhbGxhdGlvbiBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNv" + - "bXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4gTm8KY29udHJvbC1wbGFuZSBoZWxtZmlsZSBt" + - "b2RpZmljYXRpb25zIGFyZSBuZWVkZWQuIEt5dmVybm8gaW5qZWN0cyB0aGUgcHVsbApzZWNyZXQg" + - "aW50byBuZXcgY29udHJvbC1wbGFuZSBwb2RzLgoKIyMgQ29tcHV0ZS1QbGFuZSBTZWNyZXQKCkNy" + - "ZWF0ZSB0aGUgc2VjcmV0IG9ubHkgaW4gYG52Y2Etb3BlcmF0b3JgIG9uIHRoZSBjb21wdXRlIGNs" + - "dXN0ZXI6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+" + - "IGNyZWF0ZSBuYW1lc3BhY2UgbnZjYS1vcGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAtbyB5" + - "YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGFwcGx5" + - "IC1mIC0KCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBz" + - "ZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogIC0tZG9ja2VyLXNlcnZlcj1udmNy" + - "LmlvIFwKICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAtLWRvY2tlci1wYXNz" + - "d29yZD0iJE5HQ19BUElfS0VZIiBcCiAgLS1uYW1lc3BhY2U9bnZjYS1vcGVyYXRvciBcCiAgLS1k" + - "cnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBs" + - "YW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KYGBgCgpSZWZlcmVuY2UgaXQgaW4gdGhlIGNvbXB1dGUt" + - "cGxhbmUgZW52aXJvbm1lbnQgZmlsZToKCmBgYHlhbWwKZ2xvYmFsOgogIGltYWdlUHVsbFNlY3Jl" + - "dHM6CiAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpUaGUgY2hhcnQgYW5kIG9wZXJhdG9yIHVz" + - "ZSB0aGF0IHJlZmVyZW5jZSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciB0aGUKc2VjcmV0" + - "IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBjcmVhdGUgYSBicm9hZGVyIG1hbnVhbCBjb21wdXRl" + - "IG5hbWVzcGFjZSBsaXN0LiBGb2xsb3cKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9u" + - "XShjb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkgZm9yIHRoZQpzZWxlY3RlZCBpbnN0YWxs" + - "IGZsb3cuCgojIyBWZXJpZmljYXRpb24KCmBgYGJhc2gKIyBDaGVjayB0aGF0IGEgY29udHJvbC1w" + - "bGFuZSBwb2QgaGFzIHRoZSBpbmplY3RlZCBzZWNyZXQKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IFwKICAt" + - "byBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9JwojIEV4cGVjdGVkOiBbeyJuYW1l" + - "IjoibnZjci1jcmVkcyJ9XQoKIyBDaGVjayB0aGUgS3l2ZXJubyBhbm5vdGF0aW9uCmt1YmVjdGwg" + - "LS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBwb2QgLW4gPG5hbWVzcGFjZT4g" + - "PHBvZC1uYW1lPiBcCiAgLW8ganNvbnBhdGg9J3subWV0YWRhdGEuYW5ub3RhdGlvbnMubnZjZlwu" + - "bnZpZGlhXC5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVkLWJ5fScKIyBFeHBlY3RlZDoga3l2" + - "ZXJubwoKIyBDaGVjayBwdWxsIGV2ZW50cwprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFu" + - "ZS1jb250ZXh0PiBnZXQgZXZlbnRzIC1uIDxuYW1lc3BhY2U+IFwKICAtLXNvcnQtYnk9Jy5sYXN0" + - "VGltZXN0YW1wJyB8IGdyZXAgLWkgcHVsbAojIFNob3VsZCBzaG93ICJTdWNjZXNzZnVsbHkgcHVs" + - "bGVkIiBub3QgIjQwMSBVbmF1dGhvcml6ZWQiCgojIENoZWNrIHRoZSBjaGFydC9vcGVyYXRvciBt" + - "aXJyb3Igb24gdGhlIGNvbXB1dGUgY2x1c3RlcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1w" + - "bGFuZS1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgXAogIC1uIG52Y2Etc3lzdGVtCmBg" + - "YAoKIyMgV2hlbiBQdWxsIFNlY3JldHMgQXJlIE5vdCBOZWVkZWQKCi0gKipBV1MgRUNSIHdpdGgg" + - "SUFNIG5vZGUgcm9sZXMqKjogSWYgeW91ciBub2RlcyBoYXZlIGBBbWF6b25FQzJDb250YWluZXJS" + - "ZWdpc3RyeVJlYWRPbmx5YCBJQU0gcG9saWN5LCBLdWJlcm5ldGVzIGNhbiBwdWxsIGZyb20gRUNS" + - "IHdpdGhvdXQgZXhwbGljaXQgc2VjcmV0cy4KLSAqKlB1YmxpYyByZWdpc3RyaWVzKio6IE5vIHB1" + - "bGwgc2VjcmV0cyBuZWVkZWQuCi0gKipDU1AgYnVpbHQtaW4gY3JlZGVudGlhbCBoZWxwZXJzKio6" + - "IEdLRSBBcnRpZmFjdCBSZWdpc3RyeSwgQXp1cmUgQUNSIHdpdGggbWFuYWdlZCBpZGVudGl0eSwg" + - "YW5kIHNpbWlsYXIgc2VydmljZXMuCgojIyBUcm91Ymxlc2hvb3RpbmcKCiMjIyBQb2RzIHN0aWxs" + - "IGluIEltYWdlUHVsbEJhY2tPZmYgYWZ0ZXIgYXBwbHlpbmcgcG9saWN5CgpUaGUgS3l2ZXJubyBw" + - "b2xpY3kgb25seSBhZmZlY3RzIHBvZHMgY3JlYXRlZCAqKmFmdGVyKiogdGhlIHBvbGljeSBpcyBh" + - "cHBsaWVkLiBEZWxldGUgc3R1Y2sgcG9kcyB0byB0cmlnZ2VyIHJlY3JlYXRpb246CgpgYGBiYXNo" + - "Cmt1YmVjdGwgLS1jb250ZXh0IDx0YXJnZXQtY29udGV4dD4gZGVsZXRlIHBvZHMgLW4gPG5hbWVz" + - "cGFjZT4gLS1hbGwKYGBgCgojIyMgS3l2ZXJubyBhZG1pc3Npb24gY29udHJvbGxlciBub3QgcnVu" + - "bmluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBn" + - "ZXQgcG9kcyAtbiBreXZlcm5vCiMgQWxsIHBvZHMgc2hvdWxkIGJlIFJ1bm5pbmcKYGBgCgojIyMg" + - "UG9saWN5IG5vdCBtYXRjaGluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1w" + - "bGFuZS1jb250ZXh0PiBnZXQgY2x1c3RlcnBvbGljeSBudmNmLWFkZC1pbWFnZXB1bGxzZWNyZXRz" + - "CiMgU2hvdWxkIHNob3cgUkVBRFk6IFRydWUKYGBgCgojIyMgV3Jvbmcgc2VjcmV0IG5hbWUKClRo" + - "ZSBwb2xpY3kgcmVmZXJlbmNlcyBgbnZjci1jcmVkc2AuIFZlcmlmeSB0aGUgc2VjcmV0IGV4aXN0" + - "cyB3aXRoIHRoYXQgZXhhY3QgbmFtZToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPHRhcmdl" + - "dC1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgLW4gPG5hbWVzcGFjZT4KYGBgClBLBwhL" + - "QjWoABYAAAAWAABQSwECFAAUAAgAAAAAACEAq/zUvkoQAABKEAAAEgAJAAAAAAAAAAAAAAAAAAAA" + - "ZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAP9282dTYQAAU2EAACMA" + - "CQAAAAAAAAAAAAAAkxAAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQFAAEA" + - "ps4SUEsBAhQAFAAIAAAAAAAhAJn2DaXdDQAA3Q0AADMACQAAAAAAAAAAAAAAQHIAAGRhdGEvbnZj" + - "Zi1zZWxmLW1hbmFnZWQtY2xpL2V4YW1wbGVzL2NpLXBpcGVsaW5lcy5tZFVUBQABAKbOElBLAQIU" + - "ABQACAAAAAAAIQChFOOBXQwAAF0MAAA0AAkAAAAAAAAAAAAAAIeAAABkYXRhL252Y2Ytc2VsZi1t" + - "YW5hZ2VkLWNsaS9leGFtcGxlcy9tdWx0aS1jbHVzdGVyLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAA" + - "AAAhAEInSQ8FDQAABQ0AADcACQAAAAAAAAAAAAAAT40AAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + - "Y2xpL3Byb21wdHMvYWRkLWNvbXB1dGUtcGxhbmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA" + - "1N6NNJ8ZAACfGQAAOQAJAAAAAAAAAAAAAADCmgAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkv" + - "cHJvbXB0cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhANJD" + - "3AQYJQAAGCUAADcACQAAAAAAAAAAAAAA0bQAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3By" + - "b21wdHMvZGVwbG95LWFuZC1pbnZva2UubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAcpIsJr4O" + - "AAC+DgAAPQAJAAAAAAAAAAAAAABX2gAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0" + - "cy9kaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBCceYe" + - "ASgAAAEoAAA6AAkAAAAAAAAAAAAAAInpAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9t" + - "cHRzL2luc3RhbGwtZnJvbS1zY3JhdGNoLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAKrhOrnI" + - "BwAAyAcAADkACQAAAAAAAAAAAAAA+xEBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21w" + - "dHMvcm90YXRlLWNsdXN0ZXItandrcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQDah2NW5CEA" + - "AOQhAAAuAAkAAAAAAAAAAAAAADMaAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRz" + - "L3RlYXJkb3duLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAHIND2QhIwAAISMAADAACQAAAAAA" + - "AAAAAAAAfDwBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9jb21tYW5kcy5t" + - "ZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBzp1pk1QYAANUGAAAyAAkAAAAAAAAAAAAAAARgAQBk" + - "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZXhpdC1jb2Rlcy5tZFVUBQABAKbO" + - "ElBLAQIUABQACAAAAAAAIQCbWkc/ZC8AAGQvAAAtAAkAAAAAAAAAAAAAAEJnAQBkYXRhL252Y2Yt" + - "c2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZmxhZ3MubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + - "ACEA864ThHQRAAB0EQAANwAJAAAAAAAAAAAAAAAKlwEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1j" + - "bGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQAR" + - "wxSTSWIAAEliAAAsAAkAAAAAAAAAAAAAAOyoAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + - "bGxhdGlvbi9TS0lMTC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBHVWpWSlYAAEpWAAA0AAkA" + - "AAAAAAAAAAAAAJgLAgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9ldmFscy9l" + - "dmFscy5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAAJSTkB/KAAAfygAAC8ACQAAAAAAAAAA" + - "AAAATWICAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL2V4YW1wbGVzLm1kVVQF" + - "AAEAps4SUEsBAhQAFAAIAAAAAAAhAJZjvFkSMAAAEjAAAEwACQAAAAAAAAAAAAAAMosCAGRhdGEv" + - "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1p" + - "bnN0YWxsYXRpb24ubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAtXpwO7UwAAC1MAAAOwAJAAAA" + - "AAAAAAAAAADHuwIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNl" + - "cy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAExHsjQoqAAAKKgAARAAJAAAA" + - "AAAAAAAAAADu7AIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNl" + - "cy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAOPknr7kHAAC5" + - "BwAAPwAJAAAAAAAAAAAAAABzFwMAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24v" + - "cmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEtCNagA" + - "FgAAABYAAD4ACQAAAAAAAAAAAAAAoh8DAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0" + - "aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SUEsFBgAAAAAXABcArwkAABc2" + - "AwAAAA==" + "IGRlc3Ryb3kKa3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIG52Y2YgYXBpLWtleXMgZXNzIHNpcyAt" + + "LWlnbm9yZS1ub3QtZm91bmQKa3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIG52Y2YgJiYga3ViZWN0" + + "bCBjcmVhdGUgbmFtZXNwYWNlIGFwaS1rZXlzICYmIFwKICBrdWJlY3RsIGNyZWF0ZSBuYW1lc3Bh" + + "Y2UgZXNzICYmIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBzaXMKIyBSZS1jcmVhdGUgcHVsbCBz" + + "ZWNyZXRzIGlmIG5lZWRlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBy" + + "ZWxlYXNlLWdyb3VwPXNlcnZpY2VzIHN5bmMKYGBgCgojIyBGYWlsdXJlOiBOVkNBIENsZWFudXAg" + + "U3R1Y2sgKEZpbmFsaXplcnMpCgojIyMgU3ltcHRvbXMKCkNvbXB1dGUtcGxhbmUgY2xlYW51cCBo" + + "YW5ncy4gTmFtZXNwYWNlcwpzdHVjayBpbiBgVGVybWluYXRpbmdgOgoKYGBgYmFzaAprdWJlY3Rs" + + "IGdldCBucwojIG52Y2Etb3BlcmF0b3IgICAgVGVybWluYXRpbmcgICAxMG0KIyBudmNmLWJhY2tl" + + "bmQgICAgIFRlcm1pbmF0aW5nICAgMTBtCmBgYAoKIyMjIEZpeAoKUnVuIHRoaXMgb25seSBhZ2Fp" + + "bnN0IHRoZSBjb21wdXRlIGNvbnRleHQsIGFmdGVyIHRoZSBub3JtYWwgY29tcHV0ZS1wbGFuZQp0" + + "ZWFyZG93biBoYXMgZmFpbGVkLiBSZW1vdmUgZmluYWxpemVycyBmcm9tIE5WQ0ZCYWNrZW5kIGN1" + + "c3RvbSByZXNvdXJjZXMgYW5kCmZvcmNlLWRlbGV0ZSBzdHVjayBuYW1lc3BhY2VzOgoKYGBgYmFz" + + "aApleHBvcnQgQ09NUFVURV9DT05URVhUPTxjb21wdXRlLXBsYW5lLWNvbnRleHQ+CgojIFJlbW92" + + "ZSBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3VyY2VzCmt1YmVjdGwgLS1jb250ZXh0" + + "ICIkQ09NUFVURV9DT05URVhUIiBnZXQgbnZjZmJhY2tlbmRzIC1BIC1vIGpzb24gfCBcCiAganEg" + + "Jy5pdGVtc1tdIHwgLm1ldGFkYXRhLm5hbWVzcGFjZSArICIvIiArIC5tZXRhZGF0YS5uYW1lJyAt" + + "ciB8IFwKICB4YXJncyAtSXt9IHNoIC1jICdjb250ZXh0PSIkMSI7IG5zPSIkezIlJS8qfSI7IG5h" + + "bWU9IiR7MiMjKi99Ijsga3ViZWN0bCAtLWNvbnRleHQgIiRjb250ZXh0IiBwYXRjaCBudmNmYmFj" + + "a2VuZCAiJG5hbWUiIC1uICIkbnMiIC0tdHlwZT1tZXJnZSAtcCAie1wibWV0YWRhdGFcIjp7XCJm" + + "aW5hbGl6ZXJzXCI6W119fSInIF8gIiRDT01QVVRFX0NPTlRFWFQiIHt9CgojIEZvcmNlLWRlbGV0" + + "ZSBzdHVjayBuYW1lc3BhY2VzIGJ5IGNsZWFyaW5nIHRoZWlyIGZpbmFsaXplcnMKZm9yIG5zIGlu" + + "IG52Y2Etb3BlcmF0b3IgbnZjZi1iYWNrZW5kOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09N" + + "UFVURV9DT05URVhUIiBnZXQgbmFtZXNwYWNlICIkbnMiIC1vIGpzb24gMj4vZGV2L251bGwgfCBc" + + "CiAgICBqcSAnLnNwZWMuZmluYWxpemVycyA9IFtdJyB8IFwKICAgIGt1YmVjdGwgLS1jb250ZXh0" + + "ICIkQ09NUFVURV9DT05URVhUIiByZXBsYWNlIFwKICAgICAgLS1yYXcgIi9hcGkvdjEvbmFtZXNw" + + "YWNlcy8kbnMvZmluYWxpemUiIC1mIC0gMj4vZGV2L251bGwKZG9uZQpgYGAKCiMjIEZhaWx1cmU6" + + "IE5WQ0EgT3BlcmF0b3IgTWlzc2luZyBvciBOb3QgUmVhZHkKCiMjIyBTeW1wdG9tcwoKQWZ0ZXIg" + + "Y29tcHV0ZS1wbGFuZSBpbnN0YWxsIGNvbXBsZXRlcywgbm8gYG52Y2Etb3BlcmF0b3JgIERlcGxv" + + "eW1lbnQgZXhpc3RzLCBvcgppdCBleGlzdHMgYnV0IHBvZHMgYXJlIG5vdCByZWFkeToKCmBgYGJh" + + "c2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IGRlcGxveW1l" + + "bnQgbnZjYS1vcGVyYXRvciBcCiAgLW4gbnZjYS1vcGVyYXRvcgprdWJlY3RsIC0tY29udGV4dCA8" + + "Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgcG9kcyAtbiBudmNhLW9wZXJhdG9yCmBgYAoKIyMj" + + "IERpYWdub3NpcyBhbmQgRml4ZXMKCkZpcnN0IGlkZW50aWZ5IHdoZXRoZXIgdGhlIGluc3RhbGxh" + + "dGlvbiB1c2VkIHRoZSBIZWxtZmlsZSB2YWx1ZXMgZmxvdyBvciB0aGUKQ0xJIHByb2ZpbGUgZmxv" + + "dy4gUmUtcnVuIG9ubHkgdGhhdCBmbG93J3MgcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24g" + + "c3RlcHMKZnJvbSBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxh" + + "bmUtaW5zdGFsbGF0aW9uLm1kKS4gRG8gbm90CnN1YnN0aXR1dGUgb25lIGhhbmRvZmYgZm9yIHRo" + + "ZSBvdGhlci4KCklmIGluc3RhbGxhdGlvbiBzdWNjZWVkcyBidXQgcG9kcyBzdGlsbCBmYWlsLCBp" + + "bnNwZWN0IHRoZSBjb21wdXRlIGNvbnRleHQ6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxj" + + "b21wdXRlLXBsYW5lLWNvbnRleHQ+IGRlc2NyaWJlIGRlcGxveSBudmNhLW9wZXJhdG9yIFwKICAt" + + "biBudmNhLW9wZXJhdG9yCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+" + + "IGxvZ3MgZGVwbG95bWVudC9udmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yIC0tdGFp" + + "bD0yMDAKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG52Y2Zi" + + "YWNrZW5kIC1uIG52Y2Etb3BlcmF0b3IKYGBgCgpGb3IgcHJpdmF0ZSByZWdpc3RyeSBmYWlsdXJl" + + "cywgdmVyaWZ5IHRoYXQgdGhlIHB1bGwgc2VjcmV0IGV4aXN0cyBpbgpgbnZjYS1vcGVyYXRvcmAu" + + "IFRoZSBjaGFydCBhbmQgb3BlcmF0b3IgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWA7IGRvIG5v" + + "dCB1c2UgYQpicm9hZGVyIG1hbnVhbCBuYW1lc3BhY2UgbG9vcC4gU2VlCltwdWxsLXNlY3JldHMu" + + "bWRdKHB1bGwtc2VjcmV0cy5tZCNjb21wdXRlLXBsYW5lLXNlY3JldCkuCgojIyBGYWlsdXJlOiBH" + + "YXRld2F5IEVuZHBvaW50IENoYW5nZWQKCiMjIyBTeW1wdG9tcwoKUmVxdWVzdHMgdGhyb3VnaCB0" + + "aGUgY29uZmlndXJlZCByb3V0ZSBkb21haW4gZmFpbCBhZnRlciB0aGUgR2F0ZXdheSBvciBpdHMg" + + "bG9hZCBiYWxhbmNlciBpcyByZXBsYWNlZC4gVGhlIEdhdGV3YXkgcmVwb3J0cyBhIG5ldyBlbmRw" + + "b2ludC4KCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKR0FURVdBWV9BRERSPSQoa3ViZWN0bCAtLWNv" + + "bnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgXAogIG52Y2YtZ2F0ZXdh" + + "eSAtbiBlbnZveS1nYXRld2F5IFwKICAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBd" + + "LnZhbHVlfScpCnRlc3QgLW4gIiRHQVRFV0FZX0FERFIiCmRpZyArc2hvcnQgImFwaS48ZG9tYWlu" + + "PiIKY3VybCAtSCAiSG9zdDogYXBpLjxkb21haW4+IiAiaHR0cDovLyRHQVRFV0FZX0FERFIvaGVh" + + "bHRoIgoKIyBDaGVjayBkaXJlY3QgYWRkcmVzcyBmaWVsZHMgdXNlZCBieSBhIHNwbGl0IGRlcGxv" + + "eW1lbnQKZ3JlcCBudmNmTmF0c1NlcnZpY2VVUkwgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQv" + + "ZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwKZ3JlcCAtRSAnaWNtc1NlcnZpY2V8cmV2YWxTZXJ2aWNl" + + "fG5hdHMnIFwKICBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMv" + + "PGVudj4ueWFtbApgYGAKCiMjIyBGaXgKCktlZXAgYGdsb2JhbC5kb21haW5gLCByb3V0ZSBob3N0" + + "bmFtZXMsIGFuZCBIb3N0IG92ZXJyaWRlcyB1bmNoYW5nZWQuIFVwZGF0ZSBETlMKb3IgdGhlIGRp" + + "cmVjdCBjbGllbnQgZGVzdGluYXRpb24uIEZvciBzcGxpdCBkZXBsb3ltZW50cywgdXBkYXRlIG9u" + + "bHkgZGlyZWN0CkdhdGV3YXktYWRkcmVzcyBmaWVsZHMgYW5kIHJlZnJlc2ggcmVnaXN0cmF0aW9u" + + "IGFuZCBpbnN0YWxsYXRpb24gdGhyb3VnaCB0aGUKc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLiBTZWUK" + + "W0V4YW1wbGUgNF0oLi4vZXhhbXBsZXMubWQjZXhhbXBsZS00LXJlY292ZXItZnJvbS1hLWdhdGV3" + + "YXktZW5kcG9pbnQtY2hhbmdlKS4KCiMjIFVzZWZ1bCBOYW1lc3BhY2UtdG8tU2VydmljZSBNYXBw" + + "aW5nCgpRdWljayByZWZlcmVuY2UgZm9yIHdoaWNoIHNlcnZpY2VzIHJ1biBpbiB3aGljaCBuYW1l" + + "c3BhY2U6Cgp8IE5hbWVzcGFjZSB8IFNlcnZpY2VzIHwKfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS18" + + "CnwgbmF0cy1zeXN0ZW0gfCBuYXRzIHwKfCBjYXNzYW5kcmEtc3lzdGVtIHwgY2Fzc2FuZHJhIHwK" + + "fCB2YXVsdC1zeXN0ZW0gfCBvcGVuYmFvLXNlcnZlciB8CnwgbnZjZiB8IGFwaSwgaW52b2NhdGlv" + + "bi1zZXJ2aWNlLCBncnBjLXByb3h5LCBub3Rhcnktc2VydmljZSwgcmV2YWwsIGxsbS1yZXF1ZXN0" + + "LXJvdXRlciwgbGxtLWFwaS1nYXRld2F5IHwKfCBhcGkta2V5cyB8IGFwaS1rZXlzLCBhZG1pbi1p" + + "c3N1ZXItcHJveHkgfAp8IGVzcyB8IGVzcy1hcGkgfAp8IHNpcyB8IHNpcyB8CnwgZW52b3ktZ2F0" + + "ZXdheS1zeXN0ZW0gfCBlbnZveSBnYXRld2F5IChpbmdyZXNzIGNvbnRyb2xsZXIpIHwKfCBlbnZv" + + "eS1nYXRld2F5IHwgZ2F0ZXdheSByZXNvdXJjZSArIHJvdXRlcyB8ClBLBwi1enA7tTAAALUwAABQ" + + "SwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAEQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + + "bGxhdGlvbi9yZWZlcmVuY2VzL2hlbG1maWxlLXN0cnVjdHVyZS5tZFVUBQABAKbOEiMgSGVsbWZp" + + "bGUgU3RydWN0dXJlIFJlZmVyZW5jZQoKIyMgRGlyZWN0b3J5IExheW91dAoKYGBgYmFzaApudmNm" + + "LXNlbGYtbWFuYWdlZC1zdGFjay8KfC0tIGhlbG1maWxlLmQvCnwgICB8LS0gMDEtZGVwZW5kZW5j" + + "aWVzLnlhbWwuZ290bXBsICAjIE5BVFMsIENhc3NhbmRyYSwgT3BlbkJhbwp8ICAgfC0tIDAyLWNv" + + "cmUueWFtbC5nb3RtcGwgICAgICAgICAgIyBOVkNGIHNlcnZpY2VzICsgaW5ncmVzcwp8ICAgYC0t" + + "IDAzLW9ic2VydmFiaWxpdHkueWFtbC5nb3RtcGwgIyBPYnNlcnZhYmlsaXR5IHN0YWNrIChvcHRp" + + "b25hbCkKfC0tIGVudmlyb25tZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAgICAgICAg" + + "ICAgICMgRGVmYXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVudi1uYW1l" + + "Pi55YW1sICAgICAgICAgICAgICAjIFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKfC0tIHNlY3Jl" + + "dHMvCnwgICBgLS0gPGVudi1uYW1lPi1zZWNyZXRzLnlhbWwgICAgICAjIFNlbnNpdGl2ZSB2YWx1" + + "ZXMgKHJlZ2lzdHJ5IGNyZWRzLCBwYXNzd29yZHMpCmAtLSBnbG9iYWwueWFtbC5nb3RtcGwgICAg" + + "ICAgICAgICAgICAjIEdvIHRlbXBsYXRlIHRoYXQgY29uc3RydWN0cyBwZXItY2hhcnQgdmFsdWVz" + + "CgpudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2svCnwtLSBoZWxtZmlsZS5kLwp8ICAgfC0tIDAxLWRl" + + "cGVuZGVuY2llcy55YW1sLmdvdG1wbCAgIyBDb21wdXRlIHBsYW5lIGRlcGVuZGVuY3kgY29tcG9u" + + "ZW50cwp8ICAgYC0tIDAyLW52Y2EueWFtbC5nb3RtcGwgICAgICAgICAgIyBudmNhLW9wZXJhdG9y" + + "IGNoYXJ0IGFuZCBudmNhIGNvbmZpZ3VyYXRpb24KfC0tIGVudmlyb25tZW50cy8KfCAgIHwtLSBi" + + "YXNlLnlhbWwgICAgICAgICAgICAgICAgICAgICMgRGVmYXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9u" + + "bWVudHMpCnwgICBgLS0gPGVudi1uYW1lPi55YW1sICAgICAgICAgICAgICAjIFBlci1lbnZpcm9u" + + "bWVudCBvdmVycmlkZXMKYC0tIGdsb2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAgICMgR28g" + + "dGVtcGxhdGUgdGhhdCBjb25zdHJ1Y3RzIHBlci1jaGFydCB2YWx1ZXMKYGBgCgpUaGVzZSBzdGFj" + + "a3MgaGF2ZSBzZXBhcmF0ZSBlbnZpcm9ubWVudHMgYW5kIGNsdXN0ZXIgY29udGV4dHMuIFRoZSBI" + + "ZWxtZmlsZQp2YWx1ZXMgZmxvdyBhdXRob3JzIGJvdGggZW52aXJvbm1lbnQgZmlsZXMuIFRoZSBD" + + "TEkgcHJvZmlsZSBmbG93IGluc3RlYWQgdXNlcwp0aGUgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBs" + + "YW5lIHByb2ZpbGUgYXMgaXRzIGVuZHBvaW50IHNvdXJjZS4gRG8gbm90IG1peCB0aGUKaGFuZG9m" + + "ZnMuIFNlZSBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUt" + + "aW5zdGFsbGF0aW9uLm1kKS4KCiMjIEdvdG1wbCBGaWxlcyBhbmQgVGhlaXIgUmVsZWFzZXMKCiMj" + + "IyAwMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGwKCnwgUmVsZWFzZSB8IENoYXJ0IHwgTmFtZXNw" + + "YWNlIHwgTm90ZXMgfAp8LS0tLS0tLS0tfC0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLXwKfCBu" + + "YXRzIHwgaGVsbS1udmNmLW5hdHMgfCBuYXRzLXN5c3RlbSB8IE1lc3NhZ2luZyB8Cnwgb3BlbmJh" + + "by1zZXJ2ZXIgfCBoZWxtLW52Y2Ytb3BlbmJhby1zZXJ2ZXIgfCB2YXVsdC1zeXN0ZW0gfCBTZWNy" + + "ZXRzIG1hbmFnZW1lbnQsIGRlcGVuZHMgb24gbmF0cyB8CnwgY2Fzc2FuZHJhIHwgaGVsbS1udmNm" + + "LWNhc3NhbmRyYSB8IGNhc3NhbmRyYS1zeXN0ZW0gfCBEYXRhYmFzZSB8CgpVc2VzIGA8PDogKmRl" + + "cGVuZGVuY3lgIHRlbXBsYXRlIGluaGVyaXRhbmNlIHdpdGggYHJlbGVhc2UtZ3JvdXA6IGRlcGVu" + + "ZGVuY2llc2AgbGFiZWwuCgojIyMgMDItY29yZS55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hh" + + "cnQgfCBOYW1lc3BhY2UgfCBMYWJlbCB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwt" + + "LS0tLS0tfAp8IGFwaS1rZXlzIHwgaGVsbS1udmNmLWFwaS1rZXlzIHwgYXBpLWtleXMgfCBzZXJ2" + + "aWNlcyB8Cnwgc2lzIHwgaGVsbS1udmNmLXNpcyB8IHNpcyB8IHNlcnZpY2VzIHwKfCBhcGkgfCBo" + + "ZWxtLW52Y2YtYXBpIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBpbnZvY2F0aW9uLXNlcnZpY2UgfCBo" + + "ZWxtLW52Y2YtaW52b2NhdGlvbi1zZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBncnBjLXBy" + + "b3h5IHwgaGVsbS1udmNmLWdycGMtcHJveHkgfCBudmNmIHwgc2VydmljZXMgfAp8IGVzcy1hcGkg" + + "fCBoZWxtLW52Y2YtZXNzLWFwaSB8IGVzcyB8IHNlcnZpY2VzIHwKfCBub3Rhcnktc2VydmljZSB8" + + "IGhlbG0tbnZjZi1ub3Rhcnktc2VydmljZSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgcmV2YWwgfCBo" + + "ZWxtLXJldmFsIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBsbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNm" + + "L2hlbG0tbnZjZi1sbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNmIHwgc2VydmljZXMgfAp8IGxsbS1h" + + "cGktZ2F0ZXdheSB8IG52Y2YvaGVsbS1udmNmLWxsbS1hcGktZ2F0ZXdheSB8IG52Y2YgfCBzZXJ2" + + "aWNlcyB8CnwgYWRtaW4taXNzdWVyLXByb3h5IHwgaGVsbS1hZG1pbi10b2tlbi1pc3N1ZXItcHJv" + + "eHkgfCBhcGkta2V5cyB8IChubyByZWxlYXNlLWdyb3VwIGxhYmVsKSB8CnwgaW5ncmVzcyB8IG52" + + "Y2YtZ2F0ZXdheS1yb3V0ZXMgfCBlbnZveS1nYXRld2F5LXN5c3RlbSB8IGluZ3Jlc3MgfAoKTW9z" + + "dCBzZXJ2aWNlcyB1c2UgYGluaGVyaXQ6IFt7dGVtcGxhdGU6IHNlcnZpY2V9XWAuIExMTSByZWxl" + + "YXNlcyB1c2UgT0NJIGNoYXJ0cyBmcm9tIHRoZSBgbnZjZmAgcmVwb3NpdG9yeSB3aXRoIHN0YW5k" + + "YWxvbmUgYHZhbHVlczogWy4uL2dsb2JhbC55YW1sLmdvdG1wbF1gIGJsb2NrczsgdGhleSBhcmUg" + + "Z2F0ZWQgb24gYGFkZG9ucy5sbG0uZW5hYmxlZGAuIGBhZG1pbi1pc3N1ZXItcHJveHlgIGFuZCBg" + + "aW5ncmVzc2AgaGF2ZSBzdGFuZGFsb25lIGB2YWx1ZXM6YCBibG9ja3MuCgojIyMgMDMtb2JzZXJ2" + + "YWJpbGl0eS55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBMYWJl" + + "bCB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IChvYnNlcnZhYmls" + + "aXR5IHJlbGVhc2VzKSB8ICh2YXJpb3VzKSB8IG9ic2VydmFiaWxpdHkgfCBvYnNlcnZhYmlsaXR5" + + "IHwKCkdhdGVkIG9uIG9ic2VydmFiaWxpdHktc3BlY2lmaWMgZmxhZ3MgaW4gdGhlIGVudmlyb25t" + + "ZW50IGZpbGUuIFNraXBwZWQgaWYgZGlzYWJsZWQuCgojIyBUZW1wbGF0ZSBJbmhlcml0YW5jZQoK" + + "IyMjIGA8PDogKmRlcGVuZGVuY3lgIChZQU1MIG1lcmdlKQoKVXNlZCBpbiBgMDEtZGVwZW5kZW5j" + + "aWVzLnlhbWwuZ290bXBsYC4gTWVyZ2VzIHRoZSB0ZW1wbGF0ZSdzIHByb3BlcnRpZXMgaW50byB0" + + "aGUgcmVsZWFzZS4KCioqR290Y2hhKio6IFlBTUwgbWVyZ2UgcmVwbGFjZXMgbGlzdHMuIElmIHlv" + + "dSBhZGQgYSBgdmFsdWVzOmAga2V5IHRvIHRoZSByZWxlYXNlLCBpdCAqKnJlcGxhY2VzKiogdGhl" + + "IHRlbXBsYXRlJ3MgYHZhbHVlczpgIGxpc3QgZW50aXJlbHkuIFlvdSBtdXN0IHJlLWluY2x1ZGUg" + + "YWxsIHRlbXBsYXRlIHZhbHVlczoKCkluIHRoZSB0ZW1wbGF0ZSBiZWxvdywgYDxwcml2YXRlLXZh" + + "bHVlcz5gIHJlZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxl" + + "IHN0YWNrIHJvb3QuCgpgYGB5YW1sCiMgVGVtcGxhdGUgZGVmaW5lczoKdGVtcGxhdGVzOgogIGRl" + + "cGVuZGVuY3k6ICZkZXBlbmRlbmN5CiAgICBjaGFydDogbnZjZi9oZWxtLW52Y2Yte3sgLlJlbGVh" + + "c2UuTmFtZSB9fQogICAgdmFsdWVzOgogICAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAg" + + "ICAtIC4uLzxwcml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0t" + + "c2VjcmV0cy55YW1sCgojIFdoZW4gb3ZlcnJpZGluZywgTVVTVCByZS1pbmNsdWRlIGJvdGg6Ci0g" + + "bmFtZTogY2Fzc2FuZHJhCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9i" + + "YWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + + "ICAgIyBNdXN0IHJlLWluY2x1ZGUKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJl" + + "ZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwgICAjIE11c3QgcmUtaW5jbHVkZQog" + + "ICAgLSBjYXNzYW5kcmE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + + "ICAgICAgICAgICAgICAgICMgWW91ciBvdmVycmlkZQogICAgICAgIHJlc291cmNlczoKICAgICAg" + + "ICAgIGxpbWl0czoKICAgICAgICAgICAgbWVtb3J5OiA4MTkyTWkKYGBgCgojIyMgYGluaGVyaXRg" + + "IChIZWxtZmlsZSBuYXRpdmUpCgpVc2VkIGluIGAwMi1jb3JlLnlhbWwuZ290bXBsYC4gSGVsbWZp" + + "bGUncyBuYXRpdmUgaW5oZXJpdGFuY2UgbWVjaGFuaXNtLgoKYGBgeWFtbAotIG5hbWU6IGFwaQog" + + "IHZlcnNpb246IDEuNi4wCiAgbmFtZXNwYWNlOiBudmNmCiAgaW5oZXJpdDoKICAgIC0gdGVtcGxh" + + "dGU6IHNlcnZpY2UKYGBgCgpXaGVuIGFkZGluZyBgdmFsdWVzOmAgdG8gYW4gaW5oZXJpdGVkIHJl" + + "bGVhc2UsIHlvdSBhbHNvIG5lZWQgdG8gcmUtaW5jbHVkZSB0aGUgdGVtcGxhdGUncyB2YWx1ZXMg" + + "ZmlsZXMgc2luY2UgYHZhbHVlc2AgaXMgYSBsaXN0IHRoYXQgZ2V0cyByZXBsYWNlZC4KCiMjIFZh" + + "bHVlcyBQcmVjZWRlbmNlCgpGcm9tIGxvd2VzdCB0byBoaWdoZXN0IHByaW9yaXR5OgoKMS4gYGVu" + + "dmlyb25tZW50cy9iYXNlLnlhbWxgIC0tIGRlZmF1bHRzIHNoYXJlZCBhY3Jvc3MgYWxsIGVudmly" + + "b25tZW50cwoyLiBgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgIC0tIHBlci1lbnZpcm9ubWVudCBv" + + "dmVycmlkZXMKMy4gYGdsb2JhbC55YW1sLmdvdG1wbGAgLS0gR28gdGVtcGxhdGUgcHJvY2Vzc2lu" + + "ZyAoY29uc3RydWN0cyBjaGFydC1zcGVjaWZpYyBzdHJ1Y3R1cmUpCjQuIGA8cHJpdmF0ZS12YWx1" + + "ZXM+LzxlbnY+LXNlY3JldHMueWFtbGAgLS0gc2Vuc2l0aXZlIHZhbHVlcwo1LiBJbmxpbmUgYHZh" + + "bHVlczpgIGJsb2NrcyBvbiByZWxlYXNlcyAtLSBoaWdoZXN0IHByZWNlZGVuY2UKCiMjIFdoYXQg" + + "Z2xvYmFsLnlhbWwuZ290bXBsIFBhc3NlcyBUaHJvdWdoCgpgZ2xvYmFsLnlhbWwuZ290bXBsYCBy" + + "ZWFkcyBmcm9tIGAuVmFsdWVzYCAodGhlIG1lcmdlZCBlbnZpcm9ubWVudCArIGVudi1zcGVjaWZp" + + "YyBZQU1MKSBhbmQgY29uc3RydWN0cyBjaGFydC1zcGVjaWZpYyB2YWx1ZXMuIEl0IG9ubHkgcGFz" + + "c2VzIHRocm91Z2gga2V5cyBpdCBleHBsaWNpdGx5IHJlZmVyZW5jZXM6CgojIyMgQ2Fzc2FuZHJh" + + "CgotIGBjYXNzYW5kcmEucmVwbGljYUNvdW50YAotIGBjYXNzYW5kcmEuaW1hZ2UuKmAgKHJlZ2lz" + + "dHJ5LCByZXBvc2l0b3J5KQotIGBjYXNzYW5kcmEubWlncmF0aW9ucy5pbWFnZS4qYAotIGBjYXNz" + + "YW5kcmEucGVyc2lzdGVuY2Uuc2l6ZWAKLSBgY2Fzc2FuZHJhLm5vZGVTZWxlY3RvcmAgKGlmIGBn" + + "bG9iYWwubm9kZVNlbGVjdG9ycy5lbmFibGVkYCkKLSBgY2Fzc2FuZHJhLmdsb2JhbC5kZWZhdWx0" + + "U3RvcmFnZUNsYXNzYAoKIyMjIE5BVFMKCi0gYG5hdHMuY29udGFpbmVyLmltYWdlLipgCi0gYG5h" + + "dHMucmVsb2FkZXIuaW1hZ2UuKmAKLSBgbmF0cy5uYXRzQm94LmNvbnRhaW5lci5pbWFnZS4qYAot" + + "IGBuYXRzLmNvbmZpZy5qZXRzdHJlYW0uZmlsZVN0b3JlLnB2Yy5zdG9yYWdlQ2xhc3NOYW1lYAot" + + "IGBuYXRzLnBvZFRlbXBsYXRlLm1lcmdlLnNwZWMubm9kZVNlbGVjdG9yYCAoaWYgZW5hYmxlZCkK" + + "CiMjIyBPcGVuQmFvCgotIGBvcGVuYmFvLm1pZ3JhdGlvbnMuaW1hZ2UuKmAgYW5kIGBvcGVuYmFv" + + "Lm1pZ3JhdGlvbnMuZW52YAotIGBvcGVuYmFvLmluamVjdG9yLmltYWdlLipgCi0gYG9wZW5iYW8u" + + "c2VydmVyLmltYWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmRhdGFTdG9yYWdlLipgCi0gTm9kZSBz" + + "ZWxlY3RvcnMgKGlmIGVuYWJsZWQpCgojIyMgU2VydmljZXMgKEFQSSwgU0lTLCBldGMuKQoKLSBg" + + "PHNlcnZpY2U+LmltYWdlLipgIChyZWdpc3RyeSwgcmVwb3NpdG9yeSkKLSBgPHNlcnZpY2U+Lm5v" + + "ZGVTZWxlY3RvcmAgKGlmIGVuYWJsZWQpCi0gYDxzZXJ2aWNlPi5lbnYuKmAgKG9ic2VydmFiaWxp" + + "dHkgc2V0dGluZ3MpCgojIyMgTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnQKCkVuYWJsZSB0aGUgTExN" + + "IGFkZG9uIGJlZm9yZSBjcmVhdGluZyBvciBpbnZva2luZyBmdW5jdGlvbnMgd2l0aApgZnVuY3Rp" + + "b25UeXBlOiAiTExNImAuIFRoZSBhZGRvbiBkZXBsb3lzIGBsbG0tcmVxdWVzdC1yb3V0ZXJgIGFu" + + "ZApgbGxtLWFwaS1nYXRld2F5YCwgYWRkcyB0aGUgYGxsbS5pbnZvY2F0aW9uLjxkb21haW4+YCBy" + + "b3V0ZSB3aGVuIEdhdGV3YXkgQVBJCmluZ3Jlc3MgaXMgZW5hYmxlZCwgYW5kIGNvbmZpZ3VyZXMg" + + "d29ya2VycyB0byB1c2UgdGhlIExMTSBzaWRlY2FyLiBUaGUgSGVsbWZpbGUKY29uZGl0aW9uIGlz" + + "IGBhZGRvbnMubGxtLmVuYWJsZWRgLiBEbyBub3QgdXNlIHRoZSBvYnNvbGV0ZSBgbGxtLmVuYWJs" + + "ZWRgIHBhdGguCgpGb3IgYSBzaW5nbGUtbm9kZSBpc29sYXRlZCB0ZXN0IGNsdXN0ZXIsIGFkZCB0" + + "aGlzIGNvbmZpZ3VyYXRpb24gdG8KYGVudmlyb25tZW50cy88ZW52Pi55YW1sYCBiZWZvcmUgYXBw" + + "bHlpbmcgdGhlIHN0YWNrOgoKYGBgeWFtbAphZGRvbnM6CiAgbGxtOgogICAgZW5hYmxlZDogdHJ1" + + "ZQogICAgZ2F0ZXdheToKICAgICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAg" + + "ICAgc2VydmljZU1vbml0b3I6CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQogICAgcmVxdWVzdFJv" + + "dXRlcjoKICAgICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2Vydmlj" + + "ZU1vbml0b3I6CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQoKYWdlbnRDb25maWc6CiAgbWVyZ2VD" + + "b25maWc6IHwKICAgIGNsdXN0ZXI6CiAgICAgIHZhbGlkYXRpb25Qb2xpY3k6CiAgICAgICAgbmFt" + + "ZTogVW5yZXN0cmljdGVkCiAgICB3b3JrbG9hZDoKICAgICAgc3RhcmdhdGVRVUlDSW5zZWN1cmU6" + + "IHRydWUKYGBgCgpVc2UgYHJlcGxpY2FDb3VudDogMWAgb25seSBmb3IgbG9jYWwgb3Igc2luZ2xl" + + "LW5vZGUgdGVzdCBjbHVzdGVycy4gVGhlIGJ1bmRsZWQKTlZDRiBBUEkgY3VycmVudGx5IHNlcnZl" + + "cyBwbGFpbnRleHQgZ1JQQyBvbiBwb3J0IDkwOTAsIHNvIHRoZSBzZWxmLW1hbmFnZWQgc3RhY2sK" + + "ZGVmYXVsdHMgdGhlIExMTSBBUEkgR2F0ZXdheSBhdXRoZW50aWNhdGlvbiBob3AgdG8gcGxhaW50" + + "ZXh0LiBTZXQKYGFkZG9ucy5sbG0uZ2F0ZXdheS5hdXRoLmdycGNJbnNlY3VyZTogZmFsc2VgIG9u" + + "bHkgd2l0aCBhIFRMUy1jYXBhYmxlIE5WQ0YgQVBJLgoKV29ya2VyLXRvLXJvdXRlciB0cmFuc3Bv" + + "cnQgaXMgc2VwYXJhdGUuIEZvciBzaGFyZWQgb3IgcHJvZHVjdGlvbiBjbHVzdGVycywgdXNlCnRo" + + "ZSByZXF1aXJlZCByZXBsaWNhIGNvdW50IGFuZCB0aGUgbWFuYWdlZCBUTFMgY29uZmlndXJhdGlv" + + "bi4gVGhlCmB3b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZWAgc2V0dGluZyBlbmFibGVzIHBs" + + "YWludGV4dCB3b3JrZXIgdHJhbnNwb3J0IGFuZAptdXN0IG5vdCBiZSB1c2VkIGluIHByb2R1Y3Rp" + + "b24uCgpUaGUgcmVxdWVzdCByb3V0ZXIgdXNlcyBgcG93ZXItb2YtdHdvYCB3aGVuIG5vIGxvYWQt" + + "YmFsYW5jZXIgY29uZmlndXJhdGlvbiBpcwpzZXQuIENvbmZpZ3VyZSBvdGhlciByb3V0aW5nIG1l" + + "dGhvZHMgd2l0aCB0aGUKW0xMTSBSZXF1ZXN0IFJvdXRlciBMb2FkIEJhbGFuY2luZ10oaHR0cHM6" + + "Ly9naXRodWIuY29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9kb2NzL3NlbGYtbWFuYWdlZC9sbG0t" + + "cmVxdWVzdC1yb3V0ZXItbG9hZC1iYWxhbmNpbmcubWQpCmd1aWRlLgoKSWYgdGhlIHNpZGVjYXIg" + + "aW1hZ2UgaXMgbWlycm9yZWQgb3V0c2lkZSB0aGUgc3RhY2sncyBkZWZhdWx0IGltYWdlIHJlZ2lz" + + "dHJ5IGFuZApyZXBvc2l0b3J5LCBzZXQgdGhlIGdlbmVyYXRlZCB3b3JrZXIgc2lkZWNhciBpbWFn" + + "ZSBleHBsaWNpdGx5OgoKYGBgeWFtbAphcGk6CiAgcmVtb3RlQ29uZmlnOgogICAgY29uZmlnRGF0" + + "YToKICAgICAgbnZjZjoKICAgICAgICBzaWRlY2FyczoKICAgICAgICAgIGxsbS1yb3V0ZXItY2xp" + + "ZW50LWltYWdlOiA8cmVnaXN0cnk+LzxyZXBvc2l0b3J5Pi9weWxvbjowLjE0LjEKYGBgCgpUaGUg" + + "bGVnYWN5IGBhcGkuZW52Lk5WQ0ZfU0lERUNBUlNfTExNX1JPVVRFUl9DTElFTlRfSU1BR0VgIHBh" + + "dGggaXMgZGVwcmVjYXRlZC4KVGhlIHN0YWNrIHRyYW5zbGF0ZXMgaXQgZm9yIG9uZSBjb21wYXRp" + + "YmlsaXR5IHdpbmRvdywgYnV0IG5ldyBjb25maWd1cmF0aW9ucwptdXN0IHVzZSB0aGUgcmVtb3Rl" + + "LWNvbmZpZyBwYXRoLiBDb25mbGljdGluZyB2YWx1ZXMgZmFpbCByZW5kZXJpbmcuCgpSZW5kZXIg" + + "YW5kIGFwcGx5IHRoZSB1cGRhdGVkIGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQsIHRoZW4gcmVm" + + "cmVzaCBldmVyeQpyZWdpc3RlcmVkIGNvbXB1dGUgcGxhbmUgdXNpbmcgdGhlIHNhbWUgaGFuZG9m" + + "ZiB1c2VkIGZvciBpdHMgaW5zdGFsbGF0aW9uIHNvCk5WQ0EgcmVjZWl2ZXMgYGFnZW50Q29uZmln" + + "Lm1lcmdlQ29uZmlnYDoKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIHRlbXBs" + + "YXRlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSBzeW5jCmBgYAoKVXNlIHRoZSBjb21wbGV0" + + "ZSBjb21wdXRlLXBsYW5lIGluc3RhbGwgY29tbWFuZCBmcm9tCltTcGxpdCBDb21wdXRlLVBsYW5l" + + "IEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLiBBCkNMSS1wcm9m" + + "aWxlIGluc3RhbGxhdGlvbiBtdXN0IHJlbWFpbiBwcm9maWxlLWRyaXZlbjsgYSBIZWxtZmlsZSBp" + + "bnN0YWxsYXRpb24KbXVzdCByZW1haW4gdmFsdWVzLWRyaXZlbi4KCkV4aXN0aW5nIExMTSBmdW5j" + + "dGlvbiB2ZXJzaW9ucyByZXRhaW4gdGhlIHdvcmtlci1zaWRlY2FyIGltYWdlIG1ldGFkYXRhCmNh" + + "cHR1cmVkIHdoZW4gdGhlIHZlcnNpb24gaXMgY3JlYXRlZC4gUmVwbGFjaW5nIHBvZHMgb3IgcmVk" + + "ZXBsb3lpbmcgdGhlIHNhbWUKdmVyc2lvbiBkb2VzIG5vdCBhcHBseSBhIG5ldyBQeWxvbiBpbWFn" + + "ZS4gQWZ0ZXIgdGhlIGNvbnRyb2wtcGxhbmUgdXBkYXRlLApjcmVhdGUgYW5kIGRlcGxveSBhIG5l" + + "dyBmdW5jdGlvbiB2ZXJzaW9uLiBWZXJpZnkgdGhlIGNvbnRyb2wgcGxhbmUsIHJvdXRlLCBhbmQK" + + "d29ya2VyIHNpZGVjYXI6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSAtbiBudmNmIGxsbS1h" + + "cGktZ2F0ZXdheQprdWJlY3RsIGdldCBzdGF0ZWZ1bHNldCAtbiBudmNmIGxsbS1yZXF1ZXN0LXJv" + + "dXRlcgprdWJlY3RsIGdldCBwb2RzIC1uIG52Y2YgfCBncmVwIC1FICdsbG0tYXBpLWdhdGV3YXl8" + + "bGxtLXJlcXVlc3Qtcm91dGVyJwprdWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIGxsbQpr" + + "dWJlY3RsIC1uIG52Y2YtYmFja2VuZCBnZXQgcG9kIDxmdW5jdGlvbi1wb2Q+IFwKICAtbyBqc29u" + + "cGF0aD0ne3JhbmdlIC5zcGVjLmNvbnRhaW5lcnNbPyhALm5hbWU9PSJsbG0td29ya2VyIildLmFy" + + "Z3NbKl19ey59eyJcXG4ifXtlbmR9JwpgYGAKCkZvciBsb2NhbCBwbGFpbnRleHQgY2x1c3RlcnMs" + + "IHRoZSBgbGxtLXdvcmtlcmAgYXJncyBtdXN0IGluY2x1ZGUKYC0tcXVpYy1pbnNlY3VyZWAuCgpG" + + "b3IgbG9hZC1iYWxhbmNlciBzY2hlbWEgYW5kIGFsZ29yaXRobSBiZWhhdmlvciwgc2VlIHRoZQpb" + + "U3RhcmdhdGUgY29uZmlndXJhdGlvbiBndWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9u" + + "dmNmL2Jsb2IvbWFpbi9zcmMvbGlicmFyaWVzL3J1c3Qvc3RhcmdhdGUvZG9jcy9sb2FkLWJhbGFu" + + "Y2VyLWNvbmZpZ3VyYXRpb24ubWQpLgoKIyMgSGVsbWZpbGUgU2VsZWN0b3JzCgpUYXJnZXQgc3Bl" + + "Y2lmaWMgcmVsZWFzZXMgb3IgZ3JvdXBzOgoKYGBgYmFzaAojIEJ5IHJlbGVhc2UgZ3JvdXAKSEVM" + + "TUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1kZXBlbmRl" + + "bmNpZXMgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNl" + + "LWdyb3VwPXNlcnZpY2VzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0" + + "b3IgcmVsZWFzZS1ncm91cD1pbmdyZXNzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxl" + + "IC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1vYnNlcnZhYmlsaXR5IHN5bmMKCiMgQnkgcmVsZWFz" + + "ZSBuYW1lCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2Fu" + + "ZHJhIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1hZG1p" + + "bi1pc3N1ZXItcHJveHkgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3Rv" + + "ciBuYW1lPWxsbS1yZXF1ZXN0LXJvdXRlciBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmls" + + "ZSAtLXNlbGVjdG9yIG5hbWU9bGxtLWFwaS1nYXRld2F5IHN5bmMKCiMgVGVtcGxhdGUgb25seSAo" + + "ZHJ5IHJ1bikKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNz" + + "YW5kcmEgdGVtcGxhdGUKCiMgRGVzdHJveSBhIHNpbmdsZSByZWxlYXNlCkhFTE1GSUxFX0VOVj08" + + "ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIGRlc3Ryb3kKYGBgCgpOb3Rl" + + "OiBgYWRtaW4taXNzdWVyLXByb3h5YCBoYXMgbm8gYHJlbGVhc2UtZ3JvdXBgIGxhYmVsLiBVc2Ug" + + "YC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHlgLgpQSwcIExHsjQoqAAAKKgAAUEsD" + + "BBQACAAAAAAAIQAAAAAAAAAAAAAAAAA/AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + + "YXRpb24vcmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SIyBOVkNGIFVJIEFkZG9u" + + "CgpOVkNGIFVJIGlzIGFuIG9wdGlvbmFsLCBjdXN0b21lci1mYWNpbmcgTlZDRiBhZG1pbi1wYW5l" + + "bCBVSS4gSXQgaXMgZGlzYWJsZWQgYnkKZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3Rh" + + "Y2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBOVkNGIFVJIGFkZG9uLgoKIyMgV2hlbiB0byBl" + + "bmFibGUKCkVuYWJsZSBOVkNGIFVJIG9ubHkgd2hlbiB5b3UgbmVlZCB0aGUgYWRtaW4tcGFuZWwg" + + "VUkgYW5kIHlvdXIgZXh0cmFjdGVkIHN0YWNrCnBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLiBJ" + + "ZiB0aGUgcGFja2FnZSBkb2VzIG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UKYW5kIGBu" + + "dmNmVWlgIHJvdXRlIHZhbHVlcywgc2tpcCB0aGUgYWRkb24gdW50aWwgeW91IHVzZSBhIHBhY2th" + + "Z2UgdGhhdCBpbmNsdWRlcwp0aGVtLgoKIyMgRW5hYmxlIHRoZSBhZGRvbgoKRW5hYmxlIGl0IGlu" + + "IGBlbnZpcm9ubWVudHMvPGVudi1uYW1lPi55YW1sYDoKCmBgYHlhbWwKYWRkb25zOgogIG52Y2ZV" + + "aToKICAgIGVuYWJsZWQ6IHRydWUKYGBgCgojIyBDcmVhdGUgbmFtZXNwYWNlIGFuZCBpbWFnZSBw" + + "dWxsIHNlY3JldAoKQ3JlYXRlIHRoZSBuYW1lc3BhY2UsIGFuZCBhbiBpbWFnZSBwdWxsIHNlY3Jl" + + "dCBvbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUKcmVnaXN0cnk6CgpgYGBiYXNoCmt1YmVj" + + "dGwgY3JlYXRlIG5hbWVzcGFjZSBudmNmLXVpIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1" + + "YmVjdGwgYXBwbHkgLWYgLQoKIyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0" + + "cnkgKGUuZy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmt1" + + "YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgLS1kb2Nr" + + "ZXItc2VydmVyPW52Y3IuaW8gXAogIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAog" + + "IC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAtLW5hbWVzcGFjZT1udmNmLXVp" + + "IFwKICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KYGBgCgpU" + + "aGUgZGVmYXVsdCByb3V0ZSBob3N0IGlzIGBudmNmLXVpLjxkb21haW4+YCBhbmQgdGhlIGJhY2tl" + + "bmQgaXMKYG52Y2YtdWkubnZjZi11aTo4MzAwYC4KCiMjIEFwcGx5IHRoZSBzZXJ2aWNlIGFuZCBy" + + "b3V0ZQoKQWZ0ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYG52Y2YtdWlg" + + "IHJlbGVhc2UsIHByZXZpZXcgYW5kIGFwcGx5CnRoZSBzZXJ2aWNlIGFuZCByb3V0ZToKCmBgYGJh" + + "c2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2Yt" + + "dWkgdGVtcGxhdGUKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBu" + + "YW1lPW52Y2YtdWkgc3luYwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVj" + + "dG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBgYAoKIyMgVmVyaWZ5CgpWZXJpZnkgdGhl" + + "IHJvdXRlIG9ubHkgd2hlbiB0aGUgYWRkb24gaXMgcHJlc2VudCBhbmQgZW5hYmxlZDoKCmBgYGJh" + + "c2gKa3ViZWN0bCBnZXQgZGVwbG95LHN2YyAtbiBudmNmLXVpCmt1YmVjdGwgZ2V0IGh0dHByb3V0" + + "ZSAtQSB8IGdyZXAgLWkgbnZjZi11aQpjdXJsIC1pIC1IICJIb3N0OiBudmNmLXVpLjxkb21haW4+" + + "IiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+L3N0YXR1cyIKYGBgCgojIyBTZWN1cml0eQoKVGhl" + + "IE5WQ0YgVUkgYWRtaW4gcGFuZWwgaXMgY3VycmVudGx5IHVuYXV0aGVudGljYXRlZC4gRG8gbm90" + + "IGV4cG9zZSBpdCB0byB0aGUKcHVibGljIGludGVybmV0LiBSZXN0cmljdCBhY2Nlc3MgdG8gYSB0" + + "cnVzdGVkIG5ldHdvcmssIFZQTiwgb3IgYW4gYXV0aGVudGljYXRpbmcKcHJveHkgaW4gZnJvbnQg" + + "b2YgdGhlIGBudmNmLXVpYCByb3V0ZS4KUEsHCDj5J6+5BwAAuQcAAFBLAwQUAAgAAAAAACEAAAAA" + + "AAAAAAAAAAAAPgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5j" + + "ZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SIyBJbWFnZSBQdWxsIFNlY3JldHMgUmVmZXJlbmNl" + + "CgojIyBPdmVydmlldwoKV2hlbiBwdWxsaW5nIE5WQ0YgaW1hZ2VzIGZyb20gYSBwcml2YXRlIHJl" + + "Z2lzdHJ5IChmb3IgZXhhbXBsZSwgTkdDCmBudmNyLmlvYCksIEt1YmVybmV0ZXMgbmVlZHMgYGlt" + + "YWdlUHVsbFNlY3JldHNgIG9uIGV2ZXJ5IHBvZC4gQ29udHJvbC1wbGFuZSBhbmQKY29tcHV0ZS1w" + + "bGFuZSBjcmVkZW50aWFscyBhcmUgY29uZmlndXJlZCBpbiB0aGVpciBvd24gY2x1c3RlciBjb250" + + "ZXh0cy4gRG8gbm90CnVzZSBvbmUgbWl4ZWQgbmFtZXNwYWNlIGxpc3QuCgpUaGUgcmVjb21tZW5k" + + "ZWQgY29udHJvbC1wbGFuZSBhcHByb2FjaCB1c2VzIEt5dmVybm8gdG8gaW5qZWN0IHRoZSBzZWNy" + + "ZXQgaW50bwpjb250cm9sLXBsYW5lIHBvZHMgYXQgYWRtaXNzaW9uIHRpbWUuIFRoZSBjb21wdXRl" + + "LXBsYW5lIGNoYXJ0IGFuZCBvcGVyYXRvciB1c2UKdGhlIHNlY3JldCBpbiBgbnZjYS1vcGVyYXRv" + + "cmAgYW5kIG1pcnJvciBpdCB0byBgbnZjYS1zeXN0ZW1gLgoKIyMgS3l2ZXJubyBBcHByb2FjaCAo" + + "UmVjb21tZW5kZWQpCgojIyMgMS4gSW5zdGFsbCBLeXZlcm5vCgpgYGBiYXNoCmhlbG0gcmVwbyBh" + + "ZGQga3l2ZXJubyBodHRwczovL2t5dmVybm8uZ2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1" + + "cGRhdGUKaGVsbSBpbnN0YWxsIGt5dmVybm8ga3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1j" + + "cmVhdGUtbmFtZXNwYWNlIFwKICAtLWt1YmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0" + + "PgpgYGAKCiMjIyAyLiBDcmVhdGUgY29udHJvbC1wbGFuZSBwdWxsIHNlY3JldHMKCmBgYGJhc2gK" + + "ZXhwb3J0IE5HQ19BUElfS0VZPSI8eW91ci1uZ2MtYXBpLWtleT4iCgpmb3IgbnMgaW4gY2Fzc2Fu" + + "ZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVt" + + "IGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250" + + "ZXh0PiBjcmVhdGUgbmFtZXNwYWNlICIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFt" + + "bCB8IGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0K" + + "ZG9uZQoKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5" + + "cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAtLWNvbnRl" + + "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkg" + + "bnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11" + + "c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9L" + + "RVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFt" + + "bCB8IGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0K" + + "ZG9uZQpgYGAKCkZvciBub24tTkdDIHJlZ2lzdHJpZXMsIHJlcGxhY2UgYC0tZG9ja2VyLXNlcnZl" + + "cmAsIGAtLWRvY2tlci11c2VybmFtZWAsIGFuZCBgLS1kb2NrZXItcGFzc3dvcmRgLgoKIyMjIDMu" + + "IEFwcGx5IEt5dmVybm8gQ2x1c3RlclBvbGljeQoKYGBgeWFtbAphcGlWZXJzaW9uOiBreXZlcm5v" + + "LmlvL3YxCmtpbmQ6IENsdXN0ZXJQb2xpY3kKbWV0YWRhdGE6CiAgbmFtZTogbnZjZi1hZGQtaW1h" + + "Z2VwdWxsc2VjcmV0cwpzcGVjOgogIGJhY2tncm91bmQ6IGZhbHNlCiAgcnVsZXM6CiAgICAtIG5h" + + "bWU6IGFkZC1pbWFnZXB1bGxzZWNyZXQtdG8tbnZjZi1wb2RzCiAgICAgIG1hdGNoOgogICAgICAg" + + "IGFueToKICAgICAgICAtIHJlc291cmNlczoKICAgICAgICAgICAga2luZHM6CiAgICAgICAgICAg" + + "IC0gUG9kCiAgICAgICAgICAgIG5hbWVzcGFjZXM6CiAgICAgICAgICAgIC0gIm52Y2YiCiAgICAg" + + "ICAgICAgIC0gImFwaS1rZXlzIgogICAgICAgICAgICAtICJzaXMiCiAgICAgICAgICAgIC0gImVz" + + "cyIKICAgICAgICAgICAgLSAibmF0cy1zeXN0ZW0iCiAgICAgICAgICAgIC0gImNhc3NhbmRyYS1z" + + "eXN0ZW0iCiAgICAgICAgICAgIC0gInZhdWx0LXN5c3RlbSIKICAgICAgICAgICAgLSAiY2VydC1t" + + "YW5hZ2VyIgogICAgICBtdXRhdGU6CiAgICAgICAgcGF0Y2hTdHJhdGVnaWNNZXJnZToKICAgICAg" + + "ICAgIG1ldGFkYXRhOgogICAgICAgICAgICBhbm5vdGF0aW9uczoKICAgICAgICAgICAgICBudmNm" + + "Lm52aWRpYS5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVkLWJ5OiBreXZlcm5vCiAgICAgICAg" + + "ICBzcGVjOgogICAgICAgICAgICBpbWFnZVB1bGxTZWNyZXRzOgogICAgICAgICAgICAtIG5hbWU6" + + "IG52Y3ItY3JlZHMKYGBgCgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5l" + + "LWNvbnRleHQ+IGFwcGx5IFwKICAtZiBreXZlcm5vLWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFt" + + "bApgYGAKCiMjIyA0LiBJbnN0YWxsIHRoZSBjb250cm9sIHBsYW5lCgpDb250aW51ZSB3aXRoIHRo" + + "ZSBzZWxlY3RlZCBjb250cm9sLXBsYW5lIGluc3RhbGxhdGlvbiBpbgpbU3BsaXQgQ29tcHV0ZS1Q" + + "bGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4gTm8KY29u" + + "dHJvbC1wbGFuZSBoZWxtZmlsZSBtb2RpZmljYXRpb25zIGFyZSBuZWVkZWQuIEt5dmVybm8gaW5q" + + "ZWN0cyB0aGUgcHVsbApzZWNyZXQgaW50byBuZXcgY29udHJvbC1wbGFuZSBwb2RzLgoKIyMgQ29t" + + "cHV0ZS1QbGFuZSBTZWNyZXQKCkNyZWF0ZSB0aGUgc2VjcmV0IG9ubHkgaW4gYG52Y2Etb3BlcmF0" + + "b3JgIG9uIHRoZSBjb21wdXRlIGNsdXN0ZXI6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxj" + + "b21wdXRlLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3BhY2UgbnZjYS1vcGVyYXRvciBcCiAg" + + "LS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + + "LXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBs" + + "YW5lLWNvbnRleHQ+IGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAog" + + "IC0tZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9r" + + "ZW4nIFwKICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgLS1uYW1lc3BhY2U9" + + "bnZjYS1vcGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVjdGwg" + + "LS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KYGBgCgpSZWZlcmVu" + + "Y2UgaXQgaW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZToKCmBgYHlhbWwKZ2xv" + + "YmFsOgogIGltYWdlUHVsbFNlY3JldHM6CiAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpUaGUg" + + "Y2hhcnQgYW5kIG9wZXJhdG9yIHVzZSB0aGF0IHJlZmVyZW5jZSBpbiBgbnZjYS1vcGVyYXRvcmAg" + + "YW5kIG1pcnJvciB0aGUKc2VjcmV0IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBjcmVhdGUgYSBi" + + "cm9hZGVyIG1hbnVhbCBjb21wdXRlIG5hbWVzcGFjZSBsaXN0LiBGb2xsb3cKW1NwbGl0IENvbXB1" + + "dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShjb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkgZm9y" + + "IHRoZQpzZWxlY3RlZCBpbnN0YWxsIGZsb3cuCgojIyBWZXJpZmljYXRpb24KCmBgYGJhc2gKIyBD" + + "aGVjayB0aGF0IGEgY29udHJvbC1wbGFuZSBwb2QgaGFzIHRoZSBpbmplY3RlZCBzZWNyZXQKa3Vi" + + "ZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHBvZCAtbiA8bmFtZXNw" + + "YWNlPiA8cG9kLW5hbWU+IFwKICAtbyBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9" + + "JwojIEV4cGVjdGVkOiBbeyJuYW1lIjoibnZjci1jcmVkcyJ9XQoKIyBDaGVjayB0aGUgS3l2ZXJu" + + "byBhbm5vdGF0aW9uCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdl" + + "dCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiBcCiAgLW8ganNvbnBhdGg9J3subWV0YWRh" + + "dGEuYW5ub3RhdGlvbnMubnZjZlwubnZpZGlhXC5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVk" + + "LWJ5fScKIyBFeHBlY3RlZDoga3l2ZXJubwoKIyBDaGVjayBwdWxsIGV2ZW50cwprdWJlY3RsIC0t" + + "Y29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZXZlbnRzIC1uIDxuYW1lc3BhY2U+" + + "IFwKICAtLXNvcnQtYnk9Jy5sYXN0VGltZXN0YW1wJyB8IGdyZXAgLWkgcHVsbAojIFNob3VsZCBz" + + "aG93ICJTdWNjZXNzZnVsbHkgcHVsbGVkIiBub3QgIjQwMSBVbmF1dGhvcml6ZWQiCgojIENoZWNr" + + "IHRoZSBjaGFydC9vcGVyYXRvciBtaXJyb3Igb24gdGhlIGNvbXB1dGUgY2x1c3RlcgprdWJlY3Rs" + + "IC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMg" + + "XAogIC1uIG52Y2Etc3lzdGVtCmBgYAoKIyMgV2hlbiBQdWxsIFNlY3JldHMgQXJlIE5vdCBOZWVk" + + "ZWQKCi0gKipBV1MgRUNSIHdpdGggSUFNIG5vZGUgcm9sZXMqKjogSWYgeW91ciBub2RlcyBoYXZl" + + "IGBBbWF6b25FQzJDb250YWluZXJSZWdpc3RyeVJlYWRPbmx5YCBJQU0gcG9saWN5LCBLdWJlcm5l" + + "dGVzIGNhbiBwdWxsIGZyb20gRUNSIHdpdGhvdXQgZXhwbGljaXQgc2VjcmV0cy4KLSAqKlB1Ymxp" + + "YyByZWdpc3RyaWVzKio6IE5vIHB1bGwgc2VjcmV0cyBuZWVkZWQuCi0gKipDU1AgYnVpbHQtaW4g" + + "Y3JlZGVudGlhbCBoZWxwZXJzKio6IEdLRSBBcnRpZmFjdCBSZWdpc3RyeSwgQXp1cmUgQUNSIHdp" + + "dGggbWFuYWdlZCBpZGVudGl0eSwgYW5kIHNpbWlsYXIgc2VydmljZXMuCgojIyBUcm91Ymxlc2hv" + + "b3RpbmcKCiMjIyBQb2RzIHN0aWxsIGluIEltYWdlUHVsbEJhY2tPZmYgYWZ0ZXIgYXBwbHlpbmcg" + + "cG9saWN5CgpUaGUgS3l2ZXJubyBwb2xpY3kgb25seSBhZmZlY3RzIHBvZHMgY3JlYXRlZCAqKmFm" + + "dGVyKiogdGhlIHBvbGljeSBpcyBhcHBsaWVkLiBEZWxldGUgc3R1Y2sgcG9kcyB0byB0cmlnZ2Vy" + + "IHJlY3JlYXRpb246CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDx0YXJnZXQtY29udGV4dD4g" + + "ZGVsZXRlIHBvZHMgLW4gPG5hbWVzcGFjZT4gLS1hbGwKYGBgCgojIyMgS3l2ZXJubyBhZG1pc3Np" + + "b24gY29udHJvbGxlciBub3QgcnVubmluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29u" + + "dHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgcG9kcyAtbiBreXZlcm5vCiMgQWxsIHBvZHMgc2hvdWxk" + + "IGJlIFJ1bm5pbmcKYGBgCgojIyMgUG9saWN5IG5vdCBtYXRjaGluZwoKYGBgYmFzaAprdWJlY3Rs" + + "IC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgY2x1c3RlcnBvbGljeSBudmNm" + + "LWFkZC1pbWFnZXB1bGxzZWNyZXRzCiMgU2hvdWxkIHNob3cgUkVBRFk6IFRydWUKYGBgCgojIyMg" + + "V3Jvbmcgc2VjcmV0IG5hbWUKClRoZSBwb2xpY3kgcmVmZXJlbmNlcyBgbnZjci1jcmVkc2AuIFZl" + + "cmlmeSB0aGUgc2VjcmV0IGV4aXN0cyB3aXRoIHRoYXQgZXhhY3QgbmFtZToKCmBgYGJhc2gKa3Vi" + + "ZWN0bCAtLWNvbnRleHQgPHRhcmdldC1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgLW4g" + + "PG5hbWVzcGFjZT4KYGBgClBLBwhLQjWoABYAAAAWAABQSwECFAAUAAgAAAAAACEAXcZ/2EoQAABK" + + "EAAAEgAJAAAAAAAAAAAAAAAAAAAAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4SUEsBAhQAFAAI" + + "AAAAAAAhAP9282dTYQAAU2EAACMACQAAAAAAAAAAAAAAkxAAAGRhdGEvbnZjZi1zZWxmLW1hbmFn" + + "ZWQtY2xpL1NLSUxMLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAJn2DaXdDQAA3Q0AADMACQAA" + + "AAAAAAAAAAAAQHIAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL2V4YW1wbGVzL2NpLXBpcGVs" + + "aW5lcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQChFOOBXQwAAF0MAAA0AAkAAAAAAAAAAAAA" + + "AIeAAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9tdWx0aS1jbHVzdGVyLm1k" + + "VVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEInSQ8FDQAABQ0AADcACQAAAAAAAAAAAAAAT40AAGRh" + + "dGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvYWRkLWNvbXB1dGUtcGxhbmUubWRVVAUA" + + "AQCmzhJQSwECFAAUAAgAAAAAACEA1N6NNJ8ZAACfGQAAOQAJAAAAAAAAAAAAAADCmgAAZGF0YS9u" + + "dmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kVVQFAAEA" + + "ps4SUEsBAhQAFAAIAAAAAAAhANJD3AQYJQAAGCUAADcACQAAAAAAAAAAAAAA0bQAAGRhdGEvbnZj" + + "Zi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvZGVwbG95LWFuZC1pbnZva2UubWRVVAUAAQCmzhJQ" + + "SwECFAAUAAgAAAAAACEAcpIsJr4OAAC+DgAAPQAJAAAAAAAAAAAAAABX2gAAZGF0YS9udmNmLXNl" + + "bGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9kaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZFVUBQABAKbO" + + "ElBLAQIUABQACAAAAAAAIQBCceYeASgAAAEoAAA6AAkAAAAAAAAAAAAAAInpAABkYXRhL252Y2Yt" + + "c2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2luc3RhbGwtZnJvbS1zY3JhdGNoLm1kVVQFAAEAps4S" + + "UEsBAhQAFAAIAAAAAAAhAKrhOrnIBwAAyAcAADkACQAAAAAAAAAAAAAA+xEBAGRhdGEvbnZjZi1z" + + "ZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvcm90YXRlLWNsdXN0ZXItandrcy5tZFVUBQABAKbOElBL" + + "AQIUABQACAAAAAAAIQDah2NW5CEAAOQhAAAuAAkAAAAAAAAAAAAAADMaAQBkYXRhL252Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3RlYXJkb3duLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAh" + + "AHIND2QhIwAAISMAADAACQAAAAAAAAAAAAAAfDwBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xp" + + "L3JlZmVyZW5jZS9jb21tYW5kcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBP7NZh4gcAAOIH" + + "AAAyAAkAAAAAAAAAAAAAAARgAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2Uv" + + "ZXhpdC1jb2Rlcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQCOwIjxNTIAADUyAAAtAAkAAAAA" + + "AAAAAAAAAE9oAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZmxhZ3MubWRV" + + "VAUAAQCmzhJQSwECFAAUAAgAAAAAACEA864ThHQRAAB0EQAANwAJAAAAAAAAAAAAAADomgEAZGF0" + + "YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQAB" + + "AKbOElBLAQIUABQACAAAAAAAIQARwxSTSWIAAEliAAAsAAkAAAAAAAAAAAAAAMqsAQBkYXRhL252" + + "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5tZFVUBQABAKbOElBLAQIUABQACAAA" + + "AAAAIQBHVWpWSlYAAEpWAAA0AAkAAAAAAAAAAAAAAHYPAgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2Vk" + + "LWluc3RhbGxhdGlvbi9ldmFscy9ldmFscy5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAAJS" + + "TkB/KAAAfygAAC8ACQAAAAAAAAAAAAAAK2YCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + + "bGF0aW9uL2V4YW1wbGVzLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAJZjvFkSMAAAEjAAAEwA" + + "CQAAAAAAAAAAAAAAEI8CAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVy" + + "ZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + + "ACEAtXpwO7UwAAC1MAAAOwAJAAAAAAAAAAAAAAClvwIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1p" + + "bnN0YWxsYXRpb24vcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + + "ACEAExHsjQoqAAAKKgAARAAJAAAAAAAAAAAAAADM8AIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1p" + + "bnN0YWxsYXRpb24vcmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWRVVAUAAQCmzhJQSwEC" + + "FAAUAAgAAAAAACEAOPknr7kHAAC5BwAAPwAJAAAAAAAAAAAAAABRGwMAZGF0YS9udmNmLXNlbGYt" + + "bWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQFAAEAps4S" + + "UEsBAhQAFAAIAAAAAAAhAEtCNagAFgAAABYAAD4ACQAAAAAAAAAAAAAAgCMDAGRhdGEvbnZjZi1z" + + "ZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEA" + + "ps4SUEsFBgAAAAAXABcArwkAAPU5AwAAAA==" var ( skillDataOnce sync.Once From 0d240a8cd03ee8db8e92a0731df3dfa324bb082a Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 30 Sep 2026 04:04:39 +0530 Subject: [PATCH 47/55] fix(nvcf-cli): fail check when the cluster validator cannot run, and exit 130 on interrupt Signed-off-by: rohithb --- .../reference/exit-codes.md | 2 +- .../nvcf-self-managed-cli/reference/flags.md | 2 +- src/clis/nvcf-cli/cmd/self_hosted_check.go | 19 + .../cmd/self_hosted_check_scope_test.go | 23 + .../agentskill/skilldata_generated.go | 4333 +++++++++-------- .../selfhosted/clustervalidator_test.go | 12 +- .../nvcf-cli/internal/selfhosted/preflight.go | 11 +- 7 files changed, 2227 insertions(+), 2175 deletions(-) diff --git a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/exit-codes.md b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/exit-codes.md index 1c6924095f..6b17b56cc3 100644 --- a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/exit-codes.md +++ b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/exit-codes.md @@ -6,7 +6,7 @@ Stable across subcommands. Use these to drive agent retry / surfacing logic. |---|---|---| | `0` | Success | All checks passed; install completed; deployment ACTIVE | | `1` | Generic error | Helm render failed; network unreachable; file not found; YAML parse error | -| `2` | Pre-flight check failed | A `check` result at error severity: Gateway API CRDs missing; kubectl not on PATH; default StorageClass absent. Warning-severity results, such as a validator that could not run, exit `0` | +| `2` | Pre-flight check failed | A `check` result at error severity: Gateway API CRDs missing; kubectl not on PATH; default StorageClass absent; a cluster-validator that could not run (RBAC denied, image pull failure, timeout). Warning-severity results exit `0` | | `3` | Admin auth failed | No token + `--non-interactive` set; ICMS rejected JWT; init endpoint unreachable | | `5` | Manifest apply or `--wait` timed out | Helm install timeout; check polled but didn't pass before duration | | `130` | Cancelled by SIGINT/SIGTERM | User Ctrl-C; CI budget exceeded; pod evicted | diff --git a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md index 19b255688b..e95df295a7 100644 --- a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md +++ b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md @@ -52,7 +52,7 @@ after the run, so the kubeconfig context needs permission to manage those. | `--cluster-validator-registries host:port,...` | Extra registries the control-plane validator probes for reachability. They are added to the registries the install pulls from: the validator image's registry, the stack's `global.image.registry`, and `quay.io` for the cert-manager ACME solver unless the stack sets `certManager.acmesolver.image`. `nvcr.io` is probed, as non-critical, only when neither the image nor the stack names a registry. Repeatable or comma-separated. Env: `NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES`; config key `cluster_validator_registries` | - | | `--cluster-validator-probe-image REF` | Image for the control-plane validator's node-to-node overlay probe. Needs `sh` and a busybox-style `nc`. Set a mirror for air-gapped clusters. Env: `NVCF_CLI_CLUSTER_VALIDATOR_PROBE_IMAGE`; config key `cluster_validator_probe_image` | `busybox:1.36` from Docker Hub | | `--cluster-validator-pull-secret NAME` | docker-registry Secret in `default` used to pull the validator image. When empty, the CLI looks for one in the NVCF namespaces and copies it into `default` for the run. Failing that, and only for an image on an NGC registry, it mints one from `NGC_API_KEY` | auto-detect | -| `--skip-cluster-validation` | Skip the in-cluster validator probe entirely. Env: `NVCF_CLI_SELFHOSTED_SKIP_CLUSTER_VALIDATION` | `false` | +| `--skip-cluster-validation` | Skip the in-cluster validator probe entirely. A validator that is configured but cannot run fails the check, so use this to opt out explicitly, for example when the cluster cannot pull the image. Env: `NVCF_CLI_SELFHOSTED_SKIP_CLUSTER_VALIDATION` | `false` | | `--no-cleanup` | Keep the validator Job, its pod, RBAC, pull secret and ConfigMap for debugging. A later check reclaims them after 24 hours; the result prints the `kubectl delete` command that removes them now | `false` | | `--show-logs` | Print the validator transcript to stderr after the check events. The transcript is not JSON, and `--json` also writes to stderr, so leave this off when a parser is reading the stream | `false` | diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index 67b233ef1f..9bd79e32f5 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -194,6 +194,16 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { // default, stays behind until a later check's orphan sweep. sigCtx, stop := signal.NotifyContext(c.Context(), os.Interrupt, syscall.SIGTERM) defer stop() + // Catch only the first signal. Restoring the default handler once it + // arrives lets a second Ctrl-C exit at once instead of waiting out the + // cleanup. + go func() { + <-sigCtx.Done() + stop() + }() + // interrupted is an explicit cancel, not the timeout below, which is a + // child of sigCtx and leaves it live. + interrupted := func() bool { return sigCtx.Err() != nil } ctx, cancel := context.WithTimeout(sigCtx, outerTimeout) defer cancel() @@ -281,6 +291,9 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { if selfHostedWait == "" { // Single-shot mode. lastResults = runOnce() + if interrupted() { + return &ExitCodeError{Code: 130, Msg: "interrupted"} + } emitCheckFinal(ctx, sink, lastResults) maybeShowClusterValidatorLogs(c.ErrOrStderr(), lastResults) if anyFailed(lastResults) { @@ -301,6 +314,9 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { for { lastResults = runOnce() + if interrupted() { + return &ExitCodeError{Code: 130, Msg: "interrupted"} + } if !anyFailed(lastResults) { emitCheckFinal(ctx, sink, lastResults) maybeShowClusterValidatorLogs(c.ErrOrStderr(), lastResults) @@ -315,6 +331,9 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { case <-ticker.C: // continue polling case <-ctx.Done(): + if interrupted() { + return &ExitCodeError{Code: 130, Msg: "interrupted"} + } return ctx.Err() } } diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go index 79db6a6cb6..a949b8fd6b 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go @@ -27,6 +27,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "nvcf-cli/internal/selfhosted" ) @@ -106,3 +107,25 @@ func TestCheck_LocalOnlyNotesSkippedClusterChecks(t *testing.T) { _ = rootCmd.Execute() assert.Contains(t, stderr.String(), "--local-only runs the local host checks only") } + +// An interrupted run reports the interrupt, not a verdict: with the validator +// cut short the results would otherwise read as a failure, or as a pass. +func TestCheck_InterruptExits130(t *testing.T) { + resetCheckFlags(t) + t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") + ctx, cancel := context.WithCancel(context.Background()) + cancel() + rootCmd.SetErr(&bytes.Buffer{}) + rootCmd.SetOut(&bytes.Buffer{}) + t.Cleanup(func() { rootCmd.SetErr(nil); rootCmd.SetOut(nil) }) + // Cobra keeps a subcommand's context from an earlier Execute, so set it + // on the command that runs. + selfHostedCheckCmd.SetContext(ctx) + t.Cleanup(func() { selfHostedCheckCmd.SetContext(context.Background()) }) + rootCmd.SetArgs([]string{"self-hosted", "check", "--all", "--local-only", "--json"}) + err := rootCmd.Execute() + + var exitErr *ExitCodeError + require.ErrorAs(t, err, &exitErr) + assert.Equal(t, 130, exitErr.Code) +} diff --git a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go index 2655ad84e6..7c81b16cb3 100644 --- a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go +++ b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go @@ -31,7 +31,7 @@ import ( const skillDataZipBase64 = "" + "UEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAASAAkAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4S" + "ewogICJzY2hlbWFWZXJzaW9uIjogMSwKICAiZ2VuZXJhdGVkQXQiOiAiMTk3MC0wMS0wMVQwMDow" + - "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDQ3OTYsCiAgImZp" + + "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDQ5ODgsCiAgImZp" + "bGVzIjogWwogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvU0tJTEwu" + "bWQiLAogICAgICAic2hhMjU2IjogImFhOWY3ZTI0NmYzODA0YjMzNDNiNjU2MWU1YmNmZTdiYjcy" + "YjI0MDIxOTMzZTA0OWY4NWUwMDI4OTAzYmJmYTQiLAogICAgICAic2l6ZSI6IDI0OTE1CiAgICB9" + @@ -68,12 +68,12 @@ const skillDataZipBase64 = "" + "b21tYW5kcy5tZCIsCiAgICAgICJzaGEyNTYiOiAiMmI0YjAzNmU3NTA3MDZiOWUzYjgxZmNkNjAy" + "YzcwNmY3NGY3N2Y2MjQwZmI3YWFkNjIwYzg3OWZmNzQ5NmNkOCIsCiAgICAgICJzaXplIjogODk5" + "MwogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVy" + - "ZW5jZS9leGl0LWNvZGVzLm1kIiwKICAgICAgInNoYTI1NiI6ICJjNDgzOTMwM2MwNGU4ZjUzYmVh" + - "N2FkMzQyZGI1MGY4YjRmNzI5ODUzNjEzOTJlZjhjMDcyNDFkMmZhM2I4MDc3IiwKICAgICAgInNp" + - "emUiOiAyMDE4CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1j" + - "bGkvcmVmZXJlbmNlL2ZsYWdzLm1kIiwKICAgICAgInNoYTI1NiI6ICIyNzYzYWY2ZjA2YzYzM2E4" + - "YzU5MzY4NTJkYWIzMmViYzgwMDQ1MTFiZDdkZmNhOGQ2ZTZhMmM0N2Q3N2VmNTcxIiwKICAgICAg" + - "InNpemUiOiAxMjg1MwogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + + "ZW5jZS9leGl0LWNvZGVzLm1kIiwKICAgICAgInNoYTI1NiI6ICJiMzkyNTFlYjMyZmRmNmFjMzBl" + + "NDBmMzRmYjQ0OGJiZDI4Y2UxYWE5NjZjY2JlMDg3ZDhmNjA5Zjg0N2Q3OGI3IiwKICAgICAgInNp" + + "emUiOiAyMDYwCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1j" + + "bGkvcmVmZXJlbmNlL2ZsYWdzLm1kIiwKICAgICAgInNoYTI1NiI6ICI2OTVkMjEzOGUxYzA2OWM5" + + "ZDA1ZjMyNjU5ZWUyMWMyNWEyY2YyMjRhMWE2ZjhiMjkyYWIwYTQwMTliZThjNDBlIiwKICAgICAg" + + "InNpemUiOiAxMzAwMwogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + "ZWQtY2xpL3JlZmVyZW5jZS90cm91Ymxlc2hvb3RpbmcubWQiLAogICAgICAic2hhMjU2IjogImE2" + "MzA4NGUyMjQ5ZjFkMTU0YzU5ODFlNGEwNzJiN2M3ODRiODVlYTE0NjA4NjUxNWVhYjRhYjY3MGE5" + "NDBlOTQiLAogICAgICAic2l6ZSI6IDQ0NjgKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogIm52" + @@ -103,7 +103,7 @@ const skillDataZipBase64 = "" + "aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9wdWxsLXNlY3Jl" + "dHMubWQiLAogICAgICAic2hhMjU2IjogImVjMWYzZmZjZDE3ZTVmOTU4M2ZlZTM5NzQ0ZWU4OTdk" + "NDY2YmMzY2Y2Mzg5Mjk0MjY0ZDg5ZTdmOWVkMDFiODciLAogICAgICAic2l6ZSI6IDU2MzIKICAg" + - "IH0KICBdCn0KUEsHCF3Gf9hKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + + "IH0KICBdCn0KUEsHCAqF8NhKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + "dGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQFAAEAps4SLS0tCm5hbWU6IG52Y2Yt" + "c2VsZi1tYW5hZ2VkLWNsaQpkZXNjcmlwdGlvbjogfAogIEluc3RhbGwsIG9wZXJhdGUsIGFuZCB0" + "ZWFyIGRvd24gc2VsZi1ob3N0ZWQgTlZJRElBIENsb3VkIEZ1bmN0aW9ucyAoTlZDRikKICBkZXBs" + @@ -1619,2170 +1619,2173 @@ const skillDataZipBase64 = "" + "ZWxtIHJlbmRlciBmYWlsZWQ7IG5ldHdvcmsgdW5yZWFjaGFibGU7IGZpbGUgbm90IGZvdW5kOyBZ" + "QU1MIHBhcnNlIGVycm9yIHwKfCBgMmAgfCBQcmUtZmxpZ2h0IGNoZWNrIGZhaWxlZCB8IEEgYGNo" + "ZWNrYCByZXN1bHQgYXQgZXJyb3Igc2V2ZXJpdHk6IEdhdGV3YXkgQVBJIENSRHMgbWlzc2luZzsg" + - "a3ViZWN0bCBub3Qgb24gUEFUSDsgZGVmYXVsdCBTdG9yYWdlQ2xhc3MgYWJzZW50LiBXYXJuaW5n" + - "LXNldmVyaXR5IHJlc3VsdHMsIHN1Y2ggYXMgYSB2YWxpZGF0b3IgdGhhdCBjb3VsZCBub3QgcnVu" + - "LCBleGl0IGAwYCB8CnwgYDNgIHwgQWRtaW4gYXV0aCBmYWlsZWQgfCBObyB0b2tlbiArIGAtLW5v" + - "bi1pbnRlcmFjdGl2ZWAgc2V0OyBJQ01TIHJlamVjdGVkIEpXVDsgaW5pdCBlbmRwb2ludCB1bnJl" + - "YWNoYWJsZSB8CnwgYDVgIHwgTWFuaWZlc3QgYXBwbHkgb3IgYC0td2FpdGAgdGltZWQgb3V0IHwg" + - "SGVsbSBpbnN0YWxsIHRpbWVvdXQ7IGNoZWNrIHBvbGxlZCBidXQgZGlkbid0IHBhc3MgYmVmb3Jl" + - "IGR1cmF0aW9uIHwKfCBgMTMwYCB8IENhbmNlbGxlZCBieSBTSUdJTlQvU0lHVEVSTSB8IFVzZXIg" + - "Q3RybC1DOyBDSSBidWRnZXQgZXhjZWVkZWQ7IHBvZCBldmljdGVkIHwKCiMjIEhvdyBhbiBhZ2Vu" + - "dCBzaG91bGQgcmVhY3QKCnwgQ29kZSB8IEFnZW50IGJlaGF2aW9yIHwKfC0tLXwtLS18CnwgYDBg" + - "IHwgQ29udGludWUgLyByZXBvcnQgc3VjY2Vzcy4gfAp8IGAxYCB8IFN1cmZhY2Ugc3RkZXJyIHRv" + - "IHVzZXI7IGFzayBiZWZvcmUgYW55IHJldHJ5LiBHZW5lcmljIGVycm9ycyB1c3VhbGx5IG5lZWQg" + - "YSBodW1hbiB0byByZWFkIHRoZSBtZXNzYWdlLiB8CnwgYDJgIHwgU3VyZmFjZSBmYWlsZWQgY2hl" + - "Y2tzICsgdGhlaXIgYGhpbnRVUkxgLiBEb24ndCBwcm9wb3NlIGB1cGAgdW50aWwgdGhlIHVzZXIg" + - "Zml4ZXMgcHJlcmVxcy4gfAp8IGAzYCB8IFN1Z2dlc3QgYG52Y2YtY2xpIGluaXRgIChpbnRlcmFj" + - "dGl2ZSkgT1IgYC0tdG9rZW49JEpXVGAgKENJKS4gRG9uJ3QgYXV0by1taW50IHdpdGhvdXQgdXNl" + - "ciBPSy4gfAp8IGA1YCB8IEFzayB1c2VyIGlmIHRoZXkgd2FudCB0byB3YWl0IGxvbmdlciwgZGln" + - "IGludG8gdGhlIHN0YWxsZWQgY29tcG9uZW50LCBvciBjYW5jZWwuIHwKfCBgMTMwYCB8IERvbid0" + - "IHJldHJ5IGF1dG9tYXRpY2FsbHk7IHVzZXIgZXhwbGljaXRseSBjYW5jZWxsZWQuIENvbmZpcm0g" + - "YmVmb3JlIHJlLXJ1bm5pbmcuIHwKCiMjIFdoZXJlIHRvIGZpbmQgbW9yZSBkZXRhaWwKCmBjaGVj" + - "a2AgcmVwb3J0cyBpdHMgb3V0Y29tZSBpbiBvbmUgYGZpbmFsYCBldmVudCAoYHN1Y2Nlc3NgLCBg" + - "dmVyZGljdGAsIGBmYWlsZWRDb3VudGApIGFuZCBuZXZlciBlbWl0cyBgcGhhc2VfZmFpbGVkYDsg" + - "c2VlIGBleGFtcGxlcy9jaS1waXBlbGluZXMubWRgLiBFdmVyeSBvdGhlciBub24temVybyBleGl0" + - "IGVtaXRzIGEgc3RydWN0dXJlZCBgcGhhc2VfZmFpbGVkYCBKU09OIGV2ZW50IHdpdGggYGVyckNh" + - "dGVnb3J5YCwgYGVyck1lc3NhZ2VgLCBgcmVtZWRpYXRpb25gIChhcnJheSksIGByZXRyeUNsYXNz" + - "YCAoZW51bTogYG5vbmV8aW1tZWRpYXRlfGJhY2tvZmZ8YWZ0ZXJfcmVtZWRpYXRpb258dW5rbm93" + - "bmApLCBgcmV0cnlBZnRlclNlY2AgKGludCwgb3B0aW9uYWwpLCBhbmQgYHJhd2AgKHN1YnByb2Nl" + - "c3MgKyBIVFRQICsgS3ViZXJuZXRlcyBzaWduYWwpLiBBbHdheXMgY29uc3VtZSB0aGVzZSBpbiBg" + - "LS1qc29uYCBtb2RlIHJhdGhlciB0aGFuIHBhcnNpbmcgRW5nbGlzaCBmcm9tIHN0ZGVyci4KUEsH" + - "CE/s1mHiBwAA4gcAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAALQAJAGRhdGEvbnZjZi1zZWxm" + - "LW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9mbGFncy5tZFVUBQABAKbOEiMgYG52Y2YtY2xpYCBmbGFn" + - "IHJlZmVyZW5jZQoKIyMgR2xvYmFsIGZsYWdzIChldmVyeSBzdWJjb21tYW5kKQoKfCBGbGFnIHwg" + - "UHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tY29uZmlnIEZJTEVgIHwgQ29u" + - "ZmlnIGZpbGUgcGF0aCB8IGAkSE9NRS8ubnZjZi1jbGkueWFtbGAgfAp8IGAtLWRlYnVnYCB8IFZl" + - "cmJvc2UgSFRUUCBsb2dnaW5nIG9uIHN0ZGVyciB8IGBmYWxzZWAgfAp8IGAtLWpzb25gIHwgSlNP" + - "TkwgZXZlbnRzIG9uIHN0ZGVyciB8IGF1dG8gKG9mZiBpbiBUVFksIG9uIHVuZGVyIGAtLW5vbi1p" + - "bnRlcmFjdGl2ZWApIHwKCiMjIGBzZWxmLWhvc3RlZGAgcGFyZW50IChwZXJzaXN0ZW50IGFjcm9z" + - "cyBzdWJjb21tYW5kcykKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0t" + - "fAp8IGAtLWNvbnRyb2wtcGxhbmUtc3RhY2s94oCmYCB8IENvbnRyb2wtcGxhbmUgYnVuZGxlIHNv" + - "dXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwgb3IgYG9jaTovL2AgVVJMIHwgZW1iZWRkZWQgT0NJ" + - "IFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24gfAp8IGAtLWNvbXB1dGUtcGxhbmUtc3RhY2s94oCm" + - "YCB8IENvbXB1dGUtcGxhbmUgYnVuZGxlIHNvdXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwgb3Ig" + - "YG9jaTovL2AgVVJMIHwgZW1iZWRkZWQgT0NJIFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24gfAp8" + - "IGAtLWVudj1sb2NhbFx8cHJkXHzigKZgIHwgSGVsbWZpbGUgZW52aXJvbm1lbnQgbmFtZSB8IGBs" + - "b2NhbGAgZm9yIGRldiBidWlsZHMsIGBwcmRgIGZvciByZWxlYXNlcyB8CnwgYC0tbm9uLWludGVy" + - "YWN0aXZlYCB8IERpc2FibGUgYWxsIHN0ZGluIHByb21wdHMgfCBgZmFsc2VgIHwKfCBgLS10b2tl" + - "bj0kSldUYCB8IEFkbWluIEpXVCwgb3ZlcnJpZGVzIHN0b3JlZCBzZXNzaW9uIHwgLSB8CnwgYC0t" + - "bm8tYXBwbHlgIHwgYGluc3RhbGxgIG9ubHkgLSBlbWl0IFlBTUwsIGRvIG5vdCBrdWJlY3RsIGFw" + - "cGx5IHwgYGZhbHNlYCB8CnwgYC0tb3V0cHV0PXRleHRcfGpzb25gIHwgTGVnYWN5IGFsaWFzIGZv" + - "ciBgLS1qc29uYCAoZGVwcmVjYXRlZCwgcmVtb3ZlZCBpbiBuZXh0IG1ham9yKSB8IGB0ZXh0YCB8" + - "CnwgYC0tcGxhaW5gIHwgRm9yY2UgcGxhaW4gc3RyZWFtaW5nIG91dHB1dCB8IGF1dG8tZGV0ZWN0" + - "IHwKfCBgLS13YWl0IERVUkFUSU9OYCB8IGBjaGVja2Agb25seTsgYmxvY2sgdW50aWwgcGFzcyB8" + - "IC0gfAp8IGAtLWNvbnRyb2wtcGxhbmUtY29udGV4dCBDVFhgIHwga3ViZWN0bCBjb250ZXh0IGZv" + - "ciBjb250cm9sIHBsYW5lIChSRVEtMjApIHwgY3VycmVudCBjb250ZXh0IHwKfCBgLS1jb21wdXRl" + - "LXBsYW5lLWNvbnRleHQgQ1RYYCB8IGt1YmVjdGwgY29udGV4dCBmb3IgY29tcHV0ZSBwbGFuZSAo" + - "UkVRLTIwKSB8IGN1cnJlbnQgY29udGV4dCB8CnwgYC0taWNtcy11cmwgVVJMYCB8IFB1YmxpYyBJ" + - "Q01TIFVSTDsgcmVxdWlyZWQgd2hlbiBjb250ZXh0cyBkaWZmZXIgfCBkZXJpdmVkIGZyb20gYGJh" + - "c2VfaHR0cF91cmxgIHwKfCBgLS1sb2NhbC1vbmx5YCB8IGBjaGVja2Agb25seTsgcnVuIHRoZSBs" + - "b2NhbC1ob3N0IGNoZWNrcyBhbmQgc2tpcCBhbGwga3ViZWN0bCBjb250YWN0LCB3aGF0ZXZlciBz" + - "Y29wZSBmbGFnIGlzIHBhc3NlZC4gVGhlIENMSSBwcmludHMgYSBub3RlIHNheWluZyBzby4gRW52" + - "OiBgTlZDRl9DTElfU0VMRkhPU1RFRF9MT0NBTF9PTkxZYCB8IGBmYWxzZWAgfAoKIyMgYGNoZWNr" + - "YC1zcGVjaWZpYwoKQXQgbGVhc3Qgb25lIG9mIGAtLXByZWAsIGAtLWNvbnRyb2wtcGxhbmVgLCBg" + - "LS1jb21wdXRlLXBsYW5lYCwgb3IgYC0tYWxsYCBpcwpyZXF1aXJlZC4gRWFjaCBzZWxlY3RzIGEg" + - "cm9sZTsgb25seSB0aGUgc2VsZWN0ZWQgcm9sZXMgY29udGFjdCBhIGNsdXN0ZXIuCgp8IEZsYWcg" + - "fCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1wcmVgIHwgUHJlLWZsaWdo" + - "dDogbG9jYWwtaG9zdCB0b29scyBwbHVzIGNsdXN0ZXIgcmVhZGluZXNzLiBTa2lwcyBTSVMgcmVh" + - "Y2hhYmlsaXR5LCBzaW5jZSBTSVMgaXMgbm90IGluc3RhbGxlZCB5ZXQsIHVubGVzcyBgLS1hbGxg" + - "IG9yIGAtLWNvbXB1dGUtcGxhbmVgIGlzIGFsc28gcGFzc2VkIHwgYGZhbHNlYCB8CnwgYC0tY29u" + - "dHJvbC1wbGFuZWAgfCBDb250cm9sLXBsYW5lIGNoZWNrcyB8IGBmYWxzZWAgfAp8IGAtLWNvbXB1" + - "dGUtcGxhbmVgIHwgQ29tcHV0ZS1wbGFuZSBjaGVja3MgfCBgZmFsc2VgIHwKfCBgLS1hbGxgIHwg" + - "RXZlcnkgY2F0ZWdvcnksIGluY2x1ZGluZyBTSVMgcmVhY2hhYmlsaXR5IHdoZW4gY29tYmluZWQg" + - "d2l0aCBgLS1wcmVgIHwgYGZhbHNlYCB8CnwgYC0tY2x1c3Rlci1uYW1lIE5BTUVgIHwgQ2x1c3Rl" + - "ciBuYW1lIGZvciBjb21wdXRlLXBsYW5lIGNoZWNrcyB8IC0gfAp8IGAtLXNraXAtaW5vdGlmeS1j" + - "aGVja2AgfCBTa2lwIHRoZSBwZXItbm9kZSBpbm90aWZ5LWxpbWl0cyBwcm9iZS4gTmVlZGVkIHdo" + - "ZW4gdGhlIGt1YmVjb25maWcgdXNlciBjYW5ub3QgY3JlYXRlIHBvZHMgaW4gYGRlZmF1bHRgLiBF" + - "bnY6IGBOVkNGX0NMSV9TRUxGSE9TVEVEX1NLSVBfSU5PVElGWWAgfCBgZmFsc2VgIHwKCiMjIyBD" + - "bHVzdGVyLXZhbGlkYXRvciBmbGFncwoKVGhlIHZhbGlkYXRvciBydW5zIGFzIGEgSm9iIGluIHRo" + - "ZSBjbHVzdGVyIGJlaW5nIGNoZWNrZWQuIFRoZSBDTEkgY3JlYXRlcyBhClNlcnZpY2VBY2NvdW50" + - "LCBDbHVzdGVyUm9sZSwgYW5kIENsdXN0ZXJSb2xlQmluZGluZyBmb3IgaXQgYW5kIHJlbW92ZXMg" + - "dGhlbQphZnRlciB0aGUgcnVuLCBzbyB0aGUga3ViZWNvbmZpZyBjb250ZXh0IG5lZWRzIHBlcm1p" + - "c3Npb24gdG8gbWFuYWdlIHRob3NlLgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0t" + - "fC0tLXwtLS18CnwgYC0tY2x1c3Rlci12YWxpZGF0b3ItaW1hZ2UgUkVGYCB8IFZhbGlkYXRvciBp" + - "bWFnZS4gUmVzb2x1dGlvbiBvcmRlcjogZmxhZywgYE5WQ0ZfQ0xJX0NMVVNURVJfVkFMSURBVE9S" + - "X0lNQUdFYCwgY29uZmlnIGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfaW1hZ2VgLiBBIHJlZiB3aXRo" + - "IG5vIHRhZyBkaXNjb3ZlcnMgdGhlIGxhdGVzdCBzdGFibGUgdGFnIGZyb20gdGhlIHJlZ2lzdHJ5" + - "LiBVbnNldCBldmVyeXdoZXJlIHNraXBzIHRoZSBwcm9iZSB3aXRoIGEgd2FybmluZyB8IC0gfAp8" + - "IGAtLWNsdXN0ZXItdmFsaWRhdG9yLXJlZ2lzdHJpZXMgaG9zdDpwb3J0LC4uLmAgfCBFeHRyYSBy" + - "ZWdpc3RyaWVzIHRoZSBjb250cm9sLXBsYW5lIHZhbGlkYXRvciBwcm9iZXMgZm9yIHJlYWNoYWJp" + - "bGl0eS4gVGhleSBhcmUgYWRkZWQgdG8gdGhlIHJlZ2lzdHJpZXMgdGhlIGluc3RhbGwgcHVsbHMg" + - "ZnJvbTogdGhlIHZhbGlkYXRvciBpbWFnZSdzIHJlZ2lzdHJ5LCB0aGUgc3RhY2sncyBgZ2xvYmFs" + - "LmltYWdlLnJlZ2lzdHJ5YCwgYW5kIGBxdWF5LmlvYCBmb3IgdGhlIGNlcnQtbWFuYWdlciBBQ01F" + - "IHNvbHZlciB1bmxlc3MgdGhlIHN0YWNrIHNldHMgYGNlcnRNYW5hZ2VyLmFjbWVzb2x2ZXIuaW1h" + - "Z2VgLiBgbnZjci5pb2AgaXMgcHJvYmVkLCBhcyBub24tY3JpdGljYWwsIG9ubHkgd2hlbiBuZWl0" + - "aGVyIHRoZSBpbWFnZSBub3IgdGhlIHN0YWNrIG5hbWVzIGEgcmVnaXN0cnkuIFJlcGVhdGFibGUg" + - "b3IgY29tbWEtc2VwYXJhdGVkLiBFbnY6IGBOVkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9SRUdJ" + - "U1RSSUVTYDsgY29uZmlnIGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfcmVnaXN0cmllc2AgfCAtIHwK" + - "fCBgLS1jbHVzdGVyLXZhbGlkYXRvci1wcm9iZS1pbWFnZSBSRUZgIHwgSW1hZ2UgZm9yIHRoZSBj" + - "b250cm9sLXBsYW5lIHZhbGlkYXRvcidzIG5vZGUtdG8tbm9kZSBvdmVybGF5IHByb2JlLiBOZWVk" + - "cyBgc2hgIGFuZCBhIGJ1c3lib3gtc3R5bGUgYG5jYC4gU2V0IGEgbWlycm9yIGZvciBhaXItZ2Fw" + - "cGVkIGNsdXN0ZXJzLiBFbnY6IGBOVkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9QUk9CRV9JTUFH" + - "RWA7IGNvbmZpZyBrZXkgYGNsdXN0ZXJfdmFsaWRhdG9yX3Byb2JlX2ltYWdlYCB8IGBidXN5Ym94" + - "OjEuMzZgIGZyb20gRG9ja2VyIEh1YiB8CnwgYC0tY2x1c3Rlci12YWxpZGF0b3ItcHVsbC1zZWNy" + - "ZXQgTkFNRWAgfCBkb2NrZXItcmVnaXN0cnkgU2VjcmV0IGluIGBkZWZhdWx0YCB1c2VkIHRvIHB1" + - "bGwgdGhlIHZhbGlkYXRvciBpbWFnZS4gV2hlbiBlbXB0eSwgdGhlIENMSSBsb29rcyBmb3Igb25l" + - "IGluIHRoZSBOVkNGIG5hbWVzcGFjZXMgYW5kIGNvcGllcyBpdCBpbnRvIGBkZWZhdWx0YCBmb3Ig" + - "dGhlIHJ1bi4gRmFpbGluZyB0aGF0LCBhbmQgb25seSBmb3IgYW4gaW1hZ2Ugb24gYW4gTkdDIHJl" + - "Z2lzdHJ5LCBpdCBtaW50cyBvbmUgZnJvbSBgTkdDX0FQSV9LRVlgIHwgYXV0by1kZXRlY3QgfAp8" + - "IGAtLXNraXAtY2x1c3Rlci12YWxpZGF0aW9uYCB8IFNraXAgdGhlIGluLWNsdXN0ZXIgdmFsaWRh" + - "dG9yIHByb2JlIGVudGlyZWx5LiBFbnY6IGBOVkNGX0NMSV9TRUxGSE9TVEVEX1NLSVBfQ0xVU1RF" + - "Ul9WQUxJREFUSU9OYCB8IGBmYWxzZWAgfAp8IGAtLW5vLWNsZWFudXBgIHwgS2VlcCB0aGUgdmFs" + - "aWRhdG9yIEpvYiwgaXRzIHBvZCwgUkJBQywgcHVsbCBzZWNyZXQgYW5kIENvbmZpZ01hcCBmb3Ig" + - "ZGVidWdnaW5nLiBBIGxhdGVyIGNoZWNrIHJlY2xhaW1zIHRoZW0gYWZ0ZXIgMjQgaG91cnM7IHRo" + - "ZSByZXN1bHQgcHJpbnRzIHRoZSBga3ViZWN0bCBkZWxldGVgIGNvbW1hbmQgdGhhdCByZW1vdmVz" + - "IHRoZW0gbm93IHwgYGZhbHNlYCB8CnwgYC0tc2hvdy1sb2dzYCB8IFByaW50IHRoZSB2YWxpZGF0" + - "b3IgdHJhbnNjcmlwdCB0byBzdGRlcnIgYWZ0ZXIgdGhlIGNoZWNrIGV2ZW50cy4gVGhlIHRyYW5z" + - "Y3JpcHQgaXMgbm90IEpTT04sIGFuZCBgLS1qc29uYCBhbHNvIHdyaXRlcyB0byBzdGRlcnIsIHNv" + - "IGxlYXZlIHRoaXMgb2ZmIHdoZW4gYSBwYXJzZXIgaXMgcmVhZGluZyB0aGUgc3RyZWFtIHwgYGZh" + - "bHNlYCB8CgojIyBgdXBgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8Cnwt" + - "LS18LS0tfC0tLXwKfCBgLS1jbHVzdGVyLW5hbWUgTkFNRWAgfCBJQ01TIGNsdXN0ZXIgcm93IGlk" + - "ZW50aWZpZXIgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLW5jYS1pZCBJRGAgfCBOQ0EgYWNjb3VudCBJ" + - "RCB8IGBudmNmLWRlZmF1bHRgIHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IENsdXN0ZXIgcmVnaW9u" + - "IHwgYHVzLXdlc3QtMWAgfAp8IGAtLXBsYW4tb25seWAgfCBEcnktcnVuOyBlbWl0IHBoYXNlIHBs" + - "YW4gKyBFVEFzIHdpdGhvdXQgY2hhbmdlcyB8IGBmYWxzZWAgfAoKIyMgYHN0YXR1c2Atc3BlY2lm" + - "aWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0" + - "ZXItbmFtZSBOQU1FYCB8IExpbWl0IHRvIG9uZSBjb21wdXRlIHBsYW5lIHwgLSAoY29udHJvbCAr" + - "IGFsbCBjbHVzdGVycykgfAp8IGAtLXdhdGNoYCB8IExpdmUgcmUtcmVuZGVyIHwgYGZhbHNlYCB8" + - "CnwgYC0td2F0Y2gtaW50ZXJ2YWwgRFVSYCB8IGAtLXdhdGNoYCBjYWRlbmNlIHwgYDVzYCB8Cnwg" + - "YC0tY29tcG9uZW50IE5BTUVgIHwgRmlsdGVyIGNvbXBvbmVudHMgcGFuZWwgfCBhbGwgfAp8IGAt" + - "LW5vLWV2ZW50c2AgfCBTa2lwIGV2ZW50cyBwYW5lbCB8IGBmYWxzZWAgfAoKIyMgYGNsdXN0ZXIg" + - "cmVnaXN0ZXJgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0t" + - "fC0tLXwKfCBgLS1uYW1lIE5BTUVgIHwgQ2x1c3RlciBuYW1lIChyZXF1aXJlZCkgfCAtIHwKfCBg" + - "LS1uY2EtaWQgSURgIHwgTkNBIElEIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1yZWdpb24gUkVHSU9O" + - "YCB8IFJlZ2lvbiB8IGB1cy13ZXN0LTFgIHwKfCBgLS1pY21zLXVybCBVUkxgIHwgSUNNUyBlbmRw" + - "b2ludCB8IGZyb20gY29uZmlnIHwKfCBgLS1pZ25vcmUtZXhpc3RpbmdgIHwgTWF0Y2gtb3ItY3Jl" + - "YXRlIGluc3RlYWQgb2YgZmFpbC1vbi1leGlzdHMgfCBgZmFsc2VgIHwKCiMjIGBhcGkta2V5IGdl" + - "bmVyYXRlYC1zcGVjaWZpYwoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwt" + - "LS18CnwgYC0tZm9yIGZ1bmN0aW9uXHx0YXNrYCB8IEdlbmVyYXRlIG9ubHkgdGhlIHNwZWNpZmll" + - "ZCBrZXkgdHlwZSB8IChvbWl0IHRvIGdlbmVyYXRlIGJvdGgpIHwKfCBgLS1kZXNjcmlwdGlvbiBU" + - "RVhUYCB8IEh1bWFuLXJlYWRhYmxlIGxhYmVsIGZvciB0aGUga2V5IHwgYEdlbmVyYXRlZCBieSBu" + - "dmNmLWNsaWAgfAp8IGAtLWV4cGlyZXMtaW4gRFVSQVRJT05gIHwgRXhwaXJ5IG9mZnNldCAoZS5n" + - "LiBgMjRoYCwgYDdkYCk7IHBhcnNlZCBhcyBleHRlbmRlZCBkdXJhdGlvbiB8IGAyNGhgIHwKfCBg" + - "LS1zY29wZXMgU0NPUEVbLFNDT1BFXWAgfCBPdmVycmlkZSBkZWZhdWx0IHNjb3BlczsgcmVxdWly" + - "ZXMgYC0tZm9yYCB8IChzZXJ2aWNlIGRlZmF1bHRzKSB8CnwgYC0tdmFsaWRhdGVgIHwgVmFsaWRh" + - "dGUgZWFjaCBnZW5lcmF0ZWQga2V5IGltbWVkaWF0ZWx5IGFmdGVyIG1pbnRpbmcgfCBgZmFsc2Vg" + - "IHwKCkV4dGVuZGVkIGR1cmF0aW9uIHVuaXRzOiBgc2AgKHNlY29uZHMpLCBgbWAgKG1pbnV0ZXMp" + - "LCBgaGAgKGhvdXJzKSwgYGRgIChkYXlzKSwgYHdgICh3ZWVrcykuCgojIyBgZnVuY3Rpb24gY3Jl" + - "YXRlYC1zcGVjaWZpYwoKYC0taW5wdXQtZmlsZSBGSUxFYCBpcyByZWNvbW1lbmRlZCBmb3IgcmVw" + - "ZWF0YWJsZSBmdW5jdGlvbiBkZWZpbml0aW9ucy4gRm9yIGFkLWhvYyBjcmVhdGVzOgoKfCBGbGFn" + - "IHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tbmFtZSBOQU1FYCB8IEZ1" + - "bmN0aW9uIG5hbWUgfCAtIHwKfCBgLS1pbWFnZSBJTUFHRWAgfCBDb250YWluZXIgaW1hZ2UgfCAt" + - "IHwKfCBgLS1pbmZlcmVuY2UtdXJsIFVSSWAgfCBDb250YWluZXIgaW5mZXJlbmNlIGVuZHBvaW50" + - "IHwgLSB8CnwgYC0taW5mZXJlbmNlLXBvcnQgUE9SVGAgfCBDb250YWluZXIgaW5mZXJlbmNlIHBv" + - "cnQgfCAtIHwKfCBgLS1mdW5jdGlvbi10eXBlIERFRkFVTFRcfFNUUkVBTUlOR1x8TExNYCB8IEZ1" + - "bmN0aW9uIHR5cGUgfCBgREVGQVVMVGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hBUlRgIHwgSGVsbSBj" + - "aGFydCBVUkwgb3IgT0NJIHJlZmVyZW5jZS4gQ2FuIGJlIHVzZWQgd2l0aCBgLS1mdW5jdGlvbi10" + - "eXBlPUxMTWAgZm9yIGNoYXJ0LXBhY2thZ2VkIExMTSB3b3JrbG9hZHMuIHwgLSB8CnwgYC0taGVs" + - "bS1jaGFydC1zZXJ2aWNlIE5BTUVgIHwgS3ViZXJuZXRlcyBTZXJ2aWNlIG5hbWUgZXhwb3NlZCBi" + - "eSB0aGUgY2hhcnQuIFJlcXVpcmVkIHdoZW4gYC0taGVsbS1jaGFydGAgaXMgc2V0LiB8IC0gfAp8" + - "IGAtLW1vZGVscyBOQU1FOlZFUlNJT046VVJJYCB8IFN0YW5kYXJkIG1vZGVsIGFydGlmYWN0OyBy" + - "ZXBlYXRhYmxlIHwgLSB8CnwgYC0tbGxtLW1vZGVsIFNQRUNgIHwgTExNIG1vZGVsIGNvbmZpZzsg" + - "Zm9ybWF0IGBuYW1lPTxtb2RlbD4sdXJpcz08dXJpPlx8PHVyaT4scm91dGluZ01ldGhvZD08bWV0" + - "aG9kPix0b2tlblJhdGVMaW1pdD08bGltaXQ+YDsgcmVwZWF0YWJsZS4gVG9rZW4gbGltaXRzIHVz" + - "ZSBgPHZhbHVlPi08dW5pdD5gIHdpdGggYFNgLCBgTWAsIGBIYCwgYERgLCBvciBgV2AsIGZvciBl" + - "eGFtcGxlIGAxMDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBmb3IgY29tYmluZWQgdG9rZW4gbGltaXRz" + - "IGJlY2F1c2UgaW5saW5lIHNwZWNzIHVzZSBjb21tYXMgYXMgZmllbGQgc2VwYXJhdG9ycy4gfCAt" + - "IHwKfCBgLS1sbG0tZGVmYXVsdC1wcmlvcml0eSBQUklPUklUWWAgfCBGdW5jdGlvbi1sZXZlbCBk" + - "ZWZhdWx0IHJlcXVlc3QgcHJpb3JpdHkuIExvd2VyIHZhbHVlcyBoYXZlIGhpZ2hlciBwcmlvcml0" + - "eS4gfCAtIHwKfCBgLS1sbG0tcGVyLWFjY291bnQtcHJpb3JpdHkgTkNBLUlEOlBSSU9SSVRZYCB8" + - "IFBlci1hY2NvdW50IHByaW9yaXR5IG92ZXJyaWRlOyByZXBlYXRhYmxlOyBzdXBwb3J0cyB1cCB0" + - "byA2NCBkaXN0aW5jdCBOQ0EgSUQgb3ZlcnJpZGVzLiBSZXF1aXJlcyBhIGRlZmF1bHQgcHJpb3Jp" + - "dHkuIHwgLSB8CgpJbiBKU09OIGFuZCBpbmxpbmUgc3BlY3MsIExMTSBmdW5jdGlvbnMgc2V0IGBm" + - "dW5jdGlvblR5cGU6ICJMTE0iYCBhbmQgbW9kZWwgcm91dGluZyBtZXRhZGF0YSB1bmRlciBgbW9k" + - "ZWxzW10ubGxtQ29uZmlnYC4gYGxsbUNvbmZpZy51cmlzYCBkZWNsYXJlcyB0aGUgT3BlbkFJLWNv" + - "bXBhdGlibGUgdXBzdHJlYW0gcGF0aHMgZXhwb3NlZCBieSB0aGUgbW9kZWwuIEN1cnJlbnQgc3Vw" + - "cG9ydGVkIHBhdGhzIGFyZSBgL3YxL2NoYXQvY29tcGxldGlvbnNgLCBgL3YxL3Jlc3BvbnNlc2As" + - "IGFuZCBgL3YxL2VtYmVkZGluZ3NgLiBgbGxtQ29uZmlnLnJvdXRpbmdNZXRob2RgIGFjY2VwdHMg" + - "YHJvdW5kX3JvYmluYCwgYHBvd2VyX29mX3R3b2AsIGBncm9xX211bHRpcmVnaW9uYCwgYHB1bHNh" + - "cmAsIG9yIGByYW5kb21gLgpgbGxtQ29uZmlnLnRva2VuUmF0ZUxpbWl0YCBhY2NlcHRzIG9uZSBv" + - "ciBtb3JlIGNvbW1hLXNlcGFyYXRlZCBwb3NpdGl2ZSBpbnRlZ2VyIHRva2VuIGxpbWl0cyBpbiBg" + - "PHZhbHVlPi08dW5pdD5gIGZvcm1hdC4gU3VwcG9ydGVkIHVuaXRzIGFyZSBgU2AgKHNlY29uZHMp" + - "LCBgTWAgKG1pbnV0ZXMpLCBgSGAgKGhvdXJzKSwgYERgIChkYXlzKSwgYW5kIGBXYCAod2Vla3Mp" + - "LiBVc2UgZGlzdGluY3QgdW5pdHMgd2hlbiBjb21iaW5pbmcgbGltaXRzLCBmb3IgZXhhbXBsZSBg" + - "MTAwMC1TLDUwMDAtTSwxMDAwMDAtSCw1MDAwMDAtRCwxMDAwMDAwLVdgIGluIGlucHV0IEpTT04u" + - "CgpIZWxtIGNoYXJ0IHBhY2thZ2luZyBpcyBpbmRlcGVuZGVudCBvZiBgZnVuY3Rpb25UeXBlYC4g" + - "Rm9yIGEgSGVsbS1jaGFydCBiYWNrZWQgTExNIGZ1bmN0aW9uLCBzZXQgYGZ1bmN0aW9uVHlwZTog" + - "IkxMTSJgLCBgaGVsbUNoYXJ0YCwgYGhlbG1DaGFydFNlcnZpY2VOYW1lYCwgYW5kIGBtb2RlbHNb" + - "XS5sbG1Db25maWdgIGluIHRoZSBzYW1lIGNyZWF0ZSByZXF1ZXN0LiBgaW5mZXJlbmNlUG9ydGAg" + - "bXVzdCBiZSB0aGUgS3ViZXJuZXRlcyBTZXJ2aWNlIHBvcnQgZXhwb3NlZCBieSBgaGVsbUNoYXJ0" + - "U2VydmljZU5hbWVgLgoKTExNIGludm9jYXRpb24gcmVxdWVzdHMgdXNlIGBtb2RlbDogIjxmdW5j" + - "dGlvbi1pZD4vPG1vZGVsLW5hbWU+ImAuIFRoZSBmdW5jdGlvbiBJRCBzZWxlY3RzIHRoZSBOVkNG" + - "IGZ1bmN0aW9uLCBhbmQgdGhlIG1vZGVsIG5hbWUgaXMgZm9yd2FyZGVkIHVwc3RyZWFtLiBDaGF0" + - "IGNvbXBsZXRpb25zIGFuZCBSZXNwb25zZXMgQVBJIHJlcXVlc3RzIGNhbiB1c2UgYHgtbXVsdGkt" + - "dHVybi1zZXNzaW9uLWlkYCBmb3Igc2Vzc2lvbiBzdGlja2luZXNzOyBlbWJlZGRpbmdzIHJlcXVl" + - "c3RzIGRvIG5vdC4KCiMjIGBmdW5jdGlvbiB1cGRhdGVgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJw" + - "b3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS10YWdzIFRBR1ssVEFHXWAgfCBSZXBs" + - "YWNlIGZ1bmN0aW9uIHRhZ3MgfCAtIHwKfCBgLS1sbG0tbW9kZWwtdXBkYXRlIFNQRUNgIHwgTExN" + - "IG1vZGVsIHVwZGF0ZTsgZm9ybWF0IGBuYW1lPTxtb2RlbD4scm91dGluZ01ldGhvZD08bWV0aG9k" + - "Pix0b2tlblJhdGVMaW1pdD08bGltaXQ+YDsgcmVwZWF0YWJsZS4gUm91dGluZyBtZXRob2RzIG1h" + - "dGNoIGAtLWxsbS1tb2RlbGAuIFRva2VuIGxpbWl0IGV4YW1wbGU6IGAxMDAwLVNgLiBVc2UgaW5w" + - "dXQgSlNPTiBmb3IgY29tYmluZWQgdG9rZW4gbGltaXRzLiB8IC0gfAp8IGAtLWxsbS1kZWZhdWx0" + - "LXByaW9yaXR5IFBSSU9SSVRZYCB8IFJlcGxhY2UgdGhlIGZ1bmN0aW9uLWxldmVsIHByaW9yaXR5" + - "IGNvbmZpZ3VyYXRpb24gd2l0aCB0aGlzIGRlZmF1bHQgYW5kIGFueSBzdXBwbGllZCBwZXItYWNj" + - "b3VudCBvdmVycmlkZXMuIHwgLSB8CnwgYC0tbGxtLXBlci1hY2NvdW50LXByaW9yaXR5IE5DQS1J" + - "RDpQUklPUklUWWAgfCBQZXItYWNjb3VudCBwcmlvcml0eSBvdmVycmlkZTsgcmVwZWF0YWJsZTsg" + - "c3VwcG9ydHMgdXAgdG8gNjQgZGlzdGluY3QgTkNBIElEIG92ZXJyaWRlcy4gUmVxdWlyZXMgYSBk" + - "ZWZhdWx0IHByaW9yaXR5LiB8IC0gfAoKSW4gSlNPTiwgYGZ1bmN0aW9uIHVwZGF0ZWAgYWNjZXB0" + - "cyBgbW9kZWxVcGRhdGVzW11gIGVudHJpZXMgd2l0aCBgbW9kZWxOYW1lYCBhbmQgYGxsbUNvbmZp" + - "Zy5yb3V0aW5nTWV0aG9kYCBhbmQvb3IgYGxsbUNvbmZpZy50b2tlblJhdGVMaW1pdGAuIGB1cmlz" + - "YCBhcmUgY3JlYXRlLXRpbWUgbW9kZWwgbWV0YWRhdGEgYW5kIGFyZSBub3QgcGFydCBvZiBtb2Rl" + - "bCB1cGRhdGVzLgoKIyMgYGZ1bmN0aW9uIGRlcGxveSBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1" + - "dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIChmdWxsIEpTT04gc3BlYykuIEZvciBhZC1ob2Mg" + - "b25lLXNob3QgdXNlOgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18" + - "CnwgYC0tZnVuY3Rpb24taWQgSURgIHwgRnVuY3Rpb24gSUQgKHJlcXVpcmVkKSB8IC0gfAp8IGAt" + - "LWdwdSBOQU1FYCB8IEdQVSBmYW1pbHkgfCBgSDEwMGAgfAp8IGAtLWluc3RhbmNlLXR5cGUgVFlQ" + - "RWAgfCBTS1UgfCBgTkNQLkdQVS5IMTAwXzF4YCB8CnwgYC0tbWluLWluc3RhbmNlcyBOYCB8IE1p" + - "biByZXBsaWNhcyB8IGAxYCB8CnwgYC0tbWF4LWluc3RhbmNlcyBOYCB8IE1heCByZXBsaWNhcyB8" + - "IGAxYCB8CnwgYC0tbWF4LXJlcXVlc3QtY29uY3VycmVuY3kgTmAgfCBDb25jdXJyZW5jeSB8IGAw" + - "YCAodW5zZXQ7IHNlcnZlciBkZWZhdWx0IGFwcGxpZXMpIHwKfCBgLS1jbHVzdGVycyBOQU1FWyxO" + - "QU1FXWAgfCBUYXJnZXQgc3BlY2lmaWMgY29tcHV0ZSBjbHVzdGVycyB8IChhbnkgbWF0Y2hpbmcg" + - "U0tVKSB8CgojIyBgdGFzayBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlz" + - "IHJlY29tbWVuZGVkIGZvciByZXBlYXRhYmxlIHRhc2sgZGVmaW5pdGlvbnMuIEZvciBhZC1ob2Mg" + - "dXNlOgoKfCBGbGFnIHwgUHVycG9zZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGAtLW5hbWUg" + - "TkFNRWAgfCBUYXNrIG5hbWUgKHJlcXVpcmVkKSB8IDEtMTI4IGNoYXJzLCBgXlthLXowLTlBLVpd" + - "W2EtejAtOUEtWlwtX10qJGAgfAp8IGAtLWdwdSBHUFVgIHwgR1BVIG5hbWUgKHJlcXVpcmVkIHdp" + - "dGhvdXQgYC0taW5wdXQtZmlsZWApIHwgRXhhbXBsZTogYEgxMDBgIHwKfCBgLS1pbnN0YW5jZS10" + - "eXBlIFRZUEVgIHwgSW5zdGFuY2UgdHlwZSAocmVxdWlyZWQgd2l0aG91dCBgLS1pbnB1dC1maWxl" + - "YCkgfCBFeGFtcGxlOiBgTkNQLkdQVS5IMTAwXzF4YCB8CnwgYC0taW1hZ2UgSU1BR0VgIHwgQ29u" + - "dGFpbmVyIGltYWdlIHwgTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYC0taGVsbS1jaGFydGAgfAp8" + - "IGAtLWhlbG0tY2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJIHJlZmVyZW5jZSB8" + - "IE11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGAtLWltYWdlYCB8CnwgYC0taW5wdXQtZmlsZSBGSUxF" + - "YCB8IEpTT04gdGFzayBzcGVjIGZpbGUgfCBDTEkgZmxhZ3Mgb3ZlcnJpZGUgSlNPTiB2YWx1ZXMg" + - "d2hlbiBib3RoIGFyZSBzZXQgfAp8IGAtLWJhY2tlbmQgQkFDS0VORGAgfCBCYWNrZW5kIC8gQ1NQ" + - "IHwgLSB8CnwgYC0tY2x1c3RlcnMgTkFNRVssTkFNRV1gIHwgU3BlY2lmaWMgY2x1c3RlcnMgd2l0" + - "aGluIHRoZSBpbnN0YW5jZSB8IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tY29udGFpbmVyLWFyZ3Mg" + - "QVJHU2AgfCBBcmdzIHBhc3NlZCB3aGVuIGxhdW5jaGluZyB0aGUgY29udGFpbmVyIHwgU2luZ2xl" + - "IHN0cmluZywgZS5nLiBgIi0tZXBvY2hzIDEwIC0tYmF0Y2gtc2l6ZSAzMiJgIHwKfCBgLS1jb250" + - "YWluZXItZW52IE5BTUU9dmFsdWVgIHwgQ29udGFpbmVyIGVudmlyb25tZW50IHZhcmlhYmxlOyBy" + - "ZXBlYXRhYmxlIHwgLSB8CnwgYC0tc2VjcmV0cyBOQU1FPXZhbHVlYCB8IFNlY3JldCBlbnZpcm9u" + - "bWVudCB2YXJpYWJsZTsgcmVwZWF0YWJsZTsgZW5jcnlwdGVkIGF0IHJlc3QgfCAtIHwKfCBgLS1t" + - "YXgtcnVudGltZSBEVVJBVElPTmAgfCBNYXggd2FsbC1jbG9jayBydW4gdGltZSAoSVNPIDg2MDEs" + - "IGUuZy4gYFBUNEhgKSB8IE5vIGRlZmF1bHQ7IG9taXQgZm9yIG5vIHRpbWUgbGltaXQgfAp8IGAt" + - "LW1heC1xdWV1ZWQgRFVSQVRJT05gIHwgTWF4IHRpbWUgaW4gcXVldWUgYmVmb3JlIGNhbmNlbGxh" + - "dGlvbiAoSVNPIDg2MDEpIHwgU2VydmVyIGRlZmF1bHQgYFBUNzJIYCB8CnwgYC0tdGVybWluYXRp" + - "b24tZ3JhY2UgRFVSQVRJT05gIHwgR3JhY2UgcGVyaW9kIGFmdGVyIHN0b3Agc2lnbmFsIChJU08g" + - "ODYwMSkgfCBTZXJ2ZXIgZGVmYXVsdCBgUFQxSGAgfAp8IGAtLXJlc3VsdC1zdHJhdGVneSBVUExP" + - "QURcfE5PTkVgIHwgSG93IHRvIGhhbmRsZSB0YXNrIG91dHB1dCBhcnRpZmFjdHMgfCAtIHwKfCBg" + - "LS1yZXN1bHRzLWxvY2F0aW9uIExPQ0FUSU9OYCB8IFJlc3VsdCB1cGxvYWQgdGFyZ2V0LCBmb3Jt" + - "YXQgYG9yZy1uYW1lL1t0ZWFtLW5hbWUvXW1vZGVsLW5hbWVgOyByZXF1aXJlZCB3aGVuIGAtLXJl" + - "c3VsdC1zdHJhdGVneT1VUExPQURgIHwgLSB8CnwgYC0tbW9kZWxzIE5BTUU6VkVSU0lPTjpVUklg" + - "IHwgTW9kZWwgYXJ0aWZhY3Q7IHJlcGVhdGFibGUgfCAtIHwKfCBgLS1yZXNvdXJjZXMgTkFNRTpW" + - "RVJTSU9OOlVSSWAgfCBSZXNvdXJjZSBhcnRpZmFjdDsgcmVwZWF0YWJsZSB8IC0gfAp8IGAtLXRh" + - "Z3MgVEFHWyxUQUddYCB8IFRhc2sgdGFncyB8IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tZGVzY3Jp" + - "cHRpb24gVEVYVGAgfCBUYXNrIGRlc2NyaXB0aW9uIHwgLSB8CnwgYC0tbG9ncy10ZWxlbWV0cnkt" + - "aWQgVVVJRGAgfCBMb2dzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfAp8IGAtLW1ldHJpY3Mt" + - "dGVsZW1ldHJ5LWlkIFVVSURgIHwgTWV0cmljcyB0ZWxlbWV0cnkgZW5kcG9pbnQgSUQgfCAtIHwK" + - "fCBgLS10cmFjZXMtdGVsZW1ldHJ5LWlkIFVVSURgIHwgVHJhY2VzIHRlbGVtZXRyeSBlbmRwb2lu" + - "dCBJRCB8IC0gfApQSwcIjsCI8TUyAAA1MgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA3AAkA" + - "ZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVU" + - "BQABAKbOEiMgVHJvdWJsZXNob290aW5nCgpLbm93biBlcnJvcnMg4oaSIGRpYWdub3N0aWMgY29t" + - "bWFuZCDihpIgcmVtZWRpYXRpb24uIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBzdHJ1Y3R1cmVkIGBw" + - "aGFzZV9mYWlsZWRgIGV2ZW50cyB0aGUgQ0xJIGVtaXRzIChSRVEtMTUpIOKAlCBldmVyeSBlbnRy" + - "eSBiZWxvdyBzaG91bGQgbWFwIHRvIGFuIGBlcnJDYXRlZ29yeWAgYW5kIGEgYHJlbWVkaWF0aW9u" + - "YCBhcnJheS4KCiMjIFByZS1mbGlnaHQKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24g" + - "fAp8LS0tfC0tLXwtLS18CnwgYGt1YmVjdGwgbm90IG9uIFBBVEhgIHwgT3BlcmF0b3IncyBgJFBB" + - "VEhgIGRvZXNuJ3QgaW5jbHVkZSBrdWJlY3RsIHwgSW5zdGFsbCBrdWJlY3RsIDEuMjgrOiBodHRw" + - "czovL2t1YmVybmV0ZXMuaW8vZG9jcy90YXNrcy90b29scy9pbnN0YWxsLWt1YmVjdGwvIHwKfCBg" + - "aGVsbWZpbGUgbm90IG9uIFBBVEhgIHwgU2FtZSB8IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWxtZmls" + - "ZS9oZWxtZmlsZSNpbnN0YWxsYXRpb24gfAp8IGBoZWxtIG5vdCBvbiBQQVRIYCB8IFNhbWUgfCBo" + - "dHRwczovL2hlbG0uc2gvZG9jcy9pbnRyby9pbnN0YWxsLyB8CnwgYEdhdGV3YXkgQVBJIENSRHMg" + - "bm90IGluc3RhbGxlZGAgfCBlbnZveS1nYXRld2F5IHByZXJlcSBtaXNzaW5nIHwgYGhlbG0gaW5z" + - "dGFsbCBlZyBvY2k6Ly9kb2NrZXIuaW8vZW52b3lwcm94eS9nYXRld2F5LWhlbG0gLS1uYW1lc3Bh" + - "Y2U9ZW52b3ktZ2F0ZXdheS1zeXN0ZW0gLS1jcmVhdGUtbmFtZXNwYWNlYCB8CnwgYGRlZmF1bHQg" + - "U3RvcmFnZUNsYXNzIG5vdCBhdmFpbGFibGVgIHwgQ2x1c3RlciBoYXMgbm8gZGVmYXVsdCBTQyB8" + - "IEFubm90YXRlIG9uZTogYGt1YmVjdGwgcGF0Y2ggc2MgPG5hbWU+IC1wICd7Im1ldGFkYXRhIjp7" + - "ImFubm90YXRpb25zIjp7InN0b3JhZ2VjbGFzcy5rdWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xh" + - "c3MiOiJ0cnVlIn19fSdgIHwKfCBgR1BVIG9wZXJhdG9yIG5vdCBpbnN0YWxsZWRgIChjb21wdXRl" + - "LXBsYW5lKSB8IG52aWRpYSBHUFUgb3BlcmF0b3IgbWlzc2luZyB8IEluc3RhbGwgcGVyIGh0dHBz" + - "Oi8vZG9jcy5udmlkaWEuY29tL2RhdGFjZW50ZXIvY2xvdWQtbmF0aXZlL2dwdS1vcGVyYXRvci9s" + - "YXRlc3QvaW5zdGFsbC1ncHUtb3BlcmF0b3IuaHRtbCwgT1IgdXNlIGBmYWtlLWdwdS1vcGVyYXRv" + - "cmAgZm9yIGRldiB8CnwgYEdQVSBub2RlIGxhYmVscyBtaXNzaW5nYCAoY29tcHV0ZS1wbGFuZSkg" + - "fCBOb2RlcyBuZWVkIGBudmlkaWEuY29tL2dwdS5mYW1pbHlgIGV0Yy4gfCBTZXQgYC0tazNzLW5v" + - "ZGUtbGFiZWwgbnZpZGlhLmNvbS9ncHUuZmFtaWx5PWhvcHBlckBhZ2VudDpOYCBmb3IgazNkIHwK" + - "CiMjIEF1dGgKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18" + - "CnwgYGFkbWluIHRva2VuIHJlcXVpcmVkYCAoaW5pdCBub3QgcnVuKSB8IE5vIGB+Ly5udmNmLWNs" + - "aS5zdGF0ZWAgYW5kIGAtLXRva2VuYCBub3QgcGFzc2VkIHwgYG52Y2YtY2xpIGluaXRgIChpbnRl" + - "cmFjdGl2ZSkgb3IgYC0tdG9rZW49JEpXVCAtLW5vbi1pbnRlcmFjdGl2ZWAgKENJKSB8CnwgYFNp" + - "Z25lZCBKV1QgcmVqZWN0ZWQ6IEFub3RoZXIgYWxnb3JpdGhtIGV4cGVjdGVkLCBvciBubyBtYXRj" + - "aGluZyBrZXkocykgZm91bmRgIHwgU3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQg" + - "Y29udHJvbCBwbGFuZSB8IGBybSB+Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5p" + - "dGAgYWdhaW4gfAp8IGA0MDMgbWlzc2luZyByZXF1ZXN0ZWQgYXV0aG9yaXRpZXNgIChmdW5jdGlv" + - "biBpbnZva2UpIHwgQWRtaW4gdG9rZW4gZG9lc24ndCBoYXZlIGBpbnZva2VfZnVuY3Rpb25gIHNj" + - "b3BlIHwgYG52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj3igKZgIHRoZW4g" + - "cmUtcnVuIGludm9rZSB8CgojIyBJbnN0YWxsIC8gYHVwYAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBS" + - "ZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBIZWxtIGB0aW1lZCBvdXQgd2FpdGluZyBmb3Ig" + - "Y2Fzc2FuZHJhYCB8IENhc3NhbmRyYSBTdGF0ZWZ1bFNldCBQVkMgc3R1Y2sgYFBlbmRpbmdgIHwg" + - "Q29uZmlybSBkZWZhdWx0IFN0b3JhZ2VDbGFzczsgY2hlY2sgYGt1YmVjdGwgZ2V0IHB2LHB2YyAt" + - "biBjYXNzYW5kcmEtc3lzdGVtYCB8CnwgYEludmFsaWQgR1BVICdOQ1AuR1BVLkgxMDAnIHNwZWNp" + - "ZmllZGAgKGZ1bmN0aW9uIGRlcGxveSkgfCBXcm9uZyBmaWVsZCDigJQgYGdwdWAgaXMgdGhlIGZh" + - "bWlseSwgbm90IHRoZSBTS1UgfCBVc2UgYCJncHUiOiAiSDEwMCJgLCBgImluc3RhbmNlVHlwZSI6" + - "ICJOQ1AuR1BVLkgxMDBfMXgiYCB8CnwgYHJlZ2lvbiBtdXN0IGJlIHByb3ZpZGVkYCAoY2x1c3Rl" + - "ciByZWdpc3RlciAvIGluc3RhbGwgLS1jb21wdXRlLXBsYW5lKSB8IGAtLXJlZ2lvbmAgZW1wdHkg" + - "KyBgQ0xVU1RFUl9SRUdJT05gIGVudiBlbXB0eSB8IFBhc3MgYC0tcmVnaW9uPXVzLXdlc3QtMWAg" + - "KG9yIGFueSBub24tZW1wdHkgdmFsdWUpIHwKfCBgcmVxdWlyZWRFbnYgIk5DQV9JRCIgaXMgbm90" + - "IHNldGAgKGhlbG1maWxlIGVycm9yIGR1cmluZyBjb21wdXRlLXBsYW5lIGFwcGx5KSB8IE9sZGVy" + - "IG52Y2YtY2xpIGJlZm9yZSBjb21taXQgYDZhYTU3MDRgOyBFeHRyYUVudiBub3QgcHJvcGFnYXRp" + - "bmcgTkNBX0lEIHwgVXBncmFkZSBgbnZjZi1jbGlgIHRvIGEgcmVsZWFzZSBhZnRlciBgNmFhNTcw" + - "NGAgfAp8IGBudmNhLW9wZXJhdG9yOiBJbWFnZVB1bGxCYWNrT2ZmYCBmb3IgYG52Y2Etb3BlcmF0" + - "b3I6cHNhdGAgfCBJbWFnZSBub3QgaW4gY2x1c3RlciByZWdpc3RyeTsgbXVsdGktY2x1c3RlciBi" + - "dWlsZCBpcyBsb2NhbCB8IGBrM2QgaW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Etb3BlcmF0" + - "b3I6cHNhdCAtYyA8Y2x1c3Rlcj5gIHwKCiMjIENvbXB1dGUtcGxhbmUgcnVudGltZQoKfCBTeW1w" + - "dG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBOVkNBIGFnZW50IENy" + - "YXNoTG9vcEJhY2tPZmYgd2l0aCBgSFRUUCA0MDFgIG9uIGAvdjEvbnZjYS9jbHVzdGVycy8uLi4v" + - "cmVnaXN0ZXJgIHwgU3RhbGUgYG91dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIGZy" + - "b20gcHJpb3IgcmVnaXN0ZXI7IGNsdXN0ZXIgSUQgZG9lc24ndCBtYXRjaCBJQ01TIHwgRGVsZXRl" + - "IHRoZSBzdGFsZSBmaWxlOyByZS1ydW4gYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwYCAoaWRlbXBv" + - "dGVudCByZWdpc3RlciB3cml0ZXMgYSBmcmVzaCBmaWxlKSB8CnwgYE5vIGNsdXN0ZXIgZm91bmQg" + - "d2l0aCB2YWxpZCBKV0tTIGZvciBjbHVzdGVyIElEOiA8aWQ+YCAoSUNNUyBsb2cpIHwgSldLUyBp" + - "biBJQ01TIGRvZXNuJ3QgbWF0Y2ggd2hhdCBjb21wdXRlLXBsYW5lIEs4cyBpcyBjdXJyZW50bHkg" + - "c2lnbmluZyB8IGBudmNmLWNsaSBjbHVzdGVyIHJvdGF0ZSAtLWNsdXN0ZXItaWQ9PGlkPmAgfAp8" + - "IEZ1bmN0aW9uIHBvZCBgSW1hZ2VQdWxsQmFja09mZmAgaW4gYG52Y2YtYmFja2VuZGAgfCBJbWFn" + - "ZS1jcmVkZW50aWFsLWhlbHBlciBjb25maWcgbWlzc2luZyBvciB3cm9uZyB8IGBrdWJlY3RsIGRl" + - "c2NyaWJlIHBvZCAtbiBudmNmLWJhY2tlbmQgPHBvZD5gOyBjaGVjayB0aGUgcHVsbCBzZWNyZXQg" + - "Y29uZmlnIHwKfCBGdW5jdGlvbiBkZXBsb3kgc3R1Y2sgYERFUExPWUlOR2AgZm9yID41IG1pbiB8" + - "IE5BVFMgc3RyZWFtIGluaXQgbGFnIChjb2xkLWNsdXN0ZXIpIOKAlCB3YWl0LCBvciBjaGVjayBO" + - "QVRTIGF1dGgtY2FsbG91dCBoZWFsdGggfCBga3ViZWN0bCBsb2dzIC1uIG5hdHMtc3lzdGVtIC1s" + - "IGFwcC5rdWJlcm5ldGVzLmlvL25hbWU9bmF0cy1hdXRoLWNhbGxvdXQtc2VydmljZWAgfAoKIyMg" + - "VGFza3MKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18Cnwg" + - "YHRhc2sgY3JlYXRlYCByZXR1cm5zIGBNaXNzaW5nIDxUWVBFPiByZWdpc3RyeSBjcmVkZW50aWFs" + - "IGZvciBob3N0bmFtZWAsIG9yIGtlZXBzIHVzaW5nIGEgcHJldmlvdXMgY3JlZGVudGlhbCB2YWx1" + - "ZSwgc2hvcnRseSBhZnRlciBgcmVnaXN0cnktY3JlZGVudGlhbCBhZGQvdXBkYXRlL2RlbGV0ZWAg" + - "d2hpbGUgYHJlZ2lzdHJ5LWNyZWRlbnRpYWwgbGlzdGAvYGdldGAgYWxyZWFkeSBzaG93IHRoZSBu" + - "ZXcgdmFsdWUgfCBFeHBlY3RlZCBwcm9wYWdhdGlvbiBkZWxheTogTlZDVCBjYWNoZXMgdGhlIGFj" + - "Y291bnQncyByZWdpc3RyeSBjcmVkZW50aWFscyB3aXRoIGBudmN0Lm52Y2YuY2FjaGUtdHRsYCAo" + - "ZGVmYXVsdCBgUFQ1TWAsIGFib3V0IDUgbWluKSBhbmQgYXBwbGllcyB0aGUgY2hhbmdlIHdoZW4g" + - "dGhhdCBjYWNoZWQgY29weSByZWZyZXNoZXMgfCBXYWl0IHVwIHRvIGFib3V0IDUgbWluIGFuZCBy" + - "ZXRyeSwgb3IgYGt1YmVjdGwgLW4gbnZjZiByb2xsb3V0IHJlc3RhcnQgZGVwbG95bWVudC9udmN0" + - "LWFwaWAgdG8gYXBwbHkgaW1tZWRpYXRlbHkgfApQSwcI864ThHQRAAB0EQAAUEsDBBQACAAAAAAA" + - "IQAAAAAAAAAAAAAAAAAsAAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vU0tJ" + - "TEwubWRVVAUAAQCmzhItLS0KbmFtZTogbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uCmRl" + - "c2NyaXB0aW9uOiA+LQogIEluc3RhbGwgYW5kIG9wZXJhdGUgTlZDRiBzZWxmLWhvc3RlZCBjb250" + - "cm9sLXBsYW5lIGFuZCBzZXBhcmF0ZSBjb21wdXRlLXBsYW5lCiAgc3RhY2tzLiBDb3ZlcnMgSGVs" + - "bWZpbGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSBpbnN0YWxsYXRpb24gZmxvd3MsIHRlYXJkb3du" + - "LAogIHZhbHVlcyBvdmVycmlkZXMsIHB1bGwgc2VjcmV0cywgYW5kIHRyb3VibGVzaG9vdGluZy4g" + - "VXNlIGZvcgogIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrLCBudmNmLWNvbXB1dGUtcGxhbmUtc3Rh" + - "Y2ssIHNwbGl0IGNvbXB1dGUtcGxhbmUKICBpbnN0YWxsYXRpb24sIGNvbnRyb2wtcGxhbmUgaW5z" + - "dGFsbGF0aW9uLCBDTEktZ2VuZXJhdGVkIGNvbnRyb2wtcGxhbmUKICBwcm9maWxlcywgSGVsbWZp" + - "bGUsIHNlbGYtbWFuYWdlZCwgb3Igc2VsZi1ob3N0ZWQgZGVwbG95bWVudHMuIERvIE5PVCB1c2Ug" + - "Zm9yCiAgbG9jYWwgazNkIGVudmlyb25tZW50czsgdXNlIHRoZSBsb2NhbCBrM2QgZGV2ZWxvcG1l" + - "bnQgd29ya2Zsb3cgaW5zdGVhZC4KbGljZW5zZTogQXBhY2hlLTIuMApjb21wYXRpYmlsaXR5OiBS" + - "ZXF1aXJlcyBoZWxtZmlsZSA+PSAxLjEuMCA8IDEuMi4wLCBoZWxtID49IDMuMTIsIGhlbG0tZGlm" + - "ZiBwbHVnaW4sIGt1YmVjdGwgbWF0Y2hpbmcgY2x1c3RlciB2ZXJzaW9uCmF1dGhvcjogIm52Y2Yt" + - "Y29yZS1lbmcgPG52Y2YtY29yZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCnZlcnNpb246ICIx" + - "LjAuMCIKdGFnczogW252Y2YsIHNlbGYtbWFuYWdlZCwgaGVsbWZpbGUsIHNlbGYtaG9zdGVkLCBj" + - "b250cm9sLXBsYW5lLCBjb21wdXRlLXBsYW5lLCBjbGktcHJvZmlsZSwgaW5zdGFsbGF0aW9uLCBk" + - "ZXBsb3ltZW50LCBwdWxsLXNlY3JldHNdCnRvb2xzOiBbU2hlbGwsIFJlYWQsIEVkaXQsIEdyZXAs" + - "IEdsb2JdCm1ldGFkYXRhOgogIGludGVybmFsOiBmYWxzZQogIGF1dGhvcjogIm52Y2YtY29yZS1l" + - "bmcgPG52Y2YtY29yZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCiAgdmVyc2lvbjogIjEuMCIK" + - "ICB0YWdzOiBbbnZjZiwgc2VsZi1tYW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQsIGNvbnRy" + - "b2wtcGxhbmUsIGNvbXB1dGUtcGxhbmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24sIGRlcGxv" + - "eW1lbnQsIHB1bGwtc2VjcmV0c10KICBsYW5ndWFnZXM6IFtiYXNoLCB5YW1sXQogIGZyYW1ld29y" + - "a3M6IFtoZWxtZmlsZSwgaGVsbSwga3ViZWN0bF0KICBkb21haW46IGNsb3VkLWluZnJhc3RydWN0" + - "dXJlCi0tLQoKIyBOVkNGIFNlbGYtTWFuYWdlZCBTdGFjayBPcGVyYXRpb25zCgpPcGVyYXRpb25h" + - "bCBndWlkZSBmb3IgbWF0Y2hpbmcgTlZDRiBjb250cm9sLXBsYW5lIGFuZCBjb21wdXRlLXBsYW5l" + - "IEhlbG1maWxlIGJ1bmRsZXMuCgojIyBJbnN0cnVjdGlvbnMKClVzZSB0aGlzIHNraWxsIGZvciBp" + - "bnN0YWxsLCB1cGdyYWRlLCBvciB0ZWFyZG93biB3b3JrIGluIG1hdGNoaW5nIGBudmNmLXNlbGYt" + - "bWFuYWdlZC1zdGFja2AgYW5kIGBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXM7IGtl" + - "ZXAgSGVsbWZpbGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSBoYW5kb2ZmcyBzZXBhcmF0ZS4gRm9y" + - "IGBmdW5jdGlvblR5cGU6ICJMTE0iYCwgcmVhZCBbTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnRdKHJl" + - "ZmVyZW5jZXMvaGVsbWZpbGUtc3RydWN0dXJlLm1kI2xsbS1mdW5jdGlvbi1lbmFibGVtZW50KS4K" + - "CiMjIFByZXJlcXVpc2l0ZXMKCkFzayBmb3IgdGhlIGV4dHJhY3RlZCBgbnZjZi1zZWxmLW1hbmFn" + - "ZWQtc3RhY2tgIHBhdGguIEZvciBzcGxpdCBpbnN0YWxsYXRpb24sCmFsc28gcmVxdWlyZSB0aGUg" + - "bWF0Y2hpbmctdmVyc2lvbiBgbnZjZi1jb21wdXRlLXBsYW5lLXN0YWNrYCBwYXRoLiBWZXJpZnkg" + - "Ym90aDoKCmBgYGJhc2gKbHMgPGNvbnRyb2wtcGxhbmUtc3RhY2s+L2hlbG1maWxlLmQvIDxjb250" + - "cm9sLXBsYW5lLXN0YWNrPi9lbnZpcm9ubWVudHMvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9zZWNy" + - "ZXRzLyA8Y29udHJvbC1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmxzIDxjb21wdXRl" + - "LXBsYW5lLXN0YWNrPi9oZWxtZmlsZS5kLyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZW52aXJvbm1l" + - "bnRzLyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmBgYAoKSWYgZWl0" + - "aGVyIGRpcmVjdG9yeSBpcyBtaXNzaW5nLCBkb3dubG9hZCBtYXRjaGluZyBidW5kbGUgdmVyc2lv" + - "bnMgZnJvbSBOR0M6CgpgYGBiYXNoCm5nYyByZWdpc3RyeSByZXNvdXJjZSBkb3dubG9hZC12ZXJz" + - "aW9uIDxvcmc+L252Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrOjx2ZXJzaW9uPgpuZ2MgcmVnaXN0cnkg" + - "cmVzb3VyY2UgZG93bmxvYWQtdmVyc2lvbiA8b3JnPi9udmNmLWNvbXB1dGUtcGxhbmUtc3RhY2s6" + - "PHZlcnNpb24+CmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhlIGNv" + - "bnRyb2wtcGxhbmUgYnVuZGxlIHJvb3QuIFNwbGl0LWZsb3cKY29tbWFuZHMgYW5kIHJvb3Qgc3Vi" + - "c3RpdHV0aW9uIGFyZSBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVy" + - "ZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLgoKIyMgQmVmb3JlIFlvdSBTdGFy" + - "dAoKVmVyaWZ5IHRvb2xpbmcgYW5kIGNvbnRleHQgYmVmb3JlIGFueSBvcGVyYXRpb246CgpgYGBi" + - "YXNoCmhlbG1maWxlIC0tdmVyc2lvbiAgICMgTXVzdCBiZSAxLjEueCAoMS4yLjAgcmVtb3ZlZCBz" + - "ZXF1ZW50aWFsIG1vZGUpCmhlbG0gdmVyc2lvbiAgICAgICAgICMgTXVzdCBiZSA+PSAzLjEyCmhl" + - "bG0gcGx1Z2luIGxpc3QgICAgICMgTXVzdCBpbmNsdWRlIGhlbG0tZGlmZiA+PSAzLjExCmt1YmVj" + - "dGwgdmVyc2lvbiAgICAgICMgQ2xpZW50IG11c3QgYmUgd2l0aGluIDEgbWlub3IgdmVyc2lvbiBv" + - "ZiBjbHVzdGVyCmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5kcyBydW4gZnJvbSB0aGUgZXh0cmFj" + - "dGVkIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFjay9gIHJvb3Q6CgpgYGBiYXNoCmNkIHBhdGgvdG8v" + - "bnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sKbHMgaGVsbWZpbGUuZC8gZW52aXJvbm1lbnRzLyBzZWNy" + - "ZXRzLyBnbG9iYWwueWFtbC5nb3RtcGwKYGBgCgpJZGVudGlmeSB0aGUgZW52aXJvbm1lbnQgZnJv" + - "bSBgZW52aXJvbm1lbnRzLzxuYW1lPi55YW1sYCBhbmQKYHNlY3JldHMvPG5hbWU+LXNlY3JldHMu" + - "eWFtbGA7IGZvciBFS1MsIHVzZSB0aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxl" + - "XShodHRwczovL2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1l" + - "eGFtcGxlKS4KCiMjIEhvdyBWYWx1ZXMgRmxvdwoKVW5kZXJzdGFuZGluZyB2YWx1ZSBwcmVjZWRl" + - "bmNlIHByZXZlbnRzIHRoZSBtb3N0IGNvbW1vbiBjb25maWd1cmF0aW9uIG1pc3Rha2VzLgoKYGBg" + - "dGV4dAplbnZpcm9ubWVudHMvYmFzZS55YW1sICAgICAgICAgIChkZWZhdWx0cykKICAgIC0+IG1l" + - "cmdlZCB3aXRoCmVudmlyb25tZW50cy88ZW52Pi55YW1sICAgICAgICAgKHlvdXIgb3ZlcnJpZGVz" + - "KQogICAgLT4gY29uc3VtZWQgYnkKZ2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAoR28g" + - "dGVtcGxhdGUsIGNvbnN0cnVjdHMgcGVyLWNoYXJ0IHZhbHVlcykKICAgIC0+IGNvbnN1bWVkIGJ5" + - "CnNlY3JldHMvPGVudj4tc2VjcmV0cy55YW1sICAgICAgKHNlbnNpdGl2ZSB2YWx1ZXMpCiAgICAt" + - "PiBvdmVycmlkZGVuIGJ5CnJlbGVhc2UgaW5saW5lIHZhbHVlczogYmxvY2tzICAgKGhpZ2hlc3Qg" + - "cHJlY2VkZW5jZSkKYGBgCgpDcml0aWNhbDogYGdsb2JhbC55YW1sLmdvdG1wbGAgb25seSBwYXNz" + - "ZXMgdGhyb3VnaCBzcGVjaWZpYyBrZXlzIHRvIGVhY2ggY2hhcnQgKGltYWdlIHJlZ2lzdHJpZXMs" + - "IG5vZGUgc2VsZWN0b3JzLCBzdG9yYWdlLCByZXBsaWNhIGNvdW50cykuIFNldHRpbmcgYW4gYXJi" + - "aXRyYXJ5IGNoYXJ0IHZhbHVlIGluIHRoZSBlbnZpcm9ubWVudCBmaWxlIHdpbGwgYmUgc2lsZW50" + - "bHkgaWdub3JlZCBpZiBgZ2xvYmFsLnlhbWwuZ290bXBsYCBkb2VzIG5vdCBwcm9wYWdhdGUgaXQu" + - "CgpUbyBvdmVycmlkZSBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzLCB1c2UgYSBoZWxtZmlsZSByZWxl" + - "YXNlIGB2YWx1ZXM6YCBibG9jay4gU2VlIFtPdmVycmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzXSgj" + - "b3ZlcnJpZGluZy1oZWxtLWNoYXJ0LXZhbHVlcykuCgojIyBDbGVhbiBJbnN0YWxsYXRpb24KCiMj" + - "IyAxLiBDcmVhdGUgbmFtZXNwYWNlcyBhbmQgaW1hZ2UgcHVsbCBzZWNyZXRzIChpZiB1c2luZyBh" + - "IHByaXZhdGUgcmVnaXN0cnkpCgpgYGBiYXNoCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5h" + - "dHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2Vy" + - "OyBkbwogIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSAiJG5zIiAtLWRyeS1ydW49Y2xpZW50IC1v" + - "IHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KZG9uZQoKIyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBh" + - "IHByaXZhdGUgcmVnaXN0cnkgKGUuZy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9" + - "Ijx5b3VyLWtleT4iCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2Yg" + - "YXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwg" + - "Y3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1z" + - "ZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAg" + - "IC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMi" + - "IFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpkb25l" + - "CmBgYAoKSWYgdXNpbmcgcHVsbCBzZWNyZXRzLCB5b3UgbXVzdCBhbHNvIGNvbmZpZ3VyZSBlYWNo" + - "IGhlbG1maWxlIHJlbGVhc2UgdG8gcmVmZXJlbmNlIHRoZW0uIFNlZSBbSW1hZ2UgUHVsbCBTZWNy" + - "ZXRzXSgjaW1hZ2UtcHVsbC1zZWNyZXRzKS4KCiMjIyAyLiBBdXRoZW50aWNhdGUgaGVsbSB0byB5" + - "b3VyIGNoYXJ0IHJlZ2lzdHJ5CgpCb3RoIGBkb2NrZXIgbG9naW5gIEFORCBgaGVsbSByZWdpc3Ry" + - "eSBsb2dpbmAgYXJlIHJlcXVpcmVkIGZvciBOR0MuIEhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRv" + - "Y2tlcikgdG8gcHVsbCBPQ0kgY2hhcnRzLCBzbyB0aGUgaGVsbSBjcmVkZW50aWFsIHN0b3JlIG11" + - "c3QgYmUgYXV0aGVudGljYXRlZCBzZXBhcmF0ZWx5LgoKYGBgYmFzaAojIE5HQyAtLSBib3RoIGNv" + - "bW1hbmRzIGFyZSByZXF1aXJlZApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4n" + - "IC1wICIkTkdDX0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRo" + - "dG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCgojIEVDUgphd3MgZWNyIGdldC1sb2dpbi1wYXNzd29y" + - "ZCAtLXJlZ2lvbiA8cmVnaW9uPiB8IFwKICBoZWxtIHJlZ2lzdHJ5IGxvZ2luIC0tdXNlcm5hbWUg" + - "QVdTIC0tcGFzc3dvcmQtc3RkaW4gPGFjY291bnQ+LmRrci5lY3IuPHJlZ2lvbj4uYW1hem9uYXdz" + - "LmNvbQpgYGAKCj4gTm90ZTogYGhlbG0gcmVnaXN0cnkgbG9naW5gIGtlZXBzIG9ubHkgdGhlIGxh" + - "c3QgbG9naW4gcGVyIGhvc3QgKG11bHRpLW9yZyBnb3RjaGEpLgo+IFRoZSBzdGFjayBhbmQgdGhl" + - "IGNhY2hlcyBzcGFuIHNldmVyYWwgTkdDIG9yZ3MgdGhhdCBuZWVkIGRpZmZlcmVudCBrZXlzLCBi" + - "dXQgdGhleSBhbGwKPiBsaXZlIHVuZGVyIHRoZSBvbmUgaG9zdCBgbnZjci5pb2AuIEEgc2Vjb25k" + - "IGBoZWxtIHJlZ2lzdHJ5IGxvZ2luIG52Y3IuaW9gIChvcgo+IGBkb2NrZXIgbG9naW5gKSB3aXRo" + - "IGEgZGlmZmVyZW50IGtleSBzaWxlbnRseSBvdmVyd3JpdGVzIHRoZSBmaXJzdCwgc28gcHVsbHMg" + - "Zm9yIHRoZQo+IGZpcnN0IG9yZyB0aGVuIGZhaWwgd2l0aCBhIG1pc2xlYWRpbmcgYDQwMyBBY2Nl" + - "c3MgRGVuaWVkYCAobm90IGEgNDAxOiB0aGUgYXV0aAo+IHN1Y2NlZWRlZCwgaXQncyB0aGUgd3Jv" + - "bmctb3JnIGtleSkuIElmIHlvdSBwdWxsIGNoYXJ0cy9pbWFnZXMgZnJvbSBtb3JlIHRoYW4gb25l" + - "IG9yZywKPiBlaXRoZXIgcmUtcnVuIHRoZSBsb2dpbiB3aXRoIHRoZSBjb3JyZWN0IGtleSBpbW1l" + - "ZGlhdGVseSBiZWZvcmUgZWFjaCBwdWxsLCBvciBwYXNzCj4gYC0tdXNlcm5hbWUgJyRvYXV0aHRv" + - "a2VuJyAtLXBhc3N3b3JkIDxrZXk+YCBwZXIgYGhlbG0gcHVsbGAgaW52b2NhdGlvbiBpbnN0ZWFk" + - "IG9mIHJlbHlpbmcKPiBvbiB0aGUgc3RvcmVkIGxvZ2luLiAoUHVsbGluZyBldmVyeXRoaW5nIGZy" + - "b20gYSBzaW5nbGUgcmVnaXN0cnkgbWlycm9yIGF2b2lkcyB0aGlzCj4gZW50aXJlbHkuKQoKIyMj" + - "IDJiLiAoUmVjb21tZW5kZWQpIFB1bGwgZnJvbSBhIHJlZ2lzdHJ5IHRoZSBjbHVzdGVyIGF1dGhl" + - "bnRpY2F0ZXMgdG8gYXV0b21hdGljYWxseQoKSWYgeW91IG1pcnJvciB0aGUgTlZDRiBpbWFnZXMg" + - "aW50byBhIHJlZ2lzdHJ5IHRoYXQgdGhlIGNsdXN0ZXIgY2FuIHB1bGwgZnJvbSB3aXRob3V0IGFu" + - "CmV4cGxpY2l0IGltYWdlIHB1bGwgc2VjcmV0IChmb3IgZXhhbXBsZSwgYSByZWdpc3RyeSB3aGVy" + - "ZSB0aGUgbm9kZSBvciB3b3JrbG9hZCBpZGVudGl0eSBpcwpncmFudGVkIHB1bGwgYWNjZXNzIGF1" + - "dG9tYXRpY2FsbHkpLCBwb2ludCB0aGUgc3RhY2sgYXQgaXQgYW5kIHNraXAgdGhlIGNyZWRlbnRp" + - "YWwgc3RlcHMKYWJvdmUuCgoxLiBQb2ludCB0aGUgc3RhY2sgYXQgdGhlIG1pcnJvciBpbiBgZW52" + - "aXJvbm1lbnRzLzxlbnY+LnlhbWxgOgoKICAgYGBgeWFtbAogICBnbG9iYWw6CiAgICAgaW1hZ2U6" + - "CiAgICAgICByZWdpc3RyeTogPHlvdXItcmVnaXN0cnk+ICAgICAgICAgICAgIyBlLmcuIHJlZ2lz" + - "dHJ5LmV4YW1wbGUuY29tCiAgICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICAg" + - "IGhlbG06CiAgICAgICBzb3VyY2VzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25s" + - "eSBpZiB5b3UgYWxzbyBtaXJyb3JlZCB0aGUgaGVsbSBjaGFydHMKICAgICAgICAgcmVnaXN0cnk6" + - "IDx5b3VyLXJlZ2lzdHJ5PgogICAgICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgog" + - "ICBgYGAKCiAgID4gVGhlIG1hbmlmZXN0IGhhcyBhIG1peCBvZiBPQ0kgYW5kIG5vbi1PQ0kgYXJ0" + - "aWZhY3RzLCBzbyBjb252ZXJ0IG5vbi1PQ0kgY2hhcnRzIGJlZm9yZQogICA+IG1pcnJvcmluZy4g" + - "Q29udGFpbmVyIGltYWdlcyAoYG52Y3IuaW8vLi4uYCkgYXJlIGFscmVhZHkgT0NJIGFuZCBtaXJy" + - "b3IgYXMtaXMuIFNvbWUgSGVsbQogICA+IGNoYXJ0cywgdGhvdWdoLCBhcmUgcHVibGlzaGVkIHRv" + - "IGFuIGBodHRwczovL2AgSGVsbSByZXBvc2l0b3J5IChmb3IgZXhhbXBsZQogICA+IGBoZWxtLm5n" + - "Yy5udmlkaWEuY29tYCkuIFRob3NlIGFyZSBub3QgT0NJIGFuZCBjYW5ub3QgYmUgcmVzb2x2ZWQg" + - "YnkgYGdsb2JhbC5oZWxtLnNvdXJjZXNgCiAgID4gKE9DSSkgb3IgbWlycm9yZWQgZGlyZWN0bHku" + - "IEJlZm9yZSBwb2ludGluZyB0aGUgc3RhY2sgYXQgeW91ciBtaXJyb3IsIGNvbnZlcnQgZWFjaAog" + - "ICA+IGBodHRwczovL2AgY2hhcnQgdG8gT0NJOiBgaGVsbSByZXBvIGFkZGAvYGhlbG0gcHVsbGAg" + - "dGhlIGAudGd6YCwgdGhlbgogICA+IGBoZWxtIHB1c2ggPGNoYXJ0Pi50Z3ogb2NpOi8vPHlvdXIt" + - "cmVnaXN0cnk+LzxtaXJyb3Itc3ViLXBhdGg+YC4gT25seSBPQ0kgY2hhcnRzIGNhbiBsaXZlCiAg" + - "ID4gdW5kZXIgYGdsb2JhbC5oZWxtLnNvdXJjZXNgLgoKMi4gU2tpcCB0aGUgY3JlZGVudGlhbCBz" + - "dGVwcyBhYm92ZS4gV2hlbiB0aGUgY2x1c3RlciBhdXRoZW50aWNhdGVzIHRvIHRoZSByZWdpc3Ry" + - "eQogICBhdXRvbWF0aWNhbGx5ICh0aGUgbm9kZSBvciB3b3JrbG9hZCBpZGVudGl0eSBoYXMgcHVs" + - "bCBhY2Nlc3MpLCB0aGUgcHVsbCBuZWVkcyBubwogICBLdWJlcm5ldGVzIHNlY3JldCwgc28geW91" + - "IGRvIG5vdCBuZWVkOiB0aGUgcGVyLW5hbWVzcGFjZSBgbnZjci1jcmVkc2AgZnJvbSBzdGVwIDEK" + - "ICAgKHN0aWxsIGNyZWF0ZSB0aGUgbmFtZXNwYWNlcywganVzdCBub3QgdGhlIHNlY3JldCksIHRo" + - "ZSBgZ2xvYmFsLmltYWdlUHVsbFNlY3JldHNgIGVudHJ5LAogICBvciB0aGUgYGRvY2tlciBsb2dp" + - "bmAvYGhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pb2AgZnJvbSBzdGVwIDIuCgogICA+IE9uZSBy" + - "ZXNpZHVhbCBjcmVkZW50aWFsOiBudmNmLWFwaSBzdGlsbCB2YWxpZGF0ZXMgdGhlIHVzZXIgZnVu" + - "Y3Rpb24gaW1hZ2UgYXQKICAgPiBgZnVuY3Rpb24gY3JlYXRlYCB2aWEgdGhlIGFjY291bnQgcmVn" + - "aXN0cnkgY3JlZGVudGlhbCwgc28gdGhhdCBjcmVkZW50aWFsIG11c3QgcG9pbnQgYXQKICAgPiB3" + - "aGljaGV2ZXIgcmVnaXN0cnkgaG9sZHMgdGhlIHVzZXIgaW1hZ2UgKHNldCBpdCB0byB5b3VyIG1p" + - "cnJvciBpZiB0aGUgaW1hZ2UgaXMgbWlycm9yZWQKICAgPiB0aGVyZSkuCgojIyMgMy4gU2V0IHRo" + - "ZSByb3V0ZSBkb21haW4KCmBnbG9iYWwuZG9tYWluYCBzZXRzIHRoZSBob3N0bmFtZSBzdWZmaXgg" + - "Zm9yIHJvdXRlcyBzdWNoIGFzIGBhcGkuPGRvbWFpbj5gLiBJdCBkb2VzIG5vdCBjb25maWd1cmUg" + - "dGhlIEdhdGV3YXkgb3IgaXRzIGxvYWQgYmFsYW5jZXIuIFF1ZXJ5IHRoZSBleGFjdCBleGlzdGlu" + - "ZyBHYXRld2F5OgoKYGBgYmFzaApHQVRFV0FZX0FERFJFU1M9JChrdWJlY3RsIGdldCBnYXRld2F5" + - "IDxnYXRld2F5LW5hbWU+IC1uIDxnYXRld2F5LW5hbWVzcGFjZT4gLW8ganNvbnBhdGg9J3suc3Rh" + - "dHVzLmFkZHJlc3Nlc1swXS52YWx1ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSRVNTIgpgYGAK" + - "ClRoZSBhZGRyZXNzIG1heSBiZSBhIGhvc3RuYW1lIG9yIElQLiBDbG91ZCBwcm92aWRlciBhbmQg" + - "R2F0ZXdheSBjb25maWd1cmF0aW9uIGRldGVybWluZSB0aGUgbG9hZCBiYWxhbmNlciB0eXBlIGFu" + - "ZCBhZGRyZXNzIGZvcm1hdC4gVGhlIHNlbGYtbWFuYWdlZCBzdGFjayBkb2VzIG5vdCBzZWxlY3Qg" + - "ZWl0aGVyLgoKRm9yIHRlbXBvcmFyeSB0ZXN0aW5nIHdpdGhvdXQgRE5TLCB1c2UgYSBzdGFibGUg" + - "cmVzZXJ2ZWQgc3VmZml4IHN1Y2ggYXMgYGdsb2JhbC5kb21haW46ICJudmNmLnRlc3QiYCwgY29u" + - "bmVjdCB0byBgR0FURVdBWV9BRERSRVNTYCwgYW5kIHNlbmQgYEhvc3Q6IGFwaS5udmNmLnRlc3Rg" + - "LiBGb3IgcHJvZHVjdGlvbiwgdXNlIHlvdXIgYmFzZSBETlMgZG9tYWluIGFuZCBwb2ludCBpdHMg" + - "cm91dGUgcmVjb3JkcyB0byBgR0FURVdBWV9BRERSRVNTYC4gSWYgdGhlIGVuZHBvaW50IGxhdGVy" + - "IGNoYW5nZXMsIGtlZXAgYGdsb2JhbC5kb21haW5gIHN0YWJsZSBhbmQgdXBkYXRlIG9ubHkgRE5T" + - "IG9yIHRoZSBjbGllbnQgZGVzdGluYXRpb24uIFNlZSBFeGFtcGxlIDQgaW4gW2V4YW1wbGVzLm1k" + - "XShleGFtcGxlcy5tZCkuCgojIyMgNC4gUHJldmlldyBhbmQgZGVwbG95CgpgYGBiYXNoCkhFTE1G" + - "SUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIHRlbXBsYXRlICAgIyBQcmV2aWV3IHJlbmRlcmVk" + - "IG1hbmlmZXN0cwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSBzeW5jICAgICAgICMg" + - "RGVwbG95CmBgYAoKPiBTZXQgQk9USCBDYXNzYW5kcmEgcGFzc3dvcmRzIGluIHRoZSBzZWNyZXRz" + - "IGZpbGUuIFRoZSBzZWNyZXRzIGZpbGUgZG9jdW1lbnRzCj4gYERFRkFVTFRfQ0FTU0FORFJBX1BB" + - "U1NXT1JEYCwgYnV0IHRoZSBjYXNzYW5kcmEgY2hhcnQgaGFzIGEgc2Vjb25kIGNyZWRlbnRpYWws" + - "Cj4gYGNhc3NhbmRyYS5zZXJ2aWNlUm9sZVBhc3N3b3JkYCwgdGhhdCBkZWZhdWx0cyB0byBgY2hA" + - "bmczbTNgLiBJZiB5b3Ugc2V0IG9ubHkKPiBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgLCB0" + - "aGUgc2VydmljZSByb2xlIGtlZXBzIHRoYXQgZGVmYXVsdCBhbmQgZXZlcnkgREItYmFja2VkCj4g" + - "c2VydmljZSBjcmFzaC1sb29wcyB3aXRoIGBCYWQgY3JlZGVudGlhbHNgIG9uY2UgaXQgdHJpZXMg" + - "dG8gYXV0aGVudGljYXRlLiBTZXQKPiBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHRv" + - "IHRoZSBzYW1lIHZhbHVlIGFzIGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAuCgojIyMgNS4g" + - "RGVwbG95bWVudCBwaGFzZXMKCkhlbG1maWxlIGRlcGxveXMgaW4gb3JkZXIgd2l0aCBkZXBlbmRl" + - "bmNpZXM6Cgp8IFBoYXNlIHwgU2VsZWN0b3IgfCBTZXJ2aWNlcyB8IFdhaXQgdGltZSB8CnwtLS0t" + - "LS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwKfCAxIHwgYHJlbGVhc2UtZ3Jv" + - "dXA9ZGVwZW5kZW5jaWVzYCB8IE5BVFMsIE9wZW5CYW8sIENhc3NhbmRyYSB8IDUtMTAgbWluIHwK" + - "fCAyIHwgYHJlbGVhc2UtZ3JvdXA9c2VydmljZXNgIHwgQVBJLCBTSVMsIEVTUywgaW52b2NhdGlv" + - "biwgZ3JwYy1wcm94eSwgbm90YXJ5LCBhcGkta2V5cywgb3B0aW9uYWwgTExNIGdhdGV3YXkvcm91" + - "dGVyLCBvcHRpb25hbCBWYW5pdHkgR2F0ZXdheSwgTlZDRiBVSSB3aGVuIHRoZSBzdGFjayBwYWNr" + - "YWdlIGluY2x1ZGVzIHRoZSBhZGRvbiB8IDUtMTAgbWluIHwKfCAzIHwgYHJlbGVhc2UtZ3JvdXA9" + - "aW5ncmVzc2AgfCBHYXRld2F5IHJvdXRlcyB8IDEtMiBtaW4gfAp8IDQgfCBgcmVsZWFzZS1ncm91" + - "cD1vYnNlcnZhYmlsaXR5YCB8IE9ic2VydmFiaWxpdHkgc3RhY2sgKGlmIGVuYWJsZWQpIHwgMS0y" + - "IG1pbiB8CgpNb25pdG9yIGluIGEgc2VwYXJhdGUgdGVybWluYWw6CgpgYGBiYXNoCmt1YmVjdGwg" + - "Z2V0IHBvZHMgLUEgLXcKYGBgCgojIyMgNi4gRW5hYmxlIFZhbml0eSBHYXRld2F5IChvcHRpb25h" + - "bCkKClZhbml0eSBHYXRld2F5IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgYW5kIGlzIG9ubHkgbmVl" + - "ZGVkIGZvciBjdXN0b21lci1mYWNpbmcKaG9zdG5hbWVzIG9yIHBhdGggbWFwcGluZ3MgaW4gZnJv" + - "bnQgb2YgdGhlIHN0YW5kYXJkIE5WQ0YgQVBJIGFuZCBpbnZvY2F0aW9uCnJvdXRlcy4gSXQgaXMg" + - "YXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBWYW5pdHkg" + - "R2F0ZXdheQphZGRvbi4gSWYgdGhlIGV4dHJhY3RlZCBzdGFjayBwYWNrYWdlIGRvZXMgbm90IGNv" + - "bnRhaW4gYSBgdmFuaXR5LWdhdGV3YXlgCnJlbGVhc2UgYW5kIGB2YW5pdHlHYXRld2F5YCByb3V0" + - "ZSB2YWx1ZXMsIHNraXAgdGhlc2UgY29tbWFuZHMgYW5kIHVzZSBhIG5ld2VyCnN0YWNrIHBhY2th" + - "Z2UgdGhhdCBpbmNsdWRlcyB0aGVtLgoKSWYgdGhlIHN0YWNrIHBhY2thZ2UgaW5jbHVkZXMgdGhl" + - "IGFkZG9uLCBlbmFibGUgaXQgaW4KYGVudmlyb25tZW50cy88ZW52LW5hbWU+LnlhbWxgOgoKYGBg" + - "eWFtbAphZGRvbnM6CiAgdmFuaXR5R2F0ZXdheToKICAgIGVuYWJsZWQ6IHRydWUKICAgIG1hcHBp" + - "bmdDb25maWc6IHt9CmBgYAoKVGhlIGRlZmF1bHQgcm91dGUgaG9zdCBpcyBgdmFuaXR5Ljxkb21h" + - "aW4+YCBhbmQgdGhlIGJhY2tlbmQgaXMKYHZhbml0eS1nYXRld2F5Lm52Y2Y6ODA4MGAuIFB1dCBk" + - "ZXBsb3ltZW50LXNwZWNpZmljIGhvc3QgYW5kIHBhdGggbWFwcGluZ3MgdW5kZXIKYGFkZG9ucy52" + - "YW5pdHlHYXRld2F5Lm1hcHBpbmdDb25maWdgLiBJZiB5b3UgbmVlZCBjdXN0b20gdmFuaXR5IGhv" + - "c3RzIGluc3RlYWQgb2YKYHZhbml0eS48ZG9tYWluPmAsIHVzZSB0aGUgcm91dGUgaG9zdG5hbWUg" + - "b3ZlcnJpZGVzIHN1cHBvcnRlZCBieSB0aGUgc3RhY2sKcGFja2FnZSBhbmQgY3JlYXRlIG1hdGNo" + - "aW5nIEROUyByZWNvcmRzLgoKQWZ0ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0" + - "aGUgYHZhbml0eS1nYXRld2F5YCByZWxlYXNlLCBwcmV2aWV3IGFuZAphcHBseSB0aGUgc2Vydmlj" + - "ZSBhbmQgcm91dGU6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0t" + - "c2VsZWN0b3IgbmFtZT12YW5pdHktZ2F0ZXdheSB0ZW1wbGF0ZQpIRUxNRklMRV9FTlY9PGVudi1u" + - "YW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9dmFuaXR5LWdhdGV3YXkgc3luYwpIRUxNRklM" + - "RV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVz" + - "cyBzeW5jCmBgYAoKVmVyaWZ5IHRoZSByb3V0ZSBvbmx5IHdoZW4gdGhlIGFkZG9uIGlzIHByZXNl" + - "bnQgYW5kIGVuYWJsZWQ6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSxzdmMgLW4gbnZjZiAt" + - "bCBhcHAua3ViZXJuZXRlcy5pby9uYW1lPXZhbml0eS1nYXRld2F5Cmt1YmVjdGwgZ2V0IGh0dHBy" + - "b3V0ZSAtQSB8IGdyZXAgLWkgdmFuaXR5CmN1cmwgLUggIkhvc3Q6IHZhbml0eS48ZG9tYWluPiIg" + - "Imh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPi9oZWFsdGgiCmBgYAoKRG8gbm90IGVuYWJsZSBWYW5p" + - "dHkgR2F0ZXdheSBmb3Igc3RhbmRhcmQgQVBJLCBBUEkgS2V5cywgaW52b2NhdGlvbiwgTExNCmlu" + - "dm9jYXRpb24sIG9yIGdSUEMgdHJhZmZpYy4gVGhvc2Ugcm91dGVzIGFyZSBwcm92aWRlZCBieSB0" + - "aGUgYmFzZSBnYXRld2F5CnJvdXRlcy4KCiMjIyA3LiBFbmFibGUgTlZDRiBVSSAob3B0aW9uYWwp" + - "CgpOVkNGIFVJIGlzIGFuIG9wdGlvbmFsLCBjdXN0b21lci1mYWNpbmcgYWRtaW4tcGFuZWwgVUku" + - "IEl0IGlzIGRpc2FibGVkIGJ5CmRlZmF1bHQgYW5kIGF2YWlsYWJsZSBvbmx5IGluIHN0YWNrIHBh" + - "Y2thZ2VzIHRoYXQgaW5jbHVkZSB0aGUgTlZDRiBVSSBhZGRvbi4gSWYKeW91ciBleHRyYWN0ZWQg" + - "c3RhY2sgcGFja2FnZSBkb2VzIG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UgYW5kIGBu" + - "dmNmVWlgCnJvdXRlIHZhbHVlcywgc2tpcCB0aGlzIHNlY3Rpb24uIFRoZSBOVkNGIFVJIGFkbWlu" + - "IHBhbmVsIGlzIGN1cnJlbnRseQp1bmF1dGhlbnRpY2F0ZWQ7IGRvIG5vdCBleHBvc2UgaXQgdG8g" + - "dGhlIHB1YmxpYyBpbnRlcm5ldC4KCkZvciBlbmFibGVtZW50LCBuYW1lc3BhY2UgYW5kIHB1bGwg" + - "c2VjcmV0IHNldHVwLCBhcHBseSwgYW5kIHZlcmlmaWNhdGlvbiBzdGVwcywKc2VlIFtOVkNGIFVJ" + - "IEFkZG9uXShyZWZlcmVuY2VzL252Y2YtdWktYWRkb24ubWQpLgoKIyMjIDguIEluc3RhbGwgdGhl" + - "IHNlcGFyYXRlIGNvbXB1dGUtcGxhbmUgc3RhY2sKClRoZSBjb250cm9sLXBsYW5lIHN0YWNrIGRv" + - "ZXMgbm90IGluc3RhbGwgY29tcHV0ZS1wbGFuZSBjb21wb25lbnRzLiBBZnRlciBpdCBpcyBoZWFs" + - "dGh5LCBjaG9vc2UgZXhhY3RseSBvbmUgY29tcHV0ZS1wbGFuZSBoYW5kb2ZmOgoKLSBIZWxtZmls" + - "ZSB2YWx1ZXMgZmxvdzogYXV0aG9yIHNlcGFyYXRlIGVudmlyb25tZW50IGZpbGVzLCB0aGVuIHJl" + - "Z2lzdGVyIGFuZAogIGluc3RhbGwgd2l0aCB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZS4KLSBD" + - "TEkgcHJvZmlsZSBmbG93OiB1c2UgdGhlIHByb2ZpbGUgZ2VuZXJhdGVkIGJ5IHRoZSBDTEkgY29u" + - "dHJvbC1wbGFuZSBpbnN0YWxsLAogIHRoZW4gcnVuIHRoZSBjb21wbGV0ZSBDTEkgcmVnaXN0ZXIg" + - "YW5kIGluc3RhbGwgY29tbWFuZHMuCgpEbyBub3QgbWl4IHRoZXNlIGhhbmRvZmZzLiBGb2xsb3cg" + - "W1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxh" + - "bmUtaW5zdGFsbGF0aW9uLm1kKQpmb3IgY29tbWFuZHMsIEVLUyByb3V0aW5nLCBwdWxsIHNlY3Jl" + - "dHMsIHZlcmlmaWNhdGlvbiwgYW5kIHRlYXJkb3duIG9yZGVyLgoKIyMgQ2xlYW4gVGVhcmRvd24K" + - "CkRlc3Ryb3kgZXZlcnkgY29tcHV0ZSBwbGFuZSBiZWZvcmUgdGhlIGNvbnRyb2wgcGxhbmUsIHVz" + - "aW5nIHRoZSB0ZWFyZG93biBmb3IKdGhlIHNhbWUgaGFuZG9mZjsgc2VlIFtTcGxpdCBDb21wdXRl" + - "LVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlv" + - "bi5tZCN0ZWFyZG93bikuCgpTY29wZTogT25seSBkZXN0cm95IHJlbGVhc2VzIG1hbmFnZWQgYnkg" + - "dGhpcyBjb250cm9sLXBsYW5lIGhlbG1maWxlIHN0YWNrLiBUaGUgTlZDRiByZWxlYXNlcyBhcmU6" + - "IGBuYXRzYCwgYG9wZW5iYW8tc2VydmVyYCwgYGNhc3NhbmRyYWAsIGBhcGkta2V5c2AsIGBzaXNg" + - "LCBgYXBpYCwgYGludm9jYXRpb24tc2VydmljZWAsIGBncnBjLXByb3h5YCwgYGVzcy1hcGlgLCBg" + - "bm90YXJ5LXNlcnZpY2VgLCBvcHRpb25hbCBgdmFuaXR5LWdhdGV3YXlgLCBgbnZjZi11aWAsIGBh" + - "ZG1pbi1pc3N1ZXItcHJveHlgLCBhbmQgYGluZ3Jlc3NgOyBgY2VydC1tYW5hZ2VyYCBpcyBpbmNs" + - "dWRlZCBvbmx5IHdoZW4gYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IHRydWVgLiBUaGUgY29udHJvbC1w" + - "bGFuZSBuYW1lc3BhY2UgaW52ZW50b3J5IGFsc28gaW5jbHVkZXMgYGNlcnQtbWFuYWdlcmAsIGJ1" + - "dCBkZWZhdWx0IG5hbWVzcGFjZSBjbGVhbnVwIHByZXNlcnZlcyBpdC4gTmFtZXNwYWNlIHByZXNl" + - "cnZhdGlvbiBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgSGVsbSByZWxlYXNlLiBFeHRlcm5hbCBjZXJ0" + - "LW1hbmFnZXIgbXVzdCB1c2UgYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNlYDsgb3RoZXJ3aXNl" + - "IEhlbG1maWxlIHRyZWF0cyB0aGUgcmVsZWFzZSBhcyBzdGFjay1tYW5hZ2VkLiBEbyBub3QgZGVs" + - "ZXRlIG90aGVyIGhlbG0gcmVsZWFzZXMgb3IgbmFtZXNwYWNlcyBvbiB0aGUgY2x1c3Rlci4KCkJl" + - "Zm9yZSBjb250cm9sLXBsYW5lIGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2Vy" + - "IGlzIGV4dGVybmFsLiBGb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVj" + - "dGl2ZSBgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVl" + - "LiBGb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBj" + - "ZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVs" + - "ZWFzZSBtZXRhZGF0YSBhbmQgYWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNl" + - "LiBQcmVzZXJ2ZSB0aGUgbmFtZXNwYWNlIGJ5IGRlZmF1bHQ7IG9ubHkgcGxhbiBpdHMgcmVtb3Zh" + - "bCBhZnRlciB2ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGdldHRpbmcgZXhwbGlj" + - "aXQgY29uZmlybWF0aW9uLgoKIyMjIFN0YW5kYXJkIHRlYXJkb3duCgpSdW4gZnJvbSBpbnNpZGUg" + - "dGhlIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFjay9gIGRpcmVjdG9yeToKCmBgYGJhc2gKSEVMTUZJ" + - "TEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgZGVzdHJveQpgYGAKCiMjIyBEZWxldGUgbmFtZXNw" + - "YWNlcwoKYGBgYmFzaApmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNm" + - "IGFwaS1rZXlzIGVzcyBzaXMgbnZjZi11aSB2YXVsdC1zeXN0ZW07IGRvCiAga3ViZWN0bCBkZWxl" + - "dGUgbmFtZXNwYWNlICIkbnMiIC0taWdub3JlLW5vdC1mb3VuZApkb25lCmBgYAoKIyMjIFZlcmlm" + - "eSBjbGVhbgoKYGBgYmFzaAprdWJlY3RsIGdldCBucyB8IGdyZXAgLUUgJyhjYXNzYW5kcmF8bmF0" + - "c3x2YXVsdHxudmNmfGFwaS1rZXlzfGVzc3xzaXMpJwojIFNob3VsZCByZXR1cm4gZW1wdHkKYGBg" + - "CgojIyBPdmVycmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzCgojIyMgRW52aXJvbm1lbnQgZmlsZSAo" + - "bGltaXRlZCkKCldvcmtzIG9ubHkgZm9yIGtleXMgdGhhdCBgZ2xvYmFsLnlhbWwuZ290bXBsYCBw" + - "cm9wYWdhdGVzIChlLmcuLCBgY2Fzc2FuZHJhLnJlcGxpY2FDb3VudGAsIGBnbG9iYWwuc3RvcmFn" + - "ZUNsYXNzYCwgYGdsb2JhbC5pbWFnZWApLgoKIyMjIFJlbGVhc2UgdmFsdWVzIGJsb2NrIChhbnkg" + - "Y2hhcnQgdmFsdWUpCgpFZGl0IHRoZSByZWxlYXNlIGluIGBoZWxtZmlsZS5kLyoueWFtbC5nb3Rt" + - "cGxgIGFuZCBhZGQgYSBgdmFsdWVzOmAgYmxvY2suIEluIHRoZSBleGFtcGxlcyBiZWxvdywgYDxw" + - "cml2YXRlLXZhbHVlcz5gIHJlZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhl" + - "IGhlbG1maWxlIHN0YWNrIHJvb3QuCgpgYGB5YW1sCi0gbmFtZTogY2Fzc2FuZHJhCiAgdmVyc2lv" + - "bjogMC44LjAKICBjb25kaXRpb246IGNhc3NhbmRyYS5lbmFibGVkCiAgbmFtZXNwYWNlOiBjYXNz" + - "YW5kcmEtc3lzdGVtCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwu" + - "eWFtbC5nb3RtcGwKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVM" + - "TUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwKICAgIC0gY2Fzc2FuZHJhOgogICAgICAgIHJlc291" + - "cmNlczoKICAgICAgICAgIGxpbWl0czoKICAgICAgICAgICAgY3B1OiAiOCIKICAgICAgICAgICAg" + - "bWVtb3J5OiA4MTkyTWkKICAgICAgICAgIHJlcXVlc3RzOgogICAgICAgICAgICBjcHU6ICIyIgog" + - "ICAgICAgICAgICBtZW1vcnk6IDQwOTZNaQpgYGAKCllBTUwgbWVyZ2UgZ290Y2hhOiBXaGVuIGEg" + - "cmVsZWFzZSB1c2VzIGA8PDogKmRlcGVuZGVuY3lgIG9yIGBpbmhlcml0YCwgc3BlY2lmeWluZyBg" + - "dmFsdWVzOmAgcmVwbGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QuIFlvdSBtdXN0IHJl" + - "LWluY2x1ZGUgYGdsb2JhbC55YW1sLmdvdG1wbGAgYW5kIHRoZSBzZWNyZXRzIGZpbGUuCgojIyMg" + - "UHJldmlldyBhbmQgYXBwbHkgYSBzaW5nbGUgcmVsZWFzZQoKYGBgYmFzaApIRUxNRklMRV9FTlY9" + - "PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSAgIyBQcmV2" + - "aWV3CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJh" + - "IHN5bmMgICAgICAjIEFwcGx5CmBgYAoKIyMgSW1hZ2UgUHVsbCBTZWNyZXRzCgpUaGVyZSBhcmUg" + - "dGhyZWUgZGlzdGluY3QgY3JlZGVudGlhbCB0eXBlcy4gRG8gbm90IGNvbmZsYXRlIHRoZW0sIGFu" + - "ZCBtaW5kIHRoZQpmb3JtYXQgcnVsZSBiZWxvdyAodHdvIG9mIHRoZW0gZmFpbCBldmVuIHdpdGgg" + - "dGhlIGNvcnJlY3Qga2V5IGlmIHRoZSBmb3JtYXQgaXMgd3JvbmcpOgoKfCB8IENvbnRyb2wgUGxh" + - "bmUgUHVsbCBTZWNyZXRzIHwgQVBJIEJvb3RzdHJhcCBSZWdpc3RyeSBDcmVkcyB8IFNpZGVjYXIg" + - "SW1hZ2UtUHVsbCBTZWNyZXQgfAp8LS0tfC0tLXwtLS18LS0tfAp8IFB1cnBvc2UgfCBLOHMgcHVs" + - "bHMgTlZDRiBzZXJ2aWNlIGltYWdlcyB8IG52Y2YtYXBpIHZhbGlkYXRlcyB0aGUgdXNlciBmdW5j" + - "dGlvbiBpbWFnZSBhdCBgZnVuY3Rpb24gY3JlYXRlYCB8IG52Y2YtYXBpIHB1bGxzIHRoZSBwbGF0" + - "Zm9ybSBzaWRlY2FycyBpbmplY3RlZCBpbnRvIGV2ZXJ5IHdvcmtlciBwb2QgfAp8IFdoZXJlIHwg" + - "SzhzIGBkb2NrZXItcmVnaXN0cnlgIFNlY3JldHMgKyBLeXZlcm5vIENsdXN0ZXJQb2xpY3kgfCBg" + - "PHByaXZhdGUtdmFsdWVzPi88ZW52Pi1zZWNyZXRzLnlhbWxgIChhY2NvdW50LWJvb3RzdHJhcCkg" + - "fCBgTlZDRl9BUElfU0lERUNBUlNfSU1BR0VfUFVMTF9TRUNSRVRgIGluIGA8ZW52Pi1zZWNyZXRz" + - "LnlhbWxgIC0+IE9wZW5CYW8gYHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1" + - "bGwtc2VjcmV0YCAoZmllbGQgYHNlY3JldGApIHwKfCBGb3JtYXQgfCBzdGFuZGFyZCBgLmRvY2tl" + - "cmNvbmZpZ2pzb25gIChrdWJlY3RsIGJ1aWxkcyBpdCBmb3IgeW91KSB8IGBiYXNlNjQoIiRvYXV0" + - "aHRva2VuOjxrZXk+IilgIHwgYGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAgfAoKPiBOb3Rl" + - "OiB0aGUgYWNjb3VudC1ib290c3RyYXAgY3JlZCBhbmQgdGhlIHNpZGVjYXIgc2VjcmV0IGFyZSBO" + - "T1QgYQo+IGRvY2tlcmNvbmZpZ2pzb24uIFRoZSBzZWNyZXRzIHRlbXBsYXRlIHNoaXBzIHRoZSBw" + - "bGFjZWhvbGRlcgo+IGBSRVBMQUNFX1dJVEhfQkFTRTY0X0RPQ0tFUl9DUkVERU5USUFMYCwgd2hp" + - "Y2ggcmVhZHMgYXMgImJhc2U2NCBvZiBhIGRvY2tlcmNvbmZpZ2pzb24uIgo+IEl0IGlzbid0LiBC" + - "b3RoIHZhbHVlcyBhcmUgY29uc3VtZWQgYXMgYSByYXcgZG9ja2VyIGBhdXRoYCBzdHJpbmc6IG52" + - "Y2YtYXBpIHRha2VzIHRoZQo+IHZhbHVlIHZlcmJhdGltIGFuZCBkcm9wcyBpdCBpbnRvIHRoZSBg" + - "YXV0aGAgZmllbGQgb2YgdGhlIGRvY2tlcmNvbmZpZyBpdCBidWlsZHMuIFNvIHRoZQo+IHZhbHVl" + - "IG11c3QgYmUgYGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAsIGUuZy4gYHByaW50ZiAnJG9h" + - "dXRodG9rZW46JXMnICIkS0VZIiB8IG9wZW5zc2wgYmFzZTY0IC1BYCwKPiBub3QgYGJhc2U2NCg8" + - "ZG9ja2VyY29uZmlnanNvbj4pYC4KPgo+IC0gV3JvbmcgYWNjb3VudC1ib290c3RyYXAgdmFsdWU6" + - "IGBmdW5jdGlvbiBjcmVhdGVgIHJldHVybnMKPiAgICBgNDAwICJtdXN0IGJlIGJhc2U2NCBlbmNv" + - "ZGVkIHVzZXJuYW1lOnBhc3N3b3JkIGZvcm1hdCJgLgo+IC0gV3Jvbmcgc2lkZWNhciB2YWx1ZTog" + - "ZXZlcnkgd29ya2VyJ3Mgc2lkZWNhciBwdWxsIGdldHMgYSBtYWxmb3JtZWQgY3JlZGVudGlhbCBh" + - "bmQKPiAgICBgNDAzYHMsIHJlZ2FyZGxlc3Mgb2Ygd2hpY2gga2V5IGlzIGluc2lkZS4gVGhlIHN5" + - "bXB0b20gbG9va3MgbGlrZSBhIGJhZCBvciB3cm9uZy1vcmcKPiAgICBrZXksIGJ1dCB0aGUga2V5" + - "IGlzIGZpbmUgYW5kIHRoZSBlbmNvZGluZyBpcyB0aGUgYnVnLiBUbyByZXBhaXIgYW4gYWxyZWFk" + - "eS1pbnN0YWxsZWQKPiAgICBzdGFjayB3aXRob3V0IGEgZnVsbCByZS1zeW5jOgo+Cj4gICAgYGBg" + - "YmFzaAo+ICAgIEFVVEg9JChwcmludGYgJyRvYXV0aHRva2VuOiVzJyAiJEtFWSIgfCBvcGVuc3Ns" + - "IGJhc2U2NCAtQSkKPiAgICBiYW8ga3YgcHV0IHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJz" + - "L2ltYWdlLXB1bGwtc2VjcmV0IHNlY3JldD0iJEFVVEgiCj4gICAgIyBpZiBOVklESUEgQ2xvdWQg" + - "VGFza3MgaXMgZW5hYmxlZCwgcmVwZWF0IGZvciBzZXJ2aWNlcy9udmN0LWFwaS9rdi9zaWRlY2Fy" + - "cy9pbWFnZS1wdWxsLXNlY3JldAo+ICAgIGt1YmVjdGwgcm9sbG91dCByZXN0YXJ0IC1uIG52Y2Yg" + - "ZGVwbG95L252Y2YtYXBpICAgIyBwaWNrcyB1cCB0aGUgbmV3IHNpZGVjYXIgY3JlZAo+ICAgIGBg" + - "YAo+Cj4gTm90ZSAobXVsdGktb3JnKTogd2hlbiBwdWxsaW5nIGZyb20gTkdDIChub3QgYSBtaXJy" + - "b3IpLCB0aGUgdXNlciBmdW5jdGlvbiBpbWFnZSBhbmQKPiB0aGUgcGxhdGZvcm0gc2lkZWNhcnMg" + - "b2Z0ZW4gbGl2ZSBpbiBkaWZmZXJlbnQgbnZjci5pbyBvcmdzLCBlYWNoIG5lZWRpbmcgYSBkaWZm" + - "ZXJlbnQKPiBrZXksIHNvIHRoZSBhY2NvdW50LWJvb3RzdHJhcCBjcmVkIChmdW5jdGlvbiBpbWFn" + - "ZSkgYW5kIHRoZSBzaWRlY2FyIHNlY3JldCAoc2lkZWNhcnMpCj4gYXJlIGZyZXF1ZW50bHkgdHdv" + - "IGRpZmZlcmVudCBrZXlzLiBNaXJyb3JpbmcgZXZlcnl0aGluZyBpbnRvIGEgc2luZ2xlIHJlZ2lz" + - "dHJ5IHRoZQo+IGNsdXN0ZXIgYXV0aGVudGljYXRlcyB0byBhdXRvbWF0aWNhbGx5IGNvbGxhcHNl" + - "cyB0aGlzIHRvIG9uZSBjcmVkZW50aWFsIHBhdGguCgojIyMgQ29uZmlndXJpbmcgd2l0aCBLeXZl" + - "cm5vIChyZWNvbW1lbmRlZCkKClVzZSBhIEt5dmVybm8gbXV0YXRpbmcgYWRtaXNzaW9uIHBvbGlj" + - "eSB0byBhdXRvbWF0aWNhbGx5IGluamVjdCBgaW1hZ2VQdWxsU2VjcmV0c2AgaW50byBhbGwgcG9k" + - "cyBpbiBOVkNGIG5hbWVzcGFjZXMuIFRoaXMgd29ya3MgdW5pZm9ybWx5IGZvciBhbGwgY2hhcnRz" + - "IC0tIG5vIHBlci1jaGFydCBjb25maWd1cmF0aW9uIG9yIGhlbG1maWxlIG1vZGlmaWNhdGlvbnMg" + - "bmVlZGVkLgoKYGBgYmFzaAojIDEuIEluc3RhbGwgS3l2ZXJubwpoZWxtIHJlcG8gYWRkIGt5dmVy" + - "bm8gaHR0cHM6Ly9reXZlcm5vLmdpdGh1Yi5pby9reXZlcm5vLwpoZWxtIHJlcG8gdXBkYXRlCmhl" + - "bG0gaW5zdGFsbCBreXZlcm5vIGt5dmVybm8va3l2ZXJubyAtbiBreXZlcm5vIC0tY3JlYXRlLW5h" + - "bWVzcGFjZQoKIyAyLiBDcmVhdGUgcHVsbCBzZWNyZXQgaW4gZWFjaCBuYW1lc3BhY2UKZXhwb3J0" + - "IE5HQ19BUElfS0VZPSI8eW91ci1rZXk+Igpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRz" + - "LXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsg" + - "ZG8KICBrdWJlY3RsIGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAog" + - "ICAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0" + - "aHRva2VuJyBcCiAgICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5h" + - "bWVzcGFjZT0iJG5zIiBcCiAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFw" + - "cGx5IC1mIC0KZG9uZQoKIyAzLiBBcHBseSB0aGUgS3l2ZXJubyBDbHVzdGVyUG9saWN5Cmt1YmVj" + - "dGwgYXBwbHkgLWYga3l2ZXJuby1pbWFnZXB1bGxzZWNyZXQtcG9saWN5LnlhbWwKYGBgCgpUaGUg" + - "cG9saWN5IG11dGF0ZXMgZXZlcnkgcG9kIGF0IGFkbWlzc2lvbiB0aW1lLCBhZGRpbmcgYGltYWdl" + - "UHVsbFNlY3JldHM6IFt7bmFtZTogbnZjci1jcmVkc31dYC4gVmVyaWZ5IHdpdGg6CgpgYGBiYXNo" + - "Cmt1YmVjdGwgZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IC1vIGpzb25wYXRoPSd7" + - "LnNwZWMuaW1hZ2VQdWxsU2VjcmV0c30nCiMgU2hvdWxkIHNob3c6IFt7Im5hbWUiOiJudmNyLWNy" + - "ZWRzIn1dCmBgYAoKTm90IG5lZWRlZCBpZiB1c2luZyBhIENTUCBidWlsdC1pbiBjcmVkZW50aWFs" + - "IGhlbHBlciAoZS5nLiwgRUNSIHdpdGggSUFNIG5vZGUgcm9sZXMpLgoKRm9yIHRoZSBLeXZlcm5v" + - "IHBvbGljeSBZQU1MIGFuZCBwdWxsIHNlY3JldCBjcmVhdGlvbiBzY3JpcHQsIHNlZSBbcmVmZXJl" + - "bmNlcy9wdWxsLXNlY3JldHMubWRdKHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKS4KCiMjIERl" + - "YnVnZ2luZwoKIyMjIFF1aWNrIHN0YXR1cyBjaGVjawoKYGBgYmFzaAprdWJlY3RsIGdldCBwb2Rz" + - "IC1BIC1vIHdpZGUgICAgICAgICAgICAgICAgICAgICAgICAjIEFsbCBwb2RzCmhlbG0gbGlzdCAt" + - "QSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFsbCBoZWxtIHJlbGVh" + - "c2VzCmt1YmVjdGwgZ2V0IGV2ZW50cyAtbiA8bnM+IC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAn" + - "ICAjIFJlY2VudCBldmVudHMKYGBgCgojIyMgQ29tbW9uIGZhaWx1cmUgcGF0dGVybnMKCnwgU3lt" + - "cHRvbSB8IENhdXNlIHwgRml4IHwKfC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tfAp8IGBJbWFnZVB1" + - "bGxCYWNrT2ZmYCArIGA0MDEgVW5hdXRob3JpemVkYCB8IE1pc3Npbmcgb3Igd3JvbmcgcHVsbCBz" + - "ZWNyZXQgfCBDaGVjayBzZWNyZXQgZXhpc3RzLCBjaGVjayBTQSBoYXMgaW1hZ2VQdWxsU2VjcmV0" + - "cyB8CnwgYEluaXQ6MC8xYCBzdHVjayBvbiBzZXJ2aWNlIHBvZHMgfCBWYXVsdC1hZ2VudCB3YWl0" + - "aW5nIGZvciBPcGVuQmFvIHwgQ2hlY2sgT3BlbkJhbyBwb2RzICsgbWlncmF0aW9uIGpvYiBzdGF0" + - "dXMgfAp8IGBJbml0OjAvMWAgKyBgdmF1bHQtYWdlbnQtaW5pdGAgc2hvd3MgYGF1dGgvand0L2xv" + - "Z2luYCAtPiBgNDAwIC4uLiBubyBrbm93biBrZXkgc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlZCB0aGUg" + - "dG9rZW4gc2lnbmF0dXJlYCB8IE9wZW5CYW8gSldUIGF1dGggY29uZmlndXJlZCB3aXRoIGEgc3Rh" + - "dGljIHB1YmtleSBpbnN0ZWFkIG9mIHRoZSBjbHVzdGVyJ3MgbGl2ZSBKV0tTIC0tIHRoZSBiYXNl" + - "IGRlZmF1bHQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFs" + - "c2VgLiBDb21tb24gb24gQUtTIC8gYW55IE9JREMtaXNzdWVyIGNsdXN0ZXIgfCBTZXQgYG9wZW5i" + - "YW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogdHJ1ZWAsIGRlbGV0ZSBqb2Ig" + - "YG9wZW5iYW8tc2VydmVyLW1pZ3JhdGlvbnNgLCByZS1zeW5jIGBvcGVuYmFvLXNlcnZlcmAuIFNl" + - "ZSBbcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRdKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kKSAiSW5p" + - "dDowLzEgU3R1Y2siIGZpeCAjNC4gfAp8IGBPT01LaWxsZWRgIG9uIENhc3NhbmRyYSB8IERlZmF1" + - "bHQgcmVzb3VyY2VzIHRvbyBzbWFsbCB8IE92ZXJyaWRlIGBjYXNzYW5kcmEucmVzb3VyY2VzYCB2" + - "aWEgdmFsdWVzIGJsb2NrIHwKfCBEQi1iYWNrZWQgc2VydmljZXMgY3Jhc2gtbG9vcCBgQmFkIGNy" + - "ZWRlbnRpYWxzYCBjb25uZWN0aW5nIHRvIENhc3NhbmRyYSB8IFNlY3JldHMgZmlsZSBzZXQgb25s" + - "eSBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgOyBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFz" + - "c3dvcmRgIHN0aWxsIGRlZmF1bHRzIHRvIGBjaEBuZzNtM2AgfCBTZXQgYGNhc3NhbmRyYS5zZXJ2" + - "aWNlUm9sZVBhc3N3b3JkYCBpbiB0aGUgc2VjcmV0cyBmaWxlIGVxdWFsIHRvIGBERUZBVUxUX0NB" + - "U1NBTkRSQV9QQVNTV09SRGAsIHRoZW4gcmUtc3luYyBjYXNzYW5kcmEgKyB0aGUgREItYmFja2Vk" + - "IHNlcnZpY2VzIHwKfCBgUGVuZGluZ2AgcG9kcyB8IE5vZGUgc2VsZWN0b3IgbWlzbWF0Y2ggb3Ig" + - "bm8gc3RvcmFnZSBjbGFzcyB8IGBrdWJlY3RsIGRlc2NyaWJlIHBvZGAsIGNoZWNrIGxhYmVscyBh" + - "bmQgc3RvcmFnZSB8CnwgSGVsbSByZWxlYXNlIGluIGBmYWlsZWRgIHN0YXRlIHwgRmlyc3QgaW5z" + - "dGFsbCBmYWlsZWQgcGFydHdheSB8IGBoZWxtZmlsZSBkZXN0cm95YCB0aGUgcmVsZWFzZSwgdGhl" + - "biBgc3luY2AgYWdhaW4gfAp8IEFjY291bnQgYm9vdHN0cmFwIHRpbWVvdXQgfCBXcm9uZyBiYXNl" + - "NjQgY3JlZGVudGlhbHMgaW4gc2VjcmV0cyBmaWxlIHwgQ2hlY2sgYGt1YmVjdGwgbG9ncyBqb2Iv" + - "bnZjZi1hcGktYWNjb3VudC1ib290c3RyYXAgLW4gbnZjZmAgfAp8IGZ1bmN0aW9uIC8gYWNjb3Vu" + - "dCBjYWxscyByZXR1cm4gYDQwNCBVbmtub3duIGNsaWVudF9pZGAgfCBUaGUgYWNjb3VudC1ib290" + - "c3RyYXAgcG9zdC1pbnN0YWxsIGhvb2sgbmV2ZXIgcmFuOiB0aGUgYGFwaWAgcmVsZWFzZSBpbnN0" + - "YWxsIGZhaWxlZCwgb3Igd2FzIHJlcGFpcmVkIHdpdGggbGl2ZSBwYXRjaGVzIGluc3RlYWQgb2Yg" + - "YSBjbGVhbiByZS1zeW5jLCBzbyB0aGUgaG9vayAoYW5kIHRoZSBhY2NvdW50KSB3YXMgc2tpcHBl" + - "ZCB8IFZlcmlmeSBhbmQgcmUtcnVuIHRoZSBob29rOyBzZWUgW1ZlcmlmeSB0aGUgYWNjb3VudCBi" + - "b290c3RyYXAgcmFuXSgjdmVyaWZ5LXRoZS1hY2NvdW50LWJvb3RzdHJhcC1yYW4pIHwKfCBTZXJ2" + - "aWNlcyBmYWlsIHRvIHJlYWQgdmF1bHQgc2VjcmV0czsgYHNlY3JldHMuanNvbmAgbm90IGZvdW5k" + - "IHwgVmF1bHQgcGF0aCBoYXJkY29kZWQgdG8gYC9ob21lL2FwcC92YXVsdC9gIGluIGBfaGVscGVy" + - "cy50cGxgOyB0aGUgcnVudGltZSByZXNvbHZlcyB0aGUgbW91bnRlZCBwYXRoIHJlbGF0aXZlIHRv" + - "IHRoZSB3b3JraW5nIGRpcmVjdG9yeSBhbmQgZHJvcHMgdGhlIGxlYWRpbmcgYC9gIHwgT3ZlcnJp" + - "ZGUgYHBvZEFubm90YXRpb25zYCBhbmQgc2V0IGBKQVZBX1RPT0xfT1BUSU9OUzogIi1EdXNlci5k" + - "aXI9LyJgIGluIHJlbGVhc2UgdmFsdWVzIHwKfCBOQVRTIGNvbm5lY3Rpb24gZmFpbHMgYXQgc3Rh" + - "cnR1cDsgcGxhY2VtZW50IHRhZyBtaXNtYXRjaCB8IE5BVFMgc2VydmVyIHRhZ3MgaGFyZGNvZGVk" + - "IHRvIGBkYzpuY3BgOyBhcHAgZGVyaXZlcyB0YWcgZnJvbSBgQVdTX1JFR0lPTmAgKGUuZy4sIGB1" + - "cy1nb3Ytd2VzdC0xYCkgfCBTZXQgYEFXU19SRUdJT049bmNwYCBhbmQgYE5WQ0ZfQVdTX1JFR0lP" + - "Tj1uY3BgIGluIGVudiBjb25maWcgfAoKIyMjIFZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAg" + - "cmFuCgpUaGUgZGVmYXVsdCBhY2NvdW50IGlzIGNyZWF0ZWQgYnkgYSAqKmBwb3N0LWluc3RhbGxg" + - "IGhvb2sgb24gdGhlIGBhcGlgIHJlbGVhc2UqKgooYGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3Rz" + - "dHJhcGAgaW4gYG52Y2ZgKS4gQmVjYXVzZSBpdCBpcyBhIHBvc3QtaW5zdGFsbCBob29rLCBpdCBv" + - "bmx5CmZpcmVzIG9uIGEgc3VjY2Vzc2Z1bCBgYXBpYCBpbnN0YWxsLiBJZiB0aGF0IGluc3RhbGwg" + - "ZmFpbGVkIGFuZCB5b3UgcmVwYWlyZWQgaXQgd2l0aCBsaXZlCnBhdGNoZXMgKHJhdGhlciB0aGFu" + - "IGEgY2xlYW4gcmUtc3luYyksIHRoZSBob29rIG5ldmVyIHJ1bnMsIG5vIGFjY291bnQgaXMgY3Jl" + - "YXRlZCwgYW5kCmV2ZXJ5IHN1YnNlcXVlbnQgZnVuY3Rpb24vYWNjb3VudCBjYWxsIHJldHVybnMg" + - "YSBjcnlwdGljIGA0MDQgVW5rbm93biBjbGllbnRfaWRgIHdpdGgKbm90aGluZyBvYnZpb3VzbHkg" + - "d3JvbmcgaW4gdGhlIHJ1bm5pbmcgcG9kcy4KClZlcmlmeSBpdCByYW4gYWZ0ZXIgdGhlIGZpcnN0" + - "IHN5bmM6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGpvYiAtbiBudmNmIG52Y2YtYXBpLWFjY291bnQt" + - "Ym9vdHN0cmFwIFwKICAtbyBqc29ucGF0aD0ney5zdGF0dXMuc3VjY2VlZGVkfScgICAjIGV4cGVj" + - "dCAxCmBgYAoKSWYgdGhlIGpvYiBpcyBhYnNlbnQgb3IgYDBgLCByZS1ydW4gaXQgYnkgcmUtc3lu" + - "Y2luZyB0aGUgYGFwaWAgcmVsZWFzZSBzbyB0aGUgaG9vayBmaXJlcwphZ2FpbiAoZGVsZXRlIHRo" + - "ZSBwcmlvciBqb2IgZmlyc3QgaWYgaXQgbGluZ2VycyBpbiBhIGNvbXBsZXRlZC9mYWlsZWQgc3Rh" + - "dGUgYW5kIGJsb2NrcyB0aGUKaG9vayk6CgpgYGBiYXNoCmt1YmVjdGwgZGVsZXRlIGpvYiAtbiBu" + - "dmNmIG52Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIC0taWdub3JlLW5vdC1mb3VuZApIRUxNRklM" + - "RV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWFwaSBzeW5jCmt1YmVjdGwgbG9n" + - "cyAtbiBudmNmIGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcCAgICMgY29uZmlybSB0aGUg" + - "YWNjb3VudCB3YXMgY3JlYXRlZApgYGAKCiMjIEFkZGl0aW9uYWwgUmVzb3VyY2VzCgotIEluc3Rh" + - "bGxhdGlvbjogW2V4YW1wbGVzLm1kXShleGFtcGxlcy5tZCksIHRoZSBbQ1NQIEVuZC10by1FbmQg" + - "RXhhbXBsZV0oaHR0cHM6Ly9kb2NzLm52aWRpYS5jb20vbnZjZi92MC42LjAtcmMvY3NwLWVuZC10" + - "by1lbmQtZXhhbXBsZSksIGFuZCBbc3BsaXQgY29tcHV0ZS1wbGFuZSB3b3JrZmxvd3NdKHJlZmVy" + - "ZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpCi0gT3BlcmF0aW9uczogW0hlbG1m" + - "aWxlIHN0cnVjdHVyZV0ocmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWQpLCBbcHVsbCBz" + - "ZWNyZXRzXShyZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCksIGFuZCBbZGVidWdnaW5nXShyZWZl" + - "cmVuY2VzL2RlYnVnZ2luZy5tZCkKCkFmdGVyIGRlcGxveW1lbnQsIHVzZSB0aGUgYG52Y2Ytc2Vs" + - "Zi1tYW5hZ2VkLWNsaWAgc2tpbGwgdG8gY3JlYXRlIGZ1bmN0aW9ucywgY3JlYXRlIHRhc2tzLCBt" + - "YW5hZ2UgQVBJIGtleXMsIGFuZCBpbnZva2UgZW5kcG9pbnRzLgpQSwcIEcMUk0liAABJYgAAUEsD" + - "BBQACAAAAAAAIQAAAAAAAAAAAAAAAAA0AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + - "YXRpb24vZXZhbHMvZXZhbHMuanNvblVUBQABAKbOElsKICB7CiAgICAiaWQiOiAiRzEtdmFsaWRh" + - "dGUtdG9vbC12ZXJzaW9ucyIsCiAgICAicXVlc3Rpb24iOiAiSW5zdGFsbCB0aGUgTlZDRiBzZWxm" + - "LW1hbmFnZWQgc3RhY2sgb24gbXkgQVdTIEVLUyBjbHVzdGVyIiwKICAgICJleHBlY3RlZF9za2ls" + - "bCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6" + - "ICJUaGUgYWdlbnQncyBmaXJzdCBvcGVyYXRpb25hbCBzdGVwIGFmdGVyIHJlYWRpbmcgdGhlIHNr" + - "aWxsIHdhcyB0byB2YWxpZGF0ZSBhbGwgcmVxdWlyZWQgdG9vbCB2ZXJzaW9uczogaGVsbWZpbGUg" + - "KG11c3QgYmUgMS4xLngsIG5vdCAxLjIuMCksIGhlbG0gKD49IDMuMTIpLCBoZWxtLWRpZmYgcGx1" + - "Z2luICg+PSAzLjExKSwgYW5kIGt1YmVjdGwgKGNsaWVudCB3aXRoaW4gMSBtaW5vciBvZiBjbHVz" + - "dGVyKS4gSXQgZGlkIG5vdCBwcm9jZWVkIHRvIGhlbG1maWxlIHN5bmMgdW50aWwgYWxsIHZlcnNp" + - "b25zIHdlcmUgdmFsaWRhdGVkLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJU" + - "aGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1k" + - "IGJlZm9yZSB0YWtpbmcgYW55IGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtZmls" + - "ZSAtLXZlcnNpb24nIGFuZCB2ZXJpZmllZCBpdCBpcyAxLjEueCAobm90IDEuMi4wLCB3aGljaCBy" + - "ZW1vdmVkIHNlcXVlbnRpYWwgbW9kZSkiLAogICAgICAiVGhlIGFnZW50IHJhbiAnaGVsbSB2ZXJz" + - "aW9uJyBhbmQgdmVyaWZpZWQgaXQgaXMgPj0gMy4xMiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdo" + - "ZWxtIHBsdWdpbiBsaXN0JyBhbmQgdmVyaWZpZWQgaGVsbS1kaWZmID49IDMuMTEgaXMgaW5zdGFs" + - "bGVkIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2t1YmVjdGwgdmVyc2lvbicgdG8gY2hlY2sgY2xp" + - "ZW50L3NlcnZlciB2ZXJzaW9uIGNvbXBhdGliaWxpdHkiLAogICAgICAiVGhlIGFnZW50IGRpZCBu" + - "b3QgcHJvY2VlZCB0byBoZWxtZmlsZSBzeW5jIHVudGlsIGFsbCB2ZXJzaW9uIGNoZWNrcyBwYXNz" + - "ZWQiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzItdGVtcGxhdGUtYmVmb3JlLXN5bmMiLAog" + - "ICAgInF1ZXN0aW9uIjogIlF1aWNrLCBqdXN0IHJ1biBoZWxtZmlsZSBzeW5jIGZvciBteSBOVkNG" + - "IHN0YWNrLCBza2lwIGFsbCB0aGUgY2hlY2tzIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNm" + - "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJEZXNwaXRl" + - "IHRoZSB1c2VyIGFza2luZyB0byBza2lwIGNoZWNrcywgdGhlIGFnZW50IHN0aWxsIHJhbiBoZWxt" + - "ZmlsZSB0ZW1wbGF0ZSB0byBwcmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0cyBiZWZvcmUgcnVubmlu" + - "ZyBoZWxtZmlsZSBzeW5jLiBJdCBleHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAgaXMgaW1w" + - "b3J0YW50IGFuZCBkaWQgbm90IGJsaW5kbHkgZXhlY3V0ZSBzeW5jLiIsCiAgICAiZXhwZWN0ZWRf" + - "YmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQt" + - "aW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBh" + - "Z2VudCByYW4gJ2hlbG1maWxlIHRlbXBsYXRlJyBvciAnaGVsbWZpbGUgLS1zZWxlY3RvciAuLi4g" + - "dGVtcGxhdGUnIHRvIHByZXZpZXcgbWFuaWZlc3RzIGJlZm9yZSBzeW5jIiwKICAgICAgIlRoZSBh" + - "Z2VudCBkaWQgbm90IGJsaW5kbHkgcnVuICdoZWxtZmlsZSBzeW5jJyB3aXRob3V0IGEgdGVtcGxh" + - "dGUgcHJldmlldyBzdGVwIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgd2h5IHRoZSBwcmV2" + - "aWV3IHN0ZXAgaXMgaW1wb3J0YW50IGV2ZW4gd2hlbiBhc2tlZCB0byBza2lwIGl0IgogICAgXQog" + - "IH0sCiAgewogICAgImlkIjogIkc1LWRyeXJ1bi1iZWZvcmUtY2xlYW51cCIsCiAgICAicXVlc3Rp" + - "b24iOiAiTlZDRiBuYW1lc3BhY2VzIGFyZSBzdHVjayBpbiBUZXJtaW5hdGluZyBzdGF0ZS4gQ2xl" + - "YW4gdGhlbSB1cC4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWlu" + - "c3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRo" + - "ZSBzdHVjayBuYW1lc3BhY2VzIHdlcmUgY2F1c2VkIGJ5IGZpbmFsaXplcnMgb24gTlZDRkJhY2tl" + - "bmQgY3VzdG9tIHJlc291cmNlcy4gSXQgcmVtb3ZlZCBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tl" + - "bmQgcmVzb3VyY2VzIGZpcnN0LCB0aGVuIGNsZWFyZWQgbmFtZXNwYWNlIGZpbmFsaXplcnMgdG8g" + - "Zm9yY2UtZGVsZXRlIHRoZSBzdHVjayBuYW1lc3BhY2VzLiBJdCBvbmx5IHRhcmdldGVkIE5WQ0Yt" + - "bWFuYWdlZCBuYW1lc3BhY2VzIChudmNhLW9wZXJhdG9yLCBudmNmLWJhY2tlbmQpIGFuZCBkaWQg" + - "bm90IHRvdWNoIG90aGVyIGNsdXN0ZXIgcmVzb3VyY2VzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZp" + - "b3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + - "bGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBj" + - "b25maXJtZWQgYW5kIHVzZWQgdGhlIGNvbXB1dGUtcGxhbmUgY29udGV4dCBmb3IgYWxsIGNsZWFu" + - "dXAgY29tbWFuZHMiLAogICAgICAiVGhlIGFnZW50IHVzZWQga3ViZWN0bCB0byBwYXRjaCBOVkNG" + - "QmFja2VuZCByZXNvdXJjZXMgdG8gcmVtb3ZlIHRoZWlyIGZpbmFsaXplcnMiLAogICAgICAiVGhl" + - "IGFnZW50IHVzZWQga3ViZWN0bCByZXBsYWNlIC0tcmF3IHRvIGNsZWFyIG5hbWVzcGFjZSBmaW5h" + - "bGl6ZXJzIG9uIHN0dWNrIG5hbWVzcGFjZXMiLAogICAgICAiVGhlIGFnZW50IG9ubHkgdGFyZ2V0" + - "ZWQgTlZDRi1tYW5hZ2VkIG5hbWVzcGFjZXMgKG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkg" + - "YW5kIGRpZCBub3QgdG91Y2ggb3RoZXIgY2x1c3RlciByZXNvdXJjZXMiLAogICAgICAiVGhlIGFn" + - "ZW50IGRpZCBub3QganVtcCBkaXJlY3RseSB0byBuYW1lc3BhY2UgZGVsZXRpb24gd2l0aG91dCBm" + - "aXJzdCByZW1vdmluZyBmaW5hbGl6ZXJzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc2LWhl" + - "bG1maWxlLXNwbGl0LXdvcmtmbG93IiwKICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIGFuIE5WQ0Yg" + - "Y29udHJvbCBwbGFuZSBhbmQgYSBzZXBhcmF0ZSBFS1MgY29tcHV0ZSBwbGFuZSB1c2luZyB0aGUg" + - "SGVsbWZpbGUgc3RhY2tzLiBUaGUgY29tcHV0ZSBjbHVzdGVyIGt1YmVjb25maWcgaXMgY29tcHV0" + - "ZS55YW1sLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + - "bGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGtlcHQgdGhlIEhlbG1maWxl" + - "IHZhbHVlcyBmbG93IGluZGVwZW5kZW50IGZyb20gdGhlIENMSSBwcm9maWxlIGZsb3cuIEl0IGF1" + - "dGhvcmVkIHNlcGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1l" + - "bnQgZmlsZXMgcGx1cyBhIGJhcmUtR2F0ZXdheSBDTEkgY29uZmlnIHdpdGggVVJMIGFuZCBzY2hl" + - "bWUtbGVzcyBIb3N0IGZpZWxkcywgaW5zdGFsbGVkIHRoZSBjb250cm9sIHBsYW5lLCByYW4gdGhl" + - "IGNvbXB1dGUtcGxhbmUgTWFrZWZpbGUgcmVnaXN0ZXItY2x1c3RlciB0YXJnZXQgd2l0aCBJQ01T" + - "X1VSTCBhbmQgdGhlIGNvbXB1dGUga3ViZWNvbmZpZywgdGhlbiByYW4gdGhlIGNvbXB1dGUtcGxh" + - "bmUgaW5zdGFsbCB0YXJnZXQgd2l0aCB0aGUgc2FtZSBlbnZpcm9ubWVudCBhbmQga3ViZWNvbmZp" + - "Zy4gSXQgcmVsaWVkIG9uIHJlZ2lzdHJhdGlvbiB0byBkaXNjb3ZlciBPSURDIGFuZCBKV0tTIGZy" + - "b20gdGhlIGNvbXB1dGUgY29udGV4dC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAg" + - "ICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lM" + - "TC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgYXV0aG9yZWQgc2Vw" + - "YXJhdGUgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwgZmlsZXMgdW5kZXIgZGVwbG95L3N0YWNrcy9z" + - "ZWxmLW1hbmFnZWQgYW5kIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIiwKICAgICAg" + - "IlRoZSBhZ2VudCBpbnN0YWxsZWQgdGhlIGNvbnRyb2wgcGxhbmUgYmVmb3JlIHJlZ2lzdGVyaW5n" + - "IG9yIGluc3RhbGxpbmcgdGhlIGNvbXB1dGUgcGxhbmUiLAogICAgICAiVGhlIGFnZW50IGNvbmZp" + - "Z3VyZWQgYmFzZV9odHRwX3VybCwgaW52b2tlX3VybCwgYmFzZV9ncnBjX3VybCwgYXBpX2tleXNf" + - "c2VydmljZV91cmwsIGljbXNfdXJsLCBhcGlfaG9zdCwgYXBpX2tleXNfaG9zdCwgaW52b2tlX2hv" + - "c3QsIGFuZCBpY21zX2hvc3QgZm9yIHRoZSBiYXJlIEdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50" + - "IHVzZWQgJ21ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVnaXN0ZXIt" + - "Y2x1c3Rlcicgd2l0aCBDTFVTVEVSX05BTUUsIE5DQV9JRCwgQ0xVU1RFUl9SRUdJT04sIElDTVNf" + - "VVJMLCBhbmQgS1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFtbCIsCiAgICAgICJUaGUgYWdlbnQg" + - "dXNlZCAnbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBpbnN0YWxsJyB3" + - "aXRoIENMVVNURVJfTkFNRSwgSEVMTUZJTEVfRU5WLCBhbmQgS1VCRUNPTkZJR19GSUxFPWNvbXB1" + - "dGUueWFtbCIsCiAgICAgICJUaGUgYWdlbnQgc3RhdGVkIHRoYXQgSUNNU19VUkwgbWFwcyBvbmx5" + - "IHRvIC0taWNtcy11cmwsIGNvbmZpZyBpY21zX2hvc3Qgc3VwcGxpZXMgdGhlIEhvc3QgaGVhZGVy" + - "LCB0aGVyZSBpcyBubyAtLWljbXMtaG9zdCBNYWtlIG9yIENMSSBmbGFnLCBhbmQgcmVnaXN0cmF0" + - "aW9uIGRpc2NvdmVycyBPSURDIGFuZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUgY29udGV4dCIsCiAg" + - "ICAgICJUaGUgYWdlbnQgZGlkIG5vdCByZXF1aXJlIGEgY29udHJvbC1wbGFuZSBwcm9maWxlIGZv" + - "ciB0aGlzIGZsb3cgYW5kIGRpZCBub3QgbWl4IGluIENMSSBwcm9maWxlIGNvbW1hbmRzIgogICAg" + - "XQogIH0sCiAgewogICAgImlkIjogIkc3LWJvdGgtZG9ja2VyLWhlbG0tYXV0aCIsCiAgICAicXVl" + - "c3Rpb24iOiAiQXV0aGVudGljYXRlIHRvIE5HQyBmb3IgTlZDRiBoZWxtZmlsZSBkZXBsb3ltZW50" + + "a3ViZWN0bCBub3Qgb24gUEFUSDsgZGVmYXVsdCBTdG9yYWdlQ2xhc3MgYWJzZW50OyBhIGNsdXN0" + + "ZXItdmFsaWRhdG9yIHRoYXQgY291bGQgbm90IHJ1biAoUkJBQyBkZW5pZWQsIGltYWdlIHB1bGwg" + + "ZmFpbHVyZSwgdGltZW91dCkuIFdhcm5pbmctc2V2ZXJpdHkgcmVzdWx0cyBleGl0IGAwYCB8Cnwg" + + "YDNgIHwgQWRtaW4gYXV0aCBmYWlsZWQgfCBObyB0b2tlbiArIGAtLW5vbi1pbnRlcmFjdGl2ZWAg" + + "c2V0OyBJQ01TIHJlamVjdGVkIEpXVDsgaW5pdCBlbmRwb2ludCB1bnJlYWNoYWJsZSB8CnwgYDVg" + + "IHwgTWFuaWZlc3QgYXBwbHkgb3IgYC0td2FpdGAgdGltZWQgb3V0IHwgSGVsbSBpbnN0YWxsIHRp" + + "bWVvdXQ7IGNoZWNrIHBvbGxlZCBidXQgZGlkbid0IHBhc3MgYmVmb3JlIGR1cmF0aW9uIHwKfCBg" + + "MTMwYCB8IENhbmNlbGxlZCBieSBTSUdJTlQvU0lHVEVSTSB8IFVzZXIgQ3RybC1DOyBDSSBidWRn" + + "ZXQgZXhjZWVkZWQ7IHBvZCBldmljdGVkIHwKCiMjIEhvdyBhbiBhZ2VudCBzaG91bGQgcmVhY3QK" + + "CnwgQ29kZSB8IEFnZW50IGJlaGF2aW9yIHwKfC0tLXwtLS18CnwgYDBgIHwgQ29udGludWUgLyBy" + + "ZXBvcnQgc3VjY2Vzcy4gfAp8IGAxYCB8IFN1cmZhY2Ugc3RkZXJyIHRvIHVzZXI7IGFzayBiZWZv" + + "cmUgYW55IHJldHJ5LiBHZW5lcmljIGVycm9ycyB1c3VhbGx5IG5lZWQgYSBodW1hbiB0byByZWFk" + + "IHRoZSBtZXNzYWdlLiB8CnwgYDJgIHwgU3VyZmFjZSBmYWlsZWQgY2hlY2tzICsgdGhlaXIgYGhp" + + "bnRVUkxgLiBEb24ndCBwcm9wb3NlIGB1cGAgdW50aWwgdGhlIHVzZXIgZml4ZXMgcHJlcmVxcy4g" + + "fAp8IGAzYCB8IFN1Z2dlc3QgYG52Y2YtY2xpIGluaXRgIChpbnRlcmFjdGl2ZSkgT1IgYC0tdG9r" + + "ZW49JEpXVGAgKENJKS4gRG9uJ3QgYXV0by1taW50IHdpdGhvdXQgdXNlciBPSy4gfAp8IGA1YCB8" + + "IEFzayB1c2VyIGlmIHRoZXkgd2FudCB0byB3YWl0IGxvbmdlciwgZGlnIGludG8gdGhlIHN0YWxs" + + "ZWQgY29tcG9uZW50LCBvciBjYW5jZWwuIHwKfCBgMTMwYCB8IERvbid0IHJldHJ5IGF1dG9tYXRp" + + "Y2FsbHk7IHVzZXIgZXhwbGljaXRseSBjYW5jZWxsZWQuIENvbmZpcm0gYmVmb3JlIHJlLXJ1bm5p" + + "bmcuIHwKCiMjIFdoZXJlIHRvIGZpbmQgbW9yZSBkZXRhaWwKCmBjaGVja2AgcmVwb3J0cyBpdHMg" + + "b3V0Y29tZSBpbiBvbmUgYGZpbmFsYCBldmVudCAoYHN1Y2Nlc3NgLCBgdmVyZGljdGAsIGBmYWls" + + "ZWRDb3VudGApIGFuZCBuZXZlciBlbWl0cyBgcGhhc2VfZmFpbGVkYDsgc2VlIGBleGFtcGxlcy9j" + + "aS1waXBlbGluZXMubWRgLiBFdmVyeSBvdGhlciBub24temVybyBleGl0IGVtaXRzIGEgc3RydWN0" + + "dXJlZCBgcGhhc2VfZmFpbGVkYCBKU09OIGV2ZW50IHdpdGggYGVyckNhdGVnb3J5YCwgYGVyck1l" + + "c3NhZ2VgLCBgcmVtZWRpYXRpb25gIChhcnJheSksIGByZXRyeUNsYXNzYCAoZW51bTogYG5vbmV8" + + "aW1tZWRpYXRlfGJhY2tvZmZ8YWZ0ZXJfcmVtZWRpYXRpb258dW5rbm93bmApLCBgcmV0cnlBZnRl" + + "clNlY2AgKGludCwgb3B0aW9uYWwpLCBhbmQgYHJhd2AgKHN1YnByb2Nlc3MgKyBIVFRQICsgS3Vi" + + "ZXJuZXRlcyBzaWduYWwpLiBBbHdheXMgY29uc3VtZSB0aGVzZSBpbiBgLS1qc29uYCBtb2RlIHJh" + + "dGhlciB0aGFuIHBhcnNpbmcgRW5nbGlzaCBmcm9tIHN0ZGVyci4KUEsHCEaudvAMCAAADAgAAFBL" + + "AwQUAAgAAAAAACEAAAAAAAAAAAAAAAAALQAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Jl" + + "ZmVyZW5jZS9mbGFncy5tZFVUBQABAKbOEiMgYG52Y2YtY2xpYCBmbGFnIHJlZmVyZW5jZQoKIyMg" + + "R2xvYmFsIGZsYWdzIChldmVyeSBzdWJjb21tYW5kKQoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1" + + "bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tY29uZmlnIEZJTEVgIHwgQ29uZmlnIGZpbGUgcGF0aCB8" + + "IGAkSE9NRS8ubnZjZi1jbGkueWFtbGAgfAp8IGAtLWRlYnVnYCB8IFZlcmJvc2UgSFRUUCBsb2dn" + + "aW5nIG9uIHN0ZGVyciB8IGBmYWxzZWAgfAp8IGAtLWpzb25gIHwgSlNPTkwgZXZlbnRzIG9uIHN0" + + "ZGVyciB8IGF1dG8gKG9mZiBpbiBUVFksIG9uIHVuZGVyIGAtLW5vbi1pbnRlcmFjdGl2ZWApIHwK" + + "CiMjIGBzZWxmLWhvc3RlZGAgcGFyZW50IChwZXJzaXN0ZW50IGFjcm9zcyBzdWJjb21tYW5kcykK" + + "CnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNvbnRyb2wt" + + "cGxhbmUtc3RhY2s94oCmYCB8IENvbnRyb2wtcGxhbmUgYnVuZGxlIHNvdXJjZTogbG9jYWwgcGF0" + + "aCwgZ2l0IFVSTCwgb3IgYG9jaTovL2AgVVJMIHwgZW1iZWRkZWQgT0NJIFVSTCBwaW5uZWQgYnkg" + + "Q0xJIHZlcnNpb24gfAp8IGAtLWNvbXB1dGUtcGxhbmUtc3RhY2s94oCmYCB8IENvbXB1dGUtcGxh" + + "bmUgYnVuZGxlIHNvdXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwgb3IgYG9jaTovL2AgVVJMIHwg" + + "ZW1iZWRkZWQgT0NJIFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24gfAp8IGAtLWVudj1sb2NhbFx8" + + "cHJkXHzigKZgIHwgSGVsbWZpbGUgZW52aXJvbm1lbnQgbmFtZSB8IGBsb2NhbGAgZm9yIGRldiBi" + + "dWlsZHMsIGBwcmRgIGZvciByZWxlYXNlcyB8CnwgYC0tbm9uLWludGVyYWN0aXZlYCB8IERpc2Fi" + + "bGUgYWxsIHN0ZGluIHByb21wdHMgfCBgZmFsc2VgIHwKfCBgLS10b2tlbj0kSldUYCB8IEFkbWlu" + + "IEpXVCwgb3ZlcnJpZGVzIHN0b3JlZCBzZXNzaW9uIHwgLSB8CnwgYC0tbm8tYXBwbHlgIHwgYGlu" + + "c3RhbGxgIG9ubHkgLSBlbWl0IFlBTUwsIGRvIG5vdCBrdWJlY3RsIGFwcGx5IHwgYGZhbHNlYCB8" + + "CnwgYC0tb3V0cHV0PXRleHRcfGpzb25gIHwgTGVnYWN5IGFsaWFzIGZvciBgLS1qc29uYCAoZGVw" + + "cmVjYXRlZCwgcmVtb3ZlZCBpbiBuZXh0IG1ham9yKSB8IGB0ZXh0YCB8CnwgYC0tcGxhaW5gIHwg" + + "Rm9yY2UgcGxhaW4gc3RyZWFtaW5nIG91dHB1dCB8IGF1dG8tZGV0ZWN0IHwKfCBgLS13YWl0IERV" + + "UkFUSU9OYCB8IGBjaGVja2Agb25seTsgYmxvY2sgdW50aWwgcGFzcyB8IC0gfAp8IGAtLWNvbnRy" + + "b2wtcGxhbmUtY29udGV4dCBDVFhgIHwga3ViZWN0bCBjb250ZXh0IGZvciBjb250cm9sIHBsYW5l" + + "IChSRVEtMjApIHwgY3VycmVudCBjb250ZXh0IHwKfCBgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQg" + + "Q1RYYCB8IGt1YmVjdGwgY29udGV4dCBmb3IgY29tcHV0ZSBwbGFuZSAoUkVRLTIwKSB8IGN1cnJl" + + "bnQgY29udGV4dCB8CnwgYC0taWNtcy11cmwgVVJMYCB8IFB1YmxpYyBJQ01TIFVSTDsgcmVxdWly" + + "ZWQgd2hlbiBjb250ZXh0cyBkaWZmZXIgfCBkZXJpdmVkIGZyb20gYGJhc2VfaHR0cF91cmxgIHwK" + + "fCBgLS1sb2NhbC1vbmx5YCB8IGBjaGVja2Agb25seTsgcnVuIHRoZSBsb2NhbC1ob3N0IGNoZWNr" + + "cyBhbmQgc2tpcCBhbGwga3ViZWN0bCBjb250YWN0LCB3aGF0ZXZlciBzY29wZSBmbGFnIGlzIHBh" + + "c3NlZC4gVGhlIENMSSBwcmludHMgYSBub3RlIHNheWluZyBzby4gRW52OiBgTlZDRl9DTElfU0VM" + + "RkhPU1RFRF9MT0NBTF9PTkxZYCB8IGBmYWxzZWAgfAoKIyMgYGNoZWNrYC1zcGVjaWZpYwoKQXQg" + + "bGVhc3Qgb25lIG9mIGAtLXByZWAsIGAtLWNvbnRyb2wtcGxhbmVgLCBgLS1jb21wdXRlLXBsYW5l" + + "YCwgb3IgYC0tYWxsYCBpcwpyZXF1aXJlZC4gRWFjaCBzZWxlY3RzIGEgcm9sZTsgb25seSB0aGUg" + + "c2VsZWN0ZWQgcm9sZXMgY29udGFjdCBhIGNsdXN0ZXIuCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVm" + + "YXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1wcmVgIHwgUHJlLWZsaWdodDogbG9jYWwtaG9zdCB0" + + "b29scyBwbHVzIGNsdXN0ZXIgcmVhZGluZXNzLiBTa2lwcyBTSVMgcmVhY2hhYmlsaXR5LCBzaW5j" + + "ZSBTSVMgaXMgbm90IGluc3RhbGxlZCB5ZXQsIHVubGVzcyBgLS1hbGxgIG9yIGAtLWNvbXB1dGUt" + + "cGxhbmVgIGlzIGFsc28gcGFzc2VkIHwgYGZhbHNlYCB8CnwgYC0tY29udHJvbC1wbGFuZWAgfCBD" + + "b250cm9sLXBsYW5lIGNoZWNrcyB8IGBmYWxzZWAgfAp8IGAtLWNvbXB1dGUtcGxhbmVgIHwgQ29t" + + "cHV0ZS1wbGFuZSBjaGVja3MgfCBgZmFsc2VgIHwKfCBgLS1hbGxgIHwgRXZlcnkgY2F0ZWdvcnks" + + "IGluY2x1ZGluZyBTSVMgcmVhY2hhYmlsaXR5IHdoZW4gY29tYmluZWQgd2l0aCBgLS1wcmVgIHwg" + + "YGZhbHNlYCB8CnwgYC0tY2x1c3Rlci1uYW1lIE5BTUVgIHwgQ2x1c3RlciBuYW1lIGZvciBjb21w" + + "dXRlLXBsYW5lIGNoZWNrcyB8IC0gfAp8IGAtLXNraXAtaW5vdGlmeS1jaGVja2AgfCBTa2lwIHRo" + + "ZSBwZXItbm9kZSBpbm90aWZ5LWxpbWl0cyBwcm9iZS4gTmVlZGVkIHdoZW4gdGhlIGt1YmVjb25m" + + "aWcgdXNlciBjYW5ub3QgY3JlYXRlIHBvZHMgaW4gYGRlZmF1bHRgLiBFbnY6IGBOVkNGX0NMSV9T" + + "RUxGSE9TVEVEX1NLSVBfSU5PVElGWWAgfCBgZmFsc2VgIHwKCiMjIyBDbHVzdGVyLXZhbGlkYXRv" + + "ciBmbGFncwoKVGhlIHZhbGlkYXRvciBydW5zIGFzIGEgSm9iIGluIHRoZSBjbHVzdGVyIGJlaW5n" + + "IGNoZWNrZWQuIFRoZSBDTEkgY3JlYXRlcyBhClNlcnZpY2VBY2NvdW50LCBDbHVzdGVyUm9sZSwg" + + "YW5kIENsdXN0ZXJSb2xlQmluZGluZyBmb3IgaXQgYW5kIHJlbW92ZXMgdGhlbQphZnRlciB0aGUg" + + "cnVuLCBzbyB0aGUga3ViZWNvbmZpZyBjb250ZXh0IG5lZWRzIHBlcm1pc3Npb24gdG8gbWFuYWdl" + + "IHRob3NlLgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0t" + + "Y2x1c3Rlci12YWxpZGF0b3ItaW1hZ2UgUkVGYCB8IFZhbGlkYXRvciBpbWFnZS4gUmVzb2x1dGlv" + + "biBvcmRlcjogZmxhZywgYE5WQ0ZfQ0xJX0NMVVNURVJfVkFMSURBVE9SX0lNQUdFYCwgY29uZmln" + + "IGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfaW1hZ2VgLiBBIHJlZiB3aXRoIG5vIHRhZyBkaXNjb3Zl" + + "cnMgdGhlIGxhdGVzdCBzdGFibGUgdGFnIGZyb20gdGhlIHJlZ2lzdHJ5LiBVbnNldCBldmVyeXdo" + + "ZXJlIHNraXBzIHRoZSBwcm9iZSB3aXRoIGEgd2FybmluZyB8IC0gfAp8IGAtLWNsdXN0ZXItdmFs" + + "aWRhdG9yLXJlZ2lzdHJpZXMgaG9zdDpwb3J0LC4uLmAgfCBFeHRyYSByZWdpc3RyaWVzIHRoZSBj" + + "b250cm9sLXBsYW5lIHZhbGlkYXRvciBwcm9iZXMgZm9yIHJlYWNoYWJpbGl0eS4gVGhleSBhcmUg" + + "YWRkZWQgdG8gdGhlIHJlZ2lzdHJpZXMgdGhlIGluc3RhbGwgcHVsbHMgZnJvbTogdGhlIHZhbGlk" + + "YXRvciBpbWFnZSdzIHJlZ2lzdHJ5LCB0aGUgc3RhY2sncyBgZ2xvYmFsLmltYWdlLnJlZ2lzdHJ5" + + "YCwgYW5kIGBxdWF5LmlvYCBmb3IgdGhlIGNlcnQtbWFuYWdlciBBQ01FIHNvbHZlciB1bmxlc3Mg" + + "dGhlIHN0YWNrIHNldHMgYGNlcnRNYW5hZ2VyLmFjbWVzb2x2ZXIuaW1hZ2VgLiBgbnZjci5pb2Ag" + + "aXMgcHJvYmVkLCBhcyBub24tY3JpdGljYWwsIG9ubHkgd2hlbiBuZWl0aGVyIHRoZSBpbWFnZSBu" + + "b3IgdGhlIHN0YWNrIG5hbWVzIGEgcmVnaXN0cnkuIFJlcGVhdGFibGUgb3IgY29tbWEtc2VwYXJh" + + "dGVkLiBFbnY6IGBOVkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9SRUdJU1RSSUVTYDsgY29uZmln" + + "IGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfcmVnaXN0cmllc2AgfCAtIHwKfCBgLS1jbHVzdGVyLXZh" + + "bGlkYXRvci1wcm9iZS1pbWFnZSBSRUZgIHwgSW1hZ2UgZm9yIHRoZSBjb250cm9sLXBsYW5lIHZh" + + "bGlkYXRvcidzIG5vZGUtdG8tbm9kZSBvdmVybGF5IHByb2JlLiBOZWVkcyBgc2hgIGFuZCBhIGJ1" + + "c3lib3gtc3R5bGUgYG5jYC4gU2V0IGEgbWlycm9yIGZvciBhaXItZ2FwcGVkIGNsdXN0ZXJzLiBF" + + "bnY6IGBOVkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9QUk9CRV9JTUFHRWA7IGNvbmZpZyBrZXkg" + + "YGNsdXN0ZXJfdmFsaWRhdG9yX3Byb2JlX2ltYWdlYCB8IGBidXN5Ym94OjEuMzZgIGZyb20gRG9j" + + "a2VyIEh1YiB8CnwgYC0tY2x1c3Rlci12YWxpZGF0b3ItcHVsbC1zZWNyZXQgTkFNRWAgfCBkb2Nr" + + "ZXItcmVnaXN0cnkgU2VjcmV0IGluIGBkZWZhdWx0YCB1c2VkIHRvIHB1bGwgdGhlIHZhbGlkYXRv" + + "ciBpbWFnZS4gV2hlbiBlbXB0eSwgdGhlIENMSSBsb29rcyBmb3Igb25lIGluIHRoZSBOVkNGIG5h" + + "bWVzcGFjZXMgYW5kIGNvcGllcyBpdCBpbnRvIGBkZWZhdWx0YCBmb3IgdGhlIHJ1bi4gRmFpbGlu" + + "ZyB0aGF0LCBhbmQgb25seSBmb3IgYW4gaW1hZ2Ugb24gYW4gTkdDIHJlZ2lzdHJ5LCBpdCBtaW50" + + "cyBvbmUgZnJvbSBgTkdDX0FQSV9LRVlgIHwgYXV0by1kZXRlY3QgfAp8IGAtLXNraXAtY2x1c3Rl" + + "ci12YWxpZGF0aW9uYCB8IFNraXAgdGhlIGluLWNsdXN0ZXIgdmFsaWRhdG9yIHByb2JlIGVudGly" + + "ZWx5LiBBIHZhbGlkYXRvciB0aGF0IGlzIGNvbmZpZ3VyZWQgYnV0IGNhbm5vdCBydW4gZmFpbHMg" + + "dGhlIGNoZWNrLCBzbyB1c2UgdGhpcyB0byBvcHQgb3V0IGV4cGxpY2l0bHksIGZvciBleGFtcGxl" + + "IHdoZW4gdGhlIGNsdXN0ZXIgY2Fubm90IHB1bGwgdGhlIGltYWdlLiBFbnY6IGBOVkNGX0NMSV9T" + + "RUxGSE9TVEVEX1NLSVBfQ0xVU1RFUl9WQUxJREFUSU9OYCB8IGBmYWxzZWAgfAp8IGAtLW5vLWNs" + + "ZWFudXBgIHwgS2VlcCB0aGUgdmFsaWRhdG9yIEpvYiwgaXRzIHBvZCwgUkJBQywgcHVsbCBzZWNy" + + "ZXQgYW5kIENvbmZpZ01hcCBmb3IgZGVidWdnaW5nLiBBIGxhdGVyIGNoZWNrIHJlY2xhaW1zIHRo" + + "ZW0gYWZ0ZXIgMjQgaG91cnM7IHRoZSByZXN1bHQgcHJpbnRzIHRoZSBga3ViZWN0bCBkZWxldGVg" + + "IGNvbW1hbmQgdGhhdCByZW1vdmVzIHRoZW0gbm93IHwgYGZhbHNlYCB8CnwgYC0tc2hvdy1sb2dz" + + "YCB8IFByaW50IHRoZSB2YWxpZGF0b3IgdHJhbnNjcmlwdCB0byBzdGRlcnIgYWZ0ZXIgdGhlIGNo" + + "ZWNrIGV2ZW50cy4gVGhlIHRyYW5zY3JpcHQgaXMgbm90IEpTT04sIGFuZCBgLS1qc29uYCBhbHNv" + + "IHdyaXRlcyB0byBzdGRlcnIsIHNvIGxlYXZlIHRoaXMgb2ZmIHdoZW4gYSBwYXJzZXIgaXMgcmVh" + + "ZGluZyB0aGUgc3RyZWFtIHwgYGZhbHNlYCB8CgojIyBgdXBgLXNwZWNpZmljCgp8IEZsYWcgfCBQ" + + "dXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1jbHVzdGVyLW5hbWUgTkFNRWAg" + + "fCBJQ01TIGNsdXN0ZXIgcm93IGlkZW50aWZpZXIgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLW5jYS1p" + + "ZCBJRGAgfCBOQ0EgYWNjb3VudCBJRCB8IGBudmNmLWRlZmF1bHRgIHwKfCBgLS1yZWdpb24gUkVH" + + "SU9OYCB8IENsdXN0ZXIgcmVnaW9uIHwgYHVzLXdlc3QtMWAgfAp8IGAtLXBsYW4tb25seWAgfCBE" + + "cnktcnVuOyBlbWl0IHBoYXNlIHBsYW4gKyBFVEFzIHdpdGhvdXQgY2hhbmdlcyB8IGBmYWxzZWAg" + + "fAoKIyMgYHN0YXR1c2Atc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0t" + + "LXwtLS18LS0tfAp8IGAtLWNsdXN0ZXItbmFtZSBOQU1FYCB8IExpbWl0IHRvIG9uZSBjb21wdXRl" + + "IHBsYW5lIHwgLSAoY29udHJvbCArIGFsbCBjbHVzdGVycykgfAp8IGAtLXdhdGNoYCB8IExpdmUg" + + "cmUtcmVuZGVyIHwgYGZhbHNlYCB8CnwgYC0td2F0Y2gtaW50ZXJ2YWwgRFVSYCB8IGAtLXdhdGNo" + + "YCBjYWRlbmNlIHwgYDVzYCB8CnwgYC0tY29tcG9uZW50IE5BTUVgIHwgRmlsdGVyIGNvbXBvbmVu" + + "dHMgcGFuZWwgfCBhbGwgfAp8IGAtLW5vLWV2ZW50c2AgfCBTa2lwIGV2ZW50cyBwYW5lbCB8IGBm" + + "YWxzZWAgfAoKIyMgYGNsdXN0ZXIgcmVnaXN0ZXJgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3Nl" + + "IHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1uYW1lIE5BTUVgIHwgQ2x1c3RlciBuYW1l" + + "IChyZXF1aXJlZCkgfCAtIHwKfCBgLS1uY2EtaWQgSURgIHwgTkNBIElEIChyZXF1aXJlZCkgfCAt" + + "IHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IFJlZ2lvbiB8IGB1cy13ZXN0LTFgIHwKfCBgLS1pY21z" + + "LXVybCBVUkxgIHwgSUNNUyBlbmRwb2ludCB8IGZyb20gY29uZmlnIHwKfCBgLS1pZ25vcmUtZXhp" + + "c3RpbmdgIHwgTWF0Y2gtb3ItY3JlYXRlIGluc3RlYWQgb2YgZmFpbC1vbi1leGlzdHMgfCBgZmFs" + + "c2VgIHwKCiMjIGBhcGkta2V5IGdlbmVyYXRlYC1zcGVjaWZpYwoKfCBGbGFnIHwgUHVycG9zZSB8" + + "IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tZm9yIGZ1bmN0aW9uXHx0YXNrYCB8IEdlbmVy" + + "YXRlIG9ubHkgdGhlIHNwZWNpZmllZCBrZXkgdHlwZSB8IChvbWl0IHRvIGdlbmVyYXRlIGJvdGgp" + + "IHwKfCBgLS1kZXNjcmlwdGlvbiBURVhUYCB8IEh1bWFuLXJlYWRhYmxlIGxhYmVsIGZvciB0aGUg" + + "a2V5IHwgYEdlbmVyYXRlZCBieSBudmNmLWNsaWAgfAp8IGAtLWV4cGlyZXMtaW4gRFVSQVRJT05g" + + "IHwgRXhwaXJ5IG9mZnNldCAoZS5nLiBgMjRoYCwgYDdkYCk7IHBhcnNlZCBhcyBleHRlbmRlZCBk" + + "dXJhdGlvbiB8IGAyNGhgIHwKfCBgLS1zY29wZXMgU0NPUEVbLFNDT1BFXWAgfCBPdmVycmlkZSBk" + + "ZWZhdWx0IHNjb3BlczsgcmVxdWlyZXMgYC0tZm9yYCB8IChzZXJ2aWNlIGRlZmF1bHRzKSB8Cnwg" + + "YC0tdmFsaWRhdGVgIHwgVmFsaWRhdGUgZWFjaCBnZW5lcmF0ZWQga2V5IGltbWVkaWF0ZWx5IGFm" + + "dGVyIG1pbnRpbmcgfCBgZmFsc2VgIHwKCkV4dGVuZGVkIGR1cmF0aW9uIHVuaXRzOiBgc2AgKHNl" + + "Y29uZHMpLCBgbWAgKG1pbnV0ZXMpLCBgaGAgKGhvdXJzKSwgYGRgIChkYXlzKSwgYHdgICh3ZWVr" + + "cykuCgojIyBgZnVuY3Rpb24gY3JlYXRlYC1zcGVjaWZpYwoKYC0taW5wdXQtZmlsZSBGSUxFYCBp" + + "cyByZWNvbW1lbmRlZCBmb3IgcmVwZWF0YWJsZSBmdW5jdGlvbiBkZWZpbml0aW9ucy4gRm9yIGFk" + + "LWhvYyBjcmVhdGVzOgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18" + + "CnwgYC0tbmFtZSBOQU1FYCB8IEZ1bmN0aW9uIG5hbWUgfCAtIHwKfCBgLS1pbWFnZSBJTUFHRWAg" + + "fCBDb250YWluZXIgaW1hZ2UgfCAtIHwKfCBgLS1pbmZlcmVuY2UtdXJsIFVSSWAgfCBDb250YWlu" + + "ZXIgaW5mZXJlbmNlIGVuZHBvaW50IHwgLSB8CnwgYC0taW5mZXJlbmNlLXBvcnQgUE9SVGAgfCBD" + + "b250YWluZXIgaW5mZXJlbmNlIHBvcnQgfCAtIHwKfCBgLS1mdW5jdGlvbi10eXBlIERFRkFVTFRc" + + "fFNUUkVBTUlOR1x8TExNYCB8IEZ1bmN0aW9uIHR5cGUgfCBgREVGQVVMVGAgfAp8IGAtLWhlbG0t" + + "Y2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJIHJlZmVyZW5jZS4gQ2FuIGJlIHVz" + + "ZWQgd2l0aCBgLS1mdW5jdGlvbi10eXBlPUxMTWAgZm9yIGNoYXJ0LXBhY2thZ2VkIExMTSB3b3Jr" + + "bG9hZHMuIHwgLSB8CnwgYC0taGVsbS1jaGFydC1zZXJ2aWNlIE5BTUVgIHwgS3ViZXJuZXRlcyBT" + + "ZXJ2aWNlIG5hbWUgZXhwb3NlZCBieSB0aGUgY2hhcnQuIFJlcXVpcmVkIHdoZW4gYC0taGVsbS1j" + + "aGFydGAgaXMgc2V0LiB8IC0gfAp8IGAtLW1vZGVscyBOQU1FOlZFUlNJT046VVJJYCB8IFN0YW5k" + + "YXJkIG1vZGVsIGFydGlmYWN0OyByZXBlYXRhYmxlIHwgLSB8CnwgYC0tbGxtLW1vZGVsIFNQRUNg" + + "IHwgTExNIG1vZGVsIGNvbmZpZzsgZm9ybWF0IGBuYW1lPTxtb2RlbD4sdXJpcz08dXJpPlx8PHVy" + + "aT4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJhdGVMaW1pdD08bGltaXQ+YDsgcmVwZWF0" + + "YWJsZS4gVG9rZW4gbGltaXRzIHVzZSBgPHZhbHVlPi08dW5pdD5gIHdpdGggYFNgLCBgTWAsIGBI" + + "YCwgYERgLCBvciBgV2AsIGZvciBleGFtcGxlIGAxMDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBmb3Ig" + + "Y29tYmluZWQgdG9rZW4gbGltaXRzIGJlY2F1c2UgaW5saW5lIHNwZWNzIHVzZSBjb21tYXMgYXMg" + + "ZmllbGQgc2VwYXJhdG9ycy4gfCAtIHwKfCBgLS1sbG0tZGVmYXVsdC1wcmlvcml0eSBQUklPUklU" + + "WWAgfCBGdW5jdGlvbi1sZXZlbCBkZWZhdWx0IHJlcXVlc3QgcHJpb3JpdHkuIExvd2VyIHZhbHVl" + + "cyBoYXZlIGhpZ2hlciBwcmlvcml0eS4gfCAtIHwKfCBgLS1sbG0tcGVyLWFjY291bnQtcHJpb3Jp" + + "dHkgTkNBLUlEOlBSSU9SSVRZYCB8IFBlci1hY2NvdW50IHByaW9yaXR5IG92ZXJyaWRlOyByZXBl" + + "YXRhYmxlOyBzdXBwb3J0cyB1cCB0byA2NCBkaXN0aW5jdCBOQ0EgSUQgb3ZlcnJpZGVzLiBSZXF1" + + "aXJlcyBhIGRlZmF1bHQgcHJpb3JpdHkuIHwgLSB8CgpJbiBKU09OIGFuZCBpbmxpbmUgc3BlY3Ms" + + "IExMTSBmdW5jdGlvbnMgc2V0IGBmdW5jdGlvblR5cGU6ICJMTE0iYCBhbmQgbW9kZWwgcm91dGlu" + + "ZyBtZXRhZGF0YSB1bmRlciBgbW9kZWxzW10ubGxtQ29uZmlnYC4gYGxsbUNvbmZpZy51cmlzYCBk" + + "ZWNsYXJlcyB0aGUgT3BlbkFJLWNvbXBhdGlibGUgdXBzdHJlYW0gcGF0aHMgZXhwb3NlZCBieSB0" + + "aGUgbW9kZWwuIEN1cnJlbnQgc3VwcG9ydGVkIHBhdGhzIGFyZSBgL3YxL2NoYXQvY29tcGxldGlv" + + "bnNgLCBgL3YxL3Jlc3BvbnNlc2AsIGFuZCBgL3YxL2VtYmVkZGluZ3NgLiBgbGxtQ29uZmlnLnJv" + + "dXRpbmdNZXRob2RgIGFjY2VwdHMgYHJvdW5kX3JvYmluYCwgYHBvd2VyX29mX3R3b2AsIGBncm9x" + + "X211bHRpcmVnaW9uYCwgYHB1bHNhcmAsIG9yIGByYW5kb21gLgpgbGxtQ29uZmlnLnRva2VuUmF0" + + "ZUxpbWl0YCBhY2NlcHRzIG9uZSBvciBtb3JlIGNvbW1hLXNlcGFyYXRlZCBwb3NpdGl2ZSBpbnRl" + + "Z2VyIHRva2VuIGxpbWl0cyBpbiBgPHZhbHVlPi08dW5pdD5gIGZvcm1hdC4gU3VwcG9ydGVkIHVu" + + "aXRzIGFyZSBgU2AgKHNlY29uZHMpLCBgTWAgKG1pbnV0ZXMpLCBgSGAgKGhvdXJzKSwgYERgIChk" + + "YXlzKSwgYW5kIGBXYCAod2Vla3MpLiBVc2UgZGlzdGluY3QgdW5pdHMgd2hlbiBjb21iaW5pbmcg" + + "bGltaXRzLCBmb3IgZXhhbXBsZSBgMTAwMC1TLDUwMDAtTSwxMDAwMDAtSCw1MDAwMDAtRCwxMDAw" + + "MDAwLVdgIGluIGlucHV0IEpTT04uCgpIZWxtIGNoYXJ0IHBhY2thZ2luZyBpcyBpbmRlcGVuZGVu" + + "dCBvZiBgZnVuY3Rpb25UeXBlYC4gRm9yIGEgSGVsbS1jaGFydCBiYWNrZWQgTExNIGZ1bmN0aW9u" + + "LCBzZXQgYGZ1bmN0aW9uVHlwZTogIkxMTSJgLCBgaGVsbUNoYXJ0YCwgYGhlbG1DaGFydFNlcnZp" + + "Y2VOYW1lYCwgYW5kIGBtb2RlbHNbXS5sbG1Db25maWdgIGluIHRoZSBzYW1lIGNyZWF0ZSByZXF1" + + "ZXN0LiBgaW5mZXJlbmNlUG9ydGAgbXVzdCBiZSB0aGUgS3ViZXJuZXRlcyBTZXJ2aWNlIHBvcnQg" + + "ZXhwb3NlZCBieSBgaGVsbUNoYXJ0U2VydmljZU5hbWVgLgoKTExNIGludm9jYXRpb24gcmVxdWVz" + + "dHMgdXNlIGBtb2RlbDogIjxmdW5jdGlvbi1pZD4vPG1vZGVsLW5hbWU+ImAuIFRoZSBmdW5jdGlv" + + "biBJRCBzZWxlY3RzIHRoZSBOVkNGIGZ1bmN0aW9uLCBhbmQgdGhlIG1vZGVsIG5hbWUgaXMgZm9y" + + "d2FyZGVkIHVwc3RyZWFtLiBDaGF0IGNvbXBsZXRpb25zIGFuZCBSZXNwb25zZXMgQVBJIHJlcXVl" + + "c3RzIGNhbiB1c2UgYHgtbXVsdGktdHVybi1zZXNzaW9uLWlkYCBmb3Igc2Vzc2lvbiBzdGlja2lu" + + "ZXNzOyBlbWJlZGRpbmdzIHJlcXVlc3RzIGRvIG5vdC4KCiMjIGBmdW5jdGlvbiB1cGRhdGVgLXNw" + + "ZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS10" + + "YWdzIFRBR1ssVEFHXWAgfCBSZXBsYWNlIGZ1bmN0aW9uIHRhZ3MgfCAtIHwKfCBgLS1sbG0tbW9k" + + "ZWwtdXBkYXRlIFNQRUNgIHwgTExNIG1vZGVsIHVwZGF0ZTsgZm9ybWF0IGBuYW1lPTxtb2RlbD4s" + + "cm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJhdGVMaW1pdD08bGltaXQ+YDsgcmVwZWF0YWJs" + + "ZS4gUm91dGluZyBtZXRob2RzIG1hdGNoIGAtLWxsbS1tb2RlbGAuIFRva2VuIGxpbWl0IGV4YW1w" + + "bGU6IGAxMDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBmb3IgY29tYmluZWQgdG9rZW4gbGltaXRzLiB8" + + "IC0gfAp8IGAtLWxsbS1kZWZhdWx0LXByaW9yaXR5IFBSSU9SSVRZYCB8IFJlcGxhY2UgdGhlIGZ1" + + "bmN0aW9uLWxldmVsIHByaW9yaXR5IGNvbmZpZ3VyYXRpb24gd2l0aCB0aGlzIGRlZmF1bHQgYW5k" + + "IGFueSBzdXBwbGllZCBwZXItYWNjb3VudCBvdmVycmlkZXMuIHwgLSB8CnwgYC0tbGxtLXBlci1h" + + "Y2NvdW50LXByaW9yaXR5IE5DQS1JRDpQUklPUklUWWAgfCBQZXItYWNjb3VudCBwcmlvcml0eSBv" + + "dmVycmlkZTsgcmVwZWF0YWJsZTsgc3VwcG9ydHMgdXAgdG8gNjQgZGlzdGluY3QgTkNBIElEIG92" + + "ZXJyaWRlcy4gUmVxdWlyZXMgYSBkZWZhdWx0IHByaW9yaXR5LiB8IC0gfAoKSW4gSlNPTiwgYGZ1" + + "bmN0aW9uIHVwZGF0ZWAgYWNjZXB0cyBgbW9kZWxVcGRhdGVzW11gIGVudHJpZXMgd2l0aCBgbW9k" + + "ZWxOYW1lYCBhbmQgYGxsbUNvbmZpZy5yb3V0aW5nTWV0aG9kYCBhbmQvb3IgYGxsbUNvbmZpZy50" + + "b2tlblJhdGVMaW1pdGAuIGB1cmlzYCBhcmUgY3JlYXRlLXRpbWUgbW9kZWwgbWV0YWRhdGEgYW5k" + + "IGFyZSBub3QgcGFydCBvZiBtb2RlbCB1cGRhdGVzLgoKIyMgYGZ1bmN0aW9uIGRlcGxveSBjcmVh" + + "dGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIChmdWxsIEpT" + + "T04gc3BlYykuIEZvciBhZC1ob2Mgb25lLXNob3QgdXNlOgoKfCBGbGFnIHwgUHVycG9zZSB8IERl" + + "ZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tZnVuY3Rpb24taWQgSURgIHwgRnVuY3Rpb24gSUQg" + + "KHJlcXVpcmVkKSB8IC0gfAp8IGAtLWdwdSBOQU1FYCB8IEdQVSBmYW1pbHkgfCBgSDEwMGAgfAp8" + + "IGAtLWluc3RhbmNlLXR5cGUgVFlQRWAgfCBTS1UgfCBgTkNQLkdQVS5IMTAwXzF4YCB8CnwgYC0t" + + "bWluLWluc3RhbmNlcyBOYCB8IE1pbiByZXBsaWNhcyB8IGAxYCB8CnwgYC0tbWF4LWluc3RhbmNl" + + "cyBOYCB8IE1heCByZXBsaWNhcyB8IGAxYCB8CnwgYC0tbWF4LXJlcXVlc3QtY29uY3VycmVuY3kg" + + "TmAgfCBDb25jdXJyZW5jeSB8IGAwYCAodW5zZXQ7IHNlcnZlciBkZWZhdWx0IGFwcGxpZXMpIHwK" + + "fCBgLS1jbHVzdGVycyBOQU1FWyxOQU1FXWAgfCBUYXJnZXQgc3BlY2lmaWMgY29tcHV0ZSBjbHVz" + + "dGVycyB8IChhbnkgbWF0Y2hpbmcgU0tVKSB8CgojIyBgdGFzayBjcmVhdGVgLXNwZWNpZmljCgpg" + + "LS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIGZvciByZXBlYXRhYmxlIHRhc2sgZGVm" + + "aW5pdGlvbnMuIEZvciBhZC1ob2MgdXNlOgoKfCBGbGFnIHwgUHVycG9zZSB8IE5vdGVzIHwKfC0t" + + "LXwtLS18LS0tfAp8IGAtLW5hbWUgTkFNRWAgfCBUYXNrIG5hbWUgKHJlcXVpcmVkKSB8IDEtMTI4" + + "IGNoYXJzLCBgXlthLXowLTlBLVpdW2EtejAtOUEtWlwtX10qJGAgfAp8IGAtLWdwdSBHUFVgIHwg" + + "R1BVIG5hbWUgKHJlcXVpcmVkIHdpdGhvdXQgYC0taW5wdXQtZmlsZWApIHwgRXhhbXBsZTogYEgx" + + "MDBgIHwKfCBgLS1pbnN0YW5jZS10eXBlIFRZUEVgIHwgSW5zdGFuY2UgdHlwZSAocmVxdWlyZWQg" + + "d2l0aG91dCBgLS1pbnB1dC1maWxlYCkgfCBFeGFtcGxlOiBgTkNQLkdQVS5IMTAwXzF4YCB8Cnwg" + + "YC0taW1hZ2UgSU1BR0VgIHwgQ29udGFpbmVyIGltYWdlIHwgTXV0dWFsbHkgZXhjbHVzaXZlIHdp" + + "dGggYC0taGVsbS1jaGFydGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBV" + + "Ukwgb3IgT0NJIHJlZmVyZW5jZSB8IE11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGAtLWltYWdlYCB8" + + "CnwgYC0taW5wdXQtZmlsZSBGSUxFYCB8IEpTT04gdGFzayBzcGVjIGZpbGUgfCBDTEkgZmxhZ3Mg" + + "b3ZlcnJpZGUgSlNPTiB2YWx1ZXMgd2hlbiBib3RoIGFyZSBzZXQgfAp8IGAtLWJhY2tlbmQgQkFD" + + "S0VORGAgfCBCYWNrZW5kIC8gQ1NQIHwgLSB8CnwgYC0tY2x1c3RlcnMgTkFNRVssTkFNRV1gIHwg" + + "U3BlY2lmaWMgY2x1c3RlcnMgd2l0aGluIHRoZSBpbnN0YW5jZSB8IENvbW1hLXNlcGFyYXRlZCB8" + + "CnwgYC0tY29udGFpbmVyLWFyZ3MgQVJHU2AgfCBBcmdzIHBhc3NlZCB3aGVuIGxhdW5jaGluZyB0" + + "aGUgY29udGFpbmVyIHwgU2luZ2xlIHN0cmluZywgZS5nLiBgIi0tZXBvY2hzIDEwIC0tYmF0Y2gt" + + "c2l6ZSAzMiJgIHwKfCBgLS1jb250YWluZXItZW52IE5BTUU9dmFsdWVgIHwgQ29udGFpbmVyIGVu" + + "dmlyb25tZW50IHZhcmlhYmxlOyByZXBlYXRhYmxlIHwgLSB8CnwgYC0tc2VjcmV0cyBOQU1FPXZh" + + "bHVlYCB8IFNlY3JldCBlbnZpcm9ubWVudCB2YXJpYWJsZTsgcmVwZWF0YWJsZTsgZW5jcnlwdGVk" + + "IGF0IHJlc3QgfCAtIHwKfCBgLS1tYXgtcnVudGltZSBEVVJBVElPTmAgfCBNYXggd2FsbC1jbG9j" + + "ayBydW4gdGltZSAoSVNPIDg2MDEsIGUuZy4gYFBUNEhgKSB8IE5vIGRlZmF1bHQ7IG9taXQgZm9y" + + "IG5vIHRpbWUgbGltaXQgfAp8IGAtLW1heC1xdWV1ZWQgRFVSQVRJT05gIHwgTWF4IHRpbWUgaW4g" + + "cXVldWUgYmVmb3JlIGNhbmNlbGxhdGlvbiAoSVNPIDg2MDEpIHwgU2VydmVyIGRlZmF1bHQgYFBU" + + "NzJIYCB8CnwgYC0tdGVybWluYXRpb24tZ3JhY2UgRFVSQVRJT05gIHwgR3JhY2UgcGVyaW9kIGFm" + + "dGVyIHN0b3Agc2lnbmFsIChJU08gODYwMSkgfCBTZXJ2ZXIgZGVmYXVsdCBgUFQxSGAgfAp8IGAt" + + "LXJlc3VsdC1zdHJhdGVneSBVUExPQURcfE5PTkVgIHwgSG93IHRvIGhhbmRsZSB0YXNrIG91dHB1" + + "dCBhcnRpZmFjdHMgfCAtIHwKfCBgLS1yZXN1bHRzLWxvY2F0aW9uIExPQ0FUSU9OYCB8IFJlc3Vs" + + "dCB1cGxvYWQgdGFyZ2V0LCBmb3JtYXQgYG9yZy1uYW1lL1t0ZWFtLW5hbWUvXW1vZGVsLW5hbWVg" + + "OyByZXF1aXJlZCB3aGVuIGAtLXJlc3VsdC1zdHJhdGVneT1VUExPQURgIHwgLSB8CnwgYC0tbW9k" + + "ZWxzIE5BTUU6VkVSU0lPTjpVUklgIHwgTW9kZWwgYXJ0aWZhY3Q7IHJlcGVhdGFibGUgfCAtIHwK" + + "fCBgLS1yZXNvdXJjZXMgTkFNRTpWRVJTSU9OOlVSSWAgfCBSZXNvdXJjZSBhcnRpZmFjdDsgcmVw" + + "ZWF0YWJsZSB8IC0gfAp8IGAtLXRhZ3MgVEFHWyxUQUddYCB8IFRhc2sgdGFncyB8IENvbW1hLXNl" + + "cGFyYXRlZCB8CnwgYC0tZGVzY3JpcHRpb24gVEVYVGAgfCBUYXNrIGRlc2NyaXB0aW9uIHwgLSB8" + + "CnwgYC0tbG9ncy10ZWxlbWV0cnktaWQgVVVJRGAgfCBMb2dzIHRlbGVtZXRyeSBlbmRwb2ludCBJ" + + "RCB8IC0gfAp8IGAtLW1ldHJpY3MtdGVsZW1ldHJ5LWlkIFVVSURgIHwgTWV0cmljcyB0ZWxlbWV0" + + "cnkgZW5kcG9pbnQgSUQgfCAtIHwKfCBgLS10cmFjZXMtdGVsZW1ldHJ5LWlkIFVVSURgIHwgVHJh" + + "Y2VzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfApQSwcIrEyKo8syAADLMgAAUEsDBBQACAAA" + + "AAAAIQAAAAAAAAAAAAAAAAA3AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNl" + + "L3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOEiMgVHJvdWJsZXNob290aW5nCgpLbm93biBlcnJv" + + "cnMg4oaSIGRpYWdub3N0aWMgY29tbWFuZCDihpIgcmVtZWRpYXRpb24uIEtlZXAgaW4gc3luYyB3" + + "aXRoIHRoZSBzdHJ1Y3R1cmVkIGBwaGFzZV9mYWlsZWRgIGV2ZW50cyB0aGUgQ0xJIGVtaXRzIChS" + + "RVEtMTUpIOKAlCBldmVyeSBlbnRyeSBiZWxvdyBzaG91bGQgbWFwIHRvIGFuIGBlcnJDYXRlZ29y" + + "eWAgYW5kIGEgYHJlbWVkaWF0aW9uYCBhcnJheS4KCiMjIFByZS1mbGlnaHQKCnwgU3ltcHRvbSB8" + + "IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGt1YmVjdGwgbm90IG9uIFBB" + + "VEhgIHwgT3BlcmF0b3IncyBgJFBBVEhgIGRvZXNuJ3QgaW5jbHVkZSBrdWJlY3RsIHwgSW5zdGFs" + + "bCBrdWJlY3RsIDEuMjgrOiBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy90YXNrcy90b29scy9p" + + "bnN0YWxsLWt1YmVjdGwvIHwKfCBgaGVsbWZpbGUgbm90IG9uIFBBVEhgIHwgU2FtZSB8IGh0dHBz" + + "Oi8vZ2l0aHViLmNvbS9oZWxtZmlsZS9oZWxtZmlsZSNpbnN0YWxsYXRpb24gfAp8IGBoZWxtIG5v" + + "dCBvbiBQQVRIYCB8IFNhbWUgfCBodHRwczovL2hlbG0uc2gvZG9jcy9pbnRyby9pbnN0YWxsLyB8" + + "CnwgYEdhdGV3YXkgQVBJIENSRHMgbm90IGluc3RhbGxlZGAgfCBlbnZveS1nYXRld2F5IHByZXJl" + + "cSBtaXNzaW5nIHwgYGhlbG0gaW5zdGFsbCBlZyBvY2k6Ly9kb2NrZXIuaW8vZW52b3lwcm94eS9n" + + "YXRld2F5LWhlbG0gLS1uYW1lc3BhY2U9ZW52b3ktZ2F0ZXdheS1zeXN0ZW0gLS1jcmVhdGUtbmFt" + + "ZXNwYWNlYCB8CnwgYGRlZmF1bHQgU3RvcmFnZUNsYXNzIG5vdCBhdmFpbGFibGVgIHwgQ2x1c3Rl" + + "ciBoYXMgbm8gZGVmYXVsdCBTQyB8IEFubm90YXRlIG9uZTogYGt1YmVjdGwgcGF0Y2ggc2MgPG5h" + + "bWU+IC1wICd7Im1ldGFkYXRhIjp7ImFubm90YXRpb25zIjp7InN0b3JhZ2VjbGFzcy5rdWJlcm5l" + + "dGVzLmlvL2lzLWRlZmF1bHQtY2xhc3MiOiJ0cnVlIn19fSdgIHwKfCBgR1BVIG9wZXJhdG9yIG5v" + + "dCBpbnN0YWxsZWRgIChjb21wdXRlLXBsYW5lKSB8IG52aWRpYSBHUFUgb3BlcmF0b3IgbWlzc2lu" + + "ZyB8IEluc3RhbGwgcGVyIGh0dHBzOi8vZG9jcy5udmlkaWEuY29tL2RhdGFjZW50ZXIvY2xvdWQt" + + "bmF0aXZlL2dwdS1vcGVyYXRvci9sYXRlc3QvaW5zdGFsbC1ncHUtb3BlcmF0b3IuaHRtbCwgT1Ig" + + "dXNlIGBmYWtlLWdwdS1vcGVyYXRvcmAgZm9yIGRldiB8CnwgYEdQVSBub2RlIGxhYmVscyBtaXNz" + + "aW5nYCAoY29tcHV0ZS1wbGFuZSkgfCBOb2RlcyBuZWVkIGBudmlkaWEuY29tL2dwdS5mYW1pbHlg" + + "IGV0Yy4gfCBTZXQgYC0tazNzLW5vZGUtbGFiZWwgbnZpZGlhLmNvbS9ncHUuZmFtaWx5PWhvcHBl" + + "ckBhZ2VudDpOYCBmb3IgazNkIHwKCiMjIEF1dGgKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRp" + + "YXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGFkbWluIHRva2VuIHJlcXVpcmVkYCAoaW5pdCBub3Qg" + + "cnVuKSB8IE5vIGB+Ly5udmNmLWNsaS5zdGF0ZWAgYW5kIGAtLXRva2VuYCBub3QgcGFzc2VkIHwg" + + "YG52Y2YtY2xpIGluaXRgIChpbnRlcmFjdGl2ZSkgb3IgYC0tdG9rZW49JEpXVCAtLW5vbi1pbnRl" + + "cmFjdGl2ZWAgKENJKSB8CnwgYFNpZ25lZCBKV1QgcmVqZWN0ZWQ6IEFub3RoZXIgYWxnb3JpdGht" + + "IGV4cGVjdGVkLCBvciBubyBtYXRjaGluZyBrZXkocykgZm91bmRgIHwgU3RhbGUgc2Vzc2lvbi5q" + + "c29uIGZyb20gYSBkaWZmZXJlbnQgY29udHJvbCBwbGFuZSB8IGBybSB+Ly5udmNmLWNsaS5zdGF0" + + "ZWAgdGhlbiBgbnZjZi1jbGkgaW5pdGAgYWdhaW4gfAp8IGA0MDMgbWlzc2luZyByZXF1ZXN0ZWQg" + + "YXV0aG9yaXRpZXNgIChmdW5jdGlvbiBpbnZva2UpIHwgQWRtaW4gdG9rZW4gZG9lc24ndCBoYXZl" + + "IGBpbnZva2VfZnVuY3Rpb25gIHNjb3BlIHwgYG52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1k" + + "ZXNjcmlwdGlvbj3igKZgIHRoZW4gcmUtcnVuIGludm9rZSB8CgojIyBJbnN0YWxsIC8gYHVwYAoK" + + "fCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBIZWxtIGB0" + + "aW1lZCBvdXQgd2FpdGluZyBmb3IgY2Fzc2FuZHJhYCB8IENhc3NhbmRyYSBTdGF0ZWZ1bFNldCBQ" + + "VkMgc3R1Y2sgYFBlbmRpbmdgIHwgQ29uZmlybSBkZWZhdWx0IFN0b3JhZ2VDbGFzczsgY2hlY2sg" + + "YGt1YmVjdGwgZ2V0IHB2LHB2YyAtbiBjYXNzYW5kcmEtc3lzdGVtYCB8CnwgYEludmFsaWQgR1BV" + + "ICdOQ1AuR1BVLkgxMDAnIHNwZWNpZmllZGAgKGZ1bmN0aW9uIGRlcGxveSkgfCBXcm9uZyBmaWVs" + + "ZCDigJQgYGdwdWAgaXMgdGhlIGZhbWlseSwgbm90IHRoZSBTS1UgfCBVc2UgYCJncHUiOiAiSDEw" + + "MCJgLCBgImluc3RhbmNlVHlwZSI6ICJOQ1AuR1BVLkgxMDBfMXgiYCB8CnwgYHJlZ2lvbiBtdXN0" + + "IGJlIHByb3ZpZGVkYCAoY2x1c3RlciByZWdpc3RlciAvIGluc3RhbGwgLS1jb21wdXRlLXBsYW5l" + + "KSB8IGAtLXJlZ2lvbmAgZW1wdHkgKyBgQ0xVU1RFUl9SRUdJT05gIGVudiBlbXB0eSB8IFBhc3Mg" + + "YC0tcmVnaW9uPXVzLXdlc3QtMWAgKG9yIGFueSBub24tZW1wdHkgdmFsdWUpIHwKfCBgcmVxdWly" + + "ZWRFbnYgIk5DQV9JRCIgaXMgbm90IHNldGAgKGhlbG1maWxlIGVycm9yIGR1cmluZyBjb21wdXRl" + + "LXBsYW5lIGFwcGx5KSB8IE9sZGVyIG52Y2YtY2xpIGJlZm9yZSBjb21taXQgYDZhYTU3MDRgOyBF" + + "eHRyYUVudiBub3QgcHJvcGFnYXRpbmcgTkNBX0lEIHwgVXBncmFkZSBgbnZjZi1jbGlgIHRvIGEg" + + "cmVsZWFzZSBhZnRlciBgNmFhNTcwNGAgfAp8IGBudmNhLW9wZXJhdG9yOiBJbWFnZVB1bGxCYWNr" + + "T2ZmYCBmb3IgYG52Y2Etb3BlcmF0b3I6cHNhdGAgfCBJbWFnZSBub3QgaW4gY2x1c3RlciByZWdp" + + "c3RyeTsgbXVsdGktY2x1c3RlciBidWlsZCBpcyBsb2NhbCB8IGBrM2QgaW1hZ2UgaW1wb3J0IG52" + + "Y3IuaW8vLi4uL252Y2Etb3BlcmF0b3I6cHNhdCAtYyA8Y2x1c3Rlcj5gIHwKCiMjIENvbXB1dGUt" + + "cGxhbmUgcnVudGltZQoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0t" + + "fC0tLXwKfCBOVkNBIGFnZW50IENyYXNoTG9vcEJhY2tPZmYgd2l0aCBgSFRUUCA0MDFgIG9uIGAv" + + "djEvbnZjYS9jbHVzdGVycy8uLi4vcmVnaXN0ZXJgIHwgU3RhbGUgYG91dC88Y2x1c3Rlcj4tcmVn" + + "aXN0ZXItdmFsdWVzLnlhbWxgIGZyb20gcHJpb3IgcmVnaXN0ZXI7IGNsdXN0ZXIgSUQgZG9lc24n" + + "dCBtYXRjaCBJQ01TIHwgRGVsZXRlIHRoZSBzdGFsZSBmaWxlOyByZS1ydW4gYG52Y2YtY2xpIHNl" + + "bGYtaG9zdGVkIHVwYCAoaWRlbXBvdGVudCByZWdpc3RlciB3cml0ZXMgYSBmcmVzaCBmaWxlKSB8" + + "CnwgYE5vIGNsdXN0ZXIgZm91bmQgd2l0aCB2YWxpZCBKV0tTIGZvciBjbHVzdGVyIElEOiA8aWQ+" + + "YCAoSUNNUyBsb2cpIHwgSldLUyBpbiBJQ01TIGRvZXNuJ3QgbWF0Y2ggd2hhdCBjb21wdXRlLXBs" + + "YW5lIEs4cyBpcyBjdXJyZW50bHkgc2lnbmluZyB8IGBudmNmLWNsaSBjbHVzdGVyIHJvdGF0ZSAt" + + "LWNsdXN0ZXItaWQ9PGlkPmAgfAp8IEZ1bmN0aW9uIHBvZCBgSW1hZ2VQdWxsQmFja09mZmAgaW4g" + + "YG52Y2YtYmFja2VuZGAgfCBJbWFnZS1jcmVkZW50aWFsLWhlbHBlciBjb25maWcgbWlzc2luZyBv" + + "ciB3cm9uZyB8IGBrdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiBudmNmLWJhY2tlbmQgPHBvZD5gOyBj" + + "aGVjayB0aGUgcHVsbCBzZWNyZXQgY29uZmlnIHwKfCBGdW5jdGlvbiBkZXBsb3kgc3R1Y2sgYERF" + + "UExPWUlOR2AgZm9yID41IG1pbiB8IE5BVFMgc3RyZWFtIGluaXQgbGFnIChjb2xkLWNsdXN0ZXIp" + + "IOKAlCB3YWl0LCBvciBjaGVjayBOQVRTIGF1dGgtY2FsbG91dCBoZWFsdGggfCBga3ViZWN0bCBs" + + "b2dzIC1uIG5hdHMtc3lzdGVtIC1sIGFwcC5rdWJlcm5ldGVzLmlvL25hbWU9bmF0cy1hdXRoLWNh" + + "bGxvdXQtc2VydmljZWAgfAoKIyMgVGFza3MKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRp" + + "b24gfAp8LS0tfC0tLXwtLS18CnwgYHRhc2sgY3JlYXRlYCByZXR1cm5zIGBNaXNzaW5nIDxUWVBF" + + "PiByZWdpc3RyeSBjcmVkZW50aWFsIGZvciBob3N0bmFtZWAsIG9yIGtlZXBzIHVzaW5nIGEgcHJl" + + "dmlvdXMgY3JlZGVudGlhbCB2YWx1ZSwgc2hvcnRseSBhZnRlciBgcmVnaXN0cnktY3JlZGVudGlh" + + "bCBhZGQvdXBkYXRlL2RlbGV0ZWAgd2hpbGUgYHJlZ2lzdHJ5LWNyZWRlbnRpYWwgbGlzdGAvYGdl" + + "dGAgYWxyZWFkeSBzaG93IHRoZSBuZXcgdmFsdWUgfCBFeHBlY3RlZCBwcm9wYWdhdGlvbiBkZWxh" + + "eTogTlZDVCBjYWNoZXMgdGhlIGFjY291bnQncyByZWdpc3RyeSBjcmVkZW50aWFscyB3aXRoIGBu" + + "dmN0Lm52Y2YuY2FjaGUtdHRsYCAoZGVmYXVsdCBgUFQ1TWAsIGFib3V0IDUgbWluKSBhbmQgYXBw" + + "bGllcyB0aGUgY2hhbmdlIHdoZW4gdGhhdCBjYWNoZWQgY29weSByZWZyZXNoZXMgfCBXYWl0IHVw" + + "IHRvIGFib3V0IDUgbWluIGFuZCByZXRyeSwgb3IgYGt1YmVjdGwgLW4gbnZjZiByb2xsb3V0IHJl" + + "c3RhcnQgZGVwbG95bWVudC9udmN0LWFwaWAgdG8gYXBwbHkgaW1tZWRpYXRlbHkgfApQSwcI864T" + + "hHQRAAB0EQAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAsAAkAZGF0YS9udmNmLXNlbGYtbWFu" + + "YWdlZC1pbnN0YWxsYXRpb24vU0tJTEwubWRVVAUAAQCmzhItLS0KbmFtZTogbnZjZi1zZWxmLW1h" + + "bmFnZWQtaW5zdGFsbGF0aW9uCmRlc2NyaXB0aW9uOiA+LQogIEluc3RhbGwgYW5kIG9wZXJhdGUg" + + "TlZDRiBzZWxmLWhvc3RlZCBjb250cm9sLXBsYW5lIGFuZCBzZXBhcmF0ZSBjb21wdXRlLXBsYW5l" + + "CiAgc3RhY2tzLiBDb3ZlcnMgSGVsbWZpbGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSBpbnN0YWxs" + + "YXRpb24gZmxvd3MsIHRlYXJkb3duLAogIHZhbHVlcyBvdmVycmlkZXMsIHB1bGwgc2VjcmV0cywg" + + "YW5kIHRyb3VibGVzaG9vdGluZy4gVXNlIGZvcgogIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrLCBu" + + "dmNmLWNvbXB1dGUtcGxhbmUtc3RhY2ssIHNwbGl0IGNvbXB1dGUtcGxhbmUKICBpbnN0YWxsYXRp" + + "b24sIGNvbnRyb2wtcGxhbmUgaW5zdGFsbGF0aW9uLCBDTEktZ2VuZXJhdGVkIGNvbnRyb2wtcGxh" + + "bmUKICBwcm9maWxlcywgSGVsbWZpbGUsIHNlbGYtbWFuYWdlZCwgb3Igc2VsZi1ob3N0ZWQgZGVw" + + "bG95bWVudHMuIERvIE5PVCB1c2UgZm9yCiAgbG9jYWwgazNkIGVudmlyb25tZW50czsgdXNlIHRo" + + "ZSBsb2NhbCBrM2QgZGV2ZWxvcG1lbnQgd29ya2Zsb3cgaW5zdGVhZC4KbGljZW5zZTogQXBhY2hl" + + "LTIuMApjb21wYXRpYmlsaXR5OiBSZXF1aXJlcyBoZWxtZmlsZSA+PSAxLjEuMCA8IDEuMi4wLCBo" + + "ZWxtID49IDMuMTIsIGhlbG0tZGlmZiBwbHVnaW4sIGt1YmVjdGwgbWF0Y2hpbmcgY2x1c3RlciB2" + + "ZXJzaW9uCmF1dGhvcjogIm52Y2YtY29yZS1lbmcgPG52Y2YtY29yZS1lbmdAZXhjaGFuZ2UubnZp" + + "ZGlhLmNvbT4iCnZlcnNpb246ICIxLjAuMCIKdGFnczogW252Y2YsIHNlbGYtbWFuYWdlZCwgaGVs" + + "bWZpbGUsIHNlbGYtaG9zdGVkLCBjb250cm9sLXBsYW5lLCBjb21wdXRlLXBsYW5lLCBjbGktcHJv" + + "ZmlsZSwgaW5zdGFsbGF0aW9uLCBkZXBsb3ltZW50LCBwdWxsLXNlY3JldHNdCnRvb2xzOiBbU2hl" + + "bGwsIFJlYWQsIEVkaXQsIEdyZXAsIEdsb2JdCm1ldGFkYXRhOgogIGludGVybmFsOiBmYWxzZQog" + + "IGF1dGhvcjogIm52Y2YtY29yZS1lbmcgPG52Y2YtY29yZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNv" + + "bT4iCiAgdmVyc2lvbjogIjEuMCIKICB0YWdzOiBbbnZjZiwgc2VsZi1tYW5hZ2VkLCBoZWxtZmls" + + "ZSwgc2VsZi1ob3N0ZWQsIGNvbnRyb2wtcGxhbmUsIGNvbXB1dGUtcGxhbmUsIGNsaS1wcm9maWxl" + + "LCBpbnN0YWxsYXRpb24sIGRlcGxveW1lbnQsIHB1bGwtc2VjcmV0c10KICBsYW5ndWFnZXM6IFti" + + "YXNoLCB5YW1sXQogIGZyYW1ld29ya3M6IFtoZWxtZmlsZSwgaGVsbSwga3ViZWN0bF0KICBkb21h" + + "aW46IGNsb3VkLWluZnJhc3RydWN0dXJlCi0tLQoKIyBOVkNGIFNlbGYtTWFuYWdlZCBTdGFjayBP" + + "cGVyYXRpb25zCgpPcGVyYXRpb25hbCBndWlkZSBmb3IgbWF0Y2hpbmcgTlZDRiBjb250cm9sLXBs" + + "YW5lIGFuZCBjb21wdXRlLXBsYW5lIEhlbG1maWxlIGJ1bmRsZXMuCgojIyBJbnN0cnVjdGlvbnMK" + + "ClVzZSB0aGlzIHNraWxsIGZvciBpbnN0YWxsLCB1cGdyYWRlLCBvciB0ZWFyZG93biB3b3JrIGlu" + + "IG1hdGNoaW5nIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgYW5kIGBudmNmLWNvbXB1dGUtcGxh" + + "bmUtc3RhY2tgIGJ1bmRsZXM7IGtlZXAgSGVsbWZpbGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSBo" + + "YW5kb2ZmcyBzZXBhcmF0ZS4gRm9yIGBmdW5jdGlvblR5cGU6ICJMTE0iYCwgcmVhZCBbTExNIEZ1" + + "bmN0aW9uIEVuYWJsZW1lbnRdKHJlZmVyZW5jZXMvaGVsbWZpbGUtc3RydWN0dXJlLm1kI2xsbS1m" + + "dW5jdGlvbi1lbmFibGVtZW50KS4KCiMjIFByZXJlcXVpc2l0ZXMKCkFzayBmb3IgdGhlIGV4dHJh" + + "Y3RlZCBgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2tgIHBhdGguIEZvciBzcGxpdCBpbnN0YWxsYXRp" + + "b24sCmFsc28gcmVxdWlyZSB0aGUgbWF0Y2hpbmctdmVyc2lvbiBgbnZjZi1jb21wdXRlLXBsYW5l" + + "LXN0YWNrYCBwYXRoLiBWZXJpZnkgYm90aDoKCmBgYGJhc2gKbHMgPGNvbnRyb2wtcGxhbmUtc3Rh" + + "Y2s+L2hlbG1maWxlLmQvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9lbnZpcm9ubWVudHMvIDxjb250" + + "cm9sLXBsYW5lLXN0YWNrPi9zZWNyZXRzLyA8Y29udHJvbC1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlh" + + "bWwuZ290bXBsCmxzIDxjb21wdXRlLXBsYW5lLXN0YWNrPi9oZWxtZmlsZS5kLyA8Y29tcHV0ZS1w" + + "bGFuZS1zdGFjaz4vZW52aXJvbm1lbnRzLyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlh" + + "bWwuZ290bXBsCmBgYAoKSWYgZWl0aGVyIGRpcmVjdG9yeSBpcyBtaXNzaW5nLCBkb3dubG9hZCBt" + + "YXRjaGluZyBidW5kbGUgdmVyc2lvbnMgZnJvbSBOR0M6CgpgYGBiYXNoCm5nYyByZWdpc3RyeSBy" + + "ZXNvdXJjZSBkb3dubG9hZC12ZXJzaW9uIDxvcmc+L252Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrOjx2" + + "ZXJzaW9uPgpuZ2MgcmVnaXN0cnkgcmVzb3VyY2UgZG93bmxvYWQtdmVyc2lvbiA8b3JnPi9udmNm" + + "LWNvbXB1dGUtcGxhbmUtc3RhY2s6PHZlcnNpb24+CmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5k" + + "cyBiZWxvdyBhc3N1bWUgdGhlIGNvbnRyb2wtcGxhbmUgYnVuZGxlIHJvb3QuIFNwbGl0LWZsb3cK" + + "Y29tbWFuZHMgYW5kIHJvb3Qgc3Vic3RpdHV0aW9uIGFyZSBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFu" + + "ZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQp" + + "LgoKIyMgQmVmb3JlIFlvdSBTdGFydAoKVmVyaWZ5IHRvb2xpbmcgYW5kIGNvbnRleHQgYmVmb3Jl" + + "IGFueSBvcGVyYXRpb246CgpgYGBiYXNoCmhlbG1maWxlIC0tdmVyc2lvbiAgICMgTXVzdCBiZSAx" + + "LjEueCAoMS4yLjAgcmVtb3ZlZCBzZXF1ZW50aWFsIG1vZGUpCmhlbG0gdmVyc2lvbiAgICAgICAg" + + "ICMgTXVzdCBiZSA+PSAzLjEyCmhlbG0gcGx1Z2luIGxpc3QgICAgICMgTXVzdCBpbmNsdWRlIGhl" + + "bG0tZGlmZiA+PSAzLjExCmt1YmVjdGwgdmVyc2lvbiAgICAgICMgQ2xpZW50IG11c3QgYmUgd2l0" + + "aGluIDEgbWlub3IgdmVyc2lvbiBvZiBjbHVzdGVyCmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5k" + + "cyBydW4gZnJvbSB0aGUgZXh0cmFjdGVkIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFjay9gIHJvb3Q6" + + "CgpgYGBiYXNoCmNkIHBhdGgvdG8vbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sKbHMgaGVsbWZpbGUu" + + "ZC8gZW52aXJvbm1lbnRzLyBzZWNyZXRzLyBnbG9iYWwueWFtbC5nb3RtcGwKYGBgCgpJZGVudGlm" + + "eSB0aGUgZW52aXJvbm1lbnQgZnJvbSBgZW52aXJvbm1lbnRzLzxuYW1lPi55YW1sYCBhbmQKYHNl" + + "Y3JldHMvPG5hbWU+LXNlY3JldHMueWFtbGA7IGZvciBFS1MsIHVzZSB0aGUgY2Fub25pY2FsCltD" + + "U1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYu" + + "MC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4KCiMjIEhvdyBWYWx1ZXMgRmxvdwoKVW5kZXJz" + + "dGFuZGluZyB2YWx1ZSBwcmVjZWRlbmNlIHByZXZlbnRzIHRoZSBtb3N0IGNvbW1vbiBjb25maWd1" + + "cmF0aW9uIG1pc3Rha2VzLgoKYGBgdGV4dAplbnZpcm9ubWVudHMvYmFzZS55YW1sICAgICAgICAg" + + "IChkZWZhdWx0cykKICAgIC0+IG1lcmdlZCB3aXRoCmVudmlyb25tZW50cy88ZW52Pi55YW1sICAg" + + "ICAgICAgKHlvdXIgb3ZlcnJpZGVzKQogICAgLT4gY29uc3VtZWQgYnkKZ2xvYmFsLnlhbWwuZ290" + + "bXBsICAgICAgICAgICAgICAoR28gdGVtcGxhdGUsIGNvbnN0cnVjdHMgcGVyLWNoYXJ0IHZhbHVl" + + "cykKICAgIC0+IGNvbnN1bWVkIGJ5CnNlY3JldHMvPGVudj4tc2VjcmV0cy55YW1sICAgICAgKHNl" + + "bnNpdGl2ZSB2YWx1ZXMpCiAgICAtPiBvdmVycmlkZGVuIGJ5CnJlbGVhc2UgaW5saW5lIHZhbHVl" + + "czogYmxvY2tzICAgKGhpZ2hlc3QgcHJlY2VkZW5jZSkKYGBgCgpDcml0aWNhbDogYGdsb2JhbC55" + + "YW1sLmdvdG1wbGAgb25seSBwYXNzZXMgdGhyb3VnaCBzcGVjaWZpYyBrZXlzIHRvIGVhY2ggY2hh" + + "cnQgKGltYWdlIHJlZ2lzdHJpZXMsIG5vZGUgc2VsZWN0b3JzLCBzdG9yYWdlLCByZXBsaWNhIGNv" + + "dW50cykuIFNldHRpbmcgYW4gYXJiaXRyYXJ5IGNoYXJ0IHZhbHVlIGluIHRoZSBlbnZpcm9ubWVu" + + "dCBmaWxlIHdpbGwgYmUgc2lsZW50bHkgaWdub3JlZCBpZiBgZ2xvYmFsLnlhbWwuZ290bXBsYCBk" + + "b2VzIG5vdCBwcm9wYWdhdGUgaXQuCgpUbyBvdmVycmlkZSBhcmJpdHJhcnkgY2hhcnQgdmFsdWVz" + + "LCB1c2UgYSBoZWxtZmlsZSByZWxlYXNlIGB2YWx1ZXM6YCBibG9jay4gU2VlIFtPdmVycmlkaW5n" + + "IEhlbG0gQ2hhcnQgVmFsdWVzXSgjb3ZlcnJpZGluZy1oZWxtLWNoYXJ0LXZhbHVlcykuCgojIyBD" + + "bGVhbiBJbnN0YWxsYXRpb24KCiMjIyAxLiBDcmVhdGUgbmFtZXNwYWNlcyBhbmQgaW1hZ2UgcHVs" + + "bCBzZWNyZXRzIChpZiB1c2luZyBhIHByaXZhdGUgcmVnaXN0cnkpCgpgYGBiYXNoCmZvciBucyBp" + + "biBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVs" + + "dC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSAiJG5z" + + "IiAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KZG9uZQoKIyBP" + + "bmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGUuZy4sIE5HQyBudmNyLmlv" + + "KQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmZvciBucyBpbiBjYXNzYW5kcmEtc3lz" + + "dGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1t" + + "YW5hZ2VyOyBkbwogIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1j" + + "cmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFt" + + "ZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwK" + + "ICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1" + + "YmVjdGwgYXBwbHkgLWYgLQpkb25lCmBgYAoKSWYgdXNpbmcgcHVsbCBzZWNyZXRzLCB5b3UgbXVz" + + "dCBhbHNvIGNvbmZpZ3VyZSBlYWNoIGhlbG1maWxlIHJlbGVhc2UgdG8gcmVmZXJlbmNlIHRoZW0u" + + "IFNlZSBbSW1hZ2UgUHVsbCBTZWNyZXRzXSgjaW1hZ2UtcHVsbC1zZWNyZXRzKS4KCiMjIyAyLiBB" + + "dXRoZW50aWNhdGUgaGVsbSB0byB5b3VyIGNoYXJ0IHJlZ2lzdHJ5CgpCb3RoIGBkb2NrZXIgbG9n" + + "aW5gIEFORCBgaGVsbSByZWdpc3RyeSBsb2dpbmAgYXJlIHJlcXVpcmVkIGZvciBOR0MuIEhlbG1m" + + "aWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kgY2hhcnRzLCBzbyB0aGUgaGVs" + + "bSBjcmVkZW50aWFsIHN0b3JlIG11c3QgYmUgYXV0aGVudGljYXRlZCBzZXBhcmF0ZWx5LgoKYGBg" + + "YmFzaAojIE5HQyAtLSBib3RoIGNvbW1hbmRzIGFyZSByZXF1aXJlZApkb2NrZXIgbG9naW4gbnZj" + + "ci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9n" + + "aW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCgojIEVDUgphd3Mg" + + "ZWNyIGdldC1sb2dpbi1wYXNzd29yZCAtLXJlZ2lvbiA8cmVnaW9uPiB8IFwKICBoZWxtIHJlZ2lz" + + "dHJ5IGxvZ2luIC0tdXNlcm5hbWUgQVdTIC0tcGFzc3dvcmQtc3RkaW4gPGFjY291bnQ+LmRrci5l" + + "Y3IuPHJlZ2lvbj4uYW1hem9uYXdzLmNvbQpgYGAKCj4gTm90ZTogYGhlbG0gcmVnaXN0cnkgbG9n" + + "aW5gIGtlZXBzIG9ubHkgdGhlIGxhc3QgbG9naW4gcGVyIGhvc3QgKG11bHRpLW9yZyBnb3RjaGEp" + + "Lgo+IFRoZSBzdGFjayBhbmQgdGhlIGNhY2hlcyBzcGFuIHNldmVyYWwgTkdDIG9yZ3MgdGhhdCBu" + + "ZWVkIGRpZmZlcmVudCBrZXlzLCBidXQgdGhleSBhbGwKPiBsaXZlIHVuZGVyIHRoZSBvbmUgaG9z" + + "dCBgbnZjci5pb2AuIEEgc2Vjb25kIGBoZWxtIHJlZ2lzdHJ5IGxvZ2luIG52Y3IuaW9gIChvcgo+" + + "IGBkb2NrZXIgbG9naW5gKSB3aXRoIGEgZGlmZmVyZW50IGtleSBzaWxlbnRseSBvdmVyd3JpdGVz" + + "IHRoZSBmaXJzdCwgc28gcHVsbHMgZm9yIHRoZQo+IGZpcnN0IG9yZyB0aGVuIGZhaWwgd2l0aCBh" + + "IG1pc2xlYWRpbmcgYDQwMyBBY2Nlc3MgRGVuaWVkYCAobm90IGEgNDAxOiB0aGUgYXV0aAo+IHN1" + + "Y2NlZWRlZCwgaXQncyB0aGUgd3Jvbmctb3JnIGtleSkuIElmIHlvdSBwdWxsIGNoYXJ0cy9pbWFn" + + "ZXMgZnJvbSBtb3JlIHRoYW4gb25lIG9yZywKPiBlaXRoZXIgcmUtcnVuIHRoZSBsb2dpbiB3aXRo" + + "IHRoZSBjb3JyZWN0IGtleSBpbW1lZGlhdGVseSBiZWZvcmUgZWFjaCBwdWxsLCBvciBwYXNzCj4g" + + "YC0tdXNlcm5hbWUgJyRvYXV0aHRva2VuJyAtLXBhc3N3b3JkIDxrZXk+YCBwZXIgYGhlbG0gcHVs" + + "bGAgaW52b2NhdGlvbiBpbnN0ZWFkIG9mIHJlbHlpbmcKPiBvbiB0aGUgc3RvcmVkIGxvZ2luLiAo" + + "UHVsbGluZyBldmVyeXRoaW5nIGZyb20gYSBzaW5nbGUgcmVnaXN0cnkgbWlycm9yIGF2b2lkcyB0" + + "aGlzCj4gZW50aXJlbHkuKQoKIyMjIDJiLiAoUmVjb21tZW5kZWQpIFB1bGwgZnJvbSBhIHJlZ2lz" + + "dHJ5IHRoZSBjbHVzdGVyIGF1dGhlbnRpY2F0ZXMgdG8gYXV0b21hdGljYWxseQoKSWYgeW91IG1p" + + "cnJvciB0aGUgTlZDRiBpbWFnZXMgaW50byBhIHJlZ2lzdHJ5IHRoYXQgdGhlIGNsdXN0ZXIgY2Fu" + + "IHB1bGwgZnJvbSB3aXRob3V0IGFuCmV4cGxpY2l0IGltYWdlIHB1bGwgc2VjcmV0IChmb3IgZXhh" + + "bXBsZSwgYSByZWdpc3RyeSB3aGVyZSB0aGUgbm9kZSBvciB3b3JrbG9hZCBpZGVudGl0eSBpcwpn" + + "cmFudGVkIHB1bGwgYWNjZXNzIGF1dG9tYXRpY2FsbHkpLCBwb2ludCB0aGUgc3RhY2sgYXQgaXQg" + + "YW5kIHNraXAgdGhlIGNyZWRlbnRpYWwgc3RlcHMKYWJvdmUuCgoxLiBQb2ludCB0aGUgc3RhY2sg" + + "YXQgdGhlIG1pcnJvciBpbiBgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgOgoKICAgYGBgeWFtbAog" + + "ICBnbG9iYWw6CiAgICAgaW1hZ2U6CiAgICAgICByZWdpc3RyeTogPHlvdXItcmVnaXN0cnk+ICAg" + + "ICAgICAgICAgIyBlLmcuIHJlZ2lzdHJ5LmV4YW1wbGUuY29tCiAgICAgICByZXBvc2l0b3J5OiA8" + + "bWlycm9yLXN1Yi1wYXRoPgogICAgIGhlbG06CiAgICAgICBzb3VyY2VzOiAgICAgICAgICAgICAg" + + "ICAgICAgICAgICAgICAgICMgb25seSBpZiB5b3UgYWxzbyBtaXJyb3JlZCB0aGUgaGVsbSBjaGFy" + + "dHMKICAgICAgICAgcmVnaXN0cnk6IDx5b3VyLXJlZ2lzdHJ5PgogICAgICAgICByZXBvc2l0b3J5" + + "OiA8bWlycm9yLXN1Yi1wYXRoPgogICBgYGAKCiAgID4gVGhlIG1hbmlmZXN0IGhhcyBhIG1peCBv" + + "ZiBPQ0kgYW5kIG5vbi1PQ0kgYXJ0aWZhY3RzLCBzbyBjb252ZXJ0IG5vbi1PQ0kgY2hhcnRzIGJl" + + "Zm9yZQogICA+IG1pcnJvcmluZy4gQ29udGFpbmVyIGltYWdlcyAoYG52Y3IuaW8vLi4uYCkgYXJl" + + "IGFscmVhZHkgT0NJIGFuZCBtaXJyb3IgYXMtaXMuIFNvbWUgSGVsbQogICA+IGNoYXJ0cywgdGhv" + + "dWdoLCBhcmUgcHVibGlzaGVkIHRvIGFuIGBodHRwczovL2AgSGVsbSByZXBvc2l0b3J5IChmb3Ig" + + "ZXhhbXBsZQogICA+IGBoZWxtLm5nYy5udmlkaWEuY29tYCkuIFRob3NlIGFyZSBub3QgT0NJIGFu" + + "ZCBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgYGdsb2JhbC5oZWxtLnNvdXJjZXNgCiAgID4gKE9DSSkg" + + "b3IgbWlycm9yZWQgZGlyZWN0bHkuIEJlZm9yZSBwb2ludGluZyB0aGUgc3RhY2sgYXQgeW91ciBt" + + "aXJyb3IsIGNvbnZlcnQgZWFjaAogICA+IGBodHRwczovL2AgY2hhcnQgdG8gT0NJOiBgaGVsbSBy" + + "ZXBvIGFkZGAvYGhlbG0gcHVsbGAgdGhlIGAudGd6YCwgdGhlbgogICA+IGBoZWxtIHB1c2ggPGNo" + + "YXJ0Pi50Z3ogb2NpOi8vPHlvdXItcmVnaXN0cnk+LzxtaXJyb3Itc3ViLXBhdGg+YC4gT25seSBP" + + "Q0kgY2hhcnRzIGNhbiBsaXZlCiAgID4gdW5kZXIgYGdsb2JhbC5oZWxtLnNvdXJjZXNgLgoKMi4g" + + "U2tpcCB0aGUgY3JlZGVudGlhbCBzdGVwcyBhYm92ZS4gV2hlbiB0aGUgY2x1c3RlciBhdXRoZW50" + + "aWNhdGVzIHRvIHRoZSByZWdpc3RyeQogICBhdXRvbWF0aWNhbGx5ICh0aGUgbm9kZSBvciB3b3Jr" + + "bG9hZCBpZGVudGl0eSBoYXMgcHVsbCBhY2Nlc3MpLCB0aGUgcHVsbCBuZWVkcyBubwogICBLdWJl" + + "cm5ldGVzIHNlY3JldCwgc28geW91IGRvIG5vdCBuZWVkOiB0aGUgcGVyLW5hbWVzcGFjZSBgbnZj" + + "ci1jcmVkc2AgZnJvbSBzdGVwIDEKICAgKHN0aWxsIGNyZWF0ZSB0aGUgbmFtZXNwYWNlcywganVz" + + "dCBub3QgdGhlIHNlY3JldCksIHRoZSBgZ2xvYmFsLmltYWdlUHVsbFNlY3JldHNgIGVudHJ5LAog" + + "ICBvciB0aGUgYGRvY2tlciBsb2dpbmAvYGhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pb2AgZnJv" + + "bSBzdGVwIDIuCgogICA+IE9uZSByZXNpZHVhbCBjcmVkZW50aWFsOiBudmNmLWFwaSBzdGlsbCB2" + + "YWxpZGF0ZXMgdGhlIHVzZXIgZnVuY3Rpb24gaW1hZ2UgYXQKICAgPiBgZnVuY3Rpb24gY3JlYXRl" + + "YCB2aWEgdGhlIGFjY291bnQgcmVnaXN0cnkgY3JlZGVudGlhbCwgc28gdGhhdCBjcmVkZW50aWFs" + + "IG11c3QgcG9pbnQgYXQKICAgPiB3aGljaGV2ZXIgcmVnaXN0cnkgaG9sZHMgdGhlIHVzZXIgaW1h" + + "Z2UgKHNldCBpdCB0byB5b3VyIG1pcnJvciBpZiB0aGUgaW1hZ2UgaXMgbWlycm9yZWQKICAgPiB0" + + "aGVyZSkuCgojIyMgMy4gU2V0IHRoZSByb3V0ZSBkb21haW4KCmBnbG9iYWwuZG9tYWluYCBzZXRz" + + "IHRoZSBob3N0bmFtZSBzdWZmaXggZm9yIHJvdXRlcyBzdWNoIGFzIGBhcGkuPGRvbWFpbj5gLiBJ" + + "dCBkb2VzIG5vdCBjb25maWd1cmUgdGhlIEdhdGV3YXkgb3IgaXRzIGxvYWQgYmFsYW5jZXIuIFF1" + + "ZXJ5IHRoZSBleGFjdCBleGlzdGluZyBHYXRld2F5OgoKYGBgYmFzaApHQVRFV0FZX0FERFJFU1M9" + + "JChrdWJlY3RsIGdldCBnYXRld2F5IDxnYXRld2F5LW5hbWU+IC1uIDxnYXRld2F5LW5hbWVzcGFj" + + "ZT4gLW8ganNvbnBhdGg9J3suc3RhdHVzLmFkZHJlc3Nlc1swXS52YWx1ZX0nKQp0ZXN0IC1uICIk" + + "R0FURVdBWV9BRERSRVNTIgpgYGAKClRoZSBhZGRyZXNzIG1heSBiZSBhIGhvc3RuYW1lIG9yIElQ" + + "LiBDbG91ZCBwcm92aWRlciBhbmQgR2F0ZXdheSBjb25maWd1cmF0aW9uIGRldGVybWluZSB0aGUg" + + "bG9hZCBiYWxhbmNlciB0eXBlIGFuZCBhZGRyZXNzIGZvcm1hdC4gVGhlIHNlbGYtbWFuYWdlZCBz" + + "dGFjayBkb2VzIG5vdCBzZWxlY3QgZWl0aGVyLgoKRm9yIHRlbXBvcmFyeSB0ZXN0aW5nIHdpdGhv" + + "dXQgRE5TLCB1c2UgYSBzdGFibGUgcmVzZXJ2ZWQgc3VmZml4IHN1Y2ggYXMgYGdsb2JhbC5kb21h" + + "aW46ICJudmNmLnRlc3QiYCwgY29ubmVjdCB0byBgR0FURVdBWV9BRERSRVNTYCwgYW5kIHNlbmQg" + + "YEhvc3Q6IGFwaS5udmNmLnRlc3RgLiBGb3IgcHJvZHVjdGlvbiwgdXNlIHlvdXIgYmFzZSBETlMg" + + "ZG9tYWluIGFuZCBwb2ludCBpdHMgcm91dGUgcmVjb3JkcyB0byBgR0FURVdBWV9BRERSRVNTYC4g" + + "SWYgdGhlIGVuZHBvaW50IGxhdGVyIGNoYW5nZXMsIGtlZXAgYGdsb2JhbC5kb21haW5gIHN0YWJs" + + "ZSBhbmQgdXBkYXRlIG9ubHkgRE5TIG9yIHRoZSBjbGllbnQgZGVzdGluYXRpb24uIFNlZSBFeGFt" + + "cGxlIDQgaW4gW2V4YW1wbGVzLm1kXShleGFtcGxlcy5tZCkuCgojIyMgNC4gUHJldmlldyBhbmQg" + + "ZGVwbG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIHRlbXBsYXRl" + + "ICAgIyBQcmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0cwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBo" + + "ZWxtZmlsZSBzeW5jICAgICAgICMgRGVwbG95CmBgYAoKPiBTZXQgQk9USCBDYXNzYW5kcmEgcGFz" + + "c3dvcmRzIGluIHRoZSBzZWNyZXRzIGZpbGUuIFRoZSBzZWNyZXRzIGZpbGUgZG9jdW1lbnRzCj4g" + + "YERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYCwgYnV0IHRoZSBjYXNzYW5kcmEgY2hhcnQgaGFz" + + "IGEgc2Vjb25kIGNyZWRlbnRpYWwsCj4gYGNhc3NhbmRyYS5zZXJ2aWNlUm9sZVBhc3N3b3JkYCwg" + + "dGhhdCBkZWZhdWx0cyB0byBgY2hAbmczbTNgLiBJZiB5b3Ugc2V0IG9ubHkKPiBgREVGQVVMVF9D" + + "QVNTQU5EUkFfUEFTU1dPUkRgLCB0aGUgc2VydmljZSByb2xlIGtlZXBzIHRoYXQgZGVmYXVsdCBh" + + "bmQgZXZlcnkgREItYmFja2VkCj4gc2VydmljZSBjcmFzaC1sb29wcyB3aXRoIGBCYWQgY3JlZGVu" + + "dGlhbHNgIG9uY2UgaXQgdHJpZXMgdG8gYXV0aGVudGljYXRlLiBTZXQKPiBgY2Fzc2FuZHJhLnNl" + + "cnZpY2VSb2xlUGFzc3dvcmRgIHRvIHRoZSBzYW1lIHZhbHVlIGFzIGBERUZBVUxUX0NBU1NBTkRS" + + "QV9QQVNTV09SRGAuCgojIyMgNS4gRGVwbG95bWVudCBwaGFzZXMKCkhlbG1maWxlIGRlcGxveXMg" + + "aW4gb3JkZXIgd2l0aCBkZXBlbmRlbmNpZXM6Cgp8IFBoYXNlIHwgU2VsZWN0b3IgfCBTZXJ2aWNl" + + "cyB8IFdhaXQgdGltZSB8CnwtLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0t" + + "LXwKfCAxIHwgYHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzYCB8IE5BVFMsIE9wZW5CYW8sIENh" + + "c3NhbmRyYSB8IDUtMTAgbWluIHwKfCAyIHwgYHJlbGVhc2UtZ3JvdXA9c2VydmljZXNgIHwgQVBJ" + + "LCBTSVMsIEVTUywgaW52b2NhdGlvbiwgZ3JwYy1wcm94eSwgbm90YXJ5LCBhcGkta2V5cywgb3B0" + + "aW9uYWwgTExNIGdhdGV3YXkvcm91dGVyLCBvcHRpb25hbCBWYW5pdHkgR2F0ZXdheSwgTlZDRiBV" + + "SSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoZSBhZGRvbiB8IDUtMTAgbWluIHwK" + + "fCAzIHwgYHJlbGVhc2UtZ3JvdXA9aW5ncmVzc2AgfCBHYXRld2F5IHJvdXRlcyB8IDEtMiBtaW4g" + + "fAp8IDQgfCBgcmVsZWFzZS1ncm91cD1vYnNlcnZhYmlsaXR5YCB8IE9ic2VydmFiaWxpdHkgc3Rh" + + "Y2sgKGlmIGVuYWJsZWQpIHwgMS0yIG1pbiB8CgpNb25pdG9yIGluIGEgc2VwYXJhdGUgdGVybWlu" + + "YWw6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLXcKYGBgCgojIyMgNi4gRW5hYmxlIFZh" + + "bml0eSBHYXRld2F5IChvcHRpb25hbCkKClZhbml0eSBHYXRld2F5IGlzIGRpc2FibGVkIGJ5IGRl" + + "ZmF1bHQgYW5kIGlzIG9ubHkgbmVlZGVkIGZvciBjdXN0b21lci1mYWNpbmcKaG9zdG5hbWVzIG9y" + + "IHBhdGggbWFwcGluZ3MgaW4gZnJvbnQgb2YgdGhlIHN0YW5kYXJkIE5WQ0YgQVBJIGFuZCBpbnZv" + + "Y2F0aW9uCnJvdXRlcy4gSXQgaXMgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhh" + + "dCBpbmNsdWRlIHRoZSBWYW5pdHkgR2F0ZXdheQphZGRvbi4gSWYgdGhlIGV4dHJhY3RlZCBzdGFj" + + "ayBwYWNrYWdlIGRvZXMgbm90IGNvbnRhaW4gYSBgdmFuaXR5LWdhdGV3YXlgCnJlbGVhc2UgYW5k" + + "IGB2YW5pdHlHYXRld2F5YCByb3V0ZSB2YWx1ZXMsIHNraXAgdGhlc2UgY29tbWFuZHMgYW5kIHVz" + + "ZSBhIG5ld2VyCnN0YWNrIHBhY2thZ2UgdGhhdCBpbmNsdWRlcyB0aGVtLgoKSWYgdGhlIHN0YWNr" + + "IHBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLCBlbmFibGUgaXQgaW4KYGVudmlyb25tZW50cy88" + + "ZW52LW5hbWU+LnlhbWxgOgoKYGBgeWFtbAphZGRvbnM6CiAgdmFuaXR5R2F0ZXdheToKICAgIGVu" + + "YWJsZWQ6IHRydWUKICAgIG1hcHBpbmdDb25maWc6IHt9CmBgYAoKVGhlIGRlZmF1bHQgcm91dGUg" + + "aG9zdCBpcyBgdmFuaXR5Ljxkb21haW4+YCBhbmQgdGhlIGJhY2tlbmQgaXMKYHZhbml0eS1nYXRl" + + "d2F5Lm52Y2Y6ODA4MGAuIFB1dCBkZXBsb3ltZW50LXNwZWNpZmljIGhvc3QgYW5kIHBhdGggbWFw" + + "cGluZ3MgdW5kZXIKYGFkZG9ucy52YW5pdHlHYXRld2F5Lm1hcHBpbmdDb25maWdgLiBJZiB5b3Ug" + + "bmVlZCBjdXN0b20gdmFuaXR5IGhvc3RzIGluc3RlYWQgb2YKYHZhbml0eS48ZG9tYWluPmAsIHVz" + + "ZSB0aGUgcm91dGUgaG9zdG5hbWUgb3ZlcnJpZGVzIHN1cHBvcnRlZCBieSB0aGUgc3RhY2sKcGFj" + + "a2FnZSBhbmQgY3JlYXRlIG1hdGNoaW5nIEROUyByZWNvcmRzLgoKQWZ0ZXIgY29uZmlybWluZyB0" + + "aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYHZhbml0eS1nYXRld2F5YCByZWxlYXNlLCBwcmV2aWV3" + + "IGFuZAphcHBseSB0aGUgc2VydmljZSBhbmQgcm91dGU6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08" + + "ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT12YW5pdHktZ2F0ZXdheSB0ZW1wbGF0" + + "ZQpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9dmFuaXR5" + + "LWdhdGV3YXkgc3luYwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9y" + + "IHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBgYAoKVmVyaWZ5IHRoZSByb3V0ZSBvbmx5IHdo" + + "ZW4gdGhlIGFkZG9uIGlzIHByZXNlbnQgYW5kIGVuYWJsZWQ6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0" + + "IGRlcGxveSxzdmMgLW4gbnZjZiAtbCBhcHAua3ViZXJuZXRlcy5pby9uYW1lPXZhbml0eS1nYXRl" + + "d2F5Cmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgLWkgdmFuaXR5CmN1cmwgLUggIkhv" + + "c3Q6IHZhbml0eS48ZG9tYWluPiIgImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPi9oZWFsdGgiCmBg" + + "YAoKRG8gbm90IGVuYWJsZSBWYW5pdHkgR2F0ZXdheSBmb3Igc3RhbmRhcmQgQVBJLCBBUEkgS2V5" + + "cywgaW52b2NhdGlvbiwgTExNCmludm9jYXRpb24sIG9yIGdSUEMgdHJhZmZpYy4gVGhvc2Ugcm91" + + "dGVzIGFyZSBwcm92aWRlZCBieSB0aGUgYmFzZSBnYXRld2F5CnJvdXRlcy4KCiMjIyA3LiBFbmFi" + + "bGUgTlZDRiBVSSAob3B0aW9uYWwpCgpOVkNGIFVJIGlzIGFuIG9wdGlvbmFsLCBjdXN0b21lci1m" + + "YWNpbmcgYWRtaW4tcGFuZWwgVUkuIEl0IGlzIGRpc2FibGVkIGJ5CmRlZmF1bHQgYW5kIGF2YWls" + + "YWJsZSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRoYXQgaW5jbHVkZSB0aGUgTlZDRiBVSSBhZGRv" + + "bi4gSWYKeW91ciBleHRyYWN0ZWQgc3RhY2sgcGFja2FnZSBkb2VzIG5vdCBjb250YWluIGEgYG52" + + "Y2YtdWlgIHJlbGVhc2UgYW5kIGBudmNmVWlgCnJvdXRlIHZhbHVlcywgc2tpcCB0aGlzIHNlY3Rp" + + "b24uIFRoZSBOVkNGIFVJIGFkbWluIHBhbmVsIGlzIGN1cnJlbnRseQp1bmF1dGhlbnRpY2F0ZWQ7" + + "IGRvIG5vdCBleHBvc2UgaXQgdG8gdGhlIHB1YmxpYyBpbnRlcm5ldC4KCkZvciBlbmFibGVtZW50" + + "LCBuYW1lc3BhY2UgYW5kIHB1bGwgc2VjcmV0IHNldHVwLCBhcHBseSwgYW5kIHZlcmlmaWNhdGlv" + + "biBzdGVwcywKc2VlIFtOVkNGIFVJIEFkZG9uXShyZWZlcmVuY2VzL252Y2YtdWktYWRkb24ubWQp" + + "LgoKIyMjIDguIEluc3RhbGwgdGhlIHNlcGFyYXRlIGNvbXB1dGUtcGxhbmUgc3RhY2sKClRoZSBj" + + "b250cm9sLXBsYW5lIHN0YWNrIGRvZXMgbm90IGluc3RhbGwgY29tcHV0ZS1wbGFuZSBjb21wb25l" + + "bnRzLiBBZnRlciBpdCBpcyBoZWFsdGh5LCBjaG9vc2UgZXhhY3RseSBvbmUgY29tcHV0ZS1wbGFu" + + "ZSBoYW5kb2ZmOgoKLSBIZWxtZmlsZSB2YWx1ZXMgZmxvdzogYXV0aG9yIHNlcGFyYXRlIGVudmly" + + "b25tZW50IGZpbGVzLCB0aGVuIHJlZ2lzdGVyIGFuZAogIGluc3RhbGwgd2l0aCB0aGUgY29tcHV0" + + "ZS1wbGFuZSBNYWtlZmlsZS4KLSBDTEkgcHJvZmlsZSBmbG93OiB1c2UgdGhlIHByb2ZpbGUgZ2Vu" + + "ZXJhdGVkIGJ5IHRoZSBDTEkgY29udHJvbC1wbGFuZSBpbnN0YWxsLAogIHRoZW4gcnVuIHRoZSBj" + + "b21wbGV0ZSBDTEkgcmVnaXN0ZXIgYW5kIGluc3RhbGwgY29tbWFuZHMuCgpEbyBub3QgbWl4IHRo" + + "ZXNlIGhhbmRvZmZzLiBGb2xsb3cgW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShy" + + "ZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKQpmb3IgY29tbWFuZHMsIEVL" + + "UyByb3V0aW5nLCBwdWxsIHNlY3JldHMsIHZlcmlmaWNhdGlvbiwgYW5kIHRlYXJkb3duIG9yZGVy" + + "LgoKIyMgQ2xlYW4gVGVhcmRvd24KCkRlc3Ryb3kgZXZlcnkgY29tcHV0ZSBwbGFuZSBiZWZvcmUg" + + "dGhlIGNvbnRyb2wgcGxhbmUsIHVzaW5nIHRoZSB0ZWFyZG93biBmb3IKdGhlIHNhbWUgaGFuZG9m" + + "Zjsgc2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21w" + + "dXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCN0ZWFyZG93bikuCgpTY29wZTogT25seSBkZXN0cm95" + + "IHJlbGVhc2VzIG1hbmFnZWQgYnkgdGhpcyBjb250cm9sLXBsYW5lIGhlbG1maWxlIHN0YWNrLiBU" + + "aGUgTlZDRiByZWxlYXNlcyBhcmU6IGBuYXRzYCwgYG9wZW5iYW8tc2VydmVyYCwgYGNhc3NhbmRy" + + "YWAsIGBhcGkta2V5c2AsIGBzaXNgLCBgYXBpYCwgYGludm9jYXRpb24tc2VydmljZWAsIGBncnBj" + + "LXByb3h5YCwgYGVzcy1hcGlgLCBgbm90YXJ5LXNlcnZpY2VgLCBvcHRpb25hbCBgdmFuaXR5LWdh" + + "dGV3YXlgLCBgbnZjZi11aWAsIGBhZG1pbi1pc3N1ZXItcHJveHlgLCBhbmQgYGluZ3Jlc3NgOyBg" + + "Y2VydC1tYW5hZ2VyYCBpcyBpbmNsdWRlZCBvbmx5IHdoZW4gYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6" + + "IHRydWVgLiBUaGUgY29udHJvbC1wbGFuZSBuYW1lc3BhY2UgaW52ZW50b3J5IGFsc28gaW5jbHVk" + + "ZXMgYGNlcnQtbWFuYWdlcmAsIGJ1dCBkZWZhdWx0IG5hbWVzcGFjZSBjbGVhbnVwIHByZXNlcnZl" + + "cyBpdC4gTmFtZXNwYWNlIHByZXNlcnZhdGlvbiBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgSGVsbSBy" + + "ZWxlYXNlLiBFeHRlcm5hbCBjZXJ0LW1hbmFnZXIgbXVzdCB1c2UgYGNlcnRNYW5hZ2VyLmVuYWJs" + + "ZWQ6IGZhbHNlYDsgb3RoZXJ3aXNlIEhlbG1maWxlIHRyZWF0cyB0aGUgcmVsZWFzZSBhcyBzdGFj" + + "ay1tYW5hZ2VkLiBEbyBub3QgZGVsZXRlIG90aGVyIGhlbG0gcmVsZWFzZXMgb3IgbmFtZXNwYWNl" + + "cyBvbiB0aGUgY2x1c3Rlci4KCkJlZm9yZSBjb250cm9sLXBsYW5lIGRlc3Ryb3ksIGlkZW50aWZ5" + + "IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLiBGb3IgYW4gZXh0ZXJuYWwgaW5zdGFs" + + "bGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgIGFu" + + "ZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxl" + + "YXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5IG1h" + + "dGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQgYWJvcnQgb24gbWlzc2luZyBv" + + "ciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBQcmVzZXJ2ZSB0aGUgbmFtZXNwYWNlIGJ5IGRlZmF1bHQ7" + + "IG9ubHkgcGxhbiBpdHMgcmVtb3ZhbCBhZnRlciB2ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFu" + + "Y2UgYW5kIGdldHRpbmcgZXhwbGljaXQgY29uZmlybWF0aW9uLgoKIyMjIFN0YW5kYXJkIHRlYXJk" + + "b3duCgpSdW4gZnJvbSBpbnNpZGUgdGhlIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFjay9gIGRpcmVj" + + "dG9yeToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgZGVzdHJveQpg" + + "YGAKCiMjIyBEZWxldGUgbmFtZXNwYWNlcwoKYGBgYmFzaApmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5" + + "c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgbnZjZi11aSB2YXVsdC1zeXN0" + + "ZW07IGRvCiAga3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlICIkbnMiIC0taWdub3JlLW5vdC1mb3Vu" + + "ZApkb25lCmBgYAoKIyMjIFZlcmlmeSBjbGVhbgoKYGBgYmFzaAprdWJlY3RsIGdldCBucyB8IGdy" + + "ZXAgLUUgJyhjYXNzYW5kcmF8bmF0c3x2YXVsdHxudmNmfGFwaS1rZXlzfGVzc3xzaXMpJwojIFNo" + + "b3VsZCByZXR1cm4gZW1wdHkKYGBgCgojIyBPdmVycmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzCgoj" + + "IyMgRW52aXJvbm1lbnQgZmlsZSAobGltaXRlZCkKCldvcmtzIG9ubHkgZm9yIGtleXMgdGhhdCBg" + + "Z2xvYmFsLnlhbWwuZ290bXBsYCBwcm9wYWdhdGVzIChlLmcuLCBgY2Fzc2FuZHJhLnJlcGxpY2FD" + + "b3VudGAsIGBnbG9iYWwuc3RvcmFnZUNsYXNzYCwgYGdsb2JhbC5pbWFnZWApLgoKIyMjIFJlbGVh" + + "c2UgdmFsdWVzIGJsb2NrIChhbnkgY2hhcnQgdmFsdWUpCgpFZGl0IHRoZSByZWxlYXNlIGluIGBo" + + "ZWxtZmlsZS5kLyoueWFtbC5nb3RtcGxgIGFuZCBhZGQgYSBgdmFsdWVzOmAgYmxvY2suIEluIHRo" + + "ZSBleGFtcGxlcyBiZWxvdywgYDxwcml2YXRlLXZhbHVlcz5gIHJlZmVycyB0byB0aGUgYHNlY3Jl" + + "dHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxlIHN0YWNrIHJvb3QuCgpgYGB5YW1sCi0gbmFt" + + "ZTogY2Fzc2FuZHJhCiAgdmVyc2lvbjogMC44LjAKICBjb25kaXRpb246IGNhc3NhbmRyYS5lbmFi" + + "bGVkCiAgbmFtZXNwYWNlOiBjYXNzYW5kcmEtc3lzdGVtCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFs" + + "dWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVz" + + "Pi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwKICAgIC0gY2Fz" + + "c2FuZHJhOgogICAgICAgIHJlc291cmNlczoKICAgICAgICAgIGxpbWl0czoKICAgICAgICAgICAg" + + "Y3B1OiAiOCIKICAgICAgICAgICAgbWVtb3J5OiA4MTkyTWkKICAgICAgICAgIHJlcXVlc3RzOgog" + + "ICAgICAgICAgICBjcHU6ICIyIgogICAgICAgICAgICBtZW1vcnk6IDQwOTZNaQpgYGAKCllBTUwg" + + "bWVyZ2UgZ290Y2hhOiBXaGVuIGEgcmVsZWFzZSB1c2VzIGA8PDogKmRlcGVuZGVuY3lgIG9yIGBp" + + "bmhlcml0YCwgc3BlY2lmeWluZyBgdmFsdWVzOmAgcmVwbGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFs" + + "dWVzIGxpc3QuIFlvdSBtdXN0IHJlLWluY2x1ZGUgYGdsb2JhbC55YW1sLmdvdG1wbGAgYW5kIHRo" + + "ZSBzZWNyZXRzIGZpbGUuCgojIyMgUHJldmlldyBhbmQgYXBwbHkgYSBzaW5nbGUgcmVsZWFzZQoK" + + "YGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3Nh" + + "bmRyYSB0ZW1wbGF0ZSAgIyBQcmV2aWV3CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + + "bGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMgICAgICAjIEFwcGx5CmBgYAoKIyMgSW1hZ2UgUHVs" + + "bCBTZWNyZXRzCgpUaGVyZSBhcmUgdGhyZWUgZGlzdGluY3QgY3JlZGVudGlhbCB0eXBlcy4gRG8g" + + "bm90IGNvbmZsYXRlIHRoZW0sIGFuZCBtaW5kIHRoZQpmb3JtYXQgcnVsZSBiZWxvdyAodHdvIG9m" + + "IHRoZW0gZmFpbCBldmVuIHdpdGggdGhlIGNvcnJlY3Qga2V5IGlmIHRoZSBmb3JtYXQgaXMgd3Jv" + + "bmcpOgoKfCB8IENvbnRyb2wgUGxhbmUgUHVsbCBTZWNyZXRzIHwgQVBJIEJvb3RzdHJhcCBSZWdp" + + "c3RyeSBDcmVkcyB8IFNpZGVjYXIgSW1hZ2UtUHVsbCBTZWNyZXQgfAp8LS0tfC0tLXwtLS18LS0t" + + "fAp8IFB1cnBvc2UgfCBLOHMgcHVsbHMgTlZDRiBzZXJ2aWNlIGltYWdlcyB8IG52Y2YtYXBpIHZh" + + "bGlkYXRlcyB0aGUgdXNlciBmdW5jdGlvbiBpbWFnZSBhdCBgZnVuY3Rpb24gY3JlYXRlYCB8IG52" + + "Y2YtYXBpIHB1bGxzIHRoZSBwbGF0Zm9ybSBzaWRlY2FycyBpbmplY3RlZCBpbnRvIGV2ZXJ5IHdv" + + "cmtlciBwb2QgfAp8IFdoZXJlIHwgSzhzIGBkb2NrZXItcmVnaXN0cnlgIFNlY3JldHMgKyBLeXZl" + + "cm5vIENsdXN0ZXJQb2xpY3kgfCBgPHByaXZhdGUtdmFsdWVzPi88ZW52Pi1zZWNyZXRzLnlhbWxg" + + "IChhY2NvdW50LWJvb3RzdHJhcCkgfCBgTlZDRl9BUElfU0lERUNBUlNfSU1BR0VfUFVMTF9TRUNS" + + "RVRgIGluIGA8ZW52Pi1zZWNyZXRzLnlhbWxgIC0+IE9wZW5CYW8gYHNlcnZpY2VzL252Y2YtYXBp" + + "L2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0YCAoZmllbGQgYHNlY3JldGApIHwKfCBGb3Jt" + + "YXQgfCBzdGFuZGFyZCBgLmRvY2tlcmNvbmZpZ2pzb25gIChrdWJlY3RsIGJ1aWxkcyBpdCBmb3Ig" + + "eW91KSB8IGBiYXNlNjQoIiRvYXV0aHRva2VuOjxrZXk+IilgIHwgYGJhc2U2NCgiJG9hdXRodG9r" + + "ZW46PGtleT4iKWAgfAoKPiBOb3RlOiB0aGUgYWNjb3VudC1ib290c3RyYXAgY3JlZCBhbmQgdGhl" + + "IHNpZGVjYXIgc2VjcmV0IGFyZSBOT1QgYQo+IGRvY2tlcmNvbmZpZ2pzb24uIFRoZSBzZWNyZXRz" + + "IHRlbXBsYXRlIHNoaXBzIHRoZSBwbGFjZWhvbGRlcgo+IGBSRVBMQUNFX1dJVEhfQkFTRTY0X0RP" + + "Q0tFUl9DUkVERU5USUFMYCwgd2hpY2ggcmVhZHMgYXMgImJhc2U2NCBvZiBhIGRvY2tlcmNvbmZp" + + "Z2pzb24uIgo+IEl0IGlzbid0LiBCb3RoIHZhbHVlcyBhcmUgY29uc3VtZWQgYXMgYSByYXcgZG9j" + + "a2VyIGBhdXRoYCBzdHJpbmc6IG52Y2YtYXBpIHRha2VzIHRoZQo+IHZhbHVlIHZlcmJhdGltIGFu" + + "ZCBkcm9wcyBpdCBpbnRvIHRoZSBgYXV0aGAgZmllbGQgb2YgdGhlIGRvY2tlcmNvbmZpZyBpdCBi" + + "dWlsZHMuIFNvIHRoZQo+IHZhbHVlIG11c3QgYmUgYGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4i" + + "KWAsIGUuZy4gYHByaW50ZiAnJG9hdXRodG9rZW46JXMnICIkS0VZIiB8IG9wZW5zc2wgYmFzZTY0" + + "IC1BYCwKPiBub3QgYGJhc2U2NCg8ZG9ja2VyY29uZmlnanNvbj4pYC4KPgo+IC0gV3JvbmcgYWNj" + + "b3VudC1ib290c3RyYXAgdmFsdWU6IGBmdW5jdGlvbiBjcmVhdGVgIHJldHVybnMKPiAgICBgNDAw" + + "ICJtdXN0IGJlIGJhc2U2NCBlbmNvZGVkIHVzZXJuYW1lOnBhc3N3b3JkIGZvcm1hdCJgLgo+IC0g" + + "V3Jvbmcgc2lkZWNhciB2YWx1ZTogZXZlcnkgd29ya2VyJ3Mgc2lkZWNhciBwdWxsIGdldHMgYSBt" + + "YWxmb3JtZWQgY3JlZGVudGlhbCBhbmQKPiAgICBgNDAzYHMsIHJlZ2FyZGxlc3Mgb2Ygd2hpY2gg" + + "a2V5IGlzIGluc2lkZS4gVGhlIHN5bXB0b20gbG9va3MgbGlrZSBhIGJhZCBvciB3cm9uZy1vcmcK" + + "PiAgICBrZXksIGJ1dCB0aGUga2V5IGlzIGZpbmUgYW5kIHRoZSBlbmNvZGluZyBpcyB0aGUgYnVn" + + "LiBUbyByZXBhaXIgYW4gYWxyZWFkeS1pbnN0YWxsZWQKPiAgICBzdGFjayB3aXRob3V0IGEgZnVs" + + "bCByZS1zeW5jOgo+Cj4gICAgYGBgYmFzaAo+ICAgIEFVVEg9JChwcmludGYgJyRvYXV0aHRva2Vu" + + "OiVzJyAiJEtFWSIgfCBvcGVuc3NsIGJhc2U2NCAtQSkKPiAgICBiYW8ga3YgcHV0IHNlcnZpY2Vz" + + "L252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0IHNlY3JldD0iJEFVVEgiCj4g" + + "ICAgIyBpZiBOVklESUEgQ2xvdWQgVGFza3MgaXMgZW5hYmxlZCwgcmVwZWF0IGZvciBzZXJ2aWNl" + + "cy9udmN0LWFwaS9rdi9zaWRlY2Fycy9pbWFnZS1wdWxsLXNlY3JldAo+ICAgIGt1YmVjdGwgcm9s" + + "bG91dCByZXN0YXJ0IC1uIG52Y2YgZGVwbG95L252Y2YtYXBpICAgIyBwaWNrcyB1cCB0aGUgbmV3" + + "IHNpZGVjYXIgY3JlZAo+ICAgIGBgYAo+Cj4gTm90ZSAobXVsdGktb3JnKTogd2hlbiBwdWxsaW5n" + + "IGZyb20gTkdDIChub3QgYSBtaXJyb3IpLCB0aGUgdXNlciBmdW5jdGlvbiBpbWFnZSBhbmQKPiB0" + + "aGUgcGxhdGZvcm0gc2lkZWNhcnMgb2Z0ZW4gbGl2ZSBpbiBkaWZmZXJlbnQgbnZjci5pbyBvcmdz" + + "LCBlYWNoIG5lZWRpbmcgYSBkaWZmZXJlbnQKPiBrZXksIHNvIHRoZSBhY2NvdW50LWJvb3RzdHJh" + + "cCBjcmVkIChmdW5jdGlvbiBpbWFnZSkgYW5kIHRoZSBzaWRlY2FyIHNlY3JldCAoc2lkZWNhcnMp" + + "Cj4gYXJlIGZyZXF1ZW50bHkgdHdvIGRpZmZlcmVudCBrZXlzLiBNaXJyb3JpbmcgZXZlcnl0aGlu" + + "ZyBpbnRvIGEgc2luZ2xlIHJlZ2lzdHJ5IHRoZQo+IGNsdXN0ZXIgYXV0aGVudGljYXRlcyB0byBh" + + "dXRvbWF0aWNhbGx5IGNvbGxhcHNlcyB0aGlzIHRvIG9uZSBjcmVkZW50aWFsIHBhdGguCgojIyMg" + + "Q29uZmlndXJpbmcgd2l0aCBLeXZlcm5vIChyZWNvbW1lbmRlZCkKClVzZSBhIEt5dmVybm8gbXV0" + + "YXRpbmcgYWRtaXNzaW9uIHBvbGljeSB0byBhdXRvbWF0aWNhbGx5IGluamVjdCBgaW1hZ2VQdWxs" + + "U2VjcmV0c2AgaW50byBhbGwgcG9kcyBpbiBOVkNGIG5hbWVzcGFjZXMuIFRoaXMgd29ya3MgdW5p" + + "Zm9ybWx5IGZvciBhbGwgY2hhcnRzIC0tIG5vIHBlci1jaGFydCBjb25maWd1cmF0aW9uIG9yIGhl" + + "bG1maWxlIG1vZGlmaWNhdGlvbnMgbmVlZGVkLgoKYGBgYmFzaAojIDEuIEluc3RhbGwgS3l2ZXJu" + + "bwpoZWxtIHJlcG8gYWRkIGt5dmVybm8gaHR0cHM6Ly9reXZlcm5vLmdpdGh1Yi5pby9reXZlcm5v" + + "LwpoZWxtIHJlcG8gdXBkYXRlCmhlbG0gaW5zdGFsbCBreXZlcm5vIGt5dmVybm8va3l2ZXJubyAt" + + "biBreXZlcm5vIC0tY3JlYXRlLW5hbWVzcGFjZQoKIyAyLiBDcmVhdGUgcHVsbCBzZWNyZXQgaW4g" + + "ZWFjaCBuYW1lc3BhY2UKZXhwb3J0IE5HQ19BUElfS0VZPSI8eW91ci1rZXk+Igpmb3IgbnMgaW4g" + + "Y2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQt" + + "c3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJl" + + "Z2lzdHJ5IG52Y3ItY3JlZHMgXAogICAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogICAgLS1k" + + "b2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgICAtLWRvY2tlci1wYXNzd29yZD0iJE5H" + + "Q19BUElfS0VZIiBcCiAgICAtLW5hbWVzcGFjZT0iJG5zIiBcCiAgICAtLWRyeS1ydW49Y2xpZW50" + + "IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KZG9uZQoKIyAzLiBBcHBseSB0aGUgS3l2ZXJu" + + "byBDbHVzdGVyUG9saWN5Cmt1YmVjdGwgYXBwbHkgLWYga3l2ZXJuby1pbWFnZXB1bGxzZWNyZXQt" + + "cG9saWN5LnlhbWwKYGBgCgpUaGUgcG9saWN5IG11dGF0ZXMgZXZlcnkgcG9kIGF0IGFkbWlzc2lv" + + "biB0aW1lLCBhZGRpbmcgYGltYWdlUHVsbFNlY3JldHM6IFt7bmFtZTogbnZjci1jcmVkc31dYC4g" + + "VmVyaWZ5IHdpdGg6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9k" + + "LW5hbWU+IC1vIGpzb25wYXRoPSd7LnNwZWMuaW1hZ2VQdWxsU2VjcmV0c30nCiMgU2hvdWxkIHNo" + + "b3c6IFt7Im5hbWUiOiJudmNyLWNyZWRzIn1dCmBgYAoKTm90IG5lZWRlZCBpZiB1c2luZyBhIENT" + + "UCBidWlsdC1pbiBjcmVkZW50aWFsIGhlbHBlciAoZS5nLiwgRUNSIHdpdGggSUFNIG5vZGUgcm9s" + + "ZXMpLgoKRm9yIHRoZSBLeXZlcm5vIHBvbGljeSBZQU1MIGFuZCBwdWxsIHNlY3JldCBjcmVhdGlv" + + "biBzY3JpcHQsIHNlZSBbcmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWRdKHJlZmVyZW5jZXMvcHVs" + + "bC1zZWNyZXRzLm1kKS4KCiMjIERlYnVnZ2luZwoKIyMjIFF1aWNrIHN0YXR1cyBjaGVjawoKYGBg" + + "YmFzaAprdWJlY3RsIGdldCBwb2RzIC1BIC1vIHdpZGUgICAgICAgICAgICAgICAgICAgICAgICAj" + + "IEFsbCBwb2RzCmhlbG0gbGlzdCAtQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + + "ICAgICAjIEFsbCBoZWxtIHJlbGVhc2VzCmt1YmVjdGwgZ2V0IGV2ZW50cyAtbiA8bnM+IC0tc29y" + + "dC1ieT0nLmxhc3RUaW1lc3RhbXAnICAjIFJlY2VudCBldmVudHMKYGBgCgojIyMgQ29tbW9uIGZh" + + "aWx1cmUgcGF0dGVybnMKCnwgU3ltcHRvbSB8IENhdXNlIHwgRml4IHwKfC0tLS0tLS0tLXwtLS0t" + + "LS0tfC0tLS0tfAp8IGBJbWFnZVB1bGxCYWNrT2ZmYCArIGA0MDEgVW5hdXRob3JpemVkYCB8IE1p" + + "c3Npbmcgb3Igd3JvbmcgcHVsbCBzZWNyZXQgfCBDaGVjayBzZWNyZXQgZXhpc3RzLCBjaGVjayBT" + + "QSBoYXMgaW1hZ2VQdWxsU2VjcmV0cyB8CnwgYEluaXQ6MC8xYCBzdHVjayBvbiBzZXJ2aWNlIHBv" + + "ZHMgfCBWYXVsdC1hZ2VudCB3YWl0aW5nIGZvciBPcGVuQmFvIHwgQ2hlY2sgT3BlbkJhbyBwb2Rz" + + "ICsgbWlncmF0aW9uIGpvYiBzdGF0dXMgfAp8IGBJbml0OjAvMWAgKyBgdmF1bHQtYWdlbnQtaW5p" + + "dGAgc2hvd3MgYGF1dGgvand0L2xvZ2luYCAtPiBgNDAwIC4uLiBubyBrbm93biBrZXkgc3VjY2Vz" + + "c2Z1bGx5IHZhbGlkYXRlZCB0aGUgdG9rZW4gc2lnbmF0dXJlYCB8IE9wZW5CYW8gSldUIGF1dGgg" + + "Y29uZmlndXJlZCB3aXRoIGEgc3RhdGljIHB1YmtleSBpbnN0ZWFkIG9mIHRoZSBjbHVzdGVyJ3Mg" + + "bGl2ZSBKV0tTIC0tIHRoZSBiYXNlIGRlZmF1bHQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJE" + + "aXNjb3ZlcnkuZW5hYmxlZDogZmFsc2VgLiBDb21tb24gb24gQUtTIC8gYW55IE9JREMtaXNzdWVy" + + "IGNsdXN0ZXIgfCBTZXQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxl" + + "ZDogdHJ1ZWAsIGRlbGV0ZSBqb2IgYG9wZW5iYW8tc2VydmVyLW1pZ3JhdGlvbnNgLCByZS1zeW5j" + + "IGBvcGVuYmFvLXNlcnZlcmAuIFNlZSBbcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRdKHJlZmVyZW5j" + + "ZXMvZGVidWdnaW5nLm1kKSAiSW5pdDowLzEgU3R1Y2siIGZpeCAjNC4gfAp8IGBPT01LaWxsZWRg" + + "IG9uIENhc3NhbmRyYSB8IERlZmF1bHQgcmVzb3VyY2VzIHRvbyBzbWFsbCB8IE92ZXJyaWRlIGBj" + + "YXNzYW5kcmEucmVzb3VyY2VzYCB2aWEgdmFsdWVzIGJsb2NrIHwKfCBEQi1iYWNrZWQgc2Vydmlj" + + "ZXMgY3Jhc2gtbG9vcCBgQmFkIGNyZWRlbnRpYWxzYCBjb25uZWN0aW5nIHRvIENhc3NhbmRyYSB8" + + "IFNlY3JldHMgZmlsZSBzZXQgb25seSBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgOyBgY2Fz" + + "c2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHN0aWxsIGRlZmF1bHRzIHRvIGBjaEBuZzNtM2Ag" + + "fCBTZXQgYGNhc3NhbmRyYS5zZXJ2aWNlUm9sZVBhc3N3b3JkYCBpbiB0aGUgc2VjcmV0cyBmaWxl" + + "IGVxdWFsIHRvIGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAsIHRoZW4gcmUtc3luYyBjYXNz" + + "YW5kcmEgKyB0aGUgREItYmFja2VkIHNlcnZpY2VzIHwKfCBgUGVuZGluZ2AgcG9kcyB8IE5vZGUg" + + "c2VsZWN0b3IgbWlzbWF0Y2ggb3Igbm8gc3RvcmFnZSBjbGFzcyB8IGBrdWJlY3RsIGRlc2NyaWJl" + + "IHBvZGAsIGNoZWNrIGxhYmVscyBhbmQgc3RvcmFnZSB8CnwgSGVsbSByZWxlYXNlIGluIGBmYWls" + + "ZWRgIHN0YXRlIHwgRmlyc3QgaW5zdGFsbCBmYWlsZWQgcGFydHdheSB8IGBoZWxtZmlsZSBkZXN0" + + "cm95YCB0aGUgcmVsZWFzZSwgdGhlbiBgc3luY2AgYWdhaW4gfAp8IEFjY291bnQgYm9vdHN0cmFw" + + "IHRpbWVvdXQgfCBXcm9uZyBiYXNlNjQgY3JlZGVudGlhbHMgaW4gc2VjcmV0cyBmaWxlIHwgQ2hl" + + "Y2sgYGt1YmVjdGwgbG9ncyBqb2IvbnZjZi1hcGktYWNjb3VudC1ib290c3RyYXAgLW4gbnZjZmAg" + + "fAp8IGZ1bmN0aW9uIC8gYWNjb3VudCBjYWxscyByZXR1cm4gYDQwNCBVbmtub3duIGNsaWVudF9p" + + "ZGAgfCBUaGUgYWNjb3VudC1ib290c3RyYXAgcG9zdC1pbnN0YWxsIGhvb2sgbmV2ZXIgcmFuOiB0" + + "aGUgYGFwaWAgcmVsZWFzZSBpbnN0YWxsIGZhaWxlZCwgb3Igd2FzIHJlcGFpcmVkIHdpdGggbGl2" + + "ZSBwYXRjaGVzIGluc3RlYWQgb2YgYSBjbGVhbiByZS1zeW5jLCBzbyB0aGUgaG9vayAoYW5kIHRo" + + "ZSBhY2NvdW50KSB3YXMgc2tpcHBlZCB8IFZlcmlmeSBhbmQgcmUtcnVuIHRoZSBob29rOyBzZWUg" + + "W1ZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAgcmFuXSgjdmVyaWZ5LXRoZS1hY2NvdW50LWJv" + + "b3RzdHJhcC1yYW4pIHwKfCBTZXJ2aWNlcyBmYWlsIHRvIHJlYWQgdmF1bHQgc2VjcmV0czsgYHNl" + + "Y3JldHMuanNvbmAgbm90IGZvdW5kIHwgVmF1bHQgcGF0aCBoYXJkY29kZWQgdG8gYC9ob21lL2Fw" + + "cC92YXVsdC9gIGluIGBfaGVscGVycy50cGxgOyB0aGUgcnVudGltZSByZXNvbHZlcyB0aGUgbW91" + + "bnRlZCBwYXRoIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBhbmQgZHJvcHMgdGhl" + + "IGxlYWRpbmcgYC9gIHwgT3ZlcnJpZGUgYHBvZEFubm90YXRpb25zYCBhbmQgc2V0IGBKQVZBX1RP" + + "T0xfT1BUSU9OUzogIi1EdXNlci5kaXI9LyJgIGluIHJlbGVhc2UgdmFsdWVzIHwKfCBOQVRTIGNv" + + "bm5lY3Rpb24gZmFpbHMgYXQgc3RhcnR1cDsgcGxhY2VtZW50IHRhZyBtaXNtYXRjaCB8IE5BVFMg" + + "c2VydmVyIHRhZ3MgaGFyZGNvZGVkIHRvIGBkYzpuY3BgOyBhcHAgZGVyaXZlcyB0YWcgZnJvbSBg" + + "QVdTX1JFR0lPTmAgKGUuZy4sIGB1cy1nb3Ytd2VzdC0xYCkgfCBTZXQgYEFXU19SRUdJT049bmNw" + + "YCBhbmQgYE5WQ0ZfQVdTX1JFR0lPTj1uY3BgIGluIGVudiBjb25maWcgfAoKIyMjIFZlcmlmeSB0" + + "aGUgYWNjb3VudCBib290c3RyYXAgcmFuCgpUaGUgZGVmYXVsdCBhY2NvdW50IGlzIGNyZWF0ZWQg" + + "YnkgYSAqKmBwb3N0LWluc3RhbGxgIGhvb2sgb24gdGhlIGBhcGlgIHJlbGVhc2UqKgooYGpvYi9u" + + "dmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcGAgaW4gYG52Y2ZgKS4gQmVjYXVzZSBpdCBpcyBhIHBv" + + "c3QtaW5zdGFsbCBob29rLCBpdCBvbmx5CmZpcmVzIG9uIGEgc3VjY2Vzc2Z1bCBgYXBpYCBpbnN0" + + "YWxsLiBJZiB0aGF0IGluc3RhbGwgZmFpbGVkIGFuZCB5b3UgcmVwYWlyZWQgaXQgd2l0aCBsaXZl" + + "CnBhdGNoZXMgKHJhdGhlciB0aGFuIGEgY2xlYW4gcmUtc3luYyksIHRoZSBob29rIG5ldmVyIHJ1" + + "bnMsIG5vIGFjY291bnQgaXMgY3JlYXRlZCwgYW5kCmV2ZXJ5IHN1YnNlcXVlbnQgZnVuY3Rpb24v" + + "YWNjb3VudCBjYWxsIHJldHVybnMgYSBjcnlwdGljIGA0MDQgVW5rbm93biBjbGllbnRfaWRgIHdp" + + "dGgKbm90aGluZyBvYnZpb3VzbHkgd3JvbmcgaW4gdGhlIHJ1bm5pbmcgcG9kcy4KClZlcmlmeSBp" + + "dCByYW4gYWZ0ZXIgdGhlIGZpcnN0IHN5bmM6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGpvYiAtbiBu" + + "dmNmIG52Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIFwKICAtbyBqc29ucGF0aD0ney5zdGF0dXMu" + + "c3VjY2VlZGVkfScgICAjIGV4cGVjdCAxCmBgYAoKSWYgdGhlIGpvYiBpcyBhYnNlbnQgb3IgYDBg" + + "LCByZS1ydW4gaXQgYnkgcmUtc3luY2luZyB0aGUgYGFwaWAgcmVsZWFzZSBzbyB0aGUgaG9vayBm" + + "aXJlcwphZ2FpbiAoZGVsZXRlIHRoZSBwcmlvciBqb2IgZmlyc3QgaWYgaXQgbGluZ2VycyBpbiBh" + + "IGNvbXBsZXRlZC9mYWlsZWQgc3RhdGUgYW5kIGJsb2NrcyB0aGUKaG9vayk6CgpgYGBiYXNoCmt1" + + "YmVjdGwgZGVsZXRlIGpvYiAtbiBudmNmIG52Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIC0taWdu" + + "b3JlLW5vdC1mb3VuZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1l" + + "PWFwaSBzeW5jCmt1YmVjdGwgbG9ncyAtbiBudmNmIGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3Rz" + + "dHJhcCAgICMgY29uZmlybSB0aGUgYWNjb3VudCB3YXMgY3JlYXRlZApgYGAKCiMjIEFkZGl0aW9u" + + "YWwgUmVzb3VyY2VzCgotIEluc3RhbGxhdGlvbjogW2V4YW1wbGVzLm1kXShleGFtcGxlcy5tZCks" + + "IHRoZSBbQ1NQIEVuZC10by1FbmQgRXhhbXBsZV0oaHR0cHM6Ly9kb2NzLm52aWRpYS5jb20vbnZj" + + "Zi92MC42LjAtcmMvY3NwLWVuZC10by1lbmQtZXhhbXBsZSksIGFuZCBbc3BsaXQgY29tcHV0ZS1w" + + "bGFuZSB3b3JrZmxvd3NdKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQp" + + "Ci0gT3BlcmF0aW9uczogW0hlbG1maWxlIHN0cnVjdHVyZV0ocmVmZXJlbmNlcy9oZWxtZmlsZS1z" + + "dHJ1Y3R1cmUubWQpLCBbcHVsbCBzZWNyZXRzXShyZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCks" + + "IGFuZCBbZGVidWdnaW5nXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCkKCkFmdGVyIGRlcGxveW1l" + + "bnQsIHVzZSB0aGUgYG52Y2Ytc2VsZi1tYW5hZ2VkLWNsaWAgc2tpbGwgdG8gY3JlYXRlIGZ1bmN0" + + "aW9ucywgY3JlYXRlIHRhc2tzLCBtYW5hZ2UgQVBJIGtleXMsIGFuZCBpbnZva2UgZW5kcG9pbnRz" + + "LgpQSwcIEcMUk0liAABJYgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA0AAkAZGF0YS9udmNm" + + "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXZhbHMvZXZhbHMuanNvblVUBQABAKbOElsKICB7" + + "CiAgICAiaWQiOiAiRzEtdmFsaWRhdGUtdG9vbC12ZXJzaW9ucyIsCiAgICAicXVlc3Rpb24iOiAi" + + "SW5zdGFsbCB0aGUgTlZDRiBzZWxmLW1hbmFnZWQgc3RhY2sgb24gbXkgQVdTIEVLUyBjbHVzdGVy" + "IiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24i" + - "LAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgcmFuIGJvdGggZG9ja2VyIGxvZ2luIGFu" + - "ZCBoZWxtIHJlZ2lzdHJ5IGxvZ2luIGZvciBudmNyLmlvLiBJdCBleHBsYWluZWQgdGhhdCBib3Ro" + - "IGFyZSByZXF1aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8g" + - "cHVsbCBPQ0kgY2hhcnRzLCBzbyBkb2NrZXIgbG9naW4gYWxvbmUgaXMgaW5zdWZmaWNpZW50LiIs" + + "LAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQncyBmaXJzdCBvcGVyYXRpb25hbCBzdGVw" + + "IGFmdGVyIHJlYWRpbmcgdGhlIHNraWxsIHdhcyB0byB2YWxpZGF0ZSBhbGwgcmVxdWlyZWQgdG9v" + + "bCB2ZXJzaW9uczogaGVsbWZpbGUgKG11c3QgYmUgMS4xLngsIG5vdCAxLjIuMCksIGhlbG0gKD49" + + "IDMuMTIpLCBoZWxtLWRpZmYgcGx1Z2luICg+PSAzLjExKSwgYW5kIGt1YmVjdGwgKGNsaWVudCB3" + + "aXRoaW4gMSBtaW5vciBvZiBjbHVzdGVyKS4gSXQgZGlkIG5vdCBwcm9jZWVkIHRvIGhlbG1maWxl" + + "IHN5bmMgdW50aWwgYWxsIHZlcnNpb25zIHdlcmUgdmFsaWRhdGVkLiIsCiAgICAiZXhwZWN0ZWRf" + + "YmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQt" + + "aW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYW55IGFjdGlvbiIsCiAgICAgICJU" + + "aGUgYWdlbnQgcmFuICdoZWxtZmlsZSAtLXZlcnNpb24nIGFuZCB2ZXJpZmllZCBpdCBpcyAxLjEu" + + "eCAobm90IDEuMi4wLCB3aGljaCByZW1vdmVkIHNlcXVlbnRpYWwgbW9kZSkiLAogICAgICAiVGhl" + + "IGFnZW50IHJhbiAnaGVsbSB2ZXJzaW9uJyBhbmQgdmVyaWZpZWQgaXQgaXMgPj0gMy4xMiIsCiAg" + + "ICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHBsdWdpbiBsaXN0JyBhbmQgdmVyaWZpZWQgaGVsbS1k" + + "aWZmID49IDMuMTEgaXMgaW5zdGFsbGVkIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2t1YmVjdGwg" + + "dmVyc2lvbicgdG8gY2hlY2sgY2xpZW50L3NlcnZlciB2ZXJzaW9uIGNvbXBhdGliaWxpdHkiLAog" + + "ICAgICAiVGhlIGFnZW50IGRpZCBub3QgcHJvY2VlZCB0byBoZWxtZmlsZSBzeW5jIHVudGlsIGFs" + + "bCB2ZXJzaW9uIGNoZWNrcyBwYXNzZWQiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzItdGVt" + + "cGxhdGUtYmVmb3JlLXN5bmMiLAogICAgInF1ZXN0aW9uIjogIlF1aWNrLCBqdXN0IHJ1biBoZWxt" + + "ZmlsZSBzeW5jIGZvciBteSBOVkNGIHN0YWNrLCBza2lwIGFsbCB0aGUgY2hlY2tzIiwKICAgICJl" + + "eHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdy" + + "b3VuZF90cnV0aCI6ICJEZXNwaXRlIHRoZSB1c2VyIGFza2luZyB0byBza2lwIGNoZWNrcywgdGhl" + + "IGFnZW50IHN0aWxsIHJhbiBoZWxtZmlsZSB0ZW1wbGF0ZSB0byBwcmV2aWV3IHJlbmRlcmVkIG1h" + + "bmlmZXN0cyBiZWZvcmUgcnVubmluZyBoZWxtZmlsZSBzeW5jLiBJdCBleHBsYWluZWQgd2h5IHRo" + + "ZSBwcmV2aWV3IHN0ZXAgaXMgaW1wb3J0YW50IGFuZCBkaWQgbm90IGJsaW5kbHkgZXhlY3V0ZSBz" + + "eW5jLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0" + + "aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcg" + + "YWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG1maWxlIHRlbXBsYXRlJyBvciAnaGVs" + + "bWZpbGUgLS1zZWxlY3RvciAuLi4gdGVtcGxhdGUnIHRvIHByZXZpZXcgbWFuaWZlc3RzIGJlZm9y" + + "ZSBzeW5jIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IGJsaW5kbHkgcnVuICdoZWxtZmlsZSBz" + + "eW5jJyB3aXRob3V0IGEgdGVtcGxhdGUgcHJldmlldyBzdGVwIiwKICAgICAgIlRoZSBhZ2VudCBl" + + "eHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAgaXMgaW1wb3J0YW50IGV2ZW4gd2hlbiBhc2tl" + + "ZCB0byBza2lwIGl0IgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc1LWRyeXJ1bi1iZWZvcmUt" + + "Y2xlYW51cCIsCiAgICAicXVlc3Rpb24iOiAiTlZDRiBuYW1lc3BhY2VzIGFyZSBzdHVjayBpbiBU" + + "ZXJtaW5hdGluZyBzdGF0ZS4gQ2xlYW4gdGhlbSB1cC4iLAogICAgImV4cGVjdGVkX3NraWxsIjog" + + "Im52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRo" + + "ZSBhZ2VudCBpZGVudGlmaWVkIHRoZSBzdHVjayBuYW1lc3BhY2VzIHdlcmUgY2F1c2VkIGJ5IGZp" + + "bmFsaXplcnMgb24gTlZDRkJhY2tlbmQgY3VzdG9tIHJlc291cmNlcy4gSXQgcmVtb3ZlZCBmaW5h" + + "bGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3VyY2VzIGZpcnN0LCB0aGVuIGNsZWFyZWQgbmFt" + + "ZXNwYWNlIGZpbmFsaXplcnMgdG8gZm9yY2UtZGVsZXRlIHRoZSBzdHVjayBuYW1lc3BhY2VzLiBJ" + + "dCBvbmx5IHRhcmdldGVkIE5WQ0YtbWFuYWdlZCBuYW1lc3BhY2VzIChudmNhLW9wZXJhdG9yLCBu" + + "dmNmLWJhY2tlbmQpIGFuZCBkaWQgbm90IHRvdWNoIG90aGVyIGNsdXN0ZXIgcmVzb3VyY2VzLiIs" + "CiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZj" + "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9u" + - "IiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2RvY2tlciBsb2dpbiBudmNyLmlvJyB3aXRoICRvYXV0" + - "aHRva2VuIHVzZXJuYW1lIGFuZCBOR0NfQVBJX0tFWSBwYXNzd29yZCIsCiAgICAgICJUaGUgYWdl" + - "bnQgcmFuICdoZWxtIHJlZ2lzdHJ5IGxvZ2luIG52Y3IuaW8nIHdpdGggJG9hdXRodG9rZW4gdXNl" + - "cm5hbWUgYW5kIE5HQ19BUElfS0VZIHBhc3N3b3JkIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWlu" + - "ZWQgdGhhdCBib3RoIGFyZSByZXF1aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90" + - "IGRvY2tlcikgdG8gcHVsbCBPQ0kgY2hhcnRzIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHBy" + - "b3ZpZGUgb25seSBvbmUgb2YgdGhlIHR3byBhdXRoZW50aWNhdGlvbiBjb21tYW5kcyIKICAgIF0K" + - "ICB9LAogIHsKICAgICJpZCI6ICJHOS1taXNzaW5nLWJ1bmRsZSIsCiAgICAicXVlc3Rpb24iOiAi" + - "UnVuIGhlbG1maWxlIHN5bmMgZm9yIE5WQ0YgaW4gbXkgY3VycmVudCBkaXJlY3RvcnkiLAogICAg" + - "ImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAi" + - "Z3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBhdHRlbXB0ZWQgdG8gdmVyaWZ5IHRoZSBidW5kbGUg" + - "c3RydWN0dXJlIChoZWxtZmlsZS5kLywgZW52aXJvbm1lbnRzLywgc2VjcmV0cy8sIGdsb2JhbC55" + - "YW1sLmdvdG1wbCkgYW5kIHdoZW4gZmlsZXMgd2VyZSBub3QgZm91bmQsIHN0b3BwZWQgYW5kIGlu" + - "c3RydWN0ZWQgdGhlIHVzZXIgdG8gZXh0cmFjdCBvciBsb2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5h" + - "Z2VkLXN0YWNrIGJ1bmRsZS4gSXQgZGlkIG5vdCBhdHRlbXB0IHRvIHJ1biBoZWxtZmlsZSBzeW5j" + - "IGFnYWluc3QgYSBtaXNzaW5nIGJ1bmRsZS4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwog" + - "ICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBT" + - "S0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBm" + - "b3IgZXhwZWN0ZWQgYnVuZGxlIHN0cnVjdHVyZSAoaGVsbWZpbGUuZC8sIGVudmlyb25tZW50cy8s" + - "IHNlY3JldHMvLCBnbG9iYWwueWFtbC5nb3RtcGwpIiwKICAgICAgIldoZW4gYnVuZGxlIGZpbGVz" + - "IHdlcmUgbm90IGZvdW5kLCB0aGUgYWdlbnQgc3RvcHBlZCBhbmQgZGlkIG5vdCBhdHRlbXB0IGhl" + - "bG1maWxlIHN5bmMiLAogICAgICAiVGhlIGFnZW50IGluc3RydWN0ZWQgdGhlIHVzZXIgdG8gZXh0" + - "cmFjdCBvciBsb2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrIGJ1bmRsZSIKICAgIF0K" + - "ICB9LAogIHsKICAgICJpZCI6ICJTMS1jbGVhbi1pbnN0YWxsYXRpb24iLAogICAgInF1ZXN0aW9u" + - "IjogIlBlcmZvcm0gYSBjbGVhbiBpbnN0YWxsYXRpb24gb2YgdGhlIE5WQ0Ygc2VsZi1tYW5hZ2Vk" + - "IHN0YWNrIG9uIG15IEFXUyBFS1MgY2x1c3Rlci4gTXkgZW52aXJvbm1lbnQgbmFtZSBpcyAnc3Rh" + - "Z2luZycuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + - "YXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgY29tcGxldGVkIHRoZSBjb250" + - "cm9sLXBsYW5lIGluc3RhbGxhdGlvbiBmaXJzdDogdmFsaWRhdGVkIHRvb2xzIGFuZCBidW5kbGUg" + - "c3RydWN0dXJlLCBjcmVhdGVkIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNsdWRpbmcgY2Vy" + - "dC1tYW5hZ2VyLCBhdXRoZW50aWNhdGVkIHRoZSByZWdpc3RyaWVzLCBwcmV2aWV3ZWQsIGRlcGxv" + - "eWVkLCBhbmQgbW9uaXRvcmVkIHRoZSBmb3VyIGNvbnRyb2wtcGxhbmUgcGhhc2VzLiBJdCB0aGVu" + - "IHNlbGVjdGVkIG9uZSBkb2N1bWVudGVkIGhhbmRvZmYgYW5kIHJlZ2lzdGVyZWQgYW5kIGluc3Rh" + - "bGxlZCB0aGUgY29tcHV0ZSBwbGFuZSBhcyBhIHNlcGFyYXRlIHN0YWNrIHdpdGhvdXQgbWl4aW5n" + - "IHByb2ZpbGUgYW5kIEhlbG1maWxlIHZhbHVlcyBmbG93cy4iLAogICAgImV4cGVjdGVkX2JlaGF2" + - "aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + - "bGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQg" + - "dmFsaWRhdGVkIHRvb2wgdmVyc2lvbnMgKGhlbG1maWxlLCBoZWxtLCBoZWxtLWRpZmYsIGt1YmVj" + - "dGwpIiwKICAgICAgIlRoZSBhZ2VudCB2ZXJpZmllZCB0aGUgYnVuZGxlIHN0cnVjdHVyZSBleGlz" + - "dHMiLAogICAgICAiVGhlIGFnZW50IGNyZWF0ZWQgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIChj" + - "YXNzYW5kcmEtc3lzdGVtLCBuYXRzLXN5c3RlbSwgbnZjZiwgYXBpLWtleXMsIGVzcywgc2lzLCB2" + - "YXVsdC1zeXN0ZW0sIGNlcnQtbWFuYWdlcikgd2l0aG91dCBhZGRpbmcgY29tcHV0ZS1vbmx5IG5h" + - "bWVzcGFjZXMiLAogICAgICAiVGhlIGFnZW50IHJhbiAnSEVMTUZJTEVfRU5WPXN0YWdpbmcgaGVs" + - "bWZpbGUgdGVtcGxhdGUnIHRvIHByZXZpZXcgYmVmb3JlIGRlcGxveWluZyIsCiAgICAgICJUaGUg" + - "YWdlbnQgcmFuICdIRUxNRklMRV9FTlY9c3RhZ2luZyBoZWxtZmlsZSBzeW5jJyB0byBkZXBsb3ki" + - "LAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgNCBjb250cm9sLXBsYW5lIHBoYXNlcyAo" + - "ZGVwZW5kZW5jaWVzLCBzZXJ2aWNlcywgaW5ncmVzcywgb2JzZXJ2YWJpbGl0eSkgYW5kIGFwcHJv" + - "eGltYXRlIHdhaXQgdGltZXMiLAogICAgICAiQWZ0ZXIgdGhlIGNvbnRyb2wgcGxhbmUgd2FzIGhl" + - "YWx0aHksIHRoZSBhZ2VudCByZWdpc3RlcmVkIGFuZCBpbnN0YWxsZWQgdGhlIHNlcGFyYXRlIGNv" + - "bXB1dGUtcGxhbmUgc3RhY2sgdXNpbmcgZXhhY3RseSBvbmUgZG9jdW1lbnRlZCBoYW5kb2ZmIiwK" + - "ICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IG1peCBhIENMSS1nZW5lcmF0ZWQgY29udHJvbC1wbGFu" + - "ZSBwcm9maWxlIHdpdGggdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93IgogICAgXQogIH0sCiAgewog" + - "ICAgImlkIjogIlMzLWNsaS1wcm9maWxlLXdvcmtmbG93IiwKICAgICJxdWVzdGlvbiI6ICJVc2Ug" + - "bnZjZi1jbGkgdG8gaW5zdGFsbCBteSBjb250cm9sIHBsYW5lIGFuZCB0aGVuIHJlZ2lzdGVyIGFu" + - "ZCBpbnN0YWxsIGEgc2VwYXJhdGUgY29tcHV0ZSBjbHVzdGVyLiBTaG93IGV2ZXJ5IHJlcXVpcmVk" + - "IGdsb2JhbCBmbGFnLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQt" + - "aW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGZpcnN0IHJhbiB0" + - "aGUgQ0xJIGNvbnRyb2wtcGxhbmUgaW5zdGFsbCBhbmQgcmVxdWlyZWQgaXRzIGdlbmVyYXRlZCBj" + - "b250cm9sLXBsYW5lLXByb2ZpbGUueWFtbC4gSXQgdGhlbiBzaG93ZWQgY29tcGxldGUgcmVnaXN0" + - "ZXIgYW5kIGluc3RhbGwgY29tbWFuZHMsIGVhY2ggaW5jbHVkaW5nIC0tY29uZmlnLCAtLWNvbnRy" + - "b2wtcGxhbmUtc3RhY2ssIC0tY29tcHV0ZS1wbGFuZS1zdGFjaywgLS1lbnYsIGFuZCAtLXBsYWlu" + - "IGJlZm9yZSB0aGUgY29tcHV0ZS1wbGFuZSBzdWJjb21tYW5kLiBSZWdpc3RyYXRpb24gY29uc3Vt" + - "ZWQgdGhlIHByb2ZpbGUgYW5kIHByb2R1Y2VkIHRoZSB2YWx1ZXMgZmlsZSBjb25zdW1lZCBieSBp" + - "bnN0YWxsLiBJdCBkaWQgbm90IHN3aXRjaCB0byB0aGUgSGVsbWZpbGUgdmFsdWVzIGhhbmRvZmYu" + + "IiwKICAgICAgIlRoZSBhZ2VudCBjb25maXJtZWQgYW5kIHVzZWQgdGhlIGNvbXB1dGUtcGxhbmUg" + + "Y29udGV4dCBmb3IgYWxsIGNsZWFudXAgY29tbWFuZHMiLAogICAgICAiVGhlIGFnZW50IHVzZWQg" + + "a3ViZWN0bCB0byBwYXRjaCBOVkNGQmFja2VuZCByZXNvdXJjZXMgdG8gcmVtb3ZlIHRoZWlyIGZp" + + "bmFsaXplcnMiLAogICAgICAiVGhlIGFnZW50IHVzZWQga3ViZWN0bCByZXBsYWNlIC0tcmF3IHRv" + + "IGNsZWFyIG5hbWVzcGFjZSBmaW5hbGl6ZXJzIG9uIHN0dWNrIG5hbWVzcGFjZXMiLAogICAgICAi" + + "VGhlIGFnZW50IG9ubHkgdGFyZ2V0ZWQgTlZDRi1tYW5hZ2VkIG5hbWVzcGFjZXMgKG52Y2Etb3Bl" + + "cmF0b3IsIG52Y2YtYmFja2VuZCkgYW5kIGRpZCBub3QgdG91Y2ggb3RoZXIgY2x1c3RlciByZXNv" + + "dXJjZXMiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QganVtcCBkaXJlY3RseSB0byBuYW1lc3Bh" + + "Y2UgZGVsZXRpb24gd2l0aG91dCBmaXJzdCByZW1vdmluZyBmaW5hbGl6ZXJzIgogICAgXQogIH0s" + + "CiAgewogICAgImlkIjogIkc2LWhlbG1maWxlLXNwbGl0LXdvcmtmbG93IiwKICAgICJxdWVzdGlv" + + "biI6ICJJbnN0YWxsIGFuIE5WQ0YgY29udHJvbCBwbGFuZSBhbmQgYSBzZXBhcmF0ZSBFS1MgY29t" + + "cHV0ZSBwbGFuZSB1c2luZyB0aGUgSGVsbWZpbGUgc3RhY2tzLiBUaGUgY29tcHV0ZSBjbHVzdGVy" + + "IGt1YmVjb25maWcgaXMgY29tcHV0ZS55YW1sLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZj" + + "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFn" + + "ZW50IGtlcHQgdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93IGluZGVwZW5kZW50IGZyb20gdGhlIENM" + + "SSBwcm9maWxlIGZsb3cuIEl0IGF1dGhvcmVkIHNlcGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNv" + + "bXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZXMgcGx1cyBhIGJhcmUtR2F0ZXdheSBDTEkgY29u" + + "ZmlnIHdpdGggVVJMIGFuZCBzY2hlbWUtbGVzcyBIb3N0IGZpZWxkcywgaW5zdGFsbGVkIHRoZSBj" + + "b250cm9sIHBsYW5lLCByYW4gdGhlIGNvbXB1dGUtcGxhbmUgTWFrZWZpbGUgcmVnaXN0ZXItY2x1" + + "c3RlciB0YXJnZXQgd2l0aCBJQ01TX1VSTCBhbmQgdGhlIGNvbXB1dGUga3ViZWNvbmZpZywgdGhl" + + "biByYW4gdGhlIGNvbXB1dGUtcGxhbmUgaW5zdGFsbCB0YXJnZXQgd2l0aCB0aGUgc2FtZSBlbnZp" + + "cm9ubWVudCBhbmQga3ViZWNvbmZpZy4gSXQgcmVsaWVkIG9uIHJlZ2lzdHJhdGlvbiB0byBkaXNj" + + "b3ZlciBPSURDIGFuZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUgY29udGV4dC4iLAogICAgImV4cGVj" + + "dGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5h" + + "Z2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJU" + + "aGUgYWdlbnQgYXV0aG9yZWQgc2VwYXJhdGUgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwgZmlsZXMg" + + "dW5kZXIgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgYW5kIGRlcGxveS9zdGFja3MvbnZjZi1j" + + "b21wdXRlLXBsYW5lIiwKICAgICAgIlRoZSBhZ2VudCBpbnN0YWxsZWQgdGhlIGNvbnRyb2wgcGxh" + + "bmUgYmVmb3JlIHJlZ2lzdGVyaW5nIG9yIGluc3RhbGxpbmcgdGhlIGNvbXB1dGUgcGxhbmUiLAog" + + "ICAgICAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgYmFzZV9odHRwX3VybCwgaW52b2tlX3VybCwgYmFz" + + "ZV9ncnBjX3VybCwgYXBpX2tleXNfc2VydmljZV91cmwsIGljbXNfdXJsLCBhcGlfaG9zdCwgYXBp" + + "X2tleXNfaG9zdCwgaW52b2tlX2hvc3QsIGFuZCBpY21zX2hvc3QgZm9yIHRoZSBiYXJlIEdhdGV3" + + "YXkiLAogICAgICAiVGhlIGFnZW50IHVzZWQgJ21ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNv" + + "bXB1dGUtcGxhbmUgcmVnaXN0ZXItY2x1c3Rlcicgd2l0aCBDTFVTVEVSX05BTUUsIE5DQV9JRCwg" + + "Q0xVU1RFUl9SRUdJT04sIElDTVNfVVJMLCBhbmQgS1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFt" + + "bCIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29t" + + "cHV0ZS1wbGFuZSBpbnN0YWxsJyB3aXRoIENMVVNURVJfTkFNRSwgSEVMTUZJTEVfRU5WLCBhbmQg" + + "S1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFtbCIsCiAgICAgICJUaGUgYWdlbnQgc3RhdGVkIHRo" + + "YXQgSUNNU19VUkwgbWFwcyBvbmx5IHRvIC0taWNtcy11cmwsIGNvbmZpZyBpY21zX2hvc3Qgc3Vw" + + "cGxpZXMgdGhlIEhvc3QgaGVhZGVyLCB0aGVyZSBpcyBubyAtLWljbXMtaG9zdCBNYWtlIG9yIENM" + + "SSBmbGFnLCBhbmQgcmVnaXN0cmF0aW9uIGRpc2NvdmVycyBPSURDIGFuZCBKV0tTIGZyb20gdGhl" + + "IGNvbXB1dGUgY29udGV4dCIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCByZXF1aXJlIGEgY29u" + + "dHJvbC1wbGFuZSBwcm9maWxlIGZvciB0aGlzIGZsb3cgYW5kIGRpZCBub3QgbWl4IGluIENMSSBw" + + "cm9maWxlIGNvbW1hbmRzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc3LWJvdGgtZG9ja2Vy" + + "LWhlbG0tYXV0aCIsCiAgICAicXVlc3Rpb24iOiAiQXV0aGVudGljYXRlIHRvIE5HQyBmb3IgTlZD" + + "RiBoZWxtZmlsZSBkZXBsb3ltZW50IiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYt" + + "bWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgcmFu" + + "IGJvdGggZG9ja2VyIGxvZ2luIGFuZCBoZWxtIHJlZ2lzdHJ5IGxvZ2luIGZvciBudmNyLmlvLiBJ" + + "dCBleHBsYWluZWQgdGhhdCBib3RoIGFyZSByZXF1aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMg" + + "aGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kgY2hhcnRzLCBzbyBkb2NrZXIgbG9naW4gYWxv" + + "bmUgaXMgaW5zdWZmaWNpZW50LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJU" + + "aGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1k" + + "IGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2RvY2tlciBsb2dp" + + "biBudmNyLmlvJyB3aXRoICRvYXV0aHRva2VuIHVzZXJuYW1lIGFuZCBOR0NfQVBJX0tFWSBwYXNz" + + "d29yZCIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHJlZ2lzdHJ5IGxvZ2luIG52Y3IuaW8n" + + "IHdpdGggJG9hdXRodG9rZW4gdXNlcm5hbWUgYW5kIE5HQ19BUElfS0VZIHBhc3N3b3JkIiwKICAg" + + "ICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCBib3RoIGFyZSByZXF1aXJlZCBiZWNhdXNlIGhl" + + "bG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kgY2hhcnRzIiwKICAgICAg" + + "IlRoZSBhZ2VudCBkaWQgbm90IHByb3ZpZGUgb25seSBvbmUgb2YgdGhlIHR3byBhdXRoZW50aWNh" + + "dGlvbiBjb21tYW5kcyIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJHOS1taXNzaW5nLWJ1bmRs" + + "ZSIsCiAgICAicXVlc3Rpb24iOiAiUnVuIGhlbG1maWxlIHN5bmMgZm9yIE5WQ0YgaW4gbXkgY3Vy" + + "cmVudCBkaXJlY3RvcnkiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2Vk" + + "LWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBhdHRlbXB0ZWQg" + + "dG8gdmVyaWZ5IHRoZSBidW5kbGUgc3RydWN0dXJlIChoZWxtZmlsZS5kLywgZW52aXJvbm1lbnRz" + + "Lywgc2VjcmV0cy8sIGdsb2JhbC55YW1sLmdvdG1wbCkgYW5kIHdoZW4gZmlsZXMgd2VyZSBub3Qg" + + "Zm91bmQsIHN0b3BwZWQgYW5kIGluc3RydWN0ZWQgdGhlIHVzZXIgdG8gZXh0cmFjdCBvciBsb2Nh" + + "dGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrIGJ1bmRsZS4gSXQgZGlkIG5vdCBhdHRlbXB0" + + "IHRvIHJ1biBoZWxtZmlsZSBzeW5jIGFnYWluc3QgYSBtaXNzaW5nIGJ1bmRsZS4iLAogICAgImV4" + + "cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1t" + + "YW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAg" + + "ICJUaGUgYWdlbnQgY2hlY2tlZCBmb3IgZXhwZWN0ZWQgYnVuZGxlIHN0cnVjdHVyZSAoaGVsbWZp" + + "bGUuZC8sIGVudmlyb25tZW50cy8sIHNlY3JldHMvLCBnbG9iYWwueWFtbC5nb3RtcGwpIiwKICAg" + + "ICAgIldoZW4gYnVuZGxlIGZpbGVzIHdlcmUgbm90IGZvdW5kLCB0aGUgYWdlbnQgc3RvcHBlZCBh" + + "bmQgZGlkIG5vdCBhdHRlbXB0IGhlbG1maWxlIHN5bmMiLAogICAgICAiVGhlIGFnZW50IGluc3Ry" + + "dWN0ZWQgdGhlIHVzZXIgdG8gZXh0cmFjdCBvciBsb2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2Vk" + + "LXN0YWNrIGJ1bmRsZSIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTMS1jbGVhbi1pbnN0YWxs" + + "YXRpb24iLAogICAgInF1ZXN0aW9uIjogIlBlcmZvcm0gYSBjbGVhbiBpbnN0YWxsYXRpb24gb2Yg" + + "dGhlIE5WQ0Ygc2VsZi1tYW5hZ2VkIHN0YWNrIG9uIG15IEFXUyBFS1MgY2x1c3Rlci4gTXkgZW52" + + "aXJvbm1lbnQgbmFtZSBpcyAnc3RhZ2luZycuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNm" + + "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdl" + + "bnQgY29tcGxldGVkIHRoZSBjb250cm9sLXBsYW5lIGluc3RhbGxhdGlvbiBmaXJzdDogdmFsaWRh" + + "dGVkIHRvb2xzIGFuZCBidW5kbGUgc3RydWN0dXJlLCBjcmVhdGVkIGNvbnRyb2wtcGxhbmUgbmFt" + + "ZXNwYWNlcyBpbmNsdWRpbmcgY2VydC1tYW5hZ2VyLCBhdXRoZW50aWNhdGVkIHRoZSByZWdpc3Ry" + + "aWVzLCBwcmV2aWV3ZWQsIGRlcGxveWVkLCBhbmQgbW9uaXRvcmVkIHRoZSBmb3VyIGNvbnRyb2wt" + + "cGxhbmUgcGhhc2VzLiBJdCB0aGVuIHNlbGVjdGVkIG9uZSBkb2N1bWVudGVkIGhhbmRvZmYgYW5k" + + "IHJlZ2lzdGVyZWQgYW5kIGluc3RhbGxlZCB0aGUgY29tcHV0ZSBwbGFuZSBhcyBhIHNlcGFyYXRl" + + "IHN0YWNrIHdpdGhvdXQgbWl4aW5nIHByb2ZpbGUgYW5kIEhlbG1maWxlIHZhbHVlcyBmbG93cy4i" + + "LAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52" + + "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlv" + + "biIsCiAgICAgICJUaGUgYWdlbnQgdmFsaWRhdGVkIHRvb2wgdmVyc2lvbnMgKGhlbG1maWxlLCBo" + + "ZWxtLCBoZWxtLWRpZmYsIGt1YmVjdGwpIiwKICAgICAgIlRoZSBhZ2VudCB2ZXJpZmllZCB0aGUg" + + "YnVuZGxlIHN0cnVjdHVyZSBleGlzdHMiLAogICAgICAiVGhlIGFnZW50IGNyZWF0ZWQgY29udHJv" + + "bC1wbGFuZSBuYW1lc3BhY2VzIChjYXNzYW5kcmEtc3lzdGVtLCBuYXRzLXN5c3RlbSwgbnZjZiwg" + + "YXBpLWtleXMsIGVzcywgc2lzLCB2YXVsdC1zeXN0ZW0sIGNlcnQtbWFuYWdlcikgd2l0aG91dCBh" + + "ZGRpbmcgY29tcHV0ZS1vbmx5IG5hbWVzcGFjZXMiLAogICAgICAiVGhlIGFnZW50IHJhbiAnSEVM" + + "TUZJTEVfRU5WPXN0YWdpbmcgaGVsbWZpbGUgdGVtcGxhdGUnIHRvIHByZXZpZXcgYmVmb3JlIGRl" + + "cGxveWluZyIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdIRUxNRklMRV9FTlY9c3RhZ2luZyBoZWxt" + + "ZmlsZSBzeW5jJyB0byBkZXBsb3kiLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgNCBj" + + "b250cm9sLXBsYW5lIHBoYXNlcyAoZGVwZW5kZW5jaWVzLCBzZXJ2aWNlcywgaW5ncmVzcywgb2Jz" + + "ZXJ2YWJpbGl0eSkgYW5kIGFwcHJveGltYXRlIHdhaXQgdGltZXMiLAogICAgICAiQWZ0ZXIgdGhl" + + "IGNvbnRyb2wgcGxhbmUgd2FzIGhlYWx0aHksIHRoZSBhZ2VudCByZWdpc3RlcmVkIGFuZCBpbnN0" + + "YWxsZWQgdGhlIHNlcGFyYXRlIGNvbXB1dGUtcGxhbmUgc3RhY2sgdXNpbmcgZXhhY3RseSBvbmUg" + + "ZG9jdW1lbnRlZCBoYW5kb2ZmIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IG1peCBhIENMSS1n" + + "ZW5lcmF0ZWQgY29udHJvbC1wbGFuZSBwcm9maWxlIHdpdGggdGhlIEhlbG1maWxlIHZhbHVlcyBm" + + "bG93IgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMzLWNsaS1wcm9maWxlLXdvcmtmbG93IiwK" + + "ICAgICJxdWVzdGlvbiI6ICJVc2UgbnZjZi1jbGkgdG8gaW5zdGFsbCBteSBjb250cm9sIHBsYW5l" + + "IGFuZCB0aGVuIHJlZ2lzdGVyIGFuZCBpbnN0YWxsIGEgc2VwYXJhdGUgY29tcHV0ZSBjbHVzdGVy" + + "LiBTaG93IGV2ZXJ5IHJlcXVpcmVkIGdsb2JhbCBmbGFnLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwi" + + "OiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAi" + + "VGhlIGFnZW50IGZpcnN0IHJhbiB0aGUgQ0xJIGNvbnRyb2wtcGxhbmUgaW5zdGFsbCBhbmQgcmVx" + + "dWlyZWQgaXRzIGdlbmVyYXRlZCBjb250cm9sLXBsYW5lLXByb2ZpbGUueWFtbC4gSXQgdGhlbiBz" + + "aG93ZWQgY29tcGxldGUgcmVnaXN0ZXIgYW5kIGluc3RhbGwgY29tbWFuZHMsIGVhY2ggaW5jbHVk" + + "aW5nIC0tY29uZmlnLCAtLWNvbnRyb2wtcGxhbmUtc3RhY2ssIC0tY29tcHV0ZS1wbGFuZS1zdGFj" + + "aywgLS1lbnYsIGFuZCAtLXBsYWluIGJlZm9yZSB0aGUgY29tcHV0ZS1wbGFuZSBzdWJjb21tYW5k" + + "LiBSZWdpc3RyYXRpb24gY29uc3VtZWQgdGhlIHByb2ZpbGUgYW5kIHByb2R1Y2VkIHRoZSB2YWx1" + + "ZXMgZmlsZSBjb25zdW1lZCBieSBpbnN0YWxsLiBJdCBkaWQgbm90IHN3aXRjaCB0byB0aGUgSGVs" + + "bWZpbGUgdmFsdWVzIGhhbmRvZmYuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAg" + + "IlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwu" + + "bWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IHJhbiBudmNmLWNsaSBz" + + "ZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSBhbmQgdmVyaWZpZWQgZGVwbG95L3N0" + + "YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sIGV4aXN0cyIs" + + "CiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBpbmNsdWRlZCAtLWNvbmZpZywgLS1jb250cm9s" + + "LXBsYW5lLXN0YWNrLCAtLWNvbXB1dGUtcGxhbmUtc3RhY2ssIC0tZW52LCBhbmQgLS1wbGFpbiIs" + + "CiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBpbmNsdWRlZCAtLWNvbnRyb2wtcGxhbmUtcHJv" + + "ZmlsZSwgLS1jbHVzdGVyLW5hbWUsIC0ta3ViZS1jb250ZXh0LCAtLXJlZ2lvbiwgYW5kIC0tb3V0" + + "cHV0IiwKICAgICAgIlRoZSBpbnN0YWxsIGNvbW1hbmQgcmVwZWF0ZWQgLS1jb25maWcsIC0tY29u" + + "dHJvbC1wbGFuZS1zdGFjaywgLS1jb21wdXRlLXBsYW5lLXN0YWNrLCAtLWVudiwgYW5kIC0tcGxh" + + "aW4iLAogICAgICAiVGhlIGluc3RhbGwgY29tbWFuZCBpbmNsdWRlZCAtLXZhbHVlcywgLS1rdWJl" + + "LWNvbnRleHQsIGFuZCAtLWNsdXN0ZXItbmFtZSIsCiAgICAgICJUaGUgYWdlbnQga2VwdCB0aGUg" + + "Z2VuZXJhdGVkIHByb2ZpbGUgYXMgdGhlIGVuZHBvaW50IHNvdXJjZSBhbmQgZGlkIG5vdCBtaXgg" + + "aW4gSGVsbWZpbGUgdmFsdWVzIHJlZ2lzdHJhdGlvbiIKICAgIF0KICB9LAogIHsKICAgICJpZCI6" + + "ICJTNC1vdmVycmlkZS1jYXNzYW5kcmEtcmVzb3VyY2VzIiwKICAgICJxdWVzdGlvbiI6ICJDYXNz" + + "YW5kcmEgcG9kcyBrZWVwIGdldHRpbmcgT09NS2lsbGVkLiBJbmNyZWFzZSBtZW1vcnkgbGltaXRz" + + "IHRvIDE2R2kuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0" + + "YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgY2FwdHVyZWQgdGhlIGJh" + + "c2VsaW5lIHdpdGggaGVsbWZpbGUgdGVtcGxhdGUsIHRoZW4gbW9kaWZpZWQgdGhlIGNhc3NhbmRy" + + "YSByZWxlYXNlIHdpdGggaW5saW5lIHZhbHVlcyByZS1pbmNsdWRpbmcgZ2xvYmFsLnlhbWwuZ290" + + "bXBsIGFuZCBzZWNyZXRzIGluIHRoZSB2YWx1ZXMgYmxvY2suIEl0IHdhcm5lZCBhYm91dCB0aGUg" + + "WUFNTCBtZXJnZSBnb3RjaGEgYW5kIHByZXZpZXdlZCB0aGUgZGlmZiBiZWZvcmUgYXBwbHlpbmcu" + "IiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBu" + "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rp" + - "b24iLAogICAgICAiVGhlIGFnZW50IHJhbiBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0t" + - "Y29udHJvbC1wbGFuZSBhbmQgdmVyaWZpZWQgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0" + - "L2NvbnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sIGV4aXN0cyIsCiAgICAgICJUaGUgcmVnaXN0ZXIg" + - "Y29tbWFuZCBpbmNsdWRlZCAtLWNvbmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAtLWNvbXB1" + - "dGUtcGxhbmUtc3RhY2ssIC0tZW52LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgcmVnaXN0ZXIg" + - "Y29tbWFuZCBpbmNsdWRlZCAtLWNvbnRyb2wtcGxhbmUtcHJvZmlsZSwgLS1jbHVzdGVyLW5hbWUs" + - "IC0ta3ViZS1jb250ZXh0LCAtLXJlZ2lvbiwgYW5kIC0tb3V0cHV0IiwKICAgICAgIlRoZSBpbnN0" + - "YWxsIGNvbW1hbmQgcmVwZWF0ZWQgLS1jb25maWcsIC0tY29udHJvbC1wbGFuZS1zdGFjaywgLS1j" + - "b21wdXRlLXBsYW5lLXN0YWNrLCAtLWVudiwgYW5kIC0tcGxhaW4iLAogICAgICAiVGhlIGluc3Rh" + - "bGwgY29tbWFuZCBpbmNsdWRlZCAtLXZhbHVlcywgLS1rdWJlLWNvbnRleHQsIGFuZCAtLWNsdXN0" + - "ZXItbmFtZSIsCiAgICAgICJUaGUgYWdlbnQga2VwdCB0aGUgZ2VuZXJhdGVkIHByb2ZpbGUgYXMg" + - "dGhlIGVuZHBvaW50IHNvdXJjZSBhbmQgZGlkIG5vdCBtaXggaW4gSGVsbWZpbGUgdmFsdWVzIHJl" + - "Z2lzdHJhdGlvbiIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTNC1vdmVycmlkZS1jYXNzYW5k" + - "cmEtcmVzb3VyY2VzIiwKICAgICJxdWVzdGlvbiI6ICJDYXNzYW5kcmEgcG9kcyBrZWVwIGdldHRp" + - "bmcgT09NS2lsbGVkLiBJbmNyZWFzZSBtZW1vcnkgbGltaXRzIHRvIDE2R2kuIiwKICAgICJleHBl" + - "Y3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3Vu" + - "ZF90cnV0aCI6ICJUaGUgYWdlbnQgY2FwdHVyZWQgdGhlIGJhc2VsaW5lIHdpdGggaGVsbWZpbGUg" + - "dGVtcGxhdGUsIHRoZW4gbW9kaWZpZWQgdGhlIGNhc3NhbmRyYSByZWxlYXNlIHdpdGggaW5saW5l" + - "IHZhbHVlcyByZS1pbmNsdWRpbmcgZ2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNyZXRzIGluIHRo" + - "ZSB2YWx1ZXMgYmxvY2suIEl0IHdhcm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGEgYW5k" + - "IHByZXZpZXdlZCB0aGUgZGlmZiBiZWZvcmUgYXBwbHlpbmcuIiwKICAgICJleHBlY3RlZF9iZWhh" + - "dmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0" + - "YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50" + - "IGNhcHR1cmVkIGJhc2VsaW5lIHdpdGggJ2hlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5k" + - "cmEgdGVtcGxhdGUnIiwKICAgICAgIlRoZSBhZ2VudCBtb2RpZmllZCB0aGUgcmVsZWFzZSB2YWx1" + - "ZXMgYmxvY2sgdG8gaW5jbHVkZSByZXNvdXJjZSBsaW1pdHMgd2l0aCBtZW1vcnk6IDE2R2kiLAog" + - "ICAgICAiVGhlIGFnZW50IHJlLWluY2x1ZGVkIGdsb2JhbC55YW1sLmdvdG1wbCBhbmQgc2VjcmV0" + - "cyBmaWxlIGluIHRoZSB2YWx1ZXM6IGJsb2NrIChub3QganVzdCB0aGUgb3ZlcnJpZGUgYWxvbmUp" + - "IiwKICAgICAgIlRoZSBhZ2VudCB3YXJuZWQgYWJvdXQgdGhlIFlBTUwgbWVyZ2UgZ290Y2hhOiBz" + - "cGVjaWZ5aW5nIHZhbHVlczogcmVwbGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QgZW50" + - "aXJlbHkiLAogICAgICAiVGhlIGFnZW50IHByZXZpZXdlZCB0aGUgY2hhbmdlIHdpdGggaGVsbWZp" + - "bGUgdGVtcGxhdGUgYW5kIGRpZmYgYmVmb3JlIGFwcGx5aW5nIHdpdGggc3luYyIKICAgIF0KICB9" + - "LAogIHsKICAgICJpZCI6ICJTNi1zZWxlY3RpdmUtc3luYy1kZXBlbmRlbmNpZXMiLAogICAgInF1" + - "ZXN0aW9uIjogIkRlcGxveSBvbmx5IHRoZSBOVkNGIGRlcGVuZGVuY2llcyAtLSBOQVRTLCBDYXNz" + - "YW5kcmEsIGFuZCBPcGVuQmFvIC0tIGZvciB0ZXN0aW5nIiwKICAgICJleHBlY3RlZF9za2lsbCI6" + - "ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJU" + - "aGUgYWdlbnQgdXNlZCB0aGUgaGVsbWZpbGUgc2VsZWN0b3IgdG8gZGVwbG95IG9ubHkgdGhlIGRl" + - "cGVuZGVuY2llcyByZWxlYXNlIGdyb3VwLCB0aGVuIHZlcmlmaWVkIHBvZHMgaW4gdGhlIGRlcGVu" + - "ZGVuY3kgbmFtZXNwYWNlcy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhl" + - "IGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBi" + - "ZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnaGVsbWZpbGUgLS1z" + - "ZWxlY3RvciByZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llcyBzeW5jJyB0byBkZXBsb3kgb25seSBk" + - "ZXBlbmRlbmNpZXMiLAogICAgICAiVGhlIGFnZW50IHZlcmlmaWVkIHBvZHMgaW4gZGVwZW5kZW5j" + - "eSBuYW1lc3BhY2VzIChuYXRzLXN5c3RlbSwgY2Fzc2FuZHJhLXN5c3RlbSwgdmF1bHQtc3lzdGVt" + - "KSIsCiAgICAgICJUaGUgYWdlbnQgcHJvdmlkZWQgdGhlIHNlbGVjdG9yIHJlZmVyZW5jZSBmb3Ig" + - "dGFyZ2V0aW5nIG90aGVyIHJlbGVhc2UgZ3JvdXBzIgogICAgXQogIH0sCiAgewogICAgImlkIjog" + - "IlM3LWRlYnVnLWltYWdlcHVsbGJhY2tvZmYiLAogICAgInF1ZXN0aW9uIjogIkNhc3NhbmRyYSBw" + - "b2RzIGFyZSBpbiBJbWFnZVB1bGxCYWNrT2ZmIHdpdGggNDAxIFVuYXV0aG9yaXplZCIsCiAgICAi" + - "ZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJn" + - "cm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IHJlYWQgdGhlIGRlYnVnZ2luZyByZWZlcmVuY2UgYW5k" + - "IHJhbiBkaWFnbm9zdGljIGNvbW1hbmRzIHRvIGlkZW50aWZ5IHRoZSByb290IGNhdXNlOiBkZXNj" + - "cmliZWQgdGhlIHBvZCwgY2hlY2tlZCBmb3IgcHVsbCBzZWNyZXRzLCBjaGVja2VkIGltYWdlUHVs" + - "bFNlY3JldHMgb24gdGhlIHBvZCBzcGVjIGFuZCBzZXJ2aWNlIGFjY291bnQuIEl0IGlkZW50aWZp" + - "ZWQgdGhlIGlzc3VlIChtaXNzaW5nIHNlY3JldCwgd3JvbmcgY3JlZGVudGlhbHMsIG9yIG1pc3Np" + - "bmcgaW1hZ2VQdWxsU2VjcmV0cykgYW5kIHByb3ZpZGVkIHRoZSBjb3JyZWN0IGZpeC4iLAogICAg" + - "ImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2Vs" + - "Zi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBhbmQgcmVmZXJlbmNlcy9kZWJ1Z2dpbmcu" + - "bWQiLAogICAgICAiVGhlIGFnZW50IHJhbiAna3ViZWN0bCBkZXNjcmliZSBwb2QnIHRvIHNlZSB0" + - "aGUgSW1hZ2VQdWxsQmFja09mZiBldmVudHMiLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQgZm9y" + - "IHB1bGwgc2VjcmV0cyBpbiB0aGUgY2Fzc2FuZHJhLXN5c3RlbSBuYW1lc3BhY2UiLAogICAgICAi" + - "VGhlIGFnZW50IGNoZWNrZWQgaW1hZ2VQdWxsU2VjcmV0cyBvbiB0aGUgcG9kIHNwZWMgYW5kL29y" + - "IHNlcnZpY2UgYWNjb3VudCIsCiAgICAgICJUaGUgYWdlbnQgaWRlbnRpZmllZCB0aGUgcm9vdCBj" + - "YXVzZSBhbmQgcHJvdmlkZWQgYSBzcGVjaWZpYyBmaXgiCiAgICBdCiAgfSwKICB7CiAgICAiaWQi" + - "OiAiUzktcmVtb3RlLWVrcy1yb3V0aW5nLWFuZC1zZWNyZXRzIiwKICAgICJxdWVzdGlvbiI6ICJD" + - "b25maWd1cmUgYSByZW1vdGUgRUtTIGNvbXB1dGUgY2x1c3RlciB0byByZWFjaCBteSBOVkNGIGNv" + - "bnRyb2wgcGxhbmUgdGhyb3VnaCBpdHMgRW52b3kgR2F0ZXdheSwgaW5jbHVkaW5nIE5BVFMgYW5k" + - "IHByaXZhdGUtcmVnaXN0cnkgcHVsbCBzZWNyZXRzLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAi" + - "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhl" + - "IGFnZW50IGNvbmZpZ3VyZWQgdGhlIGNvbnRyb2wgcGxhbmUgdG8gdXNlIHRoZSBFbnZveSBHYXRl" + - "d2F5IGNvbnRyb2xsZXIgaW4gZW52b3ktZ2F0ZXdheS1zeXN0ZW0gYW5kIEdhdGV3YXkvbnZjZi1n" + - "YXRld2F5IGluIGVudm95LWdhdGV3YXksIHNldCBhbGwgc2l4IHJlbW90ZSB3b3JrZXIgZW5kcG9p" + - "bnRzIGFuZCB0aGUgZ3JwYy1wcm94eSBsb2NhbCBvdmVycmlkZSwgZW5hYmxlZCBOVkNGIGFuZCBO" + - "VkNUIGdSUEMgcm91dGVzIHBsdXMgTkFUUywgYW5kIGVuYWJsZWQgT3BlbkJhbyBpc3N1ZXIgZGlz" + - "Y292ZXJ5LiBJdCBjb25maWd1cmVkIHRoZSBiYXJlLUdhdGV3YXkgQ0xJIFVSTCBhbmQgSG9zdCBm" + - "aWVsZHMgaW5jbHVkaW5nIGljbXNfaG9zdCwgcGx1cyB0aGUgY29tcHV0ZS1wbGFuZSBJQ01TLCBS" + - "ZVZhbCwgYW5kIE5BVFMgZXh0ZXJuYWwgVVJMcyBhbmQgaG9zdCBvdmVycmlkZXMuIEl0IGNyZWF0" + - "ZWQgdGhlIHB1bGwgc2VjcmV0IGluIGFsbCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMgaW5jbHVk" + - "aW5nIGNlcnQtbWFuYWdlciwgYnV0IG9ubHkgaW4gbnZjYS1vcGVyYXRvciBvbiB0aGUgY29tcHV0" + - "ZSBjbHVzdGVyOyB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0byBudmNhLXN5c3Rl" + - "bS4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhl" + - "IG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFj" + - "dGlvbiIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGluZ3Jlc3MuZ2F0ZXdheUFwaS5jb250cm9sbGVy" + - "TmFtZXNwYWNlIHRvIGVudm95LWdhdGV3YXktc3lzdGVtIiwKICAgICAgIlRoZSBhZ2VudCBzZXQg" + - "c2hhcmVkLCBncnBjLCBhbmQgbmF0cyBHYXRld2F5IHJlZmVyZW5jZXMgdG8gbmFtZSBudmNmLWdh" + - "dGV3YXkgYW5kIG5hbWVzcGFjZSBlbnZveS1nYXRld2F5IiwKICAgICAgIlRoZSBhZ2VudCBzZXQg" + - "Z2xvYmFsLndvcmtlckVuZHBvaW50cy5udmNmU2VydmljZVVSTCwgbnZjZkdycGNTZXJ2aWNlVVJM" + - "LCBudmNmTmF0c1NlcnZpY2VVUkwsIG52Y3RTZXJ2aWNlVVJMLCBudmN0R3JwY1NlcnZpY2VVUkws" + - "IGFuZCBpbnZvY2F0aW9uU2VydmljZVVSTCIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGdycGNwcm94" + - "eS5udmNmR3JwY1NlcnZpY2VVUkwgdG8gdGhlIGNvbnRyb2wtcGxhbmUtbG9jYWwgQVBJIGdSUEMg" + - "c2VydmljZSIsCiAgICAgICJUaGUgYWdlbnQgZW5hYmxlZCBib3RoIGluZ3Jlc3MuZ2F0ZXdheUFw" + - "aS5yb3V0ZXMubnZjZkFwaS5ncnBjIGFuZCBudmN0QXBpLmdycGMgd2l0aCB3b3JrZXItYXBpIGFu" + - "ZCB3b3JrZXItdGFza3MgaG9zdG5hbWVzIiwKICAgICAgIlRoZSBhZ2VudCBleHBsaWNpdGx5IHNl" + - "dCBpbmdyZXNzLmdhdGV3YXlBcGkucm91dGVzLm5hdHMuZW5hYmxlZCB0byB0cnVlIiwKICAgICAg" + - "IlRoZSBhZ2VudCBzZXQgb3BlbmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVk" + - "IHRvIHRydWUiLAogICAgICAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgdGhlIGJhcmUtR2F0ZXdheSBD" + - "TEkgVVJMIGFuZCBIb3N0IGZpZWxkcywgaW5jbHVkaW5nIHNjaGVtZS1sZXNzIGljbXNfaG9zdCIs" + - "CiAgICAgICJUaGUgYWdlbnQgY29uZmlndXJlZCBjb21wdXRlLXBsYW5lIGljbXNTZXJ2aWNlVVJM" + - "LCBpY21zU2VydmljZUhvc3RIZWFkZXJPdmVycmlkZSwgcmV2YWxTZXJ2aWNlVVJMLCByZXZhbFNl" + - "cnZpY2VIb3N0SGVhZGVyT3ZlcnJpZGUsIG5hdHNVUkwsIGFuZCBuYXRzSG9zdE92ZXJyaWRlIiwK" + - "ICAgICAgIlRoZSBjb250cm9sLXBsYW5lIHB1bGwtc2VjcmV0IG5hbWVzcGFjZSBsaXN0IGluY2x1" + - "ZGVkIGNlcnQtbWFuYWdlciIsCiAgICAgICJUaGUgY29tcHV0ZS1wbGFuZSBzZWNyZXQgd2FzIGNy" + - "ZWF0ZWQgb25seSBpbiBudmNhLW9wZXJhdG9yIGFuZCBtaXJyb3JlZCBieSB0aGUgY2hhcnQgYW5k" + - "IG9wZXJhdG9yIHRvIG52Y2Etc3lzdGVtIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkcxMS1z" + - "cGxpdC10ZWFyZG93biIsCiAgICAicXVlc3Rpb24iOiAiVGVhciBkb3duIG15IHNwbGl0IGNvbnRy" + - "b2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZGVwbG95bWVudCBzYWZlbHkuIFNob3cgYm90aCB0" + - "aGUgSGVsbWZpbGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSB2YXJpYW50cy4iLAogICAgImV4cGVj" + - "dGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5k" + - "X3RydXRoIjogIlRoZSBIZWxtZmlsZSBmbG93IGRlc3Ryb3llZCBhbmQgY29uZmlybWVkIGRlcmVn" + - "aXN0cmF0aW9uIG9mIGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciBiZWZvcmUgZGVzdHJveWluZyB0aGUg" + - "Y29udHJvbCBwbGFuZSBhbmQgcGFzc2VkIGJvdGggY29udHJvbC1wbGFuZSBrdWJlY29uZmlnIGZv" + - "cm1zLiBCZWZvcmUgZWl0aGVyIGhhbmRvZmYgY291bGQgZGVzdHJveSB0aGUgY29udHJvbCBwbGFu" + - "ZSwgYm90aCB0ZWFyZG93biBmbG93cyB3YXJuZWQgdGhhdCBuYW1lc3BhY2UgcHJlc2VydmF0aW9u" + - "IGRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UsIHJlcXVpcmVkIGVmZmVjdGl2ZSBj" + - "ZXJ0TWFuYWdlci5lbmFibGVkOiBmYWxzZSBmb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uIGFu" + - "ZCBhYm9ydGVkIGlmIHRydWUsIGFuZCB2ZXJpZmllZCBtYXRjaGluZyByZWxlYXNlIG93bmVyc2hp" + - "cCBmb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxlYXNlLCBhYm9ydGluZyBvbiBtaXNz" + - "aW5nIG9yIG1pc21hdGNoZWQgZXZpZGVuY2UuIFRoZXkgcHJlc2VydmVkIHRoZSBuYW1lc3BhY2Ug" + - "YnkgZGVmYXVsdCBhbmQgZGlkIG5vdCBkZWxldGUgaXQgd2l0aG91dCBuYW1lc3BhY2UgcHJvdmVu" + - "YW5jZSBhbmQgZXhwbGljaXQgY29uZmlybWF0aW9uLiBUaGUgQ0xJIGZsb3cgcmV0YWluZWQgdGhl" + - "IGdlbmVyYXRlZCByZWdpc3RyYXRpb24gdmFsdWVzLCB1c2VkIHRoZSBmdWxsLXByZWZpeCBzdGF0" + - "dXMgY29tbWFuZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRoYXQgbmFt" + - "ZWQtY2x1c3RlciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90IHByZWRp" + - "Y3QgY29uZGl0aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLCBhbmQgZ290IGV4cGxpY2l0IGNv" + - "bmZpcm1hdGlvbiB3aGVuIHRoZSB0YXJnZXQgd2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3Rl" + - "ci4gSXQgdGhlbiBwcmV2aWV3ZWQgYW5kIHJhbiBkb3duIHdpdGggdGhlIGZ1bGwgcGVyc2lzdGVu" + - "dCBwcmVmaXgsIHJlbW92aW5nIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgdGhlIGxhc3Qg" + - "cmVnaXN0cmF0aW9uIHdhcyBnb25lLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAg" + - "ICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxM" + - "Lm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIkZvciBldmVyeSBjb21wdXRlIGNsdXN0" + - "ZXIsIHRoZSBIZWxtZmlsZSBmbG93IHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZSBkZXN0" + - "cm95IHRhcmdldCB3aXRoIGl0cyBjb21wdXRlIGt1YmVjb25maWciLAogICAgICAiQWZ0ZXIgY29u" + - "ZmlybWF0aW9uLCB0aGUgSGVsbWZpbGUgZmxvdyByYW4gY2x1c3RlciBkZWxldGUgd2l0aCBjbHVz" + - "dGVySUQgYW5kIG5jYUlEIGJlZm9yZSBjb250cm9sLXBsYW5lIGRlc3RydWN0aW9uIiwKICAgICAg" + - "IkJlZm9yZSBlaXRoZXIgaGFuZG9mZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBi" + - "b3RoIHRlYXJkb3duIGZsb3dzIHdhcm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9l" + - "cyBub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZlIGNlcnRN" + - "YW5hZ2VyLmVuYWJsZWQ6IGZhbHNlIGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24gYW5kIGFi" + - "b3J0ZWQgaWYgdHJ1ZSwgYW5kIHZlcmlmaWVkIGludGVuZGVkIHN0YWNrIG93bmVyc2hpcCB3aGVu" + - "IGVuYWJsZWQsIGFib3J0aW5nIG9uIG1pc3Npbmcgb3IgbWlzbWF0Y2hlZCBldmlkZW5jZSIsCiAg" + - "ICAgICJCb3RoIHRlYXJkb3duIGZsb3dzIHByZXNlcnZlZCB0aGUgY2VydC1tYW5hZ2VyIG5hbWVz" + - "cGFjZSBieSBkZWZhdWx0IGFuZCBkaWQgbm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBw" + - "cm92ZW5hbmNlIGFuZCBleHBsaWNpdCBjb25maXJtYXRpb24iLAogICAgICAiVGhlIEhlbG1maWxl" + - "IGZsb3cgcmFuIGNvbnRyb2wtcGxhbmUgTWFrZWZpbGUgZGVzdHJveSB3aXRoIGJvdGggS1VCRUNP" + - "TkZJRyBhbmQgS1VCRUNPTkZJR19GSUxFIiwKICAgICAgIlRoZSBDTEkgZmxvdyByZXRhaW5lZCBv" + - "dXQvPGNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWwgdW50aWwgdGVhcmRvd24gY29t" + - "cGxldGVkIiwKICAgICAgIkJlZm9yZSByZWFsIGRvd24sIHRoZSBDTEkgZmxvdyB1c2VkIHRoZSBm" + - "dWxsLXByZWZpeCBzdGF0dXMgY29tbWFuZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywg" + - "c3RhdGVkIHRoYXQgbmFtZWQtY2x1c3RlciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkgSUNNUyBh" + - "bmQgY2Fubm90IHByZWRpY3QgY29uZGl0aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLCB3YXJu" + - "ZWQgd2hlbiB0aGUgdGFyZ2V0IHdhcyB0aGUgbGFzdCByZWdpc3RlcmVkIGNsdXN0ZXIsIGFuZCBn" + - "b3QgZXhwbGljaXQgY29uZmlybWF0aW9uIiwKICAgICAgIlRoZSBDTEkgZmxvdyB1c2VkIC0tY29u" + - "ZmlnLCBib3RoIHN0YWNrIHBhdGhzLCAtLWVudiwgLS1wbGFpbiwgYm90aCBjb250ZXh0cywgYW5k" + - "IC0taWNtcy11cmwgZm9yIGRvd24gLS1wbGFuLW9ubHkgYW5kIHRoZW4gZG93biIsCiAgICAgICJU" + - "aGUgYWdlbnQgc3RhdGVkIHRoYXQgZG93biB1bnJlZ2lzdGVycyBlYWNoIGNvbXB1dGUgY2x1c3Rl" + - "ciBhbmQgcmVtb3ZlcyB0aGUgY29udHJvbCBwbGFuZSBvbmx5IGFmdGVyIG5vIHJlZ2lzdHJhdGlv" + - "bnMgcmVtYWluIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMxMy12YWx1ZXMtcHJlY2VkZW5j" + - "ZSIsCiAgICAicXVlc3Rpb24iOiAiSSBhZGRlZCBhIHZhbHVlIHRvIG15IGVudmlyb25tZW50IFlB" + - "TUwgYnV0IGl0J3MgYmVpbmcgc2lsZW50bHkgaWdub3JlZC4gSG93IGRvIGhlbG1maWxlIHZhbHVl" + - "cyB3b3JrIGluIE5WQ0Y/IiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdl" + - "ZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZXhwbGFpbmVk" + - "IHRoZSB2YWx1ZXMgcHJlY2VkZW5jZSBjaGFpbiAoYmFzZS55YW1sLCBlbnYgWUFNTCwgZ2xvYmFs" + - "LnlhbWwuZ290bXBsLCBzZWNyZXRzLCBpbmxpbmUgdmFsdWVzKSwgaWRlbnRpZmllZCB0aGF0IGds" + - "b2JhbC55YW1sLmdvdG1wbCBvbmx5IHBhc3NlcyB0aHJvdWdoIHNwZWNpZmljIGtleXMsIGFuZCBl" + - "eHBsYWluZWQgdGhhdCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzIG11c3QgdXNlIHJlbGVhc2UgaW5s" + - "aW5lIHZhbHVlcyBibG9ja3MuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRo" + - "ZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQg" + - "YmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgdmFs" + - "dWVzIHByZWNlZGVuY2UgY2hhaW46IGJhc2UueWFtbCAtPiBlbnYgWUFNTCAtPiBnbG9iYWwueWFt" + - "bC5nb3RtcGwgLT4gc2VjcmV0cyAtPiBpbmxpbmUgdmFsdWVzIiwKICAgICAgIlRoZSBhZ2VudCBp" + - "ZGVudGlmaWVkIHRoYXQgZ2xvYmFsLnlhbWwuZ290bXBsIG9ubHkgcGFzc2VzIHRocm91Z2ggc3Bl" + - "Y2lmaWMga2V5cyAoY2Fzc2FuZHJhLnJlcGxpY2FDb3VudCwgZ2xvYmFsLnN0b3JhZ2VDbGFzcywg" + - "Z2xvYmFsLmltYWdlLCBldGMuKSIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgYXJi" + - "aXRyYXJ5IGNoYXJ0IHZhbHVlcyBtdXN0IGJlIHNldCB2aWEgcmVsZWFzZSBpbmxpbmUgdmFsdWVz" + - "OiBibG9ja3MiLAogICAgICAiVGhlIGFnZW50IGxpc3RlZCBleGFtcGxlcyBvZiB2YWx1ZXMgdGhh" + - "dCBhcmUgcHJvcGFnYXRlZCBhbmQgYXJiaXRyYXJ5IGNoYXJ0IHZhbHVlcyB0aGF0IHJlcXVpcmUg" + - "YSByZWxlYXNlIHZhbHVlcyBibG9jayIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTMTQtZW5h" + - "YmxlLWxsbS1mdW5jdGlvbnMiLAogICAgInF1ZXN0aW9uIjogIkkgbmVlZCB0byBkZXBsb3kgZnVu" + - "Y3Rpb25UeXBlOiBMTE0gZnVuY3Rpb25zIG9uIGEgc2VsZi1tYW5hZ2VkLCBzaW5nbGUtbm9kZSBp" + - "c29sYXRlZCB0ZXN0IGNsdXN0ZXIuIFdoYXQgSGVsbWZpbGUgY29uZmlndXJhdGlvbiBhbmQgdmVy" + - "aWZpY2F0aW9uIHN0ZXBzIGRvIEkgbmVlZD8iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Yt" + - "c2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2Vu" + - "dCBlbmFibGVkIHRoZSBMTE0gYWRkb24gd2l0aCBhZGRvbnMubGxtLmVuYWJsZWQsIGNvbmZpZ3Vy" + - "ZWQgc2luZ2xlIHJlcGxpY2FzIGZvciB0aGUgTExNIEFQSSBHYXRld2F5IGFuZCByZXF1ZXN0IHJv" + - "dXRlciwgYW5kIGV4cGxhaW5lZCB0aGF0IHRoZSByZXF1ZXN0IHJvdXRlciB1c2VzIHBvd2VyLW9m" + - "LXR3byB3aGVuIG5vIGxvYWQtYmFsYW5jZXIgY29uZmlndXJhdGlvbiBpcyBzZXQuIEl0IGxpbmtl" + - "ZCB0aGUgY2Fub25pY2FsIHJlcXVlc3Qtcm91dGVyIGxvYWQtYmFsYW5jaW5nIGd1aWRlIGZvciBv" + - "dGhlciByb3V0aW5nIG1ldGhvZHMuIEZvciB0aGUgaXNvbGF0ZWQgcGxhaW50ZXh0IGNsdXN0ZXIs" + - "IGl0IHJlbGllZCBvbiB0aGUgc2VsZi1tYW5hZ2VkIHN0YWNrIGRlZmF1bHQgZm9yIHRoZSBidW5k" + - "bGVkIGdhdGV3YXktdG8tQVBJIGF1dGhlbnRpY2F0aW9uIGhvcCBhbmQgaW5jbHVkZWQgYWdlbnRD" + - "b25maWcubWVyZ2VDb25maWcud29ya2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUgZm9yIHRoZSBz" + - "ZXBhcmF0ZSB3b3JrZXIgdHJhbnNwb3J0LCB3aXRoIGEgd2FybmluZyB0aGF0IHBsYWludGV4dCB3" + - "b3JrZXIgdHJhbnNwb3J0IGlzIG5vdCBmb3IgcHJvZHVjdGlvbi4gSXQgcmVmcmVzaGVkIHRoZSBj" + - "b21wdXRlIHBsYW5lIHVzaW5nIHRoZSBzYW1lIGhhbmRvZmYgdXNlZCBkdXJpbmcgaW5zdGFsbGF0" + - "aW9uLCByZWRlcGxveWVkIGV4aXN0aW5nIExMTSBmdW5jdGlvbnMsIGFuZCB2ZXJpZmllZCB0aGUg" + - "TExNIGRlcGxveW1lbnRzLCByb3V0ZSwgYW5kIGxsbS13b3JrZXIgc2lkZWNhci4iLAogICAgImV4" + - "cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHVzZWQgYWRkb25zLmxsbS5lbmFi" + - "bGVkLCBub3QgdGhlIG9ic29sZXRlIGxsbS5lbmFibGVkIHBhdGgiLAogICAgICAiVGhlIGFnZW50" + - "IHNldCBnYXRld2F5IGFuZCByZXF1ZXN0Um91dGVyIHJlcGxpY2FDb3VudCB0byAxIGZvciB0aGUg" + - "c2luZ2xlLW5vZGUgdGVzdCBjbHVzdGVyIiwKICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCB0" + - "aGUgcmVxdWVzdCByb3V0ZXIgZGVmYXVsdHMgdG8gcG93ZXItb2YtdHdvIGFuZCBsaW5rZWQgdGhl" + - "IGNhbm9uaWNhbCByZXF1ZXN0LXJvdXRlciBsb2FkLWJhbGFuY2luZyBndWlkZSBmb3Igb3RoZXIg" + - "bWV0aG9kcyIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgdGhlIGJ1bmRsZWQgZ2F0" + - "ZXdheS10by1BUEkgYXV0aGVudGljYXRpb24gaG9wIGRlZmF1bHRzIHRvIHBsYWludGV4dCwgaW5j" + - "bHVkZWQgd29ya2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUgb25seSBmb3IgdGhlIGlzb2xhdGVk" + - "IHdvcmtlciB0cmFuc3BvcnQsIGFuZCB3YXJuZWQgYWdhaW5zdCBwbGFpbnRleHQgd29ya2VyIHRy" + - "YW5zcG9ydCBpbiBwcm9kdWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBhcHBsaWVkIHRoZSBjb250" + - "cm9sLXBsYW5lIEhlbG1maWxlIGVudmlyb25tZW50LCByZWZyZXNoZWQgdGhlIGNvbXB1dGUgcGxh" + - "bmUgd2l0aCB0aGUgc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLCBhbmQgcmVjcmVhdGVkIG9yIHJlZGVw" + - "bG95ZWQgZXhpc3RpbmcgTExNIGZ1bmN0aW9ucyIsCiAgICAgICJUaGUgYWdlbnQgdmVyaWZpZWQg" + - "bGxtLWFwaS1nYXRld2F5LCBsbG0tcmVxdWVzdC1yb3V0ZXIsIHRoZSBMTE0gSFRUUFJvdXRlLCBh" + - "bmQgdGhlIGxsbS13b3JrZXIgc2lkZWNhciBpbmNsdWRpbmcgLS1xdWljLWluc2VjdXJlIgogICAg" + - "XQogIH0sCiAgewogICAgImlkIjogIkc4LU5FRy1ub3QtZm9yLWszZCIsCiAgICAicXVlc3Rpb24i" + - "OiAiU2V0IHVwIGEgbG9jYWwgTlZDRiBkZXYgY2x1c3RlciB1c2luZyBrM2QgZm9yIHRlc3Rpbmci" + - "LAogICAgImV4cGVjdGVkX3NraWxsIjogbnVsbCwKICAgICJzaG91bGRfdHJpZ2dlciI6IGZhbHNl" + - "LAogICAgImdyb3VuZF90cnV0aCI6ICJUaGlzIGlzIGEgbG9jYWwgazNkIGRldmVsb3BtZW50IHJl" + - "cXVlc3QgdGhhdCBiZWxvbmdzIHRvIHRoZSBudmNmLXNlbGYtaG9zdGVkLWxvY2FsLWRldiBza2ls" + - "bCwgbm90IG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi4gVGhlIGFnZW50IGRpZCBub3Qg" + - "cmVhZCBvciB1c2UgdGhlIHNlbGYtbWFuYWdlZCBpbnN0YWxsYXRpb24gc2tpbGwgYW5kIGluc3Rl" + - "YWQgcHJvdmlkZWQgazNkLXNwZWNpZmljIGd1aWRhbmNlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZp" + - "b3IiOiBbCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCByZWFkIG52Y2Ytc2VsZi1tYW5hZ2VkLWlu" + - "c3RhbGxhdGlvbi9TS0lMTC5tZCIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm92aWRlIGhl" + - "bG1maWxlLWJhc2VkIHByb2R1Y3Rpb24gZGVwbG95bWVudCBpbnN0cnVjdGlvbnMiLAogICAgICAi" + - "VGhlIGFnZW50IHByb3ZpZGVkIGszZC1zcGVjaWZpYyBsb2NhbCBkZXZlbG9wbWVudCBndWlkYW5j" + - "ZSBvciBkZWZlcnJlZCB0byB0aGUgYXBwcm9wcmlhdGUgbG9jYWwtZGV2IHNraWxsIgogICAgXQog" + - "IH0KXQpQSwcIR1VqVkpWAABKVgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAvAAkAZGF0YS9u" + - "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXhhbXBsZXMubWRVVAUAAQCmzhIjIEV4YW1w" + - "bGVzCgpXb3JrZWQgZXhhbXBsZXMgYmFzZWQgb24gcmVhbCBkZXBsb3ltZW50IHNjZW5hcmlvcy4K" + - "CiMjIEV4YW1wbGUgMTogT3ZlcnJpZGUgQ2Fzc2FuZHJhIFJlc291cmNlcwoKVGhlIGRlZmF1bHQg" + - "Q2Fzc2FuZHJhIHJlc291cmNlIGxpbWl0cyBjYXVzZSBPT00gb24gbGFyZ2UgaW5zdGFuY2UgdHlw" + - "ZXMgKGUuZy4sIGBwNS40OHhsYXJnZWApLgoKUHJvYmxlbTogQ2Fzc2FuZHJhIHBvZHMgcmVzdGFy" + - "dCB3aXRoIGBPT01LaWxsZWRgLgoKU29sdXRpb246IE92ZXJyaWRlIHJlc291cmNlcyB2aWEgaGVs" + - "bWZpbGUgcmVsZWFzZSB2YWx1ZXMgYmxvY2suCgojIyMgU3RlcCAxOiBDYXB0dXJlIGJhc2VsaW5l" + - "CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fz" + - "c2FuZHJhIHRlbXBsYXRlID4gL3RtcC9jYXNzLWJlZm9yZS55YW1sCmdyZXAgLUE4ICdyZXNvdXJj" + - "ZXM6JyAvdG1wL2Nhc3MtYmVmb3JlLnlhbWwgfCBoZWFkIC0xMApgYGAKCiMjIyBTdGVwIDI6IEFk" + - "ZCBvdmVycmlkZSB0byBoZWxtZmlsZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbAoKSW4g" + - "dGhlIGV4YW1wbGVzIGJlbG93LCBgPHByaXZhdGUtdmFsdWVzPmAgcmVmZXJzIHRvIHRoZSBgc2Vj" + - "cmV0cy9gIGRpcmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUgc3RhY2sgcm9vdC4KCmBgYHlhbWwKLSBu" + - "YW1lOiBjYXNzYW5kcmEKICB2ZXJzaW9uOiAwLjguMAogIGNvbmRpdGlvbjogY2Fzc2FuZHJhLmVu" + - "YWJsZWQKICBuYW1lc3BhY2U6IGNhc3NhbmRyYS1zeXN0ZW0KICA8PDogKmRlcGVuZGVuY3kKICB2" + - "YWx1ZXM6CiAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAgLSAuLi88cHJpdmF0ZS12YWx1" + - "ZXM+L3t7IHJlcXVpcmVkRW52ICJIRUxNRklMRV9FTlYiIH19LXNlY3JldHMueWFtbAogICAgLSBj" + - "YXNzYW5kcmE6CiAgICAgICAgcmVzb3VyY2VzOgogICAgICAgICAgbGltaXRzOgogICAgICAgICAg" + - "ICBjcHU6ICI4IgogICAgICAgICAgICBtZW1vcnk6IDgxOTJNaQogICAgICAgICAgcmVxdWVzdHM6" + - "CiAgICAgICAgICAgIGNwdTogIjIiCiAgICAgICAgICAgIG1lbW9yeTogNDA5Nk1pCmBgYAoKIyMj" + - "IFN0ZXAgMzogVmVyaWZ5IGFuZCBhcHBseQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVs" + - "bWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSA+IC90bXAvY2Fzcy1hZnRl" + - "ci55YW1sCmRpZmYgL3RtcC9jYXNzLWJlZm9yZS55YW1sIC90bXAvY2Fzcy1hZnRlci55YW1sICAj" + - "IENvbmZpcm0gcmVzb3VyY2VzIGNoYW5nZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0t" + - "c2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgc3luYwpgYGAKCk5vdGU6IGByZXNvdXJjZVByZXNldGAg" + - "KGEgQml0bmFtaSBmZWF0dXJlKSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBOVkNGIGNhc3NhbmRy" + - "YSB3cmFwcGVyIGNoYXJ0LiBVc2UgZXhwbGljaXQgYHJlc291cmNlc2AgaW5zdGVhZC4KCi0tLQoK" + - "IyMgRXhhbXBsZSAyOiBEZXBsb3kgZnJvbSBOR0MgUHJpdmF0ZSBSZWdpc3RyeSB3aXRoIFB1bGwg" + - "U2VjcmV0cwoKRGVwbG95IHRoZSBOVkNGIHN0YWNrIHB1bGxpbmcgaW1hZ2VzIGRpcmVjdGx5IGZy" + - "b20gTkdDIChgbnZjci5pb2ApIGluc3RlYWQgb2YgYSBtaXJyb3JlZCByZWdpc3RyeSwgdXNpbmcg" + - "aW1hZ2UgcHVsbCBzZWNyZXRzLgoKIyMjIFN0ZXAgMTogQ29uZmlndXJlIGVudmlyb25tZW50IGZv" + - "ciBOR0MKCmBgYHlhbWwKIyBlbnZpcm9ubWVudHMvPGVudj4ueWFtbApnbG9iYWw6CiAgaGVsbToK" + - "ICAgIHNvdXJjZXM6CiAgICAgIHJlZ2lzdHJ5OiBudmNyLmlvCiAgICAgIHJlcG9zaXRvcnk6IG52" + - "aWRpYS9udmNmCiAgaW1hZ2U6CiAgICByZWdpc3RyeTogbnZjci5pbwogICAgcmVwb3NpdG9yeTog" + - "bnZpZGlhL252Y2YKYGBgCgojIyMgU3RlcCAyOiBBdXRoZW50aWNhdGUgbG9jYWxseSAoZm9yIGhl" + - "bG1maWxlIGNoYXJ0IHB1bGxzKQoKYGBgYmFzaApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9h" + - "dXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAt" + - "dSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmBgYAoKIyMjIFN0ZXAgMzogQ3JlYXRl" + - "IG5hbWVzcGFjZXMgYW5kIHB1bGwgc2VjcmV0cwoKYGBgYmFzaApleHBvcnQgTkdDX0FQSV9LRVk9" + - "Ijx5b3VyLW5nYy1hcGkta2V5PiIKCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lz" + - "dGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwog" + - "IGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3Bh" + - "Y2UgIiRucyIgXAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRl" + - "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpkb25lCgpmb3IgbnMgaW4gY2Fz" + - "c2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lz" + - "dGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1j" + - "b250ZXh0PiBjcmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0t" + - "ZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tl" + - "bicgXAogICAgLS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3Bh" + - "Y2U9IiRucyIgXAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRl" + - "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpkb25lCmBgYAoKIyMjIFN0ZXAg" + - "NDogQWRkIGltYWdlUHVsbFNlY3JldHMgdG8gaGVsbWZpbGUgcmVsZWFzZXMKCkFkZCB0aGUgY2hh" + - "cnQtc3BlY2lmaWMgYGltYWdlUHVsbFNlY3JldHNgIGtleSB0byBlYWNoIHJlbGVhc2UuIEV4YW1w" + - "bGUgZm9yIGNhc3NhbmRyYSBpbiBgaGVsbWZpbGUuZC8wMS1kZXBlbmRlbmNpZXMueWFtbC5nb3Rt" + - "cGxgOgoKYGBgeWFtbAotIG5hbWU6IGNhc3NhbmRyYQogIHZlcnNpb246IDAuOC4wCiAgY29uZGl0" + - "aW9uOiBjYXNzYW5kcmEuZW5hYmxlZAogIG5hbWVzcGFjZTogY2Fzc2FuZHJhLXN5c3RlbQogIDw8" + - "OiAqZGVwZW5kZW5jeQogIHZhbHVlczoKICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAt" + - "IC4uLzxwcml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2Vj" + - "cmV0cy55YW1sCiAgICAtIGNhc3NhbmRyYToKICAgICAgICBnbG9iYWw6CiAgICAgICAgICBpbWFn" + - "ZVB1bGxTZWNyZXRzOgogICAgICAgICAgICAtIG52Y3ItY3JlZHMKYGBgCgpTZWUgW3JlZmVyZW5j" + - "ZXMvcHVsbC1zZWNyZXRzLm1kXShyZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCkgZm9yIHRoZSBr" + - "ZXkgZm9yIGV2ZXJ5IGNoYXJ0LgoKVGhlc2UgYXJlIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcy4g" + - "Rm9yIGEgc2VwYXJhdGUgY29tcHV0ZSBjbHVzdGVyLCBjcmVhdGUgdGhlCnNlY3JldCBvbmx5IGlu" + - "IGBudmNhLW9wZXJhdG9yYDsgdGhlIGNoYXJ0IGFuZCBvcGVyYXRvciBtaXJyb3IgaXQgdG8KYG52" + - "Y2Etc3lzdGVtYC4gU2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJl" + - "bmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCNwdWxsLXNlY3JldHMpLgoKIyMjIFN0" + - "ZXAgNTogRGVwbG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLWt1YmUt" + - "Y29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBzeW5jCmBgYAoKIyMjIFN0ZXAgNjogUGF0" + - "Y2ggU2VydmljZUFjY291bnRzIGZvciBjaGFydHMgd2l0aG91dCBuYXRpdmUgc3VwcG9ydAoKQWZ0" + - "ZXIgUGhhc2UgMSAoZGVwZW5kZW5jaWVzKSBjb21wbGV0ZXMsIE9wZW5CYW8gcG9kcyB3aWxsIGJl" + - "IGluIGBJbWFnZVB1bGxCYWNrT2ZmYC4gUGF0Y2ggYW5kIHJlc3RhcnQ6CgpgYGBiYXNoCmZvciBu" + - "cyBpbiB2YXVsdC1zeXN0ZW0gbnZjZiBlc3M7IGRvCiAgZm9yIHNhIGluICQoa3ViZWN0bCAtLWNv" + - "bnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHNhIC1uICIkbnMiIFwKICAgIC0tbm8t" + - "aGVhZGVycyAtbyBjdXN0b20tY29sdW1ucz0iOm1ldGFkYXRhLm5hbWUiKTsgZG8KICAgIGt1YmVj" + - "dGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IHBhdGNoIHNlcnZpY2VhY2NvdW50" + - "IC1uICIkbnMiICIkc2EiIFwKICAgICAgLXAgJ3siaW1hZ2VQdWxsU2VjcmV0cyI6IFt7Im5hbWUi" + - "OiAibnZjci1jcmVkcyJ9XX0nCiAgZG9uZQpkb25lCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9s" + - "LXBsYW5lLWNvbnRleHQ+IGRlbGV0ZSBwb2RzIC1uIHZhdWx0LXN5c3RlbSAtLWFsbApgYGAKClZl" + - "cmlmeToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4g" + - "Z2V0IGV2ZW50cyAtbiB2YXVsdC1zeXN0ZW0gXAogIC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAn" + - "IHwgZ3JlcCAtaSBwdWxsCiMgU2hvdWxkIHNob3cgIlN1Y2Nlc3NmdWxseSBwdWxsZWQgaW1hZ2Ui" + - "IGZyb20gbnZjci5pbwpgYGAKCi0tLQoKIyMgRXhhbXBsZSAzOiBGdWxsIFRlYXJkb3duIGFuZCBS" + - "ZWluc3RhbGwKCldoZW4gYSBkZXBsb3ltZW50IGlzIGJyb2tlbiBhbmQgeW91IG5lZWQgYSBjbGVh" + - "biBzbGF0ZS4KCiMjIyBTdGVwIDE6IERlc3Ryb3kgdGhlIGNvbXB1dGUtcGxhbmUgc3RhY2sKCmBg" + - "YGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwK" + - "ICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAg" + - "S1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKSWYgY29tcHV0" + - "ZSBjbGVhbnVwIGlzIHN0dWNrIG9uIGZpbmFsaXplcnMsIHVzZSB0aGUgY29tcHV0ZS1jb250ZXh0" + - "IHByb2NlZHVyZSBpbgpbZGVidWdnaW5nLm1kXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCNmYWls" + - "dXJlLW52Y2EtY2xlYW51cC1zdHVjay1maW5hbGl6ZXJzKS4KCiMjIyBTdGVwIDI6IERlcmVnaXN0" + - "ZXIgdGhlIGNvbXB1dGUgY2x1c3RlcgoKUmVhZCBgY2x1c3RlcklEYCBhbmQgYG5jYUlEYCBmcm9t" + - "CmBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9yZWdpc3RyYXRpb24vPGNsdXN0ZXIt" + - "bmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgLgpTaG93IHRoZSBJRCBhbmQgZ2V0IGNvbmZpcm1h" + - "dGlvbiBiZWZvcmUgZGVsZXRpbmcgdGhlIElDTVMgcm93OgoKYGBgYmFzaAo8bnZjZi1jbGk+IC0t" + - "Y29uZmlnIDxjb25maWc+IGNsdXN0ZXIgZGVsZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXIt" + - "aWQtZnJvbS1yZWdpc3RyYXRpb24tdmFsdWVzPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0t" + - "aWdub3JlLW1pc3NpbmcKYGBgCgpSZXBlYXQgc3RlcHMgMSBhbmQgMiBmb3IgZXZlcnkgY29tcHV0" + - "ZSBjbHVzdGVyLgoKIyMjIFN0ZXAgMzogRGVzdHJveSB0aGUgY29udHJvbC1wbGFuZSBzdGFjawoK" + - "UHJlc2VydmUgdGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3Bh" + - "Y2UgcHJlc2VydmF0aW9uIGRvZXMKbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEJlZm9y" + - "ZSBydW5uaW5nIGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIKY2VydC1tYW5hZ2VyIGlzIGV4dGVy" + - "bmFsLiBGb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZQpgY2Vy" + - "dE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4g" + - "aW50ZW5kZWQKc3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdl" + - "ci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5Cm1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRh" + - "ZGF0YSBhbmQgYWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkCmV2aWRlbmNlLiBPbmx5IHBs" + - "YW4gbmFtZXNwYWNlIHJlbW92YWwgYWZ0ZXIgdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNl" + - "IGFuZApnZXR0aW5nIGV4cGxpY2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlIGRvIG5vdCBkZWxl" + - "dGUgaXQuCgpgYGBiYXNoCktVQkVDT05GSUc9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4gXApt" + - "YWtlIC1DIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIGRlc3Ryb3kgXAogIEhFTE1GSUxFX0VO" + - "Vj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+CmBg" + - "YAoKUGFzcyBib3RoIGt1YmVjb25maWcgZm9ybXMgYmVjYXVzZSBjb250cm9sLXBsYW5lIG5hbWVz" + - "cGFjZSBjbGVhbnVwIHVzZXMKYW1iaWVudCBga3ViZWN0bGAuCgojIyMgU3RlcCA0OiBWZXJpZnkg" + - "Y2xlYW4KCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4g" + - "Z2V0IG5zIHwgXAogIGdyZXAgLUUgJyhudmNhfG52Y2YtYmFja2VuZHxncm92ZXxkeW5hbW8pJwpr" + - "dWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgbnMgfCBcCiAgZ3Jl" + - "cCAtRSAnKGNhc3NhbmRyYXxuYXRzfHZhdWx0fG52Y2Z8YXBpLWtleXN8ZXNzfHNpcyknCiMgQm90" + - "aCBjb21tYW5kcyBzaG91bGQgcmV0dXJuIGVtcHR5LgpgYGAKCiMjIyBTdGVwIDU6IFJlaW5zdGFs" + - "bCBpbiBzcGxpdCBvcmRlcgoKRm9sbG93IFtDbGVhbiBJbnN0YWxsYXRpb25dKFNLSUxMLm1kI2Ns" + - "ZWFuLWluc3RhbGxhdGlvbiksIHRoZW4gcmV0dXJuIHRvIHRoZQpzYW1lIGhhbmRvZmYgaW4gW1Nw" + - "bGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUt" + - "aW5zdGFsbGF0aW9uLm1kKS4KCi0tLQoKIyMgRXhhbXBsZSA0OiBSZWNvdmVyIGZyb20gYSBHYXRl" + - "d2F5IEVuZHBvaW50IENoYW5nZQoKVGhlIHNlcGFyYXRlbHkgcHJvdmlzaW9uZWQgR2F0ZXdheSBv" + - "ciBpdHMgbG9hZCBiYWxhbmNlciB3YXMgcmVjcmVhdGVkIGFuZCBnb3QgYSBuZXcgZW5kcG9pbnQu" + - "CgojIyMgU3RlcCAxOiBHZXQgdGhlIG5ldyBlbmRwb2ludAoKYGBgYmFzaApHQVRFV0FZX0FERFI9" + - "JChrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBc" + - "CiAgbnZjZi1nYXRld2F5IC1uIGVudm95LWdhdGV3YXkgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1" + - "cy5hZGRyZXNzZXNbMF0udmFsdWV9JykKdGVzdCAtbiAiJEdBVEVXQVlfQUREUiIKYGBgCgojIyMg" + - "U3RlcCAyOiBVcGRhdGUgRE5TIGFuZCBkaXJlY3QgYWRkcmVzcyBmaWVsZHMKCktlZXAgYGdsb2Jh" + - "bC5kb21haW5gLCByb3V0ZSBob3N0bmFtZXMsIGFuZCBDTEkgSG9zdCBmaWVsZHMgdW5jaGFuZ2Vk" + - "LiBQb2ludCB0aGUKRE5TIHJlY29yZHMgZm9yIHJlbmRlcmVkIHJvdXRlIGhvc3RuYW1lcywgc3Vj" + - "aCBhcyBgYXBpLjxkb21haW4+YCBhbmQKYCouaW52b2NhdGlvbi48ZG9tYWluPmAsIHRvIGBHQVRF" + - "V0FZX0FERFJgLiBGb3IgYSB0ZW1wb3JhcnkgZW52aXJvbm1lbnQgd2l0aG91dApETlMsIGtlZXAg" + - "aXRzIHJlc2VydmVkIHJvdXRlIHN1ZmZpeCBhbmQgY29ubmVjdCB0byBgR0FURVdBWV9BRERSYCB3" + - "aXRoIHRoZQptYXRjaGluZyBgSG9zdGAgaGVhZGVyLgoKRm9yIGEgc3BsaXQgZGVwbG95bWVudCBj" + - "b25maWd1cmVkIHdpdGggZGlyZWN0IEdhdGV3YXkgYWRkcmVzc2VzLCByZXBsYWNlIG9ubHkKdGhl" + - "IGFkZHJlc3MtYmVhcmluZyB2YWx1ZXM6IGNvbnRyb2wtcGxhbmUgYG52Y2ZOYXRzU2VydmljZVVS" + - "TGAsIGNvbXB1dGUtcGxhbmUKSUNNUywgUmVWYWwsIGFuZCBOQVRTIFVSTHMsIGFuZCBDTEkgVVJM" + - "IGZpZWxkcy4gS2VlcCB0aGVpciBkb21haW4gYW5kIEhvc3QKb3ZlcnJpZGVzIHVuY2hhbmdlZC4g" + - "UmVmcmVzaCByZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlvbiB0aHJvdWdoIHRoZSBzYW1lCmhh" + - "bmRvZmYgdXNlZCBvcmlnaW5hbGx5LiBTZWUKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0" + - "aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKQpmb3IgdGhlIGZp" + - "ZWxkcyBhbmQgY29tcGxldGUgY29tbWFuZHMuCgojIyMgU3RlcCAzOiBWZXJpZnkgYm90aCBjb250" + - "ZXh0cwoKYGBgYmFzaApkaWcgK3Nob3J0ICJhcGkuPGRvbWFpbj4iCmN1cmwgLUggIkhvc3Q6IGFw" + - "aS48ZG9tYWluPiIgImh0dHA6Ly8kR0FURVdBWV9BRERSL2hlYWx0aCIKa3ViZWN0bCAtLWNvbnRl" + - "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAt" + - "biBlbnZveS1nYXRld2F5IC1vIHdpZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + - "Y29udGV4dD4gZ2V0IGh0dHByb3V0ZXMgLUEKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxh" + - "bmUtY29udGV4dD4gZ2V0IHRjcHJvdXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1w" + - "bGFuZS1jb250ZXh0PiByb2xsb3V0IHN0YXR1cyBcCiAgZGVwbG95bWVudC9udmNhLW9wZXJhdG9y" + - "IC1uIG52Y2Etb3BlcmF0b3IgLS10aW1lb3V0PTEwbQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0" + - "ZS1wbGFuZS1jb250ZXh0PiB3YWl0IFwKICBudmNmYmFja2VuZC88Y29tcHV0ZS1wbGFuZS1jbHVz" + - "dGVyLW5hbWU+IC1uIG52Y2Etb3BlcmF0b3IgXAogIC0tZm9yPWpzb25wYXRoPSd7LnN0YXR1cy5h" + - "Z2VudFN0YXR1c30nPWhlYWx0aHkgLS10aW1lb3V0PTEwbQpgYGAKCi0tLQoKIyMgRXhhbXBsZSA1" + - "OiBEZXBsb3kgT25seSBEZXBlbmRlbmNpZXMKClVzZWZ1bCBmb3IgdGVzdGluZyBvciB3aGVuIGl0" + - "ZXJhdGluZyBvbiBzZXJ2aWNlIGNvbmZpZ3VyYXRpb24uCgpgYGBiYXNoCiMgRGVwbG95IGp1c3Qg" + - "TkFUUywgQ2Fzc2FuZHJhLCBPcGVuQmFvCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + - "bGVjdG9yIHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMKCiMgQ2hlY2sgc3RhdHVzCmt1" + - "YmVjdGwgZ2V0IHBvZHMgLW4gbmF0cy1zeXN0ZW0Ka3ViZWN0bCBnZXQgcG9kcyAtbiBjYXNzYW5k" + - "cmEtc3lzdGVtCmt1YmVjdGwgZ2V0IHBvZHMgLW4gdmF1bHQtc3lzdGVtCgojIERlcGxveSBqdXN0" + - "IG9uZSBzcGVjaWZpYyByZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVj" + - "dG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMKYGBgCgojIyMgU2VsZWN0b3IgcmVmZXJlbmNlCgp8IFNl" + - "bGVjdG9yIHwgUmVsZWFzZXMgfAp8LS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGByZWxlYXNlLWdy" + - "b3VwPWRlcGVuZGVuY2llc2AgfCBuYXRzLCBjYXNzYW5kcmEsIG9wZW5iYW8tc2VydmVyIHwKfCBg" + - "cmVsZWFzZS1ncm91cD1zZXJ2aWNlc2AgfCBhcGkta2V5cywgc2lzLCBhcGksIGludm9jYXRpb24t" + - "c2VydmljZSwgZ3JwYy1wcm94eSwgZXNzLWFwaSwgbm90YXJ5LXNlcnZpY2UsIHJldmFsLCBvcHRp" + - "b25hbCBsbG0tcmVxdWVzdC1yb3V0ZXIgYW5kIGxsbS1hcGktZ2F0ZXdheSB3aGVuIGBsbG0uZW5h" + - "YmxlZD10cnVlYCwgb3B0aW9uYWwgdmFuaXR5LWdhdGV3YXkgb25seSBpbiBzdGFjayBwYWNrYWdl" + - "cyB0aGF0IGluY2x1ZGUgdGhlIGFkZG9uIGFuZCBoYXZlIGBhZGRvbnMudmFuaXR5R2F0ZXdheS5l" + - "bmFibGVkPXRydWVgLCBvcHRpb25hbCBudmNmLXVpIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhh" + - "dCBpbmNsdWRlIHRoZSBhZGRvbiBhbmQgaGF2ZSBgYWRkb25zLm52Y2ZVaS5lbmFibGVkPXRydWVg" + - "IHwKfCBgbmFtZT1sbG0tcmVxdWVzdC1yb3V0ZXJgIHwgRGVwbG95IGp1c3QgdGhlIExMTSByZXF1" + - "ZXN0IHJvdXRlciB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCB8CnwgYG5hbWU9bGxtLWFwaS1nYXRl" + - "d2F5YCB8IERlcGxveSBqdXN0IHRoZSBMTE0gQVBJIGdhdGV3YXkgd2hlbiBgbGxtLmVuYWJsZWQ9" + - "dHJ1ZWAgfAp8IGBuYW1lPXZhbml0eS1nYXRld2F5YCB8IERlcGxveSBqdXN0IFZhbml0eSBHYXRl" + - "d2F5IG9ubHkgd2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5k" + - "IGBhZGRvbnMudmFuaXR5R2F0ZXdheS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1udmNmLXVpYCB8" + - "IERlcGxveSBOVkNGIFVJIG9ubHkgd2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0" + - "IHJlbGVhc2UgYW5kIGBhZGRvbnMubnZjZlVpLmVuYWJsZWQ9dHJ1ZWAgfAp8IGByZWxlYXNlLWdy" + - "b3VwPWluZ3Jlc3NgIHwgaW5ncmVzcyAoZ2F0ZXdheSByb3V0ZXMpIHwKfCBgbmFtZT08cmVsZWFz" + - "ZT5gIHwgQW55IGluZGl2aWR1YWwgcmVsZWFzZSBieSBuYW1lIHwKCk5vdGU6IGBhZG1pbi1pc3N1" + - "ZXItcHJveHlgIGRvZXMgbm90IGhhdmUgYSByZWxlYXNlLWdyb3VwIGxhYmVsLiBUYXJnZXQgaXQg" + - "d2l0aCBgLS1zZWxlY3RvciBuYW1lPWFkbWluLWlzc3Vlci1wcm94eWAuClBLBwgCUk5AfygAAH8o" + - "AABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAEwACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWlu" + - "c3RhbGxhdGlvbi9yZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kVVQFAAEA" + - "ps4SIyBTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbgoKVGhlIGNvbnRyb2wgcGxhbmUg" + - "YW5kIGNvbXB1dGUgcGxhbmUgYXJlIHNlcGFyYXRlIHN0YWNrcy4gSW5zdGFsbCB0aGUgY29udHJv" + - "bApwbGFuZSBmaXJzdCwgdGhlbiByZWdpc3RlciBhbmQgaW5zdGFsbCBlYWNoIGNvbXB1dGUgY2x1" + - "c3Rlci4gQ2hvb3NlIG9uZSBoYW5kb2ZmCmJlbG93IGFuZCB1c2UgaXQgZm9yIHRoZSBmdWxsIGxp" + - "ZmVjeWNsZS4gRG8gbm90IGNvbWJpbmUgYSBDTEktZ2VuZXJhdGVkIHByb2ZpbGUKd2l0aCB0aGUg" + - "SGVsbWZpbGUgdmFsdWVzIGZsb3cuCgojIyBDaG9vc2UgYSBIYW5kb2ZmCgp8IEZsb3cgfCBTb3Vy" + - "Y2Ugb2YgY29udHJvbC1wbGFuZSBlbmRwb2ludHMgfCBSZWdpc3RyYXRpb24gYXJ0aWZhY3QgfAp8" + - "LS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0t" + - "LS0tLS0tLS0tfAp8IEhlbG1maWxlIHZhbHVlcyB8IFNlcGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5k" + - "IGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZXMgfCBgZGVwbG95L3N0YWNrcy9udmNmLWNv" + - "bXB1dGUtcGxhbmUvcmVnaXN0cmF0aW9uLzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAg" + - "fAp8IENMSSBwcm9maWxlIHwgQ0xJLWdlbmVyYXRlZCBgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFn" + - "ZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sYCB8IENMSS1nZW5lcmF0ZWQgYGRlcGxv" + - "eS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVz" + - "LnlhbWxgIHwKClRoZSBDTEkgcHJvZmlsZSBpcyBtYW5kYXRvcnkgZm9yIHRoZSBDTEkgZmxvdyBh" + - "bmQgbXVzdCBub3QgYmUgaGFuZC1hdXRob3JlZC4KVGhlIEhlbG1maWxlIGZsb3cgZG9lcyBub3Qg" + - "Y29uc3VtZSBhIGNvbnRyb2wtcGxhbmUgcHJvZmlsZS4KCkNvbW1hbmRzIGJlbG93IHVzZSBtb25v" + - "cmVwbyBwYXRocyBmcm9tIHRoZSByZXBvc2l0b3J5IHJvb3QuIE9wZXJhdG9ycyB1c2luZwpleHRy" + - "YWN0ZWQgcGFja2FnZXMgbmVlZCBtYXRjaGluZy12ZXJzaW9uIGBudmNmLXNlbGYtbWFuYWdlZC1z" + - "dGFja2AgYW5kCmBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXMuIFN1YnN0aXR1dGUg" + - "dGhvc2UgYnVuZGxlIHJvb3RzIGZvcgpgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWRgIGFuZCBg" + - "ZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmVgLgoKIyMgSGVsbWZpbGUgVmFsdWVzIEZs" + - "b3cKCkNyZWF0ZSBib3RoIGVudmlyb25tZW50IGZpbGVzIGJlZm9yZSBpbnN0YWxsYXRpb246Cgot" + - "IGBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9lbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgZm9y" + - "IGNvbnRyb2wtcGxhbmUKICByZWdpc3RyeSwgZG9tYWluLCBHYXRld2F5LCByb3V0ZXMsIGFuZCBz" + - "ZXJ2aWNlIHNldHRpbmdzLgotIGBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZp" + - "cm9ubWVudHMvPGVudj4ueWFtbGAgZm9yIGNvbXB1dGUtcGxhbmUKICByZWdpc3RyeSwgcHVsbCBz" + - "ZWNyZXRzLCBhbmQgY29tcHV0ZS1yZWFjaGFibGUgSUNNUywgUmVWYWwsIGFuZCBOQVRTIHZhbHVl" + - "cy4KCkZvciBFS1MsIHVzZSB0aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXSho" + - "dHRwczovL2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFt" + - "cGxlKS4KVGhlIGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQga2VlcHMgdGhlIEVudm95IEdhdGV3" + - "YXkgY29udHJvbGxlciBpbgpgZW52b3ktZ2F0ZXdheS1zeXN0ZW1gLCBhdHRhY2hlcyByb3V0ZXMg" + - "dG8gYEdhdGV3YXkvbnZjZi1nYXRld2F5YCBpbgpgZW52b3ktZ2F0ZXdheWAsIGFuZCBlbmFibGVz" + - "IHRoZSBOQVRTIHJvdXRlLiBUaGUgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCB1c2VzCnRoZSBl" + - "eHRlcm5hbCBhZGRyZXNzIHBsdXMgdGhlIHNlcnZpY2UgaG9zdCBvdmVycmlkZXMuIEhlcmUsCmA8" + - "Z2F0ZXdheS1hZGRyZXNzPmAgaXMgdGhlIE5MQiBhZGRyZXNzIGFuZCBgPGdhdGV3YXktZG9tYWlu" + - "PmAgaXMgdGhlIEROUyBiYXNlCndob3NlIHNlcnZpY2Ugc3ViZG9tYWlucyByZXNvbHZlIHRvIHRo" + - "YXQgTkxCOgoKYGBgeWFtbAojIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL2Vudmlyb25tZW50" + - "cy88ZW52Pi55YW1sCmdsb2JhbDoKICBkb21haW46ICI8Z2F0ZXdheS1kb21haW4+IgogIHdvcmtl" + - "ckVuZHBvaW50czoKICAgIG52Y2ZTZXJ2aWNlVVJMOiAiaHR0cDovL2FwaS48Z2F0ZXdheS1kb21h" + - "aW4+IgogICAgbnZjZkdycGNTZXJ2aWNlVVJMOiAiaHR0cDovL3dvcmtlci1hcGkuPGdhdGV3YXkt" + - "ZG9tYWluPiIKICAgIG52Y2ZOYXRzU2VydmljZVVSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNz" + - "Pjo0MjIyIgogICAgbnZjdFNlcnZpY2VVUkw6ICJodHRwOi8vdGFza3MuPGdhdGV3YXktZG9tYWlu" + - "PiIKICAgIG52Y3RHcnBjU2VydmljZVVSTDogImh0dHA6Ly93b3JrZXItdGFza3MuPGdhdGV3YXkt" + - "ZG9tYWluPiIKICAgIGludm9jYXRpb25TZXJ2aWNlVVJMOiAiaHR0cDovL2ludm9jYXRpb24uPGdh" + - "dGV3YXktZG9tYWluPiIKCmdycGNwcm94eToKICBudmNmR3JwY1NlcnZpY2VVUkw6ICJodHRwOi8v" + - "YXBpLm52Y2Yuc3ZjLmNsdXN0ZXIubG9jYWw6OTA5MCIKCmluZ3Jlc3M6CiAgZ2F0ZXdheUFwaToK" + - "ICAgIGNvbnRyb2xsZXJOYW1lc3BhY2U6IGVudm95LWdhdGV3YXktc3lzdGVtCiAgICBnYXRld2F5" + - "czoKICAgICAgc2hhcmVkOiB7bmFtZTogbnZjZi1nYXRld2F5LCBuYW1lc3BhY2U6IGVudm95LWdh" + - "dGV3YXl9CiAgICAgIGdycGM6IHtuYW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3kt" + - "Z2F0ZXdheX0KICAgICAgbmF0czoKICAgICAgICBuYW1lOiBudmNmLWdhdGV3YXkKICAgICAgICBu" + - "YW1lc3BhY2U6IGVudm95LWdhdGV3YXkKICAgICAgICBsaXN0ZW5lck5hbWU6IG5hdHMKICAgIHJv" + - "dXRlczoKICAgICAgbnZjZkFwaToKICAgICAgICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1" + - "ZQogICAgICAgICAgaG9zdG5hbWVzOiBbIndvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiJdCiAg" + - "ICAgIG52Y3RBcGk6CiAgICAgICAgZ3JwYzoKICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAg" + - "ICAgIGhvc3RuYW1lczogWyJ3b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG5h" + - "dHM6CiAgICAgICAgZW5hYmxlZDogdHJ1ZQoKb3BlbmJhbzoKICBtaWdyYXRpb25zOgogICAgaXNz" + - "dWVyRGlzY292ZXJ5OgogICAgICBlbmFibGVkOiB0cnVlCmBgYAoKYGBgeWFtbAojIGRlcGxveS9z" + - "dGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoK" + - "ICBudmNhT3BlcmF0b3I6CiAgICBzZWxmTWFuYWdlZDoKICAgICAgaWNtc1NlcnZpY2VVUkw6ICJo" + - "dHRwOi8vPGdhdGV3YXktYWRkcmVzcz4iCiAgICAgIGljbXNTZXJ2aWNlSG9zdEhlYWRlck92ZXJy" + - "aWRlOiAic2lzLjxnYXRld2F5LWRvbWFpbj4iCiAgICAgIHJldmFsU2VydmljZVVSTDogImh0dHA6" + - "Ly88Z2F0ZXdheS1hZGRyZXNzPiIKICAgICAgcmV2YWxTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRl" + - "OiAicmV2YWwuPGdhdGV3YXktZG9tYWluPiIKICAgICAgbmF0c1VSTDogIm5hdHM6Ly88Z2F0ZXdh" + - "eS1hZGRyZXNzPjo0MjIyIgogICAgICBuYXRzSG9zdE92ZXJyaWRlOiAibmF0cy48Z2F0ZXdheS1k" + - "b21haW4+IgpgYGAKClByZXZpZXcgYW5kIGluc3RhbGwgdGhlIGNvbnRyb2wgcGxhbmUgYWdhaW5z" + - "dCBpdHMgY29udGV4dDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdl" + - "ZCB0ZW1wbGF0ZSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNv" + - "bnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFn" + - "ZWQgaW5zdGFsbCBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNv" + - "bnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpCZWZvcmUgcmVnaXN0ZXJpbmcgdGhyb3VnaCBh" + - "IGJhcmUgR2F0ZXdheSBhZGRyZXNzLCBjcmVhdGUgb3IgdXBkYXRlIHRoZSBDTEkKY29uZmlnIHBh" + - "c3NlZCBhcyBgTlZDRl9DTElfQ09ORklHYDoKCmBgYHlhbWwKYmFzZV9odHRwX3VybDogImh0dHA6" + - "Ly88Z2F0ZXdheS1hZGRyZXNzPiIKaW52b2tlX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNz" + - "PiIKYmFzZV9ncnBjX3VybDogIjxnYXRld2F5LWFkZHJlc3M+OjEwMDgxIgphcGlfa2V5c19zZXJ2" + - "aWNlX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKaWNtc191cmw6ICJodHRwOi8vPGdh" + - "dGV3YXktYWRkcmVzcz4iCmFwaV9ob3N0OiAiYXBpLjxnYXRld2F5LWRvbWFpbj4iCmFwaV9rZXlz" + - "X2hvc3Q6ICJhcGkta2V5cy48Z2F0ZXdheS1kb21haW4+IgppbnZva2VfaG9zdDogImludm9jYXRp" + - "b24uPGdhdGV3YXktZG9tYWluPiIKaWNtc19ob3N0OiAic2lzLjxnYXRld2F5LWRvbWFpbj4iCmBg" + - "YAoKSG9zdCBmaWVsZHMgY29udGFpbiBob3N0bmFtZXMgb25seSwgd2l0aG91dCBhIFVSTCBzY2hl" + - "bWUuIGBJQ01TX1VSTGAgbWFwcyBvbmx5CnRvIHRoZSByZWdpc3RyYXRpb24gY29tbWFuZCdzIGAt" + - "LWljbXMtdXJsYDsgYGljbXNfaG9zdGAgaW4gdGhlIGNvbmZpZyBzdXBwbGllcwp0aGUgR2F0ZXdh" + - "eSBIb3N0IGhlYWRlci4gVGhlcmUgaXMgbm8gYC0taWNtcy1ob3N0YCBNYWtlIG9yIENMSSBmbGFn" + - "LgoKUmVnaXN0ZXIgZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0LCB0aGVuIGluc3RhbGwgdGhlIGNv" + - "bXB1dGUgcGxhbmU6CgpgYGBiYXNoCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUt" + - "cGxhbmUgcmVnaXN0ZXItY2x1c3RlciBcCiAgQ0xVU1RFUl9OQU1FPTxjbHVzdGVyLW5hbWU+IFwK" + - "ICBOQ0FfSUQ9PG5jYS1pZD4gXAogIENMVVNURVJfUkVHSU9OPTxyZWdpb24+IFwKICBJQ01TX1VS" + - "TD1odHRwOi8vPGdhdGV3YXktYWRkcmVzcz4gXAogIEtVQkVDT05GSUdfRklMRT08Y29tcHV0ZS1w" + - "bGFuZS1rdWJlY29uZmlnPiBcCiAgTlZDRl9DTEk9PHBhdGgtdG8tbnZjZi1jbGk+IFwKICBOVkNG" + - "X0NMSV9DT05GSUc9PHBhdGgtdG8tbnZjZi1jbGktY29uZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3Rh" + - "Y2tzL252Y2YtY29tcHV0ZS1wbGFuZSBpbnN0YWxsIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXIt" + - "bmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRl" + - "LXBsYW5lLWt1YmVjb25maWc+CmBgYAoKUmVnaXN0cmF0aW9uIGRpc2NvdmVycyB0aGUgT0lEQyBp" + - "c3N1ZXIgYW5kIEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBrdWJlIGNvbnRleHQuCkluIGEgbXVsdGkt" + - "Y2x1c3RlciBkZXBsb3ltZW50LCBgS1VCRUNPTkZJR19GSUxFYCBpcyByZXF1aXJlZCBvbiBib3Ro" + - "CmNvbXB1dGUtcGxhbmUgY29tbWFuZHMuIEluIGEgc2FtZS1jbHVzdGVyIGRlcGxveW1lbnQgaXQg" + - "bWF5IGJlIG9taXR0ZWQgb25seQp3aGVuIHRoZSBhbWJpZW50IGNvbnRleHQgaXMgYWxyZWFkeSB0" + - "aGUgdGFyZ2V0IGNsdXN0ZXIuCgojIyBDTEkgUHJvZmlsZSBGbG93CgpSdW4gdGhlIENMSSBjb250" + - "cm9sLXBsYW5lIGluc3RhbGwgZmlyc3QuIEl0IGNyZWF0ZXMgdGhlIHByb2ZpbGUgY29uc3VtZWQg" + - "YnkKY29tcHV0ZS1wbGFuZSByZWdpc3RyYXRpb246CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmln" + - "IDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0" + - "YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tz" + - "L252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29u" + - "dHJvbC1wbGFuZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUt" + - "cGxhbmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgaW5zdGFsbCAtLWNvbnRy" + - "b2wtcGxhbmUgXAogIC0tY2x1c3Rlci1uYW1lIDxjb250cm9sLXBsYW5lLWNsdXN0ZXItbmFtZT4g" + - "XAogIC0tcmVnaW9uIDxyZWdpb24+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKdGVzdCAtcyBkZXBs" + - "b3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWwKYGBg" + - "CgpVc2UgdGhlIGZ1bGwgcGVyc2lzdGVudCBwcmVmaXggZm9yIGJvdGggY29tcHV0ZS1wbGFuZSBj" + - "b21tYW5kczoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQg" + - "XAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAg" + - "LS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwK" + - "ICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgY29tcHV0ZS1wbGFuZSByZWdpc3RlciBcCiAg" + - "LS1jb250cm9sLXBsYW5lLXByb2ZpbGUgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2Nv" + - "bnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sIFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFu" + - "ZS1jbHVzdGVyLW5hbWU+IFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0" + - "PiBcCiAgLS1yZWdpb24gPHJlZ2lvbj4gXAogIC0tb3V0cHV0IGRlcGxveS9zdGFja3MvbnZjZi1j" + - "b21wdXRlLXBsYW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZh" + - "bHVlcy55YW1sCgpudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1j" + - "b250cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1" + - "dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52" + - "IDxlbnY+IFwKICAtLXBsYWluIFwKICBjb21wdXRlLXBsYW5lIGluc3RhbGwgXAogIC0tdmFsdWVz" + + "b24iLAogICAgICAiVGhlIGFnZW50IGNhcHR1cmVkIGJhc2VsaW5lIHdpdGggJ2hlbG1maWxlIC0t" + + "c2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUnIiwKICAgICAgIlRoZSBhZ2VudCBtb2Rp" + + "ZmllZCB0aGUgcmVsZWFzZSB2YWx1ZXMgYmxvY2sgdG8gaW5jbHVkZSByZXNvdXJjZSBsaW1pdHMg" + + "d2l0aCBtZW1vcnk6IDE2R2kiLAogICAgICAiVGhlIGFnZW50IHJlLWluY2x1ZGVkIGdsb2JhbC55" + + "YW1sLmdvdG1wbCBhbmQgc2VjcmV0cyBmaWxlIGluIHRoZSB2YWx1ZXM6IGJsb2NrIChub3QganVz" + + "dCB0aGUgb3ZlcnJpZGUgYWxvbmUpIiwKICAgICAgIlRoZSBhZ2VudCB3YXJuZWQgYWJvdXQgdGhl" + + "IFlBTUwgbWVyZ2UgZ290Y2hhOiBzcGVjaWZ5aW5nIHZhbHVlczogcmVwbGFjZXMgdGhlIHRlbXBs" + + "YXRlJ3MgdmFsdWVzIGxpc3QgZW50aXJlbHkiLAogICAgICAiVGhlIGFnZW50IHByZXZpZXdlZCB0" + + "aGUgY2hhbmdlIHdpdGggaGVsbWZpbGUgdGVtcGxhdGUgYW5kIGRpZmYgYmVmb3JlIGFwcGx5aW5n" + + "IHdpdGggc3luYyIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTNi1zZWxlY3RpdmUtc3luYy1k" + + "ZXBlbmRlbmNpZXMiLAogICAgInF1ZXN0aW9uIjogIkRlcGxveSBvbmx5IHRoZSBOVkNGIGRlcGVu" + + "ZGVuY2llcyAtLSBOQVRTLCBDYXNzYW5kcmEsIGFuZCBPcGVuQmFvIC0tIGZvciB0ZXN0aW5nIiwK" + + "ICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAog" + + "ICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgdXNlZCB0aGUgaGVsbWZpbGUgc2VsZWN0b3Ig" + + "dG8gZGVwbG95IG9ubHkgdGhlIGRlcGVuZGVuY2llcyByZWxlYXNlIGdyb3VwLCB0aGVuIHZlcmlm" + + "aWVkIHBvZHMgaW4gdGhlIGRlcGVuZGVuY3kgbmFtZXNwYWNlcy4iLAogICAgImV4cGVjdGVkX2Jl" + + "aGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWlu" + + "c3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdl" + + "bnQgdXNlZCAnaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llcyBz" + + "eW5jJyB0byBkZXBsb3kgb25seSBkZXBlbmRlbmNpZXMiLAogICAgICAiVGhlIGFnZW50IHZlcmlm" + + "aWVkIHBvZHMgaW4gZGVwZW5kZW5jeSBuYW1lc3BhY2VzIChuYXRzLXN5c3RlbSwgY2Fzc2FuZHJh" + + "LXN5c3RlbSwgdmF1bHQtc3lzdGVtKSIsCiAgICAgICJUaGUgYWdlbnQgcHJvdmlkZWQgdGhlIHNl" + + "bGVjdG9yIHJlZmVyZW5jZSBmb3IgdGFyZ2V0aW5nIG90aGVyIHJlbGVhc2UgZ3JvdXBzIgogICAg" + + "XQogIH0sCiAgewogICAgImlkIjogIlM3LWRlYnVnLWltYWdlcHVsbGJhY2tvZmYiLAogICAgInF1" + + "ZXN0aW9uIjogIkNhc3NhbmRyYSBwb2RzIGFyZSBpbiBJbWFnZVB1bGxCYWNrT2ZmIHdpdGggNDAx" + + "IFVuYXV0aG9yaXplZCIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQt" + + "aW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IHJlYWQgdGhlIGRl" + + "YnVnZ2luZyByZWZlcmVuY2UgYW5kIHJhbiBkaWFnbm9zdGljIGNvbW1hbmRzIHRvIGlkZW50aWZ5" + + "IHRoZSByb290IGNhdXNlOiBkZXNjcmliZWQgdGhlIHBvZCwgY2hlY2tlZCBmb3IgcHVsbCBzZWNy" + + "ZXRzLCBjaGVja2VkIGltYWdlUHVsbFNlY3JldHMgb24gdGhlIHBvZCBzcGVjIGFuZCBzZXJ2aWNl" + + "IGFjY291bnQuIEl0IGlkZW50aWZpZWQgdGhlIGlzc3VlIChtaXNzaW5nIHNlY3JldCwgd3Jvbmcg" + + "Y3JlZGVudGlhbHMsIG9yIG1pc3NpbmcgaW1hZ2VQdWxsU2VjcmV0cykgYW5kIHByb3ZpZGVkIHRo" + + "ZSBjb3JyZWN0IGZpeC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFn" + + "ZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBhbmQg" + + "cmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQiLAogICAgICAiVGhlIGFnZW50IHJhbiAna3ViZWN0bCBk" + + "ZXNjcmliZSBwb2QnIHRvIHNlZSB0aGUgSW1hZ2VQdWxsQmFja09mZiBldmVudHMiLAogICAgICAi" + + "VGhlIGFnZW50IGNoZWNrZWQgZm9yIHB1bGwgc2VjcmV0cyBpbiB0aGUgY2Fzc2FuZHJhLXN5c3Rl" + + "bSBuYW1lc3BhY2UiLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQgaW1hZ2VQdWxsU2VjcmV0cyBv" + + "biB0aGUgcG9kIHNwZWMgYW5kL29yIHNlcnZpY2UgYWNjb3VudCIsCiAgICAgICJUaGUgYWdlbnQg" + + "aWRlbnRpZmllZCB0aGUgcm9vdCBjYXVzZSBhbmQgcHJvdmlkZWQgYSBzcGVjaWZpYyBmaXgiCiAg" + + "ICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzktcmVtb3RlLWVrcy1yb3V0aW5nLWFuZC1zZWNyZXRz" + + "IiwKICAgICJxdWVzdGlvbiI6ICJDb25maWd1cmUgYSByZW1vdGUgRUtTIGNvbXB1dGUgY2x1c3Rl" + + "ciB0byByZWFjaCBteSBOVkNGIGNvbnRyb2wgcGxhbmUgdGhyb3VnaCBpdHMgRW52b3kgR2F0ZXdh" + + "eSwgaW5jbHVkaW5nIE5BVFMgYW5kIHByaXZhdGUtcmVnaXN0cnkgcHVsbCBzZWNyZXRzLiIsCiAg" + + "ICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAg" + + "ICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgdGhlIGNvbnRyb2wgcGxhbmUg" + + "dG8gdXNlIHRoZSBFbnZveSBHYXRld2F5IGNvbnRyb2xsZXIgaW4gZW52b3ktZ2F0ZXdheS1zeXN0" + + "ZW0gYW5kIEdhdGV3YXkvbnZjZi1nYXRld2F5IGluIGVudm95LWdhdGV3YXksIHNldCBhbGwgc2l4" + + "IHJlbW90ZSB3b3JrZXIgZW5kcG9pbnRzIGFuZCB0aGUgZ3JwYy1wcm94eSBsb2NhbCBvdmVycmlk" + + "ZSwgZW5hYmxlZCBOVkNGIGFuZCBOVkNUIGdSUEMgcm91dGVzIHBsdXMgTkFUUywgYW5kIGVuYWJs" + + "ZWQgT3BlbkJhbyBpc3N1ZXIgZGlzY292ZXJ5LiBJdCBjb25maWd1cmVkIHRoZSBiYXJlLUdhdGV3" + + "YXkgQ0xJIFVSTCBhbmQgSG9zdCBmaWVsZHMgaW5jbHVkaW5nIGljbXNfaG9zdCwgcGx1cyB0aGUg" + + "Y29tcHV0ZS1wbGFuZSBJQ01TLCBSZVZhbCwgYW5kIE5BVFMgZXh0ZXJuYWwgVVJMcyBhbmQgaG9z" + + "dCBvdmVycmlkZXMuIEl0IGNyZWF0ZWQgdGhlIHB1bGwgc2VjcmV0IGluIGFsbCBjb250cm9sLXBs" + + "YW5lIG5hbWVzcGFjZXMgaW5jbHVkaW5nIGNlcnQtbWFuYWdlciwgYnV0IG9ubHkgaW4gbnZjYS1v" + + "cGVyYXRvciBvbiB0aGUgY29tcHV0ZSBjbHVzdGVyOyB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIG1p" + + "cnJvciBpdCB0byBudmNhLXN5c3RlbS4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAg" + + "ICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lM" + + "TC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGluZ3Jlc3Mu" + + "Z2F0ZXdheUFwaS5jb250cm9sbGVyTmFtZXNwYWNlIHRvIGVudm95LWdhdGV3YXktc3lzdGVtIiwK" + + "ICAgICAgIlRoZSBhZ2VudCBzZXQgc2hhcmVkLCBncnBjLCBhbmQgbmF0cyBHYXRld2F5IHJlZmVy" + + "ZW5jZXMgdG8gbmFtZSBudmNmLWdhdGV3YXkgYW5kIG5hbWVzcGFjZSBlbnZveS1nYXRld2F5IiwK" + + "ICAgICAgIlRoZSBhZ2VudCBzZXQgZ2xvYmFsLndvcmtlckVuZHBvaW50cy5udmNmU2VydmljZVVS" + + "TCwgbnZjZkdycGNTZXJ2aWNlVVJMLCBudmNmTmF0c1NlcnZpY2VVUkwsIG52Y3RTZXJ2aWNlVVJM" + + "LCBudmN0R3JwY1NlcnZpY2VVUkwsIGFuZCBpbnZvY2F0aW9uU2VydmljZVVSTCIsCiAgICAgICJU" + + "aGUgYWdlbnQgc2V0IGdycGNwcm94eS5udmNmR3JwY1NlcnZpY2VVUkwgdG8gdGhlIGNvbnRyb2wt" + + "cGxhbmUtbG9jYWwgQVBJIGdSUEMgc2VydmljZSIsCiAgICAgICJUaGUgYWdlbnQgZW5hYmxlZCBi" + + "b3RoIGluZ3Jlc3MuZ2F0ZXdheUFwaS5yb3V0ZXMubnZjZkFwaS5ncnBjIGFuZCBudmN0QXBpLmdy" + + "cGMgd2l0aCB3b3JrZXItYXBpIGFuZCB3b3JrZXItdGFza3MgaG9zdG5hbWVzIiwKICAgICAgIlRo" + + "ZSBhZ2VudCBleHBsaWNpdGx5IHNldCBpbmdyZXNzLmdhdGV3YXlBcGkucm91dGVzLm5hdHMuZW5h" + + "YmxlZCB0byB0cnVlIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgb3BlbmJhby5taWdyYXRpb25zLmlz" + + "c3VlckRpc2NvdmVyeS5lbmFibGVkIHRvIHRydWUiLAogICAgICAiVGhlIGFnZW50IGNvbmZpZ3Vy" + + "ZWQgdGhlIGJhcmUtR2F0ZXdheSBDTEkgVVJMIGFuZCBIb3N0IGZpZWxkcywgaW5jbHVkaW5nIHNj" + + "aGVtZS1sZXNzIGljbXNfaG9zdCIsCiAgICAgICJUaGUgYWdlbnQgY29uZmlndXJlZCBjb21wdXRl" + + "LXBsYW5lIGljbXNTZXJ2aWNlVVJMLCBpY21zU2VydmljZUhvc3RIZWFkZXJPdmVycmlkZSwgcmV2" + + "YWxTZXJ2aWNlVVJMLCByZXZhbFNlcnZpY2VIb3N0SGVhZGVyT3ZlcnJpZGUsIG5hdHNVUkwsIGFu" + + "ZCBuYXRzSG9zdE92ZXJyaWRlIiwKICAgICAgIlRoZSBjb250cm9sLXBsYW5lIHB1bGwtc2VjcmV0" + + "IG5hbWVzcGFjZSBsaXN0IGluY2x1ZGVkIGNlcnQtbWFuYWdlciIsCiAgICAgICJUaGUgY29tcHV0" + + "ZS1wbGFuZSBzZWNyZXQgd2FzIGNyZWF0ZWQgb25seSBpbiBudmNhLW9wZXJhdG9yIGFuZCBtaXJy" + + "b3JlZCBieSB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIHRvIG52Y2Etc3lzdGVtIgogICAgXQogIH0s" + + "CiAgewogICAgImlkIjogIkcxMS1zcGxpdC10ZWFyZG93biIsCiAgICAicXVlc3Rpb24iOiAiVGVh" + + "ciBkb3duIG15IHNwbGl0IGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZGVwbG95bWVu" + + "dCBzYWZlbHkuIFNob3cgYm90aCB0aGUgSGVsbWZpbGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSB2" + + "YXJpYW50cy4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + + "bGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBIZWxtZmlsZSBmbG93IGRlc3Ryb3ll" + + "ZCBhbmQgY29uZmlybWVkIGRlcmVnaXN0cmF0aW9uIG9mIGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciBi" + + "ZWZvcmUgZGVzdHJveWluZyB0aGUgY29udHJvbCBwbGFuZSBhbmQgcGFzc2VkIGJvdGggY29udHJv" + + "bC1wbGFuZSBrdWJlY29uZmlnIGZvcm1zLiBCZWZvcmUgZWl0aGVyIGhhbmRvZmYgY291bGQgZGVz" + + "dHJveSB0aGUgY29udHJvbCBwbGFuZSwgYm90aCB0ZWFyZG93biBmbG93cyB3YXJuZWQgdGhhdCBu" + + "YW1lc3BhY2UgcHJlc2VydmF0aW9uIGRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2Us" + + "IHJlcXVpcmVkIGVmZmVjdGl2ZSBjZXJ0TWFuYWdlci5lbmFibGVkOiBmYWxzZSBmb3IgYW4gZXh0" + + "ZXJuYWwgaW5zdGFsbGF0aW9uIGFuZCBhYm9ydGVkIGlmIHRydWUsIGFuZCB2ZXJpZmllZCBtYXRj" + + "aGluZyByZWxlYXNlIG93bmVyc2hpcCBmb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxl" + + "YXNlLCBhYm9ydGluZyBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQgZXZpZGVuY2UuIFRoZXkgcHJl" + + "c2VydmVkIHRoZSBuYW1lc3BhY2UgYnkgZGVmYXVsdCBhbmQgZGlkIG5vdCBkZWxldGUgaXQgd2l0" + + "aG91dCBuYW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQgZXhwbGljaXQgY29uZmlybWF0aW9uLiBUaGUg" + + "Q0xJIGZsb3cgcmV0YWluZWQgdGhlIGdlbmVyYXRlZCByZWdpc3RyYXRpb24gdmFsdWVzLCB1c2Vk" + + "IHRoZSBmdWxsLXByZWZpeCBzdGF0dXMgY29tbWFuZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0" + + "aW9ucywgc3RhdGVkIHRoYXQgbmFtZWQtY2x1c3RlciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkg" + + "SUNNUyBhbmQgY2Fubm90IHByZWRpY3QgY29uZGl0aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFs" + + "LCBhbmQgZ290IGV4cGxpY2l0IGNvbmZpcm1hdGlvbiB3aGVuIHRoZSB0YXJnZXQgd2FzIHRoZSBs" + + "YXN0IHJlZ2lzdGVyZWQgY2x1c3Rlci4gSXQgdGhlbiBwcmV2aWV3ZWQgYW5kIHJhbiBkb3duIHdp" + + "dGggdGhlIGZ1bGwgcGVyc2lzdGVudCBwcmVmaXgsIHJlbW92aW5nIHRoZSBjb250cm9sIHBsYW5l" + + "IG9ubHkgYWZ0ZXIgdGhlIGxhc3QgcmVnaXN0cmF0aW9uIHdhcyBnb25lLiIsCiAgICAiZXhwZWN0" + + "ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFn" + + "ZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIkZv" + + "ciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRoZSBIZWxtZmlsZSBmbG93IHJhbiB0aGUgY29tcHV0" + + "ZS1wbGFuZSBNYWtlZmlsZSBkZXN0cm95IHRhcmdldCB3aXRoIGl0cyBjb21wdXRlIGt1YmVjb25m" + + "aWciLAogICAgICAiQWZ0ZXIgY29uZmlybWF0aW9uLCB0aGUgSGVsbWZpbGUgZmxvdyByYW4gY2x1" + + "c3RlciBkZWxldGUgd2l0aCBjbHVzdGVySUQgYW5kIG5jYUlEIGJlZm9yZSBjb250cm9sLXBsYW5l" + + "IGRlc3RydWN0aW9uIiwKICAgICAgIkJlZm9yZSBlaXRoZXIgaGFuZG9mZiBjb3VsZCBkZXN0cm95" + + "IHRoZSBjb250cm9sIHBsYW5lLCBib3RoIHRlYXJkb3duIGZsb3dzIHdhcm5lZCB0aGF0IG5hbWVz" + + "cGFjZSBwcmVzZXJ2YXRpb24gZG9lcyBub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZSwgcmVx" + + "dWlyZWQgZWZmZWN0aXZlIGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNlIGZvciBhbiBleHRlcm5h" + + "bCBpbnN0YWxsYXRpb24gYW5kIGFib3J0ZWQgaWYgdHJ1ZSwgYW5kIHZlcmlmaWVkIGludGVuZGVk" + + "IHN0YWNrIG93bmVyc2hpcCB3aGVuIGVuYWJsZWQsIGFib3J0aW5nIG9uIG1pc3Npbmcgb3IgbWlz" + + "bWF0Y2hlZCBldmlkZW5jZSIsCiAgICAgICJCb3RoIHRlYXJkb3duIGZsb3dzIHByZXNlcnZlZCB0" + + "aGUgY2VydC1tYW5hZ2VyIG5hbWVzcGFjZSBieSBkZWZhdWx0IGFuZCBkaWQgbm90IGRlbGV0ZSBp" + + "dCB3aXRob3V0IG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBleHBsaWNpdCBjb25maXJtYXRpb24i" + + "LAogICAgICAiVGhlIEhlbG1maWxlIGZsb3cgcmFuIGNvbnRyb2wtcGxhbmUgTWFrZWZpbGUgZGVz" + + "dHJveSB3aXRoIGJvdGggS1VCRUNPTkZJRyBhbmQgS1VCRUNPTkZJR19GSUxFIiwKICAgICAgIlRo" + + "ZSBDTEkgZmxvdyByZXRhaW5lZCBvdXQvPGNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlh" + + "bWwgdW50aWwgdGVhcmRvd24gY29tcGxldGVkIiwKICAgICAgIkJlZm9yZSByZWFsIGRvd24sIHRo" + + "ZSBDTEkgZmxvdyB1c2VkIHRoZSBmdWxsLXByZWZpeCBzdGF0dXMgY29tbWFuZCB0byBpbnNwZWN0" + + "IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRoYXQgbmFtZWQtY2x1c3RlciBwbGFuLW9ubHkg" + + "ZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90IHByZWRpY3QgY29uZGl0aW9uYWwgY29udHJv" + + "bC1wbGFuZSByZW1vdmFsLCB3YXJuZWQgd2hlbiB0aGUgdGFyZ2V0IHdhcyB0aGUgbGFzdCByZWdp" + + "c3RlcmVkIGNsdXN0ZXIsIGFuZCBnb3QgZXhwbGljaXQgY29uZmlybWF0aW9uIiwKICAgICAgIlRo" + + "ZSBDTEkgZmxvdyB1c2VkIC0tY29uZmlnLCBib3RoIHN0YWNrIHBhdGhzLCAtLWVudiwgLS1wbGFp" + + "biwgYm90aCBjb250ZXh0cywgYW5kIC0taWNtcy11cmwgZm9yIGRvd24gLS1wbGFuLW9ubHkgYW5k" + + "IHRoZW4gZG93biIsCiAgICAgICJUaGUgYWdlbnQgc3RhdGVkIHRoYXQgZG93biB1bnJlZ2lzdGVy" + + "cyBlYWNoIGNvbXB1dGUgY2x1c3RlciBhbmQgcmVtb3ZlcyB0aGUgY29udHJvbCBwbGFuZSBvbmx5" + + "IGFmdGVyIG5vIHJlZ2lzdHJhdGlvbnMgcmVtYWluIgogICAgXQogIH0sCiAgewogICAgImlkIjog" + + "IlMxMy12YWx1ZXMtcHJlY2VkZW5jZSIsCiAgICAicXVlc3Rpb24iOiAiSSBhZGRlZCBhIHZhbHVl" + + "IHRvIG15IGVudmlyb25tZW50IFlBTUwgYnV0IGl0J3MgYmVpbmcgc2lsZW50bHkgaWdub3JlZC4g" + + "SG93IGRvIGhlbG1maWxlIHZhbHVlcyB3b3JrIGluIE5WQ0Y/IiwKICAgICJleHBlY3RlZF9za2ls" + + "bCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6" + + "ICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSB2YWx1ZXMgcHJlY2VkZW5jZSBjaGFpbiAoYmFzZS55" + + "YW1sLCBlbnYgWUFNTCwgZ2xvYmFsLnlhbWwuZ290bXBsLCBzZWNyZXRzLCBpbmxpbmUgdmFsdWVz" + + "KSwgaWRlbnRpZmllZCB0aGF0IGdsb2JhbC55YW1sLmdvdG1wbCBvbmx5IHBhc3NlcyB0aHJvdWdo" + + "IHNwZWNpZmljIGtleXMsIGFuZCBleHBsYWluZWQgdGhhdCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVz" + + "IG11c3QgdXNlIHJlbGVhc2UgaW5saW5lIHZhbHVlcyBibG9ja3MuIiwKICAgICJleHBlY3RlZF9i" + + "ZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1p" + + "bnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFn" + + "ZW50IGV4cGxhaW5lZCB0aGUgdmFsdWVzIHByZWNlZGVuY2UgY2hhaW46IGJhc2UueWFtbCAtPiBl" + + "bnYgWUFNTCAtPiBnbG9iYWwueWFtbC5nb3RtcGwgLT4gc2VjcmV0cyAtPiBpbmxpbmUgdmFsdWVz" + + "IiwKICAgICAgIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoYXQgZ2xvYmFsLnlhbWwuZ290bXBsIG9u" + + "bHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMga2V5cyAoY2Fzc2FuZHJhLnJlcGxpY2FDb3VudCwg" + + "Z2xvYmFsLnN0b3JhZ2VDbGFzcywgZ2xvYmFsLmltYWdlLCBldGMuKSIsCiAgICAgICJUaGUgYWdl" + + "bnQgZXhwbGFpbmVkIHRoYXQgYXJiaXRyYXJ5IGNoYXJ0IHZhbHVlcyBtdXN0IGJlIHNldCB2aWEg" + + "cmVsZWFzZSBpbmxpbmUgdmFsdWVzOiBibG9ja3MiLAogICAgICAiVGhlIGFnZW50IGxpc3RlZCBl" + + "eGFtcGxlcyBvZiB2YWx1ZXMgdGhhdCBhcmUgcHJvcGFnYXRlZCBhbmQgYXJiaXRyYXJ5IGNoYXJ0" + + "IHZhbHVlcyB0aGF0IHJlcXVpcmUgYSByZWxlYXNlIHZhbHVlcyBibG9jayIKICAgIF0KICB9LAog" + + "IHsKICAgICJpZCI6ICJTMTQtZW5hYmxlLWxsbS1mdW5jdGlvbnMiLAogICAgInF1ZXN0aW9uIjog" + + "IkkgbmVlZCB0byBkZXBsb3kgZnVuY3Rpb25UeXBlOiBMTE0gZnVuY3Rpb25zIG9uIGEgc2VsZi1t" + + "YW5hZ2VkLCBzaW5nbGUtbm9kZSBpc29sYXRlZCB0ZXN0IGNsdXN0ZXIuIFdoYXQgSGVsbWZpbGUg" + + "Y29uZmlndXJhdGlvbiBhbmQgdmVyaWZpY2F0aW9uIHN0ZXBzIGRvIEkgbmVlZD8iLAogICAgImV4" + + "cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3Jv" + + "dW5kX3RydXRoIjogIlRoZSBhZ2VudCBlbmFibGVkIHRoZSBMTE0gYWRkb24gd2l0aCBhZGRvbnMu" + + "bGxtLmVuYWJsZWQsIGNvbmZpZ3VyZWQgc2luZ2xlIHJlcGxpY2FzIGZvciB0aGUgTExNIEFQSSBH" + + "YXRld2F5IGFuZCByZXF1ZXN0IHJvdXRlciwgYW5kIGV4cGxhaW5lZCB0aGF0IHRoZSByZXF1ZXN0" + + "IHJvdXRlciB1c2VzIHBvd2VyLW9mLXR3byB3aGVuIG5vIGxvYWQtYmFsYW5jZXIgY29uZmlndXJh" + + "dGlvbiBpcyBzZXQuIEl0IGxpbmtlZCB0aGUgY2Fub25pY2FsIHJlcXVlc3Qtcm91dGVyIGxvYWQt" + + "YmFsYW5jaW5nIGd1aWRlIGZvciBvdGhlciByb3V0aW5nIG1ldGhvZHMuIEZvciB0aGUgaXNvbGF0" + + "ZWQgcGxhaW50ZXh0IGNsdXN0ZXIsIGl0IHJlbGllZCBvbiB0aGUgc2VsZi1tYW5hZ2VkIHN0YWNr" + + "IGRlZmF1bHQgZm9yIHRoZSBidW5kbGVkIGdhdGV3YXktdG8tQVBJIGF1dGhlbnRpY2F0aW9uIGhv" + + "cCBhbmQgaW5jbHVkZWQgYWdlbnRDb25maWcubWVyZ2VDb25maWcud29ya2xvYWQuc3RhcmdhdGVR" + + "VUlDSW5zZWN1cmUgZm9yIHRoZSBzZXBhcmF0ZSB3b3JrZXIgdHJhbnNwb3J0LCB3aXRoIGEgd2Fy" + + "bmluZyB0aGF0IHBsYWludGV4dCB3b3JrZXIgdHJhbnNwb3J0IGlzIG5vdCBmb3IgcHJvZHVjdGlv" + + "bi4gSXQgcmVmcmVzaGVkIHRoZSBjb21wdXRlIHBsYW5lIHVzaW5nIHRoZSBzYW1lIGhhbmRvZmYg" + + "dXNlZCBkdXJpbmcgaW5zdGFsbGF0aW9uLCByZWRlcGxveWVkIGV4aXN0aW5nIExMTSBmdW5jdGlv" + + "bnMsIGFuZCB2ZXJpZmllZCB0aGUgTExNIGRlcGxveW1lbnRzLCByb3V0ZSwgYW5kIGxsbS13b3Jr" + + "ZXIgc2lkZWNhci4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50" + + "IHVzZWQgYWRkb25zLmxsbS5lbmFibGVkLCBub3QgdGhlIG9ic29sZXRlIGxsbS5lbmFibGVkIHBh" + + "dGgiLAogICAgICAiVGhlIGFnZW50IHNldCBnYXRld2F5IGFuZCByZXF1ZXN0Um91dGVyIHJlcGxp" + + "Y2FDb3VudCB0byAxIGZvciB0aGUgc2luZ2xlLW5vZGUgdGVzdCBjbHVzdGVyIiwKICAgICAgIlRo" + + "ZSBhZ2VudCBzdGF0ZWQgdGhhdCB0aGUgcmVxdWVzdCByb3V0ZXIgZGVmYXVsdHMgdG8gcG93ZXIt" + + "b2YtdHdvIGFuZCBsaW5rZWQgdGhlIGNhbm9uaWNhbCByZXF1ZXN0LXJvdXRlciBsb2FkLWJhbGFu" + + "Y2luZyBndWlkZSBmb3Igb3RoZXIgbWV0aG9kcyIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVk" + + "IHRoYXQgdGhlIGJ1bmRsZWQgZ2F0ZXdheS10by1BUEkgYXV0aGVudGljYXRpb24gaG9wIGRlZmF1" + + "bHRzIHRvIHBsYWludGV4dCwgaW5jbHVkZWQgd29ya2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUg" + + "b25seSBmb3IgdGhlIGlzb2xhdGVkIHdvcmtlciB0cmFuc3BvcnQsIGFuZCB3YXJuZWQgYWdhaW5z" + + "dCBwbGFpbnRleHQgd29ya2VyIHRyYW5zcG9ydCBpbiBwcm9kdWN0aW9uIiwKICAgICAgIlRoZSBh" + + "Z2VudCBhcHBsaWVkIHRoZSBjb250cm9sLXBsYW5lIEhlbG1maWxlIGVudmlyb25tZW50LCByZWZy" + + "ZXNoZWQgdGhlIGNvbXB1dGUgcGxhbmUgd2l0aCB0aGUgc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLCBh" + + "bmQgcmVjcmVhdGVkIG9yIHJlZGVwbG95ZWQgZXhpc3RpbmcgTExNIGZ1bmN0aW9ucyIsCiAgICAg" + + "ICJUaGUgYWdlbnQgdmVyaWZpZWQgbGxtLWFwaS1nYXRld2F5LCBsbG0tcmVxdWVzdC1yb3V0ZXIs" + + "IHRoZSBMTE0gSFRUUFJvdXRlLCBhbmQgdGhlIGxsbS13b3JrZXIgc2lkZWNhciBpbmNsdWRpbmcg" + + "LS1xdWljLWluc2VjdXJlIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc4LU5FRy1ub3QtZm9y" + + "LWszZCIsCiAgICAicXVlc3Rpb24iOiAiU2V0IHVwIGEgbG9jYWwgTlZDRiBkZXYgY2x1c3RlciB1" + + "c2luZyBrM2QgZm9yIHRlc3RpbmciLAogICAgImV4cGVjdGVkX3NraWxsIjogbnVsbCwKICAgICJz" + + "aG91bGRfdHJpZ2dlciI6IGZhbHNlLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGlzIGlzIGEgbG9j" + + "YWwgazNkIGRldmVsb3BtZW50IHJlcXVlc3QgdGhhdCBiZWxvbmdzIHRvIHRoZSBudmNmLXNlbGYt" + + "aG9zdGVkLWxvY2FsLWRldiBza2lsbCwgbm90IG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + + "bi4gVGhlIGFnZW50IGRpZCBub3QgcmVhZCBvciB1c2UgdGhlIHNlbGYtbWFuYWdlZCBpbnN0YWxs" + + "YXRpb24gc2tpbGwgYW5kIGluc3RlYWQgcHJvdmlkZWQgazNkLXNwZWNpZmljIGd1aWRhbmNlLiIs" + + "CiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCByZWFk" + + "IG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5tZCIsCiAgICAgICJUaGUgYWdl" + + "bnQgZGlkIG5vdCBwcm92aWRlIGhlbG1maWxlLWJhc2VkIHByb2R1Y3Rpb24gZGVwbG95bWVudCBp" + + "bnN0cnVjdGlvbnMiLAogICAgICAiVGhlIGFnZW50IHByb3ZpZGVkIGszZC1zcGVjaWZpYyBsb2Nh" + + "bCBkZXZlbG9wbWVudCBndWlkYW5jZSBvciBkZWZlcnJlZCB0byB0aGUgYXBwcm9wcmlhdGUgbG9j" + + "YWwtZGV2IHNraWxsIgogICAgXQogIH0KXQpQSwcIR1VqVkpWAABKVgAAUEsDBBQACAAAAAAAIQAA" + + "AAAAAAAAAAAAAAAvAAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXhhbXBs" + + "ZXMubWRVVAUAAQCmzhIjIEV4YW1wbGVzCgpXb3JrZWQgZXhhbXBsZXMgYmFzZWQgb24gcmVhbCBk" + + "ZXBsb3ltZW50IHNjZW5hcmlvcy4KCiMjIEV4YW1wbGUgMTogT3ZlcnJpZGUgQ2Fzc2FuZHJhIFJl" + + "c291cmNlcwoKVGhlIGRlZmF1bHQgQ2Fzc2FuZHJhIHJlc291cmNlIGxpbWl0cyBjYXVzZSBPT00g" + + "b24gbGFyZ2UgaW5zdGFuY2UgdHlwZXMgKGUuZy4sIGBwNS40OHhsYXJnZWApLgoKUHJvYmxlbTog" + + "Q2Fzc2FuZHJhIHBvZHMgcmVzdGFydCB3aXRoIGBPT01LaWxsZWRgLgoKU29sdXRpb246IE92ZXJy" + + "aWRlIHJlc291cmNlcyB2aWEgaGVsbWZpbGUgcmVsZWFzZSB2YWx1ZXMgYmxvY2suCgojIyMgU3Rl" + + "cCAxOiBDYXB0dXJlIGJhc2VsaW5lCgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmls" + + "ZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlID4gL3RtcC9jYXNzLWJlZm9yZS55" + + "YW1sCmdyZXAgLUE4ICdyZXNvdXJjZXM6JyAvdG1wL2Nhc3MtYmVmb3JlLnlhbWwgfCBoZWFkIC0x" + + "MApgYGAKCiMjIyBTdGVwIDI6IEFkZCBvdmVycmlkZSB0byBoZWxtZmlsZS5kLzAxLWRlcGVuZGVu" + + "Y2llcy55YW1sLmdvdG1wbAoKSW4gdGhlIGV4YW1wbGVzIGJlbG93LCBgPHByaXZhdGUtdmFsdWVz" + + "PmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUgc3Rh" + + "Y2sgcm9vdC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNzYW5kcmEKICB2ZXJzaW9uOiAwLjguMAogIGNv" + + "bmRpdGlvbjogY2Fzc2FuZHJhLmVuYWJsZWQKICBuYW1lc3BhY2U6IGNhc3NhbmRyYS1zeXN0ZW0K" + + "ICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAog" + + "ICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52ICJIRUxNRklMRV9FTlYiIH19" + + "LXNlY3JldHMueWFtbAogICAgLSBjYXNzYW5kcmE6CiAgICAgICAgcmVzb3VyY2VzOgogICAgICAg" + + "ICAgbGltaXRzOgogICAgICAgICAgICBjcHU6ICI4IgogICAgICAgICAgICBtZW1vcnk6IDgxOTJN" + + "aQogICAgICAgICAgcmVxdWVzdHM6CiAgICAgICAgICAgIGNwdTogIjIiCiAgICAgICAgICAgIG1l" + + "bW9yeTogNDA5Nk1pCmBgYAoKIyMjIFN0ZXAgMzogVmVyaWZ5IGFuZCBhcHBseQoKYGBgYmFzaApI" + + "RUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1w" + + "bGF0ZSA+IC90bXAvY2Fzcy1hZnRlci55YW1sCmRpZmYgL3RtcC9jYXNzLWJlZm9yZS55YW1sIC90" + + "bXAvY2Fzcy1hZnRlci55YW1sICAjIENvbmZpcm0gcmVzb3VyY2VzIGNoYW5nZWQKSEVMTUZJTEVf" + + "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgc3luYwpgYGAKCk5v" + + "dGU6IGByZXNvdXJjZVByZXNldGAgKGEgQml0bmFtaSBmZWF0dXJlKSBpcyBub3QgYXZhaWxhYmxl" + + "IGluIHRoZSBOVkNGIGNhc3NhbmRyYSB3cmFwcGVyIGNoYXJ0LiBVc2UgZXhwbGljaXQgYHJlc291" + + "cmNlc2AgaW5zdGVhZC4KCi0tLQoKIyMgRXhhbXBsZSAyOiBEZXBsb3kgZnJvbSBOR0MgUHJpdmF0" + + "ZSBSZWdpc3RyeSB3aXRoIFB1bGwgU2VjcmV0cwoKRGVwbG95IHRoZSBOVkNGIHN0YWNrIHB1bGxp" + + "bmcgaW1hZ2VzIGRpcmVjdGx5IGZyb20gTkdDIChgbnZjci5pb2ApIGluc3RlYWQgb2YgYSBtaXJy" + + "b3JlZCByZWdpc3RyeSwgdXNpbmcgaW1hZ2UgcHVsbCBzZWNyZXRzLgoKIyMjIFN0ZXAgMTogQ29u" + + "ZmlndXJlIGVudmlyb25tZW50IGZvciBOR0MKCmBgYHlhbWwKIyBlbnZpcm9ubWVudHMvPGVudj4u" + + "eWFtbApnbG9iYWw6CiAgaGVsbToKICAgIHNvdXJjZXM6CiAgICAgIHJlZ2lzdHJ5OiBudmNyLmlv" + + "CiAgICAgIHJlcG9zaXRvcnk6IG52aWRpYS9udmNmCiAgaW1hZ2U6CiAgICByZWdpc3RyeTogbnZj" + + "ci5pbwogICAgcmVwb3NpdG9yeTogbnZpZGlhL252Y2YKYGBgCgojIyMgU3RlcCAyOiBBdXRoZW50" + + "aWNhdGUgbG9jYWxseSAoZm9yIGhlbG1maWxlIGNoYXJ0IHB1bGxzKQoKYGBgYmFzaApkb2NrZXIg" + + "bG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmhlbG0gcmVn" + + "aXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmBg" + + "YAoKIyMjIFN0ZXAgMzogQ3JlYXRlIG5hbWVzcGFjZXMgYW5kIHB1bGwgc2VjcmV0cwoKYGBgYmFz" + + "aApleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLW5nYy1hcGkta2V5PiIKCmZvciBucyBpbiBjYXNz" + + "YW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0" + + "ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + + "bnRleHQ+IGNyZWF0ZSBuYW1lc3BhY2UgIiRucyIgXAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5" + + "YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYg" + + "LQpkb25lCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1r" + + "ZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29u" + + "dGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3Ry" + + "eSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAgIC0tZG9ja2Vy" + + "LXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAgLS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJ" + + "X0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIgXAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5" + + "YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYg" + + "LQpkb25lCmBgYAoKIyMjIFN0ZXAgNDogQWRkIGltYWdlUHVsbFNlY3JldHMgdG8gaGVsbWZpbGUg" + + "cmVsZWFzZXMKCkFkZCB0aGUgY2hhcnQtc3BlY2lmaWMgYGltYWdlUHVsbFNlY3JldHNgIGtleSB0" + + "byBlYWNoIHJlbGVhc2UuIEV4YW1wbGUgZm9yIGNhc3NhbmRyYSBpbiBgaGVsbWZpbGUuZC8wMS1k" + + "ZXBlbmRlbmNpZXMueWFtbC5nb3RtcGxgOgoKYGBgeWFtbAotIG5hbWU6IGNhc3NhbmRyYQogIHZl" + + "cnNpb246IDAuOC4wCiAgY29uZGl0aW9uOiBjYXNzYW5kcmEuZW5hYmxlZAogIG5hbWVzcGFjZTog" + + "Y2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAqZGVwZW5kZW5jeQogIHZhbHVlczoKICAgIC0gLi4vZ2xv" + + "YmFsLnlhbWwuZ290bXBsCiAgICAtIC4uLzxwcml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYg" + + "IkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCiAgICAtIGNhc3NhbmRyYToKICAgICAgICBn" + + "bG9iYWw6CiAgICAgICAgICBpbWFnZVB1bGxTZWNyZXRzOgogICAgICAgICAgICAtIG52Y3ItY3Jl" + + "ZHMKYGBgCgpTZWUgW3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kXShyZWZlcmVuY2VzL3B1bGwt" + + "c2VjcmV0cy5tZCkgZm9yIHRoZSBrZXkgZm9yIGV2ZXJ5IGNoYXJ0LgoKVGhlc2UgYXJlIGNvbnRy" + + "b2wtcGxhbmUgbmFtZXNwYWNlcy4gRm9yIGEgc2VwYXJhdGUgY29tcHV0ZSBjbHVzdGVyLCBjcmVh" + + "dGUgdGhlCnNlY3JldCBvbmx5IGluIGBudmNhLW9wZXJhdG9yYDsgdGhlIGNoYXJ0IGFuZCBvcGVy" + + "YXRvciBtaXJyb3IgaXQgdG8KYG52Y2Etc3lzdGVtYC4gU2VlIFtTcGxpdCBDb21wdXRlLVBsYW5l" + + "IEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCNw" + + "dWxsLXNlY3JldHMpLgoKIyMjIFN0ZXAgNTogRGVwbG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08" + + "ZW52PiBoZWxtZmlsZSAtLWt1YmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBzeW5j" + + "CmBgYAoKIyMjIFN0ZXAgNjogUGF0Y2ggU2VydmljZUFjY291bnRzIGZvciBjaGFydHMgd2l0aG91" + + "dCBuYXRpdmUgc3VwcG9ydAoKQWZ0ZXIgUGhhc2UgMSAoZGVwZW5kZW5jaWVzKSBjb21wbGV0ZXMs" + + "IE9wZW5CYW8gcG9kcyB3aWxsIGJlIGluIGBJbWFnZVB1bGxCYWNrT2ZmYC4gUGF0Y2ggYW5kIHJl" + + "c3RhcnQ6CgpgYGBiYXNoCmZvciBucyBpbiB2YXVsdC1zeXN0ZW0gbnZjZiBlc3M7IGRvCiAgZm9y" + + "IHNhIGluICQoa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHNh" + + "IC1uICIkbnMiIFwKICAgIC0tbm8taGVhZGVycyAtbyBjdXN0b20tY29sdW1ucz0iOm1ldGFkYXRh" + + "Lm5hbWUiKTsgZG8KICAgIGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+" + + "IHBhdGNoIHNlcnZpY2VhY2NvdW50IC1uICIkbnMiICIkc2EiIFwKICAgICAgLXAgJ3siaW1hZ2VQ" + + "dWxsU2VjcmV0cyI6IFt7Im5hbWUiOiAibnZjci1jcmVkcyJ9XX0nCiAgZG9uZQpkb25lCmt1YmVj" + + "dGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGRlbGV0ZSBwb2RzIC1uIHZhdWx0" + + "LXN5c3RlbSAtLWFsbApgYGAKClZlcmlmeToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNv" + + "bnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGV2ZW50cyAtbiB2YXVsdC1zeXN0ZW0gXAogIC0tc29y" + + "dC1ieT0nLmxhc3RUaW1lc3RhbXAnIHwgZ3JlcCAtaSBwdWxsCiMgU2hvdWxkIHNob3cgIlN1Y2Nl" + + "c3NmdWxseSBwdWxsZWQgaW1hZ2UiIGZyb20gbnZjci5pbwpgYGAKCi0tLQoKIyMgRXhhbXBsZSAz" + + "OiBGdWxsIFRlYXJkb3duIGFuZCBSZWluc3RhbGwKCldoZW4gYSBkZXBsb3ltZW50IGlzIGJyb2tl" + + "biBhbmQgeW91IG5lZWQgYSBjbGVhbiBzbGF0ZS4KCiMjIyBTdGVwIDE6IERlc3Ryb3kgdGhlIGNv" + + "bXB1dGUtcGxhbmUgc3RhY2sKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29t" + + "cHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhF" + + "TE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVj" + + "b25maWc+CmBgYAoKSWYgY29tcHV0ZSBjbGVhbnVwIGlzIHN0dWNrIG9uIGZpbmFsaXplcnMsIHVz" + + "ZSB0aGUgY29tcHV0ZS1jb250ZXh0IHByb2NlZHVyZSBpbgpbZGVidWdnaW5nLm1kXShyZWZlcmVu" + + "Y2VzL2RlYnVnZ2luZy5tZCNmYWlsdXJlLW52Y2EtY2xlYW51cC1zdHVjay1maW5hbGl6ZXJzKS4K" + + "CiMjIyBTdGVwIDI6IERlcmVnaXN0ZXIgdGhlIGNvbXB1dGUgY2x1c3RlcgoKUmVhZCBgY2x1c3Rl" + + "cklEYCBhbmQgYG5jYUlEYCBmcm9tCmBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9y" + + "ZWdpc3RyYXRpb24vPGNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgLgpTaG93IHRo" + + "ZSBJRCBhbmQgZ2V0IGNvbmZpcm1hdGlvbiBiZWZvcmUgZGVsZXRpbmcgdGhlIElDTVMgcm93OgoK" + + "YGBgYmFzaAo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNsdXN0ZXIgZGVsZXRlIFwKICAt" + + "LWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1yZWdpc3RyYXRpb24tdmFsdWVzPiBcCiAgLS1u" + + "Y2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBgCgpSZXBlYXQgc3RlcHMgMSBh" + + "bmQgMiBmb3IgZXZlcnkgY29tcHV0ZSBjbHVzdGVyLgoKIyMjIFN0ZXAgMzogRGVzdHJveSB0aGUg" + + "Y29udHJvbC1wbGFuZSBzdGFjawoKUHJlc2VydmUgdGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFj" + + "ZSBieSBkZWZhdWx0LiBOYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRvZXMKbm90IHByZXNlcnZlIHRo" + + "ZSBIZWxtIHJlbGVhc2UuIEJlZm9yZSBydW5uaW5nIGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIK" + + "Y2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLiBGb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCBy" + + "ZXF1aXJlIGVmZmVjdGl2ZQpgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBp" + + "ZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQKc3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGgg" + + "ZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5Cm1hdGNoaW5nIHN0" + + "YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQgYWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRj" + + "aGVkCmV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNwYWNlIHJlbW92YWwgYWZ0ZXIgdmVyaWZ5aW5n" + + "IG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZApnZXR0aW5nIGV4cGxpY2l0IGNvbmZpcm1hdGlvbjsg" + + "b3RoZXJ3aXNlIGRvIG5vdCBkZWxldGUgaXQuCgpgYGBiYXNoCktVQkVDT05GSUc9PGNvbnRyb2wt" + + "cGxhbmUta3ViZWNvbmZpZz4gXAptYWtlIC1DIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIGRl" + + "c3Ryb3kgXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb250cm9s" + + "LXBsYW5lLWt1YmVjb25maWc+CmBgYAoKUGFzcyBib3RoIGt1YmVjb25maWcgZm9ybXMgYmVjYXVz" + + "ZSBjb250cm9sLXBsYW5lIG5hbWVzcGFjZSBjbGVhbnVwIHVzZXMKYW1iaWVudCBga3ViZWN0bGAu" + + "CgojIyMgU3RlcCA0OiBWZXJpZnkgY2xlYW4KCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNv" + + "bXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG5zIHwgXAogIGdyZXAgLUUgJyhudmNhfG52Y2YtYmFj" + + "a2VuZHxncm92ZXxkeW5hbW8pJwprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250" + + "ZXh0PiBnZXQgbnMgfCBcCiAgZ3JlcCAtRSAnKGNhc3NhbmRyYXxuYXRzfHZhdWx0fG52Y2Z8YXBp" + + "LWtleXN8ZXNzfHNpcyknCiMgQm90aCBjb21tYW5kcyBzaG91bGQgcmV0dXJuIGVtcHR5LgpgYGAK" + + "CiMjIyBTdGVwIDU6IFJlaW5zdGFsbCBpbiBzcGxpdCBvcmRlcgoKRm9sbG93IFtDbGVhbiBJbnN0" + + "YWxsYXRpb25dKFNLSUxMLm1kI2NsZWFuLWluc3RhbGxhdGlvbiksIHRoZW4gcmV0dXJuIHRvIHRo" + + "ZQpzYW1lIGhhbmRvZmYgaW4gW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZl" + + "cmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4KCi0tLQoKIyMgRXhhbXBsZSA0" + + "OiBSZWNvdmVyIGZyb20gYSBHYXRld2F5IEVuZHBvaW50IENoYW5nZQoKVGhlIHNlcGFyYXRlbHkg" + + "cHJvdmlzaW9uZWQgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxhbmNlciB3YXMgcmVjcmVhdGVkIGFu" + + "ZCBnb3QgYSBuZXcgZW5kcG9pbnQuCgojIyMgU3RlcCAxOiBHZXQgdGhlIG5ldyBlbmRwb2ludAoK" + + "YGBgYmFzaApHQVRFV0FZX0FERFI9JChrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1j" + + "b250ZXh0PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1nYXRld2F5IC1uIGVudm95LWdhdGV3YXkgXAog" + + "IC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFsdWV9JykKdGVzdCAtbiAiJEdB" + + "VEVXQVlfQUREUiIKYGBgCgojIyMgU3RlcCAyOiBVcGRhdGUgRE5TIGFuZCBkaXJlY3QgYWRkcmVz" + + "cyBmaWVsZHMKCktlZXAgYGdsb2JhbC5kb21haW5gLCByb3V0ZSBob3N0bmFtZXMsIGFuZCBDTEkg" + + "SG9zdCBmaWVsZHMgdW5jaGFuZ2VkLiBQb2ludCB0aGUKRE5TIHJlY29yZHMgZm9yIHJlbmRlcmVk" + + "IHJvdXRlIGhvc3RuYW1lcywgc3VjaCBhcyBgYXBpLjxkb21haW4+YCBhbmQKYCouaW52b2NhdGlv" + + "bi48ZG9tYWluPmAsIHRvIGBHQVRFV0FZX0FERFJgLiBGb3IgYSB0ZW1wb3JhcnkgZW52aXJvbm1l" + + "bnQgd2l0aG91dApETlMsIGtlZXAgaXRzIHJlc2VydmVkIHJvdXRlIHN1ZmZpeCBhbmQgY29ubmVj" + + "dCB0byBgR0FURVdBWV9BRERSYCB3aXRoIHRoZQptYXRjaGluZyBgSG9zdGAgaGVhZGVyLgoKRm9y" + + "IGEgc3BsaXQgZGVwbG95bWVudCBjb25maWd1cmVkIHdpdGggZGlyZWN0IEdhdGV3YXkgYWRkcmVz" + + "c2VzLCByZXBsYWNlIG9ubHkKdGhlIGFkZHJlc3MtYmVhcmluZyB2YWx1ZXM6IGNvbnRyb2wtcGxh" + + "bmUgYG52Y2ZOYXRzU2VydmljZVVSTGAsIGNvbXB1dGUtcGxhbmUKSUNNUywgUmVWYWwsIGFuZCBO" + + "QVRTIFVSTHMsIGFuZCBDTEkgVVJMIGZpZWxkcy4gS2VlcCB0aGVpciBkb21haW4gYW5kIEhvc3QK" + + "b3ZlcnJpZGVzIHVuY2hhbmdlZC4gUmVmcmVzaCByZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlv" + + "biB0aHJvdWdoIHRoZSBzYW1lCmhhbmRvZmYgdXNlZCBvcmlnaW5hbGx5LiBTZWUKW1NwbGl0IENv" + + "bXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFs" + + "bGF0aW9uLm1kKQpmb3IgdGhlIGZpZWxkcyBhbmQgY29tcGxldGUgY29tbWFuZHMuCgojIyMgU3Rl" + + "cCAzOiBWZXJpZnkgYm90aCBjb250ZXh0cwoKYGBgYmFzaApkaWcgK3Nob3J0ICJhcGkuPGRvbWFp" + + "bj4iCmN1cmwgLUggIkhvc3Q6IGFwaS48ZG9tYWluPiIgImh0dHA6Ly8kR0FURVdBWV9BRERSL2hl" + + "YWx0aCIKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3" + + "YXkgbnZjZi1nYXRld2F5IFwKICAtbiBlbnZveS1nYXRld2F5IC1vIHdpZGUKa3ViZWN0bCAtLWNv" + + "bnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGh0dHByb3V0ZXMgLUEKa3ViZWN0bCAt" + + "LWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHRjcHJvdXRlcyAtQQprdWJlY3Rs" + + "IC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiByb2xsb3V0IHN0YXR1cyBcCiAgZGVw" + + "bG95bWVudC9udmNhLW9wZXJhdG9yIC1uIG52Y2Etb3BlcmF0b3IgLS10aW1lb3V0PTEwbQprdWJl" + + "Y3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiB3YWl0IFwKICBudmNmYmFja2Vu" + + "ZC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IC1uIG52Y2Etb3BlcmF0b3IgXAogIC0tZm9y" + + "PWpzb25wYXRoPSd7LnN0YXR1cy5hZ2VudFN0YXR1c30nPWhlYWx0aHkgLS10aW1lb3V0PTEwbQpg" + + "YGAKCi0tLQoKIyMgRXhhbXBsZSA1OiBEZXBsb3kgT25seSBEZXBlbmRlbmNpZXMKClVzZWZ1bCBm" + + "b3IgdGVzdGluZyBvciB3aGVuIGl0ZXJhdGluZyBvbiBzZXJ2aWNlIGNvbmZpZ3VyYXRpb24uCgpg" + + "YGBiYXNoCiMgRGVwbG95IGp1c3QgTkFUUywgQ2Fzc2FuZHJhLCBPcGVuQmFvCkhFTE1GSUxFX0VO" + + "Vj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5" + + "bmMKCiMgQ2hlY2sgc3RhdHVzCmt1YmVjdGwgZ2V0IHBvZHMgLW4gbmF0cy1zeXN0ZW0Ka3ViZWN0" + + "bCBnZXQgcG9kcyAtbiBjYXNzYW5kcmEtc3lzdGVtCmt1YmVjdGwgZ2V0IHBvZHMgLW4gdmF1bHQt" + + "c3lzdGVtCgojIERlcGxveSBqdXN0IG9uZSBzcGVjaWZpYyByZWxlYXNlCkhFTE1GSUxFX0VOVj08" + + "ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMKYGBgCgojIyMgU2Vs" + + "ZWN0b3IgcmVmZXJlbmNlCgp8IFNlbGVjdG9yIHwgUmVsZWFzZXMgfAp8LS0tLS0tLS0tLXwtLS0t" + + "LS0tLS0tfAp8IGByZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llc2AgfCBuYXRzLCBjYXNzYW5kcmEs" + + "IG9wZW5iYW8tc2VydmVyIHwKfCBgcmVsZWFzZS1ncm91cD1zZXJ2aWNlc2AgfCBhcGkta2V5cywg" + + "c2lzLCBhcGksIGludm9jYXRpb24tc2VydmljZSwgZ3JwYy1wcm94eSwgZXNzLWFwaSwgbm90YXJ5" + + "LXNlcnZpY2UsIHJldmFsLCBvcHRpb25hbCBsbG0tcmVxdWVzdC1yb3V0ZXIgYW5kIGxsbS1hcGkt" + + "Z2F0ZXdheSB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCwgb3B0aW9uYWwgdmFuaXR5LWdhdGV3YXkg" + + "b25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhlIGFkZG9uIGFuZCBoYXZlIGBh" + + "ZGRvbnMudmFuaXR5R2F0ZXdheS5lbmFibGVkPXRydWVgLCBvcHRpb25hbCBudmNmLXVpIG9ubHkg" + + "aW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBhZGRvbiBhbmQgaGF2ZSBgYWRkb25z" + + "Lm52Y2ZVaS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1sbG0tcmVxdWVzdC1yb3V0ZXJgIHwgRGVw" + + "bG95IGp1c3QgdGhlIExMTSByZXF1ZXN0IHJvdXRlciB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCB8" + + "CnwgYG5hbWU9bGxtLWFwaS1nYXRld2F5YCB8IERlcGxveSBqdXN0IHRoZSBMTE0gQVBJIGdhdGV3" + + "YXkgd2hlbiBgbGxtLmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1lPXZhbml0eS1nYXRld2F5YCB8IERl" + + "cGxveSBqdXN0IFZhbml0eSBHYXRld2F5IG9ubHkgd2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNs" + + "dWRlcyB0aGF0IHJlbGVhc2UgYW5kIGBhZGRvbnMudmFuaXR5R2F0ZXdheS5lbmFibGVkPXRydWVg" + + "IHwKfCBgbmFtZT1udmNmLXVpYCB8IERlcGxveSBOVkNGIFVJIG9ubHkgd2hlbiB0aGUgc3RhY2sg" + + "cGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5kIGBhZGRvbnMubnZjZlVpLmVuYWJsZWQ9" + + "dHJ1ZWAgfAp8IGByZWxlYXNlLWdyb3VwPWluZ3Jlc3NgIHwgaW5ncmVzcyAoZ2F0ZXdheSByb3V0" + + "ZXMpIHwKfCBgbmFtZT08cmVsZWFzZT5gIHwgQW55IGluZGl2aWR1YWwgcmVsZWFzZSBieSBuYW1l" + + "IHwKCk5vdGU6IGBhZG1pbi1pc3N1ZXItcHJveHlgIGRvZXMgbm90IGhhdmUgYSByZWxlYXNlLWdy" + + "b3VwIGxhYmVsLiBUYXJnZXQgaXQgd2l0aCBgLS1zZWxlY3RvciBuYW1lPWFkbWluLWlzc3Vlci1w" + + "cm94eWAuClBLBwgCUk5AfygAAH8oAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAEwACQBkYXRh" + + "L252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUt" + + "aW5zdGFsbGF0aW9uLm1kVVQFAAEAps4SIyBTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlv" + + "bgoKVGhlIGNvbnRyb2wgcGxhbmUgYW5kIGNvbXB1dGUgcGxhbmUgYXJlIHNlcGFyYXRlIHN0YWNr" + + "cy4gSW5zdGFsbCB0aGUgY29udHJvbApwbGFuZSBmaXJzdCwgdGhlbiByZWdpc3RlciBhbmQgaW5z" + + "dGFsbCBlYWNoIGNvbXB1dGUgY2x1c3Rlci4gQ2hvb3NlIG9uZSBoYW5kb2ZmCmJlbG93IGFuZCB1" + + "c2UgaXQgZm9yIHRoZSBmdWxsIGxpZmVjeWNsZS4gRG8gbm90IGNvbWJpbmUgYSBDTEktZ2VuZXJh" + + "dGVkIHByb2ZpbGUKd2l0aCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZsb3cuCgojIyBDaG9vc2UgYSBI" + + "YW5kb2ZmCgp8IEZsb3cgfCBTb3VyY2Ugb2YgY29udHJvbC1wbGFuZSBlbmRwb2ludHMgfCBSZWdp" + + "c3RyYXRpb24gYXJ0aWZhY3QgfAp8LS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t" + + "LS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IEhlbG1maWxlIHZhbHVlcyB8IFNlcGFy" + + "YXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZXMgfCBg" + + "ZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvcmVnaXN0cmF0aW9uLzxjbHVzdGVyPi1y" + + "ZWdpc3Rlci12YWx1ZXMueWFtbGAgfAp8IENMSSBwcm9maWxlIHwgQ0xJLWdlbmVyYXRlZCBgZGVw" + + "bG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sYCB8" + + "IENMSS1nZW5lcmF0ZWQgYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88Y2x1" + + "c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIHwKClRoZSBDTEkgcHJvZmlsZSBpcyBtYW5kYXRv" + + "cnkgZm9yIHRoZSBDTEkgZmxvdyBhbmQgbXVzdCBub3QgYmUgaGFuZC1hdXRob3JlZC4KVGhlIEhl" + + "bG1maWxlIGZsb3cgZG9lcyBub3QgY29uc3VtZSBhIGNvbnRyb2wtcGxhbmUgcHJvZmlsZS4KCkNv" + + "bW1hbmRzIGJlbG93IHVzZSBtb25vcmVwbyBwYXRocyBmcm9tIHRoZSByZXBvc2l0b3J5IHJvb3Qu" + + "IE9wZXJhdG9ycyB1c2luZwpleHRyYWN0ZWQgcGFja2FnZXMgbmVlZCBtYXRjaGluZy12ZXJzaW9u" + + "IGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgYW5kCmBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tg" + + "IGJ1bmRsZXMuIFN1YnN0aXR1dGUgdGhvc2UgYnVuZGxlIHJvb3RzIGZvcgpgZGVwbG95L3N0YWNr" + + "cy9zZWxmLW1hbmFnZWRgIGFuZCBgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmVgLgoK" + + "IyMgSGVsbWZpbGUgVmFsdWVzIEZsb3cKCkNyZWF0ZSBib3RoIGVudmlyb25tZW50IGZpbGVzIGJl" + + "Zm9yZSBpbnN0YWxsYXRpb246CgotIGBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9lbnZpcm9u" + + "bWVudHMvPGVudj4ueWFtbGAgZm9yIGNvbnRyb2wtcGxhbmUKICByZWdpc3RyeSwgZG9tYWluLCBH" + + "YXRld2F5LCByb3V0ZXMsIGFuZCBzZXJ2aWNlIHNldHRpbmdzLgotIGBkZXBsb3kvc3RhY2tzL252" + + "Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgZm9yIGNvbXB1dGUtcGxh" + + "bmUKICByZWdpc3RyeSwgcHVsbCBzZWNyZXRzLCBhbmQgY29tcHV0ZS1yZWFjaGFibGUgSUNNUywg" + + "UmVWYWwsIGFuZCBOQVRTIHZhbHVlcy4KCkZvciBFS1MsIHVzZSB0aGUgY2Fub25pY2FsCltDU1Ag" + + "RW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1y" + + "Yy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4KVGhlIGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQg" + + "a2VlcHMgdGhlIEVudm95IEdhdGV3YXkgY29udHJvbGxlciBpbgpgZW52b3ktZ2F0ZXdheS1zeXN0" + + "ZW1gLCBhdHRhY2hlcyByb3V0ZXMgdG8gYEdhdGV3YXkvbnZjZi1nYXRld2F5YCBpbgpgZW52b3kt" + + "Z2F0ZXdheWAsIGFuZCBlbmFibGVzIHRoZSBOQVRTIHJvdXRlLiBUaGUgY29tcHV0ZS1wbGFuZSBl" + + "bnZpcm9ubWVudCB1c2VzCnRoZSBleHRlcm5hbCBhZGRyZXNzIHBsdXMgdGhlIHNlcnZpY2UgaG9z" + + "dCBvdmVycmlkZXMuIEhlcmUsCmA8Z2F0ZXdheS1hZGRyZXNzPmAgaXMgdGhlIE5MQiBhZGRyZXNz" + + "IGFuZCBgPGdhdGV3YXktZG9tYWluPmAgaXMgdGhlIEROUyBiYXNlCndob3NlIHNlcnZpY2Ugc3Vi" + + "ZG9tYWlucyByZXNvbHZlIHRvIHRoYXQgTkxCOgoKYGBgeWFtbAojIGRlcGxveS9zdGFja3Mvc2Vs" + + "Zi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoKICBkb21haW46ICI8Z2F0" + + "ZXdheS1kb21haW4+IgogIHdvcmtlckVuZHBvaW50czoKICAgIG52Y2ZTZXJ2aWNlVVJMOiAiaHR0" + + "cDovL2FwaS48Z2F0ZXdheS1kb21haW4+IgogICAgbnZjZkdycGNTZXJ2aWNlVVJMOiAiaHR0cDov" + + "L3dvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiIKICAgIG52Y2ZOYXRzU2VydmljZVVSTDogIm5h" + + "dHM6Ly88Z2F0ZXdheS1hZGRyZXNzPjo0MjIyIgogICAgbnZjdFNlcnZpY2VVUkw6ICJodHRwOi8v" + + "dGFza3MuPGdhdGV3YXktZG9tYWluPiIKICAgIG52Y3RHcnBjU2VydmljZVVSTDogImh0dHA6Ly93" + + "b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiIKICAgIGludm9jYXRpb25TZXJ2aWNlVVJMOiAi" + + "aHR0cDovL2ludm9jYXRpb24uPGdhdGV3YXktZG9tYWluPiIKCmdycGNwcm94eToKICBudmNmR3Jw" + + "Y1NlcnZpY2VVUkw6ICJodHRwOi8vYXBpLm52Y2Yuc3ZjLmNsdXN0ZXIubG9jYWw6OTA5MCIKCmlu" + + "Z3Jlc3M6CiAgZ2F0ZXdheUFwaToKICAgIGNvbnRyb2xsZXJOYW1lc3BhY2U6IGVudm95LWdhdGV3" + + "YXktc3lzdGVtCiAgICBnYXRld2F5czoKICAgICAgc2hhcmVkOiB7bmFtZTogbnZjZi1nYXRld2F5" + + "LCBuYW1lc3BhY2U6IGVudm95LWdhdGV3YXl9CiAgICAgIGdycGM6IHtuYW1lOiBudmNmLWdhdGV3" + + "YXksIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheX0KICAgICAgbmF0czoKICAgICAgICBuYW1lOiBu" + + "dmNmLWdhdGV3YXkKICAgICAgICBuYW1lc3BhY2U6IGVudm95LWdhdGV3YXkKICAgICAgICBsaXN0" + + "ZW5lck5hbWU6IG5hdHMKICAgIHJvdXRlczoKICAgICAgbnZjZkFwaToKICAgICAgICBncnBjOgog" + + "ICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAgICAgaG9zdG5hbWVzOiBbIndvcmtlci1hcGku" + + "PGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG52Y3RBcGk6CiAgICAgICAgZ3JwYzoKICAgICAgICAg" + + "IGVuYWJsZWQ6IHRydWUKICAgICAgICAgIGhvc3RuYW1lczogWyJ3b3JrZXItdGFza3MuPGdhdGV3" + + "YXktZG9tYWluPiJdCiAgICAgIG5hdHM6CiAgICAgICAgZW5hYmxlZDogdHJ1ZQoKb3BlbmJhbzoK" + + "ICBtaWdyYXRpb25zOgogICAgaXNzdWVyRGlzY292ZXJ5OgogICAgICBlbmFibGVkOiB0cnVlCmBg" + + "YAoKYGBgeWFtbAojIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50" + + "cy88ZW52Pi55YW1sCmdsb2JhbDoKICBudmNhT3BlcmF0b3I6CiAgICBzZWxmTWFuYWdlZDoKICAg" + + "ICAgaWNtc1NlcnZpY2VVUkw6ICJodHRwOi8vPGdhdGV3YXktYWRkcmVzcz4iCiAgICAgIGljbXNT" + + "ZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAic2lzLjxnYXRld2F5LWRvbWFpbj4iCiAgICAgIHJl" + + "dmFsU2VydmljZVVSTDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKICAgICAgcmV2YWxTZXJ2" + + "aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAicmV2YWwuPGdhdGV3YXktZG9tYWluPiIKICAgICAgbmF0" + + "c1VSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNzPjo0MjIyIgogICAgICBuYXRzSG9zdE92ZXJy" + + "aWRlOiAibmF0cy48Z2F0ZXdheS1kb21haW4+IgpgYGAKClByZXZpZXcgYW5kIGluc3RhbGwgdGhl" + + "IGNvbnRyb2wgcGxhbmUgYWdhaW5zdCBpdHMgY29udGV4dDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBs" + + "b3kvc3RhY2tzL3NlbGYtbWFuYWdlZCB0ZW1wbGF0ZSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwK" + + "ICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KCm1ha2UgLUMgZGVw" + + "bG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgaW5zdGFsbCBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwK" + + "ICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpCZWZvcmUg" + + "cmVnaXN0ZXJpbmcgdGhyb3VnaCBhIGJhcmUgR2F0ZXdheSBhZGRyZXNzLCBjcmVhdGUgb3IgdXBk" + + "YXRlIHRoZSBDTEkKY29uZmlnIHBhc3NlZCBhcyBgTlZDRl9DTElfQ09ORklHYDoKCmBgYHlhbWwK" + + "YmFzZV9odHRwX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKaW52b2tlX3VybDogImh0" + + "dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKYmFzZV9ncnBjX3VybDogIjxnYXRld2F5LWFkZHJlc3M+" + + "OjEwMDgxIgphcGlfa2V5c19zZXJ2aWNlX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIK" + + "aWNtc191cmw6ICJodHRwOi8vPGdhdGV3YXktYWRkcmVzcz4iCmFwaV9ob3N0OiAiYXBpLjxnYXRl" + + "d2F5LWRvbWFpbj4iCmFwaV9rZXlzX2hvc3Q6ICJhcGkta2V5cy48Z2F0ZXdheS1kb21haW4+Igpp" + + "bnZva2VfaG9zdDogImludm9jYXRpb24uPGdhdGV3YXktZG9tYWluPiIKaWNtc19ob3N0OiAic2lz" + + "LjxnYXRld2F5LWRvbWFpbj4iCmBgYAoKSG9zdCBmaWVsZHMgY29udGFpbiBob3N0bmFtZXMgb25s" + + "eSwgd2l0aG91dCBhIFVSTCBzY2hlbWUuIGBJQ01TX1VSTGAgbWFwcyBvbmx5CnRvIHRoZSByZWdp" + + "c3RyYXRpb24gY29tbWFuZCdzIGAtLWljbXMtdXJsYDsgYGljbXNfaG9zdGAgaW4gdGhlIGNvbmZp" + + "ZyBzdXBwbGllcwp0aGUgR2F0ZXdheSBIb3N0IGhlYWRlci4gVGhlcmUgaXMgbm8gYC0taWNtcy1o" + + "b3N0YCBNYWtlIG9yIENMSSBmbGFnLgoKUmVnaXN0ZXIgZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0" + + "LCB0aGVuIGluc3RhbGwgdGhlIGNvbXB1dGUgcGxhbmU6CgpgYGBiYXNoCm1ha2UgLUMgZGVwbG95" + + "L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVnaXN0ZXItY2x1c3RlciBcCiAgQ0xVU1RFUl9O" + + "QU1FPTxjbHVzdGVyLW5hbWU+IFwKICBOQ0FfSUQ9PG5jYS1pZD4gXAogIENMVVNURVJfUkVHSU9O" + + "PTxyZWdpb24+IFwKICBJQ01TX1VSTD1odHRwOi8vPGdhdGV3YXktYWRkcmVzcz4gXAogIEtVQkVD" + + "T05GSUdfRklMRT08Y29tcHV0ZS1wbGFuZS1rdWJlY29uZmlnPiBcCiAgTlZDRl9DTEk9PHBhdGgt" + + "dG8tbnZjZi1jbGk+IFwKICBOVkNGX0NMSV9DT05GSUc9PHBhdGgtdG8tbnZjZi1jbGktY29uZmln" + + "PgoKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBpbnN0YWxsIFwKICBD" + + "TFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VC" + + "RUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKUmVnaXN0cmF0aW9u" + + "IGRpc2NvdmVycyB0aGUgT0lEQyBpc3N1ZXIgYW5kIEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBrdWJl" + + "IGNvbnRleHQuCkluIGEgbXVsdGktY2x1c3RlciBkZXBsb3ltZW50LCBgS1VCRUNPTkZJR19GSUxF" + + "YCBpcyByZXF1aXJlZCBvbiBib3RoCmNvbXB1dGUtcGxhbmUgY29tbWFuZHMuIEluIGEgc2FtZS1j" + + "bHVzdGVyIGRlcGxveW1lbnQgaXQgbWF5IGJlIG9taXR0ZWQgb25seQp3aGVuIHRoZSBhbWJpZW50" + + "IGNvbnRleHQgaXMgYWxyZWFkeSB0aGUgdGFyZ2V0IGNsdXN0ZXIuCgojIyBDTEkgUHJvZmlsZSBG" + + "bG93CgpSdW4gdGhlIENMSSBjb250cm9sLXBsYW5lIGluc3RhbGwgZmlyc3QuIEl0IGNyZWF0ZXMg" + + "dGhlIHByb2ZpbGUgY29uc3VtZWQgYnkKY29tcHV0ZS1wbGFuZSByZWdpc3RyYXRpb246CgpgYGBi" + + "YXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wt" + + "cGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFu" + + "ZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4g" + + "XAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + + "bnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0" + + "PiBcCiAgaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmUgXAogIC0tY2x1c3Rlci1uYW1lIDxjb250cm9s" + + "LXBsYW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tcmVnaW9uIDxyZWdpb24+IFwKICAtLW5jYS1pZCA8" + + "bmNhLWlkPgoKdGVzdCAtcyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1w" + + "bGFuZS1wcm9maWxlLnlhbWwKYGBgCgpVc2UgdGhlIGZ1bGwgcGVyc2lzdGVudCBwcmVmaXggZm9y" + + "IGJvdGggY29tcHV0ZS1wbGFuZSBjb21tYW5kczoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcg" + + "PGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3Rh" + + "Y2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mv" + + "bnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgY29tcHV0" + + "ZS1wbGFuZSByZWdpc3RlciBcCiAgLS1jb250cm9sLXBsYW5lLXByb2ZpbGUgZGVwbG95L3N0YWNr" + + "cy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sIFwKICAtLWNsdXN0" + + "ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAtLWt1YmUtY29udGV4dCA8" + + "Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1yZWdpb24gPHJlZ2lvbj4gXAogIC0tb3V0cHV0" + "IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVz" + - "dGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sIFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0" + - "ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rl" + - "ci1uYW1lPgpgYGAKClJlZ2lzdHJhdGlvbiBzZWxlY3RzIHRoZSBwcm9maWxlJ3MgaW4tY2x1c3Rl" + - "ciBvciBjb21wdXRlLXJlYWNoYWJsZSBlbmRwb2ludHMKZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0" + - "IGFuZCBwcm9iZXMgaXRzIEpXS1MuIERvIG5vdCByZXBsYWNlIHByb2ZpbGUgZW5kcG9pbnRzCndp" + - "dGggaGFuZC1hdXRob3JlZCBIZWxtZmlsZSBlbmRwb2ludCB2YWx1ZXMuCgojIyBQdWxsIFNlY3Jl" + - "dHMKCkNyZWF0ZSB0aGUgY29udHJvbC1wbGFuZSBzZWNyZXQgaW4gdGhlc2UgbmFtZXNwYWNlcyBv" + - "biB0aGUgY29udHJvbC1wbGFuZQpjb250ZXh0OgoKYGBgdGV4dApjYXNzYW5kcmEtc3lzdGVtIG5h" + - "dHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2Vy" + - "CmBgYAoKT24gdGhlIGNvbXB1dGUgY29udGV4dCwgY3JlYXRlIHRoZSBzZWNyZXQgb25seSBpbiBg" + - "bnZjYS1vcGVyYXRvcmAgYW5kIHJlZmVyZW5jZQppdCB0aHJvdWdoIGBnbG9iYWwuaW1hZ2VQdWxs" + - "U2VjcmV0c2AgaW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQuIFRoZSBjaGFydAphbmQg" + - "b3BlcmF0b3IgdXNlIGl0IGluIGBudmNhLW9wZXJhdG9yYCBhbmQgbWlycm9yIGl0IHRvIGBudmNh" + - "LXN5c3RlbWAuIERvIG5vdCBhZGQKZWl0aGVyIG5hbWVzcGFjZSB0byB0aGUgY29udHJvbC1wbGFu" + - "ZSBsaXN0LiBGb3IgY29tbWFuZHMgYW5kIHBvbGljeSBleGFtcGxlcywKc2VlIFtwdWxsLXNlY3Jl" + - "dHMubWRdKHB1bGwtc2VjcmV0cy5tZCkuCgojIyBWZXJpZmljYXRpb24KClVzZSB0aGUgZXhwbGlj" + - "aXQgR2F0ZXdheSBuYW1lIGFuZCBuYW1lc3BhY2U6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0" + - "IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5IG52Y2YtZ2F0ZXdheSBcCiAgLW4g" + - "ZW52b3ktZ2F0ZXdheSAtbyB3aWRlCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + - "bnRleHQ+IGdldCB0Y3Byb3V0ZSAtbiBlbnZveS1nYXRld2F5Cmt1YmVjdGwgLS1jb250ZXh0IDxj" + - "b21wdXRlLXBsYW5lLWNvbnRleHQ+IHJvbGxvdXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Et" + - "b3BlcmF0b3IgLW4gbnZjYS1vcGVyYXRvciAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0" + - "IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IHdhaXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBs" + - "YW5lLWNsdXN0ZXItbmFtZT4gLW4gbnZjYS1vcGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3su" + - "c3RhdHVzLmFnZW50U3RhdHVzfSc9aGVhbHRoeSAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250" + - "ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGdldCBzZWNyZXQgPHB1bGwtc2VjcmV0PiAtbiBu" + - "dmNhLXN5c3RlbQpgYGAKCiMjIFRlYXJkb3duCgpEZXN0cm95IGFuZCBkZXJlZ2lzdGVyIGV2ZXJ5" + - "IGNvbXB1dGUgcGxhbmUgYmVmb3JlIHRoZSBjb250cm9sIHBsYW5lLiBCb3RoCmhhbmRvZmZzIGNh" + - "biBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBzbyBhcHBseSB0aGlzIHByZWZsaWdodCBiZWZv" + - "cmUgZWl0aGVyCm9uZS4gUHJlc2VydmUgdGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBk" + - "ZWZhdWx0LiBOYW1lc3BhY2UgcHJlc2VydmF0aW9uCmRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxt" + - "IHJlbGVhc2UuIElkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLgpGb3Ig" + - "YW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIu" + - "ZW5hYmxlZDogZmFsc2VgCmFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQg" + - "c3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlCmBjZXJ0TWFuYWdlci5lbmFibGVk" + - "OiB0cnVlYCwgdmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQK" + - "YWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNw" + - "YWNlIHJlbW92YWwgYWZ0ZXIKdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBnZXR0" + - "aW5nIGV4cGxpY2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlCmRvIG5vdCBkZWxldGUgaXQuCgpG" + - "b3IgdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93LCByZXRhaW4gZWFjaCByZWdpc3RyYXRpb24gdmFs" + - "dWVzIGZpbGUgdW50aWwKY2xlYW51cCBpcyB2ZXJpZmllZDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBs" + - "b3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVSX05BTUU9PGNs" + - "dXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxj" + - "b21wdXRlLXBsYW5lLWt1YmVjb25maWc+Cgo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNs" + - "dXN0ZXIgZGVsZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1yZWdpc3RyYXRp" + - "b24tdmFsdWVzPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBg" + - "CgpSZWFkIGBjbHVzdGVySURgIGFuZCBgbmNhSURgIGZyb20KYGRlcGxveS9zdGFja3MvbnZjZi1j" + - "b21wdXRlLXBsYW5lL3JlZ2lzdHJhdGlvbi88Y2x1c3Rlci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMu" + - "eWFtbGAuClNob3cgdGhlIGV4YWN0IGNsdXN0ZXIgSUQgYW5kIGdldCBjb25maXJtYXRpb24gYmVm" + - "b3JlIGBjbHVzdGVyIGRlbGV0ZWAuIFJlcGVhdApjb21wdXRlIGRlc3Ryb3kgYW5kIGRlcmVnaXN0" + - "cmF0aW9uIGZvciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRoZW4gZGVzdHJveSB0aGUKY29udHJv" + - "bCBwbGFuZS4KCmBgYGJhc2gKS1VCRUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBc" + - "Cm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVf" + - "RU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4K" + - "YGBgCgpCb3RoIGBLVUJFQ09ORklHYCBhbmQgYEtVQkVDT05GSUdfRklMRWAgYXJlIHJlcXVpcmVk" + - "IG9uIHRoZSBjb250cm9sLXBsYW5lCmRlc3Ryb3kgYmVjYXVzZSBpdHMgbmFtZXNwYWNlIGNsZWFu" + - "dXAgdXNlcyBhbWJpZW50IGBrdWJlY3RsYC4KCkZvciB0aGUgQ0xJIHByb2ZpbGUgZmxvdywga2Vl" + - "cApgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvb3V0LzxjbHVzdGVyLW5hbWU+LXJl" + - "Z2lzdGVyLXZhbHVlcy55YW1sYAp1bnRpbCB0ZWFyZG93biBjb21wbGV0ZXMgYmVjYXVzZSBgZG93" + - "bmAgcmVhZHMgaXRzIGNsdXN0ZXIgSUQuIEZpcnN0IHF1ZXJ5IHRoZQpsaXZlIHJlZ2lzdHJhdGlv" + - "biBzZXQgd2l0aCB0aGUgc2FtZSBjb21wbGV0ZSBwZXJzaXN0ZW50IHByZWZpeDoKCmBgYGJhc2gK" + - "bnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFu" + - "ZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0" + - "YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAg" + - "LS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4" + - "dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwK" + - "ICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAogIHN0YXR1cyBcCiAg" + - "LS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1uY2EtaWQg" + - "PG5jYS1pZD4KYGBgCgpTaG93IHRoZSByZWdpc3RlcmVkIGNvbXB1dGUtcGxhbmUgbGlzdC4gTmFt" + - "ZWQtY2x1c3RlciBgZG93biAtLXBsYW4tb25seWAgZG9lcwpub3QgcXVlcnkgSUNNUywgc28gaXQg" + - "cHJldmlld3Mgb25seSB0aGF0IGNvbXB1dGUgcGxhbmUgYW5kIGNhbm5vdCBzaG93IHRoZQpjb25k" + - "aXRpb25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwuIElmIHRoZSB0YXJnZXQgaXMgdGhlIGxhc3Qg" + - "cmVnaXN0ZXJlZApjbHVzdGVyLCByZWFsIGBkb3duYCBhbHNvIGRlc3Ryb3lzIHRoZSBjb250cm9s" + - "IHBsYW5lLiBHZXQgZXhwbGljaXQgY29uZmlybWF0aW9uCmZvciBib3RoIHJlbW92YWxzIGJlZm9y" + - "ZSBjb250aW51aW5nLiBUaGVuIHByZXZpZXcgYW5kIGV4ZWN1dGUgd2l0aCB0aGUgc2FtZQpwcmVm" + - "aXg6CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAt" + - "LWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29t" + - "cHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1l" + - "bnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0IDxjb250cm9s" + - "LXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29tcHV0ZS1wbGFu" + - "ZS1jb250ZXh0PiBcCiAgLS1pY21zLXVybCA8Y29tcHV0ZS1yZWFjaGFibGUtaWNtcy11cmw+IFwK" + - "ICBkb3duIC0tcGxhbi1vbmx5IFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVz" + - "dGVyLW5hbWU+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZp" + - "Zz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3Nl" + - "bGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1j" + - "b21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBs" + - "YW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1j" + - "b250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJl" + - "YWNoYWJsZS1pY21zLXVybD4gXAogIGRvd24gXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBs" + - "YW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+CmBgYAoKUmVwZWF0IGBkb3du" + - "YCBmb3IgZWFjaCBjb21wdXRlIGNsdXN0ZXIuIEVhY2ggcnVuIGRlc3Ryb3lzIHRoYXQgY29tcHV0" + - "ZSBwbGFuZSBhbmQKdW5yZWdpc3RlcnMgaXRzIElDTVMgcm93LiBJdCByZW1vdmVzIHRoZSBjb250" + - "cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgbm8gY2x1c3RlcgpyZWdpc3RyYXRpb25zIHJlbWFpbi4KUEsH" + - "CJZjvFkSMAAAEjAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAOwAJAGRhdGEvbnZjZi1zZWxm" + - "LW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvZGVidWdnaW5nLm1kVVQFAAEAps4SIyBE" + - "ZWJ1Z2dpbmcgUmVmZXJlbmNlCgpSZWNpcGVzIGZvciBkaWFnbm9zaW5nIGFuZCBmaXhpbmcgY29t" + - "bW9uIE5WQ0Ygc2VsZi1tYW5hZ2VkIHN0YWNrIGZhaWx1cmVzLgoKIyMgUXVpY2sgU3RhdHVzIENv" + - "bW1hbmRzCgpgYGBiYXNoCiMgQWxsIHBvZHMgYWNyb3NzIGFsbCBuYW1lc3BhY2VzCmt1YmVjdGwg" + - "Z2V0IHBvZHMgLUEgLW8gd2lkZQoKIyBQb2RzIGluIGEgc3BlY2lmaWMgbmFtZXNwYWNlCmt1YmVj" + - "dGwgZ2V0IHBvZHMgLW4gPG5hbWVzcGFjZT4KCiMgQWxsIGhlbG0gcmVsZWFzZXMKaGVsbSBsaXN0" + - "IC1BCgojIFJlY2VudCBldmVudHMgKG1vc3QgdXNlZnVsIGZvciBkaWFnbm9zaW5nIGZhaWx1cmVz" + - "KQprdWJlY3RsIGdldCBldmVudHMgLW4gPG5hbWVzcGFjZT4gLS1zb3J0LWJ5PScubGFzdFRpbWVz" + - "dGFtcCcKCiMgRGVzY3JpYmUgYSBzcGVjaWZpYyBwb2QgKHNob3dzIGV2ZW50cywgY29uZGl0aW9u" + - "cywgdm9sdW1lcykKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1l" + - "PgpgYGAKCiMjIEZhaWx1cmU6IEltYWdlUHVsbEJhY2tPZmYKCiMjIyBTeW1wdG9tcwoKYGBgdGV4" + - "dApOQU1FICAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICAgICAgICAgICBSRVNUQVJUUyAgIEFH" + - "RQpjYXNzYW5kcmEtMCAgICAwLzEgICAgIEltYWdlUHVsbEJhY2tPZmYgICAwICAgICAgICAgIDVt" + - "CmBgYAoKRXZlbnRzIHNob3c6CgpgYGB0ZXh0CkZhaWxlZCB0byBwdWxsIGltYWdlICJudmNyLmlv" + - "Ly4uLi9pbWFnZTp0YWciOiA0MDEgVW5hdXRob3JpemVkCmBgYAoKIyMjIERpYWdub3NpcwoKYGBg" + - "YmFzaAojIENoZWNrIHdoYXQgaW1hZ2UgaXMgZmFpbGluZwprdWJlY3RsIGRlc2NyaWJlIHBvZCAt" + - "biA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IHwgZ3JlcCAtQTUgIkV2ZW50czoiCgojIENoZWNrIGlm" + - "IHB1bGwgc2VjcmV0IGV4aXN0cyBpbiB0aGUgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHNlY3JldCBu" + - "dmNyLWNyZWRzIC1uIDxuYW1lc3BhY2U+CgojIENoZWNrIGlmIHRoZSBwb2Qgc3BlYyBoYXMgaW1h" + - "Z2VQdWxsU2VjcmV0cwprdWJlY3RsIGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiAt" + - "byBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9JwoKIyBDaGVjayBpZiB0aGUgU2Vy" + - "dmljZUFjY291bnQgaGFzIGltYWdlUHVsbFNlY3JldHMKa3ViZWN0bCBnZXQgc2EgPHNhLW5hbWU+" + - "IC1uIDxuYW1lc3BhY2U+IC1vIGpzb25wYXRoPSd7LmltYWdlUHVsbFNlY3JldHN9JwpgYGAKCiMj" + - "IyBGaXhlcwoKMS4gKipTZWNyZXQgbWlzc2luZyBpbiBuYW1lc3BhY2UqKjogQ3JlYXRlIGl0Cgog" + - "ICBgYGBiYXNoCiAgIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1j" + - "cmVkcyBcCiAgICAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogICAgIC0tZG9ja2VyLXVzZXJu" + - "YW1lPSckb2F1dGh0b2tlbicgXAogICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVki" + - "IFwKICAgICAtLW5hbWVzcGFjZT08bmFtZXNwYWNlPiBcCiAgICAgLS1kcnktcnVuPWNsaWVudCAt" + - "byB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCiAgIGBgYAoKMi4gKipTZWNyZXQgZXhpc3RzIGJ1" + - "dCBwb2QgZG9lc24ndCByZWZlcmVuY2UgaXQqKjogVGhlIGNoYXJ0IG5lZWRzIGBpbWFnZVB1bGxT" + - "ZWNyZXRzYCBjb25maWd1cmVkIHZpYSBoZWxtZmlsZSB2YWx1ZXMuIFNlZSBbcHVsbC1zZWNyZXRz" + - "Lm1kXShwdWxsLXNlY3JldHMubWQpLgoKMy4gKipDaGFydCBkb2Vzbid0IHN1cHBvcnQgaW1hZ2VQ" + - "dWxsU2VjcmV0cyoqIChvcGVuYmFvLCBpbnZvY2F0aW9uLXNlcnZpY2UsIGVzcy1hcGksIG5vdGFy" + - "eS1zZXJ2aWNlKTogUGF0Y2ggU2VydmljZUFjY291bnRzIGFuZCByZXN0YXJ0IHBvZHMuIFNlZSBb" + - "cHVsbC1zZWNyZXRzLm1kXShwdWxsLXNlY3JldHMubWQpLgoKNC4gKipXcm9uZyBjcmVkZW50aWFs" + - "cyBpbiBzZWNyZXQqKjogRGVsZXRlIGFuZCByZWNyZWF0ZQoKICAgYGBgYmFzaAogICBrdWJlY3Rs" + - "IGRlbGV0ZSBzZWNyZXQgbnZjci1jcmVkcyAtbiA8bmFtZXNwYWNlPgogICAjIFJlY3JlYXRlIHdp" + - "dGggY29ycmVjdCBjcmVkZW50aWFscwogICBgYGAKCiMjIEZhaWx1cmU6IEluaXQ6MC8xIFN0dWNr" + - "IChWYXVsdCBBZ2VudCkKCiMjIyBTeW1wdG9tcwoKU2VydmljZSBwb2RzIHN0dWNrIGluIGBJbml0" + - "OjAvMWAgZm9yIG1pbnV0ZXM6CgpgYGBiYXNoCk5BTUUgICAgICAgICAgICAgICAgICAgICAgICBS" + - "RUFEWSAgIFNUQVRVUyAgICAgUkVTVEFSVFMgICBBR0UKbnZjZi1hcGktN2Y0Yzc2Zjc4OC00NHZs" + - "dCAgMC8yICAgICBJbml0OjAvMSAgIDAgICAgICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoK" + - "VGhlIGluaXQgY29udGFpbmVyIGlzIHRoZSB2YXVsdC1hZ2VudC1pbml0IGluamVjdG9yIHdhaXRp" + - "bmcgZm9yIE9wZW5CYW8uCgpgYGBiYXNoCiMgQ2hlY2sgT3BlbkJhbyBwb2RzCmt1YmVjdGwgZ2V0" + - "IHBvZHMgLW4gdmF1bHQtc3lzdGVtCgojIENoZWNrIGlmIE9wZW5CYW8gbWlncmF0aW9uIGpvYiBy" + - "YW4Ka3ViZWN0bCBnZXQgam9icyAtbiB2YXVsdC1zeXN0ZW0KCiMgQ2hlY2sgT3BlbkJhbyBwb2Qg" + - "bG9ncwprdWJlY3RsIGxvZ3MgLW4gdmF1bHQtc3lzdGVtIG9wZW5iYW8tc2VydmVyLTAgLWMgb3Bl" + - "bmJhbwoKIyBDaGVjayBpbml0IGNvbnRhaW5lciBsb2dzIG9uIHRoZSBzdHVjayBwb2QKa3ViZWN0" + - "bCBsb2dzIC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gLWMgdmF1bHQtYWdlbnQtaW5pdApgYGAK" + - "CiMjIyBGaXhlcwoKMS4gKipPcGVuQmFvIHBvZHMgbm90IHJ1bm5pbmcqKjogQ2hlY2sgdGhlaXIg" + - "ZXZlbnRzIGZvciBpbWFnZSBwdWxsIGlzc3VlcywgcmVzb3VyY2UgaXNzdWVzLCBldGMuCgoyLiAq" + - "Kk9wZW5CYW8gbWlncmF0aW9uIGpvYiBkaWRuJ3QgcnVuKio6IFRoaXMgaGFwcGVucyB3aGVuIGBo" + - "ZWxtZmlsZSBzeW5jYCB3YXMgaW50ZXJydXB0ZWQuIERlc3Ryb3kgYW5kIHJlLXN5bmMgb3BlbmJh" + - "bzoKCiAgIGBgYGJhc2gKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3Ig" + - "bmFtZT1vcGVuYmFvLXNlcnZlciBkZXN0cm95CiAgIGt1YmVjdGwgZGVsZXRlIG5hbWVzcGFjZSB2" + - "YXVsdC1zeXN0ZW0KICAga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIHZhdWx0LXN5c3RlbQogICAj" + - "IFJlLWNyZWF0ZSBwdWxsIHNlY3JldCBpZiBuZWVkZWQKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhl" + - "bG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBzeW5jCiAgIGBgYAoKMy4gKipP" + - "cGVuQmFvIHBvZHMgcnVubmluZyBidXQgbm90IGluaXRpYWxpemVkKio6IENoZWNrIHVuc2VhbCBz" + - "dGF0dXM6CgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZXhlYyAtbiB2YXVsdC1zeXN0ZW0gb3BlbmJh" + - "by1zZXJ2ZXItMCAtYyBvcGVuYmFvIC0tIGJhbyBzdGF0dXMKICAgYGBgCgo0LiAqKmB2YXVsdC1h" + - "Z2VudC1pbml0YCBsb2dzIGBhdXRoL2p3dC9sb2dpbmAgLT4gYDQwMCAuLi4gbm8ga25vd24ga2V5" + - "IHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQgdGhlIHRva2VuIHNpZ25hdHVyZWAqKgogICAoY29tbW9u" + - "IG9uIEFLUywgYW5kIG9uIGFueSBjbHVzdGVyIHdob3NlIE9JREMgaXNzdWVyIHB1Ymxpc2hlcyBh" + - "IHJvdGF0aW5nIG11bHRpLWtleSBKV0tTKToKICAgdGhlIE9wZW5CYW8gYGF1dGgvand0YCBtZXRo" + - "b2Qgd2FzIGNvbmZpZ3VyZWQgd2l0aCBhIHNpbmdsZSBzdGF0aWMgbW91bnRlZCBwdWJsaWMga2V5" + - "CiAgIChgand0X3ZhbGlkYXRpb25fcHVia2V5c2ApIGluc3RlYWQgb2YgdGhlIGlzc3VlcidzIGxp" + - "dmUgSldLUywgc28gaXQgY2Fubm90IHZhbGlkYXRlIHRoZQogICBjbHVzdGVyLXNpZ25lZCBTZXJ2" + - "aWNlQWNjb3VudCB0b2tlbnMgdGhlIHZhdWx0LWFnZW50cyBwcmVzZW50LiBFdmVyeSBzZXJ2aWNl" + - "J3MKICAgYHZhdWx0LWFnZW50LWluaXRgIHRoZW4gbG9vcHMgb24gdGhhdCA0MDAgYW5kIHRoZSBw" + - "b2QgbmV2ZXIgbGVhdmVzIGBJbml0OjAvMWAuIFRoaXMgaXMgdGhlCiAgIGJlaGF2aW9yIG9mIHRo" + - "ZSBiYXNlIGRlZmF1bHQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxl" + - "ZDogZmFsc2VgOyB0aGUKICAgbWlncmF0aW9uIGxvZyBzaG93cyBgT0lEQyBpc3N1ZXIgZGlzY292" + - "ZXJ5IGlzIGRpc2FibGVkLiBVc2luZyBTZXJ2aWNlQWNjb3VudCBpc3N1ZXIgYW5kCiAgIG1vdW50" + - "ZWQgcHVibGljIGtleSBmYWxsYmFja2AuIEVuYWJsZSBpc3N1ZXIgZGlzY292ZXJ5IHNvIHRoZSBt" + - "aWdyYXRpb24gdXNlcyB0aGUgbGl2ZSBKV0tTLAogICB0aGVuIHJlLXJ1biBpdDoKCiAgIGBgYGJh" + - "c2gKICAgIyBJbiB5b3VyIGVudiB2YWx1ZXMgKGUuZy4gZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwp" + - "LCBzZXQ6CiAgICMgICBvcGVuYmFvOgogICAjICAgICBtaWdyYXRpb25zOgogICAjICAgICAgIGlz" + - "c3VlckRpc2NvdmVyeToKICAgIyAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAga3ViZWN0bCBkZWxl" + - "dGUgam9iIC1uIHZhdWx0LXN5c3RlbSBvcGVuYmFvLXNlcnZlci1taWdyYXRpb25zCiAgIEhFTE1G" + - "SUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9b3BlbmJhby1zZXJ2ZXIgc3lu" + - "YwogICBgYGAKCiAgIFRoZSBtaWdyYXRpb24gbG9nIHNob3VsZCB0aGVuIHNob3cgYFJlY2VpdmVk" + - "IGRpc2NvdmVyeSBkb2N1bWVudCBmcm9tCiAgIC4uLi8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmln" + - "dXJhdGlvbmAgYW5kIGBGaW5hbCBPcGVuQmFvIEpXVCBKV0tTIFVSTCBzZXQgdG86CiAgIC4uLi9v" + - "cGVuaWQvdjEvandrc2AsIGFuZCB0aGUgc2VydmljZSBwb2RzIGF1dGhlbnRpY2F0ZSBhbmQgcmVh" + - "Y2ggUmVhZHkgd2l0aGluIH4xIG1pbi4KICAgQUtTIGNsdXN0ZXJzIHdpdGggdGhlIGNsdXN0ZXIg" + - "T0lEQyBpc3N1ZXIgZW5hYmxlZCAodGhlIGBha3MtY2x1c3RlcmAgZGVmYXVsdCkgYWx3YXlzIG5l" + - "ZWQKICAgdGhpcyBiZWNhdXNlIHRoZSBzdGF0aWMtcHVia2V5IGZhbGxiYWNrIGNhbm5vdCBtYXRj" + - "aCB0aGUgaXNzdWVyJ3Mgcm90YXRpbmcgc2lnbmluZyBrZXlzLgoKIyMgRmFpbHVyZTogT09NS2ls" + - "bGVkIG9uIENhc3NhbmRyYQoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVB" + - "RFkgICBTVEFUVVMgICAgUkVTVEFSVFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIE9PTUtp" + - "bGxlZCAgMyAgICAgICAgIDEwbQpgYGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKa3ViZWN0bCBk" + - "ZXNjcmliZSBwb2QgLW4gY2Fzc2FuZHJhLXN5c3RlbSBjYXNzYW5kcmEtMCB8IGdyZXAgLUEzICJM" + - "YXN0IFN0YXRlIgpgYGAKCiMjIyBGaXgKCk92ZXJyaWRlIENhc3NhbmRyYSByZXNvdXJjZXMgdmlh" + - "IGhlbG1maWxlIHZhbHVlcy4gU2VlIEV4YW1wbGUgMSBpbgpbZXhhbXBsZXMubWRdKC4uL2V4YW1w" + - "bGVzLm1kKS4KCmBgYHlhbWwKLSBjYXNzYW5kcmE6CiAgICByZXNvdXJjZXM6CiAgICAgIGxpbWl0" + - "czoKICAgICAgICBjcHU6ICI4IgogICAgICAgIG1lbW9yeTogODE5Mk1pCiAgICAgIHJlcXVlc3Rz" + - "OgogICAgICAgIGNwdTogIjIiCiAgICAgICAgbWVtb3J5OiA0MDk2TWkKYGBgCgpOb3RlOiBgcmVz" + - "b3VyY2VQcmVzZXRgIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIE5WQ0YgY2Fzc2FuZHJhIHdyYXBw" + - "ZXIgY2hhcnQuIFVzZSBleHBsaWNpdCBgcmVzb3VyY2VzYC4KCiMjIEZhaWx1cmU6IFBvZHMgU3R1" + - "Y2sgaW4gUGVuZGluZwoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkg" + - "ICBTVEFUVVMgICAgUkVTVEFSVFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIFBlbmRpbmcg" + - "ICAwICAgICAgICAgIDEwbQpgYGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKIyBDaGVjayBldmVu" + - "dHMgZm9yIHNjaGVkdWxpbmcgZmFpbHVyZXMKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVz" + - "cGFjZT4gPHBvZC1uYW1lPgoKIyBDb21tb24gY2F1c2VzOgojIC0gIjAvMTIgbm9kZXMgYXJlIGF2" + - "YWlsYWJsZTogMTIgbm9kZShzKSBkaWRuJ3QgbWF0Y2ggUG9kJ3Mgbm9kZSBhZmZpbml0eSIKIyAt" + - "ICIwLzEyIG5vZGVzIGFyZSBhdmFpbGFibGU6IDEyIEluc3VmZmljaWVudCBtZW1vcnkiCiMgLSAi" + - "cGVyc2lzdGVudHZvbHVtZWNsYWltIG5vdCBmb3VuZCIKYGBgCgojIyMgRml4ZXMKCjEuICoqTm9k" + - "ZSBzZWxlY3RvciBtaXNtYXRjaCoqOiBDaGVjayBgbm9kZVNlbGVjdG9yc2AgaW4gZW52aXJvbm1l" + - "bnQgZmlsZQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBub2RlcyAtLXNob3ctbGFiZWxzIHwg" + - "Z3JlcCBudmNmCiAgIGBgYAoKMi4gKipTdG9yYWdlIGNsYXNzIG5vdCBmb3VuZCoqOiBDaGVjayBz" + - "dG9yYWdlIGNsYXNzIGV4aXN0cwoKICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBzdG9yYWdlY2xh" + - "c3MKICAgYGBgCgozLiAqKkluc3VmZmljaWVudCByZXNvdXJjZXMqKjogQ2hlY2sgbm9kZSBjYXBh" + - "Y2l0eQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGRlc2NyaWJlIG5vZGUgPG5vZGUtbmFtZT4gfCBn" + - "cmVwIC1BNSAiQWxsb2NhdGVkIHJlc291cmNlcyIKICAgYGBgCgojIyBGYWlsdXJlOiBIZWxtIFJl" + - "bGVhc2UgaW4gRmFpbGVkIFN0YXRlCgojIyMgU3ltcHRvbXMKCmBgYGJhc2gKaGVsbSBsaXN0IC1B" + - "CiMgU2hvd3MgcmVsZWFzZSB3aXRoIFNUQVRVUzogZmFpbGVkCmBgYAoKUmUtcnVubmluZyBgaGVs" + - "bWZpbGUgc3luY2AgYXBwZWFycyB0byBzdWNjZWVkIGJ1dCBzZXJ2aWNlcyBkb24ndCB3b3JrICht" + - "aWdyYXRpb25zIHNraXBwZWQpLgoKIyMjIERpYWdub3NpcwoKYGBgYmFzaApoZWxtIGhpc3Rvcnkg" + - "PHJlbGVhc2UtbmFtZT4gLW4gPG5hbWVzcGFjZT4KYGBgCgojIyMgRml4CgpNdXN0IGRlc3Ryb3kg" + - "dGhlIGZhaWxlZCByZWxlYXNlIGFuZCByZS1zeW5jIChub3QganVzdCBhcHBseSk6CgpgYGBiYXNo" + - "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9PHJlbGVhc2U+IGRl" + - "c3Ryb3kKIyBJZiBuYW1lc3BhY2UgbmVlZHMgY2xlYW51cDoKa3ViZWN0bCBkZWxldGUgbmFtZXNw" + - "YWNlIDxuYW1lc3BhY2U+Cmt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSA8bmFtZXNwYWNlPgojIFJl" + - "LWNyZWF0ZSBwdWxsIHNlY3JldCBpZiBuZWVkZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxl" + - "IC0tc2VsZWN0b3IgbmFtZT08cmVsZWFzZT4gc3luYwpgYGAKCiMjIEZhaWx1cmU6IEFjY291bnQg" + - "Qm9vdHN0cmFwIEpvYiBGYWlsZWQKCiMjIyBTeW1wdG9tcwoKU2VydmljZXMgZGVwbG95IGJ1dCBm" + - "dW5jdGlvbnMgY2FuJ3QgYmUgY3JlYXRlZC4gRXZlbnRzIHNob3cgYm9vdHN0cmFwIGpvYiBmYWls" + - "dXJlLgoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIGJvb3RzdHJhcCBqb2Igc3RhdHVz" + - "Cmt1YmVjdGwgZ2V0IGpvYnMgLW4gbnZjZgoKIyBHZXQgbG9ncyAoam9iIGF1dG8tZGVsZXRlcyBh" + - "ZnRlciB+NSBtaW51dGVzKQprdWJlY3RsIGxvZ3Mgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0" + - "cmFwIC1uIG52Y2YKCiMgQ2hlY2sgQVBJIGxvZ3MKa3ViZWN0bCBsb2dzIC1uIG52Y2YgLWwgYXBw" + - "Lmt1YmVybmV0ZXMuaW8vbmFtZT1udmNmLWFwaSAtLXRhaWw9MTAwCmBgYAoKIyMjIENvbW1vbiBD" + - "YXVzZXMKCjEuICoqV3JvbmcgYmFzZTY0IGNyZWRlbnRpYWxzKio6IENyZWRlbnRpYWxzIGluIGBz" + - "ZWNyZXRzLzxlbnY+LXNlY3JldHMueWFtbGAgbXVzdCBiZSBgJG9hdXRodG9rZW46QVBJX0tFWWAg" + - "YmFzZTY0LWVuY29kZWQsIG5vdCBqdXN0IHRoZSBBUEkga2V5CgogICBgYGBiYXNoCiAgICMgVmVy" + - "aWZ5IHlvdXIgZW5jb2RlZCBjcmVkZW50aWFsCiAgIGVjaG8gJ1lPVVJfQkFTRTY0X1NUUklORycg" + - "fCBiYXNlNjQgLWQKICAgIyBTaG91bGQgb3V0cHV0OiAkb2F1dGh0b2tlbjpudmFwaS14eHh4eAog" + - "ICBgYGAKCjIuICoqUmVnaXN0cnkgdW5yZWFjaGFibGUqKjogQVBJIGNhbid0IHJlYWNoIHRoZSBy" + - "ZWdpc3RyeSBzcGVjaWZpZWQgaW4gYGFjY291bnRCb290c3RyYXAucmVnaXN0cnlDcmVkZW50aWFs" + - "c2AKCiMjIyBGaXgKCkZpeCBjcmVkZW50aWFscyBpbiBzZWNyZXRzIGZpbGUsIHRoZW4gcmVjb3Zl" + - "ciBzZXJ2aWNlcyB3aXRob3V0IGRlc3Ryb3lpbmcgZGVwZW5kZW5jaWVzOgoKYGBgYmFzaApIRUxN" + - "RklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2Vz" + - "IGRlc3Ryb3kKa3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIG52Y2YgYXBpLWtleXMgZXNzIHNpcyAt" + - "LWlnbm9yZS1ub3QtZm91bmQKa3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIG52Y2YgJiYga3ViZWN0" + - "bCBjcmVhdGUgbmFtZXNwYWNlIGFwaS1rZXlzICYmIFwKICBrdWJlY3RsIGNyZWF0ZSBuYW1lc3Bh" + - "Y2UgZXNzICYmIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBzaXMKIyBSZS1jcmVhdGUgcHVsbCBz" + - "ZWNyZXRzIGlmIG5lZWRlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBy" + - "ZWxlYXNlLWdyb3VwPXNlcnZpY2VzIHN5bmMKYGBgCgojIyBGYWlsdXJlOiBOVkNBIENsZWFudXAg" + - "U3R1Y2sgKEZpbmFsaXplcnMpCgojIyMgU3ltcHRvbXMKCkNvbXB1dGUtcGxhbmUgY2xlYW51cCBo" + - "YW5ncy4gTmFtZXNwYWNlcwpzdHVjayBpbiBgVGVybWluYXRpbmdgOgoKYGBgYmFzaAprdWJlY3Rs" + - "IGdldCBucwojIG52Y2Etb3BlcmF0b3IgICAgVGVybWluYXRpbmcgICAxMG0KIyBudmNmLWJhY2tl" + - "bmQgICAgIFRlcm1pbmF0aW5nICAgMTBtCmBgYAoKIyMjIEZpeAoKUnVuIHRoaXMgb25seSBhZ2Fp" + - "bnN0IHRoZSBjb21wdXRlIGNvbnRleHQsIGFmdGVyIHRoZSBub3JtYWwgY29tcHV0ZS1wbGFuZQp0" + - "ZWFyZG93biBoYXMgZmFpbGVkLiBSZW1vdmUgZmluYWxpemVycyBmcm9tIE5WQ0ZCYWNrZW5kIGN1" + - "c3RvbSByZXNvdXJjZXMgYW5kCmZvcmNlLWRlbGV0ZSBzdHVjayBuYW1lc3BhY2VzOgoKYGBgYmFz" + - "aApleHBvcnQgQ09NUFVURV9DT05URVhUPTxjb21wdXRlLXBsYW5lLWNvbnRleHQ+CgojIFJlbW92" + - "ZSBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3VyY2VzCmt1YmVjdGwgLS1jb250ZXh0" + - "ICIkQ09NUFVURV9DT05URVhUIiBnZXQgbnZjZmJhY2tlbmRzIC1BIC1vIGpzb24gfCBcCiAganEg" + - "Jy5pdGVtc1tdIHwgLm1ldGFkYXRhLm5hbWVzcGFjZSArICIvIiArIC5tZXRhZGF0YS5uYW1lJyAt" + - "ciB8IFwKICB4YXJncyAtSXt9IHNoIC1jICdjb250ZXh0PSIkMSI7IG5zPSIkezIlJS8qfSI7IG5h" + - "bWU9IiR7MiMjKi99Ijsga3ViZWN0bCAtLWNvbnRleHQgIiRjb250ZXh0IiBwYXRjaCBudmNmYmFj" + - "a2VuZCAiJG5hbWUiIC1uICIkbnMiIC0tdHlwZT1tZXJnZSAtcCAie1wibWV0YWRhdGFcIjp7XCJm" + - "aW5hbGl6ZXJzXCI6W119fSInIF8gIiRDT01QVVRFX0NPTlRFWFQiIHt9CgojIEZvcmNlLWRlbGV0" + - "ZSBzdHVjayBuYW1lc3BhY2VzIGJ5IGNsZWFyaW5nIHRoZWlyIGZpbmFsaXplcnMKZm9yIG5zIGlu" + - "IG52Y2Etb3BlcmF0b3IgbnZjZi1iYWNrZW5kOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09N" + - "UFVURV9DT05URVhUIiBnZXQgbmFtZXNwYWNlICIkbnMiIC1vIGpzb24gMj4vZGV2L251bGwgfCBc" + - "CiAgICBqcSAnLnNwZWMuZmluYWxpemVycyA9IFtdJyB8IFwKICAgIGt1YmVjdGwgLS1jb250ZXh0" + - "ICIkQ09NUFVURV9DT05URVhUIiByZXBsYWNlIFwKICAgICAgLS1yYXcgIi9hcGkvdjEvbmFtZXNw" + - "YWNlcy8kbnMvZmluYWxpemUiIC1mIC0gMj4vZGV2L251bGwKZG9uZQpgYGAKCiMjIEZhaWx1cmU6" + - "IE5WQ0EgT3BlcmF0b3IgTWlzc2luZyBvciBOb3QgUmVhZHkKCiMjIyBTeW1wdG9tcwoKQWZ0ZXIg" + - "Y29tcHV0ZS1wbGFuZSBpbnN0YWxsIGNvbXBsZXRlcywgbm8gYG52Y2Etb3BlcmF0b3JgIERlcGxv" + - "eW1lbnQgZXhpc3RzLCBvcgppdCBleGlzdHMgYnV0IHBvZHMgYXJlIG5vdCByZWFkeToKCmBgYGJh" + - "c2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IGRlcGxveW1l" + - "bnQgbnZjYS1vcGVyYXRvciBcCiAgLW4gbnZjYS1vcGVyYXRvcgprdWJlY3RsIC0tY29udGV4dCA8" + - "Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgcG9kcyAtbiBudmNhLW9wZXJhdG9yCmBgYAoKIyMj" + - "IERpYWdub3NpcyBhbmQgRml4ZXMKCkZpcnN0IGlkZW50aWZ5IHdoZXRoZXIgdGhlIGluc3RhbGxh" + - "dGlvbiB1c2VkIHRoZSBIZWxtZmlsZSB2YWx1ZXMgZmxvdyBvciB0aGUKQ0xJIHByb2ZpbGUgZmxv" + - "dy4gUmUtcnVuIG9ubHkgdGhhdCBmbG93J3MgcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24g" + - "c3RlcHMKZnJvbSBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxh" + - "bmUtaW5zdGFsbGF0aW9uLm1kKS4gRG8gbm90CnN1YnN0aXR1dGUgb25lIGhhbmRvZmYgZm9yIHRo" + - "ZSBvdGhlci4KCklmIGluc3RhbGxhdGlvbiBzdWNjZWVkcyBidXQgcG9kcyBzdGlsbCBmYWlsLCBp" + - "bnNwZWN0IHRoZSBjb21wdXRlIGNvbnRleHQ6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxj" + - "b21wdXRlLXBsYW5lLWNvbnRleHQ+IGRlc2NyaWJlIGRlcGxveSBudmNhLW9wZXJhdG9yIFwKICAt" + - "biBudmNhLW9wZXJhdG9yCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+" + - "IGxvZ3MgZGVwbG95bWVudC9udmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yIC0tdGFp" + - "bD0yMDAKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG52Y2Zi" + - "YWNrZW5kIC1uIG52Y2Etb3BlcmF0b3IKYGBgCgpGb3IgcHJpdmF0ZSByZWdpc3RyeSBmYWlsdXJl" + - "cywgdmVyaWZ5IHRoYXQgdGhlIHB1bGwgc2VjcmV0IGV4aXN0cyBpbgpgbnZjYS1vcGVyYXRvcmAu" + - "IFRoZSBjaGFydCBhbmQgb3BlcmF0b3IgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWA7IGRvIG5v" + - "dCB1c2UgYQpicm9hZGVyIG1hbnVhbCBuYW1lc3BhY2UgbG9vcC4gU2VlCltwdWxsLXNlY3JldHMu" + - "bWRdKHB1bGwtc2VjcmV0cy5tZCNjb21wdXRlLXBsYW5lLXNlY3JldCkuCgojIyBGYWlsdXJlOiBH" + - "YXRld2F5IEVuZHBvaW50IENoYW5nZWQKCiMjIyBTeW1wdG9tcwoKUmVxdWVzdHMgdGhyb3VnaCB0" + - "aGUgY29uZmlndXJlZCByb3V0ZSBkb21haW4gZmFpbCBhZnRlciB0aGUgR2F0ZXdheSBvciBpdHMg" + - "bG9hZCBiYWxhbmNlciBpcyByZXBsYWNlZC4gVGhlIEdhdGV3YXkgcmVwb3J0cyBhIG5ldyBlbmRw" + - "b2ludC4KCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKR0FURVdBWV9BRERSPSQoa3ViZWN0bCAtLWNv" + - "bnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgXAogIG52Y2YtZ2F0ZXdh" + - "eSAtbiBlbnZveS1nYXRld2F5IFwKICAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBd" + - "LnZhbHVlfScpCnRlc3QgLW4gIiRHQVRFV0FZX0FERFIiCmRpZyArc2hvcnQgImFwaS48ZG9tYWlu" + - "PiIKY3VybCAtSCAiSG9zdDogYXBpLjxkb21haW4+IiAiaHR0cDovLyRHQVRFV0FZX0FERFIvaGVh" + - "bHRoIgoKIyBDaGVjayBkaXJlY3QgYWRkcmVzcyBmaWVsZHMgdXNlZCBieSBhIHNwbGl0IGRlcGxv" + - "eW1lbnQKZ3JlcCBudmNmTmF0c1NlcnZpY2VVUkwgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQv" + - "ZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwKZ3JlcCAtRSAnaWNtc1NlcnZpY2V8cmV2YWxTZXJ2aWNl" + - "fG5hdHMnIFwKICBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMv" + - "PGVudj4ueWFtbApgYGAKCiMjIyBGaXgKCktlZXAgYGdsb2JhbC5kb21haW5gLCByb3V0ZSBob3N0" + - "bmFtZXMsIGFuZCBIb3N0IG92ZXJyaWRlcyB1bmNoYW5nZWQuIFVwZGF0ZSBETlMKb3IgdGhlIGRp" + - "cmVjdCBjbGllbnQgZGVzdGluYXRpb24uIEZvciBzcGxpdCBkZXBsb3ltZW50cywgdXBkYXRlIG9u" + - "bHkgZGlyZWN0CkdhdGV3YXktYWRkcmVzcyBmaWVsZHMgYW5kIHJlZnJlc2ggcmVnaXN0cmF0aW9u" + - "IGFuZCBpbnN0YWxsYXRpb24gdGhyb3VnaCB0aGUKc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLiBTZWUK" + - "W0V4YW1wbGUgNF0oLi4vZXhhbXBsZXMubWQjZXhhbXBsZS00LXJlY292ZXItZnJvbS1hLWdhdGV3" + - "YXktZW5kcG9pbnQtY2hhbmdlKS4KCiMjIFVzZWZ1bCBOYW1lc3BhY2UtdG8tU2VydmljZSBNYXBw" + - "aW5nCgpRdWljayByZWZlcmVuY2UgZm9yIHdoaWNoIHNlcnZpY2VzIHJ1biBpbiB3aGljaCBuYW1l" + - "c3BhY2U6Cgp8IE5hbWVzcGFjZSB8IFNlcnZpY2VzIHwKfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS18" + - "CnwgbmF0cy1zeXN0ZW0gfCBuYXRzIHwKfCBjYXNzYW5kcmEtc3lzdGVtIHwgY2Fzc2FuZHJhIHwK" + - "fCB2YXVsdC1zeXN0ZW0gfCBvcGVuYmFvLXNlcnZlciB8CnwgbnZjZiB8IGFwaSwgaW52b2NhdGlv" + - "bi1zZXJ2aWNlLCBncnBjLXByb3h5LCBub3Rhcnktc2VydmljZSwgcmV2YWwsIGxsbS1yZXF1ZXN0" + - "LXJvdXRlciwgbGxtLWFwaS1nYXRld2F5IHwKfCBhcGkta2V5cyB8IGFwaS1rZXlzLCBhZG1pbi1p" + - "c3N1ZXItcHJveHkgfAp8IGVzcyB8IGVzcy1hcGkgfAp8IHNpcyB8IHNpcyB8CnwgZW52b3ktZ2F0" + - "ZXdheS1zeXN0ZW0gfCBlbnZveSBnYXRld2F5IChpbmdyZXNzIGNvbnRyb2xsZXIpIHwKfCBlbnZv" + - "eS1nYXRld2F5IHwgZ2F0ZXdheSByZXNvdXJjZSArIHJvdXRlcyB8ClBLBwi1enA7tTAAALUwAABQ" + - "SwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAEQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + - "bGxhdGlvbi9yZWZlcmVuY2VzL2hlbG1maWxlLXN0cnVjdHVyZS5tZFVUBQABAKbOEiMgSGVsbWZp" + - "bGUgU3RydWN0dXJlIFJlZmVyZW5jZQoKIyMgRGlyZWN0b3J5IExheW91dAoKYGBgYmFzaApudmNm" + - "LXNlbGYtbWFuYWdlZC1zdGFjay8KfC0tIGhlbG1maWxlLmQvCnwgICB8LS0gMDEtZGVwZW5kZW5j" + - "aWVzLnlhbWwuZ290bXBsICAjIE5BVFMsIENhc3NhbmRyYSwgT3BlbkJhbwp8ICAgfC0tIDAyLWNv" + - "cmUueWFtbC5nb3RtcGwgICAgICAgICAgIyBOVkNGIHNlcnZpY2VzICsgaW5ncmVzcwp8ICAgYC0t" + - "IDAzLW9ic2VydmFiaWxpdHkueWFtbC5nb3RtcGwgIyBPYnNlcnZhYmlsaXR5IHN0YWNrIChvcHRp" + - "b25hbCkKfC0tIGVudmlyb25tZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAgICAgICAg" + - "ICAgICMgRGVmYXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVudi1uYW1l" + - "Pi55YW1sICAgICAgICAgICAgICAjIFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKfC0tIHNlY3Jl" + - "dHMvCnwgICBgLS0gPGVudi1uYW1lPi1zZWNyZXRzLnlhbWwgICAgICAjIFNlbnNpdGl2ZSB2YWx1" + - "ZXMgKHJlZ2lzdHJ5IGNyZWRzLCBwYXNzd29yZHMpCmAtLSBnbG9iYWwueWFtbC5nb3RtcGwgICAg" + - "ICAgICAgICAgICAjIEdvIHRlbXBsYXRlIHRoYXQgY29uc3RydWN0cyBwZXItY2hhcnQgdmFsdWVz" + - "CgpudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2svCnwtLSBoZWxtZmlsZS5kLwp8ICAgfC0tIDAxLWRl" + - "cGVuZGVuY2llcy55YW1sLmdvdG1wbCAgIyBDb21wdXRlIHBsYW5lIGRlcGVuZGVuY3kgY29tcG9u" + - "ZW50cwp8ICAgYC0tIDAyLW52Y2EueWFtbC5nb3RtcGwgICAgICAgICAgIyBudmNhLW9wZXJhdG9y" + - "IGNoYXJ0IGFuZCBudmNhIGNvbmZpZ3VyYXRpb24KfC0tIGVudmlyb25tZW50cy8KfCAgIHwtLSBi" + - "YXNlLnlhbWwgICAgICAgICAgICAgICAgICAgICMgRGVmYXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9u" + - "bWVudHMpCnwgICBgLS0gPGVudi1uYW1lPi55YW1sICAgICAgICAgICAgICAjIFBlci1lbnZpcm9u" + - "bWVudCBvdmVycmlkZXMKYC0tIGdsb2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAgICMgR28g" + - "dGVtcGxhdGUgdGhhdCBjb25zdHJ1Y3RzIHBlci1jaGFydCB2YWx1ZXMKYGBgCgpUaGVzZSBzdGFj" + - "a3MgaGF2ZSBzZXBhcmF0ZSBlbnZpcm9ubWVudHMgYW5kIGNsdXN0ZXIgY29udGV4dHMuIFRoZSBI" + - "ZWxtZmlsZQp2YWx1ZXMgZmxvdyBhdXRob3JzIGJvdGggZW52aXJvbm1lbnQgZmlsZXMuIFRoZSBD" + - "TEkgcHJvZmlsZSBmbG93IGluc3RlYWQgdXNlcwp0aGUgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBs" + - "YW5lIHByb2ZpbGUgYXMgaXRzIGVuZHBvaW50IHNvdXJjZS4gRG8gbm90IG1peCB0aGUKaGFuZG9m" + - "ZnMuIFNlZSBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUt" + - "aW5zdGFsbGF0aW9uLm1kKS4KCiMjIEdvdG1wbCBGaWxlcyBhbmQgVGhlaXIgUmVsZWFzZXMKCiMj" + - "IyAwMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGwKCnwgUmVsZWFzZSB8IENoYXJ0IHwgTmFtZXNw" + - "YWNlIHwgTm90ZXMgfAp8LS0tLS0tLS0tfC0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLXwKfCBu" + - "YXRzIHwgaGVsbS1udmNmLW5hdHMgfCBuYXRzLXN5c3RlbSB8IE1lc3NhZ2luZyB8Cnwgb3BlbmJh" + - "by1zZXJ2ZXIgfCBoZWxtLW52Y2Ytb3BlbmJhby1zZXJ2ZXIgfCB2YXVsdC1zeXN0ZW0gfCBTZWNy" + - "ZXRzIG1hbmFnZW1lbnQsIGRlcGVuZHMgb24gbmF0cyB8CnwgY2Fzc2FuZHJhIHwgaGVsbS1udmNm" + - "LWNhc3NhbmRyYSB8IGNhc3NhbmRyYS1zeXN0ZW0gfCBEYXRhYmFzZSB8CgpVc2VzIGA8PDogKmRl" + - "cGVuZGVuY3lgIHRlbXBsYXRlIGluaGVyaXRhbmNlIHdpdGggYHJlbGVhc2UtZ3JvdXA6IGRlcGVu" + - "ZGVuY2llc2AgbGFiZWwuCgojIyMgMDItY29yZS55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hh" + + "dGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sCgpudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmln" + + "PiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2Vs" + + "Zi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNv" + + "bXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWluIFwKICBjb21wdXRlLXBsYW5l" + + "IGluc3RhbGwgXAogIC0tdmFsdWVzIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291" + + "dC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sIFwKICAt" + + "LWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1jbHVzdGVyLW5hbWUg" + + "PGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPgpgYGAKClJlZ2lzdHJhdGlvbiBzZWxlY3RzIHRo" + + "ZSBwcm9maWxlJ3MgaW4tY2x1c3RlciBvciBjb21wdXRlLXJlYWNoYWJsZSBlbmRwb2ludHMKZnJv" + + "bSB0aGUgY29tcHV0ZSBjb250ZXh0IGFuZCBwcm9iZXMgaXRzIEpXS1MuIERvIG5vdCByZXBsYWNl" + + "IHByb2ZpbGUgZW5kcG9pbnRzCndpdGggaGFuZC1hdXRob3JlZCBIZWxtZmlsZSBlbmRwb2ludCB2" + + "YWx1ZXMuCgojIyBQdWxsIFNlY3JldHMKCkNyZWF0ZSB0aGUgY29udHJvbC1wbGFuZSBzZWNyZXQg" + + "aW4gdGhlc2UgbmFtZXNwYWNlcyBvbiB0aGUgY29udHJvbC1wbGFuZQpjb250ZXh0OgoKYGBgdGV4" + + "dApjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVs" + + "dC1zeXN0ZW0gY2VydC1tYW5hZ2VyCmBgYAoKT24gdGhlIGNvbXB1dGUgY29udGV4dCwgY3JlYXRl" + + "IHRoZSBzZWNyZXQgb25seSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIHJlZmVyZW5jZQppdCB0aHJv" + + "dWdoIGBnbG9iYWwuaW1hZ2VQdWxsU2VjcmV0c2AgaW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJv" + + "bm1lbnQuIFRoZSBjaGFydAphbmQgb3BlcmF0b3IgdXNlIGl0IGluIGBudmNhLW9wZXJhdG9yYCBh" + + "bmQgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBhZGQKZWl0aGVyIG5hbWVzcGFj" + + "ZSB0byB0aGUgY29udHJvbC1wbGFuZSBsaXN0LiBGb3IgY29tbWFuZHMgYW5kIHBvbGljeSBleGFt" + + "cGxlcywKc2VlIFtwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0cy5tZCkuCgojIyBWZXJpZmlj" + + "YXRpb24KClVzZSB0aGUgZXhwbGljaXQgR2F0ZXdheSBuYW1lIGFuZCBuYW1lc3BhY2U6CgpgYGBi" + + "YXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5" + + "IG52Y2YtZ2F0ZXdheSBcCiAgLW4gZW52b3ktZ2F0ZXdheSAtbyB3aWRlCmt1YmVjdGwgLS1jb250" + + "ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCB0Y3Byb3V0ZSAtbiBlbnZveS1nYXRld2F5" + + "Cmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IHJvbGxvdXQgc3RhdHVz" + + "IFwKICBkZXBsb3ltZW50L252Y2Etb3BlcmF0b3IgLW4gbnZjYS1vcGVyYXRvciAtLXRpbWVvdXQ9" + + "MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IHdhaXQgXAogIG52" + + "Y2ZiYWNrZW5kLzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4gLW4gbnZjYS1vcGVyYXRvciBc" + + "CiAgLS1mb3I9anNvbnBhdGg9J3suc3RhdHVzLmFnZW50U3RhdHVzfSc9aGVhbHRoeSAtLXRpbWVv" + + "dXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGdldCBzZWNy" + + "ZXQgPHB1bGwtc2VjcmV0PiAtbiBudmNhLXN5c3RlbQpgYGAKCiMjIFRlYXJkb3duCgpEZXN0cm95" + + "IGFuZCBkZXJlZ2lzdGVyIGV2ZXJ5IGNvbXB1dGUgcGxhbmUgYmVmb3JlIHRoZSBjb250cm9sIHBs" + + "YW5lLiBCb3RoCmhhbmRvZmZzIGNhbiBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBzbyBhcHBs" + + "eSB0aGlzIHByZWZsaWdodCBiZWZvcmUgZWl0aGVyCm9uZS4gUHJlc2VydmUgdGhlIGBjZXJ0LW1h" + + "bmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3BhY2UgcHJlc2VydmF0aW9uCmRvZXMg" + + "bm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIElkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5h" + + "Z2VyIGlzIGV4dGVybmFsLgpGb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVm" + + "ZmVjdGl2ZSBgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgCmFuZCBhYm9ydCBpZiBpdCBpcyB0" + + "cnVlLiBGb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZl" + + "CmBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0g" + + "cmVsZWFzZSBtZXRhZGF0YSBhbmQKYWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRl" + + "bmNlLiBPbmx5IHBsYW4gbmFtZXNwYWNlIHJlbW92YWwgYWZ0ZXIKdmVyaWZ5aW5nIG5hbWVzcGFj" + + "ZSBwcm92ZW5hbmNlIGFuZCBnZXR0aW5nIGV4cGxpY2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNl" + + "CmRvIG5vdCBkZWxldGUgaXQuCgpGb3IgdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93LCByZXRhaW4g" + + "ZWFjaCByZWdpc3RyYXRpb24gdmFsdWVzIGZpbGUgdW50aWwKY2xlYW51cCBpcyB2ZXJpZmllZDoK" + + "CmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95" + + "IFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBc" + + "CiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+Cgo8bnZjZi1jbGk+" + + "IC0tY29uZmlnIDxjb25maWc+IGNsdXN0ZXIgZGVsZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0" + + "ZXItaWQtZnJvbS1yZWdpc3RyYXRpb24tdmFsdWVzPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAog" + + "IC0taWdub3JlLW1pc3NpbmcKYGBgCgpSZWFkIGBjbHVzdGVySURgIGFuZCBgbmNhSURgIGZyb20K" + + "YGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL3JlZ2lzdHJhdGlvbi88Y2x1c3Rlci1u" + + "YW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuClNob3cgdGhlIGV4YWN0IGNsdXN0ZXIgSUQgYW5k" + + "IGdldCBjb25maXJtYXRpb24gYmVmb3JlIGBjbHVzdGVyIGRlbGV0ZWAuIFJlcGVhdApjb21wdXRl" + + "IGRlc3Ryb3kgYW5kIGRlcmVnaXN0cmF0aW9uIGZvciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRo" + + "ZW4gZGVzdHJveSB0aGUKY29udHJvbCBwbGFuZS4KCmBgYGJhc2gKS1VCRUNPTkZJRz08Y29udHJv" + + "bC1wbGFuZS1rdWJlY29uZmlnPiBcCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQg" + + "ZGVzdHJveSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRy" + + "b2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpCb3RoIGBLVUJFQ09ORklHYCBhbmQgYEtVQkVDT05G" + + "SUdfRklMRWAgYXJlIHJlcXVpcmVkIG9uIHRoZSBjb250cm9sLXBsYW5lCmRlc3Ryb3kgYmVjYXVz" + + "ZSBpdHMgbmFtZXNwYWNlIGNsZWFudXAgdXNlcyBhbWJpZW50IGBrdWJlY3RsYC4KCkZvciB0aGUg" + + "Q0xJIHByb2ZpbGUgZmxvdywga2VlcApgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUv" + + "b3V0LzxjbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYAp1bnRpbCB0ZWFyZG93biBj" + + "b21wbGV0ZXMgYmVjYXVzZSBgZG93bmAgcmVhZHMgaXRzIGNsdXN0ZXIgSUQuIEZpcnN0IHF1ZXJ5" + + "IHRoZQpsaXZlIHJlZ2lzdHJhdGlvbiBzZXQgd2l0aCB0aGUgc2FtZSBjb21wbGV0ZSBwZXJzaXN0" + + "ZW50IHByZWZpeDoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0" + + "ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBc" + + "CiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5l" + + "IFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQg" + + "PGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21w" + + "dXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21z" + + "LXVybD4gXAogIHN0YXR1cyBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rl" + + "ci1uYW1lPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4KYGBgCgpTaG93IHRoZSByZWdpc3RlcmVkIGNv" + + "bXB1dGUtcGxhbmUgbGlzdC4gTmFtZWQtY2x1c3RlciBgZG93biAtLXBsYW4tb25seWAgZG9lcwpu" + + "b3QgcXVlcnkgSUNNUywgc28gaXQgcHJldmlld3Mgb25seSB0aGF0IGNvbXB1dGUgcGxhbmUgYW5k" + + "IGNhbm5vdCBzaG93IHRoZQpjb25kaXRpb25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwuIElmIHRo" + + "ZSB0YXJnZXQgaXMgdGhlIGxhc3QgcmVnaXN0ZXJlZApjbHVzdGVyLCByZWFsIGBkb3duYCBhbHNv" + + "IGRlc3Ryb3lzIHRoZSBjb250cm9sIHBsYW5lLiBHZXQgZXhwbGljaXQgY29uZmlybWF0aW9uCmZv" + + "ciBib3RoIHJlbW92YWxzIGJlZm9yZSBjb250aW51aW5nLiBUaGVuIHByZXZpZXcgYW5kIGV4ZWN1" + + "dGUgd2l0aCB0aGUgc2FtZQpwcmVmaXg6CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25m" + + "aWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9z" + + "ZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2Yt" + + "Y29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1w" + + "bGFuZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUt" + + "Y29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1pY21zLXVybCA8Y29tcHV0ZS1y" + + "ZWFjaGFibGUtaWNtcy11cmw+IFwKICBkb3duIC0tcGxhbi1vbmx5IFwKICAtLWNsdXN0ZXItbmFt" + + "ZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKbnZj" + + "Zi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1z" + + "dGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNr" + + "IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1w" + + "bGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4g" + + "XAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAt" + + "LWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAogIGRvd24gXAogIC0tY2x1" + + "c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tbmNhLWlkIDxuY2Et" + + "aWQ+CmBgYAoKUmVwZWF0IGBkb3duYCBmb3IgZWFjaCBjb21wdXRlIGNsdXN0ZXIuIEVhY2ggcnVu" + + "IGRlc3Ryb3lzIHRoYXQgY29tcHV0ZSBwbGFuZSBhbmQKdW5yZWdpc3RlcnMgaXRzIElDTVMgcm93" + + "LiBJdCByZW1vdmVzIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgbm8gY2x1c3RlcgpyZWdp" + + "c3RyYXRpb25zIHJlbWFpbi4KUEsHCJZjvFkSMAAAEjAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAA" + + "AAAAOwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvZGVi" + + "dWdnaW5nLm1kVVQFAAEAps4SIyBEZWJ1Z2dpbmcgUmVmZXJlbmNlCgpSZWNpcGVzIGZvciBkaWFn" + + "bm9zaW5nIGFuZCBmaXhpbmcgY29tbW9uIE5WQ0Ygc2VsZi1tYW5hZ2VkIHN0YWNrIGZhaWx1cmVz" + + "LgoKIyMgUXVpY2sgU3RhdHVzIENvbW1hbmRzCgpgYGBiYXNoCiMgQWxsIHBvZHMgYWNyb3NzIGFs" + + "bCBuYW1lc3BhY2VzCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLW8gd2lkZQoKIyBQb2RzIGluIGEgc3Bl" + + "Y2lmaWMgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHBvZHMgLW4gPG5hbWVzcGFjZT4KCiMgQWxsIGhl" + + "bG0gcmVsZWFzZXMKaGVsbSBsaXN0IC1BCgojIFJlY2VudCBldmVudHMgKG1vc3QgdXNlZnVsIGZv" + + "ciBkaWFnbm9zaW5nIGZhaWx1cmVzKQprdWJlY3RsIGdldCBldmVudHMgLW4gPG5hbWVzcGFjZT4g" + + "LS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcKCiMgRGVzY3JpYmUgYSBzcGVjaWZpYyBwb2QgKHNo" + + "b3dzIGV2ZW50cywgY29uZGl0aW9ucywgdm9sdW1lcykKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4g" + + "PG5hbWVzcGFjZT4gPHBvZC1uYW1lPgpgYGAKCiMjIEZhaWx1cmU6IEltYWdlUHVsbEJhY2tPZmYK" + + "CiMjIyBTeW1wdG9tcwoKYGBgdGV4dApOQU1FICAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICAg" + + "ICAgICAgICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5kcmEtMCAgICAwLzEgICAgIEltYWdlUHVsbEJh" + + "Y2tPZmYgICAwICAgICAgICAgIDVtCmBgYAoKRXZlbnRzIHNob3c6CgpgYGB0ZXh0CkZhaWxlZCB0" + + "byBwdWxsIGltYWdlICJudmNyLmlvLy4uLi9pbWFnZTp0YWciOiA0MDEgVW5hdXRob3JpemVkCmBg" + + "YAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIHdoYXQgaW1hZ2UgaXMgZmFpbGluZwpr" + + "dWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IHwgZ3JlcCAtQTUg" + + "IkV2ZW50czoiCgojIENoZWNrIGlmIHB1bGwgc2VjcmV0IGV4aXN0cyBpbiB0aGUgbmFtZXNwYWNl" + + "Cmt1YmVjdGwgZ2V0IHNlY3JldCBudmNyLWNyZWRzIC1uIDxuYW1lc3BhY2U+CgojIENoZWNrIGlm" + + "IHRoZSBwb2Qgc3BlYyBoYXMgaW1hZ2VQdWxsU2VjcmV0cwprdWJlY3RsIGdldCBwb2QgLW4gPG5h" + + "bWVzcGFjZT4gPHBvZC1uYW1lPiAtbyBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9" + + "JwoKIyBDaGVjayBpZiB0aGUgU2VydmljZUFjY291bnQgaGFzIGltYWdlUHVsbFNlY3JldHMKa3Vi" + + "ZWN0bCBnZXQgc2EgPHNhLW5hbWU+IC1uIDxuYW1lc3BhY2U+IC1vIGpzb25wYXRoPSd7LmltYWdl" + + "UHVsbFNlY3JldHN9JwpgYGAKCiMjIyBGaXhlcwoKMS4gKipTZWNyZXQgbWlzc2luZyBpbiBuYW1l" + + "c3BhY2UqKjogQ3JlYXRlIGl0CgogICBgYGBiYXNoCiAgIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBk" + + "b2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8g" + + "XAogICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAgIC0tZG9ja2VyLXBh" + + "c3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgICAtLW5hbWVzcGFjZT08bmFtZXNwYWNlPiBcCiAg" + + "ICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCiAgIGBgYAoK" + + "Mi4gKipTZWNyZXQgZXhpc3RzIGJ1dCBwb2QgZG9lc24ndCByZWZlcmVuY2UgaXQqKjogVGhlIGNo" + + "YXJ0IG5lZWRzIGBpbWFnZVB1bGxTZWNyZXRzYCBjb25maWd1cmVkIHZpYSBoZWxtZmlsZSB2YWx1" + + "ZXMuIFNlZSBbcHVsbC1zZWNyZXRzLm1kXShwdWxsLXNlY3JldHMubWQpLgoKMy4gKipDaGFydCBk" + + "b2Vzbid0IHN1cHBvcnQgaW1hZ2VQdWxsU2VjcmV0cyoqIChvcGVuYmFvLCBpbnZvY2F0aW9uLXNl" + + "cnZpY2UsIGVzcy1hcGksIG5vdGFyeS1zZXJ2aWNlKTogUGF0Y2ggU2VydmljZUFjY291bnRzIGFu" + + "ZCByZXN0YXJ0IHBvZHMuIFNlZSBbcHVsbC1zZWNyZXRzLm1kXShwdWxsLXNlY3JldHMubWQpLgoK" + + "NC4gKipXcm9uZyBjcmVkZW50aWFscyBpbiBzZWNyZXQqKjogRGVsZXRlIGFuZCByZWNyZWF0ZQoK" + + "ICAgYGBgYmFzaAogICBrdWJlY3RsIGRlbGV0ZSBzZWNyZXQgbnZjci1jcmVkcyAtbiA8bmFtZXNw" + + "YWNlPgogICAjIFJlY3JlYXRlIHdpdGggY29ycmVjdCBjcmVkZW50aWFscwogICBgYGAKCiMjIEZh" + + "aWx1cmU6IEluaXQ6MC8xIFN0dWNrIChWYXVsdCBBZ2VudCkKCiMjIyBTeW1wdG9tcwoKU2Vydmlj" + + "ZSBwb2RzIHN0dWNrIGluIGBJbml0OjAvMWAgZm9yIG1pbnV0ZXM6CgpgYGBiYXNoCk5BTUUgICAg" + + "ICAgICAgICAgICAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICAgUkVTVEFSVFMgICBBR0UKbnZj" + + "Zi1hcGktN2Y0Yzc2Zjc4OC00NHZsdCAgMC8yICAgICBJbml0OjAvMSAgIDAgICAgICAgICAgMTBt" + + "CmBgYAoKIyMjIERpYWdub3NpcwoKVGhlIGluaXQgY29udGFpbmVyIGlzIHRoZSB2YXVsdC1hZ2Vu" + + "dC1pbml0IGluamVjdG9yIHdhaXRpbmcgZm9yIE9wZW5CYW8uCgpgYGBiYXNoCiMgQ2hlY2sgT3Bl" + + "bkJhbyBwb2RzCmt1YmVjdGwgZ2V0IHBvZHMgLW4gdmF1bHQtc3lzdGVtCgojIENoZWNrIGlmIE9w" + + "ZW5CYW8gbWlncmF0aW9uIGpvYiByYW4Ka3ViZWN0bCBnZXQgam9icyAtbiB2YXVsdC1zeXN0ZW0K" + + "CiMgQ2hlY2sgT3BlbkJhbyBwb2QgbG9ncwprdWJlY3RsIGxvZ3MgLW4gdmF1bHQtc3lzdGVtIG9w" + + "ZW5iYW8tc2VydmVyLTAgLWMgb3BlbmJhbwoKIyBDaGVjayBpbml0IGNvbnRhaW5lciBsb2dzIG9u" + + "IHRoZSBzdHVjayBwb2QKa3ViZWN0bCBsb2dzIC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gLWMg" + + "dmF1bHQtYWdlbnQtaW5pdApgYGAKCiMjIyBGaXhlcwoKMS4gKipPcGVuQmFvIHBvZHMgbm90IHJ1" + + "bm5pbmcqKjogQ2hlY2sgdGhlaXIgZXZlbnRzIGZvciBpbWFnZSBwdWxsIGlzc3VlcywgcmVzb3Vy" + + "Y2UgaXNzdWVzLCBldGMuCgoyLiAqKk9wZW5CYW8gbWlncmF0aW9uIGpvYiBkaWRuJ3QgcnVuKio6" + + "IFRoaXMgaGFwcGVucyB3aGVuIGBoZWxtZmlsZSBzeW5jYCB3YXMgaW50ZXJydXB0ZWQuIERlc3Ry" + + "b3kgYW5kIHJlLXN5bmMgb3BlbmJhbzoKCiAgIGBgYGJhc2gKICAgSEVMTUZJTEVfRU5WPTxlbnY+" + + "IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBkZXN0cm95CiAgIGt1YmVj" + + "dGwgZGVsZXRlIG5hbWVzcGFjZSB2YXVsdC1zeXN0ZW0KICAga3ViZWN0bCBjcmVhdGUgbmFtZXNw" + + "YWNlIHZhdWx0LXN5c3RlbQogICAjIFJlLWNyZWF0ZSBwdWxsIHNlY3JldCBpZiBuZWVkZWQKICAg" + + "SEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZl" + + "ciBzeW5jCiAgIGBgYAoKMy4gKipPcGVuQmFvIHBvZHMgcnVubmluZyBidXQgbm90IGluaXRpYWxp" + + "emVkKio6IENoZWNrIHVuc2VhbCBzdGF0dXM6CgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZXhlYyAt" + + "biB2YXVsdC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXItMCAtYyBvcGVuYmFvIC0tIGJhbyBzdGF0dXMK" + + "ICAgYGBgCgo0LiAqKmB2YXVsdC1hZ2VudC1pbml0YCBsb2dzIGBhdXRoL2p3dC9sb2dpbmAgLT4g" + + "YDQwMCAuLi4gbm8ga25vd24ga2V5IHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQgdGhlIHRva2VuIHNp" + + "Z25hdHVyZWAqKgogICAoY29tbW9uIG9uIEFLUywgYW5kIG9uIGFueSBjbHVzdGVyIHdob3NlIE9J" + + "REMgaXNzdWVyIHB1Ymxpc2hlcyBhIHJvdGF0aW5nIG11bHRpLWtleSBKV0tTKToKICAgdGhlIE9w" + + "ZW5CYW8gYGF1dGgvand0YCBtZXRob2Qgd2FzIGNvbmZpZ3VyZWQgd2l0aCBhIHNpbmdsZSBzdGF0" + + "aWMgbW91bnRlZCBwdWJsaWMga2V5CiAgIChgand0X3ZhbGlkYXRpb25fcHVia2V5c2ApIGluc3Rl" + + "YWQgb2YgdGhlIGlzc3VlcidzIGxpdmUgSldLUywgc28gaXQgY2Fubm90IHZhbGlkYXRlIHRoZQog" + + "ICBjbHVzdGVyLXNpZ25lZCBTZXJ2aWNlQWNjb3VudCB0b2tlbnMgdGhlIHZhdWx0LWFnZW50cyBw" + + "cmVzZW50LiBFdmVyeSBzZXJ2aWNlJ3MKICAgYHZhdWx0LWFnZW50LWluaXRgIHRoZW4gbG9vcHMg" + + "b24gdGhhdCA0MDAgYW5kIHRoZSBwb2QgbmV2ZXIgbGVhdmVzIGBJbml0OjAvMWAuIFRoaXMgaXMg" + + "dGhlCiAgIGJlaGF2aW9yIG9mIHRoZSBiYXNlIGRlZmF1bHQgYG9wZW5iYW8ubWlncmF0aW9ucy5p" + + "c3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2VgOyB0aGUKICAgbWlncmF0aW9uIGxvZyBzaG93" + + "cyBgT0lEQyBpc3N1ZXIgZGlzY292ZXJ5IGlzIGRpc2FibGVkLiBVc2luZyBTZXJ2aWNlQWNjb3Vu" + + "dCBpc3N1ZXIgYW5kCiAgIG1vdW50ZWQgcHVibGljIGtleSBmYWxsYmFja2AuIEVuYWJsZSBpc3N1" + + "ZXIgZGlzY292ZXJ5IHNvIHRoZSBtaWdyYXRpb24gdXNlcyB0aGUgbGl2ZSBKV0tTLAogICB0aGVu" + + "IHJlLXJ1biBpdDoKCiAgIGBgYGJhc2gKICAgIyBJbiB5b3VyIGVudiB2YWx1ZXMgKGUuZy4gZW52" + + "aXJvbm1lbnRzLzxlbnY+LnlhbWwpLCBzZXQ6CiAgICMgICBvcGVuYmFvOgogICAjICAgICBtaWdy" + + "YXRpb25zOgogICAjICAgICAgIGlzc3VlckRpc2NvdmVyeToKICAgIyAgICAgICAgIGVuYWJsZWQ6" + + "IHRydWUKICAga3ViZWN0bCBkZWxldGUgam9iIC1uIHZhdWx0LXN5c3RlbSBvcGVuYmFvLXNlcnZl" + + "ci1taWdyYXRpb25zCiAgIEhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5h" + + "bWU9b3BlbmJhby1zZXJ2ZXIgc3luYwogICBgYGAKCiAgIFRoZSBtaWdyYXRpb24gbG9nIHNob3Vs" + + "ZCB0aGVuIHNob3cgYFJlY2VpdmVkIGRpc2NvdmVyeSBkb2N1bWVudCBmcm9tCiAgIC4uLi8ud2Vs" + + "bC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbmAgYW5kIGBGaW5hbCBPcGVuQmFvIEpXVCBKV0tT" + + "IFVSTCBzZXQgdG86CiAgIC4uLi9vcGVuaWQvdjEvandrc2AsIGFuZCB0aGUgc2VydmljZSBwb2Rz" + + "IGF1dGhlbnRpY2F0ZSBhbmQgcmVhY2ggUmVhZHkgd2l0aGluIH4xIG1pbi4KICAgQUtTIGNsdXN0" + + "ZXJzIHdpdGggdGhlIGNsdXN0ZXIgT0lEQyBpc3N1ZXIgZW5hYmxlZCAodGhlIGBha3MtY2x1c3Rl" + + "cmAgZGVmYXVsdCkgYWx3YXlzIG5lZWQKICAgdGhpcyBiZWNhdXNlIHRoZSBzdGF0aWMtcHVia2V5" + + "IGZhbGxiYWNrIGNhbm5vdCBtYXRjaCB0aGUgaXNzdWVyJ3Mgcm90YXRpbmcgc2lnbmluZyBrZXlz" + + "LgoKIyMgRmFpbHVyZTogT09NS2lsbGVkIG9uIENhc3NhbmRyYQoKIyMjIFN5bXB0b21zCgpgYGB0" + + "ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMgICAgUkVTVEFSVFMgICBBR0UKY2Fzc2Fu" + + "ZHJhLTAgICAwLzEgICAgIE9PTUtpbGxlZCAgMyAgICAgICAgIDEwbQpgYGAKCiMjIyBEaWFnbm9z" + + "aXMKCmBgYGJhc2gKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gY2Fzc2FuZHJhLXN5c3RlbSBjYXNz" + + "YW5kcmEtMCB8IGdyZXAgLUEzICJMYXN0IFN0YXRlIgpgYGAKCiMjIyBGaXgKCk92ZXJyaWRlIENh" + + "c3NhbmRyYSByZXNvdXJjZXMgdmlhIGhlbG1maWxlIHZhbHVlcy4gU2VlIEV4YW1wbGUgMSBpbgpb" + + "ZXhhbXBsZXMubWRdKC4uL2V4YW1wbGVzLm1kKS4KCmBgYHlhbWwKLSBjYXNzYW5kcmE6CiAgICBy" + + "ZXNvdXJjZXM6CiAgICAgIGxpbWl0czoKICAgICAgICBjcHU6ICI4IgogICAgICAgIG1lbW9yeTog" + + "ODE5Mk1pCiAgICAgIHJlcXVlc3RzOgogICAgICAgIGNwdTogIjIiCiAgICAgICAgbWVtb3J5OiA0" + + "MDk2TWkKYGBgCgpOb3RlOiBgcmVzb3VyY2VQcmVzZXRgIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhl" + + "IE5WQ0YgY2Fzc2FuZHJhIHdyYXBwZXIgY2hhcnQuIFVzZSBleHBsaWNpdCBgcmVzb3VyY2VzYC4K" + + "CiMjIEZhaWx1cmU6IFBvZHMgU3R1Y2sgaW4gUGVuZGluZwoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0" + + "Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMgICAgUkVTVEFSVFMgICBBR0UKY2Fzc2FuZHJh" + + "LTAgICAwLzEgICAgIFBlbmRpbmcgICAwICAgICAgICAgIDEwbQpgYGAKCiMjIyBEaWFnbm9zaXMK" + + "CmBgYGJhc2gKIyBDaGVjayBldmVudHMgZm9yIHNjaGVkdWxpbmcgZmFpbHVyZXMKa3ViZWN0bCBk" + + "ZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPgoKIyBDb21tb24gY2F1c2VzOgoj" + + "IC0gIjAvMTIgbm9kZXMgYXJlIGF2YWlsYWJsZTogMTIgbm9kZShzKSBkaWRuJ3QgbWF0Y2ggUG9k" + + "J3Mgbm9kZSBhZmZpbml0eSIKIyAtICIwLzEyIG5vZGVzIGFyZSBhdmFpbGFibGU6IDEyIEluc3Vm" + + "ZmljaWVudCBtZW1vcnkiCiMgLSAicGVyc2lzdGVudHZvbHVtZWNsYWltIG5vdCBmb3VuZCIKYGBg" + + "CgojIyMgRml4ZXMKCjEuICoqTm9kZSBzZWxlY3RvciBtaXNtYXRjaCoqOiBDaGVjayBgbm9kZVNl" + + "bGVjdG9yc2AgaW4gZW52aXJvbm1lbnQgZmlsZQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBu" + + "b2RlcyAtLXNob3ctbGFiZWxzIHwgZ3JlcCBudmNmCiAgIGBgYAoKMi4gKipTdG9yYWdlIGNsYXNz" + + "IG5vdCBmb3VuZCoqOiBDaGVjayBzdG9yYWdlIGNsYXNzIGV4aXN0cwoKICAgYGBgYmFzaAogICBr" + + "dWJlY3RsIGdldCBzdG9yYWdlY2xhc3MKICAgYGBgCgozLiAqKkluc3VmZmljaWVudCByZXNvdXJj" + + "ZXMqKjogQ2hlY2sgbm9kZSBjYXBhY2l0eQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGRlc2NyaWJl" + + "IG5vZGUgPG5vZGUtbmFtZT4gfCBncmVwIC1BNSAiQWxsb2NhdGVkIHJlc291cmNlcyIKICAgYGBg" + + "CgojIyBGYWlsdXJlOiBIZWxtIFJlbGVhc2UgaW4gRmFpbGVkIFN0YXRlCgojIyMgU3ltcHRvbXMK" + + "CmBgYGJhc2gKaGVsbSBsaXN0IC1BCiMgU2hvd3MgcmVsZWFzZSB3aXRoIFNUQVRVUzogZmFpbGVk" + + "CmBgYAoKUmUtcnVubmluZyBgaGVsbWZpbGUgc3luY2AgYXBwZWFycyB0byBzdWNjZWVkIGJ1dCBz" + + "ZXJ2aWNlcyBkb24ndCB3b3JrIChtaWdyYXRpb25zIHNraXBwZWQpLgoKIyMjIERpYWdub3NpcwoK" + + "YGBgYmFzaApoZWxtIGhpc3RvcnkgPHJlbGVhc2UtbmFtZT4gLW4gPG5hbWVzcGFjZT4KYGBgCgoj" + + "IyMgRml4CgpNdXN0IGRlc3Ryb3kgdGhlIGZhaWxlZCByZWxlYXNlIGFuZCByZS1zeW5jIChub3Qg" + + "anVzdCBhcHBseSk6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVj" + + "dG9yIG5hbWU9PHJlbGVhc2U+IGRlc3Ryb3kKIyBJZiBuYW1lc3BhY2UgbmVlZHMgY2xlYW51cDoK" + + "a3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIDxuYW1lc3BhY2U+Cmt1YmVjdGwgY3JlYXRlIG5hbWVz" + + "cGFjZSA8bmFtZXNwYWNlPgojIFJlLWNyZWF0ZSBwdWxsIHNlY3JldCBpZiBuZWVkZWQKSEVMTUZJ" + + "TEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT08cmVsZWFzZT4gc3luYwpgYGAK" + + "CiMjIEZhaWx1cmU6IEFjY291bnQgQm9vdHN0cmFwIEpvYiBGYWlsZWQKCiMjIyBTeW1wdG9tcwoK" + + "U2VydmljZXMgZGVwbG95IGJ1dCBmdW5jdGlvbnMgY2FuJ3QgYmUgY3JlYXRlZC4gRXZlbnRzIHNo" + + "b3cgYm9vdHN0cmFwIGpvYiBmYWlsdXJlLgoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNr" + + "IGJvb3RzdHJhcCBqb2Igc3RhdHVzCmt1YmVjdGwgZ2V0IGpvYnMgLW4gbnZjZgoKIyBHZXQgbG9n" + + "cyAoam9iIGF1dG8tZGVsZXRlcyBhZnRlciB+NSBtaW51dGVzKQprdWJlY3RsIGxvZ3Mgam9iL252" + + "Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIC1uIG52Y2YKCiMgQ2hlY2sgQVBJIGxvZ3MKa3ViZWN0" + + "bCBsb2dzIC1uIG52Y2YgLWwgYXBwLmt1YmVybmV0ZXMuaW8vbmFtZT1udmNmLWFwaSAtLXRhaWw9" + + "MTAwCmBgYAoKIyMjIENvbW1vbiBDYXVzZXMKCjEuICoqV3JvbmcgYmFzZTY0IGNyZWRlbnRpYWxz" + + "Kio6IENyZWRlbnRpYWxzIGluIGBzZWNyZXRzLzxlbnY+LXNlY3JldHMueWFtbGAgbXVzdCBiZSBg" + + "JG9hdXRodG9rZW46QVBJX0tFWWAgYmFzZTY0LWVuY29kZWQsIG5vdCBqdXN0IHRoZSBBUEkga2V5" + + "CgogICBgYGBiYXNoCiAgICMgVmVyaWZ5IHlvdXIgZW5jb2RlZCBjcmVkZW50aWFsCiAgIGVjaG8g" + + "J1lPVVJfQkFTRTY0X1NUUklORycgfCBiYXNlNjQgLWQKICAgIyBTaG91bGQgb3V0cHV0OiAkb2F1" + + "dGh0b2tlbjpudmFwaS14eHh4eAogICBgYGAKCjIuICoqUmVnaXN0cnkgdW5yZWFjaGFibGUqKjog" + + "QVBJIGNhbid0IHJlYWNoIHRoZSByZWdpc3RyeSBzcGVjaWZpZWQgaW4gYGFjY291bnRCb290c3Ry" + + "YXAucmVnaXN0cnlDcmVkZW50aWFsc2AKCiMjIyBGaXgKCkZpeCBjcmVkZW50aWFscyBpbiBzZWNy" + + "ZXRzIGZpbGUsIHRoZW4gcmVjb3ZlciBzZXJ2aWNlcyB3aXRob3V0IGRlc3Ryb3lpbmcgZGVwZW5k" + + "ZW5jaWVzOgoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBy" + + "ZWxlYXNlLWdyb3VwPXNlcnZpY2VzIGRlc3Ryb3kKa3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIG52" + + "Y2YgYXBpLWtleXMgZXNzIHNpcyAtLWlnbm9yZS1ub3QtZm91bmQKa3ViZWN0bCBjcmVhdGUgbmFt" + + "ZXNwYWNlIG52Y2YgJiYga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIGFwaS1rZXlzICYmIFwKICBr" + + "dWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgZXNzICYmIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBz" + + "aXMKIyBSZS1jcmVhdGUgcHVsbCBzZWNyZXRzIGlmIG5lZWRlZApIRUxNRklMRV9FTlY9PGVudj4g" + + "aGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIHN5bmMKYGBgCgojIyBG" + + "YWlsdXJlOiBOVkNBIENsZWFudXAgU3R1Y2sgKEZpbmFsaXplcnMpCgojIyMgU3ltcHRvbXMKCkNv" + + "bXB1dGUtcGxhbmUgY2xlYW51cCBoYW5ncy4gTmFtZXNwYWNlcwpzdHVjayBpbiBgVGVybWluYXRp" + + "bmdgOgoKYGBgYmFzaAprdWJlY3RsIGdldCBucwojIG52Y2Etb3BlcmF0b3IgICAgVGVybWluYXRp" + + "bmcgICAxMG0KIyBudmNmLWJhY2tlbmQgICAgIFRlcm1pbmF0aW5nICAgMTBtCmBgYAoKIyMjIEZp" + + "eAoKUnVuIHRoaXMgb25seSBhZ2FpbnN0IHRoZSBjb21wdXRlIGNvbnRleHQsIGFmdGVyIHRoZSBu" + + "b3JtYWwgY29tcHV0ZS1wbGFuZQp0ZWFyZG93biBoYXMgZmFpbGVkLiBSZW1vdmUgZmluYWxpemVy" + + "cyBmcm9tIE5WQ0ZCYWNrZW5kIGN1c3RvbSByZXNvdXJjZXMgYW5kCmZvcmNlLWRlbGV0ZSBzdHVj" + + "ayBuYW1lc3BhY2VzOgoKYGBgYmFzaApleHBvcnQgQ09NUFVURV9DT05URVhUPTxjb21wdXRlLXBs" + + "YW5lLWNvbnRleHQ+CgojIFJlbW92ZSBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3Vy" + + "Y2VzCmt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhUIiBnZXQgbnZjZmJhY2tlbmRz" + + "IC1BIC1vIGpzb24gfCBcCiAganEgJy5pdGVtc1tdIHwgLm1ldGFkYXRhLm5hbWVzcGFjZSArICIv" + + "IiArIC5tZXRhZGF0YS5uYW1lJyAtciB8IFwKICB4YXJncyAtSXt9IHNoIC1jICdjb250ZXh0PSIk" + + "MSI7IG5zPSIkezIlJS8qfSI7IG5hbWU9IiR7MiMjKi99Ijsga3ViZWN0bCAtLWNvbnRleHQgIiRj" + + "b250ZXh0IiBwYXRjaCBudmNmYmFja2VuZCAiJG5hbWUiIC1uICIkbnMiIC0tdHlwZT1tZXJnZSAt" + + "cCAie1wibWV0YWRhdGFcIjp7XCJmaW5hbGl6ZXJzXCI6W119fSInIF8gIiRDT01QVVRFX0NPTlRF" + + "WFQiIHt9CgojIEZvcmNlLWRlbGV0ZSBzdHVjayBuYW1lc3BhY2VzIGJ5IGNsZWFyaW5nIHRoZWly" + + "IGZpbmFsaXplcnMKZm9yIG5zIGluIG52Y2Etb3BlcmF0b3IgbnZjZi1iYWNrZW5kOyBkbwogIGt1" + + "YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhUIiBnZXQgbmFtZXNwYWNlICIkbnMiIC1v" + + "IGpzb24gMj4vZGV2L251bGwgfCBcCiAgICBqcSAnLnNwZWMuZmluYWxpemVycyA9IFtdJyB8IFwK" + + "ICAgIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhUIiByZXBsYWNlIFwKICAgICAg" + + "LS1yYXcgIi9hcGkvdjEvbmFtZXNwYWNlcy8kbnMvZmluYWxpemUiIC1mIC0gMj4vZGV2L251bGwK" + + "ZG9uZQpgYGAKCiMjIEZhaWx1cmU6IE5WQ0EgT3BlcmF0b3IgTWlzc2luZyBvciBOb3QgUmVhZHkK" + + "CiMjIyBTeW1wdG9tcwoKQWZ0ZXIgY29tcHV0ZS1wbGFuZSBpbnN0YWxsIGNvbXBsZXRlcywgbm8g" + + "YG52Y2Etb3BlcmF0b3JgIERlcGxveW1lbnQgZXhpc3RzLCBvcgppdCBleGlzdHMgYnV0IHBvZHMg" + + "YXJlIG5vdCByZWFkeToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUt" + + "Y29udGV4dD4gZ2V0IGRlcGxveW1lbnQgbnZjYS1vcGVyYXRvciBcCiAgLW4gbnZjYS1vcGVyYXRv" + + "cgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgcG9kcyAtbiBu" + + "dmNhLW9wZXJhdG9yCmBgYAoKIyMjIERpYWdub3NpcyBhbmQgRml4ZXMKCkZpcnN0IGlkZW50aWZ5" + + "IHdoZXRoZXIgdGhlIGluc3RhbGxhdGlvbiB1c2VkIHRoZSBIZWxtZmlsZSB2YWx1ZXMgZmxvdyBv" + + "ciB0aGUKQ0xJIHByb2ZpbGUgZmxvdy4gUmUtcnVuIG9ubHkgdGhhdCBmbG93J3MgcmVnaXN0cmF0" + + "aW9uIGFuZCBpbnN0YWxsYXRpb24gc3RlcHMKZnJvbSBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0" + + "YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4gRG8gbm90CnN1YnN0aXR1" + + "dGUgb25lIGhhbmRvZmYgZm9yIHRoZSBvdGhlci4KCklmIGluc3RhbGxhdGlvbiBzdWNjZWVkcyBi" + + "dXQgcG9kcyBzdGlsbCBmYWlsLCBpbnNwZWN0IHRoZSBjb21wdXRlIGNvbnRleHQ6CgpgYGBiYXNo" + + "Cmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGRlc2NyaWJlIGRlcGxv" + + "eSBudmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yCmt1YmVjdGwgLS1jb250ZXh0IDxj" + + "b21wdXRlLXBsYW5lLWNvbnRleHQ+IGxvZ3MgZGVwbG95bWVudC9udmNhLW9wZXJhdG9yIFwKICAt" + + "biBudmNhLW9wZXJhdG9yIC0tdGFpbD0yMDAKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxh" + + "bmUtY29udGV4dD4gZ2V0IG52Y2ZiYWNrZW5kIC1uIG52Y2Etb3BlcmF0b3IKYGBgCgpGb3IgcHJp" + + "dmF0ZSByZWdpc3RyeSBmYWlsdXJlcywgdmVyaWZ5IHRoYXQgdGhlIHB1bGwgc2VjcmV0IGV4aXN0" + + "cyBpbgpgbnZjYS1vcGVyYXRvcmAuIFRoZSBjaGFydCBhbmQgb3BlcmF0b3IgbWlycm9yIGl0IHRv" + + "IGBudmNhLXN5c3RlbWA7IGRvIG5vdCB1c2UgYQpicm9hZGVyIG1hbnVhbCBuYW1lc3BhY2UgbG9v" + + "cC4gU2VlCltwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0cy5tZCNjb21wdXRlLXBsYW5lLXNl" + + "Y3JldCkuCgojIyBGYWlsdXJlOiBHYXRld2F5IEVuZHBvaW50IENoYW5nZWQKCiMjIyBTeW1wdG9t" + + "cwoKUmVxdWVzdHMgdGhyb3VnaCB0aGUgY29uZmlndXJlZCByb3V0ZSBkb21haW4gZmFpbCBhZnRl" + + "ciB0aGUgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxhbmNlciBpcyByZXBsYWNlZC4gVGhlIEdhdGV3" + + "YXkgcmVwb3J0cyBhIG5ldyBlbmRwb2ludC4KCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKR0FURVdB" + + "WV9BRERSPSQoa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGdh" + + "dGV3YXkgXAogIG52Y2YtZ2F0ZXdheSAtbiBlbnZveS1nYXRld2F5IFwKICAtbyBqc29ucGF0aD0n" + + "ey5zdGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScpCnRlc3QgLW4gIiRHQVRFV0FZX0FERFIiCmRp" + + "ZyArc2hvcnQgImFwaS48ZG9tYWluPiIKY3VybCAtSCAiSG9zdDogYXBpLjxkb21haW4+IiAiaHR0" + + "cDovLyRHQVRFV0FZX0FERFIvaGVhbHRoIgoKIyBDaGVjayBkaXJlY3QgYWRkcmVzcyBmaWVsZHMg" + + "dXNlZCBieSBhIHNwbGl0IGRlcGxveW1lbnQKZ3JlcCBudmNmTmF0c1NlcnZpY2VVUkwgZGVwbG95" + + "L3N0YWNrcy9zZWxmLW1hbmFnZWQvZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwKZ3JlcCAtRSAnaWNt" + + "c1NlcnZpY2V8cmV2YWxTZXJ2aWNlfG5hdHMnIFwKICBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0" + + "ZS1wbGFuZS9lbnZpcm9ubWVudHMvPGVudj4ueWFtbApgYGAKCiMjIyBGaXgKCktlZXAgYGdsb2Jh" + + "bC5kb21haW5gLCByb3V0ZSBob3N0bmFtZXMsIGFuZCBIb3N0IG92ZXJyaWRlcyB1bmNoYW5nZWQu" + + "IFVwZGF0ZSBETlMKb3IgdGhlIGRpcmVjdCBjbGllbnQgZGVzdGluYXRpb24uIEZvciBzcGxpdCBk" + + "ZXBsb3ltZW50cywgdXBkYXRlIG9ubHkgZGlyZWN0CkdhdGV3YXktYWRkcmVzcyBmaWVsZHMgYW5k" + + "IHJlZnJlc2ggcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24gdGhyb3VnaCB0aGUKc2FtZSBz" + + "ZWxlY3RlZCBoYW5kb2ZmLiBTZWUKW0V4YW1wbGUgNF0oLi4vZXhhbXBsZXMubWQjZXhhbXBsZS00" + + "LXJlY292ZXItZnJvbS1hLWdhdGV3YXktZW5kcG9pbnQtY2hhbmdlKS4KCiMjIFVzZWZ1bCBOYW1l" + + "c3BhY2UtdG8tU2VydmljZSBNYXBwaW5nCgpRdWljayByZWZlcmVuY2UgZm9yIHdoaWNoIHNlcnZp" + + "Y2VzIHJ1biBpbiB3aGljaCBuYW1lc3BhY2U6Cgp8IE5hbWVzcGFjZSB8IFNlcnZpY2VzIHwKfC0t" + + "LS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgbmF0cy1zeXN0ZW0gfCBuYXRzIHwKfCBjYXNzYW5kcmEt" + + "c3lzdGVtIHwgY2Fzc2FuZHJhIHwKfCB2YXVsdC1zeXN0ZW0gfCBvcGVuYmFvLXNlcnZlciB8Cnwg" + + "bnZjZiB8IGFwaSwgaW52b2NhdGlvbi1zZXJ2aWNlLCBncnBjLXByb3h5LCBub3Rhcnktc2Vydmlj" + + "ZSwgcmV2YWwsIGxsbS1yZXF1ZXN0LXJvdXRlciwgbGxtLWFwaS1nYXRld2F5IHwKfCBhcGkta2V5" + + "cyB8IGFwaS1rZXlzLCBhZG1pbi1pc3N1ZXItcHJveHkgfAp8IGVzcyB8IGVzcy1hcGkgfAp8IHNp" + + "cyB8IHNpcyB8CnwgZW52b3ktZ2F0ZXdheS1zeXN0ZW0gfCBlbnZveSBnYXRld2F5IChpbmdyZXNz" + + "IGNvbnRyb2xsZXIpIHwKfCBlbnZveS1nYXRld2F5IHwgZ2F0ZXdheSByZXNvdXJjZSArIHJvdXRl" + + "cyB8ClBLBwi1enA7tTAAALUwAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAEQACQBkYXRhL252" + + "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL2hlbG1maWxlLXN0cnVjdHVy" + + "ZS5tZFVUBQABAKbOEiMgSGVsbWZpbGUgU3RydWN0dXJlIFJlZmVyZW5jZQoKIyMgRGlyZWN0b3J5" + + "IExheW91dAoKYGBgYmFzaApudmNmLXNlbGYtbWFuYWdlZC1zdGFjay8KfC0tIGhlbG1maWxlLmQv" + + "CnwgICB8LS0gMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsICAjIE5BVFMsIENhc3NhbmRyYSwg" + + "T3BlbkJhbwp8ICAgfC0tIDAyLWNvcmUueWFtbC5nb3RtcGwgICAgICAgICAgIyBOVkNGIHNlcnZp" + + "Y2VzICsgaW5ncmVzcwp8ICAgYC0tIDAzLW9ic2VydmFiaWxpdHkueWFtbC5nb3RtcGwgIyBPYnNl" + + "cnZhYmlsaXR5IHN0YWNrIChvcHRpb25hbCkKfC0tIGVudmlyb25tZW50cy8KfCAgIHwtLSBiYXNl" + + "LnlhbWwgICAgICAgICAgICAgICAgICAgICMgRGVmYXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVu" + + "dHMpCnwgICBgLS0gPGVudi1uYW1lPi55YW1sICAgICAgICAgICAgICAjIFBlci1lbnZpcm9ubWVu" + + "dCBvdmVycmlkZXMKfC0tIHNlY3JldHMvCnwgICBgLS0gPGVudi1uYW1lPi1zZWNyZXRzLnlhbWwg" + + "ICAgICAjIFNlbnNpdGl2ZSB2YWx1ZXMgKHJlZ2lzdHJ5IGNyZWRzLCBwYXNzd29yZHMpCmAtLSBn" + + "bG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgICAjIEdvIHRlbXBsYXRlIHRoYXQgY29uc3Ry" + + "dWN0cyBwZXItY2hhcnQgdmFsdWVzCgpudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2svCnwtLSBoZWxt" + + "ZmlsZS5kLwp8ICAgfC0tIDAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbCAgIyBDb21wdXRlIHBs" + + "YW5lIGRlcGVuZGVuY3kgY29tcG9uZW50cwp8ICAgYC0tIDAyLW52Y2EueWFtbC5nb3RtcGwgICAg" + + "ICAgICAgIyBudmNhLW9wZXJhdG9yIGNoYXJ0IGFuZCBudmNhIGNvbmZpZ3VyYXRpb24KfC0tIGVu" + + "dmlyb25tZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAgICAgICAgICAgICMgRGVmYXVs" + + "dCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVudi1uYW1lPi55YW1sICAgICAg" + + "ICAgICAgICAjIFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKYC0tIGdsb2JhbC55YW1sLmdvdG1w" + + "bCAgICAgICAgICAgICAgICMgR28gdGVtcGxhdGUgdGhhdCBjb25zdHJ1Y3RzIHBlci1jaGFydCB2" + + "YWx1ZXMKYGBgCgpUaGVzZSBzdGFja3MgaGF2ZSBzZXBhcmF0ZSBlbnZpcm9ubWVudHMgYW5kIGNs" + + "dXN0ZXIgY29udGV4dHMuIFRoZSBIZWxtZmlsZQp2YWx1ZXMgZmxvdyBhdXRob3JzIGJvdGggZW52" + + "aXJvbm1lbnQgZmlsZXMuIFRoZSBDTEkgcHJvZmlsZSBmbG93IGluc3RlYWQgdXNlcwp0aGUgQ0xJ" + + "LWdlbmVyYXRlZCBjb250cm9sLXBsYW5lIHByb2ZpbGUgYXMgaXRzIGVuZHBvaW50IHNvdXJjZS4g" + + "RG8gbm90IG1peCB0aGUKaGFuZG9mZnMuIFNlZSBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxs" + + "YXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4KCiMjIEdvdG1wbCBGaWxlcyBh" + + "bmQgVGhlaXIgUmVsZWFzZXMKCiMjIyAwMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGwKCnwgUmVs" + + "ZWFzZSB8IENoYXJ0IHwgTmFtZXNwYWNlIHwgTm90ZXMgfAp8LS0tLS0tLS0tfC0tLS0tLS18LS0t" + + "LS0tLS0tLS18LS0tLS0tLXwKfCBuYXRzIHwgaGVsbS1udmNmLW5hdHMgfCBuYXRzLXN5c3RlbSB8" + + "IE1lc3NhZ2luZyB8Cnwgb3BlbmJhby1zZXJ2ZXIgfCBoZWxtLW52Y2Ytb3BlbmJhby1zZXJ2ZXIg" + + "fCB2YXVsdC1zeXN0ZW0gfCBTZWNyZXRzIG1hbmFnZW1lbnQsIGRlcGVuZHMgb24gbmF0cyB8Cnwg" + + "Y2Fzc2FuZHJhIHwgaGVsbS1udmNmLWNhc3NhbmRyYSB8IGNhc3NhbmRyYS1zeXN0ZW0gfCBEYXRh" + + "YmFzZSB8CgpVc2VzIGA8PDogKmRlcGVuZGVuY3lgIHRlbXBsYXRlIGluaGVyaXRhbmNlIHdpdGgg" + + "YHJlbGVhc2UtZ3JvdXA6IGRlcGVuZGVuY2llc2AgbGFiZWwuCgojIyMgMDItY29yZS55YW1sLmdv" + + "dG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBMYWJlbCB8CnwtLS0tLS0tLS18" + + "LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IGFwaS1rZXlzIHwgaGVsbS1udmNmLWFwaS1r" + + "ZXlzIHwgYXBpLWtleXMgfCBzZXJ2aWNlcyB8Cnwgc2lzIHwgaGVsbS1udmNmLXNpcyB8IHNpcyB8" + + "IHNlcnZpY2VzIHwKfCBhcGkgfCBoZWxtLW52Y2YtYXBpIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBp" + + "bnZvY2F0aW9uLXNlcnZpY2UgfCBoZWxtLW52Y2YtaW52b2NhdGlvbi1zZXJ2aWNlIHwgbnZjZiB8" + + "IHNlcnZpY2VzIHwKfCBncnBjLXByb3h5IHwgaGVsbS1udmNmLWdycGMtcHJveHkgfCBudmNmIHwg" + + "c2VydmljZXMgfAp8IGVzcy1hcGkgfCBoZWxtLW52Y2YtZXNzLWFwaSB8IGVzcyB8IHNlcnZpY2Vz" + + "IHwKfCBub3Rhcnktc2VydmljZSB8IGhlbG0tbnZjZi1ub3Rhcnktc2VydmljZSB8IG52Y2YgfCBz" + + "ZXJ2aWNlcyB8CnwgcmV2YWwgfCBoZWxtLXJldmFsIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBsbG0t" + + "cmVxdWVzdC1yb3V0ZXIgfCBudmNmL2hlbG0tbnZjZi1sbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNm" + + "IHwgc2VydmljZXMgfAp8IGxsbS1hcGktZ2F0ZXdheSB8IG52Y2YvaGVsbS1udmNmLWxsbS1hcGkt" + + "Z2F0ZXdheSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgYWRtaW4taXNzdWVyLXByb3h5IHwgaGVsbS1h" + + "ZG1pbi10b2tlbi1pc3N1ZXItcHJveHkgfCBhcGkta2V5cyB8IChubyByZWxlYXNlLWdyb3VwIGxh" + + "YmVsKSB8CnwgaW5ncmVzcyB8IG52Y2YtZ2F0ZXdheS1yb3V0ZXMgfCBlbnZveS1nYXRld2F5LXN5" + + "c3RlbSB8IGluZ3Jlc3MgfAoKTW9zdCBzZXJ2aWNlcyB1c2UgYGluaGVyaXQ6IFt7dGVtcGxhdGU6" + + "IHNlcnZpY2V9XWAuIExMTSByZWxlYXNlcyB1c2UgT0NJIGNoYXJ0cyBmcm9tIHRoZSBgbnZjZmAg" + + "cmVwb3NpdG9yeSB3aXRoIHN0YW5kYWxvbmUgYHZhbHVlczogWy4uL2dsb2JhbC55YW1sLmdvdG1w" + + "bF1gIGJsb2NrczsgdGhleSBhcmUgZ2F0ZWQgb24gYGFkZG9ucy5sbG0uZW5hYmxlZGAuIGBhZG1p" + + "bi1pc3N1ZXItcHJveHlgIGFuZCBgaW5ncmVzc2AgaGF2ZSBzdGFuZGFsb25lIGB2YWx1ZXM6YCBi" + + "bG9ja3MuCgojIyMgMDMtb2JzZXJ2YWJpbGl0eS55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hh" + "cnQgfCBOYW1lc3BhY2UgfCBMYWJlbCB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwt" + - "LS0tLS0tfAp8IGFwaS1rZXlzIHwgaGVsbS1udmNmLWFwaS1rZXlzIHwgYXBpLWtleXMgfCBzZXJ2" + - "aWNlcyB8Cnwgc2lzIHwgaGVsbS1udmNmLXNpcyB8IHNpcyB8IHNlcnZpY2VzIHwKfCBhcGkgfCBo" + - "ZWxtLW52Y2YtYXBpIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBpbnZvY2F0aW9uLXNlcnZpY2UgfCBo" + - "ZWxtLW52Y2YtaW52b2NhdGlvbi1zZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBncnBjLXBy" + - "b3h5IHwgaGVsbS1udmNmLWdycGMtcHJveHkgfCBudmNmIHwgc2VydmljZXMgfAp8IGVzcy1hcGkg" + - "fCBoZWxtLW52Y2YtZXNzLWFwaSB8IGVzcyB8IHNlcnZpY2VzIHwKfCBub3Rhcnktc2VydmljZSB8" + - "IGhlbG0tbnZjZi1ub3Rhcnktc2VydmljZSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgcmV2YWwgfCBo" + - "ZWxtLXJldmFsIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBsbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNm" + - "L2hlbG0tbnZjZi1sbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNmIHwgc2VydmljZXMgfAp8IGxsbS1h" + - "cGktZ2F0ZXdheSB8IG52Y2YvaGVsbS1udmNmLWxsbS1hcGktZ2F0ZXdheSB8IG52Y2YgfCBzZXJ2" + - "aWNlcyB8CnwgYWRtaW4taXNzdWVyLXByb3h5IHwgaGVsbS1hZG1pbi10b2tlbi1pc3N1ZXItcHJv" + - "eHkgfCBhcGkta2V5cyB8IChubyByZWxlYXNlLWdyb3VwIGxhYmVsKSB8CnwgaW5ncmVzcyB8IG52" + - "Y2YtZ2F0ZXdheS1yb3V0ZXMgfCBlbnZveS1nYXRld2F5LXN5c3RlbSB8IGluZ3Jlc3MgfAoKTW9z" + - "dCBzZXJ2aWNlcyB1c2UgYGluaGVyaXQ6IFt7dGVtcGxhdGU6IHNlcnZpY2V9XWAuIExMTSByZWxl" + - "YXNlcyB1c2UgT0NJIGNoYXJ0cyBmcm9tIHRoZSBgbnZjZmAgcmVwb3NpdG9yeSB3aXRoIHN0YW5k" + - "YWxvbmUgYHZhbHVlczogWy4uL2dsb2JhbC55YW1sLmdvdG1wbF1gIGJsb2NrczsgdGhleSBhcmUg" + - "Z2F0ZWQgb24gYGFkZG9ucy5sbG0uZW5hYmxlZGAuIGBhZG1pbi1pc3N1ZXItcHJveHlgIGFuZCBg" + - "aW5ncmVzc2AgaGF2ZSBzdGFuZGFsb25lIGB2YWx1ZXM6YCBibG9ja3MuCgojIyMgMDMtb2JzZXJ2" + - "YWJpbGl0eS55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBMYWJl" + - "bCB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IChvYnNlcnZhYmls" + - "aXR5IHJlbGVhc2VzKSB8ICh2YXJpb3VzKSB8IG9ic2VydmFiaWxpdHkgfCBvYnNlcnZhYmlsaXR5" + - "IHwKCkdhdGVkIG9uIG9ic2VydmFiaWxpdHktc3BlY2lmaWMgZmxhZ3MgaW4gdGhlIGVudmlyb25t" + - "ZW50IGZpbGUuIFNraXBwZWQgaWYgZGlzYWJsZWQuCgojIyBUZW1wbGF0ZSBJbmhlcml0YW5jZQoK" + - "IyMjIGA8PDogKmRlcGVuZGVuY3lgIChZQU1MIG1lcmdlKQoKVXNlZCBpbiBgMDEtZGVwZW5kZW5j" + - "aWVzLnlhbWwuZ290bXBsYC4gTWVyZ2VzIHRoZSB0ZW1wbGF0ZSdzIHByb3BlcnRpZXMgaW50byB0" + - "aGUgcmVsZWFzZS4KCioqR290Y2hhKio6IFlBTUwgbWVyZ2UgcmVwbGFjZXMgbGlzdHMuIElmIHlv" + - "dSBhZGQgYSBgdmFsdWVzOmAga2V5IHRvIHRoZSByZWxlYXNlLCBpdCAqKnJlcGxhY2VzKiogdGhl" + - "IHRlbXBsYXRlJ3MgYHZhbHVlczpgIGxpc3QgZW50aXJlbHkuIFlvdSBtdXN0IHJlLWluY2x1ZGUg" + - "YWxsIHRlbXBsYXRlIHZhbHVlczoKCkluIHRoZSB0ZW1wbGF0ZSBiZWxvdywgYDxwcml2YXRlLXZh" + - "bHVlcz5gIHJlZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxl" + - "IHN0YWNrIHJvb3QuCgpgYGB5YW1sCiMgVGVtcGxhdGUgZGVmaW5lczoKdGVtcGxhdGVzOgogIGRl" + - "cGVuZGVuY3k6ICZkZXBlbmRlbmN5CiAgICBjaGFydDogbnZjZi9oZWxtLW52Y2Yte3sgLlJlbGVh" + - "c2UuTmFtZSB9fQogICAgdmFsdWVzOgogICAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAg" + - "ICAtIC4uLzxwcml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0t" + - "c2VjcmV0cy55YW1sCgojIFdoZW4gb3ZlcnJpZGluZywgTVVTVCByZS1pbmNsdWRlIGJvdGg6Ci0g" + - "bmFtZTogY2Fzc2FuZHJhCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9i" + - "YWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + - "ICAgIyBNdXN0IHJlLWluY2x1ZGUKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJl" + - "ZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwgICAjIE11c3QgcmUtaW5jbHVkZQog" + - "ICAgLSBjYXNzYW5kcmE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + - "ICAgICAgICAgICAgICAgICMgWW91ciBvdmVycmlkZQogICAgICAgIHJlc291cmNlczoKICAgICAg" + - "ICAgIGxpbWl0czoKICAgICAgICAgICAgbWVtb3J5OiA4MTkyTWkKYGBgCgojIyMgYGluaGVyaXRg" + - "IChIZWxtZmlsZSBuYXRpdmUpCgpVc2VkIGluIGAwMi1jb3JlLnlhbWwuZ290bXBsYC4gSGVsbWZp" + - "bGUncyBuYXRpdmUgaW5oZXJpdGFuY2UgbWVjaGFuaXNtLgoKYGBgeWFtbAotIG5hbWU6IGFwaQog" + - "IHZlcnNpb246IDEuNi4wCiAgbmFtZXNwYWNlOiBudmNmCiAgaW5oZXJpdDoKICAgIC0gdGVtcGxh" + - "dGU6IHNlcnZpY2UKYGBgCgpXaGVuIGFkZGluZyBgdmFsdWVzOmAgdG8gYW4gaW5oZXJpdGVkIHJl" + - "bGVhc2UsIHlvdSBhbHNvIG5lZWQgdG8gcmUtaW5jbHVkZSB0aGUgdGVtcGxhdGUncyB2YWx1ZXMg" + - "ZmlsZXMgc2luY2UgYHZhbHVlc2AgaXMgYSBsaXN0IHRoYXQgZ2V0cyByZXBsYWNlZC4KCiMjIFZh" + - "bHVlcyBQcmVjZWRlbmNlCgpGcm9tIGxvd2VzdCB0byBoaWdoZXN0IHByaW9yaXR5OgoKMS4gYGVu" + - "dmlyb25tZW50cy9iYXNlLnlhbWxgIC0tIGRlZmF1bHRzIHNoYXJlZCBhY3Jvc3MgYWxsIGVudmly" + - "b25tZW50cwoyLiBgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgIC0tIHBlci1lbnZpcm9ubWVudCBv" + - "dmVycmlkZXMKMy4gYGdsb2JhbC55YW1sLmdvdG1wbGAgLS0gR28gdGVtcGxhdGUgcHJvY2Vzc2lu" + - "ZyAoY29uc3RydWN0cyBjaGFydC1zcGVjaWZpYyBzdHJ1Y3R1cmUpCjQuIGA8cHJpdmF0ZS12YWx1" + - "ZXM+LzxlbnY+LXNlY3JldHMueWFtbGAgLS0gc2Vuc2l0aXZlIHZhbHVlcwo1LiBJbmxpbmUgYHZh" + - "bHVlczpgIGJsb2NrcyBvbiByZWxlYXNlcyAtLSBoaWdoZXN0IHByZWNlZGVuY2UKCiMjIFdoYXQg" + - "Z2xvYmFsLnlhbWwuZ290bXBsIFBhc3NlcyBUaHJvdWdoCgpgZ2xvYmFsLnlhbWwuZ290bXBsYCBy" + - "ZWFkcyBmcm9tIGAuVmFsdWVzYCAodGhlIG1lcmdlZCBlbnZpcm9ubWVudCArIGVudi1zcGVjaWZp" + - "YyBZQU1MKSBhbmQgY29uc3RydWN0cyBjaGFydC1zcGVjaWZpYyB2YWx1ZXMuIEl0IG9ubHkgcGFz" + - "c2VzIHRocm91Z2gga2V5cyBpdCBleHBsaWNpdGx5IHJlZmVyZW5jZXM6CgojIyMgQ2Fzc2FuZHJh" + - "CgotIGBjYXNzYW5kcmEucmVwbGljYUNvdW50YAotIGBjYXNzYW5kcmEuaW1hZ2UuKmAgKHJlZ2lz" + - "dHJ5LCByZXBvc2l0b3J5KQotIGBjYXNzYW5kcmEubWlncmF0aW9ucy5pbWFnZS4qYAotIGBjYXNz" + - "YW5kcmEucGVyc2lzdGVuY2Uuc2l6ZWAKLSBgY2Fzc2FuZHJhLm5vZGVTZWxlY3RvcmAgKGlmIGBn" + - "bG9iYWwubm9kZVNlbGVjdG9ycy5lbmFibGVkYCkKLSBgY2Fzc2FuZHJhLmdsb2JhbC5kZWZhdWx0" + - "U3RvcmFnZUNsYXNzYAoKIyMjIE5BVFMKCi0gYG5hdHMuY29udGFpbmVyLmltYWdlLipgCi0gYG5h" + - "dHMucmVsb2FkZXIuaW1hZ2UuKmAKLSBgbmF0cy5uYXRzQm94LmNvbnRhaW5lci5pbWFnZS4qYAot" + - "IGBuYXRzLmNvbmZpZy5qZXRzdHJlYW0uZmlsZVN0b3JlLnB2Yy5zdG9yYWdlQ2xhc3NOYW1lYAot" + - "IGBuYXRzLnBvZFRlbXBsYXRlLm1lcmdlLnNwZWMubm9kZVNlbGVjdG9yYCAoaWYgZW5hYmxlZCkK" + - "CiMjIyBPcGVuQmFvCgotIGBvcGVuYmFvLm1pZ3JhdGlvbnMuaW1hZ2UuKmAgYW5kIGBvcGVuYmFv" + - "Lm1pZ3JhdGlvbnMuZW52YAotIGBvcGVuYmFvLmluamVjdG9yLmltYWdlLipgCi0gYG9wZW5iYW8u" + - "c2VydmVyLmltYWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmRhdGFTdG9yYWdlLipgCi0gTm9kZSBz" + - "ZWxlY3RvcnMgKGlmIGVuYWJsZWQpCgojIyMgU2VydmljZXMgKEFQSSwgU0lTLCBldGMuKQoKLSBg" + - "PHNlcnZpY2U+LmltYWdlLipgIChyZWdpc3RyeSwgcmVwb3NpdG9yeSkKLSBgPHNlcnZpY2U+Lm5v" + - "ZGVTZWxlY3RvcmAgKGlmIGVuYWJsZWQpCi0gYDxzZXJ2aWNlPi5lbnYuKmAgKG9ic2VydmFiaWxp" + - "dHkgc2V0dGluZ3MpCgojIyMgTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnQKCkVuYWJsZSB0aGUgTExN" + - "IGFkZG9uIGJlZm9yZSBjcmVhdGluZyBvciBpbnZva2luZyBmdW5jdGlvbnMgd2l0aApgZnVuY3Rp" + - "b25UeXBlOiAiTExNImAuIFRoZSBhZGRvbiBkZXBsb3lzIGBsbG0tcmVxdWVzdC1yb3V0ZXJgIGFu" + - "ZApgbGxtLWFwaS1nYXRld2F5YCwgYWRkcyB0aGUgYGxsbS5pbnZvY2F0aW9uLjxkb21haW4+YCBy" + - "b3V0ZSB3aGVuIEdhdGV3YXkgQVBJCmluZ3Jlc3MgaXMgZW5hYmxlZCwgYW5kIGNvbmZpZ3VyZXMg" + - "d29ya2VycyB0byB1c2UgdGhlIExMTSBzaWRlY2FyLiBUaGUgSGVsbWZpbGUKY29uZGl0aW9uIGlz" + - "IGBhZGRvbnMubGxtLmVuYWJsZWRgLiBEbyBub3QgdXNlIHRoZSBvYnNvbGV0ZSBgbGxtLmVuYWJs" + - "ZWRgIHBhdGguCgpGb3IgYSBzaW5nbGUtbm9kZSBpc29sYXRlZCB0ZXN0IGNsdXN0ZXIsIGFkZCB0" + - "aGlzIGNvbmZpZ3VyYXRpb24gdG8KYGVudmlyb25tZW50cy88ZW52Pi55YW1sYCBiZWZvcmUgYXBw" + - "bHlpbmcgdGhlIHN0YWNrOgoKYGBgeWFtbAphZGRvbnM6CiAgbGxtOgogICAgZW5hYmxlZDogdHJ1" + - "ZQogICAgZ2F0ZXdheToKICAgICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAg" + - "ICAgc2VydmljZU1vbml0b3I6CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQogICAgcmVxdWVzdFJv" + - "dXRlcjoKICAgICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2Vydmlj" + - "ZU1vbml0b3I6CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQoKYWdlbnRDb25maWc6CiAgbWVyZ2VD" + - "b25maWc6IHwKICAgIGNsdXN0ZXI6CiAgICAgIHZhbGlkYXRpb25Qb2xpY3k6CiAgICAgICAgbmFt" + - "ZTogVW5yZXN0cmljdGVkCiAgICB3b3JrbG9hZDoKICAgICAgc3RhcmdhdGVRVUlDSW5zZWN1cmU6" + - "IHRydWUKYGBgCgpVc2UgYHJlcGxpY2FDb3VudDogMWAgb25seSBmb3IgbG9jYWwgb3Igc2luZ2xl" + - "LW5vZGUgdGVzdCBjbHVzdGVycy4gVGhlIGJ1bmRsZWQKTlZDRiBBUEkgY3VycmVudGx5IHNlcnZl" + - "cyBwbGFpbnRleHQgZ1JQQyBvbiBwb3J0IDkwOTAsIHNvIHRoZSBzZWxmLW1hbmFnZWQgc3RhY2sK" + - "ZGVmYXVsdHMgdGhlIExMTSBBUEkgR2F0ZXdheSBhdXRoZW50aWNhdGlvbiBob3AgdG8gcGxhaW50" + - "ZXh0LiBTZXQKYGFkZG9ucy5sbG0uZ2F0ZXdheS5hdXRoLmdycGNJbnNlY3VyZTogZmFsc2VgIG9u" + - "bHkgd2l0aCBhIFRMUy1jYXBhYmxlIE5WQ0YgQVBJLgoKV29ya2VyLXRvLXJvdXRlciB0cmFuc3Bv" + - "cnQgaXMgc2VwYXJhdGUuIEZvciBzaGFyZWQgb3IgcHJvZHVjdGlvbiBjbHVzdGVycywgdXNlCnRo" + - "ZSByZXF1aXJlZCByZXBsaWNhIGNvdW50IGFuZCB0aGUgbWFuYWdlZCBUTFMgY29uZmlndXJhdGlv" + - "bi4gVGhlCmB3b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZWAgc2V0dGluZyBlbmFibGVzIHBs" + - "YWludGV4dCB3b3JrZXIgdHJhbnNwb3J0IGFuZAptdXN0IG5vdCBiZSB1c2VkIGluIHByb2R1Y3Rp" + - "b24uCgpUaGUgcmVxdWVzdCByb3V0ZXIgdXNlcyBgcG93ZXItb2YtdHdvYCB3aGVuIG5vIGxvYWQt" + - "YmFsYW5jZXIgY29uZmlndXJhdGlvbiBpcwpzZXQuIENvbmZpZ3VyZSBvdGhlciByb3V0aW5nIG1l" + - "dGhvZHMgd2l0aCB0aGUKW0xMTSBSZXF1ZXN0IFJvdXRlciBMb2FkIEJhbGFuY2luZ10oaHR0cHM6" + - "Ly9naXRodWIuY29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9kb2NzL3NlbGYtbWFuYWdlZC9sbG0t" + - "cmVxdWVzdC1yb3V0ZXItbG9hZC1iYWxhbmNpbmcubWQpCmd1aWRlLgoKSWYgdGhlIHNpZGVjYXIg" + - "aW1hZ2UgaXMgbWlycm9yZWQgb3V0c2lkZSB0aGUgc3RhY2sncyBkZWZhdWx0IGltYWdlIHJlZ2lz" + - "dHJ5IGFuZApyZXBvc2l0b3J5LCBzZXQgdGhlIGdlbmVyYXRlZCB3b3JrZXIgc2lkZWNhciBpbWFn" + - "ZSBleHBsaWNpdGx5OgoKYGBgeWFtbAphcGk6CiAgcmVtb3RlQ29uZmlnOgogICAgY29uZmlnRGF0" + - "YToKICAgICAgbnZjZjoKICAgICAgICBzaWRlY2FyczoKICAgICAgICAgIGxsbS1yb3V0ZXItY2xp" + - "ZW50LWltYWdlOiA8cmVnaXN0cnk+LzxyZXBvc2l0b3J5Pi9weWxvbjowLjE0LjEKYGBgCgpUaGUg" + - "bGVnYWN5IGBhcGkuZW52Lk5WQ0ZfU0lERUNBUlNfTExNX1JPVVRFUl9DTElFTlRfSU1BR0VgIHBh" + - "dGggaXMgZGVwcmVjYXRlZC4KVGhlIHN0YWNrIHRyYW5zbGF0ZXMgaXQgZm9yIG9uZSBjb21wYXRp" + - "YmlsaXR5IHdpbmRvdywgYnV0IG5ldyBjb25maWd1cmF0aW9ucwptdXN0IHVzZSB0aGUgcmVtb3Rl" + - "LWNvbmZpZyBwYXRoLiBDb25mbGljdGluZyB2YWx1ZXMgZmFpbCByZW5kZXJpbmcuCgpSZW5kZXIg" + - "YW5kIGFwcGx5IHRoZSB1cGRhdGVkIGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQsIHRoZW4gcmVm" + - "cmVzaCBldmVyeQpyZWdpc3RlcmVkIGNvbXB1dGUgcGxhbmUgdXNpbmcgdGhlIHNhbWUgaGFuZG9m" + - "ZiB1c2VkIGZvciBpdHMgaW5zdGFsbGF0aW9uIHNvCk5WQ0EgcmVjZWl2ZXMgYGFnZW50Q29uZmln" + - "Lm1lcmdlQ29uZmlnYDoKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIHRlbXBs" + - "YXRlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSBzeW5jCmBgYAoKVXNlIHRoZSBjb21wbGV0" + - "ZSBjb21wdXRlLXBsYW5lIGluc3RhbGwgY29tbWFuZCBmcm9tCltTcGxpdCBDb21wdXRlLVBsYW5l" + - "IEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLiBBCkNMSS1wcm9m" + - "aWxlIGluc3RhbGxhdGlvbiBtdXN0IHJlbWFpbiBwcm9maWxlLWRyaXZlbjsgYSBIZWxtZmlsZSBp" + - "bnN0YWxsYXRpb24KbXVzdCByZW1haW4gdmFsdWVzLWRyaXZlbi4KCkV4aXN0aW5nIExMTSBmdW5j" + - "dGlvbiB2ZXJzaW9ucyByZXRhaW4gdGhlIHdvcmtlci1zaWRlY2FyIGltYWdlIG1ldGFkYXRhCmNh" + - "cHR1cmVkIHdoZW4gdGhlIHZlcnNpb24gaXMgY3JlYXRlZC4gUmVwbGFjaW5nIHBvZHMgb3IgcmVk" + - "ZXBsb3lpbmcgdGhlIHNhbWUKdmVyc2lvbiBkb2VzIG5vdCBhcHBseSBhIG5ldyBQeWxvbiBpbWFn" + - "ZS4gQWZ0ZXIgdGhlIGNvbnRyb2wtcGxhbmUgdXBkYXRlLApjcmVhdGUgYW5kIGRlcGxveSBhIG5l" + - "dyBmdW5jdGlvbiB2ZXJzaW9uLiBWZXJpZnkgdGhlIGNvbnRyb2wgcGxhbmUsIHJvdXRlLCBhbmQK" + - "d29ya2VyIHNpZGVjYXI6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSAtbiBudmNmIGxsbS1h" + - "cGktZ2F0ZXdheQprdWJlY3RsIGdldCBzdGF0ZWZ1bHNldCAtbiBudmNmIGxsbS1yZXF1ZXN0LXJv" + - "dXRlcgprdWJlY3RsIGdldCBwb2RzIC1uIG52Y2YgfCBncmVwIC1FICdsbG0tYXBpLWdhdGV3YXl8" + - "bGxtLXJlcXVlc3Qtcm91dGVyJwprdWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIGxsbQpr" + - "dWJlY3RsIC1uIG52Y2YtYmFja2VuZCBnZXQgcG9kIDxmdW5jdGlvbi1wb2Q+IFwKICAtbyBqc29u" + - "cGF0aD0ne3JhbmdlIC5zcGVjLmNvbnRhaW5lcnNbPyhALm5hbWU9PSJsbG0td29ya2VyIildLmFy" + - "Z3NbKl19ey59eyJcXG4ifXtlbmR9JwpgYGAKCkZvciBsb2NhbCBwbGFpbnRleHQgY2x1c3RlcnMs" + - "IHRoZSBgbGxtLXdvcmtlcmAgYXJncyBtdXN0IGluY2x1ZGUKYC0tcXVpYy1pbnNlY3VyZWAuCgpG" + - "b3IgbG9hZC1iYWxhbmNlciBzY2hlbWEgYW5kIGFsZ29yaXRobSBiZWhhdmlvciwgc2VlIHRoZQpb" + - "U3RhcmdhdGUgY29uZmlndXJhdGlvbiBndWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9u" + - "dmNmL2Jsb2IvbWFpbi9zcmMvbGlicmFyaWVzL3J1c3Qvc3RhcmdhdGUvZG9jcy9sb2FkLWJhbGFu" + - "Y2VyLWNvbmZpZ3VyYXRpb24ubWQpLgoKIyMgSGVsbWZpbGUgU2VsZWN0b3JzCgpUYXJnZXQgc3Bl" + - "Y2lmaWMgcmVsZWFzZXMgb3IgZ3JvdXBzOgoKYGBgYmFzaAojIEJ5IHJlbGVhc2UgZ3JvdXAKSEVM" + - "TUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1kZXBlbmRl" + - "bmNpZXMgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNl" + - "LWdyb3VwPXNlcnZpY2VzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0" + - "b3IgcmVsZWFzZS1ncm91cD1pbmdyZXNzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxl" + - "IC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1vYnNlcnZhYmlsaXR5IHN5bmMKCiMgQnkgcmVsZWFz" + - "ZSBuYW1lCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2Fu" + - "ZHJhIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1hZG1p" + - "bi1pc3N1ZXItcHJveHkgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3Rv" + - "ciBuYW1lPWxsbS1yZXF1ZXN0LXJvdXRlciBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmls" + - "ZSAtLXNlbGVjdG9yIG5hbWU9bGxtLWFwaS1nYXRld2F5IHN5bmMKCiMgVGVtcGxhdGUgb25seSAo" + - "ZHJ5IHJ1bikKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNz" + - "YW5kcmEgdGVtcGxhdGUKCiMgRGVzdHJveSBhIHNpbmdsZSByZWxlYXNlCkhFTE1GSUxFX0VOVj08" + - "ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIGRlc3Ryb3kKYGBgCgpOb3Rl" + - "OiBgYWRtaW4taXNzdWVyLXByb3h5YCBoYXMgbm8gYHJlbGVhc2UtZ3JvdXBgIGxhYmVsLiBVc2Ug" + - "YC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHlgLgpQSwcIExHsjQoqAAAKKgAAUEsD" + - "BBQACAAAAAAAIQAAAAAAAAAAAAAAAAA/AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + - "YXRpb24vcmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SIyBOVkNGIFVJIEFkZG9u" + - "CgpOVkNGIFVJIGlzIGFuIG9wdGlvbmFsLCBjdXN0b21lci1mYWNpbmcgTlZDRiBhZG1pbi1wYW5l" + - "bCBVSS4gSXQgaXMgZGlzYWJsZWQgYnkKZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3Rh" + - "Y2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBOVkNGIFVJIGFkZG9uLgoKIyMgV2hlbiB0byBl" + - "bmFibGUKCkVuYWJsZSBOVkNGIFVJIG9ubHkgd2hlbiB5b3UgbmVlZCB0aGUgYWRtaW4tcGFuZWwg" + - "VUkgYW5kIHlvdXIgZXh0cmFjdGVkIHN0YWNrCnBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLiBJ" + - "ZiB0aGUgcGFja2FnZSBkb2VzIG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UKYW5kIGBu" + - "dmNmVWlgIHJvdXRlIHZhbHVlcywgc2tpcCB0aGUgYWRkb24gdW50aWwgeW91IHVzZSBhIHBhY2th" + - "Z2UgdGhhdCBpbmNsdWRlcwp0aGVtLgoKIyMgRW5hYmxlIHRoZSBhZGRvbgoKRW5hYmxlIGl0IGlu" + - "IGBlbnZpcm9ubWVudHMvPGVudi1uYW1lPi55YW1sYDoKCmBgYHlhbWwKYWRkb25zOgogIG52Y2ZV" + - "aToKICAgIGVuYWJsZWQ6IHRydWUKYGBgCgojIyBDcmVhdGUgbmFtZXNwYWNlIGFuZCBpbWFnZSBw" + - "dWxsIHNlY3JldAoKQ3JlYXRlIHRoZSBuYW1lc3BhY2UsIGFuZCBhbiBpbWFnZSBwdWxsIHNlY3Jl" + - "dCBvbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUKcmVnaXN0cnk6CgpgYGBiYXNoCmt1YmVj" + - "dGwgY3JlYXRlIG5hbWVzcGFjZSBudmNmLXVpIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1" + - "YmVjdGwgYXBwbHkgLWYgLQoKIyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0" + - "cnkgKGUuZy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmt1" + - "YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgLS1kb2Nr" + - "ZXItc2VydmVyPW52Y3IuaW8gXAogIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAog" + - "IC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAtLW5hbWVzcGFjZT1udmNmLXVp" + - "IFwKICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KYGBgCgpU" + - "aGUgZGVmYXVsdCByb3V0ZSBob3N0IGlzIGBudmNmLXVpLjxkb21haW4+YCBhbmQgdGhlIGJhY2tl" + - "bmQgaXMKYG52Y2YtdWkubnZjZi11aTo4MzAwYC4KCiMjIEFwcGx5IHRoZSBzZXJ2aWNlIGFuZCBy" + - "b3V0ZQoKQWZ0ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYG52Y2YtdWlg" + - "IHJlbGVhc2UsIHByZXZpZXcgYW5kIGFwcGx5CnRoZSBzZXJ2aWNlIGFuZCByb3V0ZToKCmBgYGJh" + - "c2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2Yt" + - "dWkgdGVtcGxhdGUKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBu" + - "YW1lPW52Y2YtdWkgc3luYwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVj" + - "dG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBgYAoKIyMgVmVyaWZ5CgpWZXJpZnkgdGhl" + - "IHJvdXRlIG9ubHkgd2hlbiB0aGUgYWRkb24gaXMgcHJlc2VudCBhbmQgZW5hYmxlZDoKCmBgYGJh" + - "c2gKa3ViZWN0bCBnZXQgZGVwbG95LHN2YyAtbiBudmNmLXVpCmt1YmVjdGwgZ2V0IGh0dHByb3V0" + - "ZSAtQSB8IGdyZXAgLWkgbnZjZi11aQpjdXJsIC1pIC1IICJIb3N0OiBudmNmLXVpLjxkb21haW4+" + - "IiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+L3N0YXR1cyIKYGBgCgojIyBTZWN1cml0eQoKVGhl" + - "IE5WQ0YgVUkgYWRtaW4gcGFuZWwgaXMgY3VycmVudGx5IHVuYXV0aGVudGljYXRlZC4gRG8gbm90" + - "IGV4cG9zZSBpdCB0byB0aGUKcHVibGljIGludGVybmV0LiBSZXN0cmljdCBhY2Nlc3MgdG8gYSB0" + - "cnVzdGVkIG5ldHdvcmssIFZQTiwgb3IgYW4gYXV0aGVudGljYXRpbmcKcHJveHkgaW4gZnJvbnQg" + - "b2YgdGhlIGBudmNmLXVpYCByb3V0ZS4KUEsHCDj5J6+5BwAAuQcAAFBLAwQUAAgAAAAAACEAAAAA" + - "AAAAAAAAAAAAPgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5j" + - "ZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SIyBJbWFnZSBQdWxsIFNlY3JldHMgUmVmZXJlbmNl" + - "CgojIyBPdmVydmlldwoKV2hlbiBwdWxsaW5nIE5WQ0YgaW1hZ2VzIGZyb20gYSBwcml2YXRlIHJl" + - "Z2lzdHJ5IChmb3IgZXhhbXBsZSwgTkdDCmBudmNyLmlvYCksIEt1YmVybmV0ZXMgbmVlZHMgYGlt" + - "YWdlUHVsbFNlY3JldHNgIG9uIGV2ZXJ5IHBvZC4gQ29udHJvbC1wbGFuZSBhbmQKY29tcHV0ZS1w" + - "bGFuZSBjcmVkZW50aWFscyBhcmUgY29uZmlndXJlZCBpbiB0aGVpciBvd24gY2x1c3RlciBjb250" + - "ZXh0cy4gRG8gbm90CnVzZSBvbmUgbWl4ZWQgbmFtZXNwYWNlIGxpc3QuCgpUaGUgcmVjb21tZW5k" + - "ZWQgY29udHJvbC1wbGFuZSBhcHByb2FjaCB1c2VzIEt5dmVybm8gdG8gaW5qZWN0IHRoZSBzZWNy" + - "ZXQgaW50bwpjb250cm9sLXBsYW5lIHBvZHMgYXQgYWRtaXNzaW9uIHRpbWUuIFRoZSBjb21wdXRl" + - "LXBsYW5lIGNoYXJ0IGFuZCBvcGVyYXRvciB1c2UKdGhlIHNlY3JldCBpbiBgbnZjYS1vcGVyYXRv" + - "cmAgYW5kIG1pcnJvciBpdCB0byBgbnZjYS1zeXN0ZW1gLgoKIyMgS3l2ZXJubyBBcHByb2FjaCAo" + - "UmVjb21tZW5kZWQpCgojIyMgMS4gSW5zdGFsbCBLeXZlcm5vCgpgYGBiYXNoCmhlbG0gcmVwbyBh" + - "ZGQga3l2ZXJubyBodHRwczovL2t5dmVybm8uZ2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1" + - "cGRhdGUKaGVsbSBpbnN0YWxsIGt5dmVybm8ga3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1j" + - "cmVhdGUtbmFtZXNwYWNlIFwKICAtLWt1YmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0" + - "PgpgYGAKCiMjIyAyLiBDcmVhdGUgY29udHJvbC1wbGFuZSBwdWxsIHNlY3JldHMKCmBgYGJhc2gK" + - "ZXhwb3J0IE5HQ19BUElfS0VZPSI8eW91ci1uZ2MtYXBpLWtleT4iCgpmb3IgbnMgaW4gY2Fzc2Fu" + - "ZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVt" + - "IGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250" + - "ZXh0PiBjcmVhdGUgbmFtZXNwYWNlICIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFt" + - "bCB8IGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0K" + - "ZG9uZQoKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5" + - "cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAtLWNvbnRl" + - "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkg" + - "bnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11" + - "c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9L" + - "RVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFt" + - "bCB8IGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0K" + - "ZG9uZQpgYGAKCkZvciBub24tTkdDIHJlZ2lzdHJpZXMsIHJlcGxhY2UgYC0tZG9ja2VyLXNlcnZl" + - "cmAsIGAtLWRvY2tlci11c2VybmFtZWAsIGFuZCBgLS1kb2NrZXItcGFzc3dvcmRgLgoKIyMjIDMu" + - "IEFwcGx5IEt5dmVybm8gQ2x1c3RlclBvbGljeQoKYGBgeWFtbAphcGlWZXJzaW9uOiBreXZlcm5v" + - "LmlvL3YxCmtpbmQ6IENsdXN0ZXJQb2xpY3kKbWV0YWRhdGE6CiAgbmFtZTogbnZjZi1hZGQtaW1h" + - "Z2VwdWxsc2VjcmV0cwpzcGVjOgogIGJhY2tncm91bmQ6IGZhbHNlCiAgcnVsZXM6CiAgICAtIG5h" + - "bWU6IGFkZC1pbWFnZXB1bGxzZWNyZXQtdG8tbnZjZi1wb2RzCiAgICAgIG1hdGNoOgogICAgICAg" + - "IGFueToKICAgICAgICAtIHJlc291cmNlczoKICAgICAgICAgICAga2luZHM6CiAgICAgICAgICAg" + - "IC0gUG9kCiAgICAgICAgICAgIG5hbWVzcGFjZXM6CiAgICAgICAgICAgIC0gIm52Y2YiCiAgICAg" + - "ICAgICAgIC0gImFwaS1rZXlzIgogICAgICAgICAgICAtICJzaXMiCiAgICAgICAgICAgIC0gImVz" + - "cyIKICAgICAgICAgICAgLSAibmF0cy1zeXN0ZW0iCiAgICAgICAgICAgIC0gImNhc3NhbmRyYS1z" + - "eXN0ZW0iCiAgICAgICAgICAgIC0gInZhdWx0LXN5c3RlbSIKICAgICAgICAgICAgLSAiY2VydC1t" + - "YW5hZ2VyIgogICAgICBtdXRhdGU6CiAgICAgICAgcGF0Y2hTdHJhdGVnaWNNZXJnZToKICAgICAg" + - "ICAgIG1ldGFkYXRhOgogICAgICAgICAgICBhbm5vdGF0aW9uczoKICAgICAgICAgICAgICBudmNm" + - "Lm52aWRpYS5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVkLWJ5OiBreXZlcm5vCiAgICAgICAg" + - "ICBzcGVjOgogICAgICAgICAgICBpbWFnZVB1bGxTZWNyZXRzOgogICAgICAgICAgICAtIG5hbWU6" + - "IG52Y3ItY3JlZHMKYGBgCgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5l" + - "LWNvbnRleHQ+IGFwcGx5IFwKICAtZiBreXZlcm5vLWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFt" + - "bApgYGAKCiMjIyA0LiBJbnN0YWxsIHRoZSBjb250cm9sIHBsYW5lCgpDb250aW51ZSB3aXRoIHRo" + - "ZSBzZWxlY3RlZCBjb250cm9sLXBsYW5lIGluc3RhbGxhdGlvbiBpbgpbU3BsaXQgQ29tcHV0ZS1Q" + - "bGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4gTm8KY29u" + - "dHJvbC1wbGFuZSBoZWxtZmlsZSBtb2RpZmljYXRpb25zIGFyZSBuZWVkZWQuIEt5dmVybm8gaW5q" + - "ZWN0cyB0aGUgcHVsbApzZWNyZXQgaW50byBuZXcgY29udHJvbC1wbGFuZSBwb2RzLgoKIyMgQ29t" + - "cHV0ZS1QbGFuZSBTZWNyZXQKCkNyZWF0ZSB0aGUgc2VjcmV0IG9ubHkgaW4gYG52Y2Etb3BlcmF0" + - "b3JgIG9uIHRoZSBjb21wdXRlIGNsdXN0ZXI6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxj" + - "b21wdXRlLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3BhY2UgbnZjYS1vcGVyYXRvciBcCiAg" + - "LS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + - "LXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBs" + - "YW5lLWNvbnRleHQ+IGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAog" + - "IC0tZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9r" + - "ZW4nIFwKICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgLS1uYW1lc3BhY2U9" + - "bnZjYS1vcGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVjdGwg" + - "LS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KYGBgCgpSZWZlcmVu" + - "Y2UgaXQgaW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZToKCmBgYHlhbWwKZ2xv" + - "YmFsOgogIGltYWdlUHVsbFNlY3JldHM6CiAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpUaGUg" + - "Y2hhcnQgYW5kIG9wZXJhdG9yIHVzZSB0aGF0IHJlZmVyZW5jZSBpbiBgbnZjYS1vcGVyYXRvcmAg" + - "YW5kIG1pcnJvciB0aGUKc2VjcmV0IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBjcmVhdGUgYSBi" + - "cm9hZGVyIG1hbnVhbCBjb21wdXRlIG5hbWVzcGFjZSBsaXN0LiBGb2xsb3cKW1NwbGl0IENvbXB1" + - "dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShjb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkgZm9y" + - "IHRoZQpzZWxlY3RlZCBpbnN0YWxsIGZsb3cuCgojIyBWZXJpZmljYXRpb24KCmBgYGJhc2gKIyBD" + - "aGVjayB0aGF0IGEgY29udHJvbC1wbGFuZSBwb2QgaGFzIHRoZSBpbmplY3RlZCBzZWNyZXQKa3Vi" + - "ZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHBvZCAtbiA8bmFtZXNw" + - "YWNlPiA8cG9kLW5hbWU+IFwKICAtbyBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9" + - "JwojIEV4cGVjdGVkOiBbeyJuYW1lIjoibnZjci1jcmVkcyJ9XQoKIyBDaGVjayB0aGUgS3l2ZXJu" + - "byBhbm5vdGF0aW9uCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdl" + - "dCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiBcCiAgLW8ganNvbnBhdGg9J3subWV0YWRh" + - "dGEuYW5ub3RhdGlvbnMubnZjZlwubnZpZGlhXC5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVk" + - "LWJ5fScKIyBFeHBlY3RlZDoga3l2ZXJubwoKIyBDaGVjayBwdWxsIGV2ZW50cwprdWJlY3RsIC0t" + - "Y29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZXZlbnRzIC1uIDxuYW1lc3BhY2U+" + - "IFwKICAtLXNvcnQtYnk9Jy5sYXN0VGltZXN0YW1wJyB8IGdyZXAgLWkgcHVsbAojIFNob3VsZCBz" + - "aG93ICJTdWNjZXNzZnVsbHkgcHVsbGVkIiBub3QgIjQwMSBVbmF1dGhvcml6ZWQiCgojIENoZWNr" + - "IHRoZSBjaGFydC9vcGVyYXRvciBtaXJyb3Igb24gdGhlIGNvbXB1dGUgY2x1c3RlcgprdWJlY3Rs" + - "IC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMg" + - "XAogIC1uIG52Y2Etc3lzdGVtCmBgYAoKIyMgV2hlbiBQdWxsIFNlY3JldHMgQXJlIE5vdCBOZWVk" + - "ZWQKCi0gKipBV1MgRUNSIHdpdGggSUFNIG5vZGUgcm9sZXMqKjogSWYgeW91ciBub2RlcyBoYXZl" + - "IGBBbWF6b25FQzJDb250YWluZXJSZWdpc3RyeVJlYWRPbmx5YCBJQU0gcG9saWN5LCBLdWJlcm5l" + - "dGVzIGNhbiBwdWxsIGZyb20gRUNSIHdpdGhvdXQgZXhwbGljaXQgc2VjcmV0cy4KLSAqKlB1Ymxp" + - "YyByZWdpc3RyaWVzKio6IE5vIHB1bGwgc2VjcmV0cyBuZWVkZWQuCi0gKipDU1AgYnVpbHQtaW4g" + - "Y3JlZGVudGlhbCBoZWxwZXJzKio6IEdLRSBBcnRpZmFjdCBSZWdpc3RyeSwgQXp1cmUgQUNSIHdp" + - "dGggbWFuYWdlZCBpZGVudGl0eSwgYW5kIHNpbWlsYXIgc2VydmljZXMuCgojIyBUcm91Ymxlc2hv" + - "b3RpbmcKCiMjIyBQb2RzIHN0aWxsIGluIEltYWdlUHVsbEJhY2tPZmYgYWZ0ZXIgYXBwbHlpbmcg" + - "cG9saWN5CgpUaGUgS3l2ZXJubyBwb2xpY3kgb25seSBhZmZlY3RzIHBvZHMgY3JlYXRlZCAqKmFm" + - "dGVyKiogdGhlIHBvbGljeSBpcyBhcHBsaWVkLiBEZWxldGUgc3R1Y2sgcG9kcyB0byB0cmlnZ2Vy" + - "IHJlY3JlYXRpb246CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDx0YXJnZXQtY29udGV4dD4g" + - "ZGVsZXRlIHBvZHMgLW4gPG5hbWVzcGFjZT4gLS1hbGwKYGBgCgojIyMgS3l2ZXJubyBhZG1pc3Np" + - "b24gY29udHJvbGxlciBub3QgcnVubmluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29u" + - "dHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgcG9kcyAtbiBreXZlcm5vCiMgQWxsIHBvZHMgc2hvdWxk" + - "IGJlIFJ1bm5pbmcKYGBgCgojIyMgUG9saWN5IG5vdCBtYXRjaGluZwoKYGBgYmFzaAprdWJlY3Rs" + - "IC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgY2x1c3RlcnBvbGljeSBudmNm" + - "LWFkZC1pbWFnZXB1bGxzZWNyZXRzCiMgU2hvdWxkIHNob3cgUkVBRFk6IFRydWUKYGBgCgojIyMg" + - "V3Jvbmcgc2VjcmV0IG5hbWUKClRoZSBwb2xpY3kgcmVmZXJlbmNlcyBgbnZjci1jcmVkc2AuIFZl" + - "cmlmeSB0aGUgc2VjcmV0IGV4aXN0cyB3aXRoIHRoYXQgZXhhY3QgbmFtZToKCmBgYGJhc2gKa3Vi" + - "ZWN0bCAtLWNvbnRleHQgPHRhcmdldC1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgLW4g" + - "PG5hbWVzcGFjZT4KYGBgClBLBwhLQjWoABYAAAAWAABQSwECFAAUAAgAAAAAACEAXcZ/2EoQAABK" + - "EAAAEgAJAAAAAAAAAAAAAAAAAAAAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4SUEsBAhQAFAAI" + - "AAAAAAAhAP9282dTYQAAU2EAACMACQAAAAAAAAAAAAAAkxAAAGRhdGEvbnZjZi1zZWxmLW1hbmFn" + - "ZWQtY2xpL1NLSUxMLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAJn2DaXdDQAA3Q0AADMACQAA" + - "AAAAAAAAAAAAQHIAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL2V4YW1wbGVzL2NpLXBpcGVs" + - "aW5lcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQChFOOBXQwAAF0MAAA0AAkAAAAAAAAAAAAA" + - "AIeAAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9tdWx0aS1jbHVzdGVyLm1k" + - "VVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEInSQ8FDQAABQ0AADcACQAAAAAAAAAAAAAAT40AAGRh" + - "dGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvYWRkLWNvbXB1dGUtcGxhbmUubWRVVAUA" + - "AQCmzhJQSwECFAAUAAgAAAAAACEA1N6NNJ8ZAACfGQAAOQAJAAAAAAAAAAAAAADCmgAAZGF0YS9u" + - "dmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kVVQFAAEA" + - "ps4SUEsBAhQAFAAIAAAAAAAhANJD3AQYJQAAGCUAADcACQAAAAAAAAAAAAAA0bQAAGRhdGEvbnZj" + - "Zi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvZGVwbG95LWFuZC1pbnZva2UubWRVVAUAAQCmzhJQ" + - "SwECFAAUAAgAAAAAACEAcpIsJr4OAAC+DgAAPQAJAAAAAAAAAAAAAABX2gAAZGF0YS9udmNmLXNl" + - "bGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9kaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZFVUBQABAKbO" + - "ElBLAQIUABQACAAAAAAAIQBCceYeASgAAAEoAAA6AAkAAAAAAAAAAAAAAInpAABkYXRhL252Y2Yt" + - "c2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2luc3RhbGwtZnJvbS1zY3JhdGNoLm1kVVQFAAEAps4S" + - "UEsBAhQAFAAIAAAAAAAhAKrhOrnIBwAAyAcAADkACQAAAAAAAAAAAAAA+xEBAGRhdGEvbnZjZi1z" + - "ZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvcm90YXRlLWNsdXN0ZXItandrcy5tZFVUBQABAKbOElBL" + - "AQIUABQACAAAAAAAIQDah2NW5CEAAOQhAAAuAAkAAAAAAAAAAAAAADMaAQBkYXRhL252Y2Ytc2Vs" + - "Zi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3RlYXJkb3duLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAh" + - "AHIND2QhIwAAISMAADAACQAAAAAAAAAAAAAAfDwBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xp" + - "L3JlZmVyZW5jZS9jb21tYW5kcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBP7NZh4gcAAOIH" + - "AAAyAAkAAAAAAAAAAAAAAARgAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2Uv" + - "ZXhpdC1jb2Rlcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQCOwIjxNTIAADUyAAAtAAkAAAAA" + - "AAAAAAAAAE9oAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZmxhZ3MubWRV" + - "VAUAAQCmzhJQSwECFAAUAAgAAAAAACEA864ThHQRAAB0EQAANwAJAAAAAAAAAAAAAADomgEAZGF0" + - "YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQAB" + - "AKbOElBLAQIUABQACAAAAAAAIQARwxSTSWIAAEliAAAsAAkAAAAAAAAAAAAAAMqsAQBkYXRhL252" + - "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5tZFVUBQABAKbOElBLAQIUABQACAAA" + - "AAAAIQBHVWpWSlYAAEpWAAA0AAkAAAAAAAAAAAAAAHYPAgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2Vk" + - "LWluc3RhbGxhdGlvbi9ldmFscy9ldmFscy5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAAJS" + - "TkB/KAAAfygAAC8ACQAAAAAAAAAAAAAAK2YCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + - "bGF0aW9uL2V4YW1wbGVzLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAJZjvFkSMAAAEjAAAEwA" + - "CQAAAAAAAAAAAAAAEI8CAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVy" + - "ZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + - "ACEAtXpwO7UwAAC1MAAAOwAJAAAAAAAAAAAAAAClvwIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1p" + - "bnN0YWxsYXRpb24vcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + - "ACEAExHsjQoqAAAKKgAARAAJAAAAAAAAAAAAAADM8AIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1p" + - "bnN0YWxsYXRpb24vcmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWRVVAUAAQCmzhJQSwEC" + - "FAAUAAgAAAAAACEAOPknr7kHAAC5BwAAPwAJAAAAAAAAAAAAAABRGwMAZGF0YS9udmNmLXNlbGYt" + - "bWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQFAAEAps4S" + - "UEsBAhQAFAAIAAAAAAAhAEtCNagAFgAAABYAAD4ACQAAAAAAAAAAAAAAgCMDAGRhdGEvbnZjZi1z" + - "ZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEA" + - "ps4SUEsFBgAAAAAXABcArwkAAPU5AwAAAA==" + "LS0tLS0tfAp8IChvYnNlcnZhYmlsaXR5IHJlbGVhc2VzKSB8ICh2YXJpb3VzKSB8IG9ic2VydmFi" + + "aWxpdHkgfCBvYnNlcnZhYmlsaXR5IHwKCkdhdGVkIG9uIG9ic2VydmFiaWxpdHktc3BlY2lmaWMg" + + "ZmxhZ3MgaW4gdGhlIGVudmlyb25tZW50IGZpbGUuIFNraXBwZWQgaWYgZGlzYWJsZWQuCgojIyBU" + + "ZW1wbGF0ZSBJbmhlcml0YW5jZQoKIyMjIGA8PDogKmRlcGVuZGVuY3lgIChZQU1MIG1lcmdlKQoK" + + "VXNlZCBpbiBgMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsYC4gTWVyZ2VzIHRoZSB0ZW1wbGF0" + + "ZSdzIHByb3BlcnRpZXMgaW50byB0aGUgcmVsZWFzZS4KCioqR290Y2hhKio6IFlBTUwgbWVyZ2Ug" + + "cmVwbGFjZXMgbGlzdHMuIElmIHlvdSBhZGQgYSBgdmFsdWVzOmAga2V5IHRvIHRoZSByZWxlYXNl" + + "LCBpdCAqKnJlcGxhY2VzKiogdGhlIHRlbXBsYXRlJ3MgYHZhbHVlczpgIGxpc3QgZW50aXJlbHku" + + "IFlvdSBtdXN0IHJlLWluY2x1ZGUgYWxsIHRlbXBsYXRlIHZhbHVlczoKCkluIHRoZSB0ZW1wbGF0" + + "ZSBiZWxvdywgYDxwcml2YXRlLXZhbHVlcz5gIHJlZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJl" + + "Y3RvcnkgYXQgdGhlIGhlbG1maWxlIHN0YWNrIHJvb3QuCgpgYGB5YW1sCiMgVGVtcGxhdGUgZGVm" + + "aW5lczoKdGVtcGxhdGVzOgogIGRlcGVuZGVuY3k6ICZkZXBlbmRlbmN5CiAgICBjaGFydDogbnZj" + + "Zi9oZWxtLW52Y2Yte3sgLlJlbGVhc2UuTmFtZSB9fQogICAgdmFsdWVzOgogICAgICAtIC4uL2ds" + + "b2JhbC55YW1sLmdvdG1wbAogICAgICAtIC4uLzxwcml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRF" + + "bnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCgojIFdoZW4gb3ZlcnJpZGluZywgTVVT" + + "VCByZS1pbmNsdWRlIGJvdGg6Ci0gbmFtZTogY2Fzc2FuZHJhCiAgPDw6ICpkZXBlbmRlbmN5CiAg" + + "dmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgICAgICAgICAg" + + "ICAgICAgICAgICAgICAgICAgICAgICAgIyBNdXN0IHJlLWluY2x1ZGUKICAgIC0gLi4vPHByaXZh" + + "dGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwg" + + "ICAjIE11c3QgcmUtaW5jbHVkZQogICAgLSBjYXNzYW5kcmE6ICAgICAgICAgICAgICAgICAgICAg" + + "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgWW91ciBvdmVycmlkZQogICAg" + + "ICAgIHJlc291cmNlczoKICAgICAgICAgIGxpbWl0czoKICAgICAgICAgICAgbWVtb3J5OiA4MTky" + + "TWkKYGBgCgojIyMgYGluaGVyaXRgIChIZWxtZmlsZSBuYXRpdmUpCgpVc2VkIGluIGAwMi1jb3Jl" + + "LnlhbWwuZ290bXBsYC4gSGVsbWZpbGUncyBuYXRpdmUgaW5oZXJpdGFuY2UgbWVjaGFuaXNtLgoK" + + "YGBgeWFtbAotIG5hbWU6IGFwaQogIHZlcnNpb246IDEuNi4wCiAgbmFtZXNwYWNlOiBudmNmCiAg" + + "aW5oZXJpdDoKICAgIC0gdGVtcGxhdGU6IHNlcnZpY2UKYGBgCgpXaGVuIGFkZGluZyBgdmFsdWVz" + + "OmAgdG8gYW4gaW5oZXJpdGVkIHJlbGVhc2UsIHlvdSBhbHNvIG5lZWQgdG8gcmUtaW5jbHVkZSB0" + + "aGUgdGVtcGxhdGUncyB2YWx1ZXMgZmlsZXMgc2luY2UgYHZhbHVlc2AgaXMgYSBsaXN0IHRoYXQg" + + "Z2V0cyByZXBsYWNlZC4KCiMjIFZhbHVlcyBQcmVjZWRlbmNlCgpGcm9tIGxvd2VzdCB0byBoaWdo" + + "ZXN0IHByaW9yaXR5OgoKMS4gYGVudmlyb25tZW50cy9iYXNlLnlhbWxgIC0tIGRlZmF1bHRzIHNo" + + "YXJlZCBhY3Jvc3MgYWxsIGVudmlyb25tZW50cwoyLiBgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxg" + + "IC0tIHBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKMy4gYGdsb2JhbC55YW1sLmdvdG1wbGAgLS0g" + + "R28gdGVtcGxhdGUgcHJvY2Vzc2luZyAoY29uc3RydWN0cyBjaGFydC1zcGVjaWZpYyBzdHJ1Y3R1" + + "cmUpCjQuIGA8cHJpdmF0ZS12YWx1ZXM+LzxlbnY+LXNlY3JldHMueWFtbGAgLS0gc2Vuc2l0aXZl" + + "IHZhbHVlcwo1LiBJbmxpbmUgYHZhbHVlczpgIGJsb2NrcyBvbiByZWxlYXNlcyAtLSBoaWdoZXN0" + + "IHByZWNlZGVuY2UKCiMjIFdoYXQgZ2xvYmFsLnlhbWwuZ290bXBsIFBhc3NlcyBUaHJvdWdoCgpg" + + "Z2xvYmFsLnlhbWwuZ290bXBsYCByZWFkcyBmcm9tIGAuVmFsdWVzYCAodGhlIG1lcmdlZCBlbnZp" + + "cm9ubWVudCArIGVudi1zcGVjaWZpYyBZQU1MKSBhbmQgY29uc3RydWN0cyBjaGFydC1zcGVjaWZp" + + "YyB2YWx1ZXMuIEl0IG9ubHkgcGFzc2VzIHRocm91Z2gga2V5cyBpdCBleHBsaWNpdGx5IHJlZmVy" + + "ZW5jZXM6CgojIyMgQ2Fzc2FuZHJhCgotIGBjYXNzYW5kcmEucmVwbGljYUNvdW50YAotIGBjYXNz" + + "YW5kcmEuaW1hZ2UuKmAgKHJlZ2lzdHJ5LCByZXBvc2l0b3J5KQotIGBjYXNzYW5kcmEubWlncmF0" + + "aW9ucy5pbWFnZS4qYAotIGBjYXNzYW5kcmEucGVyc2lzdGVuY2Uuc2l6ZWAKLSBgY2Fzc2FuZHJh" + + "Lm5vZGVTZWxlY3RvcmAgKGlmIGBnbG9iYWwubm9kZVNlbGVjdG9ycy5lbmFibGVkYCkKLSBgY2Fz" + + "c2FuZHJhLmdsb2JhbC5kZWZhdWx0U3RvcmFnZUNsYXNzYAoKIyMjIE5BVFMKCi0gYG5hdHMuY29u" + + "dGFpbmVyLmltYWdlLipgCi0gYG5hdHMucmVsb2FkZXIuaW1hZ2UuKmAKLSBgbmF0cy5uYXRzQm94" + + "LmNvbnRhaW5lci5pbWFnZS4qYAotIGBuYXRzLmNvbmZpZy5qZXRzdHJlYW0uZmlsZVN0b3JlLnB2" + + "Yy5zdG9yYWdlQ2xhc3NOYW1lYAotIGBuYXRzLnBvZFRlbXBsYXRlLm1lcmdlLnNwZWMubm9kZVNl" + + "bGVjdG9yYCAoaWYgZW5hYmxlZCkKCiMjIyBPcGVuQmFvCgotIGBvcGVuYmFvLm1pZ3JhdGlvbnMu" + + "aW1hZ2UuKmAgYW5kIGBvcGVuYmFvLm1pZ3JhdGlvbnMuZW52YAotIGBvcGVuYmFvLmluamVjdG9y" + + "LmltYWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmltYWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmRh" + + "dGFTdG9yYWdlLipgCi0gTm9kZSBzZWxlY3RvcnMgKGlmIGVuYWJsZWQpCgojIyMgU2VydmljZXMg" + + "KEFQSSwgU0lTLCBldGMuKQoKLSBgPHNlcnZpY2U+LmltYWdlLipgIChyZWdpc3RyeSwgcmVwb3Np" + + "dG9yeSkKLSBgPHNlcnZpY2U+Lm5vZGVTZWxlY3RvcmAgKGlmIGVuYWJsZWQpCi0gYDxzZXJ2aWNl" + + "Pi5lbnYuKmAgKG9ic2VydmFiaWxpdHkgc2V0dGluZ3MpCgojIyMgTExNIEZ1bmN0aW9uIEVuYWJs" + + "ZW1lbnQKCkVuYWJsZSB0aGUgTExNIGFkZG9uIGJlZm9yZSBjcmVhdGluZyBvciBpbnZva2luZyBm" + + "dW5jdGlvbnMgd2l0aApgZnVuY3Rpb25UeXBlOiAiTExNImAuIFRoZSBhZGRvbiBkZXBsb3lzIGBs" + + "bG0tcmVxdWVzdC1yb3V0ZXJgIGFuZApgbGxtLWFwaS1nYXRld2F5YCwgYWRkcyB0aGUgYGxsbS5p" + + "bnZvY2F0aW9uLjxkb21haW4+YCByb3V0ZSB3aGVuIEdhdGV3YXkgQVBJCmluZ3Jlc3MgaXMgZW5h" + + "YmxlZCwgYW5kIGNvbmZpZ3VyZXMgd29ya2VycyB0byB1c2UgdGhlIExMTSBzaWRlY2FyLiBUaGUg" + + "SGVsbWZpbGUKY29uZGl0aW9uIGlzIGBhZGRvbnMubGxtLmVuYWJsZWRgLiBEbyBub3QgdXNlIHRo" + + "ZSBvYnNvbGV0ZSBgbGxtLmVuYWJsZWRgIHBhdGguCgpGb3IgYSBzaW5nbGUtbm9kZSBpc29sYXRl" + + "ZCB0ZXN0IGNsdXN0ZXIsIGFkZCB0aGlzIGNvbmZpZ3VyYXRpb24gdG8KYGVudmlyb25tZW50cy88" + + "ZW52Pi55YW1sYCBiZWZvcmUgYXBwbHlpbmcgdGhlIHN0YWNrOgoKYGBgeWFtbAphZGRvbnM6CiAg" + + "bGxtOgogICAgZW5hYmxlZDogdHJ1ZQogICAgZ2F0ZXdheToKICAgICAgcmVwbGljYUNvdW50OiAx" + + "CiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2VydmljZU1vbml0b3I6CiAgICAgICAgICBlbmFibGVk" + + "OiBmYWxzZQogICAgcmVxdWVzdFJvdXRlcjoKICAgICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1l" + + "dHJpY3M6CiAgICAgICAgc2VydmljZU1vbml0b3I6CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQoK" + + "YWdlbnRDb25maWc6CiAgbWVyZ2VDb25maWc6IHwKICAgIGNsdXN0ZXI6CiAgICAgIHZhbGlkYXRp" + + "b25Qb2xpY3k6CiAgICAgICAgbmFtZTogVW5yZXN0cmljdGVkCiAgICB3b3JrbG9hZDoKICAgICAg" + + "c3RhcmdhdGVRVUlDSW5zZWN1cmU6IHRydWUKYGBgCgpVc2UgYHJlcGxpY2FDb3VudDogMWAgb25s" + + "eSBmb3IgbG9jYWwgb3Igc2luZ2xlLW5vZGUgdGVzdCBjbHVzdGVycy4gVGhlIGJ1bmRsZWQKTlZD" + + "RiBBUEkgY3VycmVudGx5IHNlcnZlcyBwbGFpbnRleHQgZ1JQQyBvbiBwb3J0IDkwOTAsIHNvIHRo" + + "ZSBzZWxmLW1hbmFnZWQgc3RhY2sKZGVmYXVsdHMgdGhlIExMTSBBUEkgR2F0ZXdheSBhdXRoZW50" + + "aWNhdGlvbiBob3AgdG8gcGxhaW50ZXh0LiBTZXQKYGFkZG9ucy5sbG0uZ2F0ZXdheS5hdXRoLmdy" + + "cGNJbnNlY3VyZTogZmFsc2VgIG9ubHkgd2l0aCBhIFRMUy1jYXBhYmxlIE5WQ0YgQVBJLgoKV29y" + + "a2VyLXRvLXJvdXRlciB0cmFuc3BvcnQgaXMgc2VwYXJhdGUuIEZvciBzaGFyZWQgb3IgcHJvZHVj" + + "dGlvbiBjbHVzdGVycywgdXNlCnRoZSByZXF1aXJlZCByZXBsaWNhIGNvdW50IGFuZCB0aGUgbWFu" + + "YWdlZCBUTFMgY29uZmlndXJhdGlvbi4gVGhlCmB3b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3Vy" + + "ZWAgc2V0dGluZyBlbmFibGVzIHBsYWludGV4dCB3b3JrZXIgdHJhbnNwb3J0IGFuZAptdXN0IG5v" + + "dCBiZSB1c2VkIGluIHByb2R1Y3Rpb24uCgpUaGUgcmVxdWVzdCByb3V0ZXIgdXNlcyBgcG93ZXIt" + + "b2YtdHdvYCB3aGVuIG5vIGxvYWQtYmFsYW5jZXIgY29uZmlndXJhdGlvbiBpcwpzZXQuIENvbmZp" + + "Z3VyZSBvdGhlciByb3V0aW5nIG1ldGhvZHMgd2l0aCB0aGUKW0xMTSBSZXF1ZXN0IFJvdXRlciBM" + + "b2FkIEJhbGFuY2luZ10oaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9k" + + "b2NzL3NlbGYtbWFuYWdlZC9sbG0tcmVxdWVzdC1yb3V0ZXItbG9hZC1iYWxhbmNpbmcubWQpCmd1" + + "aWRlLgoKSWYgdGhlIHNpZGVjYXIgaW1hZ2UgaXMgbWlycm9yZWQgb3V0c2lkZSB0aGUgc3RhY2sn" + + "cyBkZWZhdWx0IGltYWdlIHJlZ2lzdHJ5IGFuZApyZXBvc2l0b3J5LCBzZXQgdGhlIGdlbmVyYXRl" + + "ZCB3b3JrZXIgc2lkZWNhciBpbWFnZSBleHBsaWNpdGx5OgoKYGBgeWFtbAphcGk6CiAgcmVtb3Rl" + + "Q29uZmlnOgogICAgY29uZmlnRGF0YToKICAgICAgbnZjZjoKICAgICAgICBzaWRlY2FyczoKICAg" + + "ICAgICAgIGxsbS1yb3V0ZXItY2xpZW50LWltYWdlOiA8cmVnaXN0cnk+LzxyZXBvc2l0b3J5Pi9w" + + "eWxvbjowLjE0LjEKYGBgCgpUaGUgbGVnYWN5IGBhcGkuZW52Lk5WQ0ZfU0lERUNBUlNfTExNX1JP" + + "VVRFUl9DTElFTlRfSU1BR0VgIHBhdGggaXMgZGVwcmVjYXRlZC4KVGhlIHN0YWNrIHRyYW5zbGF0" + + "ZXMgaXQgZm9yIG9uZSBjb21wYXRpYmlsaXR5IHdpbmRvdywgYnV0IG5ldyBjb25maWd1cmF0aW9u" + + "cwptdXN0IHVzZSB0aGUgcmVtb3RlLWNvbmZpZyBwYXRoLiBDb25mbGljdGluZyB2YWx1ZXMgZmFp" + + "bCByZW5kZXJpbmcuCgpSZW5kZXIgYW5kIGFwcGx5IHRoZSB1cGRhdGVkIGNvbnRyb2wtcGxhbmUg" + + "ZW52aXJvbm1lbnQsIHRoZW4gcmVmcmVzaCBldmVyeQpyZWdpc3RlcmVkIGNvbXB1dGUgcGxhbmUg" + + "dXNpbmcgdGhlIHNhbWUgaGFuZG9mZiB1c2VkIGZvciBpdHMgaW5zdGFsbGF0aW9uIHNvCk5WQ0Eg" + + "cmVjZWl2ZXMgYGFnZW50Q29uZmlnLm1lcmdlQ29uZmlnYDoKCmBgYGJhc2gKSEVMTUZJTEVfRU5W" + + "PTxlbnY+IGhlbG1maWxlIHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSBzeW5j" + + "CmBgYAoKVXNlIHRoZSBjb21wbGV0ZSBjb21wdXRlLXBsYW5lIGluc3RhbGwgY29tbWFuZCBmcm9t" + + "CltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxs" + + "YXRpb24ubWQpLiBBCkNMSS1wcm9maWxlIGluc3RhbGxhdGlvbiBtdXN0IHJlbWFpbiBwcm9maWxl" + + "LWRyaXZlbjsgYSBIZWxtZmlsZSBpbnN0YWxsYXRpb24KbXVzdCByZW1haW4gdmFsdWVzLWRyaXZl" + + "bi4KCkV4aXN0aW5nIExMTSBmdW5jdGlvbiB2ZXJzaW9ucyByZXRhaW4gdGhlIHdvcmtlci1zaWRl" + + "Y2FyIGltYWdlIG1ldGFkYXRhCmNhcHR1cmVkIHdoZW4gdGhlIHZlcnNpb24gaXMgY3JlYXRlZC4g" + + "UmVwbGFjaW5nIHBvZHMgb3IgcmVkZXBsb3lpbmcgdGhlIHNhbWUKdmVyc2lvbiBkb2VzIG5vdCBh" + + "cHBseSBhIG5ldyBQeWxvbiBpbWFnZS4gQWZ0ZXIgdGhlIGNvbnRyb2wtcGxhbmUgdXBkYXRlLApj" + + "cmVhdGUgYW5kIGRlcGxveSBhIG5ldyBmdW5jdGlvbiB2ZXJzaW9uLiBWZXJpZnkgdGhlIGNvbnRy" + + "b2wgcGxhbmUsIHJvdXRlLCBhbmQKd29ya2VyIHNpZGVjYXI6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0" + + "IGRlcGxveSAtbiBudmNmIGxsbS1hcGktZ2F0ZXdheQprdWJlY3RsIGdldCBzdGF0ZWZ1bHNldCAt" + + "biBudmNmIGxsbS1yZXF1ZXN0LXJvdXRlcgprdWJlY3RsIGdldCBwb2RzIC1uIG52Y2YgfCBncmVw" + + "IC1FICdsbG0tYXBpLWdhdGV3YXl8bGxtLXJlcXVlc3Qtcm91dGVyJwprdWJlY3RsIGdldCBodHRw" + + "cm91dGUgLUEgfCBncmVwIGxsbQprdWJlY3RsIC1uIG52Y2YtYmFja2VuZCBnZXQgcG9kIDxmdW5j" + + "dGlvbi1wb2Q+IFwKICAtbyBqc29ucGF0aD0ne3JhbmdlIC5zcGVjLmNvbnRhaW5lcnNbPyhALm5h" + + "bWU9PSJsbG0td29ya2VyIildLmFyZ3NbKl19ey59eyJcXG4ifXtlbmR9JwpgYGAKCkZvciBsb2Nh" + + "bCBwbGFpbnRleHQgY2x1c3RlcnMsIHRoZSBgbGxtLXdvcmtlcmAgYXJncyBtdXN0IGluY2x1ZGUK" + + "YC0tcXVpYy1pbnNlY3VyZWAuCgpGb3IgbG9hZC1iYWxhbmNlciBzY2hlbWEgYW5kIGFsZ29yaXRo" + + "bSBiZWhhdmlvciwgc2VlIHRoZQpbU3RhcmdhdGUgY29uZmlndXJhdGlvbiBndWlkZV0oaHR0cHM6" + + "Ly9naXRodWIuY29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9zcmMvbGlicmFyaWVzL3J1c3Qvc3Rh" + + "cmdhdGUvZG9jcy9sb2FkLWJhbGFuY2VyLWNvbmZpZ3VyYXRpb24ubWQpLgoKIyMgSGVsbWZpbGUg" + + "U2VsZWN0b3JzCgpUYXJnZXQgc3BlY2lmaWMgcmVsZWFzZXMgb3IgZ3JvdXBzOgoKYGBgYmFzaAoj" + + "IEJ5IHJlbGVhc2UgZ3JvdXAKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3Ig" + + "cmVsZWFzZS1ncm91cD1kZXBlbmRlbmNpZXMgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZp" + + "bGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIHN5bmMKSEVMTUZJTEVfRU5WPTxl" + + "bnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1pbmdyZXNzIHN5bmMKSEVMTUZJ" + + "TEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1vYnNlcnZhYmls" + + "aXR5IHN5bmMKCiMgQnkgcmVsZWFzZSBuYW1lCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAt" + + "LXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxl" + + "IC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHkgc3luYwpIRUxNRklMRV9FTlY9PGVu" + + "dj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWxsbS1yZXF1ZXN0LXJvdXRlciBzeW5jCkhFTE1G" + + "SUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9bGxtLWFwaS1nYXRld2F5IHN5" + + "bmMKCiMgVGVtcGxhdGUgb25seSAoZHJ5IHJ1bikKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxl" + + "IC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUKCiMgRGVzdHJveSBhIHNpbmdsZSBy" + + "ZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2Fu" + + "ZHJhIGRlc3Ryb3kKYGBgCgpOb3RlOiBgYWRtaW4taXNzdWVyLXByb3h5YCBoYXMgbm8gYHJlbGVh" + + "c2UtZ3JvdXBgIGxhYmVsLiBVc2UgYC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHlg" + + "LgpQSwcIExHsjQoqAAAKKgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA/AAkAZGF0YS9udmNm" + + "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQF" + + "AAEAps4SIyBOVkNGIFVJIEFkZG9uCgpOVkNGIFVJIGlzIGFuIG9wdGlvbmFsLCBjdXN0b21lci1m" + + "YWNpbmcgTlZDRiBhZG1pbi1wYW5lbCBVSS4gSXQgaXMgZGlzYWJsZWQgYnkKZGVmYXVsdCBhbmQg" + + "YXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBOVkNGIFVJ" + + "IGFkZG9uLgoKIyMgV2hlbiB0byBlbmFibGUKCkVuYWJsZSBOVkNGIFVJIG9ubHkgd2hlbiB5b3Ug" + + "bmVlZCB0aGUgYWRtaW4tcGFuZWwgVUkgYW5kIHlvdXIgZXh0cmFjdGVkIHN0YWNrCnBhY2thZ2Ug" + + "aW5jbHVkZXMgdGhlIGFkZG9uLiBJZiB0aGUgcGFja2FnZSBkb2VzIG5vdCBjb250YWluIGEgYG52" + + "Y2YtdWlgIHJlbGVhc2UKYW5kIGBudmNmVWlgIHJvdXRlIHZhbHVlcywgc2tpcCB0aGUgYWRkb24g" + + "dW50aWwgeW91IHVzZSBhIHBhY2thZ2UgdGhhdCBpbmNsdWRlcwp0aGVtLgoKIyMgRW5hYmxlIHRo" + + "ZSBhZGRvbgoKRW5hYmxlIGl0IGluIGBlbnZpcm9ubWVudHMvPGVudi1uYW1lPi55YW1sYDoKCmBg" + + "YHlhbWwKYWRkb25zOgogIG52Y2ZVaToKICAgIGVuYWJsZWQ6IHRydWUKYGBgCgojIyBDcmVhdGUg" + + "bmFtZXNwYWNlIGFuZCBpbWFnZSBwdWxsIHNlY3JldAoKQ3JlYXRlIHRoZSBuYW1lc3BhY2UsIGFu" + + "ZCBhbiBpbWFnZSBwdWxsIHNlY3JldCBvbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUKcmVn" + + "aXN0cnk6CgpgYGBiYXNoCmt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBudmNmLXVpIC0tZHJ5LXJ1" + + "bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQoKIyBPbmx5IGlmIHB1bGxpbmcg" + + "ZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGUuZy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQ" + + "SV9LRVk9Ijx5b3VyLWtleT4iCmt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkg" + + "bnZjci1jcmVkcyBcCiAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogIC0tZG9ja2VyLXVzZXJu" + + "YW1lPSckb2F1dGh0b2tlbicgXAogIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwK" + + "ICAtLW5hbWVzcGFjZT1udmNmLXVpIFwKICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJl" + + "Y3RsIGFwcGx5IC1mIC0KYGBgCgpUaGUgZGVmYXVsdCByb3V0ZSBob3N0IGlzIGBudmNmLXVpLjxk" + + "b21haW4+YCBhbmQgdGhlIGJhY2tlbmQgaXMKYG52Y2YtdWkubnZjZi11aTo4MzAwYC4KCiMjIEFw" + + "cGx5IHRoZSBzZXJ2aWNlIGFuZCByb3V0ZQoKQWZ0ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBp" + + "bmNsdWRlcyB0aGUgYG52Y2YtdWlgIHJlbGVhc2UsIHByZXZpZXcgYW5kIGFwcGx5CnRoZSBzZXJ2" + + "aWNlIGFuZCByb3V0ZToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUg" + + "LS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgdGVtcGxhdGUKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4g" + + "aGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgc3luYwpIRUxNRklMRV9FTlY9PGVudi1u" + + "YW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBgYAoK" + + "IyMgVmVyaWZ5CgpWZXJpZnkgdGhlIHJvdXRlIG9ubHkgd2hlbiB0aGUgYWRkb24gaXMgcHJlc2Vu" + + "dCBhbmQgZW5hYmxlZDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgZGVwbG95LHN2YyAtbiBudmNmLXVp" + + "Cmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgLWkgbnZjZi11aQpjdXJsIC1pIC1IICJI" + + "b3N0OiBudmNmLXVpLjxkb21haW4+IiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+L3N0YXR1cyIK" + + "YGBgCgojIyBTZWN1cml0eQoKVGhlIE5WQ0YgVUkgYWRtaW4gcGFuZWwgaXMgY3VycmVudGx5IHVu" + + "YXV0aGVudGljYXRlZC4gRG8gbm90IGV4cG9zZSBpdCB0byB0aGUKcHVibGljIGludGVybmV0LiBS" + + "ZXN0cmljdCBhY2Nlc3MgdG8gYSB0cnVzdGVkIG5ldHdvcmssIFZQTiwgb3IgYW4gYXV0aGVudGlj" + + "YXRpbmcKcHJveHkgaW4gZnJvbnQgb2YgdGhlIGBudmNmLXVpYCByb3V0ZS4KUEsHCDj5J6+5BwAA" + + "uQcAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAPgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + + "aW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SIyBJbWFnZSBQ" + + "dWxsIFNlY3JldHMgUmVmZXJlbmNlCgojIyBPdmVydmlldwoKV2hlbiBwdWxsaW5nIE5WQ0YgaW1h" + + "Z2VzIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5IChmb3IgZXhhbXBsZSwgTkdDCmBudmNyLmlvYCks" + + "IEt1YmVybmV0ZXMgbmVlZHMgYGltYWdlUHVsbFNlY3JldHNgIG9uIGV2ZXJ5IHBvZC4gQ29udHJv" + + "bC1wbGFuZSBhbmQKY29tcHV0ZS1wbGFuZSBjcmVkZW50aWFscyBhcmUgY29uZmlndXJlZCBpbiB0" + + "aGVpciBvd24gY2x1c3RlciBjb250ZXh0cy4gRG8gbm90CnVzZSBvbmUgbWl4ZWQgbmFtZXNwYWNl" + + "IGxpc3QuCgpUaGUgcmVjb21tZW5kZWQgY29udHJvbC1wbGFuZSBhcHByb2FjaCB1c2VzIEt5dmVy" + + "bm8gdG8gaW5qZWN0IHRoZSBzZWNyZXQgaW50bwpjb250cm9sLXBsYW5lIHBvZHMgYXQgYWRtaXNz" + + "aW9uIHRpbWUuIFRoZSBjb21wdXRlLXBsYW5lIGNoYXJ0IGFuZCBvcGVyYXRvciB1c2UKdGhlIHNl" + + "Y3JldCBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciBpdCB0byBgbnZjYS1zeXN0ZW1gLgoK" + + "IyMgS3l2ZXJubyBBcHByb2FjaCAoUmVjb21tZW5kZWQpCgojIyMgMS4gSW5zdGFsbCBLeXZlcm5v" + + "CgpgYGBiYXNoCmhlbG0gcmVwbyBhZGQga3l2ZXJubyBodHRwczovL2t5dmVybm8uZ2l0aHViLmlv" + + "L2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUKaGVsbSBpbnN0YWxsIGt5dmVybm8ga3l2ZXJuby9r" + + "eXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUtbmFtZXNwYWNlIFwKICAtLWt1YmUtY29udGV4dCA8" + + "Y29udHJvbC1wbGFuZS1jb250ZXh0PgpgYGAKCiMjIyAyLiBDcmVhdGUgY29udHJvbC1wbGFuZSBw" + + "dWxsIHNlY3JldHMKCmBgYGJhc2gKZXhwb3J0IE5HQ19BUElfS0VZPSI8eW91ci1uZ2MtYXBpLWtl" + + "eT4iCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlz" + + "IGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29udGV4" + + "dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgbmFtZXNwYWNlICIkbnMiIFwKICAgIC0t" + + "ZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5l" + + "LWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQoKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0" + + "cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7" + + "IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gY3JlYXRlIHNl" + + "Y3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZj" + + "ci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2Vy" + + "LXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0t" + + "ZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5l" + + "LWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQpgYGAKCkZvciBub24tTkdDIHJlZ2lzdHJpZXMsIHJl" + + "cGxhY2UgYC0tZG9ja2VyLXNlcnZlcmAsIGAtLWRvY2tlci11c2VybmFtZWAsIGFuZCBgLS1kb2Nr" + + "ZXItcGFzc3dvcmRgLgoKIyMjIDMuIEFwcGx5IEt5dmVybm8gQ2x1c3RlclBvbGljeQoKYGBgeWFt" + + "bAphcGlWZXJzaW9uOiBreXZlcm5vLmlvL3YxCmtpbmQ6IENsdXN0ZXJQb2xpY3kKbWV0YWRhdGE6" + + "CiAgbmFtZTogbnZjZi1hZGQtaW1hZ2VwdWxsc2VjcmV0cwpzcGVjOgogIGJhY2tncm91bmQ6IGZh" + + "bHNlCiAgcnVsZXM6CiAgICAtIG5hbWU6IGFkZC1pbWFnZXB1bGxzZWNyZXQtdG8tbnZjZi1wb2Rz" + + "CiAgICAgIG1hdGNoOgogICAgICAgIGFueToKICAgICAgICAtIHJlc291cmNlczoKICAgICAgICAg" + + "ICAga2luZHM6CiAgICAgICAgICAgIC0gUG9kCiAgICAgICAgICAgIG5hbWVzcGFjZXM6CiAgICAg" + + "ICAgICAgIC0gIm52Y2YiCiAgICAgICAgICAgIC0gImFwaS1rZXlzIgogICAgICAgICAgICAtICJz" + + "aXMiCiAgICAgICAgICAgIC0gImVzcyIKICAgICAgICAgICAgLSAibmF0cy1zeXN0ZW0iCiAgICAg" + + "ICAgICAgIC0gImNhc3NhbmRyYS1zeXN0ZW0iCiAgICAgICAgICAgIC0gInZhdWx0LXN5c3RlbSIK" + + "ICAgICAgICAgICAgLSAiY2VydC1tYW5hZ2VyIgogICAgICBtdXRhdGU6CiAgICAgICAgcGF0Y2hT" + + "dHJhdGVnaWNNZXJnZToKICAgICAgICAgIG1ldGFkYXRhOgogICAgICAgICAgICBhbm5vdGF0aW9u" + + "czoKICAgICAgICAgICAgICBudmNmLm52aWRpYS5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVk" + + "LWJ5OiBreXZlcm5vCiAgICAgICAgICBzcGVjOgogICAgICAgICAgICBpbWFnZVB1bGxTZWNyZXRz" + + "OgogICAgICAgICAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpgYGBiYXNoCmt1YmVjdGwgLS1j" + + "b250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IFwKICAtZiBreXZlcm5vLWltYWdl" + + "cHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAKCiMjIyA0LiBJbnN0YWxsIHRoZSBjb250cm9sIHBs" + + "YW5lCgpDb250aW51ZSB3aXRoIHRoZSBzZWxlY3RlZCBjb250cm9sLXBsYW5lIGluc3RhbGxhdGlv" + + "biBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5z" + + "dGFsbGF0aW9uLm1kKS4gTm8KY29udHJvbC1wbGFuZSBoZWxtZmlsZSBtb2RpZmljYXRpb25zIGFy" + + "ZSBuZWVkZWQuIEt5dmVybm8gaW5qZWN0cyB0aGUgcHVsbApzZWNyZXQgaW50byBuZXcgY29udHJv" + + "bC1wbGFuZSBwb2RzLgoKIyMgQ29tcHV0ZS1QbGFuZSBTZWNyZXQKCkNyZWF0ZSB0aGUgc2VjcmV0" + + "IG9ubHkgaW4gYG52Y2Etb3BlcmF0b3JgIG9uIHRoZSBjb21wdXRlIGNsdXN0ZXI6CgpgYGBiYXNo" + + "Cmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3Bh" + + "Y2UgbnZjYS1vcGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVj" + + "dGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KCmt1YmVjdGwg" + + "LS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJl" + + "Z2lzdHJ5IG52Y3ItY3JlZHMgXAogIC0tZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAtLWRvY2tl" + + "ci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElf" + + "S0VZIiBcCiAgLS1uYW1lc3BhY2U9bnZjYS1vcGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAt" + + "byB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGFw" + + "cGx5IC1mIC0KYGBgCgpSZWZlcmVuY2UgaXQgaW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1l" + + "bnQgZmlsZToKCmBgYHlhbWwKZ2xvYmFsOgogIGltYWdlUHVsbFNlY3JldHM6CiAgICAtIG5hbWU6" + + "IG52Y3ItY3JlZHMKYGBgCgpUaGUgY2hhcnQgYW5kIG9wZXJhdG9yIHVzZSB0aGF0IHJlZmVyZW5j" + + "ZSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciB0aGUKc2VjcmV0IHRvIGBudmNhLXN5c3Rl" + + "bWAuIERvIG5vdCBjcmVhdGUgYSBicm9hZGVyIG1hbnVhbCBjb21wdXRlIG5hbWVzcGFjZSBsaXN0" + + "LiBGb2xsb3cKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShjb21wdXRlLXBsYW5l" + + "LWluc3RhbGxhdGlvbi5tZCkgZm9yIHRoZQpzZWxlY3RlZCBpbnN0YWxsIGZsb3cuCgojIyBWZXJp" + + "ZmljYXRpb24KCmBgYGJhc2gKIyBDaGVjayB0aGF0IGEgY29udHJvbC1wbGFuZSBwb2QgaGFzIHRo" + + "ZSBpbmplY3RlZCBzZWNyZXQKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4" + + "dD4gZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IFwKICAtbyBqc29ucGF0aD0ney5z" + + "cGVjLmltYWdlUHVsbFNlY3JldHN9JwojIEV4cGVjdGVkOiBbeyJuYW1lIjoibnZjci1jcmVkcyJ9" + + "XQoKIyBDaGVjayB0aGUgS3l2ZXJubyBhbm5vdGF0aW9uCmt1YmVjdGwgLS1jb250ZXh0IDxjb250" + + "cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiBcCiAg" + + "LW8ganNvbnBhdGg9J3subWV0YWRhdGEuYW5ub3RhdGlvbnMubnZjZlwubnZpZGlhXC5jb20vaW1h" + + "Z2VwdWxsc2VjcmV0LWluamVjdGVkLWJ5fScKIyBFeHBlY3RlZDoga3l2ZXJubwoKIyBDaGVjayBw" + + "dWxsIGV2ZW50cwprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQg" + + "ZXZlbnRzIC1uIDxuYW1lc3BhY2U+IFwKICAtLXNvcnQtYnk9Jy5sYXN0VGltZXN0YW1wJyB8IGdy" + + "ZXAgLWkgcHVsbAojIFNob3VsZCBzaG93ICJTdWNjZXNzZnVsbHkgcHVsbGVkIiBub3QgIjQwMSBV" + + "bmF1dGhvcml6ZWQiCgojIENoZWNrIHRoZSBjaGFydC9vcGVyYXRvciBtaXJyb3Igb24gdGhlIGNv" + + "bXB1dGUgY2x1c3RlcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBn" + + "ZXQgc2VjcmV0IG52Y3ItY3JlZHMgXAogIC1uIG52Y2Etc3lzdGVtCmBgYAoKIyMgV2hlbiBQdWxs" + + "IFNlY3JldHMgQXJlIE5vdCBOZWVkZWQKCi0gKipBV1MgRUNSIHdpdGggSUFNIG5vZGUgcm9sZXMq" + + "KjogSWYgeW91ciBub2RlcyBoYXZlIGBBbWF6b25FQzJDb250YWluZXJSZWdpc3RyeVJlYWRPbmx5" + + "YCBJQU0gcG9saWN5LCBLdWJlcm5ldGVzIGNhbiBwdWxsIGZyb20gRUNSIHdpdGhvdXQgZXhwbGlj" + + "aXQgc2VjcmV0cy4KLSAqKlB1YmxpYyByZWdpc3RyaWVzKio6IE5vIHB1bGwgc2VjcmV0cyBuZWVk" + + "ZWQuCi0gKipDU1AgYnVpbHQtaW4gY3JlZGVudGlhbCBoZWxwZXJzKio6IEdLRSBBcnRpZmFjdCBS" + + "ZWdpc3RyeSwgQXp1cmUgQUNSIHdpdGggbWFuYWdlZCBpZGVudGl0eSwgYW5kIHNpbWlsYXIgc2Vy" + + "dmljZXMuCgojIyBUcm91Ymxlc2hvb3RpbmcKCiMjIyBQb2RzIHN0aWxsIGluIEltYWdlUHVsbEJh" + + "Y2tPZmYgYWZ0ZXIgYXBwbHlpbmcgcG9saWN5CgpUaGUgS3l2ZXJubyBwb2xpY3kgb25seSBhZmZl" + + "Y3RzIHBvZHMgY3JlYXRlZCAqKmFmdGVyKiogdGhlIHBvbGljeSBpcyBhcHBsaWVkLiBEZWxldGUg" + + "c3R1Y2sgcG9kcyB0byB0cmlnZ2VyIHJlY3JlYXRpb246CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250" + + "ZXh0IDx0YXJnZXQtY29udGV4dD4gZGVsZXRlIHBvZHMgLW4gPG5hbWVzcGFjZT4gLS1hbGwKYGBg" + + "CgojIyMgS3l2ZXJubyBhZG1pc3Npb24gY29udHJvbGxlciBub3QgcnVubmluZwoKYGBgYmFzaApr" + + "dWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgcG9kcyAtbiBreXZl" + + "cm5vCiMgQWxsIHBvZHMgc2hvdWxkIGJlIFJ1bm5pbmcKYGBgCgojIyMgUG9saWN5IG5vdCBtYXRj" + + "aGluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBn" + + "ZXQgY2x1c3RlcnBvbGljeSBudmNmLWFkZC1pbWFnZXB1bGxzZWNyZXRzCiMgU2hvdWxkIHNob3cg" + + "UkVBRFk6IFRydWUKYGBgCgojIyMgV3Jvbmcgc2VjcmV0IG5hbWUKClRoZSBwb2xpY3kgcmVmZXJl" + + "bmNlcyBgbnZjci1jcmVkc2AuIFZlcmlmeSB0aGUgc2VjcmV0IGV4aXN0cyB3aXRoIHRoYXQgZXhh" + + "Y3QgbmFtZToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPHRhcmdldC1jb250ZXh0PiBnZXQg" + + "c2VjcmV0IG52Y3ItY3JlZHMgLW4gPG5hbWVzcGFjZT4KYGBgClBLBwhLQjWoABYAAAAWAABQSwEC" + + "FAAUAAgAAAAAACEACoXw2EoQAABKEAAAEgAJAAAAAAAAAAAAAAAAAAAAZGF0YS9tYW5pZmVzdC5q" + + "c29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAP9282dTYQAAU2EAACMACQAAAAAAAAAAAAAAkxAA" + + "AGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAA" + + "AAAhAJn2DaXdDQAA3Q0AADMACQAAAAAAAAAAAAAAQHIAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + + "Y2xpL2V4YW1wbGVzL2NpLXBpcGVsaW5lcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQChFOOB" + + "XQwAAF0MAAA0AAkAAAAAAAAAAAAAAIeAAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9leGFt" + + "cGxlcy9tdWx0aS1jbHVzdGVyLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEInSQ8FDQAABQ0A" + + "ADcACQAAAAAAAAAAAAAAT40AAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvYWRk" + + "LWNvbXB1dGUtcGxhbmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA1N6NNJ8ZAACfGQAAOQAJ" + + "AAAAAAAAAAAAAADCmgAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9jcmVhdGUt" + + "YW5kLXJ1bi10YXNrLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhANJD3AQYJQAAGCUAADcACQAA" + + "AAAAAAAAAAAA0bQAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvZGVwbG95LWFu" + + "ZC1pbnZva2UubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAcpIsJr4OAAC+DgAAPQAJAAAAAAAA" + + "AAAAAABX2gAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9kaWFnbm9zZS1mYWls" + + "ZWQtaW5zdGFsbC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBCceYeASgAAAEoAAA6AAkAAAAA" + + "AAAAAAAAAInpAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2luc3RhbGwtZnJv" + + "bS1zY3JhdGNoLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAKrhOrnIBwAAyAcAADkACQAAAAAA" + + "AAAAAAAA+xEBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvcm90YXRlLWNsdXN0" + + "ZXItandrcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQDah2NW5CEAAOQhAAAuAAkAAAAAAAAA" + + "AAAAADMaAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3RlYXJkb3duLm1kVVQF" + + "AAEAps4SUEsBAhQAFAAIAAAAAAAhAHIND2QhIwAAISMAADAACQAAAAAAAAAAAAAAfDwBAGRhdGEv" + + "bnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9jb21tYW5kcy5tZFVUBQABAKbOElBLAQIU" + + "ABQACAAAAAAAIQBGrnbwDAgAAAwIAAAyAAkAAAAAAAAAAAAAAARgAQBkYXRhL252Y2Ytc2VsZi1t" + + "YW5hZ2VkLWNsaS9yZWZlcmVuY2UvZXhpdC1jb2Rlcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAA" + + "IQCsTIqjyzIAAMsyAAAtAAkAAAAAAAAAAAAAAHloAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNs" + + "aS9yZWZlcmVuY2UvZmxhZ3MubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA864ThHQRAAB0EQAA" + + "NwAJAAAAAAAAAAAAAAComwEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL3Ry" + + "b3VibGVzaG9vdGluZy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQARwxSTSWIAAEliAAAsAAkA" + + "AAAAAAAAAAAAAIqtAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5t" + + "ZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBHVWpWSlYAAEpWAAA0AAkAAAAAAAAAAAAAADYQAgBk" + + "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9ldmFscy9ldmFscy5qc29uVVQFAAEA" + + "ps4SUEsBAhQAFAAIAAAAAAAhAAJSTkB/KAAAfygAAC8ACQAAAAAAAAAAAAAA62YCAGRhdGEvbnZj" + + "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL2V4YW1wbGVzLm1kVVQFAAEAps4SUEsBAhQAFAAI" + + "AAAAAAAhAJZjvFkSMAAAEjAAAEwACQAAAAAAAAAAAAAA0I8CAGRhdGEvbnZjZi1zZWxmLW1hbmFn" + + "ZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWRV" + + "VAUAAQCmzhJQSwECFAAUAAgAAAAAACEAtXpwO7UwAAC1MAAAOwAJAAAAAAAAAAAAAABlwAIAZGF0" + + "YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRV" + + "VAUAAQCmzhJQSwECFAAUAAgAAAAAACEAExHsjQoqAAAKKgAARAAJAAAAAAAAAAAAAACM8QIAZGF0" + + "YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1" + + "Y3R1cmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAOPknr7kHAAC5BwAAPwAJAAAAAAAAAAAA" + + "AAARHAMAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9udmNm" + + "LXVpLWFkZG9uLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEtCNagAFgAAABYAAD4ACQAAAAAA" + + "AAAAAAAAQCQDAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMv" + + "cHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SUEsFBgAAAAAXABcArwkAALU6AwAAAA==" var ( skillDataOnce sync.Once diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index 3bc0a496a6..b6f15278d9 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -111,15 +111,19 @@ func TestRunClusterValidator_EmptyImage(t *testing.T) { assert.Empty(t, client.Actions(), "no API calls should be made when input validation fails") } -func TestClusterValidatorCheck_OrchestratorErrorStaysWarning(t *testing.T) { +// A validator that could not run checked nothing, so it fails the run rather +// than letting a readiness gate pass. The message names the opt-out. +func TestClusterValidatorCheck_OrchestratorErrorFails(t *testing.T) { cv := func(_ context.Context, _ ClusterValidatorParams) ClusterValidatorResult { - return ClusterValidatorResult{Err: fmt.Errorf("transient: API server unreachable")} + return ClusterValidatorResult{Err: fmt.Errorf("bootstrapping validator RBAC: forbidden")} } r := clusterValidatorCheck(cv, "", "", "", false, "", nil, nil).Run(context.Background()) assert.False(t, r.Passed) - assert.Equal(t, "warning", r.Severity, - "transient orchestrator failures should not fail the overall preflight") + assert.Equal(t, SeverityError, r.Severity) + assert.True(t, r.IsBlockingFailure()) assert.Contains(t, r.Message, "cluster-validator did not complete") + assert.Contains(t, r.Message, "forbidden") + assert.Contains(t, r.Message, "--skip-cluster-validation") } // driveJobToSuccess wires the reactors that make a created Job reach a diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index 7b2c6b1f35..777621095d 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -622,8 +622,10 @@ func nodeInotifyCheck(prober NodeInotifyProber, kubeContext string) binaryCheckS } } -// clusterValidatorCheck runs the validator Job. Runner errors (RBAC/timeout) -// are warning severity; validator failures are error. role selects the check +// clusterValidatorCheck runs the validator Job. A validator that could not run +// (RBAC denied, image pull failure, timeout) is an error like a validator +// failure: nothing was checked, and a readiness gate must not pass on that. +// --skip-cluster-validation is the explicit opt-out. role selects the check // set via VALIDATOR_ROLE; registries extends the ConfigMap reachability list. func clusterValidatorCheck( cv ClusterValidator, kubeContext, image, pullSecret string, noCleanup bool, role string, @@ -656,8 +658,9 @@ func clusterValidatorCheck( } if result.Err != nil { - r.Severity = SeverityWarning - r.Message = "cluster-validator did not complete: " + result.Err.Error() + r.Severity = SeverityError + r.Message = "cluster-validator did not complete, so the cluster was not validated: " + + result.Err.Error() + "; fix the cause, or pass --skip-cluster-validation to run without it" r.Err = result.Err return r } From 2672f1e4177f8e22bbdd027e8297b438a9fb9cd7 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 30 Sep 2026 05:09:38 +0530 Subject: [PATCH 48/55] fix(nvcf-cli): bound the validator cleanup sweeps and end an interrupted check with a cancelled final event Signed-off-by: rohithb --- .../reference/exit-codes.md | 2 +- src/clis/nvcf-cli/cmd/self_hosted_check.go | 13 +- .../cmd/self_hosted_check_scope_test.go | 5 +- .../agentskill/skilldata_generated.go | 4277 +++++++++-------- .../nvcf-cli/internal/selfhosted/BUILD.bazel | 1 + .../internal/selfhosted/clustervalidator.go | 22 +- .../clustervalidator_lifecycle_test.go | 63 + .../selfhosted/progress/render_tty.go | 5 + .../selfhosted/progress/render_tty_test.go | 19 + 9 files changed, 2262 insertions(+), 2145 deletions(-) diff --git a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/exit-codes.md b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/exit-codes.md index 6b17b56cc3..a08c0e050b 100644 --- a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/exit-codes.md +++ b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/exit-codes.md @@ -24,4 +24,4 @@ Stable across subcommands. Use these to drive agent retry / surfacing logic. ## Where to find more detail -`check` reports its outcome in one `final` event (`success`, `verdict`, `failedCount`) and never emits `phase_failed`; see `examples/ci-pipelines.md`. Every other non-zero exit emits a structured `phase_failed` JSON event with `errCategory`, `errMessage`, `remediation` (array), `retryClass` (enum: `none|immediate|backoff|after_remediation|unknown`), `retryAfterSec` (int, optional), and `raw` (subprocess + HTTP + Kubernetes signal). Always consume these in `--json` mode rather than parsing English from stderr. +`check` reports its outcome in one `final` event (`success`, `verdict`, `failedCount`) and never emits `phase_failed`; see `examples/ci-pipelines.md`. A cancellation (exit `130`) emits `final` with `cancelled: true` instead of `phase_failed`; `up` emits `phase_cancelled` before it. Every other non-zero exit emits a structured `phase_failed` JSON event with `errCategory`, `errMessage`, `remediation` (array), `retryClass` (enum: `none|immediate|backoff|after_remediation|unknown`), `retryAfterSec` (int, optional), and `raw` (subprocess + HTTP + Kubernetes signal). Always consume these in `--json` mode rather than parsing English from stderr. diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index 9bd79e32f5..979b42b29b 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -267,6 +267,13 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { if starter, ok := sink.(interface{ Start() }); ok { starter.Start() } + // An interrupted run still ends the stream with a final event, marked + // cancelled as up marks its own, so a --json consumer is not left waiting + // for one. Emitted on a fresh ctx: the run's ctx is already cancelled. + exitInterrupted := func() error { + _ = sink.Emit(context.Background(), progress.Final{Cancelled: true}) + return &ExitCodeError{Code: 130, Msg: "interrupted"} + } var lastResults []selfhosted.CheckResult @@ -292,7 +299,7 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { // Single-shot mode. lastResults = runOnce() if interrupted() { - return &ExitCodeError{Code: 130, Msg: "interrupted"} + return exitInterrupted() } emitCheckFinal(ctx, sink, lastResults) maybeShowClusterValidatorLogs(c.ErrOrStderr(), lastResults) @@ -315,7 +322,7 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { for { lastResults = runOnce() if interrupted() { - return &ExitCodeError{Code: 130, Msg: "interrupted"} + return exitInterrupted() } if !anyFailed(lastResults) { emitCheckFinal(ctx, sink, lastResults) @@ -332,7 +339,7 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { // continue polling case <-ctx.Done(): if interrupted() { - return &ExitCodeError{Code: 130, Msg: "interrupted"} + return exitInterrupted() } return ctx.Err() } diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go index a949b8fd6b..a26741fd0d 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go @@ -115,7 +115,8 @@ func TestCheck_InterruptExits130(t *testing.T) { t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") ctx, cancel := context.WithCancel(context.Background()) cancel() - rootCmd.SetErr(&bytes.Buffer{}) + var stderr bytes.Buffer + rootCmd.SetErr(&stderr) rootCmd.SetOut(&bytes.Buffer{}) t.Cleanup(func() { rootCmd.SetErr(nil); rootCmd.SetOut(nil) }) // Cobra keeps a subcommand's context from an earlier Execute, so set it @@ -128,4 +129,6 @@ func TestCheck_InterruptExits130(t *testing.T) { var exitErr *ExitCodeError require.ErrorAs(t, err, &exitErr) assert.Equal(t, 130, exitErr.Code) + assert.Regexp(t, `"event":"final".*"cancelled":true`, stderr.String(), + "the JSON stream still ends with a final event, marked cancelled") } diff --git a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go index 7c81b16cb3..4517574a0f 100644 --- a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go +++ b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go @@ -31,7 +31,7 @@ import ( const skillDataZipBase64 = "" + "UEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAASAAkAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4S" + "ewogICJzY2hlbWFWZXJzaW9uIjogMSwKICAiZ2VuZXJhdGVkQXQiOiAiMTk3MC0wMS0wMVQwMDow" + - "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDQ5ODgsCiAgImZp" + + "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDUxMjAsCiAgImZp" + "bGVzIjogWwogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvU0tJTEwu" + "bWQiLAogICAgICAic2hhMjU2IjogImFhOWY3ZTI0NmYzODA0YjMzNDNiNjU2MWU1YmNmZTdiYjcy" + "YjI0MDIxOTMzZTA0OWY4NWUwMDI4OTAzYmJmYTQiLAogICAgICAic2l6ZSI6IDI0OTE1CiAgICB9" + @@ -68,9 +68,9 @@ const skillDataZipBase64 = "" + "b21tYW5kcy5tZCIsCiAgICAgICJzaGEyNTYiOiAiMmI0YjAzNmU3NTA3MDZiOWUzYjgxZmNkNjAy" + "YzcwNmY3NGY3N2Y2MjQwZmI3YWFkNjIwYzg3OWZmNzQ5NmNkOCIsCiAgICAgICJzaXplIjogODk5" + "MwogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVy" + - "ZW5jZS9leGl0LWNvZGVzLm1kIiwKICAgICAgInNoYTI1NiI6ICJiMzkyNTFlYjMyZmRmNmFjMzBl" + - "NDBmMzRmYjQ0OGJiZDI4Y2UxYWE5NjZjY2JlMDg3ZDhmNjA5Zjg0N2Q3OGI3IiwKICAgICAgInNp" + - "emUiOiAyMDYwCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1j" + + "ZW5jZS9leGl0LWNvZGVzLm1kIiwKICAgICAgInNoYTI1NiI6ICI4YmUxYzcxMjYwYWYzNWUwYjNi" + + "Mzc2NWYzZjA3MTU2Zjg2ZjIzNmE2MzdhYTZjZGViZTgzOGQ0ZTkxYWI4OTVhIiwKICAgICAgInNp" + + "emUiOiAyMTkyCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1j" + "bGkvcmVmZXJlbmNlL2ZsYWdzLm1kIiwKICAgICAgInNoYTI1NiI6ICI2OTVkMjEzOGUxYzA2OWM5" + "ZDA1ZjMyNjU5ZWUyMWMyNWEyY2YyMjRhMWE2ZjhiMjkyYWIwYTQwMTliZThjNDBlIiwKICAgICAg" + "InNpemUiOiAxMzAwMwogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + @@ -103,7 +103,7 @@ const skillDataZipBase64 = "" + "aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9wdWxsLXNlY3Jl" + "dHMubWQiLAogICAgICAic2hhMjU2IjogImVjMWYzZmZjZDE3ZTVmOTU4M2ZlZTM5NzQ0ZWU4OTdk" + "NDY2YmMzY2Y2Mzg5Mjk0MjY0ZDg5ZTdmOWVkMDFiODciLAogICAgICAic2l6ZSI6IDU2MzIKICAg" + - "IH0KICBdCn0KUEsHCAqF8NhKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + + "IH0KICBdCn0KUEsHCAeNqUdKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + "dGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQFAAEAps4SLS0tCm5hbWU6IG52Y2Yt" + "c2VsZi1tYW5hZ2VkLWNsaQpkZXNjcmlwdGlvbjogfAogIEluc3RhbGwsIG9wZXJhdGUsIGFuZCB0" + "ZWFyIGRvd24gc2VsZi1ob3N0ZWQgTlZJRElBIENsb3VkIEZ1bmN0aW9ucyAoTlZDRikKICBkZXBs" + @@ -1641,2151 +1641,2154 @@ const skillDataZipBase64 = "" + "bmcuIHwKCiMjIFdoZXJlIHRvIGZpbmQgbW9yZSBkZXRhaWwKCmBjaGVja2AgcmVwb3J0cyBpdHMg" + "b3V0Y29tZSBpbiBvbmUgYGZpbmFsYCBldmVudCAoYHN1Y2Nlc3NgLCBgdmVyZGljdGAsIGBmYWls" + "ZWRDb3VudGApIGFuZCBuZXZlciBlbWl0cyBgcGhhc2VfZmFpbGVkYDsgc2VlIGBleGFtcGxlcy9j" + - "aS1waXBlbGluZXMubWRgLiBFdmVyeSBvdGhlciBub24temVybyBleGl0IGVtaXRzIGEgc3RydWN0" + - "dXJlZCBgcGhhc2VfZmFpbGVkYCBKU09OIGV2ZW50IHdpdGggYGVyckNhdGVnb3J5YCwgYGVyck1l" + - "c3NhZ2VgLCBgcmVtZWRpYXRpb25gIChhcnJheSksIGByZXRyeUNsYXNzYCAoZW51bTogYG5vbmV8" + - "aW1tZWRpYXRlfGJhY2tvZmZ8YWZ0ZXJfcmVtZWRpYXRpb258dW5rbm93bmApLCBgcmV0cnlBZnRl" + - "clNlY2AgKGludCwgb3B0aW9uYWwpLCBhbmQgYHJhd2AgKHN1YnByb2Nlc3MgKyBIVFRQICsgS3Vi" + - "ZXJuZXRlcyBzaWduYWwpLiBBbHdheXMgY29uc3VtZSB0aGVzZSBpbiBgLS1qc29uYCBtb2RlIHJh" + - "dGhlciB0aGFuIHBhcnNpbmcgRW5nbGlzaCBmcm9tIHN0ZGVyci4KUEsHCEaudvAMCAAADAgAAFBL" + - "AwQUAAgAAAAAACEAAAAAAAAAAAAAAAAALQAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Jl" + - "ZmVyZW5jZS9mbGFncy5tZFVUBQABAKbOEiMgYG52Y2YtY2xpYCBmbGFnIHJlZmVyZW5jZQoKIyMg" + - "R2xvYmFsIGZsYWdzIChldmVyeSBzdWJjb21tYW5kKQoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1" + - "bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tY29uZmlnIEZJTEVgIHwgQ29uZmlnIGZpbGUgcGF0aCB8" + - "IGAkSE9NRS8ubnZjZi1jbGkueWFtbGAgfAp8IGAtLWRlYnVnYCB8IFZlcmJvc2UgSFRUUCBsb2dn" + - "aW5nIG9uIHN0ZGVyciB8IGBmYWxzZWAgfAp8IGAtLWpzb25gIHwgSlNPTkwgZXZlbnRzIG9uIHN0" + - "ZGVyciB8IGF1dG8gKG9mZiBpbiBUVFksIG9uIHVuZGVyIGAtLW5vbi1pbnRlcmFjdGl2ZWApIHwK" + - "CiMjIGBzZWxmLWhvc3RlZGAgcGFyZW50IChwZXJzaXN0ZW50IGFjcm9zcyBzdWJjb21tYW5kcykK" + - "CnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNvbnRyb2wt" + - "cGxhbmUtc3RhY2s94oCmYCB8IENvbnRyb2wtcGxhbmUgYnVuZGxlIHNvdXJjZTogbG9jYWwgcGF0" + - "aCwgZ2l0IFVSTCwgb3IgYG9jaTovL2AgVVJMIHwgZW1iZWRkZWQgT0NJIFVSTCBwaW5uZWQgYnkg" + - "Q0xJIHZlcnNpb24gfAp8IGAtLWNvbXB1dGUtcGxhbmUtc3RhY2s94oCmYCB8IENvbXB1dGUtcGxh" + - "bmUgYnVuZGxlIHNvdXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwgb3IgYG9jaTovL2AgVVJMIHwg" + - "ZW1iZWRkZWQgT0NJIFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24gfAp8IGAtLWVudj1sb2NhbFx8" + - "cHJkXHzigKZgIHwgSGVsbWZpbGUgZW52aXJvbm1lbnQgbmFtZSB8IGBsb2NhbGAgZm9yIGRldiBi" + - "dWlsZHMsIGBwcmRgIGZvciByZWxlYXNlcyB8CnwgYC0tbm9uLWludGVyYWN0aXZlYCB8IERpc2Fi" + - "bGUgYWxsIHN0ZGluIHByb21wdHMgfCBgZmFsc2VgIHwKfCBgLS10b2tlbj0kSldUYCB8IEFkbWlu" + - "IEpXVCwgb3ZlcnJpZGVzIHN0b3JlZCBzZXNzaW9uIHwgLSB8CnwgYC0tbm8tYXBwbHlgIHwgYGlu" + - "c3RhbGxgIG9ubHkgLSBlbWl0IFlBTUwsIGRvIG5vdCBrdWJlY3RsIGFwcGx5IHwgYGZhbHNlYCB8" + - "CnwgYC0tb3V0cHV0PXRleHRcfGpzb25gIHwgTGVnYWN5IGFsaWFzIGZvciBgLS1qc29uYCAoZGVw" + - "cmVjYXRlZCwgcmVtb3ZlZCBpbiBuZXh0IG1ham9yKSB8IGB0ZXh0YCB8CnwgYC0tcGxhaW5gIHwg" + - "Rm9yY2UgcGxhaW4gc3RyZWFtaW5nIG91dHB1dCB8IGF1dG8tZGV0ZWN0IHwKfCBgLS13YWl0IERV" + - "UkFUSU9OYCB8IGBjaGVja2Agb25seTsgYmxvY2sgdW50aWwgcGFzcyB8IC0gfAp8IGAtLWNvbnRy" + - "b2wtcGxhbmUtY29udGV4dCBDVFhgIHwga3ViZWN0bCBjb250ZXh0IGZvciBjb250cm9sIHBsYW5l" + - "IChSRVEtMjApIHwgY3VycmVudCBjb250ZXh0IHwKfCBgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQg" + - "Q1RYYCB8IGt1YmVjdGwgY29udGV4dCBmb3IgY29tcHV0ZSBwbGFuZSAoUkVRLTIwKSB8IGN1cnJl" + - "bnQgY29udGV4dCB8CnwgYC0taWNtcy11cmwgVVJMYCB8IFB1YmxpYyBJQ01TIFVSTDsgcmVxdWly" + - "ZWQgd2hlbiBjb250ZXh0cyBkaWZmZXIgfCBkZXJpdmVkIGZyb20gYGJhc2VfaHR0cF91cmxgIHwK" + - "fCBgLS1sb2NhbC1vbmx5YCB8IGBjaGVja2Agb25seTsgcnVuIHRoZSBsb2NhbC1ob3N0IGNoZWNr" + - "cyBhbmQgc2tpcCBhbGwga3ViZWN0bCBjb250YWN0LCB3aGF0ZXZlciBzY29wZSBmbGFnIGlzIHBh" + - "c3NlZC4gVGhlIENMSSBwcmludHMgYSBub3RlIHNheWluZyBzby4gRW52OiBgTlZDRl9DTElfU0VM" + - "RkhPU1RFRF9MT0NBTF9PTkxZYCB8IGBmYWxzZWAgfAoKIyMgYGNoZWNrYC1zcGVjaWZpYwoKQXQg" + - "bGVhc3Qgb25lIG9mIGAtLXByZWAsIGAtLWNvbnRyb2wtcGxhbmVgLCBgLS1jb21wdXRlLXBsYW5l" + - "YCwgb3IgYC0tYWxsYCBpcwpyZXF1aXJlZC4gRWFjaCBzZWxlY3RzIGEgcm9sZTsgb25seSB0aGUg" + - "c2VsZWN0ZWQgcm9sZXMgY29udGFjdCBhIGNsdXN0ZXIuCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVm" + - "YXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1wcmVgIHwgUHJlLWZsaWdodDogbG9jYWwtaG9zdCB0" + - "b29scyBwbHVzIGNsdXN0ZXIgcmVhZGluZXNzLiBTa2lwcyBTSVMgcmVhY2hhYmlsaXR5LCBzaW5j" + - "ZSBTSVMgaXMgbm90IGluc3RhbGxlZCB5ZXQsIHVubGVzcyBgLS1hbGxgIG9yIGAtLWNvbXB1dGUt" + - "cGxhbmVgIGlzIGFsc28gcGFzc2VkIHwgYGZhbHNlYCB8CnwgYC0tY29udHJvbC1wbGFuZWAgfCBD" + - "b250cm9sLXBsYW5lIGNoZWNrcyB8IGBmYWxzZWAgfAp8IGAtLWNvbXB1dGUtcGxhbmVgIHwgQ29t" + - "cHV0ZS1wbGFuZSBjaGVja3MgfCBgZmFsc2VgIHwKfCBgLS1hbGxgIHwgRXZlcnkgY2F0ZWdvcnks" + - "IGluY2x1ZGluZyBTSVMgcmVhY2hhYmlsaXR5IHdoZW4gY29tYmluZWQgd2l0aCBgLS1wcmVgIHwg" + - "YGZhbHNlYCB8CnwgYC0tY2x1c3Rlci1uYW1lIE5BTUVgIHwgQ2x1c3RlciBuYW1lIGZvciBjb21w" + - "dXRlLXBsYW5lIGNoZWNrcyB8IC0gfAp8IGAtLXNraXAtaW5vdGlmeS1jaGVja2AgfCBTa2lwIHRo" + - "ZSBwZXItbm9kZSBpbm90aWZ5LWxpbWl0cyBwcm9iZS4gTmVlZGVkIHdoZW4gdGhlIGt1YmVjb25m" + - "aWcgdXNlciBjYW5ub3QgY3JlYXRlIHBvZHMgaW4gYGRlZmF1bHRgLiBFbnY6IGBOVkNGX0NMSV9T" + - "RUxGSE9TVEVEX1NLSVBfSU5PVElGWWAgfCBgZmFsc2VgIHwKCiMjIyBDbHVzdGVyLXZhbGlkYXRv" + - "ciBmbGFncwoKVGhlIHZhbGlkYXRvciBydW5zIGFzIGEgSm9iIGluIHRoZSBjbHVzdGVyIGJlaW5n" + - "IGNoZWNrZWQuIFRoZSBDTEkgY3JlYXRlcyBhClNlcnZpY2VBY2NvdW50LCBDbHVzdGVyUm9sZSwg" + - "YW5kIENsdXN0ZXJSb2xlQmluZGluZyBmb3IgaXQgYW5kIHJlbW92ZXMgdGhlbQphZnRlciB0aGUg" + - "cnVuLCBzbyB0aGUga3ViZWNvbmZpZyBjb250ZXh0IG5lZWRzIHBlcm1pc3Npb24gdG8gbWFuYWdl" + - "IHRob3NlLgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0t" + - "Y2x1c3Rlci12YWxpZGF0b3ItaW1hZ2UgUkVGYCB8IFZhbGlkYXRvciBpbWFnZS4gUmVzb2x1dGlv" + - "biBvcmRlcjogZmxhZywgYE5WQ0ZfQ0xJX0NMVVNURVJfVkFMSURBVE9SX0lNQUdFYCwgY29uZmln" + - "IGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfaW1hZ2VgLiBBIHJlZiB3aXRoIG5vIHRhZyBkaXNjb3Zl" + - "cnMgdGhlIGxhdGVzdCBzdGFibGUgdGFnIGZyb20gdGhlIHJlZ2lzdHJ5LiBVbnNldCBldmVyeXdo" + - "ZXJlIHNraXBzIHRoZSBwcm9iZSB3aXRoIGEgd2FybmluZyB8IC0gfAp8IGAtLWNsdXN0ZXItdmFs" + - "aWRhdG9yLXJlZ2lzdHJpZXMgaG9zdDpwb3J0LC4uLmAgfCBFeHRyYSByZWdpc3RyaWVzIHRoZSBj" + - "b250cm9sLXBsYW5lIHZhbGlkYXRvciBwcm9iZXMgZm9yIHJlYWNoYWJpbGl0eS4gVGhleSBhcmUg" + - "YWRkZWQgdG8gdGhlIHJlZ2lzdHJpZXMgdGhlIGluc3RhbGwgcHVsbHMgZnJvbTogdGhlIHZhbGlk" + - "YXRvciBpbWFnZSdzIHJlZ2lzdHJ5LCB0aGUgc3RhY2sncyBgZ2xvYmFsLmltYWdlLnJlZ2lzdHJ5" + - "YCwgYW5kIGBxdWF5LmlvYCBmb3IgdGhlIGNlcnQtbWFuYWdlciBBQ01FIHNvbHZlciB1bmxlc3Mg" + - "dGhlIHN0YWNrIHNldHMgYGNlcnRNYW5hZ2VyLmFjbWVzb2x2ZXIuaW1hZ2VgLiBgbnZjci5pb2Ag" + - "aXMgcHJvYmVkLCBhcyBub24tY3JpdGljYWwsIG9ubHkgd2hlbiBuZWl0aGVyIHRoZSBpbWFnZSBu" + - "b3IgdGhlIHN0YWNrIG5hbWVzIGEgcmVnaXN0cnkuIFJlcGVhdGFibGUgb3IgY29tbWEtc2VwYXJh" + - "dGVkLiBFbnY6IGBOVkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9SRUdJU1RSSUVTYDsgY29uZmln" + - "IGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfcmVnaXN0cmllc2AgfCAtIHwKfCBgLS1jbHVzdGVyLXZh" + - "bGlkYXRvci1wcm9iZS1pbWFnZSBSRUZgIHwgSW1hZ2UgZm9yIHRoZSBjb250cm9sLXBsYW5lIHZh" + - "bGlkYXRvcidzIG5vZGUtdG8tbm9kZSBvdmVybGF5IHByb2JlLiBOZWVkcyBgc2hgIGFuZCBhIGJ1" + - "c3lib3gtc3R5bGUgYG5jYC4gU2V0IGEgbWlycm9yIGZvciBhaXItZ2FwcGVkIGNsdXN0ZXJzLiBF" + - "bnY6IGBOVkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9QUk9CRV9JTUFHRWA7IGNvbmZpZyBrZXkg" + - "YGNsdXN0ZXJfdmFsaWRhdG9yX3Byb2JlX2ltYWdlYCB8IGBidXN5Ym94OjEuMzZgIGZyb20gRG9j" + - "a2VyIEh1YiB8CnwgYC0tY2x1c3Rlci12YWxpZGF0b3ItcHVsbC1zZWNyZXQgTkFNRWAgfCBkb2Nr" + - "ZXItcmVnaXN0cnkgU2VjcmV0IGluIGBkZWZhdWx0YCB1c2VkIHRvIHB1bGwgdGhlIHZhbGlkYXRv" + - "ciBpbWFnZS4gV2hlbiBlbXB0eSwgdGhlIENMSSBsb29rcyBmb3Igb25lIGluIHRoZSBOVkNGIG5h" + - "bWVzcGFjZXMgYW5kIGNvcGllcyBpdCBpbnRvIGBkZWZhdWx0YCBmb3IgdGhlIHJ1bi4gRmFpbGlu" + - "ZyB0aGF0LCBhbmQgb25seSBmb3IgYW4gaW1hZ2Ugb24gYW4gTkdDIHJlZ2lzdHJ5LCBpdCBtaW50" + - "cyBvbmUgZnJvbSBgTkdDX0FQSV9LRVlgIHwgYXV0by1kZXRlY3QgfAp8IGAtLXNraXAtY2x1c3Rl" + - "ci12YWxpZGF0aW9uYCB8IFNraXAgdGhlIGluLWNsdXN0ZXIgdmFsaWRhdG9yIHByb2JlIGVudGly" + - "ZWx5LiBBIHZhbGlkYXRvciB0aGF0IGlzIGNvbmZpZ3VyZWQgYnV0IGNhbm5vdCBydW4gZmFpbHMg" + - "dGhlIGNoZWNrLCBzbyB1c2UgdGhpcyB0byBvcHQgb3V0IGV4cGxpY2l0bHksIGZvciBleGFtcGxl" + - "IHdoZW4gdGhlIGNsdXN0ZXIgY2Fubm90IHB1bGwgdGhlIGltYWdlLiBFbnY6IGBOVkNGX0NMSV9T" + - "RUxGSE9TVEVEX1NLSVBfQ0xVU1RFUl9WQUxJREFUSU9OYCB8IGBmYWxzZWAgfAp8IGAtLW5vLWNs" + - "ZWFudXBgIHwgS2VlcCB0aGUgdmFsaWRhdG9yIEpvYiwgaXRzIHBvZCwgUkJBQywgcHVsbCBzZWNy" + - "ZXQgYW5kIENvbmZpZ01hcCBmb3IgZGVidWdnaW5nLiBBIGxhdGVyIGNoZWNrIHJlY2xhaW1zIHRo" + - "ZW0gYWZ0ZXIgMjQgaG91cnM7IHRoZSByZXN1bHQgcHJpbnRzIHRoZSBga3ViZWN0bCBkZWxldGVg" + - "IGNvbW1hbmQgdGhhdCByZW1vdmVzIHRoZW0gbm93IHwgYGZhbHNlYCB8CnwgYC0tc2hvdy1sb2dz" + - "YCB8IFByaW50IHRoZSB2YWxpZGF0b3IgdHJhbnNjcmlwdCB0byBzdGRlcnIgYWZ0ZXIgdGhlIGNo" + - "ZWNrIGV2ZW50cy4gVGhlIHRyYW5zY3JpcHQgaXMgbm90IEpTT04sIGFuZCBgLS1qc29uYCBhbHNv" + - "IHdyaXRlcyB0byBzdGRlcnIsIHNvIGxlYXZlIHRoaXMgb2ZmIHdoZW4gYSBwYXJzZXIgaXMgcmVh" + - "ZGluZyB0aGUgc3RyZWFtIHwgYGZhbHNlYCB8CgojIyBgdXBgLXNwZWNpZmljCgp8IEZsYWcgfCBQ" + - "dXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1jbHVzdGVyLW5hbWUgTkFNRWAg" + - "fCBJQ01TIGNsdXN0ZXIgcm93IGlkZW50aWZpZXIgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLW5jYS1p" + - "ZCBJRGAgfCBOQ0EgYWNjb3VudCBJRCB8IGBudmNmLWRlZmF1bHRgIHwKfCBgLS1yZWdpb24gUkVH" + - "SU9OYCB8IENsdXN0ZXIgcmVnaW9uIHwgYHVzLXdlc3QtMWAgfAp8IGAtLXBsYW4tb25seWAgfCBE" + - "cnktcnVuOyBlbWl0IHBoYXNlIHBsYW4gKyBFVEFzIHdpdGhvdXQgY2hhbmdlcyB8IGBmYWxzZWAg" + - "fAoKIyMgYHN0YXR1c2Atc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0t" + - "LXwtLS18LS0tfAp8IGAtLWNsdXN0ZXItbmFtZSBOQU1FYCB8IExpbWl0IHRvIG9uZSBjb21wdXRl" + - "IHBsYW5lIHwgLSAoY29udHJvbCArIGFsbCBjbHVzdGVycykgfAp8IGAtLXdhdGNoYCB8IExpdmUg" + - "cmUtcmVuZGVyIHwgYGZhbHNlYCB8CnwgYC0td2F0Y2gtaW50ZXJ2YWwgRFVSYCB8IGAtLXdhdGNo" + - "YCBjYWRlbmNlIHwgYDVzYCB8CnwgYC0tY29tcG9uZW50IE5BTUVgIHwgRmlsdGVyIGNvbXBvbmVu" + - "dHMgcGFuZWwgfCBhbGwgfAp8IGAtLW5vLWV2ZW50c2AgfCBTa2lwIGV2ZW50cyBwYW5lbCB8IGBm" + - "YWxzZWAgfAoKIyMgYGNsdXN0ZXIgcmVnaXN0ZXJgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3Nl" + - "IHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1uYW1lIE5BTUVgIHwgQ2x1c3RlciBuYW1l" + - "IChyZXF1aXJlZCkgfCAtIHwKfCBgLS1uY2EtaWQgSURgIHwgTkNBIElEIChyZXF1aXJlZCkgfCAt" + - "IHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IFJlZ2lvbiB8IGB1cy13ZXN0LTFgIHwKfCBgLS1pY21z" + - "LXVybCBVUkxgIHwgSUNNUyBlbmRwb2ludCB8IGZyb20gY29uZmlnIHwKfCBgLS1pZ25vcmUtZXhp" + - "c3RpbmdgIHwgTWF0Y2gtb3ItY3JlYXRlIGluc3RlYWQgb2YgZmFpbC1vbi1leGlzdHMgfCBgZmFs" + - "c2VgIHwKCiMjIGBhcGkta2V5IGdlbmVyYXRlYC1zcGVjaWZpYwoKfCBGbGFnIHwgUHVycG9zZSB8" + - "IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tZm9yIGZ1bmN0aW9uXHx0YXNrYCB8IEdlbmVy" + - "YXRlIG9ubHkgdGhlIHNwZWNpZmllZCBrZXkgdHlwZSB8IChvbWl0IHRvIGdlbmVyYXRlIGJvdGgp" + - "IHwKfCBgLS1kZXNjcmlwdGlvbiBURVhUYCB8IEh1bWFuLXJlYWRhYmxlIGxhYmVsIGZvciB0aGUg" + - "a2V5IHwgYEdlbmVyYXRlZCBieSBudmNmLWNsaWAgfAp8IGAtLWV4cGlyZXMtaW4gRFVSQVRJT05g" + - "IHwgRXhwaXJ5IG9mZnNldCAoZS5nLiBgMjRoYCwgYDdkYCk7IHBhcnNlZCBhcyBleHRlbmRlZCBk" + - "dXJhdGlvbiB8IGAyNGhgIHwKfCBgLS1zY29wZXMgU0NPUEVbLFNDT1BFXWAgfCBPdmVycmlkZSBk" + - "ZWZhdWx0IHNjb3BlczsgcmVxdWlyZXMgYC0tZm9yYCB8IChzZXJ2aWNlIGRlZmF1bHRzKSB8Cnwg" + - "YC0tdmFsaWRhdGVgIHwgVmFsaWRhdGUgZWFjaCBnZW5lcmF0ZWQga2V5IGltbWVkaWF0ZWx5IGFm" + - "dGVyIG1pbnRpbmcgfCBgZmFsc2VgIHwKCkV4dGVuZGVkIGR1cmF0aW9uIHVuaXRzOiBgc2AgKHNl" + - "Y29uZHMpLCBgbWAgKG1pbnV0ZXMpLCBgaGAgKGhvdXJzKSwgYGRgIChkYXlzKSwgYHdgICh3ZWVr" + - "cykuCgojIyBgZnVuY3Rpb24gY3JlYXRlYC1zcGVjaWZpYwoKYC0taW5wdXQtZmlsZSBGSUxFYCBp" + - "cyByZWNvbW1lbmRlZCBmb3IgcmVwZWF0YWJsZSBmdW5jdGlvbiBkZWZpbml0aW9ucy4gRm9yIGFk" + - "LWhvYyBjcmVhdGVzOgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18" + - "CnwgYC0tbmFtZSBOQU1FYCB8IEZ1bmN0aW9uIG5hbWUgfCAtIHwKfCBgLS1pbWFnZSBJTUFHRWAg" + - "fCBDb250YWluZXIgaW1hZ2UgfCAtIHwKfCBgLS1pbmZlcmVuY2UtdXJsIFVSSWAgfCBDb250YWlu" + - "ZXIgaW5mZXJlbmNlIGVuZHBvaW50IHwgLSB8CnwgYC0taW5mZXJlbmNlLXBvcnQgUE9SVGAgfCBD" + - "b250YWluZXIgaW5mZXJlbmNlIHBvcnQgfCAtIHwKfCBgLS1mdW5jdGlvbi10eXBlIERFRkFVTFRc" + - "fFNUUkVBTUlOR1x8TExNYCB8IEZ1bmN0aW9uIHR5cGUgfCBgREVGQVVMVGAgfAp8IGAtLWhlbG0t" + - "Y2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJIHJlZmVyZW5jZS4gQ2FuIGJlIHVz" + - "ZWQgd2l0aCBgLS1mdW5jdGlvbi10eXBlPUxMTWAgZm9yIGNoYXJ0LXBhY2thZ2VkIExMTSB3b3Jr" + - "bG9hZHMuIHwgLSB8CnwgYC0taGVsbS1jaGFydC1zZXJ2aWNlIE5BTUVgIHwgS3ViZXJuZXRlcyBT" + - "ZXJ2aWNlIG5hbWUgZXhwb3NlZCBieSB0aGUgY2hhcnQuIFJlcXVpcmVkIHdoZW4gYC0taGVsbS1j" + - "aGFydGAgaXMgc2V0LiB8IC0gfAp8IGAtLW1vZGVscyBOQU1FOlZFUlNJT046VVJJYCB8IFN0YW5k" + - "YXJkIG1vZGVsIGFydGlmYWN0OyByZXBlYXRhYmxlIHwgLSB8CnwgYC0tbGxtLW1vZGVsIFNQRUNg" + - "IHwgTExNIG1vZGVsIGNvbmZpZzsgZm9ybWF0IGBuYW1lPTxtb2RlbD4sdXJpcz08dXJpPlx8PHVy" + - "aT4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJhdGVMaW1pdD08bGltaXQ+YDsgcmVwZWF0" + - "YWJsZS4gVG9rZW4gbGltaXRzIHVzZSBgPHZhbHVlPi08dW5pdD5gIHdpdGggYFNgLCBgTWAsIGBI" + - "YCwgYERgLCBvciBgV2AsIGZvciBleGFtcGxlIGAxMDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBmb3Ig" + - "Y29tYmluZWQgdG9rZW4gbGltaXRzIGJlY2F1c2UgaW5saW5lIHNwZWNzIHVzZSBjb21tYXMgYXMg" + - "ZmllbGQgc2VwYXJhdG9ycy4gfCAtIHwKfCBgLS1sbG0tZGVmYXVsdC1wcmlvcml0eSBQUklPUklU" + - "WWAgfCBGdW5jdGlvbi1sZXZlbCBkZWZhdWx0IHJlcXVlc3QgcHJpb3JpdHkuIExvd2VyIHZhbHVl" + - "cyBoYXZlIGhpZ2hlciBwcmlvcml0eS4gfCAtIHwKfCBgLS1sbG0tcGVyLWFjY291bnQtcHJpb3Jp" + - "dHkgTkNBLUlEOlBSSU9SSVRZYCB8IFBlci1hY2NvdW50IHByaW9yaXR5IG92ZXJyaWRlOyByZXBl" + - "YXRhYmxlOyBzdXBwb3J0cyB1cCB0byA2NCBkaXN0aW5jdCBOQ0EgSUQgb3ZlcnJpZGVzLiBSZXF1" + - "aXJlcyBhIGRlZmF1bHQgcHJpb3JpdHkuIHwgLSB8CgpJbiBKU09OIGFuZCBpbmxpbmUgc3BlY3Ms" + - "IExMTSBmdW5jdGlvbnMgc2V0IGBmdW5jdGlvblR5cGU6ICJMTE0iYCBhbmQgbW9kZWwgcm91dGlu" + - "ZyBtZXRhZGF0YSB1bmRlciBgbW9kZWxzW10ubGxtQ29uZmlnYC4gYGxsbUNvbmZpZy51cmlzYCBk" + - "ZWNsYXJlcyB0aGUgT3BlbkFJLWNvbXBhdGlibGUgdXBzdHJlYW0gcGF0aHMgZXhwb3NlZCBieSB0" + - "aGUgbW9kZWwuIEN1cnJlbnQgc3VwcG9ydGVkIHBhdGhzIGFyZSBgL3YxL2NoYXQvY29tcGxldGlv" + - "bnNgLCBgL3YxL3Jlc3BvbnNlc2AsIGFuZCBgL3YxL2VtYmVkZGluZ3NgLiBgbGxtQ29uZmlnLnJv" + - "dXRpbmdNZXRob2RgIGFjY2VwdHMgYHJvdW5kX3JvYmluYCwgYHBvd2VyX29mX3R3b2AsIGBncm9x" + - "X211bHRpcmVnaW9uYCwgYHB1bHNhcmAsIG9yIGByYW5kb21gLgpgbGxtQ29uZmlnLnRva2VuUmF0" + - "ZUxpbWl0YCBhY2NlcHRzIG9uZSBvciBtb3JlIGNvbW1hLXNlcGFyYXRlZCBwb3NpdGl2ZSBpbnRl" + - "Z2VyIHRva2VuIGxpbWl0cyBpbiBgPHZhbHVlPi08dW5pdD5gIGZvcm1hdC4gU3VwcG9ydGVkIHVu" + - "aXRzIGFyZSBgU2AgKHNlY29uZHMpLCBgTWAgKG1pbnV0ZXMpLCBgSGAgKGhvdXJzKSwgYERgIChk" + - "YXlzKSwgYW5kIGBXYCAod2Vla3MpLiBVc2UgZGlzdGluY3QgdW5pdHMgd2hlbiBjb21iaW5pbmcg" + - "bGltaXRzLCBmb3IgZXhhbXBsZSBgMTAwMC1TLDUwMDAtTSwxMDAwMDAtSCw1MDAwMDAtRCwxMDAw" + - "MDAwLVdgIGluIGlucHV0IEpTT04uCgpIZWxtIGNoYXJ0IHBhY2thZ2luZyBpcyBpbmRlcGVuZGVu" + - "dCBvZiBgZnVuY3Rpb25UeXBlYC4gRm9yIGEgSGVsbS1jaGFydCBiYWNrZWQgTExNIGZ1bmN0aW9u" + - "LCBzZXQgYGZ1bmN0aW9uVHlwZTogIkxMTSJgLCBgaGVsbUNoYXJ0YCwgYGhlbG1DaGFydFNlcnZp" + - "Y2VOYW1lYCwgYW5kIGBtb2RlbHNbXS5sbG1Db25maWdgIGluIHRoZSBzYW1lIGNyZWF0ZSByZXF1" + - "ZXN0LiBgaW5mZXJlbmNlUG9ydGAgbXVzdCBiZSB0aGUgS3ViZXJuZXRlcyBTZXJ2aWNlIHBvcnQg" + - "ZXhwb3NlZCBieSBgaGVsbUNoYXJ0U2VydmljZU5hbWVgLgoKTExNIGludm9jYXRpb24gcmVxdWVz" + - "dHMgdXNlIGBtb2RlbDogIjxmdW5jdGlvbi1pZD4vPG1vZGVsLW5hbWU+ImAuIFRoZSBmdW5jdGlv" + - "biBJRCBzZWxlY3RzIHRoZSBOVkNGIGZ1bmN0aW9uLCBhbmQgdGhlIG1vZGVsIG5hbWUgaXMgZm9y" + - "d2FyZGVkIHVwc3RyZWFtLiBDaGF0IGNvbXBsZXRpb25zIGFuZCBSZXNwb25zZXMgQVBJIHJlcXVl" + - "c3RzIGNhbiB1c2UgYHgtbXVsdGktdHVybi1zZXNzaW9uLWlkYCBmb3Igc2Vzc2lvbiBzdGlja2lu" + - "ZXNzOyBlbWJlZGRpbmdzIHJlcXVlc3RzIGRvIG5vdC4KCiMjIGBmdW5jdGlvbiB1cGRhdGVgLXNw" + - "ZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS10" + - "YWdzIFRBR1ssVEFHXWAgfCBSZXBsYWNlIGZ1bmN0aW9uIHRhZ3MgfCAtIHwKfCBgLS1sbG0tbW9k" + - "ZWwtdXBkYXRlIFNQRUNgIHwgTExNIG1vZGVsIHVwZGF0ZTsgZm9ybWF0IGBuYW1lPTxtb2RlbD4s" + - "cm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJhdGVMaW1pdD08bGltaXQ+YDsgcmVwZWF0YWJs" + - "ZS4gUm91dGluZyBtZXRob2RzIG1hdGNoIGAtLWxsbS1tb2RlbGAuIFRva2VuIGxpbWl0IGV4YW1w" + - "bGU6IGAxMDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBmb3IgY29tYmluZWQgdG9rZW4gbGltaXRzLiB8" + - "IC0gfAp8IGAtLWxsbS1kZWZhdWx0LXByaW9yaXR5IFBSSU9SSVRZYCB8IFJlcGxhY2UgdGhlIGZ1" + - "bmN0aW9uLWxldmVsIHByaW9yaXR5IGNvbmZpZ3VyYXRpb24gd2l0aCB0aGlzIGRlZmF1bHQgYW5k" + - "IGFueSBzdXBwbGllZCBwZXItYWNjb3VudCBvdmVycmlkZXMuIHwgLSB8CnwgYC0tbGxtLXBlci1h" + - "Y2NvdW50LXByaW9yaXR5IE5DQS1JRDpQUklPUklUWWAgfCBQZXItYWNjb3VudCBwcmlvcml0eSBv" + - "dmVycmlkZTsgcmVwZWF0YWJsZTsgc3VwcG9ydHMgdXAgdG8gNjQgZGlzdGluY3QgTkNBIElEIG92" + - "ZXJyaWRlcy4gUmVxdWlyZXMgYSBkZWZhdWx0IHByaW9yaXR5LiB8IC0gfAoKSW4gSlNPTiwgYGZ1" + - "bmN0aW9uIHVwZGF0ZWAgYWNjZXB0cyBgbW9kZWxVcGRhdGVzW11gIGVudHJpZXMgd2l0aCBgbW9k" + - "ZWxOYW1lYCBhbmQgYGxsbUNvbmZpZy5yb3V0aW5nTWV0aG9kYCBhbmQvb3IgYGxsbUNvbmZpZy50" + - "b2tlblJhdGVMaW1pdGAuIGB1cmlzYCBhcmUgY3JlYXRlLXRpbWUgbW9kZWwgbWV0YWRhdGEgYW5k" + - "IGFyZSBub3QgcGFydCBvZiBtb2RlbCB1cGRhdGVzLgoKIyMgYGZ1bmN0aW9uIGRlcGxveSBjcmVh" + - "dGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIChmdWxsIEpT" + - "T04gc3BlYykuIEZvciBhZC1ob2Mgb25lLXNob3QgdXNlOgoKfCBGbGFnIHwgUHVycG9zZSB8IERl" + - "ZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tZnVuY3Rpb24taWQgSURgIHwgRnVuY3Rpb24gSUQg" + - "KHJlcXVpcmVkKSB8IC0gfAp8IGAtLWdwdSBOQU1FYCB8IEdQVSBmYW1pbHkgfCBgSDEwMGAgfAp8" + - "IGAtLWluc3RhbmNlLXR5cGUgVFlQRWAgfCBTS1UgfCBgTkNQLkdQVS5IMTAwXzF4YCB8CnwgYC0t" + - "bWluLWluc3RhbmNlcyBOYCB8IE1pbiByZXBsaWNhcyB8IGAxYCB8CnwgYC0tbWF4LWluc3RhbmNl" + - "cyBOYCB8IE1heCByZXBsaWNhcyB8IGAxYCB8CnwgYC0tbWF4LXJlcXVlc3QtY29uY3VycmVuY3kg" + - "TmAgfCBDb25jdXJyZW5jeSB8IGAwYCAodW5zZXQ7IHNlcnZlciBkZWZhdWx0IGFwcGxpZXMpIHwK" + - "fCBgLS1jbHVzdGVycyBOQU1FWyxOQU1FXWAgfCBUYXJnZXQgc3BlY2lmaWMgY29tcHV0ZSBjbHVz" + - "dGVycyB8IChhbnkgbWF0Y2hpbmcgU0tVKSB8CgojIyBgdGFzayBjcmVhdGVgLXNwZWNpZmljCgpg" + - "LS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIGZvciByZXBlYXRhYmxlIHRhc2sgZGVm" + - "aW5pdGlvbnMuIEZvciBhZC1ob2MgdXNlOgoKfCBGbGFnIHwgUHVycG9zZSB8IE5vdGVzIHwKfC0t" + - "LXwtLS18LS0tfAp8IGAtLW5hbWUgTkFNRWAgfCBUYXNrIG5hbWUgKHJlcXVpcmVkKSB8IDEtMTI4" + - "IGNoYXJzLCBgXlthLXowLTlBLVpdW2EtejAtOUEtWlwtX10qJGAgfAp8IGAtLWdwdSBHUFVgIHwg" + - "R1BVIG5hbWUgKHJlcXVpcmVkIHdpdGhvdXQgYC0taW5wdXQtZmlsZWApIHwgRXhhbXBsZTogYEgx" + - "MDBgIHwKfCBgLS1pbnN0YW5jZS10eXBlIFRZUEVgIHwgSW5zdGFuY2UgdHlwZSAocmVxdWlyZWQg" + - "d2l0aG91dCBgLS1pbnB1dC1maWxlYCkgfCBFeGFtcGxlOiBgTkNQLkdQVS5IMTAwXzF4YCB8Cnwg" + - "YC0taW1hZ2UgSU1BR0VgIHwgQ29udGFpbmVyIGltYWdlIHwgTXV0dWFsbHkgZXhjbHVzaXZlIHdp" + - "dGggYC0taGVsbS1jaGFydGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBV" + - "Ukwgb3IgT0NJIHJlZmVyZW5jZSB8IE11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGAtLWltYWdlYCB8" + - "CnwgYC0taW5wdXQtZmlsZSBGSUxFYCB8IEpTT04gdGFzayBzcGVjIGZpbGUgfCBDTEkgZmxhZ3Mg" + - "b3ZlcnJpZGUgSlNPTiB2YWx1ZXMgd2hlbiBib3RoIGFyZSBzZXQgfAp8IGAtLWJhY2tlbmQgQkFD" + - "S0VORGAgfCBCYWNrZW5kIC8gQ1NQIHwgLSB8CnwgYC0tY2x1c3RlcnMgTkFNRVssTkFNRV1gIHwg" + - "U3BlY2lmaWMgY2x1c3RlcnMgd2l0aGluIHRoZSBpbnN0YW5jZSB8IENvbW1hLXNlcGFyYXRlZCB8" + - "CnwgYC0tY29udGFpbmVyLWFyZ3MgQVJHU2AgfCBBcmdzIHBhc3NlZCB3aGVuIGxhdW5jaGluZyB0" + - "aGUgY29udGFpbmVyIHwgU2luZ2xlIHN0cmluZywgZS5nLiBgIi0tZXBvY2hzIDEwIC0tYmF0Y2gt" + - "c2l6ZSAzMiJgIHwKfCBgLS1jb250YWluZXItZW52IE5BTUU9dmFsdWVgIHwgQ29udGFpbmVyIGVu" + - "dmlyb25tZW50IHZhcmlhYmxlOyByZXBlYXRhYmxlIHwgLSB8CnwgYC0tc2VjcmV0cyBOQU1FPXZh" + - "bHVlYCB8IFNlY3JldCBlbnZpcm9ubWVudCB2YXJpYWJsZTsgcmVwZWF0YWJsZTsgZW5jcnlwdGVk" + - "IGF0IHJlc3QgfCAtIHwKfCBgLS1tYXgtcnVudGltZSBEVVJBVElPTmAgfCBNYXggd2FsbC1jbG9j" + - "ayBydW4gdGltZSAoSVNPIDg2MDEsIGUuZy4gYFBUNEhgKSB8IE5vIGRlZmF1bHQ7IG9taXQgZm9y" + - "IG5vIHRpbWUgbGltaXQgfAp8IGAtLW1heC1xdWV1ZWQgRFVSQVRJT05gIHwgTWF4IHRpbWUgaW4g" + - "cXVldWUgYmVmb3JlIGNhbmNlbGxhdGlvbiAoSVNPIDg2MDEpIHwgU2VydmVyIGRlZmF1bHQgYFBU" + - "NzJIYCB8CnwgYC0tdGVybWluYXRpb24tZ3JhY2UgRFVSQVRJT05gIHwgR3JhY2UgcGVyaW9kIGFm" + - "dGVyIHN0b3Agc2lnbmFsIChJU08gODYwMSkgfCBTZXJ2ZXIgZGVmYXVsdCBgUFQxSGAgfAp8IGAt" + - "LXJlc3VsdC1zdHJhdGVneSBVUExPQURcfE5PTkVgIHwgSG93IHRvIGhhbmRsZSB0YXNrIG91dHB1" + - "dCBhcnRpZmFjdHMgfCAtIHwKfCBgLS1yZXN1bHRzLWxvY2F0aW9uIExPQ0FUSU9OYCB8IFJlc3Vs" + - "dCB1cGxvYWQgdGFyZ2V0LCBmb3JtYXQgYG9yZy1uYW1lL1t0ZWFtLW5hbWUvXW1vZGVsLW5hbWVg" + - "OyByZXF1aXJlZCB3aGVuIGAtLXJlc3VsdC1zdHJhdGVneT1VUExPQURgIHwgLSB8CnwgYC0tbW9k" + - "ZWxzIE5BTUU6VkVSU0lPTjpVUklgIHwgTW9kZWwgYXJ0aWZhY3Q7IHJlcGVhdGFibGUgfCAtIHwK" + - "fCBgLS1yZXNvdXJjZXMgTkFNRTpWRVJTSU9OOlVSSWAgfCBSZXNvdXJjZSBhcnRpZmFjdDsgcmVw" + - "ZWF0YWJsZSB8IC0gfAp8IGAtLXRhZ3MgVEFHWyxUQUddYCB8IFRhc2sgdGFncyB8IENvbW1hLXNl" + - "cGFyYXRlZCB8CnwgYC0tZGVzY3JpcHRpb24gVEVYVGAgfCBUYXNrIGRlc2NyaXB0aW9uIHwgLSB8" + - "CnwgYC0tbG9ncy10ZWxlbWV0cnktaWQgVVVJRGAgfCBMb2dzIHRlbGVtZXRyeSBlbmRwb2ludCBJ" + - "RCB8IC0gfAp8IGAtLW1ldHJpY3MtdGVsZW1ldHJ5LWlkIFVVSURgIHwgTWV0cmljcyB0ZWxlbWV0" + - "cnkgZW5kcG9pbnQgSUQgfCAtIHwKfCBgLS10cmFjZXMtdGVsZW1ldHJ5LWlkIFVVSURgIHwgVHJh" + - "Y2VzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfApQSwcIrEyKo8syAADLMgAAUEsDBBQACAAA" + - "AAAAIQAAAAAAAAAAAAAAAAA3AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNl" + - "L3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOEiMgVHJvdWJsZXNob290aW5nCgpLbm93biBlcnJv" + - "cnMg4oaSIGRpYWdub3N0aWMgY29tbWFuZCDihpIgcmVtZWRpYXRpb24uIEtlZXAgaW4gc3luYyB3" + - "aXRoIHRoZSBzdHJ1Y3R1cmVkIGBwaGFzZV9mYWlsZWRgIGV2ZW50cyB0aGUgQ0xJIGVtaXRzIChS" + - "RVEtMTUpIOKAlCBldmVyeSBlbnRyeSBiZWxvdyBzaG91bGQgbWFwIHRvIGFuIGBlcnJDYXRlZ29y" + - "eWAgYW5kIGEgYHJlbWVkaWF0aW9uYCBhcnJheS4KCiMjIFByZS1mbGlnaHQKCnwgU3ltcHRvbSB8" + - "IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGt1YmVjdGwgbm90IG9uIFBB" + - "VEhgIHwgT3BlcmF0b3IncyBgJFBBVEhgIGRvZXNuJ3QgaW5jbHVkZSBrdWJlY3RsIHwgSW5zdGFs" + - "bCBrdWJlY3RsIDEuMjgrOiBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy90YXNrcy90b29scy9p" + - "bnN0YWxsLWt1YmVjdGwvIHwKfCBgaGVsbWZpbGUgbm90IG9uIFBBVEhgIHwgU2FtZSB8IGh0dHBz" + - "Oi8vZ2l0aHViLmNvbS9oZWxtZmlsZS9oZWxtZmlsZSNpbnN0YWxsYXRpb24gfAp8IGBoZWxtIG5v" + - "dCBvbiBQQVRIYCB8IFNhbWUgfCBodHRwczovL2hlbG0uc2gvZG9jcy9pbnRyby9pbnN0YWxsLyB8" + - "CnwgYEdhdGV3YXkgQVBJIENSRHMgbm90IGluc3RhbGxlZGAgfCBlbnZveS1nYXRld2F5IHByZXJl" + - "cSBtaXNzaW5nIHwgYGhlbG0gaW5zdGFsbCBlZyBvY2k6Ly9kb2NrZXIuaW8vZW52b3lwcm94eS9n" + - "YXRld2F5LWhlbG0gLS1uYW1lc3BhY2U9ZW52b3ktZ2F0ZXdheS1zeXN0ZW0gLS1jcmVhdGUtbmFt" + - "ZXNwYWNlYCB8CnwgYGRlZmF1bHQgU3RvcmFnZUNsYXNzIG5vdCBhdmFpbGFibGVgIHwgQ2x1c3Rl" + - "ciBoYXMgbm8gZGVmYXVsdCBTQyB8IEFubm90YXRlIG9uZTogYGt1YmVjdGwgcGF0Y2ggc2MgPG5h" + - "bWU+IC1wICd7Im1ldGFkYXRhIjp7ImFubm90YXRpb25zIjp7InN0b3JhZ2VjbGFzcy5rdWJlcm5l" + - "dGVzLmlvL2lzLWRlZmF1bHQtY2xhc3MiOiJ0cnVlIn19fSdgIHwKfCBgR1BVIG9wZXJhdG9yIG5v" + - "dCBpbnN0YWxsZWRgIChjb21wdXRlLXBsYW5lKSB8IG52aWRpYSBHUFUgb3BlcmF0b3IgbWlzc2lu" + - "ZyB8IEluc3RhbGwgcGVyIGh0dHBzOi8vZG9jcy5udmlkaWEuY29tL2RhdGFjZW50ZXIvY2xvdWQt" + - "bmF0aXZlL2dwdS1vcGVyYXRvci9sYXRlc3QvaW5zdGFsbC1ncHUtb3BlcmF0b3IuaHRtbCwgT1Ig" + - "dXNlIGBmYWtlLWdwdS1vcGVyYXRvcmAgZm9yIGRldiB8CnwgYEdQVSBub2RlIGxhYmVscyBtaXNz" + - "aW5nYCAoY29tcHV0ZS1wbGFuZSkgfCBOb2RlcyBuZWVkIGBudmlkaWEuY29tL2dwdS5mYW1pbHlg" + - "IGV0Yy4gfCBTZXQgYC0tazNzLW5vZGUtbGFiZWwgbnZpZGlhLmNvbS9ncHUuZmFtaWx5PWhvcHBl" + - "ckBhZ2VudDpOYCBmb3IgazNkIHwKCiMjIEF1dGgKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRp" + - "YXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGFkbWluIHRva2VuIHJlcXVpcmVkYCAoaW5pdCBub3Qg" + - "cnVuKSB8IE5vIGB+Ly5udmNmLWNsaS5zdGF0ZWAgYW5kIGAtLXRva2VuYCBub3QgcGFzc2VkIHwg" + - "YG52Y2YtY2xpIGluaXRgIChpbnRlcmFjdGl2ZSkgb3IgYC0tdG9rZW49JEpXVCAtLW5vbi1pbnRl" + - "cmFjdGl2ZWAgKENJKSB8CnwgYFNpZ25lZCBKV1QgcmVqZWN0ZWQ6IEFub3RoZXIgYWxnb3JpdGht" + - "IGV4cGVjdGVkLCBvciBubyBtYXRjaGluZyBrZXkocykgZm91bmRgIHwgU3RhbGUgc2Vzc2lvbi5q" + - "c29uIGZyb20gYSBkaWZmZXJlbnQgY29udHJvbCBwbGFuZSB8IGBybSB+Ly5udmNmLWNsaS5zdGF0" + - "ZWAgdGhlbiBgbnZjZi1jbGkgaW5pdGAgYWdhaW4gfAp8IGA0MDMgbWlzc2luZyByZXF1ZXN0ZWQg" + - "YXV0aG9yaXRpZXNgIChmdW5jdGlvbiBpbnZva2UpIHwgQWRtaW4gdG9rZW4gZG9lc24ndCBoYXZl" + - "IGBpbnZva2VfZnVuY3Rpb25gIHNjb3BlIHwgYG52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1k" + - "ZXNjcmlwdGlvbj3igKZgIHRoZW4gcmUtcnVuIGludm9rZSB8CgojIyBJbnN0YWxsIC8gYHVwYAoK" + - "fCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBIZWxtIGB0" + - "aW1lZCBvdXQgd2FpdGluZyBmb3IgY2Fzc2FuZHJhYCB8IENhc3NhbmRyYSBTdGF0ZWZ1bFNldCBQ" + - "VkMgc3R1Y2sgYFBlbmRpbmdgIHwgQ29uZmlybSBkZWZhdWx0IFN0b3JhZ2VDbGFzczsgY2hlY2sg" + - "YGt1YmVjdGwgZ2V0IHB2LHB2YyAtbiBjYXNzYW5kcmEtc3lzdGVtYCB8CnwgYEludmFsaWQgR1BV" + - "ICdOQ1AuR1BVLkgxMDAnIHNwZWNpZmllZGAgKGZ1bmN0aW9uIGRlcGxveSkgfCBXcm9uZyBmaWVs" + - "ZCDigJQgYGdwdWAgaXMgdGhlIGZhbWlseSwgbm90IHRoZSBTS1UgfCBVc2UgYCJncHUiOiAiSDEw" + - "MCJgLCBgImluc3RhbmNlVHlwZSI6ICJOQ1AuR1BVLkgxMDBfMXgiYCB8CnwgYHJlZ2lvbiBtdXN0" + - "IGJlIHByb3ZpZGVkYCAoY2x1c3RlciByZWdpc3RlciAvIGluc3RhbGwgLS1jb21wdXRlLXBsYW5l" + - "KSB8IGAtLXJlZ2lvbmAgZW1wdHkgKyBgQ0xVU1RFUl9SRUdJT05gIGVudiBlbXB0eSB8IFBhc3Mg" + - "YC0tcmVnaW9uPXVzLXdlc3QtMWAgKG9yIGFueSBub24tZW1wdHkgdmFsdWUpIHwKfCBgcmVxdWly" + - "ZWRFbnYgIk5DQV9JRCIgaXMgbm90IHNldGAgKGhlbG1maWxlIGVycm9yIGR1cmluZyBjb21wdXRl" + - "LXBsYW5lIGFwcGx5KSB8IE9sZGVyIG52Y2YtY2xpIGJlZm9yZSBjb21taXQgYDZhYTU3MDRgOyBF" + - "eHRyYUVudiBub3QgcHJvcGFnYXRpbmcgTkNBX0lEIHwgVXBncmFkZSBgbnZjZi1jbGlgIHRvIGEg" + - "cmVsZWFzZSBhZnRlciBgNmFhNTcwNGAgfAp8IGBudmNhLW9wZXJhdG9yOiBJbWFnZVB1bGxCYWNr" + - "T2ZmYCBmb3IgYG52Y2Etb3BlcmF0b3I6cHNhdGAgfCBJbWFnZSBub3QgaW4gY2x1c3RlciByZWdp" + - "c3RyeTsgbXVsdGktY2x1c3RlciBidWlsZCBpcyBsb2NhbCB8IGBrM2QgaW1hZ2UgaW1wb3J0IG52" + - "Y3IuaW8vLi4uL252Y2Etb3BlcmF0b3I6cHNhdCAtYyA8Y2x1c3Rlcj5gIHwKCiMjIENvbXB1dGUt" + - "cGxhbmUgcnVudGltZQoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0t" + - "fC0tLXwKfCBOVkNBIGFnZW50IENyYXNoTG9vcEJhY2tPZmYgd2l0aCBgSFRUUCA0MDFgIG9uIGAv" + - "djEvbnZjYS9jbHVzdGVycy8uLi4vcmVnaXN0ZXJgIHwgU3RhbGUgYG91dC88Y2x1c3Rlcj4tcmVn" + - "aXN0ZXItdmFsdWVzLnlhbWxgIGZyb20gcHJpb3IgcmVnaXN0ZXI7IGNsdXN0ZXIgSUQgZG9lc24n" + - "dCBtYXRjaCBJQ01TIHwgRGVsZXRlIHRoZSBzdGFsZSBmaWxlOyByZS1ydW4gYG52Y2YtY2xpIHNl" + - "bGYtaG9zdGVkIHVwYCAoaWRlbXBvdGVudCByZWdpc3RlciB3cml0ZXMgYSBmcmVzaCBmaWxlKSB8" + - "CnwgYE5vIGNsdXN0ZXIgZm91bmQgd2l0aCB2YWxpZCBKV0tTIGZvciBjbHVzdGVyIElEOiA8aWQ+" + - "YCAoSUNNUyBsb2cpIHwgSldLUyBpbiBJQ01TIGRvZXNuJ3QgbWF0Y2ggd2hhdCBjb21wdXRlLXBs" + - "YW5lIEs4cyBpcyBjdXJyZW50bHkgc2lnbmluZyB8IGBudmNmLWNsaSBjbHVzdGVyIHJvdGF0ZSAt" + - "LWNsdXN0ZXItaWQ9PGlkPmAgfAp8IEZ1bmN0aW9uIHBvZCBgSW1hZ2VQdWxsQmFja09mZmAgaW4g" + - "YG52Y2YtYmFja2VuZGAgfCBJbWFnZS1jcmVkZW50aWFsLWhlbHBlciBjb25maWcgbWlzc2luZyBv" + - "ciB3cm9uZyB8IGBrdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiBudmNmLWJhY2tlbmQgPHBvZD5gOyBj" + - "aGVjayB0aGUgcHVsbCBzZWNyZXQgY29uZmlnIHwKfCBGdW5jdGlvbiBkZXBsb3kgc3R1Y2sgYERF" + - "UExPWUlOR2AgZm9yID41IG1pbiB8IE5BVFMgc3RyZWFtIGluaXQgbGFnIChjb2xkLWNsdXN0ZXIp" + - "IOKAlCB3YWl0LCBvciBjaGVjayBOQVRTIGF1dGgtY2FsbG91dCBoZWFsdGggfCBga3ViZWN0bCBs" + - "b2dzIC1uIG5hdHMtc3lzdGVtIC1sIGFwcC5rdWJlcm5ldGVzLmlvL25hbWU9bmF0cy1hdXRoLWNh" + - "bGxvdXQtc2VydmljZWAgfAoKIyMgVGFza3MKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRp" + - "b24gfAp8LS0tfC0tLXwtLS18CnwgYHRhc2sgY3JlYXRlYCByZXR1cm5zIGBNaXNzaW5nIDxUWVBF" + - "PiByZWdpc3RyeSBjcmVkZW50aWFsIGZvciBob3N0bmFtZWAsIG9yIGtlZXBzIHVzaW5nIGEgcHJl" + - "dmlvdXMgY3JlZGVudGlhbCB2YWx1ZSwgc2hvcnRseSBhZnRlciBgcmVnaXN0cnktY3JlZGVudGlh" + - "bCBhZGQvdXBkYXRlL2RlbGV0ZWAgd2hpbGUgYHJlZ2lzdHJ5LWNyZWRlbnRpYWwgbGlzdGAvYGdl" + - "dGAgYWxyZWFkeSBzaG93IHRoZSBuZXcgdmFsdWUgfCBFeHBlY3RlZCBwcm9wYWdhdGlvbiBkZWxh" + - "eTogTlZDVCBjYWNoZXMgdGhlIGFjY291bnQncyByZWdpc3RyeSBjcmVkZW50aWFscyB3aXRoIGBu" + - "dmN0Lm52Y2YuY2FjaGUtdHRsYCAoZGVmYXVsdCBgUFQ1TWAsIGFib3V0IDUgbWluKSBhbmQgYXBw" + - "bGllcyB0aGUgY2hhbmdlIHdoZW4gdGhhdCBjYWNoZWQgY29weSByZWZyZXNoZXMgfCBXYWl0IHVw" + - "IHRvIGFib3V0IDUgbWluIGFuZCByZXRyeSwgb3IgYGt1YmVjdGwgLW4gbnZjZiByb2xsb3V0IHJl" + - "c3RhcnQgZGVwbG95bWVudC9udmN0LWFwaWAgdG8gYXBwbHkgaW1tZWRpYXRlbHkgfApQSwcI864T" + - "hHQRAAB0EQAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAsAAkAZGF0YS9udmNmLXNlbGYtbWFu" + - "YWdlZC1pbnN0YWxsYXRpb24vU0tJTEwubWRVVAUAAQCmzhItLS0KbmFtZTogbnZjZi1zZWxmLW1h" + - "bmFnZWQtaW5zdGFsbGF0aW9uCmRlc2NyaXB0aW9uOiA+LQogIEluc3RhbGwgYW5kIG9wZXJhdGUg" + - "TlZDRiBzZWxmLWhvc3RlZCBjb250cm9sLXBsYW5lIGFuZCBzZXBhcmF0ZSBjb21wdXRlLXBsYW5l" + - "CiAgc3RhY2tzLiBDb3ZlcnMgSGVsbWZpbGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSBpbnN0YWxs" + - "YXRpb24gZmxvd3MsIHRlYXJkb3duLAogIHZhbHVlcyBvdmVycmlkZXMsIHB1bGwgc2VjcmV0cywg" + - "YW5kIHRyb3VibGVzaG9vdGluZy4gVXNlIGZvcgogIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrLCBu" + - "dmNmLWNvbXB1dGUtcGxhbmUtc3RhY2ssIHNwbGl0IGNvbXB1dGUtcGxhbmUKICBpbnN0YWxsYXRp" + - "b24sIGNvbnRyb2wtcGxhbmUgaW5zdGFsbGF0aW9uLCBDTEktZ2VuZXJhdGVkIGNvbnRyb2wtcGxh" + - "bmUKICBwcm9maWxlcywgSGVsbWZpbGUsIHNlbGYtbWFuYWdlZCwgb3Igc2VsZi1ob3N0ZWQgZGVw" + - "bG95bWVudHMuIERvIE5PVCB1c2UgZm9yCiAgbG9jYWwgazNkIGVudmlyb25tZW50czsgdXNlIHRo" + - "ZSBsb2NhbCBrM2QgZGV2ZWxvcG1lbnQgd29ya2Zsb3cgaW5zdGVhZC4KbGljZW5zZTogQXBhY2hl" + - "LTIuMApjb21wYXRpYmlsaXR5OiBSZXF1aXJlcyBoZWxtZmlsZSA+PSAxLjEuMCA8IDEuMi4wLCBo" + - "ZWxtID49IDMuMTIsIGhlbG0tZGlmZiBwbHVnaW4sIGt1YmVjdGwgbWF0Y2hpbmcgY2x1c3RlciB2" + - "ZXJzaW9uCmF1dGhvcjogIm52Y2YtY29yZS1lbmcgPG52Y2YtY29yZS1lbmdAZXhjaGFuZ2UubnZp" + - "ZGlhLmNvbT4iCnZlcnNpb246ICIxLjAuMCIKdGFnczogW252Y2YsIHNlbGYtbWFuYWdlZCwgaGVs" + - "bWZpbGUsIHNlbGYtaG9zdGVkLCBjb250cm9sLXBsYW5lLCBjb21wdXRlLXBsYW5lLCBjbGktcHJv" + - "ZmlsZSwgaW5zdGFsbGF0aW9uLCBkZXBsb3ltZW50LCBwdWxsLXNlY3JldHNdCnRvb2xzOiBbU2hl" + - "bGwsIFJlYWQsIEVkaXQsIEdyZXAsIEdsb2JdCm1ldGFkYXRhOgogIGludGVybmFsOiBmYWxzZQog" + - "IGF1dGhvcjogIm52Y2YtY29yZS1lbmcgPG52Y2YtY29yZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNv" + - "bT4iCiAgdmVyc2lvbjogIjEuMCIKICB0YWdzOiBbbnZjZiwgc2VsZi1tYW5hZ2VkLCBoZWxtZmls" + - "ZSwgc2VsZi1ob3N0ZWQsIGNvbnRyb2wtcGxhbmUsIGNvbXB1dGUtcGxhbmUsIGNsaS1wcm9maWxl" + - "LCBpbnN0YWxsYXRpb24sIGRlcGxveW1lbnQsIHB1bGwtc2VjcmV0c10KICBsYW5ndWFnZXM6IFti" + - "YXNoLCB5YW1sXQogIGZyYW1ld29ya3M6IFtoZWxtZmlsZSwgaGVsbSwga3ViZWN0bF0KICBkb21h" + - "aW46IGNsb3VkLWluZnJhc3RydWN0dXJlCi0tLQoKIyBOVkNGIFNlbGYtTWFuYWdlZCBTdGFjayBP" + - "cGVyYXRpb25zCgpPcGVyYXRpb25hbCBndWlkZSBmb3IgbWF0Y2hpbmcgTlZDRiBjb250cm9sLXBs" + - "YW5lIGFuZCBjb21wdXRlLXBsYW5lIEhlbG1maWxlIGJ1bmRsZXMuCgojIyBJbnN0cnVjdGlvbnMK" + - "ClVzZSB0aGlzIHNraWxsIGZvciBpbnN0YWxsLCB1cGdyYWRlLCBvciB0ZWFyZG93biB3b3JrIGlu" + - "IG1hdGNoaW5nIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgYW5kIGBudmNmLWNvbXB1dGUtcGxh" + - "bmUtc3RhY2tgIGJ1bmRsZXM7IGtlZXAgSGVsbWZpbGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSBo" + - "YW5kb2ZmcyBzZXBhcmF0ZS4gRm9yIGBmdW5jdGlvblR5cGU6ICJMTE0iYCwgcmVhZCBbTExNIEZ1" + - "bmN0aW9uIEVuYWJsZW1lbnRdKHJlZmVyZW5jZXMvaGVsbWZpbGUtc3RydWN0dXJlLm1kI2xsbS1m" + - "dW5jdGlvbi1lbmFibGVtZW50KS4KCiMjIFByZXJlcXVpc2l0ZXMKCkFzayBmb3IgdGhlIGV4dHJh" + - "Y3RlZCBgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2tgIHBhdGguIEZvciBzcGxpdCBpbnN0YWxsYXRp" + - "b24sCmFsc28gcmVxdWlyZSB0aGUgbWF0Y2hpbmctdmVyc2lvbiBgbnZjZi1jb21wdXRlLXBsYW5l" + - "LXN0YWNrYCBwYXRoLiBWZXJpZnkgYm90aDoKCmBgYGJhc2gKbHMgPGNvbnRyb2wtcGxhbmUtc3Rh" + - "Y2s+L2hlbG1maWxlLmQvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9lbnZpcm9ubWVudHMvIDxjb250" + - "cm9sLXBsYW5lLXN0YWNrPi9zZWNyZXRzLyA8Y29udHJvbC1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlh" + - "bWwuZ290bXBsCmxzIDxjb21wdXRlLXBsYW5lLXN0YWNrPi9oZWxtZmlsZS5kLyA8Y29tcHV0ZS1w" + - "bGFuZS1zdGFjaz4vZW52aXJvbm1lbnRzLyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlh" + - "bWwuZ290bXBsCmBgYAoKSWYgZWl0aGVyIGRpcmVjdG9yeSBpcyBtaXNzaW5nLCBkb3dubG9hZCBt" + - "YXRjaGluZyBidW5kbGUgdmVyc2lvbnMgZnJvbSBOR0M6CgpgYGBiYXNoCm5nYyByZWdpc3RyeSBy" + - "ZXNvdXJjZSBkb3dubG9hZC12ZXJzaW9uIDxvcmc+L252Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrOjx2" + - "ZXJzaW9uPgpuZ2MgcmVnaXN0cnkgcmVzb3VyY2UgZG93bmxvYWQtdmVyc2lvbiA8b3JnPi9udmNm" + - "LWNvbXB1dGUtcGxhbmUtc3RhY2s6PHZlcnNpb24+CmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5k" + - "cyBiZWxvdyBhc3N1bWUgdGhlIGNvbnRyb2wtcGxhbmUgYnVuZGxlIHJvb3QuIFNwbGl0LWZsb3cK" + - "Y29tbWFuZHMgYW5kIHJvb3Qgc3Vic3RpdHV0aW9uIGFyZSBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFu" + - "ZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQp" + - "LgoKIyMgQmVmb3JlIFlvdSBTdGFydAoKVmVyaWZ5IHRvb2xpbmcgYW5kIGNvbnRleHQgYmVmb3Jl" + - "IGFueSBvcGVyYXRpb246CgpgYGBiYXNoCmhlbG1maWxlIC0tdmVyc2lvbiAgICMgTXVzdCBiZSAx" + - "LjEueCAoMS4yLjAgcmVtb3ZlZCBzZXF1ZW50aWFsIG1vZGUpCmhlbG0gdmVyc2lvbiAgICAgICAg" + - "ICMgTXVzdCBiZSA+PSAzLjEyCmhlbG0gcGx1Z2luIGxpc3QgICAgICMgTXVzdCBpbmNsdWRlIGhl" + - "bG0tZGlmZiA+PSAzLjExCmt1YmVjdGwgdmVyc2lvbiAgICAgICMgQ2xpZW50IG11c3QgYmUgd2l0" + - "aGluIDEgbWlub3IgdmVyc2lvbiBvZiBjbHVzdGVyCmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5k" + - "cyBydW4gZnJvbSB0aGUgZXh0cmFjdGVkIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFjay9gIHJvb3Q6" + - "CgpgYGBiYXNoCmNkIHBhdGgvdG8vbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sKbHMgaGVsbWZpbGUu" + - "ZC8gZW52aXJvbm1lbnRzLyBzZWNyZXRzLyBnbG9iYWwueWFtbC5nb3RtcGwKYGBgCgpJZGVudGlm" + - "eSB0aGUgZW52aXJvbm1lbnQgZnJvbSBgZW52aXJvbm1lbnRzLzxuYW1lPi55YW1sYCBhbmQKYHNl" + - "Y3JldHMvPG5hbWU+LXNlY3JldHMueWFtbGA7IGZvciBFS1MsIHVzZSB0aGUgY2Fub25pY2FsCltD" + - "U1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYu" + - "MC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4KCiMjIEhvdyBWYWx1ZXMgRmxvdwoKVW5kZXJz" + - "dGFuZGluZyB2YWx1ZSBwcmVjZWRlbmNlIHByZXZlbnRzIHRoZSBtb3N0IGNvbW1vbiBjb25maWd1" + - "cmF0aW9uIG1pc3Rha2VzLgoKYGBgdGV4dAplbnZpcm9ubWVudHMvYmFzZS55YW1sICAgICAgICAg" + - "IChkZWZhdWx0cykKICAgIC0+IG1lcmdlZCB3aXRoCmVudmlyb25tZW50cy88ZW52Pi55YW1sICAg" + - "ICAgICAgKHlvdXIgb3ZlcnJpZGVzKQogICAgLT4gY29uc3VtZWQgYnkKZ2xvYmFsLnlhbWwuZ290" + - "bXBsICAgICAgICAgICAgICAoR28gdGVtcGxhdGUsIGNvbnN0cnVjdHMgcGVyLWNoYXJ0IHZhbHVl" + - "cykKICAgIC0+IGNvbnN1bWVkIGJ5CnNlY3JldHMvPGVudj4tc2VjcmV0cy55YW1sICAgICAgKHNl" + - "bnNpdGl2ZSB2YWx1ZXMpCiAgICAtPiBvdmVycmlkZGVuIGJ5CnJlbGVhc2UgaW5saW5lIHZhbHVl" + - "czogYmxvY2tzICAgKGhpZ2hlc3QgcHJlY2VkZW5jZSkKYGBgCgpDcml0aWNhbDogYGdsb2JhbC55" + - "YW1sLmdvdG1wbGAgb25seSBwYXNzZXMgdGhyb3VnaCBzcGVjaWZpYyBrZXlzIHRvIGVhY2ggY2hh" + - "cnQgKGltYWdlIHJlZ2lzdHJpZXMsIG5vZGUgc2VsZWN0b3JzLCBzdG9yYWdlLCByZXBsaWNhIGNv" + - "dW50cykuIFNldHRpbmcgYW4gYXJiaXRyYXJ5IGNoYXJ0IHZhbHVlIGluIHRoZSBlbnZpcm9ubWVu" + - "dCBmaWxlIHdpbGwgYmUgc2lsZW50bHkgaWdub3JlZCBpZiBgZ2xvYmFsLnlhbWwuZ290bXBsYCBk" + - "b2VzIG5vdCBwcm9wYWdhdGUgaXQuCgpUbyBvdmVycmlkZSBhcmJpdHJhcnkgY2hhcnQgdmFsdWVz" + - "LCB1c2UgYSBoZWxtZmlsZSByZWxlYXNlIGB2YWx1ZXM6YCBibG9jay4gU2VlIFtPdmVycmlkaW5n" + - "IEhlbG0gQ2hhcnQgVmFsdWVzXSgjb3ZlcnJpZGluZy1oZWxtLWNoYXJ0LXZhbHVlcykuCgojIyBD" + - "bGVhbiBJbnN0YWxsYXRpb24KCiMjIyAxLiBDcmVhdGUgbmFtZXNwYWNlcyBhbmQgaW1hZ2UgcHVs" + - "bCBzZWNyZXRzIChpZiB1c2luZyBhIHByaXZhdGUgcmVnaXN0cnkpCgpgYGBiYXNoCmZvciBucyBp" + - "biBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVs" + - "dC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSAiJG5z" + - "IiAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KZG9uZQoKIyBP" + - "bmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGUuZy4sIE5HQyBudmNyLmlv" + - "KQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmZvciBucyBpbiBjYXNzYW5kcmEtc3lz" + - "dGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1t" + - "YW5hZ2VyOyBkbwogIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1j" + - "cmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFt" + - "ZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwK" + - "ICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1" + - "YmVjdGwgYXBwbHkgLWYgLQpkb25lCmBgYAoKSWYgdXNpbmcgcHVsbCBzZWNyZXRzLCB5b3UgbXVz" + - "dCBhbHNvIGNvbmZpZ3VyZSBlYWNoIGhlbG1maWxlIHJlbGVhc2UgdG8gcmVmZXJlbmNlIHRoZW0u" + - "IFNlZSBbSW1hZ2UgUHVsbCBTZWNyZXRzXSgjaW1hZ2UtcHVsbC1zZWNyZXRzKS4KCiMjIyAyLiBB" + - "dXRoZW50aWNhdGUgaGVsbSB0byB5b3VyIGNoYXJ0IHJlZ2lzdHJ5CgpCb3RoIGBkb2NrZXIgbG9n" + - "aW5gIEFORCBgaGVsbSByZWdpc3RyeSBsb2dpbmAgYXJlIHJlcXVpcmVkIGZvciBOR0MuIEhlbG1m" + - "aWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kgY2hhcnRzLCBzbyB0aGUgaGVs" + - "bSBjcmVkZW50aWFsIHN0b3JlIG11c3QgYmUgYXV0aGVudGljYXRlZCBzZXBhcmF0ZWx5LgoKYGBg" + - "YmFzaAojIE5HQyAtLSBib3RoIGNvbW1hbmRzIGFyZSByZXF1aXJlZApkb2NrZXIgbG9naW4gbnZj" + - "ci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9n" + - "aW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCgojIEVDUgphd3Mg" + - "ZWNyIGdldC1sb2dpbi1wYXNzd29yZCAtLXJlZ2lvbiA8cmVnaW9uPiB8IFwKICBoZWxtIHJlZ2lz" + - "dHJ5IGxvZ2luIC0tdXNlcm5hbWUgQVdTIC0tcGFzc3dvcmQtc3RkaW4gPGFjY291bnQ+LmRrci5l" + - "Y3IuPHJlZ2lvbj4uYW1hem9uYXdzLmNvbQpgYGAKCj4gTm90ZTogYGhlbG0gcmVnaXN0cnkgbG9n" + - "aW5gIGtlZXBzIG9ubHkgdGhlIGxhc3QgbG9naW4gcGVyIGhvc3QgKG11bHRpLW9yZyBnb3RjaGEp" + - "Lgo+IFRoZSBzdGFjayBhbmQgdGhlIGNhY2hlcyBzcGFuIHNldmVyYWwgTkdDIG9yZ3MgdGhhdCBu" + - "ZWVkIGRpZmZlcmVudCBrZXlzLCBidXQgdGhleSBhbGwKPiBsaXZlIHVuZGVyIHRoZSBvbmUgaG9z" + - "dCBgbnZjci5pb2AuIEEgc2Vjb25kIGBoZWxtIHJlZ2lzdHJ5IGxvZ2luIG52Y3IuaW9gIChvcgo+" + - "IGBkb2NrZXIgbG9naW5gKSB3aXRoIGEgZGlmZmVyZW50IGtleSBzaWxlbnRseSBvdmVyd3JpdGVz" + - "IHRoZSBmaXJzdCwgc28gcHVsbHMgZm9yIHRoZQo+IGZpcnN0IG9yZyB0aGVuIGZhaWwgd2l0aCBh" + - "IG1pc2xlYWRpbmcgYDQwMyBBY2Nlc3MgRGVuaWVkYCAobm90IGEgNDAxOiB0aGUgYXV0aAo+IHN1" + - "Y2NlZWRlZCwgaXQncyB0aGUgd3Jvbmctb3JnIGtleSkuIElmIHlvdSBwdWxsIGNoYXJ0cy9pbWFn" + - "ZXMgZnJvbSBtb3JlIHRoYW4gb25lIG9yZywKPiBlaXRoZXIgcmUtcnVuIHRoZSBsb2dpbiB3aXRo" + - "IHRoZSBjb3JyZWN0IGtleSBpbW1lZGlhdGVseSBiZWZvcmUgZWFjaCBwdWxsLCBvciBwYXNzCj4g" + - "YC0tdXNlcm5hbWUgJyRvYXV0aHRva2VuJyAtLXBhc3N3b3JkIDxrZXk+YCBwZXIgYGhlbG0gcHVs" + - "bGAgaW52b2NhdGlvbiBpbnN0ZWFkIG9mIHJlbHlpbmcKPiBvbiB0aGUgc3RvcmVkIGxvZ2luLiAo" + - "UHVsbGluZyBldmVyeXRoaW5nIGZyb20gYSBzaW5nbGUgcmVnaXN0cnkgbWlycm9yIGF2b2lkcyB0" + - "aGlzCj4gZW50aXJlbHkuKQoKIyMjIDJiLiAoUmVjb21tZW5kZWQpIFB1bGwgZnJvbSBhIHJlZ2lz" + - "dHJ5IHRoZSBjbHVzdGVyIGF1dGhlbnRpY2F0ZXMgdG8gYXV0b21hdGljYWxseQoKSWYgeW91IG1p" + - "cnJvciB0aGUgTlZDRiBpbWFnZXMgaW50byBhIHJlZ2lzdHJ5IHRoYXQgdGhlIGNsdXN0ZXIgY2Fu" + - "IHB1bGwgZnJvbSB3aXRob3V0IGFuCmV4cGxpY2l0IGltYWdlIHB1bGwgc2VjcmV0IChmb3IgZXhh" + - "bXBsZSwgYSByZWdpc3RyeSB3aGVyZSB0aGUgbm9kZSBvciB3b3JrbG9hZCBpZGVudGl0eSBpcwpn" + - "cmFudGVkIHB1bGwgYWNjZXNzIGF1dG9tYXRpY2FsbHkpLCBwb2ludCB0aGUgc3RhY2sgYXQgaXQg" + - "YW5kIHNraXAgdGhlIGNyZWRlbnRpYWwgc3RlcHMKYWJvdmUuCgoxLiBQb2ludCB0aGUgc3RhY2sg" + - "YXQgdGhlIG1pcnJvciBpbiBgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgOgoKICAgYGBgeWFtbAog" + - "ICBnbG9iYWw6CiAgICAgaW1hZ2U6CiAgICAgICByZWdpc3RyeTogPHlvdXItcmVnaXN0cnk+ICAg" + - "ICAgICAgICAgIyBlLmcuIHJlZ2lzdHJ5LmV4YW1wbGUuY29tCiAgICAgICByZXBvc2l0b3J5OiA8" + - "bWlycm9yLXN1Yi1wYXRoPgogICAgIGhlbG06CiAgICAgICBzb3VyY2VzOiAgICAgICAgICAgICAg" + - "ICAgICAgICAgICAgICAgICMgb25seSBpZiB5b3UgYWxzbyBtaXJyb3JlZCB0aGUgaGVsbSBjaGFy" + - "dHMKICAgICAgICAgcmVnaXN0cnk6IDx5b3VyLXJlZ2lzdHJ5PgogICAgICAgICByZXBvc2l0b3J5" + - "OiA8bWlycm9yLXN1Yi1wYXRoPgogICBgYGAKCiAgID4gVGhlIG1hbmlmZXN0IGhhcyBhIG1peCBv" + - "ZiBPQ0kgYW5kIG5vbi1PQ0kgYXJ0aWZhY3RzLCBzbyBjb252ZXJ0IG5vbi1PQ0kgY2hhcnRzIGJl" + - "Zm9yZQogICA+IG1pcnJvcmluZy4gQ29udGFpbmVyIGltYWdlcyAoYG52Y3IuaW8vLi4uYCkgYXJl" + - "IGFscmVhZHkgT0NJIGFuZCBtaXJyb3IgYXMtaXMuIFNvbWUgSGVsbQogICA+IGNoYXJ0cywgdGhv" + - "dWdoLCBhcmUgcHVibGlzaGVkIHRvIGFuIGBodHRwczovL2AgSGVsbSByZXBvc2l0b3J5IChmb3Ig" + - "ZXhhbXBsZQogICA+IGBoZWxtLm5nYy5udmlkaWEuY29tYCkuIFRob3NlIGFyZSBub3QgT0NJIGFu" + - "ZCBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgYGdsb2JhbC5oZWxtLnNvdXJjZXNgCiAgID4gKE9DSSkg" + - "b3IgbWlycm9yZWQgZGlyZWN0bHkuIEJlZm9yZSBwb2ludGluZyB0aGUgc3RhY2sgYXQgeW91ciBt" + - "aXJyb3IsIGNvbnZlcnQgZWFjaAogICA+IGBodHRwczovL2AgY2hhcnQgdG8gT0NJOiBgaGVsbSBy" + - "ZXBvIGFkZGAvYGhlbG0gcHVsbGAgdGhlIGAudGd6YCwgdGhlbgogICA+IGBoZWxtIHB1c2ggPGNo" + - "YXJ0Pi50Z3ogb2NpOi8vPHlvdXItcmVnaXN0cnk+LzxtaXJyb3Itc3ViLXBhdGg+YC4gT25seSBP" + - "Q0kgY2hhcnRzIGNhbiBsaXZlCiAgID4gdW5kZXIgYGdsb2JhbC5oZWxtLnNvdXJjZXNgLgoKMi4g" + - "U2tpcCB0aGUgY3JlZGVudGlhbCBzdGVwcyBhYm92ZS4gV2hlbiB0aGUgY2x1c3RlciBhdXRoZW50" + - "aWNhdGVzIHRvIHRoZSByZWdpc3RyeQogICBhdXRvbWF0aWNhbGx5ICh0aGUgbm9kZSBvciB3b3Jr" + - "bG9hZCBpZGVudGl0eSBoYXMgcHVsbCBhY2Nlc3MpLCB0aGUgcHVsbCBuZWVkcyBubwogICBLdWJl" + - "cm5ldGVzIHNlY3JldCwgc28geW91IGRvIG5vdCBuZWVkOiB0aGUgcGVyLW5hbWVzcGFjZSBgbnZj" + - "ci1jcmVkc2AgZnJvbSBzdGVwIDEKICAgKHN0aWxsIGNyZWF0ZSB0aGUgbmFtZXNwYWNlcywganVz" + - "dCBub3QgdGhlIHNlY3JldCksIHRoZSBgZ2xvYmFsLmltYWdlUHVsbFNlY3JldHNgIGVudHJ5LAog" + - "ICBvciB0aGUgYGRvY2tlciBsb2dpbmAvYGhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pb2AgZnJv" + - "bSBzdGVwIDIuCgogICA+IE9uZSByZXNpZHVhbCBjcmVkZW50aWFsOiBudmNmLWFwaSBzdGlsbCB2" + - "YWxpZGF0ZXMgdGhlIHVzZXIgZnVuY3Rpb24gaW1hZ2UgYXQKICAgPiBgZnVuY3Rpb24gY3JlYXRl" + - "YCB2aWEgdGhlIGFjY291bnQgcmVnaXN0cnkgY3JlZGVudGlhbCwgc28gdGhhdCBjcmVkZW50aWFs" + - "IG11c3QgcG9pbnQgYXQKICAgPiB3aGljaGV2ZXIgcmVnaXN0cnkgaG9sZHMgdGhlIHVzZXIgaW1h" + - "Z2UgKHNldCBpdCB0byB5b3VyIG1pcnJvciBpZiB0aGUgaW1hZ2UgaXMgbWlycm9yZWQKICAgPiB0" + - "aGVyZSkuCgojIyMgMy4gU2V0IHRoZSByb3V0ZSBkb21haW4KCmBnbG9iYWwuZG9tYWluYCBzZXRz" + - "IHRoZSBob3N0bmFtZSBzdWZmaXggZm9yIHJvdXRlcyBzdWNoIGFzIGBhcGkuPGRvbWFpbj5gLiBJ" + - "dCBkb2VzIG5vdCBjb25maWd1cmUgdGhlIEdhdGV3YXkgb3IgaXRzIGxvYWQgYmFsYW5jZXIuIFF1" + - "ZXJ5IHRoZSBleGFjdCBleGlzdGluZyBHYXRld2F5OgoKYGBgYmFzaApHQVRFV0FZX0FERFJFU1M9" + - "JChrdWJlY3RsIGdldCBnYXRld2F5IDxnYXRld2F5LW5hbWU+IC1uIDxnYXRld2F5LW5hbWVzcGFj" + - "ZT4gLW8ganNvbnBhdGg9J3suc3RhdHVzLmFkZHJlc3Nlc1swXS52YWx1ZX0nKQp0ZXN0IC1uICIk" + - "R0FURVdBWV9BRERSRVNTIgpgYGAKClRoZSBhZGRyZXNzIG1heSBiZSBhIGhvc3RuYW1lIG9yIElQ" + - "LiBDbG91ZCBwcm92aWRlciBhbmQgR2F0ZXdheSBjb25maWd1cmF0aW9uIGRldGVybWluZSB0aGUg" + - "bG9hZCBiYWxhbmNlciB0eXBlIGFuZCBhZGRyZXNzIGZvcm1hdC4gVGhlIHNlbGYtbWFuYWdlZCBz" + - "dGFjayBkb2VzIG5vdCBzZWxlY3QgZWl0aGVyLgoKRm9yIHRlbXBvcmFyeSB0ZXN0aW5nIHdpdGhv" + - "dXQgRE5TLCB1c2UgYSBzdGFibGUgcmVzZXJ2ZWQgc3VmZml4IHN1Y2ggYXMgYGdsb2JhbC5kb21h" + - "aW46ICJudmNmLnRlc3QiYCwgY29ubmVjdCB0byBgR0FURVdBWV9BRERSRVNTYCwgYW5kIHNlbmQg" + - "YEhvc3Q6IGFwaS5udmNmLnRlc3RgLiBGb3IgcHJvZHVjdGlvbiwgdXNlIHlvdXIgYmFzZSBETlMg" + - "ZG9tYWluIGFuZCBwb2ludCBpdHMgcm91dGUgcmVjb3JkcyB0byBgR0FURVdBWV9BRERSRVNTYC4g" + - "SWYgdGhlIGVuZHBvaW50IGxhdGVyIGNoYW5nZXMsIGtlZXAgYGdsb2JhbC5kb21haW5gIHN0YWJs" + - "ZSBhbmQgdXBkYXRlIG9ubHkgRE5TIG9yIHRoZSBjbGllbnQgZGVzdGluYXRpb24uIFNlZSBFeGFt" + - "cGxlIDQgaW4gW2V4YW1wbGVzLm1kXShleGFtcGxlcy5tZCkuCgojIyMgNC4gUHJldmlldyBhbmQg" + - "ZGVwbG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIHRlbXBsYXRl" + - "ICAgIyBQcmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0cwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBo" + - "ZWxtZmlsZSBzeW5jICAgICAgICMgRGVwbG95CmBgYAoKPiBTZXQgQk9USCBDYXNzYW5kcmEgcGFz" + - "c3dvcmRzIGluIHRoZSBzZWNyZXRzIGZpbGUuIFRoZSBzZWNyZXRzIGZpbGUgZG9jdW1lbnRzCj4g" + - "YERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYCwgYnV0IHRoZSBjYXNzYW5kcmEgY2hhcnQgaGFz" + - "IGEgc2Vjb25kIGNyZWRlbnRpYWwsCj4gYGNhc3NhbmRyYS5zZXJ2aWNlUm9sZVBhc3N3b3JkYCwg" + - "dGhhdCBkZWZhdWx0cyB0byBgY2hAbmczbTNgLiBJZiB5b3Ugc2V0IG9ubHkKPiBgREVGQVVMVF9D" + - "QVNTQU5EUkFfUEFTU1dPUkRgLCB0aGUgc2VydmljZSByb2xlIGtlZXBzIHRoYXQgZGVmYXVsdCBh" + - "bmQgZXZlcnkgREItYmFja2VkCj4gc2VydmljZSBjcmFzaC1sb29wcyB3aXRoIGBCYWQgY3JlZGVu" + - "dGlhbHNgIG9uY2UgaXQgdHJpZXMgdG8gYXV0aGVudGljYXRlLiBTZXQKPiBgY2Fzc2FuZHJhLnNl" + - "cnZpY2VSb2xlUGFzc3dvcmRgIHRvIHRoZSBzYW1lIHZhbHVlIGFzIGBERUZBVUxUX0NBU1NBTkRS" + - "QV9QQVNTV09SRGAuCgojIyMgNS4gRGVwbG95bWVudCBwaGFzZXMKCkhlbG1maWxlIGRlcGxveXMg" + - "aW4gb3JkZXIgd2l0aCBkZXBlbmRlbmNpZXM6Cgp8IFBoYXNlIHwgU2VsZWN0b3IgfCBTZXJ2aWNl" + - "cyB8IFdhaXQgdGltZSB8CnwtLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0t" + - "LXwKfCAxIHwgYHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzYCB8IE5BVFMsIE9wZW5CYW8sIENh" + - "c3NhbmRyYSB8IDUtMTAgbWluIHwKfCAyIHwgYHJlbGVhc2UtZ3JvdXA9c2VydmljZXNgIHwgQVBJ" + - "LCBTSVMsIEVTUywgaW52b2NhdGlvbiwgZ3JwYy1wcm94eSwgbm90YXJ5LCBhcGkta2V5cywgb3B0" + - "aW9uYWwgTExNIGdhdGV3YXkvcm91dGVyLCBvcHRpb25hbCBWYW5pdHkgR2F0ZXdheSwgTlZDRiBV" + - "SSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoZSBhZGRvbiB8IDUtMTAgbWluIHwK" + - "fCAzIHwgYHJlbGVhc2UtZ3JvdXA9aW5ncmVzc2AgfCBHYXRld2F5IHJvdXRlcyB8IDEtMiBtaW4g" + - "fAp8IDQgfCBgcmVsZWFzZS1ncm91cD1vYnNlcnZhYmlsaXR5YCB8IE9ic2VydmFiaWxpdHkgc3Rh" + - "Y2sgKGlmIGVuYWJsZWQpIHwgMS0yIG1pbiB8CgpNb25pdG9yIGluIGEgc2VwYXJhdGUgdGVybWlu" + - "YWw6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLXcKYGBgCgojIyMgNi4gRW5hYmxlIFZh" + - "bml0eSBHYXRld2F5IChvcHRpb25hbCkKClZhbml0eSBHYXRld2F5IGlzIGRpc2FibGVkIGJ5IGRl" + - "ZmF1bHQgYW5kIGlzIG9ubHkgbmVlZGVkIGZvciBjdXN0b21lci1mYWNpbmcKaG9zdG5hbWVzIG9y" + - "IHBhdGggbWFwcGluZ3MgaW4gZnJvbnQgb2YgdGhlIHN0YW5kYXJkIE5WQ0YgQVBJIGFuZCBpbnZv" + - "Y2F0aW9uCnJvdXRlcy4gSXQgaXMgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhh" + - "dCBpbmNsdWRlIHRoZSBWYW5pdHkgR2F0ZXdheQphZGRvbi4gSWYgdGhlIGV4dHJhY3RlZCBzdGFj" + - "ayBwYWNrYWdlIGRvZXMgbm90IGNvbnRhaW4gYSBgdmFuaXR5LWdhdGV3YXlgCnJlbGVhc2UgYW5k" + - "IGB2YW5pdHlHYXRld2F5YCByb3V0ZSB2YWx1ZXMsIHNraXAgdGhlc2UgY29tbWFuZHMgYW5kIHVz" + - "ZSBhIG5ld2VyCnN0YWNrIHBhY2thZ2UgdGhhdCBpbmNsdWRlcyB0aGVtLgoKSWYgdGhlIHN0YWNr" + - "IHBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLCBlbmFibGUgaXQgaW4KYGVudmlyb25tZW50cy88" + - "ZW52LW5hbWU+LnlhbWxgOgoKYGBgeWFtbAphZGRvbnM6CiAgdmFuaXR5R2F0ZXdheToKICAgIGVu" + - "YWJsZWQ6IHRydWUKICAgIG1hcHBpbmdDb25maWc6IHt9CmBgYAoKVGhlIGRlZmF1bHQgcm91dGUg" + - "aG9zdCBpcyBgdmFuaXR5Ljxkb21haW4+YCBhbmQgdGhlIGJhY2tlbmQgaXMKYHZhbml0eS1nYXRl" + - "d2F5Lm52Y2Y6ODA4MGAuIFB1dCBkZXBsb3ltZW50LXNwZWNpZmljIGhvc3QgYW5kIHBhdGggbWFw" + - "cGluZ3MgdW5kZXIKYGFkZG9ucy52YW5pdHlHYXRld2F5Lm1hcHBpbmdDb25maWdgLiBJZiB5b3Ug" + - "bmVlZCBjdXN0b20gdmFuaXR5IGhvc3RzIGluc3RlYWQgb2YKYHZhbml0eS48ZG9tYWluPmAsIHVz" + - "ZSB0aGUgcm91dGUgaG9zdG5hbWUgb3ZlcnJpZGVzIHN1cHBvcnRlZCBieSB0aGUgc3RhY2sKcGFj" + - "a2FnZSBhbmQgY3JlYXRlIG1hdGNoaW5nIEROUyByZWNvcmRzLgoKQWZ0ZXIgY29uZmlybWluZyB0" + - "aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYHZhbml0eS1nYXRld2F5YCByZWxlYXNlLCBwcmV2aWV3" + - "IGFuZAphcHBseSB0aGUgc2VydmljZSBhbmQgcm91dGU6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08" + - "ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT12YW5pdHktZ2F0ZXdheSB0ZW1wbGF0" + - "ZQpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9dmFuaXR5" + - "LWdhdGV3YXkgc3luYwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9y" + - "IHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBgYAoKVmVyaWZ5IHRoZSByb3V0ZSBvbmx5IHdo" + - "ZW4gdGhlIGFkZG9uIGlzIHByZXNlbnQgYW5kIGVuYWJsZWQ6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0" + - "IGRlcGxveSxzdmMgLW4gbnZjZiAtbCBhcHAua3ViZXJuZXRlcy5pby9uYW1lPXZhbml0eS1nYXRl" + - "d2F5Cmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgLWkgdmFuaXR5CmN1cmwgLUggIkhv" + - "c3Q6IHZhbml0eS48ZG9tYWluPiIgImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPi9oZWFsdGgiCmBg" + - "YAoKRG8gbm90IGVuYWJsZSBWYW5pdHkgR2F0ZXdheSBmb3Igc3RhbmRhcmQgQVBJLCBBUEkgS2V5" + - "cywgaW52b2NhdGlvbiwgTExNCmludm9jYXRpb24sIG9yIGdSUEMgdHJhZmZpYy4gVGhvc2Ugcm91" + - "dGVzIGFyZSBwcm92aWRlZCBieSB0aGUgYmFzZSBnYXRld2F5CnJvdXRlcy4KCiMjIyA3LiBFbmFi" + - "bGUgTlZDRiBVSSAob3B0aW9uYWwpCgpOVkNGIFVJIGlzIGFuIG9wdGlvbmFsLCBjdXN0b21lci1m" + - "YWNpbmcgYWRtaW4tcGFuZWwgVUkuIEl0IGlzIGRpc2FibGVkIGJ5CmRlZmF1bHQgYW5kIGF2YWls" + - "YWJsZSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRoYXQgaW5jbHVkZSB0aGUgTlZDRiBVSSBhZGRv" + - "bi4gSWYKeW91ciBleHRyYWN0ZWQgc3RhY2sgcGFja2FnZSBkb2VzIG5vdCBjb250YWluIGEgYG52" + - "Y2YtdWlgIHJlbGVhc2UgYW5kIGBudmNmVWlgCnJvdXRlIHZhbHVlcywgc2tpcCB0aGlzIHNlY3Rp" + - "b24uIFRoZSBOVkNGIFVJIGFkbWluIHBhbmVsIGlzIGN1cnJlbnRseQp1bmF1dGhlbnRpY2F0ZWQ7" + - "IGRvIG5vdCBleHBvc2UgaXQgdG8gdGhlIHB1YmxpYyBpbnRlcm5ldC4KCkZvciBlbmFibGVtZW50" + - "LCBuYW1lc3BhY2UgYW5kIHB1bGwgc2VjcmV0IHNldHVwLCBhcHBseSwgYW5kIHZlcmlmaWNhdGlv" + - "biBzdGVwcywKc2VlIFtOVkNGIFVJIEFkZG9uXShyZWZlcmVuY2VzL252Y2YtdWktYWRkb24ubWQp" + - "LgoKIyMjIDguIEluc3RhbGwgdGhlIHNlcGFyYXRlIGNvbXB1dGUtcGxhbmUgc3RhY2sKClRoZSBj" + - "b250cm9sLXBsYW5lIHN0YWNrIGRvZXMgbm90IGluc3RhbGwgY29tcHV0ZS1wbGFuZSBjb21wb25l" + - "bnRzLiBBZnRlciBpdCBpcyBoZWFsdGh5LCBjaG9vc2UgZXhhY3RseSBvbmUgY29tcHV0ZS1wbGFu" + - "ZSBoYW5kb2ZmOgoKLSBIZWxtZmlsZSB2YWx1ZXMgZmxvdzogYXV0aG9yIHNlcGFyYXRlIGVudmly" + - "b25tZW50IGZpbGVzLCB0aGVuIHJlZ2lzdGVyIGFuZAogIGluc3RhbGwgd2l0aCB0aGUgY29tcHV0" + - "ZS1wbGFuZSBNYWtlZmlsZS4KLSBDTEkgcHJvZmlsZSBmbG93OiB1c2UgdGhlIHByb2ZpbGUgZ2Vu" + - "ZXJhdGVkIGJ5IHRoZSBDTEkgY29udHJvbC1wbGFuZSBpbnN0YWxsLAogIHRoZW4gcnVuIHRoZSBj" + - "b21wbGV0ZSBDTEkgcmVnaXN0ZXIgYW5kIGluc3RhbGwgY29tbWFuZHMuCgpEbyBub3QgbWl4IHRo" + - "ZXNlIGhhbmRvZmZzLiBGb2xsb3cgW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShy" + - "ZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKQpmb3IgY29tbWFuZHMsIEVL" + - "UyByb3V0aW5nLCBwdWxsIHNlY3JldHMsIHZlcmlmaWNhdGlvbiwgYW5kIHRlYXJkb3duIG9yZGVy" + - "LgoKIyMgQ2xlYW4gVGVhcmRvd24KCkRlc3Ryb3kgZXZlcnkgY29tcHV0ZSBwbGFuZSBiZWZvcmUg" + - "dGhlIGNvbnRyb2wgcGxhbmUsIHVzaW5nIHRoZSB0ZWFyZG93biBmb3IKdGhlIHNhbWUgaGFuZG9m" + - "Zjsgc2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21w" + - "dXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCN0ZWFyZG93bikuCgpTY29wZTogT25seSBkZXN0cm95" + - "IHJlbGVhc2VzIG1hbmFnZWQgYnkgdGhpcyBjb250cm9sLXBsYW5lIGhlbG1maWxlIHN0YWNrLiBU" + - "aGUgTlZDRiByZWxlYXNlcyBhcmU6IGBuYXRzYCwgYG9wZW5iYW8tc2VydmVyYCwgYGNhc3NhbmRy" + - "YWAsIGBhcGkta2V5c2AsIGBzaXNgLCBgYXBpYCwgYGludm9jYXRpb24tc2VydmljZWAsIGBncnBj" + - "LXByb3h5YCwgYGVzcy1hcGlgLCBgbm90YXJ5LXNlcnZpY2VgLCBvcHRpb25hbCBgdmFuaXR5LWdh" + - "dGV3YXlgLCBgbnZjZi11aWAsIGBhZG1pbi1pc3N1ZXItcHJveHlgLCBhbmQgYGluZ3Jlc3NgOyBg" + - "Y2VydC1tYW5hZ2VyYCBpcyBpbmNsdWRlZCBvbmx5IHdoZW4gYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6" + - "IHRydWVgLiBUaGUgY29udHJvbC1wbGFuZSBuYW1lc3BhY2UgaW52ZW50b3J5IGFsc28gaW5jbHVk" + - "ZXMgYGNlcnQtbWFuYWdlcmAsIGJ1dCBkZWZhdWx0IG5hbWVzcGFjZSBjbGVhbnVwIHByZXNlcnZl" + - "cyBpdC4gTmFtZXNwYWNlIHByZXNlcnZhdGlvbiBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgSGVsbSBy" + - "ZWxlYXNlLiBFeHRlcm5hbCBjZXJ0LW1hbmFnZXIgbXVzdCB1c2UgYGNlcnRNYW5hZ2VyLmVuYWJs" + - "ZWQ6IGZhbHNlYDsgb3RoZXJ3aXNlIEhlbG1maWxlIHRyZWF0cyB0aGUgcmVsZWFzZSBhcyBzdGFj" + - "ay1tYW5hZ2VkLiBEbyBub3QgZGVsZXRlIG90aGVyIGhlbG0gcmVsZWFzZXMgb3IgbmFtZXNwYWNl" + - "cyBvbiB0aGUgY2x1c3Rlci4KCkJlZm9yZSBjb250cm9sLXBsYW5lIGRlc3Ryb3ksIGlkZW50aWZ5" + - "IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLiBGb3IgYW4gZXh0ZXJuYWwgaW5zdGFs" + - "bGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgIGFu" + - "ZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxl" + - "YXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5IG1h" + - "dGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQgYWJvcnQgb24gbWlzc2luZyBv" + - "ciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBQcmVzZXJ2ZSB0aGUgbmFtZXNwYWNlIGJ5IGRlZmF1bHQ7" + - "IG9ubHkgcGxhbiBpdHMgcmVtb3ZhbCBhZnRlciB2ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFu" + - "Y2UgYW5kIGdldHRpbmcgZXhwbGljaXQgY29uZmlybWF0aW9uLgoKIyMjIFN0YW5kYXJkIHRlYXJk" + - "b3duCgpSdW4gZnJvbSBpbnNpZGUgdGhlIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFjay9gIGRpcmVj" + - "dG9yeToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgZGVzdHJveQpg" + - "YGAKCiMjIyBEZWxldGUgbmFtZXNwYWNlcwoKYGBgYmFzaApmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5" + - "c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgbnZjZi11aSB2YXVsdC1zeXN0" + - "ZW07IGRvCiAga3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlICIkbnMiIC0taWdub3JlLW5vdC1mb3Vu" + - "ZApkb25lCmBgYAoKIyMjIFZlcmlmeSBjbGVhbgoKYGBgYmFzaAprdWJlY3RsIGdldCBucyB8IGdy" + - "ZXAgLUUgJyhjYXNzYW5kcmF8bmF0c3x2YXVsdHxudmNmfGFwaS1rZXlzfGVzc3xzaXMpJwojIFNo" + - "b3VsZCByZXR1cm4gZW1wdHkKYGBgCgojIyBPdmVycmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzCgoj" + - "IyMgRW52aXJvbm1lbnQgZmlsZSAobGltaXRlZCkKCldvcmtzIG9ubHkgZm9yIGtleXMgdGhhdCBg" + - "Z2xvYmFsLnlhbWwuZ290bXBsYCBwcm9wYWdhdGVzIChlLmcuLCBgY2Fzc2FuZHJhLnJlcGxpY2FD" + - "b3VudGAsIGBnbG9iYWwuc3RvcmFnZUNsYXNzYCwgYGdsb2JhbC5pbWFnZWApLgoKIyMjIFJlbGVh" + - "c2UgdmFsdWVzIGJsb2NrIChhbnkgY2hhcnQgdmFsdWUpCgpFZGl0IHRoZSByZWxlYXNlIGluIGBo" + - "ZWxtZmlsZS5kLyoueWFtbC5nb3RtcGxgIGFuZCBhZGQgYSBgdmFsdWVzOmAgYmxvY2suIEluIHRo" + - "ZSBleGFtcGxlcyBiZWxvdywgYDxwcml2YXRlLXZhbHVlcz5gIHJlZmVycyB0byB0aGUgYHNlY3Jl" + - "dHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxlIHN0YWNrIHJvb3QuCgpgYGB5YW1sCi0gbmFt" + - "ZTogY2Fzc2FuZHJhCiAgdmVyc2lvbjogMC44LjAKICBjb25kaXRpb246IGNhc3NhbmRyYS5lbmFi" + - "bGVkCiAgbmFtZXNwYWNlOiBjYXNzYW5kcmEtc3lzdGVtCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFs" + - "dWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVz" + - "Pi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwKICAgIC0gY2Fz" + - "c2FuZHJhOgogICAgICAgIHJlc291cmNlczoKICAgICAgICAgIGxpbWl0czoKICAgICAgICAgICAg" + - "Y3B1OiAiOCIKICAgICAgICAgICAgbWVtb3J5OiA4MTkyTWkKICAgICAgICAgIHJlcXVlc3RzOgog" + - "ICAgICAgICAgICBjcHU6ICIyIgogICAgICAgICAgICBtZW1vcnk6IDQwOTZNaQpgYGAKCllBTUwg" + - "bWVyZ2UgZ290Y2hhOiBXaGVuIGEgcmVsZWFzZSB1c2VzIGA8PDogKmRlcGVuZGVuY3lgIG9yIGBp" + - "bmhlcml0YCwgc3BlY2lmeWluZyBgdmFsdWVzOmAgcmVwbGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFs" + - "dWVzIGxpc3QuIFlvdSBtdXN0IHJlLWluY2x1ZGUgYGdsb2JhbC55YW1sLmdvdG1wbGAgYW5kIHRo" + - "ZSBzZWNyZXRzIGZpbGUuCgojIyMgUHJldmlldyBhbmQgYXBwbHkgYSBzaW5nbGUgcmVsZWFzZQoK" + - "YGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3Nh" + - "bmRyYSB0ZW1wbGF0ZSAgIyBQcmV2aWV3CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + - "bGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMgICAgICAjIEFwcGx5CmBgYAoKIyMgSW1hZ2UgUHVs" + - "bCBTZWNyZXRzCgpUaGVyZSBhcmUgdGhyZWUgZGlzdGluY3QgY3JlZGVudGlhbCB0eXBlcy4gRG8g" + - "bm90IGNvbmZsYXRlIHRoZW0sIGFuZCBtaW5kIHRoZQpmb3JtYXQgcnVsZSBiZWxvdyAodHdvIG9m" + - "IHRoZW0gZmFpbCBldmVuIHdpdGggdGhlIGNvcnJlY3Qga2V5IGlmIHRoZSBmb3JtYXQgaXMgd3Jv" + - "bmcpOgoKfCB8IENvbnRyb2wgUGxhbmUgUHVsbCBTZWNyZXRzIHwgQVBJIEJvb3RzdHJhcCBSZWdp" + - "c3RyeSBDcmVkcyB8IFNpZGVjYXIgSW1hZ2UtUHVsbCBTZWNyZXQgfAp8LS0tfC0tLXwtLS18LS0t" + - "fAp8IFB1cnBvc2UgfCBLOHMgcHVsbHMgTlZDRiBzZXJ2aWNlIGltYWdlcyB8IG52Y2YtYXBpIHZh" + - "bGlkYXRlcyB0aGUgdXNlciBmdW5jdGlvbiBpbWFnZSBhdCBgZnVuY3Rpb24gY3JlYXRlYCB8IG52" + - "Y2YtYXBpIHB1bGxzIHRoZSBwbGF0Zm9ybSBzaWRlY2FycyBpbmplY3RlZCBpbnRvIGV2ZXJ5IHdv" + - "cmtlciBwb2QgfAp8IFdoZXJlIHwgSzhzIGBkb2NrZXItcmVnaXN0cnlgIFNlY3JldHMgKyBLeXZl" + - "cm5vIENsdXN0ZXJQb2xpY3kgfCBgPHByaXZhdGUtdmFsdWVzPi88ZW52Pi1zZWNyZXRzLnlhbWxg" + - "IChhY2NvdW50LWJvb3RzdHJhcCkgfCBgTlZDRl9BUElfU0lERUNBUlNfSU1BR0VfUFVMTF9TRUNS" + - "RVRgIGluIGA8ZW52Pi1zZWNyZXRzLnlhbWxgIC0+IE9wZW5CYW8gYHNlcnZpY2VzL252Y2YtYXBp" + - "L2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0YCAoZmllbGQgYHNlY3JldGApIHwKfCBGb3Jt" + - "YXQgfCBzdGFuZGFyZCBgLmRvY2tlcmNvbmZpZ2pzb25gIChrdWJlY3RsIGJ1aWxkcyBpdCBmb3Ig" + - "eW91KSB8IGBiYXNlNjQoIiRvYXV0aHRva2VuOjxrZXk+IilgIHwgYGJhc2U2NCgiJG9hdXRodG9r" + - "ZW46PGtleT4iKWAgfAoKPiBOb3RlOiB0aGUgYWNjb3VudC1ib290c3RyYXAgY3JlZCBhbmQgdGhl" + - "IHNpZGVjYXIgc2VjcmV0IGFyZSBOT1QgYQo+IGRvY2tlcmNvbmZpZ2pzb24uIFRoZSBzZWNyZXRz" + - "IHRlbXBsYXRlIHNoaXBzIHRoZSBwbGFjZWhvbGRlcgo+IGBSRVBMQUNFX1dJVEhfQkFTRTY0X0RP" + - "Q0tFUl9DUkVERU5USUFMYCwgd2hpY2ggcmVhZHMgYXMgImJhc2U2NCBvZiBhIGRvY2tlcmNvbmZp" + - "Z2pzb24uIgo+IEl0IGlzbid0LiBCb3RoIHZhbHVlcyBhcmUgY29uc3VtZWQgYXMgYSByYXcgZG9j" + - "a2VyIGBhdXRoYCBzdHJpbmc6IG52Y2YtYXBpIHRha2VzIHRoZQo+IHZhbHVlIHZlcmJhdGltIGFu" + - "ZCBkcm9wcyBpdCBpbnRvIHRoZSBgYXV0aGAgZmllbGQgb2YgdGhlIGRvY2tlcmNvbmZpZyBpdCBi" + - "dWlsZHMuIFNvIHRoZQo+IHZhbHVlIG11c3QgYmUgYGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4i" + - "KWAsIGUuZy4gYHByaW50ZiAnJG9hdXRodG9rZW46JXMnICIkS0VZIiB8IG9wZW5zc2wgYmFzZTY0" + - "IC1BYCwKPiBub3QgYGJhc2U2NCg8ZG9ja2VyY29uZmlnanNvbj4pYC4KPgo+IC0gV3JvbmcgYWNj" + - "b3VudC1ib290c3RyYXAgdmFsdWU6IGBmdW5jdGlvbiBjcmVhdGVgIHJldHVybnMKPiAgICBgNDAw" + - "ICJtdXN0IGJlIGJhc2U2NCBlbmNvZGVkIHVzZXJuYW1lOnBhc3N3b3JkIGZvcm1hdCJgLgo+IC0g" + - "V3Jvbmcgc2lkZWNhciB2YWx1ZTogZXZlcnkgd29ya2VyJ3Mgc2lkZWNhciBwdWxsIGdldHMgYSBt" + - "YWxmb3JtZWQgY3JlZGVudGlhbCBhbmQKPiAgICBgNDAzYHMsIHJlZ2FyZGxlc3Mgb2Ygd2hpY2gg" + - "a2V5IGlzIGluc2lkZS4gVGhlIHN5bXB0b20gbG9va3MgbGlrZSBhIGJhZCBvciB3cm9uZy1vcmcK" + - "PiAgICBrZXksIGJ1dCB0aGUga2V5IGlzIGZpbmUgYW5kIHRoZSBlbmNvZGluZyBpcyB0aGUgYnVn" + - "LiBUbyByZXBhaXIgYW4gYWxyZWFkeS1pbnN0YWxsZWQKPiAgICBzdGFjayB3aXRob3V0IGEgZnVs" + - "bCByZS1zeW5jOgo+Cj4gICAgYGBgYmFzaAo+ICAgIEFVVEg9JChwcmludGYgJyRvYXV0aHRva2Vu" + - "OiVzJyAiJEtFWSIgfCBvcGVuc3NsIGJhc2U2NCAtQSkKPiAgICBiYW8ga3YgcHV0IHNlcnZpY2Vz" + - "L252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0IHNlY3JldD0iJEFVVEgiCj4g" + - "ICAgIyBpZiBOVklESUEgQ2xvdWQgVGFza3MgaXMgZW5hYmxlZCwgcmVwZWF0IGZvciBzZXJ2aWNl" + - "cy9udmN0LWFwaS9rdi9zaWRlY2Fycy9pbWFnZS1wdWxsLXNlY3JldAo+ICAgIGt1YmVjdGwgcm9s" + - "bG91dCByZXN0YXJ0IC1uIG52Y2YgZGVwbG95L252Y2YtYXBpICAgIyBwaWNrcyB1cCB0aGUgbmV3" + - "IHNpZGVjYXIgY3JlZAo+ICAgIGBgYAo+Cj4gTm90ZSAobXVsdGktb3JnKTogd2hlbiBwdWxsaW5n" + - "IGZyb20gTkdDIChub3QgYSBtaXJyb3IpLCB0aGUgdXNlciBmdW5jdGlvbiBpbWFnZSBhbmQKPiB0" + - "aGUgcGxhdGZvcm0gc2lkZWNhcnMgb2Z0ZW4gbGl2ZSBpbiBkaWZmZXJlbnQgbnZjci5pbyBvcmdz" + - "LCBlYWNoIG5lZWRpbmcgYSBkaWZmZXJlbnQKPiBrZXksIHNvIHRoZSBhY2NvdW50LWJvb3RzdHJh" + - "cCBjcmVkIChmdW5jdGlvbiBpbWFnZSkgYW5kIHRoZSBzaWRlY2FyIHNlY3JldCAoc2lkZWNhcnMp" + - "Cj4gYXJlIGZyZXF1ZW50bHkgdHdvIGRpZmZlcmVudCBrZXlzLiBNaXJyb3JpbmcgZXZlcnl0aGlu" + - "ZyBpbnRvIGEgc2luZ2xlIHJlZ2lzdHJ5IHRoZQo+IGNsdXN0ZXIgYXV0aGVudGljYXRlcyB0byBh" + - "dXRvbWF0aWNhbGx5IGNvbGxhcHNlcyB0aGlzIHRvIG9uZSBjcmVkZW50aWFsIHBhdGguCgojIyMg" + - "Q29uZmlndXJpbmcgd2l0aCBLeXZlcm5vIChyZWNvbW1lbmRlZCkKClVzZSBhIEt5dmVybm8gbXV0" + - "YXRpbmcgYWRtaXNzaW9uIHBvbGljeSB0byBhdXRvbWF0aWNhbGx5IGluamVjdCBgaW1hZ2VQdWxs" + - "U2VjcmV0c2AgaW50byBhbGwgcG9kcyBpbiBOVkNGIG5hbWVzcGFjZXMuIFRoaXMgd29ya3MgdW5p" + - "Zm9ybWx5IGZvciBhbGwgY2hhcnRzIC0tIG5vIHBlci1jaGFydCBjb25maWd1cmF0aW9uIG9yIGhl" + - "bG1maWxlIG1vZGlmaWNhdGlvbnMgbmVlZGVkLgoKYGBgYmFzaAojIDEuIEluc3RhbGwgS3l2ZXJu" + - "bwpoZWxtIHJlcG8gYWRkIGt5dmVybm8gaHR0cHM6Ly9reXZlcm5vLmdpdGh1Yi5pby9reXZlcm5v" + - "LwpoZWxtIHJlcG8gdXBkYXRlCmhlbG0gaW5zdGFsbCBreXZlcm5vIGt5dmVybm8va3l2ZXJubyAt" + - "biBreXZlcm5vIC0tY3JlYXRlLW5hbWVzcGFjZQoKIyAyLiBDcmVhdGUgcHVsbCBzZWNyZXQgaW4g" + - "ZWFjaCBuYW1lc3BhY2UKZXhwb3J0IE5HQ19BUElfS0VZPSI8eW91ci1rZXk+Igpmb3IgbnMgaW4g" + - "Y2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQt" + - "c3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJl" + - "Z2lzdHJ5IG52Y3ItY3JlZHMgXAogICAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogICAgLS1k" + - "b2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgICAtLWRvY2tlci1wYXNzd29yZD0iJE5H" + - "Q19BUElfS0VZIiBcCiAgICAtLW5hbWVzcGFjZT0iJG5zIiBcCiAgICAtLWRyeS1ydW49Y2xpZW50" + - "IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KZG9uZQoKIyAzLiBBcHBseSB0aGUgS3l2ZXJu" + - "byBDbHVzdGVyUG9saWN5Cmt1YmVjdGwgYXBwbHkgLWYga3l2ZXJuby1pbWFnZXB1bGxzZWNyZXQt" + - "cG9saWN5LnlhbWwKYGBgCgpUaGUgcG9saWN5IG11dGF0ZXMgZXZlcnkgcG9kIGF0IGFkbWlzc2lv" + - "biB0aW1lLCBhZGRpbmcgYGltYWdlUHVsbFNlY3JldHM6IFt7bmFtZTogbnZjci1jcmVkc31dYC4g" + - "VmVyaWZ5IHdpdGg6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9k" + - "LW5hbWU+IC1vIGpzb25wYXRoPSd7LnNwZWMuaW1hZ2VQdWxsU2VjcmV0c30nCiMgU2hvdWxkIHNo" + - "b3c6IFt7Im5hbWUiOiJudmNyLWNyZWRzIn1dCmBgYAoKTm90IG5lZWRlZCBpZiB1c2luZyBhIENT" + - "UCBidWlsdC1pbiBjcmVkZW50aWFsIGhlbHBlciAoZS5nLiwgRUNSIHdpdGggSUFNIG5vZGUgcm9s" + - "ZXMpLgoKRm9yIHRoZSBLeXZlcm5vIHBvbGljeSBZQU1MIGFuZCBwdWxsIHNlY3JldCBjcmVhdGlv" + - "biBzY3JpcHQsIHNlZSBbcmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWRdKHJlZmVyZW5jZXMvcHVs" + - "bC1zZWNyZXRzLm1kKS4KCiMjIERlYnVnZ2luZwoKIyMjIFF1aWNrIHN0YXR1cyBjaGVjawoKYGBg" + - "YmFzaAprdWJlY3RsIGdldCBwb2RzIC1BIC1vIHdpZGUgICAgICAgICAgICAgICAgICAgICAgICAj" + - "IEFsbCBwb2RzCmhlbG0gbGlzdCAtQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + - "ICAgICAjIEFsbCBoZWxtIHJlbGVhc2VzCmt1YmVjdGwgZ2V0IGV2ZW50cyAtbiA8bnM+IC0tc29y" + - "dC1ieT0nLmxhc3RUaW1lc3RhbXAnICAjIFJlY2VudCBldmVudHMKYGBgCgojIyMgQ29tbW9uIGZh" + - "aWx1cmUgcGF0dGVybnMKCnwgU3ltcHRvbSB8IENhdXNlIHwgRml4IHwKfC0tLS0tLS0tLXwtLS0t" + - "LS0tfC0tLS0tfAp8IGBJbWFnZVB1bGxCYWNrT2ZmYCArIGA0MDEgVW5hdXRob3JpemVkYCB8IE1p" + - "c3Npbmcgb3Igd3JvbmcgcHVsbCBzZWNyZXQgfCBDaGVjayBzZWNyZXQgZXhpc3RzLCBjaGVjayBT" + - "QSBoYXMgaW1hZ2VQdWxsU2VjcmV0cyB8CnwgYEluaXQ6MC8xYCBzdHVjayBvbiBzZXJ2aWNlIHBv" + - "ZHMgfCBWYXVsdC1hZ2VudCB3YWl0aW5nIGZvciBPcGVuQmFvIHwgQ2hlY2sgT3BlbkJhbyBwb2Rz" + - "ICsgbWlncmF0aW9uIGpvYiBzdGF0dXMgfAp8IGBJbml0OjAvMWAgKyBgdmF1bHQtYWdlbnQtaW5p" + - "dGAgc2hvd3MgYGF1dGgvand0L2xvZ2luYCAtPiBgNDAwIC4uLiBubyBrbm93biBrZXkgc3VjY2Vz" + - "c2Z1bGx5IHZhbGlkYXRlZCB0aGUgdG9rZW4gc2lnbmF0dXJlYCB8IE9wZW5CYW8gSldUIGF1dGgg" + - "Y29uZmlndXJlZCB3aXRoIGEgc3RhdGljIHB1YmtleSBpbnN0ZWFkIG9mIHRoZSBjbHVzdGVyJ3Mg" + - "bGl2ZSBKV0tTIC0tIHRoZSBiYXNlIGRlZmF1bHQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJE" + - "aXNjb3ZlcnkuZW5hYmxlZDogZmFsc2VgLiBDb21tb24gb24gQUtTIC8gYW55IE9JREMtaXNzdWVy" + - "IGNsdXN0ZXIgfCBTZXQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxl" + - "ZDogdHJ1ZWAsIGRlbGV0ZSBqb2IgYG9wZW5iYW8tc2VydmVyLW1pZ3JhdGlvbnNgLCByZS1zeW5j" + - "IGBvcGVuYmFvLXNlcnZlcmAuIFNlZSBbcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRdKHJlZmVyZW5j" + - "ZXMvZGVidWdnaW5nLm1kKSAiSW5pdDowLzEgU3R1Y2siIGZpeCAjNC4gfAp8IGBPT01LaWxsZWRg" + - "IG9uIENhc3NhbmRyYSB8IERlZmF1bHQgcmVzb3VyY2VzIHRvbyBzbWFsbCB8IE92ZXJyaWRlIGBj" + - "YXNzYW5kcmEucmVzb3VyY2VzYCB2aWEgdmFsdWVzIGJsb2NrIHwKfCBEQi1iYWNrZWQgc2Vydmlj" + - "ZXMgY3Jhc2gtbG9vcCBgQmFkIGNyZWRlbnRpYWxzYCBjb25uZWN0aW5nIHRvIENhc3NhbmRyYSB8" + - "IFNlY3JldHMgZmlsZSBzZXQgb25seSBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgOyBgY2Fz" + - "c2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHN0aWxsIGRlZmF1bHRzIHRvIGBjaEBuZzNtM2Ag" + - "fCBTZXQgYGNhc3NhbmRyYS5zZXJ2aWNlUm9sZVBhc3N3b3JkYCBpbiB0aGUgc2VjcmV0cyBmaWxl" + - "IGVxdWFsIHRvIGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAsIHRoZW4gcmUtc3luYyBjYXNz" + - "YW5kcmEgKyB0aGUgREItYmFja2VkIHNlcnZpY2VzIHwKfCBgUGVuZGluZ2AgcG9kcyB8IE5vZGUg" + - "c2VsZWN0b3IgbWlzbWF0Y2ggb3Igbm8gc3RvcmFnZSBjbGFzcyB8IGBrdWJlY3RsIGRlc2NyaWJl" + - "IHBvZGAsIGNoZWNrIGxhYmVscyBhbmQgc3RvcmFnZSB8CnwgSGVsbSByZWxlYXNlIGluIGBmYWls" + - "ZWRgIHN0YXRlIHwgRmlyc3QgaW5zdGFsbCBmYWlsZWQgcGFydHdheSB8IGBoZWxtZmlsZSBkZXN0" + - "cm95YCB0aGUgcmVsZWFzZSwgdGhlbiBgc3luY2AgYWdhaW4gfAp8IEFjY291bnQgYm9vdHN0cmFw" + - "IHRpbWVvdXQgfCBXcm9uZyBiYXNlNjQgY3JlZGVudGlhbHMgaW4gc2VjcmV0cyBmaWxlIHwgQ2hl" + - "Y2sgYGt1YmVjdGwgbG9ncyBqb2IvbnZjZi1hcGktYWNjb3VudC1ib290c3RyYXAgLW4gbnZjZmAg" + - "fAp8IGZ1bmN0aW9uIC8gYWNjb3VudCBjYWxscyByZXR1cm4gYDQwNCBVbmtub3duIGNsaWVudF9p" + - "ZGAgfCBUaGUgYWNjb3VudC1ib290c3RyYXAgcG9zdC1pbnN0YWxsIGhvb2sgbmV2ZXIgcmFuOiB0" + - "aGUgYGFwaWAgcmVsZWFzZSBpbnN0YWxsIGZhaWxlZCwgb3Igd2FzIHJlcGFpcmVkIHdpdGggbGl2" + - "ZSBwYXRjaGVzIGluc3RlYWQgb2YgYSBjbGVhbiByZS1zeW5jLCBzbyB0aGUgaG9vayAoYW5kIHRo" + - "ZSBhY2NvdW50KSB3YXMgc2tpcHBlZCB8IFZlcmlmeSBhbmQgcmUtcnVuIHRoZSBob29rOyBzZWUg" + - "W1ZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAgcmFuXSgjdmVyaWZ5LXRoZS1hY2NvdW50LWJv" + - "b3RzdHJhcC1yYW4pIHwKfCBTZXJ2aWNlcyBmYWlsIHRvIHJlYWQgdmF1bHQgc2VjcmV0czsgYHNl" + - "Y3JldHMuanNvbmAgbm90IGZvdW5kIHwgVmF1bHQgcGF0aCBoYXJkY29kZWQgdG8gYC9ob21lL2Fw" + - "cC92YXVsdC9gIGluIGBfaGVscGVycy50cGxgOyB0aGUgcnVudGltZSByZXNvbHZlcyB0aGUgbW91" + - "bnRlZCBwYXRoIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBhbmQgZHJvcHMgdGhl" + - "IGxlYWRpbmcgYC9gIHwgT3ZlcnJpZGUgYHBvZEFubm90YXRpb25zYCBhbmQgc2V0IGBKQVZBX1RP" + - "T0xfT1BUSU9OUzogIi1EdXNlci5kaXI9LyJgIGluIHJlbGVhc2UgdmFsdWVzIHwKfCBOQVRTIGNv" + - "bm5lY3Rpb24gZmFpbHMgYXQgc3RhcnR1cDsgcGxhY2VtZW50IHRhZyBtaXNtYXRjaCB8IE5BVFMg" + - "c2VydmVyIHRhZ3MgaGFyZGNvZGVkIHRvIGBkYzpuY3BgOyBhcHAgZGVyaXZlcyB0YWcgZnJvbSBg" + - "QVdTX1JFR0lPTmAgKGUuZy4sIGB1cy1nb3Ytd2VzdC0xYCkgfCBTZXQgYEFXU19SRUdJT049bmNw" + - "YCBhbmQgYE5WQ0ZfQVdTX1JFR0lPTj1uY3BgIGluIGVudiBjb25maWcgfAoKIyMjIFZlcmlmeSB0" + - "aGUgYWNjb3VudCBib290c3RyYXAgcmFuCgpUaGUgZGVmYXVsdCBhY2NvdW50IGlzIGNyZWF0ZWQg" + - "YnkgYSAqKmBwb3N0LWluc3RhbGxgIGhvb2sgb24gdGhlIGBhcGlgIHJlbGVhc2UqKgooYGpvYi9u" + - "dmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcGAgaW4gYG52Y2ZgKS4gQmVjYXVzZSBpdCBpcyBhIHBv" + - "c3QtaW5zdGFsbCBob29rLCBpdCBvbmx5CmZpcmVzIG9uIGEgc3VjY2Vzc2Z1bCBgYXBpYCBpbnN0" + - "YWxsLiBJZiB0aGF0IGluc3RhbGwgZmFpbGVkIGFuZCB5b3UgcmVwYWlyZWQgaXQgd2l0aCBsaXZl" + - "CnBhdGNoZXMgKHJhdGhlciB0aGFuIGEgY2xlYW4gcmUtc3luYyksIHRoZSBob29rIG5ldmVyIHJ1" + - "bnMsIG5vIGFjY291bnQgaXMgY3JlYXRlZCwgYW5kCmV2ZXJ5IHN1YnNlcXVlbnQgZnVuY3Rpb24v" + - "YWNjb3VudCBjYWxsIHJldHVybnMgYSBjcnlwdGljIGA0MDQgVW5rbm93biBjbGllbnRfaWRgIHdp" + - "dGgKbm90aGluZyBvYnZpb3VzbHkgd3JvbmcgaW4gdGhlIHJ1bm5pbmcgcG9kcy4KClZlcmlmeSBp" + - "dCByYW4gYWZ0ZXIgdGhlIGZpcnN0IHN5bmM6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGpvYiAtbiBu" + - "dmNmIG52Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIFwKICAtbyBqc29ucGF0aD0ney5zdGF0dXMu" + - "c3VjY2VlZGVkfScgICAjIGV4cGVjdCAxCmBgYAoKSWYgdGhlIGpvYiBpcyBhYnNlbnQgb3IgYDBg" + - "LCByZS1ydW4gaXQgYnkgcmUtc3luY2luZyB0aGUgYGFwaWAgcmVsZWFzZSBzbyB0aGUgaG9vayBm" + - "aXJlcwphZ2FpbiAoZGVsZXRlIHRoZSBwcmlvciBqb2IgZmlyc3QgaWYgaXQgbGluZ2VycyBpbiBh" + - "IGNvbXBsZXRlZC9mYWlsZWQgc3RhdGUgYW5kIGJsb2NrcyB0aGUKaG9vayk6CgpgYGBiYXNoCmt1" + - "YmVjdGwgZGVsZXRlIGpvYiAtbiBudmNmIG52Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIC0taWdu" + - "b3JlLW5vdC1mb3VuZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1l" + - "PWFwaSBzeW5jCmt1YmVjdGwgbG9ncyAtbiBudmNmIGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3Rz" + - "dHJhcCAgICMgY29uZmlybSB0aGUgYWNjb3VudCB3YXMgY3JlYXRlZApgYGAKCiMjIEFkZGl0aW9u" + - "YWwgUmVzb3VyY2VzCgotIEluc3RhbGxhdGlvbjogW2V4YW1wbGVzLm1kXShleGFtcGxlcy5tZCks" + - "IHRoZSBbQ1NQIEVuZC10by1FbmQgRXhhbXBsZV0oaHR0cHM6Ly9kb2NzLm52aWRpYS5jb20vbnZj" + - "Zi92MC42LjAtcmMvY3NwLWVuZC10by1lbmQtZXhhbXBsZSksIGFuZCBbc3BsaXQgY29tcHV0ZS1w" + - "bGFuZSB3b3JrZmxvd3NdKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQp" + - "Ci0gT3BlcmF0aW9uczogW0hlbG1maWxlIHN0cnVjdHVyZV0ocmVmZXJlbmNlcy9oZWxtZmlsZS1z" + - "dHJ1Y3R1cmUubWQpLCBbcHVsbCBzZWNyZXRzXShyZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCks" + - "IGFuZCBbZGVidWdnaW5nXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCkKCkFmdGVyIGRlcGxveW1l" + - "bnQsIHVzZSB0aGUgYG52Y2Ytc2VsZi1tYW5hZ2VkLWNsaWAgc2tpbGwgdG8gY3JlYXRlIGZ1bmN0" + - "aW9ucywgY3JlYXRlIHRhc2tzLCBtYW5hZ2UgQVBJIGtleXMsIGFuZCBpbnZva2UgZW5kcG9pbnRz" + - "LgpQSwcIEcMUk0liAABJYgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA0AAkAZGF0YS9udmNm" + - "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXZhbHMvZXZhbHMuanNvblVUBQABAKbOElsKICB7" + - "CiAgICAiaWQiOiAiRzEtdmFsaWRhdGUtdG9vbC12ZXJzaW9ucyIsCiAgICAicXVlc3Rpb24iOiAi" + - "SW5zdGFsbCB0aGUgTlZDRiBzZWxmLW1hbmFnZWQgc3RhY2sgb24gbXkgQVdTIEVLUyBjbHVzdGVy" + - "IiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24i" + - "LAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQncyBmaXJzdCBvcGVyYXRpb25hbCBzdGVw" + - "IGFmdGVyIHJlYWRpbmcgdGhlIHNraWxsIHdhcyB0byB2YWxpZGF0ZSBhbGwgcmVxdWlyZWQgdG9v" + - "bCB2ZXJzaW9uczogaGVsbWZpbGUgKG11c3QgYmUgMS4xLngsIG5vdCAxLjIuMCksIGhlbG0gKD49" + - "IDMuMTIpLCBoZWxtLWRpZmYgcGx1Z2luICg+PSAzLjExKSwgYW5kIGt1YmVjdGwgKGNsaWVudCB3" + - "aXRoaW4gMSBtaW5vciBvZiBjbHVzdGVyKS4gSXQgZGlkIG5vdCBwcm9jZWVkIHRvIGhlbG1maWxl" + - "IHN5bmMgdW50aWwgYWxsIHZlcnNpb25zIHdlcmUgdmFsaWRhdGVkLiIsCiAgICAiZXhwZWN0ZWRf" + - "YmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQt" + - "aW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYW55IGFjdGlvbiIsCiAgICAgICJU" + - "aGUgYWdlbnQgcmFuICdoZWxtZmlsZSAtLXZlcnNpb24nIGFuZCB2ZXJpZmllZCBpdCBpcyAxLjEu" + - "eCAobm90IDEuMi4wLCB3aGljaCByZW1vdmVkIHNlcXVlbnRpYWwgbW9kZSkiLAogICAgICAiVGhl" + - "IGFnZW50IHJhbiAnaGVsbSB2ZXJzaW9uJyBhbmQgdmVyaWZpZWQgaXQgaXMgPj0gMy4xMiIsCiAg" + - "ICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHBsdWdpbiBsaXN0JyBhbmQgdmVyaWZpZWQgaGVsbS1k" + - "aWZmID49IDMuMTEgaXMgaW5zdGFsbGVkIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2t1YmVjdGwg" + - "dmVyc2lvbicgdG8gY2hlY2sgY2xpZW50L3NlcnZlciB2ZXJzaW9uIGNvbXBhdGliaWxpdHkiLAog" + - "ICAgICAiVGhlIGFnZW50IGRpZCBub3QgcHJvY2VlZCB0byBoZWxtZmlsZSBzeW5jIHVudGlsIGFs" + - "bCB2ZXJzaW9uIGNoZWNrcyBwYXNzZWQiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzItdGVt" + - "cGxhdGUtYmVmb3JlLXN5bmMiLAogICAgInF1ZXN0aW9uIjogIlF1aWNrLCBqdXN0IHJ1biBoZWxt" + - "ZmlsZSBzeW5jIGZvciBteSBOVkNGIHN0YWNrLCBza2lwIGFsbCB0aGUgY2hlY2tzIiwKICAgICJl" + - "eHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdy" + - "b3VuZF90cnV0aCI6ICJEZXNwaXRlIHRoZSB1c2VyIGFza2luZyB0byBza2lwIGNoZWNrcywgdGhl" + - "IGFnZW50IHN0aWxsIHJhbiBoZWxtZmlsZSB0ZW1wbGF0ZSB0byBwcmV2aWV3IHJlbmRlcmVkIG1h" + - "bmlmZXN0cyBiZWZvcmUgcnVubmluZyBoZWxtZmlsZSBzeW5jLiBJdCBleHBsYWluZWQgd2h5IHRo" + - "ZSBwcmV2aWV3IHN0ZXAgaXMgaW1wb3J0YW50IGFuZCBkaWQgbm90IGJsaW5kbHkgZXhlY3V0ZSBz" + - "eW5jLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0" + - "aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcg" + - "YWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG1maWxlIHRlbXBsYXRlJyBvciAnaGVs" + - "bWZpbGUgLS1zZWxlY3RvciAuLi4gdGVtcGxhdGUnIHRvIHByZXZpZXcgbWFuaWZlc3RzIGJlZm9y" + - "ZSBzeW5jIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IGJsaW5kbHkgcnVuICdoZWxtZmlsZSBz" + - "eW5jJyB3aXRob3V0IGEgdGVtcGxhdGUgcHJldmlldyBzdGVwIiwKICAgICAgIlRoZSBhZ2VudCBl" + - "eHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAgaXMgaW1wb3J0YW50IGV2ZW4gd2hlbiBhc2tl" + - "ZCB0byBza2lwIGl0IgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc1LWRyeXJ1bi1iZWZvcmUt" + - "Y2xlYW51cCIsCiAgICAicXVlc3Rpb24iOiAiTlZDRiBuYW1lc3BhY2VzIGFyZSBzdHVjayBpbiBU" + - "ZXJtaW5hdGluZyBzdGF0ZS4gQ2xlYW4gdGhlbSB1cC4iLAogICAgImV4cGVjdGVkX3NraWxsIjog" + + "aS1waXBlbGluZXMubWRgLiBBIGNhbmNlbGxhdGlvbiAoZXhpdCBgMTMwYCkgZW1pdHMgYGZpbmFs" + + "YCB3aXRoIGBjYW5jZWxsZWQ6IHRydWVgIGluc3RlYWQgb2YgYHBoYXNlX2ZhaWxlZGA7IGB1cGAg" + + "ZW1pdHMgYHBoYXNlX2NhbmNlbGxlZGAgYmVmb3JlIGl0LiBFdmVyeSBvdGhlciBub24temVybyBl" + + "eGl0IGVtaXRzIGEgc3RydWN0dXJlZCBgcGhhc2VfZmFpbGVkYCBKU09OIGV2ZW50IHdpdGggYGVy" + + "ckNhdGVnb3J5YCwgYGVyck1lc3NhZ2VgLCBgcmVtZWRpYXRpb25gIChhcnJheSksIGByZXRyeUNs" + + "YXNzYCAoZW51bTogYG5vbmV8aW1tZWRpYXRlfGJhY2tvZmZ8YWZ0ZXJfcmVtZWRpYXRpb258dW5r" + + "bm93bmApLCBgcmV0cnlBZnRlclNlY2AgKGludCwgb3B0aW9uYWwpLCBhbmQgYHJhd2AgKHN1YnBy" + + "b2Nlc3MgKyBIVFRQICsgS3ViZXJuZXRlcyBzaWduYWwpLiBBbHdheXMgY29uc3VtZSB0aGVzZSBp" + + "biBgLS1qc29uYCBtb2RlIHJhdGhlciB0aGFuIHBhcnNpbmcgRW5nbGlzaCBmcm9tIHN0ZGVyci4K" + + "UEsHCA/3S8WQCAAAkAgAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAALQAJAGRhdGEvbnZjZi1z" + + "ZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9mbGFncy5tZFVUBQABAKbOEiMgYG52Y2YtY2xpYCBm" + + "bGFnIHJlZmVyZW5jZQoKIyMgR2xvYmFsIGZsYWdzIChldmVyeSBzdWJjb21tYW5kKQoKfCBGbGFn" + + "IHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tY29uZmlnIEZJTEVgIHwg" + + "Q29uZmlnIGZpbGUgcGF0aCB8IGAkSE9NRS8ubnZjZi1jbGkueWFtbGAgfAp8IGAtLWRlYnVnYCB8" + + "IFZlcmJvc2UgSFRUUCBsb2dnaW5nIG9uIHN0ZGVyciB8IGBmYWxzZWAgfAp8IGAtLWpzb25gIHwg" + + "SlNPTkwgZXZlbnRzIG9uIHN0ZGVyciB8IGF1dG8gKG9mZiBpbiBUVFksIG9uIHVuZGVyIGAtLW5v" + + "bi1pbnRlcmFjdGl2ZWApIHwKCiMjIGBzZWxmLWhvc3RlZGAgcGFyZW50IChwZXJzaXN0ZW50IGFj" + + "cm9zcyBzdWJjb21tYW5kcykKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18" + + "LS0tfAp8IGAtLWNvbnRyb2wtcGxhbmUtc3RhY2s94oCmYCB8IENvbnRyb2wtcGxhbmUgYnVuZGxl" + + "IHNvdXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwgb3IgYG9jaTovL2AgVVJMIHwgZW1iZWRkZWQg" + + "T0NJIFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24gfAp8IGAtLWNvbXB1dGUtcGxhbmUtc3RhY2s9" + + "4oCmYCB8IENvbXB1dGUtcGxhbmUgYnVuZGxlIHNvdXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwg" + + "b3IgYG9jaTovL2AgVVJMIHwgZW1iZWRkZWQgT0NJIFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24g" + + "fAp8IGAtLWVudj1sb2NhbFx8cHJkXHzigKZgIHwgSGVsbWZpbGUgZW52aXJvbm1lbnQgbmFtZSB8" + + "IGBsb2NhbGAgZm9yIGRldiBidWlsZHMsIGBwcmRgIGZvciByZWxlYXNlcyB8CnwgYC0tbm9uLWlu" + + "dGVyYWN0aXZlYCB8IERpc2FibGUgYWxsIHN0ZGluIHByb21wdHMgfCBgZmFsc2VgIHwKfCBgLS10" + + "b2tlbj0kSldUYCB8IEFkbWluIEpXVCwgb3ZlcnJpZGVzIHN0b3JlZCBzZXNzaW9uIHwgLSB8Cnwg" + + "YC0tbm8tYXBwbHlgIHwgYGluc3RhbGxgIG9ubHkgLSBlbWl0IFlBTUwsIGRvIG5vdCBrdWJlY3Rs" + + "IGFwcGx5IHwgYGZhbHNlYCB8CnwgYC0tb3V0cHV0PXRleHRcfGpzb25gIHwgTGVnYWN5IGFsaWFz" + + "IGZvciBgLS1qc29uYCAoZGVwcmVjYXRlZCwgcmVtb3ZlZCBpbiBuZXh0IG1ham9yKSB8IGB0ZXh0" + + "YCB8CnwgYC0tcGxhaW5gIHwgRm9yY2UgcGxhaW4gc3RyZWFtaW5nIG91dHB1dCB8IGF1dG8tZGV0" + + "ZWN0IHwKfCBgLS13YWl0IERVUkFUSU9OYCB8IGBjaGVja2Agb25seTsgYmxvY2sgdW50aWwgcGFz" + + "cyB8IC0gfAp8IGAtLWNvbnRyb2wtcGxhbmUtY29udGV4dCBDVFhgIHwga3ViZWN0bCBjb250ZXh0" + + "IGZvciBjb250cm9sIHBsYW5lIChSRVEtMjApIHwgY3VycmVudCBjb250ZXh0IHwKfCBgLS1jb21w" + + "dXRlLXBsYW5lLWNvbnRleHQgQ1RYYCB8IGt1YmVjdGwgY29udGV4dCBmb3IgY29tcHV0ZSBwbGFu" + + "ZSAoUkVRLTIwKSB8IGN1cnJlbnQgY29udGV4dCB8CnwgYC0taWNtcy11cmwgVVJMYCB8IFB1Ymxp" + + "YyBJQ01TIFVSTDsgcmVxdWlyZWQgd2hlbiBjb250ZXh0cyBkaWZmZXIgfCBkZXJpdmVkIGZyb20g" + + "YGJhc2VfaHR0cF91cmxgIHwKfCBgLS1sb2NhbC1vbmx5YCB8IGBjaGVja2Agb25seTsgcnVuIHRo" + + "ZSBsb2NhbC1ob3N0IGNoZWNrcyBhbmQgc2tpcCBhbGwga3ViZWN0bCBjb250YWN0LCB3aGF0ZXZl" + + "ciBzY29wZSBmbGFnIGlzIHBhc3NlZC4gVGhlIENMSSBwcmludHMgYSBub3RlIHNheWluZyBzby4g" + + "RW52OiBgTlZDRl9DTElfU0VMRkhPU1RFRF9MT0NBTF9PTkxZYCB8IGBmYWxzZWAgfAoKIyMgYGNo" + + "ZWNrYC1zcGVjaWZpYwoKQXQgbGVhc3Qgb25lIG9mIGAtLXByZWAsIGAtLWNvbnRyb2wtcGxhbmVg" + + "LCBgLS1jb21wdXRlLXBsYW5lYCwgb3IgYC0tYWxsYCBpcwpyZXF1aXJlZC4gRWFjaCBzZWxlY3Rz" + + "IGEgcm9sZTsgb25seSB0aGUgc2VsZWN0ZWQgcm9sZXMgY29udGFjdCBhIGNsdXN0ZXIuCgp8IEZs" + + "YWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1wcmVgIHwgUHJlLWZs" + + "aWdodDogbG9jYWwtaG9zdCB0b29scyBwbHVzIGNsdXN0ZXIgcmVhZGluZXNzLiBTa2lwcyBTSVMg" + + "cmVhY2hhYmlsaXR5LCBzaW5jZSBTSVMgaXMgbm90IGluc3RhbGxlZCB5ZXQsIHVubGVzcyBgLS1h" + + "bGxgIG9yIGAtLWNvbXB1dGUtcGxhbmVgIGlzIGFsc28gcGFzc2VkIHwgYGZhbHNlYCB8CnwgYC0t" + + "Y29udHJvbC1wbGFuZWAgfCBDb250cm9sLXBsYW5lIGNoZWNrcyB8IGBmYWxzZWAgfAp8IGAtLWNv" + + "bXB1dGUtcGxhbmVgIHwgQ29tcHV0ZS1wbGFuZSBjaGVja3MgfCBgZmFsc2VgIHwKfCBgLS1hbGxg" + + "IHwgRXZlcnkgY2F0ZWdvcnksIGluY2x1ZGluZyBTSVMgcmVhY2hhYmlsaXR5IHdoZW4gY29tYmlu" + + "ZWQgd2l0aCBgLS1wcmVgIHwgYGZhbHNlYCB8CnwgYC0tY2x1c3Rlci1uYW1lIE5BTUVgIHwgQ2x1" + + "c3RlciBuYW1lIGZvciBjb21wdXRlLXBsYW5lIGNoZWNrcyB8IC0gfAp8IGAtLXNraXAtaW5vdGlm" + + "eS1jaGVja2AgfCBTa2lwIHRoZSBwZXItbm9kZSBpbm90aWZ5LWxpbWl0cyBwcm9iZS4gTmVlZGVk" + + "IHdoZW4gdGhlIGt1YmVjb25maWcgdXNlciBjYW5ub3QgY3JlYXRlIHBvZHMgaW4gYGRlZmF1bHRg" + + "LiBFbnY6IGBOVkNGX0NMSV9TRUxGSE9TVEVEX1NLSVBfSU5PVElGWWAgfCBgZmFsc2VgIHwKCiMj" + + "IyBDbHVzdGVyLXZhbGlkYXRvciBmbGFncwoKVGhlIHZhbGlkYXRvciBydW5zIGFzIGEgSm9iIGlu" + + "IHRoZSBjbHVzdGVyIGJlaW5nIGNoZWNrZWQuIFRoZSBDTEkgY3JlYXRlcyBhClNlcnZpY2VBY2Nv" + + "dW50LCBDbHVzdGVyUm9sZSwgYW5kIENsdXN0ZXJSb2xlQmluZGluZyBmb3IgaXQgYW5kIHJlbW92" + + "ZXMgdGhlbQphZnRlciB0aGUgcnVuLCBzbyB0aGUga3ViZWNvbmZpZyBjb250ZXh0IG5lZWRzIHBl" + + "cm1pc3Npb24gdG8gbWFuYWdlIHRob3NlLgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8" + + "LS0tfC0tLXwtLS18CnwgYC0tY2x1c3Rlci12YWxpZGF0b3ItaW1hZ2UgUkVGYCB8IFZhbGlkYXRv" + + "ciBpbWFnZS4gUmVzb2x1dGlvbiBvcmRlcjogZmxhZywgYE5WQ0ZfQ0xJX0NMVVNURVJfVkFMSURB" + + "VE9SX0lNQUdFYCwgY29uZmlnIGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfaW1hZ2VgLiBBIHJlZiB3" + + "aXRoIG5vIHRhZyBkaXNjb3ZlcnMgdGhlIGxhdGVzdCBzdGFibGUgdGFnIGZyb20gdGhlIHJlZ2lz" + + "dHJ5LiBVbnNldCBldmVyeXdoZXJlIHNraXBzIHRoZSBwcm9iZSB3aXRoIGEgd2FybmluZyB8IC0g" + + "fAp8IGAtLWNsdXN0ZXItdmFsaWRhdG9yLXJlZ2lzdHJpZXMgaG9zdDpwb3J0LC4uLmAgfCBFeHRy" + + "YSByZWdpc3RyaWVzIHRoZSBjb250cm9sLXBsYW5lIHZhbGlkYXRvciBwcm9iZXMgZm9yIHJlYWNo" + + "YWJpbGl0eS4gVGhleSBhcmUgYWRkZWQgdG8gdGhlIHJlZ2lzdHJpZXMgdGhlIGluc3RhbGwgcHVs" + + "bHMgZnJvbTogdGhlIHZhbGlkYXRvciBpbWFnZSdzIHJlZ2lzdHJ5LCB0aGUgc3RhY2sncyBgZ2xv" + + "YmFsLmltYWdlLnJlZ2lzdHJ5YCwgYW5kIGBxdWF5LmlvYCBmb3IgdGhlIGNlcnQtbWFuYWdlciBB" + + "Q01FIHNvbHZlciB1bmxlc3MgdGhlIHN0YWNrIHNldHMgYGNlcnRNYW5hZ2VyLmFjbWVzb2x2ZXIu" + + "aW1hZ2VgLiBgbnZjci5pb2AgaXMgcHJvYmVkLCBhcyBub24tY3JpdGljYWwsIG9ubHkgd2hlbiBu" + + "ZWl0aGVyIHRoZSBpbWFnZSBub3IgdGhlIHN0YWNrIG5hbWVzIGEgcmVnaXN0cnkuIFJlcGVhdGFi" + + "bGUgb3IgY29tbWEtc2VwYXJhdGVkLiBFbnY6IGBOVkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9S" + + "RUdJU1RSSUVTYDsgY29uZmlnIGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfcmVnaXN0cmllc2AgfCAt" + + "IHwKfCBgLS1jbHVzdGVyLXZhbGlkYXRvci1wcm9iZS1pbWFnZSBSRUZgIHwgSW1hZ2UgZm9yIHRo" + + "ZSBjb250cm9sLXBsYW5lIHZhbGlkYXRvcidzIG5vZGUtdG8tbm9kZSBvdmVybGF5IHByb2JlLiBO" + + "ZWVkcyBgc2hgIGFuZCBhIGJ1c3lib3gtc3R5bGUgYG5jYC4gU2V0IGEgbWlycm9yIGZvciBhaXIt" + + "Z2FwcGVkIGNsdXN0ZXJzLiBFbnY6IGBOVkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9QUk9CRV9J" + + "TUFHRWA7IGNvbmZpZyBrZXkgYGNsdXN0ZXJfdmFsaWRhdG9yX3Byb2JlX2ltYWdlYCB8IGBidXN5" + + "Ym94OjEuMzZgIGZyb20gRG9ja2VyIEh1YiB8CnwgYC0tY2x1c3Rlci12YWxpZGF0b3ItcHVsbC1z" + + "ZWNyZXQgTkFNRWAgfCBkb2NrZXItcmVnaXN0cnkgU2VjcmV0IGluIGBkZWZhdWx0YCB1c2VkIHRv" + + "IHB1bGwgdGhlIHZhbGlkYXRvciBpbWFnZS4gV2hlbiBlbXB0eSwgdGhlIENMSSBsb29rcyBmb3Ig" + + "b25lIGluIHRoZSBOVkNGIG5hbWVzcGFjZXMgYW5kIGNvcGllcyBpdCBpbnRvIGBkZWZhdWx0YCBm" + + "b3IgdGhlIHJ1bi4gRmFpbGluZyB0aGF0LCBhbmQgb25seSBmb3IgYW4gaW1hZ2Ugb24gYW4gTkdD" + + "IHJlZ2lzdHJ5LCBpdCBtaW50cyBvbmUgZnJvbSBgTkdDX0FQSV9LRVlgIHwgYXV0by1kZXRlY3Qg" + + "fAp8IGAtLXNraXAtY2x1c3Rlci12YWxpZGF0aW9uYCB8IFNraXAgdGhlIGluLWNsdXN0ZXIgdmFs" + + "aWRhdG9yIHByb2JlIGVudGlyZWx5LiBBIHZhbGlkYXRvciB0aGF0IGlzIGNvbmZpZ3VyZWQgYnV0" + + "IGNhbm5vdCBydW4gZmFpbHMgdGhlIGNoZWNrLCBzbyB1c2UgdGhpcyB0byBvcHQgb3V0IGV4cGxp" + + "Y2l0bHksIGZvciBleGFtcGxlIHdoZW4gdGhlIGNsdXN0ZXIgY2Fubm90IHB1bGwgdGhlIGltYWdl" + + "LiBFbnY6IGBOVkNGX0NMSV9TRUxGSE9TVEVEX1NLSVBfQ0xVU1RFUl9WQUxJREFUSU9OYCB8IGBm" + + "YWxzZWAgfAp8IGAtLW5vLWNsZWFudXBgIHwgS2VlcCB0aGUgdmFsaWRhdG9yIEpvYiwgaXRzIHBv" + + "ZCwgUkJBQywgcHVsbCBzZWNyZXQgYW5kIENvbmZpZ01hcCBmb3IgZGVidWdnaW5nLiBBIGxhdGVy" + + "IGNoZWNrIHJlY2xhaW1zIHRoZW0gYWZ0ZXIgMjQgaG91cnM7IHRoZSByZXN1bHQgcHJpbnRzIHRo" + + "ZSBga3ViZWN0bCBkZWxldGVgIGNvbW1hbmQgdGhhdCByZW1vdmVzIHRoZW0gbm93IHwgYGZhbHNl" + + "YCB8CnwgYC0tc2hvdy1sb2dzYCB8IFByaW50IHRoZSB2YWxpZGF0b3IgdHJhbnNjcmlwdCB0byBz" + + "dGRlcnIgYWZ0ZXIgdGhlIGNoZWNrIGV2ZW50cy4gVGhlIHRyYW5zY3JpcHQgaXMgbm90IEpTT04s" + + "IGFuZCBgLS1qc29uYCBhbHNvIHdyaXRlcyB0byBzdGRlcnIsIHNvIGxlYXZlIHRoaXMgb2ZmIHdo" + + "ZW4gYSBwYXJzZXIgaXMgcmVhZGluZyB0aGUgc3RyZWFtIHwgYGZhbHNlYCB8CgojIyBgdXBgLXNw" + + "ZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1j" + + "bHVzdGVyLW5hbWUgTkFNRWAgfCBJQ01TIGNsdXN0ZXIgcm93IGlkZW50aWZpZXIgKHJlcXVpcmVk" + + "KSB8IC0gfAp8IGAtLW5jYS1pZCBJRGAgfCBOQ0EgYWNjb3VudCBJRCB8IGBudmNmLWRlZmF1bHRg" + + "IHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IENsdXN0ZXIgcmVnaW9uIHwgYHVzLXdlc3QtMWAgfAp8" + + "IGAtLXBsYW4tb25seWAgfCBEcnktcnVuOyBlbWl0IHBoYXNlIHBsYW4gKyBFVEFzIHdpdGhvdXQg" + + "Y2hhbmdlcyB8IGBmYWxzZWAgfAoKIyMgYHN0YXR1c2Atc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBv" + + "c2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0ZXItbmFtZSBOQU1FYCB8IExp" + + "bWl0IHRvIG9uZSBjb21wdXRlIHBsYW5lIHwgLSAoY29udHJvbCArIGFsbCBjbHVzdGVycykgfAp8" + + "IGAtLXdhdGNoYCB8IExpdmUgcmUtcmVuZGVyIHwgYGZhbHNlYCB8CnwgYC0td2F0Y2gtaW50ZXJ2" + + "YWwgRFVSYCB8IGAtLXdhdGNoYCBjYWRlbmNlIHwgYDVzYCB8CnwgYC0tY29tcG9uZW50IE5BTUVg" + + "IHwgRmlsdGVyIGNvbXBvbmVudHMgcGFuZWwgfCBhbGwgfAp8IGAtLW5vLWV2ZW50c2AgfCBTa2lw" + + "IGV2ZW50cyBwYW5lbCB8IGBmYWxzZWAgfAoKIyMgYGNsdXN0ZXIgcmVnaXN0ZXJgLXNwZWNpZmlj" + + "Cgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1uYW1lIE5B" + + "TUVgIHwgQ2x1c3RlciBuYW1lIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1uY2EtaWQgSURgIHwgTkNB" + + "IElEIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IFJlZ2lvbiB8IGB1cy13" + + "ZXN0LTFgIHwKfCBgLS1pY21zLXVybCBVUkxgIHwgSUNNUyBlbmRwb2ludCB8IGZyb20gY29uZmln" + + "IHwKfCBgLS1pZ25vcmUtZXhpc3RpbmdgIHwgTWF0Y2gtb3ItY3JlYXRlIGluc3RlYWQgb2YgZmFp" + + "bC1vbi1leGlzdHMgfCBgZmFsc2VgIHwKCiMjIGBhcGkta2V5IGdlbmVyYXRlYC1zcGVjaWZpYwoK" + + "fCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tZm9yIGZ1bmN0" + + "aW9uXHx0YXNrYCB8IEdlbmVyYXRlIG9ubHkgdGhlIHNwZWNpZmllZCBrZXkgdHlwZSB8IChvbWl0" + + "IHRvIGdlbmVyYXRlIGJvdGgpIHwKfCBgLS1kZXNjcmlwdGlvbiBURVhUYCB8IEh1bWFuLXJlYWRh" + + "YmxlIGxhYmVsIGZvciB0aGUga2V5IHwgYEdlbmVyYXRlZCBieSBudmNmLWNsaWAgfAp8IGAtLWV4" + + "cGlyZXMtaW4gRFVSQVRJT05gIHwgRXhwaXJ5IG9mZnNldCAoZS5nLiBgMjRoYCwgYDdkYCk7IHBh" + + "cnNlZCBhcyBleHRlbmRlZCBkdXJhdGlvbiB8IGAyNGhgIHwKfCBgLS1zY29wZXMgU0NPUEVbLFND" + + "T1BFXWAgfCBPdmVycmlkZSBkZWZhdWx0IHNjb3BlczsgcmVxdWlyZXMgYC0tZm9yYCB8IChzZXJ2" + + "aWNlIGRlZmF1bHRzKSB8CnwgYC0tdmFsaWRhdGVgIHwgVmFsaWRhdGUgZWFjaCBnZW5lcmF0ZWQg" + + "a2V5IGltbWVkaWF0ZWx5IGFmdGVyIG1pbnRpbmcgfCBgZmFsc2VgIHwKCkV4dGVuZGVkIGR1cmF0" + + "aW9uIHVuaXRzOiBgc2AgKHNlY29uZHMpLCBgbWAgKG1pbnV0ZXMpLCBgaGAgKGhvdXJzKSwgYGRg" + + "IChkYXlzKSwgYHdgICh3ZWVrcykuCgojIyBgZnVuY3Rpb24gY3JlYXRlYC1zcGVjaWZpYwoKYC0t" + + "aW5wdXQtZmlsZSBGSUxFYCBpcyByZWNvbW1lbmRlZCBmb3IgcmVwZWF0YWJsZSBmdW5jdGlvbiBk" + + "ZWZpbml0aW9ucy4gRm9yIGFkLWhvYyBjcmVhdGVzOgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1" + + "bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tbmFtZSBOQU1FYCB8IEZ1bmN0aW9uIG5hbWUgfCAtIHwK" + + "fCBgLS1pbWFnZSBJTUFHRWAgfCBDb250YWluZXIgaW1hZ2UgfCAtIHwKfCBgLS1pbmZlcmVuY2Ut" + + "dXJsIFVSSWAgfCBDb250YWluZXIgaW5mZXJlbmNlIGVuZHBvaW50IHwgLSB8CnwgYC0taW5mZXJl" + + "bmNlLXBvcnQgUE9SVGAgfCBDb250YWluZXIgaW5mZXJlbmNlIHBvcnQgfCAtIHwKfCBgLS1mdW5j" + + "dGlvbi10eXBlIERFRkFVTFRcfFNUUkVBTUlOR1x8TExNYCB8IEZ1bmN0aW9uIHR5cGUgfCBgREVG" + + "QVVMVGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJIHJl" + + "ZmVyZW5jZS4gQ2FuIGJlIHVzZWQgd2l0aCBgLS1mdW5jdGlvbi10eXBlPUxMTWAgZm9yIGNoYXJ0" + + "LXBhY2thZ2VkIExMTSB3b3JrbG9hZHMuIHwgLSB8CnwgYC0taGVsbS1jaGFydC1zZXJ2aWNlIE5B" + + "TUVgIHwgS3ViZXJuZXRlcyBTZXJ2aWNlIG5hbWUgZXhwb3NlZCBieSB0aGUgY2hhcnQuIFJlcXVp" + + "cmVkIHdoZW4gYC0taGVsbS1jaGFydGAgaXMgc2V0LiB8IC0gfAp8IGAtLW1vZGVscyBOQU1FOlZF" + + "UlNJT046VVJJYCB8IFN0YW5kYXJkIG1vZGVsIGFydGlmYWN0OyByZXBlYXRhYmxlIHwgLSB8Cnwg" + + "YC0tbGxtLW1vZGVsIFNQRUNgIHwgTExNIG1vZGVsIGNvbmZpZzsgZm9ybWF0IGBuYW1lPTxtb2Rl" + + "bD4sdXJpcz08dXJpPlx8PHVyaT4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJhdGVMaW1p" + + "dD08bGltaXQ+YDsgcmVwZWF0YWJsZS4gVG9rZW4gbGltaXRzIHVzZSBgPHZhbHVlPi08dW5pdD5g" + + "IHdpdGggYFNgLCBgTWAsIGBIYCwgYERgLCBvciBgV2AsIGZvciBleGFtcGxlIGAxMDAwLVNgLiBV" + + "c2UgaW5wdXQgSlNPTiBmb3IgY29tYmluZWQgdG9rZW4gbGltaXRzIGJlY2F1c2UgaW5saW5lIHNw" + + "ZWNzIHVzZSBjb21tYXMgYXMgZmllbGQgc2VwYXJhdG9ycy4gfCAtIHwKfCBgLS1sbG0tZGVmYXVs" + + "dC1wcmlvcml0eSBQUklPUklUWWAgfCBGdW5jdGlvbi1sZXZlbCBkZWZhdWx0IHJlcXVlc3QgcHJp" + + "b3JpdHkuIExvd2VyIHZhbHVlcyBoYXZlIGhpZ2hlciBwcmlvcml0eS4gfCAtIHwKfCBgLS1sbG0t" + + "cGVyLWFjY291bnQtcHJpb3JpdHkgTkNBLUlEOlBSSU9SSVRZYCB8IFBlci1hY2NvdW50IHByaW9y" + + "aXR5IG92ZXJyaWRlOyByZXBlYXRhYmxlOyBzdXBwb3J0cyB1cCB0byA2NCBkaXN0aW5jdCBOQ0Eg" + + "SUQgb3ZlcnJpZGVzLiBSZXF1aXJlcyBhIGRlZmF1bHQgcHJpb3JpdHkuIHwgLSB8CgpJbiBKU09O" + + "IGFuZCBpbmxpbmUgc3BlY3MsIExMTSBmdW5jdGlvbnMgc2V0IGBmdW5jdGlvblR5cGU6ICJMTE0i" + + "YCBhbmQgbW9kZWwgcm91dGluZyBtZXRhZGF0YSB1bmRlciBgbW9kZWxzW10ubGxtQ29uZmlnYC4g" + + "YGxsbUNvbmZpZy51cmlzYCBkZWNsYXJlcyB0aGUgT3BlbkFJLWNvbXBhdGlibGUgdXBzdHJlYW0g" + + "cGF0aHMgZXhwb3NlZCBieSB0aGUgbW9kZWwuIEN1cnJlbnQgc3VwcG9ydGVkIHBhdGhzIGFyZSBg" + + "L3YxL2NoYXQvY29tcGxldGlvbnNgLCBgL3YxL3Jlc3BvbnNlc2AsIGFuZCBgL3YxL2VtYmVkZGlu" + + "Z3NgLiBgbGxtQ29uZmlnLnJvdXRpbmdNZXRob2RgIGFjY2VwdHMgYHJvdW5kX3JvYmluYCwgYHBv" + + "d2VyX29mX3R3b2AsIGBncm9xX211bHRpcmVnaW9uYCwgYHB1bHNhcmAsIG9yIGByYW5kb21gLgpg" + + "bGxtQ29uZmlnLnRva2VuUmF0ZUxpbWl0YCBhY2NlcHRzIG9uZSBvciBtb3JlIGNvbW1hLXNlcGFy" + + "YXRlZCBwb3NpdGl2ZSBpbnRlZ2VyIHRva2VuIGxpbWl0cyBpbiBgPHZhbHVlPi08dW5pdD5gIGZv" + + "cm1hdC4gU3VwcG9ydGVkIHVuaXRzIGFyZSBgU2AgKHNlY29uZHMpLCBgTWAgKG1pbnV0ZXMpLCBg" + + "SGAgKGhvdXJzKSwgYERgIChkYXlzKSwgYW5kIGBXYCAod2Vla3MpLiBVc2UgZGlzdGluY3QgdW5p" + + "dHMgd2hlbiBjb21iaW5pbmcgbGltaXRzLCBmb3IgZXhhbXBsZSBgMTAwMC1TLDUwMDAtTSwxMDAw" + + "MDAtSCw1MDAwMDAtRCwxMDAwMDAwLVdgIGluIGlucHV0IEpTT04uCgpIZWxtIGNoYXJ0IHBhY2th" + + "Z2luZyBpcyBpbmRlcGVuZGVudCBvZiBgZnVuY3Rpb25UeXBlYC4gRm9yIGEgSGVsbS1jaGFydCBi" + + "YWNrZWQgTExNIGZ1bmN0aW9uLCBzZXQgYGZ1bmN0aW9uVHlwZTogIkxMTSJgLCBgaGVsbUNoYXJ0" + + "YCwgYGhlbG1DaGFydFNlcnZpY2VOYW1lYCwgYW5kIGBtb2RlbHNbXS5sbG1Db25maWdgIGluIHRo" + + "ZSBzYW1lIGNyZWF0ZSByZXF1ZXN0LiBgaW5mZXJlbmNlUG9ydGAgbXVzdCBiZSB0aGUgS3ViZXJu" + + "ZXRlcyBTZXJ2aWNlIHBvcnQgZXhwb3NlZCBieSBgaGVsbUNoYXJ0U2VydmljZU5hbWVgLgoKTExN" + + "IGludm9jYXRpb24gcmVxdWVzdHMgdXNlIGBtb2RlbDogIjxmdW5jdGlvbi1pZD4vPG1vZGVsLW5h" + + "bWU+ImAuIFRoZSBmdW5jdGlvbiBJRCBzZWxlY3RzIHRoZSBOVkNGIGZ1bmN0aW9uLCBhbmQgdGhl" + + "IG1vZGVsIG5hbWUgaXMgZm9yd2FyZGVkIHVwc3RyZWFtLiBDaGF0IGNvbXBsZXRpb25zIGFuZCBS" + + "ZXNwb25zZXMgQVBJIHJlcXVlc3RzIGNhbiB1c2UgYHgtbXVsdGktdHVybi1zZXNzaW9uLWlkYCBm" + + "b3Igc2Vzc2lvbiBzdGlja2luZXNzOyBlbWJlZGRpbmdzIHJlcXVlc3RzIGRvIG5vdC4KCiMjIGBm" + + "dW5jdGlvbiB1cGRhdGVgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8Cnwt" + + "LS18LS0tfC0tLXwKfCBgLS10YWdzIFRBR1ssVEFHXWAgfCBSZXBsYWNlIGZ1bmN0aW9uIHRhZ3Mg" + + "fCAtIHwKfCBgLS1sbG0tbW9kZWwtdXBkYXRlIFNQRUNgIHwgTExNIG1vZGVsIHVwZGF0ZTsgZm9y" + + "bWF0IGBuYW1lPTxtb2RlbD4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJhdGVMaW1pdD08" + + "bGltaXQ+YDsgcmVwZWF0YWJsZS4gUm91dGluZyBtZXRob2RzIG1hdGNoIGAtLWxsbS1tb2RlbGAu" + + "IFRva2VuIGxpbWl0IGV4YW1wbGU6IGAxMDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBmb3IgY29tYmlu" + + "ZWQgdG9rZW4gbGltaXRzLiB8IC0gfAp8IGAtLWxsbS1kZWZhdWx0LXByaW9yaXR5IFBSSU9SSVRZ" + + "YCB8IFJlcGxhY2UgdGhlIGZ1bmN0aW9uLWxldmVsIHByaW9yaXR5IGNvbmZpZ3VyYXRpb24gd2l0" + + "aCB0aGlzIGRlZmF1bHQgYW5kIGFueSBzdXBwbGllZCBwZXItYWNjb3VudCBvdmVycmlkZXMuIHwg" + + "LSB8CnwgYC0tbGxtLXBlci1hY2NvdW50LXByaW9yaXR5IE5DQS1JRDpQUklPUklUWWAgfCBQZXIt" + + "YWNjb3VudCBwcmlvcml0eSBvdmVycmlkZTsgcmVwZWF0YWJsZTsgc3VwcG9ydHMgdXAgdG8gNjQg" + + "ZGlzdGluY3QgTkNBIElEIG92ZXJyaWRlcy4gUmVxdWlyZXMgYSBkZWZhdWx0IHByaW9yaXR5LiB8" + + "IC0gfAoKSW4gSlNPTiwgYGZ1bmN0aW9uIHVwZGF0ZWAgYWNjZXB0cyBgbW9kZWxVcGRhdGVzW11g" + + "IGVudHJpZXMgd2l0aCBgbW9kZWxOYW1lYCBhbmQgYGxsbUNvbmZpZy5yb3V0aW5nTWV0aG9kYCBh" + + "bmQvb3IgYGxsbUNvbmZpZy50b2tlblJhdGVMaW1pdGAuIGB1cmlzYCBhcmUgY3JlYXRlLXRpbWUg" + + "bW9kZWwgbWV0YWRhdGEgYW5kIGFyZSBub3QgcGFydCBvZiBtb2RlbCB1cGRhdGVzLgoKIyMgYGZ1" + + "bmN0aW9uIGRlcGxveSBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJl" + + "Y29tbWVuZGVkIChmdWxsIEpTT04gc3BlYykuIEZvciBhZC1ob2Mgb25lLXNob3QgdXNlOgoKfCBG" + + "bGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tZnVuY3Rpb24taWQg" + + "SURgIHwgRnVuY3Rpb24gSUQgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLWdwdSBOQU1FYCB8IEdQVSBm" + + "YW1pbHkgfCBgSDEwMGAgfAp8IGAtLWluc3RhbmNlLXR5cGUgVFlQRWAgfCBTS1UgfCBgTkNQLkdQ" + + "VS5IMTAwXzF4YCB8CnwgYC0tbWluLWluc3RhbmNlcyBOYCB8IE1pbiByZXBsaWNhcyB8IGAxYCB8" + + "CnwgYC0tbWF4LWluc3RhbmNlcyBOYCB8IE1heCByZXBsaWNhcyB8IGAxYCB8CnwgYC0tbWF4LXJl" + + "cXVlc3QtY29uY3VycmVuY3kgTmAgfCBDb25jdXJyZW5jeSB8IGAwYCAodW5zZXQ7IHNlcnZlciBk" + + "ZWZhdWx0IGFwcGxpZXMpIHwKfCBgLS1jbHVzdGVycyBOQU1FWyxOQU1FXWAgfCBUYXJnZXQgc3Bl" + + "Y2lmaWMgY29tcHV0ZSBjbHVzdGVycyB8IChhbnkgbWF0Y2hpbmcgU0tVKSB8CgojIyBgdGFzayBj" + + "cmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIGZvciBy" + + "ZXBlYXRhYmxlIHRhc2sgZGVmaW5pdGlvbnMuIEZvciBhZC1ob2MgdXNlOgoKfCBGbGFnIHwgUHVy" + + "cG9zZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGAtLW5hbWUgTkFNRWAgfCBUYXNrIG5hbWUg" + + "KHJlcXVpcmVkKSB8IDEtMTI4IGNoYXJzLCBgXlthLXowLTlBLVpdW2EtejAtOUEtWlwtX10qJGAg" + + "fAp8IGAtLWdwdSBHUFVgIHwgR1BVIG5hbWUgKHJlcXVpcmVkIHdpdGhvdXQgYC0taW5wdXQtZmls" + + "ZWApIHwgRXhhbXBsZTogYEgxMDBgIHwKfCBgLS1pbnN0YW5jZS10eXBlIFRZUEVgIHwgSW5zdGFu" + + "Y2UgdHlwZSAocmVxdWlyZWQgd2l0aG91dCBgLS1pbnB1dC1maWxlYCkgfCBFeGFtcGxlOiBgTkNQ" + + "LkdQVS5IMTAwXzF4YCB8CnwgYC0taW1hZ2UgSU1BR0VgIHwgQ29udGFpbmVyIGltYWdlIHwgTXV0" + + "dWFsbHkgZXhjbHVzaXZlIHdpdGggYC0taGVsbS1jaGFydGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hB" + + "UlRgIHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJIHJlZmVyZW5jZSB8IE11dHVhbGx5IGV4Y2x1c2l2" + + "ZSB3aXRoIGAtLWltYWdlYCB8CnwgYC0taW5wdXQtZmlsZSBGSUxFYCB8IEpTT04gdGFzayBzcGVj" + + "IGZpbGUgfCBDTEkgZmxhZ3Mgb3ZlcnJpZGUgSlNPTiB2YWx1ZXMgd2hlbiBib3RoIGFyZSBzZXQg" + + "fAp8IGAtLWJhY2tlbmQgQkFDS0VORGAgfCBCYWNrZW5kIC8gQ1NQIHwgLSB8CnwgYC0tY2x1c3Rl" + + "cnMgTkFNRVssTkFNRV1gIHwgU3BlY2lmaWMgY2x1c3RlcnMgd2l0aGluIHRoZSBpbnN0YW5jZSB8" + + "IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tY29udGFpbmVyLWFyZ3MgQVJHU2AgfCBBcmdzIHBhc3Nl" + + "ZCB3aGVuIGxhdW5jaGluZyB0aGUgY29udGFpbmVyIHwgU2luZ2xlIHN0cmluZywgZS5nLiBgIi0t" + + "ZXBvY2hzIDEwIC0tYmF0Y2gtc2l6ZSAzMiJgIHwKfCBgLS1jb250YWluZXItZW52IE5BTUU9dmFs" + + "dWVgIHwgQ29udGFpbmVyIGVudmlyb25tZW50IHZhcmlhYmxlOyByZXBlYXRhYmxlIHwgLSB8Cnwg" + + "YC0tc2VjcmV0cyBOQU1FPXZhbHVlYCB8IFNlY3JldCBlbnZpcm9ubWVudCB2YXJpYWJsZTsgcmVw" + + "ZWF0YWJsZTsgZW5jcnlwdGVkIGF0IHJlc3QgfCAtIHwKfCBgLS1tYXgtcnVudGltZSBEVVJBVElP" + + "TmAgfCBNYXggd2FsbC1jbG9jayBydW4gdGltZSAoSVNPIDg2MDEsIGUuZy4gYFBUNEhgKSB8IE5v" + + "IGRlZmF1bHQ7IG9taXQgZm9yIG5vIHRpbWUgbGltaXQgfAp8IGAtLW1heC1xdWV1ZWQgRFVSQVRJ" + + "T05gIHwgTWF4IHRpbWUgaW4gcXVldWUgYmVmb3JlIGNhbmNlbGxhdGlvbiAoSVNPIDg2MDEpIHwg" + + "U2VydmVyIGRlZmF1bHQgYFBUNzJIYCB8CnwgYC0tdGVybWluYXRpb24tZ3JhY2UgRFVSQVRJT05g" + + "IHwgR3JhY2UgcGVyaW9kIGFmdGVyIHN0b3Agc2lnbmFsIChJU08gODYwMSkgfCBTZXJ2ZXIgZGVm" + + "YXVsdCBgUFQxSGAgfAp8IGAtLXJlc3VsdC1zdHJhdGVneSBVUExPQURcfE5PTkVgIHwgSG93IHRv" + + "IGhhbmRsZSB0YXNrIG91dHB1dCBhcnRpZmFjdHMgfCAtIHwKfCBgLS1yZXN1bHRzLWxvY2F0aW9u" + + "IExPQ0FUSU9OYCB8IFJlc3VsdCB1cGxvYWQgdGFyZ2V0LCBmb3JtYXQgYG9yZy1uYW1lL1t0ZWFt" + + "LW5hbWUvXW1vZGVsLW5hbWVgOyByZXF1aXJlZCB3aGVuIGAtLXJlc3VsdC1zdHJhdGVneT1VUExP" + + "QURgIHwgLSB8CnwgYC0tbW9kZWxzIE5BTUU6VkVSU0lPTjpVUklgIHwgTW9kZWwgYXJ0aWZhY3Q7" + + "IHJlcGVhdGFibGUgfCAtIHwKfCBgLS1yZXNvdXJjZXMgTkFNRTpWRVJTSU9OOlVSSWAgfCBSZXNv" + + "dXJjZSBhcnRpZmFjdDsgcmVwZWF0YWJsZSB8IC0gfAp8IGAtLXRhZ3MgVEFHWyxUQUddYCB8IFRh" + + "c2sgdGFncyB8IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tZGVzY3JpcHRpb24gVEVYVGAgfCBUYXNr" + + "IGRlc2NyaXB0aW9uIHwgLSB8CnwgYC0tbG9ncy10ZWxlbWV0cnktaWQgVVVJRGAgfCBMb2dzIHRl" + + "bGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfAp8IGAtLW1ldHJpY3MtdGVsZW1ldHJ5LWlkIFVVSURg" + + "IHwgTWV0cmljcyB0ZWxlbWV0cnkgZW5kcG9pbnQgSUQgfCAtIHwKfCBgLS10cmFjZXMtdGVsZW1l" + + "dHJ5LWlkIFVVSURgIHwgVHJhY2VzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfApQSwcIrEyK" + + "o8syAADLMgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA3AAkAZGF0YS9udmNmLXNlbGYtbWFu" + + "YWdlZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOEiMgVHJvdWJsZXNo" + + "b290aW5nCgpLbm93biBlcnJvcnMg4oaSIGRpYWdub3N0aWMgY29tbWFuZCDihpIgcmVtZWRpYXRp" + + "b24uIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBzdHJ1Y3R1cmVkIGBwaGFzZV9mYWlsZWRgIGV2ZW50" + + "cyB0aGUgQ0xJIGVtaXRzIChSRVEtMTUpIOKAlCBldmVyeSBlbnRyeSBiZWxvdyBzaG91bGQgbWFw" + + "IHRvIGFuIGBlcnJDYXRlZ29yeWAgYW5kIGEgYHJlbWVkaWF0aW9uYCBhcnJheS4KCiMjIFByZS1m" + + "bGlnaHQKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18Cnwg" + + "YGt1YmVjdGwgbm90IG9uIFBBVEhgIHwgT3BlcmF0b3IncyBgJFBBVEhgIGRvZXNuJ3QgaW5jbHVk" + + "ZSBrdWJlY3RsIHwgSW5zdGFsbCBrdWJlY3RsIDEuMjgrOiBodHRwczovL2t1YmVybmV0ZXMuaW8v" + + "ZG9jcy90YXNrcy90b29scy9pbnN0YWxsLWt1YmVjdGwvIHwKfCBgaGVsbWZpbGUgbm90IG9uIFBB" + + "VEhgIHwgU2FtZSB8IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWxtZmlsZS9oZWxtZmlsZSNpbnN0YWxs" + + "YXRpb24gfAp8IGBoZWxtIG5vdCBvbiBQQVRIYCB8IFNhbWUgfCBodHRwczovL2hlbG0uc2gvZG9j" + + "cy9pbnRyby9pbnN0YWxsLyB8CnwgYEdhdGV3YXkgQVBJIENSRHMgbm90IGluc3RhbGxlZGAgfCBl" + + "bnZveS1nYXRld2F5IHByZXJlcSBtaXNzaW5nIHwgYGhlbG0gaW5zdGFsbCBlZyBvY2k6Ly9kb2Nr" + + "ZXIuaW8vZW52b3lwcm94eS9nYXRld2F5LWhlbG0gLS1uYW1lc3BhY2U9ZW52b3ktZ2F0ZXdheS1z" + + "eXN0ZW0gLS1jcmVhdGUtbmFtZXNwYWNlYCB8CnwgYGRlZmF1bHQgU3RvcmFnZUNsYXNzIG5vdCBh" + + "dmFpbGFibGVgIHwgQ2x1c3RlciBoYXMgbm8gZGVmYXVsdCBTQyB8IEFubm90YXRlIG9uZTogYGt1" + + "YmVjdGwgcGF0Y2ggc2MgPG5hbWU+IC1wICd7Im1ldGFkYXRhIjp7ImFubm90YXRpb25zIjp7InN0" + + "b3JhZ2VjbGFzcy5rdWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xhc3MiOiJ0cnVlIn19fSdgIHwK" + + "fCBgR1BVIG9wZXJhdG9yIG5vdCBpbnN0YWxsZWRgIChjb21wdXRlLXBsYW5lKSB8IG52aWRpYSBH" + + "UFUgb3BlcmF0b3IgbWlzc2luZyB8IEluc3RhbGwgcGVyIGh0dHBzOi8vZG9jcy5udmlkaWEuY29t" + + "L2RhdGFjZW50ZXIvY2xvdWQtbmF0aXZlL2dwdS1vcGVyYXRvci9sYXRlc3QvaW5zdGFsbC1ncHUt" + + "b3BlcmF0b3IuaHRtbCwgT1IgdXNlIGBmYWtlLWdwdS1vcGVyYXRvcmAgZm9yIGRldiB8CnwgYEdQ" + + "VSBub2RlIGxhYmVscyBtaXNzaW5nYCAoY29tcHV0ZS1wbGFuZSkgfCBOb2RlcyBuZWVkIGBudmlk" + + "aWEuY29tL2dwdS5mYW1pbHlgIGV0Yy4gfCBTZXQgYC0tazNzLW5vZGUtbGFiZWwgbnZpZGlhLmNv" + + "bS9ncHUuZmFtaWx5PWhvcHBlckBhZ2VudDpOYCBmb3IgazNkIHwKCiMjIEF1dGgKCnwgU3ltcHRv" + + "bSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGFkbWluIHRva2VuIHJl" + + "cXVpcmVkYCAoaW5pdCBub3QgcnVuKSB8IE5vIGB+Ly5udmNmLWNsaS5zdGF0ZWAgYW5kIGAtLXRv" + + "a2VuYCBub3QgcGFzc2VkIHwgYG52Y2YtY2xpIGluaXRgIChpbnRlcmFjdGl2ZSkgb3IgYC0tdG9r" + + "ZW49JEpXVCAtLW5vbi1pbnRlcmFjdGl2ZWAgKENJKSB8CnwgYFNpZ25lZCBKV1QgcmVqZWN0ZWQ6" + + "IEFub3RoZXIgYWxnb3JpdGhtIGV4cGVjdGVkLCBvciBubyBtYXRjaGluZyBrZXkocykgZm91bmRg" + + "IHwgU3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQgY29udHJvbCBwbGFuZSB8IGBy" + + "bSB+Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5pdGAgYWdhaW4gfAp8IGA0MDMg" + + "bWlzc2luZyByZXF1ZXN0ZWQgYXV0aG9yaXRpZXNgIChmdW5jdGlvbiBpbnZva2UpIHwgQWRtaW4g" + + "dG9rZW4gZG9lc24ndCBoYXZlIGBpbnZva2VfZnVuY3Rpb25gIHNjb3BlIHwgYG52Y2YtY2xpIGFw" + + "aS1rZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj3igKZgIHRoZW4gcmUtcnVuIGludm9rZSB8Cgoj" + + "IyBJbnN0YWxsIC8gYHVwYAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18" + + "LS0tfC0tLXwKfCBIZWxtIGB0aW1lZCBvdXQgd2FpdGluZyBmb3IgY2Fzc2FuZHJhYCB8IENhc3Nh" + + "bmRyYSBTdGF0ZWZ1bFNldCBQVkMgc3R1Y2sgYFBlbmRpbmdgIHwgQ29uZmlybSBkZWZhdWx0IFN0" + + "b3JhZ2VDbGFzczsgY2hlY2sgYGt1YmVjdGwgZ2V0IHB2LHB2YyAtbiBjYXNzYW5kcmEtc3lzdGVt" + + "YCB8CnwgYEludmFsaWQgR1BVICdOQ1AuR1BVLkgxMDAnIHNwZWNpZmllZGAgKGZ1bmN0aW9uIGRl" + + "cGxveSkgfCBXcm9uZyBmaWVsZCDigJQgYGdwdWAgaXMgdGhlIGZhbWlseSwgbm90IHRoZSBTS1Ug" + + "fCBVc2UgYCJncHUiOiAiSDEwMCJgLCBgImluc3RhbmNlVHlwZSI6ICJOQ1AuR1BVLkgxMDBfMXgi" + + "YCB8CnwgYHJlZ2lvbiBtdXN0IGJlIHByb3ZpZGVkYCAoY2x1c3RlciByZWdpc3RlciAvIGluc3Rh" + + "bGwgLS1jb21wdXRlLXBsYW5lKSB8IGAtLXJlZ2lvbmAgZW1wdHkgKyBgQ0xVU1RFUl9SRUdJT05g" + + "IGVudiBlbXB0eSB8IFBhc3MgYC0tcmVnaW9uPXVzLXdlc3QtMWAgKG9yIGFueSBub24tZW1wdHkg" + + "dmFsdWUpIHwKfCBgcmVxdWlyZWRFbnYgIk5DQV9JRCIgaXMgbm90IHNldGAgKGhlbG1maWxlIGVy" + + "cm9yIGR1cmluZyBjb21wdXRlLXBsYW5lIGFwcGx5KSB8IE9sZGVyIG52Y2YtY2xpIGJlZm9yZSBj" + + "b21taXQgYDZhYTU3MDRgOyBFeHRyYUVudiBub3QgcHJvcGFnYXRpbmcgTkNBX0lEIHwgVXBncmFk" + + "ZSBgbnZjZi1jbGlgIHRvIGEgcmVsZWFzZSBhZnRlciBgNmFhNTcwNGAgfAp8IGBudmNhLW9wZXJh" + + "dG9yOiBJbWFnZVB1bGxCYWNrT2ZmYCBmb3IgYG52Y2Etb3BlcmF0b3I6cHNhdGAgfCBJbWFnZSBu" + + "b3QgaW4gY2x1c3RlciByZWdpc3RyeTsgbXVsdGktY2x1c3RlciBidWlsZCBpcyBsb2NhbCB8IGBr" + + "M2QgaW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Etb3BlcmF0b3I6cHNhdCAtYyA8Y2x1c3Rl" + + "cj5gIHwKCiMjIENvbXB1dGUtcGxhbmUgcnVudGltZQoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1l" + + "ZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBOVkNBIGFnZW50IENyYXNoTG9vcEJhY2tPZmYgd2l0" + + "aCBgSFRUUCA0MDFgIG9uIGAvdjEvbnZjYS9jbHVzdGVycy8uLi4vcmVnaXN0ZXJgIHwgU3RhbGUg" + + "YG91dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIGZyb20gcHJpb3IgcmVnaXN0ZXI7" + + "IGNsdXN0ZXIgSUQgZG9lc24ndCBtYXRjaCBJQ01TIHwgRGVsZXRlIHRoZSBzdGFsZSBmaWxlOyBy" + + "ZS1ydW4gYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwYCAoaWRlbXBvdGVudCByZWdpc3RlciB3cml0" + + "ZXMgYSBmcmVzaCBmaWxlKSB8CnwgYE5vIGNsdXN0ZXIgZm91bmQgd2l0aCB2YWxpZCBKV0tTIGZv" + + "ciBjbHVzdGVyIElEOiA8aWQ+YCAoSUNNUyBsb2cpIHwgSldLUyBpbiBJQ01TIGRvZXNuJ3QgbWF0" + + "Y2ggd2hhdCBjb21wdXRlLXBsYW5lIEs4cyBpcyBjdXJyZW50bHkgc2lnbmluZyB8IGBudmNmLWNs" + + "aSBjbHVzdGVyIHJvdGF0ZSAtLWNsdXN0ZXItaWQ9PGlkPmAgfAp8IEZ1bmN0aW9uIHBvZCBgSW1h" + + "Z2VQdWxsQmFja09mZmAgaW4gYG52Y2YtYmFja2VuZGAgfCBJbWFnZS1jcmVkZW50aWFsLWhlbHBl" + + "ciBjb25maWcgbWlzc2luZyBvciB3cm9uZyB8IGBrdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiBudmNm" + + "LWJhY2tlbmQgPHBvZD5gOyBjaGVjayB0aGUgcHVsbCBzZWNyZXQgY29uZmlnIHwKfCBGdW5jdGlv" + + "biBkZXBsb3kgc3R1Y2sgYERFUExPWUlOR2AgZm9yID41IG1pbiB8IE5BVFMgc3RyZWFtIGluaXQg" + + "bGFnIChjb2xkLWNsdXN0ZXIpIOKAlCB3YWl0LCBvciBjaGVjayBOQVRTIGF1dGgtY2FsbG91dCBo" + + "ZWFsdGggfCBga3ViZWN0bCBsb2dzIC1uIG5hdHMtc3lzdGVtIC1sIGFwcC5rdWJlcm5ldGVzLmlv" + + "L25hbWU9bmF0cy1hdXRoLWNhbGxvdXQtc2VydmljZWAgfAoKIyMgVGFza3MKCnwgU3ltcHRvbSB8" + + "IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYHRhc2sgY3JlYXRlYCByZXR1" + + "cm5zIGBNaXNzaW5nIDxUWVBFPiByZWdpc3RyeSBjcmVkZW50aWFsIGZvciBob3N0bmFtZWAsIG9y" + + "IGtlZXBzIHVzaW5nIGEgcHJldmlvdXMgY3JlZGVudGlhbCB2YWx1ZSwgc2hvcnRseSBhZnRlciBg" + + "cmVnaXN0cnktY3JlZGVudGlhbCBhZGQvdXBkYXRlL2RlbGV0ZWAgd2hpbGUgYHJlZ2lzdHJ5LWNy" + + "ZWRlbnRpYWwgbGlzdGAvYGdldGAgYWxyZWFkeSBzaG93IHRoZSBuZXcgdmFsdWUgfCBFeHBlY3Rl" + + "ZCBwcm9wYWdhdGlvbiBkZWxheTogTlZDVCBjYWNoZXMgdGhlIGFjY291bnQncyByZWdpc3RyeSBj" + + "cmVkZW50aWFscyB3aXRoIGBudmN0Lm52Y2YuY2FjaGUtdHRsYCAoZGVmYXVsdCBgUFQ1TWAsIGFi" + + "b3V0IDUgbWluKSBhbmQgYXBwbGllcyB0aGUgY2hhbmdlIHdoZW4gdGhhdCBjYWNoZWQgY29weSBy" + + "ZWZyZXNoZXMgfCBXYWl0IHVwIHRvIGFib3V0IDUgbWluIGFuZCByZXRyeSwgb3IgYGt1YmVjdGwg" + + "LW4gbnZjZiByb2xsb3V0IHJlc3RhcnQgZGVwbG95bWVudC9udmN0LWFwaWAgdG8gYXBwbHkgaW1t" + + "ZWRpYXRlbHkgfApQSwcI864ThHQRAAB0EQAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAsAAkA" + + "ZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vU0tJTEwubWRVVAUAAQCmzhItLS0K" + + "bmFtZTogbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uCmRlc2NyaXB0aW9uOiA+LQogIElu" + + "c3RhbGwgYW5kIG9wZXJhdGUgTlZDRiBzZWxmLWhvc3RlZCBjb250cm9sLXBsYW5lIGFuZCBzZXBh" + + "cmF0ZSBjb21wdXRlLXBsYW5lCiAgc3RhY2tzLiBDb3ZlcnMgSGVsbWZpbGUgdmFsdWVzIGFuZCBD" + + "TEkgcHJvZmlsZSBpbnN0YWxsYXRpb24gZmxvd3MsIHRlYXJkb3duLAogIHZhbHVlcyBvdmVycmlk" + + "ZXMsIHB1bGwgc2VjcmV0cywgYW5kIHRyb3VibGVzaG9vdGluZy4gVXNlIGZvcgogIG52Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLXN0YWNrLCBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2ssIHNwbGl0IGNvbXB1dGUt" + + "cGxhbmUKICBpbnN0YWxsYXRpb24sIGNvbnRyb2wtcGxhbmUgaW5zdGFsbGF0aW9uLCBDTEktZ2Vu" + + "ZXJhdGVkIGNvbnRyb2wtcGxhbmUKICBwcm9maWxlcywgSGVsbWZpbGUsIHNlbGYtbWFuYWdlZCwg" + + "b3Igc2VsZi1ob3N0ZWQgZGVwbG95bWVudHMuIERvIE5PVCB1c2UgZm9yCiAgbG9jYWwgazNkIGVu" + + "dmlyb25tZW50czsgdXNlIHRoZSBsb2NhbCBrM2QgZGV2ZWxvcG1lbnQgd29ya2Zsb3cgaW5zdGVh" + + "ZC4KbGljZW5zZTogQXBhY2hlLTIuMApjb21wYXRpYmlsaXR5OiBSZXF1aXJlcyBoZWxtZmlsZSA+" + + "PSAxLjEuMCA8IDEuMi4wLCBoZWxtID49IDMuMTIsIGhlbG0tZGlmZiBwbHVnaW4sIGt1YmVjdGwg" + + "bWF0Y2hpbmcgY2x1c3RlciB2ZXJzaW9uCmF1dGhvcjogIm52Y2YtY29yZS1lbmcgPG52Y2YtY29y" + + "ZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCnZlcnNpb246ICIxLjAuMCIKdGFnczogW252Y2Ys" + + "IHNlbGYtbWFuYWdlZCwgaGVsbWZpbGUsIHNlbGYtaG9zdGVkLCBjb250cm9sLXBsYW5lLCBjb21w" + + "dXRlLXBsYW5lLCBjbGktcHJvZmlsZSwgaW5zdGFsbGF0aW9uLCBkZXBsb3ltZW50LCBwdWxsLXNl" + + "Y3JldHNdCnRvb2xzOiBbU2hlbGwsIFJlYWQsIEVkaXQsIEdyZXAsIEdsb2JdCm1ldGFkYXRhOgog" + + "IGludGVybmFsOiBmYWxzZQogIGF1dGhvcjogIm52Y2YtY29yZS1lbmcgPG52Y2YtY29yZS1lbmdA" + + "ZXhjaGFuZ2UubnZpZGlhLmNvbT4iCiAgdmVyc2lvbjogIjEuMCIKICB0YWdzOiBbbnZjZiwgc2Vs" + + "Zi1tYW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQsIGNvbnRyb2wtcGxhbmUsIGNvbXB1dGUt" + + "cGxhbmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24sIGRlcGxveW1lbnQsIHB1bGwtc2VjcmV0" + + "c10KICBsYW5ndWFnZXM6IFtiYXNoLCB5YW1sXQogIGZyYW1ld29ya3M6IFtoZWxtZmlsZSwgaGVs" + + "bSwga3ViZWN0bF0KICBkb21haW46IGNsb3VkLWluZnJhc3RydWN0dXJlCi0tLQoKIyBOVkNGIFNl" + + "bGYtTWFuYWdlZCBTdGFjayBPcGVyYXRpb25zCgpPcGVyYXRpb25hbCBndWlkZSBmb3IgbWF0Y2hp" + + "bmcgTlZDRiBjb250cm9sLXBsYW5lIGFuZCBjb21wdXRlLXBsYW5lIEhlbG1maWxlIGJ1bmRsZXMu" + + "CgojIyBJbnN0cnVjdGlvbnMKClVzZSB0aGlzIHNraWxsIGZvciBpbnN0YWxsLCB1cGdyYWRlLCBv" + + "ciB0ZWFyZG93biB3b3JrIGluIG1hdGNoaW5nIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgYW5k" + + "IGBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXM7IGtlZXAgSGVsbWZpbGUgdmFsdWVz" + + "IGFuZCBDTEkgcHJvZmlsZSBoYW5kb2ZmcyBzZXBhcmF0ZS4gRm9yIGBmdW5jdGlvblR5cGU6ICJM" + + "TE0iYCwgcmVhZCBbTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnRdKHJlZmVyZW5jZXMvaGVsbWZpbGUt" + + "c3RydWN0dXJlLm1kI2xsbS1mdW5jdGlvbi1lbmFibGVtZW50KS4KCiMjIFByZXJlcXVpc2l0ZXMK" + + "CkFzayBmb3IgdGhlIGV4dHJhY3RlZCBgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2tgIHBhdGguIEZv" + + "ciBzcGxpdCBpbnN0YWxsYXRpb24sCmFsc28gcmVxdWlyZSB0aGUgbWF0Y2hpbmctdmVyc2lvbiBg" + + "bnZjZi1jb21wdXRlLXBsYW5lLXN0YWNrYCBwYXRoLiBWZXJpZnkgYm90aDoKCmBgYGJhc2gKbHMg" + + "PGNvbnRyb2wtcGxhbmUtc3RhY2s+L2hlbG1maWxlLmQvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9l" + + "bnZpcm9ubWVudHMvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9zZWNyZXRzLyA8Y29udHJvbC1wbGFu" + + "ZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmxzIDxjb21wdXRlLXBsYW5lLXN0YWNrPi9oZWxt" + + "ZmlsZS5kLyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZW52aXJvbm1lbnRzLyA8Y29tcHV0ZS1wbGFu" + + "ZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmBgYAoKSWYgZWl0aGVyIGRpcmVjdG9yeSBpcyBt" + + "aXNzaW5nLCBkb3dubG9hZCBtYXRjaGluZyBidW5kbGUgdmVyc2lvbnMgZnJvbSBOR0M6CgpgYGBi" + + "YXNoCm5nYyByZWdpc3RyeSByZXNvdXJjZSBkb3dubG9hZC12ZXJzaW9uIDxvcmc+L252Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLXN0YWNrOjx2ZXJzaW9uPgpuZ2MgcmVnaXN0cnkgcmVzb3VyY2UgZG93bmxvYWQt" + + "dmVyc2lvbiA8b3JnPi9udmNmLWNvbXB1dGUtcGxhbmUtc3RhY2s6PHZlcnNpb24+CmBgYAoKQ29u" + + "dHJvbC1wbGFuZSBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhlIGNvbnRyb2wtcGxhbmUgYnVuZGxl" + + "IHJvb3QuIFNwbGl0LWZsb3cKY29tbWFuZHMgYW5kIHJvb3Qgc3Vic3RpdHV0aW9uIGFyZSBpbgpb" + + "U3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFu" + + "ZS1pbnN0YWxsYXRpb24ubWQpLgoKIyMgQmVmb3JlIFlvdSBTdGFydAoKVmVyaWZ5IHRvb2xpbmcg" + + "YW5kIGNvbnRleHQgYmVmb3JlIGFueSBvcGVyYXRpb246CgpgYGBiYXNoCmhlbG1maWxlIC0tdmVy" + + "c2lvbiAgICMgTXVzdCBiZSAxLjEueCAoMS4yLjAgcmVtb3ZlZCBzZXF1ZW50aWFsIG1vZGUpCmhl" + + "bG0gdmVyc2lvbiAgICAgICAgICMgTXVzdCBiZSA+PSAzLjEyCmhlbG0gcGx1Z2luIGxpc3QgICAg" + + "ICMgTXVzdCBpbmNsdWRlIGhlbG0tZGlmZiA+PSAzLjExCmt1YmVjdGwgdmVyc2lvbiAgICAgICMg" + + "Q2xpZW50IG11c3QgYmUgd2l0aGluIDEgbWlub3IgdmVyc2lvbiBvZiBjbHVzdGVyCmBgYAoKQ29u" + + "dHJvbC1wbGFuZSBjb21tYW5kcyBydW4gZnJvbSB0aGUgZXh0cmFjdGVkIGBudmNmLXNlbGYtbWFu" + + "YWdlZC1zdGFjay9gIHJvb3Q6CgpgYGBiYXNoCmNkIHBhdGgvdG8vbnZjZi1zZWxmLW1hbmFnZWQt" + + "c3RhY2sKbHMgaGVsbWZpbGUuZC8gZW52aXJvbm1lbnRzLyBzZWNyZXRzLyBnbG9iYWwueWFtbC5n" + + "b3RtcGwKYGBgCgpJZGVudGlmeSB0aGUgZW52aXJvbm1lbnQgZnJvbSBgZW52aXJvbm1lbnRzLzxu" + + "YW1lPi55YW1sYCBhbmQKYHNlY3JldHMvPG5hbWU+LXNlY3JldHMueWFtbGA7IGZvciBFS1MsIHVz" + + "ZSB0aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2RvY3MubnZp" + + "ZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4KCiMjIEhvdyBW" + + "YWx1ZXMgRmxvdwoKVW5kZXJzdGFuZGluZyB2YWx1ZSBwcmVjZWRlbmNlIHByZXZlbnRzIHRoZSBt" + + "b3N0IGNvbW1vbiBjb25maWd1cmF0aW9uIG1pc3Rha2VzLgoKYGBgdGV4dAplbnZpcm9ubWVudHMv" + + "YmFzZS55YW1sICAgICAgICAgIChkZWZhdWx0cykKICAgIC0+IG1lcmdlZCB3aXRoCmVudmlyb25t" + + "ZW50cy88ZW52Pi55YW1sICAgICAgICAgKHlvdXIgb3ZlcnJpZGVzKQogICAgLT4gY29uc3VtZWQg" + + "YnkKZ2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAoR28gdGVtcGxhdGUsIGNvbnN0cnVj" + + "dHMgcGVyLWNoYXJ0IHZhbHVlcykKICAgIC0+IGNvbnN1bWVkIGJ5CnNlY3JldHMvPGVudj4tc2Vj" + + "cmV0cy55YW1sICAgICAgKHNlbnNpdGl2ZSB2YWx1ZXMpCiAgICAtPiBvdmVycmlkZGVuIGJ5CnJl" + + "bGVhc2UgaW5saW5lIHZhbHVlczogYmxvY2tzICAgKGhpZ2hlc3QgcHJlY2VkZW5jZSkKYGBgCgpD" + + "cml0aWNhbDogYGdsb2JhbC55YW1sLmdvdG1wbGAgb25seSBwYXNzZXMgdGhyb3VnaCBzcGVjaWZp" + + "YyBrZXlzIHRvIGVhY2ggY2hhcnQgKGltYWdlIHJlZ2lzdHJpZXMsIG5vZGUgc2VsZWN0b3JzLCBz" + + "dG9yYWdlLCByZXBsaWNhIGNvdW50cykuIFNldHRpbmcgYW4gYXJiaXRyYXJ5IGNoYXJ0IHZhbHVl" + + "IGluIHRoZSBlbnZpcm9ubWVudCBmaWxlIHdpbGwgYmUgc2lsZW50bHkgaWdub3JlZCBpZiBgZ2xv" + + "YmFsLnlhbWwuZ290bXBsYCBkb2VzIG5vdCBwcm9wYWdhdGUgaXQuCgpUbyBvdmVycmlkZSBhcmJp" + + "dHJhcnkgY2hhcnQgdmFsdWVzLCB1c2UgYSBoZWxtZmlsZSByZWxlYXNlIGB2YWx1ZXM6YCBibG9j" + + "ay4gU2VlIFtPdmVycmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzXSgjb3ZlcnJpZGluZy1oZWxtLWNo" + + "YXJ0LXZhbHVlcykuCgojIyBDbGVhbiBJbnN0YWxsYXRpb24KCiMjIyAxLiBDcmVhdGUgbmFtZXNw" + + "YWNlcyBhbmQgaW1hZ2UgcHVsbCBzZWNyZXRzIChpZiB1c2luZyBhIHByaXZhdGUgcmVnaXN0cnkp" + + "CgpgYGBiYXNoCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBp" + + "LWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgY3Jl" + + "YXRlIG5hbWVzcGFjZSAiJG5zIiAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFw" + + "cGx5IC1mIC0KZG9uZQoKIyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkg" + + "KGUuZy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmZvciBu" + + "cyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2" + + "YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2Nr" + + "ZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAg" + + "ICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3Jk" + + "PSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1j" + + "bGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpkb25lCmBgYAoKSWYgdXNpbmcgcHVs" + + "bCBzZWNyZXRzLCB5b3UgbXVzdCBhbHNvIGNvbmZpZ3VyZSBlYWNoIGhlbG1maWxlIHJlbGVhc2Ug" + + "dG8gcmVmZXJlbmNlIHRoZW0uIFNlZSBbSW1hZ2UgUHVsbCBTZWNyZXRzXSgjaW1hZ2UtcHVsbC1z" + + "ZWNyZXRzKS4KCiMjIyAyLiBBdXRoZW50aWNhdGUgaGVsbSB0byB5b3VyIGNoYXJ0IHJlZ2lzdHJ5" + + "CgpCb3RoIGBkb2NrZXIgbG9naW5gIEFORCBgaGVsbSByZWdpc3RyeSBsb2dpbmAgYXJlIHJlcXVp" + + "cmVkIGZvciBOR0MuIEhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kg" + + "Y2hhcnRzLCBzbyB0aGUgaGVsbSBjcmVkZW50aWFsIHN0b3JlIG11c3QgYmUgYXV0aGVudGljYXRl" + + "ZCBzZXBhcmF0ZWx5LgoKYGBgYmFzaAojIE5HQyAtLSBib3RoIGNvbW1hbmRzIGFyZSByZXF1aXJl" + + "ZApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVki" + + "CmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQ" + + "SV9LRVkiCgojIEVDUgphd3MgZWNyIGdldC1sb2dpbi1wYXNzd29yZCAtLXJlZ2lvbiA8cmVnaW9u" + + "PiB8IFwKICBoZWxtIHJlZ2lzdHJ5IGxvZ2luIC0tdXNlcm5hbWUgQVdTIC0tcGFzc3dvcmQtc3Rk" + + "aW4gPGFjY291bnQ+LmRrci5lY3IuPHJlZ2lvbj4uYW1hem9uYXdzLmNvbQpgYGAKCj4gTm90ZTog" + + "YGhlbG0gcmVnaXN0cnkgbG9naW5gIGtlZXBzIG9ubHkgdGhlIGxhc3QgbG9naW4gcGVyIGhvc3Qg" + + "KG11bHRpLW9yZyBnb3RjaGEpLgo+IFRoZSBzdGFjayBhbmQgdGhlIGNhY2hlcyBzcGFuIHNldmVy" + + "YWwgTkdDIG9yZ3MgdGhhdCBuZWVkIGRpZmZlcmVudCBrZXlzLCBidXQgdGhleSBhbGwKPiBsaXZl" + + "IHVuZGVyIHRoZSBvbmUgaG9zdCBgbnZjci5pb2AuIEEgc2Vjb25kIGBoZWxtIHJlZ2lzdHJ5IGxv" + + "Z2luIG52Y3IuaW9gIChvcgo+IGBkb2NrZXIgbG9naW5gKSB3aXRoIGEgZGlmZmVyZW50IGtleSBz" + + "aWxlbnRseSBvdmVyd3JpdGVzIHRoZSBmaXJzdCwgc28gcHVsbHMgZm9yIHRoZQo+IGZpcnN0IG9y" + + "ZyB0aGVuIGZhaWwgd2l0aCBhIG1pc2xlYWRpbmcgYDQwMyBBY2Nlc3MgRGVuaWVkYCAobm90IGEg" + + "NDAxOiB0aGUgYXV0aAo+IHN1Y2NlZWRlZCwgaXQncyB0aGUgd3Jvbmctb3JnIGtleSkuIElmIHlv" + + "dSBwdWxsIGNoYXJ0cy9pbWFnZXMgZnJvbSBtb3JlIHRoYW4gb25lIG9yZywKPiBlaXRoZXIgcmUt" + + "cnVuIHRoZSBsb2dpbiB3aXRoIHRoZSBjb3JyZWN0IGtleSBpbW1lZGlhdGVseSBiZWZvcmUgZWFj" + + "aCBwdWxsLCBvciBwYXNzCj4gYC0tdXNlcm5hbWUgJyRvYXV0aHRva2VuJyAtLXBhc3N3b3JkIDxr" + + "ZXk+YCBwZXIgYGhlbG0gcHVsbGAgaW52b2NhdGlvbiBpbnN0ZWFkIG9mIHJlbHlpbmcKPiBvbiB0" + + "aGUgc3RvcmVkIGxvZ2luLiAoUHVsbGluZyBldmVyeXRoaW5nIGZyb20gYSBzaW5nbGUgcmVnaXN0" + + "cnkgbWlycm9yIGF2b2lkcyB0aGlzCj4gZW50aXJlbHkuKQoKIyMjIDJiLiAoUmVjb21tZW5kZWQp" + + "IFB1bGwgZnJvbSBhIHJlZ2lzdHJ5IHRoZSBjbHVzdGVyIGF1dGhlbnRpY2F0ZXMgdG8gYXV0b21h" + + "dGljYWxseQoKSWYgeW91IG1pcnJvciB0aGUgTlZDRiBpbWFnZXMgaW50byBhIHJlZ2lzdHJ5IHRo" + + "YXQgdGhlIGNsdXN0ZXIgY2FuIHB1bGwgZnJvbSB3aXRob3V0IGFuCmV4cGxpY2l0IGltYWdlIHB1" + + "bGwgc2VjcmV0IChmb3IgZXhhbXBsZSwgYSByZWdpc3RyeSB3aGVyZSB0aGUgbm9kZSBvciB3b3Jr" + + "bG9hZCBpZGVudGl0eSBpcwpncmFudGVkIHB1bGwgYWNjZXNzIGF1dG9tYXRpY2FsbHkpLCBwb2lu" + + "dCB0aGUgc3RhY2sgYXQgaXQgYW5kIHNraXAgdGhlIGNyZWRlbnRpYWwgc3RlcHMKYWJvdmUuCgox" + + "LiBQb2ludCB0aGUgc3RhY2sgYXQgdGhlIG1pcnJvciBpbiBgZW52aXJvbm1lbnRzLzxlbnY+Lnlh" + + "bWxgOgoKICAgYGBgeWFtbAogICBnbG9iYWw6CiAgICAgaW1hZ2U6CiAgICAgICByZWdpc3RyeTog" + + "PHlvdXItcmVnaXN0cnk+ICAgICAgICAgICAgIyBlLmcuIHJlZ2lzdHJ5LmV4YW1wbGUuY29tCiAg" + + "ICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICAgIGhlbG06CiAgICAgICBzb3Vy" + + "Y2VzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25seSBpZiB5b3UgYWxzbyBtaXJy" + + "b3JlZCB0aGUgaGVsbSBjaGFydHMKICAgICAgICAgcmVnaXN0cnk6IDx5b3VyLXJlZ2lzdHJ5Pgog" + + "ICAgICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICBgYGAKCiAgID4gVGhlIG1h" + + "bmlmZXN0IGhhcyBhIG1peCBvZiBPQ0kgYW5kIG5vbi1PQ0kgYXJ0aWZhY3RzLCBzbyBjb252ZXJ0" + + "IG5vbi1PQ0kgY2hhcnRzIGJlZm9yZQogICA+IG1pcnJvcmluZy4gQ29udGFpbmVyIGltYWdlcyAo" + + "YG52Y3IuaW8vLi4uYCkgYXJlIGFscmVhZHkgT0NJIGFuZCBtaXJyb3IgYXMtaXMuIFNvbWUgSGVs" + + "bQogICA+IGNoYXJ0cywgdGhvdWdoLCBhcmUgcHVibGlzaGVkIHRvIGFuIGBodHRwczovL2AgSGVs" + + "bSByZXBvc2l0b3J5IChmb3IgZXhhbXBsZQogICA+IGBoZWxtLm5nYy5udmlkaWEuY29tYCkuIFRo" + + "b3NlIGFyZSBub3QgT0NJIGFuZCBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgYGdsb2JhbC5oZWxtLnNv" + + "dXJjZXNgCiAgID4gKE9DSSkgb3IgbWlycm9yZWQgZGlyZWN0bHkuIEJlZm9yZSBwb2ludGluZyB0" + + "aGUgc3RhY2sgYXQgeW91ciBtaXJyb3IsIGNvbnZlcnQgZWFjaAogICA+IGBodHRwczovL2AgY2hh" + + "cnQgdG8gT0NJOiBgaGVsbSByZXBvIGFkZGAvYGhlbG0gcHVsbGAgdGhlIGAudGd6YCwgdGhlbgog" + + "ICA+IGBoZWxtIHB1c2ggPGNoYXJ0Pi50Z3ogb2NpOi8vPHlvdXItcmVnaXN0cnk+LzxtaXJyb3It" + + "c3ViLXBhdGg+YC4gT25seSBPQ0kgY2hhcnRzIGNhbiBsaXZlCiAgID4gdW5kZXIgYGdsb2JhbC5o" + + "ZWxtLnNvdXJjZXNgLgoKMi4gU2tpcCB0aGUgY3JlZGVudGlhbCBzdGVwcyBhYm92ZS4gV2hlbiB0" + + "aGUgY2x1c3RlciBhdXRoZW50aWNhdGVzIHRvIHRoZSByZWdpc3RyeQogICBhdXRvbWF0aWNhbGx5" + + "ICh0aGUgbm9kZSBvciB3b3JrbG9hZCBpZGVudGl0eSBoYXMgcHVsbCBhY2Nlc3MpLCB0aGUgcHVs" + + "bCBuZWVkcyBubwogICBLdWJlcm5ldGVzIHNlY3JldCwgc28geW91IGRvIG5vdCBuZWVkOiB0aGUg" + + "cGVyLW5hbWVzcGFjZSBgbnZjci1jcmVkc2AgZnJvbSBzdGVwIDEKICAgKHN0aWxsIGNyZWF0ZSB0" + + "aGUgbmFtZXNwYWNlcywganVzdCBub3QgdGhlIHNlY3JldCksIHRoZSBgZ2xvYmFsLmltYWdlUHVs" + + "bFNlY3JldHNgIGVudHJ5LAogICBvciB0aGUgYGRvY2tlciBsb2dpbmAvYGhlbG0gcmVnaXN0cnkg" + + "bG9naW4gbnZjci5pb2AgZnJvbSBzdGVwIDIuCgogICA+IE9uZSByZXNpZHVhbCBjcmVkZW50aWFs" + + "OiBudmNmLWFwaSBzdGlsbCB2YWxpZGF0ZXMgdGhlIHVzZXIgZnVuY3Rpb24gaW1hZ2UgYXQKICAg" + + "PiBgZnVuY3Rpb24gY3JlYXRlYCB2aWEgdGhlIGFjY291bnQgcmVnaXN0cnkgY3JlZGVudGlhbCwg" + + "c28gdGhhdCBjcmVkZW50aWFsIG11c3QgcG9pbnQgYXQKICAgPiB3aGljaGV2ZXIgcmVnaXN0cnkg" + + "aG9sZHMgdGhlIHVzZXIgaW1hZ2UgKHNldCBpdCB0byB5b3VyIG1pcnJvciBpZiB0aGUgaW1hZ2Ug" + + "aXMgbWlycm9yZWQKICAgPiB0aGVyZSkuCgojIyMgMy4gU2V0IHRoZSByb3V0ZSBkb21haW4KCmBn" + + "bG9iYWwuZG9tYWluYCBzZXRzIHRoZSBob3N0bmFtZSBzdWZmaXggZm9yIHJvdXRlcyBzdWNoIGFz" + + "IGBhcGkuPGRvbWFpbj5gLiBJdCBkb2VzIG5vdCBjb25maWd1cmUgdGhlIEdhdGV3YXkgb3IgaXRz" + + "IGxvYWQgYmFsYW5jZXIuIFF1ZXJ5IHRoZSBleGFjdCBleGlzdGluZyBHYXRld2F5OgoKYGBgYmFz" + + "aApHQVRFV0FZX0FERFJFU1M9JChrdWJlY3RsIGdldCBnYXRld2F5IDxnYXRld2F5LW5hbWU+IC1u" + + "IDxnYXRld2F5LW5hbWVzcGFjZT4gLW8ganNvbnBhdGg9J3suc3RhdHVzLmFkZHJlc3Nlc1swXS52" + + "YWx1ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSRVNTIgpgYGAKClRoZSBhZGRyZXNzIG1heSBi" + + "ZSBhIGhvc3RuYW1lIG9yIElQLiBDbG91ZCBwcm92aWRlciBhbmQgR2F0ZXdheSBjb25maWd1cmF0" + + "aW9uIGRldGVybWluZSB0aGUgbG9hZCBiYWxhbmNlciB0eXBlIGFuZCBhZGRyZXNzIGZvcm1hdC4g" + + "VGhlIHNlbGYtbWFuYWdlZCBzdGFjayBkb2VzIG5vdCBzZWxlY3QgZWl0aGVyLgoKRm9yIHRlbXBv" + + "cmFyeSB0ZXN0aW5nIHdpdGhvdXQgRE5TLCB1c2UgYSBzdGFibGUgcmVzZXJ2ZWQgc3VmZml4IHN1" + + "Y2ggYXMgYGdsb2JhbC5kb21haW46ICJudmNmLnRlc3QiYCwgY29ubmVjdCB0byBgR0FURVdBWV9B" + + "RERSRVNTYCwgYW5kIHNlbmQgYEhvc3Q6IGFwaS5udmNmLnRlc3RgLiBGb3IgcHJvZHVjdGlvbiwg" + + "dXNlIHlvdXIgYmFzZSBETlMgZG9tYWluIGFuZCBwb2ludCBpdHMgcm91dGUgcmVjb3JkcyB0byBg" + + "R0FURVdBWV9BRERSRVNTYC4gSWYgdGhlIGVuZHBvaW50IGxhdGVyIGNoYW5nZXMsIGtlZXAgYGds" + + "b2JhbC5kb21haW5gIHN0YWJsZSBhbmQgdXBkYXRlIG9ubHkgRE5TIG9yIHRoZSBjbGllbnQgZGVz" + + "dGluYXRpb24uIFNlZSBFeGFtcGxlIDQgaW4gW2V4YW1wbGVzLm1kXShleGFtcGxlcy5tZCkuCgoj" + + "IyMgNC4gUHJldmlldyBhbmQgZGVwbG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+" + + "IGhlbG1maWxlIHRlbXBsYXRlICAgIyBQcmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0cwpIRUxNRklM" + + "RV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSBzeW5jICAgICAgICMgRGVwbG95CmBgYAoKPiBTZXQg" + + "Qk9USCBDYXNzYW5kcmEgcGFzc3dvcmRzIGluIHRoZSBzZWNyZXRzIGZpbGUuIFRoZSBzZWNyZXRz" + + "IGZpbGUgZG9jdW1lbnRzCj4gYERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYCwgYnV0IHRoZSBj" + + "YXNzYW5kcmEgY2hhcnQgaGFzIGEgc2Vjb25kIGNyZWRlbnRpYWwsCj4gYGNhc3NhbmRyYS5zZXJ2" + + "aWNlUm9sZVBhc3N3b3JkYCwgdGhhdCBkZWZhdWx0cyB0byBgY2hAbmczbTNgLiBJZiB5b3Ugc2V0" + + "IG9ubHkKPiBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgLCB0aGUgc2VydmljZSByb2xlIGtl" + + "ZXBzIHRoYXQgZGVmYXVsdCBhbmQgZXZlcnkgREItYmFja2VkCj4gc2VydmljZSBjcmFzaC1sb29w" + + "cyB3aXRoIGBCYWQgY3JlZGVudGlhbHNgIG9uY2UgaXQgdHJpZXMgdG8gYXV0aGVudGljYXRlLiBT" + + "ZXQKPiBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHRvIHRoZSBzYW1lIHZhbHVlIGFz" + + "IGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAuCgojIyMgNS4gRGVwbG95bWVudCBwaGFzZXMK" + + "CkhlbG1maWxlIGRlcGxveXMgaW4gb3JkZXIgd2l0aCBkZXBlbmRlbmNpZXM6Cgp8IFBoYXNlIHwg" + + "U2VsZWN0b3IgfCBTZXJ2aWNlcyB8IFdhaXQgdGltZSB8CnwtLS0tLS0tfC0tLS0tLS0tLS18LS0t" + + "LS0tLS0tLXwtLS0tLS0tLS0tLXwKfCAxIHwgYHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzYCB8" + + "IE5BVFMsIE9wZW5CYW8sIENhc3NhbmRyYSB8IDUtMTAgbWluIHwKfCAyIHwgYHJlbGVhc2UtZ3Jv" + + "dXA9c2VydmljZXNgIHwgQVBJLCBTSVMsIEVTUywgaW52b2NhdGlvbiwgZ3JwYy1wcm94eSwgbm90" + + "YXJ5LCBhcGkta2V5cywgb3B0aW9uYWwgTExNIGdhdGV3YXkvcm91dGVyLCBvcHRpb25hbCBWYW5p" + + "dHkgR2F0ZXdheSwgTlZDRiBVSSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoZSBh" + + "ZGRvbiB8IDUtMTAgbWluIHwKfCAzIHwgYHJlbGVhc2UtZ3JvdXA9aW5ncmVzc2AgfCBHYXRld2F5" + + "IHJvdXRlcyB8IDEtMiBtaW4gfAp8IDQgfCBgcmVsZWFzZS1ncm91cD1vYnNlcnZhYmlsaXR5YCB8" + + "IE9ic2VydmFiaWxpdHkgc3RhY2sgKGlmIGVuYWJsZWQpIHwgMS0yIG1pbiB8CgpNb25pdG9yIGlu" + + "IGEgc2VwYXJhdGUgdGVybWluYWw6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLXcKYGBg" + + "CgojIyMgNi4gRW5hYmxlIFZhbml0eSBHYXRld2F5IChvcHRpb25hbCkKClZhbml0eSBHYXRld2F5" + + "IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgYW5kIGlzIG9ubHkgbmVlZGVkIGZvciBjdXN0b21lci1m" + + "YWNpbmcKaG9zdG5hbWVzIG9yIHBhdGggbWFwcGluZ3MgaW4gZnJvbnQgb2YgdGhlIHN0YW5kYXJk" + + "IE5WQ0YgQVBJIGFuZCBpbnZvY2F0aW9uCnJvdXRlcy4gSXQgaXMgYXZhaWxhYmxlIG9ubHkgaW4g" + + "c3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBWYW5pdHkgR2F0ZXdheQphZGRvbi4gSWYg" + + "dGhlIGV4dHJhY3RlZCBzdGFjayBwYWNrYWdlIGRvZXMgbm90IGNvbnRhaW4gYSBgdmFuaXR5LWdh" + + "dGV3YXlgCnJlbGVhc2UgYW5kIGB2YW5pdHlHYXRld2F5YCByb3V0ZSB2YWx1ZXMsIHNraXAgdGhl" + + "c2UgY29tbWFuZHMgYW5kIHVzZSBhIG5ld2VyCnN0YWNrIHBhY2thZ2UgdGhhdCBpbmNsdWRlcyB0" + + "aGVtLgoKSWYgdGhlIHN0YWNrIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLCBlbmFibGUgaXQg" + + "aW4KYGVudmlyb25tZW50cy88ZW52LW5hbWU+LnlhbWxgOgoKYGBgeWFtbAphZGRvbnM6CiAgdmFu" + + "aXR5R2F0ZXdheToKICAgIGVuYWJsZWQ6IHRydWUKICAgIG1hcHBpbmdDb25maWc6IHt9CmBgYAoK" + + "VGhlIGRlZmF1bHQgcm91dGUgaG9zdCBpcyBgdmFuaXR5Ljxkb21haW4+YCBhbmQgdGhlIGJhY2tl" + + "bmQgaXMKYHZhbml0eS1nYXRld2F5Lm52Y2Y6ODA4MGAuIFB1dCBkZXBsb3ltZW50LXNwZWNpZmlj" + + "IGhvc3QgYW5kIHBhdGggbWFwcGluZ3MgdW5kZXIKYGFkZG9ucy52YW5pdHlHYXRld2F5Lm1hcHBp" + + "bmdDb25maWdgLiBJZiB5b3UgbmVlZCBjdXN0b20gdmFuaXR5IGhvc3RzIGluc3RlYWQgb2YKYHZh" + + "bml0eS48ZG9tYWluPmAsIHVzZSB0aGUgcm91dGUgaG9zdG5hbWUgb3ZlcnJpZGVzIHN1cHBvcnRl" + + "ZCBieSB0aGUgc3RhY2sKcGFja2FnZSBhbmQgY3JlYXRlIG1hdGNoaW5nIEROUyByZWNvcmRzLgoK" + + "QWZ0ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYHZhbml0eS1nYXRld2F5" + + "YCByZWxlYXNlLCBwcmV2aWV3IGFuZAphcHBseSB0aGUgc2VydmljZSBhbmQgcm91dGU6CgpgYGBi" + + "YXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT12YW5p" + + "dHktZ2F0ZXdheSB0ZW1wbGF0ZQpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNl" + + "bGVjdG9yIG5hbWU9dmFuaXR5LWdhdGV3YXkgc3luYwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBo" + + "ZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBgYAoKVmVyaWZ5" + + "IHRoZSByb3V0ZSBvbmx5IHdoZW4gdGhlIGFkZG9uIGlzIHByZXNlbnQgYW5kIGVuYWJsZWQ6Cgpg" + + "YGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSxzdmMgLW4gbnZjZiAtbCBhcHAua3ViZXJuZXRlcy5p" + + "by9uYW1lPXZhbml0eS1nYXRld2F5Cmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgLWkg" + + "dmFuaXR5CmN1cmwgLUggIkhvc3Q6IHZhbml0eS48ZG9tYWluPiIgImh0dHA6Ly88Z2F0ZXdheS1h" + + "ZGRyZXNzPi9oZWFsdGgiCmBgYAoKRG8gbm90IGVuYWJsZSBWYW5pdHkgR2F0ZXdheSBmb3Igc3Rh" + + "bmRhcmQgQVBJLCBBUEkgS2V5cywgaW52b2NhdGlvbiwgTExNCmludm9jYXRpb24sIG9yIGdSUEMg" + + "dHJhZmZpYy4gVGhvc2Ugcm91dGVzIGFyZSBwcm92aWRlZCBieSB0aGUgYmFzZSBnYXRld2F5CnJv" + + "dXRlcy4KCiMjIyA3LiBFbmFibGUgTlZDRiBVSSAob3B0aW9uYWwpCgpOVkNGIFVJIGlzIGFuIG9w" + + "dGlvbmFsLCBjdXN0b21lci1mYWNpbmcgYWRtaW4tcGFuZWwgVUkuIEl0IGlzIGRpc2FibGVkIGJ5" + + "CmRlZmF1bHQgYW5kIGF2YWlsYWJsZSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRoYXQgaW5jbHVk" + + "ZSB0aGUgTlZDRiBVSSBhZGRvbi4gSWYKeW91ciBleHRyYWN0ZWQgc3RhY2sgcGFja2FnZSBkb2Vz" + + "IG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UgYW5kIGBudmNmVWlgCnJvdXRlIHZhbHVl" + + "cywgc2tpcCB0aGlzIHNlY3Rpb24uIFRoZSBOVkNGIFVJIGFkbWluIHBhbmVsIGlzIGN1cnJlbnRs" + + "eQp1bmF1dGhlbnRpY2F0ZWQ7IGRvIG5vdCBleHBvc2UgaXQgdG8gdGhlIHB1YmxpYyBpbnRlcm5l" + + "dC4KCkZvciBlbmFibGVtZW50LCBuYW1lc3BhY2UgYW5kIHB1bGwgc2VjcmV0IHNldHVwLCBhcHBs" + + "eSwgYW5kIHZlcmlmaWNhdGlvbiBzdGVwcywKc2VlIFtOVkNGIFVJIEFkZG9uXShyZWZlcmVuY2Vz" + + "L252Y2YtdWktYWRkb24ubWQpLgoKIyMjIDguIEluc3RhbGwgdGhlIHNlcGFyYXRlIGNvbXB1dGUt" + + "cGxhbmUgc3RhY2sKClRoZSBjb250cm9sLXBsYW5lIHN0YWNrIGRvZXMgbm90IGluc3RhbGwgY29t" + + "cHV0ZS1wbGFuZSBjb21wb25lbnRzLiBBZnRlciBpdCBpcyBoZWFsdGh5LCBjaG9vc2UgZXhhY3Rs" + + "eSBvbmUgY29tcHV0ZS1wbGFuZSBoYW5kb2ZmOgoKLSBIZWxtZmlsZSB2YWx1ZXMgZmxvdzogYXV0" + + "aG9yIHNlcGFyYXRlIGVudmlyb25tZW50IGZpbGVzLCB0aGVuIHJlZ2lzdGVyIGFuZAogIGluc3Rh" + + "bGwgd2l0aCB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZS4KLSBDTEkgcHJvZmlsZSBmbG93OiB1" + + "c2UgdGhlIHByb2ZpbGUgZ2VuZXJhdGVkIGJ5IHRoZSBDTEkgY29udHJvbC1wbGFuZSBpbnN0YWxs" + + "LAogIHRoZW4gcnVuIHRoZSBjb21wbGV0ZSBDTEkgcmVnaXN0ZXIgYW5kIGluc3RhbGwgY29tbWFu" + + "ZHMuCgpEbyBub3QgbWl4IHRoZXNlIGhhbmRvZmZzLiBGb2xsb3cgW1NwbGl0IENvbXB1dGUtUGxh" + + "bmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1k" + + "KQpmb3IgY29tbWFuZHMsIEVLUyByb3V0aW5nLCBwdWxsIHNlY3JldHMsIHZlcmlmaWNhdGlvbiwg" + + "YW5kIHRlYXJkb3duIG9yZGVyLgoKIyMgQ2xlYW4gVGVhcmRvd24KCkRlc3Ryb3kgZXZlcnkgY29t" + + "cHV0ZSBwbGFuZSBiZWZvcmUgdGhlIGNvbnRyb2wgcGxhbmUsIHVzaW5nIHRoZSB0ZWFyZG93biBm" + + "b3IKdGhlIHNhbWUgaGFuZG9mZjsgc2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlv" + + "bl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCN0ZWFyZG93bikuCgpT" + + "Y29wZTogT25seSBkZXN0cm95IHJlbGVhc2VzIG1hbmFnZWQgYnkgdGhpcyBjb250cm9sLXBsYW5l" + + "IGhlbG1maWxlIHN0YWNrLiBUaGUgTlZDRiByZWxlYXNlcyBhcmU6IGBuYXRzYCwgYG9wZW5iYW8t" + + "c2VydmVyYCwgYGNhc3NhbmRyYWAsIGBhcGkta2V5c2AsIGBzaXNgLCBgYXBpYCwgYGludm9jYXRp" + + "b24tc2VydmljZWAsIGBncnBjLXByb3h5YCwgYGVzcy1hcGlgLCBgbm90YXJ5LXNlcnZpY2VgLCBv" + + "cHRpb25hbCBgdmFuaXR5LWdhdGV3YXlgLCBgbnZjZi11aWAsIGBhZG1pbi1pc3N1ZXItcHJveHlg" + + "LCBhbmQgYGluZ3Jlc3NgOyBgY2VydC1tYW5hZ2VyYCBpcyBpbmNsdWRlZCBvbmx5IHdoZW4gYGNl" + + "cnRNYW5hZ2VyLmVuYWJsZWQ6IHRydWVgLiBUaGUgY29udHJvbC1wbGFuZSBuYW1lc3BhY2UgaW52" + + "ZW50b3J5IGFsc28gaW5jbHVkZXMgYGNlcnQtbWFuYWdlcmAsIGJ1dCBkZWZhdWx0IG5hbWVzcGFj" + + "ZSBjbGVhbnVwIHByZXNlcnZlcyBpdC4gTmFtZXNwYWNlIHByZXNlcnZhdGlvbiBkb2VzIG5vdCBw" + + "cmVzZXJ2ZSB0aGUgSGVsbSByZWxlYXNlLiBFeHRlcm5hbCBjZXJ0LW1hbmFnZXIgbXVzdCB1c2Ug" + + "YGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNlYDsgb3RoZXJ3aXNlIEhlbG1maWxlIHRyZWF0cyB0" + + "aGUgcmVsZWFzZSBhcyBzdGFjay1tYW5hZ2VkLiBEbyBub3QgZGVsZXRlIG90aGVyIGhlbG0gcmVs" + + "ZWFzZXMgb3IgbmFtZXNwYWNlcyBvbiB0aGUgY2x1c3Rlci4KCkJlZm9yZSBjb250cm9sLXBsYW5l" + + "IGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLiBGb3Ig" + + "YW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIu" + + "ZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQg" + + "c3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVk" + + "OiB0cnVlYCwgdmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQg" + + "YWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBQcmVzZXJ2ZSB0aGUgbmFt" + + "ZXNwYWNlIGJ5IGRlZmF1bHQ7IG9ubHkgcGxhbiBpdHMgcmVtb3ZhbCBhZnRlciB2ZXJpZnlpbmcg" + + "bmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGdldHRpbmcgZXhwbGljaXQgY29uZmlybWF0aW9uLgoK" + + "IyMjIFN0YW5kYXJkIHRlYXJkb3duCgpSdW4gZnJvbSBpbnNpZGUgdGhlIGBudmNmLXNlbGYtbWFu" + + "YWdlZC1zdGFjay9gIGRpcmVjdG9yeToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4g" + + "aGVsbWZpbGUgZGVzdHJveQpgYGAKCiMjIyBEZWxldGUgbmFtZXNwYWNlcwoKYGBgYmFzaApmb3Ig" + + "bnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMg" + + "bnZjZi11aSB2YXVsdC1zeXN0ZW07IGRvCiAga3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlICIkbnMi" + + "IC0taWdub3JlLW5vdC1mb3VuZApkb25lCmBgYAoKIyMjIFZlcmlmeSBjbGVhbgoKYGBgYmFzaApr" + + "dWJlY3RsIGdldCBucyB8IGdyZXAgLUUgJyhjYXNzYW5kcmF8bmF0c3x2YXVsdHxudmNmfGFwaS1r" + + "ZXlzfGVzc3xzaXMpJwojIFNob3VsZCByZXR1cm4gZW1wdHkKYGBgCgojIyBPdmVycmlkaW5nIEhl" + + "bG0gQ2hhcnQgVmFsdWVzCgojIyMgRW52aXJvbm1lbnQgZmlsZSAobGltaXRlZCkKCldvcmtzIG9u" + + "bHkgZm9yIGtleXMgdGhhdCBgZ2xvYmFsLnlhbWwuZ290bXBsYCBwcm9wYWdhdGVzIChlLmcuLCBg" + + "Y2Fzc2FuZHJhLnJlcGxpY2FDb3VudGAsIGBnbG9iYWwuc3RvcmFnZUNsYXNzYCwgYGdsb2JhbC5p" + + "bWFnZWApLgoKIyMjIFJlbGVhc2UgdmFsdWVzIGJsb2NrIChhbnkgY2hhcnQgdmFsdWUpCgpFZGl0" + + "IHRoZSByZWxlYXNlIGluIGBoZWxtZmlsZS5kLyoueWFtbC5nb3RtcGxgIGFuZCBhZGQgYSBgdmFs" + + "dWVzOmAgYmxvY2suIEluIHRoZSBleGFtcGxlcyBiZWxvdywgYDxwcml2YXRlLXZhbHVlcz5gIHJl" + + "ZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxlIHN0YWNrIHJv" + + "b3QuCgpgYGB5YW1sCi0gbmFtZTogY2Fzc2FuZHJhCiAgdmVyc2lvbjogMC44LjAKICBjb25kaXRp" + + "b246IGNhc3NhbmRyYS5lbmFibGVkCiAgbmFtZXNwYWNlOiBjYXNzYW5kcmEtc3lzdGVtCiAgPDw6" + + "ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwKICAgIC0g" + + "Li4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNy" + + "ZXRzLnlhbWwKICAgIC0gY2Fzc2FuZHJhOgogICAgICAgIHJlc291cmNlczoKICAgICAgICAgIGxp" + + "bWl0czoKICAgICAgICAgICAgY3B1OiAiOCIKICAgICAgICAgICAgbWVtb3J5OiA4MTkyTWkKICAg" + + "ICAgICAgIHJlcXVlc3RzOgogICAgICAgICAgICBjcHU6ICIyIgogICAgICAgICAgICBtZW1vcnk6" + + "IDQwOTZNaQpgYGAKCllBTUwgbWVyZ2UgZ290Y2hhOiBXaGVuIGEgcmVsZWFzZSB1c2VzIGA8PDog" + + "KmRlcGVuZGVuY3lgIG9yIGBpbmhlcml0YCwgc3BlY2lmeWluZyBgdmFsdWVzOmAgcmVwbGFjZXMg" + + "dGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QuIFlvdSBtdXN0IHJlLWluY2x1ZGUgYGdsb2JhbC55" + + "YW1sLmdvdG1wbGAgYW5kIHRoZSBzZWNyZXRzIGZpbGUuCgojIyMgUHJldmlldyBhbmQgYXBwbHkg" + + "YSBzaW5nbGUgcmVsZWFzZQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1z" + + "ZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSAgIyBQcmV2aWV3CkhFTE1GSUxFX0VOVj08" + + "ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMgICAgICAjIEFwcGx5" + + "CmBgYAoKIyMgSW1hZ2UgUHVsbCBTZWNyZXRzCgpUaGVyZSBhcmUgdGhyZWUgZGlzdGluY3QgY3Jl" + + "ZGVudGlhbCB0eXBlcy4gRG8gbm90IGNvbmZsYXRlIHRoZW0sIGFuZCBtaW5kIHRoZQpmb3JtYXQg" + + "cnVsZSBiZWxvdyAodHdvIG9mIHRoZW0gZmFpbCBldmVuIHdpdGggdGhlIGNvcnJlY3Qga2V5IGlm" + + "IHRoZSBmb3JtYXQgaXMgd3JvbmcpOgoKfCB8IENvbnRyb2wgUGxhbmUgUHVsbCBTZWNyZXRzIHwg" + + "QVBJIEJvb3RzdHJhcCBSZWdpc3RyeSBDcmVkcyB8IFNpZGVjYXIgSW1hZ2UtUHVsbCBTZWNyZXQg" + + "fAp8LS0tfC0tLXwtLS18LS0tfAp8IFB1cnBvc2UgfCBLOHMgcHVsbHMgTlZDRiBzZXJ2aWNlIGlt" + + "YWdlcyB8IG52Y2YtYXBpIHZhbGlkYXRlcyB0aGUgdXNlciBmdW5jdGlvbiBpbWFnZSBhdCBgZnVu" + + "Y3Rpb24gY3JlYXRlYCB8IG52Y2YtYXBpIHB1bGxzIHRoZSBwbGF0Zm9ybSBzaWRlY2FycyBpbmpl" + + "Y3RlZCBpbnRvIGV2ZXJ5IHdvcmtlciBwb2QgfAp8IFdoZXJlIHwgSzhzIGBkb2NrZXItcmVnaXN0" + + "cnlgIFNlY3JldHMgKyBLeXZlcm5vIENsdXN0ZXJQb2xpY3kgfCBgPHByaXZhdGUtdmFsdWVzPi88" + + "ZW52Pi1zZWNyZXRzLnlhbWxgIChhY2NvdW50LWJvb3RzdHJhcCkgfCBgTlZDRl9BUElfU0lERUNB" + + "UlNfSU1BR0VfUFVMTF9TRUNSRVRgIGluIGA8ZW52Pi1zZWNyZXRzLnlhbWxgIC0+IE9wZW5CYW8g" + + "YHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0YCAoZmllbGQg" + + "YHNlY3JldGApIHwKfCBGb3JtYXQgfCBzdGFuZGFyZCBgLmRvY2tlcmNvbmZpZ2pzb25gIChrdWJl" + + "Y3RsIGJ1aWxkcyBpdCBmb3IgeW91KSB8IGBiYXNlNjQoIiRvYXV0aHRva2VuOjxrZXk+IilgIHwg" + + "YGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAgfAoKPiBOb3RlOiB0aGUgYWNjb3VudC1ib290" + + "c3RyYXAgY3JlZCBhbmQgdGhlIHNpZGVjYXIgc2VjcmV0IGFyZSBOT1QgYQo+IGRvY2tlcmNvbmZp" + + "Z2pzb24uIFRoZSBzZWNyZXRzIHRlbXBsYXRlIHNoaXBzIHRoZSBwbGFjZWhvbGRlcgo+IGBSRVBM" + + "QUNFX1dJVEhfQkFTRTY0X0RPQ0tFUl9DUkVERU5USUFMYCwgd2hpY2ggcmVhZHMgYXMgImJhc2U2" + + "NCBvZiBhIGRvY2tlcmNvbmZpZ2pzb24uIgo+IEl0IGlzbid0LiBCb3RoIHZhbHVlcyBhcmUgY29u" + + "c3VtZWQgYXMgYSByYXcgZG9ja2VyIGBhdXRoYCBzdHJpbmc6IG52Y2YtYXBpIHRha2VzIHRoZQo+" + + "IHZhbHVlIHZlcmJhdGltIGFuZCBkcm9wcyBpdCBpbnRvIHRoZSBgYXV0aGAgZmllbGQgb2YgdGhl" + + "IGRvY2tlcmNvbmZpZyBpdCBidWlsZHMuIFNvIHRoZQo+IHZhbHVlIG11c3QgYmUgYGJhc2U2NCgi" + + "JG9hdXRodG9rZW46PGtleT4iKWAsIGUuZy4gYHByaW50ZiAnJG9hdXRodG9rZW46JXMnICIkS0VZ" + + "IiB8IG9wZW5zc2wgYmFzZTY0IC1BYCwKPiBub3QgYGJhc2U2NCg8ZG9ja2VyY29uZmlnanNvbj4p" + + "YC4KPgo+IC0gV3JvbmcgYWNjb3VudC1ib290c3RyYXAgdmFsdWU6IGBmdW5jdGlvbiBjcmVhdGVg" + + "IHJldHVybnMKPiAgICBgNDAwICJtdXN0IGJlIGJhc2U2NCBlbmNvZGVkIHVzZXJuYW1lOnBhc3N3" + + "b3JkIGZvcm1hdCJgLgo+IC0gV3Jvbmcgc2lkZWNhciB2YWx1ZTogZXZlcnkgd29ya2VyJ3Mgc2lk" + + "ZWNhciBwdWxsIGdldHMgYSBtYWxmb3JtZWQgY3JlZGVudGlhbCBhbmQKPiAgICBgNDAzYHMsIHJl" + + "Z2FyZGxlc3Mgb2Ygd2hpY2gga2V5IGlzIGluc2lkZS4gVGhlIHN5bXB0b20gbG9va3MgbGlrZSBh" + + "IGJhZCBvciB3cm9uZy1vcmcKPiAgICBrZXksIGJ1dCB0aGUga2V5IGlzIGZpbmUgYW5kIHRoZSBl" + + "bmNvZGluZyBpcyB0aGUgYnVnLiBUbyByZXBhaXIgYW4gYWxyZWFkeS1pbnN0YWxsZWQKPiAgICBz" + + "dGFjayB3aXRob3V0IGEgZnVsbCByZS1zeW5jOgo+Cj4gICAgYGBgYmFzaAo+ICAgIEFVVEg9JChw" + + "cmludGYgJyRvYXV0aHRva2VuOiVzJyAiJEtFWSIgfCBvcGVuc3NsIGJhc2U2NCAtQSkKPiAgICBi" + + "YW8ga3YgcHV0IHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0" + + "IHNlY3JldD0iJEFVVEgiCj4gICAgIyBpZiBOVklESUEgQ2xvdWQgVGFza3MgaXMgZW5hYmxlZCwg" + + "cmVwZWF0IGZvciBzZXJ2aWNlcy9udmN0LWFwaS9rdi9zaWRlY2Fycy9pbWFnZS1wdWxsLXNlY3Jl" + + "dAo+ICAgIGt1YmVjdGwgcm9sbG91dCByZXN0YXJ0IC1uIG52Y2YgZGVwbG95L252Y2YtYXBpICAg" + + "IyBwaWNrcyB1cCB0aGUgbmV3IHNpZGVjYXIgY3JlZAo+ICAgIGBgYAo+Cj4gTm90ZSAobXVsdGkt" + + "b3JnKTogd2hlbiBwdWxsaW5nIGZyb20gTkdDIChub3QgYSBtaXJyb3IpLCB0aGUgdXNlciBmdW5j" + + "dGlvbiBpbWFnZSBhbmQKPiB0aGUgcGxhdGZvcm0gc2lkZWNhcnMgb2Z0ZW4gbGl2ZSBpbiBkaWZm" + + "ZXJlbnQgbnZjci5pbyBvcmdzLCBlYWNoIG5lZWRpbmcgYSBkaWZmZXJlbnQKPiBrZXksIHNvIHRo" + + "ZSBhY2NvdW50LWJvb3RzdHJhcCBjcmVkIChmdW5jdGlvbiBpbWFnZSkgYW5kIHRoZSBzaWRlY2Fy" + + "IHNlY3JldCAoc2lkZWNhcnMpCj4gYXJlIGZyZXF1ZW50bHkgdHdvIGRpZmZlcmVudCBrZXlzLiBN" + + "aXJyb3JpbmcgZXZlcnl0aGluZyBpbnRvIGEgc2luZ2xlIHJlZ2lzdHJ5IHRoZQo+IGNsdXN0ZXIg" + + "YXV0aGVudGljYXRlcyB0byBhdXRvbWF0aWNhbGx5IGNvbGxhcHNlcyB0aGlzIHRvIG9uZSBjcmVk" + + "ZW50aWFsIHBhdGguCgojIyMgQ29uZmlndXJpbmcgd2l0aCBLeXZlcm5vIChyZWNvbW1lbmRlZCkK" + + "ClVzZSBhIEt5dmVybm8gbXV0YXRpbmcgYWRtaXNzaW9uIHBvbGljeSB0byBhdXRvbWF0aWNhbGx5" + + "IGluamVjdCBgaW1hZ2VQdWxsU2VjcmV0c2AgaW50byBhbGwgcG9kcyBpbiBOVkNGIG5hbWVzcGFj" + + "ZXMuIFRoaXMgd29ya3MgdW5pZm9ybWx5IGZvciBhbGwgY2hhcnRzIC0tIG5vIHBlci1jaGFydCBj" + + "b25maWd1cmF0aW9uIG9yIGhlbG1maWxlIG1vZGlmaWNhdGlvbnMgbmVlZGVkLgoKYGBgYmFzaAoj" + + "IDEuIEluc3RhbGwgS3l2ZXJubwpoZWxtIHJlcG8gYWRkIGt5dmVybm8gaHR0cHM6Ly9reXZlcm5v" + + "LmdpdGh1Yi5pby9reXZlcm5vLwpoZWxtIHJlcG8gdXBkYXRlCmhlbG0gaW5zdGFsbCBreXZlcm5v" + + "IGt5dmVybm8va3l2ZXJubyAtbiBreXZlcm5vIC0tY3JlYXRlLW5hbWVzcGFjZQoKIyAyLiBDcmVh" + + "dGUgcHVsbCBzZWNyZXQgaW4gZWFjaCBuYW1lc3BhY2UKZXhwb3J0IE5HQ19BUElfS0VZPSI8eW91" + + "ci1rZXk+Igpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1r" + + "ZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIGNyZWF0" + + "ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogICAgLS1kb2NrZXItc2VydmVy" + + "PW52Y3IuaW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgICAtLWRv" + + "Y2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5hbWVzcGFjZT0iJG5zIiBcCiAg" + + "ICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KZG9uZQoKIyAz" + + "LiBBcHBseSB0aGUgS3l2ZXJubyBDbHVzdGVyUG9saWN5Cmt1YmVjdGwgYXBwbHkgLWYga3l2ZXJu" + + "by1pbWFnZXB1bGxzZWNyZXQtcG9saWN5LnlhbWwKYGBgCgpUaGUgcG9saWN5IG11dGF0ZXMgZXZl" + + "cnkgcG9kIGF0IGFkbWlzc2lvbiB0aW1lLCBhZGRpbmcgYGltYWdlUHVsbFNlY3JldHM6IFt7bmFt" + + "ZTogbnZjci1jcmVkc31dYC4gVmVyaWZ5IHdpdGg6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZCAt" + + "biA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IC1vIGpzb25wYXRoPSd7LnNwZWMuaW1hZ2VQdWxsU2Vj" + + "cmV0c30nCiMgU2hvdWxkIHNob3c6IFt7Im5hbWUiOiJudmNyLWNyZWRzIn1dCmBgYAoKTm90IG5l" + + "ZWRlZCBpZiB1c2luZyBhIENTUCBidWlsdC1pbiBjcmVkZW50aWFsIGhlbHBlciAoZS5nLiwgRUNS" + + "IHdpdGggSUFNIG5vZGUgcm9sZXMpLgoKRm9yIHRoZSBLeXZlcm5vIHBvbGljeSBZQU1MIGFuZCBw" + + "dWxsIHNlY3JldCBjcmVhdGlvbiBzY3JpcHQsIHNlZSBbcmVmZXJlbmNlcy9wdWxsLXNlY3JldHMu" + + "bWRdKHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKS4KCiMjIERlYnVnZ2luZwoKIyMjIFF1aWNr" + + "IHN0YXR1cyBjaGVjawoKYGBgYmFzaAprdWJlY3RsIGdldCBwb2RzIC1BIC1vIHdpZGUgICAgICAg" + + "ICAgICAgICAgICAgICAgICAjIEFsbCBwb2RzCmhlbG0gbGlzdCAtQSAgICAgICAgICAgICAgICAg" + + "ICAgICAgICAgICAgICAgICAgICAgICAjIEFsbCBoZWxtIHJlbGVhc2VzCmt1YmVjdGwgZ2V0IGV2" + + "ZW50cyAtbiA8bnM+IC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAnICAjIFJlY2VudCBldmVudHMK" + + "YGBgCgojIyMgQ29tbW9uIGZhaWx1cmUgcGF0dGVybnMKCnwgU3ltcHRvbSB8IENhdXNlIHwgRml4" + + "IHwKfC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tfAp8IGBJbWFnZVB1bGxCYWNrT2ZmYCArIGA0MDEg" + + "VW5hdXRob3JpemVkYCB8IE1pc3Npbmcgb3Igd3JvbmcgcHVsbCBzZWNyZXQgfCBDaGVjayBzZWNy" + + "ZXQgZXhpc3RzLCBjaGVjayBTQSBoYXMgaW1hZ2VQdWxsU2VjcmV0cyB8CnwgYEluaXQ6MC8xYCBz" + + "dHVjayBvbiBzZXJ2aWNlIHBvZHMgfCBWYXVsdC1hZ2VudCB3YWl0aW5nIGZvciBPcGVuQmFvIHwg" + + "Q2hlY2sgT3BlbkJhbyBwb2RzICsgbWlncmF0aW9uIGpvYiBzdGF0dXMgfAp8IGBJbml0OjAvMWAg" + + "KyBgdmF1bHQtYWdlbnQtaW5pdGAgc2hvd3MgYGF1dGgvand0L2xvZ2luYCAtPiBgNDAwIC4uLiBu" + + "byBrbm93biBrZXkgc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlZCB0aGUgdG9rZW4gc2lnbmF0dXJlYCB8" + + "IE9wZW5CYW8gSldUIGF1dGggY29uZmlndXJlZCB3aXRoIGEgc3RhdGljIHB1YmtleSBpbnN0ZWFk" + + "IG9mIHRoZSBjbHVzdGVyJ3MgbGl2ZSBKV0tTIC0tIHRoZSBiYXNlIGRlZmF1bHQgYG9wZW5iYW8u" + + "bWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2VgLiBDb21tb24gb24gQUtT" + + "IC8gYW55IE9JREMtaXNzdWVyIGNsdXN0ZXIgfCBTZXQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1" + + "ZXJEaXNjb3ZlcnkuZW5hYmxlZDogdHJ1ZWAsIGRlbGV0ZSBqb2IgYG9wZW5iYW8tc2VydmVyLW1p" + + "Z3JhdGlvbnNgLCByZS1zeW5jIGBvcGVuYmFvLXNlcnZlcmAuIFNlZSBbcmVmZXJlbmNlcy9kZWJ1" + + "Z2dpbmcubWRdKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kKSAiSW5pdDowLzEgU3R1Y2siIGZpeCAj" + + "NC4gfAp8IGBPT01LaWxsZWRgIG9uIENhc3NhbmRyYSB8IERlZmF1bHQgcmVzb3VyY2VzIHRvbyBz" + + "bWFsbCB8IE92ZXJyaWRlIGBjYXNzYW5kcmEucmVzb3VyY2VzYCB2aWEgdmFsdWVzIGJsb2NrIHwK" + + "fCBEQi1iYWNrZWQgc2VydmljZXMgY3Jhc2gtbG9vcCBgQmFkIGNyZWRlbnRpYWxzYCBjb25uZWN0" + + "aW5nIHRvIENhc3NhbmRyYSB8IFNlY3JldHMgZmlsZSBzZXQgb25seSBgREVGQVVMVF9DQVNTQU5E" + + "UkFfUEFTU1dPUkRgOyBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHN0aWxsIGRlZmF1" + + "bHRzIHRvIGBjaEBuZzNtM2AgfCBTZXQgYGNhc3NhbmRyYS5zZXJ2aWNlUm9sZVBhc3N3b3JkYCBp" + + "biB0aGUgc2VjcmV0cyBmaWxlIGVxdWFsIHRvIGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAs" + + "IHRoZW4gcmUtc3luYyBjYXNzYW5kcmEgKyB0aGUgREItYmFja2VkIHNlcnZpY2VzIHwKfCBgUGVu" + + "ZGluZ2AgcG9kcyB8IE5vZGUgc2VsZWN0b3IgbWlzbWF0Y2ggb3Igbm8gc3RvcmFnZSBjbGFzcyB8" + + "IGBrdWJlY3RsIGRlc2NyaWJlIHBvZGAsIGNoZWNrIGxhYmVscyBhbmQgc3RvcmFnZSB8CnwgSGVs" + + "bSByZWxlYXNlIGluIGBmYWlsZWRgIHN0YXRlIHwgRmlyc3QgaW5zdGFsbCBmYWlsZWQgcGFydHdh" + + "eSB8IGBoZWxtZmlsZSBkZXN0cm95YCB0aGUgcmVsZWFzZSwgdGhlbiBgc3luY2AgYWdhaW4gfAp8" + + "IEFjY291bnQgYm9vdHN0cmFwIHRpbWVvdXQgfCBXcm9uZyBiYXNlNjQgY3JlZGVudGlhbHMgaW4g" + + "c2VjcmV0cyBmaWxlIHwgQ2hlY2sgYGt1YmVjdGwgbG9ncyBqb2IvbnZjZi1hcGktYWNjb3VudC1i" + + "b290c3RyYXAgLW4gbnZjZmAgfAp8IGZ1bmN0aW9uIC8gYWNjb3VudCBjYWxscyByZXR1cm4gYDQw" + + "NCBVbmtub3duIGNsaWVudF9pZGAgfCBUaGUgYWNjb3VudC1ib290c3RyYXAgcG9zdC1pbnN0YWxs" + + "IGhvb2sgbmV2ZXIgcmFuOiB0aGUgYGFwaWAgcmVsZWFzZSBpbnN0YWxsIGZhaWxlZCwgb3Igd2Fz" + + "IHJlcGFpcmVkIHdpdGggbGl2ZSBwYXRjaGVzIGluc3RlYWQgb2YgYSBjbGVhbiByZS1zeW5jLCBz" + + "byB0aGUgaG9vayAoYW5kIHRoZSBhY2NvdW50KSB3YXMgc2tpcHBlZCB8IFZlcmlmeSBhbmQgcmUt" + + "cnVuIHRoZSBob29rOyBzZWUgW1ZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAgcmFuXSgjdmVy" + + "aWZ5LXRoZS1hY2NvdW50LWJvb3RzdHJhcC1yYW4pIHwKfCBTZXJ2aWNlcyBmYWlsIHRvIHJlYWQg" + + "dmF1bHQgc2VjcmV0czsgYHNlY3JldHMuanNvbmAgbm90IGZvdW5kIHwgVmF1bHQgcGF0aCBoYXJk" + + "Y29kZWQgdG8gYC9ob21lL2FwcC92YXVsdC9gIGluIGBfaGVscGVycy50cGxgOyB0aGUgcnVudGlt" + + "ZSByZXNvbHZlcyB0aGUgbW91bnRlZCBwYXRoIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVj" + + "dG9yeSBhbmQgZHJvcHMgdGhlIGxlYWRpbmcgYC9gIHwgT3ZlcnJpZGUgYHBvZEFubm90YXRpb25z" + + "YCBhbmQgc2V0IGBKQVZBX1RPT0xfT1BUSU9OUzogIi1EdXNlci5kaXI9LyJgIGluIHJlbGVhc2Ug" + + "dmFsdWVzIHwKfCBOQVRTIGNvbm5lY3Rpb24gZmFpbHMgYXQgc3RhcnR1cDsgcGxhY2VtZW50IHRh" + + "ZyBtaXNtYXRjaCB8IE5BVFMgc2VydmVyIHRhZ3MgaGFyZGNvZGVkIHRvIGBkYzpuY3BgOyBhcHAg" + + "ZGVyaXZlcyB0YWcgZnJvbSBgQVdTX1JFR0lPTmAgKGUuZy4sIGB1cy1nb3Ytd2VzdC0xYCkgfCBT" + + "ZXQgYEFXU19SRUdJT049bmNwYCBhbmQgYE5WQ0ZfQVdTX1JFR0lPTj1uY3BgIGluIGVudiBjb25m" + + "aWcgfAoKIyMjIFZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAgcmFuCgpUaGUgZGVmYXVsdCBh" + + "Y2NvdW50IGlzIGNyZWF0ZWQgYnkgYSAqKmBwb3N0LWluc3RhbGxgIGhvb2sgb24gdGhlIGBhcGlg" + + "IHJlbGVhc2UqKgooYGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcGAgaW4gYG52Y2ZgKS4g" + + "QmVjYXVzZSBpdCBpcyBhIHBvc3QtaW5zdGFsbCBob29rLCBpdCBvbmx5CmZpcmVzIG9uIGEgc3Vj" + + "Y2Vzc2Z1bCBgYXBpYCBpbnN0YWxsLiBJZiB0aGF0IGluc3RhbGwgZmFpbGVkIGFuZCB5b3UgcmVw" + + "YWlyZWQgaXQgd2l0aCBsaXZlCnBhdGNoZXMgKHJhdGhlciB0aGFuIGEgY2xlYW4gcmUtc3luYyks" + + "IHRoZSBob29rIG5ldmVyIHJ1bnMsIG5vIGFjY291bnQgaXMgY3JlYXRlZCwgYW5kCmV2ZXJ5IHN1" + + "YnNlcXVlbnQgZnVuY3Rpb24vYWNjb3VudCBjYWxsIHJldHVybnMgYSBjcnlwdGljIGA0MDQgVW5r" + + "bm93biBjbGllbnRfaWRgIHdpdGgKbm90aGluZyBvYnZpb3VzbHkgd3JvbmcgaW4gdGhlIHJ1bm5p" + + "bmcgcG9kcy4KClZlcmlmeSBpdCByYW4gYWZ0ZXIgdGhlIGZpcnN0IHN5bmM6CgpgYGBiYXNoCmt1" + + "YmVjdGwgZ2V0IGpvYiAtbiBudmNmIG52Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIFwKICAtbyBq" + + "c29ucGF0aD0ney5zdGF0dXMuc3VjY2VlZGVkfScgICAjIGV4cGVjdCAxCmBgYAoKSWYgdGhlIGpv" + + "YiBpcyBhYnNlbnQgb3IgYDBgLCByZS1ydW4gaXQgYnkgcmUtc3luY2luZyB0aGUgYGFwaWAgcmVs" + + "ZWFzZSBzbyB0aGUgaG9vayBmaXJlcwphZ2FpbiAoZGVsZXRlIHRoZSBwcmlvciBqb2IgZmlyc3Qg" + + "aWYgaXQgbGluZ2VycyBpbiBhIGNvbXBsZXRlZC9mYWlsZWQgc3RhdGUgYW5kIGJsb2NrcyB0aGUK" + + "aG9vayk6CgpgYGBiYXNoCmt1YmVjdGwgZGVsZXRlIGpvYiAtbiBudmNmIG52Y2YtYXBpLWFjY291" + + "bnQtYm9vdHN0cmFwIC0taWdub3JlLW5vdC1mb3VuZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZp" + + "bGUgLS1zZWxlY3RvciBuYW1lPWFwaSBzeW5jCmt1YmVjdGwgbG9ncyAtbiBudmNmIGpvYi9udmNm" + + "LWFwaS1hY2NvdW50LWJvb3RzdHJhcCAgICMgY29uZmlybSB0aGUgYWNjb3VudCB3YXMgY3JlYXRl" + + "ZApgYGAKCiMjIEFkZGl0aW9uYWwgUmVzb3VyY2VzCgotIEluc3RhbGxhdGlvbjogW2V4YW1wbGVz" + + "Lm1kXShleGFtcGxlcy5tZCksIHRoZSBbQ1NQIEVuZC10by1FbmQgRXhhbXBsZV0oaHR0cHM6Ly9k" + + "b2NzLm52aWRpYS5jb20vbnZjZi92MC42LjAtcmMvY3NwLWVuZC10by1lbmQtZXhhbXBsZSksIGFu" + + "ZCBbc3BsaXQgY29tcHV0ZS1wbGFuZSB3b3JrZmxvd3NdKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFu" + + "ZS1pbnN0YWxsYXRpb24ubWQpCi0gT3BlcmF0aW9uczogW0hlbG1maWxlIHN0cnVjdHVyZV0ocmVm" + + "ZXJlbmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWQpLCBbcHVsbCBzZWNyZXRzXShyZWZlcmVuY2Vz" + + "L3B1bGwtc2VjcmV0cy5tZCksIGFuZCBbZGVidWdnaW5nXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5t" + + "ZCkKCkFmdGVyIGRlcGxveW1lbnQsIHVzZSB0aGUgYG52Y2Ytc2VsZi1tYW5hZ2VkLWNsaWAgc2tp" + + "bGwgdG8gY3JlYXRlIGZ1bmN0aW9ucywgY3JlYXRlIHRhc2tzLCBtYW5hZ2UgQVBJIGtleXMsIGFu" + + "ZCBpbnZva2UgZW5kcG9pbnRzLgpQSwcIEcMUk0liAABJYgAAUEsDBBQACAAAAAAAIQAAAAAAAAAA" + + "AAAAAAA0AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXZhbHMvZXZhbHMu" + + "anNvblVUBQABAKbOElsKICB7CiAgICAiaWQiOiAiRzEtdmFsaWRhdGUtdG9vbC12ZXJzaW9ucyIs" + + "CiAgICAicXVlc3Rpb24iOiAiSW5zdGFsbCB0aGUgTlZDRiBzZWxmLW1hbmFnZWQgc3RhY2sgb24g" + + "bXkgQVdTIEVLUyBjbHVzdGVyIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFu" + + "YWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQncyBmaXJz" + + "dCBvcGVyYXRpb25hbCBzdGVwIGFmdGVyIHJlYWRpbmcgdGhlIHNraWxsIHdhcyB0byB2YWxpZGF0" + + "ZSBhbGwgcmVxdWlyZWQgdG9vbCB2ZXJzaW9uczogaGVsbWZpbGUgKG11c3QgYmUgMS4xLngsIG5v" + + "dCAxLjIuMCksIGhlbG0gKD49IDMuMTIpLCBoZWxtLWRpZmYgcGx1Z2luICg+PSAzLjExKSwgYW5k" + + "IGt1YmVjdGwgKGNsaWVudCB3aXRoaW4gMSBtaW5vciBvZiBjbHVzdGVyKS4gSXQgZGlkIG5vdCBw" + + "cm9jZWVkIHRvIGhlbG1maWxlIHN5bmMgdW50aWwgYWxsIHZlcnNpb25zIHdlcmUgdmFsaWRhdGVk" + + "LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUg" + + "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYW55" + + "IGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtZmlsZSAtLXZlcnNpb24nIGFuZCB2" + + "ZXJpZmllZCBpdCBpcyAxLjEueCAobm90IDEuMi4wLCB3aGljaCByZW1vdmVkIHNlcXVlbnRpYWwg" + + "bW9kZSkiLAogICAgICAiVGhlIGFnZW50IHJhbiAnaGVsbSB2ZXJzaW9uJyBhbmQgdmVyaWZpZWQg" + + "aXQgaXMgPj0gMy4xMiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHBsdWdpbiBsaXN0JyBh" + + "bmQgdmVyaWZpZWQgaGVsbS1kaWZmID49IDMuMTEgaXMgaW5zdGFsbGVkIiwKICAgICAgIlRoZSBh" + + "Z2VudCByYW4gJ2t1YmVjdGwgdmVyc2lvbicgdG8gY2hlY2sgY2xpZW50L3NlcnZlciB2ZXJzaW9u" + + "IGNvbXBhdGliaWxpdHkiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgcHJvY2VlZCB0byBoZWxt" + + "ZmlsZSBzeW5jIHVudGlsIGFsbCB2ZXJzaW9uIGNoZWNrcyBwYXNzZWQiCiAgICBdCiAgfSwKICB7" + + "CiAgICAiaWQiOiAiRzItdGVtcGxhdGUtYmVmb3JlLXN5bmMiLAogICAgInF1ZXN0aW9uIjogIlF1" + + "aWNrLCBqdXN0IHJ1biBoZWxtZmlsZSBzeW5jIGZvciBteSBOVkNGIHN0YWNrLCBza2lwIGFsbCB0" + + "aGUgY2hlY2tzIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0" + + "YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJEZXNwaXRlIHRoZSB1c2VyIGFza2luZyB0" + + "byBza2lwIGNoZWNrcywgdGhlIGFnZW50IHN0aWxsIHJhbiBoZWxtZmlsZSB0ZW1wbGF0ZSB0byBw" + + "cmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0cyBiZWZvcmUgcnVubmluZyBoZWxtZmlsZSBzeW5jLiBJ" + + "dCBleHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAgaXMgaW1wb3J0YW50IGFuZCBkaWQgbm90" + + "IGJsaW5kbHkgZXhlY3V0ZSBzeW5jLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAg" + + "ICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxM" + + "Lm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG1maWxl" + + "IHRlbXBsYXRlJyBvciAnaGVsbWZpbGUgLS1zZWxlY3RvciAuLi4gdGVtcGxhdGUnIHRvIHByZXZp" + + "ZXcgbWFuaWZlc3RzIGJlZm9yZSBzeW5jIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IGJsaW5k" + + "bHkgcnVuICdoZWxtZmlsZSBzeW5jJyB3aXRob3V0IGEgdGVtcGxhdGUgcHJldmlldyBzdGVwIiwK" + + "ICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAgaXMgaW1wb3J0" + + "YW50IGV2ZW4gd2hlbiBhc2tlZCB0byBza2lwIGl0IgogICAgXQogIH0sCiAgewogICAgImlkIjog" + + "Ikc1LWRyeXJ1bi1iZWZvcmUtY2xlYW51cCIsCiAgICAicXVlc3Rpb24iOiAiTlZDRiBuYW1lc3Bh" + + "Y2VzIGFyZSBzdHVjayBpbiBUZXJtaW5hdGluZyBzdGF0ZS4gQ2xlYW4gdGhlbSB1cC4iLAogICAg" + + "ImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAi" + + "Z3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoZSBzdHVjayBuYW1lc3BhY2Vz" + + "IHdlcmUgY2F1c2VkIGJ5IGZpbmFsaXplcnMgb24gTlZDRkJhY2tlbmQgY3VzdG9tIHJlc291cmNl" + + "cy4gSXQgcmVtb3ZlZCBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3VyY2VzIGZpcnN0" + + "LCB0aGVuIGNsZWFyZWQgbmFtZXNwYWNlIGZpbmFsaXplcnMgdG8gZm9yY2UtZGVsZXRlIHRoZSBz" + + "dHVjayBuYW1lc3BhY2VzLiBJdCBvbmx5IHRhcmdldGVkIE5WQ0YtbWFuYWdlZCBuYW1lc3BhY2Vz" + + "IChudmNhLW9wZXJhdG9yLCBudmNmLWJhY2tlbmQpIGFuZCBkaWQgbm90IHRvdWNoIG90aGVyIGNs" + + "dXN0ZXIgcmVzb3VyY2VzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUg" + + "YWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJl" + + "Zm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBjb25maXJtZWQgYW5kIHVzZWQg" + + "dGhlIGNvbXB1dGUtcGxhbmUgY29udGV4dCBmb3IgYWxsIGNsZWFudXAgY29tbWFuZHMiLAogICAg" + + "ICAiVGhlIGFnZW50IHVzZWQga3ViZWN0bCB0byBwYXRjaCBOVkNGQmFja2VuZCByZXNvdXJjZXMg" + + "dG8gcmVtb3ZlIHRoZWlyIGZpbmFsaXplcnMiLAogICAgICAiVGhlIGFnZW50IHVzZWQga3ViZWN0" + + "bCByZXBsYWNlIC0tcmF3IHRvIGNsZWFyIG5hbWVzcGFjZSBmaW5hbGl6ZXJzIG9uIHN0dWNrIG5h" + + "bWVzcGFjZXMiLAogICAgICAiVGhlIGFnZW50IG9ubHkgdGFyZ2V0ZWQgTlZDRi1tYW5hZ2VkIG5h" + + "bWVzcGFjZXMgKG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkgYW5kIGRpZCBub3QgdG91Y2gg" + + "b3RoZXIgY2x1c3RlciByZXNvdXJjZXMiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QganVtcCBk" + + "aXJlY3RseSB0byBuYW1lc3BhY2UgZGVsZXRpb24gd2l0aG91dCBmaXJzdCByZW1vdmluZyBmaW5h" + + "bGl6ZXJzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc2LWhlbG1maWxlLXNwbGl0LXdvcmtm" + + "bG93IiwKICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIGFuIE5WQ0YgY29udHJvbCBwbGFuZSBhbmQg" + + "YSBzZXBhcmF0ZSBFS1MgY29tcHV0ZSBwbGFuZSB1c2luZyB0aGUgSGVsbWZpbGUgc3RhY2tzLiBU" + + "aGUgY29tcHV0ZSBjbHVzdGVyIGt1YmVjb25maWcgaXMgY29tcHV0ZS55YW1sLiIsCiAgICAiZXhw" + + "ZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91" + + "bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGtlcHQgdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93IGluZGVw" + + "ZW5kZW50IGZyb20gdGhlIENMSSBwcm9maWxlIGZsb3cuIEl0IGF1dGhvcmVkIHNlcGFyYXRlIGNv" + + "bnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZXMgcGx1cyBhIGJh" + + "cmUtR2F0ZXdheSBDTEkgY29uZmlnIHdpdGggVVJMIGFuZCBzY2hlbWUtbGVzcyBIb3N0IGZpZWxk" + + "cywgaW5zdGFsbGVkIHRoZSBjb250cm9sIHBsYW5lLCByYW4gdGhlIGNvbXB1dGUtcGxhbmUgTWFr" + + "ZWZpbGUgcmVnaXN0ZXItY2x1c3RlciB0YXJnZXQgd2l0aCBJQ01TX1VSTCBhbmQgdGhlIGNvbXB1" + + "dGUga3ViZWNvbmZpZywgdGhlbiByYW4gdGhlIGNvbXB1dGUtcGxhbmUgaW5zdGFsbCB0YXJnZXQg" + + "d2l0aCB0aGUgc2FtZSBlbnZpcm9ubWVudCBhbmQga3ViZWNvbmZpZy4gSXQgcmVsaWVkIG9uIHJl" + + "Z2lzdHJhdGlvbiB0byBkaXNjb3ZlciBPSURDIGFuZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUgY29u" + + "dGV4dC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQg" + + "dGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5n" + + "IGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgYXV0aG9yZWQgc2VwYXJhdGUgZW52aXJvbm1lbnRz" + + "LzxlbnY+LnlhbWwgZmlsZXMgdW5kZXIgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgYW5kIGRl" + + "cGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIiwKICAgICAgIlRoZSBhZ2VudCBpbnN0YWxs" + + "ZWQgdGhlIGNvbnRyb2wgcGxhbmUgYmVmb3JlIHJlZ2lzdGVyaW5nIG9yIGluc3RhbGxpbmcgdGhl" + + "IGNvbXB1dGUgcGxhbmUiLAogICAgICAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgYmFzZV9odHRwX3Vy" + + "bCwgaW52b2tlX3VybCwgYmFzZV9ncnBjX3VybCwgYXBpX2tleXNfc2VydmljZV91cmwsIGljbXNf" + + "dXJsLCBhcGlfaG9zdCwgYXBpX2tleXNfaG9zdCwgaW52b2tlX2hvc3QsIGFuZCBpY21zX2hvc3Qg" + + "Zm9yIHRoZSBiYXJlIEdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50IHVzZWQgJ21ha2UgLUMgZGVw" + + "bG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVnaXN0ZXItY2x1c3Rlcicgd2l0aCBDTFVT" + + "VEVSX05BTUUsIE5DQV9JRCwgQ0xVU1RFUl9SRUdJT04sIElDTVNfVVJMLCBhbmQgS1VCRUNPTkZJ" + + "R19GSUxFPWNvbXB1dGUueWFtbCIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnbWFrZSAtQyBkZXBs" + + "b3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBpbnN0YWxsJyB3aXRoIENMVVNURVJfTkFNRSwg" + + "SEVMTUZJTEVfRU5WLCBhbmQgS1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFtbCIsCiAgICAgICJU" + + "aGUgYWdlbnQgc3RhdGVkIHRoYXQgSUNNU19VUkwgbWFwcyBvbmx5IHRvIC0taWNtcy11cmwsIGNv" + + "bmZpZyBpY21zX2hvc3Qgc3VwcGxpZXMgdGhlIEhvc3QgaGVhZGVyLCB0aGVyZSBpcyBubyAtLWlj" + + "bXMtaG9zdCBNYWtlIG9yIENMSSBmbGFnLCBhbmQgcmVnaXN0cmF0aW9uIGRpc2NvdmVycyBPSURD" + + "IGFuZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUgY29udGV4dCIsCiAgICAgICJUaGUgYWdlbnQgZGlk" + + "IG5vdCByZXF1aXJlIGEgY29udHJvbC1wbGFuZSBwcm9maWxlIGZvciB0aGlzIGZsb3cgYW5kIGRp" + + "ZCBub3QgbWl4IGluIENMSSBwcm9maWxlIGNvbW1hbmRzIgogICAgXQogIH0sCiAgewogICAgImlk" + + "IjogIkc3LWJvdGgtZG9ja2VyLWhlbG0tYXV0aCIsCiAgICAicXVlc3Rpb24iOiAiQXV0aGVudGlj" + + "YXRlIHRvIE5HQyBmb3IgTlZDRiBoZWxtZmlsZSBkZXBsb3ltZW50IiwKICAgICJleHBlY3RlZF9z" + + "a2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0" + + "aCI6ICJUaGUgYWdlbnQgcmFuIGJvdGggZG9ja2VyIGxvZ2luIGFuZCBoZWxtIHJlZ2lzdHJ5IGxv" + + "Z2luIGZvciBudmNyLmlvLiBJdCBleHBsYWluZWQgdGhhdCBib3RoIGFyZSByZXF1aXJlZCBiZWNh" + + "dXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kgY2hhcnRzLCBz" + + "byBkb2NrZXIgbG9naW4gYWxvbmUgaXMgaW5zdWZmaWNpZW50LiIsCiAgICAiZXhwZWN0ZWRfYmVo" + + "YXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5z" + + "dGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2Vu" + + "dCByYW4gJ2RvY2tlciBsb2dpbiBudmNyLmlvJyB3aXRoICRvYXV0aHRva2VuIHVzZXJuYW1lIGFu" + + "ZCBOR0NfQVBJX0tFWSBwYXNzd29yZCIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHJlZ2lz" + + "dHJ5IGxvZ2luIG52Y3IuaW8nIHdpdGggJG9hdXRodG9rZW4gdXNlcm5hbWUgYW5kIE5HQ19BUElf" + + "S0VZIHBhc3N3b3JkIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCBib3RoIGFyZSBy" + + "ZXF1aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBP" + + "Q0kgY2hhcnRzIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHByb3ZpZGUgb25seSBvbmUgb2Yg" + + "dGhlIHR3byBhdXRoZW50aWNhdGlvbiBjb21tYW5kcyIKICAgIF0KICB9LAogIHsKICAgICJpZCI6" + + "ICJHOS1taXNzaW5nLWJ1bmRsZSIsCiAgICAicXVlc3Rpb24iOiAiUnVuIGhlbG1maWxlIHN5bmMg" + + "Zm9yIE5WQ0YgaW4gbXkgY3VycmVudCBkaXJlY3RvcnkiLAogICAgImV4cGVjdGVkX3NraWxsIjog" + "Im52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRo" + - "ZSBhZ2VudCBpZGVudGlmaWVkIHRoZSBzdHVjayBuYW1lc3BhY2VzIHdlcmUgY2F1c2VkIGJ5IGZp" + - "bmFsaXplcnMgb24gTlZDRkJhY2tlbmQgY3VzdG9tIHJlc291cmNlcy4gSXQgcmVtb3ZlZCBmaW5h" + - "bGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3VyY2VzIGZpcnN0LCB0aGVuIGNsZWFyZWQgbmFt" + - "ZXNwYWNlIGZpbmFsaXplcnMgdG8gZm9yY2UtZGVsZXRlIHRoZSBzdHVjayBuYW1lc3BhY2VzLiBJ" + - "dCBvbmx5IHRhcmdldGVkIE5WQ0YtbWFuYWdlZCBuYW1lc3BhY2VzIChudmNhLW9wZXJhdG9yLCBu" + - "dmNmLWJhY2tlbmQpIGFuZCBkaWQgbm90IHRvdWNoIG90aGVyIGNsdXN0ZXIgcmVzb3VyY2VzLiIs" + - "CiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZj" + - "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9u" + - "IiwKICAgICAgIlRoZSBhZ2VudCBjb25maXJtZWQgYW5kIHVzZWQgdGhlIGNvbXB1dGUtcGxhbmUg" + - "Y29udGV4dCBmb3IgYWxsIGNsZWFudXAgY29tbWFuZHMiLAogICAgICAiVGhlIGFnZW50IHVzZWQg" + - "a3ViZWN0bCB0byBwYXRjaCBOVkNGQmFja2VuZCByZXNvdXJjZXMgdG8gcmVtb3ZlIHRoZWlyIGZp" + - "bmFsaXplcnMiLAogICAgICAiVGhlIGFnZW50IHVzZWQga3ViZWN0bCByZXBsYWNlIC0tcmF3IHRv" + - "IGNsZWFyIG5hbWVzcGFjZSBmaW5hbGl6ZXJzIG9uIHN0dWNrIG5hbWVzcGFjZXMiLAogICAgICAi" + - "VGhlIGFnZW50IG9ubHkgdGFyZ2V0ZWQgTlZDRi1tYW5hZ2VkIG5hbWVzcGFjZXMgKG52Y2Etb3Bl" + - "cmF0b3IsIG52Y2YtYmFja2VuZCkgYW5kIGRpZCBub3QgdG91Y2ggb3RoZXIgY2x1c3RlciByZXNv" + - "dXJjZXMiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QganVtcCBkaXJlY3RseSB0byBuYW1lc3Bh" + - "Y2UgZGVsZXRpb24gd2l0aG91dCBmaXJzdCByZW1vdmluZyBmaW5hbGl6ZXJzIgogICAgXQogIH0s" + - "CiAgewogICAgImlkIjogIkc2LWhlbG1maWxlLXNwbGl0LXdvcmtmbG93IiwKICAgICJxdWVzdGlv" + - "biI6ICJJbnN0YWxsIGFuIE5WQ0YgY29udHJvbCBwbGFuZSBhbmQgYSBzZXBhcmF0ZSBFS1MgY29t" + - "cHV0ZSBwbGFuZSB1c2luZyB0aGUgSGVsbWZpbGUgc3RhY2tzLiBUaGUgY29tcHV0ZSBjbHVzdGVy" + - "IGt1YmVjb25maWcgaXMgY29tcHV0ZS55YW1sLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZj" + - "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFn" + - "ZW50IGtlcHQgdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93IGluZGVwZW5kZW50IGZyb20gdGhlIENM" + - "SSBwcm9maWxlIGZsb3cuIEl0IGF1dGhvcmVkIHNlcGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNv" + - "bXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZXMgcGx1cyBhIGJhcmUtR2F0ZXdheSBDTEkgY29u" + - "ZmlnIHdpdGggVVJMIGFuZCBzY2hlbWUtbGVzcyBIb3N0IGZpZWxkcywgaW5zdGFsbGVkIHRoZSBj" + - "b250cm9sIHBsYW5lLCByYW4gdGhlIGNvbXB1dGUtcGxhbmUgTWFrZWZpbGUgcmVnaXN0ZXItY2x1" + - "c3RlciB0YXJnZXQgd2l0aCBJQ01TX1VSTCBhbmQgdGhlIGNvbXB1dGUga3ViZWNvbmZpZywgdGhl" + - "biByYW4gdGhlIGNvbXB1dGUtcGxhbmUgaW5zdGFsbCB0YXJnZXQgd2l0aCB0aGUgc2FtZSBlbnZp" + - "cm9ubWVudCBhbmQga3ViZWNvbmZpZy4gSXQgcmVsaWVkIG9uIHJlZ2lzdHJhdGlvbiB0byBkaXNj" + - "b3ZlciBPSURDIGFuZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUgY29udGV4dC4iLAogICAgImV4cGVj" + - "dGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5h" + - "Z2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJU" + - "aGUgYWdlbnQgYXV0aG9yZWQgc2VwYXJhdGUgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwgZmlsZXMg" + - "dW5kZXIgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgYW5kIGRlcGxveS9zdGFja3MvbnZjZi1j" + - "b21wdXRlLXBsYW5lIiwKICAgICAgIlRoZSBhZ2VudCBpbnN0YWxsZWQgdGhlIGNvbnRyb2wgcGxh" + - "bmUgYmVmb3JlIHJlZ2lzdGVyaW5nIG9yIGluc3RhbGxpbmcgdGhlIGNvbXB1dGUgcGxhbmUiLAog" + - "ICAgICAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgYmFzZV9odHRwX3VybCwgaW52b2tlX3VybCwgYmFz" + - "ZV9ncnBjX3VybCwgYXBpX2tleXNfc2VydmljZV91cmwsIGljbXNfdXJsLCBhcGlfaG9zdCwgYXBp" + - "X2tleXNfaG9zdCwgaW52b2tlX2hvc3QsIGFuZCBpY21zX2hvc3QgZm9yIHRoZSBiYXJlIEdhdGV3" + - "YXkiLAogICAgICAiVGhlIGFnZW50IHVzZWQgJ21ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNv" + - "bXB1dGUtcGxhbmUgcmVnaXN0ZXItY2x1c3Rlcicgd2l0aCBDTFVTVEVSX05BTUUsIE5DQV9JRCwg" + - "Q0xVU1RFUl9SRUdJT04sIElDTVNfVVJMLCBhbmQgS1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFt" + - "bCIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29t" + - "cHV0ZS1wbGFuZSBpbnN0YWxsJyB3aXRoIENMVVNURVJfTkFNRSwgSEVMTUZJTEVfRU5WLCBhbmQg" + - "S1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFtbCIsCiAgICAgICJUaGUgYWdlbnQgc3RhdGVkIHRo" + - "YXQgSUNNU19VUkwgbWFwcyBvbmx5IHRvIC0taWNtcy11cmwsIGNvbmZpZyBpY21zX2hvc3Qgc3Vw" + - "cGxpZXMgdGhlIEhvc3QgaGVhZGVyLCB0aGVyZSBpcyBubyAtLWljbXMtaG9zdCBNYWtlIG9yIENM" + - "SSBmbGFnLCBhbmQgcmVnaXN0cmF0aW9uIGRpc2NvdmVycyBPSURDIGFuZCBKV0tTIGZyb20gdGhl" + - "IGNvbXB1dGUgY29udGV4dCIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCByZXF1aXJlIGEgY29u" + - "dHJvbC1wbGFuZSBwcm9maWxlIGZvciB0aGlzIGZsb3cgYW5kIGRpZCBub3QgbWl4IGluIENMSSBw" + - "cm9maWxlIGNvbW1hbmRzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc3LWJvdGgtZG9ja2Vy" + - "LWhlbG0tYXV0aCIsCiAgICAicXVlc3Rpb24iOiAiQXV0aGVudGljYXRlIHRvIE5HQyBmb3IgTlZD" + - "RiBoZWxtZmlsZSBkZXBsb3ltZW50IiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYt" + - "bWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgcmFu" + - "IGJvdGggZG9ja2VyIGxvZ2luIGFuZCBoZWxtIHJlZ2lzdHJ5IGxvZ2luIGZvciBudmNyLmlvLiBJ" + - "dCBleHBsYWluZWQgdGhhdCBib3RoIGFyZSByZXF1aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMg" + - "aGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kgY2hhcnRzLCBzbyBkb2NrZXIgbG9naW4gYWxv" + - "bmUgaXMgaW5zdWZmaWNpZW50LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJU" + - "aGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1k" + - "IGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2RvY2tlciBsb2dp" + - "biBudmNyLmlvJyB3aXRoICRvYXV0aHRva2VuIHVzZXJuYW1lIGFuZCBOR0NfQVBJX0tFWSBwYXNz" + - "d29yZCIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHJlZ2lzdHJ5IGxvZ2luIG52Y3IuaW8n" + - "IHdpdGggJG9hdXRodG9rZW4gdXNlcm5hbWUgYW5kIE5HQ19BUElfS0VZIHBhc3N3b3JkIiwKICAg" + - "ICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCBib3RoIGFyZSByZXF1aXJlZCBiZWNhdXNlIGhl" + - "bG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kgY2hhcnRzIiwKICAgICAg" + - "IlRoZSBhZ2VudCBkaWQgbm90IHByb3ZpZGUgb25seSBvbmUgb2YgdGhlIHR3byBhdXRoZW50aWNh" + - "dGlvbiBjb21tYW5kcyIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJHOS1taXNzaW5nLWJ1bmRs" + - "ZSIsCiAgICAicXVlc3Rpb24iOiAiUnVuIGhlbG1maWxlIHN5bmMgZm9yIE5WQ0YgaW4gbXkgY3Vy" + - "cmVudCBkaXJlY3RvcnkiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2Vk" + - "LWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBhdHRlbXB0ZWQg" + - "dG8gdmVyaWZ5IHRoZSBidW5kbGUgc3RydWN0dXJlIChoZWxtZmlsZS5kLywgZW52aXJvbm1lbnRz" + - "Lywgc2VjcmV0cy8sIGdsb2JhbC55YW1sLmdvdG1wbCkgYW5kIHdoZW4gZmlsZXMgd2VyZSBub3Qg" + - "Zm91bmQsIHN0b3BwZWQgYW5kIGluc3RydWN0ZWQgdGhlIHVzZXIgdG8gZXh0cmFjdCBvciBsb2Nh" + - "dGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrIGJ1bmRsZS4gSXQgZGlkIG5vdCBhdHRlbXB0" + - "IHRvIHJ1biBoZWxtZmlsZSBzeW5jIGFnYWluc3QgYSBtaXNzaW5nIGJ1bmRsZS4iLAogICAgImV4" + - "cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1t" + - "YW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAg" + - "ICJUaGUgYWdlbnQgY2hlY2tlZCBmb3IgZXhwZWN0ZWQgYnVuZGxlIHN0cnVjdHVyZSAoaGVsbWZp" + - "bGUuZC8sIGVudmlyb25tZW50cy8sIHNlY3JldHMvLCBnbG9iYWwueWFtbC5nb3RtcGwpIiwKICAg" + - "ICAgIldoZW4gYnVuZGxlIGZpbGVzIHdlcmUgbm90IGZvdW5kLCB0aGUgYWdlbnQgc3RvcHBlZCBh" + - "bmQgZGlkIG5vdCBhdHRlbXB0IGhlbG1maWxlIHN5bmMiLAogICAgICAiVGhlIGFnZW50IGluc3Ry" + - "dWN0ZWQgdGhlIHVzZXIgdG8gZXh0cmFjdCBvciBsb2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2Vk" + - "LXN0YWNrIGJ1bmRsZSIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTMS1jbGVhbi1pbnN0YWxs" + - "YXRpb24iLAogICAgInF1ZXN0aW9uIjogIlBlcmZvcm0gYSBjbGVhbiBpbnN0YWxsYXRpb24gb2Yg" + - "dGhlIE5WQ0Ygc2VsZi1tYW5hZ2VkIHN0YWNrIG9uIG15IEFXUyBFS1MgY2x1c3Rlci4gTXkgZW52" + - "aXJvbm1lbnQgbmFtZSBpcyAnc3RhZ2luZycuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNm" + + "ZSBhZ2VudCBhdHRlbXB0ZWQgdG8gdmVyaWZ5IHRoZSBidW5kbGUgc3RydWN0dXJlIChoZWxtZmls" + + "ZS5kLywgZW52aXJvbm1lbnRzLywgc2VjcmV0cy8sIGdsb2JhbC55YW1sLmdvdG1wbCkgYW5kIHdo" + + "ZW4gZmlsZXMgd2VyZSBub3QgZm91bmQsIHN0b3BwZWQgYW5kIGluc3RydWN0ZWQgdGhlIHVzZXIg" + + "dG8gZXh0cmFjdCBvciBsb2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrIGJ1bmRsZS4g" + + "SXQgZGlkIG5vdCBhdHRlbXB0IHRvIHJ1biBoZWxtZmlsZSBzeW5jIGFnYWluc3QgYSBtaXNzaW5n" + + "IGJ1bmRsZS4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJl" + + "YWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFr" + + "aW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBmb3IgZXhwZWN0ZWQgYnVuZGxl" + + "IHN0cnVjdHVyZSAoaGVsbWZpbGUuZC8sIGVudmlyb25tZW50cy8sIHNlY3JldHMvLCBnbG9iYWwu" + + "eWFtbC5nb3RtcGwpIiwKICAgICAgIldoZW4gYnVuZGxlIGZpbGVzIHdlcmUgbm90IGZvdW5kLCB0" + + "aGUgYWdlbnQgc3RvcHBlZCBhbmQgZGlkIG5vdCBhdHRlbXB0IGhlbG1maWxlIHN5bmMiLAogICAg" + + "ICAiVGhlIGFnZW50IGluc3RydWN0ZWQgdGhlIHVzZXIgdG8gZXh0cmFjdCBvciBsb2NhdGUgdGhl" + + "IG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrIGJ1bmRsZSIKICAgIF0KICB9LAogIHsKICAgICJpZCI6" + + "ICJTMS1jbGVhbi1pbnN0YWxsYXRpb24iLAogICAgInF1ZXN0aW9uIjogIlBlcmZvcm0gYSBjbGVh" + + "biBpbnN0YWxsYXRpb24gb2YgdGhlIE5WQ0Ygc2VsZi1tYW5hZ2VkIHN0YWNrIG9uIG15IEFXUyBF" + + "S1MgY2x1c3Rlci4gTXkgZW52aXJvbm1lbnQgbmFtZSBpcyAnc3RhZ2luZycuIiwKICAgICJleHBl" + + "Y3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3Vu" + + "ZF90cnV0aCI6ICJUaGUgYWdlbnQgY29tcGxldGVkIHRoZSBjb250cm9sLXBsYW5lIGluc3RhbGxh" + + "dGlvbiBmaXJzdDogdmFsaWRhdGVkIHRvb2xzIGFuZCBidW5kbGUgc3RydWN0dXJlLCBjcmVhdGVk" + + "IGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNsdWRpbmcgY2VydC1tYW5hZ2VyLCBhdXRoZW50" + + "aWNhdGVkIHRoZSByZWdpc3RyaWVzLCBwcmV2aWV3ZWQsIGRlcGxveWVkLCBhbmQgbW9uaXRvcmVk" + + "IHRoZSBmb3VyIGNvbnRyb2wtcGxhbmUgcGhhc2VzLiBJdCB0aGVuIHNlbGVjdGVkIG9uZSBkb2N1" + + "bWVudGVkIGhhbmRvZmYgYW5kIHJlZ2lzdGVyZWQgYW5kIGluc3RhbGxlZCB0aGUgY29tcHV0ZSBw" + + "bGFuZSBhcyBhIHNlcGFyYXRlIHN0YWNrIHdpdGhvdXQgbWl4aW5nIHByb2ZpbGUgYW5kIEhlbG1m" + + "aWxlIHZhbHVlcyBmbG93cy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhl" + + "IGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBi" + + "ZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgdmFsaWRhdGVkIHRvb2wgdmVy" + + "c2lvbnMgKGhlbG1maWxlLCBoZWxtLCBoZWxtLWRpZmYsIGt1YmVjdGwpIiwKICAgICAgIlRoZSBh" + + "Z2VudCB2ZXJpZmllZCB0aGUgYnVuZGxlIHN0cnVjdHVyZSBleGlzdHMiLAogICAgICAiVGhlIGFn" + + "ZW50IGNyZWF0ZWQgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIChjYXNzYW5kcmEtc3lzdGVtLCBu" + + "YXRzLXN5c3RlbSwgbnZjZiwgYXBpLWtleXMsIGVzcywgc2lzLCB2YXVsdC1zeXN0ZW0sIGNlcnQt" + + "bWFuYWdlcikgd2l0aG91dCBhZGRpbmcgY29tcHV0ZS1vbmx5IG5hbWVzcGFjZXMiLAogICAgICAi" + + "VGhlIGFnZW50IHJhbiAnSEVMTUZJTEVfRU5WPXN0YWdpbmcgaGVsbWZpbGUgdGVtcGxhdGUnIHRv" + + "IHByZXZpZXcgYmVmb3JlIGRlcGxveWluZyIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdIRUxNRklM" + + "RV9FTlY9c3RhZ2luZyBoZWxtZmlsZSBzeW5jJyB0byBkZXBsb3kiLAogICAgICAiVGhlIGFnZW50" + + "IGV4cGxhaW5lZCB0aGUgNCBjb250cm9sLXBsYW5lIHBoYXNlcyAoZGVwZW5kZW5jaWVzLCBzZXJ2" + + "aWNlcywgaW5ncmVzcywgb2JzZXJ2YWJpbGl0eSkgYW5kIGFwcHJveGltYXRlIHdhaXQgdGltZXMi" + + "LAogICAgICAiQWZ0ZXIgdGhlIGNvbnRyb2wgcGxhbmUgd2FzIGhlYWx0aHksIHRoZSBhZ2VudCBy" + + "ZWdpc3RlcmVkIGFuZCBpbnN0YWxsZWQgdGhlIHNlcGFyYXRlIGNvbXB1dGUtcGxhbmUgc3RhY2sg" + + "dXNpbmcgZXhhY3RseSBvbmUgZG9jdW1lbnRlZCBoYW5kb2ZmIiwKICAgICAgIlRoZSBhZ2VudCBk" + + "aWQgbm90IG1peCBhIENMSS1nZW5lcmF0ZWQgY29udHJvbC1wbGFuZSBwcm9maWxlIHdpdGggdGhl" + + "IEhlbG1maWxlIHZhbHVlcyBmbG93IgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMzLWNsaS1w" + + "cm9maWxlLXdvcmtmbG93IiwKICAgICJxdWVzdGlvbiI6ICJVc2UgbnZjZi1jbGkgdG8gaW5zdGFs" + + "bCBteSBjb250cm9sIHBsYW5lIGFuZCB0aGVuIHJlZ2lzdGVyIGFuZCBpbnN0YWxsIGEgc2VwYXJh" + + "dGUgY29tcHV0ZSBjbHVzdGVyLiBTaG93IGV2ZXJ5IHJlcXVpcmVkIGdsb2JhbCBmbGFnLiIsCiAg" + + "ICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAg" + + "ICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGZpcnN0IHJhbiB0aGUgQ0xJIGNvbnRyb2wtcGxh" + + "bmUgaW5zdGFsbCBhbmQgcmVxdWlyZWQgaXRzIGdlbmVyYXRlZCBjb250cm9sLXBsYW5lLXByb2Zp" + + "bGUueWFtbC4gSXQgdGhlbiBzaG93ZWQgY29tcGxldGUgcmVnaXN0ZXIgYW5kIGluc3RhbGwgY29t" + + "bWFuZHMsIGVhY2ggaW5jbHVkaW5nIC0tY29uZmlnLCAtLWNvbnRyb2wtcGxhbmUtc3RhY2ssIC0t" + + "Y29tcHV0ZS1wbGFuZS1zdGFjaywgLS1lbnYsIGFuZCAtLXBsYWluIGJlZm9yZSB0aGUgY29tcHV0" + + "ZS1wbGFuZSBzdWJjb21tYW5kLiBSZWdpc3RyYXRpb24gY29uc3VtZWQgdGhlIHByb2ZpbGUgYW5k" + + "IHByb2R1Y2VkIHRoZSB2YWx1ZXMgZmlsZSBjb25zdW1lZCBieSBpbnN0YWxsLiBJdCBkaWQgbm90" + + "IHN3aXRjaCB0byB0aGUgSGVsbWZpbGUgdmFsdWVzIGhhbmRvZmYuIiwKICAgICJleHBlY3RlZF9i" + + "ZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1p" + + "bnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFn" + + "ZW50IHJhbiBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSBhbmQg" + + "dmVyaWZpZWQgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJv" + + "ZmlsZS55YW1sIGV4aXN0cyIsCiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBpbmNsdWRlZCAt" + + "LWNvbmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAtLWNvbXB1dGUtcGxhbmUtc3RhY2ssIC0t" + + "ZW52LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBpbmNsdWRlZCAt" + + "LWNvbnRyb2wtcGxhbmUtcHJvZmlsZSwgLS1jbHVzdGVyLW5hbWUsIC0ta3ViZS1jb250ZXh0LCAt" + + "LXJlZ2lvbiwgYW5kIC0tb3V0cHV0IiwKICAgICAgIlRoZSBpbnN0YWxsIGNvbW1hbmQgcmVwZWF0" + + "ZWQgLS1jb25maWcsIC0tY29udHJvbC1wbGFuZS1zdGFjaywgLS1jb21wdXRlLXBsYW5lLXN0YWNr" + + "LCAtLWVudiwgYW5kIC0tcGxhaW4iLAogICAgICAiVGhlIGluc3RhbGwgY29tbWFuZCBpbmNsdWRl" + + "ZCAtLXZhbHVlcywgLS1rdWJlLWNvbnRleHQsIGFuZCAtLWNsdXN0ZXItbmFtZSIsCiAgICAgICJU" + + "aGUgYWdlbnQga2VwdCB0aGUgZ2VuZXJhdGVkIHByb2ZpbGUgYXMgdGhlIGVuZHBvaW50IHNvdXJj" + + "ZSBhbmQgZGlkIG5vdCBtaXggaW4gSGVsbWZpbGUgdmFsdWVzIHJlZ2lzdHJhdGlvbiIKICAgIF0K" + + "ICB9LAogIHsKICAgICJpZCI6ICJTNC1vdmVycmlkZS1jYXNzYW5kcmEtcmVzb3VyY2VzIiwKICAg" + + "ICJxdWVzdGlvbiI6ICJDYXNzYW5kcmEgcG9kcyBrZWVwIGdldHRpbmcgT09NS2lsbGVkLiBJbmNy" + + "ZWFzZSBtZW1vcnkgbGltaXRzIHRvIDE2R2kuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNm" + "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdl" + - "bnQgY29tcGxldGVkIHRoZSBjb250cm9sLXBsYW5lIGluc3RhbGxhdGlvbiBmaXJzdDogdmFsaWRh" + - "dGVkIHRvb2xzIGFuZCBidW5kbGUgc3RydWN0dXJlLCBjcmVhdGVkIGNvbnRyb2wtcGxhbmUgbmFt" + - "ZXNwYWNlcyBpbmNsdWRpbmcgY2VydC1tYW5hZ2VyLCBhdXRoZW50aWNhdGVkIHRoZSByZWdpc3Ry" + - "aWVzLCBwcmV2aWV3ZWQsIGRlcGxveWVkLCBhbmQgbW9uaXRvcmVkIHRoZSBmb3VyIGNvbnRyb2wt" + - "cGxhbmUgcGhhc2VzLiBJdCB0aGVuIHNlbGVjdGVkIG9uZSBkb2N1bWVudGVkIGhhbmRvZmYgYW5k" + - "IHJlZ2lzdGVyZWQgYW5kIGluc3RhbGxlZCB0aGUgY29tcHV0ZSBwbGFuZSBhcyBhIHNlcGFyYXRl" + - "IHN0YWNrIHdpdGhvdXQgbWl4aW5nIHByb2ZpbGUgYW5kIEhlbG1maWxlIHZhbHVlcyBmbG93cy4i" + + "bnQgY2FwdHVyZWQgdGhlIGJhc2VsaW5lIHdpdGggaGVsbWZpbGUgdGVtcGxhdGUsIHRoZW4gbW9k" + + "aWZpZWQgdGhlIGNhc3NhbmRyYSByZWxlYXNlIHdpdGggaW5saW5lIHZhbHVlcyByZS1pbmNsdWRp" + + "bmcgZ2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNyZXRzIGluIHRoZSB2YWx1ZXMgYmxvY2suIEl0" + + "IHdhcm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGEgYW5kIHByZXZpZXdlZCB0aGUgZGlm" + + "ZiBiZWZvcmUgYXBwbHlpbmcuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRo" + + "ZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQg" + + "YmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGNhcHR1cmVkIGJhc2VsaW5l" + + "IHdpdGggJ2hlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUnIiwKICAg" + + "ICAgIlRoZSBhZ2VudCBtb2RpZmllZCB0aGUgcmVsZWFzZSB2YWx1ZXMgYmxvY2sgdG8gaW5jbHVk" + + "ZSByZXNvdXJjZSBsaW1pdHMgd2l0aCBtZW1vcnk6IDE2R2kiLAogICAgICAiVGhlIGFnZW50IHJl" + + "LWluY2x1ZGVkIGdsb2JhbC55YW1sLmdvdG1wbCBhbmQgc2VjcmV0cyBmaWxlIGluIHRoZSB2YWx1" + + "ZXM6IGJsb2NrIChub3QganVzdCB0aGUgb3ZlcnJpZGUgYWxvbmUpIiwKICAgICAgIlRoZSBhZ2Vu" + + "dCB3YXJuZWQgYWJvdXQgdGhlIFlBTUwgbWVyZ2UgZ290Y2hhOiBzcGVjaWZ5aW5nIHZhbHVlczog" + + "cmVwbGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QgZW50aXJlbHkiLAogICAgICAiVGhl" + + "IGFnZW50IHByZXZpZXdlZCB0aGUgY2hhbmdlIHdpdGggaGVsbWZpbGUgdGVtcGxhdGUgYW5kIGRp" + + "ZmYgYmVmb3JlIGFwcGx5aW5nIHdpdGggc3luYyIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJT" + + "Ni1zZWxlY3RpdmUtc3luYy1kZXBlbmRlbmNpZXMiLAogICAgInF1ZXN0aW9uIjogIkRlcGxveSBv" + + "bmx5IHRoZSBOVkNGIGRlcGVuZGVuY2llcyAtLSBOQVRTLCBDYXNzYW5kcmEsIGFuZCBPcGVuQmFv" + + "IC0tIGZvciB0ZXN0aW5nIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdl" + + "ZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgdXNlZCB0aGUg" + + "aGVsbWZpbGUgc2VsZWN0b3IgdG8gZGVwbG95IG9ubHkgdGhlIGRlcGVuZGVuY2llcyByZWxlYXNl" + + "IGdyb3VwLCB0aGVuIHZlcmlmaWVkIHBvZHMgaW4gdGhlIGRlcGVuZGVuY3kgbmFtZXNwYWNlcy4i" + "LAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52" + "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlv" + - "biIsCiAgICAgICJUaGUgYWdlbnQgdmFsaWRhdGVkIHRvb2wgdmVyc2lvbnMgKGhlbG1maWxlLCBo" + - "ZWxtLCBoZWxtLWRpZmYsIGt1YmVjdGwpIiwKICAgICAgIlRoZSBhZ2VudCB2ZXJpZmllZCB0aGUg" + - "YnVuZGxlIHN0cnVjdHVyZSBleGlzdHMiLAogICAgICAiVGhlIGFnZW50IGNyZWF0ZWQgY29udHJv" + - "bC1wbGFuZSBuYW1lc3BhY2VzIChjYXNzYW5kcmEtc3lzdGVtLCBuYXRzLXN5c3RlbSwgbnZjZiwg" + - "YXBpLWtleXMsIGVzcywgc2lzLCB2YXVsdC1zeXN0ZW0sIGNlcnQtbWFuYWdlcikgd2l0aG91dCBh" + - "ZGRpbmcgY29tcHV0ZS1vbmx5IG5hbWVzcGFjZXMiLAogICAgICAiVGhlIGFnZW50IHJhbiAnSEVM" + - "TUZJTEVfRU5WPXN0YWdpbmcgaGVsbWZpbGUgdGVtcGxhdGUnIHRvIHByZXZpZXcgYmVmb3JlIGRl" + - "cGxveWluZyIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdIRUxNRklMRV9FTlY9c3RhZ2luZyBoZWxt" + - "ZmlsZSBzeW5jJyB0byBkZXBsb3kiLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgNCBj" + - "b250cm9sLXBsYW5lIHBoYXNlcyAoZGVwZW5kZW5jaWVzLCBzZXJ2aWNlcywgaW5ncmVzcywgb2Jz" + - "ZXJ2YWJpbGl0eSkgYW5kIGFwcHJveGltYXRlIHdhaXQgdGltZXMiLAogICAgICAiQWZ0ZXIgdGhl" + - "IGNvbnRyb2wgcGxhbmUgd2FzIGhlYWx0aHksIHRoZSBhZ2VudCByZWdpc3RlcmVkIGFuZCBpbnN0" + - "YWxsZWQgdGhlIHNlcGFyYXRlIGNvbXB1dGUtcGxhbmUgc3RhY2sgdXNpbmcgZXhhY3RseSBvbmUg" + - "ZG9jdW1lbnRlZCBoYW5kb2ZmIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IG1peCBhIENMSS1n" + - "ZW5lcmF0ZWQgY29udHJvbC1wbGFuZSBwcm9maWxlIHdpdGggdGhlIEhlbG1maWxlIHZhbHVlcyBm" + - "bG93IgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMzLWNsaS1wcm9maWxlLXdvcmtmbG93IiwK" + - "ICAgICJxdWVzdGlvbiI6ICJVc2UgbnZjZi1jbGkgdG8gaW5zdGFsbCBteSBjb250cm9sIHBsYW5l" + - "IGFuZCB0aGVuIHJlZ2lzdGVyIGFuZCBpbnN0YWxsIGEgc2VwYXJhdGUgY29tcHV0ZSBjbHVzdGVy" + - "LiBTaG93IGV2ZXJ5IHJlcXVpcmVkIGdsb2JhbCBmbGFnLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwi" + - "OiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAi" + - "VGhlIGFnZW50IGZpcnN0IHJhbiB0aGUgQ0xJIGNvbnRyb2wtcGxhbmUgaW5zdGFsbCBhbmQgcmVx" + - "dWlyZWQgaXRzIGdlbmVyYXRlZCBjb250cm9sLXBsYW5lLXByb2ZpbGUueWFtbC4gSXQgdGhlbiBz" + - "aG93ZWQgY29tcGxldGUgcmVnaXN0ZXIgYW5kIGluc3RhbGwgY29tbWFuZHMsIGVhY2ggaW5jbHVk" + - "aW5nIC0tY29uZmlnLCAtLWNvbnRyb2wtcGxhbmUtc3RhY2ssIC0tY29tcHV0ZS1wbGFuZS1zdGFj" + - "aywgLS1lbnYsIGFuZCAtLXBsYWluIGJlZm9yZSB0aGUgY29tcHV0ZS1wbGFuZSBzdWJjb21tYW5k" + - "LiBSZWdpc3RyYXRpb24gY29uc3VtZWQgdGhlIHByb2ZpbGUgYW5kIHByb2R1Y2VkIHRoZSB2YWx1" + - "ZXMgZmlsZSBjb25zdW1lZCBieSBpbnN0YWxsLiBJdCBkaWQgbm90IHN3aXRjaCB0byB0aGUgSGVs" + - "bWZpbGUgdmFsdWVzIGhhbmRvZmYuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAg" + - "IlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwu" + - "bWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IHJhbiBudmNmLWNsaSBz" + - "ZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSBhbmQgdmVyaWZpZWQgZGVwbG95L3N0" + - "YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sIGV4aXN0cyIs" + - "CiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBpbmNsdWRlZCAtLWNvbmZpZywgLS1jb250cm9s" + - "LXBsYW5lLXN0YWNrLCAtLWNvbXB1dGUtcGxhbmUtc3RhY2ssIC0tZW52LCBhbmQgLS1wbGFpbiIs" + - "CiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBpbmNsdWRlZCAtLWNvbnRyb2wtcGxhbmUtcHJv" + - "ZmlsZSwgLS1jbHVzdGVyLW5hbWUsIC0ta3ViZS1jb250ZXh0LCAtLXJlZ2lvbiwgYW5kIC0tb3V0" + - "cHV0IiwKICAgICAgIlRoZSBpbnN0YWxsIGNvbW1hbmQgcmVwZWF0ZWQgLS1jb25maWcsIC0tY29u" + - "dHJvbC1wbGFuZS1zdGFjaywgLS1jb21wdXRlLXBsYW5lLXN0YWNrLCAtLWVudiwgYW5kIC0tcGxh" + - "aW4iLAogICAgICAiVGhlIGluc3RhbGwgY29tbWFuZCBpbmNsdWRlZCAtLXZhbHVlcywgLS1rdWJl" + - "LWNvbnRleHQsIGFuZCAtLWNsdXN0ZXItbmFtZSIsCiAgICAgICJUaGUgYWdlbnQga2VwdCB0aGUg" + - "Z2VuZXJhdGVkIHByb2ZpbGUgYXMgdGhlIGVuZHBvaW50IHNvdXJjZSBhbmQgZGlkIG5vdCBtaXgg" + - "aW4gSGVsbWZpbGUgdmFsdWVzIHJlZ2lzdHJhdGlvbiIKICAgIF0KICB9LAogIHsKICAgICJpZCI6" + - "ICJTNC1vdmVycmlkZS1jYXNzYW5kcmEtcmVzb3VyY2VzIiwKICAgICJxdWVzdGlvbiI6ICJDYXNz" + - "YW5kcmEgcG9kcyBrZWVwIGdldHRpbmcgT09NS2lsbGVkLiBJbmNyZWFzZSBtZW1vcnkgbGltaXRz" + - "IHRvIDE2R2kuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0" + - "YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgY2FwdHVyZWQgdGhlIGJh" + - "c2VsaW5lIHdpdGggaGVsbWZpbGUgdGVtcGxhdGUsIHRoZW4gbW9kaWZpZWQgdGhlIGNhc3NhbmRy" + - "YSByZWxlYXNlIHdpdGggaW5saW5lIHZhbHVlcyByZS1pbmNsdWRpbmcgZ2xvYmFsLnlhbWwuZ290" + - "bXBsIGFuZCBzZWNyZXRzIGluIHRoZSB2YWx1ZXMgYmxvY2suIEl0IHdhcm5lZCBhYm91dCB0aGUg" + - "WUFNTCBtZXJnZSBnb3RjaGEgYW5kIHByZXZpZXdlZCB0aGUgZGlmZiBiZWZvcmUgYXBwbHlpbmcu" + + "biIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdy" + + "b3VwPWRlcGVuZGVuY2llcyBzeW5jJyB0byBkZXBsb3kgb25seSBkZXBlbmRlbmNpZXMiLAogICAg" + + "ICAiVGhlIGFnZW50IHZlcmlmaWVkIHBvZHMgaW4gZGVwZW5kZW5jeSBuYW1lc3BhY2VzIChuYXRz" + + "LXN5c3RlbSwgY2Fzc2FuZHJhLXN5c3RlbSwgdmF1bHQtc3lzdGVtKSIsCiAgICAgICJUaGUgYWdl" + + "bnQgcHJvdmlkZWQgdGhlIHNlbGVjdG9yIHJlZmVyZW5jZSBmb3IgdGFyZ2V0aW5nIG90aGVyIHJl" + + "bGVhc2UgZ3JvdXBzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlM3LWRlYnVnLWltYWdlcHVs" + + "bGJhY2tvZmYiLAogICAgInF1ZXN0aW9uIjogIkNhc3NhbmRyYSBwb2RzIGFyZSBpbiBJbWFnZVB1" + + "bGxCYWNrT2ZmIHdpdGggNDAxIFVuYXV0aG9yaXplZCIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAi" + + "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhl" + + "IGFnZW50IHJlYWQgdGhlIGRlYnVnZ2luZyByZWZlcmVuY2UgYW5kIHJhbiBkaWFnbm9zdGljIGNv" + + "bW1hbmRzIHRvIGlkZW50aWZ5IHRoZSByb290IGNhdXNlOiBkZXNjcmliZWQgdGhlIHBvZCwgY2hl" + + "Y2tlZCBmb3IgcHVsbCBzZWNyZXRzLCBjaGVja2VkIGltYWdlUHVsbFNlY3JldHMgb24gdGhlIHBv" + + "ZCBzcGVjIGFuZCBzZXJ2aWNlIGFjY291bnQuIEl0IGlkZW50aWZpZWQgdGhlIGlzc3VlIChtaXNz" + + "aW5nIHNlY3JldCwgd3JvbmcgY3JlZGVudGlhbHMsIG9yIG1pc3NpbmcgaW1hZ2VQdWxsU2VjcmV0" + + "cykgYW5kIHByb3ZpZGVkIHRoZSBjb3JyZWN0IGZpeC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9y" + + "IjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxh" + + "dGlvbiBTS0lMTC5tZCBhbmQgcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQiLAogICAgICAiVGhlIGFn" + + "ZW50IHJhbiAna3ViZWN0bCBkZXNjcmliZSBwb2QnIHRvIHNlZSB0aGUgSW1hZ2VQdWxsQmFja09m" + + "ZiBldmVudHMiLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQgZm9yIHB1bGwgc2VjcmV0cyBpbiB0" + + "aGUgY2Fzc2FuZHJhLXN5c3RlbSBuYW1lc3BhY2UiLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQg" + + "aW1hZ2VQdWxsU2VjcmV0cyBvbiB0aGUgcG9kIHNwZWMgYW5kL29yIHNlcnZpY2UgYWNjb3VudCIs" + + "CiAgICAgICJUaGUgYWdlbnQgaWRlbnRpZmllZCB0aGUgcm9vdCBjYXVzZSBhbmQgcHJvdmlkZWQg" + + "YSBzcGVjaWZpYyBmaXgiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzktcmVtb3RlLWVrcy1y" + + "b3V0aW5nLWFuZC1zZWNyZXRzIiwKICAgICJxdWVzdGlvbiI6ICJDb25maWd1cmUgYSByZW1vdGUg" + + "RUtTIGNvbXB1dGUgY2x1c3RlciB0byByZWFjaCBteSBOVkNGIGNvbnRyb2wgcGxhbmUgdGhyb3Vn" + + "aCBpdHMgRW52b3kgR2F0ZXdheSwgaW5jbHVkaW5nIE5BVFMgYW5kIHByaXZhdGUtcmVnaXN0cnkg" + + "cHVsbCBzZWNyZXRzLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQt" + + "aW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGNvbmZpZ3VyZWQg" + + "dGhlIGNvbnRyb2wgcGxhbmUgdG8gdXNlIHRoZSBFbnZveSBHYXRld2F5IGNvbnRyb2xsZXIgaW4g" + + "ZW52b3ktZ2F0ZXdheS1zeXN0ZW0gYW5kIEdhdGV3YXkvbnZjZi1nYXRld2F5IGluIGVudm95LWdh" + + "dGV3YXksIHNldCBhbGwgc2l4IHJlbW90ZSB3b3JrZXIgZW5kcG9pbnRzIGFuZCB0aGUgZ3JwYy1w" + + "cm94eSBsb2NhbCBvdmVycmlkZSwgZW5hYmxlZCBOVkNGIGFuZCBOVkNUIGdSUEMgcm91dGVzIHBs" + + "dXMgTkFUUywgYW5kIGVuYWJsZWQgT3BlbkJhbyBpc3N1ZXIgZGlzY292ZXJ5LiBJdCBjb25maWd1" + + "cmVkIHRoZSBiYXJlLUdhdGV3YXkgQ0xJIFVSTCBhbmQgSG9zdCBmaWVsZHMgaW5jbHVkaW5nIGlj" + + "bXNfaG9zdCwgcGx1cyB0aGUgY29tcHV0ZS1wbGFuZSBJQ01TLCBSZVZhbCwgYW5kIE5BVFMgZXh0" + + "ZXJuYWwgVVJMcyBhbmQgaG9zdCBvdmVycmlkZXMuIEl0IGNyZWF0ZWQgdGhlIHB1bGwgc2VjcmV0" + + "IGluIGFsbCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMgaW5jbHVkaW5nIGNlcnQtbWFuYWdlciwg" + + "YnV0IG9ubHkgaW4gbnZjYS1vcGVyYXRvciBvbiB0aGUgY29tcHV0ZSBjbHVzdGVyOyB0aGUgY2hh" + + "cnQgYW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0byBudmNhLXN5c3RlbS4iLAogICAgImV4cGVjdGVk" + + "X2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2Vk" + + "LWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUg" + + "YWdlbnQgc2V0IGluZ3Jlc3MuZ2F0ZXdheUFwaS5jb250cm9sbGVyTmFtZXNwYWNlIHRvIGVudm95" + + "LWdhdGV3YXktc3lzdGVtIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgc2hhcmVkLCBncnBjLCBhbmQg" + + "bmF0cyBHYXRld2F5IHJlZmVyZW5jZXMgdG8gbmFtZSBudmNmLWdhdGV3YXkgYW5kIG5hbWVzcGFj" + + "ZSBlbnZveS1nYXRld2F5IiwKICAgICAgIlRoZSBhZ2VudCBzZXQgZ2xvYmFsLndvcmtlckVuZHBv" + + "aW50cy5udmNmU2VydmljZVVSTCwgbnZjZkdycGNTZXJ2aWNlVVJMLCBudmNmTmF0c1NlcnZpY2VV" + + "UkwsIG52Y3RTZXJ2aWNlVVJMLCBudmN0R3JwY1NlcnZpY2VVUkwsIGFuZCBpbnZvY2F0aW9uU2Vy" + + "dmljZVVSTCIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGdycGNwcm94eS5udmNmR3JwY1NlcnZpY2VV" + + "UkwgdG8gdGhlIGNvbnRyb2wtcGxhbmUtbG9jYWwgQVBJIGdSUEMgc2VydmljZSIsCiAgICAgICJU" + + "aGUgYWdlbnQgZW5hYmxlZCBib3RoIGluZ3Jlc3MuZ2F0ZXdheUFwaS5yb3V0ZXMubnZjZkFwaS5n" + + "cnBjIGFuZCBudmN0QXBpLmdycGMgd2l0aCB3b3JrZXItYXBpIGFuZCB3b3JrZXItdGFza3MgaG9z" + + "dG5hbWVzIiwKICAgICAgIlRoZSBhZ2VudCBleHBsaWNpdGx5IHNldCBpbmdyZXNzLmdhdGV3YXlB" + + "cGkucm91dGVzLm5hdHMuZW5hYmxlZCB0byB0cnVlIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgb3Bl" + + "bmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkIHRvIHRydWUiLAogICAgICAi" + + "VGhlIGFnZW50IGNvbmZpZ3VyZWQgdGhlIGJhcmUtR2F0ZXdheSBDTEkgVVJMIGFuZCBIb3N0IGZp" + + "ZWxkcywgaW5jbHVkaW5nIHNjaGVtZS1sZXNzIGljbXNfaG9zdCIsCiAgICAgICJUaGUgYWdlbnQg" + + "Y29uZmlndXJlZCBjb21wdXRlLXBsYW5lIGljbXNTZXJ2aWNlVVJMLCBpY21zU2VydmljZUhvc3RI" + + "ZWFkZXJPdmVycmlkZSwgcmV2YWxTZXJ2aWNlVVJMLCByZXZhbFNlcnZpY2VIb3N0SGVhZGVyT3Zl" + + "cnJpZGUsIG5hdHNVUkwsIGFuZCBuYXRzSG9zdE92ZXJyaWRlIiwKICAgICAgIlRoZSBjb250cm9s" + + "LXBsYW5lIHB1bGwtc2VjcmV0IG5hbWVzcGFjZSBsaXN0IGluY2x1ZGVkIGNlcnQtbWFuYWdlciIs" + + "CiAgICAgICJUaGUgY29tcHV0ZS1wbGFuZSBzZWNyZXQgd2FzIGNyZWF0ZWQgb25seSBpbiBudmNh" + + "LW9wZXJhdG9yIGFuZCBtaXJyb3JlZCBieSB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIHRvIG52Y2Et" + + "c3lzdGVtIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkcxMS1zcGxpdC10ZWFyZG93biIsCiAg" + + "ICAicXVlc3Rpb24iOiAiVGVhciBkb3duIG15IHNwbGl0IGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1" + + "dGUtcGxhbmUgZGVwbG95bWVudCBzYWZlbHkuIFNob3cgYm90aCB0aGUgSGVsbWZpbGUgdmFsdWVz" + + "IGFuZCBDTEkgcHJvZmlsZSB2YXJpYW50cy4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Yt" + + "c2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBIZWxt" + + "ZmlsZSBmbG93IGRlc3Ryb3llZCBhbmQgY29uZmlybWVkIGRlcmVnaXN0cmF0aW9uIG9mIGV2ZXJ5" + + "IGNvbXB1dGUgY2x1c3RlciBiZWZvcmUgZGVzdHJveWluZyB0aGUgY29udHJvbCBwbGFuZSBhbmQg" + + "cGFzc2VkIGJvdGggY29udHJvbC1wbGFuZSBrdWJlY29uZmlnIGZvcm1zLiBCZWZvcmUgZWl0aGVy" + + "IGhhbmRvZmYgY291bGQgZGVzdHJveSB0aGUgY29udHJvbCBwbGFuZSwgYm90aCB0ZWFyZG93biBm" + + "bG93cyB3YXJuZWQgdGhhdCBuYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRvZXMgbm90IHByZXNlcnZl" + + "IHRoZSBIZWxtIHJlbGVhc2UsIHJlcXVpcmVkIGVmZmVjdGl2ZSBjZXJ0TWFuYWdlci5lbmFibGVk" + + "OiBmYWxzZSBmb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uIGFuZCBhYm9ydGVkIGlmIHRydWUs" + + "IGFuZCB2ZXJpZmllZCBtYXRjaGluZyByZWxlYXNlIG93bmVyc2hpcCBmb3IgYW4gaW50ZW5kZWQg" + + "c3RhY2stbWFuYWdlZCByZWxlYXNlLCBhYm9ydGluZyBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQg" + + "ZXZpZGVuY2UuIFRoZXkgcHJlc2VydmVkIHRoZSBuYW1lc3BhY2UgYnkgZGVmYXVsdCBhbmQgZGlk" + + "IG5vdCBkZWxldGUgaXQgd2l0aG91dCBuYW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQgZXhwbGljaXQg" + + "Y29uZmlybWF0aW9uLiBUaGUgQ0xJIGZsb3cgcmV0YWluZWQgdGhlIGdlbmVyYXRlZCByZWdpc3Ry" + + "YXRpb24gdmFsdWVzLCB1c2VkIHRoZSBmdWxsLXByZWZpeCBzdGF0dXMgY29tbWFuZCB0byBpbnNw" + + "ZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRoYXQgbmFtZWQtY2x1c3RlciBwbGFuLW9u" + + "bHkgZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90IHByZWRpY3QgY29uZGl0aW9uYWwgY29u" + + "dHJvbC1wbGFuZSByZW1vdmFsLCBhbmQgZ290IGV4cGxpY2l0IGNvbmZpcm1hdGlvbiB3aGVuIHRo" + + "ZSB0YXJnZXQgd2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3Rlci4gSXQgdGhlbiBwcmV2aWV3" + + "ZWQgYW5kIHJhbiBkb3duIHdpdGggdGhlIGZ1bGwgcGVyc2lzdGVudCBwcmVmaXgsIHJlbW92aW5n" + + "IHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgdGhlIGxhc3QgcmVnaXN0cmF0aW9uIHdhcyBn" + + "b25lLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0" + + "aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcg" + + "YWN0aW9uIiwKICAgICAgIkZvciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRoZSBIZWxtZmlsZSBm" + + "bG93IHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZSBkZXN0cm95IHRhcmdldCB3aXRoIGl0" + + "cyBjb21wdXRlIGt1YmVjb25maWciLAogICAgICAiQWZ0ZXIgY29uZmlybWF0aW9uLCB0aGUgSGVs" + + "bWZpbGUgZmxvdyByYW4gY2x1c3RlciBkZWxldGUgd2l0aCBjbHVzdGVySUQgYW5kIG5jYUlEIGJl" + + "Zm9yZSBjb250cm9sLXBsYW5lIGRlc3RydWN0aW9uIiwKICAgICAgIkJlZm9yZSBlaXRoZXIgaGFu" + + "ZG9mZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBib3RoIHRlYXJkb3duIGZsb3dz" + + "IHdhcm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9lcyBub3QgcHJlc2VydmUgdGhl" + + "IEhlbG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZlIGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZh" + + "bHNlIGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24gYW5kIGFib3J0ZWQgaWYgdHJ1ZSwgYW5k" + + "IHZlcmlmaWVkIGludGVuZGVkIHN0YWNrIG93bmVyc2hpcCB3aGVuIGVuYWJsZWQsIGFib3J0aW5n" + + "IG9uIG1pc3Npbmcgb3IgbWlzbWF0Y2hlZCBldmlkZW5jZSIsCiAgICAgICJCb3RoIHRlYXJkb3du" + + "IGZsb3dzIHByZXNlcnZlZCB0aGUgY2VydC1tYW5hZ2VyIG5hbWVzcGFjZSBieSBkZWZhdWx0IGFu" + + "ZCBkaWQgbm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBleHBs" + + "aWNpdCBjb25maXJtYXRpb24iLAogICAgICAiVGhlIEhlbG1maWxlIGZsb3cgcmFuIGNvbnRyb2wt" + + "cGxhbmUgTWFrZWZpbGUgZGVzdHJveSB3aXRoIGJvdGggS1VCRUNPTkZJRyBhbmQgS1VCRUNPTkZJ" + + "R19GSUxFIiwKICAgICAgIlRoZSBDTEkgZmxvdyByZXRhaW5lZCBvdXQvPGNsdXN0ZXItbmFtZT4t" + + "cmVnaXN0ZXItdmFsdWVzLnlhbWwgdW50aWwgdGVhcmRvd24gY29tcGxldGVkIiwKICAgICAgIkJl" + + "Zm9yZSByZWFsIGRvd24sIHRoZSBDTEkgZmxvdyB1c2VkIHRoZSBmdWxsLXByZWZpeCBzdGF0dXMg" + + "Y29tbWFuZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRoYXQgbmFtZWQt" + + "Y2x1c3RlciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90IHByZWRpY3Qg" + + "Y29uZGl0aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLCB3YXJuZWQgd2hlbiB0aGUgdGFyZ2V0" + + "IHdhcyB0aGUgbGFzdCByZWdpc3RlcmVkIGNsdXN0ZXIsIGFuZCBnb3QgZXhwbGljaXQgY29uZmly" + + "bWF0aW9uIiwKICAgICAgIlRoZSBDTEkgZmxvdyB1c2VkIC0tY29uZmlnLCBib3RoIHN0YWNrIHBh" + + "dGhzLCAtLWVudiwgLS1wbGFpbiwgYm90aCBjb250ZXh0cywgYW5kIC0taWNtcy11cmwgZm9yIGRv" + + "d24gLS1wbGFuLW9ubHkgYW5kIHRoZW4gZG93biIsCiAgICAgICJUaGUgYWdlbnQgc3RhdGVkIHRo" + + "YXQgZG93biB1bnJlZ2lzdGVycyBlYWNoIGNvbXB1dGUgY2x1c3RlciBhbmQgcmVtb3ZlcyB0aGUg" + + "Y29udHJvbCBwbGFuZSBvbmx5IGFmdGVyIG5vIHJlZ2lzdHJhdGlvbnMgcmVtYWluIgogICAgXQog" + + "IH0sCiAgewogICAgImlkIjogIlMxMy12YWx1ZXMtcHJlY2VkZW5jZSIsCiAgICAicXVlc3Rpb24i" + + "OiAiSSBhZGRlZCBhIHZhbHVlIHRvIG15IGVudmlyb25tZW50IFlBTUwgYnV0IGl0J3MgYmVpbmcg" + + "c2lsZW50bHkgaWdub3JlZC4gSG93IGRvIGhlbG1maWxlIHZhbHVlcyB3b3JrIGluIE5WQ0Y/IiwK" + + "ICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAog" + + "ICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSB2YWx1ZXMgcHJlY2Vk" + + "ZW5jZSBjaGFpbiAoYmFzZS55YW1sLCBlbnYgWUFNTCwgZ2xvYmFsLnlhbWwuZ290bXBsLCBzZWNy" + + "ZXRzLCBpbmxpbmUgdmFsdWVzKSwgaWRlbnRpZmllZCB0aGF0IGdsb2JhbC55YW1sLmdvdG1wbCBv" + + "bmx5IHBhc3NlcyB0aHJvdWdoIHNwZWNpZmljIGtleXMsIGFuZCBleHBsYWluZWQgdGhhdCBhcmJp" + + "dHJhcnkgY2hhcnQgdmFsdWVzIG11c3QgdXNlIHJlbGVhc2UgaW5saW5lIHZhbHVlcyBibG9ja3Mu" + "IiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBu" + "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rp" + - "b24iLAogICAgICAiVGhlIGFnZW50IGNhcHR1cmVkIGJhc2VsaW5lIHdpdGggJ2hlbG1maWxlIC0t" + - "c2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUnIiwKICAgICAgIlRoZSBhZ2VudCBtb2Rp" + - "ZmllZCB0aGUgcmVsZWFzZSB2YWx1ZXMgYmxvY2sgdG8gaW5jbHVkZSByZXNvdXJjZSBsaW1pdHMg" + - "d2l0aCBtZW1vcnk6IDE2R2kiLAogICAgICAiVGhlIGFnZW50IHJlLWluY2x1ZGVkIGdsb2JhbC55" + - "YW1sLmdvdG1wbCBhbmQgc2VjcmV0cyBmaWxlIGluIHRoZSB2YWx1ZXM6IGJsb2NrIChub3QganVz" + - "dCB0aGUgb3ZlcnJpZGUgYWxvbmUpIiwKICAgICAgIlRoZSBhZ2VudCB3YXJuZWQgYWJvdXQgdGhl" + - "IFlBTUwgbWVyZ2UgZ290Y2hhOiBzcGVjaWZ5aW5nIHZhbHVlczogcmVwbGFjZXMgdGhlIHRlbXBs" + - "YXRlJ3MgdmFsdWVzIGxpc3QgZW50aXJlbHkiLAogICAgICAiVGhlIGFnZW50IHByZXZpZXdlZCB0" + - "aGUgY2hhbmdlIHdpdGggaGVsbWZpbGUgdGVtcGxhdGUgYW5kIGRpZmYgYmVmb3JlIGFwcGx5aW5n" + - "IHdpdGggc3luYyIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTNi1zZWxlY3RpdmUtc3luYy1k" + - "ZXBlbmRlbmNpZXMiLAogICAgInF1ZXN0aW9uIjogIkRlcGxveSBvbmx5IHRoZSBOVkNGIGRlcGVu" + - "ZGVuY2llcyAtLSBOQVRTLCBDYXNzYW5kcmEsIGFuZCBPcGVuQmFvIC0tIGZvciB0ZXN0aW5nIiwK" + - "ICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAog" + - "ICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgdXNlZCB0aGUgaGVsbWZpbGUgc2VsZWN0b3Ig" + - "dG8gZGVwbG95IG9ubHkgdGhlIGRlcGVuZGVuY2llcyByZWxlYXNlIGdyb3VwLCB0aGVuIHZlcmlm" + - "aWVkIHBvZHMgaW4gdGhlIGRlcGVuZGVuY3kgbmFtZXNwYWNlcy4iLAogICAgImV4cGVjdGVkX2Jl" + - "aGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWlu" + - "c3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdl" + - "bnQgdXNlZCAnaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llcyBz" + - "eW5jJyB0byBkZXBsb3kgb25seSBkZXBlbmRlbmNpZXMiLAogICAgICAiVGhlIGFnZW50IHZlcmlm" + - "aWVkIHBvZHMgaW4gZGVwZW5kZW5jeSBuYW1lc3BhY2VzIChuYXRzLXN5c3RlbSwgY2Fzc2FuZHJh" + - "LXN5c3RlbSwgdmF1bHQtc3lzdGVtKSIsCiAgICAgICJUaGUgYWdlbnQgcHJvdmlkZWQgdGhlIHNl" + - "bGVjdG9yIHJlZmVyZW5jZSBmb3IgdGFyZ2V0aW5nIG90aGVyIHJlbGVhc2UgZ3JvdXBzIgogICAg" + - "XQogIH0sCiAgewogICAgImlkIjogIlM3LWRlYnVnLWltYWdlcHVsbGJhY2tvZmYiLAogICAgInF1" + - "ZXN0aW9uIjogIkNhc3NhbmRyYSBwb2RzIGFyZSBpbiBJbWFnZVB1bGxCYWNrT2ZmIHdpdGggNDAx" + - "IFVuYXV0aG9yaXplZCIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQt" + - "aW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IHJlYWQgdGhlIGRl" + - "YnVnZ2luZyByZWZlcmVuY2UgYW5kIHJhbiBkaWFnbm9zdGljIGNvbW1hbmRzIHRvIGlkZW50aWZ5" + - "IHRoZSByb290IGNhdXNlOiBkZXNjcmliZWQgdGhlIHBvZCwgY2hlY2tlZCBmb3IgcHVsbCBzZWNy" + - "ZXRzLCBjaGVja2VkIGltYWdlUHVsbFNlY3JldHMgb24gdGhlIHBvZCBzcGVjIGFuZCBzZXJ2aWNl" + - "IGFjY291bnQuIEl0IGlkZW50aWZpZWQgdGhlIGlzc3VlIChtaXNzaW5nIHNlY3JldCwgd3Jvbmcg" + - "Y3JlZGVudGlhbHMsIG9yIG1pc3NpbmcgaW1hZ2VQdWxsU2VjcmV0cykgYW5kIHByb3ZpZGVkIHRo" + - "ZSBjb3JyZWN0IGZpeC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFn" + - "ZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBhbmQg" + - "cmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQiLAogICAgICAiVGhlIGFnZW50IHJhbiAna3ViZWN0bCBk" + - "ZXNjcmliZSBwb2QnIHRvIHNlZSB0aGUgSW1hZ2VQdWxsQmFja09mZiBldmVudHMiLAogICAgICAi" + - "VGhlIGFnZW50IGNoZWNrZWQgZm9yIHB1bGwgc2VjcmV0cyBpbiB0aGUgY2Fzc2FuZHJhLXN5c3Rl" + - "bSBuYW1lc3BhY2UiLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQgaW1hZ2VQdWxsU2VjcmV0cyBv" + - "biB0aGUgcG9kIHNwZWMgYW5kL29yIHNlcnZpY2UgYWNjb3VudCIsCiAgICAgICJUaGUgYWdlbnQg" + - "aWRlbnRpZmllZCB0aGUgcm9vdCBjYXVzZSBhbmQgcHJvdmlkZWQgYSBzcGVjaWZpYyBmaXgiCiAg" + - "ICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzktcmVtb3RlLWVrcy1yb3V0aW5nLWFuZC1zZWNyZXRz" + - "IiwKICAgICJxdWVzdGlvbiI6ICJDb25maWd1cmUgYSByZW1vdGUgRUtTIGNvbXB1dGUgY2x1c3Rl" + - "ciB0byByZWFjaCBteSBOVkNGIGNvbnRyb2wgcGxhbmUgdGhyb3VnaCBpdHMgRW52b3kgR2F0ZXdh" + - "eSwgaW5jbHVkaW5nIE5BVFMgYW5kIHByaXZhdGUtcmVnaXN0cnkgcHVsbCBzZWNyZXRzLiIsCiAg" + - "ICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAg" + - "ICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgdGhlIGNvbnRyb2wgcGxhbmUg" + - "dG8gdXNlIHRoZSBFbnZveSBHYXRld2F5IGNvbnRyb2xsZXIgaW4gZW52b3ktZ2F0ZXdheS1zeXN0" + - "ZW0gYW5kIEdhdGV3YXkvbnZjZi1nYXRld2F5IGluIGVudm95LWdhdGV3YXksIHNldCBhbGwgc2l4" + - "IHJlbW90ZSB3b3JrZXIgZW5kcG9pbnRzIGFuZCB0aGUgZ3JwYy1wcm94eSBsb2NhbCBvdmVycmlk" + - "ZSwgZW5hYmxlZCBOVkNGIGFuZCBOVkNUIGdSUEMgcm91dGVzIHBsdXMgTkFUUywgYW5kIGVuYWJs" + - "ZWQgT3BlbkJhbyBpc3N1ZXIgZGlzY292ZXJ5LiBJdCBjb25maWd1cmVkIHRoZSBiYXJlLUdhdGV3" + - "YXkgQ0xJIFVSTCBhbmQgSG9zdCBmaWVsZHMgaW5jbHVkaW5nIGljbXNfaG9zdCwgcGx1cyB0aGUg" + - "Y29tcHV0ZS1wbGFuZSBJQ01TLCBSZVZhbCwgYW5kIE5BVFMgZXh0ZXJuYWwgVVJMcyBhbmQgaG9z" + - "dCBvdmVycmlkZXMuIEl0IGNyZWF0ZWQgdGhlIHB1bGwgc2VjcmV0IGluIGFsbCBjb250cm9sLXBs" + - "YW5lIG5hbWVzcGFjZXMgaW5jbHVkaW5nIGNlcnQtbWFuYWdlciwgYnV0IG9ubHkgaW4gbnZjYS1v" + - "cGVyYXRvciBvbiB0aGUgY29tcHV0ZSBjbHVzdGVyOyB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIG1p" + - "cnJvciBpdCB0byBudmNhLXN5c3RlbS4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAg" + - "ICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lM" + - "TC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGluZ3Jlc3Mu" + - "Z2F0ZXdheUFwaS5jb250cm9sbGVyTmFtZXNwYWNlIHRvIGVudm95LWdhdGV3YXktc3lzdGVtIiwK" + - "ICAgICAgIlRoZSBhZ2VudCBzZXQgc2hhcmVkLCBncnBjLCBhbmQgbmF0cyBHYXRld2F5IHJlZmVy" + - "ZW5jZXMgdG8gbmFtZSBudmNmLWdhdGV3YXkgYW5kIG5hbWVzcGFjZSBlbnZveS1nYXRld2F5IiwK" + - "ICAgICAgIlRoZSBhZ2VudCBzZXQgZ2xvYmFsLndvcmtlckVuZHBvaW50cy5udmNmU2VydmljZVVS" + - "TCwgbnZjZkdycGNTZXJ2aWNlVVJMLCBudmNmTmF0c1NlcnZpY2VVUkwsIG52Y3RTZXJ2aWNlVVJM" + - "LCBudmN0R3JwY1NlcnZpY2VVUkwsIGFuZCBpbnZvY2F0aW9uU2VydmljZVVSTCIsCiAgICAgICJU" + - "aGUgYWdlbnQgc2V0IGdycGNwcm94eS5udmNmR3JwY1NlcnZpY2VVUkwgdG8gdGhlIGNvbnRyb2wt" + - "cGxhbmUtbG9jYWwgQVBJIGdSUEMgc2VydmljZSIsCiAgICAgICJUaGUgYWdlbnQgZW5hYmxlZCBi" + - "b3RoIGluZ3Jlc3MuZ2F0ZXdheUFwaS5yb3V0ZXMubnZjZkFwaS5ncnBjIGFuZCBudmN0QXBpLmdy" + - "cGMgd2l0aCB3b3JrZXItYXBpIGFuZCB3b3JrZXItdGFza3MgaG9zdG5hbWVzIiwKICAgICAgIlRo" + - "ZSBhZ2VudCBleHBsaWNpdGx5IHNldCBpbmdyZXNzLmdhdGV3YXlBcGkucm91dGVzLm5hdHMuZW5h" + - "YmxlZCB0byB0cnVlIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgb3BlbmJhby5taWdyYXRpb25zLmlz" + - "c3VlckRpc2NvdmVyeS5lbmFibGVkIHRvIHRydWUiLAogICAgICAiVGhlIGFnZW50IGNvbmZpZ3Vy" + - "ZWQgdGhlIGJhcmUtR2F0ZXdheSBDTEkgVVJMIGFuZCBIb3N0IGZpZWxkcywgaW5jbHVkaW5nIHNj" + - "aGVtZS1sZXNzIGljbXNfaG9zdCIsCiAgICAgICJUaGUgYWdlbnQgY29uZmlndXJlZCBjb21wdXRl" + - "LXBsYW5lIGljbXNTZXJ2aWNlVVJMLCBpY21zU2VydmljZUhvc3RIZWFkZXJPdmVycmlkZSwgcmV2" + - "YWxTZXJ2aWNlVVJMLCByZXZhbFNlcnZpY2VIb3N0SGVhZGVyT3ZlcnJpZGUsIG5hdHNVUkwsIGFu" + - "ZCBuYXRzSG9zdE92ZXJyaWRlIiwKICAgICAgIlRoZSBjb250cm9sLXBsYW5lIHB1bGwtc2VjcmV0" + - "IG5hbWVzcGFjZSBsaXN0IGluY2x1ZGVkIGNlcnQtbWFuYWdlciIsCiAgICAgICJUaGUgY29tcHV0" + - "ZS1wbGFuZSBzZWNyZXQgd2FzIGNyZWF0ZWQgb25seSBpbiBudmNhLW9wZXJhdG9yIGFuZCBtaXJy" + - "b3JlZCBieSB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIHRvIG52Y2Etc3lzdGVtIgogICAgXQogIH0s" + - "CiAgewogICAgImlkIjogIkcxMS1zcGxpdC10ZWFyZG93biIsCiAgICAicXVlc3Rpb24iOiAiVGVh" + - "ciBkb3duIG15IHNwbGl0IGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZGVwbG95bWVu" + - "dCBzYWZlbHkuIFNob3cgYm90aCB0aGUgSGVsbWZpbGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSB2" + - "YXJpYW50cy4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + - "bGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBIZWxtZmlsZSBmbG93IGRlc3Ryb3ll" + - "ZCBhbmQgY29uZmlybWVkIGRlcmVnaXN0cmF0aW9uIG9mIGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciBi" + - "ZWZvcmUgZGVzdHJveWluZyB0aGUgY29udHJvbCBwbGFuZSBhbmQgcGFzc2VkIGJvdGggY29udHJv" + - "bC1wbGFuZSBrdWJlY29uZmlnIGZvcm1zLiBCZWZvcmUgZWl0aGVyIGhhbmRvZmYgY291bGQgZGVz" + - "dHJveSB0aGUgY29udHJvbCBwbGFuZSwgYm90aCB0ZWFyZG93biBmbG93cyB3YXJuZWQgdGhhdCBu" + - "YW1lc3BhY2UgcHJlc2VydmF0aW9uIGRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2Us" + - "IHJlcXVpcmVkIGVmZmVjdGl2ZSBjZXJ0TWFuYWdlci5lbmFibGVkOiBmYWxzZSBmb3IgYW4gZXh0" + - "ZXJuYWwgaW5zdGFsbGF0aW9uIGFuZCBhYm9ydGVkIGlmIHRydWUsIGFuZCB2ZXJpZmllZCBtYXRj" + - "aGluZyByZWxlYXNlIG93bmVyc2hpcCBmb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxl" + - "YXNlLCBhYm9ydGluZyBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQgZXZpZGVuY2UuIFRoZXkgcHJl" + - "c2VydmVkIHRoZSBuYW1lc3BhY2UgYnkgZGVmYXVsdCBhbmQgZGlkIG5vdCBkZWxldGUgaXQgd2l0" + - "aG91dCBuYW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQgZXhwbGljaXQgY29uZmlybWF0aW9uLiBUaGUg" + - "Q0xJIGZsb3cgcmV0YWluZWQgdGhlIGdlbmVyYXRlZCByZWdpc3RyYXRpb24gdmFsdWVzLCB1c2Vk" + - "IHRoZSBmdWxsLXByZWZpeCBzdGF0dXMgY29tbWFuZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0" + - "aW9ucywgc3RhdGVkIHRoYXQgbmFtZWQtY2x1c3RlciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkg" + - "SUNNUyBhbmQgY2Fubm90IHByZWRpY3QgY29uZGl0aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFs" + - "LCBhbmQgZ290IGV4cGxpY2l0IGNvbmZpcm1hdGlvbiB3aGVuIHRoZSB0YXJnZXQgd2FzIHRoZSBs" + - "YXN0IHJlZ2lzdGVyZWQgY2x1c3Rlci4gSXQgdGhlbiBwcmV2aWV3ZWQgYW5kIHJhbiBkb3duIHdp" + - "dGggdGhlIGZ1bGwgcGVyc2lzdGVudCBwcmVmaXgsIHJlbW92aW5nIHRoZSBjb250cm9sIHBsYW5l" + - "IG9ubHkgYWZ0ZXIgdGhlIGxhc3QgcmVnaXN0cmF0aW9uIHdhcyBnb25lLiIsCiAgICAiZXhwZWN0" + - "ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFn" + - "ZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIkZv" + - "ciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRoZSBIZWxtZmlsZSBmbG93IHJhbiB0aGUgY29tcHV0" + - "ZS1wbGFuZSBNYWtlZmlsZSBkZXN0cm95IHRhcmdldCB3aXRoIGl0cyBjb21wdXRlIGt1YmVjb25m" + - "aWciLAogICAgICAiQWZ0ZXIgY29uZmlybWF0aW9uLCB0aGUgSGVsbWZpbGUgZmxvdyByYW4gY2x1" + - "c3RlciBkZWxldGUgd2l0aCBjbHVzdGVySUQgYW5kIG5jYUlEIGJlZm9yZSBjb250cm9sLXBsYW5l" + - "IGRlc3RydWN0aW9uIiwKICAgICAgIkJlZm9yZSBlaXRoZXIgaGFuZG9mZiBjb3VsZCBkZXN0cm95" + - "IHRoZSBjb250cm9sIHBsYW5lLCBib3RoIHRlYXJkb3duIGZsb3dzIHdhcm5lZCB0aGF0IG5hbWVz" + - "cGFjZSBwcmVzZXJ2YXRpb24gZG9lcyBub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZSwgcmVx" + - "dWlyZWQgZWZmZWN0aXZlIGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNlIGZvciBhbiBleHRlcm5h" + - "bCBpbnN0YWxsYXRpb24gYW5kIGFib3J0ZWQgaWYgdHJ1ZSwgYW5kIHZlcmlmaWVkIGludGVuZGVk" + - "IHN0YWNrIG93bmVyc2hpcCB3aGVuIGVuYWJsZWQsIGFib3J0aW5nIG9uIG1pc3Npbmcgb3IgbWlz" + - "bWF0Y2hlZCBldmlkZW5jZSIsCiAgICAgICJCb3RoIHRlYXJkb3duIGZsb3dzIHByZXNlcnZlZCB0" + - "aGUgY2VydC1tYW5hZ2VyIG5hbWVzcGFjZSBieSBkZWZhdWx0IGFuZCBkaWQgbm90IGRlbGV0ZSBp" + - "dCB3aXRob3V0IG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBleHBsaWNpdCBjb25maXJtYXRpb24i" + - "LAogICAgICAiVGhlIEhlbG1maWxlIGZsb3cgcmFuIGNvbnRyb2wtcGxhbmUgTWFrZWZpbGUgZGVz" + - "dHJveSB3aXRoIGJvdGggS1VCRUNPTkZJRyBhbmQgS1VCRUNPTkZJR19GSUxFIiwKICAgICAgIlRo" + - "ZSBDTEkgZmxvdyByZXRhaW5lZCBvdXQvPGNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlh" + - "bWwgdW50aWwgdGVhcmRvd24gY29tcGxldGVkIiwKICAgICAgIkJlZm9yZSByZWFsIGRvd24sIHRo" + - "ZSBDTEkgZmxvdyB1c2VkIHRoZSBmdWxsLXByZWZpeCBzdGF0dXMgY29tbWFuZCB0byBpbnNwZWN0" + - "IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRoYXQgbmFtZWQtY2x1c3RlciBwbGFuLW9ubHkg" + - "ZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90IHByZWRpY3QgY29uZGl0aW9uYWwgY29udHJv" + - "bC1wbGFuZSByZW1vdmFsLCB3YXJuZWQgd2hlbiB0aGUgdGFyZ2V0IHdhcyB0aGUgbGFzdCByZWdp" + - "c3RlcmVkIGNsdXN0ZXIsIGFuZCBnb3QgZXhwbGljaXQgY29uZmlybWF0aW9uIiwKICAgICAgIlRo" + - "ZSBDTEkgZmxvdyB1c2VkIC0tY29uZmlnLCBib3RoIHN0YWNrIHBhdGhzLCAtLWVudiwgLS1wbGFp" + - "biwgYm90aCBjb250ZXh0cywgYW5kIC0taWNtcy11cmwgZm9yIGRvd24gLS1wbGFuLW9ubHkgYW5k" + - "IHRoZW4gZG93biIsCiAgICAgICJUaGUgYWdlbnQgc3RhdGVkIHRoYXQgZG93biB1bnJlZ2lzdGVy" + - "cyBlYWNoIGNvbXB1dGUgY2x1c3RlciBhbmQgcmVtb3ZlcyB0aGUgY29udHJvbCBwbGFuZSBvbmx5" + - "IGFmdGVyIG5vIHJlZ2lzdHJhdGlvbnMgcmVtYWluIgogICAgXQogIH0sCiAgewogICAgImlkIjog" + - "IlMxMy12YWx1ZXMtcHJlY2VkZW5jZSIsCiAgICAicXVlc3Rpb24iOiAiSSBhZGRlZCBhIHZhbHVl" + - "IHRvIG15IGVudmlyb25tZW50IFlBTUwgYnV0IGl0J3MgYmVpbmcgc2lsZW50bHkgaWdub3JlZC4g" + - "SG93IGRvIGhlbG1maWxlIHZhbHVlcyB3b3JrIGluIE5WQ0Y/IiwKICAgICJleHBlY3RlZF9za2ls" + - "bCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6" + - "ICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSB2YWx1ZXMgcHJlY2VkZW5jZSBjaGFpbiAoYmFzZS55" + - "YW1sLCBlbnYgWUFNTCwgZ2xvYmFsLnlhbWwuZ290bXBsLCBzZWNyZXRzLCBpbmxpbmUgdmFsdWVz" + - "KSwgaWRlbnRpZmllZCB0aGF0IGdsb2JhbC55YW1sLmdvdG1wbCBvbmx5IHBhc3NlcyB0aHJvdWdo" + - "IHNwZWNpZmljIGtleXMsIGFuZCBleHBsYWluZWQgdGhhdCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVz" + - "IG11c3QgdXNlIHJlbGVhc2UgaW5saW5lIHZhbHVlcyBibG9ja3MuIiwKICAgICJleHBlY3RlZF9i" + - "ZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1p" + - "bnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFn" + - "ZW50IGV4cGxhaW5lZCB0aGUgdmFsdWVzIHByZWNlZGVuY2UgY2hhaW46IGJhc2UueWFtbCAtPiBl" + - "bnYgWUFNTCAtPiBnbG9iYWwueWFtbC5nb3RtcGwgLT4gc2VjcmV0cyAtPiBpbmxpbmUgdmFsdWVz" + - "IiwKICAgICAgIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoYXQgZ2xvYmFsLnlhbWwuZ290bXBsIG9u" + - "bHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMga2V5cyAoY2Fzc2FuZHJhLnJlcGxpY2FDb3VudCwg" + - "Z2xvYmFsLnN0b3JhZ2VDbGFzcywgZ2xvYmFsLmltYWdlLCBldGMuKSIsCiAgICAgICJUaGUgYWdl" + - "bnQgZXhwbGFpbmVkIHRoYXQgYXJiaXRyYXJ5IGNoYXJ0IHZhbHVlcyBtdXN0IGJlIHNldCB2aWEg" + - "cmVsZWFzZSBpbmxpbmUgdmFsdWVzOiBibG9ja3MiLAogICAgICAiVGhlIGFnZW50IGxpc3RlZCBl" + - "eGFtcGxlcyBvZiB2YWx1ZXMgdGhhdCBhcmUgcHJvcGFnYXRlZCBhbmQgYXJiaXRyYXJ5IGNoYXJ0" + - "IHZhbHVlcyB0aGF0IHJlcXVpcmUgYSByZWxlYXNlIHZhbHVlcyBibG9jayIKICAgIF0KICB9LAog" + - "IHsKICAgICJpZCI6ICJTMTQtZW5hYmxlLWxsbS1mdW5jdGlvbnMiLAogICAgInF1ZXN0aW9uIjog" + - "IkkgbmVlZCB0byBkZXBsb3kgZnVuY3Rpb25UeXBlOiBMTE0gZnVuY3Rpb25zIG9uIGEgc2VsZi1t" + - "YW5hZ2VkLCBzaW5nbGUtbm9kZSBpc29sYXRlZCB0ZXN0IGNsdXN0ZXIuIFdoYXQgSGVsbWZpbGUg" + - "Y29uZmlndXJhdGlvbiBhbmQgdmVyaWZpY2F0aW9uIHN0ZXBzIGRvIEkgbmVlZD8iLAogICAgImV4" + - "cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3Jv" + - "dW5kX3RydXRoIjogIlRoZSBhZ2VudCBlbmFibGVkIHRoZSBMTE0gYWRkb24gd2l0aCBhZGRvbnMu" + - "bGxtLmVuYWJsZWQsIGNvbmZpZ3VyZWQgc2luZ2xlIHJlcGxpY2FzIGZvciB0aGUgTExNIEFQSSBH" + - "YXRld2F5IGFuZCByZXF1ZXN0IHJvdXRlciwgYW5kIGV4cGxhaW5lZCB0aGF0IHRoZSByZXF1ZXN0" + - "IHJvdXRlciB1c2VzIHBvd2VyLW9mLXR3byB3aGVuIG5vIGxvYWQtYmFsYW5jZXIgY29uZmlndXJh" + - "dGlvbiBpcyBzZXQuIEl0IGxpbmtlZCB0aGUgY2Fub25pY2FsIHJlcXVlc3Qtcm91dGVyIGxvYWQt" + - "YmFsYW5jaW5nIGd1aWRlIGZvciBvdGhlciByb3V0aW5nIG1ldGhvZHMuIEZvciB0aGUgaXNvbGF0" + - "ZWQgcGxhaW50ZXh0IGNsdXN0ZXIsIGl0IHJlbGllZCBvbiB0aGUgc2VsZi1tYW5hZ2VkIHN0YWNr" + - "IGRlZmF1bHQgZm9yIHRoZSBidW5kbGVkIGdhdGV3YXktdG8tQVBJIGF1dGhlbnRpY2F0aW9uIGhv" + - "cCBhbmQgaW5jbHVkZWQgYWdlbnRDb25maWcubWVyZ2VDb25maWcud29ya2xvYWQuc3RhcmdhdGVR" + - "VUlDSW5zZWN1cmUgZm9yIHRoZSBzZXBhcmF0ZSB3b3JrZXIgdHJhbnNwb3J0LCB3aXRoIGEgd2Fy" + - "bmluZyB0aGF0IHBsYWludGV4dCB3b3JrZXIgdHJhbnNwb3J0IGlzIG5vdCBmb3IgcHJvZHVjdGlv" + - "bi4gSXQgcmVmcmVzaGVkIHRoZSBjb21wdXRlIHBsYW5lIHVzaW5nIHRoZSBzYW1lIGhhbmRvZmYg" + - "dXNlZCBkdXJpbmcgaW5zdGFsbGF0aW9uLCByZWRlcGxveWVkIGV4aXN0aW5nIExMTSBmdW5jdGlv" + - "bnMsIGFuZCB2ZXJpZmllZCB0aGUgTExNIGRlcGxveW1lbnRzLCByb3V0ZSwgYW5kIGxsbS13b3Jr" + - "ZXIgc2lkZWNhci4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50" + - "IHVzZWQgYWRkb25zLmxsbS5lbmFibGVkLCBub3QgdGhlIG9ic29sZXRlIGxsbS5lbmFibGVkIHBh" + - "dGgiLAogICAgICAiVGhlIGFnZW50IHNldCBnYXRld2F5IGFuZCByZXF1ZXN0Um91dGVyIHJlcGxp" + - "Y2FDb3VudCB0byAxIGZvciB0aGUgc2luZ2xlLW5vZGUgdGVzdCBjbHVzdGVyIiwKICAgICAgIlRo" + - "ZSBhZ2VudCBzdGF0ZWQgdGhhdCB0aGUgcmVxdWVzdCByb3V0ZXIgZGVmYXVsdHMgdG8gcG93ZXIt" + - "b2YtdHdvIGFuZCBsaW5rZWQgdGhlIGNhbm9uaWNhbCByZXF1ZXN0LXJvdXRlciBsb2FkLWJhbGFu" + - "Y2luZyBndWlkZSBmb3Igb3RoZXIgbWV0aG9kcyIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVk" + - "IHRoYXQgdGhlIGJ1bmRsZWQgZ2F0ZXdheS10by1BUEkgYXV0aGVudGljYXRpb24gaG9wIGRlZmF1" + - "bHRzIHRvIHBsYWludGV4dCwgaW5jbHVkZWQgd29ya2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUg" + - "b25seSBmb3IgdGhlIGlzb2xhdGVkIHdvcmtlciB0cmFuc3BvcnQsIGFuZCB3YXJuZWQgYWdhaW5z" + - "dCBwbGFpbnRleHQgd29ya2VyIHRyYW5zcG9ydCBpbiBwcm9kdWN0aW9uIiwKICAgICAgIlRoZSBh" + - "Z2VudCBhcHBsaWVkIHRoZSBjb250cm9sLXBsYW5lIEhlbG1maWxlIGVudmlyb25tZW50LCByZWZy" + - "ZXNoZWQgdGhlIGNvbXB1dGUgcGxhbmUgd2l0aCB0aGUgc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLCBh" + - "bmQgcmVjcmVhdGVkIG9yIHJlZGVwbG95ZWQgZXhpc3RpbmcgTExNIGZ1bmN0aW9ucyIsCiAgICAg" + - "ICJUaGUgYWdlbnQgdmVyaWZpZWQgbGxtLWFwaS1nYXRld2F5LCBsbG0tcmVxdWVzdC1yb3V0ZXIs" + - "IHRoZSBMTE0gSFRUUFJvdXRlLCBhbmQgdGhlIGxsbS13b3JrZXIgc2lkZWNhciBpbmNsdWRpbmcg" + - "LS1xdWljLWluc2VjdXJlIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc4LU5FRy1ub3QtZm9y" + - "LWszZCIsCiAgICAicXVlc3Rpb24iOiAiU2V0IHVwIGEgbG9jYWwgTlZDRiBkZXYgY2x1c3RlciB1" + - "c2luZyBrM2QgZm9yIHRlc3RpbmciLAogICAgImV4cGVjdGVkX3NraWxsIjogbnVsbCwKICAgICJz" + - "aG91bGRfdHJpZ2dlciI6IGZhbHNlLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGlzIGlzIGEgbG9j" + - "YWwgazNkIGRldmVsb3BtZW50IHJlcXVlc3QgdGhhdCBiZWxvbmdzIHRvIHRoZSBudmNmLXNlbGYt" + - "aG9zdGVkLWxvY2FsLWRldiBza2lsbCwgbm90IG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + - "bi4gVGhlIGFnZW50IGRpZCBub3QgcmVhZCBvciB1c2UgdGhlIHNlbGYtbWFuYWdlZCBpbnN0YWxs" + - "YXRpb24gc2tpbGwgYW5kIGluc3RlYWQgcHJvdmlkZWQgazNkLXNwZWNpZmljIGd1aWRhbmNlLiIs" + - "CiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCByZWFk" + - "IG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5tZCIsCiAgICAgICJUaGUgYWdl" + - "bnQgZGlkIG5vdCBwcm92aWRlIGhlbG1maWxlLWJhc2VkIHByb2R1Y3Rpb24gZGVwbG95bWVudCBp" + - "bnN0cnVjdGlvbnMiLAogICAgICAiVGhlIGFnZW50IHByb3ZpZGVkIGszZC1zcGVjaWZpYyBsb2Nh" + - "bCBkZXZlbG9wbWVudCBndWlkYW5jZSBvciBkZWZlcnJlZCB0byB0aGUgYXBwcm9wcmlhdGUgbG9j" + - "YWwtZGV2IHNraWxsIgogICAgXQogIH0KXQpQSwcIR1VqVkpWAABKVgAAUEsDBBQACAAAAAAAIQAA" + - "AAAAAAAAAAAAAAAvAAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXhhbXBs" + - "ZXMubWRVVAUAAQCmzhIjIEV4YW1wbGVzCgpXb3JrZWQgZXhhbXBsZXMgYmFzZWQgb24gcmVhbCBk" + - "ZXBsb3ltZW50IHNjZW5hcmlvcy4KCiMjIEV4YW1wbGUgMTogT3ZlcnJpZGUgQ2Fzc2FuZHJhIFJl" + - "c291cmNlcwoKVGhlIGRlZmF1bHQgQ2Fzc2FuZHJhIHJlc291cmNlIGxpbWl0cyBjYXVzZSBPT00g" + - "b24gbGFyZ2UgaW5zdGFuY2UgdHlwZXMgKGUuZy4sIGBwNS40OHhsYXJnZWApLgoKUHJvYmxlbTog" + - "Q2Fzc2FuZHJhIHBvZHMgcmVzdGFydCB3aXRoIGBPT01LaWxsZWRgLgoKU29sdXRpb246IE92ZXJy" + - "aWRlIHJlc291cmNlcyB2aWEgaGVsbWZpbGUgcmVsZWFzZSB2YWx1ZXMgYmxvY2suCgojIyMgU3Rl" + - "cCAxOiBDYXB0dXJlIGJhc2VsaW5lCgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmls" + - "ZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlID4gL3RtcC9jYXNzLWJlZm9yZS55" + - "YW1sCmdyZXAgLUE4ICdyZXNvdXJjZXM6JyAvdG1wL2Nhc3MtYmVmb3JlLnlhbWwgfCBoZWFkIC0x" + - "MApgYGAKCiMjIyBTdGVwIDI6IEFkZCBvdmVycmlkZSB0byBoZWxtZmlsZS5kLzAxLWRlcGVuZGVu" + - "Y2llcy55YW1sLmdvdG1wbAoKSW4gdGhlIGV4YW1wbGVzIGJlbG93LCBgPHByaXZhdGUtdmFsdWVz" + - "PmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUgc3Rh" + - "Y2sgcm9vdC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNzYW5kcmEKICB2ZXJzaW9uOiAwLjguMAogIGNv" + - "bmRpdGlvbjogY2Fzc2FuZHJhLmVuYWJsZWQKICBuYW1lc3BhY2U6IGNhc3NhbmRyYS1zeXN0ZW0K" + - "ICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAog" + - "ICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52ICJIRUxNRklMRV9FTlYiIH19" + - "LXNlY3JldHMueWFtbAogICAgLSBjYXNzYW5kcmE6CiAgICAgICAgcmVzb3VyY2VzOgogICAgICAg" + - "ICAgbGltaXRzOgogICAgICAgICAgICBjcHU6ICI4IgogICAgICAgICAgICBtZW1vcnk6IDgxOTJN" + - "aQogICAgICAgICAgcmVxdWVzdHM6CiAgICAgICAgICAgIGNwdTogIjIiCiAgICAgICAgICAgIG1l" + - "bW9yeTogNDA5Nk1pCmBgYAoKIyMjIFN0ZXAgMzogVmVyaWZ5IGFuZCBhcHBseQoKYGBgYmFzaApI" + - "RUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1w" + - "bGF0ZSA+IC90bXAvY2Fzcy1hZnRlci55YW1sCmRpZmYgL3RtcC9jYXNzLWJlZm9yZS55YW1sIC90" + - "bXAvY2Fzcy1hZnRlci55YW1sICAjIENvbmZpcm0gcmVzb3VyY2VzIGNoYW5nZWQKSEVMTUZJTEVf" + - "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgc3luYwpgYGAKCk5v" + - "dGU6IGByZXNvdXJjZVByZXNldGAgKGEgQml0bmFtaSBmZWF0dXJlKSBpcyBub3QgYXZhaWxhYmxl" + - "IGluIHRoZSBOVkNGIGNhc3NhbmRyYSB3cmFwcGVyIGNoYXJ0LiBVc2UgZXhwbGljaXQgYHJlc291" + - "cmNlc2AgaW5zdGVhZC4KCi0tLQoKIyMgRXhhbXBsZSAyOiBEZXBsb3kgZnJvbSBOR0MgUHJpdmF0" + - "ZSBSZWdpc3RyeSB3aXRoIFB1bGwgU2VjcmV0cwoKRGVwbG95IHRoZSBOVkNGIHN0YWNrIHB1bGxp" + - "bmcgaW1hZ2VzIGRpcmVjdGx5IGZyb20gTkdDIChgbnZjci5pb2ApIGluc3RlYWQgb2YgYSBtaXJy" + - "b3JlZCByZWdpc3RyeSwgdXNpbmcgaW1hZ2UgcHVsbCBzZWNyZXRzLgoKIyMjIFN0ZXAgMTogQ29u" + - "ZmlndXJlIGVudmlyb25tZW50IGZvciBOR0MKCmBgYHlhbWwKIyBlbnZpcm9ubWVudHMvPGVudj4u" + - "eWFtbApnbG9iYWw6CiAgaGVsbToKICAgIHNvdXJjZXM6CiAgICAgIHJlZ2lzdHJ5OiBudmNyLmlv" + - "CiAgICAgIHJlcG9zaXRvcnk6IG52aWRpYS9udmNmCiAgaW1hZ2U6CiAgICByZWdpc3RyeTogbnZj" + - "ci5pbwogICAgcmVwb3NpdG9yeTogbnZpZGlhL252Y2YKYGBgCgojIyMgU3RlcCAyOiBBdXRoZW50" + - "aWNhdGUgbG9jYWxseSAoZm9yIGhlbG1maWxlIGNoYXJ0IHB1bGxzKQoKYGBgYmFzaApkb2NrZXIg" + - "bG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmhlbG0gcmVn" + - "aXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmBg" + - "YAoKIyMjIFN0ZXAgMzogQ3JlYXRlIG5hbWVzcGFjZXMgYW5kIHB1bGwgc2VjcmV0cwoKYGBgYmFz" + - "aApleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLW5nYy1hcGkta2V5PiIKCmZvciBucyBpbiBjYXNz" + - "YW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0" + - "ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + - "bnRleHQ+IGNyZWF0ZSBuYW1lc3BhY2UgIiRucyIgXAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5" + - "YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYg" + - "LQpkb25lCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1r" + - "ZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29u" + - "dGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3Ry" + - "eSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAgIC0tZG9ja2Vy" + - "LXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAgLS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJ" + - "X0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIgXAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5" + - "YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYg" + - "LQpkb25lCmBgYAoKIyMjIFN0ZXAgNDogQWRkIGltYWdlUHVsbFNlY3JldHMgdG8gaGVsbWZpbGUg" + - "cmVsZWFzZXMKCkFkZCB0aGUgY2hhcnQtc3BlY2lmaWMgYGltYWdlUHVsbFNlY3JldHNgIGtleSB0" + - "byBlYWNoIHJlbGVhc2UuIEV4YW1wbGUgZm9yIGNhc3NhbmRyYSBpbiBgaGVsbWZpbGUuZC8wMS1k" + - "ZXBlbmRlbmNpZXMueWFtbC5nb3RtcGxgOgoKYGBgeWFtbAotIG5hbWU6IGNhc3NhbmRyYQogIHZl" + - "cnNpb246IDAuOC4wCiAgY29uZGl0aW9uOiBjYXNzYW5kcmEuZW5hYmxlZAogIG5hbWVzcGFjZTog" + - "Y2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAqZGVwZW5kZW5jeQogIHZhbHVlczoKICAgIC0gLi4vZ2xv" + - "YmFsLnlhbWwuZ290bXBsCiAgICAtIC4uLzxwcml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYg" + - "IkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCiAgICAtIGNhc3NhbmRyYToKICAgICAgICBn" + - "bG9iYWw6CiAgICAgICAgICBpbWFnZVB1bGxTZWNyZXRzOgogICAgICAgICAgICAtIG52Y3ItY3Jl" + - "ZHMKYGBgCgpTZWUgW3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kXShyZWZlcmVuY2VzL3B1bGwt" + - "c2VjcmV0cy5tZCkgZm9yIHRoZSBrZXkgZm9yIGV2ZXJ5IGNoYXJ0LgoKVGhlc2UgYXJlIGNvbnRy" + - "b2wtcGxhbmUgbmFtZXNwYWNlcy4gRm9yIGEgc2VwYXJhdGUgY29tcHV0ZSBjbHVzdGVyLCBjcmVh" + - "dGUgdGhlCnNlY3JldCBvbmx5IGluIGBudmNhLW9wZXJhdG9yYDsgdGhlIGNoYXJ0IGFuZCBvcGVy" + - "YXRvciBtaXJyb3IgaXQgdG8KYG52Y2Etc3lzdGVtYC4gU2VlIFtTcGxpdCBDb21wdXRlLVBsYW5l" + - "IEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCNw" + - "dWxsLXNlY3JldHMpLgoKIyMjIFN0ZXAgNTogRGVwbG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08" + - "ZW52PiBoZWxtZmlsZSAtLWt1YmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBzeW5j" + - "CmBgYAoKIyMjIFN0ZXAgNjogUGF0Y2ggU2VydmljZUFjY291bnRzIGZvciBjaGFydHMgd2l0aG91" + - "dCBuYXRpdmUgc3VwcG9ydAoKQWZ0ZXIgUGhhc2UgMSAoZGVwZW5kZW5jaWVzKSBjb21wbGV0ZXMs" + - "IE9wZW5CYW8gcG9kcyB3aWxsIGJlIGluIGBJbWFnZVB1bGxCYWNrT2ZmYC4gUGF0Y2ggYW5kIHJl" + - "c3RhcnQ6CgpgYGBiYXNoCmZvciBucyBpbiB2YXVsdC1zeXN0ZW0gbnZjZiBlc3M7IGRvCiAgZm9y" + - "IHNhIGluICQoa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHNh" + - "IC1uICIkbnMiIFwKICAgIC0tbm8taGVhZGVycyAtbyBjdXN0b20tY29sdW1ucz0iOm1ldGFkYXRh" + - "Lm5hbWUiKTsgZG8KICAgIGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+" + - "IHBhdGNoIHNlcnZpY2VhY2NvdW50IC1uICIkbnMiICIkc2EiIFwKICAgICAgLXAgJ3siaW1hZ2VQ" + - "dWxsU2VjcmV0cyI6IFt7Im5hbWUiOiAibnZjci1jcmVkcyJ9XX0nCiAgZG9uZQpkb25lCmt1YmVj" + - "dGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGRlbGV0ZSBwb2RzIC1uIHZhdWx0" + - "LXN5c3RlbSAtLWFsbApgYGAKClZlcmlmeToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNv" + - "bnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGV2ZW50cyAtbiB2YXVsdC1zeXN0ZW0gXAogIC0tc29y" + - "dC1ieT0nLmxhc3RUaW1lc3RhbXAnIHwgZ3JlcCAtaSBwdWxsCiMgU2hvdWxkIHNob3cgIlN1Y2Nl" + - "c3NmdWxseSBwdWxsZWQgaW1hZ2UiIGZyb20gbnZjci5pbwpgYGAKCi0tLQoKIyMgRXhhbXBsZSAz" + - "OiBGdWxsIFRlYXJkb3duIGFuZCBSZWluc3RhbGwKCldoZW4gYSBkZXBsb3ltZW50IGlzIGJyb2tl" + - "biBhbmQgeW91IG5lZWQgYSBjbGVhbiBzbGF0ZS4KCiMjIyBTdGVwIDE6IERlc3Ryb3kgdGhlIGNv" + - "bXB1dGUtcGxhbmUgc3RhY2sKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29t" + + "b24iLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgdmFsdWVzIHByZWNlZGVuY2UgY2hh" + + "aW46IGJhc2UueWFtbCAtPiBlbnYgWUFNTCAtPiBnbG9iYWwueWFtbC5nb3RtcGwgLT4gc2VjcmV0" + + "cyAtPiBpbmxpbmUgdmFsdWVzIiwKICAgICAgIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoYXQgZ2xv" + + "YmFsLnlhbWwuZ290bXBsIG9ubHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMga2V5cyAoY2Fzc2Fu" + + "ZHJhLnJlcGxpY2FDb3VudCwgZ2xvYmFsLnN0b3JhZ2VDbGFzcywgZ2xvYmFsLmltYWdlLCBldGMu" + + "KSIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgYXJiaXRyYXJ5IGNoYXJ0IHZhbHVl" + + "cyBtdXN0IGJlIHNldCB2aWEgcmVsZWFzZSBpbmxpbmUgdmFsdWVzOiBibG9ja3MiLAogICAgICAi" + + "VGhlIGFnZW50IGxpc3RlZCBleGFtcGxlcyBvZiB2YWx1ZXMgdGhhdCBhcmUgcHJvcGFnYXRlZCBh" + + "bmQgYXJiaXRyYXJ5IGNoYXJ0IHZhbHVlcyB0aGF0IHJlcXVpcmUgYSByZWxlYXNlIHZhbHVlcyBi" + + "bG9jayIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTMTQtZW5hYmxlLWxsbS1mdW5jdGlvbnMi" + + "LAogICAgInF1ZXN0aW9uIjogIkkgbmVlZCB0byBkZXBsb3kgZnVuY3Rpb25UeXBlOiBMTE0gZnVu" + + "Y3Rpb25zIG9uIGEgc2VsZi1tYW5hZ2VkLCBzaW5nbGUtbm9kZSBpc29sYXRlZCB0ZXN0IGNsdXN0" + + "ZXIuIFdoYXQgSGVsbWZpbGUgY29uZmlndXJhdGlvbiBhbmQgdmVyaWZpY2F0aW9uIHN0ZXBzIGRv" + + "IEkgbmVlZD8iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + + "bGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBlbmFibGVkIHRoZSBMTE0g" + + "YWRkb24gd2l0aCBhZGRvbnMubGxtLmVuYWJsZWQsIGNvbmZpZ3VyZWQgc2luZ2xlIHJlcGxpY2Fz" + + "IGZvciB0aGUgTExNIEFQSSBHYXRld2F5IGFuZCByZXF1ZXN0IHJvdXRlciwgYW5kIGV4cGxhaW5l" + + "ZCB0aGF0IHRoZSByZXF1ZXN0IHJvdXRlciB1c2VzIHBvd2VyLW9mLXR3byB3aGVuIG5vIGxvYWQt" + + "YmFsYW5jZXIgY29uZmlndXJhdGlvbiBpcyBzZXQuIEl0IGxpbmtlZCB0aGUgY2Fub25pY2FsIHJl" + + "cXVlc3Qtcm91dGVyIGxvYWQtYmFsYW5jaW5nIGd1aWRlIGZvciBvdGhlciByb3V0aW5nIG1ldGhv" + + "ZHMuIEZvciB0aGUgaXNvbGF0ZWQgcGxhaW50ZXh0IGNsdXN0ZXIsIGl0IHJlbGllZCBvbiB0aGUg" + + "c2VsZi1tYW5hZ2VkIHN0YWNrIGRlZmF1bHQgZm9yIHRoZSBidW5kbGVkIGdhdGV3YXktdG8tQVBJ" + + "IGF1dGhlbnRpY2F0aW9uIGhvcCBhbmQgaW5jbHVkZWQgYWdlbnRDb25maWcubWVyZ2VDb25maWcu" + + "d29ya2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUgZm9yIHRoZSBzZXBhcmF0ZSB3b3JrZXIgdHJh" + + "bnNwb3J0LCB3aXRoIGEgd2FybmluZyB0aGF0IHBsYWludGV4dCB3b3JrZXIgdHJhbnNwb3J0IGlz" + + "IG5vdCBmb3IgcHJvZHVjdGlvbi4gSXQgcmVmcmVzaGVkIHRoZSBjb21wdXRlIHBsYW5lIHVzaW5n" + + "IHRoZSBzYW1lIGhhbmRvZmYgdXNlZCBkdXJpbmcgaW5zdGFsbGF0aW9uLCByZWRlcGxveWVkIGV4" + + "aXN0aW5nIExMTSBmdW5jdGlvbnMsIGFuZCB2ZXJpZmllZCB0aGUgTExNIGRlcGxveW1lbnRzLCBy" + + "b3V0ZSwgYW5kIGxsbS13b3JrZXIgc2lkZWNhci4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjog" + + "WwogICAgICAiVGhlIGFnZW50IHVzZWQgYWRkb25zLmxsbS5lbmFibGVkLCBub3QgdGhlIG9ic29s" + + "ZXRlIGxsbS5lbmFibGVkIHBhdGgiLAogICAgICAiVGhlIGFnZW50IHNldCBnYXRld2F5IGFuZCBy" + + "ZXF1ZXN0Um91dGVyIHJlcGxpY2FDb3VudCB0byAxIGZvciB0aGUgc2luZ2xlLW5vZGUgdGVzdCBj" + + "bHVzdGVyIiwKICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCB0aGUgcmVxdWVzdCByb3V0ZXIg" + + "ZGVmYXVsdHMgdG8gcG93ZXItb2YtdHdvIGFuZCBsaW5rZWQgdGhlIGNhbm9uaWNhbCByZXF1ZXN0" + + "LXJvdXRlciBsb2FkLWJhbGFuY2luZyBndWlkZSBmb3Igb3RoZXIgbWV0aG9kcyIsCiAgICAgICJU" + + "aGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgdGhlIGJ1bmRsZWQgZ2F0ZXdheS10by1BUEkgYXV0aGVu" + + "dGljYXRpb24gaG9wIGRlZmF1bHRzIHRvIHBsYWludGV4dCwgaW5jbHVkZWQgd29ya2xvYWQuc3Rh" + + "cmdhdGVRVUlDSW5zZWN1cmUgb25seSBmb3IgdGhlIGlzb2xhdGVkIHdvcmtlciB0cmFuc3BvcnQs" + + "IGFuZCB3YXJuZWQgYWdhaW5zdCBwbGFpbnRleHQgd29ya2VyIHRyYW5zcG9ydCBpbiBwcm9kdWN0" + + "aW9uIiwKICAgICAgIlRoZSBhZ2VudCBhcHBsaWVkIHRoZSBjb250cm9sLXBsYW5lIEhlbG1maWxl" + + "IGVudmlyb25tZW50LCByZWZyZXNoZWQgdGhlIGNvbXB1dGUgcGxhbmUgd2l0aCB0aGUgc2FtZSBz" + + "ZWxlY3RlZCBoYW5kb2ZmLCBhbmQgcmVjcmVhdGVkIG9yIHJlZGVwbG95ZWQgZXhpc3RpbmcgTExN" + + "IGZ1bmN0aW9ucyIsCiAgICAgICJUaGUgYWdlbnQgdmVyaWZpZWQgbGxtLWFwaS1nYXRld2F5LCBs" + + "bG0tcmVxdWVzdC1yb3V0ZXIsIHRoZSBMTE0gSFRUUFJvdXRlLCBhbmQgdGhlIGxsbS13b3JrZXIg" + + "c2lkZWNhciBpbmNsdWRpbmcgLS1xdWljLWluc2VjdXJlIgogICAgXQogIH0sCiAgewogICAgImlk" + + "IjogIkc4LU5FRy1ub3QtZm9yLWszZCIsCiAgICAicXVlc3Rpb24iOiAiU2V0IHVwIGEgbG9jYWwg" + + "TlZDRiBkZXYgY2x1c3RlciB1c2luZyBrM2QgZm9yIHRlc3RpbmciLAogICAgImV4cGVjdGVkX3Nr" + + "aWxsIjogbnVsbCwKICAgICJzaG91bGRfdHJpZ2dlciI6IGZhbHNlLAogICAgImdyb3VuZF90cnV0" + + "aCI6ICJUaGlzIGlzIGEgbG9jYWwgazNkIGRldmVsb3BtZW50IHJlcXVlc3QgdGhhdCBiZWxvbmdz" + + "IHRvIHRoZSBudmNmLXNlbGYtaG9zdGVkLWxvY2FsLWRldiBza2lsbCwgbm90IG52Y2Ytc2VsZi1t" + + "YW5hZ2VkLWluc3RhbGxhdGlvbi4gVGhlIGFnZW50IGRpZCBub3QgcmVhZCBvciB1c2UgdGhlIHNl" + + "bGYtbWFuYWdlZCBpbnN0YWxsYXRpb24gc2tpbGwgYW5kIGluc3RlYWQgcHJvdmlkZWQgazNkLXNw" + + "ZWNpZmljIGd1aWRhbmNlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUg" + + "YWdlbnQgZGlkIG5vdCByZWFkIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5t" + + "ZCIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm92aWRlIGhlbG1maWxlLWJhc2VkIHByb2R1" + + "Y3Rpb24gZGVwbG95bWVudCBpbnN0cnVjdGlvbnMiLAogICAgICAiVGhlIGFnZW50IHByb3ZpZGVk" + + "IGszZC1zcGVjaWZpYyBsb2NhbCBkZXZlbG9wbWVudCBndWlkYW5jZSBvciBkZWZlcnJlZCB0byB0" + + "aGUgYXBwcm9wcmlhdGUgbG9jYWwtZGV2IHNraWxsIgogICAgXQogIH0KXQpQSwcIR1VqVkpWAABK" + + "VgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAvAAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1p" + + "bnN0YWxsYXRpb24vZXhhbXBsZXMubWRVVAUAAQCmzhIjIEV4YW1wbGVzCgpXb3JrZWQgZXhhbXBs" + + "ZXMgYmFzZWQgb24gcmVhbCBkZXBsb3ltZW50IHNjZW5hcmlvcy4KCiMjIEV4YW1wbGUgMTogT3Zl" + + "cnJpZGUgQ2Fzc2FuZHJhIFJlc291cmNlcwoKVGhlIGRlZmF1bHQgQ2Fzc2FuZHJhIHJlc291cmNl" + + "IGxpbWl0cyBjYXVzZSBPT00gb24gbGFyZ2UgaW5zdGFuY2UgdHlwZXMgKGUuZy4sIGBwNS40OHhs" + + "YXJnZWApLgoKUHJvYmxlbTogQ2Fzc2FuZHJhIHBvZHMgcmVzdGFydCB3aXRoIGBPT01LaWxsZWRg" + + "LgoKU29sdXRpb246IE92ZXJyaWRlIHJlc291cmNlcyB2aWEgaGVsbWZpbGUgcmVsZWFzZSB2YWx1" + + "ZXMgYmxvY2suCgojIyMgU3RlcCAxOiBDYXB0dXJlIGJhc2VsaW5lCgpgYGBiYXNoCkhFTE1GSUxF" + + "X0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlID4g" + + "L3RtcC9jYXNzLWJlZm9yZS55YW1sCmdyZXAgLUE4ICdyZXNvdXJjZXM6JyAvdG1wL2Nhc3MtYmVm" + + "b3JlLnlhbWwgfCBoZWFkIC0xMApgYGAKCiMjIyBTdGVwIDI6IEFkZCBvdmVycmlkZSB0byBoZWxt" + + "ZmlsZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbAoKSW4gdGhlIGV4YW1wbGVzIGJlbG93" + + "LCBgPHByaXZhdGUtdmFsdWVzPmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBh" + + "dCB0aGUgaGVsbWZpbGUgc3RhY2sgcm9vdC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNzYW5kcmEKICB2" + + "ZXJzaW9uOiAwLjguMAogIGNvbmRpdGlvbjogY2Fzc2FuZHJhLmVuYWJsZWQKICBuYW1lc3BhY2U6" + + "IGNhc3NhbmRyYS1zeXN0ZW0KICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2ds" + + "b2JhbC55YW1sLmdvdG1wbAogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52" + + "ICJIRUxNRklMRV9FTlYiIH19LXNlY3JldHMueWFtbAogICAgLSBjYXNzYW5kcmE6CiAgICAgICAg" + + "cmVzb3VyY2VzOgogICAgICAgICAgbGltaXRzOgogICAgICAgICAgICBjcHU6ICI4IgogICAgICAg" + + "ICAgICBtZW1vcnk6IDgxOTJNaQogICAgICAgICAgcmVxdWVzdHM6CiAgICAgICAgICAgIGNwdTog" + + "IjIiCiAgICAgICAgICAgIG1lbW9yeTogNDA5Nk1pCmBgYAoKIyMjIFN0ZXAgMzogVmVyaWZ5IGFu" + + "ZCBhcHBseQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBu" + + "YW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSA+IC90bXAvY2Fzcy1hZnRlci55YW1sCmRpZmYgL3RtcC9j" + + "YXNzLWJlZm9yZS55YW1sIC90bXAvY2Fzcy1hZnRlci55YW1sICAjIENvbmZpcm0gcmVzb3VyY2Vz" + + "IGNoYW5nZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNz" + + "YW5kcmEgc3luYwpgYGAKCk5vdGU6IGByZXNvdXJjZVByZXNldGAgKGEgQml0bmFtaSBmZWF0dXJl" + + "KSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBOVkNGIGNhc3NhbmRyYSB3cmFwcGVyIGNoYXJ0LiBV" + + "c2UgZXhwbGljaXQgYHJlc291cmNlc2AgaW5zdGVhZC4KCi0tLQoKIyMgRXhhbXBsZSAyOiBEZXBs" + + "b3kgZnJvbSBOR0MgUHJpdmF0ZSBSZWdpc3RyeSB3aXRoIFB1bGwgU2VjcmV0cwoKRGVwbG95IHRo" + + "ZSBOVkNGIHN0YWNrIHB1bGxpbmcgaW1hZ2VzIGRpcmVjdGx5IGZyb20gTkdDIChgbnZjci5pb2Ap" + + "IGluc3RlYWQgb2YgYSBtaXJyb3JlZCByZWdpc3RyeSwgdXNpbmcgaW1hZ2UgcHVsbCBzZWNyZXRz" + + "LgoKIyMjIFN0ZXAgMTogQ29uZmlndXJlIGVudmlyb25tZW50IGZvciBOR0MKCmBgYHlhbWwKIyBl" + + "bnZpcm9ubWVudHMvPGVudj4ueWFtbApnbG9iYWw6CiAgaGVsbToKICAgIHNvdXJjZXM6CiAgICAg" + + "IHJlZ2lzdHJ5OiBudmNyLmlvCiAgICAgIHJlcG9zaXRvcnk6IG52aWRpYS9udmNmCiAgaW1hZ2U6" + + "CiAgICByZWdpc3RyeTogbnZjci5pbwogICAgcmVwb3NpdG9yeTogbnZpZGlhL252Y2YKYGBgCgoj" + + "IyMgU3RlcCAyOiBBdXRoZW50aWNhdGUgbG9jYWxseSAoZm9yIGhlbG1maWxlIGNoYXJ0IHB1bGxz" + + "KQoKYGBgYmFzaApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdD" + + "X0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1w" + + "ICIkTkdDX0FQSV9LRVkiCmBgYAoKIyMjIFN0ZXAgMzogQ3JlYXRlIG5hbWVzcGFjZXMgYW5kIHB1" + + "bGwgc2VjcmV0cwoKYGBgYmFzaApleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLW5nYy1hcGkta2V5" + + "PiIKCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMg" + + "ZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0" + + "IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3BhY2UgIiRucyIgXAogICAgLS1k" + + "cnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + + "Y29udGV4dD4gYXBwbHkgLWYgLQpkb25lCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRz" + + "LXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsg" + + "ZG8KICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgc2Vj" + + "cmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNlcnZlcj1udmNy" + + "LmlvIFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAgLS1kb2NrZXIt" + + "cGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIgXAogICAgLS1k" + + "cnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + + "Y29udGV4dD4gYXBwbHkgLWYgLQpkb25lCmBgYAoKIyMjIFN0ZXAgNDogQWRkIGltYWdlUHVsbFNl" + + "Y3JldHMgdG8gaGVsbWZpbGUgcmVsZWFzZXMKCkFkZCB0aGUgY2hhcnQtc3BlY2lmaWMgYGltYWdl" + + "UHVsbFNlY3JldHNgIGtleSB0byBlYWNoIHJlbGVhc2UuIEV4YW1wbGUgZm9yIGNhc3NhbmRyYSBp" + + "biBgaGVsbWZpbGUuZC8wMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGxgOgoKYGBgeWFtbAotIG5h" + + "bWU6IGNhc3NhbmRyYQogIHZlcnNpb246IDAuOC4wCiAgY29uZGl0aW9uOiBjYXNzYW5kcmEuZW5h" + + "YmxlZAogIG5hbWVzcGFjZTogY2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAqZGVwZW5kZW5jeQogIHZh" + + "bHVlczoKICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAtIC4uLzxwcml2YXRlLXZhbHVl" + + "cz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCiAgICAtIGNh" + + "c3NhbmRyYToKICAgICAgICBnbG9iYWw6CiAgICAgICAgICBpbWFnZVB1bGxTZWNyZXRzOgogICAg" + + "ICAgICAgICAtIG52Y3ItY3JlZHMKYGBgCgpTZWUgW3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1k" + + "XShyZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCkgZm9yIHRoZSBrZXkgZm9yIGV2ZXJ5IGNoYXJ0" + + "LgoKVGhlc2UgYXJlIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcy4gRm9yIGEgc2VwYXJhdGUgY29t" + + "cHV0ZSBjbHVzdGVyLCBjcmVhdGUgdGhlCnNlY3JldCBvbmx5IGluIGBudmNhLW9wZXJhdG9yYDsg" + + "dGhlIGNoYXJ0IGFuZCBvcGVyYXRvciBtaXJyb3IgaXQgdG8KYG52Y2Etc3lzdGVtYC4gU2VlIFtT" + + "cGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5l" + + "LWluc3RhbGxhdGlvbi5tZCNwdWxsLXNlY3JldHMpLgoKIyMjIFN0ZXAgNTogRGVwbG95CgpgYGBi" + + "YXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLWt1YmUtY29udGV4dCA8Y29udHJvbC1w" + + "bGFuZS1jb250ZXh0PiBzeW5jCmBgYAoKIyMjIFN0ZXAgNjogUGF0Y2ggU2VydmljZUFjY291bnRz" + + "IGZvciBjaGFydHMgd2l0aG91dCBuYXRpdmUgc3VwcG9ydAoKQWZ0ZXIgUGhhc2UgMSAoZGVwZW5k" + + "ZW5jaWVzKSBjb21wbGV0ZXMsIE9wZW5CYW8gcG9kcyB3aWxsIGJlIGluIGBJbWFnZVB1bGxCYWNr" + + "T2ZmYC4gUGF0Y2ggYW5kIHJlc3RhcnQ6CgpgYGBiYXNoCmZvciBucyBpbiB2YXVsdC1zeXN0ZW0g" + + "bnZjZiBlc3M7IGRvCiAgZm9yIHNhIGluICQoa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxh" + + "bmUtY29udGV4dD4gZ2V0IHNhIC1uICIkbnMiIFwKICAgIC0tbm8taGVhZGVycyAtbyBjdXN0b20t" + + "Y29sdW1ucz0iOm1ldGFkYXRhLm5hbWUiKTsgZG8KICAgIGt1YmVjdGwgLS1jb250ZXh0IDxjb250" + + "cm9sLXBsYW5lLWNvbnRleHQ+IHBhdGNoIHNlcnZpY2VhY2NvdW50IC1uICIkbnMiICIkc2EiIFwK" + + "ICAgICAgLXAgJ3siaW1hZ2VQdWxsU2VjcmV0cyI6IFt7Im5hbWUiOiAibnZjci1jcmVkcyJ9XX0n" + + "CiAgZG9uZQpkb25lCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGRl" + + "bGV0ZSBwb2RzIC1uIHZhdWx0LXN5c3RlbSAtLWFsbApgYGAKClZlcmlmeToKCmBgYGJhc2gKa3Vi" + + "ZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGV2ZW50cyAtbiB2YXVs" + + "dC1zeXN0ZW0gXAogIC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAnIHwgZ3JlcCAtaSBwdWxsCiMg" + + "U2hvdWxkIHNob3cgIlN1Y2Nlc3NmdWxseSBwdWxsZWQgaW1hZ2UiIGZyb20gbnZjci5pbwpgYGAK" + + "Ci0tLQoKIyMgRXhhbXBsZSAzOiBGdWxsIFRlYXJkb3duIGFuZCBSZWluc3RhbGwKCldoZW4gYSBk" + + "ZXBsb3ltZW50IGlzIGJyb2tlbiBhbmQgeW91IG5lZWQgYSBjbGVhbiBzbGF0ZS4KCiMjIyBTdGVw" + + "IDE6IERlc3Ryb3kgdGhlIGNvbXB1dGUtcGxhbmUgc3RhY2sKCmBgYGJhc2gKbWFrZSAtQyBkZXBs" + + "b3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVSX05BTUU9PGNs" + + "dXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxj" + + "b21wdXRlLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKSWYgY29tcHV0ZSBjbGVhbnVwIGlzIHN0dWNr" + + "IG9uIGZpbmFsaXplcnMsIHVzZSB0aGUgY29tcHV0ZS1jb250ZXh0IHByb2NlZHVyZSBpbgpbZGVi" + + "dWdnaW5nLm1kXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCNmYWlsdXJlLW52Y2EtY2xlYW51cC1z" + + "dHVjay1maW5hbGl6ZXJzKS4KCiMjIyBTdGVwIDI6IERlcmVnaXN0ZXIgdGhlIGNvbXB1dGUgY2x1" + + "c3RlcgoKUmVhZCBgY2x1c3RlcklEYCBhbmQgYG5jYUlEYCBmcm9tCmBkZXBsb3kvc3RhY2tzL252" + + "Y2YtY29tcHV0ZS1wbGFuZS9yZWdpc3RyYXRpb24vPGNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFs" + + "dWVzLnlhbWxgLgpTaG93IHRoZSBJRCBhbmQgZ2V0IGNvbmZpcm1hdGlvbiBiZWZvcmUgZGVsZXRp" + + "bmcgdGhlIElDTVMgcm93OgoKYGBgYmFzaAo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNs" + + "dXN0ZXIgZGVsZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1yZWdpc3RyYXRp" + + "b24tdmFsdWVzPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBg" + + "CgpSZXBlYXQgc3RlcHMgMSBhbmQgMiBmb3IgZXZlcnkgY29tcHV0ZSBjbHVzdGVyLgoKIyMjIFN0" + + "ZXAgMzogRGVzdHJveSB0aGUgY29udHJvbC1wbGFuZSBzdGFjawoKUHJlc2VydmUgdGhlIGBjZXJ0" + + "LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRv" + + "ZXMKbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEJlZm9yZSBydW5uaW5nIGRlc3Ryb3ks" + + "IGlkZW50aWZ5IHdoZXRoZXIKY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLiBGb3IgYW4gZXh0ZXJu" + + "YWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZQpgY2VydE1hbmFnZXIuZW5hYmxlZDog" + + "ZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQKc3RhY2stbWFu" + + "YWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwg" + + "dmVyaWZ5Cm1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQgYWJvcnQgb24g" + + "bWlzc2luZyBvciBtaXNtYXRjaGVkCmV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNwYWNlIHJlbW92" + + "YWwgYWZ0ZXIgdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZApnZXR0aW5nIGV4cGxp" + + "Y2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlIGRvIG5vdCBkZWxldGUgaXQuCgpgYGBiYXNoCktV" + + "QkVDT05GSUc9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4gXAptYWtlIC1DIGRlcGxveS9zdGFj" + + "a3Mvc2VsZi1tYW5hZ2VkIGRlc3Ryb3kgXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNP" + + "TkZJR19GSUxFPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKUGFzcyBib3RoIGt1YmVj" + + "b25maWcgZm9ybXMgYmVjYXVzZSBjb250cm9sLXBsYW5lIG5hbWVzcGFjZSBjbGVhbnVwIHVzZXMK" + + "YW1iaWVudCBga3ViZWN0bGAuCgojIyMgU3RlcCA0OiBWZXJpZnkgY2xlYW4KCmBgYGJhc2gKa3Vi" + + "ZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG5zIHwgXAogIGdyZXAg" + + "LUUgJyhudmNhfG52Y2YtYmFja2VuZHxncm92ZXxkeW5hbW8pJwprdWJlY3RsIC0tY29udGV4dCA8" + + "Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgbnMgfCBcCiAgZ3JlcCAtRSAnKGNhc3NhbmRyYXxu" + + "YXRzfHZhdWx0fG52Y2Z8YXBpLWtleXN8ZXNzfHNpcyknCiMgQm90aCBjb21tYW5kcyBzaG91bGQg" + + "cmV0dXJuIGVtcHR5LgpgYGAKCiMjIyBTdGVwIDU6IFJlaW5zdGFsbCBpbiBzcGxpdCBvcmRlcgoK" + + "Rm9sbG93IFtDbGVhbiBJbnN0YWxsYXRpb25dKFNLSUxMLm1kI2NsZWFuLWluc3RhbGxhdGlvbiks" + + "IHRoZW4gcmV0dXJuIHRvIHRoZQpzYW1lIGhhbmRvZmYgaW4gW1NwbGl0IENvbXB1dGUtUGxhbmUg" + + "SW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4K" + + "Ci0tLQoKIyMgRXhhbXBsZSA0OiBSZWNvdmVyIGZyb20gYSBHYXRld2F5IEVuZHBvaW50IENoYW5n" + + "ZQoKVGhlIHNlcGFyYXRlbHkgcHJvdmlzaW9uZWQgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxhbmNl" + + "ciB3YXMgcmVjcmVhdGVkIGFuZCBnb3QgYSBuZXcgZW5kcG9pbnQuCgojIyMgU3RlcCAxOiBHZXQg" + + "dGhlIG5ldyBlbmRwb2ludAoKYGBgYmFzaApHQVRFV0FZX0FERFI9JChrdWJlY3RsIC0tY29udGV4" + + "dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1nYXRld2F5IC1u" + + "IGVudm95LWdhdGV3YXkgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFs" + + "dWV9JykKdGVzdCAtbiAiJEdBVEVXQVlfQUREUiIKYGBgCgojIyMgU3RlcCAyOiBVcGRhdGUgRE5T" + + "IGFuZCBkaXJlY3QgYWRkcmVzcyBmaWVsZHMKCktlZXAgYGdsb2JhbC5kb21haW5gLCByb3V0ZSBo" + + "b3N0bmFtZXMsIGFuZCBDTEkgSG9zdCBmaWVsZHMgdW5jaGFuZ2VkLiBQb2ludCB0aGUKRE5TIHJl" + + "Y29yZHMgZm9yIHJlbmRlcmVkIHJvdXRlIGhvc3RuYW1lcywgc3VjaCBhcyBgYXBpLjxkb21haW4+" + + "YCBhbmQKYCouaW52b2NhdGlvbi48ZG9tYWluPmAsIHRvIGBHQVRFV0FZX0FERFJgLiBGb3IgYSB0" + + "ZW1wb3JhcnkgZW52aXJvbm1lbnQgd2l0aG91dApETlMsIGtlZXAgaXRzIHJlc2VydmVkIHJvdXRl" + + "IHN1ZmZpeCBhbmQgY29ubmVjdCB0byBgR0FURVdBWV9BRERSYCB3aXRoIHRoZQptYXRjaGluZyBg" + + "SG9zdGAgaGVhZGVyLgoKRm9yIGEgc3BsaXQgZGVwbG95bWVudCBjb25maWd1cmVkIHdpdGggZGly" + + "ZWN0IEdhdGV3YXkgYWRkcmVzc2VzLCByZXBsYWNlIG9ubHkKdGhlIGFkZHJlc3MtYmVhcmluZyB2" + + "YWx1ZXM6IGNvbnRyb2wtcGxhbmUgYG52Y2ZOYXRzU2VydmljZVVSTGAsIGNvbXB1dGUtcGxhbmUK" + + "SUNNUywgUmVWYWwsIGFuZCBOQVRTIFVSTHMsIGFuZCBDTEkgVVJMIGZpZWxkcy4gS2VlcCB0aGVp" + + "ciBkb21haW4gYW5kIEhvc3QKb3ZlcnJpZGVzIHVuY2hhbmdlZC4gUmVmcmVzaCByZWdpc3RyYXRp" + + "b24gYW5kIGluc3RhbGxhdGlvbiB0aHJvdWdoIHRoZSBzYW1lCmhhbmRvZmYgdXNlZCBvcmlnaW5h" + + "bGx5LiBTZWUKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2Nv" + + "bXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKQpmb3IgdGhlIGZpZWxkcyBhbmQgY29tcGxldGUg" + + "Y29tbWFuZHMuCgojIyMgU3RlcCAzOiBWZXJpZnkgYm90aCBjb250ZXh0cwoKYGBgYmFzaApkaWcg" + + "K3Nob3J0ICJhcGkuPGRvbWFpbj4iCmN1cmwgLUggIkhvc3Q6IGFwaS48ZG9tYWluPiIgImh0dHA6" + + "Ly8kR0FURVdBWV9BRERSL2hlYWx0aCIKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + + "Y29udGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAtbiBlbnZveS1nYXRld2F5IC1v" + + "IHdpZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGh0dHBy" + + "b3V0ZXMgLUEKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHRj" + + "cHJvdXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiByb2xs" + + "b3V0IHN0YXR1cyBcCiAgZGVwbG95bWVudC9udmNhLW9wZXJhdG9yIC1uIG52Y2Etb3BlcmF0b3Ig" + + "LS10aW1lb3V0PTEwbQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiB3" + + "YWl0IFwKICBudmNmYmFja2VuZC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IC1uIG52Y2Et" + + "b3BlcmF0b3IgXAogIC0tZm9yPWpzb25wYXRoPSd7LnN0YXR1cy5hZ2VudFN0YXR1c30nPWhlYWx0" + + "aHkgLS10aW1lb3V0PTEwbQpgYGAKCi0tLQoKIyMgRXhhbXBsZSA1OiBEZXBsb3kgT25seSBEZXBl" + + "bmRlbmNpZXMKClVzZWZ1bCBmb3IgdGVzdGluZyBvciB3aGVuIGl0ZXJhdGluZyBvbiBzZXJ2aWNl" + + "IGNvbmZpZ3VyYXRpb24uCgpgYGBiYXNoCiMgRGVwbG95IGp1c3QgTkFUUywgQ2Fzc2FuZHJhLCBP" + + "cGVuQmFvCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3Jv" + + "dXA9ZGVwZW5kZW5jaWVzIHN5bmMKCiMgQ2hlY2sgc3RhdHVzCmt1YmVjdGwgZ2V0IHBvZHMgLW4g" + + "bmF0cy1zeXN0ZW0Ka3ViZWN0bCBnZXQgcG9kcyAtbiBjYXNzYW5kcmEtc3lzdGVtCmt1YmVjdGwg" + + "Z2V0IHBvZHMgLW4gdmF1bHQtc3lzdGVtCgojIERlcGxveSBqdXN0IG9uZSBzcGVjaWZpYyByZWxl" + + "YXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJh" + + "IHN5bmMKYGBgCgojIyMgU2VsZWN0b3IgcmVmZXJlbmNlCgp8IFNlbGVjdG9yIHwgUmVsZWFzZXMg" + + "fAp8LS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGByZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llc2Ag" + + "fCBuYXRzLCBjYXNzYW5kcmEsIG9wZW5iYW8tc2VydmVyIHwKfCBgcmVsZWFzZS1ncm91cD1zZXJ2" + + "aWNlc2AgfCBhcGkta2V5cywgc2lzLCBhcGksIGludm9jYXRpb24tc2VydmljZSwgZ3JwYy1wcm94" + + "eSwgZXNzLWFwaSwgbm90YXJ5LXNlcnZpY2UsIHJldmFsLCBvcHRpb25hbCBsbG0tcmVxdWVzdC1y" + + "b3V0ZXIgYW5kIGxsbS1hcGktZ2F0ZXdheSB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCwgb3B0aW9u" + + "YWwgdmFuaXR5LWdhdGV3YXkgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhl" + + "IGFkZG9uIGFuZCBoYXZlIGBhZGRvbnMudmFuaXR5R2F0ZXdheS5lbmFibGVkPXRydWVgLCBvcHRp" + + "b25hbCBudmNmLXVpIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBhZGRv" + + "biBhbmQgaGF2ZSBgYWRkb25zLm52Y2ZVaS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1sbG0tcmVx" + + "dWVzdC1yb3V0ZXJgIHwgRGVwbG95IGp1c3QgdGhlIExMTSByZXF1ZXN0IHJvdXRlciB3aGVuIGBs" + + "bG0uZW5hYmxlZD10cnVlYCB8CnwgYG5hbWU9bGxtLWFwaS1nYXRld2F5YCB8IERlcGxveSBqdXN0" + + "IHRoZSBMTE0gQVBJIGdhdGV3YXkgd2hlbiBgbGxtLmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1lPXZh" + + "bml0eS1nYXRld2F5YCB8IERlcGxveSBqdXN0IFZhbml0eSBHYXRld2F5IG9ubHkgd2hlbiB0aGUg" + + "c3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5kIGBhZGRvbnMudmFuaXR5R2F0" + + "ZXdheS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1udmNmLXVpYCB8IERlcGxveSBOVkNGIFVJIG9u" + + "bHkgd2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5kIGBhZGRv" + + "bnMubnZjZlVpLmVuYWJsZWQ9dHJ1ZWAgfAp8IGByZWxlYXNlLWdyb3VwPWluZ3Jlc3NgIHwgaW5n" + + "cmVzcyAoZ2F0ZXdheSByb3V0ZXMpIHwKfCBgbmFtZT08cmVsZWFzZT5gIHwgQW55IGluZGl2aWR1" + + "YWwgcmVsZWFzZSBieSBuYW1lIHwKCk5vdGU6IGBhZG1pbi1pc3N1ZXItcHJveHlgIGRvZXMgbm90" + + "IGhhdmUgYSByZWxlYXNlLWdyb3VwIGxhYmVsLiBUYXJnZXQgaXQgd2l0aCBgLS1zZWxlY3RvciBu" + + "YW1lPWFkbWluLWlzc3Vlci1wcm94eWAuClBLBwgCUk5AfygAAH8oAABQSwMEFAAIAAAAAAAhAAAA" + + "AAAAAAAAAAAAAEwACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVu" + + "Y2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kVVQFAAEAps4SIyBTcGxpdCBDb21wdXRl" + + "LVBsYW5lIEluc3RhbGxhdGlvbgoKVGhlIGNvbnRyb2wgcGxhbmUgYW5kIGNvbXB1dGUgcGxhbmUg" + + "YXJlIHNlcGFyYXRlIHN0YWNrcy4gSW5zdGFsbCB0aGUgY29udHJvbApwbGFuZSBmaXJzdCwgdGhl" + + "biByZWdpc3RlciBhbmQgaW5zdGFsbCBlYWNoIGNvbXB1dGUgY2x1c3Rlci4gQ2hvb3NlIG9uZSBo" + + "YW5kb2ZmCmJlbG93IGFuZCB1c2UgaXQgZm9yIHRoZSBmdWxsIGxpZmVjeWNsZS4gRG8gbm90IGNv" + + "bWJpbmUgYSBDTEktZ2VuZXJhdGVkIHByb2ZpbGUKd2l0aCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZs" + + "b3cuCgojIyBDaG9vc2UgYSBIYW5kb2ZmCgp8IEZsb3cgfCBTb3VyY2Ugb2YgY29udHJvbC1wbGFu" + + "ZSBlbmRwb2ludHMgfCBSZWdpc3RyYXRpb24gYXJ0aWZhY3QgfAp8LS0tLS0tfC0tLS0tLS0tLS0t" + + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IEhlbG1m" + + "aWxlIHZhbHVlcyB8IFNlcGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZW52" + + "aXJvbm1lbnQgZmlsZXMgfCBgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvcmVnaXN0" + + "cmF0aW9uLzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgfAp8IENMSSBwcm9maWxlIHwg" + + "Q0xJLWdlbmVyYXRlZCBgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxh" + + "bmUtcHJvZmlsZS55YW1sYCB8IENMSS1nZW5lcmF0ZWQgYGRlcGxveS9zdGFja3MvbnZjZi1jb21w" + + "dXRlLXBsYW5lL291dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIHwKClRoZSBDTEkg" + + "cHJvZmlsZSBpcyBtYW5kYXRvcnkgZm9yIHRoZSBDTEkgZmxvdyBhbmQgbXVzdCBub3QgYmUgaGFu" + + "ZC1hdXRob3JlZC4KVGhlIEhlbG1maWxlIGZsb3cgZG9lcyBub3QgY29uc3VtZSBhIGNvbnRyb2wt" + + "cGxhbmUgcHJvZmlsZS4KCkNvbW1hbmRzIGJlbG93IHVzZSBtb25vcmVwbyBwYXRocyBmcm9tIHRo" + + "ZSByZXBvc2l0b3J5IHJvb3QuIE9wZXJhdG9ycyB1c2luZwpleHRyYWN0ZWQgcGFja2FnZXMgbmVl" + + "ZCBtYXRjaGluZy12ZXJzaW9uIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgYW5kCmBudmNmLWNv" + + "bXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXMuIFN1YnN0aXR1dGUgdGhvc2UgYnVuZGxlIHJvb3Rz" + + "IGZvcgpgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWRgIGFuZCBgZGVwbG95L3N0YWNrcy9udmNm" + + "LWNvbXB1dGUtcGxhbmVgLgoKIyMgSGVsbWZpbGUgVmFsdWVzIEZsb3cKCkNyZWF0ZSBib3RoIGVu" + + "dmlyb25tZW50IGZpbGVzIGJlZm9yZSBpbnN0YWxsYXRpb246CgotIGBkZXBsb3kvc3RhY2tzL3Nl" + + "bGYtbWFuYWdlZC9lbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgZm9yIGNvbnRyb2wtcGxhbmUKICBy" + + "ZWdpc3RyeSwgZG9tYWluLCBHYXRld2F5LCByb3V0ZXMsIGFuZCBzZXJ2aWNlIHNldHRpbmdzLgot" + + "IGBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMvPGVudj4ueWFt" + + "bGAgZm9yIGNvbXB1dGUtcGxhbmUKICByZWdpc3RyeSwgcHVsbCBzZWNyZXRzLCBhbmQgY29tcHV0" + + "ZS1yZWFjaGFibGUgSUNNUywgUmVWYWwsIGFuZCBOQVRTIHZhbHVlcy4KCkZvciBFS1MsIHVzZSB0" + + "aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2RvY3MubnZpZGlh" + + "LmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4KVGhlIGNvbnRyb2wt" + + "cGxhbmUgZW52aXJvbm1lbnQga2VlcHMgdGhlIEVudm95IEdhdGV3YXkgY29udHJvbGxlciBpbgpg" + + "ZW52b3ktZ2F0ZXdheS1zeXN0ZW1gLCBhdHRhY2hlcyByb3V0ZXMgdG8gYEdhdGV3YXkvbnZjZi1n" + + "YXRld2F5YCBpbgpgZW52b3ktZ2F0ZXdheWAsIGFuZCBlbmFibGVzIHRoZSBOQVRTIHJvdXRlLiBU" + + "aGUgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCB1c2VzCnRoZSBleHRlcm5hbCBhZGRyZXNzIHBs" + + "dXMgdGhlIHNlcnZpY2UgaG9zdCBvdmVycmlkZXMuIEhlcmUsCmA8Z2F0ZXdheS1hZGRyZXNzPmAg" + + "aXMgdGhlIE5MQiBhZGRyZXNzIGFuZCBgPGdhdGV3YXktZG9tYWluPmAgaXMgdGhlIEROUyBiYXNl" + + "Cndob3NlIHNlcnZpY2Ugc3ViZG9tYWlucyByZXNvbHZlIHRvIHRoYXQgTkxCOgoKYGBgeWFtbAoj" + + "IGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2Jh" + + "bDoKICBkb21haW46ICI8Z2F0ZXdheS1kb21haW4+IgogIHdvcmtlckVuZHBvaW50czoKICAgIG52" + + "Y2ZTZXJ2aWNlVVJMOiAiaHR0cDovL2FwaS48Z2F0ZXdheS1kb21haW4+IgogICAgbnZjZkdycGNT" + + "ZXJ2aWNlVVJMOiAiaHR0cDovL3dvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiIKICAgIG52Y2ZO" + + "YXRzU2VydmljZVVSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNzPjo0MjIyIgogICAgbnZjdFNl" + + "cnZpY2VVUkw6ICJodHRwOi8vdGFza3MuPGdhdGV3YXktZG9tYWluPiIKICAgIG52Y3RHcnBjU2Vy" + + "dmljZVVSTDogImh0dHA6Ly93b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiIKICAgIGludm9j" + + "YXRpb25TZXJ2aWNlVVJMOiAiaHR0cDovL2ludm9jYXRpb24uPGdhdGV3YXktZG9tYWluPiIKCmdy" + + "cGNwcm94eToKICBudmNmR3JwY1NlcnZpY2VVUkw6ICJodHRwOi8vYXBpLm52Y2Yuc3ZjLmNsdXN0" + + "ZXIubG9jYWw6OTA5MCIKCmluZ3Jlc3M6CiAgZ2F0ZXdheUFwaToKICAgIGNvbnRyb2xsZXJOYW1l" + + "c3BhY2U6IGVudm95LWdhdGV3YXktc3lzdGVtCiAgICBnYXRld2F5czoKICAgICAgc2hhcmVkOiB7" + + "bmFtZTogbnZjZi1nYXRld2F5LCBuYW1lc3BhY2U6IGVudm95LWdhdGV3YXl9CiAgICAgIGdycGM6" + + "IHtuYW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheX0KICAgICAgbmF0" + + "czoKICAgICAgICBuYW1lOiBudmNmLWdhdGV3YXkKICAgICAgICBuYW1lc3BhY2U6IGVudm95LWdh" + + "dGV3YXkKICAgICAgICBsaXN0ZW5lck5hbWU6IG5hdHMKICAgIHJvdXRlczoKICAgICAgbnZjZkFw" + + "aToKICAgICAgICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAgICAgaG9zdG5h" + + "bWVzOiBbIndvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG52Y3RBcGk6CiAgICAg" + + "ICAgZ3JwYzoKICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgIGhvc3RuYW1lczogWyJ3" + + "b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG5hdHM6CiAgICAgICAgZW5hYmxl" + + "ZDogdHJ1ZQoKb3BlbmJhbzoKICBtaWdyYXRpb25zOgogICAgaXNzdWVyRGlzY292ZXJ5OgogICAg" + + "ICBlbmFibGVkOiB0cnVlCmBgYAoKYGBgeWFtbAojIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRl" + + "LXBsYW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoKICBudmNhT3BlcmF0b3I6CiAg" + + "ICBzZWxmTWFuYWdlZDoKICAgICAgaWNtc1NlcnZpY2VVUkw6ICJodHRwOi8vPGdhdGV3YXktYWRk" + + "cmVzcz4iCiAgICAgIGljbXNTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAic2lzLjxnYXRld2F5" + + "LWRvbWFpbj4iCiAgICAgIHJldmFsU2VydmljZVVSTDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNz" + + "PiIKICAgICAgcmV2YWxTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAicmV2YWwuPGdhdGV3YXkt" + + "ZG9tYWluPiIKICAgICAgbmF0c1VSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNzPjo0MjIyIgog" + + "ICAgICBuYXRzSG9zdE92ZXJyaWRlOiAibmF0cy48Z2F0ZXdheS1kb21haW4+IgpgYGAKClByZXZp" + + "ZXcgYW5kIGluc3RhbGwgdGhlIGNvbnRyb2wgcGxhbmUgYWdhaW5zdCBpdHMgY29udGV4dDoKCmBg" + + "YGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCB0ZW1wbGF0ZSBcCiAgSEVM" + + "TUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNv" + + "bmZpZz4KCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgaW5zdGFsbCBcCiAgSEVM" + + "TUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNv" + + "bmZpZz4KYGBgCgpCZWZvcmUgcmVnaXN0ZXJpbmcgdGhyb3VnaCBhIGJhcmUgR2F0ZXdheSBhZGRy" + + "ZXNzLCBjcmVhdGUgb3IgdXBkYXRlIHRoZSBDTEkKY29uZmlnIHBhc3NlZCBhcyBgTlZDRl9DTElf" + + "Q09ORklHYDoKCmBgYHlhbWwKYmFzZV9odHRwX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNz" + + "PiIKaW52b2tlX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKYmFzZV9ncnBjX3VybDog" + + "IjxnYXRld2F5LWFkZHJlc3M+OjEwMDgxIgphcGlfa2V5c19zZXJ2aWNlX3VybDogImh0dHA6Ly88" + + "Z2F0ZXdheS1hZGRyZXNzPiIKaWNtc191cmw6ICJodHRwOi8vPGdhdGV3YXktYWRkcmVzcz4iCmFw" + + "aV9ob3N0OiAiYXBpLjxnYXRld2F5LWRvbWFpbj4iCmFwaV9rZXlzX2hvc3Q6ICJhcGkta2V5cy48" + + "Z2F0ZXdheS1kb21haW4+IgppbnZva2VfaG9zdDogImludm9jYXRpb24uPGdhdGV3YXktZG9tYWlu" + + "PiIKaWNtc19ob3N0OiAic2lzLjxnYXRld2F5LWRvbWFpbj4iCmBgYAoKSG9zdCBmaWVsZHMgY29u" + + "dGFpbiBob3N0bmFtZXMgb25seSwgd2l0aG91dCBhIFVSTCBzY2hlbWUuIGBJQ01TX1VSTGAgbWFw" + + "cyBvbmx5CnRvIHRoZSByZWdpc3RyYXRpb24gY29tbWFuZCdzIGAtLWljbXMtdXJsYDsgYGljbXNf" + + "aG9zdGAgaW4gdGhlIGNvbmZpZyBzdXBwbGllcwp0aGUgR2F0ZXdheSBIb3N0IGhlYWRlci4gVGhl" + + "cmUgaXMgbm8gYC0taWNtcy1ob3N0YCBNYWtlIG9yIENMSSBmbGFnLgoKUmVnaXN0ZXIgZnJvbSB0" + + "aGUgY29tcHV0ZSBjb250ZXh0LCB0aGVuIGluc3RhbGwgdGhlIGNvbXB1dGUgcGxhbmU6CgpgYGBi" + + "YXNoCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVnaXN0ZXItY2x1" + + "c3RlciBcCiAgQ0xVU1RFUl9OQU1FPTxjbHVzdGVyLW5hbWU+IFwKICBOQ0FfSUQ9PG5jYS1pZD4g" + + "XAogIENMVVNURVJfUkVHSU9OPTxyZWdpb24+IFwKICBJQ01TX1VSTD1odHRwOi8vPGdhdGV3YXkt" + + "YWRkcmVzcz4gXAogIEtVQkVDT05GSUdfRklMRT08Y29tcHV0ZS1wbGFuZS1rdWJlY29uZmlnPiBc" + + "CiAgTlZDRl9DTEk9PHBhdGgtdG8tbnZjZi1jbGk+IFwKICBOVkNGX0NMSV9DT05GSUc9PHBhdGgt" + + "dG8tbnZjZi1jbGktY29uZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1w" + + "bGFuZSBpbnN0YWxsIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1GSUxF" + + "X0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+" + + "CmBgYAoKUmVnaXN0cmF0aW9uIGRpc2NvdmVycyB0aGUgT0lEQyBpc3N1ZXIgYW5kIEpXS1MgZnJv" + + "bSB0aGUgY29tcHV0ZSBrdWJlIGNvbnRleHQuCkluIGEgbXVsdGktY2x1c3RlciBkZXBsb3ltZW50" + + "LCBgS1VCRUNPTkZJR19GSUxFYCBpcyByZXF1aXJlZCBvbiBib3RoCmNvbXB1dGUtcGxhbmUgY29t" + + "bWFuZHMuIEluIGEgc2FtZS1jbHVzdGVyIGRlcGxveW1lbnQgaXQgbWF5IGJlIG9taXR0ZWQgb25s" + + "eQp3aGVuIHRoZSBhbWJpZW50IGNvbnRleHQgaXMgYWxyZWFkeSB0aGUgdGFyZ2V0IGNsdXN0ZXIu" + + "CgojIyBDTEkgUHJvZmlsZSBGbG93CgpSdW4gdGhlIENMSSBjb250cm9sLXBsYW5lIGluc3RhbGwg" + + "Zmlyc3QuIEl0IGNyZWF0ZXMgdGhlIHByb2ZpbGUgY29uc3VtZWQgYnkKY29tcHV0ZS1wbGFuZSBy" + + "ZWdpc3RyYXRpb246CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9z" + + "dGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQg" + + "XAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFu" + + "ZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0" + + "IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29t" + + "cHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmUgXAogIC0tY2x1" + + "c3Rlci1uYW1lIDxjb250cm9sLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tcmVnaW9uIDxyZWdp" + + "b24+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKdGVzdCAtcyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFu" + + "YWdlZC9vdXQvY29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWwKYGBgCgpVc2UgdGhlIGZ1bGwgcGVy" + + "c2lzdGVudCBwcmVmaXggZm9yIGJvdGggY29tcHV0ZS1wbGFuZSBjb21tYW5kczoKCmBgYGJhc2gK" + + "bnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFu" + + "ZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0" + + "YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAg" + + "LS1wbGFpbiBcCiAgY29tcHV0ZS1wbGFuZSByZWdpc3RlciBcCiAgLS1jb250cm9sLXBsYW5lLXBy" + + "b2ZpbGUgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJvZmls" + + "ZS55YW1sIFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwK" + + "ICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1yZWdpb24gPHJl" + + "Z2lvbj4gXAogIC0tb3V0cHV0IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88" + + "Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sCgpudmNmLWNs" + + "aSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNr" + + "IGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVw" + + "bG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWlu" + + "IFwKICBjb21wdXRlLXBsYW5lIGluc3RhbGwgXAogIC0tdmFsdWVzIGRlcGxveS9zdGFja3MvbnZj" + + "Zi1jb21wdXRlLXBsYW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+LXJlZ2lzdGVy" + + "LXZhbHVlcy55YW1sIFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBc" + + "CiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPgpgYGAKClJlZ2lz" + + "dHJhdGlvbiBzZWxlY3RzIHRoZSBwcm9maWxlJ3MgaW4tY2x1c3RlciBvciBjb21wdXRlLXJlYWNo" + + "YWJsZSBlbmRwb2ludHMKZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0IGFuZCBwcm9iZXMgaXRzIEpX" + + "S1MuIERvIG5vdCByZXBsYWNlIHByb2ZpbGUgZW5kcG9pbnRzCndpdGggaGFuZC1hdXRob3JlZCBI" + + "ZWxtZmlsZSBlbmRwb2ludCB2YWx1ZXMuCgojIyBQdWxsIFNlY3JldHMKCkNyZWF0ZSB0aGUgY29u" + + "dHJvbC1wbGFuZSBzZWNyZXQgaW4gdGhlc2UgbmFtZXNwYWNlcyBvbiB0aGUgY29udHJvbC1wbGFu" + + "ZQpjb250ZXh0OgoKYGBgdGV4dApjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBp" + + "LWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyCmBgYAoKT24gdGhlIGNvbXB1" + + "dGUgY29udGV4dCwgY3JlYXRlIHRoZSBzZWNyZXQgb25seSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5k" + + "IHJlZmVyZW5jZQppdCB0aHJvdWdoIGBnbG9iYWwuaW1hZ2VQdWxsU2VjcmV0c2AgaW4gdGhlIGNv" + + "bXB1dGUtcGxhbmUgZW52aXJvbm1lbnQuIFRoZSBjaGFydAphbmQgb3BlcmF0b3IgdXNlIGl0IGlu" + + "IGBudmNhLW9wZXJhdG9yYCBhbmQgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBh" + + "ZGQKZWl0aGVyIG5hbWVzcGFjZSB0byB0aGUgY29udHJvbC1wbGFuZSBsaXN0LiBGb3IgY29tbWFu" + + "ZHMgYW5kIHBvbGljeSBleGFtcGxlcywKc2VlIFtwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0" + + "cy5tZCkuCgojIyBWZXJpZmljYXRpb24KClVzZSB0aGUgZXhwbGljaXQgR2F0ZXdheSBuYW1lIGFu" + + "ZCBuYW1lc3BhY2U6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + + "bnRleHQ+IGdldCBnYXRld2F5IG52Y2YtZ2F0ZXdheSBcCiAgLW4gZW52b3ktZ2F0ZXdheSAtbyB3" + + "aWRlCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCB0Y3Byb3V0" + + "ZSAtbiBlbnZveS1nYXRld2F5Cmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + + "eHQ+IHJvbGxvdXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Etb3BlcmF0b3IgLW4gbnZjYS1v" + + "cGVyYXRvciAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNv" + + "bnRleHQ+IHdhaXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4g" + + "LW4gbnZjYS1vcGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3suc3RhdHVzLmFnZW50U3RhdHVz" + + "fSc9aGVhbHRoeSAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5l" + + "LWNvbnRleHQ+IGdldCBzZWNyZXQgPHB1bGwtc2VjcmV0PiAtbiBudmNhLXN5c3RlbQpgYGAKCiMj" + + "IFRlYXJkb3duCgpEZXN0cm95IGFuZCBkZXJlZ2lzdGVyIGV2ZXJ5IGNvbXB1dGUgcGxhbmUgYmVm" + + "b3JlIHRoZSBjb250cm9sIHBsYW5lLiBCb3RoCmhhbmRvZmZzIGNhbiBkZXN0cm95IHRoZSBjb250" + + "cm9sIHBsYW5lLCBzbyBhcHBseSB0aGlzIHByZWZsaWdodCBiZWZvcmUgZWl0aGVyCm9uZS4gUHJl" + + "c2VydmUgdGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3BhY2Ug" + + "cHJlc2VydmF0aW9uCmRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIElkZW50aWZ5" + + "IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLgpGb3IgYW4gZXh0ZXJuYWwgaW5zdGFs" + + "bGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgCmFu" + + "ZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxl" + + "YXNlIHdpdGggZWZmZWN0aXZlCmBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5IG1h" + + "dGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQKYWJvcnQgb24gbWlzc2luZyBv" + + "ciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNwYWNlIHJlbW92YWwgYWZ0ZXIK" + + "dmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBnZXR0aW5nIGV4cGxpY2l0IGNvbmZp" + + "cm1hdGlvbjsgb3RoZXJ3aXNlCmRvIG5vdCBkZWxldGUgaXQuCgpGb3IgdGhlIEhlbG1maWxlIHZh" + + "bHVlcyBmbG93LCByZXRhaW4gZWFjaCByZWdpc3RyYXRpb24gdmFsdWVzIGZpbGUgdW50aWwKY2xl" + + "YW51cCBpcyB2ZXJpZmllZDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29t" + "cHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhF" + "TE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVj" + - "b25maWc+CmBgYAoKSWYgY29tcHV0ZSBjbGVhbnVwIGlzIHN0dWNrIG9uIGZpbmFsaXplcnMsIHVz" + - "ZSB0aGUgY29tcHV0ZS1jb250ZXh0IHByb2NlZHVyZSBpbgpbZGVidWdnaW5nLm1kXShyZWZlcmVu" + - "Y2VzL2RlYnVnZ2luZy5tZCNmYWlsdXJlLW52Y2EtY2xlYW51cC1zdHVjay1maW5hbGl6ZXJzKS4K" + - "CiMjIyBTdGVwIDI6IERlcmVnaXN0ZXIgdGhlIGNvbXB1dGUgY2x1c3RlcgoKUmVhZCBgY2x1c3Rl" + - "cklEYCBhbmQgYG5jYUlEYCBmcm9tCmBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9y" + - "ZWdpc3RyYXRpb24vPGNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgLgpTaG93IHRo" + - "ZSBJRCBhbmQgZ2V0IGNvbmZpcm1hdGlvbiBiZWZvcmUgZGVsZXRpbmcgdGhlIElDTVMgcm93OgoK" + - "YGBgYmFzaAo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNsdXN0ZXIgZGVsZXRlIFwKICAt" + + "b25maWc+Cgo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNsdXN0ZXIgZGVsZXRlIFwKICAt" + "LWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1yZWdpc3RyYXRpb24tdmFsdWVzPiBcCiAgLS1u" + - "Y2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBgCgpSZXBlYXQgc3RlcHMgMSBh" + - "bmQgMiBmb3IgZXZlcnkgY29tcHV0ZSBjbHVzdGVyLgoKIyMjIFN0ZXAgMzogRGVzdHJveSB0aGUg" + - "Y29udHJvbC1wbGFuZSBzdGFjawoKUHJlc2VydmUgdGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFj" + - "ZSBieSBkZWZhdWx0LiBOYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRvZXMKbm90IHByZXNlcnZlIHRo" + - "ZSBIZWxtIHJlbGVhc2UuIEJlZm9yZSBydW5uaW5nIGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIK" + - "Y2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLiBGb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCBy" + - "ZXF1aXJlIGVmZmVjdGl2ZQpgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBp" + - "ZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQKc3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGgg" + - "ZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5Cm1hdGNoaW5nIHN0" + - "YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQgYWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRj" + - "aGVkCmV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNwYWNlIHJlbW92YWwgYWZ0ZXIgdmVyaWZ5aW5n" + - "IG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZApnZXR0aW5nIGV4cGxpY2l0IGNvbmZpcm1hdGlvbjsg" + - "b3RoZXJ3aXNlIGRvIG5vdCBkZWxldGUgaXQuCgpgYGBiYXNoCktVQkVDT05GSUc9PGNvbnRyb2wt" + - "cGxhbmUta3ViZWNvbmZpZz4gXAptYWtlIC1DIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIGRl" + - "c3Ryb3kgXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb250cm9s" + - "LXBsYW5lLWt1YmVjb25maWc+CmBgYAoKUGFzcyBib3RoIGt1YmVjb25maWcgZm9ybXMgYmVjYXVz" + - "ZSBjb250cm9sLXBsYW5lIG5hbWVzcGFjZSBjbGVhbnVwIHVzZXMKYW1iaWVudCBga3ViZWN0bGAu" + - "CgojIyMgU3RlcCA0OiBWZXJpZnkgY2xlYW4KCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNv" + - "bXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG5zIHwgXAogIGdyZXAgLUUgJyhudmNhfG52Y2YtYmFj" + - "a2VuZHxncm92ZXxkeW5hbW8pJwprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250" + - "ZXh0PiBnZXQgbnMgfCBcCiAgZ3JlcCAtRSAnKGNhc3NhbmRyYXxuYXRzfHZhdWx0fG52Y2Z8YXBp" + - "LWtleXN8ZXNzfHNpcyknCiMgQm90aCBjb21tYW5kcyBzaG91bGQgcmV0dXJuIGVtcHR5LgpgYGAK" + - "CiMjIyBTdGVwIDU6IFJlaW5zdGFsbCBpbiBzcGxpdCBvcmRlcgoKRm9sbG93IFtDbGVhbiBJbnN0" + - "YWxsYXRpb25dKFNLSUxMLm1kI2NsZWFuLWluc3RhbGxhdGlvbiksIHRoZW4gcmV0dXJuIHRvIHRo" + - "ZQpzYW1lIGhhbmRvZmYgaW4gW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZl" + - "cmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4KCi0tLQoKIyMgRXhhbXBsZSA0" + - "OiBSZWNvdmVyIGZyb20gYSBHYXRld2F5IEVuZHBvaW50IENoYW5nZQoKVGhlIHNlcGFyYXRlbHkg" + - "cHJvdmlzaW9uZWQgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxhbmNlciB3YXMgcmVjcmVhdGVkIGFu" + - "ZCBnb3QgYSBuZXcgZW5kcG9pbnQuCgojIyMgU3RlcCAxOiBHZXQgdGhlIG5ldyBlbmRwb2ludAoK" + - "YGBgYmFzaApHQVRFV0FZX0FERFI9JChrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1j" + - "b250ZXh0PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1nYXRld2F5IC1uIGVudm95LWdhdGV3YXkgXAog" + - "IC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFsdWV9JykKdGVzdCAtbiAiJEdB" + - "VEVXQVlfQUREUiIKYGBgCgojIyMgU3RlcCAyOiBVcGRhdGUgRE5TIGFuZCBkaXJlY3QgYWRkcmVz" + - "cyBmaWVsZHMKCktlZXAgYGdsb2JhbC5kb21haW5gLCByb3V0ZSBob3N0bmFtZXMsIGFuZCBDTEkg" + - "SG9zdCBmaWVsZHMgdW5jaGFuZ2VkLiBQb2ludCB0aGUKRE5TIHJlY29yZHMgZm9yIHJlbmRlcmVk" + - "IHJvdXRlIGhvc3RuYW1lcywgc3VjaCBhcyBgYXBpLjxkb21haW4+YCBhbmQKYCouaW52b2NhdGlv" + - "bi48ZG9tYWluPmAsIHRvIGBHQVRFV0FZX0FERFJgLiBGb3IgYSB0ZW1wb3JhcnkgZW52aXJvbm1l" + - "bnQgd2l0aG91dApETlMsIGtlZXAgaXRzIHJlc2VydmVkIHJvdXRlIHN1ZmZpeCBhbmQgY29ubmVj" + - "dCB0byBgR0FURVdBWV9BRERSYCB3aXRoIHRoZQptYXRjaGluZyBgSG9zdGAgaGVhZGVyLgoKRm9y" + - "IGEgc3BsaXQgZGVwbG95bWVudCBjb25maWd1cmVkIHdpdGggZGlyZWN0IEdhdGV3YXkgYWRkcmVz" + - "c2VzLCByZXBsYWNlIG9ubHkKdGhlIGFkZHJlc3MtYmVhcmluZyB2YWx1ZXM6IGNvbnRyb2wtcGxh" + - "bmUgYG52Y2ZOYXRzU2VydmljZVVSTGAsIGNvbXB1dGUtcGxhbmUKSUNNUywgUmVWYWwsIGFuZCBO" + - "QVRTIFVSTHMsIGFuZCBDTEkgVVJMIGZpZWxkcy4gS2VlcCB0aGVpciBkb21haW4gYW5kIEhvc3QK" + - "b3ZlcnJpZGVzIHVuY2hhbmdlZC4gUmVmcmVzaCByZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlv" + - "biB0aHJvdWdoIHRoZSBzYW1lCmhhbmRvZmYgdXNlZCBvcmlnaW5hbGx5LiBTZWUKW1NwbGl0IENv" + - "bXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFs" + - "bGF0aW9uLm1kKQpmb3IgdGhlIGZpZWxkcyBhbmQgY29tcGxldGUgY29tbWFuZHMuCgojIyMgU3Rl" + - "cCAzOiBWZXJpZnkgYm90aCBjb250ZXh0cwoKYGBgYmFzaApkaWcgK3Nob3J0ICJhcGkuPGRvbWFp" + - "bj4iCmN1cmwgLUggIkhvc3Q6IGFwaS48ZG9tYWluPiIgImh0dHA6Ly8kR0FURVdBWV9BRERSL2hl" + - "YWx0aCIKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3" + - "YXkgbnZjZi1nYXRld2F5IFwKICAtbiBlbnZveS1nYXRld2F5IC1vIHdpZGUKa3ViZWN0bCAtLWNv" + - "bnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGh0dHByb3V0ZXMgLUEKa3ViZWN0bCAt" + - "LWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHRjcHJvdXRlcyAtQQprdWJlY3Rs" + - "IC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiByb2xsb3V0IHN0YXR1cyBcCiAgZGVw" + - "bG95bWVudC9udmNhLW9wZXJhdG9yIC1uIG52Y2Etb3BlcmF0b3IgLS10aW1lb3V0PTEwbQprdWJl" + - "Y3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiB3YWl0IFwKICBudmNmYmFja2Vu" + - "ZC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IC1uIG52Y2Etb3BlcmF0b3IgXAogIC0tZm9y" + - "PWpzb25wYXRoPSd7LnN0YXR1cy5hZ2VudFN0YXR1c30nPWhlYWx0aHkgLS10aW1lb3V0PTEwbQpg" + - "YGAKCi0tLQoKIyMgRXhhbXBsZSA1OiBEZXBsb3kgT25seSBEZXBlbmRlbmNpZXMKClVzZWZ1bCBm" + - "b3IgdGVzdGluZyBvciB3aGVuIGl0ZXJhdGluZyBvbiBzZXJ2aWNlIGNvbmZpZ3VyYXRpb24uCgpg" + - "YGBiYXNoCiMgRGVwbG95IGp1c3QgTkFUUywgQ2Fzc2FuZHJhLCBPcGVuQmFvCkhFTE1GSUxFX0VO" + - "Vj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5" + - "bmMKCiMgQ2hlY2sgc3RhdHVzCmt1YmVjdGwgZ2V0IHBvZHMgLW4gbmF0cy1zeXN0ZW0Ka3ViZWN0" + - "bCBnZXQgcG9kcyAtbiBjYXNzYW5kcmEtc3lzdGVtCmt1YmVjdGwgZ2V0IHBvZHMgLW4gdmF1bHQt" + - "c3lzdGVtCgojIERlcGxveSBqdXN0IG9uZSBzcGVjaWZpYyByZWxlYXNlCkhFTE1GSUxFX0VOVj08" + - "ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMKYGBgCgojIyMgU2Vs" + - "ZWN0b3IgcmVmZXJlbmNlCgp8IFNlbGVjdG9yIHwgUmVsZWFzZXMgfAp8LS0tLS0tLS0tLXwtLS0t" + - "LS0tLS0tfAp8IGByZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llc2AgfCBuYXRzLCBjYXNzYW5kcmEs" + - "IG9wZW5iYW8tc2VydmVyIHwKfCBgcmVsZWFzZS1ncm91cD1zZXJ2aWNlc2AgfCBhcGkta2V5cywg" + - "c2lzLCBhcGksIGludm9jYXRpb24tc2VydmljZSwgZ3JwYy1wcm94eSwgZXNzLWFwaSwgbm90YXJ5" + - "LXNlcnZpY2UsIHJldmFsLCBvcHRpb25hbCBsbG0tcmVxdWVzdC1yb3V0ZXIgYW5kIGxsbS1hcGkt" + - "Z2F0ZXdheSB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCwgb3B0aW9uYWwgdmFuaXR5LWdhdGV3YXkg" + - "b25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhlIGFkZG9uIGFuZCBoYXZlIGBh" + - "ZGRvbnMudmFuaXR5R2F0ZXdheS5lbmFibGVkPXRydWVgLCBvcHRpb25hbCBudmNmLXVpIG9ubHkg" + - "aW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBhZGRvbiBhbmQgaGF2ZSBgYWRkb25z" + - "Lm52Y2ZVaS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1sbG0tcmVxdWVzdC1yb3V0ZXJgIHwgRGVw" + - "bG95IGp1c3QgdGhlIExMTSByZXF1ZXN0IHJvdXRlciB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCB8" + - "CnwgYG5hbWU9bGxtLWFwaS1nYXRld2F5YCB8IERlcGxveSBqdXN0IHRoZSBMTE0gQVBJIGdhdGV3" + - "YXkgd2hlbiBgbGxtLmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1lPXZhbml0eS1nYXRld2F5YCB8IERl" + - "cGxveSBqdXN0IFZhbml0eSBHYXRld2F5IG9ubHkgd2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNs" + - "dWRlcyB0aGF0IHJlbGVhc2UgYW5kIGBhZGRvbnMudmFuaXR5R2F0ZXdheS5lbmFibGVkPXRydWVg" + - "IHwKfCBgbmFtZT1udmNmLXVpYCB8IERlcGxveSBOVkNGIFVJIG9ubHkgd2hlbiB0aGUgc3RhY2sg" + - "cGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5kIGBhZGRvbnMubnZjZlVpLmVuYWJsZWQ9" + - "dHJ1ZWAgfAp8IGByZWxlYXNlLWdyb3VwPWluZ3Jlc3NgIHwgaW5ncmVzcyAoZ2F0ZXdheSByb3V0" + - "ZXMpIHwKfCBgbmFtZT08cmVsZWFzZT5gIHwgQW55IGluZGl2aWR1YWwgcmVsZWFzZSBieSBuYW1l" + - "IHwKCk5vdGU6IGBhZG1pbi1pc3N1ZXItcHJveHlgIGRvZXMgbm90IGhhdmUgYSByZWxlYXNlLWdy" + - "b3VwIGxhYmVsLiBUYXJnZXQgaXQgd2l0aCBgLS1zZWxlY3RvciBuYW1lPWFkbWluLWlzc3Vlci1w" + - "cm94eWAuClBLBwgCUk5AfygAAH8oAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAEwACQBkYXRh" + - "L252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUt" + - "aW5zdGFsbGF0aW9uLm1kVVQFAAEAps4SIyBTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlv" + - "bgoKVGhlIGNvbnRyb2wgcGxhbmUgYW5kIGNvbXB1dGUgcGxhbmUgYXJlIHNlcGFyYXRlIHN0YWNr" + - "cy4gSW5zdGFsbCB0aGUgY29udHJvbApwbGFuZSBmaXJzdCwgdGhlbiByZWdpc3RlciBhbmQgaW5z" + - "dGFsbCBlYWNoIGNvbXB1dGUgY2x1c3Rlci4gQ2hvb3NlIG9uZSBoYW5kb2ZmCmJlbG93IGFuZCB1" + - "c2UgaXQgZm9yIHRoZSBmdWxsIGxpZmVjeWNsZS4gRG8gbm90IGNvbWJpbmUgYSBDTEktZ2VuZXJh" + - "dGVkIHByb2ZpbGUKd2l0aCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZsb3cuCgojIyBDaG9vc2UgYSBI" + - "YW5kb2ZmCgp8IEZsb3cgfCBTb3VyY2Ugb2YgY29udHJvbC1wbGFuZSBlbmRwb2ludHMgfCBSZWdp" + - "c3RyYXRpb24gYXJ0aWZhY3QgfAp8LS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t" + - "LS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IEhlbG1maWxlIHZhbHVlcyB8IFNlcGFy" + - "YXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZXMgfCBg" + - "ZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvcmVnaXN0cmF0aW9uLzxjbHVzdGVyPi1y" + - "ZWdpc3Rlci12YWx1ZXMueWFtbGAgfAp8IENMSSBwcm9maWxlIHwgQ0xJLWdlbmVyYXRlZCBgZGVw" + - "bG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sYCB8" + - "IENMSS1nZW5lcmF0ZWQgYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88Y2x1" + - "c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIHwKClRoZSBDTEkgcHJvZmlsZSBpcyBtYW5kYXRv" + - "cnkgZm9yIHRoZSBDTEkgZmxvdyBhbmQgbXVzdCBub3QgYmUgaGFuZC1hdXRob3JlZC4KVGhlIEhl" + - "bG1maWxlIGZsb3cgZG9lcyBub3QgY29uc3VtZSBhIGNvbnRyb2wtcGxhbmUgcHJvZmlsZS4KCkNv" + - "bW1hbmRzIGJlbG93IHVzZSBtb25vcmVwbyBwYXRocyBmcm9tIHRoZSByZXBvc2l0b3J5IHJvb3Qu" + - "IE9wZXJhdG9ycyB1c2luZwpleHRyYWN0ZWQgcGFja2FnZXMgbmVlZCBtYXRjaGluZy12ZXJzaW9u" + - "IGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgYW5kCmBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tg" + - "IGJ1bmRsZXMuIFN1YnN0aXR1dGUgdGhvc2UgYnVuZGxlIHJvb3RzIGZvcgpgZGVwbG95L3N0YWNr" + - "cy9zZWxmLW1hbmFnZWRgIGFuZCBgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmVgLgoK" + - "IyMgSGVsbWZpbGUgVmFsdWVzIEZsb3cKCkNyZWF0ZSBib3RoIGVudmlyb25tZW50IGZpbGVzIGJl" + - "Zm9yZSBpbnN0YWxsYXRpb246CgotIGBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9lbnZpcm9u" + - "bWVudHMvPGVudj4ueWFtbGAgZm9yIGNvbnRyb2wtcGxhbmUKICByZWdpc3RyeSwgZG9tYWluLCBH" + - "YXRld2F5LCByb3V0ZXMsIGFuZCBzZXJ2aWNlIHNldHRpbmdzLgotIGBkZXBsb3kvc3RhY2tzL252" + - "Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgZm9yIGNvbXB1dGUtcGxh" + - "bmUKICByZWdpc3RyeSwgcHVsbCBzZWNyZXRzLCBhbmQgY29tcHV0ZS1yZWFjaGFibGUgSUNNUywg" + - "UmVWYWwsIGFuZCBOQVRTIHZhbHVlcy4KCkZvciBFS1MsIHVzZSB0aGUgY2Fub25pY2FsCltDU1Ag" + - "RW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1y" + - "Yy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4KVGhlIGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQg" + - "a2VlcHMgdGhlIEVudm95IEdhdGV3YXkgY29udHJvbGxlciBpbgpgZW52b3ktZ2F0ZXdheS1zeXN0" + - "ZW1gLCBhdHRhY2hlcyByb3V0ZXMgdG8gYEdhdGV3YXkvbnZjZi1nYXRld2F5YCBpbgpgZW52b3kt" + - "Z2F0ZXdheWAsIGFuZCBlbmFibGVzIHRoZSBOQVRTIHJvdXRlLiBUaGUgY29tcHV0ZS1wbGFuZSBl" + - "bnZpcm9ubWVudCB1c2VzCnRoZSBleHRlcm5hbCBhZGRyZXNzIHBsdXMgdGhlIHNlcnZpY2UgaG9z" + - "dCBvdmVycmlkZXMuIEhlcmUsCmA8Z2F0ZXdheS1hZGRyZXNzPmAgaXMgdGhlIE5MQiBhZGRyZXNz" + - "IGFuZCBgPGdhdGV3YXktZG9tYWluPmAgaXMgdGhlIEROUyBiYXNlCndob3NlIHNlcnZpY2Ugc3Vi" + - "ZG9tYWlucyByZXNvbHZlIHRvIHRoYXQgTkxCOgoKYGBgeWFtbAojIGRlcGxveS9zdGFja3Mvc2Vs" + - "Zi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoKICBkb21haW46ICI8Z2F0" + - "ZXdheS1kb21haW4+IgogIHdvcmtlckVuZHBvaW50czoKICAgIG52Y2ZTZXJ2aWNlVVJMOiAiaHR0" + - "cDovL2FwaS48Z2F0ZXdheS1kb21haW4+IgogICAgbnZjZkdycGNTZXJ2aWNlVVJMOiAiaHR0cDov" + - "L3dvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiIKICAgIG52Y2ZOYXRzU2VydmljZVVSTDogIm5h" + - "dHM6Ly88Z2F0ZXdheS1hZGRyZXNzPjo0MjIyIgogICAgbnZjdFNlcnZpY2VVUkw6ICJodHRwOi8v" + - "dGFza3MuPGdhdGV3YXktZG9tYWluPiIKICAgIG52Y3RHcnBjU2VydmljZVVSTDogImh0dHA6Ly93" + - "b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiIKICAgIGludm9jYXRpb25TZXJ2aWNlVVJMOiAi" + - "aHR0cDovL2ludm9jYXRpb24uPGdhdGV3YXktZG9tYWluPiIKCmdycGNwcm94eToKICBudmNmR3Jw" + - "Y1NlcnZpY2VVUkw6ICJodHRwOi8vYXBpLm52Y2Yuc3ZjLmNsdXN0ZXIubG9jYWw6OTA5MCIKCmlu" + - "Z3Jlc3M6CiAgZ2F0ZXdheUFwaToKICAgIGNvbnRyb2xsZXJOYW1lc3BhY2U6IGVudm95LWdhdGV3" + - "YXktc3lzdGVtCiAgICBnYXRld2F5czoKICAgICAgc2hhcmVkOiB7bmFtZTogbnZjZi1nYXRld2F5" + - "LCBuYW1lc3BhY2U6IGVudm95LWdhdGV3YXl9CiAgICAgIGdycGM6IHtuYW1lOiBudmNmLWdhdGV3" + - "YXksIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheX0KICAgICAgbmF0czoKICAgICAgICBuYW1lOiBu" + - "dmNmLWdhdGV3YXkKICAgICAgICBuYW1lc3BhY2U6IGVudm95LWdhdGV3YXkKICAgICAgICBsaXN0" + - "ZW5lck5hbWU6IG5hdHMKICAgIHJvdXRlczoKICAgICAgbnZjZkFwaToKICAgICAgICBncnBjOgog" + - "ICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAgICAgaG9zdG5hbWVzOiBbIndvcmtlci1hcGku" + - "PGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG52Y3RBcGk6CiAgICAgICAgZ3JwYzoKICAgICAgICAg" + - "IGVuYWJsZWQ6IHRydWUKICAgICAgICAgIGhvc3RuYW1lczogWyJ3b3JrZXItdGFza3MuPGdhdGV3" + - "YXktZG9tYWluPiJdCiAgICAgIG5hdHM6CiAgICAgICAgZW5hYmxlZDogdHJ1ZQoKb3BlbmJhbzoK" + - "ICBtaWdyYXRpb25zOgogICAgaXNzdWVyRGlzY292ZXJ5OgogICAgICBlbmFibGVkOiB0cnVlCmBg" + - "YAoKYGBgeWFtbAojIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50" + - "cy88ZW52Pi55YW1sCmdsb2JhbDoKICBudmNhT3BlcmF0b3I6CiAgICBzZWxmTWFuYWdlZDoKICAg" + - "ICAgaWNtc1NlcnZpY2VVUkw6ICJodHRwOi8vPGdhdGV3YXktYWRkcmVzcz4iCiAgICAgIGljbXNT" + - "ZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAic2lzLjxnYXRld2F5LWRvbWFpbj4iCiAgICAgIHJl" + - "dmFsU2VydmljZVVSTDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKICAgICAgcmV2YWxTZXJ2" + - "aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAicmV2YWwuPGdhdGV3YXktZG9tYWluPiIKICAgICAgbmF0" + - "c1VSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNzPjo0MjIyIgogICAgICBuYXRzSG9zdE92ZXJy" + - "aWRlOiAibmF0cy48Z2F0ZXdheS1kb21haW4+IgpgYGAKClByZXZpZXcgYW5kIGluc3RhbGwgdGhl" + - "IGNvbnRyb2wgcGxhbmUgYWdhaW5zdCBpdHMgY29udGV4dDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBs" + - "b3kvc3RhY2tzL3NlbGYtbWFuYWdlZCB0ZW1wbGF0ZSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwK" + - "ICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KCm1ha2UgLUMgZGVw" + - "bG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgaW5zdGFsbCBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwK" + - "ICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpCZWZvcmUg" + - "cmVnaXN0ZXJpbmcgdGhyb3VnaCBhIGJhcmUgR2F0ZXdheSBhZGRyZXNzLCBjcmVhdGUgb3IgdXBk" + - "YXRlIHRoZSBDTEkKY29uZmlnIHBhc3NlZCBhcyBgTlZDRl9DTElfQ09ORklHYDoKCmBgYHlhbWwK" + - "YmFzZV9odHRwX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKaW52b2tlX3VybDogImh0" + - "dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKYmFzZV9ncnBjX3VybDogIjxnYXRld2F5LWFkZHJlc3M+" + - "OjEwMDgxIgphcGlfa2V5c19zZXJ2aWNlX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIK" + - "aWNtc191cmw6ICJodHRwOi8vPGdhdGV3YXktYWRkcmVzcz4iCmFwaV9ob3N0OiAiYXBpLjxnYXRl" + - "d2F5LWRvbWFpbj4iCmFwaV9rZXlzX2hvc3Q6ICJhcGkta2V5cy48Z2F0ZXdheS1kb21haW4+Igpp" + - "bnZva2VfaG9zdDogImludm9jYXRpb24uPGdhdGV3YXktZG9tYWluPiIKaWNtc19ob3N0OiAic2lz" + - "LjxnYXRld2F5LWRvbWFpbj4iCmBgYAoKSG9zdCBmaWVsZHMgY29udGFpbiBob3N0bmFtZXMgb25s" + - "eSwgd2l0aG91dCBhIFVSTCBzY2hlbWUuIGBJQ01TX1VSTGAgbWFwcyBvbmx5CnRvIHRoZSByZWdp" + - "c3RyYXRpb24gY29tbWFuZCdzIGAtLWljbXMtdXJsYDsgYGljbXNfaG9zdGAgaW4gdGhlIGNvbmZp" + - "ZyBzdXBwbGllcwp0aGUgR2F0ZXdheSBIb3N0IGhlYWRlci4gVGhlcmUgaXMgbm8gYC0taWNtcy1o" + - "b3N0YCBNYWtlIG9yIENMSSBmbGFnLgoKUmVnaXN0ZXIgZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0" + - "LCB0aGVuIGluc3RhbGwgdGhlIGNvbXB1dGUgcGxhbmU6CgpgYGBiYXNoCm1ha2UgLUMgZGVwbG95" + - "L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVnaXN0ZXItY2x1c3RlciBcCiAgQ0xVU1RFUl9O" + - "QU1FPTxjbHVzdGVyLW5hbWU+IFwKICBOQ0FfSUQ9PG5jYS1pZD4gXAogIENMVVNURVJfUkVHSU9O" + - "PTxyZWdpb24+IFwKICBJQ01TX1VSTD1odHRwOi8vPGdhdGV3YXktYWRkcmVzcz4gXAogIEtVQkVD" + - "T05GSUdfRklMRT08Y29tcHV0ZS1wbGFuZS1rdWJlY29uZmlnPiBcCiAgTlZDRl9DTEk9PHBhdGgt" + - "dG8tbnZjZi1jbGk+IFwKICBOVkNGX0NMSV9DT05GSUc9PHBhdGgtdG8tbnZjZi1jbGktY29uZmln" + - "PgoKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBpbnN0YWxsIFwKICBD" + - "TFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VC" + - "RUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKUmVnaXN0cmF0aW9u" + - "IGRpc2NvdmVycyB0aGUgT0lEQyBpc3N1ZXIgYW5kIEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBrdWJl" + - "IGNvbnRleHQuCkluIGEgbXVsdGktY2x1c3RlciBkZXBsb3ltZW50LCBgS1VCRUNPTkZJR19GSUxF" + - "YCBpcyByZXF1aXJlZCBvbiBib3RoCmNvbXB1dGUtcGxhbmUgY29tbWFuZHMuIEluIGEgc2FtZS1j" + - "bHVzdGVyIGRlcGxveW1lbnQgaXQgbWF5IGJlIG9taXR0ZWQgb25seQp3aGVuIHRoZSBhbWJpZW50" + - "IGNvbnRleHQgaXMgYWxyZWFkeSB0aGUgdGFyZ2V0IGNsdXN0ZXIuCgojIyBDTEkgUHJvZmlsZSBG" + - "bG93CgpSdW4gdGhlIENMSSBjb250cm9sLXBsYW5lIGluc3RhbGwgZmlyc3QuIEl0IGNyZWF0ZXMg" + - "dGhlIHByb2ZpbGUgY29uc3VtZWQgYnkKY29tcHV0ZS1wbGFuZSByZWdpc3RyYXRpb246CgpgYGBi" + - "YXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wt" + - "cGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFu" + - "ZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4g" + - "XAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + - "bnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0" + - "PiBcCiAgaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmUgXAogIC0tY2x1c3Rlci1uYW1lIDxjb250cm9s" + - "LXBsYW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tcmVnaW9uIDxyZWdpb24+IFwKICAtLW5jYS1pZCA8" + - "bmNhLWlkPgoKdGVzdCAtcyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1w" + - "bGFuZS1wcm9maWxlLnlhbWwKYGBgCgpVc2UgdGhlIGZ1bGwgcGVyc2lzdGVudCBwcmVmaXggZm9y" + - "IGJvdGggY29tcHV0ZS1wbGFuZSBjb21tYW5kczoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcg" + + "Y2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBgCgpSZWFkIGBjbHVzdGVySURg" + + "IGFuZCBgbmNhSURgIGZyb20KYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL3JlZ2lz" + + "dHJhdGlvbi88Y2x1c3Rlci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuClNob3cgdGhlIGV4" + + "YWN0IGNsdXN0ZXIgSUQgYW5kIGdldCBjb25maXJtYXRpb24gYmVmb3JlIGBjbHVzdGVyIGRlbGV0" + + "ZWAuIFJlcGVhdApjb21wdXRlIGRlc3Ryb3kgYW5kIGRlcmVnaXN0cmF0aW9uIGZvciBldmVyeSBj" + + "b21wdXRlIGNsdXN0ZXIsIHRoZW4gZGVzdHJveSB0aGUKY29udHJvbCBwbGFuZS4KCmBgYGJhc2gK" + + "S1VCRUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBcCm1ha2UgLUMgZGVwbG95L3N0" + + "YWNrcy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJF" + + "Q09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpCb3RoIGBLVUJFQ09O" + + "RklHYCBhbmQgYEtVQkVDT05GSUdfRklMRWAgYXJlIHJlcXVpcmVkIG9uIHRoZSBjb250cm9sLXBs" + + "YW5lCmRlc3Ryb3kgYmVjYXVzZSBpdHMgbmFtZXNwYWNlIGNsZWFudXAgdXNlcyBhbWJpZW50IGBr" + + "dWJlY3RsYC4KCkZvciB0aGUgQ0xJIHByb2ZpbGUgZmxvdywga2VlcApgZGVwbG95L3N0YWNrcy9u" + + "dmNmLWNvbXB1dGUtcGxhbmUvb3V0LzxjbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1s" + + "YAp1bnRpbCB0ZWFyZG93biBjb21wbGV0ZXMgYmVjYXVzZSBgZG93bmAgcmVhZHMgaXRzIGNsdXN0" + + "ZXIgSUQuIEZpcnN0IHF1ZXJ5IHRoZQpsaXZlIHJlZ2lzdHJhdGlvbiBzZXQgd2l0aCB0aGUgc2Ft" + + "ZSBjb21wbGV0ZSBwZXJzaXN0ZW50IHByZWZpeDoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcg" + "PGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3Rh" + "Y2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mv" + - "bnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgY29tcHV0" + - "ZS1wbGFuZSByZWdpc3RlciBcCiAgLS1jb250cm9sLXBsYW5lLXByb2ZpbGUgZGVwbG95L3N0YWNr" + - "cy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sIFwKICAtLWNsdXN0" + - "ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAtLWt1YmUtY29udGV4dCA8" + - "Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1yZWdpb24gPHJlZ2lvbj4gXAogIC0tb3V0cHV0" + - "IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVz" + - "dGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sCgpudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmln" + - "PiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2Vs" + - "Zi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNv" + - "bXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWluIFwKICBjb21wdXRlLXBsYW5l" + - "IGluc3RhbGwgXAogIC0tdmFsdWVzIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291" + - "dC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sIFwKICAt" + - "LWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1jbHVzdGVyLW5hbWUg" + - "PGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPgpgYGAKClJlZ2lzdHJhdGlvbiBzZWxlY3RzIHRo" + - "ZSBwcm9maWxlJ3MgaW4tY2x1c3RlciBvciBjb21wdXRlLXJlYWNoYWJsZSBlbmRwb2ludHMKZnJv" + - "bSB0aGUgY29tcHV0ZSBjb250ZXh0IGFuZCBwcm9iZXMgaXRzIEpXS1MuIERvIG5vdCByZXBsYWNl" + - "IHByb2ZpbGUgZW5kcG9pbnRzCndpdGggaGFuZC1hdXRob3JlZCBIZWxtZmlsZSBlbmRwb2ludCB2" + - "YWx1ZXMuCgojIyBQdWxsIFNlY3JldHMKCkNyZWF0ZSB0aGUgY29udHJvbC1wbGFuZSBzZWNyZXQg" + - "aW4gdGhlc2UgbmFtZXNwYWNlcyBvbiB0aGUgY29udHJvbC1wbGFuZQpjb250ZXh0OgoKYGBgdGV4" + - "dApjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVs" + - "dC1zeXN0ZW0gY2VydC1tYW5hZ2VyCmBgYAoKT24gdGhlIGNvbXB1dGUgY29udGV4dCwgY3JlYXRl" + - "IHRoZSBzZWNyZXQgb25seSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIHJlZmVyZW5jZQppdCB0aHJv" + - "dWdoIGBnbG9iYWwuaW1hZ2VQdWxsU2VjcmV0c2AgaW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJv" + - "bm1lbnQuIFRoZSBjaGFydAphbmQgb3BlcmF0b3IgdXNlIGl0IGluIGBudmNhLW9wZXJhdG9yYCBh" + - "bmQgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBhZGQKZWl0aGVyIG5hbWVzcGFj" + - "ZSB0byB0aGUgY29udHJvbC1wbGFuZSBsaXN0LiBGb3IgY29tbWFuZHMgYW5kIHBvbGljeSBleGFt" + - "cGxlcywKc2VlIFtwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0cy5tZCkuCgojIyBWZXJpZmlj" + - "YXRpb24KClVzZSB0aGUgZXhwbGljaXQgR2F0ZXdheSBuYW1lIGFuZCBuYW1lc3BhY2U6CgpgYGBi" + - "YXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5" + - "IG52Y2YtZ2F0ZXdheSBcCiAgLW4gZW52b3ktZ2F0ZXdheSAtbyB3aWRlCmt1YmVjdGwgLS1jb250" + - "ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCB0Y3Byb3V0ZSAtbiBlbnZveS1nYXRld2F5" + - "Cmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IHJvbGxvdXQgc3RhdHVz" + - "IFwKICBkZXBsb3ltZW50L252Y2Etb3BlcmF0b3IgLW4gbnZjYS1vcGVyYXRvciAtLXRpbWVvdXQ9" + - "MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IHdhaXQgXAogIG52" + - "Y2ZiYWNrZW5kLzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4gLW4gbnZjYS1vcGVyYXRvciBc" + - "CiAgLS1mb3I9anNvbnBhdGg9J3suc3RhdHVzLmFnZW50U3RhdHVzfSc9aGVhbHRoeSAtLXRpbWVv" + - "dXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGdldCBzZWNy" + - "ZXQgPHB1bGwtc2VjcmV0PiAtbiBudmNhLXN5c3RlbQpgYGAKCiMjIFRlYXJkb3duCgpEZXN0cm95" + - "IGFuZCBkZXJlZ2lzdGVyIGV2ZXJ5IGNvbXB1dGUgcGxhbmUgYmVmb3JlIHRoZSBjb250cm9sIHBs" + - "YW5lLiBCb3RoCmhhbmRvZmZzIGNhbiBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBzbyBhcHBs" + - "eSB0aGlzIHByZWZsaWdodCBiZWZvcmUgZWl0aGVyCm9uZS4gUHJlc2VydmUgdGhlIGBjZXJ0LW1h" + - "bmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3BhY2UgcHJlc2VydmF0aW9uCmRvZXMg" + - "bm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIElkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5h" + - "Z2VyIGlzIGV4dGVybmFsLgpGb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVm" + - "ZmVjdGl2ZSBgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgCmFuZCBhYm9ydCBpZiBpdCBpcyB0" + - "cnVlLiBGb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZl" + - "CmBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0g" + - "cmVsZWFzZSBtZXRhZGF0YSBhbmQKYWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRl" + - "bmNlLiBPbmx5IHBsYW4gbmFtZXNwYWNlIHJlbW92YWwgYWZ0ZXIKdmVyaWZ5aW5nIG5hbWVzcGFj" + - "ZSBwcm92ZW5hbmNlIGFuZCBnZXR0aW5nIGV4cGxpY2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNl" + - "CmRvIG5vdCBkZWxldGUgaXQuCgpGb3IgdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93LCByZXRhaW4g" + - "ZWFjaCByZWdpc3RyYXRpb24gdmFsdWVzIGZpbGUgdW50aWwKY2xlYW51cCBpcyB2ZXJpZmllZDoK" + - "CmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95" + - "IFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBc" + - "CiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+Cgo8bnZjZi1jbGk+" + - "IC0tY29uZmlnIDxjb25maWc+IGNsdXN0ZXIgZGVsZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0" + - "ZXItaWQtZnJvbS1yZWdpc3RyYXRpb24tdmFsdWVzPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAog" + - "IC0taWdub3JlLW1pc3NpbmcKYGBgCgpSZWFkIGBjbHVzdGVySURgIGFuZCBgbmNhSURgIGZyb20K" + - "YGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL3JlZ2lzdHJhdGlvbi88Y2x1c3Rlci1u" + - "YW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuClNob3cgdGhlIGV4YWN0IGNsdXN0ZXIgSUQgYW5k" + - "IGdldCBjb25maXJtYXRpb24gYmVmb3JlIGBjbHVzdGVyIGRlbGV0ZWAuIFJlcGVhdApjb21wdXRl" + - "IGRlc3Ryb3kgYW5kIGRlcmVnaXN0cmF0aW9uIGZvciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRo" + - "ZW4gZGVzdHJveSB0aGUKY29udHJvbCBwbGFuZS4KCmBgYGJhc2gKS1VCRUNPTkZJRz08Y29udHJv" + - "bC1wbGFuZS1rdWJlY29uZmlnPiBcCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQg" + - "ZGVzdHJveSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRy" + - "b2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpCb3RoIGBLVUJFQ09ORklHYCBhbmQgYEtVQkVDT05G" + - "SUdfRklMRWAgYXJlIHJlcXVpcmVkIG9uIHRoZSBjb250cm9sLXBsYW5lCmRlc3Ryb3kgYmVjYXVz" + - "ZSBpdHMgbmFtZXNwYWNlIGNsZWFudXAgdXNlcyBhbWJpZW50IGBrdWJlY3RsYC4KCkZvciB0aGUg" + - "Q0xJIHByb2ZpbGUgZmxvdywga2VlcApgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUv" + - "b3V0LzxjbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYAp1bnRpbCB0ZWFyZG93biBj" + - "b21wbGV0ZXMgYmVjYXVzZSBgZG93bmAgcmVhZHMgaXRzIGNsdXN0ZXIgSUQuIEZpcnN0IHF1ZXJ5" + - "IHRoZQpsaXZlIHJlZ2lzdHJhdGlvbiBzZXQgd2l0aCB0aGUgc2FtZSBjb21wbGV0ZSBwZXJzaXN0" + - "ZW50IHByZWZpeDoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0" + - "ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBc" + - "CiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5l" + - "IFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQg" + - "PGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21w" + - "dXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21z" + - "LXVybD4gXAogIHN0YXR1cyBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rl" + - "ci1uYW1lPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4KYGBgCgpTaG93IHRoZSByZWdpc3RlcmVkIGNv" + - "bXB1dGUtcGxhbmUgbGlzdC4gTmFtZWQtY2x1c3RlciBgZG93biAtLXBsYW4tb25seWAgZG9lcwpu" + - "b3QgcXVlcnkgSUNNUywgc28gaXQgcHJldmlld3Mgb25seSB0aGF0IGNvbXB1dGUgcGxhbmUgYW5k" + - "IGNhbm5vdCBzaG93IHRoZQpjb25kaXRpb25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwuIElmIHRo" + - "ZSB0YXJnZXQgaXMgdGhlIGxhc3QgcmVnaXN0ZXJlZApjbHVzdGVyLCByZWFsIGBkb3duYCBhbHNv" + - "IGRlc3Ryb3lzIHRoZSBjb250cm9sIHBsYW5lLiBHZXQgZXhwbGljaXQgY29uZmlybWF0aW9uCmZv" + - "ciBib3RoIHJlbW92YWxzIGJlZm9yZSBjb250aW51aW5nLiBUaGVuIHByZXZpZXcgYW5kIGV4ZWN1" + - "dGUgd2l0aCB0aGUgc2FtZQpwcmVmaXg6CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25m" + - "aWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9z" + - "ZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2Yt" + - "Y29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1w" + - "bGFuZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUt" + - "Y29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1pY21zLXVybCA8Y29tcHV0ZS1y" + - "ZWFjaGFibGUtaWNtcy11cmw+IFwKICBkb3duIC0tcGxhbi1vbmx5IFwKICAtLWNsdXN0ZXItbmFt" + - "ZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKbnZj" + - "Zi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1z" + - "dGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNr" + - "IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1w" + - "bGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4g" + - "XAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAt" + - "LWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAogIGRvd24gXAogIC0tY2x1" + - "c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tbmNhLWlkIDxuY2Et" + - "aWQ+CmBgYAoKUmVwZWF0IGBkb3duYCBmb3IgZWFjaCBjb21wdXRlIGNsdXN0ZXIuIEVhY2ggcnVu" + - "IGRlc3Ryb3lzIHRoYXQgY29tcHV0ZSBwbGFuZSBhbmQKdW5yZWdpc3RlcnMgaXRzIElDTVMgcm93" + - "LiBJdCByZW1vdmVzIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgbm8gY2x1c3RlcgpyZWdp" + - "c3RyYXRpb25zIHJlbWFpbi4KUEsHCJZjvFkSMAAAEjAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAA" + - "AAAAOwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvZGVi" + - "dWdnaW5nLm1kVVQFAAEAps4SIyBEZWJ1Z2dpbmcgUmVmZXJlbmNlCgpSZWNpcGVzIGZvciBkaWFn" + - "bm9zaW5nIGFuZCBmaXhpbmcgY29tbW9uIE5WQ0Ygc2VsZi1tYW5hZ2VkIHN0YWNrIGZhaWx1cmVz" + - "LgoKIyMgUXVpY2sgU3RhdHVzIENvbW1hbmRzCgpgYGBiYXNoCiMgQWxsIHBvZHMgYWNyb3NzIGFs" + - "bCBuYW1lc3BhY2VzCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLW8gd2lkZQoKIyBQb2RzIGluIGEgc3Bl" + - "Y2lmaWMgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHBvZHMgLW4gPG5hbWVzcGFjZT4KCiMgQWxsIGhl" + - "bG0gcmVsZWFzZXMKaGVsbSBsaXN0IC1BCgojIFJlY2VudCBldmVudHMgKG1vc3QgdXNlZnVsIGZv" + - "ciBkaWFnbm9zaW5nIGZhaWx1cmVzKQprdWJlY3RsIGdldCBldmVudHMgLW4gPG5hbWVzcGFjZT4g" + - "LS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcKCiMgRGVzY3JpYmUgYSBzcGVjaWZpYyBwb2QgKHNo" + - "b3dzIGV2ZW50cywgY29uZGl0aW9ucywgdm9sdW1lcykKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4g" + - "PG5hbWVzcGFjZT4gPHBvZC1uYW1lPgpgYGAKCiMjIEZhaWx1cmU6IEltYWdlUHVsbEJhY2tPZmYK" + - "CiMjIyBTeW1wdG9tcwoKYGBgdGV4dApOQU1FICAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICAg" + - "ICAgICAgICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5kcmEtMCAgICAwLzEgICAgIEltYWdlUHVsbEJh" + - "Y2tPZmYgICAwICAgICAgICAgIDVtCmBgYAoKRXZlbnRzIHNob3c6CgpgYGB0ZXh0CkZhaWxlZCB0" + - "byBwdWxsIGltYWdlICJudmNyLmlvLy4uLi9pbWFnZTp0YWciOiA0MDEgVW5hdXRob3JpemVkCmBg" + - "YAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIHdoYXQgaW1hZ2UgaXMgZmFpbGluZwpr" + - "dWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IHwgZ3JlcCAtQTUg" + - "IkV2ZW50czoiCgojIENoZWNrIGlmIHB1bGwgc2VjcmV0IGV4aXN0cyBpbiB0aGUgbmFtZXNwYWNl" + - "Cmt1YmVjdGwgZ2V0IHNlY3JldCBudmNyLWNyZWRzIC1uIDxuYW1lc3BhY2U+CgojIENoZWNrIGlm" + - "IHRoZSBwb2Qgc3BlYyBoYXMgaW1hZ2VQdWxsU2VjcmV0cwprdWJlY3RsIGdldCBwb2QgLW4gPG5h" + - "bWVzcGFjZT4gPHBvZC1uYW1lPiAtbyBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9" + - "JwoKIyBDaGVjayBpZiB0aGUgU2VydmljZUFjY291bnQgaGFzIGltYWdlUHVsbFNlY3JldHMKa3Vi" + - "ZWN0bCBnZXQgc2EgPHNhLW5hbWU+IC1uIDxuYW1lc3BhY2U+IC1vIGpzb25wYXRoPSd7LmltYWdl" + - "UHVsbFNlY3JldHN9JwpgYGAKCiMjIyBGaXhlcwoKMS4gKipTZWNyZXQgbWlzc2luZyBpbiBuYW1l" + - "c3BhY2UqKjogQ3JlYXRlIGl0CgogICBgYGBiYXNoCiAgIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBk" + - "b2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8g" + - "XAogICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAgIC0tZG9ja2VyLXBh" + - "c3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgICAtLW5hbWVzcGFjZT08bmFtZXNwYWNlPiBcCiAg" + - "ICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCiAgIGBgYAoK" + - "Mi4gKipTZWNyZXQgZXhpc3RzIGJ1dCBwb2QgZG9lc24ndCByZWZlcmVuY2UgaXQqKjogVGhlIGNo" + - "YXJ0IG5lZWRzIGBpbWFnZVB1bGxTZWNyZXRzYCBjb25maWd1cmVkIHZpYSBoZWxtZmlsZSB2YWx1" + - "ZXMuIFNlZSBbcHVsbC1zZWNyZXRzLm1kXShwdWxsLXNlY3JldHMubWQpLgoKMy4gKipDaGFydCBk" + - "b2Vzbid0IHN1cHBvcnQgaW1hZ2VQdWxsU2VjcmV0cyoqIChvcGVuYmFvLCBpbnZvY2F0aW9uLXNl" + - "cnZpY2UsIGVzcy1hcGksIG5vdGFyeS1zZXJ2aWNlKTogUGF0Y2ggU2VydmljZUFjY291bnRzIGFu" + - "ZCByZXN0YXJ0IHBvZHMuIFNlZSBbcHVsbC1zZWNyZXRzLm1kXShwdWxsLXNlY3JldHMubWQpLgoK" + - "NC4gKipXcm9uZyBjcmVkZW50aWFscyBpbiBzZWNyZXQqKjogRGVsZXRlIGFuZCByZWNyZWF0ZQoK" + - "ICAgYGBgYmFzaAogICBrdWJlY3RsIGRlbGV0ZSBzZWNyZXQgbnZjci1jcmVkcyAtbiA8bmFtZXNw" + - "YWNlPgogICAjIFJlY3JlYXRlIHdpdGggY29ycmVjdCBjcmVkZW50aWFscwogICBgYGAKCiMjIEZh" + - "aWx1cmU6IEluaXQ6MC8xIFN0dWNrIChWYXVsdCBBZ2VudCkKCiMjIyBTeW1wdG9tcwoKU2Vydmlj" + - "ZSBwb2RzIHN0dWNrIGluIGBJbml0OjAvMWAgZm9yIG1pbnV0ZXM6CgpgYGBiYXNoCk5BTUUgICAg" + - "ICAgICAgICAgICAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICAgUkVTVEFSVFMgICBBR0UKbnZj" + - "Zi1hcGktN2Y0Yzc2Zjc4OC00NHZsdCAgMC8yICAgICBJbml0OjAvMSAgIDAgICAgICAgICAgMTBt" + - "CmBgYAoKIyMjIERpYWdub3NpcwoKVGhlIGluaXQgY29udGFpbmVyIGlzIHRoZSB2YXVsdC1hZ2Vu" + - "dC1pbml0IGluamVjdG9yIHdhaXRpbmcgZm9yIE9wZW5CYW8uCgpgYGBiYXNoCiMgQ2hlY2sgT3Bl" + - "bkJhbyBwb2RzCmt1YmVjdGwgZ2V0IHBvZHMgLW4gdmF1bHQtc3lzdGVtCgojIENoZWNrIGlmIE9w" + - "ZW5CYW8gbWlncmF0aW9uIGpvYiByYW4Ka3ViZWN0bCBnZXQgam9icyAtbiB2YXVsdC1zeXN0ZW0K" + - "CiMgQ2hlY2sgT3BlbkJhbyBwb2QgbG9ncwprdWJlY3RsIGxvZ3MgLW4gdmF1bHQtc3lzdGVtIG9w" + - "ZW5iYW8tc2VydmVyLTAgLWMgb3BlbmJhbwoKIyBDaGVjayBpbml0IGNvbnRhaW5lciBsb2dzIG9u" + - "IHRoZSBzdHVjayBwb2QKa3ViZWN0bCBsb2dzIC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gLWMg" + - "dmF1bHQtYWdlbnQtaW5pdApgYGAKCiMjIyBGaXhlcwoKMS4gKipPcGVuQmFvIHBvZHMgbm90IHJ1" + - "bm5pbmcqKjogQ2hlY2sgdGhlaXIgZXZlbnRzIGZvciBpbWFnZSBwdWxsIGlzc3VlcywgcmVzb3Vy" + - "Y2UgaXNzdWVzLCBldGMuCgoyLiAqKk9wZW5CYW8gbWlncmF0aW9uIGpvYiBkaWRuJ3QgcnVuKio6" + - "IFRoaXMgaGFwcGVucyB3aGVuIGBoZWxtZmlsZSBzeW5jYCB3YXMgaW50ZXJydXB0ZWQuIERlc3Ry" + - "b3kgYW5kIHJlLXN5bmMgb3BlbmJhbzoKCiAgIGBgYGJhc2gKICAgSEVMTUZJTEVfRU5WPTxlbnY+" + - "IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBkZXN0cm95CiAgIGt1YmVj" + - "dGwgZGVsZXRlIG5hbWVzcGFjZSB2YXVsdC1zeXN0ZW0KICAga3ViZWN0bCBjcmVhdGUgbmFtZXNw" + - "YWNlIHZhdWx0LXN5c3RlbQogICAjIFJlLWNyZWF0ZSBwdWxsIHNlY3JldCBpZiBuZWVkZWQKICAg" + + "bnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250" + + "cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1w" + + "bGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21w" + + "dXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAogIHN0YXR1cyBcCiAgLS1jbHVzdGVyLW5hbWUgPGNv" + + "bXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4KYGBgCgpTaG93" + + "IHRoZSByZWdpc3RlcmVkIGNvbXB1dGUtcGxhbmUgbGlzdC4gTmFtZWQtY2x1c3RlciBgZG93biAt" + + "LXBsYW4tb25seWAgZG9lcwpub3QgcXVlcnkgSUNNUywgc28gaXQgcHJldmlld3Mgb25seSB0aGF0" + + "IGNvbXB1dGUgcGxhbmUgYW5kIGNhbm5vdCBzaG93IHRoZQpjb25kaXRpb25hbCBjb250cm9sLXBs" + + "YW5lIHJlbW92YWwuIElmIHRoZSB0YXJnZXQgaXMgdGhlIGxhc3QgcmVnaXN0ZXJlZApjbHVzdGVy" + + "LCByZWFsIGBkb3duYCBhbHNvIGRlc3Ryb3lzIHRoZSBjb250cm9sIHBsYW5lLiBHZXQgZXhwbGlj" + + "aXQgY29uZmlybWF0aW9uCmZvciBib3RoIHJlbW92YWxzIGJlZm9yZSBjb250aW51aW5nLiBUaGVu" + + "IHByZXZpZXcgYW5kIGV4ZWN1dGUgd2l0aCB0aGUgc2FtZQpwcmVmaXg6CgpgYGBiYXNoCm52Y2Yt" + + "Y2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3Rh" + + "Y2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBk" + + "ZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxh" + + "aW4gXAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IFwK" + + "ICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1p" + + "Y21zLXVybCA8Y29tcHV0ZS1yZWFjaGFibGUtaWNtcy11cmw+IFwKICBkb3duIC0tcGxhbi1vbmx5" + + "IFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAtLW5j" + + "YS1pZCA8bmNhLWlkPgoKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAog" + + "IC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1j" + + "b21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAt" + + "LWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRy" + + "b2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBs" + + "YW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4g" + + "XAogIGRvd24gXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4g" + + "XAogIC0tbmNhLWlkIDxuY2EtaWQ+CmBgYAoKUmVwZWF0IGBkb3duYCBmb3IgZWFjaCBjb21wdXRl" + + "IGNsdXN0ZXIuIEVhY2ggcnVuIGRlc3Ryb3lzIHRoYXQgY29tcHV0ZSBwbGFuZSBhbmQKdW5yZWdp" + + "c3RlcnMgaXRzIElDTVMgcm93LiBJdCByZW1vdmVzIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0" + + "ZXIgbm8gY2x1c3RlcgpyZWdpc3RyYXRpb25zIHJlbWFpbi4KUEsHCJZjvFkSMAAAEjAAAFBLAwQU" + + "AAgAAAAAACEAAAAAAAAAAAAAAAAAOwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0" + + "aW9uL3JlZmVyZW5jZXMvZGVidWdnaW5nLm1kVVQFAAEAps4SIyBEZWJ1Z2dpbmcgUmVmZXJlbmNl" + + "CgpSZWNpcGVzIGZvciBkaWFnbm9zaW5nIGFuZCBmaXhpbmcgY29tbW9uIE5WQ0Ygc2VsZi1tYW5h" + + "Z2VkIHN0YWNrIGZhaWx1cmVzLgoKIyMgUXVpY2sgU3RhdHVzIENvbW1hbmRzCgpgYGBiYXNoCiMg" + + "QWxsIHBvZHMgYWNyb3NzIGFsbCBuYW1lc3BhY2VzCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLW8gd2lk" + + "ZQoKIyBQb2RzIGluIGEgc3BlY2lmaWMgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHBvZHMgLW4gPG5h" + + "bWVzcGFjZT4KCiMgQWxsIGhlbG0gcmVsZWFzZXMKaGVsbSBsaXN0IC1BCgojIFJlY2VudCBldmVu" + + "dHMgKG1vc3QgdXNlZnVsIGZvciBkaWFnbm9zaW5nIGZhaWx1cmVzKQprdWJlY3RsIGdldCBldmVu" + + "dHMgLW4gPG5hbWVzcGFjZT4gLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcKCiMgRGVzY3JpYmUg" + + "YSBzcGVjaWZpYyBwb2QgKHNob3dzIGV2ZW50cywgY29uZGl0aW9ucywgdm9sdW1lcykKa3ViZWN0" + + "bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPgpgYGAKCiMjIEZhaWx1cmU6" + + "IEltYWdlUHVsbEJhY2tPZmYKCiMjIyBTeW1wdG9tcwoKYGBgdGV4dApOQU1FICAgICAgICAgICBS" + + "RUFEWSAgIFNUQVRVUyAgICAgICAgICAgICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5kcmEtMCAgICAw" + + "LzEgICAgIEltYWdlUHVsbEJhY2tPZmYgICAwICAgICAgICAgIDVtCmBgYAoKRXZlbnRzIHNob3c6" + + "CgpgYGB0ZXh0CkZhaWxlZCB0byBwdWxsIGltYWdlICJudmNyLmlvLy4uLi9pbWFnZTp0YWciOiA0" + + "MDEgVW5hdXRob3JpemVkCmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIHdoYXQg" + + "aW1hZ2UgaXMgZmFpbGluZwprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9k" + + "LW5hbWU+IHwgZ3JlcCAtQTUgIkV2ZW50czoiCgojIENoZWNrIGlmIHB1bGwgc2VjcmV0IGV4aXN0" + + "cyBpbiB0aGUgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHNlY3JldCBudmNyLWNyZWRzIC1uIDxuYW1l" + + "c3BhY2U+CgojIENoZWNrIGlmIHRoZSBwb2Qgc3BlYyBoYXMgaW1hZ2VQdWxsU2VjcmV0cwprdWJl" + + "Y3RsIGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiAtbyBqc29ucGF0aD0ney5zcGVj" + + "LmltYWdlUHVsbFNlY3JldHN9JwoKIyBDaGVjayBpZiB0aGUgU2VydmljZUFjY291bnQgaGFzIGlt" + + "YWdlUHVsbFNlY3JldHMKa3ViZWN0bCBnZXQgc2EgPHNhLW5hbWU+IC1uIDxuYW1lc3BhY2U+IC1v" + + "IGpzb25wYXRoPSd7LmltYWdlUHVsbFNlY3JldHN9JwpgYGAKCiMjIyBGaXhlcwoKMS4gKipTZWNy" + + "ZXQgbWlzc2luZyBpbiBuYW1lc3BhY2UqKjogQ3JlYXRlIGl0CgogICBgYGBiYXNoCiAgIGt1YmVj" + + "dGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAgLS1kb2Nr" + + "ZXItc2VydmVyPW52Y3IuaW8gXAogICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicg" + + "XAogICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgICAtLW5hbWVzcGFj" + + "ZT08bmFtZXNwYWNlPiBcCiAgICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBh" + + "cHBseSAtZiAtCiAgIGBgYAoKMi4gKipTZWNyZXQgZXhpc3RzIGJ1dCBwb2QgZG9lc24ndCByZWZl" + + "cmVuY2UgaXQqKjogVGhlIGNoYXJ0IG5lZWRzIGBpbWFnZVB1bGxTZWNyZXRzYCBjb25maWd1cmVk" + + "IHZpYSBoZWxtZmlsZSB2YWx1ZXMuIFNlZSBbcHVsbC1zZWNyZXRzLm1kXShwdWxsLXNlY3JldHMu" + + "bWQpLgoKMy4gKipDaGFydCBkb2Vzbid0IHN1cHBvcnQgaW1hZ2VQdWxsU2VjcmV0cyoqIChvcGVu" + + "YmFvLCBpbnZvY2F0aW9uLXNlcnZpY2UsIGVzcy1hcGksIG5vdGFyeS1zZXJ2aWNlKTogUGF0Y2gg" + + "U2VydmljZUFjY291bnRzIGFuZCByZXN0YXJ0IHBvZHMuIFNlZSBbcHVsbC1zZWNyZXRzLm1kXShw" + + "dWxsLXNlY3JldHMubWQpLgoKNC4gKipXcm9uZyBjcmVkZW50aWFscyBpbiBzZWNyZXQqKjogRGVs" + + "ZXRlIGFuZCByZWNyZWF0ZQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGRlbGV0ZSBzZWNyZXQgbnZj" + + "ci1jcmVkcyAtbiA8bmFtZXNwYWNlPgogICAjIFJlY3JlYXRlIHdpdGggY29ycmVjdCBjcmVkZW50" + + "aWFscwogICBgYGAKCiMjIEZhaWx1cmU6IEluaXQ6MC8xIFN0dWNrIChWYXVsdCBBZ2VudCkKCiMj" + + "IyBTeW1wdG9tcwoKU2VydmljZSBwb2RzIHN0dWNrIGluIGBJbml0OjAvMWAgZm9yIG1pbnV0ZXM6" + + "CgpgYGBiYXNoCk5BTUUgICAgICAgICAgICAgICAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICAg" + + "UkVTVEFSVFMgICBBR0UKbnZjZi1hcGktN2Y0Yzc2Zjc4OC00NHZsdCAgMC8yICAgICBJbml0OjAv" + + "MSAgIDAgICAgICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoKVGhlIGluaXQgY29udGFpbmVy" + + "IGlzIHRoZSB2YXVsdC1hZ2VudC1pbml0IGluamVjdG9yIHdhaXRpbmcgZm9yIE9wZW5CYW8uCgpg" + + "YGBiYXNoCiMgQ2hlY2sgT3BlbkJhbyBwb2RzCmt1YmVjdGwgZ2V0IHBvZHMgLW4gdmF1bHQtc3lz" + + "dGVtCgojIENoZWNrIGlmIE9wZW5CYW8gbWlncmF0aW9uIGpvYiByYW4Ka3ViZWN0bCBnZXQgam9i" + + "cyAtbiB2YXVsdC1zeXN0ZW0KCiMgQ2hlY2sgT3BlbkJhbyBwb2QgbG9ncwprdWJlY3RsIGxvZ3Mg" + + "LW4gdmF1bHQtc3lzdGVtIG9wZW5iYW8tc2VydmVyLTAgLWMgb3BlbmJhbwoKIyBDaGVjayBpbml0" + + "IGNvbnRhaW5lciBsb2dzIG9uIHRoZSBzdHVjayBwb2QKa3ViZWN0bCBsb2dzIC1uIDxuYW1lc3Bh" + + "Y2U+IDxwb2QtbmFtZT4gLWMgdmF1bHQtYWdlbnQtaW5pdApgYGAKCiMjIyBGaXhlcwoKMS4gKipP" + + "cGVuQmFvIHBvZHMgbm90IHJ1bm5pbmcqKjogQ2hlY2sgdGhlaXIgZXZlbnRzIGZvciBpbWFnZSBw" + + "dWxsIGlzc3VlcywgcmVzb3VyY2UgaXNzdWVzLCBldGMuCgoyLiAqKk9wZW5CYW8gbWlncmF0aW9u" + + "IGpvYiBkaWRuJ3QgcnVuKio6IFRoaXMgaGFwcGVucyB3aGVuIGBoZWxtZmlsZSBzeW5jYCB3YXMg" + + "aW50ZXJydXB0ZWQuIERlc3Ryb3kgYW5kIHJlLXN5bmMgb3BlbmJhbzoKCiAgIGBgYGJhc2gKICAg" + "SEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZl" + - "ciBzeW5jCiAgIGBgYAoKMy4gKipPcGVuQmFvIHBvZHMgcnVubmluZyBidXQgbm90IGluaXRpYWxp" + - "emVkKio6IENoZWNrIHVuc2VhbCBzdGF0dXM6CgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZXhlYyAt" + - "biB2YXVsdC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXItMCAtYyBvcGVuYmFvIC0tIGJhbyBzdGF0dXMK" + - "ICAgYGBgCgo0LiAqKmB2YXVsdC1hZ2VudC1pbml0YCBsb2dzIGBhdXRoL2p3dC9sb2dpbmAgLT4g" + - "YDQwMCAuLi4gbm8ga25vd24ga2V5IHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQgdGhlIHRva2VuIHNp" + - "Z25hdHVyZWAqKgogICAoY29tbW9uIG9uIEFLUywgYW5kIG9uIGFueSBjbHVzdGVyIHdob3NlIE9J" + - "REMgaXNzdWVyIHB1Ymxpc2hlcyBhIHJvdGF0aW5nIG11bHRpLWtleSBKV0tTKToKICAgdGhlIE9w" + - "ZW5CYW8gYGF1dGgvand0YCBtZXRob2Qgd2FzIGNvbmZpZ3VyZWQgd2l0aCBhIHNpbmdsZSBzdGF0" + - "aWMgbW91bnRlZCBwdWJsaWMga2V5CiAgIChgand0X3ZhbGlkYXRpb25fcHVia2V5c2ApIGluc3Rl" + - "YWQgb2YgdGhlIGlzc3VlcidzIGxpdmUgSldLUywgc28gaXQgY2Fubm90IHZhbGlkYXRlIHRoZQog" + - "ICBjbHVzdGVyLXNpZ25lZCBTZXJ2aWNlQWNjb3VudCB0b2tlbnMgdGhlIHZhdWx0LWFnZW50cyBw" + - "cmVzZW50LiBFdmVyeSBzZXJ2aWNlJ3MKICAgYHZhdWx0LWFnZW50LWluaXRgIHRoZW4gbG9vcHMg" + - "b24gdGhhdCA0MDAgYW5kIHRoZSBwb2QgbmV2ZXIgbGVhdmVzIGBJbml0OjAvMWAuIFRoaXMgaXMg" + - "dGhlCiAgIGJlaGF2aW9yIG9mIHRoZSBiYXNlIGRlZmF1bHQgYG9wZW5iYW8ubWlncmF0aW9ucy5p" + - "c3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2VgOyB0aGUKICAgbWlncmF0aW9uIGxvZyBzaG93" + - "cyBgT0lEQyBpc3N1ZXIgZGlzY292ZXJ5IGlzIGRpc2FibGVkLiBVc2luZyBTZXJ2aWNlQWNjb3Vu" + - "dCBpc3N1ZXIgYW5kCiAgIG1vdW50ZWQgcHVibGljIGtleSBmYWxsYmFja2AuIEVuYWJsZSBpc3N1" + - "ZXIgZGlzY292ZXJ5IHNvIHRoZSBtaWdyYXRpb24gdXNlcyB0aGUgbGl2ZSBKV0tTLAogICB0aGVu" + - "IHJlLXJ1biBpdDoKCiAgIGBgYGJhc2gKICAgIyBJbiB5b3VyIGVudiB2YWx1ZXMgKGUuZy4gZW52" + - "aXJvbm1lbnRzLzxlbnY+LnlhbWwpLCBzZXQ6CiAgICMgICBvcGVuYmFvOgogICAjICAgICBtaWdy" + - "YXRpb25zOgogICAjICAgICAgIGlzc3VlckRpc2NvdmVyeToKICAgIyAgICAgICAgIGVuYWJsZWQ6" + - "IHRydWUKICAga3ViZWN0bCBkZWxldGUgam9iIC1uIHZhdWx0LXN5c3RlbSBvcGVuYmFvLXNlcnZl" + - "ci1taWdyYXRpb25zCiAgIEhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5h" + - "bWU9b3BlbmJhby1zZXJ2ZXIgc3luYwogICBgYGAKCiAgIFRoZSBtaWdyYXRpb24gbG9nIHNob3Vs" + - "ZCB0aGVuIHNob3cgYFJlY2VpdmVkIGRpc2NvdmVyeSBkb2N1bWVudCBmcm9tCiAgIC4uLi8ud2Vs" + - "bC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbmAgYW5kIGBGaW5hbCBPcGVuQmFvIEpXVCBKV0tT" + - "IFVSTCBzZXQgdG86CiAgIC4uLi9vcGVuaWQvdjEvandrc2AsIGFuZCB0aGUgc2VydmljZSBwb2Rz" + - "IGF1dGhlbnRpY2F0ZSBhbmQgcmVhY2ggUmVhZHkgd2l0aGluIH4xIG1pbi4KICAgQUtTIGNsdXN0" + - "ZXJzIHdpdGggdGhlIGNsdXN0ZXIgT0lEQyBpc3N1ZXIgZW5hYmxlZCAodGhlIGBha3MtY2x1c3Rl" + - "cmAgZGVmYXVsdCkgYWx3YXlzIG5lZWQKICAgdGhpcyBiZWNhdXNlIHRoZSBzdGF0aWMtcHVia2V5" + - "IGZhbGxiYWNrIGNhbm5vdCBtYXRjaCB0aGUgaXNzdWVyJ3Mgcm90YXRpbmcgc2lnbmluZyBrZXlz" + - "LgoKIyMgRmFpbHVyZTogT09NS2lsbGVkIG9uIENhc3NhbmRyYQoKIyMjIFN5bXB0b21zCgpgYGB0" + - "ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMgICAgUkVTVEFSVFMgICBBR0UKY2Fzc2Fu" + - "ZHJhLTAgICAwLzEgICAgIE9PTUtpbGxlZCAgMyAgICAgICAgIDEwbQpgYGAKCiMjIyBEaWFnbm9z" + - "aXMKCmBgYGJhc2gKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gY2Fzc2FuZHJhLXN5c3RlbSBjYXNz" + - "YW5kcmEtMCB8IGdyZXAgLUEzICJMYXN0IFN0YXRlIgpgYGAKCiMjIyBGaXgKCk92ZXJyaWRlIENh" + - "c3NhbmRyYSByZXNvdXJjZXMgdmlhIGhlbG1maWxlIHZhbHVlcy4gU2VlIEV4YW1wbGUgMSBpbgpb" + - "ZXhhbXBsZXMubWRdKC4uL2V4YW1wbGVzLm1kKS4KCmBgYHlhbWwKLSBjYXNzYW5kcmE6CiAgICBy" + - "ZXNvdXJjZXM6CiAgICAgIGxpbWl0czoKICAgICAgICBjcHU6ICI4IgogICAgICAgIG1lbW9yeTog" + - "ODE5Mk1pCiAgICAgIHJlcXVlc3RzOgogICAgICAgIGNwdTogIjIiCiAgICAgICAgbWVtb3J5OiA0" + - "MDk2TWkKYGBgCgpOb3RlOiBgcmVzb3VyY2VQcmVzZXRgIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhl" + - "IE5WQ0YgY2Fzc2FuZHJhIHdyYXBwZXIgY2hhcnQuIFVzZSBleHBsaWNpdCBgcmVzb3VyY2VzYC4K" + - "CiMjIEZhaWx1cmU6IFBvZHMgU3R1Y2sgaW4gUGVuZGluZwoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0" + - "Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMgICAgUkVTVEFSVFMgICBBR0UKY2Fzc2FuZHJh" + - "LTAgICAwLzEgICAgIFBlbmRpbmcgICAwICAgICAgICAgIDEwbQpgYGAKCiMjIyBEaWFnbm9zaXMK" + - "CmBgYGJhc2gKIyBDaGVjayBldmVudHMgZm9yIHNjaGVkdWxpbmcgZmFpbHVyZXMKa3ViZWN0bCBk" + - "ZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPgoKIyBDb21tb24gY2F1c2VzOgoj" + - "IC0gIjAvMTIgbm9kZXMgYXJlIGF2YWlsYWJsZTogMTIgbm9kZShzKSBkaWRuJ3QgbWF0Y2ggUG9k" + - "J3Mgbm9kZSBhZmZpbml0eSIKIyAtICIwLzEyIG5vZGVzIGFyZSBhdmFpbGFibGU6IDEyIEluc3Vm" + - "ZmljaWVudCBtZW1vcnkiCiMgLSAicGVyc2lzdGVudHZvbHVtZWNsYWltIG5vdCBmb3VuZCIKYGBg" + - "CgojIyMgRml4ZXMKCjEuICoqTm9kZSBzZWxlY3RvciBtaXNtYXRjaCoqOiBDaGVjayBgbm9kZVNl" + - "bGVjdG9yc2AgaW4gZW52aXJvbm1lbnQgZmlsZQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBu" + - "b2RlcyAtLXNob3ctbGFiZWxzIHwgZ3JlcCBudmNmCiAgIGBgYAoKMi4gKipTdG9yYWdlIGNsYXNz" + - "IG5vdCBmb3VuZCoqOiBDaGVjayBzdG9yYWdlIGNsYXNzIGV4aXN0cwoKICAgYGBgYmFzaAogICBr" + - "dWJlY3RsIGdldCBzdG9yYWdlY2xhc3MKICAgYGBgCgozLiAqKkluc3VmZmljaWVudCByZXNvdXJj" + - "ZXMqKjogQ2hlY2sgbm9kZSBjYXBhY2l0eQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGRlc2NyaWJl" + - "IG5vZGUgPG5vZGUtbmFtZT4gfCBncmVwIC1BNSAiQWxsb2NhdGVkIHJlc291cmNlcyIKICAgYGBg" + - "CgojIyBGYWlsdXJlOiBIZWxtIFJlbGVhc2UgaW4gRmFpbGVkIFN0YXRlCgojIyMgU3ltcHRvbXMK" + - "CmBgYGJhc2gKaGVsbSBsaXN0IC1BCiMgU2hvd3MgcmVsZWFzZSB3aXRoIFNUQVRVUzogZmFpbGVk" + - "CmBgYAoKUmUtcnVubmluZyBgaGVsbWZpbGUgc3luY2AgYXBwZWFycyB0byBzdWNjZWVkIGJ1dCBz" + - "ZXJ2aWNlcyBkb24ndCB3b3JrIChtaWdyYXRpb25zIHNraXBwZWQpLgoKIyMjIERpYWdub3NpcwoK" + - "YGBgYmFzaApoZWxtIGhpc3RvcnkgPHJlbGVhc2UtbmFtZT4gLW4gPG5hbWVzcGFjZT4KYGBgCgoj" + - "IyMgRml4CgpNdXN0IGRlc3Ryb3kgdGhlIGZhaWxlZCByZWxlYXNlIGFuZCByZS1zeW5jIChub3Qg" + - "anVzdCBhcHBseSk6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVj" + - "dG9yIG5hbWU9PHJlbGVhc2U+IGRlc3Ryb3kKIyBJZiBuYW1lc3BhY2UgbmVlZHMgY2xlYW51cDoK" + - "a3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIDxuYW1lc3BhY2U+Cmt1YmVjdGwgY3JlYXRlIG5hbWVz" + - "cGFjZSA8bmFtZXNwYWNlPgojIFJlLWNyZWF0ZSBwdWxsIHNlY3JldCBpZiBuZWVkZWQKSEVMTUZJ" + - "TEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT08cmVsZWFzZT4gc3luYwpgYGAK" + - "CiMjIEZhaWx1cmU6IEFjY291bnQgQm9vdHN0cmFwIEpvYiBGYWlsZWQKCiMjIyBTeW1wdG9tcwoK" + - "U2VydmljZXMgZGVwbG95IGJ1dCBmdW5jdGlvbnMgY2FuJ3QgYmUgY3JlYXRlZC4gRXZlbnRzIHNo" + - "b3cgYm9vdHN0cmFwIGpvYiBmYWlsdXJlLgoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNr" + - "IGJvb3RzdHJhcCBqb2Igc3RhdHVzCmt1YmVjdGwgZ2V0IGpvYnMgLW4gbnZjZgoKIyBHZXQgbG9n" + - "cyAoam9iIGF1dG8tZGVsZXRlcyBhZnRlciB+NSBtaW51dGVzKQprdWJlY3RsIGxvZ3Mgam9iL252" + - "Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIC1uIG52Y2YKCiMgQ2hlY2sgQVBJIGxvZ3MKa3ViZWN0" + - "bCBsb2dzIC1uIG52Y2YgLWwgYXBwLmt1YmVybmV0ZXMuaW8vbmFtZT1udmNmLWFwaSAtLXRhaWw9" + - "MTAwCmBgYAoKIyMjIENvbW1vbiBDYXVzZXMKCjEuICoqV3JvbmcgYmFzZTY0IGNyZWRlbnRpYWxz" + - "Kio6IENyZWRlbnRpYWxzIGluIGBzZWNyZXRzLzxlbnY+LXNlY3JldHMueWFtbGAgbXVzdCBiZSBg" + - "JG9hdXRodG9rZW46QVBJX0tFWWAgYmFzZTY0LWVuY29kZWQsIG5vdCBqdXN0IHRoZSBBUEkga2V5" + - "CgogICBgYGBiYXNoCiAgICMgVmVyaWZ5IHlvdXIgZW5jb2RlZCBjcmVkZW50aWFsCiAgIGVjaG8g" + - "J1lPVVJfQkFTRTY0X1NUUklORycgfCBiYXNlNjQgLWQKICAgIyBTaG91bGQgb3V0cHV0OiAkb2F1" + - "dGh0b2tlbjpudmFwaS14eHh4eAogICBgYGAKCjIuICoqUmVnaXN0cnkgdW5yZWFjaGFibGUqKjog" + - "QVBJIGNhbid0IHJlYWNoIHRoZSByZWdpc3RyeSBzcGVjaWZpZWQgaW4gYGFjY291bnRCb290c3Ry" + - "YXAucmVnaXN0cnlDcmVkZW50aWFsc2AKCiMjIyBGaXgKCkZpeCBjcmVkZW50aWFscyBpbiBzZWNy" + - "ZXRzIGZpbGUsIHRoZW4gcmVjb3ZlciBzZXJ2aWNlcyB3aXRob3V0IGRlc3Ryb3lpbmcgZGVwZW5k" + - "ZW5jaWVzOgoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBy" + - "ZWxlYXNlLWdyb3VwPXNlcnZpY2VzIGRlc3Ryb3kKa3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIG52" + - "Y2YgYXBpLWtleXMgZXNzIHNpcyAtLWlnbm9yZS1ub3QtZm91bmQKa3ViZWN0bCBjcmVhdGUgbmFt" + - "ZXNwYWNlIG52Y2YgJiYga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIGFwaS1rZXlzICYmIFwKICBr" + - "dWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgZXNzICYmIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBz" + - "aXMKIyBSZS1jcmVhdGUgcHVsbCBzZWNyZXRzIGlmIG5lZWRlZApIRUxNRklMRV9FTlY9PGVudj4g" + - "aGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIHN5bmMKYGBgCgojIyBG" + - "YWlsdXJlOiBOVkNBIENsZWFudXAgU3R1Y2sgKEZpbmFsaXplcnMpCgojIyMgU3ltcHRvbXMKCkNv" + - "bXB1dGUtcGxhbmUgY2xlYW51cCBoYW5ncy4gTmFtZXNwYWNlcwpzdHVjayBpbiBgVGVybWluYXRp" + - "bmdgOgoKYGBgYmFzaAprdWJlY3RsIGdldCBucwojIG52Y2Etb3BlcmF0b3IgICAgVGVybWluYXRp" + - "bmcgICAxMG0KIyBudmNmLWJhY2tlbmQgICAgIFRlcm1pbmF0aW5nICAgMTBtCmBgYAoKIyMjIEZp" + - "eAoKUnVuIHRoaXMgb25seSBhZ2FpbnN0IHRoZSBjb21wdXRlIGNvbnRleHQsIGFmdGVyIHRoZSBu" + - "b3JtYWwgY29tcHV0ZS1wbGFuZQp0ZWFyZG93biBoYXMgZmFpbGVkLiBSZW1vdmUgZmluYWxpemVy" + - "cyBmcm9tIE5WQ0ZCYWNrZW5kIGN1c3RvbSByZXNvdXJjZXMgYW5kCmZvcmNlLWRlbGV0ZSBzdHVj" + - "ayBuYW1lc3BhY2VzOgoKYGBgYmFzaApleHBvcnQgQ09NUFVURV9DT05URVhUPTxjb21wdXRlLXBs" + - "YW5lLWNvbnRleHQ+CgojIFJlbW92ZSBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3Vy" + - "Y2VzCmt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhUIiBnZXQgbnZjZmJhY2tlbmRz" + - "IC1BIC1vIGpzb24gfCBcCiAganEgJy5pdGVtc1tdIHwgLm1ldGFkYXRhLm5hbWVzcGFjZSArICIv" + - "IiArIC5tZXRhZGF0YS5uYW1lJyAtciB8IFwKICB4YXJncyAtSXt9IHNoIC1jICdjb250ZXh0PSIk" + - "MSI7IG5zPSIkezIlJS8qfSI7IG5hbWU9IiR7MiMjKi99Ijsga3ViZWN0bCAtLWNvbnRleHQgIiRj" + - "b250ZXh0IiBwYXRjaCBudmNmYmFja2VuZCAiJG5hbWUiIC1uICIkbnMiIC0tdHlwZT1tZXJnZSAt" + - "cCAie1wibWV0YWRhdGFcIjp7XCJmaW5hbGl6ZXJzXCI6W119fSInIF8gIiRDT01QVVRFX0NPTlRF" + - "WFQiIHt9CgojIEZvcmNlLWRlbGV0ZSBzdHVjayBuYW1lc3BhY2VzIGJ5IGNsZWFyaW5nIHRoZWly" + - "IGZpbmFsaXplcnMKZm9yIG5zIGluIG52Y2Etb3BlcmF0b3IgbnZjZi1iYWNrZW5kOyBkbwogIGt1" + - "YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhUIiBnZXQgbmFtZXNwYWNlICIkbnMiIC1v" + - "IGpzb24gMj4vZGV2L251bGwgfCBcCiAgICBqcSAnLnNwZWMuZmluYWxpemVycyA9IFtdJyB8IFwK" + - "ICAgIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhUIiByZXBsYWNlIFwKICAgICAg" + - "LS1yYXcgIi9hcGkvdjEvbmFtZXNwYWNlcy8kbnMvZmluYWxpemUiIC1mIC0gMj4vZGV2L251bGwK" + - "ZG9uZQpgYGAKCiMjIEZhaWx1cmU6IE5WQ0EgT3BlcmF0b3IgTWlzc2luZyBvciBOb3QgUmVhZHkK" + - "CiMjIyBTeW1wdG9tcwoKQWZ0ZXIgY29tcHV0ZS1wbGFuZSBpbnN0YWxsIGNvbXBsZXRlcywgbm8g" + - "YG52Y2Etb3BlcmF0b3JgIERlcGxveW1lbnQgZXhpc3RzLCBvcgppdCBleGlzdHMgYnV0IHBvZHMg" + - "YXJlIG5vdCByZWFkeToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUt" + - "Y29udGV4dD4gZ2V0IGRlcGxveW1lbnQgbnZjYS1vcGVyYXRvciBcCiAgLW4gbnZjYS1vcGVyYXRv" + - "cgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgcG9kcyAtbiBu" + - "dmNhLW9wZXJhdG9yCmBgYAoKIyMjIERpYWdub3NpcyBhbmQgRml4ZXMKCkZpcnN0IGlkZW50aWZ5" + - "IHdoZXRoZXIgdGhlIGluc3RhbGxhdGlvbiB1c2VkIHRoZSBIZWxtZmlsZSB2YWx1ZXMgZmxvdyBv" + - "ciB0aGUKQ0xJIHByb2ZpbGUgZmxvdy4gUmUtcnVuIG9ubHkgdGhhdCBmbG93J3MgcmVnaXN0cmF0" + - "aW9uIGFuZCBpbnN0YWxsYXRpb24gc3RlcHMKZnJvbSBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0" + - "YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4gRG8gbm90CnN1YnN0aXR1" + - "dGUgb25lIGhhbmRvZmYgZm9yIHRoZSBvdGhlci4KCklmIGluc3RhbGxhdGlvbiBzdWNjZWVkcyBi" + - "dXQgcG9kcyBzdGlsbCBmYWlsLCBpbnNwZWN0IHRoZSBjb21wdXRlIGNvbnRleHQ6CgpgYGBiYXNo" + - "Cmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGRlc2NyaWJlIGRlcGxv" + - "eSBudmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yCmt1YmVjdGwgLS1jb250ZXh0IDxj" + - "b21wdXRlLXBsYW5lLWNvbnRleHQ+IGxvZ3MgZGVwbG95bWVudC9udmNhLW9wZXJhdG9yIFwKICAt" + - "biBudmNhLW9wZXJhdG9yIC0tdGFpbD0yMDAKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxh" + - "bmUtY29udGV4dD4gZ2V0IG52Y2ZiYWNrZW5kIC1uIG52Y2Etb3BlcmF0b3IKYGBgCgpGb3IgcHJp" + - "dmF0ZSByZWdpc3RyeSBmYWlsdXJlcywgdmVyaWZ5IHRoYXQgdGhlIHB1bGwgc2VjcmV0IGV4aXN0" + - "cyBpbgpgbnZjYS1vcGVyYXRvcmAuIFRoZSBjaGFydCBhbmQgb3BlcmF0b3IgbWlycm9yIGl0IHRv" + - "IGBudmNhLXN5c3RlbWA7IGRvIG5vdCB1c2UgYQpicm9hZGVyIG1hbnVhbCBuYW1lc3BhY2UgbG9v" + - "cC4gU2VlCltwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0cy5tZCNjb21wdXRlLXBsYW5lLXNl" + - "Y3JldCkuCgojIyBGYWlsdXJlOiBHYXRld2F5IEVuZHBvaW50IENoYW5nZWQKCiMjIyBTeW1wdG9t" + - "cwoKUmVxdWVzdHMgdGhyb3VnaCB0aGUgY29uZmlndXJlZCByb3V0ZSBkb21haW4gZmFpbCBhZnRl" + - "ciB0aGUgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxhbmNlciBpcyByZXBsYWNlZC4gVGhlIEdhdGV3" + - "YXkgcmVwb3J0cyBhIG5ldyBlbmRwb2ludC4KCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKR0FURVdB" + - "WV9BRERSPSQoa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGdh" + - "dGV3YXkgXAogIG52Y2YtZ2F0ZXdheSAtbiBlbnZveS1nYXRld2F5IFwKICAtbyBqc29ucGF0aD0n" + - "ey5zdGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScpCnRlc3QgLW4gIiRHQVRFV0FZX0FERFIiCmRp" + - "ZyArc2hvcnQgImFwaS48ZG9tYWluPiIKY3VybCAtSCAiSG9zdDogYXBpLjxkb21haW4+IiAiaHR0" + - "cDovLyRHQVRFV0FZX0FERFIvaGVhbHRoIgoKIyBDaGVjayBkaXJlY3QgYWRkcmVzcyBmaWVsZHMg" + - "dXNlZCBieSBhIHNwbGl0IGRlcGxveW1lbnQKZ3JlcCBudmNmTmF0c1NlcnZpY2VVUkwgZGVwbG95" + - "L3N0YWNrcy9zZWxmLW1hbmFnZWQvZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwKZ3JlcCAtRSAnaWNt" + - "c1NlcnZpY2V8cmV2YWxTZXJ2aWNlfG5hdHMnIFwKICBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0" + - "ZS1wbGFuZS9lbnZpcm9ubWVudHMvPGVudj4ueWFtbApgYGAKCiMjIyBGaXgKCktlZXAgYGdsb2Jh" + - "bC5kb21haW5gLCByb3V0ZSBob3N0bmFtZXMsIGFuZCBIb3N0IG92ZXJyaWRlcyB1bmNoYW5nZWQu" + - "IFVwZGF0ZSBETlMKb3IgdGhlIGRpcmVjdCBjbGllbnQgZGVzdGluYXRpb24uIEZvciBzcGxpdCBk" + - "ZXBsb3ltZW50cywgdXBkYXRlIG9ubHkgZGlyZWN0CkdhdGV3YXktYWRkcmVzcyBmaWVsZHMgYW5k" + - "IHJlZnJlc2ggcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24gdGhyb3VnaCB0aGUKc2FtZSBz" + - "ZWxlY3RlZCBoYW5kb2ZmLiBTZWUKW0V4YW1wbGUgNF0oLi4vZXhhbXBsZXMubWQjZXhhbXBsZS00" + - "LXJlY292ZXItZnJvbS1hLWdhdGV3YXktZW5kcG9pbnQtY2hhbmdlKS4KCiMjIFVzZWZ1bCBOYW1l" + - "c3BhY2UtdG8tU2VydmljZSBNYXBwaW5nCgpRdWljayByZWZlcmVuY2UgZm9yIHdoaWNoIHNlcnZp" + - "Y2VzIHJ1biBpbiB3aGljaCBuYW1lc3BhY2U6Cgp8IE5hbWVzcGFjZSB8IFNlcnZpY2VzIHwKfC0t" + - "LS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgbmF0cy1zeXN0ZW0gfCBuYXRzIHwKfCBjYXNzYW5kcmEt" + - "c3lzdGVtIHwgY2Fzc2FuZHJhIHwKfCB2YXVsdC1zeXN0ZW0gfCBvcGVuYmFvLXNlcnZlciB8Cnwg" + - "bnZjZiB8IGFwaSwgaW52b2NhdGlvbi1zZXJ2aWNlLCBncnBjLXByb3h5LCBub3Rhcnktc2Vydmlj" + - "ZSwgcmV2YWwsIGxsbS1yZXF1ZXN0LXJvdXRlciwgbGxtLWFwaS1nYXRld2F5IHwKfCBhcGkta2V5" + - "cyB8IGFwaS1rZXlzLCBhZG1pbi1pc3N1ZXItcHJveHkgfAp8IGVzcyB8IGVzcy1hcGkgfAp8IHNp" + - "cyB8IHNpcyB8CnwgZW52b3ktZ2F0ZXdheS1zeXN0ZW0gfCBlbnZveSBnYXRld2F5IChpbmdyZXNz" + - "IGNvbnRyb2xsZXIpIHwKfCBlbnZveS1nYXRld2F5IHwgZ2F0ZXdheSByZXNvdXJjZSArIHJvdXRl" + - "cyB8ClBLBwi1enA7tTAAALUwAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAEQACQBkYXRhL252" + - "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL2hlbG1maWxlLXN0cnVjdHVy" + - "ZS5tZFVUBQABAKbOEiMgSGVsbWZpbGUgU3RydWN0dXJlIFJlZmVyZW5jZQoKIyMgRGlyZWN0b3J5" + - "IExheW91dAoKYGBgYmFzaApudmNmLXNlbGYtbWFuYWdlZC1zdGFjay8KfC0tIGhlbG1maWxlLmQv" + - "CnwgICB8LS0gMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsICAjIE5BVFMsIENhc3NhbmRyYSwg" + - "T3BlbkJhbwp8ICAgfC0tIDAyLWNvcmUueWFtbC5nb3RtcGwgICAgICAgICAgIyBOVkNGIHNlcnZp" + - "Y2VzICsgaW5ncmVzcwp8ICAgYC0tIDAzLW9ic2VydmFiaWxpdHkueWFtbC5nb3RtcGwgIyBPYnNl" + - "cnZhYmlsaXR5IHN0YWNrIChvcHRpb25hbCkKfC0tIGVudmlyb25tZW50cy8KfCAgIHwtLSBiYXNl" + - "LnlhbWwgICAgICAgICAgICAgICAgICAgICMgRGVmYXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVu" + - "dHMpCnwgICBgLS0gPGVudi1uYW1lPi55YW1sICAgICAgICAgICAgICAjIFBlci1lbnZpcm9ubWVu" + - "dCBvdmVycmlkZXMKfC0tIHNlY3JldHMvCnwgICBgLS0gPGVudi1uYW1lPi1zZWNyZXRzLnlhbWwg" + - "ICAgICAjIFNlbnNpdGl2ZSB2YWx1ZXMgKHJlZ2lzdHJ5IGNyZWRzLCBwYXNzd29yZHMpCmAtLSBn" + - "bG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgICAjIEdvIHRlbXBsYXRlIHRoYXQgY29uc3Ry" + - "dWN0cyBwZXItY2hhcnQgdmFsdWVzCgpudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2svCnwtLSBoZWxt" + - "ZmlsZS5kLwp8ICAgfC0tIDAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbCAgIyBDb21wdXRlIHBs" + - "YW5lIGRlcGVuZGVuY3kgY29tcG9uZW50cwp8ICAgYC0tIDAyLW52Y2EueWFtbC5nb3RtcGwgICAg" + - "ICAgICAgIyBudmNhLW9wZXJhdG9yIGNoYXJ0IGFuZCBudmNhIGNvbmZpZ3VyYXRpb24KfC0tIGVu" + - "dmlyb25tZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAgICAgICAgICAgICMgRGVmYXVs" + - "dCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVudi1uYW1lPi55YW1sICAgICAg" + - "ICAgICAgICAjIFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKYC0tIGdsb2JhbC55YW1sLmdvdG1w" + - "bCAgICAgICAgICAgICAgICMgR28gdGVtcGxhdGUgdGhhdCBjb25zdHJ1Y3RzIHBlci1jaGFydCB2" + - "YWx1ZXMKYGBgCgpUaGVzZSBzdGFja3MgaGF2ZSBzZXBhcmF0ZSBlbnZpcm9ubWVudHMgYW5kIGNs" + - "dXN0ZXIgY29udGV4dHMuIFRoZSBIZWxtZmlsZQp2YWx1ZXMgZmxvdyBhdXRob3JzIGJvdGggZW52" + - "aXJvbm1lbnQgZmlsZXMuIFRoZSBDTEkgcHJvZmlsZSBmbG93IGluc3RlYWQgdXNlcwp0aGUgQ0xJ" + - "LWdlbmVyYXRlZCBjb250cm9sLXBsYW5lIHByb2ZpbGUgYXMgaXRzIGVuZHBvaW50IHNvdXJjZS4g" + - "RG8gbm90IG1peCB0aGUKaGFuZG9mZnMuIFNlZSBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxs" + - "YXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4KCiMjIEdvdG1wbCBGaWxlcyBh" + - "bmQgVGhlaXIgUmVsZWFzZXMKCiMjIyAwMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGwKCnwgUmVs" + - "ZWFzZSB8IENoYXJ0IHwgTmFtZXNwYWNlIHwgTm90ZXMgfAp8LS0tLS0tLS0tfC0tLS0tLS18LS0t" + - "LS0tLS0tLS18LS0tLS0tLXwKfCBuYXRzIHwgaGVsbS1udmNmLW5hdHMgfCBuYXRzLXN5c3RlbSB8" + - "IE1lc3NhZ2luZyB8Cnwgb3BlbmJhby1zZXJ2ZXIgfCBoZWxtLW52Y2Ytb3BlbmJhby1zZXJ2ZXIg" + - "fCB2YXVsdC1zeXN0ZW0gfCBTZWNyZXRzIG1hbmFnZW1lbnQsIGRlcGVuZHMgb24gbmF0cyB8Cnwg" + - "Y2Fzc2FuZHJhIHwgaGVsbS1udmNmLWNhc3NhbmRyYSB8IGNhc3NhbmRyYS1zeXN0ZW0gfCBEYXRh" + - "YmFzZSB8CgpVc2VzIGA8PDogKmRlcGVuZGVuY3lgIHRlbXBsYXRlIGluaGVyaXRhbmNlIHdpdGgg" + - "YHJlbGVhc2UtZ3JvdXA6IGRlcGVuZGVuY2llc2AgbGFiZWwuCgojIyMgMDItY29yZS55YW1sLmdv" + - "dG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBMYWJlbCB8CnwtLS0tLS0tLS18" + - "LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IGFwaS1rZXlzIHwgaGVsbS1udmNmLWFwaS1r" + - "ZXlzIHwgYXBpLWtleXMgfCBzZXJ2aWNlcyB8Cnwgc2lzIHwgaGVsbS1udmNmLXNpcyB8IHNpcyB8" + - "IHNlcnZpY2VzIHwKfCBhcGkgfCBoZWxtLW52Y2YtYXBpIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBp" + - "bnZvY2F0aW9uLXNlcnZpY2UgfCBoZWxtLW52Y2YtaW52b2NhdGlvbi1zZXJ2aWNlIHwgbnZjZiB8" + - "IHNlcnZpY2VzIHwKfCBncnBjLXByb3h5IHwgaGVsbS1udmNmLWdycGMtcHJveHkgfCBudmNmIHwg" + - "c2VydmljZXMgfAp8IGVzcy1hcGkgfCBoZWxtLW52Y2YtZXNzLWFwaSB8IGVzcyB8IHNlcnZpY2Vz" + - "IHwKfCBub3Rhcnktc2VydmljZSB8IGhlbG0tbnZjZi1ub3Rhcnktc2VydmljZSB8IG52Y2YgfCBz" + - "ZXJ2aWNlcyB8CnwgcmV2YWwgfCBoZWxtLXJldmFsIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBsbG0t" + - "cmVxdWVzdC1yb3V0ZXIgfCBudmNmL2hlbG0tbnZjZi1sbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNm" + - "IHwgc2VydmljZXMgfAp8IGxsbS1hcGktZ2F0ZXdheSB8IG52Y2YvaGVsbS1udmNmLWxsbS1hcGkt" + - "Z2F0ZXdheSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgYWRtaW4taXNzdWVyLXByb3h5IHwgaGVsbS1h" + - "ZG1pbi10b2tlbi1pc3N1ZXItcHJveHkgfCBhcGkta2V5cyB8IChubyByZWxlYXNlLWdyb3VwIGxh" + - "YmVsKSB8CnwgaW5ncmVzcyB8IG52Y2YtZ2F0ZXdheS1yb3V0ZXMgfCBlbnZveS1nYXRld2F5LXN5" + - "c3RlbSB8IGluZ3Jlc3MgfAoKTW9zdCBzZXJ2aWNlcyB1c2UgYGluaGVyaXQ6IFt7dGVtcGxhdGU6" + - "IHNlcnZpY2V9XWAuIExMTSByZWxlYXNlcyB1c2UgT0NJIGNoYXJ0cyBmcm9tIHRoZSBgbnZjZmAg" + - "cmVwb3NpdG9yeSB3aXRoIHN0YW5kYWxvbmUgYHZhbHVlczogWy4uL2dsb2JhbC55YW1sLmdvdG1w" + - "bF1gIGJsb2NrczsgdGhleSBhcmUgZ2F0ZWQgb24gYGFkZG9ucy5sbG0uZW5hYmxlZGAuIGBhZG1p" + - "bi1pc3N1ZXItcHJveHlgIGFuZCBgaW5ncmVzc2AgaGF2ZSBzdGFuZGFsb25lIGB2YWx1ZXM6YCBi" + - "bG9ja3MuCgojIyMgMDMtb2JzZXJ2YWJpbGl0eS55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hh" + - "cnQgfCBOYW1lc3BhY2UgfCBMYWJlbCB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwt" + - "LS0tLS0tfAp8IChvYnNlcnZhYmlsaXR5IHJlbGVhc2VzKSB8ICh2YXJpb3VzKSB8IG9ic2VydmFi" + - "aWxpdHkgfCBvYnNlcnZhYmlsaXR5IHwKCkdhdGVkIG9uIG9ic2VydmFiaWxpdHktc3BlY2lmaWMg" + - "ZmxhZ3MgaW4gdGhlIGVudmlyb25tZW50IGZpbGUuIFNraXBwZWQgaWYgZGlzYWJsZWQuCgojIyBU" + - "ZW1wbGF0ZSBJbmhlcml0YW5jZQoKIyMjIGA8PDogKmRlcGVuZGVuY3lgIChZQU1MIG1lcmdlKQoK" + - "VXNlZCBpbiBgMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsYC4gTWVyZ2VzIHRoZSB0ZW1wbGF0" + - "ZSdzIHByb3BlcnRpZXMgaW50byB0aGUgcmVsZWFzZS4KCioqR290Y2hhKio6IFlBTUwgbWVyZ2Ug" + - "cmVwbGFjZXMgbGlzdHMuIElmIHlvdSBhZGQgYSBgdmFsdWVzOmAga2V5IHRvIHRoZSByZWxlYXNl" + - "LCBpdCAqKnJlcGxhY2VzKiogdGhlIHRlbXBsYXRlJ3MgYHZhbHVlczpgIGxpc3QgZW50aXJlbHku" + - "IFlvdSBtdXN0IHJlLWluY2x1ZGUgYWxsIHRlbXBsYXRlIHZhbHVlczoKCkluIHRoZSB0ZW1wbGF0" + - "ZSBiZWxvdywgYDxwcml2YXRlLXZhbHVlcz5gIHJlZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJl" + - "Y3RvcnkgYXQgdGhlIGhlbG1maWxlIHN0YWNrIHJvb3QuCgpgYGB5YW1sCiMgVGVtcGxhdGUgZGVm" + - "aW5lczoKdGVtcGxhdGVzOgogIGRlcGVuZGVuY3k6ICZkZXBlbmRlbmN5CiAgICBjaGFydDogbnZj" + - "Zi9oZWxtLW52Y2Yte3sgLlJlbGVhc2UuTmFtZSB9fQogICAgdmFsdWVzOgogICAgICAtIC4uL2ds" + - "b2JhbC55YW1sLmdvdG1wbAogICAgICAtIC4uLzxwcml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRF" + - "bnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCgojIFdoZW4gb3ZlcnJpZGluZywgTVVT" + - "VCByZS1pbmNsdWRlIGJvdGg6Ci0gbmFtZTogY2Fzc2FuZHJhCiAgPDw6ICpkZXBlbmRlbmN5CiAg" + - "dmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgICAgICAgICAg" + - "ICAgICAgICAgICAgICAgICAgICAgICAgIyBNdXN0IHJlLWluY2x1ZGUKICAgIC0gLi4vPHByaXZh" + - "dGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwg" + - "ICAjIE11c3QgcmUtaW5jbHVkZQogICAgLSBjYXNzYW5kcmE6ICAgICAgICAgICAgICAgICAgICAg" + - "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgWW91ciBvdmVycmlkZQogICAg" + - "ICAgIHJlc291cmNlczoKICAgICAgICAgIGxpbWl0czoKICAgICAgICAgICAgbWVtb3J5OiA4MTky" + - "TWkKYGBgCgojIyMgYGluaGVyaXRgIChIZWxtZmlsZSBuYXRpdmUpCgpVc2VkIGluIGAwMi1jb3Jl" + - "LnlhbWwuZ290bXBsYC4gSGVsbWZpbGUncyBuYXRpdmUgaW5oZXJpdGFuY2UgbWVjaGFuaXNtLgoK" + - "YGBgeWFtbAotIG5hbWU6IGFwaQogIHZlcnNpb246IDEuNi4wCiAgbmFtZXNwYWNlOiBudmNmCiAg" + - "aW5oZXJpdDoKICAgIC0gdGVtcGxhdGU6IHNlcnZpY2UKYGBgCgpXaGVuIGFkZGluZyBgdmFsdWVz" + - "OmAgdG8gYW4gaW5oZXJpdGVkIHJlbGVhc2UsIHlvdSBhbHNvIG5lZWQgdG8gcmUtaW5jbHVkZSB0" + - "aGUgdGVtcGxhdGUncyB2YWx1ZXMgZmlsZXMgc2luY2UgYHZhbHVlc2AgaXMgYSBsaXN0IHRoYXQg" + - "Z2V0cyByZXBsYWNlZC4KCiMjIFZhbHVlcyBQcmVjZWRlbmNlCgpGcm9tIGxvd2VzdCB0byBoaWdo" + - "ZXN0IHByaW9yaXR5OgoKMS4gYGVudmlyb25tZW50cy9iYXNlLnlhbWxgIC0tIGRlZmF1bHRzIHNo" + - "YXJlZCBhY3Jvc3MgYWxsIGVudmlyb25tZW50cwoyLiBgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxg" + - "IC0tIHBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKMy4gYGdsb2JhbC55YW1sLmdvdG1wbGAgLS0g" + - "R28gdGVtcGxhdGUgcHJvY2Vzc2luZyAoY29uc3RydWN0cyBjaGFydC1zcGVjaWZpYyBzdHJ1Y3R1" + - "cmUpCjQuIGA8cHJpdmF0ZS12YWx1ZXM+LzxlbnY+LXNlY3JldHMueWFtbGAgLS0gc2Vuc2l0aXZl" + - "IHZhbHVlcwo1LiBJbmxpbmUgYHZhbHVlczpgIGJsb2NrcyBvbiByZWxlYXNlcyAtLSBoaWdoZXN0" + - "IHByZWNlZGVuY2UKCiMjIFdoYXQgZ2xvYmFsLnlhbWwuZ290bXBsIFBhc3NlcyBUaHJvdWdoCgpg" + - "Z2xvYmFsLnlhbWwuZ290bXBsYCByZWFkcyBmcm9tIGAuVmFsdWVzYCAodGhlIG1lcmdlZCBlbnZp" + - "cm9ubWVudCArIGVudi1zcGVjaWZpYyBZQU1MKSBhbmQgY29uc3RydWN0cyBjaGFydC1zcGVjaWZp" + - "YyB2YWx1ZXMuIEl0IG9ubHkgcGFzc2VzIHRocm91Z2gga2V5cyBpdCBleHBsaWNpdGx5IHJlZmVy" + - "ZW5jZXM6CgojIyMgQ2Fzc2FuZHJhCgotIGBjYXNzYW5kcmEucmVwbGljYUNvdW50YAotIGBjYXNz" + - "YW5kcmEuaW1hZ2UuKmAgKHJlZ2lzdHJ5LCByZXBvc2l0b3J5KQotIGBjYXNzYW5kcmEubWlncmF0" + - "aW9ucy5pbWFnZS4qYAotIGBjYXNzYW5kcmEucGVyc2lzdGVuY2Uuc2l6ZWAKLSBgY2Fzc2FuZHJh" + - "Lm5vZGVTZWxlY3RvcmAgKGlmIGBnbG9iYWwubm9kZVNlbGVjdG9ycy5lbmFibGVkYCkKLSBgY2Fz" + - "c2FuZHJhLmdsb2JhbC5kZWZhdWx0U3RvcmFnZUNsYXNzYAoKIyMjIE5BVFMKCi0gYG5hdHMuY29u" + - "dGFpbmVyLmltYWdlLipgCi0gYG5hdHMucmVsb2FkZXIuaW1hZ2UuKmAKLSBgbmF0cy5uYXRzQm94" + - "LmNvbnRhaW5lci5pbWFnZS4qYAotIGBuYXRzLmNvbmZpZy5qZXRzdHJlYW0uZmlsZVN0b3JlLnB2" + - "Yy5zdG9yYWdlQ2xhc3NOYW1lYAotIGBuYXRzLnBvZFRlbXBsYXRlLm1lcmdlLnNwZWMubm9kZVNl" + - "bGVjdG9yYCAoaWYgZW5hYmxlZCkKCiMjIyBPcGVuQmFvCgotIGBvcGVuYmFvLm1pZ3JhdGlvbnMu" + - "aW1hZ2UuKmAgYW5kIGBvcGVuYmFvLm1pZ3JhdGlvbnMuZW52YAotIGBvcGVuYmFvLmluamVjdG9y" + - "LmltYWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmltYWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmRh" + - "dGFTdG9yYWdlLipgCi0gTm9kZSBzZWxlY3RvcnMgKGlmIGVuYWJsZWQpCgojIyMgU2VydmljZXMg" + - "KEFQSSwgU0lTLCBldGMuKQoKLSBgPHNlcnZpY2U+LmltYWdlLipgIChyZWdpc3RyeSwgcmVwb3Np" + - "dG9yeSkKLSBgPHNlcnZpY2U+Lm5vZGVTZWxlY3RvcmAgKGlmIGVuYWJsZWQpCi0gYDxzZXJ2aWNl" + - "Pi5lbnYuKmAgKG9ic2VydmFiaWxpdHkgc2V0dGluZ3MpCgojIyMgTExNIEZ1bmN0aW9uIEVuYWJs" + - "ZW1lbnQKCkVuYWJsZSB0aGUgTExNIGFkZG9uIGJlZm9yZSBjcmVhdGluZyBvciBpbnZva2luZyBm" + - "dW5jdGlvbnMgd2l0aApgZnVuY3Rpb25UeXBlOiAiTExNImAuIFRoZSBhZGRvbiBkZXBsb3lzIGBs" + - "bG0tcmVxdWVzdC1yb3V0ZXJgIGFuZApgbGxtLWFwaS1nYXRld2F5YCwgYWRkcyB0aGUgYGxsbS5p" + - "bnZvY2F0aW9uLjxkb21haW4+YCByb3V0ZSB3aGVuIEdhdGV3YXkgQVBJCmluZ3Jlc3MgaXMgZW5h" + - "YmxlZCwgYW5kIGNvbmZpZ3VyZXMgd29ya2VycyB0byB1c2UgdGhlIExMTSBzaWRlY2FyLiBUaGUg" + - "SGVsbWZpbGUKY29uZGl0aW9uIGlzIGBhZGRvbnMubGxtLmVuYWJsZWRgLiBEbyBub3QgdXNlIHRo" + - "ZSBvYnNvbGV0ZSBgbGxtLmVuYWJsZWRgIHBhdGguCgpGb3IgYSBzaW5nbGUtbm9kZSBpc29sYXRl" + - "ZCB0ZXN0IGNsdXN0ZXIsIGFkZCB0aGlzIGNvbmZpZ3VyYXRpb24gdG8KYGVudmlyb25tZW50cy88" + - "ZW52Pi55YW1sYCBiZWZvcmUgYXBwbHlpbmcgdGhlIHN0YWNrOgoKYGBgeWFtbAphZGRvbnM6CiAg" + - "bGxtOgogICAgZW5hYmxlZDogdHJ1ZQogICAgZ2F0ZXdheToKICAgICAgcmVwbGljYUNvdW50OiAx" + - "CiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2VydmljZU1vbml0b3I6CiAgICAgICAgICBlbmFibGVk" + - "OiBmYWxzZQogICAgcmVxdWVzdFJvdXRlcjoKICAgICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1l" + - "dHJpY3M6CiAgICAgICAgc2VydmljZU1vbml0b3I6CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQoK" + - "YWdlbnRDb25maWc6CiAgbWVyZ2VDb25maWc6IHwKICAgIGNsdXN0ZXI6CiAgICAgIHZhbGlkYXRp" + - "b25Qb2xpY3k6CiAgICAgICAgbmFtZTogVW5yZXN0cmljdGVkCiAgICB3b3JrbG9hZDoKICAgICAg" + - "c3RhcmdhdGVRVUlDSW5zZWN1cmU6IHRydWUKYGBgCgpVc2UgYHJlcGxpY2FDb3VudDogMWAgb25s" + - "eSBmb3IgbG9jYWwgb3Igc2luZ2xlLW5vZGUgdGVzdCBjbHVzdGVycy4gVGhlIGJ1bmRsZWQKTlZD" + - "RiBBUEkgY3VycmVudGx5IHNlcnZlcyBwbGFpbnRleHQgZ1JQQyBvbiBwb3J0IDkwOTAsIHNvIHRo" + - "ZSBzZWxmLW1hbmFnZWQgc3RhY2sKZGVmYXVsdHMgdGhlIExMTSBBUEkgR2F0ZXdheSBhdXRoZW50" + - "aWNhdGlvbiBob3AgdG8gcGxhaW50ZXh0LiBTZXQKYGFkZG9ucy5sbG0uZ2F0ZXdheS5hdXRoLmdy" + - "cGNJbnNlY3VyZTogZmFsc2VgIG9ubHkgd2l0aCBhIFRMUy1jYXBhYmxlIE5WQ0YgQVBJLgoKV29y" + - "a2VyLXRvLXJvdXRlciB0cmFuc3BvcnQgaXMgc2VwYXJhdGUuIEZvciBzaGFyZWQgb3IgcHJvZHVj" + - "dGlvbiBjbHVzdGVycywgdXNlCnRoZSByZXF1aXJlZCByZXBsaWNhIGNvdW50IGFuZCB0aGUgbWFu" + - "YWdlZCBUTFMgY29uZmlndXJhdGlvbi4gVGhlCmB3b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3Vy" + - "ZWAgc2V0dGluZyBlbmFibGVzIHBsYWludGV4dCB3b3JrZXIgdHJhbnNwb3J0IGFuZAptdXN0IG5v" + - "dCBiZSB1c2VkIGluIHByb2R1Y3Rpb24uCgpUaGUgcmVxdWVzdCByb3V0ZXIgdXNlcyBgcG93ZXIt" + - "b2YtdHdvYCB3aGVuIG5vIGxvYWQtYmFsYW5jZXIgY29uZmlndXJhdGlvbiBpcwpzZXQuIENvbmZp" + - "Z3VyZSBvdGhlciByb3V0aW5nIG1ldGhvZHMgd2l0aCB0aGUKW0xMTSBSZXF1ZXN0IFJvdXRlciBM" + - "b2FkIEJhbGFuY2luZ10oaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9k" + - "b2NzL3NlbGYtbWFuYWdlZC9sbG0tcmVxdWVzdC1yb3V0ZXItbG9hZC1iYWxhbmNpbmcubWQpCmd1" + - "aWRlLgoKSWYgdGhlIHNpZGVjYXIgaW1hZ2UgaXMgbWlycm9yZWQgb3V0c2lkZSB0aGUgc3RhY2sn" + - "cyBkZWZhdWx0IGltYWdlIHJlZ2lzdHJ5IGFuZApyZXBvc2l0b3J5LCBzZXQgdGhlIGdlbmVyYXRl" + - "ZCB3b3JrZXIgc2lkZWNhciBpbWFnZSBleHBsaWNpdGx5OgoKYGBgeWFtbAphcGk6CiAgcmVtb3Rl" + - "Q29uZmlnOgogICAgY29uZmlnRGF0YToKICAgICAgbnZjZjoKICAgICAgICBzaWRlY2FyczoKICAg" + - "ICAgICAgIGxsbS1yb3V0ZXItY2xpZW50LWltYWdlOiA8cmVnaXN0cnk+LzxyZXBvc2l0b3J5Pi9w" + - "eWxvbjowLjE0LjEKYGBgCgpUaGUgbGVnYWN5IGBhcGkuZW52Lk5WQ0ZfU0lERUNBUlNfTExNX1JP" + - "VVRFUl9DTElFTlRfSU1BR0VgIHBhdGggaXMgZGVwcmVjYXRlZC4KVGhlIHN0YWNrIHRyYW5zbGF0" + - "ZXMgaXQgZm9yIG9uZSBjb21wYXRpYmlsaXR5IHdpbmRvdywgYnV0IG5ldyBjb25maWd1cmF0aW9u" + - "cwptdXN0IHVzZSB0aGUgcmVtb3RlLWNvbmZpZyBwYXRoLiBDb25mbGljdGluZyB2YWx1ZXMgZmFp" + - "bCByZW5kZXJpbmcuCgpSZW5kZXIgYW5kIGFwcGx5IHRoZSB1cGRhdGVkIGNvbnRyb2wtcGxhbmUg" + - "ZW52aXJvbm1lbnQsIHRoZW4gcmVmcmVzaCBldmVyeQpyZWdpc3RlcmVkIGNvbXB1dGUgcGxhbmUg" + - "dXNpbmcgdGhlIHNhbWUgaGFuZG9mZiB1c2VkIGZvciBpdHMgaW5zdGFsbGF0aW9uIHNvCk5WQ0Eg" + - "cmVjZWl2ZXMgYGFnZW50Q29uZmlnLm1lcmdlQ29uZmlnYDoKCmBgYGJhc2gKSEVMTUZJTEVfRU5W" + - "PTxlbnY+IGhlbG1maWxlIHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSBzeW5j" + - "CmBgYAoKVXNlIHRoZSBjb21wbGV0ZSBjb21wdXRlLXBsYW5lIGluc3RhbGwgY29tbWFuZCBmcm9t" + - "CltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxs" + - "YXRpb24ubWQpLiBBCkNMSS1wcm9maWxlIGluc3RhbGxhdGlvbiBtdXN0IHJlbWFpbiBwcm9maWxl" + - "LWRyaXZlbjsgYSBIZWxtZmlsZSBpbnN0YWxsYXRpb24KbXVzdCByZW1haW4gdmFsdWVzLWRyaXZl" + - "bi4KCkV4aXN0aW5nIExMTSBmdW5jdGlvbiB2ZXJzaW9ucyByZXRhaW4gdGhlIHdvcmtlci1zaWRl" + - "Y2FyIGltYWdlIG1ldGFkYXRhCmNhcHR1cmVkIHdoZW4gdGhlIHZlcnNpb24gaXMgY3JlYXRlZC4g" + - "UmVwbGFjaW5nIHBvZHMgb3IgcmVkZXBsb3lpbmcgdGhlIHNhbWUKdmVyc2lvbiBkb2VzIG5vdCBh" + - "cHBseSBhIG5ldyBQeWxvbiBpbWFnZS4gQWZ0ZXIgdGhlIGNvbnRyb2wtcGxhbmUgdXBkYXRlLApj" + - "cmVhdGUgYW5kIGRlcGxveSBhIG5ldyBmdW5jdGlvbiB2ZXJzaW9uLiBWZXJpZnkgdGhlIGNvbnRy" + - "b2wgcGxhbmUsIHJvdXRlLCBhbmQKd29ya2VyIHNpZGVjYXI6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0" + - "IGRlcGxveSAtbiBudmNmIGxsbS1hcGktZ2F0ZXdheQprdWJlY3RsIGdldCBzdGF0ZWZ1bHNldCAt" + - "biBudmNmIGxsbS1yZXF1ZXN0LXJvdXRlcgprdWJlY3RsIGdldCBwb2RzIC1uIG52Y2YgfCBncmVw" + - "IC1FICdsbG0tYXBpLWdhdGV3YXl8bGxtLXJlcXVlc3Qtcm91dGVyJwprdWJlY3RsIGdldCBodHRw" + - "cm91dGUgLUEgfCBncmVwIGxsbQprdWJlY3RsIC1uIG52Y2YtYmFja2VuZCBnZXQgcG9kIDxmdW5j" + - "dGlvbi1wb2Q+IFwKICAtbyBqc29ucGF0aD0ne3JhbmdlIC5zcGVjLmNvbnRhaW5lcnNbPyhALm5h" + - "bWU9PSJsbG0td29ya2VyIildLmFyZ3NbKl19ey59eyJcXG4ifXtlbmR9JwpgYGAKCkZvciBsb2Nh" + - "bCBwbGFpbnRleHQgY2x1c3RlcnMsIHRoZSBgbGxtLXdvcmtlcmAgYXJncyBtdXN0IGluY2x1ZGUK" + - "YC0tcXVpYy1pbnNlY3VyZWAuCgpGb3IgbG9hZC1iYWxhbmNlciBzY2hlbWEgYW5kIGFsZ29yaXRo" + - "bSBiZWhhdmlvciwgc2VlIHRoZQpbU3RhcmdhdGUgY29uZmlndXJhdGlvbiBndWlkZV0oaHR0cHM6" + - "Ly9naXRodWIuY29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9zcmMvbGlicmFyaWVzL3J1c3Qvc3Rh" + - "cmdhdGUvZG9jcy9sb2FkLWJhbGFuY2VyLWNvbmZpZ3VyYXRpb24ubWQpLgoKIyMgSGVsbWZpbGUg" + - "U2VsZWN0b3JzCgpUYXJnZXQgc3BlY2lmaWMgcmVsZWFzZXMgb3IgZ3JvdXBzOgoKYGBgYmFzaAoj" + - "IEJ5IHJlbGVhc2UgZ3JvdXAKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3Ig" + - "cmVsZWFzZS1ncm91cD1kZXBlbmRlbmNpZXMgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZp" + - "bGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIHN5bmMKSEVMTUZJTEVfRU5WPTxl" + - "bnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1pbmdyZXNzIHN5bmMKSEVMTUZJ" + - "TEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1vYnNlcnZhYmls" + - "aXR5IHN5bmMKCiMgQnkgcmVsZWFzZSBuYW1lCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAt" + - "LXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxl" + - "IC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHkgc3luYwpIRUxNRklMRV9FTlY9PGVu" + - "dj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWxsbS1yZXF1ZXN0LXJvdXRlciBzeW5jCkhFTE1G" + - "SUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9bGxtLWFwaS1nYXRld2F5IHN5" + - "bmMKCiMgVGVtcGxhdGUgb25seSAoZHJ5IHJ1bikKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxl" + - "IC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUKCiMgRGVzdHJveSBhIHNpbmdsZSBy" + - "ZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2Fu" + - "ZHJhIGRlc3Ryb3kKYGBgCgpOb3RlOiBgYWRtaW4taXNzdWVyLXByb3h5YCBoYXMgbm8gYHJlbGVh" + - "c2UtZ3JvdXBgIGxhYmVsLiBVc2UgYC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHlg" + - "LgpQSwcIExHsjQoqAAAKKgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA/AAkAZGF0YS9udmNm" + - "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQF" + - "AAEAps4SIyBOVkNGIFVJIEFkZG9uCgpOVkNGIFVJIGlzIGFuIG9wdGlvbmFsLCBjdXN0b21lci1m" + - "YWNpbmcgTlZDRiBhZG1pbi1wYW5lbCBVSS4gSXQgaXMgZGlzYWJsZWQgYnkKZGVmYXVsdCBhbmQg" + - "YXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBOVkNGIFVJ" + - "IGFkZG9uLgoKIyMgV2hlbiB0byBlbmFibGUKCkVuYWJsZSBOVkNGIFVJIG9ubHkgd2hlbiB5b3Ug" + - "bmVlZCB0aGUgYWRtaW4tcGFuZWwgVUkgYW5kIHlvdXIgZXh0cmFjdGVkIHN0YWNrCnBhY2thZ2Ug" + - "aW5jbHVkZXMgdGhlIGFkZG9uLiBJZiB0aGUgcGFja2FnZSBkb2VzIG5vdCBjb250YWluIGEgYG52" + - "Y2YtdWlgIHJlbGVhc2UKYW5kIGBudmNmVWlgIHJvdXRlIHZhbHVlcywgc2tpcCB0aGUgYWRkb24g" + - "dW50aWwgeW91IHVzZSBhIHBhY2thZ2UgdGhhdCBpbmNsdWRlcwp0aGVtLgoKIyMgRW5hYmxlIHRo" + - "ZSBhZGRvbgoKRW5hYmxlIGl0IGluIGBlbnZpcm9ubWVudHMvPGVudi1uYW1lPi55YW1sYDoKCmBg" + - "YHlhbWwKYWRkb25zOgogIG52Y2ZVaToKICAgIGVuYWJsZWQ6IHRydWUKYGBgCgojIyBDcmVhdGUg" + - "bmFtZXNwYWNlIGFuZCBpbWFnZSBwdWxsIHNlY3JldAoKQ3JlYXRlIHRoZSBuYW1lc3BhY2UsIGFu" + - "ZCBhbiBpbWFnZSBwdWxsIHNlY3JldCBvbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUKcmVn" + - "aXN0cnk6CgpgYGBiYXNoCmt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBudmNmLXVpIC0tZHJ5LXJ1" + - "bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQoKIyBPbmx5IGlmIHB1bGxpbmcg" + - "ZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGUuZy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQ" + - "SV9LRVk9Ijx5b3VyLWtleT4iCmt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkg" + - "bnZjci1jcmVkcyBcCiAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogIC0tZG9ja2VyLXVzZXJu" + - "YW1lPSckb2F1dGh0b2tlbicgXAogIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwK" + - "ICAtLW5hbWVzcGFjZT1udmNmLXVpIFwKICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJl" + - "Y3RsIGFwcGx5IC1mIC0KYGBgCgpUaGUgZGVmYXVsdCByb3V0ZSBob3N0IGlzIGBudmNmLXVpLjxk" + - "b21haW4+YCBhbmQgdGhlIGJhY2tlbmQgaXMKYG52Y2YtdWkubnZjZi11aTo4MzAwYC4KCiMjIEFw" + - "cGx5IHRoZSBzZXJ2aWNlIGFuZCByb3V0ZQoKQWZ0ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBp" + - "bmNsdWRlcyB0aGUgYG52Y2YtdWlgIHJlbGVhc2UsIHByZXZpZXcgYW5kIGFwcGx5CnRoZSBzZXJ2" + - "aWNlIGFuZCByb3V0ZToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUg" + - "LS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgdGVtcGxhdGUKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4g" + - "aGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgc3luYwpIRUxNRklMRV9FTlY9PGVudi1u" + - "YW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBgYAoK" + - "IyMgVmVyaWZ5CgpWZXJpZnkgdGhlIHJvdXRlIG9ubHkgd2hlbiB0aGUgYWRkb24gaXMgcHJlc2Vu" + - "dCBhbmQgZW5hYmxlZDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgZGVwbG95LHN2YyAtbiBudmNmLXVp" + - "Cmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgLWkgbnZjZi11aQpjdXJsIC1pIC1IICJI" + - "b3N0OiBudmNmLXVpLjxkb21haW4+IiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+L3N0YXR1cyIK" + - "YGBgCgojIyBTZWN1cml0eQoKVGhlIE5WQ0YgVUkgYWRtaW4gcGFuZWwgaXMgY3VycmVudGx5IHVu" + - "YXV0aGVudGljYXRlZC4gRG8gbm90IGV4cG9zZSBpdCB0byB0aGUKcHVibGljIGludGVybmV0LiBS" + - "ZXN0cmljdCBhY2Nlc3MgdG8gYSB0cnVzdGVkIG5ldHdvcmssIFZQTiwgb3IgYW4gYXV0aGVudGlj" + - "YXRpbmcKcHJveHkgaW4gZnJvbnQgb2YgdGhlIGBudmNmLXVpYCByb3V0ZS4KUEsHCDj5J6+5BwAA" + - "uQcAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAPgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + - "aW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SIyBJbWFnZSBQ" + - "dWxsIFNlY3JldHMgUmVmZXJlbmNlCgojIyBPdmVydmlldwoKV2hlbiBwdWxsaW5nIE5WQ0YgaW1h" + - "Z2VzIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5IChmb3IgZXhhbXBsZSwgTkdDCmBudmNyLmlvYCks" + - "IEt1YmVybmV0ZXMgbmVlZHMgYGltYWdlUHVsbFNlY3JldHNgIG9uIGV2ZXJ5IHBvZC4gQ29udHJv" + - "bC1wbGFuZSBhbmQKY29tcHV0ZS1wbGFuZSBjcmVkZW50aWFscyBhcmUgY29uZmlndXJlZCBpbiB0" + - "aGVpciBvd24gY2x1c3RlciBjb250ZXh0cy4gRG8gbm90CnVzZSBvbmUgbWl4ZWQgbmFtZXNwYWNl" + - "IGxpc3QuCgpUaGUgcmVjb21tZW5kZWQgY29udHJvbC1wbGFuZSBhcHByb2FjaCB1c2VzIEt5dmVy" + - "bm8gdG8gaW5qZWN0IHRoZSBzZWNyZXQgaW50bwpjb250cm9sLXBsYW5lIHBvZHMgYXQgYWRtaXNz" + - "aW9uIHRpbWUuIFRoZSBjb21wdXRlLXBsYW5lIGNoYXJ0IGFuZCBvcGVyYXRvciB1c2UKdGhlIHNl" + - "Y3JldCBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciBpdCB0byBgbnZjYS1zeXN0ZW1gLgoK" + - "IyMgS3l2ZXJubyBBcHByb2FjaCAoUmVjb21tZW5kZWQpCgojIyMgMS4gSW5zdGFsbCBLeXZlcm5v" + - "CgpgYGBiYXNoCmhlbG0gcmVwbyBhZGQga3l2ZXJubyBodHRwczovL2t5dmVybm8uZ2l0aHViLmlv" + - "L2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUKaGVsbSBpbnN0YWxsIGt5dmVybm8ga3l2ZXJuby9r" + - "eXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUtbmFtZXNwYWNlIFwKICAtLWt1YmUtY29udGV4dCA8" + - "Y29udHJvbC1wbGFuZS1jb250ZXh0PgpgYGAKCiMjIyAyLiBDcmVhdGUgY29udHJvbC1wbGFuZSBw" + - "dWxsIHNlY3JldHMKCmBgYGJhc2gKZXhwb3J0IE5HQ19BUElfS0VZPSI8eW91ci1uZ2MtYXBpLWtl" + - "eT4iCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlz" + - "IGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29udGV4" + - "dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgbmFtZXNwYWNlICIkbnMiIFwKICAgIC0t" + - "ZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5l" + - "LWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQoKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0" + - "cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7" + - "IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gY3JlYXRlIHNl" + - "Y3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZj" + - "ci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2Vy" + - "LXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0t" + - "ZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5l" + - "LWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQpgYGAKCkZvciBub24tTkdDIHJlZ2lzdHJpZXMsIHJl" + - "cGxhY2UgYC0tZG9ja2VyLXNlcnZlcmAsIGAtLWRvY2tlci11c2VybmFtZWAsIGFuZCBgLS1kb2Nr" + - "ZXItcGFzc3dvcmRgLgoKIyMjIDMuIEFwcGx5IEt5dmVybm8gQ2x1c3RlclBvbGljeQoKYGBgeWFt" + - "bAphcGlWZXJzaW9uOiBreXZlcm5vLmlvL3YxCmtpbmQ6IENsdXN0ZXJQb2xpY3kKbWV0YWRhdGE6" + - "CiAgbmFtZTogbnZjZi1hZGQtaW1hZ2VwdWxsc2VjcmV0cwpzcGVjOgogIGJhY2tncm91bmQ6IGZh" + - "bHNlCiAgcnVsZXM6CiAgICAtIG5hbWU6IGFkZC1pbWFnZXB1bGxzZWNyZXQtdG8tbnZjZi1wb2Rz" + - "CiAgICAgIG1hdGNoOgogICAgICAgIGFueToKICAgICAgICAtIHJlc291cmNlczoKICAgICAgICAg" + - "ICAga2luZHM6CiAgICAgICAgICAgIC0gUG9kCiAgICAgICAgICAgIG5hbWVzcGFjZXM6CiAgICAg" + - "ICAgICAgIC0gIm52Y2YiCiAgICAgICAgICAgIC0gImFwaS1rZXlzIgogICAgICAgICAgICAtICJz" + - "aXMiCiAgICAgICAgICAgIC0gImVzcyIKICAgICAgICAgICAgLSAibmF0cy1zeXN0ZW0iCiAgICAg" + - "ICAgICAgIC0gImNhc3NhbmRyYS1zeXN0ZW0iCiAgICAgICAgICAgIC0gInZhdWx0LXN5c3RlbSIK" + - "ICAgICAgICAgICAgLSAiY2VydC1tYW5hZ2VyIgogICAgICBtdXRhdGU6CiAgICAgICAgcGF0Y2hT" + - "dHJhdGVnaWNNZXJnZToKICAgICAgICAgIG1ldGFkYXRhOgogICAgICAgICAgICBhbm5vdGF0aW9u" + - "czoKICAgICAgICAgICAgICBudmNmLm52aWRpYS5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVk" + - "LWJ5OiBreXZlcm5vCiAgICAgICAgICBzcGVjOgogICAgICAgICAgICBpbWFnZVB1bGxTZWNyZXRz" + - "OgogICAgICAgICAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpgYGBiYXNoCmt1YmVjdGwgLS1j" + - "b250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IFwKICAtZiBreXZlcm5vLWltYWdl" + - "cHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAKCiMjIyA0LiBJbnN0YWxsIHRoZSBjb250cm9sIHBs" + - "YW5lCgpDb250aW51ZSB3aXRoIHRoZSBzZWxlY3RlZCBjb250cm9sLXBsYW5lIGluc3RhbGxhdGlv" + - "biBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5z" + - "dGFsbGF0aW9uLm1kKS4gTm8KY29udHJvbC1wbGFuZSBoZWxtZmlsZSBtb2RpZmljYXRpb25zIGFy" + - "ZSBuZWVkZWQuIEt5dmVybm8gaW5qZWN0cyB0aGUgcHVsbApzZWNyZXQgaW50byBuZXcgY29udHJv" + - "bC1wbGFuZSBwb2RzLgoKIyMgQ29tcHV0ZS1QbGFuZSBTZWNyZXQKCkNyZWF0ZSB0aGUgc2VjcmV0" + - "IG9ubHkgaW4gYG52Y2Etb3BlcmF0b3JgIG9uIHRoZSBjb21wdXRlIGNsdXN0ZXI6CgpgYGBiYXNo" + - "Cmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3Bh" + - "Y2UgbnZjYS1vcGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVj" + - "dGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KCmt1YmVjdGwg" + - "LS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJl" + - "Z2lzdHJ5IG52Y3ItY3JlZHMgXAogIC0tZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAtLWRvY2tl" + - "ci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElf" + - "S0VZIiBcCiAgLS1uYW1lc3BhY2U9bnZjYS1vcGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAt" + + "ciBkZXN0cm95CiAgIGt1YmVjdGwgZGVsZXRlIG5hbWVzcGFjZSB2YXVsdC1zeXN0ZW0KICAga3Vi" + + "ZWN0bCBjcmVhdGUgbmFtZXNwYWNlIHZhdWx0LXN5c3RlbQogICAjIFJlLWNyZWF0ZSBwdWxsIHNl" + + "Y3JldCBpZiBuZWVkZWQKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3Ig" + + "bmFtZT1vcGVuYmFvLXNlcnZlciBzeW5jCiAgIGBgYAoKMy4gKipPcGVuQmFvIHBvZHMgcnVubmlu" + + "ZyBidXQgbm90IGluaXRpYWxpemVkKio6IENoZWNrIHVuc2VhbCBzdGF0dXM6CgogICBgYGBiYXNo" + + "CiAgIGt1YmVjdGwgZXhlYyAtbiB2YXVsdC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXItMCAtYyBvcGVu" + + "YmFvIC0tIGJhbyBzdGF0dXMKICAgYGBgCgo0LiAqKmB2YXVsdC1hZ2VudC1pbml0YCBsb2dzIGBh" + + "dXRoL2p3dC9sb2dpbmAgLT4gYDQwMCAuLi4gbm8ga25vd24ga2V5IHN1Y2Nlc3NmdWxseSB2YWxp" + + "ZGF0ZWQgdGhlIHRva2VuIHNpZ25hdHVyZWAqKgogICAoY29tbW9uIG9uIEFLUywgYW5kIG9uIGFu" + + "eSBjbHVzdGVyIHdob3NlIE9JREMgaXNzdWVyIHB1Ymxpc2hlcyBhIHJvdGF0aW5nIG11bHRpLWtl" + + "eSBKV0tTKToKICAgdGhlIE9wZW5CYW8gYGF1dGgvand0YCBtZXRob2Qgd2FzIGNvbmZpZ3VyZWQg" + + "d2l0aCBhIHNpbmdsZSBzdGF0aWMgbW91bnRlZCBwdWJsaWMga2V5CiAgIChgand0X3ZhbGlkYXRp" + + "b25fcHVia2V5c2ApIGluc3RlYWQgb2YgdGhlIGlzc3VlcidzIGxpdmUgSldLUywgc28gaXQgY2Fu" + + "bm90IHZhbGlkYXRlIHRoZQogICBjbHVzdGVyLXNpZ25lZCBTZXJ2aWNlQWNjb3VudCB0b2tlbnMg" + + "dGhlIHZhdWx0LWFnZW50cyBwcmVzZW50LiBFdmVyeSBzZXJ2aWNlJ3MKICAgYHZhdWx0LWFnZW50" + + "LWluaXRgIHRoZW4gbG9vcHMgb24gdGhhdCA0MDAgYW5kIHRoZSBwb2QgbmV2ZXIgbGVhdmVzIGBJ" + + "bml0OjAvMWAuIFRoaXMgaXMgdGhlCiAgIGJlaGF2aW9yIG9mIHRoZSBiYXNlIGRlZmF1bHQgYG9w" + + "ZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2VgOyB0aGUKICAg" + + "bWlncmF0aW9uIGxvZyBzaG93cyBgT0lEQyBpc3N1ZXIgZGlzY292ZXJ5IGlzIGRpc2FibGVkLiBV" + + "c2luZyBTZXJ2aWNlQWNjb3VudCBpc3N1ZXIgYW5kCiAgIG1vdW50ZWQgcHVibGljIGtleSBmYWxs" + + "YmFja2AuIEVuYWJsZSBpc3N1ZXIgZGlzY292ZXJ5IHNvIHRoZSBtaWdyYXRpb24gdXNlcyB0aGUg" + + "bGl2ZSBKV0tTLAogICB0aGVuIHJlLXJ1biBpdDoKCiAgIGBgYGJhc2gKICAgIyBJbiB5b3VyIGVu" + + "diB2YWx1ZXMgKGUuZy4gZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwpLCBzZXQ6CiAgICMgICBvcGVu" + + "YmFvOgogICAjICAgICBtaWdyYXRpb25zOgogICAjICAgICAgIGlzc3VlckRpc2NvdmVyeToKICAg" + + "IyAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAga3ViZWN0bCBkZWxldGUgam9iIC1uIHZhdWx0LXN5" + + "c3RlbSBvcGVuYmFvLXNlcnZlci1taWdyYXRpb25zCiAgIEhFTE1GSUxFX0VOVj08ZW52PiBoZWxt" + + "ZmlsZSAtLXNlbGVjdG9yIG5hbWU9b3BlbmJhby1zZXJ2ZXIgc3luYwogICBgYGAKCiAgIFRoZSBt" + + "aWdyYXRpb24gbG9nIHNob3VsZCB0aGVuIHNob3cgYFJlY2VpdmVkIGRpc2NvdmVyeSBkb2N1bWVu" + + "dCBmcm9tCiAgIC4uLi8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbmAgYW5kIGBGaW5h" + + "bCBPcGVuQmFvIEpXVCBKV0tTIFVSTCBzZXQgdG86CiAgIC4uLi9vcGVuaWQvdjEvandrc2AsIGFu" + + "ZCB0aGUgc2VydmljZSBwb2RzIGF1dGhlbnRpY2F0ZSBhbmQgcmVhY2ggUmVhZHkgd2l0aGluIH4x" + + "IG1pbi4KICAgQUtTIGNsdXN0ZXJzIHdpdGggdGhlIGNsdXN0ZXIgT0lEQyBpc3N1ZXIgZW5hYmxl" + + "ZCAodGhlIGBha3MtY2x1c3RlcmAgZGVmYXVsdCkgYWx3YXlzIG5lZWQKICAgdGhpcyBiZWNhdXNl" + + "IHRoZSBzdGF0aWMtcHVia2V5IGZhbGxiYWNrIGNhbm5vdCBtYXRjaCB0aGUgaXNzdWVyJ3Mgcm90" + + "YXRpbmcgc2lnbmluZyBrZXlzLgoKIyMgRmFpbHVyZTogT09NS2lsbGVkIG9uIENhc3NhbmRyYQoK" + + "IyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMgICAgUkVT" + + "VEFSVFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIE9PTUtpbGxlZCAgMyAgICAgICAgIDEw" + + "bQpgYGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gY2Fz" + + "c2FuZHJhLXN5c3RlbSBjYXNzYW5kcmEtMCB8IGdyZXAgLUEzICJMYXN0IFN0YXRlIgpgYGAKCiMj" + + "IyBGaXgKCk92ZXJyaWRlIENhc3NhbmRyYSByZXNvdXJjZXMgdmlhIGhlbG1maWxlIHZhbHVlcy4g" + + "U2VlIEV4YW1wbGUgMSBpbgpbZXhhbXBsZXMubWRdKC4uL2V4YW1wbGVzLm1kKS4KCmBgYHlhbWwK" + + "LSBjYXNzYW5kcmE6CiAgICByZXNvdXJjZXM6CiAgICAgIGxpbWl0czoKICAgICAgICBjcHU6ICI4" + + "IgogICAgICAgIG1lbW9yeTogODE5Mk1pCiAgICAgIHJlcXVlc3RzOgogICAgICAgIGNwdTogIjIi" + + "CiAgICAgICAgbWVtb3J5OiA0MDk2TWkKYGBgCgpOb3RlOiBgcmVzb3VyY2VQcmVzZXRgIGlzIG5v" + + "dCBhdmFpbGFibGUgaW4gdGhlIE5WQ0YgY2Fzc2FuZHJhIHdyYXBwZXIgY2hhcnQuIFVzZSBleHBs" + + "aWNpdCBgcmVzb3VyY2VzYC4KCiMjIEZhaWx1cmU6IFBvZHMgU3R1Y2sgaW4gUGVuZGluZwoKIyMj" + + "IFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMgICAgUkVTVEFS" + + "VFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIFBlbmRpbmcgICAwICAgICAgICAgIDEwbQpg" + + "YGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKIyBDaGVjayBldmVudHMgZm9yIHNjaGVkdWxpbmcg" + + "ZmFpbHVyZXMKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPgoK" + + "IyBDb21tb24gY2F1c2VzOgojIC0gIjAvMTIgbm9kZXMgYXJlIGF2YWlsYWJsZTogMTIgbm9kZShz" + + "KSBkaWRuJ3QgbWF0Y2ggUG9kJ3Mgbm9kZSBhZmZpbml0eSIKIyAtICIwLzEyIG5vZGVzIGFyZSBh" + + "dmFpbGFibGU6IDEyIEluc3VmZmljaWVudCBtZW1vcnkiCiMgLSAicGVyc2lzdGVudHZvbHVtZWNs" + + "YWltIG5vdCBmb3VuZCIKYGBgCgojIyMgRml4ZXMKCjEuICoqTm9kZSBzZWxlY3RvciBtaXNtYXRj" + + "aCoqOiBDaGVjayBgbm9kZVNlbGVjdG9yc2AgaW4gZW52aXJvbm1lbnQgZmlsZQoKICAgYGBgYmFz" + + "aAogICBrdWJlY3RsIGdldCBub2RlcyAtLXNob3ctbGFiZWxzIHwgZ3JlcCBudmNmCiAgIGBgYAoK" + + "Mi4gKipTdG9yYWdlIGNsYXNzIG5vdCBmb3VuZCoqOiBDaGVjayBzdG9yYWdlIGNsYXNzIGV4aXN0" + + "cwoKICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBzdG9yYWdlY2xhc3MKICAgYGBgCgozLiAqKklu" + + "c3VmZmljaWVudCByZXNvdXJjZXMqKjogQ2hlY2sgbm9kZSBjYXBhY2l0eQoKICAgYGBgYmFzaAog" + + "ICBrdWJlY3RsIGRlc2NyaWJlIG5vZGUgPG5vZGUtbmFtZT4gfCBncmVwIC1BNSAiQWxsb2NhdGVk" + + "IHJlc291cmNlcyIKICAgYGBgCgojIyBGYWlsdXJlOiBIZWxtIFJlbGVhc2UgaW4gRmFpbGVkIFN0" + + "YXRlCgojIyMgU3ltcHRvbXMKCmBgYGJhc2gKaGVsbSBsaXN0IC1BCiMgU2hvd3MgcmVsZWFzZSB3" + + "aXRoIFNUQVRVUzogZmFpbGVkCmBgYAoKUmUtcnVubmluZyBgaGVsbWZpbGUgc3luY2AgYXBwZWFy" + + "cyB0byBzdWNjZWVkIGJ1dCBzZXJ2aWNlcyBkb24ndCB3b3JrIChtaWdyYXRpb25zIHNraXBwZWQp" + + "LgoKIyMjIERpYWdub3NpcwoKYGBgYmFzaApoZWxtIGhpc3RvcnkgPHJlbGVhc2UtbmFtZT4gLW4g" + + "PG5hbWVzcGFjZT4KYGBgCgojIyMgRml4CgpNdXN0IGRlc3Ryb3kgdGhlIGZhaWxlZCByZWxlYXNl" + + "IGFuZCByZS1zeW5jIChub3QganVzdCBhcHBseSk6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52" + + "PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9PHJlbGVhc2U+IGRlc3Ryb3kKIyBJZiBuYW1lc3Bh" + + "Y2UgbmVlZHMgY2xlYW51cDoKa3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIDxuYW1lc3BhY2U+Cmt1" + + "YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSA8bmFtZXNwYWNlPgojIFJlLWNyZWF0ZSBwdWxsIHNlY3Jl" + + "dCBpZiBuZWVkZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT08" + + "cmVsZWFzZT4gc3luYwpgYGAKCiMjIEZhaWx1cmU6IEFjY291bnQgQm9vdHN0cmFwIEpvYiBGYWls" + + "ZWQKCiMjIyBTeW1wdG9tcwoKU2VydmljZXMgZGVwbG95IGJ1dCBmdW5jdGlvbnMgY2FuJ3QgYmUg" + + "Y3JlYXRlZC4gRXZlbnRzIHNob3cgYm9vdHN0cmFwIGpvYiBmYWlsdXJlLgoKIyMjIERpYWdub3Np" + + "cwoKYGBgYmFzaAojIENoZWNrIGJvb3RzdHJhcCBqb2Igc3RhdHVzCmt1YmVjdGwgZ2V0IGpvYnMg" + + "LW4gbnZjZgoKIyBHZXQgbG9ncyAoam9iIGF1dG8tZGVsZXRlcyBhZnRlciB+NSBtaW51dGVzKQpr" + + "dWJlY3RsIGxvZ3Mgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIC1uIG52Y2YKCiMgQ2hl" + + "Y2sgQVBJIGxvZ3MKa3ViZWN0bCBsb2dzIC1uIG52Y2YgLWwgYXBwLmt1YmVybmV0ZXMuaW8vbmFt" + + "ZT1udmNmLWFwaSAtLXRhaWw9MTAwCmBgYAoKIyMjIENvbW1vbiBDYXVzZXMKCjEuICoqV3Jvbmcg" + + "YmFzZTY0IGNyZWRlbnRpYWxzKio6IENyZWRlbnRpYWxzIGluIGBzZWNyZXRzLzxlbnY+LXNlY3Jl" + + "dHMueWFtbGAgbXVzdCBiZSBgJG9hdXRodG9rZW46QVBJX0tFWWAgYmFzZTY0LWVuY29kZWQsIG5v" + + "dCBqdXN0IHRoZSBBUEkga2V5CgogICBgYGBiYXNoCiAgICMgVmVyaWZ5IHlvdXIgZW5jb2RlZCBj" + + "cmVkZW50aWFsCiAgIGVjaG8gJ1lPVVJfQkFTRTY0X1NUUklORycgfCBiYXNlNjQgLWQKICAgIyBT" + + "aG91bGQgb3V0cHV0OiAkb2F1dGh0b2tlbjpudmFwaS14eHh4eAogICBgYGAKCjIuICoqUmVnaXN0" + + "cnkgdW5yZWFjaGFibGUqKjogQVBJIGNhbid0IHJlYWNoIHRoZSByZWdpc3RyeSBzcGVjaWZpZWQg" + + "aW4gYGFjY291bnRCb290c3RyYXAucmVnaXN0cnlDcmVkZW50aWFsc2AKCiMjIyBGaXgKCkZpeCBj" + + "cmVkZW50aWFscyBpbiBzZWNyZXRzIGZpbGUsIHRoZW4gcmVjb3ZlciBzZXJ2aWNlcyB3aXRob3V0" + + "IGRlc3Ryb3lpbmcgZGVwZW5kZW5jaWVzOgoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVs" + + "bWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIGRlc3Ryb3kKa3ViZWN0bCBk" + + "ZWxldGUgbmFtZXNwYWNlIG52Y2YgYXBpLWtleXMgZXNzIHNpcyAtLWlnbm9yZS1ub3QtZm91bmQK" + + "a3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIG52Y2YgJiYga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNl" + + "IGFwaS1rZXlzICYmIFwKICBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgZXNzICYmIGt1YmVjdGwg" + + "Y3JlYXRlIG5hbWVzcGFjZSBzaXMKIyBSZS1jcmVhdGUgcHVsbCBzZWNyZXRzIGlmIG5lZWRlZApI" + + "RUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZp" + + "Y2VzIHN5bmMKYGBgCgojIyBGYWlsdXJlOiBOVkNBIENsZWFudXAgU3R1Y2sgKEZpbmFsaXplcnMp" + + "CgojIyMgU3ltcHRvbXMKCkNvbXB1dGUtcGxhbmUgY2xlYW51cCBoYW5ncy4gTmFtZXNwYWNlcwpz" + + "dHVjayBpbiBgVGVybWluYXRpbmdgOgoKYGBgYmFzaAprdWJlY3RsIGdldCBucwojIG52Y2Etb3Bl" + + "cmF0b3IgICAgVGVybWluYXRpbmcgICAxMG0KIyBudmNmLWJhY2tlbmQgICAgIFRlcm1pbmF0aW5n" + + "ICAgMTBtCmBgYAoKIyMjIEZpeAoKUnVuIHRoaXMgb25seSBhZ2FpbnN0IHRoZSBjb21wdXRlIGNv" + + "bnRleHQsIGFmdGVyIHRoZSBub3JtYWwgY29tcHV0ZS1wbGFuZQp0ZWFyZG93biBoYXMgZmFpbGVk" + + "LiBSZW1vdmUgZmluYWxpemVycyBmcm9tIE5WQ0ZCYWNrZW5kIGN1c3RvbSByZXNvdXJjZXMgYW5k" + + "CmZvcmNlLWRlbGV0ZSBzdHVjayBuYW1lc3BhY2VzOgoKYGBgYmFzaApleHBvcnQgQ09NUFVURV9D" + + "T05URVhUPTxjb21wdXRlLXBsYW5lLWNvbnRleHQ+CgojIFJlbW92ZSBmaW5hbGl6ZXJzIGZyb20g" + + "TlZDRkJhY2tlbmQgcmVzb3VyY2VzCmt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhU" + + "IiBnZXQgbnZjZmJhY2tlbmRzIC1BIC1vIGpzb24gfCBcCiAganEgJy5pdGVtc1tdIHwgLm1ldGFk" + + "YXRhLm5hbWVzcGFjZSArICIvIiArIC5tZXRhZGF0YS5uYW1lJyAtciB8IFwKICB4YXJncyAtSXt9" + + "IHNoIC1jICdjb250ZXh0PSIkMSI7IG5zPSIkezIlJS8qfSI7IG5hbWU9IiR7MiMjKi99Ijsga3Vi" + + "ZWN0bCAtLWNvbnRleHQgIiRjb250ZXh0IiBwYXRjaCBudmNmYmFja2VuZCAiJG5hbWUiIC1uICIk" + + "bnMiIC0tdHlwZT1tZXJnZSAtcCAie1wibWV0YWRhdGFcIjp7XCJmaW5hbGl6ZXJzXCI6W119fSIn" + + "IF8gIiRDT01QVVRFX0NPTlRFWFQiIHt9CgojIEZvcmNlLWRlbGV0ZSBzdHVjayBuYW1lc3BhY2Vz" + + "IGJ5IGNsZWFyaW5nIHRoZWlyIGZpbmFsaXplcnMKZm9yIG5zIGluIG52Y2Etb3BlcmF0b3IgbnZj" + + "Zi1iYWNrZW5kOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhUIiBnZXQg" + + "bmFtZXNwYWNlICIkbnMiIC1vIGpzb24gMj4vZGV2L251bGwgfCBcCiAgICBqcSAnLnNwZWMuZmlu" + + "YWxpemVycyA9IFtdJyB8IFwKICAgIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhU" + + "IiByZXBsYWNlIFwKICAgICAgLS1yYXcgIi9hcGkvdjEvbmFtZXNwYWNlcy8kbnMvZmluYWxpemUi" + + "IC1mIC0gMj4vZGV2L251bGwKZG9uZQpgYGAKCiMjIEZhaWx1cmU6IE5WQ0EgT3BlcmF0b3IgTWlz" + + "c2luZyBvciBOb3QgUmVhZHkKCiMjIyBTeW1wdG9tcwoKQWZ0ZXIgY29tcHV0ZS1wbGFuZSBpbnN0" + + "YWxsIGNvbXBsZXRlcywgbm8gYG52Y2Etb3BlcmF0b3JgIERlcGxveW1lbnQgZXhpc3RzLCBvcgpp" + + "dCBleGlzdHMgYnV0IHBvZHMgYXJlIG5vdCByZWFkeToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRl" + + "eHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IGRlcGxveW1lbnQgbnZjYS1vcGVyYXRvciBc" + + "CiAgLW4gbnZjYS1vcGVyYXRvcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250" + + "ZXh0PiBnZXQgcG9kcyAtbiBudmNhLW9wZXJhdG9yCmBgYAoKIyMjIERpYWdub3NpcyBhbmQgRml4" + + "ZXMKCkZpcnN0IGlkZW50aWZ5IHdoZXRoZXIgdGhlIGluc3RhbGxhdGlvbiB1c2VkIHRoZSBIZWxt" + + "ZmlsZSB2YWx1ZXMgZmxvdyBvciB0aGUKQ0xJIHByb2ZpbGUgZmxvdy4gUmUtcnVuIG9ubHkgdGhh" + + "dCBmbG93J3MgcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24gc3RlcHMKZnJvbSBbU3BsaXQg" + + "Q29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1k" + + "KS4gRG8gbm90CnN1YnN0aXR1dGUgb25lIGhhbmRvZmYgZm9yIHRoZSBvdGhlci4KCklmIGluc3Rh" + + "bGxhdGlvbiBzdWNjZWVkcyBidXQgcG9kcyBzdGlsbCBmYWlsLCBpbnNwZWN0IHRoZSBjb21wdXRl" + + "IGNvbnRleHQ6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + + "eHQ+IGRlc2NyaWJlIGRlcGxveSBudmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yCmt1" + + "YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGxvZ3MgZGVwbG95bWVudC9u" + + "dmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yIC0tdGFpbD0yMDAKa3ViZWN0bCAtLWNv" + + "bnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG52Y2ZiYWNrZW5kIC1uIG52Y2Etb3Bl" + + "cmF0b3IKYGBgCgpGb3IgcHJpdmF0ZSByZWdpc3RyeSBmYWlsdXJlcywgdmVyaWZ5IHRoYXQgdGhl" + + "IHB1bGwgc2VjcmV0IGV4aXN0cyBpbgpgbnZjYS1vcGVyYXRvcmAuIFRoZSBjaGFydCBhbmQgb3Bl" + + "cmF0b3IgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWA7IGRvIG5vdCB1c2UgYQpicm9hZGVyIG1h" + + "bnVhbCBuYW1lc3BhY2UgbG9vcC4gU2VlCltwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0cy5t" + + "ZCNjb21wdXRlLXBsYW5lLXNlY3JldCkuCgojIyBGYWlsdXJlOiBHYXRld2F5IEVuZHBvaW50IENo" + + "YW5nZWQKCiMjIyBTeW1wdG9tcwoKUmVxdWVzdHMgdGhyb3VnaCB0aGUgY29uZmlndXJlZCByb3V0" + + "ZSBkb21haW4gZmFpbCBhZnRlciB0aGUgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxhbmNlciBpcyBy" + + "ZXBsYWNlZC4gVGhlIEdhdGV3YXkgcmVwb3J0cyBhIG5ldyBlbmRwb2ludC4KCiMjIyBEaWFnbm9z" + + "aXMKCmBgYGJhc2gKR0FURVdBWV9BRERSPSQoa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxh" + + "bmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgXAogIG52Y2YtZ2F0ZXdheSAtbiBlbnZveS1nYXRld2F5" + + "IFwKICAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScpCnRlc3QgLW4g" + + "IiRHQVRFV0FZX0FERFIiCmRpZyArc2hvcnQgImFwaS48ZG9tYWluPiIKY3VybCAtSCAiSG9zdDog" + + "YXBpLjxkb21haW4+IiAiaHR0cDovLyRHQVRFV0FZX0FERFIvaGVhbHRoIgoKIyBDaGVjayBkaXJl" + + "Y3QgYWRkcmVzcyBmaWVsZHMgdXNlZCBieSBhIHNwbGl0IGRlcGxveW1lbnQKZ3JlcCBudmNmTmF0" + + "c1NlcnZpY2VVUkwgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvZW52aXJvbm1lbnRzLzxlbnY+" + + "LnlhbWwKZ3JlcCAtRSAnaWNtc1NlcnZpY2V8cmV2YWxTZXJ2aWNlfG5hdHMnIFwKICBkZXBsb3kv" + + "c3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMvPGVudj4ueWFtbApgYGAKCiMj" + + "IyBGaXgKCktlZXAgYGdsb2JhbC5kb21haW5gLCByb3V0ZSBob3N0bmFtZXMsIGFuZCBIb3N0IG92" + + "ZXJyaWRlcyB1bmNoYW5nZWQuIFVwZGF0ZSBETlMKb3IgdGhlIGRpcmVjdCBjbGllbnQgZGVzdGlu" + + "YXRpb24uIEZvciBzcGxpdCBkZXBsb3ltZW50cywgdXBkYXRlIG9ubHkgZGlyZWN0CkdhdGV3YXkt" + + "YWRkcmVzcyBmaWVsZHMgYW5kIHJlZnJlc2ggcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24g" + + "dGhyb3VnaCB0aGUKc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLiBTZWUKW0V4YW1wbGUgNF0oLi4vZXhh" + + "bXBsZXMubWQjZXhhbXBsZS00LXJlY292ZXItZnJvbS1hLWdhdGV3YXktZW5kcG9pbnQtY2hhbmdl" + + "KS4KCiMjIFVzZWZ1bCBOYW1lc3BhY2UtdG8tU2VydmljZSBNYXBwaW5nCgpRdWljayByZWZlcmVu" + + "Y2UgZm9yIHdoaWNoIHNlcnZpY2VzIHJ1biBpbiB3aGljaCBuYW1lc3BhY2U6Cgp8IE5hbWVzcGFj" + + "ZSB8IFNlcnZpY2VzIHwKfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgbmF0cy1zeXN0ZW0gfCBu" + + "YXRzIHwKfCBjYXNzYW5kcmEtc3lzdGVtIHwgY2Fzc2FuZHJhIHwKfCB2YXVsdC1zeXN0ZW0gfCBv" + + "cGVuYmFvLXNlcnZlciB8CnwgbnZjZiB8IGFwaSwgaW52b2NhdGlvbi1zZXJ2aWNlLCBncnBjLXBy" + + "b3h5LCBub3Rhcnktc2VydmljZSwgcmV2YWwsIGxsbS1yZXF1ZXN0LXJvdXRlciwgbGxtLWFwaS1n" + + "YXRld2F5IHwKfCBhcGkta2V5cyB8IGFwaS1rZXlzLCBhZG1pbi1pc3N1ZXItcHJveHkgfAp8IGVz" + + "cyB8IGVzcy1hcGkgfAp8IHNpcyB8IHNpcyB8CnwgZW52b3ktZ2F0ZXdheS1zeXN0ZW0gfCBlbnZv" + + "eSBnYXRld2F5IChpbmdyZXNzIGNvbnRyb2xsZXIpIHwKfCBlbnZveS1nYXRld2F5IHwgZ2F0ZXdh" + + "eSByZXNvdXJjZSArIHJvdXRlcyB8ClBLBwi1enA7tTAAALUwAABQSwMEFAAIAAAAAAAhAAAAAAAA" + + "AAAAAAAAAEQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2Vz" + + "L2hlbG1maWxlLXN0cnVjdHVyZS5tZFVUBQABAKbOEiMgSGVsbWZpbGUgU3RydWN0dXJlIFJlZmVy" + + "ZW5jZQoKIyMgRGlyZWN0b3J5IExheW91dAoKYGBgYmFzaApudmNmLXNlbGYtbWFuYWdlZC1zdGFj" + + "ay8KfC0tIGhlbG1maWxlLmQvCnwgICB8LS0gMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsICAj" + + "IE5BVFMsIENhc3NhbmRyYSwgT3BlbkJhbwp8ICAgfC0tIDAyLWNvcmUueWFtbC5nb3RtcGwgICAg" + + "ICAgICAgIyBOVkNGIHNlcnZpY2VzICsgaW5ncmVzcwp8ICAgYC0tIDAzLW9ic2VydmFiaWxpdHku" + + "eWFtbC5nb3RtcGwgIyBPYnNlcnZhYmlsaXR5IHN0YWNrIChvcHRpb25hbCkKfC0tIGVudmlyb25t" + + "ZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAgICAgICAgICAgICMgRGVmYXVsdCB2YWx1" + + "ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVudi1uYW1lPi55YW1sICAgICAgICAgICAg" + + "ICAjIFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKfC0tIHNlY3JldHMvCnwgICBgLS0gPGVudi1u" + + "YW1lPi1zZWNyZXRzLnlhbWwgICAgICAjIFNlbnNpdGl2ZSB2YWx1ZXMgKHJlZ2lzdHJ5IGNyZWRz" + + "LCBwYXNzd29yZHMpCmAtLSBnbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgICAjIEdvIHRl" + + "bXBsYXRlIHRoYXQgY29uc3RydWN0cyBwZXItY2hhcnQgdmFsdWVzCgpudmNmLWNvbXB1dGUtcGxh" + + "bmUtc3RhY2svCnwtLSBoZWxtZmlsZS5kLwp8ICAgfC0tIDAxLWRlcGVuZGVuY2llcy55YW1sLmdv" + + "dG1wbCAgIyBDb21wdXRlIHBsYW5lIGRlcGVuZGVuY3kgY29tcG9uZW50cwp8ICAgYC0tIDAyLW52" + + "Y2EueWFtbC5nb3RtcGwgICAgICAgICAgIyBudmNhLW9wZXJhdG9yIGNoYXJ0IGFuZCBudmNhIGNv" + + "bmZpZ3VyYXRpb24KfC0tIGVudmlyb25tZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAg" + + "ICAgICAgICAgICMgRGVmYXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVu" + + "di1uYW1lPi55YW1sICAgICAgICAgICAgICAjIFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKYC0t" + + "IGdsb2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAgICMgR28gdGVtcGxhdGUgdGhhdCBjb25z" + + "dHJ1Y3RzIHBlci1jaGFydCB2YWx1ZXMKYGBgCgpUaGVzZSBzdGFja3MgaGF2ZSBzZXBhcmF0ZSBl" + + "bnZpcm9ubWVudHMgYW5kIGNsdXN0ZXIgY29udGV4dHMuIFRoZSBIZWxtZmlsZQp2YWx1ZXMgZmxv" + + "dyBhdXRob3JzIGJvdGggZW52aXJvbm1lbnQgZmlsZXMuIFRoZSBDTEkgcHJvZmlsZSBmbG93IGlu" + + "c3RlYWQgdXNlcwp0aGUgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBsYW5lIHByb2ZpbGUgYXMgaXRz" + + "IGVuZHBvaW50IHNvdXJjZS4gRG8gbm90IG1peCB0aGUKaGFuZG9mZnMuIFNlZSBbU3BsaXQgQ29t" + + "cHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4K" + + "CiMjIEdvdG1wbCBGaWxlcyBhbmQgVGhlaXIgUmVsZWFzZXMKCiMjIyAwMS1kZXBlbmRlbmNpZXMu" + + "eWFtbC5nb3RtcGwKCnwgUmVsZWFzZSB8IENoYXJ0IHwgTmFtZXNwYWNlIHwgTm90ZXMgfAp8LS0t" + + "LS0tLS0tfC0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLXwKfCBuYXRzIHwgaGVsbS1udmNmLW5h" + + "dHMgfCBuYXRzLXN5c3RlbSB8IE1lc3NhZ2luZyB8Cnwgb3BlbmJhby1zZXJ2ZXIgfCBoZWxtLW52" + + "Y2Ytb3BlbmJhby1zZXJ2ZXIgfCB2YXVsdC1zeXN0ZW0gfCBTZWNyZXRzIG1hbmFnZW1lbnQsIGRl" + + "cGVuZHMgb24gbmF0cyB8CnwgY2Fzc2FuZHJhIHwgaGVsbS1udmNmLWNhc3NhbmRyYSB8IGNhc3Nh" + + "bmRyYS1zeXN0ZW0gfCBEYXRhYmFzZSB8CgpVc2VzIGA8PDogKmRlcGVuZGVuY3lgIHRlbXBsYXRl" + + "IGluaGVyaXRhbmNlIHdpdGggYHJlbGVhc2UtZ3JvdXA6IGRlcGVuZGVuY2llc2AgbGFiZWwuCgoj" + + "IyMgMDItY29yZS55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBM" + + "YWJlbCB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IGFwaS1rZXlz" + + "IHwgaGVsbS1udmNmLWFwaS1rZXlzIHwgYXBpLWtleXMgfCBzZXJ2aWNlcyB8Cnwgc2lzIHwgaGVs" + + "bS1udmNmLXNpcyB8IHNpcyB8IHNlcnZpY2VzIHwKfCBhcGkgfCBoZWxtLW52Y2YtYXBpIHwgbnZj" + + "ZiB8IHNlcnZpY2VzIHwKfCBpbnZvY2F0aW9uLXNlcnZpY2UgfCBoZWxtLW52Y2YtaW52b2NhdGlv" + + "bi1zZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBncnBjLXByb3h5IHwgaGVsbS1udmNmLWdy" + + "cGMtcHJveHkgfCBudmNmIHwgc2VydmljZXMgfAp8IGVzcy1hcGkgfCBoZWxtLW52Y2YtZXNzLWFw" + + "aSB8IGVzcyB8IHNlcnZpY2VzIHwKfCBub3Rhcnktc2VydmljZSB8IGhlbG0tbnZjZi1ub3Rhcnkt" + + "c2VydmljZSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgcmV2YWwgfCBoZWxtLXJldmFsIHwgbnZjZiB8" + + "IHNlcnZpY2VzIHwKfCBsbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNmL2hlbG0tbnZjZi1sbG0tcmVx" + + "dWVzdC1yb3V0ZXIgfCBudmNmIHwgc2VydmljZXMgfAp8IGxsbS1hcGktZ2F0ZXdheSB8IG52Y2Yv" + + "aGVsbS1udmNmLWxsbS1hcGktZ2F0ZXdheSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgYWRtaW4taXNz" + + "dWVyLXByb3h5IHwgaGVsbS1hZG1pbi10b2tlbi1pc3N1ZXItcHJveHkgfCBhcGkta2V5cyB8IChu" + + "byByZWxlYXNlLWdyb3VwIGxhYmVsKSB8CnwgaW5ncmVzcyB8IG52Y2YtZ2F0ZXdheS1yb3V0ZXMg" + + "fCBlbnZveS1nYXRld2F5LXN5c3RlbSB8IGluZ3Jlc3MgfAoKTW9zdCBzZXJ2aWNlcyB1c2UgYGlu" + + "aGVyaXQ6IFt7dGVtcGxhdGU6IHNlcnZpY2V9XWAuIExMTSByZWxlYXNlcyB1c2UgT0NJIGNoYXJ0" + + "cyBmcm9tIHRoZSBgbnZjZmAgcmVwb3NpdG9yeSB3aXRoIHN0YW5kYWxvbmUgYHZhbHVlczogWy4u" + + "L2dsb2JhbC55YW1sLmdvdG1wbF1gIGJsb2NrczsgdGhleSBhcmUgZ2F0ZWQgb24gYGFkZG9ucy5s" + + "bG0uZW5hYmxlZGAuIGBhZG1pbi1pc3N1ZXItcHJveHlgIGFuZCBgaW5ncmVzc2AgaGF2ZSBzdGFu" + + "ZGFsb25lIGB2YWx1ZXM6YCBibG9ja3MuCgojIyMgMDMtb2JzZXJ2YWJpbGl0eS55YW1sLmdvdG1w" + + "bAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBMYWJlbCB8CnwtLS0tLS0tLS18LS0t" + + "LS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IChvYnNlcnZhYmlsaXR5IHJlbGVhc2VzKSB8ICh2" + + "YXJpb3VzKSB8IG9ic2VydmFiaWxpdHkgfCBvYnNlcnZhYmlsaXR5IHwKCkdhdGVkIG9uIG9ic2Vy" + + "dmFiaWxpdHktc3BlY2lmaWMgZmxhZ3MgaW4gdGhlIGVudmlyb25tZW50IGZpbGUuIFNraXBwZWQg" + + "aWYgZGlzYWJsZWQuCgojIyBUZW1wbGF0ZSBJbmhlcml0YW5jZQoKIyMjIGA8PDogKmRlcGVuZGVu" + + "Y3lgIChZQU1MIG1lcmdlKQoKVXNlZCBpbiBgMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsYC4g" + + "TWVyZ2VzIHRoZSB0ZW1wbGF0ZSdzIHByb3BlcnRpZXMgaW50byB0aGUgcmVsZWFzZS4KCioqR290" + + "Y2hhKio6IFlBTUwgbWVyZ2UgcmVwbGFjZXMgbGlzdHMuIElmIHlvdSBhZGQgYSBgdmFsdWVzOmAg" + + "a2V5IHRvIHRoZSByZWxlYXNlLCBpdCAqKnJlcGxhY2VzKiogdGhlIHRlbXBsYXRlJ3MgYHZhbHVl" + + "czpgIGxpc3QgZW50aXJlbHkuIFlvdSBtdXN0IHJlLWluY2x1ZGUgYWxsIHRlbXBsYXRlIHZhbHVl" + + "czoKCkluIHRoZSB0ZW1wbGF0ZSBiZWxvdywgYDxwcml2YXRlLXZhbHVlcz5gIHJlZmVycyB0byB0" + + "aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxlIHN0YWNrIHJvb3QuCgpgYGB5" + + "YW1sCiMgVGVtcGxhdGUgZGVmaW5lczoKdGVtcGxhdGVzOgogIGRlcGVuZGVuY3k6ICZkZXBlbmRl" + + "bmN5CiAgICBjaGFydDogbnZjZi9oZWxtLW52Y2Yte3sgLlJlbGVhc2UuTmFtZSB9fQogICAgdmFs" + + "dWVzOgogICAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAgICAtIC4uLzxwcml2YXRlLXZh" + + "bHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCgojIFdo" + + "ZW4gb3ZlcnJpZGluZywgTVVTVCByZS1pbmNsdWRlIGJvdGg6Ci0gbmFtZTogY2Fzc2FuZHJhCiAg" + + "PDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwgICAg" + + "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNdXN0IHJlLWluY2x1" + + "ZGUKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5W" + + "IiB9fS1zZWNyZXRzLnlhbWwgICAjIE11c3QgcmUtaW5jbHVkZQogICAgLSBjYXNzYW5kcmE6ICAg" + + "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg" + + "WW91ciBvdmVycmlkZQogICAgICAgIHJlc291cmNlczoKICAgICAgICAgIGxpbWl0czoKICAgICAg" + + "ICAgICAgbWVtb3J5OiA4MTkyTWkKYGBgCgojIyMgYGluaGVyaXRgIChIZWxtZmlsZSBuYXRpdmUp" + + "CgpVc2VkIGluIGAwMi1jb3JlLnlhbWwuZ290bXBsYC4gSGVsbWZpbGUncyBuYXRpdmUgaW5oZXJp" + + "dGFuY2UgbWVjaGFuaXNtLgoKYGBgeWFtbAotIG5hbWU6IGFwaQogIHZlcnNpb246IDEuNi4wCiAg" + + "bmFtZXNwYWNlOiBudmNmCiAgaW5oZXJpdDoKICAgIC0gdGVtcGxhdGU6IHNlcnZpY2UKYGBgCgpX" + + "aGVuIGFkZGluZyBgdmFsdWVzOmAgdG8gYW4gaW5oZXJpdGVkIHJlbGVhc2UsIHlvdSBhbHNvIG5l" + + "ZWQgdG8gcmUtaW5jbHVkZSB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgZmlsZXMgc2luY2UgYHZhbHVl" + + "c2AgaXMgYSBsaXN0IHRoYXQgZ2V0cyByZXBsYWNlZC4KCiMjIFZhbHVlcyBQcmVjZWRlbmNlCgpG" + + "cm9tIGxvd2VzdCB0byBoaWdoZXN0IHByaW9yaXR5OgoKMS4gYGVudmlyb25tZW50cy9iYXNlLnlh" + + "bWxgIC0tIGRlZmF1bHRzIHNoYXJlZCBhY3Jvc3MgYWxsIGVudmlyb25tZW50cwoyLiBgZW52aXJv" + + "bm1lbnRzLzxlbnY+LnlhbWxgIC0tIHBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKMy4gYGdsb2Jh" + + "bC55YW1sLmdvdG1wbGAgLS0gR28gdGVtcGxhdGUgcHJvY2Vzc2luZyAoY29uc3RydWN0cyBjaGFy" + + "dC1zcGVjaWZpYyBzdHJ1Y3R1cmUpCjQuIGA8cHJpdmF0ZS12YWx1ZXM+LzxlbnY+LXNlY3JldHMu" + + "eWFtbGAgLS0gc2Vuc2l0aXZlIHZhbHVlcwo1LiBJbmxpbmUgYHZhbHVlczpgIGJsb2NrcyBvbiBy" + + "ZWxlYXNlcyAtLSBoaWdoZXN0IHByZWNlZGVuY2UKCiMjIFdoYXQgZ2xvYmFsLnlhbWwuZ290bXBs" + + "IFBhc3NlcyBUaHJvdWdoCgpgZ2xvYmFsLnlhbWwuZ290bXBsYCByZWFkcyBmcm9tIGAuVmFsdWVz" + + "YCAodGhlIG1lcmdlZCBlbnZpcm9ubWVudCArIGVudi1zcGVjaWZpYyBZQU1MKSBhbmQgY29uc3Ry" + + "dWN0cyBjaGFydC1zcGVjaWZpYyB2YWx1ZXMuIEl0IG9ubHkgcGFzc2VzIHRocm91Z2gga2V5cyBp" + + "dCBleHBsaWNpdGx5IHJlZmVyZW5jZXM6CgojIyMgQ2Fzc2FuZHJhCgotIGBjYXNzYW5kcmEucmVw" + + "bGljYUNvdW50YAotIGBjYXNzYW5kcmEuaW1hZ2UuKmAgKHJlZ2lzdHJ5LCByZXBvc2l0b3J5KQot" + + "IGBjYXNzYW5kcmEubWlncmF0aW9ucy5pbWFnZS4qYAotIGBjYXNzYW5kcmEucGVyc2lzdGVuY2Uu" + + "c2l6ZWAKLSBgY2Fzc2FuZHJhLm5vZGVTZWxlY3RvcmAgKGlmIGBnbG9iYWwubm9kZVNlbGVjdG9y" + + "cy5lbmFibGVkYCkKLSBgY2Fzc2FuZHJhLmdsb2JhbC5kZWZhdWx0U3RvcmFnZUNsYXNzYAoKIyMj" + + "IE5BVFMKCi0gYG5hdHMuY29udGFpbmVyLmltYWdlLipgCi0gYG5hdHMucmVsb2FkZXIuaW1hZ2Uu" + + "KmAKLSBgbmF0cy5uYXRzQm94LmNvbnRhaW5lci5pbWFnZS4qYAotIGBuYXRzLmNvbmZpZy5qZXRz" + + "dHJlYW0uZmlsZVN0b3JlLnB2Yy5zdG9yYWdlQ2xhc3NOYW1lYAotIGBuYXRzLnBvZFRlbXBsYXRl" + + "Lm1lcmdlLnNwZWMubm9kZVNlbGVjdG9yYCAoaWYgZW5hYmxlZCkKCiMjIyBPcGVuQmFvCgotIGBv" + + "cGVuYmFvLm1pZ3JhdGlvbnMuaW1hZ2UuKmAgYW5kIGBvcGVuYmFvLm1pZ3JhdGlvbnMuZW52YAot" + + "IGBvcGVuYmFvLmluamVjdG9yLmltYWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmltYWdlLipgCi0g" + + "YG9wZW5iYW8uc2VydmVyLmRhdGFTdG9yYWdlLipgCi0gTm9kZSBzZWxlY3RvcnMgKGlmIGVuYWJs" + + "ZWQpCgojIyMgU2VydmljZXMgKEFQSSwgU0lTLCBldGMuKQoKLSBgPHNlcnZpY2U+LmltYWdlLipg" + + "IChyZWdpc3RyeSwgcmVwb3NpdG9yeSkKLSBgPHNlcnZpY2U+Lm5vZGVTZWxlY3RvcmAgKGlmIGVu" + + "YWJsZWQpCi0gYDxzZXJ2aWNlPi5lbnYuKmAgKG9ic2VydmFiaWxpdHkgc2V0dGluZ3MpCgojIyMg" + + "TExNIEZ1bmN0aW9uIEVuYWJsZW1lbnQKCkVuYWJsZSB0aGUgTExNIGFkZG9uIGJlZm9yZSBjcmVh" + + "dGluZyBvciBpbnZva2luZyBmdW5jdGlvbnMgd2l0aApgZnVuY3Rpb25UeXBlOiAiTExNImAuIFRo" + + "ZSBhZGRvbiBkZXBsb3lzIGBsbG0tcmVxdWVzdC1yb3V0ZXJgIGFuZApgbGxtLWFwaS1nYXRld2F5" + + "YCwgYWRkcyB0aGUgYGxsbS5pbnZvY2F0aW9uLjxkb21haW4+YCByb3V0ZSB3aGVuIEdhdGV3YXkg" + + "QVBJCmluZ3Jlc3MgaXMgZW5hYmxlZCwgYW5kIGNvbmZpZ3VyZXMgd29ya2VycyB0byB1c2UgdGhl" + + "IExMTSBzaWRlY2FyLiBUaGUgSGVsbWZpbGUKY29uZGl0aW9uIGlzIGBhZGRvbnMubGxtLmVuYWJs" + + "ZWRgLiBEbyBub3QgdXNlIHRoZSBvYnNvbGV0ZSBgbGxtLmVuYWJsZWRgIHBhdGguCgpGb3IgYSBz" + + "aW5nbGUtbm9kZSBpc29sYXRlZCB0ZXN0IGNsdXN0ZXIsIGFkZCB0aGlzIGNvbmZpZ3VyYXRpb24g" + + "dG8KYGVudmlyb25tZW50cy88ZW52Pi55YW1sYCBiZWZvcmUgYXBwbHlpbmcgdGhlIHN0YWNrOgoK" + + "YGBgeWFtbAphZGRvbnM6CiAgbGxtOgogICAgZW5hYmxlZDogdHJ1ZQogICAgZ2F0ZXdheToKICAg" + + "ICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2VydmljZU1vbml0b3I6" + + "CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQogICAgcmVxdWVzdFJvdXRlcjoKICAgICAgcmVwbGlj" + + "YUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2VydmljZU1vbml0b3I6CiAgICAgICAg" + + "ICBlbmFibGVkOiBmYWxzZQoKYWdlbnRDb25maWc6CiAgbWVyZ2VDb25maWc6IHwKICAgIGNsdXN0" + + "ZXI6CiAgICAgIHZhbGlkYXRpb25Qb2xpY3k6CiAgICAgICAgbmFtZTogVW5yZXN0cmljdGVkCiAg" + + "ICB3b3JrbG9hZDoKICAgICAgc3RhcmdhdGVRVUlDSW5zZWN1cmU6IHRydWUKYGBgCgpVc2UgYHJl" + + "cGxpY2FDb3VudDogMWAgb25seSBmb3IgbG9jYWwgb3Igc2luZ2xlLW5vZGUgdGVzdCBjbHVzdGVy" + + "cy4gVGhlIGJ1bmRsZWQKTlZDRiBBUEkgY3VycmVudGx5IHNlcnZlcyBwbGFpbnRleHQgZ1JQQyBv" + + "biBwb3J0IDkwOTAsIHNvIHRoZSBzZWxmLW1hbmFnZWQgc3RhY2sKZGVmYXVsdHMgdGhlIExMTSBB" + + "UEkgR2F0ZXdheSBhdXRoZW50aWNhdGlvbiBob3AgdG8gcGxhaW50ZXh0LiBTZXQKYGFkZG9ucy5s" + + "bG0uZ2F0ZXdheS5hdXRoLmdycGNJbnNlY3VyZTogZmFsc2VgIG9ubHkgd2l0aCBhIFRMUy1jYXBh" + + "YmxlIE5WQ0YgQVBJLgoKV29ya2VyLXRvLXJvdXRlciB0cmFuc3BvcnQgaXMgc2VwYXJhdGUuIEZv" + + "ciBzaGFyZWQgb3IgcHJvZHVjdGlvbiBjbHVzdGVycywgdXNlCnRoZSByZXF1aXJlZCByZXBsaWNh" + + "IGNvdW50IGFuZCB0aGUgbWFuYWdlZCBUTFMgY29uZmlndXJhdGlvbi4gVGhlCmB3b3JrbG9hZC5z" + + "dGFyZ2F0ZVFVSUNJbnNlY3VyZWAgc2V0dGluZyBlbmFibGVzIHBsYWludGV4dCB3b3JrZXIgdHJh" + + "bnNwb3J0IGFuZAptdXN0IG5vdCBiZSB1c2VkIGluIHByb2R1Y3Rpb24uCgpUaGUgcmVxdWVzdCBy" + + "b3V0ZXIgdXNlcyBgcG93ZXItb2YtdHdvYCB3aGVuIG5vIGxvYWQtYmFsYW5jZXIgY29uZmlndXJh" + + "dGlvbiBpcwpzZXQuIENvbmZpZ3VyZSBvdGhlciByb3V0aW5nIG1ldGhvZHMgd2l0aCB0aGUKW0xM" + + "TSBSZXF1ZXN0IFJvdXRlciBMb2FkIEJhbGFuY2luZ10oaHR0cHM6Ly9naXRodWIuY29tL05WSURJ" + + "QS9udmNmL2Jsb2IvbWFpbi9kb2NzL3NlbGYtbWFuYWdlZC9sbG0tcmVxdWVzdC1yb3V0ZXItbG9h" + + "ZC1iYWxhbmNpbmcubWQpCmd1aWRlLgoKSWYgdGhlIHNpZGVjYXIgaW1hZ2UgaXMgbWlycm9yZWQg" + + "b3V0c2lkZSB0aGUgc3RhY2sncyBkZWZhdWx0IGltYWdlIHJlZ2lzdHJ5IGFuZApyZXBvc2l0b3J5" + + "LCBzZXQgdGhlIGdlbmVyYXRlZCB3b3JrZXIgc2lkZWNhciBpbWFnZSBleHBsaWNpdGx5OgoKYGBg" + + "eWFtbAphcGk6CiAgcmVtb3RlQ29uZmlnOgogICAgY29uZmlnRGF0YToKICAgICAgbnZjZjoKICAg" + + "ICAgICBzaWRlY2FyczoKICAgICAgICAgIGxsbS1yb3V0ZXItY2xpZW50LWltYWdlOiA8cmVnaXN0" + + "cnk+LzxyZXBvc2l0b3J5Pi9weWxvbjowLjE0LjEKYGBgCgpUaGUgbGVnYWN5IGBhcGkuZW52Lk5W" + + "Q0ZfU0lERUNBUlNfTExNX1JPVVRFUl9DTElFTlRfSU1BR0VgIHBhdGggaXMgZGVwcmVjYXRlZC4K" + + "VGhlIHN0YWNrIHRyYW5zbGF0ZXMgaXQgZm9yIG9uZSBjb21wYXRpYmlsaXR5IHdpbmRvdywgYnV0" + + "IG5ldyBjb25maWd1cmF0aW9ucwptdXN0IHVzZSB0aGUgcmVtb3RlLWNvbmZpZyBwYXRoLiBDb25m" + + "bGljdGluZyB2YWx1ZXMgZmFpbCByZW5kZXJpbmcuCgpSZW5kZXIgYW5kIGFwcGx5IHRoZSB1cGRh" + + "dGVkIGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQsIHRoZW4gcmVmcmVzaCBldmVyeQpyZWdpc3Rl" + + "cmVkIGNvbXB1dGUgcGxhbmUgdXNpbmcgdGhlIHNhbWUgaGFuZG9mZiB1c2VkIGZvciBpdHMgaW5z" + + "dGFsbGF0aW9uIHNvCk5WQ0EgcmVjZWl2ZXMgYGFnZW50Q29uZmlnLm1lcmdlQ29uZmlnYDoKCmBg" + + "YGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08" + + "ZW52PiBoZWxtZmlsZSBzeW5jCmBgYAoKVXNlIHRoZSBjb21wbGV0ZSBjb21wdXRlLXBsYW5lIGlu" + + "c3RhbGwgY29tbWFuZCBmcm9tCltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29t" + + "cHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLiBBCkNMSS1wcm9maWxlIGluc3RhbGxhdGlvbiBt" + + "dXN0IHJlbWFpbiBwcm9maWxlLWRyaXZlbjsgYSBIZWxtZmlsZSBpbnN0YWxsYXRpb24KbXVzdCBy" + + "ZW1haW4gdmFsdWVzLWRyaXZlbi4KCkV4aXN0aW5nIExMTSBmdW5jdGlvbiB2ZXJzaW9ucyByZXRh" + + "aW4gdGhlIHdvcmtlci1zaWRlY2FyIGltYWdlIG1ldGFkYXRhCmNhcHR1cmVkIHdoZW4gdGhlIHZl" + + "cnNpb24gaXMgY3JlYXRlZC4gUmVwbGFjaW5nIHBvZHMgb3IgcmVkZXBsb3lpbmcgdGhlIHNhbWUK" + + "dmVyc2lvbiBkb2VzIG5vdCBhcHBseSBhIG5ldyBQeWxvbiBpbWFnZS4gQWZ0ZXIgdGhlIGNvbnRy" + + "b2wtcGxhbmUgdXBkYXRlLApjcmVhdGUgYW5kIGRlcGxveSBhIG5ldyBmdW5jdGlvbiB2ZXJzaW9u" + + "LiBWZXJpZnkgdGhlIGNvbnRyb2wgcGxhbmUsIHJvdXRlLCBhbmQKd29ya2VyIHNpZGVjYXI6Cgpg" + + "YGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSAtbiBudmNmIGxsbS1hcGktZ2F0ZXdheQprdWJlY3Rs" + + "IGdldCBzdGF0ZWZ1bHNldCAtbiBudmNmIGxsbS1yZXF1ZXN0LXJvdXRlcgprdWJlY3RsIGdldCBw" + + "b2RzIC1uIG52Y2YgfCBncmVwIC1FICdsbG0tYXBpLWdhdGV3YXl8bGxtLXJlcXVlc3Qtcm91dGVy" + + "JwprdWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIGxsbQprdWJlY3RsIC1uIG52Y2YtYmFj" + + "a2VuZCBnZXQgcG9kIDxmdW5jdGlvbi1wb2Q+IFwKICAtbyBqc29ucGF0aD0ne3JhbmdlIC5zcGVj" + + "LmNvbnRhaW5lcnNbPyhALm5hbWU9PSJsbG0td29ya2VyIildLmFyZ3NbKl19ey59eyJcXG4ifXtl" + + "bmR9JwpgYGAKCkZvciBsb2NhbCBwbGFpbnRleHQgY2x1c3RlcnMsIHRoZSBgbGxtLXdvcmtlcmAg" + + "YXJncyBtdXN0IGluY2x1ZGUKYC0tcXVpYy1pbnNlY3VyZWAuCgpGb3IgbG9hZC1iYWxhbmNlciBz" + + "Y2hlbWEgYW5kIGFsZ29yaXRobSBiZWhhdmlvciwgc2VlIHRoZQpbU3RhcmdhdGUgY29uZmlndXJh" + + "dGlvbiBndWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9zcmMv" + + "bGlicmFyaWVzL3J1c3Qvc3RhcmdhdGUvZG9jcy9sb2FkLWJhbGFuY2VyLWNvbmZpZ3VyYXRpb24u" + + "bWQpLgoKIyMgSGVsbWZpbGUgU2VsZWN0b3JzCgpUYXJnZXQgc3BlY2lmaWMgcmVsZWFzZXMgb3Ig" + + "Z3JvdXBzOgoKYGBgYmFzaAojIEJ5IHJlbGVhc2UgZ3JvdXAKSEVMTUZJTEVfRU5WPTxlbnY+IGhl" + + "bG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1kZXBlbmRlbmNpZXMgc3luYwpIRUxNRklM" + + "RV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIHN5" + + "bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1p" + + "bmdyZXNzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFz" + + "ZS1ncm91cD1vYnNlcnZhYmlsaXR5IHN5bmMKCiMgQnkgcmVsZWFzZSBuYW1lCkhFTE1GSUxFX0VO" + + "Vj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMKSEVMTUZJTEVf" + + "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHkgc3lu" + + "YwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWxsbS1yZXF1ZXN0" + + "LXJvdXRlciBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9" + + "bGxtLWFwaS1nYXRld2F5IHN5bmMKCiMgVGVtcGxhdGUgb25seSAoZHJ5IHJ1bikKSEVMTUZJTEVf" + + "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUKCiMg" + + "RGVzdHJveSBhIHNpbmdsZSByZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + + "bGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIGRlc3Ryb3kKYGBgCgpOb3RlOiBgYWRtaW4taXNzdWVyLXBy" + + "b3h5YCBoYXMgbm8gYHJlbGVhc2UtZ3JvdXBgIGxhYmVsLiBVc2UgYC0tc2VsZWN0b3IgbmFtZT1h" + + "ZG1pbi1pc3N1ZXItcHJveHlgLgpQSwcIExHsjQoqAAAKKgAAUEsDBBQACAAAAAAAIQAAAAAAAAAA" + + "AAAAAAA/AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9u" + + "dmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SIyBOVkNGIFVJIEFkZG9uCgpOVkNGIFVJIGlzIGFuIG9w" + + "dGlvbmFsLCBjdXN0b21lci1mYWNpbmcgTlZDRiBhZG1pbi1wYW5lbCBVSS4gSXQgaXMgZGlzYWJs" + + "ZWQgYnkKZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBp" + + "bmNsdWRlIHRoZSBOVkNGIFVJIGFkZG9uLgoKIyMgV2hlbiB0byBlbmFibGUKCkVuYWJsZSBOVkNG" + + "IFVJIG9ubHkgd2hlbiB5b3UgbmVlZCB0aGUgYWRtaW4tcGFuZWwgVUkgYW5kIHlvdXIgZXh0cmFj" + + "dGVkIHN0YWNrCnBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLiBJZiB0aGUgcGFja2FnZSBkb2Vz" + + "IG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UKYW5kIGBudmNmVWlgIHJvdXRlIHZhbHVl" + + "cywgc2tpcCB0aGUgYWRkb24gdW50aWwgeW91IHVzZSBhIHBhY2thZ2UgdGhhdCBpbmNsdWRlcwp0" + + "aGVtLgoKIyMgRW5hYmxlIHRoZSBhZGRvbgoKRW5hYmxlIGl0IGluIGBlbnZpcm9ubWVudHMvPGVu" + + "di1uYW1lPi55YW1sYDoKCmBgYHlhbWwKYWRkb25zOgogIG52Y2ZVaToKICAgIGVuYWJsZWQ6IHRy" + + "dWUKYGBgCgojIyBDcmVhdGUgbmFtZXNwYWNlIGFuZCBpbWFnZSBwdWxsIHNlY3JldAoKQ3JlYXRl" + + "IHRoZSBuYW1lc3BhY2UsIGFuZCBhbiBpbWFnZSBwdWxsIHNlY3JldCBvbmx5IGlmIHB1bGxpbmcg" + + "ZnJvbSBhIHByaXZhdGUKcmVnaXN0cnk6CgpgYGBiYXNoCmt1YmVjdGwgY3JlYXRlIG5hbWVzcGFj" + + "ZSBudmNmLXVpIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQoK" + + "IyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGUuZy4sIE5HQyBudmNy" + + "LmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmt1YmVjdGwgY3JlYXRlIHNlY3Jl" + + "dCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8g" + + "XAogIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogIC0tZG9ja2VyLXBhc3N3b3Jk" + + "PSIkTkdDX0FQSV9LRVkiIFwKICAtLW5hbWVzcGFjZT1udmNmLXVpIFwKICAtLWRyeS1ydW49Y2xp" + + "ZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KYGBgCgpUaGUgZGVmYXVsdCByb3V0ZSBo" + + "b3N0IGlzIGBudmNmLXVpLjxkb21haW4+YCBhbmQgdGhlIGJhY2tlbmQgaXMKYG52Y2YtdWkubnZj" + + "Zi11aTo4MzAwYC4KCiMjIEFwcGx5IHRoZSBzZXJ2aWNlIGFuZCByb3V0ZQoKQWZ0ZXIgY29uZmly" + + "bWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYG52Y2YtdWlgIHJlbGVhc2UsIHByZXZpZXcg" + + "YW5kIGFwcGx5CnRoZSBzZXJ2aWNlIGFuZCByb3V0ZToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxl" + + "bnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgdGVtcGxhdGUKSEVMTUZJ" + + "TEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgc3luYwpI" + + "RUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9" + + "aW5ncmVzcyBzeW5jCmBgYAoKIyMgVmVyaWZ5CgpWZXJpZnkgdGhlIHJvdXRlIG9ubHkgd2hlbiB0" + + "aGUgYWRkb24gaXMgcHJlc2VudCBhbmQgZW5hYmxlZDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgZGVw" + + "bG95LHN2YyAtbiBudmNmLXVpCmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgLWkgbnZj" + + "Zi11aQpjdXJsIC1pIC1IICJIb3N0OiBudmNmLXVpLjxkb21haW4+IiAiaHR0cDovLzxnYXRld2F5" + + "LWFkZHJlc3M+L3N0YXR1cyIKYGBgCgojIyBTZWN1cml0eQoKVGhlIE5WQ0YgVUkgYWRtaW4gcGFu" + + "ZWwgaXMgY3VycmVudGx5IHVuYXV0aGVudGljYXRlZC4gRG8gbm90IGV4cG9zZSBpdCB0byB0aGUK" + + "cHVibGljIGludGVybmV0LiBSZXN0cmljdCBhY2Nlc3MgdG8gYSB0cnVzdGVkIG5ldHdvcmssIFZQ" + + "Tiwgb3IgYW4gYXV0aGVudGljYXRpbmcKcHJveHkgaW4gZnJvbnQgb2YgdGhlIGBudmNmLXVpYCBy" + + "b3V0ZS4KUEsHCDj5J6+5BwAAuQcAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAPgAJAGRhdGEv" + + "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1k" + + "VVQFAAEAps4SIyBJbWFnZSBQdWxsIFNlY3JldHMgUmVmZXJlbmNlCgojIyBPdmVydmlldwoKV2hl" + + "biBwdWxsaW5nIE5WQ0YgaW1hZ2VzIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5IChmb3IgZXhhbXBs" + + "ZSwgTkdDCmBudmNyLmlvYCksIEt1YmVybmV0ZXMgbmVlZHMgYGltYWdlUHVsbFNlY3JldHNgIG9u" + + "IGV2ZXJ5IHBvZC4gQ29udHJvbC1wbGFuZSBhbmQKY29tcHV0ZS1wbGFuZSBjcmVkZW50aWFscyBh" + + "cmUgY29uZmlndXJlZCBpbiB0aGVpciBvd24gY2x1c3RlciBjb250ZXh0cy4gRG8gbm90CnVzZSBv" + + "bmUgbWl4ZWQgbmFtZXNwYWNlIGxpc3QuCgpUaGUgcmVjb21tZW5kZWQgY29udHJvbC1wbGFuZSBh" + + "cHByb2FjaCB1c2VzIEt5dmVybm8gdG8gaW5qZWN0IHRoZSBzZWNyZXQgaW50bwpjb250cm9sLXBs" + + "YW5lIHBvZHMgYXQgYWRtaXNzaW9uIHRpbWUuIFRoZSBjb21wdXRlLXBsYW5lIGNoYXJ0IGFuZCBv" + + "cGVyYXRvciB1c2UKdGhlIHNlY3JldCBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciBpdCB0" + + "byBgbnZjYS1zeXN0ZW1gLgoKIyMgS3l2ZXJubyBBcHByb2FjaCAoUmVjb21tZW5kZWQpCgojIyMg" + + "MS4gSW5zdGFsbCBLeXZlcm5vCgpgYGBiYXNoCmhlbG0gcmVwbyBhZGQga3l2ZXJubyBodHRwczov" + + "L2t5dmVybm8uZ2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUKaGVsbSBpbnN0YWxs" + + "IGt5dmVybm8ga3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUtbmFtZXNwYWNlIFwK" + + "ICAtLWt1YmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PgpgYGAKCiMjIyAyLiBDcmVh" + + "dGUgY29udHJvbC1wbGFuZSBwdWxsIHNlY3JldHMKCmBgYGJhc2gKZXhwb3J0IE5HQ19BUElfS0VZ" + + "PSI8eW91ci1uZ2MtYXBpLWtleT4iCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5" + + "c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8K" + + "ICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgbmFtZXNw" + + "YWNlICIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250" + + "ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQoKZm9yIG5zIGluIGNh" + + "c3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5" + + "c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + + "Y29udGV4dD4gY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAt" + + "LWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9r" + + "ZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNw" + + "YWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250" + + "ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQpgYGAKCkZvciBub24t" + + "TkdDIHJlZ2lzdHJpZXMsIHJlcGxhY2UgYC0tZG9ja2VyLXNlcnZlcmAsIGAtLWRvY2tlci11c2Vy" + + "bmFtZWAsIGFuZCBgLS1kb2NrZXItcGFzc3dvcmRgLgoKIyMjIDMuIEFwcGx5IEt5dmVybm8gQ2x1" + + "c3RlclBvbGljeQoKYGBgeWFtbAphcGlWZXJzaW9uOiBreXZlcm5vLmlvL3YxCmtpbmQ6IENsdXN0" + + "ZXJQb2xpY3kKbWV0YWRhdGE6CiAgbmFtZTogbnZjZi1hZGQtaW1hZ2VwdWxsc2VjcmV0cwpzcGVj" + + "OgogIGJhY2tncm91bmQ6IGZhbHNlCiAgcnVsZXM6CiAgICAtIG5hbWU6IGFkZC1pbWFnZXB1bGxz" + + "ZWNyZXQtdG8tbnZjZi1wb2RzCiAgICAgIG1hdGNoOgogICAgICAgIGFueToKICAgICAgICAtIHJl" + + "c291cmNlczoKICAgICAgICAgICAga2luZHM6CiAgICAgICAgICAgIC0gUG9kCiAgICAgICAgICAg" + + "IG5hbWVzcGFjZXM6CiAgICAgICAgICAgIC0gIm52Y2YiCiAgICAgICAgICAgIC0gImFwaS1rZXlz" + + "IgogICAgICAgICAgICAtICJzaXMiCiAgICAgICAgICAgIC0gImVzcyIKICAgICAgICAgICAgLSAi" + + "bmF0cy1zeXN0ZW0iCiAgICAgICAgICAgIC0gImNhc3NhbmRyYS1zeXN0ZW0iCiAgICAgICAgICAg" + + "IC0gInZhdWx0LXN5c3RlbSIKICAgICAgICAgICAgLSAiY2VydC1tYW5hZ2VyIgogICAgICBtdXRh" + + "dGU6CiAgICAgICAgcGF0Y2hTdHJhdGVnaWNNZXJnZToKICAgICAgICAgIG1ldGFkYXRhOgogICAg" + + "ICAgICAgICBhbm5vdGF0aW9uczoKICAgICAgICAgICAgICBudmNmLm52aWRpYS5jb20vaW1hZ2Vw" + + "dWxsc2VjcmV0LWluamVjdGVkLWJ5OiBreXZlcm5vCiAgICAgICAgICBzcGVjOgogICAgICAgICAg" + + "ICBpbWFnZVB1bGxTZWNyZXRzOgogICAgICAgICAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpg" + + "YGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IFwK" + + "ICAtZiBreXZlcm5vLWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAKCiMjIyA0LiBJbnN0" + + "YWxsIHRoZSBjb250cm9sIHBsYW5lCgpDb250aW51ZSB3aXRoIHRoZSBzZWxlY3RlZCBjb250cm9s" + + "LXBsYW5lIGluc3RhbGxhdGlvbiBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25d" + + "KGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4gTm8KY29udHJvbC1wbGFuZSBoZWxtZmls" + + "ZSBtb2RpZmljYXRpb25zIGFyZSBuZWVkZWQuIEt5dmVybm8gaW5qZWN0cyB0aGUgcHVsbApzZWNy" + + "ZXQgaW50byBuZXcgY29udHJvbC1wbGFuZSBwb2RzLgoKIyMgQ29tcHV0ZS1QbGFuZSBTZWNyZXQK" + + "CkNyZWF0ZSB0aGUgc2VjcmV0IG9ubHkgaW4gYG52Y2Etb3BlcmF0b3JgIG9uIHRoZSBjb21wdXRl" + + "IGNsdXN0ZXI6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + + "eHQ+IGNyZWF0ZSBuYW1lc3BhY2UgbnZjYS1vcGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAt" + "byB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGFw" + - "cGx5IC1mIC0KYGBgCgpSZWZlcmVuY2UgaXQgaW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1l" + - "bnQgZmlsZToKCmBgYHlhbWwKZ2xvYmFsOgogIGltYWdlUHVsbFNlY3JldHM6CiAgICAtIG5hbWU6" + - "IG52Y3ItY3JlZHMKYGBgCgpUaGUgY2hhcnQgYW5kIG9wZXJhdG9yIHVzZSB0aGF0IHJlZmVyZW5j" + - "ZSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciB0aGUKc2VjcmV0IHRvIGBudmNhLXN5c3Rl" + - "bWAuIERvIG5vdCBjcmVhdGUgYSBicm9hZGVyIG1hbnVhbCBjb21wdXRlIG5hbWVzcGFjZSBsaXN0" + - "LiBGb2xsb3cKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShjb21wdXRlLXBsYW5l" + - "LWluc3RhbGxhdGlvbi5tZCkgZm9yIHRoZQpzZWxlY3RlZCBpbnN0YWxsIGZsb3cuCgojIyBWZXJp" + - "ZmljYXRpb24KCmBgYGJhc2gKIyBDaGVjayB0aGF0IGEgY29udHJvbC1wbGFuZSBwb2QgaGFzIHRo" + - "ZSBpbmplY3RlZCBzZWNyZXQKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4" + - "dD4gZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IFwKICAtbyBqc29ucGF0aD0ney5z" + - "cGVjLmltYWdlUHVsbFNlY3JldHN9JwojIEV4cGVjdGVkOiBbeyJuYW1lIjoibnZjci1jcmVkcyJ9" + - "XQoKIyBDaGVjayB0aGUgS3l2ZXJubyBhbm5vdGF0aW9uCmt1YmVjdGwgLS1jb250ZXh0IDxjb250" + - "cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiBcCiAg" + - "LW8ganNvbnBhdGg9J3subWV0YWRhdGEuYW5ub3RhdGlvbnMubnZjZlwubnZpZGlhXC5jb20vaW1h" + - "Z2VwdWxsc2VjcmV0LWluamVjdGVkLWJ5fScKIyBFeHBlY3RlZDoga3l2ZXJubwoKIyBDaGVjayBw" + - "dWxsIGV2ZW50cwprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQg" + - "ZXZlbnRzIC1uIDxuYW1lc3BhY2U+IFwKICAtLXNvcnQtYnk9Jy5sYXN0VGltZXN0YW1wJyB8IGdy" + - "ZXAgLWkgcHVsbAojIFNob3VsZCBzaG93ICJTdWNjZXNzZnVsbHkgcHVsbGVkIiBub3QgIjQwMSBV" + - "bmF1dGhvcml6ZWQiCgojIENoZWNrIHRoZSBjaGFydC9vcGVyYXRvciBtaXJyb3Igb24gdGhlIGNv" + - "bXB1dGUgY2x1c3RlcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBn" + - "ZXQgc2VjcmV0IG52Y3ItY3JlZHMgXAogIC1uIG52Y2Etc3lzdGVtCmBgYAoKIyMgV2hlbiBQdWxs" + - "IFNlY3JldHMgQXJlIE5vdCBOZWVkZWQKCi0gKipBV1MgRUNSIHdpdGggSUFNIG5vZGUgcm9sZXMq" + - "KjogSWYgeW91ciBub2RlcyBoYXZlIGBBbWF6b25FQzJDb250YWluZXJSZWdpc3RyeVJlYWRPbmx5" + - "YCBJQU0gcG9saWN5LCBLdWJlcm5ldGVzIGNhbiBwdWxsIGZyb20gRUNSIHdpdGhvdXQgZXhwbGlj" + - "aXQgc2VjcmV0cy4KLSAqKlB1YmxpYyByZWdpc3RyaWVzKio6IE5vIHB1bGwgc2VjcmV0cyBuZWVk" + - "ZWQuCi0gKipDU1AgYnVpbHQtaW4gY3JlZGVudGlhbCBoZWxwZXJzKio6IEdLRSBBcnRpZmFjdCBS" + - "ZWdpc3RyeSwgQXp1cmUgQUNSIHdpdGggbWFuYWdlZCBpZGVudGl0eSwgYW5kIHNpbWlsYXIgc2Vy" + - "dmljZXMuCgojIyBUcm91Ymxlc2hvb3RpbmcKCiMjIyBQb2RzIHN0aWxsIGluIEltYWdlUHVsbEJh" + - "Y2tPZmYgYWZ0ZXIgYXBwbHlpbmcgcG9saWN5CgpUaGUgS3l2ZXJubyBwb2xpY3kgb25seSBhZmZl" + - "Y3RzIHBvZHMgY3JlYXRlZCAqKmFmdGVyKiogdGhlIHBvbGljeSBpcyBhcHBsaWVkLiBEZWxldGUg" + - "c3R1Y2sgcG9kcyB0byB0cmlnZ2VyIHJlY3JlYXRpb246CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250" + - "ZXh0IDx0YXJnZXQtY29udGV4dD4gZGVsZXRlIHBvZHMgLW4gPG5hbWVzcGFjZT4gLS1hbGwKYGBg" + - "CgojIyMgS3l2ZXJubyBhZG1pc3Npb24gY29udHJvbGxlciBub3QgcnVubmluZwoKYGBgYmFzaApr" + - "dWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgcG9kcyAtbiBreXZl" + - "cm5vCiMgQWxsIHBvZHMgc2hvdWxkIGJlIFJ1bm5pbmcKYGBgCgojIyMgUG9saWN5IG5vdCBtYXRj" + - "aGluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBn" + - "ZXQgY2x1c3RlcnBvbGljeSBudmNmLWFkZC1pbWFnZXB1bGxzZWNyZXRzCiMgU2hvdWxkIHNob3cg" + - "UkVBRFk6IFRydWUKYGBgCgojIyMgV3Jvbmcgc2VjcmV0IG5hbWUKClRoZSBwb2xpY3kgcmVmZXJl" + - "bmNlcyBgbnZjci1jcmVkc2AuIFZlcmlmeSB0aGUgc2VjcmV0IGV4aXN0cyB3aXRoIHRoYXQgZXhh" + - "Y3QgbmFtZToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPHRhcmdldC1jb250ZXh0PiBnZXQg" + - "c2VjcmV0IG52Y3ItY3JlZHMgLW4gPG5hbWVzcGFjZT4KYGBgClBLBwhLQjWoABYAAAAWAABQSwEC" + - "FAAUAAgAAAAAACEACoXw2EoQAABKEAAAEgAJAAAAAAAAAAAAAAAAAAAAZGF0YS9tYW5pZmVzdC5q" + - "c29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAP9282dTYQAAU2EAACMACQAAAAAAAAAAAAAAkxAA" + - "AGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAA" + - "AAAhAJn2DaXdDQAA3Q0AADMACQAAAAAAAAAAAAAAQHIAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQt" + - "Y2xpL2V4YW1wbGVzL2NpLXBpcGVsaW5lcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQChFOOB" + - "XQwAAF0MAAA0AAkAAAAAAAAAAAAAAIeAAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9leGFt" + - "cGxlcy9tdWx0aS1jbHVzdGVyLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEInSQ8FDQAABQ0A" + - "ADcACQAAAAAAAAAAAAAAT40AAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvYWRk" + - "LWNvbXB1dGUtcGxhbmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA1N6NNJ8ZAACfGQAAOQAJ" + - "AAAAAAAAAAAAAADCmgAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9jcmVhdGUt" + - "YW5kLXJ1bi10YXNrLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhANJD3AQYJQAAGCUAADcACQAA" + - "AAAAAAAAAAAA0bQAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvZGVwbG95LWFu" + - "ZC1pbnZva2UubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAcpIsJr4OAAC+DgAAPQAJAAAAAAAA" + - "AAAAAABX2gAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9kaWFnbm9zZS1mYWls" + - "ZWQtaW5zdGFsbC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBCceYeASgAAAEoAAA6AAkAAAAA" + - "AAAAAAAAAInpAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2luc3RhbGwtZnJv" + - "bS1zY3JhdGNoLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAKrhOrnIBwAAyAcAADkACQAAAAAA" + - "AAAAAAAA+xEBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvcm90YXRlLWNsdXN0" + - "ZXItandrcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQDah2NW5CEAAOQhAAAuAAkAAAAAAAAA" + - "AAAAADMaAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3RlYXJkb3duLm1kVVQF" + - "AAEAps4SUEsBAhQAFAAIAAAAAAAhAHIND2QhIwAAISMAADAACQAAAAAAAAAAAAAAfDwBAGRhdGEv" + - "bnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9jb21tYW5kcy5tZFVUBQABAKbOElBLAQIU" + - "ABQACAAAAAAAIQBGrnbwDAgAAAwIAAAyAAkAAAAAAAAAAAAAAARgAQBkYXRhL252Y2Ytc2VsZi1t" + - "YW5hZ2VkLWNsaS9yZWZlcmVuY2UvZXhpdC1jb2Rlcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAA" + - "IQCsTIqjyzIAAMsyAAAtAAkAAAAAAAAAAAAAAHloAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNs" + - "aS9yZWZlcmVuY2UvZmxhZ3MubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA864ThHQRAAB0EQAA" + - "NwAJAAAAAAAAAAAAAAComwEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL3Ry" + - "b3VibGVzaG9vdGluZy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQARwxSTSWIAAEliAAAsAAkA" + - "AAAAAAAAAAAAAIqtAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5t" + - "ZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBHVWpWSlYAAEpWAAA0AAkAAAAAAAAAAAAAADYQAgBk" + - "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9ldmFscy9ldmFscy5qc29uVVQFAAEA" + - "ps4SUEsBAhQAFAAIAAAAAAAhAAJSTkB/KAAAfygAAC8ACQAAAAAAAAAAAAAA62YCAGRhdGEvbnZj" + - "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL2V4YW1wbGVzLm1kVVQFAAEAps4SUEsBAhQAFAAI" + - "AAAAAAAhAJZjvFkSMAAAEjAAAEwACQAAAAAAAAAAAAAA0I8CAGRhdGEvbnZjZi1zZWxmLW1hbmFn" + - "ZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWRV" + - "VAUAAQCmzhJQSwECFAAUAAgAAAAAACEAtXpwO7UwAAC1MAAAOwAJAAAAAAAAAAAAAABlwAIAZGF0" + - "YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRV" + - "VAUAAQCmzhJQSwECFAAUAAgAAAAAACEAExHsjQoqAAAKKgAARAAJAAAAAAAAAAAAAACM8QIAZGF0" + - "YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1" + - "Y3R1cmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAOPknr7kHAAC5BwAAPwAJAAAAAAAAAAAA" + - "AAARHAMAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9udmNm" + - "LXVpLWFkZG9uLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEtCNagAFgAAABYAAD4ACQAAAAAA" + - "AAAAAAAAQCQDAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMv" + - "cHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SUEsFBgAAAAAXABcArwkAALU6AwAAAA==" + "cGx5IC1mIC0KCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGNyZWF0" + + "ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogIC0tZG9ja2VyLXNlcnZlcj1u" + + "dmNyLmlvIFwKICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAtLWRvY2tlci1w" + + "YXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgLS1uYW1lc3BhY2U9bnZjYS1vcGVyYXRvciBcCiAg" + + "LS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + + "LXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KYGBgCgpSZWZlcmVuY2UgaXQgaW4gdGhlIGNvbXB1" + + "dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZToKCmBgYHlhbWwKZ2xvYmFsOgogIGltYWdlUHVsbFNl" + + "Y3JldHM6CiAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpUaGUgY2hhcnQgYW5kIG9wZXJhdG9y" + + "IHVzZSB0aGF0IHJlZmVyZW5jZSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciB0aGUKc2Vj" + + "cmV0IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBjcmVhdGUgYSBicm9hZGVyIG1hbnVhbCBjb21w" + + "dXRlIG5hbWVzcGFjZSBsaXN0LiBGb2xsb3cKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0" + + "aW9uXShjb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkgZm9yIHRoZQpzZWxlY3RlZCBpbnN0" + + "YWxsIGZsb3cuCgojIyBWZXJpZmljYXRpb24KCmBgYGJhc2gKIyBDaGVjayB0aGF0IGEgY29udHJv" + + "bC1wbGFuZSBwb2QgaGFzIHRoZSBpbmplY3RlZCBzZWNyZXQKa3ViZWN0bCAtLWNvbnRleHQgPGNv" + + "bnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IFwK" + + "ICAtbyBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9JwojIEV4cGVjdGVkOiBbeyJu" + + "YW1lIjoibnZjci1jcmVkcyJ9XQoKIyBDaGVjayB0aGUgS3l2ZXJubyBhbm5vdGF0aW9uCmt1YmVj" + + "dGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBwb2QgLW4gPG5hbWVzcGFj" + + "ZT4gPHBvZC1uYW1lPiBcCiAgLW8ganNvbnBhdGg9J3subWV0YWRhdGEuYW5ub3RhdGlvbnMubnZj" + + "ZlwubnZpZGlhXC5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVkLWJ5fScKIyBFeHBlY3RlZDog" + + "a3l2ZXJubwoKIyBDaGVjayBwdWxsIGV2ZW50cwprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1w" + + "bGFuZS1jb250ZXh0PiBnZXQgZXZlbnRzIC1uIDxuYW1lc3BhY2U+IFwKICAtLXNvcnQtYnk9Jy5s" + + "YXN0VGltZXN0YW1wJyB8IGdyZXAgLWkgcHVsbAojIFNob3VsZCBzaG93ICJTdWNjZXNzZnVsbHkg" + + "cHVsbGVkIiBub3QgIjQwMSBVbmF1dGhvcml6ZWQiCgojIENoZWNrIHRoZSBjaGFydC9vcGVyYXRv" + + "ciBtaXJyb3Igb24gdGhlIGNvbXB1dGUgY2x1c3RlcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0" + + "ZS1wbGFuZS1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgXAogIC1uIG52Y2Etc3lzdGVt" + + "CmBgYAoKIyMgV2hlbiBQdWxsIFNlY3JldHMgQXJlIE5vdCBOZWVkZWQKCi0gKipBV1MgRUNSIHdp" + + "dGggSUFNIG5vZGUgcm9sZXMqKjogSWYgeW91ciBub2RlcyBoYXZlIGBBbWF6b25FQzJDb250YWlu" + + "ZXJSZWdpc3RyeVJlYWRPbmx5YCBJQU0gcG9saWN5LCBLdWJlcm5ldGVzIGNhbiBwdWxsIGZyb20g" + + "RUNSIHdpdGhvdXQgZXhwbGljaXQgc2VjcmV0cy4KLSAqKlB1YmxpYyByZWdpc3RyaWVzKio6IE5v" + + "IHB1bGwgc2VjcmV0cyBuZWVkZWQuCi0gKipDU1AgYnVpbHQtaW4gY3JlZGVudGlhbCBoZWxwZXJz" + + "Kio6IEdLRSBBcnRpZmFjdCBSZWdpc3RyeSwgQXp1cmUgQUNSIHdpdGggbWFuYWdlZCBpZGVudGl0" + + "eSwgYW5kIHNpbWlsYXIgc2VydmljZXMuCgojIyBUcm91Ymxlc2hvb3RpbmcKCiMjIyBQb2RzIHN0" + + "aWxsIGluIEltYWdlUHVsbEJhY2tPZmYgYWZ0ZXIgYXBwbHlpbmcgcG9saWN5CgpUaGUgS3l2ZXJu" + + "byBwb2xpY3kgb25seSBhZmZlY3RzIHBvZHMgY3JlYXRlZCAqKmFmdGVyKiogdGhlIHBvbGljeSBp" + + "cyBhcHBsaWVkLiBEZWxldGUgc3R1Y2sgcG9kcyB0byB0cmlnZ2VyIHJlY3JlYXRpb246CgpgYGBi" + + "YXNoCmt1YmVjdGwgLS1jb250ZXh0IDx0YXJnZXQtY29udGV4dD4gZGVsZXRlIHBvZHMgLW4gPG5h" + + "bWVzcGFjZT4gLS1hbGwKYGBgCgojIyMgS3l2ZXJubyBhZG1pc3Npb24gY29udHJvbGxlciBub3Qg" + + "cnVubmluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0" + + "PiBnZXQgcG9kcyAtbiBreXZlcm5vCiMgQWxsIHBvZHMgc2hvdWxkIGJlIFJ1bm5pbmcKYGBgCgoj" + + "IyMgUG9saWN5IG5vdCBtYXRjaGluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJv" + + "bC1wbGFuZS1jb250ZXh0PiBnZXQgY2x1c3RlcnBvbGljeSBudmNmLWFkZC1pbWFnZXB1bGxzZWNy" + + "ZXRzCiMgU2hvdWxkIHNob3cgUkVBRFk6IFRydWUKYGBgCgojIyMgV3Jvbmcgc2VjcmV0IG5hbWUK" + + "ClRoZSBwb2xpY3kgcmVmZXJlbmNlcyBgbnZjci1jcmVkc2AuIFZlcmlmeSB0aGUgc2VjcmV0IGV4" + + "aXN0cyB3aXRoIHRoYXQgZXhhY3QgbmFtZToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPHRh" + + "cmdldC1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgLW4gPG5hbWVzcGFjZT4KYGBgClBL" + + "BwhLQjWoABYAAAAWAABQSwECFAAUAAgAAAAAACEAB42pR0oQAABKEAAAEgAJAAAAAAAAAAAAAAAA" + + "AAAAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAP9282dTYQAAU2EA" + + "ACMACQAAAAAAAAAAAAAAkxAAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQF" + + "AAEAps4SUEsBAhQAFAAIAAAAAAAhAJn2DaXdDQAA3Q0AADMACQAAAAAAAAAAAAAAQHIAAGRhdGEv" + + "bnZjZi1zZWxmLW1hbmFnZWQtY2xpL2V4YW1wbGVzL2NpLXBpcGVsaW5lcy5tZFVUBQABAKbOElBL" + + "AQIUABQACAAAAAAAIQChFOOBXQwAAF0MAAA0AAkAAAAAAAAAAAAAAIeAAABkYXRhL252Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9tdWx0aS1jbHVzdGVyLm1kVVQFAAEAps4SUEsBAhQAFAAI" + + "AAAAAAAhAEInSQ8FDQAABQ0AADcACQAAAAAAAAAAAAAAT40AAGRhdGEvbnZjZi1zZWxmLW1hbmFn" + + "ZWQtY2xpL3Byb21wdHMvYWRkLWNvbXB1dGUtcGxhbmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + + "ACEA1N6NNJ8ZAACfGQAAOQAJAAAAAAAAAAAAAADCmgAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1j" + + "bGkvcHJvbXB0cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAh" + + "ANJD3AQYJQAAGCUAADcACQAAAAAAAAAAAAAA0bQAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xp" + + "L3Byb21wdHMvZGVwbG95LWFuZC1pbnZva2UubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAcpIs" + + "Jr4OAAC+DgAAPQAJAAAAAAAAAAAAAABX2gAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJv" + + "bXB0cy9kaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBC" + + "ceYeASgAAAEoAAA6AAkAAAAAAAAAAAAAAInpAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9w" + + "cm9tcHRzL2luc3RhbGwtZnJvbS1zY3JhdGNoLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAKrh" + + "OrnIBwAAyAcAADkACQAAAAAAAAAAAAAA+xEBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3By" + + "b21wdHMvcm90YXRlLWNsdXN0ZXItandrcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQDah2NW" + + "5CEAAOQhAAAuAAkAAAAAAAAAAAAAADMaAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9t" + + "cHRzL3RlYXJkb3duLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAHIND2QhIwAAISMAADAACQAA" + + "AAAAAAAAAAAAfDwBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9jb21tYW5k" + + "cy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQAP90vFkAgAAJAIAAAyAAkAAAAAAAAAAAAAAARg" + + "AQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZXhpdC1jb2Rlcy5tZFVUBQAB" + + "AKbOElBLAQIUABQACAAAAAAAIQCsTIqjyzIAAMsyAAAtAAkAAAAAAAAAAAAAAP1oAQBkYXRhL252" + + "Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZmxhZ3MubWRVVAUAAQCmzhJQSwECFAAUAAgA" + + "AAAAACEA864ThHQRAAB0EQAANwAJAAAAAAAAAAAAAAAsnAEAZGF0YS9udmNmLXNlbGYtbWFuYWdl" + + "ZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAA" + + "IQARwxSTSWIAAEliAAAsAAkAAAAAAAAAAAAAAA6uAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWlu" + + "c3RhbGxhdGlvbi9TS0lMTC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBHVWpWSlYAAEpWAAA0" + + "AAkAAAAAAAAAAAAAALoQAgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9ldmFs" + + "cy9ldmFscy5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAAJSTkB/KAAAfygAAC8ACQAAAAAA" + + "AAAAAAAAb2cCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL2V4YW1wbGVzLm1k" + + "VVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAJZjvFkSMAAAEjAAAEwACQAAAAAAAAAAAAAAVJACAGRh" + + "dGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvY29tcHV0ZS1wbGFu" + + "ZS1pbnN0YWxsYXRpb24ubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAtXpwO7UwAAC1MAAAOwAJ" + + "AAAAAAAAAAAAAADpwAIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJl" + + "bmNlcy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAExHsjQoqAAAKKgAARAAJ" + + "AAAAAAAAAAAAAAAQ8gIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJl" + + "bmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAOPknr7kH" + + "AAC5BwAAPwAJAAAAAAAAAAAAAACVHAMAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRp" + + "b24vcmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEtC" + + "NagAFgAAABYAAD4ACQAAAAAAAAAAAAAAxCQDAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + + "bGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SUEsFBgAAAAAXABcArwkA" + + "ADk7AwAAAA==" var ( skillDataOnce sync.Once diff --git a/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel b/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel index 8b0ad18555..ee3d8832ae 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel +++ b/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel @@ -93,6 +93,7 @@ go_test( "@io_k8s_apimachinery//pkg/runtime", "@io_k8s_apimachinery//pkg/runtime/schema", "@io_k8s_apimachinery//pkg/types", + "@io_k8s_client_go//kubernetes", "@io_k8s_client_go//kubernetes/fake", "@io_k8s_client_go//rest", "@io_k8s_client_go//testing", diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index ebcc4592d0..2d7b8f85df 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -72,8 +72,18 @@ const ( var ( clusterValidatorTimeout = 5 * time.Minute clusterValidatorLogFetchTimeout = 10 * time.Second + // validatorCleanupTimeout bounds each deferred sweep. They run after an + // interrupt, when CI will not send a second signal, so an unreachable + // apiserver must not hold the CLI open. + validatorCleanupTimeout = 30 * time.Second ) +// cleanupContext is a fresh, bounded context for one deferred sweep. It does +// not derive from the run's ctx, which may already be cancelled. +func cleanupContext() (context.Context, context.CancelFunc) { + return context.WithTimeout(context.Background(), validatorCleanupTimeout) +} + // Kubelet Waiting.Reason values that mean the pod will never start without // operator intervention. Detecting any short-circuits the 5-minute wait. var pullFailureReasons = map[string]struct{}{ @@ -191,7 +201,9 @@ func runClusterValidator( // per-role secret scoping exists to prevent. defer func() { if !noCleanup && !podMayBeRunning { - sweepManagedPullSecrets(context.Background(), client, role, runID) + cctx, cancel := cleanupContext() + defer cancel() + sweepManagedPullSecrets(cctx, client, role, runID) } }() @@ -204,7 +216,9 @@ func runClusterValidator( // label-guarded, so running it when nothing was created is a no-op. defer func() { if !noCleanup && !podMayBeRunning { - sweepClusterValidatorRBAC(context.Background(), client, role, runID) + cctx, cancel := cleanupContext() + defer cancel() + sweepClusterValidatorRBAC(cctx, client, role, runID) } }() if err := ensureClusterValidatorRBAC(vctx, client, role, runID, noCleanup); err != nil { @@ -226,7 +240,9 @@ func runClusterValidator( // operator asked to keep the run's artifacts. defer func() { if !noCleanup && !podMayBeRunning { - sweepClusterValidatorConfig(context.Background(), client, runID) + cctx, cancel := cleanupContext() + defer cancel() + sweepClusterValidatorConfig(cctx, client, runID) } }() if err := ensureClusterValidatorConfig(vctx, client, registries, runID, noCleanup); err != nil { diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go index 00d142c276..f78e655bbb 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go @@ -19,6 +19,10 @@ package selfhosted import ( "context" + "io" + "net/http" + "net/http/httptest" + "strings" "sync/atomic" "testing" "time" @@ -34,7 +38,9 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" + "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/fake" + "k8s.io/client-go/rest" ktesting "k8s.io/client-go/testing" ) @@ -467,3 +473,60 @@ func TestBuildClusterValidatorJob_ConfigNamePerRole(t *testing.T) { assert.Equal(t, clusterValidatorNoConfigName, cp) assert.NotEqual(t, clusterValidatorConfigName, cp, "must not be the validator's default name") } + +// An apiserver that stops answering after the bootstrap fails must not hold +// the CLI open in the deferred sweeps: each one is bounded, and the run +// returns once they time out. +func TestRunClusterValidator_CleanupIsBoundedWhenTheAPIServerHangs(t *testing.T) { + prev := validatorCleanupTimeout + validatorCleanupTimeout = 500 * time.Millisecond + t.Cleanup(func() { validatorCleanupTimeout = prev }) + + var hang atomic.Bool + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if hang.Load() { + <-r.Context().Done() + return + } + w.Header().Set("Content-Type", "application/json") + switch { + case r.Method == http.MethodPost && strings.HasSuffix(r.URL.Path, "/clusterroles"): + // The bootstrap fails here, after its ServiceAccount exists, and + // the apiserver goes silent for everything after. + hang.Store(true) + w.WriteHeader(http.StatusForbidden) + _, _ = io.WriteString(w, `{"kind":"Status","apiVersion":"v1","status":"Failure","reason":"Forbidden","code":403}`) + case r.Method == http.MethodPost: + body, _ := io.ReadAll(r.Body) + w.WriteHeader(http.StatusCreated) + _, _ = w.Write(body) + default: + w.WriteHeader(http.StatusInternalServerError) + _, _ = io.WriteString(w, `{"kind":"Status","apiVersion":"v1","status":"Failure","code":500}`) + } + })) + t.Cleanup(func() { + srv.CloseClientConnections() + srv.Close() + }) + // JSON, so the server can echo a created object back as the response. + client, err := kubernetes.NewForConfig(&rest.Config{ + Host: srv.URL, + ContentConfig: rest.ContentConfig{ContentType: "application/json"}, + }) + require.NoError(t, err) + + done := make(chan ClusterValidatorResult, 1) + go func() { + done <- runClusterValidator(context.Background(), client, "registry.example.com/validator:1", + "", false, clusterValidatorComputePlaneRole, nil, nil) + }() + select { + case res := <-done: + require.Error(t, res.Err) + assert.Contains(t, res.Err.Error(), "create cluster role", "the run must reach the hang, not fail earlier") + assert.True(t, hang.Load()) + case <-time.After(10 * time.Second): + t.Fatal("the deferred cleanup did not return against a hung apiserver") + } +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go index 7af56b8e17..1d57946947 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go @@ -285,6 +285,7 @@ type Model struct { checkFinalTotal int checkFinalPassed int checkFinalFailed int + checkCancelled bool // final event came from SIGINT/SIGTERM, not a verdict // log tail (LogLine ring buffer; rendered as a "Recent" panel during // long phases like apply-cp). Capacity is fixed; new lines push older @@ -744,6 +745,7 @@ func (m Model) applyCheckEvent(e Event) (tea.Model, tea.Cmd) { m.checkFinalTotal = ev.TotalChecks m.checkFinalPassed = ev.PassedCount m.checkFinalFailed = ev.FailedCount + m.checkCancelled = ev.Cancelled return m, tea.Quit } return m, nil @@ -1852,6 +1854,9 @@ func (m Model) viewCheck(now time.Time) string { } var statusLine string switch { + case m.finished && m.checkCancelled: + // Checks cut short by the interrupt are neither passed nor failed. + statusLine = fmt.Sprintf("Status: cancelled (%s)", tally) case anyInFlight || (!m.finished && len(m.checkCategories) > 0 && !allFinished): statusLine = fmt.Sprintf("Status: in progress (%d/%d passed, %d failed)", passed, total, failed) case m.finished && failed > 0: diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty_test.go b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty_test.go index 1c1250e0e4..d860d5a325 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty_test.go @@ -568,6 +568,25 @@ func TestCheckOneShotRenderer_FlushesFailedSummaryOnFinal(t *testing.T) { assert.Contains(t, out, "Status: ✘ failed (1/2 passed, 1 failed)") } +// An interrupted check ends on a cancelled final event, which must not read +// as a pass. +func TestCheckOneShotRenderer_CancelledIsNotOK(t *testing.T) { + t.Setenv("NO_COLOR", "1") + var buf bytes.Buffer + r := NewCheckOneShotRenderer(&buf, ModelOpts{Mode: ModeCheck, Output: &buf}) + ctx := context.Background() + require.NoError(t, r.Emit(ctx, CheckStarted{Category: "local-host-tools", ID: "kubectl-on-path"})) + require.NoError(t, r.Emit(ctx, CheckCompleted{ + Category: "local-host-tools", ID: "kubectl-on-path", Passed: true, Severity: "info", Message: "kubectl on PATH", + })) + require.NoError(t, r.Emit(ctx, Final{Cancelled: true})) + require.NoError(t, r.Close()) + + out := buf.String() + assert.Contains(t, out, "Status: cancelled") + assert.NotContains(t, out, "Status: ✓ ok") +} + // A warning row is not marked as a failure: it does not fail the run. func TestCheckGlyph_WarningIsNotAFailure(t *testing.T) { assert.Equal(t, "[✓]", checkGlyph(checkRow{finished: true, passed: true})) From bc370f07eb419991ebda175a9058fff8dcab5e11 Mon Sep 17 00:00:00 2001 From: rohithb Date: Wed, 30 Sep 2026 05:51:11 +0530 Subject: [PATCH 49/55] fix(nvcf-cli): correct stale validator comments, use severity constants throughout, and keep the stale-namespace tests independent of HELM_DRIVER Signed-off-by: rohithb --- src/clis/nvcf-cli/.nvcf-cli.yaml.template | 12 +++--- src/clis/nvcf-cli/cmd/self_hosted_check.go | 2 +- .../self_hosted_check_validatorenv_test.go | 37 +++++++++++++++++++ .../internal/selfhosted/clustervalidator.go | 10 ++--- .../nvcf-cli/internal/selfhosted/main_test.go | 5 ++- .../nvcf-cli/internal/selfhosted/preflight.go | 4 +- .../nvcf-cli/internal/selfhosted/register.go | 4 +- .../selfhosted/stale_namespace_test.go | 8 ++-- 8 files changed, 60 insertions(+), 22 deletions(-) diff --git a/src/clis/nvcf-cli/.nvcf-cli.yaml.template b/src/clis/nvcf-cli/.nvcf-cli.yaml.template index 65d66132f0..2529d20bbd 100644 --- a/src/clis/nvcf-cli/.nvcf-cli.yaml.template +++ b/src/clis/nvcf-cli/.nvcf-cli.yaml.template @@ -150,8 +150,8 @@ api_keys_owner_id: svc@nvcf-api.local # # The Job needs a ServiceAccount, ClusterRole, and ClusterRoleBinding, which # the CLI creates and removes per run. The kubeconfig context therefore needs -# permission to manage those objects; without it the probe reports a warning -# instead of a result. +# permission to manage those objects; without it the validator cannot run and +# the check fails. Pass --skip-cluster-validation to run without it. # # Config key: cluster_validator_image # Environment variable: NVCF_CLI_CLUSTER_VALIDATOR_IMAGE @@ -159,15 +159,17 @@ api_keys_owner_id: svc@nvcf-api.local # # When the value has no tag, the latest tag is discovered from the # registry (preferring stable releases over rc). If unset everywhere, -# the validator probe is skipped with a warning. +# the validator probe is skipped with a note on stderr. # # Staging: stg.nvcr.io/nvidia/nvcf-byoc/cluster-validator # Prod: nvcr.io/nvidia/nvcf-byoc/cluster-validator # cluster_validator_image: nvcr.io/nvidia/nvcf-byoc/cluster-validator # Extra container registries the control-plane validator probes for -# reachability, as host:port. nvcr.io is always probed, so list only the -# registries your stack pulls from in addition to it. +# reachability, as host:port. The registries the install pulls from are +# probed already: the validator image's registry, the stack's +# global.image.registry, and quay.io for the cert-manager ACME solver. List +# only registries beyond those. # # Config key: cluster_validator_registries (list) # Environment variable: NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES (comma-separated) diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index 979b42b29b..6280da3a51 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -287,7 +287,7 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { results = append([]selfhosted.CheckResult{{ ID: "force-fail-test-seam", Category: "test", - Severity: "error", + Severity: selfhosted.SeverityError, Passed: false, Message: "forced failure (test seam)", }}, results...) diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go index a37649344b..c955381400 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go @@ -146,3 +146,40 @@ func TestCheck_PreSplitRunsBothValidatorRoles(t *testing.T) { assert.Equal(t, "gpu-ctx", gpu.KubeContext) assert.NotContains(t, cp.Env, "VALIDATOR_POST_INSTALL", "--pre is pre-install") } + +// NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES is read, and a comma-separated value is +// split into separate registries rather than parsed as one host. +func TestCheck_RegistriesEnvVarIsSplitOnCommas(t *testing.T) { + resetCheckFlags(t) + t.Setenv("NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES", "harbor.example.com:443, ghcr.io:443") + var mu sync.Mutex + var got selfhosted.ClusterValidatorParams + prev := newClusterValidatorForSelfHosted + newClusterValidatorForSelfHosted = func() selfhosted.ClusterValidator { + return func(_ context.Context, p selfhosted.ClusterValidatorParams) selfhosted.ClusterValidatorResult { + mu.Lock() + defer mu.Unlock() + if p.Role == "control-plane" { + got = p + } + return selfhosted.ClusterValidatorResult{Passed: true} + } + } + t.Cleanup(func() { newClusterValidatorForSelfHosted = prev }) + t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") + + rootCmd.SetErr(&bytes.Buffer{}) + rootCmd.SetOut(&bytes.Buffer{}) + rootCmd.SetArgs([]string{"self-hosted", "check", "--control-plane", "--json", + "--cluster-validator-image", "nvcr.io/nvidia/nvcf-byoc/cluster-validator:1.0.0"}) + _ = rootCmd.Execute() + + mu.Lock() + defer mu.Unlock() + var regs []string + for _, r := range got.Registries { + regs = append(regs, r.Registry) + } + assert.Contains(t, regs, "harbor.example.com") + assert.Contains(t, regs, "ghcr.io") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 2d7b8f85df..166d12701f 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -750,9 +750,10 @@ const clusterValidatorNoConfigName = "cluster-validator-no-config" const clusterValidatorRoleLabel = "nvcf.nvidia.com/validator-role" // clusterValidatorPreserveLabel marks objects an operator asked to keep with -// --no-cleanup. The orphan sweeper skips them: without it a preserved run is -// reclaimed anyway once it is older than the TTL, which makes the flag mean -// "keep for 30 minutes". +// --no-cleanup. The orphan sweeper keeps them for preservedValidatorTTL instead +// of orphanValidatorRBACTTL: without the label a preserved run would be +// reclaimed after 30 minutes, and with no limit at all a kept ClusterRole and +// NGC-key Secret would stay forever. const clusterValidatorPreserveLabel = "nvcf.nvidia.com/validator-preserve" // clusterValidatorRBACName returns the ServiceAccount / ClusterRole / @@ -788,9 +789,6 @@ func newValidatorRunID() (string, error) { return hex.EncodeToString(b), nil } -// controlPlaneValidatorConfigTemplate is the baseline network-check ConfigMap for -// control-plane preflight: nvcr.io reachability (critical) and NetworkPolicy -// enforcement (non-critical). Extra registries are appended as non-critical probes. // controlPlaneValidatorEnforcementConfig follows the generated reachability // section in the control-plane validator ConfigMap. const controlPlaneValidatorEnforcementConfig = `enforcement: diff --git a/src/clis/nvcf-cli/internal/selfhosted/main_test.go b/src/clis/nvcf-cli/internal/selfhosted/main_test.go index 6c652255a8..ae1b789353 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/main_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/main_test.go @@ -24,13 +24,16 @@ import ( // TestMain points HOME at an empty directory so no test reads the developer's // ~/.docker/config.json, or runs a credential helper it names. Tests that need -// a docker config write their own under a temporary HOME. +// a docker config write their own under a temporary HOME. HELM_DRIVER is +// cleared too: an exported sql driver turns off the stale-namespace probe's +// no-release signal, which the probe tests assert on. func TestMain(m *testing.M) { home, err := os.MkdirTemp("", "selfhosted-test-home-") if err != nil { panic(err) } _ = os.Setenv("HOME", home) + _ = os.Unsetenv("HELM_DRIVER") code := m.Run() _ = os.RemoveAll(home) os.Exit(code) diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index 777621095d..1130e17205 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -750,9 +750,9 @@ func buildRegistryCredentialCategory(cfg PreflightConfig) categorySpec { // fail at warning so they don't block the operator on optional registries. func registryCredentialCheck(checker RegistryCredentialChecker, entry RegistryEntry) binaryCheckSpec { id := "registry-cred-" + entry.Registry - severity := "warning" + severity := SeverityWarning if entry.Critical { - severity = "error" + severity = SeverityError } return binaryCheckSpec{ ID: id, diff --git a/src/clis/nvcf-cli/internal/selfhosted/register.go b/src/clis/nvcf-cli/internal/selfhosted/register.go index 75908c93f4..ee8f1d3310 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/register.go +++ b/src/clis/nvcf-cli/internal/selfhosted/register.go @@ -315,6 +315,8 @@ func resolveClusterID(resp *client.RegisterClusterResponse) string { // avoid touching a real kubeconfig file. var loadKubeConfigFn = loadKubeConfig +// currentKubeContextNameFn is a seam: tests must not depend on the developer's +// kubeconfig, and hint output would otherwise vary by machine. var currentKubeContextNameFn = currentKubeContextName // currentKubeContextName returns the kubeconfig's current-context, or "" when @@ -344,8 +346,6 @@ func effectiveKubeContext(kctx string) string { // When kctx is empty the kubeconfig's current-context is used, preserving // single-cluster behavior. The loading-rules chain follows the same priority // as kubectl: KUBECONFIG env var → ~/.kube/config. -// currentKubeContextNameFn is a seam: tests must not depend on the developer's -// kubeconfig, and hint output would otherwise vary by machine. func loadKubeConfig(kctx string) (*rest.Config, error) { loadingRules := clientcmd.NewDefaultClientConfigLoadingRules() overrides := &clientcmd.ConfigOverrides{} diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go index d2b4b8aa67..d6ab34968c 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go @@ -71,11 +71,8 @@ func TestProbeStaleNamespaces_TerminatingIsByPhase(t *testing.T) { func TestProbeStaleNamespaces_EmptyShellNoHelmSecrets(t *testing.T) { // Namespace exists and is Active but holds no Helm release secrets -> - // leftover empty shell from a partial helm uninstall. - // - // A second namespace carries a real release so the driver is known to keep - // its state in-cluster. Without that the signal is unusable and correctly - // suppressed, which is what HELM_DRIVER=sql looks like. + // leftover empty shell from a partial helm uninstall. The second namespace + // carries a release and is not reported. client := fake.NewSimpleClientset( &corev1.Namespace{ ObjectMeta: metav1.ObjectMeta{Name: "nvcf"}, @@ -238,6 +235,7 @@ func TestStaleNamespaceCheck_CleanPasses(t *testing.T) { } r := staleNamespaceCheck(prober, "", []string{"nvcf", "sis"}).Run(context.Background()) assert.True(t, r.Passed) + assert.Equal(t, SeverityInfo, r.Severity, "a clean pass must not carry the error severity it starts with") } func TestStaleNamespaceCheck_MessageNamesAllStaleNamespaces(t *testing.T) { From cca7029fae6d7ae755af3de5e3cec52dec722e0e Mon Sep 17 00:00:00 2001 From: rohithb Date: Thu, 1 Oct 2026 01:38:46 +0530 Subject: [PATCH 50/55] fix(nvcf-cli): pass the stack's NVCF Gateways and HA mode to the validator, and let it read probe pod events Signed-off-by: rohithb --- src/clis/nvcf-cli/cmd/self_hosted_check.go | 12 +++++ .../self_hosted_check_validatorenv_test.go | 21 ++++++++ .../internal/selfhosted/clustervalidator.go | 4 ++ .../clustervalidator_lifecycle_test.go | 6 +++ .../internal/selfhosted/registry_cred.go | 49 +++++++++++++++++-- .../internal/selfhosted/registry_cred_test.go | 36 ++++++++++++++ 6 files changed, 124 insertions(+), 4 deletions(-) diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index 6280da3a51..ddb278be51 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -757,8 +757,20 @@ func clusterValidatorJobEnv(stack selfhosted.StackValues) map[string]string { if envoyNS != "" { env["NVCF_ENVOY_GATEWAY_NAMESPACE"] = envoyNS } + // The launcher knows the NVCF Gateways from the stack, so the validator + // need not rediscover them from route labels, and after install can fail + // a named Gateway that has no proxy. An explicit setting still wins. if names := configValue("NVCF_GATEWAY_NAMES"); names != "" { env["NVCF_GATEWAY_NAMES"] = names + } else if len(stack.Gateways) > 0 { + env["NVCF_GATEWAY_NAMES"] = strings.Join(stack.Gateways, ",") + } + // Below three replicas a quorum component is a lost quorum under an HA + // mode and the deployed shape under none; only the stack says which. + if mode := configValue("NVCF_HA_MODE"); mode != "" { + env["NVCF_HA_MODE"] = mode + } else if stack.HAMode != "" { + env["NVCF_HA_MODE"] = stack.HAMode } probe := strings.TrimSpace(viper.GetString("cluster_validator_probe_image")) if probe == "" { diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go index c955381400..1fcd945091 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go @@ -183,3 +183,24 @@ func TestCheck_RegistriesEnvVarIsSplitOnCommas(t *testing.T) { assert.Contains(t, regs, "harbor.example.com") assert.Contains(t, regs, "ghcr.io") } + +// The stack's Gateways and HA mode reach the Job; an explicit setting wins. +func TestClusterValidatorJobEnv_ForwardsStackGatewaysAndHAMode(t *testing.T) { + for _, k := range []string{"NVCF_GATEWAY_NAMES", "NVCF_HA_MODE"} { + t.Setenv(k, "") + } + stack := selfhosted.StackValues{HAMode: "none", Gateways: []string{"gw/grpc-gw", "gw/shared-gw"}} + env := clusterValidatorJobEnv(stack) + assert.Equal(t, "gw/grpc-gw,gw/shared-gw", env["NVCF_GATEWAY_NAMES"]) + assert.Equal(t, "none", env["NVCF_HA_MODE"]) + + t.Setenv("NVCF_GATEWAY_NAMES", "edge/nvcf-gw") + t.Setenv("NVCF_HA_MODE", "preferred") + env = clusterValidatorJobEnv(stack) + assert.Equal(t, "edge/nvcf-gw", env["NVCF_GATEWAY_NAMES"]) + assert.Equal(t, "preferred", env["NVCF_HA_MODE"]) + + t.Setenv("NVCF_HA_MODE", "") + env = clusterValidatorJobEnv(selfhosted.StackValues{}) + assert.NotContains(t, env, "NVCF_HA_MODE", "no stack, no mode: the validator records sub-quorum as not assessed") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 166d12701f..8efe995342 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -447,6 +447,10 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface // Read + write: the overlay and enforcement probes create and delete // their own namespaces and pods. {APIGroups: []string{""}, Resources: []string{"namespaces", "pods"}, Verbs: []string{"get", "list", "create", "delete"}}, + // Events, list only: the overlay probe reads its pods' events to + // tell a slow first image pull, which publishes no pod IP until + // it returns, from a node that could not network the pod. + {APIGroups: []string{""}, Resources: []string{"events"}, Verbs: []string{"list"}}, {APIGroups: []string{"storage.k8s.io"}, Resources: []string{"csidrivers", "storageclasses"}, Verbs: []string{"get", "list"}}, // NetworkPolicies: read for CNI detection; write for enforcement // check which creates/updates/deletes policies in the temp namespace. diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go index f78e655bbb..49942f18ec 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go @@ -442,6 +442,7 @@ func TestEnsureClusterValidatorRBAC_LeastPrivilege(t *testing.T) { cr, err := client.RbacV1().ClusterRoles().Get(context.Background(), clusterValidatorRBACName(clusterValidatorControlPlaneRole, "runid"), metav1.GetOptions{}) require.NoError(t, err) + sawEvents := false for _, r := range cr.Rules { for _, v := range r.Verbs { assert.NotEqual(t, "watch", v, "no rule needs watch") @@ -451,8 +452,13 @@ func TestEnsureClusterValidatorRBAC_LeastPrivilege(t *testing.T) { if res == "services" { assert.ElementsMatch(t, []string{"get", "list"}, r.Verbs, "services are only read") } + if res == "events" { + assert.Equal(t, []string{"list"}, r.Verbs, "the probe only lists its pods' events") + sawEvents = true + } } } + assert.True(t, sawEvents, "the overlay probe needs to list events") } // Only the control-plane Job reads a network-check ConfigMap. The compute-plane diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go index a0bee9386d..ec8c69b90a 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go @@ -23,6 +23,7 @@ import ( "net" "net/http" "os" + "sort" "strconv" "strings" "time" @@ -298,6 +299,12 @@ type StackValues struct { ACMESolverRepository string // EnvoyGatewayNamespace is ingress.gatewayApi.controllerNamespace. EnvoyGatewayNamespace string + // HAMode is highAvailability.mode, defaulting to "none" as the stack's + // own template does when the key is unset. Empty when no file was read. + HAMode string + // Gateways are the NVCF Gateways the stack names under + // ingress.gatewayApi.gateways, as sorted, distinct namespace/name entries. + Gateways []string } // LoadStackValues reads files in order and layers each over the previous, @@ -318,12 +325,42 @@ func LoadStackValues(files []string) StackValues { found = true mergeValues(merged, doc) } - return StackValues{ + values := StackValues{ Found: found, ImageRegistry: digString(merged, "global", "image", "registry"), ACMESolverRepository: digString(merged, "certManager", "acmesolver", "image", "repository"), EnvoyGatewayNamespace: digString(merged, "ingress", "gatewayApi", "controllerNamespace"), + Gateways: stackGateways(merged), } + if found { + values.HAMode = digString(merged, "highAvailability", "mode") + if values.HAMode == "" { + values.HAMode = "none" + } + } + return values +} + +// stackGateways returns the Gateways named under ingress.gatewayApi.gateways +// that have both a name and a namespace, as sorted, distinct namespace/name +// entries. An entry the environment left empty is one it does not use. +func stackGateways(merged map[string]any) []string { + gateways, _ := digAny(merged, "ingress", "gatewayApi", "gateways").(map[string]any) + seen := map[string]bool{} + var out []string + for key := range gateways { + name := digString(gateways, key, "name") + ns := digString(gateways, key, "namespace") + if name == "" || ns == "" || strings.Contains(name, "/") || strings.Contains(ns, "/") { + continue + } + if entry := ns + "/" + name; !seen[entry] { + seen[entry] = true + out = append(out, entry) + } + } + sort.Strings(out) + return out } // mergeValues deep-merges src into dst: maps merge key by key, anything else @@ -341,16 +378,20 @@ func mergeValues(dst, src map[string]any) { } func digString(m map[string]any, keys ...string) string { + s, _ := digAny(m, keys...).(string) + return strings.TrimSpace(s) +} + +func digAny(m map[string]any, keys ...string) any { var cur any = m for _, k := range keys { mm, ok := cur.(map[string]any) if !ok { - return "" + return nil } cur = mm[k] } - s, _ := cur.(string) - return strings.TrimSpace(s) + return cur } // EnumerateRegistries builds the deduplicated list of registries to credential- diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go index 162b08a2ee..33f6777900 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go @@ -572,3 +572,39 @@ func TestProbeRegistryCredential_CriticalAnonymousIsNotVerified(t *testing.T) { assert.NotContains(t, r.Message, "credentials valid") assert.Contains(t, r.Message, "not verified") } + +// The launcher reads the stack's HA mode and NVCF Gateways, so the validator +// is told rather than left to guess. An unset mode is "none", as the stack's +// own template reads it, and a Gateway entry left empty is not in use. +func TestLoadStackValues_HAModeAndGateways(t *testing.T) { + dir := t.TempDir() + base, env := dir+"/base.yaml", dir+"/prod.yaml" + require.NoError(t, writeFile(base, []byte(` +ingress: + gatewayApi: + gateways: + shared: {name: "", namespace: ""} + grpc: {name: "", namespace: ""} + llmGrpc: {name: "", namespace: ""} +`))) + require.NoError(t, writeFile(env, []byte(` +highAvailability: + mode: enforced +ingress: + gatewayApi: + gateways: + shared: {name: shared-gw, namespace: envoy-gateway-system} + grpc: {name: grpc-gw, namespace: envoy-gateway-system} + nats: {name: shared-gw, namespace: envoy-gateway-system} +`))) + got := LoadStackValues([]string{base, env}) + assert.Equal(t, "enforced", got.HAMode) + assert.Equal(t, []string{"envoy-gateway-system/grpc-gw", "envoy-gateway-system/shared-gw"}, got.Gateways, + "sorted, distinct, and without the unused llmGrpc entry") + + got = LoadStackValues([]string{base}) + assert.Equal(t, "none", got.HAMode, "unset reads as none, as the stack template does") + assert.Empty(t, got.Gateways) + + assert.Empty(t, LoadStackValues(nil).HAMode, "no stack read means no mode to report") +} From 698d4bf01277c1bf9b7d4909ff2bfe40d794d88f Mon Sep 17 00:00:00 2001 From: rohithb Date: Thu, 1 Oct 2026 02:57:39 +0530 Subject: [PATCH 51/55] fix(nvcf-cli): grade a spent check budget as a timeout, stop the validator before revoking its RBAC, retry transient Job reads and pulls, and poll --wait through rollouts Signed-off-by: rohithb --- src/clis/nvcf-cli/cmd/BUILD.bazel | 1 + src/clis/nvcf-cli/cmd/self_hosted_check.go | 73 ++++- .../cmd/self_hosted_check_scope_test.go | 120 ++++++++ .../nvcf-cli/cmd/self_hosted_check_test.go | 2 +- .../nvcf-cli/internal/selfhosted/BUILD.bazel | 1 + .../internal/selfhosted/clustervalidator.go | 173 +++++++++--- .../clustervalidator_lifecycle_test.go | 263 +++++++++++++++++- .../selfhosted/clustervalidator_test.go | 22 +- .../nvcf-cli/internal/selfhosted/main_test.go | 6 + .../internal/selfhosted/miniapiserver_test.go | 211 ++++++++++++++ .../nvcf-cli/internal/selfhosted/preflight.go | 133 ++++++++- .../internal/selfhosted/preflight_test.go | 32 +++ .../selfhosted/progress/render_tty.go | 11 + .../selfhosted/progress/render_tty_test.go | 15 + .../internal/selfhosted/progress/select.go | 5 + 15 files changed, 998 insertions(+), 70 deletions(-) create mode 100644 src/clis/nvcf-cli/internal/selfhosted/miniapiserver_test.go diff --git a/src/clis/nvcf-cli/cmd/BUILD.bazel b/src/clis/nvcf-cli/cmd/BUILD.bazel index fffbab7f87..a53af5ab63 100644 --- a/src/clis/nvcf-cli/cmd/BUILD.bazel +++ b/src/clis/nvcf-cli/cmd/BUILD.bazel @@ -150,6 +150,7 @@ go_test( "//src/clis/nvcf-cli/internal/selfhosted/teardown", "//src/clis/nvcf-cli/internal/state", "//src/clis/nvcf-cli/internal/trustbundle", + "@com_github_masterminds_semver_v3//:semver", "@com_github_spf13_cobra//:cobra", "@com_github_spf13_pflag//:pflag", "@com_github_spf13_viper//:viper", diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index ddb278be51..92ba8e5917 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -141,6 +141,11 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { if !checkPre && !checkControlPlane && !checkComputePlane && !checkAll { return fmt.Errorf("at least one of --pre, --control-plane, --compute-plane, or --all is required") } + if checkClusterValidatorNoCleanup && selfHostedWait != "" { + // Each poll is a new validator run, so --no-cleanup would keep a full + // set of RBAC, Secret, ConfigMap and Job for every poll. + return fmt.Errorf("--no-cleanup keeps one run's objects for debugging and cannot be combined with --wait") + } localOnly := checkLocalOnly || os.Getenv("NVCF_CLI_SELFHOSTED_LOCAL_ONLY") != "" skipClusterValidation := checkSkipClusterValidation || os.Getenv("NVCF_CLI_SELFHOSTED_SKIP_CLUSTER_VALIDATION") != "" @@ -204,7 +209,7 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { // interrupted is an explicit cancel, not the timeout below, which is a // child of sigCtx and leaves it live. interrupted := func() bool { return sigCtx.Err() != nil } - ctx, cancel := context.WithTimeout(sigCtx, outerTimeout) + ctx, cancel := context.WithTimeout(sigCtx, checkBudget(outerTimeout)) defer cancel() // Legacy --output=json: warn and treat as --json. @@ -254,12 +259,13 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { cfg := selfhosted.PreflightConfig{ LocalOnly: localOnly, - Tools: selfHostedPreflightTools(), + Tools: checkPreflightTools(), Registries: credEntries, RegistryChecker: registryChecker, } - sink, err := selectCheckRenderer(c.ErrOrStderr(), selfHostedWait != "") + // A quit key in the dashboard cancels the run the way a signal does. + sink, err := selectCheckRenderer(c.ErrOrStderr(), selfHostedWait != "", stop) if err != nil { return err } @@ -295,12 +301,24 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { return results } + // The outer budget ran out during a run: the checks it did not reach are + // already error rows, so the verdict is a timeout rather than whatever + // the partial set would grade as. + exitBudgetSpent := func() error { + emitCheckFinal(context.Background(), sink, lastResults) + maybeShowClusterValidatorLogs(c.ErrOrStderr(), lastResults) + return &ExitCodeError{Code: 5, Msg: "timed out: the check budget ran out before every check ran"} + } + if selfHostedWait == "" { // Single-shot mode. lastResults = runOnce() if interrupted() { return exitInterrupted() } + if ctx.Err() != nil { + return exitBudgetSpent() + } emitCheckFinal(ctx, sink, lastResults) maybeShowClusterValidatorLogs(c.ErrOrStderr(), lastResults) if anyFailed(lastResults) { @@ -319,29 +337,45 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { ticker := time.NewTicker(5 * time.Second) defer ticker.Stop() + waitTimeout := func() error { + emitCheckFinal(context.Background(), sink, lastResults) + maybeShowClusterValidatorLogs(c.ErrOrStderr(), lastResults) + return &ExitCodeError{Code: 5, Msg: "wait timeout: checks still failing after " + selfHostedWait} + } for { lastResults = runOnce() if interrupted() { return exitInterrupted() } - if !anyFailed(lastResults) { + // An iteration that overran the budget ran on a dead context, and its + // results are incomplete: never a pass. + if ctx.Err() != nil { + return exitBudgetSpent() + } + if !anyFailed(lastResults) && !anyWarningToWaitOn(lastResults) { emitCheckFinal(ctx, sink, lastResults) maybeShowClusterValidatorLogs(c.ErrOrStderr(), lastResults) return nil } + // The deadline is checked first: with several cases ready, select + // picks at random, and the ticker then re-ran the checks on a spent + // budget. select { case <-deadline: - emitCheckFinal(ctx, sink, lastResults) - maybeShowClusterValidatorLogs(c.ErrOrStderr(), lastResults) - return &ExitCodeError{Code: 5, Msg: "wait timeout: checks still failing after " + selfHostedWait} + return waitTimeout() + default: + } + select { + case <-deadline: + return waitTimeout() case <-ticker.C: // continue polling case <-ctx.Done(): if interrupted() { return exitInterrupted() } - return ctx.Err() + return waitTimeout() } } } @@ -518,7 +552,7 @@ func maybeShowClusterValidatorLogs(w io.Writer, results []selfhosted.CheckResult } } -func selectCheckRenderer(w io.Writer, wait bool) (progress.EventSink, error) { +func selectCheckRenderer(w io.Writer, wait bool, onQuit func()) (progress.EventSink, error) { if !wait && !selfHostedJSON && !selfHostedPlain && !selfHostedAccessible && checkWriterIsTTY(w) { return progress.NewCheckOneShotRenderer(w, progress.ModelOpts{ Mode: progress.ModeCheck, @@ -526,6 +560,7 @@ func selectCheckRenderer(w io.Writer, wait bool) (progress.EventSink, error) { Cluster: checkClusterName, ControlPlaneContext: selfHostedControlPlaneContext, ComputePlaneContext: selfHostedComputePlaneContext, + OnQuit: onQuit, }), nil } @@ -537,6 +572,7 @@ func selectCheckRenderer(w io.Writer, wait bool) (progress.EventSink, error) { Cluster: checkClusterName, ControlPlaneContext: selfHostedControlPlaneContext, ComputePlaneContext: selfHostedComputePlaneContext, + OnQuit: onQuit, }) return sink, err } @@ -853,6 +889,25 @@ func isBlockingFailure(r selfhosted.CheckResult) bool { // not trigger non-zero exit per spec §6.3. // isBlockingFailure is the single definition of "this fails the run". Both the // exit code and the JSON verdict derive from it, so they cannot disagree. +// checkPreflightTools is a test seam over the local tool checks, so command +// tests do not depend on what is installed on the machine running them. +var checkPreflightTools = selfHostedPreflightTools + +// checkBudget is a test seam over the command's outer time budget. +var checkBudget = func(d time.Duration) time.Duration { return d } + +// anyWarningToWaitOn reports a warning expected to clear by itself, such as a +// rollout the validator saw in progress. --wait keeps polling on it; a single +// run still exits 0. +func anyWarningToWaitOn(results []selfhosted.CheckResult) bool { + for _, r := range results { + if r.Transient && !r.Passed { + return true + } + } + return false +} + func anyFailed(results []selfhosted.CheckResult) bool { for _, r := range results { if isBlockingFailure(r) { diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go index a26741fd0d..255e80545f 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go @@ -25,7 +25,9 @@ import ( "sync" "sync/atomic" "testing" + "time" + "github.com/Masterminds/semver/v3" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -132,3 +134,121 @@ func TestCheck_InterruptExits130(t *testing.T) { assert.Regexp(t, `"event":"final".*"cancelled":true`, stderr.String(), "the JSON stream still ends with a final event, marked cancelled") } + +// runCheckWithBudget runs check --control-plane --json with the outer budget +// shortened to budget and a validator stub that holds its role until the +// context ends, or returns result at once. +func runCheckWithBudget(t *testing.T, budget time.Duration, validator func(context.Context) selfhosted.ClusterValidatorResult, + args ...string) (error, string) { + t.Helper() + resetCheckFlags(t) + t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") + prevBudget, prevCV, prevTools := checkBudget, newClusterValidatorForSelfHosted, checkPreflightTools + checkBudget = func(time.Duration) time.Duration { return budget } + checkPreflightTools = passingPreflightTools + t.Cleanup(func() { checkPreflightTools = prevTools }) + newClusterValidatorForSelfHosted = func() selfhosted.ClusterValidator { + return func(ctx context.Context, _ selfhosted.ClusterValidatorParams) selfhosted.ClusterValidatorResult { + return validator(ctx) + } + } + t.Cleanup(func() { checkBudget, newClusterValidatorForSelfHosted = prevBudget, prevCV }) + var stderr bytes.Buffer + rootCmd.SetErr(&stderr) + rootCmd.SetOut(&bytes.Buffer{}) + t.Cleanup(func() { rootCmd.SetErr(nil); rootCmd.SetOut(nil) }) + rootCmd.SetArgs(append([]string{"self-hosted", "check", "--control-plane", "--json", + "--cluster-validator-image", "nvcr.io/nvidia/nvcf-byoc/cluster-validator:1.0.0"}, args...)) + return rootCmd.Execute(), stderr.String() +} + +func holdUntilDone(ctx context.Context) selfhosted.ClusterValidatorResult { + <-ctx.Done() + return selfhosted.ClusterValidatorResult{Err: ctx.Err()} +} + +// A run that outlives its budget is a timeout, never a pass: exit 5 with a +// final event that says it failed, not success on whatever had run. +func TestCheck_BudgetSpentIsATimeout(t *testing.T) { + for _, args := range [][]string{nil, {"--wait", "1m"}} { + err, stderr := runCheckWithBudget(t, 300*time.Millisecond, holdUntilDone, args...) + var exitErr *ExitCodeError + require.ErrorAs(t, err, &exitErr, "args %v", args) + assert.Equal(t, 5, exitErr.Code, "args %v", args) + assert.Regexp(t, `"event":"final".*"success":false`, stderr, "args %v", args) + } +} + +// --wait keeps polling while the validator reports a rollout in progress, +// instead of stopping on the first run that exits 0. +func TestCheck_WaitPollsOnARolloutInProgress(t *testing.T) { + calls := 0 + err, _ := runCheckWithBudget(t, time.Minute, func(context.Context) selfhosted.ClusterValidatorResult { + calls++ + logs := "Validator role: control-plane\nCluster is NVCF-Ready\n" + if calls == 1 { + logs = "Validator role: control-plane\nnvcf/api: rollout in progress (updated: 2/3)\n" + + "Cluster is NVCF-Ready (with warnings)\n" + } + return selfhosted.ClusterValidatorResult{Passed: true, Logs: logs} + }, "--wait", "30s") + require.NoError(t, err) + assert.Equal(t, 2, calls, "the second run, after the rollout, ends the wait") +} + +// Results from an iteration that ran on a dead context are not a verdict, even +// when every row that did run passed; and a budget that runs out while --wait +// sleeps between polls is a timeout too. +func TestCheck_BudgetSpentIsATimeoutEvenWhenRowsPassed(t *testing.T) { + passOnDeadCtx := func(ctx context.Context) selfhosted.ClusterValidatorResult { + <-ctx.Done() + return selfhosted.ClusterValidatorResult{Passed: true, Logs: "Validator role: control-plane\nCluster is NVCF-Ready\n"} + } + failFast := func(context.Context) selfhosted.ClusterValidatorResult { + return selfhosted.ClusterValidatorResult{ExitCode: 1, Logs: "Validator role: control-plane\n"} + } + for name, tc := range map[string]struct { + budget time.Duration + v func(context.Context) selfhosted.ClusterValidatorResult + args []string + }{ + "passed on a dead context": {300 * time.Millisecond, passOnDeadCtx, []string{"--wait", "1m"}}, + "budget ends between polls": {3 * time.Second, failFast, []string{"--wait", "1m"}}, + "single run, dead-context pass": {300 * time.Millisecond, passOnDeadCtx, nil}, + } { + err, stderr := runCheckWithBudget(t, tc.budget, tc.v, tc.args...) + var exitErr *ExitCodeError + require.ErrorAs(t, err, &exitErr, name) + assert.Equal(t, 5, exitErr.Code, name) + assert.Contains(t, stderr, `"event":"final"`, name) + } +} + +// Each --wait poll is a new validator run, so --no-cleanup would keep a full +// set of cluster-wide RBAC, Secret, ConfigMap and Job per poll. +func TestCheck_WaitWithNoCleanupIsRejected(t *testing.T) { + resetCheckFlags(t) + rootCmd.SetErr(&bytes.Buffer{}) + rootCmd.SetOut(&bytes.Buffer{}) + t.Cleanup(func() { rootCmd.SetErr(nil); rootCmd.SetOut(nil) }) + rootCmd.SetArgs([]string{"self-hosted", "check", "--control-plane", "--wait", "1m", "--no-cleanup"}) + err := rootCmd.Execute() + require.Error(t, err) + assert.Contains(t, err.Error(), "cannot be combined with --wait") +} + +// passingPreflightTools is the real tool set with every tool found at its +// minimum version. +func passingPreflightTools() []selfhosted.BinarySpec { + specs := selfHostedPreflightTools() + for i := range specs { + v := specs[i].MinVer + if v == nil { + v = semver.MustParse("1.0.0") + } + name := specs[i].Name + specs[i].LookPath = func(string) (string, error) { return "/usr/local/bin/" + name, nil } + specs[i].Version = func(context.Context, string) (*semver.Version, error) { return v, nil } + } + return specs +} diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go index 31f6a105e1..579d788a25 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_test.go @@ -140,7 +140,7 @@ func TestCheck_OneShotTTYUsesStaticRenderer(t *testing.T) { checkWriterIsTTY = func(io.Writer) bool { return true } var stderr bytes.Buffer - sink, err := selectCheckRenderer(&stderr, false) + sink, err := selectCheckRenderer(&stderr, false, nil) require.NoError(t, err) require.IsType(t, &progress.CheckOneShotRenderer{}, sink) diff --git a/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel b/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel index ee3d8832ae..9fb1539132 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel +++ b/src/clis/nvcf-cli/internal/selfhosted/BUILD.bazel @@ -65,6 +65,7 @@ go_test( "credhelper_test.go", "inotify_probe_test.go", "main_test.go", + "miniapiserver_test.go", "orchestrator_errors_test.go", "output_test.go", "preflight_test.go", diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 8efe995342..d94c187da9 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -130,6 +130,10 @@ type ClusterValidatorResult struct { // RunID labels every object the run created (clusterValidatorRunLabel). RunID string Err error + // LeftBehind reports that this run's RBAC and other objects were kept + // because its pod could still be running, so the caller can print the + // command that removes them rather than leave them for the orphan sweep. + LeftBehind bool } type ClusterValidator func(ctx context.Context, params ClusterValidatorParams) ClusterValidatorResult @@ -180,9 +184,9 @@ func runClusterValidator( return ClusterValidatorResult{Err: err} } - // Reclaim leftovers from dead runs before resolving this run's pull secret, - // not after: the sweep matches on the shared name prefix, so running it - // later can delete the Secret this run just selected. + // Reclaim leftovers from dead runs before resolving this run's pull + // secret. The sweep only takes objects older than its TTL, so it cannot + // reach anything this run is about to create. sweepOrphanClusterValidatorRBAC(vctx, client, orphanValidatorRBACTTL) // Resolver errors are non-fatal: fall through to the caller's value and @@ -260,6 +264,10 @@ func runClusterValidator( vctx, buildClusterValidatorJob(jobName, image, pullSecret, role, runID, noCleanup, env), metav1.CreateOptions{}, ) if err != nil { + // A create cut off by an interrupt or a dropped connection may still + // have been applied, and a Job left behind would run with its RBAC + // swept. The name is this run's own, so removing it is safe. + podMayBeRunning = !stopValidatorJob(client, jobName) return ClusterValidatorResult{RunID: runID, Err: fmt.Errorf("creating validator Job: %w", err)} } podMayBeRunning = true @@ -271,6 +279,9 @@ func runClusterValidator( // deliberately not owned: the ClusterRole and binding are cluster-scoped // and cannot be, and deleting the account alone would leave a binding // that anyone able to recreate that ServiceAccount name could inherit. + // Not under --no-cleanup: a kept Secret or ConfigMap owned by the kept Job + // would be garbage-collected the moment an operator re-runs that Job by + // deleting and recreating it. var owned []ownedArtifact if pullSecret == validatorPullSecretRunName(role, runID) { owned = append(owned, ownedArtifact{kind: "Secret", name: pullSecret}) @@ -278,12 +289,15 @@ func runClusterValidator( if role == clusterValidatorControlPlaneRole && configNote == "" { owned = append(owned, ownedArtifact{kind: "ConfigMap", name: clusterValidatorConfigRunName(runID)}) } - ownByJob(vctx, client, job, owned) + if !noCleanup { + ownByJob(vctx, client, job, owned) + } final, waitErr := waitForClusterValidatorJob(vctx, client, jobName) // A clean wait means the pod reached a terminal state, so the RBAC can go. - // A timeout leaves it running: pulling the RBAC then fills the surviving - // transcript with "forbidden" and masks the real cause. + // Otherwise the pod may still be running: pulling the RBAC then fills its + // transcript with "forbidden", and cuts off the validator's own cleanup + // of its probe resources. podMayBeRunning = waitErr != nil // Fetch logs under a fresh ctx from the parent: vctx is expired on the @@ -301,28 +315,43 @@ func runClusterValidator( // pod stops retrying, and let the deferred sweeps run now rather than // leaving a cluster-wide ClusterRole and an NGC-key Secret for a later // run's orphan sweep, or for nobody. + // Each stop deletes the Job in the foreground and waits, bounded, for its + // pod to end before the deferred sweeps revoke its RBAC. The validator + // removes its own probe namespace and DaemonSet on SIGTERM, and needs + // that RBAC to do it. var pullErr *validatorImagePullError - if errors.As(waitErr, &pullErr) && !noCleanup { - deleteValidatorJob(context.Background(), client, jobName) - podMayBeRunning = false - } - // An interrupt (Ctrl-C, SIGTERM) cancels the caller's context. The - // operator has abandoned the run, so stop the pod and reclaim everything - // now rather than leave cluster-wide RBAC for a later orphan sweep. A - // timeout is different: it leaves ctx itself live, and a pod that may - // still be running keeps its RBAC. - if errors.Is(ctx.Err(), context.Canceled) && !noCleanup { - deleteValidatorJob(context.Background(), client, jobName) - podMayBeRunning = false + interrupted := errors.Is(ctx.Err(), context.Canceled) + stopped := false + switch { + case errors.As(waitErr, &pullErr) && noCleanup: + // Kept for debugging, but a pod that cannot pull has nothing to + // run: suspend the Job so the pod stops retrying forever. + suspendValidatorJob(client, jobName) + case (errors.As(waitErr, &pullErr) || interrupted) && !noCleanup: + // A pull failure never started the container, and an interrupt means + // the operator abandoned the run: stop the Job and reclaim everything + // now rather than leave cluster-wide RBAC for a later orphan sweep. + podMayBeRunning = !stopValidatorJob(client, jobName) + stopped = true + case waitErr != nil && !noCleanup: + // A plain timeout: the Job's active deadline ends the pod shortly + // after this wait gave up. Wait for that, then sweep, as on success. + podMayBeRunning = !waitValidatorPodsDone(client, jobName, validatorDeadlineGrace) } if waitErr != nil { - return ClusterValidatorResult{ - JobName: jobName, - RunID: runID, - Logs: cleaned, - Err: waitErr, + res := ClusterValidatorResult{ + JobName: jobName, + RunID: runID, + Logs: cleaned, + Err: waitErr, + LeftBehind: podMayBeRunning && !noCleanup, + } + if stopped { + // The Job is gone, so a hint to read its logs would 404. + res.JobName = "" } + return res } // Separate short ctx so a slow log fetch can't burn the exit-code lookup's @@ -400,12 +429,75 @@ func deleteValidatorJob(ctx context.Context, client kubernetes.Interface, name s if err != nil || !hasValidatorManagedLabels(job.Labels) { return } - propagation := metav1.DeletePropagationBackground + // Foreground: the Job is removed only after its pod, so the pod gets its + // SIGTERM and grace period while its RBAC still exists. + propagation := metav1.DeletePropagationForeground opts := deleteExactly(job) opts.PropagationPolicy = &propagation _ = jobs.Delete(dctx, name, opts) } +// Vars (not consts) so tests can shorten them. +var ( + // validatorStopTimeout bounds the wait for a stopped Job's pod to end. + // It covers the pod's default 30s termination grace period. + validatorStopTimeout = 45 * time.Second + // validatorDeadlineGrace bounds the wait, after this run's own timeout, + // for the Job's active deadline (60s later) to end the pod. + validatorDeadlineGrace = 120 * time.Second + // validatorPullFailureGrace is how long a pull failure must persist before + // it is final. The kubelet retries after 10s and then 20s, so a transient + // registry error clears inside it. + validatorPullFailureGrace = 30 * time.Second + // validatorGetErrorLimit is how many consecutive failed Job reads end the + // wait. One 5xx or a refused connection during an apiserver restart is + // not the Job's result. + validatorGetErrorLimit = 5 +) + +// stopValidatorJob deletes the Job and reports whether its pods ended within +// validatorStopTimeout. +func stopValidatorJob(client kubernetes.Interface, name string) bool { + deleteValidatorJob(context.Background(), client, name) + return waitValidatorPodsDone(client, name, validatorStopTimeout) +} + +// suspendValidatorJob stops a kept Job from creating or retrying its pod. +func suspendValidatorJob(client kubernetes.Interface, name string) { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + _, _ = client.BatchV1().Jobs(clusterValidatorNamespace).Patch(ctx, name, types.MergePatchType, + []byte(`{"spec":{"suspend":true}}`), metav1.PatchOptions{}) +} + +// waitValidatorPodsDone waits up to limit, on a fresh context, until no pod of +// the Job is still running, and reports whether that happened. +func waitValidatorPodsDone(client kubernetes.Interface, jobName string, limit time.Duration) bool { + ctx, cancel := context.WithTimeout(context.Background(), limit) + defer cancel() + for { + pods, err := client.CoreV1().Pods(clusterValidatorNamespace).List(ctx, + metav1.ListOptions{LabelSelector: "job-name=" + jobName}) + if err == nil && allPodsDone(pods.Items) { + return true + } + select { + case <-ctx.Done(): + return false + case <-time.After(time.Second): + } + } +} + +func allPodsDone(pods []corev1.Pod) bool { + for i := range pods { + if p := pods[i].Status.Phase; p != corev1.PodSucceeded && p != corev1.PodFailed { + return false + } + } + return true +} + // validatorImagePullError reports that the validator pod could not pull its // image, so its container never started. type validatorImagePullError struct{ reason, message string } @@ -1005,21 +1097,40 @@ func buildClusterValidatorJob(name, image, pullSecret, role, runID string, noCle func waitForClusterValidatorJob(ctx context.Context, client kubernetes.Interface, jobName string) (*batchv1.Job, error) { ticker := time.NewTicker(clusterValidatorPollInterval) defer ticker.Stop() + getErrors := 0 + var pullFailingSince time.Time for { job, err := client.BatchV1().Jobs(clusterValidatorNamespace).Get(ctx, jobName, metav1.GetOptions{}) - if err != nil { + switch { + case err != nil: // If the deadline fired between ticker and Get, surface the wait // wording the select branch would have used. if ctxErr := ctx.Err(); ctxErr != nil { return nil, fmt.Errorf("waiting for job %s: %w", jobName, ctxErr) } - return nil, fmt.Errorf("get job %s: %w", jobName, err) - } - if job.Status.Succeeded > 0 || job.Status.Failed > 0 { + // A missing Job or a permission error cannot change; anything else + // is retried a few times before it decides the run. + getErrors++ + if apierrors.IsNotFound(err) || apierrors.IsForbidden(err) || apierrors.IsUnauthorized(err) || + getErrors >= validatorGetErrorLimit { + return nil, fmt.Errorf("get job %s: %w", jobName, err) + } + case job.Status.Succeeded > 0 || job.Status.Failed > 0: return job, nil - } - if reason, msg := podPullFailureReason(ctx, client, jobName); reason != "" { - return job, &validatorImagePullError{reason: reason, message: msg} + default: + getErrors = 0 + reason, msg := podPullFailureReason(ctx, client, jobName) + switch { + case reason == "": + pullFailingSince = time.Time{} + case reason == "InvalidImageName": + // A malformed reference never pulls. + return job, &validatorImagePullError{reason: reason, message: msg} + case pullFailingSince.IsZero(): + pullFailingSince = time.Now() + case time.Since(pullFailingSince) >= validatorPullFailureGrace: + return job, &validatorImagePullError{reason: reason, message: msg} + } } select { case <-ctx.Done(): diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go index 49942f18ec..8ee90438f9 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go @@ -19,6 +19,8 @@ package selfhosted import ( "context" + "errors" + "fmt" "io" "net/http" "net/http/httptest" @@ -101,6 +103,19 @@ func lifecycleClient(jobStatus func(name string) *batchv1.Job, waiting string) * return true, job, nil }) client.PrependReactor("list", "pods", podListReactor(waiting)) + // Deleting the Job takes its pod with it, as the garbage collector would; + // the fake clientset has none. + var jobDeleted atomic.Bool + client.PrependReactor("delete", "jobs", func(ktesting.Action) (bool, runtime.Object, error) { + jobDeleted.Store(true) + return false, nil, nil + }) + client.PrependReactor("list", "pods", func(ktesting.Action) (bool, runtime.Object, error) { + if jobDeleted.Load() { + return true, &corev1.PodList{}, nil + } + return false, nil, nil + }) client.PrependReactor("get", "pods", func(action ktesting.Action) (bool, runtime.Object, error) { if action.GetSubresource() != "" { return false, nil, nil @@ -192,14 +207,18 @@ func TestRunClusterValidator_PullFailureLeavesNothingBehind(t *testing.T) { "", false, clusterValidatorControlPlaneRole, nil, nil) require.Error(t, res.Err) assert.Empty(t, leftovers(t, client, res.RunID)) - deleted := false + created, deleted := "", "" for _, a := range client.Actions() { - if a.GetVerb() == "delete" && a.GetResource().Resource == "jobs" && - a.(ktesting.DeleteAction).GetName() == res.JobName { - deleted = true + switch { + case a.GetVerb() == "create" && a.GetResource().Resource == "jobs": + created = a.(ktesting.CreateAction).GetObject().(*batchv1.Job).Name + case a.GetVerb() == "delete" && a.GetResource().Resource == "jobs": + deleted = a.(ktesting.DeleteAction).GetName() } } - assert.True(t, deleted, "the Job must be deleted so its pod stops retrying the pull") + require.NotEmpty(t, created) + assert.Equal(t, created, deleted, "the Job must be deleted so its pod stops retrying the pull") + assert.Empty(t, res.JobName, "no hint may point at the Job that was just deleted") } // While the pod may still be running its RBAC must stay, but the Job owns the @@ -213,6 +232,7 @@ func TestRunClusterValidator_RunningPodKeepsRBACAndJobOwnsArtifacts(t *testing.T res := runClusterValidator(ctx, client, "nvcr.io/nvidia/validator:1", "", false, clusterValidatorControlPlaneRole, nil, nil) require.Error(t, res.Err) + assert.True(t, res.LeftBehind, "the caller prints the command that removes what was kept") left := leftovers(t, client, res.RunID) assert.Len(t, left["ServiceAccount"], 1, "a running pod must keep its RBAC") require.Len(t, left["Secret"], 1) @@ -393,10 +413,25 @@ func TestClusterValidatorCheck_PreRoleImageIsAWarning(t *testing.T) { return clusterValidatorCheck(cv, "", "img:1", "", false, validatorRoleControlPlane, nil, nil).Run(context.Background()) } - old := run("Starting NVCF cluster validation\n=== GPU Resources ===\nno GPUs found\n", false) + legacy := func(summaryRows ...string) string { + return "Starting NVCF cluster validation\n=== GPU Resources ===\nno GPUs found\n" + + "=== Validation Summary ===\nCheck Results:\n" + strings.Join(summaryRows, "\n") + + "\nCluster is NVCF-Not-Ready\n" + } + old := run(legacy("\u2713 Control Plane: Healthy", "\u2717 GPU Resources: Not Available"), false) assert.Equal(t, SeverityWarning, old.Severity) assert.Contains(t, old.Message, "does not support the control-plane checks") + // The old image's checks common to both roles still see real failures, + // and those must not be downgraded with the GPU row. + readyz := run(legacy("\u2717 Control Plane: Unhealthy", "\u2717 GPU Resources: Not Available"), false) + assert.Equal(t, SeverityError, readyz.Severity) + assert.Contains(t, readyz.Message, "Control Plane: Unhealthy") + assert.NotContains(t, readyz.Message, "GPU Resources") + + noSummary := run("Starting NVCF cluster validation\n=== GPU Resources ===\nno GPUs found\n", false) + assert.Equal(t, SeverityError, noSummary.Severity, "without its summary nothing shows the rest passed") + // A role-aware image that fails before printing its role line prints no // GPU section either, so its failure must stand. early := run("level=fatal msg=\"Failed to create Kubernetes client\"\n", false) @@ -536,3 +571,219 @@ func TestRunClusterValidator_CleanupIsBoundedWhenTheAPIServerHangs(t *testing.T) t.Fatal("the deferred cleanup did not return against a hung apiserver") } } + +// A Job that succeeds with the validator's own warnings is not a clean pass. A +// rollout in progress is marked transient, so --wait keeps polling on it; any +// other warning is not, so --wait does not poll forever on it. +func TestClusterValidatorCheck_PassWithWarnings(t *testing.T) { + run := func(logs string) CheckResult { + cv := func(context.Context, ClusterValidatorParams) ClusterValidatorResult { + return ClusterValidatorResult{Passed: true, Logs: logs} + } + return clusterValidatorCheck(cv, "", "img:1", "", false, validatorRoleControlPlane, nil, nil).Run(context.Background()) + } + base := "Validator role: control-plane\n" + + rolling := run(base + "Tier-2 StatefulSets: nats-system/nats: rolling update in progress (ready: 2/3)\n" + + "Cluster is NVCF-Ready (with warnings)\n") + assert.False(t, rolling.Passed) + assert.Equal(t, SeverityWarning, rolling.Severity) + assert.True(t, rolling.Transient) + + other := run(base + "Node-to-Node: not applicable (one Ready, schedulable node)\nCluster is NVCF-Ready (with warnings)\n") + assert.Equal(t, SeverityWarning, other.Severity) + assert.False(t, other.Transient, "a permanent warning must not keep --wait polling") + + clean := run(base + "Cluster is NVCF-Ready\n") + assert.True(t, clean.Passed) + assert.Equal(t, SeverityInfo, clean.Severity) +} + +// jobDeletes returns the DeleteOptions of every Job delete the client saw. +func jobDeletes(client *fake.Clientset) []metav1.DeleteOptions { + var out []metav1.DeleteOptions + for _, a := range client.Actions() { + if d, ok := a.(ktesting.DeleteActionImpl); ok && d.GetResource().Resource == "jobs" { + out = append(out, d.DeleteOptions) + } + } + return out +} + +// An interrupt stops the Job in the foreground, so its pod gets SIGTERM and +// its grace period while it still has the RBAC it needs to remove its own +// probe resources. Background propagation revoked that RBAC first. +func TestRunClusterValidator_InterruptStopsTheJobInTheForeground(t *testing.T) { + t.Setenv("NGC_API_KEY", "key") + client := lifecycleClient(running, "") + ctx, cancel := context.WithCancel(context.Background()) + client.PrependReactor("create", "jobs", func(ktesting.Action) (bool, runtime.Object, error) { + cancel() + return false, nil, nil + }) + res := runClusterValidator(ctx, client, "nvcr.io/nvidia/validator:1", + "", false, clusterValidatorComputePlaneRole, nil, nil) + require.Error(t, res.Err) + deletes := jobDeletes(client) + require.NotEmpty(t, deletes) + require.NotNil(t, deletes[0].PropagationPolicy) + assert.Equal(t, metav1.DeletePropagationForeground, *deletes[0].PropagationPolicy) + assert.Empty(t, leftovers(t, client, res.RunID), "the pod ended, so everything else goes") +} + +// If the stopped pod does not end within the bound, its RBAC stays rather than +// being pulled from under it, and the caller is told what was kept. +func TestRunClusterValidator_PodThatWillNotEndKeepsItsRBAC(t *testing.T) { + t.Setenv("NGC_API_KEY", "key") + client := lifecycleClient(running, "") + client.PrependReactor("list", "pods", func(action ktesting.Action) (bool, runtime.Object, error) { + sel := action.(ktesting.ListAction).GetListRestrictions().Labels.String() + return true, &corev1.PodList{Items: []corev1.Pod{{ + ObjectMeta: metav1.ObjectMeta{Name: "stuck", Namespace: clusterValidatorNamespace, + Labels: map[string]string{"job-name": strings.TrimPrefix(sel, "job-name=")}}, + Status: corev1.PodStatus{Phase: corev1.PodRunning}, + }}}, nil + }) + ctx, cancel := context.WithCancel(context.Background()) + client.PrependReactor("create", "jobs", func(ktesting.Action) (bool, runtime.Object, error) { + cancel() + return false, nil, nil + }) + res := runClusterValidator(ctx, client, "nvcr.io/nvidia/validator:1", + "", false, clusterValidatorComputePlaneRole, nil, nil) + require.Error(t, res.Err) + assert.True(t, res.LeftBehind) + assert.Len(t, leftovers(t, client, res.RunID)["ClusterRole"], 1) +} + +// On a plain timeout the Job's own deadline ends the pod shortly after; once it +// has, the RBAC is swept as on success instead of waiting for a later sweep. +func TestRunClusterValidator_TimeoutSweepsOnceThePodEnds(t *testing.T) { + t.Setenv("NGC_API_KEY", "key") + client := lifecycleClient(running, "") + var ended atomic.Bool + client.PrependReactor("list", "pods", func(action ktesting.Action) (bool, runtime.Object, error) { + if !ended.Load() { + return false, nil, nil + } + return true, &corev1.PodList{Items: []corev1.Pod{{Status: corev1.PodStatus{Phase: corev1.PodFailed}}}}, nil + }) + prev := clusterValidatorTimeout + clusterValidatorTimeout = 300 * time.Millisecond + t.Cleanup(func() { clusterValidatorTimeout = prev }) + go func() { + time.Sleep(time.Second) + ended.Store(true) + }() + + res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", + "", false, clusterValidatorComputePlaneRole, nil, nil) + require.Error(t, res.Err) + assert.False(t, res.LeftBehind) + assert.Empty(t, leftovers(t, client, res.RunID)["ClusterRole"], "the deadline ended the pod, so its RBAC goes") +} + +// Under --no-cleanup the kept Secret and ConfigMap are not owned by the kept +// Job: re-running that Job by replacing it would garbage-collect them. A pull +// failure suspends the kept Job, so its pod stops retrying forever, and an +// interrupt keeps everything. +func TestRunClusterValidator_NoCleanupKeepsArtifactsUnowned(t *testing.T) { + t.Setenv("NGC_API_KEY", "key") + client := lifecycleClient(succeeded, "") + res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", + "", true, clusterValidatorControlPlaneRole, nil, nil) + require.NoError(t, res.Err) + left := leftovers(t, client, res.RunID) + require.Len(t, left["Secret"], 1) + require.Len(t, left["ConfigMap"], 1) + sec, err := client.CoreV1().Secrets(clusterValidatorNamespace).Get(context.Background(), left["Secret"][0], metav1.GetOptions{}) + require.NoError(t, err) + assert.Empty(t, sec.OwnerReferences) + cm, err := client.CoreV1().ConfigMaps(clusterValidatorNamespace).Get(context.Background(), left["ConfigMap"][0], metav1.GetOptions{}) + require.NoError(t, err) + assert.Empty(t, cm.OwnerReferences) + + pulling := lifecycleClient(running, "ImagePullBackOff") + res = runClusterValidator(context.Background(), pulling, "nvcr.io/nvidia/validator:1", + "", true, clusterValidatorComputePlaneRole, nil, nil) + require.Error(t, res.Err) + assert.Empty(t, jobDeletes(pulling), "a kept Job is not deleted") + suspended := false + for _, a := range pulling.Actions() { + if p, ok := a.(ktesting.PatchAction); ok && p.GetResource().Resource == "jobs" && + strings.Contains(string(p.GetPatch()), `"suspend":true`) { + suspended = true + } + } + assert.True(t, suspended, "the kept Job must stop retrying the pull") + + interrupted := lifecycleClient(running, "") + ctx, cancel := context.WithCancel(context.Background()) + interrupted.PrependReactor("create", "jobs", func(ktesting.Action) (bool, runtime.Object, error) { + cancel() + return false, nil, nil + }) + res = runClusterValidator(ctx, interrupted, "nvcr.io/nvidia/validator:1", + "", true, clusterValidatorComputePlaneRole, nil, nil) + require.Error(t, res.Err) + assert.Empty(t, jobDeletes(interrupted), "--no-cleanup keeps the Job even on an interrupt") +} + +// The operator's own pull Secret is never made a dependent of the Job: only +// the Secret this run minted is, so a Job TTL cannot garbage-collect theirs. +func TestRunClusterValidator_OperatorPullSecretIsNeverOwned(t *testing.T) { + client := lifecycleClient(succeeded, "") + _, err := client.CoreV1().Secrets(clusterValidatorNamespace).Create(context.Background(), &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{Name: "my-pull", Namespace: clusterValidatorNamespace}, + Type: corev1.SecretTypeDockerConfigJson, + Data: map[string][]byte{corev1.DockerConfigJsonKey: []byte(`{"auths":{}}`)}, + }, metav1.CreateOptions{}) + require.NoError(t, err) + res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", + "my-pull", false, clusterValidatorComputePlaneRole, nil, nil) + require.NoError(t, res.Err) + sec, err := client.CoreV1().Secrets(clusterValidatorNamespace).Get(context.Background(), "my-pull", metav1.GetOptions{}) + require.NoError(t, err) + assert.Empty(t, sec.OwnerReferences) +} + +// One failed Job read is not the Job's result, and a first pull error is what +// a transient registry blip looks like: both are retried. A malformed image +// reference never pulls, so it ends the wait at once. +func TestWaitForClusterValidatorJob_TransientErrorsAreRetried(t *testing.T) { + client := lifecycleClient(succeeded, "") + calls := 0 + client.PrependReactor("get", "jobs", func(ktesting.Action) (bool, runtime.Object, error) { + calls++ + if calls <= 2 { + return true, nil, apierrors.NewInternalError(fmt.Errorf("etcd timeout")) + } + return false, nil, nil + }) + _, err := client.BatchV1().Jobs(clusterValidatorNamespace).Create(context.Background(), + &batchv1.Job{ObjectMeta: metav1.ObjectMeta{Name: "j", Namespace: clusterValidatorNamespace}}, metav1.CreateOptions{}) + require.NoError(t, err) + job, err := waitForClusterValidatorJob(context.Background(), client, "j") + require.NoError(t, err) + assert.Equal(t, int32(1), job.Status.Succeeded) + + prev := validatorPullFailureGrace + validatorPullFailureGrace = time.Hour + t.Cleanup(func() { validatorPullFailureGrace = prev }) + pulling := lifecycleClient(running, "ErrImagePull") + _, err = pulling.BatchV1().Jobs(clusterValidatorNamespace).Create(context.Background(), + &batchv1.Job{ObjectMeta: metav1.ObjectMeta{Name: "j", Namespace: clusterValidatorNamespace}}, metav1.CreateOptions{}) + require.NoError(t, err) + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + _, err = waitForClusterValidatorJob(ctx, pulling, "j") + var pullErr *validatorImagePullError + assert.False(t, errors.As(err, &pullErr), "a pull error inside the grace period is retried") + + invalid := lifecycleClient(running, "InvalidImageName") + _, err = invalid.BatchV1().Jobs(clusterValidatorNamespace).Create(context.Background(), + &batchv1.Job{ObjectMeta: metav1.ObjectMeta{Name: "j", Namespace: clusterValidatorNamespace}}, metav1.CreateOptions{}) + require.NoError(t, err) + _, err = waitForClusterValidatorJob(context.Background(), invalid, "j") + assert.True(t, errors.As(err, &pullErr), "a malformed reference never pulls") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index b6f15278d9..881c7f4634 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -189,21 +189,13 @@ func TestRunClusterValidator_HappyPath(t *testing.T) { assert.Equal(t, int32(0), res.ExitCode) assert.NotEmpty(t, res.JobName, "JobName must be populated so operators can read logs after the run") - // Sweep must run before create so the singleton invariant holds. The sweep - // lists rather than issuing a DeleteCollection, because the generated name - // has to be checked too and a collection selector cannot express that. - actions := client.Actions() - var sweepIdx, createIdx = -1, -1 - for i, a := range actions { - if a.GetVerb() == "list" && a.GetResource().Resource == "jobs" && sweepIdx == -1 { - sweepIdx = i - } - if a.GetVerb() == "create" && a.GetResource().Resource == "jobs" && createIdx == -1 { - createIdx = i - } + // No Job is deleted on a clean run: there is no sweep of earlier Jobs, + // which could only ever hit an overlapping run's live one. The orphan + // sweep lists Jobs but reclaims only preserved ones past their TTL. + for _, a := range client.Actions() { + assert.False(t, a.GetVerb() == "delete" && a.GetResource().Resource == "jobs", + "a clean run deletes no Job") } - require.NotEqual(t, -1, sweepIdx, "runClusterValidator must sweep prior Jobs before creating the new one") - assert.Less(t, sweepIdx, createIdx, "sweep must precede create in action sequence") } func TestRunClusterValidator_JobFailed(t *testing.T) { @@ -369,7 +361,7 @@ func TestRunClusterValidator_ImagePullBackOffShortCircuits(t *testing.T) { require.Error(t, res.Err, "ImagePullBackOff must short-circuit the wait with an error") assert.Contains(t, res.Err.Error(), "ImagePullBackOff") assert.Contains(t, res.Err.Error(), "cannot pull image") - assert.NotEmpty(t, res.JobName, "JobName must still be populated so the operator can describe the pod") + assert.Empty(t, res.JobName, "the Job is deleted on a pull failure, so no logs hint may name it") assert.Less(t, elapsed, clusterValidatorTimeout, "short-circuit must return well before the 5-minute timeout; otherwise the early-detect path is broken") } diff --git a/src/clis/nvcf-cli/internal/selfhosted/main_test.go b/src/clis/nvcf-cli/internal/selfhosted/main_test.go index ae1b789353..0d9e6b6e57 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/main_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/main_test.go @@ -20,6 +20,7 @@ package selfhosted import ( "os" "testing" + "time" ) // TestMain points HOME at an empty directory so no test reads the developer's @@ -34,6 +35,11 @@ func TestMain(m *testing.M) { } _ = os.Setenv("HOME", home) _ = os.Unsetenv("HELM_DRIVER") + // The fake clientset has no controllers, so a pod never ends on its own: + // keep the waits for that short. Tests of the waits set their own. + validatorStopTimeout = 2 * time.Second + validatorDeadlineGrace = 2 * time.Second + validatorPullFailureGrace = 0 code := m.Run() _ = os.RemoveAll(home) os.Exit(code) diff --git a/src/clis/nvcf-cli/internal/selfhosted/miniapiserver_test.go b/src/clis/nvcf-cli/internal/selfhosted/miniapiserver_test.go new file mode 100644 index 0000000000..eb0aed8141 --- /dev/null +++ b/src/clis/nvcf-cli/internal/selfhosted/miniapiserver_test.go @@ -0,0 +1,211 @@ +/* +SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. +SPDX-License-Identifier: Apache-2.0 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package selfhosted + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "strings" + "sync" + "sync/atomic" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/rest" +) + +// miniAPIServer is an in-memory apiserver over real HTTP, for what the fake +// clientset cannot show: request contexts and calls that hang. A request whose +// context is already cancelled never reaches it, which is the point. It +// stores what is created, lists it back, and records deletes. +type miniAPIServer struct { + t *testing.T + mu sync.Mutex + objects map[string]map[string]any // collection path -> name -> object + deletes []string // "/" + // hangDeletes holds every DELETE until the client gives up. + hangDeletes atomic.Bool + // jobCreated is closed on the first Job create. + jobCreated chan struct{} + onceJob sync.Once + // runningJob, when set, is the status every Job read returns. + runningJob bool +} + +func newMiniAPIServer(t *testing.T) (*miniAPIServer, kubernetes.Interface) { + t.Helper() + m := &miniAPIServer{t: t, objects: map[string]map[string]any{}, jobCreated: make(chan struct{}), runningJob: true} + srv := httptest.NewServer(http.HandlerFunc(m.serve)) + t.Cleanup(func() { + srv.CloseClientConnections() + srv.Close() + }) + client, err := kubernetes.NewForConfig(&rest.Config{ + Host: srv.URL, + ContentConfig: rest.ContentConfig{ContentType: "application/json"}, + }) + require.NoError(t, err) + return m, client +} + +func (m *miniAPIServer) deleted() []string { + m.mu.Lock() + defer m.mu.Unlock() + return append([]string(nil), m.deletes...) +} + +func (m *miniAPIServer) serve(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json") + path := strings.TrimSuffix(r.URL.Path, "/") + collection, name := path, "" + if i := strings.LastIndex(path, "/"); i > 0 && isNamedPath(path) { + collection, name = path[:i], path[i+1:] + } + m.mu.Lock() + defer m.mu.Unlock() + switch r.Method { + case http.MethodPost: + body, _ := io.ReadAll(r.Body) + var obj map[string]any + _ = json.Unmarshal(body, &obj) + meta, _ := obj["metadata"].(map[string]any) + n, _ := meta["name"].(string) + meta["uid"] = "uid-" + n + if m.objects[collection] == nil { + m.objects[collection] = map[string]any{} + } + m.objects[collection][n] = obj + if strings.HasSuffix(collection, "/jobs") { + m.onceJob.Do(func() { close(m.jobCreated) }) + } + w.WriteHeader(http.StatusCreated) + _ = json.NewEncoder(w).Encode(obj) + case http.MethodGet: + if name == "" { + items := []any{} + for _, o := range m.objects[collection] { + items = append(items, o) + } + _ = json.NewEncoder(w).Encode(map[string]any{"apiVersion": "v1", "kind": "List", "items": items}) + return + } + obj, ok := m.objects[collection][name] + if !ok { + notFound(w) + return + } + _ = json.NewEncoder(w).Encode(obj) + case http.MethodDelete: + if m.hangDeletes.Load() { + // The server notices a closed connection only once the body has + // been read, so read it before waiting on the request context. + _, _ = io.Copy(io.Discard, r.Body) + m.mu.Unlock() + <-r.Context().Done() + m.mu.Lock() + return + } + m.deletes = append(m.deletes, collection+"/"+name) + delete(m.objects[collection], name) + if strings.HasSuffix(collection, "/jobs") { + // The Job's pods go with it, as the garbage collector would. + delete(m.objects, strings.TrimSuffix(collection, "/jobs")+"/pods") + } + _ = json.NewEncoder(w).Encode(map[string]any{"kind": "Status", "apiVersion": "v1", "status": "Success"}) + default: + // PATCH and PUT: accept and echo nothing interesting. + _ = json.NewEncoder(w).Encode(map[string]any{}) + } +} + +// isNamedPath reports whether path names one object rather than a collection: +// its last segment follows a resource segment. +func isNamedPath(path string) bool { + parts := strings.Split(strings.Trim(path, "/"), "/") + resources := map[string]bool{ + "jobs": true, "pods": true, "secrets": true, "configmaps": true, "serviceaccounts": true, + "clusterroles": true, "clusterrolebindings": true, "namespaces": true, + } + return len(parts) >= 2 && resources[parts[len(parts)-2]] +} + +func notFound(w http.ResponseWriter) { + w.WriteHeader(http.StatusNotFound) + _, _ = io.WriteString(w, `{"kind":"Status","apiVersion":"v1","status":"Failure","reason":"NotFound","code":404}`) +} + +// runInterrupted starts a run against m, cancels it once the Job exists, and +// returns the result. +func runInterrupted(t *testing.T, client kubernetes.Interface, m *miniAPIServer) ClusterValidatorResult { + t.Helper() + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + done := make(chan ClusterValidatorResult, 1) + go func() { + done <- runClusterValidator(ctx, client, "registry.example.com/validator:1", + "", false, clusterValidatorComputePlaneRole, nil, nil) + }() + select { + case <-m.jobCreated: + case <-time.After(30 * time.Second): + t.Fatal("the run never created its Job") + } + cancel() + select { + case res := <-done: + return res + case <-time.After(60 * time.Second): + t.Fatal("the interrupted run did not return") + } + return ClusterValidatorResult{} +} + +// On an interrupt the cleanup requests really go out. A cleanup context +// derived from the cancelled run context sends none, which the fake clientset +// cannot show because it ignores contexts. +func TestRunClusterValidator_InterruptSendsCleanupOverTheWire(t *testing.T) { + m, client := newMiniAPIServer(t) + res := runInterrupted(t, client, m) + require.Error(t, res.Err) + + got := strings.Join(m.deleted(), " ") + for _, want := range []string{"/jobs/", "/clusterrolebindings/", "/clusterroles/", "/serviceaccounts/"} { + assert.Contains(t, got, want) + } +} + +// A delete that never answers does not hold the CLI open: every cleanup call +// is bounded. +func TestRunClusterValidator_HungDeletesAreBounded(t *testing.T) { + prev := validatorCleanupTimeout + validatorCleanupTimeout = 500 * time.Millisecond + t.Cleanup(func() { validatorCleanupTimeout = prev }) + m, client := newMiniAPIServer(t) + m.hangDeletes.Store(true) + + start := time.Now() + res := runInterrupted(t, client, m) + require.Error(t, res.Err) + assert.Less(t, time.Since(start), 25*time.Second) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index 1130e17205..a88d0764fc 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -94,6 +94,9 @@ type CheckResult struct { HintURL string Err error // populated only when the check itself failed to execute Logs string // optional: full check transcript for --show-logs; not emitted to JSON + // Transient marks a warning expected to clear by itself, such as a + // rollout in progress. --wait keeps polling while one remains. + Transient bool } // BinarySpec defines a tool that must be on PATH and a version constraint. @@ -651,10 +654,18 @@ func clusterValidatorCheck( }) r.Logs = result.Logs r.Detail = clusterValidatorDetail(kubeContext, result.JobName) - if noCleanup { + switch { + case noCleanup: if hint := validatorCleanupHint(kubeContext, result.RunID); hint != "" { r.Detail = strings.TrimPrefix(r.Detail+"; ", "; ") + hint } + case result.LeftBehind: + // The pod could still be running, so its RBAC was kept rather + // than pulled out from under it. Say how to remove it once it + // ends, instead of leaving it for a later check's sweep. + if hint := validatorLeftBehindHint(kubeContext, result.RunID); hint != "" { + r.Detail = strings.TrimPrefix(r.Detail+"; ", "; ") + hint + } } if result.Err != nil { @@ -673,6 +684,16 @@ func clusterValidatorCheck( // role-aware image that fails before printing it (say, building its // Kubernetes client) must still fail the run. if role == validatorRoleControlPlane && isLegacyComputePlaneTranscript(result.Logs) { + // Downgrade only the failure the old image causes by itself: its + // GPU check on a CPU-only control plane. Its checks common to both + // roles (the control plane's /readyz, admission webhooks, critical + // registry reachability) still see real failures, and those fail. + if others := legacyCriticalFailures(result.Logs); len(others) > 0 { + r.Severity = SeverityError + r.Message = "cluster-validator reported failures (" + strings.Join(others, "; ") + + "); the image predates validator roles, so only its checks common to both roles ran" + return r + } r.Severity = SeverityWarning r.Message = "cluster-validator image does not support the control-plane checks (it ran the " + "compute-plane set); use an image from an NVCA release that supports validator roles, " + @@ -680,6 +701,19 @@ func clusterValidatorCheck( return r } r.Passed = result.Passed + if result.Passed && strings.Contains(result.Logs, validatorReadyWithWarnings) { + // The Job succeeding is not a clean pass when the validator + // itself reported warnings. A rollout in progress is expected + // to clear, so --wait keeps polling on it. + r.Passed = false + r.Severity = SeverityWarning + r.Transient = isRolloutTranscript(result.Logs) + r.Message = "cluster-validator passed with warnings; run with --show-logs for details" + if r.Transient { + r.Message = "cluster-validator passed with a rollout in progress; --wait polls until it completes" + } + return r + } if result.Passed { r.Severity = SeverityInfo r.Message = "cluster passed cluster-validator built-in checks" @@ -697,6 +731,57 @@ func clusterValidatorCheck( // nvca/internal/clustervalidator/validator.go. const validatorRoleMarker = "Validator role: " +// validatorReadyWithWarnings is in the verdict line of a run that passed every +// critical check with warnings. Must match printSummary in +// nvca/internal/clustervalidator/validator.go. +const validatorReadyWithWarnings = "NVCF-Ready (with warnings)" + +// validatorRolloutMarkers are in the validator's warnings for a Deployment or +// StatefulSet rollout in progress (checks.go, Tier-1 and Tier-2). +var validatorRolloutMarkers = []string{"rollout in progress", "rolling update in progress", "mid-rollout"} + +func isRolloutTranscript(logs string) bool { + for _, m := range validatorRolloutMarkers { + if strings.Contains(logs, m) { + return true + } + } + return false +} + +// validatorSummaryStart and validatorFailIcon locate the failed critical rows +// the validator prints in its summary. Must match printSummary and printError +// in nvca/internal/clustervalidator. +const ( + validatorSummaryStart = "Check Results:" + validatorFailIcon = "\u2717" +) + +// legacyCriticalFailures returns the failed critical summary rows of a +// pre-role transcript other than GPU Resources, the one row the compute-plane +// set fails on any CPU-only control plane. A transcript without a summary +// returns a row saying so: nothing shows the run was otherwise clean. +func legacyCriticalFailures(logs string) []string { + i := strings.LastIndex(logs, validatorSummaryStart) + if i < 0 { + return []string{"the validator printed no summary"} + } + var out []string + for _, line := range strings.Split(logs[i:], "\n") { + if strings.Contains(line, "Cluster is") { + break + } + _, row, ok := strings.Cut(line, validatorFailIcon) + if !ok { + continue + } + if row = strings.TrimSpace(row); row != "" && !strings.HasPrefix(row, "GPU Resources") { + out = append(out, row) + } + } + return out +} + // legacyComputePlaneHeader is a section header only the compute-plane check // set prints. A validator that predates roles always runs that set. const legacyComputePlaneHeader = "GPU Resources" @@ -722,6 +807,20 @@ func validatorCleanupHint(kubeContext, runID string) string { ctx, clusterValidatorNamespace, sel, ctx, sel) } +// validatorLeftBehindHint is the removal command for a run whose pod outlived +// the wait, so its RBAC was kept. +func validatorLeftBehindHint(kubeContext, runID string) string { + if runID == "" { + return "" + } + sel := clusterValidatorRunLabel + "=" + runID + ctx := kubectlContextArg(kubeContext) + return fmt.Sprintf("the validator pod was still running, so its objects were kept; once it ends remove them "+ + "with: kubectl%s delete -n %s job,serviceaccount,secret,configmap -l %s && "+ + "kubectl%s delete clusterrole,clusterrolebinding -l %s", + ctx, clusterValidatorNamespace, sel, ctx, sel) +} + func clusterValidatorDetail(kubeContext, jobName string) string { hint := kubectlLogsHint(kubeContext, jobName) if hint == "" { @@ -1041,15 +1140,33 @@ func runPreflightImpl(ctx context.Context, cfg PreflightConfig, role Role, rc Ro catStart := time.Now() var catResults []CheckResult for _, spec := range cat.checks { - if ctx.Err() != nil { + var res CheckResult + switch { + case errors.Is(ctx.Err(), context.Canceled): + // Interrupted: the command reports the interrupt, not rows. return all + case ctx.Err() != nil: + // The budget ran out before this check started. Dropping it + // let the partial set grade as the verdict, so a validator + // that never ran could pass the gate. + res = CheckResult{ + ID: spec.ID, Severity: SeverityError, + Message: "not run: the check's time budget ran out before it started", + Err: ctx.Err(), + } + default: + _ = sink.Emit(ctx, progress.CheckStarted{ + Category: cat.name, + ID: spec.ID, + Message: spec.HumanLabel, + }) + res = spec.Run(ctx) + if errors.Is(ctx.Err(), context.Canceled) { + // Cut short by the interrupt, so its result is not a + // finding; the cancelled final event says what happened. + return all + } } - _ = sink.Emit(ctx, progress.CheckStarted{ - Category: cat.name, - ID: spec.ID, - Message: spec.HumanLabel, - }) - res := spec.Run(ctx) res.Category = cat.name all = append(all, res) _ = sink.Emit(ctx, progress.CheckCompleted{ diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight_test.go b/src/clis/nvcf-cli/internal/selfhosted/preflight_test.go index 66725d4662..d0e0515b7a 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight_test.go @@ -25,6 +25,7 @@ import ( "os" "path/filepath" "testing" + "time" "github.com/Masterminds/semver/v3" "github.com/stretchr/testify/assert" @@ -716,3 +717,34 @@ func TestCountResults_OneRule(t *testing.T) { assert.Equal(t, 1, f) assert.Equal(t, 2, w) } + +// When the budget runs out, the checks not yet started are error rows rather +// than silently dropped, so a partial run cannot grade as a pass. An +// interrupt ends the run without them: the command reports the interrupt. +func TestRunPreflight_BudgetSpentChecksAreNotRunErrors(t *testing.T) { + cfg := PreflightConfig{Tools: []BinarySpec{passingToolSpec("kubectl", "1.30.0"), passingToolSpec("helm", "3.15.0")}} + + expired, cancel := context.WithDeadline(context.Background(), time.Now().Add(-time.Second)) + defer cancel() + res := RunPreflightForRole(expired, cfg, RoleLocalOnly, RoleConfig{}, &captureSink{}) + require.NotEmpty(t, res) + for _, r := range res { + assert.True(t, r.IsBlockingFailure(), r.ID) + assert.Contains(t, r.Message, "not run", r.ID) + } + + cancelled, stop := context.WithCancel(context.Background()) + stop() + assert.Empty(t, RunPreflightForRole(cancelled, cfg, RoleLocalOnly, RoleConfig{}, &captureSink{})) + + // A check cut short by the interrupt is not a finding either. + midRun, stopMidRun := context.WithCancel(context.Background()) + defer stopMidRun() + interrupting := passingToolSpec("kubectl", "1.30.0") + interrupting.Version = func(context.Context, string) (*semver.Version, error) { + stopMidRun() + return nil, context.Canceled + } + cfg = PreflightConfig{Tools: []BinarySpec{interrupting}} + assert.Empty(t, RunPreflightForRole(midRun, cfg, RoleLocalOnly, RoleConfig{}, &captureSink{})) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go index 1d57946947..3c3ddf51ab 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go @@ -192,6 +192,12 @@ type ModelOpts struct { // Leave both empty (the default) for single-cluster mode. ControlPlaneContext string ComputePlaneContext string + + // OnQuit runs when the operator presses a quit key. Bubbletea reads the + // terminal in raw mode, so Ctrl-C arrives as a key press, not a signal: + // without this, quitting closed the dashboard while the command kept + // running behind it. + OnQuit func() } // checkCategoryState holds the accumulated state for one pre-flight check @@ -229,6 +235,7 @@ type Model struct { controlCtx string // M+9: control-plane kubeconfig context (empty → single-cluster) computeCtx string // M+9: compute-plane kubeconfig context (empty → single-cluster) nowFunc func() time.Time + onQuit func() // dynamic state (mutated by Update) started time.Time @@ -354,6 +361,7 @@ func NewModel(opts ModelOpts) Model { asciiOnly: opts.AsciiOnly, mode: opts.Mode, totalChecks: opts.TotalChecks, + onQuit: opts.OnQuit, } switch opts.Mode { @@ -437,6 +445,9 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { case tea.KeyMsg: switch msg.String() { case "q", "ctrl+c", "esc": + if m.onQuit != nil { + m.onQuit() + } return m, tea.Quit } return m, nil diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty_test.go b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty_test.go index d860d5a325..f2beae2652 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty_test.go @@ -930,3 +930,18 @@ func TestTTY_CheckCompleteWithWarning(t *testing.T) { } assert.Contains(t, model.(Model).View(), "ok with warnings (2/3 passed, 0 failed, 1 warning(s))") } + +// Bubbletea reads the terminal in raw mode, so Ctrl-C is a key press, not a +// signal. Each quit key must reach the run, or quitting closes the dashboard +// while the command keeps running behind it. +func TestModel_QuitKeysCallOnQuit(t *testing.T) { + for _, key := range []tea.KeyMsg{{Type: tea.KeyCtrlC}, {Type: tea.KeyEsc}, {Type: tea.KeyRunes, Runes: []rune("q")}} { + called := 0 + m := NewModel(ModelOpts{Mode: ModeCheck, OnQuit: func() { called++ }}) + _, cmd := m.Update(key) + require.NotNil(t, cmd, key.String()) + assert.Equal(t, 1, called, key.String()) + } + _, cmd := NewModel(ModelOpts{Mode: ModeCheck}).Update(tea.KeyMsg{Type: tea.KeyCtrlC}) + assert.NotNil(t, cmd, "without a hook the dashboard still quits") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/select.go b/src/clis/nvcf-cli/internal/selfhosted/progress/select.go index f8e3ff017d..a69cc557db 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/select.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/select.go @@ -105,6 +105,9 @@ type RenderOpts struct { // (7-phase teardown) and ModeUninstall (3-5 phase per-plane teardown). // Zero leaves the renderer's default in place. TotalPhases int + + // OnQuit is passed to the TTY renderer; see ModelOpts.OnQuit. + OnQuit func() } // SelectRenderer picks an EventSink based on opts and ambient state. The @@ -180,6 +183,7 @@ func SelectRenderer(stderr io.Writer, opts RenderOpts) (EventSink, RendererKind, ControlPlaneContext: opts.ControlPlaneContext, ComputePlaneContext: opts.ComputePlaneContext, NowFunc: func() time.Time { return time.Now().UTC() }, + OnQuit: opts.OnQuit, }), RendererTTYCompact, nil } @@ -194,6 +198,7 @@ func SelectRenderer(stderr io.Writer, opts RenderOpts) (EventSink, RendererKind, ControlPlaneContext: opts.ControlPlaneContext, ComputePlaneContext: opts.ComputePlaneContext, NowFunc: func() time.Time { return time.Now().UTC() }, + OnQuit: opts.OnQuit, }), RendererTTYFull, nil } From 183583a09c6942901c2159708b3e71f8416f9156 Mon Sep 17 00:00:00 2001 From: rohithb Date: Thu, 1 Oct 2026 03:15:10 +0530 Subject: [PATCH 52/55] fix(nvcf-cli): skip an unresolvable validator tag, prefer the NGC key the install uses, make validator reachability non-critical, stop flagging pre-created or live namespaces as stale, send post-install for --pre --all, and isolate check tests Signed-off-by: rohithb --- .../examples/ci-pipelines.md | 2 +- .../reference/exit-codes.md | 2 +- .../nvcf-self-managed-cli/reference/flags.md | 14 +- src/clis/nvcf-cli/.nvcf-cli.yaml.template | 18 +- src/clis/nvcf-cli/cmd/main_test.go | 24 +- src/clis/nvcf-cli/cmd/self_hosted_check.go | 74 +- .../cmd/self_hosted_check_scope_test.go | 27 + .../self_hosted_check_validatorenv_test.go | 85 +- .../agentskill/skilldata_generated.go | 6458 +++++++++-------- .../internal/selfhosted/clustervalidator.go | 16 +- .../selfhosted/clustervalidator_test.go | 9 +- .../internal/selfhosted/credhelper_test.go | 22 + .../internal/selfhosted/stale_namespace.go | 54 + .../selfhosted/stale_namespace_test.go | 50 + .../internal/selfhosted/validatortag.go | 34 +- 15 files changed, 3567 insertions(+), 3322 deletions(-) diff --git a/ai-tooling/user/skills/nvcf-self-managed-cli/examples/ci-pipelines.md b/ai-tooling/user/skills/nvcf-self-managed-cli/examples/ci-pipelines.md index a41e605e14..1376210db0 100644 --- a/ai-tooling/user/skills/nvcf-self-managed-cli/examples/ci-pipelines.md +++ b/ai-tooling/user/skills/nvcf-self-managed-cli/examples/ci-pipelines.md @@ -29,7 +29,7 @@ Notes: ## GitOps (Argo / Flux) pattern -CI doesn't `kubectl apply` — instead, render manifests, commit them, let the controller apply. +CI doesn't `kubectl apply`. Instead, render manifests, commit them, let the controller apply. ```yaml render: diff --git a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/exit-codes.md b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/exit-codes.md index a08c0e050b..5050ca05c9 100644 --- a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/exit-codes.md +++ b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/exit-codes.md @@ -8,7 +8,7 @@ Stable across subcommands. Use these to drive agent retry / surfacing logic. | `1` | Generic error | Helm render failed; network unreachable; file not found; YAML parse error | | `2` | Pre-flight check failed | A `check` result at error severity: Gateway API CRDs missing; kubectl not on PATH; default StorageClass absent; a cluster-validator that could not run (RBAC denied, image pull failure, timeout). Warning-severity results exit `0` | | `3` | Admin auth failed | No token + `--non-interactive` set; ICMS rejected JWT; init endpoint unreachable | -| `5` | Manifest apply or `--wait` timed out | Helm install timeout; check polled but didn't pass before duration | +| `5` | Manifest apply or `--wait` timed out | Helm install timeout; check polled but didn't pass before duration; the check's time budget ran out before every check ran (those report as not run) | | `130` | Cancelled by SIGINT/SIGTERM | User Ctrl-C; CI budget exceeded; pod evicted | ## How an agent should react diff --git a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md index e95df295a7..b2e0c8aecf 100644 --- a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md +++ b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md @@ -12,15 +12,15 @@ | Flag | Purpose | Default | |---|---|---| -| `--control-plane-stack=…` | Control-plane bundle source: local path, git URL, or `oci://` URL | embedded OCI URL pinned by CLI version | -| `--compute-plane-stack=…` | Compute-plane bundle source: local path, git URL, or `oci://` URL | embedded OCI URL pinned by CLI version | -| `--env=local\|prd\|…` | Helmfile environment name | `local` for dev builds, `prd` for releases | +| `--control-plane-stack=...` | Control-plane bundle source: local path, git URL, or `oci://` URL | embedded OCI URL pinned by CLI version | +| `--compute-plane-stack=...` | Compute-plane bundle source: local path, git URL, or `oci://` URL | embedded OCI URL pinned by CLI version | +| `--env=local\|prd\|...` | Helmfile environment name | `local` for dev builds, `prd` for releases | | `--non-interactive` | Disable all stdin prompts | `false` | | `--token=$JWT` | Admin JWT, overrides stored session | - | | `--no-apply` | `install` only - emit YAML, do not kubectl apply | `false` | | `--output=text\|json` | Legacy alias for `--json` (deprecated, removed in next major) | `text` | | `--plain` | Force plain streaming output | auto-detect | -| `--wait DURATION` | `check` only; block until pass | - | +| `--wait DURATION` | `check` only; poll until the check passes or DURATION runs out (exit `5`). A warning that is expected to clear, such as a rollout in progress, keeps it polling. Cannot be combined with `--no-cleanup` | - | | `--control-plane-context CTX` | kubectl context for control plane (REQ-20) | current context | | `--compute-plane-context CTX` | kubectl context for compute plane (REQ-20) | current context | | `--icms-url URL` | Public ICMS URL; required when contexts differ | derived from `base_http_url` | @@ -33,7 +33,7 @@ required. Each selects a role; only the selected roles contact a cluster. | Flag | Purpose | Default | |---|---|---| -| `--pre` | Pre-flight: local-host tools plus cluster readiness. Skips SIS reachability, since SIS is not installed yet, unless `--all` or `--compute-plane` is also passed | `false` | +| `--pre` | Pre-flight: local-host tools plus cluster readiness. Skips SIS reachability, since SIS is not installed yet, unless `--all` or `--compute-plane` is also passed. With `--all`, or with a role's own flag, that role's validator checks the cluster as installed | `false` | | `--control-plane` | Control-plane checks | `false` | | `--compute-plane` | Compute-plane checks | `false` | | `--all` | Every category, including SIS reachability when combined with `--pre` | `false` | @@ -48,8 +48,8 @@ after the run, so the kubeconfig context needs permission to manage those. | Flag | Purpose | Default | |---|---|---| -| `--cluster-validator-image REF` | Validator image. Resolution order: flag, `NVCF_CLI_CLUSTER_VALIDATOR_IMAGE`, config key `cluster_validator_image`. A ref with no tag discovers the latest stable tag from the registry. Unset everywhere skips the probe with a warning | - | -| `--cluster-validator-registries host:port,...` | Extra registries the control-plane validator probes for reachability. They are added to the registries the install pulls from: the validator image's registry, the stack's `global.image.registry`, and `quay.io` for the cert-manager ACME solver unless the stack sets `certManager.acmesolver.image`. `nvcr.io` is probed, as non-critical, only when neither the image nor the stack names a registry. Repeatable or comma-separated. Env: `NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES`; config key `cluster_validator_registries` | - | +| `--cluster-validator-image REF` | Validator image. Resolution order: flag, `NVCF_CLI_CLUSTER_VALIDATOR_IMAGE`, config key `cluster_validator_image`. A ref with no tag discovers the latest stable tag from the registry; if no tag can be discovered, the probe is skipped with a note to pin one. Unset everywhere skips the probe with a warning | - | +| `--cluster-validator-registries host:port,...` | Extra registries the control-plane validator probes for reachability. They are added to the registries the install pulls from: the validator image's registry, the stack's `global.image.registry`, and `quay.io` for the cert-manager ACME solver unless the stack sets `certManager.acmesolver.image`. `nvcr.io` is probed only when neither the image nor the stack names a registry. The validator dials from a pod with no proxy, so an unreachable registry is a warning; the local credential check is what fails a registry the install cannot pull from. Repeatable or comma-separated. Env: `NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES`; config key `cluster_validator_registries` | - | | `--cluster-validator-probe-image REF` | Image for the control-plane validator's node-to-node overlay probe. Needs `sh` and a busybox-style `nc`. Set a mirror for air-gapped clusters. Env: `NVCF_CLI_CLUSTER_VALIDATOR_PROBE_IMAGE`; config key `cluster_validator_probe_image` | `busybox:1.36` from Docker Hub | | `--cluster-validator-pull-secret NAME` | docker-registry Secret in `default` used to pull the validator image. When empty, the CLI looks for one in the NVCF namespaces and copies it into `default` for the run. Failing that, and only for an image on an NGC registry, it mints one from `NGC_API_KEY` | auto-detect | | `--skip-cluster-validation` | Skip the in-cluster validator probe entirely. A validator that is configured but cannot run fails the check, so use this to opt out explicitly, for example when the cluster cannot pull the image. Env: `NVCF_CLI_SELFHOSTED_SKIP_CLUSTER_VALIDATION` | `false` | diff --git a/src/clis/nvcf-cli/.nvcf-cli.yaml.template b/src/clis/nvcf-cli/.nvcf-cli.yaml.template index 2529d20bbd..0d7cde536e 100644 --- a/src/clis/nvcf-cli/.nvcf-cli.yaml.template +++ b/src/clis/nvcf-cli/.nvcf-cli.yaml.template @@ -158,8 +158,10 @@ api_keys_owner_id: svc@nvcf-api.local # Command-line flag: --cluster-validator-image # # When the value has no tag, the latest tag is discovered from the -# registry (preferring stable releases over rc). If unset everywhere, -# the validator probe is skipped with a note on stderr. +# registry (preferring stable releases over rc). If discovery fails, the +# validator is skipped with a note rather than pulled as :latest; pin a tag +# to avoid depending on discovery. If unset everywhere, the validator probe +# is skipped with a note on stderr. # # Staging: stg.nvcr.io/nvidia/nvcf-byoc/cluster-validator # Prod: nvcr.io/nvidia/nvcf-byoc/cluster-validator @@ -179,6 +181,18 @@ api_keys_owner_id: svc@nvcf-api.local # - harbor.example.com:443 # - ghcr.io:443 +# Image for the control-plane validator's node-to-node overlay probe, which +# needs sh and a busybox-style nc. Defaults to busybox:1.36 from Docker Hub. +# Set a mirror for air-gapped clusters. The probe pods get no imagePullSecrets, +# so the image must be pullable anonymously or through node-level registry +# credentials. +# +# Config key: cluster_validator_probe_image +# Environment variable: NVCF_CLI_CLUSTER_VALIDATOR_PROBE_IMAGE +# Command-line flag: --cluster-validator-probe-image +# +# cluster_validator_probe_image: harbor.example.com/library/busybox:1.36 + # ============================================================================== # General Settings # ============================================================================== diff --git a/src/clis/nvcf-cli/cmd/main_test.go b/src/clis/nvcf-cli/cmd/main_test.go index c2abc70774..95a996977f 100644 --- a/src/clis/nvcf-cli/cmd/main_test.go +++ b/src/clis/nvcf-cli/cmd/main_test.go @@ -41,6 +41,14 @@ import ( // cluster from a unit test, and it is why the package took minutes and failed // on a proxied kubeconfig rather than seconds and deterministically. func TestMain(m *testing.M) { + // Every command reads ~/.nvcf-cli.yaml and some tests save + // ~/.nvcf-cli.state, so a developer's real config would steer results and + // a test run would overwrite their saved credentials. + home, err := os.MkdirTemp("", "nvcf-cli-cmd-test-home-") + if err != nil { + panic(err) + } + _ = os.Setenv("HOME", home) resolveLatestValidatorTagForSelfHosted = func(_ context.Context, _ string) (string, bool) { return "", false } @@ -81,12 +89,24 @@ func TestMain(m *testing.M) { testSISURL = sis.URL code := m.Run() sis.Close() + _ = os.RemoveAll(home) os.Exit(code) } // testSISURL is a local stand-in for SIS, set by TestMain. var testSISURL string +// resetFlag returns f to its default value and clears its Changed marker. A +// slice flag is replaced, since Set appends once the flag has been set. +func resetFlag(f *pflag.Flag) { + if sv, ok := f.Value.(pflag.SliceValue); ok { + _ = sv.Replace(nil) + } else { + _ = f.Value.Set(f.DefValue) + } + f.Changed = false +} + // resetCheckFlags returns every `self-hosted check` flag to its default, // including cobra's Changed marker, now and when the test ends. The flag // variables are package globals that survive rootCmd.Execute, so without this @@ -110,8 +130,10 @@ func resetCheckFlags(t *testing.T) { selfHostedOutput = "text" selfHostedWait = "" selfHostedControlPlaneContext, selfHostedComputePlaneContext = "", "" + // Values too, not only the Changed marker: a test that passes + // --icms-url would otherwise point every later check at its URL. for _, fs := range []*pflag.FlagSet{selfHostedCheckCmd.Flags(), selfHostedCmd.PersistentFlags()} { - fs.VisitAll(func(f *pflag.Flag) { f.Changed = false }) + fs.VisitAll(resetFlag) } // Other tests call viper.Reset(), which drops the bindings made at // init, so a flag passed to check would silently not be read. diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index 92ba8e5917..2d13120e8b 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -166,11 +166,9 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { // note explaining why. anyValidatorIsTargeted := !localOnly && !skipClusterValidation && (computePlaneIsVisited() || controlPlaneIsVisited()) - clusterValidatorImage := "" + clusterValidatorImage, unresolvedImage := "", "" if anyValidatorIsTargeted { - if img, ok := resolveClusterValidatorImage(c.Context()); ok { - clusterValidatorImage = img - } + clusterValidatorImage, unresolvedImage = resolveClusterValidatorImage(c.Context()) } clusterValidatorWillRun := anyValidatorIsTargeted && clusterValidatorImage != "" @@ -231,6 +229,9 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { switch { case skipClusterValidation: fmt.Fprintln(c.ErrOrStderr(), "note: cluster-validator skipped (--skip-cluster-validation)") + case unresolvedImage != "": + fmt.Fprintf(c.ErrOrStderr(), "note: cluster-validator skipped (could not resolve a tag for %s; "+ + "pin cluster_validator_image to a tag)\n", unresolvedImage) case clusterValidatorImage == "": fmt.Fprintln(c.ErrOrStderr(), "note: cluster-validator skipped (cluster_validator_image not set in nvcf-cli config)") } @@ -593,13 +594,12 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin return selfhosted.RunPreflightForRole(ctx, cfg, selfhosted.RoleLocalOnly, selfhosted.RoleConfig{}, sink) } - // SIS reachability is a compute-plane concern. A bare --pre skips it - // because SIS is not up before install, but an explicit --all or - // --compute-plane still asks for it, as it always has. Requiring the - // compute plane to be targeted stops a --control-plane run from probing - // SIS, which the older `|| !checkPre` form did. + // SIS reachability is a compute-plane, post-install concern: only an + // explicit --all or --compute-plane asks for it. A bare --pre skips it + // because SIS is not up before install, and --control-plane does not + // target the compute plane. icmsURL := "" - if computePlaneIsTargeted(mode) && (checkAll || checkComputePlane || !checkPre) { + if checkAll || checkComputePlane { icmsURL = resolveICMSURL(selfHostedICMSURL) } @@ -633,6 +633,8 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin registries := cfg.Registries validatorEnv := clusterValidatorJobEnv( selfhosted.LoadStackValues(resolveStackValuesFiles())) + cpValidatorEnv := validatorEnvForRole(validatorEnv, checkControlPlane) + gpuValidatorEnv := validatorEnvForRole(validatorEnv, checkComputePlane) // The cluster-validator image is the same for both roles; VALIDATOR_ROLE // in the Job env selects which check set runs inside the binary. @@ -675,7 +677,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorImage: clusterValidatorImage, ClusterValidatorPullSecret: checkClusterValidatorPullSecret, ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, - ClusterValidatorEnv: validatorEnv, + ClusterValidatorEnv: cpValidatorEnv, ClusterValidatorRegistries: registries, StaleNamespaceProber: staleNSProber, StackDir: localStackDir(selfHostedControlPlaneStack), @@ -694,7 +696,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorImage: clusterValidatorImage, ClusterValidatorPullSecret: checkClusterValidatorPullSecret, ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, - ClusterValidatorEnv: validatorEnv, + ClusterValidatorEnv: gpuValidatorEnv, StaleNamespaceProber: staleNSProber, StackDir: localStackDir(selfHostedComputePlaneStack), } @@ -741,7 +743,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorImage: clusterValidatorImage, ClusterValidatorPullSecret: checkClusterValidatorPullSecret, ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, - ClusterValidatorEnv: validatorEnv, + ClusterValidatorEnv: cpValidatorEnv, ClusterValidatorRegistries: registries, StaleNamespaceProber: staleForControlPlane, StackDir: localStackDir(selfHostedControlPlaneStack), @@ -758,7 +760,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin ClusterValidatorImage: clusterValidatorImage, ClusterValidatorPullSecret: checkClusterValidatorPullSecret, ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, - ClusterValidatorEnv: validatorEnv, + ClusterValidatorEnv: gpuValidatorEnv, StaleNamespaceProber: staleForComputePlane, StackDir: localStackDir(selfHostedComputePlaneStack), } @@ -769,10 +771,27 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin } } +// validatorEnvForRole returns env for one role's validator. A role whose own +// flag is passed alongside --pre (--pre --control-plane) is checked as +// installed, the way --all is, so its validator is told the run is +// post-install. env itself is not modified. +func validatorEnvForRole(env map[string]string, roleFlag bool) map[string]string { + if !roleFlag || env["VALIDATOR_POST_INSTALL"] != "" { + return env + } + out := make(map[string]string, len(env)+1) + for k, v := range env { + out[k] = v + } + out["VALIDATOR_POST_INSTALL"] = "true" + return out +} + // clusterValidatorJobEnv is what the validator container needs from the CLI's // resolved configuration, matching what the chart CronJob forwards: -// - VALIDATOR_POST_INSTALL on every run except --pre, so an empty control -// plane fails after install instead of passing as pre-install; +// - VALIDATOR_POST_INSTALL on every run except a bare --pre, so an empty +// control plane fails after install instead of passing as pre-install +// (validatorEnvForRole adds it for a role its own flag targets); // - relocated OpenBao and Envoy Gateway namespaces, without which the Tier // rows assess the defaults and miss the real components; // - NVCF_GATEWAY_NAMES, the override for the NVCF Gateway discovery; @@ -780,7 +799,7 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin // from Docker Hub. func clusterValidatorJobEnv(stack selfhosted.StackValues) map[string]string { env := map[string]string{} - if !checkPre { + if !checkPre || checkAll { env["VALIDATOR_POST_INSTALL"] = "true" } if ns := configValue("NVCF_OPENBAO_NAMESPACE"); ns != "" { @@ -844,15 +863,22 @@ func configValue(key string) string { // resolveClusterValidatorImage resolves the validator image from flag > env > // config-file. Returns ("", false) when unconfigured. When only a repo is // given, discovers the latest stable tag (1h cached; falls back on failure). -func resolveClusterValidatorImage(ctx context.Context) (string, bool) { - image := viper.GetString("cluster_validator_image") - if image == "" { - return "", false +// +// An unpinned image whose tag could not be discovered is not launched: the +// kubelet would pull it as :latest, which the validator repository does not +// publish, and fail the run on a pull error instead of saying why. +func resolveClusterValidatorImage(ctx context.Context) (image string, unresolved string) { + configured := viper.GetString("cluster_validator_image") + if configured == "" { + return "", "" + } + if discovered, ok := resolveLatestValidatorTagForSelfHosted(ctx, configured); ok { + return discovered, "" } - if discovered, ok := resolveLatestValidatorTagForSelfHosted(ctx, image); ok { - return discovered, true + if !selfhosted.ImageRefIsPinned(configured) { + return "", configured } - return image, true + return configured, "" } // emitCheckFinal emits a Final event with check-mode verdict fields derived diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go index 255e80545f..58ef6ee90a 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go @@ -95,6 +95,8 @@ func TestCheck_SISReachabilityScope(t *testing.T) { assert.NotZero(t, hits) _, hits = runCheckRecording(t, "--control-plane") assert.Zero(t, hits, "SIS is a compute-plane check") + _, hits = runCheckRecording(t, "--pre", "--control-plane") + assert.Zero(t, hits, "--pre visits the compute plane but --control-plane does not ask for SIS") } // --local-only overrides the required scope flag; the run says so on stderr. @@ -252,3 +254,28 @@ func passingPreflightTools() []selfhosted.BinarySpec { } return specs } + +// An unpinned validator image whose tag cannot be discovered is not launched: +// the kubelet would pull :latest, which the repository does not publish. The +// run skips the validator and says to pin a tag. +func TestCheck_UnresolvedValidatorTagIsSkippedWithANote(t *testing.T) { + calls := 0 + _, stderr := runCheckWithBudget(t, time.Minute, func(context.Context) selfhosted.ClusterValidatorResult { + calls++ + return selfhosted.ClusterValidatorResult{Passed: true} + }, "--cluster-validator-image", "nvcr.io/nvidia/nvcf-byoc/cluster-validator") + assert.Zero(t, calls, "the untagged image must not be launched") + assert.Contains(t, stderr, "could not resolve a tag for nvcr.io/nvidia/nvcf-byoc/cluster-validator") +} + +func TestImageRefIsPinned(t *testing.T) { + for ref, want := range map[string]bool{ + "nvcr.io/nvidia/validator:3.2.26": true, + "nvcr.io/nvidia/validator@sha256:abcd": true, + "localhost:5000/validator": false, + "nvcr.io/nvidia/validator": false, + "registry.example.com:443/team/validator": false, + } { + assert.Equal(t, want, selfhosted.ImageRefIsPinned(ref), ref) + } +} diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go index 1fcd945091..3d97b3713b 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go @@ -34,11 +34,7 @@ import ( // every run but --pre, relocated namespaces, the Gateway override and the // probe image. func TestClusterValidatorJobEnv(t *testing.T) { - prevPre := checkPre - t.Cleanup(func() { - checkPre = prevPre - viper.Set("cluster_validator_probe_image", "") - }) + resetCheckFlags(t) for _, k := range []string{"NVCF_OPENBAO_NAMESPACE", "NVCF_ENVOY_GATEWAY_NAMESPACE", "NVCF_GATEWAY_NAMES", "NVCF_N2N_PROBE_IMAGE"} { t.Setenv(k, "") } @@ -53,7 +49,7 @@ func TestClusterValidatorJobEnv(t *testing.T) { t.Setenv("NVCF_OPENBAO_NAMESPACE", "openbao") t.Setenv("NVCF_ENVOY_GATEWAY_NAMESPACE", "edge") t.Setenv("NVCF_GATEWAY_NAMES", "gateway/shared-gw") - viper.Set("cluster_validator_probe_image", "mirror.example/busybox:1.36") + require.NoError(t, selfHostedCheckCmd.Flags().Set("cluster-validator-probe-image", "mirror.example/busybox:1.36")) env = clusterValidatorJobEnv(selfhosted.StackValues{EnvoyGatewayNamespace: "gateway"}) assert.NotContains(t, env, "VALIDATOR_POST_INSTALL", "--pre is pre-install") assert.Equal(t, "openbao", env["NVCF_OPENBAO_NAMESPACE"]) @@ -110,41 +106,56 @@ func TestClusterValidatorJobEnv_GatewayNamesYAMLList(t *testing.T) { } // --pre in split mode visits both clusters, so each gets its own validator -// role against its own context, both marked pre-install. +// role against its own context. A bare --pre is pre-install for both; --all +// checks both as installed, and a role's own flag checks that role as +// installed while the other stays pre-install. func TestCheck_PreSplitRunsBothValidatorRoles(t *testing.T) { - resetCheckFlags(t) - var mu sync.Mutex - got := map[string]selfhosted.ClusterValidatorParams{} - prev := newClusterValidatorForSelfHosted - newClusterValidatorForSelfHosted = func() selfhosted.ClusterValidator { - return func(_ context.Context, p selfhosted.ClusterValidatorParams) selfhosted.ClusterValidatorResult { + for _, tc := range []struct { + name string + extra []string + cpPost, gpuPost bool + }{ + {name: "bare pre", extra: []string{"--icms-url", "https://sis.example.invalid"}}, + {name: "pre all", extra: []string{"--all", "--cluster-name", "gpu"}, cpPost: true, gpuPost: true}, + {name: "pre control-plane", extra: []string{"--control-plane"}, cpPost: true}, + } { + t.Run(tc.name, func(t *testing.T) { + resetCheckFlags(t) + var mu sync.Mutex + got := map[string]selfhosted.ClusterValidatorParams{} + prev := newClusterValidatorForSelfHosted + newClusterValidatorForSelfHosted = func() selfhosted.ClusterValidator { + return func(_ context.Context, p selfhosted.ClusterValidatorParams) selfhosted.ClusterValidatorResult { + mu.Lock() + defer mu.Unlock() + got[p.Role] = p + return selfhosted.ClusterValidatorResult{Passed: true} + } + } + t.Cleanup(func() { newClusterValidatorForSelfHosted = prev }) + t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") + + var errBuf bytes.Buffer + rootCmd.SetErr(&errBuf) + rootCmd.SetOut(&bytes.Buffer{}) + rootCmd.SetArgs(append([]string{"self-hosted", "check", "--pre", "--json", + "--control-plane-context", "cp-ctx", "--compute-plane-context", "gpu-ctx", + "--cluster-validator-image", "nvcr.io/nvidia/nvcf-byoc/cluster-validator:1.0.0"}, + tc.extra...)) + _ = rootCmd.Execute() + mu.Lock() defer mu.Unlock() - got[p.Role] = p - return selfhosted.ClusterValidatorResult{Passed: true} - } + cp, ok := got["control-plane"] + require.True(t, ok, "the control-plane validator must run; output: %s", errBuf.String()) + gpu, ok := got["compute-plane"] + require.True(t, ok, "the compute-plane validator must run; output: %s", errBuf.String()) + assert.Equal(t, "cp-ctx", cp.KubeContext) + assert.Equal(t, "gpu-ctx", gpu.KubeContext) + assert.Equal(t, tc.cpPost, cp.Env["VALIDATOR_POST_INSTALL"] == "true", "control-plane post-install") + assert.Equal(t, tc.gpuPost, gpu.Env["VALIDATOR_POST_INSTALL"] == "true", "compute-plane post-install") + }) } - t.Cleanup(func() { newClusterValidatorForSelfHosted = prev }) - t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") - - var errBuf bytes.Buffer - rootCmd.SetErr(&errBuf) - rootCmd.SetOut(&bytes.Buffer{}) - rootCmd.SetArgs([]string{"self-hosted", "check", "--pre", "--json", - "--control-plane-context", "cp-ctx", "--compute-plane-context", "gpu-ctx", - "--icms-url", "https://sis.example.invalid", - "--cluster-validator-image", "nvcr.io/nvidia/nvcf-byoc/cluster-validator:1.0.0"}) - _ = rootCmd.Execute() - - mu.Lock() - defer mu.Unlock() - cp, ok := got["control-plane"] - require.True(t, ok, "the control-plane validator must run; output: %s", errBuf.String()) - gpu, ok := got["compute-plane"] - require.True(t, ok, "the compute-plane validator must run; output: %s", errBuf.String()) - assert.Equal(t, "cp-ctx", cp.KubeContext) - assert.Equal(t, "gpu-ctx", gpu.KubeContext) - assert.NotContains(t, cp.Env, "VALIDATOR_POST_INSTALL", "--pre is pre-install") } // NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES is read, and a comma-separated value is diff --git a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go index 4517574a0f..becf4e98a8 100644 --- a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go +++ b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go @@ -31,14 +31,14 @@ import ( const skillDataZipBase64 = "" + "UEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAASAAkAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4S" + "ewogICJzY2hlbWFWZXJzaW9uIjogMSwKICAiZ2VuZXJhdGVkQXQiOiAiMTk3MC0wMS0wMVQwMDow" + - "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDUxMjAsCiAgImZp" + + "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDU2ODksCiAgImZp" + "bGVzIjogWwogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvU0tJTEwu" + "bWQiLAogICAgICAic2hhMjU2IjogImFhOWY3ZTI0NmYzODA0YjMzNDNiNjU2MWU1YmNmZTdiYjcy" + "YjI0MDIxOTMzZTA0OWY4NWUwMDI4OTAzYmJmYTQiLAogICAgICAic2l6ZSI6IDI0OTE1CiAgICB9" + "LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvZXhhbXBsZXMvY2kt" + - "cGlwZWxpbmVzLm1kIiwKICAgICAgInNoYTI1NiI6ICI5OTMzYTc0ZGVhNGUxZGQ3ZWNiNzdjNjg4" + - "YTRlMTE3M2IwODE5MzgzNmMxODE2ZGI3NmYyOTYwOTkwN2VkZGJkIiwKICAgICAgInNpemUiOiAz" + - "NTQ5CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvZXhh" + + "cGlwZWxpbmVzLm1kIiwKICAgICAgInNoYTI1NiI6ICJlNWYyMDUxYTdmNGZmMGE5N2M0M2NmYmEy" + + "NzU0NDA3YTQzMGMwMDdlMmVkNzFmY2QxYzgxNTQwNmExYjNkYzI1IiwKICAgICAgInNpemUiOiAz" + + "NTQ2CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvZXhh" + "bXBsZXMvbXVsdGktY2x1c3Rlci5tZCIsCiAgICAgICJzaGEyNTYiOiAiNmRmMjg0NjBiNTgzNDNl" + "MjEwMjVhYTViZDc5ZjMzYjUxMmRjYTlmZjM5YjZhYjI2MDRmYzNmZWJiMDE1ODhiNCIsCiAgICAg" + "ICJzaXplIjogMzE2NQogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + @@ -68,12 +68,12 @@ const skillDataZipBase64 = "" + "b21tYW5kcy5tZCIsCiAgICAgICJzaGEyNTYiOiAiMmI0YjAzNmU3NTA3MDZiOWUzYjgxZmNkNjAy" + "YzcwNmY3NGY3N2Y2MjQwZmI3YWFkNjIwYzg3OWZmNzQ5NmNkOCIsCiAgICAgICJzaXplIjogODk5" + "MwogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVy" + - "ZW5jZS9leGl0LWNvZGVzLm1kIiwKICAgICAgInNoYTI1NiI6ICI4YmUxYzcxMjYwYWYzNWUwYjNi" + - "Mzc2NWYzZjA3MTU2Zjg2ZjIzNmE2MzdhYTZjZGViZTgzOGQ0ZTkxYWI4OTVhIiwKICAgICAgInNp" + - "emUiOiAyMTkyCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1j" + - "bGkvcmVmZXJlbmNlL2ZsYWdzLm1kIiwKICAgICAgInNoYTI1NiI6ICI2OTVkMjEzOGUxYzA2OWM5" + - "ZDA1ZjMyNjU5ZWUyMWMyNWEyY2YyMjRhMWE2ZjhiMjkyYWIwYTQwMTliZThjNDBlIiwKICAgICAg" + - "InNpemUiOiAxMzAwMwogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + + "ZW5jZS9leGl0LWNvZGVzLm1kIiwKICAgICAgInNoYTI1NiI6ICI2M2E4MzUzMTIyYmE4MGUzNmE1" + + "NzY2ODI0Y2FlZjdhZDAzZjBlM2JhZjQ5Njc0ODVkYmZmZDE2ZTAwMDU3YzhjIiwKICAgICAgInNp" + + "emUiOiAyMjc0CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1j" + + "bGkvcmVmZXJlbmNlL2ZsYWdzLm1kIiwKICAgICAgInNoYTI1NiI6ICJmNWViYjE3OGY3YmFlODky" + + "YjAwOGFmYzZhMjllZjIzOWU3ZTk0M2E3NjEzM2VmYzc4ZTIyN2M4ODIwMTUwY2U2IiwKICAgICAg" + + "InNpemUiOiAxMzQ5MwogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + "ZWQtY2xpL3JlZmVyZW5jZS90cm91Ymxlc2hvb3RpbmcubWQiLAogICAgICAic2hhMjU2IjogImE2" + "MzA4NGUyMjQ5ZjFkMTU0YzU5ODFlNGEwNzJiN2M3ODRiODVlYTE0NjA4NjUxNWVhYjRhYjY3MGE5" + "NDBlOTQiLAogICAgICAic2l6ZSI6IDQ0NjgKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogIm52" + @@ -103,7 +103,7 @@ const skillDataZipBase64 = "" + "aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9wdWxsLXNlY3Jl" + "dHMubWQiLAogICAgICAic2hhMjU2IjogImVjMWYzZmZjZDE3ZTVmOTU4M2ZlZTM5NzQ0ZWU4OTdk" + "NDY2YmMzY2Y2Mzg5Mjk0MjY0ZDg5ZTdmOWVkMDFiODciLAogICAgICAic2l6ZSI6IDU2MzIKICAg" + - "IH0KICBdCn0KUEsHCAeNqUdKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + + "IH0KICBdCn0KUEsHCPcAtkBKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + "dGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQFAAEAps4SLS0tCm5hbWU6IG52Y2Yt" + "c2VsZi1tYW5hZ2VkLWNsaQpkZXNjcmlwdGlvbjogfAogIEluc3RhbGwsIG9wZXJhdGUsIGFuZCB0" + "ZWFyIGRvd24gc2VsZi1ob3N0ZWQgTlZJRElBIENsb3VkIEZ1bmN0aW9ucyAoTlZDRikKICBkZXBs" + @@ -572,3223 +572,3233 @@ const skillDataZipBase64 = "" + "cGVuZHMgYSBub24tSlNPTiB0cmFuc2NyaXB0IHRvIHRoZSBzYW1lIHN0cmVhbS4KLSBGaW5hbCBz" + "dGF0dXMgY2hlY2sgZ2F0ZXMgZG93bnN0cmVhbSBzdGFnZXMgb24gYHZlcmRpY3QgPT0gImhlYWx0" + "aHkiYC4KCiMjIEdpdE9wcyAoQXJnbyAvIEZsdXgpIHBhdHRlcm4KCkNJIGRvZXNuJ3QgYGt1YmVj" + - "dGwgYXBwbHlgIOKAlCBpbnN0ZWFkLCByZW5kZXIgbWFuaWZlc3RzLCBjb21taXQgdGhlbSwgbGV0" + - "IHRoZSBjb250cm9sbGVyIGFwcGx5LgoKYGBgeWFtbApyZW5kZXI6CiAgc2NyaXB0OgogICAgLSBu" + - "dmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSAtLW5vLWFwcGx5ID4g" + - "cmVuZGVyZWQvY29udHJvbC1wbGFuZS55YW1sCiAgICAtIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGlu" + - "c3RhbGwgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPSROQU1FIC0tbm8tYXBwbHkgPiBy" + - "ZW5kZXJlZC9jb21wdXRlLXBsYW5lLnlhbWwKICAgIC0gZ2l0IGFkZCByZW5kZXJlZC8gJiYgZ2l0" + - "IGNvbW1pdCAtbSAiZGVwbG95IE5WQ0YgJFRBRyIgJiYgZ2l0IHB1c2gKYGBgCgpUaGVuIEFyZ29D" + - "RCBvciBGbHV4IHdhdGNoZXMgYHJlbmRlcmVkL2AgYW5kIGFwcGxpZXMuIFRoZSBDTEkgbmV2ZXIg" + - "dG91Y2hlcyB0aGUgY2x1c3RlciBkaXJlY3RseS4KCkZvciB0aGUgcmVnaXN0ZXIgc3RlcCAod2hp" + - "Y2ggbXV0YXRlcyBJQ01TLCBub3QganVzdCBLOHMpOgoKYGBgeWFtbApyZWdpc3RlcjoKICBzY3Jp" + - "cHQ6CiAgICAtIG52Y2YtY2xpIGNsdXN0ZXIgcmVnaXN0ZXIgLS1uYW1lPSROQU1FIC0tbmNhLWlk" + - "PSROQ0EgLS1yZWdpb249JFJFR0lPTiAtLWlnbm9yZS1leGlzdGluZwpgYGAKCmAtLWlnbm9yZS1l" + - "eGlzdGluZ2AgaXMgdGhlIEdpdE9wcy1mcmllbmRseSBpZGVtcG90ZW50IGNvbnRyYWN0LgoKIyMg" + - "TXVsdGktY2x1c3RlciBwaXBlbGluZQoKV2hlbiB0aGUgcGlwZWxpbmUgbWFuYWdlcyBtYW55IGNv" + - "bXB1dGUgY2x1c3RlcnMgYWdhaW5zdCBvbmUgY29udHJvbCBwbGFuZToKCmBgYHlhbWwKZGVwbG95" + - "X2NvbXB1dGVfcGxhbmVzOgogIHBhcmFsbGVsOgogICAgbWF0cml4OgogICAgICAtIENMVVNURVI6" + - "IG5jcC1lYXN0LTEKICAgICAgICBDT05URVhUOiBhZG1pbkBncHUtZWFzdC0xCiAgICAgIC0gQ0xV" + - "U1RFUjogbmNwLXdlc3QtMQogICAgICAgIENPTlRFWFQ6IGFkbWluQGdwdS13ZXN0LTEKICAgICAg" + - "LSBDTFVTVEVSOiBuY3AtZXUtMQogICAgICAgIENPTlRFWFQ6IGFkbWluQGdwdS1ldS0xCiAgc2Ny" + - "aXB0OgogICAgLSBudmNmLWNsaSBzZWxmLWhvc3RlZCB1cAogICAgICAgIC0tY2x1c3Rlci1uYW1l" + - "PSRDTFVTVEVSCiAgICAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9JENPTlRFWFQKICAgICAg" + - "ICAtLWljbXMtdXJsPSRJQ01TX1BVQkxJQ19VUkwKICAgICAgICAtLXRva2VuPSROVkNGX0FETUlO" + - "X0pXVAogICAgICAgIC0tbm9uLWludGVyYWN0aXZlCiAgICAgICAgLS1qc29uCmBgYAoKRWFjaCBw" + - "YXJhbGxlbCBqb2IgcmVnaXN0ZXJzICsgaW5zdGFsbHMgb25lIGNvbXB1dGUgcGxhbmUgYWdhaW5z" + - "dCB0aGUgc2hhcmVkIGNvbnRyb2wgcGxhbmUuIEZhaWx1cmVzIGFyZSBpc29sYXRlZC4KCiMjIFBs" + - "YW4tb25seSBwcmV2aWV3IGluIFBScwoKYGBgeWFtbApwcmV2aWV3OgogIHJ1bGVzOgogICAgLSBp" + - "ZjogJENJX1BJUEVMSU5FX1NPVVJDRSA9PSAibWVyZ2VfcmVxdWVzdF9ldmVudCIKICBzY3JpcHQ6" + - "CiAgICAtIHwKICAgICAgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXAgXAogICAgICAgIC0tY2x1c3Rl" + - "ci1uYW1lPSRDTFVTVEVSX05BTUUgXAogICAgICAgIC0tcGxhbi1vbmx5IFwKICAgICAgICAtLWpz" + - "b24gfCB0ZWUgcGxhbi5qc29ubAogICAgLSBqcSAtcyAnLlswXScgcGxhbi5qc29ubCA+IHBsYW4u" + - "anNvbgogICAgLSAnZ2l0bGFiLW1yLWNvbW1lbnQgIiMjIE5WQ0YgZGVwbG95IHBsYW5cblxuXGBc" + - "YFxganNvblxuJChjYXQgcGxhbi5qc29uKVxuXGBcYFxgIicKYGBgCgpgLS1wbGFuLW9ubHlgIGV4" + - "aXRzIDAgd2l0aG91dCBjaGFuZ2luZyBjbHVzdGVyIHN0YXRlOyB0aGUgSlNPTkwgb3V0cHV0IGxp" + - "c3RzIGVhY2ggcGhhc2UgKyBFVEEuIFJlbmRlcnMgbmljZWx5IGFzIGFuIE1SIGNvbW1lbnQuClBL" + - "BwiZ9g2l3Q0AAN0NAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADQACQBkYXRhL252Y2Ytc2Vs" + - "Zi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9tdWx0aS1jbHVzdGVyLm1kVVQFAAEAps4SIyBNdWx0aS1j" + - "bHVzdGVyIHBhdHRlcm5zCgpFeGFtcGxlcyBvZiBzcGxpdC1jbHVzdGVyICsgbWFueS1jb21wdXRl" + - "LXBsYW5lIG9wZXJhdGlvbi4KCiMjIE9uZSBjb250cm9sIHBsYW5lICsgTiBjb21wdXRlIHBsYW5l" + - "cwoKVGhlIGNhbm9uaWNhbCBtdWx0aS1jbHVzdGVyIHRvcG9sb2d5LiBFYWNoIGNvbXB1dGUgcGxh" + - "bmUgaXMgcmVnaXN0ZXJlZCBzZXBhcmF0ZWx5OgoKYGBgc2gKIyAxLiBCcmluZyB1cCB0aGUgY29u" + - "dHJvbCBwbGFuZSAob25lLXRpbWUsIG9uIHRoZSBjb250cm9sLXBsYW5lIGNsdXN0ZXIpOgpLVUJF" + - "Q09ORklHPWNwLnlhbWwgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgaW5zdGFsbCAtLWNvbnRyb2wtcGxh" + - "bmUgfCBrdWJlY3RsIGFwcGx5IC1mIC0KbnZjZi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1jb250" + - "cm9sLXBsYW5lIC0td2FpdCA1bQoKIyAyLiBSZWdpc3RlciArIGluc3RhbGwgZWFjaCBjb21wdXRl" + - "IHBsYW5lOgpmb3IgQ1RYIGluIGFkbWluQGdwdS1lYXN0LTEgYWRtaW5AZ3B1LXdlc3QtMSBhZG1p" + - "bkBncHUtZXUtMTsgZG8KICBOQU1FPSQoZWNobyAiJENUWCIgfCBjdXQgLWRAIC1mMikKICBudmNm" + - "LWNsaSBzZWxmLWhvc3RlZCB1cCBcCiAgICAtLWNsdXN0ZXItbmFtZT0kTkFNRSBcCiAgICAtLWNv" + - "bXB1dGUtcGxhbmUtY29udGV4dD0kQ1RYIFwKICAgIC0taWNtcy11cmw9aHR0cHM6Ly9pY21zLm52" + - "Y2YuZXhhbXBsZS5jb20gXAogICAgLS10b2tlbj0kTlZDRl9BRE1JTl9KV1QgXAogICAgLS1ub24t" + - "aW50ZXJhY3RpdmUgXAogICAgLS1qc29uCmRvbmUKCiMgMy4gVmVyaWZ5IGFsbCBjb21wdXRlIHBs" + - "YW5lcyByZWdpc3RlcmVkOgpudmNmLWNsaSBjbHVzdGVyIGxpc3QtcmVnaXN0ZXJlZCAtLW5jYS1p" + - "ZD0kTkNBX0lEIC0taWNtcy11cmw9JElDTVMgLS1qc29uIFwKICB8IGpxICcuY2x1c3RlcnNbXSB8" + - "IHtuYW1lOiAuY2x1c3Rlck5hbWUsIHN0YXR1cywgbnZjYVZlcnNpb259JwpgYGAKCiMjIENvbXB1" + - "dGUtcGxhbmUtb25seSBvcGVyYXRvciBzY2VuYXJpbwoKVGhlIG9wZXJhdG9yIGhhcyBrdWJlY3Rs" + - "IGFjY2VzcyB0byBPTkUgY29tcHV0ZSBwbGFuZSBvbmx5IOKAlCB0aGUgY29udHJvbCBwbGFuZSBp" + - "cyBvcGVyYXRlZCBieSBzb21lb25lIGVsc2UgKGUuZy4gWW90dGEgcnVucyB0aGUgY29udHJvbCBw" + - "bGFuZSBmb3IgYSBjdXN0b21lcikuCgpgYGBzaAojIE1pbnQgYSB0b2tlbiB2aWEgdGhlIHB1Ymxp" + - "YyBhcGkgZ2F0ZXdheSAodGhlIGNvbnRyb2wgcGxhbmUncyBBUEkgS2V5cwojIHNlcnZpY2UgaXMg" + - "cmVhY2hhYmxlIHZpYSBhcGkubnZjZi5leGFtcGxlLmNvbSDigJQgbm8ga3ViZWN0bCBhY2Nlc3Mg" + - "bmVlZGVkKToKbnZjZi1jbGkgaW5pdCAtLWFwaS11cmw9aHR0cHM6Ly9hcGkubnZjZi5leGFtcGxl" + - "LmNvbQoKIyBSdW4gcHJlLWZsaWdodCBzY29wZWQgdG8gdGhlIGNvbXB1dGUgcGxhbmUgb25seToK" + - "bnZjZi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1wcmUgXAogIC0tY29tcHV0ZS1wbGFuZS1jb250" + - "ZXh0PWFkbWluQGdwdTEgXAogIC0taWNtcy11cmw9aHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBsZS5j" + - "b20gXAogIC0tanNvbgoKIyBCcmluZyB1cCBqdXN0IHRoZSBjb21wdXRlIHBsYW5lOgpudmNmLWNs" + - "aSBzZWxmLWhvc3RlZCB1cCBcCiAgLS1jbHVzdGVyLW5hbWU9bXktY29tcHV0ZS0xIFwKICAtLWNv" + - "bXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAtLWljbXMtdXJsPWh0dHBzOi8vaWNt" + - "cy5udmNmLmV4YW1wbGUuY29tIFwKICAtLXRva2VuPSRBRE1JTl9KV1QgXAogIC0tbm9uLWludGVy" + - "YWN0aXZlCgojIFN0YXR1cyAoY29tcHV0ZS1vbmx5IOKAlCBvcGVyYXRvciBjYW4ndCBzZWUgY29u" + - "dHJvbC1wbGFuZSBjb21wb25lbnQgaGVhbHRoKToKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVz" + - "IFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAtLWljbXMtdXJsPWh0" + - "dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUuY29tCmBgYAoKIyMgRnVuY3Rpb25zIHRhcmdldGluZyBz" + - "cGVjaWZpYyBjb21wdXRlIHBsYW5lcwoKV2hlbiB5b3UgaGF2ZSBtdWx0aXBsZSBjb21wdXRlIHBs" + - "YW5lcyBhbmQgd2FudCBhIGZ1bmN0aW9uIHRvIGRlcGxveSB0byBvbmU6CgpgYGBqc29uCnsKICAi" + - "ZnVuY3Rpb25JZCI6ICI8Zm5faWQ+IiwKICAidmVyc2lvbklkIjogIjx2ZXJfaWQ+IiwKICAiZGVw" + - "bG95bWVudFNwZWNpZmljYXRpb25zIjogW3sKICAgICJncHUiOiAiSDEwMCIsCiAgICAiaW5zdGFu" + - "Y2VUeXBlIjogIk5DUC5HUFUuSDEwMF8xeCIsCiAgICAibWluSW5zdGFuY2VzIjogMSwKICAgICJt" + - "YXhJbnN0YW5jZXMiOiAxLAogICAgImNsdXN0ZXJzIjogWyJncHUtZWFzdC0xIl0KICB9XQp9CmBg" + - "YAoKVGhlIGBjbHVzdGVyc2AgYXJyYXkgKHVzaW5nIGNsdXN0ZXIgbmFtZXMsIG5vdCBJRHMpIGxp" + - "bWl0cyBzY2hlZHVsaW5nIHRvIHRob3NlIGNvbXB1dGUgcGxhbmVzLiBPbWl0IHRvIGxldCBJQ01T" + - "IGNob29zZSBhbnkgY29tcHV0ZSBwbGFuZSB3aXRoIGEgbWF0Y2hpbmcgU0tVLgoKIyMgU3RhdHVz" + - "IGZhbi1vdXQgYWNyb3NzIGNvbXB1dGUgcGxhbmVzCgpgYGBzaAojIExpc3QgYWxsIHJlZ2lzdGVy" + - "ZWQgY29tcHV0ZSBwbGFuZXM6Cm52Y2YtY2xpIGNsdXN0ZXIgbGlzdC1yZWdpc3RlcmVkIC0tbmNh" + - "LWlkPSROQ0FfSUQgLS1pY21zLXVybD0kSUNNUyAtLWpzb24gXAogIHwganEgLXIgJy5jbHVzdGVy" + - "c1tdLmNsdXN0ZXJOYW1lJyA+IGNsdXN0ZXJzLnR4dAoKIyBTdGF0dXMgc25hcHNob3QgcGVyIGNv" + - "bXB1dGUgcGxhbmUgKGFzc3VtaW5nIGVhY2ggY29udGV4dCBuYW1lIG1hdGNoZXMpOgp3aGlsZSBy" + - "ZWFkIE5BTUU7IGRvCiAgZWNobyAiPT09ICROQU1FID09PSIKICBudmNmLWNsaSBzZWxmLWhvc3Rl" + - "ZCBzdGF0dXMgXAogICAgLS1jbHVzdGVyLW5hbWU9JE5BTUUgXAogICAgLS1jb21wdXRlLXBsYW5l" + - "LWNvbnRleHQ9YWRtaW5AJE5BTUUgXAogICAgLS1qc29uIHwganEgLWMgJ3tjbHVzdGVyOi5jbHVz" + - "dGVyLCB2ZXJkaWN0Oi52ZXJkaWN0LCByZWNvbmNpbGU6LnJlY29uY2lsZUFnZVNlY30nCmRvbmUg" + - "PCBjbHVzdGVycy50eHQKYGBgCgpBIGZ1dHVyZSBNKzExIG1pbGVzdG9uZSB3aWxsIGFkZCBuYXRp" + - "dmUgZmFuLW91dCAoYHN0YXR1cyAtLWFsbC1jb21wdXRlLXBsYW5lc2ApIHNvIHRoaXMgZG9lc24n" + - "dCBuZWVkIGEgc2hlbGwgbG9vcC4KUEsHCKEU44FdDAAAXQwAAFBLAwQUAAgAAAAAACEAAAAAAAAA" + - "AAAAAAAANwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvYWRkLWNvbXB1dGUt" + - "cGxhbmUubWRVVAUAAQCmzhIjIEFkZCBhIGNvbXB1dGUgcGxhbmUgdG8gYW4gZXhpc3RpbmcgY29u" + - "dHJvbCBwbGFuZQoKVXNlciBoYXMgYSB3b3JraW5nIE5WQ0YgY29udHJvbCBwbGFuZSAocnVubmlu" + - "ZyBzb21ld2hlcmUpIGFuZCB3YW50cyB0byByZWdpc3RlciBhIG5ldyBHUFUgY2x1c3RlciBhZ2Fp" + - "bnN0IGl0LiBUaGlzIGlzIHRoZSBtdWx0aS1jbHVzdGVyIHNjYWxpbmcgcGF0aDogb25lIGNvbnRy" + - "b2wgcGxhbmUg4oaSIE4gY29tcHV0ZSBwbGFuZXMuCgojIyBQcmVyZXF1aXNpdGVzIHRoZSB1c2Vy" + - "IG11c3QgaGF2ZQoKLSAqKmt1YmVjdGwgY29udGV4dCBmb3IgdGhlIG5ldyBjb21wdXRlIHBsYW5l" + - "KiogaW4gdGhlaXIgYEtVQkVDT05GSUdgLgotICoqUHVibGljIElDTVMgVVJMKiogb2YgdGhlIGV4" + - "aXN0aW5nIGNvbnRyb2wgcGxhbmUgKGUuZy4gYGh0dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUuY29t" + - "YCkuCi0gKipBZG1pbiBKV1QqKiBmb3IgdGhlIGNvbnRyb2wgcGxhbmUncyBhY2NvdW50LCBPUiBh" + - "YmlsaXR5IHRvIG1pbnQgb25lIHZpYSBgbnZjZi1jbGkgaW5pdGAgYWdhaW5zdCB0aGUgY29udHJv" + - "bCBwbGFuZSdzIHB1YmxpYyBhcGkgZW5kcG9pbnQuIChBZG1pbiB0b2tlbnMgY29tZSBmcm9tIHRo" + - "ZSBBUEkgS2V5cyBzZXJ2aWNlIHZpYSB0aGUgcHVibGljIGFwaSBnYXRld2F5IOKAlCBrdWJlY3Rs" + - "IGFjY2VzcyB0byB0aGUgY29udHJvbCBwbGFuZSBpcyBOT1QgcmVxdWlyZWQgdG8gb2J0YWluIG9u" + - "ZS4pCi0gQSB1bmlxdWUgYC0tY2x1c3Rlci1uYW1lYCB0aGF0IGRvZXNuJ3QgY29sbGlkZSB3aXRo" + - "IGFscmVhZHktcmVnaXN0ZXJlZCBjbHVzdGVycy4gVXNlIGBudmNmLWNsaSBjbHVzdGVyIGxpc3Qt" + - "cmVnaXN0ZXJlZCAtLW5jYS1pZD0kTkNBX0lEIC0taWNtcy11cmw9JElDTVNgIHRvIGNoZWNrLgoK" + - "IyMgU3RlcHMKCjEuICoqQXNrIGZvciBpbnB1dHM6KioKICAgLSBgLS1jbHVzdGVyLW5hbWU9PHVu" + - "aXF1ZT5gIOKAlCBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGNvbnRyb2wgcGxhbmUncyBOQ0Eg" + - "c2NvcGUKICAgLSBgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9PGNvbnRleHQ+YCDigJQgdGhlIG5l" + - "dyBHUFUgY2x1c3RlcidzIGt1YmVjdGwgY29udGV4dAogICAtIGAtLWljbXMtdXJsPTxodHRwczov" + - "L2ljbXMubnZjZi5leGFtcGxlLmNvbT5gIOKAlCBjb250cm9sIHBsYW5lJ3MgcHVibGljIElDTVMg" + - "VVJMCiAgIC0gR1BVIHR5cGU/IChkZWZhdWx0IGBIMTAwYCwgYnV0IGFzaykKCjIuICoqUHJlLWZs" + - "aWdodCBqdXN0IHRoZSBjb21wdXRlIHBsYW5lOioqCgogICBgYGBzaAogICBudmNmLWNsaSBzZWxm" + - "LWhvc3RlZCBjaGVjayAtLXByZSBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9JENUWCBc" + - "CiAgICAgLS1pY21zLXVybD0kSUNNUyBcCiAgICAgLS1qc29uIHwganEgLWMgLgogICBgYGAKCiAg" + - "IFRoaXMgdmFsaWRhdGVzIHRoZSBHUFUgb3BlcmF0b3IgaXMgaW5zdGFsbGVkLCBHUFUgbm9kZSBs" + - "YWJlbHMgYXJlIHByZXNlbnQsIGFuZCBJQ01TIGlzIHJlYWNoYWJsZSB2aWEgSFRUUC4gQWRkcmVz" + - "cyBhbnkgZmFpbHVyZXMgYmVmb3JlIHByb2NlZWRpbmcuCgozLiAqKlJ1biBgYWRkLWNvbXB1dGUt" + - "cGxhbmVgOioqCgogICBgYGBzaAogICBudmNmLWNsaSBzZWxmLWhvc3RlZCBhZGQtY29tcHV0ZS1w" + - "bGFuZSBcCiAgICAgLS1jbHVzdGVyLW5hbWU9JE5BTUUgXAogICAgIC0tY29tcHV0ZS1wbGFuZS1j" + - "b250ZXh0PSRDVFggXAogICAgIC0taWNtcy11cmw9JElDTVMgXAogICAgIC0tdG9rZW49JEpXVCBc" + - "CiAgICAgLS1ub24taW50ZXJhY3RpdmUgXAogICAgIC0tanNvbgogICBgYGAKCiAgIFRoaXMgaXMg" + - "YSBzZXBhcmF0ZSBzdWJjb21tYW5kIGZyb20gYHVwYC4gSXQgcnVucyBvbmx5IHRoZSBjb21wdXRl" + - "LXBsYW5lLXJlbGV2YW50IHBoYXNlczogMSAoY29tcHV0ZS1wbGFuZSBwcmVmbGlnaHQpLCA1IChy" + - "ZWdpc3RlciksIDYgKGNvbXB1dGUtcGxhbmUgYXBwbHkpLCA4IChmaW5hbCBoZWFsdGggb24gdGhl" + - "IG5ldyBjb21wdXRlIHBsYW5lKS4gSXQgZG9lcyBOT1QgdG91Y2ggdGhlIGNvbnRyb2wgcGxhbmUg" + - "YW5kIGRvZXMgTk9UIGFjY2VwdCBgLS1jb250cm9sLXBsYW5lLWNvbnRleHRgIOKAlCB0aGUgY29u" + - "dHJvbCBwbGFuZSBpcyByZWFjaGVkIG92ZXIgSFRUUFMgYXQgYC0taWNtcy11cmxgLiBgLS10b2tl" + - "bmAgaXMgcmVxdWlyZWQgYmVjYXVzZSB0aGVyZSdzIG5vIGt1YmVjdGwgcGF0aCB0byBtaW50IG9u" + - "ZSBmcm9tLgoKNC4gKipWZXJpZnkuKiogYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1cyAtLWNs" + - "dXN0ZXItbmFtZT0kTkFNRSAtLWpzb24gfCBqcWAg4oCUIGV4cGVjdCBgdmVyZGljdDogImhlYWx0" + - "aHkiYC4gVGhlIFJlZ2lzdGVyZWQgQ29tcHV0ZSBQbGFuZXMgcGFuZWwgZnJvbSBJQ01TIHNob3Vs" + - "ZCBub3cgbGlzdCB0aGUgbmV3IGNsdXN0ZXIuCgo1LiAqKlNtb2tlLioqIFtkZXBsb3ktYW5kLWlu" + - "dm9rZS5tZF0oZGVwbG95LWFuZC1pbnZva2UubWQpIOKAlCBkZXBsb3kgYSBzbWFsbCBmdW5jdGlv" + - "biB0byB0aGUgbmV3IGNvbXB1dGUgcGxhbmUgdG8gY29uZmlybSBzY2hlZHVsaW5nIHdvcmtzLgoK" + - "IyMgV2hhdCBpZiBhIGNsdXN0ZXIgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzPwoK" + - "YGFkZC1jb21wdXRlLXBsYW5lYCdzIHJlZ2lzdGVyIHBoYXNlIHVzZXMgYC0taWdub3JlLWV4aXN0" + - "aW5nYCBzZW1hbnRpY3Mg4oCUIGl0J2xsIG1hdGNoIHRoZSBleGlzdGluZyBJQ01TIHJvdyBhbmQg" + - "cmV1c2UgaXRzIGNsdXN0ZXJJZC4gVHdvIHNjZW5hcmlvczoKCi0gKipSZS1yZWdpc3RlcmluZyB0" + - "aGUgc2FtZSBjbHVzdGVyKiogKHJlLXJ1bm5pbmcgb24gdGhlIHNhbWUgY29tcHV0ZSBwbGFuZSB0" + - "aGF0IHdhcyBwcmV2aW91c2x5IHJlZ2lzdGVyZWQpOiBleHBlY3RlZCwgbm8tb3Agc2VtYW50aWNz" + - "LgotICoqRGlmZmVyZW50IHBoeXNpY2FsIGNsdXN0ZXIgYnV0IHNhbWUgbmFtZSoqOiB0aGUgc2Vj" + - "b25kIGF0dGVtcHQgd2lsbCByZXVzZSB0aGUgSUNNUyByb3csIGJ1dCB0aGUgbmV3IGNvbXB1dGUg" + - "cGxhbmUncyBKV0tTIHdpbGwgYmUgc2lsZW50bHkgKnJlcGxhY2VkKiDigJQgdGhlIG9sZCBjb21w" + - "dXRlIHBsYW5lJ3MgTlZDQSBhZ2VudCB3aWxsIHN0YXJ0IGZhaWxpbmcgUFNBVCBhdXRoLiAqKkNv" + - "bmZpcm0gd2l0aCB0aGUgdXNlcioqIHRoYXQgdGhleSBtZWFudCB0byBvdmVyd3JpdGUuCgpXaGVu" + - "IGluIGRvdWJ0LCBydW4gYG52Y2YtY2xpIGNsdXN0ZXIgbGlzdC1yZWdpc3RlcmVkIC0tbmNhLWlk" + - "PSROQ0FfSUQgLS1pY21zLXVybD0kSUNNU2AgZmlyc3QgYW5kIGFzayB0aGUgdXNlciBiZWZvcmUg" + - "cHJvY2VlZGluZyB3aXRoIGEgbmFtZSB0aGF0IGFscmVhZHkgZXhpc3RzLgpQSwcIQidJDwUNAAAF" + - "DQAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA5AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1j" + - "bGkvcHJvbXB0cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kVVQFAAEAps4SIyBDcmVhdGUgYW5kIHJ1" + - "biBhIHRhc2sKClN0YW5kYXJkIGZsb3c6IG1pbnQgQVBJIGtleXMgLT4gdGFzayBDUkVBVEUgLT4g" + - "bW9uaXRvciAtPiByZXRyaWV2ZSByZXN1bHRzIC0+IGNsZWFudXAuCgojIyAxLiBNaW50IEFQSSBr" + - "ZXlzCgpUaGUgYWRtaW4gdG9rZW4gZnJvbSBgaW5pdGAgZG9lcyBub3QgY2FycnkgdGFzayBpbnZv" + - "Y2F0aW9uIHNjb3BlLiBHZW5lcmF0ZSBBUEkga2V5czoKCmBgYHNoCm52Y2YtY2xpIGFwaS1rZXkg" + - "Z2VuZXJhdGUgLS1kZXNjcmlwdGlvbj0idGFzayBzbW9rZSB0ZXN0IiAtLWV4cGlyZXMtaW49OGgK" + - "IyAtPiBmdW5jdGlvbiBrZXk6IG52YXBpLS4uLgojIC0+IHRhc2sga2V5OiBudmFwaS0uLi4KYGBg" + - "CgpCb3RoIGtleXMgYXJlIHNhdmVkIHRvIENMSSBzdGF0ZS4gVG8gbWludCBvbmx5IHRoZSB0YXNr" + - "IGtleToKCmBgYHNoCm52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1mb3IgdGFzayAtLWRlc2Ny" + - "aXB0aW9uPSJ0YXNrIHNtb2tlIHRlc3QiIC0tZXhwaXJlcy1pbj04aApgYGAKClRvIHZhbGlkYXRl" + - "IGVhY2gga2V5IGltbWVkaWF0ZWx5IGFmdGVyIG1pbnRpbmc6CgpgYGBzaApudmNmLWNsaSBhcGkt" + - "a2V5IGdlbmVyYXRlIC0tZGVzY3JpcHRpb249InRhc2sgc21va2UgdGVzdCIgLS1leHBpcmVzLWlu" + - "PThoIC0tdmFsaWRhdGUKIyAtPiBmdW5jdGlvbiBBUEkga2V5IHZhbGlkYXRpb24gcGFzc2VkIQoj" + - "IC0+IHRhc2sgQVBJIGtleSB2YWxpZGF0aW9uIHBhc3NlZCEKYGBgCgpOZXZlciBlY2hvIHRoZSBr" + - "ZXkgdmFsdWUgKG52YXBpLS4uLikgaW50byBjaGF0IG9yIGxvZ3MuIFJlcG9ydCBvbmx5IHRoYXQg" + - "dGhlIGtleSB3YXMgbWludGVkLCBpdHMgZGVzY3JpcHRpb24sIGFuZCBpdHMgZXhwaXJ5IOKAlCBu" + - "ZXZlciB0aGUgdmFsdWUgaXRzZWxmLgoKIyMjIEZyZXNoIHNlc3Npb24gcHJlLWZsaWdodAoKQmVm" + - "b3JlIHJ1bm5pbmcgYW55IGB0YXNrYCBjb21tYW5kIGluIGEgZnJlc2ggYWdlbnQgc2Vzc2lvbiwg" + - "dmVyaWZ5IGNyZWRlbnRpYWxzOgoKMS4gQ2hlY2sgd2hldGhlciBgTlZDRl9BUElfS0VZYCBpcyBz" + - "ZXQ6CgogICBgYGBzaAogICBwcmludGVudiBOVkNGX0FQSV9LRVkgPiAvZGV2L251bGwgMj4mMSAm" + - "JiBlY2hvIHNldCB8fCBlY2hvIHVuc2V0CiAgIGBgYAoKMi4gSWYgdW5zZXQsIHJlYWQgdGhlIHN0" + - "b3JlZCBrZXkgZXhwaXJ5IHdpdGhvdXQgcHJpbnRpbmcgdGhlIHZhbHVlOgoKICAgYGBgc2gKICAg" + - "cHl0aG9uMyAtYyAiaW1wb3J0IGpzb24scGF0aGxpYjsgcz1qc29uLmxvYWRzKHBhdGhsaWIuUGF0" + - "aCgnfi8ubnZjZi1jbGkuc3RhdGUnKS5leHBhbmR1c2VyKCkucmVhZF90ZXh0KCkpOyBwcmludChz" + - "LmdldCgnbnZjdEFwaUtleUV4cGlyYXRpb24nLCdtaXNzaW5nJykpIgogICBgYGAKCjMuIElmIHRo" + - "ZSBleHBpcnkgaXMgaW4gdGhlIHBhc3Qgb3IgbWlzc2luZywgcmVnZW5lcmF0ZToKCiAgIGBgYHNo" + - "CiAgIG52Y2YtY2xpIHJlZnJlc2gKICAgbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWZvciB0" + - "YXNrIC0tZGVzY3JpcHRpb249InRhc2sta2V5IiAtLWV4cGlyZXMtaW49MjRoIC0tdmFsaWRhdGUK" + - "ICAgYGBgCgo0LiBJbmplY3QgdGhlIHN0b3JlZCBrZXkgaW50byB0aGUgc3VicHJvY2VzcyBlbnYg" + - "d2l0aG91dCBsb2dnaW5nIHRoZSB2YWx1ZS4gVXNlIGEgc2hlbGwgc3Vic2hlbGwgb3IgZW52IHBy" + - "ZWZpeCDigJQgbmV2ZXIgcHJpbnQgdGhlIGtleSBpbnRvIGNoYXQuCgpFcnJvciBjbGFzc2lmaWNh" + - "dGlvbjoKCi0gIm1pc3NpbmcgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMiIG9yIGV4aXQgMjog" + - "a2V5IG5vdCBpbmplY3RlZDsgcmVwZWF0IHByZS1mbGlnaHQuCi0gSFRUUCA0MDM6IGtleSBleHBp" + - "cmVkIG9yIHdyb25nIGF1ZGllbmNlOyByZWdlbmVyYXRlLgotIEVtcHR5IHRhc2sgbGlzdDogdmFs" + - "aWQ7IG5vIHRhc2tzIGV4aXN0IHlldC4KCiMjIDIuIFRhc2sgQ1JFQVRFOiBjb250YWluZXIKCkRl" + - "ZmluZSB0aGUgdGFzayBpbiBhIEpTT04gZmlsZS4gTWluaW11bSB2aWFibGUgY29udGFpbmVyIHRh" + - "c2s6CgpgYGBqc29uCnsKICAibmFtZSI6ICJzbW9rZS1jb250YWluZXItdGFzayIsCiAgImdwdVNw" + - "ZWNpZmljYXRpb24iOiB7CiAgICAiZ3B1IjogIkgxMDAiLAogICAgImluc3RhbmNlVHlwZSI6ICJO" + - "Q1AuR1BVLkgxMDBfMXgiLAogICAgImJhY2tlbmQiOiAibmNwLWxvY2FsIgogIH0sCiAgImNvbnRh" + - "aW5lckltYWdlIjogIm52Y3IuaW8vbnZpZGlhL25lbW86bGF0ZXN0IiwKICAiY29udGFpbmVyQXJn" + - "cyI6ICJweXRob24gLWMgXCJwcmludCgnaGVsbG8gZnJvbSB0YXNrJylcIiIsCiAgInJlc3VsdEhh" + - "bmRsaW5nU3RyYXRlZ3kiOiAiTk9ORSIKfQpgYGAKCmBgYHNoCm52Y2YtY2xpIHRhc2sgY3JlYXRl" + - "IC0taW5wdXQtZmlsZT10YXNrLWNvbnRhaW5lci5qc29uCiMgLT4gVGFzayBJRDogPHRhc2tfaWQ+" + - "CmBgYAoKQ2FwdHVyZSB0aGUgdGFzayBJRCBmcm9tIHRoZSBvdXRwdXQuIFN0YXRlIHBlcnNpc3Rl" + - "bmNlIGNhbiBmYWlsIHNpbGVudGx5LCBzbyBwYXNzCmA8dGFza0lkPmAgZXhwbGljaXRseSBvbiBz" + - "dWJzZXF1ZW50IGNvbW1hbmRzIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gc2F2ZWQgc3RhdGUuCgpF" + - "cXVpdmFsZW50IENMSSBmbGFncyBmb3JtIGZvciBxdWljayBhZC1ob2MgcnVuczoKCmBgYHNoCm52" + - "Y2YtY2xpIHRhc2sgY3JlYXRlIFwKICAtLW5hbWU9c21va2UtY29udGFpbmVyLXRhc2sgXAogIC0t" + - "Z3B1PUgxMDAgXAogIC0taW5zdGFuY2UtdHlwZT1OQ1AuR1BVLkgxMDBfMXggXAogIC0tYmFja2Vu" + - "ZD1uY3AtbG9jYWwgXAogIC0taW1hZ2U9bnZjci5pby9udmlkaWEvbmVtbzpsYXRlc3QgXAogIC0t" + - "Y29udGFpbmVyLWFyZ3M9InB5dGhvbiAtYyAncHJpbnQoaGVsbG8gZnJvbSB0YXNrKSciIFwKICAt" + - "LXJlc3VsdC1zdHJhdGVneT1OT05FCmBgYAoKVG8gdGFyZ2V0IGEgc3BlY2lmaWMgY29tcHV0ZSBj" + - "bHVzdGVyOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPXRhc2stY29u" + - "dGFpbmVyLmpzb24gLS1jbHVzdGVycz1teS1jbHVzdGVyCmBgYAoKVG8gaW5qZWN0IGVudmlyb25t" + - "ZW50IHZhcmlhYmxlcyBvciBzZWNyZXRzLCBlaXRoZXIgcGFzcyBmbGFnczoKCmBgYHNoCm52Y2Yt" + - "Y2xpIHRhc2sgY3JlYXRlIC0taW5wdXQtZmlsZT10YXNrLWNvbnRhaW5lci5qc29uIFwKICAtLWNv" + - "bnRhaW5lci1lbnYgTVlfRU5WPXZhbHVlIFwKICAtLXNlY3JldHMgTVlfU0VDUkVUPXMzY3IzdApg" + - "YGAKCm9yIHNldCB0aGVtIGluIHRoZSBKU09OIGZpbGU6CgpgYGBqc29uCnsKICAiY29udGFpbmVy" + - "RW52aXJvbm1lbnQiOiBbCiAgICB7ImtleSI6ICJNWV9FTlYiLCAidmFsdWUiOiAidmFsdWUifQog" + - "IF0sCiAgInNlY3JldHMiOiBbCiAgICB7Im5hbWUiOiAiTVlfU0VDUkVUIiwgInZhbHVlIjogInMz" + - "Y3IzdCJ9CiAgXQp9CmBgYAoKU2VjcmV0cyBhcmUgZW5jcnlwdGVkIGF0IHJlc3QgYW5kIG5vdCBy" + - "ZXR1cm5lZCBpbiBsaXN0IG9yIGdldCByZXNwb25zZXMgYnkgZGVmYXVsdDsgZG8gbm90IGxvZyB0" + - "aGVtLgoKIyMgMy4gVGFzayBDUkVBVEU6IEhlbG0KCkZvciBIZWxtLXR5cGUgdGFza3MsIHJlcGxh" + - "Y2UgYGNvbnRhaW5lckltYWdlYCB3aXRoIGBoZWxtQ2hhcnRgOgoKYGBganNvbgp7CiAgIm5hbWUi" + - "OiAic21va2UtaGVsbS10YXNrIiwKICAiZ3B1U3BlY2lmaWNhdGlvbiI6IHsKICAgICJncHUiOiAi" + - "SDEwMCIsCiAgICAiaW5zdGFuY2VUeXBlIjogIk5DUC5HUFUuSDEwMF8xeCIsCiAgICAiYmFja2Vu" + - "ZCI6ICJuY3AtbG9jYWwiCiAgfSwKICAiaGVsbUNoYXJ0IjogImh0dHBzOi8vaGVsbS5uZ2MubnZp" + - "ZGlhLmNvbS88b3JnPi9jaGFydHMvZXhhbXBsZS10YXNrLTAuMS4wLnRneiIsCiAgInJlc3VsdEhh" + - "bmRsaW5nU3RyYXRlZ3kiOiAiTk9ORSIKfQpgYGAKCmBgYHNoCm52Y2YtY2xpIHRhc2sgY3JlYXRl" + - "IC0taW5wdXQtZmlsZT10YXNrLWhlbG0uanNvbgojIC0+IFRhc2sgSUQ6IDx0YXNrX2lkPgpgYGAK" + - "CmBoZWxtQ2hhcnRgIGFuZCBgY29udGFpbmVySW1hZ2VgIGFyZSBtdXR1YWxseSBleGNsdXNpdmUu" + - "CgojIyAzYi4gVXBkYXRlIHNlY3JldHMgb24gYSBydW5uaW5nIHRhc2sKCmBgYHNoCm52Y2YtY2xp" + - "IHRhc2sgdXBkYXRlLXNlY3JldHMgPHRhc2tfaWQ+IC0tc2VjcmV0cyBOQU1FPXZhbHVlCmBgYAoK" + - "YHVwZGF0ZS1zZWNyZXRzYCBtZXJnZXMgc2VjcmV0cyBieSBuYW1lOiBzdXBwbGllZCBzZWNyZXRz" + - "IGFyZSBhZGRlZCBvciB1cGRhdGVkLCBhbmQgZXhpc3Rpbmcgc2VjcmV0cyBub3QgaW5jbHVkZWQg" + - "aW4gdGhlIHJlcXVlc3QgYXJlIHByZXNlcnZlZC4gRG8gbm90IGVjaG8gc2VjcmV0IHZhbHVlcyBp" + - "bnRvIGNoYXQuCgojIyA0LiBNb25pdG9yCgpQb2xsIHRhc2sgc3RhdGU6CgpgYGBzaApudmNmLWNs" + - "aSB0YXNrIGdldCA8dGFza19pZD4KIyAtPiBpZDogPHRhc2tfaWQ+CiMgLT4gc3RhdHVzOiBSVU5O" + - "SU5HCmBgYAoKT3IgdXNlIHRoZSB0YXNrIElEIHNhdmVkIHRvIHN0YXRlIGZyb20gdGhlIG1vc3Qg" + - "cmVjZW50IGB0YXNrIGNyZWF0ZWA6CgpgYGBzaApudmNmLWNsaSB0YXNrIGdldApgYGAKClN0YXR1" + - "cyB2YWx1ZXM6IGBRVUVVRURgLCBgTEFVTkNIRURgLCBgUlVOTklOR2AsIGBDT01QTEVURURgLCBg" + - "RVJST1JFRGAsIGBDQU5DRUxFRGAsIGBFWENFRURFRF9NQVhfUlVOVElNRV9EVVJBVElPTmAsIGBF" + - "WENFRURFRF9NQVhfUVVFVUVEX0RVUkFUSU9OYC4KCkluc3BlY3QgbGlmZWN5Y2xlIGV2ZW50cyBm" + - "b3IgcHJvZ3Jlc3MgZGV0YWlscyBvciBmYWlsdXJlIGNvbnRleHQ6CgpgYGBzaApudmNmLWNsaSB0" + - "YXNrIGV2ZW50cyA8dGFza19pZD4KYGBgCgpJZiB0aGUgdGFzayBpcyBzdHVjayBpbiBgUVVFVUVE" + - "YCwgY2hlY2sgdGhhdCBhIGNvbXB1dGUgY2x1c3RlciB3aXRoIGEgbWF0Y2hpbmcgR1BVIFNLVQpp" + - "cyByZWdpc3RlcmVkIGFuZCBoZWFsdGh5IChgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzYCku" + - "CgpJZiB0aGUgdGFzayBtb3ZlcyB0byBgRVJST1JFRGAsIHRoZSBldmVudHMgb3V0cHV0IGNvbnRh" + - "aW5zIHRoZSBmYWlsdXJlIHJlYXNvbi4gRm9yCmNvbnRhaW5lci1sZXZlbCBkZXRhaWwsIGluc3Bl" + - "Y3QgdGhlIHRhc2sgd29ya2xvYWQgcG9kcyBvbiB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVyIHdp" + - "dGgKYGt1YmVjdGxgIGFnYWluc3QgdGhlIGFwcHJvcHJpYXRlIG5hbWVzcGFjZSBhbmQgY29udGV4" + - "dC4KCiMjIDUuIFJldHJpZXZlIHJlc3VsdHMKCkZvciB0YXNrcyB3aXRoIGByZXN1bHRIYW5kbGlu" + - "Z1N0cmF0ZWd5OiBOT05FYCwgcmVzdWx0cyBhcmUgZW1wdHkgYnkgZGVzaWduOgoKYGBgc2gKbnZj" + - "Zi1jbGkgdGFzayByZXN1bHRzIDx0YXNrX2lkPgojIC0+IHsicmVzdWx0cyI6IFtdfQpgYGAKCkZv" + - "ciB0YXNrcyB3aXRoIGByZXN1bHRIYW5kbGluZ1N0cmF0ZWd5OiBVUExPQURgLCByZXN1bHRzIHVw" + - "bG9hZCB0byB0aGUgbG9jYXRpb24gbmFtZWQgaW4KYHJlc3VsdHNMb2NhdGlvbmAuIFRoZSB0YXNr" + - "J3MgY3JlZGVudGlhbHMgbXVzdCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGF0IGxvY2F0aW9uLiBB" + - "ZnRlcgp0aGUgdGFzayByZWFjaGVzIGBDT01QTEVURURgOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBy" + - "ZXN1bHRzIDx0YXNrX2lkPgpgYGAKCk5vdGU6IHJlc3VsdCB1cGxvYWQgaXMgbm90IHlldCBzdXBw" + - "b3J0ZWQgaW4gdGhpcyByZWxlYXNlLgoKIyMgNi4gQ2xlYW51cAoKQ2FuY2VsIGEgcnVubmluZyB0" + - "YXNrOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBjYW5jZWwgPHRhc2tfaWQ+CmBgYAoKRGVsZXRlIHRo" + - "ZSB0YXNrIHJlY29yZCBhZnRlciBpdCByZWFjaGVzIGEgdGVybWluYWwgc3RhdGU6CgpgYGBzaApu" + - "dmNmLWNsaSB0YXNrIGRlbGV0ZSA8dGFza19pZD4KYGBgCgpTdG9wIGFuZCBjb25maXJtIHdpdGgg" + - "dGhlIHVzZXIgYmVmb3JlIHJ1bm5pbmcgdGFzayBkZWxldGUuIFN0YXRlIHRoZSB0YXNrIElEIGFu" + - "ZCBpdHMgY3VycmVudCBzdGF0dXMuIERvIG5vdCBwcm9jZWVkIGV2ZW4gd2hlbiB0aGUgdXNlcidz" + - "IHByb21wdCBhbHJlYWR5IHJlcXVlc3RlZCBkZWxldGlvbiDigJQgYWx3YXlzIGdldCBhbiBleHBs" + - "aWNpdCBsYXN0LWxvb2sgY29uZmlybWF0aW9uLiBEZWxldGlvbiBpcyBwZXJtYW5lbnQgYW5kIGNh" + - "bm5vdCBiZSB1bmRvbmUuCgpUbyBsaXN0IGFsbCB0YXNrcyBmb3IgdGhlIGN1cnJlbnQgb3duZXIg" + - "KHVzZWZ1bCBiZWZvcmUgYnVsayBjbGVhbnVwKToKCmBgYHNoCm52Y2YtY2xpIHRhc2sgbGlzdApu" + - "dmNmLWNsaSB0YXNrIGxpc3QgLS1zdGF0dXM9Q09NUExFVEVECmBgYAoKIyMgTm90ZXMKCi0gR1BV" + - "IGZhbWlseSBhbmQgaW5zdGFuY2UgdHlwZSBtdXN0IG1hdGNoIGEgcmVnaXN0ZXJlZCBjb21wdXRl" + - "IGNsdXN0ZXIgU0tVLiBNaXNtYXRjaAogIGNhdXNlcyB0aGUgdGFzayB0byByZW1haW4gYFFVRVVF" + - "RGAgaW5kZWZpbml0ZWx5LiBVc2UgYG52Y2YtY2xpIGNsdXN0ZXIgbGlzdGAgdG8gY2hlY2sKICBy" + - "ZWdpc3RlcmVkIFNLVXMuCi0gRm9yIGNvbnRhaW5lciBpbWFnZXMgb24gcHJpdmF0ZSByZWdpc3Ry" + - "aWVzLCBlbnN1cmUgdGhlIGNvbXB1dGUtcGxhbmUgY2x1c3RlcidzCiAgaW1hZ2UtY3JlZGVudGlh" + - "bC1oZWxwZXIgaXMgY29uZmlndXJlZCBmb3IgdGhlIHJlZ2lzdHJ5IGhvc3QuClBLBwjU3o00nxkA" + - "AJ8ZAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADcACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2Vk" + - "LWNsaS9wcm9tcHRzL2RlcGxveS1hbmQtaW52b2tlLm1kVVQFAAEAps4SIyBEZXBsb3kgYW5kIGlu" + - "dm9rZSBhIGNvbnRhaW5lciBmdW5jdGlvbgoKU3RhbmRhcmQgZm91ci1zdGVwIGZsb3c6IGZ1bmN0" + - "aW9uIENSRUFURSDihpIgREVQTE9ZIOKGkiBBUEkga2V5IChmb3IgaW52b2tlIHNjb3BlKSDihpIg" + - "SU5WT0tFLgoKIyMgMS4gRnVuY3Rpb24gQ1JFQVRFCgpEZWZpbmUgdGhlIGZ1bmN0aW9uIGluIGEg" + - "SlNPTiBmaWxlLiBNaW5pbXVtOgoKQmVmb3JlIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiwgY29uZmly" + - "bSB0aGUgZXhhY3QgZnVuY3Rpb24gbmFtZSBhbmQgY29udGFpbmVyIGltYWdlIHdpdGggdGhlIHVz" + - "ZXIuIElmIGVpdGhlciB2YWx1ZSBpcyBtaXNzaW5nLCBzdG9wIGFuZCBhc2suIERvIG5vdCBpbnZl" + - "bnQgb3Igc3VibWl0IGV4YW1wbGUgdmFsdWVzIGZvciB0aGVzZSBmaWVsZHMuCgpgYGBqc29uCnsK" + - "ICAibmFtZSI6ICI8Y29uZmlybWVkLWZ1bmN0aW9uLW5hbWU+IiwKICAiY29udGFpbmVySW1hZ2Ui" + - "OiAiPGNvbmZpcm1lZC1jb250YWluZXItaW1hZ2U+IiwKICAiaW5mZXJlbmNlVXJsIjogIi9lY2hv" + - "IiwKICAiaW5mZXJlbmNlUG9ydCI6IDgwMDAsCiAgImRlc2NyaXB0aW9uIjogInNtb2tlIHRlc3Qg" + - "ZWNobyBmdW5jdGlvbiIsCiAgImZ1bmN0aW9uVHlwZSI6ICJERUZBVUxUIiwKICAiYXBpQm9keUZv" + - "cm1hdCI6ICJDVVNUT00iLAogICJoZWFsdGgiOiB7CiAgICAicHJvdG9jb2wiOiAiSFRUUCIsCiAg" + - "ICAidXJpIjogIi9oZWFsdGgiLAogICAgInBvcnQiOiA4MDAwLAogICAgInRpbWVvdXQiOiAiUFQz" + - "MFMiLAogICAgImV4cGVjdGVkU3RhdHVzQ29kZSI6IDIwMAogIH0KfQpgYGAKCmBgYHNoCm52Y2Yt" + - "Y2xpIGZ1bmN0aW9uIGNyZWF0ZSAtLWlucHV0LWZpbGU9Y3JlYXRlLWZuLmpzb24KIyDihpIgRnVu" + - "Y3Rpb24gSUQ6IDxmbl9pZD4KIyDihpIgVmVyc2lvbiBJRDogPHZlcl9pZD4KYGBgCgpTYXZlIHRo" + - "ZSBJRHMg4oCUIHRoZXkncmUgbmVlZGVkIGZvciBkZXBsb3kgKyBpbnZva2UuCgojIyMgTExNIGZ1" + - "bmN0aW9uIHZhcmlhbnQKCkZvciBhbiBPcGVuQUktY29tcGF0aWJsZSBMTE0gZnVuY3Rpb24sIHNl" + - "dCBgZnVuY3Rpb25UeXBlOiAiTExNImAgYW5kIHB1dCByb3V0ZSBtZXRhZGF0YSB1bmRlciBgbW9k" + - "ZWxzW10ubGxtQ29uZmlnYDoKCkJlZm9yZSBjcmVhdGluZyB0aGUgZnVuY3Rpb24sIGNvbmZpcm0g" + - "dGhlIGV4YWN0IGZ1bmN0aW9uIG5hbWUsIGNvbnRhaW5lciBpbWFnZSwgYW5kIG1vZGVsIG5hbWUg" + - "d2l0aCB0aGUgdXNlci4gSWYgYW55IHZhbHVlIGlzIG1pc3NpbmcsIHN0b3AgYW5kIGFzay4gRG8g" + - "bm90IGludmVudCBvciBzdWJtaXQgZXhhbXBsZSB2YWx1ZXMgZm9yIHRoZXNlIGZpZWxkcy4KCmBg" + - "YGpzb24KewogICJuYW1lIjogIjxjb25maXJtZWQtZnVuY3Rpb24tbmFtZT4iLAogICJjb250YWlu" + - "ZXJJbWFnZSI6ICI8Y29uZmlybWVkLWNvbnRhaW5lci1pbWFnZT4iLAogICJpbmZlcmVuY2VVcmwi" + - "OiAiLyIsCiAgImluZmVyZW5jZVBvcnQiOiA4MDAwLAogICJmdW5jdGlvblR5cGUiOiAiTExNIiwK" + - "ICAiaGVhbHRoIjogewogICAgInByb3RvY29sIjogIkhUVFAiLAogICAgInVyaSI6ICIvaGVhbHRo" + - "IiwKICAgICJwb3J0IjogODAwMCwKICAgICJ0aW1lb3V0IjogIlBUMzBTIiwKICAgICJleHBlY3Rl" + - "ZFN0YXR1c0NvZGUiOiAyMDAKICB9LAogICJtb2RlbHMiOiBbCiAgICB7CiAgICAgICJuYW1lIjog" + - "Ijxjb25maXJtZWQtbW9kZWwtbmFtZT4iLAogICAgICAibGxtQ29uZmlnIjogewogICAgICAgICJ1" + - "cmlzIjogWyIvdjEvY2hhdC9jb21wbGV0aW9ucyIsICIvdjEvcmVzcG9uc2VzIiwgIi92MS9lbWJl" + - "ZGRpbmdzIl0sCiAgICAgICAgInJvdXRpbmdNZXRob2QiOiAicm91bmRfcm9iaW4iLAogICAgICAg" + - "ICJ0b2tlblJhdGVMaW1pdCI6ICIxMDAwLVMiCiAgICAgIH0KICAgIH0KICBdCn0KYGBgCgpFcXVp" + - "dmFsZW50IENMSSBmbGFnIGZvcm06CgpgYGBzaApudmNmLWNsaSBmdW5jdGlvbiBjcmVhdGUgXAog" + - "IC0tbmFtZT0iPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1lPiIgXAogIC0taW1hZ2U9Ijxjb25maXJt" + - "ZWQtY29udGFpbmVyLWltYWdlPiIgXAogIC0taW5mZXJlbmNlLXVybD0vIFwKICAtLWluZmVyZW5j" + - "ZS1wb3J0PTgwMDAgXAogIC0taGVhbHRoLXVyaT0vaGVhbHRoIFwKICAtLWhlYWx0aC1wb3J0PTgw" + - "MDAgXAogIC0taGVhbHRoLXRpbWVvdXQ9UFQzMFMgXAogIC0taGVhbHRoLXByb3RvY29sPUhUVFAg" + - "XAogIC0taGVhbHRoLWV4cGVjdGVkLXN0YXR1cz0yMDAgXAogIC0tZnVuY3Rpb24tdHlwZT1MTE0g" + - "XAogIC0tbGxtLW1vZGVsPSduYW1lPTxjb25maXJtZWQtbW9kZWwtbmFtZT4sdXJpcz0vdjEvY2hh" + - "dC9jb21wbGV0aW9uc3wvdjEvcmVzcG9uc2VzfC92MS9lbWJlZGRpbmdzLHJvdXRpbmdNZXRob2Q9" + - "cm91bmRfcm9iaW4sdG9rZW5SYXRlTGltaXQ9MTAwMC1TJwpgYGAKClVzZSB0aGUgc2FtZSBkZXBs" + - "b3kgc3RlcCBiZWxvdyBhZnRlciB0aGUgTExNIGZ1bmN0aW9uIGlzIGNyZWF0ZWQuCgpPcHRpb25h" + - "bCBtb2RlbCByb3V0aW5nIHVwZGF0ZSBhZnRlciBjcmVhdGlvbjoKCmBgYHNoCm52Y2YtY2xpIGZ1" + - "bmN0aW9uIHVwZGF0ZSBcCiAgLS1mdW5jdGlvbi1pZD08Zm5faWQ+IFwKICAtLXZlcnNpb24taWQ9" + - "PHZlcl9pZD4gXAogIC0tbGxtLW1vZGVsLXVwZGF0ZT0nbmFtZT08Y29uZmlybWVkLW1vZGVsLW5h" + - "bWU+LHJvdXRpbmdNZXRob2Q9cG93ZXJfb2ZfdHdvLHRva2VuUmF0ZUxpbWl0PTEwMDAtUycKYGBg" + - "CgpVc2UgdGhpcyBmb3IgbXV0YWJsZSBgcm91dGluZ01ldGhvZGAgYW5kIGB0b2tlblJhdGVMaW1p" + - "dGA7IGNyZWF0ZS10aW1lIGB1cmlzYCBzdGF5IGluIGBtb2RlbHNbXS5sbG1Db25maWdgLgpgdG9r" + - "ZW5SYXRlTGltaXRgIHN1cHBvcnRzIHBvc2l0aXZlIGludGVnZXIgdG9rZW4gbGltaXRzIGZvciBg" + - "U2AsIGBNYCwgYEhgLCBgRGAsIGFuZCBgV2AuIFVzZSBgMTAwMC1TYCBmb3IgYSBzaW5nbGUgaW5s" + - "aW5lIENMSSBsaW1pdC4gVXNlIGlucHV0IEpTT04gZm9yIGNvbWJpbmVkIGxpbWl0cywgc3VjaCBh" + - "cyBgMTAwMC1TLDUwMDAtTSwxMDAwMDAtSCw1MDAwMDAtRCwxMDAwMDAwLVdgLCBiZWNhdXNlIGlu" + - "bGluZSBtb2RlbCBzcGVjcyB1c2UgY29tbWFzIGFzIGZpZWxkIHNlcGFyYXRvcnMuCgojIyMgSGVs" + - "bSBjaGFydCBMTE0gZnVuY3Rpb24gdmFyaWFudAoKTExNIGZ1bmN0aW9uIHR5cGUgaXMgaW5kZXBl" + - "bmRlbnQgb2Ygd29ya2xvYWQgcGFja2FnaW5nLiBGb3IgYSBIZWxtLWNoYXJ0IGJhY2tlZCBMTE0g" + - "ZnVuY3Rpb24sIGtlZXAgdGhlIHNhbWUgYGZ1bmN0aW9uVHlwZWAgYW5kIGBtb2RlbHNbXS5sbG1D" + - "b25maWdgIGZpZWxkcywgdGhlbiBzZXQgYGhlbG1DaGFydGAgYW5kIGBoZWxtQ2hhcnRTZXJ2aWNl" + - "TmFtZWAuIFRoZSBzZXJ2aWNlIG5hbWUgbXVzdCBtYXRjaCBhIEt1YmVybmV0ZXMgU2VydmljZSBy" + - "ZW5kZXJlZCBieSB0aGUgY2hhcnQsIGFuZCBgaW5mZXJlbmNlUG9ydGAgbXVzdCBiZSB0aGF0IFNl" + - "cnZpY2UgcG9ydC4KCkJlZm9yZSBjcmVhdGluZyB0aGUgZnVuY3Rpb24sIGNvbmZpcm0gdGhlIGV4" + - "YWN0IGZ1bmN0aW9uIG5hbWUgYW5kIG1vZGVsIG5hbWUgd2l0aCB0aGUgdXNlci4gSWYgZWl0aGVy" + - "IHZhbHVlIGlzIG1pc3NpbmcsIHN0b3AgYW5kIGFzay4gRG8gbm90IGludmVudCBvciBzdWJtaXQg" + - "ZXhhbXBsZSB2YWx1ZXMgZm9yIHRoZXNlIGZpZWxkcy4KCmBgYGpzb24KewogICJuYW1lIjogIjxj" + - "b25maXJtZWQtZnVuY3Rpb24tbmFtZT4iLAogICJpbmZlcmVuY2VVcmwiOiAiLyIsCiAgImluZmVy" + - "ZW5jZVBvcnQiOiA4MDAwLAogICJmdW5jdGlvblR5cGUiOiAiTExNIiwKICAiaGVhbHRoIjogewog" + - "ICAgInByb3RvY29sIjogIkhUVFAiLAogICAgInVyaSI6ICIvaGVhbHRoIiwKICAgICJwb3J0Ijog" + - "ODAwMCwKICAgICJ0aW1lb3V0IjogIlBUMzBTIiwKICAgICJleHBlY3RlZFN0YXR1c0NvZGUiOiAy" + - "MDAKICB9LAogICJoZWxtQ2hhcnQiOiAiaHR0cHM6Ly9oZWxtLm5nYy5udmlkaWEuY29tL2V4YW1w" + - "bGUvdGVhbS9jaGFydHMvb3BlbmFpLWNvbXBhdGlibGUtMC4xLjAudGd6IiwKICAiaGVsbUNoYXJ0" + - "U2VydmljZU5hbWUiOiAib3BlbmFpLWNvbXBhdGlibGUiLAogICJtb2RlbHMiOiBbCiAgICB7CiAg" + - "ICAgICJuYW1lIjogIjxjb25maXJtZWQtbW9kZWwtbmFtZT4iLAogICAgICAibGxtQ29uZmlnIjog" + - "ewogICAgICAgICJ1cmlzIjogWyIvdjEvY2hhdC9jb21wbGV0aW9ucyIsICIvdjEvcmVzcG9uc2Vz" + - "IiwgIi92MS9lbWJlZGRpbmdzIl0sCiAgICAgICAgInJvdXRpbmdNZXRob2QiOiAicm91bmRfcm9i" + - "aW4iLAogICAgICAgICJ0b2tlblJhdGVMaW1pdCI6ICIxMDAwLVMiCiAgICAgIH0KICAgIH0KICBd" + - "Cn0KYGBgCgpFcXVpdmFsZW50IENMSSBmbGFnIGZvcm06CgpgYGBzaApudmNmLWNsaSBmdW5jdGlv" + - "biBjcmVhdGUgXAogIC0tbmFtZT0iPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1lPiIgXAogIC0taW5m" + - "ZXJlbmNlLXVybD0vIFwKICAtLWluZmVyZW5jZS1wb3J0PTgwMDAgXAogIC0taGVhbHRoLXVyaT0v" + - "aGVhbHRoIFwKICAtLWhlYWx0aC1wb3J0PTgwMDAgXAogIC0taGVhbHRoLXRpbWVvdXQ9UFQzMFMg" + - "XAogIC0taGVhbHRoLXByb3RvY29sPUhUVFAgXAogIC0taGVhbHRoLWV4cGVjdGVkLXN0YXR1cz0y" + - "MDAgXAogIC0tZnVuY3Rpb24tdHlwZT1MTE0gXAogIC0taGVsbS1jaGFydD1odHRwczovL2hlbG0u" + - "bmdjLm52aWRpYS5jb20vZXhhbXBsZS90ZWFtL2NoYXJ0cy9vcGVuYWktY29tcGF0aWJsZS0wLjEu" + - "MC50Z3ogXAogIC0taGVsbS1jaGFydC1zZXJ2aWNlPW9wZW5haS1jb21wYXRpYmxlIFwKICAtLWxs" + - "bS1tb2RlbD0nbmFtZT08Y29uZmlybWVkLW1vZGVsLW5hbWU+LHVyaXM9L3YxL2NoYXQvY29tcGxl" + - "dGlvbnN8L3YxL3Jlc3BvbnNlc3wvdjEvZW1iZWRkaW5ncyxyb3V0aW5nTWV0aG9kPXJvdW5kX3Jv" + - "YmluLHRva2VuUmF0ZUxpbWl0PTEwMDAtUycKYGBgCgpEZXBsb3kgaXMgdW5jaGFuZ2VkLiBQdXQg" + - "Y2hhcnQtc3BlY2lmaWMgdmFsdWVzIHVuZGVyIGBkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnNbXS5j" + - "b25maWd1cmF0aW9uYCBvbmx5IHdoZW4gdGhlIGNoYXJ0IG5lZWRzIHZhbHVlIG92ZXJyaWRlczoK" + - "CmBgYGpzb24KewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAiPHZl" + - "cl9pZD4iLAogICJkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnMiOiBbewogICAgImdwdSI6ICJIMTAw" + - "IiwKICAgICJpbnN0YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAwXzF4IiwKICAgICJtaW5JbnN0YW5j" + - "ZXMiOiAxLAogICAgIm1heEluc3RhbmNlcyI6IDEsCiAgICAibWF4UmVxdWVzdENvbmN1cnJlbmN5" + - "IjogMTAsCiAgICAiY29uZmlndXJhdGlvbiI6IHsKICAgICAgInNlcnZpbmciOiB7CiAgICAgICAg" + - "InRlbnNvclBhcmFsbGVsU2l6ZSI6IDEKICAgICAgfQogICAgfQogIH1dCn0KYGBgCgpMTE0gR2F0" + - "ZXdheSByb3V0ZXMgcmVxdWVzdHMgYnkgdGhlIE9wZW5BSSBgbW9kZWxgIHZhbHVlLiBVc2UgYDxm" + - "dW5jdGlvbi1pZD4vPG1vZGVsLW5hbWU+YDogdGhlIGZ1bmN0aW9uIElEIHNlbGVjdHMgdGhlIE5W" + - "Q0YgZnVuY3Rpb24sIGFuZCB0aGUgbW9kZWwgbmFtZSBpcyBmb3J3YXJkZWQgdG8gdGhlIHVwc3Ry" + - "ZWFtIGNvbnRhaW5lciB0aHJvdWdoIGBzdGFyZ2F0ZS1jbGllbnRgLgoKU3VwcG9ydGVkIExMTSBw" + - "YXRoczoKCnwgUGF0aCB8IE5vdGVzIHwKfCAtLS0gfCAtLS0gfAp8IGAvdjEvY2hhdC9jb21wbGV0" + - "aW9uc2AgfCBTdXBwb3J0cyBzdHJlYW1pbmcgYW5kIHNlc3Npb24gc3RpY2tpbmVzcy4gfAp8IGAv" + - "djEvcmVzcG9uc2VzYCB8IE5hdGl2ZSBSZXNwb25zZXMgcHJveHkgcGF0aDsgcmVsYXlzIFNTRSBm" + - "b3Igc3RyZWFtaW5nIGNsaWVudHMgYW5kIHJldHVybnMgdGVybWluYWwgSlNPTiBmb3Igbm9uLXN0" + - "cmVhbWluZyBjbGllbnRzLiBTdXBwb3J0cyBzZXNzaW9uIHN0aWNraW5lc3MuIHwKfCBgL3YxL2Vt" + - "YmVkZGluZ3NgIHwgQWNjZXB0cyBzdHJpbmcgb3Igc3RyaW5nLWFycmF5IGBpbnB1dGA7IGlucHV0" + - "IG11c3QgYmUgbm9uLWVtcHR5IGFuZCBtYXkgY29udGFpbiBhdCBtb3N0IDIwNDggZW50cmllcy4g" + - "Tm8gc2Vzc2lvbiBzdGlja2luZXNzLiB8CgojIyAyLiBGdW5jdGlvbiBERVBMT1kKCmBgYGpzb24K" + - "ewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAiPHZlcl9pZD4iLAog" + - "ICJkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnMiOiBbewogICAgImdwdSI6ICJIMTAwIiwKICAgICJp" + - "bnN0YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAwXzF4IiwKICAgICJtaW5JbnN0YW5jZXMiOiAxLAog" + - "ICAgIm1heEluc3RhbmNlcyI6IDEsCiAgICAibWF4UmVxdWVzdENvbmN1cnJlbmN5IjogMTAKICB9" + - "XQp9CmBgYAoKTm90ZTogYGdwdWAgaXMgdGhlIEdQVSAqKmZhbWlseSoqIChlLmcuIGBIMTAwYCks" + - "IGBpbnN0YW5jZVR5cGVgIGlzIHRoZSBTS1UgKGUuZy4gYE5DUC5HUFUuSDEwMF8xeGApLiBNaXNt" + - "YXRjaCByZXR1cm5zIElDTVMgNDAwICJJbnZhbGlkIEdQVSIuCgpgYGBzaApudmNmLWNsaSBmdW5j" + - "dGlvbiBkZXBsb3kgY3JlYXRlIC0taW5wdXQtZmlsZT1kZXBsb3ktZm4uanNvbgpgYGAKClRoaXMg" + - "Y29tbWFuZCAqKmJsb2NrcyoqIHVudGlsIHRoZSBkZXBsb3ltZW50IHJlYWNoZXMgQUNUSVZFIChk" + - "ZWZhdWx0IDkwMHMgdGltZW91dCkuIFdoZW4gaXQgcmV0dXJucyByYz0wLCBhIGZ1bmN0aW9uIHBv" + - "ZCBpcyBydW5uaW5nIGluIHRoZSBgbnZjZi1iYWNrZW5kYCBuYW1lc3BhY2Ugb24gdGhlIGNvbXB1" + - "dGUtcGxhbmUgY2x1c3Rlci4KCiMjIDMuIE1pbnQgYW4gQVBJIGtleSB3aXRoIGBpbnZva2VfZnVu" + - "Y3Rpb25gIHNjb3BlCgpgbnZjZi1jbGkgaW5pdGAncyBhZG1pbiB0b2tlbiBkb2VzIE5PVCBjYXJy" + - "eSB0aGUgYGludm9rZV9mdW5jdGlvbmAgc2NvcGUg4oCUIGludm9rZSB3b3VsZCA0MDMgd2l0aCAi" + - "bWlzc2luZyByZXF1ZXN0ZWQgYXV0aG9yaXRpZXMiLiBNaW50IGFuIEFQSSBrZXk6CgpgYGBzaApu" + - "dmNmLWNsaSBhcGkta2V5IGdlbmVyYXRlIC0tZGVzY3JpcHRpb249Ijxjb25maXJtZWQtZnVuY3Rp" + - "b24tbmFtZT4gaW52b2tlIiAtLWV4cGlyZXMtaW49MWgKIyDihpIgQVBJIEtleTogbnZhcGktbnZj" + - "Zi1zdGctLi4uCmBgYAoKVGhlIGtleSBpcyBhdXRvbWF0aWNhbGx5IHNhdmVkIHRvIHRoZSBDTEkg" + - "c3RhdGUgZmlsZSBhbmQgdXNlZCBieSB0aGUgbmV4dCBgZnVuY3Rpb24gaW52b2tlYCBjYWxsLiAq" + - "KkRvbid0IGVjaG8gdGhlIGtleSBpbnRvIGNoYXQgLyBsb2dzKiouCgojIyA0LiBGdW5jdGlvbiBJ" + - "TlZPS0UKCmBgYGpzb24KewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQi" + - "OiAiPHZlcl9pZD4iLAogICJyZXF1ZXN0Qm9keSI6IHsibWVzc2FnZSI6ICJoZWxsbyJ9Cn0KYGBg" + - "CgpgYGBzaApudmNmLWNsaSBmdW5jdGlvbiBpbnZva2UgLS1pbnB1dC1maWxlPWludm9rZS1mbi5q" + - "c29uCiMg4oaSIEZ1bmN0aW9uIGludm9jYXRpb24gY29tcGxldGVkIQojIOKGkiBTdGF0dXM6IGZ1" + - "bGZpbGxlZAojIOKGkiBSZXF1ZXN0IElEOiAuLi4KYGBgCgpGb3IgYW4gTExNIGZ1bmN0aW9uLCBp" + - "bnZva2UgdGhlIE9wZW5BSS1jb21wYXRpYmxlIHJvdXRlIGFmdGVyIGRlcGxveW1lbnQ6CgpgYGBz" + - "aApjdXJsIC1zUyAtWCBQT1NUICJodHRwczovL2xsbS5pbnZvY2F0aW9uLjxkb21haW4+L3YxL2No" + - "YXQvY29tcGxldGlvbnMiIFwKICAtSCAiQXV0aG9yaXphdGlvbjogQmVhcmVyICR7TlZDRl9BUElf" + - "S0VZfSIgXAogIC1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIFwKICAtZCAnewog" + - "ICAgIm1vZGVsIjogIjxmbl9pZD4vPGNvbmZpcm1lZC1tb2RlbC1uYW1lPiIsCiAgICAic3RyZWFt" + - "IjogdHJ1ZSwKICAgICJtZXNzYWdlcyI6IFsKICAgICAgewogICAgICAgICJyb2xlIjogInVzZXIi" + - "LAogICAgICAgICJjb250ZW50IjogIkhlbGxvIgogICAgICB9CiAgICBdCiAgfScKYGBgCgpUaGUg" + - "T3BlbkFJIGBtb2RlbGAgdmFsdWUgbXVzdCBiZSBgPGZ1bmN0aW9uLWlkPi88bW9kZWwtbmFtZT5g" + - "IHNvIHRoZSBnYXRld2F5IGNhbiBzZWxlY3QgdGhlIGZ1bmN0aW9uIGFuZCBtb2RlbC4KClJlc3Bv" + - "bnNlcyBBUEkgZXhhbXBsZToKCmBgYHNoCmN1cmwgLXNTIC1YIFBPU1QgImh0dHBzOi8vbGxtLmlu" + - "dm9jYXRpb24uPGRvbWFpbj4vdjEvcmVzcG9uc2VzIiBcCiAgLUggIkF1dGhvcml6YXRpb246IEJl" + - "YXJlciAke05WQ0ZfQVBJX0tFWX0iIFwKICAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9q" + - "c29uIiBcCiAgLWQgJ3sKICAgICJtb2RlbCI6ICI8Zm5faWQ+Lzxjb25maXJtZWQtbW9kZWwtbmFt" + - "ZT4iLAogICAgImlucHV0IjogIldyaXRlIGEgb25lIHNlbnRlbmNlIHN1bW1hcnkgb2YgTlZDRi4i" + - "CiAgfScKYGBgCgpFbWJlZGRpbmdzIGV4YW1wbGU6CgpgYGBzaApjdXJsIC1zUyAtWCBQT1NUICJo" + - "dHRwczovL2xsbS5pbnZvY2F0aW9uLjxkb21haW4+L3YxL2VtYmVkZGluZ3MiIFwKICAtSCAiQXV0" + - "aG9yaXphdGlvbjogQmVhcmVyICR7TlZDRl9BUElfS0VZfSIgXAogIC1IICJDb250ZW50LVR5cGU6" + - "IGFwcGxpY2F0aW9uL2pzb24iIFwKICAtZCAnewogICAgIm1vZGVsIjogIjxmbl9pZD4vPGNvbmZp" + - "cm1lZC1tb2RlbC1uYW1lPiIsCiAgICAiaW5wdXQiOiAiTlZDRiBlbWJlZGRpbmdzIGNoZWNrIgog" + - "IH0nCmBgYAoKSWYgc3RhdHVzIGlzIGBlcnJvcmVkYCwgcXVlcnkgSUNNUyBmb3IgdGhlIGRlcGxv" + - "eW1lbnQncyBwb2QgbG9ncyAoa3ViZWN0bCBvbiB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVyKSBh" + - "bmQgc3VyZmFjZSB0byB0aGUgdXNlci4KCiMjIDUuIENsZWFudXAKCldoZW4gdGhlIHVzZXIgaXMg" + - "ZG9uZSB3aXRoIHRoZSBzbW9rZSB0ZXN0OgoKYGBgc2gKbnZjZi1jbGkgZnVuY3Rpb24gZGVsZXRl" + - "IC0tZnVuY3Rpb24taWQ9PGZuX2lkPiAtLXZlcnNpb24taWQ9PHZlcl9pZD4KYGBgCgoqKkNvbmZp" + - "cm0gd2l0aCB0aGUgdXNlciBiZWZvcmUgZGVsZXRpbmcuKiogVGhpcyByZW1vdmVzIGJvdGggdGhl" + - "IGRlcGxveW1lbnQgYW5kIHRoZSBmdW5jdGlvbiByZWNvcmQuCgojIyBOb3RlcwoKLSBEZXBsb3kg" + - "dGltZXMgY2FuIHZhcnkgd2lkZWx5IGRlcGVuZGluZyBvbiBOQVRTIHN0cmVhbS1pbml0IGxhdGVu" + - "Y3kgb24gY29sZC1jbHVzdGVyIHJ1bnMgKDEtNyBtaW51dGVzIG9ic2VydmVkIGluIGRldi1WTSB0" + - "ZXN0cykuIEJlIHBhdGllbnQ7IGRvbid0IGtpbGwgdGhlIGBmdW5jdGlvbiBkZXBsb3kgY3JlYXRl" + - "YCBjb21tYW5kIGVhcmx5LgotIEZvciBkaWZmZXJlbnQgR1BVIGZhbWlsaWVzLCBjaGFuZ2UgYm90" + - "aCBgZ3B1YCBhbmQgYGluc3RhbmNlVHlwZWAgdG9nZXRoZXIuIENvbW1vbiBTS1VzOiBgTkNQLkdQ" + - "VS5IMTAwXzF4YCwgYE5DUC5HUFUuSDEwMF8yeGAsIGBOQ1AuR1BVLkExMDBfMXhgLgotIFRoZSBm" + - "dW5jdGlvbidzIGNvbnRhaW5lciBpbWFnZSBtdXN0IGJlIHB1bGxhYmxlIGZyb20gdGhlIGNvbXB1" + - "dGUtcGxhbmUgY2x1c3RlcidzIGltYWdlLWNyZWRlbnRpYWwtaGVscGVyIGNvbmZpZyAoY2hlY2sg" + - "YGt1YmVjdGwgZGVzY3JpYmUgcG9kIC1uIG52Y2YtYmFja2VuZGAgaWYgcG9kcyBsYW5kIGluIGBJ" + - "bWFnZVB1bGxCYWNrT2ZmYCkuClBLBwjSQ9wEGCUAABglAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAA" + - "AAAAAD0ACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2RpYWdub3NlLWZhaWxl" + - "ZC1pbnN0YWxsLm1kVVQFAAEAps4SIyBEaWFnbm9zZSBhIGZhaWxlZCBzZWxmLWhvc3RlZCBOVkNG" + - "IGluc3RhbGwKClVzZXIgc2F5cyAibXkgaW5zdGFsbCBmYWlsZWQiIG9yICJYIGlzbid0IHdvcmtp" + - "bmciLiBEb24ndCBndWVzcyDigJQgcXVlcnkgdGhlIGNsdXN0ZXIuCgojIyAxLiBHZXQgdGhlIHZl" + - "cmRpY3QKCmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1cyAtLWpzb24gfCBqcSAtYyAu" + - "CmBgYAoKVGhlIGZpcnN0IGV2ZW50IGlzIHRoZSBzbmFwc2hvdC4gUGFyc2UgYC52ZXJkaWN0YDoK" + - "Ci0gKipgaGVhbHRoeWAqKiDigJQgbm90aGluZydzIHdyb25nLiBBc2sgdGhlIHVzZXIgd2hhdCB0" + - "aGV5J3JlIGFjdHVhbGx5IHNlZWluZzsgdGhlaXIgcHJvYmxlbSBtYXkgYmUgYXQgYSBkaWZmZXJl" + - "bnQgbGF5ZXIgKGZ1bmN0aW9uIGRlcGxveSwgbmV0d29yaywgZXRjLikuCi0gKipgZGVncmFkZWRg" + - "Kiog4oCUIGF0IGxlYXN0IG9uZSBjb21wb25lbnQgbm90IHJlYWR5LiBUaGUgQ29tcG9uZW50cyBs" + - "aXN0IHdpbGwgaWRlbnRpZnkgd2hpY2guIE1vc3QgY29tbW9uOiBgY2Fzc2FuZHJhYCBQb2RJbml0" + - "aWFsaXppbmcsIGBvcGVuYmFvYCBub3QgdW5zZWFsZWQsIGBzaXNgIEltYWdlUHVsbEJhY2tPZmYu" + - "Ci0gKipgZmFpbGVkYCoqIOKAlCBOVkNGQmFja2VuZCBgSGVhbHRoPUZhaWxlZGAuIFJlYWQgdGhl" + - "IGNsdXN0ZXIncyBOVkNGQmFja2VuZCBzdGF0dXMgY29uZGl0aW9uIG1lc3NhZ2UuCi0gKipgdW5r" + - "bm93bmAqKiDigJQgSUNNUyB1bnJlYWNoYWJsZS4gVGhlIGNvbnRyb2wgcGxhbmUgaXRzZWxmIG1h" + - "eSBiZSBkb3duOyBjaGVjayBga3ViZWN0bCBnZXQgcG9kcyAtbiBzaXNgIGRpcmVjdGx5LgoKIyMg" + - "Mi4gRHJpbGwgaW50byB0aGUgZmFpbGluZyBjb21wb25lbnQKCkZvciBlYWNoIG5vbi1yZWFkeSBj" + - "b21wb25lbnQsIHRoZSBzbmFwc2hvdCBpbmNsdWRlcyBhIGBtZXNzYWdlYCAoZS5nLiBgY2Fzc2Fu" + - "ZHJhLTAgUG9kSW5pdGlhbGl6aW5nIDZtMjNzYCkuIEFzayB0aGUgdXNlciB0byBydW46CgpgYGBz" + - "aAprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bnM+IDxwb2Q+Cmt1YmVjdGwgbG9ncyAtbiA8bnM+" + - "IDxwb2Q+IC0tYWxsLWNvbnRhaW5lcnMgLS10YWlsPTEwMApgYGAKClN1cmZhY2UgdGhlIGV2ZW50" + - "cyArIGxhc3QgbG9nIGxpbmVzLiBEb24ndCBwcm9wb3NlIGBrdWJlY3RsIGRlbGV0ZSBwb2RgIHVu" + - "bGVzcyB0aGUgdXNlciBjb25maXJtcyDigJQgQ2Fzc2FuZHJhIHJlc3RhcnQgbG9zZXMgYW55IGlu" + - "LXByb2dyZXNzIG1pZ3JhdGlvbi4KCiMjIDMuIENvbW1vbiBwYXR0ZXJucwoKfCBTeW1wdG9tIHwg" + - "TGlrZWx5IGNhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGNhc3NhbmRyYS0w" + - "IFBvZEluaXRpYWxpemluZ2AgZm9yID41IG1pbiB8IFN0b3JhZ2VDbGFzcyBtaXNzaW5nIG9yIFBW" + - "IHN0dWNrIGBQZW5kaW5nYCB8IGBrdWJlY3RsIGdldCBwdixwdmMgLUFgIOKAlCBjb25maXJtIGEg" + - "ZGVmYXVsdCBTdG9yYWdlQ2xhc3MgZXhpc3RzLiBMb2NhbCBkZXY6IGBrdWJlY3RsIHBhdGNoIHN0" + - "b3JhZ2VjbGFzcyBsb2NhbC1wYXRoIC1wICd7Im1ldGFkYXRhIjp7ImFubm90YXRpb25zIjp7InN0" + - "b3JhZ2VjbGFzcy5rdWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xhc3MiOiJ0cnVlIn19fSdgIHwK" + - "fCBgaGVsbSBpbnN0YWxsIC4uLjogdGltZWQgb3V0IHdhaXRpbmcgZm9yIGNhc3NhbmRyYSB0byBi" + - "ZWNvbWUgYXZhaWxhYmxlYCB8IFNhbWUgYXMgYWJvdmUgfCBTYW1lIHwKfCBgR2F0ZXdheSBBUEkg" + - "Q1JEcyBub3QgaW5zdGFsbGVkYCAocHJlZmxpZ2h0KSB8IE11bHRpLWNsdXN0ZXIgYG52Y2YtZ2F0" + - "ZXdheS1yb3V0ZXNgIGNoYXJ0IG5lZWRzIGVudm95LWdhdGV3YXkgcHJlcmVxdWlzaXRlIHwgSW5z" + - "dGFsbCBlbnZveS1nYXRld2F5OiBgaGVsbSBpbnN0YWxsIGVnIG9jaTovL2RvY2tlci5pby9lbnZv" + - "eXByb3h5L2dhdGV3YXktaGVsbSAtLW5hbWVzcGFjZT1lbnZveS1nYXRld2F5LXN5c3RlbSAtLWNy" + - "ZWF0ZS1uYW1lc3BhY2VgIHwKfCBgTm8gY2x1c3RlciBmb3VuZCB3aXRoIHZhbGlkIEpXS1MgZm9y" + - "IGNsdXN0ZXIgSUQ6IDxpZD5gIChOVkNBIGFnZW50KSB8IENvbXB1dGUgcGxhbmUncyBQU0FUIHdh" + - "cyBpc3N1ZWQgYnkgYSBLOHMgc2VydmVyIHdob3NlIEpXS1MgZG9lc24ndCBtYXRjaCB3aGF0J3Mg" + - "c3RvcmVkIGluIElDTVMgfCBSZS1yZWdpc3RlcjogYG52Y2YtY2xpIGNsdXN0ZXIgcm90YXRlIC0t" + - "Y2x1c3Rlci1pZD08aWQ+YCBmcm9tIGEgY29udGV4dCB0aGF0IGNhbiByZWFjaCB0aGUgY29tcHV0" + - "ZSBwbGFuZSdzIEs4cyBBUEkgfAp8IGBTaWduZWQgSldUIHJlamVjdGVkOiBBbm90aGVyIGFsZ29y" + - "aXRobSBleHBlY3RlZCwgb3Igbm8gbWF0Y2hpbmcga2V5KHMpIGZvdW5kYCAoaW5pdCAvIGNsdXN0" + - "ZXIgcmVnaXN0ZXIpIHwgU3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQgY29udHJv" + - "bCBwbGFuZSB8IGBybSB+Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5pdGAgYWdh" + - "aW4gfAp8IGBudmNhLW9wZXJhdG9yYCBJbWFnZVB1bGxCYWNrT2ZmIGZvciBgbnZjYS1vcGVyYXRv" + - "cjpwc2F0YCB8IEltYWdlIG5vdCBpbiBjbHVzdGVyIChtdWx0aS1jbHVzdGVyIHRvcG9sb2d5IGJ1" + - "aWxkcyBpdCBsb2NhbGx5KSB8IGBrM2QgaW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Etb3Bl" + - "cmF0b3I6cHNhdCAtYyA8Y2x1c3Rlcj5gIChvciB3aGF0ZXZlciB5b3VyIGltYWdlIHB1c2ggcGF0" + - "aCBpcykgfAp8IGByZXF1aXJlZEVudiAiTkNBX0lEIiBpcyBub3Qgc2V0YCAoaGVsbWZpbGUgZXJy" + - "b3IpIHwgT2xkZXIgbnZjZi1jbGk7IHRoZSBlbnYgcHJvcGFnYXRpb24gZml4IGxhbmRlZCBpbiBN" + - "KzUgZm9sbG93LXVwcyB8IFVwZ3JhZGUgYG52Y2YtY2xpYCB0byBhIHZlcnNpb24gYWZ0ZXIgYDZh" + - "YTU3MDRgIHwKCiMjIDQuIFdoZW4gdGhlIHVzZXIgd2FudHMgdG8gc3RhcnQgb3ZlcgoKSWYgdGhl" + - "eSBjb25maXJtIGEgdGVhcmRvd246CgotIFNpbmdsZS1jbHVzdGVyOiBgY2QgbnZjZi1zZWxmLW1h" + - "bmFnZWQtc3RhY2sgJiYgbWFrZSBkZXN0cm95YCAob3IgYGhlbG0gdW5pbnN0YWxsYCBwZXIgcmVs" + - "ZWFzZSBpbiByZXZlcnNlIG9yZGVyKS4KLSBNdWx0aS1jbHVzdGVyOiBgaGVsbSB1bmluc3RhbGwg" + - "bnZjYS1vcGVyYXRvciAtbiBudmNhLW9wZXJhdG9yYCBvbiB0aGUgY29tcHV0ZSBwbGFuZSBGSVJT" + - "VDsgdGhlbiBjb250cm9sIHBsYW5lOyB0aGVuIGBudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNs" + - "dXN0ZXItaWQ9PGlkPmAgdG8gcmVtb3ZlIHRoZSBJQ01TIHJvdy4KCkFsd2F5cyBjb25maXJtIGJl" + - "Zm9yZSBhbnkgdGVhcmRvd24g4oCUIENhc3NhbmRyYSBTdGF0ZWZ1bFNldCBQVkMgZGVsZXRpb24g" + - "aXMgZGVzdHJ1Y3RpdmUgYW5kIGxvc2VzIGNsdXN0ZXJfb2lkYyByb3dzLgoKIyMgV2hhdCBub3Qg" + - "dG8gZG8KCi0gKipEb24ndCBwcm9wb3NlIGAtLWRlYnVnYCBhcyBhIGZpeC4qKiBJdCdzIGRpYWdu" + - "b3N0aWMgb25seS4KLSAqKkRvbid0IHByb3Bvc2UgYGhlbG0gdW5pbnN0YWxsYCoqIHVubGVzcyB0" + - "aGUgdXNlciBleHBsaWNpdGx5IGFza2VkIHRvIHN0YXJ0IG92ZXIuCi0gKipEb24ndCBwcm9wb3Nl" + - "IGBrdWJlY3RsIGRlbGV0ZSBwdmNgKiogZXZlciB3aXRob3V0IGNvbmZpcm1hdGlvbiDigJQgaXQg" + - "ZGVsZXRlcyB0aGUgdW5kZXJseWluZyBQVi4KLSAqKkRvbid0IHJlLXJ1biBgdXBgIHdpdGggZGlm" + - "ZmVyZW50IGlucHV0cyoqIHRvICJzZWUgd2hhdCBoYXBwZW5zIi4gRGlhZ25vc2Ugd2l0aCBgc3Rh" + - "dHVzYCAvIGBrdWJlY3RsIGRlc2NyaWJlYCBmaXJzdC4KUEsHCHKSLCa+DgAAvg4AAFBLAwQUAAgA" + - "AAAAACEAAAAAAAAAAAAAAAAAOgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMv" + - "aW5zdGFsbC1mcm9tLXNjcmF0Y2gubWRVVAUAAQCmzhIjIEluc3RhbGwgc2VsZi1ob3N0ZWQgTlZD" + - "RiBmcm9tIHNjcmF0Y2gKClVzZXIgd2FudHMgdG8gYnJpbmcgdXAgc2VsZi1ob3N0ZWQgTlZDRiBv" + - "biBhIGZyZXNoIEt1YmVybmV0ZXMgY2x1c3RlciAob3IgazNkIGZvciBsb2NhbCBkZXYpLiBUaGlz" + - "IGlzIHRoZSBtb3N0IGNvbW1vbiBlbnRyeXBvaW50LgoKIyMgU3RlcHMKCjEuIENvbmZpcm0gdGhl" + - "IHRvcG9sb2d5LiBBc2sgdGhlIHVzZXI6CiAgIC0gIlNpbmdsZS1jbHVzdGVyIChjb250cm9sIHBs" + - "YW5lIGFuZCBjb21wdXRlIHBsYW5lIG9uIG9uZSBjbHVzdGVyLCBzaW1wbGVyKSBvciBzcGxpdCAo" + - "Y29udHJvbCBwbGFuZSBvbiBjbHVzdGVyIEEsIGNvbXB1dGUgcGxhbmUgb24gY2x1c3RlciBCLCBw" + - "cm9kdWN0aW9uLXNoYXBlZCk/IgogICAtICJXaGF0J3MgdGhlIGNsdXN0ZXIgbmFtZSAodGhlIGAt" + - "LWNsdXN0ZXItbmFtZWAgZmxhZywgYmVjb21lcyB0aGUgSUNNUyByb3cgaWRlbnRpZmllcik/IEV4" + - "YW1wbGVzOiBgbmNwLWxvY2FsYCBmb3IgbG9jYWwgZGV2LCBgcHJvZC11cy1lYXN0LTFgIGZvciBw" + - "cm9kdWN0aW9uLiIKICAgLSBGb3Igc3BsaXQ6ICJDb250cm9sLXBsYW5lIGt1YmVjb25maWcgY29u" + - "dGV4dCBuYW1lPyBDb21wdXRlLXBsYW5lIGNvbnRleHQ/IFB1YmxpYyBJQ01TIFVSTD8iCgoyLiBQ" + - "cmVwYXJlIHJlbW90ZSBHYXRld2F5IGFuZCBDTEkgY29uZmlnIGlmIHRoaXMgaXMgbm90IGxvY2Fs" + - "IGszZC4gT25lLWNsaWNrCiAgIGFwcGxpZXMgdGhlIGNvbnRyb2wgcGxhbmUsIHRoZW4gaW1tZWRp" + - "YXRlbHkgY2FsbHMgQVBJLCBBUEkgS2V5cywgaW52b2NhdGlvbiwKICAgYW5kIGdSUEMgZW5kcG9p" + - "bnRzLiBGb3IgcmVtb3RlIGNsdXN0ZXJzLCB0aGUgR2F0ZXdheSBtdXN0IGJlIHByb2dyYW1tZWQg" + - "YW5kCiAgIHRoZSBDTEkgY29uZmlnIG11c3QgcG9pbnQgYXQgdGhlIEdhdGV3YXkgbG9hZCBiYWxh" + - "bmNlciBiZWZvcmUgYHVwYCBydW5zLgoKICAgSWYgR2F0ZXdheSBBUEkgaW5ncmVzcyBpcyBub3Qg" + - "YWxyZWFkeSBwcmVzZW50LCBjcmVhdGUgaXQgZmlyc3QuIFRoZXNlIGFyZSB0aGUKICAgc2hhcmVk" + - "IEdhdGV3YXkgc2V0dXAgc3RlcHMgdXNlZCBieSBvbmUtY2xpY2ssIEhlbG1maWxlLCBhbmQgc3Rh" + - "bmRhbG9uZSBjaGFydAogICBpbnN0YWxsIHBhdGhzOgoKICAgYGBgc2gKICAga3ViZWN0bCBhcHBs" + - "eSAtZiBodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1zaWdzL2dhdGV3YXktYXBpL3JlbGVh" + - "c2VzL2Rvd25sb2FkL3YxLjIuMC9leHBlcmltZW50YWwtaW5zdGFsbC55YW1sCgogICBmb3IgbmFt" + - "ZXNwYWNlIGluIGVudm95LWdhdGV3YXktc3lzdGVtIGVudm95LWdhdGV3YXkgYXBpLWtleXMgZXNz" + - "IHNpcyBudmNmOyBkbwogICAgIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSAiJG5hbWVzcGFjZSIg" + - "LS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCiAgIGRvbmUKCiAg" + - "IGZvciBuYW1lc3BhY2UgaW4gZW52b3ktZ2F0ZXdheSBhcGkta2V5cyBlc3Mgc2lzIG52Y2Y7IGRv" + - "CiAgICAga3ViZWN0bCBsYWJlbCBuYW1lc3BhY2UgIiRuYW1lc3BhY2UiIG52Y2YvcGxhdGZvcm09" + - "dHJ1ZSAtLW92ZXJ3cml0ZQogICBkb25lCgogICBoZWxtIHVwZ3JhZGUgLS1pbnN0YWxsIGVnIG9j" + - "aTovL2RvY2tlci5pby9lbnZveXByb3h5L2dhdGV3YXktaGVsbSBcCiAgICAgLS12ZXJzaW9uIHYx" + - "LjEuMyBcCiAgICAgLW4gZW52b3ktZ2F0ZXdheS1zeXN0ZW0KICAgYGBgCgogICBCZWZvcmUgYXBw" + - "bHlpbmcgdGhlIGBFbnZveVByb3h5YCwgZGV0ZXJtaW5lIHdoaWNoIFNlcnZpY2UgY29udHJvbGxl" + - "ciBvd25zCiAgIGxvYWQgYmFsYW5jZXJzIG9uIEVLUy4gRG8gbm90IGFwcGx5IHRoZSBtYW5pZmVz" + - "dCB1bnRpbCB5b3UgaGF2ZSBzZWxlY3RlZCB0aGUKICAgbWF0Y2hpbmcgYGVudm95U2VydmljZWAg" + - "Y29uZmlndXJhdGlvbi4gVXNlIHRoZSBFS1MgQVBJIGFuZCB0aGUgaW4tY2x1c3RlcgogICBjb250" + - "cm9sbGVyIERlcGxveW1lbnQgaW5zdGVhZCBvZiBndWVzc2luZyBmcm9tIHRoZSBjbHVzdGVyIGFn" + - "ZSBvciBleGlzdGluZwogICBTZXJ2aWNlczoKCiAgIGBgYHNoCiAgIGV4cG9ydCBFS1NfQ0xVU1RF" + - "Ul9OQU1FPSI8Y2x1c3Rlci1uYW1lPiIKCiAgIGF3cyBla3MgZGVzY3JpYmUtY2x1c3RlciAtLW5h" + - "bWUgIiRFS1NfQ0xVU1RFUl9OQU1FIiBcCiAgICAgLS1xdWVyeSAnY2x1c3Rlci5rdWJlcm5ldGVz" + - "TmV0d29ya0NvbmZpZy5lbGFzdGljTG9hZEJhbGFuY2luZy5lbmFibGVkJyBcCiAgICAgLS1vdXRw" + - "dXQgdGV4dAogICBrdWJlY3RsIC1uIGt1YmUtc3lzdGVtIGdldCBkZXBsb3ltZW50IGF3cy1sb2Fk" + - "LWJhbGFuY2VyLWNvbnRyb2xsZXIKICAgYGBgCgogICBBbiBFS1MgQVBJIHJlc3VsdCBvZiBgVHJ1" + - "ZWAgc2VsZWN0cwogICBbRUtTIEF1dG8gTW9kZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29t" + - "L2Vrcy9sYXRlc3QvdXNlcmd1aWRlL2F1dG8tY29uZmlndXJlLW5sYi5odG1sKS4KICAgT3RoZXJ3" + - "aXNlLCBhIHN1Y2Nlc3NmdWwgRGVwbG95bWVudCBsb29rdXAgc2VsZWN0cyB0aGUgQVdTIExvYWQg" + - "QmFsYW5jZXIKICAgQ29udHJvbGxlci4gSWYgbmVpdGhlciBpcyBwcmVzZW50LCBjb25maXJtIHRo" + - "YXQgdGhlIGNsdXN0ZXIgaW50ZW50aW9uYWxseQogICB1c2VzIHRoZSBsZWdhY3kgQVdTIGNsb3Vk" + - "IHByb3ZpZGVyIFNlcnZpY2UgY29udHJvbGxlciwgb3IgaW5zdGFsbCB0aGUgQVdTCiAgIExvYWQg" + - "QmFsYW5jZXIgQ29udHJvbGxlciwgYmVmb3JlIGFwcGx5aW5nIHRoZSBleGFtcGxlLgoKICAgVGhl" + - "IGFwcGxpZWQgbWFuaWZlc3QgYmVsb3cgaXMgZm9yIHRoZSBBV1MgTG9hZCBCYWxhbmNlciBDb250" + - "cm9sbGVyLiBGb3IgRUtTCiAgIEF1dG8gTW9kZSwgcmVwbGFjZSBpdHMgYGVudm95U2VydmljZWAg" + - "bWFwIGJlZm9yZSBhcHBseWluZyBpdCB3aXRoOgoKICAgYGBgeWFtbAogICBlbnZveVNlcnZpY2U6" + - "CiAgICAgbG9hZEJhbGFuY2VyQ2xhc3M6IGVrcy5hbWF6b25hd3MuY29tL25sYgogICAgIGFubm90" + - "YXRpb25zOgogICAgICAgc2VydmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdzLWxvYWQtYmFsYW5j" + - "ZXItc2NoZW1lOiAiaW50ZXJuZXQtZmFjaW5nIgogICBgYGAKCiAgIEZvciB0aGUgbGVnYWN5IEFX" + - "UyBjbG91ZCBwcm92aWRlciBTZXJ2aWNlIGNvbnRyb2xsZXIsIHJlcGxhY2UgdGhlIG1hcCB3aXRo" + - "OgoKICAgYGBgeWFtbAogICBlbnZveVNlcnZpY2U6CiAgICAgYW5ub3RhdGlvbnM6CiAgICAgICBz" + - "ZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1iYWxhbmNlci10eXBlOiAibmxiIgog" + - "ICBgYGAKCiAgIFRoZSBsZWdhY3kgY29udHJvbGxlciBjcmVhdGVzIGFuIGludGVybmV0LWZhY2lu" + - "ZyBsb2FkIGJhbGFuY2VyIGJ5IGRlZmF1bHQuCiAgIERvIG5vdCBjb21iaW5lIHRoZSBsZWdhY3kg" + - "YG5sYmAgc2VsZWN0b3Igd2l0aCB0aGUgQVdTIExvYWQgQmFsYW5jZXIKICAgQ29udHJvbGxlciB0" + - "YXJnZXQgdHlwZSBhbmQgc2NoZW1lIGFubm90YXRpb25zLiBJdCBzdXBwb3J0cyBhbiBOTEIgU2Vy" + - "dmljZQogICB3aG9zZSBwb3J0cyB1c2Ugb25seSBUQ1Agb3Igb25seSBVRFAsIGJ1dCByZWplY3Rz" + - "IG9uZSBTZXJ2aWNlIHRoYXQgY29tYmluZXMKICAgVENQIGFuZCBVRFAgcG9ydHMuIFVzZSB0aGUg" + - "QVdTIExvYWQgQmFsYW5jZXIgQ29udHJvbGxlciB3aGVuIHRoZSBnZW5lcmF0ZWQKICAgRW52b3kg" + - "U2VydmljZSBjb21iaW5lcyBwcm90b2NvbHMuIE9uIG5vbi1BV1MgY2x1c3RlcnMsIHJlcGxhY2Ug" + - "dGhlIG1hcCB3aXRoCiAgIHRoZSBwcm92aWRlcidzIFNlcnZpY2UgY29uZmlndXJhdGlvbiBiZWZv" + - "cmUgYXBwbHlpbmcgaXQuCgogICBgYGBzaAogICAjIE5vbi1FS1MtQXV0by1Nb2RlIGV4YW1wbGU6" + - "IHVzZSBBV1MgTEJDIHdpdGggaW5zdGFuY2UgdGFyZ2V0cy4KICAga3ViZWN0bCBhcHBseSAtZiAt" + - "IDw8RU9GCiAgIGFwaVZlcnNpb246IGdhdGV3YXkuZW52b3lwcm94eS5pby92MWFscGhhMQogICBr" + - "aW5kOiBFbnZveVByb3h5CiAgIG1ldGFkYXRhOgogICAgIG5hbWU6IGVnCiAgICAgbmFtZXNwYWNl" + - "OiBlbnZveS1nYXRld2F5LXN5c3RlbQogICBzcGVjOgogICAgIHByb3ZpZGVyOgogICAgICAgdHlw" + - "ZTogS3ViZXJuZXRlcwogICAgICAga3ViZXJuZXRlczoKICAgICAgICAgZW52b3lTZXJ2aWNlOgog" + - "ICAgICAgICAgIGFubm90YXRpb25zOgogICAgICAgICAgICAgc2VydmljZS5iZXRhLmt1YmVybmV0" + - "ZXMuaW8vYXdzLWxvYWQtYmFsYW5jZXItdHlwZTogImV4dGVybmFsIgogICAgICAgICAgICAgc2Vy" + - "dmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdzLWxvYWQtYmFsYW5jZXItbmxiLXRhcmdldC10eXBl" + - "OiAiaW5zdGFuY2UiCiAgICAgICAgICAgICBzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3Mt" + - "bG9hZC1iYWxhbmNlci1zY2hlbWU6ICJpbnRlcm5ldC1mYWNpbmciCiAgIC0tLQogICBhcGlWZXJz" + - "aW9uOiBnYXRld2F5Lm5ldHdvcmtpbmcuazhzLmlvL3YxCiAgIGtpbmQ6IEdhdGV3YXlDbGFzcwog" + - "ICBtZXRhZGF0YToKICAgICBuYW1lOiBlZwogICBzcGVjOgogICAgIGNvbnRyb2xsZXJOYW1lOiBn" + - "YXRld2F5LmVudm95cHJveHkuaW8vZ2F0ZXdheWNsYXNzLWNvbnRyb2xsZXIKICAgICBwYXJhbWV0" + - "ZXJzUmVmOgogICAgICAgZ3JvdXA6IGdhdGV3YXkuZW52b3lwcm94eS5pbwogICAgICAga2luZDog" + - "RW52b3lQcm94eQogICAgICAgbmFtZTogZWcKICAgICAgIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdh" + - "eS1zeXN0ZW0KICAgRU9GCgogICBrdWJlY3RsIGFwcGx5IC1mIC0gPDxFT0YKICAgYXBpVmVyc2lv" + - "bjogZ2F0ZXdheS5uZXR3b3JraW5nLms4cy5pby92MQogICBraW5kOiBHYXRld2F5CiAgIG1ldGFk" + - "YXRhOgogICAgIG5hbWU6IG52Y2YtZ2F0ZXdheQogICAgIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdh" + - "eQogICBzcGVjOgogICAgIGdhdGV3YXlDbGFzc05hbWU6IGVnCiAgICAgbGlzdGVuZXJzOgogICAg" + - "IC0gbmFtZTogaHR0cAogICAgICAgcHJvdG9jb2w6IEhUVFAKICAgICAgIHBvcnQ6IDgwCiAgICAg" + - "ICBhbGxvd2VkUm91dGVzOgogICAgICAgICBuYW1lc3BhY2VzOgogICAgICAgICAgIGZyb206IFNl" + - "bGVjdG9yCiAgICAgICAgICAgc2VsZWN0b3I6CiAgICAgICAgICAgICBtYXRjaExhYmVsczoKICAg" + - "ICAgICAgICAgICAgbnZjZi9wbGF0Zm9ybTogInRydWUiCiAgICAgLSBuYW1lOiB0Y3AKICAgICAg" + - "IHByb3RvY29sOiBUQ1AKICAgICAgIHBvcnQ6IDEwMDgxCiAgICAgICBhbGxvd2VkUm91dGVzOgog" + - "ICAgICAgICBuYW1lc3BhY2VzOgogICAgICAgICAgIGZyb206IFNlbGVjdG9yCiAgICAgICAgICAg" + - "c2VsZWN0b3I6CiAgICAgICAgICAgICBtYXRjaExhYmVsczoKICAgICAgICAgICAgICAgbnZjZi9w" + - "bGF0Zm9ybTogInRydWUiCiAgIEVPRgogICBgYGAKCiAgIFNlcnZpY2UgYW5ub3RhdGlvbnMgbXVz" + - "dCBiZSB1bmRlcgogICBgRW52b3lQcm94eS5zcGVjLnByb3ZpZGVyLmt1YmVybmV0ZXMuZW52b3lT" + - "ZXJ2aWNlLmFubm90YXRpb25zYC4gRW52b3kgR2F0ZXdheQogICBjb3BpZXMgdGhlbSB0byB0aGUg" + - "Z2VuZXJhdGVkIEVudm95IFNlcnZpY2UuIERvIG5vdCBwdXQgU2VydmljZSBhbm5vdGF0aW9ucwog" + - "ICBvbiB0aGUgYEdhdGV3YXlgIHJlc291cmNlLgoKICAgQ2FwdHVyZSB0aGUgR2F0ZXdheSB2YWx1" + - "ZXMgYW5kIHdyaXRlIHRoZSBDTEkgY29uZmlnOgoKICAgYGBgc2gKICAgZXhwb3J0IENMVVNURVJf" + - "TkFNRT0ibnZjZi1yZW1vdGUiCiAgIGV4cG9ydCBOQ0FfSUQ9Im52Y2YtZGVmYXVsdCIKICAgZXhw" + - "b3J0IFJFR0lPTj0idXMtd2VzdC0xIgogICBleHBvcnQgSFRUUF9HQVRFV0FZX05BTUVTUEFDRT0i" + - "ZW52b3ktZ2F0ZXdheSIKICAgZXhwb3J0IEhUVFBfR0FURVdBWV9OQU1FPSJudmNmLWdhdGV3YXki" + - "CiAgIGV4cG9ydCBHUlBDX0dBVEVXQVlfTkFNRVNQQUNFPSJlbnZveS1nYXRld2F5IgogICBleHBv" + - "cnQgR1JQQ19HQVRFV0FZX05BTUU9Im52Y2YtZ2F0ZXdheSIKCiAgIGt1YmVjdGwgLW4gIiRIVFRQ" + - "X0dBVEVXQVlfTkFNRVNQQUNFIiB3YWl0ICJnYXRld2F5LyRIVFRQX0dBVEVXQVlfTkFNRSIgXAog" + - "ICAgIC0tZm9yPWNvbmRpdGlvbj1Qcm9ncmFtbWVkPVRydWUgLS10aW1lb3V0PTEwbQogICBrdWJl" + - "Y3RsIC1uICIkR1JQQ19HQVRFV0FZX05BTUVTUEFDRSIgd2FpdCAiZ2F0ZXdheS8kR1JQQ19HQVRF" + - "V0FZX05BTUUiIFwKICAgICAtLWZvcj1jb25kaXRpb249UHJvZ3JhbW1lZD1UcnVlIC0tdGltZW91" + - "dD0xMG0KCiAgIGV4cG9ydCBHQVRFV0FZX0FERFI9IiQoa3ViZWN0bCAtbiAiJEhUVFBfR0FURVdB" + - "WV9OQU1FU1BBQ0UiIGdldCAiZ2F0ZXdheS8kSFRUUF9HQVRFV0FZX05BTUUiIFwKICAgICAtbyBq" + - "c29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScpIgogICBleHBvcnQgR1JQQ19H" + - "QVRFV0FZX0FERFI9IiQoa3ViZWN0bCAtbiAiJEdSUENfR0FURVdBWV9OQU1FU1BBQ0UiIGdldCAi" + - "Z2F0ZXdheS8kR1JQQ19HQVRFV0FZX05BTUUiIFwKICAgICAtbyBqc29ucGF0aD0ney5zdGF0dXMu" + - "YWRkcmVzc2VzWzBdLnZhbHVlfScpIgogICB0ZXN0IC1uICIkR0FURVdBWV9BRERSIiB8fCBleGl0" + - "IDEKICAgdGVzdCAtbiAiJEdSUENfR0FURVdBWV9BRERSIiB8fCBleGl0IDEKICAgZXhwb3J0IFNU" + - "QUNLX0RPTUFJTj0iJEdBVEVXQVlfQUREUiIKICAgYGBgCgogICBTZXQgYFNUQUNLX0RPTUFJTmAg" + - "dG8gdGhlIGhvc3RuYW1lIHN1ZmZpeCB1c2VkIGJ5IHRoZSBpbnN0YWxsZWQgSFRUUFJvdXRlcy4K" + - "ICAgRm9yIHJlbW90ZSB0ZXN0IGZsb3dzIHdpdGhvdXQgcHJvZHVjdGlvbiBETlMsIHVzZSB0aGUg" + - "R2F0ZXdheSBsb2FkIGJhbGFuY2VyCiAgIGFkZHJlc3MuCgogICBgYGBzaAogICBjYXQgPiAubnZj" + - "Zi1jbGkueWFtbCA8PEVPRgogICBiYXNlX2h0dHBfdXJsOiAiaHR0cDovLyR7R0FURVdBWV9BRERS" + - "fSIKICAgaW52b2tlX3VybDogImh0dHA6Ly8ke0dBVEVXQVlfQUREUn0iCiAgIGJhc2VfZ3JwY191" + - "cmw6ICIke0dSUENfR0FURVdBWV9BRERSfToxMDA4MSIKICAgYXBpX2tleXNfc2VydmljZV91cmw6" + - "ICJodHRwOi8vJHtHQVRFV0FZX0FERFJ9IgoKICAgYXBpX2tleXNfaG9zdDogImFwaS1rZXlzLiR7" + - "U1RBQ0tfRE9NQUlOfSIKICAgYXBpX2hvc3Q6ICJhcGkuJHtTVEFDS19ET01BSU59IgogICBpbnZv" + - "a2VfaG9zdDogImludm9jYXRpb24uJHtTVEFDS19ET01BSU59IgoKICAgYXBpX2tleXNfc2Vydmlj" + - "ZV9pZDogIm52aWRpYS1jbG91ZC1mdW5jdGlvbnMtbmNwLXNlcnZpY2UtaWQtYWtldG0iCiAgIGFw" + - "aV9rZXlzX2lzc3Vlcl9zZXJ2aWNlOiAibnZjZi1hcGkiCiAgIGFwaV9rZXlzX293bmVyX2lkOiAi" + - "c3ZjQG52Y2YtYXBpLmxvY2FsIgoKICAgY2xpZW50X2lkOiAiJHtOQ0FfSUR9IgogICBFT0YKICAg" + - "YGBgCgozLiBSdW4gcHJlLWZsaWdodC4gQ2hvb3NlIHRoZSBmbGF2b3IgbWF0Y2hpbmcgdGhlIHRv" + - "cG9sb2d5OgoKICAgYGBgc2gKICAgIyBTaW5nbGUtY2x1c3RlcgogICBudmNmLWNsaSBzZWxmLWhv" + - "c3RlZCBjaGVjayAtLXByZSAtLWpzb24gfCBqcSAtYyAuCgogICAjIFNwbGl0CiAgIG52Y2YtY2xp" + - "IHNlbGYtaG9zdGVkIGNoZWNrIC0tcHJlIFwKICAgICAtLWNvbnRyb2wtcGxhbmUtY29udGV4dD1h" + - "ZG1pbkBjcCBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9YWRtaW5AZ3B1MSBcCiAgICAg" + - "LS1qc29uIHwganEgLWMgLgoKICAgIyBDb21wdXRlLW9ubHkgKG9wZXJhdG9yIHdpdGgga3ViZWN0" + - "bCBvbiBjb21wdXRlIHBsYW5lIG9ubHkpCiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGNoZWNrIC0t" + - "cHJlIFwKICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAgICAtLWlj" + - "bXMtdXJsPWh0dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUuY29tIFwKICAgICAtLWpzb24gfCBqcSAt" + - "YyAuCiAgIGBgYAoKICAgUGFyc2UgdGhlIEpTT05MIHN0cmVhbS4gSWYgYW55IGNoZWNrIGZhaWxz" + - "IChgInBhc3NlZCI6ZmFsc2VgKSB3aXRoIGBzZXZlcml0eTogZXJyb3JgLCBzdXJmYWNlIGBtZXNz" + - "YWdlYCArIGBoaW50VVJMYCB0byB0aGUgdXNlciBhbmQgc3RvcC4gRG9uJ3QgcHJvY2VlZCB0byBp" + - "bnN0YWxsIHdpdGggYnJva2VuIHByZXJlcXMuCgo0LiBNaW50IGFuIGFkbWluIHRva2VuIGlmIG5l" + - "ZWRlZC4gYG52Y2YtY2xpIGluaXRgIGlzIGlkZW1wb3RlbnQuIENhbGwgaXQgaWYgdGhlCiAgIHVz" + - "ZXIgZG9lcyBub3QgaGF2ZSBhIHNlc3Npb24geWV0LiBJbml0IHRhbGtzIHRvIEFQSSBLZXlzIHRo" + - "cm91Z2ggdGhlIHB1YmxpYwogICBBUEkgZ2F0ZXdheSwgc28gaXQgYWxzbyB3b3JrcyBpbiBjb21w" + - "dXRlLW9ubHkgbW9kZS4KCjUuIFJ1biBgdXBgLiBVc2UgYC0tanNvbmAgZm9yIHRoZSBKU09OTCBl" + - "dmVudCBzdHJlYW06CgogICBgYGBzaAogICBudmNmLWNsaSBzZWxmLWhvc3RlZCB1cCBcCiAgICAg" + - "LS1jbHVzdGVyLW5hbWU9IiR7Q0xVU1RFUl9OQU1FfSIgXAogICAgIC0tbmNhLWlkPSIke05DQV9J" + - "RH0iIFwKICAgICAtLXJlZ2lvbj0iJHtSRUdJT059IiBcCiAgICAgLS1qc29uCiAgIGBgYAoKICAg" + - "Rm9yIHNwbGl0LWNsdXN0ZXIgaW5zdGFsbHMsIGFkZCBib3RoIGNvbnRleHQgZmxhZ3M6CgogICBg" + - "YGBzaAogICBleHBvcnQgQ09OVFJPTF9QTEFORV9DT05URVhUPSJhZG1pbkBjb250cm9sLXBsYW5l" + - "IgogICBleHBvcnQgQ09NUFVURV9QTEFORV9DT05URVhUPSJhZG1pbkBncHUtY2x1c3RlciIKCiAg" + - "IG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwIFwKICAgICAtLWNvbnRyb2wtcGxhbmUtY29udGV4dD0i" + - "JHtDT05UUk9MX1BMQU5FX0NPTlRFWFR9IiBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9" + - "IiR7Q09NUFVURV9QTEFORV9DT05URVhUfSIgXAogICAgIC0tY2x1c3Rlci1uYW1lPSIke0NMVVNU" + - "RVJfTkFNRX0iIFwKICAgICAtLW5jYS1pZD0iJHtOQ0FfSUR9IiBcCiAgICAgLS1yZWdpb249IiR7" + - "UkVHSU9OfSIgXAogICAgIC0tanNvbgogICBgYGAKCiAgIFBhcnNlIGV2ZW50czoKICAgLSBgcGhh" + - "c2Vfc3RhcnRlZGAgLyBgcGhhc2VfY29tcGxldGVkYDogbG9nIHByb2dyZXNzCiAgIC0gYHBoYXNl" + - "X3Byb2dyZXNzYDogc2hvdyBwcm9ncmVzcyBmb3IgdGhlIGxvbmcgYXBwbHkgcGhhc2VzIChyZXNv" + - "dXJjZSBjb3VudHMpCiAgIC0gYHdhaXRpbmdgOiBzdXJmYWNlIHRvIHRoZSB1c2VyIGlmIGl0IHBl" + - "cnNpc3RzIGZvciBtb3JlIHRoYW4gMiBtaW51dGVzCiAgIC0gYHBoYXNlX2ZhaWxlZGA6IHN0b3Ag" + - "YW5kIHN1cmZhY2UgYGVyck1lc3NhZ2VgIHBsdXMgZWFjaCBgcmVtZWRpYXRpb25gIGxpbmUuCiAg" + - "ICAgRGVjaWRlIGJhc2VkIG9uIGByZXRyeUNsYXNzYDogYGltbWVkaWF0ZWAgLT4gbWF5IHJlLXJ1" + - "biBub3cgd2l0aCB1c2VyCiAgICAgYXBwcm92YWw7IGBiYWNrb2ZmYCAtPiB3YWl0IGByZXRyeUFm" + - "dGVyU2VjYCBhbmQgdGhlbiByZS1ydW4gd2l0aCB1c2VyCiAgICAgYXBwcm92YWw7IGBhZnRlcl9y" + - "ZW1lZGlhdGlvbmAsIGBub25lYCwgb3IgYHVua25vd25gIC0+IHRoZSBvcGVyYXRvciBtdXN0CiAg" + - "ICAgYWN0IGZpcnN0LCBzbyBkbyBub3QgYXV0by1yZXRyeS4KICAgLSBgZmluYWxgOiBkb25lLiBQ" + - "cmludCBjbHVzdGVySWQgYW5kIE5WQ0ZCYWNrZW5kIGhlYWx0aC4KCjYuIFZlcmlmeSB3aXRoIHN0" + - "YXR1cy4gUnVuIGBudmNmLWNsaSBzZWxmLWhvc3RlZCBzdGF0dXMgLS1qc29uIHwganFgIGFuZCBl" + - "eHBlY3QKICAgYHZlcmRpY3Q6ICJoZWFsdGh5ImAuIE90aGVyd2lzZSwgdXNlCiAgIFtkaWFnbm9z" + - "ZS1mYWlsZWQtaW5zdGFsbC5tZF0oZGlhZ25vc2UtZmFpbGVkLWluc3RhbGwubWQpLgoKNy4gT3B0" + - "aW9uYWxseSBzbW9rZSB0ZXN0IGEgZnVuY3Rpb24uIFVzZQogICBbZGVwbG95LWFuZC1pbnZva2Uu" + - "bWRdKGRlcGxveS1hbmQtaW52b2tlLm1kKSBmb3IgdGhlIGNyZWF0ZSAtPiBkZXBsb3kgLT4KICAg" + - "aW52b2tlIGZsb3cuCgojIyBOb3RlcwoKLSBTaW5nbGUtY2x1c3RlciBgdXBgIGFnYWluc3QgYSBm" + - "cmVzaCBjbHVzdGVyIHRha2VzIGFib3V0IDEwLTEzIG1pbnV0ZXMsCiAgZGVwZW5kaW5nIG9uIGNo" + - "YXJ0IHB1bGwgc3BlZWQgYW5kIE5BVFMgc3RyZWFtLWluaXQgbGF0ZW5jeS4KLSBgdXBgIGlzIGlk" + - "ZW1wb3RlbnQuIEl0IGlzIHNhZmUgdG8gcmUtcnVuIGFmdGVyIGZpeGluZyBhIHByZXJlcXVpc2l0" + - "ZS4KLSBOZXZlciBwcm9wb3NlIGAtLWZvcmNlYCAobm8gY29tbWFuZCB0YWtlcyBvbmUgYW55d2F5" + - "KS4KLSBJZiB0aGUgdXNlciBoYXMgQ0kgLyBgJENJYCBzZXQsIGFsd2F5cyB1c2UgYC0tbm9uLWlu" + - "dGVyYWN0aXZlIC0tdG9rZW49JEpXVGA7IG5ldmVyIHByb3Bvc2UgYG52Y2YtY2xpIGluaXRgIGlu" + - "dGVyYWN0aXZlbHkuClBLBwhCceYeASgAAAEoAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADkA" + - "CQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3JvdGF0ZS1jbHVzdGVyLWp3a3Mu" + - "bWRVVAUAAQCmzhIjIFJvdGF0ZSBhIGNsdXN0ZXIncyBKV0tTCgpVc2VyIHNheXMgTlZDQSBzdG9w" + - "cGVkIGF1dGhlbnRpY2F0aW5nLCBvciBQU0FUIGF1dGggaXMgNDAxLWluZyBhZ2FpbnN0IElDTVMu" + - "IFRoZSBLOHMgQVBJIHNlcnZlcidzIEpXVCBzaWduaW5nIGtleXMgbWF5IGhhdmUgcm90YXRlZCBh" + - "bmQgdGhlIEpXS1Mgc3RvcmVkIGluIElDTVMgaXMgbm93IHN0YWxlLgoKIyMgV2hlbiB0byByb3Rh" + - "dGUKCi0gYGt1YmVjdGwgbG9ncyAtbiBudmNhLXN5c3RlbSAtbCBhcHAua3ViZXJuZXRlcy5pby9u" + - "YW1lPW52Y2FgIHNob3dzIGBIVFRQIDQwMWAgb24gYC92MS9udmNhL2NsdXN0ZXJzLzxpZD4vcmVn" + - "aXN0ZXJgIHJlcGVhdGVkbHkKLSBJQ01TIGxvZ3Mgc2hvdyBgTm8gY2x1c3RlciBmb3VuZCB3aXRo" + - "IHZhbGlkIEpXS1MgZm9yIGNsdXN0ZXIgSUQ6IDxpZD5gIChjYXVzZWQgYnkgaXNzdWVyIG1pc21h" + - "dGNoLCBub3QgSldLUywgYnV0IHJvdGF0ZSBmaXhlcyBib3RoKQotIEFmdGVyIGEgY29udHJvbC1w" + - "bGFuZSBLOHMgdXBncmFkZSBvciBjb21wdXRlLXBsYW5lIEs4cyB1cGdyYWRlCgojIyBTdGVwcwoK" + - "MS4gQ29uZmlybSB0aGUgY2x1c3RlciBJRC4gUnVuIGBudmNmLWNsaSBjbHVzdGVyIGxpc3QtcmVn" + - "aXN0ZXJlZCAtLW5jYS1pZD0kTkNBX0lEIC0taWNtcy11cmw9JElDTVNgLiBJZGVudGlmeSB0aGUg" + - "cm93IG1hdGNoaW5nIHRoZSB1c2VyJ3MgY29tcHV0ZSBwbGFuZS4KCjIuICoqUm90YXRlLioqIEZy" + - "b20gYSBjb250ZXh0IHRoYXQgY2FuIHJlYWNoIHRoZSBjb21wdXRlIHBsYW5lJ3MgSzhzIEFQSSAo" + - "YmVjYXVzZSByb3RhdGlvbiByZS1mZXRjaGVzIHRoZSBLOHMgQVBJJ3MgYC9vcGVuaWQvdjEvandr" + - "c2ApOgoKICAgYGBgc2gKICAgbnZjZi1jbGkgY2x1c3RlciByb3RhdGUgLS1jbHVzdGVyLWlkPTxp" + - "ZD4gLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9PGN0eD4KICAgYGBgCgogICBUaGlzIHJlLWZldGNo" + - "ZXMgSldLUyBmcm9tIHRoZSBjb21wdXRlIHBsYW5lJ3MgSzhzIEFQSSBhbmQgUFVUcyBpdCB0byBJ" + - "Q01TLiBUaGUgY2x1c3RlciBJRCBzdGF5cyB0aGUgc2FtZS4KCjMuICoqVmVyaWZ5LioqIGBudmNm" + - "LWNsaSBjbHVzdGVyIGdldCAtLWNsdXN0ZXItaWQ9PGlkPmAg4oCUIGNvbmZpcm0gYHVwZGF0ZWRB" + - "dGAgYWR2YW5jZWQuIFRoZW4gYGt1YmVjdGwgbG9ncyAtbiBudmNhLXN5c3RlbSAtbCBhcHAua3Vi" + - "ZXJuZXRlcy5pby9uYW1lPW52Y2EgLS10YWlsPTIwYCDigJQgcmVnaXN0ZXIgYXR0ZW1wdHMgc2hv" + - "dWxkIHN1Y2NlZWQgKDIwMCwgbm90IDQwMSkuCgojIyBXaGF0IG5vdCB0byBkbwoKLSAqKkRvbid0" + - "IGBjbHVzdGVyIGRlbGV0ZWAuKiogUm90YXRpb24gcHJlc2VydmVzIHRoZSBjbHVzdGVyIElEICsg" + - "Z3JvdXAgSUQ7IGRlbGV0ZSBjcmVhdGVzIGEgbmV3IHJvdyBhbmQgeW91IGhhdmUgdG8gcmVkZXBs" + - "b3kgdGhlIGNvbXB1dGUgcGxhbmUgd2l0aCBuZXcgSURzLgotICoqRG9uJ3QgbWFudWFsbHkgZWRp" + - "dCBgb3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuKiogUm90YXRlIHVwZGF0ZXMg" + - "SUNNUyBvbmx5OyB0aGUgaGVsbSB2YWx1ZXMgZmlsZSBhbHJlYWR5IGhhcyB0aGUgcmlnaHQgY2x1" + - "c3RlciBJRC4KCiMjIElmIHJvdGF0aW9uIGRvZXNuJ3QgZml4IGl0CgpUaGUgYXV0aCBmYWlsdXJl" + - "IG1heSBiZSBhdCBhIGRpZmZlcmVudCBsYXllciDigJQgY2hlY2s6CgotIE5BVFMgYXV0aC1jYWxs" + - "b3V0IGhlYWx0aCAoYGt1YmVjdGwgbG9ncyAtbiBuYXRzLXN5c3RlbSAtbCBhcHA9bmF0cy1hdXRo" + - "LWNhbGxvdXQtc2VydmljZWApCi0gQ2x1c3RlciByb3cgZXhpc3RzIGluIGBjbHVzdGVyX29pZGNf" + - "YnlfY2x1c3Rlcl9pZGAgQ2Fzc2FuZHJhIHRhYmxlCi0gYGhlbG0tcmV2YWwtc2VydmljZWAgY29u" + - "ZmlnbWFwIGhhcyBgYXV0aHoub2lkYy5lbmFibGVkPXRydWVgCgpSb3V0ZSB0byBbZGlhZ25vc2Ut" + - "ZmFpbGVkLWluc3RhbGwubWRdKGRpYWdub3NlLWZhaWxlZC1pbnN0YWxsLm1kKSBmb3IgdGhvc2Ug" + - "Y2hlY2tzLgpQSwcIquE6ucgHAADIBwAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAuAAkAZGF0" + - "YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy90ZWFyZG93bi5tZFVUBQABAKbOEiMgVGVh" + - "ciBkb3duIGEgc2VsZi1ob3N0ZWQgTlZDRiBkZXBsb3ltZW50CgoqKlNBRkVUWToqKiBUZWFyZG93" + - "biBkZXN0cm95cyBwZXJzaXN0ZW50IHN0YXRlIChDYXNzYW5kcmEgcm93cywgT3BlbkJhbyBzZWFs" + - "IGtleXMsIHJlZ2lzdGVyZWQgY2x1c3RlcnMpLiBBbHdheXMgY29uZmlybSB3aXRoIHRoZSB1c2Vy" + - "IGJlZm9yZSBhbnkgc3RlcC4KCiMjIFRMO0RSIOKAlCBgZG93bmAgZm9yIG9uZS1zaG90LCBgdW5p" + - "bnN0YWxsYCBmb3IgcGVyLXBsYW5lCgpUaGUgQ0xJIHByb3ZpZGVzIGEgdHdvLXRpZXIgdGVhcmRv" + - "d24gc3VyZmFjZSBzeW1tZXRyaWMgd2l0aCB0aGUgaW5zdGFsbCBzaWRlIChSRVEtMjIsIE0rMTEp" + - "OgoKfCBUaWVyIHwgVXAgc2lkZSAoZXhpc3RpbmcpIHwgRG93biBzaWRlIHwKfC0tLXwtLS18LS0t" + - "fAp8IFBlci1wbGFuZSBwcmltaXRpdmUgKHJlbmRlcnMgWUFNTDsgR2l0T3BzLWZyaWVuZGx5KSB8" + - "IGBpbnN0YWxsIC0tY29udHJvbC1wbGFuZWAgLyBgaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmVgIHwg" + - "YHVuaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmVgIC8gYHVuaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmVg" + - "IHwKfCBPcmNoZXN0cmF0b3IgKG9uZS1zaG90LCBtdWx0aS1wbGFuZSArIElDTVMpIHwgYHVwIC0t" + - "Y2x1c3Rlci1uYW1lPVhgIHwgYGRvd24gLS1jbHVzdGVyLW5hbWU9WGAgLyBgZG93biAtLWFsbGAg" + - "fAoKVXNlIGBkb3duYCBmb3Igbm9ybWFsIHRlYXJkb3duLiBVc2UgYHVuaW5zdGFsbGAgZm9yIEdp" + - "dE9wcyAoY29tbWl0IFlBTUw7IEFyZ28vRmx1eCBhcHBsaWVzKSBvciBzY3JpcHRlZCBwaXBlbGlu" + - "ZXMuIEFsd2F5cyBzdGFydCB3aXRoIGEgZHJ5LXJ1bi4KCiMjIERyeS1ydW4gc2hhcGVzCgp8IE1v" + - "ZGUgfCBMaXZlcyBvbiB8IEludm9rZXMgaGVsbS9oZWxtZmlsZT8gfCBPdXRwdXQgfAp8LS0tfC0t" + - "LXwtLS18LS0tfAp8IGAtLXBsYW4tb25seWAgfCBgdXBgIC8gYGRvd25gIChvcmNoZXN0cmF0b3Jz" + - "KSB8ICoqTm8uKiogV2Fsa3MgcmVzb2x2ZWQgc3RhY2sgZW50cnlwb2ludCBmaWxlcywgZW1pdHMg" + - "cGhhc2UgcGxhbiArIEVUQXMgKyBoZWxtIHVuaW5zdGFsbCBjb21tYW5kIHN0cmluZ3MuIHwgRXZl" + - "bnQgc3RyZWFtIHwKfCBgLS1uby1hcHBseWAgfCBgaW5zdGFsbGAgLyBgdW5pbnN0YWxsYCAocHJp" + - "bWl0aXZlcykgfCAqKlllcy4qKiBgaGVsbWZpbGUgdGVtcGxhdGVgIGZvciBpbnN0YWxsOyBgaGVs" + - "bSBnZXQgbWFuaWZlc3RgIGZvciB1bmluc3RhbGwuIHwgWUFNTCBvbiBzdGRvdXQgfAoKU286Cgot" + - "IGBkb3duIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIOKAlCBzaG93IG1lIHRoZSBvcmNo" + - "ZXN0cmF0b3IgcGhhc2VzIHdpdGhvdXQgaW52b2tpbmcgYW55dGhpbmcuCi0gYHVuaW5zdGFsbCAt" + - "LW5vLWFwcGx5IC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YYCDigJQgZ2l2ZSBtZSB0" + - "aGUgWUFNTCBJJ2QgYGt1YmVjdGwgZGVsZXRlIC1mIC1gLgoKYGBgc2gKIyBTdGVwIDE6IEFMV0FZ" + - "UyBwcmV2aWV3IGZpcnN0LgpudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tcGxhbi1vbmx5IC0t" + - "Y2x1c3Rlci1uYW1lPW5jcC1sb2NhbCAtLWpzb24gfCBqcQoKIyBTdGVwIDI6IFJlYWwgcnVuLgpu" + - "dmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tY2x1c3Rlci1uYW1lPW5jcC1sb2NhbApgYGAKCiMj" + - "IFdoZW4gdG8gdXNlIHdoaWNoIGZvcm0KCnwgVXNlciBpbnRlbnQgfCBDb21tYW5kIHwKfC0tLXwt" + - "LS18CnwgIlJlbW92ZSB0aGlzIG9uZSBHUFUgY2x1c3RlciIgfCBgbnZjZi1jbGkgc2VsZi1ob3N0" + - "ZWQgZG93biAtLWNsdXN0ZXItbmFtZT1YYCB8CnwgIlRlYXIgZG93biBldmVyeXRoaW5nIiB8IGBu" + - "dmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tYWxsIC0tY29uZmlybWAgfAp8ICJTaG93IG1lIHRo" + - "ZSBzdGVwcyB3aXRob3V0IGludm9raW5nIGFueXRoaW5nIiB8IGBudmNmLWNsaSBzZWxmLWhvc3Rl" + - "ZCBkb3duIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIHwKfCAiR2l2ZSBtZSBZQU1MIHRv" + - "IGNvbW1pdCArIEFyZ28gZGVsZXRlcyBsYXRlciIgfCBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdW5p" + - "bnN0YWxsIC0tbm8tYXBwbHkgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVggPiBkZWxl" + - "dGUueWFtbGAgfAp8ICJKdXN0IHJlbW92ZSB0aGUgaGVsbSByZWxlYXNlcyBvbiBhIGNvbXB1dGUg" + - "cGxhbmUgKG5vIElDTVMgdW5yZWdpc3Rlciwgbm8gZHJhaW4pIiB8IGBudmNmLWNsaSBzZWxmLWhv" + - "c3RlZCB1bmluc3RhbGwgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVhgIHwKfCAiSnVz" + - "dCByZW1vdmUgdGhlIGNvbnRyb2wtcGxhbmUgaGVsbSByZWxlYXNlcyIgfCBgbnZjZi1jbGkgc2Vs" + - "Zi1ob3N0ZWQgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZWAgfAoKIyMgU3RlcHMgZm9yIGBkb3du" + - "IC0tY2x1c3Rlci1uYW1lPVhgICh0aGUgc3RhbmRhcmQgcGF0aCkKCiMjIyAxLiBDb25maXJtIHNj" + - "b3BlIHdpdGggdGhlIHVzZXIKCkFzazoKCi0gIlRlYXJpbmcgZG93biBldmVyeXRoaW5nIChjb21w" + - "dXRlIHBsYW5lcyArIGNvbnRyb2wgcGxhbmUgKyBJQ01TIHJvd3MpIG9yIGp1c3Qgb25lIGNvbXB1" + - "dGUgcGxhbmU/IgotICJBcmUgdGhlcmUgQUNUSVZFIGZ1bmN0aW9uIGRlcGxveW1lbnRzIG9uIHRo" + - "aXMgY2x1c3Rlcj8gYG52Y2YtY2xpIGZ1bmN0aW9uIGRlcGxveSBsaXN0YCB0byBjaGVjay4iIChJ" + - "bXBvcnRhbnQg4oCUIGBkb3duYCB3aWxsIHJlZnVzZSB3aXRob3V0IGAtLWRyYWluLWFjdGl2ZT10" + - "cnVlfHByb21wdGAgaWYgYW55IGFyZSBBQ1RJVkUuKQotICJTaG91bGQgd2Ugd2lwZSBwZXJzaXN0" + - "ZW50IHN0YXRlIChDYXNzYW5kcmEgZGF0YSwgT3BlbkJhbyBzZWFsIGtleXMsIHNyLWRlZmF1bHQg" + - "dXNlciBkYXRhKT8gRGVmYXVsdCBpcyB0byAqKnByZXNlcnZlKiogdGhlbS4gYC0tcmVtb3ZlLXBl" + - "cnNpc3RlbnRgIG9wdHMgaW4gdG8gZGVsZXRpb24uICoqTG9zcyBpcyB1bnJlY292ZXJhYmxlLioq" + - "IgoKIyMjIDIuIFJ1biBwbGFuLW9ubHkgZmlyc3QKCmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9zdGVk" + - "IGRvd24gLS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9JE5BTUUgLS1qc29uIHwganEKYGBgCgpU" + - "aGlzIGVtaXRzIGEgYHBsYW5uZWRgIGV2ZW50IGxpc3RpbmcgZWFjaCBwaGFzZSwgdGhlIGhlbG0g" + - "cmVsZWFzZXMgdGhhdCB3b3VsZCBiZSB1bmluc3RhbGxlZCwgdGhlIElDTVMgcm93cyB0aGF0IHdv" + - "dWxkIGJlIHJlbW92ZWQsIGFuZCBFVEFzLiBDb3B5IHRoZSBgd2lsbFVuaW5zdGFsbC5jb21tYW5k" + - "c1tdYCBhcnJheSB0byB0aGUgdXNlciDigJQgdGhvc2UgYXJlIHRoZSBsaXRlcmFsIGBoZWxtIHVu" + - "aW5zdGFsbCDigKZgIGludm9jYXRpb25zIHRoZSBvcmNoZXN0cmF0b3Igd2lsbCBydW4uCgojIyMg" + - "My4gRXhlY3V0ZSB0aGUgZG93bgoKYGBgc2gKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93biAtLWNs" + - "dXN0ZXItbmFtZT0kTkFNRSAtLWpzb24KYGBgCgpQaGFzZXMgKDEtNywgbWlycm9ycyDCpzYuNy4x" + - "KToKCjEuIFByZWZsaWdodCDigJQga3ViZWN0bCBhY2Nlc3MgKyBJQ01TIHJlYWNoYWJsZQoyLiBS" + - "ZXNvbHZlIHN0YWNrIGJ1bmRsZQozLiBEcmFpbiBhY3RpdmUgZGVwbG95bWVudHMg4oCUIHJ1bnMg" + - "YGZ1bmN0aW9uIGRlcGxveSByZW1vdmVgIGZvciBlYWNoIEFDVElWRSBkZXBsb3ltZW50LCBwb2xs" + - "cyB1bnRpbCBTVE9QUEVELiBTdWJqZWN0IHRvIGAtLWRyYWluLWFjdGl2ZT10cnVlfGZhbHNlfHBy" + - "b21wdGAgKGRlZmF1bHQgaXMgYHByb21wdGAgaW4gVFRZKS4KNC4gVW5pbnN0YWxsIGNvbXB1dGUg" + - "cGxhbmUg4oCUIGRlbGVnYXRlcyB0byBgdW5pbnN0YWxsIC0tY29tcHV0ZS1wbGFuZWA7IGBoZWxt" + - "IHVuaW5zdGFsbCA8cmVsZWFzZT5gIHBlciByZWxlYXNlIGluIHJldmVyc2UtREFHIG9yZGVyCjUu" + - "IFJlbW92ZSBwZXJzaXN0ZW50IChza2lwcGVkIHVubGVzcyBgLS1yZW1vdmUtcGVyc2lzdGVudGAp" + - "CjYuIFVucmVnaXN0ZXIgY2x1c3RlciBmcm9tIElDTVMKNy4gRmluYWwgdmVyaWZ5CgojIyMgNC4g" + - "VGVhciBkb3duIHRoZSBjb250cm9sIHBsYW5lIChpZiBhcHBsaWNhYmxlKQoKYGBgc2gKbnZjZi1j" + - "bGkgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZQpgYGAKCk9yIHZpYSB0aGUg" + - "b3JjaGVzdHJhdG9yJ3MgYC0tYWxsYCBtb2RlIGlmIGV2ZXJ5IGNvbXB1dGUgcGxhbmUgaXMgYWxz" + - "byBnb2luZyBhd2F5IChzZWUgc3RlcCA1KS4KCmB1bmluc3RhbGwgLS1jb250cm9sLXBsYW5lYCBy" + - "ZWZ1c2VzIGlmIGFueSBjb21wdXRlIHBsYW5lIGlzIHN0aWxsIHJlZ2lzdGVyZWQgaW4gSUNNUy4g" + - "VXNlIGAtLWZvcmNlLXdpdGgtcmVnaXN0ZXJlZC1jbHVzdGVyc2AgdG8gb3ZlcnJpZGUgKipvbmx5" + - "KiogaWYgdGhlIHVzZXIgZXhwbGljaXRseSB3YW50cyB0byBvcnBoYW4gY29tcHV0ZSBwbGFuZXMg" + - "KFBTQVQgYXV0aCBicmVha3MgZm9yIHRob3NlIGNsdXN0ZXJzIOKAlCB0aGV5IHdpbGwgc3RhcnQg" + - "ZmFpbGluZyBldmVyeSBoZWFsdGggY2hlY2spLiBBbHdheXMgc3RhdGUgdGhlIGNvbnNlcXVlbmNl" + - "IGJlZm9yZSBwYXNzaW5nIHRoZSBmbGFnLgoKIyMjIDUuIE9yLCBudWtlIGV2ZXJ5dGhpbmcKCmBg" + - "YHNoCm52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24gLS1hbGwgLS1jb25maXJtCmBgYAoKVGhpcyBp" + - "dGVyYXRlcyBldmVyeSByZWdpc3RlcmVkIGNvbXB1dGUgcGxhbmUgaW4gSUNNUywgcnVucyB0aGUg" + - "cGVyLWNsdXN0ZXIgZG93biBmb3IgZWFjaCBpbiBwYXJhbGxlbCAoYm91bmRlZCBieSBgLS1hbGwt" + - "Y29uY3VycmVuY3lgLCBkZWZhdWx0IDQpLCB0aGVuIHJ1bnMgYHVuaW5zdGFsbCAtLWNvbnRyb2wt" + - "cGxhbmVgLiBJbnRlcmFjdGl2ZSBtb2RlIHByb21wdHMgdGhlIG9wZXJhdG9yIHdpdGggdGhlIGNs" + - "dXN0ZXIgbGlzdCBiZWZvcmUgcHJvY2VlZGluZzsgYC0tY29uZmlybWAgc2tpcHMgdGhlIHByb21w" + - "dCBmb3Igbm9uLWludGVyYWN0aXZlIHVzZS4KCiMjIEdpdE9wcyBwYXRoIChpZiB1c2VyIGhhcyBB" + - "cmdvIC8gRmx1eCkKCmBgYHNoCiMgUmVuZGVyIGRlbGV0ZSBZQU1MIGZvciB0aGUgY29tcHV0ZSBw" + - "bGFuZToKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tbm8tYXBwbHkgLS1jb21wdXRl" + - "LXBsYW5lIC0tY2x1c3Rlci1uYW1lPSROQU1FID4gZGVsZXRlLnlhbWwKCiMgT3BlcmF0b3IgY29t" + - "bWl0cyBkZWxldGUueWFtbCB0byB0aGVpciBHaXRPcHMgcmVwby4gQXJnby9GbHV4IGFwcGxpZXMg" + - "dGhlIGRlbGV0aW9uIG9uIG5leHQgc3luYy4KZ2l0IGFkZCBkZWxldGUueWFtbDsgZ2l0IGNvbW1p" + - "dCAtbSAicmVtb3ZlIGNvbXB1dGUgcGxhbmUgJE5BTUUiOyBnaXQgcHVzaAoKIyBBZnRlciBBcmdv" + - "IHN5bmMgcmVtb3ZlcyB0aGUgSzhzIHJlc291cmNlcywgc2VwYXJhdGVseSByZW1vdmUgdGhlIElD" + - "TVMgcm93OgpudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNsdXN0ZXItaWQ9JENMVVNURVJfSUQK" + - "YGBgCgpOb3RlOiBgLS1uby1hcHBseWAgZG9lcyBOT1QgaW5jbHVkZSB0aGUgSUNNUyBgY2x1c3Rl" + - "ciBkZWxldGVgIChoZWxtIGRvZXNuJ3QgbWFuYWdlIHRoYXQpLiBPcGVyYXRvcnMgZm9sbG93aW5n" + - "IEdpdE9wcyBtdXN0IHJ1biBgbnZjZi1jbGkgY2x1c3RlciBkZWxldGVgIHNlcGFyYXRlbHksIG9y" + - "IHVzZSBgZG93bmAgdG8gb3JjaGVzdHJhdGUgYm90aC4KCiMjIEZhaWx1cmUgcmVjb3ZlcnkKCklm" + - "IGBkb3duYCBwYXJ0aWFsLWZhaWxzIG1pZC13YXksICoqcmUtcnVuIHRoZSBzYW1lIGNvbW1hbmQq" + - "Ki4gVGhlIG9yY2hlc3RyYXRvciBpcyBpZGVtcG90ZW50OiBgaGVsbSB1bmluc3RhbGxgIHNraXBz" + - "IHJlbGVhc2VzIHRoYXQgYXJlIGFscmVhZHkgZ29uZSwgYW5kIGBjbHVzdGVyIGRlbGV0ZSAtLWln" + - "bm9yZS1taXNzaW5nYCBza2lwcyBJQ01TIHJvd3MgdGhhdCBhcmUgYWxyZWFkeSBnb25lLiBQaGFz" + - "ZSA0ICsgNiBlbWl0IGBwaGFzZTogc2tpcHBlZCAoYWxyZWFkeSBjbGVhbilgIG9uIHRoZSBzZWNv" + - "bmQgcnVuLgoKSWYgYSBgcGhhc2VfZmFpbGVkYCBldmVudCBzdXJmYWNlczoKCi0gYGVyckNhdGVn" + - "b3J5OiAiaGVsbV9wZW5kaW5nX3VwZ3JhZGUiLCByZXRyeUNsYXNzOiAiYWZ0ZXJfcmVtZWRpYXRp" + - "b24iYCDihpIgcnVuIGBoZWxtIHJvbGxiYWNrIDxyZWxlYXNlPiAwIC0ta3ViZS1jb250ZXh0PeKA" + - "pmAgKHRoZSBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGFjdCByZWxlYXNlIG5hbWUpIHRoZW4gcmUt" + - "cnVuIGBkb3duYC4gRG8gTk9UIGF1dG8tcm9sbGJhY2sgd2l0aG91dCB1c2VyIGNvbmZpcm1hdGlv" + - "bi4KLSBgZXJyQ2F0ZWdvcnk6ICJjb21wdXRlX3BsYW5lIiwgcmV0cnlDbGFzczogImFmdGVyX3Jl" + - "bWVkaWF0aW9uImAgd2l0aCBtZXNzYWdlIGFib3V0IEFDVElWRSBkZXBsb3ltZW50cyDihpIgdXNl" + - "ciBwYXNzZWQgYC0tZHJhaW4tYWN0aXZlPWZhbHNlYCBidXQgZGVwbG95bWVudHMgZXhpc3QuIFJl" + - "LXJ1biB3aXRoIGAtLWRyYWluLWFjdGl2ZT10cnVlYCBvciBgLS1kcmFpbi1hY3RpdmU9cHJvbXB0" + - "YCBhbmQgY29uZmlybSB3aXRoIHRoZSB1c2VyLgotIE90aGVyIGNhdGVnb3JpZXMg4oaSIHN1cmZh" + - "Y2UgYGVyck1lc3NhZ2VgICsgZWFjaCBgcmVtZWRpYXRpb25gIHN0cmluZyB2ZXJiYXRpbS4gU1RP" + - "UC4gRG8gbm90IHByb3Bvc2UgcmV0cnkgd2l0aG91dCB1c2VyIGlucHV0LgoKIyMgQWx3YXlzIGNv" + - "bmZpcm0KCkZvciBldmVyeSBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93bmAgb3IgYHVuaW5zdGFs" + - "bGAgaW52b2NhdGlvbiwgZXNwZWNpYWxseSB3aXRoIGRlc3RydWN0aXZlIGZsYWdzOgoKLSBTdGF0" + - "ZSB0aGUgZXhhY3QgYC0tY2x1c3Rlci1uYW1lYCAob3IgYC0tYWxsYCkuCi0gU3RhdGUgd2hhdCdz" + - "IGxvc3QgKGUuZy4gImFsbCBmdW5jdGlvbiBkZXBsb3ltZW50cyBzY2hlZHVsZWQgb24gYG5jcC1s" + - "b2NhbGAgd2lsbCBzdG9wOyBjb21wdXRlIHBsYW5lIHdpbGwgZGVyZWdpc3RlciBmcm9tIElDTVMi" + - "KS4KLSBJZiBgLS1yZW1vdmUtcGVyc2lzdGVudGAgaXMgYmVpbmcgY29uc2lkZXJlZCwgc3RhdGUg" + - "dGhhdCBDYXNzYW5kcmEgcm93cyArIE9wZW5CYW8gc2VhbCBrZXlzIHdpbGwgYmUgZGVsZXRlZCBh" + - "bmQgdGhhdCB0aGlzIGlzIHVucmVjb3ZlcmFibGUuCi0gV2FpdCBmb3IgZXhwbGljaXQgdXNlciBj" + - "b25maXJtYXRpb24uCi0gTmV2ZXIgcHJvcG9zZSBgLS1mb3JjZS13aXRoLXJlZ2lzdGVyZWQtY2x1" + - "c3RlcnNgIHdpdGhvdXQgZXhwbGFpbmluZyB0aGF0IGNvbXB1dGUgcGxhbmVzIHdpbGwgYmUgb3Jw" + - "aGFuZWQuCi0gTmV2ZXIgcHJvcG9zZSBgLS1yZW1vdmUtcGVyc2lzdGVudGAgd2l0aG91dCBleHBs" + - "YWluaW5nIHRoZSBsb3NzLgoKIyMgTWFudWFsIGZhbGxiYWNrIChpZiBgbnZjZi1jbGkgc2VsZi1o" + - "b3N0ZWQge3VuaW5zdGFsbCxkb3dufWAgaXMgdW5hdmFpbGFibGUpCgpJZiB0aGUgdXNlciBpcyBv" + - "biBhIENMSSB2ZXJzaW9uIG9sZGVyIHRoYW4gTSsxMSwgZmFsbCBiYWNrIHRvOgoKYGBgc2gKIyBQ" + - "ZXIgY29tcHV0ZSBwbGFuZSAob24gaXRzIGt1YmVjdGwgY29udGV4dCk6CmhlbG0gdW5pbnN0YWxs" + - "IG52Y2EtYWdlbnQgLW4gbnZjYS1zeXN0ZW0KaGVsbSB1bmluc3RhbGwgbnZjYS1vcGVyYXRvciAt" + - "biBudmNhLW9wZXJhdG9yCmhlbG0gdW5pbnN0YWxsIGltYWdlLWNyZWRlbnRpYWwtaGVscGVyIC1u" + - "IG52Y2Etc3lzdGVtCmhlbG0gdW5pbnN0YWxsIHNoYXJlZHN0b3JhZ2UgLW4gbnZjYS1zeXN0ZW0K" + - "CiMgRHJhaW4gdGhlIElDTVMgcm93OgpudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNsdXN0ZXIt" + - "aWQ9PGlkPgoKIyBDb250cm9sIHBsYW5lIHRlYXJkb3duIChvbiBpdHMga3ViZWN0bCBjb250ZXh0" + - "KToKY2QgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sKbWFrZSBkZXN0cm95ICAgIyBpbnZva2VzIGhl" + - "bG1maWxlIGRlc3Ryb3kgYWNyb3NzIGFsbCByZWxlYXNlcwoKIyBJZiB1c2luZyBzcGxpdCBzdGFj" + - "ayBidW5kbGVzLCB0ZWFyZG93biBjb21wdXRlIHBsYW5lIHJlbGVhc2VzIHRvbzoKY2QgLi4vbnZj" + - "Zi1jb21wdXRlLXBsYW5lLXN0YWNrCm1ha2UgZGVzdHJveQpgYGAKClRoaXMgaXMgdGhlIG1hbnVh" + - "bCBwYXRoOyBwcmVmZXIgdGhlIG5ldyBzdWJjb21tYW5kcyB3aGVuZXZlciB0aGV5J3JlIGluc3Rh" + - "bGxlZC4KCiMjIFdoYXQgYGt1YmVjdGwgZGVsZXRlIHB2Y2AgZG9lcwoKSWYgdGhlIHVzZXIgYXNr" + - "cyAid2h5IGlzIG15IG5ldyBpbnN0YWxsIHNlZWluZyB0aGUgb2xkIGRhdGE/IiDigJQgdGhlIFN0" + - "YXRlZnVsU2V0IFBWQ3MgKENhc3NhbmRyYSwgT3BlbkJhbykgYXJlIE5PVCBkZWxldGVkIGJ5IGBo" + - "ZWxtIHVuaW5zdGFsbGAgKGFuZCBzbyBhcmUgTk9UIGRlbGV0ZWQgYnkgYG52Y2YtY2xpIHNlbGYt" + - "aG9zdGVkIGRvd25gIGVpdGhlciwgYnkgZGVmYXVsdCkuIFRoZXkgcGVyc2lzdCBpbnRlbnRpb25h" + - "bGx5IHNvIGEgcmUtYHVwYCBjYW4gcmVzdW1lIGFnYWluc3QgZXhpc3RpbmcgZGF0YS4gVG8gd2lw" + - "ZSBjb21wbGV0ZWx5IG9uIHRoZSBuZXh0IGBkb3duYDoKCmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9z" + - "dGVkIGRvd24gLS1jbHVzdGVyLW5hbWU9bmNwLWxvY2FsIC0tcmVtb3ZlLXBlcnNpc3RlbnQKYGBg" + - "CgpPciwgcG9zdC1kb3duLCBtYW51YWxseToKCmBgYHNoCmt1YmVjdGwgZGVsZXRlIHB2YyAtbiBj" + - "YXNzYW5kcmEtc3lzdGVtIC0tYWxsCmt1YmVjdGwgZGVsZXRlIHB2YyAtbiB2YXVsdC1zeXN0ZW0g" + - "LS1hbGwKYGBgCgoqKkNvbmZpcm0gd2l0aCB1c2VyLioqIFRoaXMgaXMgdGhlIGRlc3RydWN0aXZl" + - "IHN0ZXAuClBLBwjah2NW5CEAAOQhAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADAACQBkYXRh" + - "L252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvY29tbWFuZHMubWRVVAUAAQCmzhIjIGBu" + - "dmNmLWNsaWAgY29tbWFuZCByZWZlcmVuY2UKCkZ1bGwgc3ViY29tbWFuZCBsaXN0LiBBbHdheXMg" + - "cGFpciB3aXRoIFtmbGFncy5tZF0oZmxhZ3MubWQpIGZvciBnbG9iYWwgZmxhZ3MgYW5kIFtleGl0" + - "LWNvZGVzLm1kXShleGl0LWNvZGVzLm1kKSBmb3IgcmV0dXJuIGNvZGVzLgoKIyMgU2VsZi1ob3N0" + - "ZWQgbGlmZWN5Y2xlCgp8IENvbW1hbmQgfCBQdXJwb3NlIHwgT3V0cHV0IHwgTm90ZXMgfAp8LS0t" + - "fC0tLXwtLS18LS0tfAp8IGBzZWxmLWhvc3RlZCBjaGVjayAtLXByZSBbZmxhZ3NdYCB8IFByZS1m" + - "bGlnaHQgdmFsaWRhdGlvbiAobm8gYWRtaW4gY3JlZHMpIHwgc3RyZWFtaW5nIGV2ZW50cyB8IFBl" + - "ci1yb2xlIHdpdGggYC0tY29udHJvbC1wbGFuZS1jb250ZXh0YCAvIGAtLWNvbXB1dGUtcGxhbmUt" + - "Y29udGV4dGA7IGAtLWxvY2FsLW9ubHlgIHNraXBzIGt1YmVjdGwgfAp8IGBzZWxmLWhvc3RlZCBj" + - "aGVjayAtLWNvbnRyb2wtcGxhbmUgWy0td2FpdCBEVVJdYCB8IEV2ZXJ5IENQIHJlbGVhc2UgaGVh" + - "bHRoeSB8IHN0cmVhbWluZyBldmVudHMgfCBQb2xscyB1bnRpbCBwYXNzIG9yIGAtLXdhaXRgIGVs" + - "YXBzZXMgfAp8IGBzZWxmLWhvc3RlZCBjaGVjayAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5h" + - "bWU9WCBbLS13YWl0IERVUl1gIHwgUGVyLWNsdXN0ZXIgd29ya2VyIHN0YXRlIHwgc3RyZWFtaW5n" + - "IGV2ZW50cyB8IE5WQ0EgKyBvcGVyYXRvciArIEpXS1MtZmluZ2VycHJpbnQgbWF0Y2ggfAp8IGBz" + - "ZWxmLWhvc3RlZCBjaGVjayAtLWFsbCBbLS13YWl0IERVUl1gIHwgRmFuLW91dCBvdmVyIGFsbCBv" + - "ZiB0aGUgYWJvdmUgfCBzdHJlYW1pbmcgZXZlbnRzIHwgfAp8IGBzZWxmLWhvc3RlZCBpbnN0YWxs" + - "IC0tY29udHJvbC1wbGFuZWAgfCBSZW5kZXIgY29udHJvbC1wbGFuZSBtYW5pZmVzdHMgfCBZQU1M" + - "IG9uIHN0ZG91dCB8IFBpcGUgdG8gYGt1YmVjdGwgYXBwbHkgLWYgLWAgfAp8IGBzZWxmLWhvc3Rl" + - "ZCBpbnN0YWxsIC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YYCB8IFJlZ2lzdGVyIGNs" + - "dXN0ZXIgKyByZW5kZXIgY29tcHV0ZSBtYW5pZmVzdHMgfCBZQU1MIG9uIHN0ZG91dCB8IE9uZSBp" + - "bnZvY2F0aW9uIHBlciBHUFUgY2x1c3RlciB8CnwgYHNlbGYtaG9zdGVkIHVwIC0tY2x1c3Rlci1u" + - "YW1lPVhgIHwgT25lLXNob3QgZmlyc3QgaW5zdGFsbCAoYm90aCBwbGFuZXMpIHwgKGVtcHR5KSBz" + - "dGRvdXQsIHByb2dyZXNzIG9uIHN0ZGVyciB8IEFsd2F5cyBpbnN0YWxscyBib3RoIHBsYW5lczsg" + - "Zm9yIGNvbXB1dGUtb25seSB1c2UgYGFkZC1jb21wdXRlLXBsYW5lYCB8CnwgYHNlbGYtaG9zdGVk" + - "IHVwIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIHwgRHJ5LXJ1biBwcmV2aWV3IHwgSlNP" + - "Tkwgb24gc3RkZXJyIHwgQWdlbnQtZnJpZW5kbHksIG5vIGNsdXN0ZXIgY2hhbmdlcyB8CnwgYHNl" + - "bGYtaG9zdGVkIGFkZC1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVggLS1jb21wdXRlLXBs" + - "YW5lLWNvbnRleHQ9WSAtLWljbXMtdXJsPVVSTCAtLXRva2VuPSRKV1RgIHwgQWRkIGEgY29tcHV0" + - "ZSBwbGFuZSB0byBhbiBleGlzdGluZyBjb250cm9sIHBsYW5lIHwgcHJvZ3Jlc3Mgb24gc3RkZXJy" + - "IHwgRm9yIDJuZCwgM3JkLCDigKYgR1BVIGNsdXN0ZXIgYWZ0ZXIgdGhlIGZpcnN0IGluc3RhbGwu" + - "IENQIG5vdCB0b3VjaGVkLiB8CnwgYHNlbGYtaG9zdGVkIHN0YXR1cyBbLS1jbHVzdGVyLW5hbWU9" + - "WF0gWy0td2F0Y2hdYCB8IFNuYXBzaG90IGNsdXN0ZXIgaGVhbHRoIHwgVFRZL3BsYWluL0pTT05M" + - "IHwgYC0td2F0Y2hgIGZvciBsaXZlIHJlLXJlbmRlciB8CnwgYHNlbGYtaG9zdGVkIHVuaW5zdGFs" + - "bCAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9WGAgfCBQZXItcGxhbmUgcHJpbWl0aXZl" + - "OiBgaGVsbWZpbGUgZGVzdHJveWAgb24gb25lIGNvbXB1dGUgcGxhbmUgKG5vIElDTVMgdW5yZWdp" + - "c3Rlciwgbm8gZHJhaW4pIHwgcHJvZ3Jlc3MgfCBKdXN0IHRoZSBoZWxtIHJlbGVhc2VzIG9uIHRo" + - "YXQgY29tcHV0ZSBwbGFuZSB8CnwgYHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAtLWNvbnRyb2wtcGxh" + - "bmUgWy0tZm9yY2Utd2l0aC1yZWdpc3RlcmVkLWNsdXN0ZXJzXWAgfCBQZXItcGxhbmUgcHJpbWl0" + - "aXZlOiBgaGVsbWZpbGUgZGVzdHJveWAgb24gdGhlIGNvbnRyb2wgcGxhbmUgfCBwcm9ncmVzcyB8" + - "IFJlZnVzZXMgaWYgY29tcHV0ZSBwbGFuZXMgc3RpbGwgcmVnaXN0ZXJlZCB1bmxlc3MgYC0tZm9y" + - "Y2Utd2l0aC1yZWdpc3RlcmVkLWNsdXN0ZXJzYCB8CnwgYHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAt" + - "LW5vLWFwcGx5IDxwbGFuZT5gIHwgUmVuZGVyIGRlbGV0ZSBZQU1MIHZpYSBgaGVsbSBnZXQgbWFu" + - "aWZlc3RgIHBlciByZWxlYXNlIHwgWUFNTCBvbiBzdGRvdXQgfCBHaXRPcHM7IHBpcGUgdG8gYGt1" + - "YmVjdGwgZGVsZXRlIC1mIC1gIG9yIGNvbW1pdCArIEFyZ28gYXBwbGllcy4gTWlycm9ycyBgaW5z" + - "dGFsbCAtLW5vLWFwcGx5YCB8CnwgYHNlbGYtaG9zdGVkIGRvd24gLS1jbHVzdGVyLW5hbWU9WCBb" + - "LS1kcmFpbi1hY3RpdmVdIFstLXJlbW92ZS1wZXJzaXN0ZW50XWAgfCBPcmNoZXN0cmF0b3I6IGRy" + - "YWluIOKGkiB1bmluc3RhbGwgLS1jb21wdXRlLXBsYW5lIOKGkiBjbHVzdGVyIGRlbGV0ZSBpbiBJ" + - "Q01TIHwgcHJvZ3Jlc3MgfCBTeW1tZXRyaWMgY29tcGFuaW9uIHRvIGB1cCAtLWNsdXN0ZXItbmFt" + - "ZT1YYCB8CnwgYHNlbGYtaG9zdGVkIGRvd24gLS1hbGwgWy0tY29uZmlybV1gIHwgT3JjaGVzdHJh" + - "dG9yOiB0ZWFyIGRvd24gZXZlcnkgcmVnaXN0ZXJlZCBjb21wdXRlIHBsYW5lICsgY29udHJvbCBw" + - "bGFuZSB8IHByb2dyZXNzIHwgQm91bmRlZCBwYXJhbGxlbGlzbSB2aWEgYC0tYWxsLWNvbmN1cnJl" + - "bmN5YCAoZGVmYXVsdCA0KTsgYC0tY29uZmlybWAgcmVxdWlyZWQgaW4gbm9uLWludGVyYWN0aXZl" + - "IHwKfCBgc2VsZi1ob3N0ZWQgZG93biAtLXBsYW4tb25seSAuLi5gIHwgT3JjaGVzdHJhdG9yIGRy" + - "eS1ydW46IHBoYXNlcyArIGhlbG0gcmVsZWFzZXMgKyBJQ01TIHJvd3MgKyBFVEFzIChubyBoZWxt" + - "L2hlbG1maWxlIGNvbnRhY3QpIHwgSlNPTkwgfCAqKkFsd2F5cyBydW4gYmVmb3JlIGFueSBhY3R1" + - "YWwgYGRvd25gKiogfAoKIyMgQ2x1c3RlciBtYW5hZ2VtZW50Cgp8IENvbW1hbmQgfCBQdXJwb3Nl" + - "IHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYGNsdXN0ZXIgcmVnaXN0ZXIgLS1uYW1lPVggLS1u" + - "Y2EtaWQ9WSBbLS1yZWdpb249Wl0gWy0taWdub3JlLWV4aXN0aW5nXWAgfCBSZWdpc3RlciBhIEpX" + - "S1MrT0lEQyB3aXRoIElDTVMgfCBVc2VkIGJ5IGB1cGAgUGhhc2UgNSBpbnRlcm5hbGx5OyBzdGFu" + - "ZGFsb25lIGZvciBtYW51YWwgcmVnaXN0cmF0aW9uIHwKfCBgY2x1c3RlciBsaXN0LXJlZ2lzdGVy" + - "ZWQgLS1uY2EtaWQ9WSBbLS1pY21zLXVybD1VUkxdYCB8IExpc3Qgc2VsZi1ob3N0ZWQgY2x1c3Rl" + - "ciByZWdpc3RyYXRpb25zIGZyb20gSUNNUyB8IFVzZXMgdGhlIGFkbWluIHRva2VuOyBgLS1qc29u" + - "YCBmb3IgbWFjaGluZS1yZWFkYWJsZSBvdXRwdXQgfAp8IGBjbHVzdGVyIHJvdGF0ZSAtLWNsdXN0" + - "ZXItaWQ9SURgIHwgUmUtZmV0Y2ggSldLUyBmcm9tIEs4cyBhbmQgUFVUIHRvIElDTVMgfCBBZnRl" + - "ciBLOHMgQVBJIHNlcnZlciBzaWduaW5nIGtleSByb3RhdGlvbiB8CnwgYGNsdXN0ZXIgZGVsZXRl" + - "IC0tY2x1c3Rlci1pZD1JRGAgfCBSZW1vdmUgSUNNUyByb3cgfCAqKkRFU1RSVUNUSVZFOiBjb25m" + - "aXJtIHdpdGggdXNlcioqIHwKCiMjIEZ1bmN0aW9ucwoKfCBDb21tYW5kIHwgUHVycG9zZSB8IE5v" + - "dGVzIHwKfC0tLXwtLS18LS0tfAp8IGBmdW5jdGlvbiBjcmVhdGUgLS1pbnB1dC1maWxlPUZJTEVg" + - "IHwgQ3JlYXRlIGZ1bmN0aW9uIG1ldGFkYXRhIHwgUmV0dXJucyBGdW5jdGlvbiBJRCArIFZlcnNp" + - "b24gSUQ7IExMTSBmdW5jdGlvbnMgdXNlIGBmdW5jdGlvblR5cGU6ICJMTE0iYCBhbmQgYG1vZGVs" + - "c1tdLmxsbUNvbmZpZy51cmlzYCBmb3IgYC92MS9jaGF0L2NvbXBsZXRpb25zYCwgYC92MS9yZXNw" + - "b25zZXNgLCBhbmQgYC92MS9lbWJlZGRpbmdzYCB8CnwgYGZ1bmN0aW9uIGxpc3RgIC8gYGZ1bmN0" + - "aW9uIGxpc3QtaWRzYCB8IExpc3QgZnVuY3Rpb25zIC8gSURzIG9ubHkgfCB8CnwgYGZ1bmN0aW9u" + - "IGdldCAtLWZ1bmN0aW9uLWlkPUlEIC0tdmVyc2lvbi1pZD1WSURgIHwgRnVuY3Rpb24gbWV0YWRh" + - "dGEgfCB8CnwgYGZ1bmN0aW9uIHVwZGF0ZSAtLWZ1bmN0aW9uLWlkPUlEIC0tdmVyc2lvbi1pZD1W" + - "SUQgLS10YWdzPVRBR1ssVEFHXWAgfCBVcGRhdGUgZnVuY3Rpb24gdGFncyB8IHwKfCBgZnVuY3Rp" + - "b24gdXBkYXRlIC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRCAtLWxsbS1tb2RlbC11" + - "cGRhdGU9U1BFQ2AgfCBVcGRhdGUgTExNIG1vZGVsIHJvdXRpbmcgY29uZmlnIHwgYFNQRUNgIHVz" + - "ZXMgYG5hbWU9PG1vZGVsPixyb3V0aW5nTWV0aG9kPTxtZXRob2Q+LHRva2VuUmF0ZUxpbWl0PTxs" + - "aW1pdD5gOyBhY2NlcHRlZCBtZXRob2RzIGFyZSBsaXN0ZWQgaW4gW2ZsYWdzLm1kXShmbGFncy5t" + - "ZCkgfAp8IGBmdW5jdGlvbiBkZXBsb3kgY3JlYXRlIC0taW5wdXQtZmlsZT1GSUxFYCB8IFNjaGVk" + - "dWxlIGEgZGVwbG95bWVudCB8IEJsb2NrcyB1bnRpbCBBQ1RJVkUgKGRlZmF1bHQgOTAwcykgfAp8" + - "IGBmdW5jdGlvbiBkZXBsb3kgZ2V0IC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRCBb" + - "LS1qc29uXWAgfCBEZXBsb3ltZW50IHN0YXR1cyB8IGBmdW5jdGlvblN0YXR1czogQUNUSVZFXHxE" + - "RVBMT1lJTkdcfEVSUk9SXHxGQUlMRURgIHwKfCBgZnVuY3Rpb24gZGVwbG95IHVwZGF0ZSAtLWlu" + - "cHV0LWZpbGU9RklMRWAgfCBNb2RpZnkgYSBkZXBsb3ltZW50IGluIHBsYWNlIHwgfAp8IGBmdW5j" + - "dGlvbiBkZXBsb3kgcmVtb3ZlIC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRGAgfCBT" + - "dG9wIGEgZGVwbG95bWVudCwga2VlcCBmdW5jdGlvbiByZWNvcmQgfCB8CnwgYGZ1bmN0aW9uIGlu" + - "dm9rZSAtLWlucHV0LWZpbGU9RklMRWAgfCBDYWxsIGEgcmVndWxhciBmdW5jdGlvbiB8IFJlcXVp" + - "cmVzIEFQSSBrZXkgKG5vdCBhZG1pbiB0b2tlbik7IExMTSBmdW5jdGlvbnMgYXJlIGludm9rZWQg" + - "dGhyb3VnaCBgbGxtLmludm9jYXRpb24uPGRvbWFpbj5gIHdpdGggYG1vZGVsOiAiPGZ1bmN0aW9u" + - "LWlkPi88bW9kZWwtbmFtZT4iYCB8CnwgYGZ1bmN0aW9uIGRlbGV0ZSAtLWZ1bmN0aW9uLWlkPUlE" + - "IC0tdmVyc2lvbi1pZD1WSURgIHwgUmVtb3ZlIGZ1bmN0aW9uICsgZGVwbG95bWVudCB8ICoqREVT" + - "VFJVQ1RJVkU6IGNvbmZpcm0gd2l0aCB1c2VyKiogfAoKIyMgVGFza3MKClRhc2sgY29tbWFuZHMg" + - "cmVxdWlyZSBgTlZDRl9BUElfS0VZYCBzZXQgdG8gYSB0YXNrLXNjb3BlZCBrZXkgYW5kIGBOVkNG" + - "X0JBU0VfTlZDVF9VUkxgIHNldCB0byB0aGUgTlZDVCBnYXRld2F5IGVuZHBvaW50LiBJbiBhIGZy" + - "ZXNoIHNlc3Npb24sIHJlYWQgYG52Y3RBcGlLZXlgIGZyb20gYH4vLm52Y2YtY2xpLnN0YXRlYCBh" + - "bmQgaW5qZWN0IGl0IGFzIGBOVkNGX0FQSV9LRVlgIHdpdGhvdXQgbG9nZ2luZyB0aGUgdmFsdWU7" + - "IGNoZWNrIGBudmN0QXBpS2V5RXhwaXJhdGlvbmAgZmlyc3QgYW5kIHJlZ2VuZXJhdGUgd2l0aCBg" + - "YXBpLWtleSBnZW5lcmF0ZSAtLWZvciB0YXNrIC0tdmFsaWRhdGVgIGlmIGV4cGlyZWQuIFJ1biBg" + - "YXBpLWtleSBnZW5lcmF0ZSAtLWZvciB0YXNrYCBhZnRlciBgaW5pdGAgdG8gbWludCBhIG5ldyBr" + - "ZXkuCgp8IENvbW1hbmQgfCBQdXJwb3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYHRhc2sg" + - "Y3JlYXRlIC0tbmFtZT1YIC0tZ3B1PUdQVSAtLWluc3RhbmNlLXR5cGU9VFlQRSAtLWltYWdlPUlN" + - "R2AgfCBTdWJtaXQgYSBjb250YWluZXIgdGFzayB8IFNhdmVzIHRhc2sgSUQgdG8gQ0xJIHN0YXRl" + - "OyB1c2UgYC0taW5wdXQtZmlsZWAgZm9yIHJlcGVhdGFibGUgY29uZmlncyB8CnwgYHRhc2sgY3Jl" + - "YXRlIC0tbmFtZT1YIC0tZ3B1PUdQVSAtLWluc3RhbmNlLXR5cGU9VFlQRSAtLWhlbG0tY2hhcnQ9" + - "Q0hBUlRgIHwgU3VibWl0IGEgSGVsbSB0YXNrIHwgYC0taGVsbS1jaGFydGAgcmVwbGFjZXMgYC0t" + - "aW1hZ2VgIHwKfCBgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPUZJTEVgIHwgU3VibWl0IGEgdGFz" + - "ayBmcm9tIGEgSlNPTiBjb25maWcgZmlsZSB8IFJlY29tbWVuZGVkIGZvciByZXBlYXRhYmxlIGNv" + - "bmZpZ3VyYXRpb25zIHwKfCBgdGFzayBsaXN0IFstLXN0YXR1cz1TVEFUVVNdIFstLWxpbWl0PU5d" + - "YCB8IExpc3QgdGFza3MsIG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgc3RhdHVzIHwgU3RhdHVzZXM6" + - "IGBRVUVVRURgLCBgTEFVTkNIRURgLCBgUlVOTklOR2AsIGBDT01QTEVURURgLCBgRVJST1JFRGAs" + - "IGBDQU5DRUxFRGAsIGBFWENFRURFRF9NQVhfUlVOVElNRV9EVVJBVElPTmAsIGBFWENFRURFRF9N" + - "QVhfUVVFVUVEX0RVUkFUSU9OYCB8CnwgYHRhc2sgZ2V0IFt0YXNrSWRdYCB8IEdldCB0YXNrIGRl" + - "dGFpbHMgfCBVc2VzIHNhdmVkIHRhc2sgSUQgZnJvbSBzdGF0ZSBpZiBvbWl0dGVkIHwKfCBgdGFz" + - "ayBldmVudHMgW3Rhc2tJZF0gWy0tbGltaXQ9Tl1gIHwgTGlzdCBsaWZlY3ljbGUgZXZlbnRzIGZv" + - "ciBhIHRhc2sgfCB8CnwgYHRhc2sgcmVzdWx0cyBbdGFza0lkXWAgfCBMaXN0IHJlc3VsdCBhcnRp" + - "ZmFjdHMgZm9yIGEgY29tcGxldGVkIHRhc2sgfCBSZXR1cm5zIGVtcHR5IGxpc3Qgd2hlbiBgcmVz" + - "dWx0SGFuZGxpbmdTdHJhdGVneWAgaXMgYE5PTkVgOyByZXN1bHQgdXBsb2FkIG5vdCB5ZXQgc3Vw" + - "cG9ydGVkIHwKfCBgdGFzayBjYW5jZWwgW3Rhc2tJZF1gIHwgQ2FuY2VsIGEgcnVubmluZyB0YXNr" + - "IHwgTm8tb3AgaWYgYWxyZWFkeSBpbiB0ZXJtaW5hbCBzdGF0ZSB8CnwgYHRhc2sgZGVsZXRlIFt0" + - "YXNrSWRdYCB8IERlbGV0ZSBhIHRhc2sgcmVjb3JkIHwgKipTdG9wLCBzdGF0ZSB0YXNrIElEICsg" + - "Y3VycmVudCBzdGF0dXMsIGFuZCB3YWl0IGZvciBhIHN1YnNlcXVlbnQgdXNlciByZXBseSBleHBs" + - "aWNpdGx5IGNvbmZpcm1pbmcgZGVsZXRpb24gb2YgdGhhdCBzcGVjaWZpYyB0YXNrLiBEbyBub3Qg" + - "dHJlYXQgdGhlIG9yaWdpbmFsIGRlbGV0ZSByZXF1ZXN0IGFzIGNvbmZpcm1hdGlvbi4qKiB8Cnwg" + - "YHRhc2sgdXBkYXRlLXNlY3JldHMgW3Rhc2tJZF0gLS1zZWNyZXRzIE5BTUU9dmFsdWVgIHwgVXBk" + - "YXRlIHNlY3JldHMgb24gYSB0YXNrOyBzdXBwbGllZCBzZWNyZXRzIGFyZSBhZGRlZCBvciB1cGRh" + - "dGVkIGJ5IG5hbWUsIGV4aXN0aW5nIHNlY3JldHMgbm90IGluIHRoZSByZXF1ZXN0IGFyZSBwcmVz" + - "ZXJ2ZWQgfCBWYWx1ZXMgYXJlIGVuY3J5cHRlZCBhdCByZXN0IHwKfCBgdGFzayBidWxrIC0tdGFz" + - "ay1pZHM9SUQxWyxJRDIs4oCmXWAgfCBGZXRjaCBkZXRhaWxzIGZvciBtdWx0aXBsZSB0YXNrcyBp" + - "biBvbmUgcmVxdWVzdCB8IHwKCiMjIEF1dGgKCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBOb3RlcyB8" + - "CnwtLS18LS0tfC0tLXwKfCBgaW5pdGAgfCBNaW50IGFkbWluIHRva2VuIGZyb20gQVBJIEtleXMg" + - "dmlhIHB1YmxpYyBhcGkgZ2F0ZXdheSB8IElkZW1wb3RlbnQ7IHdyaXRlcyBgfi8ubnZjZi1jbGku" + - "c3RhdGVgOyBjbGVhcnMgc2F2ZWQgZnVuY3Rpb24gc3RhdGUgYW5kIGFsbCBBUEkga2V5cyAoZnVu" + - "Y3Rpb24gYW5kIHRhc2spIHwKfCBgc3RhdHVzYCB8IFNob3cgQ0xJIHN0YXRlICh0b2tlbiwgbGFz" + - "dCBlbmRwb2ludHMsIGZ1bmN0aW9uIGNvbnRleHQpIHwgRGlzdGluY3QgZnJvbSBgc2VsZi1ob3N0" + - "ZWQgc3RhdHVzYCB8CnwgYGFwaS1rZXkgZ2VuZXJhdGUgWy0tZm9yIGZ1bmN0aW9uXHx0YXNrXSBb" + - "LS1kZXNjcmlwdGlvbj3igKZdIFstLWV4cGlyZXMtaW494oCmXWAgfCBNaW50IEFQSSBrZXlzIHwg" + - "RGVmYXVsdCAobm8gYC0tZm9yYCk6IGdlbmVyYXRlcyBib3RoIGEgZnVuY3Rpb24ga2V5IGFuZCBh" + - "IHRhc2sga2V5OyBgLS1mb3IgZnVuY3Rpb25gIG9yIGAtLWZvciB0YXNrYCBnZW5lcmF0ZXMgb25l" + - "IG9ubHk7IGAtLXNjb3Blc2AgcmVxdWlyZXMgYC0tZm9yYCB8CnwgYGFwaS1rZXkgZ2VuZXJhdGUg" + - "LS12YWxpZGF0ZWAgfCBNaW50IGFuZCBpbW1lZGlhdGVseSB2YWxpZGF0ZSBlYWNoIGdlbmVyYXRl" + - "ZCBrZXkgfCBWYWxpZGF0ZXMgZWFjaCBrZXkgYWdhaW5zdCBpdHMgY29ycmVjdCBhdWRpZW5jZSAo" + - "TlZDRiBmb3IgZnVuY3Rpb24ga2V5cywgTlZDVCBmb3IgdGFzayBrZXlzKSB8CnwgYGFwaS1rZXkg" + - "bGlzdGAgfCBMaXN0IEFQSSBrZXlzIGZvciBjdXJyZW50IG93bmVyIHwgTGlzdHMgTlZDRi1zY29w" + - "ZWQga2V5cyBvbmx5IHwKfCBgYXBpLWtleSBkZWxldGUgS0VZLUlEYCAvIGBhcGkta2V5IHJldm9r" + - "ZSBLRVktSURgIHwgUmVtb3ZlIGFuIEFQSSBrZXkgfCAqKkNvbmZpcm0gd2l0aCB1c2VyKiogfAp8" + - "IGBhcGkta2V5IHNob3dgIHwgU2hvdyBjdXJyZW50bHkgc2F2ZWQgQVBJIGtleSBmcm9tIHN0YXRl" + - "IHwgfAoKIyMgQWdlbnQgc2tpbGwKCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBOb3RlcyB8CnwtLS18" + - "LS0tfC0tLXwKfCBgYWdlbnQtc2tpbGwgaW5zdGFsbCBbLS10YXJnZXQ9RElSXWAgfCBJbnN0YWxs" + - "IGFsbCBidW5kbGVkIHB1YmxpYyB1c2VyIHNraWxscyBpbnRvIGB+Ly5jbGF1ZGUvc2tpbGxzL2Ag" + - "YW5kIGB+Ly5hZ2VudHMvc2tpbGxzL2AgfCBEZWZhdWx0OiBib3RoIGJhc2Ugc2tpbGxzIGRpcmVj" + - "dG9yaWVzIHwKfCBgYWdlbnQtc2tpbGwgdW5pbnN0YWxsIFstLXRhcmdldD1ESVJdYCB8IFJlbW92" + - "ZSBvbmx5IGJ1bmRsZWQgcHVibGljIHVzZXIgc2tpbGxzIGZyb20gdGhlIHRhcmdldCBiYXNlIHNr" + - "aWxscyBkaXJlY3RvcmllcyB8IElkZW1wb3RlbnQ7IHVucmVsYXRlZCBza2lsbHMgcmVtYWluIHwK" + - "fCBgYWdlbnQtc2tpbGwgc2hvdyBbLS1maWxlPVJFTF1gIHwgUHJpbnQgYnVuZGxlZCBgbnZjZi1z" + - "ZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kYCBvciBhbm90aGVyIGVtYmVkZGVkIGZpbGUgfCBGb3Ig" + - "ZGVidWdnaW5nIHwKfCBgYWdlbnQtc2tpbGwgdmVyc2lvbmAgfCBQcmludCBidWlsZCBTSEEgYW5k" + - "IGVtYmVkZGVkIHB1YmxpYyB1c2VyIHNraWxsIHN1bW1hcnkgfCB8ClBLBwhyDQ9kISMAACEjAABQ" + - "SwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADIACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9y" + - "ZWZlcmVuY2UvZXhpdC1jb2Rlcy5tZFVUBQABAKbOEiMgYG52Y2YtY2xpYCBleGl0IGNvZGVzCgpT" + - "dGFibGUgYWNyb3NzIHN1YmNvbW1hbmRzLiBVc2UgdGhlc2UgdG8gZHJpdmUgYWdlbnQgcmV0cnkg" + - "LyBzdXJmYWNpbmcgbG9naWMuCgp8IENvZGUgfCBNZWFuaW5nIHwgRXhhbXBsZSBjYXVzZXMgfAp8" + - "LS0tfC0tLXwtLS18CnwgYDBgIHwgU3VjY2VzcyB8IEFsbCBjaGVja3MgcGFzc2VkOyBpbnN0YWxs" + - "IGNvbXBsZXRlZDsgZGVwbG95bWVudCBBQ1RJVkUgfAp8IGAxYCB8IEdlbmVyaWMgZXJyb3IgfCBI" + - "ZWxtIHJlbmRlciBmYWlsZWQ7IG5ldHdvcmsgdW5yZWFjaGFibGU7IGZpbGUgbm90IGZvdW5kOyBZ" + - "QU1MIHBhcnNlIGVycm9yIHwKfCBgMmAgfCBQcmUtZmxpZ2h0IGNoZWNrIGZhaWxlZCB8IEEgYGNo" + - "ZWNrYCByZXN1bHQgYXQgZXJyb3Igc2V2ZXJpdHk6IEdhdGV3YXkgQVBJIENSRHMgbWlzc2luZzsg" + - "a3ViZWN0bCBub3Qgb24gUEFUSDsgZGVmYXVsdCBTdG9yYWdlQ2xhc3MgYWJzZW50OyBhIGNsdXN0" + - "ZXItdmFsaWRhdG9yIHRoYXQgY291bGQgbm90IHJ1biAoUkJBQyBkZW5pZWQsIGltYWdlIHB1bGwg" + - "ZmFpbHVyZSwgdGltZW91dCkuIFdhcm5pbmctc2V2ZXJpdHkgcmVzdWx0cyBleGl0IGAwYCB8Cnwg" + - "YDNgIHwgQWRtaW4gYXV0aCBmYWlsZWQgfCBObyB0b2tlbiArIGAtLW5vbi1pbnRlcmFjdGl2ZWAg" + - "c2V0OyBJQ01TIHJlamVjdGVkIEpXVDsgaW5pdCBlbmRwb2ludCB1bnJlYWNoYWJsZSB8CnwgYDVg" + - "IHwgTWFuaWZlc3QgYXBwbHkgb3IgYC0td2FpdGAgdGltZWQgb3V0IHwgSGVsbSBpbnN0YWxsIHRp" + - "bWVvdXQ7IGNoZWNrIHBvbGxlZCBidXQgZGlkbid0IHBhc3MgYmVmb3JlIGR1cmF0aW9uIHwKfCBg" + - "MTMwYCB8IENhbmNlbGxlZCBieSBTSUdJTlQvU0lHVEVSTSB8IFVzZXIgQ3RybC1DOyBDSSBidWRn" + - "ZXQgZXhjZWVkZWQ7IHBvZCBldmljdGVkIHwKCiMjIEhvdyBhbiBhZ2VudCBzaG91bGQgcmVhY3QK" + - "CnwgQ29kZSB8IEFnZW50IGJlaGF2aW9yIHwKfC0tLXwtLS18CnwgYDBgIHwgQ29udGludWUgLyBy" + - "ZXBvcnQgc3VjY2Vzcy4gfAp8IGAxYCB8IFN1cmZhY2Ugc3RkZXJyIHRvIHVzZXI7IGFzayBiZWZv" + - "cmUgYW55IHJldHJ5LiBHZW5lcmljIGVycm9ycyB1c3VhbGx5IG5lZWQgYSBodW1hbiB0byByZWFk" + - "IHRoZSBtZXNzYWdlLiB8CnwgYDJgIHwgU3VyZmFjZSBmYWlsZWQgY2hlY2tzICsgdGhlaXIgYGhp" + - "bnRVUkxgLiBEb24ndCBwcm9wb3NlIGB1cGAgdW50aWwgdGhlIHVzZXIgZml4ZXMgcHJlcmVxcy4g" + - "fAp8IGAzYCB8IFN1Z2dlc3QgYG52Y2YtY2xpIGluaXRgIChpbnRlcmFjdGl2ZSkgT1IgYC0tdG9r" + - "ZW49JEpXVGAgKENJKS4gRG9uJ3QgYXV0by1taW50IHdpdGhvdXQgdXNlciBPSy4gfAp8IGA1YCB8" + - "IEFzayB1c2VyIGlmIHRoZXkgd2FudCB0byB3YWl0IGxvbmdlciwgZGlnIGludG8gdGhlIHN0YWxs" + - "ZWQgY29tcG9uZW50LCBvciBjYW5jZWwuIHwKfCBgMTMwYCB8IERvbid0IHJldHJ5IGF1dG9tYXRp" + - "Y2FsbHk7IHVzZXIgZXhwbGljaXRseSBjYW5jZWxsZWQuIENvbmZpcm0gYmVmb3JlIHJlLXJ1bm5p" + - "bmcuIHwKCiMjIFdoZXJlIHRvIGZpbmQgbW9yZSBkZXRhaWwKCmBjaGVja2AgcmVwb3J0cyBpdHMg" + - "b3V0Y29tZSBpbiBvbmUgYGZpbmFsYCBldmVudCAoYHN1Y2Nlc3NgLCBgdmVyZGljdGAsIGBmYWls" + - "ZWRDb3VudGApIGFuZCBuZXZlciBlbWl0cyBgcGhhc2VfZmFpbGVkYDsgc2VlIGBleGFtcGxlcy9j" + - "aS1waXBlbGluZXMubWRgLiBBIGNhbmNlbGxhdGlvbiAoZXhpdCBgMTMwYCkgZW1pdHMgYGZpbmFs" + - "YCB3aXRoIGBjYW5jZWxsZWQ6IHRydWVgIGluc3RlYWQgb2YgYHBoYXNlX2ZhaWxlZGA7IGB1cGAg" + - "ZW1pdHMgYHBoYXNlX2NhbmNlbGxlZGAgYmVmb3JlIGl0LiBFdmVyeSBvdGhlciBub24temVybyBl" + - "eGl0IGVtaXRzIGEgc3RydWN0dXJlZCBgcGhhc2VfZmFpbGVkYCBKU09OIGV2ZW50IHdpdGggYGVy" + - "ckNhdGVnb3J5YCwgYGVyck1lc3NhZ2VgLCBgcmVtZWRpYXRpb25gIChhcnJheSksIGByZXRyeUNs" + - "YXNzYCAoZW51bTogYG5vbmV8aW1tZWRpYXRlfGJhY2tvZmZ8YWZ0ZXJfcmVtZWRpYXRpb258dW5r" + - "bm93bmApLCBgcmV0cnlBZnRlclNlY2AgKGludCwgb3B0aW9uYWwpLCBhbmQgYHJhd2AgKHN1YnBy" + - "b2Nlc3MgKyBIVFRQICsgS3ViZXJuZXRlcyBzaWduYWwpLiBBbHdheXMgY29uc3VtZSB0aGVzZSBp" + - "biBgLS1qc29uYCBtb2RlIHJhdGhlciB0aGFuIHBhcnNpbmcgRW5nbGlzaCBmcm9tIHN0ZGVyci4K" + - "UEsHCA/3S8WQCAAAkAgAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAALQAJAGRhdGEvbnZjZi1z" + - "ZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9mbGFncy5tZFVUBQABAKbOEiMgYG52Y2YtY2xpYCBm" + - "bGFnIHJlZmVyZW5jZQoKIyMgR2xvYmFsIGZsYWdzIChldmVyeSBzdWJjb21tYW5kKQoKfCBGbGFn" + - "IHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tY29uZmlnIEZJTEVgIHwg" + - "Q29uZmlnIGZpbGUgcGF0aCB8IGAkSE9NRS8ubnZjZi1jbGkueWFtbGAgfAp8IGAtLWRlYnVnYCB8" + - "IFZlcmJvc2UgSFRUUCBsb2dnaW5nIG9uIHN0ZGVyciB8IGBmYWxzZWAgfAp8IGAtLWpzb25gIHwg" + - "SlNPTkwgZXZlbnRzIG9uIHN0ZGVyciB8IGF1dG8gKG9mZiBpbiBUVFksIG9uIHVuZGVyIGAtLW5v" + - "bi1pbnRlcmFjdGl2ZWApIHwKCiMjIGBzZWxmLWhvc3RlZGAgcGFyZW50IChwZXJzaXN0ZW50IGFj" + - "cm9zcyBzdWJjb21tYW5kcykKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18" + - "LS0tfAp8IGAtLWNvbnRyb2wtcGxhbmUtc3RhY2s94oCmYCB8IENvbnRyb2wtcGxhbmUgYnVuZGxl" + - "IHNvdXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwgb3IgYG9jaTovL2AgVVJMIHwgZW1iZWRkZWQg" + - "T0NJIFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24gfAp8IGAtLWNvbXB1dGUtcGxhbmUtc3RhY2s9" + - "4oCmYCB8IENvbXB1dGUtcGxhbmUgYnVuZGxlIHNvdXJjZTogbG9jYWwgcGF0aCwgZ2l0IFVSTCwg" + - "b3IgYG9jaTovL2AgVVJMIHwgZW1iZWRkZWQgT0NJIFVSTCBwaW5uZWQgYnkgQ0xJIHZlcnNpb24g" + - "fAp8IGAtLWVudj1sb2NhbFx8cHJkXHzigKZgIHwgSGVsbWZpbGUgZW52aXJvbm1lbnQgbmFtZSB8" + - "IGBsb2NhbGAgZm9yIGRldiBidWlsZHMsIGBwcmRgIGZvciByZWxlYXNlcyB8CnwgYC0tbm9uLWlu" + - "dGVyYWN0aXZlYCB8IERpc2FibGUgYWxsIHN0ZGluIHByb21wdHMgfCBgZmFsc2VgIHwKfCBgLS10" + - "b2tlbj0kSldUYCB8IEFkbWluIEpXVCwgb3ZlcnJpZGVzIHN0b3JlZCBzZXNzaW9uIHwgLSB8Cnwg" + - "YC0tbm8tYXBwbHlgIHwgYGluc3RhbGxgIG9ubHkgLSBlbWl0IFlBTUwsIGRvIG5vdCBrdWJlY3Rs" + - "IGFwcGx5IHwgYGZhbHNlYCB8CnwgYC0tb3V0cHV0PXRleHRcfGpzb25gIHwgTGVnYWN5IGFsaWFz" + - "IGZvciBgLS1qc29uYCAoZGVwcmVjYXRlZCwgcmVtb3ZlZCBpbiBuZXh0IG1ham9yKSB8IGB0ZXh0" + - "YCB8CnwgYC0tcGxhaW5gIHwgRm9yY2UgcGxhaW4gc3RyZWFtaW5nIG91dHB1dCB8IGF1dG8tZGV0" + - "ZWN0IHwKfCBgLS13YWl0IERVUkFUSU9OYCB8IGBjaGVja2Agb25seTsgYmxvY2sgdW50aWwgcGFz" + - "cyB8IC0gfAp8IGAtLWNvbnRyb2wtcGxhbmUtY29udGV4dCBDVFhgIHwga3ViZWN0bCBjb250ZXh0" + - "IGZvciBjb250cm9sIHBsYW5lIChSRVEtMjApIHwgY3VycmVudCBjb250ZXh0IHwKfCBgLS1jb21w" + - "dXRlLXBsYW5lLWNvbnRleHQgQ1RYYCB8IGt1YmVjdGwgY29udGV4dCBmb3IgY29tcHV0ZSBwbGFu" + - "ZSAoUkVRLTIwKSB8IGN1cnJlbnQgY29udGV4dCB8CnwgYC0taWNtcy11cmwgVVJMYCB8IFB1Ymxp" + - "YyBJQ01TIFVSTDsgcmVxdWlyZWQgd2hlbiBjb250ZXh0cyBkaWZmZXIgfCBkZXJpdmVkIGZyb20g" + - "YGJhc2VfaHR0cF91cmxgIHwKfCBgLS1sb2NhbC1vbmx5YCB8IGBjaGVja2Agb25seTsgcnVuIHRo" + - "ZSBsb2NhbC1ob3N0IGNoZWNrcyBhbmQgc2tpcCBhbGwga3ViZWN0bCBjb250YWN0LCB3aGF0ZXZl" + - "ciBzY29wZSBmbGFnIGlzIHBhc3NlZC4gVGhlIENMSSBwcmludHMgYSBub3RlIHNheWluZyBzby4g" + - "RW52OiBgTlZDRl9DTElfU0VMRkhPU1RFRF9MT0NBTF9PTkxZYCB8IGBmYWxzZWAgfAoKIyMgYGNo" + - "ZWNrYC1zcGVjaWZpYwoKQXQgbGVhc3Qgb25lIG9mIGAtLXByZWAsIGAtLWNvbnRyb2wtcGxhbmVg" + - "LCBgLS1jb21wdXRlLXBsYW5lYCwgb3IgYC0tYWxsYCBpcwpyZXF1aXJlZC4gRWFjaCBzZWxlY3Rz" + - "IGEgcm9sZTsgb25seSB0aGUgc2VsZWN0ZWQgcm9sZXMgY29udGFjdCBhIGNsdXN0ZXIuCgp8IEZs" + - "YWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1wcmVgIHwgUHJlLWZs" + - "aWdodDogbG9jYWwtaG9zdCB0b29scyBwbHVzIGNsdXN0ZXIgcmVhZGluZXNzLiBTa2lwcyBTSVMg" + - "cmVhY2hhYmlsaXR5LCBzaW5jZSBTSVMgaXMgbm90IGluc3RhbGxlZCB5ZXQsIHVubGVzcyBgLS1h" + - "bGxgIG9yIGAtLWNvbXB1dGUtcGxhbmVgIGlzIGFsc28gcGFzc2VkIHwgYGZhbHNlYCB8CnwgYC0t" + - "Y29udHJvbC1wbGFuZWAgfCBDb250cm9sLXBsYW5lIGNoZWNrcyB8IGBmYWxzZWAgfAp8IGAtLWNv" + - "bXB1dGUtcGxhbmVgIHwgQ29tcHV0ZS1wbGFuZSBjaGVja3MgfCBgZmFsc2VgIHwKfCBgLS1hbGxg" + - "IHwgRXZlcnkgY2F0ZWdvcnksIGluY2x1ZGluZyBTSVMgcmVhY2hhYmlsaXR5IHdoZW4gY29tYmlu" + - "ZWQgd2l0aCBgLS1wcmVgIHwgYGZhbHNlYCB8CnwgYC0tY2x1c3Rlci1uYW1lIE5BTUVgIHwgQ2x1" + - "c3RlciBuYW1lIGZvciBjb21wdXRlLXBsYW5lIGNoZWNrcyB8IC0gfAp8IGAtLXNraXAtaW5vdGlm" + - "eS1jaGVja2AgfCBTa2lwIHRoZSBwZXItbm9kZSBpbm90aWZ5LWxpbWl0cyBwcm9iZS4gTmVlZGVk" + - "IHdoZW4gdGhlIGt1YmVjb25maWcgdXNlciBjYW5ub3QgY3JlYXRlIHBvZHMgaW4gYGRlZmF1bHRg" + - "LiBFbnY6IGBOVkNGX0NMSV9TRUxGSE9TVEVEX1NLSVBfSU5PVElGWWAgfCBgZmFsc2VgIHwKCiMj" + - "IyBDbHVzdGVyLXZhbGlkYXRvciBmbGFncwoKVGhlIHZhbGlkYXRvciBydW5zIGFzIGEgSm9iIGlu" + - "IHRoZSBjbHVzdGVyIGJlaW5nIGNoZWNrZWQuIFRoZSBDTEkgY3JlYXRlcyBhClNlcnZpY2VBY2Nv" + - "dW50LCBDbHVzdGVyUm9sZSwgYW5kIENsdXN0ZXJSb2xlQmluZGluZyBmb3IgaXQgYW5kIHJlbW92" + - "ZXMgdGhlbQphZnRlciB0aGUgcnVuLCBzbyB0aGUga3ViZWNvbmZpZyBjb250ZXh0IG5lZWRzIHBl" + - "cm1pc3Npb24gdG8gbWFuYWdlIHRob3NlLgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8" + - "LS0tfC0tLXwtLS18CnwgYC0tY2x1c3Rlci12YWxpZGF0b3ItaW1hZ2UgUkVGYCB8IFZhbGlkYXRv" + - "ciBpbWFnZS4gUmVzb2x1dGlvbiBvcmRlcjogZmxhZywgYE5WQ0ZfQ0xJX0NMVVNURVJfVkFMSURB" + - "VE9SX0lNQUdFYCwgY29uZmlnIGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfaW1hZ2VgLiBBIHJlZiB3" + - "aXRoIG5vIHRhZyBkaXNjb3ZlcnMgdGhlIGxhdGVzdCBzdGFibGUgdGFnIGZyb20gdGhlIHJlZ2lz" + - "dHJ5LiBVbnNldCBldmVyeXdoZXJlIHNraXBzIHRoZSBwcm9iZSB3aXRoIGEgd2FybmluZyB8IC0g" + - "fAp8IGAtLWNsdXN0ZXItdmFsaWRhdG9yLXJlZ2lzdHJpZXMgaG9zdDpwb3J0LC4uLmAgfCBFeHRy" + - "YSByZWdpc3RyaWVzIHRoZSBjb250cm9sLXBsYW5lIHZhbGlkYXRvciBwcm9iZXMgZm9yIHJlYWNo" + - "YWJpbGl0eS4gVGhleSBhcmUgYWRkZWQgdG8gdGhlIHJlZ2lzdHJpZXMgdGhlIGluc3RhbGwgcHVs" + - "bHMgZnJvbTogdGhlIHZhbGlkYXRvciBpbWFnZSdzIHJlZ2lzdHJ5LCB0aGUgc3RhY2sncyBgZ2xv" + - "YmFsLmltYWdlLnJlZ2lzdHJ5YCwgYW5kIGBxdWF5LmlvYCBmb3IgdGhlIGNlcnQtbWFuYWdlciBB" + - "Q01FIHNvbHZlciB1bmxlc3MgdGhlIHN0YWNrIHNldHMgYGNlcnRNYW5hZ2VyLmFjbWVzb2x2ZXIu" + - "aW1hZ2VgLiBgbnZjci5pb2AgaXMgcHJvYmVkLCBhcyBub24tY3JpdGljYWwsIG9ubHkgd2hlbiBu" + - "ZWl0aGVyIHRoZSBpbWFnZSBub3IgdGhlIHN0YWNrIG5hbWVzIGEgcmVnaXN0cnkuIFJlcGVhdGFi" + - "bGUgb3IgY29tbWEtc2VwYXJhdGVkLiBFbnY6IGBOVkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9S" + - "RUdJU1RSSUVTYDsgY29uZmlnIGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfcmVnaXN0cmllc2AgfCAt" + - "IHwKfCBgLS1jbHVzdGVyLXZhbGlkYXRvci1wcm9iZS1pbWFnZSBSRUZgIHwgSW1hZ2UgZm9yIHRo" + - "ZSBjb250cm9sLXBsYW5lIHZhbGlkYXRvcidzIG5vZGUtdG8tbm9kZSBvdmVybGF5IHByb2JlLiBO" + - "ZWVkcyBgc2hgIGFuZCBhIGJ1c3lib3gtc3R5bGUgYG5jYC4gU2V0IGEgbWlycm9yIGZvciBhaXIt" + - "Z2FwcGVkIGNsdXN0ZXJzLiBFbnY6IGBOVkNGX0NMSV9DTFVTVEVSX1ZBTElEQVRPUl9QUk9CRV9J" + - "TUFHRWA7IGNvbmZpZyBrZXkgYGNsdXN0ZXJfdmFsaWRhdG9yX3Byb2JlX2ltYWdlYCB8IGBidXN5" + - "Ym94OjEuMzZgIGZyb20gRG9ja2VyIEh1YiB8CnwgYC0tY2x1c3Rlci12YWxpZGF0b3ItcHVsbC1z" + - "ZWNyZXQgTkFNRWAgfCBkb2NrZXItcmVnaXN0cnkgU2VjcmV0IGluIGBkZWZhdWx0YCB1c2VkIHRv" + - "IHB1bGwgdGhlIHZhbGlkYXRvciBpbWFnZS4gV2hlbiBlbXB0eSwgdGhlIENMSSBsb29rcyBmb3Ig" + - "b25lIGluIHRoZSBOVkNGIG5hbWVzcGFjZXMgYW5kIGNvcGllcyBpdCBpbnRvIGBkZWZhdWx0YCBm" + - "b3IgdGhlIHJ1bi4gRmFpbGluZyB0aGF0LCBhbmQgb25seSBmb3IgYW4gaW1hZ2Ugb24gYW4gTkdD" + - "IHJlZ2lzdHJ5LCBpdCBtaW50cyBvbmUgZnJvbSBgTkdDX0FQSV9LRVlgIHwgYXV0by1kZXRlY3Qg" + - "fAp8IGAtLXNraXAtY2x1c3Rlci12YWxpZGF0aW9uYCB8IFNraXAgdGhlIGluLWNsdXN0ZXIgdmFs" + - "aWRhdG9yIHByb2JlIGVudGlyZWx5LiBBIHZhbGlkYXRvciB0aGF0IGlzIGNvbmZpZ3VyZWQgYnV0" + - "IGNhbm5vdCBydW4gZmFpbHMgdGhlIGNoZWNrLCBzbyB1c2UgdGhpcyB0byBvcHQgb3V0IGV4cGxp" + - "Y2l0bHksIGZvciBleGFtcGxlIHdoZW4gdGhlIGNsdXN0ZXIgY2Fubm90IHB1bGwgdGhlIGltYWdl" + - "LiBFbnY6IGBOVkNGX0NMSV9TRUxGSE9TVEVEX1NLSVBfQ0xVU1RFUl9WQUxJREFUSU9OYCB8IGBm" + - "YWxzZWAgfAp8IGAtLW5vLWNsZWFudXBgIHwgS2VlcCB0aGUgdmFsaWRhdG9yIEpvYiwgaXRzIHBv" + - "ZCwgUkJBQywgcHVsbCBzZWNyZXQgYW5kIENvbmZpZ01hcCBmb3IgZGVidWdnaW5nLiBBIGxhdGVy" + - "IGNoZWNrIHJlY2xhaW1zIHRoZW0gYWZ0ZXIgMjQgaG91cnM7IHRoZSByZXN1bHQgcHJpbnRzIHRo" + - "ZSBga3ViZWN0bCBkZWxldGVgIGNvbW1hbmQgdGhhdCByZW1vdmVzIHRoZW0gbm93IHwgYGZhbHNl" + - "YCB8CnwgYC0tc2hvdy1sb2dzYCB8IFByaW50IHRoZSB2YWxpZGF0b3IgdHJhbnNjcmlwdCB0byBz" + - "dGRlcnIgYWZ0ZXIgdGhlIGNoZWNrIGV2ZW50cy4gVGhlIHRyYW5zY3JpcHQgaXMgbm90IEpTT04s" + - "IGFuZCBgLS1qc29uYCBhbHNvIHdyaXRlcyB0byBzdGRlcnIsIHNvIGxlYXZlIHRoaXMgb2ZmIHdo" + - "ZW4gYSBwYXJzZXIgaXMgcmVhZGluZyB0aGUgc3RyZWFtIHwgYGZhbHNlYCB8CgojIyBgdXBgLXNw" + - "ZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1j" + - "bHVzdGVyLW5hbWUgTkFNRWAgfCBJQ01TIGNsdXN0ZXIgcm93IGlkZW50aWZpZXIgKHJlcXVpcmVk" + - "KSB8IC0gfAp8IGAtLW5jYS1pZCBJRGAgfCBOQ0EgYWNjb3VudCBJRCB8IGBudmNmLWRlZmF1bHRg" + - "IHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IENsdXN0ZXIgcmVnaW9uIHwgYHVzLXdlc3QtMWAgfAp8" + - "IGAtLXBsYW4tb25seWAgfCBEcnktcnVuOyBlbWl0IHBoYXNlIHBsYW4gKyBFVEFzIHdpdGhvdXQg" + - "Y2hhbmdlcyB8IGBmYWxzZWAgfAoKIyMgYHN0YXR1c2Atc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBv" + - "c2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0ZXItbmFtZSBOQU1FYCB8IExp" + - "bWl0IHRvIG9uZSBjb21wdXRlIHBsYW5lIHwgLSAoY29udHJvbCArIGFsbCBjbHVzdGVycykgfAp8" + - "IGAtLXdhdGNoYCB8IExpdmUgcmUtcmVuZGVyIHwgYGZhbHNlYCB8CnwgYC0td2F0Y2gtaW50ZXJ2" + - "YWwgRFVSYCB8IGAtLXdhdGNoYCBjYWRlbmNlIHwgYDVzYCB8CnwgYC0tY29tcG9uZW50IE5BTUVg" + - "IHwgRmlsdGVyIGNvbXBvbmVudHMgcGFuZWwgfCBhbGwgfAp8IGAtLW5vLWV2ZW50c2AgfCBTa2lw" + - "IGV2ZW50cyBwYW5lbCB8IGBmYWxzZWAgfAoKIyMgYGNsdXN0ZXIgcmVnaXN0ZXJgLXNwZWNpZmlj" + - "Cgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1uYW1lIE5B" + - "TUVgIHwgQ2x1c3RlciBuYW1lIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1uY2EtaWQgSURgIHwgTkNB" + - "IElEIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IFJlZ2lvbiB8IGB1cy13" + - "ZXN0LTFgIHwKfCBgLS1pY21zLXVybCBVUkxgIHwgSUNNUyBlbmRwb2ludCB8IGZyb20gY29uZmln" + - "IHwKfCBgLS1pZ25vcmUtZXhpc3RpbmdgIHwgTWF0Y2gtb3ItY3JlYXRlIGluc3RlYWQgb2YgZmFp" + - "bC1vbi1leGlzdHMgfCBgZmFsc2VgIHwKCiMjIGBhcGkta2V5IGdlbmVyYXRlYC1zcGVjaWZpYwoK" + - "fCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tZm9yIGZ1bmN0" + - "aW9uXHx0YXNrYCB8IEdlbmVyYXRlIG9ubHkgdGhlIHNwZWNpZmllZCBrZXkgdHlwZSB8IChvbWl0" + - "IHRvIGdlbmVyYXRlIGJvdGgpIHwKfCBgLS1kZXNjcmlwdGlvbiBURVhUYCB8IEh1bWFuLXJlYWRh" + - "YmxlIGxhYmVsIGZvciB0aGUga2V5IHwgYEdlbmVyYXRlZCBieSBudmNmLWNsaWAgfAp8IGAtLWV4" + - "cGlyZXMtaW4gRFVSQVRJT05gIHwgRXhwaXJ5IG9mZnNldCAoZS5nLiBgMjRoYCwgYDdkYCk7IHBh" + - "cnNlZCBhcyBleHRlbmRlZCBkdXJhdGlvbiB8IGAyNGhgIHwKfCBgLS1zY29wZXMgU0NPUEVbLFND" + - "T1BFXWAgfCBPdmVycmlkZSBkZWZhdWx0IHNjb3BlczsgcmVxdWlyZXMgYC0tZm9yYCB8IChzZXJ2" + - "aWNlIGRlZmF1bHRzKSB8CnwgYC0tdmFsaWRhdGVgIHwgVmFsaWRhdGUgZWFjaCBnZW5lcmF0ZWQg" + - "a2V5IGltbWVkaWF0ZWx5IGFmdGVyIG1pbnRpbmcgfCBgZmFsc2VgIHwKCkV4dGVuZGVkIGR1cmF0" + - "aW9uIHVuaXRzOiBgc2AgKHNlY29uZHMpLCBgbWAgKG1pbnV0ZXMpLCBgaGAgKGhvdXJzKSwgYGRg" + - "IChkYXlzKSwgYHdgICh3ZWVrcykuCgojIyBgZnVuY3Rpb24gY3JlYXRlYC1zcGVjaWZpYwoKYC0t" + - "aW5wdXQtZmlsZSBGSUxFYCBpcyByZWNvbW1lbmRlZCBmb3IgcmVwZWF0YWJsZSBmdW5jdGlvbiBk" + - "ZWZpbml0aW9ucy4gRm9yIGFkLWhvYyBjcmVhdGVzOgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1" + - "bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tbmFtZSBOQU1FYCB8IEZ1bmN0aW9uIG5hbWUgfCAtIHwK" + - "fCBgLS1pbWFnZSBJTUFHRWAgfCBDb250YWluZXIgaW1hZ2UgfCAtIHwKfCBgLS1pbmZlcmVuY2Ut" + - "dXJsIFVSSWAgfCBDb250YWluZXIgaW5mZXJlbmNlIGVuZHBvaW50IHwgLSB8CnwgYC0taW5mZXJl" + - "bmNlLXBvcnQgUE9SVGAgfCBDb250YWluZXIgaW5mZXJlbmNlIHBvcnQgfCAtIHwKfCBgLS1mdW5j" + - "dGlvbi10eXBlIERFRkFVTFRcfFNUUkVBTUlOR1x8TExNYCB8IEZ1bmN0aW9uIHR5cGUgfCBgREVG" + - "QVVMVGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJIHJl" + - "ZmVyZW5jZS4gQ2FuIGJlIHVzZWQgd2l0aCBgLS1mdW5jdGlvbi10eXBlPUxMTWAgZm9yIGNoYXJ0" + - "LXBhY2thZ2VkIExMTSB3b3JrbG9hZHMuIHwgLSB8CnwgYC0taGVsbS1jaGFydC1zZXJ2aWNlIE5B" + - "TUVgIHwgS3ViZXJuZXRlcyBTZXJ2aWNlIG5hbWUgZXhwb3NlZCBieSB0aGUgY2hhcnQuIFJlcXVp" + - "cmVkIHdoZW4gYC0taGVsbS1jaGFydGAgaXMgc2V0LiB8IC0gfAp8IGAtLW1vZGVscyBOQU1FOlZF" + - "UlNJT046VVJJYCB8IFN0YW5kYXJkIG1vZGVsIGFydGlmYWN0OyByZXBlYXRhYmxlIHwgLSB8Cnwg" + - "YC0tbGxtLW1vZGVsIFNQRUNgIHwgTExNIG1vZGVsIGNvbmZpZzsgZm9ybWF0IGBuYW1lPTxtb2Rl" + - "bD4sdXJpcz08dXJpPlx8PHVyaT4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJhdGVMaW1p" + - "dD08bGltaXQ+YDsgcmVwZWF0YWJsZS4gVG9rZW4gbGltaXRzIHVzZSBgPHZhbHVlPi08dW5pdD5g" + - "IHdpdGggYFNgLCBgTWAsIGBIYCwgYERgLCBvciBgV2AsIGZvciBleGFtcGxlIGAxMDAwLVNgLiBV" + - "c2UgaW5wdXQgSlNPTiBmb3IgY29tYmluZWQgdG9rZW4gbGltaXRzIGJlY2F1c2UgaW5saW5lIHNw" + - "ZWNzIHVzZSBjb21tYXMgYXMgZmllbGQgc2VwYXJhdG9ycy4gfCAtIHwKfCBgLS1sbG0tZGVmYXVs" + - "dC1wcmlvcml0eSBQUklPUklUWWAgfCBGdW5jdGlvbi1sZXZlbCBkZWZhdWx0IHJlcXVlc3QgcHJp" + - "b3JpdHkuIExvd2VyIHZhbHVlcyBoYXZlIGhpZ2hlciBwcmlvcml0eS4gfCAtIHwKfCBgLS1sbG0t" + - "cGVyLWFjY291bnQtcHJpb3JpdHkgTkNBLUlEOlBSSU9SSVRZYCB8IFBlci1hY2NvdW50IHByaW9y" + - "aXR5IG92ZXJyaWRlOyByZXBlYXRhYmxlOyBzdXBwb3J0cyB1cCB0byA2NCBkaXN0aW5jdCBOQ0Eg" + - "SUQgb3ZlcnJpZGVzLiBSZXF1aXJlcyBhIGRlZmF1bHQgcHJpb3JpdHkuIHwgLSB8CgpJbiBKU09O" + - "IGFuZCBpbmxpbmUgc3BlY3MsIExMTSBmdW5jdGlvbnMgc2V0IGBmdW5jdGlvblR5cGU6ICJMTE0i" + - "YCBhbmQgbW9kZWwgcm91dGluZyBtZXRhZGF0YSB1bmRlciBgbW9kZWxzW10ubGxtQ29uZmlnYC4g" + - "YGxsbUNvbmZpZy51cmlzYCBkZWNsYXJlcyB0aGUgT3BlbkFJLWNvbXBhdGlibGUgdXBzdHJlYW0g" + - "cGF0aHMgZXhwb3NlZCBieSB0aGUgbW9kZWwuIEN1cnJlbnQgc3VwcG9ydGVkIHBhdGhzIGFyZSBg" + - "L3YxL2NoYXQvY29tcGxldGlvbnNgLCBgL3YxL3Jlc3BvbnNlc2AsIGFuZCBgL3YxL2VtYmVkZGlu" + - "Z3NgLiBgbGxtQ29uZmlnLnJvdXRpbmdNZXRob2RgIGFjY2VwdHMgYHJvdW5kX3JvYmluYCwgYHBv" + - "d2VyX29mX3R3b2AsIGBncm9xX211bHRpcmVnaW9uYCwgYHB1bHNhcmAsIG9yIGByYW5kb21gLgpg" + - "bGxtQ29uZmlnLnRva2VuUmF0ZUxpbWl0YCBhY2NlcHRzIG9uZSBvciBtb3JlIGNvbW1hLXNlcGFy" + - "YXRlZCBwb3NpdGl2ZSBpbnRlZ2VyIHRva2VuIGxpbWl0cyBpbiBgPHZhbHVlPi08dW5pdD5gIGZv" + - "cm1hdC4gU3VwcG9ydGVkIHVuaXRzIGFyZSBgU2AgKHNlY29uZHMpLCBgTWAgKG1pbnV0ZXMpLCBg" + - "SGAgKGhvdXJzKSwgYERgIChkYXlzKSwgYW5kIGBXYCAod2Vla3MpLiBVc2UgZGlzdGluY3QgdW5p" + - "dHMgd2hlbiBjb21iaW5pbmcgbGltaXRzLCBmb3IgZXhhbXBsZSBgMTAwMC1TLDUwMDAtTSwxMDAw" + - "MDAtSCw1MDAwMDAtRCwxMDAwMDAwLVdgIGluIGlucHV0IEpTT04uCgpIZWxtIGNoYXJ0IHBhY2th" + - "Z2luZyBpcyBpbmRlcGVuZGVudCBvZiBgZnVuY3Rpb25UeXBlYC4gRm9yIGEgSGVsbS1jaGFydCBi" + - "YWNrZWQgTExNIGZ1bmN0aW9uLCBzZXQgYGZ1bmN0aW9uVHlwZTogIkxMTSJgLCBgaGVsbUNoYXJ0" + - "YCwgYGhlbG1DaGFydFNlcnZpY2VOYW1lYCwgYW5kIGBtb2RlbHNbXS5sbG1Db25maWdgIGluIHRo" + - "ZSBzYW1lIGNyZWF0ZSByZXF1ZXN0LiBgaW5mZXJlbmNlUG9ydGAgbXVzdCBiZSB0aGUgS3ViZXJu" + - "ZXRlcyBTZXJ2aWNlIHBvcnQgZXhwb3NlZCBieSBgaGVsbUNoYXJ0U2VydmljZU5hbWVgLgoKTExN" + - "IGludm9jYXRpb24gcmVxdWVzdHMgdXNlIGBtb2RlbDogIjxmdW5jdGlvbi1pZD4vPG1vZGVsLW5h" + - "bWU+ImAuIFRoZSBmdW5jdGlvbiBJRCBzZWxlY3RzIHRoZSBOVkNGIGZ1bmN0aW9uLCBhbmQgdGhl" + - "IG1vZGVsIG5hbWUgaXMgZm9yd2FyZGVkIHVwc3RyZWFtLiBDaGF0IGNvbXBsZXRpb25zIGFuZCBS" + - "ZXNwb25zZXMgQVBJIHJlcXVlc3RzIGNhbiB1c2UgYHgtbXVsdGktdHVybi1zZXNzaW9uLWlkYCBm" + - "b3Igc2Vzc2lvbiBzdGlja2luZXNzOyBlbWJlZGRpbmdzIHJlcXVlc3RzIGRvIG5vdC4KCiMjIGBm" + - "dW5jdGlvbiB1cGRhdGVgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8Cnwt" + - "LS18LS0tfC0tLXwKfCBgLS10YWdzIFRBR1ssVEFHXWAgfCBSZXBsYWNlIGZ1bmN0aW9uIHRhZ3Mg" + - "fCAtIHwKfCBgLS1sbG0tbW9kZWwtdXBkYXRlIFNQRUNgIHwgTExNIG1vZGVsIHVwZGF0ZTsgZm9y" + - "bWF0IGBuYW1lPTxtb2RlbD4scm91dGluZ01ldGhvZD08bWV0aG9kPix0b2tlblJhdGVMaW1pdD08" + - "bGltaXQ+YDsgcmVwZWF0YWJsZS4gUm91dGluZyBtZXRob2RzIG1hdGNoIGAtLWxsbS1tb2RlbGAu" + - "IFRva2VuIGxpbWl0IGV4YW1wbGU6IGAxMDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBmb3IgY29tYmlu" + - "ZWQgdG9rZW4gbGltaXRzLiB8IC0gfAp8IGAtLWxsbS1kZWZhdWx0LXByaW9yaXR5IFBSSU9SSVRZ" + - "YCB8IFJlcGxhY2UgdGhlIGZ1bmN0aW9uLWxldmVsIHByaW9yaXR5IGNvbmZpZ3VyYXRpb24gd2l0" + - "aCB0aGlzIGRlZmF1bHQgYW5kIGFueSBzdXBwbGllZCBwZXItYWNjb3VudCBvdmVycmlkZXMuIHwg" + - "LSB8CnwgYC0tbGxtLXBlci1hY2NvdW50LXByaW9yaXR5IE5DQS1JRDpQUklPUklUWWAgfCBQZXIt" + - "YWNjb3VudCBwcmlvcml0eSBvdmVycmlkZTsgcmVwZWF0YWJsZTsgc3VwcG9ydHMgdXAgdG8gNjQg" + - "ZGlzdGluY3QgTkNBIElEIG92ZXJyaWRlcy4gUmVxdWlyZXMgYSBkZWZhdWx0IHByaW9yaXR5LiB8" + - "IC0gfAoKSW4gSlNPTiwgYGZ1bmN0aW9uIHVwZGF0ZWAgYWNjZXB0cyBgbW9kZWxVcGRhdGVzW11g" + - "IGVudHJpZXMgd2l0aCBgbW9kZWxOYW1lYCBhbmQgYGxsbUNvbmZpZy5yb3V0aW5nTWV0aG9kYCBh" + - "bmQvb3IgYGxsbUNvbmZpZy50b2tlblJhdGVMaW1pdGAuIGB1cmlzYCBhcmUgY3JlYXRlLXRpbWUg" + - "bW9kZWwgbWV0YWRhdGEgYW5kIGFyZSBub3QgcGFydCBvZiBtb2RlbCB1cGRhdGVzLgoKIyMgYGZ1" + - "bmN0aW9uIGRlcGxveSBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJl" + - "Y29tbWVuZGVkIChmdWxsIEpTT04gc3BlYykuIEZvciBhZC1ob2Mgb25lLXNob3QgdXNlOgoKfCBG" + - "bGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tZnVuY3Rpb24taWQg" + - "SURgIHwgRnVuY3Rpb24gSUQgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLWdwdSBOQU1FYCB8IEdQVSBm" + - "YW1pbHkgfCBgSDEwMGAgfAp8IGAtLWluc3RhbmNlLXR5cGUgVFlQRWAgfCBTS1UgfCBgTkNQLkdQ" + - "VS5IMTAwXzF4YCB8CnwgYC0tbWluLWluc3RhbmNlcyBOYCB8IE1pbiByZXBsaWNhcyB8IGAxYCB8" + - "CnwgYC0tbWF4LWluc3RhbmNlcyBOYCB8IE1heCByZXBsaWNhcyB8IGAxYCB8CnwgYC0tbWF4LXJl" + - "cXVlc3QtY29uY3VycmVuY3kgTmAgfCBDb25jdXJyZW5jeSB8IGAwYCAodW5zZXQ7IHNlcnZlciBk" + - "ZWZhdWx0IGFwcGxpZXMpIHwKfCBgLS1jbHVzdGVycyBOQU1FWyxOQU1FXWAgfCBUYXJnZXQgc3Bl" + - "Y2lmaWMgY29tcHV0ZSBjbHVzdGVycyB8IChhbnkgbWF0Y2hpbmcgU0tVKSB8CgojIyBgdGFzayBj" + - "cmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIGZvciBy" + - "ZXBlYXRhYmxlIHRhc2sgZGVmaW5pdGlvbnMuIEZvciBhZC1ob2MgdXNlOgoKfCBGbGFnIHwgUHVy" + - "cG9zZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGAtLW5hbWUgTkFNRWAgfCBUYXNrIG5hbWUg" + - "KHJlcXVpcmVkKSB8IDEtMTI4IGNoYXJzLCBgXlthLXowLTlBLVpdW2EtejAtOUEtWlwtX10qJGAg" + - "fAp8IGAtLWdwdSBHUFVgIHwgR1BVIG5hbWUgKHJlcXVpcmVkIHdpdGhvdXQgYC0taW5wdXQtZmls" + - "ZWApIHwgRXhhbXBsZTogYEgxMDBgIHwKfCBgLS1pbnN0YW5jZS10eXBlIFRZUEVgIHwgSW5zdGFu" + - "Y2UgdHlwZSAocmVxdWlyZWQgd2l0aG91dCBgLS1pbnB1dC1maWxlYCkgfCBFeGFtcGxlOiBgTkNQ" + - "LkdQVS5IMTAwXzF4YCB8CnwgYC0taW1hZ2UgSU1BR0VgIHwgQ29udGFpbmVyIGltYWdlIHwgTXV0" + - "dWFsbHkgZXhjbHVzaXZlIHdpdGggYC0taGVsbS1jaGFydGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hB" + - "UlRgIHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJIHJlZmVyZW5jZSB8IE11dHVhbGx5IGV4Y2x1c2l2" + - "ZSB3aXRoIGAtLWltYWdlYCB8CnwgYC0taW5wdXQtZmlsZSBGSUxFYCB8IEpTT04gdGFzayBzcGVj" + - "IGZpbGUgfCBDTEkgZmxhZ3Mgb3ZlcnJpZGUgSlNPTiB2YWx1ZXMgd2hlbiBib3RoIGFyZSBzZXQg" + - "fAp8IGAtLWJhY2tlbmQgQkFDS0VORGAgfCBCYWNrZW5kIC8gQ1NQIHwgLSB8CnwgYC0tY2x1c3Rl" + - "cnMgTkFNRVssTkFNRV1gIHwgU3BlY2lmaWMgY2x1c3RlcnMgd2l0aGluIHRoZSBpbnN0YW5jZSB8" + - "IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tY29udGFpbmVyLWFyZ3MgQVJHU2AgfCBBcmdzIHBhc3Nl" + - "ZCB3aGVuIGxhdW5jaGluZyB0aGUgY29udGFpbmVyIHwgU2luZ2xlIHN0cmluZywgZS5nLiBgIi0t" + - "ZXBvY2hzIDEwIC0tYmF0Y2gtc2l6ZSAzMiJgIHwKfCBgLS1jb250YWluZXItZW52IE5BTUU9dmFs" + - "dWVgIHwgQ29udGFpbmVyIGVudmlyb25tZW50IHZhcmlhYmxlOyByZXBlYXRhYmxlIHwgLSB8Cnwg" + - "YC0tc2VjcmV0cyBOQU1FPXZhbHVlYCB8IFNlY3JldCBlbnZpcm9ubWVudCB2YXJpYWJsZTsgcmVw" + - "ZWF0YWJsZTsgZW5jcnlwdGVkIGF0IHJlc3QgfCAtIHwKfCBgLS1tYXgtcnVudGltZSBEVVJBVElP" + - "TmAgfCBNYXggd2FsbC1jbG9jayBydW4gdGltZSAoSVNPIDg2MDEsIGUuZy4gYFBUNEhgKSB8IE5v" + - "IGRlZmF1bHQ7IG9taXQgZm9yIG5vIHRpbWUgbGltaXQgfAp8IGAtLW1heC1xdWV1ZWQgRFVSQVRJ" + - "T05gIHwgTWF4IHRpbWUgaW4gcXVldWUgYmVmb3JlIGNhbmNlbGxhdGlvbiAoSVNPIDg2MDEpIHwg" + - "U2VydmVyIGRlZmF1bHQgYFBUNzJIYCB8CnwgYC0tdGVybWluYXRpb24tZ3JhY2UgRFVSQVRJT05g" + - "IHwgR3JhY2UgcGVyaW9kIGFmdGVyIHN0b3Agc2lnbmFsIChJU08gODYwMSkgfCBTZXJ2ZXIgZGVm" + - "YXVsdCBgUFQxSGAgfAp8IGAtLXJlc3VsdC1zdHJhdGVneSBVUExPQURcfE5PTkVgIHwgSG93IHRv" + - "IGhhbmRsZSB0YXNrIG91dHB1dCBhcnRpZmFjdHMgfCAtIHwKfCBgLS1yZXN1bHRzLWxvY2F0aW9u" + - "IExPQ0FUSU9OYCB8IFJlc3VsdCB1cGxvYWQgdGFyZ2V0LCBmb3JtYXQgYG9yZy1uYW1lL1t0ZWFt" + - "LW5hbWUvXW1vZGVsLW5hbWVgOyByZXF1aXJlZCB3aGVuIGAtLXJlc3VsdC1zdHJhdGVneT1VUExP" + - "QURgIHwgLSB8CnwgYC0tbW9kZWxzIE5BTUU6VkVSU0lPTjpVUklgIHwgTW9kZWwgYXJ0aWZhY3Q7" + - "IHJlcGVhdGFibGUgfCAtIHwKfCBgLS1yZXNvdXJjZXMgTkFNRTpWRVJTSU9OOlVSSWAgfCBSZXNv" + - "dXJjZSBhcnRpZmFjdDsgcmVwZWF0YWJsZSB8IC0gfAp8IGAtLXRhZ3MgVEFHWyxUQUddYCB8IFRh" + - "c2sgdGFncyB8IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tZGVzY3JpcHRpb24gVEVYVGAgfCBUYXNr" + - "IGRlc2NyaXB0aW9uIHwgLSB8CnwgYC0tbG9ncy10ZWxlbWV0cnktaWQgVVVJRGAgfCBMb2dzIHRl" + - "bGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfAp8IGAtLW1ldHJpY3MtdGVsZW1ldHJ5LWlkIFVVSURg" + - "IHwgTWV0cmljcyB0ZWxlbWV0cnkgZW5kcG9pbnQgSUQgfCAtIHwKfCBgLS10cmFjZXMtdGVsZW1l" + - "dHJ5LWlkIFVVSURgIHwgVHJhY2VzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfApQSwcIrEyK" + - "o8syAADLMgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA3AAkAZGF0YS9udmNmLXNlbGYtbWFu" + - "YWdlZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOEiMgVHJvdWJsZXNo" + - "b290aW5nCgpLbm93biBlcnJvcnMg4oaSIGRpYWdub3N0aWMgY29tbWFuZCDihpIgcmVtZWRpYXRp" + - "b24uIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBzdHJ1Y3R1cmVkIGBwaGFzZV9mYWlsZWRgIGV2ZW50" + - "cyB0aGUgQ0xJIGVtaXRzIChSRVEtMTUpIOKAlCBldmVyeSBlbnRyeSBiZWxvdyBzaG91bGQgbWFw" + - "IHRvIGFuIGBlcnJDYXRlZ29yeWAgYW5kIGEgYHJlbWVkaWF0aW9uYCBhcnJheS4KCiMjIFByZS1m" + - "bGlnaHQKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18Cnwg" + - "YGt1YmVjdGwgbm90IG9uIFBBVEhgIHwgT3BlcmF0b3IncyBgJFBBVEhgIGRvZXNuJ3QgaW5jbHVk" + - "ZSBrdWJlY3RsIHwgSW5zdGFsbCBrdWJlY3RsIDEuMjgrOiBodHRwczovL2t1YmVybmV0ZXMuaW8v" + - "ZG9jcy90YXNrcy90b29scy9pbnN0YWxsLWt1YmVjdGwvIHwKfCBgaGVsbWZpbGUgbm90IG9uIFBB" + - "VEhgIHwgU2FtZSB8IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWxtZmlsZS9oZWxtZmlsZSNpbnN0YWxs" + - "YXRpb24gfAp8IGBoZWxtIG5vdCBvbiBQQVRIYCB8IFNhbWUgfCBodHRwczovL2hlbG0uc2gvZG9j" + - "cy9pbnRyby9pbnN0YWxsLyB8CnwgYEdhdGV3YXkgQVBJIENSRHMgbm90IGluc3RhbGxlZGAgfCBl" + - "bnZveS1nYXRld2F5IHByZXJlcSBtaXNzaW5nIHwgYGhlbG0gaW5zdGFsbCBlZyBvY2k6Ly9kb2Nr" + - "ZXIuaW8vZW52b3lwcm94eS9nYXRld2F5LWhlbG0gLS1uYW1lc3BhY2U9ZW52b3ktZ2F0ZXdheS1z" + - "eXN0ZW0gLS1jcmVhdGUtbmFtZXNwYWNlYCB8CnwgYGRlZmF1bHQgU3RvcmFnZUNsYXNzIG5vdCBh" + - "dmFpbGFibGVgIHwgQ2x1c3RlciBoYXMgbm8gZGVmYXVsdCBTQyB8IEFubm90YXRlIG9uZTogYGt1" + - "YmVjdGwgcGF0Y2ggc2MgPG5hbWU+IC1wICd7Im1ldGFkYXRhIjp7ImFubm90YXRpb25zIjp7InN0" + - "b3JhZ2VjbGFzcy5rdWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xhc3MiOiJ0cnVlIn19fSdgIHwK" + - "fCBgR1BVIG9wZXJhdG9yIG5vdCBpbnN0YWxsZWRgIChjb21wdXRlLXBsYW5lKSB8IG52aWRpYSBH" + - "UFUgb3BlcmF0b3IgbWlzc2luZyB8IEluc3RhbGwgcGVyIGh0dHBzOi8vZG9jcy5udmlkaWEuY29t" + - "L2RhdGFjZW50ZXIvY2xvdWQtbmF0aXZlL2dwdS1vcGVyYXRvci9sYXRlc3QvaW5zdGFsbC1ncHUt" + - "b3BlcmF0b3IuaHRtbCwgT1IgdXNlIGBmYWtlLWdwdS1vcGVyYXRvcmAgZm9yIGRldiB8CnwgYEdQ" + - "VSBub2RlIGxhYmVscyBtaXNzaW5nYCAoY29tcHV0ZS1wbGFuZSkgfCBOb2RlcyBuZWVkIGBudmlk" + - "aWEuY29tL2dwdS5mYW1pbHlgIGV0Yy4gfCBTZXQgYC0tazNzLW5vZGUtbGFiZWwgbnZpZGlhLmNv" + - "bS9ncHUuZmFtaWx5PWhvcHBlckBhZ2VudDpOYCBmb3IgazNkIHwKCiMjIEF1dGgKCnwgU3ltcHRv" + - "bSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGFkbWluIHRva2VuIHJl" + - "cXVpcmVkYCAoaW5pdCBub3QgcnVuKSB8IE5vIGB+Ly5udmNmLWNsaS5zdGF0ZWAgYW5kIGAtLXRv" + - "a2VuYCBub3QgcGFzc2VkIHwgYG52Y2YtY2xpIGluaXRgIChpbnRlcmFjdGl2ZSkgb3IgYC0tdG9r" + - "ZW49JEpXVCAtLW5vbi1pbnRlcmFjdGl2ZWAgKENJKSB8CnwgYFNpZ25lZCBKV1QgcmVqZWN0ZWQ6" + - "IEFub3RoZXIgYWxnb3JpdGhtIGV4cGVjdGVkLCBvciBubyBtYXRjaGluZyBrZXkocykgZm91bmRg" + - "IHwgU3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQgY29udHJvbCBwbGFuZSB8IGBy" + - "bSB+Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5pdGAgYWdhaW4gfAp8IGA0MDMg" + - "bWlzc2luZyByZXF1ZXN0ZWQgYXV0aG9yaXRpZXNgIChmdW5jdGlvbiBpbnZva2UpIHwgQWRtaW4g" + - "dG9rZW4gZG9lc24ndCBoYXZlIGBpbnZva2VfZnVuY3Rpb25gIHNjb3BlIHwgYG52Y2YtY2xpIGFw" + - "aS1rZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj3igKZgIHRoZW4gcmUtcnVuIGludm9rZSB8Cgoj" + - "IyBJbnN0YWxsIC8gYHVwYAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18" + - "LS0tfC0tLXwKfCBIZWxtIGB0aW1lZCBvdXQgd2FpdGluZyBmb3IgY2Fzc2FuZHJhYCB8IENhc3Nh" + - "bmRyYSBTdGF0ZWZ1bFNldCBQVkMgc3R1Y2sgYFBlbmRpbmdgIHwgQ29uZmlybSBkZWZhdWx0IFN0" + - "b3JhZ2VDbGFzczsgY2hlY2sgYGt1YmVjdGwgZ2V0IHB2LHB2YyAtbiBjYXNzYW5kcmEtc3lzdGVt" + - "YCB8CnwgYEludmFsaWQgR1BVICdOQ1AuR1BVLkgxMDAnIHNwZWNpZmllZGAgKGZ1bmN0aW9uIGRl" + - "cGxveSkgfCBXcm9uZyBmaWVsZCDigJQgYGdwdWAgaXMgdGhlIGZhbWlseSwgbm90IHRoZSBTS1Ug" + - "fCBVc2UgYCJncHUiOiAiSDEwMCJgLCBgImluc3RhbmNlVHlwZSI6ICJOQ1AuR1BVLkgxMDBfMXgi" + - "YCB8CnwgYHJlZ2lvbiBtdXN0IGJlIHByb3ZpZGVkYCAoY2x1c3RlciByZWdpc3RlciAvIGluc3Rh" + - "bGwgLS1jb21wdXRlLXBsYW5lKSB8IGAtLXJlZ2lvbmAgZW1wdHkgKyBgQ0xVU1RFUl9SRUdJT05g" + - "IGVudiBlbXB0eSB8IFBhc3MgYC0tcmVnaW9uPXVzLXdlc3QtMWAgKG9yIGFueSBub24tZW1wdHkg" + - "dmFsdWUpIHwKfCBgcmVxdWlyZWRFbnYgIk5DQV9JRCIgaXMgbm90IHNldGAgKGhlbG1maWxlIGVy" + - "cm9yIGR1cmluZyBjb21wdXRlLXBsYW5lIGFwcGx5KSB8IE9sZGVyIG52Y2YtY2xpIGJlZm9yZSBj" + - "b21taXQgYDZhYTU3MDRgOyBFeHRyYUVudiBub3QgcHJvcGFnYXRpbmcgTkNBX0lEIHwgVXBncmFk" + - "ZSBgbnZjZi1jbGlgIHRvIGEgcmVsZWFzZSBhZnRlciBgNmFhNTcwNGAgfAp8IGBudmNhLW9wZXJh" + - "dG9yOiBJbWFnZVB1bGxCYWNrT2ZmYCBmb3IgYG52Y2Etb3BlcmF0b3I6cHNhdGAgfCBJbWFnZSBu" + - "b3QgaW4gY2x1c3RlciByZWdpc3RyeTsgbXVsdGktY2x1c3RlciBidWlsZCBpcyBsb2NhbCB8IGBr" + - "M2QgaW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Etb3BlcmF0b3I6cHNhdCAtYyA8Y2x1c3Rl" + - "cj5gIHwKCiMjIENvbXB1dGUtcGxhbmUgcnVudGltZQoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1l" + - "ZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBOVkNBIGFnZW50IENyYXNoTG9vcEJhY2tPZmYgd2l0" + - "aCBgSFRUUCA0MDFgIG9uIGAvdjEvbnZjYS9jbHVzdGVycy8uLi4vcmVnaXN0ZXJgIHwgU3RhbGUg" + - "YG91dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIGZyb20gcHJpb3IgcmVnaXN0ZXI7" + - "IGNsdXN0ZXIgSUQgZG9lc24ndCBtYXRjaCBJQ01TIHwgRGVsZXRlIHRoZSBzdGFsZSBmaWxlOyBy" + - "ZS1ydW4gYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwYCAoaWRlbXBvdGVudCByZWdpc3RlciB3cml0" + - "ZXMgYSBmcmVzaCBmaWxlKSB8CnwgYE5vIGNsdXN0ZXIgZm91bmQgd2l0aCB2YWxpZCBKV0tTIGZv" + - "ciBjbHVzdGVyIElEOiA8aWQ+YCAoSUNNUyBsb2cpIHwgSldLUyBpbiBJQ01TIGRvZXNuJ3QgbWF0" + - "Y2ggd2hhdCBjb21wdXRlLXBsYW5lIEs4cyBpcyBjdXJyZW50bHkgc2lnbmluZyB8IGBudmNmLWNs" + - "aSBjbHVzdGVyIHJvdGF0ZSAtLWNsdXN0ZXItaWQ9PGlkPmAgfAp8IEZ1bmN0aW9uIHBvZCBgSW1h" + - "Z2VQdWxsQmFja09mZmAgaW4gYG52Y2YtYmFja2VuZGAgfCBJbWFnZS1jcmVkZW50aWFsLWhlbHBl" + - "ciBjb25maWcgbWlzc2luZyBvciB3cm9uZyB8IGBrdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiBudmNm" + - "LWJhY2tlbmQgPHBvZD5gOyBjaGVjayB0aGUgcHVsbCBzZWNyZXQgY29uZmlnIHwKfCBGdW5jdGlv" + - "biBkZXBsb3kgc3R1Y2sgYERFUExPWUlOR2AgZm9yID41IG1pbiB8IE5BVFMgc3RyZWFtIGluaXQg" + - "bGFnIChjb2xkLWNsdXN0ZXIpIOKAlCB3YWl0LCBvciBjaGVjayBOQVRTIGF1dGgtY2FsbG91dCBo" + - "ZWFsdGggfCBga3ViZWN0bCBsb2dzIC1uIG5hdHMtc3lzdGVtIC1sIGFwcC5rdWJlcm5ldGVzLmlv" + - "L25hbWU9bmF0cy1hdXRoLWNhbGxvdXQtc2VydmljZWAgfAoKIyMgVGFza3MKCnwgU3ltcHRvbSB8" + - "IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYHRhc2sgY3JlYXRlYCByZXR1" + - "cm5zIGBNaXNzaW5nIDxUWVBFPiByZWdpc3RyeSBjcmVkZW50aWFsIGZvciBob3N0bmFtZWAsIG9y" + - "IGtlZXBzIHVzaW5nIGEgcHJldmlvdXMgY3JlZGVudGlhbCB2YWx1ZSwgc2hvcnRseSBhZnRlciBg" + - "cmVnaXN0cnktY3JlZGVudGlhbCBhZGQvdXBkYXRlL2RlbGV0ZWAgd2hpbGUgYHJlZ2lzdHJ5LWNy" + - "ZWRlbnRpYWwgbGlzdGAvYGdldGAgYWxyZWFkeSBzaG93IHRoZSBuZXcgdmFsdWUgfCBFeHBlY3Rl" + - "ZCBwcm9wYWdhdGlvbiBkZWxheTogTlZDVCBjYWNoZXMgdGhlIGFjY291bnQncyByZWdpc3RyeSBj" + - "cmVkZW50aWFscyB3aXRoIGBudmN0Lm52Y2YuY2FjaGUtdHRsYCAoZGVmYXVsdCBgUFQ1TWAsIGFi" + - "b3V0IDUgbWluKSBhbmQgYXBwbGllcyB0aGUgY2hhbmdlIHdoZW4gdGhhdCBjYWNoZWQgY29weSBy" + - "ZWZyZXNoZXMgfCBXYWl0IHVwIHRvIGFib3V0IDUgbWluIGFuZCByZXRyeSwgb3IgYGt1YmVjdGwg" + - "LW4gbnZjZiByb2xsb3V0IHJlc3RhcnQgZGVwbG95bWVudC9udmN0LWFwaWAgdG8gYXBwbHkgaW1t" + - "ZWRpYXRlbHkgfApQSwcI864ThHQRAAB0EQAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAsAAkA" + - "ZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vU0tJTEwubWRVVAUAAQCmzhItLS0K" + - "bmFtZTogbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uCmRlc2NyaXB0aW9uOiA+LQogIElu" + - "c3RhbGwgYW5kIG9wZXJhdGUgTlZDRiBzZWxmLWhvc3RlZCBjb250cm9sLXBsYW5lIGFuZCBzZXBh" + - "cmF0ZSBjb21wdXRlLXBsYW5lCiAgc3RhY2tzLiBDb3ZlcnMgSGVsbWZpbGUgdmFsdWVzIGFuZCBD" + - "TEkgcHJvZmlsZSBpbnN0YWxsYXRpb24gZmxvd3MsIHRlYXJkb3duLAogIHZhbHVlcyBvdmVycmlk" + - "ZXMsIHB1bGwgc2VjcmV0cywgYW5kIHRyb3VibGVzaG9vdGluZy4gVXNlIGZvcgogIG52Y2Ytc2Vs" + - "Zi1tYW5hZ2VkLXN0YWNrLCBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2ssIHNwbGl0IGNvbXB1dGUt" + - "cGxhbmUKICBpbnN0YWxsYXRpb24sIGNvbnRyb2wtcGxhbmUgaW5zdGFsbGF0aW9uLCBDTEktZ2Vu" + - "ZXJhdGVkIGNvbnRyb2wtcGxhbmUKICBwcm9maWxlcywgSGVsbWZpbGUsIHNlbGYtbWFuYWdlZCwg" + - "b3Igc2VsZi1ob3N0ZWQgZGVwbG95bWVudHMuIERvIE5PVCB1c2UgZm9yCiAgbG9jYWwgazNkIGVu" + - "dmlyb25tZW50czsgdXNlIHRoZSBsb2NhbCBrM2QgZGV2ZWxvcG1lbnQgd29ya2Zsb3cgaW5zdGVh" + - "ZC4KbGljZW5zZTogQXBhY2hlLTIuMApjb21wYXRpYmlsaXR5OiBSZXF1aXJlcyBoZWxtZmlsZSA+" + - "PSAxLjEuMCA8IDEuMi4wLCBoZWxtID49IDMuMTIsIGhlbG0tZGlmZiBwbHVnaW4sIGt1YmVjdGwg" + - "bWF0Y2hpbmcgY2x1c3RlciB2ZXJzaW9uCmF1dGhvcjogIm52Y2YtY29yZS1lbmcgPG52Y2YtY29y" + - "ZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCnZlcnNpb246ICIxLjAuMCIKdGFnczogW252Y2Ys" + - "IHNlbGYtbWFuYWdlZCwgaGVsbWZpbGUsIHNlbGYtaG9zdGVkLCBjb250cm9sLXBsYW5lLCBjb21w" + - "dXRlLXBsYW5lLCBjbGktcHJvZmlsZSwgaW5zdGFsbGF0aW9uLCBkZXBsb3ltZW50LCBwdWxsLXNl" + - "Y3JldHNdCnRvb2xzOiBbU2hlbGwsIFJlYWQsIEVkaXQsIEdyZXAsIEdsb2JdCm1ldGFkYXRhOgog" + - "IGludGVybmFsOiBmYWxzZQogIGF1dGhvcjogIm52Y2YtY29yZS1lbmcgPG52Y2YtY29yZS1lbmdA" + - "ZXhjaGFuZ2UubnZpZGlhLmNvbT4iCiAgdmVyc2lvbjogIjEuMCIKICB0YWdzOiBbbnZjZiwgc2Vs" + - "Zi1tYW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQsIGNvbnRyb2wtcGxhbmUsIGNvbXB1dGUt" + - "cGxhbmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24sIGRlcGxveW1lbnQsIHB1bGwtc2VjcmV0" + - "c10KICBsYW5ndWFnZXM6IFtiYXNoLCB5YW1sXQogIGZyYW1ld29ya3M6IFtoZWxtZmlsZSwgaGVs" + - "bSwga3ViZWN0bF0KICBkb21haW46IGNsb3VkLWluZnJhc3RydWN0dXJlCi0tLQoKIyBOVkNGIFNl" + - "bGYtTWFuYWdlZCBTdGFjayBPcGVyYXRpb25zCgpPcGVyYXRpb25hbCBndWlkZSBmb3IgbWF0Y2hp" + - "bmcgTlZDRiBjb250cm9sLXBsYW5lIGFuZCBjb21wdXRlLXBsYW5lIEhlbG1maWxlIGJ1bmRsZXMu" + - "CgojIyBJbnN0cnVjdGlvbnMKClVzZSB0aGlzIHNraWxsIGZvciBpbnN0YWxsLCB1cGdyYWRlLCBv" + - "ciB0ZWFyZG93biB3b3JrIGluIG1hdGNoaW5nIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgYW5k" + - "IGBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXM7IGtlZXAgSGVsbWZpbGUgdmFsdWVz" + - "IGFuZCBDTEkgcHJvZmlsZSBoYW5kb2ZmcyBzZXBhcmF0ZS4gRm9yIGBmdW5jdGlvblR5cGU6ICJM" + - "TE0iYCwgcmVhZCBbTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnRdKHJlZmVyZW5jZXMvaGVsbWZpbGUt" + - "c3RydWN0dXJlLm1kI2xsbS1mdW5jdGlvbi1lbmFibGVtZW50KS4KCiMjIFByZXJlcXVpc2l0ZXMK" + - "CkFzayBmb3IgdGhlIGV4dHJhY3RlZCBgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2tgIHBhdGguIEZv" + - "ciBzcGxpdCBpbnN0YWxsYXRpb24sCmFsc28gcmVxdWlyZSB0aGUgbWF0Y2hpbmctdmVyc2lvbiBg" + - "bnZjZi1jb21wdXRlLXBsYW5lLXN0YWNrYCBwYXRoLiBWZXJpZnkgYm90aDoKCmBgYGJhc2gKbHMg" + - "PGNvbnRyb2wtcGxhbmUtc3RhY2s+L2hlbG1maWxlLmQvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9l" + - "bnZpcm9ubWVudHMvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9zZWNyZXRzLyA8Y29udHJvbC1wbGFu" + - "ZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmxzIDxjb21wdXRlLXBsYW5lLXN0YWNrPi9oZWxt" + - "ZmlsZS5kLyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZW52aXJvbm1lbnRzLyA8Y29tcHV0ZS1wbGFu" + - "ZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmBgYAoKSWYgZWl0aGVyIGRpcmVjdG9yeSBpcyBt" + - "aXNzaW5nLCBkb3dubG9hZCBtYXRjaGluZyBidW5kbGUgdmVyc2lvbnMgZnJvbSBOR0M6CgpgYGBi" + - "YXNoCm5nYyByZWdpc3RyeSByZXNvdXJjZSBkb3dubG9hZC12ZXJzaW9uIDxvcmc+L252Y2Ytc2Vs" + - "Zi1tYW5hZ2VkLXN0YWNrOjx2ZXJzaW9uPgpuZ2MgcmVnaXN0cnkgcmVzb3VyY2UgZG93bmxvYWQt" + - "dmVyc2lvbiA8b3JnPi9udmNmLWNvbXB1dGUtcGxhbmUtc3RhY2s6PHZlcnNpb24+CmBgYAoKQ29u" + - "dHJvbC1wbGFuZSBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhlIGNvbnRyb2wtcGxhbmUgYnVuZGxl" + - "IHJvb3QuIFNwbGl0LWZsb3cKY29tbWFuZHMgYW5kIHJvb3Qgc3Vic3RpdHV0aW9uIGFyZSBpbgpb" + - "U3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFu" + - "ZS1pbnN0YWxsYXRpb24ubWQpLgoKIyMgQmVmb3JlIFlvdSBTdGFydAoKVmVyaWZ5IHRvb2xpbmcg" + - "YW5kIGNvbnRleHQgYmVmb3JlIGFueSBvcGVyYXRpb246CgpgYGBiYXNoCmhlbG1maWxlIC0tdmVy" + - "c2lvbiAgICMgTXVzdCBiZSAxLjEueCAoMS4yLjAgcmVtb3ZlZCBzZXF1ZW50aWFsIG1vZGUpCmhl" + - "bG0gdmVyc2lvbiAgICAgICAgICMgTXVzdCBiZSA+PSAzLjEyCmhlbG0gcGx1Z2luIGxpc3QgICAg" + - "ICMgTXVzdCBpbmNsdWRlIGhlbG0tZGlmZiA+PSAzLjExCmt1YmVjdGwgdmVyc2lvbiAgICAgICMg" + - "Q2xpZW50IG11c3QgYmUgd2l0aGluIDEgbWlub3IgdmVyc2lvbiBvZiBjbHVzdGVyCmBgYAoKQ29u" + - "dHJvbC1wbGFuZSBjb21tYW5kcyBydW4gZnJvbSB0aGUgZXh0cmFjdGVkIGBudmNmLXNlbGYtbWFu" + - "YWdlZC1zdGFjay9gIHJvb3Q6CgpgYGBiYXNoCmNkIHBhdGgvdG8vbnZjZi1zZWxmLW1hbmFnZWQt" + - "c3RhY2sKbHMgaGVsbWZpbGUuZC8gZW52aXJvbm1lbnRzLyBzZWNyZXRzLyBnbG9iYWwueWFtbC5n" + - "b3RtcGwKYGBgCgpJZGVudGlmeSB0aGUgZW52aXJvbm1lbnQgZnJvbSBgZW52aXJvbm1lbnRzLzxu" + - "YW1lPi55YW1sYCBhbmQKYHNlY3JldHMvPG5hbWU+LXNlY3JldHMueWFtbGA7IGZvciBFS1MsIHVz" + - "ZSB0aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2RvY3MubnZp" + - "ZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4KCiMjIEhvdyBW" + - "YWx1ZXMgRmxvdwoKVW5kZXJzdGFuZGluZyB2YWx1ZSBwcmVjZWRlbmNlIHByZXZlbnRzIHRoZSBt" + - "b3N0IGNvbW1vbiBjb25maWd1cmF0aW9uIG1pc3Rha2VzLgoKYGBgdGV4dAplbnZpcm9ubWVudHMv" + - "YmFzZS55YW1sICAgICAgICAgIChkZWZhdWx0cykKICAgIC0+IG1lcmdlZCB3aXRoCmVudmlyb25t" + - "ZW50cy88ZW52Pi55YW1sICAgICAgICAgKHlvdXIgb3ZlcnJpZGVzKQogICAgLT4gY29uc3VtZWQg" + - "YnkKZ2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAoR28gdGVtcGxhdGUsIGNvbnN0cnVj" + - "dHMgcGVyLWNoYXJ0IHZhbHVlcykKICAgIC0+IGNvbnN1bWVkIGJ5CnNlY3JldHMvPGVudj4tc2Vj" + - "cmV0cy55YW1sICAgICAgKHNlbnNpdGl2ZSB2YWx1ZXMpCiAgICAtPiBvdmVycmlkZGVuIGJ5CnJl" + - "bGVhc2UgaW5saW5lIHZhbHVlczogYmxvY2tzICAgKGhpZ2hlc3QgcHJlY2VkZW5jZSkKYGBgCgpD" + - "cml0aWNhbDogYGdsb2JhbC55YW1sLmdvdG1wbGAgb25seSBwYXNzZXMgdGhyb3VnaCBzcGVjaWZp" + - "YyBrZXlzIHRvIGVhY2ggY2hhcnQgKGltYWdlIHJlZ2lzdHJpZXMsIG5vZGUgc2VsZWN0b3JzLCBz" + - "dG9yYWdlLCByZXBsaWNhIGNvdW50cykuIFNldHRpbmcgYW4gYXJiaXRyYXJ5IGNoYXJ0IHZhbHVl" + - "IGluIHRoZSBlbnZpcm9ubWVudCBmaWxlIHdpbGwgYmUgc2lsZW50bHkgaWdub3JlZCBpZiBgZ2xv" + - "YmFsLnlhbWwuZ290bXBsYCBkb2VzIG5vdCBwcm9wYWdhdGUgaXQuCgpUbyBvdmVycmlkZSBhcmJp" + - "dHJhcnkgY2hhcnQgdmFsdWVzLCB1c2UgYSBoZWxtZmlsZSByZWxlYXNlIGB2YWx1ZXM6YCBibG9j" + - "ay4gU2VlIFtPdmVycmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzXSgjb3ZlcnJpZGluZy1oZWxtLWNo" + - "YXJ0LXZhbHVlcykuCgojIyBDbGVhbiBJbnN0YWxsYXRpb24KCiMjIyAxLiBDcmVhdGUgbmFtZXNw" + - "YWNlcyBhbmQgaW1hZ2UgcHVsbCBzZWNyZXRzIChpZiB1c2luZyBhIHByaXZhdGUgcmVnaXN0cnkp" + - "CgpgYGBiYXNoCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBp" + - "LWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgY3Jl" + - "YXRlIG5hbWVzcGFjZSAiJG5zIiAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFw" + - "cGx5IC1mIC0KZG9uZQoKIyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkg" + - "KGUuZy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmZvciBu" + - "cyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2" + - "YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2Nr" + - "ZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAg" + - "ICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3Jk" + - "PSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1j" + - "bGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpkb25lCmBgYAoKSWYgdXNpbmcgcHVs" + - "bCBzZWNyZXRzLCB5b3UgbXVzdCBhbHNvIGNvbmZpZ3VyZSBlYWNoIGhlbG1maWxlIHJlbGVhc2Ug" + - "dG8gcmVmZXJlbmNlIHRoZW0uIFNlZSBbSW1hZ2UgUHVsbCBTZWNyZXRzXSgjaW1hZ2UtcHVsbC1z" + - "ZWNyZXRzKS4KCiMjIyAyLiBBdXRoZW50aWNhdGUgaGVsbSB0byB5b3VyIGNoYXJ0IHJlZ2lzdHJ5" + - "CgpCb3RoIGBkb2NrZXIgbG9naW5gIEFORCBgaGVsbSByZWdpc3RyeSBsb2dpbmAgYXJlIHJlcXVp" + - "cmVkIGZvciBOR0MuIEhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kg" + - "Y2hhcnRzLCBzbyB0aGUgaGVsbSBjcmVkZW50aWFsIHN0b3JlIG11c3QgYmUgYXV0aGVudGljYXRl" + - "ZCBzZXBhcmF0ZWx5LgoKYGBgYmFzaAojIE5HQyAtLSBib3RoIGNvbW1hbmRzIGFyZSByZXF1aXJl" + - "ZApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVki" + - "CmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQ" + - "SV9LRVkiCgojIEVDUgphd3MgZWNyIGdldC1sb2dpbi1wYXNzd29yZCAtLXJlZ2lvbiA8cmVnaW9u" + - "PiB8IFwKICBoZWxtIHJlZ2lzdHJ5IGxvZ2luIC0tdXNlcm5hbWUgQVdTIC0tcGFzc3dvcmQtc3Rk" + - "aW4gPGFjY291bnQ+LmRrci5lY3IuPHJlZ2lvbj4uYW1hem9uYXdzLmNvbQpgYGAKCj4gTm90ZTog" + - "YGhlbG0gcmVnaXN0cnkgbG9naW5gIGtlZXBzIG9ubHkgdGhlIGxhc3QgbG9naW4gcGVyIGhvc3Qg" + - "KG11bHRpLW9yZyBnb3RjaGEpLgo+IFRoZSBzdGFjayBhbmQgdGhlIGNhY2hlcyBzcGFuIHNldmVy" + - "YWwgTkdDIG9yZ3MgdGhhdCBuZWVkIGRpZmZlcmVudCBrZXlzLCBidXQgdGhleSBhbGwKPiBsaXZl" + - "IHVuZGVyIHRoZSBvbmUgaG9zdCBgbnZjci5pb2AuIEEgc2Vjb25kIGBoZWxtIHJlZ2lzdHJ5IGxv" + - "Z2luIG52Y3IuaW9gIChvcgo+IGBkb2NrZXIgbG9naW5gKSB3aXRoIGEgZGlmZmVyZW50IGtleSBz" + - "aWxlbnRseSBvdmVyd3JpdGVzIHRoZSBmaXJzdCwgc28gcHVsbHMgZm9yIHRoZQo+IGZpcnN0IG9y" + - "ZyB0aGVuIGZhaWwgd2l0aCBhIG1pc2xlYWRpbmcgYDQwMyBBY2Nlc3MgRGVuaWVkYCAobm90IGEg" + - "NDAxOiB0aGUgYXV0aAo+IHN1Y2NlZWRlZCwgaXQncyB0aGUgd3Jvbmctb3JnIGtleSkuIElmIHlv" + - "dSBwdWxsIGNoYXJ0cy9pbWFnZXMgZnJvbSBtb3JlIHRoYW4gb25lIG9yZywKPiBlaXRoZXIgcmUt" + - "cnVuIHRoZSBsb2dpbiB3aXRoIHRoZSBjb3JyZWN0IGtleSBpbW1lZGlhdGVseSBiZWZvcmUgZWFj" + - "aCBwdWxsLCBvciBwYXNzCj4gYC0tdXNlcm5hbWUgJyRvYXV0aHRva2VuJyAtLXBhc3N3b3JkIDxr" + - "ZXk+YCBwZXIgYGhlbG0gcHVsbGAgaW52b2NhdGlvbiBpbnN0ZWFkIG9mIHJlbHlpbmcKPiBvbiB0" + - "aGUgc3RvcmVkIGxvZ2luLiAoUHVsbGluZyBldmVyeXRoaW5nIGZyb20gYSBzaW5nbGUgcmVnaXN0" + - "cnkgbWlycm9yIGF2b2lkcyB0aGlzCj4gZW50aXJlbHkuKQoKIyMjIDJiLiAoUmVjb21tZW5kZWQp" + - "IFB1bGwgZnJvbSBhIHJlZ2lzdHJ5IHRoZSBjbHVzdGVyIGF1dGhlbnRpY2F0ZXMgdG8gYXV0b21h" + - "dGljYWxseQoKSWYgeW91IG1pcnJvciB0aGUgTlZDRiBpbWFnZXMgaW50byBhIHJlZ2lzdHJ5IHRo" + - "YXQgdGhlIGNsdXN0ZXIgY2FuIHB1bGwgZnJvbSB3aXRob3V0IGFuCmV4cGxpY2l0IGltYWdlIHB1" + - "bGwgc2VjcmV0IChmb3IgZXhhbXBsZSwgYSByZWdpc3RyeSB3aGVyZSB0aGUgbm9kZSBvciB3b3Jr" + - "bG9hZCBpZGVudGl0eSBpcwpncmFudGVkIHB1bGwgYWNjZXNzIGF1dG9tYXRpY2FsbHkpLCBwb2lu" + - "dCB0aGUgc3RhY2sgYXQgaXQgYW5kIHNraXAgdGhlIGNyZWRlbnRpYWwgc3RlcHMKYWJvdmUuCgox" + - "LiBQb2ludCB0aGUgc3RhY2sgYXQgdGhlIG1pcnJvciBpbiBgZW52aXJvbm1lbnRzLzxlbnY+Lnlh" + - "bWxgOgoKICAgYGBgeWFtbAogICBnbG9iYWw6CiAgICAgaW1hZ2U6CiAgICAgICByZWdpc3RyeTog" + - "PHlvdXItcmVnaXN0cnk+ICAgICAgICAgICAgIyBlLmcuIHJlZ2lzdHJ5LmV4YW1wbGUuY29tCiAg" + - "ICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICAgIGhlbG06CiAgICAgICBzb3Vy" + - "Y2VzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25seSBpZiB5b3UgYWxzbyBtaXJy" + - "b3JlZCB0aGUgaGVsbSBjaGFydHMKICAgICAgICAgcmVnaXN0cnk6IDx5b3VyLXJlZ2lzdHJ5Pgog" + - "ICAgICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICBgYGAKCiAgID4gVGhlIG1h" + - "bmlmZXN0IGhhcyBhIG1peCBvZiBPQ0kgYW5kIG5vbi1PQ0kgYXJ0aWZhY3RzLCBzbyBjb252ZXJ0" + - "IG5vbi1PQ0kgY2hhcnRzIGJlZm9yZQogICA+IG1pcnJvcmluZy4gQ29udGFpbmVyIGltYWdlcyAo" + - "YG52Y3IuaW8vLi4uYCkgYXJlIGFscmVhZHkgT0NJIGFuZCBtaXJyb3IgYXMtaXMuIFNvbWUgSGVs" + - "bQogICA+IGNoYXJ0cywgdGhvdWdoLCBhcmUgcHVibGlzaGVkIHRvIGFuIGBodHRwczovL2AgSGVs" + - "bSByZXBvc2l0b3J5IChmb3IgZXhhbXBsZQogICA+IGBoZWxtLm5nYy5udmlkaWEuY29tYCkuIFRo" + - "b3NlIGFyZSBub3QgT0NJIGFuZCBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgYGdsb2JhbC5oZWxtLnNv" + - "dXJjZXNgCiAgID4gKE9DSSkgb3IgbWlycm9yZWQgZGlyZWN0bHkuIEJlZm9yZSBwb2ludGluZyB0" + - "aGUgc3RhY2sgYXQgeW91ciBtaXJyb3IsIGNvbnZlcnQgZWFjaAogICA+IGBodHRwczovL2AgY2hh" + - "cnQgdG8gT0NJOiBgaGVsbSByZXBvIGFkZGAvYGhlbG0gcHVsbGAgdGhlIGAudGd6YCwgdGhlbgog" + - "ICA+IGBoZWxtIHB1c2ggPGNoYXJ0Pi50Z3ogb2NpOi8vPHlvdXItcmVnaXN0cnk+LzxtaXJyb3It" + - "c3ViLXBhdGg+YC4gT25seSBPQ0kgY2hhcnRzIGNhbiBsaXZlCiAgID4gdW5kZXIgYGdsb2JhbC5o" + - "ZWxtLnNvdXJjZXNgLgoKMi4gU2tpcCB0aGUgY3JlZGVudGlhbCBzdGVwcyBhYm92ZS4gV2hlbiB0" + - "aGUgY2x1c3RlciBhdXRoZW50aWNhdGVzIHRvIHRoZSByZWdpc3RyeQogICBhdXRvbWF0aWNhbGx5" + - "ICh0aGUgbm9kZSBvciB3b3JrbG9hZCBpZGVudGl0eSBoYXMgcHVsbCBhY2Nlc3MpLCB0aGUgcHVs" + - "bCBuZWVkcyBubwogICBLdWJlcm5ldGVzIHNlY3JldCwgc28geW91IGRvIG5vdCBuZWVkOiB0aGUg" + - "cGVyLW5hbWVzcGFjZSBgbnZjci1jcmVkc2AgZnJvbSBzdGVwIDEKICAgKHN0aWxsIGNyZWF0ZSB0" + - "aGUgbmFtZXNwYWNlcywganVzdCBub3QgdGhlIHNlY3JldCksIHRoZSBgZ2xvYmFsLmltYWdlUHVs" + - "bFNlY3JldHNgIGVudHJ5LAogICBvciB0aGUgYGRvY2tlciBsb2dpbmAvYGhlbG0gcmVnaXN0cnkg" + - "bG9naW4gbnZjci5pb2AgZnJvbSBzdGVwIDIuCgogICA+IE9uZSByZXNpZHVhbCBjcmVkZW50aWFs" + - "OiBudmNmLWFwaSBzdGlsbCB2YWxpZGF0ZXMgdGhlIHVzZXIgZnVuY3Rpb24gaW1hZ2UgYXQKICAg" + - "PiBgZnVuY3Rpb24gY3JlYXRlYCB2aWEgdGhlIGFjY291bnQgcmVnaXN0cnkgY3JlZGVudGlhbCwg" + - "c28gdGhhdCBjcmVkZW50aWFsIG11c3QgcG9pbnQgYXQKICAgPiB3aGljaGV2ZXIgcmVnaXN0cnkg" + - "aG9sZHMgdGhlIHVzZXIgaW1hZ2UgKHNldCBpdCB0byB5b3VyIG1pcnJvciBpZiB0aGUgaW1hZ2Ug" + - "aXMgbWlycm9yZWQKICAgPiB0aGVyZSkuCgojIyMgMy4gU2V0IHRoZSByb3V0ZSBkb21haW4KCmBn" + - "bG9iYWwuZG9tYWluYCBzZXRzIHRoZSBob3N0bmFtZSBzdWZmaXggZm9yIHJvdXRlcyBzdWNoIGFz" + - "IGBhcGkuPGRvbWFpbj5gLiBJdCBkb2VzIG5vdCBjb25maWd1cmUgdGhlIEdhdGV3YXkgb3IgaXRz" + - "IGxvYWQgYmFsYW5jZXIuIFF1ZXJ5IHRoZSBleGFjdCBleGlzdGluZyBHYXRld2F5OgoKYGBgYmFz" + - "aApHQVRFV0FZX0FERFJFU1M9JChrdWJlY3RsIGdldCBnYXRld2F5IDxnYXRld2F5LW5hbWU+IC1u" + - "IDxnYXRld2F5LW5hbWVzcGFjZT4gLW8ganNvbnBhdGg9J3suc3RhdHVzLmFkZHJlc3Nlc1swXS52" + - "YWx1ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSRVNTIgpgYGAKClRoZSBhZGRyZXNzIG1heSBi" + - "ZSBhIGhvc3RuYW1lIG9yIElQLiBDbG91ZCBwcm92aWRlciBhbmQgR2F0ZXdheSBjb25maWd1cmF0" + - "aW9uIGRldGVybWluZSB0aGUgbG9hZCBiYWxhbmNlciB0eXBlIGFuZCBhZGRyZXNzIGZvcm1hdC4g" + - "VGhlIHNlbGYtbWFuYWdlZCBzdGFjayBkb2VzIG5vdCBzZWxlY3QgZWl0aGVyLgoKRm9yIHRlbXBv" + - "cmFyeSB0ZXN0aW5nIHdpdGhvdXQgRE5TLCB1c2UgYSBzdGFibGUgcmVzZXJ2ZWQgc3VmZml4IHN1" + - "Y2ggYXMgYGdsb2JhbC5kb21haW46ICJudmNmLnRlc3QiYCwgY29ubmVjdCB0byBgR0FURVdBWV9B" + - "RERSRVNTYCwgYW5kIHNlbmQgYEhvc3Q6IGFwaS5udmNmLnRlc3RgLiBGb3IgcHJvZHVjdGlvbiwg" + - "dXNlIHlvdXIgYmFzZSBETlMgZG9tYWluIGFuZCBwb2ludCBpdHMgcm91dGUgcmVjb3JkcyB0byBg" + - "R0FURVdBWV9BRERSRVNTYC4gSWYgdGhlIGVuZHBvaW50IGxhdGVyIGNoYW5nZXMsIGtlZXAgYGds" + - "b2JhbC5kb21haW5gIHN0YWJsZSBhbmQgdXBkYXRlIG9ubHkgRE5TIG9yIHRoZSBjbGllbnQgZGVz" + - "dGluYXRpb24uIFNlZSBFeGFtcGxlIDQgaW4gW2V4YW1wbGVzLm1kXShleGFtcGxlcy5tZCkuCgoj" + - "IyMgNC4gUHJldmlldyBhbmQgZGVwbG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+" + - "IGhlbG1maWxlIHRlbXBsYXRlICAgIyBQcmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0cwpIRUxNRklM" + - "RV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSBzeW5jICAgICAgICMgRGVwbG95CmBgYAoKPiBTZXQg" + - "Qk9USCBDYXNzYW5kcmEgcGFzc3dvcmRzIGluIHRoZSBzZWNyZXRzIGZpbGUuIFRoZSBzZWNyZXRz" + - "IGZpbGUgZG9jdW1lbnRzCj4gYERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYCwgYnV0IHRoZSBj" + - "YXNzYW5kcmEgY2hhcnQgaGFzIGEgc2Vjb25kIGNyZWRlbnRpYWwsCj4gYGNhc3NhbmRyYS5zZXJ2" + - "aWNlUm9sZVBhc3N3b3JkYCwgdGhhdCBkZWZhdWx0cyB0byBgY2hAbmczbTNgLiBJZiB5b3Ugc2V0" + - "IG9ubHkKPiBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgLCB0aGUgc2VydmljZSByb2xlIGtl" + - "ZXBzIHRoYXQgZGVmYXVsdCBhbmQgZXZlcnkgREItYmFja2VkCj4gc2VydmljZSBjcmFzaC1sb29w" + - "cyB3aXRoIGBCYWQgY3JlZGVudGlhbHNgIG9uY2UgaXQgdHJpZXMgdG8gYXV0aGVudGljYXRlLiBT" + - "ZXQKPiBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHRvIHRoZSBzYW1lIHZhbHVlIGFz" + - "IGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAuCgojIyMgNS4gRGVwbG95bWVudCBwaGFzZXMK" + - "CkhlbG1maWxlIGRlcGxveXMgaW4gb3JkZXIgd2l0aCBkZXBlbmRlbmNpZXM6Cgp8IFBoYXNlIHwg" + - "U2VsZWN0b3IgfCBTZXJ2aWNlcyB8IFdhaXQgdGltZSB8CnwtLS0tLS0tfC0tLS0tLS0tLS18LS0t" + - "LS0tLS0tLXwtLS0tLS0tLS0tLXwKfCAxIHwgYHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzYCB8" + - "IE5BVFMsIE9wZW5CYW8sIENhc3NhbmRyYSB8IDUtMTAgbWluIHwKfCAyIHwgYHJlbGVhc2UtZ3Jv" + - "dXA9c2VydmljZXNgIHwgQVBJLCBTSVMsIEVTUywgaW52b2NhdGlvbiwgZ3JwYy1wcm94eSwgbm90" + - "YXJ5LCBhcGkta2V5cywgb3B0aW9uYWwgTExNIGdhdGV3YXkvcm91dGVyLCBvcHRpb25hbCBWYW5p" + - "dHkgR2F0ZXdheSwgTlZDRiBVSSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoZSBh" + - "ZGRvbiB8IDUtMTAgbWluIHwKfCAzIHwgYHJlbGVhc2UtZ3JvdXA9aW5ncmVzc2AgfCBHYXRld2F5" + - "IHJvdXRlcyB8IDEtMiBtaW4gfAp8IDQgfCBgcmVsZWFzZS1ncm91cD1vYnNlcnZhYmlsaXR5YCB8" + - "IE9ic2VydmFiaWxpdHkgc3RhY2sgKGlmIGVuYWJsZWQpIHwgMS0yIG1pbiB8CgpNb25pdG9yIGlu" + - "IGEgc2VwYXJhdGUgdGVybWluYWw6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLXcKYGBg" + - "CgojIyMgNi4gRW5hYmxlIFZhbml0eSBHYXRld2F5IChvcHRpb25hbCkKClZhbml0eSBHYXRld2F5" + - "IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgYW5kIGlzIG9ubHkgbmVlZGVkIGZvciBjdXN0b21lci1m" + - "YWNpbmcKaG9zdG5hbWVzIG9yIHBhdGggbWFwcGluZ3MgaW4gZnJvbnQgb2YgdGhlIHN0YW5kYXJk" + - "IE5WQ0YgQVBJIGFuZCBpbnZvY2F0aW9uCnJvdXRlcy4gSXQgaXMgYXZhaWxhYmxlIG9ubHkgaW4g" + - "c3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBWYW5pdHkgR2F0ZXdheQphZGRvbi4gSWYg" + - "dGhlIGV4dHJhY3RlZCBzdGFjayBwYWNrYWdlIGRvZXMgbm90IGNvbnRhaW4gYSBgdmFuaXR5LWdh" + - "dGV3YXlgCnJlbGVhc2UgYW5kIGB2YW5pdHlHYXRld2F5YCByb3V0ZSB2YWx1ZXMsIHNraXAgdGhl" + - "c2UgY29tbWFuZHMgYW5kIHVzZSBhIG5ld2VyCnN0YWNrIHBhY2thZ2UgdGhhdCBpbmNsdWRlcyB0" + - "aGVtLgoKSWYgdGhlIHN0YWNrIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLCBlbmFibGUgaXQg" + - "aW4KYGVudmlyb25tZW50cy88ZW52LW5hbWU+LnlhbWxgOgoKYGBgeWFtbAphZGRvbnM6CiAgdmFu" + - "aXR5R2F0ZXdheToKICAgIGVuYWJsZWQ6IHRydWUKICAgIG1hcHBpbmdDb25maWc6IHt9CmBgYAoK" + - "VGhlIGRlZmF1bHQgcm91dGUgaG9zdCBpcyBgdmFuaXR5Ljxkb21haW4+YCBhbmQgdGhlIGJhY2tl" + - "bmQgaXMKYHZhbml0eS1nYXRld2F5Lm52Y2Y6ODA4MGAuIFB1dCBkZXBsb3ltZW50LXNwZWNpZmlj" + - "IGhvc3QgYW5kIHBhdGggbWFwcGluZ3MgdW5kZXIKYGFkZG9ucy52YW5pdHlHYXRld2F5Lm1hcHBp" + - "bmdDb25maWdgLiBJZiB5b3UgbmVlZCBjdXN0b20gdmFuaXR5IGhvc3RzIGluc3RlYWQgb2YKYHZh" + - "bml0eS48ZG9tYWluPmAsIHVzZSB0aGUgcm91dGUgaG9zdG5hbWUgb3ZlcnJpZGVzIHN1cHBvcnRl" + - "ZCBieSB0aGUgc3RhY2sKcGFja2FnZSBhbmQgY3JlYXRlIG1hdGNoaW5nIEROUyByZWNvcmRzLgoK" + - "QWZ0ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYHZhbml0eS1nYXRld2F5" + - "YCByZWxlYXNlLCBwcmV2aWV3IGFuZAphcHBseSB0aGUgc2VydmljZSBhbmQgcm91dGU6CgpgYGBi" + - "YXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT12YW5p" + - "dHktZ2F0ZXdheSB0ZW1wbGF0ZQpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNl" + - "bGVjdG9yIG5hbWU9dmFuaXR5LWdhdGV3YXkgc3luYwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBo" + - "ZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBgYAoKVmVyaWZ5" + - "IHRoZSByb3V0ZSBvbmx5IHdoZW4gdGhlIGFkZG9uIGlzIHByZXNlbnQgYW5kIGVuYWJsZWQ6Cgpg" + - "YGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSxzdmMgLW4gbnZjZiAtbCBhcHAua3ViZXJuZXRlcy5p" + - "by9uYW1lPXZhbml0eS1nYXRld2F5Cmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgLWkg" + - "dmFuaXR5CmN1cmwgLUggIkhvc3Q6IHZhbml0eS48ZG9tYWluPiIgImh0dHA6Ly88Z2F0ZXdheS1h" + - "ZGRyZXNzPi9oZWFsdGgiCmBgYAoKRG8gbm90IGVuYWJsZSBWYW5pdHkgR2F0ZXdheSBmb3Igc3Rh" + - "bmRhcmQgQVBJLCBBUEkgS2V5cywgaW52b2NhdGlvbiwgTExNCmludm9jYXRpb24sIG9yIGdSUEMg" + - "dHJhZmZpYy4gVGhvc2Ugcm91dGVzIGFyZSBwcm92aWRlZCBieSB0aGUgYmFzZSBnYXRld2F5CnJv" + - "dXRlcy4KCiMjIyA3LiBFbmFibGUgTlZDRiBVSSAob3B0aW9uYWwpCgpOVkNGIFVJIGlzIGFuIG9w" + - "dGlvbmFsLCBjdXN0b21lci1mYWNpbmcgYWRtaW4tcGFuZWwgVUkuIEl0IGlzIGRpc2FibGVkIGJ5" + - "CmRlZmF1bHQgYW5kIGF2YWlsYWJsZSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRoYXQgaW5jbHVk" + - "ZSB0aGUgTlZDRiBVSSBhZGRvbi4gSWYKeW91ciBleHRyYWN0ZWQgc3RhY2sgcGFja2FnZSBkb2Vz" + - "IG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UgYW5kIGBudmNmVWlgCnJvdXRlIHZhbHVl" + - "cywgc2tpcCB0aGlzIHNlY3Rpb24uIFRoZSBOVkNGIFVJIGFkbWluIHBhbmVsIGlzIGN1cnJlbnRs" + - "eQp1bmF1dGhlbnRpY2F0ZWQ7IGRvIG5vdCBleHBvc2UgaXQgdG8gdGhlIHB1YmxpYyBpbnRlcm5l" + - "dC4KCkZvciBlbmFibGVtZW50LCBuYW1lc3BhY2UgYW5kIHB1bGwgc2VjcmV0IHNldHVwLCBhcHBs" + - "eSwgYW5kIHZlcmlmaWNhdGlvbiBzdGVwcywKc2VlIFtOVkNGIFVJIEFkZG9uXShyZWZlcmVuY2Vz" + - "L252Y2YtdWktYWRkb24ubWQpLgoKIyMjIDguIEluc3RhbGwgdGhlIHNlcGFyYXRlIGNvbXB1dGUt" + - "cGxhbmUgc3RhY2sKClRoZSBjb250cm9sLXBsYW5lIHN0YWNrIGRvZXMgbm90IGluc3RhbGwgY29t" + - "cHV0ZS1wbGFuZSBjb21wb25lbnRzLiBBZnRlciBpdCBpcyBoZWFsdGh5LCBjaG9vc2UgZXhhY3Rs" + - "eSBvbmUgY29tcHV0ZS1wbGFuZSBoYW5kb2ZmOgoKLSBIZWxtZmlsZSB2YWx1ZXMgZmxvdzogYXV0" + - "aG9yIHNlcGFyYXRlIGVudmlyb25tZW50IGZpbGVzLCB0aGVuIHJlZ2lzdGVyIGFuZAogIGluc3Rh" + - "bGwgd2l0aCB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZS4KLSBDTEkgcHJvZmlsZSBmbG93OiB1" + - "c2UgdGhlIHByb2ZpbGUgZ2VuZXJhdGVkIGJ5IHRoZSBDTEkgY29udHJvbC1wbGFuZSBpbnN0YWxs" + - "LAogIHRoZW4gcnVuIHRoZSBjb21wbGV0ZSBDTEkgcmVnaXN0ZXIgYW5kIGluc3RhbGwgY29tbWFu" + - "ZHMuCgpEbyBub3QgbWl4IHRoZXNlIGhhbmRvZmZzLiBGb2xsb3cgW1NwbGl0IENvbXB1dGUtUGxh" + - "bmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1k" + - "KQpmb3IgY29tbWFuZHMsIEVLUyByb3V0aW5nLCBwdWxsIHNlY3JldHMsIHZlcmlmaWNhdGlvbiwg" + - "YW5kIHRlYXJkb3duIG9yZGVyLgoKIyMgQ2xlYW4gVGVhcmRvd24KCkRlc3Ryb3kgZXZlcnkgY29t" + - "cHV0ZSBwbGFuZSBiZWZvcmUgdGhlIGNvbnRyb2wgcGxhbmUsIHVzaW5nIHRoZSB0ZWFyZG93biBm" + - "b3IKdGhlIHNhbWUgaGFuZG9mZjsgc2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlv" + - "bl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCN0ZWFyZG93bikuCgpT" + - "Y29wZTogT25seSBkZXN0cm95IHJlbGVhc2VzIG1hbmFnZWQgYnkgdGhpcyBjb250cm9sLXBsYW5l" + - "IGhlbG1maWxlIHN0YWNrLiBUaGUgTlZDRiByZWxlYXNlcyBhcmU6IGBuYXRzYCwgYG9wZW5iYW8t" + - "c2VydmVyYCwgYGNhc3NhbmRyYWAsIGBhcGkta2V5c2AsIGBzaXNgLCBgYXBpYCwgYGludm9jYXRp" + - "b24tc2VydmljZWAsIGBncnBjLXByb3h5YCwgYGVzcy1hcGlgLCBgbm90YXJ5LXNlcnZpY2VgLCBv" + - "cHRpb25hbCBgdmFuaXR5LWdhdGV3YXlgLCBgbnZjZi11aWAsIGBhZG1pbi1pc3N1ZXItcHJveHlg" + - "LCBhbmQgYGluZ3Jlc3NgOyBgY2VydC1tYW5hZ2VyYCBpcyBpbmNsdWRlZCBvbmx5IHdoZW4gYGNl" + - "cnRNYW5hZ2VyLmVuYWJsZWQ6IHRydWVgLiBUaGUgY29udHJvbC1wbGFuZSBuYW1lc3BhY2UgaW52" + - "ZW50b3J5IGFsc28gaW5jbHVkZXMgYGNlcnQtbWFuYWdlcmAsIGJ1dCBkZWZhdWx0IG5hbWVzcGFj" + - "ZSBjbGVhbnVwIHByZXNlcnZlcyBpdC4gTmFtZXNwYWNlIHByZXNlcnZhdGlvbiBkb2VzIG5vdCBw" + - "cmVzZXJ2ZSB0aGUgSGVsbSByZWxlYXNlLiBFeHRlcm5hbCBjZXJ0LW1hbmFnZXIgbXVzdCB1c2Ug" + - "YGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNlYDsgb3RoZXJ3aXNlIEhlbG1maWxlIHRyZWF0cyB0" + - "aGUgcmVsZWFzZSBhcyBzdGFjay1tYW5hZ2VkLiBEbyBub3QgZGVsZXRlIG90aGVyIGhlbG0gcmVs" + - "ZWFzZXMgb3IgbmFtZXNwYWNlcyBvbiB0aGUgY2x1c3Rlci4KCkJlZm9yZSBjb250cm9sLXBsYW5l" + - "IGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLiBGb3Ig" + - "YW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIu" + - "ZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQg" + - "c3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVk" + - "OiB0cnVlYCwgdmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQg" + - "YWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBQcmVzZXJ2ZSB0aGUgbmFt" + - "ZXNwYWNlIGJ5IGRlZmF1bHQ7IG9ubHkgcGxhbiBpdHMgcmVtb3ZhbCBhZnRlciB2ZXJpZnlpbmcg" + - "bmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGdldHRpbmcgZXhwbGljaXQgY29uZmlybWF0aW9uLgoK" + - "IyMjIFN0YW5kYXJkIHRlYXJkb3duCgpSdW4gZnJvbSBpbnNpZGUgdGhlIGBudmNmLXNlbGYtbWFu" + - "YWdlZC1zdGFjay9gIGRpcmVjdG9yeToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4g" + - "aGVsbWZpbGUgZGVzdHJveQpgYGAKCiMjIyBEZWxldGUgbmFtZXNwYWNlcwoKYGBgYmFzaApmb3Ig" + - "bnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMg" + - "bnZjZi11aSB2YXVsdC1zeXN0ZW07IGRvCiAga3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlICIkbnMi" + - "IC0taWdub3JlLW5vdC1mb3VuZApkb25lCmBgYAoKIyMjIFZlcmlmeSBjbGVhbgoKYGBgYmFzaApr" + - "dWJlY3RsIGdldCBucyB8IGdyZXAgLUUgJyhjYXNzYW5kcmF8bmF0c3x2YXVsdHxudmNmfGFwaS1r" + - "ZXlzfGVzc3xzaXMpJwojIFNob3VsZCByZXR1cm4gZW1wdHkKYGBgCgojIyBPdmVycmlkaW5nIEhl" + - "bG0gQ2hhcnQgVmFsdWVzCgojIyMgRW52aXJvbm1lbnQgZmlsZSAobGltaXRlZCkKCldvcmtzIG9u" + - "bHkgZm9yIGtleXMgdGhhdCBgZ2xvYmFsLnlhbWwuZ290bXBsYCBwcm9wYWdhdGVzIChlLmcuLCBg" + - "Y2Fzc2FuZHJhLnJlcGxpY2FDb3VudGAsIGBnbG9iYWwuc3RvcmFnZUNsYXNzYCwgYGdsb2JhbC5p" + - "bWFnZWApLgoKIyMjIFJlbGVhc2UgdmFsdWVzIGJsb2NrIChhbnkgY2hhcnQgdmFsdWUpCgpFZGl0" + - "IHRoZSByZWxlYXNlIGluIGBoZWxtZmlsZS5kLyoueWFtbC5nb3RtcGxgIGFuZCBhZGQgYSBgdmFs" + - "dWVzOmAgYmxvY2suIEluIHRoZSBleGFtcGxlcyBiZWxvdywgYDxwcml2YXRlLXZhbHVlcz5gIHJl" + - "ZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxlIHN0YWNrIHJv" + - "b3QuCgpgYGB5YW1sCi0gbmFtZTogY2Fzc2FuZHJhCiAgdmVyc2lvbjogMC44LjAKICBjb25kaXRp" + - "b246IGNhc3NhbmRyYS5lbmFibGVkCiAgbmFtZXNwYWNlOiBjYXNzYW5kcmEtc3lzdGVtCiAgPDw6" + - "ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwKICAgIC0g" + - "Li4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNy" + - "ZXRzLnlhbWwKICAgIC0gY2Fzc2FuZHJhOgogICAgICAgIHJlc291cmNlczoKICAgICAgICAgIGxp" + - "bWl0czoKICAgICAgICAgICAgY3B1OiAiOCIKICAgICAgICAgICAgbWVtb3J5OiA4MTkyTWkKICAg" + - "ICAgICAgIHJlcXVlc3RzOgogICAgICAgICAgICBjcHU6ICIyIgogICAgICAgICAgICBtZW1vcnk6" + - "IDQwOTZNaQpgYGAKCllBTUwgbWVyZ2UgZ290Y2hhOiBXaGVuIGEgcmVsZWFzZSB1c2VzIGA8PDog" + - "KmRlcGVuZGVuY3lgIG9yIGBpbmhlcml0YCwgc3BlY2lmeWluZyBgdmFsdWVzOmAgcmVwbGFjZXMg" + - "dGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QuIFlvdSBtdXN0IHJlLWluY2x1ZGUgYGdsb2JhbC55" + - "YW1sLmdvdG1wbGAgYW5kIHRoZSBzZWNyZXRzIGZpbGUuCgojIyMgUHJldmlldyBhbmQgYXBwbHkg" + - "YSBzaW5nbGUgcmVsZWFzZQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1z" + - "ZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSAgIyBQcmV2aWV3CkhFTE1GSUxFX0VOVj08" + - "ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMgICAgICAjIEFwcGx5" + - "CmBgYAoKIyMgSW1hZ2UgUHVsbCBTZWNyZXRzCgpUaGVyZSBhcmUgdGhyZWUgZGlzdGluY3QgY3Jl" + - "ZGVudGlhbCB0eXBlcy4gRG8gbm90IGNvbmZsYXRlIHRoZW0sIGFuZCBtaW5kIHRoZQpmb3JtYXQg" + - "cnVsZSBiZWxvdyAodHdvIG9mIHRoZW0gZmFpbCBldmVuIHdpdGggdGhlIGNvcnJlY3Qga2V5IGlm" + - "IHRoZSBmb3JtYXQgaXMgd3JvbmcpOgoKfCB8IENvbnRyb2wgUGxhbmUgUHVsbCBTZWNyZXRzIHwg" + - "QVBJIEJvb3RzdHJhcCBSZWdpc3RyeSBDcmVkcyB8IFNpZGVjYXIgSW1hZ2UtUHVsbCBTZWNyZXQg" + - "fAp8LS0tfC0tLXwtLS18LS0tfAp8IFB1cnBvc2UgfCBLOHMgcHVsbHMgTlZDRiBzZXJ2aWNlIGlt" + - "YWdlcyB8IG52Y2YtYXBpIHZhbGlkYXRlcyB0aGUgdXNlciBmdW5jdGlvbiBpbWFnZSBhdCBgZnVu" + - "Y3Rpb24gY3JlYXRlYCB8IG52Y2YtYXBpIHB1bGxzIHRoZSBwbGF0Zm9ybSBzaWRlY2FycyBpbmpl" + - "Y3RlZCBpbnRvIGV2ZXJ5IHdvcmtlciBwb2QgfAp8IFdoZXJlIHwgSzhzIGBkb2NrZXItcmVnaXN0" + - "cnlgIFNlY3JldHMgKyBLeXZlcm5vIENsdXN0ZXJQb2xpY3kgfCBgPHByaXZhdGUtdmFsdWVzPi88" + - "ZW52Pi1zZWNyZXRzLnlhbWxgIChhY2NvdW50LWJvb3RzdHJhcCkgfCBgTlZDRl9BUElfU0lERUNB" + - "UlNfSU1BR0VfUFVMTF9TRUNSRVRgIGluIGA8ZW52Pi1zZWNyZXRzLnlhbWxgIC0+IE9wZW5CYW8g" + - "YHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0YCAoZmllbGQg" + - "YHNlY3JldGApIHwKfCBGb3JtYXQgfCBzdGFuZGFyZCBgLmRvY2tlcmNvbmZpZ2pzb25gIChrdWJl" + - "Y3RsIGJ1aWxkcyBpdCBmb3IgeW91KSB8IGBiYXNlNjQoIiRvYXV0aHRva2VuOjxrZXk+IilgIHwg" + - "YGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAgfAoKPiBOb3RlOiB0aGUgYWNjb3VudC1ib290" + - "c3RyYXAgY3JlZCBhbmQgdGhlIHNpZGVjYXIgc2VjcmV0IGFyZSBOT1QgYQo+IGRvY2tlcmNvbmZp" + - "Z2pzb24uIFRoZSBzZWNyZXRzIHRlbXBsYXRlIHNoaXBzIHRoZSBwbGFjZWhvbGRlcgo+IGBSRVBM" + - "QUNFX1dJVEhfQkFTRTY0X0RPQ0tFUl9DUkVERU5USUFMYCwgd2hpY2ggcmVhZHMgYXMgImJhc2U2" + - "NCBvZiBhIGRvY2tlcmNvbmZpZ2pzb24uIgo+IEl0IGlzbid0LiBCb3RoIHZhbHVlcyBhcmUgY29u" + - "c3VtZWQgYXMgYSByYXcgZG9ja2VyIGBhdXRoYCBzdHJpbmc6IG52Y2YtYXBpIHRha2VzIHRoZQo+" + - "IHZhbHVlIHZlcmJhdGltIGFuZCBkcm9wcyBpdCBpbnRvIHRoZSBgYXV0aGAgZmllbGQgb2YgdGhl" + - "IGRvY2tlcmNvbmZpZyBpdCBidWlsZHMuIFNvIHRoZQo+IHZhbHVlIG11c3QgYmUgYGJhc2U2NCgi" + - "JG9hdXRodG9rZW46PGtleT4iKWAsIGUuZy4gYHByaW50ZiAnJG9hdXRodG9rZW46JXMnICIkS0VZ" + - "IiB8IG9wZW5zc2wgYmFzZTY0IC1BYCwKPiBub3QgYGJhc2U2NCg8ZG9ja2VyY29uZmlnanNvbj4p" + - "YC4KPgo+IC0gV3JvbmcgYWNjb3VudC1ib290c3RyYXAgdmFsdWU6IGBmdW5jdGlvbiBjcmVhdGVg" + - "IHJldHVybnMKPiAgICBgNDAwICJtdXN0IGJlIGJhc2U2NCBlbmNvZGVkIHVzZXJuYW1lOnBhc3N3" + - "b3JkIGZvcm1hdCJgLgo+IC0gV3Jvbmcgc2lkZWNhciB2YWx1ZTogZXZlcnkgd29ya2VyJ3Mgc2lk" + - "ZWNhciBwdWxsIGdldHMgYSBtYWxmb3JtZWQgY3JlZGVudGlhbCBhbmQKPiAgICBgNDAzYHMsIHJl" + - "Z2FyZGxlc3Mgb2Ygd2hpY2gga2V5IGlzIGluc2lkZS4gVGhlIHN5bXB0b20gbG9va3MgbGlrZSBh" + - "IGJhZCBvciB3cm9uZy1vcmcKPiAgICBrZXksIGJ1dCB0aGUga2V5IGlzIGZpbmUgYW5kIHRoZSBl" + - "bmNvZGluZyBpcyB0aGUgYnVnLiBUbyByZXBhaXIgYW4gYWxyZWFkeS1pbnN0YWxsZWQKPiAgICBz" + - "dGFjayB3aXRob3V0IGEgZnVsbCByZS1zeW5jOgo+Cj4gICAgYGBgYmFzaAo+ICAgIEFVVEg9JChw" + - "cmludGYgJyRvYXV0aHRva2VuOiVzJyAiJEtFWSIgfCBvcGVuc3NsIGJhc2U2NCAtQSkKPiAgICBi" + - "YW8ga3YgcHV0IHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0" + - "IHNlY3JldD0iJEFVVEgiCj4gICAgIyBpZiBOVklESUEgQ2xvdWQgVGFza3MgaXMgZW5hYmxlZCwg" + - "cmVwZWF0IGZvciBzZXJ2aWNlcy9udmN0LWFwaS9rdi9zaWRlY2Fycy9pbWFnZS1wdWxsLXNlY3Jl" + - "dAo+ICAgIGt1YmVjdGwgcm9sbG91dCByZXN0YXJ0IC1uIG52Y2YgZGVwbG95L252Y2YtYXBpICAg" + - "IyBwaWNrcyB1cCB0aGUgbmV3IHNpZGVjYXIgY3JlZAo+ICAgIGBgYAo+Cj4gTm90ZSAobXVsdGkt" + - "b3JnKTogd2hlbiBwdWxsaW5nIGZyb20gTkdDIChub3QgYSBtaXJyb3IpLCB0aGUgdXNlciBmdW5j" + - "dGlvbiBpbWFnZSBhbmQKPiB0aGUgcGxhdGZvcm0gc2lkZWNhcnMgb2Z0ZW4gbGl2ZSBpbiBkaWZm" + - "ZXJlbnQgbnZjci5pbyBvcmdzLCBlYWNoIG5lZWRpbmcgYSBkaWZmZXJlbnQKPiBrZXksIHNvIHRo" + - "ZSBhY2NvdW50LWJvb3RzdHJhcCBjcmVkIChmdW5jdGlvbiBpbWFnZSkgYW5kIHRoZSBzaWRlY2Fy" + - "IHNlY3JldCAoc2lkZWNhcnMpCj4gYXJlIGZyZXF1ZW50bHkgdHdvIGRpZmZlcmVudCBrZXlzLiBN" + - "aXJyb3JpbmcgZXZlcnl0aGluZyBpbnRvIGEgc2luZ2xlIHJlZ2lzdHJ5IHRoZQo+IGNsdXN0ZXIg" + - "YXV0aGVudGljYXRlcyB0byBhdXRvbWF0aWNhbGx5IGNvbGxhcHNlcyB0aGlzIHRvIG9uZSBjcmVk" + - "ZW50aWFsIHBhdGguCgojIyMgQ29uZmlndXJpbmcgd2l0aCBLeXZlcm5vIChyZWNvbW1lbmRlZCkK" + - "ClVzZSBhIEt5dmVybm8gbXV0YXRpbmcgYWRtaXNzaW9uIHBvbGljeSB0byBhdXRvbWF0aWNhbGx5" + - "IGluamVjdCBgaW1hZ2VQdWxsU2VjcmV0c2AgaW50byBhbGwgcG9kcyBpbiBOVkNGIG5hbWVzcGFj" + - "ZXMuIFRoaXMgd29ya3MgdW5pZm9ybWx5IGZvciBhbGwgY2hhcnRzIC0tIG5vIHBlci1jaGFydCBj" + - "b25maWd1cmF0aW9uIG9yIGhlbG1maWxlIG1vZGlmaWNhdGlvbnMgbmVlZGVkLgoKYGBgYmFzaAoj" + - "IDEuIEluc3RhbGwgS3l2ZXJubwpoZWxtIHJlcG8gYWRkIGt5dmVybm8gaHR0cHM6Ly9reXZlcm5v" + - "LmdpdGh1Yi5pby9reXZlcm5vLwpoZWxtIHJlcG8gdXBkYXRlCmhlbG0gaW5zdGFsbCBreXZlcm5v" + - "IGt5dmVybm8va3l2ZXJubyAtbiBreXZlcm5vIC0tY3JlYXRlLW5hbWVzcGFjZQoKIyAyLiBDcmVh" + - "dGUgcHVsbCBzZWNyZXQgaW4gZWFjaCBuYW1lc3BhY2UKZXhwb3J0IE5HQ19BUElfS0VZPSI8eW91" + - "ci1rZXk+Igpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1r" + - "ZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIGNyZWF0" + - "ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogICAgLS1kb2NrZXItc2VydmVy" + - "PW52Y3IuaW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgICAtLWRv" + - "Y2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5hbWVzcGFjZT0iJG5zIiBcCiAg" + - "ICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KZG9uZQoKIyAz" + - "LiBBcHBseSB0aGUgS3l2ZXJubyBDbHVzdGVyUG9saWN5Cmt1YmVjdGwgYXBwbHkgLWYga3l2ZXJu" + - "by1pbWFnZXB1bGxzZWNyZXQtcG9saWN5LnlhbWwKYGBgCgpUaGUgcG9saWN5IG11dGF0ZXMgZXZl" + - "cnkgcG9kIGF0IGFkbWlzc2lvbiB0aW1lLCBhZGRpbmcgYGltYWdlUHVsbFNlY3JldHM6IFt7bmFt" + - "ZTogbnZjci1jcmVkc31dYC4gVmVyaWZ5IHdpdGg6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZCAt" + - "biA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IC1vIGpzb25wYXRoPSd7LnNwZWMuaW1hZ2VQdWxsU2Vj" + - "cmV0c30nCiMgU2hvdWxkIHNob3c6IFt7Im5hbWUiOiJudmNyLWNyZWRzIn1dCmBgYAoKTm90IG5l" + - "ZWRlZCBpZiB1c2luZyBhIENTUCBidWlsdC1pbiBjcmVkZW50aWFsIGhlbHBlciAoZS5nLiwgRUNS" + - "IHdpdGggSUFNIG5vZGUgcm9sZXMpLgoKRm9yIHRoZSBLeXZlcm5vIHBvbGljeSBZQU1MIGFuZCBw" + - "dWxsIHNlY3JldCBjcmVhdGlvbiBzY3JpcHQsIHNlZSBbcmVmZXJlbmNlcy9wdWxsLXNlY3JldHMu" + - "bWRdKHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKS4KCiMjIERlYnVnZ2luZwoKIyMjIFF1aWNr" + - "IHN0YXR1cyBjaGVjawoKYGBgYmFzaAprdWJlY3RsIGdldCBwb2RzIC1BIC1vIHdpZGUgICAgICAg" + - "ICAgICAgICAgICAgICAgICAjIEFsbCBwb2RzCmhlbG0gbGlzdCAtQSAgICAgICAgICAgICAgICAg" + - "ICAgICAgICAgICAgICAgICAgICAgICAjIEFsbCBoZWxtIHJlbGVhc2VzCmt1YmVjdGwgZ2V0IGV2" + - "ZW50cyAtbiA8bnM+IC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAnICAjIFJlY2VudCBldmVudHMK" + - "YGBgCgojIyMgQ29tbW9uIGZhaWx1cmUgcGF0dGVybnMKCnwgU3ltcHRvbSB8IENhdXNlIHwgRml4" + - "IHwKfC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tfAp8IGBJbWFnZVB1bGxCYWNrT2ZmYCArIGA0MDEg" + - "VW5hdXRob3JpemVkYCB8IE1pc3Npbmcgb3Igd3JvbmcgcHVsbCBzZWNyZXQgfCBDaGVjayBzZWNy" + - "ZXQgZXhpc3RzLCBjaGVjayBTQSBoYXMgaW1hZ2VQdWxsU2VjcmV0cyB8CnwgYEluaXQ6MC8xYCBz" + - "dHVjayBvbiBzZXJ2aWNlIHBvZHMgfCBWYXVsdC1hZ2VudCB3YWl0aW5nIGZvciBPcGVuQmFvIHwg" + - "Q2hlY2sgT3BlbkJhbyBwb2RzICsgbWlncmF0aW9uIGpvYiBzdGF0dXMgfAp8IGBJbml0OjAvMWAg" + - "KyBgdmF1bHQtYWdlbnQtaW5pdGAgc2hvd3MgYGF1dGgvand0L2xvZ2luYCAtPiBgNDAwIC4uLiBu" + - "byBrbm93biBrZXkgc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlZCB0aGUgdG9rZW4gc2lnbmF0dXJlYCB8" + - "IE9wZW5CYW8gSldUIGF1dGggY29uZmlndXJlZCB3aXRoIGEgc3RhdGljIHB1YmtleSBpbnN0ZWFk" + - "IG9mIHRoZSBjbHVzdGVyJ3MgbGl2ZSBKV0tTIC0tIHRoZSBiYXNlIGRlZmF1bHQgYG9wZW5iYW8u" + - "bWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2VgLiBDb21tb24gb24gQUtT" + - "IC8gYW55IE9JREMtaXNzdWVyIGNsdXN0ZXIgfCBTZXQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1" + - "ZXJEaXNjb3ZlcnkuZW5hYmxlZDogdHJ1ZWAsIGRlbGV0ZSBqb2IgYG9wZW5iYW8tc2VydmVyLW1p" + - "Z3JhdGlvbnNgLCByZS1zeW5jIGBvcGVuYmFvLXNlcnZlcmAuIFNlZSBbcmVmZXJlbmNlcy9kZWJ1" + - "Z2dpbmcubWRdKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kKSAiSW5pdDowLzEgU3R1Y2siIGZpeCAj" + - "NC4gfAp8IGBPT01LaWxsZWRgIG9uIENhc3NhbmRyYSB8IERlZmF1bHQgcmVzb3VyY2VzIHRvbyBz" + - "bWFsbCB8IE92ZXJyaWRlIGBjYXNzYW5kcmEucmVzb3VyY2VzYCB2aWEgdmFsdWVzIGJsb2NrIHwK" + - "fCBEQi1iYWNrZWQgc2VydmljZXMgY3Jhc2gtbG9vcCBgQmFkIGNyZWRlbnRpYWxzYCBjb25uZWN0" + - "aW5nIHRvIENhc3NhbmRyYSB8IFNlY3JldHMgZmlsZSBzZXQgb25seSBgREVGQVVMVF9DQVNTQU5E" + - "UkFfUEFTU1dPUkRgOyBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHN0aWxsIGRlZmF1" + - "bHRzIHRvIGBjaEBuZzNtM2AgfCBTZXQgYGNhc3NhbmRyYS5zZXJ2aWNlUm9sZVBhc3N3b3JkYCBp" + - "biB0aGUgc2VjcmV0cyBmaWxlIGVxdWFsIHRvIGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAs" + - "IHRoZW4gcmUtc3luYyBjYXNzYW5kcmEgKyB0aGUgREItYmFja2VkIHNlcnZpY2VzIHwKfCBgUGVu" + - "ZGluZ2AgcG9kcyB8IE5vZGUgc2VsZWN0b3IgbWlzbWF0Y2ggb3Igbm8gc3RvcmFnZSBjbGFzcyB8" + - "IGBrdWJlY3RsIGRlc2NyaWJlIHBvZGAsIGNoZWNrIGxhYmVscyBhbmQgc3RvcmFnZSB8CnwgSGVs" + - "bSByZWxlYXNlIGluIGBmYWlsZWRgIHN0YXRlIHwgRmlyc3QgaW5zdGFsbCBmYWlsZWQgcGFydHdh" + - "eSB8IGBoZWxtZmlsZSBkZXN0cm95YCB0aGUgcmVsZWFzZSwgdGhlbiBgc3luY2AgYWdhaW4gfAp8" + - "IEFjY291bnQgYm9vdHN0cmFwIHRpbWVvdXQgfCBXcm9uZyBiYXNlNjQgY3JlZGVudGlhbHMgaW4g" + - "c2VjcmV0cyBmaWxlIHwgQ2hlY2sgYGt1YmVjdGwgbG9ncyBqb2IvbnZjZi1hcGktYWNjb3VudC1i" + - "b290c3RyYXAgLW4gbnZjZmAgfAp8IGZ1bmN0aW9uIC8gYWNjb3VudCBjYWxscyByZXR1cm4gYDQw" + - "NCBVbmtub3duIGNsaWVudF9pZGAgfCBUaGUgYWNjb3VudC1ib290c3RyYXAgcG9zdC1pbnN0YWxs" + - "IGhvb2sgbmV2ZXIgcmFuOiB0aGUgYGFwaWAgcmVsZWFzZSBpbnN0YWxsIGZhaWxlZCwgb3Igd2Fz" + - "IHJlcGFpcmVkIHdpdGggbGl2ZSBwYXRjaGVzIGluc3RlYWQgb2YgYSBjbGVhbiByZS1zeW5jLCBz" + - "byB0aGUgaG9vayAoYW5kIHRoZSBhY2NvdW50KSB3YXMgc2tpcHBlZCB8IFZlcmlmeSBhbmQgcmUt" + - "cnVuIHRoZSBob29rOyBzZWUgW1ZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAgcmFuXSgjdmVy" + - "aWZ5LXRoZS1hY2NvdW50LWJvb3RzdHJhcC1yYW4pIHwKfCBTZXJ2aWNlcyBmYWlsIHRvIHJlYWQg" + - "dmF1bHQgc2VjcmV0czsgYHNlY3JldHMuanNvbmAgbm90IGZvdW5kIHwgVmF1bHQgcGF0aCBoYXJk" + - "Y29kZWQgdG8gYC9ob21lL2FwcC92YXVsdC9gIGluIGBfaGVscGVycy50cGxgOyB0aGUgcnVudGlt" + - "ZSByZXNvbHZlcyB0aGUgbW91bnRlZCBwYXRoIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVj" + - "dG9yeSBhbmQgZHJvcHMgdGhlIGxlYWRpbmcgYC9gIHwgT3ZlcnJpZGUgYHBvZEFubm90YXRpb25z" + - "YCBhbmQgc2V0IGBKQVZBX1RPT0xfT1BUSU9OUzogIi1EdXNlci5kaXI9LyJgIGluIHJlbGVhc2Ug" + - "dmFsdWVzIHwKfCBOQVRTIGNvbm5lY3Rpb24gZmFpbHMgYXQgc3RhcnR1cDsgcGxhY2VtZW50IHRh" + - "ZyBtaXNtYXRjaCB8IE5BVFMgc2VydmVyIHRhZ3MgaGFyZGNvZGVkIHRvIGBkYzpuY3BgOyBhcHAg" + - "ZGVyaXZlcyB0YWcgZnJvbSBgQVdTX1JFR0lPTmAgKGUuZy4sIGB1cy1nb3Ytd2VzdC0xYCkgfCBT" + - "ZXQgYEFXU19SRUdJT049bmNwYCBhbmQgYE5WQ0ZfQVdTX1JFR0lPTj1uY3BgIGluIGVudiBjb25m" + - "aWcgfAoKIyMjIFZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAgcmFuCgpUaGUgZGVmYXVsdCBh" + - "Y2NvdW50IGlzIGNyZWF0ZWQgYnkgYSAqKmBwb3N0LWluc3RhbGxgIGhvb2sgb24gdGhlIGBhcGlg" + - "IHJlbGVhc2UqKgooYGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcGAgaW4gYG52Y2ZgKS4g" + - "QmVjYXVzZSBpdCBpcyBhIHBvc3QtaW5zdGFsbCBob29rLCBpdCBvbmx5CmZpcmVzIG9uIGEgc3Vj" + - "Y2Vzc2Z1bCBgYXBpYCBpbnN0YWxsLiBJZiB0aGF0IGluc3RhbGwgZmFpbGVkIGFuZCB5b3UgcmVw" + - "YWlyZWQgaXQgd2l0aCBsaXZlCnBhdGNoZXMgKHJhdGhlciB0aGFuIGEgY2xlYW4gcmUtc3luYyks" + - "IHRoZSBob29rIG5ldmVyIHJ1bnMsIG5vIGFjY291bnQgaXMgY3JlYXRlZCwgYW5kCmV2ZXJ5IHN1" + - "YnNlcXVlbnQgZnVuY3Rpb24vYWNjb3VudCBjYWxsIHJldHVybnMgYSBjcnlwdGljIGA0MDQgVW5r" + - "bm93biBjbGllbnRfaWRgIHdpdGgKbm90aGluZyBvYnZpb3VzbHkgd3JvbmcgaW4gdGhlIHJ1bm5p" + - "bmcgcG9kcy4KClZlcmlmeSBpdCByYW4gYWZ0ZXIgdGhlIGZpcnN0IHN5bmM6CgpgYGBiYXNoCmt1" + - "YmVjdGwgZ2V0IGpvYiAtbiBudmNmIG52Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIFwKICAtbyBq" + - "c29ucGF0aD0ney5zdGF0dXMuc3VjY2VlZGVkfScgICAjIGV4cGVjdCAxCmBgYAoKSWYgdGhlIGpv" + - "YiBpcyBhYnNlbnQgb3IgYDBgLCByZS1ydW4gaXQgYnkgcmUtc3luY2luZyB0aGUgYGFwaWAgcmVs" + - "ZWFzZSBzbyB0aGUgaG9vayBmaXJlcwphZ2FpbiAoZGVsZXRlIHRoZSBwcmlvciBqb2IgZmlyc3Qg" + - "aWYgaXQgbGluZ2VycyBpbiBhIGNvbXBsZXRlZC9mYWlsZWQgc3RhdGUgYW5kIGJsb2NrcyB0aGUK" + - "aG9vayk6CgpgYGBiYXNoCmt1YmVjdGwgZGVsZXRlIGpvYiAtbiBudmNmIG52Y2YtYXBpLWFjY291" + - "bnQtYm9vdHN0cmFwIC0taWdub3JlLW5vdC1mb3VuZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZp" + - "bGUgLS1zZWxlY3RvciBuYW1lPWFwaSBzeW5jCmt1YmVjdGwgbG9ncyAtbiBudmNmIGpvYi9udmNm" + - "LWFwaS1hY2NvdW50LWJvb3RzdHJhcCAgICMgY29uZmlybSB0aGUgYWNjb3VudCB3YXMgY3JlYXRl" + - "ZApgYGAKCiMjIEFkZGl0aW9uYWwgUmVzb3VyY2VzCgotIEluc3RhbGxhdGlvbjogW2V4YW1wbGVz" + - "Lm1kXShleGFtcGxlcy5tZCksIHRoZSBbQ1NQIEVuZC10by1FbmQgRXhhbXBsZV0oaHR0cHM6Ly9k" + - "b2NzLm52aWRpYS5jb20vbnZjZi92MC42LjAtcmMvY3NwLWVuZC10by1lbmQtZXhhbXBsZSksIGFu" + - "ZCBbc3BsaXQgY29tcHV0ZS1wbGFuZSB3b3JrZmxvd3NdKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFu" + - "ZS1pbnN0YWxsYXRpb24ubWQpCi0gT3BlcmF0aW9uczogW0hlbG1maWxlIHN0cnVjdHVyZV0ocmVm" + - "ZXJlbmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWQpLCBbcHVsbCBzZWNyZXRzXShyZWZlcmVuY2Vz" + - "L3B1bGwtc2VjcmV0cy5tZCksIGFuZCBbZGVidWdnaW5nXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5t" + - "ZCkKCkFmdGVyIGRlcGxveW1lbnQsIHVzZSB0aGUgYG52Y2Ytc2VsZi1tYW5hZ2VkLWNsaWAgc2tp" + - "bGwgdG8gY3JlYXRlIGZ1bmN0aW9ucywgY3JlYXRlIHRhc2tzLCBtYW5hZ2UgQVBJIGtleXMsIGFu" + - "ZCBpbnZva2UgZW5kcG9pbnRzLgpQSwcIEcMUk0liAABJYgAAUEsDBBQACAAAAAAAIQAAAAAAAAAA" + - "AAAAAAA0AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXZhbHMvZXZhbHMu" + - "anNvblVUBQABAKbOElsKICB7CiAgICAiaWQiOiAiRzEtdmFsaWRhdGUtdG9vbC12ZXJzaW9ucyIs" + - "CiAgICAicXVlc3Rpb24iOiAiSW5zdGFsbCB0aGUgTlZDRiBzZWxmLW1hbmFnZWQgc3RhY2sgb24g" + - "bXkgQVdTIEVLUyBjbHVzdGVyIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFu" + - "YWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQncyBmaXJz" + - "dCBvcGVyYXRpb25hbCBzdGVwIGFmdGVyIHJlYWRpbmcgdGhlIHNraWxsIHdhcyB0byB2YWxpZGF0" + - "ZSBhbGwgcmVxdWlyZWQgdG9vbCB2ZXJzaW9uczogaGVsbWZpbGUgKG11c3QgYmUgMS4xLngsIG5v" + - "dCAxLjIuMCksIGhlbG0gKD49IDMuMTIpLCBoZWxtLWRpZmYgcGx1Z2luICg+PSAzLjExKSwgYW5k" + - "IGt1YmVjdGwgKGNsaWVudCB3aXRoaW4gMSBtaW5vciBvZiBjbHVzdGVyKS4gSXQgZGlkIG5vdCBw" + - "cm9jZWVkIHRvIGhlbG1maWxlIHN5bmMgdW50aWwgYWxsIHZlcnNpb25zIHdlcmUgdmFsaWRhdGVk" + - "LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUg" + - "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYW55" + - "IGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtZmlsZSAtLXZlcnNpb24nIGFuZCB2" + - "ZXJpZmllZCBpdCBpcyAxLjEueCAobm90IDEuMi4wLCB3aGljaCByZW1vdmVkIHNlcXVlbnRpYWwg" + - "bW9kZSkiLAogICAgICAiVGhlIGFnZW50IHJhbiAnaGVsbSB2ZXJzaW9uJyBhbmQgdmVyaWZpZWQg" + - "aXQgaXMgPj0gMy4xMiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHBsdWdpbiBsaXN0JyBh" + - "bmQgdmVyaWZpZWQgaGVsbS1kaWZmID49IDMuMTEgaXMgaW5zdGFsbGVkIiwKICAgICAgIlRoZSBh" + - "Z2VudCByYW4gJ2t1YmVjdGwgdmVyc2lvbicgdG8gY2hlY2sgY2xpZW50L3NlcnZlciB2ZXJzaW9u" + - "IGNvbXBhdGliaWxpdHkiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgcHJvY2VlZCB0byBoZWxt" + - "ZmlsZSBzeW5jIHVudGlsIGFsbCB2ZXJzaW9uIGNoZWNrcyBwYXNzZWQiCiAgICBdCiAgfSwKICB7" + - "CiAgICAiaWQiOiAiRzItdGVtcGxhdGUtYmVmb3JlLXN5bmMiLAogICAgInF1ZXN0aW9uIjogIlF1" + - "aWNrLCBqdXN0IHJ1biBoZWxtZmlsZSBzeW5jIGZvciBteSBOVkNGIHN0YWNrLCBza2lwIGFsbCB0" + - "aGUgY2hlY2tzIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0" + - "YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJEZXNwaXRlIHRoZSB1c2VyIGFza2luZyB0" + - "byBza2lwIGNoZWNrcywgdGhlIGFnZW50IHN0aWxsIHJhbiBoZWxtZmlsZSB0ZW1wbGF0ZSB0byBw" + - "cmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0cyBiZWZvcmUgcnVubmluZyBoZWxtZmlsZSBzeW5jLiBJ" + - "dCBleHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAgaXMgaW1wb3J0YW50IGFuZCBkaWQgbm90" + - "IGJsaW5kbHkgZXhlY3V0ZSBzeW5jLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAg" + - "ICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxM" + - "Lm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG1maWxl" + - "IHRlbXBsYXRlJyBvciAnaGVsbWZpbGUgLS1zZWxlY3RvciAuLi4gdGVtcGxhdGUnIHRvIHByZXZp" + - "ZXcgbWFuaWZlc3RzIGJlZm9yZSBzeW5jIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IGJsaW5k" + - "bHkgcnVuICdoZWxtZmlsZSBzeW5jJyB3aXRob3V0IGEgdGVtcGxhdGUgcHJldmlldyBzdGVwIiwK" + - "ICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAgaXMgaW1wb3J0" + - "YW50IGV2ZW4gd2hlbiBhc2tlZCB0byBza2lwIGl0IgogICAgXQogIH0sCiAgewogICAgImlkIjog" + - "Ikc1LWRyeXJ1bi1iZWZvcmUtY2xlYW51cCIsCiAgICAicXVlc3Rpb24iOiAiTlZDRiBuYW1lc3Bh" + - "Y2VzIGFyZSBzdHVjayBpbiBUZXJtaW5hdGluZyBzdGF0ZS4gQ2xlYW4gdGhlbSB1cC4iLAogICAg" + - "ImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAi" + - "Z3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoZSBzdHVjayBuYW1lc3BhY2Vz" + - "IHdlcmUgY2F1c2VkIGJ5IGZpbmFsaXplcnMgb24gTlZDRkJhY2tlbmQgY3VzdG9tIHJlc291cmNl" + - "cy4gSXQgcmVtb3ZlZCBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3VyY2VzIGZpcnN0" + - "LCB0aGVuIGNsZWFyZWQgbmFtZXNwYWNlIGZpbmFsaXplcnMgdG8gZm9yY2UtZGVsZXRlIHRoZSBz" + - "dHVjayBuYW1lc3BhY2VzLiBJdCBvbmx5IHRhcmdldGVkIE5WQ0YtbWFuYWdlZCBuYW1lc3BhY2Vz" + - "IChudmNhLW9wZXJhdG9yLCBudmNmLWJhY2tlbmQpIGFuZCBkaWQgbm90IHRvdWNoIG90aGVyIGNs" + - "dXN0ZXIgcmVzb3VyY2VzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUg" + - "YWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJl" + - "Zm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBjb25maXJtZWQgYW5kIHVzZWQg" + - "dGhlIGNvbXB1dGUtcGxhbmUgY29udGV4dCBmb3IgYWxsIGNsZWFudXAgY29tbWFuZHMiLAogICAg" + - "ICAiVGhlIGFnZW50IHVzZWQga3ViZWN0bCB0byBwYXRjaCBOVkNGQmFja2VuZCByZXNvdXJjZXMg" + - "dG8gcmVtb3ZlIHRoZWlyIGZpbmFsaXplcnMiLAogICAgICAiVGhlIGFnZW50IHVzZWQga3ViZWN0" + - "bCByZXBsYWNlIC0tcmF3IHRvIGNsZWFyIG5hbWVzcGFjZSBmaW5hbGl6ZXJzIG9uIHN0dWNrIG5h" + - "bWVzcGFjZXMiLAogICAgICAiVGhlIGFnZW50IG9ubHkgdGFyZ2V0ZWQgTlZDRi1tYW5hZ2VkIG5h" + - "bWVzcGFjZXMgKG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkgYW5kIGRpZCBub3QgdG91Y2gg" + - "b3RoZXIgY2x1c3RlciByZXNvdXJjZXMiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QganVtcCBk" + - "aXJlY3RseSB0byBuYW1lc3BhY2UgZGVsZXRpb24gd2l0aG91dCBmaXJzdCByZW1vdmluZyBmaW5h" + - "bGl6ZXJzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc2LWhlbG1maWxlLXNwbGl0LXdvcmtm" + - "bG93IiwKICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIGFuIE5WQ0YgY29udHJvbCBwbGFuZSBhbmQg" + - "YSBzZXBhcmF0ZSBFS1MgY29tcHV0ZSBwbGFuZSB1c2luZyB0aGUgSGVsbWZpbGUgc3RhY2tzLiBU" + - "aGUgY29tcHV0ZSBjbHVzdGVyIGt1YmVjb25maWcgaXMgY29tcHV0ZS55YW1sLiIsCiAgICAiZXhw" + - "ZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91" + - "bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGtlcHQgdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93IGluZGVw" + - "ZW5kZW50IGZyb20gdGhlIENMSSBwcm9maWxlIGZsb3cuIEl0IGF1dGhvcmVkIHNlcGFyYXRlIGNv" + - "bnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZXMgcGx1cyBhIGJh" + - "cmUtR2F0ZXdheSBDTEkgY29uZmlnIHdpdGggVVJMIGFuZCBzY2hlbWUtbGVzcyBIb3N0IGZpZWxk" + - "cywgaW5zdGFsbGVkIHRoZSBjb250cm9sIHBsYW5lLCByYW4gdGhlIGNvbXB1dGUtcGxhbmUgTWFr" + - "ZWZpbGUgcmVnaXN0ZXItY2x1c3RlciB0YXJnZXQgd2l0aCBJQ01TX1VSTCBhbmQgdGhlIGNvbXB1" + - "dGUga3ViZWNvbmZpZywgdGhlbiByYW4gdGhlIGNvbXB1dGUtcGxhbmUgaW5zdGFsbCB0YXJnZXQg" + - "d2l0aCB0aGUgc2FtZSBlbnZpcm9ubWVudCBhbmQga3ViZWNvbmZpZy4gSXQgcmVsaWVkIG9uIHJl" + - "Z2lzdHJhdGlvbiB0byBkaXNjb3ZlciBPSURDIGFuZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUgY29u" + - "dGV4dC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQg" + - "dGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5n" + - "IGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgYXV0aG9yZWQgc2VwYXJhdGUgZW52aXJvbm1lbnRz" + - "LzxlbnY+LnlhbWwgZmlsZXMgdW5kZXIgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgYW5kIGRl" + - "cGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIiwKICAgICAgIlRoZSBhZ2VudCBpbnN0YWxs" + - "ZWQgdGhlIGNvbnRyb2wgcGxhbmUgYmVmb3JlIHJlZ2lzdGVyaW5nIG9yIGluc3RhbGxpbmcgdGhl" + - "IGNvbXB1dGUgcGxhbmUiLAogICAgICAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgYmFzZV9odHRwX3Vy" + - "bCwgaW52b2tlX3VybCwgYmFzZV9ncnBjX3VybCwgYXBpX2tleXNfc2VydmljZV91cmwsIGljbXNf" + - "dXJsLCBhcGlfaG9zdCwgYXBpX2tleXNfaG9zdCwgaW52b2tlX2hvc3QsIGFuZCBpY21zX2hvc3Qg" + - "Zm9yIHRoZSBiYXJlIEdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50IHVzZWQgJ21ha2UgLUMgZGVw" + - "bG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVnaXN0ZXItY2x1c3Rlcicgd2l0aCBDTFVT" + - "VEVSX05BTUUsIE5DQV9JRCwgQ0xVU1RFUl9SRUdJT04sIElDTVNfVVJMLCBhbmQgS1VCRUNPTkZJ" + - "R19GSUxFPWNvbXB1dGUueWFtbCIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnbWFrZSAtQyBkZXBs" + - "b3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBpbnN0YWxsJyB3aXRoIENMVVNURVJfTkFNRSwg" + - "SEVMTUZJTEVfRU5WLCBhbmQgS1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFtbCIsCiAgICAgICJU" + - "aGUgYWdlbnQgc3RhdGVkIHRoYXQgSUNNU19VUkwgbWFwcyBvbmx5IHRvIC0taWNtcy11cmwsIGNv" + - "bmZpZyBpY21zX2hvc3Qgc3VwcGxpZXMgdGhlIEhvc3QgaGVhZGVyLCB0aGVyZSBpcyBubyAtLWlj" + - "bXMtaG9zdCBNYWtlIG9yIENMSSBmbGFnLCBhbmQgcmVnaXN0cmF0aW9uIGRpc2NvdmVycyBPSURD" + - "IGFuZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUgY29udGV4dCIsCiAgICAgICJUaGUgYWdlbnQgZGlk" + - "IG5vdCByZXF1aXJlIGEgY29udHJvbC1wbGFuZSBwcm9maWxlIGZvciB0aGlzIGZsb3cgYW5kIGRp" + - "ZCBub3QgbWl4IGluIENMSSBwcm9maWxlIGNvbW1hbmRzIgogICAgXQogIH0sCiAgewogICAgImlk" + - "IjogIkc3LWJvdGgtZG9ja2VyLWhlbG0tYXV0aCIsCiAgICAicXVlc3Rpb24iOiAiQXV0aGVudGlj" + - "YXRlIHRvIE5HQyBmb3IgTlZDRiBoZWxtZmlsZSBkZXBsb3ltZW50IiwKICAgICJleHBlY3RlZF9z" + - "a2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0" + - "aCI6ICJUaGUgYWdlbnQgcmFuIGJvdGggZG9ja2VyIGxvZ2luIGFuZCBoZWxtIHJlZ2lzdHJ5IGxv" + - "Z2luIGZvciBudmNyLmlvLiBJdCBleHBsYWluZWQgdGhhdCBib3RoIGFyZSByZXF1aXJlZCBiZWNh" + - "dXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBPQ0kgY2hhcnRzLCBz" + - "byBkb2NrZXIgbG9naW4gYWxvbmUgaXMgaW5zdWZmaWNpZW50LiIsCiAgICAiZXhwZWN0ZWRfYmVo" + - "YXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5z" + - "dGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2Vu" + - "dCByYW4gJ2RvY2tlciBsb2dpbiBudmNyLmlvJyB3aXRoICRvYXV0aHRva2VuIHVzZXJuYW1lIGFu" + - "ZCBOR0NfQVBJX0tFWSBwYXNzd29yZCIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHJlZ2lz" + - "dHJ5IGxvZ2luIG52Y3IuaW8nIHdpdGggJG9hdXRodG9rZW4gdXNlcm5hbWUgYW5kIE5HQ19BUElf" + - "S0VZIHBhc3N3b3JkIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCBib3RoIGFyZSBy" + - "ZXF1aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8gcHVsbCBP" + - "Q0kgY2hhcnRzIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHByb3ZpZGUgb25seSBvbmUgb2Yg" + - "dGhlIHR3byBhdXRoZW50aWNhdGlvbiBjb21tYW5kcyIKICAgIF0KICB9LAogIHsKICAgICJpZCI6" + - "ICJHOS1taXNzaW5nLWJ1bmRsZSIsCiAgICAicXVlc3Rpb24iOiAiUnVuIGhlbG1maWxlIHN5bmMg" + - "Zm9yIE5WQ0YgaW4gbXkgY3VycmVudCBkaXJlY3RvcnkiLAogICAgImV4cGVjdGVkX3NraWxsIjog" + - "Im52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRo" + - "ZSBhZ2VudCBhdHRlbXB0ZWQgdG8gdmVyaWZ5IHRoZSBidW5kbGUgc3RydWN0dXJlIChoZWxtZmls" + - "ZS5kLywgZW52aXJvbm1lbnRzLywgc2VjcmV0cy8sIGdsb2JhbC55YW1sLmdvdG1wbCkgYW5kIHdo" + - "ZW4gZmlsZXMgd2VyZSBub3QgZm91bmQsIHN0b3BwZWQgYW5kIGluc3RydWN0ZWQgdGhlIHVzZXIg" + - "dG8gZXh0cmFjdCBvciBsb2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrIGJ1bmRsZS4g" + - "SXQgZGlkIG5vdCBhdHRlbXB0IHRvIHJ1biBoZWxtZmlsZSBzeW5jIGFnYWluc3QgYSBtaXNzaW5n" + - "IGJ1bmRsZS4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJl" + - "YWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFr" + - "aW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBmb3IgZXhwZWN0ZWQgYnVuZGxl" + - "IHN0cnVjdHVyZSAoaGVsbWZpbGUuZC8sIGVudmlyb25tZW50cy8sIHNlY3JldHMvLCBnbG9iYWwu" + - "eWFtbC5nb3RtcGwpIiwKICAgICAgIldoZW4gYnVuZGxlIGZpbGVzIHdlcmUgbm90IGZvdW5kLCB0" + - "aGUgYWdlbnQgc3RvcHBlZCBhbmQgZGlkIG5vdCBhdHRlbXB0IGhlbG1maWxlIHN5bmMiLAogICAg" + - "ICAiVGhlIGFnZW50IGluc3RydWN0ZWQgdGhlIHVzZXIgdG8gZXh0cmFjdCBvciBsb2NhdGUgdGhl" + - "IG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrIGJ1bmRsZSIKICAgIF0KICB9LAogIHsKICAgICJpZCI6" + - "ICJTMS1jbGVhbi1pbnN0YWxsYXRpb24iLAogICAgInF1ZXN0aW9uIjogIlBlcmZvcm0gYSBjbGVh" + - "biBpbnN0YWxsYXRpb24gb2YgdGhlIE5WQ0Ygc2VsZi1tYW5hZ2VkIHN0YWNrIG9uIG15IEFXUyBF" + - "S1MgY2x1c3Rlci4gTXkgZW52aXJvbm1lbnQgbmFtZSBpcyAnc3RhZ2luZycuIiwKICAgICJleHBl" + + "dGwgYXBwbHlgLiBJbnN0ZWFkLCByZW5kZXIgbWFuaWZlc3RzLCBjb21taXQgdGhlbSwgbGV0IHRo" + + "ZSBjb250cm9sbGVyIGFwcGx5LgoKYGBgeWFtbApyZW5kZXI6CiAgc2NyaXB0OgogICAgLSBudmNm" + + "LWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSAtLW5vLWFwcGx5ID4gcmVu" + + "ZGVyZWQvY29udHJvbC1wbGFuZS55YW1sCiAgICAtIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGluc3Rh" + + "bGwgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPSROQU1FIC0tbm8tYXBwbHkgPiByZW5k" + + "ZXJlZC9jb21wdXRlLXBsYW5lLnlhbWwKICAgIC0gZ2l0IGFkZCByZW5kZXJlZC8gJiYgZ2l0IGNv" + + "bW1pdCAtbSAiZGVwbG95IE5WQ0YgJFRBRyIgJiYgZ2l0IHB1c2gKYGBgCgpUaGVuIEFyZ29DRCBv" + + "ciBGbHV4IHdhdGNoZXMgYHJlbmRlcmVkL2AgYW5kIGFwcGxpZXMuIFRoZSBDTEkgbmV2ZXIgdG91" + + "Y2hlcyB0aGUgY2x1c3RlciBkaXJlY3RseS4KCkZvciB0aGUgcmVnaXN0ZXIgc3RlcCAod2hpY2gg" + + "bXV0YXRlcyBJQ01TLCBub3QganVzdCBLOHMpOgoKYGBgeWFtbApyZWdpc3RlcjoKICBzY3JpcHQ6" + + "CiAgICAtIG52Y2YtY2xpIGNsdXN0ZXIgcmVnaXN0ZXIgLS1uYW1lPSROQU1FIC0tbmNhLWlkPSRO" + + "Q0EgLS1yZWdpb249JFJFR0lPTiAtLWlnbm9yZS1leGlzdGluZwpgYGAKCmAtLWlnbm9yZS1leGlz" + + "dGluZ2AgaXMgdGhlIEdpdE9wcy1mcmllbmRseSBpZGVtcG90ZW50IGNvbnRyYWN0LgoKIyMgTXVs" + + "dGktY2x1c3RlciBwaXBlbGluZQoKV2hlbiB0aGUgcGlwZWxpbmUgbWFuYWdlcyBtYW55IGNvbXB1" + + "dGUgY2x1c3RlcnMgYWdhaW5zdCBvbmUgY29udHJvbCBwbGFuZToKCmBgYHlhbWwKZGVwbG95X2Nv" + + "bXB1dGVfcGxhbmVzOgogIHBhcmFsbGVsOgogICAgbWF0cml4OgogICAgICAtIENMVVNURVI6IG5j" + + "cC1lYXN0LTEKICAgICAgICBDT05URVhUOiBhZG1pbkBncHUtZWFzdC0xCiAgICAgIC0gQ0xVU1RF" + + "UjogbmNwLXdlc3QtMQogICAgICAgIENPTlRFWFQ6IGFkbWluQGdwdS13ZXN0LTEKICAgICAgLSBD" + + "TFVTVEVSOiBuY3AtZXUtMQogICAgICAgIENPTlRFWFQ6IGFkbWluQGdwdS1ldS0xCiAgc2NyaXB0" + + "OgogICAgLSBudmNmLWNsaSBzZWxmLWhvc3RlZCB1cAogICAgICAgIC0tY2x1c3Rlci1uYW1lPSRD" + + "TFVTVEVSCiAgICAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9JENPTlRFWFQKICAgICAgICAt" + + "LWljbXMtdXJsPSRJQ01TX1BVQkxJQ19VUkwKICAgICAgICAtLXRva2VuPSROVkNGX0FETUlOX0pX" + + "VAogICAgICAgIC0tbm9uLWludGVyYWN0aXZlCiAgICAgICAgLS1qc29uCmBgYAoKRWFjaCBwYXJh" + + "bGxlbCBqb2IgcmVnaXN0ZXJzICsgaW5zdGFsbHMgb25lIGNvbXB1dGUgcGxhbmUgYWdhaW5zdCB0" + + "aGUgc2hhcmVkIGNvbnRyb2wgcGxhbmUuIEZhaWx1cmVzIGFyZSBpc29sYXRlZC4KCiMjIFBsYW4t" + + "b25seSBwcmV2aWV3IGluIFBScwoKYGBgeWFtbApwcmV2aWV3OgogIHJ1bGVzOgogICAgLSBpZjog" + + "JENJX1BJUEVMSU5FX1NPVVJDRSA9PSAibWVyZ2VfcmVxdWVzdF9ldmVudCIKICBzY3JpcHQ6CiAg" + + "ICAtIHwKICAgICAgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXAgXAogICAgICAgIC0tY2x1c3Rlci1u" + + "YW1lPSRDTFVTVEVSX05BTUUgXAogICAgICAgIC0tcGxhbi1vbmx5IFwKICAgICAgICAtLWpzb24g" + + "fCB0ZWUgcGxhbi5qc29ubAogICAgLSBqcSAtcyAnLlswXScgcGxhbi5qc29ubCA+IHBsYW4uanNv" + + "bgogICAgLSAnZ2l0bGFiLW1yLWNvbW1lbnQgIiMjIE5WQ0YgZGVwbG95IHBsYW5cblxuXGBcYFxg" + + "anNvblxuJChjYXQgcGxhbi5qc29uKVxuXGBcYFxgIicKYGBgCgpgLS1wbGFuLW9ubHlgIGV4aXRz" + + "IDAgd2l0aG91dCBjaGFuZ2luZyBjbHVzdGVyIHN0YXRlOyB0aGUgSlNPTkwgb3V0cHV0IGxpc3Rz" + + "IGVhY2ggcGhhc2UgKyBFVEEuIFJlbmRlcnMgbmljZWx5IGFzIGFuIE1SIGNvbW1lbnQuClBLBwgU" + + "m+5a2g0AANoNAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADQACQBkYXRhL252Y2Ytc2VsZi1t" + + "YW5hZ2VkLWNsaS9leGFtcGxlcy9tdWx0aS1jbHVzdGVyLm1kVVQFAAEAps4SIyBNdWx0aS1jbHVz" + + "dGVyIHBhdHRlcm5zCgpFeGFtcGxlcyBvZiBzcGxpdC1jbHVzdGVyICsgbWFueS1jb21wdXRlLXBs" + + "YW5lIG9wZXJhdGlvbi4KCiMjIE9uZSBjb250cm9sIHBsYW5lICsgTiBjb21wdXRlIHBsYW5lcwoK" + + "VGhlIGNhbm9uaWNhbCBtdWx0aS1jbHVzdGVyIHRvcG9sb2d5LiBFYWNoIGNvbXB1dGUgcGxhbmUg" + + "aXMgcmVnaXN0ZXJlZCBzZXBhcmF0ZWx5OgoKYGBgc2gKIyAxLiBCcmluZyB1cCB0aGUgY29udHJv" + + "bCBwbGFuZSAob25lLXRpbWUsIG9uIHRoZSBjb250cm9sLXBsYW5lIGNsdXN0ZXIpOgpLVUJFQ09O" + + "RklHPWNwLnlhbWwgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmUg" + + "fCBrdWJlY3RsIGFwcGx5IC1mIC0KbnZjZi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1jb250cm9s" + + "LXBsYW5lIC0td2FpdCA1bQoKIyAyLiBSZWdpc3RlciArIGluc3RhbGwgZWFjaCBjb21wdXRlIHBs" + + "YW5lOgpmb3IgQ1RYIGluIGFkbWluQGdwdS1lYXN0LTEgYWRtaW5AZ3B1LXdlc3QtMSBhZG1pbkBn" + + "cHUtZXUtMTsgZG8KICBOQU1FPSQoZWNobyAiJENUWCIgfCBjdXQgLWRAIC1mMikKICBudmNmLWNs" + + "aSBzZWxmLWhvc3RlZCB1cCBcCiAgICAtLWNsdXN0ZXItbmFtZT0kTkFNRSBcCiAgICAtLWNvbXB1" + + "dGUtcGxhbmUtY29udGV4dD0kQ1RYIFwKICAgIC0taWNtcy11cmw9aHR0cHM6Ly9pY21zLm52Y2Yu" + + "ZXhhbXBsZS5jb20gXAogICAgLS10b2tlbj0kTlZDRl9BRE1JTl9KV1QgXAogICAgLS1ub24taW50" + + "ZXJhY3RpdmUgXAogICAgLS1qc29uCmRvbmUKCiMgMy4gVmVyaWZ5IGFsbCBjb21wdXRlIHBsYW5l" + + "cyByZWdpc3RlcmVkOgpudmNmLWNsaSBjbHVzdGVyIGxpc3QtcmVnaXN0ZXJlZCAtLW5jYS1pZD0k" + + "TkNBX0lEIC0taWNtcy11cmw9JElDTVMgLS1qc29uIFwKICB8IGpxICcuY2x1c3RlcnNbXSB8IHtu" + + "YW1lOiAuY2x1c3Rlck5hbWUsIHN0YXR1cywgbnZjYVZlcnNpb259JwpgYGAKCiMjIENvbXB1dGUt" + + "cGxhbmUtb25seSBvcGVyYXRvciBzY2VuYXJpbwoKVGhlIG9wZXJhdG9yIGhhcyBrdWJlY3RsIGFj" + + "Y2VzcyB0byBPTkUgY29tcHV0ZSBwbGFuZSBvbmx5IOKAlCB0aGUgY29udHJvbCBwbGFuZSBpcyBv" + + "cGVyYXRlZCBieSBzb21lb25lIGVsc2UgKGUuZy4gWW90dGEgcnVucyB0aGUgY29udHJvbCBwbGFu" + + "ZSBmb3IgYSBjdXN0b21lcikuCgpgYGBzaAojIE1pbnQgYSB0b2tlbiB2aWEgdGhlIHB1YmxpYyBh" + + "cGkgZ2F0ZXdheSAodGhlIGNvbnRyb2wgcGxhbmUncyBBUEkgS2V5cwojIHNlcnZpY2UgaXMgcmVh" + + "Y2hhYmxlIHZpYSBhcGkubnZjZi5leGFtcGxlLmNvbSDigJQgbm8ga3ViZWN0bCBhY2Nlc3MgbmVl" + + "ZGVkKToKbnZjZi1jbGkgaW5pdCAtLWFwaS11cmw9aHR0cHM6Ly9hcGkubnZjZi5leGFtcGxlLmNv" + + "bQoKIyBSdW4gcHJlLWZsaWdodCBzY29wZWQgdG8gdGhlIGNvbXB1dGUgcGxhbmUgb25seToKbnZj" + + "Zi1jbGkgc2VsZi1ob3N0ZWQgY2hlY2sgLS1wcmUgXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0" + + "PWFkbWluQGdwdTEgXAogIC0taWNtcy11cmw9aHR0cHM6Ly9pY21zLm52Y2YuZXhhbXBsZS5jb20g" + + "XAogIC0tanNvbgoKIyBCcmluZyB1cCBqdXN0IHRoZSBjb21wdXRlIHBsYW5lOgpudmNmLWNsaSBz" + + "ZWxmLWhvc3RlZCB1cCBcCiAgLS1jbHVzdGVyLW5hbWU9bXktY29tcHV0ZS0xIFwKICAtLWNvbXB1" + + "dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAtLWljbXMtdXJsPWh0dHBzOi8vaWNtcy5u" + + "dmNmLmV4YW1wbGUuY29tIFwKICAtLXRva2VuPSRBRE1JTl9KV1QgXAogIC0tbm9uLWludGVyYWN0" + + "aXZlCgojIFN0YXR1cyAoY29tcHV0ZS1vbmx5IOKAlCBvcGVyYXRvciBjYW4ndCBzZWUgY29udHJv" + + "bC1wbGFuZSBjb21wb25lbnQgaGVhbHRoKToKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzIFwK" + + "ICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAtLWljbXMtdXJsPWh0dHBz" + + "Oi8vaWNtcy5udmNmLmV4YW1wbGUuY29tCmBgYAoKIyMgRnVuY3Rpb25zIHRhcmdldGluZyBzcGVj" + + "aWZpYyBjb21wdXRlIHBsYW5lcwoKV2hlbiB5b3UgaGF2ZSBtdWx0aXBsZSBjb21wdXRlIHBsYW5l" + + "cyBhbmQgd2FudCBhIGZ1bmN0aW9uIHRvIGRlcGxveSB0byBvbmU6CgpgYGBqc29uCnsKICAiZnVu" + + "Y3Rpb25JZCI6ICI8Zm5faWQ+IiwKICAidmVyc2lvbklkIjogIjx2ZXJfaWQ+IiwKICAiZGVwbG95" + + "bWVudFNwZWNpZmljYXRpb25zIjogW3sKICAgICJncHUiOiAiSDEwMCIsCiAgICAiaW5zdGFuY2VU" + + "eXBlIjogIk5DUC5HUFUuSDEwMF8xeCIsCiAgICAibWluSW5zdGFuY2VzIjogMSwKICAgICJtYXhJ" + + "bnN0YW5jZXMiOiAxLAogICAgImNsdXN0ZXJzIjogWyJncHUtZWFzdC0xIl0KICB9XQp9CmBgYAoK" + + "VGhlIGBjbHVzdGVyc2AgYXJyYXkgKHVzaW5nIGNsdXN0ZXIgbmFtZXMsIG5vdCBJRHMpIGxpbWl0" + + "cyBzY2hlZHVsaW5nIHRvIHRob3NlIGNvbXB1dGUgcGxhbmVzLiBPbWl0IHRvIGxldCBJQ01TIGNo" + + "b29zZSBhbnkgY29tcHV0ZSBwbGFuZSB3aXRoIGEgbWF0Y2hpbmcgU0tVLgoKIyMgU3RhdHVzIGZh" + + "bi1vdXQgYWNyb3NzIGNvbXB1dGUgcGxhbmVzCgpgYGBzaAojIExpc3QgYWxsIHJlZ2lzdGVyZWQg" + + "Y29tcHV0ZSBwbGFuZXM6Cm52Y2YtY2xpIGNsdXN0ZXIgbGlzdC1yZWdpc3RlcmVkIC0tbmNhLWlk" + + "PSROQ0FfSUQgLS1pY21zLXVybD0kSUNNUyAtLWpzb24gXAogIHwganEgLXIgJy5jbHVzdGVyc1td" + + "LmNsdXN0ZXJOYW1lJyA+IGNsdXN0ZXJzLnR4dAoKIyBTdGF0dXMgc25hcHNob3QgcGVyIGNvbXB1" + + "dGUgcGxhbmUgKGFzc3VtaW5nIGVhY2ggY29udGV4dCBuYW1lIG1hdGNoZXMpOgp3aGlsZSByZWFk" + + "IE5BTUU7IGRvCiAgZWNobyAiPT09ICROQU1FID09PSIKICBudmNmLWNsaSBzZWxmLWhvc3RlZCBz" + + "dGF0dXMgXAogICAgLS1jbHVzdGVyLW5hbWU9JE5BTUUgXAogICAgLS1jb21wdXRlLXBsYW5lLWNv" + + "bnRleHQ9YWRtaW5AJE5BTUUgXAogICAgLS1qc29uIHwganEgLWMgJ3tjbHVzdGVyOi5jbHVzdGVy" + + "LCB2ZXJkaWN0Oi52ZXJkaWN0LCByZWNvbmNpbGU6LnJlY29uY2lsZUFnZVNlY30nCmRvbmUgPCBj" + + "bHVzdGVycy50eHQKYGBgCgpBIGZ1dHVyZSBNKzExIG1pbGVzdG9uZSB3aWxsIGFkZCBuYXRpdmUg" + + "ZmFuLW91dCAoYHN0YXR1cyAtLWFsbC1jb21wdXRlLXBsYW5lc2ApIHNvIHRoaXMgZG9lc24ndCBu" + + "ZWVkIGEgc2hlbGwgbG9vcC4KUEsHCKEU44FdDAAAXQwAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAA" + + "AAAANwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvYWRkLWNvbXB1dGUtcGxh" + + "bmUubWRVVAUAAQCmzhIjIEFkZCBhIGNvbXB1dGUgcGxhbmUgdG8gYW4gZXhpc3RpbmcgY29udHJv" + + "bCBwbGFuZQoKVXNlciBoYXMgYSB3b3JraW5nIE5WQ0YgY29udHJvbCBwbGFuZSAocnVubmluZyBz" + + "b21ld2hlcmUpIGFuZCB3YW50cyB0byByZWdpc3RlciBhIG5ldyBHUFUgY2x1c3RlciBhZ2FpbnN0" + + "IGl0LiBUaGlzIGlzIHRoZSBtdWx0aS1jbHVzdGVyIHNjYWxpbmcgcGF0aDogb25lIGNvbnRyb2wg" + + "cGxhbmUg4oaSIE4gY29tcHV0ZSBwbGFuZXMuCgojIyBQcmVyZXF1aXNpdGVzIHRoZSB1c2VyIG11" + + "c3QgaGF2ZQoKLSAqKmt1YmVjdGwgY29udGV4dCBmb3IgdGhlIG5ldyBjb21wdXRlIHBsYW5lKiog" + + "aW4gdGhlaXIgYEtVQkVDT05GSUdgLgotICoqUHVibGljIElDTVMgVVJMKiogb2YgdGhlIGV4aXN0" + + "aW5nIGNvbnRyb2wgcGxhbmUgKGUuZy4gYGh0dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUuY29tYCku" + + "Ci0gKipBZG1pbiBKV1QqKiBmb3IgdGhlIGNvbnRyb2wgcGxhbmUncyBhY2NvdW50LCBPUiBhYmls" + + "aXR5IHRvIG1pbnQgb25lIHZpYSBgbnZjZi1jbGkgaW5pdGAgYWdhaW5zdCB0aGUgY29udHJvbCBw" + + "bGFuZSdzIHB1YmxpYyBhcGkgZW5kcG9pbnQuIChBZG1pbiB0b2tlbnMgY29tZSBmcm9tIHRoZSBB" + + "UEkgS2V5cyBzZXJ2aWNlIHZpYSB0aGUgcHVibGljIGFwaSBnYXRld2F5IOKAlCBrdWJlY3RsIGFj" + + "Y2VzcyB0byB0aGUgY29udHJvbCBwbGFuZSBpcyBOT1QgcmVxdWlyZWQgdG8gb2J0YWluIG9uZS4p" + + "Ci0gQSB1bmlxdWUgYC0tY2x1c3Rlci1uYW1lYCB0aGF0IGRvZXNuJ3QgY29sbGlkZSB3aXRoIGFs" + + "cmVhZHktcmVnaXN0ZXJlZCBjbHVzdGVycy4gVXNlIGBudmNmLWNsaSBjbHVzdGVyIGxpc3QtcmVn" + + "aXN0ZXJlZCAtLW5jYS1pZD0kTkNBX0lEIC0taWNtcy11cmw9JElDTVNgIHRvIGNoZWNrLgoKIyMg" + + "U3RlcHMKCjEuICoqQXNrIGZvciBpbnB1dHM6KioKICAgLSBgLS1jbHVzdGVyLW5hbWU9PHVuaXF1" + + "ZT5gIOKAlCBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGNvbnRyb2wgcGxhbmUncyBOQ0Egc2Nv" + + "cGUKICAgLSBgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9PGNvbnRleHQ+YCDigJQgdGhlIG5ldyBH" + + "UFUgY2x1c3RlcidzIGt1YmVjdGwgY29udGV4dAogICAtIGAtLWljbXMtdXJsPTxodHRwczovL2lj" + + "bXMubnZjZi5leGFtcGxlLmNvbT5gIOKAlCBjb250cm9sIHBsYW5lJ3MgcHVibGljIElDTVMgVVJM" + + "CiAgIC0gR1BVIHR5cGU/IChkZWZhdWx0IGBIMTAwYCwgYnV0IGFzaykKCjIuICoqUHJlLWZsaWdo" + + "dCBqdXN0IHRoZSBjb21wdXRlIHBsYW5lOioqCgogICBgYGBzaAogICBudmNmLWNsaSBzZWxmLWhv" + + "c3RlZCBjaGVjayAtLXByZSBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9JENUWCBcCiAg" + + "ICAgLS1pY21zLXVybD0kSUNNUyBcCiAgICAgLS1qc29uIHwganEgLWMgLgogICBgYGAKCiAgIFRo" + + "aXMgdmFsaWRhdGVzIHRoZSBHUFUgb3BlcmF0b3IgaXMgaW5zdGFsbGVkLCBHUFUgbm9kZSBsYWJl" + + "bHMgYXJlIHByZXNlbnQsIGFuZCBJQ01TIGlzIHJlYWNoYWJsZSB2aWEgSFRUUC4gQWRkcmVzcyBh" + + "bnkgZmFpbHVyZXMgYmVmb3JlIHByb2NlZWRpbmcuCgozLiAqKlJ1biBgYWRkLWNvbXB1dGUtcGxh" + + "bmVgOioqCgogICBgYGBzaAogICBudmNmLWNsaSBzZWxmLWhvc3RlZCBhZGQtY29tcHV0ZS1wbGFu" + + "ZSBcCiAgICAgLS1jbHVzdGVyLW5hbWU9JE5BTUUgXAogICAgIC0tY29tcHV0ZS1wbGFuZS1jb250" + + "ZXh0PSRDVFggXAogICAgIC0taWNtcy11cmw9JElDTVMgXAogICAgIC0tdG9rZW49JEpXVCBcCiAg" + + "ICAgLS1ub24taW50ZXJhY3RpdmUgXAogICAgIC0tanNvbgogICBgYGAKCiAgIFRoaXMgaXMgYSBz" + + "ZXBhcmF0ZSBzdWJjb21tYW5kIGZyb20gYHVwYC4gSXQgcnVucyBvbmx5IHRoZSBjb21wdXRlLXBs" + + "YW5lLXJlbGV2YW50IHBoYXNlczogMSAoY29tcHV0ZS1wbGFuZSBwcmVmbGlnaHQpLCA1IChyZWdp" + + "c3RlciksIDYgKGNvbXB1dGUtcGxhbmUgYXBwbHkpLCA4IChmaW5hbCBoZWFsdGggb24gdGhlIG5l" + + "dyBjb21wdXRlIHBsYW5lKS4gSXQgZG9lcyBOT1QgdG91Y2ggdGhlIGNvbnRyb2wgcGxhbmUgYW5k" + + "IGRvZXMgTk9UIGFjY2VwdCBgLS1jb250cm9sLXBsYW5lLWNvbnRleHRgIOKAlCB0aGUgY29udHJv" + + "bCBwbGFuZSBpcyByZWFjaGVkIG92ZXIgSFRUUFMgYXQgYC0taWNtcy11cmxgLiBgLS10b2tlbmAg" + + "aXMgcmVxdWlyZWQgYmVjYXVzZSB0aGVyZSdzIG5vIGt1YmVjdGwgcGF0aCB0byBtaW50IG9uZSBm" + + "cm9tLgoKNC4gKipWZXJpZnkuKiogYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1cyAtLWNsdXN0" + + "ZXItbmFtZT0kTkFNRSAtLWpzb24gfCBqcWAg4oCUIGV4cGVjdCBgdmVyZGljdDogImhlYWx0aHki" + + "YC4gVGhlIFJlZ2lzdGVyZWQgQ29tcHV0ZSBQbGFuZXMgcGFuZWwgZnJvbSBJQ01TIHNob3VsZCBu" + + "b3cgbGlzdCB0aGUgbmV3IGNsdXN0ZXIuCgo1LiAqKlNtb2tlLioqIFtkZXBsb3ktYW5kLWludm9r" + + "ZS5tZF0oZGVwbG95LWFuZC1pbnZva2UubWQpIOKAlCBkZXBsb3kgYSBzbWFsbCBmdW5jdGlvbiB0" + + "byB0aGUgbmV3IGNvbXB1dGUgcGxhbmUgdG8gY29uZmlybSBzY2hlZHVsaW5nIHdvcmtzLgoKIyMg" + + "V2hhdCBpZiBhIGNsdXN0ZXIgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzPwoKYGFk" + + "ZC1jb21wdXRlLXBsYW5lYCdzIHJlZ2lzdGVyIHBoYXNlIHVzZXMgYC0taWdub3JlLWV4aXN0aW5n" + + "YCBzZW1hbnRpY3Mg4oCUIGl0J2xsIG1hdGNoIHRoZSBleGlzdGluZyBJQ01TIHJvdyBhbmQgcmV1" + + "c2UgaXRzIGNsdXN0ZXJJZC4gVHdvIHNjZW5hcmlvczoKCi0gKipSZS1yZWdpc3RlcmluZyB0aGUg" + + "c2FtZSBjbHVzdGVyKiogKHJlLXJ1bm5pbmcgb24gdGhlIHNhbWUgY29tcHV0ZSBwbGFuZSB0aGF0" + + "IHdhcyBwcmV2aW91c2x5IHJlZ2lzdGVyZWQpOiBleHBlY3RlZCwgbm8tb3Agc2VtYW50aWNzLgot" + + "ICoqRGlmZmVyZW50IHBoeXNpY2FsIGNsdXN0ZXIgYnV0IHNhbWUgbmFtZSoqOiB0aGUgc2Vjb25k" + + "IGF0dGVtcHQgd2lsbCByZXVzZSB0aGUgSUNNUyByb3csIGJ1dCB0aGUgbmV3IGNvbXB1dGUgcGxh" + + "bmUncyBKV0tTIHdpbGwgYmUgc2lsZW50bHkgKnJlcGxhY2VkKiDigJQgdGhlIG9sZCBjb21wdXRl" + + "IHBsYW5lJ3MgTlZDQSBhZ2VudCB3aWxsIHN0YXJ0IGZhaWxpbmcgUFNBVCBhdXRoLiAqKkNvbmZp" + + "cm0gd2l0aCB0aGUgdXNlcioqIHRoYXQgdGhleSBtZWFudCB0byBvdmVyd3JpdGUuCgpXaGVuIGlu" + + "IGRvdWJ0LCBydW4gYG52Y2YtY2xpIGNsdXN0ZXIgbGlzdC1yZWdpc3RlcmVkIC0tbmNhLWlkPSRO" + + "Q0FfSUQgLS1pY21zLXVybD0kSUNNU2AgZmlyc3QgYW5kIGFzayB0aGUgdXNlciBiZWZvcmUgcHJv" + + "Y2VlZGluZyB3aXRoIGEgbmFtZSB0aGF0IGFscmVhZHkgZXhpc3RzLgpQSwcIQidJDwUNAAAFDQAA" + + "UEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA5AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkv" + + "cHJvbXB0cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kVVQFAAEAps4SIyBDcmVhdGUgYW5kIHJ1biBh" + + "IHRhc2sKClN0YW5kYXJkIGZsb3c6IG1pbnQgQVBJIGtleXMgLT4gdGFzayBDUkVBVEUgLT4gbW9u" + + "aXRvciAtPiByZXRyaWV2ZSByZXN1bHRzIC0+IGNsZWFudXAuCgojIyAxLiBNaW50IEFQSSBrZXlz" + + "CgpUaGUgYWRtaW4gdG9rZW4gZnJvbSBgaW5pdGAgZG9lcyBub3QgY2FycnkgdGFzayBpbnZvY2F0" + + "aW9uIHNjb3BlLiBHZW5lcmF0ZSBBUEkga2V5czoKCmBgYHNoCm52Y2YtY2xpIGFwaS1rZXkgZ2Vu" + + "ZXJhdGUgLS1kZXNjcmlwdGlvbj0idGFzayBzbW9rZSB0ZXN0IiAtLWV4cGlyZXMtaW49OGgKIyAt" + + "PiBmdW5jdGlvbiBrZXk6IG52YXBpLS4uLgojIC0+IHRhc2sga2V5OiBudmFwaS0uLi4KYGBgCgpC" + + "b3RoIGtleXMgYXJlIHNhdmVkIHRvIENMSSBzdGF0ZS4gVG8gbWludCBvbmx5IHRoZSB0YXNrIGtl" + + "eToKCmBgYHNoCm52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1mb3IgdGFzayAtLWRlc2NyaXB0" + + "aW9uPSJ0YXNrIHNtb2tlIHRlc3QiIC0tZXhwaXJlcy1pbj04aApgYGAKClRvIHZhbGlkYXRlIGVh" + + "Y2gga2V5IGltbWVkaWF0ZWx5IGFmdGVyIG1pbnRpbmc6CgpgYGBzaApudmNmLWNsaSBhcGkta2V5" + + "IGdlbmVyYXRlIC0tZGVzY3JpcHRpb249InRhc2sgc21va2UgdGVzdCIgLS1leHBpcmVzLWluPTho" + + "IC0tdmFsaWRhdGUKIyAtPiBmdW5jdGlvbiBBUEkga2V5IHZhbGlkYXRpb24gcGFzc2VkIQojIC0+" + + "IHRhc2sgQVBJIGtleSB2YWxpZGF0aW9uIHBhc3NlZCEKYGBgCgpOZXZlciBlY2hvIHRoZSBrZXkg" + + "dmFsdWUgKG52YXBpLS4uLikgaW50byBjaGF0IG9yIGxvZ3MuIFJlcG9ydCBvbmx5IHRoYXQgdGhl" + + "IGtleSB3YXMgbWludGVkLCBpdHMgZGVzY3JpcHRpb24sIGFuZCBpdHMgZXhwaXJ5IOKAlCBuZXZl" + + "ciB0aGUgdmFsdWUgaXRzZWxmLgoKIyMjIEZyZXNoIHNlc3Npb24gcHJlLWZsaWdodAoKQmVmb3Jl" + + "IHJ1bm5pbmcgYW55IGB0YXNrYCBjb21tYW5kIGluIGEgZnJlc2ggYWdlbnQgc2Vzc2lvbiwgdmVy" + + "aWZ5IGNyZWRlbnRpYWxzOgoKMS4gQ2hlY2sgd2hldGhlciBgTlZDRl9BUElfS0VZYCBpcyBzZXQ6" + + "CgogICBgYGBzaAogICBwcmludGVudiBOVkNGX0FQSV9LRVkgPiAvZGV2L251bGwgMj4mMSAmJiBl" + + "Y2hvIHNldCB8fCBlY2hvIHVuc2V0CiAgIGBgYAoKMi4gSWYgdW5zZXQsIHJlYWQgdGhlIHN0b3Jl" + + "ZCBrZXkgZXhwaXJ5IHdpdGhvdXQgcHJpbnRpbmcgdGhlIHZhbHVlOgoKICAgYGBgc2gKICAgcHl0" + + "aG9uMyAtYyAiaW1wb3J0IGpzb24scGF0aGxpYjsgcz1qc29uLmxvYWRzKHBhdGhsaWIuUGF0aCgn" + + "fi8ubnZjZi1jbGkuc3RhdGUnKS5leHBhbmR1c2VyKCkucmVhZF90ZXh0KCkpOyBwcmludChzLmdl" + + "dCgnbnZjdEFwaUtleUV4cGlyYXRpb24nLCdtaXNzaW5nJykpIgogICBgYGAKCjMuIElmIHRoZSBl" + + "eHBpcnkgaXMgaW4gdGhlIHBhc3Qgb3IgbWlzc2luZywgcmVnZW5lcmF0ZToKCiAgIGBgYHNoCiAg" + + "IG52Y2YtY2xpIHJlZnJlc2gKICAgbnZjZi1jbGkgYXBpLWtleSBnZW5lcmF0ZSAtLWZvciB0YXNr" + + "IC0tZGVzY3JpcHRpb249InRhc2sta2V5IiAtLWV4cGlyZXMtaW49MjRoIC0tdmFsaWRhdGUKICAg" + + "YGBgCgo0LiBJbmplY3QgdGhlIHN0b3JlZCBrZXkgaW50byB0aGUgc3VicHJvY2VzcyBlbnYgd2l0" + + "aG91dCBsb2dnaW5nIHRoZSB2YWx1ZS4gVXNlIGEgc2hlbGwgc3Vic2hlbGwgb3IgZW52IHByZWZp" + + "eCDigJQgbmV2ZXIgcHJpbnQgdGhlIGtleSBpbnRvIGNoYXQuCgpFcnJvciBjbGFzc2lmaWNhdGlv" + + "bjoKCi0gIm1pc3NpbmcgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMiIG9yIGV4aXQgMjoga2V5" + + "IG5vdCBpbmplY3RlZDsgcmVwZWF0IHByZS1mbGlnaHQuCi0gSFRUUCA0MDM6IGtleSBleHBpcmVk" + + "IG9yIHdyb25nIGF1ZGllbmNlOyByZWdlbmVyYXRlLgotIEVtcHR5IHRhc2sgbGlzdDogdmFsaWQ7" + + "IG5vIHRhc2tzIGV4aXN0IHlldC4KCiMjIDIuIFRhc2sgQ1JFQVRFOiBjb250YWluZXIKCkRlZmlu" + + "ZSB0aGUgdGFzayBpbiBhIEpTT04gZmlsZS4gTWluaW11bSB2aWFibGUgY29udGFpbmVyIHRhc2s6" + + "CgpgYGBqc29uCnsKICAibmFtZSI6ICJzbW9rZS1jb250YWluZXItdGFzayIsCiAgImdwdVNwZWNp" + + "ZmljYXRpb24iOiB7CiAgICAiZ3B1IjogIkgxMDAiLAogICAgImluc3RhbmNlVHlwZSI6ICJOQ1Au" + + "R1BVLkgxMDBfMXgiLAogICAgImJhY2tlbmQiOiAibmNwLWxvY2FsIgogIH0sCiAgImNvbnRhaW5l" + + "ckltYWdlIjogIm52Y3IuaW8vbnZpZGlhL25lbW86bGF0ZXN0IiwKICAiY29udGFpbmVyQXJncyI6" + + "ICJweXRob24gLWMgXCJwcmludCgnaGVsbG8gZnJvbSB0YXNrJylcIiIsCiAgInJlc3VsdEhhbmRs" + + "aW5nU3RyYXRlZ3kiOiAiTk9ORSIKfQpgYGAKCmBgYHNoCm52Y2YtY2xpIHRhc2sgY3JlYXRlIC0t" + + "aW5wdXQtZmlsZT10YXNrLWNvbnRhaW5lci5qc29uCiMgLT4gVGFzayBJRDogPHRhc2tfaWQ+CmBg" + + "YAoKQ2FwdHVyZSB0aGUgdGFzayBJRCBmcm9tIHRoZSBvdXRwdXQuIFN0YXRlIHBlcnNpc3RlbmNl" + + "IGNhbiBmYWlsIHNpbGVudGx5LCBzbyBwYXNzCmA8dGFza0lkPmAgZXhwbGljaXRseSBvbiBzdWJz" + + "ZXF1ZW50IGNvbW1hbmRzIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gc2F2ZWQgc3RhdGUuCgpFcXVp" + + "dmFsZW50IENMSSBmbGFncyBmb3JtIGZvciBxdWljayBhZC1ob2MgcnVuczoKCmBgYHNoCm52Y2Yt" + + "Y2xpIHRhc2sgY3JlYXRlIFwKICAtLW5hbWU9c21va2UtY29udGFpbmVyLXRhc2sgXAogIC0tZ3B1" + + "PUgxMDAgXAogIC0taW5zdGFuY2UtdHlwZT1OQ1AuR1BVLkgxMDBfMXggXAogIC0tYmFja2VuZD1u" + + "Y3AtbG9jYWwgXAogIC0taW1hZ2U9bnZjci5pby9udmlkaWEvbmVtbzpsYXRlc3QgXAogIC0tY29u" + + "dGFpbmVyLWFyZ3M9InB5dGhvbiAtYyAncHJpbnQoaGVsbG8gZnJvbSB0YXNrKSciIFwKICAtLXJl" + + "c3VsdC1zdHJhdGVneT1OT05FCmBgYAoKVG8gdGFyZ2V0IGEgc3BlY2lmaWMgY29tcHV0ZSBjbHVz" + + "dGVyOgoKYGBgc2gKbnZjZi1jbGkgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPXRhc2stY29udGFp" + + "bmVyLmpzb24gLS1jbHVzdGVycz1teS1jbHVzdGVyCmBgYAoKVG8gaW5qZWN0IGVudmlyb25tZW50" + + "IHZhcmlhYmxlcyBvciBzZWNyZXRzLCBlaXRoZXIgcGFzcyBmbGFnczoKCmBgYHNoCm52Y2YtY2xp" + + "IHRhc2sgY3JlYXRlIC0taW5wdXQtZmlsZT10YXNrLWNvbnRhaW5lci5qc29uIFwKICAtLWNvbnRh" + + "aW5lci1lbnYgTVlfRU5WPXZhbHVlIFwKICAtLXNlY3JldHMgTVlfU0VDUkVUPXMzY3IzdApgYGAK" + + "Cm9yIHNldCB0aGVtIGluIHRoZSBKU09OIGZpbGU6CgpgYGBqc29uCnsKICAiY29udGFpbmVyRW52" + + "aXJvbm1lbnQiOiBbCiAgICB7ImtleSI6ICJNWV9FTlYiLCAidmFsdWUiOiAidmFsdWUifQogIF0s" + + "CiAgInNlY3JldHMiOiBbCiAgICB7Im5hbWUiOiAiTVlfU0VDUkVUIiwgInZhbHVlIjogInMzY3Iz" + + "dCJ9CiAgXQp9CmBgYAoKU2VjcmV0cyBhcmUgZW5jcnlwdGVkIGF0IHJlc3QgYW5kIG5vdCByZXR1" + + "cm5lZCBpbiBsaXN0IG9yIGdldCByZXNwb25zZXMgYnkgZGVmYXVsdDsgZG8gbm90IGxvZyB0aGVt" + + "LgoKIyMgMy4gVGFzayBDUkVBVEU6IEhlbG0KCkZvciBIZWxtLXR5cGUgdGFza3MsIHJlcGxhY2Ug" + + "YGNvbnRhaW5lckltYWdlYCB3aXRoIGBoZWxtQ2hhcnRgOgoKYGBganNvbgp7CiAgIm5hbWUiOiAi" + + "c21va2UtaGVsbS10YXNrIiwKICAiZ3B1U3BlY2lmaWNhdGlvbiI6IHsKICAgICJncHUiOiAiSDEw" + + "MCIsCiAgICAiaW5zdGFuY2VUeXBlIjogIk5DUC5HUFUuSDEwMF8xeCIsCiAgICAiYmFja2VuZCI6" + + "ICJuY3AtbG9jYWwiCiAgfSwKICAiaGVsbUNoYXJ0IjogImh0dHBzOi8vaGVsbS5uZ2MubnZpZGlh" + + "LmNvbS88b3JnPi9jaGFydHMvZXhhbXBsZS10YXNrLTAuMS4wLnRneiIsCiAgInJlc3VsdEhhbmRs" + + "aW5nU3RyYXRlZ3kiOiAiTk9ORSIKfQpgYGAKCmBgYHNoCm52Y2YtY2xpIHRhc2sgY3JlYXRlIC0t" + + "aW5wdXQtZmlsZT10YXNrLWhlbG0uanNvbgojIC0+IFRhc2sgSUQ6IDx0YXNrX2lkPgpgYGAKCmBo" + + "ZWxtQ2hhcnRgIGFuZCBgY29udGFpbmVySW1hZ2VgIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCgoj" + + "IyAzYi4gVXBkYXRlIHNlY3JldHMgb24gYSBydW5uaW5nIHRhc2sKCmBgYHNoCm52Y2YtY2xpIHRh" + + "c2sgdXBkYXRlLXNlY3JldHMgPHRhc2tfaWQ+IC0tc2VjcmV0cyBOQU1FPXZhbHVlCmBgYAoKYHVw" + + "ZGF0ZS1zZWNyZXRzYCBtZXJnZXMgc2VjcmV0cyBieSBuYW1lOiBzdXBwbGllZCBzZWNyZXRzIGFy" + + "ZSBhZGRlZCBvciB1cGRhdGVkLCBhbmQgZXhpc3Rpbmcgc2VjcmV0cyBub3QgaW5jbHVkZWQgaW4g" + + "dGhlIHJlcXVlc3QgYXJlIHByZXNlcnZlZC4gRG8gbm90IGVjaG8gc2VjcmV0IHZhbHVlcyBpbnRv" + + "IGNoYXQuCgojIyA0LiBNb25pdG9yCgpQb2xsIHRhc2sgc3RhdGU6CgpgYGBzaApudmNmLWNsaSB0" + + "YXNrIGdldCA8dGFza19pZD4KIyAtPiBpZDogPHRhc2tfaWQ+CiMgLT4gc3RhdHVzOiBSVU5OSU5H" + + "CmBgYAoKT3IgdXNlIHRoZSB0YXNrIElEIHNhdmVkIHRvIHN0YXRlIGZyb20gdGhlIG1vc3QgcmVj" + + "ZW50IGB0YXNrIGNyZWF0ZWA6CgpgYGBzaApudmNmLWNsaSB0YXNrIGdldApgYGAKClN0YXR1cyB2" + + "YWx1ZXM6IGBRVUVVRURgLCBgTEFVTkNIRURgLCBgUlVOTklOR2AsIGBDT01QTEVURURgLCBgRVJS" + + "T1JFRGAsIGBDQU5DRUxFRGAsIGBFWENFRURFRF9NQVhfUlVOVElNRV9EVVJBVElPTmAsIGBFWENF" + + "RURFRF9NQVhfUVVFVUVEX0RVUkFUSU9OYC4KCkluc3BlY3QgbGlmZWN5Y2xlIGV2ZW50cyBmb3Ig" + + "cHJvZ3Jlc3MgZGV0YWlscyBvciBmYWlsdXJlIGNvbnRleHQ6CgpgYGBzaApudmNmLWNsaSB0YXNr" + + "IGV2ZW50cyA8dGFza19pZD4KYGBgCgpJZiB0aGUgdGFzayBpcyBzdHVjayBpbiBgUVVFVUVEYCwg" + + "Y2hlY2sgdGhhdCBhIGNvbXB1dGUgY2x1c3RlciB3aXRoIGEgbWF0Y2hpbmcgR1BVIFNLVQppcyBy" + + "ZWdpc3RlcmVkIGFuZCBoZWFsdGh5IChgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgc3RhdHVzYCkuCgpJ" + + "ZiB0aGUgdGFzayBtb3ZlcyB0byBgRVJST1JFRGAsIHRoZSBldmVudHMgb3V0cHV0IGNvbnRhaW5z" + + "IHRoZSBmYWlsdXJlIHJlYXNvbi4gRm9yCmNvbnRhaW5lci1sZXZlbCBkZXRhaWwsIGluc3BlY3Qg" + + "dGhlIHRhc2sgd29ya2xvYWQgcG9kcyBvbiB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVyIHdpdGgK" + + "YGt1YmVjdGxgIGFnYWluc3QgdGhlIGFwcHJvcHJpYXRlIG5hbWVzcGFjZSBhbmQgY29udGV4dC4K" + + "CiMjIDUuIFJldHJpZXZlIHJlc3VsdHMKCkZvciB0YXNrcyB3aXRoIGByZXN1bHRIYW5kbGluZ1N0" + + "cmF0ZWd5OiBOT05FYCwgcmVzdWx0cyBhcmUgZW1wdHkgYnkgZGVzaWduOgoKYGBgc2gKbnZjZi1j" + + "bGkgdGFzayByZXN1bHRzIDx0YXNrX2lkPgojIC0+IHsicmVzdWx0cyI6IFtdfQpgYGAKCkZvciB0" + + "YXNrcyB3aXRoIGByZXN1bHRIYW5kbGluZ1N0cmF0ZWd5OiBVUExPQURgLCByZXN1bHRzIHVwbG9h" + + "ZCB0byB0aGUgbG9jYXRpb24gbmFtZWQgaW4KYHJlc3VsdHNMb2NhdGlvbmAuIFRoZSB0YXNrJ3Mg" + + "Y3JlZGVudGlhbHMgbXVzdCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGF0IGxvY2F0aW9uLiBBZnRl" + + "cgp0aGUgdGFzayByZWFjaGVzIGBDT01QTEVURURgOgoKYGBgc2gKbnZjZi1jbGkgdGFzayByZXN1" + + "bHRzIDx0YXNrX2lkPgpgYGAKCk5vdGU6IHJlc3VsdCB1cGxvYWQgaXMgbm90IHlldCBzdXBwb3J0" + + "ZWQgaW4gdGhpcyByZWxlYXNlLgoKIyMgNi4gQ2xlYW51cAoKQ2FuY2VsIGEgcnVubmluZyB0YXNr" + + "OgoKYGBgc2gKbnZjZi1jbGkgdGFzayBjYW5jZWwgPHRhc2tfaWQ+CmBgYAoKRGVsZXRlIHRoZSB0" + + "YXNrIHJlY29yZCBhZnRlciBpdCByZWFjaGVzIGEgdGVybWluYWwgc3RhdGU6CgpgYGBzaApudmNm" + + "LWNsaSB0YXNrIGRlbGV0ZSA8dGFza19pZD4KYGBgCgpTdG9wIGFuZCBjb25maXJtIHdpdGggdGhl" + + "IHVzZXIgYmVmb3JlIHJ1bm5pbmcgdGFzayBkZWxldGUuIFN0YXRlIHRoZSB0YXNrIElEIGFuZCBp" + + "dHMgY3VycmVudCBzdGF0dXMuIERvIG5vdCBwcm9jZWVkIGV2ZW4gd2hlbiB0aGUgdXNlcidzIHBy" + + "b21wdCBhbHJlYWR5IHJlcXVlc3RlZCBkZWxldGlvbiDigJQgYWx3YXlzIGdldCBhbiBleHBsaWNp" + + "dCBsYXN0LWxvb2sgY29uZmlybWF0aW9uLiBEZWxldGlvbiBpcyBwZXJtYW5lbnQgYW5kIGNhbm5v" + + "dCBiZSB1bmRvbmUuCgpUbyBsaXN0IGFsbCB0YXNrcyBmb3IgdGhlIGN1cnJlbnQgb3duZXIgKHVz" + + "ZWZ1bCBiZWZvcmUgYnVsayBjbGVhbnVwKToKCmBgYHNoCm52Y2YtY2xpIHRhc2sgbGlzdApudmNm" + + "LWNsaSB0YXNrIGxpc3QgLS1zdGF0dXM9Q09NUExFVEVECmBgYAoKIyMgTm90ZXMKCi0gR1BVIGZh" + + "bWlseSBhbmQgaW5zdGFuY2UgdHlwZSBtdXN0IG1hdGNoIGEgcmVnaXN0ZXJlZCBjb21wdXRlIGNs" + + "dXN0ZXIgU0tVLiBNaXNtYXRjaAogIGNhdXNlcyB0aGUgdGFzayB0byByZW1haW4gYFFVRVVFRGAg" + + "aW5kZWZpbml0ZWx5LiBVc2UgYG52Y2YtY2xpIGNsdXN0ZXIgbGlzdGAgdG8gY2hlY2sKICByZWdp" + + "c3RlcmVkIFNLVXMuCi0gRm9yIGNvbnRhaW5lciBpbWFnZXMgb24gcHJpdmF0ZSByZWdpc3RyaWVz" + + "LCBlbnN1cmUgdGhlIGNvbXB1dGUtcGxhbmUgY2x1c3RlcidzCiAgaW1hZ2UtY3JlZGVudGlhbC1o" + + "ZWxwZXIgaXMgY29uZmlndXJlZCBmb3IgdGhlIHJlZ2lzdHJ5IGhvc3QuClBLBwjU3o00nxkAAJ8Z" + + "AABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADcACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNs" + + "aS9wcm9tcHRzL2RlcGxveS1hbmQtaW52b2tlLm1kVVQFAAEAps4SIyBEZXBsb3kgYW5kIGludm9r" + + "ZSBhIGNvbnRhaW5lciBmdW5jdGlvbgoKU3RhbmRhcmQgZm91ci1zdGVwIGZsb3c6IGZ1bmN0aW9u" + + "IENSRUFURSDihpIgREVQTE9ZIOKGkiBBUEkga2V5IChmb3IgaW52b2tlIHNjb3BlKSDihpIgSU5W" + + "T0tFLgoKIyMgMS4gRnVuY3Rpb24gQ1JFQVRFCgpEZWZpbmUgdGhlIGZ1bmN0aW9uIGluIGEgSlNP" + + "TiBmaWxlLiBNaW5pbXVtOgoKQmVmb3JlIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiwgY29uZmlybSB0" + + "aGUgZXhhY3QgZnVuY3Rpb24gbmFtZSBhbmQgY29udGFpbmVyIGltYWdlIHdpdGggdGhlIHVzZXIu" + + "IElmIGVpdGhlciB2YWx1ZSBpcyBtaXNzaW5nLCBzdG9wIGFuZCBhc2suIERvIG5vdCBpbnZlbnQg" + + "b3Igc3VibWl0IGV4YW1wbGUgdmFsdWVzIGZvciB0aGVzZSBmaWVsZHMuCgpgYGBqc29uCnsKICAi" + + "bmFtZSI6ICI8Y29uZmlybWVkLWZ1bmN0aW9uLW5hbWU+IiwKICAiY29udGFpbmVySW1hZ2UiOiAi" + + "PGNvbmZpcm1lZC1jb250YWluZXItaW1hZ2U+IiwKICAiaW5mZXJlbmNlVXJsIjogIi9lY2hvIiwK" + + "ICAiaW5mZXJlbmNlUG9ydCI6IDgwMDAsCiAgImRlc2NyaXB0aW9uIjogInNtb2tlIHRlc3QgZWNo" + + "byBmdW5jdGlvbiIsCiAgImZ1bmN0aW9uVHlwZSI6ICJERUZBVUxUIiwKICAiYXBpQm9keUZvcm1h" + + "dCI6ICJDVVNUT00iLAogICJoZWFsdGgiOiB7CiAgICAicHJvdG9jb2wiOiAiSFRUUCIsCiAgICAi" + + "dXJpIjogIi9oZWFsdGgiLAogICAgInBvcnQiOiA4MDAwLAogICAgInRpbWVvdXQiOiAiUFQzMFMi" + + "LAogICAgImV4cGVjdGVkU3RhdHVzQ29kZSI6IDIwMAogIH0KfQpgYGAKCmBgYHNoCm52Y2YtY2xp" + + "IGZ1bmN0aW9uIGNyZWF0ZSAtLWlucHV0LWZpbGU9Y3JlYXRlLWZuLmpzb24KIyDihpIgRnVuY3Rp" + + "b24gSUQ6IDxmbl9pZD4KIyDihpIgVmVyc2lvbiBJRDogPHZlcl9pZD4KYGBgCgpTYXZlIHRoZSBJ" + + "RHMg4oCUIHRoZXkncmUgbmVlZGVkIGZvciBkZXBsb3kgKyBpbnZva2UuCgojIyMgTExNIGZ1bmN0" + + "aW9uIHZhcmlhbnQKCkZvciBhbiBPcGVuQUktY29tcGF0aWJsZSBMTE0gZnVuY3Rpb24sIHNldCBg" + + "ZnVuY3Rpb25UeXBlOiAiTExNImAgYW5kIHB1dCByb3V0ZSBtZXRhZGF0YSB1bmRlciBgbW9kZWxz" + + "W10ubGxtQ29uZmlnYDoKCkJlZm9yZSBjcmVhdGluZyB0aGUgZnVuY3Rpb24sIGNvbmZpcm0gdGhl" + + "IGV4YWN0IGZ1bmN0aW9uIG5hbWUsIGNvbnRhaW5lciBpbWFnZSwgYW5kIG1vZGVsIG5hbWUgd2l0" + + "aCB0aGUgdXNlci4gSWYgYW55IHZhbHVlIGlzIG1pc3NpbmcsIHN0b3AgYW5kIGFzay4gRG8gbm90" + + "IGludmVudCBvciBzdWJtaXQgZXhhbXBsZSB2YWx1ZXMgZm9yIHRoZXNlIGZpZWxkcy4KCmBgYGpz" + + "b24KewogICJuYW1lIjogIjxjb25maXJtZWQtZnVuY3Rpb24tbmFtZT4iLAogICJjb250YWluZXJJ" + + "bWFnZSI6ICI8Y29uZmlybWVkLWNvbnRhaW5lci1pbWFnZT4iLAogICJpbmZlcmVuY2VVcmwiOiAi" + + "LyIsCiAgImluZmVyZW5jZVBvcnQiOiA4MDAwLAogICJmdW5jdGlvblR5cGUiOiAiTExNIiwKICAi" + + "aGVhbHRoIjogewogICAgInByb3RvY29sIjogIkhUVFAiLAogICAgInVyaSI6ICIvaGVhbHRoIiwK" + + "ICAgICJwb3J0IjogODAwMCwKICAgICJ0aW1lb3V0IjogIlBUMzBTIiwKICAgICJleHBlY3RlZFN0" + + "YXR1c0NvZGUiOiAyMDAKICB9LAogICJtb2RlbHMiOiBbCiAgICB7CiAgICAgICJuYW1lIjogIjxj" + + "b25maXJtZWQtbW9kZWwtbmFtZT4iLAogICAgICAibGxtQ29uZmlnIjogewogICAgICAgICJ1cmlz" + + "IjogWyIvdjEvY2hhdC9jb21wbGV0aW9ucyIsICIvdjEvcmVzcG9uc2VzIiwgIi92MS9lbWJlZGRp" + + "bmdzIl0sCiAgICAgICAgInJvdXRpbmdNZXRob2QiOiAicm91bmRfcm9iaW4iLAogICAgICAgICJ0" + + "b2tlblJhdGVMaW1pdCI6ICIxMDAwLVMiCiAgICAgIH0KICAgIH0KICBdCn0KYGBgCgpFcXVpdmFs" + + "ZW50IENMSSBmbGFnIGZvcm06CgpgYGBzaApudmNmLWNsaSBmdW5jdGlvbiBjcmVhdGUgXAogIC0t" + + "bmFtZT0iPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1lPiIgXAogIC0taW1hZ2U9Ijxjb25maXJtZWQt" + + "Y29udGFpbmVyLWltYWdlPiIgXAogIC0taW5mZXJlbmNlLXVybD0vIFwKICAtLWluZmVyZW5jZS1w" + + "b3J0PTgwMDAgXAogIC0taGVhbHRoLXVyaT0vaGVhbHRoIFwKICAtLWhlYWx0aC1wb3J0PTgwMDAg" + + "XAogIC0taGVhbHRoLXRpbWVvdXQ9UFQzMFMgXAogIC0taGVhbHRoLXByb3RvY29sPUhUVFAgXAog" + + "IC0taGVhbHRoLWV4cGVjdGVkLXN0YXR1cz0yMDAgXAogIC0tZnVuY3Rpb24tdHlwZT1MTE0gXAog" + + "IC0tbGxtLW1vZGVsPSduYW1lPTxjb25maXJtZWQtbW9kZWwtbmFtZT4sdXJpcz0vdjEvY2hhdC9j" + + "b21wbGV0aW9uc3wvdjEvcmVzcG9uc2VzfC92MS9lbWJlZGRpbmdzLHJvdXRpbmdNZXRob2Q9cm91" + + "bmRfcm9iaW4sdG9rZW5SYXRlTGltaXQ9MTAwMC1TJwpgYGAKClVzZSB0aGUgc2FtZSBkZXBsb3kg" + + "c3RlcCBiZWxvdyBhZnRlciB0aGUgTExNIGZ1bmN0aW9uIGlzIGNyZWF0ZWQuCgpPcHRpb25hbCBt" + + "b2RlbCByb3V0aW5nIHVwZGF0ZSBhZnRlciBjcmVhdGlvbjoKCmBgYHNoCm52Y2YtY2xpIGZ1bmN0" + + "aW9uIHVwZGF0ZSBcCiAgLS1mdW5jdGlvbi1pZD08Zm5faWQ+IFwKICAtLXZlcnNpb24taWQ9PHZl" + + "cl9pZD4gXAogIC0tbGxtLW1vZGVsLXVwZGF0ZT0nbmFtZT08Y29uZmlybWVkLW1vZGVsLW5hbWU+" + + "LHJvdXRpbmdNZXRob2Q9cG93ZXJfb2ZfdHdvLHRva2VuUmF0ZUxpbWl0PTEwMDAtUycKYGBgCgpV" + + "c2UgdGhpcyBmb3IgbXV0YWJsZSBgcm91dGluZ01ldGhvZGAgYW5kIGB0b2tlblJhdGVMaW1pdGA7" + + "IGNyZWF0ZS10aW1lIGB1cmlzYCBzdGF5IGluIGBtb2RlbHNbXS5sbG1Db25maWdgLgpgdG9rZW5S" + + "YXRlTGltaXRgIHN1cHBvcnRzIHBvc2l0aXZlIGludGVnZXIgdG9rZW4gbGltaXRzIGZvciBgU2As" + + "IGBNYCwgYEhgLCBgRGAsIGFuZCBgV2AuIFVzZSBgMTAwMC1TYCBmb3IgYSBzaW5nbGUgaW5saW5l" + + "IENMSSBsaW1pdC4gVXNlIGlucHV0IEpTT04gZm9yIGNvbWJpbmVkIGxpbWl0cywgc3VjaCBhcyBg" + + "MTAwMC1TLDUwMDAtTSwxMDAwMDAtSCw1MDAwMDAtRCwxMDAwMDAwLVdgLCBiZWNhdXNlIGlubGlu" + + "ZSBtb2RlbCBzcGVjcyB1c2UgY29tbWFzIGFzIGZpZWxkIHNlcGFyYXRvcnMuCgojIyMgSGVsbSBj" + + "aGFydCBMTE0gZnVuY3Rpb24gdmFyaWFudAoKTExNIGZ1bmN0aW9uIHR5cGUgaXMgaW5kZXBlbmRl" + + "bnQgb2Ygd29ya2xvYWQgcGFja2FnaW5nLiBGb3IgYSBIZWxtLWNoYXJ0IGJhY2tlZCBMTE0gZnVu" + + "Y3Rpb24sIGtlZXAgdGhlIHNhbWUgYGZ1bmN0aW9uVHlwZWAgYW5kIGBtb2RlbHNbXS5sbG1Db25m" + + "aWdgIGZpZWxkcywgdGhlbiBzZXQgYGhlbG1DaGFydGAgYW5kIGBoZWxtQ2hhcnRTZXJ2aWNlTmFt" + + "ZWAuIFRoZSBzZXJ2aWNlIG5hbWUgbXVzdCBtYXRjaCBhIEt1YmVybmV0ZXMgU2VydmljZSByZW5k" + + "ZXJlZCBieSB0aGUgY2hhcnQsIGFuZCBgaW5mZXJlbmNlUG9ydGAgbXVzdCBiZSB0aGF0IFNlcnZp" + + "Y2UgcG9ydC4KCkJlZm9yZSBjcmVhdGluZyB0aGUgZnVuY3Rpb24sIGNvbmZpcm0gdGhlIGV4YWN0" + + "IGZ1bmN0aW9uIG5hbWUgYW5kIG1vZGVsIG5hbWUgd2l0aCB0aGUgdXNlci4gSWYgZWl0aGVyIHZh" + + "bHVlIGlzIG1pc3NpbmcsIHN0b3AgYW5kIGFzay4gRG8gbm90IGludmVudCBvciBzdWJtaXQgZXhh" + + "bXBsZSB2YWx1ZXMgZm9yIHRoZXNlIGZpZWxkcy4KCmBgYGpzb24KewogICJuYW1lIjogIjxjb25m" + + "aXJtZWQtZnVuY3Rpb24tbmFtZT4iLAogICJpbmZlcmVuY2VVcmwiOiAiLyIsCiAgImluZmVyZW5j" + + "ZVBvcnQiOiA4MDAwLAogICJmdW5jdGlvblR5cGUiOiAiTExNIiwKICAiaGVhbHRoIjogewogICAg" + + "InByb3RvY29sIjogIkhUVFAiLAogICAgInVyaSI6ICIvaGVhbHRoIiwKICAgICJwb3J0IjogODAw" + + "MCwKICAgICJ0aW1lb3V0IjogIlBUMzBTIiwKICAgICJleHBlY3RlZFN0YXR1c0NvZGUiOiAyMDAK" + + "ICB9LAogICJoZWxtQ2hhcnQiOiAiaHR0cHM6Ly9oZWxtLm5nYy5udmlkaWEuY29tL2V4YW1wbGUv" + + "dGVhbS9jaGFydHMvb3BlbmFpLWNvbXBhdGlibGUtMC4xLjAudGd6IiwKICAiaGVsbUNoYXJ0U2Vy" + + "dmljZU5hbWUiOiAib3BlbmFpLWNvbXBhdGlibGUiLAogICJtb2RlbHMiOiBbCiAgICB7CiAgICAg" + + "ICJuYW1lIjogIjxjb25maXJtZWQtbW9kZWwtbmFtZT4iLAogICAgICAibGxtQ29uZmlnIjogewog" + + "ICAgICAgICJ1cmlzIjogWyIvdjEvY2hhdC9jb21wbGV0aW9ucyIsICIvdjEvcmVzcG9uc2VzIiwg" + + "Ii92MS9lbWJlZGRpbmdzIl0sCiAgICAgICAgInJvdXRpbmdNZXRob2QiOiAicm91bmRfcm9iaW4i" + + "LAogICAgICAgICJ0b2tlblJhdGVMaW1pdCI6ICIxMDAwLVMiCiAgICAgIH0KICAgIH0KICBdCn0K" + + "YGBgCgpFcXVpdmFsZW50IENMSSBmbGFnIGZvcm06CgpgYGBzaApudmNmLWNsaSBmdW5jdGlvbiBj" + + "cmVhdGUgXAogIC0tbmFtZT0iPGNvbmZpcm1lZC1mdW5jdGlvbi1uYW1lPiIgXAogIC0taW5mZXJl" + + "bmNlLXVybD0vIFwKICAtLWluZmVyZW5jZS1wb3J0PTgwMDAgXAogIC0taGVhbHRoLXVyaT0vaGVh" + + "bHRoIFwKICAtLWhlYWx0aC1wb3J0PTgwMDAgXAogIC0taGVhbHRoLXRpbWVvdXQ9UFQzMFMgXAog" + + "IC0taGVhbHRoLXByb3RvY29sPUhUVFAgXAogIC0taGVhbHRoLWV4cGVjdGVkLXN0YXR1cz0yMDAg" + + "XAogIC0tZnVuY3Rpb24tdHlwZT1MTE0gXAogIC0taGVsbS1jaGFydD1odHRwczovL2hlbG0ubmdj" + + "Lm52aWRpYS5jb20vZXhhbXBsZS90ZWFtL2NoYXJ0cy9vcGVuYWktY29tcGF0aWJsZS0wLjEuMC50" + + "Z3ogXAogIC0taGVsbS1jaGFydC1zZXJ2aWNlPW9wZW5haS1jb21wYXRpYmxlIFwKICAtLWxsbS1t" + + "b2RlbD0nbmFtZT08Y29uZmlybWVkLW1vZGVsLW5hbWU+LHVyaXM9L3YxL2NoYXQvY29tcGxldGlv" + + "bnN8L3YxL3Jlc3BvbnNlc3wvdjEvZW1iZWRkaW5ncyxyb3V0aW5nTWV0aG9kPXJvdW5kX3JvYmlu" + + "LHRva2VuUmF0ZUxpbWl0PTEwMDAtUycKYGBgCgpEZXBsb3kgaXMgdW5jaGFuZ2VkLiBQdXQgY2hh" + + "cnQtc3BlY2lmaWMgdmFsdWVzIHVuZGVyIGBkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnNbXS5jb25m" + + "aWd1cmF0aW9uYCBvbmx5IHdoZW4gdGhlIGNoYXJ0IG5lZWRzIHZhbHVlIG92ZXJyaWRlczoKCmBg" + + "YGpzb24KewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAiPHZlcl9p" + + "ZD4iLAogICJkZXBsb3ltZW50U3BlY2lmaWNhdGlvbnMiOiBbewogICAgImdwdSI6ICJIMTAwIiwK" + + "ICAgICJpbnN0YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAwXzF4IiwKICAgICJtaW5JbnN0YW5jZXMi" + + "OiAxLAogICAgIm1heEluc3RhbmNlcyI6IDEsCiAgICAibWF4UmVxdWVzdENvbmN1cnJlbmN5Ijog" + + "MTAsCiAgICAiY29uZmlndXJhdGlvbiI6IHsKICAgICAgInNlcnZpbmciOiB7CiAgICAgICAgInRl" + + "bnNvclBhcmFsbGVsU2l6ZSI6IDEKICAgICAgfQogICAgfQogIH1dCn0KYGBgCgpMTE0gR2F0ZXdh" + + "eSByb3V0ZXMgcmVxdWVzdHMgYnkgdGhlIE9wZW5BSSBgbW9kZWxgIHZhbHVlLiBVc2UgYDxmdW5j" + + "dGlvbi1pZD4vPG1vZGVsLW5hbWU+YDogdGhlIGZ1bmN0aW9uIElEIHNlbGVjdHMgdGhlIE5WQ0Yg" + + "ZnVuY3Rpb24sIGFuZCB0aGUgbW9kZWwgbmFtZSBpcyBmb3J3YXJkZWQgdG8gdGhlIHVwc3RyZWFt" + + "IGNvbnRhaW5lciB0aHJvdWdoIGBzdGFyZ2F0ZS1jbGllbnRgLgoKU3VwcG9ydGVkIExMTSBwYXRo" + + "czoKCnwgUGF0aCB8IE5vdGVzIHwKfCAtLS0gfCAtLS0gfAp8IGAvdjEvY2hhdC9jb21wbGV0aW9u" + + "c2AgfCBTdXBwb3J0cyBzdHJlYW1pbmcgYW5kIHNlc3Npb24gc3RpY2tpbmVzcy4gfAp8IGAvdjEv" + + "cmVzcG9uc2VzYCB8IE5hdGl2ZSBSZXNwb25zZXMgcHJveHkgcGF0aDsgcmVsYXlzIFNTRSBmb3Ig" + + "c3RyZWFtaW5nIGNsaWVudHMgYW5kIHJldHVybnMgdGVybWluYWwgSlNPTiBmb3Igbm9uLXN0cmVh" + + "bWluZyBjbGllbnRzLiBTdXBwb3J0cyBzZXNzaW9uIHN0aWNraW5lc3MuIHwKfCBgL3YxL2VtYmVk" + + "ZGluZ3NgIHwgQWNjZXB0cyBzdHJpbmcgb3Igc3RyaW5nLWFycmF5IGBpbnB1dGA7IGlucHV0IG11" + + "c3QgYmUgbm9uLWVtcHR5IGFuZCBtYXkgY29udGFpbiBhdCBtb3N0IDIwNDggZW50cmllcy4gTm8g" + + "c2Vzc2lvbiBzdGlja2luZXNzLiB8CgojIyAyLiBGdW5jdGlvbiBERVBMT1kKCmBgYGpzb24Kewog" + + "ICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAiPHZlcl9pZD4iLAogICJk" + + "ZXBsb3ltZW50U3BlY2lmaWNhdGlvbnMiOiBbewogICAgImdwdSI6ICJIMTAwIiwKICAgICJpbnN0" + + "YW5jZVR5cGUiOiAiTkNQLkdQVS5IMTAwXzF4IiwKICAgICJtaW5JbnN0YW5jZXMiOiAxLAogICAg" + + "Im1heEluc3RhbmNlcyI6IDEsCiAgICAibWF4UmVxdWVzdENvbmN1cnJlbmN5IjogMTAKICB9XQp9" + + "CmBgYAoKTm90ZTogYGdwdWAgaXMgdGhlIEdQVSAqKmZhbWlseSoqIChlLmcuIGBIMTAwYCksIGBp" + + "bnN0YW5jZVR5cGVgIGlzIHRoZSBTS1UgKGUuZy4gYE5DUC5HUFUuSDEwMF8xeGApLiBNaXNtYXRj" + + "aCByZXR1cm5zIElDTVMgNDAwICJJbnZhbGlkIEdQVSIuCgpgYGBzaApudmNmLWNsaSBmdW5jdGlv" + + "biBkZXBsb3kgY3JlYXRlIC0taW5wdXQtZmlsZT1kZXBsb3ktZm4uanNvbgpgYGAKClRoaXMgY29t" + + "bWFuZCAqKmJsb2NrcyoqIHVudGlsIHRoZSBkZXBsb3ltZW50IHJlYWNoZXMgQUNUSVZFIChkZWZh" + + "dWx0IDkwMHMgdGltZW91dCkuIFdoZW4gaXQgcmV0dXJucyByYz0wLCBhIGZ1bmN0aW9uIHBvZCBp" + + "cyBydW5uaW5nIGluIHRoZSBgbnZjZi1iYWNrZW5kYCBuYW1lc3BhY2Ugb24gdGhlIGNvbXB1dGUt" + + "cGxhbmUgY2x1c3Rlci4KCiMjIDMuIE1pbnQgYW4gQVBJIGtleSB3aXRoIGBpbnZva2VfZnVuY3Rp" + + "b25gIHNjb3BlCgpgbnZjZi1jbGkgaW5pdGAncyBhZG1pbiB0b2tlbiBkb2VzIE5PVCBjYXJyeSB0" + + "aGUgYGludm9rZV9mdW5jdGlvbmAgc2NvcGUg4oCUIGludm9rZSB3b3VsZCA0MDMgd2l0aCAibWlz" + + "c2luZyByZXF1ZXN0ZWQgYXV0aG9yaXRpZXMiLiBNaW50IGFuIEFQSSBrZXk6CgpgYGBzaApudmNm" + + "LWNsaSBhcGkta2V5IGdlbmVyYXRlIC0tZGVzY3JpcHRpb249Ijxjb25maXJtZWQtZnVuY3Rpb24t" + + "bmFtZT4gaW52b2tlIiAtLWV4cGlyZXMtaW49MWgKIyDihpIgQVBJIEtleTogbnZhcGktbnZjZi1z" + + "dGctLi4uCmBgYAoKVGhlIGtleSBpcyBhdXRvbWF0aWNhbGx5IHNhdmVkIHRvIHRoZSBDTEkgc3Rh" + + "dGUgZmlsZSBhbmQgdXNlZCBieSB0aGUgbmV4dCBgZnVuY3Rpb24gaW52b2tlYCBjYWxsLiAqKkRv" + + "bid0IGVjaG8gdGhlIGtleSBpbnRvIGNoYXQgLyBsb2dzKiouCgojIyA0LiBGdW5jdGlvbiBJTlZP" + + "S0UKCmBgYGpzb24KewogICJmdW5jdGlvbklkIjogIjxmbl9pZD4iLAogICJ2ZXJzaW9uSWQiOiAi" + + "PHZlcl9pZD4iLAogICJyZXF1ZXN0Qm9keSI6IHsibWVzc2FnZSI6ICJoZWxsbyJ9Cn0KYGBgCgpg" + + "YGBzaApudmNmLWNsaSBmdW5jdGlvbiBpbnZva2UgLS1pbnB1dC1maWxlPWludm9rZS1mbi5qc29u" + + "CiMg4oaSIEZ1bmN0aW9uIGludm9jYXRpb24gY29tcGxldGVkIQojIOKGkiBTdGF0dXM6IGZ1bGZp" + + "bGxlZAojIOKGkiBSZXF1ZXN0IElEOiAuLi4KYGBgCgpGb3IgYW4gTExNIGZ1bmN0aW9uLCBpbnZv" + + "a2UgdGhlIE9wZW5BSS1jb21wYXRpYmxlIHJvdXRlIGFmdGVyIGRlcGxveW1lbnQ6CgpgYGBzaApj" + + "dXJsIC1zUyAtWCBQT1NUICJodHRwczovL2xsbS5pbnZvY2F0aW9uLjxkb21haW4+L3YxL2NoYXQv" + + "Y29tcGxldGlvbnMiIFwKICAtSCAiQXV0aG9yaXphdGlvbjogQmVhcmVyICR7TlZDRl9BUElfS0VZ" + + "fSIgXAogIC1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIFwKICAtZCAnewogICAg" + + "Im1vZGVsIjogIjxmbl9pZD4vPGNvbmZpcm1lZC1tb2RlbC1uYW1lPiIsCiAgICAic3RyZWFtIjog" + + "dHJ1ZSwKICAgICJtZXNzYWdlcyI6IFsKICAgICAgewogICAgICAgICJyb2xlIjogInVzZXIiLAog" + + "ICAgICAgICJjb250ZW50IjogIkhlbGxvIgogICAgICB9CiAgICBdCiAgfScKYGBgCgpUaGUgT3Bl" + + "bkFJIGBtb2RlbGAgdmFsdWUgbXVzdCBiZSBgPGZ1bmN0aW9uLWlkPi88bW9kZWwtbmFtZT5gIHNv" + + "IHRoZSBnYXRld2F5IGNhbiBzZWxlY3QgdGhlIGZ1bmN0aW9uIGFuZCBtb2RlbC4KClJlc3BvbnNl" + + "cyBBUEkgZXhhbXBsZToKCmBgYHNoCmN1cmwgLXNTIC1YIFBPU1QgImh0dHBzOi8vbGxtLmludm9j" + + "YXRpb24uPGRvbWFpbj4vdjEvcmVzcG9uc2VzIiBcCiAgLUggIkF1dGhvcml6YXRpb246IEJlYXJl" + + "ciAke05WQ0ZfQVBJX0tFWX0iIFwKICAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29u" + + "IiBcCiAgLWQgJ3sKICAgICJtb2RlbCI6ICI8Zm5faWQ+Lzxjb25maXJtZWQtbW9kZWwtbmFtZT4i" + + "LAogICAgImlucHV0IjogIldyaXRlIGEgb25lIHNlbnRlbmNlIHN1bW1hcnkgb2YgTlZDRi4iCiAg" + + "fScKYGBgCgpFbWJlZGRpbmdzIGV4YW1wbGU6CgpgYGBzaApjdXJsIC1zUyAtWCBQT1NUICJodHRw" + + "czovL2xsbS5pbnZvY2F0aW9uLjxkb21haW4+L3YxL2VtYmVkZGluZ3MiIFwKICAtSCAiQXV0aG9y" + + "aXphdGlvbjogQmVhcmVyICR7TlZDRl9BUElfS0VZfSIgXAogIC1IICJDb250ZW50LVR5cGU6IGFw" + + "cGxpY2F0aW9uL2pzb24iIFwKICAtZCAnewogICAgIm1vZGVsIjogIjxmbl9pZD4vPGNvbmZpcm1l" + + "ZC1tb2RlbC1uYW1lPiIsCiAgICAiaW5wdXQiOiAiTlZDRiBlbWJlZGRpbmdzIGNoZWNrIgogIH0n" + + "CmBgYAoKSWYgc3RhdHVzIGlzIGBlcnJvcmVkYCwgcXVlcnkgSUNNUyBmb3IgdGhlIGRlcGxveW1l" + + "bnQncyBwb2QgbG9ncyAoa3ViZWN0bCBvbiB0aGUgY29tcHV0ZS1wbGFuZSBjbHVzdGVyKSBhbmQg" + + "c3VyZmFjZSB0byB0aGUgdXNlci4KCiMjIDUuIENsZWFudXAKCldoZW4gdGhlIHVzZXIgaXMgZG9u" + + "ZSB3aXRoIHRoZSBzbW9rZSB0ZXN0OgoKYGBgc2gKbnZjZi1jbGkgZnVuY3Rpb24gZGVsZXRlIC0t" + + "ZnVuY3Rpb24taWQ9PGZuX2lkPiAtLXZlcnNpb24taWQ9PHZlcl9pZD4KYGBgCgoqKkNvbmZpcm0g" + + "d2l0aCB0aGUgdXNlciBiZWZvcmUgZGVsZXRpbmcuKiogVGhpcyByZW1vdmVzIGJvdGggdGhlIGRl" + + "cGxveW1lbnQgYW5kIHRoZSBmdW5jdGlvbiByZWNvcmQuCgojIyBOb3RlcwoKLSBEZXBsb3kgdGlt" + + "ZXMgY2FuIHZhcnkgd2lkZWx5IGRlcGVuZGluZyBvbiBOQVRTIHN0cmVhbS1pbml0IGxhdGVuY3kg" + + "b24gY29sZC1jbHVzdGVyIHJ1bnMgKDEtNyBtaW51dGVzIG9ic2VydmVkIGluIGRldi1WTSB0ZXN0" + + "cykuIEJlIHBhdGllbnQ7IGRvbid0IGtpbGwgdGhlIGBmdW5jdGlvbiBkZXBsb3kgY3JlYXRlYCBj" + + "b21tYW5kIGVhcmx5LgotIEZvciBkaWZmZXJlbnQgR1BVIGZhbWlsaWVzLCBjaGFuZ2UgYm90aCBg" + + "Z3B1YCBhbmQgYGluc3RhbmNlVHlwZWAgdG9nZXRoZXIuIENvbW1vbiBTS1VzOiBgTkNQLkdQVS5I" + + "MTAwXzF4YCwgYE5DUC5HUFUuSDEwMF8yeGAsIGBOQ1AuR1BVLkExMDBfMXhgLgotIFRoZSBmdW5j" + + "dGlvbidzIGNvbnRhaW5lciBpbWFnZSBtdXN0IGJlIHB1bGxhYmxlIGZyb20gdGhlIGNvbXB1dGUt" + + "cGxhbmUgY2x1c3RlcidzIGltYWdlLWNyZWRlbnRpYWwtaGVscGVyIGNvbmZpZyAoY2hlY2sgYGt1" + + "YmVjdGwgZGVzY3JpYmUgcG9kIC1uIG52Y2YtYmFja2VuZGAgaWYgcG9kcyBsYW5kIGluIGBJbWFn" + + "ZVB1bGxCYWNrT2ZmYCkuClBLBwjSQ9wEGCUAABglAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAA" + + "AD0ACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2RpYWdub3NlLWZhaWxlZC1p" + + "bnN0YWxsLm1kVVQFAAEAps4SIyBEaWFnbm9zZSBhIGZhaWxlZCBzZWxmLWhvc3RlZCBOVkNGIGlu" + + "c3RhbGwKClVzZXIgc2F5cyAibXkgaW5zdGFsbCBmYWlsZWQiIG9yICJYIGlzbid0IHdvcmtpbmci" + + "LiBEb24ndCBndWVzcyDigJQgcXVlcnkgdGhlIGNsdXN0ZXIuCgojIyAxLiBHZXQgdGhlIHZlcmRp" + + "Y3QKCmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9zdGVkIHN0YXR1cyAtLWpzb24gfCBqcSAtYyAuCmBg" + + "YAoKVGhlIGZpcnN0IGV2ZW50IGlzIHRoZSBzbmFwc2hvdC4gUGFyc2UgYC52ZXJkaWN0YDoKCi0g" + + "KipgaGVhbHRoeWAqKiDigJQgbm90aGluZydzIHdyb25nLiBBc2sgdGhlIHVzZXIgd2hhdCB0aGV5" + + "J3JlIGFjdHVhbGx5IHNlZWluZzsgdGhlaXIgcHJvYmxlbSBtYXkgYmUgYXQgYSBkaWZmZXJlbnQg" + + "bGF5ZXIgKGZ1bmN0aW9uIGRlcGxveSwgbmV0d29yaywgZXRjLikuCi0gKipgZGVncmFkZWRgKiog" + + "4oCUIGF0IGxlYXN0IG9uZSBjb21wb25lbnQgbm90IHJlYWR5LiBUaGUgQ29tcG9uZW50cyBsaXN0" + + "IHdpbGwgaWRlbnRpZnkgd2hpY2guIE1vc3QgY29tbW9uOiBgY2Fzc2FuZHJhYCBQb2RJbml0aWFs" + + "aXppbmcsIGBvcGVuYmFvYCBub3QgdW5zZWFsZWQsIGBzaXNgIEltYWdlUHVsbEJhY2tPZmYuCi0g" + + "KipgZmFpbGVkYCoqIOKAlCBOVkNGQmFja2VuZCBgSGVhbHRoPUZhaWxlZGAuIFJlYWQgdGhlIGNs" + + "dXN0ZXIncyBOVkNGQmFja2VuZCBzdGF0dXMgY29uZGl0aW9uIG1lc3NhZ2UuCi0gKipgdW5rbm93" + + "bmAqKiDigJQgSUNNUyB1bnJlYWNoYWJsZS4gVGhlIGNvbnRyb2wgcGxhbmUgaXRzZWxmIG1heSBi" + + "ZSBkb3duOyBjaGVjayBga3ViZWN0bCBnZXQgcG9kcyAtbiBzaXNgIGRpcmVjdGx5LgoKIyMgMi4g" + + "RHJpbGwgaW50byB0aGUgZmFpbGluZyBjb21wb25lbnQKCkZvciBlYWNoIG5vbi1yZWFkeSBjb21w" + + "b25lbnQsIHRoZSBzbmFwc2hvdCBpbmNsdWRlcyBhIGBtZXNzYWdlYCAoZS5nLiBgY2Fzc2FuZHJh" + + "LTAgUG9kSW5pdGlhbGl6aW5nIDZtMjNzYCkuIEFzayB0aGUgdXNlciB0byBydW46CgpgYGBzaApr" + + "dWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bnM+IDxwb2Q+Cmt1YmVjdGwgbG9ncyAtbiA8bnM+IDxw" + + "b2Q+IC0tYWxsLWNvbnRhaW5lcnMgLS10YWlsPTEwMApgYGAKClN1cmZhY2UgdGhlIGV2ZW50cyAr" + + "IGxhc3QgbG9nIGxpbmVzLiBEb24ndCBwcm9wb3NlIGBrdWJlY3RsIGRlbGV0ZSBwb2RgIHVubGVz" + + "cyB0aGUgdXNlciBjb25maXJtcyDigJQgQ2Fzc2FuZHJhIHJlc3RhcnQgbG9zZXMgYW55IGluLXBy" + + "b2dyZXNzIG1pZ3JhdGlvbi4KCiMjIDMuIENvbW1vbiBwYXR0ZXJucwoKfCBTeW1wdG9tIHwgTGlr" + + "ZWx5IGNhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18CnwgYGNhc3NhbmRyYS0wIFBv" + + "ZEluaXRpYWxpemluZ2AgZm9yID41IG1pbiB8IFN0b3JhZ2VDbGFzcyBtaXNzaW5nIG9yIFBWIHN0" + + "dWNrIGBQZW5kaW5nYCB8IGBrdWJlY3RsIGdldCBwdixwdmMgLUFgIOKAlCBjb25maXJtIGEgZGVm" + + "YXVsdCBTdG9yYWdlQ2xhc3MgZXhpc3RzLiBMb2NhbCBkZXY6IGBrdWJlY3RsIHBhdGNoIHN0b3Jh" + + "Z2VjbGFzcyBsb2NhbC1wYXRoIC1wICd7Im1ldGFkYXRhIjp7ImFubm90YXRpb25zIjp7InN0b3Jh" + + "Z2VjbGFzcy5rdWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xhc3MiOiJ0cnVlIn19fSdgIHwKfCBg" + + "aGVsbSBpbnN0YWxsIC4uLjogdGltZWQgb3V0IHdhaXRpbmcgZm9yIGNhc3NhbmRyYSB0byBiZWNv" + + "bWUgYXZhaWxhYmxlYCB8IFNhbWUgYXMgYWJvdmUgfCBTYW1lIHwKfCBgR2F0ZXdheSBBUEkgQ1JE" + + "cyBub3QgaW5zdGFsbGVkYCAocHJlZmxpZ2h0KSB8IE11bHRpLWNsdXN0ZXIgYG52Y2YtZ2F0ZXdh" + + "eS1yb3V0ZXNgIGNoYXJ0IG5lZWRzIGVudm95LWdhdGV3YXkgcHJlcmVxdWlzaXRlIHwgSW5zdGFs" + + "bCBlbnZveS1nYXRld2F5OiBgaGVsbSBpbnN0YWxsIGVnIG9jaTovL2RvY2tlci5pby9lbnZveXBy" + + "b3h5L2dhdGV3YXktaGVsbSAtLW5hbWVzcGFjZT1lbnZveS1nYXRld2F5LXN5c3RlbSAtLWNyZWF0" + + "ZS1uYW1lc3BhY2VgIHwKfCBgTm8gY2x1c3RlciBmb3VuZCB3aXRoIHZhbGlkIEpXS1MgZm9yIGNs" + + "dXN0ZXIgSUQ6IDxpZD5gIChOVkNBIGFnZW50KSB8IENvbXB1dGUgcGxhbmUncyBQU0FUIHdhcyBp" + + "c3N1ZWQgYnkgYSBLOHMgc2VydmVyIHdob3NlIEpXS1MgZG9lc24ndCBtYXRjaCB3aGF0J3Mgc3Rv" + + "cmVkIGluIElDTVMgfCBSZS1yZWdpc3RlcjogYG52Y2YtY2xpIGNsdXN0ZXIgcm90YXRlIC0tY2x1" + + "c3Rlci1pZD08aWQ+YCBmcm9tIGEgY29udGV4dCB0aGF0IGNhbiByZWFjaCB0aGUgY29tcHV0ZSBw" + + "bGFuZSdzIEs4cyBBUEkgfAp8IGBTaWduZWQgSldUIHJlamVjdGVkOiBBbm90aGVyIGFsZ29yaXRo" + + "bSBleHBlY3RlZCwgb3Igbm8gbWF0Y2hpbmcga2V5KHMpIGZvdW5kYCAoaW5pdCAvIGNsdXN0ZXIg" + + "cmVnaXN0ZXIpIHwgU3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQgY29udHJvbCBw" + + "bGFuZSB8IGBybSB+Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5pdGAgYWdhaW4g" + + "fAp8IGBudmNhLW9wZXJhdG9yYCBJbWFnZVB1bGxCYWNrT2ZmIGZvciBgbnZjYS1vcGVyYXRvcjpw" + + "c2F0YCB8IEltYWdlIG5vdCBpbiBjbHVzdGVyIChtdWx0aS1jbHVzdGVyIHRvcG9sb2d5IGJ1aWxk" + + "cyBpdCBsb2NhbGx5KSB8IGBrM2QgaW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Etb3BlcmF0" + + "b3I6cHNhdCAtYyA8Y2x1c3Rlcj5gIChvciB3aGF0ZXZlciB5b3VyIGltYWdlIHB1c2ggcGF0aCBp" + + "cykgfAp8IGByZXF1aXJlZEVudiAiTkNBX0lEIiBpcyBub3Qgc2V0YCAoaGVsbWZpbGUgZXJyb3Ip" + + "IHwgT2xkZXIgbnZjZi1jbGk7IHRoZSBlbnYgcHJvcGFnYXRpb24gZml4IGxhbmRlZCBpbiBNKzUg" + + "Zm9sbG93LXVwcyB8IFVwZ3JhZGUgYG52Y2YtY2xpYCB0byBhIHZlcnNpb24gYWZ0ZXIgYDZhYTU3" + + "MDRgIHwKCiMjIDQuIFdoZW4gdGhlIHVzZXIgd2FudHMgdG8gc3RhcnQgb3ZlcgoKSWYgdGhleSBj" + + "b25maXJtIGEgdGVhcmRvd246CgotIFNpbmdsZS1jbHVzdGVyOiBgY2QgbnZjZi1zZWxmLW1hbmFn" + + "ZWQtc3RhY2sgJiYgbWFrZSBkZXN0cm95YCAob3IgYGhlbG0gdW5pbnN0YWxsYCBwZXIgcmVsZWFz" + + "ZSBpbiByZXZlcnNlIG9yZGVyKS4KLSBNdWx0aS1jbHVzdGVyOiBgaGVsbSB1bmluc3RhbGwgbnZj" + + "YS1vcGVyYXRvciAtbiBudmNhLW9wZXJhdG9yYCBvbiB0aGUgY29tcHV0ZSBwbGFuZSBGSVJTVDsg" + + "dGhlbiBjb250cm9sIHBsYW5lOyB0aGVuIGBudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNsdXN0" + + "ZXItaWQ9PGlkPmAgdG8gcmVtb3ZlIHRoZSBJQ01TIHJvdy4KCkFsd2F5cyBjb25maXJtIGJlZm9y" + + "ZSBhbnkgdGVhcmRvd24g4oCUIENhc3NhbmRyYSBTdGF0ZWZ1bFNldCBQVkMgZGVsZXRpb24gaXMg" + + "ZGVzdHJ1Y3RpdmUgYW5kIGxvc2VzIGNsdXN0ZXJfb2lkYyByb3dzLgoKIyMgV2hhdCBub3QgdG8g" + + "ZG8KCi0gKipEb24ndCBwcm9wb3NlIGAtLWRlYnVnYCBhcyBhIGZpeC4qKiBJdCdzIGRpYWdub3N0" + + "aWMgb25seS4KLSAqKkRvbid0IHByb3Bvc2UgYGhlbG0gdW5pbnN0YWxsYCoqIHVubGVzcyB0aGUg" + + "dXNlciBleHBsaWNpdGx5IGFza2VkIHRvIHN0YXJ0IG92ZXIuCi0gKipEb24ndCBwcm9wb3NlIGBr" + + "dWJlY3RsIGRlbGV0ZSBwdmNgKiogZXZlciB3aXRob3V0IGNvbmZpcm1hdGlvbiDigJQgaXQgZGVs" + + "ZXRlcyB0aGUgdW5kZXJseWluZyBQVi4KLSAqKkRvbid0IHJlLXJ1biBgdXBgIHdpdGggZGlmZmVy" + + "ZW50IGlucHV0cyoqIHRvICJzZWUgd2hhdCBoYXBwZW5zIi4gRGlhZ25vc2Ugd2l0aCBgc3RhdHVz" + + "YCAvIGBrdWJlY3RsIGRlc2NyaWJlYCBmaXJzdC4KUEsHCHKSLCa+DgAAvg4AAFBLAwQUAAgAAAAA" + + "ACEAAAAAAAAAAAAAAAAAOgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvaW5z" + + "dGFsbC1mcm9tLXNjcmF0Y2gubWRVVAUAAQCmzhIjIEluc3RhbGwgc2VsZi1ob3N0ZWQgTlZDRiBm" + + "cm9tIHNjcmF0Y2gKClVzZXIgd2FudHMgdG8gYnJpbmcgdXAgc2VsZi1ob3N0ZWQgTlZDRiBvbiBh" + + "IGZyZXNoIEt1YmVybmV0ZXMgY2x1c3RlciAob3IgazNkIGZvciBsb2NhbCBkZXYpLiBUaGlzIGlz" + + "IHRoZSBtb3N0IGNvbW1vbiBlbnRyeXBvaW50LgoKIyMgU3RlcHMKCjEuIENvbmZpcm0gdGhlIHRv" + + "cG9sb2d5LiBBc2sgdGhlIHVzZXI6CiAgIC0gIlNpbmdsZS1jbHVzdGVyIChjb250cm9sIHBsYW5l" + + "IGFuZCBjb21wdXRlIHBsYW5lIG9uIG9uZSBjbHVzdGVyLCBzaW1wbGVyKSBvciBzcGxpdCAoY29u" + + "dHJvbCBwbGFuZSBvbiBjbHVzdGVyIEEsIGNvbXB1dGUgcGxhbmUgb24gY2x1c3RlciBCLCBwcm9k" + + "dWN0aW9uLXNoYXBlZCk/IgogICAtICJXaGF0J3MgdGhlIGNsdXN0ZXIgbmFtZSAodGhlIGAtLWNs" + + "dXN0ZXItbmFtZWAgZmxhZywgYmVjb21lcyB0aGUgSUNNUyByb3cgaWRlbnRpZmllcik/IEV4YW1w" + + "bGVzOiBgbmNwLWxvY2FsYCBmb3IgbG9jYWwgZGV2LCBgcHJvZC11cy1lYXN0LTFgIGZvciBwcm9k" + + "dWN0aW9uLiIKICAgLSBGb3Igc3BsaXQ6ICJDb250cm9sLXBsYW5lIGt1YmVjb25maWcgY29udGV4" + + "dCBuYW1lPyBDb21wdXRlLXBsYW5lIGNvbnRleHQ/IFB1YmxpYyBJQ01TIFVSTD8iCgoyLiBQcmVw" + + "YXJlIHJlbW90ZSBHYXRld2F5IGFuZCBDTEkgY29uZmlnIGlmIHRoaXMgaXMgbm90IGxvY2FsIGsz" + + "ZC4gT25lLWNsaWNrCiAgIGFwcGxpZXMgdGhlIGNvbnRyb2wgcGxhbmUsIHRoZW4gaW1tZWRpYXRl" + + "bHkgY2FsbHMgQVBJLCBBUEkgS2V5cywgaW52b2NhdGlvbiwKICAgYW5kIGdSUEMgZW5kcG9pbnRz" + + "LiBGb3IgcmVtb3RlIGNsdXN0ZXJzLCB0aGUgR2F0ZXdheSBtdXN0IGJlIHByb2dyYW1tZWQgYW5k" + + "CiAgIHRoZSBDTEkgY29uZmlnIG11c3QgcG9pbnQgYXQgdGhlIEdhdGV3YXkgbG9hZCBiYWxhbmNl" + + "ciBiZWZvcmUgYHVwYCBydW5zLgoKICAgSWYgR2F0ZXdheSBBUEkgaW5ncmVzcyBpcyBub3QgYWxy" + + "ZWFkeSBwcmVzZW50LCBjcmVhdGUgaXQgZmlyc3QuIFRoZXNlIGFyZSB0aGUKICAgc2hhcmVkIEdh" + + "dGV3YXkgc2V0dXAgc3RlcHMgdXNlZCBieSBvbmUtY2xpY2ssIEhlbG1maWxlLCBhbmQgc3RhbmRh" + + "bG9uZSBjaGFydAogICBpbnN0YWxsIHBhdGhzOgoKICAgYGBgc2gKICAga3ViZWN0bCBhcHBseSAt" + + "ZiBodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1zaWdzL2dhdGV3YXktYXBpL3JlbGVhc2Vz" + + "L2Rvd25sb2FkL3YxLjIuMC9leHBlcmltZW50YWwtaW5zdGFsbC55YW1sCgogICBmb3IgbmFtZXNw" + + "YWNlIGluIGVudm95LWdhdGV3YXktc3lzdGVtIGVudm95LWdhdGV3YXkgYXBpLWtleXMgZXNzIHNp" + + "cyBudmNmOyBkbwogICAgIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSAiJG5hbWVzcGFjZSIgLS1k" + + "cnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCiAgIGRvbmUKCiAgIGZv" + + "ciBuYW1lc3BhY2UgaW4gZW52b3ktZ2F0ZXdheSBhcGkta2V5cyBlc3Mgc2lzIG52Y2Y7IGRvCiAg" + + "ICAga3ViZWN0bCBsYWJlbCBuYW1lc3BhY2UgIiRuYW1lc3BhY2UiIG52Y2YvcGxhdGZvcm09dHJ1" + + "ZSAtLW92ZXJ3cml0ZQogICBkb25lCgogICBoZWxtIHVwZ3JhZGUgLS1pbnN0YWxsIGVnIG9jaTov" + + "L2RvY2tlci5pby9lbnZveXByb3h5L2dhdGV3YXktaGVsbSBcCiAgICAgLS12ZXJzaW9uIHYxLjEu" + + "MyBcCiAgICAgLW4gZW52b3ktZ2F0ZXdheS1zeXN0ZW0KICAgYGBgCgogICBCZWZvcmUgYXBwbHlp" + + "bmcgdGhlIGBFbnZveVByb3h5YCwgZGV0ZXJtaW5lIHdoaWNoIFNlcnZpY2UgY29udHJvbGxlciBv" + + "d25zCiAgIGxvYWQgYmFsYW5jZXJzIG9uIEVLUy4gRG8gbm90IGFwcGx5IHRoZSBtYW5pZmVzdCB1" + + "bnRpbCB5b3UgaGF2ZSBzZWxlY3RlZCB0aGUKICAgbWF0Y2hpbmcgYGVudm95U2VydmljZWAgY29u" + + "ZmlndXJhdGlvbi4gVXNlIHRoZSBFS1MgQVBJIGFuZCB0aGUgaW4tY2x1c3RlcgogICBjb250cm9s" + + "bGVyIERlcGxveW1lbnQgaW5zdGVhZCBvZiBndWVzc2luZyBmcm9tIHRoZSBjbHVzdGVyIGFnZSBv" + + "ciBleGlzdGluZwogICBTZXJ2aWNlczoKCiAgIGBgYHNoCiAgIGV4cG9ydCBFS1NfQ0xVU1RFUl9O" + + "QU1FPSI8Y2x1c3Rlci1uYW1lPiIKCiAgIGF3cyBla3MgZGVzY3JpYmUtY2x1c3RlciAtLW5hbWUg" + + "IiRFS1NfQ0xVU1RFUl9OQU1FIiBcCiAgICAgLS1xdWVyeSAnY2x1c3Rlci5rdWJlcm5ldGVzTmV0" + + "d29ya0NvbmZpZy5lbGFzdGljTG9hZEJhbGFuY2luZy5lbmFibGVkJyBcCiAgICAgLS1vdXRwdXQg" + + "dGV4dAogICBrdWJlY3RsIC1uIGt1YmUtc3lzdGVtIGdldCBkZXBsb3ltZW50IGF3cy1sb2FkLWJh" + + "bGFuY2VyLWNvbnRyb2xsZXIKICAgYGBgCgogICBBbiBFS1MgQVBJIHJlc3VsdCBvZiBgVHJ1ZWAg" + + "c2VsZWN0cwogICBbRUtTIEF1dG8gTW9kZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Vr" + + "cy9sYXRlc3QvdXNlcmd1aWRlL2F1dG8tY29uZmlndXJlLW5sYi5odG1sKS4KICAgT3RoZXJ3aXNl" + + "LCBhIHN1Y2Nlc3NmdWwgRGVwbG95bWVudCBsb29rdXAgc2VsZWN0cyB0aGUgQVdTIExvYWQgQmFs" + + "YW5jZXIKICAgQ29udHJvbGxlci4gSWYgbmVpdGhlciBpcyBwcmVzZW50LCBjb25maXJtIHRoYXQg" + + "dGhlIGNsdXN0ZXIgaW50ZW50aW9uYWxseQogICB1c2VzIHRoZSBsZWdhY3kgQVdTIGNsb3VkIHBy" + + "b3ZpZGVyIFNlcnZpY2UgY29udHJvbGxlciwgb3IgaW5zdGFsbCB0aGUgQVdTCiAgIExvYWQgQmFs" + + "YW5jZXIgQ29udHJvbGxlciwgYmVmb3JlIGFwcGx5aW5nIHRoZSBleGFtcGxlLgoKICAgVGhlIGFw" + + "cGxpZWQgbWFuaWZlc3QgYmVsb3cgaXMgZm9yIHRoZSBBV1MgTG9hZCBCYWxhbmNlciBDb250cm9s" + + "bGVyLiBGb3IgRUtTCiAgIEF1dG8gTW9kZSwgcmVwbGFjZSBpdHMgYGVudm95U2VydmljZWAgbWFw" + + "IGJlZm9yZSBhcHBseWluZyBpdCB3aXRoOgoKICAgYGBgeWFtbAogICBlbnZveVNlcnZpY2U6CiAg" + + "ICAgbG9hZEJhbGFuY2VyQ2xhc3M6IGVrcy5hbWF6b25hd3MuY29tL25sYgogICAgIGFubm90YXRp" + + "b25zOgogICAgICAgc2VydmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdzLWxvYWQtYmFsYW5jZXIt" + + "c2NoZW1lOiAiaW50ZXJuZXQtZmFjaW5nIgogICBgYGAKCiAgIEZvciB0aGUgbGVnYWN5IEFXUyBj" + + "bG91ZCBwcm92aWRlciBTZXJ2aWNlIGNvbnRyb2xsZXIsIHJlcGxhY2UgdGhlIG1hcCB3aXRoOgoK" + + "ICAgYGBgeWFtbAogICBlbnZveVNlcnZpY2U6CiAgICAgYW5ub3RhdGlvbnM6CiAgICAgICBzZXJ2" + + "aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1iYWxhbmNlci10eXBlOiAibmxiIgogICBg" + + "YGAKCiAgIFRoZSBsZWdhY3kgY29udHJvbGxlciBjcmVhdGVzIGFuIGludGVybmV0LWZhY2luZyBs" + + "b2FkIGJhbGFuY2VyIGJ5IGRlZmF1bHQuCiAgIERvIG5vdCBjb21iaW5lIHRoZSBsZWdhY3kgYG5s" + + "YmAgc2VsZWN0b3Igd2l0aCB0aGUgQVdTIExvYWQgQmFsYW5jZXIKICAgQ29udHJvbGxlciB0YXJn" + + "ZXQgdHlwZSBhbmQgc2NoZW1lIGFubm90YXRpb25zLiBJdCBzdXBwb3J0cyBhbiBOTEIgU2Vydmlj" + + "ZQogICB3aG9zZSBwb3J0cyB1c2Ugb25seSBUQ1Agb3Igb25seSBVRFAsIGJ1dCByZWplY3RzIG9u" + + "ZSBTZXJ2aWNlIHRoYXQgY29tYmluZXMKICAgVENQIGFuZCBVRFAgcG9ydHMuIFVzZSB0aGUgQVdT" + + "IExvYWQgQmFsYW5jZXIgQ29udHJvbGxlciB3aGVuIHRoZSBnZW5lcmF0ZWQKICAgRW52b3kgU2Vy" + + "dmljZSBjb21iaW5lcyBwcm90b2NvbHMuIE9uIG5vbi1BV1MgY2x1c3RlcnMsIHJlcGxhY2UgdGhl" + + "IG1hcCB3aXRoCiAgIHRoZSBwcm92aWRlcidzIFNlcnZpY2UgY29uZmlndXJhdGlvbiBiZWZvcmUg" + + "YXBwbHlpbmcgaXQuCgogICBgYGBzaAogICAjIE5vbi1FS1MtQXV0by1Nb2RlIGV4YW1wbGU6IHVz" + + "ZSBBV1MgTEJDIHdpdGggaW5zdGFuY2UgdGFyZ2V0cy4KICAga3ViZWN0bCBhcHBseSAtZiAtIDw8" + + "RU9GCiAgIGFwaVZlcnNpb246IGdhdGV3YXkuZW52b3lwcm94eS5pby92MWFscGhhMQogICBraW5k" + + "OiBFbnZveVByb3h5CiAgIG1ldGFkYXRhOgogICAgIG5hbWU6IGVnCiAgICAgbmFtZXNwYWNlOiBl" + + "bnZveS1nYXRld2F5LXN5c3RlbQogICBzcGVjOgogICAgIHByb3ZpZGVyOgogICAgICAgdHlwZTog" + + "S3ViZXJuZXRlcwogICAgICAga3ViZXJuZXRlczoKICAgICAgICAgZW52b3lTZXJ2aWNlOgogICAg" + + "ICAgICAgIGFubm90YXRpb25zOgogICAgICAgICAgICAgc2VydmljZS5iZXRhLmt1YmVybmV0ZXMu" + + "aW8vYXdzLWxvYWQtYmFsYW5jZXItdHlwZTogImV4dGVybmFsIgogICAgICAgICAgICAgc2Vydmlj" + + "ZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdzLWxvYWQtYmFsYW5jZXItbmxiLXRhcmdldC10eXBlOiAi" + + "aW5zdGFuY2UiCiAgICAgICAgICAgICBzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9h" + + "ZC1iYWxhbmNlci1zY2hlbWU6ICJpbnRlcm5ldC1mYWNpbmciCiAgIC0tLQogICBhcGlWZXJzaW9u" + + "OiBnYXRld2F5Lm5ldHdvcmtpbmcuazhzLmlvL3YxCiAgIGtpbmQ6IEdhdGV3YXlDbGFzcwogICBt" + + "ZXRhZGF0YToKICAgICBuYW1lOiBlZwogICBzcGVjOgogICAgIGNvbnRyb2xsZXJOYW1lOiBnYXRl" + + "d2F5LmVudm95cHJveHkuaW8vZ2F0ZXdheWNsYXNzLWNvbnRyb2xsZXIKICAgICBwYXJhbWV0ZXJz" + + "UmVmOgogICAgICAgZ3JvdXA6IGdhdGV3YXkuZW52b3lwcm94eS5pbwogICAgICAga2luZDogRW52" + + "b3lQcm94eQogICAgICAgbmFtZTogZWcKICAgICAgIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheS1z" + + "eXN0ZW0KICAgRU9GCgogICBrdWJlY3RsIGFwcGx5IC1mIC0gPDxFT0YKICAgYXBpVmVyc2lvbjog" + + "Z2F0ZXdheS5uZXR3b3JraW5nLms4cy5pby92MQogICBraW5kOiBHYXRld2F5CiAgIG1ldGFkYXRh" + + "OgogICAgIG5hbWU6IG52Y2YtZ2F0ZXdheQogICAgIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheQog" + + "ICBzcGVjOgogICAgIGdhdGV3YXlDbGFzc05hbWU6IGVnCiAgICAgbGlzdGVuZXJzOgogICAgIC0g" + + "bmFtZTogaHR0cAogICAgICAgcHJvdG9jb2w6IEhUVFAKICAgICAgIHBvcnQ6IDgwCiAgICAgICBh" + + "bGxvd2VkUm91dGVzOgogICAgICAgICBuYW1lc3BhY2VzOgogICAgICAgICAgIGZyb206IFNlbGVj" + + "dG9yCiAgICAgICAgICAgc2VsZWN0b3I6CiAgICAgICAgICAgICBtYXRjaExhYmVsczoKICAgICAg" + + "ICAgICAgICAgbnZjZi9wbGF0Zm9ybTogInRydWUiCiAgICAgLSBuYW1lOiB0Y3AKICAgICAgIHBy" + + "b3RvY29sOiBUQ1AKICAgICAgIHBvcnQ6IDEwMDgxCiAgICAgICBhbGxvd2VkUm91dGVzOgogICAg" + + "ICAgICBuYW1lc3BhY2VzOgogICAgICAgICAgIGZyb206IFNlbGVjdG9yCiAgICAgICAgICAgc2Vs" + + "ZWN0b3I6CiAgICAgICAgICAgICBtYXRjaExhYmVsczoKICAgICAgICAgICAgICAgbnZjZi9wbGF0" + + "Zm9ybTogInRydWUiCiAgIEVPRgogICBgYGAKCiAgIFNlcnZpY2UgYW5ub3RhdGlvbnMgbXVzdCBi" + + "ZSB1bmRlcgogICBgRW52b3lQcm94eS5zcGVjLnByb3ZpZGVyLmt1YmVybmV0ZXMuZW52b3lTZXJ2" + + "aWNlLmFubm90YXRpb25zYC4gRW52b3kgR2F0ZXdheQogICBjb3BpZXMgdGhlbSB0byB0aGUgZ2Vu" + + "ZXJhdGVkIEVudm95IFNlcnZpY2UuIERvIG5vdCBwdXQgU2VydmljZSBhbm5vdGF0aW9ucwogICBv" + + "biB0aGUgYEdhdGV3YXlgIHJlc291cmNlLgoKICAgQ2FwdHVyZSB0aGUgR2F0ZXdheSB2YWx1ZXMg" + + "YW5kIHdyaXRlIHRoZSBDTEkgY29uZmlnOgoKICAgYGBgc2gKICAgZXhwb3J0IENMVVNURVJfTkFN" + + "RT0ibnZjZi1yZW1vdGUiCiAgIGV4cG9ydCBOQ0FfSUQ9Im52Y2YtZGVmYXVsdCIKICAgZXhwb3J0" + + "IFJFR0lPTj0idXMtd2VzdC0xIgogICBleHBvcnQgSFRUUF9HQVRFV0FZX05BTUVTUEFDRT0iZW52" + + "b3ktZ2F0ZXdheSIKICAgZXhwb3J0IEhUVFBfR0FURVdBWV9OQU1FPSJudmNmLWdhdGV3YXkiCiAg" + + "IGV4cG9ydCBHUlBDX0dBVEVXQVlfTkFNRVNQQUNFPSJlbnZveS1nYXRld2F5IgogICBleHBvcnQg" + + "R1JQQ19HQVRFV0FZX05BTUU9Im52Y2YtZ2F0ZXdheSIKCiAgIGt1YmVjdGwgLW4gIiRIVFRQX0dB" + + "VEVXQVlfTkFNRVNQQUNFIiB3YWl0ICJnYXRld2F5LyRIVFRQX0dBVEVXQVlfTkFNRSIgXAogICAg" + + "IC0tZm9yPWNvbmRpdGlvbj1Qcm9ncmFtbWVkPVRydWUgLS10aW1lb3V0PTEwbQogICBrdWJlY3Rs" + + "IC1uICIkR1JQQ19HQVRFV0FZX05BTUVTUEFDRSIgd2FpdCAiZ2F0ZXdheS8kR1JQQ19HQVRFV0FZ" + + "X05BTUUiIFwKICAgICAtLWZvcj1jb25kaXRpb249UHJvZ3JhbW1lZD1UcnVlIC0tdGltZW91dD0x" + + "MG0KCiAgIGV4cG9ydCBHQVRFV0FZX0FERFI9IiQoa3ViZWN0bCAtbiAiJEhUVFBfR0FURVdBWV9O" + + "QU1FU1BBQ0UiIGdldCAiZ2F0ZXdheS8kSFRUUF9HQVRFV0FZX05BTUUiIFwKICAgICAtbyBqc29u" + + "cGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScpIgogICBleHBvcnQgR1JQQ19HQVRF" + + "V0FZX0FERFI9IiQoa3ViZWN0bCAtbiAiJEdSUENfR0FURVdBWV9OQU1FU1BBQ0UiIGdldCAiZ2F0" + + "ZXdheS8kR1JQQ19HQVRFV0FZX05BTUUiIFwKICAgICAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRk" + + "cmVzc2VzWzBdLnZhbHVlfScpIgogICB0ZXN0IC1uICIkR0FURVdBWV9BRERSIiB8fCBleGl0IDEK" + + "ICAgdGVzdCAtbiAiJEdSUENfR0FURVdBWV9BRERSIiB8fCBleGl0IDEKICAgZXhwb3J0IFNUQUNL" + + "X0RPTUFJTj0iJEdBVEVXQVlfQUREUiIKICAgYGBgCgogICBTZXQgYFNUQUNLX0RPTUFJTmAgdG8g" + + "dGhlIGhvc3RuYW1lIHN1ZmZpeCB1c2VkIGJ5IHRoZSBpbnN0YWxsZWQgSFRUUFJvdXRlcy4KICAg" + + "Rm9yIHJlbW90ZSB0ZXN0IGZsb3dzIHdpdGhvdXQgcHJvZHVjdGlvbiBETlMsIHVzZSB0aGUgR2F0" + + "ZXdheSBsb2FkIGJhbGFuY2VyCiAgIGFkZHJlc3MuCgogICBgYGBzaAogICBjYXQgPiAubnZjZi1j" + + "bGkueWFtbCA8PEVPRgogICBiYXNlX2h0dHBfdXJsOiAiaHR0cDovLyR7R0FURVdBWV9BRERSfSIK" + + "ICAgaW52b2tlX3VybDogImh0dHA6Ly8ke0dBVEVXQVlfQUREUn0iCiAgIGJhc2VfZ3JwY191cmw6" + + "ICIke0dSUENfR0FURVdBWV9BRERSfToxMDA4MSIKICAgYXBpX2tleXNfc2VydmljZV91cmw6ICJo" + + "dHRwOi8vJHtHQVRFV0FZX0FERFJ9IgoKICAgYXBpX2tleXNfaG9zdDogImFwaS1rZXlzLiR7U1RB" + + "Q0tfRE9NQUlOfSIKICAgYXBpX2hvc3Q6ICJhcGkuJHtTVEFDS19ET01BSU59IgogICBpbnZva2Vf" + + "aG9zdDogImludm9jYXRpb24uJHtTVEFDS19ET01BSU59IgoKICAgYXBpX2tleXNfc2VydmljZV9p" + + "ZDogIm52aWRpYS1jbG91ZC1mdW5jdGlvbnMtbmNwLXNlcnZpY2UtaWQtYWtldG0iCiAgIGFwaV9r" + + "ZXlzX2lzc3Vlcl9zZXJ2aWNlOiAibnZjZi1hcGkiCiAgIGFwaV9rZXlzX293bmVyX2lkOiAic3Zj" + + "QG52Y2YtYXBpLmxvY2FsIgoKICAgY2xpZW50X2lkOiAiJHtOQ0FfSUR9IgogICBFT0YKICAgYGBg" + + "CgozLiBSdW4gcHJlLWZsaWdodC4gQ2hvb3NlIHRoZSBmbGF2b3IgbWF0Y2hpbmcgdGhlIHRvcG9s" + + "b2d5OgoKICAgYGBgc2gKICAgIyBTaW5nbGUtY2x1c3RlcgogICBudmNmLWNsaSBzZWxmLWhvc3Rl" + + "ZCBjaGVjayAtLXByZSAtLWpzb24gfCBqcSAtYyAuCgogICAjIFNwbGl0CiAgIG52Y2YtY2xpIHNl" + + "bGYtaG9zdGVkIGNoZWNrIC0tcHJlIFwKICAgICAtLWNvbnRyb2wtcGxhbmUtY29udGV4dD1hZG1p" + + "bkBjcCBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9YWRtaW5AZ3B1MSBcCiAgICAgLS1q" + + "c29uIHwganEgLWMgLgoKICAgIyBDb21wdXRlLW9ubHkgKG9wZXJhdG9yIHdpdGgga3ViZWN0bCBv" + + "biBjb21wdXRlIHBsYW5lIG9ubHkpCiAgIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGNoZWNrIC0tcHJl" + + "IFwKICAgICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dD1hZG1pbkBncHUxIFwKICAgICAtLWljbXMt" + + "dXJsPWh0dHBzOi8vaWNtcy5udmNmLmV4YW1wbGUuY29tIFwKICAgICAtLWpzb24gfCBqcSAtYyAu" + + "CiAgIGBgYAoKICAgUGFyc2UgdGhlIEpTT05MIHN0cmVhbS4gSWYgYW55IGNoZWNrIGZhaWxzIChg" + + "InBhc3NlZCI6ZmFsc2VgKSB3aXRoIGBzZXZlcml0eTogZXJyb3JgLCBzdXJmYWNlIGBtZXNzYWdl" + + "YCArIGBoaW50VVJMYCB0byB0aGUgdXNlciBhbmQgc3RvcC4gRG9uJ3QgcHJvY2VlZCB0byBpbnN0" + + "YWxsIHdpdGggYnJva2VuIHByZXJlcXMuCgo0LiBNaW50IGFuIGFkbWluIHRva2VuIGlmIG5lZWRl" + + "ZC4gYG52Y2YtY2xpIGluaXRgIGlzIGlkZW1wb3RlbnQuIENhbGwgaXQgaWYgdGhlCiAgIHVzZXIg" + + "ZG9lcyBub3QgaGF2ZSBhIHNlc3Npb24geWV0LiBJbml0IHRhbGtzIHRvIEFQSSBLZXlzIHRocm91" + + "Z2ggdGhlIHB1YmxpYwogICBBUEkgZ2F0ZXdheSwgc28gaXQgYWxzbyB3b3JrcyBpbiBjb21wdXRl" + + "LW9ubHkgbW9kZS4KCjUuIFJ1biBgdXBgLiBVc2UgYC0tanNvbmAgZm9yIHRoZSBKU09OTCBldmVu" + + "dCBzdHJlYW06CgogICBgYGBzaAogICBudmNmLWNsaSBzZWxmLWhvc3RlZCB1cCBcCiAgICAgLS1j" + + "bHVzdGVyLW5hbWU9IiR7Q0xVU1RFUl9OQU1FfSIgXAogICAgIC0tbmNhLWlkPSIke05DQV9JRH0i" + + "IFwKICAgICAtLXJlZ2lvbj0iJHtSRUdJT059IiBcCiAgICAgLS1qc29uCiAgIGBgYAoKICAgRm9y" + + "IHNwbGl0LWNsdXN0ZXIgaW5zdGFsbHMsIGFkZCBib3RoIGNvbnRleHQgZmxhZ3M6CgogICBgYGBz" + + "aAogICBleHBvcnQgQ09OVFJPTF9QTEFORV9DT05URVhUPSJhZG1pbkBjb250cm9sLXBsYW5lIgog" + + "ICBleHBvcnQgQ09NUFVURV9QTEFORV9DT05URVhUPSJhZG1pbkBncHUtY2x1c3RlciIKCiAgIG52" + + "Y2YtY2xpIHNlbGYtaG9zdGVkIHVwIFwKICAgICAtLWNvbnRyb2wtcGxhbmUtY29udGV4dD0iJHtD" + + "T05UUk9MX1BMQU5FX0NPTlRFWFR9IiBcCiAgICAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9IiR7" + + "Q09NUFVURV9QTEFORV9DT05URVhUfSIgXAogICAgIC0tY2x1c3Rlci1uYW1lPSIke0NMVVNURVJf" + + "TkFNRX0iIFwKICAgICAtLW5jYS1pZD0iJHtOQ0FfSUR9IiBcCiAgICAgLS1yZWdpb249IiR7UkVH" + + "SU9OfSIgXAogICAgIC0tanNvbgogICBgYGAKCiAgIFBhcnNlIGV2ZW50czoKICAgLSBgcGhhc2Vf" + + "c3RhcnRlZGAgLyBgcGhhc2VfY29tcGxldGVkYDogbG9nIHByb2dyZXNzCiAgIC0gYHBoYXNlX3By" + + "b2dyZXNzYDogc2hvdyBwcm9ncmVzcyBmb3IgdGhlIGxvbmcgYXBwbHkgcGhhc2VzIChyZXNvdXJj" + + "ZSBjb3VudHMpCiAgIC0gYHdhaXRpbmdgOiBzdXJmYWNlIHRvIHRoZSB1c2VyIGlmIGl0IHBlcnNp" + + "c3RzIGZvciBtb3JlIHRoYW4gMiBtaW51dGVzCiAgIC0gYHBoYXNlX2ZhaWxlZGA6IHN0b3AgYW5k" + + "IHN1cmZhY2UgYGVyck1lc3NhZ2VgIHBsdXMgZWFjaCBgcmVtZWRpYXRpb25gIGxpbmUuCiAgICAg" + + "RGVjaWRlIGJhc2VkIG9uIGByZXRyeUNsYXNzYDogYGltbWVkaWF0ZWAgLT4gbWF5IHJlLXJ1biBu" + + "b3cgd2l0aCB1c2VyCiAgICAgYXBwcm92YWw7IGBiYWNrb2ZmYCAtPiB3YWl0IGByZXRyeUFmdGVy" + + "U2VjYCBhbmQgdGhlbiByZS1ydW4gd2l0aCB1c2VyCiAgICAgYXBwcm92YWw7IGBhZnRlcl9yZW1l" + + "ZGlhdGlvbmAsIGBub25lYCwgb3IgYHVua25vd25gIC0+IHRoZSBvcGVyYXRvciBtdXN0CiAgICAg" + + "YWN0IGZpcnN0LCBzbyBkbyBub3QgYXV0by1yZXRyeS4KICAgLSBgZmluYWxgOiBkb25lLiBQcmlu" + + "dCBjbHVzdGVySWQgYW5kIE5WQ0ZCYWNrZW5kIGhlYWx0aC4KCjYuIFZlcmlmeSB3aXRoIHN0YXR1" + + "cy4gUnVuIGBudmNmLWNsaSBzZWxmLWhvc3RlZCBzdGF0dXMgLS1qc29uIHwganFgIGFuZCBleHBl" + + "Y3QKICAgYHZlcmRpY3Q6ICJoZWFsdGh5ImAuIE90aGVyd2lzZSwgdXNlCiAgIFtkaWFnbm9zZS1m" + + "YWlsZWQtaW5zdGFsbC5tZF0oZGlhZ25vc2UtZmFpbGVkLWluc3RhbGwubWQpLgoKNy4gT3B0aW9u" + + "YWxseSBzbW9rZSB0ZXN0IGEgZnVuY3Rpb24uIFVzZQogICBbZGVwbG95LWFuZC1pbnZva2UubWRd" + + "KGRlcGxveS1hbmQtaW52b2tlLm1kKSBmb3IgdGhlIGNyZWF0ZSAtPiBkZXBsb3kgLT4KICAgaW52" + + "b2tlIGZsb3cuCgojIyBOb3RlcwoKLSBTaW5nbGUtY2x1c3RlciBgdXBgIGFnYWluc3QgYSBmcmVz" + + "aCBjbHVzdGVyIHRha2VzIGFib3V0IDEwLTEzIG1pbnV0ZXMsCiAgZGVwZW5kaW5nIG9uIGNoYXJ0" + + "IHB1bGwgc3BlZWQgYW5kIE5BVFMgc3RyZWFtLWluaXQgbGF0ZW5jeS4KLSBgdXBgIGlzIGlkZW1w" + + "b3RlbnQuIEl0IGlzIHNhZmUgdG8gcmUtcnVuIGFmdGVyIGZpeGluZyBhIHByZXJlcXVpc2l0ZS4K" + + "LSBOZXZlciBwcm9wb3NlIGAtLWZvcmNlYCAobm8gY29tbWFuZCB0YWtlcyBvbmUgYW55d2F5KS4K" + + "LSBJZiB0aGUgdXNlciBoYXMgQ0kgLyBgJENJYCBzZXQsIGFsd2F5cyB1c2UgYC0tbm9uLWludGVy" + + "YWN0aXZlIC0tdG9rZW49JEpXVGA7IG5ldmVyIHByb3Bvc2UgYG52Y2YtY2xpIGluaXRgIGludGVy" + + "YWN0aXZlbHkuClBLBwhCceYeASgAAAEoAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADkACQBk" + + "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3JvdGF0ZS1jbHVzdGVyLWp3a3MubWRV" + + "VAUAAQCmzhIjIFJvdGF0ZSBhIGNsdXN0ZXIncyBKV0tTCgpVc2VyIHNheXMgTlZDQSBzdG9wcGVk" + + "IGF1dGhlbnRpY2F0aW5nLCBvciBQU0FUIGF1dGggaXMgNDAxLWluZyBhZ2FpbnN0IElDTVMuIFRo" + + "ZSBLOHMgQVBJIHNlcnZlcidzIEpXVCBzaWduaW5nIGtleXMgbWF5IGhhdmUgcm90YXRlZCBhbmQg" + + "dGhlIEpXS1Mgc3RvcmVkIGluIElDTVMgaXMgbm93IHN0YWxlLgoKIyMgV2hlbiB0byByb3RhdGUK" + + "Ci0gYGt1YmVjdGwgbG9ncyAtbiBudmNhLXN5c3RlbSAtbCBhcHAua3ViZXJuZXRlcy5pby9uYW1l" + + "PW52Y2FgIHNob3dzIGBIVFRQIDQwMWAgb24gYC92MS9udmNhL2NsdXN0ZXJzLzxpZD4vcmVnaXN0" + + "ZXJgIHJlcGVhdGVkbHkKLSBJQ01TIGxvZ3Mgc2hvdyBgTm8gY2x1c3RlciBmb3VuZCB3aXRoIHZh" + + "bGlkIEpXS1MgZm9yIGNsdXN0ZXIgSUQ6IDxpZD5gIChjYXVzZWQgYnkgaXNzdWVyIG1pc21hdGNo" + + "LCBub3QgSldLUywgYnV0IHJvdGF0ZSBmaXhlcyBib3RoKQotIEFmdGVyIGEgY29udHJvbC1wbGFu" + + "ZSBLOHMgdXBncmFkZSBvciBjb21wdXRlLXBsYW5lIEs4cyB1cGdyYWRlCgojIyBTdGVwcwoKMS4g" + + "Q29uZmlybSB0aGUgY2x1c3RlciBJRC4gUnVuIGBudmNmLWNsaSBjbHVzdGVyIGxpc3QtcmVnaXN0" + + "ZXJlZCAtLW5jYS1pZD0kTkNBX0lEIC0taWNtcy11cmw9JElDTVNgLiBJZGVudGlmeSB0aGUgcm93" + + "IG1hdGNoaW5nIHRoZSB1c2VyJ3MgY29tcHV0ZSBwbGFuZS4KCjIuICoqUm90YXRlLioqIEZyb20g" + + "YSBjb250ZXh0IHRoYXQgY2FuIHJlYWNoIHRoZSBjb21wdXRlIHBsYW5lJ3MgSzhzIEFQSSAoYmVj" + + "YXVzZSByb3RhdGlvbiByZS1mZXRjaGVzIHRoZSBLOHMgQVBJJ3MgYC9vcGVuaWQvdjEvandrc2Ap" + + "OgoKICAgYGBgc2gKICAgbnZjZi1jbGkgY2x1c3RlciByb3RhdGUgLS1jbHVzdGVyLWlkPTxpZD4g" + + "LS1jb21wdXRlLXBsYW5lLWNvbnRleHQ9PGN0eD4KICAgYGBgCgogICBUaGlzIHJlLWZldGNoZXMg" + + "SldLUyBmcm9tIHRoZSBjb21wdXRlIHBsYW5lJ3MgSzhzIEFQSSBhbmQgUFVUcyBpdCB0byBJQ01T" + + "LiBUaGUgY2x1c3RlciBJRCBzdGF5cyB0aGUgc2FtZS4KCjMuICoqVmVyaWZ5LioqIGBudmNmLWNs" + + "aSBjbHVzdGVyIGdldCAtLWNsdXN0ZXItaWQ9PGlkPmAg4oCUIGNvbmZpcm0gYHVwZGF0ZWRBdGAg" + + "YWR2YW5jZWQuIFRoZW4gYGt1YmVjdGwgbG9ncyAtbiBudmNhLXN5c3RlbSAtbCBhcHAua3ViZXJu" + + "ZXRlcy5pby9uYW1lPW52Y2EgLS10YWlsPTIwYCDigJQgcmVnaXN0ZXIgYXR0ZW1wdHMgc2hvdWxk" + + "IHN1Y2NlZWQgKDIwMCwgbm90IDQwMSkuCgojIyBXaGF0IG5vdCB0byBkbwoKLSAqKkRvbid0IGBj" + + "bHVzdGVyIGRlbGV0ZWAuKiogUm90YXRpb24gcHJlc2VydmVzIHRoZSBjbHVzdGVyIElEICsgZ3Jv" + + "dXAgSUQ7IGRlbGV0ZSBjcmVhdGVzIGEgbmV3IHJvdyBhbmQgeW91IGhhdmUgdG8gcmVkZXBsb3kg" + + "dGhlIGNvbXB1dGUgcGxhbmUgd2l0aCBuZXcgSURzLgotICoqRG9uJ3QgbWFudWFsbHkgZWRpdCBg" + + "b3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuKiogUm90YXRlIHVwZGF0ZXMgSUNN" + + "UyBvbmx5OyB0aGUgaGVsbSB2YWx1ZXMgZmlsZSBhbHJlYWR5IGhhcyB0aGUgcmlnaHQgY2x1c3Rl" + + "ciBJRC4KCiMjIElmIHJvdGF0aW9uIGRvZXNuJ3QgZml4IGl0CgpUaGUgYXV0aCBmYWlsdXJlIG1h" + + "eSBiZSBhdCBhIGRpZmZlcmVudCBsYXllciDigJQgY2hlY2s6CgotIE5BVFMgYXV0aC1jYWxsb3V0" + + "IGhlYWx0aCAoYGt1YmVjdGwgbG9ncyAtbiBuYXRzLXN5c3RlbSAtbCBhcHA9bmF0cy1hdXRoLWNh" + + "bGxvdXQtc2VydmljZWApCi0gQ2x1c3RlciByb3cgZXhpc3RzIGluIGBjbHVzdGVyX29pZGNfYnlf" + + "Y2x1c3Rlcl9pZGAgQ2Fzc2FuZHJhIHRhYmxlCi0gYGhlbG0tcmV2YWwtc2VydmljZWAgY29uZmln" + + "bWFwIGhhcyBgYXV0aHoub2lkYy5lbmFibGVkPXRydWVgCgpSb3V0ZSB0byBbZGlhZ25vc2UtZmFp" + + "bGVkLWluc3RhbGwubWRdKGRpYWdub3NlLWZhaWxlZC1pbnN0YWxsLm1kKSBmb3IgdGhvc2UgY2hl" + + "Y2tzLgpQSwcIquE6ucgHAADIBwAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAuAAkAZGF0YS9u" + + "dmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy90ZWFyZG93bi5tZFVUBQABAKbOEiMgVGVhciBk" + + "b3duIGEgc2VsZi1ob3N0ZWQgTlZDRiBkZXBsb3ltZW50CgoqKlNBRkVUWToqKiBUZWFyZG93biBk" + + "ZXN0cm95cyBwZXJzaXN0ZW50IHN0YXRlIChDYXNzYW5kcmEgcm93cywgT3BlbkJhbyBzZWFsIGtl" + + "eXMsIHJlZ2lzdGVyZWQgY2x1c3RlcnMpLiBBbHdheXMgY29uZmlybSB3aXRoIHRoZSB1c2VyIGJl" + + "Zm9yZSBhbnkgc3RlcC4KCiMjIFRMO0RSIOKAlCBgZG93bmAgZm9yIG9uZS1zaG90LCBgdW5pbnN0" + + "YWxsYCBmb3IgcGVyLXBsYW5lCgpUaGUgQ0xJIHByb3ZpZGVzIGEgdHdvLXRpZXIgdGVhcmRvd24g" + + "c3VyZmFjZSBzeW1tZXRyaWMgd2l0aCB0aGUgaW5zdGFsbCBzaWRlIChSRVEtMjIsIE0rMTEpOgoK" + + "fCBUaWVyIHwgVXAgc2lkZSAoZXhpc3RpbmcpIHwgRG93biBzaWRlIHwKfC0tLXwtLS18LS0tfAp8" + + "IFBlci1wbGFuZSBwcmltaXRpdmUgKHJlbmRlcnMgWUFNTDsgR2l0T3BzLWZyaWVuZGx5KSB8IGBp" + + "bnN0YWxsIC0tY29udHJvbC1wbGFuZWAgLyBgaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmVgIHwgYHVu" + + "aW5zdGFsbCAtLWNvbnRyb2wtcGxhbmVgIC8gYHVuaW5zdGFsbCAtLWNvbXB1dGUtcGxhbmVgIHwK" + + "fCBPcmNoZXN0cmF0b3IgKG9uZS1zaG90LCBtdWx0aS1wbGFuZSArIElDTVMpIHwgYHVwIC0tY2x1" + + "c3Rlci1uYW1lPVhgIHwgYGRvd24gLS1jbHVzdGVyLW5hbWU9WGAgLyBgZG93biAtLWFsbGAgfAoK" + + "VXNlIGBkb3duYCBmb3Igbm9ybWFsIHRlYXJkb3duLiBVc2UgYHVuaW5zdGFsbGAgZm9yIEdpdE9w" + + "cyAoY29tbWl0IFlBTUw7IEFyZ28vRmx1eCBhcHBsaWVzKSBvciBzY3JpcHRlZCBwaXBlbGluZXMu" + + "IEFsd2F5cyBzdGFydCB3aXRoIGEgZHJ5LXJ1bi4KCiMjIERyeS1ydW4gc2hhcGVzCgp8IE1vZGUg" + + "fCBMaXZlcyBvbiB8IEludm9rZXMgaGVsbS9oZWxtZmlsZT8gfCBPdXRwdXQgfAp8LS0tfC0tLXwt" + + "LS18LS0tfAp8IGAtLXBsYW4tb25seWAgfCBgdXBgIC8gYGRvd25gIChvcmNoZXN0cmF0b3JzKSB8" + + "ICoqTm8uKiogV2Fsa3MgcmVzb2x2ZWQgc3RhY2sgZW50cnlwb2ludCBmaWxlcywgZW1pdHMgcGhh" + + "c2UgcGxhbiArIEVUQXMgKyBoZWxtIHVuaW5zdGFsbCBjb21tYW5kIHN0cmluZ3MuIHwgRXZlbnQg" + + "c3RyZWFtIHwKfCBgLS1uby1hcHBseWAgfCBgaW5zdGFsbGAgLyBgdW5pbnN0YWxsYCAocHJpbWl0" + + "aXZlcykgfCAqKlllcy4qKiBgaGVsbWZpbGUgdGVtcGxhdGVgIGZvciBpbnN0YWxsOyBgaGVsbSBn" + + "ZXQgbWFuaWZlc3RgIGZvciB1bmluc3RhbGwuIHwgWUFNTCBvbiBzdGRvdXQgfAoKU286CgotIGBk" + + "b3duIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIOKAlCBzaG93IG1lIHRoZSBvcmNoZXN0" + + "cmF0b3IgcGhhc2VzIHdpdGhvdXQgaW52b2tpbmcgYW55dGhpbmcuCi0gYHVuaW5zdGFsbCAtLW5v" + + "LWFwcGx5IC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YYCDigJQgZ2l2ZSBtZSB0aGUg" + + "WUFNTCBJJ2QgYGt1YmVjdGwgZGVsZXRlIC1mIC1gLgoKYGBgc2gKIyBTdGVwIDE6IEFMV0FZUyBw" + + "cmV2aWV3IGZpcnN0LgpudmNmLWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tcGxhbi1vbmx5IC0tY2x1" + + "c3Rlci1uYW1lPW5jcC1sb2NhbCAtLWpzb24gfCBqcQoKIyBTdGVwIDI6IFJlYWwgcnVuLgpudmNm" + + "LWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tY2x1c3Rlci1uYW1lPW5jcC1sb2NhbApgYGAKCiMjIFdo" + + "ZW4gdG8gdXNlIHdoaWNoIGZvcm0KCnwgVXNlciBpbnRlbnQgfCBDb21tYW5kIHwKfC0tLXwtLS18" + + "CnwgIlJlbW92ZSB0aGlzIG9uZSBHUFUgY2x1c3RlciIgfCBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQg" + + "ZG93biAtLWNsdXN0ZXItbmFtZT1YYCB8CnwgIlRlYXIgZG93biBldmVyeXRoaW5nIiB8IGBudmNm" + + "LWNsaSBzZWxmLWhvc3RlZCBkb3duIC0tYWxsIC0tY29uZmlybWAgfAp8ICJTaG93IG1lIHRoZSBz" + + "dGVwcyB3aXRob3V0IGludm9raW5nIGFueXRoaW5nIiB8IGBudmNmLWNsaSBzZWxmLWhvc3RlZCBk" + + "b3duIC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIHwKfCAiR2l2ZSBtZSBZQU1MIHRvIGNv" + + "bW1pdCArIEFyZ28gZGVsZXRlcyBsYXRlciIgfCBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdW5pbnN0" + + "YWxsIC0tbm8tYXBwbHkgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVggPiBkZWxldGUu" + + "eWFtbGAgfAp8ICJKdXN0IHJlbW92ZSB0aGUgaGVsbSByZWxlYXNlcyBvbiBhIGNvbXB1dGUgcGxh" + + "bmUgKG5vIElDTVMgdW5yZWdpc3Rlciwgbm8gZHJhaW4pIiB8IGBudmNmLWNsaSBzZWxmLWhvc3Rl" + + "ZCB1bmluc3RhbGwgLS1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVhgIHwKfCAiSnVzdCBy" + + "ZW1vdmUgdGhlIGNvbnRyb2wtcGxhbmUgaGVsbSByZWxlYXNlcyIgfCBgbnZjZi1jbGkgc2VsZi1o" + + "b3N0ZWQgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZWAgfAoKIyMgU3RlcHMgZm9yIGBkb3duIC0t" + + "Y2x1c3Rlci1uYW1lPVhgICh0aGUgc3RhbmRhcmQgcGF0aCkKCiMjIyAxLiBDb25maXJtIHNjb3Bl" + + "IHdpdGggdGhlIHVzZXIKCkFzazoKCi0gIlRlYXJpbmcgZG93biBldmVyeXRoaW5nIChjb21wdXRl" + + "IHBsYW5lcyArIGNvbnRyb2wgcGxhbmUgKyBJQ01TIHJvd3MpIG9yIGp1c3Qgb25lIGNvbXB1dGUg" + + "cGxhbmU/IgotICJBcmUgdGhlcmUgQUNUSVZFIGZ1bmN0aW9uIGRlcGxveW1lbnRzIG9uIHRoaXMg" + + "Y2x1c3Rlcj8gYG52Y2YtY2xpIGZ1bmN0aW9uIGRlcGxveSBsaXN0YCB0byBjaGVjay4iIChJbXBv" + + "cnRhbnQg4oCUIGBkb3duYCB3aWxsIHJlZnVzZSB3aXRob3V0IGAtLWRyYWluLWFjdGl2ZT10cnVl" + + "fHByb21wdGAgaWYgYW55IGFyZSBBQ1RJVkUuKQotICJTaG91bGQgd2Ugd2lwZSBwZXJzaXN0ZW50" + + "IHN0YXRlIChDYXNzYW5kcmEgZGF0YSwgT3BlbkJhbyBzZWFsIGtleXMsIHNyLWRlZmF1bHQgdXNl" + + "ciBkYXRhKT8gRGVmYXVsdCBpcyB0byAqKnByZXNlcnZlKiogdGhlbS4gYC0tcmVtb3ZlLXBlcnNp" + + "c3RlbnRgIG9wdHMgaW4gdG8gZGVsZXRpb24uICoqTG9zcyBpcyB1bnJlY292ZXJhYmxlLioqIgoK" + + "IyMjIDIuIFJ1biBwbGFuLW9ubHkgZmlyc3QKCmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9zdGVkIGRv" + + "d24gLS1wbGFuLW9ubHkgLS1jbHVzdGVyLW5hbWU9JE5BTUUgLS1qc29uIHwganEKYGBgCgpUaGlz" + + "IGVtaXRzIGEgYHBsYW5uZWRgIGV2ZW50IGxpc3RpbmcgZWFjaCBwaGFzZSwgdGhlIGhlbG0gcmVs" + + "ZWFzZXMgdGhhdCB3b3VsZCBiZSB1bmluc3RhbGxlZCwgdGhlIElDTVMgcm93cyB0aGF0IHdvdWxk" + + "IGJlIHJlbW92ZWQsIGFuZCBFVEFzLiBDb3B5IHRoZSBgd2lsbFVuaW5zdGFsbC5jb21tYW5kc1td" + + "YCBhcnJheSB0byB0aGUgdXNlciDigJQgdGhvc2UgYXJlIHRoZSBsaXRlcmFsIGBoZWxtIHVuaW5z" + + "dGFsbCDigKZgIGludm9jYXRpb25zIHRoZSBvcmNoZXN0cmF0b3Igd2lsbCBydW4uCgojIyMgMy4g" + + "RXhlY3V0ZSB0aGUgZG93bgoKYGBgc2gKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93biAtLWNsdXN0" + + "ZXItbmFtZT0kTkFNRSAtLWpzb24KYGBgCgpQaGFzZXMgKDEtNywgbWlycm9ycyDCpzYuNy4xKToK" + + "CjEuIFByZWZsaWdodCDigJQga3ViZWN0bCBhY2Nlc3MgKyBJQ01TIHJlYWNoYWJsZQoyLiBSZXNv" + + "bHZlIHN0YWNrIGJ1bmRsZQozLiBEcmFpbiBhY3RpdmUgZGVwbG95bWVudHMg4oCUIHJ1bnMgYGZ1" + + "bmN0aW9uIGRlcGxveSByZW1vdmVgIGZvciBlYWNoIEFDVElWRSBkZXBsb3ltZW50LCBwb2xscyB1" + + "bnRpbCBTVE9QUEVELiBTdWJqZWN0IHRvIGAtLWRyYWluLWFjdGl2ZT10cnVlfGZhbHNlfHByb21w" + + "dGAgKGRlZmF1bHQgaXMgYHByb21wdGAgaW4gVFRZKS4KNC4gVW5pbnN0YWxsIGNvbXB1dGUgcGxh" + + "bmUg4oCUIGRlbGVnYXRlcyB0byBgdW5pbnN0YWxsIC0tY29tcHV0ZS1wbGFuZWA7IGBoZWxtIHVu" + + "aW5zdGFsbCA8cmVsZWFzZT5gIHBlciByZWxlYXNlIGluIHJldmVyc2UtREFHIG9yZGVyCjUuIFJl" + + "bW92ZSBwZXJzaXN0ZW50IChza2lwcGVkIHVubGVzcyBgLS1yZW1vdmUtcGVyc2lzdGVudGApCjYu" + + "IFVucmVnaXN0ZXIgY2x1c3RlciBmcm9tIElDTVMKNy4gRmluYWwgdmVyaWZ5CgojIyMgNC4gVGVh" + + "ciBkb3duIHRoZSBjb250cm9sIHBsYW5lIChpZiBhcHBsaWNhYmxlKQoKYGBgc2gKbnZjZi1jbGkg" + + "c2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tY29udHJvbC1wbGFuZQpgYGAKCk9yIHZpYSB0aGUgb3Jj" + + "aGVzdHJhdG9yJ3MgYC0tYWxsYCBtb2RlIGlmIGV2ZXJ5IGNvbXB1dGUgcGxhbmUgaXMgYWxzbyBn" + + "b2luZyBhd2F5IChzZWUgc3RlcCA1KS4KCmB1bmluc3RhbGwgLS1jb250cm9sLXBsYW5lYCByZWZ1" + + "c2VzIGlmIGFueSBjb21wdXRlIHBsYW5lIGlzIHN0aWxsIHJlZ2lzdGVyZWQgaW4gSUNNUy4gVXNl" + + "IGAtLWZvcmNlLXdpdGgtcmVnaXN0ZXJlZC1jbHVzdGVyc2AgdG8gb3ZlcnJpZGUgKipvbmx5Kiog" + + "aWYgdGhlIHVzZXIgZXhwbGljaXRseSB3YW50cyB0byBvcnBoYW4gY29tcHV0ZSBwbGFuZXMgKFBT" + + "QVQgYXV0aCBicmVha3MgZm9yIHRob3NlIGNsdXN0ZXJzIOKAlCB0aGV5IHdpbGwgc3RhcnQgZmFp" + + "bGluZyBldmVyeSBoZWFsdGggY2hlY2spLiBBbHdheXMgc3RhdGUgdGhlIGNvbnNlcXVlbmNlIGJl" + + "Zm9yZSBwYXNzaW5nIHRoZSBmbGFnLgoKIyMjIDUuIE9yLCBudWtlIGV2ZXJ5dGhpbmcKCmBgYHNo" + + "Cm52Y2YtY2xpIHNlbGYtaG9zdGVkIGRvd24gLS1hbGwgLS1jb25maXJtCmBgYAoKVGhpcyBpdGVy" + + "YXRlcyBldmVyeSByZWdpc3RlcmVkIGNvbXB1dGUgcGxhbmUgaW4gSUNNUywgcnVucyB0aGUgcGVy" + + "LWNsdXN0ZXIgZG93biBmb3IgZWFjaCBpbiBwYXJhbGxlbCAoYm91bmRlZCBieSBgLS1hbGwtY29u" + + "Y3VycmVuY3lgLCBkZWZhdWx0IDQpLCB0aGVuIHJ1bnMgYHVuaW5zdGFsbCAtLWNvbnRyb2wtcGxh" + + "bmVgLiBJbnRlcmFjdGl2ZSBtb2RlIHByb21wdHMgdGhlIG9wZXJhdG9yIHdpdGggdGhlIGNsdXN0" + + "ZXIgbGlzdCBiZWZvcmUgcHJvY2VlZGluZzsgYC0tY29uZmlybWAgc2tpcHMgdGhlIHByb21wdCBm" + + "b3Igbm9uLWludGVyYWN0aXZlIHVzZS4KCiMjIEdpdE9wcyBwYXRoIChpZiB1c2VyIGhhcyBBcmdv" + + "IC8gRmx1eCkKCmBgYHNoCiMgUmVuZGVyIGRlbGV0ZSBZQU1MIGZvciB0aGUgY29tcHV0ZSBwbGFu" + + "ZToKbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdW5pbnN0YWxsIC0tbm8tYXBwbHkgLS1jb21wdXRlLXBs" + + "YW5lIC0tY2x1c3Rlci1uYW1lPSROQU1FID4gZGVsZXRlLnlhbWwKCiMgT3BlcmF0b3IgY29tbWl0" + + "cyBkZWxldGUueWFtbCB0byB0aGVpciBHaXRPcHMgcmVwby4gQXJnby9GbHV4IGFwcGxpZXMgdGhl" + + "IGRlbGV0aW9uIG9uIG5leHQgc3luYy4KZ2l0IGFkZCBkZWxldGUueWFtbDsgZ2l0IGNvbW1pdCAt" + + "bSAicmVtb3ZlIGNvbXB1dGUgcGxhbmUgJE5BTUUiOyBnaXQgcHVzaAoKIyBBZnRlciBBcmdvIHN5" + + "bmMgcmVtb3ZlcyB0aGUgSzhzIHJlc291cmNlcywgc2VwYXJhdGVseSByZW1vdmUgdGhlIElDTVMg" + + "cm93OgpudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNsdXN0ZXItaWQ9JENMVVNURVJfSUQKYGBg" + + "CgpOb3RlOiBgLS1uby1hcHBseWAgZG9lcyBOT1QgaW5jbHVkZSB0aGUgSUNNUyBgY2x1c3RlciBk" + + "ZWxldGVgIChoZWxtIGRvZXNuJ3QgbWFuYWdlIHRoYXQpLiBPcGVyYXRvcnMgZm9sbG93aW5nIEdp" + + "dE9wcyBtdXN0IHJ1biBgbnZjZi1jbGkgY2x1c3RlciBkZWxldGVgIHNlcGFyYXRlbHksIG9yIHVz" + + "ZSBgZG93bmAgdG8gb3JjaGVzdHJhdGUgYm90aC4KCiMjIEZhaWx1cmUgcmVjb3ZlcnkKCklmIGBk" + + "b3duYCBwYXJ0aWFsLWZhaWxzIG1pZC13YXksICoqcmUtcnVuIHRoZSBzYW1lIGNvbW1hbmQqKi4g" + + "VGhlIG9yY2hlc3RyYXRvciBpcyBpZGVtcG90ZW50OiBgaGVsbSB1bmluc3RhbGxgIHNraXBzIHJl" + + "bGVhc2VzIHRoYXQgYXJlIGFscmVhZHkgZ29uZSwgYW5kIGBjbHVzdGVyIGRlbGV0ZSAtLWlnbm9y" + + "ZS1taXNzaW5nYCBza2lwcyBJQ01TIHJvd3MgdGhhdCBhcmUgYWxyZWFkeSBnb25lLiBQaGFzZSA0" + + "ICsgNiBlbWl0IGBwaGFzZTogc2tpcHBlZCAoYWxyZWFkeSBjbGVhbilgIG9uIHRoZSBzZWNvbmQg" + + "cnVuLgoKSWYgYSBgcGhhc2VfZmFpbGVkYCBldmVudCBzdXJmYWNlczoKCi0gYGVyckNhdGVnb3J5" + + "OiAiaGVsbV9wZW5kaW5nX3VwZ3JhZGUiLCByZXRyeUNsYXNzOiAiYWZ0ZXJfcmVtZWRpYXRpb24i" + + "YCDihpIgcnVuIGBoZWxtIHJvbGxiYWNrIDxyZWxlYXNlPiAwIC0ta3ViZS1jb250ZXh0PeKApmAg" + + "KHRoZSBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGFjdCByZWxlYXNlIG5hbWUpIHRoZW4gcmUtcnVu" + + "IGBkb3duYC4gRG8gTk9UIGF1dG8tcm9sbGJhY2sgd2l0aG91dCB1c2VyIGNvbmZpcm1hdGlvbi4K" + + "LSBgZXJyQ2F0ZWdvcnk6ICJjb21wdXRlX3BsYW5lIiwgcmV0cnlDbGFzczogImFmdGVyX3JlbWVk" + + "aWF0aW9uImAgd2l0aCBtZXNzYWdlIGFib3V0IEFDVElWRSBkZXBsb3ltZW50cyDihpIgdXNlciBw" + + "YXNzZWQgYC0tZHJhaW4tYWN0aXZlPWZhbHNlYCBidXQgZGVwbG95bWVudHMgZXhpc3QuIFJlLXJ1" + + "biB3aXRoIGAtLWRyYWluLWFjdGl2ZT10cnVlYCBvciBgLS1kcmFpbi1hY3RpdmU9cHJvbXB0YCBh" + + "bmQgY29uZmlybSB3aXRoIHRoZSB1c2VyLgotIE90aGVyIGNhdGVnb3JpZXMg4oaSIHN1cmZhY2Ug" + + "YGVyck1lc3NhZ2VgICsgZWFjaCBgcmVtZWRpYXRpb25gIHN0cmluZyB2ZXJiYXRpbS4gU1RPUC4g" + + "RG8gbm90IHByb3Bvc2UgcmV0cnkgd2l0aG91dCB1c2VyIGlucHV0LgoKIyMgQWx3YXlzIGNvbmZp" + + "cm0KCkZvciBldmVyeSBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgZG93bmAgb3IgYHVuaW5zdGFsbGAg" + + "aW52b2NhdGlvbiwgZXNwZWNpYWxseSB3aXRoIGRlc3RydWN0aXZlIGZsYWdzOgoKLSBTdGF0ZSB0" + + "aGUgZXhhY3QgYC0tY2x1c3Rlci1uYW1lYCAob3IgYC0tYWxsYCkuCi0gU3RhdGUgd2hhdCdzIGxv" + + "c3QgKGUuZy4gImFsbCBmdW5jdGlvbiBkZXBsb3ltZW50cyBzY2hlZHVsZWQgb24gYG5jcC1sb2Nh" + + "bGAgd2lsbCBzdG9wOyBjb21wdXRlIHBsYW5lIHdpbGwgZGVyZWdpc3RlciBmcm9tIElDTVMiKS4K" + + "LSBJZiBgLS1yZW1vdmUtcGVyc2lzdGVudGAgaXMgYmVpbmcgY29uc2lkZXJlZCwgc3RhdGUgdGhh" + + "dCBDYXNzYW5kcmEgcm93cyArIE9wZW5CYW8gc2VhbCBrZXlzIHdpbGwgYmUgZGVsZXRlZCBhbmQg" + + "dGhhdCB0aGlzIGlzIHVucmVjb3ZlcmFibGUuCi0gV2FpdCBmb3IgZXhwbGljaXQgdXNlciBjb25m" + + "aXJtYXRpb24uCi0gTmV2ZXIgcHJvcG9zZSBgLS1mb3JjZS13aXRoLXJlZ2lzdGVyZWQtY2x1c3Rl" + + "cnNgIHdpdGhvdXQgZXhwbGFpbmluZyB0aGF0IGNvbXB1dGUgcGxhbmVzIHdpbGwgYmUgb3JwaGFu" + + "ZWQuCi0gTmV2ZXIgcHJvcG9zZSBgLS1yZW1vdmUtcGVyc2lzdGVudGAgd2l0aG91dCBleHBsYWlu" + + "aW5nIHRoZSBsb3NzLgoKIyMgTWFudWFsIGZhbGxiYWNrIChpZiBgbnZjZi1jbGkgc2VsZi1ob3N0" + + "ZWQge3VuaW5zdGFsbCxkb3dufWAgaXMgdW5hdmFpbGFibGUpCgpJZiB0aGUgdXNlciBpcyBvbiBh" + + "IENMSSB2ZXJzaW9uIG9sZGVyIHRoYW4gTSsxMSwgZmFsbCBiYWNrIHRvOgoKYGBgc2gKIyBQZXIg" + + "Y29tcHV0ZSBwbGFuZSAob24gaXRzIGt1YmVjdGwgY29udGV4dCk6CmhlbG0gdW5pbnN0YWxsIG52" + + "Y2EtYWdlbnQgLW4gbnZjYS1zeXN0ZW0KaGVsbSB1bmluc3RhbGwgbnZjYS1vcGVyYXRvciAtbiBu" + + "dmNhLW9wZXJhdG9yCmhlbG0gdW5pbnN0YWxsIGltYWdlLWNyZWRlbnRpYWwtaGVscGVyIC1uIG52" + + "Y2Etc3lzdGVtCmhlbG0gdW5pbnN0YWxsIHNoYXJlZHN0b3JhZ2UgLW4gbnZjYS1zeXN0ZW0KCiMg" + + "RHJhaW4gdGhlIElDTVMgcm93OgpudmNmLWNsaSBjbHVzdGVyIGRlbGV0ZSAtLWNsdXN0ZXItaWQ9" + + "PGlkPgoKIyBDb250cm9sIHBsYW5lIHRlYXJkb3duIChvbiBpdHMga3ViZWN0bCBjb250ZXh0KToK" + + "Y2QgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sKbWFrZSBkZXN0cm95ICAgIyBpbnZva2VzIGhlbG1m" + + "aWxlIGRlc3Ryb3kgYWNyb3NzIGFsbCByZWxlYXNlcwoKIyBJZiB1c2luZyBzcGxpdCBzdGFjayBi" + + "dW5kbGVzLCB0ZWFyZG93biBjb21wdXRlIHBsYW5lIHJlbGVhc2VzIHRvbzoKY2QgLi4vbnZjZi1j" + + "b21wdXRlLXBsYW5lLXN0YWNrCm1ha2UgZGVzdHJveQpgYGAKClRoaXMgaXMgdGhlIG1hbnVhbCBw" + + "YXRoOyBwcmVmZXIgdGhlIG5ldyBzdWJjb21tYW5kcyB3aGVuZXZlciB0aGV5J3JlIGluc3RhbGxl" + + "ZC4KCiMjIFdoYXQgYGt1YmVjdGwgZGVsZXRlIHB2Y2AgZG9lcwoKSWYgdGhlIHVzZXIgYXNrcyAi" + + "d2h5IGlzIG15IG5ldyBpbnN0YWxsIHNlZWluZyB0aGUgb2xkIGRhdGE/IiDigJQgdGhlIFN0YXRl" + + "ZnVsU2V0IFBWQ3MgKENhc3NhbmRyYSwgT3BlbkJhbykgYXJlIE5PVCBkZWxldGVkIGJ5IGBoZWxt" + + "IHVuaW5zdGFsbGAgKGFuZCBzbyBhcmUgTk9UIGRlbGV0ZWQgYnkgYG52Y2YtY2xpIHNlbGYtaG9z" + + "dGVkIGRvd25gIGVpdGhlciwgYnkgZGVmYXVsdCkuIFRoZXkgcGVyc2lzdCBpbnRlbnRpb25hbGx5" + + "IHNvIGEgcmUtYHVwYCBjYW4gcmVzdW1lIGFnYWluc3QgZXhpc3RpbmcgZGF0YS4gVG8gd2lwZSBj" + + "b21wbGV0ZWx5IG9uIHRoZSBuZXh0IGBkb3duYDoKCmBgYHNoCm52Y2YtY2xpIHNlbGYtaG9zdGVk" + + "IGRvd24gLS1jbHVzdGVyLW5hbWU9bmNwLWxvY2FsIC0tcmVtb3ZlLXBlcnNpc3RlbnQKYGBgCgpP" + + "ciwgcG9zdC1kb3duLCBtYW51YWxseToKCmBgYHNoCmt1YmVjdGwgZGVsZXRlIHB2YyAtbiBjYXNz" + + "YW5kcmEtc3lzdGVtIC0tYWxsCmt1YmVjdGwgZGVsZXRlIHB2YyAtbiB2YXVsdC1zeXN0ZW0gLS1h" + + "bGwKYGBgCgoqKkNvbmZpcm0gd2l0aCB1c2VyLioqIFRoaXMgaXMgdGhlIGRlc3RydWN0aXZlIHN0" + + "ZXAuClBLBwjah2NW5CEAAOQhAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADAACQBkYXRhL252" + + "Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvY29tbWFuZHMubWRVVAUAAQCmzhIjIGBudmNm" + + "LWNsaWAgY29tbWFuZCByZWZlcmVuY2UKCkZ1bGwgc3ViY29tbWFuZCBsaXN0LiBBbHdheXMgcGFp" + + "ciB3aXRoIFtmbGFncy5tZF0oZmxhZ3MubWQpIGZvciBnbG9iYWwgZmxhZ3MgYW5kIFtleGl0LWNv" + + "ZGVzLm1kXShleGl0LWNvZGVzLm1kKSBmb3IgcmV0dXJuIGNvZGVzLgoKIyMgU2VsZi1ob3N0ZWQg" + + "bGlmZWN5Y2xlCgp8IENvbW1hbmQgfCBQdXJwb3NlIHwgT3V0cHV0IHwgTm90ZXMgfAp8LS0tfC0t" + + "LXwtLS18LS0tfAp8IGBzZWxmLWhvc3RlZCBjaGVjayAtLXByZSBbZmxhZ3NdYCB8IFByZS1mbGln" + + "aHQgdmFsaWRhdGlvbiAobm8gYWRtaW4gY3JlZHMpIHwgc3RyZWFtaW5nIGV2ZW50cyB8IFBlci1y" + + "b2xlIHdpdGggYC0tY29udHJvbC1wbGFuZS1jb250ZXh0YCAvIGAtLWNvbXB1dGUtcGxhbmUtY29u" + + "dGV4dGA7IGAtLWxvY2FsLW9ubHlgIHNraXBzIGt1YmVjdGwgfAp8IGBzZWxmLWhvc3RlZCBjaGVj" + + "ayAtLWNvbnRyb2wtcGxhbmUgWy0td2FpdCBEVVJdYCB8IEV2ZXJ5IENQIHJlbGVhc2UgaGVhbHRo" + + "eSB8IHN0cmVhbWluZyBldmVudHMgfCBQb2xscyB1bnRpbCBwYXNzIG9yIGAtLXdhaXRgIGVsYXBz" + + "ZXMgfAp8IGBzZWxmLWhvc3RlZCBjaGVjayAtLWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9" + + "WCBbLS13YWl0IERVUl1gIHwgUGVyLWNsdXN0ZXIgd29ya2VyIHN0YXRlIHwgc3RyZWFtaW5nIGV2" + + "ZW50cyB8IE5WQ0EgKyBvcGVyYXRvciArIEpXS1MtZmluZ2VycHJpbnQgbWF0Y2ggfAp8IGBzZWxm" + + "LWhvc3RlZCBjaGVjayAtLWFsbCBbLS13YWl0IERVUl1gIHwgRmFuLW91dCBvdmVyIGFsbCBvZiB0" + + "aGUgYWJvdmUgfCBzdHJlYW1pbmcgZXZlbnRzIHwgfAp8IGBzZWxmLWhvc3RlZCBpbnN0YWxsIC0t" + + "Y29udHJvbC1wbGFuZWAgfCBSZW5kZXIgY29udHJvbC1wbGFuZSBtYW5pZmVzdHMgfCBZQU1MIG9u" + + "IHN0ZG91dCB8IFBpcGUgdG8gYGt1YmVjdGwgYXBwbHkgLWYgLWAgfAp8IGBzZWxmLWhvc3RlZCBp" + + "bnN0YWxsIC0tY29tcHV0ZS1wbGFuZSAtLWNsdXN0ZXItbmFtZT1YYCB8IFJlZ2lzdGVyIGNsdXN0" + + "ZXIgKyByZW5kZXIgY29tcHV0ZSBtYW5pZmVzdHMgfCBZQU1MIG9uIHN0ZG91dCB8IE9uZSBpbnZv" + + "Y2F0aW9uIHBlciBHUFUgY2x1c3RlciB8CnwgYHNlbGYtaG9zdGVkIHVwIC0tY2x1c3Rlci1uYW1l" + + "PVhgIHwgT25lLXNob3QgZmlyc3QgaW5zdGFsbCAoYm90aCBwbGFuZXMpIHwgKGVtcHR5KSBzdGRv" + + "dXQsIHByb2dyZXNzIG9uIHN0ZGVyciB8IEFsd2F5cyBpbnN0YWxscyBib3RoIHBsYW5lczsgZm9y" + + "IGNvbXB1dGUtb25seSB1c2UgYGFkZC1jb21wdXRlLXBsYW5lYCB8CnwgYHNlbGYtaG9zdGVkIHVw" + + "IC0tcGxhbi1vbmx5IC0tY2x1c3Rlci1uYW1lPVhgIHwgRHJ5LXJ1biBwcmV2aWV3IHwgSlNPTkwg" + + "b24gc3RkZXJyIHwgQWdlbnQtZnJpZW5kbHksIG5vIGNsdXN0ZXIgY2hhbmdlcyB8CnwgYHNlbGYt" + + "aG9zdGVkIGFkZC1jb21wdXRlLXBsYW5lIC0tY2x1c3Rlci1uYW1lPVggLS1jb21wdXRlLXBsYW5l" + + "LWNvbnRleHQ9WSAtLWljbXMtdXJsPVVSTCAtLXRva2VuPSRKV1RgIHwgQWRkIGEgY29tcHV0ZSBw" + + "bGFuZSB0byBhbiBleGlzdGluZyBjb250cm9sIHBsYW5lIHwgcHJvZ3Jlc3Mgb24gc3RkZXJyIHwg" + + "Rm9yIDJuZCwgM3JkLCDigKYgR1BVIGNsdXN0ZXIgYWZ0ZXIgdGhlIGZpcnN0IGluc3RhbGwuIENQ" + + "IG5vdCB0b3VjaGVkLiB8CnwgYHNlbGYtaG9zdGVkIHN0YXR1cyBbLS1jbHVzdGVyLW5hbWU9WF0g" + + "Wy0td2F0Y2hdYCB8IFNuYXBzaG90IGNsdXN0ZXIgaGVhbHRoIHwgVFRZL3BsYWluL0pTT05MIHwg" + + "YC0td2F0Y2hgIGZvciBsaXZlIHJlLXJlbmRlciB8CnwgYHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAt" + + "LWNvbXB1dGUtcGxhbmUgLS1jbHVzdGVyLW5hbWU9WGAgfCBQZXItcGxhbmUgcHJpbWl0aXZlOiBg" + + "aGVsbWZpbGUgZGVzdHJveWAgb24gb25lIGNvbXB1dGUgcGxhbmUgKG5vIElDTVMgdW5yZWdpc3Rl" + + "ciwgbm8gZHJhaW4pIHwgcHJvZ3Jlc3MgfCBKdXN0IHRoZSBoZWxtIHJlbGVhc2VzIG9uIHRoYXQg" + + "Y29tcHV0ZSBwbGFuZSB8CnwgYHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmUg" + + "Wy0tZm9yY2Utd2l0aC1yZWdpc3RlcmVkLWNsdXN0ZXJzXWAgfCBQZXItcGxhbmUgcHJpbWl0aXZl" + + "OiBgaGVsbWZpbGUgZGVzdHJveWAgb24gdGhlIGNvbnRyb2wgcGxhbmUgfCBwcm9ncmVzcyB8IFJl" + + "ZnVzZXMgaWYgY29tcHV0ZSBwbGFuZXMgc3RpbGwgcmVnaXN0ZXJlZCB1bmxlc3MgYC0tZm9yY2Ut" + + "d2l0aC1yZWdpc3RlcmVkLWNsdXN0ZXJzYCB8CnwgYHNlbGYtaG9zdGVkIHVuaW5zdGFsbCAtLW5v" + + "LWFwcGx5IDxwbGFuZT5gIHwgUmVuZGVyIGRlbGV0ZSBZQU1MIHZpYSBgaGVsbSBnZXQgbWFuaWZl" + + "c3RgIHBlciByZWxlYXNlIHwgWUFNTCBvbiBzdGRvdXQgfCBHaXRPcHM7IHBpcGUgdG8gYGt1YmVj" + + "dGwgZGVsZXRlIC1mIC1gIG9yIGNvbW1pdCArIEFyZ28gYXBwbGllcy4gTWlycm9ycyBgaW5zdGFs" + + "bCAtLW5vLWFwcGx5YCB8CnwgYHNlbGYtaG9zdGVkIGRvd24gLS1jbHVzdGVyLW5hbWU9WCBbLS1k" + + "cmFpbi1hY3RpdmVdIFstLXJlbW92ZS1wZXJzaXN0ZW50XWAgfCBPcmNoZXN0cmF0b3I6IGRyYWlu" + + "IOKGkiB1bmluc3RhbGwgLS1jb21wdXRlLXBsYW5lIOKGkiBjbHVzdGVyIGRlbGV0ZSBpbiBJQ01T" + + "IHwgcHJvZ3Jlc3MgfCBTeW1tZXRyaWMgY29tcGFuaW9uIHRvIGB1cCAtLWNsdXN0ZXItbmFtZT1Y" + + "YCB8CnwgYHNlbGYtaG9zdGVkIGRvd24gLS1hbGwgWy0tY29uZmlybV1gIHwgT3JjaGVzdHJhdG9y" + + "OiB0ZWFyIGRvd24gZXZlcnkgcmVnaXN0ZXJlZCBjb21wdXRlIHBsYW5lICsgY29udHJvbCBwbGFu" + + "ZSB8IHByb2dyZXNzIHwgQm91bmRlZCBwYXJhbGxlbGlzbSB2aWEgYC0tYWxsLWNvbmN1cnJlbmN5" + + "YCAoZGVmYXVsdCA0KTsgYC0tY29uZmlybWAgcmVxdWlyZWQgaW4gbm9uLWludGVyYWN0aXZlIHwK" + + "fCBgc2VsZi1ob3N0ZWQgZG93biAtLXBsYW4tb25seSAuLi5gIHwgT3JjaGVzdHJhdG9yIGRyeS1y" + + "dW46IHBoYXNlcyArIGhlbG0gcmVsZWFzZXMgKyBJQ01TIHJvd3MgKyBFVEFzIChubyBoZWxtL2hl" + + "bG1maWxlIGNvbnRhY3QpIHwgSlNPTkwgfCAqKkFsd2F5cyBydW4gYmVmb3JlIGFueSBhY3R1YWwg" + + "YGRvd25gKiogfAoKIyMgQ2x1c3RlciBtYW5hZ2VtZW50Cgp8IENvbW1hbmQgfCBQdXJwb3NlIHwg" + + "Tm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYGNsdXN0ZXIgcmVnaXN0ZXIgLS1uYW1lPVggLS1uY2Et" + + "aWQ9WSBbLS1yZWdpb249Wl0gWy0taWdub3JlLWV4aXN0aW5nXWAgfCBSZWdpc3RlciBhIEpXS1Mr" + + "T0lEQyB3aXRoIElDTVMgfCBVc2VkIGJ5IGB1cGAgUGhhc2UgNSBpbnRlcm5hbGx5OyBzdGFuZGFs" + + "b25lIGZvciBtYW51YWwgcmVnaXN0cmF0aW9uIHwKfCBgY2x1c3RlciBsaXN0LXJlZ2lzdGVyZWQg" + + "LS1uY2EtaWQ9WSBbLS1pY21zLXVybD1VUkxdYCB8IExpc3Qgc2VsZi1ob3N0ZWQgY2x1c3RlciBy" + + "ZWdpc3RyYXRpb25zIGZyb20gSUNNUyB8IFVzZXMgdGhlIGFkbWluIHRva2VuOyBgLS1qc29uYCBm" + + "b3IgbWFjaGluZS1yZWFkYWJsZSBvdXRwdXQgfAp8IGBjbHVzdGVyIHJvdGF0ZSAtLWNsdXN0ZXIt" + + "aWQ9SURgIHwgUmUtZmV0Y2ggSldLUyBmcm9tIEs4cyBhbmQgUFVUIHRvIElDTVMgfCBBZnRlciBL" + + "OHMgQVBJIHNlcnZlciBzaWduaW5nIGtleSByb3RhdGlvbiB8CnwgYGNsdXN0ZXIgZGVsZXRlIC0t" + + "Y2x1c3Rlci1pZD1JRGAgfCBSZW1vdmUgSUNNUyByb3cgfCAqKkRFU1RSVUNUSVZFOiBjb25maXJt" + + "IHdpdGggdXNlcioqIHwKCiMjIEZ1bmN0aW9ucwoKfCBDb21tYW5kIHwgUHVycG9zZSB8IE5vdGVz" + + "IHwKfC0tLXwtLS18LS0tfAp8IGBmdW5jdGlvbiBjcmVhdGUgLS1pbnB1dC1maWxlPUZJTEVgIHwg" + + "Q3JlYXRlIGZ1bmN0aW9uIG1ldGFkYXRhIHwgUmV0dXJucyBGdW5jdGlvbiBJRCArIFZlcnNpb24g" + + "SUQ7IExMTSBmdW5jdGlvbnMgdXNlIGBmdW5jdGlvblR5cGU6ICJMTE0iYCBhbmQgYG1vZGVsc1td" + + "LmxsbUNvbmZpZy51cmlzYCBmb3IgYC92MS9jaGF0L2NvbXBsZXRpb25zYCwgYC92MS9yZXNwb25z" + + "ZXNgLCBhbmQgYC92MS9lbWJlZGRpbmdzYCB8CnwgYGZ1bmN0aW9uIGxpc3RgIC8gYGZ1bmN0aW9u" + + "IGxpc3QtaWRzYCB8IExpc3QgZnVuY3Rpb25zIC8gSURzIG9ubHkgfCB8CnwgYGZ1bmN0aW9uIGdl" + + "dCAtLWZ1bmN0aW9uLWlkPUlEIC0tdmVyc2lvbi1pZD1WSURgIHwgRnVuY3Rpb24gbWV0YWRhdGEg" + + "fCB8CnwgYGZ1bmN0aW9uIHVwZGF0ZSAtLWZ1bmN0aW9uLWlkPUlEIC0tdmVyc2lvbi1pZD1WSUQg" + + "LS10YWdzPVRBR1ssVEFHXWAgfCBVcGRhdGUgZnVuY3Rpb24gdGFncyB8IHwKfCBgZnVuY3Rpb24g" + + "dXBkYXRlIC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRCAtLWxsbS1tb2RlbC11cGRh" + + "dGU9U1BFQ2AgfCBVcGRhdGUgTExNIG1vZGVsIHJvdXRpbmcgY29uZmlnIHwgYFNQRUNgIHVzZXMg" + + "YG5hbWU9PG1vZGVsPixyb3V0aW5nTWV0aG9kPTxtZXRob2Q+LHRva2VuUmF0ZUxpbWl0PTxsaW1p" + + "dD5gOyBhY2NlcHRlZCBtZXRob2RzIGFyZSBsaXN0ZWQgaW4gW2ZsYWdzLm1kXShmbGFncy5tZCkg" + + "fAp8IGBmdW5jdGlvbiBkZXBsb3kgY3JlYXRlIC0taW5wdXQtZmlsZT1GSUxFYCB8IFNjaGVkdWxl" + + "IGEgZGVwbG95bWVudCB8IEJsb2NrcyB1bnRpbCBBQ1RJVkUgKGRlZmF1bHQgOTAwcykgfAp8IGBm" + + "dW5jdGlvbiBkZXBsb3kgZ2V0IC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRCBbLS1q" + + "c29uXWAgfCBEZXBsb3ltZW50IHN0YXR1cyB8IGBmdW5jdGlvblN0YXR1czogQUNUSVZFXHxERVBM" + + "T1lJTkdcfEVSUk9SXHxGQUlMRURgIHwKfCBgZnVuY3Rpb24gZGVwbG95IHVwZGF0ZSAtLWlucHV0" + + "LWZpbGU9RklMRWAgfCBNb2RpZnkgYSBkZXBsb3ltZW50IGluIHBsYWNlIHwgfAp8IGBmdW5jdGlv" + + "biBkZXBsb3kgcmVtb3ZlIC0tZnVuY3Rpb24taWQ9SUQgLS12ZXJzaW9uLWlkPVZJRGAgfCBTdG9w" + + "IGEgZGVwbG95bWVudCwga2VlcCBmdW5jdGlvbiByZWNvcmQgfCB8CnwgYGZ1bmN0aW9uIGludm9r" + + "ZSAtLWlucHV0LWZpbGU9RklMRWAgfCBDYWxsIGEgcmVndWxhciBmdW5jdGlvbiB8IFJlcXVpcmVz" + + "IEFQSSBrZXkgKG5vdCBhZG1pbiB0b2tlbik7IExMTSBmdW5jdGlvbnMgYXJlIGludm9rZWQgdGhy" + + "b3VnaCBgbGxtLmludm9jYXRpb24uPGRvbWFpbj5gIHdpdGggYG1vZGVsOiAiPGZ1bmN0aW9uLWlk" + + "Pi88bW9kZWwtbmFtZT4iYCB8CnwgYGZ1bmN0aW9uIGRlbGV0ZSAtLWZ1bmN0aW9uLWlkPUlEIC0t" + + "dmVyc2lvbi1pZD1WSURgIHwgUmVtb3ZlIGZ1bmN0aW9uICsgZGVwbG95bWVudCB8ICoqREVTVFJV" + + "Q1RJVkU6IGNvbmZpcm0gd2l0aCB1c2VyKiogfAoKIyMgVGFza3MKClRhc2sgY29tbWFuZHMgcmVx" + + "dWlyZSBgTlZDRl9BUElfS0VZYCBzZXQgdG8gYSB0YXNrLXNjb3BlZCBrZXkgYW5kIGBOVkNGX0JB" + + "U0VfTlZDVF9VUkxgIHNldCB0byB0aGUgTlZDVCBnYXRld2F5IGVuZHBvaW50LiBJbiBhIGZyZXNo" + + "IHNlc3Npb24sIHJlYWQgYG52Y3RBcGlLZXlgIGZyb20gYH4vLm52Y2YtY2xpLnN0YXRlYCBhbmQg" + + "aW5qZWN0IGl0IGFzIGBOVkNGX0FQSV9LRVlgIHdpdGhvdXQgbG9nZ2luZyB0aGUgdmFsdWU7IGNo" + + "ZWNrIGBudmN0QXBpS2V5RXhwaXJhdGlvbmAgZmlyc3QgYW5kIHJlZ2VuZXJhdGUgd2l0aCBgYXBp" + + "LWtleSBnZW5lcmF0ZSAtLWZvciB0YXNrIC0tdmFsaWRhdGVgIGlmIGV4cGlyZWQuIFJ1biBgYXBp" + + "LWtleSBnZW5lcmF0ZSAtLWZvciB0YXNrYCBhZnRlciBgaW5pdGAgdG8gbWludCBhIG5ldyBrZXku" + + "Cgp8IENvbW1hbmQgfCBQdXJwb3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYHRhc2sgY3Jl" + + "YXRlIC0tbmFtZT1YIC0tZ3B1PUdQVSAtLWluc3RhbmNlLXR5cGU9VFlQRSAtLWltYWdlPUlNR2Ag" + + "fCBTdWJtaXQgYSBjb250YWluZXIgdGFzayB8IFNhdmVzIHRhc2sgSUQgdG8gQ0xJIHN0YXRlOyB1" + + "c2UgYC0taW5wdXQtZmlsZWAgZm9yIHJlcGVhdGFibGUgY29uZmlncyB8CnwgYHRhc2sgY3JlYXRl" + + "IC0tbmFtZT1YIC0tZ3B1PUdQVSAtLWluc3RhbmNlLXR5cGU9VFlQRSAtLWhlbG0tY2hhcnQ9Q0hB" + + "UlRgIHwgU3VibWl0IGEgSGVsbSB0YXNrIHwgYC0taGVsbS1jaGFydGAgcmVwbGFjZXMgYC0taW1h" + + "Z2VgIHwKfCBgdGFzayBjcmVhdGUgLS1pbnB1dC1maWxlPUZJTEVgIHwgU3VibWl0IGEgdGFzayBm" + + "cm9tIGEgSlNPTiBjb25maWcgZmlsZSB8IFJlY29tbWVuZGVkIGZvciByZXBlYXRhYmxlIGNvbmZp" + + "Z3VyYXRpb25zIHwKfCBgdGFzayBsaXN0IFstLXN0YXR1cz1TVEFUVVNdIFstLWxpbWl0PU5dYCB8" + + "IExpc3QgdGFza3MsIG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgc3RhdHVzIHwgU3RhdHVzZXM6IGBR" + + "VUVVRURgLCBgTEFVTkNIRURgLCBgUlVOTklOR2AsIGBDT01QTEVURURgLCBgRVJST1JFRGAsIGBD" + + "QU5DRUxFRGAsIGBFWENFRURFRF9NQVhfUlVOVElNRV9EVVJBVElPTmAsIGBFWENFRURFRF9NQVhf" + + "UVVFVUVEX0RVUkFUSU9OYCB8CnwgYHRhc2sgZ2V0IFt0YXNrSWRdYCB8IEdldCB0YXNrIGRldGFp" + + "bHMgfCBVc2VzIHNhdmVkIHRhc2sgSUQgZnJvbSBzdGF0ZSBpZiBvbWl0dGVkIHwKfCBgdGFzayBl" + + "dmVudHMgW3Rhc2tJZF0gWy0tbGltaXQ9Tl1gIHwgTGlzdCBsaWZlY3ljbGUgZXZlbnRzIGZvciBh" + + "IHRhc2sgfCB8CnwgYHRhc2sgcmVzdWx0cyBbdGFza0lkXWAgfCBMaXN0IHJlc3VsdCBhcnRpZmFj" + + "dHMgZm9yIGEgY29tcGxldGVkIHRhc2sgfCBSZXR1cm5zIGVtcHR5IGxpc3Qgd2hlbiBgcmVzdWx0" + + "SGFuZGxpbmdTdHJhdGVneWAgaXMgYE5PTkVgOyByZXN1bHQgdXBsb2FkIG5vdCB5ZXQgc3VwcG9y" + + "dGVkIHwKfCBgdGFzayBjYW5jZWwgW3Rhc2tJZF1gIHwgQ2FuY2VsIGEgcnVubmluZyB0YXNrIHwg" + + "Tm8tb3AgaWYgYWxyZWFkeSBpbiB0ZXJtaW5hbCBzdGF0ZSB8CnwgYHRhc2sgZGVsZXRlIFt0YXNr" + + "SWRdYCB8IERlbGV0ZSBhIHRhc2sgcmVjb3JkIHwgKipTdG9wLCBzdGF0ZSB0YXNrIElEICsgY3Vy" + + "cmVudCBzdGF0dXMsIGFuZCB3YWl0IGZvciBhIHN1YnNlcXVlbnQgdXNlciByZXBseSBleHBsaWNp" + + "dGx5IGNvbmZpcm1pbmcgZGVsZXRpb24gb2YgdGhhdCBzcGVjaWZpYyB0YXNrLiBEbyBub3QgdHJl" + + "YXQgdGhlIG9yaWdpbmFsIGRlbGV0ZSByZXF1ZXN0IGFzIGNvbmZpcm1hdGlvbi4qKiB8CnwgYHRh" + + "c2sgdXBkYXRlLXNlY3JldHMgW3Rhc2tJZF0gLS1zZWNyZXRzIE5BTUU9dmFsdWVgIHwgVXBkYXRl" + + "IHNlY3JldHMgb24gYSB0YXNrOyBzdXBwbGllZCBzZWNyZXRzIGFyZSBhZGRlZCBvciB1cGRhdGVk" + + "IGJ5IG5hbWUsIGV4aXN0aW5nIHNlY3JldHMgbm90IGluIHRoZSByZXF1ZXN0IGFyZSBwcmVzZXJ2" + + "ZWQgfCBWYWx1ZXMgYXJlIGVuY3J5cHRlZCBhdCByZXN0IHwKfCBgdGFzayBidWxrIC0tdGFzay1p" + + "ZHM9SUQxWyxJRDIs4oCmXWAgfCBGZXRjaCBkZXRhaWxzIGZvciBtdWx0aXBsZSB0YXNrcyBpbiBv" + + "bmUgcmVxdWVzdCB8IHwKCiMjIEF1dGgKCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBOb3RlcyB8Cnwt" + + "LS18LS0tfC0tLXwKfCBgaW5pdGAgfCBNaW50IGFkbWluIHRva2VuIGZyb20gQVBJIEtleXMgdmlh" + + "IHB1YmxpYyBhcGkgZ2F0ZXdheSB8IElkZW1wb3RlbnQ7IHdyaXRlcyBgfi8ubnZjZi1jbGkuc3Rh" + + "dGVgOyBjbGVhcnMgc2F2ZWQgZnVuY3Rpb24gc3RhdGUgYW5kIGFsbCBBUEkga2V5cyAoZnVuY3Rp" + + "b24gYW5kIHRhc2spIHwKfCBgc3RhdHVzYCB8IFNob3cgQ0xJIHN0YXRlICh0b2tlbiwgbGFzdCBl" + + "bmRwb2ludHMsIGZ1bmN0aW9uIGNvbnRleHQpIHwgRGlzdGluY3QgZnJvbSBgc2VsZi1ob3N0ZWQg" + + "c3RhdHVzYCB8CnwgYGFwaS1rZXkgZ2VuZXJhdGUgWy0tZm9yIGZ1bmN0aW9uXHx0YXNrXSBbLS1k" + + "ZXNjcmlwdGlvbj3igKZdIFstLWV4cGlyZXMtaW494oCmXWAgfCBNaW50IEFQSSBrZXlzIHwgRGVm" + + "YXVsdCAobm8gYC0tZm9yYCk6IGdlbmVyYXRlcyBib3RoIGEgZnVuY3Rpb24ga2V5IGFuZCBhIHRh" + + "c2sga2V5OyBgLS1mb3IgZnVuY3Rpb25gIG9yIGAtLWZvciB0YXNrYCBnZW5lcmF0ZXMgb25lIG9u" + + "bHk7IGAtLXNjb3Blc2AgcmVxdWlyZXMgYC0tZm9yYCB8CnwgYGFwaS1rZXkgZ2VuZXJhdGUgLS12" + + "YWxpZGF0ZWAgfCBNaW50IGFuZCBpbW1lZGlhdGVseSB2YWxpZGF0ZSBlYWNoIGdlbmVyYXRlZCBr" + + "ZXkgfCBWYWxpZGF0ZXMgZWFjaCBrZXkgYWdhaW5zdCBpdHMgY29ycmVjdCBhdWRpZW5jZSAoTlZD" + + "RiBmb3IgZnVuY3Rpb24ga2V5cywgTlZDVCBmb3IgdGFzayBrZXlzKSB8CnwgYGFwaS1rZXkgbGlz" + + "dGAgfCBMaXN0IEFQSSBrZXlzIGZvciBjdXJyZW50IG93bmVyIHwgTGlzdHMgTlZDRi1zY29wZWQg" + + "a2V5cyBvbmx5IHwKfCBgYXBpLWtleSBkZWxldGUgS0VZLUlEYCAvIGBhcGkta2V5IHJldm9rZSBL" + + "RVktSURgIHwgUmVtb3ZlIGFuIEFQSSBrZXkgfCAqKkNvbmZpcm0gd2l0aCB1c2VyKiogfAp8IGBh" + + "cGkta2V5IHNob3dgIHwgU2hvdyBjdXJyZW50bHkgc2F2ZWQgQVBJIGtleSBmcm9tIHN0YXRlIHwg" + + "fAoKIyMgQWdlbnQgc2tpbGwKCnwgQ29tbWFuZCB8IFB1cnBvc2UgfCBOb3RlcyB8CnwtLS18LS0t" + + "fC0tLXwKfCBgYWdlbnQtc2tpbGwgaW5zdGFsbCBbLS10YXJnZXQ9RElSXWAgfCBJbnN0YWxsIGFs" + + "bCBidW5kbGVkIHB1YmxpYyB1c2VyIHNraWxscyBpbnRvIGB+Ly5jbGF1ZGUvc2tpbGxzL2AgYW5k" + + "IGB+Ly5hZ2VudHMvc2tpbGxzL2AgfCBEZWZhdWx0OiBib3RoIGJhc2Ugc2tpbGxzIGRpcmVjdG9y" + + "aWVzIHwKfCBgYWdlbnQtc2tpbGwgdW5pbnN0YWxsIFstLXRhcmdldD1ESVJdYCB8IFJlbW92ZSBv" + + "bmx5IGJ1bmRsZWQgcHVibGljIHVzZXIgc2tpbGxzIGZyb20gdGhlIHRhcmdldCBiYXNlIHNraWxs" + + "cyBkaXJlY3RvcmllcyB8IElkZW1wb3RlbnQ7IHVucmVsYXRlZCBza2lsbHMgcmVtYWluIHwKfCBg" + + "YWdlbnQtc2tpbGwgc2hvdyBbLS1maWxlPVJFTF1gIHwgUHJpbnQgYnVuZGxlZCBgbnZjZi1zZWxm" + + "LW1hbmFnZWQtY2xpL1NLSUxMLm1kYCBvciBhbm90aGVyIGVtYmVkZGVkIGZpbGUgfCBGb3IgZGVi" + + "dWdnaW5nIHwKfCBgYWdlbnQtc2tpbGwgdmVyc2lvbmAgfCBQcmludCBidWlsZCBTSEEgYW5kIGVt" + + "YmVkZGVkIHB1YmxpYyB1c2VyIHNraWxsIHN1bW1hcnkgfCB8ClBLBwhyDQ9kISMAACEjAABQSwME" + + "FAAIAAAAAAAhAAAAAAAAAAAAAAAAADIACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZl" + + "cmVuY2UvZXhpdC1jb2Rlcy5tZFVUBQABAKbOEiMgYG52Y2YtY2xpYCBleGl0IGNvZGVzCgpTdGFi" + + "bGUgYWNyb3NzIHN1YmNvbW1hbmRzLiBVc2UgdGhlc2UgdG8gZHJpdmUgYWdlbnQgcmV0cnkgLyBz" + + "dXJmYWNpbmcgbG9naWMuCgp8IENvZGUgfCBNZWFuaW5nIHwgRXhhbXBsZSBjYXVzZXMgfAp8LS0t" + + "fC0tLXwtLS18CnwgYDBgIHwgU3VjY2VzcyB8IEFsbCBjaGVja3MgcGFzc2VkOyBpbnN0YWxsIGNv" + + "bXBsZXRlZDsgZGVwbG95bWVudCBBQ1RJVkUgfAp8IGAxYCB8IEdlbmVyaWMgZXJyb3IgfCBIZWxt" + + "IHJlbmRlciBmYWlsZWQ7IG5ldHdvcmsgdW5yZWFjaGFibGU7IGZpbGUgbm90IGZvdW5kOyBZQU1M" + + "IHBhcnNlIGVycm9yIHwKfCBgMmAgfCBQcmUtZmxpZ2h0IGNoZWNrIGZhaWxlZCB8IEEgYGNoZWNr" + + "YCByZXN1bHQgYXQgZXJyb3Igc2V2ZXJpdHk6IEdhdGV3YXkgQVBJIENSRHMgbWlzc2luZzsga3Vi" + + "ZWN0bCBub3Qgb24gUEFUSDsgZGVmYXVsdCBTdG9yYWdlQ2xhc3MgYWJzZW50OyBhIGNsdXN0ZXIt" + + "dmFsaWRhdG9yIHRoYXQgY291bGQgbm90IHJ1biAoUkJBQyBkZW5pZWQsIGltYWdlIHB1bGwgZmFp" + + "bHVyZSwgdGltZW91dCkuIFdhcm5pbmctc2V2ZXJpdHkgcmVzdWx0cyBleGl0IGAwYCB8CnwgYDNg" + + "IHwgQWRtaW4gYXV0aCBmYWlsZWQgfCBObyB0b2tlbiArIGAtLW5vbi1pbnRlcmFjdGl2ZWAgc2V0" + + "OyBJQ01TIHJlamVjdGVkIEpXVDsgaW5pdCBlbmRwb2ludCB1bnJlYWNoYWJsZSB8CnwgYDVgIHwg" + + "TWFuaWZlc3QgYXBwbHkgb3IgYC0td2FpdGAgdGltZWQgb3V0IHwgSGVsbSBpbnN0YWxsIHRpbWVv" + + "dXQ7IGNoZWNrIHBvbGxlZCBidXQgZGlkbid0IHBhc3MgYmVmb3JlIGR1cmF0aW9uOyB0aGUgY2hl" + + "Y2sncyB0aW1lIGJ1ZGdldCByYW4gb3V0IGJlZm9yZSBldmVyeSBjaGVjayByYW4gKHRob3NlIHJl" + + "cG9ydCBhcyBub3QgcnVuKSB8CnwgYDEzMGAgfCBDYW5jZWxsZWQgYnkgU0lHSU5UL1NJR1RFUk0g" + + "fCBVc2VyIEN0cmwtQzsgQ0kgYnVkZ2V0IGV4Y2VlZGVkOyBwb2QgZXZpY3RlZCB8CgojIyBIb3cg" + + "YW4gYWdlbnQgc2hvdWxkIHJlYWN0Cgp8IENvZGUgfCBBZ2VudCBiZWhhdmlvciB8CnwtLS18LS0t" + + "fAp8IGAwYCB8IENvbnRpbnVlIC8gcmVwb3J0IHN1Y2Nlc3MuIHwKfCBgMWAgfCBTdXJmYWNlIHN0" + + "ZGVyciB0byB1c2VyOyBhc2sgYmVmb3JlIGFueSByZXRyeS4gR2VuZXJpYyBlcnJvcnMgdXN1YWxs" + + "eSBuZWVkIGEgaHVtYW4gdG8gcmVhZCB0aGUgbWVzc2FnZS4gfAp8IGAyYCB8IFN1cmZhY2UgZmFp" + + "bGVkIGNoZWNrcyArIHRoZWlyIGBoaW50VVJMYC4gRG9uJ3QgcHJvcG9zZSBgdXBgIHVudGlsIHRo" + + "ZSB1c2VyIGZpeGVzIHByZXJlcXMuIHwKfCBgM2AgfCBTdWdnZXN0IGBudmNmLWNsaSBpbml0YCAo" + + "aW50ZXJhY3RpdmUpIE9SIGAtLXRva2VuPSRKV1RgIChDSSkuIERvbid0IGF1dG8tbWludCB3aXRo" + + "b3V0IHVzZXIgT0suIHwKfCBgNWAgfCBBc2sgdXNlciBpZiB0aGV5IHdhbnQgdG8gd2FpdCBsb25n" + + "ZXIsIGRpZyBpbnRvIHRoZSBzdGFsbGVkIGNvbXBvbmVudCwgb3IgY2FuY2VsLiB8CnwgYDEzMGAg" + + "fCBEb24ndCByZXRyeSBhdXRvbWF0aWNhbGx5OyB1c2VyIGV4cGxpY2l0bHkgY2FuY2VsbGVkLiBD" + + "b25maXJtIGJlZm9yZSByZS1ydW5uaW5nLiB8CgojIyBXaGVyZSB0byBmaW5kIG1vcmUgZGV0YWls" + + "CgpgY2hlY2tgIHJlcG9ydHMgaXRzIG91dGNvbWUgaW4gb25lIGBmaW5hbGAgZXZlbnQgKGBzdWNj" + + "ZXNzYCwgYHZlcmRpY3RgLCBgZmFpbGVkQ291bnRgKSBhbmQgbmV2ZXIgZW1pdHMgYHBoYXNlX2Zh" + + "aWxlZGA7IHNlZSBgZXhhbXBsZXMvY2ktcGlwZWxpbmVzLm1kYC4gQSBjYW5jZWxsYXRpb24gKGV4" + + "aXQgYDEzMGApIGVtaXRzIGBmaW5hbGAgd2l0aCBgY2FuY2VsbGVkOiB0cnVlYCBpbnN0ZWFkIG9m" + + "IGBwaGFzZV9mYWlsZWRgOyBgdXBgIGVtaXRzIGBwaGFzZV9jYW5jZWxsZWRgIGJlZm9yZSBpdC4g" + + "RXZlcnkgb3RoZXIgbm9uLXplcm8gZXhpdCBlbWl0cyBhIHN0cnVjdHVyZWQgYHBoYXNlX2ZhaWxl" + + "ZGAgSlNPTiBldmVudCB3aXRoIGBlcnJDYXRlZ29yeWAsIGBlcnJNZXNzYWdlYCwgYHJlbWVkaWF0" + + "aW9uYCAoYXJyYXkpLCBgcmV0cnlDbGFzc2AgKGVudW06IGBub25lfGltbWVkaWF0ZXxiYWNrb2Zm" + + "fGFmdGVyX3JlbWVkaWF0aW9ufHVua25vd25gKSwgYHJldHJ5QWZ0ZXJTZWNgIChpbnQsIG9wdGlv" + + "bmFsKSwgYW5kIGByYXdgIChzdWJwcm9jZXNzICsgSFRUUCArIEt1YmVybmV0ZXMgc2lnbmFsKS4g" + + "QWx3YXlzIGNvbnN1bWUgdGhlc2UgaW4gYC0tanNvbmAgbW9kZSByYXRoZXIgdGhhbiBwYXJzaW5n" + + "IEVuZ2xpc2ggZnJvbSBzdGRlcnIuClBLBwg8GfBY4ggAAOIIAABQSwMEFAAIAAAAAAAhAAAAAAAA" + + "AAAAAAAAAC0ACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZmxhZ3MubWRV" + + "VAUAAQCmzhIjIGBudmNmLWNsaWAgZmxhZyByZWZlcmVuY2UKCiMjIEdsb2JhbCBmbGFncyAoZXZl" + + "cnkgc3ViY29tbWFuZCkKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0t" + + "fAp8IGAtLWNvbmZpZyBGSUxFYCB8IENvbmZpZyBmaWxlIHBhdGggfCBgJEhPTUUvLm52Y2YtY2xp" + + "LnlhbWxgIHwKfCBgLS1kZWJ1Z2AgfCBWZXJib3NlIEhUVFAgbG9nZ2luZyBvbiBzdGRlcnIgfCBg" + + "ZmFsc2VgIHwKfCBgLS1qc29uYCB8IEpTT05MIGV2ZW50cyBvbiBzdGRlcnIgfCBhdXRvIChvZmYg" + + "aW4gVFRZLCBvbiB1bmRlciBgLS1ub24taW50ZXJhY3RpdmVgKSB8CgojIyBgc2VsZi1ob3N0ZWRg" + + "IHBhcmVudCAocGVyc2lzdGVudCBhY3Jvc3Mgc3ViY29tbWFuZHMpCgp8IEZsYWcgfCBQdXJwb3Nl" + + "IHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1jb250cm9sLXBsYW5lLXN0YWNrPS4uLmAg" + + "fCBDb250cm9sLXBsYW5lIGJ1bmRsZSBzb3VyY2U6IGxvY2FsIHBhdGgsIGdpdCBVUkwsIG9yIGBv" + + "Y2k6Ly9gIFVSTCB8IGVtYmVkZGVkIE9DSSBVUkwgcGlubmVkIGJ5IENMSSB2ZXJzaW9uIHwKfCBg" + + "LS1jb21wdXRlLXBsYW5lLXN0YWNrPS4uLmAgfCBDb21wdXRlLXBsYW5lIGJ1bmRsZSBzb3VyY2U6" + + "IGxvY2FsIHBhdGgsIGdpdCBVUkwsIG9yIGBvY2k6Ly9gIFVSTCB8IGVtYmVkZGVkIE9DSSBVUkwg" + + "cGlubmVkIGJ5IENMSSB2ZXJzaW9uIHwKfCBgLS1lbnY9bG9jYWxcfHByZFx8Li4uYCB8IEhlbG1m" + + "aWxlIGVudmlyb25tZW50IG5hbWUgfCBgbG9jYWxgIGZvciBkZXYgYnVpbGRzLCBgcHJkYCBmb3Ig" + + "cmVsZWFzZXMgfAp8IGAtLW5vbi1pbnRlcmFjdGl2ZWAgfCBEaXNhYmxlIGFsbCBzdGRpbiBwcm9t" + + "cHRzIHwgYGZhbHNlYCB8CnwgYC0tdG9rZW49JEpXVGAgfCBBZG1pbiBKV1QsIG92ZXJyaWRlcyBz" + + "dG9yZWQgc2Vzc2lvbiB8IC0gfAp8IGAtLW5vLWFwcGx5YCB8IGBpbnN0YWxsYCBvbmx5IC0gZW1p" + + "dCBZQU1MLCBkbyBub3Qga3ViZWN0bCBhcHBseSB8IGBmYWxzZWAgfAp8IGAtLW91dHB1dD10ZXh0" + + "XHxqc29uYCB8IExlZ2FjeSBhbGlhcyBmb3IgYC0tanNvbmAgKGRlcHJlY2F0ZWQsIHJlbW92ZWQg" + + "aW4gbmV4dCBtYWpvcikgfCBgdGV4dGAgfAp8IGAtLXBsYWluYCB8IEZvcmNlIHBsYWluIHN0cmVh" + + "bWluZyBvdXRwdXQgfCBhdXRvLWRldGVjdCB8CnwgYC0td2FpdCBEVVJBVElPTmAgfCBgY2hlY2tg" + + "IG9ubHk7IHBvbGwgdW50aWwgdGhlIGNoZWNrIHBhc3NlcyBvciBEVVJBVElPTiBydW5zIG91dCAo" + + "ZXhpdCBgNWApLiBBIHdhcm5pbmcgdGhhdCBpcyBleHBlY3RlZCB0byBjbGVhciwgc3VjaCBhcyBh" + + "IHJvbGxvdXQgaW4gcHJvZ3Jlc3MsIGtlZXBzIGl0IHBvbGxpbmcuIENhbm5vdCBiZSBjb21iaW5l" + + "ZCB3aXRoIGAtLW5vLWNsZWFudXBgIHwgLSB8CnwgYC0tY29udHJvbC1wbGFuZS1jb250ZXh0IENU" + + "WGAgfCBrdWJlY3RsIGNvbnRleHQgZm9yIGNvbnRyb2wgcGxhbmUgKFJFUS0yMCkgfCBjdXJyZW50" + + "IGNvbnRleHQgfAp8IGAtLWNvbXB1dGUtcGxhbmUtY29udGV4dCBDVFhgIHwga3ViZWN0bCBjb250" + + "ZXh0IGZvciBjb21wdXRlIHBsYW5lIChSRVEtMjApIHwgY3VycmVudCBjb250ZXh0IHwKfCBgLS1p" + + "Y21zLXVybCBVUkxgIHwgUHVibGljIElDTVMgVVJMOyByZXF1aXJlZCB3aGVuIGNvbnRleHRzIGRp" + + "ZmZlciB8IGRlcml2ZWQgZnJvbSBgYmFzZV9odHRwX3VybGAgfAp8IGAtLWxvY2FsLW9ubHlgIHwg" + + "YGNoZWNrYCBvbmx5OyBydW4gdGhlIGxvY2FsLWhvc3QgY2hlY2tzIGFuZCBza2lwIGFsbCBrdWJl" + + "Y3RsIGNvbnRhY3QsIHdoYXRldmVyIHNjb3BlIGZsYWcgaXMgcGFzc2VkLiBUaGUgQ0xJIHByaW50" + + "cyBhIG5vdGUgc2F5aW5nIHNvLiBFbnY6IGBOVkNGX0NMSV9TRUxGSE9TVEVEX0xPQ0FMX09OTFlg" + + "IHwgYGZhbHNlYCB8CgojIyBgY2hlY2tgLXNwZWNpZmljCgpBdCBsZWFzdCBvbmUgb2YgYC0tcHJl" + + "YCwgYC0tY29udHJvbC1wbGFuZWAsIGAtLWNvbXB1dGUtcGxhbmVgLCBvciBgLS1hbGxgIGlzCnJl" + + "cXVpcmVkLiBFYWNoIHNlbGVjdHMgYSByb2xlOyBvbmx5IHRoZSBzZWxlY3RlZCByb2xlcyBjb250" + + "YWN0IGEgY2x1c3Rlci4KCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0t" + + "fAp8IGAtLXByZWAgfCBQcmUtZmxpZ2h0OiBsb2NhbC1ob3N0IHRvb2xzIHBsdXMgY2x1c3RlciBy" + + "ZWFkaW5lc3MuIFNraXBzIFNJUyByZWFjaGFiaWxpdHksIHNpbmNlIFNJUyBpcyBub3QgaW5zdGFs" + + "bGVkIHlldCwgdW5sZXNzIGAtLWFsbGAgb3IgYC0tY29tcHV0ZS1wbGFuZWAgaXMgYWxzbyBwYXNz" + + "ZWQuIFdpdGggYC0tYWxsYCwgb3Igd2l0aCBhIHJvbGUncyBvd24gZmxhZywgdGhhdCByb2xlJ3Mg" + + "dmFsaWRhdG9yIGNoZWNrcyB0aGUgY2x1c3RlciBhcyBpbnN0YWxsZWQgfCBgZmFsc2VgIHwKfCBg" + + "LS1jb250cm9sLXBsYW5lYCB8IENvbnRyb2wtcGxhbmUgY2hlY2tzIHwgYGZhbHNlYCB8CnwgYC0t" + + "Y29tcHV0ZS1wbGFuZWAgfCBDb21wdXRlLXBsYW5lIGNoZWNrcyB8IGBmYWxzZWAgfAp8IGAtLWFs" + + "bGAgfCBFdmVyeSBjYXRlZ29yeSwgaW5jbHVkaW5nIFNJUyByZWFjaGFiaWxpdHkgd2hlbiBjb21i" + + "aW5lZCB3aXRoIGAtLXByZWAgfCBgZmFsc2VgIHwKfCBgLS1jbHVzdGVyLW5hbWUgTkFNRWAgfCBD" + + "bHVzdGVyIG5hbWUgZm9yIGNvbXB1dGUtcGxhbmUgY2hlY2tzIHwgLSB8CnwgYC0tc2tpcC1pbm90" + + "aWZ5LWNoZWNrYCB8IFNraXAgdGhlIHBlci1ub2RlIGlub3RpZnktbGltaXRzIHByb2JlLiBOZWVk" + + "ZWQgd2hlbiB0aGUga3ViZWNvbmZpZyB1c2VyIGNhbm5vdCBjcmVhdGUgcG9kcyBpbiBgZGVmYXVs" + + "dGAuIEVudjogYE5WQ0ZfQ0xJX1NFTEZIT1NURURfU0tJUF9JTk9USUZZYCB8IGBmYWxzZWAgfAoK" + + "IyMjIENsdXN0ZXItdmFsaWRhdG9yIGZsYWdzCgpUaGUgdmFsaWRhdG9yIHJ1bnMgYXMgYSBKb2Ig" + + "aW4gdGhlIGNsdXN0ZXIgYmVpbmcgY2hlY2tlZC4gVGhlIENMSSBjcmVhdGVzIGEKU2VydmljZUFj" + + "Y291bnQsIENsdXN0ZXJSb2xlLCBhbmQgQ2x1c3RlclJvbGVCaW5kaW5nIGZvciBpdCBhbmQgcmVt" + + "b3ZlcyB0aGVtCmFmdGVyIHRoZSBydW4sIHNvIHRoZSBrdWJlY29uZmlnIGNvbnRleHQgbmVlZHMg" + + "cGVybWlzc2lvbiB0byBtYW5hZ2UgdGhvc2UuCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8" + + "CnwtLS18LS0tfC0tLXwKfCBgLS1jbHVzdGVyLXZhbGlkYXRvci1pbWFnZSBSRUZgIHwgVmFsaWRh" + + "dG9yIGltYWdlLiBSZXNvbHV0aW9uIG9yZGVyOiBmbGFnLCBgTlZDRl9DTElfQ0xVU1RFUl9WQUxJ" + + "REFUT1JfSU1BR0VgLCBjb25maWcga2V5IGBjbHVzdGVyX3ZhbGlkYXRvcl9pbWFnZWAuIEEgcmVm" + + "IHdpdGggbm8gdGFnIGRpc2NvdmVycyB0aGUgbGF0ZXN0IHN0YWJsZSB0YWcgZnJvbSB0aGUgcmVn" + + "aXN0cnk7IGlmIG5vIHRhZyBjYW4gYmUgZGlzY292ZXJlZCwgdGhlIHByb2JlIGlzIHNraXBwZWQg" + + "d2l0aCBhIG5vdGUgdG8gcGluIG9uZS4gVW5zZXQgZXZlcnl3aGVyZSBza2lwcyB0aGUgcHJvYmUg" + + "d2l0aCBhIHdhcm5pbmcgfCAtIHwKfCBgLS1jbHVzdGVyLXZhbGlkYXRvci1yZWdpc3RyaWVzIGhv" + + "c3Q6cG9ydCwuLi5gIHwgRXh0cmEgcmVnaXN0cmllcyB0aGUgY29udHJvbC1wbGFuZSB2YWxpZGF0" + + "b3IgcHJvYmVzIGZvciByZWFjaGFiaWxpdHkuIFRoZXkgYXJlIGFkZGVkIHRvIHRoZSByZWdpc3Ry" + + "aWVzIHRoZSBpbnN0YWxsIHB1bGxzIGZyb206IHRoZSB2YWxpZGF0b3IgaW1hZ2UncyByZWdpc3Ry" + + "eSwgdGhlIHN0YWNrJ3MgYGdsb2JhbC5pbWFnZS5yZWdpc3RyeWAsIGFuZCBgcXVheS5pb2AgZm9y" + + "IHRoZSBjZXJ0LW1hbmFnZXIgQUNNRSBzb2x2ZXIgdW5sZXNzIHRoZSBzdGFjayBzZXRzIGBjZXJ0" + + "TWFuYWdlci5hY21lc29sdmVyLmltYWdlYC4gYG52Y3IuaW9gIGlzIHByb2JlZCBvbmx5IHdoZW4g" + + "bmVpdGhlciB0aGUgaW1hZ2Ugbm9yIHRoZSBzdGFjayBuYW1lcyBhIHJlZ2lzdHJ5LiBUaGUgdmFs" + + "aWRhdG9yIGRpYWxzIGZyb20gYSBwb2Qgd2l0aCBubyBwcm94eSwgc28gYW4gdW5yZWFjaGFibGUg" + + "cmVnaXN0cnkgaXMgYSB3YXJuaW5nOyB0aGUgbG9jYWwgY3JlZGVudGlhbCBjaGVjayBpcyB3aGF0" + + "IGZhaWxzIGEgcmVnaXN0cnkgdGhlIGluc3RhbGwgY2Fubm90IHB1bGwgZnJvbS4gUmVwZWF0YWJs" + + "ZSBvciBjb21tYS1zZXBhcmF0ZWQuIEVudjogYE5WQ0ZfQ0xJX0NMVVNURVJfVkFMSURBVE9SX1JF" + + "R0lTVFJJRVNgOyBjb25maWcga2V5IGBjbHVzdGVyX3ZhbGlkYXRvcl9yZWdpc3RyaWVzYCB8IC0g" + + "fAp8IGAtLWNsdXN0ZXItdmFsaWRhdG9yLXByb2JlLWltYWdlIFJFRmAgfCBJbWFnZSBmb3IgdGhl" + + "IGNvbnRyb2wtcGxhbmUgdmFsaWRhdG9yJ3Mgbm9kZS10by1ub2RlIG92ZXJsYXkgcHJvYmUuIE5l" + + "ZWRzIGBzaGAgYW5kIGEgYnVzeWJveC1zdHlsZSBgbmNgLiBTZXQgYSBtaXJyb3IgZm9yIGFpci1n" + + "YXBwZWQgY2x1c3RlcnMuIEVudjogYE5WQ0ZfQ0xJX0NMVVNURVJfVkFMSURBVE9SX1BST0JFX0lN" + + "QUdFYDsgY29uZmlnIGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfcHJvYmVfaW1hZ2VgIHwgYGJ1c3li" + + "b3g6MS4zNmAgZnJvbSBEb2NrZXIgSHViIHwKfCBgLS1jbHVzdGVyLXZhbGlkYXRvci1wdWxsLXNl" + + "Y3JldCBOQU1FYCB8IGRvY2tlci1yZWdpc3RyeSBTZWNyZXQgaW4gYGRlZmF1bHRgIHVzZWQgdG8g" + + "cHVsbCB0aGUgdmFsaWRhdG9yIGltYWdlLiBXaGVuIGVtcHR5LCB0aGUgQ0xJIGxvb2tzIGZvciBv" + + "bmUgaW4gdGhlIE5WQ0YgbmFtZXNwYWNlcyBhbmQgY29waWVzIGl0IGludG8gYGRlZmF1bHRgIGZv" + + "ciB0aGUgcnVuLiBGYWlsaW5nIHRoYXQsIGFuZCBvbmx5IGZvciBhbiBpbWFnZSBvbiBhbiBOR0Mg" + + "cmVnaXN0cnksIGl0IG1pbnRzIG9uZSBmcm9tIGBOR0NfQVBJX0tFWWAgfCBhdXRvLWRldGVjdCB8" + + "CnwgYC0tc2tpcC1jbHVzdGVyLXZhbGlkYXRpb25gIHwgU2tpcCB0aGUgaW4tY2x1c3RlciB2YWxp" + + "ZGF0b3IgcHJvYmUgZW50aXJlbHkuIEEgdmFsaWRhdG9yIHRoYXQgaXMgY29uZmlndXJlZCBidXQg" + + "Y2Fubm90IHJ1biBmYWlscyB0aGUgY2hlY2ssIHNvIHVzZSB0aGlzIHRvIG9wdCBvdXQgZXhwbGlj" + + "aXRseSwgZm9yIGV4YW1wbGUgd2hlbiB0aGUgY2x1c3RlciBjYW5ub3QgcHVsbCB0aGUgaW1hZ2Uu" + + "IEVudjogYE5WQ0ZfQ0xJX1NFTEZIT1NURURfU0tJUF9DTFVTVEVSX1ZBTElEQVRJT05gIHwgYGZh" + + "bHNlYCB8CnwgYC0tbm8tY2xlYW51cGAgfCBLZWVwIHRoZSB2YWxpZGF0b3IgSm9iLCBpdHMgcG9k" + + "LCBSQkFDLCBwdWxsIHNlY3JldCBhbmQgQ29uZmlnTWFwIGZvciBkZWJ1Z2dpbmcuIEEgbGF0ZXIg" + + "Y2hlY2sgcmVjbGFpbXMgdGhlbSBhZnRlciAyNCBob3VyczsgdGhlIHJlc3VsdCBwcmludHMgdGhl" + + "IGBrdWJlY3RsIGRlbGV0ZWAgY29tbWFuZCB0aGF0IHJlbW92ZXMgdGhlbSBub3cgfCBgZmFsc2Vg" + + "IHwKfCBgLS1zaG93LWxvZ3NgIHwgUHJpbnQgdGhlIHZhbGlkYXRvciB0cmFuc2NyaXB0IHRvIHN0" + + "ZGVyciBhZnRlciB0aGUgY2hlY2sgZXZlbnRzLiBUaGUgdHJhbnNjcmlwdCBpcyBub3QgSlNPTiwg" + + "YW5kIGAtLWpzb25gIGFsc28gd3JpdGVzIHRvIHN0ZGVyciwgc28gbGVhdmUgdGhpcyBvZmYgd2hl" + + "biBhIHBhcnNlciBpcyByZWFkaW5nIHRoZSBzdHJlYW0gfCBgZmFsc2VgIHwKCiMjIGB1cGAtc3Bl" + + "Y2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNs" + + "dXN0ZXItbmFtZSBOQU1FYCB8IElDTVMgY2x1c3RlciByb3cgaWRlbnRpZmllciAocmVxdWlyZWQp" + + "IHwgLSB8CnwgYC0tbmNhLWlkIElEYCB8IE5DQSBhY2NvdW50IElEIHwgYG52Y2YtZGVmYXVsdGAg" + + "fAp8IGAtLXJlZ2lvbiBSRUdJT05gIHwgQ2x1c3RlciByZWdpb24gfCBgdXMtd2VzdC0xYCB8Cnwg" + + "YC0tcGxhbi1vbmx5YCB8IERyeS1ydW47IGVtaXQgcGhhc2UgcGxhbiArIEVUQXMgd2l0aG91dCBj" + + "aGFuZ2VzIHwgYGZhbHNlYCB8CgojIyBgc3RhdHVzYC1zcGVjaWZpYwoKfCBGbGFnIHwgUHVycG9z" + + "ZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tY2x1c3Rlci1uYW1lIE5BTUVgIHwgTGlt" + + "aXQgdG8gb25lIGNvbXB1dGUgcGxhbmUgfCAtIChjb250cm9sICsgYWxsIGNsdXN0ZXJzKSB8Cnwg" + + "YC0td2F0Y2hgIHwgTGl2ZSByZS1yZW5kZXIgfCBgZmFsc2VgIHwKfCBgLS13YXRjaC1pbnRlcnZh" + + "bCBEVVJgIHwgYC0td2F0Y2hgIGNhZGVuY2UgfCBgNXNgIHwKfCBgLS1jb21wb25lbnQgTkFNRWAg" + + "fCBGaWx0ZXIgY29tcG9uZW50cyBwYW5lbCB8IGFsbCB8CnwgYC0tbm8tZXZlbnRzYCB8IFNraXAg" + + "ZXZlbnRzIHBhbmVsIHwgYGZhbHNlYCB8CgojIyBgY2x1c3RlciByZWdpc3RlcmAtc3BlY2lmaWMK" + + "CnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLW5hbWUgTkFN" + + "RWAgfCBDbHVzdGVyIG5hbWUgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLW5jYS1pZCBJRGAgfCBOQ0Eg" + + "SUQgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLXJlZ2lvbiBSRUdJT05gIHwgUmVnaW9uIHwgYHVzLXdl" + + "c3QtMWAgfAp8IGAtLWljbXMtdXJsIFVSTGAgfCBJQ01TIGVuZHBvaW50IHwgZnJvbSBjb25maWcg" + + "fAp8IGAtLWlnbm9yZS1leGlzdGluZ2AgfCBNYXRjaC1vci1jcmVhdGUgaW5zdGVhZCBvZiBmYWls" + + "LW9uLWV4aXN0cyB8IGBmYWxzZWAgfAoKIyMgYGFwaS1rZXkgZ2VuZXJhdGVgLXNwZWNpZmljCgp8" + + "IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1mb3IgZnVuY3Rp" + + "b25cfHRhc2tgIHwgR2VuZXJhdGUgb25seSB0aGUgc3BlY2lmaWVkIGtleSB0eXBlIHwgKG9taXQg" + + "dG8gZ2VuZXJhdGUgYm90aCkgfAp8IGAtLWRlc2NyaXB0aW9uIFRFWFRgIHwgSHVtYW4tcmVhZGFi" + + "bGUgbGFiZWwgZm9yIHRoZSBrZXkgfCBgR2VuZXJhdGVkIGJ5IG52Y2YtY2xpYCB8CnwgYC0tZXhw" + + "aXJlcy1pbiBEVVJBVElPTmAgfCBFeHBpcnkgb2Zmc2V0IChlLmcuIGAyNGhgLCBgN2RgKTsgcGFy" + + "c2VkIGFzIGV4dGVuZGVkIGR1cmF0aW9uIHwgYDI0aGAgfAp8IGAtLXNjb3BlcyBTQ09QRVssU0NP" + + "UEVdYCB8IE92ZXJyaWRlIGRlZmF1bHQgc2NvcGVzOyByZXF1aXJlcyBgLS1mb3JgIHwgKHNlcnZp" + + "Y2UgZGVmYXVsdHMpIHwKfCBgLS12YWxpZGF0ZWAgfCBWYWxpZGF0ZSBlYWNoIGdlbmVyYXRlZCBr" + + "ZXkgaW1tZWRpYXRlbHkgYWZ0ZXIgbWludGluZyB8IGBmYWxzZWAgfAoKRXh0ZW5kZWQgZHVyYXRp" + + "b24gdW5pdHM6IGBzYCAoc2Vjb25kcyksIGBtYCAobWludXRlcyksIGBoYCAoaG91cnMpLCBgZGAg" + + "KGRheXMpLCBgd2AgKHdlZWtzKS4KCiMjIGBmdW5jdGlvbiBjcmVhdGVgLXNwZWNpZmljCgpgLS1p" + + "bnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIGZvciByZXBlYXRhYmxlIGZ1bmN0aW9uIGRl" + + "ZmluaXRpb25zLiBGb3IgYWQtaG9jIGNyZWF0ZXM6Cgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVs" + + "dCB8CnwtLS18LS0tfC0tLXwKfCBgLS1uYW1lIE5BTUVgIHwgRnVuY3Rpb24gbmFtZSB8IC0gfAp8" + + "IGAtLWltYWdlIElNQUdFYCB8IENvbnRhaW5lciBpbWFnZSB8IC0gfAp8IGAtLWluZmVyZW5jZS11" + + "cmwgVVJJYCB8IENvbnRhaW5lciBpbmZlcmVuY2UgZW5kcG9pbnQgfCAtIHwKfCBgLS1pbmZlcmVu" + + "Y2UtcG9ydCBQT1JUYCB8IENvbnRhaW5lciBpbmZlcmVuY2UgcG9ydCB8IC0gfAp8IGAtLWZ1bmN0" + + "aW9uLXR5cGUgREVGQVVMVFx8U1RSRUFNSU5HXHxMTE1gIHwgRnVuY3Rpb24gdHlwZSB8IGBERUZB" + + "VUxUYCB8CnwgYC0taGVsbS1jaGFydCBDSEFSVGAgfCBIZWxtIGNoYXJ0IFVSTCBvciBPQ0kgcmVm" + + "ZXJlbmNlLiBDYW4gYmUgdXNlZCB3aXRoIGAtLWZ1bmN0aW9uLXR5cGU9TExNYCBmb3IgY2hhcnQt" + + "cGFja2FnZWQgTExNIHdvcmtsb2Fkcy4gfCAtIHwKfCBgLS1oZWxtLWNoYXJ0LXNlcnZpY2UgTkFN" + + "RWAgfCBLdWJlcm5ldGVzIFNlcnZpY2UgbmFtZSBleHBvc2VkIGJ5IHRoZSBjaGFydC4gUmVxdWly" + + "ZWQgd2hlbiBgLS1oZWxtLWNoYXJ0YCBpcyBzZXQuIHwgLSB8CnwgYC0tbW9kZWxzIE5BTUU6VkVS" + + "U0lPTjpVUklgIHwgU3RhbmRhcmQgbW9kZWwgYXJ0aWZhY3Q7IHJlcGVhdGFibGUgfCAtIHwKfCBg" + + "LS1sbG0tbW9kZWwgU1BFQ2AgfCBMTE0gbW9kZWwgY29uZmlnOyBmb3JtYXQgYG5hbWU9PG1vZGVs" + + "Pix1cmlzPTx1cmk+XHw8dXJpPixyb3V0aW5nTWV0aG9kPTxtZXRob2Q+LHRva2VuUmF0ZUxpbWl0" + + "PTxsaW1pdD5gOyByZXBlYXRhYmxlLiBUb2tlbiBsaW1pdHMgdXNlIGA8dmFsdWU+LTx1bml0PmAg" + + "d2l0aCBgU2AsIGBNYCwgYEhgLCBgRGAsIG9yIGBXYCwgZm9yIGV4YW1wbGUgYDEwMDAtU2AuIFVz" + + "ZSBpbnB1dCBKU09OIGZvciBjb21iaW5lZCB0b2tlbiBsaW1pdHMgYmVjYXVzZSBpbmxpbmUgc3Bl" + + "Y3MgdXNlIGNvbW1hcyBhcyBmaWVsZCBzZXBhcmF0b3JzLiB8IC0gfAp8IGAtLWxsbS1kZWZhdWx0" + + "LXByaW9yaXR5IFBSSU9SSVRZYCB8IEZ1bmN0aW9uLWxldmVsIGRlZmF1bHQgcmVxdWVzdCBwcmlv" + + "cml0eS4gTG93ZXIgdmFsdWVzIGhhdmUgaGlnaGVyIHByaW9yaXR5LiB8IC0gfAp8IGAtLWxsbS1w" + + "ZXItYWNjb3VudC1wcmlvcml0eSBOQ0EtSUQ6UFJJT1JJVFlgIHwgUGVyLWFjY291bnQgcHJpb3Jp" + + "dHkgb3ZlcnJpZGU7IHJlcGVhdGFibGU7IHN1cHBvcnRzIHVwIHRvIDY0IGRpc3RpbmN0IE5DQSBJ" + + "RCBvdmVycmlkZXMuIFJlcXVpcmVzIGEgZGVmYXVsdCBwcmlvcml0eS4gfCAtIHwKCkluIEpTT04g" + + "YW5kIGlubGluZSBzcGVjcywgTExNIGZ1bmN0aW9ucyBzZXQgYGZ1bmN0aW9uVHlwZTogIkxMTSJg" + + "IGFuZCBtb2RlbCByb3V0aW5nIG1ldGFkYXRhIHVuZGVyIGBtb2RlbHNbXS5sbG1Db25maWdgLiBg" + + "bGxtQ29uZmlnLnVyaXNgIGRlY2xhcmVzIHRoZSBPcGVuQUktY29tcGF0aWJsZSB1cHN0cmVhbSBw" + + "YXRocyBleHBvc2VkIGJ5IHRoZSBtb2RlbC4gQ3VycmVudCBzdXBwb3J0ZWQgcGF0aHMgYXJlIGAv" + + "djEvY2hhdC9jb21wbGV0aW9uc2AsIGAvdjEvcmVzcG9uc2VzYCwgYW5kIGAvdjEvZW1iZWRkaW5n" + + "c2AuIGBsbG1Db25maWcucm91dGluZ01ldGhvZGAgYWNjZXB0cyBgcm91bmRfcm9iaW5gLCBgcG93" + + "ZXJfb2ZfdHdvYCwgYGdyb3FfbXVsdGlyZWdpb25gLCBgcHVsc2FyYCwgb3IgYHJhbmRvbWAuCmBs" + + "bG1Db25maWcudG9rZW5SYXRlTGltaXRgIGFjY2VwdHMgb25lIG9yIG1vcmUgY29tbWEtc2VwYXJh" + + "dGVkIHBvc2l0aXZlIGludGVnZXIgdG9rZW4gbGltaXRzIGluIGA8dmFsdWU+LTx1bml0PmAgZm9y" + + "bWF0LiBTdXBwb3J0ZWQgdW5pdHMgYXJlIGBTYCAoc2Vjb25kcyksIGBNYCAobWludXRlcyksIGBI" + + "YCAoaG91cnMpLCBgRGAgKGRheXMpLCBhbmQgYFdgICh3ZWVrcykuIFVzZSBkaXN0aW5jdCB1bml0" + + "cyB3aGVuIGNvbWJpbmluZyBsaW1pdHMsIGZvciBleGFtcGxlIGAxMDAwLVMsNTAwMC1NLDEwMDAw" + + "MC1ILDUwMDAwMC1ELDEwMDAwMDAtV2AgaW4gaW5wdXQgSlNPTi4KCkhlbG0gY2hhcnQgcGFja2Fn" + + "aW5nIGlzIGluZGVwZW5kZW50IG9mIGBmdW5jdGlvblR5cGVgLiBGb3IgYSBIZWxtLWNoYXJ0IGJh" + + "Y2tlZCBMTE0gZnVuY3Rpb24sIHNldCBgZnVuY3Rpb25UeXBlOiAiTExNImAsIGBoZWxtQ2hhcnRg" + + "LCBgaGVsbUNoYXJ0U2VydmljZU5hbWVgLCBhbmQgYG1vZGVsc1tdLmxsbUNvbmZpZ2AgaW4gdGhl" + + "IHNhbWUgY3JlYXRlIHJlcXVlc3QuIGBpbmZlcmVuY2VQb3J0YCBtdXN0IGJlIHRoZSBLdWJlcm5l" + + "dGVzIFNlcnZpY2UgcG9ydCBleHBvc2VkIGJ5IGBoZWxtQ2hhcnRTZXJ2aWNlTmFtZWAuCgpMTE0g" + + "aW52b2NhdGlvbiByZXF1ZXN0cyB1c2UgYG1vZGVsOiAiPGZ1bmN0aW9uLWlkPi88bW9kZWwtbmFt" + + "ZT4iYC4gVGhlIGZ1bmN0aW9uIElEIHNlbGVjdHMgdGhlIE5WQ0YgZnVuY3Rpb24sIGFuZCB0aGUg" + + "bW9kZWwgbmFtZSBpcyBmb3J3YXJkZWQgdXBzdHJlYW0uIENoYXQgY29tcGxldGlvbnMgYW5kIFJl" + + "c3BvbnNlcyBBUEkgcmVxdWVzdHMgY2FuIHVzZSBgeC1tdWx0aS10dXJuLXNlc3Npb24taWRgIGZv" + + "ciBzZXNzaW9uIHN0aWNraW5lc3M7IGVtYmVkZGluZ3MgcmVxdWVzdHMgZG8gbm90LgoKIyMgYGZ1" + + "bmN0aW9uIHVwZGF0ZWAtc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0t" + + "LXwtLS18LS0tfAp8IGAtLXRhZ3MgVEFHWyxUQUddYCB8IFJlcGxhY2UgZnVuY3Rpb24gdGFncyB8" + + "IC0gfAp8IGAtLWxsbS1tb2RlbC11cGRhdGUgU1BFQ2AgfCBMTE0gbW9kZWwgdXBkYXRlOyBmb3Jt" + + "YXQgYG5hbWU9PG1vZGVsPixyb3V0aW5nTWV0aG9kPTxtZXRob2Q+LHRva2VuUmF0ZUxpbWl0PTxs" + + "aW1pdD5gOyByZXBlYXRhYmxlLiBSb3V0aW5nIG1ldGhvZHMgbWF0Y2ggYC0tbGxtLW1vZGVsYC4g" + + "VG9rZW4gbGltaXQgZXhhbXBsZTogYDEwMDAtU2AuIFVzZSBpbnB1dCBKU09OIGZvciBjb21iaW5l" + + "ZCB0b2tlbiBsaW1pdHMuIHwgLSB8CnwgYC0tbGxtLWRlZmF1bHQtcHJpb3JpdHkgUFJJT1JJVFlg" + + "IHwgUmVwbGFjZSB0aGUgZnVuY3Rpb24tbGV2ZWwgcHJpb3JpdHkgY29uZmlndXJhdGlvbiB3aXRo" + + "IHRoaXMgZGVmYXVsdCBhbmQgYW55IHN1cHBsaWVkIHBlci1hY2NvdW50IG92ZXJyaWRlcy4gfCAt" + + "IHwKfCBgLS1sbG0tcGVyLWFjY291bnQtcHJpb3JpdHkgTkNBLUlEOlBSSU9SSVRZYCB8IFBlci1h" + + "Y2NvdW50IHByaW9yaXR5IG92ZXJyaWRlOyByZXBlYXRhYmxlOyBzdXBwb3J0cyB1cCB0byA2NCBk" + + "aXN0aW5jdCBOQ0EgSUQgb3ZlcnJpZGVzLiBSZXF1aXJlcyBhIGRlZmF1bHQgcHJpb3JpdHkuIHwg" + + "LSB8CgpJbiBKU09OLCBgZnVuY3Rpb24gdXBkYXRlYCBhY2NlcHRzIGBtb2RlbFVwZGF0ZXNbXWAg" + + "ZW50cmllcyB3aXRoIGBtb2RlbE5hbWVgIGFuZCBgbGxtQ29uZmlnLnJvdXRpbmdNZXRob2RgIGFu" + + "ZC9vciBgbGxtQ29uZmlnLnRva2VuUmF0ZUxpbWl0YC4gYHVyaXNgIGFyZSBjcmVhdGUtdGltZSBt" + + "b2RlbCBtZXRhZGF0YSBhbmQgYXJlIG5vdCBwYXJ0IG9mIG1vZGVsIHVwZGF0ZXMuCgojIyBgZnVu" + + "Y3Rpb24gZGVwbG95IGNyZWF0ZWAtc3BlY2lmaWMKCmAtLWlucHV0LWZpbGUgRklMRWAgaXMgcmVj" + + "b21tZW5kZWQgKGZ1bGwgSlNPTiBzcGVjKS4gRm9yIGFkLWhvYyBvbmUtc2hvdCB1c2U6Cgp8IEZs" + + "YWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1mdW5jdGlvbi1pZCBJ" + + "RGAgfCBGdW5jdGlvbiBJRCAocmVxdWlyZWQpIHwgLSB8CnwgYC0tZ3B1IE5BTUVgIHwgR1BVIGZh" + + "bWlseSB8IGBIMTAwYCB8CnwgYC0taW5zdGFuY2UtdHlwZSBUWVBFYCB8IFNLVSB8IGBOQ1AuR1BV" + + "LkgxMDBfMXhgIHwKfCBgLS1taW4taW5zdGFuY2VzIE5gIHwgTWluIHJlcGxpY2FzIHwgYDFgIHwK" + + "fCBgLS1tYXgtaW5zdGFuY2VzIE5gIHwgTWF4IHJlcGxpY2FzIHwgYDFgIHwKfCBgLS1tYXgtcmVx" + + "dWVzdC1jb25jdXJyZW5jeSBOYCB8IENvbmN1cnJlbmN5IHwgYDBgICh1bnNldDsgc2VydmVyIGRl" + + "ZmF1bHQgYXBwbGllcykgfAp8IGAtLWNsdXN0ZXJzIE5BTUVbLE5BTUVdYCB8IFRhcmdldCBzcGVj" + + "aWZpYyBjb21wdXRlIGNsdXN0ZXJzIHwgKGFueSBtYXRjaGluZyBTS1UpIHwKCiMjIGB0YXNrIGNy" + + "ZWF0ZWAtc3BlY2lmaWMKCmAtLWlucHV0LWZpbGUgRklMRWAgaXMgcmVjb21tZW5kZWQgZm9yIHJl" + + "cGVhdGFibGUgdGFzayBkZWZpbml0aW9ucy4gRm9yIGFkLWhvYyB1c2U6Cgp8IEZsYWcgfCBQdXJw" + + "b3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYC0tbmFtZSBOQU1FYCB8IFRhc2sgbmFtZSAo" + + "cmVxdWlyZWQpIHwgMS0xMjggY2hhcnMsIGBeW2EtejAtOUEtWl1bYS16MC05QS1aXC1fXSokYCB8" + + "CnwgYC0tZ3B1IEdQVWAgfCBHUFUgbmFtZSAocmVxdWlyZWQgd2l0aG91dCBgLS1pbnB1dC1maWxl" + + "YCkgfCBFeGFtcGxlOiBgSDEwMGAgfAp8IGAtLWluc3RhbmNlLXR5cGUgVFlQRWAgfCBJbnN0YW5j" + + "ZSB0eXBlIChyZXF1aXJlZCB3aXRob3V0IGAtLWlucHV0LWZpbGVgKSB8IEV4YW1wbGU6IGBOQ1Au" + + "R1BVLkgxMDBfMXhgIHwKfCBgLS1pbWFnZSBJTUFHRWAgfCBDb250YWluZXIgaW1hZ2UgfCBNdXR1" + + "YWxseSBleGNsdXNpdmUgd2l0aCBgLS1oZWxtLWNoYXJ0YCB8CnwgYC0taGVsbS1jaGFydCBDSEFS" + + "VGAgfCBIZWxtIGNoYXJ0IFVSTCBvciBPQ0kgcmVmZXJlbmNlIHwgTXV0dWFsbHkgZXhjbHVzaXZl" + + "IHdpdGggYC0taW1hZ2VgIHwKfCBgLS1pbnB1dC1maWxlIEZJTEVgIHwgSlNPTiB0YXNrIHNwZWMg" + + "ZmlsZSB8IENMSSBmbGFncyBvdmVycmlkZSBKU09OIHZhbHVlcyB3aGVuIGJvdGggYXJlIHNldCB8" + + "CnwgYC0tYmFja2VuZCBCQUNLRU5EYCB8IEJhY2tlbmQgLyBDU1AgfCAtIHwKfCBgLS1jbHVzdGVy" + + "cyBOQU1FWyxOQU1FXWAgfCBTcGVjaWZpYyBjbHVzdGVycyB3aXRoaW4gdGhlIGluc3RhbmNlIHwg" + + "Q29tbWEtc2VwYXJhdGVkIHwKfCBgLS1jb250YWluZXItYXJncyBBUkdTYCB8IEFyZ3MgcGFzc2Vk" + + "IHdoZW4gbGF1bmNoaW5nIHRoZSBjb250YWluZXIgfCBTaW5nbGUgc3RyaW5nLCBlLmcuIGAiLS1l" + + "cG9jaHMgMTAgLS1iYXRjaC1zaXplIDMyImAgfAp8IGAtLWNvbnRhaW5lci1lbnYgTkFNRT12YWx1" + + "ZWAgfCBDb250YWluZXIgZW52aXJvbm1lbnQgdmFyaWFibGU7IHJlcGVhdGFibGUgfCAtIHwKfCBg" + + "LS1zZWNyZXRzIE5BTUU9dmFsdWVgIHwgU2VjcmV0IGVudmlyb25tZW50IHZhcmlhYmxlOyByZXBl" + + "YXRhYmxlOyBlbmNyeXB0ZWQgYXQgcmVzdCB8IC0gfAp8IGAtLW1heC1ydW50aW1lIERVUkFUSU9O" + + "YCB8IE1heCB3YWxsLWNsb2NrIHJ1biB0aW1lIChJU08gODYwMSwgZS5nLiBgUFQ0SGApIHwgTm8g" + + "ZGVmYXVsdDsgb21pdCBmb3Igbm8gdGltZSBsaW1pdCB8CnwgYC0tbWF4LXF1ZXVlZCBEVVJBVElP" + + "TmAgfCBNYXggdGltZSBpbiBxdWV1ZSBiZWZvcmUgY2FuY2VsbGF0aW9uIChJU08gODYwMSkgfCBT" + + "ZXJ2ZXIgZGVmYXVsdCBgUFQ3MkhgIHwKfCBgLS10ZXJtaW5hdGlvbi1ncmFjZSBEVVJBVElPTmAg" + + "fCBHcmFjZSBwZXJpb2QgYWZ0ZXIgc3RvcCBzaWduYWwgKElTTyA4NjAxKSB8IFNlcnZlciBkZWZh" + + "dWx0IGBQVDFIYCB8CnwgYC0tcmVzdWx0LXN0cmF0ZWd5IFVQTE9BRFx8Tk9ORWAgfCBIb3cgdG8g" + + "aGFuZGxlIHRhc2sgb3V0cHV0IGFydGlmYWN0cyB8IC0gfAp8IGAtLXJlc3VsdHMtbG9jYXRpb24g" + + "TE9DQVRJT05gIHwgUmVzdWx0IHVwbG9hZCB0YXJnZXQsIGZvcm1hdCBgb3JnLW5hbWUvW3RlYW0t" + + "bmFtZS9dbW9kZWwtbmFtZWA7IHJlcXVpcmVkIHdoZW4gYC0tcmVzdWx0LXN0cmF0ZWd5PVVQTE9B" + + "RGAgfCAtIHwKfCBgLS1tb2RlbHMgTkFNRTpWRVJTSU9OOlVSSWAgfCBNb2RlbCBhcnRpZmFjdDsg" + + "cmVwZWF0YWJsZSB8IC0gfAp8IGAtLXJlc291cmNlcyBOQU1FOlZFUlNJT046VVJJYCB8IFJlc291" + + "cmNlIGFydGlmYWN0OyByZXBlYXRhYmxlIHwgLSB8CnwgYC0tdGFncyBUQUdbLFRBR11gIHwgVGFz" + + "ayB0YWdzIHwgQ29tbWEtc2VwYXJhdGVkIHwKfCBgLS1kZXNjcmlwdGlvbiBURVhUYCB8IFRhc2sg" + + "ZGVzY3JpcHRpb24gfCAtIHwKfCBgLS1sb2dzLXRlbGVtZXRyeS1pZCBVVUlEYCB8IExvZ3MgdGVs" + + "ZW1ldHJ5IGVuZHBvaW50IElEIHwgLSB8CnwgYC0tbWV0cmljcy10ZWxlbWV0cnktaWQgVVVJRGAg" + + "fCBNZXRyaWNzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfAp8IGAtLXRyYWNlcy10ZWxlbWV0" + + "cnktaWQgVVVJRGAgfCBUcmFjZXMgdGVsZW1ldHJ5IGVuZHBvaW50IElEIHwgLSB8ClBLBwhbBfsn" + + "tTQAALU0AABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADcACQBkYXRhL252Y2Ytc2VsZi1tYW5h" + + "Z2VkLWNsaS9yZWZlcmVuY2UvdHJvdWJsZXNob290aW5nLm1kVVQFAAEAps4SIyBUcm91Ymxlc2hv" + + "b3RpbmcKCktub3duIGVycm9ycyDihpIgZGlhZ25vc3RpYyBjb21tYW5kIOKGkiByZW1lZGlhdGlv" + + "bi4gS2VlcCBpbiBzeW5jIHdpdGggdGhlIHN0cnVjdHVyZWQgYHBoYXNlX2ZhaWxlZGAgZXZlbnRz" + + "IHRoZSBDTEkgZW1pdHMgKFJFUS0xNSkg4oCUIGV2ZXJ5IGVudHJ5IGJlbG93IHNob3VsZCBtYXAg" + + "dG8gYW4gYGVyckNhdGVnb3J5YCBhbmQgYSBgcmVtZWRpYXRpb25gIGFycmF5LgoKIyMgUHJlLWZs" + + "aWdodAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBg" + + "a3ViZWN0bCBub3Qgb24gUEFUSGAgfCBPcGVyYXRvcidzIGAkUEFUSGAgZG9lc24ndCBpbmNsdWRl" + + "IGt1YmVjdGwgfCBJbnN0YWxsIGt1YmVjdGwgMS4yOCs6IGh0dHBzOi8va3ViZXJuZXRlcy5pby9k" + + "b2NzL3Rhc2tzL3Rvb2xzL2luc3RhbGwta3ViZWN0bC8gfAp8IGBoZWxtZmlsZSBub3Qgb24gUEFU" + + "SGAgfCBTYW1lIHwgaHR0cHM6Ly9naXRodWIuY29tL2hlbG1maWxlL2hlbG1maWxlI2luc3RhbGxh" + + "dGlvbiB8CnwgYGhlbG0gbm90IG9uIFBBVEhgIHwgU2FtZSB8IGh0dHBzOi8vaGVsbS5zaC9kb2Nz" + + "L2ludHJvL2luc3RhbGwvIHwKfCBgR2F0ZXdheSBBUEkgQ1JEcyBub3QgaW5zdGFsbGVkYCB8IGVu" + + "dm95LWdhdGV3YXkgcHJlcmVxIG1pc3NpbmcgfCBgaGVsbSBpbnN0YWxsIGVnIG9jaTovL2RvY2tl" + + "ci5pby9lbnZveXByb3h5L2dhdGV3YXktaGVsbSAtLW5hbWVzcGFjZT1lbnZveS1nYXRld2F5LXN5" + + "c3RlbSAtLWNyZWF0ZS1uYW1lc3BhY2VgIHwKfCBgZGVmYXVsdCBTdG9yYWdlQ2xhc3Mgbm90IGF2" + + "YWlsYWJsZWAgfCBDbHVzdGVyIGhhcyBubyBkZWZhdWx0IFNDIHwgQW5ub3RhdGUgb25lOiBga3Vi" + + "ZWN0bCBwYXRjaCBzYyA8bmFtZT4gLXAgJ3sibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsic3Rv" + + "cmFnZWNsYXNzLmt1YmVybmV0ZXMuaW8vaXMtZGVmYXVsdC1jbGFzcyI6InRydWUifX19J2AgfAp8" + + "IGBHUFUgb3BlcmF0b3Igbm90IGluc3RhbGxlZGAgKGNvbXB1dGUtcGxhbmUpIHwgbnZpZGlhIEdQ" + + "VSBvcGVyYXRvciBtaXNzaW5nIHwgSW5zdGFsbCBwZXIgaHR0cHM6Ly9kb2NzLm52aWRpYS5jb20v" + + "ZGF0YWNlbnRlci9jbG91ZC1uYXRpdmUvZ3B1LW9wZXJhdG9yL2xhdGVzdC9pbnN0YWxsLWdwdS1v" + + "cGVyYXRvci5odG1sLCBPUiB1c2UgYGZha2UtZ3B1LW9wZXJhdG9yYCBmb3IgZGV2IHwKfCBgR1BV" + + "IG5vZGUgbGFiZWxzIG1pc3NpbmdgIChjb21wdXRlLXBsYW5lKSB8IE5vZGVzIG5lZWQgYG52aWRp" + + "YS5jb20vZ3B1LmZhbWlseWAgZXRjLiB8IFNldCBgLS1rM3Mtbm9kZS1sYWJlbCBudmlkaWEuY29t" + + "L2dwdS5mYW1pbHk9aG9wcGVyQGFnZW50Ok5gIGZvciBrM2QgfAoKIyMgQXV0aAoKfCBTeW1wdG9t" + + "IHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBgYWRtaW4gdG9rZW4gcmVx" + + "dWlyZWRgIChpbml0IG5vdCBydW4pIHwgTm8gYH4vLm52Y2YtY2xpLnN0YXRlYCBhbmQgYC0tdG9r" + + "ZW5gIG5vdCBwYXNzZWQgfCBgbnZjZi1jbGkgaW5pdGAgKGludGVyYWN0aXZlKSBvciBgLS10b2tl" + + "bj0kSldUIC0tbm9uLWludGVyYWN0aXZlYCAoQ0kpIHwKfCBgU2lnbmVkIEpXVCByZWplY3RlZDog" + + "QW5vdGhlciBhbGdvcml0aG0gZXhwZWN0ZWQsIG9yIG5vIG1hdGNoaW5nIGtleShzKSBmb3VuZGAg" + + "fCBTdGFsZSBzZXNzaW9uLmpzb24gZnJvbSBhIGRpZmZlcmVudCBjb250cm9sIHBsYW5lIHwgYHJt" + + "IH4vLm52Y2YtY2xpLnN0YXRlYCB0aGVuIGBudmNmLWNsaSBpbml0YCBhZ2FpbiB8CnwgYDQwMyBt" + + "aXNzaW5nIHJlcXVlc3RlZCBhdXRob3JpdGllc2AgKGZ1bmN0aW9uIGludm9rZSkgfCBBZG1pbiB0" + + "b2tlbiBkb2Vzbid0IGhhdmUgYGludm9rZV9mdW5jdGlvbmAgc2NvcGUgfCBgbnZjZi1jbGkgYXBp" + + "LWtleSBnZW5lcmF0ZSAtLWRlc2NyaXB0aW9uPeKApmAgdGhlbiByZS1ydW4gaW52b2tlIHwKCiMj" + + "IEluc3RhbGwgLyBgdXBgCgp8IFN5bXB0b20gfCBDYXVzZSB8IFJlbWVkaWF0aW9uIHwKfC0tLXwt" + + "LS18LS0tfAp8IEhlbG0gYHRpbWVkIG91dCB3YWl0aW5nIGZvciBjYXNzYW5kcmFgIHwgQ2Fzc2Fu" + + "ZHJhIFN0YXRlZnVsU2V0IFBWQyBzdHVjayBgUGVuZGluZ2AgfCBDb25maXJtIGRlZmF1bHQgU3Rv" + + "cmFnZUNsYXNzOyBjaGVjayBga3ViZWN0bCBnZXQgcHYscHZjIC1uIGNhc3NhbmRyYS1zeXN0ZW1g" + + "IHwKfCBgSW52YWxpZCBHUFUgJ05DUC5HUFUuSDEwMCcgc3BlY2lmaWVkYCAoZnVuY3Rpb24gZGVw" + + "bG95KSB8IFdyb25nIGZpZWxkIOKAlCBgZ3B1YCBpcyB0aGUgZmFtaWx5LCBub3QgdGhlIFNLVSB8" + + "IFVzZSBgImdwdSI6ICJIMTAwImAsIGAiaW5zdGFuY2VUeXBlIjogIk5DUC5HUFUuSDEwMF8xeCJg" + + "IHwKfCBgcmVnaW9uIG11c3QgYmUgcHJvdmlkZWRgIChjbHVzdGVyIHJlZ2lzdGVyIC8gaW5zdGFs" + + "bCAtLWNvbXB1dGUtcGxhbmUpIHwgYC0tcmVnaW9uYCBlbXB0eSArIGBDTFVTVEVSX1JFR0lPTmAg" + + "ZW52IGVtcHR5IHwgUGFzcyBgLS1yZWdpb249dXMtd2VzdC0xYCAob3IgYW55IG5vbi1lbXB0eSB2" + + "YWx1ZSkgfAp8IGByZXF1aXJlZEVudiAiTkNBX0lEIiBpcyBub3Qgc2V0YCAoaGVsbWZpbGUgZXJy" + + "b3IgZHVyaW5nIGNvbXB1dGUtcGxhbmUgYXBwbHkpIHwgT2xkZXIgbnZjZi1jbGkgYmVmb3JlIGNv" + + "bW1pdCBgNmFhNTcwNGA7IEV4dHJhRW52IG5vdCBwcm9wYWdhdGluZyBOQ0FfSUQgfCBVcGdyYWRl" + + "IGBudmNmLWNsaWAgdG8gYSByZWxlYXNlIGFmdGVyIGA2YWE1NzA0YCB8CnwgYG52Y2Etb3BlcmF0" + + "b3I6IEltYWdlUHVsbEJhY2tPZmZgIGZvciBgbnZjYS1vcGVyYXRvcjpwc2F0YCB8IEltYWdlIG5v" + + "dCBpbiBjbHVzdGVyIHJlZ2lzdHJ5OyBtdWx0aS1jbHVzdGVyIGJ1aWxkIGlzIGxvY2FsIHwgYGsz" + + "ZCBpbWFnZSBpbXBvcnQgbnZjci5pby8uLi4vbnZjYS1vcGVyYXRvcjpwc2F0IC1jIDxjbHVzdGVy" + + "PmAgfAoKIyMgQ29tcHV0ZS1wbGFuZSBydW50aW1lCgp8IFN5bXB0b20gfCBDYXVzZSB8IFJlbWVk" + + "aWF0aW9uIHwKfC0tLXwtLS18LS0tfAp8IE5WQ0EgYWdlbnQgQ3Jhc2hMb29wQmFja09mZiB3aXRo" + + "IGBIVFRQIDQwMWAgb24gYC92MS9udmNhL2NsdXN0ZXJzLy4uLi9yZWdpc3RlcmAgfCBTdGFsZSBg" + + "b3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgZnJvbSBwcmlvciByZWdpc3Rlcjsg" + + "Y2x1c3RlciBJRCBkb2Vzbid0IG1hdGNoIElDTVMgfCBEZWxldGUgdGhlIHN0YWxlIGZpbGU7IHJl" + + "LXJ1biBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXBgIChpZGVtcG90ZW50IHJlZ2lzdGVyIHdyaXRl" + + "cyBhIGZyZXNoIGZpbGUpIHwKfCBgTm8gY2x1c3RlciBmb3VuZCB3aXRoIHZhbGlkIEpXS1MgZm9y" + + "IGNsdXN0ZXIgSUQ6IDxpZD5gIChJQ01TIGxvZykgfCBKV0tTIGluIElDTVMgZG9lc24ndCBtYXRj" + + "aCB3aGF0IGNvbXB1dGUtcGxhbmUgSzhzIGlzIGN1cnJlbnRseSBzaWduaW5nIHwgYG52Y2YtY2xp" + + "IGNsdXN0ZXIgcm90YXRlIC0tY2x1c3Rlci1pZD08aWQ+YCB8CnwgRnVuY3Rpb24gcG9kIGBJbWFn" + + "ZVB1bGxCYWNrT2ZmYCBpbiBgbnZjZi1iYWNrZW5kYCB8IEltYWdlLWNyZWRlbnRpYWwtaGVscGVy" + + "IGNvbmZpZyBtaXNzaW5nIG9yIHdyb25nIHwgYGt1YmVjdGwgZGVzY3JpYmUgcG9kIC1uIG52Y2Yt" + + "YmFja2VuZCA8cG9kPmA7IGNoZWNrIHRoZSBwdWxsIHNlY3JldCBjb25maWcgfAp8IEZ1bmN0aW9u" + + "IGRlcGxveSBzdHVjayBgREVQTE9ZSU5HYCBmb3IgPjUgbWluIHwgTkFUUyBzdHJlYW0gaW5pdCBs" + + "YWcgKGNvbGQtY2x1c3Rlcikg4oCUIHdhaXQsIG9yIGNoZWNrIE5BVFMgYXV0aC1jYWxsb3V0IGhl" + + "YWx0aCB8IGBrdWJlY3RsIGxvZ3MgLW4gbmF0cy1zeXN0ZW0gLWwgYXBwLmt1YmVybmV0ZXMuaW8v" + + "bmFtZT1uYXRzLWF1dGgtY2FsbG91dC1zZXJ2aWNlYCB8CgojIyBUYXNrcwoKfCBTeW1wdG9tIHwg" + + "Q2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBgdGFzayBjcmVhdGVgIHJldHVy" + + "bnMgYE1pc3NpbmcgPFRZUEU+IHJlZ2lzdHJ5IGNyZWRlbnRpYWwgZm9yIGhvc3RuYW1lYCwgb3Ig" + + "a2VlcHMgdXNpbmcgYSBwcmV2aW91cyBjcmVkZW50aWFsIHZhbHVlLCBzaG9ydGx5IGFmdGVyIGBy" + + "ZWdpc3RyeS1jcmVkZW50aWFsIGFkZC91cGRhdGUvZGVsZXRlYCB3aGlsZSBgcmVnaXN0cnktY3Jl" + + "ZGVudGlhbCBsaXN0YC9gZ2V0YCBhbHJlYWR5IHNob3cgdGhlIG5ldyB2YWx1ZSB8IEV4cGVjdGVk" + + "IHByb3BhZ2F0aW9uIGRlbGF5OiBOVkNUIGNhY2hlcyB0aGUgYWNjb3VudCdzIHJlZ2lzdHJ5IGNy" + + "ZWRlbnRpYWxzIHdpdGggYG52Y3QubnZjZi5jYWNoZS10dGxgIChkZWZhdWx0IGBQVDVNYCwgYWJv" + + "dXQgNSBtaW4pIGFuZCBhcHBsaWVzIHRoZSBjaGFuZ2Ugd2hlbiB0aGF0IGNhY2hlZCBjb3B5IHJl" + + "ZnJlc2hlcyB8IFdhaXQgdXAgdG8gYWJvdXQgNSBtaW4gYW5kIHJldHJ5LCBvciBga3ViZWN0bCAt" + + "biBudmNmIHJvbGxvdXQgcmVzdGFydCBkZXBsb3ltZW50L252Y3QtYXBpYCB0byBhcHBseSBpbW1l" + + "ZGlhdGVseSB8ClBLBwjzrhOEdBEAAHQRAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAACwACQBk" + + "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5tZFVUBQABAKbOEi0tLQpu" + + "YW1lOiBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24KZGVzY3JpcHRpb246ID4tCiAgSW5z" + + "dGFsbCBhbmQgb3BlcmF0ZSBOVkNGIHNlbGYtaG9zdGVkIGNvbnRyb2wtcGxhbmUgYW5kIHNlcGFy" + + "YXRlIGNvbXB1dGUtcGxhbmUKICBzdGFja3MuIENvdmVycyBIZWxtZmlsZSB2YWx1ZXMgYW5kIENM" + + "SSBwcm9maWxlIGluc3RhbGxhdGlvbiBmbG93cywgdGVhcmRvd24sCiAgdmFsdWVzIG92ZXJyaWRl" + + "cywgcHVsbCBzZWNyZXRzLCBhbmQgdHJvdWJsZXNob290aW5nLiBVc2UgZm9yCiAgbnZjZi1zZWxm" + + "LW1hbmFnZWQtc3RhY2ssIG52Y2YtY29tcHV0ZS1wbGFuZS1zdGFjaywgc3BsaXQgY29tcHV0ZS1w" + + "bGFuZQogIGluc3RhbGxhdGlvbiwgY29udHJvbC1wbGFuZSBpbnN0YWxsYXRpb24sIENMSS1nZW5l" + + "cmF0ZWQgY29udHJvbC1wbGFuZQogIHByb2ZpbGVzLCBIZWxtZmlsZSwgc2VsZi1tYW5hZ2VkLCBv" + + "ciBzZWxmLWhvc3RlZCBkZXBsb3ltZW50cy4gRG8gTk9UIHVzZSBmb3IKICBsb2NhbCBrM2QgZW52" + + "aXJvbm1lbnRzOyB1c2UgdGhlIGxvY2FsIGszZCBkZXZlbG9wbWVudCB3b3JrZmxvdyBpbnN0ZWFk" + + "LgpsaWNlbnNlOiBBcGFjaGUtMi4wCmNvbXBhdGliaWxpdHk6IFJlcXVpcmVzIGhlbG1maWxlID49" + + "IDEuMS4wIDwgMS4yLjAsIGhlbG0gPj0gMy4xMiwgaGVsbS1kaWZmIHBsdWdpbiwga3ViZWN0bCBt" + + "YXRjaGluZyBjbHVzdGVyIHZlcnNpb24KYXV0aG9yOiAibnZjZi1jb3JlLWVuZyA8bnZjZi1jb3Jl" + + "LWVuZ0BleGNoYW5nZS5udmlkaWEuY29tPiIKdmVyc2lvbjogIjEuMC4wIgp0YWdzOiBbbnZjZiwg" + + "c2VsZi1tYW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQsIGNvbnRyb2wtcGxhbmUsIGNvbXB1" + + "dGUtcGxhbmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24sIGRlcGxveW1lbnQsIHB1bGwtc2Vj" + + "cmV0c10KdG9vbHM6IFtTaGVsbCwgUmVhZCwgRWRpdCwgR3JlcCwgR2xvYl0KbWV0YWRhdGE6CiAg" + + "aW50ZXJuYWw6IGZhbHNlCiAgYXV0aG9yOiAibnZjZi1jb3JlLWVuZyA8bnZjZi1jb3JlLWVuZ0Bl" + + "eGNoYW5nZS5udmlkaWEuY29tPiIKICB2ZXJzaW9uOiAiMS4wIgogIHRhZ3M6IFtudmNmLCBzZWxm" + + "LW1hbmFnZWQsIGhlbG1maWxlLCBzZWxmLWhvc3RlZCwgY29udHJvbC1wbGFuZSwgY29tcHV0ZS1w" + + "bGFuZSwgY2xpLXByb2ZpbGUsIGluc3RhbGxhdGlvbiwgZGVwbG95bWVudCwgcHVsbC1zZWNyZXRz" + + "XQogIGxhbmd1YWdlczogW2Jhc2gsIHlhbWxdCiAgZnJhbWV3b3JrczogW2hlbG1maWxlLCBoZWxt" + + "LCBrdWJlY3RsXQogIGRvbWFpbjogY2xvdWQtaW5mcmFzdHJ1Y3R1cmUKLS0tCgojIE5WQ0YgU2Vs" + + "Zi1NYW5hZ2VkIFN0YWNrIE9wZXJhdGlvbnMKCk9wZXJhdGlvbmFsIGd1aWRlIGZvciBtYXRjaGlu" + + "ZyBOVkNGIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgSGVsbWZpbGUgYnVuZGxlcy4K" + + "CiMjIEluc3RydWN0aW9ucwoKVXNlIHRoaXMgc2tpbGwgZm9yIGluc3RhbGwsIHVwZ3JhZGUsIG9y" + + "IHRlYXJkb3duIHdvcmsgaW4gbWF0Y2hpbmcgYG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrYCBhbmQg" + + "YG52Y2YtY29tcHV0ZS1wbGFuZS1zdGFja2AgYnVuZGxlczsga2VlcCBIZWxtZmlsZSB2YWx1ZXMg" + + "YW5kIENMSSBwcm9maWxlIGhhbmRvZmZzIHNlcGFyYXRlLiBGb3IgYGZ1bmN0aW9uVHlwZTogIkxM" + + "TSJgLCByZWFkIFtMTE0gRnVuY3Rpb24gRW5hYmxlbWVudF0ocmVmZXJlbmNlcy9oZWxtZmlsZS1z" + + "dHJ1Y3R1cmUubWQjbGxtLWZ1bmN0aW9uLWVuYWJsZW1lbnQpLgoKIyMgUHJlcmVxdWlzaXRlcwoK" + + "QXNrIGZvciB0aGUgZXh0cmFjdGVkIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgcGF0aC4gRm9y" + + "IHNwbGl0IGluc3RhbGxhdGlvbiwKYWxzbyByZXF1aXJlIHRoZSBtYXRjaGluZy12ZXJzaW9uIGBu" + + "dmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIHBhdGguIFZlcmlmeSBib3RoOgoKYGBgYmFzaApscyA8" + + "Y29udHJvbC1wbGFuZS1zdGFjaz4vaGVsbWZpbGUuZC8gPGNvbnRyb2wtcGxhbmUtc3RhY2s+L2Vu" + + "dmlyb25tZW50cy8gPGNvbnRyb2wtcGxhbmUtc3RhY2s+L3NlY3JldHMvIDxjb250cm9sLXBsYW5l" + + "LXN0YWNrPi9nbG9iYWwueWFtbC5nb3RtcGwKbHMgPGNvbXB1dGUtcGxhbmUtc3RhY2s+L2hlbG1m" + + "aWxlLmQvIDxjb21wdXRlLXBsYW5lLXN0YWNrPi9lbnZpcm9ubWVudHMvIDxjb21wdXRlLXBsYW5l" + + "LXN0YWNrPi9nbG9iYWwueWFtbC5nb3RtcGwKYGBgCgpJZiBlaXRoZXIgZGlyZWN0b3J5IGlzIG1p" + + "c3NpbmcsIGRvd25sb2FkIG1hdGNoaW5nIGJ1bmRsZSB2ZXJzaW9ucyBmcm9tIE5HQzoKCmBgYGJh" + + "c2gKbmdjIHJlZ2lzdHJ5IHJlc291cmNlIGRvd25sb2FkLXZlcnNpb24gPG9yZz4vbnZjZi1zZWxm" + + "LW1hbmFnZWQtc3RhY2s6PHZlcnNpb24+Cm5nYyByZWdpc3RyeSByZXNvdXJjZSBkb3dubG9hZC12" + + "ZXJzaW9uIDxvcmc+L252Y2YtY29tcHV0ZS1wbGFuZS1zdGFjazo8dmVyc2lvbj4KYGBgCgpDb250" + + "cm9sLXBsYW5lIGNvbW1hbmRzIGJlbG93IGFzc3VtZSB0aGUgY29udHJvbC1wbGFuZSBidW5kbGUg" + + "cm9vdC4gU3BsaXQtZmxvdwpjb21tYW5kcyBhbmQgcm9vdCBzdWJzdGl0dXRpb24gYXJlIGluCltT" + + "cGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5l" + + "LWluc3RhbGxhdGlvbi5tZCkuCgojIyBCZWZvcmUgWW91IFN0YXJ0CgpWZXJpZnkgdG9vbGluZyBh" + + "bmQgY29udGV4dCBiZWZvcmUgYW55IG9wZXJhdGlvbjoKCmBgYGJhc2gKaGVsbWZpbGUgLS12ZXJz" + + "aW9uICAgIyBNdXN0IGJlIDEuMS54ICgxLjIuMCByZW1vdmVkIHNlcXVlbnRpYWwgbW9kZSkKaGVs" + + "bSB2ZXJzaW9uICAgICAgICAgIyBNdXN0IGJlID49IDMuMTIKaGVsbSBwbHVnaW4gbGlzdCAgICAg" + + "IyBNdXN0IGluY2x1ZGUgaGVsbS1kaWZmID49IDMuMTEKa3ViZWN0bCB2ZXJzaW9uICAgICAgIyBD" + + "bGllbnQgbXVzdCBiZSB3aXRoaW4gMSBtaW5vciB2ZXJzaW9uIG9mIGNsdXN0ZXIKYGBgCgpDb250" + + "cm9sLXBsYW5lIGNvbW1hbmRzIHJ1biBmcm9tIHRoZSBleHRyYWN0ZWQgYG52Y2Ytc2VsZi1tYW5h" + + "Z2VkLXN0YWNrL2Agcm9vdDoKCmBgYGJhc2gKY2QgcGF0aC90by9udmNmLXNlbGYtbWFuYWdlZC1z" + + "dGFjawpscyBoZWxtZmlsZS5kLyBlbnZpcm9ubWVudHMvIHNlY3JldHMvIGdsb2JhbC55YW1sLmdv" + + "dG1wbApgYGAKCklkZW50aWZ5IHRoZSBlbnZpcm9ubWVudCBmcm9tIGBlbnZpcm9ubWVudHMvPG5h" + + "bWU+LnlhbWxgIGFuZApgc2VjcmV0cy88bmFtZT4tc2VjcmV0cy55YW1sYDsgZm9yIEVLUywgdXNl" + + "IHRoZSBjYW5vbmljYWwKW0NTUCBFbmQtdG8tRW5kIEV4YW1wbGVdKGh0dHBzOi8vZG9jcy5udmlk" + + "aWEuY29tL252Y2YvdjAuNi4wLXJjL2NzcC1lbmQtdG8tZW5kLWV4YW1wbGUpLgoKIyMgSG93IFZh" + + "bHVlcyBGbG93CgpVbmRlcnN0YW5kaW5nIHZhbHVlIHByZWNlZGVuY2UgcHJldmVudHMgdGhlIG1v" + + "c3QgY29tbW9uIGNvbmZpZ3VyYXRpb24gbWlzdGFrZXMuCgpgYGB0ZXh0CmVudmlyb25tZW50cy9i" + + "YXNlLnlhbWwgICAgICAgICAgKGRlZmF1bHRzKQogICAgLT4gbWVyZ2VkIHdpdGgKZW52aXJvbm1l" + + "bnRzLzxlbnY+LnlhbWwgICAgICAgICAoeW91ciBvdmVycmlkZXMpCiAgICAtPiBjb25zdW1lZCBi" + + "eQpnbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgIChHbyB0ZW1wbGF0ZSwgY29uc3RydWN0" + + "cyBwZXItY2hhcnQgdmFsdWVzKQogICAgLT4gY29uc3VtZWQgYnkKc2VjcmV0cy88ZW52Pi1zZWNy" + + "ZXRzLnlhbWwgICAgICAoc2Vuc2l0aXZlIHZhbHVlcykKICAgIC0+IG92ZXJyaWRkZW4gYnkKcmVs" + + "ZWFzZSBpbmxpbmUgdmFsdWVzOiBibG9ja3MgICAoaGlnaGVzdCBwcmVjZWRlbmNlKQpgYGAKCkNy" + + "aXRpY2FsOiBgZ2xvYmFsLnlhbWwuZ290bXBsYCBvbmx5IHBhc3NlcyB0aHJvdWdoIHNwZWNpZmlj" + + "IGtleXMgdG8gZWFjaCBjaGFydCAoaW1hZ2UgcmVnaXN0cmllcywgbm9kZSBzZWxlY3RvcnMsIHN0" + + "b3JhZ2UsIHJlcGxpY2EgY291bnRzKS4gU2V0dGluZyBhbiBhcmJpdHJhcnkgY2hhcnQgdmFsdWUg" + + "aW4gdGhlIGVudmlyb25tZW50IGZpbGUgd2lsbCBiZSBzaWxlbnRseSBpZ25vcmVkIGlmIGBnbG9i" + + "YWwueWFtbC5nb3RtcGxgIGRvZXMgbm90IHByb3BhZ2F0ZSBpdC4KClRvIG92ZXJyaWRlIGFyYml0" + + "cmFyeSBjaGFydCB2YWx1ZXMsIHVzZSBhIGhlbG1maWxlIHJlbGVhc2UgYHZhbHVlczpgIGJsb2Nr" + + "LiBTZWUgW092ZXJyaWRpbmcgSGVsbSBDaGFydCBWYWx1ZXNdKCNvdmVycmlkaW5nLWhlbG0tY2hh" + + "cnQtdmFsdWVzKS4KCiMjIENsZWFuIEluc3RhbGxhdGlvbgoKIyMjIDEuIENyZWF0ZSBuYW1lc3Bh" + + "Y2VzIGFuZCBpbWFnZSBwdWxsIHNlY3JldHMgKGlmIHVzaW5nIGEgcHJpdmF0ZSByZWdpc3RyeSkK" + + "CmBgYGJhc2gKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkt" + + "a2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCBjcmVh" + + "dGUgbmFtZXNwYWNlICIkbnMiIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBw" + + "bHkgLWYgLQpkb25lCgojIE9ubHkgaWYgcHVsbGluZyBmcm9tIGEgcHJpdmF0ZSByZWdpc3RyeSAo" + + "ZS5nLiwgTkdDIG52Y3IuaW8pCmV4cG9ydCBOR0NfQVBJX0tFWT0iPHlvdXIta2V5PiIKZm9yIG5z" + + "IGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZh" + + "dWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCBjcmVhdGUgc2VjcmV0IGRvY2tl" + + "ci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAg" + + "IC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAgLS1kb2NrZXItcGFzc3dvcmQ9" + + "IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIgXAogICAgLS1kcnktcnVuPWNs" + + "aWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCmRvbmUKYGBgCgpJZiB1c2luZyBwdWxs" + + "IHNlY3JldHMsIHlvdSBtdXN0IGFsc28gY29uZmlndXJlIGVhY2ggaGVsbWZpbGUgcmVsZWFzZSB0" + + "byByZWZlcmVuY2UgdGhlbS4gU2VlIFtJbWFnZSBQdWxsIFNlY3JldHNdKCNpbWFnZS1wdWxsLXNl" + + "Y3JldHMpLgoKIyMjIDIuIEF1dGhlbnRpY2F0ZSBoZWxtIHRvIHlvdXIgY2hhcnQgcmVnaXN0cnkK" + + "CkJvdGggYGRvY2tlciBsb2dpbmAgQU5EIGBoZWxtIHJlZ2lzdHJ5IGxvZ2luYCBhcmUgcmVxdWly" + + "ZWQgZm9yIE5HQy4gSGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0byBwdWxsIE9DSSBj" + + "aGFydHMsIHNvIHRoZSBoZWxtIGNyZWRlbnRpYWwgc3RvcmUgbXVzdCBiZSBhdXRoZW50aWNhdGVk" + + "IHNlcGFyYXRlbHkuCgpgYGBiYXNoCiMgTkdDIC0tIGJvdGggY29tbWFuZHMgYXJlIHJlcXVpcmVk" + + "CmRvY2tlciBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tlbicgLXAgIiROR0NfQVBJX0tFWSIK" + + "aGVsbSByZWdpc3RyeSBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tlbicgLXAgIiROR0NfQVBJ" + + "X0tFWSIKCiMgRUNSCmF3cyBlY3IgZ2V0LWxvZ2luLXBhc3N3b3JkIC0tcmVnaW9uIDxyZWdpb24+" + + "IHwgXAogIGhlbG0gcmVnaXN0cnkgbG9naW4gLS11c2VybmFtZSBBV1MgLS1wYXNzd29yZC1zdGRp" + + "biA8YWNjb3VudD4uZGtyLmVjci48cmVnaW9uPi5hbWF6b25hd3MuY29tCmBgYAoKPiBOb3RlOiBg" + + "aGVsbSByZWdpc3RyeSBsb2dpbmAga2VlcHMgb25seSB0aGUgbGFzdCBsb2dpbiBwZXIgaG9zdCAo" + + "bXVsdGktb3JnIGdvdGNoYSkuCj4gVGhlIHN0YWNrIGFuZCB0aGUgY2FjaGVzIHNwYW4gc2V2ZXJh" + + "bCBOR0Mgb3JncyB0aGF0IG5lZWQgZGlmZmVyZW50IGtleXMsIGJ1dCB0aGV5IGFsbAo+IGxpdmUg" + + "dW5kZXIgdGhlIG9uZSBob3N0IGBudmNyLmlvYC4gQSBzZWNvbmQgYGhlbG0gcmVnaXN0cnkgbG9n" + + "aW4gbnZjci5pb2AgKG9yCj4gYGRvY2tlciBsb2dpbmApIHdpdGggYSBkaWZmZXJlbnQga2V5IHNp" + + "bGVudGx5IG92ZXJ3cml0ZXMgdGhlIGZpcnN0LCBzbyBwdWxscyBmb3IgdGhlCj4gZmlyc3Qgb3Jn" + + "IHRoZW4gZmFpbCB3aXRoIGEgbWlzbGVhZGluZyBgNDAzIEFjY2VzcyBEZW5pZWRgIChub3QgYSA0" + + "MDE6IHRoZSBhdXRoCj4gc3VjY2VlZGVkLCBpdCdzIHRoZSB3cm9uZy1vcmcga2V5KS4gSWYgeW91" + + "IHB1bGwgY2hhcnRzL2ltYWdlcyBmcm9tIG1vcmUgdGhhbiBvbmUgb3JnLAo+IGVpdGhlciByZS1y" + + "dW4gdGhlIGxvZ2luIHdpdGggdGhlIGNvcnJlY3Qga2V5IGltbWVkaWF0ZWx5IGJlZm9yZSBlYWNo" + + "IHB1bGwsIG9yIHBhc3MKPiBgLS11c2VybmFtZSAnJG9hdXRodG9rZW4nIC0tcGFzc3dvcmQgPGtl" + + "eT5gIHBlciBgaGVsbSBwdWxsYCBpbnZvY2F0aW9uIGluc3RlYWQgb2YgcmVseWluZwo+IG9uIHRo" + + "ZSBzdG9yZWQgbG9naW4uIChQdWxsaW5nIGV2ZXJ5dGhpbmcgZnJvbSBhIHNpbmdsZSByZWdpc3Ry" + + "eSBtaXJyb3IgYXZvaWRzIHRoaXMKPiBlbnRpcmVseS4pCgojIyMgMmIuIChSZWNvbW1lbmRlZCkg" + + "UHVsbCBmcm9tIGEgcmVnaXN0cnkgdGhlIGNsdXN0ZXIgYXV0aGVudGljYXRlcyB0byBhdXRvbWF0" + + "aWNhbGx5CgpJZiB5b3UgbWlycm9yIHRoZSBOVkNGIGltYWdlcyBpbnRvIGEgcmVnaXN0cnkgdGhh" + + "dCB0aGUgY2x1c3RlciBjYW4gcHVsbCBmcm9tIHdpdGhvdXQgYW4KZXhwbGljaXQgaW1hZ2UgcHVs" + + "bCBzZWNyZXQgKGZvciBleGFtcGxlLCBhIHJlZ2lzdHJ5IHdoZXJlIHRoZSBub2RlIG9yIHdvcmts" + + "b2FkIGlkZW50aXR5IGlzCmdyYW50ZWQgcHVsbCBhY2Nlc3MgYXV0b21hdGljYWxseSksIHBvaW50" + + "IHRoZSBzdGFjayBhdCBpdCBhbmQgc2tpcCB0aGUgY3JlZGVudGlhbCBzdGVwcwphYm92ZS4KCjEu" + + "IFBvaW50IHRoZSBzdGFjayBhdCB0aGUgbWlycm9yIGluIGBlbnZpcm9ubWVudHMvPGVudj4ueWFt" + + "bGA6CgogICBgYGB5YW1sCiAgIGdsb2JhbDoKICAgICBpbWFnZToKICAgICAgIHJlZ2lzdHJ5OiA8" + + "eW91ci1yZWdpc3RyeT4gICAgICAgICAgICAjIGUuZy4gcmVnaXN0cnkuZXhhbXBsZS5jb20KICAg" + + "ICAgIHJlcG9zaXRvcnk6IDxtaXJyb3Itc3ViLXBhdGg+CiAgICAgaGVsbToKICAgICAgIHNvdXJj" + + "ZXM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbmx5IGlmIHlvdSBhbHNvIG1pcnJv" + + "cmVkIHRoZSBoZWxtIGNoYXJ0cwogICAgICAgICByZWdpc3RyeTogPHlvdXItcmVnaXN0cnk+CiAg" + + "ICAgICAgIHJlcG9zaXRvcnk6IDxtaXJyb3Itc3ViLXBhdGg+CiAgIGBgYAoKICAgPiBUaGUgbWFu" + + "aWZlc3QgaGFzIGEgbWl4IG9mIE9DSSBhbmQgbm9uLU9DSSBhcnRpZmFjdHMsIHNvIGNvbnZlcnQg" + + "bm9uLU9DSSBjaGFydHMgYmVmb3JlCiAgID4gbWlycm9yaW5nLiBDb250YWluZXIgaW1hZ2VzIChg" + + "bnZjci5pby8uLi5gKSBhcmUgYWxyZWFkeSBPQ0kgYW5kIG1pcnJvciBhcy1pcy4gU29tZSBIZWxt" + + "CiAgID4gY2hhcnRzLCB0aG91Z2gsIGFyZSBwdWJsaXNoZWQgdG8gYW4gYGh0dHBzOi8vYCBIZWxt" + + "IHJlcG9zaXRvcnkgKGZvciBleGFtcGxlCiAgID4gYGhlbG0ubmdjLm52aWRpYS5jb21gKS4gVGhv" + + "c2UgYXJlIG5vdCBPQ0kgYW5kIGNhbm5vdCBiZSByZXNvbHZlZCBieSBgZ2xvYmFsLmhlbG0uc291" + + "cmNlc2AKICAgPiAoT0NJKSBvciBtaXJyb3JlZCBkaXJlY3RseS4gQmVmb3JlIHBvaW50aW5nIHRo" + + "ZSBzdGFjayBhdCB5b3VyIG1pcnJvciwgY29udmVydCBlYWNoCiAgID4gYGh0dHBzOi8vYCBjaGFy" + + "dCB0byBPQ0k6IGBoZWxtIHJlcG8gYWRkYC9gaGVsbSBwdWxsYCB0aGUgYC50Z3pgLCB0aGVuCiAg" + + "ID4gYGhlbG0gcHVzaCA8Y2hhcnQ+LnRneiBvY2k6Ly88eW91ci1yZWdpc3RyeT4vPG1pcnJvci1z" + + "dWItcGF0aD5gLiBPbmx5IE9DSSBjaGFydHMgY2FuIGxpdmUKICAgPiB1bmRlciBgZ2xvYmFsLmhl" + + "bG0uc291cmNlc2AuCgoyLiBTa2lwIHRoZSBjcmVkZW50aWFsIHN0ZXBzIGFib3ZlLiBXaGVuIHRo" + + "ZSBjbHVzdGVyIGF1dGhlbnRpY2F0ZXMgdG8gdGhlIHJlZ2lzdHJ5CiAgIGF1dG9tYXRpY2FsbHkg" + + "KHRoZSBub2RlIG9yIHdvcmtsb2FkIGlkZW50aXR5IGhhcyBwdWxsIGFjY2VzcyksIHRoZSBwdWxs" + + "IG5lZWRzIG5vCiAgIEt1YmVybmV0ZXMgc2VjcmV0LCBzbyB5b3UgZG8gbm90IG5lZWQ6IHRoZSBw" + + "ZXItbmFtZXNwYWNlIGBudmNyLWNyZWRzYCBmcm9tIHN0ZXAgMQogICAoc3RpbGwgY3JlYXRlIHRo" + + "ZSBuYW1lc3BhY2VzLCBqdXN0IG5vdCB0aGUgc2VjcmV0KSwgdGhlIGBnbG9iYWwuaW1hZ2VQdWxs" + + "U2VjcmV0c2AgZW50cnksCiAgIG9yIHRoZSBgZG9ja2VyIGxvZ2luYC9gaGVsbSByZWdpc3RyeSBs" + + "b2dpbiBudmNyLmlvYCBmcm9tIHN0ZXAgMi4KCiAgID4gT25lIHJlc2lkdWFsIGNyZWRlbnRpYWw6" + + "IG52Y2YtYXBpIHN0aWxsIHZhbGlkYXRlcyB0aGUgdXNlciBmdW5jdGlvbiBpbWFnZSBhdAogICA+" + + "IGBmdW5jdGlvbiBjcmVhdGVgIHZpYSB0aGUgYWNjb3VudCByZWdpc3RyeSBjcmVkZW50aWFsLCBz" + + "byB0aGF0IGNyZWRlbnRpYWwgbXVzdCBwb2ludCBhdAogICA+IHdoaWNoZXZlciByZWdpc3RyeSBo" + + "b2xkcyB0aGUgdXNlciBpbWFnZSAoc2V0IGl0IHRvIHlvdXIgbWlycm9yIGlmIHRoZSBpbWFnZSBp" + + "cyBtaXJyb3JlZAogICA+IHRoZXJlKS4KCiMjIyAzLiBTZXQgdGhlIHJvdXRlIGRvbWFpbgoKYGds" + + "b2JhbC5kb21haW5gIHNldHMgdGhlIGhvc3RuYW1lIHN1ZmZpeCBmb3Igcm91dGVzIHN1Y2ggYXMg" + + "YGFwaS48ZG9tYWluPmAuIEl0IGRvZXMgbm90IGNvbmZpZ3VyZSB0aGUgR2F0ZXdheSBvciBpdHMg" + + "bG9hZCBiYWxhbmNlci4gUXVlcnkgdGhlIGV4YWN0IGV4aXN0aW5nIEdhdGV3YXk6CgpgYGBiYXNo" + + "CkdBVEVXQVlfQUREUkVTUz0kKGt1YmVjdGwgZ2V0IGdhdGV3YXkgPGdhdGV3YXktbmFtZT4gLW4g" + + "PGdhdGV3YXktbmFtZXNwYWNlPiAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBdLnZh" + + "bHVlfScpCnRlc3QgLW4gIiRHQVRFV0FZX0FERFJFU1MiCmBgYAoKVGhlIGFkZHJlc3MgbWF5IGJl" + + "IGEgaG9zdG5hbWUgb3IgSVAuIENsb3VkIHByb3ZpZGVyIGFuZCBHYXRld2F5IGNvbmZpZ3VyYXRp" + + "b24gZGV0ZXJtaW5lIHRoZSBsb2FkIGJhbGFuY2VyIHR5cGUgYW5kIGFkZHJlc3MgZm9ybWF0LiBU" + + "aGUgc2VsZi1tYW5hZ2VkIHN0YWNrIGRvZXMgbm90IHNlbGVjdCBlaXRoZXIuCgpGb3IgdGVtcG9y" + + "YXJ5IHRlc3Rpbmcgd2l0aG91dCBETlMsIHVzZSBhIHN0YWJsZSByZXNlcnZlZCBzdWZmaXggc3Vj" + + "aCBhcyBgZ2xvYmFsLmRvbWFpbjogIm52Y2YudGVzdCJgLCBjb25uZWN0IHRvIGBHQVRFV0FZX0FE" + + "RFJFU1NgLCBhbmQgc2VuZCBgSG9zdDogYXBpLm52Y2YudGVzdGAuIEZvciBwcm9kdWN0aW9uLCB1" + + "c2UgeW91ciBiYXNlIEROUyBkb21haW4gYW5kIHBvaW50IGl0cyByb3V0ZSByZWNvcmRzIHRvIGBH" + + "QVRFV0FZX0FERFJFU1NgLiBJZiB0aGUgZW5kcG9pbnQgbGF0ZXIgY2hhbmdlcywga2VlcCBgZ2xv" + + "YmFsLmRvbWFpbmAgc3RhYmxlIGFuZCB1cGRhdGUgb25seSBETlMgb3IgdGhlIGNsaWVudCBkZXN0" + + "aW5hdGlvbi4gU2VlIEV4YW1wbGUgNCBpbiBbZXhhbXBsZXMubWRdKGV4YW1wbGVzLm1kKS4KCiMj" + + "IyA0LiBQcmV2aWV3IGFuZCBkZXBsb3kKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4g" + + "aGVsbWZpbGUgdGVtcGxhdGUgICAjIFByZXZpZXcgcmVuZGVyZWQgbWFuaWZlc3RzCkhFTE1GSUxF" + + "X0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIHN5bmMgICAgICAgIyBEZXBsb3kKYGBgCgo+IFNldCBC" + + "T1RIIENhc3NhbmRyYSBwYXNzd29yZHMgaW4gdGhlIHNlY3JldHMgZmlsZS4gVGhlIHNlY3JldHMg" + + "ZmlsZSBkb2N1bWVudHMKPiBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgLCBidXQgdGhlIGNh" + + "c3NhbmRyYSBjaGFydCBoYXMgYSBzZWNvbmQgY3JlZGVudGlhbCwKPiBgY2Fzc2FuZHJhLnNlcnZp" + + "Y2VSb2xlUGFzc3dvcmRgLCB0aGF0IGRlZmF1bHRzIHRvIGBjaEBuZzNtM2AuIElmIHlvdSBzZXQg" + + "b25seQo+IGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAsIHRoZSBzZXJ2aWNlIHJvbGUga2Vl" + + "cHMgdGhhdCBkZWZhdWx0IGFuZCBldmVyeSBEQi1iYWNrZWQKPiBzZXJ2aWNlIGNyYXNoLWxvb3Bz" + + "IHdpdGggYEJhZCBjcmVkZW50aWFsc2Agb25jZSBpdCB0cmllcyB0byBhdXRoZW50aWNhdGUuIFNl" + + "dAo+IGBjYXNzYW5kcmEuc2VydmljZVJvbGVQYXNzd29yZGAgdG8gdGhlIHNhbWUgdmFsdWUgYXMg" + + "YERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYC4KCiMjIyA1LiBEZXBsb3ltZW50IHBoYXNlcwoK" + + "SGVsbWZpbGUgZGVwbG95cyBpbiBvcmRlciB3aXRoIGRlcGVuZGVuY2llczoKCnwgUGhhc2UgfCBT" + + "ZWxlY3RvciB8IFNlcnZpY2VzIHwgV2FpdCB0aW1lIHwKfC0tLS0tLS18LS0tLS0tLS0tLXwtLS0t" + + "LS0tLS0tfC0tLS0tLS0tLS0tfAp8IDEgfCBgcmVsZWFzZS1ncm91cD1kZXBlbmRlbmNpZXNgIHwg" + + "TkFUUywgT3BlbkJhbywgQ2Fzc2FuZHJhIHwgNS0xMCBtaW4gfAp8IDIgfCBgcmVsZWFzZS1ncm91" + + "cD1zZXJ2aWNlc2AgfCBBUEksIFNJUywgRVNTLCBpbnZvY2F0aW9uLCBncnBjLXByb3h5LCBub3Rh" + + "cnksIGFwaS1rZXlzLCBvcHRpb25hbCBMTE0gZ2F0ZXdheS9yb3V0ZXIsIG9wdGlvbmFsIFZhbml0" + + "eSBHYXRld2F5LCBOVkNGIFVJIHdoZW4gdGhlIHN0YWNrIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGFk" + + "ZG9uIHwgNS0xMCBtaW4gfAp8IDMgfCBgcmVsZWFzZS1ncm91cD1pbmdyZXNzYCB8IEdhdGV3YXkg" + + "cm91dGVzIHwgMS0yIG1pbiB8CnwgNCB8IGByZWxlYXNlLWdyb3VwPW9ic2VydmFiaWxpdHlgIHwg" + + "T2JzZXJ2YWJpbGl0eSBzdGFjayAoaWYgZW5hYmxlZCkgfCAxLTIgbWluIHwKCk1vbml0b3IgaW4g" + + "YSBzZXBhcmF0ZSB0ZXJtaW5hbDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgcG9kcyAtQSAtdwpgYGAK" + + "CiMjIyA2LiBFbmFibGUgVmFuaXR5IEdhdGV3YXkgKG9wdGlvbmFsKQoKVmFuaXR5IEdhdGV3YXkg" + + "aXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBhbmQgaXMgb25seSBuZWVkZWQgZm9yIGN1c3RvbWVyLWZh" + + "Y2luZwpob3N0bmFtZXMgb3IgcGF0aCBtYXBwaW5ncyBpbiBmcm9udCBvZiB0aGUgc3RhbmRhcmQg" + + "TlZDRiBBUEkgYW5kIGludm9jYXRpb24Kcm91dGVzLiBJdCBpcyBhdmFpbGFibGUgb25seSBpbiBz" + + "dGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhlIFZhbml0eSBHYXRld2F5CmFkZG9uLiBJZiB0" + + "aGUgZXh0cmFjdGVkIHN0YWNrIHBhY2thZ2UgZG9lcyBub3QgY29udGFpbiBhIGB2YW5pdHktZ2F0" + + "ZXdheWAKcmVsZWFzZSBhbmQgYHZhbml0eUdhdGV3YXlgIHJvdXRlIHZhbHVlcywgc2tpcCB0aGVz" + + "ZSBjb21tYW5kcyBhbmQgdXNlIGEgbmV3ZXIKc3RhY2sgcGFja2FnZSB0aGF0IGluY2x1ZGVzIHRo" + + "ZW0uCgpJZiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGUgYWRkb24sIGVuYWJsZSBpdCBp" + + "bgpgZW52aXJvbm1lbnRzLzxlbnYtbmFtZT4ueWFtbGA6CgpgYGB5YW1sCmFkZG9uczoKICB2YW5p" + + "dHlHYXRld2F5OgogICAgZW5hYmxlZDogdHJ1ZQogICAgbWFwcGluZ0NvbmZpZzoge30KYGBgCgpU" + + "aGUgZGVmYXVsdCByb3V0ZSBob3N0IGlzIGB2YW5pdHkuPGRvbWFpbj5gIGFuZCB0aGUgYmFja2Vu" + + "ZCBpcwpgdmFuaXR5LWdhdGV3YXkubnZjZjo4MDgwYC4gUHV0IGRlcGxveW1lbnQtc3BlY2lmaWMg" + + "aG9zdCBhbmQgcGF0aCBtYXBwaW5ncyB1bmRlcgpgYWRkb25zLnZhbml0eUdhdGV3YXkubWFwcGlu" + + "Z0NvbmZpZ2AuIElmIHlvdSBuZWVkIGN1c3RvbSB2YW5pdHkgaG9zdHMgaW5zdGVhZCBvZgpgdmFu" + + "aXR5Ljxkb21haW4+YCwgdXNlIHRoZSByb3V0ZSBob3N0bmFtZSBvdmVycmlkZXMgc3VwcG9ydGVk" + + "IGJ5IHRoZSBzdGFjawpwYWNrYWdlIGFuZCBjcmVhdGUgbWF0Y2hpbmcgRE5TIHJlY29yZHMuCgpB" + + "ZnRlciBjb25maXJtaW5nIHRoZSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBgdmFuaXR5LWdhdGV3YXlg" + + "IHJlbGVhc2UsIHByZXZpZXcgYW5kCmFwcGx5IHRoZSBzZXJ2aWNlIGFuZCByb3V0ZToKCmBgYGJh" + + "c2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPXZhbml0" + + "eS1nYXRld2F5IHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0tc2Vs" + + "ZWN0b3IgbmFtZT12YW5pdHktZ2F0ZXdheSBzeW5jCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhl" + + "bG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1pbmdyZXNzIHN5bmMKYGBgCgpWZXJpZnkg" + + "dGhlIHJvdXRlIG9ubHkgd2hlbiB0aGUgYWRkb24gaXMgcHJlc2VudCBhbmQgZW5hYmxlZDoKCmBg" + + "YGJhc2gKa3ViZWN0bCBnZXQgZGVwbG95LHN2YyAtbiBudmNmIC1sIGFwcC5rdWJlcm5ldGVzLmlv" + + "L25hbWU9dmFuaXR5LWdhdGV3YXkKa3ViZWN0bCBnZXQgaHR0cHJvdXRlIC1BIHwgZ3JlcCAtaSB2" + + "YW5pdHkKY3VybCAtSCAiSG9zdDogdmFuaXR5Ljxkb21haW4+IiAiaHR0cDovLzxnYXRld2F5LWFk" + + "ZHJlc3M+L2hlYWx0aCIKYGBgCgpEbyBub3QgZW5hYmxlIFZhbml0eSBHYXRld2F5IGZvciBzdGFu" + + "ZGFyZCBBUEksIEFQSSBLZXlzLCBpbnZvY2F0aW9uLCBMTE0KaW52b2NhdGlvbiwgb3IgZ1JQQyB0" + + "cmFmZmljLiBUaG9zZSByb3V0ZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBiYXNlIGdhdGV3YXkKcm91" + + "dGVzLgoKIyMjIDcuIEVuYWJsZSBOVkNGIFVJIChvcHRpb25hbCkKCk5WQ0YgVUkgaXMgYW4gb3B0" + + "aW9uYWwsIGN1c3RvbWVyLWZhY2luZyBhZG1pbi1wYW5lbCBVSS4gSXQgaXMgZGlzYWJsZWQgYnkK" + + "ZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRl" + + "IHRoZSBOVkNGIFVJIGFkZG9uLiBJZgp5b3VyIGV4dHJhY3RlZCBzdGFjayBwYWNrYWdlIGRvZXMg" + + "bm90IGNvbnRhaW4gYSBgbnZjZi11aWAgcmVsZWFzZSBhbmQgYG52Y2ZVaWAKcm91dGUgdmFsdWVz" + + "LCBza2lwIHRoaXMgc2VjdGlvbi4gVGhlIE5WQ0YgVUkgYWRtaW4gcGFuZWwgaXMgY3VycmVudGx5" + + "CnVuYXV0aGVudGljYXRlZDsgZG8gbm90IGV4cG9zZSBpdCB0byB0aGUgcHVibGljIGludGVybmV0" + + "LgoKRm9yIGVuYWJsZW1lbnQsIG5hbWVzcGFjZSBhbmQgcHVsbCBzZWNyZXQgc2V0dXAsIGFwcGx5" + + "LCBhbmQgdmVyaWZpY2F0aW9uIHN0ZXBzLApzZWUgW05WQ0YgVUkgQWRkb25dKHJlZmVyZW5jZXMv" + + "bnZjZi11aS1hZGRvbi5tZCkuCgojIyMgOC4gSW5zdGFsbCB0aGUgc2VwYXJhdGUgY29tcHV0ZS1w" + + "bGFuZSBzdGFjawoKVGhlIGNvbnRyb2wtcGxhbmUgc3RhY2sgZG9lcyBub3QgaW5zdGFsbCBjb21w" + + "dXRlLXBsYW5lIGNvbXBvbmVudHMuIEFmdGVyIGl0IGlzIGhlYWx0aHksIGNob29zZSBleGFjdGx5" + + "IG9uZSBjb21wdXRlLXBsYW5lIGhhbmRvZmY6CgotIEhlbG1maWxlIHZhbHVlcyBmbG93OiBhdXRo" + + "b3Igc2VwYXJhdGUgZW52aXJvbm1lbnQgZmlsZXMsIHRoZW4gcmVnaXN0ZXIgYW5kCiAgaW5zdGFs" + + "bCB3aXRoIHRoZSBjb21wdXRlLXBsYW5lIE1ha2VmaWxlLgotIENMSSBwcm9maWxlIGZsb3c6IHVz" + + "ZSB0aGUgcHJvZmlsZSBnZW5lcmF0ZWQgYnkgdGhlIENMSSBjb250cm9sLXBsYW5lIGluc3RhbGws" + + "CiAgdGhlbiBydW4gdGhlIGNvbXBsZXRlIENMSSByZWdpc3RlciBhbmQgaW5zdGFsbCBjb21tYW5k" + + "cy4KCkRvIG5vdCBtaXggdGhlc2UgaGFuZG9mZnMuIEZvbGxvdyBbU3BsaXQgQ29tcHV0ZS1QbGFu" + + "ZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQp" + + "CmZvciBjb21tYW5kcywgRUtTIHJvdXRpbmcsIHB1bGwgc2VjcmV0cywgdmVyaWZpY2F0aW9uLCBh" + + "bmQgdGVhcmRvd24gb3JkZXIuCgojIyBDbGVhbiBUZWFyZG93bgoKRGVzdHJveSBldmVyeSBjb21w" + + "dXRlIHBsYW5lIGJlZm9yZSB0aGUgY29udHJvbCBwbGFuZSwgdXNpbmcgdGhlIHRlYXJkb3duIGZv" + + "cgp0aGUgc2FtZSBoYW5kb2ZmOyBzZWUgW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9u" + + "XShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kI3RlYXJkb3duKS4KClNj" + + "b3BlOiBPbmx5IGRlc3Ryb3kgcmVsZWFzZXMgbWFuYWdlZCBieSB0aGlzIGNvbnRyb2wtcGxhbmUg" + + "aGVsbWZpbGUgc3RhY2suIFRoZSBOVkNGIHJlbGVhc2VzIGFyZTogYG5hdHNgLCBgb3BlbmJhby1z" + + "ZXJ2ZXJgLCBgY2Fzc2FuZHJhYCwgYGFwaS1rZXlzYCwgYHNpc2AsIGBhcGlgLCBgaW52b2NhdGlv" + + "bi1zZXJ2aWNlYCwgYGdycGMtcHJveHlgLCBgZXNzLWFwaWAsIGBub3Rhcnktc2VydmljZWAsIG9w" + + "dGlvbmFsIGB2YW5pdHktZ2F0ZXdheWAsIGBudmNmLXVpYCwgYGFkbWluLWlzc3Vlci1wcm94eWAs" + + "IGFuZCBgaW5ncmVzc2A7IGBjZXJ0LW1hbmFnZXJgIGlzIGluY2x1ZGVkIG9ubHkgd2hlbiBgY2Vy" + + "dE1hbmFnZXIuZW5hYmxlZDogdHJ1ZWAuIFRoZSBjb250cm9sLXBsYW5lIG5hbWVzcGFjZSBpbnZl" + + "bnRvcnkgYWxzbyBpbmNsdWRlcyBgY2VydC1tYW5hZ2VyYCwgYnV0IGRlZmF1bHQgbmFtZXNwYWNl" + + "IGNsZWFudXAgcHJlc2VydmVzIGl0LiBOYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRvZXMgbm90IHBy" + + "ZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEV4dGVybmFsIGNlcnQtbWFuYWdlciBtdXN0IHVzZSBg" + + "Y2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgOyBvdGhlcndpc2UgSGVsbWZpbGUgdHJlYXRzIHRo" + + "ZSByZWxlYXNlIGFzIHN0YWNrLW1hbmFnZWQuIERvIG5vdCBkZWxldGUgb3RoZXIgaGVsbSByZWxl" + + "YXNlcyBvciBuYW1lc3BhY2VzIG9uIHRoZSBjbHVzdGVyLgoKQmVmb3JlIGNvbnRyb2wtcGxhbmUg" + + "ZGVzdHJveSwgaWRlbnRpZnkgd2hldGhlciBjZXJ0LW1hbmFnZXIgaXMgZXh0ZXJuYWwuIEZvciBh" + + "biBleHRlcm5hbCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5l" + + "bmFibGVkOiBmYWxzZWAgYW5kIGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBhbiBpbnRlbmRlZCBz" + + "dGFjay1tYW5hZ2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUgYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6" + + "IHRydWVgLCB2ZXJpZnkgbWF0Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1ldGFkYXRhIGFuZCBh" + + "Ym9ydCBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQgZXZpZGVuY2UuIFByZXNlcnZlIHRoZSBuYW1l" + + "c3BhY2UgYnkgZGVmYXVsdDsgb25seSBwbGFuIGl0cyByZW1vdmFsIGFmdGVyIHZlcmlmeWluZyBu" + + "YW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQgZ2V0dGluZyBleHBsaWNpdCBjb25maXJtYXRpb24uCgoj" + + "IyMgU3RhbmRhcmQgdGVhcmRvd24KClJ1biBmcm9tIGluc2lkZSB0aGUgYG52Y2Ytc2VsZi1tYW5h" + + "Z2VkLXN0YWNrL2AgZGlyZWN0b3J5OgoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBo" + + "ZWxtZmlsZSBkZXN0cm95CmBgYAoKIyMjIERlbGV0ZSBuYW1lc3BhY2VzCgpgYGBiYXNoCmZvciBu" + + "cyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyBu" + + "dmNmLXVpIHZhdWx0LXN5c3RlbTsgZG8KICBrdWJlY3RsIGRlbGV0ZSBuYW1lc3BhY2UgIiRucyIg" + + "LS1pZ25vcmUtbm90LWZvdW5kCmRvbmUKYGBgCgojIyMgVmVyaWZ5IGNsZWFuCgpgYGBiYXNoCmt1" + + "YmVjdGwgZ2V0IG5zIHwgZ3JlcCAtRSAnKGNhc3NhbmRyYXxuYXRzfHZhdWx0fG52Y2Z8YXBpLWtl" + + "eXN8ZXNzfHNpcyknCiMgU2hvdWxkIHJldHVybiBlbXB0eQpgYGAKCiMjIE92ZXJyaWRpbmcgSGVs" + + "bSBDaGFydCBWYWx1ZXMKCiMjIyBFbnZpcm9ubWVudCBmaWxlIChsaW1pdGVkKQoKV29ya3Mgb25s" + + "eSBmb3Iga2V5cyB0aGF0IGBnbG9iYWwueWFtbC5nb3RtcGxgIHByb3BhZ2F0ZXMgKGUuZy4sIGBj" + + "YXNzYW5kcmEucmVwbGljYUNvdW50YCwgYGdsb2JhbC5zdG9yYWdlQ2xhc3NgLCBgZ2xvYmFsLmlt" + + "YWdlYCkuCgojIyMgUmVsZWFzZSB2YWx1ZXMgYmxvY2sgKGFueSBjaGFydCB2YWx1ZSkKCkVkaXQg" + + "dGhlIHJlbGVhc2UgaW4gYGhlbG1maWxlLmQvKi55YW1sLmdvdG1wbGAgYW5kIGFkZCBhIGB2YWx1" + + "ZXM6YCBibG9jay4gSW4gdGhlIGV4YW1wbGVzIGJlbG93LCBgPHByaXZhdGUtdmFsdWVzPmAgcmVm" + + "ZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUgc3RhY2sgcm9v" + + "dC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNzYW5kcmEKICB2ZXJzaW9uOiAwLjguMAogIGNvbmRpdGlv" + + "bjogY2Fzc2FuZHJhLmVuYWJsZWQKICBuYW1lc3BhY2U6IGNhc3NhbmRyYS1zeXN0ZW0KICA8PDog" + + "KmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAgLSAu" + + "Li88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52ICJIRUxNRklMRV9FTlYiIH19LXNlY3Jl" + + "dHMueWFtbAogICAgLSBjYXNzYW5kcmE6CiAgICAgICAgcmVzb3VyY2VzOgogICAgICAgICAgbGlt" + + "aXRzOgogICAgICAgICAgICBjcHU6ICI4IgogICAgICAgICAgICBtZW1vcnk6IDgxOTJNaQogICAg" + + "ICAgICAgcmVxdWVzdHM6CiAgICAgICAgICAgIGNwdTogIjIiCiAgICAgICAgICAgIG1lbW9yeTog" + + "NDA5Nk1pCmBgYAoKWUFNTCBtZXJnZSBnb3RjaGE6IFdoZW4gYSByZWxlYXNlIHVzZXMgYDw8OiAq" + + "ZGVwZW5kZW5jeWAgb3IgYGluaGVyaXRgLCBzcGVjaWZ5aW5nIGB2YWx1ZXM6YCByZXBsYWNlcyB0" + + "aGUgdGVtcGxhdGUncyB2YWx1ZXMgbGlzdC4gWW91IG11c3QgcmUtaW5jbHVkZSBgZ2xvYmFsLnlh" + + "bWwuZ290bXBsYCBhbmQgdGhlIHNlY3JldHMgZmlsZS4KCiMjIyBQcmV2aWV3IGFuZCBhcHBseSBh" + + "IHNpbmdsZSByZWxlYXNlCgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + + "bGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlICAjIFByZXZpZXcKSEVMTUZJTEVfRU5WPTxl" + + "bnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgc3luYyAgICAgICMgQXBwbHkK" + + "YGBgCgojIyBJbWFnZSBQdWxsIFNlY3JldHMKClRoZXJlIGFyZSB0aHJlZSBkaXN0aW5jdCBjcmVk" + + "ZW50aWFsIHR5cGVzLiBEbyBub3QgY29uZmxhdGUgdGhlbSwgYW5kIG1pbmQgdGhlCmZvcm1hdCBy" + + "dWxlIGJlbG93ICh0d28gb2YgdGhlbSBmYWlsIGV2ZW4gd2l0aCB0aGUgY29ycmVjdCBrZXkgaWYg" + + "dGhlIGZvcm1hdCBpcyB3cm9uZyk6Cgp8IHwgQ29udHJvbCBQbGFuZSBQdWxsIFNlY3JldHMgfCBB" + + "UEkgQm9vdHN0cmFwIFJlZ2lzdHJ5IENyZWRzIHwgU2lkZWNhciBJbWFnZS1QdWxsIFNlY3JldCB8" + + "CnwtLS18LS0tfC0tLXwtLS18CnwgUHVycG9zZSB8IEs4cyBwdWxscyBOVkNGIHNlcnZpY2UgaW1h" + + "Z2VzIHwgbnZjZi1hcGkgdmFsaWRhdGVzIHRoZSB1c2VyIGZ1bmN0aW9uIGltYWdlIGF0IGBmdW5j" + + "dGlvbiBjcmVhdGVgIHwgbnZjZi1hcGkgcHVsbHMgdGhlIHBsYXRmb3JtIHNpZGVjYXJzIGluamVj" + + "dGVkIGludG8gZXZlcnkgd29ya2VyIHBvZCB8CnwgV2hlcmUgfCBLOHMgYGRvY2tlci1yZWdpc3Ry" + + "eWAgU2VjcmV0cyArIEt5dmVybm8gQ2x1c3RlclBvbGljeSB8IGA8cHJpdmF0ZS12YWx1ZXM+Lzxl" + + "bnY+LXNlY3JldHMueWFtbGAgKGFjY291bnQtYm9vdHN0cmFwKSB8IGBOVkNGX0FQSV9TSURFQ0FS" + + "U19JTUFHRV9QVUxMX1NFQ1JFVGAgaW4gYDxlbnY+LXNlY3JldHMueWFtbGAgLT4gT3BlbkJhbyBg" + + "c2VydmljZXMvbnZjZi1hcGkva3Yvc2lkZWNhcnMvaW1hZ2UtcHVsbC1zZWNyZXRgIChmaWVsZCBg" + + "c2VjcmV0YCkgfAp8IEZvcm1hdCB8IHN0YW5kYXJkIGAuZG9ja2VyY29uZmlnanNvbmAgKGt1YmVj" + + "dGwgYnVpbGRzIGl0IGZvciB5b3UpIHwgYGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAgfCBg" + + "YmFzZTY0KCIkb2F1dGh0b2tlbjo8a2V5PiIpYCB8Cgo+IE5vdGU6IHRoZSBhY2NvdW50LWJvb3Rz" + + "dHJhcCBjcmVkIGFuZCB0aGUgc2lkZWNhciBzZWNyZXQgYXJlIE5PVCBhCj4gZG9ja2VyY29uZmln" + + "anNvbi4gVGhlIHNlY3JldHMgdGVtcGxhdGUgc2hpcHMgdGhlIHBsYWNlaG9sZGVyCj4gYFJFUExB" + + "Q0VfV0lUSF9CQVNFNjRfRE9DS0VSX0NSRURFTlRJQUxgLCB3aGljaCByZWFkcyBhcyAiYmFzZTY0" + + "IG9mIGEgZG9ja2VyY29uZmlnanNvbi4iCj4gSXQgaXNuJ3QuIEJvdGggdmFsdWVzIGFyZSBjb25z" + + "dW1lZCBhcyBhIHJhdyBkb2NrZXIgYGF1dGhgIHN0cmluZzogbnZjZi1hcGkgdGFrZXMgdGhlCj4g" + + "dmFsdWUgdmVyYmF0aW0gYW5kIGRyb3BzIGl0IGludG8gdGhlIGBhdXRoYCBmaWVsZCBvZiB0aGUg" + + "ZG9ja2VyY29uZmlnIGl0IGJ1aWxkcy4gU28gdGhlCj4gdmFsdWUgbXVzdCBiZSBgYmFzZTY0KCIk" + + "b2F1dGh0b2tlbjo8a2V5PiIpYCwgZS5nLiBgcHJpbnRmICckb2F1dGh0b2tlbjolcycgIiRLRVki" + + "IHwgb3BlbnNzbCBiYXNlNjQgLUFgLAo+IG5vdCBgYmFzZTY0KDxkb2NrZXJjb25maWdqc29uPilg" + + "Lgo+Cj4gLSBXcm9uZyBhY2NvdW50LWJvb3RzdHJhcCB2YWx1ZTogYGZ1bmN0aW9uIGNyZWF0ZWAg" + + "cmV0dXJucwo+ICAgIGA0MDAgIm11c3QgYmUgYmFzZTY0IGVuY29kZWQgdXNlcm5hbWU6cGFzc3dv" + + "cmQgZm9ybWF0ImAuCj4gLSBXcm9uZyBzaWRlY2FyIHZhbHVlOiBldmVyeSB3b3JrZXIncyBzaWRl" + + "Y2FyIHB1bGwgZ2V0cyBhIG1hbGZvcm1lZCBjcmVkZW50aWFsIGFuZAo+ICAgIGA0MDNgcywgcmVn" + + "YXJkbGVzcyBvZiB3aGljaCBrZXkgaXMgaW5zaWRlLiBUaGUgc3ltcHRvbSBsb29rcyBsaWtlIGEg" + + "YmFkIG9yIHdyb25nLW9yZwo+ICAgIGtleSwgYnV0IHRoZSBrZXkgaXMgZmluZSBhbmQgdGhlIGVu" + + "Y29kaW5nIGlzIHRoZSBidWcuIFRvIHJlcGFpciBhbiBhbHJlYWR5LWluc3RhbGxlZAo+ICAgIHN0" + + "YWNrIHdpdGhvdXQgYSBmdWxsIHJlLXN5bmM6Cj4KPiAgICBgYGBiYXNoCj4gICAgQVVUSD0kKHBy" + + "aW50ZiAnJG9hdXRodG9rZW46JXMnICIkS0VZIiB8IG9wZW5zc2wgYmFzZTY0IC1BKQo+ICAgIGJh" + + "byBrdiBwdXQgc2VydmljZXMvbnZjZi1hcGkva3Yvc2lkZWNhcnMvaW1hZ2UtcHVsbC1zZWNyZXQg" + + "c2VjcmV0PSIkQVVUSCIKPiAgICAjIGlmIE5WSURJQSBDbG91ZCBUYXNrcyBpcyBlbmFibGVkLCBy" + + "ZXBlYXQgZm9yIHNlcnZpY2VzL252Y3QtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0" + + "Cj4gICAga3ViZWN0bCByb2xsb3V0IHJlc3RhcnQgLW4gbnZjZiBkZXBsb3kvbnZjZi1hcGkgICAj" + + "IHBpY2tzIHVwIHRoZSBuZXcgc2lkZWNhciBjcmVkCj4gICAgYGBgCj4KPiBOb3RlIChtdWx0aS1v" + + "cmcpOiB3aGVuIHB1bGxpbmcgZnJvbSBOR0MgKG5vdCBhIG1pcnJvciksIHRoZSB1c2VyIGZ1bmN0" + + "aW9uIGltYWdlIGFuZAo+IHRoZSBwbGF0Zm9ybSBzaWRlY2FycyBvZnRlbiBsaXZlIGluIGRpZmZl" + + "cmVudCBudmNyLmlvIG9yZ3MsIGVhY2ggbmVlZGluZyBhIGRpZmZlcmVudAo+IGtleSwgc28gdGhl" + + "IGFjY291bnQtYm9vdHN0cmFwIGNyZWQgKGZ1bmN0aW9uIGltYWdlKSBhbmQgdGhlIHNpZGVjYXIg" + + "c2VjcmV0IChzaWRlY2FycykKPiBhcmUgZnJlcXVlbnRseSB0d28gZGlmZmVyZW50IGtleXMuIE1p" + + "cnJvcmluZyBldmVyeXRoaW5nIGludG8gYSBzaW5nbGUgcmVnaXN0cnkgdGhlCj4gY2x1c3RlciBh" + + "dXRoZW50aWNhdGVzIHRvIGF1dG9tYXRpY2FsbHkgY29sbGFwc2VzIHRoaXMgdG8gb25lIGNyZWRl" + + "bnRpYWwgcGF0aC4KCiMjIyBDb25maWd1cmluZyB3aXRoIEt5dmVybm8gKHJlY29tbWVuZGVkKQoK" + + "VXNlIGEgS3l2ZXJubyBtdXRhdGluZyBhZG1pc3Npb24gcG9saWN5IHRvIGF1dG9tYXRpY2FsbHkg" + + "aW5qZWN0IGBpbWFnZVB1bGxTZWNyZXRzYCBpbnRvIGFsbCBwb2RzIGluIE5WQ0YgbmFtZXNwYWNl" + + "cy4gVGhpcyB3b3JrcyB1bmlmb3JtbHkgZm9yIGFsbCBjaGFydHMgLS0gbm8gcGVyLWNoYXJ0IGNv" + + "bmZpZ3VyYXRpb24gb3IgaGVsbWZpbGUgbW9kaWZpY2F0aW9ucyBuZWVkZWQuCgpgYGBiYXNoCiMg" + + "MS4gSW5zdGFsbCBLeXZlcm5vCmhlbG0gcmVwbyBhZGQga3l2ZXJubyBodHRwczovL2t5dmVybm8u" + + "Z2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUKaGVsbSBpbnN0YWxsIGt5dmVybm8g" + + "a3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUtbmFtZXNwYWNlCgojIDIuIENyZWF0" + + "ZSBwdWxsIHNlY3JldCBpbiBlYWNoIG5hbWVzcGFjZQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3Vy" + + "LWtleT4iCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtl" + + "eXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgY3JlYXRl" + + "IHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9" + + "bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9j" + + "a2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAg" + + "IC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpkb25lCgojIDMu" + + "IEFwcGx5IHRoZSBLeXZlcm5vIENsdXN0ZXJQb2xpY3kKa3ViZWN0bCBhcHBseSAtZiBreXZlcm5v" + + "LWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAKClRoZSBwb2xpY3kgbXV0YXRlcyBldmVy" + + "eSBwb2QgYXQgYWRtaXNzaW9uIHRpbWUsIGFkZGluZyBgaW1hZ2VQdWxsU2VjcmV0czogW3tuYW1l" + + "OiBudmNyLWNyZWRzfV1gLiBWZXJpZnkgd2l0aDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgcG9kIC1u" + + "IDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gLW8ganNvbnBhdGg9J3suc3BlYy5pbWFnZVB1bGxTZWNy" + + "ZXRzfScKIyBTaG91bGQgc2hvdzogW3sibmFtZSI6Im52Y3ItY3JlZHMifV0KYGBgCgpOb3QgbmVl" + + "ZGVkIGlmIHVzaW5nIGEgQ1NQIGJ1aWx0LWluIGNyZWRlbnRpYWwgaGVscGVyIChlLmcuLCBFQ1Ig" + + "d2l0aCBJQU0gbm9kZSByb2xlcykuCgpGb3IgdGhlIEt5dmVybm8gcG9saWN5IFlBTUwgYW5kIHB1" + + "bGwgc2VjcmV0IGNyZWF0aW9uIHNjcmlwdCwgc2VlIFtyZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5t" + + "ZF0ocmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWQpLgoKIyMgRGVidWdnaW5nCgojIyMgUXVpY2sg" + + "c3RhdHVzIGNoZWNrCgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLW8gd2lkZSAgICAgICAg" + + "ICAgICAgICAgICAgICAgICMgQWxsIHBvZHMKaGVsbSBsaXN0IC1BICAgICAgICAgICAgICAgICAg" + + "ICAgICAgICAgICAgICAgICAgICAgICMgQWxsIGhlbG0gcmVsZWFzZXMKa3ViZWN0bCBnZXQgZXZl" + + "bnRzIC1uIDxucz4gLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcgICMgUmVjZW50IGV2ZW50cwpg" + + "YGAKCiMjIyBDb21tb24gZmFpbHVyZSBwYXR0ZXJucwoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBGaXgg" + + "fAp8LS0tLS0tLS0tfC0tLS0tLS18LS0tLS18CnwgYEltYWdlUHVsbEJhY2tPZmZgICsgYDQwMSBV" + + "bmF1dGhvcml6ZWRgIHwgTWlzc2luZyBvciB3cm9uZyBwdWxsIHNlY3JldCB8IENoZWNrIHNlY3Jl" + + "dCBleGlzdHMsIGNoZWNrIFNBIGhhcyBpbWFnZVB1bGxTZWNyZXRzIHwKfCBgSW5pdDowLzFgIHN0" + + "dWNrIG9uIHNlcnZpY2UgcG9kcyB8IFZhdWx0LWFnZW50IHdhaXRpbmcgZm9yIE9wZW5CYW8gfCBD" + + "aGVjayBPcGVuQmFvIHBvZHMgKyBtaWdyYXRpb24gam9iIHN0YXR1cyB8CnwgYEluaXQ6MC8xYCAr" + + "IGB2YXVsdC1hZ2VudC1pbml0YCBzaG93cyBgYXV0aC9qd3QvbG9naW5gIC0+IGA0MDAgLi4uIG5v" + + "IGtub3duIGtleSBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkIHRoZSB0b2tlbiBzaWduYXR1cmVgIHwg" + + "T3BlbkJhbyBKV1QgYXV0aCBjb25maWd1cmVkIHdpdGggYSBzdGF0aWMgcHVia2V5IGluc3RlYWQg" + + "b2YgdGhlIGNsdXN0ZXIncyBsaXZlIEpXS1MgLS0gdGhlIGJhc2UgZGVmYXVsdCBgb3BlbmJhby5t" + + "aWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkOiBmYWxzZWAuIENvbW1vbiBvbiBBS1Mg" + + "LyBhbnkgT0lEQy1pc3N1ZXIgY2x1c3RlciB8IFNldCBgb3BlbmJhby5taWdyYXRpb25zLmlzc3Vl" + + "ckRpc2NvdmVyeS5lbmFibGVkOiB0cnVlYCwgZGVsZXRlIGpvYiBgb3BlbmJhby1zZXJ2ZXItbWln" + + "cmF0aW9uc2AsIHJlLXN5bmMgYG9wZW5iYW8tc2VydmVyYC4gU2VlIFtyZWZlcmVuY2VzL2RlYnVn" + + "Z2luZy5tZF0ocmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQpICJJbml0OjAvMSBTdHVjayIgZml4ICM0" + + "LiB8CnwgYE9PTUtpbGxlZGAgb24gQ2Fzc2FuZHJhIHwgRGVmYXVsdCByZXNvdXJjZXMgdG9vIHNt" + + "YWxsIHwgT3ZlcnJpZGUgYGNhc3NhbmRyYS5yZXNvdXJjZXNgIHZpYSB2YWx1ZXMgYmxvY2sgfAp8" + + "IERCLWJhY2tlZCBzZXJ2aWNlcyBjcmFzaC1sb29wIGBCYWQgY3JlZGVudGlhbHNgIGNvbm5lY3Rp" + + "bmcgdG8gQ2Fzc2FuZHJhIHwgU2VjcmV0cyBmaWxlIHNldCBvbmx5IGBERUZBVUxUX0NBU1NBTkRS" + + "QV9QQVNTV09SRGA7IGBjYXNzYW5kcmEuc2VydmljZVJvbGVQYXNzd29yZGAgc3RpbGwgZGVmYXVs" + + "dHMgdG8gYGNoQG5nM20zYCB8IFNldCBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIGlu" + + "IHRoZSBzZWNyZXRzIGZpbGUgZXF1YWwgdG8gYERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYCwg" + + "dGhlbiByZS1zeW5jIGNhc3NhbmRyYSArIHRoZSBEQi1iYWNrZWQgc2VydmljZXMgfAp8IGBQZW5k" + + "aW5nYCBwb2RzIHwgTm9kZSBzZWxlY3RvciBtaXNtYXRjaCBvciBubyBzdG9yYWdlIGNsYXNzIHwg" + + "YGt1YmVjdGwgZGVzY3JpYmUgcG9kYCwgY2hlY2sgbGFiZWxzIGFuZCBzdG9yYWdlIHwKfCBIZWxt" + + "IHJlbGVhc2UgaW4gYGZhaWxlZGAgc3RhdGUgfCBGaXJzdCBpbnN0YWxsIGZhaWxlZCBwYXJ0d2F5" + + "IHwgYGhlbG1maWxlIGRlc3Ryb3lgIHRoZSByZWxlYXNlLCB0aGVuIGBzeW5jYCBhZ2FpbiB8Cnwg" + + "QWNjb3VudCBib290c3RyYXAgdGltZW91dCB8IFdyb25nIGJhc2U2NCBjcmVkZW50aWFscyBpbiBz" + + "ZWNyZXRzIGZpbGUgfCBDaGVjayBga3ViZWN0bCBsb2dzIGpvYi9udmNmLWFwaS1hY2NvdW50LWJv" + + "b3RzdHJhcCAtbiBudmNmYCB8CnwgZnVuY3Rpb24gLyBhY2NvdW50IGNhbGxzIHJldHVybiBgNDA0" + + "IFVua25vd24gY2xpZW50X2lkYCB8IFRoZSBhY2NvdW50LWJvb3RzdHJhcCBwb3N0LWluc3RhbGwg" + + "aG9vayBuZXZlciByYW46IHRoZSBgYXBpYCByZWxlYXNlIGluc3RhbGwgZmFpbGVkLCBvciB3YXMg" + + "cmVwYWlyZWQgd2l0aCBsaXZlIHBhdGNoZXMgaW5zdGVhZCBvZiBhIGNsZWFuIHJlLXN5bmMsIHNv" + + "IHRoZSBob29rIChhbmQgdGhlIGFjY291bnQpIHdhcyBza2lwcGVkIHwgVmVyaWZ5IGFuZCByZS1y" + + "dW4gdGhlIGhvb2s7IHNlZSBbVmVyaWZ5IHRoZSBhY2NvdW50IGJvb3RzdHJhcCByYW5dKCN2ZXJp" + + "ZnktdGhlLWFjY291bnQtYm9vdHN0cmFwLXJhbikgfAp8IFNlcnZpY2VzIGZhaWwgdG8gcmVhZCB2" + + "YXVsdCBzZWNyZXRzOyBgc2VjcmV0cy5qc29uYCBub3QgZm91bmQgfCBWYXVsdCBwYXRoIGhhcmRj" + + "b2RlZCB0byBgL2hvbWUvYXBwL3ZhdWx0L2AgaW4gYF9oZWxwZXJzLnRwbGA7IHRoZSBydW50aW1l" + + "IHJlc29sdmVzIHRoZSBtb3VudGVkIHBhdGggcmVsYXRpdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0" + + "b3J5IGFuZCBkcm9wcyB0aGUgbGVhZGluZyBgL2AgfCBPdmVycmlkZSBgcG9kQW5ub3RhdGlvbnNg" + + "IGFuZCBzZXQgYEpBVkFfVE9PTF9PUFRJT05TOiAiLUR1c2VyLmRpcj0vImAgaW4gcmVsZWFzZSB2" + + "YWx1ZXMgfAp8IE5BVFMgY29ubmVjdGlvbiBmYWlscyBhdCBzdGFydHVwOyBwbGFjZW1lbnQgdGFn" + + "IG1pc21hdGNoIHwgTkFUUyBzZXJ2ZXIgdGFncyBoYXJkY29kZWQgdG8gYGRjOm5jcGA7IGFwcCBk" + + "ZXJpdmVzIHRhZyBmcm9tIGBBV1NfUkVHSU9OYCAoZS5nLiwgYHVzLWdvdi13ZXN0LTFgKSB8IFNl" + + "dCBgQVdTX1JFR0lPTj1uY3BgIGFuZCBgTlZDRl9BV1NfUkVHSU9OPW5jcGAgaW4gZW52IGNvbmZp" + + "ZyB8CgojIyMgVmVyaWZ5IHRoZSBhY2NvdW50IGJvb3RzdHJhcCByYW4KClRoZSBkZWZhdWx0IGFj" + + "Y291bnQgaXMgY3JlYXRlZCBieSBhICoqYHBvc3QtaW5zdGFsbGAgaG9vayBvbiB0aGUgYGFwaWAg" + + "cmVsZWFzZSoqCihgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwYCBpbiBgbnZjZmApLiBC" + + "ZWNhdXNlIGl0IGlzIGEgcG9zdC1pbnN0YWxsIGhvb2ssIGl0IG9ubHkKZmlyZXMgb24gYSBzdWNj" + + "ZXNzZnVsIGBhcGlgIGluc3RhbGwuIElmIHRoYXQgaW5zdGFsbCBmYWlsZWQgYW5kIHlvdSByZXBh" + + "aXJlZCBpdCB3aXRoIGxpdmUKcGF0Y2hlcyAocmF0aGVyIHRoYW4gYSBjbGVhbiByZS1zeW5jKSwg" + + "dGhlIGhvb2sgbmV2ZXIgcnVucywgbm8gYWNjb3VudCBpcyBjcmVhdGVkLCBhbmQKZXZlcnkgc3Vi" + + "c2VxdWVudCBmdW5jdGlvbi9hY2NvdW50IGNhbGwgcmV0dXJucyBhIGNyeXB0aWMgYDQwNCBVbmtu" + + "b3duIGNsaWVudF9pZGAgd2l0aApub3RoaW5nIG9idmlvdXNseSB3cm9uZyBpbiB0aGUgcnVubmlu" + + "ZyBwb2RzLgoKVmVyaWZ5IGl0IHJhbiBhZnRlciB0aGUgZmlyc3Qgc3luYzoKCmBgYGJhc2gKa3Vi" + + "ZWN0bCBnZXQgam9iIC1uIG52Y2YgbnZjZi1hcGktYWNjb3VudC1ib290c3RyYXAgXAogIC1vIGpz" + + "b25wYXRoPSd7LnN0YXR1cy5zdWNjZWVkZWR9JyAgICMgZXhwZWN0IDEKYGBgCgpJZiB0aGUgam9i" + + "IGlzIGFic2VudCBvciBgMGAsIHJlLXJ1biBpdCBieSByZS1zeW5jaW5nIHRoZSBgYXBpYCByZWxl" + + "YXNlIHNvIHRoZSBob29rIGZpcmVzCmFnYWluIChkZWxldGUgdGhlIHByaW9yIGpvYiBmaXJzdCBp" + + "ZiBpdCBsaW5nZXJzIGluIGEgY29tcGxldGVkL2ZhaWxlZCBzdGF0ZSBhbmQgYmxvY2tzIHRoZQpo" + + "b29rKToKCmBgYGJhc2gKa3ViZWN0bCBkZWxldGUgam9iIC1uIG52Y2YgbnZjZi1hcGktYWNjb3Vu" + + "dC1ib290c3RyYXAgLS1pZ25vcmUtbm90LWZvdW5kCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmls" + + "ZSAtLXNlbGVjdG9yIG5hbWU9YXBpIHN5bmMKa3ViZWN0bCBsb2dzIC1uIG52Y2Ygam9iL252Y2Yt" + + "YXBpLWFjY291bnQtYm9vdHN0cmFwICAgIyBjb25maXJtIHRoZSBhY2NvdW50IHdhcyBjcmVhdGVk" + + "CmBgYAoKIyMgQWRkaXRpb25hbCBSZXNvdXJjZXMKCi0gSW5zdGFsbGF0aW9uOiBbZXhhbXBsZXMu" + + "bWRdKGV4YW1wbGVzLm1kKSwgdGhlIFtDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2Rv" + + "Y3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKSwgYW5k" + + "IFtzcGxpdCBjb21wdXRlLXBsYW5lIHdvcmtmbG93c10ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5l" + + "LWluc3RhbGxhdGlvbi5tZCkKLSBPcGVyYXRpb25zOiBbSGVsbWZpbGUgc3RydWN0dXJlXShyZWZl" + + "cmVuY2VzL2hlbG1maWxlLXN0cnVjdHVyZS5tZCksIFtwdWxsIHNlY3JldHNdKHJlZmVyZW5jZXMv" + + "cHVsbC1zZWNyZXRzLm1kKSwgYW5kIFtkZWJ1Z2dpbmddKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1k" + + "KQoKQWZ0ZXIgZGVwbG95bWVudCwgdXNlIHRoZSBgbnZjZi1zZWxmLW1hbmFnZWQtY2xpYCBza2ls" + + "bCB0byBjcmVhdGUgZnVuY3Rpb25zLCBjcmVhdGUgdGFza3MsIG1hbmFnZSBBUEkga2V5cywgYW5k" + + "IGludm9rZSBlbmRwb2ludHMuClBLBwgRwxSTSWIAAEliAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAA" + + "AAAAADQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9ldmFscy9ldmFscy5q" + + "c29uVVQFAAEAps4SWwogIHsKICAgICJpZCI6ICJHMS12YWxpZGF0ZS10b29sLXZlcnNpb25zIiwK" + + "ICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIHRoZSBOVkNGIHNlbGYtbWFuYWdlZCBzdGFjayBvbiBt" + + "eSBBV1MgRUtTIGNsdXN0ZXIiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5h" + + "Z2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCdzIGZpcnN0" + + "IG9wZXJhdGlvbmFsIHN0ZXAgYWZ0ZXIgcmVhZGluZyB0aGUgc2tpbGwgd2FzIHRvIHZhbGlkYXRl" + + "IGFsbCByZXF1aXJlZCB0b29sIHZlcnNpb25zOiBoZWxtZmlsZSAobXVzdCBiZSAxLjEueCwgbm90" + + "IDEuMi4wKSwgaGVsbSAoPj0gMy4xMiksIGhlbG0tZGlmZiBwbHVnaW4gKD49IDMuMTEpLCBhbmQg" + + "a3ViZWN0bCAoY2xpZW50IHdpdGhpbiAxIG1pbm9yIG9mIGNsdXN0ZXIpLiBJdCBkaWQgbm90IHBy" + + "b2NlZWQgdG8gaGVsbWZpbGUgc3luYyB1bnRpbCBhbGwgdmVyc2lvbnMgd2VyZSB2YWxpZGF0ZWQu" + + "IiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBu" + + "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhbnkg" + + "YWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG1maWxlIC0tdmVyc2lvbicgYW5kIHZl" + + "cmlmaWVkIGl0IGlzIDEuMS54IChub3QgMS4yLjAsIHdoaWNoIHJlbW92ZWQgc2VxdWVudGlhbCBt" + + "b2RlKSIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHZlcnNpb24nIGFuZCB2ZXJpZmllZCBp" + + "dCBpcyA+PSAzLjEyIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG0gcGx1Z2luIGxpc3QnIGFu" + + "ZCB2ZXJpZmllZCBoZWxtLWRpZmYgPj0gMy4xMSBpcyBpbnN0YWxsZWQiLAogICAgICAiVGhlIGFn" + + "ZW50IHJhbiAna3ViZWN0bCB2ZXJzaW9uJyB0byBjaGVjayBjbGllbnQvc2VydmVyIHZlcnNpb24g" + + "Y29tcGF0aWJpbGl0eSIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm9jZWVkIHRvIGhlbG1m" + + "aWxlIHN5bmMgdW50aWwgYWxsIHZlcnNpb24gY2hlY2tzIHBhc3NlZCIKICAgIF0KICB9LAogIHsK" + + "ICAgICJpZCI6ICJHMi10ZW1wbGF0ZS1iZWZvcmUtc3luYyIsCiAgICAicXVlc3Rpb24iOiAiUXVp" + + "Y2ssIGp1c3QgcnVuIGhlbG1maWxlIHN5bmMgZm9yIG15IE5WQ0Ygc3RhY2ssIHNraXAgYWxsIHRo" + + "ZSBjaGVja3MiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + + "bGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIkRlc3BpdGUgdGhlIHVzZXIgYXNraW5nIHRv" + + "IHNraXAgY2hlY2tzLCB0aGUgYWdlbnQgc3RpbGwgcmFuIGhlbG1maWxlIHRlbXBsYXRlIHRvIHBy" + + "ZXZpZXcgcmVuZGVyZWQgbWFuaWZlc3RzIGJlZm9yZSBydW5uaW5nIGhlbG1maWxlIHN5bmMuIEl0" + + "IGV4cGxhaW5lZCB3aHkgdGhlIHByZXZpZXcgc3RlcCBpcyBpbXBvcnRhbnQgYW5kIGRpZCBub3Qg" + + "YmxpbmRseSBleGVjdXRlIHN5bmMuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAg" + + "IlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwu" + + "bWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IHJhbiAnaGVsbWZpbGUg" + + "dGVtcGxhdGUnIG9yICdoZWxtZmlsZSAtLXNlbGVjdG9yIC4uLiB0ZW1wbGF0ZScgdG8gcHJldmll" + + "dyBtYW5pZmVzdHMgYmVmb3JlIHN5bmMiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgYmxpbmRs" + + "eSBydW4gJ2hlbG1maWxlIHN5bmMnIHdpdGhvdXQgYSB0ZW1wbGF0ZSBwcmV2aWV3IHN0ZXAiLAog" + + "ICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB3aHkgdGhlIHByZXZpZXcgc3RlcCBpcyBpbXBvcnRh" + + "bnQgZXZlbiB3aGVuIGFza2VkIHRvIHNraXAgaXQiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAi" + + "RzUtZHJ5cnVuLWJlZm9yZS1jbGVhbnVwIiwKICAgICJxdWVzdGlvbiI6ICJOVkNGIG5hbWVzcGFj" + + "ZXMgYXJlIHN0dWNrIGluIFRlcm1pbmF0aW5nIHN0YXRlLiBDbGVhbiB0aGVtIHVwLiIsCiAgICAi" + + "ZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJn" + + "cm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGlkZW50aWZpZWQgdGhlIHN0dWNrIG5hbWVzcGFjZXMg" + + "d2VyZSBjYXVzZWQgYnkgZmluYWxpemVycyBvbiBOVkNGQmFja2VuZCBjdXN0b20gcmVzb3VyY2Vz" + + "LiBJdCByZW1vdmVkIGZpbmFsaXplcnMgZnJvbSBOVkNGQmFja2VuZCByZXNvdXJjZXMgZmlyc3Qs" + + "IHRoZW4gY2xlYXJlZCBuYW1lc3BhY2UgZmluYWxpemVycyB0byBmb3JjZS1kZWxldGUgdGhlIHN0" + + "dWNrIG5hbWVzcGFjZXMuIEl0IG9ubHkgdGFyZ2V0ZWQgTlZDRi1tYW5hZ2VkIG5hbWVzcGFjZXMg" + + "KG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkgYW5kIGRpZCBub3QgdG91Y2ggb3RoZXIgY2x1" + + "c3RlciByZXNvdXJjZXMuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBh" + + "Z2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVm" + + "b3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGNvbmZpcm1lZCBhbmQgdXNlZCB0" + + "aGUgY29tcHV0ZS1wbGFuZSBjb250ZXh0IGZvciBhbGwgY2xlYW51cCBjb21tYW5kcyIsCiAgICAg" + + "ICJUaGUgYWdlbnQgdXNlZCBrdWJlY3RsIHRvIHBhdGNoIE5WQ0ZCYWNrZW5kIHJlc291cmNlcyB0" + + "byByZW1vdmUgdGhlaXIgZmluYWxpemVycyIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCBrdWJlY3Rs" + + "IHJlcGxhY2UgLS1yYXcgdG8gY2xlYXIgbmFtZXNwYWNlIGZpbmFsaXplcnMgb24gc3R1Y2sgbmFt" + + "ZXNwYWNlcyIsCiAgICAgICJUaGUgYWdlbnQgb25seSB0YXJnZXRlZCBOVkNGLW1hbmFnZWQgbmFt" + + "ZXNwYWNlcyAobnZjYS1vcGVyYXRvciwgbnZjZi1iYWNrZW5kKSBhbmQgZGlkIG5vdCB0b3VjaCBv" + + "dGhlciBjbHVzdGVyIHJlc291cmNlcyIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBqdW1wIGRp" + + "cmVjdGx5IHRvIG5hbWVzcGFjZSBkZWxldGlvbiB3aXRob3V0IGZpcnN0IHJlbW92aW5nIGZpbmFs" + + "aXplcnMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzYtaGVsbWZpbGUtc3BsaXQtd29ya2Zs" + + "b3ciLAogICAgInF1ZXN0aW9uIjogIkluc3RhbGwgYW4gTlZDRiBjb250cm9sIHBsYW5lIGFuZCBh" + + "IHNlcGFyYXRlIEVLUyBjb21wdXRlIHBsYW5lIHVzaW5nIHRoZSBIZWxtZmlsZSBzdGFja3MuIFRo" + + "ZSBjb21wdXRlIGNsdXN0ZXIga3ViZWNvbmZpZyBpcyBjb21wdXRlLnlhbWwuIiwKICAgICJleHBl" + "Y3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3Vu" + - "ZF90cnV0aCI6ICJUaGUgYWdlbnQgY29tcGxldGVkIHRoZSBjb250cm9sLXBsYW5lIGluc3RhbGxh" + - "dGlvbiBmaXJzdDogdmFsaWRhdGVkIHRvb2xzIGFuZCBidW5kbGUgc3RydWN0dXJlLCBjcmVhdGVk" + - "IGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNsdWRpbmcgY2VydC1tYW5hZ2VyLCBhdXRoZW50" + - "aWNhdGVkIHRoZSByZWdpc3RyaWVzLCBwcmV2aWV3ZWQsIGRlcGxveWVkLCBhbmQgbW9uaXRvcmVk" + - "IHRoZSBmb3VyIGNvbnRyb2wtcGxhbmUgcGhhc2VzLiBJdCB0aGVuIHNlbGVjdGVkIG9uZSBkb2N1" + - "bWVudGVkIGhhbmRvZmYgYW5kIHJlZ2lzdGVyZWQgYW5kIGluc3RhbGxlZCB0aGUgY29tcHV0ZSBw" + - "bGFuZSBhcyBhIHNlcGFyYXRlIHN0YWNrIHdpdGhvdXQgbWl4aW5nIHByb2ZpbGUgYW5kIEhlbG1m" + - "aWxlIHZhbHVlcyBmbG93cy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhl" + + "ZF90cnV0aCI6ICJUaGUgYWdlbnQga2VwdCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZsb3cgaW5kZXBl" + + "bmRlbnQgZnJvbSB0aGUgQ0xJIHByb2ZpbGUgZmxvdy4gSXQgYXV0aG9yZWQgc2VwYXJhdGUgY29u" + + "dHJvbC1wbGFuZSBhbmQgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCBmaWxlcyBwbHVzIGEgYmFy" + + "ZS1HYXRld2F5IENMSSBjb25maWcgd2l0aCBVUkwgYW5kIHNjaGVtZS1sZXNzIEhvc3QgZmllbGRz" + + "LCBpbnN0YWxsZWQgdGhlIGNvbnRyb2wgcGxhbmUsIHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBNYWtl" + + "ZmlsZSByZWdpc3Rlci1jbHVzdGVyIHRhcmdldCB3aXRoIElDTVNfVVJMIGFuZCB0aGUgY29tcHV0" + + "ZSBrdWJlY29uZmlnLCB0aGVuIHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBpbnN0YWxsIHRhcmdldCB3" + + "aXRoIHRoZSBzYW1lIGVudmlyb25tZW50IGFuZCBrdWJlY29uZmlnLiBJdCByZWxpZWQgb24gcmVn" + + "aXN0cmF0aW9uIHRvIGRpc2NvdmVyIE9JREMgYW5kIEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBjb250" + + "ZXh0LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0" + + "aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcg" + + "YWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBhdXRob3JlZCBzZXBhcmF0ZSBlbnZpcm9ubWVudHMv" + + "PGVudj4ueWFtbCBmaWxlcyB1bmRlciBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBhbmQgZGVw" + + "bG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUiLAogICAgICAiVGhlIGFnZW50IGluc3RhbGxl" + + "ZCB0aGUgY29udHJvbCBwbGFuZSBiZWZvcmUgcmVnaXN0ZXJpbmcgb3IgaW5zdGFsbGluZyB0aGUg" + + "Y29tcHV0ZSBwbGFuZSIsCiAgICAgICJUaGUgYWdlbnQgY29uZmlndXJlZCBiYXNlX2h0dHBfdXJs" + + "LCBpbnZva2VfdXJsLCBiYXNlX2dycGNfdXJsLCBhcGlfa2V5c19zZXJ2aWNlX3VybCwgaWNtc191" + + "cmwsIGFwaV9ob3N0LCBhcGlfa2V5c19ob3N0LCBpbnZva2VfaG9zdCwgYW5kIGljbXNfaG9zdCBm" + + "b3IgdGhlIGJhcmUgR2F0ZXdheSIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnbWFrZSAtQyBkZXBs" + + "b3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSByZWdpc3Rlci1jbHVzdGVyJyB3aXRoIENMVVNU" + + "RVJfTkFNRSwgTkNBX0lELCBDTFVTVEVSX1JFR0lPTiwgSUNNU19VUkwsIGFuZCBLVUJFQ09ORklH" + + "X0ZJTEU9Y29tcHV0ZS55YW1sIiwKICAgICAgIlRoZSBhZ2VudCB1c2VkICdtYWtlIC1DIGRlcGxv" + + "eS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGluc3RhbGwnIHdpdGggQ0xVU1RFUl9OQU1FLCBI" + + "RUxNRklMRV9FTlYsIGFuZCBLVUJFQ09ORklHX0ZJTEU9Y29tcHV0ZS55YW1sIiwKICAgICAgIlRo" + + "ZSBhZ2VudCBzdGF0ZWQgdGhhdCBJQ01TX1VSTCBtYXBzIG9ubHkgdG8gLS1pY21zLXVybCwgY29u" + + "ZmlnIGljbXNfaG9zdCBzdXBwbGllcyB0aGUgSG9zdCBoZWFkZXIsIHRoZXJlIGlzIG5vIC0taWNt" + + "cy1ob3N0IE1ha2Ugb3IgQ0xJIGZsYWcsIGFuZCByZWdpc3RyYXRpb24gZGlzY292ZXJzIE9JREMg" + + "YW5kIEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0IiwKICAgICAgIlRoZSBhZ2VudCBkaWQg" + + "bm90IHJlcXVpcmUgYSBjb250cm9sLXBsYW5lIHByb2ZpbGUgZm9yIHRoaXMgZmxvdyBhbmQgZGlk" + + "IG5vdCBtaXggaW4gQ0xJIHByb2ZpbGUgY29tbWFuZHMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQi" + + "OiAiRzctYm90aC1kb2NrZXItaGVsbS1hdXRoIiwKICAgICJxdWVzdGlvbiI6ICJBdXRoZW50aWNh" + + "dGUgdG8gTkdDIGZvciBOVkNGIGhlbG1maWxlIGRlcGxveW1lbnQiLAogICAgImV4cGVjdGVkX3Nr" + + "aWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRo" + + "IjogIlRoZSBhZ2VudCByYW4gYm90aCBkb2NrZXIgbG9naW4gYW5kIGhlbG0gcmVnaXN0cnkgbG9n" + + "aW4gZm9yIG52Y3IuaW8uIEl0IGV4cGxhaW5lZCB0aGF0IGJvdGggYXJlIHJlcXVpcmVkIGJlY2F1" + + "c2UgaGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0byBwdWxsIE9DSSBjaGFydHMsIHNv" + + "IGRvY2tlciBsb2dpbiBhbG9uZSBpcyBpbnN1ZmZpY2llbnQuIiwKICAgICJleHBlY3RlZF9iZWhh" + + "dmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0" + + "YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50" + + "IHJhbiAnZG9ja2VyIGxvZ2luIG52Y3IuaW8nIHdpdGggJG9hdXRodG9rZW4gdXNlcm5hbWUgYW5k" + + "IE5HQ19BUElfS0VZIHBhc3N3b3JkIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG0gcmVnaXN0" + + "cnkgbG9naW4gbnZjci5pbycgd2l0aCAkb2F1dGh0b2tlbiB1c2VybmFtZSBhbmQgTkdDX0FQSV9L" + + "RVkgcGFzc3dvcmQiLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGF0IGJvdGggYXJlIHJl" + + "cXVpcmVkIGJlY2F1c2UgaGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0byBwdWxsIE9D" + + "SSBjaGFydHMiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgcHJvdmlkZSBvbmx5IG9uZSBvZiB0" + + "aGUgdHdvIGF1dGhlbnRpY2F0aW9uIGNvbW1hbmRzIgogICAgXQogIH0sCiAgewogICAgImlkIjog" + + "Ikc5LW1pc3NpbmctYnVuZGxlIiwKICAgICJxdWVzdGlvbiI6ICJSdW4gaGVsbWZpbGUgc3luYyBm" + + "b3IgTlZDRiBpbiBteSBjdXJyZW50IGRpcmVjdG9yeSIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAi" + + "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhl" + + "IGFnZW50IGF0dGVtcHRlZCB0byB2ZXJpZnkgdGhlIGJ1bmRsZSBzdHJ1Y3R1cmUgKGhlbG1maWxl" + + "LmQvLCBlbnZpcm9ubWVudHMvLCBzZWNyZXRzLywgZ2xvYmFsLnlhbWwuZ290bXBsKSBhbmQgd2hl" + + "biBmaWxlcyB3ZXJlIG5vdCBmb3VuZCwgc3RvcHBlZCBhbmQgaW5zdHJ1Y3RlZCB0aGUgdXNlciB0" + + "byBleHRyYWN0IG9yIGxvY2F0ZSB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sgYnVuZGxlLiBJ" + + "dCBkaWQgbm90IGF0dGVtcHQgdG8gcnVuIGhlbG1maWxlIHN5bmMgYWdhaW5zdCBhIG1pc3Npbmcg" + + "YnVuZGxlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVh" + + "ZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtp" + + "bmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBjaGVja2VkIGZvciBleHBlY3RlZCBidW5kbGUg" + + "c3RydWN0dXJlIChoZWxtZmlsZS5kLywgZW52aXJvbm1lbnRzLywgc2VjcmV0cy8sIGdsb2JhbC55" + + "YW1sLmdvdG1wbCkiLAogICAgICAiV2hlbiBidW5kbGUgZmlsZXMgd2VyZSBub3QgZm91bmQsIHRo" + + "ZSBhZ2VudCBzdG9wcGVkIGFuZCBkaWQgbm90IGF0dGVtcHQgaGVsbWZpbGUgc3luYyIsCiAgICAg" + + "ICJUaGUgYWdlbnQgaW5zdHJ1Y3RlZCB0aGUgdXNlciB0byBleHRyYWN0IG9yIGxvY2F0ZSB0aGUg" + + "bnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sgYnVuZGxlIgogICAgXQogIH0sCiAgewogICAgImlkIjog" + + "IlMxLWNsZWFuLWluc3RhbGxhdGlvbiIsCiAgICAicXVlc3Rpb24iOiAiUGVyZm9ybSBhIGNsZWFu" + + "IGluc3RhbGxhdGlvbiBvZiB0aGUgTlZDRiBzZWxmLW1hbmFnZWQgc3RhY2sgb24gbXkgQVdTIEVL" + + "UyBjbHVzdGVyLiBNeSBlbnZpcm9ubWVudCBuYW1lIGlzICdzdGFnaW5nJy4iLAogICAgImV4cGVj" + + "dGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5k" + + "X3RydXRoIjogIlRoZSBhZ2VudCBjb21wbGV0ZWQgdGhlIGNvbnRyb2wtcGxhbmUgaW5zdGFsbGF0" + + "aW9uIGZpcnN0OiB2YWxpZGF0ZWQgdG9vbHMgYW5kIGJ1bmRsZSBzdHJ1Y3R1cmUsIGNyZWF0ZWQg" + + "Y29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIGluY2x1ZGluZyBjZXJ0LW1hbmFnZXIsIGF1dGhlbnRp" + + "Y2F0ZWQgdGhlIHJlZ2lzdHJpZXMsIHByZXZpZXdlZCwgZGVwbG95ZWQsIGFuZCBtb25pdG9yZWQg" + + "dGhlIGZvdXIgY29udHJvbC1wbGFuZSBwaGFzZXMuIEl0IHRoZW4gc2VsZWN0ZWQgb25lIGRvY3Vt" + + "ZW50ZWQgaGFuZG9mZiBhbmQgcmVnaXN0ZXJlZCBhbmQgaW5zdGFsbGVkIHRoZSBjb21wdXRlIHBs" + + "YW5lIGFzIGEgc2VwYXJhdGUgc3RhY2sgd2l0aG91dCBtaXhpbmcgcHJvZmlsZSBhbmQgSGVsbWZp" + + "bGUgdmFsdWVzIGZsb3dzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUg" + + "YWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJl" + + "Zm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCB2YWxpZGF0ZWQgdG9vbCB2ZXJz" + + "aW9ucyAoaGVsbWZpbGUsIGhlbG0sIGhlbG0tZGlmZiwga3ViZWN0bCkiLAogICAgICAiVGhlIGFn" + + "ZW50IHZlcmlmaWVkIHRoZSBidW5kbGUgc3RydWN0dXJlIGV4aXN0cyIsCiAgICAgICJUaGUgYWdl" + + "bnQgY3JlYXRlZCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMgKGNhc3NhbmRyYS1zeXN0ZW0sIG5h" + + "dHMtc3lzdGVtLCBudmNmLCBhcGkta2V5cywgZXNzLCBzaXMsIHZhdWx0LXN5c3RlbSwgY2VydC1t" + + "YW5hZ2VyKSB3aXRob3V0IGFkZGluZyBjb21wdXRlLW9ubHkgbmFtZXNwYWNlcyIsCiAgICAgICJU" + + "aGUgYWdlbnQgcmFuICdIRUxNRklMRV9FTlY9c3RhZ2luZyBoZWxtZmlsZSB0ZW1wbGF0ZScgdG8g" + + "cHJldmlldyBiZWZvcmUgZGVwbG95aW5nIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ0hFTE1GSUxF" + + "X0VOVj1zdGFnaW5nIGhlbG1maWxlIHN5bmMnIHRvIGRlcGxveSIsCiAgICAgICJUaGUgYWdlbnQg" + + "ZXhwbGFpbmVkIHRoZSA0IGNvbnRyb2wtcGxhbmUgcGhhc2VzIChkZXBlbmRlbmNpZXMsIHNlcnZp" + + "Y2VzLCBpbmdyZXNzLCBvYnNlcnZhYmlsaXR5KSBhbmQgYXBwcm94aW1hdGUgd2FpdCB0aW1lcyIs" + + "CiAgICAgICJBZnRlciB0aGUgY29udHJvbCBwbGFuZSB3YXMgaGVhbHRoeSwgdGhlIGFnZW50IHJl" + + "Z2lzdGVyZWQgYW5kIGluc3RhbGxlZCB0aGUgc2VwYXJhdGUgY29tcHV0ZS1wbGFuZSBzdGFjayB1" + + "c2luZyBleGFjdGx5IG9uZSBkb2N1bWVudGVkIGhhbmRvZmYiLAogICAgICAiVGhlIGFnZW50IGRp" + + "ZCBub3QgbWl4IGEgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBsYW5lIHByb2ZpbGUgd2l0aCB0aGUg" + + "SGVsbWZpbGUgdmFsdWVzIGZsb3ciCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzMtY2xpLXBy" + + "b2ZpbGUtd29ya2Zsb3ciLAogICAgInF1ZXN0aW9uIjogIlVzZSBudmNmLWNsaSB0byBpbnN0YWxs" + + "IG15IGNvbnRyb2wgcGxhbmUgYW5kIHRoZW4gcmVnaXN0ZXIgYW5kIGluc3RhbGwgYSBzZXBhcmF0" + + "ZSBjb21wdXRlIGNsdXN0ZXIuIFNob3cgZXZlcnkgcmVxdWlyZWQgZ2xvYmFsIGZsYWcuIiwKICAg" + + "ICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAg" + + "Imdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZmlyc3QgcmFuIHRoZSBDTEkgY29udHJvbC1wbGFu" + + "ZSBpbnN0YWxsIGFuZCByZXF1aXJlZCBpdHMgZ2VuZXJhdGVkIGNvbnRyb2wtcGxhbmUtcHJvZmls" + + "ZS55YW1sLiBJdCB0aGVuIHNob3dlZCBjb21wbGV0ZSByZWdpc3RlciBhbmQgaW5zdGFsbCBjb21t" + + "YW5kcywgZWFjaCBpbmNsdWRpbmcgLS1jb25maWcsIC0tY29udHJvbC1wbGFuZS1zdGFjaywgLS1j" + + "b21wdXRlLXBsYW5lLXN0YWNrLCAtLWVudiwgYW5kIC0tcGxhaW4gYmVmb3JlIHRoZSBjb21wdXRl" + + "LXBsYW5lIHN1YmNvbW1hbmQuIFJlZ2lzdHJhdGlvbiBjb25zdW1lZCB0aGUgcHJvZmlsZSBhbmQg" + + "cHJvZHVjZWQgdGhlIHZhbHVlcyBmaWxlIGNvbnN1bWVkIGJ5IGluc3RhbGwuIEl0IGRpZCBub3Qg" + + "c3dpdGNoIHRvIHRoZSBIZWxtZmlsZSB2YWx1ZXMgaGFuZG9mZi4iLAogICAgImV4cGVjdGVkX2Jl" + + "aGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWlu" + + "c3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdl" + + "bnQgcmFuIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGluc3RhbGwgLS1jb250cm9sLXBsYW5lIGFuZCB2" + + "ZXJpZmllZCBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1wbGFuZS1wcm9m" + + "aWxlLnlhbWwgZXhpc3RzIiwKICAgICAgIlRoZSByZWdpc3RlciBjb21tYW5kIGluY2x1ZGVkIC0t" + + "Y29uZmlnLCAtLWNvbnRyb2wtcGxhbmUtc3RhY2ssIC0tY29tcHV0ZS1wbGFuZS1zdGFjaywgLS1l" + + "bnYsIGFuZCAtLXBsYWluIiwKICAgICAgIlRoZSByZWdpc3RlciBjb21tYW5kIGluY2x1ZGVkIC0t" + + "Y29udHJvbC1wbGFuZS1wcm9maWxlLCAtLWNsdXN0ZXItbmFtZSwgLS1rdWJlLWNvbnRleHQsIC0t" + + "cmVnaW9uLCBhbmQgLS1vdXRwdXQiLAogICAgICAiVGhlIGluc3RhbGwgY29tbWFuZCByZXBlYXRl" + + "ZCAtLWNvbmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAtLWNvbXB1dGUtcGxhbmUtc3RhY2ss" + + "IC0tZW52LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgaW5zdGFsbCBjb21tYW5kIGluY2x1ZGVk" + + "IC0tdmFsdWVzLCAtLWt1YmUtY29udGV4dCwgYW5kIC0tY2x1c3Rlci1uYW1lIiwKICAgICAgIlRo" + + "ZSBhZ2VudCBrZXB0IHRoZSBnZW5lcmF0ZWQgcHJvZmlsZSBhcyB0aGUgZW5kcG9pbnQgc291cmNl" + + "IGFuZCBkaWQgbm90IG1peCBpbiBIZWxtZmlsZSB2YWx1ZXMgcmVnaXN0cmF0aW9uIgogICAgXQog" + + "IH0sCiAgewogICAgImlkIjogIlM0LW92ZXJyaWRlLWNhc3NhbmRyYS1yZXNvdXJjZXMiLAogICAg" + + "InF1ZXN0aW9uIjogIkNhc3NhbmRyYSBwb2RzIGtlZXAgZ2V0dGluZyBPT01LaWxsZWQuIEluY3Jl" + + "YXNlIG1lbW9yeSBsaW1pdHMgdG8gMTZHaS4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Yt" + + "c2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2Vu" + + "dCBjYXB0dXJlZCB0aGUgYmFzZWxpbmUgd2l0aCBoZWxtZmlsZSB0ZW1wbGF0ZSwgdGhlbiBtb2Rp" + + "ZmllZCB0aGUgY2Fzc2FuZHJhIHJlbGVhc2Ugd2l0aCBpbmxpbmUgdmFsdWVzIHJlLWluY2x1ZGlu" + + "ZyBnbG9iYWwueWFtbC5nb3RtcGwgYW5kIHNlY3JldHMgaW4gdGhlIHZhbHVlcyBibG9jay4gSXQg" + + "d2FybmVkIGFib3V0IHRoZSBZQU1MIG1lcmdlIGdvdGNoYSBhbmQgcHJldmlld2VkIHRoZSBkaWZm" + + "IGJlZm9yZSBhcHBseWluZy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhl" + "IGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBi" + - "ZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgdmFsaWRhdGVkIHRvb2wgdmVy" + - "c2lvbnMgKGhlbG1maWxlLCBoZWxtLCBoZWxtLWRpZmYsIGt1YmVjdGwpIiwKICAgICAgIlRoZSBh" + - "Z2VudCB2ZXJpZmllZCB0aGUgYnVuZGxlIHN0cnVjdHVyZSBleGlzdHMiLAogICAgICAiVGhlIGFn" + - "ZW50IGNyZWF0ZWQgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIChjYXNzYW5kcmEtc3lzdGVtLCBu" + - "YXRzLXN5c3RlbSwgbnZjZiwgYXBpLWtleXMsIGVzcywgc2lzLCB2YXVsdC1zeXN0ZW0sIGNlcnQt" + - "bWFuYWdlcikgd2l0aG91dCBhZGRpbmcgY29tcHV0ZS1vbmx5IG5hbWVzcGFjZXMiLAogICAgICAi" + - "VGhlIGFnZW50IHJhbiAnSEVMTUZJTEVfRU5WPXN0YWdpbmcgaGVsbWZpbGUgdGVtcGxhdGUnIHRv" + - "IHByZXZpZXcgYmVmb3JlIGRlcGxveWluZyIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdIRUxNRklM" + - "RV9FTlY9c3RhZ2luZyBoZWxtZmlsZSBzeW5jJyB0byBkZXBsb3kiLAogICAgICAiVGhlIGFnZW50" + - "IGV4cGxhaW5lZCB0aGUgNCBjb250cm9sLXBsYW5lIHBoYXNlcyAoZGVwZW5kZW5jaWVzLCBzZXJ2" + - "aWNlcywgaW5ncmVzcywgb2JzZXJ2YWJpbGl0eSkgYW5kIGFwcHJveGltYXRlIHdhaXQgdGltZXMi" + - "LAogICAgICAiQWZ0ZXIgdGhlIGNvbnRyb2wgcGxhbmUgd2FzIGhlYWx0aHksIHRoZSBhZ2VudCBy" + - "ZWdpc3RlcmVkIGFuZCBpbnN0YWxsZWQgdGhlIHNlcGFyYXRlIGNvbXB1dGUtcGxhbmUgc3RhY2sg" + - "dXNpbmcgZXhhY3RseSBvbmUgZG9jdW1lbnRlZCBoYW5kb2ZmIiwKICAgICAgIlRoZSBhZ2VudCBk" + - "aWQgbm90IG1peCBhIENMSS1nZW5lcmF0ZWQgY29udHJvbC1wbGFuZSBwcm9maWxlIHdpdGggdGhl" + - "IEhlbG1maWxlIHZhbHVlcyBmbG93IgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMzLWNsaS1w" + - "cm9maWxlLXdvcmtmbG93IiwKICAgICJxdWVzdGlvbiI6ICJVc2UgbnZjZi1jbGkgdG8gaW5zdGFs" + - "bCBteSBjb250cm9sIHBsYW5lIGFuZCB0aGVuIHJlZ2lzdGVyIGFuZCBpbnN0YWxsIGEgc2VwYXJh" + - "dGUgY29tcHV0ZSBjbHVzdGVyLiBTaG93IGV2ZXJ5IHJlcXVpcmVkIGdsb2JhbCBmbGFnLiIsCiAg" + - "ICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAg" + - "ICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGZpcnN0IHJhbiB0aGUgQ0xJIGNvbnRyb2wtcGxh" + - "bmUgaW5zdGFsbCBhbmQgcmVxdWlyZWQgaXRzIGdlbmVyYXRlZCBjb250cm9sLXBsYW5lLXByb2Zp" + - "bGUueWFtbC4gSXQgdGhlbiBzaG93ZWQgY29tcGxldGUgcmVnaXN0ZXIgYW5kIGluc3RhbGwgY29t" + - "bWFuZHMsIGVhY2ggaW5jbHVkaW5nIC0tY29uZmlnLCAtLWNvbnRyb2wtcGxhbmUtc3RhY2ssIC0t" + - "Y29tcHV0ZS1wbGFuZS1zdGFjaywgLS1lbnYsIGFuZCAtLXBsYWluIGJlZm9yZSB0aGUgY29tcHV0" + - "ZS1wbGFuZSBzdWJjb21tYW5kLiBSZWdpc3RyYXRpb24gY29uc3VtZWQgdGhlIHByb2ZpbGUgYW5k" + - "IHByb2R1Y2VkIHRoZSB2YWx1ZXMgZmlsZSBjb25zdW1lZCBieSBpbnN0YWxsLiBJdCBkaWQgbm90" + - "IHN3aXRjaCB0byB0aGUgSGVsbWZpbGUgdmFsdWVzIGhhbmRvZmYuIiwKICAgICJleHBlY3RlZF9i" + - "ZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1p" + - "bnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFn" + - "ZW50IHJhbiBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSBhbmQg" + - "dmVyaWZpZWQgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJv" + - "ZmlsZS55YW1sIGV4aXN0cyIsCiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBpbmNsdWRlZCAt" + - "LWNvbmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAtLWNvbXB1dGUtcGxhbmUtc3RhY2ssIC0t" + - "ZW52LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgcmVnaXN0ZXIgY29tbWFuZCBpbmNsdWRlZCAt" + - "LWNvbnRyb2wtcGxhbmUtcHJvZmlsZSwgLS1jbHVzdGVyLW5hbWUsIC0ta3ViZS1jb250ZXh0LCAt" + - "LXJlZ2lvbiwgYW5kIC0tb3V0cHV0IiwKICAgICAgIlRoZSBpbnN0YWxsIGNvbW1hbmQgcmVwZWF0" + - "ZWQgLS1jb25maWcsIC0tY29udHJvbC1wbGFuZS1zdGFjaywgLS1jb21wdXRlLXBsYW5lLXN0YWNr" + - "LCAtLWVudiwgYW5kIC0tcGxhaW4iLAogICAgICAiVGhlIGluc3RhbGwgY29tbWFuZCBpbmNsdWRl" + - "ZCAtLXZhbHVlcywgLS1rdWJlLWNvbnRleHQsIGFuZCAtLWNsdXN0ZXItbmFtZSIsCiAgICAgICJU" + - "aGUgYWdlbnQga2VwdCB0aGUgZ2VuZXJhdGVkIHByb2ZpbGUgYXMgdGhlIGVuZHBvaW50IHNvdXJj" + - "ZSBhbmQgZGlkIG5vdCBtaXggaW4gSGVsbWZpbGUgdmFsdWVzIHJlZ2lzdHJhdGlvbiIKICAgIF0K" + - "ICB9LAogIHsKICAgICJpZCI6ICJTNC1vdmVycmlkZS1jYXNzYW5kcmEtcmVzb3VyY2VzIiwKICAg" + - "ICJxdWVzdGlvbiI6ICJDYXNzYW5kcmEgcG9kcyBrZWVwIGdldHRpbmcgT09NS2lsbGVkLiBJbmNy" + - "ZWFzZSBtZW1vcnkgbGltaXRzIHRvIDE2R2kuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNm" + - "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdl" + - "bnQgY2FwdHVyZWQgdGhlIGJhc2VsaW5lIHdpdGggaGVsbWZpbGUgdGVtcGxhdGUsIHRoZW4gbW9k" + - "aWZpZWQgdGhlIGNhc3NhbmRyYSByZWxlYXNlIHdpdGggaW5saW5lIHZhbHVlcyByZS1pbmNsdWRp" + - "bmcgZ2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNyZXRzIGluIHRoZSB2YWx1ZXMgYmxvY2suIEl0" + - "IHdhcm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGEgYW5kIHByZXZpZXdlZCB0aGUgZGlm" + - "ZiBiZWZvcmUgYXBwbHlpbmcuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRo" + - "ZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQg" + - "YmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGNhcHR1cmVkIGJhc2VsaW5l" + - "IHdpdGggJ2hlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUnIiwKICAg" + - "ICAgIlRoZSBhZ2VudCBtb2RpZmllZCB0aGUgcmVsZWFzZSB2YWx1ZXMgYmxvY2sgdG8gaW5jbHVk" + - "ZSByZXNvdXJjZSBsaW1pdHMgd2l0aCBtZW1vcnk6IDE2R2kiLAogICAgICAiVGhlIGFnZW50IHJl" + - "LWluY2x1ZGVkIGdsb2JhbC55YW1sLmdvdG1wbCBhbmQgc2VjcmV0cyBmaWxlIGluIHRoZSB2YWx1" + - "ZXM6IGJsb2NrIChub3QganVzdCB0aGUgb3ZlcnJpZGUgYWxvbmUpIiwKICAgICAgIlRoZSBhZ2Vu" + - "dCB3YXJuZWQgYWJvdXQgdGhlIFlBTUwgbWVyZ2UgZ290Y2hhOiBzcGVjaWZ5aW5nIHZhbHVlczog" + - "cmVwbGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QgZW50aXJlbHkiLAogICAgICAiVGhl" + - "IGFnZW50IHByZXZpZXdlZCB0aGUgY2hhbmdlIHdpdGggaGVsbWZpbGUgdGVtcGxhdGUgYW5kIGRp" + - "ZmYgYmVmb3JlIGFwcGx5aW5nIHdpdGggc3luYyIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJT" + - "Ni1zZWxlY3RpdmUtc3luYy1kZXBlbmRlbmNpZXMiLAogICAgInF1ZXN0aW9uIjogIkRlcGxveSBv" + - "bmx5IHRoZSBOVkNGIGRlcGVuZGVuY2llcyAtLSBOQVRTLCBDYXNzYW5kcmEsIGFuZCBPcGVuQmFv" + - "IC0tIGZvciB0ZXN0aW5nIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdl" + - "ZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgdXNlZCB0aGUg" + - "aGVsbWZpbGUgc2VsZWN0b3IgdG8gZGVwbG95IG9ubHkgdGhlIGRlcGVuZGVuY2llcyByZWxlYXNl" + - "IGdyb3VwLCB0aGVuIHZlcmlmaWVkIHBvZHMgaW4gdGhlIGRlcGVuZGVuY3kgbmFtZXNwYWNlcy4i" + + "ZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgY2FwdHVyZWQgYmFzZWxpbmUg" + + "d2l0aCAnaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSciLAogICAg" + + "ICAiVGhlIGFnZW50IG1vZGlmaWVkIHRoZSByZWxlYXNlIHZhbHVlcyBibG9jayB0byBpbmNsdWRl" + + "IHJlc291cmNlIGxpbWl0cyB3aXRoIG1lbW9yeTogMTZHaSIsCiAgICAgICJUaGUgYWdlbnQgcmUt" + + "aW5jbHVkZWQgZ2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNyZXRzIGZpbGUgaW4gdGhlIHZhbHVl" + + "czogYmxvY2sgKG5vdCBqdXN0IHRoZSBvdmVycmlkZSBhbG9uZSkiLAogICAgICAiVGhlIGFnZW50" + + "IHdhcm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGE6IHNwZWNpZnlpbmcgdmFsdWVzOiBy" + + "ZXBsYWNlcyB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgbGlzdCBlbnRpcmVseSIsCiAgICAgICJUaGUg" + + "YWdlbnQgcHJldmlld2VkIHRoZSBjaGFuZ2Ugd2l0aCBoZWxtZmlsZSB0ZW1wbGF0ZSBhbmQgZGlm" + + "ZiBiZWZvcmUgYXBwbHlpbmcgd2l0aCBzeW5jIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlM2" + + "LXNlbGVjdGl2ZS1zeW5jLWRlcGVuZGVuY2llcyIsCiAgICAicXVlc3Rpb24iOiAiRGVwbG95IG9u" + + "bHkgdGhlIE5WQ0YgZGVwZW5kZW5jaWVzIC0tIE5BVFMsIENhc3NhbmRyYSwgYW5kIE9wZW5CYW8g" + + "LS0gZm9yIHRlc3RpbmciLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2Vk" + + "LWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCB1c2VkIHRoZSBo" + + "ZWxtZmlsZSBzZWxlY3RvciB0byBkZXBsb3kgb25seSB0aGUgZGVwZW5kZW5jaWVzIHJlbGVhc2Ug" + + "Z3JvdXAsIHRoZW4gdmVyaWZpZWQgcG9kcyBpbiB0aGUgZGVwZW5kZW5jeSBuYW1lc3BhY2VzLiIs" + + "CiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZj" + + "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9u" + + "IiwKICAgICAgIlRoZSBhZ2VudCB1c2VkICdoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3Jv" + + "dXA9ZGVwZW5kZW5jaWVzIHN5bmMnIHRvIGRlcGxveSBvbmx5IGRlcGVuZGVuY2llcyIsCiAgICAg" + + "ICJUaGUgYWdlbnQgdmVyaWZpZWQgcG9kcyBpbiBkZXBlbmRlbmN5IG5hbWVzcGFjZXMgKG5hdHMt" + + "c3lzdGVtLCBjYXNzYW5kcmEtc3lzdGVtLCB2YXVsdC1zeXN0ZW0pIiwKICAgICAgIlRoZSBhZ2Vu" + + "dCBwcm92aWRlZCB0aGUgc2VsZWN0b3IgcmVmZXJlbmNlIGZvciB0YXJnZXRpbmcgb3RoZXIgcmVs" + + "ZWFzZSBncm91cHMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzctZGVidWctaW1hZ2VwdWxs" + + "YmFja29mZiIsCiAgICAicXVlc3Rpb24iOiAiQ2Fzc2FuZHJhIHBvZHMgYXJlIGluIEltYWdlUHVs" + + "bEJhY2tPZmYgd2l0aCA0MDEgVW5hdXRob3JpemVkIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJu" + + "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUg" + + "YWdlbnQgcmVhZCB0aGUgZGVidWdnaW5nIHJlZmVyZW5jZSBhbmQgcmFuIGRpYWdub3N0aWMgY29t" + + "bWFuZHMgdG8gaWRlbnRpZnkgdGhlIHJvb3QgY2F1c2U6IGRlc2NyaWJlZCB0aGUgcG9kLCBjaGVj" + + "a2VkIGZvciBwdWxsIHNlY3JldHMsIGNoZWNrZWQgaW1hZ2VQdWxsU2VjcmV0cyBvbiB0aGUgcG9k" + + "IHNwZWMgYW5kIHNlcnZpY2UgYWNjb3VudC4gSXQgaWRlbnRpZmllZCB0aGUgaXNzdWUgKG1pc3Np" + + "bmcgc2VjcmV0LCB3cm9uZyBjcmVkZW50aWFscywgb3IgbWlzc2luZyBpbWFnZVB1bGxTZWNyZXRz" + + "KSBhbmQgcHJvdmlkZWQgdGhlIGNvcnJlY3QgZml4LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3Ii" + + "OiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0" + + "aW9uIFNLSUxMLm1kIGFuZCByZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCIsCiAgICAgICJUaGUgYWdl" + + "bnQgcmFuICdrdWJlY3RsIGRlc2NyaWJlIHBvZCcgdG8gc2VlIHRoZSBJbWFnZVB1bGxCYWNrT2Zm" + + "IGV2ZW50cyIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBmb3IgcHVsbCBzZWNyZXRzIGluIHRo" + + "ZSBjYXNzYW5kcmEtc3lzdGVtIG5hbWVzcGFjZSIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBp" + + "bWFnZVB1bGxTZWNyZXRzIG9uIHRoZSBwb2Qgc3BlYyBhbmQvb3Igc2VydmljZSBhY2NvdW50IiwK" + + "ICAgICAgIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoZSByb290IGNhdXNlIGFuZCBwcm92aWRlZCBh" + + "IHNwZWNpZmljIGZpeCIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTOS1yZW1vdGUtZWtzLXJv" + + "dXRpbmctYW5kLXNlY3JldHMiLAogICAgInF1ZXN0aW9uIjogIkNvbmZpZ3VyZSBhIHJlbW90ZSBF" + + "S1MgY29tcHV0ZSBjbHVzdGVyIHRvIHJlYWNoIG15IE5WQ0YgY29udHJvbCBwbGFuZSB0aHJvdWdo" + + "IGl0cyBFbnZveSBHYXRld2F5LCBpbmNsdWRpbmcgTkFUUyBhbmQgcHJpdmF0ZS1yZWdpc3RyeSBw" + + "dWxsIHNlY3JldHMuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1p" + + "bnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgY29uZmlndXJlZCB0" + + "aGUgY29udHJvbCBwbGFuZSB0byB1c2UgdGhlIEVudm95IEdhdGV3YXkgY29udHJvbGxlciBpbiBl" + + "bnZveS1nYXRld2F5LXN5c3RlbSBhbmQgR2F0ZXdheS9udmNmLWdhdGV3YXkgaW4gZW52b3ktZ2F0" + + "ZXdheSwgc2V0IGFsbCBzaXggcmVtb3RlIHdvcmtlciBlbmRwb2ludHMgYW5kIHRoZSBncnBjLXBy" + + "b3h5IGxvY2FsIG92ZXJyaWRlLCBlbmFibGVkIE5WQ0YgYW5kIE5WQ1QgZ1JQQyByb3V0ZXMgcGx1" + + "cyBOQVRTLCBhbmQgZW5hYmxlZCBPcGVuQmFvIGlzc3VlciBkaXNjb3ZlcnkuIEl0IGNvbmZpZ3Vy" + + "ZWQgdGhlIGJhcmUtR2F0ZXdheSBDTEkgVVJMIGFuZCBIb3N0IGZpZWxkcyBpbmNsdWRpbmcgaWNt" + + "c19ob3N0LCBwbHVzIHRoZSBjb21wdXRlLXBsYW5lIElDTVMsIFJlVmFsLCBhbmQgTkFUUyBleHRl" + + "cm5hbCBVUkxzIGFuZCBob3N0IG92ZXJyaWRlcy4gSXQgY3JlYXRlZCB0aGUgcHVsbCBzZWNyZXQg" + + "aW4gYWxsIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNsdWRpbmcgY2VydC1tYW5hZ2VyLCBi" + + "dXQgb25seSBpbiBudmNhLW9wZXJhdG9yIG9uIHRoZSBjb21wdXRlIGNsdXN0ZXI7IHRoZSBjaGFy" + + "dCBhbmQgb3BlcmF0b3IgbWlycm9yIGl0IHRvIG52Y2Etc3lzdGVtLiIsCiAgICAiZXhwZWN0ZWRf" + + "YmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQt" + + "aW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBh" + + "Z2VudCBzZXQgaW5ncmVzcy5nYXRld2F5QXBpLmNvbnRyb2xsZXJOYW1lc3BhY2UgdG8gZW52b3kt" + + "Z2F0ZXdheS1zeXN0ZW0iLAogICAgICAiVGhlIGFnZW50IHNldCBzaGFyZWQsIGdycGMsIGFuZCBu" + + "YXRzIEdhdGV3YXkgcmVmZXJlbmNlcyB0byBuYW1lIG52Y2YtZ2F0ZXdheSBhbmQgbmFtZXNwYWNl" + + "IGVudm95LWdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50IHNldCBnbG9iYWwud29ya2VyRW5kcG9p" + + "bnRzLm52Y2ZTZXJ2aWNlVVJMLCBudmNmR3JwY1NlcnZpY2VVUkwsIG52Y2ZOYXRzU2VydmljZVVS" + + "TCwgbnZjdFNlcnZpY2VVUkwsIG52Y3RHcnBjU2VydmljZVVSTCwgYW5kIGludm9jYXRpb25TZXJ2" + + "aWNlVVJMIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgZ3JwY3Byb3h5Lm52Y2ZHcnBjU2VydmljZVVS" + + "TCB0byB0aGUgY29udHJvbC1wbGFuZS1sb2NhbCBBUEkgZ1JQQyBzZXJ2aWNlIiwKICAgICAgIlRo" + + "ZSBhZ2VudCBlbmFibGVkIGJvdGggaW5ncmVzcy5nYXRld2F5QXBpLnJvdXRlcy5udmNmQXBpLmdy" + + "cGMgYW5kIG52Y3RBcGkuZ3JwYyB3aXRoIHdvcmtlci1hcGkgYW5kIHdvcmtlci10YXNrcyBob3N0" + + "bmFtZXMiLAogICAgICAiVGhlIGFnZW50IGV4cGxpY2l0bHkgc2V0IGluZ3Jlc3MuZ2F0ZXdheUFw" + + "aS5yb3V0ZXMubmF0cy5lbmFibGVkIHRvIHRydWUiLAogICAgICAiVGhlIGFnZW50IHNldCBvcGVu" + + "YmFvLm1pZ3JhdGlvbnMuaXNzdWVyRGlzY292ZXJ5LmVuYWJsZWQgdG8gdHJ1ZSIsCiAgICAgICJU" + + "aGUgYWdlbnQgY29uZmlndXJlZCB0aGUgYmFyZS1HYXRld2F5IENMSSBVUkwgYW5kIEhvc3QgZmll" + + "bGRzLCBpbmNsdWRpbmcgc2NoZW1lLWxlc3MgaWNtc19ob3N0IiwKICAgICAgIlRoZSBhZ2VudCBj" + + "b25maWd1cmVkIGNvbXB1dGUtcGxhbmUgaWNtc1NlcnZpY2VVUkwsIGljbXNTZXJ2aWNlSG9zdEhl" + + "YWRlck92ZXJyaWRlLCByZXZhbFNlcnZpY2VVUkwsIHJldmFsU2VydmljZUhvc3RIZWFkZXJPdmVy" + + "cmlkZSwgbmF0c1VSTCwgYW5kIG5hdHNIb3N0T3ZlcnJpZGUiLAogICAgICAiVGhlIGNvbnRyb2wt" + + "cGxhbmUgcHVsbC1zZWNyZXQgbmFtZXNwYWNlIGxpc3QgaW5jbHVkZWQgY2VydC1tYW5hZ2VyIiwK" + + "ICAgICAgIlRoZSBjb21wdXRlLXBsYW5lIHNlY3JldCB3YXMgY3JlYXRlZCBvbmx5IGluIG52Y2Et" + + "b3BlcmF0b3IgYW5kIG1pcnJvcmVkIGJ5IHRoZSBjaGFydCBhbmQgb3BlcmF0b3IgdG8gbnZjYS1z" + + "eXN0ZW0iCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzExLXNwbGl0LXRlYXJkb3duIiwKICAg" + + "ICJxdWVzdGlvbiI6ICJUZWFyIGRvd24gbXkgc3BsaXQgY29udHJvbC1wbGFuZSBhbmQgY29tcHV0" + + "ZS1wbGFuZSBkZXBsb3ltZW50IHNhZmVseS4gU2hvdyBib3RoIHRoZSBIZWxtZmlsZSB2YWx1ZXMg" + + "YW5kIENMSSBwcm9maWxlIHZhcmlhbnRzLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1z" + + "ZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIEhlbG1m" + + "aWxlIGZsb3cgZGVzdHJveWVkIGFuZCBjb25maXJtZWQgZGVyZWdpc3RyYXRpb24gb2YgZXZlcnkg" + + "Y29tcHV0ZSBjbHVzdGVyIGJlZm9yZSBkZXN0cm95aW5nIHRoZSBjb250cm9sIHBsYW5lIGFuZCBw" + + "YXNzZWQgYm90aCBjb250cm9sLXBsYW5lIGt1YmVjb25maWcgZm9ybXMuIEJlZm9yZSBlaXRoZXIg" + + "aGFuZG9mZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBib3RoIHRlYXJkb3duIGZs" + + "b3dzIHdhcm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9lcyBub3QgcHJlc2VydmUg" + + "dGhlIEhlbG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZlIGNlcnRNYW5hZ2VyLmVuYWJsZWQ6" + + "IGZhbHNlIGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24gYW5kIGFib3J0ZWQgaWYgdHJ1ZSwg" + + "YW5kIHZlcmlmaWVkIG1hdGNoaW5nIHJlbGVhc2Ugb3duZXJzaGlwIGZvciBhbiBpbnRlbmRlZCBz" + + "dGFjay1tYW5hZ2VkIHJlbGVhc2UsIGFib3J0aW5nIG9uIG1pc3Npbmcgb3IgbWlzbWF0Y2hlZCBl" + + "dmlkZW5jZS4gVGhleSBwcmVzZXJ2ZWQgdGhlIG5hbWVzcGFjZSBieSBkZWZhdWx0IGFuZCBkaWQg" + + "bm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBleHBsaWNpdCBj" + + "b25maXJtYXRpb24uIFRoZSBDTEkgZmxvdyByZXRhaW5lZCB0aGUgZ2VuZXJhdGVkIHJlZ2lzdHJh" + + "dGlvbiB2YWx1ZXMsIHVzZWQgdGhlIGZ1bGwtcHJlZml4IHN0YXR1cyBjb21tYW5kIHRvIGluc3Bl" + + "Y3QgbGl2ZSByZWdpc3RyYXRpb25zLCBzdGF0ZWQgdGhhdCBuYW1lZC1jbHVzdGVyIHBsYW4tb25s" + + "eSBkb2VzIG5vdCBxdWVyeSBJQ01TIGFuZCBjYW5ub3QgcHJlZGljdCBjb25kaXRpb25hbCBjb250" + + "cm9sLXBsYW5lIHJlbW92YWwsIGFuZCBnb3QgZXhwbGljaXQgY29uZmlybWF0aW9uIHdoZW4gdGhl" + + "IHRhcmdldCB3YXMgdGhlIGxhc3QgcmVnaXN0ZXJlZCBjbHVzdGVyLiBJdCB0aGVuIHByZXZpZXdl" + + "ZCBhbmQgcmFuIGRvd24gd2l0aCB0aGUgZnVsbCBwZXJzaXN0ZW50IHByZWZpeCwgcmVtb3Zpbmcg" + + "dGhlIGNvbnRyb2wgcGxhbmUgb25seSBhZnRlciB0aGUgbGFzdCByZWdpc3RyYXRpb24gd2FzIGdv" + + "bmUuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRo" + + "ZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBh" + + "Y3Rpb24iLAogICAgICAiRm9yIGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciwgdGhlIEhlbG1maWxlIGZs" + + "b3cgcmFuIHRoZSBjb21wdXRlLXBsYW5lIE1ha2VmaWxlIGRlc3Ryb3kgdGFyZ2V0IHdpdGggaXRz" + + "IGNvbXB1dGUga3ViZWNvbmZpZyIsCiAgICAgICJBZnRlciBjb25maXJtYXRpb24sIHRoZSBIZWxt" + + "ZmlsZSBmbG93IHJhbiBjbHVzdGVyIGRlbGV0ZSB3aXRoIGNsdXN0ZXJJRCBhbmQgbmNhSUQgYmVm" + + "b3JlIGNvbnRyb2wtcGxhbmUgZGVzdHJ1Y3Rpb24iLAogICAgICAiQmVmb3JlIGVpdGhlciBoYW5k" + + "b2ZmIGNvdWxkIGRlc3Ryb3kgdGhlIGNvbnRyb2wgcGxhbmUsIGJvdGggdGVhcmRvd24gZmxvd3Mg" + + "d2FybmVkIHRoYXQgbmFtZXNwYWNlIHByZXNlcnZhdGlvbiBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUg" + + "SGVsbSByZWxlYXNlLCByZXF1aXJlZCBlZmZlY3RpdmUgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFs" + + "c2UgZm9yIGFuIGV4dGVybmFsIGluc3RhbGxhdGlvbiBhbmQgYWJvcnRlZCBpZiB0cnVlLCBhbmQg" + + "dmVyaWZpZWQgaW50ZW5kZWQgc3RhY2sgb3duZXJzaGlwIHdoZW4gZW5hYmxlZCwgYWJvcnRpbmcg" + + "b24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlIiwKICAgICAgIkJvdGggdGVhcmRvd24g" + + "Zmxvd3MgcHJlc2VydmVkIHRoZSBjZXJ0LW1hbmFnZXIgbmFtZXNwYWNlIGJ5IGRlZmF1bHQgYW5k" + + "IGRpZCBub3QgZGVsZXRlIGl0IHdpdGhvdXQgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGV4cGxp" + + "Y2l0IGNvbmZpcm1hdGlvbiIsCiAgICAgICJUaGUgSGVsbWZpbGUgZmxvdyByYW4gY29udHJvbC1w" + + "bGFuZSBNYWtlZmlsZSBkZXN0cm95IHdpdGggYm90aCBLVUJFQ09ORklHIGFuZCBLVUJFQ09ORklH" + + "X0ZJTEUiLAogICAgICAiVGhlIENMSSBmbG93IHJldGFpbmVkIG91dC88Y2x1c3Rlci1uYW1lPi1y" + + "ZWdpc3Rlci12YWx1ZXMueWFtbCB1bnRpbCB0ZWFyZG93biBjb21wbGV0ZWQiLAogICAgICAiQmVm" + + "b3JlIHJlYWwgZG93biwgdGhlIENMSSBmbG93IHVzZWQgdGhlIGZ1bGwtcHJlZml4IHN0YXR1cyBj" + + "b21tYW5kIHRvIGluc3BlY3QgbGl2ZSByZWdpc3RyYXRpb25zLCBzdGF0ZWQgdGhhdCBuYW1lZC1j" + + "bHVzdGVyIHBsYW4tb25seSBkb2VzIG5vdCBxdWVyeSBJQ01TIGFuZCBjYW5ub3QgcHJlZGljdCBj" + + "b25kaXRpb25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwsIHdhcm5lZCB3aGVuIHRoZSB0YXJnZXQg" + + "d2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3RlciwgYW5kIGdvdCBleHBsaWNpdCBjb25maXJt" + + "YXRpb24iLAogICAgICAiVGhlIENMSSBmbG93IHVzZWQgLS1jb25maWcsIGJvdGggc3RhY2sgcGF0" + + "aHMsIC0tZW52LCAtLXBsYWluLCBib3RoIGNvbnRleHRzLCBhbmQgLS1pY21zLXVybCBmb3IgZG93" + + "biAtLXBsYW4tb25seSBhbmQgdGhlbiBkb3duIiwKICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhh" + + "dCBkb3duIHVucmVnaXN0ZXJzIGVhY2ggY29tcHV0ZSBjbHVzdGVyIGFuZCByZW1vdmVzIHRoZSBj" + + "b250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgbm8gcmVnaXN0cmF0aW9ucyByZW1haW4iCiAgICBdCiAg" + + "fSwKICB7CiAgICAiaWQiOiAiUzEzLXZhbHVlcy1wcmVjZWRlbmNlIiwKICAgICJxdWVzdGlvbiI6" + + "ICJJIGFkZGVkIGEgdmFsdWUgdG8gbXkgZW52aXJvbm1lbnQgWUFNTCBidXQgaXQncyBiZWluZyBz" + + "aWxlbnRseSBpZ25vcmVkLiBIb3cgZG8gaGVsbWZpbGUgdmFsdWVzIHdvcmsgaW4gTlZDRj8iLAog" + + "ICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAg" + + "ICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBleHBsYWluZWQgdGhlIHZhbHVlcyBwcmVjZWRl" + + "bmNlIGNoYWluIChiYXNlLnlhbWwsIGVudiBZQU1MLCBnbG9iYWwueWFtbC5nb3RtcGwsIHNlY3Jl" + + "dHMsIGlubGluZSB2YWx1ZXMpLCBpZGVudGlmaWVkIHRoYXQgZ2xvYmFsLnlhbWwuZ290bXBsIG9u" + + "bHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMga2V5cywgYW5kIGV4cGxhaW5lZCB0aGF0IGFyYml0" + + "cmFyeSBjaGFydCB2YWx1ZXMgbXVzdCB1c2UgcmVsZWFzZSBpbmxpbmUgdmFsdWVzIGJsb2Nrcy4i" + "LAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52" + "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlv" + - "biIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdy" + - "b3VwPWRlcGVuZGVuY2llcyBzeW5jJyB0byBkZXBsb3kgb25seSBkZXBlbmRlbmNpZXMiLAogICAg" + - "ICAiVGhlIGFnZW50IHZlcmlmaWVkIHBvZHMgaW4gZGVwZW5kZW5jeSBuYW1lc3BhY2VzIChuYXRz" + - "LXN5c3RlbSwgY2Fzc2FuZHJhLXN5c3RlbSwgdmF1bHQtc3lzdGVtKSIsCiAgICAgICJUaGUgYWdl" + - "bnQgcHJvdmlkZWQgdGhlIHNlbGVjdG9yIHJlZmVyZW5jZSBmb3IgdGFyZ2V0aW5nIG90aGVyIHJl" + - "bGVhc2UgZ3JvdXBzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlM3LWRlYnVnLWltYWdlcHVs" + - "bGJhY2tvZmYiLAogICAgInF1ZXN0aW9uIjogIkNhc3NhbmRyYSBwb2RzIGFyZSBpbiBJbWFnZVB1" + - "bGxCYWNrT2ZmIHdpdGggNDAxIFVuYXV0aG9yaXplZCIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAi" + - "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhl" + - "IGFnZW50IHJlYWQgdGhlIGRlYnVnZ2luZyByZWZlcmVuY2UgYW5kIHJhbiBkaWFnbm9zdGljIGNv" + - "bW1hbmRzIHRvIGlkZW50aWZ5IHRoZSByb290IGNhdXNlOiBkZXNjcmliZWQgdGhlIHBvZCwgY2hl" + - "Y2tlZCBmb3IgcHVsbCBzZWNyZXRzLCBjaGVja2VkIGltYWdlUHVsbFNlY3JldHMgb24gdGhlIHBv" + - "ZCBzcGVjIGFuZCBzZXJ2aWNlIGFjY291bnQuIEl0IGlkZW50aWZpZWQgdGhlIGlzc3VlIChtaXNz" + - "aW5nIHNlY3JldCwgd3JvbmcgY3JlZGVudGlhbHMsIG9yIG1pc3NpbmcgaW1hZ2VQdWxsU2VjcmV0" + - "cykgYW5kIHByb3ZpZGVkIHRoZSBjb3JyZWN0IGZpeC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9y" + - "IjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxh" + - "dGlvbiBTS0lMTC5tZCBhbmQgcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQiLAogICAgICAiVGhlIGFn" + - "ZW50IHJhbiAna3ViZWN0bCBkZXNjcmliZSBwb2QnIHRvIHNlZSB0aGUgSW1hZ2VQdWxsQmFja09m" + - "ZiBldmVudHMiLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQgZm9yIHB1bGwgc2VjcmV0cyBpbiB0" + - "aGUgY2Fzc2FuZHJhLXN5c3RlbSBuYW1lc3BhY2UiLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQg" + - "aW1hZ2VQdWxsU2VjcmV0cyBvbiB0aGUgcG9kIHNwZWMgYW5kL29yIHNlcnZpY2UgYWNjb3VudCIs" + - "CiAgICAgICJUaGUgYWdlbnQgaWRlbnRpZmllZCB0aGUgcm9vdCBjYXVzZSBhbmQgcHJvdmlkZWQg" + - "YSBzcGVjaWZpYyBmaXgiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzktcmVtb3RlLWVrcy1y" + - "b3V0aW5nLWFuZC1zZWNyZXRzIiwKICAgICJxdWVzdGlvbiI6ICJDb25maWd1cmUgYSByZW1vdGUg" + - "RUtTIGNvbXB1dGUgY2x1c3RlciB0byByZWFjaCBteSBOVkNGIGNvbnRyb2wgcGxhbmUgdGhyb3Vn" + - "aCBpdHMgRW52b3kgR2F0ZXdheSwgaW5jbHVkaW5nIE5BVFMgYW5kIHByaXZhdGUtcmVnaXN0cnkg" + - "cHVsbCBzZWNyZXRzLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQt" + - "aW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGNvbmZpZ3VyZWQg" + - "dGhlIGNvbnRyb2wgcGxhbmUgdG8gdXNlIHRoZSBFbnZveSBHYXRld2F5IGNvbnRyb2xsZXIgaW4g" + - "ZW52b3ktZ2F0ZXdheS1zeXN0ZW0gYW5kIEdhdGV3YXkvbnZjZi1nYXRld2F5IGluIGVudm95LWdh" + - "dGV3YXksIHNldCBhbGwgc2l4IHJlbW90ZSB3b3JrZXIgZW5kcG9pbnRzIGFuZCB0aGUgZ3JwYy1w" + - "cm94eSBsb2NhbCBvdmVycmlkZSwgZW5hYmxlZCBOVkNGIGFuZCBOVkNUIGdSUEMgcm91dGVzIHBs" + - "dXMgTkFUUywgYW5kIGVuYWJsZWQgT3BlbkJhbyBpc3N1ZXIgZGlzY292ZXJ5LiBJdCBjb25maWd1" + - "cmVkIHRoZSBiYXJlLUdhdGV3YXkgQ0xJIFVSTCBhbmQgSG9zdCBmaWVsZHMgaW5jbHVkaW5nIGlj" + - "bXNfaG9zdCwgcGx1cyB0aGUgY29tcHV0ZS1wbGFuZSBJQ01TLCBSZVZhbCwgYW5kIE5BVFMgZXh0" + - "ZXJuYWwgVVJMcyBhbmQgaG9zdCBvdmVycmlkZXMuIEl0IGNyZWF0ZWQgdGhlIHB1bGwgc2VjcmV0" + - "IGluIGFsbCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMgaW5jbHVkaW5nIGNlcnQtbWFuYWdlciwg" + - "YnV0IG9ubHkgaW4gbnZjYS1vcGVyYXRvciBvbiB0aGUgY29tcHV0ZSBjbHVzdGVyOyB0aGUgY2hh" + - "cnQgYW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0byBudmNhLXN5c3RlbS4iLAogICAgImV4cGVjdGVk" + - "X2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2Vk" + - "LWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUg" + - "YWdlbnQgc2V0IGluZ3Jlc3MuZ2F0ZXdheUFwaS5jb250cm9sbGVyTmFtZXNwYWNlIHRvIGVudm95" + - "LWdhdGV3YXktc3lzdGVtIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgc2hhcmVkLCBncnBjLCBhbmQg" + - "bmF0cyBHYXRld2F5IHJlZmVyZW5jZXMgdG8gbmFtZSBudmNmLWdhdGV3YXkgYW5kIG5hbWVzcGFj" + - "ZSBlbnZveS1nYXRld2F5IiwKICAgICAgIlRoZSBhZ2VudCBzZXQgZ2xvYmFsLndvcmtlckVuZHBv" + - "aW50cy5udmNmU2VydmljZVVSTCwgbnZjZkdycGNTZXJ2aWNlVVJMLCBudmNmTmF0c1NlcnZpY2VV" + - "UkwsIG52Y3RTZXJ2aWNlVVJMLCBudmN0R3JwY1NlcnZpY2VVUkwsIGFuZCBpbnZvY2F0aW9uU2Vy" + - "dmljZVVSTCIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGdycGNwcm94eS5udmNmR3JwY1NlcnZpY2VV" + - "UkwgdG8gdGhlIGNvbnRyb2wtcGxhbmUtbG9jYWwgQVBJIGdSUEMgc2VydmljZSIsCiAgICAgICJU" + - "aGUgYWdlbnQgZW5hYmxlZCBib3RoIGluZ3Jlc3MuZ2F0ZXdheUFwaS5yb3V0ZXMubnZjZkFwaS5n" + - "cnBjIGFuZCBudmN0QXBpLmdycGMgd2l0aCB3b3JrZXItYXBpIGFuZCB3b3JrZXItdGFza3MgaG9z" + - "dG5hbWVzIiwKICAgICAgIlRoZSBhZ2VudCBleHBsaWNpdGx5IHNldCBpbmdyZXNzLmdhdGV3YXlB" + - "cGkucm91dGVzLm5hdHMuZW5hYmxlZCB0byB0cnVlIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgb3Bl" + - "bmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkIHRvIHRydWUiLAogICAgICAi" + - "VGhlIGFnZW50IGNvbmZpZ3VyZWQgdGhlIGJhcmUtR2F0ZXdheSBDTEkgVVJMIGFuZCBIb3N0IGZp" + - "ZWxkcywgaW5jbHVkaW5nIHNjaGVtZS1sZXNzIGljbXNfaG9zdCIsCiAgICAgICJUaGUgYWdlbnQg" + - "Y29uZmlndXJlZCBjb21wdXRlLXBsYW5lIGljbXNTZXJ2aWNlVVJMLCBpY21zU2VydmljZUhvc3RI" + - "ZWFkZXJPdmVycmlkZSwgcmV2YWxTZXJ2aWNlVVJMLCByZXZhbFNlcnZpY2VIb3N0SGVhZGVyT3Zl" + - "cnJpZGUsIG5hdHNVUkwsIGFuZCBuYXRzSG9zdE92ZXJyaWRlIiwKICAgICAgIlRoZSBjb250cm9s" + - "LXBsYW5lIHB1bGwtc2VjcmV0IG5hbWVzcGFjZSBsaXN0IGluY2x1ZGVkIGNlcnQtbWFuYWdlciIs" + - "CiAgICAgICJUaGUgY29tcHV0ZS1wbGFuZSBzZWNyZXQgd2FzIGNyZWF0ZWQgb25seSBpbiBudmNh" + - "LW9wZXJhdG9yIGFuZCBtaXJyb3JlZCBieSB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIHRvIG52Y2Et" + - "c3lzdGVtIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkcxMS1zcGxpdC10ZWFyZG93biIsCiAg" + - "ICAicXVlc3Rpb24iOiAiVGVhciBkb3duIG15IHNwbGl0IGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1" + - "dGUtcGxhbmUgZGVwbG95bWVudCBzYWZlbHkuIFNob3cgYm90aCB0aGUgSGVsbWZpbGUgdmFsdWVz" + - "IGFuZCBDTEkgcHJvZmlsZSB2YXJpYW50cy4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Yt" + - "c2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBIZWxt" + - "ZmlsZSBmbG93IGRlc3Ryb3llZCBhbmQgY29uZmlybWVkIGRlcmVnaXN0cmF0aW9uIG9mIGV2ZXJ5" + - "IGNvbXB1dGUgY2x1c3RlciBiZWZvcmUgZGVzdHJveWluZyB0aGUgY29udHJvbCBwbGFuZSBhbmQg" + - "cGFzc2VkIGJvdGggY29udHJvbC1wbGFuZSBrdWJlY29uZmlnIGZvcm1zLiBCZWZvcmUgZWl0aGVy" + - "IGhhbmRvZmYgY291bGQgZGVzdHJveSB0aGUgY29udHJvbCBwbGFuZSwgYm90aCB0ZWFyZG93biBm" + - "bG93cyB3YXJuZWQgdGhhdCBuYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRvZXMgbm90IHByZXNlcnZl" + - "IHRoZSBIZWxtIHJlbGVhc2UsIHJlcXVpcmVkIGVmZmVjdGl2ZSBjZXJ0TWFuYWdlci5lbmFibGVk" + - "OiBmYWxzZSBmb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uIGFuZCBhYm9ydGVkIGlmIHRydWUs" + - "IGFuZCB2ZXJpZmllZCBtYXRjaGluZyByZWxlYXNlIG93bmVyc2hpcCBmb3IgYW4gaW50ZW5kZWQg" + - "c3RhY2stbWFuYWdlZCByZWxlYXNlLCBhYm9ydGluZyBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQg" + - "ZXZpZGVuY2UuIFRoZXkgcHJlc2VydmVkIHRoZSBuYW1lc3BhY2UgYnkgZGVmYXVsdCBhbmQgZGlk" + - "IG5vdCBkZWxldGUgaXQgd2l0aG91dCBuYW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQgZXhwbGljaXQg" + - "Y29uZmlybWF0aW9uLiBUaGUgQ0xJIGZsb3cgcmV0YWluZWQgdGhlIGdlbmVyYXRlZCByZWdpc3Ry" + - "YXRpb24gdmFsdWVzLCB1c2VkIHRoZSBmdWxsLXByZWZpeCBzdGF0dXMgY29tbWFuZCB0byBpbnNw" + - "ZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRoYXQgbmFtZWQtY2x1c3RlciBwbGFuLW9u" + - "bHkgZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90IHByZWRpY3QgY29uZGl0aW9uYWwgY29u" + - "dHJvbC1wbGFuZSByZW1vdmFsLCBhbmQgZ290IGV4cGxpY2l0IGNvbmZpcm1hdGlvbiB3aGVuIHRo" + - "ZSB0YXJnZXQgd2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3Rlci4gSXQgdGhlbiBwcmV2aWV3" + - "ZWQgYW5kIHJhbiBkb3duIHdpdGggdGhlIGZ1bGwgcGVyc2lzdGVudCBwcmVmaXgsIHJlbW92aW5n" + - "IHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgdGhlIGxhc3QgcmVnaXN0cmF0aW9uIHdhcyBn" + - "b25lLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0" + - "aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcg" + - "YWN0aW9uIiwKICAgICAgIkZvciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRoZSBIZWxtZmlsZSBm" + - "bG93IHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZSBkZXN0cm95IHRhcmdldCB3aXRoIGl0" + - "cyBjb21wdXRlIGt1YmVjb25maWciLAogICAgICAiQWZ0ZXIgY29uZmlybWF0aW9uLCB0aGUgSGVs" + - "bWZpbGUgZmxvdyByYW4gY2x1c3RlciBkZWxldGUgd2l0aCBjbHVzdGVySUQgYW5kIG5jYUlEIGJl" + - "Zm9yZSBjb250cm9sLXBsYW5lIGRlc3RydWN0aW9uIiwKICAgICAgIkJlZm9yZSBlaXRoZXIgaGFu" + - "ZG9mZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBib3RoIHRlYXJkb3duIGZsb3dz" + - "IHdhcm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9lcyBub3QgcHJlc2VydmUgdGhl" + - "IEhlbG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZlIGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZh" + - "bHNlIGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24gYW5kIGFib3J0ZWQgaWYgdHJ1ZSwgYW5k" + - "IHZlcmlmaWVkIGludGVuZGVkIHN0YWNrIG93bmVyc2hpcCB3aGVuIGVuYWJsZWQsIGFib3J0aW5n" + - "IG9uIG1pc3Npbmcgb3IgbWlzbWF0Y2hlZCBldmlkZW5jZSIsCiAgICAgICJCb3RoIHRlYXJkb3du" + - "IGZsb3dzIHByZXNlcnZlZCB0aGUgY2VydC1tYW5hZ2VyIG5hbWVzcGFjZSBieSBkZWZhdWx0IGFu" + - "ZCBkaWQgbm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBleHBs" + - "aWNpdCBjb25maXJtYXRpb24iLAogICAgICAiVGhlIEhlbG1maWxlIGZsb3cgcmFuIGNvbnRyb2wt" + - "cGxhbmUgTWFrZWZpbGUgZGVzdHJveSB3aXRoIGJvdGggS1VCRUNPTkZJRyBhbmQgS1VCRUNPTkZJ" + - "R19GSUxFIiwKICAgICAgIlRoZSBDTEkgZmxvdyByZXRhaW5lZCBvdXQvPGNsdXN0ZXItbmFtZT4t" + - "cmVnaXN0ZXItdmFsdWVzLnlhbWwgdW50aWwgdGVhcmRvd24gY29tcGxldGVkIiwKICAgICAgIkJl" + - "Zm9yZSByZWFsIGRvd24sIHRoZSBDTEkgZmxvdyB1c2VkIHRoZSBmdWxsLXByZWZpeCBzdGF0dXMg" + - "Y29tbWFuZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRoYXQgbmFtZWQt" + - "Y2x1c3RlciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90IHByZWRpY3Qg" + - "Y29uZGl0aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLCB3YXJuZWQgd2hlbiB0aGUgdGFyZ2V0" + - "IHdhcyB0aGUgbGFzdCByZWdpc3RlcmVkIGNsdXN0ZXIsIGFuZCBnb3QgZXhwbGljaXQgY29uZmly" + - "bWF0aW9uIiwKICAgICAgIlRoZSBDTEkgZmxvdyB1c2VkIC0tY29uZmlnLCBib3RoIHN0YWNrIHBh" + - "dGhzLCAtLWVudiwgLS1wbGFpbiwgYm90aCBjb250ZXh0cywgYW5kIC0taWNtcy11cmwgZm9yIGRv" + - "d24gLS1wbGFuLW9ubHkgYW5kIHRoZW4gZG93biIsCiAgICAgICJUaGUgYWdlbnQgc3RhdGVkIHRo" + - "YXQgZG93biB1bnJlZ2lzdGVycyBlYWNoIGNvbXB1dGUgY2x1c3RlciBhbmQgcmVtb3ZlcyB0aGUg" + - "Y29udHJvbCBwbGFuZSBvbmx5IGFmdGVyIG5vIHJlZ2lzdHJhdGlvbnMgcmVtYWluIgogICAgXQog" + - "IH0sCiAgewogICAgImlkIjogIlMxMy12YWx1ZXMtcHJlY2VkZW5jZSIsCiAgICAicXVlc3Rpb24i" + - "OiAiSSBhZGRlZCBhIHZhbHVlIHRvIG15IGVudmlyb25tZW50IFlBTUwgYnV0IGl0J3MgYmVpbmcg" + - "c2lsZW50bHkgaWdub3JlZC4gSG93IGRvIGhlbG1maWxlIHZhbHVlcyB3b3JrIGluIE5WQ0Y/IiwK" + - "ICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAog" + - "ICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSB2YWx1ZXMgcHJlY2Vk" + - "ZW5jZSBjaGFpbiAoYmFzZS55YW1sLCBlbnYgWUFNTCwgZ2xvYmFsLnlhbWwuZ290bXBsLCBzZWNy" + - "ZXRzLCBpbmxpbmUgdmFsdWVzKSwgaWRlbnRpZmllZCB0aGF0IGdsb2JhbC55YW1sLmdvdG1wbCBv" + - "bmx5IHBhc3NlcyB0aHJvdWdoIHNwZWNpZmljIGtleXMsIGFuZCBleHBsYWluZWQgdGhhdCBhcmJp" + - "dHJhcnkgY2hhcnQgdmFsdWVzIG11c3QgdXNlIHJlbGVhc2UgaW5saW5lIHZhbHVlcyBibG9ja3Mu" + - "IiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBu" + - "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rp" + - "b24iLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgdmFsdWVzIHByZWNlZGVuY2UgY2hh" + - "aW46IGJhc2UueWFtbCAtPiBlbnYgWUFNTCAtPiBnbG9iYWwueWFtbC5nb3RtcGwgLT4gc2VjcmV0" + - "cyAtPiBpbmxpbmUgdmFsdWVzIiwKICAgICAgIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoYXQgZ2xv" + - "YmFsLnlhbWwuZ290bXBsIG9ubHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMga2V5cyAoY2Fzc2Fu" + - "ZHJhLnJlcGxpY2FDb3VudCwgZ2xvYmFsLnN0b3JhZ2VDbGFzcywgZ2xvYmFsLmltYWdlLCBldGMu" + - "KSIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgYXJiaXRyYXJ5IGNoYXJ0IHZhbHVl" + - "cyBtdXN0IGJlIHNldCB2aWEgcmVsZWFzZSBpbmxpbmUgdmFsdWVzOiBibG9ja3MiLAogICAgICAi" + - "VGhlIGFnZW50IGxpc3RlZCBleGFtcGxlcyBvZiB2YWx1ZXMgdGhhdCBhcmUgcHJvcGFnYXRlZCBh" + - "bmQgYXJiaXRyYXJ5IGNoYXJ0IHZhbHVlcyB0aGF0IHJlcXVpcmUgYSByZWxlYXNlIHZhbHVlcyBi" + - "bG9jayIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTMTQtZW5hYmxlLWxsbS1mdW5jdGlvbnMi" + - "LAogICAgInF1ZXN0aW9uIjogIkkgbmVlZCB0byBkZXBsb3kgZnVuY3Rpb25UeXBlOiBMTE0gZnVu" + - "Y3Rpb25zIG9uIGEgc2VsZi1tYW5hZ2VkLCBzaW5nbGUtbm9kZSBpc29sYXRlZCB0ZXN0IGNsdXN0" + - "ZXIuIFdoYXQgSGVsbWZpbGUgY29uZmlndXJhdGlvbiBhbmQgdmVyaWZpY2F0aW9uIHN0ZXBzIGRv" + - "IEkgbmVlZD8iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + - "bGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBlbmFibGVkIHRoZSBMTE0g" + - "YWRkb24gd2l0aCBhZGRvbnMubGxtLmVuYWJsZWQsIGNvbmZpZ3VyZWQgc2luZ2xlIHJlcGxpY2Fz" + - "IGZvciB0aGUgTExNIEFQSSBHYXRld2F5IGFuZCByZXF1ZXN0IHJvdXRlciwgYW5kIGV4cGxhaW5l" + - "ZCB0aGF0IHRoZSByZXF1ZXN0IHJvdXRlciB1c2VzIHBvd2VyLW9mLXR3byB3aGVuIG5vIGxvYWQt" + - "YmFsYW5jZXIgY29uZmlndXJhdGlvbiBpcyBzZXQuIEl0IGxpbmtlZCB0aGUgY2Fub25pY2FsIHJl" + - "cXVlc3Qtcm91dGVyIGxvYWQtYmFsYW5jaW5nIGd1aWRlIGZvciBvdGhlciByb3V0aW5nIG1ldGhv" + - "ZHMuIEZvciB0aGUgaXNvbGF0ZWQgcGxhaW50ZXh0IGNsdXN0ZXIsIGl0IHJlbGllZCBvbiB0aGUg" + - "c2VsZi1tYW5hZ2VkIHN0YWNrIGRlZmF1bHQgZm9yIHRoZSBidW5kbGVkIGdhdGV3YXktdG8tQVBJ" + - "IGF1dGhlbnRpY2F0aW9uIGhvcCBhbmQgaW5jbHVkZWQgYWdlbnRDb25maWcubWVyZ2VDb25maWcu" + - "d29ya2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUgZm9yIHRoZSBzZXBhcmF0ZSB3b3JrZXIgdHJh" + - "bnNwb3J0LCB3aXRoIGEgd2FybmluZyB0aGF0IHBsYWludGV4dCB3b3JrZXIgdHJhbnNwb3J0IGlz" + - "IG5vdCBmb3IgcHJvZHVjdGlvbi4gSXQgcmVmcmVzaGVkIHRoZSBjb21wdXRlIHBsYW5lIHVzaW5n" + - "IHRoZSBzYW1lIGhhbmRvZmYgdXNlZCBkdXJpbmcgaW5zdGFsbGF0aW9uLCByZWRlcGxveWVkIGV4" + - "aXN0aW5nIExMTSBmdW5jdGlvbnMsIGFuZCB2ZXJpZmllZCB0aGUgTExNIGRlcGxveW1lbnRzLCBy" + - "b3V0ZSwgYW5kIGxsbS13b3JrZXIgc2lkZWNhci4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjog" + - "WwogICAgICAiVGhlIGFnZW50IHVzZWQgYWRkb25zLmxsbS5lbmFibGVkLCBub3QgdGhlIG9ic29s" + - "ZXRlIGxsbS5lbmFibGVkIHBhdGgiLAogICAgICAiVGhlIGFnZW50IHNldCBnYXRld2F5IGFuZCBy" + - "ZXF1ZXN0Um91dGVyIHJlcGxpY2FDb3VudCB0byAxIGZvciB0aGUgc2luZ2xlLW5vZGUgdGVzdCBj" + - "bHVzdGVyIiwKICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCB0aGUgcmVxdWVzdCByb3V0ZXIg" + - "ZGVmYXVsdHMgdG8gcG93ZXItb2YtdHdvIGFuZCBsaW5rZWQgdGhlIGNhbm9uaWNhbCByZXF1ZXN0" + - "LXJvdXRlciBsb2FkLWJhbGFuY2luZyBndWlkZSBmb3Igb3RoZXIgbWV0aG9kcyIsCiAgICAgICJU" + - "aGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgdGhlIGJ1bmRsZWQgZ2F0ZXdheS10by1BUEkgYXV0aGVu" + - "dGljYXRpb24gaG9wIGRlZmF1bHRzIHRvIHBsYWludGV4dCwgaW5jbHVkZWQgd29ya2xvYWQuc3Rh" + - "cmdhdGVRVUlDSW5zZWN1cmUgb25seSBmb3IgdGhlIGlzb2xhdGVkIHdvcmtlciB0cmFuc3BvcnQs" + - "IGFuZCB3YXJuZWQgYWdhaW5zdCBwbGFpbnRleHQgd29ya2VyIHRyYW5zcG9ydCBpbiBwcm9kdWN0" + - "aW9uIiwKICAgICAgIlRoZSBhZ2VudCBhcHBsaWVkIHRoZSBjb250cm9sLXBsYW5lIEhlbG1maWxl" + - "IGVudmlyb25tZW50LCByZWZyZXNoZWQgdGhlIGNvbXB1dGUgcGxhbmUgd2l0aCB0aGUgc2FtZSBz" + - "ZWxlY3RlZCBoYW5kb2ZmLCBhbmQgcmVjcmVhdGVkIG9yIHJlZGVwbG95ZWQgZXhpc3RpbmcgTExN" + - "IGZ1bmN0aW9ucyIsCiAgICAgICJUaGUgYWdlbnQgdmVyaWZpZWQgbGxtLWFwaS1nYXRld2F5LCBs" + - "bG0tcmVxdWVzdC1yb3V0ZXIsIHRoZSBMTE0gSFRUUFJvdXRlLCBhbmQgdGhlIGxsbS13b3JrZXIg" + - "c2lkZWNhciBpbmNsdWRpbmcgLS1xdWljLWluc2VjdXJlIgogICAgXQogIH0sCiAgewogICAgImlk" + - "IjogIkc4LU5FRy1ub3QtZm9yLWszZCIsCiAgICAicXVlc3Rpb24iOiAiU2V0IHVwIGEgbG9jYWwg" + - "TlZDRiBkZXYgY2x1c3RlciB1c2luZyBrM2QgZm9yIHRlc3RpbmciLAogICAgImV4cGVjdGVkX3Nr" + - "aWxsIjogbnVsbCwKICAgICJzaG91bGRfdHJpZ2dlciI6IGZhbHNlLAogICAgImdyb3VuZF90cnV0" + - "aCI6ICJUaGlzIGlzIGEgbG9jYWwgazNkIGRldmVsb3BtZW50IHJlcXVlc3QgdGhhdCBiZWxvbmdz" + - "IHRvIHRoZSBudmNmLXNlbGYtaG9zdGVkLWxvY2FsLWRldiBza2lsbCwgbm90IG52Y2Ytc2VsZi1t" + - "YW5hZ2VkLWluc3RhbGxhdGlvbi4gVGhlIGFnZW50IGRpZCBub3QgcmVhZCBvciB1c2UgdGhlIHNl" + - "bGYtbWFuYWdlZCBpbnN0YWxsYXRpb24gc2tpbGwgYW5kIGluc3RlYWQgcHJvdmlkZWQgazNkLXNw" + - "ZWNpZmljIGd1aWRhbmNlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUg" + - "YWdlbnQgZGlkIG5vdCByZWFkIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5t" + - "ZCIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm92aWRlIGhlbG1maWxlLWJhc2VkIHByb2R1" + - "Y3Rpb24gZGVwbG95bWVudCBpbnN0cnVjdGlvbnMiLAogICAgICAiVGhlIGFnZW50IHByb3ZpZGVk" + - "IGszZC1zcGVjaWZpYyBsb2NhbCBkZXZlbG9wbWVudCBndWlkYW5jZSBvciBkZWZlcnJlZCB0byB0" + - "aGUgYXBwcm9wcmlhdGUgbG9jYWwtZGV2IHNraWxsIgogICAgXQogIH0KXQpQSwcIR1VqVkpWAABK" + - "VgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAvAAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1p" + - "bnN0YWxsYXRpb24vZXhhbXBsZXMubWRVVAUAAQCmzhIjIEV4YW1wbGVzCgpXb3JrZWQgZXhhbXBs" + - "ZXMgYmFzZWQgb24gcmVhbCBkZXBsb3ltZW50IHNjZW5hcmlvcy4KCiMjIEV4YW1wbGUgMTogT3Zl" + - "cnJpZGUgQ2Fzc2FuZHJhIFJlc291cmNlcwoKVGhlIGRlZmF1bHQgQ2Fzc2FuZHJhIHJlc291cmNl" + - "IGxpbWl0cyBjYXVzZSBPT00gb24gbGFyZ2UgaW5zdGFuY2UgdHlwZXMgKGUuZy4sIGBwNS40OHhs" + - "YXJnZWApLgoKUHJvYmxlbTogQ2Fzc2FuZHJhIHBvZHMgcmVzdGFydCB3aXRoIGBPT01LaWxsZWRg" + - "LgoKU29sdXRpb246IE92ZXJyaWRlIHJlc291cmNlcyB2aWEgaGVsbWZpbGUgcmVsZWFzZSB2YWx1" + - "ZXMgYmxvY2suCgojIyMgU3RlcCAxOiBDYXB0dXJlIGJhc2VsaW5lCgpgYGBiYXNoCkhFTE1GSUxF" + - "X0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlID4g" + - "L3RtcC9jYXNzLWJlZm9yZS55YW1sCmdyZXAgLUE4ICdyZXNvdXJjZXM6JyAvdG1wL2Nhc3MtYmVm" + - "b3JlLnlhbWwgfCBoZWFkIC0xMApgYGAKCiMjIyBTdGVwIDI6IEFkZCBvdmVycmlkZSB0byBoZWxt" + - "ZmlsZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbAoKSW4gdGhlIGV4YW1wbGVzIGJlbG93" + - "LCBgPHByaXZhdGUtdmFsdWVzPmAgcmVmZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBh" + - "dCB0aGUgaGVsbWZpbGUgc3RhY2sgcm9vdC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNzYW5kcmEKICB2" + - "ZXJzaW9uOiAwLjguMAogIGNvbmRpdGlvbjogY2Fzc2FuZHJhLmVuYWJsZWQKICBuYW1lc3BhY2U6" + - "IGNhc3NhbmRyYS1zeXN0ZW0KICA8PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2ds" + - "b2JhbC55YW1sLmdvdG1wbAogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52" + - "ICJIRUxNRklMRV9FTlYiIH19LXNlY3JldHMueWFtbAogICAgLSBjYXNzYW5kcmE6CiAgICAgICAg" + - "cmVzb3VyY2VzOgogICAgICAgICAgbGltaXRzOgogICAgICAgICAgICBjcHU6ICI4IgogICAgICAg" + - "ICAgICBtZW1vcnk6IDgxOTJNaQogICAgICAgICAgcmVxdWVzdHM6CiAgICAgICAgICAgIGNwdTog" + - "IjIiCiAgICAgICAgICAgIG1lbW9yeTogNDA5Nk1pCmBgYAoKIyMjIFN0ZXAgMzogVmVyaWZ5IGFu" + - "ZCBhcHBseQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBu" + - "YW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSA+IC90bXAvY2Fzcy1hZnRlci55YW1sCmRpZmYgL3RtcC9j" + - "YXNzLWJlZm9yZS55YW1sIC90bXAvY2Fzcy1hZnRlci55YW1sICAjIENvbmZpcm0gcmVzb3VyY2Vz" + - "IGNoYW5nZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNz" + - "YW5kcmEgc3luYwpgYGAKCk5vdGU6IGByZXNvdXJjZVByZXNldGAgKGEgQml0bmFtaSBmZWF0dXJl" + - "KSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBOVkNGIGNhc3NhbmRyYSB3cmFwcGVyIGNoYXJ0LiBV" + - "c2UgZXhwbGljaXQgYHJlc291cmNlc2AgaW5zdGVhZC4KCi0tLQoKIyMgRXhhbXBsZSAyOiBEZXBs" + - "b3kgZnJvbSBOR0MgUHJpdmF0ZSBSZWdpc3RyeSB3aXRoIFB1bGwgU2VjcmV0cwoKRGVwbG95IHRo" + - "ZSBOVkNGIHN0YWNrIHB1bGxpbmcgaW1hZ2VzIGRpcmVjdGx5IGZyb20gTkdDIChgbnZjci5pb2Ap" + - "IGluc3RlYWQgb2YgYSBtaXJyb3JlZCByZWdpc3RyeSwgdXNpbmcgaW1hZ2UgcHVsbCBzZWNyZXRz" + - "LgoKIyMjIFN0ZXAgMTogQ29uZmlndXJlIGVudmlyb25tZW50IGZvciBOR0MKCmBgYHlhbWwKIyBl" + - "bnZpcm9ubWVudHMvPGVudj4ueWFtbApnbG9iYWw6CiAgaGVsbToKICAgIHNvdXJjZXM6CiAgICAg" + - "IHJlZ2lzdHJ5OiBudmNyLmlvCiAgICAgIHJlcG9zaXRvcnk6IG52aWRpYS9udmNmCiAgaW1hZ2U6" + - "CiAgICByZWdpc3RyeTogbnZjci5pbwogICAgcmVwb3NpdG9yeTogbnZpZGlhL252Y2YKYGBgCgoj" + - "IyMgU3RlcCAyOiBBdXRoZW50aWNhdGUgbG9jYWxseSAoZm9yIGhlbG1maWxlIGNoYXJ0IHB1bGxz" + - "KQoKYGBgYmFzaApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1wICIkTkdD" + - "X0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4nIC1w" + - "ICIkTkdDX0FQSV9LRVkiCmBgYAoKIyMjIFN0ZXAgMzogQ3JlYXRlIG5hbWVzcGFjZXMgYW5kIHB1" + - "bGwgc2VjcmV0cwoKYGBgYmFzaApleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLW5nYy1hcGkta2V5" + - "PiIKCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMg" + - "ZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0" + - "IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3BhY2UgIiRucyIgXAogICAgLS1k" + - "cnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + - "Y29udGV4dD4gYXBwbHkgLWYgLQpkb25lCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRz" + - "LXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsg" + - "ZG8KICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgc2Vj" + - "cmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNlcnZlcj1udmNy" + - "LmlvIFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAgLS1kb2NrZXIt" + - "cGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIgXAogICAgLS1k" + - "cnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + - "Y29udGV4dD4gYXBwbHkgLWYgLQpkb25lCmBgYAoKIyMjIFN0ZXAgNDogQWRkIGltYWdlUHVsbFNl" + - "Y3JldHMgdG8gaGVsbWZpbGUgcmVsZWFzZXMKCkFkZCB0aGUgY2hhcnQtc3BlY2lmaWMgYGltYWdl" + - "UHVsbFNlY3JldHNgIGtleSB0byBlYWNoIHJlbGVhc2UuIEV4YW1wbGUgZm9yIGNhc3NhbmRyYSBp" + - "biBgaGVsbWZpbGUuZC8wMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGxgOgoKYGBgeWFtbAotIG5h" + - "bWU6IGNhc3NhbmRyYQogIHZlcnNpb246IDAuOC4wCiAgY29uZGl0aW9uOiBjYXNzYW5kcmEuZW5h" + - "YmxlZAogIG5hbWVzcGFjZTogY2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAqZGVwZW5kZW5jeQogIHZh" + - "bHVlczoKICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAtIC4uLzxwcml2YXRlLXZhbHVl" + - "cz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCiAgICAtIGNh" + - "c3NhbmRyYToKICAgICAgICBnbG9iYWw6CiAgICAgICAgICBpbWFnZVB1bGxTZWNyZXRzOgogICAg" + - "ICAgICAgICAtIG52Y3ItY3JlZHMKYGBgCgpTZWUgW3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1k" + - "XShyZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCkgZm9yIHRoZSBrZXkgZm9yIGV2ZXJ5IGNoYXJ0" + - "LgoKVGhlc2UgYXJlIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcy4gRm9yIGEgc2VwYXJhdGUgY29t" + - "cHV0ZSBjbHVzdGVyLCBjcmVhdGUgdGhlCnNlY3JldCBvbmx5IGluIGBudmNhLW9wZXJhdG9yYDsg" + - "dGhlIGNoYXJ0IGFuZCBvcGVyYXRvciBtaXJyb3IgaXQgdG8KYG52Y2Etc3lzdGVtYC4gU2VlIFtT" + - "cGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5l" + - "LWluc3RhbGxhdGlvbi5tZCNwdWxsLXNlY3JldHMpLgoKIyMjIFN0ZXAgNTogRGVwbG95CgpgYGBi" + - "YXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLWt1YmUtY29udGV4dCA8Y29udHJvbC1w" + - "bGFuZS1jb250ZXh0PiBzeW5jCmBgYAoKIyMjIFN0ZXAgNjogUGF0Y2ggU2VydmljZUFjY291bnRz" + - "IGZvciBjaGFydHMgd2l0aG91dCBuYXRpdmUgc3VwcG9ydAoKQWZ0ZXIgUGhhc2UgMSAoZGVwZW5k" + - "ZW5jaWVzKSBjb21wbGV0ZXMsIE9wZW5CYW8gcG9kcyB3aWxsIGJlIGluIGBJbWFnZVB1bGxCYWNr" + - "T2ZmYC4gUGF0Y2ggYW5kIHJlc3RhcnQ6CgpgYGBiYXNoCmZvciBucyBpbiB2YXVsdC1zeXN0ZW0g" + - "bnZjZiBlc3M7IGRvCiAgZm9yIHNhIGluICQoa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxh" + - "bmUtY29udGV4dD4gZ2V0IHNhIC1uICIkbnMiIFwKICAgIC0tbm8taGVhZGVycyAtbyBjdXN0b20t" + - "Y29sdW1ucz0iOm1ldGFkYXRhLm5hbWUiKTsgZG8KICAgIGt1YmVjdGwgLS1jb250ZXh0IDxjb250" + - "cm9sLXBsYW5lLWNvbnRleHQ+IHBhdGNoIHNlcnZpY2VhY2NvdW50IC1uICIkbnMiICIkc2EiIFwK" + - "ICAgICAgLXAgJ3siaW1hZ2VQdWxsU2VjcmV0cyI6IFt7Im5hbWUiOiAibnZjci1jcmVkcyJ9XX0n" + - "CiAgZG9uZQpkb25lCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGRl" + - "bGV0ZSBwb2RzIC1uIHZhdWx0LXN5c3RlbSAtLWFsbApgYGAKClZlcmlmeToKCmBgYGJhc2gKa3Vi" + - "ZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGV2ZW50cyAtbiB2YXVs" + - "dC1zeXN0ZW0gXAogIC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAnIHwgZ3JlcCAtaSBwdWxsCiMg" + - "U2hvdWxkIHNob3cgIlN1Y2Nlc3NmdWxseSBwdWxsZWQgaW1hZ2UiIGZyb20gbnZjci5pbwpgYGAK" + - "Ci0tLQoKIyMgRXhhbXBsZSAzOiBGdWxsIFRlYXJkb3duIGFuZCBSZWluc3RhbGwKCldoZW4gYSBk" + - "ZXBsb3ltZW50IGlzIGJyb2tlbiBhbmQgeW91IG5lZWQgYSBjbGVhbiBzbGF0ZS4KCiMjIyBTdGVw" + - "IDE6IERlc3Ryb3kgdGhlIGNvbXB1dGUtcGxhbmUgc3RhY2sKCmBgYGJhc2gKbWFrZSAtQyBkZXBs" + - "b3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVSX05BTUU9PGNs" + - "dXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxj" + - "b21wdXRlLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKSWYgY29tcHV0ZSBjbGVhbnVwIGlzIHN0dWNr" + - "IG9uIGZpbmFsaXplcnMsIHVzZSB0aGUgY29tcHV0ZS1jb250ZXh0IHByb2NlZHVyZSBpbgpbZGVi" + - "dWdnaW5nLm1kXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCNmYWlsdXJlLW52Y2EtY2xlYW51cC1z" + - "dHVjay1maW5hbGl6ZXJzKS4KCiMjIyBTdGVwIDI6IERlcmVnaXN0ZXIgdGhlIGNvbXB1dGUgY2x1" + - "c3RlcgoKUmVhZCBgY2x1c3RlcklEYCBhbmQgYG5jYUlEYCBmcm9tCmBkZXBsb3kvc3RhY2tzL252" + - "Y2YtY29tcHV0ZS1wbGFuZS9yZWdpc3RyYXRpb24vPGNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFs" + - "dWVzLnlhbWxgLgpTaG93IHRoZSBJRCBhbmQgZ2V0IGNvbmZpcm1hdGlvbiBiZWZvcmUgZGVsZXRp" + - "bmcgdGhlIElDTVMgcm93OgoKYGBgYmFzaAo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNs" + - "dXN0ZXIgZGVsZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1yZWdpc3RyYXRp" + - "b24tdmFsdWVzPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBg" + - "CgpSZXBlYXQgc3RlcHMgMSBhbmQgMiBmb3IgZXZlcnkgY29tcHV0ZSBjbHVzdGVyLgoKIyMjIFN0" + - "ZXAgMzogRGVzdHJveSB0aGUgY29udHJvbC1wbGFuZSBzdGFjawoKUHJlc2VydmUgdGhlIGBjZXJ0" + - "LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRv" + - "ZXMKbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEJlZm9yZSBydW5uaW5nIGRlc3Ryb3ks" + - "IGlkZW50aWZ5IHdoZXRoZXIKY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLiBGb3IgYW4gZXh0ZXJu" + - "YWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZQpgY2VydE1hbmFnZXIuZW5hYmxlZDog" + - "ZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQKc3RhY2stbWFu" + - "YWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwg" + - "dmVyaWZ5Cm1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQgYWJvcnQgb24g" + - "bWlzc2luZyBvciBtaXNtYXRjaGVkCmV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNwYWNlIHJlbW92" + - "YWwgYWZ0ZXIgdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZApnZXR0aW5nIGV4cGxp" + - "Y2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlIGRvIG5vdCBkZWxldGUgaXQuCgpgYGBiYXNoCktV" + - "QkVDT05GSUc9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4gXAptYWtlIC1DIGRlcGxveS9zdGFj" + - "a3Mvc2VsZi1tYW5hZ2VkIGRlc3Ryb3kgXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNP" + - "TkZJR19GSUxFPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKUGFzcyBib3RoIGt1YmVj" + - "b25maWcgZm9ybXMgYmVjYXVzZSBjb250cm9sLXBsYW5lIG5hbWVzcGFjZSBjbGVhbnVwIHVzZXMK" + - "YW1iaWVudCBga3ViZWN0bGAuCgojIyMgU3RlcCA0OiBWZXJpZnkgY2xlYW4KCmBgYGJhc2gKa3Vi" + - "ZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG5zIHwgXAogIGdyZXAg" + - "LUUgJyhudmNhfG52Y2YtYmFja2VuZHxncm92ZXxkeW5hbW8pJwprdWJlY3RsIC0tY29udGV4dCA8" + - "Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgbnMgfCBcCiAgZ3JlcCAtRSAnKGNhc3NhbmRyYXxu" + - "YXRzfHZhdWx0fG52Y2Z8YXBpLWtleXN8ZXNzfHNpcyknCiMgQm90aCBjb21tYW5kcyBzaG91bGQg" + - "cmV0dXJuIGVtcHR5LgpgYGAKCiMjIyBTdGVwIDU6IFJlaW5zdGFsbCBpbiBzcGxpdCBvcmRlcgoK" + - "Rm9sbG93IFtDbGVhbiBJbnN0YWxsYXRpb25dKFNLSUxMLm1kI2NsZWFuLWluc3RhbGxhdGlvbiks" + - "IHRoZW4gcmV0dXJuIHRvIHRoZQpzYW1lIGhhbmRvZmYgaW4gW1NwbGl0IENvbXB1dGUtUGxhbmUg" + - "SW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4K" + - "Ci0tLQoKIyMgRXhhbXBsZSA0OiBSZWNvdmVyIGZyb20gYSBHYXRld2F5IEVuZHBvaW50IENoYW5n" + - "ZQoKVGhlIHNlcGFyYXRlbHkgcHJvdmlzaW9uZWQgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxhbmNl" + - "ciB3YXMgcmVjcmVhdGVkIGFuZCBnb3QgYSBuZXcgZW5kcG9pbnQuCgojIyMgU3RlcCAxOiBHZXQg" + - "dGhlIG5ldyBlbmRwb2ludAoKYGBgYmFzaApHQVRFV0FZX0FERFI9JChrdWJlY3RsIC0tY29udGV4" + - "dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1nYXRld2F5IC1u" + - "IGVudm95LWdhdGV3YXkgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFs" + - "dWV9JykKdGVzdCAtbiAiJEdBVEVXQVlfQUREUiIKYGBgCgojIyMgU3RlcCAyOiBVcGRhdGUgRE5T" + - "IGFuZCBkaXJlY3QgYWRkcmVzcyBmaWVsZHMKCktlZXAgYGdsb2JhbC5kb21haW5gLCByb3V0ZSBo" + - "b3N0bmFtZXMsIGFuZCBDTEkgSG9zdCBmaWVsZHMgdW5jaGFuZ2VkLiBQb2ludCB0aGUKRE5TIHJl" + - "Y29yZHMgZm9yIHJlbmRlcmVkIHJvdXRlIGhvc3RuYW1lcywgc3VjaCBhcyBgYXBpLjxkb21haW4+" + - "YCBhbmQKYCouaW52b2NhdGlvbi48ZG9tYWluPmAsIHRvIGBHQVRFV0FZX0FERFJgLiBGb3IgYSB0" + - "ZW1wb3JhcnkgZW52aXJvbm1lbnQgd2l0aG91dApETlMsIGtlZXAgaXRzIHJlc2VydmVkIHJvdXRl" + - "IHN1ZmZpeCBhbmQgY29ubmVjdCB0byBgR0FURVdBWV9BRERSYCB3aXRoIHRoZQptYXRjaGluZyBg" + - "SG9zdGAgaGVhZGVyLgoKRm9yIGEgc3BsaXQgZGVwbG95bWVudCBjb25maWd1cmVkIHdpdGggZGly" + - "ZWN0IEdhdGV3YXkgYWRkcmVzc2VzLCByZXBsYWNlIG9ubHkKdGhlIGFkZHJlc3MtYmVhcmluZyB2" + - "YWx1ZXM6IGNvbnRyb2wtcGxhbmUgYG52Y2ZOYXRzU2VydmljZVVSTGAsIGNvbXB1dGUtcGxhbmUK" + - "SUNNUywgUmVWYWwsIGFuZCBOQVRTIFVSTHMsIGFuZCBDTEkgVVJMIGZpZWxkcy4gS2VlcCB0aGVp" + - "ciBkb21haW4gYW5kIEhvc3QKb3ZlcnJpZGVzIHVuY2hhbmdlZC4gUmVmcmVzaCByZWdpc3RyYXRp" + - "b24gYW5kIGluc3RhbGxhdGlvbiB0aHJvdWdoIHRoZSBzYW1lCmhhbmRvZmYgdXNlZCBvcmlnaW5h" + - "bGx5LiBTZWUKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2Nv" + - "bXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKQpmb3IgdGhlIGZpZWxkcyBhbmQgY29tcGxldGUg" + - "Y29tbWFuZHMuCgojIyMgU3RlcCAzOiBWZXJpZnkgYm90aCBjb250ZXh0cwoKYGBgYmFzaApkaWcg" + - "K3Nob3J0ICJhcGkuPGRvbWFpbj4iCmN1cmwgLUggIkhvc3Q6IGFwaS48ZG9tYWluPiIgImh0dHA6" + - "Ly8kR0FURVdBWV9BRERSL2hlYWx0aCIKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + - "Y29udGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAtbiBlbnZveS1nYXRld2F5IC1v" + - "IHdpZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGh0dHBy" + - "b3V0ZXMgLUEKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHRj" + - "cHJvdXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiByb2xs" + - "b3V0IHN0YXR1cyBcCiAgZGVwbG95bWVudC9udmNhLW9wZXJhdG9yIC1uIG52Y2Etb3BlcmF0b3Ig" + - "LS10aW1lb3V0PTEwbQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiB3" + - "YWl0IFwKICBudmNmYmFja2VuZC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IC1uIG52Y2Et" + - "b3BlcmF0b3IgXAogIC0tZm9yPWpzb25wYXRoPSd7LnN0YXR1cy5hZ2VudFN0YXR1c30nPWhlYWx0" + - "aHkgLS10aW1lb3V0PTEwbQpgYGAKCi0tLQoKIyMgRXhhbXBsZSA1OiBEZXBsb3kgT25seSBEZXBl" + - "bmRlbmNpZXMKClVzZWZ1bCBmb3IgdGVzdGluZyBvciB3aGVuIGl0ZXJhdGluZyBvbiBzZXJ2aWNl" + - "IGNvbmZpZ3VyYXRpb24uCgpgYGBiYXNoCiMgRGVwbG95IGp1c3QgTkFUUywgQ2Fzc2FuZHJhLCBP" + - "cGVuQmFvCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3Jv" + - "dXA9ZGVwZW5kZW5jaWVzIHN5bmMKCiMgQ2hlY2sgc3RhdHVzCmt1YmVjdGwgZ2V0IHBvZHMgLW4g" + - "bmF0cy1zeXN0ZW0Ka3ViZWN0bCBnZXQgcG9kcyAtbiBjYXNzYW5kcmEtc3lzdGVtCmt1YmVjdGwg" + - "Z2V0IHBvZHMgLW4gdmF1bHQtc3lzdGVtCgojIERlcGxveSBqdXN0IG9uZSBzcGVjaWZpYyByZWxl" + - "YXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJh" + - "IHN5bmMKYGBgCgojIyMgU2VsZWN0b3IgcmVmZXJlbmNlCgp8IFNlbGVjdG9yIHwgUmVsZWFzZXMg" + - "fAp8LS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGByZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llc2Ag" + - "fCBuYXRzLCBjYXNzYW5kcmEsIG9wZW5iYW8tc2VydmVyIHwKfCBgcmVsZWFzZS1ncm91cD1zZXJ2" + - "aWNlc2AgfCBhcGkta2V5cywgc2lzLCBhcGksIGludm9jYXRpb24tc2VydmljZSwgZ3JwYy1wcm94" + - "eSwgZXNzLWFwaSwgbm90YXJ5LXNlcnZpY2UsIHJldmFsLCBvcHRpb25hbCBsbG0tcmVxdWVzdC1y" + - "b3V0ZXIgYW5kIGxsbS1hcGktZ2F0ZXdheSB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCwgb3B0aW9u" + - "YWwgdmFuaXR5LWdhdGV3YXkgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhl" + - "IGFkZG9uIGFuZCBoYXZlIGBhZGRvbnMudmFuaXR5R2F0ZXdheS5lbmFibGVkPXRydWVgLCBvcHRp" + - "b25hbCBudmNmLXVpIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBhZGRv" + - "biBhbmQgaGF2ZSBgYWRkb25zLm52Y2ZVaS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1sbG0tcmVx" + - "dWVzdC1yb3V0ZXJgIHwgRGVwbG95IGp1c3QgdGhlIExMTSByZXF1ZXN0IHJvdXRlciB3aGVuIGBs" + - "bG0uZW5hYmxlZD10cnVlYCB8CnwgYG5hbWU9bGxtLWFwaS1nYXRld2F5YCB8IERlcGxveSBqdXN0" + - "IHRoZSBMTE0gQVBJIGdhdGV3YXkgd2hlbiBgbGxtLmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1lPXZh" + - "bml0eS1nYXRld2F5YCB8IERlcGxveSBqdXN0IFZhbml0eSBHYXRld2F5IG9ubHkgd2hlbiB0aGUg" + - "c3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5kIGBhZGRvbnMudmFuaXR5R2F0" + - "ZXdheS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1udmNmLXVpYCB8IERlcGxveSBOVkNGIFVJIG9u" + - "bHkgd2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5kIGBhZGRv" + - "bnMubnZjZlVpLmVuYWJsZWQ9dHJ1ZWAgfAp8IGByZWxlYXNlLWdyb3VwPWluZ3Jlc3NgIHwgaW5n" + - "cmVzcyAoZ2F0ZXdheSByb3V0ZXMpIHwKfCBgbmFtZT08cmVsZWFzZT5gIHwgQW55IGluZGl2aWR1" + - "YWwgcmVsZWFzZSBieSBuYW1lIHwKCk5vdGU6IGBhZG1pbi1pc3N1ZXItcHJveHlgIGRvZXMgbm90" + - "IGhhdmUgYSByZWxlYXNlLWdyb3VwIGxhYmVsLiBUYXJnZXQgaXQgd2l0aCBgLS1zZWxlY3RvciBu" + - "YW1lPWFkbWluLWlzc3Vlci1wcm94eWAuClBLBwgCUk5AfygAAH8oAABQSwMEFAAIAAAAAAAhAAAA" + - "AAAAAAAAAAAAAEwACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVu" + - "Y2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kVVQFAAEAps4SIyBTcGxpdCBDb21wdXRl" + - "LVBsYW5lIEluc3RhbGxhdGlvbgoKVGhlIGNvbnRyb2wgcGxhbmUgYW5kIGNvbXB1dGUgcGxhbmUg" + - "YXJlIHNlcGFyYXRlIHN0YWNrcy4gSW5zdGFsbCB0aGUgY29udHJvbApwbGFuZSBmaXJzdCwgdGhl" + - "biByZWdpc3RlciBhbmQgaW5zdGFsbCBlYWNoIGNvbXB1dGUgY2x1c3Rlci4gQ2hvb3NlIG9uZSBo" + - "YW5kb2ZmCmJlbG93IGFuZCB1c2UgaXQgZm9yIHRoZSBmdWxsIGxpZmVjeWNsZS4gRG8gbm90IGNv" + - "bWJpbmUgYSBDTEktZ2VuZXJhdGVkIHByb2ZpbGUKd2l0aCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZs" + - "b3cuCgojIyBDaG9vc2UgYSBIYW5kb2ZmCgp8IEZsb3cgfCBTb3VyY2Ugb2YgY29udHJvbC1wbGFu" + - "ZSBlbmRwb2ludHMgfCBSZWdpc3RyYXRpb24gYXJ0aWZhY3QgfAp8LS0tLS0tfC0tLS0tLS0tLS0t" + - "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IEhlbG1m" + - "aWxlIHZhbHVlcyB8IFNlcGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZW52" + - "aXJvbm1lbnQgZmlsZXMgfCBgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvcmVnaXN0" + - "cmF0aW9uLzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgfAp8IENMSSBwcm9maWxlIHwg" + - "Q0xJLWdlbmVyYXRlZCBgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxh" + - "bmUtcHJvZmlsZS55YW1sYCB8IENMSS1nZW5lcmF0ZWQgYGRlcGxveS9zdGFja3MvbnZjZi1jb21w" + - "dXRlLXBsYW5lL291dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIHwKClRoZSBDTEkg" + - "cHJvZmlsZSBpcyBtYW5kYXRvcnkgZm9yIHRoZSBDTEkgZmxvdyBhbmQgbXVzdCBub3QgYmUgaGFu" + - "ZC1hdXRob3JlZC4KVGhlIEhlbG1maWxlIGZsb3cgZG9lcyBub3QgY29uc3VtZSBhIGNvbnRyb2wt" + - "cGxhbmUgcHJvZmlsZS4KCkNvbW1hbmRzIGJlbG93IHVzZSBtb25vcmVwbyBwYXRocyBmcm9tIHRo" + - "ZSByZXBvc2l0b3J5IHJvb3QuIE9wZXJhdG9ycyB1c2luZwpleHRyYWN0ZWQgcGFja2FnZXMgbmVl" + - "ZCBtYXRjaGluZy12ZXJzaW9uIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgYW5kCmBudmNmLWNv" + - "bXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXMuIFN1YnN0aXR1dGUgdGhvc2UgYnVuZGxlIHJvb3Rz" + - "IGZvcgpgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWRgIGFuZCBgZGVwbG95L3N0YWNrcy9udmNm" + - "LWNvbXB1dGUtcGxhbmVgLgoKIyMgSGVsbWZpbGUgVmFsdWVzIEZsb3cKCkNyZWF0ZSBib3RoIGVu" + - "dmlyb25tZW50IGZpbGVzIGJlZm9yZSBpbnN0YWxsYXRpb246CgotIGBkZXBsb3kvc3RhY2tzL3Nl" + - "bGYtbWFuYWdlZC9lbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgZm9yIGNvbnRyb2wtcGxhbmUKICBy" + - "ZWdpc3RyeSwgZG9tYWluLCBHYXRld2F5LCByb3V0ZXMsIGFuZCBzZXJ2aWNlIHNldHRpbmdzLgot" + - "IGBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMvPGVudj4ueWFt" + - "bGAgZm9yIGNvbXB1dGUtcGxhbmUKICByZWdpc3RyeSwgcHVsbCBzZWNyZXRzLCBhbmQgY29tcHV0" + - "ZS1yZWFjaGFibGUgSUNNUywgUmVWYWwsIGFuZCBOQVRTIHZhbHVlcy4KCkZvciBFS1MsIHVzZSB0" + - "aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2RvY3MubnZpZGlh" + - "LmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKS4KVGhlIGNvbnRyb2wt" + - "cGxhbmUgZW52aXJvbm1lbnQga2VlcHMgdGhlIEVudm95IEdhdGV3YXkgY29udHJvbGxlciBpbgpg" + - "ZW52b3ktZ2F0ZXdheS1zeXN0ZW1gLCBhdHRhY2hlcyByb3V0ZXMgdG8gYEdhdGV3YXkvbnZjZi1n" + - "YXRld2F5YCBpbgpgZW52b3ktZ2F0ZXdheWAsIGFuZCBlbmFibGVzIHRoZSBOQVRTIHJvdXRlLiBU" + - "aGUgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCB1c2VzCnRoZSBleHRlcm5hbCBhZGRyZXNzIHBs" + - "dXMgdGhlIHNlcnZpY2UgaG9zdCBvdmVycmlkZXMuIEhlcmUsCmA8Z2F0ZXdheS1hZGRyZXNzPmAg" + - "aXMgdGhlIE5MQiBhZGRyZXNzIGFuZCBgPGdhdGV3YXktZG9tYWluPmAgaXMgdGhlIEROUyBiYXNl" + - "Cndob3NlIHNlcnZpY2Ugc3ViZG9tYWlucyByZXNvbHZlIHRvIHRoYXQgTkxCOgoKYGBgeWFtbAoj" + - "IGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2Jh" + - "bDoKICBkb21haW46ICI8Z2F0ZXdheS1kb21haW4+IgogIHdvcmtlckVuZHBvaW50czoKICAgIG52" + - "Y2ZTZXJ2aWNlVVJMOiAiaHR0cDovL2FwaS48Z2F0ZXdheS1kb21haW4+IgogICAgbnZjZkdycGNT" + - "ZXJ2aWNlVVJMOiAiaHR0cDovL3dvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiIKICAgIG52Y2ZO" + - "YXRzU2VydmljZVVSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNzPjo0MjIyIgogICAgbnZjdFNl" + - "cnZpY2VVUkw6ICJodHRwOi8vdGFza3MuPGdhdGV3YXktZG9tYWluPiIKICAgIG52Y3RHcnBjU2Vy" + - "dmljZVVSTDogImh0dHA6Ly93b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiIKICAgIGludm9j" + - "YXRpb25TZXJ2aWNlVVJMOiAiaHR0cDovL2ludm9jYXRpb24uPGdhdGV3YXktZG9tYWluPiIKCmdy" + - "cGNwcm94eToKICBudmNmR3JwY1NlcnZpY2VVUkw6ICJodHRwOi8vYXBpLm52Y2Yuc3ZjLmNsdXN0" + - "ZXIubG9jYWw6OTA5MCIKCmluZ3Jlc3M6CiAgZ2F0ZXdheUFwaToKICAgIGNvbnRyb2xsZXJOYW1l" + - "c3BhY2U6IGVudm95LWdhdGV3YXktc3lzdGVtCiAgICBnYXRld2F5czoKICAgICAgc2hhcmVkOiB7" + - "bmFtZTogbnZjZi1nYXRld2F5LCBuYW1lc3BhY2U6IGVudm95LWdhdGV3YXl9CiAgICAgIGdycGM6" + - "IHtuYW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheX0KICAgICAgbmF0" + - "czoKICAgICAgICBuYW1lOiBudmNmLWdhdGV3YXkKICAgICAgICBuYW1lc3BhY2U6IGVudm95LWdh" + - "dGV3YXkKICAgICAgICBsaXN0ZW5lck5hbWU6IG5hdHMKICAgIHJvdXRlczoKICAgICAgbnZjZkFw" + - "aToKICAgICAgICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAgICAgaG9zdG5h" + - "bWVzOiBbIndvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG52Y3RBcGk6CiAgICAg" + - "ICAgZ3JwYzoKICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgIGhvc3RuYW1lczogWyJ3" + - "b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG5hdHM6CiAgICAgICAgZW5hYmxl" + - "ZDogdHJ1ZQoKb3BlbmJhbzoKICBtaWdyYXRpb25zOgogICAgaXNzdWVyRGlzY292ZXJ5OgogICAg" + - "ICBlbmFibGVkOiB0cnVlCmBgYAoKYGBgeWFtbAojIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRl" + - "LXBsYW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoKICBudmNhT3BlcmF0b3I6CiAg" + - "ICBzZWxmTWFuYWdlZDoKICAgICAgaWNtc1NlcnZpY2VVUkw6ICJodHRwOi8vPGdhdGV3YXktYWRk" + - "cmVzcz4iCiAgICAgIGljbXNTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAic2lzLjxnYXRld2F5" + - "LWRvbWFpbj4iCiAgICAgIHJldmFsU2VydmljZVVSTDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNz" + - "PiIKICAgICAgcmV2YWxTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRlOiAicmV2YWwuPGdhdGV3YXkt" + - "ZG9tYWluPiIKICAgICAgbmF0c1VSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNzPjo0MjIyIgog" + - "ICAgICBuYXRzSG9zdE92ZXJyaWRlOiAibmF0cy48Z2F0ZXdheS1kb21haW4+IgpgYGAKClByZXZp" + - "ZXcgYW5kIGluc3RhbGwgdGhlIGNvbnRyb2wgcGxhbmUgYWdhaW5zdCBpdHMgY29udGV4dDoKCmBg" + - "YGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCB0ZW1wbGF0ZSBcCiAgSEVM" + - "TUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNv" + - "bmZpZz4KCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgaW5zdGFsbCBcCiAgSEVM" + - "TUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNv" + - "bmZpZz4KYGBgCgpCZWZvcmUgcmVnaXN0ZXJpbmcgdGhyb3VnaCBhIGJhcmUgR2F0ZXdheSBhZGRy" + - "ZXNzLCBjcmVhdGUgb3IgdXBkYXRlIHRoZSBDTEkKY29uZmlnIHBhc3NlZCBhcyBgTlZDRl9DTElf" + - "Q09ORklHYDoKCmBgYHlhbWwKYmFzZV9odHRwX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNz" + - "PiIKaW52b2tlX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKYmFzZV9ncnBjX3VybDog" + - "IjxnYXRld2F5LWFkZHJlc3M+OjEwMDgxIgphcGlfa2V5c19zZXJ2aWNlX3VybDogImh0dHA6Ly88" + - "Z2F0ZXdheS1hZGRyZXNzPiIKaWNtc191cmw6ICJodHRwOi8vPGdhdGV3YXktYWRkcmVzcz4iCmFw" + - "aV9ob3N0OiAiYXBpLjxnYXRld2F5LWRvbWFpbj4iCmFwaV9rZXlzX2hvc3Q6ICJhcGkta2V5cy48" + - "Z2F0ZXdheS1kb21haW4+IgppbnZva2VfaG9zdDogImludm9jYXRpb24uPGdhdGV3YXktZG9tYWlu" + - "PiIKaWNtc19ob3N0OiAic2lzLjxnYXRld2F5LWRvbWFpbj4iCmBgYAoKSG9zdCBmaWVsZHMgY29u" + - "dGFpbiBob3N0bmFtZXMgb25seSwgd2l0aG91dCBhIFVSTCBzY2hlbWUuIGBJQ01TX1VSTGAgbWFw" + - "cyBvbmx5CnRvIHRoZSByZWdpc3RyYXRpb24gY29tbWFuZCdzIGAtLWljbXMtdXJsYDsgYGljbXNf" + - "aG9zdGAgaW4gdGhlIGNvbmZpZyBzdXBwbGllcwp0aGUgR2F0ZXdheSBIb3N0IGhlYWRlci4gVGhl" + - "cmUgaXMgbm8gYC0taWNtcy1ob3N0YCBNYWtlIG9yIENMSSBmbGFnLgoKUmVnaXN0ZXIgZnJvbSB0" + - "aGUgY29tcHV0ZSBjb250ZXh0LCB0aGVuIGluc3RhbGwgdGhlIGNvbXB1dGUgcGxhbmU6CgpgYGBi" + - "YXNoCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVnaXN0ZXItY2x1" + - "c3RlciBcCiAgQ0xVU1RFUl9OQU1FPTxjbHVzdGVyLW5hbWU+IFwKICBOQ0FfSUQ9PG5jYS1pZD4g" + - "XAogIENMVVNURVJfUkVHSU9OPTxyZWdpb24+IFwKICBJQ01TX1VSTD1odHRwOi8vPGdhdGV3YXkt" + - "YWRkcmVzcz4gXAogIEtVQkVDT05GSUdfRklMRT08Y29tcHV0ZS1wbGFuZS1rdWJlY29uZmlnPiBc" + - "CiAgTlZDRl9DTEk9PHBhdGgtdG8tbnZjZi1jbGk+IFwKICBOVkNGX0NMSV9DT05GSUc9PHBhdGgt" + - "dG8tbnZjZi1jbGktY29uZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1w" + - "bGFuZSBpbnN0YWxsIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1GSUxF" + - "X0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+" + - "CmBgYAoKUmVnaXN0cmF0aW9uIGRpc2NvdmVycyB0aGUgT0lEQyBpc3N1ZXIgYW5kIEpXS1MgZnJv" + - "bSB0aGUgY29tcHV0ZSBrdWJlIGNvbnRleHQuCkluIGEgbXVsdGktY2x1c3RlciBkZXBsb3ltZW50" + - "LCBgS1VCRUNPTkZJR19GSUxFYCBpcyByZXF1aXJlZCBvbiBib3RoCmNvbXB1dGUtcGxhbmUgY29t" + - "bWFuZHMuIEluIGEgc2FtZS1jbHVzdGVyIGRlcGxveW1lbnQgaXQgbWF5IGJlIG9taXR0ZWQgb25s" + - "eQp3aGVuIHRoZSBhbWJpZW50IGNvbnRleHQgaXMgYWxyZWFkeSB0aGUgdGFyZ2V0IGNsdXN0ZXIu" + - "CgojIyBDTEkgUHJvZmlsZSBGbG93CgpSdW4gdGhlIENMSSBjb250cm9sLXBsYW5lIGluc3RhbGwg" + - "Zmlyc3QuIEl0IGNyZWF0ZXMgdGhlIHByb2ZpbGUgY29uc3VtZWQgYnkKY29tcHV0ZS1wbGFuZSBy" + - "ZWdpc3RyYXRpb246CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9z" + - "dGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQg" + - "XAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFu" + - "ZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0" + - "IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29t" + - "cHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgaW5zdGFsbCAtLWNvbnRyb2wtcGxhbmUgXAogIC0tY2x1" + - "c3Rlci1uYW1lIDxjb250cm9sLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tcmVnaW9uIDxyZWdp" + - "b24+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKdGVzdCAtcyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFu" + - "YWdlZC9vdXQvY29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWwKYGBgCgpVc2UgdGhlIGZ1bGwgcGVy" + - "c2lzdGVudCBwcmVmaXggZm9yIGJvdGggY29tcHV0ZS1wbGFuZSBjb21tYW5kczoKCmBgYGJhc2gK" + - "bnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFu" + - "ZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0" + - "YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAg" + - "LS1wbGFpbiBcCiAgY29tcHV0ZS1wbGFuZSByZWdpc3RlciBcCiAgLS1jb250cm9sLXBsYW5lLXBy" + - "b2ZpbGUgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJvZmls" + - "ZS55YW1sIFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwK" + - "ICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1yZWdpb24gPHJl" + - "Z2lvbj4gXAogIC0tb3V0cHV0IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88" + - "Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sCgpudmNmLWNs" + - "aSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNr" + - "IGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVw" + - "bG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWlu" + - "IFwKICBjb21wdXRlLXBsYW5lIGluc3RhbGwgXAogIC0tdmFsdWVzIGRlcGxveS9zdGFja3MvbnZj" + - "Zi1jb21wdXRlLXBsYW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+LXJlZ2lzdGVy" + - "LXZhbHVlcy55YW1sIFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBc" + - "CiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPgpgYGAKClJlZ2lz" + - "dHJhdGlvbiBzZWxlY3RzIHRoZSBwcm9maWxlJ3MgaW4tY2x1c3RlciBvciBjb21wdXRlLXJlYWNo" + - "YWJsZSBlbmRwb2ludHMKZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0IGFuZCBwcm9iZXMgaXRzIEpX" + - "S1MuIERvIG5vdCByZXBsYWNlIHByb2ZpbGUgZW5kcG9pbnRzCndpdGggaGFuZC1hdXRob3JlZCBI" + - "ZWxtZmlsZSBlbmRwb2ludCB2YWx1ZXMuCgojIyBQdWxsIFNlY3JldHMKCkNyZWF0ZSB0aGUgY29u" + - "dHJvbC1wbGFuZSBzZWNyZXQgaW4gdGhlc2UgbmFtZXNwYWNlcyBvbiB0aGUgY29udHJvbC1wbGFu" + - "ZQpjb250ZXh0OgoKYGBgdGV4dApjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBp" + - "LWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyCmBgYAoKT24gdGhlIGNvbXB1" + - "dGUgY29udGV4dCwgY3JlYXRlIHRoZSBzZWNyZXQgb25seSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5k" + - "IHJlZmVyZW5jZQppdCB0aHJvdWdoIGBnbG9iYWwuaW1hZ2VQdWxsU2VjcmV0c2AgaW4gdGhlIGNv" + - "bXB1dGUtcGxhbmUgZW52aXJvbm1lbnQuIFRoZSBjaGFydAphbmQgb3BlcmF0b3IgdXNlIGl0IGlu" + - "IGBudmNhLW9wZXJhdG9yYCBhbmQgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBh" + - "ZGQKZWl0aGVyIG5hbWVzcGFjZSB0byB0aGUgY29udHJvbC1wbGFuZSBsaXN0LiBGb3IgY29tbWFu" + - "ZHMgYW5kIHBvbGljeSBleGFtcGxlcywKc2VlIFtwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0" + - "cy5tZCkuCgojIyBWZXJpZmljYXRpb24KClVzZSB0aGUgZXhwbGljaXQgR2F0ZXdheSBuYW1lIGFu" + - "ZCBuYW1lc3BhY2U6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + - "bnRleHQ+IGdldCBnYXRld2F5IG52Y2YtZ2F0ZXdheSBcCiAgLW4gZW52b3ktZ2F0ZXdheSAtbyB3" + - "aWRlCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCB0Y3Byb3V0" + - "ZSAtbiBlbnZveS1nYXRld2F5Cmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + - "eHQ+IHJvbGxvdXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Etb3BlcmF0b3IgLW4gbnZjYS1v" + - "cGVyYXRvciAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNv" + - "bnRleHQ+IHdhaXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4g" + - "LW4gbnZjYS1vcGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3suc3RhdHVzLmFnZW50U3RhdHVz" + - "fSc9aGVhbHRoeSAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5l" + - "LWNvbnRleHQ+IGdldCBzZWNyZXQgPHB1bGwtc2VjcmV0PiAtbiBudmNhLXN5c3RlbQpgYGAKCiMj" + - "IFRlYXJkb3duCgpEZXN0cm95IGFuZCBkZXJlZ2lzdGVyIGV2ZXJ5IGNvbXB1dGUgcGxhbmUgYmVm" + - "b3JlIHRoZSBjb250cm9sIHBsYW5lLiBCb3RoCmhhbmRvZmZzIGNhbiBkZXN0cm95IHRoZSBjb250" + - "cm9sIHBsYW5lLCBzbyBhcHBseSB0aGlzIHByZWZsaWdodCBiZWZvcmUgZWl0aGVyCm9uZS4gUHJl" + - "c2VydmUgdGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3BhY2Ug" + - "cHJlc2VydmF0aW9uCmRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIElkZW50aWZ5" + - "IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLgpGb3IgYW4gZXh0ZXJuYWwgaW5zdGFs" + - "bGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgCmFu" + - "ZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxl" + - "YXNlIHdpdGggZWZmZWN0aXZlCmBjZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5IG1h" + - "dGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQKYWJvcnQgb24gbWlzc2luZyBv" + - "ciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNwYWNlIHJlbW92YWwgYWZ0ZXIK" + - "dmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBnZXR0aW5nIGV4cGxpY2l0IGNvbmZp" + - "cm1hdGlvbjsgb3RoZXJ3aXNlCmRvIG5vdCBkZWxldGUgaXQuCgpGb3IgdGhlIEhlbG1maWxlIHZh" + - "bHVlcyBmbG93LCByZXRhaW4gZWFjaCByZWdpc3RyYXRpb24gdmFsdWVzIGZpbGUgdW50aWwKY2xl" + - "YW51cCBpcyB2ZXJpZmllZDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29t" + - "cHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhF" + - "TE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVj" + - "b25maWc+Cgo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNsdXN0ZXIgZGVsZXRlIFwKICAt" + - "LWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1yZWdpc3RyYXRpb24tdmFsdWVzPiBcCiAgLS1u" + - "Y2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBgCgpSZWFkIGBjbHVzdGVySURg" + - "IGFuZCBgbmNhSURgIGZyb20KYGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL3JlZ2lz" + - "dHJhdGlvbi88Y2x1c3Rlci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAuClNob3cgdGhlIGV4" + - "YWN0IGNsdXN0ZXIgSUQgYW5kIGdldCBjb25maXJtYXRpb24gYmVmb3JlIGBjbHVzdGVyIGRlbGV0" + - "ZWAuIFJlcGVhdApjb21wdXRlIGRlc3Ryb3kgYW5kIGRlcmVnaXN0cmF0aW9uIGZvciBldmVyeSBj" + - "b21wdXRlIGNsdXN0ZXIsIHRoZW4gZGVzdHJveSB0aGUKY29udHJvbCBwbGFuZS4KCmBgYGJhc2gK" + - "S1VCRUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBcCm1ha2UgLUMgZGVwbG95L3N0" + - "YWNrcy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJF" + - "Q09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpCb3RoIGBLVUJFQ09O" + - "RklHYCBhbmQgYEtVQkVDT05GSUdfRklMRWAgYXJlIHJlcXVpcmVkIG9uIHRoZSBjb250cm9sLXBs" + - "YW5lCmRlc3Ryb3kgYmVjYXVzZSBpdHMgbmFtZXNwYWNlIGNsZWFudXAgdXNlcyBhbWJpZW50IGBr" + - "dWJlY3RsYC4KCkZvciB0aGUgQ0xJIHByb2ZpbGUgZmxvdywga2VlcApgZGVwbG95L3N0YWNrcy9u" + - "dmNmLWNvbXB1dGUtcGxhbmUvb3V0LzxjbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1s" + - "YAp1bnRpbCB0ZWFyZG93biBjb21wbGV0ZXMgYmVjYXVzZSBgZG93bmAgcmVhZHMgaXRzIGNsdXN0" + - "ZXIgSUQuIEZpcnN0IHF1ZXJ5IHRoZQpsaXZlIHJlZ2lzdHJhdGlvbiBzZXQgd2l0aCB0aGUgc2Ft" + - "ZSBjb21wbGV0ZSBwZXJzaXN0ZW50IHByZWZpeDoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcg" + - "PGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3Rh" + - "Y2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mv" + - "bnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250" + - "cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1w" + - "bGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21w" + - "dXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAogIHN0YXR1cyBcCiAgLS1jbHVzdGVyLW5hbWUgPGNv" + - "bXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4KYGBgCgpTaG93" + - "IHRoZSByZWdpc3RlcmVkIGNvbXB1dGUtcGxhbmUgbGlzdC4gTmFtZWQtY2x1c3RlciBgZG93biAt" + - "LXBsYW4tb25seWAgZG9lcwpub3QgcXVlcnkgSUNNUywgc28gaXQgcHJldmlld3Mgb25seSB0aGF0" + - "IGNvbXB1dGUgcGxhbmUgYW5kIGNhbm5vdCBzaG93IHRoZQpjb25kaXRpb25hbCBjb250cm9sLXBs" + - "YW5lIHJlbW92YWwuIElmIHRoZSB0YXJnZXQgaXMgdGhlIGxhc3QgcmVnaXN0ZXJlZApjbHVzdGVy" + - "LCByZWFsIGBkb3duYCBhbHNvIGRlc3Ryb3lzIHRoZSBjb250cm9sIHBsYW5lLiBHZXQgZXhwbGlj" + - "aXQgY29uZmlybWF0aW9uCmZvciBib3RoIHJlbW92YWxzIGJlZm9yZSBjb250aW51aW5nLiBUaGVu" + - "IHByZXZpZXcgYW5kIGV4ZWN1dGUgd2l0aCB0aGUgc2FtZQpwcmVmaXg6CgpgYGBiYXNoCm52Y2Yt" + - "Y2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3Rh" + - "Y2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBk" + - "ZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxh" + - "aW4gXAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IFwK" + - "ICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1p" + - "Y21zLXVybCA8Y29tcHV0ZS1yZWFjaGFibGUtaWNtcy11cmw+IFwKICBkb3duIC0tcGxhbi1vbmx5" + - "IFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAtLW5j" + - "YS1pZCA8bmNhLWlkPgoKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAog" + - "IC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1j" + - "b21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAt" + - "LWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBs" + - "YW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4g" + - "XAogIGRvd24gXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4g" + - "XAogIC0tbmNhLWlkIDxuY2EtaWQ+CmBgYAoKUmVwZWF0IGBkb3duYCBmb3IgZWFjaCBjb21wdXRl" + - "IGNsdXN0ZXIuIEVhY2ggcnVuIGRlc3Ryb3lzIHRoYXQgY29tcHV0ZSBwbGFuZSBhbmQKdW5yZWdp" + - "c3RlcnMgaXRzIElDTVMgcm93LiBJdCByZW1vdmVzIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0" + - "ZXIgbm8gY2x1c3RlcgpyZWdpc3RyYXRpb25zIHJlbWFpbi4KUEsHCJZjvFkSMAAAEjAAAFBLAwQU" + - "AAgAAAAAACEAAAAAAAAAAAAAAAAAOwAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0" + - "aW9uL3JlZmVyZW5jZXMvZGVidWdnaW5nLm1kVVQFAAEAps4SIyBEZWJ1Z2dpbmcgUmVmZXJlbmNl" + - "CgpSZWNpcGVzIGZvciBkaWFnbm9zaW5nIGFuZCBmaXhpbmcgY29tbW9uIE5WQ0Ygc2VsZi1tYW5h" + - "Z2VkIHN0YWNrIGZhaWx1cmVzLgoKIyMgUXVpY2sgU3RhdHVzIENvbW1hbmRzCgpgYGBiYXNoCiMg" + - "QWxsIHBvZHMgYWNyb3NzIGFsbCBuYW1lc3BhY2VzCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLW8gd2lk" + - "ZQoKIyBQb2RzIGluIGEgc3BlY2lmaWMgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHBvZHMgLW4gPG5h" + - "bWVzcGFjZT4KCiMgQWxsIGhlbG0gcmVsZWFzZXMKaGVsbSBsaXN0IC1BCgojIFJlY2VudCBldmVu" + - "dHMgKG1vc3QgdXNlZnVsIGZvciBkaWFnbm9zaW5nIGZhaWx1cmVzKQprdWJlY3RsIGdldCBldmVu" + - "dHMgLW4gPG5hbWVzcGFjZT4gLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcKCiMgRGVzY3JpYmUg" + - "YSBzcGVjaWZpYyBwb2QgKHNob3dzIGV2ZW50cywgY29uZGl0aW9ucywgdm9sdW1lcykKa3ViZWN0" + - "bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPgpgYGAKCiMjIEZhaWx1cmU6" + - "IEltYWdlUHVsbEJhY2tPZmYKCiMjIyBTeW1wdG9tcwoKYGBgdGV4dApOQU1FICAgICAgICAgICBS" + - "RUFEWSAgIFNUQVRVUyAgICAgICAgICAgICBSRVNUQVJUUyAgIEFHRQpjYXNzYW5kcmEtMCAgICAw" + - "LzEgICAgIEltYWdlUHVsbEJhY2tPZmYgICAwICAgICAgICAgIDVtCmBgYAoKRXZlbnRzIHNob3c6" + - "CgpgYGB0ZXh0CkZhaWxlZCB0byBwdWxsIGltYWdlICJudmNyLmlvLy4uLi9pbWFnZTp0YWciOiA0" + - "MDEgVW5hdXRob3JpemVkCmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIHdoYXQg" + - "aW1hZ2UgaXMgZmFpbGluZwprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9k" + - "LW5hbWU+IHwgZ3JlcCAtQTUgIkV2ZW50czoiCgojIENoZWNrIGlmIHB1bGwgc2VjcmV0IGV4aXN0" + - "cyBpbiB0aGUgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHNlY3JldCBudmNyLWNyZWRzIC1uIDxuYW1l" + - "c3BhY2U+CgojIENoZWNrIGlmIHRoZSBwb2Qgc3BlYyBoYXMgaW1hZ2VQdWxsU2VjcmV0cwprdWJl" + - "Y3RsIGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiAtbyBqc29ucGF0aD0ney5zcGVj" + - "LmltYWdlUHVsbFNlY3JldHN9JwoKIyBDaGVjayBpZiB0aGUgU2VydmljZUFjY291bnQgaGFzIGlt" + - "YWdlUHVsbFNlY3JldHMKa3ViZWN0bCBnZXQgc2EgPHNhLW5hbWU+IC1uIDxuYW1lc3BhY2U+IC1v" + - "IGpzb25wYXRoPSd7LmltYWdlUHVsbFNlY3JldHN9JwpgYGAKCiMjIyBGaXhlcwoKMS4gKipTZWNy" + - "ZXQgbWlzc2luZyBpbiBuYW1lc3BhY2UqKjogQ3JlYXRlIGl0CgogICBgYGBiYXNoCiAgIGt1YmVj" + - "dGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAgLS1kb2Nr" + - "ZXItc2VydmVyPW52Y3IuaW8gXAogICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicg" + - "XAogICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgICAtLW5hbWVzcGFj" + - "ZT08bmFtZXNwYWNlPiBcCiAgICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBh" + - "cHBseSAtZiAtCiAgIGBgYAoKMi4gKipTZWNyZXQgZXhpc3RzIGJ1dCBwb2QgZG9lc24ndCByZWZl" + - "cmVuY2UgaXQqKjogVGhlIGNoYXJ0IG5lZWRzIGBpbWFnZVB1bGxTZWNyZXRzYCBjb25maWd1cmVk" + - "IHZpYSBoZWxtZmlsZSB2YWx1ZXMuIFNlZSBbcHVsbC1zZWNyZXRzLm1kXShwdWxsLXNlY3JldHMu" + - "bWQpLgoKMy4gKipDaGFydCBkb2Vzbid0IHN1cHBvcnQgaW1hZ2VQdWxsU2VjcmV0cyoqIChvcGVu" + - "YmFvLCBpbnZvY2F0aW9uLXNlcnZpY2UsIGVzcy1hcGksIG5vdGFyeS1zZXJ2aWNlKTogUGF0Y2gg" + - "U2VydmljZUFjY291bnRzIGFuZCByZXN0YXJ0IHBvZHMuIFNlZSBbcHVsbC1zZWNyZXRzLm1kXShw" + - "dWxsLXNlY3JldHMubWQpLgoKNC4gKipXcm9uZyBjcmVkZW50aWFscyBpbiBzZWNyZXQqKjogRGVs" + - "ZXRlIGFuZCByZWNyZWF0ZQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGRlbGV0ZSBzZWNyZXQgbnZj" + - "ci1jcmVkcyAtbiA8bmFtZXNwYWNlPgogICAjIFJlY3JlYXRlIHdpdGggY29ycmVjdCBjcmVkZW50" + - "aWFscwogICBgYGAKCiMjIEZhaWx1cmU6IEluaXQ6MC8xIFN0dWNrIChWYXVsdCBBZ2VudCkKCiMj" + - "IyBTeW1wdG9tcwoKU2VydmljZSBwb2RzIHN0dWNrIGluIGBJbml0OjAvMWAgZm9yIG1pbnV0ZXM6" + - "CgpgYGBiYXNoCk5BTUUgICAgICAgICAgICAgICAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICAg" + - "UkVTVEFSVFMgICBBR0UKbnZjZi1hcGktN2Y0Yzc2Zjc4OC00NHZsdCAgMC8yICAgICBJbml0OjAv" + - "MSAgIDAgICAgICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoKVGhlIGluaXQgY29udGFpbmVy" + - "IGlzIHRoZSB2YXVsdC1hZ2VudC1pbml0IGluamVjdG9yIHdhaXRpbmcgZm9yIE9wZW5CYW8uCgpg" + - "YGBiYXNoCiMgQ2hlY2sgT3BlbkJhbyBwb2RzCmt1YmVjdGwgZ2V0IHBvZHMgLW4gdmF1bHQtc3lz" + - "dGVtCgojIENoZWNrIGlmIE9wZW5CYW8gbWlncmF0aW9uIGpvYiByYW4Ka3ViZWN0bCBnZXQgam9i" + - "cyAtbiB2YXVsdC1zeXN0ZW0KCiMgQ2hlY2sgT3BlbkJhbyBwb2QgbG9ncwprdWJlY3RsIGxvZ3Mg" + - "LW4gdmF1bHQtc3lzdGVtIG9wZW5iYW8tc2VydmVyLTAgLWMgb3BlbmJhbwoKIyBDaGVjayBpbml0" + - "IGNvbnRhaW5lciBsb2dzIG9uIHRoZSBzdHVjayBwb2QKa3ViZWN0bCBsb2dzIC1uIDxuYW1lc3Bh" + - "Y2U+IDxwb2QtbmFtZT4gLWMgdmF1bHQtYWdlbnQtaW5pdApgYGAKCiMjIyBGaXhlcwoKMS4gKipP" + - "cGVuQmFvIHBvZHMgbm90IHJ1bm5pbmcqKjogQ2hlY2sgdGhlaXIgZXZlbnRzIGZvciBpbWFnZSBw" + - "dWxsIGlzc3VlcywgcmVzb3VyY2UgaXNzdWVzLCBldGMuCgoyLiAqKk9wZW5CYW8gbWlncmF0aW9u" + - "IGpvYiBkaWRuJ3QgcnVuKio6IFRoaXMgaGFwcGVucyB3aGVuIGBoZWxtZmlsZSBzeW5jYCB3YXMg" + - "aW50ZXJydXB0ZWQuIERlc3Ryb3kgYW5kIHJlLXN5bmMgb3BlbmJhbzoKCiAgIGBgYGJhc2gKICAg" + - "SEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZl" + - "ciBkZXN0cm95CiAgIGt1YmVjdGwgZGVsZXRlIG5hbWVzcGFjZSB2YXVsdC1zeXN0ZW0KICAga3Vi" + - "ZWN0bCBjcmVhdGUgbmFtZXNwYWNlIHZhdWx0LXN5c3RlbQogICAjIFJlLWNyZWF0ZSBwdWxsIHNl" + - "Y3JldCBpZiBuZWVkZWQKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3Ig" + - "bmFtZT1vcGVuYmFvLXNlcnZlciBzeW5jCiAgIGBgYAoKMy4gKipPcGVuQmFvIHBvZHMgcnVubmlu" + - "ZyBidXQgbm90IGluaXRpYWxpemVkKio6IENoZWNrIHVuc2VhbCBzdGF0dXM6CgogICBgYGBiYXNo" + - "CiAgIGt1YmVjdGwgZXhlYyAtbiB2YXVsdC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXItMCAtYyBvcGVu" + - "YmFvIC0tIGJhbyBzdGF0dXMKICAgYGBgCgo0LiAqKmB2YXVsdC1hZ2VudC1pbml0YCBsb2dzIGBh" + - "dXRoL2p3dC9sb2dpbmAgLT4gYDQwMCAuLi4gbm8ga25vd24ga2V5IHN1Y2Nlc3NmdWxseSB2YWxp" + - "ZGF0ZWQgdGhlIHRva2VuIHNpZ25hdHVyZWAqKgogICAoY29tbW9uIG9uIEFLUywgYW5kIG9uIGFu" + - "eSBjbHVzdGVyIHdob3NlIE9JREMgaXNzdWVyIHB1Ymxpc2hlcyBhIHJvdGF0aW5nIG11bHRpLWtl" + - "eSBKV0tTKToKICAgdGhlIE9wZW5CYW8gYGF1dGgvand0YCBtZXRob2Qgd2FzIGNvbmZpZ3VyZWQg" + - "d2l0aCBhIHNpbmdsZSBzdGF0aWMgbW91bnRlZCBwdWJsaWMga2V5CiAgIChgand0X3ZhbGlkYXRp" + - "b25fcHVia2V5c2ApIGluc3RlYWQgb2YgdGhlIGlzc3VlcidzIGxpdmUgSldLUywgc28gaXQgY2Fu" + - "bm90IHZhbGlkYXRlIHRoZQogICBjbHVzdGVyLXNpZ25lZCBTZXJ2aWNlQWNjb3VudCB0b2tlbnMg" + - "dGhlIHZhdWx0LWFnZW50cyBwcmVzZW50LiBFdmVyeSBzZXJ2aWNlJ3MKICAgYHZhdWx0LWFnZW50" + - "LWluaXRgIHRoZW4gbG9vcHMgb24gdGhhdCA0MDAgYW5kIHRoZSBwb2QgbmV2ZXIgbGVhdmVzIGBJ" + - "bml0OjAvMWAuIFRoaXMgaXMgdGhlCiAgIGJlaGF2aW9yIG9mIHRoZSBiYXNlIGRlZmF1bHQgYG9w" + - "ZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFsc2VgOyB0aGUKICAg" + - "bWlncmF0aW9uIGxvZyBzaG93cyBgT0lEQyBpc3N1ZXIgZGlzY292ZXJ5IGlzIGRpc2FibGVkLiBV" + - "c2luZyBTZXJ2aWNlQWNjb3VudCBpc3N1ZXIgYW5kCiAgIG1vdW50ZWQgcHVibGljIGtleSBmYWxs" + - "YmFja2AuIEVuYWJsZSBpc3N1ZXIgZGlzY292ZXJ5IHNvIHRoZSBtaWdyYXRpb24gdXNlcyB0aGUg" + - "bGl2ZSBKV0tTLAogICB0aGVuIHJlLXJ1biBpdDoKCiAgIGBgYGJhc2gKICAgIyBJbiB5b3VyIGVu" + - "diB2YWx1ZXMgKGUuZy4gZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwpLCBzZXQ6CiAgICMgICBvcGVu" + - "YmFvOgogICAjICAgICBtaWdyYXRpb25zOgogICAjICAgICAgIGlzc3VlckRpc2NvdmVyeToKICAg" + - "IyAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAga3ViZWN0bCBkZWxldGUgam9iIC1uIHZhdWx0LXN5" + - "c3RlbSBvcGVuYmFvLXNlcnZlci1taWdyYXRpb25zCiAgIEhFTE1GSUxFX0VOVj08ZW52PiBoZWxt" + - "ZmlsZSAtLXNlbGVjdG9yIG5hbWU9b3BlbmJhby1zZXJ2ZXIgc3luYwogICBgYGAKCiAgIFRoZSBt" + - "aWdyYXRpb24gbG9nIHNob3VsZCB0aGVuIHNob3cgYFJlY2VpdmVkIGRpc2NvdmVyeSBkb2N1bWVu" + - "dCBmcm9tCiAgIC4uLi8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbmAgYW5kIGBGaW5h" + - "bCBPcGVuQmFvIEpXVCBKV0tTIFVSTCBzZXQgdG86CiAgIC4uLi9vcGVuaWQvdjEvandrc2AsIGFu" + - "ZCB0aGUgc2VydmljZSBwb2RzIGF1dGhlbnRpY2F0ZSBhbmQgcmVhY2ggUmVhZHkgd2l0aGluIH4x" + - "IG1pbi4KICAgQUtTIGNsdXN0ZXJzIHdpdGggdGhlIGNsdXN0ZXIgT0lEQyBpc3N1ZXIgZW5hYmxl" + - "ZCAodGhlIGBha3MtY2x1c3RlcmAgZGVmYXVsdCkgYWx3YXlzIG5lZWQKICAgdGhpcyBiZWNhdXNl" + - "IHRoZSBzdGF0aWMtcHVia2V5IGZhbGxiYWNrIGNhbm5vdCBtYXRjaCB0aGUgaXNzdWVyJ3Mgcm90" + - "YXRpbmcgc2lnbmluZyBrZXlzLgoKIyMgRmFpbHVyZTogT09NS2lsbGVkIG9uIENhc3NhbmRyYQoK" + - "IyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMgICAgUkVT" + - "VEFSVFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIE9PTUtpbGxlZCAgMyAgICAgICAgIDEw" + - "bQpgYGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gY2Fz" + - "c2FuZHJhLXN5c3RlbSBjYXNzYW5kcmEtMCB8IGdyZXAgLUEzICJMYXN0IFN0YXRlIgpgYGAKCiMj" + - "IyBGaXgKCk92ZXJyaWRlIENhc3NhbmRyYSByZXNvdXJjZXMgdmlhIGhlbG1maWxlIHZhbHVlcy4g" + - "U2VlIEV4YW1wbGUgMSBpbgpbZXhhbXBsZXMubWRdKC4uL2V4YW1wbGVzLm1kKS4KCmBgYHlhbWwK" + - "LSBjYXNzYW5kcmE6CiAgICByZXNvdXJjZXM6CiAgICAgIGxpbWl0czoKICAgICAgICBjcHU6ICI4" + - "IgogICAgICAgIG1lbW9yeTogODE5Mk1pCiAgICAgIHJlcXVlc3RzOgogICAgICAgIGNwdTogIjIi" + - "CiAgICAgICAgbWVtb3J5OiA0MDk2TWkKYGBgCgpOb3RlOiBgcmVzb3VyY2VQcmVzZXRgIGlzIG5v" + - "dCBhdmFpbGFibGUgaW4gdGhlIE5WQ0YgY2Fzc2FuZHJhIHdyYXBwZXIgY2hhcnQuIFVzZSBleHBs" + - "aWNpdCBgcmVzb3VyY2VzYC4KCiMjIEZhaWx1cmU6IFBvZHMgU3R1Y2sgaW4gUGVuZGluZwoKIyMj" + - "IFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkgICBTVEFUVVMgICAgUkVTVEFS" + - "VFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIFBlbmRpbmcgICAwICAgICAgICAgIDEwbQpg" + - "YGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKIyBDaGVjayBldmVudHMgZm9yIHNjaGVkdWxpbmcg" + - "ZmFpbHVyZXMKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPgoK" + - "IyBDb21tb24gY2F1c2VzOgojIC0gIjAvMTIgbm9kZXMgYXJlIGF2YWlsYWJsZTogMTIgbm9kZShz" + - "KSBkaWRuJ3QgbWF0Y2ggUG9kJ3Mgbm9kZSBhZmZpbml0eSIKIyAtICIwLzEyIG5vZGVzIGFyZSBh" + - "dmFpbGFibGU6IDEyIEluc3VmZmljaWVudCBtZW1vcnkiCiMgLSAicGVyc2lzdGVudHZvbHVtZWNs" + - "YWltIG5vdCBmb3VuZCIKYGBgCgojIyMgRml4ZXMKCjEuICoqTm9kZSBzZWxlY3RvciBtaXNtYXRj" + - "aCoqOiBDaGVjayBgbm9kZVNlbGVjdG9yc2AgaW4gZW52aXJvbm1lbnQgZmlsZQoKICAgYGBgYmFz" + - "aAogICBrdWJlY3RsIGdldCBub2RlcyAtLXNob3ctbGFiZWxzIHwgZ3JlcCBudmNmCiAgIGBgYAoK" + - "Mi4gKipTdG9yYWdlIGNsYXNzIG5vdCBmb3VuZCoqOiBDaGVjayBzdG9yYWdlIGNsYXNzIGV4aXN0" + - "cwoKICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBzdG9yYWdlY2xhc3MKICAgYGBgCgozLiAqKklu" + - "c3VmZmljaWVudCByZXNvdXJjZXMqKjogQ2hlY2sgbm9kZSBjYXBhY2l0eQoKICAgYGBgYmFzaAog" + - "ICBrdWJlY3RsIGRlc2NyaWJlIG5vZGUgPG5vZGUtbmFtZT4gfCBncmVwIC1BNSAiQWxsb2NhdGVk" + - "IHJlc291cmNlcyIKICAgYGBgCgojIyBGYWlsdXJlOiBIZWxtIFJlbGVhc2UgaW4gRmFpbGVkIFN0" + - "YXRlCgojIyMgU3ltcHRvbXMKCmBgYGJhc2gKaGVsbSBsaXN0IC1BCiMgU2hvd3MgcmVsZWFzZSB3" + - "aXRoIFNUQVRVUzogZmFpbGVkCmBgYAoKUmUtcnVubmluZyBgaGVsbWZpbGUgc3luY2AgYXBwZWFy" + - "cyB0byBzdWNjZWVkIGJ1dCBzZXJ2aWNlcyBkb24ndCB3b3JrIChtaWdyYXRpb25zIHNraXBwZWQp" + - "LgoKIyMjIERpYWdub3NpcwoKYGBgYmFzaApoZWxtIGhpc3RvcnkgPHJlbGVhc2UtbmFtZT4gLW4g" + - "PG5hbWVzcGFjZT4KYGBgCgojIyMgRml4CgpNdXN0IGRlc3Ryb3kgdGhlIGZhaWxlZCByZWxlYXNl" + - "IGFuZCByZS1zeW5jIChub3QganVzdCBhcHBseSk6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52" + - "PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9PHJlbGVhc2U+IGRlc3Ryb3kKIyBJZiBuYW1lc3Bh" + - "Y2UgbmVlZHMgY2xlYW51cDoKa3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIDxuYW1lc3BhY2U+Cmt1" + - "YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSA8bmFtZXNwYWNlPgojIFJlLWNyZWF0ZSBwdWxsIHNlY3Jl" + - "dCBpZiBuZWVkZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT08" + - "cmVsZWFzZT4gc3luYwpgYGAKCiMjIEZhaWx1cmU6IEFjY291bnQgQm9vdHN0cmFwIEpvYiBGYWls" + - "ZWQKCiMjIyBTeW1wdG9tcwoKU2VydmljZXMgZGVwbG95IGJ1dCBmdW5jdGlvbnMgY2FuJ3QgYmUg" + - "Y3JlYXRlZC4gRXZlbnRzIHNob3cgYm9vdHN0cmFwIGpvYiBmYWlsdXJlLgoKIyMjIERpYWdub3Np" + - "cwoKYGBgYmFzaAojIENoZWNrIGJvb3RzdHJhcCBqb2Igc3RhdHVzCmt1YmVjdGwgZ2V0IGpvYnMg" + - "LW4gbnZjZgoKIyBHZXQgbG9ncyAoam9iIGF1dG8tZGVsZXRlcyBhZnRlciB+NSBtaW51dGVzKQpr" + - "dWJlY3RsIGxvZ3Mgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIC1uIG52Y2YKCiMgQ2hl" + - "Y2sgQVBJIGxvZ3MKa3ViZWN0bCBsb2dzIC1uIG52Y2YgLWwgYXBwLmt1YmVybmV0ZXMuaW8vbmFt" + - "ZT1udmNmLWFwaSAtLXRhaWw9MTAwCmBgYAoKIyMjIENvbW1vbiBDYXVzZXMKCjEuICoqV3Jvbmcg" + - "YmFzZTY0IGNyZWRlbnRpYWxzKio6IENyZWRlbnRpYWxzIGluIGBzZWNyZXRzLzxlbnY+LXNlY3Jl" + - "dHMueWFtbGAgbXVzdCBiZSBgJG9hdXRodG9rZW46QVBJX0tFWWAgYmFzZTY0LWVuY29kZWQsIG5v" + - "dCBqdXN0IHRoZSBBUEkga2V5CgogICBgYGBiYXNoCiAgICMgVmVyaWZ5IHlvdXIgZW5jb2RlZCBj" + - "cmVkZW50aWFsCiAgIGVjaG8gJ1lPVVJfQkFTRTY0X1NUUklORycgfCBiYXNlNjQgLWQKICAgIyBT" + - "aG91bGQgb3V0cHV0OiAkb2F1dGh0b2tlbjpudmFwaS14eHh4eAogICBgYGAKCjIuICoqUmVnaXN0" + - "cnkgdW5yZWFjaGFibGUqKjogQVBJIGNhbid0IHJlYWNoIHRoZSByZWdpc3RyeSBzcGVjaWZpZWQg" + - "aW4gYGFjY291bnRCb290c3RyYXAucmVnaXN0cnlDcmVkZW50aWFsc2AKCiMjIyBGaXgKCkZpeCBj" + - "cmVkZW50aWFscyBpbiBzZWNyZXRzIGZpbGUsIHRoZW4gcmVjb3ZlciBzZXJ2aWNlcyB3aXRob3V0" + - "IGRlc3Ryb3lpbmcgZGVwZW5kZW5jaWVzOgoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVs" + - "bWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIGRlc3Ryb3kKa3ViZWN0bCBk" + - "ZWxldGUgbmFtZXNwYWNlIG52Y2YgYXBpLWtleXMgZXNzIHNpcyAtLWlnbm9yZS1ub3QtZm91bmQK" + - "a3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIG52Y2YgJiYga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNl" + - "IGFwaS1rZXlzICYmIFwKICBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgZXNzICYmIGt1YmVjdGwg" + - "Y3JlYXRlIG5hbWVzcGFjZSBzaXMKIyBSZS1jcmVhdGUgcHVsbCBzZWNyZXRzIGlmIG5lZWRlZApI" + - "RUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZp" + - "Y2VzIHN5bmMKYGBgCgojIyBGYWlsdXJlOiBOVkNBIENsZWFudXAgU3R1Y2sgKEZpbmFsaXplcnMp" + - "CgojIyMgU3ltcHRvbXMKCkNvbXB1dGUtcGxhbmUgY2xlYW51cCBoYW5ncy4gTmFtZXNwYWNlcwpz" + - "dHVjayBpbiBgVGVybWluYXRpbmdgOgoKYGBgYmFzaAprdWJlY3RsIGdldCBucwojIG52Y2Etb3Bl" + - "cmF0b3IgICAgVGVybWluYXRpbmcgICAxMG0KIyBudmNmLWJhY2tlbmQgICAgIFRlcm1pbmF0aW5n" + - "ICAgMTBtCmBgYAoKIyMjIEZpeAoKUnVuIHRoaXMgb25seSBhZ2FpbnN0IHRoZSBjb21wdXRlIGNv" + - "bnRleHQsIGFmdGVyIHRoZSBub3JtYWwgY29tcHV0ZS1wbGFuZQp0ZWFyZG93biBoYXMgZmFpbGVk" + - "LiBSZW1vdmUgZmluYWxpemVycyBmcm9tIE5WQ0ZCYWNrZW5kIGN1c3RvbSByZXNvdXJjZXMgYW5k" + - "CmZvcmNlLWRlbGV0ZSBzdHVjayBuYW1lc3BhY2VzOgoKYGBgYmFzaApleHBvcnQgQ09NUFVURV9D" + - "T05URVhUPTxjb21wdXRlLXBsYW5lLWNvbnRleHQ+CgojIFJlbW92ZSBmaW5hbGl6ZXJzIGZyb20g" + - "TlZDRkJhY2tlbmQgcmVzb3VyY2VzCmt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhU" + - "IiBnZXQgbnZjZmJhY2tlbmRzIC1BIC1vIGpzb24gfCBcCiAganEgJy5pdGVtc1tdIHwgLm1ldGFk" + - "YXRhLm5hbWVzcGFjZSArICIvIiArIC5tZXRhZGF0YS5uYW1lJyAtciB8IFwKICB4YXJncyAtSXt9" + - "IHNoIC1jICdjb250ZXh0PSIkMSI7IG5zPSIkezIlJS8qfSI7IG5hbWU9IiR7MiMjKi99Ijsga3Vi" + - "ZWN0bCAtLWNvbnRleHQgIiRjb250ZXh0IiBwYXRjaCBudmNmYmFja2VuZCAiJG5hbWUiIC1uICIk" + - "bnMiIC0tdHlwZT1tZXJnZSAtcCAie1wibWV0YWRhdGFcIjp7XCJmaW5hbGl6ZXJzXCI6W119fSIn" + - "IF8gIiRDT01QVVRFX0NPTlRFWFQiIHt9CgojIEZvcmNlLWRlbGV0ZSBzdHVjayBuYW1lc3BhY2Vz" + - "IGJ5IGNsZWFyaW5nIHRoZWlyIGZpbmFsaXplcnMKZm9yIG5zIGluIG52Y2Etb3BlcmF0b3IgbnZj" + - "Zi1iYWNrZW5kOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhUIiBnZXQg" + - "bmFtZXNwYWNlICIkbnMiIC1vIGpzb24gMj4vZGV2L251bGwgfCBcCiAgICBqcSAnLnNwZWMuZmlu" + - "YWxpemVycyA9IFtdJyB8IFwKICAgIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09NUFVURV9DT05URVhU" + - "IiByZXBsYWNlIFwKICAgICAgLS1yYXcgIi9hcGkvdjEvbmFtZXNwYWNlcy8kbnMvZmluYWxpemUi" + - "IC1mIC0gMj4vZGV2L251bGwKZG9uZQpgYGAKCiMjIEZhaWx1cmU6IE5WQ0EgT3BlcmF0b3IgTWlz" + - "c2luZyBvciBOb3QgUmVhZHkKCiMjIyBTeW1wdG9tcwoKQWZ0ZXIgY29tcHV0ZS1wbGFuZSBpbnN0" + - "YWxsIGNvbXBsZXRlcywgbm8gYG52Y2Etb3BlcmF0b3JgIERlcGxveW1lbnQgZXhpc3RzLCBvcgpp" + - "dCBleGlzdHMgYnV0IHBvZHMgYXJlIG5vdCByZWFkeToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRl" + - "eHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IGRlcGxveW1lbnQgbnZjYS1vcGVyYXRvciBc" + - "CiAgLW4gbnZjYS1vcGVyYXRvcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250" + - "ZXh0PiBnZXQgcG9kcyAtbiBudmNhLW9wZXJhdG9yCmBgYAoKIyMjIERpYWdub3NpcyBhbmQgRml4" + - "ZXMKCkZpcnN0IGlkZW50aWZ5IHdoZXRoZXIgdGhlIGluc3RhbGxhdGlvbiB1c2VkIHRoZSBIZWxt" + - "ZmlsZSB2YWx1ZXMgZmxvdyBvciB0aGUKQ0xJIHByb2ZpbGUgZmxvdy4gUmUtcnVuIG9ubHkgdGhh" + - "dCBmbG93J3MgcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24gc3RlcHMKZnJvbSBbU3BsaXQg" + - "Q29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1k" + - "KS4gRG8gbm90CnN1YnN0aXR1dGUgb25lIGhhbmRvZmYgZm9yIHRoZSBvdGhlci4KCklmIGluc3Rh" + - "bGxhdGlvbiBzdWNjZWVkcyBidXQgcG9kcyBzdGlsbCBmYWlsLCBpbnNwZWN0IHRoZSBjb21wdXRl" + - "IGNvbnRleHQ6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + - "eHQ+IGRlc2NyaWJlIGRlcGxveSBudmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yCmt1" + - "YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGxvZ3MgZGVwbG95bWVudC9u" + - "dmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yIC0tdGFpbD0yMDAKa3ViZWN0bCAtLWNv" + - "bnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG52Y2ZiYWNrZW5kIC1uIG52Y2Etb3Bl" + - "cmF0b3IKYGBgCgpGb3IgcHJpdmF0ZSByZWdpc3RyeSBmYWlsdXJlcywgdmVyaWZ5IHRoYXQgdGhl" + - "IHB1bGwgc2VjcmV0IGV4aXN0cyBpbgpgbnZjYS1vcGVyYXRvcmAuIFRoZSBjaGFydCBhbmQgb3Bl" + - "cmF0b3IgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWA7IGRvIG5vdCB1c2UgYQpicm9hZGVyIG1h" + - "bnVhbCBuYW1lc3BhY2UgbG9vcC4gU2VlCltwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0cy5t" + - "ZCNjb21wdXRlLXBsYW5lLXNlY3JldCkuCgojIyBGYWlsdXJlOiBHYXRld2F5IEVuZHBvaW50IENo" + - "YW5nZWQKCiMjIyBTeW1wdG9tcwoKUmVxdWVzdHMgdGhyb3VnaCB0aGUgY29uZmlndXJlZCByb3V0" + - "ZSBkb21haW4gZmFpbCBhZnRlciB0aGUgR2F0ZXdheSBvciBpdHMgbG9hZCBiYWxhbmNlciBpcyBy" + - "ZXBsYWNlZC4gVGhlIEdhdGV3YXkgcmVwb3J0cyBhIG5ldyBlbmRwb2ludC4KCiMjIyBEaWFnbm9z" + - "aXMKCmBgYGJhc2gKR0FURVdBWV9BRERSPSQoa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxh" + - "bmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgXAogIG52Y2YtZ2F0ZXdheSAtbiBlbnZveS1nYXRld2F5" + - "IFwKICAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBdLnZhbHVlfScpCnRlc3QgLW4g" + - "IiRHQVRFV0FZX0FERFIiCmRpZyArc2hvcnQgImFwaS48ZG9tYWluPiIKY3VybCAtSCAiSG9zdDog" + - "YXBpLjxkb21haW4+IiAiaHR0cDovLyRHQVRFV0FZX0FERFIvaGVhbHRoIgoKIyBDaGVjayBkaXJl" + - "Y3QgYWRkcmVzcyBmaWVsZHMgdXNlZCBieSBhIHNwbGl0IGRlcGxveW1lbnQKZ3JlcCBudmNmTmF0" + - "c1NlcnZpY2VVUkwgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvZW52aXJvbm1lbnRzLzxlbnY+" + - "LnlhbWwKZ3JlcCAtRSAnaWNtc1NlcnZpY2V8cmV2YWxTZXJ2aWNlfG5hdHMnIFwKICBkZXBsb3kv" + - "c3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMvPGVudj4ueWFtbApgYGAKCiMj" + - "IyBGaXgKCktlZXAgYGdsb2JhbC5kb21haW5gLCByb3V0ZSBob3N0bmFtZXMsIGFuZCBIb3N0IG92" + - "ZXJyaWRlcyB1bmNoYW5nZWQuIFVwZGF0ZSBETlMKb3IgdGhlIGRpcmVjdCBjbGllbnQgZGVzdGlu" + - "YXRpb24uIEZvciBzcGxpdCBkZXBsb3ltZW50cywgdXBkYXRlIG9ubHkgZGlyZWN0CkdhdGV3YXkt" + - "YWRkcmVzcyBmaWVsZHMgYW5kIHJlZnJlc2ggcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24g" + - "dGhyb3VnaCB0aGUKc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLiBTZWUKW0V4YW1wbGUgNF0oLi4vZXhh" + - "bXBsZXMubWQjZXhhbXBsZS00LXJlY292ZXItZnJvbS1hLWdhdGV3YXktZW5kcG9pbnQtY2hhbmdl" + - "KS4KCiMjIFVzZWZ1bCBOYW1lc3BhY2UtdG8tU2VydmljZSBNYXBwaW5nCgpRdWljayByZWZlcmVu" + - "Y2UgZm9yIHdoaWNoIHNlcnZpY2VzIHJ1biBpbiB3aGljaCBuYW1lc3BhY2U6Cgp8IE5hbWVzcGFj" + - "ZSB8IFNlcnZpY2VzIHwKfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgbmF0cy1zeXN0ZW0gfCBu" + - "YXRzIHwKfCBjYXNzYW5kcmEtc3lzdGVtIHwgY2Fzc2FuZHJhIHwKfCB2YXVsdC1zeXN0ZW0gfCBv" + - "cGVuYmFvLXNlcnZlciB8CnwgbnZjZiB8IGFwaSwgaW52b2NhdGlvbi1zZXJ2aWNlLCBncnBjLXBy" + - "b3h5LCBub3Rhcnktc2VydmljZSwgcmV2YWwsIGxsbS1yZXF1ZXN0LXJvdXRlciwgbGxtLWFwaS1n" + - "YXRld2F5IHwKfCBhcGkta2V5cyB8IGFwaS1rZXlzLCBhZG1pbi1pc3N1ZXItcHJveHkgfAp8IGVz" + - "cyB8IGVzcy1hcGkgfAp8IHNpcyB8IHNpcyB8CnwgZW52b3ktZ2F0ZXdheS1zeXN0ZW0gfCBlbnZv" + - "eSBnYXRld2F5IChpbmdyZXNzIGNvbnRyb2xsZXIpIHwKfCBlbnZveS1nYXRld2F5IHwgZ2F0ZXdh" + - "eSByZXNvdXJjZSArIHJvdXRlcyB8ClBLBwi1enA7tTAAALUwAABQSwMEFAAIAAAAAAAhAAAAAAAA" + - "AAAAAAAAAEQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2Vz" + - "L2hlbG1maWxlLXN0cnVjdHVyZS5tZFVUBQABAKbOEiMgSGVsbWZpbGUgU3RydWN0dXJlIFJlZmVy" + - "ZW5jZQoKIyMgRGlyZWN0b3J5IExheW91dAoKYGBgYmFzaApudmNmLXNlbGYtbWFuYWdlZC1zdGFj" + - "ay8KfC0tIGhlbG1maWxlLmQvCnwgICB8LS0gMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsICAj" + - "IE5BVFMsIENhc3NhbmRyYSwgT3BlbkJhbwp8ICAgfC0tIDAyLWNvcmUueWFtbC5nb3RtcGwgICAg" + - "ICAgICAgIyBOVkNGIHNlcnZpY2VzICsgaW5ncmVzcwp8ICAgYC0tIDAzLW9ic2VydmFiaWxpdHku" + - "eWFtbC5nb3RtcGwgIyBPYnNlcnZhYmlsaXR5IHN0YWNrIChvcHRpb25hbCkKfC0tIGVudmlyb25t" + - "ZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAgICAgICAgICAgICMgRGVmYXVsdCB2YWx1" + - "ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVudi1uYW1lPi55YW1sICAgICAgICAgICAg" + - "ICAjIFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKfC0tIHNlY3JldHMvCnwgICBgLS0gPGVudi1u" + - "YW1lPi1zZWNyZXRzLnlhbWwgICAgICAjIFNlbnNpdGl2ZSB2YWx1ZXMgKHJlZ2lzdHJ5IGNyZWRz" + - "LCBwYXNzd29yZHMpCmAtLSBnbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgICAjIEdvIHRl" + - "bXBsYXRlIHRoYXQgY29uc3RydWN0cyBwZXItY2hhcnQgdmFsdWVzCgpudmNmLWNvbXB1dGUtcGxh" + - "bmUtc3RhY2svCnwtLSBoZWxtZmlsZS5kLwp8ICAgfC0tIDAxLWRlcGVuZGVuY2llcy55YW1sLmdv" + - "dG1wbCAgIyBDb21wdXRlIHBsYW5lIGRlcGVuZGVuY3kgY29tcG9uZW50cwp8ICAgYC0tIDAyLW52" + - "Y2EueWFtbC5nb3RtcGwgICAgICAgICAgIyBudmNhLW9wZXJhdG9yIGNoYXJ0IGFuZCBudmNhIGNv" + - "bmZpZ3VyYXRpb24KfC0tIGVudmlyb25tZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAg" + - "ICAgICAgICAgICMgRGVmYXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVu" + - "di1uYW1lPi55YW1sICAgICAgICAgICAgICAjIFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKYC0t" + - "IGdsb2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAgICMgR28gdGVtcGxhdGUgdGhhdCBjb25z" + - "dHJ1Y3RzIHBlci1jaGFydCB2YWx1ZXMKYGBgCgpUaGVzZSBzdGFja3MgaGF2ZSBzZXBhcmF0ZSBl" + - "bnZpcm9ubWVudHMgYW5kIGNsdXN0ZXIgY29udGV4dHMuIFRoZSBIZWxtZmlsZQp2YWx1ZXMgZmxv" + - "dyBhdXRob3JzIGJvdGggZW52aXJvbm1lbnQgZmlsZXMuIFRoZSBDTEkgcHJvZmlsZSBmbG93IGlu" + - "c3RlYWQgdXNlcwp0aGUgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBsYW5lIHByb2ZpbGUgYXMgaXRz" + - "IGVuZHBvaW50IHNvdXJjZS4gRG8gbm90IG1peCB0aGUKaGFuZG9mZnMuIFNlZSBbU3BsaXQgQ29t" + - "cHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4K" + - "CiMjIEdvdG1wbCBGaWxlcyBhbmQgVGhlaXIgUmVsZWFzZXMKCiMjIyAwMS1kZXBlbmRlbmNpZXMu" + - "eWFtbC5nb3RtcGwKCnwgUmVsZWFzZSB8IENoYXJ0IHwgTmFtZXNwYWNlIHwgTm90ZXMgfAp8LS0t" + - "LS0tLS0tfC0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLXwKfCBuYXRzIHwgaGVsbS1udmNmLW5h" + - "dHMgfCBuYXRzLXN5c3RlbSB8IE1lc3NhZ2luZyB8Cnwgb3BlbmJhby1zZXJ2ZXIgfCBoZWxtLW52" + - "Y2Ytb3BlbmJhby1zZXJ2ZXIgfCB2YXVsdC1zeXN0ZW0gfCBTZWNyZXRzIG1hbmFnZW1lbnQsIGRl" + - "cGVuZHMgb24gbmF0cyB8CnwgY2Fzc2FuZHJhIHwgaGVsbS1udmNmLWNhc3NhbmRyYSB8IGNhc3Nh" + - "bmRyYS1zeXN0ZW0gfCBEYXRhYmFzZSB8CgpVc2VzIGA8PDogKmRlcGVuZGVuY3lgIHRlbXBsYXRl" + - "IGluaGVyaXRhbmNlIHdpdGggYHJlbGVhc2UtZ3JvdXA6IGRlcGVuZGVuY2llc2AgbGFiZWwuCgoj" + - "IyMgMDItY29yZS55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBM" + - "YWJlbCB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IGFwaS1rZXlz" + - "IHwgaGVsbS1udmNmLWFwaS1rZXlzIHwgYXBpLWtleXMgfCBzZXJ2aWNlcyB8Cnwgc2lzIHwgaGVs" + - "bS1udmNmLXNpcyB8IHNpcyB8IHNlcnZpY2VzIHwKfCBhcGkgfCBoZWxtLW52Y2YtYXBpIHwgbnZj" + - "ZiB8IHNlcnZpY2VzIHwKfCBpbnZvY2F0aW9uLXNlcnZpY2UgfCBoZWxtLW52Y2YtaW52b2NhdGlv" + - "bi1zZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBncnBjLXByb3h5IHwgaGVsbS1udmNmLWdy" + - "cGMtcHJveHkgfCBudmNmIHwgc2VydmljZXMgfAp8IGVzcy1hcGkgfCBoZWxtLW52Y2YtZXNzLWFw" + - "aSB8IGVzcyB8IHNlcnZpY2VzIHwKfCBub3Rhcnktc2VydmljZSB8IGhlbG0tbnZjZi1ub3Rhcnkt" + - "c2VydmljZSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgcmV2YWwgfCBoZWxtLXJldmFsIHwgbnZjZiB8" + - "IHNlcnZpY2VzIHwKfCBsbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNmL2hlbG0tbnZjZi1sbG0tcmVx" + - "dWVzdC1yb3V0ZXIgfCBudmNmIHwgc2VydmljZXMgfAp8IGxsbS1hcGktZ2F0ZXdheSB8IG52Y2Yv" + - "aGVsbS1udmNmLWxsbS1hcGktZ2F0ZXdheSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgYWRtaW4taXNz" + - "dWVyLXByb3h5IHwgaGVsbS1hZG1pbi10b2tlbi1pc3N1ZXItcHJveHkgfCBhcGkta2V5cyB8IChu" + - "byByZWxlYXNlLWdyb3VwIGxhYmVsKSB8CnwgaW5ncmVzcyB8IG52Y2YtZ2F0ZXdheS1yb3V0ZXMg" + - "fCBlbnZveS1nYXRld2F5LXN5c3RlbSB8IGluZ3Jlc3MgfAoKTW9zdCBzZXJ2aWNlcyB1c2UgYGlu" + - "aGVyaXQ6IFt7dGVtcGxhdGU6IHNlcnZpY2V9XWAuIExMTSByZWxlYXNlcyB1c2UgT0NJIGNoYXJ0" + - "cyBmcm9tIHRoZSBgbnZjZmAgcmVwb3NpdG9yeSB3aXRoIHN0YW5kYWxvbmUgYHZhbHVlczogWy4u" + - "L2dsb2JhbC55YW1sLmdvdG1wbF1gIGJsb2NrczsgdGhleSBhcmUgZ2F0ZWQgb24gYGFkZG9ucy5s" + - "bG0uZW5hYmxlZGAuIGBhZG1pbi1pc3N1ZXItcHJveHlgIGFuZCBgaW5ncmVzc2AgaGF2ZSBzdGFu" + - "ZGFsb25lIGB2YWx1ZXM6YCBibG9ja3MuCgojIyMgMDMtb2JzZXJ2YWJpbGl0eS55YW1sLmdvdG1w" + - "bAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBMYWJlbCB8CnwtLS0tLS0tLS18LS0t" + - "LS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IChvYnNlcnZhYmlsaXR5IHJlbGVhc2VzKSB8ICh2" + - "YXJpb3VzKSB8IG9ic2VydmFiaWxpdHkgfCBvYnNlcnZhYmlsaXR5IHwKCkdhdGVkIG9uIG9ic2Vy" + - "dmFiaWxpdHktc3BlY2lmaWMgZmxhZ3MgaW4gdGhlIGVudmlyb25tZW50IGZpbGUuIFNraXBwZWQg" + - "aWYgZGlzYWJsZWQuCgojIyBUZW1wbGF0ZSBJbmhlcml0YW5jZQoKIyMjIGA8PDogKmRlcGVuZGVu" + - "Y3lgIChZQU1MIG1lcmdlKQoKVXNlZCBpbiBgMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsYC4g" + - "TWVyZ2VzIHRoZSB0ZW1wbGF0ZSdzIHByb3BlcnRpZXMgaW50byB0aGUgcmVsZWFzZS4KCioqR290" + - "Y2hhKio6IFlBTUwgbWVyZ2UgcmVwbGFjZXMgbGlzdHMuIElmIHlvdSBhZGQgYSBgdmFsdWVzOmAg" + - "a2V5IHRvIHRoZSByZWxlYXNlLCBpdCAqKnJlcGxhY2VzKiogdGhlIHRlbXBsYXRlJ3MgYHZhbHVl" + - "czpgIGxpc3QgZW50aXJlbHkuIFlvdSBtdXN0IHJlLWluY2x1ZGUgYWxsIHRlbXBsYXRlIHZhbHVl" + - "czoKCkluIHRoZSB0ZW1wbGF0ZSBiZWxvdywgYDxwcml2YXRlLXZhbHVlcz5gIHJlZmVycyB0byB0" + - "aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxlIHN0YWNrIHJvb3QuCgpgYGB5" + - "YW1sCiMgVGVtcGxhdGUgZGVmaW5lczoKdGVtcGxhdGVzOgogIGRlcGVuZGVuY3k6ICZkZXBlbmRl" + - "bmN5CiAgICBjaGFydDogbnZjZi9oZWxtLW52Y2Yte3sgLlJlbGVhc2UuTmFtZSB9fQogICAgdmFs" + - "dWVzOgogICAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAgICAtIC4uLzxwcml2YXRlLXZh" + - "bHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCgojIFdo" + - "ZW4gb3ZlcnJpZGluZywgTVVTVCByZS1pbmNsdWRlIGJvdGg6Ci0gbmFtZTogY2Fzc2FuZHJhCiAg" + - "PDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwgICAg" + - "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNdXN0IHJlLWluY2x1" + - "ZGUKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5W" + - "IiB9fS1zZWNyZXRzLnlhbWwgICAjIE11c3QgcmUtaW5jbHVkZQogICAgLSBjYXNzYW5kcmE6ICAg" + - "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg" + - "WW91ciBvdmVycmlkZQogICAgICAgIHJlc291cmNlczoKICAgICAgICAgIGxpbWl0czoKICAgICAg" + - "ICAgICAgbWVtb3J5OiA4MTkyTWkKYGBgCgojIyMgYGluaGVyaXRgIChIZWxtZmlsZSBuYXRpdmUp" + - "CgpVc2VkIGluIGAwMi1jb3JlLnlhbWwuZ290bXBsYC4gSGVsbWZpbGUncyBuYXRpdmUgaW5oZXJp" + - "dGFuY2UgbWVjaGFuaXNtLgoKYGBgeWFtbAotIG5hbWU6IGFwaQogIHZlcnNpb246IDEuNi4wCiAg" + - "bmFtZXNwYWNlOiBudmNmCiAgaW5oZXJpdDoKICAgIC0gdGVtcGxhdGU6IHNlcnZpY2UKYGBgCgpX" + - "aGVuIGFkZGluZyBgdmFsdWVzOmAgdG8gYW4gaW5oZXJpdGVkIHJlbGVhc2UsIHlvdSBhbHNvIG5l" + - "ZWQgdG8gcmUtaW5jbHVkZSB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgZmlsZXMgc2luY2UgYHZhbHVl" + - "c2AgaXMgYSBsaXN0IHRoYXQgZ2V0cyByZXBsYWNlZC4KCiMjIFZhbHVlcyBQcmVjZWRlbmNlCgpG" + - "cm9tIGxvd2VzdCB0byBoaWdoZXN0IHByaW9yaXR5OgoKMS4gYGVudmlyb25tZW50cy9iYXNlLnlh" + - "bWxgIC0tIGRlZmF1bHRzIHNoYXJlZCBhY3Jvc3MgYWxsIGVudmlyb25tZW50cwoyLiBgZW52aXJv" + - "bm1lbnRzLzxlbnY+LnlhbWxgIC0tIHBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKMy4gYGdsb2Jh" + - "bC55YW1sLmdvdG1wbGAgLS0gR28gdGVtcGxhdGUgcHJvY2Vzc2luZyAoY29uc3RydWN0cyBjaGFy" + - "dC1zcGVjaWZpYyBzdHJ1Y3R1cmUpCjQuIGA8cHJpdmF0ZS12YWx1ZXM+LzxlbnY+LXNlY3JldHMu" + - "eWFtbGAgLS0gc2Vuc2l0aXZlIHZhbHVlcwo1LiBJbmxpbmUgYHZhbHVlczpgIGJsb2NrcyBvbiBy" + - "ZWxlYXNlcyAtLSBoaWdoZXN0IHByZWNlZGVuY2UKCiMjIFdoYXQgZ2xvYmFsLnlhbWwuZ290bXBs" + - "IFBhc3NlcyBUaHJvdWdoCgpgZ2xvYmFsLnlhbWwuZ290bXBsYCByZWFkcyBmcm9tIGAuVmFsdWVz" + - "YCAodGhlIG1lcmdlZCBlbnZpcm9ubWVudCArIGVudi1zcGVjaWZpYyBZQU1MKSBhbmQgY29uc3Ry" + - "dWN0cyBjaGFydC1zcGVjaWZpYyB2YWx1ZXMuIEl0IG9ubHkgcGFzc2VzIHRocm91Z2gga2V5cyBp" + - "dCBleHBsaWNpdGx5IHJlZmVyZW5jZXM6CgojIyMgQ2Fzc2FuZHJhCgotIGBjYXNzYW5kcmEucmVw" + - "bGljYUNvdW50YAotIGBjYXNzYW5kcmEuaW1hZ2UuKmAgKHJlZ2lzdHJ5LCByZXBvc2l0b3J5KQot" + - "IGBjYXNzYW5kcmEubWlncmF0aW9ucy5pbWFnZS4qYAotIGBjYXNzYW5kcmEucGVyc2lzdGVuY2Uu" + - "c2l6ZWAKLSBgY2Fzc2FuZHJhLm5vZGVTZWxlY3RvcmAgKGlmIGBnbG9iYWwubm9kZVNlbGVjdG9y" + - "cy5lbmFibGVkYCkKLSBgY2Fzc2FuZHJhLmdsb2JhbC5kZWZhdWx0U3RvcmFnZUNsYXNzYAoKIyMj" + - "IE5BVFMKCi0gYG5hdHMuY29udGFpbmVyLmltYWdlLipgCi0gYG5hdHMucmVsb2FkZXIuaW1hZ2Uu" + - "KmAKLSBgbmF0cy5uYXRzQm94LmNvbnRhaW5lci5pbWFnZS4qYAotIGBuYXRzLmNvbmZpZy5qZXRz" + - "dHJlYW0uZmlsZVN0b3JlLnB2Yy5zdG9yYWdlQ2xhc3NOYW1lYAotIGBuYXRzLnBvZFRlbXBsYXRl" + - "Lm1lcmdlLnNwZWMubm9kZVNlbGVjdG9yYCAoaWYgZW5hYmxlZCkKCiMjIyBPcGVuQmFvCgotIGBv" + - "cGVuYmFvLm1pZ3JhdGlvbnMuaW1hZ2UuKmAgYW5kIGBvcGVuYmFvLm1pZ3JhdGlvbnMuZW52YAot" + - "IGBvcGVuYmFvLmluamVjdG9yLmltYWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmltYWdlLipgCi0g" + - "YG9wZW5iYW8uc2VydmVyLmRhdGFTdG9yYWdlLipgCi0gTm9kZSBzZWxlY3RvcnMgKGlmIGVuYWJs" + - "ZWQpCgojIyMgU2VydmljZXMgKEFQSSwgU0lTLCBldGMuKQoKLSBgPHNlcnZpY2U+LmltYWdlLipg" + - "IChyZWdpc3RyeSwgcmVwb3NpdG9yeSkKLSBgPHNlcnZpY2U+Lm5vZGVTZWxlY3RvcmAgKGlmIGVu" + - "YWJsZWQpCi0gYDxzZXJ2aWNlPi5lbnYuKmAgKG9ic2VydmFiaWxpdHkgc2V0dGluZ3MpCgojIyMg" + - "TExNIEZ1bmN0aW9uIEVuYWJsZW1lbnQKCkVuYWJsZSB0aGUgTExNIGFkZG9uIGJlZm9yZSBjcmVh" + - "dGluZyBvciBpbnZva2luZyBmdW5jdGlvbnMgd2l0aApgZnVuY3Rpb25UeXBlOiAiTExNImAuIFRo" + - "ZSBhZGRvbiBkZXBsb3lzIGBsbG0tcmVxdWVzdC1yb3V0ZXJgIGFuZApgbGxtLWFwaS1nYXRld2F5" + - "YCwgYWRkcyB0aGUgYGxsbS5pbnZvY2F0aW9uLjxkb21haW4+YCByb3V0ZSB3aGVuIEdhdGV3YXkg" + - "QVBJCmluZ3Jlc3MgaXMgZW5hYmxlZCwgYW5kIGNvbmZpZ3VyZXMgd29ya2VycyB0byB1c2UgdGhl" + - "IExMTSBzaWRlY2FyLiBUaGUgSGVsbWZpbGUKY29uZGl0aW9uIGlzIGBhZGRvbnMubGxtLmVuYWJs" + - "ZWRgLiBEbyBub3QgdXNlIHRoZSBvYnNvbGV0ZSBgbGxtLmVuYWJsZWRgIHBhdGguCgpGb3IgYSBz" + - "aW5nbGUtbm9kZSBpc29sYXRlZCB0ZXN0IGNsdXN0ZXIsIGFkZCB0aGlzIGNvbmZpZ3VyYXRpb24g" + - "dG8KYGVudmlyb25tZW50cy88ZW52Pi55YW1sYCBiZWZvcmUgYXBwbHlpbmcgdGhlIHN0YWNrOgoK" + - "YGBgeWFtbAphZGRvbnM6CiAgbGxtOgogICAgZW5hYmxlZDogdHJ1ZQogICAgZ2F0ZXdheToKICAg" + - "ICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2VydmljZU1vbml0b3I6" + - "CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQogICAgcmVxdWVzdFJvdXRlcjoKICAgICAgcmVwbGlj" + - "YUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2VydmljZU1vbml0b3I6CiAgICAgICAg" + - "ICBlbmFibGVkOiBmYWxzZQoKYWdlbnRDb25maWc6CiAgbWVyZ2VDb25maWc6IHwKICAgIGNsdXN0" + - "ZXI6CiAgICAgIHZhbGlkYXRpb25Qb2xpY3k6CiAgICAgICAgbmFtZTogVW5yZXN0cmljdGVkCiAg" + - "ICB3b3JrbG9hZDoKICAgICAgc3RhcmdhdGVRVUlDSW5zZWN1cmU6IHRydWUKYGBgCgpVc2UgYHJl" + - "cGxpY2FDb3VudDogMWAgb25seSBmb3IgbG9jYWwgb3Igc2luZ2xlLW5vZGUgdGVzdCBjbHVzdGVy" + - "cy4gVGhlIGJ1bmRsZWQKTlZDRiBBUEkgY3VycmVudGx5IHNlcnZlcyBwbGFpbnRleHQgZ1JQQyBv" + - "biBwb3J0IDkwOTAsIHNvIHRoZSBzZWxmLW1hbmFnZWQgc3RhY2sKZGVmYXVsdHMgdGhlIExMTSBB" + - "UEkgR2F0ZXdheSBhdXRoZW50aWNhdGlvbiBob3AgdG8gcGxhaW50ZXh0LiBTZXQKYGFkZG9ucy5s" + - "bG0uZ2F0ZXdheS5hdXRoLmdycGNJbnNlY3VyZTogZmFsc2VgIG9ubHkgd2l0aCBhIFRMUy1jYXBh" + - "YmxlIE5WQ0YgQVBJLgoKV29ya2VyLXRvLXJvdXRlciB0cmFuc3BvcnQgaXMgc2VwYXJhdGUuIEZv" + - "ciBzaGFyZWQgb3IgcHJvZHVjdGlvbiBjbHVzdGVycywgdXNlCnRoZSByZXF1aXJlZCByZXBsaWNh" + - "IGNvdW50IGFuZCB0aGUgbWFuYWdlZCBUTFMgY29uZmlndXJhdGlvbi4gVGhlCmB3b3JrbG9hZC5z" + - "dGFyZ2F0ZVFVSUNJbnNlY3VyZWAgc2V0dGluZyBlbmFibGVzIHBsYWludGV4dCB3b3JrZXIgdHJh" + - "bnNwb3J0IGFuZAptdXN0IG5vdCBiZSB1c2VkIGluIHByb2R1Y3Rpb24uCgpUaGUgcmVxdWVzdCBy" + - "b3V0ZXIgdXNlcyBgcG93ZXItb2YtdHdvYCB3aGVuIG5vIGxvYWQtYmFsYW5jZXIgY29uZmlndXJh" + - "dGlvbiBpcwpzZXQuIENvbmZpZ3VyZSBvdGhlciByb3V0aW5nIG1ldGhvZHMgd2l0aCB0aGUKW0xM" + - "TSBSZXF1ZXN0IFJvdXRlciBMb2FkIEJhbGFuY2luZ10oaHR0cHM6Ly9naXRodWIuY29tL05WSURJ" + - "QS9udmNmL2Jsb2IvbWFpbi9kb2NzL3NlbGYtbWFuYWdlZC9sbG0tcmVxdWVzdC1yb3V0ZXItbG9h" + - "ZC1iYWxhbmNpbmcubWQpCmd1aWRlLgoKSWYgdGhlIHNpZGVjYXIgaW1hZ2UgaXMgbWlycm9yZWQg" + - "b3V0c2lkZSB0aGUgc3RhY2sncyBkZWZhdWx0IGltYWdlIHJlZ2lzdHJ5IGFuZApyZXBvc2l0b3J5" + - "LCBzZXQgdGhlIGdlbmVyYXRlZCB3b3JrZXIgc2lkZWNhciBpbWFnZSBleHBsaWNpdGx5OgoKYGBg" + - "eWFtbAphcGk6CiAgcmVtb3RlQ29uZmlnOgogICAgY29uZmlnRGF0YToKICAgICAgbnZjZjoKICAg" + - "ICAgICBzaWRlY2FyczoKICAgICAgICAgIGxsbS1yb3V0ZXItY2xpZW50LWltYWdlOiA8cmVnaXN0" + - "cnk+LzxyZXBvc2l0b3J5Pi9weWxvbjowLjE0LjEKYGBgCgpUaGUgbGVnYWN5IGBhcGkuZW52Lk5W" + - "Q0ZfU0lERUNBUlNfTExNX1JPVVRFUl9DTElFTlRfSU1BR0VgIHBhdGggaXMgZGVwcmVjYXRlZC4K" + - "VGhlIHN0YWNrIHRyYW5zbGF0ZXMgaXQgZm9yIG9uZSBjb21wYXRpYmlsaXR5IHdpbmRvdywgYnV0" + - "IG5ldyBjb25maWd1cmF0aW9ucwptdXN0IHVzZSB0aGUgcmVtb3RlLWNvbmZpZyBwYXRoLiBDb25m" + - "bGljdGluZyB2YWx1ZXMgZmFpbCByZW5kZXJpbmcuCgpSZW5kZXIgYW5kIGFwcGx5IHRoZSB1cGRh" + - "dGVkIGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQsIHRoZW4gcmVmcmVzaCBldmVyeQpyZWdpc3Rl" + - "cmVkIGNvbXB1dGUgcGxhbmUgdXNpbmcgdGhlIHNhbWUgaGFuZG9mZiB1c2VkIGZvciBpdHMgaW5z" + - "dGFsbGF0aW9uIHNvCk5WQ0EgcmVjZWl2ZXMgYGFnZW50Q29uZmlnLm1lcmdlQ29uZmlnYDoKCmBg" + - "YGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08" + - "ZW52PiBoZWxtZmlsZSBzeW5jCmBgYAoKVXNlIHRoZSBjb21wbGV0ZSBjb21wdXRlLXBsYW5lIGlu" + - "c3RhbGwgY29tbWFuZCBmcm9tCltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29t" + - "cHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLiBBCkNMSS1wcm9maWxlIGluc3RhbGxhdGlvbiBt" + - "dXN0IHJlbWFpbiBwcm9maWxlLWRyaXZlbjsgYSBIZWxtZmlsZSBpbnN0YWxsYXRpb24KbXVzdCBy" + - "ZW1haW4gdmFsdWVzLWRyaXZlbi4KCkV4aXN0aW5nIExMTSBmdW5jdGlvbiB2ZXJzaW9ucyByZXRh" + - "aW4gdGhlIHdvcmtlci1zaWRlY2FyIGltYWdlIG1ldGFkYXRhCmNhcHR1cmVkIHdoZW4gdGhlIHZl" + - "cnNpb24gaXMgY3JlYXRlZC4gUmVwbGFjaW5nIHBvZHMgb3IgcmVkZXBsb3lpbmcgdGhlIHNhbWUK" + - "dmVyc2lvbiBkb2VzIG5vdCBhcHBseSBhIG5ldyBQeWxvbiBpbWFnZS4gQWZ0ZXIgdGhlIGNvbnRy" + - "b2wtcGxhbmUgdXBkYXRlLApjcmVhdGUgYW5kIGRlcGxveSBhIG5ldyBmdW5jdGlvbiB2ZXJzaW9u" + - "LiBWZXJpZnkgdGhlIGNvbnRyb2wgcGxhbmUsIHJvdXRlLCBhbmQKd29ya2VyIHNpZGVjYXI6Cgpg" + - "YGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSAtbiBudmNmIGxsbS1hcGktZ2F0ZXdheQprdWJlY3Rs" + - "IGdldCBzdGF0ZWZ1bHNldCAtbiBudmNmIGxsbS1yZXF1ZXN0LXJvdXRlcgprdWJlY3RsIGdldCBw" + - "b2RzIC1uIG52Y2YgfCBncmVwIC1FICdsbG0tYXBpLWdhdGV3YXl8bGxtLXJlcXVlc3Qtcm91dGVy" + - "JwprdWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIGxsbQprdWJlY3RsIC1uIG52Y2YtYmFj" + - "a2VuZCBnZXQgcG9kIDxmdW5jdGlvbi1wb2Q+IFwKICAtbyBqc29ucGF0aD0ne3JhbmdlIC5zcGVj" + - "LmNvbnRhaW5lcnNbPyhALm5hbWU9PSJsbG0td29ya2VyIildLmFyZ3NbKl19ey59eyJcXG4ifXtl" + - "bmR9JwpgYGAKCkZvciBsb2NhbCBwbGFpbnRleHQgY2x1c3RlcnMsIHRoZSBgbGxtLXdvcmtlcmAg" + - "YXJncyBtdXN0IGluY2x1ZGUKYC0tcXVpYy1pbnNlY3VyZWAuCgpGb3IgbG9hZC1iYWxhbmNlciBz" + - "Y2hlbWEgYW5kIGFsZ29yaXRobSBiZWhhdmlvciwgc2VlIHRoZQpbU3RhcmdhdGUgY29uZmlndXJh" + - "dGlvbiBndWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9zcmMv" + - "bGlicmFyaWVzL3J1c3Qvc3RhcmdhdGUvZG9jcy9sb2FkLWJhbGFuY2VyLWNvbmZpZ3VyYXRpb24u" + - "bWQpLgoKIyMgSGVsbWZpbGUgU2VsZWN0b3JzCgpUYXJnZXQgc3BlY2lmaWMgcmVsZWFzZXMgb3Ig" + - "Z3JvdXBzOgoKYGBgYmFzaAojIEJ5IHJlbGVhc2UgZ3JvdXAKSEVMTUZJTEVfRU5WPTxlbnY+IGhl" + - "bG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1kZXBlbmRlbmNpZXMgc3luYwpIRUxNRklM" + - "RV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2VzIHN5" + - "bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1p" + - "bmdyZXNzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFz" + - "ZS1ncm91cD1vYnNlcnZhYmlsaXR5IHN5bmMKCiMgQnkgcmVsZWFzZSBuYW1lCkhFTE1GSUxFX0VO" + - "Vj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMKSEVMTUZJTEVf" + - "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHkgc3lu" + - "YwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWxsbS1yZXF1ZXN0" + - "LXJvdXRlciBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9" + - "bGxtLWFwaS1nYXRld2F5IHN5bmMKCiMgVGVtcGxhdGUgb25seSAoZHJ5IHJ1bikKSEVMTUZJTEVf" + - "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUKCiMg" + - "RGVzdHJveSBhIHNpbmdsZSByZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + - "bGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIGRlc3Ryb3kKYGBgCgpOb3RlOiBgYWRtaW4taXNzdWVyLXBy" + - "b3h5YCBoYXMgbm8gYHJlbGVhc2UtZ3JvdXBgIGxhYmVsLiBVc2UgYC0tc2VsZWN0b3IgbmFtZT1h" + - "ZG1pbi1pc3N1ZXItcHJveHlgLgpQSwcIExHsjQoqAAAKKgAAUEsDBBQACAAAAAAAIQAAAAAAAAAA" + - "AAAAAAA/AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9u" + - "dmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SIyBOVkNGIFVJIEFkZG9uCgpOVkNGIFVJIGlzIGFuIG9w" + - "dGlvbmFsLCBjdXN0b21lci1mYWNpbmcgTlZDRiBhZG1pbi1wYW5lbCBVSS4gSXQgaXMgZGlzYWJs" + - "ZWQgYnkKZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBp" + - "bmNsdWRlIHRoZSBOVkNGIFVJIGFkZG9uLgoKIyMgV2hlbiB0byBlbmFibGUKCkVuYWJsZSBOVkNG" + - "IFVJIG9ubHkgd2hlbiB5b3UgbmVlZCB0aGUgYWRtaW4tcGFuZWwgVUkgYW5kIHlvdXIgZXh0cmFj" + - "dGVkIHN0YWNrCnBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLiBJZiB0aGUgcGFja2FnZSBkb2Vz" + - "IG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UKYW5kIGBudmNmVWlgIHJvdXRlIHZhbHVl" + - "cywgc2tpcCB0aGUgYWRkb24gdW50aWwgeW91IHVzZSBhIHBhY2thZ2UgdGhhdCBpbmNsdWRlcwp0" + - "aGVtLgoKIyMgRW5hYmxlIHRoZSBhZGRvbgoKRW5hYmxlIGl0IGluIGBlbnZpcm9ubWVudHMvPGVu" + - "di1uYW1lPi55YW1sYDoKCmBgYHlhbWwKYWRkb25zOgogIG52Y2ZVaToKICAgIGVuYWJsZWQ6IHRy" + - "dWUKYGBgCgojIyBDcmVhdGUgbmFtZXNwYWNlIGFuZCBpbWFnZSBwdWxsIHNlY3JldAoKQ3JlYXRl" + - "IHRoZSBuYW1lc3BhY2UsIGFuZCBhbiBpbWFnZSBwdWxsIHNlY3JldCBvbmx5IGlmIHB1bGxpbmcg" + - "ZnJvbSBhIHByaXZhdGUKcmVnaXN0cnk6CgpgYGBiYXNoCmt1YmVjdGwgY3JlYXRlIG5hbWVzcGFj" + - "ZSBudmNmLXVpIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQoK" + - "IyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGUuZy4sIE5HQyBudmNy" + - "LmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmt1YmVjdGwgY3JlYXRlIHNlY3Jl" + - "dCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8g" + - "XAogIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogIC0tZG9ja2VyLXBhc3N3b3Jk" + - "PSIkTkdDX0FQSV9LRVkiIFwKICAtLW5hbWVzcGFjZT1udmNmLXVpIFwKICAtLWRyeS1ydW49Y2xp" + - "ZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KYGBgCgpUaGUgZGVmYXVsdCByb3V0ZSBo" + - "b3N0IGlzIGBudmNmLXVpLjxkb21haW4+YCBhbmQgdGhlIGJhY2tlbmQgaXMKYG52Y2YtdWkubnZj" + - "Zi11aTo4MzAwYC4KCiMjIEFwcGx5IHRoZSBzZXJ2aWNlIGFuZCByb3V0ZQoKQWZ0ZXIgY29uZmly" + - "bWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYG52Y2YtdWlgIHJlbGVhc2UsIHByZXZpZXcg" + - "YW5kIGFwcGx5CnRoZSBzZXJ2aWNlIGFuZCByb3V0ZToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxl" + - "bnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgdGVtcGxhdGUKSEVMTUZJ" + - "TEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2YtdWkgc3luYwpI" + - "RUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9" + - "aW5ncmVzcyBzeW5jCmBgYAoKIyMgVmVyaWZ5CgpWZXJpZnkgdGhlIHJvdXRlIG9ubHkgd2hlbiB0" + - "aGUgYWRkb24gaXMgcHJlc2VudCBhbmQgZW5hYmxlZDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgZGVw" + - "bG95LHN2YyAtbiBudmNmLXVpCmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgLWkgbnZj" + - "Zi11aQpjdXJsIC1pIC1IICJIb3N0OiBudmNmLXVpLjxkb21haW4+IiAiaHR0cDovLzxnYXRld2F5" + - "LWFkZHJlc3M+L3N0YXR1cyIKYGBgCgojIyBTZWN1cml0eQoKVGhlIE5WQ0YgVUkgYWRtaW4gcGFu" + - "ZWwgaXMgY3VycmVudGx5IHVuYXV0aGVudGljYXRlZC4gRG8gbm90IGV4cG9zZSBpdCB0byB0aGUK" + - "cHVibGljIGludGVybmV0LiBSZXN0cmljdCBhY2Nlc3MgdG8gYSB0cnVzdGVkIG5ldHdvcmssIFZQ" + - "Tiwgb3IgYW4gYXV0aGVudGljYXRpbmcKcHJveHkgaW4gZnJvbnQgb2YgdGhlIGBudmNmLXVpYCBy" + - "b3V0ZS4KUEsHCDj5J6+5BwAAuQcAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAPgAJAGRhdGEv" + - "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1k" + - "VVQFAAEAps4SIyBJbWFnZSBQdWxsIFNlY3JldHMgUmVmZXJlbmNlCgojIyBPdmVydmlldwoKV2hl" + - "biBwdWxsaW5nIE5WQ0YgaW1hZ2VzIGZyb20gYSBwcml2YXRlIHJlZ2lzdHJ5IChmb3IgZXhhbXBs" + - "ZSwgTkdDCmBudmNyLmlvYCksIEt1YmVybmV0ZXMgbmVlZHMgYGltYWdlUHVsbFNlY3JldHNgIG9u" + - "IGV2ZXJ5IHBvZC4gQ29udHJvbC1wbGFuZSBhbmQKY29tcHV0ZS1wbGFuZSBjcmVkZW50aWFscyBh" + - "cmUgY29uZmlndXJlZCBpbiB0aGVpciBvd24gY2x1c3RlciBjb250ZXh0cy4gRG8gbm90CnVzZSBv" + - "bmUgbWl4ZWQgbmFtZXNwYWNlIGxpc3QuCgpUaGUgcmVjb21tZW5kZWQgY29udHJvbC1wbGFuZSBh" + - "cHByb2FjaCB1c2VzIEt5dmVybm8gdG8gaW5qZWN0IHRoZSBzZWNyZXQgaW50bwpjb250cm9sLXBs" + - "YW5lIHBvZHMgYXQgYWRtaXNzaW9uIHRpbWUuIFRoZSBjb21wdXRlLXBsYW5lIGNoYXJ0IGFuZCBv" + - "cGVyYXRvciB1c2UKdGhlIHNlY3JldCBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciBpdCB0" + - "byBgbnZjYS1zeXN0ZW1gLgoKIyMgS3l2ZXJubyBBcHByb2FjaCAoUmVjb21tZW5kZWQpCgojIyMg" + - "MS4gSW5zdGFsbCBLeXZlcm5vCgpgYGBiYXNoCmhlbG0gcmVwbyBhZGQga3l2ZXJubyBodHRwczov" + - "L2t5dmVybm8uZ2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUKaGVsbSBpbnN0YWxs" + - "IGt5dmVybm8ga3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUtbmFtZXNwYWNlIFwK" + - "ICAtLWt1YmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PgpgYGAKCiMjIyAyLiBDcmVh" + - "dGUgY29udHJvbC1wbGFuZSBwdWxsIHNlY3JldHMKCmBgYGJhc2gKZXhwb3J0IE5HQ19BUElfS0VZ" + - "PSI8eW91ci1uZ2MtYXBpLWtleT4iCgpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5" + - "c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsgZG8K" + - "ICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBjcmVhdGUgbmFtZXNw" + - "YWNlICIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250" + - "ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQoKZm9yIG5zIGluIGNh" + - "c3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZhdWx0LXN5" + - "c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + - "Y29udGV4dD4gY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAt" + - "LWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9r" + - "ZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNw" + - "YWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgLS1jb250" + - "ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KZG9uZQpgYGAKCkZvciBub24t" + - "TkdDIHJlZ2lzdHJpZXMsIHJlcGxhY2UgYC0tZG9ja2VyLXNlcnZlcmAsIGAtLWRvY2tlci11c2Vy" + - "bmFtZWAsIGFuZCBgLS1kb2NrZXItcGFzc3dvcmRgLgoKIyMjIDMuIEFwcGx5IEt5dmVybm8gQ2x1" + - "c3RlclBvbGljeQoKYGBgeWFtbAphcGlWZXJzaW9uOiBreXZlcm5vLmlvL3YxCmtpbmQ6IENsdXN0" + - "ZXJQb2xpY3kKbWV0YWRhdGE6CiAgbmFtZTogbnZjZi1hZGQtaW1hZ2VwdWxsc2VjcmV0cwpzcGVj" + - "OgogIGJhY2tncm91bmQ6IGZhbHNlCiAgcnVsZXM6CiAgICAtIG5hbWU6IGFkZC1pbWFnZXB1bGxz" + - "ZWNyZXQtdG8tbnZjZi1wb2RzCiAgICAgIG1hdGNoOgogICAgICAgIGFueToKICAgICAgICAtIHJl" + - "c291cmNlczoKICAgICAgICAgICAga2luZHM6CiAgICAgICAgICAgIC0gUG9kCiAgICAgICAgICAg" + - "IG5hbWVzcGFjZXM6CiAgICAgICAgICAgIC0gIm52Y2YiCiAgICAgICAgICAgIC0gImFwaS1rZXlz" + - "IgogICAgICAgICAgICAtICJzaXMiCiAgICAgICAgICAgIC0gImVzcyIKICAgICAgICAgICAgLSAi" + - "bmF0cy1zeXN0ZW0iCiAgICAgICAgICAgIC0gImNhc3NhbmRyYS1zeXN0ZW0iCiAgICAgICAgICAg" + - "IC0gInZhdWx0LXN5c3RlbSIKICAgICAgICAgICAgLSAiY2VydC1tYW5hZ2VyIgogICAgICBtdXRh" + - "dGU6CiAgICAgICAgcGF0Y2hTdHJhdGVnaWNNZXJnZToKICAgICAgICAgIG1ldGFkYXRhOgogICAg" + - "ICAgICAgICBhbm5vdGF0aW9uczoKICAgICAgICAgICAgICBudmNmLm52aWRpYS5jb20vaW1hZ2Vw" + - "dWxsc2VjcmV0LWluamVjdGVkLWJ5OiBreXZlcm5vCiAgICAgICAgICBzcGVjOgogICAgICAgICAg" + - "ICBpbWFnZVB1bGxTZWNyZXRzOgogICAgICAgICAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpg" + - "YGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IFwK" + - "ICAtZiBreXZlcm5vLWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAKCiMjIyA0LiBJbnN0" + - "YWxsIHRoZSBjb250cm9sIHBsYW5lCgpDb250aW51ZSB3aXRoIHRoZSBzZWxlY3RlZCBjb250cm9s" + - "LXBsYW5lIGluc3RhbGxhdGlvbiBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25d" + - "KGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4gTm8KY29udHJvbC1wbGFuZSBoZWxtZmls" + - "ZSBtb2RpZmljYXRpb25zIGFyZSBuZWVkZWQuIEt5dmVybm8gaW5qZWN0cyB0aGUgcHVsbApzZWNy" + - "ZXQgaW50byBuZXcgY29udHJvbC1wbGFuZSBwb2RzLgoKIyMgQ29tcHV0ZS1QbGFuZSBTZWNyZXQK" + - "CkNyZWF0ZSB0aGUgc2VjcmV0IG9ubHkgaW4gYG52Y2Etb3BlcmF0b3JgIG9uIHRoZSBjb21wdXRl" + - "IGNsdXN0ZXI6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + - "eHQ+IGNyZWF0ZSBuYW1lc3BhY2UgbnZjYS1vcGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAt" + - "byB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGFw" + - "cGx5IC1mIC0KCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGNyZWF0" + - "ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogIC0tZG9ja2VyLXNlcnZlcj1u" + - "dmNyLmlvIFwKICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAtLWRvY2tlci1w" + - "YXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgLS1uYW1lc3BhY2U9bnZjYS1vcGVyYXRvciBcCiAg" + - "LS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + - "LXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KYGBgCgpSZWZlcmVuY2UgaXQgaW4gdGhlIGNvbXB1" + - "dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZToKCmBgYHlhbWwKZ2xvYmFsOgogIGltYWdlUHVsbFNl" + - "Y3JldHM6CiAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpUaGUgY2hhcnQgYW5kIG9wZXJhdG9y" + - "IHVzZSB0aGF0IHJlZmVyZW5jZSBpbiBgbnZjYS1vcGVyYXRvcmAgYW5kIG1pcnJvciB0aGUKc2Vj" + - "cmV0IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBjcmVhdGUgYSBicm9hZGVyIG1hbnVhbCBjb21w" + - "dXRlIG5hbWVzcGFjZSBsaXN0LiBGb2xsb3cKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0" + - "aW9uXShjb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkgZm9yIHRoZQpzZWxlY3RlZCBpbnN0" + - "YWxsIGZsb3cuCgojIyBWZXJpZmljYXRpb24KCmBgYGJhc2gKIyBDaGVjayB0aGF0IGEgY29udHJv" + - "bC1wbGFuZSBwb2QgaGFzIHRoZSBpbmplY3RlZCBzZWNyZXQKa3ViZWN0bCAtLWNvbnRleHQgPGNv" + - "bnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IFwK" + - "ICAtbyBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9JwojIEV4cGVjdGVkOiBbeyJu" + - "YW1lIjoibnZjci1jcmVkcyJ9XQoKIyBDaGVjayB0aGUgS3l2ZXJubyBhbm5vdGF0aW9uCmt1YmVj" + - "dGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBwb2QgLW4gPG5hbWVzcGFj" + - "ZT4gPHBvZC1uYW1lPiBcCiAgLW8ganNvbnBhdGg9J3subWV0YWRhdGEuYW5ub3RhdGlvbnMubnZj" + - "ZlwubnZpZGlhXC5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVkLWJ5fScKIyBFeHBlY3RlZDog" + - "a3l2ZXJubwoKIyBDaGVjayBwdWxsIGV2ZW50cwprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1w" + - "bGFuZS1jb250ZXh0PiBnZXQgZXZlbnRzIC1uIDxuYW1lc3BhY2U+IFwKICAtLXNvcnQtYnk9Jy5s" + - "YXN0VGltZXN0YW1wJyB8IGdyZXAgLWkgcHVsbAojIFNob3VsZCBzaG93ICJTdWNjZXNzZnVsbHkg" + - "cHVsbGVkIiBub3QgIjQwMSBVbmF1dGhvcml6ZWQiCgojIENoZWNrIHRoZSBjaGFydC9vcGVyYXRv" + - "ciBtaXJyb3Igb24gdGhlIGNvbXB1dGUgY2x1c3RlcgprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0" + - "ZS1wbGFuZS1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgXAogIC1uIG52Y2Etc3lzdGVt" + - "CmBgYAoKIyMgV2hlbiBQdWxsIFNlY3JldHMgQXJlIE5vdCBOZWVkZWQKCi0gKipBV1MgRUNSIHdp" + - "dGggSUFNIG5vZGUgcm9sZXMqKjogSWYgeW91ciBub2RlcyBoYXZlIGBBbWF6b25FQzJDb250YWlu" + - "ZXJSZWdpc3RyeVJlYWRPbmx5YCBJQU0gcG9saWN5LCBLdWJlcm5ldGVzIGNhbiBwdWxsIGZyb20g" + - "RUNSIHdpdGhvdXQgZXhwbGljaXQgc2VjcmV0cy4KLSAqKlB1YmxpYyByZWdpc3RyaWVzKio6IE5v" + - "IHB1bGwgc2VjcmV0cyBuZWVkZWQuCi0gKipDU1AgYnVpbHQtaW4gY3JlZGVudGlhbCBoZWxwZXJz" + - "Kio6IEdLRSBBcnRpZmFjdCBSZWdpc3RyeSwgQXp1cmUgQUNSIHdpdGggbWFuYWdlZCBpZGVudGl0" + - "eSwgYW5kIHNpbWlsYXIgc2VydmljZXMuCgojIyBUcm91Ymxlc2hvb3RpbmcKCiMjIyBQb2RzIHN0" + - "aWxsIGluIEltYWdlUHVsbEJhY2tPZmYgYWZ0ZXIgYXBwbHlpbmcgcG9saWN5CgpUaGUgS3l2ZXJu" + - "byBwb2xpY3kgb25seSBhZmZlY3RzIHBvZHMgY3JlYXRlZCAqKmFmdGVyKiogdGhlIHBvbGljeSBp" + - "cyBhcHBsaWVkLiBEZWxldGUgc3R1Y2sgcG9kcyB0byB0cmlnZ2VyIHJlY3JlYXRpb246CgpgYGBi" + - "YXNoCmt1YmVjdGwgLS1jb250ZXh0IDx0YXJnZXQtY29udGV4dD4gZGVsZXRlIHBvZHMgLW4gPG5h" + - "bWVzcGFjZT4gLS1hbGwKYGBgCgojIyMgS3l2ZXJubyBhZG1pc3Npb24gY29udHJvbGxlciBub3Qg" + - "cnVubmluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0" + - "PiBnZXQgcG9kcyAtbiBreXZlcm5vCiMgQWxsIHBvZHMgc2hvdWxkIGJlIFJ1bm5pbmcKYGBgCgoj" + - "IyMgUG9saWN5IG5vdCBtYXRjaGluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29udHJv" + - "bC1wbGFuZS1jb250ZXh0PiBnZXQgY2x1c3RlcnBvbGljeSBudmNmLWFkZC1pbWFnZXB1bGxzZWNy" + - "ZXRzCiMgU2hvdWxkIHNob3cgUkVBRFk6IFRydWUKYGBgCgojIyMgV3Jvbmcgc2VjcmV0IG5hbWUK" + - "ClRoZSBwb2xpY3kgcmVmZXJlbmNlcyBgbnZjci1jcmVkc2AuIFZlcmlmeSB0aGUgc2VjcmV0IGV4" + - "aXN0cyB3aXRoIHRoYXQgZXhhY3QgbmFtZToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPHRh" + - "cmdldC1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgLW4gPG5hbWVzcGFjZT4KYGBgClBL" + - "BwhLQjWoABYAAAAWAABQSwECFAAUAAgAAAAAACEAB42pR0oQAABKEAAAEgAJAAAAAAAAAAAAAAAA" + - "AAAAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAP9282dTYQAAU2EA" + - "ACMACQAAAAAAAAAAAAAAkxAAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQF" + - "AAEAps4SUEsBAhQAFAAIAAAAAAAhAJn2DaXdDQAA3Q0AADMACQAAAAAAAAAAAAAAQHIAAGRhdGEv" + - "bnZjZi1zZWxmLW1hbmFnZWQtY2xpL2V4YW1wbGVzL2NpLXBpcGVsaW5lcy5tZFVUBQABAKbOElBL" + - "AQIUABQACAAAAAAAIQChFOOBXQwAAF0MAAA0AAkAAAAAAAAAAAAAAIeAAABkYXRhL252Y2Ytc2Vs" + - "Zi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9tdWx0aS1jbHVzdGVyLm1kVVQFAAEAps4SUEsBAhQAFAAI" + - "AAAAAAAhAEInSQ8FDQAABQ0AADcACQAAAAAAAAAAAAAAT40AAGRhdGEvbnZjZi1zZWxmLW1hbmFn" + - "ZWQtY2xpL3Byb21wdHMvYWRkLWNvbXB1dGUtcGxhbmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + - "ACEA1N6NNJ8ZAACfGQAAOQAJAAAAAAAAAAAAAADCmgAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1j" + - "bGkvcHJvbXB0cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAh" + - "ANJD3AQYJQAAGCUAADcACQAAAAAAAAAAAAAA0bQAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xp" + - "L3Byb21wdHMvZGVwbG95LWFuZC1pbnZva2UubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAcpIs" + - "Jr4OAAC+DgAAPQAJAAAAAAAAAAAAAABX2gAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJv" + - "bXB0cy9kaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBC" + - "ceYeASgAAAEoAAA6AAkAAAAAAAAAAAAAAInpAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9w" + - "cm9tcHRzL2luc3RhbGwtZnJvbS1zY3JhdGNoLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAKrh" + - "OrnIBwAAyAcAADkACQAAAAAAAAAAAAAA+xEBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3By" + - "b21wdHMvcm90YXRlLWNsdXN0ZXItandrcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQDah2NW" + - "5CEAAOQhAAAuAAkAAAAAAAAAAAAAADMaAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9t" + - "cHRzL3RlYXJkb3duLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAHIND2QhIwAAISMAADAACQAA" + - "AAAAAAAAAAAAfDwBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9jb21tYW5k" + - "cy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQAP90vFkAgAAJAIAAAyAAkAAAAAAAAAAAAAAARg" + - "AQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZXhpdC1jb2Rlcy5tZFVUBQAB" + - "AKbOElBLAQIUABQACAAAAAAAIQCsTIqjyzIAAMsyAAAtAAkAAAAAAAAAAAAAAP1oAQBkYXRhL252" + - "Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZmxhZ3MubWRVVAUAAQCmzhJQSwECFAAUAAgA" + - "AAAAACEA864ThHQRAAB0EQAANwAJAAAAAAAAAAAAAAAsnAEAZGF0YS9udmNmLXNlbGYtbWFuYWdl" + - "ZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAA" + - "IQARwxSTSWIAAEliAAAsAAkAAAAAAAAAAAAAAA6uAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWlu" + - "c3RhbGxhdGlvbi9TS0lMTC5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBHVWpWSlYAAEpWAAA0" + - "AAkAAAAAAAAAAAAAALoQAgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9ldmFs" + - "cy9ldmFscy5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAAJSTkB/KAAAfygAAC8ACQAAAAAA" + - "AAAAAAAAb2cCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL2V4YW1wbGVzLm1k" + - "VVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAJZjvFkSMAAAEjAAAEwACQAAAAAAAAAAAAAAVJACAGRh" + - "dGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvY29tcHV0ZS1wbGFu" + - "ZS1pbnN0YWxsYXRpb24ubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAtXpwO7UwAAC1MAAAOwAJ" + - "AAAAAAAAAAAAAADpwAIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJl" + - "bmNlcy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAExHsjQoqAAAKKgAARAAJ" + - "AAAAAAAAAAAAAAAQ8gIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJl" + - "bmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAOPknr7kH" + - "AAC5BwAAPwAJAAAAAAAAAAAAAACVHAMAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRp" + - "b24vcmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEtC" + - "NagAFgAAABYAAD4ACQAAAAAAAAAAAAAAxCQDAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + - "bGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SUEsFBgAAAAAXABcArwkA" + - "ADk7AwAAAA==" + "biIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSB2YWx1ZXMgcHJlY2VkZW5jZSBjaGFp" + + "bjogYmFzZS55YW1sIC0+IGVudiBZQU1MIC0+IGdsb2JhbC55YW1sLmdvdG1wbCAtPiBzZWNyZXRz" + + "IC0+IGlubGluZSB2YWx1ZXMiLAogICAgICAiVGhlIGFnZW50IGlkZW50aWZpZWQgdGhhdCBnbG9i" + + "YWwueWFtbC5nb3RtcGwgb25seSBwYXNzZXMgdGhyb3VnaCBzcGVjaWZpYyBrZXlzIChjYXNzYW5k" + + "cmEucmVwbGljYUNvdW50LCBnbG9iYWwuc3RvcmFnZUNsYXNzLCBnbG9iYWwuaW1hZ2UsIGV0Yy4p" + + "IiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVz" + + "IG11c3QgYmUgc2V0IHZpYSByZWxlYXNlIGlubGluZSB2YWx1ZXM6IGJsb2NrcyIsCiAgICAgICJU" + + "aGUgYWdlbnQgbGlzdGVkIGV4YW1wbGVzIG9mIHZhbHVlcyB0aGF0IGFyZSBwcm9wYWdhdGVkIGFu" + + "ZCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzIHRoYXQgcmVxdWlyZSBhIHJlbGVhc2UgdmFsdWVzIGJs" + + "b2NrIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMxNC1lbmFibGUtbGxtLWZ1bmN0aW9ucyIs" + + "CiAgICAicXVlc3Rpb24iOiAiSSBuZWVkIHRvIGRlcGxveSBmdW5jdGlvblR5cGU6IExMTSBmdW5j" + + "dGlvbnMgb24gYSBzZWxmLW1hbmFnZWQsIHNpbmdsZS1ub2RlIGlzb2xhdGVkIHRlc3QgY2x1c3Rl" + + "ci4gV2hhdCBIZWxtZmlsZSBjb25maWd1cmF0aW9uIGFuZCB2ZXJpZmljYXRpb24gc3RlcHMgZG8g" + + "SSBuZWVkPyIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + + "bGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGVuYWJsZWQgdGhlIExMTSBh" + + "ZGRvbiB3aXRoIGFkZG9ucy5sbG0uZW5hYmxlZCwgY29uZmlndXJlZCBzaW5nbGUgcmVwbGljYXMg" + + "Zm9yIHRoZSBMTE0gQVBJIEdhdGV3YXkgYW5kIHJlcXVlc3Qgcm91dGVyLCBhbmQgZXhwbGFpbmVk" + + "IHRoYXQgdGhlIHJlcXVlc3Qgcm91dGVyIHVzZXMgcG93ZXItb2YtdHdvIHdoZW4gbm8gbG9hZC1i" + + "YWxhbmNlciBjb25maWd1cmF0aW9uIGlzIHNldC4gSXQgbGlua2VkIHRoZSBjYW5vbmljYWwgcmVx" + + "dWVzdC1yb3V0ZXIgbG9hZC1iYWxhbmNpbmcgZ3VpZGUgZm9yIG90aGVyIHJvdXRpbmcgbWV0aG9k" + + "cy4gRm9yIHRoZSBpc29sYXRlZCBwbGFpbnRleHQgY2x1c3RlciwgaXQgcmVsaWVkIG9uIHRoZSBz" + + "ZWxmLW1hbmFnZWQgc3RhY2sgZGVmYXVsdCBmb3IgdGhlIGJ1bmRsZWQgZ2F0ZXdheS10by1BUEkg" + + "YXV0aGVudGljYXRpb24gaG9wIGFuZCBpbmNsdWRlZCBhZ2VudENvbmZpZy5tZXJnZUNvbmZpZy53" + + "b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZSBmb3IgdGhlIHNlcGFyYXRlIHdvcmtlciB0cmFu" + + "c3BvcnQsIHdpdGggYSB3YXJuaW5nIHRoYXQgcGxhaW50ZXh0IHdvcmtlciB0cmFuc3BvcnQgaXMg" + + "bm90IGZvciBwcm9kdWN0aW9uLiBJdCByZWZyZXNoZWQgdGhlIGNvbXB1dGUgcGxhbmUgdXNpbmcg" + + "dGhlIHNhbWUgaGFuZG9mZiB1c2VkIGR1cmluZyBpbnN0YWxsYXRpb24sIHJlZGVwbG95ZWQgZXhp" + + "c3RpbmcgTExNIGZ1bmN0aW9ucywgYW5kIHZlcmlmaWVkIHRoZSBMTE0gZGVwbG95bWVudHMsIHJv" + + "dXRlLCBhbmQgbGxtLXdvcmtlciBzaWRlY2FyLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBb" + + "CiAgICAgICJUaGUgYWdlbnQgdXNlZCBhZGRvbnMubGxtLmVuYWJsZWQsIG5vdCB0aGUgb2Jzb2xl" + + "dGUgbGxtLmVuYWJsZWQgcGF0aCIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGdhdGV3YXkgYW5kIHJl" + + "cXVlc3RSb3V0ZXIgcmVwbGljYUNvdW50IHRvIDEgZm9yIHRoZSBzaW5nbGUtbm9kZSB0ZXN0IGNs" + + "dXN0ZXIiLAogICAgICAiVGhlIGFnZW50IHN0YXRlZCB0aGF0IHRoZSByZXF1ZXN0IHJvdXRlciBk" + + "ZWZhdWx0cyB0byBwb3dlci1vZi10d28gYW5kIGxpbmtlZCB0aGUgY2Fub25pY2FsIHJlcXVlc3Qt" + + "cm91dGVyIGxvYWQtYmFsYW5jaW5nIGd1aWRlIGZvciBvdGhlciBtZXRob2RzIiwKICAgICAgIlRo" + + "ZSBhZ2VudCBleHBsYWluZWQgdGhhdCB0aGUgYnVuZGxlZCBnYXRld2F5LXRvLUFQSSBhdXRoZW50" + + "aWNhdGlvbiBob3AgZGVmYXVsdHMgdG8gcGxhaW50ZXh0LCBpbmNsdWRlZCB3b3JrbG9hZC5zdGFy" + + "Z2F0ZVFVSUNJbnNlY3VyZSBvbmx5IGZvciB0aGUgaXNvbGF0ZWQgd29ya2VyIHRyYW5zcG9ydCwg" + + "YW5kIHdhcm5lZCBhZ2FpbnN0IHBsYWludGV4dCB3b3JrZXIgdHJhbnNwb3J0IGluIHByb2R1Y3Rp" + + "b24iLAogICAgICAiVGhlIGFnZW50IGFwcGxpZWQgdGhlIGNvbnRyb2wtcGxhbmUgSGVsbWZpbGUg" + + "ZW52aXJvbm1lbnQsIHJlZnJlc2hlZCB0aGUgY29tcHV0ZSBwbGFuZSB3aXRoIHRoZSBzYW1lIHNl" + + "bGVjdGVkIGhhbmRvZmYsIGFuZCByZWNyZWF0ZWQgb3IgcmVkZXBsb3llZCBleGlzdGluZyBMTE0g" + + "ZnVuY3Rpb25zIiwKICAgICAgIlRoZSBhZ2VudCB2ZXJpZmllZCBsbG0tYXBpLWdhdGV3YXksIGxs" + + "bS1yZXF1ZXN0LXJvdXRlciwgdGhlIExMTSBIVFRQUm91dGUsIGFuZCB0aGUgbGxtLXdvcmtlciBz" + + "aWRlY2FyIGluY2x1ZGluZyAtLXF1aWMtaW5zZWN1cmUiCiAgICBdCiAgfSwKICB7CiAgICAiaWQi" + + "OiAiRzgtTkVHLW5vdC1mb3ItazNkIiwKICAgICJxdWVzdGlvbiI6ICJTZXQgdXAgYSBsb2NhbCBO" + + "VkNGIGRldiBjbHVzdGVyIHVzaW5nIGszZCBmb3IgdGVzdGluZyIsCiAgICAiZXhwZWN0ZWRfc2tp" + + "bGwiOiBudWxsLAogICAgInNob3VsZF90cmlnZ2VyIjogZmFsc2UsCiAgICAiZ3JvdW5kX3RydXRo" + + "IjogIlRoaXMgaXMgYSBsb2NhbCBrM2QgZGV2ZWxvcG1lbnQgcmVxdWVzdCB0aGF0IGJlbG9uZ3Mg" + + "dG8gdGhlIG52Y2Ytc2VsZi1ob3N0ZWQtbG9jYWwtZGV2IHNraWxsLCBub3QgbnZjZi1zZWxmLW1h" + + "bmFnZWQtaW5zdGFsbGF0aW9uLiBUaGUgYWdlbnQgZGlkIG5vdCByZWFkIG9yIHVzZSB0aGUgc2Vs" + + "Zi1tYW5hZ2VkIGluc3RhbGxhdGlvbiBza2lsbCBhbmQgaW5zdGVhZCBwcm92aWRlZCBrM2Qtc3Bl" + + "Y2lmaWMgZ3VpZGFuY2UuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBh" + + "Z2VudCBkaWQgbm90IHJlYWQgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL1NLSUxMLm1k" + + "IiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHByb3ZpZGUgaGVsbWZpbGUtYmFzZWQgcHJvZHVj" + + "dGlvbiBkZXBsb3ltZW50IGluc3RydWN0aW9ucyIsCiAgICAgICJUaGUgYWdlbnQgcHJvdmlkZWQg" + + "azNkLXNwZWNpZmljIGxvY2FsIGRldmVsb3BtZW50IGd1aWRhbmNlIG9yIGRlZmVycmVkIHRvIHRo" + + "ZSBhcHByb3ByaWF0ZSBsb2NhbC1kZXYgc2tpbGwiCiAgICBdCiAgfQpdClBLBwhHVWpWSlYAAEpW" + + "AABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAC8ACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWlu" + + "c3RhbGxhdGlvbi9leGFtcGxlcy5tZFVUBQABAKbOEiMgRXhhbXBsZXMKCldvcmtlZCBleGFtcGxl" + + "cyBiYXNlZCBvbiByZWFsIGRlcGxveW1lbnQgc2NlbmFyaW9zLgoKIyMgRXhhbXBsZSAxOiBPdmVy" + + "cmlkZSBDYXNzYW5kcmEgUmVzb3VyY2VzCgpUaGUgZGVmYXVsdCBDYXNzYW5kcmEgcmVzb3VyY2Ug" + + "bGltaXRzIGNhdXNlIE9PTSBvbiBsYXJnZSBpbnN0YW5jZSB0eXBlcyAoZS5nLiwgYHA1LjQ4eGxh" + + "cmdlYCkuCgpQcm9ibGVtOiBDYXNzYW5kcmEgcG9kcyByZXN0YXJ0IHdpdGggYE9PTUtpbGxlZGAu" + + "CgpTb2x1dGlvbjogT3ZlcnJpZGUgcmVzb3VyY2VzIHZpYSBoZWxtZmlsZSByZWxlYXNlIHZhbHVl" + + "cyBibG9jay4KCiMjIyBTdGVwIDE6IENhcHR1cmUgYmFzZWxpbmUKCmBgYGJhc2gKSEVMTUZJTEVf" + + "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUgPiAv" + + "dG1wL2Nhc3MtYmVmb3JlLnlhbWwKZ3JlcCAtQTggJ3Jlc291cmNlczonIC90bXAvY2Fzcy1iZWZv" + + "cmUueWFtbCB8IGhlYWQgLTEwCmBgYAoKIyMjIFN0ZXAgMjogQWRkIG92ZXJyaWRlIHRvIGhlbG1m" + + "aWxlLmQvMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsCgpJbiB0aGUgZXhhbXBsZXMgYmVsb3cs" + + "IGA8cHJpdmF0ZS12YWx1ZXM+YCByZWZlcnMgdG8gdGhlIGBzZWNyZXRzL2AgZGlyZWN0b3J5IGF0" + + "IHRoZSBoZWxtZmlsZSBzdGFjayByb290LgoKYGBgeWFtbAotIG5hbWU6IGNhc3NhbmRyYQogIHZl" + + "cnNpb246IDAuOC4wCiAgY29uZGl0aW9uOiBjYXNzYW5kcmEuZW5hYmxlZAogIG5hbWVzcGFjZTog" + + "Y2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAqZGVwZW5kZW5jeQogIHZhbHVlczoKICAgIC0gLi4vZ2xv" + + "YmFsLnlhbWwuZ290bXBsCiAgICAtIC4uLzxwcml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYg" + + "IkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCiAgICAtIGNhc3NhbmRyYToKICAgICAgICBy" + + "ZXNvdXJjZXM6CiAgICAgICAgICBsaW1pdHM6CiAgICAgICAgICAgIGNwdTogIjgiCiAgICAgICAg" + + "ICAgIG1lbW9yeTogODE5Mk1pCiAgICAgICAgICByZXF1ZXN0czoKICAgICAgICAgICAgY3B1OiAi" + + "MiIKICAgICAgICAgICAgbWVtb3J5OiA0MDk2TWkKYGBgCgojIyMgU3RlcCAzOiBWZXJpZnkgYW5k" + + "IGFwcGx5CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5h" + + "bWU9Y2Fzc2FuZHJhIHRlbXBsYXRlID4gL3RtcC9jYXNzLWFmdGVyLnlhbWwKZGlmZiAvdG1wL2Nh" + + "c3MtYmVmb3JlLnlhbWwgL3RtcC9jYXNzLWFmdGVyLnlhbWwgICMgQ29uZmlybSByZXNvdXJjZXMg" + + "Y2hhbmdlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3Nh" + + "bmRyYSBzeW5jCmBgYAoKTm90ZTogYHJlc291cmNlUHJlc2V0YCAoYSBCaXRuYW1pIGZlYXR1cmUp" + + "IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIE5WQ0YgY2Fzc2FuZHJhIHdyYXBwZXIgY2hhcnQuIFVz" + + "ZSBleHBsaWNpdCBgcmVzb3VyY2VzYCBpbnN0ZWFkLgoKLS0tCgojIyBFeGFtcGxlIDI6IERlcGxv" + + "eSBmcm9tIE5HQyBQcml2YXRlIFJlZ2lzdHJ5IHdpdGggUHVsbCBTZWNyZXRzCgpEZXBsb3kgdGhl" + + "IE5WQ0Ygc3RhY2sgcHVsbGluZyBpbWFnZXMgZGlyZWN0bHkgZnJvbSBOR0MgKGBudmNyLmlvYCkg" + + "aW5zdGVhZCBvZiBhIG1pcnJvcmVkIHJlZ2lzdHJ5LCB1c2luZyBpbWFnZSBwdWxsIHNlY3JldHMu" + + "CgojIyMgU3RlcCAxOiBDb25maWd1cmUgZW52aXJvbm1lbnQgZm9yIE5HQwoKYGBgeWFtbAojIGVu" + + "dmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoKICBoZWxtOgogICAgc291cmNlczoKICAgICAg" + + "cmVnaXN0cnk6IG52Y3IuaW8KICAgICAgcmVwb3NpdG9yeTogbnZpZGlhL252Y2YKICBpbWFnZToK" + + "ICAgIHJlZ2lzdHJ5OiBudmNyLmlvCiAgICByZXBvc2l0b3J5OiBudmlkaWEvbnZjZgpgYGAKCiMj" + + "IyBTdGVwIDI6IEF1dGhlbnRpY2F0ZSBsb2NhbGx5IChmb3IgaGVsbWZpbGUgY2hhcnQgcHVsbHMp" + + "CgpgYGBiYXNoCmRvY2tlciBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tlbicgLXAgIiROR0Nf" + + "QVBJX0tFWSIKaGVsbSByZWdpc3RyeSBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tlbicgLXAg" + + "IiROR0NfQVBJX0tFWSIKYGBgCgojIyMgU3RlcCAzOiBDcmVhdGUgbmFtZXNwYWNlcyBhbmQgcHVs" + + "bCBzZWNyZXRzCgpgYGBiYXNoCmV4cG9ydCBOR0NfQVBJX0tFWT0iPHlvdXItbmdjLWFwaS1rZXk+" + + "IgoKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBl" + + "c3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQg" + + "PGNvbnRyb2wtcGxhbmUtY29udGV4dD4gY3JlYXRlIG5hbWVzcGFjZSAiJG5zIiBcCiAgICAtLWRy" + + "eS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1j" + + "b250ZXh0PiBhcHBseSAtZiAtCmRvbmUKCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMt" + + "c3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBk" + + "bwogIGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBzZWNy" + + "ZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogICAgLS1kb2NrZXItc2VydmVyPW52Y3Iu" + + "aW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgICAtLWRvY2tlci1w" + + "YXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5hbWVzcGFjZT0iJG5zIiBcCiAgICAtLWRy" + + "eS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1j" + + "b250ZXh0PiBhcHBseSAtZiAtCmRvbmUKYGBgCgojIyMgU3RlcCA0OiBBZGQgaW1hZ2VQdWxsU2Vj" + + "cmV0cyB0byBoZWxtZmlsZSByZWxlYXNlcwoKQWRkIHRoZSBjaGFydC1zcGVjaWZpYyBgaW1hZ2VQ" + + "dWxsU2VjcmV0c2Aga2V5IHRvIGVhY2ggcmVsZWFzZS4gRXhhbXBsZSBmb3IgY2Fzc2FuZHJhIGlu" + + "IGBoZWxtZmlsZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbGA6CgpgYGB5YW1sCi0gbmFt" + + "ZTogY2Fzc2FuZHJhCiAgdmVyc2lvbjogMC44LjAKICBjb25kaXRpb246IGNhc3NhbmRyYS5lbmFi" + + "bGVkCiAgbmFtZXNwYWNlOiBjYXNzYW5kcmEtc3lzdGVtCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFs" + + "dWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVz" + + "Pi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwKICAgIC0gY2Fz" + + "c2FuZHJhOgogICAgICAgIGdsb2JhbDoKICAgICAgICAgIGltYWdlUHVsbFNlY3JldHM6CiAgICAg" + + "ICAgICAgIC0gbnZjci1jcmVkcwpgYGAKClNlZSBbcmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWRd" + + "KHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKSBmb3IgdGhlIGtleSBmb3IgZXZlcnkgY2hhcnQu" + + "CgpUaGVzZSBhcmUgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzLiBGb3IgYSBzZXBhcmF0ZSBjb21w" + + "dXRlIGNsdXN0ZXIsIGNyZWF0ZSB0aGUKc2VjcmV0IG9ubHkgaW4gYG52Y2Etb3BlcmF0b3JgOyB0" + + "aGUgY2hhcnQgYW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0bwpgbnZjYS1zeXN0ZW1gLiBTZWUgW1Nw" + + "bGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUt" + + "aW5zdGFsbGF0aW9uLm1kI3B1bGwtc2VjcmV0cykuCgojIyMgU3RlcCA1OiBEZXBsb3kKCmBgYGJh" + + "c2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0ta3ViZS1jb250ZXh0IDxjb250cm9sLXBs" + + "YW5lLWNvbnRleHQ+IHN5bmMKYGBgCgojIyMgU3RlcCA2OiBQYXRjaCBTZXJ2aWNlQWNjb3VudHMg" + + "Zm9yIGNoYXJ0cyB3aXRob3V0IG5hdGl2ZSBzdXBwb3J0CgpBZnRlciBQaGFzZSAxIChkZXBlbmRl" + + "bmNpZXMpIGNvbXBsZXRlcywgT3BlbkJhbyBwb2RzIHdpbGwgYmUgaW4gYEltYWdlUHVsbEJhY2tP" + + "ZmZgLiBQYXRjaCBhbmQgcmVzdGFydDoKCmBgYGJhc2gKZm9yIG5zIGluIHZhdWx0LXN5c3RlbSBu" + + "dmNmIGVzczsgZG8KICBmb3Igc2EgaW4gJChrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFu" + + "ZS1jb250ZXh0PiBnZXQgc2EgLW4gIiRucyIgXAogICAgLS1uby1oZWFkZXJzIC1vIGN1c3RvbS1j" + + "b2x1bW5zPSI6bWV0YWRhdGEubmFtZSIpOyBkbwogICAga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + + "b2wtcGxhbmUtY29udGV4dD4gcGF0Y2ggc2VydmljZWFjY291bnQgLW4gIiRucyIgIiRzYSIgXAog" + + "ICAgICAtcCAneyJpbWFnZVB1bGxTZWNyZXRzIjogW3sibmFtZSI6ICJudmNyLWNyZWRzIn1dfScK" + + "ICBkb25lCmRvbmUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZGVs" + + "ZXRlIHBvZHMgLW4gdmF1bHQtc3lzdGVtIC0tYWxsCmBgYAoKVmVyaWZ5OgoKYGBgYmFzaAprdWJl" + + "Y3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZXZlbnRzIC1uIHZhdWx0" + + "LXN5c3RlbSBcCiAgLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcgfCBncmVwIC1pIHB1bGwKIyBT" + + "aG91bGQgc2hvdyAiU3VjY2Vzc2Z1bGx5IHB1bGxlZCBpbWFnZSIgZnJvbSBudmNyLmlvCmBgYAoK" + + "LS0tCgojIyBFeGFtcGxlIDM6IEZ1bGwgVGVhcmRvd24gYW5kIFJlaW5zdGFsbAoKV2hlbiBhIGRl" + + "cGxveW1lbnQgaXMgYnJva2VuIGFuZCB5b3UgbmVlZCBhIGNsZWFuIHNsYXRlLgoKIyMjIFN0ZXAg" + + "MTogRGVzdHJveSB0aGUgY29tcHV0ZS1wbGFuZSBzdGFjawoKYGBgYmFzaAptYWtlIC1DIGRlcGxv" + + "eS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGRlc3Ryb3kgXAogIENMVVNURVJfTkFNRT08Y2x1" + + "c3Rlci1uYW1lPiBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNv" + + "bXB1dGUtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpJZiBjb21wdXRlIGNsZWFudXAgaXMgc3R1Y2sg" + + "b24gZmluYWxpemVycywgdXNlIHRoZSBjb21wdXRlLWNvbnRleHQgcHJvY2VkdXJlIGluCltkZWJ1" + + "Z2dpbmcubWRdKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kI2ZhaWx1cmUtbnZjYS1jbGVhbnVwLXN0" + + "dWNrLWZpbmFsaXplcnMpLgoKIyMjIFN0ZXAgMjogRGVyZWdpc3RlciB0aGUgY29tcHV0ZSBjbHVz" + + "dGVyCgpSZWFkIGBjbHVzdGVySURgIGFuZCBgbmNhSURgIGZyb20KYGRlcGxveS9zdGFja3MvbnZj" + + "Zi1jb21wdXRlLXBsYW5lL3JlZ2lzdHJhdGlvbi88Y2x1c3Rlci1uYW1lPi1yZWdpc3Rlci12YWx1" + + "ZXMueWFtbGAuClNob3cgdGhlIElEIGFuZCBnZXQgY29uZmlybWF0aW9uIGJlZm9yZSBkZWxldGlu" + + "ZyB0aGUgSUNNUyByb3c6CgpgYGBiYXNoCjxudmNmLWNsaT4gLS1jb25maWcgPGNvbmZpZz4gY2x1" + + "c3RlciBkZWxldGUgXAogIC0tY2x1c3Rlci1pZCA8Y2x1c3Rlci1pZC1mcm9tLXJlZ2lzdHJhdGlv" + + "bi12YWx1ZXM+IFwKICAtLW5jYS1pZCA8bmNhLWlkPiBcCiAgLS1pZ25vcmUtbWlzc2luZwpgYGAK" + + "ClJlcGVhdCBzdGVwcyAxIGFuZCAyIGZvciBldmVyeSBjb21wdXRlIGNsdXN0ZXIuCgojIyMgU3Rl" + + "cCAzOiBEZXN0cm95IHRoZSBjb250cm9sLXBsYW5lIHN0YWNrCgpQcmVzZXJ2ZSB0aGUgYGNlcnQt" + + "bWFuYWdlcmAgbmFtZXNwYWNlIGJ5IGRlZmF1bHQuIE5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9l" + + "cwpub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZS4gQmVmb3JlIHJ1bm5pbmcgZGVzdHJveSwg" + + "aWRlbnRpZnkgd2hldGhlcgpjZXJ0LW1hbmFnZXIgaXMgZXh0ZXJuYWwuIEZvciBhbiBleHRlcm5h" + + "bCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlCmBjZXJ0TWFuYWdlci5lbmFibGVkOiBm" + + "YWxzZWAgYW5kIGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBhbiBpbnRlbmRlZApzdGFjay1tYW5h" + + "Z2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUgYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IHRydWVgLCB2" + + "ZXJpZnkKbWF0Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1ldGFkYXRhIGFuZCBhYm9ydCBvbiBt" + + "aXNzaW5nIG9yIG1pc21hdGNoZWQKZXZpZGVuY2UuIE9ubHkgcGxhbiBuYW1lc3BhY2UgcmVtb3Zh" + + "bCBhZnRlciB2ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kCmdldHRpbmcgZXhwbGlj" + + "aXQgY29uZmlybWF0aW9uOyBvdGhlcndpc2UgZG8gbm90IGRlbGV0ZSBpdC4KCmBgYGJhc2gKS1VC" + + "RUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBcCm1ha2UgLUMgZGVwbG95L3N0YWNr" + + "cy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09O" + + "RklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpQYXNzIGJvdGgga3ViZWNv" + + "bmZpZyBmb3JtcyBiZWNhdXNlIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlIGNsZWFudXAgdXNlcwph" + + "bWJpZW50IGBrdWJlY3RsYC4KCiMjIyBTdGVwIDQ6IFZlcmlmeSBjbGVhbgoKYGBgYmFzaAprdWJl" + + "Y3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgbnMgfCBcCiAgZ3JlcCAt" + + "RSAnKG52Y2F8bnZjZi1iYWNrZW5kfGdyb3ZlfGR5bmFtbyknCmt1YmVjdGwgLS1jb250ZXh0IDxj" + + "b250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBucyB8IFwKICBncmVwIC1FICcoY2Fzc2FuZHJhfG5h" + + "dHN8dmF1bHR8bnZjZnxhcGkta2V5c3xlc3N8c2lzKScKIyBCb3RoIGNvbW1hbmRzIHNob3VsZCBy" + + "ZXR1cm4gZW1wdHkuCmBgYAoKIyMjIFN0ZXAgNTogUmVpbnN0YWxsIGluIHNwbGl0IG9yZGVyCgpG" + + "b2xsb3cgW0NsZWFuIEluc3RhbGxhdGlvbl0oU0tJTEwubWQjY2xlYW4taW5zdGFsbGF0aW9uKSwg" + + "dGhlbiByZXR1cm4gdG8gdGhlCnNhbWUgaGFuZG9mZiBpbiBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJ" + + "bnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLgoK" + + "LS0tCgojIyBFeGFtcGxlIDQ6IFJlY292ZXIgZnJvbSBhIEdhdGV3YXkgRW5kcG9pbnQgQ2hhbmdl" + + "CgpUaGUgc2VwYXJhdGVseSBwcm92aXNpb25lZCBHYXRld2F5IG9yIGl0cyBsb2FkIGJhbGFuY2Vy" + + "IHdhcyByZWNyZWF0ZWQgYW5kIGdvdCBhIG5ldyBlbmRwb2ludC4KCiMjIyBTdGVwIDE6IEdldCB0" + + "aGUgbmV3IGVuZHBvaW50CgpgYGBiYXNoCkdBVEVXQVlfQUREUj0kKGt1YmVjdGwgLS1jb250ZXh0" + + "IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5IFwKICBudmNmLWdhdGV3YXkgLW4g" + + "ZW52b3ktZ2F0ZXdheSBcCiAgLW8ganNvbnBhdGg9J3suc3RhdHVzLmFkZHJlc3Nlc1swXS52YWx1" + + "ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSIgpgYGAKCiMjIyBTdGVwIDI6IFVwZGF0ZSBETlMg" + + "YW5kIGRpcmVjdCBhZGRyZXNzIGZpZWxkcwoKS2VlcCBgZ2xvYmFsLmRvbWFpbmAsIHJvdXRlIGhv" + + "c3RuYW1lcywgYW5kIENMSSBIb3N0IGZpZWxkcyB1bmNoYW5nZWQuIFBvaW50IHRoZQpETlMgcmVj" + + "b3JkcyBmb3IgcmVuZGVyZWQgcm91dGUgaG9zdG5hbWVzLCBzdWNoIGFzIGBhcGkuPGRvbWFpbj5g" + + "IGFuZApgKi5pbnZvY2F0aW9uLjxkb21haW4+YCwgdG8gYEdBVEVXQVlfQUREUmAuIEZvciBhIHRl" + + "bXBvcmFyeSBlbnZpcm9ubWVudCB3aXRob3V0CkROUywga2VlcCBpdHMgcmVzZXJ2ZWQgcm91dGUg" + + "c3VmZml4IGFuZCBjb25uZWN0IHRvIGBHQVRFV0FZX0FERFJgIHdpdGggdGhlCm1hdGNoaW5nIGBI" + + "b3N0YCBoZWFkZXIuCgpGb3IgYSBzcGxpdCBkZXBsb3ltZW50IGNvbmZpZ3VyZWQgd2l0aCBkaXJl" + + "Y3QgR2F0ZXdheSBhZGRyZXNzZXMsIHJlcGxhY2Ugb25seQp0aGUgYWRkcmVzcy1iZWFyaW5nIHZh" + + "bHVlczogY29udHJvbC1wbGFuZSBgbnZjZk5hdHNTZXJ2aWNlVVJMYCwgY29tcHV0ZS1wbGFuZQpJ" + + "Q01TLCBSZVZhbCwgYW5kIE5BVFMgVVJMcywgYW5kIENMSSBVUkwgZmllbGRzLiBLZWVwIHRoZWly" + + "IGRvbWFpbiBhbmQgSG9zdApvdmVycmlkZXMgdW5jaGFuZ2VkLiBSZWZyZXNoIHJlZ2lzdHJhdGlv" + + "biBhbmQgaW5zdGFsbGF0aW9uIHRocm91Z2ggdGhlIHNhbWUKaGFuZG9mZiB1c2VkIG9yaWdpbmFs" + + "bHkuIFNlZQpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29t" + + "cHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpCmZvciB0aGUgZmllbGRzIGFuZCBjb21wbGV0ZSBj" + + "b21tYW5kcy4KCiMjIyBTdGVwIDM6IFZlcmlmeSBib3RoIGNvbnRleHRzCgpgYGBiYXNoCmRpZyAr" + + "c2hvcnQgImFwaS48ZG9tYWluPiIKY3VybCAtSCAiSG9zdDogYXBpLjxkb21haW4+IiAiaHR0cDov" + + "LyRHQVRFV0FZX0FERFIvaGVhbHRoIgprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1j" + + "b250ZXh0PiBnZXQgZ2F0ZXdheSBudmNmLWdhdGV3YXkgXAogIC1uIGVudm95LWdhdGV3YXkgLW8g" + + "d2lkZQprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgaHR0cHJv" + + "dXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgdGNw" + + "cm91dGVzIC1BCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IHJvbGxv" + + "dXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Etb3BlcmF0b3IgLW4gbnZjYS1vcGVyYXRvciAt" + + "LXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IHdh" + + "aXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4gLW4gbnZjYS1v" + + "cGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3suc3RhdHVzLmFnZW50U3RhdHVzfSc9aGVhbHRo" + + "eSAtLXRpbWVvdXQ9MTBtCmBgYAoKLS0tCgojIyBFeGFtcGxlIDU6IERlcGxveSBPbmx5IERlcGVu" + + "ZGVuY2llcwoKVXNlZnVsIGZvciB0ZXN0aW5nIG9yIHdoZW4gaXRlcmF0aW5nIG9uIHNlcnZpY2Ug" + + "Y29uZmlndXJhdGlvbi4KCmBgYGJhc2gKIyBEZXBsb3kganVzdCBOQVRTLCBDYXNzYW5kcmEsIE9w" + + "ZW5CYW8KSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91" + + "cD1kZXBlbmRlbmNpZXMgc3luYwoKIyBDaGVjayBzdGF0dXMKa3ViZWN0bCBnZXQgcG9kcyAtbiBu" + + "YXRzLXN5c3RlbQprdWJlY3RsIGdldCBwb2RzIC1uIGNhc3NhbmRyYS1zeXN0ZW0Ka3ViZWN0bCBn" + + "ZXQgcG9kcyAtbiB2YXVsdC1zeXN0ZW0KCiMgRGVwbG95IGp1c3Qgb25lIHNwZWNpZmljIHJlbGVh" + + "c2UKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEg" + + "c3luYwpgYGAKCiMjIyBTZWxlY3RvciByZWZlcmVuY2UKCnwgU2VsZWN0b3IgfCBSZWxlYXNlcyB8" + + "CnwtLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgYHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzYCB8" + + "IG5hdHMsIGNhc3NhbmRyYSwgb3BlbmJhby1zZXJ2ZXIgfAp8IGByZWxlYXNlLWdyb3VwPXNlcnZp" + + "Y2VzYCB8IGFwaS1rZXlzLCBzaXMsIGFwaSwgaW52b2NhdGlvbi1zZXJ2aWNlLCBncnBjLXByb3h5" + + "LCBlc3MtYXBpLCBub3Rhcnktc2VydmljZSwgcmV2YWwsIG9wdGlvbmFsIGxsbS1yZXF1ZXN0LXJv" + + "dXRlciBhbmQgbGxtLWFwaS1nYXRld2F5IHdoZW4gYGxsbS5lbmFibGVkPXRydWVgLCBvcHRpb25h" + + "bCB2YW5pdHktZ2F0ZXdheSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRoYXQgaW5jbHVkZSB0aGUg" + + "YWRkb24gYW5kIGhhdmUgYGFkZG9ucy52YW5pdHlHYXRld2F5LmVuYWJsZWQ9dHJ1ZWAsIG9wdGlv" + + "bmFsIG52Y2YtdWkgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhlIGFkZG9u" + + "IGFuZCBoYXZlIGBhZGRvbnMubnZjZlVpLmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1lPWxsbS1yZXF1" + + "ZXN0LXJvdXRlcmAgfCBEZXBsb3kganVzdCB0aGUgTExNIHJlcXVlc3Qgcm91dGVyIHdoZW4gYGxs" + + "bS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1sbG0tYXBpLWdhdGV3YXlgIHwgRGVwbG95IGp1c3Qg" + + "dGhlIExMTSBBUEkgZ2F0ZXdheSB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCB8CnwgYG5hbWU9dmFu" + + "aXR5LWdhdGV3YXlgIHwgRGVwbG95IGp1c3QgVmFuaXR5IEdhdGV3YXkgb25seSB3aGVuIHRoZSBz" + + "dGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoYXQgcmVsZWFzZSBhbmQgYGFkZG9ucy52YW5pdHlHYXRl" + + "d2F5LmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1lPW52Y2YtdWlgIHwgRGVwbG95IE5WQ0YgVUkgb25s" + + "eSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoYXQgcmVsZWFzZSBhbmQgYGFkZG9u" + + "cy5udmNmVWkuZW5hYmxlZD10cnVlYCB8CnwgYHJlbGVhc2UtZ3JvdXA9aW5ncmVzc2AgfCBpbmdy" + + "ZXNzIChnYXRld2F5IHJvdXRlcykgfAp8IGBuYW1lPTxyZWxlYXNlPmAgfCBBbnkgaW5kaXZpZHVh" + + "bCByZWxlYXNlIGJ5IG5hbWUgfAoKTm90ZTogYGFkbWluLWlzc3Vlci1wcm94eWAgZG9lcyBub3Qg" + + "aGF2ZSBhIHJlbGVhc2UtZ3JvdXAgbGFiZWwuIFRhcmdldCBpdCB3aXRoIGAtLXNlbGVjdG9yIG5h" + + "bWU9YWRtaW4taXNzdWVyLXByb3h5YC4KUEsHCAJSTkB/KAAAfygAAFBLAwQUAAgAAAAAACEAAAAA" + + "AAAAAAAAAAAATAAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5j" + + "ZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWRVVAUAAQCmzhIjIFNwbGl0IENvbXB1dGUt" + + "UGxhbmUgSW5zdGFsbGF0aW9uCgpUaGUgY29udHJvbCBwbGFuZSBhbmQgY29tcHV0ZSBwbGFuZSBh" + + "cmUgc2VwYXJhdGUgc3RhY2tzLiBJbnN0YWxsIHRoZSBjb250cm9sCnBsYW5lIGZpcnN0LCB0aGVu" + + "IHJlZ2lzdGVyIGFuZCBpbnN0YWxsIGVhY2ggY29tcHV0ZSBjbHVzdGVyLiBDaG9vc2Ugb25lIGhh" + + "bmRvZmYKYmVsb3cgYW5kIHVzZSBpdCBmb3IgdGhlIGZ1bGwgbGlmZWN5Y2xlLiBEbyBub3QgY29t" + + "YmluZSBhIENMSS1nZW5lcmF0ZWQgcHJvZmlsZQp3aXRoIHRoZSBIZWxtZmlsZSB2YWx1ZXMgZmxv" + + "dy4KCiMjIENob29zZSBhIEhhbmRvZmYKCnwgRmxvdyB8IFNvdXJjZSBvZiBjb250cm9sLXBsYW5l" + + "IGVuZHBvaW50cyB8IFJlZ2lzdHJhdGlvbiBhcnRpZmFjdCB8CnwtLS0tLS18LS0tLS0tLS0tLS0t" + + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgSGVsbWZp" + + "bGUgdmFsdWVzIHwgU2VwYXJhdGUgY29udHJvbC1wbGFuZSBhbmQgY29tcHV0ZS1wbGFuZSBlbnZp" + + "cm9ubWVudCBmaWxlcyB8IGBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9yZWdpc3Ry" + + "YXRpb24vPGNsdXN0ZXI+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYCB8CnwgQ0xJIHByb2ZpbGUgfCBD" + + "TEktZ2VuZXJhdGVkIGBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1wbGFu" + + "ZS1wcm9maWxlLnlhbWxgIHwgQ0xJLWdlbmVyYXRlZCBgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1" + + "dGUtcGxhbmUvb3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgfAoKVGhlIENMSSBw" + + "cm9maWxlIGlzIG1hbmRhdG9yeSBmb3IgdGhlIENMSSBmbG93IGFuZCBtdXN0IG5vdCBiZSBoYW5k" + + "LWF1dGhvcmVkLgpUaGUgSGVsbWZpbGUgZmxvdyBkb2VzIG5vdCBjb25zdW1lIGEgY29udHJvbC1w" + + "bGFuZSBwcm9maWxlLgoKQ29tbWFuZHMgYmVsb3cgdXNlIG1vbm9yZXBvIHBhdGhzIGZyb20gdGhl" + + "IHJlcG9zaXRvcnkgcm9vdC4gT3BlcmF0b3JzIHVzaW5nCmV4dHJhY3RlZCBwYWNrYWdlcyBuZWVk" + + "IG1hdGNoaW5nLXZlcnNpb24gYG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrYCBhbmQKYG52Y2YtY29t" + + "cHV0ZS1wbGFuZS1zdGFja2AgYnVuZGxlcy4gU3Vic3RpdHV0ZSB0aG9zZSBidW5kbGUgcm9vdHMg" + + "Zm9yCmBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZGAgYW5kIGBkZXBsb3kvc3RhY2tzL252Y2Yt" + + "Y29tcHV0ZS1wbGFuZWAuCgojIyBIZWxtZmlsZSBWYWx1ZXMgRmxvdwoKQ3JlYXRlIGJvdGggZW52" + + "aXJvbm1lbnQgZmlsZXMgYmVmb3JlIGluc3RhbGxhdGlvbjoKCi0gYGRlcGxveS9zdGFja3Mvc2Vs" + + "Zi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55YW1sYCBmb3IgY29udHJvbC1wbGFuZQogIHJl" + + "Z2lzdHJ5LCBkb21haW4sIEdhdGV3YXksIHJvdXRlcywgYW5kIHNlcnZpY2Ugc2V0dGluZ3MuCi0g" + + "YGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1s" + + "YCBmb3IgY29tcHV0ZS1wbGFuZQogIHJlZ2lzdHJ5LCBwdWxsIHNlY3JldHMsIGFuZCBjb21wdXRl" + + "LXJlYWNoYWJsZSBJQ01TLCBSZVZhbCwgYW5kIE5BVFMgdmFsdWVzLgoKRm9yIEVLUywgdXNlIHRo" + + "ZSBjYW5vbmljYWwKW0NTUCBFbmQtdG8tRW5kIEV4YW1wbGVdKGh0dHBzOi8vZG9jcy5udmlkaWEu" + + "Y29tL252Y2YvdjAuNi4wLXJjL2NzcC1lbmQtdG8tZW5kLWV4YW1wbGUpLgpUaGUgY29udHJvbC1w" + + "bGFuZSBlbnZpcm9ubWVudCBrZWVwcyB0aGUgRW52b3kgR2F0ZXdheSBjb250cm9sbGVyIGluCmBl" + + "bnZveS1nYXRld2F5LXN5c3RlbWAsIGF0dGFjaGVzIHJvdXRlcyB0byBgR2F0ZXdheS9udmNmLWdh" + + "dGV3YXlgIGluCmBlbnZveS1nYXRld2F5YCwgYW5kIGVuYWJsZXMgdGhlIE5BVFMgcm91dGUuIFRo" + + "ZSBjb21wdXRlLXBsYW5lIGVudmlyb25tZW50IHVzZXMKdGhlIGV4dGVybmFsIGFkZHJlc3MgcGx1" + + "cyB0aGUgc2VydmljZSBob3N0IG92ZXJyaWRlcy4gSGVyZSwKYDxnYXRld2F5LWFkZHJlc3M+YCBp" + + "cyB0aGUgTkxCIGFkZHJlc3MgYW5kIGA8Z2F0ZXdheS1kb21haW4+YCBpcyB0aGUgRE5TIGJhc2UK" + + "d2hvc2Ugc2VydmljZSBzdWJkb21haW5zIHJlc29sdmUgdG8gdGhhdCBOTEI6CgpgYGB5YW1sCiMg" + + "ZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwKZ2xvYmFs" + + "OgogIGRvbWFpbjogIjxnYXRld2F5LWRvbWFpbj4iCiAgd29ya2VyRW5kcG9pbnRzOgogICAgbnZj" + + "ZlNlcnZpY2VVUkw6ICJodHRwOi8vYXBpLjxnYXRld2F5LWRvbWFpbj4iCiAgICBudmNmR3JwY1Nl" + + "cnZpY2VVUkw6ICJodHRwOi8vd29ya2VyLWFwaS48Z2F0ZXdheS1kb21haW4+IgogICAgbnZjZk5h" + + "dHNTZXJ2aWNlVVJMOiAibmF0czovLzxnYXRld2F5LWFkZHJlc3M+OjQyMjIiCiAgICBudmN0U2Vy" + + "dmljZVVSTDogImh0dHA6Ly90YXNrcy48Z2F0ZXdheS1kb21haW4+IgogICAgbnZjdEdycGNTZXJ2" + + "aWNlVVJMOiAiaHR0cDovL3dvcmtlci10YXNrcy48Z2F0ZXdheS1kb21haW4+IgogICAgaW52b2Nh" + + "dGlvblNlcnZpY2VVUkw6ICJodHRwOi8vaW52b2NhdGlvbi48Z2F0ZXdheS1kb21haW4+IgoKZ3Jw" + + "Y3Byb3h5OgogIG52Y2ZHcnBjU2VydmljZVVSTDogImh0dHA6Ly9hcGkubnZjZi5zdmMuY2x1c3Rl" + + "ci5sb2NhbDo5MDkwIgoKaW5ncmVzczoKICBnYXRld2F5QXBpOgogICAgY29udHJvbGxlck5hbWVz" + + "cGFjZTogZW52b3ktZ2F0ZXdheS1zeXN0ZW0KICAgIGdhdGV3YXlzOgogICAgICBzaGFyZWQ6IHtu" + + "YW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheX0KICAgICAgZ3JwYzog" + + "e25hbWU6IG52Y2YtZ2F0ZXdheSwgbmFtZXNwYWNlOiBlbnZveS1nYXRld2F5fQogICAgICBuYXRz" + + "OgogICAgICAgIG5hbWU6IG52Y2YtZ2F0ZXdheQogICAgICAgIG5hbWVzcGFjZTogZW52b3ktZ2F0" + + "ZXdheQogICAgICAgIGxpc3RlbmVyTmFtZTogbmF0cwogICAgcm91dGVzOgogICAgICBudmNmQXBp" + + "OgogICAgICAgIGdycGM6CiAgICAgICAgICBlbmFibGVkOiB0cnVlCiAgICAgICAgICBob3N0bmFt" + + "ZXM6IFsid29ya2VyLWFwaS48Z2F0ZXdheS1kb21haW4+Il0KICAgICAgbnZjdEFwaToKICAgICAg" + + "ICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAgICAgaG9zdG5hbWVzOiBbIndv" + + "cmtlci10YXNrcy48Z2F0ZXdheS1kb21haW4+Il0KICAgICAgbmF0czoKICAgICAgICBlbmFibGVk" + + "OiB0cnVlCgpvcGVuYmFvOgogIG1pZ3JhdGlvbnM6CiAgICBpc3N1ZXJEaXNjb3Zlcnk6CiAgICAg" + + "IGVuYWJsZWQ6IHRydWUKYGBgCgpgYGB5YW1sCiMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUt" + + "cGxhbmUvZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwKZ2xvYmFsOgogIG52Y2FPcGVyYXRvcjoKICAg" + + "IHNlbGZNYW5hZ2VkOgogICAgICBpY21zU2VydmljZVVSTDogImh0dHA6Ly88Z2F0ZXdheS1hZGRy" + + "ZXNzPiIKICAgICAgaWNtc1NlcnZpY2VIb3N0SGVhZGVyT3ZlcnJpZGU6ICJzaXMuPGdhdGV3YXkt" + + "ZG9tYWluPiIKICAgICAgcmV2YWxTZXJ2aWNlVVJMOiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+" + + "IgogICAgICByZXZhbFNlcnZpY2VIb3N0SGVhZGVyT3ZlcnJpZGU6ICJyZXZhbC48Z2F0ZXdheS1k" + + "b21haW4+IgogICAgICBuYXRzVVJMOiAibmF0czovLzxnYXRld2F5LWFkZHJlc3M+OjQyMjIiCiAg" + + "ICAgIG5hdHNIb3N0T3ZlcnJpZGU6ICJuYXRzLjxnYXRld2F5LWRvbWFpbj4iCmBgYAoKUHJldmll" + + "dyBhbmQgaW5zdGFsbCB0aGUgY29udHJvbCBwbGFuZSBhZ2FpbnN0IGl0cyBjb250ZXh0OgoKYGBg" + + "YmFzaAptYWtlIC1DIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIHRlbXBsYXRlIFwKICBIRUxN" + + "RklMRV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklMRT08Y29udHJvbC1wbGFuZS1rdWJlY29u" + + "ZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBpbnN0YWxsIFwKICBIRUxN" + + "RklMRV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklMRT08Y29udHJvbC1wbGFuZS1rdWJlY29u" + + "ZmlnPgpgYGAKCkJlZm9yZSByZWdpc3RlcmluZyB0aHJvdWdoIGEgYmFyZSBHYXRld2F5IGFkZHJl" + + "c3MsIGNyZWF0ZSBvciB1cGRhdGUgdGhlIENMSQpjb25maWcgcGFzc2VkIGFzIGBOVkNGX0NMSV9D" + + "T05GSUdgOgoKYGBgeWFtbApiYXNlX2h0dHBfdXJsOiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+" + + "IgppbnZva2VfdXJsOiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+IgpiYXNlX2dycGNfdXJsOiAi" + + "PGdhdGV3YXktYWRkcmVzcz46MTAwODEiCmFwaV9rZXlzX3NlcnZpY2VfdXJsOiAiaHR0cDovLzxn" + + "YXRld2F5LWFkZHJlc3M+IgppY21zX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKYXBp" + + "X2hvc3Q6ICJhcGkuPGdhdGV3YXktZG9tYWluPiIKYXBpX2tleXNfaG9zdDogImFwaS1rZXlzLjxn" + + "YXRld2F5LWRvbWFpbj4iCmludm9rZV9ob3N0OiAiaW52b2NhdGlvbi48Z2F0ZXdheS1kb21haW4+" + + "IgppY21zX2hvc3Q6ICJzaXMuPGdhdGV3YXktZG9tYWluPiIKYGBgCgpIb3N0IGZpZWxkcyBjb250" + + "YWluIGhvc3RuYW1lcyBvbmx5LCB3aXRob3V0IGEgVVJMIHNjaGVtZS4gYElDTVNfVVJMYCBtYXBz" + + "IG9ubHkKdG8gdGhlIHJlZ2lzdHJhdGlvbiBjb21tYW5kJ3MgYC0taWNtcy11cmxgOyBgaWNtc19o" + + "b3N0YCBpbiB0aGUgY29uZmlnIHN1cHBsaWVzCnRoZSBHYXRld2F5IEhvc3QgaGVhZGVyLiBUaGVy" + + "ZSBpcyBubyBgLS1pY21zLWhvc3RgIE1ha2Ugb3IgQ0xJIGZsYWcuCgpSZWdpc3RlciBmcm9tIHRo" + + "ZSBjb21wdXRlIGNvbnRleHQsIHRoZW4gaW5zdGFsbCB0aGUgY29tcHV0ZSBwbGFuZToKCmBgYGJh" + + "c2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSByZWdpc3Rlci1jbHVz" + + "dGVyIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIE5DQV9JRD08bmNhLWlkPiBc" + + "CiAgQ0xVU1RFUl9SRUdJT049PHJlZ2lvbj4gXAogIElDTVNfVVJMPWh0dHA6Ly88Z2F0ZXdheS1h" + + "ZGRyZXNzPiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+IFwK" + + "ICBOVkNGX0NMST08cGF0aC10by1udmNmLWNsaT4gXAogIE5WQ0ZfQ0xJX0NPTkZJRz08cGF0aC10" + + "by1udmNmLWNsaS1jb25maWc+CgptYWtlIC1DIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBs" + + "YW5lIGluc3RhbGwgXAogIENMVVNURVJfTkFNRT08Y2x1c3Rlci1uYW1lPiBcCiAgSEVMTUZJTEVf" + + "RU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbXB1dGUtcGxhbmUta3ViZWNvbmZpZz4K" + + "YGBgCgpSZWdpc3RyYXRpb24gZGlzY292ZXJzIHRoZSBPSURDIGlzc3VlciBhbmQgSldLUyBmcm9t" + + "IHRoZSBjb21wdXRlIGt1YmUgY29udGV4dC4KSW4gYSBtdWx0aS1jbHVzdGVyIGRlcGxveW1lbnQs" + + "IGBLVUJFQ09ORklHX0ZJTEVgIGlzIHJlcXVpcmVkIG9uIGJvdGgKY29tcHV0ZS1wbGFuZSBjb21t" + + "YW5kcy4gSW4gYSBzYW1lLWNsdXN0ZXIgZGVwbG95bWVudCBpdCBtYXkgYmUgb21pdHRlZCBvbmx5" + + "CndoZW4gdGhlIGFtYmllbnQgY29udGV4dCBpcyBhbHJlYWR5IHRoZSB0YXJnZXQgY2x1c3Rlci4K" + + "CiMjIENMSSBQcm9maWxlIEZsb3cKClJ1biB0aGUgQ0xJIGNvbnRyb2wtcGxhbmUgaW5zdGFsbCBm" + + "aXJzdC4gSXQgY3JlYXRlcyB0aGUgcHJvZmlsZSBjb25zdW1lZCBieQpjb21wdXRlLXBsYW5lIHJl" + + "Z2lzdHJhdGlvbjoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0" + + "ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBc" + + "CiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5l" + + "IFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQg" + + "PGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21w" + + "dXRlLXBsYW5lLWNvbnRleHQ+IFwKICBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSBcCiAgLS1jbHVz" + + "dGVyLW5hbWUgPGNvbnRyb2wtcGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1yZWdpb24gPHJlZ2lv" + + "bj4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+Cgp0ZXN0IC1zIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5h" + + "Z2VkL291dC9jb250cm9sLXBsYW5lLXByb2ZpbGUueWFtbApgYGAKClVzZSB0aGUgZnVsbCBwZXJz" + + "aXN0ZW50IHByZWZpeCBmb3IgYm90aCBjb21wdXRlLXBsYW5lIGNvbW1hbmRzOgoKYGBgYmFzaApu" + + "dmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBsYW5l" + + "LXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUtc3Rh" + + "Y2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwKICAt" + + "LXBsYWluIFwKICBjb21wdXRlLXBsYW5lIHJlZ2lzdGVyIFwKICAtLWNvbnRyb2wtcGxhbmUtcHJv" + + "ZmlsZSBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1wbGFuZS1wcm9maWxl" + + "LnlhbWwgXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAog" + + "IC0ta3ViZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLXJlZ2lvbiA8cmVn" + + "aW9uPiBcCiAgLS1vdXRwdXQgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvb3V0Lzxj" + + "b21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWwKCm52Y2YtY2xp" + + "IC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sg" + + "ZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBs" + + "b3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4g" + + "XAogIGNvbXB1dGUtcGxhbmUgaW5zdGFsbCBcCiAgLS12YWx1ZXMgZGVwbG95L3N0YWNrcy9udmNm" + + "LWNvbXB1dGUtcGxhbmUvb3V0Lzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4tcmVnaXN0ZXIt" + + "dmFsdWVzLnlhbWwgXAogIC0ta3ViZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwK" + + "ICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+CmBgYAoKUmVnaXN0" + + "cmF0aW9uIHNlbGVjdHMgdGhlIHByb2ZpbGUncyBpbi1jbHVzdGVyIG9yIGNvbXB1dGUtcmVhY2hh" + + "YmxlIGVuZHBvaW50cwpmcm9tIHRoZSBjb21wdXRlIGNvbnRleHQgYW5kIHByb2JlcyBpdHMgSldL" + + "Uy4gRG8gbm90IHJlcGxhY2UgcHJvZmlsZSBlbmRwb2ludHMKd2l0aCBoYW5kLWF1dGhvcmVkIEhl" + + "bG1maWxlIGVuZHBvaW50IHZhbHVlcy4KCiMjIFB1bGwgU2VjcmV0cwoKQ3JlYXRlIHRoZSBjb250" + + "cm9sLXBsYW5lIHNlY3JldCBpbiB0aGVzZSBuYW1lc3BhY2VzIG9uIHRoZSBjb250cm9sLXBsYW5l" + + "CmNvbnRleHQ6CgpgYGB0ZXh0CmNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkt" + + "a2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXIKYGBgCgpPbiB0aGUgY29tcHV0" + + "ZSBjb250ZXh0LCBjcmVhdGUgdGhlIHNlY3JldCBvbmx5IGluIGBudmNhLW9wZXJhdG9yYCBhbmQg" + + "cmVmZXJlbmNlCml0IHRocm91Z2ggYGdsb2JhbC5pbWFnZVB1bGxTZWNyZXRzYCBpbiB0aGUgY29t" + + "cHV0ZS1wbGFuZSBlbnZpcm9ubWVudC4gVGhlIGNoYXJ0CmFuZCBvcGVyYXRvciB1c2UgaXQgaW4g" + + "YG52Y2Etb3BlcmF0b3JgIGFuZCBtaXJyb3IgaXQgdG8gYG52Y2Etc3lzdGVtYC4gRG8gbm90IGFk" + + "ZAplaXRoZXIgbmFtZXNwYWNlIHRvIHRoZSBjb250cm9sLXBsYW5lIGxpc3QuIEZvciBjb21tYW5k" + + "cyBhbmQgcG9saWN5IGV4YW1wbGVzLApzZWUgW3B1bGwtc2VjcmV0cy5tZF0ocHVsbC1zZWNyZXRz" + + "Lm1kKS4KCiMjIFZlcmlmaWNhdGlvbgoKVXNlIHRoZSBleHBsaWNpdCBHYXRld2F5IG5hbWUgYW5k" + + "IG5hbWVzcGFjZToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + + "dGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAtbiBlbnZveS1nYXRld2F5IC1vIHdp" + + "ZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHRjcHJvdXRl" + + "IC1uIGVudm95LWdhdGV3YXkKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4" + + "dD4gcm9sbG91dCBzdGF0dXMgXAogIGRlcGxveW1lbnQvbnZjYS1vcGVyYXRvciAtbiBudmNhLW9w" + + "ZXJhdG9yIC0tdGltZW91dD0xMG0Ka3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29u" + + "dGV4dD4gd2FpdCBcCiAgbnZjZmJhY2tlbmQvPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPiAt" + + "biBudmNhLW9wZXJhdG9yIFwKICAtLWZvcj1qc29ucGF0aD0ney5zdGF0dXMuYWdlbnRTdGF0dXN9" + + "Jz1oZWFsdGh5IC0tdGltZW91dD0xMG0Ka3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUt" + + "Y29udGV4dD4gZ2V0IHNlY3JldCA8cHVsbC1zZWNyZXQ+IC1uIG52Y2Etc3lzdGVtCmBgYAoKIyMg" + + "VGVhcmRvd24KCkRlc3Ryb3kgYW5kIGRlcmVnaXN0ZXIgZXZlcnkgY29tcHV0ZSBwbGFuZSBiZWZv" + + "cmUgdGhlIGNvbnRyb2wgcGxhbmUuIEJvdGgKaGFuZG9mZnMgY2FuIGRlc3Ryb3kgdGhlIGNvbnRy" + + "b2wgcGxhbmUsIHNvIGFwcGx5IHRoaXMgcHJlZmxpZ2h0IGJlZm9yZSBlaXRoZXIKb25lLiBQcmVz" + + "ZXJ2ZSB0aGUgYGNlcnQtbWFuYWdlcmAgbmFtZXNwYWNlIGJ5IGRlZmF1bHQuIE5hbWVzcGFjZSBw" + + "cmVzZXJ2YXRpb24KZG9lcyBub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZS4gSWRlbnRpZnkg" + + "d2hldGhlciBjZXJ0LW1hbmFnZXIgaXMgZXh0ZXJuYWwuCkZvciBhbiBleHRlcm5hbCBpbnN0YWxs" + + "YXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVkOiBmYWxzZWAKYW5k" + + "IGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBhbiBpbnRlbmRlZCBzdGFjay1tYW5hZ2VkIHJlbGVh" + + "c2Ugd2l0aCBlZmZlY3RpdmUKYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IHRydWVgLCB2ZXJpZnkgbWF0" + + "Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1ldGFkYXRhIGFuZAphYm9ydCBvbiBtaXNzaW5nIG9y" + + "IG1pc21hdGNoZWQgZXZpZGVuY2UuIE9ubHkgcGxhbiBuYW1lc3BhY2UgcmVtb3ZhbCBhZnRlcgp2" + + "ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGdldHRpbmcgZXhwbGljaXQgY29uZmly" + + "bWF0aW9uOyBvdGhlcndpc2UKZG8gbm90IGRlbGV0ZSBpdC4KCkZvciB0aGUgSGVsbWZpbGUgdmFs" + + "dWVzIGZsb3csIHJldGFpbiBlYWNoIHJlZ2lzdHJhdGlvbiB2YWx1ZXMgZmlsZSB1bnRpbApjbGVh" + + "bnVwIGlzIHZlcmlmaWVkOgoKYGBgYmFzaAptYWtlIC1DIGRlcGxveS9zdGFja3MvbnZjZi1jb21w" + + "dXRlLXBsYW5lIGRlc3Ryb3kgXAogIENMVVNURVJfTkFNRT08Y2x1c3Rlci1uYW1lPiBcCiAgSEVM" + + "TUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbXB1dGUtcGxhbmUta3ViZWNv" + + "bmZpZz4KCjxudmNmLWNsaT4gLS1jb25maWcgPGNvbmZpZz4gY2x1c3RlciBkZWxldGUgXAogIC0t" + + "Y2x1c3Rlci1pZCA8Y2x1c3Rlci1pZC1mcm9tLXJlZ2lzdHJhdGlvbi12YWx1ZXM+IFwKICAtLW5j" + + "YS1pZCA8bmNhLWlkPiBcCiAgLS1pZ25vcmUtbWlzc2luZwpgYGAKClJlYWQgYGNsdXN0ZXJJRGAg" + + "YW5kIGBuY2FJRGAgZnJvbQpgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvcmVnaXN0" + + "cmF0aW9uLzxjbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYC4KU2hvdyB0aGUgZXhh" + + "Y3QgY2x1c3RlciBJRCBhbmQgZ2V0IGNvbmZpcm1hdGlvbiBiZWZvcmUgYGNsdXN0ZXIgZGVsZXRl" + + "YC4gUmVwZWF0CmNvbXB1dGUgZGVzdHJveSBhbmQgZGVyZWdpc3RyYXRpb24gZm9yIGV2ZXJ5IGNv" + + "bXB1dGUgY2x1c3RlciwgdGhlbiBkZXN0cm95IHRoZQpjb250cm9sIHBsYW5lLgoKYGBgYmFzaApL" + + "VUJFQ09ORklHPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+IFwKbWFrZSAtQyBkZXBsb3kvc3Rh" + + "Y2tzL3NlbGYtbWFuYWdlZCBkZXN0cm95IFwKICBIRUxNRklMRV9FTlY9PGVudj4gXAogIEtVQkVD" + + "T05GSUdfRklMRT08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPgpgYGAKCkJvdGggYEtVQkVDT05G" + + "SUdgIGFuZCBgS1VCRUNPTkZJR19GSUxFYCBhcmUgcmVxdWlyZWQgb24gdGhlIGNvbnRyb2wtcGxh" + + "bmUKZGVzdHJveSBiZWNhdXNlIGl0cyBuYW1lc3BhY2UgY2xlYW51cCB1c2VzIGFtYmllbnQgYGt1" + + "YmVjdGxgLgoKRm9yIHRoZSBDTEkgcHJvZmlsZSBmbG93LCBrZWVwCmBkZXBsb3kvc3RhY2tzL252" + + "Y2YtY29tcHV0ZS1wbGFuZS9vdXQvPGNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWxg" + + "CnVudGlsIHRlYXJkb3duIGNvbXBsZXRlcyBiZWNhdXNlIGBkb3duYCByZWFkcyBpdHMgY2x1c3Rl" + + "ciBJRC4gRmlyc3QgcXVlcnkgdGhlCmxpdmUgcmVnaXN0cmF0aW9uIHNldCB3aXRoIHRoZSBzYW1l" + + "IGNvbXBsZXRlIHBlcnNpc3RlbnQgcHJlZml4OgoKYGBgYmFzaApudmNmLWNsaSAtLWNvbmZpZyA8" + + "Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFj" + + "a3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9u" + + "dmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWluIFwKICAtLWNvbnRy" + + "b2wtcGxhbmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBcCiAgLS1jb21wdXRlLXBs" + + "YW5lLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gXAogIC0taWNtcy11cmwgPGNvbXB1" + + "dGUtcmVhY2hhYmxlLWljbXMtdXJsPiBcCiAgc3RhdHVzIFwKICAtLWNsdXN0ZXItbmFtZSA8Y29t" + + "cHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgpgYGAKClNob3cg" + + "dGhlIHJlZ2lzdGVyZWQgY29tcHV0ZS1wbGFuZSBsaXN0LiBOYW1lZC1jbHVzdGVyIGBkb3duIC0t" + + "cGxhbi1vbmx5YCBkb2VzCm5vdCBxdWVyeSBJQ01TLCBzbyBpdCBwcmV2aWV3cyBvbmx5IHRoYXQg" + + "Y29tcHV0ZSBwbGFuZSBhbmQgY2Fubm90IHNob3cgdGhlCmNvbmRpdGlvbmFsIGNvbnRyb2wtcGxh" + + "bmUgcmVtb3ZhbC4gSWYgdGhlIHRhcmdldCBpcyB0aGUgbGFzdCByZWdpc3RlcmVkCmNsdXN0ZXIs" + + "IHJlYWwgYGRvd25gIGFsc28gZGVzdHJveXMgdGhlIGNvbnRyb2wgcGxhbmUuIEdldCBleHBsaWNp" + + "dCBjb25maXJtYXRpb24KZm9yIGJvdGggcmVtb3ZhbHMgYmVmb3JlIGNvbnRpbnVpbmcuIFRoZW4g" + + "cHJldmlldyBhbmQgZXhlY3V0ZSB3aXRoIHRoZSBzYW1lCnByZWZpeDoKCmBgYGJhc2gKbnZjZi1j" + + "bGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFj" + + "ayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRl" + + "cGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFp" + + "biBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAog" + + "IC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWlj" + + "bXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAogIGRvd24gLS1wbGFuLW9ubHkg" + + "XAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tbmNh" + + "LWlkIDxuY2EtaWQ+CgpudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAg" + + "LS1jb250cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNv" + + "bXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0t" + + "ZW52IDxlbnY+IFwKICAtLXBsYWluIFwKICAtLWNvbnRyb2wtcGxhbmUtY29udGV4dCA8Y29udHJv" + + "bC1wbGFuZS1jb250ZXh0PiBcCiAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQgPGNvbXB1dGUtcGxh" + + "bmUtY29udGV4dD4gXAogIC0taWNtcy11cmwgPGNvbXB1dGUtcmVhY2hhYmxlLWljbXMtdXJsPiBc" + + "CiAgZG93biBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPiBc" + + "CiAgLS1uY2EtaWQgPG5jYS1pZD4KYGBgCgpSZXBlYXQgYGRvd25gIGZvciBlYWNoIGNvbXB1dGUg" + + "Y2x1c3Rlci4gRWFjaCBydW4gZGVzdHJveXMgdGhhdCBjb21wdXRlIHBsYW5lIGFuZAp1bnJlZ2lz" + + "dGVycyBpdHMgSUNNUyByb3cuIEl0IHJlbW92ZXMgdGhlIGNvbnRyb2wgcGxhbmUgb25seSBhZnRl" + + "ciBubyBjbHVzdGVyCnJlZ2lzdHJhdGlvbnMgcmVtYWluLgpQSwcIlmO8WRIwAAASMAAAUEsDBBQA" + + "CAAAAAAAIQAAAAAAAAAAAAAAAAA7AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRp" + + "b24vcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhIjIERlYnVnZ2luZyBSZWZlcmVuY2UK" + + "ClJlY2lwZXMgZm9yIGRpYWdub3NpbmcgYW5kIGZpeGluZyBjb21tb24gTlZDRiBzZWxmLW1hbmFn" + + "ZWQgc3RhY2sgZmFpbHVyZXMuCgojIyBRdWljayBTdGF0dXMgQ29tbWFuZHMKCmBgYGJhc2gKIyBB" + + "bGwgcG9kcyBhY3Jvc3MgYWxsIG5hbWVzcGFjZXMKa3ViZWN0bCBnZXQgcG9kcyAtQSAtbyB3aWRl" + + "CgojIFBvZHMgaW4gYSBzcGVjaWZpYyBuYW1lc3BhY2UKa3ViZWN0bCBnZXQgcG9kcyAtbiA8bmFt" + + "ZXNwYWNlPgoKIyBBbGwgaGVsbSByZWxlYXNlcwpoZWxtIGxpc3QgLUEKCiMgUmVjZW50IGV2ZW50" + + "cyAobW9zdCB1c2VmdWwgZm9yIGRpYWdub3NpbmcgZmFpbHVyZXMpCmt1YmVjdGwgZ2V0IGV2ZW50" + + "cyAtbiA8bmFtZXNwYWNlPiAtLXNvcnQtYnk9Jy5sYXN0VGltZXN0YW1wJwoKIyBEZXNjcmliZSBh" + + "IHNwZWNpZmljIHBvZCAoc2hvd3MgZXZlbnRzLCBjb25kaXRpb25zLCB2b2x1bWVzKQprdWJlY3Rs" + + "IGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+CmBgYAoKIyMgRmFpbHVyZTog" + + "SW1hZ2VQdWxsQmFja09mZgoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgIFJF" + + "QURZICAgU1RBVFVTICAgICAgICAgICAgIFJFU1RBUlRTICAgQUdFCmNhc3NhbmRyYS0wICAgIDAv" + + "MSAgICAgSW1hZ2VQdWxsQmFja09mZiAgIDAgICAgICAgICAgNW0KYGBgCgpFdmVudHMgc2hvdzoK" + + "CmBgYHRleHQKRmFpbGVkIHRvIHB1bGwgaW1hZ2UgIm52Y3IuaW8vLi4uL2ltYWdlOnRhZyI6IDQw" + + "MSBVbmF1dGhvcml6ZWQKYGBgCgojIyMgRGlhZ25vc2lzCgpgYGBiYXNoCiMgQ2hlY2sgd2hhdCBp" + + "bWFnZSBpcyBmYWlsaW5nCmt1YmVjdGwgZGVzY3JpYmUgcG9kIC1uIDxuYW1lc3BhY2U+IDxwb2Qt" + + "bmFtZT4gfCBncmVwIC1BNSAiRXZlbnRzOiIKCiMgQ2hlY2sgaWYgcHVsbCBzZWNyZXQgZXhpc3Rz" + + "IGluIHRoZSBuYW1lc3BhY2UKa3ViZWN0bCBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgLW4gPG5hbWVz" + + "cGFjZT4KCiMgQ2hlY2sgaWYgdGhlIHBvZCBzcGVjIGhhcyBpbWFnZVB1bGxTZWNyZXRzCmt1YmVj" + + "dGwgZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IC1vIGpzb25wYXRoPSd7LnNwZWMu" + + "aW1hZ2VQdWxsU2VjcmV0c30nCgojIENoZWNrIGlmIHRoZSBTZXJ2aWNlQWNjb3VudCBoYXMgaW1h" + + "Z2VQdWxsU2VjcmV0cwprdWJlY3RsIGdldCBzYSA8c2EtbmFtZT4gLW4gPG5hbWVzcGFjZT4gLW8g" + + "anNvbnBhdGg9J3suaW1hZ2VQdWxsU2VjcmV0c30nCmBgYAoKIyMjIEZpeGVzCgoxLiAqKlNlY3Jl" + + "dCBtaXNzaW5nIGluIG5hbWVzcGFjZSoqOiBDcmVhdGUgaXQKCiAgIGBgYGJhc2gKICAga3ViZWN0" + + "bCBjcmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgICAtLWRvY2tl" + + "ci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBc" + + "CiAgICAgLS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgIC0tbmFtZXNwYWNl" + + "PTxuYW1lc3BhY2U+IFwKICAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFw" + + "cGx5IC1mIC0KICAgYGBgCgoyLiAqKlNlY3JldCBleGlzdHMgYnV0IHBvZCBkb2Vzbid0IHJlZmVy" + + "ZW5jZSBpdCoqOiBUaGUgY2hhcnQgbmVlZHMgYGltYWdlUHVsbFNlY3JldHNgIGNvbmZpZ3VyZWQg" + + "dmlhIGhlbG1maWxlIHZhbHVlcy4gU2VlIFtwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0cy5t" + + "ZCkuCgozLiAqKkNoYXJ0IGRvZXNuJ3Qgc3VwcG9ydCBpbWFnZVB1bGxTZWNyZXRzKiogKG9wZW5i" + + "YW8sIGludm9jYXRpb24tc2VydmljZSwgZXNzLWFwaSwgbm90YXJ5LXNlcnZpY2UpOiBQYXRjaCBT" + + "ZXJ2aWNlQWNjb3VudHMgYW5kIHJlc3RhcnQgcG9kcy4gU2VlIFtwdWxsLXNlY3JldHMubWRdKHB1" + + "bGwtc2VjcmV0cy5tZCkuCgo0LiAqKldyb25nIGNyZWRlbnRpYWxzIGluIHNlY3JldCoqOiBEZWxl" + + "dGUgYW5kIHJlY3JlYXRlCgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZGVsZXRlIHNlY3JldCBudmNy" + + "LWNyZWRzIC1uIDxuYW1lc3BhY2U+CiAgICMgUmVjcmVhdGUgd2l0aCBjb3JyZWN0IGNyZWRlbnRp" + + "YWxzCiAgIGBgYAoKIyMgRmFpbHVyZTogSW5pdDowLzEgU3R1Y2sgKFZhdWx0IEFnZW50KQoKIyMj" + + "IFN5bXB0b21zCgpTZXJ2aWNlIHBvZHMgc3R1Y2sgaW4gYEluaXQ6MC8xYCBmb3IgbWludXRlczoK" + + "CmBgYGJhc2gKTkFNRSAgICAgICAgICAgICAgICAgICAgICAgIFJFQURZICAgU1RBVFVTICAgICBS" + + "RVNUQVJUUyAgIEFHRQpudmNmLWFwaS03ZjRjNzZmNzg4LTQ0dmx0ICAwLzIgICAgIEluaXQ6MC8x" + + "ICAgMCAgICAgICAgICAxMG0KYGBgCgojIyMgRGlhZ25vc2lzCgpUaGUgaW5pdCBjb250YWluZXIg" + + "aXMgdGhlIHZhdWx0LWFnZW50LWluaXQgaW5qZWN0b3Igd2FpdGluZyBmb3IgT3BlbkJhby4KCmBg" + + "YGJhc2gKIyBDaGVjayBPcGVuQmFvIHBvZHMKa3ViZWN0bCBnZXQgcG9kcyAtbiB2YXVsdC1zeXN0" + + "ZW0KCiMgQ2hlY2sgaWYgT3BlbkJhbyBtaWdyYXRpb24gam9iIHJhbgprdWJlY3RsIGdldCBqb2Jz" + + "IC1uIHZhdWx0LXN5c3RlbQoKIyBDaGVjayBPcGVuQmFvIHBvZCBsb2dzCmt1YmVjdGwgbG9ncyAt" + + "biB2YXVsdC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXItMCAtYyBvcGVuYmFvCgojIENoZWNrIGluaXQg" + + "Y29udGFpbmVyIGxvZ3Mgb24gdGhlIHN0dWNrIHBvZAprdWJlY3RsIGxvZ3MgLW4gPG5hbWVzcGFj" + + "ZT4gPHBvZC1uYW1lPiAtYyB2YXVsdC1hZ2VudC1pbml0CmBgYAoKIyMjIEZpeGVzCgoxLiAqKk9w" + + "ZW5CYW8gcG9kcyBub3QgcnVubmluZyoqOiBDaGVjayB0aGVpciBldmVudHMgZm9yIGltYWdlIHB1" + + "bGwgaXNzdWVzLCByZXNvdXJjZSBpc3N1ZXMsIGV0Yy4KCjIuICoqT3BlbkJhbyBtaWdyYXRpb24g" + + "am9iIGRpZG4ndCBydW4qKjogVGhpcyBoYXBwZW5zIHdoZW4gYGhlbG1maWxlIHN5bmNgIHdhcyBp" + + "bnRlcnJ1cHRlZC4gRGVzdHJveSBhbmQgcmUtc3luYyBvcGVuYmFvOgoKICAgYGBgYmFzaAogICBI" + + "RUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW9wZW5iYW8tc2VydmVy" + + "IGRlc3Ryb3kKICAga3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIHZhdWx0LXN5c3RlbQogICBrdWJl" + + "Y3RsIGNyZWF0ZSBuYW1lc3BhY2UgdmF1bHQtc3lzdGVtCiAgICMgUmUtY3JlYXRlIHB1bGwgc2Vj" + + "cmV0IGlmIG5lZWRlZAogICBIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBu" + + "YW1lPW9wZW5iYW8tc2VydmVyIHN5bmMKICAgYGBgCgozLiAqKk9wZW5CYW8gcG9kcyBydW5uaW5n" + + "IGJ1dCBub3QgaW5pdGlhbGl6ZWQqKjogQ2hlY2sgdW5zZWFsIHN0YXR1czoKCiAgIGBgYGJhc2gK" + + "ICAga3ViZWN0bCBleGVjIC1uIHZhdWx0LXN5c3RlbSBvcGVuYmFvLXNlcnZlci0wIC1jIG9wZW5i" + + "YW8gLS0gYmFvIHN0YXR1cwogICBgYGAKCjQuICoqYHZhdWx0LWFnZW50LWluaXRgIGxvZ3MgYGF1" + + "dGgvand0L2xvZ2luYCAtPiBgNDAwIC4uLiBubyBrbm93biBrZXkgc3VjY2Vzc2Z1bGx5IHZhbGlk" + + "YXRlZCB0aGUgdG9rZW4gc2lnbmF0dXJlYCoqCiAgIChjb21tb24gb24gQUtTLCBhbmQgb24gYW55" + + "IGNsdXN0ZXIgd2hvc2UgT0lEQyBpc3N1ZXIgcHVibGlzaGVzIGEgcm90YXRpbmcgbXVsdGkta2V5" + + "IEpXS1MpOgogICB0aGUgT3BlbkJhbyBgYXV0aC9qd3RgIG1ldGhvZCB3YXMgY29uZmlndXJlZCB3" + + "aXRoIGEgc2luZ2xlIHN0YXRpYyBtb3VudGVkIHB1YmxpYyBrZXkKICAgKGBqd3RfdmFsaWRhdGlv" + + "bl9wdWJrZXlzYCkgaW5zdGVhZCBvZiB0aGUgaXNzdWVyJ3MgbGl2ZSBKV0tTLCBzbyBpdCBjYW5u" + + "b3QgdmFsaWRhdGUgdGhlCiAgIGNsdXN0ZXItc2lnbmVkIFNlcnZpY2VBY2NvdW50IHRva2VucyB0" + + "aGUgdmF1bHQtYWdlbnRzIHByZXNlbnQuIEV2ZXJ5IHNlcnZpY2UncwogICBgdmF1bHQtYWdlbnQt" + + "aW5pdGAgdGhlbiBsb29wcyBvbiB0aGF0IDQwMCBhbmQgdGhlIHBvZCBuZXZlciBsZWF2ZXMgYElu" + + "aXQ6MC8xYC4gVGhpcyBpcyB0aGUKICAgYmVoYXZpb3Igb2YgdGhlIGJhc2UgZGVmYXVsdCBgb3Bl" + + "bmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkOiBmYWxzZWA7IHRoZQogICBt" + + "aWdyYXRpb24gbG9nIHNob3dzIGBPSURDIGlzc3VlciBkaXNjb3ZlcnkgaXMgZGlzYWJsZWQuIFVz" + + "aW5nIFNlcnZpY2VBY2NvdW50IGlzc3VlciBhbmQKICAgbW91bnRlZCBwdWJsaWMga2V5IGZhbGxi" + + "YWNrYC4gRW5hYmxlIGlzc3VlciBkaXNjb3Zlcnkgc28gdGhlIG1pZ3JhdGlvbiB1c2VzIHRoZSBs" + + "aXZlIEpXS1MsCiAgIHRoZW4gcmUtcnVuIGl0OgoKICAgYGBgYmFzaAogICAjIEluIHlvdXIgZW52" + + "IHZhbHVlcyAoZS5nLiBlbnZpcm9ubWVudHMvPGVudj4ueWFtbCksIHNldDoKICAgIyAgIG9wZW5i" + + "YW86CiAgICMgICAgIG1pZ3JhdGlvbnM6CiAgICMgICAgICAgaXNzdWVyRGlzY292ZXJ5OgogICAj" + + "ICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICBrdWJlY3RsIGRlbGV0ZSBqb2IgLW4gdmF1bHQtc3lz" + + "dGVtIG9wZW5iYW8tc2VydmVyLW1pZ3JhdGlvbnMKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1m" + + "aWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBzeW5jCiAgIGBgYAoKICAgVGhlIG1p" + + "Z3JhdGlvbiBsb2cgc2hvdWxkIHRoZW4gc2hvdyBgUmVjZWl2ZWQgZGlzY292ZXJ5IGRvY3VtZW50" + + "IGZyb20KICAgLi4uLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uYCBhbmQgYEZpbmFs" + + "IE9wZW5CYW8gSldUIEpXS1MgVVJMIHNldCB0bzoKICAgLi4uL29wZW5pZC92MS9qd2tzYCwgYW5k" + + "IHRoZSBzZXJ2aWNlIHBvZHMgYXV0aGVudGljYXRlIGFuZCByZWFjaCBSZWFkeSB3aXRoaW4gfjEg" + + "bWluLgogICBBS1MgY2x1c3RlcnMgd2l0aCB0aGUgY2x1c3RlciBPSURDIGlzc3VlciBlbmFibGVk" + + "ICh0aGUgYGFrcy1jbHVzdGVyYCBkZWZhdWx0KSBhbHdheXMgbmVlZAogICB0aGlzIGJlY2F1c2Ug" + + "dGhlIHN0YXRpYy1wdWJrZXkgZmFsbGJhY2sgY2Fubm90IG1hdGNoIHRoZSBpc3N1ZXIncyByb3Rh" + + "dGluZyBzaWduaW5nIGtleXMuCgojIyBGYWlsdXJlOiBPT01LaWxsZWQgb24gQ2Fzc2FuZHJhCgoj" + + "IyMgU3ltcHRvbXMKCmBgYHRleHQKTkFNRSAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICBSRVNU" + + "QVJUUyAgIEFHRQpjYXNzYW5kcmEtMCAgIDAvMSAgICAgT09NS2lsbGVkICAzICAgICAgICAgMTBt" + + "CmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiBjYXNz" + + "YW5kcmEtc3lzdGVtIGNhc3NhbmRyYS0wIHwgZ3JlcCAtQTMgIkxhc3QgU3RhdGUiCmBgYAoKIyMj" + + "IEZpeAoKT3ZlcnJpZGUgQ2Fzc2FuZHJhIHJlc291cmNlcyB2aWEgaGVsbWZpbGUgdmFsdWVzLiBT" + + "ZWUgRXhhbXBsZSAxIGluCltleGFtcGxlcy5tZF0oLi4vZXhhbXBsZXMubWQpLgoKYGBgeWFtbAot" + + "IGNhc3NhbmRyYToKICAgIHJlc291cmNlczoKICAgICAgbGltaXRzOgogICAgICAgIGNwdTogIjgi" + + "CiAgICAgICAgbWVtb3J5OiA4MTkyTWkKICAgICAgcmVxdWVzdHM6CiAgICAgICAgY3B1OiAiMiIK" + + "ICAgICAgICBtZW1vcnk6IDQwOTZNaQpgYGAKCk5vdGU6IGByZXNvdXJjZVByZXNldGAgaXMgbm90" + + "IGF2YWlsYWJsZSBpbiB0aGUgTlZDRiBjYXNzYW5kcmEgd3JhcHBlciBjaGFydC4gVXNlIGV4cGxp" + + "Y2l0IGByZXNvdXJjZXNgLgoKIyMgRmFpbHVyZTogUG9kcyBTdHVjayBpbiBQZW5kaW5nCgojIyMg" + + "U3ltcHRvbXMKCmBgYHRleHQKTkFNRSAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICBSRVNUQVJU" + + "UyAgIEFHRQpjYXNzYW5kcmEtMCAgIDAvMSAgICAgUGVuZGluZyAgIDAgICAgICAgICAgMTBtCmBg" + + "YAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIGV2ZW50cyBmb3Igc2NoZWR1bGluZyBm" + + "YWlsdXJlcwprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+Cgoj" + + "IENvbW1vbiBjYXVzZXM6CiMgLSAiMC8xMiBub2RlcyBhcmUgYXZhaWxhYmxlOiAxMiBub2RlKHMp" + + "IGRpZG4ndCBtYXRjaCBQb2QncyBub2RlIGFmZmluaXR5IgojIC0gIjAvMTIgbm9kZXMgYXJlIGF2" + + "YWlsYWJsZTogMTIgSW5zdWZmaWNpZW50IG1lbW9yeSIKIyAtICJwZXJzaXN0ZW50dm9sdW1lY2xh" + + "aW0gbm90IGZvdW5kIgpgYGAKCiMjIyBGaXhlcwoKMS4gKipOb2RlIHNlbGVjdG9yIG1pc21hdGNo" + + "Kio6IENoZWNrIGBub2RlU2VsZWN0b3JzYCBpbiBlbnZpcm9ubWVudCBmaWxlCgogICBgYGBiYXNo" + + "CiAgIGt1YmVjdGwgZ2V0IG5vZGVzIC0tc2hvdy1sYWJlbHMgfCBncmVwIG52Y2YKICAgYGBgCgoy" + + "LiAqKlN0b3JhZ2UgY2xhc3Mgbm90IGZvdW5kKio6IENoZWNrIHN0b3JhZ2UgY2xhc3MgZXhpc3Rz" + + "CgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZ2V0IHN0b3JhZ2VjbGFzcwogICBgYGAKCjMuICoqSW5z" + + "dWZmaWNpZW50IHJlc291cmNlcyoqOiBDaGVjayBub2RlIGNhcGFjaXR5CgogICBgYGBiYXNoCiAg" + + "IGt1YmVjdGwgZGVzY3JpYmUgbm9kZSA8bm9kZS1uYW1lPiB8IGdyZXAgLUE1ICJBbGxvY2F0ZWQg" + + "cmVzb3VyY2VzIgogICBgYGAKCiMjIEZhaWx1cmU6IEhlbG0gUmVsZWFzZSBpbiBGYWlsZWQgU3Rh" + + "dGUKCiMjIyBTeW1wdG9tcwoKYGBgYmFzaApoZWxtIGxpc3QgLUEKIyBTaG93cyByZWxlYXNlIHdp" + + "dGggU1RBVFVTOiBmYWlsZWQKYGBgCgpSZS1ydW5uaW5nIGBoZWxtZmlsZSBzeW5jYCBhcHBlYXJz" + + "IHRvIHN1Y2NlZWQgYnV0IHNlcnZpY2VzIGRvbid0IHdvcmsgKG1pZ3JhdGlvbnMgc2tpcHBlZCku" + + "CgojIyMgRGlhZ25vc2lzCgpgYGBiYXNoCmhlbG0gaGlzdG9yeSA8cmVsZWFzZS1uYW1lPiAtbiA8" + + "bmFtZXNwYWNlPgpgYGAKCiMjIyBGaXgKCk11c3QgZGVzdHJveSB0aGUgZmFpbGVkIHJlbGVhc2Ug" + + "YW5kIHJlLXN5bmMgKG5vdCBqdXN0IGFwcGx5KToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+" + + "IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT08cmVsZWFzZT4gZGVzdHJveQojIElmIG5hbWVzcGFj" + + "ZSBuZWVkcyBjbGVhbnVwOgprdWJlY3RsIGRlbGV0ZSBuYW1lc3BhY2UgPG5hbWVzcGFjZT4Ka3Vi" + + "ZWN0bCBjcmVhdGUgbmFtZXNwYWNlIDxuYW1lc3BhY2U+CiMgUmUtY3JlYXRlIHB1bGwgc2VjcmV0" + + "IGlmIG5lZWRlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPTxy" + + "ZWxlYXNlPiBzeW5jCmBgYAoKIyMgRmFpbHVyZTogQWNjb3VudCBCb290c3RyYXAgSm9iIEZhaWxl" + + "ZAoKIyMjIFN5bXB0b21zCgpTZXJ2aWNlcyBkZXBsb3kgYnV0IGZ1bmN0aW9ucyBjYW4ndCBiZSBj" + + "cmVhdGVkLiBFdmVudHMgc2hvdyBib290c3RyYXAgam9iIGZhaWx1cmUuCgojIyMgRGlhZ25vc2lz" + + "CgpgYGBiYXNoCiMgQ2hlY2sgYm9vdHN0cmFwIGpvYiBzdGF0dXMKa3ViZWN0bCBnZXQgam9icyAt" + + "biBudmNmCgojIEdldCBsb2dzIChqb2IgYXV0by1kZWxldGVzIGFmdGVyIH41IG1pbnV0ZXMpCmt1" + + "YmVjdGwgbG9ncyBqb2IvbnZjZi1hcGktYWNjb3VudC1ib290c3RyYXAgLW4gbnZjZgoKIyBDaGVj" + + "ayBBUEkgbG9ncwprdWJlY3RsIGxvZ3MgLW4gbnZjZiAtbCBhcHAua3ViZXJuZXRlcy5pby9uYW1l" + + "PW52Y2YtYXBpIC0tdGFpbD0xMDAKYGBgCgojIyMgQ29tbW9uIENhdXNlcwoKMS4gKipXcm9uZyBi" + + "YXNlNjQgY3JlZGVudGlhbHMqKjogQ3JlZGVudGlhbHMgaW4gYHNlY3JldHMvPGVudj4tc2VjcmV0" + + "cy55YW1sYCBtdXN0IGJlIGAkb2F1dGh0b2tlbjpBUElfS0VZYCBiYXNlNjQtZW5jb2RlZCwgbm90" + + "IGp1c3QgdGhlIEFQSSBrZXkKCiAgIGBgYGJhc2gKICAgIyBWZXJpZnkgeW91ciBlbmNvZGVkIGNy" + + "ZWRlbnRpYWwKICAgZWNobyAnWU9VUl9CQVNFNjRfU1RSSU5HJyB8IGJhc2U2NCAtZAogICAjIFNo" + + "b3VsZCBvdXRwdXQ6ICRvYXV0aHRva2VuOm52YXBpLXh4eHh4CiAgIGBgYAoKMi4gKipSZWdpc3Ry" + + "eSB1bnJlYWNoYWJsZSoqOiBBUEkgY2FuJ3QgcmVhY2ggdGhlIHJlZ2lzdHJ5IHNwZWNpZmllZCBp" + + "biBgYWNjb3VudEJvb3RzdHJhcC5yZWdpc3RyeUNyZWRlbnRpYWxzYAoKIyMjIEZpeAoKRml4IGNy" + + "ZWRlbnRpYWxzIGluIHNlY3JldHMgZmlsZSwgdGhlbiByZWNvdmVyIHNlcnZpY2VzIHdpdGhvdXQg" + + "ZGVzdHJveWluZyBkZXBlbmRlbmNpZXM6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxt" + + "ZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9c2VydmljZXMgZGVzdHJveQprdWJlY3RsIGRl" + + "bGV0ZSBuYW1lc3BhY2UgbnZjZiBhcGkta2V5cyBlc3Mgc2lzIC0taWdub3JlLW5vdC1mb3VuZApr" + + "dWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgbnZjZiAmJiBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2Ug" + + "YXBpLWtleXMgJiYgXAogIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBlc3MgJiYga3ViZWN0bCBj" + + "cmVhdGUgbmFtZXNwYWNlIHNpcwojIFJlLWNyZWF0ZSBwdWxsIHNlY3JldHMgaWYgbmVlZGVkCkhF" + + "TE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9c2Vydmlj" + + "ZXMgc3luYwpgYGAKCiMjIEZhaWx1cmU6IE5WQ0EgQ2xlYW51cCBTdHVjayAoRmluYWxpemVycykK" + + "CiMjIyBTeW1wdG9tcwoKQ29tcHV0ZS1wbGFuZSBjbGVhbnVwIGhhbmdzLiBOYW1lc3BhY2VzCnN0" + + "dWNrIGluIGBUZXJtaW5hdGluZ2A6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IG5zCiMgbnZjYS1vcGVy" + + "YXRvciAgICBUZXJtaW5hdGluZyAgIDEwbQojIG52Y2YtYmFja2VuZCAgICAgVGVybWluYXRpbmcg" + + "ICAxMG0KYGBgCgojIyMgRml4CgpSdW4gdGhpcyBvbmx5IGFnYWluc3QgdGhlIGNvbXB1dGUgY29u" + + "dGV4dCwgYWZ0ZXIgdGhlIG5vcm1hbCBjb21wdXRlLXBsYW5lCnRlYXJkb3duIGhhcyBmYWlsZWQu" + + "IFJlbW92ZSBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgY3VzdG9tIHJlc291cmNlcyBhbmQK" + + "Zm9yY2UtZGVsZXRlIHN0dWNrIG5hbWVzcGFjZXM6CgpgYGBiYXNoCmV4cG9ydCBDT01QVVRFX0NP" + + "TlRFWFQ9PGNvbXB1dGUtcGxhbmUtY29udGV4dD4KCiMgUmVtb3ZlIGZpbmFsaXplcnMgZnJvbSBO" + + "VkNGQmFja2VuZCByZXNvdXJjZXMKa3ViZWN0bCAtLWNvbnRleHQgIiRDT01QVVRFX0NPTlRFWFQi" + + "IGdldCBudmNmYmFja2VuZHMgLUEgLW8ganNvbiB8IFwKICBqcSAnLml0ZW1zW10gfCAubWV0YWRh" + + "dGEubmFtZXNwYWNlICsgIi8iICsgLm1ldGFkYXRhLm5hbWUnIC1yIHwgXAogIHhhcmdzIC1Je30g" + + "c2ggLWMgJ2NvbnRleHQ9IiQxIjsgbnM9IiR7MiUlLyp9IjsgbmFtZT0iJHsyIyMqL30iOyBrdWJl" + + "Y3RsIC0tY29udGV4dCAiJGNvbnRleHQiIHBhdGNoIG52Y2ZiYWNrZW5kICIkbmFtZSIgLW4gIiRu" + + "cyIgLS10eXBlPW1lcmdlIC1wICJ7XCJtZXRhZGF0YVwiOntcImZpbmFsaXplcnNcIjpbXX19Iicg" + + "XyAiJENPTVBVVEVfQ09OVEVYVCIge30KCiMgRm9yY2UtZGVsZXRlIHN0dWNrIG5hbWVzcGFjZXMg" + + "YnkgY2xlYXJpbmcgdGhlaXIgZmluYWxpemVycwpmb3IgbnMgaW4gbnZjYS1vcGVyYXRvciBudmNm" + + "LWJhY2tlbmQ7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgIiRDT01QVVRFX0NPTlRFWFQiIGdldCBu" + + "YW1lc3BhY2UgIiRucyIgLW8ganNvbiAyPi9kZXYvbnVsbCB8IFwKICAgIGpxICcuc3BlYy5maW5h" + + "bGl6ZXJzID0gW10nIHwgXAogICAga3ViZWN0bCAtLWNvbnRleHQgIiRDT01QVVRFX0NPTlRFWFQi" + + "IHJlcGxhY2UgXAogICAgICAtLXJhdyAiL2FwaS92MS9uYW1lc3BhY2VzLyRucy9maW5hbGl6ZSIg" + + "LWYgLSAyPi9kZXYvbnVsbApkb25lCmBgYAoKIyMgRmFpbHVyZTogTlZDQSBPcGVyYXRvciBNaXNz" + + "aW5nIG9yIE5vdCBSZWFkeQoKIyMjIFN5bXB0b21zCgpBZnRlciBjb21wdXRlLXBsYW5lIGluc3Rh" + + "bGwgY29tcGxldGVzLCBubyBgbnZjYS1vcGVyYXRvcmAgRGVwbG95bWVudCBleGlzdHMsIG9yCml0" + + "IGV4aXN0cyBidXQgcG9kcyBhcmUgbm90IHJlYWR5OgoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4" + + "dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgZGVwbG95bWVudCBudmNhLW9wZXJhdG9yIFwK" + + "ICAtbiBudmNhLW9wZXJhdG9yCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + + "eHQ+IGdldCBwb2RzIC1uIG52Y2Etb3BlcmF0b3IKYGBgCgojIyMgRGlhZ25vc2lzIGFuZCBGaXhl" + + "cwoKRmlyc3QgaWRlbnRpZnkgd2hldGhlciB0aGUgaW5zdGFsbGF0aW9uIHVzZWQgdGhlIEhlbG1m" + + "aWxlIHZhbHVlcyBmbG93IG9yIHRoZQpDTEkgcHJvZmlsZSBmbG93LiBSZS1ydW4gb25seSB0aGF0" + + "IGZsb3cncyByZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlvbiBzdGVwcwpmcm9tIFtTcGxpdCBD" + + "b21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQp" + + "LiBEbyBub3QKc3Vic3RpdHV0ZSBvbmUgaGFuZG9mZiBmb3IgdGhlIG90aGVyLgoKSWYgaW5zdGFs" + + "bGF0aW9uIHN1Y2NlZWRzIGJ1dCBwb2RzIHN0aWxsIGZhaWwsIGluc3BlY3QgdGhlIGNvbXB1dGUg" + + "Y29udGV4dDoKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4" + + "dD4gZGVzY3JpYmUgZGVwbG95IG52Y2Etb3BlcmF0b3IgXAogIC1uIG52Y2Etb3BlcmF0b3IKa3Vi" + + "ZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gbG9ncyBkZXBsb3ltZW50L252" + + "Y2Etb3BlcmF0b3IgXAogIC1uIG52Y2Etb3BlcmF0b3IgLS10YWlsPTIwMAprdWJlY3RsIC0tY29u" + + "dGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgbnZjZmJhY2tlbmQgLW4gbnZjYS1vcGVy" + + "YXRvcgpgYGAKCkZvciBwcml2YXRlIHJlZ2lzdHJ5IGZhaWx1cmVzLCB2ZXJpZnkgdGhhdCB0aGUg" + + "cHVsbCBzZWNyZXQgZXhpc3RzIGluCmBudmNhLW9wZXJhdG9yYC4gVGhlIGNoYXJ0IGFuZCBvcGVy" + + "YXRvciBtaXJyb3IgaXQgdG8gYG52Y2Etc3lzdGVtYDsgZG8gbm90IHVzZSBhCmJyb2FkZXIgbWFu" + + "dWFsIG5hbWVzcGFjZSBsb29wLiBTZWUKW3B1bGwtc2VjcmV0cy5tZF0ocHVsbC1zZWNyZXRzLm1k" + + "I2NvbXB1dGUtcGxhbmUtc2VjcmV0KS4KCiMjIEZhaWx1cmU6IEdhdGV3YXkgRW5kcG9pbnQgQ2hh" + + "bmdlZAoKIyMjIFN5bXB0b21zCgpSZXF1ZXN0cyB0aHJvdWdoIHRoZSBjb25maWd1cmVkIHJvdXRl" + + "IGRvbWFpbiBmYWlsIGFmdGVyIHRoZSBHYXRld2F5IG9yIGl0cyBsb2FkIGJhbGFuY2VyIGlzIHJl" + + "cGxhY2VkLiBUaGUgR2F0ZXdheSByZXBvcnRzIGEgbmV3IGVuZHBvaW50LgoKIyMjIERpYWdub3Np" + + "cwoKYGBgYmFzaApHQVRFV0FZX0FERFI9JChrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFu" + + "ZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1nYXRld2F5IC1uIGVudm95LWdhdGV3YXkg" + + "XAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFsdWV9JykKdGVzdCAtbiAi" + + "JEdBVEVXQVlfQUREUiIKZGlnICtzaG9ydCAiYXBpLjxkb21haW4+IgpjdXJsIC1IICJIb3N0OiBh" + + "cGkuPGRvbWFpbj4iICJodHRwOi8vJEdBVEVXQVlfQUREUi9oZWFsdGgiCgojIENoZWNrIGRpcmVj" + + "dCBhZGRyZXNzIGZpZWxkcyB1c2VkIGJ5IGEgc3BsaXQgZGVwbG95bWVudApncmVwIG52Y2ZOYXRz" + + "U2VydmljZVVSTCBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9lbnZpcm9ubWVudHMvPGVudj4u" + + "eWFtbApncmVwIC1FICdpY21zU2VydmljZXxyZXZhbFNlcnZpY2V8bmF0cycgXAogIGRlcGxveS9z" + + "dGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmBgYAoKIyMj" + + "IEZpeAoKS2VlcCBgZ2xvYmFsLmRvbWFpbmAsIHJvdXRlIGhvc3RuYW1lcywgYW5kIEhvc3Qgb3Zl" + + "cnJpZGVzIHVuY2hhbmdlZC4gVXBkYXRlIEROUwpvciB0aGUgZGlyZWN0IGNsaWVudCBkZXN0aW5h" + + "dGlvbi4gRm9yIHNwbGl0IGRlcGxveW1lbnRzLCB1cGRhdGUgb25seSBkaXJlY3QKR2F0ZXdheS1h" + + "ZGRyZXNzIGZpZWxkcyBhbmQgcmVmcmVzaCByZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlvbiB0" + + "aHJvdWdoIHRoZQpzYW1lIHNlbGVjdGVkIGhhbmRvZmYuIFNlZQpbRXhhbXBsZSA0XSguLi9leGFt" + + "cGxlcy5tZCNleGFtcGxlLTQtcmVjb3Zlci1mcm9tLWEtZ2F0ZXdheS1lbmRwb2ludC1jaGFuZ2Up" + + "LgoKIyMgVXNlZnVsIE5hbWVzcGFjZS10by1TZXJ2aWNlIE1hcHBpbmcKClF1aWNrIHJlZmVyZW5j" + + "ZSBmb3Igd2hpY2ggc2VydmljZXMgcnVuIGluIHdoaWNoIG5hbWVzcGFjZToKCnwgTmFtZXNwYWNl" + + "IHwgU2VydmljZXMgfAp8LS0tLS0tLS0tLS18LS0tLS0tLS0tLXwKfCBuYXRzLXN5c3RlbSB8IG5h" + + "dHMgfAp8IGNhc3NhbmRyYS1zeXN0ZW0gfCBjYXNzYW5kcmEgfAp8IHZhdWx0LXN5c3RlbSB8IG9w" + + "ZW5iYW8tc2VydmVyIHwKfCBudmNmIHwgYXBpLCBpbnZvY2F0aW9uLXNlcnZpY2UsIGdycGMtcHJv" + + "eHksIG5vdGFyeS1zZXJ2aWNlLCByZXZhbCwgbGxtLXJlcXVlc3Qtcm91dGVyLCBsbG0tYXBpLWdh" + + "dGV3YXkgfAp8IGFwaS1rZXlzIHwgYXBpLWtleXMsIGFkbWluLWlzc3Vlci1wcm94eSB8CnwgZXNz" + + "IHwgZXNzLWFwaSB8Cnwgc2lzIHwgc2lzIHwKfCBlbnZveS1nYXRld2F5LXN5c3RlbSB8IGVudm95" + + "IGdhdGV3YXkgKGluZ3Jlc3MgY29udHJvbGxlcikgfAp8IGVudm95LWdhdGV3YXkgfCBnYXRld2F5" + + "IHJlc291cmNlICsgcm91dGVzIHwKUEsHCLV6cDu1MAAAtTAAAFBLAwQUAAgAAAAAACEAAAAAAAAA" + + "AAAAAAAARAAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMv" + + "aGVsbWZpbGUtc3RydWN0dXJlLm1kVVQFAAEAps4SIyBIZWxtZmlsZSBTdHJ1Y3R1cmUgUmVmZXJl" + + "bmNlCgojIyBEaXJlY3RvcnkgTGF5b3V0CgpgYGBiYXNoCm52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNr" + + "Lwp8LS0gaGVsbWZpbGUuZC8KfCAgIHwtLSAwMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGwgICMg" + + "TkFUUywgQ2Fzc2FuZHJhLCBPcGVuQmFvCnwgICB8LS0gMDItY29yZS55YW1sLmdvdG1wbCAgICAg" + + "ICAgICAjIE5WQ0Ygc2VydmljZXMgKyBpbmdyZXNzCnwgICBgLS0gMDMtb2JzZXJ2YWJpbGl0eS55" + + "YW1sLmdvdG1wbCAjIE9ic2VydmFiaWxpdHkgc3RhY2sgKG9wdGlvbmFsKQp8LS0gZW52aXJvbm1l" + + "bnRzLwp8ICAgfC0tIGJhc2UueWFtbCAgICAgICAgICAgICAgICAgICAgIyBEZWZhdWx0IHZhbHVl" + + "cyAoYWxsIGVudmlyb25tZW50cykKfCAgIGAtLSA8ZW52LW5hbWU+LnlhbWwgICAgICAgICAgICAg" + + "ICMgUGVyLWVudmlyb25tZW50IG92ZXJyaWRlcwp8LS0gc2VjcmV0cy8KfCAgIGAtLSA8ZW52LW5h" + + "bWU+LXNlY3JldHMueWFtbCAgICAgICMgU2Vuc2l0aXZlIHZhbHVlcyAocmVnaXN0cnkgY3JlZHMs" + + "IHBhc3N3b3JkcykKYC0tIGdsb2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAgICMgR28gdGVt" + + "cGxhdGUgdGhhdCBjb25zdHJ1Y3RzIHBlci1jaGFydCB2YWx1ZXMKCm52Y2YtY29tcHV0ZS1wbGFu" + + "ZS1zdGFjay8KfC0tIGhlbG1maWxlLmQvCnwgICB8LS0gMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290" + + "bXBsICAjIENvbXB1dGUgcGxhbmUgZGVwZW5kZW5jeSBjb21wb25lbnRzCnwgICBgLS0gMDItbnZj" + + "YS55YW1sLmdvdG1wbCAgICAgICAgICAjIG52Y2Etb3BlcmF0b3IgY2hhcnQgYW5kIG52Y2EgY29u" + + "ZmlndXJhdGlvbgp8LS0gZW52aXJvbm1lbnRzLwp8ICAgfC0tIGJhc2UueWFtbCAgICAgICAgICAg" + + "ICAgICAgICAgIyBEZWZhdWx0IHZhbHVlcyAoYWxsIGVudmlyb25tZW50cykKfCAgIGAtLSA8ZW52" + + "LW5hbWU+LnlhbWwgICAgICAgICAgICAgICMgUGVyLWVudmlyb25tZW50IG92ZXJyaWRlcwpgLS0g" + + "Z2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAgIyBHbyB0ZW1wbGF0ZSB0aGF0IGNvbnN0" + + "cnVjdHMgcGVyLWNoYXJ0IHZhbHVlcwpgYGAKClRoZXNlIHN0YWNrcyBoYXZlIHNlcGFyYXRlIGVu" + + "dmlyb25tZW50cyBhbmQgY2x1c3RlciBjb250ZXh0cy4gVGhlIEhlbG1maWxlCnZhbHVlcyBmbG93" + + "IGF1dGhvcnMgYm90aCBlbnZpcm9ubWVudCBmaWxlcy4gVGhlIENMSSBwcm9maWxlIGZsb3cgaW5z" + + "dGVhZCB1c2VzCnRoZSBDTEktZ2VuZXJhdGVkIGNvbnRyb2wtcGxhbmUgcHJvZmlsZSBhcyBpdHMg" + + "ZW5kcG9pbnQgc291cmNlLiBEbyBub3QgbWl4IHRoZQpoYW5kb2Zmcy4gU2VlIFtTcGxpdCBDb21w" + + "dXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLgoK" + + "IyMgR290bXBsIEZpbGVzIGFuZCBUaGVpciBSZWxlYXNlcwoKIyMjIDAxLWRlcGVuZGVuY2llcy55" + + "YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBOb3RlcyB8CnwtLS0t" + + "LS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IG5hdHMgfCBoZWxtLW52Y2YtbmF0" + + "cyB8IG5hdHMtc3lzdGVtIHwgTWVzc2FnaW5nIHwKfCBvcGVuYmFvLXNlcnZlciB8IGhlbG0tbnZj" + + "Zi1vcGVuYmFvLXNlcnZlciB8IHZhdWx0LXN5c3RlbSB8IFNlY3JldHMgbWFuYWdlbWVudCwgZGVw" + + "ZW5kcyBvbiBuYXRzIHwKfCBjYXNzYW5kcmEgfCBoZWxtLW52Y2YtY2Fzc2FuZHJhIHwgY2Fzc2Fu" + + "ZHJhLXN5c3RlbSB8IERhdGFiYXNlIHwKClVzZXMgYDw8OiAqZGVwZW5kZW5jeWAgdGVtcGxhdGUg" + + "aW5oZXJpdGFuY2Ugd2l0aCBgcmVsZWFzZS1ncm91cDogZGVwZW5kZW5jaWVzYCBsYWJlbC4KCiMj" + + "IyAwMi1jb3JlLnlhbWwuZ290bXBsCgp8IFJlbGVhc2UgfCBDaGFydCB8IE5hbWVzcGFjZSB8IExh" + + "YmVsIHwKfC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS18CnwgYXBpLWtleXMg" + + "fCBoZWxtLW52Y2YtYXBpLWtleXMgfCBhcGkta2V5cyB8IHNlcnZpY2VzIHwKfCBzaXMgfCBoZWxt" + + "LW52Y2Ytc2lzIHwgc2lzIHwgc2VydmljZXMgfAp8IGFwaSB8IGhlbG0tbnZjZi1hcGkgfCBudmNm" + + "IHwgc2VydmljZXMgfAp8IGludm9jYXRpb24tc2VydmljZSB8IGhlbG0tbnZjZi1pbnZvY2F0aW9u" + + "LXNlcnZpY2UgfCBudmNmIHwgc2VydmljZXMgfAp8IGdycGMtcHJveHkgfCBoZWxtLW52Y2YtZ3Jw" + + "Yy1wcm94eSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgZXNzLWFwaSB8IGhlbG0tbnZjZi1lc3MtYXBp" + + "IHwgZXNzIHwgc2VydmljZXMgfAp8IG5vdGFyeS1zZXJ2aWNlIHwgaGVsbS1udmNmLW5vdGFyeS1z" + + "ZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCByZXZhbCB8IGhlbG0tcmV2YWwgfCBudmNmIHwg" + + "c2VydmljZXMgfAp8IGxsbS1yZXF1ZXN0LXJvdXRlciB8IG52Y2YvaGVsbS1udmNmLWxsbS1yZXF1" + + "ZXN0LXJvdXRlciB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgbGxtLWFwaS1nYXRld2F5IHwgbnZjZi9o" + + "ZWxtLW52Y2YtbGxtLWFwaS1nYXRld2F5IHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBhZG1pbi1pc3N1" + + "ZXItcHJveHkgfCBoZWxtLWFkbWluLXRva2VuLWlzc3Vlci1wcm94eSB8IGFwaS1rZXlzIHwgKG5v" + + "IHJlbGVhc2UtZ3JvdXAgbGFiZWwpIHwKfCBpbmdyZXNzIHwgbnZjZi1nYXRld2F5LXJvdXRlcyB8" + + "IGVudm95LWdhdGV3YXktc3lzdGVtIHwgaW5ncmVzcyB8CgpNb3N0IHNlcnZpY2VzIHVzZSBgaW5o" + + "ZXJpdDogW3t0ZW1wbGF0ZTogc2VydmljZX1dYC4gTExNIHJlbGVhc2VzIHVzZSBPQ0kgY2hhcnRz" + + "IGZyb20gdGhlIGBudmNmYCByZXBvc2l0b3J5IHdpdGggc3RhbmRhbG9uZSBgdmFsdWVzOiBbLi4v" + + "Z2xvYmFsLnlhbWwuZ290bXBsXWAgYmxvY2tzOyB0aGV5IGFyZSBnYXRlZCBvbiBgYWRkb25zLmxs" + + "bS5lbmFibGVkYC4gYGFkbWluLWlzc3Vlci1wcm94eWAgYW5kIGBpbmdyZXNzYCBoYXZlIHN0YW5k" + + "YWxvbmUgYHZhbHVlczpgIGJsb2Nrcy4KCiMjIyAwMy1vYnNlcnZhYmlsaXR5LnlhbWwuZ290bXBs" + + "Cgp8IFJlbGVhc2UgfCBDaGFydCB8IE5hbWVzcGFjZSB8IExhYmVsIHwKfC0tLS0tLS0tLXwtLS0t" + + "LS0tfC0tLS0tLS0tLS0tfC0tLS0tLS18CnwgKG9ic2VydmFiaWxpdHkgcmVsZWFzZXMpIHwgKHZh" + + "cmlvdXMpIHwgb2JzZXJ2YWJpbGl0eSB8IG9ic2VydmFiaWxpdHkgfAoKR2F0ZWQgb24gb2JzZXJ2" + + "YWJpbGl0eS1zcGVjaWZpYyBmbGFncyBpbiB0aGUgZW52aXJvbm1lbnQgZmlsZS4gU2tpcHBlZCBp" + + "ZiBkaXNhYmxlZC4KCiMjIFRlbXBsYXRlIEluaGVyaXRhbmNlCgojIyMgYDw8OiAqZGVwZW5kZW5j" + + "eWAgKFlBTUwgbWVyZ2UpCgpVc2VkIGluIGAwMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGxgLiBN" + + "ZXJnZXMgdGhlIHRlbXBsYXRlJ3MgcHJvcGVydGllcyBpbnRvIHRoZSByZWxlYXNlLgoKKipHb3Rj" + + "aGEqKjogWUFNTCBtZXJnZSByZXBsYWNlcyBsaXN0cy4gSWYgeW91IGFkZCBhIGB2YWx1ZXM6YCBr" + + "ZXkgdG8gdGhlIHJlbGVhc2UsIGl0ICoqcmVwbGFjZXMqKiB0aGUgdGVtcGxhdGUncyBgdmFsdWVz" + + "OmAgbGlzdCBlbnRpcmVseS4gWW91IG11c3QgcmUtaW5jbHVkZSBhbGwgdGVtcGxhdGUgdmFsdWVz" + + "OgoKSW4gdGhlIHRlbXBsYXRlIGJlbG93LCBgPHByaXZhdGUtdmFsdWVzPmAgcmVmZXJzIHRvIHRo" + + "ZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUgc3RhY2sgcm9vdC4KCmBgYHlh" + + "bWwKIyBUZW1wbGF0ZSBkZWZpbmVzOgp0ZW1wbGF0ZXM6CiAgZGVwZW5kZW5jeTogJmRlcGVuZGVu" + + "Y3kKICAgIGNoYXJ0OiBudmNmL2hlbG0tbnZjZi17eyAuUmVsZWFzZS5OYW1lIH19CiAgICB2YWx1" + + "ZXM6CiAgICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAgIC0gLi4vPHByaXZhdGUtdmFs" + + "dWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwKCiMgV2hl" + + "biBvdmVycmlkaW5nLCBNVVNUIHJlLWluY2x1ZGUgYm90aDoKLSBuYW1lOiBjYXNzYW5kcmEKICA8" + + "PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbCAgICAg" + + "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE11c3QgcmUtaW5jbHVk" + + "ZQogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52ICJIRUxNRklMRV9FTlYi" + + "IH19LXNlY3JldHMueWFtbCAgICMgTXVzdCByZS1pbmNsdWRlCiAgICAtIGNhc3NhbmRyYTogICAg" + + "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBZ" + + "b3VyIG92ZXJyaWRlCiAgICAgICAgcmVzb3VyY2VzOgogICAgICAgICAgbGltaXRzOgogICAgICAg" + + "ICAgICBtZW1vcnk6IDgxOTJNaQpgYGAKCiMjIyBgaW5oZXJpdGAgKEhlbG1maWxlIG5hdGl2ZSkK" + + "ClVzZWQgaW4gYDAyLWNvcmUueWFtbC5nb3RtcGxgLiBIZWxtZmlsZSdzIG5hdGl2ZSBpbmhlcml0" + + "YW5jZSBtZWNoYW5pc20uCgpgYGB5YW1sCi0gbmFtZTogYXBpCiAgdmVyc2lvbjogMS42LjAKICBu" + + "YW1lc3BhY2U6IG52Y2YKICBpbmhlcml0OgogICAgLSB0ZW1wbGF0ZTogc2VydmljZQpgYGAKCldo" + + "ZW4gYWRkaW5nIGB2YWx1ZXM6YCB0byBhbiBpbmhlcml0ZWQgcmVsZWFzZSwgeW91IGFsc28gbmVl" + + "ZCB0byByZS1pbmNsdWRlIHRoZSB0ZW1wbGF0ZSdzIHZhbHVlcyBmaWxlcyBzaW5jZSBgdmFsdWVz" + + "YCBpcyBhIGxpc3QgdGhhdCBnZXRzIHJlcGxhY2VkLgoKIyMgVmFsdWVzIFByZWNlZGVuY2UKCkZy" + + "b20gbG93ZXN0IHRvIGhpZ2hlc3QgcHJpb3JpdHk6CgoxLiBgZW52aXJvbm1lbnRzL2Jhc2UueWFt" + + "bGAgLS0gZGVmYXVsdHMgc2hhcmVkIGFjcm9zcyBhbGwgZW52aXJvbm1lbnRzCjIuIGBlbnZpcm9u" + + "bWVudHMvPGVudj4ueWFtbGAgLS0gcGVyLWVudmlyb25tZW50IG92ZXJyaWRlcwozLiBgZ2xvYmFs" + + "LnlhbWwuZ290bXBsYCAtLSBHbyB0ZW1wbGF0ZSBwcm9jZXNzaW5nIChjb25zdHJ1Y3RzIGNoYXJ0" + + "LXNwZWNpZmljIHN0cnVjdHVyZSkKNC4gYDxwcml2YXRlLXZhbHVlcz4vPGVudj4tc2VjcmV0cy55" + + "YW1sYCAtLSBzZW5zaXRpdmUgdmFsdWVzCjUuIElubGluZSBgdmFsdWVzOmAgYmxvY2tzIG9uIHJl" + + "bGVhc2VzIC0tIGhpZ2hlc3QgcHJlY2VkZW5jZQoKIyMgV2hhdCBnbG9iYWwueWFtbC5nb3RtcGwg" + + "UGFzc2VzIFRocm91Z2gKCmBnbG9iYWwueWFtbC5nb3RtcGxgIHJlYWRzIGZyb20gYC5WYWx1ZXNg" + + "ICh0aGUgbWVyZ2VkIGVudmlyb25tZW50ICsgZW52LXNwZWNpZmljIFlBTUwpIGFuZCBjb25zdHJ1" + + "Y3RzIGNoYXJ0LXNwZWNpZmljIHZhbHVlcy4gSXQgb25seSBwYXNzZXMgdGhyb3VnaCBrZXlzIGl0" + + "IGV4cGxpY2l0bHkgcmVmZXJlbmNlczoKCiMjIyBDYXNzYW5kcmEKCi0gYGNhc3NhbmRyYS5yZXBs" + + "aWNhQ291bnRgCi0gYGNhc3NhbmRyYS5pbWFnZS4qYCAocmVnaXN0cnksIHJlcG9zaXRvcnkpCi0g" + + "YGNhc3NhbmRyYS5taWdyYXRpb25zLmltYWdlLipgCi0gYGNhc3NhbmRyYS5wZXJzaXN0ZW5jZS5z" + + "aXplYAotIGBjYXNzYW5kcmEubm9kZVNlbGVjdG9yYCAoaWYgYGdsb2JhbC5ub2RlU2VsZWN0b3Jz" + + "LmVuYWJsZWRgKQotIGBjYXNzYW5kcmEuZ2xvYmFsLmRlZmF1bHRTdG9yYWdlQ2xhc3NgCgojIyMg" + + "TkFUUwoKLSBgbmF0cy5jb250YWluZXIuaW1hZ2UuKmAKLSBgbmF0cy5yZWxvYWRlci5pbWFnZS4q" + + "YAotIGBuYXRzLm5hdHNCb3guY29udGFpbmVyLmltYWdlLipgCi0gYG5hdHMuY29uZmlnLmpldHN0" + + "cmVhbS5maWxlU3RvcmUucHZjLnN0b3JhZ2VDbGFzc05hbWVgCi0gYG5hdHMucG9kVGVtcGxhdGUu" + + "bWVyZ2Uuc3BlYy5ub2RlU2VsZWN0b3JgIChpZiBlbmFibGVkKQoKIyMjIE9wZW5CYW8KCi0gYG9w" + + "ZW5iYW8ubWlncmF0aW9ucy5pbWFnZS4qYCBhbmQgYG9wZW5iYW8ubWlncmF0aW9ucy5lbnZgCi0g" + + "YG9wZW5iYW8uaW5qZWN0b3IuaW1hZ2UuKmAKLSBgb3BlbmJhby5zZXJ2ZXIuaW1hZ2UuKmAKLSBg" + + "b3BlbmJhby5zZXJ2ZXIuZGF0YVN0b3JhZ2UuKmAKLSBOb2RlIHNlbGVjdG9ycyAoaWYgZW5hYmxl" + + "ZCkKCiMjIyBTZXJ2aWNlcyAoQVBJLCBTSVMsIGV0Yy4pCgotIGA8c2VydmljZT4uaW1hZ2UuKmAg" + + "KHJlZ2lzdHJ5LCByZXBvc2l0b3J5KQotIGA8c2VydmljZT4ubm9kZVNlbGVjdG9yYCAoaWYgZW5h" + + "YmxlZCkKLSBgPHNlcnZpY2U+LmVudi4qYCAob2JzZXJ2YWJpbGl0eSBzZXR0aW5ncykKCiMjIyBM" + + "TE0gRnVuY3Rpb24gRW5hYmxlbWVudAoKRW5hYmxlIHRoZSBMTE0gYWRkb24gYmVmb3JlIGNyZWF0" + + "aW5nIG9yIGludm9raW5nIGZ1bmN0aW9ucyB3aXRoCmBmdW5jdGlvblR5cGU6ICJMTE0iYC4gVGhl" + + "IGFkZG9uIGRlcGxveXMgYGxsbS1yZXF1ZXN0LXJvdXRlcmAgYW5kCmBsbG0tYXBpLWdhdGV3YXlg" + + "LCBhZGRzIHRoZSBgbGxtLmludm9jYXRpb24uPGRvbWFpbj5gIHJvdXRlIHdoZW4gR2F0ZXdheSBB" + + "UEkKaW5ncmVzcyBpcyBlbmFibGVkLCBhbmQgY29uZmlndXJlcyB3b3JrZXJzIHRvIHVzZSB0aGUg" + + "TExNIHNpZGVjYXIuIFRoZSBIZWxtZmlsZQpjb25kaXRpb24gaXMgYGFkZG9ucy5sbG0uZW5hYmxl" + + "ZGAuIERvIG5vdCB1c2UgdGhlIG9ic29sZXRlIGBsbG0uZW5hYmxlZGAgcGF0aC4KCkZvciBhIHNp" + + "bmdsZS1ub2RlIGlzb2xhdGVkIHRlc3QgY2x1c3RlciwgYWRkIHRoaXMgY29uZmlndXJhdGlvbiB0" + + "bwpgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgIGJlZm9yZSBhcHBseWluZyB0aGUgc3RhY2s6Cgpg" + + "YGB5YW1sCmFkZG9uczoKICBsbG06CiAgICBlbmFibGVkOiB0cnVlCiAgICBnYXRld2F5OgogICAg" + + "ICByZXBsaWNhQ291bnQ6IDEKICAgICAgbWV0cmljczoKICAgICAgICBzZXJ2aWNlTW9uaXRvcjoK" + + "ICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCiAgICByZXF1ZXN0Um91dGVyOgogICAgICByZXBsaWNh" + + "Q291bnQ6IDEKICAgICAgbWV0cmljczoKICAgICAgICBzZXJ2aWNlTW9uaXRvcjoKICAgICAgICAg" + + "IGVuYWJsZWQ6IGZhbHNlCgphZ2VudENvbmZpZzoKICBtZXJnZUNvbmZpZzogfAogICAgY2x1c3Rl" + + "cjoKICAgICAgdmFsaWRhdGlvblBvbGljeToKICAgICAgICBuYW1lOiBVbnJlc3RyaWN0ZWQKICAg" + + "IHdvcmtsb2FkOgogICAgICBzdGFyZ2F0ZVFVSUNJbnNlY3VyZTogdHJ1ZQpgYGAKClVzZSBgcmVw" + + "bGljYUNvdW50OiAxYCBvbmx5IGZvciBsb2NhbCBvciBzaW5nbGUtbm9kZSB0ZXN0IGNsdXN0ZXJz" + + "LiBUaGUgYnVuZGxlZApOVkNGIEFQSSBjdXJyZW50bHkgc2VydmVzIHBsYWludGV4dCBnUlBDIG9u" + + "IHBvcnQgOTA5MCwgc28gdGhlIHNlbGYtbWFuYWdlZCBzdGFjawpkZWZhdWx0cyB0aGUgTExNIEFQ" + + "SSBHYXRld2F5IGF1dGhlbnRpY2F0aW9uIGhvcCB0byBwbGFpbnRleHQuIFNldApgYWRkb25zLmxs" + + "bS5nYXRld2F5LmF1dGguZ3JwY0luc2VjdXJlOiBmYWxzZWAgb25seSB3aXRoIGEgVExTLWNhcGFi" + + "bGUgTlZDRiBBUEkuCgpXb3JrZXItdG8tcm91dGVyIHRyYW5zcG9ydCBpcyBzZXBhcmF0ZS4gRm9y" + + "IHNoYXJlZCBvciBwcm9kdWN0aW9uIGNsdXN0ZXJzLCB1c2UKdGhlIHJlcXVpcmVkIHJlcGxpY2Eg" + + "Y291bnQgYW5kIHRoZSBtYW5hZ2VkIFRMUyBjb25maWd1cmF0aW9uLiBUaGUKYHdvcmtsb2FkLnN0" + + "YXJnYXRlUVVJQ0luc2VjdXJlYCBzZXR0aW5nIGVuYWJsZXMgcGxhaW50ZXh0IHdvcmtlciB0cmFu" + + "c3BvcnQgYW5kCm11c3Qgbm90IGJlIHVzZWQgaW4gcHJvZHVjdGlvbi4KClRoZSByZXF1ZXN0IHJv" + + "dXRlciB1c2VzIGBwb3dlci1vZi10d29gIHdoZW4gbm8gbG9hZC1iYWxhbmNlciBjb25maWd1cmF0" + + "aW9uIGlzCnNldC4gQ29uZmlndXJlIG90aGVyIHJvdXRpbmcgbWV0aG9kcyB3aXRoIHRoZQpbTExN" + + "IFJlcXVlc3QgUm91dGVyIExvYWQgQmFsYW5jaW5nXShodHRwczovL2dpdGh1Yi5jb20vTlZJRElB" + + "L252Y2YvYmxvYi9tYWluL2RvY3Mvc2VsZi1tYW5hZ2VkL2xsbS1yZXF1ZXN0LXJvdXRlci1sb2Fk" + + "LWJhbGFuY2luZy5tZCkKZ3VpZGUuCgpJZiB0aGUgc2lkZWNhciBpbWFnZSBpcyBtaXJyb3JlZCBv" + + "dXRzaWRlIHRoZSBzdGFjaydzIGRlZmF1bHQgaW1hZ2UgcmVnaXN0cnkgYW5kCnJlcG9zaXRvcnks" + + "IHNldCB0aGUgZ2VuZXJhdGVkIHdvcmtlciBzaWRlY2FyIGltYWdlIGV4cGxpY2l0bHk6CgpgYGB5" + + "YW1sCmFwaToKICByZW1vdGVDb25maWc6CiAgICBjb25maWdEYXRhOgogICAgICBudmNmOgogICAg" + + "ICAgIHNpZGVjYXJzOgogICAgICAgICAgbGxtLXJvdXRlci1jbGllbnQtaW1hZ2U6IDxyZWdpc3Ry" + + "eT4vPHJlcG9zaXRvcnk+L3B5bG9uOjAuMTQuMQpgYGAKClRoZSBsZWdhY3kgYGFwaS5lbnYuTlZD" + + "Rl9TSURFQ0FSU19MTE1fUk9VVEVSX0NMSUVOVF9JTUFHRWAgcGF0aCBpcyBkZXByZWNhdGVkLgpU" + + "aGUgc3RhY2sgdHJhbnNsYXRlcyBpdCBmb3Igb25lIGNvbXBhdGliaWxpdHkgd2luZG93LCBidXQg" + + "bmV3IGNvbmZpZ3VyYXRpb25zCm11c3QgdXNlIHRoZSByZW1vdGUtY29uZmlnIHBhdGguIENvbmZs" + + "aWN0aW5nIHZhbHVlcyBmYWlsIHJlbmRlcmluZy4KClJlbmRlciBhbmQgYXBwbHkgdGhlIHVwZGF0" + + "ZWQgY29udHJvbC1wbGFuZSBlbnZpcm9ubWVudCwgdGhlbiByZWZyZXNoIGV2ZXJ5CnJlZ2lzdGVy" + + "ZWQgY29tcHV0ZSBwbGFuZSB1c2luZyB0aGUgc2FtZSBoYW5kb2ZmIHVzZWQgZm9yIGl0cyBpbnN0" + + "YWxsYXRpb24gc28KTlZDQSByZWNlaXZlcyBgYWdlbnRDb25maWcubWVyZ2VDb25maWdgOgoKYGBg" + + "YmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgdGVtcGxhdGUKSEVMTUZJTEVfRU5WPTxl" + + "bnY+IGhlbG1maWxlIHN5bmMKYGBgCgpVc2UgdGhlIGNvbXBsZXRlIGNvbXB1dGUtcGxhbmUgaW5z" + + "dGFsbCBjb21tYW5kIGZyb20KW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShjb21w" + + "dXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkuIEEKQ0xJLXByb2ZpbGUgaW5zdGFsbGF0aW9uIG11" + + "c3QgcmVtYWluIHByb2ZpbGUtZHJpdmVuOyBhIEhlbG1maWxlIGluc3RhbGxhdGlvbgptdXN0IHJl" + + "bWFpbiB2YWx1ZXMtZHJpdmVuLgoKRXhpc3RpbmcgTExNIGZ1bmN0aW9uIHZlcnNpb25zIHJldGFp" + + "biB0aGUgd29ya2VyLXNpZGVjYXIgaW1hZ2UgbWV0YWRhdGEKY2FwdHVyZWQgd2hlbiB0aGUgdmVy" + + "c2lvbiBpcyBjcmVhdGVkLiBSZXBsYWNpbmcgcG9kcyBvciByZWRlcGxveWluZyB0aGUgc2FtZQp2" + + "ZXJzaW9uIGRvZXMgbm90IGFwcGx5IGEgbmV3IFB5bG9uIGltYWdlLiBBZnRlciB0aGUgY29udHJv" + + "bC1wbGFuZSB1cGRhdGUsCmNyZWF0ZSBhbmQgZGVwbG95IGEgbmV3IGZ1bmN0aW9uIHZlcnNpb24u" + + "IFZlcmlmeSB0aGUgY29udHJvbCBwbGFuZSwgcm91dGUsIGFuZAp3b3JrZXIgc2lkZWNhcjoKCmBg" + + "YGJhc2gKa3ViZWN0bCBnZXQgZGVwbG95IC1uIG52Y2YgbGxtLWFwaS1nYXRld2F5Cmt1YmVjdGwg" + + "Z2V0IHN0YXRlZnVsc2V0IC1uIG52Y2YgbGxtLXJlcXVlc3Qtcm91dGVyCmt1YmVjdGwgZ2V0IHBv" + + "ZHMgLW4gbnZjZiB8IGdyZXAgLUUgJ2xsbS1hcGktZ2F0ZXdheXxsbG0tcmVxdWVzdC1yb3V0ZXIn" + + "Cmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgbGxtCmt1YmVjdGwgLW4gbnZjZi1iYWNr" + + "ZW5kIGdldCBwb2QgPGZ1bmN0aW9uLXBvZD4gXAogIC1vIGpzb25wYXRoPSd7cmFuZ2UgLnNwZWMu" + + "Y29udGFpbmVyc1s/KEAubmFtZT09ImxsbS13b3JrZXIiKV0uYXJnc1sqXX17Ln17IlxcbiJ9e2Vu" + + "ZH0nCmBgYAoKRm9yIGxvY2FsIHBsYWludGV4dCBjbHVzdGVycywgdGhlIGBsbG0td29ya2VyYCBh" + + "cmdzIG11c3QgaW5jbHVkZQpgLS1xdWljLWluc2VjdXJlYC4KCkZvciBsb2FkLWJhbGFuY2VyIHNj" + + "aGVtYSBhbmQgYWxnb3JpdGhtIGJlaGF2aW9yLCBzZWUgdGhlCltTdGFyZ2F0ZSBjb25maWd1cmF0" + + "aW9uIGd1aWRlXShodHRwczovL2dpdGh1Yi5jb20vTlZJRElBL252Y2YvYmxvYi9tYWluL3NyYy9s" + + "aWJyYXJpZXMvcnVzdC9zdGFyZ2F0ZS9kb2NzL2xvYWQtYmFsYW5jZXItY29uZmlndXJhdGlvbi5t" + + "ZCkuCgojIyBIZWxtZmlsZSBTZWxlY3RvcnMKClRhcmdldCBzcGVjaWZpYyByZWxlYXNlcyBvciBn" + + "cm91cHM6CgpgYGBiYXNoCiMgQnkgcmVsZWFzZSBncm91cApIRUxNRklMRV9FTlY9PGVudj4gaGVs" + + "bWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llcyBzeW5jCkhFTE1GSUxF" + + "X0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9c2VydmljZXMgc3lu" + + "YwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPWlu" + + "Z3Jlc3Mgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNl" + + "LWdyb3VwPW9ic2VydmFiaWxpdHkgc3luYwoKIyBCeSByZWxlYXNlIG5hbWUKSEVMTUZJTEVfRU5W" + + "PTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgc3luYwpIRUxNRklMRV9F" + + "TlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWFkbWluLWlzc3Vlci1wcm94eSBzeW5j" + + "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9bGxtLXJlcXVlc3Qt" + + "cm91dGVyIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1s" + + "bG0tYXBpLWdhdGV3YXkgc3luYwoKIyBUZW1wbGF0ZSBvbmx5IChkcnkgcnVuKQpIRUxNRklMRV9F" + + "TlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZQoKIyBE" + + "ZXN0cm95IGEgc2luZ2xlIHJlbGVhc2UKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2Vs" + + "ZWN0b3IgbmFtZT1jYXNzYW5kcmEgZGVzdHJveQpgYGAKCk5vdGU6IGBhZG1pbi1pc3N1ZXItcHJv" + + "eHlgIGhhcyBubyBgcmVsZWFzZS1ncm91cGAgbGFiZWwuIFVzZSBgLS1zZWxlY3RvciBuYW1lPWFk" + + "bWluLWlzc3Vlci1wcm94eWAuClBLBwgTEeyNCioAAAoqAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAA" + + "AAAAAD8ACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL252" + + "Y2YtdWktYWRkb24ubWRVVAUAAQCmzhIjIE5WQ0YgVUkgQWRkb24KCk5WQ0YgVUkgaXMgYW4gb3B0" + + "aW9uYWwsIGN1c3RvbWVyLWZhY2luZyBOVkNGIGFkbWluLXBhbmVsIFVJLiBJdCBpcyBkaXNhYmxl" + + "ZCBieQpkZWZhdWx0IGFuZCBhdmFpbGFibGUgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGlu" + + "Y2x1ZGUgdGhlIE5WQ0YgVUkgYWRkb24uCgojIyBXaGVuIHRvIGVuYWJsZQoKRW5hYmxlIE5WQ0Yg" + + "VUkgb25seSB3aGVuIHlvdSBuZWVkIHRoZSBhZG1pbi1wYW5lbCBVSSBhbmQgeW91ciBleHRyYWN0" + + "ZWQgc3RhY2sKcGFja2FnZSBpbmNsdWRlcyB0aGUgYWRkb24uIElmIHRoZSBwYWNrYWdlIGRvZXMg" + + "bm90IGNvbnRhaW4gYSBgbnZjZi11aWAgcmVsZWFzZQphbmQgYG52Y2ZVaWAgcm91dGUgdmFsdWVz" + + "LCBza2lwIHRoZSBhZGRvbiB1bnRpbCB5b3UgdXNlIGEgcGFja2FnZSB0aGF0IGluY2x1ZGVzCnRo" + + "ZW0uCgojIyBFbmFibGUgdGhlIGFkZG9uCgpFbmFibGUgaXQgaW4gYGVudmlyb25tZW50cy88ZW52" + + "LW5hbWU+LnlhbWxgOgoKYGBgeWFtbAphZGRvbnM6CiAgbnZjZlVpOgogICAgZW5hYmxlZDogdHJ1" + + "ZQpgYGAKCiMjIENyZWF0ZSBuYW1lc3BhY2UgYW5kIGltYWdlIHB1bGwgc2VjcmV0CgpDcmVhdGUg" + + "dGhlIG5hbWVzcGFjZSwgYW5kIGFuIGltYWdlIHB1bGwgc2VjcmV0IG9ubHkgaWYgcHVsbGluZyBm" + + "cm9tIGEgcHJpdmF0ZQpyZWdpc3RyeToKCmBgYGJhc2gKa3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNl" + + "IG52Y2YtdWkgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCgoj" + + "IE9ubHkgaWYgcHVsbGluZyBmcm9tIGEgcHJpdmF0ZSByZWdpc3RyeSAoZS5nLiwgTkdDIG52Y3Iu" + + "aW8pCmV4cG9ydCBOR0NfQVBJX0tFWT0iPHlvdXIta2V5PiIKa3ViZWN0bCBjcmVhdGUgc2VjcmV0" + + "IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBc" + + "CiAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgLS1kb2NrZXItcGFzc3dvcmQ9" + + "IiROR0NfQVBJX0tFWSIgXAogIC0tbmFtZXNwYWNlPW52Y2YtdWkgXAogIC0tZHJ5LXJ1bj1jbGll" + + "bnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpgYGAKClRoZSBkZWZhdWx0IHJvdXRlIGhv" + + "c3QgaXMgYG52Y2YtdWkuPGRvbWFpbj5gIGFuZCB0aGUgYmFja2VuZCBpcwpgbnZjZi11aS5udmNm" + + "LXVpOjgzMDBgLgoKIyMgQXBwbHkgdGhlIHNlcnZpY2UgYW5kIHJvdXRlCgpBZnRlciBjb25maXJt" + + "aW5nIHRoZSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBgbnZjZi11aWAgcmVsZWFzZSwgcHJldmlldyBh" + + "bmQgYXBwbHkKdGhlIHNlcnZpY2UgYW5kIHJvdXRlOgoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVu" + + "di1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9bnZjZi11aSB0ZW1wbGF0ZQpIRUxNRklM" + + "RV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9bnZjZi11aSBzeW5jCkhF" + + "TE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1p" + + "bmdyZXNzIHN5bmMKYGBgCgojIyBWZXJpZnkKClZlcmlmeSB0aGUgcm91dGUgb25seSB3aGVuIHRo" + + "ZSBhZGRvbiBpcyBwcmVzZW50IGFuZCBlbmFibGVkOgoKYGBgYmFzaAprdWJlY3RsIGdldCBkZXBs" + + "b3ksc3ZjIC1uIG52Y2YtdWkKa3ViZWN0bCBnZXQgaHR0cHJvdXRlIC1BIHwgZ3JlcCAtaSBudmNm" + + "LXVpCmN1cmwgLWkgLUggIkhvc3Q6IG52Y2YtdWkuPGRvbWFpbj4iICJodHRwOi8vPGdhdGV3YXkt" + + "YWRkcmVzcz4vc3RhdHVzIgpgYGAKCiMjIFNlY3VyaXR5CgpUaGUgTlZDRiBVSSBhZG1pbiBwYW5l" + + "bCBpcyBjdXJyZW50bHkgdW5hdXRoZW50aWNhdGVkLiBEbyBub3QgZXhwb3NlIGl0IHRvIHRoZQpw" + + "dWJsaWMgaW50ZXJuZXQuIFJlc3RyaWN0IGFjY2VzcyB0byBhIHRydXN0ZWQgbmV0d29yaywgVlBO" + + "LCBvciBhbiBhdXRoZW50aWNhdGluZwpwcm94eSBpbiBmcm9udCBvZiB0aGUgYG52Y2YtdWlgIHJv" + + "dXRlLgpQSwcIOPknr7kHAAC5BwAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA+AAkAZGF0YS9u" + + "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWRV" + + "VAUAAQCmzhIjIEltYWdlIFB1bGwgU2VjcmV0cyBSZWZlcmVuY2UKCiMjIE92ZXJ2aWV3CgpXaGVu" + + "IHB1bGxpbmcgTlZDRiBpbWFnZXMgZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGZvciBleGFtcGxl" + + "LCBOR0MKYG52Y3IuaW9gKSwgS3ViZXJuZXRlcyBuZWVkcyBgaW1hZ2VQdWxsU2VjcmV0c2Agb24g" + + "ZXZlcnkgcG9kLiBDb250cm9sLXBsYW5lIGFuZApjb21wdXRlLXBsYW5lIGNyZWRlbnRpYWxzIGFy" + + "ZSBjb25maWd1cmVkIGluIHRoZWlyIG93biBjbHVzdGVyIGNvbnRleHRzLiBEbyBub3QKdXNlIG9u" + + "ZSBtaXhlZCBuYW1lc3BhY2UgbGlzdC4KClRoZSByZWNvbW1lbmRlZCBjb250cm9sLXBsYW5lIGFw" + + "cHJvYWNoIHVzZXMgS3l2ZXJubyB0byBpbmplY3QgdGhlIHNlY3JldCBpbnRvCmNvbnRyb2wtcGxh" + + "bmUgcG9kcyBhdCBhZG1pc3Npb24gdGltZS4gVGhlIGNvbXB1dGUtcGxhbmUgY2hhcnQgYW5kIG9w" + + "ZXJhdG9yIHVzZQp0aGUgc2VjcmV0IGluIGBudmNhLW9wZXJhdG9yYCBhbmQgbWlycm9yIGl0IHRv" + + "IGBudmNhLXN5c3RlbWAuCgojIyBLeXZlcm5vIEFwcHJvYWNoIChSZWNvbW1lbmRlZCkKCiMjIyAx" + + "LiBJbnN0YWxsIEt5dmVybm8KCmBgYGJhc2gKaGVsbSByZXBvIGFkZCBreXZlcm5vIGh0dHBzOi8v" + + "a3l2ZXJuby5naXRodWIuaW8va3l2ZXJuby8KaGVsbSByZXBvIHVwZGF0ZQpoZWxtIGluc3RhbGwg" + + "a3l2ZXJubyBreXZlcm5vL2t5dmVybm8gLW4ga3l2ZXJubyAtLWNyZWF0ZS1uYW1lc3BhY2UgXAog" + + "IC0ta3ViZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+CmBgYAoKIyMjIDIuIENyZWF0" + + "ZSBjb250cm9sLXBsYW5lIHB1bGwgc2VjcmV0cwoKYGBgYmFzaApleHBvcnQgTkdDX0FQSV9LRVk9" + + "Ijx5b3VyLW5nYy1hcGkta2V5PiIKCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lz" + + "dGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwog" + + "IGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3Bh" + + "Y2UgIiRucyIgXAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRl" + + "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpkb25lCgpmb3IgbnMgaW4gY2Fz" + + "c2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lz" + + "dGVtIGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1j" + + "b250ZXh0PiBjcmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0t" + + "ZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tl" + + "bicgXAogICAgLS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3Bh" + + "Y2U9IiRucyIgXAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRl" + + "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpkb25lCmBgYAoKRm9yIG5vbi1O" + + "R0MgcmVnaXN0cmllcywgcmVwbGFjZSBgLS1kb2NrZXItc2VydmVyYCwgYC0tZG9ja2VyLXVzZXJu" + + "YW1lYCwgYW5kIGAtLWRvY2tlci1wYXNzd29yZGAuCgojIyMgMy4gQXBwbHkgS3l2ZXJubyBDbHVz" + + "dGVyUG9saWN5CgpgYGB5YW1sCmFwaVZlcnNpb246IGt5dmVybm8uaW8vdjEKa2luZDogQ2x1c3Rl" + + "clBvbGljeQptZXRhZGF0YToKICBuYW1lOiBudmNmLWFkZC1pbWFnZXB1bGxzZWNyZXRzCnNwZWM6" + + "CiAgYmFja2dyb3VuZDogZmFsc2UKICBydWxlczoKICAgIC0gbmFtZTogYWRkLWltYWdlcHVsbHNl" + + "Y3JldC10by1udmNmLXBvZHMKICAgICAgbWF0Y2g6CiAgICAgICAgYW55OgogICAgICAgIC0gcmVz" + + "b3VyY2VzOgogICAgICAgICAgICBraW5kczoKICAgICAgICAgICAgLSBQb2QKICAgICAgICAgICAg" + + "bmFtZXNwYWNlczoKICAgICAgICAgICAgLSAibnZjZiIKICAgICAgICAgICAgLSAiYXBpLWtleXMi" + + "CiAgICAgICAgICAgIC0gInNpcyIKICAgICAgICAgICAgLSAiZXNzIgogICAgICAgICAgICAtICJu" + + "YXRzLXN5c3RlbSIKICAgICAgICAgICAgLSAiY2Fzc2FuZHJhLXN5c3RlbSIKICAgICAgICAgICAg" + + "LSAidmF1bHQtc3lzdGVtIgogICAgICAgICAgICAtICJjZXJ0LW1hbmFnZXIiCiAgICAgIG11dGF0" + + "ZToKICAgICAgICBwYXRjaFN0cmF0ZWdpY01lcmdlOgogICAgICAgICAgbWV0YWRhdGE6CiAgICAg" + + "ICAgICAgIGFubm90YXRpb25zOgogICAgICAgICAgICAgIG52Y2YubnZpZGlhLmNvbS9pbWFnZXB1" + + "bGxzZWNyZXQtaW5qZWN0ZWQtYnk6IGt5dmVybm8KICAgICAgICAgIHNwZWM6CiAgICAgICAgICAg" + + "IGltYWdlUHVsbFNlY3JldHM6CiAgICAgICAgICAgIC0gbmFtZTogbnZjci1jcmVkcwpgYGAKCmBg" + + "YGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gYXBwbHkgXAog" + + "IC1mIGt5dmVybm8taW1hZ2VwdWxsc2VjcmV0LXBvbGljeS55YW1sCmBgYAoKIyMjIDQuIEluc3Rh" + + "bGwgdGhlIGNvbnRyb2wgcGxhbmUKCkNvbnRpbnVlIHdpdGggdGhlIHNlbGVjdGVkIGNvbnRyb2wt" + + "cGxhbmUgaW5zdGFsbGF0aW9uIGluCltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0o" + + "Y29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLiBObwpjb250cm9sLXBsYW5lIGhlbG1maWxl" + + "IG1vZGlmaWNhdGlvbnMgYXJlIG5lZWRlZC4gS3l2ZXJubyBpbmplY3RzIHRoZSBwdWxsCnNlY3Jl" + + "dCBpbnRvIG5ldyBjb250cm9sLXBsYW5lIHBvZHMuCgojIyBDb21wdXRlLVBsYW5lIFNlY3JldAoK" + + "Q3JlYXRlIHRoZSBzZWNyZXQgb25seSBpbiBgbnZjYS1vcGVyYXRvcmAgb24gdGhlIGNvbXB1dGUg" + + "Y2x1c3RlcjoKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4" + + "dD4gY3JlYXRlIG5hbWVzcGFjZSBudmNhLW9wZXJhdG9yIFwKICAtLWRyeS1ydW49Y2xpZW50IC1v" + + "IHlhbWwgfCBcCiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gYXBw" + + "bHkgLWYgLQoKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gY3JlYXRl" + + "IHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgLS1kb2NrZXItc2VydmVyPW52" + + "Y3IuaW8gXAogIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogIC0tZG9ja2VyLXBh" + + "c3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAtLW5hbWVzcGFjZT1udmNhLW9wZXJhdG9yIFwKICAt" + + "LWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBcCiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUt" + + "cGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpgYGAKClJlZmVyZW5jZSBpdCBpbiB0aGUgY29tcHV0" + + "ZS1wbGFuZSBlbnZpcm9ubWVudCBmaWxlOgoKYGBgeWFtbApnbG9iYWw6CiAgaW1hZ2VQdWxsU2Vj" + + "cmV0czoKICAgIC0gbmFtZTogbnZjci1jcmVkcwpgYGAKClRoZSBjaGFydCBhbmQgb3BlcmF0b3Ig" + + "dXNlIHRoYXQgcmVmZXJlbmNlIGluIGBudmNhLW9wZXJhdG9yYCBhbmQgbWlycm9yIHRoZQpzZWNy" + + "ZXQgdG8gYG52Y2Etc3lzdGVtYC4gRG8gbm90IGNyZWF0ZSBhIGJyb2FkZXIgbWFudWFsIGNvbXB1" + + "dGUgbmFtZXNwYWNlIGxpc3QuIEZvbGxvdwpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRp" + + "b25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKSBmb3IgdGhlCnNlbGVjdGVkIGluc3Rh" + + "bGwgZmxvdy4KCiMjIFZlcmlmaWNhdGlvbgoKYGBgYmFzaAojIENoZWNrIHRoYXQgYSBjb250cm9s" + + "LXBsYW5lIHBvZCBoYXMgdGhlIGluamVjdGVkIHNlY3JldAprdWJlY3RsIC0tY29udGV4dCA8Y29u" + + "dHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgcG9kIC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gXAog" + + "IC1vIGpzb25wYXRoPSd7LnNwZWMuaW1hZ2VQdWxsU2VjcmV0c30nCiMgRXhwZWN0ZWQ6IFt7Im5h" + + "bWUiOiJudmNyLWNyZWRzIn1dCgojIENoZWNrIHRoZSBLeXZlcm5vIGFubm90YXRpb24Ka3ViZWN0" + + "bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHBvZCAtbiA8bmFtZXNwYWNl" + + "PiA8cG9kLW5hbWU+IFwKICAtbyBqc29ucGF0aD0ney5tZXRhZGF0YS5hbm5vdGF0aW9ucy5udmNm" + + "XC5udmlkaWFcLmNvbS9pbWFnZXB1bGxzZWNyZXQtaW5qZWN0ZWQtYnl9JwojIEV4cGVjdGVkOiBr" + + "eXZlcm5vCgojIENoZWNrIHB1bGwgZXZlbnRzCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBs" + + "YW5lLWNvbnRleHQ+IGdldCBldmVudHMgLW4gPG5hbWVzcGFjZT4gXAogIC0tc29ydC1ieT0nLmxh" + + "c3RUaW1lc3RhbXAnIHwgZ3JlcCAtaSBwdWxsCiMgU2hvdWxkIHNob3cgIlN1Y2Nlc3NmdWxseSBw" + + "dWxsZWQiIG5vdCAiNDAxIFVuYXV0aG9yaXplZCIKCiMgQ2hlY2sgdGhlIGNoYXJ0L29wZXJhdG9y" + + "IG1pcnJvciBvbiB0aGUgY29tcHV0ZSBjbHVzdGVyCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + + "LXBsYW5lLWNvbnRleHQ+IGdldCBzZWNyZXQgbnZjci1jcmVkcyBcCiAgLW4gbnZjYS1zeXN0ZW0K" + + "YGBgCgojIyBXaGVuIFB1bGwgU2VjcmV0cyBBcmUgTm90IE5lZWRlZAoKLSAqKkFXUyBFQ1Igd2l0" + + "aCBJQU0gbm9kZSByb2xlcyoqOiBJZiB5b3VyIG5vZGVzIGhhdmUgYEFtYXpvbkVDMkNvbnRhaW5l" + + "clJlZ2lzdHJ5UmVhZE9ubHlgIElBTSBwb2xpY3ksIEt1YmVybmV0ZXMgY2FuIHB1bGwgZnJvbSBF" + + "Q1Igd2l0aG91dCBleHBsaWNpdCBzZWNyZXRzLgotICoqUHVibGljIHJlZ2lzdHJpZXMqKjogTm8g" + + "cHVsbCBzZWNyZXRzIG5lZWRlZC4KLSAqKkNTUCBidWlsdC1pbiBjcmVkZW50aWFsIGhlbHBlcnMq" + + "KjogR0tFIEFydGlmYWN0IFJlZ2lzdHJ5LCBBenVyZSBBQ1Igd2l0aCBtYW5hZ2VkIGlkZW50aXR5" + + "LCBhbmQgc2ltaWxhciBzZXJ2aWNlcy4KCiMjIFRyb3VibGVzaG9vdGluZwoKIyMjIFBvZHMgc3Rp" + + "bGwgaW4gSW1hZ2VQdWxsQmFja09mZiBhZnRlciBhcHBseWluZyBwb2xpY3kKClRoZSBLeXZlcm5v" + + "IHBvbGljeSBvbmx5IGFmZmVjdHMgcG9kcyBjcmVhdGVkICoqYWZ0ZXIqKiB0aGUgcG9saWN5IGlz" + + "IGFwcGxpZWQuIERlbGV0ZSBzdHVjayBwb2RzIHRvIHRyaWdnZXIgcmVjcmVhdGlvbjoKCmBgYGJh" + + "c2gKa3ViZWN0bCAtLWNvbnRleHQgPHRhcmdldC1jb250ZXh0PiBkZWxldGUgcG9kcyAtbiA8bmFt" + + "ZXNwYWNlPiAtLWFsbApgYGAKCiMjIyBLeXZlcm5vIGFkbWlzc2lvbiBjb250cm9sbGVyIG5vdCBy" + + "dW5uaW5nCgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+" + + "IGdldCBwb2RzIC1uIGt5dmVybm8KIyBBbGwgcG9kcyBzaG91bGQgYmUgUnVubmluZwpgYGAKCiMj" + + "IyBQb2xpY3kgbm90IG1hdGNoaW5nCgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9s" + + "LXBsYW5lLWNvbnRleHQ+IGdldCBjbHVzdGVycG9saWN5IG52Y2YtYWRkLWltYWdlcHVsbHNlY3Jl" + + "dHMKIyBTaG91bGQgc2hvdyBSRUFEWTogVHJ1ZQpgYGAKCiMjIyBXcm9uZyBzZWNyZXQgbmFtZQoK" + + "VGhlIHBvbGljeSByZWZlcmVuY2VzIGBudmNyLWNyZWRzYC4gVmVyaWZ5IHRoZSBzZWNyZXQgZXhp" + + "c3RzIHdpdGggdGhhdCBleGFjdCBuYW1lOgoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8dGFy" + + "Z2V0LWNvbnRleHQ+IGdldCBzZWNyZXQgbnZjci1jcmVkcyAtbiA8bmFtZXNwYWNlPgpgYGAKUEsH" + + "CEtCNagAFgAAABYAAFBLAQIUABQACAAAAAAAIQD3ALZAShAAAEoQAAASAAkAAAAAAAAAAAAAAAAA" + + "AABkYXRhL21hbmlmZXN0Lmpzb25VVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA/3bzZ1NhAABTYQAA" + + "IwAJAAAAAAAAAAAAAACTEAAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvU0tJTEwubWRVVAUA" + + "AQCmzhJQSwECFAAUAAgAAAAAACEAFJvuWtoNAADaDQAAMwAJAAAAAAAAAAAAAABAcgAAZGF0YS9u" + + "dmNmLXNlbGYtbWFuYWdlZC1jbGkvZXhhbXBsZXMvY2ktcGlwZWxpbmVzLm1kVVQFAAEAps4SUEsB" + + "AhQAFAAIAAAAAAAhAKEU44FdDAAAXQwAADQACQAAAAAAAAAAAAAAhIAAAGRhdGEvbnZjZi1zZWxm" + + "LW1hbmFnZWQtY2xpL2V4YW1wbGVzL211bHRpLWNsdXN0ZXIubWRVVAUAAQCmzhJQSwECFAAUAAgA" + + "AAAAACEAQidJDwUNAAAFDQAANwAJAAAAAAAAAAAAAABMjQAAZGF0YS9udmNmLXNlbGYtbWFuYWdl" + + "ZC1jbGkvcHJvbXB0cy9hZGQtY29tcHV0ZS1wbGFuZS5tZFVUBQABAKbOElBLAQIUABQACAAAAAAA" + + "IQDU3o00nxkAAJ8ZAAA5AAkAAAAAAAAAAAAAAL+aAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNs" + + "aS9wcm9tcHRzL2NyZWF0ZS1hbmQtcnVuLXRhc2subWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA" + + "0kPcBBglAAAYJQAANwAJAAAAAAAAAAAAAADOtAAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkv" + + "cHJvbXB0cy9kZXBsb3ktYW5kLWludm9rZS5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBykiwm" + + "vg4AAL4OAAA9AAkAAAAAAAAAAAAAAFTaAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9t" + + "cHRzL2RpYWdub3NlLWZhaWxlZC1pbnN0YWxsLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEJx" + + "5h4BKAAAASgAADoACQAAAAAAAAAAAAAAhukAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3By" + + "b21wdHMvaW5zdGFsbC1mcm9tLXNjcmF0Y2gubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAquE6" + + "ucgHAADIBwAAOQAJAAAAAAAAAAAAAAD4EQEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJv" + + "bXB0cy9yb3RhdGUtY2x1c3Rlci1qd2tzLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhANqHY1bk" + + "IQAA5CEAAC4ACQAAAAAAAAAAAAAAMBoBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21w" + + "dHMvdGVhcmRvd24ubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAcg0PZCEjAAAhIwAAMAAJAAAA" + + "AAAAAAAAAAB5PAEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL2NvbW1hbmRz" + + "Lm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhADwZ8FjiCAAA4ggAADIACQAAAAAAAAAAAAAAAWAB" + + "AGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9leGl0LWNvZGVzLm1kVVQFAAEA" + + "ps4SUEsBAhQAFAAIAAAAAAAhAFsF+ye1NAAAtTQAAC0ACQAAAAAAAAAAAAAATGkBAGRhdGEvbnZj" + + "Zi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9mbGFncy5tZFVUBQABAKbOElBLAQIUABQACAAA" + + "AAAAIQDzrhOEdBEAAHQRAAA3AAkAAAAAAAAAAAAAAGWeAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2Vk" + + "LWNsaS9yZWZlcmVuY2UvdHJvdWJsZXNob290aW5nLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAh" + + "ABHDFJNJYgAASWIAACwACQAAAAAAAAAAAAAAR7ABAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5z" + + "dGFsbGF0aW9uL1NLSUxMLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEdValZKVgAASlYAADQA" + + "CQAAAAAAAAAAAAAA8xICAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL2V2YWxz" + + "L2V2YWxzLmpzb25VVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAAlJOQH8oAAB/KAAALwAJAAAAAAAA" + + "AAAAAACoaQIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXhhbXBsZXMubWRV" + + "VAUAAQCmzhJQSwECFAAUAAgAAAAAACEAlmO8WRIwAAASMAAATAAJAAAAAAAAAAAAAACNkgIAZGF0" + + "YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9jb21wdXRlLXBsYW5l" + + "LWluc3RhbGxhdGlvbi5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQC1enA7tTAAALUwAAA7AAkA" + + "AAAAAAAAAAAAACLDAgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVu" + + "Y2VzL2RlYnVnZ2luZy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQATEeyNCioAAAoqAABEAAkA" + + "AAAAAAAAAAAAAEn0AgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVu" + + "Y2VzL2hlbG1maWxlLXN0cnVjdHVyZS5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQA4+SevuQcA" + + "ALkHAAA/AAkAAAAAAAAAAAAAAM4eAwBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + + "bi9yZWZlcmVuY2VzL252Y2YtdWktYWRkb24ubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAS0I1" + + "qAAWAAAAFgAAPgAJAAAAAAAAAAAAAAD9JgMAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + + "YXRpb24vcmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWRVVAUAAQCmzhJQSwUGAAAAABcAFwCvCQAA" + + "cj0DAAAA" var ( skillDataOnce sync.Once diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index d94c187da9..29681a0d8b 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -942,12 +942,12 @@ func ensureClusterValidatorConfig(ctx context.Context, client kubernetes.Interfa // buildControlPlaneValidatorConfig assembles the network-check ConfigMap YAML. // The reachability endpoints are the registries the install pulls from, as -// EnumerateRegistries resolved them for the local credential check, with the -// same criticality, so the two checks cannot disagree. A fixed critical -// nvcr.io entry failed every mirrored or air-gapped control plane, the exact -// install shape EnumerateRegistries deliberately does not send to nvcr.io. -// With no registries the section is omitted and the validator runs without -// configured reachability endpoints. +// EnumerateRegistries resolved them for the local credential check, and all of +// them are non-critical. The validator dials them from a pod with no proxy +// support, but nodes pull through the container runtime, often via an +// HTTPS_PROXY or a registry mirror that pods cannot use: a failed in-pod dial +// is worth a warning, not proof that the nodes cannot pull. With no +// registries the section is omitted. func buildControlPlaneValidatorConfig(registries []RegistryEntry) string { var b strings.Builder for _, reg := range registries { @@ -963,8 +963,8 @@ func buildControlPlaneValidatorConfig(registries []RegistryEntry) string { // ConfigMap unparseable, and the validator then silently drops every // reachability and enforcement check. fmt.Fprintf(&b, - " - name: %q\n host: %q\n port: %d\n protocol: tcp+tls\n critical: %t\n", - reg.Registry, host, port, reg.Critical) + " - name: %q\n host: %q\n port: %d\n protocol: tcp+tls\n critical: false\n", + reg.Registry, host, port) } return b.String() + controlPlaneValidatorEnforcementConfig } diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go index 881c7f4634..1fb135b3c2 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_test.go @@ -605,7 +605,7 @@ func TestBuildControlPlaneValidatorConfig_NoRegistries(t *testing.T) { // The endpoints are exactly the enumerated registries, with the same // criticality. A mirrored install whose list has no nvcr.io must not be made // to dial it: a fixed critical nvcr.io failed every such control plane. -func TestBuildControlPlaneValidatorConfig_FollowsEnumeratedRegistries(t *testing.T) { +func TestBuildControlPlaneValidatorConfig_EndpointsAreNotCritical(t *testing.T) { got := buildControlPlaneValidatorConfig([]RegistryEntry{ {Registry: "harbor.company.internal", Critical: false}, {Registry: "registry.example:5000", Critical: true}, @@ -615,13 +615,16 @@ func TestBuildControlPlaneValidatorConfig_FollowsEnumeratedRegistries(t *testing assert.Contains(t, got, `host: "registry.example"`) assert.Contains(t, got, "port: 5000") assert.Contains(t, got, "host: \"harbor.company.internal\"\n port: 443\n protocol: tcp+tls\n critical: false\n") - assert.Contains(t, got, "host: \"registry.example\"\n port: 5000\n protocol: tcp+tls\n critical: true\n") + assert.Contains(t, got, "host: \"registry.example\"\n port: 5000\n protocol: tcp+tls\n critical: false\n", + "an in-pod dial is not evidence the nodes cannot pull, so no endpoint is critical") assert.Less(t, strings.Index(got, "harbor.company.internal"), strings.Index(got, "enforcement:"), "endpoints must appear before the enforcement block") + // Nodes can pull nvcr.io through a runtime proxy or mirror that pods have + // no route to, so even an NGC install's nvcr.io is only a warning. ngc := buildControlPlaneValidatorConfig([]RegistryEntry{{Registry: "nvcr.io", Critical: true}}) assert.Contains(t, ngc, `host: "nvcr.io"`) - assert.Contains(t, ngc, "critical: true", "an NGC install keeps nvcr.io critical") + assert.NotContains(t, ngc, "critical: true") } func TestBuildControlPlaneValidatorConfig_InvalidRegistrySkipped(t *testing.T) { diff --git a/src/clis/nvcf-cli/internal/selfhosted/credhelper_test.go b/src/clis/nvcf-cli/internal/selfhosted/credhelper_test.go index 94b58a4181..ed1c0ac15e 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/credhelper_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/credhelper_test.go @@ -169,3 +169,25 @@ func TestSelectAuthChallenge_JoinedInOneHeader(t *testing.T) { assert.Equal(t, `Basic realm="bearer thing"`, selectAuthChallenge([]string{`Basic realm="bearer thing"`}), "a quoted word is not a challenge") } + +// For an NGC registry the check uses NGC_API_KEY when it is set, the key the +// install mints its pull secrets from, even when a credential store also has a +// login for it. Without the key, the store is used. Other registries never +// get the key. +func TestCredentialsForRegistry_NGCKeyMatchesWhatTheInstallUses(t *testing.T) { + dockerHome(t, `{"auths":{"nvcr.io":{}},"credsStore":"store"}`, "store") + t.Setenv("NGC_API_KEY", "env-key") + u, p, ok := credentialsForRegistry("nvcr.io") + require.True(t, ok) + assert.Equal(t, "$oauthtoken", u) + assert.Equal(t, "env-key", p) + + t.Setenv("NGC_API_KEY", "") + u, _, ok = credentialsForRegistry("nvcr.io") + require.True(t, ok) + assert.Equal(t, "u-store", u, "without the key the store's login is used") + + t.Setenv("NGC_API_KEY", "env-key") + _, p, _ = credentialsForRegistry("quay.io") + assert.NotEqual(t, "env-key", p, "the NGC key is never sent to another registry") +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go index c93c8dccb9..9e50b211b5 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace.go @@ -138,6 +138,51 @@ func helmReleaseExists( return false, fmt.Errorf("gave up after %d pages scanning for Helm releases", helmReleaseListMaxPages) } +// hasPods reports whether namespace ns runs any pod. A read error reports +// false, so the namespace is still flagged. +func hasPods(ctx context.Context, client kubernetes.Interface, ns string) bool { + pods, err := client.CoreV1().Pods(ns).List(ctx, metav1.ListOptions{Limit: 1}) + return err == nil && len(pods.Items) > 0 +} + +// onlyInstallPreparation reports whether namespace ns holds a registry pull +// Secret and nothing else an operator or an install would create: only the +// tokens and CA ConfigMap Kubernetes adds to every namespace, and no PVCs. An +// empty namespace, or a read error, reports false, so it is still flagged. +func onlyInstallPreparation(ctx context.Context, client kubernetes.Interface, ns string) bool { + pvcs, err := client.CoreV1().PersistentVolumeClaims(ns).List(ctx, metav1.ListOptions{Limit: 1}) + if err != nil || len(pvcs.Items) > 0 { + return false + } + secrets, err := client.CoreV1().Secrets(ns).List(ctx, metav1.ListOptions{}) + if err != nil { + return false + } + pullSecrets := 0 + for i := range secrets.Items { + switch secrets.Items[i].Type { + case corev1.SecretTypeDockerConfigJson, corev1.SecretTypeDockercfg: + pullSecrets++ + case corev1.SecretTypeServiceAccountToken: + default: + return false + } + } + if pullSecrets == 0 { + return false + } + cms, err := client.CoreV1().ConfigMaps(ns).List(ctx, metav1.ListOptions{}) + if err != nil { + return false + } + for i := range cms.Items { + if cms.Items[i].Name != "kube-root-ca.crt" { + return false + } + } + return true +} + // helmReleasesAreInCluster reports whether Helm stores release state as // in-cluster Secrets or ConfigMaps, the drivers this probe can see. func helmReleasesAreInCluster() bool { @@ -194,6 +239,15 @@ func probeStaleNamespaces(ctx context.Context, client kubernetes.Interface, name if found { continue } + // No release is not yet a leftover. The documented install pre-creates + // the namespaces holding only a registry pull Secret, so before the + // first install none has a release; and an install rendered with + // `helm template` (Argo CD) never records one but runs pods. What + // `down` leaves behind runs nothing and still holds data (PVCs, + // Secrets, ConfigMaps). + if hasPods(ctx, client, name) || onlyInstallPreparation(ctx, client, name) { + continue + } noRelease = append(noRelease, name) } diff --git a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go index d6ab34968c..ec7c50a145 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/stale_namespace_test.go @@ -484,3 +484,53 @@ func TestStaleNamespaceCheck_HintsOneCommandPerNamespace(t *testing.T) { assert.Contains(t, r.Message, "get -n api-keys --show-kind") assert.Contains(t, r.Message, "get -n ess --show-kind") } + +// The documented install pre-creates each namespace holding only a registry +// pull Secret, so before the first install none has a release. That is not a +// leftover and must not be flagged, while a namespace that still holds data, +// as `down` leaves them, is. +func TestProbeStaleNamespaces_PreCreatedNamespaceIsNotStale(t *testing.T) { + ns := func(name string) *corev1.Namespace { + return &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: name}, + Status: corev1.NamespaceStatus{Phase: corev1.NamespaceActive}} + } + pull := func(ns string) *corev1.Secret { + return &corev1.Secret{ObjectMeta: metav1.ObjectMeta{Name: "nvcr-pull-secret", Namespace: ns}, + Type: corev1.SecretTypeDockerConfigJson} + } + client := fake.NewSimpleClientset( + ns("nvcf"), pull("nvcf"), + &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Name: "kube-root-ca.crt", Namespace: "nvcf"}}, + ns("cassandra-system"), pull("cassandra-system"), + &corev1.PersistentVolumeClaim{ObjectMeta: metav1.ObjectMeta{Name: "data-cassandra-0", Namespace: "cassandra-system"}}, + ns("vault-system"), pull("vault-system"), + &corev1.Secret{ObjectMeta: metav1.ObjectMeta{Name: "vault-unseal", Namespace: "vault-system"}, + Type: corev1.SecretTypeOpaque}, + ns("sis"), pull("sis"), + &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Name: "sis-config", Namespace: "sis"}}, + ) + stale, err := probeStaleNamespaces(context.Background(), client, + []string{"nvcf", "cassandra-system", "vault-system", "sis"}) + require.NoError(t, err) + var names []string + for _, s := range stale { + names = append(names, s.Name) + } + assert.ElementsMatch(t, []string{"cassandra-system", "vault-system", "sis"}, names, + "only the namespaces that still hold data") +} + +// An install rendered with `helm template` (Argo CD) records no Helm release +// but runs pods. That is a live install, not a leftover. +func TestProbeStaleNamespaces_NamespaceRunningPodsIsNotStale(t *testing.T) { + client := fake.NewSimpleClientset( + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "nats-system"}, + Status: corev1.NamespaceStatus{Phase: corev1.NamespaceActive}}, + &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "nats-0", Namespace: "nats-system"}}, + &corev1.Secret{ObjectMeta: metav1.ObjectMeta{Name: "nats-auth", Namespace: "nats-system"}, + Type: corev1.SecretTypeOpaque}, + ) + stale, err := probeStaleNamespaces(context.Background(), client, []string{"nats-system"}) + require.NoError(t, err) + assert.Empty(t, stale) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go index 4830f3d55a..ea42963607 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/validatortag.go +++ b/src/clis/nvcf-cli/internal/selfhosted/validatortag.go @@ -94,6 +94,16 @@ func ResolveLatestValidatorTag(ctx context.Context, baseImage string) (string, b return fmt.Sprintf("%s/%s:%s", registry, repo, best), true } +// ImageRefIsPinned reports whether ref names a tag or a digest. An unpinned +// reference is pulled as :latest, which a registry need not have. +func ImageRefIsPinned(ref string) bool { + ref = strings.TrimSpace(ref) + if strings.Contains(ref, "@") { + return true + } + return strings.Contains(ref[strings.LastIndex(ref, "/")+1:], ":") +} + // parseImageRef splits "registry/repo:tag" or "registry/repo@digest" into // its parts. The registry must contain a '.' or ':' to distinguish a // real hostname from a Docker Hub library shorthand. Returns ok=false on @@ -497,32 +507,28 @@ func isNGCRegistry(registry string) bool { return false } -// credentialsForRegistry resolves (username, password) for any registry. -// Checks ~/.docker/config.json first, then falls back to NGC_API_KEY only -// for NGC-domain registries to avoid sending NGC creds to unrelated registries. +// credentialsForRegistry resolves (username, password) for any registry. For +// an NGC registry NGC_API_KEY comes first when it is set, because that is the +// key up and the validator pull secret mint from: checking a keychain login +// instead validated a different credential from the one the install uses. +// NGC_API_KEY is never sent to any other registry. Without it, or for any +// other registry, ~/.docker/config.json is used. func credentialsForRegistry(registry string) (string, string, bool) { - if u, p, ok := credsFromDockerConfig(registry); ok { - return u, p, true - } if isNGCRegistry(registry) { if key := firstNonEmptyEnv(ngcAPIKeyEnvNames...); key != "" { return "$oauthtoken", key, true } } - return "", "", false + return credsFromDockerConfig(registry) } -// ngcCredentials resolves (username, password) for an NGC-hosted registry. -// Checks ~/.docker/config.json first; falls back to NGC_API_KEY env vars -// with the literal "$oauthtoken" sentinel username NGC expects. +// ngcCredentials resolves (username, password) for an NGC-hosted registry, in +// the same order: NGC_API_KEY, then ~/.docker/config.json. func ngcCredentials(registry string) (string, string, bool) { - if u, p, ok := credsFromDockerConfig(registry); ok { - return u, p, true - } if key := firstNonEmptyEnv(ngcAPIKeyEnvNames...); key != "" { return "$oauthtoken", key, true } - return "", "", false + return credsFromDockerConfig(registry) } func credsFromDockerConfig(registry string) (string, string, bool) { From ccd590890dad7c79eba394774afdb1b50a2ee1ea Mon Sep 17 00:00:00 2001 From: rohithb Date: Thu, 1 Oct 2026 04:04:56 +0530 Subject: [PATCH 53/55] fix(nvcf-cli): size the check budget from the validator's full run, read a file:// control-plane stack, and document that OnQuit must not block Signed-off-by: rohithb --- src/clis/nvcf-cli/cmd/self_hosted_check.go | 21 ++++++++---- .../cmd/self_hosted_check_scope_test.go | 26 +++++++++++++- .../cmd/self_hosted_check_stackvalues_test.go | 18 ++++++++++ .../internal/selfhosted/clustervalidator.go | 10 ++++++ .../clustervalidator_lifecycle_test.go | 34 +++++++++++++++++++ .../selfhosted/progress/render_tty.go | 4 ++- 6 files changed, 104 insertions(+), 9 deletions(-) diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index 2d13120e8b..3be8eb9d17 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -174,13 +174,18 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { outerTimeout := 2 * time.Minute if clusterValidatorWillRun { - // Each validator Job has a 5m internal budget. ModeSingle runs both - // validators sequentially (two 5m runs); ModeSplit runs them in - // parallel so one 6m ceiling covers both. + // A role's share is a minute for the probes that run first, plus the + // longest a validator can take, which includes the wait after its own + // timeout for the Job's deadline to end the pod. Sizing on the + // validator's timeout alone ran the budget out while that wait was + // still in progress, reporting "not every check ran" in place of the + // validator's own failure. ModeSingle runs both validators in turn; + // ModeSplit runs them in parallel, so one share covers both. + perRole := time.Minute + selfhosted.ClusterValidatorRunCeiling() if mode == kubectx.ModeSingle && controlPlaneIsTargeted(mode) && computePlaneIsTargeted(mode) { - outerTimeout = 12 * time.Minute + outerTimeout = 2 * perRole } else { - outerTimeout = 6 * time.Minute + outerTimeout = perRole } } // --wait polls for the declared duration. The outer ctx has to outlive @@ -390,8 +395,10 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { // environment follows resolveStackEnv. func resolveStackValuesFiles() []string { var roots []string - if selfHostedControlPlaneStack != "" { - roots = append(roots, selfHostedControlPlaneStack) + // localStackDir strips file:// and drops remote sources, which + // filepath.Join would otherwise turn into a path that never exists. + if dir := localStackDir(selfHostedControlPlaneStack); dir != "" { + roots = append(roots, dir) } if cwd, err := os.Getwd(); err == nil { dir := cwd diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go index 58ef6ee90a..bd7327c2e7 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_scope_test.go @@ -146,7 +146,7 @@ func runCheckWithBudget(t *testing.T, budget time.Duration, validator func(conte resetCheckFlags(t) t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") prevBudget, prevCV, prevTools := checkBudget, newClusterValidatorForSelfHosted, checkPreflightTools - checkBudget = func(time.Duration) time.Duration { return budget } + checkBudget = func(d time.Duration) time.Duration { requestedBudget = d; return budget } checkPreflightTools = passingPreflightTools t.Cleanup(func() { checkPreflightTools = prevTools }) newClusterValidatorForSelfHosted = func() selfhosted.ClusterValidator { @@ -164,6 +164,9 @@ func runCheckWithBudget(t *testing.T, budget time.Duration, validator func(conte return rootCmd.Execute(), stderr.String() } +// requestedBudget is the outer budget the last runCheckWithBudget run asked for. +var requestedBudget time.Duration + func holdUntilDone(ctx context.Context) selfhosted.ClusterValidatorResult { <-ctx.Done() return selfhosted.ClusterValidatorResult{Err: ctx.Err()} @@ -279,3 +282,24 @@ func TestImageRefIsPinned(t *testing.T) { assert.Equal(t, want, selfhosted.ImageRefIsPinned(ref), ref) } } + +// The budget covers each validator's longest run, including the wait after its +// own timeout for the Job's deadline to end the pod, so a validator that times +// out is graded as its own failure and not as a spent budget. Both roles on one +// cluster run in turn and need a share each. +func TestCheck_BudgetCoversEachValidatorsFullRun(t *testing.T) { + ceiling := selfhosted.ClusterValidatorRunCeiling() + passNow := func(context.Context) selfhosted.ClusterValidatorResult { + return selfhosted.ClusterValidatorResult{Passed: true} + } + for _, tc := range []struct { + args []string + validators time.Duration + }{ + {args: nil, validators: 1}, + {args: []string{"--pre"}, validators: 2}, + } { + _, _ = runCheckWithBudget(t, time.Minute, passNow, tc.args...) + assert.GreaterOrEqual(t, requestedBudget, tc.validators*ceiling+time.Minute, "args %v", tc.args) + } +} diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_stackvalues_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_stackvalues_test.go index ef805f46b6..e1df05cafb 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_stackvalues_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_stackvalues_test.go @@ -20,6 +20,7 @@ package cmd import ( "os" "path/filepath" + "strings" "testing" "github.com/stretchr/testify/assert" @@ -80,3 +81,20 @@ func TestResolveStackEnv_Precedence(t *testing.T) { withEnvFlag(t, "local", false) assert.Equal(t, "local", resolveStackEnv()) } + +// A file:// stack source is read from its directory. Joined verbatim it named +// a path that never exists, and the lookup fell back to the working directory. +func TestResolveStackValuesFiles_FileURLStack(t *testing.T) { + stack := stackWithEnvs(t, "local") + prev := selfHostedControlPlaneStack + selfHostedControlPlaneStack = "file://" + stack + t.Cleanup(func() { selfHostedControlPlaneStack = prev }) + t.Setenv("HELMFILE_ENV", "") + withEnvFlag(t, "local", false) + + got := resolveStackValuesFiles() + require.Len(t, got, 2) + for _, f := range got { + assert.True(t, strings.HasPrefix(f, stack), "%s is not from the file:// stack", f) + } +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 29681a0d8b..086c3473fc 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -78,6 +78,13 @@ var ( validatorCleanupTimeout = 30 * time.Second ) +// ClusterValidatorRunCeiling is the longest one validator run can take: its +// own timeout, then on a timeout the wait for the Job's deadline to end the +// pod and the log fetch, plus a margin for the pod's termination grace period. +func ClusterValidatorRunCeiling() time.Duration { + return clusterValidatorTimeout + validatorDeadlineGrace + clusterValidatorLogFetchTimeout + validatorRunMargin +} + // cleanupContext is a fresh, bounded context for one deferred sweep. It does // not derive from the run's ctx, which may already be cancelled. func cleanupContext() (context.Context, context.CancelFunc) { @@ -445,6 +452,9 @@ var ( // validatorDeadlineGrace bounds the wait, after this run's own timeout, // for the Job's active deadline (60s later) to end the pod. validatorDeadlineGrace = 120 * time.Second + // validatorRunMargin is ClusterValidatorRunCeiling's allowance for the + // pod's termination grace period and the API round trips between waits. + validatorRunMargin = 30 * time.Second // validatorPullFailureGrace is how long a pull failure must persist before // it is final. The kubelet retries after 10s and then 20s, so a transient // registry error clears inside it. diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go index 8ee90438f9..918afcaf1d 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go @@ -787,3 +787,37 @@ func TestWaitForClusterValidatorJob_TransientErrorsAreRetried(t *testing.T) { _, err = waitForClusterValidatorJob(context.Background(), invalid, "j") assert.True(t, errors.As(err, &pullErr), "a malformed reference never pulls") } + +// A run that times out with a pod that will not end returns within +// ClusterValidatorRunCeiling, which the check's budget is sized from. The +// ceiling counts every wait the timeout path makes, so shortening one of them +// here cannot leave the budget short in production. +func TestClusterValidatorRunCeiling_CoversTheTimeoutPath(t *testing.T) { + t.Setenv("NGC_API_KEY", "key") + client := lifecycleClient(running, "") + client.PrependReactor("list", "pods", func(action ktesting.Action) (bool, runtime.Object, error) { + sel := action.(ktesting.ListAction).GetListRestrictions().Labels.String() + return true, &corev1.PodList{Items: []corev1.Pod{{ + ObjectMeta: metav1.ObjectMeta{Name: "stuck", Namespace: clusterValidatorNamespace, + Labels: map[string]string{"job-name": strings.TrimPrefix(sel, "job-name=")}}, + Status: corev1.PodStatus{Phase: corev1.PodRunning}, + }}}, nil + }) + // The deadline grace dominates the margin, so a ceiling that leaves it + // out is short of the run. + prevTimeout, prevGrace, prevLogs, prevMargin := + clusterValidatorTimeout, validatorDeadlineGrace, clusterValidatorLogFetchTimeout, validatorRunMargin + clusterValidatorTimeout, validatorDeadlineGrace, clusterValidatorLogFetchTimeout, validatorRunMargin = + 300*time.Millisecond, 3*time.Second, 500*time.Millisecond, time.Second + t.Cleanup(func() { + clusterValidatorTimeout, validatorDeadlineGrace, clusterValidatorLogFetchTimeout, validatorRunMargin = + prevTimeout, prevGrace, prevLogs, prevMargin + }) + + start := time.Now() + res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", + "", false, clusterValidatorComputePlaneRole, nil, nil) + require.Error(t, res.Err) + assert.True(t, res.LeftBehind, "the pod never ended, so the whole grace was spent") + assert.LessOrEqual(t, time.Since(start), ClusterValidatorRunCeiling()) +} diff --git a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go index 3c3ddf51ab..bcbf80f4b6 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go +++ b/src/clis/nvcf-cli/internal/selfhosted/progress/render_tty.go @@ -196,7 +196,9 @@ type ModelOpts struct { // OnQuit runs when the operator presses a quit key. Bubbletea reads the // terminal in raw mode, so Ctrl-C arrives as a key press, not a signal: // without this, quitting closed the dashboard while the command kept - // running behind it. + // running behind it. It is called synchronously inside Update, so it must + // not block: cancel a context or signal a channel, and leave the cleanup + // to the command. OnQuit func() } From 828ce3757c4506240c66f76998c95a68e415bfb0 Mon Sep 17 00:00:00 2001 From: rohithb Date: Thu, 1 Oct 2026 04:40:55 +0530 Subject: [PATCH 54/55] fix(nvcf-cli): count the deferred cleanup sweeps in the validator run ceiling Signed-off-by: rohithb --- .../internal/selfhosted/clustervalidator.go | 11 +++- .../internal/selfhosted/miniapiserver_test.go | 53 ++++++++++++++++++- 2 files changed, 61 insertions(+), 3 deletions(-) diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index 086c3473fc..c0da210dc8 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -78,11 +78,18 @@ var ( validatorCleanupTimeout = 30 * time.Second ) +// validatorDeferredSweeps is how many deferred sweeps one run can make, each +// bounded by validatorCleanupTimeout: the pull secret, the RBAC, and for the +// control-plane role the network-checks ConfigMap. +const validatorDeferredSweeps = 3 + // ClusterValidatorRunCeiling is the longest one validator run can take: its // own timeout, then on a timeout the wait for the Job's deadline to end the -// pod and the log fetch, plus a margin for the pod's termination grace period. +// pod and the log fetch, then the deferred sweeps, which run in turn on fresh +// contexts, plus a margin for the pod's termination grace period. func ClusterValidatorRunCeiling() time.Duration { - return clusterValidatorTimeout + validatorDeadlineGrace + clusterValidatorLogFetchTimeout + validatorRunMargin + return clusterValidatorTimeout + validatorDeadlineGrace + clusterValidatorLogFetchTimeout + + validatorDeferredSweeps*validatorCleanupTimeout + validatorRunMargin } // cleanupContext is a fresh, bounded context for one deferred sweep. It does diff --git a/src/clis/nvcf-cli/internal/selfhosted/miniapiserver_test.go b/src/clis/nvcf-cli/internal/selfhosted/miniapiserver_test.go index eb0aed8141..278ba86465 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/miniapiserver_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/miniapiserver_test.go @@ -107,7 +107,11 @@ func (m *miniAPIServer) serve(w http.ResponseWriter, r *http.Request) { for _, o := range m.objects[collection] { items = append(items, o) } - _ = json.NewEncoder(w).Encode(map[string]any{"apiVersion": "v1", "kind": "List", "items": items}) + // A typed client decodes only its own list kind. + _ = json.NewEncoder(w).Encode(map[string]any{ + "apiVersion": listAPIVersion(collection), "kind": listKinds[collection[strings.LastIndex(collection, "/")+1:]], + "items": items, + }) return } obj, ok := m.objects[collection][name] @@ -139,6 +143,23 @@ func (m *miniAPIServer) serve(w http.ResponseWriter, r *http.Request) { } } +// listKinds maps a collection's resource to the kind a typed client decodes. +var listKinds = map[string]string{ + "jobs": "JobList", "pods": "PodList", "secrets": "SecretList", "configmaps": "ConfigMapList", + "serviceaccounts": "ServiceAccountList", "clusterroles": "ClusterRoleList", + "clusterrolebindings": "ClusterRoleBindingList", "namespaces": "NamespaceList", +} + +// listAPIVersion is the group version in a collection path: "v1" under /api, +// "/" under /apis. +func listAPIVersion(collection string) string { + parts := strings.Split(strings.Trim(collection, "/"), "/") + if len(parts) >= 3 && parts[0] == "apis" { + return parts[1] + "/" + parts[2] + } + return "v1" +} + // isNamedPath reports whether path names one object rather than a collection: // its last segment follows a resource segment. func isNamedPath(path string) bool { @@ -209,3 +230,33 @@ func TestRunClusterValidator_HungDeletesAreBounded(t *testing.T) { require.Error(t, res.Err) assert.Less(t, time.Since(start), 25*time.Second) } + +// A control-plane run that times out once its pod has ended makes all three +// deferred sweeps in turn, each on its own bounded context. With every DELETE +// hanging, the run still returns within ClusterValidatorRunCeiling, which the +// check's budget is sized from. +func TestClusterValidatorRunCeiling_CoversHungSweeps(t *testing.T) { + prevTimeout, prevGrace, prevLogs, prevCleanup, prevMargin := clusterValidatorTimeout, + validatorDeadlineGrace, clusterValidatorLogFetchTimeout, validatorCleanupTimeout, validatorRunMargin + clusterValidatorTimeout, validatorDeadlineGrace, clusterValidatorLogFetchTimeout, validatorCleanupTimeout, + validatorRunMargin = 3*time.Second, time.Second, 500*time.Millisecond, time.Second, 200*time.Millisecond + t.Cleanup(func() { + clusterValidatorTimeout, validatorDeadlineGrace, clusterValidatorLogFetchTimeout, validatorCleanupTimeout, + validatorRunMargin = prevTimeout, prevGrace, prevLogs, prevCleanup, prevMargin + }) + // An NGC image with NGC_API_KEY mints a pull Secret, and a registry makes + // the ConfigMap, so each of the three sweeps has an object to delete. + t.Setenv("NGC_API_KEY", "key") + m, client := newMiniAPIServer(t) + m.hangDeletes.Store(true) + + start := time.Now() + res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", + "", false, clusterValidatorControlPlaneRole, []RegistryEntry{{Registry: "nvcr.io"}}, nil) + elapsed := time.Since(start) + require.Error(t, res.Err) + require.Contains(t, res.Err.Error(), "waiting for job", "the run reached the Job wait and timed out there") + assert.GreaterOrEqual(t, elapsed, validatorDeferredSweeps*validatorCleanupTimeout, + "every sweep ran and hung until its bound") + assert.LessOrEqual(t, elapsed, ClusterValidatorRunCeiling()) +} From e19b05b82f4df60f5161ea0e60bf998da181d636 Mon Sep 17 00:00:00 2001 From: rohithb Date: Thu, 1 Oct 2026 19:31:34 +0530 Subject: [PATCH 55/55] fix(nvcf-cli): grant the validator reads on gatewayclasses and controllerrevisions, add --cluster-validator-tolerations, and stop forwarding the HA mode the validator now infers Signed-off-by: rohithb --- .../nvcf-self-managed-cli/reference/flags.md | 1 + src/clis/nvcf-cli/.nvcf-cli.yaml.template | 11 + src/clis/nvcf-cli/cmd/main_test.go | 2 + src/clis/nvcf-cli/cmd/root.go | 1 + src/clis/nvcf-cli/cmd/self_hosted_check.go | 175 +- .../self_hosted_check_validatorenv_test.go | 81 +- .../agentskill/skilldata_generated.go | 4115 +++++++++-------- .../internal/selfhosted/clustervalidator.go | 26 +- .../clustervalidator_lifecycle_test.go | 23 +- .../nvcf-cli/internal/selfhosted/preflight.go | 9 +- .../internal/selfhosted/registry_cred.go | 9 - .../internal/selfhosted/registry_cred_test.go | 6 +- 12 files changed, 2311 insertions(+), 2148 deletions(-) diff --git a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md index b2e0c8aecf..3ce3d8ebc2 100644 --- a/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md +++ b/ai-tooling/user/skills/nvcf-self-managed-cli/reference/flags.md @@ -51,6 +51,7 @@ after the run, so the kubeconfig context needs permission to manage those. | `--cluster-validator-image REF` | Validator image. Resolution order: flag, `NVCF_CLI_CLUSTER_VALIDATOR_IMAGE`, config key `cluster_validator_image`. A ref with no tag discovers the latest stable tag from the registry; if no tag can be discovered, the probe is skipped with a note to pin one. Unset everywhere skips the probe with a warning | - | | `--cluster-validator-registries host:port,...` | Extra registries the control-plane validator probes for reachability. They are added to the registries the install pulls from: the validator image's registry, the stack's `global.image.registry`, and `quay.io` for the cert-manager ACME solver unless the stack sets `certManager.acmesolver.image`. `nvcr.io` is probed only when neither the image nor the stack names a registry. The validator dials from a pod with no proxy, so an unreachable registry is a warning; the local credential check is what fails a registry the install cannot pull from. Repeatable or comma-separated. Env: `NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES`; config key `cluster_validator_registries` | - | | `--cluster-validator-probe-image REF` | Image for the control-plane validator's node-to-node overlay probe. Needs `sh` and a busybox-style `nc`. Set a mirror for air-gapped clusters. Env: `NVCF_CLI_CLUSTER_VALIDATOR_PROBE_IMAGE`; config key `cluster_validator_probe_image` | `busybox:1.36` from Docker Hub | +| `--cluster-validator-tolerations key[=value][:effect],...` | Tolerations added to the validator Job, beside the control-plane ones it always carries, for clusters whose nodes use other taints. Effect is `NoSchedule`, `PreferNoSchedule` or `NoExecute`. A malformed entry fails the command. Repeatable or comma-separated. Env: `NVCF_CLI_CLUSTER_VALIDATOR_TOLERATIONS`; config key `cluster_validator_tolerations` | - | | `--cluster-validator-pull-secret NAME` | docker-registry Secret in `default` used to pull the validator image. When empty, the CLI looks for one in the NVCF namespaces and copies it into `default` for the run. Failing that, and only for an image on an NGC registry, it mints one from `NGC_API_KEY` | auto-detect | | `--skip-cluster-validation` | Skip the in-cluster validator probe entirely. A validator that is configured but cannot run fails the check, so use this to opt out explicitly, for example when the cluster cannot pull the image. Env: `NVCF_CLI_SELFHOSTED_SKIP_CLUSTER_VALIDATION` | `false` | | `--no-cleanup` | Keep the validator Job, its pod, RBAC, pull secret and ConfigMap for debugging. A later check reclaims them after 24 hours; the result prints the `kubectl delete` command that removes them now | `false` | diff --git a/src/clis/nvcf-cli/.nvcf-cli.yaml.template b/src/clis/nvcf-cli/.nvcf-cli.yaml.template index 0d7cde536e..aa51314f26 100644 --- a/src/clis/nvcf-cli/.nvcf-cli.yaml.template +++ b/src/clis/nvcf-cli/.nvcf-cli.yaml.template @@ -193,6 +193,17 @@ api_keys_owner_id: svc@nvcf-api.local # # cluster_validator_probe_image: harbor.example.com/library/busybox:1.36 +# Tolerations added to the validator Job, beside the control-plane ones it +# always carries, for clusters whose nodes use other taints. Each entry is +# key[=value][:effect], with effect NoSchedule, PreferNoSchedule or NoExecute. +# +# Config key: cluster_validator_tolerations +# Environment variable: NVCF_CLI_CLUSTER_VALIDATOR_TOLERATIONS (comma-separated) +# Command-line flag: --cluster-validator-tolerations +# +# cluster_validator_tolerations: +# - dedicated=infra:NoSchedule + # ============================================================================== # General Settings # ============================================================================== diff --git a/src/clis/nvcf-cli/cmd/main_test.go b/src/clis/nvcf-cli/cmd/main_test.go index 95a996977f..5092c6b78a 100644 --- a/src/clis/nvcf-cli/cmd/main_test.go +++ b/src/clis/nvcf-cli/cmd/main_test.go @@ -125,6 +125,7 @@ func resetCheckFlags(t *testing.T) { checkClusterValidatorNoCleanup = false checkClusterValidatorRegistries = nil checkClusterValidatorProbeImage = "" + checkClusterValidatorTolerations = nil checkShowLogs = false selfHostedJSON, selfHostedPlain = false, false selfHostedOutput = "text" @@ -141,6 +142,7 @@ func resetCheckFlags(t *testing.T) { "cluster_validator_image": "cluster-validator-image", "cluster_validator_registries": "cluster-validator-registries", "cluster_validator_probe_image": "cluster-validator-probe-image", + "cluster_validator_tolerations": "cluster-validator-tolerations", } { _ = viper.BindPFlag(key, selfHostedCheckCmd.Flags().Lookup(flag)) } diff --git a/src/clis/nvcf-cli/cmd/root.go b/src/clis/nvcf-cli/cmd/root.go index ee098e5be5..06638e4cbf 100644 --- a/src/clis/nvcf-cli/cmd/root.go +++ b/src/clis/nvcf-cli/cmd/root.go @@ -287,6 +287,7 @@ func initConfig() { viper.BindEnv("cluster_validator_image", "NVCF_CLI_CLUSTER_VALIDATOR_IMAGE") viper.BindEnv("cluster_validator_registries", "NVCF_CLI_CLUSTER_VALIDATOR_REGISTRIES") viper.BindEnv("cluster_validator_probe_image", "NVCF_CLI_CLUSTER_VALIDATOR_PROBE_IMAGE") + viper.BindEnv("cluster_validator_tolerations", "NVCF_CLI_CLUSTER_VALIDATOR_TOLERATIONS") // If a config file is found, read it in. if err := viper.ReadInConfig(); err == nil && viper.GetBool("debug") { diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check.go b/src/clis/nvcf-cli/cmd/self_hosted_check.go index 3be8eb9d17..ed077441d3 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check.go @@ -31,6 +31,7 @@ import ( "github.com/spf13/cobra" "github.com/spf13/viper" "golang.org/x/sync/errgroup" + corev1 "k8s.io/api/core/v1" "nvcf-cli/internal/selfhosted" "nvcf-cli/internal/selfhosted/kubectx" @@ -38,20 +39,21 @@ import ( ) var ( - checkPre bool - checkControlPlane bool - checkComputePlane bool - checkAll bool - checkClusterName string - checkLocalOnly bool - checkSkipInotifyCheck bool - checkSkipClusterValidation bool - checkClusterValidatorImage string - checkClusterValidatorPullSecret string - checkClusterValidatorNoCleanup bool - checkClusterValidatorRegistries []string - checkClusterValidatorProbeImage string - checkShowLogs bool + checkPre bool + checkControlPlane bool + checkComputePlane bool + checkAll bool + checkClusterName string + checkLocalOnly bool + checkSkipInotifyCheck bool + checkSkipClusterValidation bool + checkClusterValidatorImage string + checkClusterValidatorPullSecret string + checkClusterValidatorNoCleanup bool + checkClusterValidatorRegistries []string + checkClusterValidatorTolerations []string + checkClusterValidatorProbeImage string + checkShowLogs bool ) // Test seam. @@ -125,6 +127,14 @@ func init() { "Can also be set in nvcf-cli config as cluster_validator_registries (list).") _ = viper.BindPFlag("cluster_validator_registries", selfHostedCheckCmd.Flags().Lookup("cluster-validator-registries")) + selfHostedCheckCmd.Flags().StringSliceVar(&checkClusterValidatorTolerations, "cluster-validator-tolerations", nil, + "Tolerations added to the validator Job, for clusters whose nodes carry taints other than the "+ + "control-plane ones it always tolerates. Format: key[=value][:effect], effect one of NoSchedule, "+ + "PreferNoSchedule or NoExecute (e.g. dedicated=infra:NoSchedule). Repeatable or comma-separated. "+ + "Env: NVCF_CLI_CLUSTER_VALIDATOR_TOLERATIONS. "+ + "Can also be set in nvcf-cli config as cluster_validator_tolerations (list).") + _ = viper.BindPFlag("cluster_validator_tolerations", + selfHostedCheckCmd.Flags().Lookup("cluster-validator-tolerations")) selfHostedCheckCmd.Flags().StringVar(&checkClusterValidatorProbeImage, "cluster-validator-probe-image", "", "Image for the control-plane validator's node-to-node overlay probe (needs sh and busybox-style nc). "+ "Defaults to busybox:1.36 from Docker Hub; set a mirror for air-gapped clusters. "+ @@ -146,6 +156,9 @@ func runSelfHostedCheck(c *cobra.Command, _ []string) error { // set of RBAC, Secret, ConfigMap and Job for every poll. return fmt.Errorf("--no-cleanup keeps one run's objects for debugging and cannot be combined with --wait") } + if _, err := configuredValidatorTolerations(); err != nil { + return err + } localOnly := checkLocalOnly || os.Getenv("NVCF_CLI_SELFHOSTED_LOCAL_ONLY") != "" skipClusterValidation := checkSkipClusterValidation || os.Getenv("NVCF_CLI_SELFHOSTED_SKIP_CLUSTER_VALIDATION") != "" @@ -490,6 +503,51 @@ func configuredValidatorRegistries() []string { return out } +// configuredValidatorTolerations parses the validator Job's extra tolerations +// from the flag, env var, or config file. Each is key[=value][:effect]: with +// a value it matches that value, without one any; with no effect it matches +// every effect. +func configuredValidatorTolerations() ([]corev1.Toleration, error) { + var out []corev1.Toleration + for _, raw := range viper.GetStringSlice("cluster_validator_tolerations") { + for _, entry := range strings.Split(raw, ",") { + if entry = strings.TrimSpace(entry); entry == "" { + continue + } + t, err := parseToleration(entry) + if err != nil { + return nil, fmt.Errorf("--cluster-validator-tolerations %q: %w", entry, err) + } + out = append(out, t) + } + } + return out, nil +} + +var tolerationEffects = map[string]corev1.TaintEffect{ + "noschedule": corev1.TaintEffectNoSchedule, + "prefernoschedule": corev1.TaintEffectPreferNoSchedule, + "noexecute": corev1.TaintEffectNoExecute, +} + +func parseToleration(entry string) (corev1.Toleration, error) { + t := corev1.Toleration{Operator: corev1.TolerationOpExists} + if rest, effect, ok := strings.Cut(entry, ":"); ok { + e, known := tolerationEffects[strings.ToLower(effect)] + if !known { + return t, fmt.Errorf("effect must be NoSchedule, PreferNoSchedule or NoExecute, got %q", effect) + } + t.Effect, entry = e, rest + } + if key, value, ok := strings.Cut(entry, "="); ok { + t.Operator, t.Value, entry = corev1.TolerationOpEqual, value, key + } + if t.Key = entry; t.Key == "" { + return t, fmt.Errorf("a taint key is required") + } + return t, nil +} + // computePlaneIsTargeted reports whether the compute-plane validator should run: // --compute-plane, --all, or --pre in ModeSingle. --pre in ModeSplit does not // target it because separate clusters have no implicit compute-plane role. @@ -640,6 +698,8 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin registries := cfg.Registries validatorEnv := clusterValidatorJobEnv( selfhosted.LoadStackValues(resolveStackValuesFiles())) + // Validated before the run starts. + validatorTolerations, _ := configuredValidatorTolerations() cpValidatorEnv := validatorEnvForRole(validatorEnv, checkControlPlane) gpuValidatorEnv := validatorEnvForRole(validatorEnv, checkComputePlane) @@ -679,15 +739,16 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin if runControlPlane { eg.Go(func() error { rc := selfhosted.RoleConfig{ - KubeContext: selfHostedControlPlaneContext, - ClusterValidator: cpClusterValidator, - ClusterValidatorImage: clusterValidatorImage, - ClusterValidatorPullSecret: checkClusterValidatorPullSecret, - ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, - ClusterValidatorEnv: cpValidatorEnv, - ClusterValidatorRegistries: registries, - StaleNamespaceProber: staleNSProber, - StackDir: localStackDir(selfHostedControlPlaneStack), + KubeContext: selfHostedControlPlaneContext, + ClusterValidator: cpClusterValidator, + ClusterValidatorImage: clusterValidatorImage, + ClusterValidatorPullSecret: checkClusterValidatorPullSecret, + ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, + ClusterValidatorEnv: cpValidatorEnv, + ClusterValidatorTolerations: validatorTolerations, + ClusterValidatorRegistries: registries, + StaleNamespaceProber: staleNSProber, + StackDir: localStackDir(selfHostedControlPlaneStack), } cpResults = selfhosted.RunPreflightForRole(egCtx, cpCfg, selfhosted.RoleControlPlane, rc, sink) return nil @@ -696,16 +757,17 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin if runComputePlane { eg.Go(func() error { rc := selfhosted.RoleConfig{ - KubeContext: selfHostedComputePlaneContext, - SISURL: icmsURL, - InotifyProber: inotifyProber, - ClusterValidator: clusterValidator, - ClusterValidatorImage: clusterValidatorImage, - ClusterValidatorPullSecret: checkClusterValidatorPullSecret, - ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, - ClusterValidatorEnv: gpuValidatorEnv, - StaleNamespaceProber: staleNSProber, - StackDir: localStackDir(selfHostedComputePlaneStack), + KubeContext: selfHostedComputePlaneContext, + SISURL: icmsURL, + InotifyProber: inotifyProber, + ClusterValidator: clusterValidator, + ClusterValidatorImage: clusterValidatorImage, + ClusterValidatorPullSecret: checkClusterValidatorPullSecret, + ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, + ClusterValidatorEnv: gpuValidatorEnv, + ClusterValidatorTolerations: validatorTolerations, + StaleNamespaceProber: staleNSProber, + StackDir: localStackDir(selfHostedComputePlaneStack), } gpuResults = selfhosted.RunPreflightForRole(egCtx, gpuCfg, selfhosted.RoleComputePlane, rc, sink) return nil @@ -745,31 +807,33 @@ func runPreflightByRole(ctx context.Context, cfg selfhosted.PreflightConfig, sin if runControlPlane { cpRC := selfhosted.RoleConfig{ - SISURL: icmsURL, - ClusterValidator: cpClusterValidator, - ClusterValidatorImage: clusterValidatorImage, - ClusterValidatorPullSecret: checkClusterValidatorPullSecret, - ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, - ClusterValidatorEnv: cpValidatorEnv, - ClusterValidatorRegistries: registries, - StaleNamespaceProber: staleForControlPlane, - StackDir: localStackDir(selfHostedControlPlaneStack), - ExtraStaleNamespaces: cpExtraNamespaces, + SISURL: icmsURL, + ClusterValidator: cpClusterValidator, + ClusterValidatorImage: clusterValidatorImage, + ClusterValidatorPullSecret: checkClusterValidatorPullSecret, + ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, + ClusterValidatorEnv: cpValidatorEnv, + ClusterValidatorTolerations: validatorTolerations, + ClusterValidatorRegistries: registries, + StaleNamespaceProber: staleForControlPlane, + StackDir: localStackDir(selfHostedControlPlaneStack), + ExtraStaleNamespaces: cpExtraNamespaces, } results = append(results, selfhosted.RunPreflightForRole(ctx, cpCfg, selfhosted.RoleControlPlane, cpRC, sink)...) } if runComputePlane { gpuRC := selfhosted.RoleConfig{ - SISURL: icmsURL, - InotifyProber: inotifyProber, - ClusterValidator: clusterValidator, - ClusterValidatorImage: clusterValidatorImage, - ClusterValidatorPullSecret: checkClusterValidatorPullSecret, - ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, - ClusterValidatorEnv: gpuValidatorEnv, - StaleNamespaceProber: staleForComputePlane, - StackDir: localStackDir(selfHostedComputePlaneStack), + SISURL: icmsURL, + InotifyProber: inotifyProber, + ClusterValidator: clusterValidator, + ClusterValidatorImage: clusterValidatorImage, + ClusterValidatorPullSecret: checkClusterValidatorPullSecret, + ClusterValidatorNoCleanup: checkClusterValidatorNoCleanup, + ClusterValidatorEnv: gpuValidatorEnv, + ClusterValidatorTolerations: validatorTolerations, + StaleNamespaceProber: staleForComputePlane, + StackDir: localStackDir(selfHostedComputePlaneStack), } results = append(results, selfhosted.RunPreflightForRole(ctx, gpuCfg, selfhosted.RoleComputePlane, gpuRC, sink)...) @@ -827,13 +891,6 @@ func clusterValidatorJobEnv(stack selfhosted.StackValues) map[string]string { } else if len(stack.Gateways) > 0 { env["NVCF_GATEWAY_NAMES"] = strings.Join(stack.Gateways, ",") } - // Below three replicas a quorum component is a lost quorum under an HA - // mode and the deployed shape under none; only the stack says which. - if mode := configValue("NVCF_HA_MODE"); mode != "" { - env["NVCF_HA_MODE"] = mode - } else if stack.HAMode != "" { - env["NVCF_HA_MODE"] = stack.HAMode - } probe := strings.TrimSpace(viper.GetString("cluster_validator_probe_image")) if probe == "" { probe = configValue("NVCF_N2N_PROBE_IMAGE") diff --git a/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go b/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go index 3d97b3713b..e45a90f700 100644 --- a/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go +++ b/src/clis/nvcf-cli/cmd/self_hosted_check_validatorenv_test.go @@ -26,6 +26,7 @@ import ( "github.com/spf13/viper" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + corev1 "k8s.io/api/core/v1" "nvcf-cli/internal/selfhosted" ) @@ -195,23 +196,79 @@ func TestCheck_RegistriesEnvVarIsSplitOnCommas(t *testing.T) { assert.Contains(t, regs, "ghcr.io") } -// The stack's Gateways and HA mode reach the Job; an explicit setting wins. -func TestClusterValidatorJobEnv_ForwardsStackGatewaysAndHAMode(t *testing.T) { - for _, k := range []string{"NVCF_GATEWAY_NAMES", "NVCF_HA_MODE"} { - t.Setenv(k, "") - } - stack := selfhosted.StackValues{HAMode: "none", Gateways: []string{"gw/grpc-gw", "gw/shared-gw"}} +// The stack's Gateways reach the Job; an explicit setting wins. No HA mode is +// forwarded: the validator reads it from the anti-affinity the stack renders. +func TestClusterValidatorJobEnv_ForwardsStackGateways(t *testing.T) { + t.Setenv("NVCF_GATEWAY_NAMES", "") + t.Setenv("NVCF_HA_MODE", "preferred") + stack := selfhosted.StackValues{Gateways: []string{"gw/grpc-gw", "gw/shared-gw"}} env := clusterValidatorJobEnv(stack) assert.Equal(t, "gw/grpc-gw,gw/shared-gw", env["NVCF_GATEWAY_NAMES"]) - assert.Equal(t, "none", env["NVCF_HA_MODE"]) + assert.NotContains(t, env, "NVCF_HA_MODE") t.Setenv("NVCF_GATEWAY_NAMES", "edge/nvcf-gw") - t.Setenv("NVCF_HA_MODE", "preferred") env = clusterValidatorJobEnv(stack) assert.Equal(t, "edge/nvcf-gw", env["NVCF_GATEWAY_NAMES"]) - assert.Equal(t, "preferred", env["NVCF_HA_MODE"]) +} - t.Setenv("NVCF_HA_MODE", "") - env = clusterValidatorJobEnv(selfhosted.StackValues{}) - assert.NotContains(t, env, "NVCF_HA_MODE", "no stack, no mode: the validator records sub-quorum as not assessed") +// --cluster-validator-tolerations reaches the validator Job of both roles, so +// a cluster whose nodes carry other taints can schedule it, as the chart's +// clusterValidator.tolerations allows. A malformed entry fails the command +// before anything runs. +func TestCheck_ValidatorTolerationsReachBothRoles(t *testing.T) { + resetCheckFlags(t) + var mu sync.Mutex + got := map[string][]corev1.Toleration{} + prev := newClusterValidatorForSelfHosted + newClusterValidatorForSelfHosted = func() selfhosted.ClusterValidator { + return func(_ context.Context, p selfhosted.ClusterValidatorParams) selfhosted.ClusterValidatorResult { + mu.Lock() + defer mu.Unlock() + got[p.Role] = p.Tolerations + return selfhosted.ClusterValidatorResult{Passed: true} + } + } + t.Cleanup(func() { newClusterValidatorForSelfHosted = prev }) + t.Setenv("NVCF_CLI_SELFHOSTED_SKIP_INOTIFY", "1") + + rootCmd.SetErr(&bytes.Buffer{}) + rootCmd.SetOut(&bytes.Buffer{}) + rootCmd.SetArgs([]string{"self-hosted", "check", "--pre", "--json", + "--cluster-validator-image", "nvcr.io/nvidia/nvcf-byoc/cluster-validator:1.0.0", + "--cluster-validator-tolerations", "dedicated=infra:NoSchedule,special"}) + _ = rootCmd.Execute() + + want := []corev1.Toleration{ + {Key: "dedicated", Operator: corev1.TolerationOpEqual, Value: "infra", Effect: corev1.TaintEffectNoSchedule}, + {Key: "special", Operator: corev1.TolerationOpExists}, + } + mu.Lock() + defer mu.Unlock() + assert.Equal(t, want, got["control-plane"]) + assert.Equal(t, want, got["compute-plane"]) + + resetCheckFlags(t) + rootCmd.SetArgs([]string{"self-hosted", "check", "--pre", "--json", + "--cluster-validator-tolerations", "dedicated:Sometimes"}) + err := rootCmd.Execute() + require.Error(t, err) + assert.Contains(t, err.Error(), "effect must be NoSchedule, PreferNoSchedule or NoExecute") +} + +func TestParseToleration(t *testing.T) { + for in, want := range map[string]corev1.Toleration{ + "dedicated=infra:NoSchedule": {Key: "dedicated", Operator: corev1.TolerationOpEqual, Value: "infra", + Effect: corev1.TaintEffectNoSchedule}, + "example.com/role:noexecute": {Key: "example.com/role", Operator: corev1.TolerationOpExists, + Effect: corev1.TaintEffectNoExecute}, + "special": {Key: "special", Operator: corev1.TolerationOpExists}, + } { + got, err := parseToleration(in) + require.NoError(t, err, in) + assert.Equal(t, want, got, in) + } + for _, in := range []string{":NoSchedule", "=v", "k:Never"} { + _, err := parseToleration(in) + assert.Error(t, err, in) + } } diff --git a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go index becf4e98a8..645890d18e 100644 --- a/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go +++ b/src/clis/nvcf-cli/internal/agentskill/skilldata_generated.go @@ -31,7 +31,7 @@ import ( const skillDataZipBase64 = "" + "UEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAASAAkAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4S" + "ewogICJzY2hlbWFWZXJzaW9uIjogMSwKICAiZ2VuZXJhdGVkQXQiOiAiMTk3MC0wMS0wMVQwMDow" + - "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDU2ODksCiAgImZp" + + "MDowMFoiLAogICJ0b3RhbEZpbGVzIjogMjIsCiAgInRvdGFsQnl0ZXMiOiAyMDYxMDcsCiAgImZp" + "bGVzIjogWwogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1jbGkvU0tJTEwu" + "bWQiLAogICAgICAic2hhMjU2IjogImFhOWY3ZTI0NmYzODA0YjMzNDNiNjU2MWU1YmNmZTdiYjcy" + "YjI0MDIxOTMzZTA0OWY4NWUwMDI4OTAzYmJmYTQiLAogICAgICAic2l6ZSI6IDI0OTE1CiAgICB9" + @@ -71,9 +71,9 @@ const skillDataZipBase64 = "" + "ZW5jZS9leGl0LWNvZGVzLm1kIiwKICAgICAgInNoYTI1NiI6ICI2M2E4MzUzMTIyYmE4MGUzNmE1" + "NzY2ODI0Y2FlZjdhZDAzZjBlM2JhZjQ5Njc0ODVkYmZmZDE2ZTAwMDU3YzhjIiwKICAgICAgInNp" + "emUiOiAyMjc0CiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1j" + - "bGkvcmVmZXJlbmNlL2ZsYWdzLm1kIiwKICAgICAgInNoYTI1NiI6ICJmNWViYjE3OGY3YmFlODky" + - "YjAwOGFmYzZhMjllZjIzOWU3ZTk0M2E3NjEzM2VmYzc4ZTIyN2M4ODIwMTUwY2U2IiwKICAgICAg" + - "InNpemUiOiAxMzQ5MwogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + + "bGkvcmVmZXJlbmNlL2ZsYWdzLm1kIiwKICAgICAgInNoYTI1NiI6ICI4MDczZjViODU3ODU4MzBj" + + "ZjkzNTM3N2Q5N2FiNDM0YTBmODIxOGUyNGY3YzZlM2E0MjYxZjBlNThkOGFlODIwIiwKICAgICAg" + + "InNpemUiOiAxMzkxMQogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAibnZjZi1zZWxmLW1hbmFn" + "ZWQtY2xpL3JlZmVyZW5jZS90cm91Ymxlc2hvb3RpbmcubWQiLAogICAgICAic2hhMjU2IjogImE2" + "MzA4NGUyMjQ5ZjFkMTU0YzU5ODFlNGEwNzJiN2M3ODRiODVlYTE0NjA4NjUxNWVhYjRhYjY3MGE5" + "NDBlOTQiLAogICAgICAic2l6ZSI6IDQ0NjgKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogIm52" + @@ -103,7 +103,7 @@ const skillDataZipBase64 = "" + "aCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9wdWxsLXNlY3Jl" + "dHMubWQiLAogICAgICAic2hhMjU2IjogImVjMWYzZmZjZDE3ZTVmOTU4M2ZlZTM5NzQ0ZWU4OTdk" + "NDY2YmMzY2Y2Mzg5Mjk0MjY0ZDg5ZTdmOWVkMDFiODciLAogICAgICAic2l6ZSI6IDU2MzIKICAg" + - "IH0KICBdCn0KUEsHCPcAtkBKEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + + "IH0KICBdCn0KUEsHCM77XX1KEAAAShAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAIwAJAGRh" + "dGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL1NLSUxMLm1kVVQFAAEAps4SLS0tCm5hbWU6IG52Y2Yt" + "c2VsZi1tYW5hZ2VkLWNsaQpkZXNjcmlwdGlvbjogfAogIEluc3RhbGwsIG9wZXJhdGUsIGFuZCB0" + "ZWFyIGRvd24gc2VsZi1ob3N0ZWQgTlZJRElBIENsb3VkIEZ1bmN0aW9ucyAoTlZDRikKICBkZXBs" + @@ -1732,1944 +1732,1124 @@ const skillDataZipBase64 = "" + "ZWRzIGBzaGAgYW5kIGEgYnVzeWJveC1zdHlsZSBgbmNgLiBTZXQgYSBtaXJyb3IgZm9yIGFpci1n" + "YXBwZWQgY2x1c3RlcnMuIEVudjogYE5WQ0ZfQ0xJX0NMVVNURVJfVkFMSURBVE9SX1BST0JFX0lN" + "QUdFYDsgY29uZmlnIGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfcHJvYmVfaW1hZ2VgIHwgYGJ1c3li" + - "b3g6MS4zNmAgZnJvbSBEb2NrZXIgSHViIHwKfCBgLS1jbHVzdGVyLXZhbGlkYXRvci1wdWxsLXNl" + - "Y3JldCBOQU1FYCB8IGRvY2tlci1yZWdpc3RyeSBTZWNyZXQgaW4gYGRlZmF1bHRgIHVzZWQgdG8g" + - "cHVsbCB0aGUgdmFsaWRhdG9yIGltYWdlLiBXaGVuIGVtcHR5LCB0aGUgQ0xJIGxvb2tzIGZvciBv" + - "bmUgaW4gdGhlIE5WQ0YgbmFtZXNwYWNlcyBhbmQgY29waWVzIGl0IGludG8gYGRlZmF1bHRgIGZv" + - "ciB0aGUgcnVuLiBGYWlsaW5nIHRoYXQsIGFuZCBvbmx5IGZvciBhbiBpbWFnZSBvbiBhbiBOR0Mg" + - "cmVnaXN0cnksIGl0IG1pbnRzIG9uZSBmcm9tIGBOR0NfQVBJX0tFWWAgfCBhdXRvLWRldGVjdCB8" + - "CnwgYC0tc2tpcC1jbHVzdGVyLXZhbGlkYXRpb25gIHwgU2tpcCB0aGUgaW4tY2x1c3RlciB2YWxp" + - "ZGF0b3IgcHJvYmUgZW50aXJlbHkuIEEgdmFsaWRhdG9yIHRoYXQgaXMgY29uZmlndXJlZCBidXQg" + - "Y2Fubm90IHJ1biBmYWlscyB0aGUgY2hlY2ssIHNvIHVzZSB0aGlzIHRvIG9wdCBvdXQgZXhwbGlj" + - "aXRseSwgZm9yIGV4YW1wbGUgd2hlbiB0aGUgY2x1c3RlciBjYW5ub3QgcHVsbCB0aGUgaW1hZ2Uu" + - "IEVudjogYE5WQ0ZfQ0xJX1NFTEZIT1NURURfU0tJUF9DTFVTVEVSX1ZBTElEQVRJT05gIHwgYGZh" + - "bHNlYCB8CnwgYC0tbm8tY2xlYW51cGAgfCBLZWVwIHRoZSB2YWxpZGF0b3IgSm9iLCBpdHMgcG9k" + - "LCBSQkFDLCBwdWxsIHNlY3JldCBhbmQgQ29uZmlnTWFwIGZvciBkZWJ1Z2dpbmcuIEEgbGF0ZXIg" + - "Y2hlY2sgcmVjbGFpbXMgdGhlbSBhZnRlciAyNCBob3VyczsgdGhlIHJlc3VsdCBwcmludHMgdGhl" + - "IGBrdWJlY3RsIGRlbGV0ZWAgY29tbWFuZCB0aGF0IHJlbW92ZXMgdGhlbSBub3cgfCBgZmFsc2Vg" + - "IHwKfCBgLS1zaG93LWxvZ3NgIHwgUHJpbnQgdGhlIHZhbGlkYXRvciB0cmFuc2NyaXB0IHRvIHN0" + - "ZGVyciBhZnRlciB0aGUgY2hlY2sgZXZlbnRzLiBUaGUgdHJhbnNjcmlwdCBpcyBub3QgSlNPTiwg" + - "YW5kIGAtLWpzb25gIGFsc28gd3JpdGVzIHRvIHN0ZGVyciwgc28gbGVhdmUgdGhpcyBvZmYgd2hl" + - "biBhIHBhcnNlciBpcyByZWFkaW5nIHRoZSBzdHJlYW0gfCBgZmFsc2VgIHwKCiMjIGB1cGAtc3Bl" + - "Y2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNs" + - "dXN0ZXItbmFtZSBOQU1FYCB8IElDTVMgY2x1c3RlciByb3cgaWRlbnRpZmllciAocmVxdWlyZWQp" + - "IHwgLSB8CnwgYC0tbmNhLWlkIElEYCB8IE5DQSBhY2NvdW50IElEIHwgYG52Y2YtZGVmYXVsdGAg" + - "fAp8IGAtLXJlZ2lvbiBSRUdJT05gIHwgQ2x1c3RlciByZWdpb24gfCBgdXMtd2VzdC0xYCB8Cnwg" + - "YC0tcGxhbi1vbmx5YCB8IERyeS1ydW47IGVtaXQgcGhhc2UgcGxhbiArIEVUQXMgd2l0aG91dCBj" + - "aGFuZ2VzIHwgYGZhbHNlYCB8CgojIyBgc3RhdHVzYC1zcGVjaWZpYwoKfCBGbGFnIHwgUHVycG9z" + - "ZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tY2x1c3Rlci1uYW1lIE5BTUVgIHwgTGlt" + - "aXQgdG8gb25lIGNvbXB1dGUgcGxhbmUgfCAtIChjb250cm9sICsgYWxsIGNsdXN0ZXJzKSB8Cnwg" + - "YC0td2F0Y2hgIHwgTGl2ZSByZS1yZW5kZXIgfCBgZmFsc2VgIHwKfCBgLS13YXRjaC1pbnRlcnZh" + - "bCBEVVJgIHwgYC0td2F0Y2hgIGNhZGVuY2UgfCBgNXNgIHwKfCBgLS1jb21wb25lbnQgTkFNRWAg" + - "fCBGaWx0ZXIgY29tcG9uZW50cyBwYW5lbCB8IGFsbCB8CnwgYC0tbm8tZXZlbnRzYCB8IFNraXAg" + - "ZXZlbnRzIHBhbmVsIHwgYGZhbHNlYCB8CgojIyBgY2x1c3RlciByZWdpc3RlcmAtc3BlY2lmaWMK" + - "CnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLW5hbWUgTkFN" + - "RWAgfCBDbHVzdGVyIG5hbWUgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLW5jYS1pZCBJRGAgfCBOQ0Eg" + - "SUQgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLXJlZ2lvbiBSRUdJT05gIHwgUmVnaW9uIHwgYHVzLXdl" + - "c3QtMWAgfAp8IGAtLWljbXMtdXJsIFVSTGAgfCBJQ01TIGVuZHBvaW50IHwgZnJvbSBjb25maWcg" + - "fAp8IGAtLWlnbm9yZS1leGlzdGluZ2AgfCBNYXRjaC1vci1jcmVhdGUgaW5zdGVhZCBvZiBmYWls" + - "LW9uLWV4aXN0cyB8IGBmYWxzZWAgfAoKIyMgYGFwaS1rZXkgZ2VuZXJhdGVgLXNwZWNpZmljCgp8" + - "IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1mb3IgZnVuY3Rp" + - "b25cfHRhc2tgIHwgR2VuZXJhdGUgb25seSB0aGUgc3BlY2lmaWVkIGtleSB0eXBlIHwgKG9taXQg" + - "dG8gZ2VuZXJhdGUgYm90aCkgfAp8IGAtLWRlc2NyaXB0aW9uIFRFWFRgIHwgSHVtYW4tcmVhZGFi" + - "bGUgbGFiZWwgZm9yIHRoZSBrZXkgfCBgR2VuZXJhdGVkIGJ5IG52Y2YtY2xpYCB8CnwgYC0tZXhw" + - "aXJlcy1pbiBEVVJBVElPTmAgfCBFeHBpcnkgb2Zmc2V0IChlLmcuIGAyNGhgLCBgN2RgKTsgcGFy" + - "c2VkIGFzIGV4dGVuZGVkIGR1cmF0aW9uIHwgYDI0aGAgfAp8IGAtLXNjb3BlcyBTQ09QRVssU0NP" + - "UEVdYCB8IE92ZXJyaWRlIGRlZmF1bHQgc2NvcGVzOyByZXF1aXJlcyBgLS1mb3JgIHwgKHNlcnZp" + - "Y2UgZGVmYXVsdHMpIHwKfCBgLS12YWxpZGF0ZWAgfCBWYWxpZGF0ZSBlYWNoIGdlbmVyYXRlZCBr" + - "ZXkgaW1tZWRpYXRlbHkgYWZ0ZXIgbWludGluZyB8IGBmYWxzZWAgfAoKRXh0ZW5kZWQgZHVyYXRp" + - "b24gdW5pdHM6IGBzYCAoc2Vjb25kcyksIGBtYCAobWludXRlcyksIGBoYCAoaG91cnMpLCBgZGAg" + - "KGRheXMpLCBgd2AgKHdlZWtzKS4KCiMjIGBmdW5jdGlvbiBjcmVhdGVgLXNwZWNpZmljCgpgLS1p" + - "bnB1dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIGZvciByZXBlYXRhYmxlIGZ1bmN0aW9uIGRl" + - "ZmluaXRpb25zLiBGb3IgYWQtaG9jIGNyZWF0ZXM6Cgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVs" + - "dCB8CnwtLS18LS0tfC0tLXwKfCBgLS1uYW1lIE5BTUVgIHwgRnVuY3Rpb24gbmFtZSB8IC0gfAp8" + - "IGAtLWltYWdlIElNQUdFYCB8IENvbnRhaW5lciBpbWFnZSB8IC0gfAp8IGAtLWluZmVyZW5jZS11" + - "cmwgVVJJYCB8IENvbnRhaW5lciBpbmZlcmVuY2UgZW5kcG9pbnQgfCAtIHwKfCBgLS1pbmZlcmVu" + - "Y2UtcG9ydCBQT1JUYCB8IENvbnRhaW5lciBpbmZlcmVuY2UgcG9ydCB8IC0gfAp8IGAtLWZ1bmN0" + - "aW9uLXR5cGUgREVGQVVMVFx8U1RSRUFNSU5HXHxMTE1gIHwgRnVuY3Rpb24gdHlwZSB8IGBERUZB" + - "VUxUYCB8CnwgYC0taGVsbS1jaGFydCBDSEFSVGAgfCBIZWxtIGNoYXJ0IFVSTCBvciBPQ0kgcmVm" + - "ZXJlbmNlLiBDYW4gYmUgdXNlZCB3aXRoIGAtLWZ1bmN0aW9uLXR5cGU9TExNYCBmb3IgY2hhcnQt" + - "cGFja2FnZWQgTExNIHdvcmtsb2Fkcy4gfCAtIHwKfCBgLS1oZWxtLWNoYXJ0LXNlcnZpY2UgTkFN" + - "RWAgfCBLdWJlcm5ldGVzIFNlcnZpY2UgbmFtZSBleHBvc2VkIGJ5IHRoZSBjaGFydC4gUmVxdWly" + - "ZWQgd2hlbiBgLS1oZWxtLWNoYXJ0YCBpcyBzZXQuIHwgLSB8CnwgYC0tbW9kZWxzIE5BTUU6VkVS" + - "U0lPTjpVUklgIHwgU3RhbmRhcmQgbW9kZWwgYXJ0aWZhY3Q7IHJlcGVhdGFibGUgfCAtIHwKfCBg" + - "LS1sbG0tbW9kZWwgU1BFQ2AgfCBMTE0gbW9kZWwgY29uZmlnOyBmb3JtYXQgYG5hbWU9PG1vZGVs" + - "Pix1cmlzPTx1cmk+XHw8dXJpPixyb3V0aW5nTWV0aG9kPTxtZXRob2Q+LHRva2VuUmF0ZUxpbWl0" + - "PTxsaW1pdD5gOyByZXBlYXRhYmxlLiBUb2tlbiBsaW1pdHMgdXNlIGA8dmFsdWU+LTx1bml0PmAg" + - "d2l0aCBgU2AsIGBNYCwgYEhgLCBgRGAsIG9yIGBXYCwgZm9yIGV4YW1wbGUgYDEwMDAtU2AuIFVz" + - "ZSBpbnB1dCBKU09OIGZvciBjb21iaW5lZCB0b2tlbiBsaW1pdHMgYmVjYXVzZSBpbmxpbmUgc3Bl" + - "Y3MgdXNlIGNvbW1hcyBhcyBmaWVsZCBzZXBhcmF0b3JzLiB8IC0gfAp8IGAtLWxsbS1kZWZhdWx0" + - "LXByaW9yaXR5IFBSSU9SSVRZYCB8IEZ1bmN0aW9uLWxldmVsIGRlZmF1bHQgcmVxdWVzdCBwcmlv" + - "cml0eS4gTG93ZXIgdmFsdWVzIGhhdmUgaGlnaGVyIHByaW9yaXR5LiB8IC0gfAp8IGAtLWxsbS1w" + - "ZXItYWNjb3VudC1wcmlvcml0eSBOQ0EtSUQ6UFJJT1JJVFlgIHwgUGVyLWFjY291bnQgcHJpb3Jp" + - "dHkgb3ZlcnJpZGU7IHJlcGVhdGFibGU7IHN1cHBvcnRzIHVwIHRvIDY0IGRpc3RpbmN0IE5DQSBJ" + - "RCBvdmVycmlkZXMuIFJlcXVpcmVzIGEgZGVmYXVsdCBwcmlvcml0eS4gfCAtIHwKCkluIEpTT04g" + - "YW5kIGlubGluZSBzcGVjcywgTExNIGZ1bmN0aW9ucyBzZXQgYGZ1bmN0aW9uVHlwZTogIkxMTSJg" + - "IGFuZCBtb2RlbCByb3V0aW5nIG1ldGFkYXRhIHVuZGVyIGBtb2RlbHNbXS5sbG1Db25maWdgLiBg" + - "bGxtQ29uZmlnLnVyaXNgIGRlY2xhcmVzIHRoZSBPcGVuQUktY29tcGF0aWJsZSB1cHN0cmVhbSBw" + - "YXRocyBleHBvc2VkIGJ5IHRoZSBtb2RlbC4gQ3VycmVudCBzdXBwb3J0ZWQgcGF0aHMgYXJlIGAv" + - "djEvY2hhdC9jb21wbGV0aW9uc2AsIGAvdjEvcmVzcG9uc2VzYCwgYW5kIGAvdjEvZW1iZWRkaW5n" + - "c2AuIGBsbG1Db25maWcucm91dGluZ01ldGhvZGAgYWNjZXB0cyBgcm91bmRfcm9iaW5gLCBgcG93" + - "ZXJfb2ZfdHdvYCwgYGdyb3FfbXVsdGlyZWdpb25gLCBgcHVsc2FyYCwgb3IgYHJhbmRvbWAuCmBs" + - "bG1Db25maWcudG9rZW5SYXRlTGltaXRgIGFjY2VwdHMgb25lIG9yIG1vcmUgY29tbWEtc2VwYXJh" + - "dGVkIHBvc2l0aXZlIGludGVnZXIgdG9rZW4gbGltaXRzIGluIGA8dmFsdWU+LTx1bml0PmAgZm9y" + - "bWF0LiBTdXBwb3J0ZWQgdW5pdHMgYXJlIGBTYCAoc2Vjb25kcyksIGBNYCAobWludXRlcyksIGBI" + - "YCAoaG91cnMpLCBgRGAgKGRheXMpLCBhbmQgYFdgICh3ZWVrcykuIFVzZSBkaXN0aW5jdCB1bml0" + - "cyB3aGVuIGNvbWJpbmluZyBsaW1pdHMsIGZvciBleGFtcGxlIGAxMDAwLVMsNTAwMC1NLDEwMDAw" + - "MC1ILDUwMDAwMC1ELDEwMDAwMDAtV2AgaW4gaW5wdXQgSlNPTi4KCkhlbG0gY2hhcnQgcGFja2Fn" + - "aW5nIGlzIGluZGVwZW5kZW50IG9mIGBmdW5jdGlvblR5cGVgLiBGb3IgYSBIZWxtLWNoYXJ0IGJh" + - "Y2tlZCBMTE0gZnVuY3Rpb24sIHNldCBgZnVuY3Rpb25UeXBlOiAiTExNImAsIGBoZWxtQ2hhcnRg" + - "LCBgaGVsbUNoYXJ0U2VydmljZU5hbWVgLCBhbmQgYG1vZGVsc1tdLmxsbUNvbmZpZ2AgaW4gdGhl" + - "IHNhbWUgY3JlYXRlIHJlcXVlc3QuIGBpbmZlcmVuY2VQb3J0YCBtdXN0IGJlIHRoZSBLdWJlcm5l" + - "dGVzIFNlcnZpY2UgcG9ydCBleHBvc2VkIGJ5IGBoZWxtQ2hhcnRTZXJ2aWNlTmFtZWAuCgpMTE0g" + - "aW52b2NhdGlvbiByZXF1ZXN0cyB1c2UgYG1vZGVsOiAiPGZ1bmN0aW9uLWlkPi88bW9kZWwtbmFt" + - "ZT4iYC4gVGhlIGZ1bmN0aW9uIElEIHNlbGVjdHMgdGhlIE5WQ0YgZnVuY3Rpb24sIGFuZCB0aGUg" + - "bW9kZWwgbmFtZSBpcyBmb3J3YXJkZWQgdXBzdHJlYW0uIENoYXQgY29tcGxldGlvbnMgYW5kIFJl" + - "c3BvbnNlcyBBUEkgcmVxdWVzdHMgY2FuIHVzZSBgeC1tdWx0aS10dXJuLXNlc3Npb24taWRgIGZv" + - "ciBzZXNzaW9uIHN0aWNraW5lc3M7IGVtYmVkZGluZ3MgcmVxdWVzdHMgZG8gbm90LgoKIyMgYGZ1" + - "bmN0aW9uIHVwZGF0ZWAtc3BlY2lmaWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0t" + - "LXwtLS18LS0tfAp8IGAtLXRhZ3MgVEFHWyxUQUddYCB8IFJlcGxhY2UgZnVuY3Rpb24gdGFncyB8" + - "IC0gfAp8IGAtLWxsbS1tb2RlbC11cGRhdGUgU1BFQ2AgfCBMTE0gbW9kZWwgdXBkYXRlOyBmb3Jt" + - "YXQgYG5hbWU9PG1vZGVsPixyb3V0aW5nTWV0aG9kPTxtZXRob2Q+LHRva2VuUmF0ZUxpbWl0PTxs" + - "aW1pdD5gOyByZXBlYXRhYmxlLiBSb3V0aW5nIG1ldGhvZHMgbWF0Y2ggYC0tbGxtLW1vZGVsYC4g" + - "VG9rZW4gbGltaXQgZXhhbXBsZTogYDEwMDAtU2AuIFVzZSBpbnB1dCBKU09OIGZvciBjb21iaW5l" + - "ZCB0b2tlbiBsaW1pdHMuIHwgLSB8CnwgYC0tbGxtLWRlZmF1bHQtcHJpb3JpdHkgUFJJT1JJVFlg" + - "IHwgUmVwbGFjZSB0aGUgZnVuY3Rpb24tbGV2ZWwgcHJpb3JpdHkgY29uZmlndXJhdGlvbiB3aXRo" + - "IHRoaXMgZGVmYXVsdCBhbmQgYW55IHN1cHBsaWVkIHBlci1hY2NvdW50IG92ZXJyaWRlcy4gfCAt" + - "IHwKfCBgLS1sbG0tcGVyLWFjY291bnQtcHJpb3JpdHkgTkNBLUlEOlBSSU9SSVRZYCB8IFBlci1h" + - "Y2NvdW50IHByaW9yaXR5IG92ZXJyaWRlOyByZXBlYXRhYmxlOyBzdXBwb3J0cyB1cCB0byA2NCBk" + - "aXN0aW5jdCBOQ0EgSUQgb3ZlcnJpZGVzLiBSZXF1aXJlcyBhIGRlZmF1bHQgcHJpb3JpdHkuIHwg" + - "LSB8CgpJbiBKU09OLCBgZnVuY3Rpb24gdXBkYXRlYCBhY2NlcHRzIGBtb2RlbFVwZGF0ZXNbXWAg" + - "ZW50cmllcyB3aXRoIGBtb2RlbE5hbWVgIGFuZCBgbGxtQ29uZmlnLnJvdXRpbmdNZXRob2RgIGFu" + - "ZC9vciBgbGxtQ29uZmlnLnRva2VuUmF0ZUxpbWl0YC4gYHVyaXNgIGFyZSBjcmVhdGUtdGltZSBt" + - "b2RlbCBtZXRhZGF0YSBhbmQgYXJlIG5vdCBwYXJ0IG9mIG1vZGVsIHVwZGF0ZXMuCgojIyBgZnVu" + - "Y3Rpb24gZGVwbG95IGNyZWF0ZWAtc3BlY2lmaWMKCmAtLWlucHV0LWZpbGUgRklMRWAgaXMgcmVj" + - "b21tZW5kZWQgKGZ1bGwgSlNPTiBzcGVjKS4gRm9yIGFkLWhvYyBvbmUtc2hvdCB1c2U6Cgp8IEZs" + - "YWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS1mdW5jdGlvbi1pZCBJ" + - "RGAgfCBGdW5jdGlvbiBJRCAocmVxdWlyZWQpIHwgLSB8CnwgYC0tZ3B1IE5BTUVgIHwgR1BVIGZh" + - "bWlseSB8IGBIMTAwYCB8CnwgYC0taW5zdGFuY2UtdHlwZSBUWVBFYCB8IFNLVSB8IGBOQ1AuR1BV" + - "LkgxMDBfMXhgIHwKfCBgLS1taW4taW5zdGFuY2VzIE5gIHwgTWluIHJlcGxpY2FzIHwgYDFgIHwK" + - "fCBgLS1tYXgtaW5zdGFuY2VzIE5gIHwgTWF4IHJlcGxpY2FzIHwgYDFgIHwKfCBgLS1tYXgtcmVx" + - "dWVzdC1jb25jdXJyZW5jeSBOYCB8IENvbmN1cnJlbmN5IHwgYDBgICh1bnNldDsgc2VydmVyIGRl" + - "ZmF1bHQgYXBwbGllcykgfAp8IGAtLWNsdXN0ZXJzIE5BTUVbLE5BTUVdYCB8IFRhcmdldCBzcGVj" + - "aWZpYyBjb21wdXRlIGNsdXN0ZXJzIHwgKGFueSBtYXRjaGluZyBTS1UpIHwKCiMjIGB0YXNrIGNy" + - "ZWF0ZWAtc3BlY2lmaWMKCmAtLWlucHV0LWZpbGUgRklMRWAgaXMgcmVjb21tZW5kZWQgZm9yIHJl" + - "cGVhdGFibGUgdGFzayBkZWZpbml0aW9ucy4gRm9yIGFkLWhvYyB1c2U6Cgp8IEZsYWcgfCBQdXJw" + - "b3NlIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18CnwgYC0tbmFtZSBOQU1FYCB8IFRhc2sgbmFtZSAo" + - "cmVxdWlyZWQpIHwgMS0xMjggY2hhcnMsIGBeW2EtejAtOUEtWl1bYS16MC05QS1aXC1fXSokYCB8" + - "CnwgYC0tZ3B1IEdQVWAgfCBHUFUgbmFtZSAocmVxdWlyZWQgd2l0aG91dCBgLS1pbnB1dC1maWxl" + - "YCkgfCBFeGFtcGxlOiBgSDEwMGAgfAp8IGAtLWluc3RhbmNlLXR5cGUgVFlQRWAgfCBJbnN0YW5j" + - "ZSB0eXBlIChyZXF1aXJlZCB3aXRob3V0IGAtLWlucHV0LWZpbGVgKSB8IEV4YW1wbGU6IGBOQ1Au" + - "R1BVLkgxMDBfMXhgIHwKfCBgLS1pbWFnZSBJTUFHRWAgfCBDb250YWluZXIgaW1hZ2UgfCBNdXR1" + - "YWxseSBleGNsdXNpdmUgd2l0aCBgLS1oZWxtLWNoYXJ0YCB8CnwgYC0taGVsbS1jaGFydCBDSEFS" + - "VGAgfCBIZWxtIGNoYXJ0IFVSTCBvciBPQ0kgcmVmZXJlbmNlIHwgTXV0dWFsbHkgZXhjbHVzaXZl" + - "IHdpdGggYC0taW1hZ2VgIHwKfCBgLS1pbnB1dC1maWxlIEZJTEVgIHwgSlNPTiB0YXNrIHNwZWMg" + - "ZmlsZSB8IENMSSBmbGFncyBvdmVycmlkZSBKU09OIHZhbHVlcyB3aGVuIGJvdGggYXJlIHNldCB8" + - "CnwgYC0tYmFja2VuZCBCQUNLRU5EYCB8IEJhY2tlbmQgLyBDU1AgfCAtIHwKfCBgLS1jbHVzdGVy" + - "cyBOQU1FWyxOQU1FXWAgfCBTcGVjaWZpYyBjbHVzdGVycyB3aXRoaW4gdGhlIGluc3RhbmNlIHwg" + - "Q29tbWEtc2VwYXJhdGVkIHwKfCBgLS1jb250YWluZXItYXJncyBBUkdTYCB8IEFyZ3MgcGFzc2Vk" + - "IHdoZW4gbGF1bmNoaW5nIHRoZSBjb250YWluZXIgfCBTaW5nbGUgc3RyaW5nLCBlLmcuIGAiLS1l" + - "cG9jaHMgMTAgLS1iYXRjaC1zaXplIDMyImAgfAp8IGAtLWNvbnRhaW5lci1lbnYgTkFNRT12YWx1" + - "ZWAgfCBDb250YWluZXIgZW52aXJvbm1lbnQgdmFyaWFibGU7IHJlcGVhdGFibGUgfCAtIHwKfCBg" + - "LS1zZWNyZXRzIE5BTUU9dmFsdWVgIHwgU2VjcmV0IGVudmlyb25tZW50IHZhcmlhYmxlOyByZXBl" + - "YXRhYmxlOyBlbmNyeXB0ZWQgYXQgcmVzdCB8IC0gfAp8IGAtLW1heC1ydW50aW1lIERVUkFUSU9O" + - "YCB8IE1heCB3YWxsLWNsb2NrIHJ1biB0aW1lIChJU08gODYwMSwgZS5nLiBgUFQ0SGApIHwgTm8g" + - "ZGVmYXVsdDsgb21pdCBmb3Igbm8gdGltZSBsaW1pdCB8CnwgYC0tbWF4LXF1ZXVlZCBEVVJBVElP" + - "TmAgfCBNYXggdGltZSBpbiBxdWV1ZSBiZWZvcmUgY2FuY2VsbGF0aW9uIChJU08gODYwMSkgfCBT" + - "ZXJ2ZXIgZGVmYXVsdCBgUFQ3MkhgIHwKfCBgLS10ZXJtaW5hdGlvbi1ncmFjZSBEVVJBVElPTmAg" + - "fCBHcmFjZSBwZXJpb2QgYWZ0ZXIgc3RvcCBzaWduYWwgKElTTyA4NjAxKSB8IFNlcnZlciBkZWZh" + - "dWx0IGBQVDFIYCB8CnwgYC0tcmVzdWx0LXN0cmF0ZWd5IFVQTE9BRFx8Tk9ORWAgfCBIb3cgdG8g" + - "aGFuZGxlIHRhc2sgb3V0cHV0IGFydGlmYWN0cyB8IC0gfAp8IGAtLXJlc3VsdHMtbG9jYXRpb24g" + - "TE9DQVRJT05gIHwgUmVzdWx0IHVwbG9hZCB0YXJnZXQsIGZvcm1hdCBgb3JnLW5hbWUvW3RlYW0t" + - "bmFtZS9dbW9kZWwtbmFtZWA7IHJlcXVpcmVkIHdoZW4gYC0tcmVzdWx0LXN0cmF0ZWd5PVVQTE9B" + - "RGAgfCAtIHwKfCBgLS1tb2RlbHMgTkFNRTpWRVJTSU9OOlVSSWAgfCBNb2RlbCBhcnRpZmFjdDsg" + - "cmVwZWF0YWJsZSB8IC0gfAp8IGAtLXJlc291cmNlcyBOQU1FOlZFUlNJT046VVJJYCB8IFJlc291" + - "cmNlIGFydGlmYWN0OyByZXBlYXRhYmxlIHwgLSB8CnwgYC0tdGFncyBUQUdbLFRBR11gIHwgVGFz" + - "ayB0YWdzIHwgQ29tbWEtc2VwYXJhdGVkIHwKfCBgLS1kZXNjcmlwdGlvbiBURVhUYCB8IFRhc2sg" + - "ZGVzY3JpcHRpb24gfCAtIHwKfCBgLS1sb2dzLXRlbGVtZXRyeS1pZCBVVUlEYCB8IExvZ3MgdGVs" + - "ZW1ldHJ5IGVuZHBvaW50IElEIHwgLSB8CnwgYC0tbWV0cmljcy10ZWxlbWV0cnktaWQgVVVJRGAg" + - "fCBNZXRyaWNzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfAp8IGAtLXRyYWNlcy10ZWxlbWV0" + - "cnktaWQgVVVJRGAgfCBUcmFjZXMgdGVsZW1ldHJ5IGVuZHBvaW50IElEIHwgLSB8ClBLBwhbBfsn" + - "tTQAALU0AABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAADcACQBkYXRhL252Y2Ytc2VsZi1tYW5h" + - "Z2VkLWNsaS9yZWZlcmVuY2UvdHJvdWJsZXNob290aW5nLm1kVVQFAAEAps4SIyBUcm91Ymxlc2hv" + - "b3RpbmcKCktub3duIGVycm9ycyDihpIgZGlhZ25vc3RpYyBjb21tYW5kIOKGkiByZW1lZGlhdGlv" + - "bi4gS2VlcCBpbiBzeW5jIHdpdGggdGhlIHN0cnVjdHVyZWQgYHBoYXNlX2ZhaWxlZGAgZXZlbnRz" + - "IHRoZSBDTEkgZW1pdHMgKFJFUS0xNSkg4oCUIGV2ZXJ5IGVudHJ5IGJlbG93IHNob3VsZCBtYXAg" + - "dG8gYW4gYGVyckNhdGVnb3J5YCBhbmQgYSBgcmVtZWRpYXRpb25gIGFycmF5LgoKIyMgUHJlLWZs" + - "aWdodAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBg" + - "a3ViZWN0bCBub3Qgb24gUEFUSGAgfCBPcGVyYXRvcidzIGAkUEFUSGAgZG9lc24ndCBpbmNsdWRl" + - "IGt1YmVjdGwgfCBJbnN0YWxsIGt1YmVjdGwgMS4yOCs6IGh0dHBzOi8va3ViZXJuZXRlcy5pby9k" + - "b2NzL3Rhc2tzL3Rvb2xzL2luc3RhbGwta3ViZWN0bC8gfAp8IGBoZWxtZmlsZSBub3Qgb24gUEFU" + - "SGAgfCBTYW1lIHwgaHR0cHM6Ly9naXRodWIuY29tL2hlbG1maWxlL2hlbG1maWxlI2luc3RhbGxh" + - "dGlvbiB8CnwgYGhlbG0gbm90IG9uIFBBVEhgIHwgU2FtZSB8IGh0dHBzOi8vaGVsbS5zaC9kb2Nz" + - "L2ludHJvL2luc3RhbGwvIHwKfCBgR2F0ZXdheSBBUEkgQ1JEcyBub3QgaW5zdGFsbGVkYCB8IGVu" + - "dm95LWdhdGV3YXkgcHJlcmVxIG1pc3NpbmcgfCBgaGVsbSBpbnN0YWxsIGVnIG9jaTovL2RvY2tl" + - "ci5pby9lbnZveXByb3h5L2dhdGV3YXktaGVsbSAtLW5hbWVzcGFjZT1lbnZveS1nYXRld2F5LXN5" + - "c3RlbSAtLWNyZWF0ZS1uYW1lc3BhY2VgIHwKfCBgZGVmYXVsdCBTdG9yYWdlQ2xhc3Mgbm90IGF2" + - "YWlsYWJsZWAgfCBDbHVzdGVyIGhhcyBubyBkZWZhdWx0IFNDIHwgQW5ub3RhdGUgb25lOiBga3Vi" + - "ZWN0bCBwYXRjaCBzYyA8bmFtZT4gLXAgJ3sibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsic3Rv" + - "cmFnZWNsYXNzLmt1YmVybmV0ZXMuaW8vaXMtZGVmYXVsdC1jbGFzcyI6InRydWUifX19J2AgfAp8" + - "IGBHUFUgb3BlcmF0b3Igbm90IGluc3RhbGxlZGAgKGNvbXB1dGUtcGxhbmUpIHwgbnZpZGlhIEdQ" + - "VSBvcGVyYXRvciBtaXNzaW5nIHwgSW5zdGFsbCBwZXIgaHR0cHM6Ly9kb2NzLm52aWRpYS5jb20v" + - "ZGF0YWNlbnRlci9jbG91ZC1uYXRpdmUvZ3B1LW9wZXJhdG9yL2xhdGVzdC9pbnN0YWxsLWdwdS1v" + - "cGVyYXRvci5odG1sLCBPUiB1c2UgYGZha2UtZ3B1LW9wZXJhdG9yYCBmb3IgZGV2IHwKfCBgR1BV" + - "IG5vZGUgbGFiZWxzIG1pc3NpbmdgIChjb21wdXRlLXBsYW5lKSB8IE5vZGVzIG5lZWQgYG52aWRp" + - "YS5jb20vZ3B1LmZhbWlseWAgZXRjLiB8IFNldCBgLS1rM3Mtbm9kZS1sYWJlbCBudmlkaWEuY29t" + - "L2dwdS5mYW1pbHk9aG9wcGVyQGFnZW50Ok5gIGZvciBrM2QgfAoKIyMgQXV0aAoKfCBTeW1wdG9t" + - "IHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBgYWRtaW4gdG9rZW4gcmVx" + - "dWlyZWRgIChpbml0IG5vdCBydW4pIHwgTm8gYH4vLm52Y2YtY2xpLnN0YXRlYCBhbmQgYC0tdG9r" + - "ZW5gIG5vdCBwYXNzZWQgfCBgbnZjZi1jbGkgaW5pdGAgKGludGVyYWN0aXZlKSBvciBgLS10b2tl" + - "bj0kSldUIC0tbm9uLWludGVyYWN0aXZlYCAoQ0kpIHwKfCBgU2lnbmVkIEpXVCByZWplY3RlZDog" + - "QW5vdGhlciBhbGdvcml0aG0gZXhwZWN0ZWQsIG9yIG5vIG1hdGNoaW5nIGtleShzKSBmb3VuZGAg" + - "fCBTdGFsZSBzZXNzaW9uLmpzb24gZnJvbSBhIGRpZmZlcmVudCBjb250cm9sIHBsYW5lIHwgYHJt" + - "IH4vLm52Y2YtY2xpLnN0YXRlYCB0aGVuIGBudmNmLWNsaSBpbml0YCBhZ2FpbiB8CnwgYDQwMyBt" + - "aXNzaW5nIHJlcXVlc3RlZCBhdXRob3JpdGllc2AgKGZ1bmN0aW9uIGludm9rZSkgfCBBZG1pbiB0" + - "b2tlbiBkb2Vzbid0IGhhdmUgYGludm9rZV9mdW5jdGlvbmAgc2NvcGUgfCBgbnZjZi1jbGkgYXBp" + - "LWtleSBnZW5lcmF0ZSAtLWRlc2NyaXB0aW9uPeKApmAgdGhlbiByZS1ydW4gaW52b2tlIHwKCiMj" + - "IEluc3RhbGwgLyBgdXBgCgp8IFN5bXB0b20gfCBDYXVzZSB8IFJlbWVkaWF0aW9uIHwKfC0tLXwt" + - "LS18LS0tfAp8IEhlbG0gYHRpbWVkIG91dCB3YWl0aW5nIGZvciBjYXNzYW5kcmFgIHwgQ2Fzc2Fu" + - "ZHJhIFN0YXRlZnVsU2V0IFBWQyBzdHVjayBgUGVuZGluZ2AgfCBDb25maXJtIGRlZmF1bHQgU3Rv" + - "cmFnZUNsYXNzOyBjaGVjayBga3ViZWN0bCBnZXQgcHYscHZjIC1uIGNhc3NhbmRyYS1zeXN0ZW1g" + - "IHwKfCBgSW52YWxpZCBHUFUgJ05DUC5HUFUuSDEwMCcgc3BlY2lmaWVkYCAoZnVuY3Rpb24gZGVw" + - "bG95KSB8IFdyb25nIGZpZWxkIOKAlCBgZ3B1YCBpcyB0aGUgZmFtaWx5LCBub3QgdGhlIFNLVSB8" + - "IFVzZSBgImdwdSI6ICJIMTAwImAsIGAiaW5zdGFuY2VUeXBlIjogIk5DUC5HUFUuSDEwMF8xeCJg" + - "IHwKfCBgcmVnaW9uIG11c3QgYmUgcHJvdmlkZWRgIChjbHVzdGVyIHJlZ2lzdGVyIC8gaW5zdGFs" + - "bCAtLWNvbXB1dGUtcGxhbmUpIHwgYC0tcmVnaW9uYCBlbXB0eSArIGBDTFVTVEVSX1JFR0lPTmAg" + - "ZW52IGVtcHR5IHwgUGFzcyBgLS1yZWdpb249dXMtd2VzdC0xYCAob3IgYW55IG5vbi1lbXB0eSB2" + - "YWx1ZSkgfAp8IGByZXF1aXJlZEVudiAiTkNBX0lEIiBpcyBub3Qgc2V0YCAoaGVsbWZpbGUgZXJy" + - "b3IgZHVyaW5nIGNvbXB1dGUtcGxhbmUgYXBwbHkpIHwgT2xkZXIgbnZjZi1jbGkgYmVmb3JlIGNv" + - "bW1pdCBgNmFhNTcwNGA7IEV4dHJhRW52IG5vdCBwcm9wYWdhdGluZyBOQ0FfSUQgfCBVcGdyYWRl" + - "IGBudmNmLWNsaWAgdG8gYSByZWxlYXNlIGFmdGVyIGA2YWE1NzA0YCB8CnwgYG52Y2Etb3BlcmF0" + - "b3I6IEltYWdlUHVsbEJhY2tPZmZgIGZvciBgbnZjYS1vcGVyYXRvcjpwc2F0YCB8IEltYWdlIG5v" + - "dCBpbiBjbHVzdGVyIHJlZ2lzdHJ5OyBtdWx0aS1jbHVzdGVyIGJ1aWxkIGlzIGxvY2FsIHwgYGsz" + - "ZCBpbWFnZSBpbXBvcnQgbnZjci5pby8uLi4vbnZjYS1vcGVyYXRvcjpwc2F0IC1jIDxjbHVzdGVy" + - "PmAgfAoKIyMgQ29tcHV0ZS1wbGFuZSBydW50aW1lCgp8IFN5bXB0b20gfCBDYXVzZSB8IFJlbWVk" + - "aWF0aW9uIHwKfC0tLXwtLS18LS0tfAp8IE5WQ0EgYWdlbnQgQ3Jhc2hMb29wQmFja09mZiB3aXRo" + - "IGBIVFRQIDQwMWAgb24gYC92MS9udmNhL2NsdXN0ZXJzLy4uLi9yZWdpc3RlcmAgfCBTdGFsZSBg" + - "b3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgZnJvbSBwcmlvciByZWdpc3Rlcjsg" + - "Y2x1c3RlciBJRCBkb2Vzbid0IG1hdGNoIElDTVMgfCBEZWxldGUgdGhlIHN0YWxlIGZpbGU7IHJl" + - "LXJ1biBgbnZjZi1jbGkgc2VsZi1ob3N0ZWQgdXBgIChpZGVtcG90ZW50IHJlZ2lzdGVyIHdyaXRl" + - "cyBhIGZyZXNoIGZpbGUpIHwKfCBgTm8gY2x1c3RlciBmb3VuZCB3aXRoIHZhbGlkIEpXS1MgZm9y" + - "IGNsdXN0ZXIgSUQ6IDxpZD5gIChJQ01TIGxvZykgfCBKV0tTIGluIElDTVMgZG9lc24ndCBtYXRj" + - "aCB3aGF0IGNvbXB1dGUtcGxhbmUgSzhzIGlzIGN1cnJlbnRseSBzaWduaW5nIHwgYG52Y2YtY2xp" + - "IGNsdXN0ZXIgcm90YXRlIC0tY2x1c3Rlci1pZD08aWQ+YCB8CnwgRnVuY3Rpb24gcG9kIGBJbWFn" + - "ZVB1bGxCYWNrT2ZmYCBpbiBgbnZjZi1iYWNrZW5kYCB8IEltYWdlLWNyZWRlbnRpYWwtaGVscGVy" + - "IGNvbmZpZyBtaXNzaW5nIG9yIHdyb25nIHwgYGt1YmVjdGwgZGVzY3JpYmUgcG9kIC1uIG52Y2Yt" + - "YmFja2VuZCA8cG9kPmA7IGNoZWNrIHRoZSBwdWxsIHNlY3JldCBjb25maWcgfAp8IEZ1bmN0aW9u" + - "IGRlcGxveSBzdHVjayBgREVQTE9ZSU5HYCBmb3IgPjUgbWluIHwgTkFUUyBzdHJlYW0gaW5pdCBs" + - "YWcgKGNvbGQtY2x1c3Rlcikg4oCUIHdhaXQsIG9yIGNoZWNrIE5BVFMgYXV0aC1jYWxsb3V0IGhl" + - "YWx0aCB8IGBrdWJlY3RsIGxvZ3MgLW4gbmF0cy1zeXN0ZW0gLWwgYXBwLmt1YmVybmV0ZXMuaW8v" + - "bmFtZT1uYXRzLWF1dGgtY2FsbG91dC1zZXJ2aWNlYCB8CgojIyBUYXNrcwoKfCBTeW1wdG9tIHwg" + - "Q2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBgdGFzayBjcmVhdGVgIHJldHVy" + - "bnMgYE1pc3NpbmcgPFRZUEU+IHJlZ2lzdHJ5IGNyZWRlbnRpYWwgZm9yIGhvc3RuYW1lYCwgb3Ig" + - "a2VlcHMgdXNpbmcgYSBwcmV2aW91cyBjcmVkZW50aWFsIHZhbHVlLCBzaG9ydGx5IGFmdGVyIGBy" + - "ZWdpc3RyeS1jcmVkZW50aWFsIGFkZC91cGRhdGUvZGVsZXRlYCB3aGlsZSBgcmVnaXN0cnktY3Jl" + - "ZGVudGlhbCBsaXN0YC9gZ2V0YCBhbHJlYWR5IHNob3cgdGhlIG5ldyB2YWx1ZSB8IEV4cGVjdGVk" + - "IHByb3BhZ2F0aW9uIGRlbGF5OiBOVkNUIGNhY2hlcyB0aGUgYWNjb3VudCdzIHJlZ2lzdHJ5IGNy" + - "ZWRlbnRpYWxzIHdpdGggYG52Y3QubnZjZi5jYWNoZS10dGxgIChkZWZhdWx0IGBQVDVNYCwgYWJv" + - "dXQgNSBtaW4pIGFuZCBhcHBsaWVzIHRoZSBjaGFuZ2Ugd2hlbiB0aGF0IGNhY2hlZCBjb3B5IHJl" + - "ZnJlc2hlcyB8IFdhaXQgdXAgdG8gYWJvdXQgNSBtaW4gYW5kIHJldHJ5LCBvciBga3ViZWN0bCAt" + - "biBudmNmIHJvbGxvdXQgcmVzdGFydCBkZXBsb3ltZW50L252Y3QtYXBpYCB0byBhcHBseSBpbW1l" + - "ZGlhdGVseSB8ClBLBwjzrhOEdBEAAHQRAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAACwACQBk" + - "YXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5tZFVUBQABAKbOEi0tLQpu" + - "YW1lOiBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24KZGVzY3JpcHRpb246ID4tCiAgSW5z" + - "dGFsbCBhbmQgb3BlcmF0ZSBOVkNGIHNlbGYtaG9zdGVkIGNvbnRyb2wtcGxhbmUgYW5kIHNlcGFy" + - "YXRlIGNvbXB1dGUtcGxhbmUKICBzdGFja3MuIENvdmVycyBIZWxtZmlsZSB2YWx1ZXMgYW5kIENM" + - "SSBwcm9maWxlIGluc3RhbGxhdGlvbiBmbG93cywgdGVhcmRvd24sCiAgdmFsdWVzIG92ZXJyaWRl" + - "cywgcHVsbCBzZWNyZXRzLCBhbmQgdHJvdWJsZXNob290aW5nLiBVc2UgZm9yCiAgbnZjZi1zZWxm" + - "LW1hbmFnZWQtc3RhY2ssIG52Y2YtY29tcHV0ZS1wbGFuZS1zdGFjaywgc3BsaXQgY29tcHV0ZS1w" + - "bGFuZQogIGluc3RhbGxhdGlvbiwgY29udHJvbC1wbGFuZSBpbnN0YWxsYXRpb24sIENMSS1nZW5l" + - "cmF0ZWQgY29udHJvbC1wbGFuZQogIHByb2ZpbGVzLCBIZWxtZmlsZSwgc2VsZi1tYW5hZ2VkLCBv" + - "ciBzZWxmLWhvc3RlZCBkZXBsb3ltZW50cy4gRG8gTk9UIHVzZSBmb3IKICBsb2NhbCBrM2QgZW52" + - "aXJvbm1lbnRzOyB1c2UgdGhlIGxvY2FsIGszZCBkZXZlbG9wbWVudCB3b3JrZmxvdyBpbnN0ZWFk" + - "LgpsaWNlbnNlOiBBcGFjaGUtMi4wCmNvbXBhdGliaWxpdHk6IFJlcXVpcmVzIGhlbG1maWxlID49" + - "IDEuMS4wIDwgMS4yLjAsIGhlbG0gPj0gMy4xMiwgaGVsbS1kaWZmIHBsdWdpbiwga3ViZWN0bCBt" + - "YXRjaGluZyBjbHVzdGVyIHZlcnNpb24KYXV0aG9yOiAibnZjZi1jb3JlLWVuZyA8bnZjZi1jb3Jl" + - "LWVuZ0BleGNoYW5nZS5udmlkaWEuY29tPiIKdmVyc2lvbjogIjEuMC4wIgp0YWdzOiBbbnZjZiwg" + - "c2VsZi1tYW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQsIGNvbnRyb2wtcGxhbmUsIGNvbXB1" + - "dGUtcGxhbmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24sIGRlcGxveW1lbnQsIHB1bGwtc2Vj" + - "cmV0c10KdG9vbHM6IFtTaGVsbCwgUmVhZCwgRWRpdCwgR3JlcCwgR2xvYl0KbWV0YWRhdGE6CiAg" + - "aW50ZXJuYWw6IGZhbHNlCiAgYXV0aG9yOiAibnZjZi1jb3JlLWVuZyA8bnZjZi1jb3JlLWVuZ0Bl" + - "eGNoYW5nZS5udmlkaWEuY29tPiIKICB2ZXJzaW9uOiAiMS4wIgogIHRhZ3M6IFtudmNmLCBzZWxm" + - "LW1hbmFnZWQsIGhlbG1maWxlLCBzZWxmLWhvc3RlZCwgY29udHJvbC1wbGFuZSwgY29tcHV0ZS1w" + - "bGFuZSwgY2xpLXByb2ZpbGUsIGluc3RhbGxhdGlvbiwgZGVwbG95bWVudCwgcHVsbC1zZWNyZXRz" + - "XQogIGxhbmd1YWdlczogW2Jhc2gsIHlhbWxdCiAgZnJhbWV3b3JrczogW2hlbG1maWxlLCBoZWxt" + - "LCBrdWJlY3RsXQogIGRvbWFpbjogY2xvdWQtaW5mcmFzdHJ1Y3R1cmUKLS0tCgojIE5WQ0YgU2Vs" + - "Zi1NYW5hZ2VkIFN0YWNrIE9wZXJhdGlvbnMKCk9wZXJhdGlvbmFsIGd1aWRlIGZvciBtYXRjaGlu" + - "ZyBOVkNGIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgSGVsbWZpbGUgYnVuZGxlcy4K" + - "CiMjIEluc3RydWN0aW9ucwoKVXNlIHRoaXMgc2tpbGwgZm9yIGluc3RhbGwsIHVwZ3JhZGUsIG9y" + - "IHRlYXJkb3duIHdvcmsgaW4gbWF0Y2hpbmcgYG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrYCBhbmQg" + - "YG52Y2YtY29tcHV0ZS1wbGFuZS1zdGFja2AgYnVuZGxlczsga2VlcCBIZWxtZmlsZSB2YWx1ZXMg" + - "YW5kIENMSSBwcm9maWxlIGhhbmRvZmZzIHNlcGFyYXRlLiBGb3IgYGZ1bmN0aW9uVHlwZTogIkxM" + - "TSJgLCByZWFkIFtMTE0gRnVuY3Rpb24gRW5hYmxlbWVudF0ocmVmZXJlbmNlcy9oZWxtZmlsZS1z" + - "dHJ1Y3R1cmUubWQjbGxtLWZ1bmN0aW9uLWVuYWJsZW1lbnQpLgoKIyMgUHJlcmVxdWlzaXRlcwoK" + - "QXNrIGZvciB0aGUgZXh0cmFjdGVkIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFja2AgcGF0aC4gRm9y" + - "IHNwbGl0IGluc3RhbGxhdGlvbiwKYWxzbyByZXF1aXJlIHRoZSBtYXRjaGluZy12ZXJzaW9uIGBu" + - "dmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIHBhdGguIFZlcmlmeSBib3RoOgoKYGBgYmFzaApscyA8" + - "Y29udHJvbC1wbGFuZS1zdGFjaz4vaGVsbWZpbGUuZC8gPGNvbnRyb2wtcGxhbmUtc3RhY2s+L2Vu" + - "dmlyb25tZW50cy8gPGNvbnRyb2wtcGxhbmUtc3RhY2s+L3NlY3JldHMvIDxjb250cm9sLXBsYW5l" + - "LXN0YWNrPi9nbG9iYWwueWFtbC5nb3RtcGwKbHMgPGNvbXB1dGUtcGxhbmUtc3RhY2s+L2hlbG1m" + - "aWxlLmQvIDxjb21wdXRlLXBsYW5lLXN0YWNrPi9lbnZpcm9ubWVudHMvIDxjb21wdXRlLXBsYW5l" + - "LXN0YWNrPi9nbG9iYWwueWFtbC5nb3RtcGwKYGBgCgpJZiBlaXRoZXIgZGlyZWN0b3J5IGlzIG1p" + - "c3NpbmcsIGRvd25sb2FkIG1hdGNoaW5nIGJ1bmRsZSB2ZXJzaW9ucyBmcm9tIE5HQzoKCmBgYGJh" + - "c2gKbmdjIHJlZ2lzdHJ5IHJlc291cmNlIGRvd25sb2FkLXZlcnNpb24gPG9yZz4vbnZjZi1zZWxm" + - "LW1hbmFnZWQtc3RhY2s6PHZlcnNpb24+Cm5nYyByZWdpc3RyeSByZXNvdXJjZSBkb3dubG9hZC12" + - "ZXJzaW9uIDxvcmc+L252Y2YtY29tcHV0ZS1wbGFuZS1zdGFjazo8dmVyc2lvbj4KYGBgCgpDb250" + - "cm9sLXBsYW5lIGNvbW1hbmRzIGJlbG93IGFzc3VtZSB0aGUgY29udHJvbC1wbGFuZSBidW5kbGUg" + - "cm9vdC4gU3BsaXQtZmxvdwpjb21tYW5kcyBhbmQgcm9vdCBzdWJzdGl0dXRpb24gYXJlIGluCltT" + - "cGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5l" + - "LWluc3RhbGxhdGlvbi5tZCkuCgojIyBCZWZvcmUgWW91IFN0YXJ0CgpWZXJpZnkgdG9vbGluZyBh" + - "bmQgY29udGV4dCBiZWZvcmUgYW55IG9wZXJhdGlvbjoKCmBgYGJhc2gKaGVsbWZpbGUgLS12ZXJz" + - "aW9uICAgIyBNdXN0IGJlIDEuMS54ICgxLjIuMCByZW1vdmVkIHNlcXVlbnRpYWwgbW9kZSkKaGVs" + - "bSB2ZXJzaW9uICAgICAgICAgIyBNdXN0IGJlID49IDMuMTIKaGVsbSBwbHVnaW4gbGlzdCAgICAg" + - "IyBNdXN0IGluY2x1ZGUgaGVsbS1kaWZmID49IDMuMTEKa3ViZWN0bCB2ZXJzaW9uICAgICAgIyBD" + - "bGllbnQgbXVzdCBiZSB3aXRoaW4gMSBtaW5vciB2ZXJzaW9uIG9mIGNsdXN0ZXIKYGBgCgpDb250" + - "cm9sLXBsYW5lIGNvbW1hbmRzIHJ1biBmcm9tIHRoZSBleHRyYWN0ZWQgYG52Y2Ytc2VsZi1tYW5h" + - "Z2VkLXN0YWNrL2Agcm9vdDoKCmBgYGJhc2gKY2QgcGF0aC90by9udmNmLXNlbGYtbWFuYWdlZC1z" + - "dGFjawpscyBoZWxtZmlsZS5kLyBlbnZpcm9ubWVudHMvIHNlY3JldHMvIGdsb2JhbC55YW1sLmdv" + - "dG1wbApgYGAKCklkZW50aWZ5IHRoZSBlbnZpcm9ubWVudCBmcm9tIGBlbnZpcm9ubWVudHMvPG5h" + - "bWU+LnlhbWxgIGFuZApgc2VjcmV0cy88bmFtZT4tc2VjcmV0cy55YW1sYDsgZm9yIEVLUywgdXNl" + - "IHRoZSBjYW5vbmljYWwKW0NTUCBFbmQtdG8tRW5kIEV4YW1wbGVdKGh0dHBzOi8vZG9jcy5udmlk" + - "aWEuY29tL252Y2YvdjAuNi4wLXJjL2NzcC1lbmQtdG8tZW5kLWV4YW1wbGUpLgoKIyMgSG93IFZh" + - "bHVlcyBGbG93CgpVbmRlcnN0YW5kaW5nIHZhbHVlIHByZWNlZGVuY2UgcHJldmVudHMgdGhlIG1v" + - "c3QgY29tbW9uIGNvbmZpZ3VyYXRpb24gbWlzdGFrZXMuCgpgYGB0ZXh0CmVudmlyb25tZW50cy9i" + - "YXNlLnlhbWwgICAgICAgICAgKGRlZmF1bHRzKQogICAgLT4gbWVyZ2VkIHdpdGgKZW52aXJvbm1l" + - "bnRzLzxlbnY+LnlhbWwgICAgICAgICAoeW91ciBvdmVycmlkZXMpCiAgICAtPiBjb25zdW1lZCBi" + - "eQpnbG9iYWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgIChHbyB0ZW1wbGF0ZSwgY29uc3RydWN0" + - "cyBwZXItY2hhcnQgdmFsdWVzKQogICAgLT4gY29uc3VtZWQgYnkKc2VjcmV0cy88ZW52Pi1zZWNy" + - "ZXRzLnlhbWwgICAgICAoc2Vuc2l0aXZlIHZhbHVlcykKICAgIC0+IG92ZXJyaWRkZW4gYnkKcmVs" + - "ZWFzZSBpbmxpbmUgdmFsdWVzOiBibG9ja3MgICAoaGlnaGVzdCBwcmVjZWRlbmNlKQpgYGAKCkNy" + - "aXRpY2FsOiBgZ2xvYmFsLnlhbWwuZ290bXBsYCBvbmx5IHBhc3NlcyB0aHJvdWdoIHNwZWNpZmlj" + - "IGtleXMgdG8gZWFjaCBjaGFydCAoaW1hZ2UgcmVnaXN0cmllcywgbm9kZSBzZWxlY3RvcnMsIHN0" + - "b3JhZ2UsIHJlcGxpY2EgY291bnRzKS4gU2V0dGluZyBhbiBhcmJpdHJhcnkgY2hhcnQgdmFsdWUg" + - "aW4gdGhlIGVudmlyb25tZW50IGZpbGUgd2lsbCBiZSBzaWxlbnRseSBpZ25vcmVkIGlmIGBnbG9i" + - "YWwueWFtbC5nb3RtcGxgIGRvZXMgbm90IHByb3BhZ2F0ZSBpdC4KClRvIG92ZXJyaWRlIGFyYml0" + - "cmFyeSBjaGFydCB2YWx1ZXMsIHVzZSBhIGhlbG1maWxlIHJlbGVhc2UgYHZhbHVlczpgIGJsb2Nr" + - "LiBTZWUgW092ZXJyaWRpbmcgSGVsbSBDaGFydCBWYWx1ZXNdKCNvdmVycmlkaW5nLWhlbG0tY2hh" + - "cnQtdmFsdWVzKS4KCiMjIENsZWFuIEluc3RhbGxhdGlvbgoKIyMjIDEuIENyZWF0ZSBuYW1lc3Bh" + - "Y2VzIGFuZCBpbWFnZSBwdWxsIHNlY3JldHMgKGlmIHVzaW5nIGEgcHJpdmF0ZSByZWdpc3RyeSkK" + - "CmBgYGJhc2gKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkt" + - "a2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCBjcmVh" + - "dGUgbmFtZXNwYWNlICIkbnMiIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBw" + - "bHkgLWYgLQpkb25lCgojIE9ubHkgaWYgcHVsbGluZyBmcm9tIGEgcHJpdmF0ZSByZWdpc3RyeSAo" + - "ZS5nLiwgTkdDIG52Y3IuaW8pCmV4cG9ydCBOR0NfQVBJX0tFWT0iPHlvdXIta2V5PiIKZm9yIG5z" + - "IGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBlc3Mgc2lzIHZh" + - "dWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCBjcmVhdGUgc2VjcmV0IGRvY2tl" + - "ci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgIC0tZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAg" + - "IC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogICAgLS1kb2NrZXItcGFzc3dvcmQ9" + - "IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3BhY2U9IiRucyIgXAogICAgLS1kcnktcnVuPWNs" + - "aWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCmRvbmUKYGBgCgpJZiB1c2luZyBwdWxs" + - "IHNlY3JldHMsIHlvdSBtdXN0IGFsc28gY29uZmlndXJlIGVhY2ggaGVsbWZpbGUgcmVsZWFzZSB0" + - "byByZWZlcmVuY2UgdGhlbS4gU2VlIFtJbWFnZSBQdWxsIFNlY3JldHNdKCNpbWFnZS1wdWxsLXNl" + - "Y3JldHMpLgoKIyMjIDIuIEF1dGhlbnRpY2F0ZSBoZWxtIHRvIHlvdXIgY2hhcnQgcmVnaXN0cnkK" + - "CkJvdGggYGRvY2tlciBsb2dpbmAgQU5EIGBoZWxtIHJlZ2lzdHJ5IGxvZ2luYCBhcmUgcmVxdWly" + - "ZWQgZm9yIE5HQy4gSGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0byBwdWxsIE9DSSBj" + - "aGFydHMsIHNvIHRoZSBoZWxtIGNyZWRlbnRpYWwgc3RvcmUgbXVzdCBiZSBhdXRoZW50aWNhdGVk" + - "IHNlcGFyYXRlbHkuCgpgYGBiYXNoCiMgTkdDIC0tIGJvdGggY29tbWFuZHMgYXJlIHJlcXVpcmVk" + - "CmRvY2tlciBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tlbicgLXAgIiROR0NfQVBJX0tFWSIK" + - "aGVsbSByZWdpc3RyeSBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tlbicgLXAgIiROR0NfQVBJ" + - "X0tFWSIKCiMgRUNSCmF3cyBlY3IgZ2V0LWxvZ2luLXBhc3N3b3JkIC0tcmVnaW9uIDxyZWdpb24+" + - "IHwgXAogIGhlbG0gcmVnaXN0cnkgbG9naW4gLS11c2VybmFtZSBBV1MgLS1wYXNzd29yZC1zdGRp" + - "biA8YWNjb3VudD4uZGtyLmVjci48cmVnaW9uPi5hbWF6b25hd3MuY29tCmBgYAoKPiBOb3RlOiBg" + - "aGVsbSByZWdpc3RyeSBsb2dpbmAga2VlcHMgb25seSB0aGUgbGFzdCBsb2dpbiBwZXIgaG9zdCAo" + - "bXVsdGktb3JnIGdvdGNoYSkuCj4gVGhlIHN0YWNrIGFuZCB0aGUgY2FjaGVzIHNwYW4gc2V2ZXJh" + - "bCBOR0Mgb3JncyB0aGF0IG5lZWQgZGlmZmVyZW50IGtleXMsIGJ1dCB0aGV5IGFsbAo+IGxpdmUg" + - "dW5kZXIgdGhlIG9uZSBob3N0IGBudmNyLmlvYC4gQSBzZWNvbmQgYGhlbG0gcmVnaXN0cnkgbG9n" + - "aW4gbnZjci5pb2AgKG9yCj4gYGRvY2tlciBsb2dpbmApIHdpdGggYSBkaWZmZXJlbnQga2V5IHNp" + - "bGVudGx5IG92ZXJ3cml0ZXMgdGhlIGZpcnN0LCBzbyBwdWxscyBmb3IgdGhlCj4gZmlyc3Qgb3Jn" + - "IHRoZW4gZmFpbCB3aXRoIGEgbWlzbGVhZGluZyBgNDAzIEFjY2VzcyBEZW5pZWRgIChub3QgYSA0" + - "MDE6IHRoZSBhdXRoCj4gc3VjY2VlZGVkLCBpdCdzIHRoZSB3cm9uZy1vcmcga2V5KS4gSWYgeW91" + - "IHB1bGwgY2hhcnRzL2ltYWdlcyBmcm9tIG1vcmUgdGhhbiBvbmUgb3JnLAo+IGVpdGhlciByZS1y" + - "dW4gdGhlIGxvZ2luIHdpdGggdGhlIGNvcnJlY3Qga2V5IGltbWVkaWF0ZWx5IGJlZm9yZSBlYWNo" + - "IHB1bGwsIG9yIHBhc3MKPiBgLS11c2VybmFtZSAnJG9hdXRodG9rZW4nIC0tcGFzc3dvcmQgPGtl" + - "eT5gIHBlciBgaGVsbSBwdWxsYCBpbnZvY2F0aW9uIGluc3RlYWQgb2YgcmVseWluZwo+IG9uIHRo" + - "ZSBzdG9yZWQgbG9naW4uIChQdWxsaW5nIGV2ZXJ5dGhpbmcgZnJvbSBhIHNpbmdsZSByZWdpc3Ry" + - "eSBtaXJyb3IgYXZvaWRzIHRoaXMKPiBlbnRpcmVseS4pCgojIyMgMmIuIChSZWNvbW1lbmRlZCkg" + - "UHVsbCBmcm9tIGEgcmVnaXN0cnkgdGhlIGNsdXN0ZXIgYXV0aGVudGljYXRlcyB0byBhdXRvbWF0" + - "aWNhbGx5CgpJZiB5b3UgbWlycm9yIHRoZSBOVkNGIGltYWdlcyBpbnRvIGEgcmVnaXN0cnkgdGhh" + - "dCB0aGUgY2x1c3RlciBjYW4gcHVsbCBmcm9tIHdpdGhvdXQgYW4KZXhwbGljaXQgaW1hZ2UgcHVs" + - "bCBzZWNyZXQgKGZvciBleGFtcGxlLCBhIHJlZ2lzdHJ5IHdoZXJlIHRoZSBub2RlIG9yIHdvcmts" + - "b2FkIGlkZW50aXR5IGlzCmdyYW50ZWQgcHVsbCBhY2Nlc3MgYXV0b21hdGljYWxseSksIHBvaW50" + - "IHRoZSBzdGFjayBhdCBpdCBhbmQgc2tpcCB0aGUgY3JlZGVudGlhbCBzdGVwcwphYm92ZS4KCjEu" + - "IFBvaW50IHRoZSBzdGFjayBhdCB0aGUgbWlycm9yIGluIGBlbnZpcm9ubWVudHMvPGVudj4ueWFt" + - "bGA6CgogICBgYGB5YW1sCiAgIGdsb2JhbDoKICAgICBpbWFnZToKICAgICAgIHJlZ2lzdHJ5OiA8" + - "eW91ci1yZWdpc3RyeT4gICAgICAgICAgICAjIGUuZy4gcmVnaXN0cnkuZXhhbXBsZS5jb20KICAg" + - "ICAgIHJlcG9zaXRvcnk6IDxtaXJyb3Itc3ViLXBhdGg+CiAgICAgaGVsbToKICAgICAgIHNvdXJj" + - "ZXM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbmx5IGlmIHlvdSBhbHNvIG1pcnJv" + - "cmVkIHRoZSBoZWxtIGNoYXJ0cwogICAgICAgICByZWdpc3RyeTogPHlvdXItcmVnaXN0cnk+CiAg" + - "ICAgICAgIHJlcG9zaXRvcnk6IDxtaXJyb3Itc3ViLXBhdGg+CiAgIGBgYAoKICAgPiBUaGUgbWFu" + - "aWZlc3QgaGFzIGEgbWl4IG9mIE9DSSBhbmQgbm9uLU9DSSBhcnRpZmFjdHMsIHNvIGNvbnZlcnQg" + - "bm9uLU9DSSBjaGFydHMgYmVmb3JlCiAgID4gbWlycm9yaW5nLiBDb250YWluZXIgaW1hZ2VzIChg" + - "bnZjci5pby8uLi5gKSBhcmUgYWxyZWFkeSBPQ0kgYW5kIG1pcnJvciBhcy1pcy4gU29tZSBIZWxt" + - "CiAgID4gY2hhcnRzLCB0aG91Z2gsIGFyZSBwdWJsaXNoZWQgdG8gYW4gYGh0dHBzOi8vYCBIZWxt" + - "IHJlcG9zaXRvcnkgKGZvciBleGFtcGxlCiAgID4gYGhlbG0ubmdjLm52aWRpYS5jb21gKS4gVGhv" + - "c2UgYXJlIG5vdCBPQ0kgYW5kIGNhbm5vdCBiZSByZXNvbHZlZCBieSBgZ2xvYmFsLmhlbG0uc291" + - "cmNlc2AKICAgPiAoT0NJKSBvciBtaXJyb3JlZCBkaXJlY3RseS4gQmVmb3JlIHBvaW50aW5nIHRo" + - "ZSBzdGFjayBhdCB5b3VyIG1pcnJvciwgY29udmVydCBlYWNoCiAgID4gYGh0dHBzOi8vYCBjaGFy" + - "dCB0byBPQ0k6IGBoZWxtIHJlcG8gYWRkYC9gaGVsbSBwdWxsYCB0aGUgYC50Z3pgLCB0aGVuCiAg" + - "ID4gYGhlbG0gcHVzaCA8Y2hhcnQ+LnRneiBvY2k6Ly88eW91ci1yZWdpc3RyeT4vPG1pcnJvci1z" + - "dWItcGF0aD5gLiBPbmx5IE9DSSBjaGFydHMgY2FuIGxpdmUKICAgPiB1bmRlciBgZ2xvYmFsLmhl" + - "bG0uc291cmNlc2AuCgoyLiBTa2lwIHRoZSBjcmVkZW50aWFsIHN0ZXBzIGFib3ZlLiBXaGVuIHRo" + - "ZSBjbHVzdGVyIGF1dGhlbnRpY2F0ZXMgdG8gdGhlIHJlZ2lzdHJ5CiAgIGF1dG9tYXRpY2FsbHkg" + - "KHRoZSBub2RlIG9yIHdvcmtsb2FkIGlkZW50aXR5IGhhcyBwdWxsIGFjY2VzcyksIHRoZSBwdWxs" + - "IG5lZWRzIG5vCiAgIEt1YmVybmV0ZXMgc2VjcmV0LCBzbyB5b3UgZG8gbm90IG5lZWQ6IHRoZSBw" + - "ZXItbmFtZXNwYWNlIGBudmNyLWNyZWRzYCBmcm9tIHN0ZXAgMQogICAoc3RpbGwgY3JlYXRlIHRo" + - "ZSBuYW1lc3BhY2VzLCBqdXN0IG5vdCB0aGUgc2VjcmV0KSwgdGhlIGBnbG9iYWwuaW1hZ2VQdWxs" + - "U2VjcmV0c2AgZW50cnksCiAgIG9yIHRoZSBgZG9ja2VyIGxvZ2luYC9gaGVsbSByZWdpc3RyeSBs" + - "b2dpbiBudmNyLmlvYCBmcm9tIHN0ZXAgMi4KCiAgID4gT25lIHJlc2lkdWFsIGNyZWRlbnRpYWw6" + - "IG52Y2YtYXBpIHN0aWxsIHZhbGlkYXRlcyB0aGUgdXNlciBmdW5jdGlvbiBpbWFnZSBhdAogICA+" + - "IGBmdW5jdGlvbiBjcmVhdGVgIHZpYSB0aGUgYWNjb3VudCByZWdpc3RyeSBjcmVkZW50aWFsLCBz" + - "byB0aGF0IGNyZWRlbnRpYWwgbXVzdCBwb2ludCBhdAogICA+IHdoaWNoZXZlciByZWdpc3RyeSBo" + - "b2xkcyB0aGUgdXNlciBpbWFnZSAoc2V0IGl0IHRvIHlvdXIgbWlycm9yIGlmIHRoZSBpbWFnZSBp" + - "cyBtaXJyb3JlZAogICA+IHRoZXJlKS4KCiMjIyAzLiBTZXQgdGhlIHJvdXRlIGRvbWFpbgoKYGds" + - "b2JhbC5kb21haW5gIHNldHMgdGhlIGhvc3RuYW1lIHN1ZmZpeCBmb3Igcm91dGVzIHN1Y2ggYXMg" + - "YGFwaS48ZG9tYWluPmAuIEl0IGRvZXMgbm90IGNvbmZpZ3VyZSB0aGUgR2F0ZXdheSBvciBpdHMg" + - "bG9hZCBiYWxhbmNlci4gUXVlcnkgdGhlIGV4YWN0IGV4aXN0aW5nIEdhdGV3YXk6CgpgYGBiYXNo" + - "CkdBVEVXQVlfQUREUkVTUz0kKGt1YmVjdGwgZ2V0IGdhdGV3YXkgPGdhdGV3YXktbmFtZT4gLW4g" + - "PGdhdGV3YXktbmFtZXNwYWNlPiAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBdLnZh" + - "bHVlfScpCnRlc3QgLW4gIiRHQVRFV0FZX0FERFJFU1MiCmBgYAoKVGhlIGFkZHJlc3MgbWF5IGJl" + - "IGEgaG9zdG5hbWUgb3IgSVAuIENsb3VkIHByb3ZpZGVyIGFuZCBHYXRld2F5IGNvbmZpZ3VyYXRp" + - "b24gZGV0ZXJtaW5lIHRoZSBsb2FkIGJhbGFuY2VyIHR5cGUgYW5kIGFkZHJlc3MgZm9ybWF0LiBU" + - "aGUgc2VsZi1tYW5hZ2VkIHN0YWNrIGRvZXMgbm90IHNlbGVjdCBlaXRoZXIuCgpGb3IgdGVtcG9y" + - "YXJ5IHRlc3Rpbmcgd2l0aG91dCBETlMsIHVzZSBhIHN0YWJsZSByZXNlcnZlZCBzdWZmaXggc3Vj" + - "aCBhcyBgZ2xvYmFsLmRvbWFpbjogIm52Y2YudGVzdCJgLCBjb25uZWN0IHRvIGBHQVRFV0FZX0FE" + - "RFJFU1NgLCBhbmQgc2VuZCBgSG9zdDogYXBpLm52Y2YudGVzdGAuIEZvciBwcm9kdWN0aW9uLCB1" + - "c2UgeW91ciBiYXNlIEROUyBkb21haW4gYW5kIHBvaW50IGl0cyByb3V0ZSByZWNvcmRzIHRvIGBH" + - "QVRFV0FZX0FERFJFU1NgLiBJZiB0aGUgZW5kcG9pbnQgbGF0ZXIgY2hhbmdlcywga2VlcCBgZ2xv" + - "YmFsLmRvbWFpbmAgc3RhYmxlIGFuZCB1cGRhdGUgb25seSBETlMgb3IgdGhlIGNsaWVudCBkZXN0" + - "aW5hdGlvbi4gU2VlIEV4YW1wbGUgNCBpbiBbZXhhbXBsZXMubWRdKGV4YW1wbGVzLm1kKS4KCiMj" + - "IyA0LiBQcmV2aWV3IGFuZCBkZXBsb3kKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4g" + - "aGVsbWZpbGUgdGVtcGxhdGUgICAjIFByZXZpZXcgcmVuZGVyZWQgbWFuaWZlc3RzCkhFTE1GSUxF" + - "X0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIHN5bmMgICAgICAgIyBEZXBsb3kKYGBgCgo+IFNldCBC" + - "T1RIIENhc3NhbmRyYSBwYXNzd29yZHMgaW4gdGhlIHNlY3JldHMgZmlsZS4gVGhlIHNlY3JldHMg" + - "ZmlsZSBkb2N1bWVudHMKPiBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgLCBidXQgdGhlIGNh" + - "c3NhbmRyYSBjaGFydCBoYXMgYSBzZWNvbmQgY3JlZGVudGlhbCwKPiBgY2Fzc2FuZHJhLnNlcnZp" + - "Y2VSb2xlUGFzc3dvcmRgLCB0aGF0IGRlZmF1bHRzIHRvIGBjaEBuZzNtM2AuIElmIHlvdSBzZXQg" + - "b25seQo+IGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAsIHRoZSBzZXJ2aWNlIHJvbGUga2Vl" + - "cHMgdGhhdCBkZWZhdWx0IGFuZCBldmVyeSBEQi1iYWNrZWQKPiBzZXJ2aWNlIGNyYXNoLWxvb3Bz" + - "IHdpdGggYEJhZCBjcmVkZW50aWFsc2Agb25jZSBpdCB0cmllcyB0byBhdXRoZW50aWNhdGUuIFNl" + - "dAo+IGBjYXNzYW5kcmEuc2VydmljZVJvbGVQYXNzd29yZGAgdG8gdGhlIHNhbWUgdmFsdWUgYXMg" + - "YERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYC4KCiMjIyA1LiBEZXBsb3ltZW50IHBoYXNlcwoK" + - "SGVsbWZpbGUgZGVwbG95cyBpbiBvcmRlciB3aXRoIGRlcGVuZGVuY2llczoKCnwgUGhhc2UgfCBT" + - "ZWxlY3RvciB8IFNlcnZpY2VzIHwgV2FpdCB0aW1lIHwKfC0tLS0tLS18LS0tLS0tLS0tLXwtLS0t" + - "LS0tLS0tfC0tLS0tLS0tLS0tfAp8IDEgfCBgcmVsZWFzZS1ncm91cD1kZXBlbmRlbmNpZXNgIHwg" + - "TkFUUywgT3BlbkJhbywgQ2Fzc2FuZHJhIHwgNS0xMCBtaW4gfAp8IDIgfCBgcmVsZWFzZS1ncm91" + - "cD1zZXJ2aWNlc2AgfCBBUEksIFNJUywgRVNTLCBpbnZvY2F0aW9uLCBncnBjLXByb3h5LCBub3Rh" + - "cnksIGFwaS1rZXlzLCBvcHRpb25hbCBMTE0gZ2F0ZXdheS9yb3V0ZXIsIG9wdGlvbmFsIFZhbml0" + - "eSBHYXRld2F5LCBOVkNGIFVJIHdoZW4gdGhlIHN0YWNrIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGFk" + - "ZG9uIHwgNS0xMCBtaW4gfAp8IDMgfCBgcmVsZWFzZS1ncm91cD1pbmdyZXNzYCB8IEdhdGV3YXkg" + - "cm91dGVzIHwgMS0yIG1pbiB8CnwgNCB8IGByZWxlYXNlLWdyb3VwPW9ic2VydmFiaWxpdHlgIHwg" + - "T2JzZXJ2YWJpbGl0eSBzdGFjayAoaWYgZW5hYmxlZCkgfCAxLTIgbWluIHwKCk1vbml0b3IgaW4g" + - "YSBzZXBhcmF0ZSB0ZXJtaW5hbDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgcG9kcyAtQSAtdwpgYGAK" + - "CiMjIyA2LiBFbmFibGUgVmFuaXR5IEdhdGV3YXkgKG9wdGlvbmFsKQoKVmFuaXR5IEdhdGV3YXkg" + - "aXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBhbmQgaXMgb25seSBuZWVkZWQgZm9yIGN1c3RvbWVyLWZh" + - "Y2luZwpob3N0bmFtZXMgb3IgcGF0aCBtYXBwaW5ncyBpbiBmcm9udCBvZiB0aGUgc3RhbmRhcmQg" + - "TlZDRiBBUEkgYW5kIGludm9jYXRpb24Kcm91dGVzLiBJdCBpcyBhdmFpbGFibGUgb25seSBpbiBz" + - "dGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhlIFZhbml0eSBHYXRld2F5CmFkZG9uLiBJZiB0" + - "aGUgZXh0cmFjdGVkIHN0YWNrIHBhY2thZ2UgZG9lcyBub3QgY29udGFpbiBhIGB2YW5pdHktZ2F0" + - "ZXdheWAKcmVsZWFzZSBhbmQgYHZhbml0eUdhdGV3YXlgIHJvdXRlIHZhbHVlcywgc2tpcCB0aGVz" + - "ZSBjb21tYW5kcyBhbmQgdXNlIGEgbmV3ZXIKc3RhY2sgcGFja2FnZSB0aGF0IGluY2x1ZGVzIHRo" + - "ZW0uCgpJZiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGUgYWRkb24sIGVuYWJsZSBpdCBp" + - "bgpgZW52aXJvbm1lbnRzLzxlbnYtbmFtZT4ueWFtbGA6CgpgYGB5YW1sCmFkZG9uczoKICB2YW5p" + - "dHlHYXRld2F5OgogICAgZW5hYmxlZDogdHJ1ZQogICAgbWFwcGluZ0NvbmZpZzoge30KYGBgCgpU" + - "aGUgZGVmYXVsdCByb3V0ZSBob3N0IGlzIGB2YW5pdHkuPGRvbWFpbj5gIGFuZCB0aGUgYmFja2Vu" + - "ZCBpcwpgdmFuaXR5LWdhdGV3YXkubnZjZjo4MDgwYC4gUHV0IGRlcGxveW1lbnQtc3BlY2lmaWMg" + - "aG9zdCBhbmQgcGF0aCBtYXBwaW5ncyB1bmRlcgpgYWRkb25zLnZhbml0eUdhdGV3YXkubWFwcGlu" + - "Z0NvbmZpZ2AuIElmIHlvdSBuZWVkIGN1c3RvbSB2YW5pdHkgaG9zdHMgaW5zdGVhZCBvZgpgdmFu" + - "aXR5Ljxkb21haW4+YCwgdXNlIHRoZSByb3V0ZSBob3N0bmFtZSBvdmVycmlkZXMgc3VwcG9ydGVk" + - "IGJ5IHRoZSBzdGFjawpwYWNrYWdlIGFuZCBjcmVhdGUgbWF0Y2hpbmcgRE5TIHJlY29yZHMuCgpB" + - "ZnRlciBjb25maXJtaW5nIHRoZSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBgdmFuaXR5LWdhdGV3YXlg" + - "IHJlbGVhc2UsIHByZXZpZXcgYW5kCmFwcGx5IHRoZSBzZXJ2aWNlIGFuZCByb3V0ZToKCmBgYGJh" + - "c2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPXZhbml0" + - "eS1nYXRld2F5IHRlbXBsYXRlCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0tc2Vs" + - "ZWN0b3IgbmFtZT12YW5pdHktZ2F0ZXdheSBzeW5jCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhl" + - "bG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1pbmdyZXNzIHN5bmMKYGBgCgpWZXJpZnkg" + - "dGhlIHJvdXRlIG9ubHkgd2hlbiB0aGUgYWRkb24gaXMgcHJlc2VudCBhbmQgZW5hYmxlZDoKCmBg" + - "YGJhc2gKa3ViZWN0bCBnZXQgZGVwbG95LHN2YyAtbiBudmNmIC1sIGFwcC5rdWJlcm5ldGVzLmlv" + - "L25hbWU9dmFuaXR5LWdhdGV3YXkKa3ViZWN0bCBnZXQgaHR0cHJvdXRlIC1BIHwgZ3JlcCAtaSB2" + - "YW5pdHkKY3VybCAtSCAiSG9zdDogdmFuaXR5Ljxkb21haW4+IiAiaHR0cDovLzxnYXRld2F5LWFk" + - "ZHJlc3M+L2hlYWx0aCIKYGBgCgpEbyBub3QgZW5hYmxlIFZhbml0eSBHYXRld2F5IGZvciBzdGFu" + - "ZGFyZCBBUEksIEFQSSBLZXlzLCBpbnZvY2F0aW9uLCBMTE0KaW52b2NhdGlvbiwgb3IgZ1JQQyB0" + - "cmFmZmljLiBUaG9zZSByb3V0ZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBiYXNlIGdhdGV3YXkKcm91" + - "dGVzLgoKIyMjIDcuIEVuYWJsZSBOVkNGIFVJIChvcHRpb25hbCkKCk5WQ0YgVUkgaXMgYW4gb3B0" + - "aW9uYWwsIGN1c3RvbWVyLWZhY2luZyBhZG1pbi1wYW5lbCBVSS4gSXQgaXMgZGlzYWJsZWQgYnkK" + - "ZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRl" + - "IHRoZSBOVkNGIFVJIGFkZG9uLiBJZgp5b3VyIGV4dHJhY3RlZCBzdGFjayBwYWNrYWdlIGRvZXMg" + - "bm90IGNvbnRhaW4gYSBgbnZjZi11aWAgcmVsZWFzZSBhbmQgYG52Y2ZVaWAKcm91dGUgdmFsdWVz" + - "LCBza2lwIHRoaXMgc2VjdGlvbi4gVGhlIE5WQ0YgVUkgYWRtaW4gcGFuZWwgaXMgY3VycmVudGx5" + - "CnVuYXV0aGVudGljYXRlZDsgZG8gbm90IGV4cG9zZSBpdCB0byB0aGUgcHVibGljIGludGVybmV0" + - "LgoKRm9yIGVuYWJsZW1lbnQsIG5hbWVzcGFjZSBhbmQgcHVsbCBzZWNyZXQgc2V0dXAsIGFwcGx5" + - "LCBhbmQgdmVyaWZpY2F0aW9uIHN0ZXBzLApzZWUgW05WQ0YgVUkgQWRkb25dKHJlZmVyZW5jZXMv" + - "bnZjZi11aS1hZGRvbi5tZCkuCgojIyMgOC4gSW5zdGFsbCB0aGUgc2VwYXJhdGUgY29tcHV0ZS1w" + - "bGFuZSBzdGFjawoKVGhlIGNvbnRyb2wtcGxhbmUgc3RhY2sgZG9lcyBub3QgaW5zdGFsbCBjb21w" + - "dXRlLXBsYW5lIGNvbXBvbmVudHMuIEFmdGVyIGl0IGlzIGhlYWx0aHksIGNob29zZSBleGFjdGx5" + - "IG9uZSBjb21wdXRlLXBsYW5lIGhhbmRvZmY6CgotIEhlbG1maWxlIHZhbHVlcyBmbG93OiBhdXRo" + - "b3Igc2VwYXJhdGUgZW52aXJvbm1lbnQgZmlsZXMsIHRoZW4gcmVnaXN0ZXIgYW5kCiAgaW5zdGFs" + - "bCB3aXRoIHRoZSBjb21wdXRlLXBsYW5lIE1ha2VmaWxlLgotIENMSSBwcm9maWxlIGZsb3c6IHVz" + - "ZSB0aGUgcHJvZmlsZSBnZW5lcmF0ZWQgYnkgdGhlIENMSSBjb250cm9sLXBsYW5lIGluc3RhbGws" + - "CiAgdGhlbiBydW4gdGhlIGNvbXBsZXRlIENMSSByZWdpc3RlciBhbmQgaW5zdGFsbCBjb21tYW5k" + - "cy4KCkRvIG5vdCBtaXggdGhlc2UgaGFuZG9mZnMuIEZvbGxvdyBbU3BsaXQgQ29tcHV0ZS1QbGFu" + - "ZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQp" + - "CmZvciBjb21tYW5kcywgRUtTIHJvdXRpbmcsIHB1bGwgc2VjcmV0cywgdmVyaWZpY2F0aW9uLCBh" + - "bmQgdGVhcmRvd24gb3JkZXIuCgojIyBDbGVhbiBUZWFyZG93bgoKRGVzdHJveSBldmVyeSBjb21w" + - "dXRlIHBsYW5lIGJlZm9yZSB0aGUgY29udHJvbCBwbGFuZSwgdXNpbmcgdGhlIHRlYXJkb3duIGZv" + - "cgp0aGUgc2FtZSBoYW5kb2ZmOyBzZWUgW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9u" + - "XShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kI3RlYXJkb3duKS4KClNj" + - "b3BlOiBPbmx5IGRlc3Ryb3kgcmVsZWFzZXMgbWFuYWdlZCBieSB0aGlzIGNvbnRyb2wtcGxhbmUg" + - "aGVsbWZpbGUgc3RhY2suIFRoZSBOVkNGIHJlbGVhc2VzIGFyZTogYG5hdHNgLCBgb3BlbmJhby1z" + - "ZXJ2ZXJgLCBgY2Fzc2FuZHJhYCwgYGFwaS1rZXlzYCwgYHNpc2AsIGBhcGlgLCBgaW52b2NhdGlv" + - "bi1zZXJ2aWNlYCwgYGdycGMtcHJveHlgLCBgZXNzLWFwaWAsIGBub3Rhcnktc2VydmljZWAsIG9w" + - "dGlvbmFsIGB2YW5pdHktZ2F0ZXdheWAsIGBudmNmLXVpYCwgYGFkbWluLWlzc3Vlci1wcm94eWAs" + - "IGFuZCBgaW5ncmVzc2A7IGBjZXJ0LW1hbmFnZXJgIGlzIGluY2x1ZGVkIG9ubHkgd2hlbiBgY2Vy" + - "dE1hbmFnZXIuZW5hYmxlZDogdHJ1ZWAuIFRoZSBjb250cm9sLXBsYW5lIG5hbWVzcGFjZSBpbnZl" + - "bnRvcnkgYWxzbyBpbmNsdWRlcyBgY2VydC1tYW5hZ2VyYCwgYnV0IGRlZmF1bHQgbmFtZXNwYWNl" + - "IGNsZWFudXAgcHJlc2VydmVzIGl0LiBOYW1lc3BhY2UgcHJlc2VydmF0aW9uIGRvZXMgbm90IHBy" + - "ZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEV4dGVybmFsIGNlcnQtbWFuYWdlciBtdXN0IHVzZSBg" + - "Y2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgOyBvdGhlcndpc2UgSGVsbWZpbGUgdHJlYXRzIHRo" + - "ZSByZWxlYXNlIGFzIHN0YWNrLW1hbmFnZWQuIERvIG5vdCBkZWxldGUgb3RoZXIgaGVsbSByZWxl" + - "YXNlcyBvciBuYW1lc3BhY2VzIG9uIHRoZSBjbHVzdGVyLgoKQmVmb3JlIGNvbnRyb2wtcGxhbmUg" + - "ZGVzdHJveSwgaWRlbnRpZnkgd2hldGhlciBjZXJ0LW1hbmFnZXIgaXMgZXh0ZXJuYWwuIEZvciBh" + - "biBleHRlcm5hbCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5l" + - "bmFibGVkOiBmYWxzZWAgYW5kIGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBhbiBpbnRlbmRlZCBz" + - "dGFjay1tYW5hZ2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUgYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6" + - "IHRydWVgLCB2ZXJpZnkgbWF0Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1ldGFkYXRhIGFuZCBh" + - "Ym9ydCBvbiBtaXNzaW5nIG9yIG1pc21hdGNoZWQgZXZpZGVuY2UuIFByZXNlcnZlIHRoZSBuYW1l" + - "c3BhY2UgYnkgZGVmYXVsdDsgb25seSBwbGFuIGl0cyByZW1vdmFsIGFmdGVyIHZlcmlmeWluZyBu" + - "YW1lc3BhY2UgcHJvdmVuYW5jZSBhbmQgZ2V0dGluZyBleHBsaWNpdCBjb25maXJtYXRpb24uCgoj" + - "IyMgU3RhbmRhcmQgdGVhcmRvd24KClJ1biBmcm9tIGluc2lkZSB0aGUgYG52Y2Ytc2VsZi1tYW5h" + - "Z2VkLXN0YWNrL2AgZGlyZWN0b3J5OgoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBo" + - "ZWxtZmlsZSBkZXN0cm95CmBgYAoKIyMjIERlbGV0ZSBuYW1lc3BhY2VzCgpgYGBiYXNoCmZvciBu" + - "cyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyBu" + - "dmNmLXVpIHZhdWx0LXN5c3RlbTsgZG8KICBrdWJlY3RsIGRlbGV0ZSBuYW1lc3BhY2UgIiRucyIg" + - "LS1pZ25vcmUtbm90LWZvdW5kCmRvbmUKYGBgCgojIyMgVmVyaWZ5IGNsZWFuCgpgYGBiYXNoCmt1" + - "YmVjdGwgZ2V0IG5zIHwgZ3JlcCAtRSAnKGNhc3NhbmRyYXxuYXRzfHZhdWx0fG52Y2Z8YXBpLWtl" + - "eXN8ZXNzfHNpcyknCiMgU2hvdWxkIHJldHVybiBlbXB0eQpgYGAKCiMjIE92ZXJyaWRpbmcgSGVs" + - "bSBDaGFydCBWYWx1ZXMKCiMjIyBFbnZpcm9ubWVudCBmaWxlIChsaW1pdGVkKQoKV29ya3Mgb25s" + - "eSBmb3Iga2V5cyB0aGF0IGBnbG9iYWwueWFtbC5nb3RtcGxgIHByb3BhZ2F0ZXMgKGUuZy4sIGBj" + - "YXNzYW5kcmEucmVwbGljYUNvdW50YCwgYGdsb2JhbC5zdG9yYWdlQ2xhc3NgLCBgZ2xvYmFsLmlt" + - "YWdlYCkuCgojIyMgUmVsZWFzZSB2YWx1ZXMgYmxvY2sgKGFueSBjaGFydCB2YWx1ZSkKCkVkaXQg" + - "dGhlIHJlbGVhc2UgaW4gYGhlbG1maWxlLmQvKi55YW1sLmdvdG1wbGAgYW5kIGFkZCBhIGB2YWx1" + - "ZXM6YCBibG9jay4gSW4gdGhlIGV4YW1wbGVzIGJlbG93LCBgPHByaXZhdGUtdmFsdWVzPmAgcmVm" + - "ZXJzIHRvIHRoZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUgc3RhY2sgcm9v" + - "dC4KCmBgYHlhbWwKLSBuYW1lOiBjYXNzYW5kcmEKICB2ZXJzaW9uOiAwLjguMAogIGNvbmRpdGlv" + - "bjogY2Fzc2FuZHJhLmVuYWJsZWQKICBuYW1lc3BhY2U6IGNhc3NhbmRyYS1zeXN0ZW0KICA8PDog" + - "KmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAgLSAu" + - "Li88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52ICJIRUxNRklMRV9FTlYiIH19LXNlY3Jl" + - "dHMueWFtbAogICAgLSBjYXNzYW5kcmE6CiAgICAgICAgcmVzb3VyY2VzOgogICAgICAgICAgbGlt" + - "aXRzOgogICAgICAgICAgICBjcHU6ICI4IgogICAgICAgICAgICBtZW1vcnk6IDgxOTJNaQogICAg" + - "ICAgICAgcmVxdWVzdHM6CiAgICAgICAgICAgIGNwdTogIjIiCiAgICAgICAgICAgIG1lbW9yeTog" + - "NDA5Nk1pCmBgYAoKWUFNTCBtZXJnZSBnb3RjaGE6IFdoZW4gYSByZWxlYXNlIHVzZXMgYDw8OiAq" + - "ZGVwZW5kZW5jeWAgb3IgYGluaGVyaXRgLCBzcGVjaWZ5aW5nIGB2YWx1ZXM6YCByZXBsYWNlcyB0" + - "aGUgdGVtcGxhdGUncyB2YWx1ZXMgbGlzdC4gWW91IG11c3QgcmUtaW5jbHVkZSBgZ2xvYmFsLnlh" + - "bWwuZ290bXBsYCBhbmQgdGhlIHNlY3JldHMgZmlsZS4KCiMjIyBQcmV2aWV3IGFuZCBhcHBseSBh" + - "IHNpbmdsZSByZWxlYXNlCgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + - "bGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIHRlbXBsYXRlICAjIFByZXZpZXcKSEVMTUZJTEVfRU5WPTxl" + - "bnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgc3luYyAgICAgICMgQXBwbHkK" + - "YGBgCgojIyBJbWFnZSBQdWxsIFNlY3JldHMKClRoZXJlIGFyZSB0aHJlZSBkaXN0aW5jdCBjcmVk" + - "ZW50aWFsIHR5cGVzLiBEbyBub3QgY29uZmxhdGUgdGhlbSwgYW5kIG1pbmQgdGhlCmZvcm1hdCBy" + - "dWxlIGJlbG93ICh0d28gb2YgdGhlbSBmYWlsIGV2ZW4gd2l0aCB0aGUgY29ycmVjdCBrZXkgaWYg" + - "dGhlIGZvcm1hdCBpcyB3cm9uZyk6Cgp8IHwgQ29udHJvbCBQbGFuZSBQdWxsIFNlY3JldHMgfCBB" + - "UEkgQm9vdHN0cmFwIFJlZ2lzdHJ5IENyZWRzIHwgU2lkZWNhciBJbWFnZS1QdWxsIFNlY3JldCB8" + - "CnwtLS18LS0tfC0tLXwtLS18CnwgUHVycG9zZSB8IEs4cyBwdWxscyBOVkNGIHNlcnZpY2UgaW1h" + - "Z2VzIHwgbnZjZi1hcGkgdmFsaWRhdGVzIHRoZSB1c2VyIGZ1bmN0aW9uIGltYWdlIGF0IGBmdW5j" + - "dGlvbiBjcmVhdGVgIHwgbnZjZi1hcGkgcHVsbHMgdGhlIHBsYXRmb3JtIHNpZGVjYXJzIGluamVj" + - "dGVkIGludG8gZXZlcnkgd29ya2VyIHBvZCB8CnwgV2hlcmUgfCBLOHMgYGRvY2tlci1yZWdpc3Ry" + - "eWAgU2VjcmV0cyArIEt5dmVybm8gQ2x1c3RlclBvbGljeSB8IGA8cHJpdmF0ZS12YWx1ZXM+Lzxl" + - "bnY+LXNlY3JldHMueWFtbGAgKGFjY291bnQtYm9vdHN0cmFwKSB8IGBOVkNGX0FQSV9TSURFQ0FS" + - "U19JTUFHRV9QVUxMX1NFQ1JFVGAgaW4gYDxlbnY+LXNlY3JldHMueWFtbGAgLT4gT3BlbkJhbyBg" + - "c2VydmljZXMvbnZjZi1hcGkva3Yvc2lkZWNhcnMvaW1hZ2UtcHVsbC1zZWNyZXRgIChmaWVsZCBg" + - "c2VjcmV0YCkgfAp8IEZvcm1hdCB8IHN0YW5kYXJkIGAuZG9ja2VyY29uZmlnanNvbmAgKGt1YmVj" + - "dGwgYnVpbGRzIGl0IGZvciB5b3UpIHwgYGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAgfCBg" + - "YmFzZTY0KCIkb2F1dGh0b2tlbjo8a2V5PiIpYCB8Cgo+IE5vdGU6IHRoZSBhY2NvdW50LWJvb3Rz" + - "dHJhcCBjcmVkIGFuZCB0aGUgc2lkZWNhciBzZWNyZXQgYXJlIE5PVCBhCj4gZG9ja2VyY29uZmln" + - "anNvbi4gVGhlIHNlY3JldHMgdGVtcGxhdGUgc2hpcHMgdGhlIHBsYWNlaG9sZGVyCj4gYFJFUExB" + - "Q0VfV0lUSF9CQVNFNjRfRE9DS0VSX0NSRURFTlRJQUxgLCB3aGljaCByZWFkcyBhcyAiYmFzZTY0" + - "IG9mIGEgZG9ja2VyY29uZmlnanNvbi4iCj4gSXQgaXNuJ3QuIEJvdGggdmFsdWVzIGFyZSBjb25z" + - "dW1lZCBhcyBhIHJhdyBkb2NrZXIgYGF1dGhgIHN0cmluZzogbnZjZi1hcGkgdGFrZXMgdGhlCj4g" + - "dmFsdWUgdmVyYmF0aW0gYW5kIGRyb3BzIGl0IGludG8gdGhlIGBhdXRoYCBmaWVsZCBvZiB0aGUg" + - "ZG9ja2VyY29uZmlnIGl0IGJ1aWxkcy4gU28gdGhlCj4gdmFsdWUgbXVzdCBiZSBgYmFzZTY0KCIk" + - "b2F1dGh0b2tlbjo8a2V5PiIpYCwgZS5nLiBgcHJpbnRmICckb2F1dGh0b2tlbjolcycgIiRLRVki" + - "IHwgb3BlbnNzbCBiYXNlNjQgLUFgLAo+IG5vdCBgYmFzZTY0KDxkb2NrZXJjb25maWdqc29uPilg" + - "Lgo+Cj4gLSBXcm9uZyBhY2NvdW50LWJvb3RzdHJhcCB2YWx1ZTogYGZ1bmN0aW9uIGNyZWF0ZWAg" + - "cmV0dXJucwo+ICAgIGA0MDAgIm11c3QgYmUgYmFzZTY0IGVuY29kZWQgdXNlcm5hbWU6cGFzc3dv" + - "cmQgZm9ybWF0ImAuCj4gLSBXcm9uZyBzaWRlY2FyIHZhbHVlOiBldmVyeSB3b3JrZXIncyBzaWRl" + - "Y2FyIHB1bGwgZ2V0cyBhIG1hbGZvcm1lZCBjcmVkZW50aWFsIGFuZAo+ICAgIGA0MDNgcywgcmVn" + - "YXJkbGVzcyBvZiB3aGljaCBrZXkgaXMgaW5zaWRlLiBUaGUgc3ltcHRvbSBsb29rcyBsaWtlIGEg" + - "YmFkIG9yIHdyb25nLW9yZwo+ICAgIGtleSwgYnV0IHRoZSBrZXkgaXMgZmluZSBhbmQgdGhlIGVu" + - "Y29kaW5nIGlzIHRoZSBidWcuIFRvIHJlcGFpciBhbiBhbHJlYWR5LWluc3RhbGxlZAo+ICAgIHN0" + - "YWNrIHdpdGhvdXQgYSBmdWxsIHJlLXN5bmM6Cj4KPiAgICBgYGBiYXNoCj4gICAgQVVUSD0kKHBy" + - "aW50ZiAnJG9hdXRodG9rZW46JXMnICIkS0VZIiB8IG9wZW5zc2wgYmFzZTY0IC1BKQo+ICAgIGJh" + - "byBrdiBwdXQgc2VydmljZXMvbnZjZi1hcGkva3Yvc2lkZWNhcnMvaW1hZ2UtcHVsbC1zZWNyZXQg" + - "c2VjcmV0PSIkQVVUSCIKPiAgICAjIGlmIE5WSURJQSBDbG91ZCBUYXNrcyBpcyBlbmFibGVkLCBy" + - "ZXBlYXQgZm9yIHNlcnZpY2VzL252Y3QtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1bGwtc2VjcmV0" + - "Cj4gICAga3ViZWN0bCByb2xsb3V0IHJlc3RhcnQgLW4gbnZjZiBkZXBsb3kvbnZjZi1hcGkgICAj" + - "IHBpY2tzIHVwIHRoZSBuZXcgc2lkZWNhciBjcmVkCj4gICAgYGBgCj4KPiBOb3RlIChtdWx0aS1v" + - "cmcpOiB3aGVuIHB1bGxpbmcgZnJvbSBOR0MgKG5vdCBhIG1pcnJvciksIHRoZSB1c2VyIGZ1bmN0" + - "aW9uIGltYWdlIGFuZAo+IHRoZSBwbGF0Zm9ybSBzaWRlY2FycyBvZnRlbiBsaXZlIGluIGRpZmZl" + - "cmVudCBudmNyLmlvIG9yZ3MsIGVhY2ggbmVlZGluZyBhIGRpZmZlcmVudAo+IGtleSwgc28gdGhl" + - "IGFjY291bnQtYm9vdHN0cmFwIGNyZWQgKGZ1bmN0aW9uIGltYWdlKSBhbmQgdGhlIHNpZGVjYXIg" + - "c2VjcmV0IChzaWRlY2FycykKPiBhcmUgZnJlcXVlbnRseSB0d28gZGlmZmVyZW50IGtleXMuIE1p" + - "cnJvcmluZyBldmVyeXRoaW5nIGludG8gYSBzaW5nbGUgcmVnaXN0cnkgdGhlCj4gY2x1c3RlciBh" + - "dXRoZW50aWNhdGVzIHRvIGF1dG9tYXRpY2FsbHkgY29sbGFwc2VzIHRoaXMgdG8gb25lIGNyZWRl" + - "bnRpYWwgcGF0aC4KCiMjIyBDb25maWd1cmluZyB3aXRoIEt5dmVybm8gKHJlY29tbWVuZGVkKQoK" + - "VXNlIGEgS3l2ZXJubyBtdXRhdGluZyBhZG1pc3Npb24gcG9saWN5IHRvIGF1dG9tYXRpY2FsbHkg" + - "aW5qZWN0IGBpbWFnZVB1bGxTZWNyZXRzYCBpbnRvIGFsbCBwb2RzIGluIE5WQ0YgbmFtZXNwYWNl" + - "cy4gVGhpcyB3b3JrcyB1bmlmb3JtbHkgZm9yIGFsbCBjaGFydHMgLS0gbm8gcGVyLWNoYXJ0IGNv" + - "bmZpZ3VyYXRpb24gb3IgaGVsbWZpbGUgbW9kaWZpY2F0aW9ucyBuZWVkZWQuCgpgYGBiYXNoCiMg" + - "MS4gSW5zdGFsbCBLeXZlcm5vCmhlbG0gcmVwbyBhZGQga3l2ZXJubyBodHRwczovL2t5dmVybm8u" + - "Z2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1cGRhdGUKaGVsbSBpbnN0YWxsIGt5dmVybm8g" + - "a3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1jcmVhdGUtbmFtZXNwYWNlCgojIDIuIENyZWF0" + - "ZSBwdWxsIHNlY3JldCBpbiBlYWNoIG5hbWVzcGFjZQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3Vy" + - "LWtleT4iCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2YgYXBpLWtl" + - "eXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwgY3JlYXRl" + - "IHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9" + - "bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9j" + - "a2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAg" + - "IC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpkb25lCgojIDMu" + - "IEFwcGx5IHRoZSBLeXZlcm5vIENsdXN0ZXJQb2xpY3kKa3ViZWN0bCBhcHBseSAtZiBreXZlcm5v" + - "LWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFtbApgYGAKClRoZSBwb2xpY3kgbXV0YXRlcyBldmVy" + - "eSBwb2QgYXQgYWRtaXNzaW9uIHRpbWUsIGFkZGluZyBgaW1hZ2VQdWxsU2VjcmV0czogW3tuYW1l" + - "OiBudmNyLWNyZWRzfV1gLiBWZXJpZnkgd2l0aDoKCmBgYGJhc2gKa3ViZWN0bCBnZXQgcG9kIC1u" + - "IDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gLW8ganNvbnBhdGg9J3suc3BlYy5pbWFnZVB1bGxTZWNy" + - "ZXRzfScKIyBTaG91bGQgc2hvdzogW3sibmFtZSI6Im52Y3ItY3JlZHMifV0KYGBgCgpOb3QgbmVl" + - "ZGVkIGlmIHVzaW5nIGEgQ1NQIGJ1aWx0LWluIGNyZWRlbnRpYWwgaGVscGVyIChlLmcuLCBFQ1Ig" + - "d2l0aCBJQU0gbm9kZSByb2xlcykuCgpGb3IgdGhlIEt5dmVybm8gcG9saWN5IFlBTUwgYW5kIHB1" + - "bGwgc2VjcmV0IGNyZWF0aW9uIHNjcmlwdCwgc2VlIFtyZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5t" + - "ZF0ocmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWQpLgoKIyMgRGVidWdnaW5nCgojIyMgUXVpY2sg" + - "c3RhdHVzIGNoZWNrCgpgYGBiYXNoCmt1YmVjdGwgZ2V0IHBvZHMgLUEgLW8gd2lkZSAgICAgICAg" + - "ICAgICAgICAgICAgICAgICMgQWxsIHBvZHMKaGVsbSBsaXN0IC1BICAgICAgICAgICAgICAgICAg" + - "ICAgICAgICAgICAgICAgICAgICAgICMgQWxsIGhlbG0gcmVsZWFzZXMKa3ViZWN0bCBnZXQgZXZl" + - "bnRzIC1uIDxucz4gLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcgICMgUmVjZW50IGV2ZW50cwpg" + - "YGAKCiMjIyBDb21tb24gZmFpbHVyZSBwYXR0ZXJucwoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBGaXgg" + - "fAp8LS0tLS0tLS0tfC0tLS0tLS18LS0tLS18CnwgYEltYWdlUHVsbEJhY2tPZmZgICsgYDQwMSBV" + - "bmF1dGhvcml6ZWRgIHwgTWlzc2luZyBvciB3cm9uZyBwdWxsIHNlY3JldCB8IENoZWNrIHNlY3Jl" + - "dCBleGlzdHMsIGNoZWNrIFNBIGhhcyBpbWFnZVB1bGxTZWNyZXRzIHwKfCBgSW5pdDowLzFgIHN0" + - "dWNrIG9uIHNlcnZpY2UgcG9kcyB8IFZhdWx0LWFnZW50IHdhaXRpbmcgZm9yIE9wZW5CYW8gfCBD" + - "aGVjayBPcGVuQmFvIHBvZHMgKyBtaWdyYXRpb24gam9iIHN0YXR1cyB8CnwgYEluaXQ6MC8xYCAr" + - "IGB2YXVsdC1hZ2VudC1pbml0YCBzaG93cyBgYXV0aC9qd3QvbG9naW5gIC0+IGA0MDAgLi4uIG5v" + - "IGtub3duIGtleSBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkIHRoZSB0b2tlbiBzaWduYXR1cmVgIHwg" + - "T3BlbkJhbyBKV1QgYXV0aCBjb25maWd1cmVkIHdpdGggYSBzdGF0aWMgcHVia2V5IGluc3RlYWQg" + - "b2YgdGhlIGNsdXN0ZXIncyBsaXZlIEpXS1MgLS0gdGhlIGJhc2UgZGVmYXVsdCBgb3BlbmJhby5t" + - "aWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkOiBmYWxzZWAuIENvbW1vbiBvbiBBS1Mg" + - "LyBhbnkgT0lEQy1pc3N1ZXIgY2x1c3RlciB8IFNldCBgb3BlbmJhby5taWdyYXRpb25zLmlzc3Vl" + - "ckRpc2NvdmVyeS5lbmFibGVkOiB0cnVlYCwgZGVsZXRlIGpvYiBgb3BlbmJhby1zZXJ2ZXItbWln" + - "cmF0aW9uc2AsIHJlLXN5bmMgYG9wZW5iYW8tc2VydmVyYC4gU2VlIFtyZWZlcmVuY2VzL2RlYnVn" + - "Z2luZy5tZF0ocmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWQpICJJbml0OjAvMSBTdHVjayIgZml4ICM0" + - "LiB8CnwgYE9PTUtpbGxlZGAgb24gQ2Fzc2FuZHJhIHwgRGVmYXVsdCByZXNvdXJjZXMgdG9vIHNt" + - "YWxsIHwgT3ZlcnJpZGUgYGNhc3NhbmRyYS5yZXNvdXJjZXNgIHZpYSB2YWx1ZXMgYmxvY2sgfAp8" + - "IERCLWJhY2tlZCBzZXJ2aWNlcyBjcmFzaC1sb29wIGBCYWQgY3JlZGVudGlhbHNgIGNvbm5lY3Rp" + - "bmcgdG8gQ2Fzc2FuZHJhIHwgU2VjcmV0cyBmaWxlIHNldCBvbmx5IGBERUZBVUxUX0NBU1NBTkRS" + - "QV9QQVNTV09SRGA7IGBjYXNzYW5kcmEuc2VydmljZVJvbGVQYXNzd29yZGAgc3RpbGwgZGVmYXVs" + - "dHMgdG8gYGNoQG5nM20zYCB8IFNldCBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIGlu" + - "IHRoZSBzZWNyZXRzIGZpbGUgZXF1YWwgdG8gYERFRkFVTFRfQ0FTU0FORFJBX1BBU1NXT1JEYCwg" + - "dGhlbiByZS1zeW5jIGNhc3NhbmRyYSArIHRoZSBEQi1iYWNrZWQgc2VydmljZXMgfAp8IGBQZW5k" + - "aW5nYCBwb2RzIHwgTm9kZSBzZWxlY3RvciBtaXNtYXRjaCBvciBubyBzdG9yYWdlIGNsYXNzIHwg" + - "YGt1YmVjdGwgZGVzY3JpYmUgcG9kYCwgY2hlY2sgbGFiZWxzIGFuZCBzdG9yYWdlIHwKfCBIZWxt" + - "IHJlbGVhc2UgaW4gYGZhaWxlZGAgc3RhdGUgfCBGaXJzdCBpbnN0YWxsIGZhaWxlZCBwYXJ0d2F5" + - "IHwgYGhlbG1maWxlIGRlc3Ryb3lgIHRoZSByZWxlYXNlLCB0aGVuIGBzeW5jYCBhZ2FpbiB8Cnwg" + - "QWNjb3VudCBib290c3RyYXAgdGltZW91dCB8IFdyb25nIGJhc2U2NCBjcmVkZW50aWFscyBpbiBz" + - "ZWNyZXRzIGZpbGUgfCBDaGVjayBga3ViZWN0bCBsb2dzIGpvYi9udmNmLWFwaS1hY2NvdW50LWJv" + - "b3RzdHJhcCAtbiBudmNmYCB8CnwgZnVuY3Rpb24gLyBhY2NvdW50IGNhbGxzIHJldHVybiBgNDA0" + - "IFVua25vd24gY2xpZW50X2lkYCB8IFRoZSBhY2NvdW50LWJvb3RzdHJhcCBwb3N0LWluc3RhbGwg" + - "aG9vayBuZXZlciByYW46IHRoZSBgYXBpYCByZWxlYXNlIGluc3RhbGwgZmFpbGVkLCBvciB3YXMg" + - "cmVwYWlyZWQgd2l0aCBsaXZlIHBhdGNoZXMgaW5zdGVhZCBvZiBhIGNsZWFuIHJlLXN5bmMsIHNv" + - "IHRoZSBob29rIChhbmQgdGhlIGFjY291bnQpIHdhcyBza2lwcGVkIHwgVmVyaWZ5IGFuZCByZS1y" + - "dW4gdGhlIGhvb2s7IHNlZSBbVmVyaWZ5IHRoZSBhY2NvdW50IGJvb3RzdHJhcCByYW5dKCN2ZXJp" + - "ZnktdGhlLWFjY291bnQtYm9vdHN0cmFwLXJhbikgfAp8IFNlcnZpY2VzIGZhaWwgdG8gcmVhZCB2" + - "YXVsdCBzZWNyZXRzOyBgc2VjcmV0cy5qc29uYCBub3QgZm91bmQgfCBWYXVsdCBwYXRoIGhhcmRj" + - "b2RlZCB0byBgL2hvbWUvYXBwL3ZhdWx0L2AgaW4gYF9oZWxwZXJzLnRwbGA7IHRoZSBydW50aW1l" + - "IHJlc29sdmVzIHRoZSBtb3VudGVkIHBhdGggcmVsYXRpdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0" + - "b3J5IGFuZCBkcm9wcyB0aGUgbGVhZGluZyBgL2AgfCBPdmVycmlkZSBgcG9kQW5ub3RhdGlvbnNg" + - "IGFuZCBzZXQgYEpBVkFfVE9PTF9PUFRJT05TOiAiLUR1c2VyLmRpcj0vImAgaW4gcmVsZWFzZSB2" + - "YWx1ZXMgfAp8IE5BVFMgY29ubmVjdGlvbiBmYWlscyBhdCBzdGFydHVwOyBwbGFjZW1lbnQgdGFn" + - "IG1pc21hdGNoIHwgTkFUUyBzZXJ2ZXIgdGFncyBoYXJkY29kZWQgdG8gYGRjOm5jcGA7IGFwcCBk" + - "ZXJpdmVzIHRhZyBmcm9tIGBBV1NfUkVHSU9OYCAoZS5nLiwgYHVzLWdvdi13ZXN0LTFgKSB8IFNl" + - "dCBgQVdTX1JFR0lPTj1uY3BgIGFuZCBgTlZDRl9BV1NfUkVHSU9OPW5jcGAgaW4gZW52IGNvbmZp" + - "ZyB8CgojIyMgVmVyaWZ5IHRoZSBhY2NvdW50IGJvb3RzdHJhcCByYW4KClRoZSBkZWZhdWx0IGFj" + - "Y291bnQgaXMgY3JlYXRlZCBieSBhICoqYHBvc3QtaW5zdGFsbGAgaG9vayBvbiB0aGUgYGFwaWAg" + - "cmVsZWFzZSoqCihgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwYCBpbiBgbnZjZmApLiBC" + - "ZWNhdXNlIGl0IGlzIGEgcG9zdC1pbnN0YWxsIGhvb2ssIGl0IG9ubHkKZmlyZXMgb24gYSBzdWNj" + - "ZXNzZnVsIGBhcGlgIGluc3RhbGwuIElmIHRoYXQgaW5zdGFsbCBmYWlsZWQgYW5kIHlvdSByZXBh" + - "aXJlZCBpdCB3aXRoIGxpdmUKcGF0Y2hlcyAocmF0aGVyIHRoYW4gYSBjbGVhbiByZS1zeW5jKSwg" + - "dGhlIGhvb2sgbmV2ZXIgcnVucywgbm8gYWNjb3VudCBpcyBjcmVhdGVkLCBhbmQKZXZlcnkgc3Vi" + - "c2VxdWVudCBmdW5jdGlvbi9hY2NvdW50IGNhbGwgcmV0dXJucyBhIGNyeXB0aWMgYDQwNCBVbmtu" + - "b3duIGNsaWVudF9pZGAgd2l0aApub3RoaW5nIG9idmlvdXNseSB3cm9uZyBpbiB0aGUgcnVubmlu" + - "ZyBwb2RzLgoKVmVyaWZ5IGl0IHJhbiBhZnRlciB0aGUgZmlyc3Qgc3luYzoKCmBgYGJhc2gKa3Vi" + - "ZWN0bCBnZXQgam9iIC1uIG52Y2YgbnZjZi1hcGktYWNjb3VudC1ib290c3RyYXAgXAogIC1vIGpz" + - "b25wYXRoPSd7LnN0YXR1cy5zdWNjZWVkZWR9JyAgICMgZXhwZWN0IDEKYGBgCgpJZiB0aGUgam9i" + - "IGlzIGFic2VudCBvciBgMGAsIHJlLXJ1biBpdCBieSByZS1zeW5jaW5nIHRoZSBgYXBpYCByZWxl" + - "YXNlIHNvIHRoZSBob29rIGZpcmVzCmFnYWluIChkZWxldGUgdGhlIHByaW9yIGpvYiBmaXJzdCBp" + - "ZiBpdCBsaW5nZXJzIGluIGEgY29tcGxldGVkL2ZhaWxlZCBzdGF0ZSBhbmQgYmxvY2tzIHRoZQpo" + - "b29rKToKCmBgYGJhc2gKa3ViZWN0bCBkZWxldGUgam9iIC1uIG52Y2YgbnZjZi1hcGktYWNjb3Vu" + - "dC1ib290c3RyYXAgLS1pZ25vcmUtbm90LWZvdW5kCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmls" + - "ZSAtLXNlbGVjdG9yIG5hbWU9YXBpIHN5bmMKa3ViZWN0bCBsb2dzIC1uIG52Y2Ygam9iL252Y2Yt" + - "YXBpLWFjY291bnQtYm9vdHN0cmFwICAgIyBjb25maXJtIHRoZSBhY2NvdW50IHdhcyBjcmVhdGVk" + - "CmBgYAoKIyMgQWRkaXRpb25hbCBSZXNvdXJjZXMKCi0gSW5zdGFsbGF0aW9uOiBbZXhhbXBsZXMu" + - "bWRdKGV4YW1wbGVzLm1kKSwgdGhlIFtDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXShodHRwczovL2Rv" + - "Y3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFtcGxlKSwgYW5k" + - "IFtzcGxpdCBjb21wdXRlLXBsYW5lIHdvcmtmbG93c10ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5l" + - "LWluc3RhbGxhdGlvbi5tZCkKLSBPcGVyYXRpb25zOiBbSGVsbWZpbGUgc3RydWN0dXJlXShyZWZl" + - "cmVuY2VzL2hlbG1maWxlLXN0cnVjdHVyZS5tZCksIFtwdWxsIHNlY3JldHNdKHJlZmVyZW5jZXMv" + - "cHVsbC1zZWNyZXRzLm1kKSwgYW5kIFtkZWJ1Z2dpbmddKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1k" + - "KQoKQWZ0ZXIgZGVwbG95bWVudCwgdXNlIHRoZSBgbnZjZi1zZWxmLW1hbmFnZWQtY2xpYCBza2ls" + - "bCB0byBjcmVhdGUgZnVuY3Rpb25zLCBjcmVhdGUgdGFza3MsIG1hbmFnZSBBUEkga2V5cywgYW5k" + - "IGludm9rZSBlbmRwb2ludHMuClBLBwgRwxSTSWIAAEliAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAA" + - "AAAAADQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9ldmFscy9ldmFscy5q" + - "c29uVVQFAAEAps4SWwogIHsKICAgICJpZCI6ICJHMS12YWxpZGF0ZS10b29sLXZlcnNpb25zIiwK" + - "ICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIHRoZSBOVkNGIHNlbGYtbWFuYWdlZCBzdGFjayBvbiBt" + - "eSBBV1MgRUtTIGNsdXN0ZXIiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5h" + - "Z2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCdzIGZpcnN0" + - "IG9wZXJhdGlvbmFsIHN0ZXAgYWZ0ZXIgcmVhZGluZyB0aGUgc2tpbGwgd2FzIHRvIHZhbGlkYXRl" + - "IGFsbCByZXF1aXJlZCB0b29sIHZlcnNpb25zOiBoZWxtZmlsZSAobXVzdCBiZSAxLjEueCwgbm90" + - "IDEuMi4wKSwgaGVsbSAoPj0gMy4xMiksIGhlbG0tZGlmZiBwbHVnaW4gKD49IDMuMTEpLCBhbmQg" + - "a3ViZWN0bCAoY2xpZW50IHdpdGhpbiAxIG1pbm9yIG9mIGNsdXN0ZXIpLiBJdCBkaWQgbm90IHBy" + - "b2NlZWQgdG8gaGVsbWZpbGUgc3luYyB1bnRpbCBhbGwgdmVyc2lvbnMgd2VyZSB2YWxpZGF0ZWQu" + + "b3g6MS4zNmAgZnJvbSBEb2NrZXIgSHViIHwKfCBgLS1jbHVzdGVyLXZhbGlkYXRvci10b2xlcmF0" + + "aW9ucyBrZXlbPXZhbHVlXVs6ZWZmZWN0XSwuLi5gIHwgVG9sZXJhdGlvbnMgYWRkZWQgdG8gdGhl" + + "IHZhbGlkYXRvciBKb2IsIGJlc2lkZSB0aGUgY29udHJvbC1wbGFuZSBvbmVzIGl0IGFsd2F5cyBj" + + "YXJyaWVzLCBmb3IgY2x1c3RlcnMgd2hvc2Ugbm9kZXMgdXNlIG90aGVyIHRhaW50cy4gRWZmZWN0" + + "IGlzIGBOb1NjaGVkdWxlYCwgYFByZWZlck5vU2NoZWR1bGVgIG9yIGBOb0V4ZWN1dGVgLiBBIG1h" + + "bGZvcm1lZCBlbnRyeSBmYWlscyB0aGUgY29tbWFuZC4gUmVwZWF0YWJsZSBvciBjb21tYS1zZXBh" + + "cmF0ZWQuIEVudjogYE5WQ0ZfQ0xJX0NMVVNURVJfVkFMSURBVE9SX1RPTEVSQVRJT05TYDsgY29u" + + "ZmlnIGtleSBgY2x1c3Rlcl92YWxpZGF0b3JfdG9sZXJhdGlvbnNgIHwgLSB8CnwgYC0tY2x1c3Rl" + + "ci12YWxpZGF0b3ItcHVsbC1zZWNyZXQgTkFNRWAgfCBkb2NrZXItcmVnaXN0cnkgU2VjcmV0IGlu" + + "IGBkZWZhdWx0YCB1c2VkIHRvIHB1bGwgdGhlIHZhbGlkYXRvciBpbWFnZS4gV2hlbiBlbXB0eSwg" + + "dGhlIENMSSBsb29rcyBmb3Igb25lIGluIHRoZSBOVkNGIG5hbWVzcGFjZXMgYW5kIGNvcGllcyBp" + + "dCBpbnRvIGBkZWZhdWx0YCBmb3IgdGhlIHJ1bi4gRmFpbGluZyB0aGF0LCBhbmQgb25seSBmb3Ig" + + "YW4gaW1hZ2Ugb24gYW4gTkdDIHJlZ2lzdHJ5LCBpdCBtaW50cyBvbmUgZnJvbSBgTkdDX0FQSV9L" + + "RVlgIHwgYXV0by1kZXRlY3QgfAp8IGAtLXNraXAtY2x1c3Rlci12YWxpZGF0aW9uYCB8IFNraXAg" + + "dGhlIGluLWNsdXN0ZXIgdmFsaWRhdG9yIHByb2JlIGVudGlyZWx5LiBBIHZhbGlkYXRvciB0aGF0" + + "IGlzIGNvbmZpZ3VyZWQgYnV0IGNhbm5vdCBydW4gZmFpbHMgdGhlIGNoZWNrLCBzbyB1c2UgdGhp" + + "cyB0byBvcHQgb3V0IGV4cGxpY2l0bHksIGZvciBleGFtcGxlIHdoZW4gdGhlIGNsdXN0ZXIgY2Fu" + + "bm90IHB1bGwgdGhlIGltYWdlLiBFbnY6IGBOVkNGX0NMSV9TRUxGSE9TVEVEX1NLSVBfQ0xVU1RF" + + "Ul9WQUxJREFUSU9OYCB8IGBmYWxzZWAgfAp8IGAtLW5vLWNsZWFudXBgIHwgS2VlcCB0aGUgdmFs" + + "aWRhdG9yIEpvYiwgaXRzIHBvZCwgUkJBQywgcHVsbCBzZWNyZXQgYW5kIENvbmZpZ01hcCBmb3Ig" + + "ZGVidWdnaW5nLiBBIGxhdGVyIGNoZWNrIHJlY2xhaW1zIHRoZW0gYWZ0ZXIgMjQgaG91cnM7IHRo" + + "ZSByZXN1bHQgcHJpbnRzIHRoZSBga3ViZWN0bCBkZWxldGVgIGNvbW1hbmQgdGhhdCByZW1vdmVz" + + "IHRoZW0gbm93IHwgYGZhbHNlYCB8CnwgYC0tc2hvdy1sb2dzYCB8IFByaW50IHRoZSB2YWxpZGF0" + + "b3IgdHJhbnNjcmlwdCB0byBzdGRlcnIgYWZ0ZXIgdGhlIGNoZWNrIGV2ZW50cy4gVGhlIHRyYW5z" + + "Y3JpcHQgaXMgbm90IEpTT04sIGFuZCBgLS1qc29uYCBhbHNvIHdyaXRlcyB0byBzdGRlcnIsIHNv" + + "IGxlYXZlIHRoaXMgb2ZmIHdoZW4gYSBwYXJzZXIgaXMgcmVhZGluZyB0aGUgc3RyZWFtIHwgYGZh" + + "bHNlYCB8CgojIyBgdXBgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8Cnwt" + + "LS18LS0tfC0tLXwKfCBgLS1jbHVzdGVyLW5hbWUgTkFNRWAgfCBJQ01TIGNsdXN0ZXIgcm93IGlk" + + "ZW50aWZpZXIgKHJlcXVpcmVkKSB8IC0gfAp8IGAtLW5jYS1pZCBJRGAgfCBOQ0EgYWNjb3VudCBJ" + + "RCB8IGBudmNmLWRlZmF1bHRgIHwKfCBgLS1yZWdpb24gUkVHSU9OYCB8IENsdXN0ZXIgcmVnaW9u" + + "IHwgYHVzLXdlc3QtMWAgfAp8IGAtLXBsYW4tb25seWAgfCBEcnktcnVuOyBlbWl0IHBoYXNlIHBs" + + "YW4gKyBFVEFzIHdpdGhvdXQgY2hhbmdlcyB8IGBmYWxzZWAgfAoKIyMgYHN0YXR1c2Atc3BlY2lm" + + "aWMKCnwgRmxhZyB8IFB1cnBvc2UgfCBEZWZhdWx0IHwKfC0tLXwtLS18LS0tfAp8IGAtLWNsdXN0" + + "ZXItbmFtZSBOQU1FYCB8IExpbWl0IHRvIG9uZSBjb21wdXRlIHBsYW5lIHwgLSAoY29udHJvbCAr" + + "IGFsbCBjbHVzdGVycykgfAp8IGAtLXdhdGNoYCB8IExpdmUgcmUtcmVuZGVyIHwgYGZhbHNlYCB8" + + "CnwgYC0td2F0Y2gtaW50ZXJ2YWwgRFVSYCB8IGAtLXdhdGNoYCBjYWRlbmNlIHwgYDVzYCB8Cnwg" + + "YC0tY29tcG9uZW50IE5BTUVgIHwgRmlsdGVyIGNvbXBvbmVudHMgcGFuZWwgfCBhbGwgfAp8IGAt" + + "LW5vLWV2ZW50c2AgfCBTa2lwIGV2ZW50cyBwYW5lbCB8IGBmYWxzZWAgfAoKIyMgYGNsdXN0ZXIg" + + "cmVnaXN0ZXJgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJwb3NlIHwgRGVmYXVsdCB8CnwtLS18LS0t" + + "fC0tLXwKfCBgLS1uYW1lIE5BTUVgIHwgQ2x1c3RlciBuYW1lIChyZXF1aXJlZCkgfCAtIHwKfCBg" + + "LS1uY2EtaWQgSURgIHwgTkNBIElEIChyZXF1aXJlZCkgfCAtIHwKfCBgLS1yZWdpb24gUkVHSU9O" + + "YCB8IFJlZ2lvbiB8IGB1cy13ZXN0LTFgIHwKfCBgLS1pY21zLXVybCBVUkxgIHwgSUNNUyBlbmRw" + + "b2ludCB8IGZyb20gY29uZmlnIHwKfCBgLS1pZ25vcmUtZXhpc3RpbmdgIHwgTWF0Y2gtb3ItY3Jl" + + "YXRlIGluc3RlYWQgb2YgZmFpbC1vbi1leGlzdHMgfCBgZmFsc2VgIHwKCiMjIGBhcGkta2V5IGdl" + + "bmVyYXRlYC1zcGVjaWZpYwoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwt" + + "LS18CnwgYC0tZm9yIGZ1bmN0aW9uXHx0YXNrYCB8IEdlbmVyYXRlIG9ubHkgdGhlIHNwZWNpZmll" + + "ZCBrZXkgdHlwZSB8IChvbWl0IHRvIGdlbmVyYXRlIGJvdGgpIHwKfCBgLS1kZXNjcmlwdGlvbiBU" + + "RVhUYCB8IEh1bWFuLXJlYWRhYmxlIGxhYmVsIGZvciB0aGUga2V5IHwgYEdlbmVyYXRlZCBieSBu" + + "dmNmLWNsaWAgfAp8IGAtLWV4cGlyZXMtaW4gRFVSQVRJT05gIHwgRXhwaXJ5IG9mZnNldCAoZS5n" + + "LiBgMjRoYCwgYDdkYCk7IHBhcnNlZCBhcyBleHRlbmRlZCBkdXJhdGlvbiB8IGAyNGhgIHwKfCBg" + + "LS1zY29wZXMgU0NPUEVbLFNDT1BFXWAgfCBPdmVycmlkZSBkZWZhdWx0IHNjb3BlczsgcmVxdWly" + + "ZXMgYC0tZm9yYCB8IChzZXJ2aWNlIGRlZmF1bHRzKSB8CnwgYC0tdmFsaWRhdGVgIHwgVmFsaWRh" + + "dGUgZWFjaCBnZW5lcmF0ZWQga2V5IGltbWVkaWF0ZWx5IGFmdGVyIG1pbnRpbmcgfCBgZmFsc2Vg" + + "IHwKCkV4dGVuZGVkIGR1cmF0aW9uIHVuaXRzOiBgc2AgKHNlY29uZHMpLCBgbWAgKG1pbnV0ZXMp" + + "LCBgaGAgKGhvdXJzKSwgYGRgIChkYXlzKSwgYHdgICh3ZWVrcykuCgojIyBgZnVuY3Rpb24gY3Jl" + + "YXRlYC1zcGVjaWZpYwoKYC0taW5wdXQtZmlsZSBGSUxFYCBpcyByZWNvbW1lbmRlZCBmb3IgcmVw" + + "ZWF0YWJsZSBmdW5jdGlvbiBkZWZpbml0aW9ucy4gRm9yIGFkLWhvYyBjcmVhdGVzOgoKfCBGbGFn" + + "IHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18CnwgYC0tbmFtZSBOQU1FYCB8IEZ1" + + "bmN0aW9uIG5hbWUgfCAtIHwKfCBgLS1pbWFnZSBJTUFHRWAgfCBDb250YWluZXIgaW1hZ2UgfCAt" + + "IHwKfCBgLS1pbmZlcmVuY2UtdXJsIFVSSWAgfCBDb250YWluZXIgaW5mZXJlbmNlIGVuZHBvaW50" + + "IHwgLSB8CnwgYC0taW5mZXJlbmNlLXBvcnQgUE9SVGAgfCBDb250YWluZXIgaW5mZXJlbmNlIHBv" + + "cnQgfCAtIHwKfCBgLS1mdW5jdGlvbi10eXBlIERFRkFVTFRcfFNUUkVBTUlOR1x8TExNYCB8IEZ1" + + "bmN0aW9uIHR5cGUgfCBgREVGQVVMVGAgfAp8IGAtLWhlbG0tY2hhcnQgQ0hBUlRgIHwgSGVsbSBj" + + "aGFydCBVUkwgb3IgT0NJIHJlZmVyZW5jZS4gQ2FuIGJlIHVzZWQgd2l0aCBgLS1mdW5jdGlvbi10" + + "eXBlPUxMTWAgZm9yIGNoYXJ0LXBhY2thZ2VkIExMTSB3b3JrbG9hZHMuIHwgLSB8CnwgYC0taGVs" + + "bS1jaGFydC1zZXJ2aWNlIE5BTUVgIHwgS3ViZXJuZXRlcyBTZXJ2aWNlIG5hbWUgZXhwb3NlZCBi" + + "eSB0aGUgY2hhcnQuIFJlcXVpcmVkIHdoZW4gYC0taGVsbS1jaGFydGAgaXMgc2V0LiB8IC0gfAp8" + + "IGAtLW1vZGVscyBOQU1FOlZFUlNJT046VVJJYCB8IFN0YW5kYXJkIG1vZGVsIGFydGlmYWN0OyBy" + + "ZXBlYXRhYmxlIHwgLSB8CnwgYC0tbGxtLW1vZGVsIFNQRUNgIHwgTExNIG1vZGVsIGNvbmZpZzsg" + + "Zm9ybWF0IGBuYW1lPTxtb2RlbD4sdXJpcz08dXJpPlx8PHVyaT4scm91dGluZ01ldGhvZD08bWV0" + + "aG9kPix0b2tlblJhdGVMaW1pdD08bGltaXQ+YDsgcmVwZWF0YWJsZS4gVG9rZW4gbGltaXRzIHVz" + + "ZSBgPHZhbHVlPi08dW5pdD5gIHdpdGggYFNgLCBgTWAsIGBIYCwgYERgLCBvciBgV2AsIGZvciBl" + + "eGFtcGxlIGAxMDAwLVNgLiBVc2UgaW5wdXQgSlNPTiBmb3IgY29tYmluZWQgdG9rZW4gbGltaXRz" + + "IGJlY2F1c2UgaW5saW5lIHNwZWNzIHVzZSBjb21tYXMgYXMgZmllbGQgc2VwYXJhdG9ycy4gfCAt" + + "IHwKfCBgLS1sbG0tZGVmYXVsdC1wcmlvcml0eSBQUklPUklUWWAgfCBGdW5jdGlvbi1sZXZlbCBk" + + "ZWZhdWx0IHJlcXVlc3QgcHJpb3JpdHkuIExvd2VyIHZhbHVlcyBoYXZlIGhpZ2hlciBwcmlvcml0" + + "eS4gfCAtIHwKfCBgLS1sbG0tcGVyLWFjY291bnQtcHJpb3JpdHkgTkNBLUlEOlBSSU9SSVRZYCB8" + + "IFBlci1hY2NvdW50IHByaW9yaXR5IG92ZXJyaWRlOyByZXBlYXRhYmxlOyBzdXBwb3J0cyB1cCB0" + + "byA2NCBkaXN0aW5jdCBOQ0EgSUQgb3ZlcnJpZGVzLiBSZXF1aXJlcyBhIGRlZmF1bHQgcHJpb3Jp" + + "dHkuIHwgLSB8CgpJbiBKU09OIGFuZCBpbmxpbmUgc3BlY3MsIExMTSBmdW5jdGlvbnMgc2V0IGBm" + + "dW5jdGlvblR5cGU6ICJMTE0iYCBhbmQgbW9kZWwgcm91dGluZyBtZXRhZGF0YSB1bmRlciBgbW9k" + + "ZWxzW10ubGxtQ29uZmlnYC4gYGxsbUNvbmZpZy51cmlzYCBkZWNsYXJlcyB0aGUgT3BlbkFJLWNv" + + "bXBhdGlibGUgdXBzdHJlYW0gcGF0aHMgZXhwb3NlZCBieSB0aGUgbW9kZWwuIEN1cnJlbnQgc3Vw" + + "cG9ydGVkIHBhdGhzIGFyZSBgL3YxL2NoYXQvY29tcGxldGlvbnNgLCBgL3YxL3Jlc3BvbnNlc2As" + + "IGFuZCBgL3YxL2VtYmVkZGluZ3NgLiBgbGxtQ29uZmlnLnJvdXRpbmdNZXRob2RgIGFjY2VwdHMg" + + "YHJvdW5kX3JvYmluYCwgYHBvd2VyX29mX3R3b2AsIGBncm9xX211bHRpcmVnaW9uYCwgYHB1bHNh" + + "cmAsIG9yIGByYW5kb21gLgpgbGxtQ29uZmlnLnRva2VuUmF0ZUxpbWl0YCBhY2NlcHRzIG9uZSBv" + + "ciBtb3JlIGNvbW1hLXNlcGFyYXRlZCBwb3NpdGl2ZSBpbnRlZ2VyIHRva2VuIGxpbWl0cyBpbiBg" + + "PHZhbHVlPi08dW5pdD5gIGZvcm1hdC4gU3VwcG9ydGVkIHVuaXRzIGFyZSBgU2AgKHNlY29uZHMp" + + "LCBgTWAgKG1pbnV0ZXMpLCBgSGAgKGhvdXJzKSwgYERgIChkYXlzKSwgYW5kIGBXYCAod2Vla3Mp" + + "LiBVc2UgZGlzdGluY3QgdW5pdHMgd2hlbiBjb21iaW5pbmcgbGltaXRzLCBmb3IgZXhhbXBsZSBg" + + "MTAwMC1TLDUwMDAtTSwxMDAwMDAtSCw1MDAwMDAtRCwxMDAwMDAwLVdgIGluIGlucHV0IEpTT04u" + + "CgpIZWxtIGNoYXJ0IHBhY2thZ2luZyBpcyBpbmRlcGVuZGVudCBvZiBgZnVuY3Rpb25UeXBlYC4g" + + "Rm9yIGEgSGVsbS1jaGFydCBiYWNrZWQgTExNIGZ1bmN0aW9uLCBzZXQgYGZ1bmN0aW9uVHlwZTog" + + "IkxMTSJgLCBgaGVsbUNoYXJ0YCwgYGhlbG1DaGFydFNlcnZpY2VOYW1lYCwgYW5kIGBtb2RlbHNb" + + "XS5sbG1Db25maWdgIGluIHRoZSBzYW1lIGNyZWF0ZSByZXF1ZXN0LiBgaW5mZXJlbmNlUG9ydGAg" + + "bXVzdCBiZSB0aGUgS3ViZXJuZXRlcyBTZXJ2aWNlIHBvcnQgZXhwb3NlZCBieSBgaGVsbUNoYXJ0" + + "U2VydmljZU5hbWVgLgoKTExNIGludm9jYXRpb24gcmVxdWVzdHMgdXNlIGBtb2RlbDogIjxmdW5j" + + "dGlvbi1pZD4vPG1vZGVsLW5hbWU+ImAuIFRoZSBmdW5jdGlvbiBJRCBzZWxlY3RzIHRoZSBOVkNG" + + "IGZ1bmN0aW9uLCBhbmQgdGhlIG1vZGVsIG5hbWUgaXMgZm9yd2FyZGVkIHVwc3RyZWFtLiBDaGF0" + + "IGNvbXBsZXRpb25zIGFuZCBSZXNwb25zZXMgQVBJIHJlcXVlc3RzIGNhbiB1c2UgYHgtbXVsdGkt" + + "dHVybi1zZXNzaW9uLWlkYCBmb3Igc2Vzc2lvbiBzdGlja2luZXNzOyBlbWJlZGRpbmdzIHJlcXVl" + + "c3RzIGRvIG5vdC4KCiMjIGBmdW5jdGlvbiB1cGRhdGVgLXNwZWNpZmljCgp8IEZsYWcgfCBQdXJw" + + "b3NlIHwgRGVmYXVsdCB8CnwtLS18LS0tfC0tLXwKfCBgLS10YWdzIFRBR1ssVEFHXWAgfCBSZXBs" + + "YWNlIGZ1bmN0aW9uIHRhZ3MgfCAtIHwKfCBgLS1sbG0tbW9kZWwtdXBkYXRlIFNQRUNgIHwgTExN" + + "IG1vZGVsIHVwZGF0ZTsgZm9ybWF0IGBuYW1lPTxtb2RlbD4scm91dGluZ01ldGhvZD08bWV0aG9k" + + "Pix0b2tlblJhdGVMaW1pdD08bGltaXQ+YDsgcmVwZWF0YWJsZS4gUm91dGluZyBtZXRob2RzIG1h" + + "dGNoIGAtLWxsbS1tb2RlbGAuIFRva2VuIGxpbWl0IGV4YW1wbGU6IGAxMDAwLVNgLiBVc2UgaW5w" + + "dXQgSlNPTiBmb3IgY29tYmluZWQgdG9rZW4gbGltaXRzLiB8IC0gfAp8IGAtLWxsbS1kZWZhdWx0" + + "LXByaW9yaXR5IFBSSU9SSVRZYCB8IFJlcGxhY2UgdGhlIGZ1bmN0aW9uLWxldmVsIHByaW9yaXR5" + + "IGNvbmZpZ3VyYXRpb24gd2l0aCB0aGlzIGRlZmF1bHQgYW5kIGFueSBzdXBwbGllZCBwZXItYWNj" + + "b3VudCBvdmVycmlkZXMuIHwgLSB8CnwgYC0tbGxtLXBlci1hY2NvdW50LXByaW9yaXR5IE5DQS1J" + + "RDpQUklPUklUWWAgfCBQZXItYWNjb3VudCBwcmlvcml0eSBvdmVycmlkZTsgcmVwZWF0YWJsZTsg" + + "c3VwcG9ydHMgdXAgdG8gNjQgZGlzdGluY3QgTkNBIElEIG92ZXJyaWRlcy4gUmVxdWlyZXMgYSBk" + + "ZWZhdWx0IHByaW9yaXR5LiB8IC0gfAoKSW4gSlNPTiwgYGZ1bmN0aW9uIHVwZGF0ZWAgYWNjZXB0" + + "cyBgbW9kZWxVcGRhdGVzW11gIGVudHJpZXMgd2l0aCBgbW9kZWxOYW1lYCBhbmQgYGxsbUNvbmZp" + + "Zy5yb3V0aW5nTWV0aG9kYCBhbmQvb3IgYGxsbUNvbmZpZy50b2tlblJhdGVMaW1pdGAuIGB1cmlz" + + "YCBhcmUgY3JlYXRlLXRpbWUgbW9kZWwgbWV0YWRhdGEgYW5kIGFyZSBub3QgcGFydCBvZiBtb2Rl" + + "bCB1cGRhdGVzLgoKIyMgYGZ1bmN0aW9uIGRlcGxveSBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1" + + "dC1maWxlIEZJTEVgIGlzIHJlY29tbWVuZGVkIChmdWxsIEpTT04gc3BlYykuIEZvciBhZC1ob2Mg" + + "b25lLXNob3QgdXNlOgoKfCBGbGFnIHwgUHVycG9zZSB8IERlZmF1bHQgfAp8LS0tfC0tLXwtLS18" + + "CnwgYC0tZnVuY3Rpb24taWQgSURgIHwgRnVuY3Rpb24gSUQgKHJlcXVpcmVkKSB8IC0gfAp8IGAt" + + "LWdwdSBOQU1FYCB8IEdQVSBmYW1pbHkgfCBgSDEwMGAgfAp8IGAtLWluc3RhbmNlLXR5cGUgVFlQ" + + "RWAgfCBTS1UgfCBgTkNQLkdQVS5IMTAwXzF4YCB8CnwgYC0tbWluLWluc3RhbmNlcyBOYCB8IE1p" + + "biByZXBsaWNhcyB8IGAxYCB8CnwgYC0tbWF4LWluc3RhbmNlcyBOYCB8IE1heCByZXBsaWNhcyB8" + + "IGAxYCB8CnwgYC0tbWF4LXJlcXVlc3QtY29uY3VycmVuY3kgTmAgfCBDb25jdXJyZW5jeSB8IGAw" + + "YCAodW5zZXQ7IHNlcnZlciBkZWZhdWx0IGFwcGxpZXMpIHwKfCBgLS1jbHVzdGVycyBOQU1FWyxO" + + "QU1FXWAgfCBUYXJnZXQgc3BlY2lmaWMgY29tcHV0ZSBjbHVzdGVycyB8IChhbnkgbWF0Y2hpbmcg" + + "U0tVKSB8CgojIyBgdGFzayBjcmVhdGVgLXNwZWNpZmljCgpgLS1pbnB1dC1maWxlIEZJTEVgIGlz" + + "IHJlY29tbWVuZGVkIGZvciByZXBlYXRhYmxlIHRhc2sgZGVmaW5pdGlvbnMuIEZvciBhZC1ob2Mg" + + "dXNlOgoKfCBGbGFnIHwgUHVycG9zZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IGAtLW5hbWUg" + + "TkFNRWAgfCBUYXNrIG5hbWUgKHJlcXVpcmVkKSB8IDEtMTI4IGNoYXJzLCBgXlthLXowLTlBLVpd" + + "W2EtejAtOUEtWlwtX10qJGAgfAp8IGAtLWdwdSBHUFVgIHwgR1BVIG5hbWUgKHJlcXVpcmVkIHdp" + + "dGhvdXQgYC0taW5wdXQtZmlsZWApIHwgRXhhbXBsZTogYEgxMDBgIHwKfCBgLS1pbnN0YW5jZS10" + + "eXBlIFRZUEVgIHwgSW5zdGFuY2UgdHlwZSAocmVxdWlyZWQgd2l0aG91dCBgLS1pbnB1dC1maWxl" + + "YCkgfCBFeGFtcGxlOiBgTkNQLkdQVS5IMTAwXzF4YCB8CnwgYC0taW1hZ2UgSU1BR0VgIHwgQ29u" + + "dGFpbmVyIGltYWdlIHwgTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYC0taGVsbS1jaGFydGAgfAp8" + + "IGAtLWhlbG0tY2hhcnQgQ0hBUlRgIHwgSGVsbSBjaGFydCBVUkwgb3IgT0NJIHJlZmVyZW5jZSB8" + + "IE11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGAtLWltYWdlYCB8CnwgYC0taW5wdXQtZmlsZSBGSUxF" + + "YCB8IEpTT04gdGFzayBzcGVjIGZpbGUgfCBDTEkgZmxhZ3Mgb3ZlcnJpZGUgSlNPTiB2YWx1ZXMg" + + "d2hlbiBib3RoIGFyZSBzZXQgfAp8IGAtLWJhY2tlbmQgQkFDS0VORGAgfCBCYWNrZW5kIC8gQ1NQ" + + "IHwgLSB8CnwgYC0tY2x1c3RlcnMgTkFNRVssTkFNRV1gIHwgU3BlY2lmaWMgY2x1c3RlcnMgd2l0" + + "aGluIHRoZSBpbnN0YW5jZSB8IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tY29udGFpbmVyLWFyZ3Mg" + + "QVJHU2AgfCBBcmdzIHBhc3NlZCB3aGVuIGxhdW5jaGluZyB0aGUgY29udGFpbmVyIHwgU2luZ2xl" + + "IHN0cmluZywgZS5nLiBgIi0tZXBvY2hzIDEwIC0tYmF0Y2gtc2l6ZSAzMiJgIHwKfCBgLS1jb250" + + "YWluZXItZW52IE5BTUU9dmFsdWVgIHwgQ29udGFpbmVyIGVudmlyb25tZW50IHZhcmlhYmxlOyBy" + + "ZXBlYXRhYmxlIHwgLSB8CnwgYC0tc2VjcmV0cyBOQU1FPXZhbHVlYCB8IFNlY3JldCBlbnZpcm9u" + + "bWVudCB2YXJpYWJsZTsgcmVwZWF0YWJsZTsgZW5jcnlwdGVkIGF0IHJlc3QgfCAtIHwKfCBgLS1t" + + "YXgtcnVudGltZSBEVVJBVElPTmAgfCBNYXggd2FsbC1jbG9jayBydW4gdGltZSAoSVNPIDg2MDEs" + + "IGUuZy4gYFBUNEhgKSB8IE5vIGRlZmF1bHQ7IG9taXQgZm9yIG5vIHRpbWUgbGltaXQgfAp8IGAt" + + "LW1heC1xdWV1ZWQgRFVSQVRJT05gIHwgTWF4IHRpbWUgaW4gcXVldWUgYmVmb3JlIGNhbmNlbGxh" + + "dGlvbiAoSVNPIDg2MDEpIHwgU2VydmVyIGRlZmF1bHQgYFBUNzJIYCB8CnwgYC0tdGVybWluYXRp" + + "b24tZ3JhY2UgRFVSQVRJT05gIHwgR3JhY2UgcGVyaW9kIGFmdGVyIHN0b3Agc2lnbmFsIChJU08g" + + "ODYwMSkgfCBTZXJ2ZXIgZGVmYXVsdCBgUFQxSGAgfAp8IGAtLXJlc3VsdC1zdHJhdGVneSBVUExP" + + "QURcfE5PTkVgIHwgSG93IHRvIGhhbmRsZSB0YXNrIG91dHB1dCBhcnRpZmFjdHMgfCAtIHwKfCBg" + + "LS1yZXN1bHRzLWxvY2F0aW9uIExPQ0FUSU9OYCB8IFJlc3VsdCB1cGxvYWQgdGFyZ2V0LCBmb3Jt" + + "YXQgYG9yZy1uYW1lL1t0ZWFtLW5hbWUvXW1vZGVsLW5hbWVgOyByZXF1aXJlZCB3aGVuIGAtLXJl" + + "c3VsdC1zdHJhdGVneT1VUExPQURgIHwgLSB8CnwgYC0tbW9kZWxzIE5BTUU6VkVSU0lPTjpVUklg" + + "IHwgTW9kZWwgYXJ0aWZhY3Q7IHJlcGVhdGFibGUgfCAtIHwKfCBgLS1yZXNvdXJjZXMgTkFNRTpW" + + "RVJTSU9OOlVSSWAgfCBSZXNvdXJjZSBhcnRpZmFjdDsgcmVwZWF0YWJsZSB8IC0gfAp8IGAtLXRh" + + "Z3MgVEFHWyxUQUddYCB8IFRhc2sgdGFncyB8IENvbW1hLXNlcGFyYXRlZCB8CnwgYC0tZGVzY3Jp" + + "cHRpb24gVEVYVGAgfCBUYXNrIGRlc2NyaXB0aW9uIHwgLSB8CnwgYC0tbG9ncy10ZWxlbWV0cnkt" + + "aWQgVVVJRGAgfCBMb2dzIHRlbGVtZXRyeSBlbmRwb2ludCBJRCB8IC0gfAp8IGAtLW1ldHJpY3Mt" + + "dGVsZW1ldHJ5LWlkIFVVSURgIHwgTWV0cmljcyB0ZWxlbWV0cnkgZW5kcG9pbnQgSUQgfCAtIHwK" + + "fCBgLS10cmFjZXMtdGVsZW1ldHJ5LWlkIFVVSURgIHwgVHJhY2VzIHRlbGVtZXRyeSBlbmRwb2lu" + + "dCBJRCB8IC0gfApQSwcIr1eBRVc2AABXNgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA3AAkA" + + "ZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVU" + + "BQABAKbOEiMgVHJvdWJsZXNob290aW5nCgpLbm93biBlcnJvcnMg4oaSIGRpYWdub3N0aWMgY29t" + + "bWFuZCDihpIgcmVtZWRpYXRpb24uIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBzdHJ1Y3R1cmVkIGBw" + + "aGFzZV9mYWlsZWRgIGV2ZW50cyB0aGUgQ0xJIGVtaXRzIChSRVEtMTUpIOKAlCBldmVyeSBlbnRy" + + "eSBiZWxvdyBzaG91bGQgbWFwIHRvIGFuIGBlcnJDYXRlZ29yeWAgYW5kIGEgYHJlbWVkaWF0aW9u" + + "YCBhcnJheS4KCiMjIFByZS1mbGlnaHQKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24g" + + "fAp8LS0tfC0tLXwtLS18CnwgYGt1YmVjdGwgbm90IG9uIFBBVEhgIHwgT3BlcmF0b3IncyBgJFBB" + + "VEhgIGRvZXNuJ3QgaW5jbHVkZSBrdWJlY3RsIHwgSW5zdGFsbCBrdWJlY3RsIDEuMjgrOiBodHRw" + + "czovL2t1YmVybmV0ZXMuaW8vZG9jcy90YXNrcy90b29scy9pbnN0YWxsLWt1YmVjdGwvIHwKfCBg" + + "aGVsbWZpbGUgbm90IG9uIFBBVEhgIHwgU2FtZSB8IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWxtZmls" + + "ZS9oZWxtZmlsZSNpbnN0YWxsYXRpb24gfAp8IGBoZWxtIG5vdCBvbiBQQVRIYCB8IFNhbWUgfCBo" + + "dHRwczovL2hlbG0uc2gvZG9jcy9pbnRyby9pbnN0YWxsLyB8CnwgYEdhdGV3YXkgQVBJIENSRHMg" + + "bm90IGluc3RhbGxlZGAgfCBlbnZveS1nYXRld2F5IHByZXJlcSBtaXNzaW5nIHwgYGhlbG0gaW5z" + + "dGFsbCBlZyBvY2k6Ly9kb2NrZXIuaW8vZW52b3lwcm94eS9nYXRld2F5LWhlbG0gLS1uYW1lc3Bh" + + "Y2U9ZW52b3ktZ2F0ZXdheS1zeXN0ZW0gLS1jcmVhdGUtbmFtZXNwYWNlYCB8CnwgYGRlZmF1bHQg" + + "U3RvcmFnZUNsYXNzIG5vdCBhdmFpbGFibGVgIHwgQ2x1c3RlciBoYXMgbm8gZGVmYXVsdCBTQyB8" + + "IEFubm90YXRlIG9uZTogYGt1YmVjdGwgcGF0Y2ggc2MgPG5hbWU+IC1wICd7Im1ldGFkYXRhIjp7" + + "ImFubm90YXRpb25zIjp7InN0b3JhZ2VjbGFzcy5rdWJlcm5ldGVzLmlvL2lzLWRlZmF1bHQtY2xh" + + "c3MiOiJ0cnVlIn19fSdgIHwKfCBgR1BVIG9wZXJhdG9yIG5vdCBpbnN0YWxsZWRgIChjb21wdXRl" + + "LXBsYW5lKSB8IG52aWRpYSBHUFUgb3BlcmF0b3IgbWlzc2luZyB8IEluc3RhbGwgcGVyIGh0dHBz" + + "Oi8vZG9jcy5udmlkaWEuY29tL2RhdGFjZW50ZXIvY2xvdWQtbmF0aXZlL2dwdS1vcGVyYXRvci9s" + + "YXRlc3QvaW5zdGFsbC1ncHUtb3BlcmF0b3IuaHRtbCwgT1IgdXNlIGBmYWtlLWdwdS1vcGVyYXRv" + + "cmAgZm9yIGRldiB8CnwgYEdQVSBub2RlIGxhYmVscyBtaXNzaW5nYCAoY29tcHV0ZS1wbGFuZSkg" + + "fCBOb2RlcyBuZWVkIGBudmlkaWEuY29tL2dwdS5mYW1pbHlgIGV0Yy4gfCBTZXQgYC0tazNzLW5v" + + "ZGUtbGFiZWwgbnZpZGlhLmNvbS9ncHUuZmFtaWx5PWhvcHBlckBhZ2VudDpOYCBmb3IgazNkIHwK" + + "CiMjIEF1dGgKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18" + + "CnwgYGFkbWluIHRva2VuIHJlcXVpcmVkYCAoaW5pdCBub3QgcnVuKSB8IE5vIGB+Ly5udmNmLWNs" + + "aS5zdGF0ZWAgYW5kIGAtLXRva2VuYCBub3QgcGFzc2VkIHwgYG52Y2YtY2xpIGluaXRgIChpbnRl" + + "cmFjdGl2ZSkgb3IgYC0tdG9rZW49JEpXVCAtLW5vbi1pbnRlcmFjdGl2ZWAgKENJKSB8CnwgYFNp" + + "Z25lZCBKV1QgcmVqZWN0ZWQ6IEFub3RoZXIgYWxnb3JpdGhtIGV4cGVjdGVkLCBvciBubyBtYXRj" + + "aGluZyBrZXkocykgZm91bmRgIHwgU3RhbGUgc2Vzc2lvbi5qc29uIGZyb20gYSBkaWZmZXJlbnQg" + + "Y29udHJvbCBwbGFuZSB8IGBybSB+Ly5udmNmLWNsaS5zdGF0ZWAgdGhlbiBgbnZjZi1jbGkgaW5p" + + "dGAgYWdhaW4gfAp8IGA0MDMgbWlzc2luZyByZXF1ZXN0ZWQgYXV0aG9yaXRpZXNgIChmdW5jdGlv" + + "biBpbnZva2UpIHwgQWRtaW4gdG9rZW4gZG9lc24ndCBoYXZlIGBpbnZva2VfZnVuY3Rpb25gIHNj" + + "b3BlIHwgYG52Y2YtY2xpIGFwaS1rZXkgZ2VuZXJhdGUgLS1kZXNjcmlwdGlvbj3igKZgIHRoZW4g" + + "cmUtcnVuIGludm9rZSB8CgojIyBJbnN0YWxsIC8gYHVwYAoKfCBTeW1wdG9tIHwgQ2F1c2UgfCBS" + + "ZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBIZWxtIGB0aW1lZCBvdXQgd2FpdGluZyBmb3Ig" + + "Y2Fzc2FuZHJhYCB8IENhc3NhbmRyYSBTdGF0ZWZ1bFNldCBQVkMgc3R1Y2sgYFBlbmRpbmdgIHwg" + + "Q29uZmlybSBkZWZhdWx0IFN0b3JhZ2VDbGFzczsgY2hlY2sgYGt1YmVjdGwgZ2V0IHB2LHB2YyAt" + + "biBjYXNzYW5kcmEtc3lzdGVtYCB8CnwgYEludmFsaWQgR1BVICdOQ1AuR1BVLkgxMDAnIHNwZWNp" + + "ZmllZGAgKGZ1bmN0aW9uIGRlcGxveSkgfCBXcm9uZyBmaWVsZCDigJQgYGdwdWAgaXMgdGhlIGZh" + + "bWlseSwgbm90IHRoZSBTS1UgfCBVc2UgYCJncHUiOiAiSDEwMCJgLCBgImluc3RhbmNlVHlwZSI6" + + "ICJOQ1AuR1BVLkgxMDBfMXgiYCB8CnwgYHJlZ2lvbiBtdXN0IGJlIHByb3ZpZGVkYCAoY2x1c3Rl" + + "ciByZWdpc3RlciAvIGluc3RhbGwgLS1jb21wdXRlLXBsYW5lKSB8IGAtLXJlZ2lvbmAgZW1wdHkg" + + "KyBgQ0xVU1RFUl9SRUdJT05gIGVudiBlbXB0eSB8IFBhc3MgYC0tcmVnaW9uPXVzLXdlc3QtMWAg" + + "KG9yIGFueSBub24tZW1wdHkgdmFsdWUpIHwKfCBgcmVxdWlyZWRFbnYgIk5DQV9JRCIgaXMgbm90" + + "IHNldGAgKGhlbG1maWxlIGVycm9yIGR1cmluZyBjb21wdXRlLXBsYW5lIGFwcGx5KSB8IE9sZGVy" + + "IG52Y2YtY2xpIGJlZm9yZSBjb21taXQgYDZhYTU3MDRgOyBFeHRyYUVudiBub3QgcHJvcGFnYXRp" + + "bmcgTkNBX0lEIHwgVXBncmFkZSBgbnZjZi1jbGlgIHRvIGEgcmVsZWFzZSBhZnRlciBgNmFhNTcw" + + "NGAgfAp8IGBudmNhLW9wZXJhdG9yOiBJbWFnZVB1bGxCYWNrT2ZmYCBmb3IgYG52Y2Etb3BlcmF0" + + "b3I6cHNhdGAgfCBJbWFnZSBub3QgaW4gY2x1c3RlciByZWdpc3RyeTsgbXVsdGktY2x1c3RlciBi" + + "dWlsZCBpcyBsb2NhbCB8IGBrM2QgaW1hZ2UgaW1wb3J0IG52Y3IuaW8vLi4uL252Y2Etb3BlcmF0" + + "b3I6cHNhdCAtYyA8Y2x1c3Rlcj5gIHwKCiMjIENvbXB1dGUtcGxhbmUgcnVudGltZQoKfCBTeW1w" + + "dG9tIHwgQ2F1c2UgfCBSZW1lZGlhdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBOVkNBIGFnZW50IENy" + + "YXNoTG9vcEJhY2tPZmYgd2l0aCBgSFRUUCA0MDFgIG9uIGAvdjEvbnZjYS9jbHVzdGVycy8uLi4v" + + "cmVnaXN0ZXJgIHwgU3RhbGUgYG91dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgIGZy" + + "b20gcHJpb3IgcmVnaXN0ZXI7IGNsdXN0ZXIgSUQgZG9lc24ndCBtYXRjaCBJQ01TIHwgRGVsZXRl" + + "IHRoZSBzdGFsZSBmaWxlOyByZS1ydW4gYG52Y2YtY2xpIHNlbGYtaG9zdGVkIHVwYCAoaWRlbXBv" + + "dGVudCByZWdpc3RlciB3cml0ZXMgYSBmcmVzaCBmaWxlKSB8CnwgYE5vIGNsdXN0ZXIgZm91bmQg" + + "d2l0aCB2YWxpZCBKV0tTIGZvciBjbHVzdGVyIElEOiA8aWQ+YCAoSUNNUyBsb2cpIHwgSldLUyBp" + + "biBJQ01TIGRvZXNuJ3QgbWF0Y2ggd2hhdCBjb21wdXRlLXBsYW5lIEs4cyBpcyBjdXJyZW50bHkg" + + "c2lnbmluZyB8IGBudmNmLWNsaSBjbHVzdGVyIHJvdGF0ZSAtLWNsdXN0ZXItaWQ9PGlkPmAgfAp8" + + "IEZ1bmN0aW9uIHBvZCBgSW1hZ2VQdWxsQmFja09mZmAgaW4gYG52Y2YtYmFja2VuZGAgfCBJbWFn" + + "ZS1jcmVkZW50aWFsLWhlbHBlciBjb25maWcgbWlzc2luZyBvciB3cm9uZyB8IGBrdWJlY3RsIGRl" + + "c2NyaWJlIHBvZCAtbiBudmNmLWJhY2tlbmQgPHBvZD5gOyBjaGVjayB0aGUgcHVsbCBzZWNyZXQg" + + "Y29uZmlnIHwKfCBGdW5jdGlvbiBkZXBsb3kgc3R1Y2sgYERFUExPWUlOR2AgZm9yID41IG1pbiB8" + + "IE5BVFMgc3RyZWFtIGluaXQgbGFnIChjb2xkLWNsdXN0ZXIpIOKAlCB3YWl0LCBvciBjaGVjayBO" + + "QVRTIGF1dGgtY2FsbG91dCBoZWFsdGggfCBga3ViZWN0bCBsb2dzIC1uIG5hdHMtc3lzdGVtIC1s" + + "IGFwcC5rdWJlcm5ldGVzLmlvL25hbWU9bmF0cy1hdXRoLWNhbGxvdXQtc2VydmljZWAgfAoKIyMg" + + "VGFza3MKCnwgU3ltcHRvbSB8IENhdXNlIHwgUmVtZWRpYXRpb24gfAp8LS0tfC0tLXwtLS18Cnwg" + + "YHRhc2sgY3JlYXRlYCByZXR1cm5zIGBNaXNzaW5nIDxUWVBFPiByZWdpc3RyeSBjcmVkZW50aWFs" + + "IGZvciBob3N0bmFtZWAsIG9yIGtlZXBzIHVzaW5nIGEgcHJldmlvdXMgY3JlZGVudGlhbCB2YWx1" + + "ZSwgc2hvcnRseSBhZnRlciBgcmVnaXN0cnktY3JlZGVudGlhbCBhZGQvdXBkYXRlL2RlbGV0ZWAg" + + "d2hpbGUgYHJlZ2lzdHJ5LWNyZWRlbnRpYWwgbGlzdGAvYGdldGAgYWxyZWFkeSBzaG93IHRoZSBu" + + "ZXcgdmFsdWUgfCBFeHBlY3RlZCBwcm9wYWdhdGlvbiBkZWxheTogTlZDVCBjYWNoZXMgdGhlIGFj" + + "Y291bnQncyByZWdpc3RyeSBjcmVkZW50aWFscyB3aXRoIGBudmN0Lm52Y2YuY2FjaGUtdHRsYCAo" + + "ZGVmYXVsdCBgUFQ1TWAsIGFib3V0IDUgbWluKSBhbmQgYXBwbGllcyB0aGUgY2hhbmdlIHdoZW4g" + + "dGhhdCBjYWNoZWQgY29weSByZWZyZXNoZXMgfCBXYWl0IHVwIHRvIGFib3V0IDUgbWluIGFuZCBy" + + "ZXRyeSwgb3IgYGt1YmVjdGwgLW4gbnZjZiByb2xsb3V0IHJlc3RhcnQgZGVwbG95bWVudC9udmN0" + + "LWFwaWAgdG8gYXBwbHkgaW1tZWRpYXRlbHkgfApQSwcI864ThHQRAAB0EQAAUEsDBBQACAAAAAAA" + + "IQAAAAAAAAAAAAAAAAAsAAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vU0tJ" + + "TEwubWRVVAUAAQCmzhItLS0KbmFtZTogbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uCmRl" + + "c2NyaXB0aW9uOiA+LQogIEluc3RhbGwgYW5kIG9wZXJhdGUgTlZDRiBzZWxmLWhvc3RlZCBjb250" + + "cm9sLXBsYW5lIGFuZCBzZXBhcmF0ZSBjb21wdXRlLXBsYW5lCiAgc3RhY2tzLiBDb3ZlcnMgSGVs" + + "bWZpbGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSBpbnN0YWxsYXRpb24gZmxvd3MsIHRlYXJkb3du" + + "LAogIHZhbHVlcyBvdmVycmlkZXMsIHB1bGwgc2VjcmV0cywgYW5kIHRyb3VibGVzaG9vdGluZy4g" + + "VXNlIGZvcgogIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrLCBudmNmLWNvbXB1dGUtcGxhbmUtc3Rh" + + "Y2ssIHNwbGl0IGNvbXB1dGUtcGxhbmUKICBpbnN0YWxsYXRpb24sIGNvbnRyb2wtcGxhbmUgaW5z" + + "dGFsbGF0aW9uLCBDTEktZ2VuZXJhdGVkIGNvbnRyb2wtcGxhbmUKICBwcm9maWxlcywgSGVsbWZp" + + "bGUsIHNlbGYtbWFuYWdlZCwgb3Igc2VsZi1ob3N0ZWQgZGVwbG95bWVudHMuIERvIE5PVCB1c2Ug" + + "Zm9yCiAgbG9jYWwgazNkIGVudmlyb25tZW50czsgdXNlIHRoZSBsb2NhbCBrM2QgZGV2ZWxvcG1l" + + "bnQgd29ya2Zsb3cgaW5zdGVhZC4KbGljZW5zZTogQXBhY2hlLTIuMApjb21wYXRpYmlsaXR5OiBS" + + "ZXF1aXJlcyBoZWxtZmlsZSA+PSAxLjEuMCA8IDEuMi4wLCBoZWxtID49IDMuMTIsIGhlbG0tZGlm" + + "ZiBwbHVnaW4sIGt1YmVjdGwgbWF0Y2hpbmcgY2x1c3RlciB2ZXJzaW9uCmF1dGhvcjogIm52Y2Yt" + + "Y29yZS1lbmcgPG52Y2YtY29yZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCnZlcnNpb246ICIx" + + "LjAuMCIKdGFnczogW252Y2YsIHNlbGYtbWFuYWdlZCwgaGVsbWZpbGUsIHNlbGYtaG9zdGVkLCBj" + + "b250cm9sLXBsYW5lLCBjb21wdXRlLXBsYW5lLCBjbGktcHJvZmlsZSwgaW5zdGFsbGF0aW9uLCBk" + + "ZXBsb3ltZW50LCBwdWxsLXNlY3JldHNdCnRvb2xzOiBbU2hlbGwsIFJlYWQsIEVkaXQsIEdyZXAs" + + "IEdsb2JdCm1ldGFkYXRhOgogIGludGVybmFsOiBmYWxzZQogIGF1dGhvcjogIm52Y2YtY29yZS1l" + + "bmcgPG52Y2YtY29yZS1lbmdAZXhjaGFuZ2UubnZpZGlhLmNvbT4iCiAgdmVyc2lvbjogIjEuMCIK" + + "ICB0YWdzOiBbbnZjZiwgc2VsZi1tYW5hZ2VkLCBoZWxtZmlsZSwgc2VsZi1ob3N0ZWQsIGNvbnRy" + + "b2wtcGxhbmUsIGNvbXB1dGUtcGxhbmUsIGNsaS1wcm9maWxlLCBpbnN0YWxsYXRpb24sIGRlcGxv" + + "eW1lbnQsIHB1bGwtc2VjcmV0c10KICBsYW5ndWFnZXM6IFtiYXNoLCB5YW1sXQogIGZyYW1ld29y" + + "a3M6IFtoZWxtZmlsZSwgaGVsbSwga3ViZWN0bF0KICBkb21haW46IGNsb3VkLWluZnJhc3RydWN0" + + "dXJlCi0tLQoKIyBOVkNGIFNlbGYtTWFuYWdlZCBTdGFjayBPcGVyYXRpb25zCgpPcGVyYXRpb25h" + + "bCBndWlkZSBmb3IgbWF0Y2hpbmcgTlZDRiBjb250cm9sLXBsYW5lIGFuZCBjb21wdXRlLXBsYW5l" + + "IEhlbG1maWxlIGJ1bmRsZXMuCgojIyBJbnN0cnVjdGlvbnMKClVzZSB0aGlzIHNraWxsIGZvciBp" + + "bnN0YWxsLCB1cGdyYWRlLCBvciB0ZWFyZG93biB3b3JrIGluIG1hdGNoaW5nIGBudmNmLXNlbGYt" + + "bWFuYWdlZC1zdGFja2AgYW5kIGBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXM7IGtl" + + "ZXAgSGVsbWZpbGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSBoYW5kb2ZmcyBzZXBhcmF0ZS4gRm9y" + + "IGBmdW5jdGlvblR5cGU6ICJMTE0iYCwgcmVhZCBbTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnRdKHJl" + + "ZmVyZW5jZXMvaGVsbWZpbGUtc3RydWN0dXJlLm1kI2xsbS1mdW5jdGlvbi1lbmFibGVtZW50KS4K" + + "CiMjIFByZXJlcXVpc2l0ZXMKCkFzayBmb3IgdGhlIGV4dHJhY3RlZCBgbnZjZi1zZWxmLW1hbmFn" + + "ZWQtc3RhY2tgIHBhdGguIEZvciBzcGxpdCBpbnN0YWxsYXRpb24sCmFsc28gcmVxdWlyZSB0aGUg" + + "bWF0Y2hpbmctdmVyc2lvbiBgbnZjZi1jb21wdXRlLXBsYW5lLXN0YWNrYCBwYXRoLiBWZXJpZnkg" + + "Ym90aDoKCmBgYGJhc2gKbHMgPGNvbnRyb2wtcGxhbmUtc3RhY2s+L2hlbG1maWxlLmQvIDxjb250" + + "cm9sLXBsYW5lLXN0YWNrPi9lbnZpcm9ubWVudHMvIDxjb250cm9sLXBsYW5lLXN0YWNrPi9zZWNy" + + "ZXRzLyA8Y29udHJvbC1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmxzIDxjb21wdXRl" + + "LXBsYW5lLXN0YWNrPi9oZWxtZmlsZS5kLyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZW52aXJvbm1l" + + "bnRzLyA8Y29tcHV0ZS1wbGFuZS1zdGFjaz4vZ2xvYmFsLnlhbWwuZ290bXBsCmBgYAoKSWYgZWl0" + + "aGVyIGRpcmVjdG9yeSBpcyBtaXNzaW5nLCBkb3dubG9hZCBtYXRjaGluZyBidW5kbGUgdmVyc2lv" + + "bnMgZnJvbSBOR0M6CgpgYGBiYXNoCm5nYyByZWdpc3RyeSByZXNvdXJjZSBkb3dubG9hZC12ZXJz" + + "aW9uIDxvcmc+L252Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrOjx2ZXJzaW9uPgpuZ2MgcmVnaXN0cnkg" + + "cmVzb3VyY2UgZG93bmxvYWQtdmVyc2lvbiA8b3JnPi9udmNmLWNvbXB1dGUtcGxhbmUtc3RhY2s6" + + "PHZlcnNpb24+CmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhlIGNv" + + "bnRyb2wtcGxhbmUgYnVuZGxlIHJvb3QuIFNwbGl0LWZsb3cKY29tbWFuZHMgYW5kIHJvb3Qgc3Vi" + + "c3RpdHV0aW9uIGFyZSBpbgpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVy" + + "ZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLgoKIyMgQmVmb3JlIFlvdSBTdGFy" + + "dAoKVmVyaWZ5IHRvb2xpbmcgYW5kIGNvbnRleHQgYmVmb3JlIGFueSBvcGVyYXRpb246CgpgYGBi" + + "YXNoCmhlbG1maWxlIC0tdmVyc2lvbiAgICMgTXVzdCBiZSAxLjEueCAoMS4yLjAgcmVtb3ZlZCBz" + + "ZXF1ZW50aWFsIG1vZGUpCmhlbG0gdmVyc2lvbiAgICAgICAgICMgTXVzdCBiZSA+PSAzLjEyCmhl" + + "bG0gcGx1Z2luIGxpc3QgICAgICMgTXVzdCBpbmNsdWRlIGhlbG0tZGlmZiA+PSAzLjExCmt1YmVj" + + "dGwgdmVyc2lvbiAgICAgICMgQ2xpZW50IG11c3QgYmUgd2l0aGluIDEgbWlub3IgdmVyc2lvbiBv" + + "ZiBjbHVzdGVyCmBgYAoKQ29udHJvbC1wbGFuZSBjb21tYW5kcyBydW4gZnJvbSB0aGUgZXh0cmFj" + + "dGVkIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFjay9gIHJvb3Q6CgpgYGBiYXNoCmNkIHBhdGgvdG8v" + + "bnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sKbHMgaGVsbWZpbGUuZC8gZW52aXJvbm1lbnRzLyBzZWNy" + + "ZXRzLyBnbG9iYWwueWFtbC5nb3RtcGwKYGBgCgpJZGVudGlmeSB0aGUgZW52aXJvbm1lbnQgZnJv" + + "bSBgZW52aXJvbm1lbnRzLzxuYW1lPi55YW1sYCBhbmQKYHNlY3JldHMvPG5hbWU+LXNlY3JldHMu" + + "eWFtbGA7IGZvciBFS1MsIHVzZSB0aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxl" + + "XShodHRwczovL2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1l" + + "eGFtcGxlKS4KCiMjIEhvdyBWYWx1ZXMgRmxvdwoKVW5kZXJzdGFuZGluZyB2YWx1ZSBwcmVjZWRl" + + "bmNlIHByZXZlbnRzIHRoZSBtb3N0IGNvbW1vbiBjb25maWd1cmF0aW9uIG1pc3Rha2VzLgoKYGBg" + + "dGV4dAplbnZpcm9ubWVudHMvYmFzZS55YW1sICAgICAgICAgIChkZWZhdWx0cykKICAgIC0+IG1l" + + "cmdlZCB3aXRoCmVudmlyb25tZW50cy88ZW52Pi55YW1sICAgICAgICAgKHlvdXIgb3ZlcnJpZGVz" + + "KQogICAgLT4gY29uc3VtZWQgYnkKZ2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAoR28g" + + "dGVtcGxhdGUsIGNvbnN0cnVjdHMgcGVyLWNoYXJ0IHZhbHVlcykKICAgIC0+IGNvbnN1bWVkIGJ5" + + "CnNlY3JldHMvPGVudj4tc2VjcmV0cy55YW1sICAgICAgKHNlbnNpdGl2ZSB2YWx1ZXMpCiAgICAt" + + "PiBvdmVycmlkZGVuIGJ5CnJlbGVhc2UgaW5saW5lIHZhbHVlczogYmxvY2tzICAgKGhpZ2hlc3Qg" + + "cHJlY2VkZW5jZSkKYGBgCgpDcml0aWNhbDogYGdsb2JhbC55YW1sLmdvdG1wbGAgb25seSBwYXNz" + + "ZXMgdGhyb3VnaCBzcGVjaWZpYyBrZXlzIHRvIGVhY2ggY2hhcnQgKGltYWdlIHJlZ2lzdHJpZXMs" + + "IG5vZGUgc2VsZWN0b3JzLCBzdG9yYWdlLCByZXBsaWNhIGNvdW50cykuIFNldHRpbmcgYW4gYXJi" + + "aXRyYXJ5IGNoYXJ0IHZhbHVlIGluIHRoZSBlbnZpcm9ubWVudCBmaWxlIHdpbGwgYmUgc2lsZW50" + + "bHkgaWdub3JlZCBpZiBgZ2xvYmFsLnlhbWwuZ290bXBsYCBkb2VzIG5vdCBwcm9wYWdhdGUgaXQu" + + "CgpUbyBvdmVycmlkZSBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzLCB1c2UgYSBoZWxtZmlsZSByZWxl" + + "YXNlIGB2YWx1ZXM6YCBibG9jay4gU2VlIFtPdmVycmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzXSgj" + + "b3ZlcnJpZGluZy1oZWxtLWNoYXJ0LXZhbHVlcykuCgojIyBDbGVhbiBJbnN0YWxsYXRpb24KCiMj" + + "IyAxLiBDcmVhdGUgbmFtZXNwYWNlcyBhbmQgaW1hZ2UgcHVsbCBzZWNyZXRzIChpZiB1c2luZyBh" + + "IHByaXZhdGUgcmVnaXN0cnkpCgpgYGBiYXNoCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5h" + + "dHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2Vy" + + "OyBkbwogIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSAiJG5zIiAtLWRyeS1ydW49Y2xpZW50IC1v" + + "IHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KZG9uZQoKIyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBh" + + "IHByaXZhdGUgcmVnaXN0cnkgKGUuZy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9" + + "Ijx5b3VyLWtleT4iCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lzdGVtIG52Y2Yg" + + "YXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwogIGt1YmVjdGwg" + + "Y3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1z" + + "ZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAg" + + "IC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMi" + + "IFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpkb25l" + + "CmBgYAoKSWYgdXNpbmcgcHVsbCBzZWNyZXRzLCB5b3UgbXVzdCBhbHNvIGNvbmZpZ3VyZSBlYWNo" + + "IGhlbG1maWxlIHJlbGVhc2UgdG8gcmVmZXJlbmNlIHRoZW0uIFNlZSBbSW1hZ2UgUHVsbCBTZWNy" + + "ZXRzXSgjaW1hZ2UtcHVsbC1zZWNyZXRzKS4KCiMjIyAyLiBBdXRoZW50aWNhdGUgaGVsbSB0byB5" + + "b3VyIGNoYXJ0IHJlZ2lzdHJ5CgpCb3RoIGBkb2NrZXIgbG9naW5gIEFORCBgaGVsbSByZWdpc3Ry" + + "eSBsb2dpbmAgYXJlIHJlcXVpcmVkIGZvciBOR0MuIEhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRv" + + "Y2tlcikgdG8gcHVsbCBPQ0kgY2hhcnRzLCBzbyB0aGUgaGVsbSBjcmVkZW50aWFsIHN0b3JlIG11" + + "c3QgYmUgYXV0aGVudGljYXRlZCBzZXBhcmF0ZWx5LgoKYGBgYmFzaAojIE5HQyAtLSBib3RoIGNv" + + "bW1hbmRzIGFyZSByZXF1aXJlZApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRodG9rZW4n" + + "IC1wICIkTkdDX0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAtdSAnJG9hdXRo" + + "dG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCgojIEVDUgphd3MgZWNyIGdldC1sb2dpbi1wYXNzd29y" + + "ZCAtLXJlZ2lvbiA8cmVnaW9uPiB8IFwKICBoZWxtIHJlZ2lzdHJ5IGxvZ2luIC0tdXNlcm5hbWUg" + + "QVdTIC0tcGFzc3dvcmQtc3RkaW4gPGFjY291bnQ+LmRrci5lY3IuPHJlZ2lvbj4uYW1hem9uYXdz" + + "LmNvbQpgYGAKCj4gTm90ZTogYGhlbG0gcmVnaXN0cnkgbG9naW5gIGtlZXBzIG9ubHkgdGhlIGxh" + + "c3QgbG9naW4gcGVyIGhvc3QgKG11bHRpLW9yZyBnb3RjaGEpLgo+IFRoZSBzdGFjayBhbmQgdGhl" + + "IGNhY2hlcyBzcGFuIHNldmVyYWwgTkdDIG9yZ3MgdGhhdCBuZWVkIGRpZmZlcmVudCBrZXlzLCBi" + + "dXQgdGhleSBhbGwKPiBsaXZlIHVuZGVyIHRoZSBvbmUgaG9zdCBgbnZjci5pb2AuIEEgc2Vjb25k" + + "IGBoZWxtIHJlZ2lzdHJ5IGxvZ2luIG52Y3IuaW9gIChvcgo+IGBkb2NrZXIgbG9naW5gKSB3aXRo" + + "IGEgZGlmZmVyZW50IGtleSBzaWxlbnRseSBvdmVyd3JpdGVzIHRoZSBmaXJzdCwgc28gcHVsbHMg" + + "Zm9yIHRoZQo+IGZpcnN0IG9yZyB0aGVuIGZhaWwgd2l0aCBhIG1pc2xlYWRpbmcgYDQwMyBBY2Nl" + + "c3MgRGVuaWVkYCAobm90IGEgNDAxOiB0aGUgYXV0aAo+IHN1Y2NlZWRlZCwgaXQncyB0aGUgd3Jv" + + "bmctb3JnIGtleSkuIElmIHlvdSBwdWxsIGNoYXJ0cy9pbWFnZXMgZnJvbSBtb3JlIHRoYW4gb25l" + + "IG9yZywKPiBlaXRoZXIgcmUtcnVuIHRoZSBsb2dpbiB3aXRoIHRoZSBjb3JyZWN0IGtleSBpbW1l" + + "ZGlhdGVseSBiZWZvcmUgZWFjaCBwdWxsLCBvciBwYXNzCj4gYC0tdXNlcm5hbWUgJyRvYXV0aHRv" + + "a2VuJyAtLXBhc3N3b3JkIDxrZXk+YCBwZXIgYGhlbG0gcHVsbGAgaW52b2NhdGlvbiBpbnN0ZWFk" + + "IG9mIHJlbHlpbmcKPiBvbiB0aGUgc3RvcmVkIGxvZ2luLiAoUHVsbGluZyBldmVyeXRoaW5nIGZy" + + "b20gYSBzaW5nbGUgcmVnaXN0cnkgbWlycm9yIGF2b2lkcyB0aGlzCj4gZW50aXJlbHkuKQoKIyMj" + + "IDJiLiAoUmVjb21tZW5kZWQpIFB1bGwgZnJvbSBhIHJlZ2lzdHJ5IHRoZSBjbHVzdGVyIGF1dGhl" + + "bnRpY2F0ZXMgdG8gYXV0b21hdGljYWxseQoKSWYgeW91IG1pcnJvciB0aGUgTlZDRiBpbWFnZXMg" + + "aW50byBhIHJlZ2lzdHJ5IHRoYXQgdGhlIGNsdXN0ZXIgY2FuIHB1bGwgZnJvbSB3aXRob3V0IGFu" + + "CmV4cGxpY2l0IGltYWdlIHB1bGwgc2VjcmV0IChmb3IgZXhhbXBsZSwgYSByZWdpc3RyeSB3aGVy" + + "ZSB0aGUgbm9kZSBvciB3b3JrbG9hZCBpZGVudGl0eSBpcwpncmFudGVkIHB1bGwgYWNjZXNzIGF1" + + "dG9tYXRpY2FsbHkpLCBwb2ludCB0aGUgc3RhY2sgYXQgaXQgYW5kIHNraXAgdGhlIGNyZWRlbnRp" + + "YWwgc3RlcHMKYWJvdmUuCgoxLiBQb2ludCB0aGUgc3RhY2sgYXQgdGhlIG1pcnJvciBpbiBgZW52" + + "aXJvbm1lbnRzLzxlbnY+LnlhbWxgOgoKICAgYGBgeWFtbAogICBnbG9iYWw6CiAgICAgaW1hZ2U6" + + "CiAgICAgICByZWdpc3RyeTogPHlvdXItcmVnaXN0cnk+ICAgICAgICAgICAgIyBlLmcuIHJlZ2lz" + + "dHJ5LmV4YW1wbGUuY29tCiAgICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgogICAg" + + "IGhlbG06CiAgICAgICBzb3VyY2VzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25s" + + "eSBpZiB5b3UgYWxzbyBtaXJyb3JlZCB0aGUgaGVsbSBjaGFydHMKICAgICAgICAgcmVnaXN0cnk6" + + "IDx5b3VyLXJlZ2lzdHJ5PgogICAgICAgICByZXBvc2l0b3J5OiA8bWlycm9yLXN1Yi1wYXRoPgog" + + "ICBgYGAKCiAgID4gVGhlIG1hbmlmZXN0IGhhcyBhIG1peCBvZiBPQ0kgYW5kIG5vbi1PQ0kgYXJ0" + + "aWZhY3RzLCBzbyBjb252ZXJ0IG5vbi1PQ0kgY2hhcnRzIGJlZm9yZQogICA+IG1pcnJvcmluZy4g" + + "Q29udGFpbmVyIGltYWdlcyAoYG52Y3IuaW8vLi4uYCkgYXJlIGFscmVhZHkgT0NJIGFuZCBtaXJy" + + "b3IgYXMtaXMuIFNvbWUgSGVsbQogICA+IGNoYXJ0cywgdGhvdWdoLCBhcmUgcHVibGlzaGVkIHRv" + + "IGFuIGBodHRwczovL2AgSGVsbSByZXBvc2l0b3J5IChmb3IgZXhhbXBsZQogICA+IGBoZWxtLm5n" + + "Yy5udmlkaWEuY29tYCkuIFRob3NlIGFyZSBub3QgT0NJIGFuZCBjYW5ub3QgYmUgcmVzb2x2ZWQg" + + "YnkgYGdsb2JhbC5oZWxtLnNvdXJjZXNgCiAgID4gKE9DSSkgb3IgbWlycm9yZWQgZGlyZWN0bHku" + + "IEJlZm9yZSBwb2ludGluZyB0aGUgc3RhY2sgYXQgeW91ciBtaXJyb3IsIGNvbnZlcnQgZWFjaAog" + + "ICA+IGBodHRwczovL2AgY2hhcnQgdG8gT0NJOiBgaGVsbSByZXBvIGFkZGAvYGhlbG0gcHVsbGAg" + + "dGhlIGAudGd6YCwgdGhlbgogICA+IGBoZWxtIHB1c2ggPGNoYXJ0Pi50Z3ogb2NpOi8vPHlvdXIt" + + "cmVnaXN0cnk+LzxtaXJyb3Itc3ViLXBhdGg+YC4gT25seSBPQ0kgY2hhcnRzIGNhbiBsaXZlCiAg" + + "ID4gdW5kZXIgYGdsb2JhbC5oZWxtLnNvdXJjZXNgLgoKMi4gU2tpcCB0aGUgY3JlZGVudGlhbCBz" + + "dGVwcyBhYm92ZS4gV2hlbiB0aGUgY2x1c3RlciBhdXRoZW50aWNhdGVzIHRvIHRoZSByZWdpc3Ry" + + "eQogICBhdXRvbWF0aWNhbGx5ICh0aGUgbm9kZSBvciB3b3JrbG9hZCBpZGVudGl0eSBoYXMgcHVs" + + "bCBhY2Nlc3MpLCB0aGUgcHVsbCBuZWVkcyBubwogICBLdWJlcm5ldGVzIHNlY3JldCwgc28geW91" + + "IGRvIG5vdCBuZWVkOiB0aGUgcGVyLW5hbWVzcGFjZSBgbnZjci1jcmVkc2AgZnJvbSBzdGVwIDEK" + + "ICAgKHN0aWxsIGNyZWF0ZSB0aGUgbmFtZXNwYWNlcywganVzdCBub3QgdGhlIHNlY3JldCksIHRo" + + "ZSBgZ2xvYmFsLmltYWdlUHVsbFNlY3JldHNgIGVudHJ5LAogICBvciB0aGUgYGRvY2tlciBsb2dp" + + "bmAvYGhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pb2AgZnJvbSBzdGVwIDIuCgogICA+IE9uZSBy" + + "ZXNpZHVhbCBjcmVkZW50aWFsOiBudmNmLWFwaSBzdGlsbCB2YWxpZGF0ZXMgdGhlIHVzZXIgZnVu" + + "Y3Rpb24gaW1hZ2UgYXQKICAgPiBgZnVuY3Rpb24gY3JlYXRlYCB2aWEgdGhlIGFjY291bnQgcmVn" + + "aXN0cnkgY3JlZGVudGlhbCwgc28gdGhhdCBjcmVkZW50aWFsIG11c3QgcG9pbnQgYXQKICAgPiB3" + + "aGljaGV2ZXIgcmVnaXN0cnkgaG9sZHMgdGhlIHVzZXIgaW1hZ2UgKHNldCBpdCB0byB5b3VyIG1p" + + "cnJvciBpZiB0aGUgaW1hZ2UgaXMgbWlycm9yZWQKICAgPiB0aGVyZSkuCgojIyMgMy4gU2V0IHRo" + + "ZSByb3V0ZSBkb21haW4KCmBnbG9iYWwuZG9tYWluYCBzZXRzIHRoZSBob3N0bmFtZSBzdWZmaXgg" + + "Zm9yIHJvdXRlcyBzdWNoIGFzIGBhcGkuPGRvbWFpbj5gLiBJdCBkb2VzIG5vdCBjb25maWd1cmUg" + + "dGhlIEdhdGV3YXkgb3IgaXRzIGxvYWQgYmFsYW5jZXIuIFF1ZXJ5IHRoZSBleGFjdCBleGlzdGlu" + + "ZyBHYXRld2F5OgoKYGBgYmFzaApHQVRFV0FZX0FERFJFU1M9JChrdWJlY3RsIGdldCBnYXRld2F5" + + "IDxnYXRld2F5LW5hbWU+IC1uIDxnYXRld2F5LW5hbWVzcGFjZT4gLW8ganNvbnBhdGg9J3suc3Rh" + + "dHVzLmFkZHJlc3Nlc1swXS52YWx1ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSRVNTIgpgYGAK" + + "ClRoZSBhZGRyZXNzIG1heSBiZSBhIGhvc3RuYW1lIG9yIElQLiBDbG91ZCBwcm92aWRlciBhbmQg" + + "R2F0ZXdheSBjb25maWd1cmF0aW9uIGRldGVybWluZSB0aGUgbG9hZCBiYWxhbmNlciB0eXBlIGFu" + + "ZCBhZGRyZXNzIGZvcm1hdC4gVGhlIHNlbGYtbWFuYWdlZCBzdGFjayBkb2VzIG5vdCBzZWxlY3Qg" + + "ZWl0aGVyLgoKRm9yIHRlbXBvcmFyeSB0ZXN0aW5nIHdpdGhvdXQgRE5TLCB1c2UgYSBzdGFibGUg" + + "cmVzZXJ2ZWQgc3VmZml4IHN1Y2ggYXMgYGdsb2JhbC5kb21haW46ICJudmNmLnRlc3QiYCwgY29u" + + "bmVjdCB0byBgR0FURVdBWV9BRERSRVNTYCwgYW5kIHNlbmQgYEhvc3Q6IGFwaS5udmNmLnRlc3Rg" + + "LiBGb3IgcHJvZHVjdGlvbiwgdXNlIHlvdXIgYmFzZSBETlMgZG9tYWluIGFuZCBwb2ludCBpdHMg" + + "cm91dGUgcmVjb3JkcyB0byBgR0FURVdBWV9BRERSRVNTYC4gSWYgdGhlIGVuZHBvaW50IGxhdGVy" + + "IGNoYW5nZXMsIGtlZXAgYGdsb2JhbC5kb21haW5gIHN0YWJsZSBhbmQgdXBkYXRlIG9ubHkgRE5T" + + "IG9yIHRoZSBjbGllbnQgZGVzdGluYXRpb24uIFNlZSBFeGFtcGxlIDQgaW4gW2V4YW1wbGVzLm1k" + + "XShleGFtcGxlcy5tZCkuCgojIyMgNC4gUHJldmlldyBhbmQgZGVwbG95CgpgYGBiYXNoCkhFTE1G" + + "SUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIHRlbXBsYXRlICAgIyBQcmV2aWV3IHJlbmRlcmVk" + + "IG1hbmlmZXN0cwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSBzeW5jICAgICAgICMg" + + "RGVwbG95CmBgYAoKPiBTZXQgQk9USCBDYXNzYW5kcmEgcGFzc3dvcmRzIGluIHRoZSBzZWNyZXRz" + + "IGZpbGUuIFRoZSBzZWNyZXRzIGZpbGUgZG9jdW1lbnRzCj4gYERFRkFVTFRfQ0FTU0FORFJBX1BB" + + "U1NXT1JEYCwgYnV0IHRoZSBjYXNzYW5kcmEgY2hhcnQgaGFzIGEgc2Vjb25kIGNyZWRlbnRpYWws" + + "Cj4gYGNhc3NhbmRyYS5zZXJ2aWNlUm9sZVBhc3N3b3JkYCwgdGhhdCBkZWZhdWx0cyB0byBgY2hA" + + "bmczbTNgLiBJZiB5b3Ugc2V0IG9ubHkKPiBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgLCB0" + + "aGUgc2VydmljZSByb2xlIGtlZXBzIHRoYXQgZGVmYXVsdCBhbmQgZXZlcnkgREItYmFja2VkCj4g" + + "c2VydmljZSBjcmFzaC1sb29wcyB3aXRoIGBCYWQgY3JlZGVudGlhbHNgIG9uY2UgaXQgdHJpZXMg" + + "dG8gYXV0aGVudGljYXRlLiBTZXQKPiBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFzc3dvcmRgIHRv" + + "IHRoZSBzYW1lIHZhbHVlIGFzIGBERUZBVUxUX0NBU1NBTkRSQV9QQVNTV09SRGAuCgojIyMgNS4g" + + "RGVwbG95bWVudCBwaGFzZXMKCkhlbG1maWxlIGRlcGxveXMgaW4gb3JkZXIgd2l0aCBkZXBlbmRl" + + "bmNpZXM6Cgp8IFBoYXNlIHwgU2VsZWN0b3IgfCBTZXJ2aWNlcyB8IFdhaXQgdGltZSB8CnwtLS0t" + + "LS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwKfCAxIHwgYHJlbGVhc2UtZ3Jv" + + "dXA9ZGVwZW5kZW5jaWVzYCB8IE5BVFMsIE9wZW5CYW8sIENhc3NhbmRyYSB8IDUtMTAgbWluIHwK" + + "fCAyIHwgYHJlbGVhc2UtZ3JvdXA9c2VydmljZXNgIHwgQVBJLCBTSVMsIEVTUywgaW52b2NhdGlv" + + "biwgZ3JwYy1wcm94eSwgbm90YXJ5LCBhcGkta2V5cywgb3B0aW9uYWwgTExNIGdhdGV3YXkvcm91" + + "dGVyLCBvcHRpb25hbCBWYW5pdHkgR2F0ZXdheSwgTlZDRiBVSSB3aGVuIHRoZSBzdGFjayBwYWNr" + + "YWdlIGluY2x1ZGVzIHRoZSBhZGRvbiB8IDUtMTAgbWluIHwKfCAzIHwgYHJlbGVhc2UtZ3JvdXA9" + + "aW5ncmVzc2AgfCBHYXRld2F5IHJvdXRlcyB8IDEtMiBtaW4gfAp8IDQgfCBgcmVsZWFzZS1ncm91" + + "cD1vYnNlcnZhYmlsaXR5YCB8IE9ic2VydmFiaWxpdHkgc3RhY2sgKGlmIGVuYWJsZWQpIHwgMS0y" + + "IG1pbiB8CgpNb25pdG9yIGluIGEgc2VwYXJhdGUgdGVybWluYWw6CgpgYGBiYXNoCmt1YmVjdGwg" + + "Z2V0IHBvZHMgLUEgLXcKYGBgCgojIyMgNi4gRW5hYmxlIFZhbml0eSBHYXRld2F5IChvcHRpb25h" + + "bCkKClZhbml0eSBHYXRld2F5IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgYW5kIGlzIG9ubHkgbmVl" + + "ZGVkIGZvciBjdXN0b21lci1mYWNpbmcKaG9zdG5hbWVzIG9yIHBhdGggbWFwcGluZ3MgaW4gZnJv" + + "bnQgb2YgdGhlIHN0YW5kYXJkIE5WQ0YgQVBJIGFuZCBpbnZvY2F0aW9uCnJvdXRlcy4gSXQgaXMg" + + "YXZhaWxhYmxlIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBWYW5pdHkg" + + "R2F0ZXdheQphZGRvbi4gSWYgdGhlIGV4dHJhY3RlZCBzdGFjayBwYWNrYWdlIGRvZXMgbm90IGNv" + + "bnRhaW4gYSBgdmFuaXR5LWdhdGV3YXlgCnJlbGVhc2UgYW5kIGB2YW5pdHlHYXRld2F5YCByb3V0" + + "ZSB2YWx1ZXMsIHNraXAgdGhlc2UgY29tbWFuZHMgYW5kIHVzZSBhIG5ld2VyCnN0YWNrIHBhY2th" + + "Z2UgdGhhdCBpbmNsdWRlcyB0aGVtLgoKSWYgdGhlIHN0YWNrIHBhY2thZ2UgaW5jbHVkZXMgdGhl" + + "IGFkZG9uLCBlbmFibGUgaXQgaW4KYGVudmlyb25tZW50cy88ZW52LW5hbWU+LnlhbWxgOgoKYGBg" + + "eWFtbAphZGRvbnM6CiAgdmFuaXR5R2F0ZXdheToKICAgIGVuYWJsZWQ6IHRydWUKICAgIG1hcHBp" + + "bmdDb25maWc6IHt9CmBgYAoKVGhlIGRlZmF1bHQgcm91dGUgaG9zdCBpcyBgdmFuaXR5Ljxkb21h" + + "aW4+YCBhbmQgdGhlIGJhY2tlbmQgaXMKYHZhbml0eS1nYXRld2F5Lm52Y2Y6ODA4MGAuIFB1dCBk" + + "ZXBsb3ltZW50LXNwZWNpZmljIGhvc3QgYW5kIHBhdGggbWFwcGluZ3MgdW5kZXIKYGFkZG9ucy52" + + "YW5pdHlHYXRld2F5Lm1hcHBpbmdDb25maWdgLiBJZiB5b3UgbmVlZCBjdXN0b20gdmFuaXR5IGhv" + + "c3RzIGluc3RlYWQgb2YKYHZhbml0eS48ZG9tYWluPmAsIHVzZSB0aGUgcm91dGUgaG9zdG5hbWUg" + + "b3ZlcnJpZGVzIHN1cHBvcnRlZCBieSB0aGUgc3RhY2sKcGFja2FnZSBhbmQgY3JlYXRlIG1hdGNo" + + "aW5nIEROUyByZWNvcmRzLgoKQWZ0ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0" + + "aGUgYHZhbml0eS1nYXRld2F5YCByZWxlYXNlLCBwcmV2aWV3IGFuZAphcHBseSB0aGUgc2Vydmlj" + + "ZSBhbmQgcm91dGU6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0t" + + "c2VsZWN0b3IgbmFtZT12YW5pdHktZ2F0ZXdheSB0ZW1wbGF0ZQpIRUxNRklMRV9FTlY9PGVudi1u" + + "YW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9dmFuaXR5LWdhdGV3YXkgc3luYwpIRUxNRklM" + + "RV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVz" + + "cyBzeW5jCmBgYAoKVmVyaWZ5IHRoZSByb3V0ZSBvbmx5IHdoZW4gdGhlIGFkZG9uIGlzIHByZXNl" + + "bnQgYW5kIGVuYWJsZWQ6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSxzdmMgLW4gbnZjZiAt" + + "bCBhcHAua3ViZXJuZXRlcy5pby9uYW1lPXZhbml0eS1nYXRld2F5Cmt1YmVjdGwgZ2V0IGh0dHBy" + + "b3V0ZSAtQSB8IGdyZXAgLWkgdmFuaXR5CmN1cmwgLUggIkhvc3Q6IHZhbml0eS48ZG9tYWluPiIg" + + "Imh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPi9oZWFsdGgiCmBgYAoKRG8gbm90IGVuYWJsZSBWYW5p" + + "dHkgR2F0ZXdheSBmb3Igc3RhbmRhcmQgQVBJLCBBUEkgS2V5cywgaW52b2NhdGlvbiwgTExNCmlu" + + "dm9jYXRpb24sIG9yIGdSUEMgdHJhZmZpYy4gVGhvc2Ugcm91dGVzIGFyZSBwcm92aWRlZCBieSB0" + + "aGUgYmFzZSBnYXRld2F5CnJvdXRlcy4KCiMjIyA3LiBFbmFibGUgTlZDRiBVSSAob3B0aW9uYWwp" + + "CgpOVkNGIFVJIGlzIGFuIG9wdGlvbmFsLCBjdXN0b21lci1mYWNpbmcgYWRtaW4tcGFuZWwgVUku" + + "IEl0IGlzIGRpc2FibGVkIGJ5CmRlZmF1bHQgYW5kIGF2YWlsYWJsZSBvbmx5IGluIHN0YWNrIHBh" + + "Y2thZ2VzIHRoYXQgaW5jbHVkZSB0aGUgTlZDRiBVSSBhZGRvbi4gSWYKeW91ciBleHRyYWN0ZWQg" + + "c3RhY2sgcGFja2FnZSBkb2VzIG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UgYW5kIGBu" + + "dmNmVWlgCnJvdXRlIHZhbHVlcywgc2tpcCB0aGlzIHNlY3Rpb24uIFRoZSBOVkNGIFVJIGFkbWlu" + + "IHBhbmVsIGlzIGN1cnJlbnRseQp1bmF1dGhlbnRpY2F0ZWQ7IGRvIG5vdCBleHBvc2UgaXQgdG8g" + + "dGhlIHB1YmxpYyBpbnRlcm5ldC4KCkZvciBlbmFibGVtZW50LCBuYW1lc3BhY2UgYW5kIHB1bGwg" + + "c2VjcmV0IHNldHVwLCBhcHBseSwgYW5kIHZlcmlmaWNhdGlvbiBzdGVwcywKc2VlIFtOVkNGIFVJ" + + "IEFkZG9uXShyZWZlcmVuY2VzL252Y2YtdWktYWRkb24ubWQpLgoKIyMjIDguIEluc3RhbGwgdGhl" + + "IHNlcGFyYXRlIGNvbXB1dGUtcGxhbmUgc3RhY2sKClRoZSBjb250cm9sLXBsYW5lIHN0YWNrIGRv" + + "ZXMgbm90IGluc3RhbGwgY29tcHV0ZS1wbGFuZSBjb21wb25lbnRzLiBBZnRlciBpdCBpcyBoZWFs" + + "dGh5LCBjaG9vc2UgZXhhY3RseSBvbmUgY29tcHV0ZS1wbGFuZSBoYW5kb2ZmOgoKLSBIZWxtZmls" + + "ZSB2YWx1ZXMgZmxvdzogYXV0aG9yIHNlcGFyYXRlIGVudmlyb25tZW50IGZpbGVzLCB0aGVuIHJl" + + "Z2lzdGVyIGFuZAogIGluc3RhbGwgd2l0aCB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZS4KLSBD" + + "TEkgcHJvZmlsZSBmbG93OiB1c2UgdGhlIHByb2ZpbGUgZ2VuZXJhdGVkIGJ5IHRoZSBDTEkgY29u" + + "dHJvbC1wbGFuZSBpbnN0YWxsLAogIHRoZW4gcnVuIHRoZSBjb21wbGV0ZSBDTEkgcmVnaXN0ZXIg" + + "YW5kIGluc3RhbGwgY29tbWFuZHMuCgpEbyBub3QgbWl4IHRoZXNlIGhhbmRvZmZzLiBGb2xsb3cg" + + "W1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxh" + + "bmUtaW5zdGFsbGF0aW9uLm1kKQpmb3IgY29tbWFuZHMsIEVLUyByb3V0aW5nLCBwdWxsIHNlY3Jl" + + "dHMsIHZlcmlmaWNhdGlvbiwgYW5kIHRlYXJkb3duIG9yZGVyLgoKIyMgQ2xlYW4gVGVhcmRvd24K" + + "CkRlc3Ryb3kgZXZlcnkgY29tcHV0ZSBwbGFuZSBiZWZvcmUgdGhlIGNvbnRyb2wgcGxhbmUsIHVz" + + "aW5nIHRoZSB0ZWFyZG93biBmb3IKdGhlIHNhbWUgaGFuZG9mZjsgc2VlIFtTcGxpdCBDb21wdXRl" + + "LVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJlbmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlv" + + "bi5tZCN0ZWFyZG93bikuCgpTY29wZTogT25seSBkZXN0cm95IHJlbGVhc2VzIG1hbmFnZWQgYnkg" + + "dGhpcyBjb250cm9sLXBsYW5lIGhlbG1maWxlIHN0YWNrLiBUaGUgTlZDRiByZWxlYXNlcyBhcmU6" + + "IGBuYXRzYCwgYG9wZW5iYW8tc2VydmVyYCwgYGNhc3NhbmRyYWAsIGBhcGkta2V5c2AsIGBzaXNg" + + "LCBgYXBpYCwgYGludm9jYXRpb24tc2VydmljZWAsIGBncnBjLXByb3h5YCwgYGVzcy1hcGlgLCBg" + + "bm90YXJ5LXNlcnZpY2VgLCBvcHRpb25hbCBgdmFuaXR5LWdhdGV3YXlgLCBgbnZjZi11aWAsIGBh" + + "ZG1pbi1pc3N1ZXItcHJveHlgLCBhbmQgYGluZ3Jlc3NgOyBgY2VydC1tYW5hZ2VyYCBpcyBpbmNs" + + "dWRlZCBvbmx5IHdoZW4gYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IHRydWVgLiBUaGUgY29udHJvbC1w" + + "bGFuZSBuYW1lc3BhY2UgaW52ZW50b3J5IGFsc28gaW5jbHVkZXMgYGNlcnQtbWFuYWdlcmAsIGJ1" + + "dCBkZWZhdWx0IG5hbWVzcGFjZSBjbGVhbnVwIHByZXNlcnZlcyBpdC4gTmFtZXNwYWNlIHByZXNl" + + "cnZhdGlvbiBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgSGVsbSByZWxlYXNlLiBFeHRlcm5hbCBjZXJ0" + + "LW1hbmFnZXIgbXVzdCB1c2UgYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IGZhbHNlYDsgb3RoZXJ3aXNl" + + "IEhlbG1maWxlIHRyZWF0cyB0aGUgcmVsZWFzZSBhcyBzdGFjay1tYW5hZ2VkLiBEbyBub3QgZGVs" + + "ZXRlIG90aGVyIGhlbG0gcmVsZWFzZXMgb3IgbmFtZXNwYWNlcyBvbiB0aGUgY2x1c3Rlci4KCkJl" + + "Zm9yZSBjb250cm9sLXBsYW5lIGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2Vy" + + "IGlzIGV4dGVybmFsLiBGb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVj" + + "dGl2ZSBgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVl" + + "LiBGb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBj" + + "ZXJ0TWFuYWdlci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVs" + + "ZWFzZSBtZXRhZGF0YSBhbmQgYWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNl" + + "LiBQcmVzZXJ2ZSB0aGUgbmFtZXNwYWNlIGJ5IGRlZmF1bHQ7IG9ubHkgcGxhbiBpdHMgcmVtb3Zh" + + "bCBhZnRlciB2ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGdldHRpbmcgZXhwbGlj" + + "aXQgY29uZmlybWF0aW9uLgoKIyMjIFN0YW5kYXJkIHRlYXJkb3duCgpSdW4gZnJvbSBpbnNpZGUg" + + "dGhlIGBudmNmLXNlbGYtbWFuYWdlZC1zdGFjay9gIGRpcmVjdG9yeToKCmBgYGJhc2gKSEVMTUZJ" + + "TEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgZGVzdHJveQpgYGAKCiMjIyBEZWxldGUgbmFtZXNw" + + "YWNlcwoKYGBgYmFzaApmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNm" + + "IGFwaS1rZXlzIGVzcyBzaXMgbnZjZi11aSB2YXVsdC1zeXN0ZW07IGRvCiAga3ViZWN0bCBkZWxl" + + "dGUgbmFtZXNwYWNlICIkbnMiIC0taWdub3JlLW5vdC1mb3VuZApkb25lCmBgYAoKIyMjIFZlcmlm" + + "eSBjbGVhbgoKYGBgYmFzaAprdWJlY3RsIGdldCBucyB8IGdyZXAgLUUgJyhjYXNzYW5kcmF8bmF0" + + "c3x2YXVsdHxudmNmfGFwaS1rZXlzfGVzc3xzaXMpJwojIFNob3VsZCByZXR1cm4gZW1wdHkKYGBg" + + "CgojIyBPdmVycmlkaW5nIEhlbG0gQ2hhcnQgVmFsdWVzCgojIyMgRW52aXJvbm1lbnQgZmlsZSAo" + + "bGltaXRlZCkKCldvcmtzIG9ubHkgZm9yIGtleXMgdGhhdCBgZ2xvYmFsLnlhbWwuZ290bXBsYCBw" + + "cm9wYWdhdGVzIChlLmcuLCBgY2Fzc2FuZHJhLnJlcGxpY2FDb3VudGAsIGBnbG9iYWwuc3RvcmFn" + + "ZUNsYXNzYCwgYGdsb2JhbC5pbWFnZWApLgoKIyMjIFJlbGVhc2UgdmFsdWVzIGJsb2NrIChhbnkg" + + "Y2hhcnQgdmFsdWUpCgpFZGl0IHRoZSByZWxlYXNlIGluIGBoZWxtZmlsZS5kLyoueWFtbC5nb3Rt" + + "cGxgIGFuZCBhZGQgYSBgdmFsdWVzOmAgYmxvY2suIEluIHRoZSBleGFtcGxlcyBiZWxvdywgYDxw" + + "cml2YXRlLXZhbHVlcz5gIHJlZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhl" + + "IGhlbG1maWxlIHN0YWNrIHJvb3QuCgpgYGB5YW1sCi0gbmFtZTogY2Fzc2FuZHJhCiAgdmVyc2lv" + + "bjogMC44LjAKICBjb25kaXRpb246IGNhc3NhbmRyYS5lbmFibGVkCiAgbmFtZXNwYWNlOiBjYXNz" + + "YW5kcmEtc3lzdGVtCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9iYWwu" + + "eWFtbC5nb3RtcGwKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJlZEVudiAiSEVM" + + "TUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwKICAgIC0gY2Fzc2FuZHJhOgogICAgICAgIHJlc291" + + "cmNlczoKICAgICAgICAgIGxpbWl0czoKICAgICAgICAgICAgY3B1OiAiOCIKICAgICAgICAgICAg" + + "bWVtb3J5OiA4MTkyTWkKICAgICAgICAgIHJlcXVlc3RzOgogICAgICAgICAgICBjcHU6ICIyIgog" + + "ICAgICAgICAgICBtZW1vcnk6IDQwOTZNaQpgYGAKCllBTUwgbWVyZ2UgZ290Y2hhOiBXaGVuIGEg" + + "cmVsZWFzZSB1c2VzIGA8PDogKmRlcGVuZGVuY3lgIG9yIGBpbmhlcml0YCwgc3BlY2lmeWluZyBg" + + "dmFsdWVzOmAgcmVwbGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QuIFlvdSBtdXN0IHJl" + + "LWluY2x1ZGUgYGdsb2JhbC55YW1sLmdvdG1wbGAgYW5kIHRoZSBzZWNyZXRzIGZpbGUuCgojIyMg" + + "UHJldmlldyBhbmQgYXBwbHkgYSBzaW5nbGUgcmVsZWFzZQoKYGBgYmFzaApIRUxNRklMRV9FTlY9" + + "PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSAgIyBQcmV2" + + "aWV3CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJh" + + "IHN5bmMgICAgICAjIEFwcGx5CmBgYAoKIyMgSW1hZ2UgUHVsbCBTZWNyZXRzCgpUaGVyZSBhcmUg" + + "dGhyZWUgZGlzdGluY3QgY3JlZGVudGlhbCB0eXBlcy4gRG8gbm90IGNvbmZsYXRlIHRoZW0sIGFu" + + "ZCBtaW5kIHRoZQpmb3JtYXQgcnVsZSBiZWxvdyAodHdvIG9mIHRoZW0gZmFpbCBldmVuIHdpdGgg" + + "dGhlIGNvcnJlY3Qga2V5IGlmIHRoZSBmb3JtYXQgaXMgd3JvbmcpOgoKfCB8IENvbnRyb2wgUGxh" + + "bmUgUHVsbCBTZWNyZXRzIHwgQVBJIEJvb3RzdHJhcCBSZWdpc3RyeSBDcmVkcyB8IFNpZGVjYXIg" + + "SW1hZ2UtUHVsbCBTZWNyZXQgfAp8LS0tfC0tLXwtLS18LS0tfAp8IFB1cnBvc2UgfCBLOHMgcHVs" + + "bHMgTlZDRiBzZXJ2aWNlIGltYWdlcyB8IG52Y2YtYXBpIHZhbGlkYXRlcyB0aGUgdXNlciBmdW5j" + + "dGlvbiBpbWFnZSBhdCBgZnVuY3Rpb24gY3JlYXRlYCB8IG52Y2YtYXBpIHB1bGxzIHRoZSBwbGF0" + + "Zm9ybSBzaWRlY2FycyBpbmplY3RlZCBpbnRvIGV2ZXJ5IHdvcmtlciBwb2QgfAp8IFdoZXJlIHwg" + + "SzhzIGBkb2NrZXItcmVnaXN0cnlgIFNlY3JldHMgKyBLeXZlcm5vIENsdXN0ZXJQb2xpY3kgfCBg" + + "PHByaXZhdGUtdmFsdWVzPi88ZW52Pi1zZWNyZXRzLnlhbWxgIChhY2NvdW50LWJvb3RzdHJhcCkg" + + "fCBgTlZDRl9BUElfU0lERUNBUlNfSU1BR0VfUFVMTF9TRUNSRVRgIGluIGA8ZW52Pi1zZWNyZXRz" + + "LnlhbWxgIC0+IE9wZW5CYW8gYHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJzL2ltYWdlLXB1" + + "bGwtc2VjcmV0YCAoZmllbGQgYHNlY3JldGApIHwKfCBGb3JtYXQgfCBzdGFuZGFyZCBgLmRvY2tl" + + "cmNvbmZpZ2pzb25gIChrdWJlY3RsIGJ1aWxkcyBpdCBmb3IgeW91KSB8IGBiYXNlNjQoIiRvYXV0" + + "aHRva2VuOjxrZXk+IilgIHwgYGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAgfAoKPiBOb3Rl" + + "OiB0aGUgYWNjb3VudC1ib290c3RyYXAgY3JlZCBhbmQgdGhlIHNpZGVjYXIgc2VjcmV0IGFyZSBO" + + "T1QgYQo+IGRvY2tlcmNvbmZpZ2pzb24uIFRoZSBzZWNyZXRzIHRlbXBsYXRlIHNoaXBzIHRoZSBw" + + "bGFjZWhvbGRlcgo+IGBSRVBMQUNFX1dJVEhfQkFTRTY0X0RPQ0tFUl9DUkVERU5USUFMYCwgd2hp" + + "Y2ggcmVhZHMgYXMgImJhc2U2NCBvZiBhIGRvY2tlcmNvbmZpZ2pzb24uIgo+IEl0IGlzbid0LiBC" + + "b3RoIHZhbHVlcyBhcmUgY29uc3VtZWQgYXMgYSByYXcgZG9ja2VyIGBhdXRoYCBzdHJpbmc6IG52" + + "Y2YtYXBpIHRha2VzIHRoZQo+IHZhbHVlIHZlcmJhdGltIGFuZCBkcm9wcyBpdCBpbnRvIHRoZSBg" + + "YXV0aGAgZmllbGQgb2YgdGhlIGRvY2tlcmNvbmZpZyBpdCBidWlsZHMuIFNvIHRoZQo+IHZhbHVl" + + "IG11c3QgYmUgYGJhc2U2NCgiJG9hdXRodG9rZW46PGtleT4iKWAsIGUuZy4gYHByaW50ZiAnJG9h" + + "dXRodG9rZW46JXMnICIkS0VZIiB8IG9wZW5zc2wgYmFzZTY0IC1BYCwKPiBub3QgYGJhc2U2NCg8" + + "ZG9ja2VyY29uZmlnanNvbj4pYC4KPgo+IC0gV3JvbmcgYWNjb3VudC1ib290c3RyYXAgdmFsdWU6" + + "IGBmdW5jdGlvbiBjcmVhdGVgIHJldHVybnMKPiAgICBgNDAwICJtdXN0IGJlIGJhc2U2NCBlbmNv" + + "ZGVkIHVzZXJuYW1lOnBhc3N3b3JkIGZvcm1hdCJgLgo+IC0gV3Jvbmcgc2lkZWNhciB2YWx1ZTog" + + "ZXZlcnkgd29ya2VyJ3Mgc2lkZWNhciBwdWxsIGdldHMgYSBtYWxmb3JtZWQgY3JlZGVudGlhbCBh" + + "bmQKPiAgICBgNDAzYHMsIHJlZ2FyZGxlc3Mgb2Ygd2hpY2gga2V5IGlzIGluc2lkZS4gVGhlIHN5" + + "bXB0b20gbG9va3MgbGlrZSBhIGJhZCBvciB3cm9uZy1vcmcKPiAgICBrZXksIGJ1dCB0aGUga2V5" + + "IGlzIGZpbmUgYW5kIHRoZSBlbmNvZGluZyBpcyB0aGUgYnVnLiBUbyByZXBhaXIgYW4gYWxyZWFk" + + "eS1pbnN0YWxsZWQKPiAgICBzdGFjayB3aXRob3V0IGEgZnVsbCByZS1zeW5jOgo+Cj4gICAgYGBg" + + "YmFzaAo+ICAgIEFVVEg9JChwcmludGYgJyRvYXV0aHRva2VuOiVzJyAiJEtFWSIgfCBvcGVuc3Ns" + + "IGJhc2U2NCAtQSkKPiAgICBiYW8ga3YgcHV0IHNlcnZpY2VzL252Y2YtYXBpL2t2L3NpZGVjYXJz" + + "L2ltYWdlLXB1bGwtc2VjcmV0IHNlY3JldD0iJEFVVEgiCj4gICAgIyBpZiBOVklESUEgQ2xvdWQg" + + "VGFza3MgaXMgZW5hYmxlZCwgcmVwZWF0IGZvciBzZXJ2aWNlcy9udmN0LWFwaS9rdi9zaWRlY2Fy" + + "cy9pbWFnZS1wdWxsLXNlY3JldAo+ICAgIGt1YmVjdGwgcm9sbG91dCByZXN0YXJ0IC1uIG52Y2Yg" + + "ZGVwbG95L252Y2YtYXBpICAgIyBwaWNrcyB1cCB0aGUgbmV3IHNpZGVjYXIgY3JlZAo+ICAgIGBg" + + "YAo+Cj4gTm90ZSAobXVsdGktb3JnKTogd2hlbiBwdWxsaW5nIGZyb20gTkdDIChub3QgYSBtaXJy" + + "b3IpLCB0aGUgdXNlciBmdW5jdGlvbiBpbWFnZSBhbmQKPiB0aGUgcGxhdGZvcm0gc2lkZWNhcnMg" + + "b2Z0ZW4gbGl2ZSBpbiBkaWZmZXJlbnQgbnZjci5pbyBvcmdzLCBlYWNoIG5lZWRpbmcgYSBkaWZm" + + "ZXJlbnQKPiBrZXksIHNvIHRoZSBhY2NvdW50LWJvb3RzdHJhcCBjcmVkIChmdW5jdGlvbiBpbWFn" + + "ZSkgYW5kIHRoZSBzaWRlY2FyIHNlY3JldCAoc2lkZWNhcnMpCj4gYXJlIGZyZXF1ZW50bHkgdHdv" + + "IGRpZmZlcmVudCBrZXlzLiBNaXJyb3JpbmcgZXZlcnl0aGluZyBpbnRvIGEgc2luZ2xlIHJlZ2lz" + + "dHJ5IHRoZQo+IGNsdXN0ZXIgYXV0aGVudGljYXRlcyB0byBhdXRvbWF0aWNhbGx5IGNvbGxhcHNl" + + "cyB0aGlzIHRvIG9uZSBjcmVkZW50aWFsIHBhdGguCgojIyMgQ29uZmlndXJpbmcgd2l0aCBLeXZl" + + "cm5vIChyZWNvbW1lbmRlZCkKClVzZSBhIEt5dmVybm8gbXV0YXRpbmcgYWRtaXNzaW9uIHBvbGlj" + + "eSB0byBhdXRvbWF0aWNhbGx5IGluamVjdCBgaW1hZ2VQdWxsU2VjcmV0c2AgaW50byBhbGwgcG9k" + + "cyBpbiBOVkNGIG5hbWVzcGFjZXMuIFRoaXMgd29ya3MgdW5pZm9ybWx5IGZvciBhbGwgY2hhcnRz" + + "IC0tIG5vIHBlci1jaGFydCBjb25maWd1cmF0aW9uIG9yIGhlbG1maWxlIG1vZGlmaWNhdGlvbnMg" + + "bmVlZGVkLgoKYGBgYmFzaAojIDEuIEluc3RhbGwgS3l2ZXJubwpoZWxtIHJlcG8gYWRkIGt5dmVy" + + "bm8gaHR0cHM6Ly9reXZlcm5vLmdpdGh1Yi5pby9reXZlcm5vLwpoZWxtIHJlcG8gdXBkYXRlCmhl" + + "bG0gaW5zdGFsbCBreXZlcm5vIGt5dmVybm8va3l2ZXJubyAtbiBreXZlcm5vIC0tY3JlYXRlLW5h" + + "bWVzcGFjZQoKIyAyLiBDcmVhdGUgcHVsbCBzZWNyZXQgaW4gZWFjaCBuYW1lc3BhY2UKZXhwb3J0" + + "IE5HQ19BUElfS0VZPSI8eW91ci1rZXk+Igpmb3IgbnMgaW4gY2Fzc2FuZHJhLXN5c3RlbSBuYXRz" + + "LXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVtIGNlcnQtbWFuYWdlcjsg" + + "ZG8KICBrdWJlY3RsIGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAog" + + "ICAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0" + + "aHRva2VuJyBcCiAgICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5h" + + "bWVzcGFjZT0iJG5zIiBcCiAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFw" + + "cGx5IC1mIC0KZG9uZQoKIyAzLiBBcHBseSB0aGUgS3l2ZXJubyBDbHVzdGVyUG9saWN5Cmt1YmVj" + + "dGwgYXBwbHkgLWYga3l2ZXJuby1pbWFnZXB1bGxzZWNyZXQtcG9saWN5LnlhbWwKYGBgCgpUaGUg" + + "cG9saWN5IG11dGF0ZXMgZXZlcnkgcG9kIGF0IGFkbWlzc2lvbiB0aW1lLCBhZGRpbmcgYGltYWdl" + + "UHVsbFNlY3JldHM6IFt7bmFtZTogbnZjci1jcmVkc31dYC4gVmVyaWZ5IHdpdGg6CgpgYGBiYXNo" + + "Cmt1YmVjdGwgZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IC1vIGpzb25wYXRoPSd7" + + "LnNwZWMuaW1hZ2VQdWxsU2VjcmV0c30nCiMgU2hvdWxkIHNob3c6IFt7Im5hbWUiOiJudmNyLWNy" + + "ZWRzIn1dCmBgYAoKTm90IG5lZWRlZCBpZiB1c2luZyBhIENTUCBidWlsdC1pbiBjcmVkZW50aWFs" + + "IGhlbHBlciAoZS5nLiwgRUNSIHdpdGggSUFNIG5vZGUgcm9sZXMpLgoKRm9yIHRoZSBLeXZlcm5v" + + "IHBvbGljeSBZQU1MIGFuZCBwdWxsIHNlY3JldCBjcmVhdGlvbiBzY3JpcHQsIHNlZSBbcmVmZXJl" + + "bmNlcy9wdWxsLXNlY3JldHMubWRdKHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKS4KCiMjIERl" + + "YnVnZ2luZwoKIyMjIFF1aWNrIHN0YXR1cyBjaGVjawoKYGBgYmFzaAprdWJlY3RsIGdldCBwb2Rz" + + "IC1BIC1vIHdpZGUgICAgICAgICAgICAgICAgICAgICAgICAjIEFsbCBwb2RzCmhlbG0gbGlzdCAt" + + "QSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFsbCBoZWxtIHJlbGVh" + + "c2VzCmt1YmVjdGwgZ2V0IGV2ZW50cyAtbiA8bnM+IC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAn" + + "ICAjIFJlY2VudCBldmVudHMKYGBgCgojIyMgQ29tbW9uIGZhaWx1cmUgcGF0dGVybnMKCnwgU3lt" + + "cHRvbSB8IENhdXNlIHwgRml4IHwKfC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tfAp8IGBJbWFnZVB1" + + "bGxCYWNrT2ZmYCArIGA0MDEgVW5hdXRob3JpemVkYCB8IE1pc3Npbmcgb3Igd3JvbmcgcHVsbCBz" + + "ZWNyZXQgfCBDaGVjayBzZWNyZXQgZXhpc3RzLCBjaGVjayBTQSBoYXMgaW1hZ2VQdWxsU2VjcmV0" + + "cyB8CnwgYEluaXQ6MC8xYCBzdHVjayBvbiBzZXJ2aWNlIHBvZHMgfCBWYXVsdC1hZ2VudCB3YWl0" + + "aW5nIGZvciBPcGVuQmFvIHwgQ2hlY2sgT3BlbkJhbyBwb2RzICsgbWlncmF0aW9uIGpvYiBzdGF0" + + "dXMgfAp8IGBJbml0OjAvMWAgKyBgdmF1bHQtYWdlbnQtaW5pdGAgc2hvd3MgYGF1dGgvand0L2xv" + + "Z2luYCAtPiBgNDAwIC4uLiBubyBrbm93biBrZXkgc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlZCB0aGUg" + + "dG9rZW4gc2lnbmF0dXJlYCB8IE9wZW5CYW8gSldUIGF1dGggY29uZmlndXJlZCB3aXRoIGEgc3Rh" + + "dGljIHB1YmtleSBpbnN0ZWFkIG9mIHRoZSBjbHVzdGVyJ3MgbGl2ZSBKV0tTIC0tIHRoZSBiYXNl" + + "IGRlZmF1bHQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogZmFs" + + "c2VgLiBDb21tb24gb24gQUtTIC8gYW55IE9JREMtaXNzdWVyIGNsdXN0ZXIgfCBTZXQgYG9wZW5i" + + "YW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxlZDogdHJ1ZWAsIGRlbGV0ZSBqb2Ig" + + "YG9wZW5iYW8tc2VydmVyLW1pZ3JhdGlvbnNgLCByZS1zeW5jIGBvcGVuYmFvLXNlcnZlcmAuIFNl" + + "ZSBbcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRdKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kKSAiSW5p" + + "dDowLzEgU3R1Y2siIGZpeCAjNC4gfAp8IGBPT01LaWxsZWRgIG9uIENhc3NhbmRyYSB8IERlZmF1" + + "bHQgcmVzb3VyY2VzIHRvbyBzbWFsbCB8IE92ZXJyaWRlIGBjYXNzYW5kcmEucmVzb3VyY2VzYCB2" + + "aWEgdmFsdWVzIGJsb2NrIHwKfCBEQi1iYWNrZWQgc2VydmljZXMgY3Jhc2gtbG9vcCBgQmFkIGNy" + + "ZWRlbnRpYWxzYCBjb25uZWN0aW5nIHRvIENhc3NhbmRyYSB8IFNlY3JldHMgZmlsZSBzZXQgb25s" + + "eSBgREVGQVVMVF9DQVNTQU5EUkFfUEFTU1dPUkRgOyBgY2Fzc2FuZHJhLnNlcnZpY2VSb2xlUGFz" + + "c3dvcmRgIHN0aWxsIGRlZmF1bHRzIHRvIGBjaEBuZzNtM2AgfCBTZXQgYGNhc3NhbmRyYS5zZXJ2" + + "aWNlUm9sZVBhc3N3b3JkYCBpbiB0aGUgc2VjcmV0cyBmaWxlIGVxdWFsIHRvIGBERUZBVUxUX0NB" + + "U1NBTkRSQV9QQVNTV09SRGAsIHRoZW4gcmUtc3luYyBjYXNzYW5kcmEgKyB0aGUgREItYmFja2Vk" + + "IHNlcnZpY2VzIHwKfCBgUGVuZGluZ2AgcG9kcyB8IE5vZGUgc2VsZWN0b3IgbWlzbWF0Y2ggb3Ig" + + "bm8gc3RvcmFnZSBjbGFzcyB8IGBrdWJlY3RsIGRlc2NyaWJlIHBvZGAsIGNoZWNrIGxhYmVscyBh" + + "bmQgc3RvcmFnZSB8CnwgSGVsbSByZWxlYXNlIGluIGBmYWlsZWRgIHN0YXRlIHwgRmlyc3QgaW5z" + + "dGFsbCBmYWlsZWQgcGFydHdheSB8IGBoZWxtZmlsZSBkZXN0cm95YCB0aGUgcmVsZWFzZSwgdGhl" + + "biBgc3luY2AgYWdhaW4gfAp8IEFjY291bnQgYm9vdHN0cmFwIHRpbWVvdXQgfCBXcm9uZyBiYXNl" + + "NjQgY3JlZGVudGlhbHMgaW4gc2VjcmV0cyBmaWxlIHwgQ2hlY2sgYGt1YmVjdGwgbG9ncyBqb2Iv" + + "bnZjZi1hcGktYWNjb3VudC1ib290c3RyYXAgLW4gbnZjZmAgfAp8IGZ1bmN0aW9uIC8gYWNjb3Vu" + + "dCBjYWxscyByZXR1cm4gYDQwNCBVbmtub3duIGNsaWVudF9pZGAgfCBUaGUgYWNjb3VudC1ib290" + + "c3RyYXAgcG9zdC1pbnN0YWxsIGhvb2sgbmV2ZXIgcmFuOiB0aGUgYGFwaWAgcmVsZWFzZSBpbnN0" + + "YWxsIGZhaWxlZCwgb3Igd2FzIHJlcGFpcmVkIHdpdGggbGl2ZSBwYXRjaGVzIGluc3RlYWQgb2Yg" + + "YSBjbGVhbiByZS1zeW5jLCBzbyB0aGUgaG9vayAoYW5kIHRoZSBhY2NvdW50KSB3YXMgc2tpcHBl" + + "ZCB8IFZlcmlmeSBhbmQgcmUtcnVuIHRoZSBob29rOyBzZWUgW1ZlcmlmeSB0aGUgYWNjb3VudCBi" + + "b290c3RyYXAgcmFuXSgjdmVyaWZ5LXRoZS1hY2NvdW50LWJvb3RzdHJhcC1yYW4pIHwKfCBTZXJ2" + + "aWNlcyBmYWlsIHRvIHJlYWQgdmF1bHQgc2VjcmV0czsgYHNlY3JldHMuanNvbmAgbm90IGZvdW5k" + + "IHwgVmF1bHQgcGF0aCBoYXJkY29kZWQgdG8gYC9ob21lL2FwcC92YXVsdC9gIGluIGBfaGVscGVy" + + "cy50cGxgOyB0aGUgcnVudGltZSByZXNvbHZlcyB0aGUgbW91bnRlZCBwYXRoIHJlbGF0aXZlIHRv" + + "IHRoZSB3b3JraW5nIGRpcmVjdG9yeSBhbmQgZHJvcHMgdGhlIGxlYWRpbmcgYC9gIHwgT3ZlcnJp" + + "ZGUgYHBvZEFubm90YXRpb25zYCBhbmQgc2V0IGBKQVZBX1RPT0xfT1BUSU9OUzogIi1EdXNlci5k" + + "aXI9LyJgIGluIHJlbGVhc2UgdmFsdWVzIHwKfCBOQVRTIGNvbm5lY3Rpb24gZmFpbHMgYXQgc3Rh" + + "cnR1cDsgcGxhY2VtZW50IHRhZyBtaXNtYXRjaCB8IE5BVFMgc2VydmVyIHRhZ3MgaGFyZGNvZGVk" + + "IHRvIGBkYzpuY3BgOyBhcHAgZGVyaXZlcyB0YWcgZnJvbSBgQVdTX1JFR0lPTmAgKGUuZy4sIGB1" + + "cy1nb3Ytd2VzdC0xYCkgfCBTZXQgYEFXU19SRUdJT049bmNwYCBhbmQgYE5WQ0ZfQVdTX1JFR0lP" + + "Tj1uY3BgIGluIGVudiBjb25maWcgfAoKIyMjIFZlcmlmeSB0aGUgYWNjb3VudCBib290c3RyYXAg" + + "cmFuCgpUaGUgZGVmYXVsdCBhY2NvdW50IGlzIGNyZWF0ZWQgYnkgYSAqKmBwb3N0LWluc3RhbGxg" + + "IGhvb2sgb24gdGhlIGBhcGlgIHJlbGVhc2UqKgooYGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3Rz" + + "dHJhcGAgaW4gYG52Y2ZgKS4gQmVjYXVzZSBpdCBpcyBhIHBvc3QtaW5zdGFsbCBob29rLCBpdCBv" + + "bmx5CmZpcmVzIG9uIGEgc3VjY2Vzc2Z1bCBgYXBpYCBpbnN0YWxsLiBJZiB0aGF0IGluc3RhbGwg" + + "ZmFpbGVkIGFuZCB5b3UgcmVwYWlyZWQgaXQgd2l0aCBsaXZlCnBhdGNoZXMgKHJhdGhlciB0aGFu" + + "IGEgY2xlYW4gcmUtc3luYyksIHRoZSBob29rIG5ldmVyIHJ1bnMsIG5vIGFjY291bnQgaXMgY3Jl" + + "YXRlZCwgYW5kCmV2ZXJ5IHN1YnNlcXVlbnQgZnVuY3Rpb24vYWNjb3VudCBjYWxsIHJldHVybnMg" + + "YSBjcnlwdGljIGA0MDQgVW5rbm93biBjbGllbnRfaWRgIHdpdGgKbm90aGluZyBvYnZpb3VzbHkg" + + "d3JvbmcgaW4gdGhlIHJ1bm5pbmcgcG9kcy4KClZlcmlmeSBpdCByYW4gYWZ0ZXIgdGhlIGZpcnN0" + + "IHN5bmM6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGpvYiAtbiBudmNmIG52Y2YtYXBpLWFjY291bnQt" + + "Ym9vdHN0cmFwIFwKICAtbyBqc29ucGF0aD0ney5zdGF0dXMuc3VjY2VlZGVkfScgICAjIGV4cGVj" + + "dCAxCmBgYAoKSWYgdGhlIGpvYiBpcyBhYnNlbnQgb3IgYDBgLCByZS1ydW4gaXQgYnkgcmUtc3lu" + + "Y2luZyB0aGUgYGFwaWAgcmVsZWFzZSBzbyB0aGUgaG9vayBmaXJlcwphZ2FpbiAoZGVsZXRlIHRo" + + "ZSBwcmlvciBqb2IgZmlyc3QgaWYgaXQgbGluZ2VycyBpbiBhIGNvbXBsZXRlZC9mYWlsZWQgc3Rh" + + "dGUgYW5kIGJsb2NrcyB0aGUKaG9vayk6CgpgYGBiYXNoCmt1YmVjdGwgZGVsZXRlIGpvYiAtbiBu" + + "dmNmIG52Y2YtYXBpLWFjY291bnQtYm9vdHN0cmFwIC0taWdub3JlLW5vdC1mb3VuZApIRUxNRklM" + + "RV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWFwaSBzeW5jCmt1YmVjdGwgbG9n" + + "cyAtbiBudmNmIGpvYi9udmNmLWFwaS1hY2NvdW50LWJvb3RzdHJhcCAgICMgY29uZmlybSB0aGUg" + + "YWNjb3VudCB3YXMgY3JlYXRlZApgYGAKCiMjIEFkZGl0aW9uYWwgUmVzb3VyY2VzCgotIEluc3Rh" + + "bGxhdGlvbjogW2V4YW1wbGVzLm1kXShleGFtcGxlcy5tZCksIHRoZSBbQ1NQIEVuZC10by1FbmQg" + + "RXhhbXBsZV0oaHR0cHM6Ly9kb2NzLm52aWRpYS5jb20vbnZjZi92MC42LjAtcmMvY3NwLWVuZC10" + + "by1lbmQtZXhhbXBsZSksIGFuZCBbc3BsaXQgY29tcHV0ZS1wbGFuZSB3b3JrZmxvd3NdKHJlZmVy" + + "ZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpCi0gT3BlcmF0aW9uczogW0hlbG1m" + + "aWxlIHN0cnVjdHVyZV0ocmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWQpLCBbcHVsbCBz" + + "ZWNyZXRzXShyZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCksIGFuZCBbZGVidWdnaW5nXShyZWZl" + + "cmVuY2VzL2RlYnVnZ2luZy5tZCkKCkFmdGVyIGRlcGxveW1lbnQsIHVzZSB0aGUgYG52Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLWNsaWAgc2tpbGwgdG8gY3JlYXRlIGZ1bmN0aW9ucywgY3JlYXRlIHRhc2tzLCBt" + + "YW5hZ2UgQVBJIGtleXMsIGFuZCBpbnZva2UgZW5kcG9pbnRzLgpQSwcIEcMUk0liAABJYgAAUEsD" + + "BBQACAAAAAAAIQAAAAAAAAAAAAAAAAA0AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + + "YXRpb24vZXZhbHMvZXZhbHMuanNvblVUBQABAKbOElsKICB7CiAgICAiaWQiOiAiRzEtdmFsaWRh" + + "dGUtdG9vbC12ZXJzaW9ucyIsCiAgICAicXVlc3Rpb24iOiAiSW5zdGFsbCB0aGUgTlZDRiBzZWxm" + + "LW1hbmFnZWQgc3RhY2sgb24gbXkgQVdTIEVLUyBjbHVzdGVyIiwKICAgICJleHBlY3RlZF9za2ls" + + "bCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6" + + "ICJUaGUgYWdlbnQncyBmaXJzdCBvcGVyYXRpb25hbCBzdGVwIGFmdGVyIHJlYWRpbmcgdGhlIHNr" + + "aWxsIHdhcyB0byB2YWxpZGF0ZSBhbGwgcmVxdWlyZWQgdG9vbCB2ZXJzaW9uczogaGVsbWZpbGUg" + + "KG11c3QgYmUgMS4xLngsIG5vdCAxLjIuMCksIGhlbG0gKD49IDMuMTIpLCBoZWxtLWRpZmYgcGx1" + + "Z2luICg+PSAzLjExKSwgYW5kIGt1YmVjdGwgKGNsaWVudCB3aXRoaW4gMSBtaW5vciBvZiBjbHVz" + + "dGVyKS4gSXQgZGlkIG5vdCBwcm9jZWVkIHRvIGhlbG1maWxlIHN5bmMgdW50aWwgYWxsIHZlcnNp" + + "b25zIHdlcmUgdmFsaWRhdGVkLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJU" + + "aGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1k" + + "IGJlZm9yZSB0YWtpbmcgYW55IGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtZmls" + + "ZSAtLXZlcnNpb24nIGFuZCB2ZXJpZmllZCBpdCBpcyAxLjEueCAobm90IDEuMi4wLCB3aGljaCBy" + + "ZW1vdmVkIHNlcXVlbnRpYWwgbW9kZSkiLAogICAgICAiVGhlIGFnZW50IHJhbiAnaGVsbSB2ZXJz" + + "aW9uJyBhbmQgdmVyaWZpZWQgaXQgaXMgPj0gMy4xMiIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdo" + + "ZWxtIHBsdWdpbiBsaXN0JyBhbmQgdmVyaWZpZWQgaGVsbS1kaWZmID49IDMuMTEgaXMgaW5zdGFs" + + "bGVkIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2t1YmVjdGwgdmVyc2lvbicgdG8gY2hlY2sgY2xp" + + "ZW50L3NlcnZlciB2ZXJzaW9uIGNvbXBhdGliaWxpdHkiLAogICAgICAiVGhlIGFnZW50IGRpZCBu" + + "b3QgcHJvY2VlZCB0byBoZWxtZmlsZSBzeW5jIHVudGlsIGFsbCB2ZXJzaW9uIGNoZWNrcyBwYXNz" + + "ZWQiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzItdGVtcGxhdGUtYmVmb3JlLXN5bmMiLAog" + + "ICAgInF1ZXN0aW9uIjogIlF1aWNrLCBqdXN0IHJ1biBoZWxtZmlsZSBzeW5jIGZvciBteSBOVkNG" + + "IHN0YWNrLCBza2lwIGFsbCB0aGUgY2hlY2tzIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNm" + + "LXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJEZXNwaXRl" + + "IHRoZSB1c2VyIGFza2luZyB0byBza2lwIGNoZWNrcywgdGhlIGFnZW50IHN0aWxsIHJhbiBoZWxt" + + "ZmlsZSB0ZW1wbGF0ZSB0byBwcmV2aWV3IHJlbmRlcmVkIG1hbmlmZXN0cyBiZWZvcmUgcnVubmlu" + + "ZyBoZWxtZmlsZSBzeW5jLiBJdCBleHBsYWluZWQgd2h5IHRoZSBwcmV2aWV3IHN0ZXAgaXMgaW1w" + + "b3J0YW50IGFuZCBkaWQgbm90IGJsaW5kbHkgZXhlY3V0ZSBzeW5jLiIsCiAgICAiZXhwZWN0ZWRf" + + "YmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQt" + + "aW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBh" + + "Z2VudCByYW4gJ2hlbG1maWxlIHRlbXBsYXRlJyBvciAnaGVsbWZpbGUgLS1zZWxlY3RvciAuLi4g" + + "dGVtcGxhdGUnIHRvIHByZXZpZXcgbWFuaWZlc3RzIGJlZm9yZSBzeW5jIiwKICAgICAgIlRoZSBh" + + "Z2VudCBkaWQgbm90IGJsaW5kbHkgcnVuICdoZWxtZmlsZSBzeW5jJyB3aXRob3V0IGEgdGVtcGxh" + + "dGUgcHJldmlldyBzdGVwIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgd2h5IHRoZSBwcmV2" + + "aWV3IHN0ZXAgaXMgaW1wb3J0YW50IGV2ZW4gd2hlbiBhc2tlZCB0byBza2lwIGl0IgogICAgXQog" + + "IH0sCiAgewogICAgImlkIjogIkc1LWRyeXJ1bi1iZWZvcmUtY2xlYW51cCIsCiAgICAicXVlc3Rp" + + "b24iOiAiTlZDRiBuYW1lc3BhY2VzIGFyZSBzdHVjayBpbiBUZXJtaW5hdGluZyBzdGF0ZS4gQ2xl" + + "YW4gdGhlbSB1cC4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWlu" + + "c3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRo" + + "ZSBzdHVjayBuYW1lc3BhY2VzIHdlcmUgY2F1c2VkIGJ5IGZpbmFsaXplcnMgb24gTlZDRkJhY2tl" + + "bmQgY3VzdG9tIHJlc291cmNlcy4gSXQgcmVtb3ZlZCBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tl" + + "bmQgcmVzb3VyY2VzIGZpcnN0LCB0aGVuIGNsZWFyZWQgbmFtZXNwYWNlIGZpbmFsaXplcnMgdG8g" + + "Zm9yY2UtZGVsZXRlIHRoZSBzdHVjayBuYW1lc3BhY2VzLiBJdCBvbmx5IHRhcmdldGVkIE5WQ0Yt" + + "bWFuYWdlZCBuYW1lc3BhY2VzIChudmNhLW9wZXJhdG9yLCBudmNmLWJhY2tlbmQpIGFuZCBkaWQg" + + "bm90IHRvdWNoIG90aGVyIGNsdXN0ZXIgcmVzb3VyY2VzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZp" + + "b3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + + "bGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBj" + + "b25maXJtZWQgYW5kIHVzZWQgdGhlIGNvbXB1dGUtcGxhbmUgY29udGV4dCBmb3IgYWxsIGNsZWFu" + + "dXAgY29tbWFuZHMiLAogICAgICAiVGhlIGFnZW50IHVzZWQga3ViZWN0bCB0byBwYXRjaCBOVkNG" + + "QmFja2VuZCByZXNvdXJjZXMgdG8gcmVtb3ZlIHRoZWlyIGZpbmFsaXplcnMiLAogICAgICAiVGhl" + + "IGFnZW50IHVzZWQga3ViZWN0bCByZXBsYWNlIC0tcmF3IHRvIGNsZWFyIG5hbWVzcGFjZSBmaW5h" + + "bGl6ZXJzIG9uIHN0dWNrIG5hbWVzcGFjZXMiLAogICAgICAiVGhlIGFnZW50IG9ubHkgdGFyZ2V0" + + "ZWQgTlZDRi1tYW5hZ2VkIG5hbWVzcGFjZXMgKG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkg" + + "YW5kIGRpZCBub3QgdG91Y2ggb3RoZXIgY2x1c3RlciByZXNvdXJjZXMiLAogICAgICAiVGhlIGFn" + + "ZW50IGRpZCBub3QganVtcCBkaXJlY3RseSB0byBuYW1lc3BhY2UgZGVsZXRpb24gd2l0aG91dCBm" + + "aXJzdCByZW1vdmluZyBmaW5hbGl6ZXJzIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkc2LWhl" + + "bG1maWxlLXNwbGl0LXdvcmtmbG93IiwKICAgICJxdWVzdGlvbiI6ICJJbnN0YWxsIGFuIE5WQ0Yg" + + "Y29udHJvbCBwbGFuZSBhbmQgYSBzZXBhcmF0ZSBFS1MgY29tcHV0ZSBwbGFuZSB1c2luZyB0aGUg" + + "SGVsbWZpbGUgc3RhY2tzLiBUaGUgY29tcHV0ZSBjbHVzdGVyIGt1YmVjb25maWcgaXMgY29tcHV0" + + "ZS55YW1sLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + + "bGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGtlcHQgdGhlIEhlbG1maWxl" + + "IHZhbHVlcyBmbG93IGluZGVwZW5kZW50IGZyb20gdGhlIENMSSBwcm9maWxlIGZsb3cuIEl0IGF1" + + "dGhvcmVkIHNlcGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1l" + + "bnQgZmlsZXMgcGx1cyBhIGJhcmUtR2F0ZXdheSBDTEkgY29uZmlnIHdpdGggVVJMIGFuZCBzY2hl" + + "bWUtbGVzcyBIb3N0IGZpZWxkcywgaW5zdGFsbGVkIHRoZSBjb250cm9sIHBsYW5lLCByYW4gdGhl" + + "IGNvbXB1dGUtcGxhbmUgTWFrZWZpbGUgcmVnaXN0ZXItY2x1c3RlciB0YXJnZXQgd2l0aCBJQ01T" + + "X1VSTCBhbmQgdGhlIGNvbXB1dGUga3ViZWNvbmZpZywgdGhlbiByYW4gdGhlIGNvbXB1dGUtcGxh" + + "bmUgaW5zdGFsbCB0YXJnZXQgd2l0aCB0aGUgc2FtZSBlbnZpcm9ubWVudCBhbmQga3ViZWNvbmZp" + + "Zy4gSXQgcmVsaWVkIG9uIHJlZ2lzdHJhdGlvbiB0byBkaXNjb3ZlciBPSURDIGFuZCBKV0tTIGZy" + + "b20gdGhlIGNvbXB1dGUgY29udGV4dC4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAg" + + "ICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lM" + + "TC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgYXV0aG9yZWQgc2Vw" + + "YXJhdGUgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwgZmlsZXMgdW5kZXIgZGVwbG95L3N0YWNrcy9z" + + "ZWxmLW1hbmFnZWQgYW5kIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIiwKICAgICAg" + + "IlRoZSBhZ2VudCBpbnN0YWxsZWQgdGhlIGNvbnRyb2wgcGxhbmUgYmVmb3JlIHJlZ2lzdGVyaW5n" + + "IG9yIGluc3RhbGxpbmcgdGhlIGNvbXB1dGUgcGxhbmUiLAogICAgICAiVGhlIGFnZW50IGNvbmZp" + + "Z3VyZWQgYmFzZV9odHRwX3VybCwgaW52b2tlX3VybCwgYmFzZV9ncnBjX3VybCwgYXBpX2tleXNf" + + "c2VydmljZV91cmwsIGljbXNfdXJsLCBhcGlfaG9zdCwgYXBpX2tleXNfaG9zdCwgaW52b2tlX2hv" + + "c3QsIGFuZCBpY21zX2hvc3QgZm9yIHRoZSBiYXJlIEdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50" + + "IHVzZWQgJ21ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgcmVnaXN0ZXIt" + + "Y2x1c3Rlcicgd2l0aCBDTFVTVEVSX05BTUUsIE5DQV9JRCwgQ0xVU1RFUl9SRUdJT04sIElDTVNf" + + "VVJMLCBhbmQgS1VCRUNPTkZJR19GSUxFPWNvbXB1dGUueWFtbCIsCiAgICAgICJUaGUgYWdlbnQg" + + "dXNlZCAnbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBpbnN0YWxsJyB3" + + "aXRoIENMVVNURVJfTkFNRSwgSEVMTUZJTEVfRU5WLCBhbmQgS1VCRUNPTkZJR19GSUxFPWNvbXB1" + + "dGUueWFtbCIsCiAgICAgICJUaGUgYWdlbnQgc3RhdGVkIHRoYXQgSUNNU19VUkwgbWFwcyBvbmx5" + + "IHRvIC0taWNtcy11cmwsIGNvbmZpZyBpY21zX2hvc3Qgc3VwcGxpZXMgdGhlIEhvc3QgaGVhZGVy" + + "LCB0aGVyZSBpcyBubyAtLWljbXMtaG9zdCBNYWtlIG9yIENMSSBmbGFnLCBhbmQgcmVnaXN0cmF0" + + "aW9uIGRpc2NvdmVycyBPSURDIGFuZCBKV0tTIGZyb20gdGhlIGNvbXB1dGUgY29udGV4dCIsCiAg" + + "ICAgICJUaGUgYWdlbnQgZGlkIG5vdCByZXF1aXJlIGEgY29udHJvbC1wbGFuZSBwcm9maWxlIGZv" + + "ciB0aGlzIGZsb3cgYW5kIGRpZCBub3QgbWl4IGluIENMSSBwcm9maWxlIGNvbW1hbmRzIgogICAg" + + "XQogIH0sCiAgewogICAgImlkIjogIkc3LWJvdGgtZG9ja2VyLWhlbG0tYXV0aCIsCiAgICAicXVl" + + "c3Rpb24iOiAiQXV0aGVudGljYXRlIHRvIE5HQyBmb3IgTlZDRiBoZWxtZmlsZSBkZXBsb3ltZW50" + + "IiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24i" + + "LAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgcmFuIGJvdGggZG9ja2VyIGxvZ2luIGFu" + + "ZCBoZWxtIHJlZ2lzdHJ5IGxvZ2luIGZvciBudmNyLmlvLiBJdCBleHBsYWluZWQgdGhhdCBib3Ro" + + "IGFyZSByZXF1aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90IGRvY2tlcikgdG8g" + + "cHVsbCBPQ0kgY2hhcnRzLCBzbyBkb2NrZXIgbG9naW4gYWxvbmUgaXMgaW5zdWZmaWNpZW50LiIs" + + "CiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZj" + + "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9u" + + "IiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2RvY2tlciBsb2dpbiBudmNyLmlvJyB3aXRoICRvYXV0" + + "aHRva2VuIHVzZXJuYW1lIGFuZCBOR0NfQVBJX0tFWSBwYXNzd29yZCIsCiAgICAgICJUaGUgYWdl" + + "bnQgcmFuICdoZWxtIHJlZ2lzdHJ5IGxvZ2luIG52Y3IuaW8nIHdpdGggJG9hdXRodG9rZW4gdXNl" + + "cm5hbWUgYW5kIE5HQ19BUElfS0VZIHBhc3N3b3JkIiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWlu" + + "ZWQgdGhhdCBib3RoIGFyZSByZXF1aXJlZCBiZWNhdXNlIGhlbG1maWxlIHVzZXMgaGVsbSAobm90" + + "IGRvY2tlcikgdG8gcHVsbCBPQ0kgY2hhcnRzIiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHBy" + + "b3ZpZGUgb25seSBvbmUgb2YgdGhlIHR3byBhdXRoZW50aWNhdGlvbiBjb21tYW5kcyIKICAgIF0K" + + "ICB9LAogIHsKICAgICJpZCI6ICJHOS1taXNzaW5nLWJ1bmRsZSIsCiAgICAicXVlc3Rpb24iOiAi" + + "UnVuIGhlbG1maWxlIHN5bmMgZm9yIE5WQ0YgaW4gbXkgY3VycmVudCBkaXJlY3RvcnkiLAogICAg" + + "ImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAi" + + "Z3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBhdHRlbXB0ZWQgdG8gdmVyaWZ5IHRoZSBidW5kbGUg" + + "c3RydWN0dXJlIChoZWxtZmlsZS5kLywgZW52aXJvbm1lbnRzLywgc2VjcmV0cy8sIGdsb2JhbC55" + + "YW1sLmdvdG1wbCkgYW5kIHdoZW4gZmlsZXMgd2VyZSBub3QgZm91bmQsIHN0b3BwZWQgYW5kIGlu" + + "c3RydWN0ZWQgdGhlIHVzZXIgdG8gZXh0cmFjdCBvciBsb2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5h" + + "Z2VkLXN0YWNrIGJ1bmRsZS4gSXQgZGlkIG5vdCBhdHRlbXB0IHRvIHJ1biBoZWxtZmlsZSBzeW5j" + + "IGFnYWluc3QgYSBtaXNzaW5nIGJ1bmRsZS4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwog" + + "ICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBT" + + "S0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBm" + + "b3IgZXhwZWN0ZWQgYnVuZGxlIHN0cnVjdHVyZSAoaGVsbWZpbGUuZC8sIGVudmlyb25tZW50cy8s" + + "IHNlY3JldHMvLCBnbG9iYWwueWFtbC5nb3RtcGwpIiwKICAgICAgIldoZW4gYnVuZGxlIGZpbGVz" + + "IHdlcmUgbm90IGZvdW5kLCB0aGUgYWdlbnQgc3RvcHBlZCBhbmQgZGlkIG5vdCBhdHRlbXB0IGhl" + + "bG1maWxlIHN5bmMiLAogICAgICAiVGhlIGFnZW50IGluc3RydWN0ZWQgdGhlIHVzZXIgdG8gZXh0" + + "cmFjdCBvciBsb2NhdGUgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrIGJ1bmRsZSIKICAgIF0K" + + "ICB9LAogIHsKICAgICJpZCI6ICJTMS1jbGVhbi1pbnN0YWxsYXRpb24iLAogICAgInF1ZXN0aW9u" + + "IjogIlBlcmZvcm0gYSBjbGVhbiBpbnN0YWxsYXRpb24gb2YgdGhlIE5WQ0Ygc2VsZi1tYW5hZ2Vk" + + "IHN0YWNrIG9uIG15IEFXUyBFS1MgY2x1c3Rlci4gTXkgZW52aXJvbm1lbnQgbmFtZSBpcyAnc3Rh" + + "Z2luZycuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + + "YXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgY29tcGxldGVkIHRoZSBjb250" + + "cm9sLXBsYW5lIGluc3RhbGxhdGlvbiBmaXJzdDogdmFsaWRhdGVkIHRvb2xzIGFuZCBidW5kbGUg" + + "c3RydWN0dXJlLCBjcmVhdGVkIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNsdWRpbmcgY2Vy" + + "dC1tYW5hZ2VyLCBhdXRoZW50aWNhdGVkIHRoZSByZWdpc3RyaWVzLCBwcmV2aWV3ZWQsIGRlcGxv" + + "eWVkLCBhbmQgbW9uaXRvcmVkIHRoZSBmb3VyIGNvbnRyb2wtcGxhbmUgcGhhc2VzLiBJdCB0aGVu" + + "IHNlbGVjdGVkIG9uZSBkb2N1bWVudGVkIGhhbmRvZmYgYW5kIHJlZ2lzdGVyZWQgYW5kIGluc3Rh" + + "bGxlZCB0aGUgY29tcHV0ZSBwbGFuZSBhcyBhIHNlcGFyYXRlIHN0YWNrIHdpdGhvdXQgbWl4aW5n" + + "IHByb2ZpbGUgYW5kIEhlbG1maWxlIHZhbHVlcyBmbG93cy4iLAogICAgImV4cGVjdGVkX2JlaGF2" + + "aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + + "bGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQg" + + "dmFsaWRhdGVkIHRvb2wgdmVyc2lvbnMgKGhlbG1maWxlLCBoZWxtLCBoZWxtLWRpZmYsIGt1YmVj" + + "dGwpIiwKICAgICAgIlRoZSBhZ2VudCB2ZXJpZmllZCB0aGUgYnVuZGxlIHN0cnVjdHVyZSBleGlz" + + "dHMiLAogICAgICAiVGhlIGFnZW50IGNyZWF0ZWQgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIChj" + + "YXNzYW5kcmEtc3lzdGVtLCBuYXRzLXN5c3RlbSwgbnZjZiwgYXBpLWtleXMsIGVzcywgc2lzLCB2" + + "YXVsdC1zeXN0ZW0sIGNlcnQtbWFuYWdlcikgd2l0aG91dCBhZGRpbmcgY29tcHV0ZS1vbmx5IG5h" + + "bWVzcGFjZXMiLAogICAgICAiVGhlIGFnZW50IHJhbiAnSEVMTUZJTEVfRU5WPXN0YWdpbmcgaGVs" + + "bWZpbGUgdGVtcGxhdGUnIHRvIHByZXZpZXcgYmVmb3JlIGRlcGxveWluZyIsCiAgICAgICJUaGUg" + + "YWdlbnQgcmFuICdIRUxNRklMRV9FTlY9c3RhZ2luZyBoZWxtZmlsZSBzeW5jJyB0byBkZXBsb3ki" + + "LAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgNCBjb250cm9sLXBsYW5lIHBoYXNlcyAo" + + "ZGVwZW5kZW5jaWVzLCBzZXJ2aWNlcywgaW5ncmVzcywgb2JzZXJ2YWJpbGl0eSkgYW5kIGFwcHJv" + + "eGltYXRlIHdhaXQgdGltZXMiLAogICAgICAiQWZ0ZXIgdGhlIGNvbnRyb2wgcGxhbmUgd2FzIGhl" + + "YWx0aHksIHRoZSBhZ2VudCByZWdpc3RlcmVkIGFuZCBpbnN0YWxsZWQgdGhlIHNlcGFyYXRlIGNv" + + "bXB1dGUtcGxhbmUgc3RhY2sgdXNpbmcgZXhhY3RseSBvbmUgZG9jdW1lbnRlZCBoYW5kb2ZmIiwK" + + "ICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IG1peCBhIENMSS1nZW5lcmF0ZWQgY29udHJvbC1wbGFu" + + "ZSBwcm9maWxlIHdpdGggdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93IgogICAgXQogIH0sCiAgewog" + + "ICAgImlkIjogIlMzLWNsaS1wcm9maWxlLXdvcmtmbG93IiwKICAgICJxdWVzdGlvbiI6ICJVc2Ug" + + "bnZjZi1jbGkgdG8gaW5zdGFsbCBteSBjb250cm9sIHBsYW5lIGFuZCB0aGVuIHJlZ2lzdGVyIGFu" + + "ZCBpbnN0YWxsIGEgc2VwYXJhdGUgY29tcHV0ZSBjbHVzdGVyLiBTaG93IGV2ZXJ5IHJlcXVpcmVk" + + "IGdsb2JhbCBmbGFnLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQt" + + "aW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGZpcnN0IHJhbiB0" + + "aGUgQ0xJIGNvbnRyb2wtcGxhbmUgaW5zdGFsbCBhbmQgcmVxdWlyZWQgaXRzIGdlbmVyYXRlZCBj" + + "b250cm9sLXBsYW5lLXByb2ZpbGUueWFtbC4gSXQgdGhlbiBzaG93ZWQgY29tcGxldGUgcmVnaXN0" + + "ZXIgYW5kIGluc3RhbGwgY29tbWFuZHMsIGVhY2ggaW5jbHVkaW5nIC0tY29uZmlnLCAtLWNvbnRy" + + "b2wtcGxhbmUtc3RhY2ssIC0tY29tcHV0ZS1wbGFuZS1zdGFjaywgLS1lbnYsIGFuZCAtLXBsYWlu" + + "IGJlZm9yZSB0aGUgY29tcHV0ZS1wbGFuZSBzdWJjb21tYW5kLiBSZWdpc3RyYXRpb24gY29uc3Vt" + + "ZWQgdGhlIHByb2ZpbGUgYW5kIHByb2R1Y2VkIHRoZSB2YWx1ZXMgZmlsZSBjb25zdW1lZCBieSBp" + + "bnN0YWxsLiBJdCBkaWQgbm90IHN3aXRjaCB0byB0aGUgSGVsbWZpbGUgdmFsdWVzIGhhbmRvZmYu" + "IiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBu" + - "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhbnkg" + - "YWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG1maWxlIC0tdmVyc2lvbicgYW5kIHZl" + - "cmlmaWVkIGl0IGlzIDEuMS54IChub3QgMS4yLjAsIHdoaWNoIHJlbW92ZWQgc2VxdWVudGlhbCBt" + - "b2RlKSIsCiAgICAgICJUaGUgYWdlbnQgcmFuICdoZWxtIHZlcnNpb24nIGFuZCB2ZXJpZmllZCBp" + - "dCBpcyA+PSAzLjEyIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG0gcGx1Z2luIGxpc3QnIGFu" + - "ZCB2ZXJpZmllZCBoZWxtLWRpZmYgPj0gMy4xMSBpcyBpbnN0YWxsZWQiLAogICAgICAiVGhlIGFn" + - "ZW50IHJhbiAna3ViZWN0bCB2ZXJzaW9uJyB0byBjaGVjayBjbGllbnQvc2VydmVyIHZlcnNpb24g" + - "Y29tcGF0aWJpbGl0eSIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm9jZWVkIHRvIGhlbG1m" + - "aWxlIHN5bmMgdW50aWwgYWxsIHZlcnNpb24gY2hlY2tzIHBhc3NlZCIKICAgIF0KICB9LAogIHsK" + - "ICAgICJpZCI6ICJHMi10ZW1wbGF0ZS1iZWZvcmUtc3luYyIsCiAgICAicXVlc3Rpb24iOiAiUXVp" + - "Y2ssIGp1c3QgcnVuIGhlbG1maWxlIHN5bmMgZm9yIG15IE5WQ0Ygc3RhY2ssIHNraXAgYWxsIHRo" + - "ZSBjaGVja3MiLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + - "bGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIkRlc3BpdGUgdGhlIHVzZXIgYXNraW5nIHRv" + - "IHNraXAgY2hlY2tzLCB0aGUgYWdlbnQgc3RpbGwgcmFuIGhlbG1maWxlIHRlbXBsYXRlIHRvIHBy" + - "ZXZpZXcgcmVuZGVyZWQgbWFuaWZlc3RzIGJlZm9yZSBydW5uaW5nIGhlbG1maWxlIHN5bmMuIEl0" + - "IGV4cGxhaW5lZCB3aHkgdGhlIHByZXZpZXcgc3RlcCBpcyBpbXBvcnRhbnQgYW5kIGRpZCBub3Qg" + - "YmxpbmRseSBleGVjdXRlIHN5bmMuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAg" + - "IlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwu" + - "bWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IHJhbiAnaGVsbWZpbGUg" + - "dGVtcGxhdGUnIG9yICdoZWxtZmlsZSAtLXNlbGVjdG9yIC4uLiB0ZW1wbGF0ZScgdG8gcHJldmll" + - "dyBtYW5pZmVzdHMgYmVmb3JlIHN5bmMiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgYmxpbmRs" + - "eSBydW4gJ2hlbG1maWxlIHN5bmMnIHdpdGhvdXQgYSB0ZW1wbGF0ZSBwcmV2aWV3IHN0ZXAiLAog" + - "ICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB3aHkgdGhlIHByZXZpZXcgc3RlcCBpcyBpbXBvcnRh" + - "bnQgZXZlbiB3aGVuIGFza2VkIHRvIHNraXAgaXQiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAi" + - "RzUtZHJ5cnVuLWJlZm9yZS1jbGVhbnVwIiwKICAgICJxdWVzdGlvbiI6ICJOVkNGIG5hbWVzcGFj" + - "ZXMgYXJlIHN0dWNrIGluIFRlcm1pbmF0aW5nIHN0YXRlLiBDbGVhbiB0aGVtIHVwLiIsCiAgICAi" + - "ZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJn" + - "cm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGlkZW50aWZpZWQgdGhlIHN0dWNrIG5hbWVzcGFjZXMg" + - "d2VyZSBjYXVzZWQgYnkgZmluYWxpemVycyBvbiBOVkNGQmFja2VuZCBjdXN0b20gcmVzb3VyY2Vz" + - "LiBJdCByZW1vdmVkIGZpbmFsaXplcnMgZnJvbSBOVkNGQmFja2VuZCByZXNvdXJjZXMgZmlyc3Qs" + - "IHRoZW4gY2xlYXJlZCBuYW1lc3BhY2UgZmluYWxpemVycyB0byBmb3JjZS1kZWxldGUgdGhlIHN0" + - "dWNrIG5hbWVzcGFjZXMuIEl0IG9ubHkgdGFyZ2V0ZWQgTlZDRi1tYW5hZ2VkIG5hbWVzcGFjZXMg" + - "KG52Y2Etb3BlcmF0b3IsIG52Y2YtYmFja2VuZCkgYW5kIGRpZCBub3QgdG91Y2ggb3RoZXIgY2x1" + - "c3RlciByZXNvdXJjZXMuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBh" + - "Z2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVm" + - "b3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGNvbmZpcm1lZCBhbmQgdXNlZCB0" + - "aGUgY29tcHV0ZS1wbGFuZSBjb250ZXh0IGZvciBhbGwgY2xlYW51cCBjb21tYW5kcyIsCiAgICAg" + - "ICJUaGUgYWdlbnQgdXNlZCBrdWJlY3RsIHRvIHBhdGNoIE5WQ0ZCYWNrZW5kIHJlc291cmNlcyB0" + - "byByZW1vdmUgdGhlaXIgZmluYWxpemVycyIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCBrdWJlY3Rs" + - "IHJlcGxhY2UgLS1yYXcgdG8gY2xlYXIgbmFtZXNwYWNlIGZpbmFsaXplcnMgb24gc3R1Y2sgbmFt" + - "ZXNwYWNlcyIsCiAgICAgICJUaGUgYWdlbnQgb25seSB0YXJnZXRlZCBOVkNGLW1hbmFnZWQgbmFt" + - "ZXNwYWNlcyAobnZjYS1vcGVyYXRvciwgbnZjZi1iYWNrZW5kKSBhbmQgZGlkIG5vdCB0b3VjaCBv" + - "dGhlciBjbHVzdGVyIHJlc291cmNlcyIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBqdW1wIGRp" + - "cmVjdGx5IHRvIG5hbWVzcGFjZSBkZWxldGlvbiB3aXRob3V0IGZpcnN0IHJlbW92aW5nIGZpbmFs" + - "aXplcnMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzYtaGVsbWZpbGUtc3BsaXQtd29ya2Zs" + - "b3ciLAogICAgInF1ZXN0aW9uIjogIkluc3RhbGwgYW4gTlZDRiBjb250cm9sIHBsYW5lIGFuZCBh" + - "IHNlcGFyYXRlIEVLUyBjb21wdXRlIHBsYW5lIHVzaW5nIHRoZSBIZWxtZmlsZSBzdGFja3MuIFRo" + - "ZSBjb21wdXRlIGNsdXN0ZXIga3ViZWNvbmZpZyBpcyBjb21wdXRlLnlhbWwuIiwKICAgICJleHBl" + + "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rp" + + "b24iLAogICAgICAiVGhlIGFnZW50IHJhbiBudmNmLWNsaSBzZWxmLWhvc3RlZCBpbnN0YWxsIC0t" + + "Y29udHJvbC1wbGFuZSBhbmQgdmVyaWZpZWQgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0" + + "L2NvbnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sIGV4aXN0cyIsCiAgICAgICJUaGUgcmVnaXN0ZXIg" + + "Y29tbWFuZCBpbmNsdWRlZCAtLWNvbmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAtLWNvbXB1" + + "dGUtcGxhbmUtc3RhY2ssIC0tZW52LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgcmVnaXN0ZXIg" + + "Y29tbWFuZCBpbmNsdWRlZCAtLWNvbnRyb2wtcGxhbmUtcHJvZmlsZSwgLS1jbHVzdGVyLW5hbWUs" + + "IC0ta3ViZS1jb250ZXh0LCAtLXJlZ2lvbiwgYW5kIC0tb3V0cHV0IiwKICAgICAgIlRoZSBpbnN0" + + "YWxsIGNvbW1hbmQgcmVwZWF0ZWQgLS1jb25maWcsIC0tY29udHJvbC1wbGFuZS1zdGFjaywgLS1j" + + "b21wdXRlLXBsYW5lLXN0YWNrLCAtLWVudiwgYW5kIC0tcGxhaW4iLAogICAgICAiVGhlIGluc3Rh" + + "bGwgY29tbWFuZCBpbmNsdWRlZCAtLXZhbHVlcywgLS1rdWJlLWNvbnRleHQsIGFuZCAtLWNsdXN0" + + "ZXItbmFtZSIsCiAgICAgICJUaGUgYWdlbnQga2VwdCB0aGUgZ2VuZXJhdGVkIHByb2ZpbGUgYXMg" + + "dGhlIGVuZHBvaW50IHNvdXJjZSBhbmQgZGlkIG5vdCBtaXggaW4gSGVsbWZpbGUgdmFsdWVzIHJl" + + "Z2lzdHJhdGlvbiIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTNC1vdmVycmlkZS1jYXNzYW5k" + + "cmEtcmVzb3VyY2VzIiwKICAgICJxdWVzdGlvbiI6ICJDYXNzYW5kcmEgcG9kcyBrZWVwIGdldHRp" + + "bmcgT09NS2lsbGVkLiBJbmNyZWFzZSBtZW1vcnkgbGltaXRzIHRvIDE2R2kuIiwKICAgICJleHBl" + "Y3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3Vu" + - "ZF90cnV0aCI6ICJUaGUgYWdlbnQga2VwdCB0aGUgSGVsbWZpbGUgdmFsdWVzIGZsb3cgaW5kZXBl" + - "bmRlbnQgZnJvbSB0aGUgQ0xJIHByb2ZpbGUgZmxvdy4gSXQgYXV0aG9yZWQgc2VwYXJhdGUgY29u" + - "dHJvbC1wbGFuZSBhbmQgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCBmaWxlcyBwbHVzIGEgYmFy" + - "ZS1HYXRld2F5IENMSSBjb25maWcgd2l0aCBVUkwgYW5kIHNjaGVtZS1sZXNzIEhvc3QgZmllbGRz" + - "LCBpbnN0YWxsZWQgdGhlIGNvbnRyb2wgcGxhbmUsIHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBNYWtl" + - "ZmlsZSByZWdpc3Rlci1jbHVzdGVyIHRhcmdldCB3aXRoIElDTVNfVVJMIGFuZCB0aGUgY29tcHV0" + - "ZSBrdWJlY29uZmlnLCB0aGVuIHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBpbnN0YWxsIHRhcmdldCB3" + - "aXRoIHRoZSBzYW1lIGVudmlyb25tZW50IGFuZCBrdWJlY29uZmlnLiBJdCByZWxpZWQgb24gcmVn" + - "aXN0cmF0aW9uIHRvIGRpc2NvdmVyIE9JREMgYW5kIEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBjb250" + - "ZXh0LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0" + - "aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcg" + - "YWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBhdXRob3JlZCBzZXBhcmF0ZSBlbnZpcm9ubWVudHMv" + - "PGVudj4ueWFtbCBmaWxlcyB1bmRlciBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBhbmQgZGVw" + - "bG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUiLAogICAgICAiVGhlIGFnZW50IGluc3RhbGxl" + - "ZCB0aGUgY29udHJvbCBwbGFuZSBiZWZvcmUgcmVnaXN0ZXJpbmcgb3IgaW5zdGFsbGluZyB0aGUg" + - "Y29tcHV0ZSBwbGFuZSIsCiAgICAgICJUaGUgYWdlbnQgY29uZmlndXJlZCBiYXNlX2h0dHBfdXJs" + - "LCBpbnZva2VfdXJsLCBiYXNlX2dycGNfdXJsLCBhcGlfa2V5c19zZXJ2aWNlX3VybCwgaWNtc191" + - "cmwsIGFwaV9ob3N0LCBhcGlfa2V5c19ob3N0LCBpbnZva2VfaG9zdCwgYW5kIGljbXNfaG9zdCBm" + - "b3IgdGhlIGJhcmUgR2F0ZXdheSIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnbWFrZSAtQyBkZXBs" + - "b3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSByZWdpc3Rlci1jbHVzdGVyJyB3aXRoIENMVVNU" + - "RVJfTkFNRSwgTkNBX0lELCBDTFVTVEVSX1JFR0lPTiwgSUNNU19VUkwsIGFuZCBLVUJFQ09ORklH" + - "X0ZJTEU9Y29tcHV0ZS55YW1sIiwKICAgICAgIlRoZSBhZ2VudCB1c2VkICdtYWtlIC1DIGRlcGxv" + - "eS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGluc3RhbGwnIHdpdGggQ0xVU1RFUl9OQU1FLCBI" + - "RUxNRklMRV9FTlYsIGFuZCBLVUJFQ09ORklHX0ZJTEU9Y29tcHV0ZS55YW1sIiwKICAgICAgIlRo" + - "ZSBhZ2VudCBzdGF0ZWQgdGhhdCBJQ01TX1VSTCBtYXBzIG9ubHkgdG8gLS1pY21zLXVybCwgY29u" + - "ZmlnIGljbXNfaG9zdCBzdXBwbGllcyB0aGUgSG9zdCBoZWFkZXIsIHRoZXJlIGlzIG5vIC0taWNt" + - "cy1ob3N0IE1ha2Ugb3IgQ0xJIGZsYWcsIGFuZCByZWdpc3RyYXRpb24gZGlzY292ZXJzIE9JREMg" + - "YW5kIEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0IiwKICAgICAgIlRoZSBhZ2VudCBkaWQg" + - "bm90IHJlcXVpcmUgYSBjb250cm9sLXBsYW5lIHByb2ZpbGUgZm9yIHRoaXMgZmxvdyBhbmQgZGlk" + - "IG5vdCBtaXggaW4gQ0xJIHByb2ZpbGUgY29tbWFuZHMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQi" + - "OiAiRzctYm90aC1kb2NrZXItaGVsbS1hdXRoIiwKICAgICJxdWVzdGlvbiI6ICJBdXRoZW50aWNh" + - "dGUgdG8gTkdDIGZvciBOVkNGIGhlbG1maWxlIGRlcGxveW1lbnQiLAogICAgImV4cGVjdGVkX3Nr" + - "aWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRo" + - "IjogIlRoZSBhZ2VudCByYW4gYm90aCBkb2NrZXIgbG9naW4gYW5kIGhlbG0gcmVnaXN0cnkgbG9n" + - "aW4gZm9yIG52Y3IuaW8uIEl0IGV4cGxhaW5lZCB0aGF0IGJvdGggYXJlIHJlcXVpcmVkIGJlY2F1" + - "c2UgaGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0byBwdWxsIE9DSSBjaGFydHMsIHNv" + - "IGRvY2tlciBsb2dpbiBhbG9uZSBpcyBpbnN1ZmZpY2llbnQuIiwKICAgICJleHBlY3RlZF9iZWhh" + + "ZF90cnV0aCI6ICJUaGUgYWdlbnQgY2FwdHVyZWQgdGhlIGJhc2VsaW5lIHdpdGggaGVsbWZpbGUg" + + "dGVtcGxhdGUsIHRoZW4gbW9kaWZpZWQgdGhlIGNhc3NhbmRyYSByZWxlYXNlIHdpdGggaW5saW5l" + + "IHZhbHVlcyByZS1pbmNsdWRpbmcgZ2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNyZXRzIGluIHRo" + + "ZSB2YWx1ZXMgYmxvY2suIEl0IHdhcm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGEgYW5k" + + "IHByZXZpZXdlZCB0aGUgZGlmZiBiZWZvcmUgYXBwbHlpbmcuIiwKICAgICJleHBlY3RlZF9iZWhh" + "dmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0" + "YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50" + - "IHJhbiAnZG9ja2VyIGxvZ2luIG52Y3IuaW8nIHdpdGggJG9hdXRodG9rZW4gdXNlcm5hbWUgYW5k" + - "IE5HQ19BUElfS0VZIHBhc3N3b3JkIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ2hlbG0gcmVnaXN0" + - "cnkgbG9naW4gbnZjci5pbycgd2l0aCAkb2F1dGh0b2tlbiB1c2VybmFtZSBhbmQgTkdDX0FQSV9L" + - "RVkgcGFzc3dvcmQiLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGF0IGJvdGggYXJlIHJl" + - "cXVpcmVkIGJlY2F1c2UgaGVsbWZpbGUgdXNlcyBoZWxtIChub3QgZG9ja2VyKSB0byBwdWxsIE9D" + - "SSBjaGFydHMiLAogICAgICAiVGhlIGFnZW50IGRpZCBub3QgcHJvdmlkZSBvbmx5IG9uZSBvZiB0" + - "aGUgdHdvIGF1dGhlbnRpY2F0aW9uIGNvbW1hbmRzIgogICAgXQogIH0sCiAgewogICAgImlkIjog" + - "Ikc5LW1pc3NpbmctYnVuZGxlIiwKICAgICJxdWVzdGlvbiI6ICJSdW4gaGVsbWZpbGUgc3luYyBm" + - "b3IgTlZDRiBpbiBteSBjdXJyZW50IGRpcmVjdG9yeSIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAi" + + "IGNhcHR1cmVkIGJhc2VsaW5lIHdpdGggJ2hlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5k" + + "cmEgdGVtcGxhdGUnIiwKICAgICAgIlRoZSBhZ2VudCBtb2RpZmllZCB0aGUgcmVsZWFzZSB2YWx1" + + "ZXMgYmxvY2sgdG8gaW5jbHVkZSByZXNvdXJjZSBsaW1pdHMgd2l0aCBtZW1vcnk6IDE2R2kiLAog" + + "ICAgICAiVGhlIGFnZW50IHJlLWluY2x1ZGVkIGdsb2JhbC55YW1sLmdvdG1wbCBhbmQgc2VjcmV0" + + "cyBmaWxlIGluIHRoZSB2YWx1ZXM6IGJsb2NrIChub3QganVzdCB0aGUgb3ZlcnJpZGUgYWxvbmUp" + + "IiwKICAgICAgIlRoZSBhZ2VudCB3YXJuZWQgYWJvdXQgdGhlIFlBTUwgbWVyZ2UgZ290Y2hhOiBz" + + "cGVjaWZ5aW5nIHZhbHVlczogcmVwbGFjZXMgdGhlIHRlbXBsYXRlJ3MgdmFsdWVzIGxpc3QgZW50" + + "aXJlbHkiLAogICAgICAiVGhlIGFnZW50IHByZXZpZXdlZCB0aGUgY2hhbmdlIHdpdGggaGVsbWZp" + + "bGUgdGVtcGxhdGUgYW5kIGRpZmYgYmVmb3JlIGFwcGx5aW5nIHdpdGggc3luYyIKICAgIF0KICB9" + + "LAogIHsKICAgICJpZCI6ICJTNi1zZWxlY3RpdmUtc3luYy1kZXBlbmRlbmNpZXMiLAogICAgInF1" + + "ZXN0aW9uIjogIkRlcGxveSBvbmx5IHRoZSBOVkNGIGRlcGVuZGVuY2llcyAtLSBOQVRTLCBDYXNz" + + "YW5kcmEsIGFuZCBPcGVuQmFvIC0tIGZvciB0ZXN0aW5nIiwKICAgICJleHBlY3RlZF9za2lsbCI6" + + "ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJU" + + "aGUgYWdlbnQgdXNlZCB0aGUgaGVsbWZpbGUgc2VsZWN0b3IgdG8gZGVwbG95IG9ubHkgdGhlIGRl" + + "cGVuZGVuY2llcyByZWxlYXNlIGdyb3VwLCB0aGVuIHZlcmlmaWVkIHBvZHMgaW4gdGhlIGRlcGVu" + + "ZGVuY3kgbmFtZXNwYWNlcy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhl" + + "IGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBi" + + "ZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgdXNlZCAnaGVsbWZpbGUgLS1z" + + "ZWxlY3RvciByZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llcyBzeW5jJyB0byBkZXBsb3kgb25seSBk" + + "ZXBlbmRlbmNpZXMiLAogICAgICAiVGhlIGFnZW50IHZlcmlmaWVkIHBvZHMgaW4gZGVwZW5kZW5j" + + "eSBuYW1lc3BhY2VzIChuYXRzLXN5c3RlbSwgY2Fzc2FuZHJhLXN5c3RlbSwgdmF1bHQtc3lzdGVt" + + "KSIsCiAgICAgICJUaGUgYWdlbnQgcHJvdmlkZWQgdGhlIHNlbGVjdG9yIHJlZmVyZW5jZSBmb3Ig" + + "dGFyZ2V0aW5nIG90aGVyIHJlbGVhc2UgZ3JvdXBzIgogICAgXQogIH0sCiAgewogICAgImlkIjog" + + "IlM3LWRlYnVnLWltYWdlcHVsbGJhY2tvZmYiLAogICAgInF1ZXN0aW9uIjogIkNhc3NhbmRyYSBw" + + "b2RzIGFyZSBpbiBJbWFnZVB1bGxCYWNrT2ZmIHdpdGggNDAxIFVuYXV0aG9yaXplZCIsCiAgICAi" + + "ZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJn" + + "cm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IHJlYWQgdGhlIGRlYnVnZ2luZyByZWZlcmVuY2UgYW5k" + + "IHJhbiBkaWFnbm9zdGljIGNvbW1hbmRzIHRvIGlkZW50aWZ5IHRoZSByb290IGNhdXNlOiBkZXNj" + + "cmliZWQgdGhlIHBvZCwgY2hlY2tlZCBmb3IgcHVsbCBzZWNyZXRzLCBjaGVja2VkIGltYWdlUHVs" + + "bFNlY3JldHMgb24gdGhlIHBvZCBzcGVjIGFuZCBzZXJ2aWNlIGFjY291bnQuIEl0IGlkZW50aWZp" + + "ZWQgdGhlIGlzc3VlIChtaXNzaW5nIHNlY3JldCwgd3JvbmcgY3JlZGVudGlhbHMsIG9yIG1pc3Np" + + "bmcgaW1hZ2VQdWxsU2VjcmV0cykgYW5kIHByb3ZpZGVkIHRoZSBjb3JyZWN0IGZpeC4iLAogICAg" + + "ImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBhbmQgcmVmZXJlbmNlcy9kZWJ1Z2dpbmcu" + + "bWQiLAogICAgICAiVGhlIGFnZW50IHJhbiAna3ViZWN0bCBkZXNjcmliZSBwb2QnIHRvIHNlZSB0" + + "aGUgSW1hZ2VQdWxsQmFja09mZiBldmVudHMiLAogICAgICAiVGhlIGFnZW50IGNoZWNrZWQgZm9y" + + "IHB1bGwgc2VjcmV0cyBpbiB0aGUgY2Fzc2FuZHJhLXN5c3RlbSBuYW1lc3BhY2UiLAogICAgICAi" + + "VGhlIGFnZW50IGNoZWNrZWQgaW1hZ2VQdWxsU2VjcmV0cyBvbiB0aGUgcG9kIHNwZWMgYW5kL29y" + + "IHNlcnZpY2UgYWNjb3VudCIsCiAgICAgICJUaGUgYWdlbnQgaWRlbnRpZmllZCB0aGUgcm9vdCBj" + + "YXVzZSBhbmQgcHJvdmlkZWQgYSBzcGVjaWZpYyBmaXgiCiAgICBdCiAgfSwKICB7CiAgICAiaWQi" + + "OiAiUzktcmVtb3RlLWVrcy1yb3V0aW5nLWFuZC1zZWNyZXRzIiwKICAgICJxdWVzdGlvbiI6ICJD" + + "b25maWd1cmUgYSByZW1vdGUgRUtTIGNvbXB1dGUgY2x1c3RlciB0byByZWFjaCBteSBOVkNGIGNv" + + "bnRyb2wgcGxhbmUgdGhyb3VnaCBpdHMgRW52b3kgR2F0ZXdheSwgaW5jbHVkaW5nIE5BVFMgYW5k" + + "IHByaXZhdGUtcmVnaXN0cnkgcHVsbCBzZWNyZXRzLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAi" + "bnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhl" + - "IGFnZW50IGF0dGVtcHRlZCB0byB2ZXJpZnkgdGhlIGJ1bmRsZSBzdHJ1Y3R1cmUgKGhlbG1maWxl" + - "LmQvLCBlbnZpcm9ubWVudHMvLCBzZWNyZXRzLywgZ2xvYmFsLnlhbWwuZ290bXBsKSBhbmQgd2hl" + - "biBmaWxlcyB3ZXJlIG5vdCBmb3VuZCwgc3RvcHBlZCBhbmQgaW5zdHJ1Y3RlZCB0aGUgdXNlciB0" + - "byBleHRyYWN0IG9yIGxvY2F0ZSB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sgYnVuZGxlLiBJ" + - "dCBkaWQgbm90IGF0dGVtcHQgdG8gcnVuIGhlbG1maWxlIHN5bmMgYWdhaW5zdCBhIG1pc3Npbmcg" + - "YnVuZGxlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVh" + - "ZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtp" + - "bmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBjaGVja2VkIGZvciBleHBlY3RlZCBidW5kbGUg" + - "c3RydWN0dXJlIChoZWxtZmlsZS5kLywgZW52aXJvbm1lbnRzLywgc2VjcmV0cy8sIGdsb2JhbC55" + - "YW1sLmdvdG1wbCkiLAogICAgICAiV2hlbiBidW5kbGUgZmlsZXMgd2VyZSBub3QgZm91bmQsIHRo" + - "ZSBhZ2VudCBzdG9wcGVkIGFuZCBkaWQgbm90IGF0dGVtcHQgaGVsbWZpbGUgc3luYyIsCiAgICAg" + - "ICJUaGUgYWdlbnQgaW5zdHJ1Y3RlZCB0aGUgdXNlciB0byBleHRyYWN0IG9yIGxvY2F0ZSB0aGUg" + - "bnZjZi1zZWxmLW1hbmFnZWQtc3RhY2sgYnVuZGxlIgogICAgXQogIH0sCiAgewogICAgImlkIjog" + - "IlMxLWNsZWFuLWluc3RhbGxhdGlvbiIsCiAgICAicXVlc3Rpb24iOiAiUGVyZm9ybSBhIGNsZWFu" + - "IGluc3RhbGxhdGlvbiBvZiB0aGUgTlZDRiBzZWxmLW1hbmFnZWQgc3RhY2sgb24gbXkgQVdTIEVL" + - "UyBjbHVzdGVyLiBNeSBlbnZpcm9ubWVudCBuYW1lIGlzICdzdGFnaW5nJy4iLAogICAgImV4cGVj" + + "IGFnZW50IGNvbmZpZ3VyZWQgdGhlIGNvbnRyb2wgcGxhbmUgdG8gdXNlIHRoZSBFbnZveSBHYXRl" + + "d2F5IGNvbnRyb2xsZXIgaW4gZW52b3ktZ2F0ZXdheS1zeXN0ZW0gYW5kIEdhdGV3YXkvbnZjZi1n" + + "YXRld2F5IGluIGVudm95LWdhdGV3YXksIHNldCBhbGwgc2l4IHJlbW90ZSB3b3JrZXIgZW5kcG9p" + + "bnRzIGFuZCB0aGUgZ3JwYy1wcm94eSBsb2NhbCBvdmVycmlkZSwgZW5hYmxlZCBOVkNGIGFuZCBO" + + "VkNUIGdSUEMgcm91dGVzIHBsdXMgTkFUUywgYW5kIGVuYWJsZWQgT3BlbkJhbyBpc3N1ZXIgZGlz" + + "Y292ZXJ5LiBJdCBjb25maWd1cmVkIHRoZSBiYXJlLUdhdGV3YXkgQ0xJIFVSTCBhbmQgSG9zdCBm" + + "aWVsZHMgaW5jbHVkaW5nIGljbXNfaG9zdCwgcGx1cyB0aGUgY29tcHV0ZS1wbGFuZSBJQ01TLCBS" + + "ZVZhbCwgYW5kIE5BVFMgZXh0ZXJuYWwgVVJMcyBhbmQgaG9zdCBvdmVycmlkZXMuIEl0IGNyZWF0" + + "ZWQgdGhlIHB1bGwgc2VjcmV0IGluIGFsbCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMgaW5jbHVk" + + "aW5nIGNlcnQtbWFuYWdlciwgYnV0IG9ubHkgaW4gbnZjYS1vcGVyYXRvciBvbiB0aGUgY29tcHV0" + + "ZSBjbHVzdGVyOyB0aGUgY2hhcnQgYW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0byBudmNhLXN5c3Rl" + + "bS4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhl" + + "IG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFj" + + "dGlvbiIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGluZ3Jlc3MuZ2F0ZXdheUFwaS5jb250cm9sbGVy" + + "TmFtZXNwYWNlIHRvIGVudm95LWdhdGV3YXktc3lzdGVtIiwKICAgICAgIlRoZSBhZ2VudCBzZXQg" + + "c2hhcmVkLCBncnBjLCBhbmQgbmF0cyBHYXRld2F5IHJlZmVyZW5jZXMgdG8gbmFtZSBudmNmLWdh" + + "dGV3YXkgYW5kIG5hbWVzcGFjZSBlbnZveS1nYXRld2F5IiwKICAgICAgIlRoZSBhZ2VudCBzZXQg" + + "Z2xvYmFsLndvcmtlckVuZHBvaW50cy5udmNmU2VydmljZVVSTCwgbnZjZkdycGNTZXJ2aWNlVVJM" + + "LCBudmNmTmF0c1NlcnZpY2VVUkwsIG52Y3RTZXJ2aWNlVVJMLCBudmN0R3JwY1NlcnZpY2VVUkws" + + "IGFuZCBpbnZvY2F0aW9uU2VydmljZVVSTCIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGdycGNwcm94" + + "eS5udmNmR3JwY1NlcnZpY2VVUkwgdG8gdGhlIGNvbnRyb2wtcGxhbmUtbG9jYWwgQVBJIGdSUEMg" + + "c2VydmljZSIsCiAgICAgICJUaGUgYWdlbnQgZW5hYmxlZCBib3RoIGluZ3Jlc3MuZ2F0ZXdheUFw" + + "aS5yb3V0ZXMubnZjZkFwaS5ncnBjIGFuZCBudmN0QXBpLmdycGMgd2l0aCB3b3JrZXItYXBpIGFu" + + "ZCB3b3JrZXItdGFza3MgaG9zdG5hbWVzIiwKICAgICAgIlRoZSBhZ2VudCBleHBsaWNpdGx5IHNl" + + "dCBpbmdyZXNzLmdhdGV3YXlBcGkucm91dGVzLm5hdHMuZW5hYmxlZCB0byB0cnVlIiwKICAgICAg" + + "IlRoZSBhZ2VudCBzZXQgb3BlbmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVk" + + "IHRvIHRydWUiLAogICAgICAiVGhlIGFnZW50IGNvbmZpZ3VyZWQgdGhlIGJhcmUtR2F0ZXdheSBD" + + "TEkgVVJMIGFuZCBIb3N0IGZpZWxkcywgaW5jbHVkaW5nIHNjaGVtZS1sZXNzIGljbXNfaG9zdCIs" + + "CiAgICAgICJUaGUgYWdlbnQgY29uZmlndXJlZCBjb21wdXRlLXBsYW5lIGljbXNTZXJ2aWNlVVJM" + + "LCBpY21zU2VydmljZUhvc3RIZWFkZXJPdmVycmlkZSwgcmV2YWxTZXJ2aWNlVVJMLCByZXZhbFNl" + + "cnZpY2VIb3N0SGVhZGVyT3ZlcnJpZGUsIG5hdHNVUkwsIGFuZCBuYXRzSG9zdE92ZXJyaWRlIiwK" + + "ICAgICAgIlRoZSBjb250cm9sLXBsYW5lIHB1bGwtc2VjcmV0IG5hbWVzcGFjZSBsaXN0IGluY2x1" + + "ZGVkIGNlcnQtbWFuYWdlciIsCiAgICAgICJUaGUgY29tcHV0ZS1wbGFuZSBzZWNyZXQgd2FzIGNy" + + "ZWF0ZWQgb25seSBpbiBudmNhLW9wZXJhdG9yIGFuZCBtaXJyb3JlZCBieSB0aGUgY2hhcnQgYW5k" + + "IG9wZXJhdG9yIHRvIG52Y2Etc3lzdGVtIgogICAgXQogIH0sCiAgewogICAgImlkIjogIkcxMS1z" + + "cGxpdC10ZWFyZG93biIsCiAgICAicXVlc3Rpb24iOiAiVGVhciBkb3duIG15IHNwbGl0IGNvbnRy" + + "b2wtcGxhbmUgYW5kIGNvbXB1dGUtcGxhbmUgZGVwbG95bWVudCBzYWZlbHkuIFNob3cgYm90aCB0" + + "aGUgSGVsbWZpbGUgdmFsdWVzIGFuZCBDTEkgcHJvZmlsZSB2YXJpYW50cy4iLAogICAgImV4cGVj" + "dGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5k" + - "X3RydXRoIjogIlRoZSBhZ2VudCBjb21wbGV0ZWQgdGhlIGNvbnRyb2wtcGxhbmUgaW5zdGFsbGF0" + - "aW9uIGZpcnN0OiB2YWxpZGF0ZWQgdG9vbHMgYW5kIGJ1bmRsZSBzdHJ1Y3R1cmUsIGNyZWF0ZWQg" + - "Y29udHJvbC1wbGFuZSBuYW1lc3BhY2VzIGluY2x1ZGluZyBjZXJ0LW1hbmFnZXIsIGF1dGhlbnRp" + - "Y2F0ZWQgdGhlIHJlZ2lzdHJpZXMsIHByZXZpZXdlZCwgZGVwbG95ZWQsIGFuZCBtb25pdG9yZWQg" + - "dGhlIGZvdXIgY29udHJvbC1wbGFuZSBwaGFzZXMuIEl0IHRoZW4gc2VsZWN0ZWQgb25lIGRvY3Vt" + - "ZW50ZWQgaGFuZG9mZiBhbmQgcmVnaXN0ZXJlZCBhbmQgaW5zdGFsbGVkIHRoZSBjb21wdXRlIHBs" + - "YW5lIGFzIGEgc2VwYXJhdGUgc3RhY2sgd2l0aG91dCBtaXhpbmcgcHJvZmlsZSBhbmQgSGVsbWZp" + - "bGUgdmFsdWVzIGZsb3dzLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUg" + - "YWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJl" + - "Zm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCB2YWxpZGF0ZWQgdG9vbCB2ZXJz" + - "aW9ucyAoaGVsbWZpbGUsIGhlbG0sIGhlbG0tZGlmZiwga3ViZWN0bCkiLAogICAgICAiVGhlIGFn" + - "ZW50IHZlcmlmaWVkIHRoZSBidW5kbGUgc3RydWN0dXJlIGV4aXN0cyIsCiAgICAgICJUaGUgYWdl" + - "bnQgY3JlYXRlZCBjb250cm9sLXBsYW5lIG5hbWVzcGFjZXMgKGNhc3NhbmRyYS1zeXN0ZW0sIG5h" + - "dHMtc3lzdGVtLCBudmNmLCBhcGkta2V5cywgZXNzLCBzaXMsIHZhdWx0LXN5c3RlbSwgY2VydC1t" + - "YW5hZ2VyKSB3aXRob3V0IGFkZGluZyBjb21wdXRlLW9ubHkgbmFtZXNwYWNlcyIsCiAgICAgICJU" + - "aGUgYWdlbnQgcmFuICdIRUxNRklMRV9FTlY9c3RhZ2luZyBoZWxtZmlsZSB0ZW1wbGF0ZScgdG8g" + - "cHJldmlldyBiZWZvcmUgZGVwbG95aW5nIiwKICAgICAgIlRoZSBhZ2VudCByYW4gJ0hFTE1GSUxF" + - "X0VOVj1zdGFnaW5nIGhlbG1maWxlIHN5bmMnIHRvIGRlcGxveSIsCiAgICAgICJUaGUgYWdlbnQg" + - "ZXhwbGFpbmVkIHRoZSA0IGNvbnRyb2wtcGxhbmUgcGhhc2VzIChkZXBlbmRlbmNpZXMsIHNlcnZp" + - "Y2VzLCBpbmdyZXNzLCBvYnNlcnZhYmlsaXR5KSBhbmQgYXBwcm94aW1hdGUgd2FpdCB0aW1lcyIs" + - "CiAgICAgICJBZnRlciB0aGUgY29udHJvbCBwbGFuZSB3YXMgaGVhbHRoeSwgdGhlIGFnZW50IHJl" + - "Z2lzdGVyZWQgYW5kIGluc3RhbGxlZCB0aGUgc2VwYXJhdGUgY29tcHV0ZS1wbGFuZSBzdGFjayB1" + - "c2luZyBleGFjdGx5IG9uZSBkb2N1bWVudGVkIGhhbmRvZmYiLAogICAgICAiVGhlIGFnZW50IGRp" + - "ZCBub3QgbWl4IGEgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBsYW5lIHByb2ZpbGUgd2l0aCB0aGUg" + - "SGVsbWZpbGUgdmFsdWVzIGZsb3ciCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzMtY2xpLXBy" + - "b2ZpbGUtd29ya2Zsb3ciLAogICAgInF1ZXN0aW9uIjogIlVzZSBudmNmLWNsaSB0byBpbnN0YWxs" + - "IG15IGNvbnRyb2wgcGxhbmUgYW5kIHRoZW4gcmVnaXN0ZXIgYW5kIGluc3RhbGwgYSBzZXBhcmF0" + - "ZSBjb21wdXRlIGNsdXN0ZXIuIFNob3cgZXZlcnkgcmVxdWlyZWQgZ2xvYmFsIGZsYWcuIiwKICAg" + - "ICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAg" + - "Imdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZmlyc3QgcmFuIHRoZSBDTEkgY29udHJvbC1wbGFu" + - "ZSBpbnN0YWxsIGFuZCByZXF1aXJlZCBpdHMgZ2VuZXJhdGVkIGNvbnRyb2wtcGxhbmUtcHJvZmls" + - "ZS55YW1sLiBJdCB0aGVuIHNob3dlZCBjb21wbGV0ZSByZWdpc3RlciBhbmQgaW5zdGFsbCBjb21t" + - "YW5kcywgZWFjaCBpbmNsdWRpbmcgLS1jb25maWcsIC0tY29udHJvbC1wbGFuZS1zdGFjaywgLS1j" + - "b21wdXRlLXBsYW5lLXN0YWNrLCAtLWVudiwgYW5kIC0tcGxhaW4gYmVmb3JlIHRoZSBjb21wdXRl" + - "LXBsYW5lIHN1YmNvbW1hbmQuIFJlZ2lzdHJhdGlvbiBjb25zdW1lZCB0aGUgcHJvZmlsZSBhbmQg" + - "cHJvZHVjZWQgdGhlIHZhbHVlcyBmaWxlIGNvbnN1bWVkIGJ5IGluc3RhbGwuIEl0IGRpZCBub3Qg" + - "c3dpdGNoIHRvIHRoZSBIZWxtZmlsZSB2YWx1ZXMgaGFuZG9mZi4iLAogICAgImV4cGVjdGVkX2Jl" + - "aGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWlu" + - "c3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdl" + - "bnQgcmFuIG52Y2YtY2xpIHNlbGYtaG9zdGVkIGluc3RhbGwgLS1jb250cm9sLXBsYW5lIGFuZCB2" + - "ZXJpZmllZCBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1wbGFuZS1wcm9m" + - "aWxlLnlhbWwgZXhpc3RzIiwKICAgICAgIlRoZSByZWdpc3RlciBjb21tYW5kIGluY2x1ZGVkIC0t" + - "Y29uZmlnLCAtLWNvbnRyb2wtcGxhbmUtc3RhY2ssIC0tY29tcHV0ZS1wbGFuZS1zdGFjaywgLS1l" + - "bnYsIGFuZCAtLXBsYWluIiwKICAgICAgIlRoZSByZWdpc3RlciBjb21tYW5kIGluY2x1ZGVkIC0t" + - "Y29udHJvbC1wbGFuZS1wcm9maWxlLCAtLWNsdXN0ZXItbmFtZSwgLS1rdWJlLWNvbnRleHQsIC0t" + - "cmVnaW9uLCBhbmQgLS1vdXRwdXQiLAogICAgICAiVGhlIGluc3RhbGwgY29tbWFuZCByZXBlYXRl" + - "ZCAtLWNvbmZpZywgLS1jb250cm9sLXBsYW5lLXN0YWNrLCAtLWNvbXB1dGUtcGxhbmUtc3RhY2ss" + - "IC0tZW52LCBhbmQgLS1wbGFpbiIsCiAgICAgICJUaGUgaW5zdGFsbCBjb21tYW5kIGluY2x1ZGVk" + - "IC0tdmFsdWVzLCAtLWt1YmUtY29udGV4dCwgYW5kIC0tY2x1c3Rlci1uYW1lIiwKICAgICAgIlRo" + - "ZSBhZ2VudCBrZXB0IHRoZSBnZW5lcmF0ZWQgcHJvZmlsZSBhcyB0aGUgZW5kcG9pbnQgc291cmNl" + - "IGFuZCBkaWQgbm90IG1peCBpbiBIZWxtZmlsZSB2YWx1ZXMgcmVnaXN0cmF0aW9uIgogICAgXQog" + - "IH0sCiAgewogICAgImlkIjogIlM0LW92ZXJyaWRlLWNhc3NhbmRyYS1yZXNvdXJjZXMiLAogICAg" + - "InF1ZXN0aW9uIjogIkNhc3NhbmRyYSBwb2RzIGtlZXAgZ2V0dGluZyBPT01LaWxsZWQuIEluY3Jl" + - "YXNlIG1lbW9yeSBsaW1pdHMgdG8gMTZHaS4iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Yt" + + "X3RydXRoIjogIlRoZSBIZWxtZmlsZSBmbG93IGRlc3Ryb3llZCBhbmQgY29uZmlybWVkIGRlcmVn" + + "aXN0cmF0aW9uIG9mIGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciBiZWZvcmUgZGVzdHJveWluZyB0aGUg" + + "Y29udHJvbCBwbGFuZSBhbmQgcGFzc2VkIGJvdGggY29udHJvbC1wbGFuZSBrdWJlY29uZmlnIGZv" + + "cm1zLiBCZWZvcmUgZWl0aGVyIGhhbmRvZmYgY291bGQgZGVzdHJveSB0aGUgY29udHJvbCBwbGFu" + + "ZSwgYm90aCB0ZWFyZG93biBmbG93cyB3YXJuZWQgdGhhdCBuYW1lc3BhY2UgcHJlc2VydmF0aW9u" + + "IGRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UsIHJlcXVpcmVkIGVmZmVjdGl2ZSBj" + + "ZXJ0TWFuYWdlci5lbmFibGVkOiBmYWxzZSBmb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uIGFu" + + "ZCBhYm9ydGVkIGlmIHRydWUsIGFuZCB2ZXJpZmllZCBtYXRjaGluZyByZWxlYXNlIG93bmVyc2hp" + + "cCBmb3IgYW4gaW50ZW5kZWQgc3RhY2stbWFuYWdlZCByZWxlYXNlLCBhYm9ydGluZyBvbiBtaXNz" + + "aW5nIG9yIG1pc21hdGNoZWQgZXZpZGVuY2UuIFRoZXkgcHJlc2VydmVkIHRoZSBuYW1lc3BhY2Ug" + + "YnkgZGVmYXVsdCBhbmQgZGlkIG5vdCBkZWxldGUgaXQgd2l0aG91dCBuYW1lc3BhY2UgcHJvdmVu" + + "YW5jZSBhbmQgZXhwbGljaXQgY29uZmlybWF0aW9uLiBUaGUgQ0xJIGZsb3cgcmV0YWluZWQgdGhl" + + "IGdlbmVyYXRlZCByZWdpc3RyYXRpb24gdmFsdWVzLCB1c2VkIHRoZSBmdWxsLXByZWZpeCBzdGF0" + + "dXMgY29tbWFuZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywgc3RhdGVkIHRoYXQgbmFt" + + "ZWQtY2x1c3RlciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkgSUNNUyBhbmQgY2Fubm90IHByZWRp" + + "Y3QgY29uZGl0aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLCBhbmQgZ290IGV4cGxpY2l0IGNv" + + "bmZpcm1hdGlvbiB3aGVuIHRoZSB0YXJnZXQgd2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3Rl" + + "ci4gSXQgdGhlbiBwcmV2aWV3ZWQgYW5kIHJhbiBkb3duIHdpdGggdGhlIGZ1bGwgcGVyc2lzdGVu" + + "dCBwcmVmaXgsIHJlbW92aW5nIHRoZSBjb250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgdGhlIGxhc3Qg" + + "cmVnaXN0cmF0aW9uIHdhcyBnb25lLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAg" + + "ICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxM" + + "Lm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIkZvciBldmVyeSBjb21wdXRlIGNsdXN0" + + "ZXIsIHRoZSBIZWxtZmlsZSBmbG93IHJhbiB0aGUgY29tcHV0ZS1wbGFuZSBNYWtlZmlsZSBkZXN0" + + "cm95IHRhcmdldCB3aXRoIGl0cyBjb21wdXRlIGt1YmVjb25maWciLAogICAgICAiQWZ0ZXIgY29u" + + "ZmlybWF0aW9uLCB0aGUgSGVsbWZpbGUgZmxvdyByYW4gY2x1c3RlciBkZWxldGUgd2l0aCBjbHVz" + + "dGVySUQgYW5kIG5jYUlEIGJlZm9yZSBjb250cm9sLXBsYW5lIGRlc3RydWN0aW9uIiwKICAgICAg" + + "IkJlZm9yZSBlaXRoZXIgaGFuZG9mZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBi" + + "b3RoIHRlYXJkb3duIGZsb3dzIHdhcm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9l" + + "cyBub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZlIGNlcnRN" + + "YW5hZ2VyLmVuYWJsZWQ6IGZhbHNlIGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24gYW5kIGFi" + + "b3J0ZWQgaWYgdHJ1ZSwgYW5kIHZlcmlmaWVkIGludGVuZGVkIHN0YWNrIG93bmVyc2hpcCB3aGVu" + + "IGVuYWJsZWQsIGFib3J0aW5nIG9uIG1pc3Npbmcgb3IgbWlzbWF0Y2hlZCBldmlkZW5jZSIsCiAg" + + "ICAgICJCb3RoIHRlYXJkb3duIGZsb3dzIHByZXNlcnZlZCB0aGUgY2VydC1tYW5hZ2VyIG5hbWVz" + + "cGFjZSBieSBkZWZhdWx0IGFuZCBkaWQgbm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBw" + + "cm92ZW5hbmNlIGFuZCBleHBsaWNpdCBjb25maXJtYXRpb24iLAogICAgICAiVGhlIEhlbG1maWxl" + + "IGZsb3cgcmFuIGNvbnRyb2wtcGxhbmUgTWFrZWZpbGUgZGVzdHJveSB3aXRoIGJvdGggS1VCRUNP" + + "TkZJRyBhbmQgS1VCRUNPTkZJR19GSUxFIiwKICAgICAgIlRoZSBDTEkgZmxvdyByZXRhaW5lZCBv" + + "dXQvPGNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWwgdW50aWwgdGVhcmRvd24gY29t" + + "cGxldGVkIiwKICAgICAgIkJlZm9yZSByZWFsIGRvd24sIHRoZSBDTEkgZmxvdyB1c2VkIHRoZSBm" + + "dWxsLXByZWZpeCBzdGF0dXMgY29tbWFuZCB0byBpbnNwZWN0IGxpdmUgcmVnaXN0cmF0aW9ucywg" + + "c3RhdGVkIHRoYXQgbmFtZWQtY2x1c3RlciBwbGFuLW9ubHkgZG9lcyBub3QgcXVlcnkgSUNNUyBh" + + "bmQgY2Fubm90IHByZWRpY3QgY29uZGl0aW9uYWwgY29udHJvbC1wbGFuZSByZW1vdmFsLCB3YXJu" + + "ZWQgd2hlbiB0aGUgdGFyZ2V0IHdhcyB0aGUgbGFzdCByZWdpc3RlcmVkIGNsdXN0ZXIsIGFuZCBn" + + "b3QgZXhwbGljaXQgY29uZmlybWF0aW9uIiwKICAgICAgIlRoZSBDTEkgZmxvdyB1c2VkIC0tY29u" + + "ZmlnLCBib3RoIHN0YWNrIHBhdGhzLCAtLWVudiwgLS1wbGFpbiwgYm90aCBjb250ZXh0cywgYW5k" + + "IC0taWNtcy11cmwgZm9yIGRvd24gLS1wbGFuLW9ubHkgYW5kIHRoZW4gZG93biIsCiAgICAgICJU" + + "aGUgYWdlbnQgc3RhdGVkIHRoYXQgZG93biB1bnJlZ2lzdGVycyBlYWNoIGNvbXB1dGUgY2x1c3Rl" + + "ciBhbmQgcmVtb3ZlcyB0aGUgY29udHJvbCBwbGFuZSBvbmx5IGFmdGVyIG5vIHJlZ2lzdHJhdGlv" + + "bnMgcmVtYWluIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMxMy12YWx1ZXMtcHJlY2VkZW5j" + + "ZSIsCiAgICAicXVlc3Rpb24iOiAiSSBhZGRlZCBhIHZhbHVlIHRvIG15IGVudmlyb25tZW50IFlB" + + "TUwgYnV0IGl0J3MgYmVpbmcgc2lsZW50bHkgaWdub3JlZC4gSG93IGRvIGhlbG1maWxlIHZhbHVl" + + "cyB3b3JrIGluIE5WQ0Y/IiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdl" + + "ZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgZXhwbGFpbmVk" + + "IHRoZSB2YWx1ZXMgcHJlY2VkZW5jZSBjaGFpbiAoYmFzZS55YW1sLCBlbnYgWUFNTCwgZ2xvYmFs" + + "LnlhbWwuZ290bXBsLCBzZWNyZXRzLCBpbmxpbmUgdmFsdWVzKSwgaWRlbnRpZmllZCB0aGF0IGds" + + "b2JhbC55YW1sLmdvdG1wbCBvbmx5IHBhc3NlcyB0aHJvdWdoIHNwZWNpZmljIGtleXMsIGFuZCBl" + + "eHBsYWluZWQgdGhhdCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzIG11c3QgdXNlIHJlbGVhc2UgaW5s" + + "aW5lIHZhbHVlcyBibG9ja3MuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRo" + + "ZSBhZ2VudCByZWFkIHRoZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQg" + + "YmVmb3JlIHRha2luZyBhY3Rpb24iLAogICAgICAiVGhlIGFnZW50IGV4cGxhaW5lZCB0aGUgdmFs" + + "dWVzIHByZWNlZGVuY2UgY2hhaW46IGJhc2UueWFtbCAtPiBlbnYgWUFNTCAtPiBnbG9iYWwueWFt" + + "bC5nb3RtcGwgLT4gc2VjcmV0cyAtPiBpbmxpbmUgdmFsdWVzIiwKICAgICAgIlRoZSBhZ2VudCBp" + + "ZGVudGlmaWVkIHRoYXQgZ2xvYmFsLnlhbWwuZ290bXBsIG9ubHkgcGFzc2VzIHRocm91Z2ggc3Bl" + + "Y2lmaWMga2V5cyAoY2Fzc2FuZHJhLnJlcGxpY2FDb3VudCwgZ2xvYmFsLnN0b3JhZ2VDbGFzcywg" + + "Z2xvYmFsLmltYWdlLCBldGMuKSIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgYXJi" + + "aXRyYXJ5IGNoYXJ0IHZhbHVlcyBtdXN0IGJlIHNldCB2aWEgcmVsZWFzZSBpbmxpbmUgdmFsdWVz" + + "OiBibG9ja3MiLAogICAgICAiVGhlIGFnZW50IGxpc3RlZCBleGFtcGxlcyBvZiB2YWx1ZXMgdGhh" + + "dCBhcmUgcHJvcGFnYXRlZCBhbmQgYXJiaXRyYXJ5IGNoYXJ0IHZhbHVlcyB0aGF0IHJlcXVpcmUg" + + "YSByZWxlYXNlIHZhbHVlcyBibG9jayIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTMTQtZW5h" + + "YmxlLWxsbS1mdW5jdGlvbnMiLAogICAgInF1ZXN0aW9uIjogIkkgbmVlZCB0byBkZXBsb3kgZnVu" + + "Y3Rpb25UeXBlOiBMTE0gZnVuY3Rpb25zIG9uIGEgc2VsZi1tYW5hZ2VkLCBzaW5nbGUtbm9kZSBp" + + "c29sYXRlZCB0ZXN0IGNsdXN0ZXIuIFdoYXQgSGVsbWZpbGUgY29uZmlndXJhdGlvbiBhbmQgdmVy" + + "aWZpY2F0aW9uIHN0ZXBzIGRvIEkgbmVlZD8iLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Yt" + "c2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2Vu" + - "dCBjYXB0dXJlZCB0aGUgYmFzZWxpbmUgd2l0aCBoZWxtZmlsZSB0ZW1wbGF0ZSwgdGhlbiBtb2Rp" + - "ZmllZCB0aGUgY2Fzc2FuZHJhIHJlbGVhc2Ugd2l0aCBpbmxpbmUgdmFsdWVzIHJlLWluY2x1ZGlu" + - "ZyBnbG9iYWwueWFtbC5nb3RtcGwgYW5kIHNlY3JldHMgaW4gdGhlIHZhbHVlcyBibG9jay4gSXQg" + - "d2FybmVkIGFib3V0IHRoZSBZQU1MIG1lcmdlIGdvdGNoYSBhbmQgcHJldmlld2VkIHRoZSBkaWZm" + - "IGJlZm9yZSBhcHBseWluZy4iLAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhl" + - "IGFnZW50IHJlYWQgdGhlIG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBi" + - "ZWZvcmUgdGFraW5nIGFjdGlvbiIsCiAgICAgICJUaGUgYWdlbnQgY2FwdHVyZWQgYmFzZWxpbmUg" + - "d2l0aCAnaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSciLAogICAg" + - "ICAiVGhlIGFnZW50IG1vZGlmaWVkIHRoZSByZWxlYXNlIHZhbHVlcyBibG9jayB0byBpbmNsdWRl" + - "IHJlc291cmNlIGxpbWl0cyB3aXRoIG1lbW9yeTogMTZHaSIsCiAgICAgICJUaGUgYWdlbnQgcmUt" + - "aW5jbHVkZWQgZ2xvYmFsLnlhbWwuZ290bXBsIGFuZCBzZWNyZXRzIGZpbGUgaW4gdGhlIHZhbHVl" + - "czogYmxvY2sgKG5vdCBqdXN0IHRoZSBvdmVycmlkZSBhbG9uZSkiLAogICAgICAiVGhlIGFnZW50" + - "IHdhcm5lZCBhYm91dCB0aGUgWUFNTCBtZXJnZSBnb3RjaGE6IHNwZWNpZnlpbmcgdmFsdWVzOiBy" + - "ZXBsYWNlcyB0aGUgdGVtcGxhdGUncyB2YWx1ZXMgbGlzdCBlbnRpcmVseSIsCiAgICAgICJUaGUg" + - "YWdlbnQgcHJldmlld2VkIHRoZSBjaGFuZ2Ugd2l0aCBoZWxtZmlsZSB0ZW1wbGF0ZSBhbmQgZGlm" + - "ZiBiZWZvcmUgYXBwbHlpbmcgd2l0aCBzeW5jIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlM2" + - "LXNlbGVjdGl2ZS1zeW5jLWRlcGVuZGVuY2llcyIsCiAgICAicXVlc3Rpb24iOiAiRGVwbG95IG9u" + - "bHkgdGhlIE5WQ0YgZGVwZW5kZW5jaWVzIC0tIE5BVFMsIENhc3NhbmRyYSwgYW5kIE9wZW5CYW8g" + - "LS0gZm9yIHRlc3RpbmciLAogICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2Vk" + - "LWluc3RhbGxhdGlvbiIsCiAgICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCB1c2VkIHRoZSBo" + - "ZWxtZmlsZSBzZWxlY3RvciB0byBkZXBsb3kgb25seSB0aGUgZGVwZW5kZW5jaWVzIHJlbGVhc2Ug" + - "Z3JvdXAsIHRoZW4gdmVyaWZpZWQgcG9kcyBpbiB0aGUgZGVwZW5kZW5jeSBuYW1lc3BhY2VzLiIs" + - "CiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZj" + - "Zi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9u" + - "IiwKICAgICAgIlRoZSBhZ2VudCB1c2VkICdoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3Jv" + - "dXA9ZGVwZW5kZW5jaWVzIHN5bmMnIHRvIGRlcGxveSBvbmx5IGRlcGVuZGVuY2llcyIsCiAgICAg" + - "ICJUaGUgYWdlbnQgdmVyaWZpZWQgcG9kcyBpbiBkZXBlbmRlbmN5IG5hbWVzcGFjZXMgKG5hdHMt" + - "c3lzdGVtLCBjYXNzYW5kcmEtc3lzdGVtLCB2YXVsdC1zeXN0ZW0pIiwKICAgICAgIlRoZSBhZ2Vu" + - "dCBwcm92aWRlZCB0aGUgc2VsZWN0b3IgcmVmZXJlbmNlIGZvciB0YXJnZXRpbmcgb3RoZXIgcmVs" + - "ZWFzZSBncm91cHMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiUzctZGVidWctaW1hZ2VwdWxs" + - "YmFja29mZiIsCiAgICAicXVlc3Rpb24iOiAiQ2Fzc2FuZHJhIHBvZHMgYXJlIGluIEltYWdlUHVs" + - "bEJhY2tPZmYgd2l0aCA0MDEgVW5hdXRob3JpemVkIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJu" + - "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUg" + - "YWdlbnQgcmVhZCB0aGUgZGVidWdnaW5nIHJlZmVyZW5jZSBhbmQgcmFuIGRpYWdub3N0aWMgY29t" + - "bWFuZHMgdG8gaWRlbnRpZnkgdGhlIHJvb3QgY2F1c2U6IGRlc2NyaWJlZCB0aGUgcG9kLCBjaGVj" + - "a2VkIGZvciBwdWxsIHNlY3JldHMsIGNoZWNrZWQgaW1hZ2VQdWxsU2VjcmV0cyBvbiB0aGUgcG9k" + - "IHNwZWMgYW5kIHNlcnZpY2UgYWNjb3VudC4gSXQgaWRlbnRpZmllZCB0aGUgaXNzdWUgKG1pc3Np" + - "bmcgc2VjcmV0LCB3cm9uZyBjcmVkZW50aWFscywgb3IgbWlzc2luZyBpbWFnZVB1bGxTZWNyZXRz" + - "KSBhbmQgcHJvdmlkZWQgdGhlIGNvcnJlY3QgZml4LiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3Ii" + - "OiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0" + - "aW9uIFNLSUxMLm1kIGFuZCByZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCIsCiAgICAgICJUaGUgYWdl" + - "bnQgcmFuICdrdWJlY3RsIGRlc2NyaWJlIHBvZCcgdG8gc2VlIHRoZSBJbWFnZVB1bGxCYWNrT2Zm" + - "IGV2ZW50cyIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBmb3IgcHVsbCBzZWNyZXRzIGluIHRo" + - "ZSBjYXNzYW5kcmEtc3lzdGVtIG5hbWVzcGFjZSIsCiAgICAgICJUaGUgYWdlbnQgY2hlY2tlZCBp" + - "bWFnZVB1bGxTZWNyZXRzIG9uIHRoZSBwb2Qgc3BlYyBhbmQvb3Igc2VydmljZSBhY2NvdW50IiwK" + - "ICAgICAgIlRoZSBhZ2VudCBpZGVudGlmaWVkIHRoZSByb290IGNhdXNlIGFuZCBwcm92aWRlZCBh" + - "IHNwZWNpZmljIGZpeCIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJTOS1yZW1vdGUtZWtzLXJv" + - "dXRpbmctYW5kLXNlY3JldHMiLAogICAgInF1ZXN0aW9uIjogIkNvbmZpZ3VyZSBhIHJlbW90ZSBF" + - "S1MgY29tcHV0ZSBjbHVzdGVyIHRvIHJlYWNoIG15IE5WQ0YgY29udHJvbCBwbGFuZSB0aHJvdWdo" + - "IGl0cyBFbnZveSBHYXRld2F5LCBpbmNsdWRpbmcgTkFUUyBhbmQgcHJpdmF0ZS1yZWdpc3RyeSBw" + - "dWxsIHNlY3JldHMuIiwKICAgICJleHBlY3RlZF9za2lsbCI6ICJudmNmLXNlbGYtbWFuYWdlZC1p" + - "bnN0YWxsYXRpb24iLAogICAgImdyb3VuZF90cnV0aCI6ICJUaGUgYWdlbnQgY29uZmlndXJlZCB0" + - "aGUgY29udHJvbCBwbGFuZSB0byB1c2UgdGhlIEVudm95IEdhdGV3YXkgY29udHJvbGxlciBpbiBl" + - "bnZveS1nYXRld2F5LXN5c3RlbSBhbmQgR2F0ZXdheS9udmNmLWdhdGV3YXkgaW4gZW52b3ktZ2F0" + - "ZXdheSwgc2V0IGFsbCBzaXggcmVtb3RlIHdvcmtlciBlbmRwb2ludHMgYW5kIHRoZSBncnBjLXBy" + - "b3h5IGxvY2FsIG92ZXJyaWRlLCBlbmFibGVkIE5WQ0YgYW5kIE5WQ1QgZ1JQQyByb3V0ZXMgcGx1" + - "cyBOQVRTLCBhbmQgZW5hYmxlZCBPcGVuQmFvIGlzc3VlciBkaXNjb3ZlcnkuIEl0IGNvbmZpZ3Vy" + - "ZWQgdGhlIGJhcmUtR2F0ZXdheSBDTEkgVVJMIGFuZCBIb3N0IGZpZWxkcyBpbmNsdWRpbmcgaWNt" + - "c19ob3N0LCBwbHVzIHRoZSBjb21wdXRlLXBsYW5lIElDTVMsIFJlVmFsLCBhbmQgTkFUUyBleHRl" + - "cm5hbCBVUkxzIGFuZCBob3N0IG92ZXJyaWRlcy4gSXQgY3JlYXRlZCB0aGUgcHVsbCBzZWNyZXQg" + - "aW4gYWxsIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcyBpbmNsdWRpbmcgY2VydC1tYW5hZ2VyLCBi" + - "dXQgb25seSBpbiBudmNhLW9wZXJhdG9yIG9uIHRoZSBjb21wdXRlIGNsdXN0ZXI7IHRoZSBjaGFy" + - "dCBhbmQgb3BlcmF0b3IgbWlycm9yIGl0IHRvIG52Y2Etc3lzdGVtLiIsCiAgICAiZXhwZWN0ZWRf" + - "YmVoYXZpb3IiOiBbCiAgICAgICJUaGUgYWdlbnQgcmVhZCB0aGUgbnZjZi1zZWxmLW1hbmFnZWQt" + - "aW5zdGFsbGF0aW9uIFNLSUxMLm1kIGJlZm9yZSB0YWtpbmcgYWN0aW9uIiwKICAgICAgIlRoZSBh" + - "Z2VudCBzZXQgaW5ncmVzcy5nYXRld2F5QXBpLmNvbnRyb2xsZXJOYW1lc3BhY2UgdG8gZW52b3kt" + - "Z2F0ZXdheS1zeXN0ZW0iLAogICAgICAiVGhlIGFnZW50IHNldCBzaGFyZWQsIGdycGMsIGFuZCBu" + - "YXRzIEdhdGV3YXkgcmVmZXJlbmNlcyB0byBuYW1lIG52Y2YtZ2F0ZXdheSBhbmQgbmFtZXNwYWNl" + - "IGVudm95LWdhdGV3YXkiLAogICAgICAiVGhlIGFnZW50IHNldCBnbG9iYWwud29ya2VyRW5kcG9p" + - "bnRzLm52Y2ZTZXJ2aWNlVVJMLCBudmNmR3JwY1NlcnZpY2VVUkwsIG52Y2ZOYXRzU2VydmljZVVS" + - "TCwgbnZjdFNlcnZpY2VVUkwsIG52Y3RHcnBjU2VydmljZVVSTCwgYW5kIGludm9jYXRpb25TZXJ2" + - "aWNlVVJMIiwKICAgICAgIlRoZSBhZ2VudCBzZXQgZ3JwY3Byb3h5Lm52Y2ZHcnBjU2VydmljZVVS" + - "TCB0byB0aGUgY29udHJvbC1wbGFuZS1sb2NhbCBBUEkgZ1JQQyBzZXJ2aWNlIiwKICAgICAgIlRo" + - "ZSBhZ2VudCBlbmFibGVkIGJvdGggaW5ncmVzcy5nYXRld2F5QXBpLnJvdXRlcy5udmNmQXBpLmdy" + - "cGMgYW5kIG52Y3RBcGkuZ3JwYyB3aXRoIHdvcmtlci1hcGkgYW5kIHdvcmtlci10YXNrcyBob3N0" + - "bmFtZXMiLAogICAgICAiVGhlIGFnZW50IGV4cGxpY2l0bHkgc2V0IGluZ3Jlc3MuZ2F0ZXdheUFw" + - "aS5yb3V0ZXMubmF0cy5lbmFibGVkIHRvIHRydWUiLAogICAgICAiVGhlIGFnZW50IHNldCBvcGVu" + - "YmFvLm1pZ3JhdGlvbnMuaXNzdWVyRGlzY292ZXJ5LmVuYWJsZWQgdG8gdHJ1ZSIsCiAgICAgICJU" + - "aGUgYWdlbnQgY29uZmlndXJlZCB0aGUgYmFyZS1HYXRld2F5IENMSSBVUkwgYW5kIEhvc3QgZmll" + - "bGRzLCBpbmNsdWRpbmcgc2NoZW1lLWxlc3MgaWNtc19ob3N0IiwKICAgICAgIlRoZSBhZ2VudCBj" + - "b25maWd1cmVkIGNvbXB1dGUtcGxhbmUgaWNtc1NlcnZpY2VVUkwsIGljbXNTZXJ2aWNlSG9zdEhl" + - "YWRlck92ZXJyaWRlLCByZXZhbFNlcnZpY2VVUkwsIHJldmFsU2VydmljZUhvc3RIZWFkZXJPdmVy" + - "cmlkZSwgbmF0c1VSTCwgYW5kIG5hdHNIb3N0T3ZlcnJpZGUiLAogICAgICAiVGhlIGNvbnRyb2wt" + - "cGxhbmUgcHVsbC1zZWNyZXQgbmFtZXNwYWNlIGxpc3QgaW5jbHVkZWQgY2VydC1tYW5hZ2VyIiwK" + - "ICAgICAgIlRoZSBjb21wdXRlLXBsYW5lIHNlY3JldCB3YXMgY3JlYXRlZCBvbmx5IGluIG52Y2Et" + - "b3BlcmF0b3IgYW5kIG1pcnJvcmVkIGJ5IHRoZSBjaGFydCBhbmQgb3BlcmF0b3IgdG8gbnZjYS1z" + - "eXN0ZW0iCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiRzExLXNwbGl0LXRlYXJkb3duIiwKICAg" + - "ICJxdWVzdGlvbiI6ICJUZWFyIGRvd24gbXkgc3BsaXQgY29udHJvbC1wbGFuZSBhbmQgY29tcHV0" + - "ZS1wbGFuZSBkZXBsb3ltZW50IHNhZmVseS4gU2hvdyBib3RoIHRoZSBIZWxtZmlsZSB2YWx1ZXMg" + - "YW5kIENMSSBwcm9maWxlIHZhcmlhbnRzLiIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1z" + - "ZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIEhlbG1m" + - "aWxlIGZsb3cgZGVzdHJveWVkIGFuZCBjb25maXJtZWQgZGVyZWdpc3RyYXRpb24gb2YgZXZlcnkg" + - "Y29tcHV0ZSBjbHVzdGVyIGJlZm9yZSBkZXN0cm95aW5nIHRoZSBjb250cm9sIHBsYW5lIGFuZCBw" + - "YXNzZWQgYm90aCBjb250cm9sLXBsYW5lIGt1YmVjb25maWcgZm9ybXMuIEJlZm9yZSBlaXRoZXIg" + - "aGFuZG9mZiBjb3VsZCBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBib3RoIHRlYXJkb3duIGZs" + - "b3dzIHdhcm5lZCB0aGF0IG5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9lcyBub3QgcHJlc2VydmUg" + - "dGhlIEhlbG0gcmVsZWFzZSwgcmVxdWlyZWQgZWZmZWN0aXZlIGNlcnRNYW5hZ2VyLmVuYWJsZWQ6" + - "IGZhbHNlIGZvciBhbiBleHRlcm5hbCBpbnN0YWxsYXRpb24gYW5kIGFib3J0ZWQgaWYgdHJ1ZSwg" + - "YW5kIHZlcmlmaWVkIG1hdGNoaW5nIHJlbGVhc2Ugb3duZXJzaGlwIGZvciBhbiBpbnRlbmRlZCBz" + - "dGFjay1tYW5hZ2VkIHJlbGVhc2UsIGFib3J0aW5nIG9uIG1pc3Npbmcgb3IgbWlzbWF0Y2hlZCBl" + - "dmlkZW5jZS4gVGhleSBwcmVzZXJ2ZWQgdGhlIG5hbWVzcGFjZSBieSBkZWZhdWx0IGFuZCBkaWQg" + - "bm90IGRlbGV0ZSBpdCB3aXRob3V0IG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBleHBsaWNpdCBj" + - "b25maXJtYXRpb24uIFRoZSBDTEkgZmxvdyByZXRhaW5lZCB0aGUgZ2VuZXJhdGVkIHJlZ2lzdHJh" + - "dGlvbiB2YWx1ZXMsIHVzZWQgdGhlIGZ1bGwtcHJlZml4IHN0YXR1cyBjb21tYW5kIHRvIGluc3Bl" + - "Y3QgbGl2ZSByZWdpc3RyYXRpb25zLCBzdGF0ZWQgdGhhdCBuYW1lZC1jbHVzdGVyIHBsYW4tb25s" + - "eSBkb2VzIG5vdCBxdWVyeSBJQ01TIGFuZCBjYW5ub3QgcHJlZGljdCBjb25kaXRpb25hbCBjb250" + - "cm9sLXBsYW5lIHJlbW92YWwsIGFuZCBnb3QgZXhwbGljaXQgY29uZmlybWF0aW9uIHdoZW4gdGhl" + - "IHRhcmdldCB3YXMgdGhlIGxhc3QgcmVnaXN0ZXJlZCBjbHVzdGVyLiBJdCB0aGVuIHByZXZpZXdl" + - "ZCBhbmQgcmFuIGRvd24gd2l0aCB0aGUgZnVsbCBwZXJzaXN0ZW50IHByZWZpeCwgcmVtb3Zpbmcg" + - "dGhlIGNvbnRyb2wgcGxhbmUgb25seSBhZnRlciB0aGUgbGFzdCByZWdpc3RyYXRpb24gd2FzIGdv" + - "bmUuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBhZ2VudCByZWFkIHRo" + - "ZSBudmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24gU0tJTEwubWQgYmVmb3JlIHRha2luZyBh" + - "Y3Rpb24iLAogICAgICAiRm9yIGV2ZXJ5IGNvbXB1dGUgY2x1c3RlciwgdGhlIEhlbG1maWxlIGZs" + - "b3cgcmFuIHRoZSBjb21wdXRlLXBsYW5lIE1ha2VmaWxlIGRlc3Ryb3kgdGFyZ2V0IHdpdGggaXRz" + - "IGNvbXB1dGUga3ViZWNvbmZpZyIsCiAgICAgICJBZnRlciBjb25maXJtYXRpb24sIHRoZSBIZWxt" + - "ZmlsZSBmbG93IHJhbiBjbHVzdGVyIGRlbGV0ZSB3aXRoIGNsdXN0ZXJJRCBhbmQgbmNhSUQgYmVm" + - "b3JlIGNvbnRyb2wtcGxhbmUgZGVzdHJ1Y3Rpb24iLAogICAgICAiQmVmb3JlIGVpdGhlciBoYW5k" + - "b2ZmIGNvdWxkIGRlc3Ryb3kgdGhlIGNvbnRyb2wgcGxhbmUsIGJvdGggdGVhcmRvd24gZmxvd3Mg" + - "d2FybmVkIHRoYXQgbmFtZXNwYWNlIHByZXNlcnZhdGlvbiBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUg" + - "SGVsbSByZWxlYXNlLCByZXF1aXJlZCBlZmZlY3RpdmUgY2VydE1hbmFnZXIuZW5hYmxlZDogZmFs" + - "c2UgZm9yIGFuIGV4dGVybmFsIGluc3RhbGxhdGlvbiBhbmQgYWJvcnRlZCBpZiB0cnVlLCBhbmQg" + - "dmVyaWZpZWQgaW50ZW5kZWQgc3RhY2sgb3duZXJzaGlwIHdoZW4gZW5hYmxlZCwgYWJvcnRpbmcg" + - "b24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlIiwKICAgICAgIkJvdGggdGVhcmRvd24g" + - "Zmxvd3MgcHJlc2VydmVkIHRoZSBjZXJ0LW1hbmFnZXIgbmFtZXNwYWNlIGJ5IGRlZmF1bHQgYW5k" + - "IGRpZCBub3QgZGVsZXRlIGl0IHdpdGhvdXQgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGV4cGxp" + - "Y2l0IGNvbmZpcm1hdGlvbiIsCiAgICAgICJUaGUgSGVsbWZpbGUgZmxvdyByYW4gY29udHJvbC1w" + - "bGFuZSBNYWtlZmlsZSBkZXN0cm95IHdpdGggYm90aCBLVUJFQ09ORklHIGFuZCBLVUJFQ09ORklH" + - "X0ZJTEUiLAogICAgICAiVGhlIENMSSBmbG93IHJldGFpbmVkIG91dC88Y2x1c3Rlci1uYW1lPi1y" + - "ZWdpc3Rlci12YWx1ZXMueWFtbCB1bnRpbCB0ZWFyZG93biBjb21wbGV0ZWQiLAogICAgICAiQmVm" + - "b3JlIHJlYWwgZG93biwgdGhlIENMSSBmbG93IHVzZWQgdGhlIGZ1bGwtcHJlZml4IHN0YXR1cyBj" + - "b21tYW5kIHRvIGluc3BlY3QgbGl2ZSByZWdpc3RyYXRpb25zLCBzdGF0ZWQgdGhhdCBuYW1lZC1j" + - "bHVzdGVyIHBsYW4tb25seSBkb2VzIG5vdCBxdWVyeSBJQ01TIGFuZCBjYW5ub3QgcHJlZGljdCBj" + - "b25kaXRpb25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwsIHdhcm5lZCB3aGVuIHRoZSB0YXJnZXQg" + - "d2FzIHRoZSBsYXN0IHJlZ2lzdGVyZWQgY2x1c3RlciwgYW5kIGdvdCBleHBsaWNpdCBjb25maXJt" + - "YXRpb24iLAogICAgICAiVGhlIENMSSBmbG93IHVzZWQgLS1jb25maWcsIGJvdGggc3RhY2sgcGF0" + - "aHMsIC0tZW52LCAtLXBsYWluLCBib3RoIGNvbnRleHRzLCBhbmQgLS1pY21zLXVybCBmb3IgZG93" + - "biAtLXBsYW4tb25seSBhbmQgdGhlbiBkb3duIiwKICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhh" + - "dCBkb3duIHVucmVnaXN0ZXJzIGVhY2ggY29tcHV0ZSBjbHVzdGVyIGFuZCByZW1vdmVzIHRoZSBj" + - "b250cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgbm8gcmVnaXN0cmF0aW9ucyByZW1haW4iCiAgICBdCiAg" + - "fSwKICB7CiAgICAiaWQiOiAiUzEzLXZhbHVlcy1wcmVjZWRlbmNlIiwKICAgICJxdWVzdGlvbiI6" + - "ICJJIGFkZGVkIGEgdmFsdWUgdG8gbXkgZW52aXJvbm1lbnQgWUFNTCBidXQgaXQncyBiZWluZyBz" + - "aWxlbnRseSBpZ25vcmVkLiBIb3cgZG8gaGVsbWZpbGUgdmFsdWVzIHdvcmsgaW4gTlZDRj8iLAog" + - "ICAgImV4cGVjdGVkX3NraWxsIjogIm52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiIsCiAg" + - "ICAiZ3JvdW5kX3RydXRoIjogIlRoZSBhZ2VudCBleHBsYWluZWQgdGhlIHZhbHVlcyBwcmVjZWRl" + - "bmNlIGNoYWluIChiYXNlLnlhbWwsIGVudiBZQU1MLCBnbG9iYWwueWFtbC5nb3RtcGwsIHNlY3Jl" + - "dHMsIGlubGluZSB2YWx1ZXMpLCBpZGVudGlmaWVkIHRoYXQgZ2xvYmFsLnlhbWwuZ290bXBsIG9u" + - "bHkgcGFzc2VzIHRocm91Z2ggc3BlY2lmaWMga2V5cywgYW5kIGV4cGxhaW5lZCB0aGF0IGFyYml0" + - "cmFyeSBjaGFydCB2YWx1ZXMgbXVzdCB1c2UgcmVsZWFzZSBpbmxpbmUgdmFsdWVzIGJsb2Nrcy4i" + - "LAogICAgImV4cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHJlYWQgdGhlIG52" + - "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbiBTS0lMTC5tZCBiZWZvcmUgdGFraW5nIGFjdGlv" + - "biIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoZSB2YWx1ZXMgcHJlY2VkZW5jZSBjaGFp" + - "bjogYmFzZS55YW1sIC0+IGVudiBZQU1MIC0+IGdsb2JhbC55YW1sLmdvdG1wbCAtPiBzZWNyZXRz" + - "IC0+IGlubGluZSB2YWx1ZXMiLAogICAgICAiVGhlIGFnZW50IGlkZW50aWZpZWQgdGhhdCBnbG9i" + - "YWwueWFtbC5nb3RtcGwgb25seSBwYXNzZXMgdGhyb3VnaCBzcGVjaWZpYyBrZXlzIChjYXNzYW5k" + - "cmEucmVwbGljYUNvdW50LCBnbG9iYWwuc3RvcmFnZUNsYXNzLCBnbG9iYWwuaW1hZ2UsIGV0Yy4p" + - "IiwKICAgICAgIlRoZSBhZ2VudCBleHBsYWluZWQgdGhhdCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVz" + - "IG11c3QgYmUgc2V0IHZpYSByZWxlYXNlIGlubGluZSB2YWx1ZXM6IGJsb2NrcyIsCiAgICAgICJU" + - "aGUgYWdlbnQgbGlzdGVkIGV4YW1wbGVzIG9mIHZhbHVlcyB0aGF0IGFyZSBwcm9wYWdhdGVkIGFu" + - "ZCBhcmJpdHJhcnkgY2hhcnQgdmFsdWVzIHRoYXQgcmVxdWlyZSBhIHJlbGVhc2UgdmFsdWVzIGJs" + - "b2NrIgogICAgXQogIH0sCiAgewogICAgImlkIjogIlMxNC1lbmFibGUtbGxtLWZ1bmN0aW9ucyIs" + - "CiAgICAicXVlc3Rpb24iOiAiSSBuZWVkIHRvIGRlcGxveSBmdW5jdGlvblR5cGU6IExMTSBmdW5j" + - "dGlvbnMgb24gYSBzZWxmLW1hbmFnZWQsIHNpbmdsZS1ub2RlIGlzb2xhdGVkIHRlc3QgY2x1c3Rl" + - "ci4gV2hhdCBIZWxtZmlsZSBjb25maWd1cmF0aW9uIGFuZCB2ZXJpZmljYXRpb24gc3RlcHMgZG8g" + - "SSBuZWVkPyIsCiAgICAiZXhwZWN0ZWRfc2tpbGwiOiAibnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + - "bGF0aW9uIiwKICAgICJncm91bmRfdHJ1dGgiOiAiVGhlIGFnZW50IGVuYWJsZWQgdGhlIExMTSBh" + - "ZGRvbiB3aXRoIGFkZG9ucy5sbG0uZW5hYmxlZCwgY29uZmlndXJlZCBzaW5nbGUgcmVwbGljYXMg" + - "Zm9yIHRoZSBMTE0gQVBJIEdhdGV3YXkgYW5kIHJlcXVlc3Qgcm91dGVyLCBhbmQgZXhwbGFpbmVk" + - "IHRoYXQgdGhlIHJlcXVlc3Qgcm91dGVyIHVzZXMgcG93ZXItb2YtdHdvIHdoZW4gbm8gbG9hZC1i" + - "YWxhbmNlciBjb25maWd1cmF0aW9uIGlzIHNldC4gSXQgbGlua2VkIHRoZSBjYW5vbmljYWwgcmVx" + - "dWVzdC1yb3V0ZXIgbG9hZC1iYWxhbmNpbmcgZ3VpZGUgZm9yIG90aGVyIHJvdXRpbmcgbWV0aG9k" + - "cy4gRm9yIHRoZSBpc29sYXRlZCBwbGFpbnRleHQgY2x1c3RlciwgaXQgcmVsaWVkIG9uIHRoZSBz" + - "ZWxmLW1hbmFnZWQgc3RhY2sgZGVmYXVsdCBmb3IgdGhlIGJ1bmRsZWQgZ2F0ZXdheS10by1BUEkg" + - "YXV0aGVudGljYXRpb24gaG9wIGFuZCBpbmNsdWRlZCBhZ2VudENvbmZpZy5tZXJnZUNvbmZpZy53" + - "b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZSBmb3IgdGhlIHNlcGFyYXRlIHdvcmtlciB0cmFu" + - "c3BvcnQsIHdpdGggYSB3YXJuaW5nIHRoYXQgcGxhaW50ZXh0IHdvcmtlciB0cmFuc3BvcnQgaXMg" + - "bm90IGZvciBwcm9kdWN0aW9uLiBJdCByZWZyZXNoZWQgdGhlIGNvbXB1dGUgcGxhbmUgdXNpbmcg" + - "dGhlIHNhbWUgaGFuZG9mZiB1c2VkIGR1cmluZyBpbnN0YWxsYXRpb24sIHJlZGVwbG95ZWQgZXhp" + - "c3RpbmcgTExNIGZ1bmN0aW9ucywgYW5kIHZlcmlmaWVkIHRoZSBMTE0gZGVwbG95bWVudHMsIHJv" + - "dXRlLCBhbmQgbGxtLXdvcmtlciBzaWRlY2FyLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZpb3IiOiBb" + - "CiAgICAgICJUaGUgYWdlbnQgdXNlZCBhZGRvbnMubGxtLmVuYWJsZWQsIG5vdCB0aGUgb2Jzb2xl" + - "dGUgbGxtLmVuYWJsZWQgcGF0aCIsCiAgICAgICJUaGUgYWdlbnQgc2V0IGdhdGV3YXkgYW5kIHJl" + - "cXVlc3RSb3V0ZXIgcmVwbGljYUNvdW50IHRvIDEgZm9yIHRoZSBzaW5nbGUtbm9kZSB0ZXN0IGNs" + - "dXN0ZXIiLAogICAgICAiVGhlIGFnZW50IHN0YXRlZCB0aGF0IHRoZSByZXF1ZXN0IHJvdXRlciBk" + - "ZWZhdWx0cyB0byBwb3dlci1vZi10d28gYW5kIGxpbmtlZCB0aGUgY2Fub25pY2FsIHJlcXVlc3Qt" + - "cm91dGVyIGxvYWQtYmFsYW5jaW5nIGd1aWRlIGZvciBvdGhlciBtZXRob2RzIiwKICAgICAgIlRo" + - "ZSBhZ2VudCBleHBsYWluZWQgdGhhdCB0aGUgYnVuZGxlZCBnYXRld2F5LXRvLUFQSSBhdXRoZW50" + - "aWNhdGlvbiBob3AgZGVmYXVsdHMgdG8gcGxhaW50ZXh0LCBpbmNsdWRlZCB3b3JrbG9hZC5zdGFy" + - "Z2F0ZVFVSUNJbnNlY3VyZSBvbmx5IGZvciB0aGUgaXNvbGF0ZWQgd29ya2VyIHRyYW5zcG9ydCwg" + - "YW5kIHdhcm5lZCBhZ2FpbnN0IHBsYWludGV4dCB3b3JrZXIgdHJhbnNwb3J0IGluIHByb2R1Y3Rp" + - "b24iLAogICAgICAiVGhlIGFnZW50IGFwcGxpZWQgdGhlIGNvbnRyb2wtcGxhbmUgSGVsbWZpbGUg" + - "ZW52aXJvbm1lbnQsIHJlZnJlc2hlZCB0aGUgY29tcHV0ZSBwbGFuZSB3aXRoIHRoZSBzYW1lIHNl" + - "bGVjdGVkIGhhbmRvZmYsIGFuZCByZWNyZWF0ZWQgb3IgcmVkZXBsb3llZCBleGlzdGluZyBMTE0g" + - "ZnVuY3Rpb25zIiwKICAgICAgIlRoZSBhZ2VudCB2ZXJpZmllZCBsbG0tYXBpLWdhdGV3YXksIGxs" + - "bS1yZXF1ZXN0LXJvdXRlciwgdGhlIExMTSBIVFRQUm91dGUsIGFuZCB0aGUgbGxtLXdvcmtlciBz" + - "aWRlY2FyIGluY2x1ZGluZyAtLXF1aWMtaW5zZWN1cmUiCiAgICBdCiAgfSwKICB7CiAgICAiaWQi" + - "OiAiRzgtTkVHLW5vdC1mb3ItazNkIiwKICAgICJxdWVzdGlvbiI6ICJTZXQgdXAgYSBsb2NhbCBO" + - "VkNGIGRldiBjbHVzdGVyIHVzaW5nIGszZCBmb3IgdGVzdGluZyIsCiAgICAiZXhwZWN0ZWRfc2tp" + - "bGwiOiBudWxsLAogICAgInNob3VsZF90cmlnZ2VyIjogZmFsc2UsCiAgICAiZ3JvdW5kX3RydXRo" + - "IjogIlRoaXMgaXMgYSBsb2NhbCBrM2QgZGV2ZWxvcG1lbnQgcmVxdWVzdCB0aGF0IGJlbG9uZ3Mg" + - "dG8gdGhlIG52Y2Ytc2VsZi1ob3N0ZWQtbG9jYWwtZGV2IHNraWxsLCBub3QgbnZjZi1zZWxmLW1h" + - "bmFnZWQtaW5zdGFsbGF0aW9uLiBUaGUgYWdlbnQgZGlkIG5vdCByZWFkIG9yIHVzZSB0aGUgc2Vs" + - "Zi1tYW5hZ2VkIGluc3RhbGxhdGlvbiBza2lsbCBhbmQgaW5zdGVhZCBwcm92aWRlZCBrM2Qtc3Bl" + - "Y2lmaWMgZ3VpZGFuY2UuIiwKICAgICJleHBlY3RlZF9iZWhhdmlvciI6IFsKICAgICAgIlRoZSBh" + - "Z2VudCBkaWQgbm90IHJlYWQgbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL1NLSUxMLm1k" + - "IiwKICAgICAgIlRoZSBhZ2VudCBkaWQgbm90IHByb3ZpZGUgaGVsbWZpbGUtYmFzZWQgcHJvZHVj" + - "dGlvbiBkZXBsb3ltZW50IGluc3RydWN0aW9ucyIsCiAgICAgICJUaGUgYWdlbnQgcHJvdmlkZWQg" + - "azNkLXNwZWNpZmljIGxvY2FsIGRldmVsb3BtZW50IGd1aWRhbmNlIG9yIGRlZmVycmVkIHRvIHRo" + - "ZSBhcHByb3ByaWF0ZSBsb2NhbC1kZXYgc2tpbGwiCiAgICBdCiAgfQpdClBLBwhHVWpWSlYAAEpW" + - "AABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAC8ACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWlu" + - "c3RhbGxhdGlvbi9leGFtcGxlcy5tZFVUBQABAKbOEiMgRXhhbXBsZXMKCldvcmtlZCBleGFtcGxl" + - "cyBiYXNlZCBvbiByZWFsIGRlcGxveW1lbnQgc2NlbmFyaW9zLgoKIyMgRXhhbXBsZSAxOiBPdmVy" + - "cmlkZSBDYXNzYW5kcmEgUmVzb3VyY2VzCgpUaGUgZGVmYXVsdCBDYXNzYW5kcmEgcmVzb3VyY2Ug" + - "bGltaXRzIGNhdXNlIE9PTSBvbiBsYXJnZSBpbnN0YW5jZSB0eXBlcyAoZS5nLiwgYHA1LjQ4eGxh" + - "cmdlYCkuCgpQcm9ibGVtOiBDYXNzYW5kcmEgcG9kcyByZXN0YXJ0IHdpdGggYE9PTUtpbGxlZGAu" + - "CgpTb2x1dGlvbjogT3ZlcnJpZGUgcmVzb3VyY2VzIHZpYSBoZWxtZmlsZSByZWxlYXNlIHZhbHVl" + - "cyBibG9jay4KCiMjIyBTdGVwIDE6IENhcHR1cmUgYmFzZWxpbmUKCmBgYGJhc2gKSEVMTUZJTEVf" + - "RU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgdGVtcGxhdGUgPiAv" + - "dG1wL2Nhc3MtYmVmb3JlLnlhbWwKZ3JlcCAtQTggJ3Jlc291cmNlczonIC90bXAvY2Fzcy1iZWZv" + - "cmUueWFtbCB8IGhlYWQgLTEwCmBgYAoKIyMjIFN0ZXAgMjogQWRkIG92ZXJyaWRlIHRvIGhlbG1m" + - "aWxlLmQvMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290bXBsCgpJbiB0aGUgZXhhbXBsZXMgYmVsb3cs" + - "IGA8cHJpdmF0ZS12YWx1ZXM+YCByZWZlcnMgdG8gdGhlIGBzZWNyZXRzL2AgZGlyZWN0b3J5IGF0" + - "IHRoZSBoZWxtZmlsZSBzdGFjayByb290LgoKYGBgeWFtbAotIG5hbWU6IGNhc3NhbmRyYQogIHZl" + - "cnNpb246IDAuOC4wCiAgY29uZGl0aW9uOiBjYXNzYW5kcmEuZW5hYmxlZAogIG5hbWVzcGFjZTog" + - "Y2Fzc2FuZHJhLXN5c3RlbQogIDw8OiAqZGVwZW5kZW5jeQogIHZhbHVlczoKICAgIC0gLi4vZ2xv" + - "YmFsLnlhbWwuZ290bXBsCiAgICAtIC4uLzxwcml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYg" + - "IkhFTE1GSUxFX0VOViIgfX0tc2VjcmV0cy55YW1sCiAgICAtIGNhc3NhbmRyYToKICAgICAgICBy" + - "ZXNvdXJjZXM6CiAgICAgICAgICBsaW1pdHM6CiAgICAgICAgICAgIGNwdTogIjgiCiAgICAgICAg" + - "ICAgIG1lbW9yeTogODE5Mk1pCiAgICAgICAgICByZXF1ZXN0czoKICAgICAgICAgICAgY3B1OiAi" + - "MiIKICAgICAgICAgICAgbWVtb3J5OiA0MDk2TWkKYGBgCgojIyMgU3RlcCAzOiBWZXJpZnkgYW5k" + - "IGFwcGx5CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5h" + - "bWU9Y2Fzc2FuZHJhIHRlbXBsYXRlID4gL3RtcC9jYXNzLWFmdGVyLnlhbWwKZGlmZiAvdG1wL2Nh" + - "c3MtYmVmb3JlLnlhbWwgL3RtcC9jYXNzLWFmdGVyLnlhbWwgICMgQ29uZmlybSByZXNvdXJjZXMg" + - "Y2hhbmdlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3Nh" + - "bmRyYSBzeW5jCmBgYAoKTm90ZTogYHJlc291cmNlUHJlc2V0YCAoYSBCaXRuYW1pIGZlYXR1cmUp" + - "IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIE5WQ0YgY2Fzc2FuZHJhIHdyYXBwZXIgY2hhcnQuIFVz" + - "ZSBleHBsaWNpdCBgcmVzb3VyY2VzYCBpbnN0ZWFkLgoKLS0tCgojIyBFeGFtcGxlIDI6IERlcGxv" + - "eSBmcm9tIE5HQyBQcml2YXRlIFJlZ2lzdHJ5IHdpdGggUHVsbCBTZWNyZXRzCgpEZXBsb3kgdGhl" + - "IE5WQ0Ygc3RhY2sgcHVsbGluZyBpbWFnZXMgZGlyZWN0bHkgZnJvbSBOR0MgKGBudmNyLmlvYCkg" + - "aW5zdGVhZCBvZiBhIG1pcnJvcmVkIHJlZ2lzdHJ5LCB1c2luZyBpbWFnZSBwdWxsIHNlY3JldHMu" + - "CgojIyMgU3RlcCAxOiBDb25maWd1cmUgZW52aXJvbm1lbnQgZm9yIE5HQwoKYGBgeWFtbAojIGVu" + - "dmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoKICBoZWxtOgogICAgc291cmNlczoKICAgICAg" + - "cmVnaXN0cnk6IG52Y3IuaW8KICAgICAgcmVwb3NpdG9yeTogbnZpZGlhL252Y2YKICBpbWFnZToK" + - "ICAgIHJlZ2lzdHJ5OiBudmNyLmlvCiAgICByZXBvc2l0b3J5OiBudmlkaWEvbnZjZgpgYGAKCiMj" + - "IyBTdGVwIDI6IEF1dGhlbnRpY2F0ZSBsb2NhbGx5IChmb3IgaGVsbWZpbGUgY2hhcnQgcHVsbHMp" + - "CgpgYGBiYXNoCmRvY2tlciBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tlbicgLXAgIiROR0Nf" + - "QVBJX0tFWSIKaGVsbSByZWdpc3RyeSBsb2dpbiBudmNyLmlvIC11ICckb2F1dGh0b2tlbicgLXAg" + - "IiROR0NfQVBJX0tFWSIKYGBgCgojIyMgU3RlcCAzOiBDcmVhdGUgbmFtZXNwYWNlcyBhbmQgcHVs" + - "bCBzZWNyZXRzCgpgYGBiYXNoCmV4cG9ydCBOR0NfQVBJX0tFWT0iPHlvdXItbmdjLWFwaS1rZXk+" + - "IgoKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5cyBl" + - "c3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQg" + - "PGNvbnRyb2wtcGxhbmUtY29udGV4dD4gY3JlYXRlIG5hbWVzcGFjZSAiJG5zIiBcCiAgICAtLWRy" + - "eS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1j" + - "b250ZXh0PiBhcHBseSAtZiAtCmRvbmUKCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMt" + - "c3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBk" + - "bwogIGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBzZWNy" + - "ZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAogICAgLS1kb2NrZXItc2VydmVyPW52Y3Iu" + - "aW8gXAogICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgICAtLWRvY2tlci1w" + - "YXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgICAtLW5hbWVzcGFjZT0iJG5zIiBcCiAgICAtLWRy" + - "eS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1j" + - "b250ZXh0PiBhcHBseSAtZiAtCmRvbmUKYGBgCgojIyMgU3RlcCA0OiBBZGQgaW1hZ2VQdWxsU2Vj" + - "cmV0cyB0byBoZWxtZmlsZSByZWxlYXNlcwoKQWRkIHRoZSBjaGFydC1zcGVjaWZpYyBgaW1hZ2VQ" + - "dWxsU2VjcmV0c2Aga2V5IHRvIGVhY2ggcmVsZWFzZS4gRXhhbXBsZSBmb3IgY2Fzc2FuZHJhIGlu" + - "IGBoZWxtZmlsZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbGA6CgpgYGB5YW1sCi0gbmFt" + - "ZTogY2Fzc2FuZHJhCiAgdmVyc2lvbjogMC44LjAKICBjb25kaXRpb246IGNhc3NhbmRyYS5lbmFi" + - "bGVkCiAgbmFtZXNwYWNlOiBjYXNzYW5kcmEtc3lzdGVtCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFs" + - "dWVzOgogICAgLSAuLi9nbG9iYWwueWFtbC5nb3RtcGwKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVz" + - "Pi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwKICAgIC0gY2Fz" + - "c2FuZHJhOgogICAgICAgIGdsb2JhbDoKICAgICAgICAgIGltYWdlUHVsbFNlY3JldHM6CiAgICAg" + - "ICAgICAgIC0gbnZjci1jcmVkcwpgYGAKClNlZSBbcmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWRd" + - "KHJlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kKSBmb3IgdGhlIGtleSBmb3IgZXZlcnkgY2hhcnQu" + - "CgpUaGVzZSBhcmUgY29udHJvbC1wbGFuZSBuYW1lc3BhY2VzLiBGb3IgYSBzZXBhcmF0ZSBjb21w" + - "dXRlIGNsdXN0ZXIsIGNyZWF0ZSB0aGUKc2VjcmV0IG9ubHkgaW4gYG52Y2Etb3BlcmF0b3JgOyB0" + - "aGUgY2hhcnQgYW5kIG9wZXJhdG9yIG1pcnJvciBpdCB0bwpgbnZjYS1zeXN0ZW1gLiBTZWUgW1Nw" + - "bGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUt" + - "aW5zdGFsbGF0aW9uLm1kI3B1bGwtc2VjcmV0cykuCgojIyMgU3RlcCA1OiBEZXBsb3kKCmBgYGJh" + - "c2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0ta3ViZS1jb250ZXh0IDxjb250cm9sLXBs" + - "YW5lLWNvbnRleHQ+IHN5bmMKYGBgCgojIyMgU3RlcCA2OiBQYXRjaCBTZXJ2aWNlQWNjb3VudHMg" + - "Zm9yIGNoYXJ0cyB3aXRob3V0IG5hdGl2ZSBzdXBwb3J0CgpBZnRlciBQaGFzZSAxIChkZXBlbmRl" + - "bmNpZXMpIGNvbXBsZXRlcywgT3BlbkJhbyBwb2RzIHdpbGwgYmUgaW4gYEltYWdlUHVsbEJhY2tP" + - "ZmZgLiBQYXRjaCBhbmQgcmVzdGFydDoKCmBgYGJhc2gKZm9yIG5zIGluIHZhdWx0LXN5c3RlbSBu" + - "dmNmIGVzczsgZG8KICBmb3Igc2EgaW4gJChrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFu" + - "ZS1jb250ZXh0PiBnZXQgc2EgLW4gIiRucyIgXAogICAgLS1uby1oZWFkZXJzIC1vIGN1c3RvbS1j" + - "b2x1bW5zPSI6bWV0YWRhdGEubmFtZSIpOyBkbwogICAga3ViZWN0bCAtLWNvbnRleHQgPGNvbnRy" + - "b2wtcGxhbmUtY29udGV4dD4gcGF0Y2ggc2VydmljZWFjY291bnQgLW4gIiRucyIgIiRzYSIgXAog" + - "ICAgICAtcCAneyJpbWFnZVB1bGxTZWNyZXRzIjogW3sibmFtZSI6ICJudmNyLWNyZWRzIn1dfScK" + - "ICBkb25lCmRvbmUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZGVs" + - "ZXRlIHBvZHMgLW4gdmF1bHQtc3lzdGVtIC0tYWxsCmBgYAoKVmVyaWZ5OgoKYGBgYmFzaAprdWJl" + - "Y3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZXZlbnRzIC1uIHZhdWx0" + - "LXN5c3RlbSBcCiAgLS1zb3J0LWJ5PScubGFzdFRpbWVzdGFtcCcgfCBncmVwIC1pIHB1bGwKIyBT" + - "aG91bGQgc2hvdyAiU3VjY2Vzc2Z1bGx5IHB1bGxlZCBpbWFnZSIgZnJvbSBudmNyLmlvCmBgYAoK" + - "LS0tCgojIyBFeGFtcGxlIDM6IEZ1bGwgVGVhcmRvd24gYW5kIFJlaW5zdGFsbAoKV2hlbiBhIGRl" + - "cGxveW1lbnQgaXMgYnJva2VuIGFuZCB5b3UgbmVlZCBhIGNsZWFuIHNsYXRlLgoKIyMjIFN0ZXAg" + - "MTogRGVzdHJveSB0aGUgY29tcHV0ZS1wbGFuZSBzdGFjawoKYGBgYmFzaAptYWtlIC1DIGRlcGxv" + - "eS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIGRlc3Ryb3kgXAogIENMVVNURVJfTkFNRT08Y2x1" + - "c3Rlci1uYW1lPiBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNv" + - "bXB1dGUtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpJZiBjb21wdXRlIGNsZWFudXAgaXMgc3R1Y2sg" + - "b24gZmluYWxpemVycywgdXNlIHRoZSBjb21wdXRlLWNvbnRleHQgcHJvY2VkdXJlIGluCltkZWJ1" + - "Z2dpbmcubWRdKHJlZmVyZW5jZXMvZGVidWdnaW5nLm1kI2ZhaWx1cmUtbnZjYS1jbGVhbnVwLXN0" + - "dWNrLWZpbmFsaXplcnMpLgoKIyMjIFN0ZXAgMjogRGVyZWdpc3RlciB0aGUgY29tcHV0ZSBjbHVz" + - "dGVyCgpSZWFkIGBjbHVzdGVySURgIGFuZCBgbmNhSURgIGZyb20KYGRlcGxveS9zdGFja3MvbnZj" + - "Zi1jb21wdXRlLXBsYW5lL3JlZ2lzdHJhdGlvbi88Y2x1c3Rlci1uYW1lPi1yZWdpc3Rlci12YWx1" + - "ZXMueWFtbGAuClNob3cgdGhlIElEIGFuZCBnZXQgY29uZmlybWF0aW9uIGJlZm9yZSBkZWxldGlu" + - "ZyB0aGUgSUNNUyByb3c6CgpgYGBiYXNoCjxudmNmLWNsaT4gLS1jb25maWcgPGNvbmZpZz4gY2x1" + - "c3RlciBkZWxldGUgXAogIC0tY2x1c3Rlci1pZCA8Y2x1c3Rlci1pZC1mcm9tLXJlZ2lzdHJhdGlv" + - "bi12YWx1ZXM+IFwKICAtLW5jYS1pZCA8bmNhLWlkPiBcCiAgLS1pZ25vcmUtbWlzc2luZwpgYGAK" + - "ClJlcGVhdCBzdGVwcyAxIGFuZCAyIGZvciBldmVyeSBjb21wdXRlIGNsdXN0ZXIuCgojIyMgU3Rl" + - "cCAzOiBEZXN0cm95IHRoZSBjb250cm9sLXBsYW5lIHN0YWNrCgpQcmVzZXJ2ZSB0aGUgYGNlcnQt" + - "bWFuYWdlcmAgbmFtZXNwYWNlIGJ5IGRlZmF1bHQuIE5hbWVzcGFjZSBwcmVzZXJ2YXRpb24gZG9l" + - "cwpub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZS4gQmVmb3JlIHJ1bm5pbmcgZGVzdHJveSwg" + - "aWRlbnRpZnkgd2hldGhlcgpjZXJ0LW1hbmFnZXIgaXMgZXh0ZXJuYWwuIEZvciBhbiBleHRlcm5h" + - "bCBpbnN0YWxsYXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlCmBjZXJ0TWFuYWdlci5lbmFibGVkOiBm" + - "YWxzZWAgYW5kIGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBhbiBpbnRlbmRlZApzdGFjay1tYW5h" + - "Z2VkIHJlbGVhc2Ugd2l0aCBlZmZlY3RpdmUgYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IHRydWVgLCB2" + - "ZXJpZnkKbWF0Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1ldGFkYXRhIGFuZCBhYm9ydCBvbiBt" + - "aXNzaW5nIG9yIG1pc21hdGNoZWQKZXZpZGVuY2UuIE9ubHkgcGxhbiBuYW1lc3BhY2UgcmVtb3Zh" + - "bCBhZnRlciB2ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kCmdldHRpbmcgZXhwbGlj" + - "aXQgY29uZmlybWF0aW9uOyBvdGhlcndpc2UgZG8gbm90IGRlbGV0ZSBpdC4KCmBgYGJhc2gKS1VC" + - "RUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBcCm1ha2UgLUMgZGVwbG95L3N0YWNr" + - "cy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09O" + - "RklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpQYXNzIGJvdGgga3ViZWNv" + - "bmZpZyBmb3JtcyBiZWNhdXNlIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlIGNsZWFudXAgdXNlcwph" + - "bWJpZW50IGBrdWJlY3RsYC4KCiMjIyBTdGVwIDQ6IFZlcmlmeSBjbGVhbgoKYGBgYmFzaAprdWJl" + - "Y3RsIC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgbnMgfCBcCiAgZ3JlcCAt" + - "RSAnKG52Y2F8bnZjZi1iYWNrZW5kfGdyb3ZlfGR5bmFtbyknCmt1YmVjdGwgLS1jb250ZXh0IDxj" + - "b250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBucyB8IFwKICBncmVwIC1FICcoY2Fzc2FuZHJhfG5h" + - "dHN8dmF1bHR8bnZjZnxhcGkta2V5c3xlc3N8c2lzKScKIyBCb3RoIGNvbW1hbmRzIHNob3VsZCBy" + - "ZXR1cm4gZW1wdHkuCmBgYAoKIyMjIFN0ZXAgNTogUmVpbnN0YWxsIGluIHNwbGl0IG9yZGVyCgpG" + - "b2xsb3cgW0NsZWFuIEluc3RhbGxhdGlvbl0oU0tJTEwubWQjY2xlYW4taW5zdGFsbGF0aW9uKSwg" + - "dGhlbiByZXR1cm4gdG8gdGhlCnNhbWUgaGFuZG9mZiBpbiBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJ" + - "bnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLgoK" + - "LS0tCgojIyBFeGFtcGxlIDQ6IFJlY292ZXIgZnJvbSBhIEdhdGV3YXkgRW5kcG9pbnQgQ2hhbmdl" + - "CgpUaGUgc2VwYXJhdGVseSBwcm92aXNpb25lZCBHYXRld2F5IG9yIGl0cyBsb2FkIGJhbGFuY2Vy" + - "IHdhcyByZWNyZWF0ZWQgYW5kIGdvdCBhIG5ldyBlbmRwb2ludC4KCiMjIyBTdGVwIDE6IEdldCB0" + - "aGUgbmV3IGVuZHBvaW50CgpgYGBiYXNoCkdBVEVXQVlfQUREUj0kKGt1YmVjdGwgLS1jb250ZXh0" + - "IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5IFwKICBudmNmLWdhdGV3YXkgLW4g" + - "ZW52b3ktZ2F0ZXdheSBcCiAgLW8ganNvbnBhdGg9J3suc3RhdHVzLmFkZHJlc3Nlc1swXS52YWx1" + - "ZX0nKQp0ZXN0IC1uICIkR0FURVdBWV9BRERSIgpgYGAKCiMjIyBTdGVwIDI6IFVwZGF0ZSBETlMg" + - "YW5kIGRpcmVjdCBhZGRyZXNzIGZpZWxkcwoKS2VlcCBgZ2xvYmFsLmRvbWFpbmAsIHJvdXRlIGhv" + - "c3RuYW1lcywgYW5kIENMSSBIb3N0IGZpZWxkcyB1bmNoYW5nZWQuIFBvaW50IHRoZQpETlMgcmVj" + - "b3JkcyBmb3IgcmVuZGVyZWQgcm91dGUgaG9zdG5hbWVzLCBzdWNoIGFzIGBhcGkuPGRvbWFpbj5g" + - "IGFuZApgKi5pbnZvY2F0aW9uLjxkb21haW4+YCwgdG8gYEdBVEVXQVlfQUREUmAuIEZvciBhIHRl" + - "bXBvcmFyeSBlbnZpcm9ubWVudCB3aXRob3V0CkROUywga2VlcCBpdHMgcmVzZXJ2ZWQgcm91dGUg" + - "c3VmZml4IGFuZCBjb25uZWN0IHRvIGBHQVRFV0FZX0FERFJgIHdpdGggdGhlCm1hdGNoaW5nIGBI" + - "b3N0YCBoZWFkZXIuCgpGb3IgYSBzcGxpdCBkZXBsb3ltZW50IGNvbmZpZ3VyZWQgd2l0aCBkaXJl" + - "Y3QgR2F0ZXdheSBhZGRyZXNzZXMsIHJlcGxhY2Ugb25seQp0aGUgYWRkcmVzcy1iZWFyaW5nIHZh" + - "bHVlczogY29udHJvbC1wbGFuZSBgbnZjZk5hdHNTZXJ2aWNlVVJMYCwgY29tcHV0ZS1wbGFuZQpJ" + - "Q01TLCBSZVZhbCwgYW5kIE5BVFMgVVJMcywgYW5kIENMSSBVUkwgZmllbGRzLiBLZWVwIHRoZWly" + - "IGRvbWFpbiBhbmQgSG9zdApvdmVycmlkZXMgdW5jaGFuZ2VkLiBSZWZyZXNoIHJlZ2lzdHJhdGlv" + - "biBhbmQgaW5zdGFsbGF0aW9uIHRocm91Z2ggdGhlIHNhbWUKaGFuZG9mZiB1c2VkIG9yaWdpbmFs" + - "bHkuIFNlZQpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKHJlZmVyZW5jZXMvY29t" + - "cHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpCmZvciB0aGUgZmllbGRzIGFuZCBjb21wbGV0ZSBj" + - "b21tYW5kcy4KCiMjIyBTdGVwIDM6IFZlcmlmeSBib3RoIGNvbnRleHRzCgpgYGBiYXNoCmRpZyAr" + - "c2hvcnQgImFwaS48ZG9tYWluPiIKY3VybCAtSCAiSG9zdDogYXBpLjxkb21haW4+IiAiaHR0cDov" + - "LyRHQVRFV0FZX0FERFIvaGVhbHRoIgprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1j" + - "b250ZXh0PiBnZXQgZ2F0ZXdheSBudmNmLWdhdGV3YXkgXAogIC1uIGVudm95LWdhdGV3YXkgLW8g" + - "d2lkZQprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgaHR0cHJv" + - "dXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgdGNw" + - "cm91dGVzIC1BCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IHJvbGxv" + - "dXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Etb3BlcmF0b3IgLW4gbnZjYS1vcGVyYXRvciAt" + - "LXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IHdh" + - "aXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4gLW4gbnZjYS1v" + - "cGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3suc3RhdHVzLmFnZW50U3RhdHVzfSc9aGVhbHRo" + - "eSAtLXRpbWVvdXQ9MTBtCmBgYAoKLS0tCgojIyBFeGFtcGxlIDU6IERlcGxveSBPbmx5IERlcGVu" + - "ZGVuY2llcwoKVXNlZnVsIGZvciB0ZXN0aW5nIG9yIHdoZW4gaXRlcmF0aW5nIG9uIHNlcnZpY2Ug" + - "Y29uZmlndXJhdGlvbi4KCmBgYGJhc2gKIyBEZXBsb3kganVzdCBOQVRTLCBDYXNzYW5kcmEsIE9w" + - "ZW5CYW8KSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91" + - "cD1kZXBlbmRlbmNpZXMgc3luYwoKIyBDaGVjayBzdGF0dXMKa3ViZWN0bCBnZXQgcG9kcyAtbiBu" + - "YXRzLXN5c3RlbQprdWJlY3RsIGdldCBwb2RzIC1uIGNhc3NhbmRyYS1zeXN0ZW0Ka3ViZWN0bCBn" + - "ZXQgcG9kcyAtbiB2YXVsdC1zeXN0ZW0KCiMgRGVwbG95IGp1c3Qgb25lIHNwZWNpZmljIHJlbGVh" + - "c2UKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEg" + - "c3luYwpgYGAKCiMjIyBTZWxlY3RvciByZWZlcmVuY2UKCnwgU2VsZWN0b3IgfCBSZWxlYXNlcyB8" + - "CnwtLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgYHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzYCB8" + - "IG5hdHMsIGNhc3NhbmRyYSwgb3BlbmJhby1zZXJ2ZXIgfAp8IGByZWxlYXNlLWdyb3VwPXNlcnZp" + - "Y2VzYCB8IGFwaS1rZXlzLCBzaXMsIGFwaSwgaW52b2NhdGlvbi1zZXJ2aWNlLCBncnBjLXByb3h5" + - "LCBlc3MtYXBpLCBub3Rhcnktc2VydmljZSwgcmV2YWwsIG9wdGlvbmFsIGxsbS1yZXF1ZXN0LXJv" + - "dXRlciBhbmQgbGxtLWFwaS1nYXRld2F5IHdoZW4gYGxsbS5lbmFibGVkPXRydWVgLCBvcHRpb25h" + - "bCB2YW5pdHktZ2F0ZXdheSBvbmx5IGluIHN0YWNrIHBhY2thZ2VzIHRoYXQgaW5jbHVkZSB0aGUg" + - "YWRkb24gYW5kIGhhdmUgYGFkZG9ucy52YW5pdHlHYXRld2F5LmVuYWJsZWQ9dHJ1ZWAsIG9wdGlv" + - "bmFsIG52Y2YtdWkgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhlIGFkZG9u" + - "IGFuZCBoYXZlIGBhZGRvbnMubnZjZlVpLmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1lPWxsbS1yZXF1" + - "ZXN0LXJvdXRlcmAgfCBEZXBsb3kganVzdCB0aGUgTExNIHJlcXVlc3Qgcm91dGVyIHdoZW4gYGxs" + - "bS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1sbG0tYXBpLWdhdGV3YXlgIHwgRGVwbG95IGp1c3Qg" + - "dGhlIExMTSBBUEkgZ2F0ZXdheSB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCB8CnwgYG5hbWU9dmFu" + - "aXR5LWdhdGV3YXlgIHwgRGVwbG95IGp1c3QgVmFuaXR5IEdhdGV3YXkgb25seSB3aGVuIHRoZSBz" + - "dGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoYXQgcmVsZWFzZSBhbmQgYGFkZG9ucy52YW5pdHlHYXRl" + - "d2F5LmVuYWJsZWQ9dHJ1ZWAgfAp8IGBuYW1lPW52Y2YtdWlgIHwgRGVwbG95IE5WQ0YgVUkgb25s" + - "eSB3aGVuIHRoZSBzdGFjayBwYWNrYWdlIGluY2x1ZGVzIHRoYXQgcmVsZWFzZSBhbmQgYGFkZG9u" + - "cy5udmNmVWkuZW5hYmxlZD10cnVlYCB8CnwgYHJlbGVhc2UtZ3JvdXA9aW5ncmVzc2AgfCBpbmdy" + - "ZXNzIChnYXRld2F5IHJvdXRlcykgfAp8IGBuYW1lPTxyZWxlYXNlPmAgfCBBbnkgaW5kaXZpZHVh" + - "bCByZWxlYXNlIGJ5IG5hbWUgfAoKTm90ZTogYGFkbWluLWlzc3Vlci1wcm94eWAgZG9lcyBub3Qg" + - "aGF2ZSBhIHJlbGVhc2UtZ3JvdXAgbGFiZWwuIFRhcmdldCBpdCB3aXRoIGAtLXNlbGVjdG9yIG5h" + - "bWU9YWRtaW4taXNzdWVyLXByb3h5YC4KUEsHCAJSTkB/KAAAfygAAFBLAwQUAAgAAAAAACEAAAAA" + - "AAAAAAAAAAAATAAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5j" + - "ZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWRVVAUAAQCmzhIjIFNwbGl0IENvbXB1dGUt" + - "UGxhbmUgSW5zdGFsbGF0aW9uCgpUaGUgY29udHJvbCBwbGFuZSBhbmQgY29tcHV0ZSBwbGFuZSBh" + - "cmUgc2VwYXJhdGUgc3RhY2tzLiBJbnN0YWxsIHRoZSBjb250cm9sCnBsYW5lIGZpcnN0LCB0aGVu" + - "IHJlZ2lzdGVyIGFuZCBpbnN0YWxsIGVhY2ggY29tcHV0ZSBjbHVzdGVyLiBDaG9vc2Ugb25lIGhh" + - "bmRvZmYKYmVsb3cgYW5kIHVzZSBpdCBmb3IgdGhlIGZ1bGwgbGlmZWN5Y2xlLiBEbyBub3QgY29t" + - "YmluZSBhIENMSS1nZW5lcmF0ZWQgcHJvZmlsZQp3aXRoIHRoZSBIZWxtZmlsZSB2YWx1ZXMgZmxv" + - "dy4KCiMjIENob29zZSBhIEhhbmRvZmYKCnwgRmxvdyB8IFNvdXJjZSBvZiBjb250cm9sLXBsYW5l" + - "IGVuZHBvaW50cyB8IFJlZ2lzdHJhdGlvbiBhcnRpZmFjdCB8CnwtLS0tLS18LS0tLS0tLS0tLS0t" + - "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgSGVsbWZp" + - "bGUgdmFsdWVzIHwgU2VwYXJhdGUgY29udHJvbC1wbGFuZSBhbmQgY29tcHV0ZS1wbGFuZSBlbnZp" + - "cm9ubWVudCBmaWxlcyB8IGBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9yZWdpc3Ry" + - "YXRpb24vPGNsdXN0ZXI+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYCB8CnwgQ0xJIHByb2ZpbGUgfCBD" + - "TEktZ2VuZXJhdGVkIGBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1wbGFu" + - "ZS1wcm9maWxlLnlhbWxgIHwgQ0xJLWdlbmVyYXRlZCBgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1" + - "dGUtcGxhbmUvb3V0LzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAgfAoKVGhlIENMSSBw" + - "cm9maWxlIGlzIG1hbmRhdG9yeSBmb3IgdGhlIENMSSBmbG93IGFuZCBtdXN0IG5vdCBiZSBoYW5k" + - "LWF1dGhvcmVkLgpUaGUgSGVsbWZpbGUgZmxvdyBkb2VzIG5vdCBjb25zdW1lIGEgY29udHJvbC1w" + - "bGFuZSBwcm9maWxlLgoKQ29tbWFuZHMgYmVsb3cgdXNlIG1vbm9yZXBvIHBhdGhzIGZyb20gdGhl" + - "IHJlcG9zaXRvcnkgcm9vdC4gT3BlcmF0b3JzIHVzaW5nCmV4dHJhY3RlZCBwYWNrYWdlcyBuZWVk" + - "IG1hdGNoaW5nLXZlcnNpb24gYG52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNrYCBhbmQKYG52Y2YtY29t" + - "cHV0ZS1wbGFuZS1zdGFja2AgYnVuZGxlcy4gU3Vic3RpdHV0ZSB0aG9zZSBidW5kbGUgcm9vdHMg" + - "Zm9yCmBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZGAgYW5kIGBkZXBsb3kvc3RhY2tzL252Y2Yt" + - "Y29tcHV0ZS1wbGFuZWAuCgojIyBIZWxtZmlsZSBWYWx1ZXMgRmxvdwoKQ3JlYXRlIGJvdGggZW52" + - "aXJvbm1lbnQgZmlsZXMgYmVmb3JlIGluc3RhbGxhdGlvbjoKCi0gYGRlcGxveS9zdGFja3Mvc2Vs" + - "Zi1tYW5hZ2VkL2Vudmlyb25tZW50cy88ZW52Pi55YW1sYCBmb3IgY29udHJvbC1wbGFuZQogIHJl" + - "Z2lzdHJ5LCBkb21haW4sIEdhdGV3YXksIHJvdXRlcywgYW5kIHNlcnZpY2Ugc2V0dGluZ3MuCi0g" + - "YGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1s" + - "YCBmb3IgY29tcHV0ZS1wbGFuZQogIHJlZ2lzdHJ5LCBwdWxsIHNlY3JldHMsIGFuZCBjb21wdXRl" + - "LXJlYWNoYWJsZSBJQ01TLCBSZVZhbCwgYW5kIE5BVFMgdmFsdWVzLgoKRm9yIEVLUywgdXNlIHRo" + - "ZSBjYW5vbmljYWwKW0NTUCBFbmQtdG8tRW5kIEV4YW1wbGVdKGh0dHBzOi8vZG9jcy5udmlkaWEu" + - "Y29tL252Y2YvdjAuNi4wLXJjL2NzcC1lbmQtdG8tZW5kLWV4YW1wbGUpLgpUaGUgY29udHJvbC1w" + - "bGFuZSBlbnZpcm9ubWVudCBrZWVwcyB0aGUgRW52b3kgR2F0ZXdheSBjb250cm9sbGVyIGluCmBl" + - "bnZveS1nYXRld2F5LXN5c3RlbWAsIGF0dGFjaGVzIHJvdXRlcyB0byBgR2F0ZXdheS9udmNmLWdh" + - "dGV3YXlgIGluCmBlbnZveS1nYXRld2F5YCwgYW5kIGVuYWJsZXMgdGhlIE5BVFMgcm91dGUuIFRo" + - "ZSBjb21wdXRlLXBsYW5lIGVudmlyb25tZW50IHVzZXMKdGhlIGV4dGVybmFsIGFkZHJlc3MgcGx1" + - "cyB0aGUgc2VydmljZSBob3N0IG92ZXJyaWRlcy4gSGVyZSwKYDxnYXRld2F5LWFkZHJlc3M+YCBp" + - "cyB0aGUgTkxCIGFkZHJlc3MgYW5kIGA8Z2F0ZXdheS1kb21haW4+YCBpcyB0aGUgRE5TIGJhc2UK" + - "d2hvc2Ugc2VydmljZSBzdWJkb21haW5zIHJlc29sdmUgdG8gdGhhdCBOTEI6CgpgYGB5YW1sCiMg" + - "ZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwKZ2xvYmFs" + - "OgogIGRvbWFpbjogIjxnYXRld2F5LWRvbWFpbj4iCiAgd29ya2VyRW5kcG9pbnRzOgogICAgbnZj" + - "ZlNlcnZpY2VVUkw6ICJodHRwOi8vYXBpLjxnYXRld2F5LWRvbWFpbj4iCiAgICBudmNmR3JwY1Nl" + - "cnZpY2VVUkw6ICJodHRwOi8vd29ya2VyLWFwaS48Z2F0ZXdheS1kb21haW4+IgogICAgbnZjZk5h" + - "dHNTZXJ2aWNlVVJMOiAibmF0czovLzxnYXRld2F5LWFkZHJlc3M+OjQyMjIiCiAgICBudmN0U2Vy" + - "dmljZVVSTDogImh0dHA6Ly90YXNrcy48Z2F0ZXdheS1kb21haW4+IgogICAgbnZjdEdycGNTZXJ2" + - "aWNlVVJMOiAiaHR0cDovL3dvcmtlci10YXNrcy48Z2F0ZXdheS1kb21haW4+IgogICAgaW52b2Nh" + - "dGlvblNlcnZpY2VVUkw6ICJodHRwOi8vaW52b2NhdGlvbi48Z2F0ZXdheS1kb21haW4+IgoKZ3Jw" + - "Y3Byb3h5OgogIG52Y2ZHcnBjU2VydmljZVVSTDogImh0dHA6Ly9hcGkubnZjZi5zdmMuY2x1c3Rl" + - "ci5sb2NhbDo5MDkwIgoKaW5ncmVzczoKICBnYXRld2F5QXBpOgogICAgY29udHJvbGxlck5hbWVz" + - "cGFjZTogZW52b3ktZ2F0ZXdheS1zeXN0ZW0KICAgIGdhdGV3YXlzOgogICAgICBzaGFyZWQ6IHtu" + - "YW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3ktZ2F0ZXdheX0KICAgICAgZ3JwYzog" + - "e25hbWU6IG52Y2YtZ2F0ZXdheSwgbmFtZXNwYWNlOiBlbnZveS1nYXRld2F5fQogICAgICBuYXRz" + - "OgogICAgICAgIG5hbWU6IG52Y2YtZ2F0ZXdheQogICAgICAgIG5hbWVzcGFjZTogZW52b3ktZ2F0" + - "ZXdheQogICAgICAgIGxpc3RlbmVyTmFtZTogbmF0cwogICAgcm91dGVzOgogICAgICBudmNmQXBp" + - "OgogICAgICAgIGdycGM6CiAgICAgICAgICBlbmFibGVkOiB0cnVlCiAgICAgICAgICBob3N0bmFt" + - "ZXM6IFsid29ya2VyLWFwaS48Z2F0ZXdheS1kb21haW4+Il0KICAgICAgbnZjdEFwaToKICAgICAg" + - "ICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAgICAgaG9zdG5hbWVzOiBbIndv" + - "cmtlci10YXNrcy48Z2F0ZXdheS1kb21haW4+Il0KICAgICAgbmF0czoKICAgICAgICBlbmFibGVk" + - "OiB0cnVlCgpvcGVuYmFvOgogIG1pZ3JhdGlvbnM6CiAgICBpc3N1ZXJEaXNjb3Zlcnk6CiAgICAg" + - "IGVuYWJsZWQ6IHRydWUKYGBgCgpgYGB5YW1sCiMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUt" + - "cGxhbmUvZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwKZ2xvYmFsOgogIG52Y2FPcGVyYXRvcjoKICAg" + - "IHNlbGZNYW5hZ2VkOgogICAgICBpY21zU2VydmljZVVSTDogImh0dHA6Ly88Z2F0ZXdheS1hZGRy" + - "ZXNzPiIKICAgICAgaWNtc1NlcnZpY2VIb3N0SGVhZGVyT3ZlcnJpZGU6ICJzaXMuPGdhdGV3YXkt" + - "ZG9tYWluPiIKICAgICAgcmV2YWxTZXJ2aWNlVVJMOiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+" + - "IgogICAgICByZXZhbFNlcnZpY2VIb3N0SGVhZGVyT3ZlcnJpZGU6ICJyZXZhbC48Z2F0ZXdheS1k" + - "b21haW4+IgogICAgICBuYXRzVVJMOiAibmF0czovLzxnYXRld2F5LWFkZHJlc3M+OjQyMjIiCiAg" + - "ICAgIG5hdHNIb3N0T3ZlcnJpZGU6ICJuYXRzLjxnYXRld2F5LWRvbWFpbj4iCmBgYAoKUHJldmll" + - "dyBhbmQgaW5zdGFsbCB0aGUgY29udHJvbCBwbGFuZSBhZ2FpbnN0IGl0cyBjb250ZXh0OgoKYGBg" + - "YmFzaAptYWtlIC1DIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIHRlbXBsYXRlIFwKICBIRUxN" + - "RklMRV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklMRT08Y29udHJvbC1wbGFuZS1rdWJlY29u" + - "ZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBpbnN0YWxsIFwKICBIRUxN" + - "RklMRV9FTlY9PGVudj4gXAogIEtVQkVDT05GSUdfRklMRT08Y29udHJvbC1wbGFuZS1rdWJlY29u" + - "ZmlnPgpgYGAKCkJlZm9yZSByZWdpc3RlcmluZyB0aHJvdWdoIGEgYmFyZSBHYXRld2F5IGFkZHJl" + - "c3MsIGNyZWF0ZSBvciB1cGRhdGUgdGhlIENMSQpjb25maWcgcGFzc2VkIGFzIGBOVkNGX0NMSV9D" + - "T05GSUdgOgoKYGBgeWFtbApiYXNlX2h0dHBfdXJsOiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+" + - "IgppbnZva2VfdXJsOiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+IgpiYXNlX2dycGNfdXJsOiAi" + - "PGdhdGV3YXktYWRkcmVzcz46MTAwODEiCmFwaV9rZXlzX3NlcnZpY2VfdXJsOiAiaHR0cDovLzxn" + - "YXRld2F5LWFkZHJlc3M+IgppY21zX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKYXBp" + - "X2hvc3Q6ICJhcGkuPGdhdGV3YXktZG9tYWluPiIKYXBpX2tleXNfaG9zdDogImFwaS1rZXlzLjxn" + - "YXRld2F5LWRvbWFpbj4iCmludm9rZV9ob3N0OiAiaW52b2NhdGlvbi48Z2F0ZXdheS1kb21haW4+" + - "IgppY21zX2hvc3Q6ICJzaXMuPGdhdGV3YXktZG9tYWluPiIKYGBgCgpIb3N0IGZpZWxkcyBjb250" + - "YWluIGhvc3RuYW1lcyBvbmx5LCB3aXRob3V0IGEgVVJMIHNjaGVtZS4gYElDTVNfVVJMYCBtYXBz" + - "IG9ubHkKdG8gdGhlIHJlZ2lzdHJhdGlvbiBjb21tYW5kJ3MgYC0taWNtcy11cmxgOyBgaWNtc19o" + - "b3N0YCBpbiB0aGUgY29uZmlnIHN1cHBsaWVzCnRoZSBHYXRld2F5IEhvc3QgaGVhZGVyLiBUaGVy" + - "ZSBpcyBubyBgLS1pY21zLWhvc3RgIE1ha2Ugb3IgQ0xJIGZsYWcuCgpSZWdpc3RlciBmcm9tIHRo" + - "ZSBjb21wdXRlIGNvbnRleHQsIHRoZW4gaW5zdGFsbCB0aGUgY29tcHV0ZSBwbGFuZToKCmBgYGJh" + - "c2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSByZWdpc3Rlci1jbHVz" + - "dGVyIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIE5DQV9JRD08bmNhLWlkPiBc" + - "CiAgQ0xVU1RFUl9SRUdJT049PHJlZ2lvbj4gXAogIElDTVNfVVJMPWh0dHA6Ly88Z2F0ZXdheS1h" + - "ZGRyZXNzPiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+IFwK" + - "ICBOVkNGX0NMST08cGF0aC10by1udmNmLWNsaT4gXAogIE5WQ0ZfQ0xJX0NPTkZJRz08cGF0aC10" + - "by1udmNmLWNsaS1jb25maWc+CgptYWtlIC1DIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBs" + - "YW5lIGluc3RhbGwgXAogIENMVVNURVJfTkFNRT08Y2x1c3Rlci1uYW1lPiBcCiAgSEVMTUZJTEVf" + - "RU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbXB1dGUtcGxhbmUta3ViZWNvbmZpZz4K" + - "YGBgCgpSZWdpc3RyYXRpb24gZGlzY292ZXJzIHRoZSBPSURDIGlzc3VlciBhbmQgSldLUyBmcm9t" + - "IHRoZSBjb21wdXRlIGt1YmUgY29udGV4dC4KSW4gYSBtdWx0aS1jbHVzdGVyIGRlcGxveW1lbnQs" + - "IGBLVUJFQ09ORklHX0ZJTEVgIGlzIHJlcXVpcmVkIG9uIGJvdGgKY29tcHV0ZS1wbGFuZSBjb21t" + - "YW5kcy4gSW4gYSBzYW1lLWNsdXN0ZXIgZGVwbG95bWVudCBpdCBtYXkgYmUgb21pdHRlZCBvbmx5" + - "CndoZW4gdGhlIGFtYmllbnQgY29udGV4dCBpcyBhbHJlYWR5IHRoZSB0YXJnZXQgY2x1c3Rlci4K" + - "CiMjIENMSSBQcm9maWxlIEZsb3cKClJ1biB0aGUgQ0xJIGNvbnRyb2wtcGxhbmUgaW5zdGFsbCBm" + - "aXJzdC4gSXQgY3JlYXRlcyB0aGUgcHJvZmlsZSBjb25zdW1lZCBieQpjb21wdXRlLXBsYW5lIHJl" + - "Z2lzdHJhdGlvbjoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0" + - "ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBc" + - "CiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5l" + - "IFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQg" + - "PGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21w" + - "dXRlLXBsYW5lLWNvbnRleHQ+IFwKICBpbnN0YWxsIC0tY29udHJvbC1wbGFuZSBcCiAgLS1jbHVz" + - "dGVyLW5hbWUgPGNvbnRyb2wtcGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1yZWdpb24gPHJlZ2lv" + - "bj4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+Cgp0ZXN0IC1zIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5h" + - "Z2VkL291dC9jb250cm9sLXBsYW5lLXByb2ZpbGUueWFtbApgYGAKClVzZSB0aGUgZnVsbCBwZXJz" + - "aXN0ZW50IHByZWZpeCBmb3IgYm90aCBjb21wdXRlLXBsYW5lIGNvbW1hbmRzOgoKYGBgYmFzaApu" + - "dmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBsYW5l" + - "LXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUtc3Rh" + - "Y2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwKICAt" + - "LXBsYWluIFwKICBjb21wdXRlLXBsYW5lIHJlZ2lzdGVyIFwKICAtLWNvbnRyb2wtcGxhbmUtcHJv" + - "ZmlsZSBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1wbGFuZS1wcm9maWxl" + - "LnlhbWwgXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAog" + - "IC0ta3ViZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLXJlZ2lvbiA8cmVn" + - "aW9uPiBcCiAgLS1vdXRwdXQgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvb3V0Lzxj" + - "b21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWwKCm52Y2YtY2xp" + - "IC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sg" + - "ZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBs" + - "b3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4g" + - "XAogIGNvbXB1dGUtcGxhbmUgaW5zdGFsbCBcCiAgLS12YWx1ZXMgZGVwbG95L3N0YWNrcy9udmNm" + - "LWNvbXB1dGUtcGxhbmUvb3V0Lzxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4tcmVnaXN0ZXIt" + - "dmFsdWVzLnlhbWwgXAogIC0ta3ViZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwK" + - "ICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+CmBgYAoKUmVnaXN0" + - "cmF0aW9uIHNlbGVjdHMgdGhlIHByb2ZpbGUncyBpbi1jbHVzdGVyIG9yIGNvbXB1dGUtcmVhY2hh" + - "YmxlIGVuZHBvaW50cwpmcm9tIHRoZSBjb21wdXRlIGNvbnRleHQgYW5kIHByb2JlcyBpdHMgSldL" + - "Uy4gRG8gbm90IHJlcGxhY2UgcHJvZmlsZSBlbmRwb2ludHMKd2l0aCBoYW5kLWF1dGhvcmVkIEhl" + - "bG1maWxlIGVuZHBvaW50IHZhbHVlcy4KCiMjIFB1bGwgU2VjcmV0cwoKQ3JlYXRlIHRoZSBjb250" + - "cm9sLXBsYW5lIHNlY3JldCBpbiB0aGVzZSBuYW1lc3BhY2VzIG9uIHRoZSBjb250cm9sLXBsYW5l" + - "CmNvbnRleHQ6CgpgYGB0ZXh0CmNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkt" + - "a2V5cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXIKYGBgCgpPbiB0aGUgY29tcHV0" + - "ZSBjb250ZXh0LCBjcmVhdGUgdGhlIHNlY3JldCBvbmx5IGluIGBudmNhLW9wZXJhdG9yYCBhbmQg" + - "cmVmZXJlbmNlCml0IHRocm91Z2ggYGdsb2JhbC5pbWFnZVB1bGxTZWNyZXRzYCBpbiB0aGUgY29t" + - "cHV0ZS1wbGFuZSBlbnZpcm9ubWVudC4gVGhlIGNoYXJ0CmFuZCBvcGVyYXRvciB1c2UgaXQgaW4g" + - "YG52Y2Etb3BlcmF0b3JgIGFuZCBtaXJyb3IgaXQgdG8gYG52Y2Etc3lzdGVtYC4gRG8gbm90IGFk" + - "ZAplaXRoZXIgbmFtZXNwYWNlIHRvIHRoZSBjb250cm9sLXBsYW5lIGxpc3QuIEZvciBjb21tYW5k" + - "cyBhbmQgcG9saWN5IGV4YW1wbGVzLApzZWUgW3B1bGwtc2VjcmV0cy5tZF0ocHVsbC1zZWNyZXRz" + - "Lm1kKS4KCiMjIFZlcmlmaWNhdGlvbgoKVXNlIHRoZSBleHBsaWNpdCBHYXRld2F5IG5hbWUgYW5k" + - "IG5hbWVzcGFjZToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29u" + - "dGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAtbiBlbnZveS1nYXRld2F5IC1vIHdp" + - "ZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHRjcHJvdXRl" + - "IC1uIGVudm95LWdhdGV3YXkKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4" + - "dD4gcm9sbG91dCBzdGF0dXMgXAogIGRlcGxveW1lbnQvbnZjYS1vcGVyYXRvciAtbiBudmNhLW9w" + - "ZXJhdG9yIC0tdGltZW91dD0xMG0Ka3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29u" + - "dGV4dD4gd2FpdCBcCiAgbnZjZmJhY2tlbmQvPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPiAt" + - "biBudmNhLW9wZXJhdG9yIFwKICAtLWZvcj1qc29ucGF0aD0ney5zdGF0dXMuYWdlbnRTdGF0dXN9" + - "Jz1oZWFsdGh5IC0tdGltZW91dD0xMG0Ka3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUt" + - "Y29udGV4dD4gZ2V0IHNlY3JldCA8cHVsbC1zZWNyZXQ+IC1uIG52Y2Etc3lzdGVtCmBgYAoKIyMg" + - "VGVhcmRvd24KCkRlc3Ryb3kgYW5kIGRlcmVnaXN0ZXIgZXZlcnkgY29tcHV0ZSBwbGFuZSBiZWZv" + - "cmUgdGhlIGNvbnRyb2wgcGxhbmUuIEJvdGgKaGFuZG9mZnMgY2FuIGRlc3Ryb3kgdGhlIGNvbnRy" + - "b2wgcGxhbmUsIHNvIGFwcGx5IHRoaXMgcHJlZmxpZ2h0IGJlZm9yZSBlaXRoZXIKb25lLiBQcmVz" + - "ZXJ2ZSB0aGUgYGNlcnQtbWFuYWdlcmAgbmFtZXNwYWNlIGJ5IGRlZmF1bHQuIE5hbWVzcGFjZSBw" + - "cmVzZXJ2YXRpb24KZG9lcyBub3QgcHJlc2VydmUgdGhlIEhlbG0gcmVsZWFzZS4gSWRlbnRpZnkg" + - "d2hldGhlciBjZXJ0LW1hbmFnZXIgaXMgZXh0ZXJuYWwuCkZvciBhbiBleHRlcm5hbCBpbnN0YWxs" + - "YXRpb24sIHJlcXVpcmUgZWZmZWN0aXZlIGBjZXJ0TWFuYWdlci5lbmFibGVkOiBmYWxzZWAKYW5k" + - "IGFib3J0IGlmIGl0IGlzIHRydWUuIEZvciBhbiBpbnRlbmRlZCBzdGFjay1tYW5hZ2VkIHJlbGVh" + - "c2Ugd2l0aCBlZmZlY3RpdmUKYGNlcnRNYW5hZ2VyLmVuYWJsZWQ6IHRydWVgLCB2ZXJpZnkgbWF0" + - "Y2hpbmcgc3RhY2sgSGVsbSByZWxlYXNlIG1ldGFkYXRhIGFuZAphYm9ydCBvbiBtaXNzaW5nIG9y" + - "IG1pc21hdGNoZWQgZXZpZGVuY2UuIE9ubHkgcGxhbiBuYW1lc3BhY2UgcmVtb3ZhbCBhZnRlcgp2" + - "ZXJpZnlpbmcgbmFtZXNwYWNlIHByb3ZlbmFuY2UgYW5kIGdldHRpbmcgZXhwbGljaXQgY29uZmly" + - "bWF0aW9uOyBvdGhlcndpc2UKZG8gbm90IGRlbGV0ZSBpdC4KCkZvciB0aGUgSGVsbWZpbGUgdmFs" + - "dWVzIGZsb3csIHJldGFpbiBlYWNoIHJlZ2lzdHJhdGlvbiB2YWx1ZXMgZmlsZSB1bnRpbApjbGVh" + - "bnVwIGlzIHZlcmlmaWVkOgoKYGBgYmFzaAptYWtlIC1DIGRlcGxveS9zdGFja3MvbnZjZi1jb21w" + - "dXRlLXBsYW5lIGRlc3Ryb3kgXAogIENMVVNURVJfTkFNRT08Y2x1c3Rlci1uYW1lPiBcCiAgSEVM" + - "TUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbXB1dGUtcGxhbmUta3ViZWNv" + - "bmZpZz4KCjxudmNmLWNsaT4gLS1jb25maWcgPGNvbmZpZz4gY2x1c3RlciBkZWxldGUgXAogIC0t" + - "Y2x1c3Rlci1pZCA8Y2x1c3Rlci1pZC1mcm9tLXJlZ2lzdHJhdGlvbi12YWx1ZXM+IFwKICAtLW5j" + - "YS1pZCA8bmNhLWlkPiBcCiAgLS1pZ25vcmUtbWlzc2luZwpgYGAKClJlYWQgYGNsdXN0ZXJJRGAg" + - "YW5kIGBuY2FJRGAgZnJvbQpgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvcmVnaXN0" + - "cmF0aW9uLzxjbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sYC4KU2hvdyB0aGUgZXhh" + - "Y3QgY2x1c3RlciBJRCBhbmQgZ2V0IGNvbmZpcm1hdGlvbiBiZWZvcmUgYGNsdXN0ZXIgZGVsZXRl" + - "YC4gUmVwZWF0CmNvbXB1dGUgZGVzdHJveSBhbmQgZGVyZWdpc3RyYXRpb24gZm9yIGV2ZXJ5IGNv" + - "bXB1dGUgY2x1c3RlciwgdGhlbiBkZXN0cm95IHRoZQpjb250cm9sIHBsYW5lLgoKYGBgYmFzaApL" + - "VUJFQ09ORklHPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+IFwKbWFrZSAtQyBkZXBsb3kvc3Rh" + - "Y2tzL3NlbGYtbWFuYWdlZCBkZXN0cm95IFwKICBIRUxNRklMRV9FTlY9PGVudj4gXAogIEtVQkVD" + - "T05GSUdfRklMRT08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPgpgYGAKCkJvdGggYEtVQkVDT05G" + - "SUdgIGFuZCBgS1VCRUNPTkZJR19GSUxFYCBhcmUgcmVxdWlyZWQgb24gdGhlIGNvbnRyb2wtcGxh" + - "bmUKZGVzdHJveSBiZWNhdXNlIGl0cyBuYW1lc3BhY2UgY2xlYW51cCB1c2VzIGFtYmllbnQgYGt1" + - "YmVjdGxgLgoKRm9yIHRoZSBDTEkgcHJvZmlsZSBmbG93LCBrZWVwCmBkZXBsb3kvc3RhY2tzL252" + - "Y2YtY29tcHV0ZS1wbGFuZS9vdXQvPGNsdXN0ZXItbmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWxg" + - "CnVudGlsIHRlYXJkb3duIGNvbXBsZXRlcyBiZWNhdXNlIGBkb3duYCByZWFkcyBpdHMgY2x1c3Rl" + - "ciBJRC4gRmlyc3QgcXVlcnkgdGhlCmxpdmUgcmVnaXN0cmF0aW9uIHNldCB3aXRoIHRoZSBzYW1l" + - "IGNvbXBsZXRlIHBlcnNpc3RlbnQgcHJlZml4OgoKYGBgYmFzaApudmNmLWNsaSAtLWNvbmZpZyA8" + - "Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1jb250cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFj" + - "a3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9u" + - "dmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52IDxlbnY+IFwKICAtLXBsYWluIFwKICAtLWNvbnRy" + - "b2wtcGxhbmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBcCiAgLS1jb21wdXRlLXBs" + - "YW5lLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gXAogIC0taWNtcy11cmwgPGNvbXB1" + - "dGUtcmVhY2hhYmxlLWljbXMtdXJsPiBcCiAgc3RhdHVzIFwKICAtLWNsdXN0ZXItbmFtZSA8Y29t" + - "cHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgpgYGAKClNob3cg" + - "dGhlIHJlZ2lzdGVyZWQgY29tcHV0ZS1wbGFuZSBsaXN0LiBOYW1lZC1jbHVzdGVyIGBkb3duIC0t" + - "cGxhbi1vbmx5YCBkb2VzCm5vdCBxdWVyeSBJQ01TLCBzbyBpdCBwcmV2aWV3cyBvbmx5IHRoYXQg" + - "Y29tcHV0ZSBwbGFuZSBhbmQgY2Fubm90IHNob3cgdGhlCmNvbmRpdGlvbmFsIGNvbnRyb2wtcGxh" + - "bmUgcmVtb3ZhbC4gSWYgdGhlIHRhcmdldCBpcyB0aGUgbGFzdCByZWdpc3RlcmVkCmNsdXN0ZXIs" + - "IHJlYWwgYGRvd25gIGFsc28gZGVzdHJveXMgdGhlIGNvbnRyb2wgcGxhbmUuIEdldCBleHBsaWNp" + - "dCBjb25maXJtYXRpb24KZm9yIGJvdGggcmVtb3ZhbHMgYmVmb3JlIGNvbnRpbnVpbmcuIFRoZW4g" + - "cHJldmlldyBhbmQgZXhlY3V0ZSB3aXRoIHRoZSBzYW1lCnByZWZpeDoKCmBgYGJhc2gKbnZjZi1j" + - "bGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFj" + - "ayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRl" + - "cGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFp" + - "biBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAog" + - "IC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWlj" + - "bXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAogIGRvd24gLS1wbGFuLW9ubHkg" + - "XAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBsYW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tbmNh" + - "LWlkIDxuY2EtaWQ+CgpudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAg" + - "LS1jb250cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNv" + - "bXB1dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0t" + - "ZW52IDxlbnY+IFwKICAtLXBsYWluIFwKICAtLWNvbnRyb2wtcGxhbmUtY29udGV4dCA8Y29udHJv" + - "bC1wbGFuZS1jb250ZXh0PiBcCiAgLS1jb21wdXRlLXBsYW5lLWNvbnRleHQgPGNvbXB1dGUtcGxh" + - "bmUtY29udGV4dD4gXAogIC0taWNtcy11cmwgPGNvbXB1dGUtcmVhY2hhYmxlLWljbXMtdXJsPiBc" + - "CiAgZG93biBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPiBc" + - "CiAgLS1uY2EtaWQgPG5jYS1pZD4KYGBgCgpSZXBlYXQgYGRvd25gIGZvciBlYWNoIGNvbXB1dGUg" + - "Y2x1c3Rlci4gRWFjaCBydW4gZGVzdHJveXMgdGhhdCBjb21wdXRlIHBsYW5lIGFuZAp1bnJlZ2lz" + - "dGVycyBpdHMgSUNNUyByb3cuIEl0IHJlbW92ZXMgdGhlIGNvbnRyb2wgcGxhbmUgb25seSBhZnRl" + - "ciBubyBjbHVzdGVyCnJlZ2lzdHJhdGlvbnMgcmVtYWluLgpQSwcIlmO8WRIwAAASMAAAUEsDBBQA" + - "CAAAAAAAIQAAAAAAAAAAAAAAAAA7AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRp" + - "b24vcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhIjIERlYnVnZ2luZyBSZWZlcmVuY2UK" + - "ClJlY2lwZXMgZm9yIGRpYWdub3NpbmcgYW5kIGZpeGluZyBjb21tb24gTlZDRiBzZWxmLW1hbmFn" + - "ZWQgc3RhY2sgZmFpbHVyZXMuCgojIyBRdWljayBTdGF0dXMgQ29tbWFuZHMKCmBgYGJhc2gKIyBB" + - "bGwgcG9kcyBhY3Jvc3MgYWxsIG5hbWVzcGFjZXMKa3ViZWN0bCBnZXQgcG9kcyAtQSAtbyB3aWRl" + - "CgojIFBvZHMgaW4gYSBzcGVjaWZpYyBuYW1lc3BhY2UKa3ViZWN0bCBnZXQgcG9kcyAtbiA8bmFt" + - "ZXNwYWNlPgoKIyBBbGwgaGVsbSByZWxlYXNlcwpoZWxtIGxpc3QgLUEKCiMgUmVjZW50IGV2ZW50" + - "cyAobW9zdCB1c2VmdWwgZm9yIGRpYWdub3NpbmcgZmFpbHVyZXMpCmt1YmVjdGwgZ2V0IGV2ZW50" + - "cyAtbiA8bmFtZXNwYWNlPiAtLXNvcnQtYnk9Jy5sYXN0VGltZXN0YW1wJwoKIyBEZXNjcmliZSBh" + - "IHNwZWNpZmljIHBvZCAoc2hvd3MgZXZlbnRzLCBjb25kaXRpb25zLCB2b2x1bWVzKQprdWJlY3Rs" + - "IGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+CmBgYAoKIyMgRmFpbHVyZTog" + - "SW1hZ2VQdWxsQmFja09mZgoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgIFJF" + - "QURZICAgU1RBVFVTICAgICAgICAgICAgIFJFU1RBUlRTICAgQUdFCmNhc3NhbmRyYS0wICAgIDAv" + - "MSAgICAgSW1hZ2VQdWxsQmFja09mZiAgIDAgICAgICAgICAgNW0KYGBgCgpFdmVudHMgc2hvdzoK" + - "CmBgYHRleHQKRmFpbGVkIHRvIHB1bGwgaW1hZ2UgIm52Y3IuaW8vLi4uL2ltYWdlOnRhZyI6IDQw" + - "MSBVbmF1dGhvcml6ZWQKYGBgCgojIyMgRGlhZ25vc2lzCgpgYGBiYXNoCiMgQ2hlY2sgd2hhdCBp" + - "bWFnZSBpcyBmYWlsaW5nCmt1YmVjdGwgZGVzY3JpYmUgcG9kIC1uIDxuYW1lc3BhY2U+IDxwb2Qt" + - "bmFtZT4gfCBncmVwIC1BNSAiRXZlbnRzOiIKCiMgQ2hlY2sgaWYgcHVsbCBzZWNyZXQgZXhpc3Rz" + - "IGluIHRoZSBuYW1lc3BhY2UKa3ViZWN0bCBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgLW4gPG5hbWVz" + - "cGFjZT4KCiMgQ2hlY2sgaWYgdGhlIHBvZCBzcGVjIGhhcyBpbWFnZVB1bGxTZWNyZXRzCmt1YmVj" + - "dGwgZ2V0IHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IC1vIGpzb25wYXRoPSd7LnNwZWMu" + - "aW1hZ2VQdWxsU2VjcmV0c30nCgojIENoZWNrIGlmIHRoZSBTZXJ2aWNlQWNjb3VudCBoYXMgaW1h" + - "Z2VQdWxsU2VjcmV0cwprdWJlY3RsIGdldCBzYSA8c2EtbmFtZT4gLW4gPG5hbWVzcGFjZT4gLW8g" + - "anNvbnBhdGg9J3suaW1hZ2VQdWxsU2VjcmV0c30nCmBgYAoKIyMjIEZpeGVzCgoxLiAqKlNlY3Jl" + - "dCBtaXNzaW5nIGluIG5hbWVzcGFjZSoqOiBDcmVhdGUgaXQKCiAgIGBgYGJhc2gKICAga3ViZWN0" + - "bCBjcmVhdGUgc2VjcmV0IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAgICAtLWRvY2tl" + - "ci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBc" + - "CiAgICAgLS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgIC0tbmFtZXNwYWNl" + - "PTxuYW1lc3BhY2U+IFwKICAgICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFw" + - "cGx5IC1mIC0KICAgYGBgCgoyLiAqKlNlY3JldCBleGlzdHMgYnV0IHBvZCBkb2Vzbid0IHJlZmVy" + - "ZW5jZSBpdCoqOiBUaGUgY2hhcnQgbmVlZHMgYGltYWdlUHVsbFNlY3JldHNgIGNvbmZpZ3VyZWQg" + - "dmlhIGhlbG1maWxlIHZhbHVlcy4gU2VlIFtwdWxsLXNlY3JldHMubWRdKHB1bGwtc2VjcmV0cy5t" + - "ZCkuCgozLiAqKkNoYXJ0IGRvZXNuJ3Qgc3VwcG9ydCBpbWFnZVB1bGxTZWNyZXRzKiogKG9wZW5i" + - "YW8sIGludm9jYXRpb24tc2VydmljZSwgZXNzLWFwaSwgbm90YXJ5LXNlcnZpY2UpOiBQYXRjaCBT" + - "ZXJ2aWNlQWNjb3VudHMgYW5kIHJlc3RhcnQgcG9kcy4gU2VlIFtwdWxsLXNlY3JldHMubWRdKHB1" + - "bGwtc2VjcmV0cy5tZCkuCgo0LiAqKldyb25nIGNyZWRlbnRpYWxzIGluIHNlY3JldCoqOiBEZWxl" + - "dGUgYW5kIHJlY3JlYXRlCgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZGVsZXRlIHNlY3JldCBudmNy" + - "LWNyZWRzIC1uIDxuYW1lc3BhY2U+CiAgICMgUmVjcmVhdGUgd2l0aCBjb3JyZWN0IGNyZWRlbnRp" + - "YWxzCiAgIGBgYAoKIyMgRmFpbHVyZTogSW5pdDowLzEgU3R1Y2sgKFZhdWx0IEFnZW50KQoKIyMj" + - "IFN5bXB0b21zCgpTZXJ2aWNlIHBvZHMgc3R1Y2sgaW4gYEluaXQ6MC8xYCBmb3IgbWludXRlczoK" + - "CmBgYGJhc2gKTkFNRSAgICAgICAgICAgICAgICAgICAgICAgIFJFQURZICAgU1RBVFVTICAgICBS" + - "RVNUQVJUUyAgIEFHRQpudmNmLWFwaS03ZjRjNzZmNzg4LTQ0dmx0ICAwLzIgICAgIEluaXQ6MC8x" + - "ICAgMCAgICAgICAgICAxMG0KYGBgCgojIyMgRGlhZ25vc2lzCgpUaGUgaW5pdCBjb250YWluZXIg" + - "aXMgdGhlIHZhdWx0LWFnZW50LWluaXQgaW5qZWN0b3Igd2FpdGluZyBmb3IgT3BlbkJhby4KCmBg" + - "YGJhc2gKIyBDaGVjayBPcGVuQmFvIHBvZHMKa3ViZWN0bCBnZXQgcG9kcyAtbiB2YXVsdC1zeXN0" + - "ZW0KCiMgQ2hlY2sgaWYgT3BlbkJhbyBtaWdyYXRpb24gam9iIHJhbgprdWJlY3RsIGdldCBqb2Jz" + - "IC1uIHZhdWx0LXN5c3RlbQoKIyBDaGVjayBPcGVuQmFvIHBvZCBsb2dzCmt1YmVjdGwgbG9ncyAt" + - "biB2YXVsdC1zeXN0ZW0gb3BlbmJhby1zZXJ2ZXItMCAtYyBvcGVuYmFvCgojIENoZWNrIGluaXQg" + - "Y29udGFpbmVyIGxvZ3Mgb24gdGhlIHN0dWNrIHBvZAprdWJlY3RsIGxvZ3MgLW4gPG5hbWVzcGFj" + - "ZT4gPHBvZC1uYW1lPiAtYyB2YXVsdC1hZ2VudC1pbml0CmBgYAoKIyMjIEZpeGVzCgoxLiAqKk9w" + - "ZW5CYW8gcG9kcyBub3QgcnVubmluZyoqOiBDaGVjayB0aGVpciBldmVudHMgZm9yIGltYWdlIHB1" + - "bGwgaXNzdWVzLCByZXNvdXJjZSBpc3N1ZXMsIGV0Yy4KCjIuICoqT3BlbkJhbyBtaWdyYXRpb24g" + - "am9iIGRpZG4ndCBydW4qKjogVGhpcyBoYXBwZW5zIHdoZW4gYGhlbG1maWxlIHN5bmNgIHdhcyBp" + - "bnRlcnJ1cHRlZC4gRGVzdHJveSBhbmQgcmUtc3luYyBvcGVuYmFvOgoKICAgYGBgYmFzaAogICBI" + - "RUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW9wZW5iYW8tc2VydmVy" + - "IGRlc3Ryb3kKICAga3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIHZhdWx0LXN5c3RlbQogICBrdWJl" + - "Y3RsIGNyZWF0ZSBuYW1lc3BhY2UgdmF1bHQtc3lzdGVtCiAgICMgUmUtY3JlYXRlIHB1bGwgc2Vj" + - "cmV0IGlmIG5lZWRlZAogICBIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBu" + - "YW1lPW9wZW5iYW8tc2VydmVyIHN5bmMKICAgYGBgCgozLiAqKk9wZW5CYW8gcG9kcyBydW5uaW5n" + - "IGJ1dCBub3QgaW5pdGlhbGl6ZWQqKjogQ2hlY2sgdW5zZWFsIHN0YXR1czoKCiAgIGBgYGJhc2gK" + - "ICAga3ViZWN0bCBleGVjIC1uIHZhdWx0LXN5c3RlbSBvcGVuYmFvLXNlcnZlci0wIC1jIG9wZW5i" + - "YW8gLS0gYmFvIHN0YXR1cwogICBgYGAKCjQuICoqYHZhdWx0LWFnZW50LWluaXRgIGxvZ3MgYGF1" + - "dGgvand0L2xvZ2luYCAtPiBgNDAwIC4uLiBubyBrbm93biBrZXkgc3VjY2Vzc2Z1bGx5IHZhbGlk" + - "YXRlZCB0aGUgdG9rZW4gc2lnbmF0dXJlYCoqCiAgIChjb21tb24gb24gQUtTLCBhbmQgb24gYW55" + - "IGNsdXN0ZXIgd2hvc2UgT0lEQyBpc3N1ZXIgcHVibGlzaGVzIGEgcm90YXRpbmcgbXVsdGkta2V5" + - "IEpXS1MpOgogICB0aGUgT3BlbkJhbyBgYXV0aC9qd3RgIG1ldGhvZCB3YXMgY29uZmlndXJlZCB3" + - "aXRoIGEgc2luZ2xlIHN0YXRpYyBtb3VudGVkIHB1YmxpYyBrZXkKICAgKGBqd3RfdmFsaWRhdGlv" + - "bl9wdWJrZXlzYCkgaW5zdGVhZCBvZiB0aGUgaXNzdWVyJ3MgbGl2ZSBKV0tTLCBzbyBpdCBjYW5u" + - "b3QgdmFsaWRhdGUgdGhlCiAgIGNsdXN0ZXItc2lnbmVkIFNlcnZpY2VBY2NvdW50IHRva2VucyB0" + - "aGUgdmF1bHQtYWdlbnRzIHByZXNlbnQuIEV2ZXJ5IHNlcnZpY2UncwogICBgdmF1bHQtYWdlbnQt" + - "aW5pdGAgdGhlbiBsb29wcyBvbiB0aGF0IDQwMCBhbmQgdGhlIHBvZCBuZXZlciBsZWF2ZXMgYElu" + - "aXQ6MC8xYC4gVGhpcyBpcyB0aGUKICAgYmVoYXZpb3Igb2YgdGhlIGJhc2UgZGVmYXVsdCBgb3Bl" + - "bmJhby5taWdyYXRpb25zLmlzc3VlckRpc2NvdmVyeS5lbmFibGVkOiBmYWxzZWA7IHRoZQogICBt" + - "aWdyYXRpb24gbG9nIHNob3dzIGBPSURDIGlzc3VlciBkaXNjb3ZlcnkgaXMgZGlzYWJsZWQuIFVz" + - "aW5nIFNlcnZpY2VBY2NvdW50IGlzc3VlciBhbmQKICAgbW91bnRlZCBwdWJsaWMga2V5IGZhbGxi" + - "YWNrYC4gRW5hYmxlIGlzc3VlciBkaXNjb3Zlcnkgc28gdGhlIG1pZ3JhdGlvbiB1c2VzIHRoZSBs" + - "aXZlIEpXS1MsCiAgIHRoZW4gcmUtcnVuIGl0OgoKICAgYGBgYmFzaAogICAjIEluIHlvdXIgZW52" + - "IHZhbHVlcyAoZS5nLiBlbnZpcm9ubWVudHMvPGVudj4ueWFtbCksIHNldDoKICAgIyAgIG9wZW5i" + - "YW86CiAgICMgICAgIG1pZ3JhdGlvbnM6CiAgICMgICAgICAgaXNzdWVyRGlzY292ZXJ5OgogICAj" + - "ICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICBrdWJlY3RsIGRlbGV0ZSBqb2IgLW4gdmF1bHQtc3lz" + - "dGVtIG9wZW5iYW8tc2VydmVyLW1pZ3JhdGlvbnMKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1m" + - "aWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBzeW5jCiAgIGBgYAoKICAgVGhlIG1p" + - "Z3JhdGlvbiBsb2cgc2hvdWxkIHRoZW4gc2hvdyBgUmVjZWl2ZWQgZGlzY292ZXJ5IGRvY3VtZW50" + - "IGZyb20KICAgLi4uLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uYCBhbmQgYEZpbmFs" + - "IE9wZW5CYW8gSldUIEpXS1MgVVJMIHNldCB0bzoKICAgLi4uL29wZW5pZC92MS9qd2tzYCwgYW5k" + - "IHRoZSBzZXJ2aWNlIHBvZHMgYXV0aGVudGljYXRlIGFuZCByZWFjaCBSZWFkeSB3aXRoaW4gfjEg" + - "bWluLgogICBBS1MgY2x1c3RlcnMgd2l0aCB0aGUgY2x1c3RlciBPSURDIGlzc3VlciBlbmFibGVk" + - "ICh0aGUgYGFrcy1jbHVzdGVyYCBkZWZhdWx0KSBhbHdheXMgbmVlZAogICB0aGlzIGJlY2F1c2Ug" + - "dGhlIHN0YXRpYy1wdWJrZXkgZmFsbGJhY2sgY2Fubm90IG1hdGNoIHRoZSBpc3N1ZXIncyByb3Rh" + - "dGluZyBzaWduaW5nIGtleXMuCgojIyBGYWlsdXJlOiBPT01LaWxsZWQgb24gQ2Fzc2FuZHJhCgoj" + - "IyMgU3ltcHRvbXMKCmBgYHRleHQKTkFNRSAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICBSRVNU" + - "QVJUUyAgIEFHRQpjYXNzYW5kcmEtMCAgIDAvMSAgICAgT09NS2lsbGVkICAzICAgICAgICAgMTBt" + - "CmBgYAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiBjYXNz" + - "YW5kcmEtc3lzdGVtIGNhc3NhbmRyYS0wIHwgZ3JlcCAtQTMgIkxhc3QgU3RhdGUiCmBgYAoKIyMj" + - "IEZpeAoKT3ZlcnJpZGUgQ2Fzc2FuZHJhIHJlc291cmNlcyB2aWEgaGVsbWZpbGUgdmFsdWVzLiBT" + - "ZWUgRXhhbXBsZSAxIGluCltleGFtcGxlcy5tZF0oLi4vZXhhbXBsZXMubWQpLgoKYGBgeWFtbAot" + - "IGNhc3NhbmRyYToKICAgIHJlc291cmNlczoKICAgICAgbGltaXRzOgogICAgICAgIGNwdTogIjgi" + - "CiAgICAgICAgbWVtb3J5OiA4MTkyTWkKICAgICAgcmVxdWVzdHM6CiAgICAgICAgY3B1OiAiMiIK" + - "ICAgICAgICBtZW1vcnk6IDQwOTZNaQpgYGAKCk5vdGU6IGByZXNvdXJjZVByZXNldGAgaXMgbm90" + - "IGF2YWlsYWJsZSBpbiB0aGUgTlZDRiBjYXNzYW5kcmEgd3JhcHBlciBjaGFydC4gVXNlIGV4cGxp" + - "Y2l0IGByZXNvdXJjZXNgLgoKIyMgRmFpbHVyZTogUG9kcyBTdHVjayBpbiBQZW5kaW5nCgojIyMg" + - "U3ltcHRvbXMKCmBgYHRleHQKTkFNRSAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICBSRVNUQVJU" + - "UyAgIEFHRQpjYXNzYW5kcmEtMCAgIDAvMSAgICAgUGVuZGluZyAgIDAgICAgICAgICAgMTBtCmBg" + - "YAoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIGV2ZW50cyBmb3Igc2NoZWR1bGluZyBm" + - "YWlsdXJlcwprdWJlY3RsIGRlc2NyaWJlIHBvZCAtbiA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+Cgoj" + - "IENvbW1vbiBjYXVzZXM6CiMgLSAiMC8xMiBub2RlcyBhcmUgYXZhaWxhYmxlOiAxMiBub2RlKHMp" + - "IGRpZG4ndCBtYXRjaCBQb2QncyBub2RlIGFmZmluaXR5IgojIC0gIjAvMTIgbm9kZXMgYXJlIGF2" + - "YWlsYWJsZTogMTIgSW5zdWZmaWNpZW50IG1lbW9yeSIKIyAtICJwZXJzaXN0ZW50dm9sdW1lY2xh" + - "aW0gbm90IGZvdW5kIgpgYGAKCiMjIyBGaXhlcwoKMS4gKipOb2RlIHNlbGVjdG9yIG1pc21hdGNo" + - "Kio6IENoZWNrIGBub2RlU2VsZWN0b3JzYCBpbiBlbnZpcm9ubWVudCBmaWxlCgogICBgYGBiYXNo" + - "CiAgIGt1YmVjdGwgZ2V0IG5vZGVzIC0tc2hvdy1sYWJlbHMgfCBncmVwIG52Y2YKICAgYGBgCgoy" + - "LiAqKlN0b3JhZ2UgY2xhc3Mgbm90IGZvdW5kKio6IENoZWNrIHN0b3JhZ2UgY2xhc3MgZXhpc3Rz" + - "CgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZ2V0IHN0b3JhZ2VjbGFzcwogICBgYGAKCjMuICoqSW5z" + - "dWZmaWNpZW50IHJlc291cmNlcyoqOiBDaGVjayBub2RlIGNhcGFjaXR5CgogICBgYGBiYXNoCiAg" + - "IGt1YmVjdGwgZGVzY3JpYmUgbm9kZSA8bm9kZS1uYW1lPiB8IGdyZXAgLUE1ICJBbGxvY2F0ZWQg" + - "cmVzb3VyY2VzIgogICBgYGAKCiMjIEZhaWx1cmU6IEhlbG0gUmVsZWFzZSBpbiBGYWlsZWQgU3Rh" + - "dGUKCiMjIyBTeW1wdG9tcwoKYGBgYmFzaApoZWxtIGxpc3QgLUEKIyBTaG93cyByZWxlYXNlIHdp" + - "dGggU1RBVFVTOiBmYWlsZWQKYGBgCgpSZS1ydW5uaW5nIGBoZWxtZmlsZSBzeW5jYCBhcHBlYXJz" + - "IHRvIHN1Y2NlZWQgYnV0IHNlcnZpY2VzIGRvbid0IHdvcmsgKG1pZ3JhdGlvbnMgc2tpcHBlZCku" + - "CgojIyMgRGlhZ25vc2lzCgpgYGBiYXNoCmhlbG0gaGlzdG9yeSA8cmVsZWFzZS1uYW1lPiAtbiA8" + - "bmFtZXNwYWNlPgpgYGAKCiMjIyBGaXgKCk11c3QgZGVzdHJveSB0aGUgZmFpbGVkIHJlbGVhc2Ug" + - "YW5kIHJlLXN5bmMgKG5vdCBqdXN0IGFwcGx5KToKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+" + - "IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT08cmVsZWFzZT4gZGVzdHJveQojIElmIG5hbWVzcGFj" + - "ZSBuZWVkcyBjbGVhbnVwOgprdWJlY3RsIGRlbGV0ZSBuYW1lc3BhY2UgPG5hbWVzcGFjZT4Ka3Vi" + - "ZWN0bCBjcmVhdGUgbmFtZXNwYWNlIDxuYW1lc3BhY2U+CiMgUmUtY3JlYXRlIHB1bGwgc2VjcmV0" + - "IGlmIG5lZWRlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPTxy" + - "ZWxlYXNlPiBzeW5jCmBgYAoKIyMgRmFpbHVyZTogQWNjb3VudCBCb290c3RyYXAgSm9iIEZhaWxl" + - "ZAoKIyMjIFN5bXB0b21zCgpTZXJ2aWNlcyBkZXBsb3kgYnV0IGZ1bmN0aW9ucyBjYW4ndCBiZSBj" + - "cmVhdGVkLiBFdmVudHMgc2hvdyBib290c3RyYXAgam9iIGZhaWx1cmUuCgojIyMgRGlhZ25vc2lz" + - "CgpgYGBiYXNoCiMgQ2hlY2sgYm9vdHN0cmFwIGpvYiBzdGF0dXMKa3ViZWN0bCBnZXQgam9icyAt" + - "biBudmNmCgojIEdldCBsb2dzIChqb2IgYXV0by1kZWxldGVzIGFmdGVyIH41IG1pbnV0ZXMpCmt1" + - "YmVjdGwgbG9ncyBqb2IvbnZjZi1hcGktYWNjb3VudC1ib290c3RyYXAgLW4gbnZjZgoKIyBDaGVj" + - "ayBBUEkgbG9ncwprdWJlY3RsIGxvZ3MgLW4gbnZjZiAtbCBhcHAua3ViZXJuZXRlcy5pby9uYW1l" + - "PW52Y2YtYXBpIC0tdGFpbD0xMDAKYGBgCgojIyMgQ29tbW9uIENhdXNlcwoKMS4gKipXcm9uZyBi" + - "YXNlNjQgY3JlZGVudGlhbHMqKjogQ3JlZGVudGlhbHMgaW4gYHNlY3JldHMvPGVudj4tc2VjcmV0" + - "cy55YW1sYCBtdXN0IGJlIGAkb2F1dGh0b2tlbjpBUElfS0VZYCBiYXNlNjQtZW5jb2RlZCwgbm90" + - "IGp1c3QgdGhlIEFQSSBrZXkKCiAgIGBgYGJhc2gKICAgIyBWZXJpZnkgeW91ciBlbmNvZGVkIGNy" + - "ZWRlbnRpYWwKICAgZWNobyAnWU9VUl9CQVNFNjRfU1RSSU5HJyB8IGJhc2U2NCAtZAogICAjIFNo" + - "b3VsZCBvdXRwdXQ6ICRvYXV0aHRva2VuOm52YXBpLXh4eHh4CiAgIGBgYAoKMi4gKipSZWdpc3Ry" + - "eSB1bnJlYWNoYWJsZSoqOiBBUEkgY2FuJ3QgcmVhY2ggdGhlIHJlZ2lzdHJ5IHNwZWNpZmllZCBp" + - "biBgYWNjb3VudEJvb3RzdHJhcC5yZWdpc3RyeUNyZWRlbnRpYWxzYAoKIyMjIEZpeAoKRml4IGNy" + - "ZWRlbnRpYWxzIGluIHNlY3JldHMgZmlsZSwgdGhlbiByZWNvdmVyIHNlcnZpY2VzIHdpdGhvdXQg" + - "ZGVzdHJveWluZyBkZXBlbmRlbmNpZXM6CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxt" + - "ZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9c2VydmljZXMgZGVzdHJveQprdWJlY3RsIGRl" + - "bGV0ZSBuYW1lc3BhY2UgbnZjZiBhcGkta2V5cyBlc3Mgc2lzIC0taWdub3JlLW5vdC1mb3VuZApr" + - "dWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgbnZjZiAmJiBrdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2Ug" + - "YXBpLWtleXMgJiYgXAogIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBlc3MgJiYga3ViZWN0bCBj" + - "cmVhdGUgbmFtZXNwYWNlIHNpcwojIFJlLWNyZWF0ZSBwdWxsIHNlY3JldHMgaWYgbmVlZGVkCkhF" + - "TE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9c2Vydmlj" + - "ZXMgc3luYwpgYGAKCiMjIEZhaWx1cmU6IE5WQ0EgQ2xlYW51cCBTdHVjayAoRmluYWxpemVycykK" + - "CiMjIyBTeW1wdG9tcwoKQ29tcHV0ZS1wbGFuZSBjbGVhbnVwIGhhbmdzLiBOYW1lc3BhY2VzCnN0" + - "dWNrIGluIGBUZXJtaW5hdGluZ2A6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IG5zCiMgbnZjYS1vcGVy" + - "YXRvciAgICBUZXJtaW5hdGluZyAgIDEwbQojIG52Y2YtYmFja2VuZCAgICAgVGVybWluYXRpbmcg" + - "ICAxMG0KYGBgCgojIyMgRml4CgpSdW4gdGhpcyBvbmx5IGFnYWluc3QgdGhlIGNvbXB1dGUgY29u" + - "dGV4dCwgYWZ0ZXIgdGhlIG5vcm1hbCBjb21wdXRlLXBsYW5lCnRlYXJkb3duIGhhcyBmYWlsZWQu" + - "IFJlbW92ZSBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgY3VzdG9tIHJlc291cmNlcyBhbmQK" + - "Zm9yY2UtZGVsZXRlIHN0dWNrIG5hbWVzcGFjZXM6CgpgYGBiYXNoCmV4cG9ydCBDT01QVVRFX0NP" + - "TlRFWFQ9PGNvbXB1dGUtcGxhbmUtY29udGV4dD4KCiMgUmVtb3ZlIGZpbmFsaXplcnMgZnJvbSBO" + - "VkNGQmFja2VuZCByZXNvdXJjZXMKa3ViZWN0bCAtLWNvbnRleHQgIiRDT01QVVRFX0NPTlRFWFQi" + - "IGdldCBudmNmYmFja2VuZHMgLUEgLW8ganNvbiB8IFwKICBqcSAnLml0ZW1zW10gfCAubWV0YWRh" + - "dGEubmFtZXNwYWNlICsgIi8iICsgLm1ldGFkYXRhLm5hbWUnIC1yIHwgXAogIHhhcmdzIC1Je30g" + - "c2ggLWMgJ2NvbnRleHQ9IiQxIjsgbnM9IiR7MiUlLyp9IjsgbmFtZT0iJHsyIyMqL30iOyBrdWJl" + - "Y3RsIC0tY29udGV4dCAiJGNvbnRleHQiIHBhdGNoIG52Y2ZiYWNrZW5kICIkbmFtZSIgLW4gIiRu" + - "cyIgLS10eXBlPW1lcmdlIC1wICJ7XCJtZXRhZGF0YVwiOntcImZpbmFsaXplcnNcIjpbXX19Iicg" + - "XyAiJENPTVBVVEVfQ09OVEVYVCIge30KCiMgRm9yY2UtZGVsZXRlIHN0dWNrIG5hbWVzcGFjZXMg" + - "YnkgY2xlYXJpbmcgdGhlaXIgZmluYWxpemVycwpmb3IgbnMgaW4gbnZjYS1vcGVyYXRvciBudmNm" + - "LWJhY2tlbmQ7IGRvCiAga3ViZWN0bCAtLWNvbnRleHQgIiRDT01QVVRFX0NPTlRFWFQiIGdldCBu" + - "YW1lc3BhY2UgIiRucyIgLW8ganNvbiAyPi9kZXYvbnVsbCB8IFwKICAgIGpxICcuc3BlYy5maW5h" + - "bGl6ZXJzID0gW10nIHwgXAogICAga3ViZWN0bCAtLWNvbnRleHQgIiRDT01QVVRFX0NPTlRFWFQi" + - "IHJlcGxhY2UgXAogICAgICAtLXJhdyAiL2FwaS92MS9uYW1lc3BhY2VzLyRucy9maW5hbGl6ZSIg" + - "LWYgLSAyPi9kZXYvbnVsbApkb25lCmBgYAoKIyMgRmFpbHVyZTogTlZDQSBPcGVyYXRvciBNaXNz" + - "aW5nIG9yIE5vdCBSZWFkeQoKIyMjIFN5bXB0b21zCgpBZnRlciBjb21wdXRlLXBsYW5lIGluc3Rh" + - "bGwgY29tcGxldGVzLCBubyBgbnZjYS1vcGVyYXRvcmAgRGVwbG95bWVudCBleGlzdHMsIG9yCml0" + - "IGV4aXN0cyBidXQgcG9kcyBhcmUgbm90IHJlYWR5OgoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4" + - "dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgZGVwbG95bWVudCBudmNhLW9wZXJhdG9yIFwK" + - "ICAtbiBudmNhLW9wZXJhdG9yCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRl" + - "eHQ+IGdldCBwb2RzIC1uIG52Y2Etb3BlcmF0b3IKYGBgCgojIyMgRGlhZ25vc2lzIGFuZCBGaXhl" + - "cwoKRmlyc3QgaWRlbnRpZnkgd2hldGhlciB0aGUgaW5zdGFsbGF0aW9uIHVzZWQgdGhlIEhlbG1m" + - "aWxlIHZhbHVlcyBmbG93IG9yIHRoZQpDTEkgcHJvZmlsZSBmbG93LiBSZS1ydW4gb25seSB0aGF0" + - "IGZsb3cncyByZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlvbiBzdGVwcwpmcm9tIFtTcGxpdCBD" + - "b21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQp" + - "LiBEbyBub3QKc3Vic3RpdHV0ZSBvbmUgaGFuZG9mZiBmb3IgdGhlIG90aGVyLgoKSWYgaW5zdGFs" + - "bGF0aW9uIHN1Y2NlZWRzIGJ1dCBwb2RzIHN0aWxsIGZhaWwsIGluc3BlY3QgdGhlIGNvbXB1dGUg" + - "Y29udGV4dDoKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4" + - "dD4gZGVzY3JpYmUgZGVwbG95IG52Y2Etb3BlcmF0b3IgXAogIC1uIG52Y2Etb3BlcmF0b3IKa3Vi" + - "ZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gbG9ncyBkZXBsb3ltZW50L252" + - "Y2Etb3BlcmF0b3IgXAogIC1uIG52Y2Etb3BlcmF0b3IgLS10YWlsPTIwMAprdWJlY3RsIC0tY29u" + - "dGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgbnZjZmJhY2tlbmQgLW4gbnZjYS1vcGVy" + - "YXRvcgpgYGAKCkZvciBwcml2YXRlIHJlZ2lzdHJ5IGZhaWx1cmVzLCB2ZXJpZnkgdGhhdCB0aGUg" + - "cHVsbCBzZWNyZXQgZXhpc3RzIGluCmBudmNhLW9wZXJhdG9yYC4gVGhlIGNoYXJ0IGFuZCBvcGVy" + - "YXRvciBtaXJyb3IgaXQgdG8gYG52Y2Etc3lzdGVtYDsgZG8gbm90IHVzZSBhCmJyb2FkZXIgbWFu" + - "dWFsIG5hbWVzcGFjZSBsb29wLiBTZWUKW3B1bGwtc2VjcmV0cy5tZF0ocHVsbC1zZWNyZXRzLm1k" + - "I2NvbXB1dGUtcGxhbmUtc2VjcmV0KS4KCiMjIEZhaWx1cmU6IEdhdGV3YXkgRW5kcG9pbnQgQ2hh" + - "bmdlZAoKIyMjIFN5bXB0b21zCgpSZXF1ZXN0cyB0aHJvdWdoIHRoZSBjb25maWd1cmVkIHJvdXRl" + - "IGRvbWFpbiBmYWlsIGFmdGVyIHRoZSBHYXRld2F5IG9yIGl0cyBsb2FkIGJhbGFuY2VyIGlzIHJl" + - "cGxhY2VkLiBUaGUgR2F0ZXdheSByZXBvcnRzIGEgbmV3IGVuZHBvaW50LgoKIyMjIERpYWdub3Np" + - "cwoKYGBgYmFzaApHQVRFV0FZX0FERFI9JChrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFu" + - "ZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBcCiAgbnZjZi1nYXRld2F5IC1uIGVudm95LWdhdGV3YXkg" + - "XAogIC1vIGpzb25wYXRoPSd7LnN0YXR1cy5hZGRyZXNzZXNbMF0udmFsdWV9JykKdGVzdCAtbiAi" + - "JEdBVEVXQVlfQUREUiIKZGlnICtzaG9ydCAiYXBpLjxkb21haW4+IgpjdXJsIC1IICJIb3N0OiBh" + - "cGkuPGRvbWFpbj4iICJodHRwOi8vJEdBVEVXQVlfQUREUi9oZWFsdGgiCgojIENoZWNrIGRpcmVj" + - "dCBhZGRyZXNzIGZpZWxkcyB1c2VkIGJ5IGEgc3BsaXQgZGVwbG95bWVudApncmVwIG52Y2ZOYXRz" + - "U2VydmljZVVSTCBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9lbnZpcm9ubWVudHMvPGVudj4u" + - "eWFtbApncmVwIC1FICdpY21zU2VydmljZXxyZXZhbFNlcnZpY2V8bmF0cycgXAogIGRlcGxveS9z" + - "dGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmBgYAoKIyMj" + - "IEZpeAoKS2VlcCBgZ2xvYmFsLmRvbWFpbmAsIHJvdXRlIGhvc3RuYW1lcywgYW5kIEhvc3Qgb3Zl" + - "cnJpZGVzIHVuY2hhbmdlZC4gVXBkYXRlIEROUwpvciB0aGUgZGlyZWN0IGNsaWVudCBkZXN0aW5h" + - "dGlvbi4gRm9yIHNwbGl0IGRlcGxveW1lbnRzLCB1cGRhdGUgb25seSBkaXJlY3QKR2F0ZXdheS1h" + - "ZGRyZXNzIGZpZWxkcyBhbmQgcmVmcmVzaCByZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlvbiB0" + - "aHJvdWdoIHRoZQpzYW1lIHNlbGVjdGVkIGhhbmRvZmYuIFNlZQpbRXhhbXBsZSA0XSguLi9leGFt" + - "cGxlcy5tZCNleGFtcGxlLTQtcmVjb3Zlci1mcm9tLWEtZ2F0ZXdheS1lbmRwb2ludC1jaGFuZ2Up" + - "LgoKIyMgVXNlZnVsIE5hbWVzcGFjZS10by1TZXJ2aWNlIE1hcHBpbmcKClF1aWNrIHJlZmVyZW5j" + - "ZSBmb3Igd2hpY2ggc2VydmljZXMgcnVuIGluIHdoaWNoIG5hbWVzcGFjZToKCnwgTmFtZXNwYWNl" + - "IHwgU2VydmljZXMgfAp8LS0tLS0tLS0tLS18LS0tLS0tLS0tLXwKfCBuYXRzLXN5c3RlbSB8IG5h" + - "dHMgfAp8IGNhc3NhbmRyYS1zeXN0ZW0gfCBjYXNzYW5kcmEgfAp8IHZhdWx0LXN5c3RlbSB8IG9w" + - "ZW5iYW8tc2VydmVyIHwKfCBudmNmIHwgYXBpLCBpbnZvY2F0aW9uLXNlcnZpY2UsIGdycGMtcHJv" + - "eHksIG5vdGFyeS1zZXJ2aWNlLCByZXZhbCwgbGxtLXJlcXVlc3Qtcm91dGVyLCBsbG0tYXBpLWdh" + - "dGV3YXkgfAp8IGFwaS1rZXlzIHwgYXBpLWtleXMsIGFkbWluLWlzc3Vlci1wcm94eSB8CnwgZXNz" + - "IHwgZXNzLWFwaSB8Cnwgc2lzIHwgc2lzIHwKfCBlbnZveS1nYXRld2F5LXN5c3RlbSB8IGVudm95" + - "IGdhdGV3YXkgKGluZ3Jlc3MgY29udHJvbGxlcikgfAp8IGVudm95LWdhdGV3YXkgfCBnYXRld2F5" + - "IHJlc291cmNlICsgcm91dGVzIHwKUEsHCLV6cDu1MAAAtTAAAFBLAwQUAAgAAAAAACEAAAAAAAAA" + - "AAAAAAAARAAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMv" + - "aGVsbWZpbGUtc3RydWN0dXJlLm1kVVQFAAEAps4SIyBIZWxtZmlsZSBTdHJ1Y3R1cmUgUmVmZXJl" + - "bmNlCgojIyBEaXJlY3RvcnkgTGF5b3V0CgpgYGBiYXNoCm52Y2Ytc2VsZi1tYW5hZ2VkLXN0YWNr" + - "Lwp8LS0gaGVsbWZpbGUuZC8KfCAgIHwtLSAwMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGwgICMg" + - "TkFUUywgQ2Fzc2FuZHJhLCBPcGVuQmFvCnwgICB8LS0gMDItY29yZS55YW1sLmdvdG1wbCAgICAg" + - "ICAgICAjIE5WQ0Ygc2VydmljZXMgKyBpbmdyZXNzCnwgICBgLS0gMDMtb2JzZXJ2YWJpbGl0eS55" + - "YW1sLmdvdG1wbCAjIE9ic2VydmFiaWxpdHkgc3RhY2sgKG9wdGlvbmFsKQp8LS0gZW52aXJvbm1l" + - "bnRzLwp8ICAgfC0tIGJhc2UueWFtbCAgICAgICAgICAgICAgICAgICAgIyBEZWZhdWx0IHZhbHVl" + - "cyAoYWxsIGVudmlyb25tZW50cykKfCAgIGAtLSA8ZW52LW5hbWU+LnlhbWwgICAgICAgICAgICAg" + - "ICMgUGVyLWVudmlyb25tZW50IG92ZXJyaWRlcwp8LS0gc2VjcmV0cy8KfCAgIGAtLSA8ZW52LW5h" + - "bWU+LXNlY3JldHMueWFtbCAgICAgICMgU2Vuc2l0aXZlIHZhbHVlcyAocmVnaXN0cnkgY3JlZHMs" + - "IHBhc3N3b3JkcykKYC0tIGdsb2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAgICMgR28gdGVt" + - "cGxhdGUgdGhhdCBjb25zdHJ1Y3RzIHBlci1jaGFydCB2YWx1ZXMKCm52Y2YtY29tcHV0ZS1wbGFu" + - "ZS1zdGFjay8KfC0tIGhlbG1maWxlLmQvCnwgICB8LS0gMDEtZGVwZW5kZW5jaWVzLnlhbWwuZ290" + - "bXBsICAjIENvbXB1dGUgcGxhbmUgZGVwZW5kZW5jeSBjb21wb25lbnRzCnwgICBgLS0gMDItbnZj" + - "YS55YW1sLmdvdG1wbCAgICAgICAgICAjIG52Y2Etb3BlcmF0b3IgY2hhcnQgYW5kIG52Y2EgY29u" + - "ZmlndXJhdGlvbgp8LS0gZW52aXJvbm1lbnRzLwp8ICAgfC0tIGJhc2UueWFtbCAgICAgICAgICAg" + - "ICAgICAgICAgIyBEZWZhdWx0IHZhbHVlcyAoYWxsIGVudmlyb25tZW50cykKfCAgIGAtLSA8ZW52" + - "LW5hbWU+LnlhbWwgICAgICAgICAgICAgICMgUGVyLWVudmlyb25tZW50IG92ZXJyaWRlcwpgLS0g" + - "Z2xvYmFsLnlhbWwuZ290bXBsICAgICAgICAgICAgICAgIyBHbyB0ZW1wbGF0ZSB0aGF0IGNvbnN0" + - "cnVjdHMgcGVyLWNoYXJ0IHZhbHVlcwpgYGAKClRoZXNlIHN0YWNrcyBoYXZlIHNlcGFyYXRlIGVu" + - "dmlyb25tZW50cyBhbmQgY2x1c3RlciBjb250ZXh0cy4gVGhlIEhlbG1maWxlCnZhbHVlcyBmbG93" + - "IGF1dGhvcnMgYm90aCBlbnZpcm9ubWVudCBmaWxlcy4gVGhlIENMSSBwcm9maWxlIGZsb3cgaW5z" + - "dGVhZCB1c2VzCnRoZSBDTEktZ2VuZXJhdGVkIGNvbnRyb2wtcGxhbmUgcHJvZmlsZSBhcyBpdHMg" + - "ZW5kcG9pbnQgc291cmNlLiBEbyBub3QgbWl4IHRoZQpoYW5kb2Zmcy4gU2VlIFtTcGxpdCBDb21w" + - "dXRlLVBsYW5lIEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLgoK" + - "IyMgR290bXBsIEZpbGVzIGFuZCBUaGVpciBSZWxlYXNlcwoKIyMjIDAxLWRlcGVuZGVuY2llcy55" + - "YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBOb3RlcyB8CnwtLS0t" + - "LS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IG5hdHMgfCBoZWxtLW52Y2YtbmF0" + - "cyB8IG5hdHMtc3lzdGVtIHwgTWVzc2FnaW5nIHwKfCBvcGVuYmFvLXNlcnZlciB8IGhlbG0tbnZj" + - "Zi1vcGVuYmFvLXNlcnZlciB8IHZhdWx0LXN5c3RlbSB8IFNlY3JldHMgbWFuYWdlbWVudCwgZGVw" + - "ZW5kcyBvbiBuYXRzIHwKfCBjYXNzYW5kcmEgfCBoZWxtLW52Y2YtY2Fzc2FuZHJhIHwgY2Fzc2Fu" + - "ZHJhLXN5c3RlbSB8IERhdGFiYXNlIHwKClVzZXMgYDw8OiAqZGVwZW5kZW5jeWAgdGVtcGxhdGUg" + - "aW5oZXJpdGFuY2Ugd2l0aCBgcmVsZWFzZS1ncm91cDogZGVwZW5kZW5jaWVzYCBsYWJlbC4KCiMj" + - "IyAwMi1jb3JlLnlhbWwuZ290bXBsCgp8IFJlbGVhc2UgfCBDaGFydCB8IE5hbWVzcGFjZSB8IExh" + - "YmVsIHwKfC0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS18CnwgYXBpLWtleXMg" + - "fCBoZWxtLW52Y2YtYXBpLWtleXMgfCBhcGkta2V5cyB8IHNlcnZpY2VzIHwKfCBzaXMgfCBoZWxt" + - "LW52Y2Ytc2lzIHwgc2lzIHwgc2VydmljZXMgfAp8IGFwaSB8IGhlbG0tbnZjZi1hcGkgfCBudmNm" + - "IHwgc2VydmljZXMgfAp8IGludm9jYXRpb24tc2VydmljZSB8IGhlbG0tbnZjZi1pbnZvY2F0aW9u" + - "LXNlcnZpY2UgfCBudmNmIHwgc2VydmljZXMgfAp8IGdycGMtcHJveHkgfCBoZWxtLW52Y2YtZ3Jw" + - "Yy1wcm94eSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgZXNzLWFwaSB8IGhlbG0tbnZjZi1lc3MtYXBp" + - "IHwgZXNzIHwgc2VydmljZXMgfAp8IG5vdGFyeS1zZXJ2aWNlIHwgaGVsbS1udmNmLW5vdGFyeS1z" + - "ZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCByZXZhbCB8IGhlbG0tcmV2YWwgfCBudmNmIHwg" + - "c2VydmljZXMgfAp8IGxsbS1yZXF1ZXN0LXJvdXRlciB8IG52Y2YvaGVsbS1udmNmLWxsbS1yZXF1" + - "ZXN0LXJvdXRlciB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgbGxtLWFwaS1nYXRld2F5IHwgbnZjZi9o" + - "ZWxtLW52Y2YtbGxtLWFwaS1nYXRld2F5IHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBhZG1pbi1pc3N1" + - "ZXItcHJveHkgfCBoZWxtLWFkbWluLXRva2VuLWlzc3Vlci1wcm94eSB8IGFwaS1rZXlzIHwgKG5v" + - "IHJlbGVhc2UtZ3JvdXAgbGFiZWwpIHwKfCBpbmdyZXNzIHwgbnZjZi1nYXRld2F5LXJvdXRlcyB8" + - "IGVudm95LWdhdGV3YXktc3lzdGVtIHwgaW5ncmVzcyB8CgpNb3N0IHNlcnZpY2VzIHVzZSBgaW5o" + - "ZXJpdDogW3t0ZW1wbGF0ZTogc2VydmljZX1dYC4gTExNIHJlbGVhc2VzIHVzZSBPQ0kgY2hhcnRz" + - "IGZyb20gdGhlIGBudmNmYCByZXBvc2l0b3J5IHdpdGggc3RhbmRhbG9uZSBgdmFsdWVzOiBbLi4v" + - "Z2xvYmFsLnlhbWwuZ290bXBsXWAgYmxvY2tzOyB0aGV5IGFyZSBnYXRlZCBvbiBgYWRkb25zLmxs" + - "bS5lbmFibGVkYC4gYGFkbWluLWlzc3Vlci1wcm94eWAgYW5kIGBpbmdyZXNzYCBoYXZlIHN0YW5k" + - "YWxvbmUgYHZhbHVlczpgIGJsb2Nrcy4KCiMjIyAwMy1vYnNlcnZhYmlsaXR5LnlhbWwuZ290bXBs" + - "Cgp8IFJlbGVhc2UgfCBDaGFydCB8IE5hbWVzcGFjZSB8IExhYmVsIHwKfC0tLS0tLS0tLXwtLS0t" + - "LS0tfC0tLS0tLS0tLS0tfC0tLS0tLS18CnwgKG9ic2VydmFiaWxpdHkgcmVsZWFzZXMpIHwgKHZh" + - "cmlvdXMpIHwgb2JzZXJ2YWJpbGl0eSB8IG9ic2VydmFiaWxpdHkgfAoKR2F0ZWQgb24gb2JzZXJ2" + - "YWJpbGl0eS1zcGVjaWZpYyBmbGFncyBpbiB0aGUgZW52aXJvbm1lbnQgZmlsZS4gU2tpcHBlZCBp" + - "ZiBkaXNhYmxlZC4KCiMjIFRlbXBsYXRlIEluaGVyaXRhbmNlCgojIyMgYDw8OiAqZGVwZW5kZW5j" + - "eWAgKFlBTUwgbWVyZ2UpCgpVc2VkIGluIGAwMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGxgLiBN" + - "ZXJnZXMgdGhlIHRlbXBsYXRlJ3MgcHJvcGVydGllcyBpbnRvIHRoZSByZWxlYXNlLgoKKipHb3Rj" + - "aGEqKjogWUFNTCBtZXJnZSByZXBsYWNlcyBsaXN0cy4gSWYgeW91IGFkZCBhIGB2YWx1ZXM6YCBr" + - "ZXkgdG8gdGhlIHJlbGVhc2UsIGl0ICoqcmVwbGFjZXMqKiB0aGUgdGVtcGxhdGUncyBgdmFsdWVz" + - "OmAgbGlzdCBlbnRpcmVseS4gWW91IG11c3QgcmUtaW5jbHVkZSBhbGwgdGVtcGxhdGUgdmFsdWVz" + - "OgoKSW4gdGhlIHRlbXBsYXRlIGJlbG93LCBgPHByaXZhdGUtdmFsdWVzPmAgcmVmZXJzIHRvIHRo" + - "ZSBgc2VjcmV0cy9gIGRpcmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUgc3RhY2sgcm9vdC4KCmBgYHlh" + - "bWwKIyBUZW1wbGF0ZSBkZWZpbmVzOgp0ZW1wbGF0ZXM6CiAgZGVwZW5kZW5jeTogJmRlcGVuZGVu" + - "Y3kKICAgIGNoYXJ0OiBudmNmL2hlbG0tbnZjZi17eyAuUmVsZWFzZS5OYW1lIH19CiAgICB2YWx1" + - "ZXM6CiAgICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAgIC0gLi4vPHByaXZhdGUtdmFs" + - "dWVzPi97eyByZXF1aXJlZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwKCiMgV2hl" + - "biBvdmVycmlkaW5nLCBNVVNUIHJlLWluY2x1ZGUgYm90aDoKLSBuYW1lOiBjYXNzYW5kcmEKICA8" + - "PDogKmRlcGVuZGVuY3kKICB2YWx1ZXM6CiAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbCAgICAg" + - "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE11c3QgcmUtaW5jbHVk" + - "ZQogICAgLSAuLi88cHJpdmF0ZS12YWx1ZXM+L3t7IHJlcXVpcmVkRW52ICJIRUxNRklMRV9FTlYi" + - "IH19LXNlY3JldHMueWFtbCAgICMgTXVzdCByZS1pbmNsdWRlCiAgICAtIGNhc3NhbmRyYTogICAg" + - "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBZ" + - "b3VyIG92ZXJyaWRlCiAgICAgICAgcmVzb3VyY2VzOgogICAgICAgICAgbGltaXRzOgogICAgICAg" + - "ICAgICBtZW1vcnk6IDgxOTJNaQpgYGAKCiMjIyBgaW5oZXJpdGAgKEhlbG1maWxlIG5hdGl2ZSkK" + - "ClVzZWQgaW4gYDAyLWNvcmUueWFtbC5nb3RtcGxgLiBIZWxtZmlsZSdzIG5hdGl2ZSBpbmhlcml0" + - "YW5jZSBtZWNoYW5pc20uCgpgYGB5YW1sCi0gbmFtZTogYXBpCiAgdmVyc2lvbjogMS42LjAKICBu" + - "YW1lc3BhY2U6IG52Y2YKICBpbmhlcml0OgogICAgLSB0ZW1wbGF0ZTogc2VydmljZQpgYGAKCldo" + - "ZW4gYWRkaW5nIGB2YWx1ZXM6YCB0byBhbiBpbmhlcml0ZWQgcmVsZWFzZSwgeW91IGFsc28gbmVl" + - "ZCB0byByZS1pbmNsdWRlIHRoZSB0ZW1wbGF0ZSdzIHZhbHVlcyBmaWxlcyBzaW5jZSBgdmFsdWVz" + - "YCBpcyBhIGxpc3QgdGhhdCBnZXRzIHJlcGxhY2VkLgoKIyMgVmFsdWVzIFByZWNlZGVuY2UKCkZy" + - "b20gbG93ZXN0IHRvIGhpZ2hlc3QgcHJpb3JpdHk6CgoxLiBgZW52aXJvbm1lbnRzL2Jhc2UueWFt" + - "bGAgLS0gZGVmYXVsdHMgc2hhcmVkIGFjcm9zcyBhbGwgZW52aXJvbm1lbnRzCjIuIGBlbnZpcm9u" + - "bWVudHMvPGVudj4ueWFtbGAgLS0gcGVyLWVudmlyb25tZW50IG92ZXJyaWRlcwozLiBgZ2xvYmFs" + - "LnlhbWwuZ290bXBsYCAtLSBHbyB0ZW1wbGF0ZSBwcm9jZXNzaW5nIChjb25zdHJ1Y3RzIGNoYXJ0" + - "LXNwZWNpZmljIHN0cnVjdHVyZSkKNC4gYDxwcml2YXRlLXZhbHVlcz4vPGVudj4tc2VjcmV0cy55" + - "YW1sYCAtLSBzZW5zaXRpdmUgdmFsdWVzCjUuIElubGluZSBgdmFsdWVzOmAgYmxvY2tzIG9uIHJl" + - "bGVhc2VzIC0tIGhpZ2hlc3QgcHJlY2VkZW5jZQoKIyMgV2hhdCBnbG9iYWwueWFtbC5nb3RtcGwg" + - "UGFzc2VzIFRocm91Z2gKCmBnbG9iYWwueWFtbC5nb3RtcGxgIHJlYWRzIGZyb20gYC5WYWx1ZXNg" + - "ICh0aGUgbWVyZ2VkIGVudmlyb25tZW50ICsgZW52LXNwZWNpZmljIFlBTUwpIGFuZCBjb25zdHJ1" + - "Y3RzIGNoYXJ0LXNwZWNpZmljIHZhbHVlcy4gSXQgb25seSBwYXNzZXMgdGhyb3VnaCBrZXlzIGl0" + - "IGV4cGxpY2l0bHkgcmVmZXJlbmNlczoKCiMjIyBDYXNzYW5kcmEKCi0gYGNhc3NhbmRyYS5yZXBs" + - "aWNhQ291bnRgCi0gYGNhc3NhbmRyYS5pbWFnZS4qYCAocmVnaXN0cnksIHJlcG9zaXRvcnkpCi0g" + - "YGNhc3NhbmRyYS5taWdyYXRpb25zLmltYWdlLipgCi0gYGNhc3NhbmRyYS5wZXJzaXN0ZW5jZS5z" + - "aXplYAotIGBjYXNzYW5kcmEubm9kZVNlbGVjdG9yYCAoaWYgYGdsb2JhbC5ub2RlU2VsZWN0b3Jz" + - "LmVuYWJsZWRgKQotIGBjYXNzYW5kcmEuZ2xvYmFsLmRlZmF1bHRTdG9yYWdlQ2xhc3NgCgojIyMg" + - "TkFUUwoKLSBgbmF0cy5jb250YWluZXIuaW1hZ2UuKmAKLSBgbmF0cy5yZWxvYWRlci5pbWFnZS4q" + - "YAotIGBuYXRzLm5hdHNCb3guY29udGFpbmVyLmltYWdlLipgCi0gYG5hdHMuY29uZmlnLmpldHN0" + - "cmVhbS5maWxlU3RvcmUucHZjLnN0b3JhZ2VDbGFzc05hbWVgCi0gYG5hdHMucG9kVGVtcGxhdGUu" + - "bWVyZ2Uuc3BlYy5ub2RlU2VsZWN0b3JgIChpZiBlbmFibGVkKQoKIyMjIE9wZW5CYW8KCi0gYG9w" + - "ZW5iYW8ubWlncmF0aW9ucy5pbWFnZS4qYCBhbmQgYG9wZW5iYW8ubWlncmF0aW9ucy5lbnZgCi0g" + - "YG9wZW5iYW8uaW5qZWN0b3IuaW1hZ2UuKmAKLSBgb3BlbmJhby5zZXJ2ZXIuaW1hZ2UuKmAKLSBg" + - "b3BlbmJhby5zZXJ2ZXIuZGF0YVN0b3JhZ2UuKmAKLSBOb2RlIHNlbGVjdG9ycyAoaWYgZW5hYmxl" + - "ZCkKCiMjIyBTZXJ2aWNlcyAoQVBJLCBTSVMsIGV0Yy4pCgotIGA8c2VydmljZT4uaW1hZ2UuKmAg" + - "KHJlZ2lzdHJ5LCByZXBvc2l0b3J5KQotIGA8c2VydmljZT4ubm9kZVNlbGVjdG9yYCAoaWYgZW5h" + - "YmxlZCkKLSBgPHNlcnZpY2U+LmVudi4qYCAob2JzZXJ2YWJpbGl0eSBzZXR0aW5ncykKCiMjIyBM" + - "TE0gRnVuY3Rpb24gRW5hYmxlbWVudAoKRW5hYmxlIHRoZSBMTE0gYWRkb24gYmVmb3JlIGNyZWF0" + - "aW5nIG9yIGludm9raW5nIGZ1bmN0aW9ucyB3aXRoCmBmdW5jdGlvblR5cGU6ICJMTE0iYC4gVGhl" + - "IGFkZG9uIGRlcGxveXMgYGxsbS1yZXF1ZXN0LXJvdXRlcmAgYW5kCmBsbG0tYXBpLWdhdGV3YXlg" + - "LCBhZGRzIHRoZSBgbGxtLmludm9jYXRpb24uPGRvbWFpbj5gIHJvdXRlIHdoZW4gR2F0ZXdheSBB" + - "UEkKaW5ncmVzcyBpcyBlbmFibGVkLCBhbmQgY29uZmlndXJlcyB3b3JrZXJzIHRvIHVzZSB0aGUg" + - "TExNIHNpZGVjYXIuIFRoZSBIZWxtZmlsZQpjb25kaXRpb24gaXMgYGFkZG9ucy5sbG0uZW5hYmxl" + - "ZGAuIERvIG5vdCB1c2UgdGhlIG9ic29sZXRlIGBsbG0uZW5hYmxlZGAgcGF0aC4KCkZvciBhIHNp" + - "bmdsZS1ub2RlIGlzb2xhdGVkIHRlc3QgY2x1c3RlciwgYWRkIHRoaXMgY29uZmlndXJhdGlvbiB0" + - "bwpgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgIGJlZm9yZSBhcHBseWluZyB0aGUgc3RhY2s6Cgpg" + - "YGB5YW1sCmFkZG9uczoKICBsbG06CiAgICBlbmFibGVkOiB0cnVlCiAgICBnYXRld2F5OgogICAg" + - "ICByZXBsaWNhQ291bnQ6IDEKICAgICAgbWV0cmljczoKICAgICAgICBzZXJ2aWNlTW9uaXRvcjoK" + - "ICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCiAgICByZXF1ZXN0Um91dGVyOgogICAgICByZXBsaWNh" + - "Q291bnQ6IDEKICAgICAgbWV0cmljczoKICAgICAgICBzZXJ2aWNlTW9uaXRvcjoKICAgICAgICAg" + - "IGVuYWJsZWQ6IGZhbHNlCgphZ2VudENvbmZpZzoKICBtZXJnZUNvbmZpZzogfAogICAgY2x1c3Rl" + - "cjoKICAgICAgdmFsaWRhdGlvblBvbGljeToKICAgICAgICBuYW1lOiBVbnJlc3RyaWN0ZWQKICAg" + - "IHdvcmtsb2FkOgogICAgICBzdGFyZ2F0ZVFVSUNJbnNlY3VyZTogdHJ1ZQpgYGAKClVzZSBgcmVw" + - "bGljYUNvdW50OiAxYCBvbmx5IGZvciBsb2NhbCBvciBzaW5nbGUtbm9kZSB0ZXN0IGNsdXN0ZXJz" + - "LiBUaGUgYnVuZGxlZApOVkNGIEFQSSBjdXJyZW50bHkgc2VydmVzIHBsYWludGV4dCBnUlBDIG9u" + - "IHBvcnQgOTA5MCwgc28gdGhlIHNlbGYtbWFuYWdlZCBzdGFjawpkZWZhdWx0cyB0aGUgTExNIEFQ" + - "SSBHYXRld2F5IGF1dGhlbnRpY2F0aW9uIGhvcCB0byBwbGFpbnRleHQuIFNldApgYWRkb25zLmxs" + - "bS5nYXRld2F5LmF1dGguZ3JwY0luc2VjdXJlOiBmYWxzZWAgb25seSB3aXRoIGEgVExTLWNhcGFi" + - "bGUgTlZDRiBBUEkuCgpXb3JrZXItdG8tcm91dGVyIHRyYW5zcG9ydCBpcyBzZXBhcmF0ZS4gRm9y" + - "IHNoYXJlZCBvciBwcm9kdWN0aW9uIGNsdXN0ZXJzLCB1c2UKdGhlIHJlcXVpcmVkIHJlcGxpY2Eg" + - "Y291bnQgYW5kIHRoZSBtYW5hZ2VkIFRMUyBjb25maWd1cmF0aW9uLiBUaGUKYHdvcmtsb2FkLnN0" + - "YXJnYXRlUVVJQ0luc2VjdXJlYCBzZXR0aW5nIGVuYWJsZXMgcGxhaW50ZXh0IHdvcmtlciB0cmFu" + - "c3BvcnQgYW5kCm11c3Qgbm90IGJlIHVzZWQgaW4gcHJvZHVjdGlvbi4KClRoZSByZXF1ZXN0IHJv" + - "dXRlciB1c2VzIGBwb3dlci1vZi10d29gIHdoZW4gbm8gbG9hZC1iYWxhbmNlciBjb25maWd1cmF0" + - "aW9uIGlzCnNldC4gQ29uZmlndXJlIG90aGVyIHJvdXRpbmcgbWV0aG9kcyB3aXRoIHRoZQpbTExN" + - "IFJlcXVlc3QgUm91dGVyIExvYWQgQmFsYW5jaW5nXShodHRwczovL2dpdGh1Yi5jb20vTlZJRElB" + - "L252Y2YvYmxvYi9tYWluL2RvY3Mvc2VsZi1tYW5hZ2VkL2xsbS1yZXF1ZXN0LXJvdXRlci1sb2Fk" + - "LWJhbGFuY2luZy5tZCkKZ3VpZGUuCgpJZiB0aGUgc2lkZWNhciBpbWFnZSBpcyBtaXJyb3JlZCBv" + - "dXRzaWRlIHRoZSBzdGFjaydzIGRlZmF1bHQgaW1hZ2UgcmVnaXN0cnkgYW5kCnJlcG9zaXRvcnks" + - "IHNldCB0aGUgZ2VuZXJhdGVkIHdvcmtlciBzaWRlY2FyIGltYWdlIGV4cGxpY2l0bHk6CgpgYGB5" + - "YW1sCmFwaToKICByZW1vdGVDb25maWc6CiAgICBjb25maWdEYXRhOgogICAgICBudmNmOgogICAg" + - "ICAgIHNpZGVjYXJzOgogICAgICAgICAgbGxtLXJvdXRlci1jbGllbnQtaW1hZ2U6IDxyZWdpc3Ry" + - "eT4vPHJlcG9zaXRvcnk+L3B5bG9uOjAuMTQuMQpgYGAKClRoZSBsZWdhY3kgYGFwaS5lbnYuTlZD" + - "Rl9TSURFQ0FSU19MTE1fUk9VVEVSX0NMSUVOVF9JTUFHRWAgcGF0aCBpcyBkZXByZWNhdGVkLgpU" + - "aGUgc3RhY2sgdHJhbnNsYXRlcyBpdCBmb3Igb25lIGNvbXBhdGliaWxpdHkgd2luZG93LCBidXQg" + - "bmV3IGNvbmZpZ3VyYXRpb25zCm11c3QgdXNlIHRoZSByZW1vdGUtY29uZmlnIHBhdGguIENvbmZs" + - "aWN0aW5nIHZhbHVlcyBmYWlsIHJlbmRlcmluZy4KClJlbmRlciBhbmQgYXBwbHkgdGhlIHVwZGF0" + - "ZWQgY29udHJvbC1wbGFuZSBlbnZpcm9ubWVudCwgdGhlbiByZWZyZXNoIGV2ZXJ5CnJlZ2lzdGVy" + - "ZWQgY29tcHV0ZSBwbGFuZSB1c2luZyB0aGUgc2FtZSBoYW5kb2ZmIHVzZWQgZm9yIGl0cyBpbnN0" + - "YWxsYXRpb24gc28KTlZDQSByZWNlaXZlcyBgYWdlbnRDb25maWcubWVyZ2VDb25maWdgOgoKYGBg" + - "YmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgdGVtcGxhdGUKSEVMTUZJTEVfRU5WPTxl" + - "bnY+IGhlbG1maWxlIHN5bmMKYGBgCgpVc2UgdGhlIGNvbXBsZXRlIGNvbXB1dGUtcGxhbmUgaW5z" + - "dGFsbCBjb21tYW5kIGZyb20KW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShjb21w" + - "dXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkuIEEKQ0xJLXByb2ZpbGUgaW5zdGFsbGF0aW9uIG11" + - "c3QgcmVtYWluIHByb2ZpbGUtZHJpdmVuOyBhIEhlbG1maWxlIGluc3RhbGxhdGlvbgptdXN0IHJl" + - "bWFpbiB2YWx1ZXMtZHJpdmVuLgoKRXhpc3RpbmcgTExNIGZ1bmN0aW9uIHZlcnNpb25zIHJldGFp" + - "biB0aGUgd29ya2VyLXNpZGVjYXIgaW1hZ2UgbWV0YWRhdGEKY2FwdHVyZWQgd2hlbiB0aGUgdmVy" + - "c2lvbiBpcyBjcmVhdGVkLiBSZXBsYWNpbmcgcG9kcyBvciByZWRlcGxveWluZyB0aGUgc2FtZQp2" + - "ZXJzaW9uIGRvZXMgbm90IGFwcGx5IGEgbmV3IFB5bG9uIGltYWdlLiBBZnRlciB0aGUgY29udHJv" + - "bC1wbGFuZSB1cGRhdGUsCmNyZWF0ZSBhbmQgZGVwbG95IGEgbmV3IGZ1bmN0aW9uIHZlcnNpb24u" + - "IFZlcmlmeSB0aGUgY29udHJvbCBwbGFuZSwgcm91dGUsIGFuZAp3b3JrZXIgc2lkZWNhcjoKCmBg" + - "YGJhc2gKa3ViZWN0bCBnZXQgZGVwbG95IC1uIG52Y2YgbGxtLWFwaS1nYXRld2F5Cmt1YmVjdGwg" + - "Z2V0IHN0YXRlZnVsc2V0IC1uIG52Y2YgbGxtLXJlcXVlc3Qtcm91dGVyCmt1YmVjdGwgZ2V0IHBv" + - "ZHMgLW4gbnZjZiB8IGdyZXAgLUUgJ2xsbS1hcGktZ2F0ZXdheXxsbG0tcmVxdWVzdC1yb3V0ZXIn" + - "Cmt1YmVjdGwgZ2V0IGh0dHByb3V0ZSAtQSB8IGdyZXAgbGxtCmt1YmVjdGwgLW4gbnZjZi1iYWNr" + - "ZW5kIGdldCBwb2QgPGZ1bmN0aW9uLXBvZD4gXAogIC1vIGpzb25wYXRoPSd7cmFuZ2UgLnNwZWMu" + - "Y29udGFpbmVyc1s/KEAubmFtZT09ImxsbS13b3JrZXIiKV0uYXJnc1sqXX17Ln17IlxcbiJ9e2Vu" + - "ZH0nCmBgYAoKRm9yIGxvY2FsIHBsYWludGV4dCBjbHVzdGVycywgdGhlIGBsbG0td29ya2VyYCBh" + - "cmdzIG11c3QgaW5jbHVkZQpgLS1xdWljLWluc2VjdXJlYC4KCkZvciBsb2FkLWJhbGFuY2VyIHNj" + - "aGVtYSBhbmQgYWxnb3JpdGhtIGJlaGF2aW9yLCBzZWUgdGhlCltTdGFyZ2F0ZSBjb25maWd1cmF0" + - "aW9uIGd1aWRlXShodHRwczovL2dpdGh1Yi5jb20vTlZJRElBL252Y2YvYmxvYi9tYWluL3NyYy9s" + - "aWJyYXJpZXMvcnVzdC9zdGFyZ2F0ZS9kb2NzL2xvYWQtYmFsYW5jZXItY29uZmlndXJhdGlvbi5t" + - "ZCkuCgojIyBIZWxtZmlsZSBTZWxlY3RvcnMKClRhcmdldCBzcGVjaWZpYyByZWxlYXNlcyBvciBn" + - "cm91cHM6CgpgYGBiYXNoCiMgQnkgcmVsZWFzZSBncm91cApIRUxNRklMRV9FTlY9PGVudj4gaGVs" + - "bWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPWRlcGVuZGVuY2llcyBzeW5jCkhFTE1GSUxF" + - "X0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIHJlbGVhc2UtZ3JvdXA9c2VydmljZXMgc3lu" + - "YwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPWlu" + - "Z3Jlc3Mgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNl" + - "LWdyb3VwPW9ic2VydmFiaWxpdHkgc3luYwoKIyBCeSByZWxlYXNlIG5hbWUKSEVMTUZJTEVfRU5W" + - "PTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgc3luYwpIRUxNRklMRV9F" + - "TlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWFkbWluLWlzc3Vlci1wcm94eSBzeW5j" + - "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9bGxtLXJlcXVlc3Qt" + - "cm91dGVyIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1s" + - "bG0tYXBpLWdhdGV3YXkgc3luYwoKIyBUZW1wbGF0ZSBvbmx5IChkcnkgcnVuKQpIRUxNRklMRV9F" + - "TlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZQoKIyBE" + - "ZXN0cm95IGEgc2luZ2xlIHJlbGVhc2UKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2Vs" + - "ZWN0b3IgbmFtZT1jYXNzYW5kcmEgZGVzdHJveQpgYGAKCk5vdGU6IGBhZG1pbi1pc3N1ZXItcHJv" + - "eHlgIGhhcyBubyBgcmVsZWFzZS1ncm91cGAgbGFiZWwuIFVzZSBgLS1zZWxlY3RvciBuYW1lPWFk" + - "bWluLWlzc3Vlci1wcm94eWAuClBLBwgTEeyNCioAAAoqAABQSwMEFAAIAAAAAAAhAAAAAAAAAAAA" + - "AAAAAD8ACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVuY2VzL252" + - "Y2YtdWktYWRkb24ubWRVVAUAAQCmzhIjIE5WQ0YgVUkgQWRkb24KCk5WQ0YgVUkgaXMgYW4gb3B0" + - "aW9uYWwsIGN1c3RvbWVyLWZhY2luZyBOVkNGIGFkbWluLXBhbmVsIFVJLiBJdCBpcyBkaXNhYmxl" + - "ZCBieQpkZWZhdWx0IGFuZCBhdmFpbGFibGUgb25seSBpbiBzdGFjayBwYWNrYWdlcyB0aGF0IGlu" + - "Y2x1ZGUgdGhlIE5WQ0YgVUkgYWRkb24uCgojIyBXaGVuIHRvIGVuYWJsZQoKRW5hYmxlIE5WQ0Yg" + - "VUkgb25seSB3aGVuIHlvdSBuZWVkIHRoZSBhZG1pbi1wYW5lbCBVSSBhbmQgeW91ciBleHRyYWN0" + - "ZWQgc3RhY2sKcGFja2FnZSBpbmNsdWRlcyB0aGUgYWRkb24uIElmIHRoZSBwYWNrYWdlIGRvZXMg" + - "bm90IGNvbnRhaW4gYSBgbnZjZi11aWAgcmVsZWFzZQphbmQgYG52Y2ZVaWAgcm91dGUgdmFsdWVz" + - "LCBza2lwIHRoZSBhZGRvbiB1bnRpbCB5b3UgdXNlIGEgcGFja2FnZSB0aGF0IGluY2x1ZGVzCnRo" + - "ZW0uCgojIyBFbmFibGUgdGhlIGFkZG9uCgpFbmFibGUgaXQgaW4gYGVudmlyb25tZW50cy88ZW52" + - "LW5hbWU+LnlhbWxgOgoKYGBgeWFtbAphZGRvbnM6CiAgbnZjZlVpOgogICAgZW5hYmxlZDogdHJ1" + - "ZQpgYGAKCiMjIENyZWF0ZSBuYW1lc3BhY2UgYW5kIGltYWdlIHB1bGwgc2VjcmV0CgpDcmVhdGUg" + - "dGhlIG5hbWVzcGFjZSwgYW5kIGFuIGltYWdlIHB1bGwgc2VjcmV0IG9ubHkgaWYgcHVsbGluZyBm" + - "cm9tIGEgcHJpdmF0ZQpyZWdpc3RyeToKCmBgYGJhc2gKa3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNl" + - "IG52Y2YtdWkgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCgoj" + - "IE9ubHkgaWYgcHVsbGluZyBmcm9tIGEgcHJpdmF0ZSByZWdpc3RyeSAoZS5nLiwgTkdDIG52Y3Iu" + - "aW8pCmV4cG9ydCBOR0NfQVBJX0tFWT0iPHlvdXIta2V5PiIKa3ViZWN0bCBjcmVhdGUgc2VjcmV0" + - "IGRvY2tlci1yZWdpc3RyeSBudmNyLWNyZWRzIFwKICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBc" + - "CiAgLS1kb2NrZXItdXNlcm5hbWU9JyRvYXV0aHRva2VuJyBcCiAgLS1kb2NrZXItcGFzc3dvcmQ9" + - "IiROR0NfQVBJX0tFWSIgXAogIC0tbmFtZXNwYWNlPW52Y2YtdWkgXAogIC0tZHJ5LXJ1bj1jbGll" + - "bnQgLW8geWFtbCB8IGt1YmVjdGwgYXBwbHkgLWYgLQpgYGAKClRoZSBkZWZhdWx0IHJvdXRlIGhv" + - "c3QgaXMgYG52Y2YtdWkuPGRvbWFpbj5gIGFuZCB0aGUgYmFja2VuZCBpcwpgbnZjZi11aS5udmNm" + - "LXVpOjgzMDBgLgoKIyMgQXBwbHkgdGhlIHNlcnZpY2UgYW5kIHJvdXRlCgpBZnRlciBjb25maXJt" + - "aW5nIHRoZSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBgbnZjZi11aWAgcmVsZWFzZSwgcHJldmlldyBh" + - "bmQgYXBwbHkKdGhlIHNlcnZpY2UgYW5kIHJvdXRlOgoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVu" + - "di1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9bnZjZi11aSB0ZW1wbGF0ZQpIRUxNRklM" + - "RV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9bnZjZi11aSBzeW5jCkhF" + - "TE1GSUxFX0VOVj08ZW52LW5hbWU+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1p" + - "bmdyZXNzIHN5bmMKYGBgCgojIyBWZXJpZnkKClZlcmlmeSB0aGUgcm91dGUgb25seSB3aGVuIHRo" + - "ZSBhZGRvbiBpcyBwcmVzZW50IGFuZCBlbmFibGVkOgoKYGBgYmFzaAprdWJlY3RsIGdldCBkZXBs" + - "b3ksc3ZjIC1uIG52Y2YtdWkKa3ViZWN0bCBnZXQgaHR0cHJvdXRlIC1BIHwgZ3JlcCAtaSBudmNm" + - "LXVpCmN1cmwgLWkgLUggIkhvc3Q6IG52Y2YtdWkuPGRvbWFpbj4iICJodHRwOi8vPGdhdGV3YXkt" + - "YWRkcmVzcz4vc3RhdHVzIgpgYGAKCiMjIFNlY3VyaXR5CgpUaGUgTlZDRiBVSSBhZG1pbiBwYW5l" + - "bCBpcyBjdXJyZW50bHkgdW5hdXRoZW50aWNhdGVkLiBEbyBub3QgZXhwb3NlIGl0IHRvIHRoZQpw" + - "dWJsaWMgaW50ZXJuZXQuIFJlc3RyaWN0IGFjY2VzcyB0byBhIHRydXN0ZWQgbmV0d29yaywgVlBO" + - "LCBvciBhbiBhdXRoZW50aWNhdGluZwpwcm94eSBpbiBmcm9udCBvZiB0aGUgYG52Y2YtdWlgIHJv" + - "dXRlLgpQSwcIOPknr7kHAAC5BwAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAA+AAkAZGF0YS9u" + - "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWRV" + - "VAUAAQCmzhIjIEltYWdlIFB1bGwgU2VjcmV0cyBSZWZlcmVuY2UKCiMjIE92ZXJ2aWV3CgpXaGVu" + - "IHB1bGxpbmcgTlZDRiBpbWFnZXMgZnJvbSBhIHByaXZhdGUgcmVnaXN0cnkgKGZvciBleGFtcGxl" + - "LCBOR0MKYG52Y3IuaW9gKSwgS3ViZXJuZXRlcyBuZWVkcyBgaW1hZ2VQdWxsU2VjcmV0c2Agb24g" + - "ZXZlcnkgcG9kLiBDb250cm9sLXBsYW5lIGFuZApjb21wdXRlLXBsYW5lIGNyZWRlbnRpYWxzIGFy" + - "ZSBjb25maWd1cmVkIGluIHRoZWlyIG93biBjbHVzdGVyIGNvbnRleHRzLiBEbyBub3QKdXNlIG9u" + - "ZSBtaXhlZCBuYW1lc3BhY2UgbGlzdC4KClRoZSByZWNvbW1lbmRlZCBjb250cm9sLXBsYW5lIGFw" + - "cHJvYWNoIHVzZXMgS3l2ZXJubyB0byBpbmplY3QgdGhlIHNlY3JldCBpbnRvCmNvbnRyb2wtcGxh" + - "bmUgcG9kcyBhdCBhZG1pc3Npb24gdGltZS4gVGhlIGNvbXB1dGUtcGxhbmUgY2hhcnQgYW5kIG9w" + - "ZXJhdG9yIHVzZQp0aGUgc2VjcmV0IGluIGBudmNhLW9wZXJhdG9yYCBhbmQgbWlycm9yIGl0IHRv" + - "IGBudmNhLXN5c3RlbWAuCgojIyBLeXZlcm5vIEFwcHJvYWNoIChSZWNvbW1lbmRlZCkKCiMjIyAx" + - "LiBJbnN0YWxsIEt5dmVybm8KCmBgYGJhc2gKaGVsbSByZXBvIGFkZCBreXZlcm5vIGh0dHBzOi8v" + - "a3l2ZXJuby5naXRodWIuaW8va3l2ZXJuby8KaGVsbSByZXBvIHVwZGF0ZQpoZWxtIGluc3RhbGwg" + - "a3l2ZXJubyBreXZlcm5vL2t5dmVybm8gLW4ga3l2ZXJubyAtLWNyZWF0ZS1uYW1lc3BhY2UgXAog" + - "IC0ta3ViZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+CmBgYAoKIyMjIDIuIENyZWF0" + - "ZSBjb250cm9sLXBsYW5lIHB1bGwgc2VjcmV0cwoKYGBgYmFzaApleHBvcnQgTkdDX0FQSV9LRVk9" + + "dCBlbmFibGVkIHRoZSBMTE0gYWRkb24gd2l0aCBhZGRvbnMubGxtLmVuYWJsZWQsIGNvbmZpZ3Vy" + + "ZWQgc2luZ2xlIHJlcGxpY2FzIGZvciB0aGUgTExNIEFQSSBHYXRld2F5IGFuZCByZXF1ZXN0IHJv" + + "dXRlciwgYW5kIGV4cGxhaW5lZCB0aGF0IHRoZSByZXF1ZXN0IHJvdXRlciB1c2VzIHBvd2VyLW9m" + + "LXR3byB3aGVuIG5vIGxvYWQtYmFsYW5jZXIgY29uZmlndXJhdGlvbiBpcyBzZXQuIEl0IGxpbmtl" + + "ZCB0aGUgY2Fub25pY2FsIHJlcXVlc3Qtcm91dGVyIGxvYWQtYmFsYW5jaW5nIGd1aWRlIGZvciBv" + + "dGhlciByb3V0aW5nIG1ldGhvZHMuIEZvciB0aGUgaXNvbGF0ZWQgcGxhaW50ZXh0IGNsdXN0ZXIs" + + "IGl0IHJlbGllZCBvbiB0aGUgc2VsZi1tYW5hZ2VkIHN0YWNrIGRlZmF1bHQgZm9yIHRoZSBidW5k" + + "bGVkIGdhdGV3YXktdG8tQVBJIGF1dGhlbnRpY2F0aW9uIGhvcCBhbmQgaW5jbHVkZWQgYWdlbnRD" + + "b25maWcubWVyZ2VDb25maWcud29ya2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUgZm9yIHRoZSBz" + + "ZXBhcmF0ZSB3b3JrZXIgdHJhbnNwb3J0LCB3aXRoIGEgd2FybmluZyB0aGF0IHBsYWludGV4dCB3" + + "b3JrZXIgdHJhbnNwb3J0IGlzIG5vdCBmb3IgcHJvZHVjdGlvbi4gSXQgcmVmcmVzaGVkIHRoZSBj" + + "b21wdXRlIHBsYW5lIHVzaW5nIHRoZSBzYW1lIGhhbmRvZmYgdXNlZCBkdXJpbmcgaW5zdGFsbGF0" + + "aW9uLCByZWRlcGxveWVkIGV4aXN0aW5nIExMTSBmdW5jdGlvbnMsIGFuZCB2ZXJpZmllZCB0aGUg" + + "TExNIGRlcGxveW1lbnRzLCByb3V0ZSwgYW5kIGxsbS13b3JrZXIgc2lkZWNhci4iLAogICAgImV4" + + "cGVjdGVkX2JlaGF2aW9yIjogWwogICAgICAiVGhlIGFnZW50IHVzZWQgYWRkb25zLmxsbS5lbmFi" + + "bGVkLCBub3QgdGhlIG9ic29sZXRlIGxsbS5lbmFibGVkIHBhdGgiLAogICAgICAiVGhlIGFnZW50" + + "IHNldCBnYXRld2F5IGFuZCByZXF1ZXN0Um91dGVyIHJlcGxpY2FDb3VudCB0byAxIGZvciB0aGUg" + + "c2luZ2xlLW5vZGUgdGVzdCBjbHVzdGVyIiwKICAgICAgIlRoZSBhZ2VudCBzdGF0ZWQgdGhhdCB0" + + "aGUgcmVxdWVzdCByb3V0ZXIgZGVmYXVsdHMgdG8gcG93ZXItb2YtdHdvIGFuZCBsaW5rZWQgdGhl" + + "IGNhbm9uaWNhbCByZXF1ZXN0LXJvdXRlciBsb2FkLWJhbGFuY2luZyBndWlkZSBmb3Igb3RoZXIg" + + "bWV0aG9kcyIsCiAgICAgICJUaGUgYWdlbnQgZXhwbGFpbmVkIHRoYXQgdGhlIGJ1bmRsZWQgZ2F0" + + "ZXdheS10by1BUEkgYXV0aGVudGljYXRpb24gaG9wIGRlZmF1bHRzIHRvIHBsYWludGV4dCwgaW5j" + + "bHVkZWQgd29ya2xvYWQuc3RhcmdhdGVRVUlDSW5zZWN1cmUgb25seSBmb3IgdGhlIGlzb2xhdGVk" + + "IHdvcmtlciB0cmFuc3BvcnQsIGFuZCB3YXJuZWQgYWdhaW5zdCBwbGFpbnRleHQgd29ya2VyIHRy" + + "YW5zcG9ydCBpbiBwcm9kdWN0aW9uIiwKICAgICAgIlRoZSBhZ2VudCBhcHBsaWVkIHRoZSBjb250" + + "cm9sLXBsYW5lIEhlbG1maWxlIGVudmlyb25tZW50LCByZWZyZXNoZWQgdGhlIGNvbXB1dGUgcGxh" + + "bmUgd2l0aCB0aGUgc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLCBhbmQgcmVjcmVhdGVkIG9yIHJlZGVw" + + "bG95ZWQgZXhpc3RpbmcgTExNIGZ1bmN0aW9ucyIsCiAgICAgICJUaGUgYWdlbnQgdmVyaWZpZWQg" + + "bGxtLWFwaS1nYXRld2F5LCBsbG0tcmVxdWVzdC1yb3V0ZXIsIHRoZSBMTE0gSFRUUFJvdXRlLCBh" + + "bmQgdGhlIGxsbS13b3JrZXIgc2lkZWNhciBpbmNsdWRpbmcgLS1xdWljLWluc2VjdXJlIgogICAg" + + "XQogIH0sCiAgewogICAgImlkIjogIkc4LU5FRy1ub3QtZm9yLWszZCIsCiAgICAicXVlc3Rpb24i" + + "OiAiU2V0IHVwIGEgbG9jYWwgTlZDRiBkZXYgY2x1c3RlciB1c2luZyBrM2QgZm9yIHRlc3Rpbmci" + + "LAogICAgImV4cGVjdGVkX3NraWxsIjogbnVsbCwKICAgICJzaG91bGRfdHJpZ2dlciI6IGZhbHNl" + + "LAogICAgImdyb3VuZF90cnV0aCI6ICJUaGlzIGlzIGEgbG9jYWwgazNkIGRldmVsb3BtZW50IHJl" + + "cXVlc3QgdGhhdCBiZWxvbmdzIHRvIHRoZSBudmNmLXNlbGYtaG9zdGVkLWxvY2FsLWRldiBza2ls" + + "bCwgbm90IG52Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi4gVGhlIGFnZW50IGRpZCBub3Qg" + + "cmVhZCBvciB1c2UgdGhlIHNlbGYtbWFuYWdlZCBpbnN0YWxsYXRpb24gc2tpbGwgYW5kIGluc3Rl" + + "YWQgcHJvdmlkZWQgazNkLXNwZWNpZmljIGd1aWRhbmNlLiIsCiAgICAiZXhwZWN0ZWRfYmVoYXZp" + + "b3IiOiBbCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCByZWFkIG52Y2Ytc2VsZi1tYW5hZ2VkLWlu" + + "c3RhbGxhdGlvbi9TS0lMTC5tZCIsCiAgICAgICJUaGUgYWdlbnQgZGlkIG5vdCBwcm92aWRlIGhl" + + "bG1maWxlLWJhc2VkIHByb2R1Y3Rpb24gZGVwbG95bWVudCBpbnN0cnVjdGlvbnMiLAogICAgICAi" + + "VGhlIGFnZW50IHByb3ZpZGVkIGszZC1zcGVjaWZpYyBsb2NhbCBkZXZlbG9wbWVudCBndWlkYW5j" + + "ZSBvciBkZWZlcnJlZCB0byB0aGUgYXBwcm9wcmlhdGUgbG9jYWwtZGV2IHNraWxsIgogICAgXQog" + + "IH0KXQpQSwcIR1VqVkpWAABKVgAAUEsDBBQACAAAAAAAIQAAAAAAAAAAAAAAAAAvAAkAZGF0YS9u" + + "dmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXhhbXBsZXMubWRVVAUAAQCmzhIjIEV4YW1w" + + "bGVzCgpXb3JrZWQgZXhhbXBsZXMgYmFzZWQgb24gcmVhbCBkZXBsb3ltZW50IHNjZW5hcmlvcy4K" + + "CiMjIEV4YW1wbGUgMTogT3ZlcnJpZGUgQ2Fzc2FuZHJhIFJlc291cmNlcwoKVGhlIGRlZmF1bHQg" + + "Q2Fzc2FuZHJhIHJlc291cmNlIGxpbWl0cyBjYXVzZSBPT00gb24gbGFyZ2UgaW5zdGFuY2UgdHlw" + + "ZXMgKGUuZy4sIGBwNS40OHhsYXJnZWApLgoKUHJvYmxlbTogQ2Fzc2FuZHJhIHBvZHMgcmVzdGFy" + + "dCB3aXRoIGBPT01LaWxsZWRgLgoKU29sdXRpb246IE92ZXJyaWRlIHJlc291cmNlcyB2aWEgaGVs" + + "bWZpbGUgcmVsZWFzZSB2YWx1ZXMgYmxvY2suCgojIyMgU3RlcCAxOiBDYXB0dXJlIGJhc2VsaW5l" + + "CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fz" + + "c2FuZHJhIHRlbXBsYXRlID4gL3RtcC9jYXNzLWJlZm9yZS55YW1sCmdyZXAgLUE4ICdyZXNvdXJj" + + "ZXM6JyAvdG1wL2Nhc3MtYmVmb3JlLnlhbWwgfCBoZWFkIC0xMApgYGAKCiMjIyBTdGVwIDI6IEFk" + + "ZCBvdmVycmlkZSB0byBoZWxtZmlsZS5kLzAxLWRlcGVuZGVuY2llcy55YW1sLmdvdG1wbAoKSW4g" + + "dGhlIGV4YW1wbGVzIGJlbG93LCBgPHByaXZhdGUtdmFsdWVzPmAgcmVmZXJzIHRvIHRoZSBgc2Vj" + + "cmV0cy9gIGRpcmVjdG9yeSBhdCB0aGUgaGVsbWZpbGUgc3RhY2sgcm9vdC4KCmBgYHlhbWwKLSBu" + + "YW1lOiBjYXNzYW5kcmEKICB2ZXJzaW9uOiAwLjguMAogIGNvbmRpdGlvbjogY2Fzc2FuZHJhLmVu" + + "YWJsZWQKICBuYW1lc3BhY2U6IGNhc3NhbmRyYS1zeXN0ZW0KICA8PDogKmRlcGVuZGVuY3kKICB2" + + "YWx1ZXM6CiAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAgLSAuLi88cHJpdmF0ZS12YWx1" + + "ZXM+L3t7IHJlcXVpcmVkRW52ICJIRUxNRklMRV9FTlYiIH19LXNlY3JldHMueWFtbAogICAgLSBj" + + "YXNzYW5kcmE6CiAgICAgICAgcmVzb3VyY2VzOgogICAgICAgICAgbGltaXRzOgogICAgICAgICAg" + + "ICBjcHU6ICI4IgogICAgICAgICAgICBtZW1vcnk6IDgxOTJNaQogICAgICAgICAgcmVxdWVzdHM6" + + "CiAgICAgICAgICAgIGNwdTogIjIiCiAgICAgICAgICAgIG1lbW9yeTogNDA5Nk1pCmBgYAoKIyMj" + + "IFN0ZXAgMzogVmVyaWZ5IGFuZCBhcHBseQoKYGBgYmFzaApIRUxNRklMRV9FTlY9PGVudj4gaGVs" + + "bWZpbGUgLS1zZWxlY3RvciBuYW1lPWNhc3NhbmRyYSB0ZW1wbGF0ZSA+IC90bXAvY2Fzcy1hZnRl" + + "ci55YW1sCmRpZmYgL3RtcC9jYXNzLWJlZm9yZS55YW1sIC90bXAvY2Fzcy1hZnRlci55YW1sICAj" + + "IENvbmZpcm0gcmVzb3VyY2VzIGNoYW5nZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0t" + + "c2VsZWN0b3IgbmFtZT1jYXNzYW5kcmEgc3luYwpgYGAKCk5vdGU6IGByZXNvdXJjZVByZXNldGAg" + + "KGEgQml0bmFtaSBmZWF0dXJlKSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBOVkNGIGNhc3NhbmRy" + + "YSB3cmFwcGVyIGNoYXJ0LiBVc2UgZXhwbGljaXQgYHJlc291cmNlc2AgaW5zdGVhZC4KCi0tLQoK" + + "IyMgRXhhbXBsZSAyOiBEZXBsb3kgZnJvbSBOR0MgUHJpdmF0ZSBSZWdpc3RyeSB3aXRoIFB1bGwg" + + "U2VjcmV0cwoKRGVwbG95IHRoZSBOVkNGIHN0YWNrIHB1bGxpbmcgaW1hZ2VzIGRpcmVjdGx5IGZy" + + "b20gTkdDIChgbnZjci5pb2ApIGluc3RlYWQgb2YgYSBtaXJyb3JlZCByZWdpc3RyeSwgdXNpbmcg" + + "aW1hZ2UgcHVsbCBzZWNyZXRzLgoKIyMjIFN0ZXAgMTogQ29uZmlndXJlIGVudmlyb25tZW50IGZv" + + "ciBOR0MKCmBgYHlhbWwKIyBlbnZpcm9ubWVudHMvPGVudj4ueWFtbApnbG9iYWw6CiAgaGVsbToK" + + "ICAgIHNvdXJjZXM6CiAgICAgIHJlZ2lzdHJ5OiBudmNyLmlvCiAgICAgIHJlcG9zaXRvcnk6IG52" + + "aWRpYS9udmNmCiAgaW1hZ2U6CiAgICByZWdpc3RyeTogbnZjci5pbwogICAgcmVwb3NpdG9yeTog" + + "bnZpZGlhL252Y2YKYGBgCgojIyMgU3RlcCAyOiBBdXRoZW50aWNhdGUgbG9jYWxseSAoZm9yIGhl" + + "bG1maWxlIGNoYXJ0IHB1bGxzKQoKYGBgYmFzaApkb2NrZXIgbG9naW4gbnZjci5pbyAtdSAnJG9h" + + "dXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmhlbG0gcmVnaXN0cnkgbG9naW4gbnZjci5pbyAt" + + "dSAnJG9hdXRodG9rZW4nIC1wICIkTkdDX0FQSV9LRVkiCmBgYAoKIyMjIFN0ZXAgMzogQ3JlYXRl" + + "IG5hbWVzcGFjZXMgYW5kIHB1bGwgc2VjcmV0cwoKYGBgYmFzaApleHBvcnQgTkdDX0FQSV9LRVk9" + "Ijx5b3VyLW5nYy1hcGkta2V5PiIKCmZvciBucyBpbiBjYXNzYW5kcmEtc3lzdGVtIG5hdHMtc3lz" + "dGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2VyOyBkbwog" + "IGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3Bh" + @@ -3681,124 +2861,951 @@ const skillDataZipBase64 = "" + "ZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAgIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tl" + "bicgXAogICAgLS1kb2NrZXItcGFzc3dvcmQ9IiROR0NfQVBJX0tFWSIgXAogICAgLS1uYW1lc3Bh" + "Y2U9IiRucyIgXAogICAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwga3ViZWN0bCAtLWNvbnRl" + - "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpkb25lCmBgYAoKRm9yIG5vbi1O" + - "R0MgcmVnaXN0cmllcywgcmVwbGFjZSBgLS1kb2NrZXItc2VydmVyYCwgYC0tZG9ja2VyLXVzZXJu" + - "YW1lYCwgYW5kIGAtLWRvY2tlci1wYXNzd29yZGAuCgojIyMgMy4gQXBwbHkgS3l2ZXJubyBDbHVz" + - "dGVyUG9saWN5CgpgYGB5YW1sCmFwaVZlcnNpb246IGt5dmVybm8uaW8vdjEKa2luZDogQ2x1c3Rl" + - "clBvbGljeQptZXRhZGF0YToKICBuYW1lOiBudmNmLWFkZC1pbWFnZXB1bGxzZWNyZXRzCnNwZWM6" + - "CiAgYmFja2dyb3VuZDogZmFsc2UKICBydWxlczoKICAgIC0gbmFtZTogYWRkLWltYWdlcHVsbHNl" + - "Y3JldC10by1udmNmLXBvZHMKICAgICAgbWF0Y2g6CiAgICAgICAgYW55OgogICAgICAgIC0gcmVz" + - "b3VyY2VzOgogICAgICAgICAgICBraW5kczoKICAgICAgICAgICAgLSBQb2QKICAgICAgICAgICAg" + - "bmFtZXNwYWNlczoKICAgICAgICAgICAgLSAibnZjZiIKICAgICAgICAgICAgLSAiYXBpLWtleXMi" + - "CiAgICAgICAgICAgIC0gInNpcyIKICAgICAgICAgICAgLSAiZXNzIgogICAgICAgICAgICAtICJu" + - "YXRzLXN5c3RlbSIKICAgICAgICAgICAgLSAiY2Fzc2FuZHJhLXN5c3RlbSIKICAgICAgICAgICAg" + - "LSAidmF1bHQtc3lzdGVtIgogICAgICAgICAgICAtICJjZXJ0LW1hbmFnZXIiCiAgICAgIG11dGF0" + - "ZToKICAgICAgICBwYXRjaFN0cmF0ZWdpY01lcmdlOgogICAgICAgICAgbWV0YWRhdGE6CiAgICAg" + - "ICAgICAgIGFubm90YXRpb25zOgogICAgICAgICAgICAgIG52Y2YubnZpZGlhLmNvbS9pbWFnZXB1" + - "bGxzZWNyZXQtaW5qZWN0ZWQtYnk6IGt5dmVybm8KICAgICAgICAgIHNwZWM6CiAgICAgICAgICAg" + - "IGltYWdlUHVsbFNlY3JldHM6CiAgICAgICAgICAgIC0gbmFtZTogbnZjci1jcmVkcwpgYGAKCmBg" + - "YGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gYXBwbHkgXAog" + - "IC1mIGt5dmVybm8taW1hZ2VwdWxsc2VjcmV0LXBvbGljeS55YW1sCmBgYAoKIyMjIDQuIEluc3Rh" + - "bGwgdGhlIGNvbnRyb2wgcGxhbmUKCkNvbnRpbnVlIHdpdGggdGhlIHNlbGVjdGVkIGNvbnRyb2wt" + - "cGxhbmUgaW5zdGFsbGF0aW9uIGluCltTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0o" + - "Y29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLiBObwpjb250cm9sLXBsYW5lIGhlbG1maWxl" + - "IG1vZGlmaWNhdGlvbnMgYXJlIG5lZWRlZC4gS3l2ZXJubyBpbmplY3RzIHRoZSBwdWxsCnNlY3Jl" + - "dCBpbnRvIG5ldyBjb250cm9sLXBsYW5lIHBvZHMuCgojIyBDb21wdXRlLVBsYW5lIFNlY3JldAoK" + - "Q3JlYXRlIHRoZSBzZWNyZXQgb25seSBpbiBgbnZjYS1vcGVyYXRvcmAgb24gdGhlIGNvbXB1dGUg" + - "Y2x1c3RlcjoKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4" + - "dD4gY3JlYXRlIG5hbWVzcGFjZSBudmNhLW9wZXJhdG9yIFwKICAtLWRyeS1ydW49Y2xpZW50IC1v" + - "IHlhbWwgfCBcCiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gYXBw" + - "bHkgLWYgLQoKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gY3JlYXRl" + - "IHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgLS1kb2NrZXItc2VydmVyPW52" + - "Y3IuaW8gXAogIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAogIC0tZG9ja2VyLXBh" + - "c3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAtLW5hbWVzcGFjZT1udmNhLW9wZXJhdG9yIFwKICAt" + - "LWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBcCiAga3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUt" + - "cGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpgYGAKClJlZmVyZW5jZSBpdCBpbiB0aGUgY29tcHV0" + - "ZS1wbGFuZSBlbnZpcm9ubWVudCBmaWxlOgoKYGBgeWFtbApnbG9iYWw6CiAgaW1hZ2VQdWxsU2Vj" + - "cmV0czoKICAgIC0gbmFtZTogbnZjci1jcmVkcwpgYGAKClRoZSBjaGFydCBhbmQgb3BlcmF0b3Ig" + - "dXNlIHRoYXQgcmVmZXJlbmNlIGluIGBudmNhLW9wZXJhdG9yYCBhbmQgbWlycm9yIHRoZQpzZWNy" + - "ZXQgdG8gYG52Y2Etc3lzdGVtYC4gRG8gbm90IGNyZWF0ZSBhIGJyb2FkZXIgbWFudWFsIGNvbXB1" + - "dGUgbmFtZXNwYWNlIGxpc3QuIEZvbGxvdwpbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRp" + - "b25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKSBmb3IgdGhlCnNlbGVjdGVkIGluc3Rh" + - "bGwgZmxvdy4KCiMjIFZlcmlmaWNhdGlvbgoKYGBgYmFzaAojIENoZWNrIHRoYXQgYSBjb250cm9s" + - "LXBsYW5lIHBvZCBoYXMgdGhlIGluamVjdGVkIHNlY3JldAprdWJlY3RsIC0tY29udGV4dCA8Y29u" + - "dHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgcG9kIC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gXAog" + - "IC1vIGpzb25wYXRoPSd7LnNwZWMuaW1hZ2VQdWxsU2VjcmV0c30nCiMgRXhwZWN0ZWQ6IFt7Im5h" + - "bWUiOiJudmNyLWNyZWRzIn1dCgojIENoZWNrIHRoZSBLeXZlcm5vIGFubm90YXRpb24Ka3ViZWN0" + - "bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHBvZCAtbiA8bmFtZXNwYWNl" + - "PiA8cG9kLW5hbWU+IFwKICAtbyBqc29ucGF0aD0ney5tZXRhZGF0YS5hbm5vdGF0aW9ucy5udmNm" + - "XC5udmlkaWFcLmNvbS9pbWFnZXB1bGxzZWNyZXQtaW5qZWN0ZWQtYnl9JwojIEV4cGVjdGVkOiBr" + - "eXZlcm5vCgojIENoZWNrIHB1bGwgZXZlbnRzCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBs" + - "YW5lLWNvbnRleHQ+IGdldCBldmVudHMgLW4gPG5hbWVzcGFjZT4gXAogIC0tc29ydC1ieT0nLmxh" + - "c3RUaW1lc3RhbXAnIHwgZ3JlcCAtaSBwdWxsCiMgU2hvdWxkIHNob3cgIlN1Y2Nlc3NmdWxseSBw" + - "dWxsZWQiIG5vdCAiNDAxIFVuYXV0aG9yaXplZCIKCiMgQ2hlY2sgdGhlIGNoYXJ0L29wZXJhdG9y" + - "IG1pcnJvciBvbiB0aGUgY29tcHV0ZSBjbHVzdGVyCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + - "LXBsYW5lLWNvbnRleHQ+IGdldCBzZWNyZXQgbnZjci1jcmVkcyBcCiAgLW4gbnZjYS1zeXN0ZW0K" + - "YGBgCgojIyBXaGVuIFB1bGwgU2VjcmV0cyBBcmUgTm90IE5lZWRlZAoKLSAqKkFXUyBFQ1Igd2l0" + - "aCBJQU0gbm9kZSByb2xlcyoqOiBJZiB5b3VyIG5vZGVzIGhhdmUgYEFtYXpvbkVDMkNvbnRhaW5l" + - "clJlZ2lzdHJ5UmVhZE9ubHlgIElBTSBwb2xpY3ksIEt1YmVybmV0ZXMgY2FuIHB1bGwgZnJvbSBF" + - "Q1Igd2l0aG91dCBleHBsaWNpdCBzZWNyZXRzLgotICoqUHVibGljIHJlZ2lzdHJpZXMqKjogTm8g" + - "cHVsbCBzZWNyZXRzIG5lZWRlZC4KLSAqKkNTUCBidWlsdC1pbiBjcmVkZW50aWFsIGhlbHBlcnMq" + - "KjogR0tFIEFydGlmYWN0IFJlZ2lzdHJ5LCBBenVyZSBBQ1Igd2l0aCBtYW5hZ2VkIGlkZW50aXR5" + - "LCBhbmQgc2ltaWxhciBzZXJ2aWNlcy4KCiMjIFRyb3VibGVzaG9vdGluZwoKIyMjIFBvZHMgc3Rp" + - "bGwgaW4gSW1hZ2VQdWxsQmFja09mZiBhZnRlciBhcHBseWluZyBwb2xpY3kKClRoZSBLeXZlcm5v" + - "IHBvbGljeSBvbmx5IGFmZmVjdHMgcG9kcyBjcmVhdGVkICoqYWZ0ZXIqKiB0aGUgcG9saWN5IGlz" + - "IGFwcGxpZWQuIERlbGV0ZSBzdHVjayBwb2RzIHRvIHRyaWdnZXIgcmVjcmVhdGlvbjoKCmBgYGJh" + - "c2gKa3ViZWN0bCAtLWNvbnRleHQgPHRhcmdldC1jb250ZXh0PiBkZWxldGUgcG9kcyAtbiA8bmFt" + - "ZXNwYWNlPiAtLWFsbApgYGAKCiMjIyBLeXZlcm5vIGFkbWlzc2lvbiBjb250cm9sbGVyIG5vdCBy" + - "dW5uaW5nCgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+" + - "IGdldCBwb2RzIC1uIGt5dmVybm8KIyBBbGwgcG9kcyBzaG91bGQgYmUgUnVubmluZwpgYGAKCiMj" + - "IyBQb2xpY3kgbm90IG1hdGNoaW5nCgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9s" + - "LXBsYW5lLWNvbnRleHQ+IGdldCBjbHVzdGVycG9saWN5IG52Y2YtYWRkLWltYWdlcHVsbHNlY3Jl" + - "dHMKIyBTaG91bGQgc2hvdyBSRUFEWTogVHJ1ZQpgYGAKCiMjIyBXcm9uZyBzZWNyZXQgbmFtZQoK" + - "VGhlIHBvbGljeSByZWZlcmVuY2VzIGBudmNyLWNyZWRzYC4gVmVyaWZ5IHRoZSBzZWNyZXQgZXhp" + - "c3RzIHdpdGggdGhhdCBleGFjdCBuYW1lOgoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8dGFy" + - "Z2V0LWNvbnRleHQ+IGdldCBzZWNyZXQgbnZjci1jcmVkcyAtbiA8bmFtZXNwYWNlPgpgYGAKUEsH" + - "CEtCNagAFgAAABYAAFBLAQIUABQACAAAAAAAIQD3ALZAShAAAEoQAAASAAkAAAAAAAAAAAAAAAAA" + - "AABkYXRhL21hbmlmZXN0Lmpzb25VVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA/3bzZ1NhAABTYQAA" + - "IwAJAAAAAAAAAAAAAACTEAAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvU0tJTEwubWRVVAUA" + - "AQCmzhJQSwECFAAUAAgAAAAAACEAFJvuWtoNAADaDQAAMwAJAAAAAAAAAAAAAABAcgAAZGF0YS9u" + - "dmNmLXNlbGYtbWFuYWdlZC1jbGkvZXhhbXBsZXMvY2ktcGlwZWxpbmVzLm1kVVQFAAEAps4SUEsB" + - "AhQAFAAIAAAAAAAhAKEU44FdDAAAXQwAADQACQAAAAAAAAAAAAAAhIAAAGRhdGEvbnZjZi1zZWxm" + - "LW1hbmFnZWQtY2xpL2V4YW1wbGVzL211bHRpLWNsdXN0ZXIubWRVVAUAAQCmzhJQSwECFAAUAAgA" + - "AAAAACEAQidJDwUNAAAFDQAANwAJAAAAAAAAAAAAAABMjQAAZGF0YS9udmNmLXNlbGYtbWFuYWdl" + - "ZC1jbGkvcHJvbXB0cy9hZGQtY29tcHV0ZS1wbGFuZS5tZFVUBQABAKbOElBLAQIUABQACAAAAAAA" + - "IQDU3o00nxkAAJ8ZAAA5AAkAAAAAAAAAAAAAAL+aAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNs" + - "aS9wcm9tcHRzL2NyZWF0ZS1hbmQtcnVuLXRhc2subWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEA" + - "0kPcBBglAAAYJQAANwAJAAAAAAAAAAAAAADOtAAAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkv" + - "cHJvbXB0cy9kZXBsb3ktYW5kLWludm9rZS5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQBykiwm" + - "vg4AAL4OAAA9AAkAAAAAAAAAAAAAAFTaAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9wcm9t" + - "cHRzL2RpYWdub3NlLWZhaWxlZC1pbnN0YWxsLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEJx" + - "5h4BKAAAASgAADoACQAAAAAAAAAAAAAAhukAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3By" + - "b21wdHMvaW5zdGFsbC1mcm9tLXNjcmF0Y2gubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAquE6" + - "ucgHAADIBwAAOQAJAAAAAAAAAAAAAAD4EQEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJv" + - "bXB0cy9yb3RhdGUtY2x1c3Rlci1qd2tzLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhANqHY1bk" + - "IQAA5CEAAC4ACQAAAAAAAAAAAAAAMBoBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21w" + - "dHMvdGVhcmRvd24ubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAcg0PZCEjAAAhIwAAMAAJAAAA" + - "AAAAAAAAAAB5PAEAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL2NvbW1hbmRz" + - "Lm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhADwZ8FjiCAAA4ggAADIACQAAAAAAAAAAAAAAAWAB" + - "AGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9leGl0LWNvZGVzLm1kVVQFAAEA" + - "ps4SUEsBAhQAFAAIAAAAAAAhAFsF+ye1NAAAtTQAAC0ACQAAAAAAAAAAAAAATGkBAGRhdGEvbnZj" + - "Zi1zZWxmLW1hbmFnZWQtY2xpL3JlZmVyZW5jZS9mbGFncy5tZFVUBQABAKbOElBLAQIUABQACAAA" + - "AAAAIQDzrhOEdBEAAHQRAAA3AAkAAAAAAAAAAAAAAGWeAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2Vk" + - "LWNsaS9yZWZlcmVuY2UvdHJvdWJsZXNob290aW5nLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAh" + - "ABHDFJNJYgAASWIAACwACQAAAAAAAAAAAAAAR7ABAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5z" + - "dGFsbGF0aW9uL1NLSUxMLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEdValZKVgAASlYAADQA" + - "CQAAAAAAAAAAAAAA8xICAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL2V2YWxz" + - "L2V2YWxzLmpzb25VVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAAlJOQH8oAAB/KAAALwAJAAAAAAAA" + - "AAAAAACoaQIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vZXhhbXBsZXMubWRV" + - "VAUAAQCmzhJQSwECFAAUAAgAAAAAACEAlmO8WRIwAAASMAAATAAJAAAAAAAAAAAAAACNkgIAZGF0" + - "YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9jb21wdXRlLXBsYW5l" + - "LWluc3RhbGxhdGlvbi5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQC1enA7tTAAALUwAAA7AAkA" + - "AAAAAAAAAAAAACLDAgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVu" + - "Y2VzL2RlYnVnZ2luZy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQATEeyNCioAAAoqAABEAAkA" + - "AAAAAAAAAAAAAEn0AgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9yZWZlcmVu" + - "Y2VzL2hlbG1maWxlLXN0cnVjdHVyZS5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQA4+SevuQcA" + - "ALkHAAA/AAkAAAAAAAAAAAAAAM4eAwBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlv" + - "bi9yZWZlcmVuY2VzL252Y2YtdWktYWRkb24ubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAAACEAS0I1" + - "qAAWAAAAFgAAPgAJAAAAAAAAAAAAAAD9JgMAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + - "YXRpb24vcmVmZXJlbmNlcy9wdWxsLXNlY3JldHMubWRVVAUAAQCmzhJQSwUGAAAAABcAFwCvCQAA" + - "cj0DAAAA" + "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gYXBwbHkgLWYgLQpkb25lCmBgYAoKIyMjIFN0ZXAg" + + "NDogQWRkIGltYWdlUHVsbFNlY3JldHMgdG8gaGVsbWZpbGUgcmVsZWFzZXMKCkFkZCB0aGUgY2hh" + + "cnQtc3BlY2lmaWMgYGltYWdlUHVsbFNlY3JldHNgIGtleSB0byBlYWNoIHJlbGVhc2UuIEV4YW1w" + + "bGUgZm9yIGNhc3NhbmRyYSBpbiBgaGVsbWZpbGUuZC8wMS1kZXBlbmRlbmNpZXMueWFtbC5nb3Rt" + + "cGxgOgoKYGBgeWFtbAotIG5hbWU6IGNhc3NhbmRyYQogIHZlcnNpb246IDAuOC4wCiAgY29uZGl0" + + "aW9uOiBjYXNzYW5kcmEuZW5hYmxlZAogIG5hbWVzcGFjZTogY2Fzc2FuZHJhLXN5c3RlbQogIDw8" + + "OiAqZGVwZW5kZW5jeQogIHZhbHVlczoKICAgIC0gLi4vZ2xvYmFsLnlhbWwuZ290bXBsCiAgICAt" + + "IC4uLzxwcml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0tc2Vj" + + "cmV0cy55YW1sCiAgICAtIGNhc3NhbmRyYToKICAgICAgICBnbG9iYWw6CiAgICAgICAgICBpbWFn" + + "ZVB1bGxTZWNyZXRzOgogICAgICAgICAgICAtIG52Y3ItY3JlZHMKYGBgCgpTZWUgW3JlZmVyZW5j" + + "ZXMvcHVsbC1zZWNyZXRzLm1kXShyZWZlcmVuY2VzL3B1bGwtc2VjcmV0cy5tZCkgZm9yIHRoZSBr" + + "ZXkgZm9yIGV2ZXJ5IGNoYXJ0LgoKVGhlc2UgYXJlIGNvbnRyb2wtcGxhbmUgbmFtZXNwYWNlcy4g" + + "Rm9yIGEgc2VwYXJhdGUgY29tcHV0ZSBjbHVzdGVyLCBjcmVhdGUgdGhlCnNlY3JldCBvbmx5IGlu" + + "IGBudmNhLW9wZXJhdG9yYDsgdGhlIGNoYXJ0IGFuZCBvcGVyYXRvciBtaXJyb3IgaXQgdG8KYG52" + + "Y2Etc3lzdGVtYC4gU2VlIFtTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbl0ocmVmZXJl" + + "bmNlcy9jb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCNwdWxsLXNlY3JldHMpLgoKIyMjIFN0" + + "ZXAgNTogRGVwbG95CgpgYGBiYXNoCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLWt1YmUt" + + "Y29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBzeW5jCmBgYAoKIyMjIFN0ZXAgNjogUGF0" + + "Y2ggU2VydmljZUFjY291bnRzIGZvciBjaGFydHMgd2l0aG91dCBuYXRpdmUgc3VwcG9ydAoKQWZ0" + + "ZXIgUGhhc2UgMSAoZGVwZW5kZW5jaWVzKSBjb21wbGV0ZXMsIE9wZW5CYW8gcG9kcyB3aWxsIGJl" + + "IGluIGBJbWFnZVB1bGxCYWNrT2ZmYC4gUGF0Y2ggYW5kIHJlc3RhcnQ6CgpgYGBiYXNoCmZvciBu" + + "cyBpbiB2YXVsdC1zeXN0ZW0gbnZjZiBlc3M7IGRvCiAgZm9yIHNhIGluICQoa3ViZWN0bCAtLWNv" + + "bnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHNhIC1uICIkbnMiIFwKICAgIC0tbm8t" + + "aGVhZGVycyAtbyBjdXN0b20tY29sdW1ucz0iOm1ldGFkYXRhLm5hbWUiKTsgZG8KICAgIGt1YmVj" + + "dGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IHBhdGNoIHNlcnZpY2VhY2NvdW50" + + "IC1uICIkbnMiICIkc2EiIFwKICAgICAgLXAgJ3siaW1hZ2VQdWxsU2VjcmV0cyI6IFt7Im5hbWUi" + + "OiAibnZjci1jcmVkcyJ9XX0nCiAgZG9uZQpkb25lCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9s" + + "LXBsYW5lLWNvbnRleHQ+IGRlbGV0ZSBwb2RzIC1uIHZhdWx0LXN5c3RlbSAtLWFsbApgYGAKClZl" + + "cmlmeToKCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4g" + + "Z2V0IGV2ZW50cyAtbiB2YXVsdC1zeXN0ZW0gXAogIC0tc29ydC1ieT0nLmxhc3RUaW1lc3RhbXAn" + + "IHwgZ3JlcCAtaSBwdWxsCiMgU2hvdWxkIHNob3cgIlN1Y2Nlc3NmdWxseSBwdWxsZWQgaW1hZ2Ui" + + "IGZyb20gbnZjci5pbwpgYGAKCi0tLQoKIyMgRXhhbXBsZSAzOiBGdWxsIFRlYXJkb3duIGFuZCBS" + + "ZWluc3RhbGwKCldoZW4gYSBkZXBsb3ltZW50IGlzIGJyb2tlbiBhbmQgeW91IG5lZWQgYSBjbGVh" + + "biBzbGF0ZS4KCiMjIyBTdGVwIDE6IERlc3Ryb3kgdGhlIGNvbXB1dGUtcGxhbmUgc3RhY2sKCmBg" + + "YGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwK" + + "ICBDTFVTVEVSX05BTUU9PGNsdXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAg" + + "S1VCRUNPTkZJR19GSUxFPTxjb21wdXRlLXBsYW5lLWt1YmVjb25maWc+CmBgYAoKSWYgY29tcHV0" + + "ZSBjbGVhbnVwIGlzIHN0dWNrIG9uIGZpbmFsaXplcnMsIHVzZSB0aGUgY29tcHV0ZS1jb250ZXh0" + + "IHByb2NlZHVyZSBpbgpbZGVidWdnaW5nLm1kXShyZWZlcmVuY2VzL2RlYnVnZ2luZy5tZCNmYWls" + + "dXJlLW52Y2EtY2xlYW51cC1zdHVjay1maW5hbGl6ZXJzKS4KCiMjIyBTdGVwIDI6IERlcmVnaXN0" + + "ZXIgdGhlIGNvbXB1dGUgY2x1c3RlcgoKUmVhZCBgY2x1c3RlcklEYCBhbmQgYG5jYUlEYCBmcm9t" + + "CmBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9yZWdpc3RyYXRpb24vPGNsdXN0ZXIt" + + "bmFtZT4tcmVnaXN0ZXItdmFsdWVzLnlhbWxgLgpTaG93IHRoZSBJRCBhbmQgZ2V0IGNvbmZpcm1h" + + "dGlvbiBiZWZvcmUgZGVsZXRpbmcgdGhlIElDTVMgcm93OgoKYGBgYmFzaAo8bnZjZi1jbGk+IC0t" + + "Y29uZmlnIDxjb25maWc+IGNsdXN0ZXIgZGVsZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXIt" + + "aWQtZnJvbS1yZWdpc3RyYXRpb24tdmFsdWVzPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0t" + + "aWdub3JlLW1pc3NpbmcKYGBgCgpSZXBlYXQgc3RlcHMgMSBhbmQgMiBmb3IgZXZlcnkgY29tcHV0" + + "ZSBjbHVzdGVyLgoKIyMjIFN0ZXAgMzogRGVzdHJveSB0aGUgY29udHJvbC1wbGFuZSBzdGFjawoK" + + "UHJlc2VydmUgdGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBkZWZhdWx0LiBOYW1lc3Bh" + + "Y2UgcHJlc2VydmF0aW9uIGRvZXMKbm90IHByZXNlcnZlIHRoZSBIZWxtIHJlbGVhc2UuIEJlZm9y" + + "ZSBydW5uaW5nIGRlc3Ryb3ksIGlkZW50aWZ5IHdoZXRoZXIKY2VydC1tYW5hZ2VyIGlzIGV4dGVy" + + "bmFsLiBGb3IgYW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZQpgY2Vy" + + "dE1hbmFnZXIuZW5hYmxlZDogZmFsc2VgIGFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4g" + + "aW50ZW5kZWQKc3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlIGBjZXJ0TWFuYWdl" + + "ci5lbmFibGVkOiB0cnVlYCwgdmVyaWZ5Cm1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRh" + + "ZGF0YSBhbmQgYWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkCmV2aWRlbmNlLiBPbmx5IHBs" + + "YW4gbmFtZXNwYWNlIHJlbW92YWwgYWZ0ZXIgdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNl" + + "IGFuZApnZXR0aW5nIGV4cGxpY2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlIGRvIG5vdCBkZWxl" + + "dGUgaXQuCgpgYGBiYXNoCktVQkVDT05GSUc9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4gXApt" + + "YWtlIC1DIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIGRlc3Ryb3kgXAogIEhFTE1GSUxFX0VO" + + "Vj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb250cm9sLXBsYW5lLWt1YmVjb25maWc+CmBg" + + "YAoKUGFzcyBib3RoIGt1YmVjb25maWcgZm9ybXMgYmVjYXVzZSBjb250cm9sLXBsYW5lIG5hbWVz" + + "cGFjZSBjbGVhbnVwIHVzZXMKYW1iaWVudCBga3ViZWN0bGAuCgojIyMgU3RlcCA0OiBWZXJpZnkg" + + "Y2xlYW4KCmBgYGJhc2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4g" + + "Z2V0IG5zIHwgXAogIGdyZXAgLUUgJyhudmNhfG52Y2YtYmFja2VuZHxncm92ZXxkeW5hbW8pJwpr" + + "dWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgbnMgfCBcCiAgZ3Jl" + + "cCAtRSAnKGNhc3NhbmRyYXxuYXRzfHZhdWx0fG52Y2Z8YXBpLWtleXN8ZXNzfHNpcyknCiMgQm90" + + "aCBjb21tYW5kcyBzaG91bGQgcmV0dXJuIGVtcHR5LgpgYGAKCiMjIyBTdGVwIDU6IFJlaW5zdGFs" + + "bCBpbiBzcGxpdCBvcmRlcgoKRm9sbG93IFtDbGVhbiBJbnN0YWxsYXRpb25dKFNLSUxMLm1kI2Ns" + + "ZWFuLWluc3RhbGxhdGlvbiksIHRoZW4gcmV0dXJuIHRvIHRoZQpzYW1lIGhhbmRvZmYgaW4gW1Nw" + + "bGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUt" + + "aW5zdGFsbGF0aW9uLm1kKS4KCi0tLQoKIyMgRXhhbXBsZSA0OiBSZWNvdmVyIGZyb20gYSBHYXRl" + + "d2F5IEVuZHBvaW50IENoYW5nZQoKVGhlIHNlcGFyYXRlbHkgcHJvdmlzaW9uZWQgR2F0ZXdheSBv" + + "ciBpdHMgbG9hZCBiYWxhbmNlciB3YXMgcmVjcmVhdGVkIGFuZCBnb3QgYSBuZXcgZW5kcG9pbnQu" + + "CgojIyMgU3RlcCAxOiBHZXQgdGhlIG5ldyBlbmRwb2ludAoKYGBgYmFzaApHQVRFV0FZX0FERFI9" + + "JChrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZ2F0ZXdheSBc" + + "CiAgbnZjZi1nYXRld2F5IC1uIGVudm95LWdhdGV3YXkgXAogIC1vIGpzb25wYXRoPSd7LnN0YXR1" + + "cy5hZGRyZXNzZXNbMF0udmFsdWV9JykKdGVzdCAtbiAiJEdBVEVXQVlfQUREUiIKYGBgCgojIyMg" + + "U3RlcCAyOiBVcGRhdGUgRE5TIGFuZCBkaXJlY3QgYWRkcmVzcyBmaWVsZHMKCktlZXAgYGdsb2Jh" + + "bC5kb21haW5gLCByb3V0ZSBob3N0bmFtZXMsIGFuZCBDTEkgSG9zdCBmaWVsZHMgdW5jaGFuZ2Vk" + + "LiBQb2ludCB0aGUKRE5TIHJlY29yZHMgZm9yIHJlbmRlcmVkIHJvdXRlIGhvc3RuYW1lcywgc3Vj" + + "aCBhcyBgYXBpLjxkb21haW4+YCBhbmQKYCouaW52b2NhdGlvbi48ZG9tYWluPmAsIHRvIGBHQVRF" + + "V0FZX0FERFJgLiBGb3IgYSB0ZW1wb3JhcnkgZW52aXJvbm1lbnQgd2l0aG91dApETlMsIGtlZXAg" + + "aXRzIHJlc2VydmVkIHJvdXRlIHN1ZmZpeCBhbmQgY29ubmVjdCB0byBgR0FURVdBWV9BRERSYCB3" + + "aXRoIHRoZQptYXRjaGluZyBgSG9zdGAgaGVhZGVyLgoKRm9yIGEgc3BsaXQgZGVwbG95bWVudCBj" + + "b25maWd1cmVkIHdpdGggZGlyZWN0IEdhdGV3YXkgYWRkcmVzc2VzLCByZXBsYWNlIG9ubHkKdGhl" + + "IGFkZHJlc3MtYmVhcmluZyB2YWx1ZXM6IGNvbnRyb2wtcGxhbmUgYG52Y2ZOYXRzU2VydmljZVVS" + + "TGAsIGNvbXB1dGUtcGxhbmUKSUNNUywgUmVWYWwsIGFuZCBOQVRTIFVSTHMsIGFuZCBDTEkgVVJM" + + "IGZpZWxkcy4gS2VlcCB0aGVpciBkb21haW4gYW5kIEhvc3QKb3ZlcnJpZGVzIHVuY2hhbmdlZC4g" + + "UmVmcmVzaCByZWdpc3RyYXRpb24gYW5kIGluc3RhbGxhdGlvbiB0aHJvdWdoIHRoZSBzYW1lCmhh" + + "bmRvZmYgdXNlZCBvcmlnaW5hbGx5LiBTZWUKW1NwbGl0IENvbXB1dGUtUGxhbmUgSW5zdGFsbGF0" + + "aW9uXShyZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKQpmb3IgdGhlIGZp" + + "ZWxkcyBhbmQgY29tcGxldGUgY29tbWFuZHMuCgojIyMgU3RlcCAzOiBWZXJpZnkgYm90aCBjb250" + + "ZXh0cwoKYGBgYmFzaApkaWcgK3Nob3J0ICJhcGkuPGRvbWFpbj4iCmN1cmwgLUggIkhvc3Q6IGFw" + + "aS48ZG9tYWluPiIgImh0dHA6Ly8kR0FURVdBWV9BRERSL2hlYWx0aCIKa3ViZWN0bCAtLWNvbnRl" + + "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgbnZjZi1nYXRld2F5IFwKICAt" + + "biBlbnZveS1nYXRld2F5IC1vIHdpZGUKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUt" + + "Y29udGV4dD4gZ2V0IGh0dHByb3V0ZXMgLUEKa3ViZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxh" + + "bmUtY29udGV4dD4gZ2V0IHRjcHJvdXRlcyAtQQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0ZS1w" + + "bGFuZS1jb250ZXh0PiByb2xsb3V0IHN0YXR1cyBcCiAgZGVwbG95bWVudC9udmNhLW9wZXJhdG9y" + + "IC1uIG52Y2Etb3BlcmF0b3IgLS10aW1lb3V0PTEwbQprdWJlY3RsIC0tY29udGV4dCA8Y29tcHV0" + + "ZS1wbGFuZS1jb250ZXh0PiB3YWl0IFwKICBudmNmYmFja2VuZC88Y29tcHV0ZS1wbGFuZS1jbHVz" + + "dGVyLW5hbWU+IC1uIG52Y2Etb3BlcmF0b3IgXAogIC0tZm9yPWpzb25wYXRoPSd7LnN0YXR1cy5h" + + "Z2VudFN0YXR1c30nPWhlYWx0aHkgLS10aW1lb3V0PTEwbQpgYGAKCi0tLQoKIyMgRXhhbXBsZSA1" + + "OiBEZXBsb3kgT25seSBEZXBlbmRlbmNpZXMKClVzZWZ1bCBmb3IgdGVzdGluZyBvciB3aGVuIGl0" + + "ZXJhdGluZyBvbiBzZXJ2aWNlIGNvbmZpZ3VyYXRpb24uCgpgYGBiYXNoCiMgRGVwbG95IGp1c3Qg" + + "TkFUUywgQ2Fzc2FuZHJhLCBPcGVuQmFvCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNl" + + "bGVjdG9yIHJlbGVhc2UtZ3JvdXA9ZGVwZW5kZW5jaWVzIHN5bmMKCiMgQ2hlY2sgc3RhdHVzCmt1" + + "YmVjdGwgZ2V0IHBvZHMgLW4gbmF0cy1zeXN0ZW0Ka3ViZWN0bCBnZXQgcG9kcyAtbiBjYXNzYW5k" + + "cmEtc3lzdGVtCmt1YmVjdGwgZ2V0IHBvZHMgLW4gdmF1bHQtc3lzdGVtCgojIERlcGxveSBqdXN0" + + "IG9uZSBzcGVjaWZpYyByZWxlYXNlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVj" + + "dG9yIG5hbWU9Y2Fzc2FuZHJhIHN5bmMKYGBgCgojIyMgU2VsZWN0b3IgcmVmZXJlbmNlCgp8IFNl" + + "bGVjdG9yIHwgUmVsZWFzZXMgfAp8LS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGByZWxlYXNlLWdy" + + "b3VwPWRlcGVuZGVuY2llc2AgfCBuYXRzLCBjYXNzYW5kcmEsIG9wZW5iYW8tc2VydmVyIHwKfCBg" + + "cmVsZWFzZS1ncm91cD1zZXJ2aWNlc2AgfCBhcGkta2V5cywgc2lzLCBhcGksIGludm9jYXRpb24t" + + "c2VydmljZSwgZ3JwYy1wcm94eSwgZXNzLWFwaSwgbm90YXJ5LXNlcnZpY2UsIHJldmFsLCBvcHRp" + + "b25hbCBsbG0tcmVxdWVzdC1yb3V0ZXIgYW5kIGxsbS1hcGktZ2F0ZXdheSB3aGVuIGBsbG0uZW5h" + + "YmxlZD10cnVlYCwgb3B0aW9uYWwgdmFuaXR5LWdhdGV3YXkgb25seSBpbiBzdGFjayBwYWNrYWdl" + + "cyB0aGF0IGluY2x1ZGUgdGhlIGFkZG9uIGFuZCBoYXZlIGBhZGRvbnMudmFuaXR5R2F0ZXdheS5l" + + "bmFibGVkPXRydWVgLCBvcHRpb25hbCBudmNmLXVpIG9ubHkgaW4gc3RhY2sgcGFja2FnZXMgdGhh" + + "dCBpbmNsdWRlIHRoZSBhZGRvbiBhbmQgaGF2ZSBgYWRkb25zLm52Y2ZVaS5lbmFibGVkPXRydWVg" + + "IHwKfCBgbmFtZT1sbG0tcmVxdWVzdC1yb3V0ZXJgIHwgRGVwbG95IGp1c3QgdGhlIExMTSByZXF1" + + "ZXN0IHJvdXRlciB3aGVuIGBsbG0uZW5hYmxlZD10cnVlYCB8CnwgYG5hbWU9bGxtLWFwaS1nYXRl" + + "d2F5YCB8IERlcGxveSBqdXN0IHRoZSBMTE0gQVBJIGdhdGV3YXkgd2hlbiBgbGxtLmVuYWJsZWQ9" + + "dHJ1ZWAgfAp8IGBuYW1lPXZhbml0eS1nYXRld2F5YCB8IERlcGxveSBqdXN0IFZhbml0eSBHYXRl" + + "d2F5IG9ubHkgd2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0IHJlbGVhc2UgYW5k" + + "IGBhZGRvbnMudmFuaXR5R2F0ZXdheS5lbmFibGVkPXRydWVgIHwKfCBgbmFtZT1udmNmLXVpYCB8" + + "IERlcGxveSBOVkNGIFVJIG9ubHkgd2hlbiB0aGUgc3RhY2sgcGFja2FnZSBpbmNsdWRlcyB0aGF0" + + "IHJlbGVhc2UgYW5kIGBhZGRvbnMubnZjZlVpLmVuYWJsZWQ9dHJ1ZWAgfAp8IGByZWxlYXNlLWdy" + + "b3VwPWluZ3Jlc3NgIHwgaW5ncmVzcyAoZ2F0ZXdheSByb3V0ZXMpIHwKfCBgbmFtZT08cmVsZWFz" + + "ZT5gIHwgQW55IGluZGl2aWR1YWwgcmVsZWFzZSBieSBuYW1lIHwKCk5vdGU6IGBhZG1pbi1pc3N1" + + "ZXItcHJveHlgIGRvZXMgbm90IGhhdmUgYSByZWxlYXNlLWdyb3VwIGxhYmVsLiBUYXJnZXQgaXQg" + + "d2l0aCBgLS1zZWxlY3RvciBuYW1lPWFkbWluLWlzc3Vlci1wcm94eWAuClBLBwgCUk5AfygAAH8o" + + "AABQSwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAEwACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWlu" + + "c3RhbGxhdGlvbi9yZWZlcmVuY2VzL2NvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kVVQFAAEA" + + "ps4SIyBTcGxpdCBDb21wdXRlLVBsYW5lIEluc3RhbGxhdGlvbgoKVGhlIGNvbnRyb2wgcGxhbmUg" + + "YW5kIGNvbXB1dGUgcGxhbmUgYXJlIHNlcGFyYXRlIHN0YWNrcy4gSW5zdGFsbCB0aGUgY29udHJv" + + "bApwbGFuZSBmaXJzdCwgdGhlbiByZWdpc3RlciBhbmQgaW5zdGFsbCBlYWNoIGNvbXB1dGUgY2x1" + + "c3Rlci4gQ2hvb3NlIG9uZSBoYW5kb2ZmCmJlbG93IGFuZCB1c2UgaXQgZm9yIHRoZSBmdWxsIGxp" + + "ZmVjeWNsZS4gRG8gbm90IGNvbWJpbmUgYSBDTEktZ2VuZXJhdGVkIHByb2ZpbGUKd2l0aCB0aGUg" + + "SGVsbWZpbGUgdmFsdWVzIGZsb3cuCgojIyBDaG9vc2UgYSBIYW5kb2ZmCgp8IEZsb3cgfCBTb3Vy" + + "Y2Ugb2YgY29udHJvbC1wbGFuZSBlbmRwb2ludHMgfCBSZWdpc3RyYXRpb24gYXJ0aWZhY3QgfAp8" + + "LS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0t" + + "LS0tLS0tLS0tfAp8IEhlbG1maWxlIHZhbHVlcyB8IFNlcGFyYXRlIGNvbnRyb2wtcGxhbmUgYW5k" + + "IGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZXMgfCBgZGVwbG95L3N0YWNrcy9udmNmLWNv" + + "bXB1dGUtcGxhbmUvcmVnaXN0cmF0aW9uLzxjbHVzdGVyPi1yZWdpc3Rlci12YWx1ZXMueWFtbGAg" + + "fAp8IENMSSBwcm9maWxlIHwgQ0xJLWdlbmVyYXRlZCBgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFn" + + "ZWQvb3V0L2NvbnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sYCB8IENMSS1nZW5lcmF0ZWQgYGRlcGxv" + + "eS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88Y2x1c3Rlcj4tcmVnaXN0ZXItdmFsdWVz" + + "LnlhbWxgIHwKClRoZSBDTEkgcHJvZmlsZSBpcyBtYW5kYXRvcnkgZm9yIHRoZSBDTEkgZmxvdyBh" + + "bmQgbXVzdCBub3QgYmUgaGFuZC1hdXRob3JlZC4KVGhlIEhlbG1maWxlIGZsb3cgZG9lcyBub3Qg" + + "Y29uc3VtZSBhIGNvbnRyb2wtcGxhbmUgcHJvZmlsZS4KCkNvbW1hbmRzIGJlbG93IHVzZSBtb25v" + + "cmVwbyBwYXRocyBmcm9tIHRoZSByZXBvc2l0b3J5IHJvb3QuIE9wZXJhdG9ycyB1c2luZwpleHRy" + + "YWN0ZWQgcGFja2FnZXMgbmVlZCBtYXRjaGluZy12ZXJzaW9uIGBudmNmLXNlbGYtbWFuYWdlZC1z" + + "dGFja2AgYW5kCmBudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2tgIGJ1bmRsZXMuIFN1YnN0aXR1dGUg" + + "dGhvc2UgYnVuZGxlIHJvb3RzIGZvcgpgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWRgIGFuZCBg" + + "ZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmVgLgoKIyMgSGVsbWZpbGUgVmFsdWVzIEZs" + + "b3cKCkNyZWF0ZSBib3RoIGVudmlyb25tZW50IGZpbGVzIGJlZm9yZSBpbnN0YWxsYXRpb246Cgot" + + "IGBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9lbnZpcm9ubWVudHMvPGVudj4ueWFtbGAgZm9y" + + "IGNvbnRyb2wtcGxhbmUKICByZWdpc3RyeSwgZG9tYWluLCBHYXRld2F5LCByb3V0ZXMsIGFuZCBz" + + "ZXJ2aWNlIHNldHRpbmdzLgotIGBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZp" + + "cm9ubWVudHMvPGVudj4ueWFtbGAgZm9yIGNvbXB1dGUtcGxhbmUKICByZWdpc3RyeSwgcHVsbCBz" + + "ZWNyZXRzLCBhbmQgY29tcHV0ZS1yZWFjaGFibGUgSUNNUywgUmVWYWwsIGFuZCBOQVRTIHZhbHVl" + + "cy4KCkZvciBFS1MsIHVzZSB0aGUgY2Fub25pY2FsCltDU1AgRW5kLXRvLUVuZCBFeGFtcGxlXSho" + + "dHRwczovL2RvY3MubnZpZGlhLmNvbS9udmNmL3YwLjYuMC1yYy9jc3AtZW5kLXRvLWVuZC1leGFt" + + "cGxlKS4KVGhlIGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQga2VlcHMgdGhlIEVudm95IEdhdGV3" + + "YXkgY29udHJvbGxlciBpbgpgZW52b3ktZ2F0ZXdheS1zeXN0ZW1gLCBhdHRhY2hlcyByb3V0ZXMg" + + "dG8gYEdhdGV3YXkvbnZjZi1nYXRld2F5YCBpbgpgZW52b3ktZ2F0ZXdheWAsIGFuZCBlbmFibGVz" + + "IHRoZSBOQVRTIHJvdXRlLiBUaGUgY29tcHV0ZS1wbGFuZSBlbnZpcm9ubWVudCB1c2VzCnRoZSBl" + + "eHRlcm5hbCBhZGRyZXNzIHBsdXMgdGhlIHNlcnZpY2UgaG9zdCBvdmVycmlkZXMuIEhlcmUsCmA8" + + "Z2F0ZXdheS1hZGRyZXNzPmAgaXMgdGhlIE5MQiBhZGRyZXNzIGFuZCBgPGdhdGV3YXktZG9tYWlu" + + "PmAgaXMgdGhlIEROUyBiYXNlCndob3NlIHNlcnZpY2Ugc3ViZG9tYWlucyByZXNvbHZlIHRvIHRo" + + "YXQgTkxCOgoKYGBgeWFtbAojIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkL2Vudmlyb25tZW50" + + "cy88ZW52Pi55YW1sCmdsb2JhbDoKICBkb21haW46ICI8Z2F0ZXdheS1kb21haW4+IgogIHdvcmtl" + + "ckVuZHBvaW50czoKICAgIG52Y2ZTZXJ2aWNlVVJMOiAiaHR0cDovL2FwaS48Z2F0ZXdheS1kb21h" + + "aW4+IgogICAgbnZjZkdycGNTZXJ2aWNlVVJMOiAiaHR0cDovL3dvcmtlci1hcGkuPGdhdGV3YXkt" + + "ZG9tYWluPiIKICAgIG52Y2ZOYXRzU2VydmljZVVSTDogIm5hdHM6Ly88Z2F0ZXdheS1hZGRyZXNz" + + "Pjo0MjIyIgogICAgbnZjdFNlcnZpY2VVUkw6ICJodHRwOi8vdGFza3MuPGdhdGV3YXktZG9tYWlu" + + "PiIKICAgIG52Y3RHcnBjU2VydmljZVVSTDogImh0dHA6Ly93b3JrZXItdGFza3MuPGdhdGV3YXkt" + + "ZG9tYWluPiIKICAgIGludm9jYXRpb25TZXJ2aWNlVVJMOiAiaHR0cDovL2ludm9jYXRpb24uPGdh" + + "dGV3YXktZG9tYWluPiIKCmdycGNwcm94eToKICBudmNmR3JwY1NlcnZpY2VVUkw6ICJodHRwOi8v" + + "YXBpLm52Y2Yuc3ZjLmNsdXN0ZXIubG9jYWw6OTA5MCIKCmluZ3Jlc3M6CiAgZ2F0ZXdheUFwaToK" + + "ICAgIGNvbnRyb2xsZXJOYW1lc3BhY2U6IGVudm95LWdhdGV3YXktc3lzdGVtCiAgICBnYXRld2F5" + + "czoKICAgICAgc2hhcmVkOiB7bmFtZTogbnZjZi1nYXRld2F5LCBuYW1lc3BhY2U6IGVudm95LWdh" + + "dGV3YXl9CiAgICAgIGdycGM6IHtuYW1lOiBudmNmLWdhdGV3YXksIG5hbWVzcGFjZTogZW52b3kt" + + "Z2F0ZXdheX0KICAgICAgbmF0czoKICAgICAgICBuYW1lOiBudmNmLWdhdGV3YXkKICAgICAgICBu" + + "YW1lc3BhY2U6IGVudm95LWdhdGV3YXkKICAgICAgICBsaXN0ZW5lck5hbWU6IG5hdHMKICAgIHJv" + + "dXRlczoKICAgICAgbnZjZkFwaToKICAgICAgICBncnBjOgogICAgICAgICAgZW5hYmxlZDogdHJ1" + + "ZQogICAgICAgICAgaG9zdG5hbWVzOiBbIndvcmtlci1hcGkuPGdhdGV3YXktZG9tYWluPiJdCiAg" + + "ICAgIG52Y3RBcGk6CiAgICAgICAgZ3JwYzoKICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAg" + + "ICAgIGhvc3RuYW1lczogWyJ3b3JrZXItdGFza3MuPGdhdGV3YXktZG9tYWluPiJdCiAgICAgIG5h" + + "dHM6CiAgICAgICAgZW5hYmxlZDogdHJ1ZQoKb3BlbmJhbzoKICBtaWdyYXRpb25zOgogICAgaXNz" + + "dWVyRGlzY292ZXJ5OgogICAgICBlbmFibGVkOiB0cnVlCmBgYAoKYGBgeWFtbAojIGRlcGxveS9z" + + "dGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL2Vudmlyb25tZW50cy88ZW52Pi55YW1sCmdsb2JhbDoK" + + "ICBudmNhT3BlcmF0b3I6CiAgICBzZWxmTWFuYWdlZDoKICAgICAgaWNtc1NlcnZpY2VVUkw6ICJo" + + "dHRwOi8vPGdhdGV3YXktYWRkcmVzcz4iCiAgICAgIGljbXNTZXJ2aWNlSG9zdEhlYWRlck92ZXJy" + + "aWRlOiAic2lzLjxnYXRld2F5LWRvbWFpbj4iCiAgICAgIHJldmFsU2VydmljZVVSTDogImh0dHA6" + + "Ly88Z2F0ZXdheS1hZGRyZXNzPiIKICAgICAgcmV2YWxTZXJ2aWNlSG9zdEhlYWRlck92ZXJyaWRl" + + "OiAicmV2YWwuPGdhdGV3YXktZG9tYWluPiIKICAgICAgbmF0c1VSTDogIm5hdHM6Ly88Z2F0ZXdh" + + "eS1hZGRyZXNzPjo0MjIyIgogICAgICBuYXRzSG9zdE92ZXJyaWRlOiAibmF0cy48Z2F0ZXdheS1k" + + "b21haW4+IgpgYGAKClByZXZpZXcgYW5kIGluc3RhbGwgdGhlIGNvbnRyb2wgcGxhbmUgYWdhaW5z" + + "dCBpdHMgY29udGV4dDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdl" + + "ZCB0ZW1wbGF0ZSBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNv" + + "bnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFn" + + "ZWQgaW5zdGFsbCBcCiAgSEVMTUZJTEVfRU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNv" + + "bnRyb2wtcGxhbmUta3ViZWNvbmZpZz4KYGBgCgpCZWZvcmUgcmVnaXN0ZXJpbmcgdGhyb3VnaCBh" + + "IGJhcmUgR2F0ZXdheSBhZGRyZXNzLCBjcmVhdGUgb3IgdXBkYXRlIHRoZSBDTEkKY29uZmlnIHBh" + + "c3NlZCBhcyBgTlZDRl9DTElfQ09ORklHYDoKCmBgYHlhbWwKYmFzZV9odHRwX3VybDogImh0dHA6" + + "Ly88Z2F0ZXdheS1hZGRyZXNzPiIKaW52b2tlX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNz" + + "PiIKYmFzZV9ncnBjX3VybDogIjxnYXRld2F5LWFkZHJlc3M+OjEwMDgxIgphcGlfa2V5c19zZXJ2" + + "aWNlX3VybDogImh0dHA6Ly88Z2F0ZXdheS1hZGRyZXNzPiIKaWNtc191cmw6ICJodHRwOi8vPGdh" + + "dGV3YXktYWRkcmVzcz4iCmFwaV9ob3N0OiAiYXBpLjxnYXRld2F5LWRvbWFpbj4iCmFwaV9rZXlz" + + "X2hvc3Q6ICJhcGkta2V5cy48Z2F0ZXdheS1kb21haW4+IgppbnZva2VfaG9zdDogImludm9jYXRp" + + "b24uPGdhdGV3YXktZG9tYWluPiIKaWNtc19ob3N0OiAic2lzLjxnYXRld2F5LWRvbWFpbj4iCmBg" + + "YAoKSG9zdCBmaWVsZHMgY29udGFpbiBob3N0bmFtZXMgb25seSwgd2l0aG91dCBhIFVSTCBzY2hl" + + "bWUuIGBJQ01TX1VSTGAgbWFwcyBvbmx5CnRvIHRoZSByZWdpc3RyYXRpb24gY29tbWFuZCdzIGAt" + + "LWljbXMtdXJsYDsgYGljbXNfaG9zdGAgaW4gdGhlIGNvbmZpZyBzdXBwbGllcwp0aGUgR2F0ZXdh" + + "eSBIb3N0IGhlYWRlci4gVGhlcmUgaXMgbm8gYC0taWNtcy1ob3N0YCBNYWtlIG9yIENMSSBmbGFn" + + "LgoKUmVnaXN0ZXIgZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0LCB0aGVuIGluc3RhbGwgdGhlIGNv" + + "bXB1dGUgcGxhbmU6CgpgYGBiYXNoCm1ha2UgLUMgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUt" + + "cGxhbmUgcmVnaXN0ZXItY2x1c3RlciBcCiAgQ0xVU1RFUl9OQU1FPTxjbHVzdGVyLW5hbWU+IFwK" + + "ICBOQ0FfSUQ9PG5jYS1pZD4gXAogIENMVVNURVJfUkVHSU9OPTxyZWdpb24+IFwKICBJQ01TX1VS" + + "TD1odHRwOi8vPGdhdGV3YXktYWRkcmVzcz4gXAogIEtVQkVDT05GSUdfRklMRT08Y29tcHV0ZS1w" + + "bGFuZS1rdWJlY29uZmlnPiBcCiAgTlZDRl9DTEk9PHBhdGgtdG8tbnZjZi1jbGk+IFwKICBOVkNG" + + "X0NMSV9DT05GSUc9PHBhdGgtdG8tbnZjZi1jbGktY29uZmlnPgoKbWFrZSAtQyBkZXBsb3kvc3Rh" + + "Y2tzL252Y2YtY29tcHV0ZS1wbGFuZSBpbnN0YWxsIFwKICBDTFVTVEVSX05BTUU9PGNsdXN0ZXIt" + + "bmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxjb21wdXRl" + + "LXBsYW5lLWt1YmVjb25maWc+CmBgYAoKUmVnaXN0cmF0aW9uIGRpc2NvdmVycyB0aGUgT0lEQyBp" + + "c3N1ZXIgYW5kIEpXS1MgZnJvbSB0aGUgY29tcHV0ZSBrdWJlIGNvbnRleHQuCkluIGEgbXVsdGkt" + + "Y2x1c3RlciBkZXBsb3ltZW50LCBgS1VCRUNPTkZJR19GSUxFYCBpcyByZXF1aXJlZCBvbiBib3Ro" + + "CmNvbXB1dGUtcGxhbmUgY29tbWFuZHMuIEluIGEgc2FtZS1jbHVzdGVyIGRlcGxveW1lbnQgaXQg" + + "bWF5IGJlIG9taXR0ZWQgb25seQp3aGVuIHRoZSBhbWJpZW50IGNvbnRleHQgaXMgYWxyZWFkeSB0" + + "aGUgdGFyZ2V0IGNsdXN0ZXIuCgojIyBDTEkgUHJvZmlsZSBGbG93CgpSdW4gdGhlIENMSSBjb250" + + "cm9sLXBsYW5lIGluc3RhbGwgZmlyc3QuIEl0IGNyZWF0ZXMgdGhlIHByb2ZpbGUgY29uc3VtZWQg" + + "YnkKY29tcHV0ZS1wbGFuZSByZWdpc3RyYXRpb246CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmln" + + "IDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAtLWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0" + + "YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29tcHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tz" + + "L252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1lbnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29u" + + "dHJvbC1wbGFuZS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUt" + + "cGxhbmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBcCiAgaW5zdGFsbCAtLWNvbnRy" + + "b2wtcGxhbmUgXAogIC0tY2x1c3Rlci1uYW1lIDxjb250cm9sLXBsYW5lLWNsdXN0ZXItbmFtZT4g" + + "XAogIC0tcmVnaW9uIDxyZWdpb24+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKdGVzdCAtcyBkZXBs" + + "b3kvc3RhY2tzL3NlbGYtbWFuYWdlZC9vdXQvY29udHJvbC1wbGFuZS1wcm9maWxlLnlhbWwKYGBg" + + "CgpVc2UgdGhlIGZ1bGwgcGVyc2lzdGVudCBwcmVmaXggZm9yIGJvdGggY29tcHV0ZS1wbGFuZSBj" + + "b21tYW5kczoKCmBgYGJhc2gKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQg" + + "XAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAg" + + "LS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwK" + + "ICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgY29tcHV0ZS1wbGFuZSByZWdpc3RlciBcCiAg" + + "LS1jb250cm9sLXBsYW5lLXByb2ZpbGUgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQvb3V0L2Nv" + + "bnRyb2wtcGxhbmUtcHJvZmlsZS55YW1sIFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFu" + + "ZS1jbHVzdGVyLW5hbWU+IFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0" + + "PiBcCiAgLS1yZWdpb24gPHJlZ2lvbj4gXAogIC0tb3V0cHV0IGRlcGxveS9zdGFja3MvbnZjZi1j" + + "b21wdXRlLXBsYW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVzdGVyLW5hbWU+LXJlZ2lzdGVyLXZh" + + "bHVlcy55YW1sCgpudmNmLWNsaSAtLWNvbmZpZyA8Y29uZmlnPiBzZWxmLWhvc3RlZCBcCiAgLS1j" + + "b250cm9sLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3Mvc2VsZi1tYW5hZ2VkIFwKICAtLWNvbXB1" + + "dGUtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUgXAogIC0tZW52" + + "IDxlbnY+IFwKICAtLXBsYWluIFwKICBjb21wdXRlLXBsYW5lIGluc3RhbGwgXAogIC0tdmFsdWVz" + + "IGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lL291dC88Y29tcHV0ZS1wbGFuZS1jbHVz" + + "dGVyLW5hbWU+LXJlZ2lzdGVyLXZhbHVlcy55YW1sIFwKICAtLWt1YmUtY29udGV4dCA8Y29tcHV0" + + "ZS1wbGFuZS1jb250ZXh0PiBcCiAgLS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rl" + + "ci1uYW1lPgpgYGAKClJlZ2lzdHJhdGlvbiBzZWxlY3RzIHRoZSBwcm9maWxlJ3MgaW4tY2x1c3Rl" + + "ciBvciBjb21wdXRlLXJlYWNoYWJsZSBlbmRwb2ludHMKZnJvbSB0aGUgY29tcHV0ZSBjb250ZXh0" + + "IGFuZCBwcm9iZXMgaXRzIEpXS1MuIERvIG5vdCByZXBsYWNlIHByb2ZpbGUgZW5kcG9pbnRzCndp" + + "dGggaGFuZC1hdXRob3JlZCBIZWxtZmlsZSBlbmRwb2ludCB2YWx1ZXMuCgojIyBQdWxsIFNlY3Jl" + + "dHMKCkNyZWF0ZSB0aGUgY29udHJvbC1wbGFuZSBzZWNyZXQgaW4gdGhlc2UgbmFtZXNwYWNlcyBv" + + "biB0aGUgY29udHJvbC1wbGFuZQpjb250ZXh0OgoKYGBgdGV4dApjYXNzYW5kcmEtc3lzdGVtIG5h" + + "dHMtc3lzdGVtIG52Y2YgYXBpLWtleXMgZXNzIHNpcyB2YXVsdC1zeXN0ZW0gY2VydC1tYW5hZ2Vy" + + "CmBgYAoKT24gdGhlIGNvbXB1dGUgY29udGV4dCwgY3JlYXRlIHRoZSBzZWNyZXQgb25seSBpbiBg" + + "bnZjYS1vcGVyYXRvcmAgYW5kIHJlZmVyZW5jZQppdCB0aHJvdWdoIGBnbG9iYWwuaW1hZ2VQdWxs" + + "U2VjcmV0c2AgaW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQuIFRoZSBjaGFydAphbmQg" + + "b3BlcmF0b3IgdXNlIGl0IGluIGBudmNhLW9wZXJhdG9yYCBhbmQgbWlycm9yIGl0IHRvIGBudmNh" + + "LXN5c3RlbWAuIERvIG5vdCBhZGQKZWl0aGVyIG5hbWVzcGFjZSB0byB0aGUgY29udHJvbC1wbGFu" + + "ZSBsaXN0LiBGb3IgY29tbWFuZHMgYW5kIHBvbGljeSBleGFtcGxlcywKc2VlIFtwdWxsLXNlY3Jl" + + "dHMubWRdKHB1bGwtc2VjcmV0cy5tZCkuCgojIyBWZXJpZmljYXRpb24KClVzZSB0aGUgZXhwbGlj" + + "aXQgR2F0ZXdheSBuYW1lIGFuZCBuYW1lc3BhY2U6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0" + + "IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdldCBnYXRld2F5IG52Y2YtZ2F0ZXdheSBcCiAgLW4g" + + "ZW52b3ktZ2F0ZXdheSAtbyB3aWRlCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNv" + + "bnRleHQ+IGdldCB0Y3Byb3V0ZSAtbiBlbnZveS1nYXRld2F5Cmt1YmVjdGwgLS1jb250ZXh0IDxj" + + "b21wdXRlLXBsYW5lLWNvbnRleHQ+IHJvbGxvdXQgc3RhdHVzIFwKICBkZXBsb3ltZW50L252Y2Et" + + "b3BlcmF0b3IgLW4gbnZjYS1vcGVyYXRvciAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250ZXh0" + + "IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IHdhaXQgXAogIG52Y2ZiYWNrZW5kLzxjb21wdXRlLXBs" + + "YW5lLWNsdXN0ZXItbmFtZT4gLW4gbnZjYS1vcGVyYXRvciBcCiAgLS1mb3I9anNvbnBhdGg9J3su" + + "c3RhdHVzLmFnZW50U3RhdHVzfSc9aGVhbHRoeSAtLXRpbWVvdXQ9MTBtCmt1YmVjdGwgLS1jb250" + + "ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGdldCBzZWNyZXQgPHB1bGwtc2VjcmV0PiAtbiBu" + + "dmNhLXN5c3RlbQpgYGAKCiMjIFRlYXJkb3duCgpEZXN0cm95IGFuZCBkZXJlZ2lzdGVyIGV2ZXJ5" + + "IGNvbXB1dGUgcGxhbmUgYmVmb3JlIHRoZSBjb250cm9sIHBsYW5lLiBCb3RoCmhhbmRvZmZzIGNh" + + "biBkZXN0cm95IHRoZSBjb250cm9sIHBsYW5lLCBzbyBhcHBseSB0aGlzIHByZWZsaWdodCBiZWZv" + + "cmUgZWl0aGVyCm9uZS4gUHJlc2VydmUgdGhlIGBjZXJ0LW1hbmFnZXJgIG5hbWVzcGFjZSBieSBk" + + "ZWZhdWx0LiBOYW1lc3BhY2UgcHJlc2VydmF0aW9uCmRvZXMgbm90IHByZXNlcnZlIHRoZSBIZWxt" + + "IHJlbGVhc2UuIElkZW50aWZ5IHdoZXRoZXIgY2VydC1tYW5hZ2VyIGlzIGV4dGVybmFsLgpGb3Ig" + + "YW4gZXh0ZXJuYWwgaW5zdGFsbGF0aW9uLCByZXF1aXJlIGVmZmVjdGl2ZSBgY2VydE1hbmFnZXIu" + + "ZW5hYmxlZDogZmFsc2VgCmFuZCBhYm9ydCBpZiBpdCBpcyB0cnVlLiBGb3IgYW4gaW50ZW5kZWQg" + + "c3RhY2stbWFuYWdlZCByZWxlYXNlIHdpdGggZWZmZWN0aXZlCmBjZXJ0TWFuYWdlci5lbmFibGVk" + + "OiB0cnVlYCwgdmVyaWZ5IG1hdGNoaW5nIHN0YWNrIEhlbG0gcmVsZWFzZSBtZXRhZGF0YSBhbmQK" + + "YWJvcnQgb24gbWlzc2luZyBvciBtaXNtYXRjaGVkIGV2aWRlbmNlLiBPbmx5IHBsYW4gbmFtZXNw" + + "YWNlIHJlbW92YWwgYWZ0ZXIKdmVyaWZ5aW5nIG5hbWVzcGFjZSBwcm92ZW5hbmNlIGFuZCBnZXR0" + + "aW5nIGV4cGxpY2l0IGNvbmZpcm1hdGlvbjsgb3RoZXJ3aXNlCmRvIG5vdCBkZWxldGUgaXQuCgpG" + + "b3IgdGhlIEhlbG1maWxlIHZhbHVlcyBmbG93LCByZXRhaW4gZWFjaCByZWdpc3RyYXRpb24gdmFs" + + "dWVzIGZpbGUgdW50aWwKY2xlYW51cCBpcyB2ZXJpZmllZDoKCmBgYGJhc2gKbWFrZSAtQyBkZXBs" + + "b3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBkZXN0cm95IFwKICBDTFVTVEVSX05BTUU9PGNs" + + "dXN0ZXItbmFtZT4gXAogIEhFTE1GSUxFX0VOVj08ZW52PiBcCiAgS1VCRUNPTkZJR19GSUxFPTxj" + + "b21wdXRlLXBsYW5lLWt1YmVjb25maWc+Cgo8bnZjZi1jbGk+IC0tY29uZmlnIDxjb25maWc+IGNs" + + "dXN0ZXIgZGVsZXRlIFwKICAtLWNsdXN0ZXItaWQgPGNsdXN0ZXItaWQtZnJvbS1yZWdpc3RyYXRp" + + "b24tdmFsdWVzPiBcCiAgLS1uY2EtaWQgPG5jYS1pZD4gXAogIC0taWdub3JlLW1pc3NpbmcKYGBg" + + "CgpSZWFkIGBjbHVzdGVySURgIGFuZCBgbmNhSURgIGZyb20KYGRlcGxveS9zdGFja3MvbnZjZi1j" + + "b21wdXRlLXBsYW5lL3JlZ2lzdHJhdGlvbi88Y2x1c3Rlci1uYW1lPi1yZWdpc3Rlci12YWx1ZXMu" + + "eWFtbGAuClNob3cgdGhlIGV4YWN0IGNsdXN0ZXIgSUQgYW5kIGdldCBjb25maXJtYXRpb24gYmVm" + + "b3JlIGBjbHVzdGVyIGRlbGV0ZWAuIFJlcGVhdApjb21wdXRlIGRlc3Ryb3kgYW5kIGRlcmVnaXN0" + + "cmF0aW9uIGZvciBldmVyeSBjb21wdXRlIGNsdXN0ZXIsIHRoZW4gZGVzdHJveSB0aGUKY29udHJv" + + "bCBwbGFuZS4KCmBgYGJhc2gKS1VCRUNPTkZJRz08Y29udHJvbC1wbGFuZS1rdWJlY29uZmlnPiBc" + + "Cm1ha2UgLUMgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgZGVzdHJveSBcCiAgSEVMTUZJTEVf" + + "RU5WPTxlbnY+IFwKICBLVUJFQ09ORklHX0ZJTEU9PGNvbnRyb2wtcGxhbmUta3ViZWNvbmZpZz4K" + + "YGBgCgpCb3RoIGBLVUJFQ09ORklHYCBhbmQgYEtVQkVDT05GSUdfRklMRWAgYXJlIHJlcXVpcmVk" + + "IG9uIHRoZSBjb250cm9sLXBsYW5lCmRlc3Ryb3kgYmVjYXVzZSBpdHMgbmFtZXNwYWNlIGNsZWFu" + + "dXAgdXNlcyBhbWJpZW50IGBrdWJlY3RsYC4KCkZvciB0aGUgQ0xJIHByb2ZpbGUgZmxvdywga2Vl" + + "cApgZGVwbG95L3N0YWNrcy9udmNmLWNvbXB1dGUtcGxhbmUvb3V0LzxjbHVzdGVyLW5hbWU+LXJl" + + "Z2lzdGVyLXZhbHVlcy55YW1sYAp1bnRpbCB0ZWFyZG93biBjb21wbGV0ZXMgYmVjYXVzZSBgZG93" + + "bmAgcmVhZHMgaXRzIGNsdXN0ZXIgSUQuIEZpcnN0IHF1ZXJ5IHRoZQpsaXZlIHJlZ2lzdHJhdGlv" + + "biBzZXQgd2l0aCB0aGUgc2FtZSBjb21wbGV0ZSBwZXJzaXN0ZW50IHByZWZpeDoKCmBgYGJhc2gK" + + "bnZjZi1jbGkgLS1jb25maWcgPGNvbmZpZz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFu" + + "ZS1zdGFjayBkZXBsb3kvc3RhY2tzL3NlbGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0" + + "YWNrIGRlcGxveS9zdGFja3MvbnZjZi1jb21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAg" + + "LS1wbGFpbiBcCiAgLS1jb250cm9sLXBsYW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4" + + "dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwK" + + "ICAtLWljbXMtdXJsIDxjb21wdXRlLXJlYWNoYWJsZS1pY21zLXVybD4gXAogIHN0YXR1cyBcCiAg" + + "LS1jbHVzdGVyLW5hbWUgPGNvbXB1dGUtcGxhbmUtY2x1c3Rlci1uYW1lPiBcCiAgLS1uY2EtaWQg" + + "PG5jYS1pZD4KYGBgCgpTaG93IHRoZSByZWdpc3RlcmVkIGNvbXB1dGUtcGxhbmUgbGlzdC4gTmFt" + + "ZWQtY2x1c3RlciBgZG93biAtLXBsYW4tb25seWAgZG9lcwpub3QgcXVlcnkgSUNNUywgc28gaXQg" + + "cHJldmlld3Mgb25seSB0aGF0IGNvbXB1dGUgcGxhbmUgYW5kIGNhbm5vdCBzaG93IHRoZQpjb25k" + + "aXRpb25hbCBjb250cm9sLXBsYW5lIHJlbW92YWwuIElmIHRoZSB0YXJnZXQgaXMgdGhlIGxhc3Qg" + + "cmVnaXN0ZXJlZApjbHVzdGVyLCByZWFsIGBkb3duYCBhbHNvIGRlc3Ryb3lzIHRoZSBjb250cm9s" + + "IHBsYW5lLiBHZXQgZXhwbGljaXQgY29uZmlybWF0aW9uCmZvciBib3RoIHJlbW92YWxzIGJlZm9y" + + "ZSBjb250aW51aW5nLiBUaGVuIHByZXZpZXcgYW5kIGV4ZWN1dGUgd2l0aCB0aGUgc2FtZQpwcmVm" + + "aXg6CgpgYGBiYXNoCm52Y2YtY2xpIC0tY29uZmlnIDxjb25maWc+IHNlbGYtaG9zdGVkIFwKICAt" + + "LWNvbnRyb2wtcGxhbmUtc3RhY2sgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQgXAogIC0tY29t" + + "cHV0ZS1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZSBcCiAgLS1l" + + "bnYgPGVudj4gXAogIC0tcGxhaW4gXAogIC0tY29udHJvbC1wbGFuZS1jb250ZXh0IDxjb250cm9s" + + "LXBsYW5lLWNvbnRleHQ+IFwKICAtLWNvbXB1dGUtcGxhbmUtY29udGV4dCA8Y29tcHV0ZS1wbGFu" + + "ZS1jb250ZXh0PiBcCiAgLS1pY21zLXVybCA8Y29tcHV0ZS1yZWFjaGFibGUtaWNtcy11cmw+IFwK" + + "ICBkb3duIC0tcGxhbi1vbmx5IFwKICAtLWNsdXN0ZXItbmFtZSA8Y29tcHV0ZS1wbGFuZS1jbHVz" + + "dGVyLW5hbWU+IFwKICAtLW5jYS1pZCA8bmNhLWlkPgoKbnZjZi1jbGkgLS1jb25maWcgPGNvbmZp" + + "Zz4gc2VsZi1ob3N0ZWQgXAogIC0tY29udHJvbC1wbGFuZS1zdGFjayBkZXBsb3kvc3RhY2tzL3Nl" + + "bGYtbWFuYWdlZCBcCiAgLS1jb21wdXRlLXBsYW5lLXN0YWNrIGRlcGxveS9zdGFja3MvbnZjZi1j" + + "b21wdXRlLXBsYW5lIFwKICAtLWVudiA8ZW52PiBcCiAgLS1wbGFpbiBcCiAgLS1jb250cm9sLXBs" + + "YW5lLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gXAogIC0tY29tcHV0ZS1wbGFuZS1j" + + "b250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IFwKICAtLWljbXMtdXJsIDxjb21wdXRlLXJl" + + "YWNoYWJsZS1pY21zLXVybD4gXAogIGRvd24gXAogIC0tY2x1c3Rlci1uYW1lIDxjb21wdXRlLXBs" + + "YW5lLWNsdXN0ZXItbmFtZT4gXAogIC0tbmNhLWlkIDxuY2EtaWQ+CmBgYAoKUmVwZWF0IGBkb3du" + + "YCBmb3IgZWFjaCBjb21wdXRlIGNsdXN0ZXIuIEVhY2ggcnVuIGRlc3Ryb3lzIHRoYXQgY29tcHV0" + + "ZSBwbGFuZSBhbmQKdW5yZWdpc3RlcnMgaXRzIElDTVMgcm93LiBJdCByZW1vdmVzIHRoZSBjb250" + + "cm9sIHBsYW5lIG9ubHkgYWZ0ZXIgbm8gY2x1c3RlcgpyZWdpc3RyYXRpb25zIHJlbWFpbi4KUEsH" + + "CJZjvFkSMAAAEjAAAFBLAwQUAAgAAAAAACEAAAAAAAAAAAAAAAAAOwAJAGRhdGEvbnZjZi1zZWxm" + + "LW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvZGVidWdnaW5nLm1kVVQFAAEAps4SIyBE" + + "ZWJ1Z2dpbmcgUmVmZXJlbmNlCgpSZWNpcGVzIGZvciBkaWFnbm9zaW5nIGFuZCBmaXhpbmcgY29t" + + "bW9uIE5WQ0Ygc2VsZi1tYW5hZ2VkIHN0YWNrIGZhaWx1cmVzLgoKIyMgUXVpY2sgU3RhdHVzIENv" + + "bW1hbmRzCgpgYGBiYXNoCiMgQWxsIHBvZHMgYWNyb3NzIGFsbCBuYW1lc3BhY2VzCmt1YmVjdGwg" + + "Z2V0IHBvZHMgLUEgLW8gd2lkZQoKIyBQb2RzIGluIGEgc3BlY2lmaWMgbmFtZXNwYWNlCmt1YmVj" + + "dGwgZ2V0IHBvZHMgLW4gPG5hbWVzcGFjZT4KCiMgQWxsIGhlbG0gcmVsZWFzZXMKaGVsbSBsaXN0" + + "IC1BCgojIFJlY2VudCBldmVudHMgKG1vc3QgdXNlZnVsIGZvciBkaWFnbm9zaW5nIGZhaWx1cmVz" + + "KQprdWJlY3RsIGdldCBldmVudHMgLW4gPG5hbWVzcGFjZT4gLS1zb3J0LWJ5PScubGFzdFRpbWVz" + + "dGFtcCcKCiMgRGVzY3JpYmUgYSBzcGVjaWZpYyBwb2QgKHNob3dzIGV2ZW50cywgY29uZGl0aW9u" + + "cywgdm9sdW1lcykKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1l" + + "PgpgYGAKCiMjIEZhaWx1cmU6IEltYWdlUHVsbEJhY2tPZmYKCiMjIyBTeW1wdG9tcwoKYGBgdGV4" + + "dApOQU1FICAgICAgICAgICBSRUFEWSAgIFNUQVRVUyAgICAgICAgICAgICBSRVNUQVJUUyAgIEFH" + + "RQpjYXNzYW5kcmEtMCAgICAwLzEgICAgIEltYWdlUHVsbEJhY2tPZmYgICAwICAgICAgICAgIDVt" + + "CmBgYAoKRXZlbnRzIHNob3c6CgpgYGB0ZXh0CkZhaWxlZCB0byBwdWxsIGltYWdlICJudmNyLmlv" + + "Ly4uLi9pbWFnZTp0YWciOiA0MDEgVW5hdXRob3JpemVkCmBgYAoKIyMjIERpYWdub3NpcwoKYGBg" + + "YmFzaAojIENoZWNrIHdoYXQgaW1hZ2UgaXMgZmFpbGluZwprdWJlY3RsIGRlc2NyaWJlIHBvZCAt" + + "biA8bmFtZXNwYWNlPiA8cG9kLW5hbWU+IHwgZ3JlcCAtQTUgIkV2ZW50czoiCgojIENoZWNrIGlm" + + "IHB1bGwgc2VjcmV0IGV4aXN0cyBpbiB0aGUgbmFtZXNwYWNlCmt1YmVjdGwgZ2V0IHNlY3JldCBu" + + "dmNyLWNyZWRzIC1uIDxuYW1lc3BhY2U+CgojIENoZWNrIGlmIHRoZSBwb2Qgc3BlYyBoYXMgaW1h" + + "Z2VQdWxsU2VjcmV0cwprdWJlY3RsIGdldCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiAt" + + "byBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9JwoKIyBDaGVjayBpZiB0aGUgU2Vy" + + "dmljZUFjY291bnQgaGFzIGltYWdlUHVsbFNlY3JldHMKa3ViZWN0bCBnZXQgc2EgPHNhLW5hbWU+" + + "IC1uIDxuYW1lc3BhY2U+IC1vIGpzb25wYXRoPSd7LmltYWdlUHVsbFNlY3JldHN9JwpgYGAKCiMj" + + "IyBGaXhlcwoKMS4gKipTZWNyZXQgbWlzc2luZyBpbiBuYW1lc3BhY2UqKjogQ3JlYXRlIGl0Cgog" + + "ICBgYGBiYXNoCiAgIGt1YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1j" + + "cmVkcyBcCiAgICAgLS1kb2NrZXItc2VydmVyPW52Y3IuaW8gXAogICAgIC0tZG9ja2VyLXVzZXJu" + + "YW1lPSckb2F1dGh0b2tlbicgXAogICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVki" + + "IFwKICAgICAtLW5hbWVzcGFjZT08bmFtZXNwYWNlPiBcCiAgICAgLS1kcnktcnVuPWNsaWVudCAt" + + "byB5YW1sIHwga3ViZWN0bCBhcHBseSAtZiAtCiAgIGBgYAoKMi4gKipTZWNyZXQgZXhpc3RzIGJ1" + + "dCBwb2QgZG9lc24ndCByZWZlcmVuY2UgaXQqKjogVGhlIGNoYXJ0IG5lZWRzIGBpbWFnZVB1bGxT" + + "ZWNyZXRzYCBjb25maWd1cmVkIHZpYSBoZWxtZmlsZSB2YWx1ZXMuIFNlZSBbcHVsbC1zZWNyZXRz" + + "Lm1kXShwdWxsLXNlY3JldHMubWQpLgoKMy4gKipDaGFydCBkb2Vzbid0IHN1cHBvcnQgaW1hZ2VQ" + + "dWxsU2VjcmV0cyoqIChvcGVuYmFvLCBpbnZvY2F0aW9uLXNlcnZpY2UsIGVzcy1hcGksIG5vdGFy" + + "eS1zZXJ2aWNlKTogUGF0Y2ggU2VydmljZUFjY291bnRzIGFuZCByZXN0YXJ0IHBvZHMuIFNlZSBb" + + "cHVsbC1zZWNyZXRzLm1kXShwdWxsLXNlY3JldHMubWQpLgoKNC4gKipXcm9uZyBjcmVkZW50aWFs" + + "cyBpbiBzZWNyZXQqKjogRGVsZXRlIGFuZCByZWNyZWF0ZQoKICAgYGBgYmFzaAogICBrdWJlY3Rs" + + "IGRlbGV0ZSBzZWNyZXQgbnZjci1jcmVkcyAtbiA8bmFtZXNwYWNlPgogICAjIFJlY3JlYXRlIHdp" + + "dGggY29ycmVjdCBjcmVkZW50aWFscwogICBgYGAKCiMjIEZhaWx1cmU6IEluaXQ6MC8xIFN0dWNr" + + "IChWYXVsdCBBZ2VudCkKCiMjIyBTeW1wdG9tcwoKU2VydmljZSBwb2RzIHN0dWNrIGluIGBJbml0" + + "OjAvMWAgZm9yIG1pbnV0ZXM6CgpgYGBiYXNoCk5BTUUgICAgICAgICAgICAgICAgICAgICAgICBS" + + "RUFEWSAgIFNUQVRVUyAgICAgUkVTVEFSVFMgICBBR0UKbnZjZi1hcGktN2Y0Yzc2Zjc4OC00NHZs" + + "dCAgMC8yICAgICBJbml0OjAvMSAgIDAgICAgICAgICAgMTBtCmBgYAoKIyMjIERpYWdub3NpcwoK" + + "VGhlIGluaXQgY29udGFpbmVyIGlzIHRoZSB2YXVsdC1hZ2VudC1pbml0IGluamVjdG9yIHdhaXRp" + + "bmcgZm9yIE9wZW5CYW8uCgpgYGBiYXNoCiMgQ2hlY2sgT3BlbkJhbyBwb2RzCmt1YmVjdGwgZ2V0" + + "IHBvZHMgLW4gdmF1bHQtc3lzdGVtCgojIENoZWNrIGlmIE9wZW5CYW8gbWlncmF0aW9uIGpvYiBy" + + "YW4Ka3ViZWN0bCBnZXQgam9icyAtbiB2YXVsdC1zeXN0ZW0KCiMgQ2hlY2sgT3BlbkJhbyBwb2Qg" + + "bG9ncwprdWJlY3RsIGxvZ3MgLW4gdmF1bHQtc3lzdGVtIG9wZW5iYW8tc2VydmVyLTAgLWMgb3Bl" + + "bmJhbwoKIyBDaGVjayBpbml0IGNvbnRhaW5lciBsb2dzIG9uIHRoZSBzdHVjayBwb2QKa3ViZWN0" + + "bCBsb2dzIC1uIDxuYW1lc3BhY2U+IDxwb2QtbmFtZT4gLWMgdmF1bHQtYWdlbnQtaW5pdApgYGAK" + + "CiMjIyBGaXhlcwoKMS4gKipPcGVuQmFvIHBvZHMgbm90IHJ1bm5pbmcqKjogQ2hlY2sgdGhlaXIg" + + "ZXZlbnRzIGZvciBpbWFnZSBwdWxsIGlzc3VlcywgcmVzb3VyY2UgaXNzdWVzLCBldGMuCgoyLiAq" + + "Kk9wZW5CYW8gbWlncmF0aW9uIGpvYiBkaWRuJ3QgcnVuKio6IFRoaXMgaGFwcGVucyB3aGVuIGBo" + + "ZWxtZmlsZSBzeW5jYCB3YXMgaW50ZXJydXB0ZWQuIERlc3Ryb3kgYW5kIHJlLXN5bmMgb3BlbmJh" + + "bzoKCiAgIGBgYGJhc2gKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3Ig" + + "bmFtZT1vcGVuYmFvLXNlcnZlciBkZXN0cm95CiAgIGt1YmVjdGwgZGVsZXRlIG5hbWVzcGFjZSB2" + + "YXVsdC1zeXN0ZW0KICAga3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIHZhdWx0LXN5c3RlbQogICAj" + + "IFJlLWNyZWF0ZSBwdWxsIHNlY3JldCBpZiBuZWVkZWQKICAgSEVMTUZJTEVfRU5WPTxlbnY+IGhl" + + "bG1maWxlIC0tc2VsZWN0b3IgbmFtZT1vcGVuYmFvLXNlcnZlciBzeW5jCiAgIGBgYAoKMy4gKipP" + + "cGVuQmFvIHBvZHMgcnVubmluZyBidXQgbm90IGluaXRpYWxpemVkKio6IENoZWNrIHVuc2VhbCBz" + + "dGF0dXM6CgogICBgYGBiYXNoCiAgIGt1YmVjdGwgZXhlYyAtbiB2YXVsdC1zeXN0ZW0gb3BlbmJh" + + "by1zZXJ2ZXItMCAtYyBvcGVuYmFvIC0tIGJhbyBzdGF0dXMKICAgYGBgCgo0LiAqKmB2YXVsdC1h" + + "Z2VudC1pbml0YCBsb2dzIGBhdXRoL2p3dC9sb2dpbmAgLT4gYDQwMCAuLi4gbm8ga25vd24ga2V5" + + "IHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQgdGhlIHRva2VuIHNpZ25hdHVyZWAqKgogICAoY29tbW9u" + + "IG9uIEFLUywgYW5kIG9uIGFueSBjbHVzdGVyIHdob3NlIE9JREMgaXNzdWVyIHB1Ymxpc2hlcyBh" + + "IHJvdGF0aW5nIG11bHRpLWtleSBKV0tTKToKICAgdGhlIE9wZW5CYW8gYGF1dGgvand0YCBtZXRo" + + "b2Qgd2FzIGNvbmZpZ3VyZWQgd2l0aCBhIHNpbmdsZSBzdGF0aWMgbW91bnRlZCBwdWJsaWMga2V5" + + "CiAgIChgand0X3ZhbGlkYXRpb25fcHVia2V5c2ApIGluc3RlYWQgb2YgdGhlIGlzc3VlcidzIGxp" + + "dmUgSldLUywgc28gaXQgY2Fubm90IHZhbGlkYXRlIHRoZQogICBjbHVzdGVyLXNpZ25lZCBTZXJ2" + + "aWNlQWNjb3VudCB0b2tlbnMgdGhlIHZhdWx0LWFnZW50cyBwcmVzZW50LiBFdmVyeSBzZXJ2aWNl" + + "J3MKICAgYHZhdWx0LWFnZW50LWluaXRgIHRoZW4gbG9vcHMgb24gdGhhdCA0MDAgYW5kIHRoZSBw" + + "b2QgbmV2ZXIgbGVhdmVzIGBJbml0OjAvMWAuIFRoaXMgaXMgdGhlCiAgIGJlaGF2aW9yIG9mIHRo" + + "ZSBiYXNlIGRlZmF1bHQgYG9wZW5iYW8ubWlncmF0aW9ucy5pc3N1ZXJEaXNjb3ZlcnkuZW5hYmxl" + + "ZDogZmFsc2VgOyB0aGUKICAgbWlncmF0aW9uIGxvZyBzaG93cyBgT0lEQyBpc3N1ZXIgZGlzY292" + + "ZXJ5IGlzIGRpc2FibGVkLiBVc2luZyBTZXJ2aWNlQWNjb3VudCBpc3N1ZXIgYW5kCiAgIG1vdW50" + + "ZWQgcHVibGljIGtleSBmYWxsYmFja2AuIEVuYWJsZSBpc3N1ZXIgZGlzY292ZXJ5IHNvIHRoZSBt" + + "aWdyYXRpb24gdXNlcyB0aGUgbGl2ZSBKV0tTLAogICB0aGVuIHJlLXJ1biBpdDoKCiAgIGBgYGJh" + + "c2gKICAgIyBJbiB5b3VyIGVudiB2YWx1ZXMgKGUuZy4gZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwp" + + "LCBzZXQ6CiAgICMgICBvcGVuYmFvOgogICAjICAgICBtaWdyYXRpb25zOgogICAjICAgICAgIGlz" + + "c3VlckRpc2NvdmVyeToKICAgIyAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAga3ViZWN0bCBkZWxl" + + "dGUgam9iIC1uIHZhdWx0LXN5c3RlbSBvcGVuYmFvLXNlcnZlci1taWdyYXRpb25zCiAgIEhFTE1G" + + "SUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9b3BlbmJhby1zZXJ2ZXIgc3lu" + + "YwogICBgYGAKCiAgIFRoZSBtaWdyYXRpb24gbG9nIHNob3VsZCB0aGVuIHNob3cgYFJlY2VpdmVk" + + "IGRpc2NvdmVyeSBkb2N1bWVudCBmcm9tCiAgIC4uLi8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmln" + + "dXJhdGlvbmAgYW5kIGBGaW5hbCBPcGVuQmFvIEpXVCBKV0tTIFVSTCBzZXQgdG86CiAgIC4uLi9v" + + "cGVuaWQvdjEvandrc2AsIGFuZCB0aGUgc2VydmljZSBwb2RzIGF1dGhlbnRpY2F0ZSBhbmQgcmVh" + + "Y2ggUmVhZHkgd2l0aGluIH4xIG1pbi4KICAgQUtTIGNsdXN0ZXJzIHdpdGggdGhlIGNsdXN0ZXIg" + + "T0lEQyBpc3N1ZXIgZW5hYmxlZCAodGhlIGBha3MtY2x1c3RlcmAgZGVmYXVsdCkgYWx3YXlzIG5l" + + "ZWQKICAgdGhpcyBiZWNhdXNlIHRoZSBzdGF0aWMtcHVia2V5IGZhbGxiYWNrIGNhbm5vdCBtYXRj" + + "aCB0aGUgaXNzdWVyJ3Mgcm90YXRpbmcgc2lnbmluZyBrZXlzLgoKIyMgRmFpbHVyZTogT09NS2ls" + + "bGVkIG9uIENhc3NhbmRyYQoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVB" + + "RFkgICBTVEFUVVMgICAgUkVTVEFSVFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIE9PTUtp" + + "bGxlZCAgMyAgICAgICAgIDEwbQpgYGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKa3ViZWN0bCBk" + + "ZXNjcmliZSBwb2QgLW4gY2Fzc2FuZHJhLXN5c3RlbSBjYXNzYW5kcmEtMCB8IGdyZXAgLUEzICJM" + + "YXN0IFN0YXRlIgpgYGAKCiMjIyBGaXgKCk92ZXJyaWRlIENhc3NhbmRyYSByZXNvdXJjZXMgdmlh" + + "IGhlbG1maWxlIHZhbHVlcy4gU2VlIEV4YW1wbGUgMSBpbgpbZXhhbXBsZXMubWRdKC4uL2V4YW1w" + + "bGVzLm1kKS4KCmBgYHlhbWwKLSBjYXNzYW5kcmE6CiAgICByZXNvdXJjZXM6CiAgICAgIGxpbWl0" + + "czoKICAgICAgICBjcHU6ICI4IgogICAgICAgIG1lbW9yeTogODE5Mk1pCiAgICAgIHJlcXVlc3Rz" + + "OgogICAgICAgIGNwdTogIjIiCiAgICAgICAgbWVtb3J5OiA0MDk2TWkKYGBgCgpOb3RlOiBgcmVz" + + "b3VyY2VQcmVzZXRgIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIE5WQ0YgY2Fzc2FuZHJhIHdyYXBw" + + "ZXIgY2hhcnQuIFVzZSBleHBsaWNpdCBgcmVzb3VyY2VzYC4KCiMjIEZhaWx1cmU6IFBvZHMgU3R1" + + "Y2sgaW4gUGVuZGluZwoKIyMjIFN5bXB0b21zCgpgYGB0ZXh0Ck5BTUUgICAgICAgICAgUkVBRFkg" + + "ICBTVEFUVVMgICAgUkVTVEFSVFMgICBBR0UKY2Fzc2FuZHJhLTAgICAwLzEgICAgIFBlbmRpbmcg" + + "ICAwICAgICAgICAgIDEwbQpgYGAKCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKIyBDaGVjayBldmVu" + + "dHMgZm9yIHNjaGVkdWxpbmcgZmFpbHVyZXMKa3ViZWN0bCBkZXNjcmliZSBwb2QgLW4gPG5hbWVz" + + "cGFjZT4gPHBvZC1uYW1lPgoKIyBDb21tb24gY2F1c2VzOgojIC0gIjAvMTIgbm9kZXMgYXJlIGF2" + + "YWlsYWJsZTogMTIgbm9kZShzKSBkaWRuJ3QgbWF0Y2ggUG9kJ3Mgbm9kZSBhZmZpbml0eSIKIyAt" + + "ICIwLzEyIG5vZGVzIGFyZSBhdmFpbGFibGU6IDEyIEluc3VmZmljaWVudCBtZW1vcnkiCiMgLSAi" + + "cGVyc2lzdGVudHZvbHVtZWNsYWltIG5vdCBmb3VuZCIKYGBgCgojIyMgRml4ZXMKCjEuICoqTm9k" + + "ZSBzZWxlY3RvciBtaXNtYXRjaCoqOiBDaGVjayBgbm9kZVNlbGVjdG9yc2AgaW4gZW52aXJvbm1l" + + "bnQgZmlsZQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBub2RlcyAtLXNob3ctbGFiZWxzIHwg" + + "Z3JlcCBudmNmCiAgIGBgYAoKMi4gKipTdG9yYWdlIGNsYXNzIG5vdCBmb3VuZCoqOiBDaGVjayBz" + + "dG9yYWdlIGNsYXNzIGV4aXN0cwoKICAgYGBgYmFzaAogICBrdWJlY3RsIGdldCBzdG9yYWdlY2xh" + + "c3MKICAgYGBgCgozLiAqKkluc3VmZmljaWVudCByZXNvdXJjZXMqKjogQ2hlY2sgbm9kZSBjYXBh" + + "Y2l0eQoKICAgYGBgYmFzaAogICBrdWJlY3RsIGRlc2NyaWJlIG5vZGUgPG5vZGUtbmFtZT4gfCBn" + + "cmVwIC1BNSAiQWxsb2NhdGVkIHJlc291cmNlcyIKICAgYGBgCgojIyBGYWlsdXJlOiBIZWxtIFJl" + + "bGVhc2UgaW4gRmFpbGVkIFN0YXRlCgojIyMgU3ltcHRvbXMKCmBgYGJhc2gKaGVsbSBsaXN0IC1B" + + "CiMgU2hvd3MgcmVsZWFzZSB3aXRoIFNUQVRVUzogZmFpbGVkCmBgYAoKUmUtcnVubmluZyBgaGVs" + + "bWZpbGUgc3luY2AgYXBwZWFycyB0byBzdWNjZWVkIGJ1dCBzZXJ2aWNlcyBkb24ndCB3b3JrICht" + + "aWdyYXRpb25zIHNraXBwZWQpLgoKIyMjIERpYWdub3NpcwoKYGBgYmFzaApoZWxtIGhpc3Rvcnkg" + + "PHJlbGVhc2UtbmFtZT4gLW4gPG5hbWVzcGFjZT4KYGBgCgojIyMgRml4CgpNdXN0IGRlc3Ryb3kg" + + "dGhlIGZhaWxlZCByZWxlYXNlIGFuZCByZS1zeW5jIChub3QganVzdCBhcHBseSk6CgpgYGBiYXNo" + + "CkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9PHJlbGVhc2U+IGRl" + + "c3Ryb3kKIyBJZiBuYW1lc3BhY2UgbmVlZHMgY2xlYW51cDoKa3ViZWN0bCBkZWxldGUgbmFtZXNw" + + "YWNlIDxuYW1lc3BhY2U+Cmt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSA8bmFtZXNwYWNlPgojIFJl" + + "LWNyZWF0ZSBwdWxsIHNlY3JldCBpZiBuZWVkZWQKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxl" + + "IC0tc2VsZWN0b3IgbmFtZT08cmVsZWFzZT4gc3luYwpgYGAKCiMjIEZhaWx1cmU6IEFjY291bnQg" + + "Qm9vdHN0cmFwIEpvYiBGYWlsZWQKCiMjIyBTeW1wdG9tcwoKU2VydmljZXMgZGVwbG95IGJ1dCBm" + + "dW5jdGlvbnMgY2FuJ3QgYmUgY3JlYXRlZC4gRXZlbnRzIHNob3cgYm9vdHN0cmFwIGpvYiBmYWls" + + "dXJlLgoKIyMjIERpYWdub3NpcwoKYGBgYmFzaAojIENoZWNrIGJvb3RzdHJhcCBqb2Igc3RhdHVz" + + "Cmt1YmVjdGwgZ2V0IGpvYnMgLW4gbnZjZgoKIyBHZXQgbG9ncyAoam9iIGF1dG8tZGVsZXRlcyBh" + + "ZnRlciB+NSBtaW51dGVzKQprdWJlY3RsIGxvZ3Mgam9iL252Y2YtYXBpLWFjY291bnQtYm9vdHN0" + + "cmFwIC1uIG52Y2YKCiMgQ2hlY2sgQVBJIGxvZ3MKa3ViZWN0bCBsb2dzIC1uIG52Y2YgLWwgYXBw" + + "Lmt1YmVybmV0ZXMuaW8vbmFtZT1udmNmLWFwaSAtLXRhaWw9MTAwCmBgYAoKIyMjIENvbW1vbiBD" + + "YXVzZXMKCjEuICoqV3JvbmcgYmFzZTY0IGNyZWRlbnRpYWxzKio6IENyZWRlbnRpYWxzIGluIGBz" + + "ZWNyZXRzLzxlbnY+LXNlY3JldHMueWFtbGAgbXVzdCBiZSBgJG9hdXRodG9rZW46QVBJX0tFWWAg" + + "YmFzZTY0LWVuY29kZWQsIG5vdCBqdXN0IHRoZSBBUEkga2V5CgogICBgYGBiYXNoCiAgICMgVmVy" + + "aWZ5IHlvdXIgZW5jb2RlZCBjcmVkZW50aWFsCiAgIGVjaG8gJ1lPVVJfQkFTRTY0X1NUUklORycg" + + "fCBiYXNlNjQgLWQKICAgIyBTaG91bGQgb3V0cHV0OiAkb2F1dGh0b2tlbjpudmFwaS14eHh4eAog" + + "ICBgYGAKCjIuICoqUmVnaXN0cnkgdW5yZWFjaGFibGUqKjogQVBJIGNhbid0IHJlYWNoIHRoZSBy" + + "ZWdpc3RyeSBzcGVjaWZpZWQgaW4gYGFjY291bnRCb290c3RyYXAucmVnaXN0cnlDcmVkZW50aWFs" + + "c2AKCiMjIyBGaXgKCkZpeCBjcmVkZW50aWFscyBpbiBzZWNyZXRzIGZpbGUsIHRoZW4gcmVjb3Zl" + + "ciBzZXJ2aWNlcyB3aXRob3V0IGRlc3Ryb3lpbmcgZGVwZW5kZW5jaWVzOgoKYGBgYmFzaApIRUxN" + + "RklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNlLWdyb3VwPXNlcnZpY2Vz" + + "IGRlc3Ryb3kKa3ViZWN0bCBkZWxldGUgbmFtZXNwYWNlIG52Y2YgYXBpLWtleXMgZXNzIHNpcyAt" + + "LWlnbm9yZS1ub3QtZm91bmQKa3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIG52Y2YgJiYga3ViZWN0" + + "bCBjcmVhdGUgbmFtZXNwYWNlIGFwaS1rZXlzICYmIFwKICBrdWJlY3RsIGNyZWF0ZSBuYW1lc3Bh" + + "Y2UgZXNzICYmIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBzaXMKIyBSZS1jcmVhdGUgcHVsbCBz" + + "ZWNyZXRzIGlmIG5lZWRlZApIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciBy" + + "ZWxlYXNlLWdyb3VwPXNlcnZpY2VzIHN5bmMKYGBgCgojIyBGYWlsdXJlOiBOVkNBIENsZWFudXAg" + + "U3R1Y2sgKEZpbmFsaXplcnMpCgojIyMgU3ltcHRvbXMKCkNvbXB1dGUtcGxhbmUgY2xlYW51cCBo" + + "YW5ncy4gTmFtZXNwYWNlcwpzdHVjayBpbiBgVGVybWluYXRpbmdgOgoKYGBgYmFzaAprdWJlY3Rs" + + "IGdldCBucwojIG52Y2Etb3BlcmF0b3IgICAgVGVybWluYXRpbmcgICAxMG0KIyBudmNmLWJhY2tl" + + "bmQgICAgIFRlcm1pbmF0aW5nICAgMTBtCmBgYAoKIyMjIEZpeAoKUnVuIHRoaXMgb25seSBhZ2Fp" + + "bnN0IHRoZSBjb21wdXRlIGNvbnRleHQsIGFmdGVyIHRoZSBub3JtYWwgY29tcHV0ZS1wbGFuZQp0" + + "ZWFyZG93biBoYXMgZmFpbGVkLiBSZW1vdmUgZmluYWxpemVycyBmcm9tIE5WQ0ZCYWNrZW5kIGN1" + + "c3RvbSByZXNvdXJjZXMgYW5kCmZvcmNlLWRlbGV0ZSBzdHVjayBuYW1lc3BhY2VzOgoKYGBgYmFz" + + "aApleHBvcnQgQ09NUFVURV9DT05URVhUPTxjb21wdXRlLXBsYW5lLWNvbnRleHQ+CgojIFJlbW92" + + "ZSBmaW5hbGl6ZXJzIGZyb20gTlZDRkJhY2tlbmQgcmVzb3VyY2VzCmt1YmVjdGwgLS1jb250ZXh0" + + "ICIkQ09NUFVURV9DT05URVhUIiBnZXQgbnZjZmJhY2tlbmRzIC1BIC1vIGpzb24gfCBcCiAganEg" + + "Jy5pdGVtc1tdIHwgLm1ldGFkYXRhLm5hbWVzcGFjZSArICIvIiArIC5tZXRhZGF0YS5uYW1lJyAt" + + "ciB8IFwKICB4YXJncyAtSXt9IHNoIC1jICdjb250ZXh0PSIkMSI7IG5zPSIkezIlJS8qfSI7IG5h" + + "bWU9IiR7MiMjKi99Ijsga3ViZWN0bCAtLWNvbnRleHQgIiRjb250ZXh0IiBwYXRjaCBudmNmYmFj" + + "a2VuZCAiJG5hbWUiIC1uICIkbnMiIC0tdHlwZT1tZXJnZSAtcCAie1wibWV0YWRhdGFcIjp7XCJm" + + "aW5hbGl6ZXJzXCI6W119fSInIF8gIiRDT01QVVRFX0NPTlRFWFQiIHt9CgojIEZvcmNlLWRlbGV0" + + "ZSBzdHVjayBuYW1lc3BhY2VzIGJ5IGNsZWFyaW5nIHRoZWlyIGZpbmFsaXplcnMKZm9yIG5zIGlu" + + "IG52Y2Etb3BlcmF0b3IgbnZjZi1iYWNrZW5kOyBkbwogIGt1YmVjdGwgLS1jb250ZXh0ICIkQ09N" + + "UFVURV9DT05URVhUIiBnZXQgbmFtZXNwYWNlICIkbnMiIC1vIGpzb24gMj4vZGV2L251bGwgfCBc" + + "CiAgICBqcSAnLnNwZWMuZmluYWxpemVycyA9IFtdJyB8IFwKICAgIGt1YmVjdGwgLS1jb250ZXh0" + + "ICIkQ09NUFVURV9DT05URVhUIiByZXBsYWNlIFwKICAgICAgLS1yYXcgIi9hcGkvdjEvbmFtZXNw" + + "YWNlcy8kbnMvZmluYWxpemUiIC1mIC0gMj4vZGV2L251bGwKZG9uZQpgYGAKCiMjIEZhaWx1cmU6" + + "IE5WQ0EgT3BlcmF0b3IgTWlzc2luZyBvciBOb3QgUmVhZHkKCiMjIyBTeW1wdG9tcwoKQWZ0ZXIg" + + "Y29tcHV0ZS1wbGFuZSBpbnN0YWxsIGNvbXBsZXRlcywgbm8gYG52Y2Etb3BlcmF0b3JgIERlcGxv" + + "eW1lbnQgZXhpc3RzLCBvcgppdCBleGlzdHMgYnV0IHBvZHMgYXJlIG5vdCByZWFkeToKCmBgYGJh" + + "c2gKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IGRlcGxveW1l" + + "bnQgbnZjYS1vcGVyYXRvciBcCiAgLW4gbnZjYS1vcGVyYXRvcgprdWJlY3RsIC0tY29udGV4dCA8" + + "Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgcG9kcyAtbiBudmNhLW9wZXJhdG9yCmBgYAoKIyMj" + + "IERpYWdub3NpcyBhbmQgRml4ZXMKCkZpcnN0IGlkZW50aWZ5IHdoZXRoZXIgdGhlIGluc3RhbGxh" + + "dGlvbiB1c2VkIHRoZSBIZWxtZmlsZSB2YWx1ZXMgZmxvdyBvciB0aGUKQ0xJIHByb2ZpbGUgZmxv" + + "dy4gUmUtcnVuIG9ubHkgdGhhdCBmbG93J3MgcmVnaXN0cmF0aW9uIGFuZCBpbnN0YWxsYXRpb24g" + + "c3RlcHMKZnJvbSBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxh" + + "bmUtaW5zdGFsbGF0aW9uLm1kKS4gRG8gbm90CnN1YnN0aXR1dGUgb25lIGhhbmRvZmYgZm9yIHRo" + + "ZSBvdGhlci4KCklmIGluc3RhbGxhdGlvbiBzdWNjZWVkcyBidXQgcG9kcyBzdGlsbCBmYWlsLCBp" + + "bnNwZWN0IHRoZSBjb21wdXRlIGNvbnRleHQ6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxj" + + "b21wdXRlLXBsYW5lLWNvbnRleHQ+IGRlc2NyaWJlIGRlcGxveSBudmNhLW9wZXJhdG9yIFwKICAt" + + "biBudmNhLW9wZXJhdG9yCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+" + + "IGxvZ3MgZGVwbG95bWVudC9udmNhLW9wZXJhdG9yIFwKICAtbiBudmNhLW9wZXJhdG9yIC0tdGFp" + + "bD0yMDAKa3ViZWN0bCAtLWNvbnRleHQgPGNvbXB1dGUtcGxhbmUtY29udGV4dD4gZ2V0IG52Y2Zi" + + "YWNrZW5kIC1uIG52Y2Etb3BlcmF0b3IKYGBgCgpGb3IgcHJpdmF0ZSByZWdpc3RyeSBmYWlsdXJl" + + "cywgdmVyaWZ5IHRoYXQgdGhlIHB1bGwgc2VjcmV0IGV4aXN0cyBpbgpgbnZjYS1vcGVyYXRvcmAu" + + "IFRoZSBjaGFydCBhbmQgb3BlcmF0b3IgbWlycm9yIGl0IHRvIGBudmNhLXN5c3RlbWA7IGRvIG5v" + + "dCB1c2UgYQpicm9hZGVyIG1hbnVhbCBuYW1lc3BhY2UgbG9vcC4gU2VlCltwdWxsLXNlY3JldHMu" + + "bWRdKHB1bGwtc2VjcmV0cy5tZCNjb21wdXRlLXBsYW5lLXNlY3JldCkuCgojIyBGYWlsdXJlOiBH" + + "YXRld2F5IEVuZHBvaW50IENoYW5nZWQKCiMjIyBTeW1wdG9tcwoKUmVxdWVzdHMgdGhyb3VnaCB0" + + "aGUgY29uZmlndXJlZCByb3V0ZSBkb21haW4gZmFpbCBhZnRlciB0aGUgR2F0ZXdheSBvciBpdHMg" + + "bG9hZCBiYWxhbmNlciBpcyByZXBsYWNlZC4gVGhlIEdhdGV3YXkgcmVwb3J0cyBhIG5ldyBlbmRw" + + "b2ludC4KCiMjIyBEaWFnbm9zaXMKCmBgYGJhc2gKR0FURVdBWV9BRERSPSQoa3ViZWN0bCAtLWNv" + + "bnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IGdhdGV3YXkgXAogIG52Y2YtZ2F0ZXdh" + + "eSAtbiBlbnZveS1nYXRld2F5IFwKICAtbyBqc29ucGF0aD0ney5zdGF0dXMuYWRkcmVzc2VzWzBd" + + "LnZhbHVlfScpCnRlc3QgLW4gIiRHQVRFV0FZX0FERFIiCmRpZyArc2hvcnQgImFwaS48ZG9tYWlu" + + "PiIKY3VybCAtSCAiSG9zdDogYXBpLjxkb21haW4+IiAiaHR0cDovLyRHQVRFV0FZX0FERFIvaGVh" + + "bHRoIgoKIyBDaGVjayBkaXJlY3QgYWRkcmVzcyBmaWVsZHMgdXNlZCBieSBhIHNwbGl0IGRlcGxv" + + "eW1lbnQKZ3JlcCBudmNmTmF0c1NlcnZpY2VVUkwgZGVwbG95L3N0YWNrcy9zZWxmLW1hbmFnZWQv" + + "ZW52aXJvbm1lbnRzLzxlbnY+LnlhbWwKZ3JlcCAtRSAnaWNtc1NlcnZpY2V8cmV2YWxTZXJ2aWNl" + + "fG5hdHMnIFwKICBkZXBsb3kvc3RhY2tzL252Y2YtY29tcHV0ZS1wbGFuZS9lbnZpcm9ubWVudHMv" + + "PGVudj4ueWFtbApgYGAKCiMjIyBGaXgKCktlZXAgYGdsb2JhbC5kb21haW5gLCByb3V0ZSBob3N0" + + "bmFtZXMsIGFuZCBIb3N0IG92ZXJyaWRlcyB1bmNoYW5nZWQuIFVwZGF0ZSBETlMKb3IgdGhlIGRp" + + "cmVjdCBjbGllbnQgZGVzdGluYXRpb24uIEZvciBzcGxpdCBkZXBsb3ltZW50cywgdXBkYXRlIG9u" + + "bHkgZGlyZWN0CkdhdGV3YXktYWRkcmVzcyBmaWVsZHMgYW5kIHJlZnJlc2ggcmVnaXN0cmF0aW9u" + + "IGFuZCBpbnN0YWxsYXRpb24gdGhyb3VnaCB0aGUKc2FtZSBzZWxlY3RlZCBoYW5kb2ZmLiBTZWUK" + + "W0V4YW1wbGUgNF0oLi4vZXhhbXBsZXMubWQjZXhhbXBsZS00LXJlY292ZXItZnJvbS1hLWdhdGV3" + + "YXktZW5kcG9pbnQtY2hhbmdlKS4KCiMjIFVzZWZ1bCBOYW1lc3BhY2UtdG8tU2VydmljZSBNYXBw" + + "aW5nCgpRdWljayByZWZlcmVuY2UgZm9yIHdoaWNoIHNlcnZpY2VzIHJ1biBpbiB3aGljaCBuYW1l" + + "c3BhY2U6Cgp8IE5hbWVzcGFjZSB8IFNlcnZpY2VzIHwKfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS18" + + "CnwgbmF0cy1zeXN0ZW0gfCBuYXRzIHwKfCBjYXNzYW5kcmEtc3lzdGVtIHwgY2Fzc2FuZHJhIHwK" + + "fCB2YXVsdC1zeXN0ZW0gfCBvcGVuYmFvLXNlcnZlciB8CnwgbnZjZiB8IGFwaSwgaW52b2NhdGlv" + + "bi1zZXJ2aWNlLCBncnBjLXByb3h5LCBub3Rhcnktc2VydmljZSwgcmV2YWwsIGxsbS1yZXF1ZXN0" + + "LXJvdXRlciwgbGxtLWFwaS1nYXRld2F5IHwKfCBhcGkta2V5cyB8IGFwaS1rZXlzLCBhZG1pbi1p" + + "c3N1ZXItcHJveHkgfAp8IGVzcyB8IGVzcy1hcGkgfAp8IHNpcyB8IHNpcyB8CnwgZW52b3ktZ2F0" + + "ZXdheS1zeXN0ZW0gfCBlbnZveSBnYXRld2F5IChpbmdyZXNzIGNvbnRyb2xsZXIpIHwKfCBlbnZv" + + "eS1nYXRld2F5IHwgZ2F0ZXdheSByZXNvdXJjZSArIHJvdXRlcyB8ClBLBwi1enA7tTAAALUwAABQ" + + "SwMEFAAIAAAAAAAhAAAAAAAAAAAAAAAAAEQACQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWluc3Rh" + + "bGxhdGlvbi9yZWZlcmVuY2VzL2hlbG1maWxlLXN0cnVjdHVyZS5tZFVUBQABAKbOEiMgSGVsbWZp" + + "bGUgU3RydWN0dXJlIFJlZmVyZW5jZQoKIyMgRGlyZWN0b3J5IExheW91dAoKYGBgYmFzaApudmNm" + + "LXNlbGYtbWFuYWdlZC1zdGFjay8KfC0tIGhlbG1maWxlLmQvCnwgICB8LS0gMDEtZGVwZW5kZW5j" + + "aWVzLnlhbWwuZ290bXBsICAjIE5BVFMsIENhc3NhbmRyYSwgT3BlbkJhbwp8ICAgfC0tIDAyLWNv" + + "cmUueWFtbC5nb3RtcGwgICAgICAgICAgIyBOVkNGIHNlcnZpY2VzICsgaW5ncmVzcwp8ICAgYC0t" + + "IDAzLW9ic2VydmFiaWxpdHkueWFtbC5nb3RtcGwgIyBPYnNlcnZhYmlsaXR5IHN0YWNrIChvcHRp" + + "b25hbCkKfC0tIGVudmlyb25tZW50cy8KfCAgIHwtLSBiYXNlLnlhbWwgICAgICAgICAgICAgICAg" + + "ICAgICMgRGVmYXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9ubWVudHMpCnwgICBgLS0gPGVudi1uYW1l" + + "Pi55YW1sICAgICAgICAgICAgICAjIFBlci1lbnZpcm9ubWVudCBvdmVycmlkZXMKfC0tIHNlY3Jl" + + "dHMvCnwgICBgLS0gPGVudi1uYW1lPi1zZWNyZXRzLnlhbWwgICAgICAjIFNlbnNpdGl2ZSB2YWx1" + + "ZXMgKHJlZ2lzdHJ5IGNyZWRzLCBwYXNzd29yZHMpCmAtLSBnbG9iYWwueWFtbC5nb3RtcGwgICAg" + + "ICAgICAgICAgICAjIEdvIHRlbXBsYXRlIHRoYXQgY29uc3RydWN0cyBwZXItY2hhcnQgdmFsdWVz" + + "CgpudmNmLWNvbXB1dGUtcGxhbmUtc3RhY2svCnwtLSBoZWxtZmlsZS5kLwp8ICAgfC0tIDAxLWRl" + + "cGVuZGVuY2llcy55YW1sLmdvdG1wbCAgIyBDb21wdXRlIHBsYW5lIGRlcGVuZGVuY3kgY29tcG9u" + + "ZW50cwp8ICAgYC0tIDAyLW52Y2EueWFtbC5nb3RtcGwgICAgICAgICAgIyBudmNhLW9wZXJhdG9y" + + "IGNoYXJ0IGFuZCBudmNhIGNvbmZpZ3VyYXRpb24KfC0tIGVudmlyb25tZW50cy8KfCAgIHwtLSBi" + + "YXNlLnlhbWwgICAgICAgICAgICAgICAgICAgICMgRGVmYXVsdCB2YWx1ZXMgKGFsbCBlbnZpcm9u" + + "bWVudHMpCnwgICBgLS0gPGVudi1uYW1lPi55YW1sICAgICAgICAgICAgICAjIFBlci1lbnZpcm9u" + + "bWVudCBvdmVycmlkZXMKYC0tIGdsb2JhbC55YW1sLmdvdG1wbCAgICAgICAgICAgICAgICMgR28g" + + "dGVtcGxhdGUgdGhhdCBjb25zdHJ1Y3RzIHBlci1jaGFydCB2YWx1ZXMKYGBgCgpUaGVzZSBzdGFj" + + "a3MgaGF2ZSBzZXBhcmF0ZSBlbnZpcm9ubWVudHMgYW5kIGNsdXN0ZXIgY29udGV4dHMuIFRoZSBI" + + "ZWxtZmlsZQp2YWx1ZXMgZmxvdyBhdXRob3JzIGJvdGggZW52aXJvbm1lbnQgZmlsZXMuIFRoZSBD" + + "TEkgcHJvZmlsZSBmbG93IGluc3RlYWQgdXNlcwp0aGUgQ0xJLWdlbmVyYXRlZCBjb250cm9sLXBs" + + "YW5lIHByb2ZpbGUgYXMgaXRzIGVuZHBvaW50IHNvdXJjZS4gRG8gbm90IG1peCB0aGUKaGFuZG9m" + + "ZnMuIFNlZSBbU3BsaXQgQ29tcHV0ZS1QbGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUt" + + "aW5zdGFsbGF0aW9uLm1kKS4KCiMjIEdvdG1wbCBGaWxlcyBhbmQgVGhlaXIgUmVsZWFzZXMKCiMj" + + "IyAwMS1kZXBlbmRlbmNpZXMueWFtbC5nb3RtcGwKCnwgUmVsZWFzZSB8IENoYXJ0IHwgTmFtZXNw" + + "YWNlIHwgTm90ZXMgfAp8LS0tLS0tLS0tfC0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLXwKfCBu" + + "YXRzIHwgaGVsbS1udmNmLW5hdHMgfCBuYXRzLXN5c3RlbSB8IE1lc3NhZ2luZyB8Cnwgb3BlbmJh" + + "by1zZXJ2ZXIgfCBoZWxtLW52Y2Ytb3BlbmJhby1zZXJ2ZXIgfCB2YXVsdC1zeXN0ZW0gfCBTZWNy" + + "ZXRzIG1hbmFnZW1lbnQsIGRlcGVuZHMgb24gbmF0cyB8CnwgY2Fzc2FuZHJhIHwgaGVsbS1udmNm" + + "LWNhc3NhbmRyYSB8IGNhc3NhbmRyYS1zeXN0ZW0gfCBEYXRhYmFzZSB8CgpVc2VzIGA8PDogKmRl" + + "cGVuZGVuY3lgIHRlbXBsYXRlIGluaGVyaXRhbmNlIHdpdGggYHJlbGVhc2UtZ3JvdXA6IGRlcGVu" + + "ZGVuY2llc2AgbGFiZWwuCgojIyMgMDItY29yZS55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hh" + + "cnQgfCBOYW1lc3BhY2UgfCBMYWJlbCB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwt" + + "LS0tLS0tfAp8IGFwaS1rZXlzIHwgaGVsbS1udmNmLWFwaS1rZXlzIHwgYXBpLWtleXMgfCBzZXJ2" + + "aWNlcyB8Cnwgc2lzIHwgaGVsbS1udmNmLXNpcyB8IHNpcyB8IHNlcnZpY2VzIHwKfCBhcGkgfCBo" + + "ZWxtLW52Y2YtYXBpIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBpbnZvY2F0aW9uLXNlcnZpY2UgfCBo" + + "ZWxtLW52Y2YtaW52b2NhdGlvbi1zZXJ2aWNlIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBncnBjLXBy" + + "b3h5IHwgaGVsbS1udmNmLWdycGMtcHJveHkgfCBudmNmIHwgc2VydmljZXMgfAp8IGVzcy1hcGkg" + + "fCBoZWxtLW52Y2YtZXNzLWFwaSB8IGVzcyB8IHNlcnZpY2VzIHwKfCBub3Rhcnktc2VydmljZSB8" + + "IGhlbG0tbnZjZi1ub3Rhcnktc2VydmljZSB8IG52Y2YgfCBzZXJ2aWNlcyB8CnwgcmV2YWwgfCBo" + + "ZWxtLXJldmFsIHwgbnZjZiB8IHNlcnZpY2VzIHwKfCBsbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNm" + + "L2hlbG0tbnZjZi1sbG0tcmVxdWVzdC1yb3V0ZXIgfCBudmNmIHwgc2VydmljZXMgfAp8IGxsbS1h" + + "cGktZ2F0ZXdheSB8IG52Y2YvaGVsbS1udmNmLWxsbS1hcGktZ2F0ZXdheSB8IG52Y2YgfCBzZXJ2" + + "aWNlcyB8CnwgYWRtaW4taXNzdWVyLXByb3h5IHwgaGVsbS1hZG1pbi10b2tlbi1pc3N1ZXItcHJv" + + "eHkgfCBhcGkta2V5cyB8IChubyByZWxlYXNlLWdyb3VwIGxhYmVsKSB8CnwgaW5ncmVzcyB8IG52" + + "Y2YtZ2F0ZXdheS1yb3V0ZXMgfCBlbnZveS1nYXRld2F5LXN5c3RlbSB8IGluZ3Jlc3MgfAoKTW9z" + + "dCBzZXJ2aWNlcyB1c2UgYGluaGVyaXQ6IFt7dGVtcGxhdGU6IHNlcnZpY2V9XWAuIExMTSByZWxl" + + "YXNlcyB1c2UgT0NJIGNoYXJ0cyBmcm9tIHRoZSBgbnZjZmAgcmVwb3NpdG9yeSB3aXRoIHN0YW5k" + + "YWxvbmUgYHZhbHVlczogWy4uL2dsb2JhbC55YW1sLmdvdG1wbF1gIGJsb2NrczsgdGhleSBhcmUg" + + "Z2F0ZWQgb24gYGFkZG9ucy5sbG0uZW5hYmxlZGAuIGBhZG1pbi1pc3N1ZXItcHJveHlgIGFuZCBg" + + "aW5ncmVzc2AgaGF2ZSBzdGFuZGFsb25lIGB2YWx1ZXM6YCBibG9ja3MuCgojIyMgMDMtb2JzZXJ2" + + "YWJpbGl0eS55YW1sLmdvdG1wbAoKfCBSZWxlYXNlIHwgQ2hhcnQgfCBOYW1lc3BhY2UgfCBMYWJl" + + "bCB8CnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IChvYnNlcnZhYmls" + + "aXR5IHJlbGVhc2VzKSB8ICh2YXJpb3VzKSB8IG9ic2VydmFiaWxpdHkgfCBvYnNlcnZhYmlsaXR5" + + "IHwKCkdhdGVkIG9uIG9ic2VydmFiaWxpdHktc3BlY2lmaWMgZmxhZ3MgaW4gdGhlIGVudmlyb25t" + + "ZW50IGZpbGUuIFNraXBwZWQgaWYgZGlzYWJsZWQuCgojIyBUZW1wbGF0ZSBJbmhlcml0YW5jZQoK" + + "IyMjIGA8PDogKmRlcGVuZGVuY3lgIChZQU1MIG1lcmdlKQoKVXNlZCBpbiBgMDEtZGVwZW5kZW5j" + + "aWVzLnlhbWwuZ290bXBsYC4gTWVyZ2VzIHRoZSB0ZW1wbGF0ZSdzIHByb3BlcnRpZXMgaW50byB0" + + "aGUgcmVsZWFzZS4KCioqR290Y2hhKio6IFlBTUwgbWVyZ2UgcmVwbGFjZXMgbGlzdHMuIElmIHlv" + + "dSBhZGQgYSBgdmFsdWVzOmAga2V5IHRvIHRoZSByZWxlYXNlLCBpdCAqKnJlcGxhY2VzKiogdGhl" + + "IHRlbXBsYXRlJ3MgYHZhbHVlczpgIGxpc3QgZW50aXJlbHkuIFlvdSBtdXN0IHJlLWluY2x1ZGUg" + + "YWxsIHRlbXBsYXRlIHZhbHVlczoKCkluIHRoZSB0ZW1wbGF0ZSBiZWxvdywgYDxwcml2YXRlLXZh" + + "bHVlcz5gIHJlZmVycyB0byB0aGUgYHNlY3JldHMvYCBkaXJlY3RvcnkgYXQgdGhlIGhlbG1maWxl" + + "IHN0YWNrIHJvb3QuCgpgYGB5YW1sCiMgVGVtcGxhdGUgZGVmaW5lczoKdGVtcGxhdGVzOgogIGRl" + + "cGVuZGVuY3k6ICZkZXBlbmRlbmN5CiAgICBjaGFydDogbnZjZi9oZWxtLW52Y2Yte3sgLlJlbGVh" + + "c2UuTmFtZSB9fQogICAgdmFsdWVzOgogICAgICAtIC4uL2dsb2JhbC55YW1sLmdvdG1wbAogICAg" + + "ICAtIC4uLzxwcml2YXRlLXZhbHVlcz4ve3sgcmVxdWlyZWRFbnYgIkhFTE1GSUxFX0VOViIgfX0t" + + "c2VjcmV0cy55YW1sCgojIFdoZW4gb3ZlcnJpZGluZywgTVVTVCByZS1pbmNsdWRlIGJvdGg6Ci0g" + + "bmFtZTogY2Fzc2FuZHJhCiAgPDw6ICpkZXBlbmRlbmN5CiAgdmFsdWVzOgogICAgLSAuLi9nbG9i" + + "YWwueWFtbC5nb3RtcGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + + "ICAgIyBNdXN0IHJlLWluY2x1ZGUKICAgIC0gLi4vPHByaXZhdGUtdmFsdWVzPi97eyByZXF1aXJl" + + "ZEVudiAiSEVMTUZJTEVfRU5WIiB9fS1zZWNyZXRzLnlhbWwgICAjIE11c3QgcmUtaW5jbHVkZQog" + + "ICAgLSBjYXNzYW5kcmE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" + + "ICAgICAgICAgICAgICAgICMgWW91ciBvdmVycmlkZQogICAgICAgIHJlc291cmNlczoKICAgICAg" + + "ICAgIGxpbWl0czoKICAgICAgICAgICAgbWVtb3J5OiA4MTkyTWkKYGBgCgojIyMgYGluaGVyaXRg" + + "IChIZWxtZmlsZSBuYXRpdmUpCgpVc2VkIGluIGAwMi1jb3JlLnlhbWwuZ290bXBsYC4gSGVsbWZp" + + "bGUncyBuYXRpdmUgaW5oZXJpdGFuY2UgbWVjaGFuaXNtLgoKYGBgeWFtbAotIG5hbWU6IGFwaQog" + + "IHZlcnNpb246IDEuNi4wCiAgbmFtZXNwYWNlOiBudmNmCiAgaW5oZXJpdDoKICAgIC0gdGVtcGxh" + + "dGU6IHNlcnZpY2UKYGBgCgpXaGVuIGFkZGluZyBgdmFsdWVzOmAgdG8gYW4gaW5oZXJpdGVkIHJl" + + "bGVhc2UsIHlvdSBhbHNvIG5lZWQgdG8gcmUtaW5jbHVkZSB0aGUgdGVtcGxhdGUncyB2YWx1ZXMg" + + "ZmlsZXMgc2luY2UgYHZhbHVlc2AgaXMgYSBsaXN0IHRoYXQgZ2V0cyByZXBsYWNlZC4KCiMjIFZh" + + "bHVlcyBQcmVjZWRlbmNlCgpGcm9tIGxvd2VzdCB0byBoaWdoZXN0IHByaW9yaXR5OgoKMS4gYGVu" + + "dmlyb25tZW50cy9iYXNlLnlhbWxgIC0tIGRlZmF1bHRzIHNoYXJlZCBhY3Jvc3MgYWxsIGVudmly" + + "b25tZW50cwoyLiBgZW52aXJvbm1lbnRzLzxlbnY+LnlhbWxgIC0tIHBlci1lbnZpcm9ubWVudCBv" + + "dmVycmlkZXMKMy4gYGdsb2JhbC55YW1sLmdvdG1wbGAgLS0gR28gdGVtcGxhdGUgcHJvY2Vzc2lu" + + "ZyAoY29uc3RydWN0cyBjaGFydC1zcGVjaWZpYyBzdHJ1Y3R1cmUpCjQuIGA8cHJpdmF0ZS12YWx1" + + "ZXM+LzxlbnY+LXNlY3JldHMueWFtbGAgLS0gc2Vuc2l0aXZlIHZhbHVlcwo1LiBJbmxpbmUgYHZh" + + "bHVlczpgIGJsb2NrcyBvbiByZWxlYXNlcyAtLSBoaWdoZXN0IHByZWNlZGVuY2UKCiMjIFdoYXQg" + + "Z2xvYmFsLnlhbWwuZ290bXBsIFBhc3NlcyBUaHJvdWdoCgpgZ2xvYmFsLnlhbWwuZ290bXBsYCBy" + + "ZWFkcyBmcm9tIGAuVmFsdWVzYCAodGhlIG1lcmdlZCBlbnZpcm9ubWVudCArIGVudi1zcGVjaWZp" + + "YyBZQU1MKSBhbmQgY29uc3RydWN0cyBjaGFydC1zcGVjaWZpYyB2YWx1ZXMuIEl0IG9ubHkgcGFz" + + "c2VzIHRocm91Z2gga2V5cyBpdCBleHBsaWNpdGx5IHJlZmVyZW5jZXM6CgojIyMgQ2Fzc2FuZHJh" + + "CgotIGBjYXNzYW5kcmEucmVwbGljYUNvdW50YAotIGBjYXNzYW5kcmEuaW1hZ2UuKmAgKHJlZ2lz" + + "dHJ5LCByZXBvc2l0b3J5KQotIGBjYXNzYW5kcmEubWlncmF0aW9ucy5pbWFnZS4qYAotIGBjYXNz" + + "YW5kcmEucGVyc2lzdGVuY2Uuc2l6ZWAKLSBgY2Fzc2FuZHJhLm5vZGVTZWxlY3RvcmAgKGlmIGBn" + + "bG9iYWwubm9kZVNlbGVjdG9ycy5lbmFibGVkYCkKLSBgY2Fzc2FuZHJhLmdsb2JhbC5kZWZhdWx0" + + "U3RvcmFnZUNsYXNzYAoKIyMjIE5BVFMKCi0gYG5hdHMuY29udGFpbmVyLmltYWdlLipgCi0gYG5h" + + "dHMucmVsb2FkZXIuaW1hZ2UuKmAKLSBgbmF0cy5uYXRzQm94LmNvbnRhaW5lci5pbWFnZS4qYAot" + + "IGBuYXRzLmNvbmZpZy5qZXRzdHJlYW0uZmlsZVN0b3JlLnB2Yy5zdG9yYWdlQ2xhc3NOYW1lYAot" + + "IGBuYXRzLnBvZFRlbXBsYXRlLm1lcmdlLnNwZWMubm9kZVNlbGVjdG9yYCAoaWYgZW5hYmxlZCkK" + + "CiMjIyBPcGVuQmFvCgotIGBvcGVuYmFvLm1pZ3JhdGlvbnMuaW1hZ2UuKmAgYW5kIGBvcGVuYmFv" + + "Lm1pZ3JhdGlvbnMuZW52YAotIGBvcGVuYmFvLmluamVjdG9yLmltYWdlLipgCi0gYG9wZW5iYW8u" + + "c2VydmVyLmltYWdlLipgCi0gYG9wZW5iYW8uc2VydmVyLmRhdGFTdG9yYWdlLipgCi0gTm9kZSBz" + + "ZWxlY3RvcnMgKGlmIGVuYWJsZWQpCgojIyMgU2VydmljZXMgKEFQSSwgU0lTLCBldGMuKQoKLSBg" + + "PHNlcnZpY2U+LmltYWdlLipgIChyZWdpc3RyeSwgcmVwb3NpdG9yeSkKLSBgPHNlcnZpY2U+Lm5v" + + "ZGVTZWxlY3RvcmAgKGlmIGVuYWJsZWQpCi0gYDxzZXJ2aWNlPi5lbnYuKmAgKG9ic2VydmFiaWxp" + + "dHkgc2V0dGluZ3MpCgojIyMgTExNIEZ1bmN0aW9uIEVuYWJsZW1lbnQKCkVuYWJsZSB0aGUgTExN" + + "IGFkZG9uIGJlZm9yZSBjcmVhdGluZyBvciBpbnZva2luZyBmdW5jdGlvbnMgd2l0aApgZnVuY3Rp" + + "b25UeXBlOiAiTExNImAuIFRoZSBhZGRvbiBkZXBsb3lzIGBsbG0tcmVxdWVzdC1yb3V0ZXJgIGFu" + + "ZApgbGxtLWFwaS1nYXRld2F5YCwgYWRkcyB0aGUgYGxsbS5pbnZvY2F0aW9uLjxkb21haW4+YCBy" + + "b3V0ZSB3aGVuIEdhdGV3YXkgQVBJCmluZ3Jlc3MgaXMgZW5hYmxlZCwgYW5kIGNvbmZpZ3VyZXMg" + + "d29ya2VycyB0byB1c2UgdGhlIExMTSBzaWRlY2FyLiBUaGUgSGVsbWZpbGUKY29uZGl0aW9uIGlz" + + "IGBhZGRvbnMubGxtLmVuYWJsZWRgLiBEbyBub3QgdXNlIHRoZSBvYnNvbGV0ZSBgbGxtLmVuYWJs" + + "ZWRgIHBhdGguCgpGb3IgYSBzaW5nbGUtbm9kZSBpc29sYXRlZCB0ZXN0IGNsdXN0ZXIsIGFkZCB0" + + "aGlzIGNvbmZpZ3VyYXRpb24gdG8KYGVudmlyb25tZW50cy88ZW52Pi55YW1sYCBiZWZvcmUgYXBw" + + "bHlpbmcgdGhlIHN0YWNrOgoKYGBgeWFtbAphZGRvbnM6CiAgbGxtOgogICAgZW5hYmxlZDogdHJ1" + + "ZQogICAgZ2F0ZXdheToKICAgICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAg" + + "ICAgc2VydmljZU1vbml0b3I6CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQogICAgcmVxdWVzdFJv" + + "dXRlcjoKICAgICAgcmVwbGljYUNvdW50OiAxCiAgICAgIG1ldHJpY3M6CiAgICAgICAgc2Vydmlj" + + "ZU1vbml0b3I6CiAgICAgICAgICBlbmFibGVkOiBmYWxzZQoKYWdlbnRDb25maWc6CiAgbWVyZ2VD" + + "b25maWc6IHwKICAgIGNsdXN0ZXI6CiAgICAgIHZhbGlkYXRpb25Qb2xpY3k6CiAgICAgICAgbmFt" + + "ZTogVW5yZXN0cmljdGVkCiAgICB3b3JrbG9hZDoKICAgICAgc3RhcmdhdGVRVUlDSW5zZWN1cmU6" + + "IHRydWUKYGBgCgpVc2UgYHJlcGxpY2FDb3VudDogMWAgb25seSBmb3IgbG9jYWwgb3Igc2luZ2xl" + + "LW5vZGUgdGVzdCBjbHVzdGVycy4gVGhlIGJ1bmRsZWQKTlZDRiBBUEkgY3VycmVudGx5IHNlcnZl" + + "cyBwbGFpbnRleHQgZ1JQQyBvbiBwb3J0IDkwOTAsIHNvIHRoZSBzZWxmLW1hbmFnZWQgc3RhY2sK" + + "ZGVmYXVsdHMgdGhlIExMTSBBUEkgR2F0ZXdheSBhdXRoZW50aWNhdGlvbiBob3AgdG8gcGxhaW50" + + "ZXh0LiBTZXQKYGFkZG9ucy5sbG0uZ2F0ZXdheS5hdXRoLmdycGNJbnNlY3VyZTogZmFsc2VgIG9u" + + "bHkgd2l0aCBhIFRMUy1jYXBhYmxlIE5WQ0YgQVBJLgoKV29ya2VyLXRvLXJvdXRlciB0cmFuc3Bv" + + "cnQgaXMgc2VwYXJhdGUuIEZvciBzaGFyZWQgb3IgcHJvZHVjdGlvbiBjbHVzdGVycywgdXNlCnRo" + + "ZSByZXF1aXJlZCByZXBsaWNhIGNvdW50IGFuZCB0aGUgbWFuYWdlZCBUTFMgY29uZmlndXJhdGlv" + + "bi4gVGhlCmB3b3JrbG9hZC5zdGFyZ2F0ZVFVSUNJbnNlY3VyZWAgc2V0dGluZyBlbmFibGVzIHBs" + + "YWludGV4dCB3b3JrZXIgdHJhbnNwb3J0IGFuZAptdXN0IG5vdCBiZSB1c2VkIGluIHByb2R1Y3Rp" + + "b24uCgpUaGUgcmVxdWVzdCByb3V0ZXIgdXNlcyBgcG93ZXItb2YtdHdvYCB3aGVuIG5vIGxvYWQt" + + "YmFsYW5jZXIgY29uZmlndXJhdGlvbiBpcwpzZXQuIENvbmZpZ3VyZSBvdGhlciByb3V0aW5nIG1l" + + "dGhvZHMgd2l0aCB0aGUKW0xMTSBSZXF1ZXN0IFJvdXRlciBMb2FkIEJhbGFuY2luZ10oaHR0cHM6" + + "Ly9naXRodWIuY29tL05WSURJQS9udmNmL2Jsb2IvbWFpbi9kb2NzL3NlbGYtbWFuYWdlZC9sbG0t" + + "cmVxdWVzdC1yb3V0ZXItbG9hZC1iYWxhbmNpbmcubWQpCmd1aWRlLgoKSWYgdGhlIHNpZGVjYXIg" + + "aW1hZ2UgaXMgbWlycm9yZWQgb3V0c2lkZSB0aGUgc3RhY2sncyBkZWZhdWx0IGltYWdlIHJlZ2lz" + + "dHJ5IGFuZApyZXBvc2l0b3J5LCBzZXQgdGhlIGdlbmVyYXRlZCB3b3JrZXIgc2lkZWNhciBpbWFn" + + "ZSBleHBsaWNpdGx5OgoKYGBgeWFtbAphcGk6CiAgcmVtb3RlQ29uZmlnOgogICAgY29uZmlnRGF0" + + "YToKICAgICAgbnZjZjoKICAgICAgICBzaWRlY2FyczoKICAgICAgICAgIGxsbS1yb3V0ZXItY2xp" + + "ZW50LWltYWdlOiA8cmVnaXN0cnk+LzxyZXBvc2l0b3J5Pi9weWxvbjowLjE0LjEKYGBgCgpUaGUg" + + "bGVnYWN5IGBhcGkuZW52Lk5WQ0ZfU0lERUNBUlNfTExNX1JPVVRFUl9DTElFTlRfSU1BR0VgIHBh" + + "dGggaXMgZGVwcmVjYXRlZC4KVGhlIHN0YWNrIHRyYW5zbGF0ZXMgaXQgZm9yIG9uZSBjb21wYXRp" + + "YmlsaXR5IHdpbmRvdywgYnV0IG5ldyBjb25maWd1cmF0aW9ucwptdXN0IHVzZSB0aGUgcmVtb3Rl" + + "LWNvbmZpZyBwYXRoLiBDb25mbGljdGluZyB2YWx1ZXMgZmFpbCByZW5kZXJpbmcuCgpSZW5kZXIg" + + "YW5kIGFwcGx5IHRoZSB1cGRhdGVkIGNvbnRyb2wtcGxhbmUgZW52aXJvbm1lbnQsIHRoZW4gcmVm" + + "cmVzaCBldmVyeQpyZWdpc3RlcmVkIGNvbXB1dGUgcGxhbmUgdXNpbmcgdGhlIHNhbWUgaGFuZG9m" + + "ZiB1c2VkIGZvciBpdHMgaW5zdGFsbGF0aW9uIHNvCk5WQ0EgcmVjZWl2ZXMgYGFnZW50Q29uZmln" + + "Lm1lcmdlQ29uZmlnYDoKCmBgYGJhc2gKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIHRlbXBs" + + "YXRlCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSBzeW5jCmBgYAoKVXNlIHRoZSBjb21wbGV0" + + "ZSBjb21wdXRlLXBsYW5lIGluc3RhbGwgY29tbWFuZCBmcm9tCltTcGxpdCBDb21wdXRlLVBsYW5l" + + "IEluc3RhbGxhdGlvbl0oY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWQpLiBBCkNMSS1wcm9m" + + "aWxlIGluc3RhbGxhdGlvbiBtdXN0IHJlbWFpbiBwcm9maWxlLWRyaXZlbjsgYSBIZWxtZmlsZSBp" + + "bnN0YWxsYXRpb24KbXVzdCByZW1haW4gdmFsdWVzLWRyaXZlbi4KCkV4aXN0aW5nIExMTSBmdW5j" + + "dGlvbiB2ZXJzaW9ucyByZXRhaW4gdGhlIHdvcmtlci1zaWRlY2FyIGltYWdlIG1ldGFkYXRhCmNh" + + "cHR1cmVkIHdoZW4gdGhlIHZlcnNpb24gaXMgY3JlYXRlZC4gUmVwbGFjaW5nIHBvZHMgb3IgcmVk" + + "ZXBsb3lpbmcgdGhlIHNhbWUKdmVyc2lvbiBkb2VzIG5vdCBhcHBseSBhIG5ldyBQeWxvbiBpbWFn" + + "ZS4gQWZ0ZXIgdGhlIGNvbnRyb2wtcGxhbmUgdXBkYXRlLApjcmVhdGUgYW5kIGRlcGxveSBhIG5l" + + "dyBmdW5jdGlvbiB2ZXJzaW9uLiBWZXJpZnkgdGhlIGNvbnRyb2wgcGxhbmUsIHJvdXRlLCBhbmQK" + + "d29ya2VyIHNpZGVjYXI6CgpgYGBiYXNoCmt1YmVjdGwgZ2V0IGRlcGxveSAtbiBudmNmIGxsbS1h" + + "cGktZ2F0ZXdheQprdWJlY3RsIGdldCBzdGF0ZWZ1bHNldCAtbiBudmNmIGxsbS1yZXF1ZXN0LXJv" + + "dXRlcgprdWJlY3RsIGdldCBwb2RzIC1uIG52Y2YgfCBncmVwIC1FICdsbG0tYXBpLWdhdGV3YXl8" + + "bGxtLXJlcXVlc3Qtcm91dGVyJwprdWJlY3RsIGdldCBodHRwcm91dGUgLUEgfCBncmVwIGxsbQpr" + + "dWJlY3RsIC1uIG52Y2YtYmFja2VuZCBnZXQgcG9kIDxmdW5jdGlvbi1wb2Q+IFwKICAtbyBqc29u" + + "cGF0aD0ne3JhbmdlIC5zcGVjLmNvbnRhaW5lcnNbPyhALm5hbWU9PSJsbG0td29ya2VyIildLmFy" + + "Z3NbKl19ey59eyJcXG4ifXtlbmR9JwpgYGAKCkZvciBsb2NhbCBwbGFpbnRleHQgY2x1c3RlcnMs" + + "IHRoZSBgbGxtLXdvcmtlcmAgYXJncyBtdXN0IGluY2x1ZGUKYC0tcXVpYy1pbnNlY3VyZWAuCgpG" + + "b3IgbG9hZC1iYWxhbmNlciBzY2hlbWEgYW5kIGFsZ29yaXRobSBiZWhhdmlvciwgc2VlIHRoZQpb" + + "U3RhcmdhdGUgY29uZmlndXJhdGlvbiBndWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9u" + + "dmNmL2Jsb2IvbWFpbi9zcmMvbGlicmFyaWVzL3J1c3Qvc3RhcmdhdGUvZG9jcy9sb2FkLWJhbGFu" + + "Y2VyLWNvbmZpZ3VyYXRpb24ubWQpLgoKIyMgSGVsbWZpbGUgU2VsZWN0b3JzCgpUYXJnZXQgc3Bl" + + "Y2lmaWMgcmVsZWFzZXMgb3IgZ3JvdXBzOgoKYGBgYmFzaAojIEJ5IHJlbGVhc2UgZ3JvdXAKSEVM" + + "TUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1kZXBlbmRl" + + "bmNpZXMgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3RvciByZWxlYXNl" + + "LWdyb3VwPXNlcnZpY2VzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0" + + "b3IgcmVsZWFzZS1ncm91cD1pbmdyZXNzIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxl" + + "IC0tc2VsZWN0b3IgcmVsZWFzZS1ncm91cD1vYnNlcnZhYmlsaXR5IHN5bmMKCiMgQnkgcmVsZWFz" + + "ZSBuYW1lCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2Fu" + + "ZHJhIHN5bmMKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1hZG1p" + + "bi1pc3N1ZXItcHJveHkgc3luYwpIRUxNRklMRV9FTlY9PGVudj4gaGVsbWZpbGUgLS1zZWxlY3Rv" + + "ciBuYW1lPWxsbS1yZXF1ZXN0LXJvdXRlciBzeW5jCkhFTE1GSUxFX0VOVj08ZW52PiBoZWxtZmls" + + "ZSAtLXNlbGVjdG9yIG5hbWU9bGxtLWFwaS1nYXRld2F5IHN5bmMKCiMgVGVtcGxhdGUgb25seSAo" + + "ZHJ5IHJ1bikKSEVMTUZJTEVfRU5WPTxlbnY+IGhlbG1maWxlIC0tc2VsZWN0b3IgbmFtZT1jYXNz" + + "YW5kcmEgdGVtcGxhdGUKCiMgRGVzdHJveSBhIHNpbmdsZSByZWxlYXNlCkhFTE1GSUxFX0VOVj08" + + "ZW52PiBoZWxtZmlsZSAtLXNlbGVjdG9yIG5hbWU9Y2Fzc2FuZHJhIGRlc3Ryb3kKYGBgCgpOb3Rl" + + "OiBgYWRtaW4taXNzdWVyLXByb3h5YCBoYXMgbm8gYHJlbGVhc2UtZ3JvdXBgIGxhYmVsLiBVc2Ug" + + "YC0tc2VsZWN0b3IgbmFtZT1hZG1pbi1pc3N1ZXItcHJveHlgLgpQSwcIExHsjQoqAAAKKgAAUEsD" + + "BBQACAAAAAAAIQAAAAAAAAAAAAAAAAA/AAkAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1pbnN0YWxs" + + "YXRpb24vcmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQFAAEAps4SIyBOVkNGIFVJIEFkZG9u" + + "CgpOVkNGIFVJIGlzIGFuIG9wdGlvbmFsLCBjdXN0b21lci1mYWNpbmcgTlZDRiBhZG1pbi1wYW5l" + + "bCBVSS4gSXQgaXMgZGlzYWJsZWQgYnkKZGVmYXVsdCBhbmQgYXZhaWxhYmxlIG9ubHkgaW4gc3Rh" + + "Y2sgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBOVkNGIFVJIGFkZG9uLgoKIyMgV2hlbiB0byBl" + + "bmFibGUKCkVuYWJsZSBOVkNGIFVJIG9ubHkgd2hlbiB5b3UgbmVlZCB0aGUgYWRtaW4tcGFuZWwg" + + "VUkgYW5kIHlvdXIgZXh0cmFjdGVkIHN0YWNrCnBhY2thZ2UgaW5jbHVkZXMgdGhlIGFkZG9uLiBJ" + + "ZiB0aGUgcGFja2FnZSBkb2VzIG5vdCBjb250YWluIGEgYG52Y2YtdWlgIHJlbGVhc2UKYW5kIGBu" + + "dmNmVWlgIHJvdXRlIHZhbHVlcywgc2tpcCB0aGUgYWRkb24gdW50aWwgeW91IHVzZSBhIHBhY2th" + + "Z2UgdGhhdCBpbmNsdWRlcwp0aGVtLgoKIyMgRW5hYmxlIHRoZSBhZGRvbgoKRW5hYmxlIGl0IGlu" + + "IGBlbnZpcm9ubWVudHMvPGVudi1uYW1lPi55YW1sYDoKCmBgYHlhbWwKYWRkb25zOgogIG52Y2ZV" + + "aToKICAgIGVuYWJsZWQ6IHRydWUKYGBgCgojIyBDcmVhdGUgbmFtZXNwYWNlIGFuZCBpbWFnZSBw" + + "dWxsIHNlY3JldAoKQ3JlYXRlIHRoZSBuYW1lc3BhY2UsIGFuZCBhbiBpbWFnZSBwdWxsIHNlY3Jl" + + "dCBvbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUKcmVnaXN0cnk6CgpgYGBiYXNoCmt1YmVj" + + "dGwgY3JlYXRlIG5hbWVzcGFjZSBudmNmLXVpIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFtbCB8IGt1" + + "YmVjdGwgYXBwbHkgLWYgLQoKIyBPbmx5IGlmIHB1bGxpbmcgZnJvbSBhIHByaXZhdGUgcmVnaXN0" + + "cnkgKGUuZy4sIE5HQyBudmNyLmlvKQpleHBvcnQgTkdDX0FQSV9LRVk9Ijx5b3VyLWtleT4iCmt1" + + "YmVjdGwgY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkgbnZjci1jcmVkcyBcCiAgLS1kb2Nr" + + "ZXItc2VydmVyPW52Y3IuaW8gXAogIC0tZG9ja2VyLXVzZXJuYW1lPSckb2F1dGh0b2tlbicgXAog" + + "IC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9LRVkiIFwKICAtLW5hbWVzcGFjZT1udmNmLXVp" + + "IFwKICAtLWRyeS1ydW49Y2xpZW50IC1vIHlhbWwgfCBrdWJlY3RsIGFwcGx5IC1mIC0KYGBgCgpU" + + "aGUgZGVmYXVsdCByb3V0ZSBob3N0IGlzIGBudmNmLXVpLjxkb21haW4+YCBhbmQgdGhlIGJhY2tl" + + "bmQgaXMKYG52Y2YtdWkubnZjZi11aTo4MzAwYC4KCiMjIEFwcGx5IHRoZSBzZXJ2aWNlIGFuZCBy" + + "b3V0ZQoKQWZ0ZXIgY29uZmlybWluZyB0aGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgYG52Y2YtdWlg" + + "IHJlbGVhc2UsIHByZXZpZXcgYW5kIGFwcGx5CnRoZSBzZXJ2aWNlIGFuZCByb3V0ZToKCmBgYGJh" + + "c2gKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBuYW1lPW52Y2Yt" + + "dWkgdGVtcGxhdGUKSEVMTUZJTEVfRU5WPTxlbnYtbmFtZT4gaGVsbWZpbGUgLS1zZWxlY3RvciBu" + + "YW1lPW52Y2YtdWkgc3luYwpIRUxNRklMRV9FTlY9PGVudi1uYW1lPiBoZWxtZmlsZSAtLXNlbGVj" + + "dG9yIHJlbGVhc2UtZ3JvdXA9aW5ncmVzcyBzeW5jCmBgYAoKIyMgVmVyaWZ5CgpWZXJpZnkgdGhl" + + "IHJvdXRlIG9ubHkgd2hlbiB0aGUgYWRkb24gaXMgcHJlc2VudCBhbmQgZW5hYmxlZDoKCmBgYGJh" + + "c2gKa3ViZWN0bCBnZXQgZGVwbG95LHN2YyAtbiBudmNmLXVpCmt1YmVjdGwgZ2V0IGh0dHByb3V0" + + "ZSAtQSB8IGdyZXAgLWkgbnZjZi11aQpjdXJsIC1pIC1IICJIb3N0OiBudmNmLXVpLjxkb21haW4+" + + "IiAiaHR0cDovLzxnYXRld2F5LWFkZHJlc3M+L3N0YXR1cyIKYGBgCgojIyBTZWN1cml0eQoKVGhl" + + "IE5WQ0YgVUkgYWRtaW4gcGFuZWwgaXMgY3VycmVudGx5IHVuYXV0aGVudGljYXRlZC4gRG8gbm90" + + "IGV4cG9zZSBpdCB0byB0aGUKcHVibGljIGludGVybmV0LiBSZXN0cmljdCBhY2Nlc3MgdG8gYSB0" + + "cnVzdGVkIG5ldHdvcmssIFZQTiwgb3IgYW4gYXV0aGVudGljYXRpbmcKcHJveHkgaW4gZnJvbnQg" + + "b2YgdGhlIGBudmNmLXVpYCByb3V0ZS4KUEsHCDj5J6+5BwAAuQcAAFBLAwQUAAgAAAAAACEAAAAA" + + "AAAAAAAAAAAAPgAJAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5j" + + "ZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEAps4SIyBJbWFnZSBQdWxsIFNlY3JldHMgUmVmZXJlbmNl" + + "CgojIyBPdmVydmlldwoKV2hlbiBwdWxsaW5nIE5WQ0YgaW1hZ2VzIGZyb20gYSBwcml2YXRlIHJl" + + "Z2lzdHJ5IChmb3IgZXhhbXBsZSwgTkdDCmBudmNyLmlvYCksIEt1YmVybmV0ZXMgbmVlZHMgYGlt" + + "YWdlUHVsbFNlY3JldHNgIG9uIGV2ZXJ5IHBvZC4gQ29udHJvbC1wbGFuZSBhbmQKY29tcHV0ZS1w" + + "bGFuZSBjcmVkZW50aWFscyBhcmUgY29uZmlndXJlZCBpbiB0aGVpciBvd24gY2x1c3RlciBjb250" + + "ZXh0cy4gRG8gbm90CnVzZSBvbmUgbWl4ZWQgbmFtZXNwYWNlIGxpc3QuCgpUaGUgcmVjb21tZW5k" + + "ZWQgY29udHJvbC1wbGFuZSBhcHByb2FjaCB1c2VzIEt5dmVybm8gdG8gaW5qZWN0IHRoZSBzZWNy" + + "ZXQgaW50bwpjb250cm9sLXBsYW5lIHBvZHMgYXQgYWRtaXNzaW9uIHRpbWUuIFRoZSBjb21wdXRl" + + "LXBsYW5lIGNoYXJ0IGFuZCBvcGVyYXRvciB1c2UKdGhlIHNlY3JldCBpbiBgbnZjYS1vcGVyYXRv" + + "cmAgYW5kIG1pcnJvciBpdCB0byBgbnZjYS1zeXN0ZW1gLgoKIyMgS3l2ZXJubyBBcHByb2FjaCAo" + + "UmVjb21tZW5kZWQpCgojIyMgMS4gSW5zdGFsbCBLeXZlcm5vCgpgYGBiYXNoCmhlbG0gcmVwbyBh" + + "ZGQga3l2ZXJubyBodHRwczovL2t5dmVybm8uZ2l0aHViLmlvL2t5dmVybm8vCmhlbG0gcmVwbyB1" + + "cGRhdGUKaGVsbSBpbnN0YWxsIGt5dmVybm8ga3l2ZXJuby9reXZlcm5vIC1uIGt5dmVybm8gLS1j" + + "cmVhdGUtbmFtZXNwYWNlIFwKICAtLWt1YmUtY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0" + + "PgpgYGAKCiMjIyAyLiBDcmVhdGUgY29udHJvbC1wbGFuZSBwdWxsIHNlY3JldHMKCmBgYGJhc2gK" + + "ZXhwb3J0IE5HQ19BUElfS0VZPSI8eW91ci1uZ2MtYXBpLWtleT4iCgpmb3IgbnMgaW4gY2Fzc2Fu" + + "ZHJhLXN5c3RlbSBuYXRzLXN5c3RlbSBudmNmIGFwaS1rZXlzIGVzcyBzaXMgdmF1bHQtc3lzdGVt" + + "IGNlcnQtbWFuYWdlcjsgZG8KICBrdWJlY3RsIC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250" + + "ZXh0PiBjcmVhdGUgbmFtZXNwYWNlICIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFt" + + "bCB8IGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0K" + + "ZG9uZQoKZm9yIG5zIGluIGNhc3NhbmRyYS1zeXN0ZW0gbmF0cy1zeXN0ZW0gbnZjZiBhcGkta2V5" + + "cyBlc3Mgc2lzIHZhdWx0LXN5c3RlbSBjZXJ0LW1hbmFnZXI7IGRvCiAga3ViZWN0bCAtLWNvbnRl" + + "eHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gY3JlYXRlIHNlY3JldCBkb2NrZXItcmVnaXN0cnkg" + + "bnZjci1jcmVkcyBcCiAgICAtLWRvY2tlci1zZXJ2ZXI9bnZjci5pbyBcCiAgICAtLWRvY2tlci11" + + "c2VybmFtZT0nJG9hdXRodG9rZW4nIFwKICAgIC0tZG9ja2VyLXBhc3N3b3JkPSIkTkdDX0FQSV9L" + + "RVkiIFwKICAgIC0tbmFtZXNwYWNlPSIkbnMiIFwKICAgIC0tZHJ5LXJ1bj1jbGllbnQgLW8geWFt" + + "bCB8IGt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0K" + + "ZG9uZQpgYGAKCkZvciBub24tTkdDIHJlZ2lzdHJpZXMsIHJlcGxhY2UgYC0tZG9ja2VyLXNlcnZl" + + "cmAsIGAtLWRvY2tlci11c2VybmFtZWAsIGFuZCBgLS1kb2NrZXItcGFzc3dvcmRgLgoKIyMjIDMu" + + "IEFwcGx5IEt5dmVybm8gQ2x1c3RlclBvbGljeQoKYGBgeWFtbAphcGlWZXJzaW9uOiBreXZlcm5v" + + "LmlvL3YxCmtpbmQ6IENsdXN0ZXJQb2xpY3kKbWV0YWRhdGE6CiAgbmFtZTogbnZjZi1hZGQtaW1h" + + "Z2VwdWxsc2VjcmV0cwpzcGVjOgogIGJhY2tncm91bmQ6IGZhbHNlCiAgcnVsZXM6CiAgICAtIG5h" + + "bWU6IGFkZC1pbWFnZXB1bGxzZWNyZXQtdG8tbnZjZi1wb2RzCiAgICAgIG1hdGNoOgogICAgICAg" + + "IGFueToKICAgICAgICAtIHJlc291cmNlczoKICAgICAgICAgICAga2luZHM6CiAgICAgICAgICAg" + + "IC0gUG9kCiAgICAgICAgICAgIG5hbWVzcGFjZXM6CiAgICAgICAgICAgIC0gIm52Y2YiCiAgICAg" + + "ICAgICAgIC0gImFwaS1rZXlzIgogICAgICAgICAgICAtICJzaXMiCiAgICAgICAgICAgIC0gImVz" + + "cyIKICAgICAgICAgICAgLSAibmF0cy1zeXN0ZW0iCiAgICAgICAgICAgIC0gImNhc3NhbmRyYS1z" + + "eXN0ZW0iCiAgICAgICAgICAgIC0gInZhdWx0LXN5c3RlbSIKICAgICAgICAgICAgLSAiY2VydC1t" + + "YW5hZ2VyIgogICAgICBtdXRhdGU6CiAgICAgICAgcGF0Y2hTdHJhdGVnaWNNZXJnZToKICAgICAg" + + "ICAgIG1ldGFkYXRhOgogICAgICAgICAgICBhbm5vdGF0aW9uczoKICAgICAgICAgICAgICBudmNm" + + "Lm52aWRpYS5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVkLWJ5OiBreXZlcm5vCiAgICAgICAg" + + "ICBzcGVjOgogICAgICAgICAgICBpbWFnZVB1bGxTZWNyZXRzOgogICAgICAgICAgICAtIG5hbWU6" + + "IG52Y3ItY3JlZHMKYGBgCgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5l" + + "LWNvbnRleHQ+IGFwcGx5IFwKICAtZiBreXZlcm5vLWltYWdlcHVsbHNlY3JldC1wb2xpY3kueWFt" + + "bApgYGAKCiMjIyA0LiBJbnN0YWxsIHRoZSBjb250cm9sIHBsYW5lCgpDb250aW51ZSB3aXRoIHRo" + + "ZSBzZWxlY3RlZCBjb250cm9sLXBsYW5lIGluc3RhbGxhdGlvbiBpbgpbU3BsaXQgQ29tcHV0ZS1Q" + + "bGFuZSBJbnN0YWxsYXRpb25dKGNvbXB1dGUtcGxhbmUtaW5zdGFsbGF0aW9uLm1kKS4gTm8KY29u" + + "dHJvbC1wbGFuZSBoZWxtZmlsZSBtb2RpZmljYXRpb25zIGFyZSBuZWVkZWQuIEt5dmVybm8gaW5q" + + "ZWN0cyB0aGUgcHVsbApzZWNyZXQgaW50byBuZXcgY29udHJvbC1wbGFuZSBwb2RzLgoKIyMgQ29t" + + "cHV0ZS1QbGFuZSBTZWNyZXQKCkNyZWF0ZSB0aGUgc2VjcmV0IG9ubHkgaW4gYG52Y2Etb3BlcmF0" + + "b3JgIG9uIHRoZSBjb21wdXRlIGNsdXN0ZXI6CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDxj" + + "b21wdXRlLXBsYW5lLWNvbnRleHQ+IGNyZWF0ZSBuYW1lc3BhY2UgbnZjYS1vcGVyYXRvciBcCiAg" + + "LS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRl" + + "LXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KCmt1YmVjdGwgLS1jb250ZXh0IDxjb21wdXRlLXBs" + + "YW5lLWNvbnRleHQ+IGNyZWF0ZSBzZWNyZXQgZG9ja2VyLXJlZ2lzdHJ5IG52Y3ItY3JlZHMgXAog" + + "IC0tZG9ja2VyLXNlcnZlcj1udmNyLmlvIFwKICAtLWRvY2tlci11c2VybmFtZT0nJG9hdXRodG9r" + + "ZW4nIFwKICAtLWRvY2tlci1wYXNzd29yZD0iJE5HQ19BUElfS0VZIiBcCiAgLS1uYW1lc3BhY2U9" + + "bnZjYS1vcGVyYXRvciBcCiAgLS1kcnktcnVuPWNsaWVudCAtbyB5YW1sIHwgXAogIGt1YmVjdGwg" + + "LS1jb250ZXh0IDxjb21wdXRlLXBsYW5lLWNvbnRleHQ+IGFwcGx5IC1mIC0KYGBgCgpSZWZlcmVu" + + "Y2UgaXQgaW4gdGhlIGNvbXB1dGUtcGxhbmUgZW52aXJvbm1lbnQgZmlsZToKCmBgYHlhbWwKZ2xv" + + "YmFsOgogIGltYWdlUHVsbFNlY3JldHM6CiAgICAtIG5hbWU6IG52Y3ItY3JlZHMKYGBgCgpUaGUg" + + "Y2hhcnQgYW5kIG9wZXJhdG9yIHVzZSB0aGF0IHJlZmVyZW5jZSBpbiBgbnZjYS1vcGVyYXRvcmAg" + + "YW5kIG1pcnJvciB0aGUKc2VjcmV0IHRvIGBudmNhLXN5c3RlbWAuIERvIG5vdCBjcmVhdGUgYSBi" + + "cm9hZGVyIG1hbnVhbCBjb21wdXRlIG5hbWVzcGFjZSBsaXN0LiBGb2xsb3cKW1NwbGl0IENvbXB1" + + "dGUtUGxhbmUgSW5zdGFsbGF0aW9uXShjb21wdXRlLXBsYW5lLWluc3RhbGxhdGlvbi5tZCkgZm9y" + + "IHRoZQpzZWxlY3RlZCBpbnN0YWxsIGZsb3cuCgojIyBWZXJpZmljYXRpb24KCmBgYGJhc2gKIyBD" + + "aGVjayB0aGF0IGEgY29udHJvbC1wbGFuZSBwb2QgaGFzIHRoZSBpbmplY3RlZCBzZWNyZXQKa3Vi" + + "ZWN0bCAtLWNvbnRleHQgPGNvbnRyb2wtcGxhbmUtY29udGV4dD4gZ2V0IHBvZCAtbiA8bmFtZXNw" + + "YWNlPiA8cG9kLW5hbWU+IFwKICAtbyBqc29ucGF0aD0ney5zcGVjLmltYWdlUHVsbFNlY3JldHN9" + + "JwojIEV4cGVjdGVkOiBbeyJuYW1lIjoibnZjci1jcmVkcyJ9XQoKIyBDaGVjayB0aGUgS3l2ZXJu" + + "byBhbm5vdGF0aW9uCmt1YmVjdGwgLS1jb250ZXh0IDxjb250cm9sLXBsYW5lLWNvbnRleHQ+IGdl" + + "dCBwb2QgLW4gPG5hbWVzcGFjZT4gPHBvZC1uYW1lPiBcCiAgLW8ganNvbnBhdGg9J3subWV0YWRh" + + "dGEuYW5ub3RhdGlvbnMubnZjZlwubnZpZGlhXC5jb20vaW1hZ2VwdWxsc2VjcmV0LWluamVjdGVk" + + "LWJ5fScKIyBFeHBlY3RlZDoga3l2ZXJubwoKIyBDaGVjayBwdWxsIGV2ZW50cwprdWJlY3RsIC0t" + + "Y29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgZXZlbnRzIC1uIDxuYW1lc3BhY2U+" + + "IFwKICAtLXNvcnQtYnk9Jy5sYXN0VGltZXN0YW1wJyB8IGdyZXAgLWkgcHVsbAojIFNob3VsZCBz" + + "aG93ICJTdWNjZXNzZnVsbHkgcHVsbGVkIiBub3QgIjQwMSBVbmF1dGhvcml6ZWQiCgojIENoZWNr" + + "IHRoZSBjaGFydC9vcGVyYXRvciBtaXJyb3Igb24gdGhlIGNvbXB1dGUgY2x1c3RlcgprdWJlY3Rs" + + "IC0tY29udGV4dCA8Y29tcHV0ZS1wbGFuZS1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMg" + + "XAogIC1uIG52Y2Etc3lzdGVtCmBgYAoKIyMgV2hlbiBQdWxsIFNlY3JldHMgQXJlIE5vdCBOZWVk" + + "ZWQKCi0gKipBV1MgRUNSIHdpdGggSUFNIG5vZGUgcm9sZXMqKjogSWYgeW91ciBub2RlcyBoYXZl" + + "IGBBbWF6b25FQzJDb250YWluZXJSZWdpc3RyeVJlYWRPbmx5YCBJQU0gcG9saWN5LCBLdWJlcm5l" + + "dGVzIGNhbiBwdWxsIGZyb20gRUNSIHdpdGhvdXQgZXhwbGljaXQgc2VjcmV0cy4KLSAqKlB1Ymxp" + + "YyByZWdpc3RyaWVzKio6IE5vIHB1bGwgc2VjcmV0cyBuZWVkZWQuCi0gKipDU1AgYnVpbHQtaW4g" + + "Y3JlZGVudGlhbCBoZWxwZXJzKio6IEdLRSBBcnRpZmFjdCBSZWdpc3RyeSwgQXp1cmUgQUNSIHdp" + + "dGggbWFuYWdlZCBpZGVudGl0eSwgYW5kIHNpbWlsYXIgc2VydmljZXMuCgojIyBUcm91Ymxlc2hv" + + "b3RpbmcKCiMjIyBQb2RzIHN0aWxsIGluIEltYWdlUHVsbEJhY2tPZmYgYWZ0ZXIgYXBwbHlpbmcg" + + "cG9saWN5CgpUaGUgS3l2ZXJubyBwb2xpY3kgb25seSBhZmZlY3RzIHBvZHMgY3JlYXRlZCAqKmFm" + + "dGVyKiogdGhlIHBvbGljeSBpcyBhcHBsaWVkLiBEZWxldGUgc3R1Y2sgcG9kcyB0byB0cmlnZ2Vy" + + "IHJlY3JlYXRpb246CgpgYGBiYXNoCmt1YmVjdGwgLS1jb250ZXh0IDx0YXJnZXQtY29udGV4dD4g" + + "ZGVsZXRlIHBvZHMgLW4gPG5hbWVzcGFjZT4gLS1hbGwKYGBgCgojIyMgS3l2ZXJubyBhZG1pc3Np" + + "b24gY29udHJvbGxlciBub3QgcnVubmluZwoKYGBgYmFzaAprdWJlY3RsIC0tY29udGV4dCA8Y29u" + + "dHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgcG9kcyAtbiBreXZlcm5vCiMgQWxsIHBvZHMgc2hvdWxk" + + "IGJlIFJ1bm5pbmcKYGBgCgojIyMgUG9saWN5IG5vdCBtYXRjaGluZwoKYGBgYmFzaAprdWJlY3Rs" + + "IC0tY29udGV4dCA8Y29udHJvbC1wbGFuZS1jb250ZXh0PiBnZXQgY2x1c3RlcnBvbGljeSBudmNm" + + "LWFkZC1pbWFnZXB1bGxzZWNyZXRzCiMgU2hvdWxkIHNob3cgUkVBRFk6IFRydWUKYGBgCgojIyMg" + + "V3Jvbmcgc2VjcmV0IG5hbWUKClRoZSBwb2xpY3kgcmVmZXJlbmNlcyBgbnZjci1jcmVkc2AuIFZl" + + "cmlmeSB0aGUgc2VjcmV0IGV4aXN0cyB3aXRoIHRoYXQgZXhhY3QgbmFtZToKCmBgYGJhc2gKa3Vi" + + "ZWN0bCAtLWNvbnRleHQgPHRhcmdldC1jb250ZXh0PiBnZXQgc2VjcmV0IG52Y3ItY3JlZHMgLW4g" + + "PG5hbWVzcGFjZT4KYGBgClBLBwhLQjWoABYAAAAWAABQSwECFAAUAAgAAAAAACEAzvtdfUoQAABK" + + "EAAAEgAJAAAAAAAAAAAAAAAAAAAAZGF0YS9tYW5pZmVzdC5qc29uVVQFAAEAps4SUEsBAhQAFAAI" + + "AAAAAAAhAP9282dTYQAAU2EAACMACQAAAAAAAAAAAAAAkxAAAGRhdGEvbnZjZi1zZWxmLW1hbmFn" + + "ZWQtY2xpL1NLSUxMLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhABSb7lraDQAA2g0AADMACQAA" + + "AAAAAAAAAAAAQHIAAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL2V4YW1wbGVzL2NpLXBpcGVs" + + "aW5lcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQChFOOBXQwAAF0MAAA0AAkAAAAAAAAAAAAA" + + "AISAAABkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9leGFtcGxlcy9tdWx0aS1jbHVzdGVyLm1k" + + "VVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAEInSQ8FDQAABQ0AADcACQAAAAAAAAAAAAAATI0AAGRh" + + "dGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvYWRkLWNvbXB1dGUtcGxhbmUubWRVVAUA" + + "AQCmzhJQSwECFAAUAAgAAAAAACEA1N6NNJ8ZAACfGQAAOQAJAAAAAAAAAAAAAAC/mgAAZGF0YS9u" + + "dmNmLXNlbGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9jcmVhdGUtYW5kLXJ1bi10YXNrLm1kVVQFAAEA" + + "ps4SUEsBAhQAFAAIAAAAAAAhANJD3AQYJQAAGCUAADcACQAAAAAAAAAAAAAAzrQAAGRhdGEvbnZj" + + "Zi1zZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvZGVwbG95LWFuZC1pbnZva2UubWRVVAUAAQCmzhJQ" + + "SwECFAAUAAgAAAAAACEAcpIsJr4OAAC+DgAAPQAJAAAAAAAAAAAAAABU2gAAZGF0YS9udmNmLXNl" + + "bGYtbWFuYWdlZC1jbGkvcHJvbXB0cy9kaWFnbm9zZS1mYWlsZWQtaW5zdGFsbC5tZFVUBQABAKbO" + + "ElBLAQIUABQACAAAAAAAIQBCceYeASgAAAEoAAA6AAkAAAAAAAAAAAAAAIbpAABkYXRhL252Y2Yt" + + "c2VsZi1tYW5hZ2VkLWNsaS9wcm9tcHRzL2luc3RhbGwtZnJvbS1zY3JhdGNoLm1kVVQFAAEAps4S" + + "UEsBAhQAFAAIAAAAAAAhAKrhOrnIBwAAyAcAADkACQAAAAAAAAAAAAAA+BEBAGRhdGEvbnZjZi1z" + + "ZWxmLW1hbmFnZWQtY2xpL3Byb21wdHMvcm90YXRlLWNsdXN0ZXItandrcy5tZFVUBQABAKbOElBL" + + "AQIUABQACAAAAAAAIQDah2NW5CEAAOQhAAAuAAkAAAAAAAAAAAAAADAaAQBkYXRhL252Y2Ytc2Vs" + + "Zi1tYW5hZ2VkLWNsaS9wcm9tcHRzL3RlYXJkb3duLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAh" + + "AHIND2QhIwAAISMAADAACQAAAAAAAAAAAAAAeTwBAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtY2xp" + + "L3JlZmVyZW5jZS9jb21tYW5kcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQA8GfBY4ggAAOII" + + "AAAyAAkAAAAAAAAAAAAAAAFgAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2Uv" + + "ZXhpdC1jb2Rlcy5tZFVUBQABAKbOElBLAQIUABQACAAAAAAAIQCvV4FFVzYAAFc2AAAtAAkAAAAA" + + "AAAAAAAAAExpAQBkYXRhL252Y2Ytc2VsZi1tYW5hZ2VkLWNsaS9yZWZlcmVuY2UvZmxhZ3MubWRV" + + "VAUAAQCmzhJQSwECFAAUAAgAAAAAACEA864ThHQRAAB0EQAANwAJAAAAAAAAAAAAAAAHoAEAZGF0" + + "YS9udmNmLXNlbGYtbWFuYWdlZC1jbGkvcmVmZXJlbmNlL3Ryb3VibGVzaG9vdGluZy5tZFVUBQAB" + + "AKbOElBLAQIUABQACAAAAAAAIQARwxSTSWIAAEliAAAsAAkAAAAAAAAAAAAAAOmxAQBkYXRhL252" + + "Y2Ytc2VsZi1tYW5hZ2VkLWluc3RhbGxhdGlvbi9TS0lMTC5tZFVUBQABAKbOElBLAQIUABQACAAA" + + "AAAAIQBHVWpWSlYAAEpWAAA0AAkAAAAAAAAAAAAAAJUUAgBkYXRhL252Y2Ytc2VsZi1tYW5hZ2Vk" + + "LWluc3RhbGxhdGlvbi9ldmFscy9ldmFscy5qc29uVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAAJS" + + "TkB/KAAAfygAAC8ACQAAAAAAAAAAAAAASmsCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFs" + + "bGF0aW9uL2V4YW1wbGVzLm1kVVQFAAEAps4SUEsBAhQAFAAIAAAAAAAhAJZjvFkSMAAAEjAAAEwA" + + "CQAAAAAAAAAAAAAAL5QCAGRhdGEvbnZjZi1zZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVy" + + "ZW5jZXMvY29tcHV0ZS1wbGFuZS1pbnN0YWxsYXRpb24ubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + + "ACEAtXpwO7UwAAC1MAAAOwAJAAAAAAAAAAAAAADExAIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1p" + + "bnN0YWxsYXRpb24vcmVmZXJlbmNlcy9kZWJ1Z2dpbmcubWRVVAUAAQCmzhJQSwECFAAUAAgAAAAA" + + "ACEAExHsjQoqAAAKKgAARAAJAAAAAAAAAAAAAADr9QIAZGF0YS9udmNmLXNlbGYtbWFuYWdlZC1p" + + "bnN0YWxsYXRpb24vcmVmZXJlbmNlcy9oZWxtZmlsZS1zdHJ1Y3R1cmUubWRVVAUAAQCmzhJQSwEC" + + "FAAUAAgAAAAAACEAOPknr7kHAAC5BwAAPwAJAAAAAAAAAAAAAABwIAMAZGF0YS9udmNmLXNlbGYt" + + "bWFuYWdlZC1pbnN0YWxsYXRpb24vcmVmZXJlbmNlcy9udmNmLXVpLWFkZG9uLm1kVVQFAAEAps4S" + + "UEsBAhQAFAAIAAAAAAAhAEtCNagAFgAAABYAAD4ACQAAAAAAAAAAAAAAnygDAGRhdGEvbnZjZi1z" + + "ZWxmLW1hbmFnZWQtaW5zdGFsbGF0aW9uL3JlZmVyZW5jZXMvcHVsbC1zZWNyZXRzLm1kVVQFAAEA" + + "ps4SUEsFBgAAAAAXABcArwkAABQ/AwAAAA==" var ( skillDataOnce sync.Once diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go index c0da210dc8..3ff792d990 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator.go @@ -131,6 +131,10 @@ type ClusterValidatorParams struct { // Env is passed to the validator container: namespace overrides, the // probe image, and whether the control plane is expected to be installed. Env map[string]string + // Tolerations are added to the control-plane ones the Job always + // carries, for clusters whose nodes use other taints, as the chart's + // clusterValidator.tolerations does. + Tolerations []corev1.Toleration } // Err is non-nil only when the run failed to execute (RBAC bootstrap, @@ -164,14 +168,15 @@ func NewClusterValidator() ClusterValidator { if err != nil { return ClusterValidatorResult{Err: fmt.Errorf("building kubernetes client: %w", err)} } - return runClusterValidator(ctx, client, p.Image, p.PullSecret, p.NoCleanup, p.Role, p.Registries, p.Env) + return runClusterValidator(ctx, client, p.Image, p.PullSecret, p.NoCleanup, p.Role, p.Registries, p.Env, + p.Tolerations...) } } // Testable core. Pass a fake clientset to unit-test without a real cluster. func runClusterValidator( ctx context.Context, client kubernetes.Interface, image, pullSecret string, noCleanup bool, role string, - registries []RegistryEntry, env map[string]string, + registries []RegistryEntry, env map[string]string, tolerations ...corev1.Toleration, ) ClusterValidatorResult { if image == "" { // Defensive: callers gate on configured image before invoking the @@ -275,7 +280,8 @@ func runClusterValidator( // so a role-wide sweep could only ever hit an overlapping run's live Job. jobName := fmt.Sprintf("%s-%d", clusterValidatorName, time.Now().UnixNano()) job, err := client.BatchV1().Jobs(clusterValidatorNamespace).Create( - vctx, buildClusterValidatorJob(jobName, image, pullSecret, role, runID, noCleanup, env), metav1.CreateOptions{}, + vctx, buildClusterValidatorJob(jobName, image, pullSecret, role, runID, noCleanup, env, tolerations...), + metav1.CreateOptions{}, ) if err != nil { // A create cut off by an interrupt or a dropped connection may still @@ -568,12 +574,15 @@ func ensureClusterValidatorRBAC(ctx context.Context, client kubernetes.Interface // Deployments/StatefulSets: list for Tier-1/Tier-2 HA readiness checks. // DaemonSets: create/delete for the node-to-node DaemonSet probe; list to watch pod readiness. {APIGroups: []string{"apps"}, Resources: []string{"deployments", "statefulsets"}, Verbs: []string{"get", "list"}}, + // ControllerRevisions: the creation time of a rolling StatefulSet's + // update revision dates its rollout, which Tier-2 bounds. + {APIGroups: []string{"apps"}, Resources: []string{"controllerrevisions"}, Verbs: []string{"get"}}, {APIGroups: []string{"apps"}, Resources: []string{"daemonsets"}, Verbs: []string{"get", "list", "create", "delete"}}, // Gateway API: the validator follows every NVCF route kind's // parentRefs to learn which Gateways are NVCF's, and reads those - // Gateways' classes. + // Gateways' classes and the controllers that run them. {APIGroups: []string{"gateway.networking.k8s.io"}, Resources: []string{ - "gateways", "httproutes", "grpcroutes", "tcproutes", "udproutes", + "gateways", "gatewayclasses", "httproutes", "grpcroutes", "tcproutes", "udproutes", }, Verbs: []string{"get", "list"}}, {NonResourceURLs: []string{"/readyz", "/version", "/healthz"}, Verbs: []string{"get"}}, }, @@ -1023,7 +1032,10 @@ func parseRegistryHostPort(s string) (host string, port int) { // buildClusterValidatorJob creates the validator Job. PullIfNotPresent reuses // locally-imported images. VALIDATOR_PREFLIGHT=true skips the summary ConfigMap // write. VALIDATOR_ROLE selects the check set (control-plane vs compute-plane). -func buildClusterValidatorJob(name, image, pullSecret, role, runID string, noCleanup bool, env map[string]string) *batchv1.Job { +func buildClusterValidatorJob( + name, image, pullSecret, role, runID string, noCleanup bool, env map[string]string, + tolerations ...corev1.Toleration, +) *batchv1.Job { backoff := int32(0) // Pod shape mirrors deployments/nvca-operator/templates/cronjob.yaml, which // runs this same image. Two producers of one pod spec now exist in two @@ -1040,7 +1052,7 @@ func buildClusterValidatorJob(name, image, pullSecret, role, runID string, noCle podSpec := corev1.PodSpec{ ServiceAccountName: clusterValidatorRBACName(role, runID), RestartPolicy: corev1.RestartPolicyNever, - Tolerations: clusterValidatorTolerations(), + Tolerations: append(clusterValidatorTolerations(), tolerations...), SecurityContext: &corev1.PodSecurityContext{ RunAsUser: &runAsUser, RunAsGroup: &runAsUser, diff --git a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go index 918afcaf1d..80b9c703bb 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/clustervalidator_lifecycle_test.go @@ -382,9 +382,30 @@ func TestEnsureClusterValidatorRBAC_GrantsGatewayAPIReads(t *testing.T) { } } } - for _, res := range []string{"gateways", "httproutes", "grpcroutes", "tcproutes", "udproutes"} { + for _, res := range []string{"gateways", "gatewayclasses", "httproutes", "grpcroutes", "tcproutes", "udproutes"} { assert.True(t, granted[res], res) } + // Tier-2 dates a rolling StatefulSet's rollout from its update revision. + assert.True(t, rbacRuleCovers(cr.Rules, "apps", "controllerrevisions", "get")) +} + +// The extra tolerations reach the Job beside the control-plane ones it always +// carries, so a cluster whose nodes use other taints can schedule it. +func TestRunClusterValidator_ExtraTolerationsReachTheJob(t *testing.T) { + t.Setenv("NGC_API_KEY", "key") + client := lifecycleClient(succeeded, "") + var job *batchv1.Job + client.PrependReactor("create", "jobs", func(a ktesting.Action) (bool, runtime.Object, error) { + job = a.(ktesting.CreateAction).GetObject().(*batchv1.Job).DeepCopy() + return false, nil, nil + }) + extra := corev1.Toleration{Key: "dedicated", Operator: corev1.TolerationOpEqual, Value: "infra", + Effect: corev1.TaintEffectNoSchedule} + res := runClusterValidator(context.Background(), client, "nvcr.io/nvidia/validator:1", "", false, + clusterValidatorComputePlaneRole, nil, nil, extra) + require.NoError(t, res.Err) + require.NotNil(t, job) + assert.Equal(t, append(clusterValidatorTolerations(), extra), job.Spec.Template.Spec.Tolerations) } // The control-plane validator receives the enumerated registries and the diff --git a/src/clis/nvcf-cli/internal/selfhosted/preflight.go b/src/clis/nvcf-cli/internal/selfhosted/preflight.go index a88d0764fc..cdf1798fec 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/preflight.go +++ b/src/clis/nvcf-cli/internal/selfhosted/preflight.go @@ -30,6 +30,7 @@ import ( "time" "github.com/Masterminds/semver/v3" + corev1 "k8s.io/api/core/v1" "nvcf-cli/internal/selfhosted/progress" ) @@ -372,6 +373,9 @@ type RoleConfig struct { // ClusterValidatorEnv is passed to the validator container for both roles. ClusterValidatorEnv map[string]string + // ClusterValidatorTolerations are added to the validator Job's + // control-plane tolerations. + ClusterValidatorTolerations []corev1.Toleration } // categorySpec groups a set of checks under a named category. Categories run @@ -478,6 +482,7 @@ func controlPlaneCheckCategory(rc RoleConfig) categorySpec { validatorRoleControlPlane, rc.ClusterValidatorRegistries, rc.ClusterValidatorEnv, + rc.ClusterValidatorTolerations..., )) } return cat @@ -520,6 +525,7 @@ func computePlaneCheckCategory(rc RoleConfig) categorySpec { validatorRoleComputePlane, nil, // registries: compute-plane doesn't use the ConfigMap reachability list rc.ClusterValidatorEnv, + rc.ClusterValidatorTolerations..., )) } return cat @@ -632,7 +638,7 @@ func nodeInotifyCheck(prober NodeInotifyProber, kubeContext string) binaryCheckS // set via VALIDATOR_ROLE; registries extends the ConfigMap reachability list. func clusterValidatorCheck( cv ClusterValidator, kubeContext, image, pullSecret string, noCleanup bool, role string, - registries []RegistryEntry, env map[string]string, + registries []RegistryEntry, env map[string]string, tolerations ...corev1.Toleration, ) binaryCheckSpec { const id = "cluster-validator" return binaryCheckSpec{ @@ -651,6 +657,7 @@ func clusterValidatorCheck( Role: role, Registries: registries, Env: env, + Tolerations: tolerations, }) r.Logs = result.Logs r.Detail = clusterValidatorDetail(kubeContext, result.JobName) diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go index ec8c69b90a..3d5b8ec76e 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred.go @@ -299,9 +299,6 @@ type StackValues struct { ACMESolverRepository string // EnvoyGatewayNamespace is ingress.gatewayApi.controllerNamespace. EnvoyGatewayNamespace string - // HAMode is highAvailability.mode, defaulting to "none" as the stack's - // own template does when the key is unset. Empty when no file was read. - HAMode string // Gateways are the NVCF Gateways the stack names under // ingress.gatewayApi.gateways, as sorted, distinct namespace/name entries. Gateways []string @@ -332,12 +329,6 @@ func LoadStackValues(files []string) StackValues { EnvoyGatewayNamespace: digString(merged, "ingress", "gatewayApi", "controllerNamespace"), Gateways: stackGateways(merged), } - if found { - values.HAMode = digString(merged, "highAvailability", "mode") - if values.HAMode == "" { - values.HAMode = "none" - } - } return values } diff --git a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go index 33f6777900..7db67f7477 100644 --- a/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go +++ b/src/clis/nvcf-cli/internal/selfhosted/registry_cred_test.go @@ -576,7 +576,7 @@ func TestProbeRegistryCredential_CriticalAnonymousIsNotVerified(t *testing.T) { // The launcher reads the stack's HA mode and NVCF Gateways, so the validator // is told rather than left to guess. An unset mode is "none", as the stack's // own template reads it, and a Gateway entry left empty is not in use. -func TestLoadStackValues_HAModeAndGateways(t *testing.T) { +func TestLoadStackValues_Gateways(t *testing.T) { dir := t.TempDir() base, env := dir+"/base.yaml", dir+"/prod.yaml" require.NoError(t, writeFile(base, []byte(` @@ -598,13 +598,9 @@ ingress: nats: {name: shared-gw, namespace: envoy-gateway-system} `))) got := LoadStackValues([]string{base, env}) - assert.Equal(t, "enforced", got.HAMode) assert.Equal(t, []string{"envoy-gateway-system/grpc-gw", "envoy-gateway-system/shared-gw"}, got.Gateways, "sorted, distinct, and without the unused llmGrpc entry") got = LoadStackValues([]string{base}) - assert.Equal(t, "none", got.HAMode, "unset reads as none, as the stack template does") assert.Empty(t, got.Gateways) - - assert.Empty(t, LoadStackValues(nil).HAMode, "no stack read means no mode to report") }