UNPKG

@cloudsnorkel/cdk-github-runners

Version:

CDK construct to create GitHub Actions self-hosted runners. Creates ephemeral runners on demand. Easy to deploy and highly customizable.

51 lines 20.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RunnerImageBuilderBase = exports.RunnerImageBuilderType = void 0; exports.uniqueImageBuilderName = uniqueImageBuilderName; const cdk = require("aws-cdk-lib"); const constructs_1 = require("constructs"); /** * @internal */ function uniqueImageBuilderName(scope) { return cdk.Names.uniqueResourceName(scope, { maxLength: 126, separator: '-', allowedSpecialCharacters: '_-', }); } var RunnerImageBuilderType; (function (RunnerImageBuilderType) { /** * Build runner images using AWS CodeBuild. * * Faster than AWS Image Builder, but can only be used to build Linux Docker images. */ RunnerImageBuilderType["CODE_BUILD"] = "CodeBuild"; /** * Build runner images using AWS Image Builder. * * Slower than CodeBuild, but can be used to build any type of image including AMIs and Windows images. */ RunnerImageBuilderType["AWS_IMAGE_BUILDER"] = "AwsImageBuilder"; })(RunnerImageBuilderType || (exports.RunnerImageBuilderType = RunnerImageBuilderType = {})); /** * @internal */ class RunnerImageBuilderBase extends constructs_1.Construct { constructor(scope, id, props) { super(scope, id); this.components = []; if (props?.components) { this.components.push(...props.components); } } addComponent(component) { this.components.push(component); } removeComponent(component) { this.components = this.components.filter(c => c.name !== component.name); } } exports.RunnerImageBuilderBase = RunnerImageBuilderBase; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltYWdlLWJ1aWxkZXJzL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFZQSx3REFNQztBQWxCRCxtQ0FBbUM7QUFFbkMsMkNBQXVDO0FBT3ZDOztHQUVHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQUMsS0FBZ0I7SUFDckQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRTtRQUN6QyxTQUFTLEVBQUUsR0FBRztRQUNkLFNBQVMsRUFBRSxHQUFHO1FBQ2Qsd0JBQXdCLEVBQUUsSUFBSTtLQUMvQixDQUFDLENBQUM7QUFDTCxDQUFDO0FBb1FELElBQVksc0JBY1g7QUFkRCxXQUFZLHNCQUFzQjtJQUNoQzs7OztPQUlHO0lBQ0gsa0RBQXdCLENBQUE7SUFFeEI7Ozs7T0FJRztJQUNILCtEQUFxQyxDQUFBO0FBQ3ZDLENBQUMsRUFkVyxzQkFBc0Isc0NBQXRCLHNCQUFzQixRQWNqQztBQWtERDs7R0FFRztBQUNILE1BQXNCLHNCQUF1QixTQUFRLHNCQUFTO0lBRzVELFlBQXNCLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQStCO1FBQ2pGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFIVCxlQUFVLEdBQTJCLEVBQUUsQ0FBQztRQUtoRCxJQUFJLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQVNNLFlBQVksQ0FBQyxTQUErQjtRQUNqRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sZUFBZSxDQUFDLFNBQStCO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzRSxDQUFDO0NBQ0Y7QUF6QkQsd0RBeUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IGF3c19lYzIgYXMgZWMyLCBhd3NfaWFtIGFzIGlhbSwgYXdzX2xvZ3MgYXMgbG9ncywgRHVyYXRpb24sIFJlbW92YWxQb2xpY3kgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEF3c0ltYWdlQnVpbGRlclJ1bm5lckltYWdlQnVpbGRlclByb3BzIH0gZnJvbSAnLi9hd3MtaW1hZ2UtYnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlQ29udGFpbmVySW1hZ2VJbnB1dCwgQmFzZUltYWdlSW5wdXQgfSBmcm9tICcuL2F3cy1pbWFnZS1idWlsZGVyL2Jhc2UtaW1hZ2UnO1xuaW1wb3J0IHsgQ29kZUJ1aWxkUnVubmVySW1hZ2VCdWlsZGVyUHJvcHMgfSBmcm9tICcuL2NvZGVidWlsZCc7XG5pbXBvcnQgeyBSdW5uZXJJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBcmNoaXRlY3R1cmUsIE9zLCBSdW5uZXJBbWksIFJ1bm5lckltYWdlLCBSdW5uZXJWZXJzaW9uIH0gZnJvbSAnLi4vcHJvdmlkZXJzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZUltYWdlQnVpbGRlck5hbWUoc2NvcGU6IENvbnN0cnVjdCk6IHN0cmluZyB7XG4gIHJldHVybiBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHNjb3BlLCB7XG4gICAgbWF4TGVuZ3RoOiAxMjYsXG4gICAgc2VwYXJhdG9yOiAnLScsXG4gICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnXy0nLFxuICB9KTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZUJ1aWxkZXJCYXNlUHJvcHMge1xuICAvKipcbiAgICogSW1hZ2UgYXJjaGl0ZWN0dXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBcmNoaXRlY3R1cmUuWDg2XzY0XG4gICAqL1xuICByZWFkb25seSBhcmNoaXRlY3R1cmU/OiBBcmNoaXRlY3R1cmU7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMgdG8gYmUgY2hlY2tlZCBhZ2FpbnN0IHtAbGluayBhcmNoaXRlY3R1cmV9LlxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcG9ydGVkQXJjaGl0ZWN0dXJlczogQXJjaGl0ZWN0dXJlW107XG5cbiAgLyoqXG4gICAqIEltYWdlIE9TLlxuICAgKlxuICAgKiBAZGVmYXVsdCBPUy5MSU5VWF9VQlVOVFVcbiAgICovXG4gIHJlYWRvbmx5IG9zPzogT3M7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3VwcG9ydGVkIE9TIHRvIGJlIGNoZWNrZWQgYWdhaW5zdCB7QGxpbmsgb3N9LlxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcG9ydGVkT3M6IE9zW107XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgR2l0SHViIFJ1bm5lcnMgdG8gaW5zdGFsbC5cbiAgICpcbiAgICogQGRlZmF1bHQgbGF0ZXN0IHZlcnNpb24gYXZhaWxhYmxlXG4gICAqL1xuICByZWFkb25seSBydW5uZXJWZXJzaW9uPzogUnVubmVyVmVyc2lvbjtcblxuICAvKipcbiAgICogU2NoZWR1bGUgdGhlIEFNSSB0byBiZSByZWJ1aWx0IGV2ZXJ5IGdpdmVuIGludGVydmFsLiBVc2VmdWwgZm9yIGtlZXBpbmcgdGhlIEFNSSB1cC1kby1kYXRlIHdpdGggdGhlIGxhdGVzdCBHaXRIdWIgcnVubmVyIHZlcnNpb24gYW5kIGxhdGVzdCBPUyB1cGRhdGVzLlxuICAgKlxuICAgKiBTZXQgdG8gemVybyB0byBkaXNhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5kYXlzKDcpXG4gICAqL1xuICByZWFkb25seSByZWJ1aWxkSW50ZXJ2YWw/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVlBDIHdoZXJlIGJ1aWxkZXIgaW5zdGFuY2VzIHdpbGwgYmUgbGF1bmNoZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGRlZmF1bHQgYWNjb3VudCBWUENcbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IGVjMi5JVnBjO1xuXG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cHMgdG8gYXNzaWduIHRvIGxhdW5jaGVkIGJ1aWxkZXIgaW5zdGFuY2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBuZXcgc2VjdXJpdHkgZ3JvdXBcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLklTZWN1cml0eUdyb3VwW107XG5cbiAgLyoqXG4gICAqIFdoZXJlIHRvIHBsYWNlIHRoZSBuZXR3b3JrIGludGVyZmFjZXMgd2l0aGluIHRoZSBWUEMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGRlZmF1bHQgVlBDIHN1Ym5ldFxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0U2VsZWN0aW9uPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIHR5cGUgdXNlZCB0byBidWlsZCB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IG02aS5sYXJnZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlPzogZWMyLkluc3RhbmNlVHlwZTtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBkYXlzIGxvZyBldmVudHMgYXJlIGtlcHQgaW4gQ2xvdWRXYXRjaCBMb2dzLiBXaGVuIHVwZGF0aW5nXG4gICAqIHRoaXMgcHJvcGVydHksIHVuc2V0dGluZyBpdCBkb2Vzbid0IHJlbW92ZSB0aGUgbG9nIHJldGVudGlvbiBwb2xpY3kuIFRvXG4gICAqIHJlbW92ZSB0aGUgcmV0ZW50aW9uIHBvbGljeSwgc2V0IHRoZSB2YWx1ZSB0byBgSU5GSU5JVEVgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBsb2dzLlJldGVudGlvbkRheXMuT05FX01PTlRIXG4gICAqL1xuICByZWFkb25seSBsb2dSZXRlbnRpb24/OiBsb2dzLlJldGVudGlvbkRheXM7XG5cbiAgLyoqXG4gICAqIFJlbW92YWwgcG9saWN5IGZvciBsb2dzIG9mIGltYWdlIGJ1aWxkcy4gSWYgZGVwbG95bWVudCBmYWlscyBvbiB0aGUgY3VzdG9tIHJlc291cmNlLCB0cnkgc2V0dGluZyB0aGlzIHRvIGBSZW1vdmFsUG9saWN5LlJFVEFJTmAuIFRoaXMgd2F5IHRoZSBsb2dzIGNhbiBzdGlsbCBiZSB2aWV3ZWQsIGFuZCB5b3UgY2FuIHNlZSB3aHkgdGhlIGJ1aWxkIGZhaWxlZC5cbiAgICpcbiAgICogV2UgdHJ5IHRvIG5vdCBsZWF2ZSBhbnl0aGluZyBiZWhpbmQgd2hlbiByZW1vdmVkLiBCdXQgc29tZXRpbWVzIGEgbG9nIHN0YXlpbmcgYmVoaW5kIGlzIHVzZWZ1bC5cbiAgICpcbiAgICogQGRlZmF1bHQgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZXG4gICAqL1xuICByZWFkb25seSBsb2dSZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcblxuICAvKipcbiAgICogUGlwZWxpbmUgYW5kIGluZnJhc3RydWN0dXJlIGRlc2NyaXB0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VUeXBlTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFzc2V0IHRvIGNvcHkgaW50byBhIGJ1aWx0IGltYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bm5lckltYWdlQXNzZXQge1xuICAvKipcbiAgICogUGF0aCBvbiBsb2NhbCBzeXN0ZW0gdG8gY29weSBpbnRvIHRoZSBpbWFnZS4gQ2FuIGJlIGEgZmlsZSBvciBhIGRpcmVjdG9yeS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYXJnZXQgcGF0aCBpbiB0aGUgYnVpbHQgaW1hZ2UuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdW5uZXJJbWFnZUJ1aWxkZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBJbWFnZSBhcmNoaXRlY3R1cmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IEFyY2hpdGVjdHVyZS5YODZfNjRcbiAgICovXG4gIHJlYWRvbmx5IGFyY2hpdGVjdHVyZT86IEFyY2hpdGVjdHVyZTtcblxuICAvKipcbiAgICogSW1hZ2UgT1MuXG4gICAqXG4gICAqIEBkZWZhdWx0IE9TLkxJTlVYX1VCVU5UVVxuICAgKi9cbiAgcmVhZG9ubHkgb3M/OiBPcztcblxuICAvKipcbiAgICogQmFzZSBpbWFnZSBmcm9tIHdoaWNoIERvY2tlciBydW5uZXIgaW1hZ2VzIHdpbGwgYmUgYnVpbHQuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlOlxuICAgKiAtIEEgc3RyaW5nIChFQ1IvRUNSIHB1YmxpYyBpbWFnZSBVUkksIERvY2tlckh1YiBpbWFnZSwgb3IgSW1hZ2UgQnVpbGRlciBBUk4pIC0gZGVwcmVjYXRlZCwgdXNlIEJhc2VDb250YWluZXJJbWFnZSBzdGF0aWMgZmFjdG9yeSBtZXRob2RzIGluc3RlYWRcbiAgICogLSBBIEJhc2VDb250YWluZXJJbWFnZSBpbnN0YW5jZSBjcmVhdGVkIHVzaW5nIHN0YXRpYyBmYWN0b3J5IG1ldGhvZHM6XG4gICAqICAgLSBgQmFzZUNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoJ3VidW50dScsICcyMi4wNCcpYCAtIFVzZSBEb2NrZXJIdWJcbiAgICogICAtIGBCYXNlQ29udGFpbmVySW1hZ2UuZnJvbUVjcihyZXBvLCAnbGF0ZXN0JylgIC0gVXNlIEVDUiAoYXV0b21hdGljYWxseSBncmFudHMgcGVybWlzc2lvbnMgd2l0aCBDb2RlQnVpbGQpXG4gICAqICAgLSBgQmFzZUNvbnRhaW5lckltYWdlLmZyb21FY3JQdWJsaWMoJ2x0cycsICd1YnVudHUnLCAnMjIuMDQnKWAgLSBVc2UgRUNSIFB1YmxpY1xuICAgKiAgIC0gYEJhc2VDb250YWluZXJJbWFnZS5mcm9tU3RyaW5nKCdwdWJsaWMuZWNyLmF3cy9sdHMvdWJ1bnR1OjIyLjA0JylgIC0gVXNlIGFueSBzdHJpbmdcbiAgICpcbiAgICogV2hlbiB1c2luZyBwcml2YXRlIGltYWdlcyBmcm9tIGEgZGlmZmVyZW50IGFjY291bnQgb3Igbm90IG9uIEVDUiwgeW91IG1heSBuZWVkIHRvIGluY2x1ZGUgYWRkaXRpb25hbCBzZXR1cCBjb21tYW5kcyB3aXRoIHtAbGluayBkb2NrZXJTZXR1cENvbW1hbmRzfS5cbiAgICpcbiAgICogQGRlZmF1bHQgcHVibGljLmVjci5hd3MvbHRzL3VidW50dToyMi4wNCBmb3IgT3MuTElOVVhfVUJVTlRVIGFuZCBPcy5MSU5VWF9VQlVOVFVfMjIwNCwgcHVibGljLmVjci5hd3MvbHRzL3VidW50dToyNC4wNCBmb3IgT3MuTElOVVhfVUJVTlRVXzI0MDQsIHB1YmxpYy5lY3IuYXdzL2FtYXpvbmxpbnV4L2FtYXpvbmxpbnV4OjIgZm9yIE9zLkxJTlVYX0FNQVpPTl8yLCBtY3IubWljcm9zb2Z0LmNvbS93aW5kb3dzL3NlcnZlcmNvcmU6bHRzYzIwMTktYW1kNjQgZm9yIE9zLldJTkRPV1NcbiAgICovXG4gIHJlYWRvbmx5IGJhc2VEb2NrZXJJbWFnZT86IEJhc2VDb250YWluZXJJbWFnZUlucHV0O1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGNvbW1hbmRzIHRvIHJ1biBvbiB0aGUgYnVpbGQgaG9zdCBiZWZvcmUgc3RhcnRpbmcgdGhlIERvY2tlciBydW5uZXIgaW1hZ2UgYnVpbGQuXG4gICAqXG4gICAqIFVzZSB0aGlzIHRvIGV4ZWN1dGUgY29tbWFuZHMgc3VjaCBhcyBgZG9ja2VyIGxvZ2luYCBvciBgYXdzIGVjciBnZXQtbG9naW4tcGFzc3dvcmRgIHRvIHB1bGwgcHJpdmF0ZSBiYXNlIGltYWdlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGRvY2tlclNldHVwQ29tbWFuZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQmFzZSBBTUkgZnJvbSB3aGljaCBydW5uZXIgQU1JcyB3aWxsIGJlIGJ1aWx0LlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZTpcbiAgICogLSBBIHN0cmluZyAoQU1JIElELCBJbWFnZSBCdWlsZGVyIEFSTiwgU1NNIHBhcmFtZXRlciByZWZlcmVuY2UsIG9yIE1hcmtldHBsYWNlIHByb2R1Y3QgSUQpIC0gZGVwcmVjYXRlZCwgdXNlIEJhc2VJbWFnZSBzdGF0aWMgZmFjdG9yeSBtZXRob2RzIGluc3RlYWRcbiAgICogLSBBIEJhc2VJbWFnZSBpbnN0YW5jZSBjcmVhdGVkIHVzaW5nIHN0YXRpYyBmYWN0b3J5IG1ldGhvZHM6XG4gICAqICAgLSBgQmFzZUltYWdlLmZyb21BbWlJZCgnYW1pLTEyMzQ1JylgIC0gVXNlIGFuIEFNSSBJRFxuICAgKiAgIC0gYEJhc2VJbWFnZS5mcm9tU3RyaW5nKCdhcm46YXdzOmltYWdlYnVpbGRlcjouLi4nKWAgLSBVc2UgYW55IHN0cmluZyAoQVJOLCBBTUkgSUQsIGV0Yy4pXG4gICAqICAgLSBgQmFzZUltYWdlLmZyb21Tc21QYXJhbWV0ZXIocGFyYW1ldGVyKWAgLSBVc2UgYW4gU1NNIHBhcmFtZXRlciBvYmplY3RcbiAgICogICAtIGBCYXNlSW1hZ2UuZnJvbVNzbVBhcmFtZXRlck5hbWUoJy9hd3Mvc2VydmljZS9hbWkvLi4uJylgIC0gVXNlIGFuIFNTTSBwYXJhbWV0ZXIgYnkgbmFtZVxuICAgKiAgIC0gYEJhc2VJbWFnZS5mcm9tTWFya2V0cGxhY2VQcm9kdWN0SWQoJ3Byb2R1Y3QtaWQnKWAgLSBVc2UgYSBNYXJrZXRwbGFjZSBwcm9kdWN0IElEXG4gICAqICAgLSBgQmFzZUltYWdlLmZyb21JbWFnZUJ1aWxkZXIoc2NvcGUsICd1YnVudHUtc2VydmVyLTIyLWx0cy14ODYnKWAgLSBVc2UgYW4gQVdTLXByb3ZpZGVkIEltYWdlIEJ1aWxkZXIgaW1hZ2VcbiAgICpcbiAgICogRm9yIGV4YW1wbGUgYEJhc2VJbWFnZS5mcm9tSW1hZ2VCdWlsZGVyKHNjb3BlLCAndWJ1bnR1LXNlcnZlci0yMi1sdHMteDg2JylgIHdvdWxkIGFsd2F5cyB1c2UgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFVidW50dSAyMi4wNCBpbiBlYWNoIGJ1aWxkLiBJZiB5b3Ugd2FudCBhIHNwZWNpZmljIHZlcnNpb24sIHlvdSBjYW4gcGFzcyB0aGUgdmVyc2lvbiBhcyB0aGUgdGhpcmQgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBsYXRlc3QgVWJ1bnR1IDIyLjA0IEFNSSBmb3IgT3MuTElOVVhfVUJVTlRVIGFuZCBPcy5MSU5VWF9VQlVOVFVfMjIwNCwgVWJ1bnR1IDI0LjA0IEFNSSBmb3IgT3MuTElOVVhfVUJVTlRVXzI0MDQsIGxhdGVzdCBBbWF6b24gTGludXggMiBBTUkgZm9yIE9zLkxJTlVYX0FNQVpPTl8yLCBsYXRlc3QgV2luZG93cyBTZXJ2ZXIgMjAyMiBBTUkgZm9yIE9zLldJTkRPV1NcbiAgICovXG4gIHJlYWRvbmx5IGJhc2VBbWk/OiBCYXNlSW1hZ2VJbnB1dDtcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiBHaXRIdWIgUnVubmVycyB0byBpbnN0YWxsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBsYXRlc3QgdmVyc2lvbiBhdmFpbGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJ1bm5lclZlcnNpb24/OiBSdW5uZXJWZXJzaW9uO1xuXG4gIC8qKlxuICAgKiBDb21wb25lbnRzIHRvIGluc3RhbGwgb24gdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBub25lXG4gICAqL1xuICByZWFkb25seSBjb21wb25lbnRzPzogUnVubmVySW1hZ2VDb21wb25lbnRbXTtcblxuICAvKipcbiAgICogU2NoZWR1bGUgdGhlIGltYWdlIHRvIGJlIHJlYnVpbHQgZXZlcnkgZ2l2ZW4gaW50ZXJ2YWwuIFVzZWZ1bCBmb3Iga2VlcGluZyB0aGUgaW1hZ2UgdXAtZG8tZGF0ZSB3aXRoIHRoZSBsYXRlc3QgR2l0SHViIHJ1bm5lciB2ZXJzaW9uIGFuZCBsYXRlc3QgT1MgdXBkYXRlcy5cbiAgICpcbiAgICogU2V0IHRvIHplcm8gdG8gZGlzYWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24uZGF5cyg3KVxuICAgKi9cbiAgcmVhZG9ubHkgcmVidWlsZEludGVydmFsPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFZQQyB0byBidWlsZCB0aGUgaW1hZ2UgaW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIFZQQ1xuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IEdyb3VwcyB0byBhc3NpZ24gdG8gdGhpcyBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLklTZWN1cml0eUdyb3VwW107XG5cbiAgLyoqXG4gICAqIFdoZXJlIHRvIHBsYWNlIHRoZSBuZXR3b3JrIGludGVyZmFjZXMgd2l0aGluIHRoZSBWUEMuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIHN1Ym5ldFxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0U2VsZWN0aW9uPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBkYXlzIGxvZyBldmVudHMgYXJlIGtlcHQgaW4gQ2xvdWRXYXRjaCBMb2dzLiBXaGVuIHVwZGF0aW5nXG4gICAqIHRoaXMgcHJvcGVydHksIHVuc2V0dGluZyBpdCBkb2Vzbid0IHJlbW92ZSB0aGUgbG9nIHJldGVudGlvbiBwb2xpY3kuIFRvXG4gICAqIHJlbW92ZSB0aGUgcmV0ZW50aW9uIHBvbGljeSwgc2V0IHRoZSB2YWx1ZSB0byBgSU5GSU5JVEVgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBsb2dzLlJldGVudGlvbkRheXMuT05FX01PTlRIXG4gICAqL1xuICByZWFkb25seSBsb2dSZXRlbnRpb24/OiBsb2dzLlJldGVudGlvbkRheXM7XG5cbiAgLyoqXG4gICAqIFJlbW92YWwgcG9saWN5IGZvciBsb2dzIG9mIGltYWdlIGJ1aWxkcy4gSWYgZGVwbG95bWVudCBmYWlscyBvbiB0aGUgY3VzdG9tIHJlc291cmNlLCB0cnkgc2V0dGluZyB0aGlzIHRvIGBSZW1vdmFsUG9saWN5LlJFVEFJTmAuIFRoaXMgd2F5IHRoZSBDb2RlQnVpbGQgbG9ncyBjYW4gc3RpbGwgYmUgdmlld2VkLCBhbmQgeW91IGNhbiBzZWUgd2h5IHRoZSBidWlsZCBmYWlsZWQuXG4gICAqXG4gICAqIFdlIHRyeSB0byBub3QgbGVhdmUgYW55dGhpbmcgYmVoaW5kIHdoZW4gcmVtb3ZlZC4gQnV0IHNvbWV0aW1lcyBhIGxvZyBzdGF5aW5nIGJlaGluZCBpcyB1c2VmdWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgKi9cbiAgcmVhZG9ubHkgbG9nUmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0IENvZGVCdWlsZCBmb3IgTGludXggRG9ja2VyIGltYWdlLCBBV1MgSW1hZ2UgQnVpbGRlciBmb3IgV2luZG93cyBEb2NrZXIgaW1hZ2UgYW5kIGFueSBBTUlcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkZXJUeXBlPzogUnVubmVySW1hZ2VCdWlsZGVyVHlwZTtcblxuICAvKipcbiAgICogT3B0aW9ucyBzcGVjaWZpYyB0byBDb2RlQnVpbGQgaW1hZ2UgYnVpbGRlci4gT25seSB1c2VkIHdoZW4gYnVpbGRlclR5cGUgaXMgUnVubmVySW1hZ2VCdWlsZGVyVHlwZS5DT0RFX0JVSUxELlxuICAgKi9cbiAgcmVhZG9ubHkgY29kZUJ1aWxkT3B0aW9ucz86IENvZGVCdWlsZFJ1bm5lckltYWdlQnVpbGRlclByb3BzO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIHNwZWNpZmljIHRvIEFXUyBJbWFnZSBCdWlsZGVyLiBPbmx5IHVzZWQgd2hlbiBidWlsZGVyVHlwZSBpcyBSdW5uZXJJbWFnZUJ1aWxkZXJUeXBlLkFXU19JTUFHRV9CVUlMREVSLlxuICAgKi9cbiAgcmVhZG9ubHkgYXdzSW1hZ2VCdWlsZGVyT3B0aW9ucz86IEF3c0ltYWdlQnVpbGRlclJ1bm5lckltYWdlQnVpbGRlclByb3BzO1xuXG4gIC8qKlxuICAgKiBXYWl0IGZvciBpbWFnZSB0byBmaW5pc2ggYnVpbGRpbmcgZHVyaW5nIGRlcGxveW1lbnQuIEl0J3MgdXN1YWxseSBiZXN0IHRvIGxlYXZlIHRoaXMgZW5hYmxlZCB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyByZWFkeSBvbmNlIGRlcGxveW1lbnQgaXMgZG9uZS4gSG93ZXZlciwgaXQgY2FuIGJlIGRpc2FibGVkIHRvIHNwZWVkIHVwIGRlcGxveW1lbnQgaW4gY2FzZSB3aGVyZSB5b3UgaGF2ZSBhIGxvdCBvZiBpbWFnZSBjb21wb25lbnRzIHRoYXQgY2FuIHRha2UgYSBsb25nIHRpbWUgdG8gYnVpbGQuXG4gICAqXG4gICAqIERpc2FibGluZyB0aGlzIG9wdGlvbiBtZWFucyBhIGZpbmlzaGVkIGRlcGxveW1lbnQgaXMgbm90IHJlYWR5IHRvIGJlIHVzZWQuIFlvdSB3aWxsIGhhdmUgdG8gd2FpdCBmb3IgdGhlIGltYWdlIHRvIGZpbmlzaCBidWlsZGluZyBiZWZvcmUgdGhlIHN5c3RlbSBjYW4gYmUgdXNlZC5cbiAgICpcbiAgICogRGlzYWJsaW5nIHRoaXMgb3B0aW9uIG1heSBhbHNvIG1lYW4gYW55IGNoYW5nZXMgdG8gc2V0dGluZ3Mgb3IgY29tcG9uZW50cyBjYW4gdGFrZSB1cCB0byBhIHdlZWsgKGRlZmF1bHQgcmVidWlsZCBpbnRlcnZhbCkgdG8gdGFrZSBlZmZlY3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHdhaXRPbkRlcGxveT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBlbnVtIFJ1bm5lckltYWdlQnVpbGRlclR5cGUge1xuICAvKipcbiAgICogQnVpbGQgcnVubmVyIGltYWdlcyB1c2luZyBBV1MgQ29kZUJ1aWxkLlxuICAgKlxuICAgKiBGYXN0ZXIgdGhhbiBBV1MgSW1hZ2UgQnVpbGRlciwgYnV0IGNhbiBvbmx5IGJlIHVzZWQgdG8gYnVpbGQgTGludXggRG9ja2VyIGltYWdlcy5cbiAgICovXG4gIENPREVfQlVJTEQgPSAnQ29kZUJ1aWxkJyxcblxuICAvKipcbiAgICogQnVpbGQgcnVubmVyIGltYWdlcyB1c2luZyBBV1MgSW1hZ2UgQnVpbGRlci5cbiAgICpcbiAgICogU2xvd2VyIHRoYW4gQ29kZUJ1aWxkLCBidXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgYW55IHR5cGUgb2YgaW1hZ2UgaW5jbHVkaW5nIEFNSXMgYW5kIFdpbmRvd3MgaW1hZ2VzLlxuICAgKi9cbiAgQVdTX0lNQUdFX0JVSUxERVIgPSAnQXdzSW1hZ2VCdWlsZGVyJyxcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIGNvbnN0cnVjdHMgdGhhdCBidWlsZCBhbiBpbWFnZSB0aGF0IGNhbiBiZSB1c2VkIGluIHtAbGluayBJUnVubmVyUHJvdmlkZXJ9LlxuICpcbiAqIEFuIGltYWdlIGNhbiBiZSBhIERvY2tlciBpbWFnZSBvciBBTUkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJ1bm5lckltYWdlQnVpbGRlciB7XG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgRG9ja2VyIGltYWdlIHdpdGggR2l0SHViIFJ1bm5lciBpbnN0YWxsZWQgaW4gaXQuXG4gICAqXG4gICAqIEFueXRoaW5nIHRoYXQgZW5kcyB1cCB3aXRoIGFuIEVDUiByZXBvc2l0b3J5IGNvbnRhaW5pbmcgYSBEb2NrZXIgaW1hZ2UgdGhhdCBydW5zIEdpdEh1YiBzZWxmLWhvc3RlZCBydW5uZXJzIGNhbiBiZSB1c2VkLiBBIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBjb3VsZCBldmVuIHBvaW50IHRvIGFuIGV4aXN0aW5nIGltYWdlIGFuZCBub3RoaW5nIGVsc2UuXG4gICAqXG4gICAqIEl0J3MgaW1wb3J0YW50IHRoYXQgdGhlIHNwZWNpZmllZCBpbWFnZSB0YWcgYmUgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIHRoZSByZXBvc2l0b3J5IGlzIGF2YWlsYWJsZS4gUHJvdmlkZXJzIHVzdWFsbHkgYXNzdW1lIHRoZSBpbWFnZSBpcyByZWFkeSBhbmQgd2lsbCBmYWlsIGlmIGl0J3Mgbm90LlxuICAgKlxuICAgKiBUaGUgaW1hZ2UgY2FuIGJlIGZ1cnRoZXIgdXBkYXRlZCBvdmVyIHRpbWUgbWFudWFsbHkgb3IgdXNpbmcgYSBzY2hlZHVsZSBhcyBsb25nIGFzIGl0IGlzIGFsd2F5cyB3cml0dGVuIHRvIHRoZSBzYW1lIHRhZy5cbiAgICovXG4gIGJpbmREb2NrZXJJbWFnZSgpOiBSdW5uZXJJbWFnZTtcblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhbiBBTUkgd2l0aCBHaXRIdWIgUnVubmVyIGluc3RhbGxlZCBpbiBpdC5cbiAgICpcbiAgICogQW55dGhpbmcgdGhhdCBlbmRzIHVwIHdpdGggYSBsYXVuY2ggdGVtcGxhdGUgcG9pbnRpbmcgdG8gYW4gQU1JIHRoYXQgcnVucyBHaXRIdWIgc2VsZi1ob3N0ZWQgcnVubmVycyBjYW4gYmUgdXNlZC4gQSBzaW1wbGUgaW1wbGVtZW50YXRpb24gY291bGQgZXZlbiBwb2ludCB0byBhbiBleGlzdGluZyBBTUkgYW5kIG5vdGhpbmcgZWxzZS5cbiAgICpcbiAgICogVGhlIEFNSSBjYW4gYmUgZnVydGhlciB1cGRhdGVkIG92ZXIgdGltZSBtYW51YWxseSBvciB1c2luZyBhIHNjaGVkdWxlIGFzIGxvbmcgYXMgaXQgaXMgYWx3YXlzIHdyaXR0ZW4gdG8gdGhlIHNhbWUgbGF1bmNoIHRlbXBsYXRlLlxuICAgKi9cbiAgYmluZEFtaSgpOiBSdW5uZXJBbWk7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBjb25zdHJ1Y3RzIHRoYXQgYnVpbGQgYW4gaW1hZ2UgdGhhdCBjYW4gYmUgdXNlZCBpbiB7QGxpbmsgSVJ1bm5lclByb3ZpZGVyfS4gVGhlIGltYWdlIGNhbiBiZSBjb25maWd1cmVkIGJ5IGFkZGluZyBvciByZW1vdmluZyBjb21wb25lbnRzLiBUaGUgaW1hZ2UgYnVpbGRlciBjYW4gYmUgY29uZmlndXJlZCBieSBhZGRpbmcgZ3JhbnRzIG9yIGFsbG93aW5nIGNvbm5lY3Rpb25zLlxuICpcbiAqIEFuIGltYWdlIGNhbiBiZSBhIERvY2tlciBpbWFnZSBvciBBTUkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbmZpZ3VyYWJsZVJ1bm5lckltYWdlQnVpbGRlciBleHRlbmRzIElSdW5uZXJJbWFnZUJ1aWxkZXIsIGVjMi5JQ29ubmVjdGFibGUsIGlhbS5JR3JhbnRhYmxlIHtcbiAgLyoqXG4gICAqIEFkZCBhIGNvbXBvbmVudCB0byB0aGUgaW1hZ2UgYnVpbGRlci4gVGhlIGNvbXBvbmVudCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3Qgb2YgY29tcG9uZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGNvbXBvbmVudCBjb21wb25lbnQgdG8gYWRkXG4gICAqL1xuICBhZGRDb21wb25lbnQoY29tcG9uZW50OiBSdW5uZXJJbWFnZUNvbXBvbmVudCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIGNvbXBvbmVudCBmcm9tIHRoZSBpbWFnZSBidWlsZGVyLiBSZW1vdmFsIGlzIGRvbmUgYnkgY29tcG9uZW50IG5hbWUuIE11bHRpcGxlIGNvbXBvbmVudHMgd2l0aCB0aGUgc2FtZSBuYW1lIHdpbGwgYWxsIGJlIHJlbW92ZWQuXG4gICAqXG4gICAqIEBwYXJhbSBjb21wb25lbnQgY29tcG9uZW50IHRvIHJlbW92ZVxuICAgKi9cbiAgcmVtb3ZlQ29tcG9uZW50KGNvbXBvbmVudDogUnVubmVySW1hZ2VDb21wb25lbnQpOiB2b2lkO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUnVubmVySW1hZ2VCdWlsZGVyQmFzZSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElDb25maWd1cmFibGVSdW5uZXJJbWFnZUJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgY29tcG9uZW50czogUnVubmVySW1hZ2VDb21wb25lbnRbXSA9IFtdO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFJ1bm5lckltYWdlQnVpbGRlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGlmIChwcm9wcz8uY29tcG9uZW50cykge1xuICAgICAgdGhpcy5jb21wb25lbnRzLnB1c2goLi4ucHJvcHMuY29tcG9uZW50cyk7XG4gICAgfVxuICB9XG5cbiAgYWJzdHJhY3QgYmluZERvY2tlckltYWdlKCk6IFJ1bm5lckltYWdlO1xuXG4gIGFic3RyYWN0IGJpbmRBbWkoKTogUnVubmVyQW1pO1xuXG4gIGFic3RyYWN0IGdldCBjb25uZWN0aW9ucygpOiBlYzIuQ29ubmVjdGlvbnM7XG4gIGFic3RyYWN0IGdldCBncmFudFByaW5jaXBhbCgpOiBpYW0uSVByaW5jaXBhbDtcblxuICBwdWJsaWMgYWRkQ29tcG9uZW50KGNvbXBvbmVudDogUnVubmVySW1hZ2VDb21wb25lbnQpIHtcbiAgICB0aGlzLmNvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUNvbXBvbmVudChjb21wb25lbnQ6IFJ1bm5lckltYWdlQ29tcG9uZW50KSB7XG4gICAgdGhpcy5jb21wb25lbnRzID0gdGhpcy5jb21wb25lbnRzLmZpbHRlcihjID0+IGMubmFtZSAhPT0gY29tcG9uZW50Lm5hbWUpO1xuICB9XG59XG5cbiJdfQ==