@cdktf/provider-acme 2.0.73 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +529 -478
- package/API.md +0 -2511
- package/lib/{certificate.d.ts → certificate/index.d.ts} +0 -0
- package/lib/certificate/index.js +718 -0
- package/lib/index.d.ts +3 -3
- package/lib/index.js +4 -14
- package/lib/{acme-provider.d.ts → provider/index.d.ts} +0 -0
- package/lib/provider/index.js +74 -0
- package/lib/{registration.d.ts → registration/index.d.ts} +0 -0
- package/lib/registration/index.js +184 -0
- package/package.json +5 -5
- package/lib/acme-provider.js +0 -74
- package/lib/certificate.js +0 -718
- package/lib/registration.js +0 -184
    
        package/lib/registration.js
    DELETED
    
    | @@ -1,184 +0,0 @@ | |
| 1 | 
            -
            "use strict";
         | 
| 2 | 
            -
            var _a, _b;
         | 
| 3 | 
            -
            Object.defineProperty(exports, "__esModule", { value: true });
         | 
| 4 | 
            -
            exports.Registration = exports.RegistrationExternalAccountBindingOutputReference = exports.registrationExternalAccountBindingToTerraform = void 0;
         | 
| 5 | 
            -
            const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
         | 
| 6 | 
            -
            const cdktf = require("cdktf");
         | 
| 7 | 
            -
            function registrationExternalAccountBindingToTerraform(struct) {
         | 
| 8 | 
            -
                if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
         | 
| 9 | 
            -
                    return struct;
         | 
| 10 | 
            -
                }
         | 
| 11 | 
            -
                if (cdktf.isComplexElement(struct)) {
         | 
| 12 | 
            -
                    throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
         | 
| 13 | 
            -
                }
         | 
| 14 | 
            -
                return {
         | 
| 15 | 
            -
                    hmac_base64: cdktf.stringToTerraform(struct.hmacBase64),
         | 
| 16 | 
            -
                    key_id: cdktf.stringToTerraform(struct.keyId),
         | 
| 17 | 
            -
                };
         | 
| 18 | 
            -
            }
         | 
| 19 | 
            -
            exports.registrationExternalAccountBindingToTerraform = registrationExternalAccountBindingToTerraform;
         | 
| 20 | 
            -
            class RegistrationExternalAccountBindingOutputReference extends cdktf.ComplexObject {
         | 
| 21 | 
            -
                /**
         | 
| 22 | 
            -
                * @param terraformResource The parent resource
         | 
| 23 | 
            -
                * @param terraformAttribute The attribute on the parent resource this class is referencing
         | 
| 24 | 
            -
                */
         | 
| 25 | 
            -
                constructor(terraformResource, terraformAttribute) {
         | 
| 26 | 
            -
                    super(terraformResource, terraformAttribute, false, 0);
         | 
| 27 | 
            -
                    this.isEmptyObject = false;
         | 
| 28 | 
            -
                }
         | 
| 29 | 
            -
                get internalValue() {
         | 
| 30 | 
            -
                    let hasAnyValues = this.isEmptyObject;
         | 
| 31 | 
            -
                    const internalValueResult = {};
         | 
| 32 | 
            -
                    if (this._hmacBase64 !== undefined) {
         | 
| 33 | 
            -
                        hasAnyValues = true;
         | 
| 34 | 
            -
                        internalValueResult.hmacBase64 = this._hmacBase64;
         | 
| 35 | 
            -
                    }
         | 
| 36 | 
            -
                    if (this._keyId !== undefined) {
         | 
| 37 | 
            -
                        hasAnyValues = true;
         | 
| 38 | 
            -
                        internalValueResult.keyId = this._keyId;
         | 
| 39 | 
            -
                    }
         | 
| 40 | 
            -
                    return hasAnyValues ? internalValueResult : undefined;
         | 
| 41 | 
            -
                }
         | 
| 42 | 
            -
                set internalValue(value) {
         | 
| 43 | 
            -
                    if (value === undefined) {
         | 
| 44 | 
            -
                        this.isEmptyObject = false;
         | 
| 45 | 
            -
                        this._hmacBase64 = undefined;
         | 
| 46 | 
            -
                        this._keyId = undefined;
         | 
| 47 | 
            -
                    }
         | 
| 48 | 
            -
                    else {
         | 
| 49 | 
            -
                        this.isEmptyObject = Object.keys(value).length === 0;
         | 
| 50 | 
            -
                        this._hmacBase64 = value.hmacBase64;
         | 
| 51 | 
            -
                        this._keyId = value.keyId;
         | 
| 52 | 
            -
                    }
         | 
| 53 | 
            -
                }
         | 
| 54 | 
            -
                get hmacBase64() {
         | 
| 55 | 
            -
                    return this.getStringAttribute('hmac_base64');
         | 
| 56 | 
            -
                }
         | 
| 57 | 
            -
                set hmacBase64(value) {
         | 
| 58 | 
            -
                    this._hmacBase64 = value;
         | 
| 59 | 
            -
                }
         | 
| 60 | 
            -
                // Temporarily expose input value. Use with caution.
         | 
| 61 | 
            -
                get hmacBase64Input() {
         | 
| 62 | 
            -
                    return this._hmacBase64;
         | 
| 63 | 
            -
                }
         | 
| 64 | 
            -
                get keyId() {
         | 
| 65 | 
            -
                    return this.getStringAttribute('key_id');
         | 
| 66 | 
            -
                }
         | 
| 67 | 
            -
                set keyId(value) {
         | 
| 68 | 
            -
                    this._keyId = value;
         | 
| 69 | 
            -
                }
         | 
| 70 | 
            -
                // Temporarily expose input value. Use with caution.
         | 
| 71 | 
            -
                get keyIdInput() {
         | 
| 72 | 
            -
                    return this._keyId;
         | 
| 73 | 
            -
                }
         | 
| 74 | 
            -
            }
         | 
| 75 | 
            -
            exports.RegistrationExternalAccountBindingOutputReference = RegistrationExternalAccountBindingOutputReference;
         | 
| 76 | 
            -
            _a = JSII_RTTI_SYMBOL_1;
         | 
| 77 | 
            -
            RegistrationExternalAccountBindingOutputReference[_a] = { fqn: "@cdktf/provider-acme.RegistrationExternalAccountBindingOutputReference", version: "2.0.73" };
         | 
| 78 | 
            -
            /**
         | 
| 79 | 
            -
            * Represents a {@link https://www.terraform.io/docs/providers/acme/r/registration acme_registration}
         | 
| 80 | 
            -
            */
         | 
| 81 | 
            -
            class Registration extends cdktf.TerraformResource {
         | 
| 82 | 
            -
                // ===========
         | 
| 83 | 
            -
                // INITIALIZER
         | 
| 84 | 
            -
                // ===========
         | 
| 85 | 
            -
                /**
         | 
| 86 | 
            -
                * Create a new {@link https://www.terraform.io/docs/providers/acme/r/registration acme_registration} Resource
         | 
| 87 | 
            -
                *
         | 
| 88 | 
            -
                * @param scope The scope in which to define this construct
         | 
| 89 | 
            -
                * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
         | 
| 90 | 
            -
                * @param options RegistrationConfig
         | 
| 91 | 
            -
                */
         | 
| 92 | 
            -
                constructor(scope, id, config) {
         | 
| 93 | 
            -
                    super(scope, id, {
         | 
| 94 | 
            -
                        terraformResourceType: 'acme_registration',
         | 
| 95 | 
            -
                        terraformGeneratorMetadata: {
         | 
| 96 | 
            -
                            providerName: 'acme',
         | 
| 97 | 
            -
                            providerVersion: '2.10.0',
         | 
| 98 | 
            -
                            providerVersionConstraint: '~> 2.10'
         | 
| 99 | 
            -
                        },
         | 
| 100 | 
            -
                        provider: config.provider,
         | 
| 101 | 
            -
                        dependsOn: config.dependsOn,
         | 
| 102 | 
            -
                        count: config.count,
         | 
| 103 | 
            -
                        lifecycle: config.lifecycle,
         | 
| 104 | 
            -
                        provisioners: config.provisioners,
         | 
| 105 | 
            -
                        connection: config.connection,
         | 
| 106 | 
            -
                        forEach: config.forEach
         | 
| 107 | 
            -
                    });
         | 
| 108 | 
            -
                    // external_account_binding - computed: false, optional: true, required: false
         | 
| 109 | 
            -
                    this._externalAccountBinding = new RegistrationExternalAccountBindingOutputReference(this, "external_account_binding");
         | 
| 110 | 
            -
                    this._accountKeyPem = config.accountKeyPem;
         | 
| 111 | 
            -
                    this._emailAddress = config.emailAddress;
         | 
| 112 | 
            -
                    this._id = config.id;
         | 
| 113 | 
            -
                    this._externalAccountBinding.internalValue = config.externalAccountBinding;
         | 
| 114 | 
            -
                }
         | 
| 115 | 
            -
                get accountKeyPem() {
         | 
| 116 | 
            -
                    return this.getStringAttribute('account_key_pem');
         | 
| 117 | 
            -
                }
         | 
| 118 | 
            -
                set accountKeyPem(value) {
         | 
| 119 | 
            -
                    this._accountKeyPem = value;
         | 
| 120 | 
            -
                }
         | 
| 121 | 
            -
                // Temporarily expose input value. Use with caution.
         | 
| 122 | 
            -
                get accountKeyPemInput() {
         | 
| 123 | 
            -
                    return this._accountKeyPem;
         | 
| 124 | 
            -
                }
         | 
| 125 | 
            -
                get emailAddress() {
         | 
| 126 | 
            -
                    return this.getStringAttribute('email_address');
         | 
| 127 | 
            -
                }
         | 
| 128 | 
            -
                set emailAddress(value) {
         | 
| 129 | 
            -
                    this._emailAddress = value;
         | 
| 130 | 
            -
                }
         | 
| 131 | 
            -
                // Temporarily expose input value. Use with caution.
         | 
| 132 | 
            -
                get emailAddressInput() {
         | 
| 133 | 
            -
                    return this._emailAddress;
         | 
| 134 | 
            -
                }
         | 
| 135 | 
            -
                get id() {
         | 
| 136 | 
            -
                    return this.getStringAttribute('id');
         | 
| 137 | 
            -
                }
         | 
| 138 | 
            -
                set id(value) {
         | 
| 139 | 
            -
                    this._id = value;
         | 
| 140 | 
            -
                }
         | 
| 141 | 
            -
                resetId() {
         | 
| 142 | 
            -
                    this._id = undefined;
         | 
| 143 | 
            -
                }
         | 
| 144 | 
            -
                // Temporarily expose input value. Use with caution.
         | 
| 145 | 
            -
                get idInput() {
         | 
| 146 | 
            -
                    return this._id;
         | 
| 147 | 
            -
                }
         | 
| 148 | 
            -
                // registration_url - computed: true, optional: false, required: false
         | 
| 149 | 
            -
                get registrationUrl() {
         | 
| 150 | 
            -
                    return this.getStringAttribute('registration_url');
         | 
| 151 | 
            -
                }
         | 
| 152 | 
            -
                get externalAccountBinding() {
         | 
| 153 | 
            -
                    return this._externalAccountBinding;
         | 
| 154 | 
            -
                }
         | 
| 155 | 
            -
                putExternalAccountBinding(value) {
         | 
| 156 | 
            -
                    this._externalAccountBinding.internalValue = value;
         | 
| 157 | 
            -
                }
         | 
| 158 | 
            -
                resetExternalAccountBinding() {
         | 
| 159 | 
            -
                    this._externalAccountBinding.internalValue = undefined;
         | 
| 160 | 
            -
                }
         | 
| 161 | 
            -
                // Temporarily expose input value. Use with caution.
         | 
| 162 | 
            -
                get externalAccountBindingInput() {
         | 
| 163 | 
            -
                    return this._externalAccountBinding.internalValue;
         | 
| 164 | 
            -
                }
         | 
| 165 | 
            -
                // =========
         | 
| 166 | 
            -
                // SYNTHESIS
         | 
| 167 | 
            -
                // =========
         | 
| 168 | 
            -
                synthesizeAttributes() {
         | 
| 169 | 
            -
                    return {
         | 
| 170 | 
            -
                        account_key_pem: cdktf.stringToTerraform(this._accountKeyPem),
         | 
| 171 | 
            -
                        email_address: cdktf.stringToTerraform(this._emailAddress),
         | 
| 172 | 
            -
                        id: cdktf.stringToTerraform(this._id),
         | 
| 173 | 
            -
                        external_account_binding: registrationExternalAccountBindingToTerraform(this._externalAccountBinding.internalValue),
         | 
| 174 | 
            -
                    };
         | 
| 175 | 
            -
                }
         | 
| 176 | 
            -
            }
         | 
| 177 | 
            -
            exports.Registration = Registration;
         | 
| 178 | 
            -
            _b = JSII_RTTI_SYMBOL_1;
         | 
| 179 | 
            -
            Registration[_b] = { fqn: "@cdktf/provider-acme.Registration", version: "2.0.73" };
         | 
| 180 | 
            -
            // =================
         | 
| 181 | 
            -
            // STATIC PROPERTIES
         | 
| 182 | 
            -
            // =================
         | 
| 183 | 
            -
            Registration.tfResourceType = "acme_registration";
         | 
| 184 | 
            -
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JlZ2lzdHJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUlBLCtCQUErQjtBQXNDL0IsU0FBZ0IsNkNBQTZDLENBQUMsTUFBK0Y7SUFDM0osSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFBRSxPQUFPLE1BQU0sQ0FBQztLQUFFO0lBQzVGLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0hBQW9ILENBQUMsQ0FBQztLQUN2STtJQUNELE9BQU87UUFDTCxXQUFXLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxVQUFVLENBQUM7UUFDeEQsTUFBTSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsS0FBSyxDQUFDO0tBQy9DLENBQUE7QUFDSCxDQUFDO0FBVEQsc0dBU0M7QUFFRCxNQUFhLGlEQUFrRCxTQUFRLEtBQUssQ0FBQyxhQUFhO0lBR3hGOzs7TUFHRTtJQUNGLFlBQW1CLGlCQUE2QyxFQUFFLGtCQUEwQjtRQUMxRixLQUFLLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBUGpELGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBUTlCLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN0QyxNQUFNLG1CQUFtQixHQUFRLEVBQUUsQ0FBQztRQUNwQyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQ2xDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDcEIsbUJBQW1CLENBQUMsVUFBVSxH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QkFBeUIsQ0FBQyxLQUF5QztRQUN4RSxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUNyRCxDQUFDO0lBQ00sMkJBQTJCO1FBQ2hDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0lBQ3pELENBQUM7SUFDRCxvREFBb0Q7SUFDcEQsSUFBVywyQkFBMkI7UUFDcEMsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDO0lBQ3BELENBQUM7SUFFRCxZQUFZO0lBQ1osWUFBWTtJQUNaLFlBQVk7SUFFRixvQkFBb0I7UUFDNUIsT0FBTztZQUNMLGVBQWUsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUM3RCxhQUFhLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDMUQsRUFBRSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ3JDLHdCQUF3QixFQUFFLDZDQUE2QyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUM7U0FDcEgsQ0FBQztJQUNKLENBQUM7O0FBdEhILG9DQXVIQzs7O0FBckhDLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ0csMkJBQWMsR0FBRyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vd3d3LnRlcnJhZm9ybS5pby9kb2NzL3Byb3ZpZGVycy9hY21lL3IvcmVnaXN0cmF0aW9uXG4vLyBnZW5lcmF0ZWQgZnJvbSB0ZXJyYWZvcm0gcmVzb3VyY2Ugc2NoZW1hXG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSAnY2RrdGYnO1xuXG4vLyBDb25maWd1cmF0aW9uXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0cmF0aW9uQ29uZmlnIGV4dGVuZHMgY2RrdGYuVGVycmFmb3JtTWV0YUFyZ3VtZW50cyB7XG4gIC8qKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly93d3cudGVycmFmb3JtLmlvL2RvY3MvcHJvdmlkZXJzL2FjbWUvci9yZWdpc3RyYXRpb24jYWNjb3VudF9rZXlfcGVtIFJlZ2lzdHJhdGlvbiNhY2NvdW50X2tleV9wZW19XG4gICovXG4gIHJlYWRvbmx5IGFjY291bnRLZXlQZW06IHN0cmluZztcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3d3dy50ZXJyYWZvcm0uaW8vZG9jcy9wcm92aWRlcnMvYWNtZS9yL3JlZ2lzdHJhdGlvbiNlbWFpbF9hZGRyZXNzIFJlZ2lzdHJhdGlvbiNlbWFpbF9hZGRyZXNzfVxuICAqL1xuICByZWFkb25seSBlbWFpbEFkZHJlc3M6IHN0cmluZztcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3d3dy50ZXJyYWZvcm0uaW8vZG9jcy9wcm92aWRlcnMvYWNtZS9yL3JlZ2lzdHJhdGlvbiNpZCBSZWdpc3RyYXRpb24jaWR9XG4gICpcbiAgKiBQbGVhc2UgYmUgYXdhcmUgdGhhdCB0aGUgaWQgZmllbGQgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byBhbGwgcmVzb3VyY2VzIGluIFRlcnJhZm9ybSBwcm92aWRlcnMgdXNpbmcgYSBUZXJyYWZvcm0gcHJvdmlkZXIgU0RLIHZlcnNpb24gYmVsb3cgMi5cbiAgKiBJZiB5b3UgZXhwZXJpZW5jZSBwcm9ibGVtcyBzZXR0aW5nIHRoaXMgdmFsdWUgaXQgbWlnaHQgbm90IGJlIHNldHRhYmxlLiBQbGVhc2UgdGFrZSBhIGxvb2sgYXQgdGhlIHByb3ZpZGVyIGRvY3VtZW50YXRpb24gdG8gZW5zdXJlIGl0IHNob3VsZCBiZSBzZXR0YWJsZS5cbiAgKi9cbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAqIGV4dGVybmFsX2FjY291bnRfYmluZGluZyBibG9ja1xuICAqIFxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly93d3cudGVycmFmb3JtLmlvL2RvY3MvcHJvdmlkZXJzL2FjbWUvci9yZWdpc3RyYXRpb24jZXh0ZXJuYWxfYWNjb3VudF9iaW5kaW5nIFJlZ2lzdHJhdGlvbiNleHRlcm5hbF9hY2NvdW50X2JpbmRpbmd9XG4gICovXG4gIHJlYWRvbmx5IGV4dGVybmFsQWNjb3VudEJpbmRpbmc/OiBSZWdpc3RyYXRpb25FeHRlcm5hbEFjY291bnRCaW5kaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyYXRpb25FeHRlcm5hbEFjY291bnRCaW5kaW5nIHtcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3d3dy50ZXJyYWZvcm0uaW8vZG9jcy9wcm92aWRlcnMvYWNtZS9yL3JlZ2lzdHJhdGlvbiNobWFjX2Jhc2U2NCBSZWdpc3RyYXRpb24jaG1hY19iYXNlNjR9XG4gICovXG4gIHJlYWRvbmx5IGhtYWNCYXNlNjQ6IHN0cmluZztcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3d3dy50ZXJyYWZvcm0uaW8vZG9jcy9wcm92aWRlcnMvYWNtZS9yL3JlZ2lzdHJhdGlvbiNrZXlfaWQgUmVnaXN0cmF0aW9uI2tleV9pZH1cbiAgKi9cbiAgcmVhZG9ubHkga2V5SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdHJhdGlvbkV4dGVybmFsQWNjb3VudEJpbmRpbmdUb1RlcnJhZm9ybShzdHJ1Y3Q/OiBSZWdpc3RyYXRpb25FeHRlcm5hbEFjY291bnRCaW5kaW5nT3V0cHV0UmVmZXJlbmNlIHwgUmVnaXN0cmF0aW9uRXh0ZXJuYWxBY2NvdW50QmluZGluZyk6IGFueSB7XG4gIGlmICghY2RrdGYuY2FuSW5zcGVjdChzdHJ1Y3QpIHx8IGNka3RmLlRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUoc3RydWN0KSkgeyByZXR1cm4gc3RydWN0OyB9XG4gIGlmIChjZGt0Zi5pc0NvbXBsZXhFbGVtZW50KHN0cnVjdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIGNvbXBsZXggZWxlbWVudCB3YXMgdXNlZCBhcyBjb25maWd1cmF0aW9uLCB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQ6IGh0dHBzOi8vY2RrLnRmL2NvbXBsZXgtb2JqZWN0LWFzLWNvbmZpZ3VyYXRpb25cIik7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBobWFjX2Jhc2U2NDogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0oc3RydWN0IS5obWFjQmFzZTY0KSxcbiAgICBrZXlfaWQ6IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHN0cnVjdCEua2V5SWQpLFxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZWdpc3RyYXRpb25FeHRlcm5hbEFjY291bnRCaW5kaW5nT3V0cHV0UmVmZXJlbmNlIGV4dGVuZHMgY2RrdGYuQ29tcGxleE9iamVjdCB7XG4gIHByaXZhdGUgaXNFbXB0eU9iamVjdCA9IGZhbHNlO1xuXG4gIC8qKlxuICAqIEBwYXJhbSB0ZXJyYWZvcm1SZXNvdXJjZSBUaGUgcGFyZW50IHJlc291cmNlXG4gICogQHBhcmFtIHRlcnJhZm9ybUF0dHJpYnV0ZSBUaGUgYXR0cmlidXRlIG9uIHRoZSBwYXJlbnQgcmVzb3VyY2UgdGhpcyBjbGFzcyBpcyByZWZlcmVuY2luZ1xuICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IodGVycmFmb3JtUmVzb3VyY2U6IGNka3RmLklJbnRlcnBvbGF0aW5nUGFyZW50LCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUsIGZhbHNlLCAwKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW50ZXJuYWxWYWx1ZSgpOiBSZWdpc3RyYXRpb25FeHRlcm5hbEFjY291bnRCaW5kaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgaGFzQW55VmFsdWVzID0gdGhpcy5pc0VtcHR5T2JqZWN0O1xuICAgIGNvbnN0IGludGVybmFsVmFsdWVSZXN1bHQ6IGFueSA9IHt9O1xuICAgIGlmICh0aGlzLl9obWFjQmFzZTY0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0FueVZhbHVlcyA9IHRydWU7XG4gICAgICBpbnRlcm5hbFZhbHVlUmVzdWx0LmhtYWNCYXNlNjQgPSB0aGlzLl9obWFjQmFzZTY0O1xuICAgIH1cbiAgICBpZiAodGhpcy5fa2V5SWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzQW55VmFsdWVzID0gdHJ1ZTtcbiAgICAgIGludGVybmFsVmFsdWVSZXN1bHQua2V5SWQgPSB0aGlzLl9rZXlJZDtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0FueVZhbHVlcyA/IGludGVybmFsVmFsdWVSZXN1bHQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGludGVybmFsVmFsdWUodmFsdWU6IFJlZ2lzdHJhdGlvbkV4dGVybmFsQWNjb3VudEJpbmRpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pc0VtcHR5T2JqZWN0ID0gZmFsc2U7XG4gICAgICB0aGlzLl9obWFjQmFzZTY0ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fa2V5SWQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5pc0VtcHR5T2JqZWN0ID0gT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMDtcbiAgICAgIHRoaXMuX2htYWNCYXNlNjQgPSB2YWx1ZS5obWFjQmFzZTY0O1xuICAgICAgdGhpcy5fa2V5SWQgPSB2YWx1ZS5rZXlJZDtcbiAgICB9XG4gIH1cblxuICAvLyBobWFjX2Jhc2U2NCAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF9obWFjQmFzZTY0Pzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBobWFjQmFzZTY0KCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnaG1hY19iYXNlNjQnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGhtYWNCYXNlNjQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2htYWNCYXNlNjQgPSB2YWx1ZTtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgaG1hY0Jhc2U2NElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9obWFjQmFzZTY0O1xuICB9XG5cbiAgLy8ga2V5X2lkIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiB0cnVlXG4gIHByaXZhdGUgX2tleUlkPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBrZXlJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2tleV9pZCcpO1xuICB9XG4gIHB1YmxpYyBzZXQga2V5SWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2tleUlkID0gdmFsdWU7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGtleUlkSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2tleUlkO1xuICB9XG59XG5cbi8qKlxuKiBSZXByZXNlbnRzIGEge0BsaW5rIGh0dHBzOi8vd3d3LnRlcnJhZm9ybS5pby9kb2NzL3Byb3ZpZGVycy9hY21lL3IvcmVnaXN0cmF0aW9uIGFjbWVfcmVnaXN0cmF0aW9ufVxuKi9cbmV4cG9ydCBjbGFzcyBSZWdpc3RyYXRpb24gZXh0ZW5kcyBjZGt0Zi5UZXJyYWZvcm1SZXNvdXJjZSB7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT1cbiAgLy8gU1RBVElDIFBST1BFUlRJRVNcbiAgLy8gPT09PT09PT09PT09PT09PT1cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0ZlJlc291cmNlVHlwZSA9IFwiYWNtZV9yZWdpc3RyYXRpb25cIjtcblxuICAvLyA9PT09PT09PT09PVxuICAvLyBJTklUSUFMSVpFUlxuICAvLyA9PT09PT09PT09PVxuXG4gIC8qKlxuICAqIENyZWF0ZSBhIG5ldyB7QGxpbmsgaHR0cHM6Ly93d3cudGVycmFmb3JtLmlvL2RvY3MvcHJvdmlkZXJzL2FjbWUvci9yZWdpc3RyYXRpb24gYWNtZV9yZWdpc3RyYXRpb259IFJlc291cmNlXG4gICpcbiAgKiBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAqIEBwYXJhbSBpZCBUaGUgc2NvcGVkIGNvbnN0cnVjdCBJRC4gTXVzdCBiZSB1bmlxdWUgYW1vbmdzdCBzaWJsaW5ncyBpbiB0aGUgc2FtZSBzY29wZVxuICAqIEBwYXJhbSBvcHRpb25zIFJlZ2lzdHJhdGlvbkNvbmZpZ1xuICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgY29uZmlnOiBSZWdpc3RyYXRpb25Db25maWcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHRlcnJhZm9ybVJlc291cmNlVHlwZTogJ2FjbWVfcmVnaXN0cmF0aW9uJyxcbiAgICAgIHRlcnJhZm9ybUdlbmVyYXRvck1ldGFkYXRhOiB7XG4gICAgICAgIHByb3ZpZGVyTmFtZTogJ2FjbWUnLFxuICAgICAgICBwcm92aWRlclZlcnNpb246ICcyLjEwLjAnLFxuICAgICAgICBwcm92aWRlclZlcnNpb25Db25zdHJhaW50OiAnfj4gMi4xMCdcbiAgICAgIH0sXG4gICAgICBwcm92aWRlcjogY29uZmlnLnByb3ZpZGVyLFxuICAgICAgZGVwZW5kc09uOiBjb25maWcuZGVwZW5kc09uLFxuICAgICAgY291bnQ6IGNvbmZpZy5jb3VudCxcbiAgICAgIGxpZmVjeWNsZTogY29uZmlnLmxpZmVjeWNsZSxcbiAgICAgIHByb3Zpc2lvbmVyczogY29uZmlnLnByb3Zpc2lvbmVycyxcbiAgICAgIGNvbm5lY3Rpb246IGNvbmZpZy5jb25uZWN0aW9uLFxuICAgICAgZm9yRWFjaDogY29uZmlnLmZvckVhY2hcbiAgICB9KTtcbiAgICB0aGlzLl9hY2NvdW50S2V5UGVtID0gY29uZmlnLmFjY291bnRLZXlQZW07XG4gICAgdGhpcy5fZW1haWxBZGRyZXNzID0gY29uZmlnLmVtYWlsQWRkcmVzcztcbiAgICB0aGlzLl9pZCA9IGNvbmZpZy5pZDtcbiAgICB0aGlzLl9leHRlcm5hbEFjY291bnRCaW5kaW5nLmludGVybmFsVmFsdWUgPSBjb25maWcuZXh0ZXJuYWxBY2NvdW50QmluZGluZztcbiAgfVxuXG4gIC8vID09PT09PT09PT1cbiAgLy8gQVRUUklCVVRFU1xuICAvLyA9PT09PT09PT09XG5cbiAgLy8gYWNjb3VudF9rZXlfcGVtIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiB0cnVlXG4gIHByaXZhdGUgX2FjY291bnRLZXlQZW0/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGFjY291bnRLZXlQZW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdhY2NvdW50X2tleV9wZW0nKTtcbiAgfVxuICBwdWJsaWMgc2V0IGFjY291bnRLZXlQZW0odmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2FjY291bnRLZXlQZW0gPSB2YWx1ZTtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgYWNjb3VudEtleVBlbUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9hY2NvdW50S2V5UGVtO1xuICB9XG5cbiAgLy8gZW1haWxfYWRkcmVzcyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF9lbWFpbEFkZHJlc3M/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGVtYWlsQWRkcmVzcygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2VtYWlsX2FkZHJlc3MnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGVtYWlsQWRkcmVzcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW1haWxBZGRyZXNzID0gdmFsdWU7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGVtYWlsQWRkcmVzc0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9lbWFpbEFkZHJlc3M7XG4gIH1cblxuICAvLyBpZCAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2lkPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2lkJyk7XG4gIH1cbiAgcHVibGljIHNldCBpZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5faWQgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRJZCgpIHtcbiAgICB0aGlzLl9pZCA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgaWRJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cblxuICAvLyByZWdpc3RyYXRpb25fdXJsIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHB1YmxpYyBnZXQgcmVnaXN0cmF0aW9uVXJsKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgncmVnaXN0cmF0aW9uX3VybCcpO1xuICB9XG5cbiAgLy8gZXh0ZXJuYWxfYWNjb3VudF9iaW5kaW5nIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2V4dGVybmFsQWNjb3VudEJpbmRpbmcgPSBuZXcgUmVnaXN0cmF0aW9uRXh0ZXJuYWxBY2NvdW50QmluZGluZ091dHB1dFJlZmVyZW5jZSh0aGlzLCBcImV4dGVybmFsX2FjY291bnRfYmluZGluZ1wiKTtcbiAgcHVibGljIGdldCBleHRlcm5hbEFjY291bnRCaW5kaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9leHRlcm5hbEFjY291bnRCaW5kaW5nO1xuICB9XG4gIHB1YmxpYyBwdXRFeHRlcm5hbEFjY291bnRCaW5kaW5nKHZhbHVlOiBSZWdpc3RyYXRpb25FeHRlcm5hbEFjY291bnRCaW5kaW5nKSB7XG4gICAgdGhpcy5fZXh0ZXJuYWxBY2NvdW50QmluZGluZy5pbnRlcm5hbFZhbHVlID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0RXh0ZXJuYWxBY2NvdW50QmluZGluZygpIHtcbiAgICB0aGlzLl9leHRlcm5hbEFjY291bnRCaW5kaW5nLmludGVybmFsVmFsdWUgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGV4dGVybmFsQWNjb3VudEJpbmRpbmdJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZXh0ZXJuYWxBY2NvdW50QmluZGluZy5pbnRlcm5hbFZhbHVlO1xuICB9XG5cbiAgLy8gPT09PT09PT09XG4gIC8vIFNZTlRIRVNJU1xuICAvLyA9PT09PT09PT1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50X2tleV9wZW06IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX2FjY291bnRLZXlQZW0pLFxuICAgICAgZW1haWxfYWRkcmVzczogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fZW1haWxBZGRyZXNzKSxcbiAgICAgIGlkOiBjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9pZCksXG4gICAgICBleHRlcm5hbF9hY2NvdW50X2JpbmRpbmc6IHJlZ2lzdHJhdGlvbkV4dGVybmFsQWNjb3VudEJpbmRpbmdUb1RlcnJhZm9ybSh0aGlzLl9leHRlcm5hbEFjY291bnRCaW5kaW5nLmludGVybmFsVmFsdWUpLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
         |