UNPKG

projen

Version:

CDK for software projects

131 lines • 49.1 kB
"use strict"; // @see https://docs.gitlab.com/ee/ci/yaml/ // Schema from: https://gitlab.com/gitlab-org/gitlab/-/raw/master/app/assets/javascripts/editor/schema/ci.json // Initial TypeScript Interfaces from: https://app.quicktype.io/# Object.defineProperty(exports, "__esModule", { value: true }); exports.WorkflowWhen = exports.Strategy = exports.LinkType = exports.DefaultElement = exports.KubernetesEnum = exports.DeploymentTier = exports.Action = exports.JobWhen = exports.PullPolicy = exports.CacheWhen = exports.CachePolicy = void 0; /** * Configure the upload and download behaviour of a cache. * @see https://docs.gitlab.com/ee/ci/yaml/#cachepolicy */ var CachePolicy; (function (CachePolicy) { /** Only download the cache when the job starts, but never upload changes when the job finishes. */ CachePolicy["PULL"] = "pull"; /** Only upload a cache when the job finishes, but never download the cache when the job starts. */ CachePolicy["PUSH"] = "push"; /** The job downloads the cache when the job starts, and uploads changes to the cache when the job ends. */ CachePolicy["PULL_PUSH"] = "pull-push"; })(CachePolicy || (exports.CachePolicy = CachePolicy = {})); /** * Configure when artifacts are uploaded depended on job status. * @see https://docs.gitlab.com/ee/ci/yaml/#cachewhen */ var CacheWhen; (function (CacheWhen) { /** Upload artifacts regardless of job status. */ CacheWhen["ALWAYS"] = "always"; /** Upload artifacts only when the job fails. */ CacheWhen["ON_FAILURE"] = "on_failure"; /** Upload artifacts only when the job succeeds (this is the default). */ CacheWhen["ON_SUCCESS"] = "on_success"; })(CacheWhen || (exports.CacheWhen = CacheWhen = {})); /** * Describes the conditions for when to pull an image. * @see https://docs.gitlab.com/ee/ci/yaml/#servicepull_policy */ var PullPolicy; (function (PullPolicy) { PullPolicy["ALWAYS"] = "always"; PullPolicy["NEVER"] = "never"; PullPolicy["IF_NOT_PRESENT"] = "if-not-present"; })(PullPolicy || (exports.PullPolicy = PullPolicy = {})); /** * Describes the conditions for when to run the job. Defaults to 'on_success'. * @see https://docs.gitlab.com/ee/ci/yaml/#when */ var JobWhen; (function (JobWhen) { JobWhen["ALWAYS"] = "always"; JobWhen["DELAYED"] = "delayed"; JobWhen["MANUAL"] = "manual"; JobWhen["NEVER"] = "never"; JobWhen["ON_FAILURE"] = "on_failure"; JobWhen["ON_SUCCESS"] = "on_success"; })(JobWhen || (exports.JobWhen = JobWhen = {})); /** * Specifies what this job will do. 'start' (default) indicates the job will start the * deployment. 'prepare' indicates this will not affect the deployment. 'stop' indicates * this will stop the deployment. */ var Action; (function (Action) { Action["PREPARE"] = "prepare"; Action["START"] = "start"; Action["STOP"] = "stop"; })(Action || (exports.Action = Action = {})); /** * Explicitly specifies the tier of the deployment environment if non-standard environment * name is used. */ var DeploymentTier; (function (DeploymentTier) { DeploymentTier["DEVELOPMENT"] = "development"; DeploymentTier["OTHER"] = "other"; DeploymentTier["PRODUCTION"] = "production"; DeploymentTier["STAGING"] = "staging"; DeploymentTier["TESTING"] = "testing"; })(DeploymentTier || (exports.DeploymentTier = DeploymentTier = {})); /** * Filter job based on if Kubernetes integration is active. */ var KubernetesEnum; (function (KubernetesEnum) { KubernetesEnum["ACTIVE"] = "active"; })(KubernetesEnum || (exports.KubernetesEnum = KubernetesEnum = {})); var DefaultElement; (function (DefaultElement) { DefaultElement["AFTER_SCRIPT"] = "after_script"; DefaultElement["ARTIFACTS"] = "artifacts"; DefaultElement["BEFORE_SCRIPT"] = "before_script"; DefaultElement["CACHE"] = "cache"; DefaultElement["IMAGE"] = "image"; DefaultElement["INTERRUPTIBLE"] = "interruptible"; DefaultElement["RETRY"] = "retry"; DefaultElement["SERVICES"] = "services"; DefaultElement["TAGS"] = "tags"; DefaultElement["TIMEOUT"] = "timeout"; })(DefaultElement || (exports.DefaultElement = DefaultElement = {})); /** * The content kind of what users can download via url. */ var LinkType; (function (LinkType) { LinkType["IMAGE"] = "image"; LinkType["OTHER"] = "other"; LinkType["PACKAGE"] = "package"; LinkType["RUNBOOK"] = "runbook"; })(LinkType || (exports.LinkType = LinkType = {})); /** * You can mirror the pipeline status from the triggered pipeline to the source bridge job * by using strategy: depend or mirror * @see https://docs.gitlab.com/ee/ci/yaml/#triggerstrategy */ var Strategy; (function (Strategy) { /** Not recommended, use mirror instead. The trigger job status shows failed, success, or running, depending on the downstream pipeline status. */ Strategy["DEPEND"] = "depend"; /** Mirrors the status of the downstream pipeline exactly. */ Strategy["MIRROR"] = "mirror"; })(Strategy || (exports.Strategy = Strategy = {})); /** * Describes the conditions for when to run the job. Defaults to 'on_success'. * The value can only be 'always' or 'never' when used with workflow. * @see https://docs.gitlab.com/ee/ci/yaml/#workflowrules */ var WorkflowWhen; (function (WorkflowWhen) { WorkflowWhen["ALWAYS"] = "always"; WorkflowWhen["NEVER"] = "never"; })(WorkflowWhen || (exports.WorkflowWhen = WorkflowWhen = {})); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9naXRsYWIvY29uZmlndXJhdGlvbi1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkNBQTJDO0FBQzNDLDhHQUE4RztBQUM5RyxpRUFBaUU7OztBQXFDakU7OztHQUdHO0FBQ0gsSUFBWSxXQU9YO0FBUEQsV0FBWSxXQUFXO0lBQ3JCLG1HQUFtRztJQUNuRyw0QkFBYSxDQUFBO0lBQ2IsbUdBQW1HO0lBQ25HLDRCQUFhLENBQUE7SUFDYiwyR0FBMkc7SUFDM0csc0NBQXVCLENBQUE7QUFDekIsQ0FBQyxFQVBXLFdBQVcsMkJBQVgsV0FBVyxRQU90QjtBQUVEOzs7R0FHRztBQUNILElBQVksU0FPWDtBQVBELFdBQVksU0FBUztJQUNuQixpREFBaUQ7SUFDakQsOEJBQWlCLENBQUE7SUFDakIsZ0RBQWdEO0lBQ2hELHNDQUF5QixDQUFBO0lBQ3pCLHlFQUF5RTtJQUN6RSxzQ0FBeUIsQ0FBQTtBQUMzQixDQUFDLEVBUFcsU0FBUyx5QkFBVCxTQUFTLFFBT3BCO0FBa0tEOzs7R0FHRztBQUNILElBQVksVUFJWDtBQUpELFdBQVksVUFBVTtJQUNwQiwrQkFBaUIsQ0FBQTtJQUNqQiw2QkFBZSxDQUFBO0lBQ2YsK0NBQWlDLENBQUE7QUFDbkMsQ0FBQyxFQUpXLFVBQVUsMEJBQVYsVUFBVSxRQUlyQjtBQXlERDs7O0dBR0c7QUFDSCxJQUFZLE9BT1g7QUFQRCxXQUFZLE9BQU87SUFDakIsNEJBQWlCLENBQUE7SUFDakIsOEJBQW1CLENBQUE7SUFDbkIsNEJBQWlCLENBQUE7SUFDakIsMEJBQWUsQ0FBQTtJQUNmLG9DQUF5QixDQUFBO0lBQ3pCLG9DQUF5QixDQUFBO0FBQzNCLENBQUMsRUFQVyxPQUFPLHVCQUFQLE9BQU8sUUFPbEI7QUE2RkQ7Ozs7R0FJRztBQUNILElBQVksTUFJWDtBQUpELFdBQVksTUFBTTtJQUNoQiw2QkFBbUIsQ0FBQTtJQUNuQix5QkFBZSxDQUFBO0lBQ2YsdUJBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxNQUFNLHNCQUFOLE1BQU0sUUFJakI7QUFFRDs7O0dBR0c7QUFDSCxJQUFZLGNBTVg7QUFORCxXQUFZLGNBQWM7SUFDeEIsNkNBQTJCLENBQUE7SUFDM0IsaUNBQWUsQ0FBQTtJQUNmLDJDQUF5QixDQUFBO0lBQ3pCLHFDQUFtQixDQUFBO0lBQ25CLHFDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFOVyxjQUFjLDhCQUFkLGNBQWMsUUFNekI7QUF5QkQ7O0dBRUc7QUFDSCxJQUFZLGNBRVg7QUFGRCxXQUFZLGNBQWM7SUFDeEIsbUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUZXLGNBQWMsOEJBQWQsY0FBYyxRQUV6QjtBQWVELElBQVksY0FXWDtBQVhELFdBQVksY0FBYztJQUN4QiwrQ0FBNkIsQ0FBQTtJQUM3Qix5Q0FBdUIsQ0FBQTtJQUN2QixpREFBK0IsQ0FBQTtJQUMvQixpQ0FBZSxDQUFBO0lBQ2YsaUNBQWUsQ0FBQTtJQUNmLGlEQUErQixDQUFBO0lBQy9CLGlDQUFlLENBQUE7SUFDZix1Q0FBcUIsQ0FBQTtJQUNyQiwrQkFBYSxDQUFBO0lBQ2IscUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQVhXLGNBQWMsOEJBQWQsY0FBYyxRQVd6QjtBQStERDs7R0FFRztBQUNILElBQVksUUFLWDtBQUxELFdBQVksUUFBUTtJQUNsQiwyQkFBZSxDQUFBO0lBQ2YsMkJBQWUsQ0FBQTtJQUNmLCtCQUFtQixDQUFBO0lBQ25CLCtCQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxRQUFRLHdCQUFSLFFBQVEsUUFLbkI7QUF5RUQ7Ozs7R0FJRztBQUNILElBQVksUUFLWDtBQUxELFdBQVksUUFBUTtJQUNsQixrSkFBa0o7SUFDbEosNkJBQWlCLENBQUE7SUFDakIsNkRBQTZEO0lBQzdELDZCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFMVyxRQUFRLHdCQUFSLFFBQVEsUUFLbkI7QUF5Q0Q7Ozs7R0FJRztBQUNILElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUN0QixpQ0FBaUIsQ0FBQTtJQUNqQiwrQkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFIVyxZQUFZLDRCQUFaLFlBQVksUUFHdkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvXG4vLyBTY2hlbWEgZnJvbTogaHR0cHM6Ly9naXRsYWIuY29tL2dpdGxhYi1vcmcvZ2l0bGFiLy0vcmF3L21hc3Rlci9hcHAvYXNzZXRzL2phdmFzY3JpcHRzL2VkaXRvci9zY2hlbWEvY2kuanNvblxuLy8gSW5pdGlhbCBUeXBlU2NyaXB0IEludGVyZmFjZXMgZnJvbTogaHR0cHM6Ly9hcHAucXVpY2t0eXBlLmlvLyNcblxuLyoqXG4gKiBDYWNoZSBEZWZpbml0aW9uLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNjYWNoZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlIHtcbiAgLyoqIERlZmluZXMgd2hpY2ggZmlsZXMgb3IgZGlyZWN0b3JpZXMgdG8gY2FjaGUuICovXG4gIHJlYWRvbmx5IHBhdGhzPzogc3RyaW5nW107XG5cbiAgLyoqIFVzZWQgdGhlIHRvIGdpdmUgZWFjaCBjYWNoZSBhIHVuaXF1ZSBpZGVudGlmeWluZyBrZXkuIEFsbCBqb2JzIHRoYXQgdXNlIHRoZSBzYW1lIGNhY2hlIGtleSB1c2UgdGhlIHNhbWUgY2FjaGUuICovXG4gIHJlYWRvbmx5IGtleT86IHN0cmluZyB8IENhY2hlS2V5RmlsZXM7XG5cbiAgLyoqIElmIHNldCB0byB0cnVlIGFsbCBmaWxlcyB0aGF0IGFyZSB1bnRyYWNrZWQgaW4geW91ciBHaXQgcmVwb3NpdG9yeSB3aWxsIGJlIGNhY2hlZC4gKi9cbiAgcmVhZG9ubHkgdW50cmFja2VkPzogYm9vbGVhbjtcblxuICAvKiogRGVmaW5lcyB0aGUgdXBsb2FkIGFuZCBkb3dubG9hZCBiZWhhdmlvdXIgb2YgdGhlIGNhY2hlLiAqL1xuICByZWFkb25seSBwb2xpY3k/OiBDYWNoZVBvbGljeTtcblxuICAvKiogRGVmaW5lcyB3aGVuIHRvIHNhdmUgdGhlIGNhY2hlLCBiYXNlZCBvbiB0aGUgc3RhdHVzIG9mIHRoZSBqb2IgKERlZmF1bHQ6IEpvYiBTdWNjZXNzKS4gKi9cbiAgcmVhZG9ubHkgd2hlbj86IENhY2hlV2hlbjtcblxuICAvKiogVXNlIGNhY2hlOmZhbGxiYWNrX2tleXMgdG8gc3BlY2lmeSBhIGxpc3Qgb2Yga2V5cyB0byB0cnkgdG8gcmVzdG9yZSBjYWNoZSBmcm9tIGlmIHRoZXJlIGlzIG5vIGNhY2hlIGZvdW5kIGZvciB0aGUgY2FjaGU6a2V5LiBDYWNoZXMgYXJlIHJldHJpZXZlZCBpbiB0aGUgb3JkZXIgc3BlY2lmaWVkIGluIHRoZSBmYWxsYmFja19rZXlzIHNlY3Rpb24uICovXG4gIHJlYWRvbmx5IGZhbGxiYWNrS2V5cz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFVzZSB0aGlzIGNvbnN0cnVjdCB0byBnZW5lcmF0ZSBhIG5ldyBrZXkgd2hlbiBvbmUgb3IgdHdvIHNwZWNpZmljIGZpbGVzIGNoYW5nZS5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jY2FjaGVrZXlmaWxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlS2V5RmlsZXMge1xuICAvKiogVGhlIGZpbGVzIHRoYXQgYXJlIGNoZWNrZWQgYWdhaW5zdC4gSWYgdGhlIFNIQSBjaGVja3N1bSBjaGFuZ2VzLCB0aGUgY2FjaGUgYmVjb21lcyBpbnZhbGlkLiAqL1xuICByZWFkb25seSBmaWxlczogc3RyaW5nW107XG4gIC8qKiBBZGRzIGEgY3VzdG9tIHByZWZpeCB0byB0aGUgY2hlY2tzdW1zIGNvbXB1dGVkLiAqL1xuICByZWFkb25seSBwcmVmaXg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJlIHRoZSB1cGxvYWQgYW5kIGRvd25sb2FkIGJlaGF2aW91ciBvZiBhIGNhY2hlLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNjYWNoZXBvbGljeVxuICovXG5leHBvcnQgZW51bSBDYWNoZVBvbGljeSB7XG4gIC8qKiBPbmx5IGRvd25sb2FkIHRoZSBjYWNoZSB3aGVuIHRoZSBqb2Igc3RhcnRzLCBidXQgbmV2ZXIgdXBsb2FkIGNoYW5nZXMgd2hlbiB0aGUgam9iIGZpbmlzaGVzLiAqL1xuICBQVUxMID0gXCJwdWxsXCIsXG4gIC8qKiBPbmx5IHVwbG9hZCBhIGNhY2hlIHdoZW4gdGhlIGpvYiBmaW5pc2hlcywgYnV0IG5ldmVyIGRvd25sb2FkIHRoZSBjYWNoZSB3aGVuIHRoZSBqb2Igc3RhcnRzLiAqL1xuICBQVVNIID0gXCJwdXNoXCIsXG4gIC8qKiBUaGUgam9iIGRvd25sb2FkcyB0aGUgY2FjaGUgd2hlbiB0aGUgam9iIHN0YXJ0cywgYW5kIHVwbG9hZHMgY2hhbmdlcyB0byB0aGUgY2FjaGUgd2hlbiB0aGUgam9iIGVuZHMuICovXG4gIFBVTExfUFVTSCA9IFwicHVsbC1wdXNoXCIsXG59XG5cbi8qKlxuICogQ29uZmlndXJlIHdoZW4gYXJ0aWZhY3RzIGFyZSB1cGxvYWRlZCBkZXBlbmRlZCBvbiBqb2Igc3RhdHVzLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNjYWNoZXdoZW5cbiAqL1xuZXhwb3J0IGVudW0gQ2FjaGVXaGVuIHtcbiAgLyoqIFVwbG9hZCBhcnRpZmFjdHMgcmVnYXJkbGVzcyBvZiBqb2Igc3RhdHVzLiAqL1xuICBBTFdBWVMgPSBcImFsd2F5c1wiLFxuICAvKiogVXBsb2FkIGFydGlmYWN0cyBvbmx5IHdoZW4gdGhlIGpvYiBmYWlscy4gKi9cbiAgT05fRkFJTFVSRSA9IFwib25fZmFpbHVyZVwiLFxuICAvKiogVXBsb2FkIGFydGlmYWN0cyBvbmx5IHdoZW4gdGhlIGpvYiBzdWNjZWVkcyAodGhpcyBpcyB0aGUgZGVmYXVsdCkuICovXG4gIE9OX1NVQ0NFU1MgPSBcIm9uX3N1Y2Nlc3NcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0SG9va3Mge1xuICAvKiogU3BlY2lmeSBhIGxpc3Qgb2YgY29tbWFuZHMgdG8gZXhlY3V0ZSBvbiB0aGUgcnVubmVyIGJlZm9yZSBjbG9uaW5nIHRoZSBHaXQgcmVwb3NpdG9yeSBhbmQgYW55IHN1Ym1vZHVsZXMgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vY2kveWFtbC8jaG9va3NwcmVfZ2V0X3NvdXJjZXNfc2NyaXB0ICovXG4gIHJlYWRvbmx5IHByZUdldFNvdXJjZXNTY3JpcHQ/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBEZWZhdWx0IHNldHRpbmdzIGZvciB0aGUgQ0kgQ29uZmlndXJhdGlvbi4gSm9icyB0aGF0IGRvIG5vdCBkZWZpbmUgb25lIG9yIG1vcmUgb2YgdGhlIGxpc3RlZCBrZXl3b3JkcyB1c2UgdGhlIHZhbHVlIGRlZmluZWQgaW4gdGhlIGRlZmF1bHQgc2VjdGlvbi5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jZGVmYXVsdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHQge1xuICAvKiBEZWZpbmVzIHNjcmlwdHMgdGhhdCBzaG91bGQgcnVuICphZnRlciogYWxsIGpvYnMuIENhbiBiZSBvdmVycmlkZW4gYnkgdGhlIGpvYiBsZXZlbCBgYWZ0ZXJTY3JpcHQuICovXG4gIHJlYWRvbmx5IGFmdGVyU2NyaXB0Pzogc3RyaW5nW107XG4gIC8qIExpc3Qgb2YgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRoYXQgc2hvdWxkIGJlIGF0dGFjaGVkIHRvIHRoZSBqb2IgaWYgaXQgc3VjY2VlZHMuIEFydGlmYWN0cyBhcmUgc2VudCB0byBHaXRsYWIgd2hlcmUgdGhleSBjYW4gYmUgZG93bmxvYWRlZC4gKi9cbiAgcmVhZG9ubHkgYXJ0aWZhY3RzPzogQXJ0aWZhY3RzO1xuICAvKiBEZWZpbmVzIHNjcmlwdHMgdGhhdCBzaG91bGQgcnVuICpiZWZvcmUqIGFsbCBqb2JzLiBDYW4gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBqb2IgbGV2ZWwgYGFmdGVyU2NyaXB0YC4gKi9cbiAgcmVhZG9ubHkgYmVmb3JlU2NyaXB0Pzogc3RyaW5nW107XG4gIC8qIEEgbGlzdCBvZiBjYWNoZSBkZWZpbml0aW9ucyAobWF4LiA0KSB3aXRoIHRoZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gY2FjaGUgYmV0d2VlbiBqb2JzLiBZb3UgY2FuIG9ubHkgdXNlIHBhdGhzIHRoYXQgYXJlIGluIHRoZSBsb2NhbCB3b3JraW5nIGNvcHkuICovXG4gIHJlYWRvbmx5IGNhY2hlPzogQ2FjaGVbXTtcbiAgLyoqIFNwZWNpZmllcyB0aGUgZGVmYXVsdCBJRCB0b2tlbnMgKEpTT04gV2ViIFRva2VucykgdGhhdCBhcmUgdXNlZCBmb3IgQ0kvQ0QgYXV0aGVudGljYXRpb24gdG8gdXNlIGdsb2JhbGx5IGZvciBhbGwgam9icy4gKi9cbiAgcmVhZG9ubHkgaWRUb2tlbnM/OiBSZWNvcmQ8c3RyaW5nLCBJRFRva2VuPjtcbiAgLyogU3BlY2lmaWVzIHRoZSBkZWZhdWx0IGRvY2tlciBpbWFnZSB0byB1c2UgZ2xvYmFsbHkgZm9yIGFsbCBqb2JzLiAqL1xuICByZWFkb25seSBpbWFnZT86IEltYWdlO1xuICAvKiBJZiBhIGpvYiBzaG91bGQgYmUgY2FuY2VsZWQgd2hlbiBhIG5ld2VyIHBpcGVsaW5lIHN0YXJ0cyBiZWZvcmUgdGhlIGpvYiBjb21wbGV0ZXMgKERlZmF1bHQ6IGZhbHNlKS4qL1xuICByZWFkb25seSBpbnRlcnJ1cHRpYmxlPzogYm9vbGVhbjtcbiAgLyogSG93IG1hbnkgdGltZXMgYSBqb2IgaXMgcmV0cmllZCBpZiBpdCBmYWlscy4gSWYgbm90IGRlZmluZWQsIGRlZmF1bHRzIHRvIDAgYW5kIGpvYnMgZG8gbm90IHJldHJ5LiAqL1xuICByZWFkb25seSByZXRyeT86IFJldHJ5O1xuICAvKiBBZGRpdGlvbmFsIERvY2tlciBpbWFnZXMgdG8gcnVuIHNjcmlwdHMgaW4uIFRoZSBzZXJ2aWNlIGltYWdlIGlzIGxpbmtlZCB0byB0aGUgaW1hZ2Ugc3BlY2lmaWVkIGluIHRoZSAgaW1hZ2UgcGFyYW1ldGVyLiAqL1xuICByZWFkb25seSBzZXJ2aWNlcz86IFNlcnZpY2VbXTtcbiAgLyogVXNlZCB0byBzZWxlY3QgYSBzcGVjaWZpYyBydW5uZXIgZnJvbSB0aGUgbGlzdCBvZiBhbGwgcnVubmVycyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoZSBwcm9qZWN0LiAqL1xuICByZWFkb25seSB0YWdzPzogc3RyaW5nW107XG4gIC8qIEEgZGVmYXVsdCB0aW1lb3V0IGpvYiB3cml0dGVuIGluIG5hdHVyYWwgbGFuZ3VhZ2UgKEV4LiBvbmUgaG91ciwgMzYwMCBzZWNvbmRzLCA2MCBtaW51dGVzKS4gKi9cbiAgcmVhZG9ubHkgdGltZW91dD86IHN0cmluZztcbiAgLyoqIFNwZWNpZnkgYSBsaXN0IG9mIGNvbW1hbmRzIHRvIGV4ZWN1dGUgb24gdGhlIHJ1bm5lciBiZWZvcmUgY2xvbmluZyB0aGUgR2l0IHJlcG9zaXRvcnkgYW5kIGFueSBzdWJtb2R1bGVzIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2NpL3lhbWwvI2hvb2tzcHJlX2dldF9zb3VyY2VzX3NjcmlwdCAqL1xuICByZWFkb25seSBob29rcz86IERlZmF1bHRIb29rcztcbn1cblxuLyoqXG4gKiBVc2VkIHRvIHNwZWNpZnkgYSBsaXN0IG9mIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0aGF0IHNob3VsZCBiZSBhdHRhY2hlZCB0byB0aGUgam9iIGlmIGl0XG4gKiBzdWNjZWVkcy4gQXJ0aWZhY3RzIGFyZSBzZW50IHRvIEdpdGxhYiB3aGVyZSB0aGV5IGNhbiBiZSBkb3dubG9hZGVkLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNhcnRpZmFjdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcnRpZmFjdHMge1xuICAvKiogQSBsaXN0IG9mIHBhdGhzIHRvIGZpbGVzL2ZvbGRlcnMgdGhhdCBzaG91bGQgYmUgZXhjbHVkZWQgaW4gdGhlIGFydGlmYWN0LiAqL1xuICByZWFkb25seSBleGNsdWRlPzogc3RyaW5nW107XG4gIC8qKiBIb3cgbG9uZyBhcnRpZmFjdHMgc2hvdWxkIGJlIGtlcHQuIFRoZXkgYXJlIHNhdmVkIDMwIGRheXMgYnkgZGVmYXVsdC4gQXJ0aWZhY3RzIHRoYXQgaGF2ZSBleHBpcmVkIGFyZSByZW1vdmVkIHBlcmlvZGljYWxseSB2aWEgY3JvbiBqb2IuIFN1cHBvcnRzIGEgd2lkZSB2YXJpZXR5IG9mIGZvcm1hdHMsIGUuZy4gJzEgd2VlaycsICczIG1pbnMgNCBzZWMnLCAnMiBocnMgMjAgbWluJywgJzJoMjBtaW4nLCAnNiBtb3MgMSBkYXknLCAnNDcgeXJzIDYgbW9zIGFuZCA0ZCcsICczIHdlZWtzIGFuZCAyIGRheXMnLiAqL1xuICByZWFkb25seSBleHBpcmVJbj86IHN0cmluZztcbiAgLyoqIENhbiBiZSB1c2VkIHRvIGV4cG9zZSBqb2IgYXJ0aWZhY3RzIGluIHRoZSBtZXJnZSByZXF1ZXN0IFVJLiBHaXRMYWIgd2lsbCBhZGQgYSBsaW5rIDxleHBvc2VfYXM+IHRvIHRoZSByZWxldmFudCBtZXJnZSByZXF1ZXN0IHRoYXQgcG9pbnRzIHRvIHRoZSBhcnRpZmFjdC4gKi9cbiAgcmVhZG9ubHkgZXhwb3NlQXM/OiBzdHJpbmc7XG4gIC8qKiBOYW1lIGZvciB0aGUgYXJjaGl2ZSBjcmVhdGVkIG9uIGpvYiBzdWNjZXNzLiBDYW4gdXNlIHZhcmlhYmxlcyBpbiB0aGUgbmFtZSwgZS5nLiAnJENJX0pPQl9OQU1FJyAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICAvKiogQSBsaXN0IG9mIHBhdGhzIHRvIGZpbGVzL2ZvbGRlcnMgdGhhdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIGFydGlmYWN0LiAqL1xuICByZWFkb25seSBwYXRocz86IHN0cmluZ1tdO1xuICAvKiogUmVwb3J0cyB3aWxsIGJlIHVwbG9hZGVkIGFzIGFydGlmYWN0cywgYW5kIG9mdGVuIGRpc3BsYXllZCBpbiB0aGUgR2l0bGFiIFVJLCBzdWNoIGFzIGluIE1lcmdlIFJlcXVlc3RzLiovXG4gIHJlYWRvbmx5IHJlcG9ydHM/OiBSZXBvcnRzO1xuICAvKiogV2hldGhlciB0byBhZGQgYWxsIHVudHJhY2tlZCBmaWxlcyAoYWxvbmcgd2l0aCAnYXJ0aWZhY3RzLnBhdGhzJykgdG8gdGhlIGFydGlmYWN0LiovXG4gIHJlYWRvbmx5IHVudHJhY2tlZD86IGJvb2xlYW47XG4gIC8qKiBDb25maWd1cmUgd2hlbiBhcnRpZmFjdHMgYXJlIHVwbG9hZGVkIGRlcGVuZGVkIG9uIGpvYiBzdGF0dXMuKi9cbiAgcmVhZG9ubHkgd2hlbj86IENhY2hlV2hlbjtcbn1cblxuLyoqXG4gKiBDb2RlIGNvdmVyYWdlIHJlcG9ydCBpbnRlcmZhY2VcbiAqIEBsaW5rIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvYXJ0aWZhY3RzX3JlcG9ydHMuaHRtbCNhcnRpZmFjdHNyZXBvcnRzY292ZXJhZ2VfcmVwb3J0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ292ZXJhZ2VSZXBvcnQge1xuICByZWFkb25seSBjb3ZlcmFnZUZvcm1hdDogc3RyaW5nO1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwb3J0cyB3aWxsIGJlIHVwbG9hZGVkIGFzIGFydGlmYWN0cywgYW5kIG9mdGVuIGRpc3BsYXllZCBpbiB0aGUgR2l0bGFiIFVJLCBzdWNoIGFzIGluXG4gKiBNZXJnZSBSZXF1ZXN0cy5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jYXJ0aWZhY3RzcmVwb3J0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydHMge1xuICAvKiogUGF0aCB0byBmaWxlIG9yIGxpc3Qgb2YgZmlsZXMgd2l0aCBjb2RlIHF1YWxpdHkgcmVwb3J0KHMpIChzdWNoIGFzIENvZGUgQ2xpbWF0ZSkuKi9cbiAgcmVhZG9ubHkgY29kZXF1YWxpdHk/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggQ29udGFpbmVyIHNjYW5uaW5nIHZ1bG5lcmFiaWxpdGllcyByZXBvcnQocykuKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyU2Nhbm5pbmc/OiBzdHJpbmdbXTtcbiAgLyoqIENvZGUgY292ZXJhZ2UgcmVwb3J0IGluZm9ybWF0aW9uICovXG4gIHJlYWRvbmx5IGNvdmVyYWdlUmVwb3J0PzogQ292ZXJhZ2VSZXBvcnQ7XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyB3aXRoIERBU1QgdnVsbmVyYWJpbGl0aWVzIHJlcG9ydChzKS4qL1xuICByZWFkb25seSBkYXN0Pzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyB3aXRoIERlcGVuZGVuY3kgc2Nhbm5pbmcgdnVsbmVyYWJpbGl0aWVzIHJlcG9ydChzKS4qL1xuICByZWFkb25seSBkZXBlbmRlbmN5U2Nhbm5pbmc/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIGNvbnRhaW5pbmcgcnVudGltZS1jcmVhdGVkIHZhcmlhYmxlcyBmb3IgdGhpcyBqb2IuKi9cbiAgcmVhZG9ubHkgZG90ZW52Pzogc3RyaW5nW107XG4gIC8qKiBQYXRoIGZvciBmaWxlKHMpIHRoYXQgc2hvdWxkIGJlIHBhcnNlZCBhcyBKVW5pdCBYTUwgcmVzdWx0Ki9cbiAgcmVhZG9ubHkganVuaXQ/OiBzdHJpbmdbXTtcbiAgLyoqIERlcHJlY2F0ZWQgaW4gMTIuODogUGF0aCB0byBmaWxlIG9yIGxpc3Qgb2YgZmlsZXMgd2l0aCBsaWNlbnNlIHJlcG9ydChzKS4qL1xuICByZWFkb25seSBsaWNlbnNlTWFuYWdlbWVudD86IHN0cmluZ1tdO1xuICAvKiogUGF0aCB0byBmaWxlIG9yIGxpc3Qgb2YgZmlsZXMgd2l0aCBsaWNlbnNlIHJlcG9ydChzKS4qL1xuICByZWFkb25seSBsaWNlbnNlU2Nhbm5pbmc/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIGNvbnRhaW5pbmcgY29kZSBpbnRlbGxpZ2VuY2UgKExhbmd1YWdlIFNlcnZlciBJbmRleCBGb3JtYXQpLiovXG4gIHJlYWRvbmx5IGxzaWY/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggY3VzdG9tIG1ldHJpY3MgcmVwb3J0KHMpLiovXG4gIHJlYWRvbmx5IG1ldHJpY3M/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggcGVyZm9ybWFuY2UgbWV0cmljcyByZXBvcnQocykuKi9cbiAgcmVhZG9ubHkgcGVyZm9ybWFuY2U/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggcmVxdWlyZW1lbnRzIHJlcG9ydChzKS4qL1xuICByZWFkb25seSByZXF1aXJlbWVudHM/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggU0FTVCB2dWxuZXJhYmlsaXRpZXMgcmVwb3J0KHMpLiovXG4gIHJlYWRvbmx5IHNhc3Q/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggc2VjcmV0IGRldGVjdGlvbiByZXBvcnQocykuKi9cbiAgcmVhZG9ubHkgc2VjcmV0RGV0ZWN0aW9uPzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyB3aXRoIHRlcnJhZm9ybSBwbGFuKHMpLiovXG4gIHJlYWRvbmx5IHRlcnJhZm9ybT86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIGlkX3Rva2VucyBEZWZpbml0aW9uLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNpZF90b2tlbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRFRva2VuIHtcbiAgLyoqIFRoZSByZXF1aXJlZCBhdWQgc3ViLWtleXdvcmQgaXMgdXNlZCB0byBjb25maWd1cmUgdGhlIGF1ZCBjbGFpbSBmb3IgdGhlIEpXVC4gKi9cbiAgYXVkOiBzdHJpbmdbXSB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGRvY2tlciBpbWFnZSB0byB1c2UgZm9yIHRoZSBqb2Igb3IgZ2xvYmFsbHkgZm9yIGFsbCBqb2JzLiBKb2IgY29uZmlndXJhdGlvblxuICogdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGdsb2JhbCBzZXR0aW5nLiBSZXF1aXJlcyBhIGNlcnRhaW4ga2luZCBvZiBHaXRsYWIgcnVubmVyIGV4ZWN1dG9yLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNpbWFnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlIHtcbiAgLyoqIENvbW1hbmQgb3Igc2NyaXB0IHRoYXQgc2hvdWxkIGJlIGV4ZWN1dGVkIGFzIHRoZSBjb250YWluZXIncyBlbnRyeXBvaW50LiBJdCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gRG9ja2VyJ3MgLS1lbnRyeXBvaW50IG9wdGlvbiB3aGlsZSBjcmVhdGluZyB0aGUgY29udGFpbmVyLiBUaGUgc3ludGF4IGlzIHNpbWlsYXIgdG8gRG9ja2VyZmlsZSdzIEVOVFJZUE9JTlQgZGlyZWN0aXZlLCB3aGVyZSBlYWNoIHNoZWxsIHRva2VuIGlzIGEgc2VwYXJhdGUgc3RyaW5nIGluIHRoZSBhcnJheS4qL1xuICByZWFkb25seSBlbnRyeXBvaW50PzogYW55W107XG4gIC8qKiBGdWxsIG5hbWUgb2YgdGhlIGltYWdlIHRoYXQgc2hvdWxkIGJlIHVzZWQuIEl0IHNob3VsZCBjb250YWluIHRoZSBSZWdpc3RyeSBwYXJ0IGlmIG5lZWRlZC4qL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSG93IG1hbnkgdGltZXMgYSBqb2IgaXMgcmV0cmllZCBpZiBpdCBmYWlscy4gSWYgbm90IGRlZmluZWQsIGRlZmF1bHRzIHRvIDAgYW5kIGpvYnMgZG8gbm90IHJldHJ5LlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNyZXRyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5IHtcbiAgLyoqIDAgKGRlZmF1bHQpLCAxLCBvciAyLiovXG4gIHJlYWRvbmx5IG1heD86IG51bWJlcjtcbiAgLyoqIEVpdGhlciBhIHNpbmdsZSBvciBhcnJheSBvZiBlcnJvciB0eXBlcyB0byB0cmlnZ2VyIGpvYiByZXRyeS4qL1xuICByZWFkb25seSB3aGVuPzogYW55O1xufVxuXG4vKipcbiAqIFVzZWQgdG8gc3BlY2lmeSBhbiBhZGRpdGlvbmFsIERvY2tlciBpbWFnZSB0byBydW4gc2NyaXB0cyBpbi4gVGhlIHNlcnZpY2UgaW1hZ2UgaXMgbGlua2VkIHRvIHRoZSBpbWFnZSBzcGVjaWZpZWQgaW4gdGhlIEBEZWZhdWx0IGltYWdlIGtleXdvcmQuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI3NlcnZpY2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSB7XG4gIC8qKiBBZGRpdGlvbmFsIGFsaWFzIHRoYXQgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSBzZXJ2aWNlIGZyb20gdGhlIGpvYidzIGNvbnRhaW5lci4gUmVhZCBBY2Nlc3NpbmcgdGhlIHNlcnZpY2VzIGZvciBtb3JlIGluZm9ybWF0aW9uLiovXG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xuICAvKiogQ29tbWFuZCBvciBzY3JpcHQgdGhhdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgY29udGFpbmVyJ3MgY29tbWFuZC4gSXQgd2lsbCBiZSB0cmFuc2xhdGVkIHRvIGFyZ3VtZW50cyBwYXNzZWQgdG8gRG9ja2VyIGFmdGVyIHRoZSBpbWFnZSdzIG5hbWUuIFRoZSBzeW50YXggaXMgc2ltaWxhciB0byBEb2NrZXJmaWxlJ3MgQ01EIGRpcmVjdGl2ZSwgd2hlcmUgZWFjaCBzaGVsbCB0b2tlbiBpcyBhIHNlcGFyYXRlIHN0cmluZyBpbiB0aGUgYXJyYXkuKi9cbiAgcmVhZG9ubHkgY29tbWFuZD86IHN0cmluZ1tdO1xuICAvKiogQ29tbWFuZCBvciBzY3JpcHQgdGhhdCBzaG91bGQgYmUgZXhlY3V0ZWQgYXMgdGhlIGNvbnRhaW5lcidzIGVudHJ5cG9pbnQuIEl0IHdpbGwgYmUgdHJhbnNsYXRlZCB0byBEb2NrZXIncyAtLWVudHJ5cG9pbnQgb3B0aW9uIHdoaWxlIGNyZWF0aW5nIHRoZSBjb250YWluZXIuIFRoZSBzeW50YXggaXMgc2ltaWxhciB0byBEb2NrZXJmaWxlJ3MgRU5UUllQT0lOVCBkaXJlY3RpdmUsIHdoZXJlIGVhY2ggc2hlbGwgdG9rZW4gaXMgYSBzZXBhcmF0ZSBzdHJpbmcgaW4gdGhlIGFycmF5LiovXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnQ/OiBzdHJpbmdbXTtcbiAgLyoqIEZ1bGwgbmFtZSBvZiB0aGUgaW1hZ2UgdGhhdCBzaG91bGQgYmUgdXNlZC4gSXQgc2hvdWxkIGNvbnRhaW4gdGhlIFJlZ2lzdHJ5IHBhcnQgaWYgbmVlZGVkLiovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqIFRoZSBwdWxsIHBvbGljeSB0aGF0IHRoZSBydW5uZXIgdXNlcyB0byBmZXRjaCB0aGUgRG9ja2VyIGltYWdlICovXG4gIHJlYWRvbmx5IHB1bGxQb2xpY3k/OiBQdWxsUG9saWN5W107XG4gIC8qKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFyZSBwYXNzZWQgZXhjbHVzaXZlbHkgdG8gdGhlIHNlcnZpY2UuLiAqL1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyB0aGUgY29uZGl0aW9ucyBmb3Igd2hlbiB0byBwdWxsIGFuIGltYWdlLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNzZXJ2aWNlcHVsbF9wb2xpY3lcbiAqL1xuZXhwb3J0IGVudW0gUHVsbFBvbGljeSB7XG4gIEFMV0FZUyA9IFwiYWx3YXlzXCIsXG4gIE5FVkVSID0gXCJuZXZlclwiLFxuICBJRl9OT1RfUFJFU0VOVCA9IFwiaWYtbm90LXByZXNlbnRcIixcbn1cblxuLyoqXG4gKiBBbiBpbmNsdWRlZCBZQU1MIGZpbGUuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI2luY2x1ZGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmNsdWRlIHtcbiAgLyoqIFJlbGF0aXZlIHBhdGggZnJvbSBsb2NhbCByZXBvc2l0b3J5IHJvb3QgKGAvYCkgdG8gdGhlIGB5YW1sYC9geW1sYCBmaWxlIHRlbXBsYXRlLiBUaGUgZmlsZSBtdXN0IGJlIG9uIHRoZSBzYW1lIGJyYW5jaCwgYW5kIGRvZXMgbm90IHdvcmsgYWNyb3NzIGdpdCBzdWJtb2R1bGVzLiovXG4gIHJlYWRvbmx5IGxvY2FsPzogc3RyaW5nO1xuICAvKipSdWxlcyBhbGxvd3MgZm9yIGFuIGFycmF5IG9mIGluZGl2aWR1YWwgcnVsZSBvYmplY3RzIHRvIGJlIGV2YWx1YXRlZCBpbiBvcmRlciwgdW50aWwgb25lIG1hdGNoZXMgYW5kIGR5bmFtaWNhbGx5IHByb3ZpZGVzIGF0dHJpYnV0ZXMgdG8gdGhlIGpvYi4gKi9cbiAgcmVhZG9ubHkgcnVsZXM/OiBJbmNsdWRlUnVsZVtdO1xuICAvKiogRmlsZXMgZnJvbSBhbm90aGVyIHByaXZhdGUgcHJvamVjdCBvbiB0aGUgc2FtZSBHaXRMYWIgaW5zdGFuY2UuIFlvdSBjYW4gdXNlIGBmaWxlYCBpbiBjb21iaW5hdGlvbiB3aXRoIGBwcm9qZWN0YCBvbmx5LiAqL1xuICByZWFkb25seSBmaWxlPzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIHRoZSBwcm9qZWN0LCBlLmcuIGBncm91cC9wcm9qZWN0YCwgb3IgYGdyb3VwL3N1Yi1ncm91cC9wcm9qZWN0YC4qL1xuICByZWFkb25seSBwcm9qZWN0Pzogc3RyaW5nO1xuICAvKiogQnJhbmNoL1RhZy9Db21taXQtaGFzaCBmb3IgdGhlIHRhcmdldCBwcm9qZWN0LiovXG4gIHJlYWRvbmx5IHJlZj86IHN0cmluZztcbiAgLyoqIFVzZSBhIGAuZ2l0bGFiLWNpLnltbGAgdGVtcGxhdGUgYXMgYSBiYXNlLCBlLmcuIGBOb2RlanMuZ2l0bGFiLWNpLnltbGAuKi9cbiAgcmVhZG9ubHkgdGVtcGxhdGU/OiBzdHJpbmc7XG4gIC8qKiBVUkwgdG8gYSBgeWFtbGAvYHltbGAgdGVtcGxhdGUgZmlsZSB1c2luZyBIVFRQL0hUVFBTLiovXG4gIHJlYWRvbmx5IHJlbW90ZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSdWxlcyBhbGxvd3MgZm9yIGFuIGFycmF5IG9mIGluZGl2aWR1YWwgcnVsZSBvYmplY3RzIHRvIGJlIGV2YWx1YXRlZCBpbiBvcmRlciwgdW50aWwgb25lXG4gKiBtYXRjaGVzIGFuZCBkeW5hbWljYWxseSBwcm92aWRlcyBhdHRyaWJ1dGVzIHRvIHRoZSBqb2IuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvaW5jbHVkZXMuaHRtbCN1c2UtcnVsZXMtd2l0aC1pbmNsdWRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5jbHVkZVJ1bGUge1xuICAvKiBXaGV0aGVyIGEgcGlwZWxpbmUgc2hvdWxkIGNvbnRpbnVlIHJ1bm5pbmcgd2hlbiBhIGpvYiBmYWlscy4gKi9cbiAgcmVhZG9ubHkgYWxsb3dGYWlsdXJlPzogYm9vbGVhbiB8IEFsbG93RmFpbHVyZTtcbiAgLyogU3BlY2lmeSB3aGVuIHRvIGFkZCBhIGpvYiB0byBhIHBpcGVsaW5lIGJ5IGNoZWNraW5nIGZvciBjaGFuZ2VzIHRvIHNwZWNpZmljIGZpbGVzLiAqL1xuICByZWFkb25seSBjaGFuZ2VzPzogc3RyaW5nW107XG4gIC8qIFJ1biBhIGpvYiB3aGVuIGNlcnRhaW4gZmlsZXMgZXhpc3QgaW4gdGhlIHJlcG9zaXRvcnkuICovXG4gIHJlYWRvbmx5IGV4aXN0cz86IHN0cmluZ1tdO1xuICAvKiBDbGF1c2VzIHRvIHNwZWNpZnkgd2hlbiB0byBhZGQgYSBqb2IgdG8gYSBwaXBlbGluZS4qL1xuICByZWFkb25seSBpZj86IHN0cmluZztcbiAgLyogU3BlY2lmeSB0byB1cGRhdGUgYSBqb2LigJlzIG5lZWRzIGZvciBzcGVjaWZpYyBjb25kaXRpb25zLiAqL1xuICByZWFkb25seSBuZWVkcz86IHN0cmluZ1tdO1xuICAvKiBFeGVjdXRlIHNjcmlwdHMgYWZ0ZXIgYSB3YWl0aW5nIHBlcmlvZCB3cml0dGVuIGluIG5hdHVyYWwgbGFuZ3VhZ2UgKEV4LiBvbmUgaG91ciwgMzYwMCBzZWNvbmRzLCA2MCBtaW51dGVzKS4gKi9cbiAgcmVhZG9ubHkgc3RhcnRJbj86IHN0cmluZztcbiAgLyogVXNlIHZhcmlhYmxlcyBpbiBydWxlcyB0byBkZWZpbmUgdmFyaWFibGVzIGZvciBzcGVjaWZpYyBjb25kaXRpb25zLiAqL1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKiBDb25kaXRpb25zIGZvciB3aGVuIHRvIHJ1biB0aGUgam9iLiBEZWZhdWx0cyB0byAnb25fc3VjY2VzcycgKi9cbiAgcmVhZG9ubHkgd2hlbj86IEpvYldoZW47XG59XG5cbi8qKlxuICogRXhpdCBjb2RlIHRoYXQgYXJlIG5vdCBjb25zaWRlcmVkIGZhaWx1cmUuIFRoZSBqb2IgZmFpbHMgZm9yIGFueSBvdGhlciBleGl0IGNvZGUuXG4gKiBZb3UgY2FuIGxpc3Qgd2hpY2ggZXhpdCBjb2RlcyBhcmUgbm90IGNvbnNpZGVyZWQgZmFpbHVyZXMuIFRoZSBqb2IgZmFpbHMgZm9yIGFueSBvdGhlclxuICogZXhpdCBjb2RlLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNhbGxvd19mYWlsdXJlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxsb3dGYWlsdXJlIHtcbiAgcmVhZG9ubHkgZXhpdENvZGVzOiBudW1iZXJbXSB8IG51bWJlcjtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIGNvbmRpdGlvbnMgZm9yIHdoZW4gdG8gcnVuIHRoZSBqb2IuIERlZmF1bHRzIHRvICdvbl9zdWNjZXNzJy5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jd2hlblxuICovXG5leHBvcnQgZW51bSBKb2JXaGVuIHtcbiAgQUxXQVlTID0gXCJhbHdheXNcIixcbiAgREVMQVlFRCA9IFwiZGVsYXllZFwiLFxuICBNQU5VQUwgPSBcIm1hbnVhbFwiLFxuICBORVZFUiA9IFwibmV2ZXJcIixcbiAgT05fRkFJTFVSRSA9IFwib25fZmFpbHVyZVwiLFxuICBPTl9TVUNDRVNTID0gXCJvbl9zdWNjZXNzXCIsXG59XG5cbi8qKlxuICogSm9icyBhcmUgdGhlIG1vc3QgZnVuZGFtZW50YWwgZWxlbWVudCBvZiBhIC5naXRsYWItY2kueW1sIGZpbGUuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL2pvYnMvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSm9iIHtcbiAgLyogRGVmaW5lcyBzY3JpcHRzIHRoYXQgc2hvdWxkIHJ1biAqYWZ0ZXIqIHRoZSBqb2IuICovXG4gIHJlYWRvbmx5IGFmdGVyU2NyaXB0Pzogc3RyaW5nW107XG4gIC8qKiBXaGV0aGVyIHRvIGFsbG93IHRoZSBwaXBlbGluZSB0byBjb250aW51ZSBydW5uaW5nIG9uIGpvYiBmYWlsdXJlIChEZWZhdWx0OiBmYWxzZSkuICovXG4gIHJlYWRvbmx5IGFsbG93RmFpbHVyZT86IGJvb2xlYW4gfCBBbGxvd0ZhaWx1cmU7XG4gIC8qIEEgbGlzdCBvZiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdGhhdCBzaG91bGQgYmUgYXR0YWNoZWQgdG8gdGhlIGpvYiBpZiBpdCBzdWNjZWVkcy4gQXJ0aWZhY3RzIGFyZSBzZW50IHRvIEdpdGxhYiB3aGVyZSB0aGV5IGNhbiBiZSBkb3dubG9hZGVkLiAqL1xuICByZWFkb25seSBhcnRpZmFjdHM/OiBBcnRpZmFjdHM7XG4gIC8qIERlZmluZXMgc2NyaXB0cyB0aGF0IHNob3VsZCBydW4gKmJlZm9yZSogdGhlIGpvYi4gKi9cbiAgcmVhZG9ubHkgYmVmb3JlU2NyaXB0Pzogc3RyaW5nW107XG4gIC8qIEEgbGlzdCBvZiBjYWNoZSBkZWZpbml0aW9ucyAobWF4LiA0KSB3aXRoIHRoZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gY2FjaGUgYmV0d2VlbiBqb2JzLiBZb3UgY2FuIG9ubHkgdXNlIHBhdGhzIHRoYXQgYXJlIGluIHRoZSBsb2NhbCB3b3JraW5nIGNvcHkuICovXG4gIHJlYWRvbmx5IGNhY2hlPzogQ2FjaGVbXTtcbiAgLyoqIE11c3QgYmUgYSByZWd1bGFyIGV4cHJlc3Npb24sIG9wdGlvbmFsbHkgYnV0IHJlY29tbWVuZGVkIHRvIGJlIHF1b3RlZCwgYW5kIG11c3QgYmUgc3Vycm91bmRlZCB3aXRoICcvJy4gRXhhbXBsZTogJy9Db2RlIGNvdmVyYWdlOiBcXGQrXFwuXFxkKy8nKi9cbiAgcmVhZG9ubHkgY292ZXJhZ2U/OiBzdHJpbmc7XG4gIC8qKiBTcGVjaWZ5IGEgbGlzdCBvZiBqb2IgbmFtZXMgZnJvbSBlYXJsaWVyIHN0YWdlcyBmcm9tIHdoaWNoIGFydGlmYWN0cyBzaG91bGQgYmUgbG9hZGVkLiBCeSBkZWZhdWx0LCBhbGwgcHJldmlvdXMgYXJ0aWZhY3RzIGFyZSBwYXNzZWQuIFVzZSBhbiBlbXB0eSBhcnJheSB0byBza2lwIGRvd25sb2FkaW5nIGFydGlmYWN0cy4qL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcbiAgLyoqIFVzZWQgdG8gYXNzb2NpYXRlIGVudmlyb25tZW50IG1ldGFkYXRhIHdpdGggYSBkZXBsb3kuIEVudmlyb25tZW50IGNhbiBoYXZlIGEgbmFtZSBhbmQgVVJMIGF0dGFjaGVkIHRvIGl0LCBhbmQgd2lsbCBiZSBkaXNwbGF5ZWQgdW5kZXIgL2Vudmlyb25tZW50cyB1bmRlciB0aGUgcHJvamVjdC4qL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IEVudmlyb25tZW50IHwgc3RyaW5nO1xuICAvKiogSm9iIHdpbGwgcnVuICpleGNlcHQqIGZvciB3aGVuIHRoZXNlIGZpbHRlcmluZyBvcHRpb25zIG1hdGNoLiovXG4gIHJlYWRvbmx5IGV4Y2VwdD86IHN0cmluZ1tdIHwgRmlsdGVyO1xuICAvKiogVGhlIG5hbWUgb2Ygb25lIG9yIG1vcmUgam9icyB0byBpbmhlcml0IGNvbmZpZ3VyYXRpb24gZnJvbS4qL1xuICByZWFkb25seSBleHRlbmRzPzogc3RyaW5nW107XG4gIC8qKiBDb25maWd1cmFibGUgSUQgdG9rZW5zIChKU09OIFdlYiBUb2tlbnMpIHRoYXQgYXJlIHVzZWQgZm9yIENJL0NEIGF1dGhlbnRpY2F0aW9uICovXG4gIHJlYWRvbmx5IGlkVG9rZW5zPzogUmVjb3JkPHN0cmluZywgSURUb2tlbj47XG4gIC8qIFNwZWNpZmllcyB0aGUgZGVmYXVsdCBkb2NrZXIgaW1hZ2UgdG8gdXNlZCBmb3IgdGhlIGpvYi4gKi9cbiAgcmVhZG9ubHkgaW1hZ2U/OiBJbWFnZTtcbiAgLyoqIENvbnRyb2xzIGluaGVyaXRhbmNlIG9mIGdsb2JhbGx5LWRlZmluZWQgZGVmYXVsdHMgYW5kIHZhcmlhYmxlcy4gQm9vbGVhbiB2YWx1ZXMgY29udHJvbCBpbmhlcml0YW5jZSBvZiBhbGwgZGVmYXVsdDogb3IgdmFyaWFibGVzOiBrZXl3b3Jkcy4gVG8gaW5oZXJpdCBvbmx5IGEgc3Vic2V0IG9mIGRlZmF1bHQ6IG9yIHZhcmlhYmxlczoga2V5d29yZHMsIHNwZWNpZnkgd2hhdCB5b3Ugd2lzaCB0byBpbmhlcml0LiBBbnl0aGluZyBub3QgbGlzdGVkIGlzIG5vdCBpbmhlcml0ZWQuKi9cbiAgcmVhZG9ubHkgaW5oZXJpdD86IEluaGVyaXQ7XG4gIC8qIElmIGEgam9iIHNob3VsZCBiZSBjYW5jZWxlZCB3aGVuIGEgbmV3ZXIgcGlwZWxpbmUgc3RhcnRzIGJlZm9yZSB0aGUgam9iIGNvbXBsZXRlcyAoRGVmYXVsdDogZmFsc2UpLiovXG4gIHJlYWRvbmx5IGludGVycnVwdGlibGU/OiBib29sZWFuO1xuICAvKiogVGhlIGxpc3Qgb2Ygam9icyBpbiBwcmV2aW91cyBzdGFnZXMgd2hvc2Ugc29sZSBjb21wbGV0aW9uIGlzIG5lZWRlZCB0byBzdGFydCB0aGUgY3VycmVudCBqb2IuKi9cbiAgcmVhZG9ubHkgbmVlZHM/OiBBcnJheTxOZWVkIHwgc3RyaW5nPjtcbiAgLyoqIEpvYiB3aWxsIHJ1biAqb25seSogd2hlbiB0aGVzZSBmaWx0ZXJpbmcgb3B0aW9ucyBtYXRjaC4qL1xuICByZWFkb25seSBvbmx5Pzogc3RyaW5nW10gfCBGaWx0ZXI7XG4gIC8qKiBQYXJhbGxlbCB3aWxsIHNwbGl0IHVwIGEgc2luZ2xlIGpvYiBpbnRvIHNldmVyYWwsIGFuZCBwcm92aWRlIGBDSV9OT0RFX0lOREVYYCBhbmQgYENJX05PREVfVE9UQUxgIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIHJ1bm5pbmcgam9icy4qL1xuICByZWFkb25seSBwYXJhbGxlbD86IFBhcmFsbGVsIHwgbnVtYmVyO1xuICAvKiogSW5kaWNhdGVzIHRoYXQgdGhlIGpvYiBjcmVhdGVzIGEgUmVsZWFzZS4qL1xuICByZWFkb25seSByZWxlYXNlPzogUmVsZWFzZTtcbiAgLyoqIExpbWl0IGpvYiBjb25jdXJyZW5jeS4gQ2FuIGJlIHVzZWQgdG8gZW5zdXJlIHRoYXQgdGhlIFJ1bm5lciB3aWxsIG5vdCBydW4gY2VydGFpbiBqb2JzIHNpbXVsdGFuZW91c2x5LiovXG4gIHJlYWRvbmx5IHJlc291cmNlR3JvdXA/OiBzdHJpbmc7XG4gIC8qIEhvdyBtYW55IHRpbWVzIGEgam9iIGlzIHJldHJpZWQgaWYgaXQgZmFpbHMuIElmIG5vdCBkZWZpbmVkLCBkZWZhdWx0cyB0byAwIGFuZCBqb2JzIGRvIG5vdCByZXRyeS4gKi9cbiAgcmVhZG9ubHkgcmV0cnk/OiBSZXRyeTtcbiAgLyoqUnVsZXMgYWxsb3dzIGZvciBhbiBhcnJheSBvZiBpbmRpdmlkdWFsIHJ1bGUgb2JqZWN0cyB0byBiZSBldmFsdWF0ZWQgaW4gb3JkZXIsIHVudGlsIG9uZSBtYXRjaGVzIGFuZCBkeW5hbWljYWxseSBwcm92aWRlcyBhdHRyaWJ1dGVzIHRvIHRoZSBqb2IuICovXG4gIHJlYWRvbmx5IHJ1bGVzPzogSW5jbHVkZVJ1bGVbXTtcbiAgLyoqIFNoZWxsIHNjcmlwdHMgZXhlY3V0ZWQgYnkgdGhlIFJ1bm5lci4gVGhlIG9ubHkgcmVxdWlyZWQgcHJvcGVydHkgb2Ygam9icy4gQmUgY2FyZWZ1bCB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyAoZS5nLiBgOmAsIGB7YCwgYH1gLCBgJmApIGFuZCB1c2Ugc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgdG8gYXZvaWQgaXNzdWVzLiovXG4gIHJlYWRvbmx5IHNjcmlwdD86IHN0cmluZ1tdO1xuICAvKiogQ0kvQ0Qgc2VjcmV0cyAqL1xuICByZWFkb25seSBzZWNyZXRzPzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgU2VjcmV0Pj47XG4gIC8qIEFkZGl0aW9uYWwgRG9ja2VyIGltYWdlcyB0byBydW4gc2NyaXB0cyBpbi4gVGhlIHNlcnZpY2UgaW1hZ2UgaXMgbGlua2VkIHRvIHRoZSBpbWFnZSBzcGVjaWZpZWQgaW4gdGhlICBpbWFnZSBwYXJhbWV0ZXIuICovXG4gIHJlYWRvbmx5IHNlcnZpY2VzPzogU2VydmljZVtdO1xuICAvKiogRGVmaW5lIHdoYXQgc3RhZ2UgdGhlIGpvYiB3aWxsIHJ1biBpbi4qL1xuICByZWFkb25seSBzdGFnZT86IHN0cmluZztcbiAgLyogRXhlY3V0ZSBzY3JpcHRzIGFmdGVyIGEgd2FpdGluZyBwZXJpb2Qgd3JpdHRlbiBpbiBuYXR1cmFsIGxhbmd1YWdlIChFeC4gb25lIGhvdXIsIDM2MDAgc2Vjb25kcywgNjAgbWludXRlcykuICovXG4gIHJlYWRvbmx5IHN0YXJ0SW4/OiBzdHJpbmc7XG4gIC8qIFVzZWQgdG8gc2VsZWN0IGEgc3BlY2lmaWMgcnVubmVyIGZyb20gdGhlIGxpc3Qgb2YgYWxsIHJ1bm5lcnMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciB0aGUgcHJvamVjdC4gKi9cbiAgcmVhZG9ubHkgdGFncz86IHN0cmluZ1tdO1xuICAvKiBBIGRlZmF1bHQgdGltZW91dCBqb2Igd3JpdHRlbiBpbiBuYXR1cmFsIGxhbmd1YWdlIChFeC4gb25lIGhvdXIsIDM2MDAgc2Vjb25kcywgNjAgbWludXRlcykuICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBzdHJpbmc7XG4gIC8qKiBUcmlnZ2VyIGFsbG93cyB5b3UgdG8gZGVmaW5lIGRvd25zdHJlYW0gcGlwZWxpbmUgdHJpZ2dlci4gV2hlbiBhIGpvYiBjcmVhdGVkIGZyb20gdHJpZ2dlciBkZWZpbml0aW9uIGlzIHN0YXJ0ZWQgYnkgR2l0TGFiLCBhIGRvd25zdHJlYW0gcGlwZWxpbmUgZ2V0cyBjcmVhdGVkLiBSZWFkIG1vcmU6IGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvUkVBRE1FLmh0bWwjdHJpZ2dlciovXG4gIHJlYWRvbmx5IHRyaWdnZXI/OiBUcmlnZ2VyIHwgc3RyaW5nO1xuICAvKiogQ29uZmlndXJhYmxlIHZhbHVlcyB0aGF0IGFyZSBwYXNzZWQgdG8gdGhlIEpvYi4gKi9cbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIERlc2NyaWJlcyB0aGUgY29uZGl0aW9ucyBmb3Igd2hlbiB0byBydW4gdGhlIGpvYi4gRGVmYXVsdHMgdG8gJ29uX3N1Y2Nlc3MnLiAqL1xuICByZWFkb25seSB3aGVuPzogSm9iV2hlbjtcbiAgLyogU3BlY2lmeSBhIGxpc3Qgb2YgY29tbWFuZHMgdG8gZXhlY3V0ZSBvbiB0aGUgcnVubmVyIGJlZm9yZSBjbG9uaW5nIHRoZSBHaXQgcmVwb3NpdG9yeSBhbmQgYW55IHN1Ym1vZHVsZXMgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vY2kveWFtbC8jaG9va3NwcmVfZ2V0X3NvdXJjZXNfc2NyaXB0ICovXG4gIHJlYWRvbmx5IGhvb2tzPzogRGVmYXVsdEhvb2tzO1xufVxuXG4vKipcbiAqIFRoZSBlbnZpcm9ubWVudCB0aGF0IGEgam9iIGRlcGxveXMgdG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW52aXJvbm1lbnQge1xuICAvKiogU3BlY2lmaWVzIHdoYXQgdGhpcyBqb2Igd2lsbCBkby4gJ3N0YXJ0JyAoZGVmYXVsdCkgaW5kaWNhdGVzIHRoZSBqb2Igd2lsbCBzdGFydCB0aGUgZGVwbG95bWVudC4gJ3ByZXBhcmUnIGluZGljYXRlcyB0aGlzIHdpbGwgbm90IGFmZmVjdCB0aGUgZGVwbG95bWVudC4gJ3N0b3AnIGluZGljYXRlcyB0aGlzIHdpbGwgc3RvcCB0aGUgZGVwbG95bWVudC4qL1xuICByZWFkb25seSBhY3Rpb24/OiBBY3Rpb247XG4gIC8qKiBUaGUgYW1vdW50IG9mIHRpbWUgaXQgc2hvdWxkIHRha2UgYmVmb3JlIEdpdGxhYiB3aWxsIGF1dG9tYXRpY2FsbHkgc3RvcCB0aGUgZW52aXJvbm1lbnQuIFN1cHBvcnRzIGEgd2lkZSB2YXJpZXR5IG9mIGZvcm1hdHMsIGUuZy4gJzEgd2VlaycsICczIG1pbnMgNCBzZWMnLCAnMiBocnMgMjAgbWluJywgJzJoMjBtaW4nLCAnNiBtb3MgMSBkYXknLCAnNDcgeXJzIDYgbW9zIGFuZCA0ZCcsICczIHdlZWtzIGFuZCAyIGRheXMnLiovXG4gIHJlYWRvbmx5IGF1dG9TdG9wSW4/OiBzdHJpbmc7XG4gIC8qKiBFeHBsaWNpdGx5IHNwZWNpZmllcyB0aGUgdGllciBvZiB0aGUgZGVwbG95bWVudCBlbnZpcm9ubWVudCBpZiBub24tc3RhbmRhcmQgZW52aXJvbm1lbnQgbmFtZSBpcyB1c2VkLiovXG4gIHJlYWRvbmx5IGRlcGxveW1lbnRUaWVyPzogRGVwbG95bWVudFRpZXI7XG4gIC8qKiBVc2VkIHRvIGNvbmZpZ3VyZSB0aGUga3ViZXJuZXRlcyBkZXBsb3ltZW50IGZvciB0aGlzIGVudmlyb25tZW50LiBUaGlzIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIGZvciBrdWJlcm5ldGVzIGNsdXN0ZXJzIHRoYXQgYXJlIG1hbmFnZWQgYnkgR2l0bGFiLiovXG4gIHJlYWRvbmx5IGt1YmVybmV0ZXM/OiBLdWJlcm5ldGVzQ29uZmlnO1xuICAvKiogVGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50LCBlLmcuICdxYScsICdzdGFnaW5nJywgJ3Byb2R1Y3Rpb24nLiovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqIFRoZSBuYW1lIG9mIGEgam9iIHRvIGV4ZWN1dGUgd2hlbiB0aGUgZW52aXJvbm1lbnQgaXMgYWJvdXQgdG8gYmUgc3RvcHBlZC4qL1xuICByZWFkb25seSBvblN0b3A/OiBzdHJpbmc7XG4gIC8qKiBXaGVuIHNldCwgdGhpcyB3aWxsIGV4cG9zZSBidXR0b25zIGluIHZhcmlvdXMgcGxhY2VzIGZvciB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpbiBHaXRsYWIsIHRoYXQgd2lsbCB0YWtlIHlvdSB0byB0aGUgZGVmaW5lZCBVUkwuKi9cbiAgcmVhZG9ubHkgdXJsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNwZWNpZmllcyB3aGF0IHRoaXMgam9iIHdpbGwgZG8uICdzdGFydCcgKGRlZmF1bHQpIGluZGljYXRlcyB0aGUgam9iIHdpbGwgc3RhcnQgdGhlXG4gKiBkZXBsb3ltZW50LiAncHJlcGFyZScgaW5kaWNhdGVzIHRoaXMgd2lsbCBub3QgYWZmZWN0IHRoZSBkZXBsb3ltZW50LiAnc3RvcCcgaW5kaWNhdGVzXG4gKiB0aGlzIHdpbGwgc3RvcCB0aGUgZGVwbG95bWVudC5cbiAqL1xuZXhwb3J0IGVudW0gQWN0aW9uIHtcbiAgUFJFUEFSRSA9IFwicHJlcGFyZVwiLFxuICBTVEFSVCA9IFwic3RhcnRcIixcbiAgU1RPUCA9IFwic3RvcFwiLFxufVxuXG4vKipcbiAqIEV4cGxpY2l0bHkgc3BlY2lmaWVzIHRoZSB0aWVyIG9mIHRoZSBkZXBsb3ltZW50IGVudmlyb25tZW50IGlmIG5vbi1zdGFuZGFyZCBlbnZpcm9ubWVudFxuICogbmFtZSBpcyB1c2VkLlxuICovXG5leHBvcnQgZW51bSBEZXBsb3ltZW50VGllciB7XG4gIERFVkVMT1BNRU5UID0gXCJkZXZlbG9wbWVudFwiLFxuICBPVEhFUiA9IFwib3RoZXJcIixcbiAgUFJPRFVDVElPTiA9IFwicHJvZHVjdGlvblwiLFxuICBTVEFHSU5HID0gXCJzdGFnaW5nXCIsXG4gIFRFU1RJTkcgPSBcInRlc3RpbmdcIixcbn1cblxuLyoqXG4gKiBVc2VkIHRvIGNvbmZpZ3VyZSB0aGUga3ViZXJuZXRlcyBkZXBsb3ltZW50IGZvciB0aGlzIGVudmlyb25tZW50LiBUaGlzIGlzIGN1cnJlbnRseSBub3RcbiAqIHN1cHBvcnRlZCBmb3Iga3ViZXJuZXRlcyBjbHVzdGVycyB0aGF0IGFyZSBtYW5hZ2VkIGJ5IEdpdGxhYi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLdWJlcm5ldGVzQ29uZmlnIHtcbiAgLyoqIFRoZSBrdWJlcm5ldGVzIG5hbWVzcGFjZSB3aGVyZSB0aGlzIGVudmlyb25tZW50IHNob3VsZCBiZSBkZXBsb3llZCB0by4qL1xuICByZWFkb25seSBuYW1lc3BhY2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRmlsdGVyaW5nIG9wdGlvbnMgZm9yIHdoZW4gYSBqb2Igd2lsbCBydW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyIHtcbiAgLyoqIEZpbHRlciBqb2IgY3JlYXRpb24gYmFzZWQgb24gZmlsZXMgdGhhdCB3ZXJlIG1vZGlmaWVkIGluIGEgZ2l0IHB1c2guKi9cbiAgcmVhZG9ubHkgY2hhbmdlcz86IHN0cmluZ1tdO1xuICAvKiogRmlsdGVyIGpvYiBiYXNlZCBvbiBpZiBLdWJlcm5ldGVzIGludGVncmF0aW9uIGlzIGFjdGl2ZS4qL1xuICByZWFkb25seSBrdWJlcm5ldGVzPzogS3ViZXJuZXRlc0VudW07XG4gIC8qKiBDb250cm9sIHdoZW4gdG8gYWRkIGpvYnMgdG8gYSBwaXBlbGluZSBiYXNlZCBvbiBicmFuY2ggbmFtZXMgb3IgcGlwZWxpbmUgdHlwZXMuICovXG4gIHJlYWRvbmx5IHJlZnM/OiBzdHJpbmdbXTtcbiAgLyoqIEZpbHRlciBqb2IgYnkgY2hlY2tpbmcgY29tcGFyaW5nIHZhbHVlcyBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIFJlYWQgbW9yZSBhYm91dCB2YXJpYWJsZSBleHByZXNzaW9uczogaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kvdmFyaWFibGVzL1JFQURNRS5odG1sI3ZhcmlhYmxlcy1leHByZXNzaW9ucyovXG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEZpbHRlciBqb2IgYmFzZWQgb24gaWYgS3ViZXJuZXRlcyBpbnRlZ3JhdGlvbiBpcyBhY3RpdmUuXG4gKi9cbmV4cG9ydCBlbnVtIEt1YmVybmV0ZXNFbnVtIHtcbiAgQUNUSVZFID0gXCJhY3RpdmVcIixcbn1cblxuLyoqXG4gKiBDb250cm9scyBpbmhlcml0YW5jZSBvZiBnbG9iYWxseS1kZWZpbmVkIGRlZmF1bHRzIGFuZCB2YXJpYWJsZXMuIEJvb2xlYW4gdmFsdWVzIGNvbnRyb2xcbiAqIGluaGVyaXRhbmNlIG9mIGFsbCBkZWZhdWx0OiBvciB2YXJpYWJsZXM6IGtleXdvcmRzLiBUbyBpbmhlcml0IG9ubHkgYSBzdWJzZXQgb2YgZGVmYXVsdDpcbiAqIG9yIHZhcmlhYmxlczoga2V5d29yZHMsIHNwZWNpZnkgd2hhdCB5b3Ugd2lzaCB0byBpbmhlcml0LiBBbnl0aGluZyBub3QgbGlzdGVkIGlzIG5vdFxuICogaW5oZXJpdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluaGVyaXQge1xuICAvKiogV2hldGhlciB0byBpbmhlcml0IGFsbCBnbG9iYWxseS1kZWZpbmVkIGRlZmF1bHRzIG9yIG5vdC4gT3Igc3Vic2V0IG9mIGluaGVyaXRlZCBkZWZhdWx0cyovXG4gIHJlYWRvbmx5IGRlZmF1bHQ/OiBEZWZhdWx0RWxlbWVudFtdIHwgYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdG8gaW5oZXJpdCBhbGwgZ2xvYmFsbHktZGVmaW5lZCB2YXJpYWJsZXMgb3Igbm90LiBPciBzdWJzZXQgb2YgaW5oZXJpdGVkIHZhcmlhYmxlcyovXG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IHN0cmluZ1tdIHwgYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gRGVmYXVsdEVsZW1lbnQge1xuICBBRlRFUl9TQ1JJUFQgPSBcImFmdGVyX3NjcmlwdFwiLFxuICBBUlRJRkFDVFMgPSBcImFydGlmYWN0c1wiLFxuICBCRUZPUkVfU0NSSVBUID0gXCJiZWZvcmVfc2NyaXB0XCIsXG4gIENBQ0hFID0gXCJjYWNoZVwiLFxuICBJTUFHRSA9IFwiaW1hZ2VcIixcbiAgSU5URVJSVVBUSUJMRSA9IFwiaW50ZXJydXB0aWJsZVwiLFxuICBSRVRSWSA9IFwicmV0cnlcIixcbiAgU0VSVklDRVMgPSBcInNlcnZpY2VzXCIsXG4gIFRBR1MgPSBcInRhZ3NcIixcbiAgVElNRU9VVCA9IFwidGltZW91dFwiLFxufVxuXG4vKipcbiAqIEEgam9icyBpbiBhIHByZXZpb3VzIHN0YWdlIHdob3NlIHNvbGUgY29tcGxldGlvbiBpcyBuZWVkZWQgdG8gc3RhcnQgdGhlIGN1cnJlbnQgam9iLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5lZWQge1xuICByZWFkb25seSBhcnRpZmFjdHM/OiBib29sZWFuO1xuICByZWFkb25seSBqb2I6IHN0cmluZztcbiAgcmVhZG9ubHkgb3B0aW9uYWw/OiBib29sZWFuO1xuICByZWFkb25seSBwaXBlbGluZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvamVjdD86IHN0cmluZztcbiAgcmVhZG9ubHkgcmVmPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFVzZWQgdG8gcnVuIGEgam9iIG11bHRpcGxlIHRpbWVzIGluIHBhcmFsbGVsIGluIGEgc2luZ2xlIHBpcGVsaW5lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFsbGVsIHtcbiAgLyoqIERlZmluZXMgZGlmZmVyZW50IHZhcmlhYmxlcyBmb3Igam9icyB0aGF0IGFyZSBydW5uaW5nIGluIHBhcmFsbGVsLiovXG4gIHJlYWRvbmx5IG1hdHJpeDogUmVjb3JkPHN0cmluZywgYW55W10+W107XG59XG5cbi8qKlxuICogSW5kaWNhdGVzIHRoYXQgdGhlIGpvYiBjcmVhdGVzIGEgUmVsZWFzZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWxlYXNlIHtcbiAgcmVhZG9ubHkgYXNzZXRzPzogQXNzZXRzO1xuICAvKiogU3BlY2lmaWVzIHRoZSBsb25nZXIgZGVzY3JpcHRpb24gb2YgdGhlIFJlbGVhc2UuKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcbiAgLyoqIFRoZSB0aXRsZSBvZiBlYWNoIG1pbGVzdG9uZSB0aGUgcmVsZWFzZSBpcyBhc3NvY2lhdGVkIHdpdGguKi9cbiAgcmVhZG9ubHkgbWlsZXN0b25lcz86IHN0cmluZ1tdO1xuICAvKiogVGhlIFJlbGVhc2UgbmFtZS4gSWYgb21pdHRlZCwgaXQgaXMgcG9wdWxhdGVkIHdpdGggdGhlIHZhbHVlIG9mIHJlbGVhc2U6IHRhZ19uYW1lLiovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBJZiB0aGUgcmVsZWFzZTogdGFnX25hbWUgZG9lc27igJl0IGV4aXN0IHlldCwgdGhlIHJlbGVhc2UgaXMgY3JlYXRlZCBmcm9tIHJlZi4gcmVmIGNhbiBiZSBhIGNvbW1pdCBTSEEsIGFub3RoZXIgdGFnIG5hbWUsIG9yIGEgYnJhbmNoIG5hbWUuKi9cbiAgcmVhZG9ubHkgcmVmPzogc3RyaW5nO1xuICAvKiogVGhlIGRhdGUgYW5kIHRpbWUgd2hlbiB0aGUgcmVsZWFzZSBpcyByZWFkeS4gRGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSBpZiBub3QgZGVmaW5lZC4gU2hvdWxkIGJlIGVuY2xvc2VkIGluIHF1b3RlcyBhbmQgZXhwcmVzc2VkIGluIElTTyA4NjAxIGZvcm1hdC4qL1xuICByZWFkb25seSByZWxlYXNlZEF0Pzogc3RyaW5nO1xuICAvKiogVGhlIHRhZ19uYW1lIG11c3QgYmUgc3BlY2lmaWVkLiBJdCBjYW4gcmVmZXIgdG8gYW4gZXhpc3RpbmcgR2l0IHRhZyBvciBjYW4gYmUgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLiovXG4gIHJlYWRvbmx5IHRhZ05hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBc3NldCBjb25maWd1cmF0aW9uIGZvciBhIHJlbGVhc2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXRzIHtcbiAgLyoqIEluY2x1ZGUgYXNzZXQgbGlua3MgaW4gdGhlIHJlbGVhc2UuKi9cbiAgcmVhZG9ubHkgbGlua3M6IExpbmtbXTtcbn1cblxuLyoqXG4gKiBMaW5rIGNvbmZpZ3VyYXRpb24gZm9yIGFuIGFzc2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbmsge1xuICAvKiogVGhlIHJlZGlyZWN0IGxpbmsgdG8gdGhlIHVybC4qL1xuICByZWFkb25seSBmaWxlcGF0aD86IHN0cmluZztcbiAgLyoqIFRoZSBjb250ZW50IGtpbmQgb2Ygd2hhdCB1c2VycyBjYW4gZG93bmxvYWQgdmlhIHVybC4qL1xuICByZWFkb25seSBsaW5rVHlwZT86IExpbmtUeXBlO1xuICAvKiogVGhlIG5hbWUgb2YgdGhlIGxpbmsuKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKiogVGhlIFVSTCB0byBkb3dubG9hZCBhIGZpbGUuKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGNvbnRlbnQga2luZCBvZiB3aGF0IHVzZXJzIGNhbiBkb3dubG9hZCB2aWEgdXJsLlxuICovXG5leHBvcnQgZW51bSBMaW5rVHlwZSB7XG4gIElNQUdFID0gXCJpbWFnZVwiLFxuICBPVEhFUiA9IFwib3RoZXJcIixcbiAgUEFDS0FHRSA9IFwicGFja2FnZVwiLFxuICBSVU5CT09LID0gXCJydW5ib29rXCIsXG59XG5cbi8qKlxuICogQSBDSS9DRCBzZWNyZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWNyZXQge1xuICAvKiBTcGVjaWZpY2F0aW9uIGZvciBhIHNlY3JldCBwcm92aWRlZCBieSBhIEhhc2hpQ29ycCBWYXVsdC4gKi9cbiAgcmVhZG9ubHkgdmF1bHQ6IFZhdWx0Q29uZmlnO1xufVxuXG4vKipcbiAqIFNwZWNpZmljYXRpb24gZm9yIGEgc2VjcmV0IHByb3ZpZGVkIGJ5IGEgSGFzaGlDb3JwIFZhdWx0LlxuICogQHNlZSBodHRwczovL3d3dy52YXVsdHByb2plY3QuaW8vXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmF1bHRDb25maWcge1xuICAvKiBUaGUgZW5naW5lIGNvbmZpZ3VyYXRpb24gZm9yIGEgc2VjcmV0LiAqL1xuICByZWFkb25seSBlbmdpbmU6IEVuZ2luZTtcbiAgLyogVGhlIG5hbWUgb2YgdGhlIGZpZWxkIHdoZXJlIHRoZSBwYXNzd29yZCBpcyBzdG9yZWQuICovXG4gIHJlYWRvbmx5IGZpZWxkOiBzdHJpbmc7XG4gIC8qKiBQYXRoIHRvIHRoZSBzZWNyZXQuICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgZW5naW5lIGNvbmZpZ3VyYXRpb24gZm9yIGEgc2VjcmV0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuZ2luZSB7XG4gIC8qKiBOYW1lIG9mIHRoZSBzZWNyZXRzIGVuZ2luZS4gKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKiogUGF0aCB0byB0aGUgc2VjcmV0cyBlbmdpbmUuICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUcmlnZ2VyIGEgbXVsdGktcHJvamVjdCBvciBhIGNoaWxkIHBpcGVsaW5lLiBSZWFkIG1vcmU6XG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvUkVBRE1FLmh0bWwjc2ltcGxlLXRyaWdnZXItc3ludGF4LWZvci1tdWx0aS1wcm9qZWN0LXBpcGVsaW5lc1xuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sL1JFQURNRS5odG1sI3RyaWdnZXItc3ludGF4LWZvci1jaGlsZC1waXBlbGluZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyaWdnZXIge1xuICAvKiogVGhlIGJyYW5jaCBuYW1lIHRoYXQgYSBkb3duc3RyZWFtIHBpcGVsaW5lIHdpbGwgdXNlKi9cbiAgcmVhZG9ubHkgYnJhbmNoPzogc3RyaW5nO1xuICAvKiogUGF0aCB0byB0aGUgcHJvamVjdCwgZS5nLiBgZ3JvdXAvcHJvamVjdGAsIG9yIGBncm91cC9zdWItZ3JvdXAvcHJvamVjdGAuKi9cbiAgcmVhZG9ubHkgcHJvamVjdD86IHN0cmluZztcbiAgLyoqIFlvdSBjYW4gbWlycm9yIHRoZSBwaXBlbGluZSBzdGF0dXMgZnJvbSB0aGUgdHJpZ2dlcmVkIHBpcGVsaW5lIHRvIHRoZSBzb3VyY2UgYnJpZGdlIGpvYiBieSB1c2luZyBzdHJhdGVneTogZGVwZW5kKi9cbiAgcmVhZG9ubHkgc3RyYXRlZ3k/OiBTdHJhdGVneTtcbiAgLyoqIEEgbGlzdCBvZiBsb2NhbCBmaWxlcyBvciBhcnRpZmFjdHMgZnJvbSBvdGhlciBqb2JzIHRvIGRlZmluZSB0aGUgcGlwZWxpbmUgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZT86IFRyaWdnZXJJbmNsdWRlW107XG4gIC8qKiBJbnB1dCBwYXJhbWV0ZXJzIGZvciB0aGUgZG93bnN0cmVhbSBwaXBlbGluZSB3aGVuIHVzaW5nIHNwZWM6aW5wdXRzICovXG4gIHJlYWRvbmx5IGlucHV0cz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbi8qKlxuICogUmVmZXJlbmNlcyBhIGxvY2FsIGZpbGUgb3IgYW4gYXJ0aWZhY3QgZnJvbSBhbm90aGVyIGpvYiB0byBkZWZpbmUgdGhlIHBpcGVsaW5lXG4gKiBjb25maWd1cmF0aW9uLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyN0cmlnZ2VyaW5jbHVkZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyaWdnZXJJbmNsdWRlIHtcbiAgLyoqIFJlbGF0aXZlIHBhdGggZnJvbSBsb2NhbCByZXBvc2l0b3J5IHJvb3QgKGAvYCkgdG8gdGhlIGxvY2FsIFlBTUwgZmlsZSB0byBkZWZpbmUgdGhlIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24uKi9cbiAgcmVhZG9ubHkgbG9jYWw/OiBzdHJpbmc7XG4gIC8qKiBOYW1lIG9mIHRoZSB0ZW1wbGF0ZSBZQU1MIGZpbGUgdG8gdXNlIGluIHRoZSBwaXBlbGluZSBjb25maWd1cmF0aW9uLiovXG4gIHJlYWRvbmx5IHRlbXBsYXRlPzogc3RyaW5nO1xuICAvKiogUmVsYXRpdmUgcGF0aCB0byB0aGUgZ2VuZXJhdGVkIFlBTUwgZmlsZSB3aGljaCBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgYXJ0aWZhY3RzIGFuZCB1c2VkIGFzIHRoZSBjb25maWd1cmF0aW9uIGZvciB0cmlnZ2VyaW5nIHRoZSBjaGlsZCBwaXBlbGluZS4qL1xuICByZWFkb25seSBhcnRpZmFjdD86IHN0cmluZztcbiAgLyoqIEpvYiBuYW1lIHdoaWNoIGdlbmVyYXRlcyB0aGUgYXJ0aWZhY3QqL1xuICByZWFkb25seSBqb2I/OiBzdHJpbmc7XG4gIC8qKiBSZWxhdGl2ZSBwYXRoIGZyb20gcmVwb3NpdG9yeSByb290IChgL2ApIHRvIHRoZSBwaXBlbGluZSBjb25maWd1cmF0aW9uIFlBTUwgZmlsZS4qL1xuICByZWFkb25seSBmaWxlPzogc3RyaW5nO1xuICAvKiogUGF0aCB0byBhbm90aGVyIHByaXZhdGUgcHJvamVjdCB1bmRlciB0aGUgc2FtZSBHaXRMYWIgaW5zdGFuY2UsIGxpa2UgYGdyb3VwL3Byb2plY3RgIG9yIGBncm91cC9zdWItZ3JvdXAvcHJvamVjdGAuKi9cbiAgcmVhZG9ubHkgcHJvamVjdD86IHN0cmluZztcbiAgLyoqIEJyYW5jaC9UYWcvQ29tbWl0IGhhc2ggZm9yIHRoZSB0YXJnZXQgcHJvamVjdC4qL1xuICByZWFkb25seSByZWY/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogWW91IGNhbiBtaXJyb3IgdGhlIHBpcGVsaW5lIHN0YXR1cyBmcm9tIHRoZSB0cmlnZ2VyZWQgcGlwZWxpbmUgdG8gdGhlIHNvdXJjZSBicmlkZ2Ugam9iXG4gKiBieSB1c2luZyBzdHJhdGVneTogZGVwZW5kIG9yIG1pcnJvclxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyN0cmlnZ2Vyc3RyYXRlZ3lcbiAqL1xuZXhwb3J0IGVudW0gU3RyYXRlZ3kge1xuICAvKiogTm90IHJlY29tbWVuZGVkLCB1c2UgbWlycm9yIGluc3RlYWQuIFRoZSB0cmlnZ2VyIGpvYiBzdGF0dXMgc2hvd3MgZmFpbGVkLCBzdWNjZXNzLCBvciBydW5uaW5nLCBkZXBlbmRpbmcgb24gdGhlIGRvd25zdHJlYW0gcGlwZWxpbmUgc3RhdHVzLiAqL1xuICBERVBFTkQgPSBcImRlcGVuZFwiLFxuICAvKiogTWlycm9ycyB0aGUgc3RhdHVzIG9mIHRoZSBkb3duc3RyZWFtIHBpcGVsaW5lIGV4YWN0bHkuICovXG4gIE1JUlJPUiA9IFwibWlycm9yXCIsXG59XG5cbi8qKlxuICogRXhwbGFpbnMgd2hhdCB0aGUgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgZm9yLCB3aGF0IHRoZSBhY2NlcHRhYmxlIHZhbHVlcyBhcmUuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI3ZhcmlhYmxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhcmlhYmxlQ29uZmlnIHtcbiAgLyoqIERlZmluZSBhIGdsb2JhbCB2YXJpYWJsZSB0aGF0IGlzIHByZWZpbGxlZCB3aGVuIHJ1bm5pbmcgYSBwaXBlbGluZSBtYW51YWxseS4gTXVzdCBiZSB1c2VkIHdpdGggdmFsdWUuICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIFRoZSB2YXJpYWJsZSB2YWx1ZS4gKi9cbiAgcmVhZG9ubHkgdmFsdWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVXNlZCB0byBjb250cm9sIHBpcGVsaW5lIGJlaGF2aW9yLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyN3b3JrZmxvd1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93IHtcbiAgLyoqIFlvdSBjYW4gdXNlIG5hbWUgdG8gZGVmaW5lIGEgbmFtZSBmb3IgcGlwZWxpbmVzLiAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICAvKiogVXNlZCB0byBjb250cm9sIHdoZXRoZXIgb3Igbm90IGEgd2hvbGUgcGlwZWxpbmUgaXMgY3JlYXRlZC4gKi9cbiAgcmVhZG9ubHkgcnVsZXM/OiBXb3JrZmxvd1J1bGVbXTtcbn1cblxuLyoqXG4gKiBVc2VkIHRvIGNvbnRyb2wgd2hldGhlciBvciBub3QgYSB3aG9sZSBwaXBlbGluZSBpcyBjcmVhdGVkLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyN3b3JrZmxvd3J1bGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dSdWxlIHtcbiAgLyogU3BlY2lmeSB3aGVuIHRvIGFkZCBhIGpvYiB0byBhIHBpcGVsaW5lIGJ5IGNoZWNraW5nIGZvciBjaGFuZ2VzIHRvIHNwZWNpZmljIGZpbGVzLiAqL1xuICByZWFkb25seSBjaGFuZ2VzPzogc3RyaW5nW107XG4gIC8qIFJ1biBhIGpvYiB3aGVuIGNlcnRhaW4gZmlsZXMgZXhpc3QgaW4gdGhlIHJlcG9zaXRvcnkuICovXG4gIHJlYWRvbmx5IGV4aXN0cz86IHN0cmluZ1tdO1xuICAvKiBDbGF1c2VzIHRvIHNwZWNpZnkgd2hlbiB0byBhZGQgYSBqb2IgdG8gYSBwaXBlbGluZS4qL1xuICByZWFkb25seSBpZj86IHN0cmluZztcbiAgLyogVXNlIHZhcmlhYmxlcyBpbiBydWxlcyB0byBkZWZpbmUgdmFyaWFibGVzIGZvciBzcGVjaWZpYyBjb25kaXRpb25zLiAqL1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+O1xuICAvKiBDb25kaXRpb25zIGZvciB3aGVuIHRvIHJ1biB0aGUgam9iLiBEZWZhdWx0cyB0byAnb25fc3VjY2VzcycgKi9cbiAgcmVhZG9ubHkgd2hlbj86IFdvcmtmbG93V2hlbjtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIGNvbmRpdGlvbnMgZm9yIHdoZW4gdG8gcnVuIHRoZSBqb2IuIERlZmF1bHRzIHRvICdvbl9zdWNjZXNzJy5cbiAqIFRoZSB2YWx1ZSBjYW4gb25seSBiZSAnYWx3YXlzJyBvciAnbmV2ZXInIHdoZW4gdXNlZCB3aXRoIHdvcmtmbG93LlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyN3b3JrZmxvd3J1bGVzXG4gKi9cbmV4cG9ydCBlbnVtIFdvcmtmbG93V2hlbiB7XG4gIEFMV0FZUyA9IFwiYWx3YXlzXCIsXG4gIE5FVkVSID0gXCJuZXZlclwiLFxufVxuIl19