projen-pipelines 0.3.7 → 0.3.8

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.
@@ -681,5 +681,5 @@ function addVersioningToStack(stack: Stack, stageName: string, stageOverrides?:
681
681
  }
682
682
  exports.CDKPipeline = CDKPipeline;
683
683
  _a = JSII_RTTI_SYMBOL_1;
684
- CDKPipeline[_a] = { fqn: "projen-pipelines.CDKPipeline", version: "0.3.7" };
684
+ CDKPipeline[_a] = { fqn: "projen-pipelines.CDKPipeline", version: "0.3.8" };
685
685
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFxRDtBQUNyRCw4Q0FBa0Q7QUFDbEQsc0RBQTJEO0FBQzNELHNDQUEyQztBQUMzQyxvQ0FBNkg7QUFDN0gsOENBQWtFO0FBdUJsRSxNQUFNO0FBQ04seURBQXlEO0FBQ3pELE1BQU07QUFDTiwrQkFBK0I7QUFDL0IsNkVBQTZFO0FBQzdFLDJCQUEyQjtBQUMzQiw0RUFBNEU7QUFDNUUseUJBQXlCO0FBQ3pCLElBQUk7QUFFSixJQUFZLFdBT1g7QUFQRCxXQUFZLFdBQVc7SUFDckIsNEJBQTRCO0lBQzVCLDZDQUFJLENBQUE7SUFDSixvREFBb0Q7SUFDcEQsNkNBQUksQ0FBQTtJQUNKLHVEQUF1RDtJQUN2RCw2Q0FBSSxDQUFBO0FBQ04sQ0FBQyxFQVBXLFdBQVcsMkJBQVgsV0FBVyxRQU90QjtBQStJRDs7O0dBR0c7QUFDSCxNQUFzQixXQUFZLFNBQVEsa0JBQVM7SUFJakQsWUFBc0IsR0FBK0IsRUFBWSxXQUErQjtRQUM5RixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFEUyxRQUFHLEdBQUgsR0FBRyxDQUE0QjtRQUFZLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUc5RiwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQ2pCLHlCQUF5QixFQUN6QixrQkFBa0IsRUFDbEIsWUFBWSxDQUNiLENBQUM7UUFDRixvQkFBb0I7UUFDcEIsS0FBSztRQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsSUFBSSxNQUFN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QUFFLEVBQUU7Z0JBQ2xELFdBQVcsRUFBRSxvQ0FBb0MsS0FBSyxDQUFDLElBQUksUUFBUTtnQkFDbkUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQzVCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSx5QkFBeUIsQ0FBQyxNQUF3QjtRQUN2RCxPQUFPOzs7OztpREFLc0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxDQUFDLFdBQVc7O1FBRWhILENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSSx5QkFBeUI7UUFDOUIsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO1FBRTdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7UUFDdkUsT0FBTyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRTFDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSSwyQkFBMkI7UUFDaEMsT0FBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXVKVCxDQUFDO0lBQ0QsQ0FBQzs7QUFodEJILGtDQWl0QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFRleHRGaWxlLCBhd3NjZGsgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgUFJPSkVOX01BUktFUiB9IGZyb20gJ3Byb2plbi9saWIvY29tbW9uJztcbmltcG9ydCB7IE5vZGVQYWNrYWdlTWFuYWdlciB9IGZyb20gJ3Byb2plbi9saWIvamF2YXNjcmlwdCc7XG5pbXBvcnQgeyBQaXBlbGluZUVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZSc7XG5pbXBvcnQgeyBBd3NBc3N1bWVSb2xlU3RlcCwgUGlwZWxpbmVTdGVwLCBQcm9qZW5TY3JpcHRTdGVwLCBTaW1wbGVDb21tYW5kU3RlcCwgU3RlcFNlcXVlbmNlLCBQbnBtU2V0dXBTdGVwIH0gZnJvbSAnLi4vc3RlcHMnO1xuaW1wb3J0IHsgVmVyc2lvbmluZ0NvbmZpZywgVmVyc2lvbmluZ1NldHVwIH0gZnJvbSAnLi4vdmVyc2lvbmluZyc7XG5cbi8qKlxuICogVGhlIEVudmlyb25tZW50IGludGVyZmFjZSBpcyBkZXNpZ25lZCB0byBob2xkIEFXUyByZWxhdGVkIGluZm9ybWF0aW9uXG4gKiBmb3IgYSBzcGVjaWZpYyBkZXBsb3ltZW50IGVudmlyb25tZW50IHdpdGhpbiB5b3VyIGluZnJhc3RydWN0dXJlLlxuICogRWFjaCBlbnZpcm9ubWVudCByZXF1aXJlcyBhIHNwZWNpZmljIGFjY291bnQgYW5kIHJlZ2lvbiBmb3IgaXRzIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudCB7XG4gIC8qKlxuICAgKiBUaGUgQVdTIEFjY291bnQgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbnZpcm9ubWVudC4gSXQncyBpbXBvcnRhbnQgYmVjYXVzZVxuICAgKiBkaWZmZXJlbnQgc2VydmljZXMgb3IgZmVhdHVyZXMgY291bGQgaGF2ZSBkaXN0aW5jdCBwZXJtaXNzaW9ucyBhbmQgc2V0dGluZ3NcbiAgICogaW4gZGlmZmVyZW50IGFjY291bnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVdTIFJlZ2lvbiBmb3IgdGhlIGVudmlyb25tZW50LiBUaGlzIGRldGVybWluZXMgd2hlcmUgeW91ciByZXNvdXJjZXNcbiAgICogYXJlIGNyZWF0ZWQgYW5kIHdoZXJlIHlvdXIgYXBwbGljYXRpb24gd2lsbCBydW4uIEl0IGNhbiBhZmZlY3QgbGF0ZW5jeSxcbiAgICogYXZhaWxhYmlsaXR5LCBhbmQgcHJpY2luZy5cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xufVxuXG4vLyAvKipcbi8vICAqIERlc2NyaWJlcyB0aGUgdHlwZSBvZiBwaXBlbGluZSB0aGF0IHdpbGwgYmUgY3JlYXRlZFxuLy8gICovXG4vLyBleHBvcnQgZW51bSBEZXBsb3ltZW50VHlwZSB7XG4vLyAgIC8qKiBEZXBsb3kgZXZlcnkgY29tbWl0IGFzIGZhciBhcyBwb3NzaWJsZTsgaG9wZWZ1bGx5IGludG8gcHJvZHVjdGlvbiAqL1xuLy8gICBDT05USU5VT1VTX0RFUExPWU1FTlQsXG4vLyAgIC8qKiBCdWlsZCBldmVyeSBjb21taXQgYW5kIHByZXBhcmUgYWxsIGFzc2V0cyBmb3IgYSBsYXRlciBkZXBsb3ltZW50ICovXG4vLyAgIENPTlRJTlVPVVNfREVMSVZFUlksXG4vLyB9XG5cbmV4cG9ydCBlbnVtIENka0RpZmZUeXBlIHtcbiAgLyoqIERvIG5vdCBwZXJmb3JtIGEgZGlmZiAqL1xuICBOT05FLFxuICAvKiogUGVyZm9ybSBhIGZhc3QgdGVtcGxhdGUgZGlmZiAoLS1uby1jaGFuZ2VzZXQpICovXG4gIEZBU1QsXG4gIC8qKiBQZXJmb3JtIGEgZnVsbCBDbG91ZEZvcm1hdGlvbiBkaWZmICgtLWNoYW5nZXNldCkgKi9cbiAgRlVMTCxcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBzdGFnZXMgdGhhdCBhcmUgcGFydCBvZiB0aGUgcGlwZWxpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXBsb3ltZW50U3RhZ2UgZXh0ZW5kcyBOYW1lZFN0YWdlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IG1hbnVhbEFwcHJvdmFsPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBzdGFnZXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIHBpcGVsaW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5kZXBlbmRlbnRTdGFnZSBleHRlbmRzIE5hbWVkU3RhZ2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoaXMgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIHN0YWdlIHNob3VsZCBiZSBkZXBsb3llZCBvbiBwdXNoXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lPblB1c2g/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGEgQ0RLIHN0YWdlIHdpdGggYSBuYW1lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFtZWRTdGFnZU9wdGlvbnMgZXh0ZW5kcyBTdGFnZU9wdGlvbnMge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHdhdGNoYWJsZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRpZmZUeXBlPzogQ2RrRGlmZlR5cGU7XG4gIHJlYWRvbmx5IHBvc3REaWZmU3RlcHM/OiBQaXBlbGluZVN0ZXBbXTtcbiAgcmVhZG9ubHkgcG9zdERlcGxveVN0ZXBzPzogUGlwZWxpbmVTdGVwW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYSBDREsgc3RhZ2UgbGlrZSB0aGUgdGFyZ2V0IGVudmlyb25tZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2VPcHRpb25zIHtcbiAgcmVhZG9ubHkgZW52OiBFbnZpcm9ubWVudDtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgSUFNIHJvbGVzIHVzZWQgaW4gdGhlIENESyBwaXBlbGluZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJYW1Sb2xlQ29uZmlnIHtcbiAgLyoqIERlZmF1bHQgSUFNIHJvbGUgQVJOIHVzZWQgaWYgbm8gc3BlY2lmaWMgcm9sZSBpcyBwcm92aWRlZC4gKi9cbiAgcmVhZG9ubHkgZGVmYXVsdD86IHN0cmluZztcbiAgLyoqIElBTSByb2xlIEFSTiBmb3IgdGhlIHN5bnRoZXNpcyBzdGVwLiAqL1xuICByZWFkb25seSBzeW50aD86IHN0cmluZztcbiAgLyoqIElBTSByb2xlIEFSTiBmb3IgdGhlIGFzc2V0IHB1Ymxpc2hpbmcgc3RlcC4gKi9cbiAgcmVhZG9ubHkgYXNzZXRQdWJsaXNoaW5nPzogc3RyaW5nO1xuICAvKiogSUFNIHJvbGUgQVJOIGZvciB0aGUgYXNzZXQgcHVibGlzaGluZyBzdGVwIGZvciBhIHNwZWNpZmljIHN0YWdlLiAqL1xuICByZWFkb25seSBhc3NldFB1Ymxpc2hpbmdQZXJTdGFnZT86IHsgW3N0YWdlOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgLyoqIElBTSByb2xlIEFSTnMgZm9yIGRpZmZlcmVudCBkaWZmIHN0YWdlcy4gKi9cbiAgcmVhZG9ubHkgZGlmZj86IHsgW3N0YWdlOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgLyoqIElBTSByb2xlIEFSTnMgZm9yIGRpZmZlcmVudCBkZXBsb3ltZW50IHN0YWdlcy4gKi9cbiAgcmVhZG9ubHkgZGVwbG95bWVudD86IHsgW3N0YWdlOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgLyoqXG4gICAqIElBTSByb2xlIEFSTnMgZm9yIHVzaW5nIGEgXCJqdW1wXCIgcm9sZSB0byBhc3N1bWUgdGhlIGRlcGxveSByb2xlIGluIGEgZGlmZmVyZW50IEFXUyBhY2NvdW50IHVzaW5nIFJvbGUgQ2hhaW5pbmcuXG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MtYWN0aW9ucy9jb25maWd1cmUtYXdzLWNyZWRlbnRpYWxzP3RhYj1yZWFkbWUtb3YtZmlsZSNhc3N1bWVyb2xlLXdpdGgtcm9sZS1wcmV2aW91c2x5LWFzc3VtZWQtYnktYWN0aW9uLWluLXNhbWUtd29ya2Zsb3dcbiAgICogKi9cbiAgcmVhZG9ubHkganVtcD86IHsgW3N0YWdlOiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBUaGUgQ0RLUGlwZWxpbmVPcHRpb25zIGludGVyZmFjZSBpcyBkZXNpZ25lZCB0byBwcm92aWRlIGNvbmZpZ3VyYXRpb25cbiAqIG9wdGlvbnMgZm9yIGEgQ0RLIChDbG91ZCBEZXZlbG9wbWVudCBLaXQpIHBpcGVsaW5lLiBJdCBhbGxvd3MgdGhlIGRlZmluaXRpb25cbiAqIG9mIHNldHRpbmdzIHN1Y2ggYXMgdGhlIHN0YWNrIHByZWZpeCBhbmQgcGFja2FnZSBuYW1lc3BhY2UgdG8gYmUgdXNlZCBpbiB0aGVcbiAqIEFXUyBzdGFjaywgYWxvbmcgd2l0aCB0aGUgZW52aXJvbm1lbnRzIGNvbmZpZ3VyYXRpb24gdG8gYmUgdXNlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDREtQaXBlbGluZU9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiB0aGUgbmFtZSBvZiB0aGUgYnJhbmNoIHRvIGRlcGxveSBmcm9tXG4gICAqIEBkZWZhdWx0IG1haW5cbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgZmllbGQgaXMgdXNlZCB0byBkZWZpbmUgYSBwcmVmaXggZm9yIHRoZSBBV1MgU3RhY2sgcmVzb3VyY2VzIGNyZWF0ZWRcbiAgICogZHVyaW5nIHRoZSBwaXBlbGluZSdzIG9wZXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgcHJvamVjdCBuYW1lXG4gICAqL1xuICByZWFkb25seSBzdGFja1ByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgc2V0IHRvIHRydWUgYWxsIENESyBhY3Rpb25zIHdpbGwgYWxzbyBpbmNsdWRlIDxzdGFja05hbWU+LyogdG8gZGVwbG95L2RpZmYvZGVzdHJveSBzdWIgc3RhY2tzIG9mIHRoZSBtYWluIHN0YWNrLlxuICAgKiBZb3UgY2FuIHVzZSB0aGlzIHRvIGRlcGxveSBDRGsgYXBwbGljYXRpb25zIGNvbnRhaW5pbmcgbXVsdGlwbGUgc3RhY2tzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95U3ViU3RhY2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBmaWVsZCBkZXRlcm1pbmVzIHRoZSBOUE0gbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiBwYWNrYWdpbmcgQ0RLIGNsb3VkXG4gICAqIGFzc2VtYmxpZXMuIEEgbmFtZXNwYWNlIGhlbHBzIGdyb3VwIHJlbGF0ZWQgcmVzb3VyY2VzIHRvZ2V0aGVyLCBwcm92aWRpbmdcbiAgICogYmV0dGVyIG9yZ2FuaXphdGlvbiBhbmQgZWFzZSBvZiBtYW5hZ2VtZW50LlxuICAgKlxuICAgKiBUaGlzIGlzIG9ubHkgbmVlZGVkIGlmIHlvdSBuZWVkIHRvIHZlcnNpb24gYW5kIHVwbG9hZCB0aGUgY2xvdWQgYXNzZW1ibHkgdG8gYSBwYWNrYWdlIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC1cbiAgICovXG4gIHJlYWRvbmx5IHBrZ05hbWVzcGFjZT86IHN0cmluZztcblxuICAvKiogSUFNIGNvbmZpZyAqL1xuICByZWFkb25seSBpYW1Sb2xlQXJuczogSWFtUm9sZUNvbmZpZztcblxuICAvKipcbiAgICogVGhpcyBmaWVsZCBzcGVjaWZpZXMgYSBsaXN0IG9mIHN0YWdlcyB0aGF0IHNob3VsZCBiZSBkZXBsb3llZCB1c2luZyBhIENJL0NEIHBpcGVsaW5lXG4gICAqL1xuICByZWFkb25seSBzdGFnZXM6IERlcGxveW1lbnRTdGFnZVtdO1xuXG4gIC8qKiBUaGlzIHNwZWNpZmllcyBkZXRhaWxzIGZvciBpbmRlcGVuZGVudCBzdGFnZXMgKi9cbiAgcmVhZG9ubHkgaW5kZXBlbmRlbnRTdGFnZXM/OiBJbmRlcGVuZGVudFN0YWdlW107XG5cbiAgLyoqIFRoaXMgc3BlY2lmaWVzIGRldGFpbHMgZm9yIGEgcGVyc29uYWwgc3RhZ2UgKi9cbiAgcmVhZG9ubHkgcGVyc29uYWxTdGFnZT86IFN0YWdlT3B0aW9ucztcblxuICAvKiogVGhpcyBzcGVjaWZpZXMgZGV0YWlscyBmb3IgZmVhdHVyZSBzdGFnZXMgKi9cbiAgcmVhZG9ubHkgZmVhdHVyZVN0YWdlcz86IFN0YWdlT3B0aW9ucztcblxuICAvLyAvKipcbiAgLy8gICogVGhpcyBmaWVsZCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgcGlwZWxpbmUgdG8gY3JlYXRlLiBJZiBzZXQgdG8gQ09OVElOVU9VU19ERVBMT1lNRU5ULFxuICAvLyAgKiBldmVyeSBjb21taXQgaXMgZGVwbG95ZWQgYXMgZmFyIGFzIHBvc3NpYmxlLCBob3BlZnVsbHkgaW50byBwcm9kdWN0aW9uLiBJZiBzZXQgdG9cbiAgLy8gICogQ09OVElOVU9VU19ERUxJVkVSWSwgZXZlcnkgY29tbWl0IGlzIGJ1aWx0IGFuZCBhbGwgYXNzZXRzIGFyZSBwcmVwYXJlZCBmb3IgYSBsYXRlciBkZXBsb3ltZW50LlxuICAvLyAgKlxuICAvLyAgKiBAZGVmYXVsdCBDT05USU5VT1VTX0RFTElWRVJZXG4gIC8vICAqL1xuICAvLyByZWFkb25seSBkZXBsb3ltZW50VHlwZT86IERlcGxveW1lbnRUeXBlO1xuXG4gIHJlYWRvbmx5IHByZUluc3RhbGxDb21tYW5kcz86IHN0cmluZ1tdO1xuICByZWFkb25seSBwcmVTeW50aENvbW1hbmRzPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHBvc3RTeW50aENvbW1hbmRzPzogc3RyaW5nW107XG5cbiAgcmVhZG9ubHkgcHJlSW5zdGFsbFN0ZXBzPzogUGlwZWxpbmVTdGVwW107XG4gIHJlYWRvbmx5IHByZVN5bnRoU3RlcHM/OiBQaXBlbGluZVN0ZXBbXTtcbiAgcmVhZG9ubHkgcG9zdFN5bnRoU3RlcHM/OiBQaXBlbGluZVN0ZXBbXTtcblxuICAvKipcbiAgICogVmVyc2lvbmluZyBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uaW5nPzogVmVyc2lvbmluZ0NvbmZpZztcbn1cblxuLyoqXG4gKiBUaGUgQ0RLUGlwZWxpbmUgY2xhc3MgZXh0ZW5kcyB0aGUgQ29tcG9uZW50IGNsYXNzIGFuZCBzZXRzIHVwIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBmb3IgZGVwbG95aW5nIEFXUyBDREsgKENsb3VkIERldmVsb3BtZW50IEtpdCkgYXBwbGljYXRpb25zIGFjcm9zcyBtdWx0aXBsZSBzdGFnZXMuXG4gKiBJdCBhbHNvIG1hbmFnZXMgdGFza3Mgc3VjaCBhcyBwdWJsaXNoaW5nIENESyBhc3NldHMsIGJ1bXBpbmcgdmVyc2lvbiBiYXNlZCBvbiBnaXQgdGFncywgYW5kIGNsZWFuaW5nIHVwIGNvbmZsaWN0aW5nIHRhc2tzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ0RLUGlwZWxpbmUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhY2tQcmVmaXg6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGJyYW5jaE5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYXBwOiBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcCwgcHJvdGVjdGVkIGJhc2VPcHRpb25zOiBDREtQaXBlbGluZU9wdGlvbnMpIHtcbiAgICBzdXBlcihhcHApO1xuXG4gICAgLy8gQWRkIGRldmVsb3BtZW50IGRlcGVuZGVuY2llc1xuICAgIHRoaXMuYXBwLmFkZERldkRlcHMoXG4gICAgICAnQHR5cGVzL3N0YW5kYXJkLXZlcnNpb24nLFxuICAgICAgJ3N0YW5kYXJkLXZlcnNpb24nLFxuICAgICAgJ2Nkay1hc3NldHMnLFxuICAgICk7XG4gICAgLy8gdGhpcy5hcHAuYWRkRGVwcyhcbiAgICAvLyApO1xuICAgIHRoaXMucHJvamVjdC5naXRpZ25vcmUuZXhjbHVkZSgnL2Nkay1vdXRwdXRzLSouanNvbicpO1xuXG4gICAgdGhpcy5zdGFja1ByZWZpeCA9IGJhc2VPcHRpb25zLnN0YWNrUHJlZml4ID8/IGFwcC5uYW1lO1xuICAgIHRoaXMuYnJhbmNoTmFtZSA9IGJhc2VPcHRpb25zLmJyYW5jaE5hbWUgPz8gJ21haW4nOyAvLyBUT0RPIHVzZSBkZWZhdWx0UmVsZWFzZUJyYW5jaCBvZiBOb2RlUHJvamVjdFxuXG4gICAgLy8gUmVtb3ZlcyB0aGUgY29tcGlsZWQgY2xvdWQgYXNzZW1ibHkgYmVmb3JlIGVhY2ggc3ludGhcbiAgICB0aGlzLnByb2plY3QudGFza3MudHJ5RmluZCgnc3ludGgnKT8ucHJlcGVuZEV4ZWMoYHJtIC1yZiAke3RoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXR9YCk7XG4gICAgdGhpcy5wcm9qZWN0LnRhc2tzLnRyeUZpbmQoJ3N5bnRoOnNpbGVudCcpPy5wcmVwZW5kRXhlYyhgcm0gLXJmICR7dGhpcy5hcHAuY2RrQ29uZmlnLmNka291dH1gKTtcblxuICAgIC8vIFJlbW92ZSB0YXNrcyB0aGF0IG1pZ2h0IGNvbmZsaWN0IHdpdGggdGhlIHBpcGVsaW5lIHByb2Nlc3NcbiAgICB0aGlzLnByb2plY3QucmVtb3ZlVGFzaygnZGVwbG95Jyk7XG4gICAgdGhpcy5wcm9qZWN0LnJlbW92ZVRhc2soJ2RpZmYnKTtcbiAgICB0aGlzLnByb2plY3QucmVtb3ZlVGFzaygnZGVzdHJveScpO1xuICAgIHRoaXMucHJvamVjdC5yZW1vdmVUYXNrKCd3YXRjaCcpO1xuXG4gICAgLy8gU2V0dXAgdmVyc2lvbmluZyBpZiBlbmFibGVkXG4gICAgaWYgKGJhc2VPcHRpb25zLnZlcnNpb25pbmc/LmVuYWJsZWQpIHtcbiAgICAgIG5ldyBWZXJzaW9uaW5nU2V0dXAodGhpcy5wcm9qZWN0LCBiYXNlT3B0aW9ucy52ZXJzaW9uaW5nKS5zZXR1cCgpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZXMgZGlmZmVyZW50IGRlcGxveW1lbnQgc3RhZ2VzXG4gICAgaWYgKGJhc2VPcHRpb25zLnBlcnNvbmFsU3RhZ2UpIHtcbiAgICAgIHRoaXMuY3JlYXRlUGVyc29uYWxTdGFnZSgpO1xuICAgIH1cbiAgICBpZiAoYmFzZU9wdGlvbnMuZmVhdHVyZVN0YWdlcykge1xuICAgICAgdGhpcy5jcmVhdGVGZWF0dXJlU3RhZ2UoKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBiYXNlT3B0aW9ucy5zdGFnZXMpIHtcbiAgICAgIHRoaXMuY3JlYXRlUGlwZWxpbmVTdGFnZShzdGFnZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2YgKGJhc2VPcHRpb25zLmluZGVwZW5kZW50U3RhZ2VzID8/IFtdKSkge1xuICAgICAgdGhpcy5jcmVhdGVJbmRlcGVuZGVudFN0YWdlKHN0YWdlKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGVzIHRhc2tzIHRvIGhhbmRsZSB0aGUgcmVsZWFzZSBwcm9jZXNzXG4gICAgdGhpcy5jcmVhdGVSZWxlYXNlVGFza3MoKTtcblxuICAgIC8vIENyZWF0ZXMgYSBzcGVjaWFsaXplZCBDREsgQXBwIGNsYXNzXG4gICAgdGhpcy5jcmVhdGVBcHBsaWNhdGlvbkVudHJ5cG9pbnQoKTtcblxuICB9XG5cbiAgcHVibGljIGFic3RyYWN0IGVuZ2luZVR5cGUoKTogUGlwZWxpbmVFbmdpbmU7XG5cbiAgcHJvdGVjdGVkIHByb3ZpZGVJbnN0YWxsU3RlcCgpOiBQaXBlbGluZVN0ZXAge1xuICAgIGNvbnN0IHNlcSA9IG5ldyBTdGVwU2VxdWVuY2UodGhpcy5wcm9qZWN0LCB0aGlzLmJhc2VPcHRpb25zLnByZUluc3RhbGxTdGVwcyA/PyBbXSk7XG5cbiAgICAvLyBEZXRlY3QgYW5kIGFkZCBwbnBtIHNldHVwIGlmIG5lZWRlZCAoR2l0SHViIG9ubHkpXG4gICAgaWYgKHRoaXMuYXBwLnBhY2thZ2UucGFja2FnZU1hbmFnZXIgPT09IE5vZGVQYWNrYWdlTWFuYWdlci5QTlBNICYmIHRoaXMuZW5naW5lVHlwZSgpID09PSBQaXBlbGluZUVuZ2luZS5HSVRIVUIpIHtcbiAgICAgIHNlcS5hZGRTdGVwcyhuZXcgUG5wbVNldHVwU3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgdmVyc2lvbjogKHRoaXMuYXBwLnBhY2thZ2UgYXMgYW55KS5wbnBtVmVyc2lvbixcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5iYXNlT3B0aW9ucy5wcmVJbnN0YWxsQ29tbWFuZHMpIHtcbiAgICAgIHNlcS5hZGRTdGVwcyhuZXcgU2ltcGxlQ29tbWFuZFN0ZXAodGhpcy5wcm9qZWN0LCB0aGlzLmJhc2VPcHRpb25zLnByZUluc3RhbGxDb21tYW5kcykpO1xuICAgIH1cbiAgICBzZXEuYWRkU3RlcHMobmV3IFByb2plblNjcmlwdFN0ZXAodGhpcy5wcm9qZWN0LCB0aGlzLmFwcC5wYWNrYWdlLmluc3RhbGxDaVRhc2submFtZSkpO1xuICAgIHJldHVybiBzZXE7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvdmlkZVN5bnRoU3RlcCgpOiBQaXBlbGluZVN0ZXAge1xuICAgIGNvbnN0IHNlcSA9IG5ldyBTdGVwU2VxdWVuY2UodGhpcy5wcm9qZWN0LCBbXSk7XG5cbiAgICBpZiAodGhpcy5iYXNlT3B0aW9ucy5pYW1Sb2xlQXJucz8uc3ludGgpIHtcbiAgICAgIHNlcS5hZGRTdGVwcyhuZXcgQXdzQXNzdW1lUm9sZVN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIHJvbGVBcm46IHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnMuc3ludGgsXG4gICAgICAgIGp1bXBSb2xlQXJuOiB0aGlzLmJhc2VPcHRpb25zLmlhbVJvbGVBcm5zLmp1bXA/LnN5bnRoLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHNlcS5hZGRTdGVwcyguLi50aGlzLmJhc2VPcHRpb25zLnByZVN5bnRoU3RlcHMgPz8gW10pO1xuICAgIGlmICh0aGlzLmJhc2VPcHRpb25zLnByZVN5bnRoQ29tbWFuZHMpIHtcbiAgICAgIHNlcS5hZGRTdGVwcyhuZXcgU2ltcGxlQ29tbWFuZFN0ZXAodGhpcy5wcm9qZWN0LCB0aGlzLmJhc2VPcHRpb25zLnByZVN5bnRoQ29tbWFuZHMpKTtcbiAgICB9XG5cbiAgICBzZXEuYWRkU3RlcHMobmV3IFByb2plblNjcmlwdFN0ZXAodGhpcy5wcm9qZWN0LCAnYnVpbGQnKSk7XG5cbiAgICBzZXEuYWRkU3RlcHMoLi4udGhpcy5iYXNlT3B0aW9ucy5wb3N0U3ludGhTdGVwcyA/PyBbXSk7XG4gICAgaWYgKHRoaXMuYmFzZU9wdGlvbnMucG9zdFN5bnRoQ29tbWFuZHMpIHtcbiAgICAgIHNlcS5hZGRTdGVwcyhuZXcgU2ltcGxlQ29tbWFuZFN0ZXAodGhpcy5wcm9qZWN0LCB0aGlzLmJhc2VPcHRpb25zLnBvc3RTeW50aENvbW1hbmRzKSk7XG4gICAgfVxuICAgIHJldHVybiBzZXE7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvdmlkZUFzc2V0VXBsb2FkU3RlcChzdGFnZU5hbWU/OiBzdHJpbmcpOiBQaXBlbGluZVN0ZXAge1xuICAgIGNvbnN0IHNlcSA9IG5ldyBTdGVwU2VxdWVuY2UodGhpcy5wcm9qZWN0LCBbXSk7XG5cbiAgICBjb25zdCBnbG9iYWxQdWJsaXNoUm9sZSA9IHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnMuYXNzZXRQdWJsaXNoaW5nID8/IHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnMuZGVmYXVsdCE7XG4gICAgaWYgKHN0YWdlTmFtZSkge1xuICAgICAgc2VxLmFkZFN0ZXBzKG5ldyBBd3NBc3N1bWVSb2xlU3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgcm9sZUFybjogdGhpcy5iYXNlT3B0aW9ucy5pYW1Sb2xlQXJucy5hc3NldFB1Ymxpc2hpbmdQZXJTdGFnZSA/XG4gICAgICAgICAgKHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnMuYXNzZXRQdWJsaXNoaW5nUGVyU3RhZ2Vbc3RhZ2VOYW1lXSA/PyBnbG9iYWxQdWJsaXNoUm9sZSkgOlxuICAgICAgICAgIGdsb2JhbFB1Ymxpc2hSb2xlLFxuICAgICAgICBqdW1wUm9sZUFybjogdGhpcy5iYXNlT3B0aW9ucy5pYW1Sb2xlQXJucy5qdW1wPy5bc3RhZ2VOYW1lXSxcbiAgICAgIH0pKTtcbiAgICAgIHNlcS5hZGRTdGVwcyhuZXcgUHJvamVuU2NyaXB0U3RlcCh0aGlzLnByb2plY3QsIGBwdWJsaXNoOmFzc2V0czoke3N0YWdlTmFtZX1gKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmJhc2VPcHRpb25zLmlhbVJvbGVBcm5zLmFzc2V0UHVibGlzaGluZ1BlclN0YWdlKSB7XG4gICAgICAgIGNvbnN0IHN0YWdlcyA9IFsuLi50aGlzLmJhc2VPcHRpb25zLnN0YWdlcywgLi4udGhpcy5iYXNlT3B0aW9ucy5pbmRlcGVuZGVudFN0YWdlcyA/PyBbXV07XG4gICAgICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2Ygc3RhZ2VzKSB7XG4gICAgICAgICAgc2VxLmFkZFN0ZXBzKG5ldyBBd3NBc3N1bWVSb2xlU3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgICAgIHJvbGVBcm46IHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnMuYXNzZXRQdWJsaXNoaW5nUGVyU3RhZ2Vbc3RhZ2UubmFtZV0gPz8gZ2xvYmFsUHVibGlzaFJvbGUsXG4gICAgICAgICAgICBqdW1wUm9sZUFybjogdGhpcy5iYXNlT3B0aW9ucy5pYW1Sb2xlQXJucy5qdW1wPy5bc3RhZ2UubmFtZV0sXG4gICAgICAgICAgfSkpO1xuICAgICAgICAgIHNlcS5hZGRTdGVwcyhuZXcgUHJvamVuU2NyaXB0U3RlcCh0aGlzLnByb2plY3QsIGBwdWJsaXNoOmFzc2V0czoke3N0YWdlLm5hbWV9YCkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXEuYWRkU3RlcHMobmV3IEF3c0Fzc3VtZVJvbGVTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgICAgIHJvbGVBcm46IGdsb2JhbFB1Ymxpc2hSb2xlLFxuICAgICAgICAgIGp1bXBSb2xlQXJuOiB0aGlzLmJhc2VPcHRpb25zLmlhbVJvbGVBcm5zLmp1bXA/LmFzc2V0UHVibGlzaGluZyxcbiAgICAgICAgfSkpO1xuICAgICAgICBzZXEuYWRkU3RlcHMobmV3IFByb2plblNjcmlwdFN0ZXAodGhpcy5wcm9qZWN0LCAncHVibGlzaDphc3NldHMnKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlcTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm92aWRlQXNzZW1ibHlVcGxvYWRTdGVwKCk6IFBpcGVsaW5lU3RlcCB7XG4gICAgaWYgKCF0aGlzLmJhc2VPcHRpb25zLnBrZ05hbWVzcGFjZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwa2dOYW1lc3BhY2UgaXMgcmVxdWlyZWQgd2hlbiB1c2luZyB2ZXJzaW9uZWQgYXJ0aWZhY3RzIChlLmcuIG1hbnVhbCBhcHByb3ZhbHMpJyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgU3RlcFNlcXVlbmNlKHRoaXMucHJvamVjdCwgW1xuICAgICAgbmV3IFByb2plblNjcmlwdFN0ZXAodGhpcy5wcm9qZWN0LCAnYnVtcCcpLFxuICAgICAgbmV3IFByb2plblNjcmlwdFN0ZXAodGhpcy5wcm9qZWN0LCAncmVsZWFzZTpwdXNoLWFzc2VtYmx5JyksXG4gICAgXSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvdmlkZURlcGxveVN0ZXAoc3RhZ2U6IE5hbWVkU3RhZ2VPcHRpb25zKTogUGlwZWxpbmVTdGVwIHtcbiAgICByZXR1cm4gbmV3IFN0ZXBTZXF1ZW5jZSh0aGlzLnByb2plY3QsIFtcbiAgICAgIG5ldyBBd3NBc3N1bWVSb2xlU3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgcm9sZUFybjogdGhpcy5iYXNlT3B0aW9ucy5pYW1Sb2xlQXJucz8uZGVwbG95bWVudD8uW3N0YWdlLm5hbWVdID8/IHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnM/LmRlZmF1bHQhLFxuICAgICAgICByZWdpb246IHN0YWdlLmVudi5yZWdpb24sXG4gICAgICAgIGp1bXBSb2xlQXJuOiB0aGlzLmJhc2VPcHRpb25zLmlhbVJvbGVBcm5zLmp1bXA/LltzdGFnZS5uYW1lXSxcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb2plblNjcmlwdFN0ZXAodGhpcy5wcm9qZWN0LCBgZGVwbG95OiR7c3RhZ2UubmFtZX1gKSxcbiAgICAgIC4uLnN0YWdlLnBvc3REZXBsb3lTdGVwcyA/PyBbXSxcbiAgICBdKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm92aWRlRGlmZlN0ZXAoc3RhZ2U6IE5hbWVkU3RhZ2VPcHRpb25zLCBmYXN0PzogYm9vbGVhbik6IFBpcGVsaW5lU3RlcCB7XG4gICAgcmV0dXJuIG5ldyBTdGVwU2VxdWVuY2UodGhpcy5wcm9qZWN0LCBbXG4gICAgICBuZXcgQXdzQXNzdW1lUm9sZVN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIHJvbGVBcm46IHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnM/LmRpZmY/LltzdGFnZS5uYW1lXSA/P1xuICAgICAgICAgIHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnM/LmRlcGxveW1lbnQ/LltzdGFnZS5uYW1lXSA/P1xuICAgICAgICAgIHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnM/LmRlZmF1bHQhLFxuICAgICAgICByZWdpb246IHN0YWdlLmVudi5yZWdpb24sXG4gICAgICAgIGp1bXBSb2xlQXJuOiB0aGlzLmJhc2VPcHRpb25zLmlhbVJvbGVBcm5zLmp1bXA/LltzdGFnZS5uYW1lXSxcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb2plblNjcmlwdFN0ZXAodGhpcy5wcm9qZWN0LCBmYXN0ID8gYGZhc3RkaWZmOiR7c3RhZ2UubmFtZX1gIDogYGRpZmY6JHtzdGFnZS5uYW1lfWApLFxuICAgICAgLi4uc3RhZ2UucG9zdERpZmZTdGVwcyA/PyBbXSxcbiAgICBdKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZW5kZXJJbnN0YWxsUGFja2FnZUNvbW1hbmRzKHBhY2thZ2VOYW1lOiBzdHJpbmcsIHJ1blByZUluc3RhbGxDb21tYW5kczogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGNvbW1hbmRzID0gcnVuUHJlSW5zdGFsbENvbW1hbmRzID8gdGhpcy5iYXNlT3B0aW9ucy5wcmVJbnN0YWxsQ29tbWFuZHMgPz8gW10gOiBbXTtcblxuICAgIHN3aXRjaCAodGhpcy5hcHAucGFja2FnZS5wYWNrYWdlTWFuYWdlcikge1xuICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuWUFSTjpcbiAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk4yOlxuICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuWUFSTl9CRVJSWTpcbiAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk5fQ0xBU1NJQzpcbiAgICAgICAgY29tbWFuZHMucHVzaChgeWFybiBhZGQgJHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5OUE06XG4gICAgICAgIGNvbW1hbmRzLnB1c2goYG5wbSBpbnN0YWxsICR7cGFja2FnZU5hbWV9YCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuUE5QTTpcbiAgICAgICAgY29tbWFuZHMucHVzaChgcG5wbSBhZGQgJHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGluc3RhbGwgc2NyaXB0cyBmb3IgcGFja2FnZU1hbmFnZXI6ICcgKyB0aGlzLmFwcC5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbW1hbmRzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZVNhZmVTdGFnZU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBSZW1vdmUgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCBzcGxpdCBpbnRvIHdvcmRzXG4gICAgY29uc3Qgd29yZHMgPSBuYW1lLnJlcGxhY2UoL1teYS16QS1aMC05XSsvZywgJyAnKS50cmltKCkuc3BsaXQoL1xccysvKTtcblxuICAgIC8vIENhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIHdvcmQgYW5kIGpvaW4gdGhlbVxuICAgIHJldHVybiB3b3Jkcy5tYXAoKHdvcmQpID0+IHtcbiAgICAgIHJldHVybiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKS50b0xvd2VyQ2FzZSgpO1xuICAgIH0pLmpvaW4oJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGdlbmVyYXRlcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBhcHBsaWNhdGlvbiwgaW5jbHVkaW5nIGludGVyZmFjZXMgYW5kIGNsYXNzZXNcbiAgICogbmVjZXNzYXJ5IHRvIHNldCB1cCB0aGUgcGlwZWxpbmUgYW5kIGRlZmluZSB0aGUgQVdTIENESyBzdGFja3MgZm9yIGRpZmZlcmVudCBlbnZpcm9ubWVudHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlQXBwbGljYXRpb25FbnRyeXBvaW50KCkge1xuICAgIGxldCBwcm9wc0NvZGUgPSAnJztcbiAgICBsZXQgYXBwQ29kZSA9ICcnO1xuICAgIGxldCBzZXAgPSAnLSc7XG4gICAgaWYgKHRoaXMuc3RhY2tQcmVmaXggPT09ICcnKSB7XG4gICAgICBzZXAgPSAnJztcbiAgICB9XG5cblxuICAgIGlmICh0aGlzLmJhc2VPcHRpb25zLnBlcnNvbmFsU3RhZ2UpIHtcbiAgICAgIHByb3BzQ29kZSArPSBgICAvKiogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIHVzZWQgdG8gZ2VuZXJhdGUgYSBwZXJzb25hbCBzdGFjay4gKi9cbiAgcHJvdmlkZVBlcnNvbmFsU3RhY2s6IChhcHA6IEFwcCwgc3RhY2tJZDogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVBcHBTdGFja1Byb3BzKSA9PiBTdGFjaztcbmA7XG4gICAgICBhcHBDb2RlICs9IGAgICAgLy8gSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFVTRVIgaXMgc2V0IGFuZCBhIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGZvciBjcmVhdGluZyBhIHBlcnNvbmFsIHN0YWNrLCBpdCBpcyBjYWxsZWQgd2l0aCBuZWNlc3NhcnkgYXJndW1lbnRzLlxuICAgIGlmIChwcm9wcy5wcm92aWRlUGVyc29uYWxTdGFjayAmJiBwcm9jZXNzLmVudi5VU0VSKSB7XG4gICAgICBjb25zdCBzdGFnZU5hbWUgPSAncGVyc29uYWwtJyArIHByb2Nlc3MuZW52LlVTRVIudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXFxcXFwvL2csICctJyk7XG4gICAgICBwcm9wcy5wcm92aWRlUGVyc29uYWxTdGFjayh0aGlzLCAnJHt0aGlzLnN0YWNrUHJlZml4fSR7c2VwfXBlcnNvbmFsJywgeyBlbnY6IHsgYWNjb3VudDogJyR7dGhpcy5iYXNlT3B0aW9ucy5wZXJzb25hbFN0YWdlLmVudi5hY2NvdW50fScsIHJlZ2lvbjogJyR7dGhpcy5iYXNlT3B0aW9ucy5wZXJzb25hbFN0YWdlLmVudi5yZWdpb259JyB9LCBzdGFja05hbWU6IFxcYCR7dGhpcy5zdGFja1ByZWZpeH0ke3NlcH1cXCR7c3RhZ2VOYW1lfVxcYCwgc3RhZ2VOYW1lIH0pO1xuICAgIH1cbmA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYmFzZU9wdGlvbnMuZmVhdHVyZVN0YWdlcykge1xuICAgICAgcHJvcHNDb2RlICs9IGAgIC8qKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgdXNlZCB0byBnZW5lcmF0ZSBhIGZlYXR1cmUgc3RhY2suICovXG4gIHByb3ZpZGVGZWF0dXJlU3RhY2s6IChhcHA6IEFwcCwgc3RhY2tJZDogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVBcHBTdGFja1Byb3BzKSA9PiBTdGFjaztcbmA7XG4gICAgICBhcHBDb2RlICs9IGAgICAgLy8gSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIEJSQU5DSCBpcyBzZXQgYW5kIGEgZnVuY3Rpb24gaXMgcHJvdmlkZWQgZm9yIGNyZWF0aW5nIGEgZmVhdHVyZSBzdGFjaywgaXQgaXMgY2FsbGVkIHdpdGggbmVjZXNzYXJ5IGFyZ3VtZW50cy5cbiAgICBpZiAocHJvcHMucHJvdmlkZUZlYXR1cmVTdGFjayAmJiBwcm9jZXNzLmVudi5CUkFOQ0gpIHtcbiAgICAgIGNvbnN0IHN0YWdlTmFtZSA9ICdmZWF0dXJlLScgKyBwcm9jZXNzLmVudi5CUkFOQ0gudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXFxcXFwvL2csICctJyk7XG4gICAgICBwcm9wcy5wcm92aWRlRmVhdHVyZVN0YWNrKHRoaXMsICcke3RoaXMuc3RhY2tQcmVmaXh9JHtzZXB9ZmVhdHVyZScsIHsgZW52OiB7IGFjY291bnQ6ICcke3RoaXMuYmFzZU9wdGlvbnMuZmVhdHVyZVN0YWdlcy5lbnYuYWNjb3VudH0nLCByZWdpb246ICcke3RoaXMuYmFzZU9wdGlvbnMuZmVhdHVyZVN0YWdlcy5lbnYucmVnaW9ufScgfSwgc3RhY2tOYW1lOiBcXGAke3RoaXMuc3RhY2tQcmVmaXh9JHtzZXB9XFwke3N0YWdlTmFtZX1cXGAsIHN0YWdlTmFtZSB9KTtcbiAgICB9XG5gO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2YgdGhpcy5iYXNlT3B0aW9ucy5zdGFnZXMpIHtcbiAgICAgIGNvbnN0IG5hbWVVcHBlckZpcnN0ID0gdGhpcy5jcmVhdGVTYWZlU3RhZ2VOYW1lKHN0YWdlLm5hbWUpO1xuXG4gICAgICBwcm9wc0NvZGUgKz0gYCAgLyoqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIGEgJHtzdGFnZS5uYW1lfSBzdGFjay4gKi9cbiAgcHJvdmlkZSR7bmFtZVVwcGVyRmlyc3R9U3RhY2s6IChhcHA6IEFwcCwgc3RhY2tJZDogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVBcHBTdGFja1Byb3BzKSA9PiBTdGFjaztcbmA7XG4gICAgICBhcHBDb2RlICs9IGAgICAgLy8gSWYgYSBmdW5jdGlvbiBpcyBwcm92aWRlZCBmb3IgY3JlYXRpbmcgYSAke3N0YWdlLm5hbWV9IHN0YWNrLCBpdCBpcyBjYWxsZWQgd2l0aCBuZWNlc3NhcnkgYXJndW1lbnRzLlxuICAgIGlmIChwcm9wcy5wcm92aWRlJHtuYW1lVXBwZXJGaXJzdH1TdGFjaykge1xuICAgICAgcHJvcHMucHJvdmlkZSR7bmFtZVVwcGVyRmlyc3R9U3RhY2sodGhpcywgJyR7dGhpcy5zdGFja1ByZWZpeH0ke3NlcH0ke3N0YWdlLm5hbWV9JywgeyBlbnY6IHsgYWNjb3VudDogJyR7c3RhZ2UuZW52LmFjY291bnR9JywgcmVnaW9uOiAnJHtzdGFnZS5lbnYucmVnaW9ufScgfSwgc3RhY2tOYW1lOiAnJHt0aGlzLnN0YWNrUHJlZml4fSR7c2VwfSR7c3RhZ2UubmFtZX0nLCBzdGFnZU5hbWU6ICcke3N0YWdlLm5hbWV9JyB9KTtcbiAgICB9XG5gO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2YgKHRoaXMuYmFzZU9wdGlvbnMuaW5kZXBlbmRlbnRTdGFnZXMgPz8gW10pKSB7XG4gICAgICBjb25zdCBuYW1lVXBwZXJGaXJzdCA9IHRoaXMuY3JlYXRlU2FmZVN0YWdlTmFtZShzdGFnZS5uYW1lKTtcblxuICAgICAgcHJvcHNDb2RlICs9IGAgIC8qKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgdXNlZCB0byBnZW5lcmF0ZSBhICR7c3RhZ2UubmFtZX0gc3RhY2suICovXG4gIHByb3ZpZGUke25hbWVVcHBlckZpcnN0fVN0YWNrOiAoYXBwOiBBcHAsIHN0YWNrSWQ6IHN0cmluZywgcHJvcHM6IFBpcGVsaW5lQXBwU3RhY2tQcm9wcykgPT4gU3RhY2s7XG5gO1xuICAgICAgYXBwQ29kZSArPSBgICAgIC8vIElmIGEgZnVuY3Rpb24gaXMgcHJvdmlkZWQgZm9yIGNyZWF0aW5nIGEgJHtzdGFnZS5uYW1lfSBzdGFjaywgaXQgaXMgY2FsbGVkIHdpdGggbmVjZXNzYXJ5IGFyZ3VtZW50cy5cbiAgICBpZiAocHJvcHMucHJvdmlkZSR7bmFtZVVwcGVyRmlyc3R9U3RhY2spIHtcbiAgICAgIHByb3BzLnByb3ZpZGUke25hbWVVcHBlckZpcnN0fVN0YWNrKHRoaXMsICcke3RoaXMuc3RhY2tQcmVmaXh9JHtzZXB9JHtzdGFnZS5uYW1lfScsIHsgZW52OiB7IGFjY291bnQ6ICcke3N0YWdlLmVudi5hY2NvdW50fScsIHJlZ2lvbjogJyR7c3RhZ2UuZW52LnJlZ2lvbn0nIH0sIHN0YWNrTmFtZTogJyR7dGhpcy5zdGFja1ByZWZpeH0ke3NlcH0ke3N0YWdlLm5hbWV9Jywgc3RhZ2VOYW1lOiAnJHtzdGFnZS5uYW1lfScgfSk7XG4gICAgfVxuYDtcbiAgICB9XG5cbiAgICAvLyBBZGQgdmVyc2lvbmluZyBsb2dpYyB0byBhcHBseSB0byBhbGwgc3RhY2tzXG4gICAgaWYgKHRoaXMuYmFzZU9wdGlvbnMudmVyc2lvbmluZz8uZW5hYmxlZCkge1xuICAgICAgYXBwQ29kZSArPSB0aGlzLmdlbmVyYXRlVmVyc2lvbmluZ0FwcENvZGUodGhpcy5iYXNlT3B0aW9ucy52ZXJzaW9uaW5nKTtcbiAgICB9XG5cbiAgICBjb25zdCBhcHBGaWxlID0gbmV3IFRleHRGaWxlKHRoaXMucHJvamVjdCwgYCR7dGhpcy5hcHAuc3JjZGlyfS9hcHAudHNgKTtcblxuICAgIC8vIEdlbmVyYXRlIHZlcnNpb25pbmctYXdhcmUgaW1wb3J0cyBhbmQgdXRpbGl0aWVzXG4gICAgY29uc3QgdmVyc2lvbmluZ0ltcG9ydHMgPSB0aGlzLmJhc2VPcHRpb25zLnZlcnNpb25pbmc/LmVuYWJsZWRcbiAgICAgID8gdGhpcy5nZW5lcmF0ZVZlcnNpb25pbmdJbXBvcnRzKClcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCB2ZXJzaW9uaW5nVXRpbGl0aWVzID0gdGhpcy5iYXNlT3B0aW9ucy52ZXJzaW9uaW5nPy5lbmFibGVkXG4gICAgICA/IHRoaXMuZ2VuZXJhdGVWZXJzaW9uaW5nVXRpbGl0aWVzKClcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCB2ZXJzaW9uaW5nQ29uZmlnRGVjbGFyYXRpb24gPSB0aGlzLmJhc2VPcHRpb25zLnZlcnNpb25pbmc/LmVuYWJsZWRcbiAgICAgID8gYFxuY29uc3QgdmVyc2lvbmluZ0NvbmZpZyA9ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5iYXNlT3B0aW9ucy52ZXJzaW9uaW5nLCBudWxsLCAyKX07XG5gXG4gICAgICA6ICcnO1xuXG4gICAgYXBwRmlsZS5hZGRMaW5lKGAvLyAke1BST0pFTl9NQVJLRVJ9XG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IHsgQXBwLCBBcHBQcm9wcywgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG4ke3ZlcnNpb25pbmdJbXBvcnRzfVxuJHt2ZXJzaW9uaW5nQ29uZmlnRGVjbGFyYXRpb259XG4ke3ZlcnNpb25pbmdVdGlsaXRpZXN9XG5cbi8qKlxuICogUGlwZWxpbmVBcHBQcm9wcyBpcyBhbiBleHRlbnNpb24gb2YgQXBwUHJvcHMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIEFXUyBDREsgY29yZS5cbiAqIEl0IGluY2x1ZGVzIG9wdGlvbmFsIGZ1bmN0aW9ucyB0byBwcm92aWRlIEFXUyBTdGFja3MgZm9yIGRpZmZlcmVudCBzdGFnZXMuXG4gKlxuICogVXNlIHRoZXNlIGZ1bmN0aW9ucyB0byBpbnN0YW50aWF0ZSB5b3VyIGFwcGxpY2F0aW9uIHN0YWNrcyB3aXRoIHRoZSBwYXJhbWV0ZXJzIGZvclxuICogZWFjaCBzdGFnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lQXBwUHJvcHMgZXh0ZW5kcyBBcHBQcm9wcyB7XG4ke3Byb3BzQ29kZX1cbn1cblxuLyoqXG4gKiBQaXBlbGluZUFwcFN0YWNrUHJvcHMgaXMgYW4gZXh0ZW5zaW9uIG9mIFN0YWNrUHJvcHMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIEFXUyBDREsgY29yZS5cbiAqIEl0IGluY2x1ZGVzIGFuIGFkZGl0aW9uYWwgcHJvcGVydHkgdG8gc3BlY2lmeSB0aGUgc3RhZ2UgbmFtZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZUFwcFN0YWNrUHJvcHMgZXh0ZW5kcyBTdGFja1Byb3BzIHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIFBpcGVsaW5lQXBwIGNsYXNzIGV4dGVuZHMgdGhlIEFwcCBjbGFzcyBmcm9tIEFXUyBDREsgYW5kIG92ZXJyaWRlcyB0aGUgY29uc3RydWN0b3IgdG8gc3VwcG9ydFxuICogZGlmZmVyZW50IHN0YWdlcyBvZiB0aGUgYXBwbGljYXRpb24gKGRldmVsb3BtZW50LCBwcm9kdWN0aW9uLCBwZXJzb25hbCwgZmVhdHVyZSkgYnkgaW52b2tpbmcgdGhlIHByb3ZpZGVkXG4gKiBzdGFjay1wcm92aWRpbmcgZnVuY3Rpb25zIGZyb20gdGhlIHByb3BzLlxuICovXG5leHBvcnQgY2xhc3MgUGlwZWxpbmVBcHAgZXh0ZW5kcyBBcHAge1xuICBjb25zdHJ1Y3Rvcihwcm9wczogUGlwZWxpbmVBcHBQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuJHthcHBDb2RlfVxuXG4gIH1cbn1cbmApO1xuICB9XG5cblxuICAvKipcbiAgICogVGhpcyBtZXRob2Qgc2V0cyB1cCB0YXNrcyB0byBwdWJsaXNoIENESyBhc3NldHMgdG8gYWxsIGFjY291bnRzIGFuZCBoYW5kbGUgdmVyc2lvbmluZywgaW5jbHVkaW5nIGJ1bXBpbmcgdGhlIHZlcnNpb25cbiAgICogYmFzZWQgb24gdGhlIGxhdGVzdCBnaXQgdGFnIGFuZCBwdXNoaW5nIHRoZSBDREsgYXNzZW1ibHkgdG8gdGhlIHBhY2thZ2UgcmVwb3NpdG9yeS5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVSZWxlYXNlVGFza3MoKSB7XG4gICAgY29uc3Qgc3RhZ2VzID0gWy4uLnRoaXMuYmFzZU9wdGlvbnMuc3RhZ2VzLCAuLi50aGlzLmJhc2VPcHRpb25zLmluZGVwZW5kZW50U3RhZ2VzID8/IFtdXTtcbiAgICBsZXQgc2VwID0gJy0nO1xuICAgIGlmICh0aGlzLnN0YWNrUHJlZml4ID09PSAnJykge1xuICAgICAgc2VwID0gJyc7XG4gICAgfVxuICAgIC8vIFRhc2sgdG8gcHVibGlzaCB0aGUgQ0RLIGFzc2V0cyB0byBhbGwgYWNjb3VudHNcbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIHN0YWdlcykge1xuICAgICAgdGhpcy5wcm9qZWN0LmFkZFRhc2soYHB1Ymxpc2g6YXNzZXRzOiR7c3RhZ2UubmFtZX1gLCB7XG4gICAgICAgIHN0ZXBzOiBbe1xuICAgICAgICAgIGV4ZWM6IGBucHggY2RrLWFzc2V0cyAtcCAke3RoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXR9LyR7dGhpcy5zdGFja1ByZWZpeH0ke3NlcH0ke3N0YWdlLm5hbWV9LmFzc2V0cy5qc29uIHB1Ymxpc2hgLFxuICAgICAgICB9XSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnByb2plY3QuYWRkVGFzaygncHVibGlzaDphc3NldHMnLCB7XG4gICAgICBzdGVwczogc3RhZ2VzLm1hcChzdGFnZSA9PiAoe1xuICAgICAgICBzcGF3bjogYHB1Ymxpc2g6YXNzZXRzOiR7c3RhZ2UubmFtZX1gLFxuICAgICAgfSkpLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuYmFzZU9wdGlvbnMucGtnTmFtZXNwYWNlKSB7XG4gICAgICB0aGlzLnByb2plY3QuYWRkVGFzaygnYnVtcCcsIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdCdW1wcyB2ZXJzaW9uIGJhc2VkIG9uIGxhdGVzdCBnaXQgdGFnJyxcbiAgICAgICAgc3RlcHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBleGVjOiAncGlwZWxpbmVzLXJlbGVhc2UgYnVtcCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBleGVjOiAnZ2l0IHB1c2ggLS10YWdzJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnByb2plY3QuYWRkVGFzaygncmVsZWFzZTpwdXNoLWFzc2VtYmx5Jywge1xuICAgICAgICBzdGVwczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGV4ZWM6IGBwaXBlbGluZXMtcmVsZWFzZSBjcmVhdGUtbWFuaWZlc3QgXCIke3RoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXR9XCIgIFwiJHt0aGlzLmJhc2VPcHRpb25zLnBrZ05hbWVzcGFjZX1cImAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjd2Q6IHRoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXQsXG4gICAgICAgICAgICBleGVjOiAnbnBtIHZlcnNpb24gLS1uby1naXQtdGFnLXZlcnNpb24gZnJvbS1naXQnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY3dkOiB0aGlzLmFwcC5jZGtDb25maWcuY2Rrb3V0LFxuICAgICAgICAgICAgZXhlYzogJ25wbSBwdWJsaXNoJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2Qgc2V0cyB1cCB0YXNrcyBmb3IgdGhlIHBlcnNvbmFsIGRlcGxveW1lbnQgc3RhZ2UsIGluY2x1ZGluZyBkZXBsb3ltZW50LCB3YXRjaGluZyBmb3IgY2hhbmdlcyxcbiAgICogY29tcGFyaW5nIGNoYW5nZXMgKGRpZmYpLCBhbmQgZGVzdHJveWluZyB0aGUgc3RhY2sgd2hlbiBubyBsb25nZXIgbmVlZGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZVBlcnNvbmFsU3RhZ2UoKSB7XG4gICAgY29uc3Qgc3RhY2tJZCA9IHRoaXMuZ2V0Q2xpU3RhY2tQYXR0ZXJuKCdwZXJzb25hbCcpO1xuICAgIHRoaXMucHJvamVjdC5hZGRUYXNrKCdkZXBsb3k6cGVyc29uYWwnLCB7XG4gICAgICBleGVjOiBgY2RrIGRlcGxveSAtLW91dHB1dHMtZmlsZSBjZGstb3V0cHV0cy1wZXJzb25hbC5qc29uICR7c3RhY2tJZH1gLFxuICAgIH0pO1xuICAgIHRoaXMucHJvamVjdC5hZGRUYXNrKCd3YXRjaDpwZXJzb25hbCcsIHtcbiAgICAgIGV4ZWM6IGBjZGsgZGVwbG95IC0tb3V0cHV0cy1maWxlIGNkay1vdXRwdXRzLXBlcnNvbmFsLmpzb24gLS13YXRjaCAtLWhvdHN3YXAgJHtzdGFja0lkfWAsXG4gICAgfSk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZFRhc2soJ2RpZmY6cGVyc29uYWwnLCB7XG4gICAgICBleGVjOiBgY2RrIGRpZmYgJHtzdGFja0lkfWAsXG4gICAgfSk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZFRhc2soJ2Zhc3RkaWZmOnBlcnNvbmFsJywge1xuICAgICAgZXhlYzogYGNkayBkaWZmIC0tbm8tY2hhbmdlc2V0ICR7c3RhY2tJZH1gLFxuICAgIH0pO1xuICAgIHRoaXMucHJvamVjdC5hZGRUYXNrKCdkZXN0cm95OnBlcnNvbmFsJywge1xuICAgICAgZXhlYzogYGNkayBkZXN0cm95ICR7c3RhY2tJZH1gLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHNldHMgdXAgdGFza3MgZm9yIHRoZSBmZWF0dXJlIGRlcGxveW1lbnQgc3RhZ2UsIGluY2x1ZGluZyBkZXBsb3ltZW50LCBjb21wYXJpbmcgY2hhbmdlcyAoZGlmZiksXG4gICAqIGFuZCBkZXN0cm95aW5nIHRoZSBzdGFjayB3aGVuIG5vIGxvbmdlciBuZWVkZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlRmVhdHVyZVN0YWdlKCkge1xuICAgIGNvbnN0IHN0YWNrSWQgPSB0aGlzLmdldENsaVN0YWNrUGF0dGVybignZmVhdHVyZScpO1xuICAgIHRoaXMucHJvamVjdC5hZGRUYXNrKCdkZXBsb3k6ZmVhdHVyZScsIHtcbiAgICAgIGV4ZWM6IGBjZGsgLS1vdXRwdXRzLWZpbGUgY2RrLW91dHB1dHMtZmVhdHVyZS5qc29uIC0tcHJvZ3Jlc3MgZXZlbnRzIC0tcmVxdWlyZS1hcHByb3ZhbCBuZXZlciBkZXBsb3kgJHtzdGFja0lkfWAsXG4gICAgfSk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZFRhc2soJ2RpZmY6ZmVhdHVyZScsIHtcbiAgICAgIGV4ZWM6IGBjZGsgZGlmZiAke3N0YWNrSWR9YCxcbiAgICB9KTtcbiAgICB0aGlzLnByb2plY3QuYWRkVGFzaygnZmFzdGRpZmY6ZmVhdHVyZScsIHtcbiAgICAgIGV4ZWM6IGBjZGsgZGlmZiAtLW5vLWNoYW5nZXNldCAke3N0YWNrSWR9YCxcbiAgICB9KTtcbiAgICB0aGlzLnByb2plY3QuYWRkVGFzaygnZGVzdHJveTpmZWF0dXJlJywge1xuICAgICAgZXhlYzogYGNkayBkZXN0cm95IC0tZm9yY2UgJHtzdGFja0lkfWAsXG4gICAgfSk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZFRhc2soJ3dhdGNoOmZlYXR1cmUnLCB7XG4gICAgICBleGVjOiBgY2RrIGRlcGxveSAtLW91dHB1dHMtZmlsZSBjZGstb3V0cHV0cy1mZWF0dXJlLmpzb24gLS13YXRjaCAtLWhvdHN3YXAgJHtzdGFja0lkfWAsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2Qgc2V0cyB1cCB0YXNrcyBmb3IgdGhlIGdlbmVyYWwgcGlwZWxpbmUgc3RhZ2VzIChkZXYsIHByb2QpLCBpbmNsdWRpbmcgZGVwbG95bWVudCBhbmQgY29tcGFyaW5nIGNoYW5nZXMgKGRpZmYpLlxuICAgKiBAcGFyYW0ge0RlcGxveVN0YWdlT3B0aW9uc30gc3RhZ2UgLSBUaGUgc3RhZ2UgdG8gY3JlYXRlXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlUGlwZWxpbmVTdGFnZShzdGFnZTogRGVwbG95bWVudFN0YWdlKSB7XG4gICAgY29uc3Qgc3RhY2tJZCA9IHRoaXMuZ2V0Q2xpU3RhY2tQYXR0ZXJuKHN0YWdlLm5hbWUpO1xuICAgIHRoaXMucHJvamVjdC5hZGRUYXNrKGBkZXBsb3k6JHtzdGFnZS5uYW1lfWAsIHtcbiAgICAgIGV4ZWM6IGBjZGsgLS1hcHAgJHt0aGlzLmFwcC5jZGtDb25maWcuY2Rrb3V0fSAtLW91dHB1dHMtZmlsZSBjZGstb3V0cHV0cy0ke3N0YWdlLm5hbWV9Lmpzb24gLS1wcm9ncmVzcyBldmVudHMgLS1yZXF1aXJlLWFwcHJvdmFsIG5ldmVyIGRlcGxveSAke3N0YWNrSWR9YCxcbiAgICB9KTtcbiAgICB0aGlzLnByb2plY3QuYWRkVGFzayhgZGlmZjoke3N0YWdlLm5hbWV9YCwge1xuICAgICAgZXhlYzogYGNkayAtLWFwcCAke3RoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXR9IGRpZmYgJHtzdGFja0lkfWAsXG4gICAgfSk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZFRhc2soYGZhc3RkaWZmOiR7c3RhZ2UubmFtZX1gLCB7XG4gICAgICBleGVjOiBgY2RrIC0tYXBwICR7dGhpcy5hcHAuY2RrQ29uZmlnLmNka291dH0gZGlmZiAtLW5vLWNoYW5nZXNldCAke3N0YWNrSWR9YCxcbiAgICB9KTtcbiAgICBpZiAoc3RhZ2Uud2F0Y2hhYmxlKSB7XG4gICAgICB0aGlzLnByb2plY3QuYWRkVGFzayhgd2F0Y2g6JHtzdGFnZS5uYW1lfWAsIHtcbiAgICAgICAgZXhlYzogYGNkayBkZXBsb3kgLS1vdXRwdXRzLWZpbGUgY2RrLW91dHB1dHMtJHtzdGFnZS5uYW1lfS5qc29uIC0td2F0Y2ggLS1ob3Rzd2FwICR7c3RhY2tJZH1gLFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIEFkZCB2ZXJzaW9uIGZldGNoIHRhc2sgaWYgdmVyc2lvbmluZyBpcyBlbmFibGVkXG4gICAgaWYgKHRoaXMuYmFzZU9wdGlvbnMudmVyc2lvbmluZz8uZW5hYmxlZCkge1xuICAgICAgdGhpcy5jcmVhdGVWZXJzaW9uRmV0Y2hUYXNrKHN0YWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2Qgc2V0cyB1cCB0YXNrcyBmb3IgdGhlIGluZGVwZW5kZW50IHN0YWdlcyBpbmNsdWRpbmcgZGVwbG95bWVudCBhbmQgY29tcGFyaW5nIGNoYW5nZXMgKGRpZmYpLlxuICAgKiBAcGFyYW0ge05hbWVkU3RhZ2VPcHRpb25zfSBzdGFnZSAtIFRoZSBzdGFnZSB0byBjcmVhdGVcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVJbmRlcGVuZGVudFN0YWdlKHN0YWdlOiBJbmRlcGVuZGVudFN0YWdlKSB7XG4gICAgY29uc3Qgc3RhY2tJZCA9IHRoaXMuZ2V0Q2xpU3RhY2tQYXR0ZXJuKHN0YWdlLm5hbWUpO1xuICAgIHRoaXMucHJvamVjdC5hZGRUYXNrKGBkZXBsb3k6JHtzdGFnZS5uYW1lfWAsIHtcbiAgICAgIGV4ZWM6IGBjZGsgLS1hcHAgJHt0aGlzLmFwcC5jZGtDb25maWcuY2Rrb3V0fSAtLW91dHB1dHMtZmlsZSBjZGstb3V0cHV0cy0ke3N0YWdlLm5hbWV9Lmpzb24gLS1wcm9ncmVzcyBldmVudHMgLS1yZXF1aXJlLWFwcHJvdmFsIG5ldmVyIGRlcGxveSAke3N0YWNrSWR9YCxcbiAgICB9KTtcbiAgICB0aGlzLnByb2plY3QuYWRkVGFzayhgZGlmZjoke3N0YWdlLm5hbWV9YCwge1xuICAgICAgZXhlYzogYGNkayAtLWFwcCAke3RoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXR9IGRpZmYgJHtzdGFja0lkfWAsXG4gICAgfSk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZFRhc2soYGZhc3RkaWZmOiR7c3RhZ2UubmFtZX1gLCB7XG4gICAgICBleGVjOiBgY2RrIC0tYXBwICR7dGhpcy5hcHAuY2RrQ29uZmlnLmNka291dH0gZGlmZiAtLW5vLWNoYW5nZXNldCAke3N0YWNrSWR9YCxcbiAgICB9KTtcbiAgICBpZiAoc3RhZ2Uud2F0Y2hhYmxlKSB7XG4gICAgICB0aGlzLnByb2plY3QuYWRkVGFzayhgd2F0Y2g6JHtzdGFnZS5uYW1lfWAsIHtcbiAgICAgICAgZXhlYzogYGNkayBkZXBsb3kgLS1vdXRwdXRzLWZpbGUgY2RrLW91dHB1dHMtJHtzdGFnZS5uYW1lfS5qc29uIC0td2F0Y2ggLS1ob3Rzd2FwICR7c3RhY2tJZH1gLFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIEFkZCB2ZXJzaW9uIGZldGNoIHRhc2sgaWYgdmVyc2lvbmluZyBpcyBlbmFibGVkXG4gICAgaWYgKHRoaXMuYmFzZU9wdGlvbnMudmVyc2lvbmluZz8uZW5hYmxlZCkge1xuICAgICAgdGhpcy5jcmVhdGVWZXJzaW9uRmV0Y2hUYXNrKHN0YWdlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q2xpU3RhY2tQYXR0ZXJuKHN0YWdlOiBzdHJpbmcpIHtcbiAgICBsZXQgc2VwID0gJy0nO1xuICAgIGlmICh0aGlzLnN0YWNrUHJlZml4ID09PSAnJykge1xuICAgICAgc2VwID0gJyc7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmJhc2VPcHRpb25zLmRlcGxveVN1YlN0YWNrcyA/IGAke3RoaXMuc3RhY2tQcmVmaXh9JHtzZXB9JHtzdGFnZX0gJHt0aGlzLnN0YWNrUHJlZml4fSR7c2VwfSR7c3RhZ2V9LypgIDogYCR7dGhpcy5zdGFja1ByZWZpeH0ke3NlcH0ke3N0YWdlfWA7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHZlcnNpb246ZmV0Y2g6PHN0YWdlPiB0YXNrIHRvIGZldGNoIHZlcnNpb24gZGF0YSBmcm9tIGRlcGxveWVkIHN0YWNrXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlVmVyc2lvbkZldGNoVGFzayhzdGFnZTogTmFtZWRTdGFnZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFja05hbWUgPSBgJHt0aGlzLnN0YWNrUHJlZml4fSR7dGhpcy5zdGFja1ByZWZpeCA/ICctJyA6ICcnfSR7c3RhZ2UubmFtZX1gO1xuICAgIGNvbnN0IHN0YWdlQ29uZmlnID0gdGhpcy5iYXNlT3B0aW9ucy52ZXJzaW9uaW5nPy5zdGFnZU92ZXJyaWRlcz8uW3N0YWdlLm5hbWVdIHx8IHRoaXMuYmFzZU9wdGlvbnMudmVyc2lvbmluZztcblxuICAgIGlmICghc3RhZ2VDb25maWc/Lm91dHB1dHMpIHJldHVybjtcblxuICAgIGNvbnN0IGNvbW1hbmRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLy8gRmV0Y2ggZnJvbSBDbG91ZEZvcm1hdGlvbiBvdXRwdXRzXG4gICAgaWYgKHN0YWdlQ29uZmlnLm91dHB1dHMuY2xvdWRGb3JtYXRpb24/LmVuYWJsZWQpIHtcbiAgICAgIGNvbW1hbmRzLnB1c2goXG4gICAgICAgIGBlY2hvIFwiRmV0Y2hpbmcgdmVyc2lvbiBkYXRhIGZyb20gQ2xvdWRGb3JtYXRpb24gb3V0cHV0cyBmb3IgJHtzdGFnZS5uYW1lfS4uLlwiYCxcbiAgICAgICAgYGF3cyBjbG91ZGZvcm1hdGlvbiBkZXNjcmliZS1zdGFja3MgLS1zdGFjay1uYW1lICR7c3RhY2tOYW1lfSAtLXJlZ2lvbiAke3N0YWdlLmVudi5yZWdpb259IC0tcXVlcnkgXCJTdGFja3NbMF0uT3V0cHV0c1s/c3RhcnRzX3dpdGgoT3V0cHV0S2V5LCAnQXBwVmVyc2lvbicpXS57S2V5Ok91dHB1dEtleSxWYWx1ZTpPdXRwdXRWYWx1ZX1cIiAtLW91dHB1dCB0YWJsZWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEZldGNoIGZyb20gU1NNIFBhcmFtZXRlciBTdG9yZVxuICAgIGlmIChzdGFnZUNvbmZpZy5vdXRwdXRzLnBhcmFtZXRlclN0b3JlPy5lbmFibGVkKSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJOYW1lID0gKHN0YWdlQ29uZmlnLm91dHB1dHMucGFyYW1ldGVyU3RvcmUucGFyYW1ldGVyTmFtZSB8fCAnL3tzdGFja05hbWV9L3ZlcnNpb24nKVxuICAgICAgICAucmVwbGFjZSgne3N0YWNrTmFtZX0nLCBzdGFja05hbWUpXG4gICAgICAgIC5yZXBsYWNlKCd7c3RhZ2VOYW1lfScsIHN0YWdlLm5hbWUpO1xuXG4gICAgICBpZiAoKHN0YWdlQ29uZmlnLm91dHB1dHMucGFyYW1ldGVyU3RvcmUgYXMgYW55KT8uaGllcmFyY2hpY2FsKSB7XG4gICAgICAgIGNvbW1hbmRzLnB1c2goXG4gICAgICAgICAgYGVjaG8gXCJGZXRjaGluZyB2ZXJzaW9uIGRhdGEgZnJvbSBTU00gUGFyYW1ldGVyIFN0b3JlIChoaWVyYXJjaGljYWwpIGZvciAke3N0YWdlLm5hbWV9Li4uXCJgLFxuICAgICAgICAgIGBhd3Mgc3NtIGdldC1wYXJhbWV0ZXJzLWJ5LXBhdGggLS1wYXRoIFwiJHtwYXJhbWV0ZXJOYW1lfVwiIC0tcmVnaW9uICR7c3RhZ2UuZW52LnJlZ2lvbn0gLS1yZWN1cnNpdmUgLS1xdWVyeSBcIlBhcmFtZXRlcnNbXS57TmFtZTpOYW1lLFZhbHVlOlZhbHVlfVwiIC0tb3V0cHV0IHRhYmxlYCxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbW1hbmRzLnB1c2goXG4gICAgICAgICAgYGVjaG8gXCJGZXRjaGluZyB2ZXJzaW9uIGRhdGEgZnJvbSBTU00gUGFyYW1ldGVyIFN0b3JlIGZvciAke3N0YWdlLm5hbWV9Li4uXCJgLFxuICAgICAgICAgIGBhd3Mgc3NtIGdldC1wYXJhbWV0ZXIgLS1uYW1lIFwiJHtwYXJhbWV0ZXJOYW1lfVwiIC0tcmVnaW9uICR7c3RhZ2UuZW52LnJlZ2lvbn0gLS1xdWVyeSBcIlBhcmFtZXRlci57TmFtZTpOYW1lLFZhbHVlOlZhbHVlfVwiIC0tb3V0cHV0IHRhYmxlYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5wcm9qZWN0LmFkZFRhc2soYHZlcnNpb246ZmV0Y2g6JHtzdGFnZS5uYW1lfWAsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBGZXRjaCB2ZXJzaW9uIGRhdGEgZnJvbSBkZXBsb3llZCAke3N0YWdlLm5hbWV9IHN0YWNrYCxcbiAgICAgICAgZXhlYzogY29tbWFuZHMuam9pbignICYmICcpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIENESyBhcHBsaWNhdGlvbiBjb2RlIGZvciB2ZXJzaW9uaW5nXG4gICAqL1xuICBwdWJsaWMgZ2VuZXJhdGVWZXJzaW9uaW5nQXBwQ29kZShjb25maWc6IFZlcnNpb25pbmdDb25maWcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgXG4gICAgLy8gQXBwbHkgdmVyc2lvbmluZyB0byBhbGwgc3RhY2tzXG4gICAgdGhpcy5ub2RlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBTdGFjaykge1xuICAgICAgICBjb25zdCBzdGFnZU5hbWUgPSBjaGlsZC5zdGFja05hbWUuc3BsaXQoJy0nKS5wb3AoKSB8fCAnZGVmYXVsdCc7XG4gICAgICAgIGFkZFZlcnNpb25pbmdUb1N0YWNrKGNoaWxkLCBzdGFnZU5hbWUsICR7Y29uZmlnLnN0YWdlT3ZlcnJpZGVzID8gJ3ZlcnNpb25pbmdDb25maWcuc3RhZ2VPdmVycmlkZXMnIDogJ3VuZGVmaW5lZCd9KTtcbiAgICAgIH1cbiAgICB9KTtgO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHZlcnNpb25pbmcgaW1wb3J0cyBmb3IgQ0RLIGFwcGxpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgZ2VuZXJhdGVWZXJzaW9uaW5nSW1wb3J0cygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGltcG9ydHM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpbXBvcnRzLnB1c2goXCJpbXBvcnQgeyBDZm5PdXRwdXQgfSBmcm9tICdhd3MtY2RrLWxpYic7XCIpO1xuICAgIGltcG9ydHMucHVzaChcImltcG9ydCB7IFN0cmluZ1BhcmFtZXRlciB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1wiKTtcbiAgICBpbXBvcnRzLnB1c2goXCJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XCIpO1xuXG4gICAgcmV0dXJuIGltcG9ydHMuam9pbignXFxuJyk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgdmVyc2lvbmluZyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgQ0RLIGFwcGxpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgZ2VuZXJhdGVWZXJzaW9uaW5nVXRpbGl0aWVzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcbi8qKlxuICogVmVyc2lvbiBpbmZvcm1hdGlvbiBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uSW5mbyB7XG4gIHZlcnNpb246IHN0cmluZztcbiAgY29tbWl0SGFzaDogc3RyaW5nO1xuICBjb21taXRIYXNoU2hvcnQ6IHN0cmluZztcbiAgYnJhbmNoOiBzdHJpbmc7XG4gIGNvbW1pdENvdW50OiBudW1iZXI7XG4gIHBhY2thZ2VWZXJzaW9uOiBzdHJpbmc7XG4gIGRlcGxveWVkQXQ6IHN0cmluZztcbiAgZGVwbG95ZWRCeTogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xufVxuXG4vKipcbiAqIExvYWQgdmVyc2lvbiBpbmZvcm1hdGlvbiBmcm9tIGdlbmVyYXRlZCBmaWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkVmVyc2lvbkluZm8oKTogVmVyc2lvbkluZm8ge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYygnfnZlcnNpb24uanNvbicsICd1dGY4JykpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybignQ291bGQgbm90IGxvYWQgdmVyc2lvbiBpbmZvLCB1c2luZyBmYWxsYmFjaycpO1xuICAgIHJldHVybiB7XG4gICAgICB2ZXJzaW9uOiAnMC4wLjAnLFxuICAgICAgY29tbWl0SGFzaDogJ3Vua25vd24nLFxuICAgICAgY29tbWl0SGFzaFNob3J0OiAndW5rbm93bicsXG4gICAgICBicmFuY2g6ICd1bmtub3duJyxcbiAgICAgIGNvbW1pdENvdW50OiAwLFxuICAgICAgcGFja2FnZVZlcnNpb246ICcwLjAuMCcsXG4gICAgICBkZXBsb3llZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBkZXBsb3llZEJ5OiAndW5rbm93bicsXG4gICAgICBlbnZpcm9ubWVudDogJ3Vua25vd24nXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEdldCB2ZXJzaW9uaW5nIGNvbmZpZ3VyYXRpb24gZm9yIGEgc3BlY2lmaWMgc3RhZ2VcbiAqL1xuZnVuY3Rpb24gZ2V0U3RhZ2VDb25maWcoc3RhZ2VOYW1lOiBzdHJpbmcsIGJhc2VDb25maWc6IGFueSwgc3RhZ2VPdmVycmlkZXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogYW55IHtcbiAgaWYgKCFzdGFnZU92ZXJyaWRlcyB8fCAhc3RhZ2VPdmVycmlkZXNbc3RhZ2VOYW1lXSkge1xuICAgIHJldHVybiBiYXNlQ29uZmlnO1xuICB9XG4gIFxuICAvLyBNZXJnZSBzdGFnZSBvdmVycmlkZSB3aXRoIGJhc2UgY29uZmlnXG4gIGNvbnN0IG92ZXJyaWRlID0gc3RhZ2VPdmVycmlkZXNbc3RhZ2VOYW1lXTtcbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlQ29uZmlnLFxuICAgIG91dHB1dHM6IHtcbiAgICAgIGNsb3VkRm9ybWF0aW9uOiBvdmVycmlkZS5vdXRwdXRzPy5jbG91ZEZvcm1hdGlvbiB8fCBiYXNlQ29uZmlnLm91dHB1dHMuY2xvdWRGb3JtYXRpb24sXG4gICAgICBwYXJhbWV0ZXJTdG9yZTogb3ZlcnJpZGUub3V0cHV0cz8ucGFyYW1ldGVyU3RvcmUgfHwgYmFzZUNvbmZpZy5vdXRwdXRzLnBhcmFtZXRlclN0b3JlLFxuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBBZGQgdmVyc2lvbmluZyBvdXRwdXRzIHRvIGEgc3RhY2tcbiAqL1xuZnVuY3Rpb24gYWRkVmVyc2lvbmluZ1RvU3RhY2soc3RhY2s6IFN0YWNrLCBzdGFnZU5hbWU6IHN0cmluZywgc3RhZ2VPdmVycmlkZXM/OiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgdmVyc2lvbkluZm8gPSBsb2FkVmVyc2lvbkluZm8oKTtcbiAgY29uc3QgYmFzZUNvbmZpZyA9IHZlcnNpb25pbmdDb25maWc7XG4gIGNvbnN0IGNvbmZpZyA9IGdldFN0YWdlQ29uZmlnKHN0YWdlTmFtZSwgYmFzZUNvbmZpZywgc3RhZ2VPdmVycmlkZXMpO1xuICBcbiAgLy8gQ2hlY2sgaWYgZm9ybWF0IGlzIHNwZWNpZmllZCBpbiBDbG91ZEZvcm1hdGlvbiBvciBQYXJhbWV0ZXJTdG9yZSBjb25maWdzXG4gIGNvbnN0IGNmRm9ybWF0ID0gY29uZmlnLm91dHB1dHMuY2xvdWRGb3JtYXRpb24/LmZvcm1hdCB8fCAnc3RydWN0dXJlZCc7XG4gIGNvbnN0IHNzbUZvcm1hdCA9IGNvbmZpZy5vdXRwdXRzLnBhcmFtZXRlclN0b3JlPy5mb3JtYXQgfHwgJ3N0cnVjdHVyZWQnO1xuICBcbiAgLy8gQWRkIENsb3VkRm9ybWF0aW9uIG91dHB1dHNcbiAgaWYgKGNvbmZpZy5vdXRwdXRzLmNsb3VkRm9ybWF0aW9uPy5lbmFibGVkKSB7XG4gICAgaWYgKGNmRm9ybWF0ID09PSAncGxhaW4nKSB7XG4gICAgICAvLyBQbGFpbiBmb3JtYXQgLSBzaW5nbGUgb3V0cHV0IHdpdGggdmVyc2lvbiBzdHJpbmdcbiAgICAgIG5ldyBDZm5PdXRwdXQoc3RhY2ssICdBcHBWZXJzaW9uJywge1xuICAgICAgICB2YWx1ZTogdmVyc2lvbkluZm8udmVyc2lvbixcbiAgICAgICAgZGVzY3JpcHRpb246ICdBcHBsaWNhdGlvbiB2ZXJzaW9uJyxcbiAgICAgICAgZXhwb3J0TmFtZTogY29uZmlnLm91dHB1dHMuY2xvdWRGb3JtYXRpb24uZXhwb3J0TmFtZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTdHJ1Y3R1cmVkIGZvcm1hdCAtIG11bHRpcGxlIG91dHB1dHNcbiAgICAgIG5ldyBDZm5PdXRwdXQoc3RhY2ssICdBcHBWZXJzaW9uJywge1xuICAgICAgICB2YWx1ZTogdmVyc2lvbkluZm8udmVyc2lvbixcbiAgICAgICAgZGVzY3JpcHRpb246ICdBcHBsaWNhdGlvbiB2ZXJzaW9uJyxcbiAgICAgICAgZXhwb3J0TmFtZTogY29uZmlnLm91dHB1dHMuY2xvdWRGb3JtYXRpb24uZXhwb3J0TmFtZSxcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHN0YWNrLCAnQXBwVmVyc2lvbkNvbW1pdEhhc2gnLCB7XG4gICAgICAgIHZhbHVlOiB2ZXJzaW9uSW5mby5jb21taXRIYXNoLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0dpdCBjb21taXQgaGFzaCcsXG4gICAgICAgIGV4cG9ydE5hbWU6IGNvbmZpZy5vdXRwdXRzLmNsb3VkRm9ybWF0aW9uLmV4cG9ydE5hbWUgPyBcXGBcXCR7Y29uZmlnLm91dHB1dHMuY2xvdWRGb3JtYXRpb24uZXhwb3J0TmFtZX1Db21taXRIYXNoXFxgIDogdW5kZWZpbmVkLFxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIG5ldyBDZm5PdXRwdXQoc3RhY2ssICdBcHBWZXJzaW9uQnJhbmNoJywge1xuICAgICAgICB2YWx1ZTogdmVyc2lvbkluZm8uYnJhbmNoLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0dpdCBicmFuY2gnLFxuICAgICAgICBleHBvcnROYW1lOiBjb25maWcub3V0cHV0cy5jbG91ZEZvcm1hdGlvbi5leHBvcnROYW1lID8gXFxgXFwke2NvbmZpZy5vdXRwdXRzLmNsb3VkRm9ybWF0aW9uLmV4cG9ydE5hbWV9QnJhbmNoXFxgIDogdW5kZWZpbmVkLFxuICAgICAgfSk7XG5cbiAgICAgIG5ldyBDZm5PdXRwdXQoc3RhY2ssICdBcHBWZXJzaW9uSW5mbycsIHtcbiAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KHZlcnNpb25JbmZvKSxcbiAgICAgICAgZGVzY3JpcHRpb246ICdDb21wbGV0ZSB2ZXJzaW9uIGluZm9ybWF0aW9uJyxcbiAgICAgICAgZXhwb3J0TmFtZTogY29uZmlnLm91dHB1dHMuY2xvdWRGb3JtYXRpb24uZXhwb3J0TmFtZSA/IFxcYFxcJHtjb25maWcub3V0cHV0cy5jbG91ZEZvcm1hdGlvbi5leHBvcnROYW1lfUluZm9cXGAgOiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgXG4gIC8vIEFkZCBTU00gUGFyYW1ldGVyIFN0b3JlIHBhcmFtZXRlcnNcbiAgaWYgKGNvbmZpZy5vdXRwdXRzLnBhcmFtZXRlclN0b3JlPy5lbmFibGVkKSB7XG4gICAgaWYgKGNvbmZpZy5vdXRwdXRzLnBhcmFtZXRlclN0b3JlLmhpZXJhcmNoaWNhbCkge1xuICAgICAgLy8gSGllcmFyY2hpY2FsIHBhcmFtZXRlcnNcbiAgICAgIGNvbnN0IGJhc2VQYXJhbWV0ZXJOYW1lID0gKGNvbmZpZy5vdXRwdXRzLnBhcmFtZXRlclN0b3JlLnBhcmFtZXRlck5hbWUgfHwgJy97c3RhY2tOYW1lfS92ZXJzaW9uJylcbiAgICAgICAgLnJlcGxhY2UoJ3tzdGFja05hbWV9Jywgc3RhY2suc3RhY2tOYW1lKVxuICAgICAgICAucmVwbGFjZSgne3N0YWdlTmFtZX0nLCBzdGFnZU5hbWUpO1xuICAgICAgICBcbiAgICAgIC8vIENyZWF0ZSBoaWVyYXJjaGljYWwgcGFyYW1ldGVyc1xuICAgICAgbmV3IFN0cmluZ1BhcmFtZXRlcihzdGFjaywgJ1ZlcnNpb25QYXJhbWV0ZXJWZXJzaW9uJywge1xuICAgICAgICBwYXJhbWV0ZXJOYW1lOiBcXGBcXCR7YmFzZVBhcmFtZXRlck5hbWV9L3ZlcnNpb25cXGAsXG4gICAgICAgIHN0cmluZ1ZhbHVlOiB2ZXJzaW9uSW5mby52ZXJzaW9uLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0FwcGxpY2F0aW9uIHZlcnNpb24nLFxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIG5ldyBTdHJpbmdQYXJhbWV0ZXIoc3RhY2ssICdWZXJzaW9uUGFyYW1ldGVyQ29tbWl0SGFzaCcsIHtcbiAgICAgICAgcGFyYW1ldGVyTmFtZTogXFxgXFwke2Jhc2VQYXJhbWV0ZXJOYW1lfS9jb21taXRIYXNoXFxgLFxuICAgICAgICBzdHJpbmdWYWx1ZTogdmVyc2lvbkluZm8uY29tbWl0SGFzaCxcbiAgICAgICAgZGVzY3JpcHRpb246ICdHaXQgY29tbWl0IGhhc2gnLFxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIG5ldyBTdHJpbmdQYXJhbWV0ZXIoc3RhY2ssICdWZXJzaW9uUGFyYW1ldGVyQnJhbmNoJywge1xuICAgICAgICBwYXJhbWV0ZXJOYW1lOiBcXGBcXCR7YmFzZVBhcmFtZXRlck5hbWV9L2JyYW5jaFxcYCxcbiAgICAgICAgc3RyaW5nVmFsdWU6IHZlcnNpb25JbmZvLmJyYW5jaCxcbiAgICAgICAgZGVzY3JpcHRpb246ICdHaXQgYnJhbmNoJyxcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICBuZXcgU3RyaW5nUGFyYW1ldGVyKHN0YWNrLCAnVmVyc2lvblBhcmFtZXRlckluZm8nLCB7XG4gICAgICAgIHBhcmFtZXRlck5hbWU6IFxcYFxcJHtiYXNlUGFyYW1ldGVyTmFtZX0vaW5mb1xcYCxcbiAgICAgICAgc3RyaW5nVmFsdWU6IEpTT04uc3RyaW5naWZ5KHZlcnNpb25JbmZvKSxcbiAgICAgICAgZGVzY3JpcHRpb246ICdDb21wbGV0ZSB2ZXJzaW9uIGluZm9ybWF0aW9uJyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTaW5nbGUgcGFyYW1ldGVyXG4gICAgICBjb25zdCBwYXJhbWV0ZXJOYW1lID0gKGNvbmZpZy5vdXRwdXRzLnBhcmFtZXRlclN0b3JlLnBhcmFtZXRlck5hbWUgfHwgJy97c3RhY2tOYW1lfS92ZXJzaW9uJylcbiAgICAgICAgLnJlcGxhY2UoJ3tzdGFja05hbWV9Jywgc3RhY2suc3RhY2tOYW1lKVxuICAgICAgICAucmVwbGFjZSgne3N0YWdlTmFtZX0nLCBzdGFnZU5hbWUpO1xuICAgICAgICBcbiAgICAgIG5ldyBTdHJpbmdQYXJhbWV0ZXIoc3RhY2ssICdWZXJzaW9uUGFyYW1ldGVyJywge1xuICAgICAgICBwYXJhbWV0ZXJOYW1lLFxuICAgICAgICBzdHJpbmdWYWx1ZTogc3NtRm9ybWF0ID09PSAncGxhaW4nID8gdmVyc2lvbkluZm8udmVyc2lvbiA6IEpTT04uc3RyaW5naWZ5KHZlcnNpb25JbmZvKSxcbiAgICAgICAgZGVzY3JpcHRpb246IHNzbUZvcm1hdCA9PT0gJ3BsYWluJyA/ICdBcHBsaWNhdGlvbiB2ZXJzaW9uJyA6ICdDb21wbGV0ZSB2ZXJzaW9uIGluZm9ybWF0aW9uJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufWA7XG4gIH1cbn1cbiJdfQ==
@@ -72,5 +72,5 @@ class BashCDKPipeline extends base_1.CDKPipeline {
72
72
  }
73
73
  exports.BashCDKPipeline = BashCDKPipeline;
74
74
  _a = JSII_RTTI_SYMBOL_1;
75
- BashCDKPipeline[_a] = { fqn: "projen-pipelines.BashCDKPipeline", version: "0.3.7" };
75
+ BashCDKPipeline[_a] = { fqn: "projen-pipelines.BashCDKPipeline", version: "0.3.8" };
76
76
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYmFzaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUEwQztBQUMxQyxpQ0FBc0U7QUFDdEUsc0NBQTJDO0FBTTNDLE1BQWEsZUFBZ0IsU0FBUSxrQkFBVztJQUU5QyxZQUFZLEdBQStCLEVBQUUsT0FBK0I7UUFDMUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVwQixNQUFNLE1BQU0sR0FBRyxJQUFJLGlCQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWhFLE1BQU0sQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUM3QyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRW5CLE1BQU0sQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUMvQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUs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QixDQUFDO1FBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxzSEFBc0gsQ0FBQyxDQUFDO1FBQ3ZJLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUIsTUFBTSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUM3QyxNQUFNLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQixNQUFNLENBQUMsT0FBTyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7UUFDcEYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQixNQUFNLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDMUMsTUFBTSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUM3QyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFckIsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLHVCQUFjLENBQUMsSUFBSSxDQUFDO0lBQzdCLENBQUM7O0FBdkVILDBDQXlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHRGaWxlLCBhd3NjZGsgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQ2RrRGlmZlR5cGUsIENES1BpcGVsaW5lLCBDREtQaXBlbGluZU9wdGlvbnMgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgUGlwZWxpbmVFbmdpbmUgfSBmcm9tICcuLi9lbmdpbmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2hDREtQaXBlbGluZU9wdGlvbnMgZXh0ZW5kcyBDREtQaXBlbGluZU9wdGlvbnMge1xuICAvL1xufVxuXG5leHBvcnQgY2xhc3MgQmFzaENES1BpcGVsaW5lIGV4dGVuZHMgQ0RLUGlwZWxpbmUge1xuXG4gIGNvbnN0cnVjdG9yKGFwcDogYXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHAsIG9wdGlvbnM6IEJhc2hDREtQaXBlbGluZU9wdGlvbnMpIHtcbiAgICBzdXBlcihhcHAsIG9wdGlvbnMpO1xuXG4gICAgY29uc3QgcmVhZG1lID0gbmV3IFRleHRGaWxlKHRoaXMsICdwaXBlbGluZS5tZCcsIHsgbGluZXM6IFtdIH0pO1xuXG4gICAgcmVhZG1lLmFkZExpbmUoJyMgSG93IHRvIHJ1biB5b3VyIHBpcGVsaW5lJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJycpO1xuICAgIHJlYWRtZS5hZGRMaW5lKCcjIyBCdWlsZCBwaGFzZScpO1xuICAgIHJlYWRtZS5hZGRMaW5lKCcnKTtcblxuICAgIHJlYWRtZS5hZGRMaW5lKCdTeW50aGVzaXplIHlvdXIgQ0RLIHByb2plY3Q6Jyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJ2BgYGJhc2gnKTtcbiAgICByZWFkbWUuYWRkTGluZShgJHt0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLnRvQmFzaCgpLmNvbW1hbmRzLmpvaW4oJ1xcbicpfWApO1xuICAgIHJlYWRtZS5hZGRMaW5lKGAke3RoaXMucHJvdmlkZVN5bnRoU3RlcCgpLnRvQmFzaCgpLmNvbW1hbmRzLmpvaW4oJ1xcbicpfWApO1xuICAgIHJlYWRtZS5hZGRMaW5lKCdgYGAnKTtcbiAgICByZWFkbWUuYWRkTGluZSgnJyk7XG5cbiAgICByZWFkbWUuYWRkTGluZSgnUHVibGlzaCBhbGwgeW91ciBDREsgYXNzZXRzIGxpa2UgTGFtYmRhIGZ1bmN0aW9uIGNvZGUgYW5kIGNvbnRhaW5lciBpbWFnZXM6Jyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJ2BgYGJhc2gnKTtcbiAgICByZWFkbWUuYWRkTGluZShgJHt0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLnRvQmFzaCgpLmNvbW1hbmRzLmpvaW4oJ1xcbicpfWApO1xuICAgIHJlYWRtZS5hZGRMaW5lKGAke3RoaXMucHJvdmlkZUFzc2V0VXBsb2FkU3RlcCgpLnRvQmFzaCgpLmNvbW1hbmRzLmpvaW4oJ1xcbicpfWApO1xuICAgIHJlYWRtZS5hZGRMaW5lKCdgYGAnKTtcbiAgICByZWFkbWUuYWRkTGluZSgnJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJ0lmIHlvdSB3YW50IHRvIHN0b3JlIHlvdXIgY2xvdWQgYXNzZW1ibHkgYW5kIGFzc2V0cyBmb3IgZnV0dXJlIHVzZSBvciBjb21wbGlhbmNlIHJlYXNvbnMsIHVzZTonKTtcbiAgICByZWFkbWUuYWRkTGluZSgnYGBgYmFzaCcpO1xuICAgIHJlYWRtZS5hZGRMaW5lKGAke3RoaXMucHJvdmlkZUluc3RhbGxTdGVwKCkudG9CYXNoKCkuY29tbWFuZHMuam9pbignXFxuJyl9YCk7XG4gICAgcmVhZG1lLmFkZExpbmUoYCR7dGhpcy5wcm92aWRlQXNzZXRVcGxvYWRTdGVwKCkudG9CYXNoKCkuY29tbWFuZHMuam9pbignXFxuJyl9YCk7XG4gICAgaWYgKHRoaXMuYmFzZU9wdGlvbnMucGtnTmFtZXNwYWNlKSB7XG4gICAgICByZWFkbWUuYWRkTGluZShgJHt0aGlzLnByb3ZpZGVBc3NlbWJseVVwbG9hZFN0ZXAoKS50b0Jhc2goKS5jb21tYW5kcy5qb2luKCdcXG4nKX1gKTtcbiAgICB9XG4gICAgcmVhZG1lLmFkZExpbmUoJ2BgYCcpO1xuICAgIHJlYWRtZS5hZGRMaW5lKCcnKTtcbiAgICByZWFkbWUuYWRkTGluZSgnIyMgRGVwbG95bWVudCBwaGFzZScpO1xuICAgIHJlYWRtZS5hZGRMaW5lKCcnKTtcbiAgICByZWFkbWUuYWRkTGluZSgnRm9yIGV2ZXJ5IHN0YWdlIHNvbWUgc2NyaXB0cyBhcmUgZ2VuZXJhdGVkIGZvciBkaWZmIGFuZCBkZXBsb3knKTtcbiAgICByZWFkbWUuYWRkTGluZSgnJyk7XG5cbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIG9wdGlvbnMuc3RhZ2VzKSB7XG4gICAgICByZWFkbWUuYWRkTGluZShgU3RhZ2U6ICR7c3RhZ2UubmFtZX1gKTtcbiAgICAgIHJlYWRtZS5hZGRMaW5lKCdgYGBiYXNoJyk7XG4gICAgICBpZiAoc3RhZ2UuZGlmZlR5cGUgIT09IENka0RpZmZUeXBlLk5PTkUpIHtcbiAgICAgICAgcmVhZG1lLmFkZExpbmUoYCR7dGhpcy5wcm92aWRlRGlmZlN0ZXAoc3RhZ2UsIHN0YWdlLmRpZmZUeXBlID09IENka0RpZmZUeXBlLkZBU1QpLnRvQmFzaCgpLmNvbW1hbmRzLmpvaW4oJ1xcbicpfWApO1xuICAgICAgICByZWFkbWUuYWRkTGluZSgnJyk7XG4gICAgICB9XG4gICAgICByZWFkbWUuYWRkTGluZShgJHt0aGlzLnByb3ZpZGVEZXBsb3lTdGVwKHN0YWdlKS50b0Jhc2goKS5jb21tYW5kcy5qb2luKCdcXG4nKX1gKTtcbiAgICAgIHJlYWRtZS5hZGRMaW5lKCdgYGAnKTtcbiAgICAgIHJlYWRtZS5hZGRMaW5lKCcnKTtcbiAgICB9XG5cbiAgICByZWFkbWUuYWRkTGluZSgnVGhlIHN0YWdlIGBwZXJzb25hbGAgaXMgbWVhbnQgdG8gYmUgZGVwbG95ZWQgbWFudWFsbHkgYnkgdGhlIGRldmVsb3BlciBhbmQgYWxzbyBoYXMgYSB3YXRjaCBzY3JpcHQgZm9yIGxpdmUgdXBkYXRlcy4nKTtcbiAgICByZWFkbWUuYWRkTGluZSgnYGBgYmFzaCcpO1xuICAgIHJlYWRtZS5hZGRMaW5lKCducHggcHJvamVuIGRpZmY6cGVyc29uYWwnKTtcbiAgICByZWFkbWUuYWRkTGluZSgnbnB4IHByb2plbiBkZXBsb3k6cGVyc29uYWwnKTtcbiAgICByZWFkbWUuYWRkTGluZSgnbnB4IHByb2plbiBkZXN0cm95OnBlcnNvbmFsJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJ25weCBwcm9qZW4gd2F0Y2g6cGVyc29uYWwnKTtcbiAgICByZWFkbWUuYWRkTGluZSgnYGBgJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJycpO1xuICAgIHJlYWRtZS5hZGRMaW5lKCdUaGUgc3RhZ2UgYGZlYXR1cmVgIGlzIG1lYW50IHRvIGJlIGRlcGxveWVkIGZvciBmZWF0dXJlIGJyYW5jaGVzLicpO1xuICAgIHJlYWRtZS5hZGRMaW5lKCdgYGBiYXNoJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJ25weCBwcm9qZW4gZGlmZjpmZWF0dXJlJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJ25weCBwcm9qZW4gZGVwbG95OmZlYXR1cmUnKTtcbiAgICByZWFkbWUuYWRkTGluZSgnbnB4IHByb2plbiBkZXN0cm95OmZlYXR1cmUnKTtcbiAgICByZWFkbWUuYWRkTGluZSgnYGBgJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJycpO1xuXG4gIH1cblxuICBwdWJsaWMgZW5naW5lVHlwZSgpOiBQaXBlbGluZUVuZ2luZSB7XG4gICAgcmV0dXJuIFBpcGVsaW5lRW5naW5lLkJBU0g7XG4gIH1cblxufVxuIl19
@@ -9,6 +9,7 @@ const engine_1 = require("../engine");
9
9
  const engines_1 = require("../engines");
10
10
  const steps_1 = require("../steps");
11
11
  const artifact_steps_1 = require("../steps/artifact-steps");
12
+ const github_summary_step_1 = require("../steps/github-summary.step");
12
13
  const registries_1 = require("../steps/registries");
13
14
  const DEFAULT_RUNNER_TAGS = ['ubuntu-latest'];
14
15
  /**
@@ -100,6 +101,7 @@ class GithubCDKPipeline extends base_1.CDKPipeline {
100
101
  this.provideInstallStep(),
101
102
  this.provideSynthStep(),
102
103
  this.provideDeployStep({ name: 'feature', env: this.baseOptions.featureStages.env }),
104
+ new github_summary_step_1.CdkOutputsSummaryStep(this.project, { stageName: 'feature' }),
103
105
  new artifact_steps_1.UploadArtifactStep(this.project, {
104
106
  name: 'cdk-outputs-feature',
105
107
  path: 'cdk-outputs-feature.json',
@@ -291,6 +293,7 @@ class GithubCDKPipeline extends base_1.CDKPipeline {
291
293
  new steps_1.SimpleCommandStep(this.project, this.renderInstallPackageCommands(`${this.baseOptions.pkgNamespace}/${this.app.name}@\${{github.event.inputs.version}}`)),
292
294
  new steps_1.SimpleCommandStep(this.project, [`mv ./node_modules/${this.baseOptions.pkgNamespace}/${this.app.name} ${this.app.cdkConfig.cdkout}`]),
293
295
  this.provideDeployStep(stage),
296
+ new github_summary_step_1.CdkOutputsSummaryStep(this.project, { stageName: stage.name }),
294
297
  new artifact_steps_1.UploadArtifactStep(this.project, {
295
298
  name: `cdk-outputs-${stage.name}`,
296
299
  path: `cdk-outputs-${stage.name}.json`,
@@ -353,6 +356,7 @@ class GithubCDKPipeline extends base_1.CDKPipeline {
353
356
  }),
354
357
  this.provideInstallStep(),
355
358
  this.provideDeployStep(stage),
359
+ new github_summary_step_1.CdkOutputsSummaryStep(this.project, { stageName: stage.name }),
356
360
  new artifact_steps_1.UploadArtifactStep(this.project, {
357
361
  name: `cdk-outputs-${stage.name}`,
358
362
  path: `cdk-outputs-${stage.name}.json`,
@@ -405,6 +409,7 @@ class GithubCDKPipeline extends base_1.CDKPipeline {
405
409
  this.provideSynthStep(),
406
410
  ...((stage.diffType !== base_1.CdkDiffType.NONE) ? [this.provideDiffStep(stage, stage.diffType === base_1.CdkDiffType.FAST)] : []),
407
411
  this.provideDeployStep(stage),
412
+ new github_summary_step_1.CdkOutputsSummaryStep(this.project, { stageName: stage.name }),
408
413
  new artifact_steps_1.UploadArtifactStep(this.project, {
409
414
  name: `cdk-outputs-${stage.name}`,
410
415
  path: `cdk-outputs-${stage.name}.json`,
@@ -448,5 +453,5 @@ class GithubCDKPipeline extends base_1.CDKPipeline {
448
453
  }
449
454
  exports.GithubCDKPipeline = GithubCDKPipeline;
450
455
  _a = JSII_RTTI_SYMBOL_1;
451
- GithubCDKPipeline[_a] = { fqn: "projen-pipelines.GithubCDKPipeline", version: "0.3.7" };
452
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9naXRodWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSx1RUFBa0Y7QUFDbEYsaUNBQTRIO0FBQzVILHNDQUEyQztBQUMzQyx3Q0FBaUQ7QUFDakQsb0NBQWdHO0FBQ2hHLDREQUFtRjtBQUNuRixvREFBOEQ7QUFFOUQsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBeUM5Qzs7R0FFRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsa0JBQVc7SUFhaEQ7Ozs7T0FJRztJQUNILFlBQVksR0FBK0IsRUFBVSxPQUFpQztRQUNwRixLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1QsR0FBRyxPQUFPO1lBQ1YsR0FBRyxPQUFPLENBQUMsNEJBQTRCLElBQUk7Z0JBQ3pDLGVBQWUsRUFBRTtvQkFDZixJQUFJLG9DQUF1QixDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFDbEQsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUU7aUJBQ2pDO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFUZ0QsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFYdEYsa0RBQWtEO1FBQzFDLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQXFCdEMsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUN6QixJQUFJLEVBQUU7Z0JBQ0osUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUM1QjtZQUNELGdCQUFnQixFQUFFLEVBQUU7U0FDckIsQ0FBQyxDQUFDO1FBRUgsa0RBQWtEO1FBQ2xELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxPQUFPLENB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TCxDQUFDO0lBQ0gsQ0FBQzs7QUEzZEgsOENBNGRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzY2RrIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEdpdGh1YldvcmtmbG93IH0gZnJvbSAncHJvamVuL2xpYi9naXRodWInO1xuaW1wb3J0IHsgSm9iUGVybWlzc2lvbiwgSm9iUGVybWlzc2lvbnMgfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWwnO1xuaW1wb3J0IHsgQ2RrRGlmZlR5cGUsIENES1BpcGVsaW5lLCBDREtQaXBlbGluZU9wdGlvbnMsIERlcGxveW1lbnRTdGFnZSwgSW5kZXBlbmRlbnRTdGFnZSwgTmFtZWRTdGFnZU9wdGlvbnMgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgUGlwZWxpbmVFbmdpbmUgfSBmcm9tICcuLi9lbmdpbmUnO1xuaW1wb3J0IHsgbWVyZ2VKb2JQZXJtaXNzaW9ucyB9IGZyb20gJy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgQXdzQXNzdW1lUm9sZVN0ZXAsIFBpcGVsaW5lU3RlcCwgUHJvamVuU2NyaXB0U3RlcCwgU2ltcGxlQ29tbWFuZFN0ZXAgfSBmcm9tICcuLi9zdGVwcyc7XG5pbXBvcnQgeyBEb3dubG9hZEFydGlmYWN0U3RlcCwgVXBsb2FkQXJ0aWZhY3RTdGVwIH0gZnJvbSAnLi4vc3RlcHMvYXJ0aWZhY3Qtc3RlcHMnO1xuaW1wb3J0IHsgR2l0aHViUGFja2FnZXNMb2dpblN0ZXAgfSBmcm9tICcuLi9zdGVwcy9yZWdpc3RyaWVzJztcblxuY29uc3QgREVGQVVMVF9SVU5ORVJfVEFHUyA9IFsndWJ1bnR1LWxhdGVzdCddO1xuXG5cbi8qKlxuICogRXh0ZW5zaW9uIG9mIHRoZSBiYXNlIENES1BpcGVsaW5lIG9wdGlvbnMgaW5jbHVkaW5nIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGZvciBHaXRIdWIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2l0aHViQ0RLUGlwZWxpbmVPcHRpb25zIGV4dGVuZHMgQ0RLUGlwZWxpbmVPcHRpb25zIHtcblxuICAvKipcbiAgICogcnVubmVyIHRhZ3MgdG8gdXNlIHRvIHNlbGVjdCBydW5uZXJzXG4gICAqXG4gICAqIEBkZWZhdWx0IFsndWJ1bnR1LWxhdGVzdCddXG4gICAqL1xuICByZWFkb25seSBydW5uZXJUYWdzPzogc3RyaW5nW107XG5cbiAgLyoqIHVzZSBHaXRIdWIgUGFja2FnZXMgdG8gc3RvcmUgdmVzaW9uZWQgYXJ0aWZhY3RzIG9mIGNsb3VkIGFzc2VtYmx5OyBhbHNvIG5lZWRlZCBmb3IgbWFudWFsIGFwcHJvdmFscyAqL1xuICByZWFkb25seSB1c2VHaXRodWJQYWNrYWdlc0ZvckFzc2VtYmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogd2hldGhlciB0byB1c2UgR2l0SHViIGVudmlyb25tZW50cyBmb3IgZGVwbG95bWVudCBzdGFnZXNcbiAgICpcbiAgICogSU5GTzogV2hlbiB1c2luZyBlbnZpcm9ubWVudHMgY29uc2lkZXIgcHJvdGVjdGlvbiBydWxlcyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBtYW51YWwgb3B0aW9uIG9mIHByb2plbi1waXBlbGluZXMgZm9yIHN0YWdlc1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlR2l0aHViRW52aXJvbm1lbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogd2hldGhlciB0byB1c2UgR2l0SHViIGVudmlyb25tZW50cyBmb3IgYXNzZXQgdXBsb2FkIHN0ZXBcbiAgICogQ3JlYXRlIHNlcGFyYXRlLCBwYXJhbGxlbCBqb2JzIGZvciBhc3NldCB1cGxvYWQgc2luY2UgR2l0SHViIEVudmlyb25tZW50c1xuICAgKiByZXF1aXJlIHVuaXF1ZSBlbnZpcm9ubWVudCBuYW1lcyBwZXIgam9iXG4gICAqXG4gICAqIFdBUk5JTkc6IHRoaXMgcGFyYW1ldGVyIHJlcXVpcmVzIHJlYnVpbGRpbmcgdGhlIGNvbnRhaW5lciBhc3NldHMgZm9yIGVhY2ggc3RhZ2UgYW5kIHRoZXkgd2lsbCBub3RcbiAgICogYmUgdGhlIFwic2FtZSBiaW5hcnlcIiwgc28gdGhlcmUgaXMgYSAoc21hbGwpIGNoYW5jZSB0aGF0IGl0IGNvdWxkIHByb2R1Y2UgZGlmZmVyZW50IGJpbmFyaWVzIHBlciBzdGFnZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlR2l0aHViRW52aXJvbm1lbnRzRm9yQXNzZXRVcGxvYWQ/OiBib29sZWFuO1xufVxuXG5cbi8qKlxuICogSW1wbGVtZW50cyBhIENESyBQaXBlbGluZSBjb25maWd1cmVkIHNwZWNpZmljYWxseSBmb3IgR2l0SHViIHdvcmtmbG93cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdpdGh1YkNES1BpcGVsaW5lIGV4dGVuZHMgQ0RLUGlwZWxpbmUge1xuXG4gIC8qKiBJbmRpY2F0ZXMgaWYgdmVyc2lvbmVkIGFydGlmYWN0cyBhcmUgbmVlZGVkIGJhc2VkIG9uIG1hbnVhbCBhcHByb3ZhbCByZXF1aXJlbWVudHMuICovXG4gIHB1YmxpYyByZWFkb25seSBuZWVkc1ZlcnNpb25lZEFydGlmYWN0czogYm9vbGVhbjtcblxuICAvKiogVGhlIEdpdEh1YiB3b3JrZmxvdyBhc3NvY2lhdGVkIHdpdGggdGhlIHBpcGVsaW5lLiAqL1xuICBwcml2YXRlIGRlcGxveW1lbnRXb3JrZmxvdzogR2l0aHViV29ya2Zsb3c7XG4gIC8qKiBMaXN0IG9mIGRlcGxveW1lbnQgc3RhZ2VzIGZvciB0aGUgcGlwZWxpbmUuICovXG4gIHByaXZhdGUgZGVwbG95bWVudFN0YWdlczogc3RyaW5nW10gPSBbXTtcblxuICBwcm90ZWN0ZWQgdXNlR2l0aHViUGFja2FnZXM6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBtaW5Ob2RlVmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEdpdGh1YkNES1BpcGVsaW5lIGluc3RhbmNlLlxuICAgKiBAcGFyYW0gYXBwIC0gVGhlIENESyBhcHAgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGlwZWxpbmUuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgcGlwZWxpbmUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhcHA6IGF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwLCBwcml2YXRlIG9wdGlvbnM6IEdpdGh1YkNES1BpcGVsaW5lT3B0aW9ucykge1xuICAgIHN1cGVyKGFwcCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnMudXNlR2l0aHViUGFja2FnZXNGb3JBc3NlbWJseSAmJiB7XG4gICAgICAgIHByZUluc3RhbGxTdGVwczogW1xuICAgICAgICAgIG5ldyBHaXRodWJQYWNrYWdlc0xvZ2luU3RlcChhcHAsIHsgd3JpdGU6IGZhbHNlIH0pLFxuICAgICAgICAgIC4uLm9wdGlvbnMucHJlSW5zdGFsbFN0ZXBzID8/IFtdLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIGRlcGxveW1lbnQgd29ya2Zsb3cgb24gR2l0SHViLlxuICAgIHRoaXMuZGVwbG95bWVudFdvcmtmbG93ID0gdGhpcy5hcHAuZ2l0aHViIS5hZGRXb3JrZmxvdygnZGVwbG95Jyk7XG4gICAgdGhpcy5kZXBsb3ltZW50V29ya2Zsb3cub24oe1xuICAgICAgcHVzaDoge1xuICAgICAgICBicmFuY2hlczogW3RoaXMuYnJhbmNoTmFtZV0sXG4gICAgICB9LFxuICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge30sXG4gICAgfSk7XG5cbiAgICAvLyBEZXRlcm1pbmUgaWYgdmVyc2lvbmVkIGFydGlmYWN0cyBhcmUgbmVjZXNzYXJ5LlxuICAgIHRoaXMubmVlZHNWZXJzaW9uZWRBcnRpZmFjdHMgPSBvcHRpb25zLnN0YWdlcy5maW5kKHMgPT4gcy5tYW51YWxBcHByb3ZhbCA9PT0gdHJ1ZSkgIT09IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5uZWVkc1ZlcnNpb25lZEFydGlmYWN0cyAmJiAhb3B0aW9ucy5wa2dOYW1lc3BhY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncGtnTmFtZXNwYWNlIGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgdmVyc2lvbmVkIGFydGlmYWN0cyAoZS5nLiBtYW51YWwgYXBwcm92YWxzKScpO1xuICAgIH1cbiAgICB0aGlzLnVzZUdpdGh1YlBhY2thZ2VzID0gdGhpcy5uZWVkc1ZlcnNpb25lZEFydGlmYWN0cyAmJiAob3B0aW9ucy51c2VHaXRodWJQYWNrYWdlc0ZvckFzc2VtYmx5ID8/IGZhbHNlKTtcbiAgICB0aGlzLm1pbk5vZGVWZXJzaW9uID0gYXBwLm1pbk5vZGVWZXJzaW9uO1xuXG4gICAgaWYgKHRoaXMudXNlR2l0aHViUGFja2FnZXMpIHtcbiAgICAgIGFwcC5ucG1yYy5hZGRSZWdpc3RyeSgnaHR0cHM6Ly9ucG0ucGtnLmdpdGh1Yi5jb20nLCB0aGlzLmJhc2VPcHRpb25zLnBrZ05hbWVzcGFjZSk7XG4gICAgICBhcHAubnBtcmMuYWRkQ29uZmlnKCcvL25wbS5wa2cuZ2l0aHViLmNvbS86X2F1dGhUb2tlbicsICcke0dJVEhVQl9UT0tFTn0nKTtcbiAgICAgIGFwcC5ucG1yYy5hZGRDb25maWcoJy8vbnBtLnBrZy5naXRodWIuY29tLzphbHdheXMtYXV0aCcsICd0cnVlJyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGpvYnMgZm9yIHN5bnRoZXNpemluZywgYXNzZXQgdXBsb2FkaW5nLCBhbmQgZGVwbG95bWVudC5cbiAgICB0aGlzLmNyZWF0ZVN5bnRoKCk7XG5cbiAgICBpZiAob3B0aW9ucy51c2VHaXRodWJFbnZpcm9ubWVudHNGb3JBc3NldFVwbG9hZCkge1xuICAgICAgZm9yIChjb25zdCBzdGFnZSBvZiBvcHRpb25zLnN0YWdlcykge1xuICAgICAgICB0aGlzLmNyZWF0ZUFzc2V0VXBsb2FkKHN0YWdlLm5hbWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNyZWF0ZUFzc2V0VXBsb2FkKCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBvcHRpb25zLnN0YWdlcykge1xuICAgICAgdGhpcy5jcmVhdGVEZXBsb3ltZW50KHN0YWdlLCBvcHRpb25zLnVzZUdpdGh1YkVudmlyb25tZW50c0ZvckFzc2V0VXBsb2FkID8/IGZhbHNlKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiAob3B0aW9ucy5pbmRlcGVuZGVudFN0YWdlcyA/PyBbXSkpIHtcbiAgICAgIHRoaXMuY3JlYXRlSW5kZXBlbmRlbnREZXBsb3ltZW50KHN0YWdlKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgZmVhdHVyZSB3b3JrZmxvd3MgaWYgZmVhdHVyZSBzdGFnZXMgYXJlIGNvbmZpZ3VyZWRcbiAgICBpZiAob3B0aW9ucy5mZWF0dXJlU3RhZ2VzKSB7XG4gICAgICB0aGlzLmNyZWF0ZUZlYXR1cmVXb3JrZmxvd3MoKTtcbiAgICB9XG4gIH1cblxuICAvKiogdGhlIHR5cGUgb2YgZW5naW5lIHRoaXMgaW1wbGVtZW50YXRpb24gb2YgQ0RLUGlwZWxpbmUgaXMgZm9yICovXG4gIHB1YmxpYyBlbmdpbmVUeXBlKCk6IFBpcGVsaW5lRW5naW5lIHtcbiAgICByZXR1cm4gUGlwZWxpbmVFbmdpbmUuR0lUSFVCO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgZmVhdHVyZSBicmFuY2ggd29ya2Zsb3dzIGZvciBkZXBsb3lpbmcgYW5kIGRlc3Ryb3lpbmcgZmVhdHVyZSBlbnZpcm9ubWVudHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlRmVhdHVyZVdvcmtmbG93cygpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZUZlYXR1cmVEZXBsb3lXb3JrZmxvdygpO1xuICAgIHRoaXMuY3JlYXRlRmVhdHVyZURlc3Ryb3lXb3JrZmxvdygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB3b3JrZmxvdyBmb3IgZGVwbG95aW5nIGZlYXR1cmUgYnJhbmNoZXMgd2hlbiBQUnMgYXJlIGxhYmVsZWQgd2l0aCAnZmVhdHVyZS1kZXBsb3ltZW50Jy5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRmVhdHVyZURlcGxveVdvcmtmbG93KCk6IHZvaWQge1xuICAgIGNvbnN0IHdvcmtmbG93ID0gdGhpcy5hcHAuZ2l0aHViIS5hZGRXb3JrZmxvdygnZGVwbG95LWZlYXR1cmUnKTtcblxuICAgIHdvcmtmbG93Lm9uKHtcbiAgICAgIHB1bGxSZXF1ZXN0VGFyZ2V0OiB7XG4gICAgICAgIHR5cGVzOiBbJ3N5bmNocm9uaXplJywgJ2xhYmVsZWQnLCAnb3BlbmVkJywgJ3Jlb3BlbmVkJ10sXG4gICAgICB9LFxuICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge30sXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdGVwcyA9IFtcbiAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICB0aGlzLnByb3ZpZGVTeW50aFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZURlcGxveVN0ZXAoeyBuYW1lOiAnZmVhdHVyZScsIGVudjogdGhpcy5iYXNlT3B0aW9ucy5mZWF0dXJlU3RhZ2VzIS5lbnYgfSksXG4gICAgICBuZXcgVXBsb2FkQXJ0aWZhY3RTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgICBuYW1lOiAnY2RrLW91dHB1dHMtZmVhdHVyZScsXG4gICAgICAgIHBhdGg6ICdjZGstb3V0cHV0cy1mZWF0dXJlLmpzb24nLFxuICAgICAgfSksXG4gICAgXS5tYXAocyA9PiBzLnRvR2l0aHViKCkpO1xuXG4gICAgd29ya2Zsb3cuYWRkSm9iKCdzeW50aC1hbmQtZGVwbG95Jywge1xuICAgICAgbmFtZTogJ1N5bnRoIGFuZCBkZXBsb3kgQ0RLIGFwcGxpY2F0aW9uIHRvIGZlYXR1cmUgc3RhZ2UnLFxuICAgICAgaWY6IFwiY29udGFpbnMoam9pbihnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0LmxhYmVscy4qLm5hbWUsICcsJyksICdmZWF0dXJlLWRlcGxveW1lbnQnKVwiLFxuICAgICAgbmVlZHM6IFtdLFxuICAgICAgcnVuc09uOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncyA/PyBERUZBVUxUX1JVTk5FUl9UQUdTLFxuICAgICAgcGVybWlzc2lvbnM6IG1lcmdlSm9iUGVybWlzc2lvbnMoe1xuICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICBpZFRva2VuOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgfSwgLi4uKHN0ZXBzLmZsYXRNYXAocyA9PiBzLnBlcm1pc3Npb25zKS5maWx0ZXIocCA9PiBwICE9IHVuZGVmaW5lZCkgYXMgSm9iUGVybWlzc2lvbnNbXSkpLFxuICAgICAgY29uY3VycmVuY3k6IHtcbiAgICAgICAgJ2dyb3VwJzogJ2RlcGxveS1mZWF0dXJlLSR7eyBnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0Lm51bWJlciB9fScsXG4gICAgICAgICdjYW5jZWwtaW4tcHJvZ3Jlc3MnOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgQlJBTkNIOiAnJHt7IGdpdGh1Yi5oZWFkX3JlZiB9fScsXG4gICAgICAgIC4uLnN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICB9LFxuICAgICAgdG9vbHM6IHtcbiAgICAgICAgbm9kZToge1xuICAgICAgICAgIHZlcnNpb246IHRoaXMubWluTm9kZVZlcnNpb24gPz8gJzIwJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NoZWNrb3V0JyxcbiAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9jaGVja291dEB2NScsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnN0ZXBzLmZsYXRNYXAocyA9PiBzLnN0ZXBzKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHdvcmtmbG93IGZvciBkZXN0cm95aW5nIGZlYXR1cmUgYnJhbmNoZXMgd2hlbiBQUnMgYXJlIGNsb3NlZCBvciB1bmxhYmVsZWQuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUZlYXR1cmVEZXN0cm95V29ya2Zsb3coKTogdm9pZCB7XG4gICAgY29uc3Qgd29ya2Zsb3cgPSB0aGlzLmFwcC5naXRodWIhLmFkZFdvcmtmbG93KCdkZXN0cm95LWZlYXR1cmUnKTtcblxuICAgIHdvcmtmbG93Lm9uKHtcbiAgICAgIHB1bGxSZXF1ZXN0VGFyZ2V0OiB7XG4gICAgICAgIHR5cGVzOiBbJ2Nsb3NlZCcsICd1bmxhYmVsZWQnXSxcbiAgICAgIH0sXG4gICAgICB3b3JrZmxvd0Rpc3BhdGNoOiB7fSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0ZXBzID0gW1xuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZVN5bnRoU3RlcCgpLFxuICAgICAgbmV3IEF3c0Fzc3VtZVJvbGVTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgICByb2xlQXJuOiB0aGlzLmJhc2VPcHRpb25zLmlhbVJvbGVBcm5zPy5kZXBsb3ltZW50Py5mZWF0dXJlID8/IHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnM/LmRlZmF1bHQhLFxuICAgICAgICByZWdpb246IHRoaXMuYmFzZU9wdGlvbnMuZmVhdHVyZVN0YWdlcyEuZW52LnJlZ2lvbixcbiAgICAgICAganVtcFJvbGVBcm46IHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnMuanVtcD8uZmVhdHVyZSxcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb2plblNjcmlwdFN0ZXAodGhpcy5wcm9qZWN0LCAnZGVzdHJveTpmZWF0dXJlJyksXG4gICAgXS5tYXAocyA9PiBzLnRvR2l0aHViKCkpO1xuXG4gICAgd29ya2Zsb3cuYWRkSm9iKCdkZXN0cm95LWZlYXR1cmUnLCB7XG4gICAgICBuYW1lOiAnRGVzdHJveSBDREsgZmVhdHVyZSBzdGFnZScsXG4gICAgICBpZjogXCJnaXRodWIuZXZlbnQuYWN0aW9uID09ICdjbG9zZWQnIHx8IChnaXRodWIuZXZlbnQuYWN0aW9uID09ICd1bmxhYmVsZWQnICYmIGdpdGh1Yi5ldmVudC5sYWJlbC5uYW1lID09ICdmZWF0dXJlLWRlcGxveW1lbnQnKVwiLFxuICAgICAgbmVlZHM6IFtdLFxuICAgICAgcnVuc09uOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncyA/PyBERUZBVUxUX1JVTk5FUl9UQUdTLFxuICAgICAgcGVybWlzc2lvbnM6IG1lcmdlSm9iUGVybWlzc2lvbnMoe1xuICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICBpZFRva2VuOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgfSwgLi4uKHN0ZXBzLmZsYXRNYXAocyA9PiBzLnBlcm1pc3Npb25zKS5maWx0ZXIocCA9PiBwICE9IHVuZGVmaW5lZCkgYXMgSm9iUGVybWlzc2lvbnNbXSkpLFxuICAgICAgY29uY3VycmVuY3k6IHtcbiAgICAgICAgJ2dyb3VwJzogJ2Rlc3Ryb3ktZmVhdHVyZS0ke3sgZ2l0aHViLmV2ZW50LnB1bGxfcmVxdWVzdC5udW1iZXIgfX0nLFxuICAgICAgICAnY2FuY2VsLWluLXByb2dyZXNzJzogZmFsc2UsXG4gICAgICB9LFxuICAgICAgZW52OiB7XG4gICAgICAgIENJOiAndHJ1ZScsXG4gICAgICAgIEJSQU5DSDogJyR7eyBnaXRodWIuaGVhZF9yZWYgfX0nLFxuICAgICAgICAuLi5zdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICAgIHRvb2xzOiB7XG4gICAgICAgIG5vZGU6IHtcbiAgICAgICAgICB2ZXJzaW9uOiB0aGlzLm1pbk5vZGVWZXJzaW9uID8/ICcyMCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjUnLFxuICAgICAgICB9LFxuICAgICAgICAuLi5zdGVwcy5mbGF0TWFwKHMgPT4gcy5zdGVwcyksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzeW50aGVzaXMgam9iIGZvciB0aGUgcGlwZWxpbmUgdXNpbmcgR2l0SHViIEFjdGlvbnMuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVN5bnRoKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXBzOiBQaXBlbGluZVN0ZXBbXSA9IFtdO1xuICAgIHN0ZXBzLnB1c2godGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSk7XG4gICAgc3RlcHMucHVzaCh0aGlzLnByb3ZpZGVTeW50aFN0ZXAoKSk7XG5cbiAgICBzdGVwcy5wdXNoKG5ldyBVcGxvYWRBcnRpZmFjdFN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICBuYW1lOiAnY2xvdWQtYXNzZW1ibHknLFxuICAgICAgcGF0aDogYCR7dGhpcy5hcHAuY2RrQ29uZmlnLmNka291dH0vYCxcbiAgICB9KSk7XG5cbiAgICBjb25zdCBnaXRodWJTdGVwcyA9IHN0ZXBzLm1hcChzID0+IHMudG9HaXRodWIoKSk7XG5cbiAgICB0aGlzLmRlcGxveW1lbnRXb3JrZmxvdy5hZGRKb2IoJ3N5bnRoJywge1xuICAgICAgbmFtZTogJ1N5bnRoIENESyBhcHBsaWNhdGlvbicsXG4gICAgICBydW5zT246IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzID8/IERFRkFVTFRfUlVOTkVSX1RBR1MsXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgLi4uZ2l0aHViU3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgICBuZWVkczogWy4uLmdpdGh1YlN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKV0sXG4gICAgICBwZXJtaXNzaW9uczogbWVyZ2VKb2JQZXJtaXNzaW9ucyh7XG4gICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICB9LCAuLi4oZ2l0aHViU3RlcHMuZmxhdE1hcChzID0+IHMucGVybWlzc2lvbnMpLmZpbHRlcihwID0+IHAgIT0gdW5kZWZpbmVkKSBhcyBKb2JQZXJtaXNzaW9uc1tdKSksXG4gICAgICB0b29sczoge1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgdmVyc2lvbjogdGhpcy5taW5Ob2RlVmVyc2lvbiA/PyAnMjAnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY1JyxcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAnZmV0Y2gtZGVwdGgnOiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC4uLmdpdGh1YlN0ZXBzLmZsYXRNYXAocyA9PiBzLnN0ZXBzKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGpvYiB0byB1cGxvYWQgYXNzZXRzIHRvIEFXUyBhcyBwYXJ0IG9mIHRoZSBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVBc3NldFVwbG9hZChzdGFnZU5hbWU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzdGVwcyA9IFtcbiAgICAgIG5ldyBTaW1wbGVDb21tYW5kU3RlcCh0aGlzLnByb2plY3QsIFsnZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUgXCJnaXRodWItYWN0aW9uc1wiICYmIGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5lbWFpbCBcImdpdGh1Yi1hY3Rpb25zQGdpdGh1Yi5jb21cIiddKSxcbiAgICAgIG5ldyBEb3dubG9hZEFydGlmYWN0U3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgbmFtZTogJ2Nsb3VkLWFzc2VtYmx5JyxcbiAgICAgICAgcGF0aDogYCR7dGhpcy5hcHAuY2RrQ29uZmlnLmNka291dH0vYCxcbiAgICAgIH0pLFxuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZUFzc2V0VXBsb2FkU3RlcChzdGFnZU5hbWUpLFxuICAgIF07XG5cbiAgICBpZiAodGhpcy5uZWVkc1ZlcnNpb25lZEFydGlmYWN0cykge1xuICAgICAgc3RlcHMucHVzaCh0aGlzLnByb3ZpZGVBc3NlbWJseVVwbG9hZFN0ZXAoKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZ2hTdGVwcyA9IHN0ZXBzLm1hcChzID0+IHMudG9HaXRodWIoKSk7XG5cbiAgICB0aGlzLmRlcGxveW1lbnRXb3JrZmxvdy5hZGRKb2IoYGFzc2V0VXBsb2FkJHtzdGFnZU5hbWUgPyBgLSR7c3RhZ2VOYW1lfWAgOiAnJ31gLCB7XG4gICAgICBuYW1lOiBgUHVibGlzaCBhc3NldHMgdG8gQVdTJHtzdGFnZU5hbWUgPyBgIGZvciBzdGFnZSAke3N0YWdlTmFtZX1gIDogJyd9YCxcbiAgICAgIG5lZWRzOiBbJ3N5bnRoJywgLi4uZ2hTdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyldLFxuICAgICAgcnVuc09uOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncyA/PyBERUZBVUxUX1JVTk5FUl9UQUdTLFxuICAgICAgLi4uKHRoaXMub3B0aW9ucy51c2VHaXRodWJFbnZpcm9ubWVudHNGb3JBc3NldFVwbG9hZCAmJiBzdGFnZU5hbWUgJiYgeyBlbnZpcm9ubWVudDogc3RhZ2VOYW1lIH0pLFxuICAgICAgZW52OiB7XG4gICAgICAgIENJOiAndHJ1ZScsXG4gICAgICAgIC4uLmdoU3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgICBwZXJtaXNzaW9uczogbWVyZ2VKb2JQZXJtaXNzaW9ucyh7XG4gICAgICAgIGlkVG9rZW46IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgIGNvbnRlbnRzOiB0aGlzLm5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzID8gSm9iUGVybWlzc2lvbi5XUklURSA6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgLi4udGhpcy51c2VHaXRodWJQYWNrYWdlcyAmJiB7XG4gICAgICAgICAgcGFja2FnZXM6IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgIH0sXG4gICAgICB9LCAuLi4oZ2hTdGVwcy5mbGF0TWFwKHMgPT4gcy5wZXJtaXNzaW9ucykuZmlsdGVyKHAgPT4gcCAhPSB1bmRlZmluZWQpIGFzIEpvYlBlcm1pc3Npb25zW10pKSxcbiAgICAgIHRvb2xzOiB7XG4gICAgICAgIG5vZGU6IHtcbiAgICAgICAgICB2ZXJzaW9uOiB0aGlzLm1pbk5vZGVWZXJzaW9uID8/ICcyMCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjUnLFxuICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICdmZXRjaC1kZXB0aCc6IDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uZ2hTdGVwcy5mbGF0TWFwKHMgPT4gcy5zdGVwcyksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBqb2IgdG8gZGVwbG95IHRoZSBDREsgYXBwbGljYXRpb24gdG8gQVdTLlxuICAgKiBAcGFyYW0gc3RhZ2UgLSBUaGUgZGVwbG95bWVudCBzdGFnZSB0byBjcmVhdGUuXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlRGVwbG95bWVudChzdGFnZTogRGVwbG95bWVudFN0YWdlLCB1c2VHaXRodWJFbnZpcm9ubWVudHNGb3JBc3NldFVwbG9hZD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoc3RhZ2UubWFudWFsQXBwcm92YWwgPT09IHRydWUpIHtcbiAgICAgIGNvbnN0IHN0ZXBzID0gW1xuICAgICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgICBuZXcgU2ltcGxlQ29tbWFuZFN0ZXAodGhpcy5wcm9qZWN0LCB0aGlzLnJlbmRlckluc3RhbGxQYWNrYWdlQ29tbWFuZHMoYCR7dGhpcy5iYXNlT3B0aW9ucy5wa2dOYW1lc3BhY2V9LyR7dGhpcy5hcHAubmFtZX1AXFwke3tnaXRodWIuZXZlbnQuaW5wdXRzLnZlcnNpb259fWApKSxcbiAgICAgICAgbmV3IFNpbXBsZUNvbW1hbmRTdGVwKHRoaXMucHJvamVjdCwgW2BtdiAuL25vZGVfbW9kdWxlcy8ke3RoaXMuYmFzZU9wdGlvbnMucGtnTmFtZXNwYWNlfS8ke3RoaXMuYXBwLm5hbWV9ICR7dGhpcy5hcHAuY2RrQ29uZmlnLmNka291dH1gXSksXG4gICAgICAgIHRoaXMucHJvdmlkZURlcGxveVN0ZXAoc3RhZ2UpLFxuICAgICAgICBuZXcgVXBsb2FkQXJ0aWZhY3RTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgICAgIG5hbWU6IGBjZGstb3V0cHV0cy0ke3N0YWdlLm5hbWV9YCxcbiAgICAgICAgICBwYXRoOiBgY2RrLW91dHB1dHMtJHtzdGFnZS5uYW1lfS5qc29uYCxcbiAgICAgICAgfSksXG4gICAgICBdLm1hcChzID0+IHMudG9HaXRodWIoKSk7XG5cbiAgICAgIC8vIENyZWF0ZSBuZXcgd29ya2Zsb3cgZm9yIGRlcGxveW1lbnRcbiAgICAgIGNvbnN0IHN0YWdlV29ya2Zsb3cgPSB0aGlzLmFwcC5naXRodWIhLmFkZFdvcmtmbG93KGByZWxlYXNlLSR7c3RhZ2UubmFtZX1gKTtcbiAgICAgIHN0YWdlV29ya2Zsb3cub24oe1xuICAgICAgICB3b3JrZmxvd0Rpc3BhdGNoOiB7XG4gICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICB2ZXJzaW9uOiB7XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUGFja2FnZSB2ZXJzaW9uJyxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHN0YWdlV29ya2Zsb3cuYWRkSm9iKCdkZXBsb3knLCB7XG4gICAgICAgIG5hbWU6IGBSZWxlYXNlIHN0YWdlICR7c3RhZ2UubmFtZX0gdG8gQVdTYCxcbiAgICAgICAgbmVlZHM6IHN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKSxcbiAgICAgICAgcnVuc09uOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncyA/PyBERUZBVUxUX1JVTk5FUl9UQUdTLFxuICAgICAgICAuLi50aGlzLm9wdGlvbnMudXNlR2l0aHViRW52aXJvbm1lbnRzICYmIHtcbiAgICAgICAgICBlbnZpcm9ubWVudDogc3RhZ2UubmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29uY3VycmVuY3k6IHtcbiAgICAgICAgICAnZ3JvdXAnOiBgZGVwbG95LSR7c3RhZ2UubmFtZX1gLFxuICAgICAgICAgICdjYW5jZWwtaW4tcHJvZ3Jlc3MnOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgICAuLi5zdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uczogbWVyZ2VKb2JQZXJtaXNzaW9ucyh7XG4gICAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgfSwgLi4uKHN0ZXBzLmZsYXRNYXAocyA9PiBzLnBlcm1pc3Npb25zKS5maWx0ZXIocCA9PiBwICE9IHVuZGVmaW5lZCkgYXMgSm9iUGVybWlzc2lvbnNbXSkpLFxuICAgICAgICB0b29sczoge1xuICAgICAgICAgIG5vZGU6IHtcbiAgICAgICAgICAgIHZlcnNpb246IHRoaXMubWluTm9kZVZlcnNpb24gPz8gJzIwJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzdGVwczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9jaGVja291dEB2NScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAuLi5zdGVwcy5mbGF0TWFwKHMgPT4gcy5zdGVwcyksXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNyZWF0ZURlcGxveUpvYih0aGlzLmRlcGxveW1lbnRXb3JrZmxvdywgWy4uLih0aGlzLmRlcGxveW1lbnRTdGFnZXMubGVuZ3RoID4gMCA/IFtgZGVwbG95LSR7dGhpcy5kZXBsb3ltZW50U3RhZ2VzLmF0KC0xKSF9YF0gOiBbXSldLCBzdGFnZSwgdXNlR2l0aHViRW52aXJvbm1lbnRzRm9yQXNzZXRVcGxvYWQpO1xuICAgICAgdGhpcy5kZXBsb3ltZW50U3RhZ2VzLnB1c2goc3RhZ2UubmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEZXBsb3lKb2IoXG4gICAgd29ya2Zsb3c6IEdpdGh1YldvcmtmbG93LFxuICAgIGpvYkRlcGVuZGVuY2llczogc3RyaW5nW10sXG4gICAgc3RhZ2U6IE5hbWVkU3RhZ2VPcHRpb25zLFxuICAgIHVzZUdpdGh1YkVudmlyb25tZW50c0ZvckFzc2V0VXBsb2FkPzogYm9vbGVhbixcbiAgKSB7XG4gICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICBuZXcgRG93bmxvYWRBcnRpZmFjdFN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6ICdjbG91ZC1hc3NlbWJseScsXG4gICAgICAgIHBhdGg6IGAke3RoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXR9L2AsXG4gICAgICB9KSxcbiAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICB0aGlzLnByb3ZpZGVEZXBsb3lTdGVwKHN0YWdlKSxcbiAgICAgIG5ldyBVcGxvYWRBcnRpZmFjdFN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6IGBjZGstb3V0cHV0cy0ke3N0YWdlLm5hbWV9YCxcbiAgICAgICAgcGF0aDogYGNkay1vdXRwdXRzLSR7c3RhZ2UubmFtZX0uanNvbmAsXG4gICAgICB9KSxcbiAgICBdLm1hcChzID0+IHMudG9HaXRodWIoKSk7XG5cbiAgICAvLyBBZGQgZGVwbG95bWVudCB0byBDSS9DRCB3b3JrZmxvd1xuICAgIHdvcmtmbG93LmFkZEpvYihgZGVwbG95LSR7c3RhZ2UubmFtZX1gLCB7XG4gICAgICBuYW1lOiBgRGVwbG95IHN0YWdlICR7c3RhZ2UubmFtZX0gdG8gQVdTYCxcbiAgICAgIC4uLnRoaXMub3B0aW9ucy51c2VHaXRodWJFbnZpcm9ubWVudHMgJiYge1xuICAgICAgICBlbnZpcm9ubWVudDogc3RhZ2UubmFtZSxcbiAgICAgIH0sXG4gICAgICBjb25jdXJyZW5jeToge1xuICAgICAgICAnZ3JvdXAnOiBgZGVwbG95LSR7c3RhZ2UubmFtZX1gLFxuICAgICAgICAnY2FuY2VsLWluLXByb2dyZXNzJzogZmFsc2UsXG4gICAgICB9LFxuICAgICAgbmVlZHM6IFtgYXNzZXRVcGxvYWQke3VzZUdpdGh1YkVudmlyb25tZW50c0ZvckFzc2V0VXBsb2FkID8gYC0ke3N0YWdlLm5hbWV9YCA6ICcnfWAsIC4uLnN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKSwgLi4uam9iRGVwZW5kZW5jaWVzXSxcbiAgICAgIHJ1bnNPbjogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3MgPz8gREVGQVVMVF9SVU5ORVJfVEFHUyxcbiAgICAgIGVudjoge1xuICAgICAgICBDSTogJ3RydWUnLFxuICAgICAgICAuLi5zdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICAgIHBlcm1pc3Npb25zOiBtZXJnZUpvYlBlcm1pc3Npb25zKHtcbiAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgIH0sIC4uLihzdGVwcy5mbGF0TWFwKHMgPT4gcy5wZXJtaXNzaW9ucykuZmlsdGVyKHAgPT4gcCAhPSB1bmRlZmluZWQpIGFzIEpvYlBlcm1pc3Npb25zW10pKSxcbiAgICAgIHRvb2xzOiB7XG4gICAgICAgIG5vZGU6IHtcbiAgICAgICAgICB2ZXJzaW9uOiB0aGlzLm1pbk5vZGVWZXJzaW9uID8/ICcyMCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjUnLFxuICAgICAgICB9LFxuICAgICAgICAuLi5zdGVwcy5mbGF0TWFwKHMgPT4gcy5zdGVwcyksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBqb2IgdG8gZGVwbG95IHRoZSBDREsgYXBwbGljYXRpb24gdG8gQVdTLlxuICAgKiBAcGFyYW0gc3RhZ2UgLSBUaGUgaW5kZXBlbmRlbnQgc3RhZ2UgdG8gY3JlYXRlLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZUluZGVwZW5kZW50RGVwbG95bWVudChzdGFnZTogSW5kZXBlbmRlbnRTdGFnZSk6IHZvaWQge1xuICAgIGlmIChzdGFnZS5kZXBsb3lPblB1c2ggfHwgdGhpcy5vcHRpb25zLnVzZUdpdGh1YkVudmlyb25tZW50cykge1xuICAgICAgdGhpcy5jcmVhdGVEZXBsb3lKb2IodGhpcy5kZXBsb3ltZW50V29ya2Zsb3csIFtdLCBzdGFnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHN0ZXBzID0gW1xuICAgICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgICB0aGlzLnByb3ZpZGVTeW50aFN0ZXAoKSxcbiAgICAgICAgLi4uKChzdGFnZS5kaWZmVHlwZSAhPT0gQ2RrRGlmZlR5cGUuTk9ORSkgPyBbdGhpcy5wcm92aWRlRGlmZlN0ZXAoc3RhZ2UsIHN0YWdlLmRpZmZUeXBlID09PSBDZGtEaWZmVHlwZS5GQVNUKV0gOiBbXSksXG4gICAgICAgIHRoaXMucHJvdmlkZURlcGxveVN0ZXAoc3RhZ2UpLFxuXG4gICAgICAgIG5ldyBVcGxvYWRBcnRpZmFjdFN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgICAgbmFtZTogYGNkay1vdXRwdXRzLSR7c3RhZ2UubmFtZX1gLFxuICAgICAgICAgIHBhdGg6IGBjZGstb3V0cHV0cy0ke3N0YWdlLm5hbWV9Lmpzb25gLFxuICAgICAgICB9KSxcbiAgICAgIF0ubWFwKHMgPT4gcy50b0dpdGh1YigpKTtcblxuICAgICAgLy8gQ3JlYXRlIG5ldyB3b3JrZmxvdyBmb3IgZGVwbG95bWVudFxuICAgICAgY29uc3Qgc3RhZ2VXb3JrZmxvdyA9IHRoaXMuYXBwLmdpdGh1YiEuYWRkV29ya2Zsb3coYGRlcGxveS0ke3N0YWdlLm5hbWV9YCk7XG4gICAgICBzdGFnZVdvcmtmbG93Lm9uKHtcbiAgICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge30sXG4gICAgICB9KTtcbiAgICAgIHN0YWdlV29ya2Zsb3cuYWRkSm9iKCdkZXBsb3knLCB7XG4gICAgICAgIG5hbWU6IGBSZWxlYXNlIHN0YWdlICR7c3RhZ2UubmFtZX0gdG8gQVdTYCxcbiAgICAgICAgbmVlZHM6IHN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKSxcbiAgICAgICAgcnVuc09uOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncyA/PyBERUZBVUxUX1JVTk5FUl9UQUdTLFxuICAgICAgICBjb25jdXJyZW5jeToge1xuICAgICAgICAgICdncm91cCc6IGBkZXBsb3ktJHtzdGFnZS5uYW1lfWAsXG4gICAgICAgICAgJ2NhbmNlbC1pbi1wcm9ncmVzcyc6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBDSTogJ3RydWUnLFxuICAgICAgICAgIC4uLnN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIHBlcm1pc3Npb25zOiBtZXJnZUpvYlBlcm1pc3Npb25zKHtcbiAgICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICB9LCAuLi4oc3RlcHMuZmxhdE1hcChzID0+IHMucGVybWlzc2lvbnMpLmZpbHRlcihwID0+IHAgIT0gdW5kZWZpbmVkKSBhcyBKb2JQZXJtaXNzaW9uc1tdKSksXG4gICAgICAgIHRvb2xzOiB7XG4gICAgICAgICAgbm9kZToge1xuICAgICAgICAgICAgdmVyc2lvbjogdGhpcy5taW5Ob2RlVmVyc2lvbiA/PyAnMjAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHN0ZXBzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0NoZWNrb3V0JyxcbiAgICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY1JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLnN0ZXBzLmZsYXRNYXAocyA9PiBzLnN0ZXBzKSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgfVxuICB9XG59XG4iXX0=
456
+ GithubCDKPipeline[_a] = { fqn: "projen-pipelines.GithubCDKPipeline", version: "0.3.8" };
457
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9naXRodWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSx1RUFBa0Y7QUFDbEYsaUNBQTRIO0FBQzVILHNDQUEyQztBQUMzQyx3Q0FBaUQ7QUFDakQsb0NBQWdHO0FBQ2hHLDREQUFtRjtBQUNuRixzRUFBcUU7QUFDckUsb0RBQThEO0FBRTlELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQXlDOUM7O0dBRUc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLGtCQUFXO0lBYWhEOzs7O09BSUc7SUFDSCxZQUFZLEdBQStCLEVBQVUsT0FBaUM7UUFDcEYsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNULEdBQUcsT0FBTztZQUNWLEdBQUcsT0FBTyxDQUFDLDRCQUE0QixJQUFJO2dCQUN6QyxlQUFlLEVBQUU7b0JBQ2YsSUFBSSxvQ0FBdUIsQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7b0JBQ2xELEdBQUcsT0FBTyxDQUFDLGVBQWUsSUFBSSxFQUFFO2lCQUNqQzthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBVGdELFlBQU8sR0FBUCxPQUFPLENBQTBCO1FBWHRGLGtEQUFrRDtRQUMxQyxxQkFBZ0IsR0FBYSxFQUFFLENBQUM7UUFxQnRDLGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxFQUFFO2dCQUNKLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7YUFDNUI7WUFDRCxnQkFBZ0IsRUFBRSxFQUFFO1NBQ3JCLENBQUMsQ0FBQztRQUVILGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsdUJBQXVC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QUFDLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBc0IsQ0FBQztnQkFDMUYsS0FBSyxFQUFFO29CQUNMLElBQUksRUFBRTt3QkFDSixPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJO3FCQUNyQztpQkFDRjtnQkFDRCxLQUFLLEVBQUU7b0JBQ0w7d0JBQ0UsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLElBQUksRUFBRSxxQkFBcUI7cUJBQzVCO29CQUNELEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7aUJBQy9CO2FBQ0YsQ0FBQyxDQUFDO1FBRUwsQ0FBQztJQUNILENBQUM7O0FBOWRILDhDQStkQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c2NkayB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBHaXRodWJXb3JrZmxvdyB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViJztcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24sIEpvYlBlcm1pc3Npb25zIH0gZnJvbSAncHJvamVuL2xpYi9naXRodWIvd29ya2Zsb3dzLW1vZGVsJztcbmltcG9ydCB7IENka0RpZmZUeXBlLCBDREtQaXBlbGluZSwgQ0RLUGlwZWxpbmVPcHRpb25zLCBEZXBsb3ltZW50U3RhZ2UsIEluZGVwZW5kZW50U3RhZ2UsIE5hbWVkU3RhZ2VPcHRpb25zIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IFBpcGVsaW5lRW5naW5lIH0gZnJvbSAnLi4vZW5naW5lJztcbmltcG9ydCB7IG1lcmdlSm9iUGVybWlzc2lvbnMgfSBmcm9tICcuLi9lbmdpbmVzJztcbmltcG9ydCB7IEF3c0Fzc3VtZVJvbGVTdGVwLCBQaXBlbGluZVN0ZXAsIFByb2plblNjcmlwdFN0ZXAsIFNpbXBsZUNvbW1hbmRTdGVwIH0gZnJvbSAnLi4vc3RlcHMnO1xuaW1wb3J0IHsgRG93bmxvYWRBcnRpZmFjdFN0ZXAsIFVwbG9hZEFydGlmYWN0U3RlcCB9IGZyb20gJy4uL3N0ZXBzL2FydGlmYWN0LXN0ZXBzJztcbmltcG9ydCB7IENka091dHB1dHNTdW1tYXJ5U3RlcCB9IGZyb20gJy4uL3N0ZXBzL2dpdGh1Yi1zdW1tYXJ5LnN0ZXAnO1xuaW1wb3J0IHsgR2l0aHViUGFja2FnZXNMb2dpblN0ZXAgfSBmcm9tICcuLi9zdGVwcy9yZWdpc3RyaWVzJztcblxuY29uc3QgREVGQVVMVF9SVU5ORVJfVEFHUyA9IFsndWJ1bnR1LWxhdGVzdCddO1xuXG5cbi8qKlxuICogRXh0ZW5zaW9uIG9mIHRoZSBiYXNlIENES1BpcGVsaW5lIG9wdGlvbnMgaW5jbHVkaW5nIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGZvciBHaXRIdWIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2l0aHViQ0RLUGlwZWxpbmVPcHRpb25zIGV4dGVuZHMgQ0RLUGlwZWxpbmVPcHRpb25zIHtcblxuICAvKipcbiAgICogcnVubmVyIHRhZ3MgdG8gdXNlIHRvIHNlbGVjdCBydW5uZXJzXG4gICAqXG4gICAqIEBkZWZhdWx0IFsndWJ1bnR1LWxhdGVzdCddXG4gICAqL1xuICByZWFkb25seSBydW5uZXJUYWdzPzogc3RyaW5nW107XG5cbiAgLyoqIHVzZSBHaXRIdWIgUGFja2FnZXMgdG8gc3RvcmUgdmVzaW9uZWQgYXJ0aWZhY3RzIG9mIGNsb3VkIGFzc2VtYmx5OyBhbHNvIG5lZWRlZCBmb3IgbWFudWFsIGFwcHJvdmFscyAqL1xuICByZWFkb25seSB1c2VHaXRodWJQYWNrYWdlc0ZvckFzc2VtYmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogd2hldGhlciB0byB1c2UgR2l0SHViIGVudmlyb25tZW50cyBmb3IgZGVwbG95bWVudCBzdGFnZXNcbiAgICpcbiAgICogSU5GTzogV2hlbiB1c2luZyBlbnZpcm9ubWVudHMgY29uc2lkZXIgcHJvdGVjdGlvbiBydWxlcyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBtYW51YWwgb3B0aW9uIG9mIHByb2plbi1waXBlbGluZXMgZm9yIHN0YWdlc1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlR2l0aHViRW52aXJvbm1lbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogd2hldGhlciB0byB1c2UgR2l0SHViIGVudmlyb25tZW50cyBmb3IgYXNzZXQgdXBsb2FkIHN0ZXBcbiAgICogQ3JlYXRlIHNlcGFyYXRlLCBwYXJhbGxlbCBqb2JzIGZvciBhc3NldCB1cGxvYWQgc2luY2UgR2l0SHViIEVudmlyb25tZW50c1xuICAgKiByZXF1aXJlIHVuaXF1ZSBlbnZpcm9ubWVudCBuYW1lcyBwZXIgam9iXG4gICAqXG4gICAqIFdBUk5JTkc6IHRoaXMgcGFyYW1ldGVyIHJlcXVpcmVzIHJlYnVpbGRpbmcgdGhlIGNvbnRhaW5lciBhc3NldHMgZm9yIGVhY2ggc3RhZ2UgYW5kIHRoZXkgd2lsbCBub3RcbiAgICogYmUgdGhlIFwic2FtZSBiaW5hcnlcIiwgc28gdGhlcmUgaXMgYSAoc21hbGwpIGNoYW5jZSB0aGF0IGl0IGNvdWxkIHByb2R1Y2UgZGlmZmVyZW50IGJpbmFyaWVzIHBlciBzdGFnZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlR2l0aHViRW52aXJvbm1lbnRzRm9yQXNzZXRVcGxvYWQ/OiBib29sZWFuO1xufVxuXG5cbi8qKlxuICogSW1wbGVtZW50cyBhIENESyBQaXBlbGluZSBjb25maWd1cmVkIHNwZWNpZmljYWxseSBmb3IgR2l0SHViIHdvcmtmbG93cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdpdGh1YkNES1BpcGVsaW5lIGV4dGVuZHMgQ0RLUGlwZWxpbmUge1xuXG4gIC8qKiBJbmRpY2F0ZXMgaWYgdmVyc2lvbmVkIGFydGlmYWN0cyBhcmUgbmVlZGVkIGJhc2VkIG9uIG1hbnVhbCBhcHByb3ZhbCByZXF1aXJlbWVudHMuICovXG4gIHB1YmxpYyByZWFkb25seSBuZWVkc1ZlcnNpb25lZEFydGlmYWN0czogYm9vbGVhbjtcblxuICAvKiogVGhlIEdpdEh1YiB3b3JrZmxvdyBhc3NvY2lhdGVkIHdpdGggdGhlIHBpcGVsaW5lLiAqL1xuICBwcml2YXRlIGRlcGxveW1lbnRXb3JrZmxvdzogR2l0aHViV29ya2Zsb3c7XG4gIC8qKiBMaXN0IG9mIGRlcGxveW1lbnQgc3RhZ2VzIGZvciB0aGUgcGlwZWxpbmUuICovXG4gIHByaXZhdGUgZGVwbG95bWVudFN0YWdlczogc3RyaW5nW10gPSBbXTtcblxuICBwcm90ZWN0ZWQgdXNlR2l0aHViUGFja2FnZXM6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBtaW5Ob2RlVmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEdpdGh1YkNES1BpcGVsaW5lIGluc3RhbmNlLlxuICAgKiBAcGFyYW0gYXBwIC0gVGhlIENESyBhcHAgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGlwZWxpbmUuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgcGlwZWxpbmUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhcHA6IGF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwLCBwcml2YXRlIG9wdGlvbnM6IEdpdGh1YkNES1BpcGVsaW5lT3B0aW9ucykge1xuICAgIHN1cGVyKGFwcCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnMudXNlR2l0aHViUGFja2FnZXNGb3JBc3NlbWJseSAmJiB7XG4gICAgICAgIHByZUluc3RhbGxTdGVwczogW1xuICAgICAgICAgIG5ldyBHaXRodWJQYWNrYWdlc0xvZ2luU3RlcChhcHAsIHsgd3JpdGU6IGZhbHNlIH0pLFxuICAgICAgICAgIC4uLm9wdGlvbnMucHJlSW5zdGFsbFN0ZXBzID8/IFtdLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIGRlcGxveW1lbnQgd29ya2Zsb3cgb24gR2l0SHViLlxuICAgIHRoaXMuZGVwbG95bWVudFdvcmtmbG93ID0gdGhpcy5hcHAuZ2l0aHViIS5hZGRXb3JrZmxvdygnZGVwbG95Jyk7XG4gICAgdGhpcy5kZXBsb3ltZW50V29ya2Zsb3cub24oe1xuICAgICAgcHVzaDoge1xuICAgICAgICBicmFuY2hlczogW3RoaXMuYnJhbmNoTmFtZV0sXG4gICAgICB9LFxuICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge30sXG4gICAgfSk7XG5cbiAgICAvLyBEZXRlcm1pbmUgaWYgdmVyc2lvbmVkIGFydGlmYWN0cyBhcmUgbmVjZXNzYXJ5LlxuICAgIHRoaXMubmVlZHNWZXJzaW9uZWRBcnRpZmFjdHMgPSBvcHRpb25zLnN0YWdlcy5maW5kKHMgPT4gcy5tYW51YWxBcHByb3ZhbCA9PT0gdHJ1ZSkgIT09IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5uZWVkc1ZlcnNpb25lZEFydGlmYWN0cyAmJiAhb3B0aW9ucy5wa2dOYW1lc3BhY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncGtnTmFtZXNwYWNlIGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgdmVyc2lvbmVkIGFydGlmYWN0cyAoZS5nLiBtYW51YWwgYXBwcm92YWxzKScpO1xuICAgIH1cbiAgICB0aGlzLnVzZUdpdGh1YlBhY2thZ2VzID0gdGhpcy5uZWVkc1ZlcnNpb25lZEFydGlmYWN0cyAmJiAob3B0aW9ucy51c2VHaXRodWJQYWNrYWdlc0ZvckFzc2VtYmx5ID8/IGZhbHNlKTtcbiAgICB0aGlzLm1pbk5vZGVWZXJzaW9uID0gYXBwLm1pbk5vZGVWZXJzaW9uO1xuXG4gICAgaWYgKHRoaXMudXNlR2l0aHViUGFja2FnZXMpIHtcbiAgICAgIGFwcC5ucG1yYy5hZGRSZWdpc3RyeSgnaHR0cHM6Ly9ucG0ucGtnLmdpdGh1Yi5jb20nLCB0aGlzLmJhc2VPcHRpb25zLnBrZ05hbWVzcGFjZSk7XG4gICAgICBhcHAubnBtcmMuYWRkQ29uZmlnKCcvL25wbS5wa2cuZ2l0aHViLmNvbS86X2F1dGhUb2tlbicsICcke0dJVEhVQl9UT0tFTn0nKTtcbiAgICAgIGFwcC5ucG1yYy5hZGRDb25maWcoJy8vbnBtLnBrZy5naXRodWIuY29tLzphbHdheXMtYXV0aCcsICd0cnVlJyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGpvYnMgZm9yIHN5bnRoZXNpemluZywgYXNzZXQgdXBsb2FkaW5nLCBhbmQgZGVwbG95bWVudC5cbiAgICB0aGlzLmNyZWF0ZVN5bnRoKCk7XG5cbiAgICBpZiAob3B0aW9ucy51c2VHaXRodWJFbnZpcm9ubWVudHNGb3JBc3NldFVwbG9hZCkge1xuICAgICAgZm9yIChjb25zdCBzdGFnZSBvZiBvcHRpb25zLnN0YWdlcykge1xuICAgICAgICB0aGlzLmNyZWF0ZUFzc2V0VXBsb2FkKHN0YWdlLm5hbWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNyZWF0ZUFzc2V0VXBsb2FkKCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBvcHRpb25zLnN0YWdlcykge1xuICAgICAgdGhpcy5jcmVhdGVEZXBsb3ltZW50KHN0YWdlLCBvcHRpb25zLnVzZUdpdGh1YkVudmlyb25tZW50c0ZvckFzc2V0VXBsb2FkID8/IGZhbHNlKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiAob3B0aW9ucy5pbmRlcGVuZGVudFN0YWdlcyA/PyBbXSkpIHtcbiAgICAgIHRoaXMuY3JlYXRlSW5kZXBlbmRlbnREZXBsb3ltZW50KHN0YWdlKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgZmVhdHVyZSB3b3JrZmxvd3MgaWYgZmVhdHVyZSBzdGFnZXMgYXJlIGNvbmZpZ3VyZWRcbiAgICBpZiAob3B0aW9ucy5mZWF0dXJlU3RhZ2VzKSB7XG4gICAgICB0aGlzLmNyZWF0ZUZlYXR1cmVXb3JrZmxvd3MoKTtcbiAgICB9XG4gIH1cblxuICAvKiogdGhlIHR5cGUgb2YgZW5naW5lIHRoaXMgaW1wbGVtZW50YXRpb24gb2YgQ0RLUGlwZWxpbmUgaXMgZm9yICovXG4gIHB1YmxpYyBlbmdpbmVUeXBlKCk6IFBpcGVsaW5lRW5naW5lIHtcbiAgICByZXR1cm4gUGlwZWxpbmVFbmdpbmUuR0lUSFVCO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgZmVhdHVyZSBicmFuY2ggd29ya2Zsb3dzIGZvciBkZXBsb3lpbmcgYW5kIGRlc3Ryb3lpbmcgZmVhdHVyZSBlbnZpcm9ubWVudHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlRmVhdHVyZVdvcmtmbG93cygpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZUZlYXR1cmVEZXBsb3lXb3JrZmxvdygpO1xuICAgIHRoaXMuY3JlYXRlRmVhdHVyZURlc3Ryb3lXb3JrZmxvdygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB3b3JrZmxvdyBmb3IgZGVwbG95aW5nIGZlYXR1cmUgYnJhbmNoZXMgd2hlbiBQUnMgYXJlIGxhYmVsZWQgd2l0aCAnZmVhdHVyZS1kZXBsb3ltZW50Jy5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRmVhdHVyZURlcGxveVdvcmtmbG93KCk6IHZvaWQge1xuICAgIGNvbnN0IHdvcmtmbG93ID0gdGhpcy5hcHAuZ2l0aHViIS5hZGRXb3JrZmxvdygnZGVwbG95LWZlYXR1cmUnKTtcblxuICAgIHdvcmtmbG93Lm9uKHtcbiAgICAgIHB1bGxSZXF1ZXN0VGFyZ2V0OiB7XG4gICAgICAgIHR5cGVzOiBbJ3N5bmNocm9uaXplJywgJ2xhYmVsZWQnLCAnb3BlbmVkJywgJ3Jlb3BlbmVkJ10sXG4gICAgICB9LFxuICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge30sXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdGVwcyA9IFtcbiAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICB0aGlzLnByb3ZpZGVTeW50aFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZURlcGxveVN0ZXAoeyBuYW1lOiAnZmVhdHVyZScsIGVudjogdGhpcy5iYXNlT3B0aW9ucy5mZWF0dXJlU3RhZ2VzIS5lbnYgfSksXG4gICAgICBuZXcgQ2RrT3V0cHV0c1N1bW1hcnlTdGVwKHRoaXMucHJvamVjdCwgeyBzdGFnZU5hbWU6ICdmZWF0dXJlJyB9KSxcbiAgICAgIG5ldyBVcGxvYWRBcnRpZmFjdFN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6ICdjZGstb3V0cHV0cy1mZWF0dXJlJyxcbiAgICAgICAgcGF0aDogJ2Nkay1vdXRwdXRzLWZlYXR1cmUuanNvbicsXG4gICAgICB9KSxcbiAgICBdLm1hcChzID0+IHMudG9HaXRodWIoKSk7XG5cbiAgICB3b3JrZmxvdy5hZGRKb2IoJ3N5bnRoLWFuZC1kZXBsb3knLCB7XG4gICAgICBuYW1lOiAnU3ludGggYW5kIGRlcGxveSBDREsgYXBwbGljYXRpb24gdG8gZmVhdHVyZSBzdGFnZScsXG4gICAgICBpZjogXCJjb250YWlucyhqb2luKGdpdGh1Yi5ldmVudC5wdWxsX3JlcXVlc3QubGFiZWxzLioubmFtZSwgJywnKSwgJ2ZlYXR1cmUtZGVwbG95bWVudCcpXCIsXG4gICAgICBuZWVkczogW10sXG4gICAgICBydW5zT246IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzID8/IERFRkFVTFRfUlVOTkVSX1RBR1MsXG4gICAgICBwZXJtaXNzaW9uczogbWVyZ2VKb2JQZXJtaXNzaW9ucyh7XG4gICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgIGlkVG9rZW46IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICB9LCAuLi4oc3RlcHMuZmxhdE1hcChzID0+IHMucGVybWlzc2lvbnMpLmZpbHRlcihwID0+IHAgIT0gdW5kZWZpbmVkKSBhcyBKb2JQZXJtaXNzaW9uc1tdKSksXG4gICAgICBjb25jdXJyZW5jeToge1xuICAgICAgICAnZ3JvdXAnOiAnZGVwbG95LWZlYXR1cmUtJHt7IGdpdGh1Yi5ldmVudC5wdWxsX3JlcXVlc3QubnVtYmVyIH19JyxcbiAgICAgICAgJ2NhbmNlbC1pbi1wcm9ncmVzcyc6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGVudjoge1xuICAgICAgICBDSTogJ3RydWUnLFxuICAgICAgICBCUkFOQ0g6ICcke3sgZ2l0aHViLmhlYWRfcmVmIH19JyxcbiAgICAgICAgLi4uc3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgICB0b29sczoge1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgdmVyc2lvbjogdGhpcy5taW5Ob2RlVmVyc2lvbiA/PyAnMjAnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY1JyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uc3RlcHMuZmxhdE1hcChzID0+IHMuc3RlcHMpLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgd29ya2Zsb3cgZm9yIGRlc3Ryb3lpbmcgZmVhdHVyZSBicmFuY2hlcyB3aGVuIFBScyBhcmUgY2xvc2VkIG9yIHVubGFiZWxlZC5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRmVhdHVyZURlc3Ryb3lXb3JrZmxvdygpOiB2b2lkIHtcbiAgICBjb25zdCB3b3JrZmxvdyA9IHRoaXMuYXBwLmdpdGh1YiEuYWRkV29ya2Zsb3coJ2Rlc3Ryb3ktZmVhdHVyZScpO1xuXG4gICAgd29ya2Zsb3cub24oe1xuICAgICAgcHVsbFJlcXVlc3RUYXJnZXQ6IHtcbiAgICAgICAgdHlwZXM6IFsnY2xvc2VkJywgJ3VubGFiZWxlZCddLFxuICAgICAgfSxcbiAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHt9LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlU3ludGhTdGVwKCksXG4gICAgICBuZXcgQXdzQXNzdW1lUm9sZVN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIHJvbGVBcm46IHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnM/LmRlcGxveW1lbnQ/LmZlYXR1cmUgPz8gdGhpcy5iYXNlT3B0aW9ucy5pYW1Sb2xlQXJucz8uZGVmYXVsdCEsXG4gICAgICAgIHJlZ2lvbjogdGhpcy5iYXNlT3B0aW9ucy5mZWF0dXJlU3RhZ2VzIS5lbnYucmVnaW9uLFxuICAgICAgICBqdW1wUm9sZUFybjogdGhpcy5iYXNlT3B0aW9ucy5pYW1Sb2xlQXJucy5qdW1wPy5mZWF0dXJlLFxuICAgICAgfSksXG4gICAgICBuZXcgUHJvamVuU2NyaXB0U3RlcCh0aGlzLnByb2plY3QsICdkZXN0cm95OmZlYXR1cmUnKSxcbiAgICBdLm1hcChzID0+IHMudG9HaXRodWIoKSk7XG5cbiAgICB3b3JrZmxvdy5hZGRKb2IoJ2Rlc3Ryb3ktZmVhdHVyZScsIHtcbiAgICAgIG5hbWU6ICdEZXN0cm95IENESyBmZWF0dXJlIHN0YWdlJyxcbiAgICAgIGlmOiBcImdpdGh1Yi5ldmVudC5hY3Rpb24gPT0gJ2Nsb3NlZCcgfHwgKGdpdGh1Yi5ldmVudC5hY3Rpb24gPT0gJ3VubGFiZWxlZCcgJiYgZ2l0aHViLmV2ZW50LmxhYmVsLm5hbWUgPT0gJ2ZlYXR1cmUtZGVwbG95bWVudCcpXCIsXG4gICAgICBuZWVkczogW10sXG4gICAgICBydW5zT246IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzID8/IERFRkFVTFRfUlVOTkVSX1RBR1MsXG4gICAgICBwZXJtaXNzaW9uczogbWVyZ2VKb2JQZXJtaXNzaW9ucyh7XG4gICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgIGlkVG9rZW46IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICB9LCAuLi4oc3RlcHMuZmxhdE1hcChzID0+IHMucGVybWlzc2lvbnMpLmZpbHRlcihwID0+IHAgIT0gdW5kZWZpbmVkKSBhcyBKb2JQZXJtaXNzaW9uc1tdKSksXG4gICAgICBjb25jdXJyZW5jeToge1xuICAgICAgICAnZ3JvdXAnOiAnZGVzdHJveS1mZWF0dXJlLSR7eyBnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0Lm51bWJlciB9fScsXG4gICAgICAgICdjYW5jZWwtaW4tcHJvZ3Jlc3MnOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgQlJBTkNIOiAnJHt7IGdpdGh1Yi5oZWFkX3JlZiB9fScsXG4gICAgICAgIC4uLnN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICB9LFxuICAgICAgdG9vbHM6IHtcbiAgICAgICAgbm9kZToge1xuICAgICAgICAgIHZlcnNpb246IHRoaXMubWluTm9kZVZlcnNpb24gPz8gJzIwJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NoZWNrb3V0JyxcbiAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9jaGVja291dEB2NScsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnN0ZXBzLmZsYXRNYXAocyA9PiBzLnN0ZXBzKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHN5bnRoZXNpcyBqb2IgZm9yIHRoZSBwaXBlbGluZSB1c2luZyBHaXRIdWIgQWN0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlU3ludGgoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHM6IFBpcGVsaW5lU3RlcFtdID0gW107XG4gICAgc3RlcHMucHVzaCh0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpKTtcbiAgICBzdGVwcy5wdXNoKHRoaXMucHJvdmlkZVN5bnRoU3RlcCgpKTtcblxuICAgIHN0ZXBzLnB1c2gobmV3IFVwbG9hZEFydGlmYWN0U3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgIG5hbWU6ICdjbG91ZC1hc3NlbWJseScsXG4gICAgICBwYXRoOiBgJHt0aGlzLmFwcC5jZGtDb25maWcuY2Rrb3V0fS9gLFxuICAgIH0pKTtcblxuICAgIGNvbnN0IGdpdGh1YlN0ZXBzID0gc3RlcHMubWFwKHMgPT4gcy50b0dpdGh1YigpKTtcblxuICAgIHRoaXMuZGVwbG95bWVudFdvcmtmbG93LmFkZEpvYignc3ludGgnLCB7XG4gICAgICBuYW1lOiAnU3ludGggQ0RLIGFwcGxpY2F0aW9uJyxcbiAgICAgIHJ1bnNPbjogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3MgPz8gREVGQVVMVF9SVU5ORVJfVEFHUyxcbiAgICAgIGVudjoge1xuICAgICAgICBDSTogJ3RydWUnLFxuICAgICAgICAuLi5naXRodWJTdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICAgIG5lZWRzOiBbLi4uZ2l0aHViU3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpXSxcbiAgICAgIHBlcm1pc3Npb25zOiBtZXJnZUpvYlBlcm1pc3Npb25zKHtcbiAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgIH0sIC4uLihnaXRodWJTdGVwcy5mbGF0TWFwKHMgPT4gcy5wZXJtaXNzaW9ucykuZmlsdGVyKHAgPT4gcCAhPSB1bmRlZmluZWQpIGFzIEpvYlBlcm1pc3Npb25zW10pKSxcbiAgICAgIHRvb2xzOiB7XG4gICAgICAgIG5vZGU6IHtcbiAgICAgICAgICB2ZXJzaW9uOiB0aGlzLm1pbk5vZGVWZXJzaW9uID8/ICcyMCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjUnLFxuICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICdmZXRjaC1kZXB0aCc6IDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uZ2l0aHViU3RlcHMuZmxhdE1hcChzID0+IHMuc3RlcHMpLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgam9iIHRvIHVwbG9hZCBhc3NldHMgdG8gQVdTIGFzIHBhcnQgb2YgdGhlIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZUFzc2V0VXBsb2FkKHN0YWdlTmFtZT86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXBzID0gW1xuICAgICAgbmV3IFNpbXBsZUNvbW1hbmRTdGVwKHRoaXMucHJvamVjdCwgWydnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIubmFtZSBcImdpdGh1Yi1hY3Rpb25zXCIgJiYgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLmVtYWlsIFwiZ2l0aHViLWFjdGlvbnNAZ2l0aHViLmNvbVwiJ10pLFxuICAgICAgbmV3IERvd25sb2FkQXJ0aWZhY3RTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgICBuYW1lOiAnY2xvdWQtYXNzZW1ibHknLFxuICAgICAgICBwYXRoOiBgJHt0aGlzLmFwcC5jZGtDb25maWcuY2Rrb3V0fS9gLFxuICAgICAgfSksXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlQXNzZXRVcGxvYWRTdGVwKHN0YWdlTmFtZSksXG4gICAgXTtcblxuICAgIGlmICh0aGlzLm5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzKSB7XG4gICAgICBzdGVwcy5wdXNoKHRoaXMucHJvdmlkZUFzc2VtYmx5VXBsb2FkU3RlcCgpKTtcbiAgICB9XG5cbiAgICBjb25zdCBnaFN0ZXBzID0gc3RlcHMubWFwKHMgPT4gcy50b0dpdGh1YigpKTtcblxuICAgIHRoaXMuZGVwbG95bWVudFdvcmtmbG93LmFkZEpvYihgYXNzZXRVcGxvYWQke3N0YWdlTmFtZSA/IGAtJHtzdGFnZU5hbWV9YCA6ICcnfWAsIHtcbiAgICAgIG5hbWU6IGBQdWJsaXNoIGFzc2V0cyB0byBBV1Mke3N0YWdlTmFtZSA/IGAgZm9yIHN0YWdlICR7c3RhZ2VOYW1lfWAgOiAnJ31gLFxuICAgICAgbmVlZHM6IFsnc3ludGgnLCAuLi5naFN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKV0sXG4gICAgICBydW5zT246IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzID8/IERFRkFVTFRfUlVOTkVSX1RBR1MsXG4gICAgICAuLi4odGhpcy5vcHRpb25zLnVzZUdpdGh1YkVudmlyb25tZW50c0ZvckFzc2V0VXBsb2FkICYmIHN0YWdlTmFtZSAmJiB7IGVudmlyb25tZW50OiBzdGFnZU5hbWUgfSksXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgLi4uZ2hTdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICAgIHBlcm1pc3Npb25zOiBtZXJnZUpvYlBlcm1pc3Npb25zKHtcbiAgICAgICAgaWRUb2tlbjogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgY29udGVudHM6IHRoaXMubmVlZHNWZXJzaW9uZWRBcnRpZmFjdHMgPyBKb2JQZXJtaXNzaW9uLldSSVRFIDogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICAuLi50aGlzLnVzZUdpdGh1YlBhY2thZ2VzICYmIHtcbiAgICAgICAgICBwYWNrYWdlczogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgfSxcbiAgICAgIH0sIC4uLihnaFN0ZXBzLmZsYXRNYXAocyA9PiBzLnBlcm1pc3Npb25zKS5maWx0ZXIocCA9PiBwICE9IHVuZGVmaW5lZCkgYXMgSm9iUGVybWlzc2lvbnNbXSkpLFxuICAgICAgdG9vbHM6IHtcbiAgICAgICAgbm9kZToge1xuICAgICAgICAgIHZlcnNpb246IHRoaXMubWluTm9kZVZlcnNpb24gPz8gJzIwJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NoZWNrb3V0JyxcbiAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9jaGVja291dEB2NScsXG4gICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgJ2ZldGNoLWRlcHRoJzogMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICAuLi5naFN0ZXBzLmZsYXRNYXAocyA9PiBzLnN0ZXBzKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGpvYiB0byBkZXBsb3kgdGhlIENESyBhcHBsaWNhdGlvbiB0byBBV1MuXG4gICAqIEBwYXJhbSBzdGFnZSAtIFRoZSBkZXBsb3ltZW50IHN0YWdlIHRvIGNyZWF0ZS5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVEZXBsb3ltZW50KHN0YWdlOiBEZXBsb3ltZW50U3RhZ2UsIHVzZUdpdGh1YkVudmlyb25tZW50c0ZvckFzc2V0VXBsb2FkPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChzdGFnZS5tYW51YWxBcHByb3ZhbCA9PT0gdHJ1ZSkge1xuICAgICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICAgIG5ldyBTaW1wbGVDb21tYW5kU3RlcCh0aGlzLnByb2plY3QsIHRoaXMucmVuZGVySW5zdGFsbFBhY2thZ2VDb21tYW5kcyhgJHt0aGlzLmJhc2VPcHRpb25zLnBrZ05hbWVzcGFjZX0vJHt0aGlzLmFwcC5uYW1lfUBcXCR7e2dpdGh1Yi5ldmVudC5pbnB1dHMudmVyc2lvbn19YCkpLFxuICAgICAgICBuZXcgU2ltcGxlQ29tbWFuZFN0ZXAodGhpcy5wcm9qZWN0LCBbYG12IC4vbm9kZV9tb2R1bGVzLyR7dGhpcy5iYXNlT3B0aW9ucy5wa2dOYW1lc3BhY2V9LyR7dGhpcy5hcHAubmFtZX0gJHt0aGlzLmFwcC5jZGtDb25maWcuY2Rrb3V0fWBdKSxcbiAgICAgICAgdGhpcy5wcm92aWRlRGVwbG95U3RlcChzdGFnZSksXG4gICAgICAgIG5ldyBDZGtPdXRwdXRzU3VtbWFyeVN0ZXAodGhpcy5wcm9qZWN0LCB7IHN0YWdlTmFtZTogc3RhZ2UubmFtZSB9KSxcbiAgICAgICAgbmV3IFVwbG9hZEFydGlmYWN0U3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgICBuYW1lOiBgY2RrLW91dHB1dHMtJHtzdGFnZS5uYW1lfWAsXG4gICAgICAgICAgcGF0aDogYGNkay1vdXRwdXRzLSR7c3RhZ2UubmFtZX0uanNvbmAsXG4gICAgICAgIH0pLFxuICAgICAgXS5tYXAocyA9PiBzLnRvR2l0aHViKCkpO1xuXG4gICAgICAvLyBDcmVhdGUgbmV3IHdvcmtmbG93IGZvciBkZXBsb3ltZW50XG4gICAgICBjb25zdCBzdGFnZVdvcmtmbG93ID0gdGhpcy5hcHAuZ2l0aHViIS5hZGRXb3JrZmxvdyhgcmVsZWFzZS0ke3N0YWdlLm5hbWV9YCk7XG4gICAgICBzdGFnZVdvcmtmbG93Lm9uKHtcbiAgICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge1xuICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgdmVyc2lvbjoge1xuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1BhY2thZ2UgdmVyc2lvbicsXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBzdGFnZVdvcmtmbG93LmFkZEpvYignZGVwbG95Jywge1xuICAgICAgICBuYW1lOiBgUmVsZWFzZSBzdGFnZSAke3N0YWdlLm5hbWV9IHRvIEFXU2AsXG4gICAgICAgIG5lZWRzOiBzdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyksXG4gICAgICAgIHJ1bnNPbjogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3MgPz8gREVGQVVMVF9SVU5ORVJfVEFHUyxcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLnVzZUdpdGh1YkVudmlyb25tZW50cyAmJiB7XG4gICAgICAgICAgZW52aXJvbm1lbnQ6IHN0YWdlLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmN1cnJlbmN5OiB7XG4gICAgICAgICAgJ2dyb3VwJzogYGRlcGxveS0ke3N0YWdlLm5hbWV9YCxcbiAgICAgICAgICAnY2FuY2VsLWluLXByb2dyZXNzJzogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIENJOiAndHJ1ZScsXG4gICAgICAgICAgLi4uc3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWlzc2lvbnM6IG1lcmdlSm9iUGVybWlzc2lvbnMoe1xuICAgICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgIH0sIC4uLihzdGVwcy5mbGF0TWFwKHMgPT4gcy5wZXJtaXNzaW9ucykuZmlsdGVyKHAgPT4gcCAhPSB1bmRlZmluZWQpIGFzIEpvYlBlcm1pc3Npb25zW10pKSxcbiAgICAgICAgdG9vbHM6IHtcbiAgICAgICAgICBub2RlOiB7XG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLm1pbk5vZGVWZXJzaW9uID8/ICcyMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RlcHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgICAgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4uc3RlcHMuZmxhdE1hcChzID0+IHMuc3RlcHMpLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jcmVhdGVEZXBsb3lKb2IodGhpcy5kZXBsb3ltZW50V29ya2Zsb3csIFsuLi4odGhpcy5kZXBsb3ltZW50U3RhZ2VzLmxlbmd0aCA+IDAgPyBbYGRlcGxveS0ke3RoaXMuZGVwbG95bWVudFN0YWdlcy5hdCgtMSkhfWBdIDogW10pXSwgc3RhZ2UsIHVzZUdpdGh1YkVudmlyb25tZW50c0ZvckFzc2V0VXBsb2FkKTtcbiAgICAgIHRoaXMuZGVwbG95bWVudFN0YWdlcy5wdXNoKHN0YWdlLm5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGVwbG95Sm9iKFxuICAgIHdvcmtmbG93OiBHaXRodWJXb3JrZmxvdyxcbiAgICBqb2JEZXBlbmRlbmNpZXM6IHN0cmluZ1tdLFxuICAgIHN0YWdlOiBOYW1lZFN0YWdlT3B0aW9ucyxcbiAgICB1c2VHaXRodWJFbnZpcm9ubWVudHNGb3JBc3NldFVwbG9hZD86IGJvb2xlYW4sXG4gICkge1xuICAgIGNvbnN0IHN0ZXBzID0gW1xuICAgICAgbmV3IERvd25sb2FkQXJ0aWZhY3RTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgICBuYW1lOiAnY2xvdWQtYXNzZW1ibHknLFxuICAgICAgICBwYXRoOiBgJHt0aGlzLmFwcC5jZGtDb25maWcuY2Rrb3V0fS9gLFxuICAgICAgfSksXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlRGVwbG95U3RlcChzdGFnZSksXG4gICAgICBuZXcgQ2RrT3V0cHV0c1N1bW1hcnlTdGVwKHRoaXMucHJvamVjdCwgeyBzdGFnZU5hbWU6IHN0YWdlLm5hbWUgfSksXG4gICAgICBuZXcgVXBsb2FkQXJ0aWZhY3RTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgICBuYW1lOiBgY2RrLW91dHB1dHMtJHtzdGFnZS5uYW1lfWAsXG4gICAgICAgIHBhdGg6IGBjZGstb3V0cHV0cy0ke3N0YWdlLm5hbWV9Lmpzb25gLFxuICAgICAgfSksXG4gICAgXS5tYXAocyA9PiBzLnRvR2l0aHViKCkpO1xuXG4gICAgLy8gQWRkIGRlcGxveW1lbnQgdG8gQ0kvQ0Qgd29ya2Zsb3dcbiAgICB3b3JrZmxvdy5hZGRKb2IoYGRlcGxveS0ke3N0YWdlLm5hbWV9YCwge1xuICAgICAgbmFtZTogYERlcGxveSBzdGFnZSAke3N0YWdlLm5hbWV9IHRvIEFXU2AsXG4gICAgICAuLi50aGlzLm9wdGlvbnMudXNlR2l0aHViRW52aXJvbm1lbnRzICYmIHtcbiAgICAgICAgZW52aXJvbm1lbnQ6IHN0YWdlLm5hbWUsXG4gICAgICB9LFxuICAgICAgY29uY3VycmVuY3k6IHtcbiAgICAgICAgJ2dyb3VwJzogYGRlcGxveS0ke3N0YWdlLm5hbWV9YCxcbiAgICAgICAgJ2NhbmNlbC1pbi1wcm9ncmVzcyc6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIG5lZWRzOiBbYGFzc2V0VXBsb2FkJHt1c2VHaXRodWJFbnZpcm9ubWVudHNGb3JBc3NldFVwbG9hZCA/IGAtJHtzdGFnZS5uYW1lfWAgOiAnJ31gLCAuLi5zdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyksIC4uLmpvYkRlcGVuZGVuY2llc10sXG4gICAgICBydW5zT246IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzID8/IERFRkFVTFRfUlVOTkVSX1RBR1MsXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgLi4uc3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgICBwZXJtaXNzaW9uczogbWVyZ2VKb2JQZXJtaXNzaW9ucyh7XG4gICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICB9LCAuLi4oc3RlcHMuZmxhdE1hcChzID0+IHMucGVybWlzc2lvbnMpLmZpbHRlcihwID0+IHAgIT0gdW5kZWZpbmVkKSBhcyBKb2JQZXJtaXNzaW9uc1tdKSksXG4gICAgICB0b29sczoge1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgdmVyc2lvbjogdGhpcy5taW5Ob2RlVmVyc2lvbiA/PyAnMjAnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY1JyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uc3RlcHMuZmxhdE1hcChzID0+IHMuc3RlcHMpLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgam9iIHRvIGRlcGxveSB0aGUgQ0RLIGFwcGxpY2F0aW9uIHRvIEFXUy5cbiAgICogQHBhcmFtIHN0YWdlIC0gVGhlIGluZGVwZW5kZW50IHN0YWdlIHRvIGNyZWF0ZS5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVJbmRlcGVuZGVudERlcGxveW1lbnQoc3RhZ2U6IEluZGVwZW5kZW50U3RhZ2UpOiB2b2lkIHtcbiAgICBpZiAoc3RhZ2UuZGVwbG95T25QdXNoIHx8IHRoaXMub3B0aW9ucy51c2VHaXRodWJFbnZpcm9ubWVudHMpIHtcbiAgICAgIHRoaXMuY3JlYXRlRGVwbG95Sm9iKHRoaXMuZGVwbG95bWVudFdvcmtmbG93LCBbXSwgc3RhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdGVwcyA9IFtcbiAgICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgICAgdGhpcy5wcm92aWRlU3ludGhTdGVwKCksXG4gICAgICAgIC4uLigoc3RhZ2UuZGlmZlR5cGUgIT09IENka0RpZmZUeXBlLk5PTkUpID8gW3RoaXMucHJvdmlkZURpZmZTdGVwKHN0YWdlLCBzdGFnZS5kaWZmVHlwZSA9PT0gQ2RrRGlmZlR5cGUuRkFTVCldIDogW10pLFxuICAgICAgICB0aGlzLnByb3ZpZGVEZXBsb3lTdGVwKHN0YWdlKSxcbiAgICAgICAgbmV3IENka091dHB1dHNTdW1tYXJ5U3RlcCh0aGlzLnByb2plY3QsIHsgc3RhZ2VOYW1lOiBzdGFnZS5uYW1lIH0pLFxuICAgICAgICBuZXcgVXBsb2FkQXJ0aWZhY3RTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgICAgIG5hbWU6IGBjZGstb3V0cHV0cy0ke3N0YWdlLm5hbWV9YCxcbiAgICAgICAgICBwYXRoOiBgY2RrLW91dHB1dHMtJHtzdGFnZS5uYW1lfS5qc29uYCxcbiAgICAgICAgfSksXG4gICAgICBdLm1hcChzID0+IHMudG9HaXRodWIoKSk7XG5cbiAgICAgIC8vIENyZWF0ZSBuZXcgd29ya2Zsb3cgZm9yIGRlcGxveW1lbnRcbiAgICAgIGNvbnN0IHN0YWdlV29ya2Zsb3cgPSB0aGlzLmFwcC5naXRodWIhLmFkZFdvcmtmbG93KGBkZXBsb3ktJHtzdGFnZS5uYW1lfWApO1xuICAgICAgc3RhZ2VXb3JrZmxvdy5vbih7XG4gICAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHt9LFxuICAgICAgfSk7XG4gICAgICBzdGFnZVdvcmtmbG93LmFkZEpvYignZGVwbG95Jywge1xuICAgICAgICBuYW1lOiBgUmVsZWFzZSBzdGFnZSAke3N0YWdlLm5hbWV9IHRvIEFXU2AsXG4gICAgICAgIG5lZWRzOiBzdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyksXG4gICAgICAgIHJ1bnNPbjogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3MgPz8gREVGQVVMVF9SVU5ORVJfVEFHUyxcbiAgICAgICAgY29uY3VycmVuY3k6IHtcbiAgICAgICAgICAnZ3JvdXAnOiBgZGVwbG95LSR7c3RhZ2UubmFtZX1gLFxuICAgICAgICAgICdjYW5jZWwtaW4tcHJvZ3Jlc3MnOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgICAuLi5zdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uczogbWVyZ2VKb2JQZXJtaXNzaW9ucyh7XG4gICAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgfSwgLi4uKHN0ZXBzLmZsYXRNYXAocyA9PiBzLnBlcm1pc3Npb25zKS5maWx0ZXIocCA9PiBwICE9IHVuZGVmaW5lZCkgYXMgSm9iUGVybWlzc2lvbnNbXSkpLFxuICAgICAgICB0b29sczoge1xuICAgICAgICAgIG5vZGU6IHtcbiAgICAgICAgICAgIHZlcnNpb246IHRoaXMubWluTm9kZVZlcnNpb24gPz8gJzIwJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzdGVwczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9jaGVja291dEB2NScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAuLi5zdGVwcy5mbGF0TWFwKHMgPT4gcy5zdGVwcyksXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgIH1cbiAgfVxufVxuIl19
@@ -6,6 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const projen_1 = require("projen");
7
7
  const base_1 = require("./base");
8
8
  const engine_1 = require("../engine");
9
+ const github_summary_step_1 = require("../steps/github-summary.step");
9
10
  /**
10
11
  * The GitlabCDKPipeline class extends CDKPipeline to provide a way to configure and execute
11
12
  * AWS CDK deployment pipelines within GitLab CI/CD environments. It integrates IAM role management,
@@ -153,6 +154,7 @@ class GitlabCDKPipeline extends base_1.CDKPipeline {
153
154
  const deploySteps = [
154
155
  this.provideInstallStep(),
155
156
  this.provideDeployStep(stage),
157
+ new github_summary_step_1.CdkOutputsSummaryStep(this.project, { stageName: stage.name }),
156
158
  ].map(s => s.toGitlab());
157
159
  this.config.addStages(stage.name);
158
160
  this.config.addJobs({
@@ -205,6 +207,7 @@ class GitlabCDKPipeline extends base_1.CDKPipeline {
205
207
  this.provideSynthStep(),
206
208
  ...(stage.diffType !== base_1.CdkDiffType.NONE ? [this.provideDiffStep(stage, stage.diffType == base_1.CdkDiffType.FAST)] : []),
207
209
  this.provideDeployStep(stage),
210
+ new github_summary_step_1.CdkOutputsSummaryStep(this.project, { stageName: stage.name }),
208
211
  ].map(s => s.toGitlab());
209
212
  this.config.addStages(stage.name);
210
213
  this.config.addJobs({
@@ -232,5 +235,5 @@ class GitlabCDKPipeline extends base_1.CDKPipeline {
232
235
  }
233
236
  exports.GitlabCDKPipeline = GitlabCDKPipeline;
234
237
  _a = JSII_RTTI_SYMBOL_1;
235
- GitlabCDKPipeline[_a] = { fqn: "projen-pipelines.GitlabCDKPipeline", version: "0.3.7" };
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0bGFiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9naXRsYWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBd0M7QUFDeEMsaUNBQXlHO0FBQ3pHLHNDQUEyQztBQWdDM0M7Ozs7R0FJRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsa0JBQVc7SUFjaEQ7Ozs7OztPQU1HO0lBQ0gsWUFBWSxHQUErQixFQUFVLE9BQWlDO1FBQ3BGLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFEK0IsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFWdEYsNENBQTRDO1FBQ3BDLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQVl0Qyx1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUU7WUFDaEQsTUFBTSxFQUFFLEVBQUU7WUFDVixJQUFJLEVBQUUsRUFBRTtTQUNULENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUMsQ0FBQyw2Q0FBNkM7UUFDbkYsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLDZDQUE2QyxDQUFDO1FBRS9FLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFekIsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxD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QUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7Z0JBQ3RDLFNBQVMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQ3RFO1NBQ0YsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLHVCQUFjLENBQUMsTUFBTSxDQUFDO0lBQy9CLENBQUM7O0FBN1BILDhDQStQQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c2NkaywgZ2l0bGFiIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IENka0RpZmZUeXBlLCBDREtQaXBlbGluZSwgQ0RLUGlwZWxpbmVPcHRpb25zLCBEZXBsb3ltZW50U3RhZ2UsIEluZGVwZW5kZW50U3RhZ2UgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgUGlwZWxpbmVFbmdpbmUgfSBmcm9tICcuLi9lbmdpbmUnO1xuaW1wb3J0IHsgUGlwZWxpbmVTdGVwIH0gZnJvbSAnLi4vc3RlcHMnO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIEdpdExhYiBydW5uZXIgdGFncyB1c2VkIHdpdGhpbiB0aGUgQ0kvQ0QgcGlwZWxpbmUgZm9yIHZhcmlvdXMgc3RhZ2VzLlxuICogVGhpcyBhbGxvd3MgZm9yIHNwZWNpZnlpbmcgZGlmZmVyZW50IHJ1bm5lcnMgYmFzZWQgb24gdGhlIHRhZ3MgZm9yIGRpZmZlcmVudCBzdGFnZXMgb2YgdGhlIHBpcGVsaW5lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdpdGxhYlJ1bm5lclRhZ3Mge1xuICAvKiogRGVmYXVsdCBydW5uZXIgdGFncyB1c2VkIGlmIHNwZWNpZmljIHN0YWdlIHRhZ3MgYXJlIG5vdCBwcm92aWRlZC4gKi9cbiAgcmVhZG9ubHkgZGVmYXVsdD86IHN0cmluZ1tdO1xuICAvKiogUnVubmVyIHRhZ3MgZm9yIHRoZSBzeW50aGVzaXMgc3RhZ2UuICovXG4gIHJlYWRvbmx5IHN5bnRoPzogc3RyaW5nW107XG4gIC8qKiBSdW5uZXIgdGFncyBmb3IgdGhlIGFzc2V0IHB1Ymxpc2hpbmcgc3RhZ2UuICovXG4gIHJlYWRvbmx5IGFzc2V0UHVibGlzaGluZz86IHN0cmluZ1tdO1xuICAvKiogQSBtYXAgb2Ygc3RhZ2UgbmFtZXMgdG8gcnVubmVyIHRhZ3MgZm9yIHRoZSBkaWZmIG9wZXJhdGlvbi4gKi9cbiAgcmVhZG9ubHkgZGlmZj86IHsgW3N0YWdlOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuICAvKiogQSBtYXAgb2Ygc3RhZ2UgbmFtZXMgdG8gcnVubmVyIHRhZ3MgZm9yIHRoZSBkZXBsb3ltZW50IG9wZXJhdGlvbi4gKi9cbiAgcmVhZG9ubHkgZGVwbG95bWVudD86IHsgW3N0YWdlOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBHaXRMYWIgQ0RLIHBpcGVsaW5lLCBleHRlbmRpbmcgdGhlIGJhc2UgQ0RLIHBpcGVsaW5lIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2l0bGFiQ0RLUGlwZWxpbmVPcHRpb25zIGV4dGVuZHMgQ0RLUGlwZWxpbmVPcHRpb25zIHtcbiAgLyoqIFJ1bm5lciB0YWdzIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBwaXBlbGluZS4gKi9cbiAgcmVhZG9ubHkgcnVubmVyVGFncz86IEdpdGxhYlJ1bm5lclRhZ3M7XG4gIC8qKiBUaGUgRG9ja2VyIGltYWdlIHRvIHVzZSBmb3IgcnVubmluZyB0aGUgcGlwZWxpbmUgam9icy4gKi9cbiAgcmVhZG9ubHkgaW1hZ2U/OiBzdHJpbmc7XG5cbiAgLy8gcmVhZG9ubHkgcHVibGlzaGVkQ2xvdWRBc3NlbWJsaWVzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgR2l0bGFiQ0RLUGlwZWxpbmUgY2xhc3MgZXh0ZW5kcyBDREtQaXBlbGluZSB0byBwcm92aWRlIGEgd2F5IHRvIGNvbmZpZ3VyZSBhbmQgZXhlY3V0ZVxuICogQVdTIENESyBkZXBsb3ltZW50IHBpcGVsaW5lcyB3aXRoaW4gR2l0TGFiIENJL0NEIGVudmlyb25tZW50cy4gSXQgaW50ZWdyYXRlcyBJQU0gcm9sZSBtYW5hZ2VtZW50LFxuICogcnVubmVyIGNvbmZpZ3VyYXRpb24sIGFuZCBkZWZpbmVzIHN0YWdlcyBhbmQgam9icyBmb3IgdGhlIGRlcGxveW1lbnQgd29ya2Zsb3cuXG4gKi9cbmV4cG9ydCBjbGFzcyBHaXRsYWJDREtQaXBlbGluZSBleHRlbmRzIENES1BpcGVsaW5lIHtcblxuICAvKiogSW5kaWNhdGVzIGlmIHZlcnNpb25lZCBhcnRpZmFjdHMgYXJlIHJlcXVpcmVkLiBDdXJyZW50bHkgc2V0IHRvIGZhbHNlICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmVlZHNWZXJzaW9uZWRBcnRpZmFjdHM6IGJvb2xlYW47XG5cbiAgLyoqIFRoZSBEb2NrZXIgaW1hZ2UgdXNlZCBmb3IgcGlwZWxpbmUgam9icy4gRGVmYXVsdHMgdG8gYSBzcGVjaWZpZWQgaW1hZ2Ugb3IgYSBkZWZhdWx0IHZhbHVlLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgam9iSW1hZ2U6IHN0cmluZztcblxuICAvKiogR2l0TGFiIENJL0NEIGNvbmZpZ3VyYXRpb24gb2JqZWN0LiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29uZmlnOiBnaXRsYWIuR2l0bGFiQ29uZmlndXJhdGlvbjtcblxuICAvKiogTGlzdCBvZiBkZXBsb3ltZW50IHN0YWdlcyBhcyBzdHJpbmdzLiAqL1xuICBwcml2YXRlIGRlcGxveW1lbnRTdGFnZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYW4gaW5zdGFuY2Ugb2YgR2l0bGFiQ0RLUGlwZWxpbmUsIGluaXRpYWxpemluZyB0aGUgR2l0TGFiIENJL0NEIGNvbmZpZ3VyYXRpb25cbiAgICogYW5kIHNldHRpbmcgdXAgdGhlIG5lY2Vzc2FyeSBzdGFnZXMgYW5kIGpvYnMgZm9yIEFXUyBDREsgZGVwbG95bWVudC5cbiAgICpcbiAgICogQHBhcmFtIHthd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcH0gYXBwIC0gVGhlIEFXUyBDREsgYXBwIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGlwZWxpbmUuXG4gICAqIEBwYXJhbSB7R2l0bGFiQ0RLUGlwZWxpbmVPcHRpb25zfSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgcGlwZWxpbmUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhcHA6IGF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwLCBwcml2YXRlIG9wdGlvbnM6IEdpdGxhYkNES1BpcGVsaW5lT3B0aW9ucykge1xuICAgIHN1cGVyKGFwcCwgb3B0aW9ucyk7XG5cbiAgICAvLyBUT0RPIHVzZSBleGlzdGluZyBjb25maWcgaWYgcG9zc2libGVcbiAgICB0aGlzLmNvbmZpZyA9IG5ldyBnaXRsYWIuR2l0bGFiQ29uZmlndXJhdGlvbihhcHAsIHtcbiAgICAgIHN0YWdlczogW10sXG4gICAgICBqb2JzOiB7fSxcbiAgICB9KTtcblxuICAgIHRoaXMubmVlZHNWZXJzaW9uZWRBcnRpZmFjdHMgPSBmYWxzZTsgLy8gb3B0aW9ucy5wdWJsaXNoZWRDbG91ZEFzc2VtYmxpZXMgPz8gZmFsc2U7XG4gICAgdGhpcy5qb2JJbWFnZSA9IG9wdGlvbnMuaW1hZ2UgPz8gJ2ltYWdlOiBqc2lpL3N1cGVyY2hhaW46MS1idXN0ZXItc2xpbS1ub2RlMTgnO1xuXG4gICAgdGhpcy5zZXR1cFNuaXBwZXRzKCk7XG5cbiAgICB0aGlzLmNyZWF0ZVN5bnRoKCk7XG5cbiAgICB0aGlzLmNyZWF0ZUFzc2V0VXBsb2FkKCk7XG5cbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIG9wdGlvbnMuc3RhZ2VzKSB7XG4gICAgICB0aGlzLmNyZWF0ZURlcGxveW1lbnQoc3RhZ2UpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2YgKG9wdGlvbnMuaW5kZXBlbmRlbnRTdGFnZXMgPz8gW10pKSB7XG4gICAgICB0aGlzLmNyZWF0ZUluZGVwZW5kZW50RGVwbG95bWVudChzdGFnZSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZmVhdHVyZVN0YWdlcykge1xuICAgICAgdGhpcy5jcmVhdGVGZWF0dXJlV29ya2Zsb3dzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgYmFzZSBqb2Igc25pcHBldHMgZm9yIGFydGlmYWN0IGhhbmRsaW5nIGFuZCBBV1MgY29uZmlndXJhdGlvbi5cbiAgICogVGhpcyBtZXRob2QgZGVmaW5lcyByZXVzYWJsZSBqb2IgY29uZmlndXJhdGlvbnMgdG8gYmUgZXh0ZW5kZWQgYnkgc3BlY2lmaWMgcGlwZWxpbmUgam9icyxcbiAgICogZmFjaWxpdGF0aW5nIGFydGlmYWN0IGNhY2hpbmcgYW5kIEFXUyBhdXRoZW50aWNhdGlvbiBzZXR1cC5cbiAgICovXG4gIHByb3RlY3RlZCBzZXR1cFNuaXBwZXRzKCkge1xuICAgIHRoaXMuY29uZmlnLmFkZEpvYnMoe1xuICAgICAgJy5hcnRpZmFjdHNfY2RrJzoge1xuICAgICAgICBhcnRpZmFjdHM6IHtcbiAgICAgICAgICB3aGVuOiBnaXRsYWIuQ2FjaGVXaGVuLk9OX1NVQ0NFU1MsXG4gICAgICAgICAgZXhwaXJlSW46ICczMCBkYXlzJyxcbiAgICAgICAgICBuYW1lOiAnQ0RLIEFzc2VtYmx5IC0gJENJX0pPQl9OQU1FLSRDSV9DT01NSVRfUkVGX1NMVUcnLFxuICAgICAgICAgIHVudHJhY2tlZDogZmFsc2UsXG4gICAgICAgICAgcGF0aHM6IFsnY2RrLm91dCddLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgICcuYXJ0aWZhY3RzX2Nka2RlcGxveSc6IHtcbiAgICAgICAgYXJ0aWZhY3RzOiB7XG4gICAgICAgICAgd2hlbjogZ2l0bGFiLkNhY2hlV2hlbi5PTl9TVUNDRVNTLFxuICAgICAgICAgIGV4cGlyZUluOiAnMzAgZGF5cycsXG4gICAgICAgICAgbmFtZTogJ0NESyBPdXRwdXRzIC0gJENJX0pPQl9OQU1FLSRDSV9DT01NSVRfUkVGX1NMVUcnLFxuICAgICAgICAgIHVudHJhY2tlZDogZmFsc2UsXG4gICAgICAgICAgcGF0aHM6IFsnY2RrLW91dHB1dHMtKi5qc29uJ10sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgJy5hd3NfYmFzZSc6IHtcbiAgICAgICAgaW1hZ2U6IHsgbmFtZTogdGhpcy5qb2JJbWFnZSB9LFxuICAgICAgICBpZFRva2Vuczoge1xuICAgICAgICAgIEFXU19UT0tFTjoge1xuICAgICAgICAgICAgYXVkOiAnaHR0cHM6Ly9zdHMuYW1hem9uYXdzLmNvbScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgICAvLyBOUE1fUkVHSVNUUlk6ICd4eHgnXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUZlYXR1cmVXb3JrZmxvd3MoKTogdm9pZCB7XG4gICAgLy8gVE9ETyBkZXBsb3kgYW5kIGRlc3Ryb3kgZmVhdHVyZSBzdGFnZXNcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSAnc3ludGgnIHN0YWdlIG9mIHRoZSBwaXBlbGluZSB0byBzeW50aGVzaXplIEFXUyBDREsgYXBwbGljYXRpb25zLlxuICAgKiBUaGlzIG1ldGhvZCBjb25maWd1cmVzIHRoZSBqb2IgdG8gZXhlY3V0ZSBDREsgc3ludGhlc2lzLCBhcHBseWluZyB0aGUgYXBwcm9wcmlhdGUgSUFNIHJvbGVcbiAgICogZm9yIEFXUyBjb21tYW5kcyBhbmQgc3BlY2lmeWluZyBydW5uZXIgdGFncyBmb3Igam9iIGV4ZWN1dGlvbi4gVGhlIHN5bnRoZXNpemVkIG91dHB1dHMgYXJlXG4gICAqIGNvbmZpZ3VyZWQgdG8gYmUgY2FjaGVkIGFzIGFydGlmYWN0cy5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVTeW50aCgpOiB2b2lkIHtcbiAgICBjb25zdCBzdGVwczogUGlwZWxpbmVTdGVwW10gPSBbXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlU3ludGhTdGVwKCksXG4gICAgXTtcblxuICAgIGNvbnN0IGdpdGxhYlN0ZXBzID0gc3RlcHMubWFwKHMgPT4gcy50b0dpdGxhYigpKTtcblxuICAgIHRoaXMuY29uZmlnLmFkZFN0YWdlcygnc3ludGgnKTtcbiAgICB0aGlzLmNvbmZpZy5hZGRKb2JzKHtcbiAgICAgIHN5bnRoOiB7XG4gICAgICAgIGV4dGVuZHM6IFsnLmF3c19iYXNlJywgJy5hcnRpZmFjdHNfY2RrJywgLi4uZ2l0bGFiU3RlcHMuZmxhdE1hcChzID0+IHMuZXh0ZW5zaW9ucyldLFxuICAgICAgICBuZWVkczogZ2l0bGFiU3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpLFxuICAgICAgICBzdGFnZTogJ3N5bnRoJyxcbiAgICAgICAgdGFnczogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LnN5bnRoID8/IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5kZWZhdWx0LFxuICAgICAgICBzY3JpcHQ6IGdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLmNvbW1hbmRzKSxcbiAgICAgICAgdmFyaWFibGVzOiBnaXRsYWJTdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIHRoZSBhc3NldCBwdWJsaXNoaW5nIHN0YWdlIG9mIHRoZSBwaXBlbGluZS5cbiAgICogVGhpcyBtZXRob2QgY29uZmlndXJlcyBhIGpvYiB0byB1cGxvYWQgc3ludGhlc2l6ZWQgYXNzZXRzIHRvIEFXUywgaGFuZGxpbmcgSUFNIHJvbGVcbiAgICogYXV0aGVudGljYXRpb24gYW5kIHNwZWNpZnlpbmcgcnVubmVyIHRhZ3MuIEl0IGRlcGVuZHMgb24gdGhlIHN1Y2Nlc3NmdWwgY29tcGxldGlvblxuICAgKiBvZiB0aGUgJ3N5bnRoJyBzdGFnZSwgZW5zdXJpbmcgYXNzZXRzIGFyZSBvbmx5IHB1Ymxpc2hlZCBhZnRlciBzdWNjZXNzZnVsIHN5bnRoZXNpcy5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVBc3NldFVwbG9hZCgpOiB2b2lkIHtcbiAgICBjb25zdCBzdGVwcyA9IFtcbiAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICB0aGlzLnByb3ZpZGVBc3NldFVwbG9hZFN0ZXAoKSxcbiAgICBdO1xuXG4gICAgaWYgKHRoaXMubmVlZHNWZXJzaW9uZWRBcnRpZmFjdHMpIHtcbiAgICAgIHN0ZXBzLnB1c2godGhpcy5wcm92aWRlQXNzZW1ibHlVcGxvYWRTdGVwKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGdpdGxhYlN0ZXBzID0gc3RlcHMubWFwKHMgPT4gcy50b0dpdGxhYigpKTtcblxuICAgIHRoaXMuY29uZmlnLmFkZFN0YWdlcygncHVibGlzaF9hc3NldHMnKTtcbiAgICB0aGlzLmNvbmZpZy5hZGRKb2JzKHtcbiAgICAgIHB1Ymxpc2hfYXNzZXRzOiB7XG4gICAgICAgIGV4dGVuZHM6IFsnLmF3c19iYXNlJywgLi4uZ2l0bGFiU3RlcHMuZmxhdE1hcChzID0+IHMuZXh0ZW5zaW9ucyldLFxuICAgICAgICBzdGFnZTogJ3B1Ymxpc2hfYXNzZXRzJyxcbiAgICAgICAgdGFnczogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmFzc2V0UHVibGlzaGluZyA/PyB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVmYXVsdCxcbiAgICAgICAgbmVlZHM6IFt7IGpvYjogJ3N5bnRoJywgYXJ0aWZhY3RzOiB0cnVlIH0sIC4uLmdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKV0sXG4gICAgICAgIHNjcmlwdDogZ2l0bGFiU3RlcHMuZmxhdE1hcChzID0+IHMuY29tbWFuZHMpLFxuICAgICAgICB2YXJpYWJsZXM6IGdpdGxhYlN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIER5bmFtaWNhbGx5IGNyZWF0ZXMgZGVwbG95bWVudCBzdGFnZXMgYmFzZWQgb24gdGhlIGRlcGxveW1lbnQgY29uZmlndXJhdGlvbi5cbiAgICogRm9yIGVhY2ggcHJvdmlkZWQgZGVwbG95bWVudCBzdGFnZSwgdGhpcyBtZXRob2Qgc2V0cyB1cCBqb2JzIGZvciAnZGlmZicgYW5kICdkZXBsb3knIGFjdGlvbnMsXG4gICAqIGFwcGx5aW5nIHRoZSBjb3JyZWN0IElBTSByb2xlcyBhbmQgcnVubmVyIHRhZ3MuIEl0IHN1cHBvcnRzIGNvbmRpdGlvbmFsIG1hbnVhbCBhcHByb3ZhbCBmb3JcbiAgICogZGVwbG95bWVudCBzdGFnZXMsIHByb3ZpZGluZyBmbGV4aWJpbGl0eSBpbiB0aGUgZGVwbG95bWVudCB3b3JrZmxvdy5cbiAgICpcbiAgICogQHBhcmFtIHtEZXBsb3ltZW50U3RhZ2V9IHN0YWdlIC0gVGhlIGRlcGxveW1lbnQgc3RhZ2UgY29uZmlndXJhdGlvbiB0byBzZXQgdXAuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlRGVwbG95bWVudChzdGFnZTogRGVwbG95bWVudFN0YWdlKTogdm9pZCB7XG4gICAgY29uc3QgZGlmZlN0ZXBzID0gW1xuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZURpZmZTdGVwKHN0YWdlLCBzdGFnZS5kaWZmVHlwZSA9PT0gQ2RrRGlmZlR5cGUuRkFTVCksXG4gICAgXS5tYXAocyA9PiBzLnRvR2l0bGFiKCkpO1xuXG5cbiAgICBjb25zdCBkZXBsb3lTdGVwcyA9IFtcbiAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICB0aGlzLnByb3ZpZGVEZXBsb3lTdGVwKHN0YWdlKSxcbiAgICBdLm1hcChzID0+IHMudG9HaXRsYWIoKSk7XG5cbiAgICB0aGlzLmNvbmZpZy5hZGRTdGFnZXMoc3RhZ2UubmFtZSk7XG4gICAgdGhpcy5jb25maWcuYWRkSm9icyh7XG4gICAgICAuLi4oc3RhZ2UuZGlmZlR5cGUgIT09IENka0RpZmZUeXBlLk5PTkUpICYmIHtcbiAgICAgICAgW2BkaWZmLSR7c3RhZ2UubmFtZX1gXToge1xuICAgICAgICAgIGV4dGVuZHM6IFsnLmF3c19iYXNlJywgLi4uZGlmZlN0ZXBzLmZsYXRNYXAocyA9PiBzLmV4dGVuc2lvbnMpXSxcbiAgICAgICAgICBzdGFnZTogc3RhZ2UubmFtZSxcbiAgICAgICAgICB0YWdzOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGlmZj8uW3N0YWdlLm5hbWVdID8/IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5kZXBsb3ltZW50Py5bc3RhZ2UubmFtZV0gPz8gdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRlZmF1bHQsXG4gICAgICAgICAgb25seToge1xuICAgICAgICAgICAgcmVmczogW3RoaXMuYnJhbmNoTmFtZV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZWVkczogW1xuICAgICAgICAgICAgeyBqb2I6ICdzeW50aCcsIGFydGlmYWN0czogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBqb2I6ICdwdWJsaXNoX2Fzc2V0cycgfSxcbiAgICAgICAgICAgIC4uLmRpZmZTdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyksXG4gICAgICAgICAgXSxcbiAgICAgICAgICBzY3JpcHQ6IGRpZmZTdGVwcy5mbGF0TWFwKHMgPT4gcy5jb21tYW5kcyksXG4gICAgICAgICAgdmFyaWFibGVzOiBkaWZmU3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBbYGRlcGxveS0ke3N0YWdlLm5hbWV9YF06IHtcbiAgICAgICAgZXh0ZW5kczogWycuYXdzX2Jhc2UnLCAnLmFydGlmYWN0c19jZGtkZXBsb3knLCAuLi5kZXBsb3lTdGVwcy5mbGF0TWFwKHMgPT4gcy5leHRlbnNpb25zKV0sXG4gICAgICAgIHN0YWdlOiBzdGFnZS5uYW1lLFxuICAgICAgICB0YWdzOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVwbG95bWVudD8uW3N0YWdlLm5hbWVdID8/IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5kZWZhdWx0LFxuICAgICAgICAuLi5zdGFnZS5tYW51YWxBcHByb3ZhbCAmJiB7XG4gICAgICAgICAgd2hlbjogZ2l0bGFiLkpvYldoZW4uTUFOVUFMLFxuICAgICAgICB9LFxuICAgICAgICBvbmx5OiB7XG4gICAgICAgICAgcmVmczogW3RoaXMuYnJhbmNoTmFtZV0sXG4gICAgICAgIH0sXG4gICAgICAgIG5lZWRzOiBbXG4gICAgICAgICAgeyBqb2I6ICdzeW50aCcsIGFydGlmYWN0czogdHJ1ZSB9LFxuICAgICAgICAgIHsgam9iOiAncHVibGlzaF9hc3NldHMnIH0sXG4gICAgICAgICAgLi4uKHN0YWdlLmRpZmZUeXBlICE9PSBDZGtEaWZmVHlwZS5OT05FKSA/IFt7IGpvYjogYGRpZmYtJHtzdGFnZS5uYW1lfWAgfV0gOiBbXSxcbiAgICAgICAgICAuLi5kZXBsb3lTdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyksXG4gICAgICAgIF0sXG4gICAgICAgIHNjcmlwdDogZGVwbG95U3RlcHMuZmxhdE1hcChzID0+IHMuY29tbWFuZHMpLFxuICAgICAgICB2YXJpYWJsZXM6IGRlcGxveVN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMuZGVwbG95bWVudFN0YWdlcy5wdXNoKHN0YWdlLm5hbWUpO1xuICB9XG5cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGpvYiB0byBkZXBsb3kgdGhlIENESyBhcHBsaWNhdGlvbiB0byBBV1MuXG4gICAqIEBwYXJhbSBzdGFnZSAtIFRoZSBpbmRlcGVuZGVudCBzdGFnZSB0byBjcmVhdGUuXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlSW5kZXBlbmRlbnREZXBsb3ltZW50KHN0YWdlOiBJbmRlcGVuZGVudFN0YWdlKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlU3ludGhTdGVwKCksXG4gICAgICAuLi4oc3RhZ2UuZGlmZlR5cGUgIT09IENka0RpZmZUeXBlLk5PTkUgPyBbdGhpcy5wcm92aWRlRGlmZlN0ZXAoc3RhZ2UsIHN0YWdlLmRpZmZUeXBlID09IENka0RpZmZUeXBlLkZBU1QpXSA6IFtdKSxcbiAgICAgIHRoaXMucHJvdmlkZURlcGxveVN0ZXAoc3RhZ2UpLFxuICAgIF0ubWFwKHMgPT4gcy50b0dpdGxhYigpKTtcblxuICAgIHRoaXMuY29uZmlnLmFkZFN0YWdlcyhzdGFnZS5uYW1lKTtcbiAgICB0aGlzLmNvbmZpZy5hZGRKb2JzKHtcbiAgICAgIFtgZGVwbG95LSR7c3RhZ2UubmFtZX1gXToge1xuICAgICAgICBleHRlbmRzOiBbJy5hd3NfYmFzZScsICcuYXJ0aWZhY3RzX2Nka2RlcGxveScsIC4uLnN0ZXBzLmZsYXRNYXAocyA9PiBzLmV4dGVuc2lvbnMpXSxcbiAgICAgICAgc3RhZ2U6IHN0YWdlLm5hbWUsXG4gICAgICAgIHRhZ3M6IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5kZXBsb3ltZW50Py5bc3RhZ2UubmFtZV0gPz8gdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRlZmF1bHQsXG4gICAgICAgIC4uLnN0YWdlLmRlcGxveU9uUHVzaCAmJiB7XG4gICAgICAgICAgb25seToge1xuICAgICAgICAgICAgcmVmczogW3RoaXMuYnJhbmNoTmFtZV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uIXN0YWdlLmRlcGxveU9uUHVzaCAmJiB7XG4gICAgICAgICAgd2hlbjogZ2l0bGFiLkpvYldoZW4uTUFOVUFMLFxuICAgICAgICB9LFxuICAgICAgICBuZWVkczogc3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpLFxuICAgICAgICBzY3JpcHQ6IHN0ZXBzLmZsYXRNYXAocyA9PiBzLmNvbW1hbmRzKSxcbiAgICAgICAgdmFyaWFibGVzOiBzdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICB9KTtcblxuICB9XG5cbiAgcHVibGljIGVuZ2luZVR5cGUoKTogUGlwZWxpbmVFbmdpbmUge1xuICAgIHJldHVybiBQaXBlbGluZUVuZ2luZS5HSVRMQUI7XG4gIH1cblxufVxuXG4iXX0=
238
+ GitlabCDKPipeline[_a] = { fqn: "projen-pipelines.GitlabCDKPipeline", version: "0.3.8" };
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0bGFiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9naXRsYWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBd0M7QUFDeEMsaUNBQXlHO0FBQ3pHLHNDQUEyQztBQUUzQyxzRUFBcUU7QUErQnJFOzs7O0dBSUc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLGtCQUFXO0lBY2hEOzs7Ozs7T0FNRztJQUNILFlBQVksR0FBK0IsRUFBVSxPQUFpQztRQUNwRixLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRCtCLFlBQU8sR0FBUCxPQUFPLENBQTBCO1FBVnRGLDRDQUE0QztRQUNwQyxxQkFBZ0IsR0FBYSxFQUFFLENBQUM7UUFZdEMsdUNBQXVDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFNLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFO1lBQ2hELE1BQU0sRUFBRSxFQUFFO1lBQ1YsSUFBSSxFQUFFLEVBQUU7U0FDVCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDLENBQUMsNkNBQTZDO1FBQ25GLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSw2Q0FBNkMsQ0FBQztRQUUvRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRW5CLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXpCLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQywyQkFBMkIsQ0FB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O29CQUN4QixJQUFJLEVBQUUsZUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2lCQUM1QjtnQkFDRCxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ2xDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDdEMsU0FBUyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDdEU7U0FDRixDQUFDLENBQUM7SUFFTCxDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU8sdUJBQWMsQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQzs7QUEvUEgsOENBaVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzY2RrLCBnaXRsYWIgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQ2RrRGlmZlR5cGUsIENES1BpcGVsaW5lLCBDREtQaXBlbGluZU9wdGlvbnMsIERlcGxveW1lbnRTdGFnZSwgSW5kZXBlbmRlbnRTdGFnZSB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBQaXBlbGluZUVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZSc7XG5pbXBvcnQgeyBQaXBlbGluZVN0ZXAgfSBmcm9tICcuLi9zdGVwcyc7XG5pbXBvcnQgeyBDZGtPdXRwdXRzU3VtbWFyeVN0ZXAgfSBmcm9tICcuLi9zdGVwcy9naXRodWItc3VtbWFyeS5zdGVwJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBHaXRMYWIgcnVubmVyIHRhZ3MgdXNlZCB3aXRoaW4gdGhlIENJL0NEIHBpcGVsaW5lIGZvciB2YXJpb3VzIHN0YWdlcy5cbiAqIFRoaXMgYWxsb3dzIGZvciBzcGVjaWZ5aW5nIGRpZmZlcmVudCBydW5uZXJzIGJhc2VkIG9uIHRoZSB0YWdzIGZvciBkaWZmZXJlbnQgc3RhZ2VzIG9mIHRoZSBwaXBlbGluZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRsYWJSdW5uZXJUYWdzIHtcbiAgLyoqIERlZmF1bHQgcnVubmVyIHRhZ3MgdXNlZCBpZiBzcGVjaWZpYyBzdGFnZSB0YWdzIGFyZSBub3QgcHJvdmlkZWQuICovXG4gIHJlYWRvbmx5IGRlZmF1bHQ/OiBzdHJpbmdbXTtcbiAgLyoqIFJ1bm5lciB0YWdzIGZvciB0aGUgc3ludGhlc2lzIHN0YWdlLiAqL1xuICByZWFkb25seSBzeW50aD86IHN0cmluZ1tdO1xuICAvKiogUnVubmVyIHRhZ3MgZm9yIHRoZSBhc3NldCBwdWJsaXNoaW5nIHN0YWdlLiAqL1xuICByZWFkb25seSBhc3NldFB1Ymxpc2hpbmc/OiBzdHJpbmdbXTtcbiAgLyoqIEEgbWFwIG9mIHN0YWdlIG5hbWVzIHRvIHJ1bm5lciB0YWdzIGZvciB0aGUgZGlmZiBvcGVyYXRpb24uICovXG4gIHJlYWRvbmx5IGRpZmY/OiB7IFtzdGFnZTogc3RyaW5nXTogc3RyaW5nW10gfTtcbiAgLyoqIEEgbWFwIG9mIHN0YWdlIG5hbWVzIHRvIHJ1bm5lciB0YWdzIGZvciB0aGUgZGVwbG95bWVudCBvcGVyYXRpb24uICovXG4gIHJlYWRvbmx5IGRlcGxveW1lbnQ/OiB7IFtzdGFnZTogc3RyaW5nXTogc3RyaW5nW10gfTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb25maWd1cmluZyB0aGUgR2l0TGFiIENESyBwaXBlbGluZSwgZXh0ZW5kaW5nIHRoZSBiYXNlIENESyBwaXBlbGluZSBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdpdGxhYkNES1BpcGVsaW5lT3B0aW9ucyBleHRlbmRzIENES1BpcGVsaW5lT3B0aW9ucyB7XG4gIC8qKiBSdW5uZXIgdGFncyBjb25maWd1cmF0aW9uIGZvciB0aGUgcGlwZWxpbmUuICovXG4gIHJlYWRvbmx5IHJ1bm5lclRhZ3M/OiBHaXRsYWJSdW5uZXJUYWdzO1xuICAvKiogVGhlIERvY2tlciBpbWFnZSB0byB1c2UgZm9yIHJ1bm5pbmcgdGhlIHBpcGVsaW5lIGpvYnMuICovXG4gIHJlYWRvbmx5IGltYWdlPzogc3RyaW5nO1xuXG4gIC8vIHJlYWRvbmx5IHB1Ymxpc2hlZENsb3VkQXNzZW1ibGllcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIEdpdGxhYkNES1BpcGVsaW5lIGNsYXNzIGV4dGVuZHMgQ0RLUGlwZWxpbmUgdG8gcHJvdmlkZSBhIHdheSB0byBjb25maWd1cmUgYW5kIGV4ZWN1dGVcbiAqIEFXUyBDREsgZGVwbG95bWVudCBwaXBlbGluZXMgd2l0aGluIEdpdExhYiBDSS9DRCBlbnZpcm9ubWVudHMuIEl0IGludGVncmF0ZXMgSUFNIHJvbGUgbWFuYWdlbWVudCxcbiAqIHJ1bm5lciBjb25maWd1cmF0aW9uLCBhbmQgZGVmaW5lcyBzdGFnZXMgYW5kIGpvYnMgZm9yIHRoZSBkZXBsb3ltZW50IHdvcmtmbG93LlxuICovXG5leHBvcnQgY2xhc3MgR2l0bGFiQ0RLUGlwZWxpbmUgZXh0ZW5kcyBDREtQaXBlbGluZSB7XG5cbiAgLyoqIEluZGljYXRlcyBpZiB2ZXJzaW9uZWQgYXJ0aWZhY3RzIGFyZSByZXF1aXJlZC4gQ3VycmVudGx5IHNldCB0byBmYWxzZSAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgRG9ja2VyIGltYWdlIHVzZWQgZm9yIHBpcGVsaW5lIGpvYnMuIERlZmF1bHRzIHRvIGEgc3BlY2lmaWVkIGltYWdlIG9yIGEgZGVmYXVsdCB2YWx1ZS4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGpvYkltYWdlOiBzdHJpbmc7XG5cbiAgLyoqIEdpdExhYiBDSS9DRCBjb25maWd1cmF0aW9uIG9iamVjdC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbmZpZzogZ2l0bGFiLkdpdGxhYkNvbmZpZ3VyYXRpb247XG5cbiAgLyoqIExpc3Qgb2YgZGVwbG95bWVudCBzdGFnZXMgYXMgc3RyaW5ncy4gKi9cbiAgcHJpdmF0ZSBkZXBsb3ltZW50U3RhZ2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIGluc3RhbmNlIG9mIEdpdGxhYkNES1BpcGVsaW5lLCBpbml0aWFsaXppbmcgdGhlIEdpdExhYiBDSS9DRCBjb25maWd1cmF0aW9uXG4gICAqIGFuZCBzZXR0aW5nIHVwIHRoZSBuZWNlc3Nhcnkgc3RhZ2VzIGFuZCBqb2JzIGZvciBBV1MgQ0RLIGRlcGxveW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7YXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHB9IGFwcCAtIFRoZSBBV1MgQ0RLIGFwcCBhc3NvY2lhdGVkIHdpdGggdGhlIHBpcGVsaW5lLlxuICAgKiBAcGFyYW0ge0dpdGxhYkNES1BpcGVsaW5lT3B0aW9uc30gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHBpcGVsaW5lLlxuICAgKi9cbiAgY29uc3RydWN0b3IoYXBwOiBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcCwgcHJpdmF0ZSBvcHRpb25zOiBHaXRsYWJDREtQaXBlbGluZU9wdGlvbnMpIHtcbiAgICBzdXBlcihhcHAsIG9wdGlvbnMpO1xuXG4gICAgLy8gVE9ETyB1c2UgZXhpc3RpbmcgY29uZmlnIGlmIHBvc3NpYmxlXG4gICAgdGhpcy5jb25maWcgPSBuZXcgZ2l0bGFiLkdpdGxhYkNvbmZpZ3VyYXRpb24oYXBwLCB7XG4gICAgICBzdGFnZXM6IFtdLFxuICAgICAgam9iczoge30sXG4gICAgfSk7XG5cbiAgICB0aGlzLm5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzID0gZmFsc2U7IC8vIG9wdGlvbnMucHVibGlzaGVkQ2xvdWRBc3NlbWJsaWVzID8/IGZhbHNlO1xuICAgIHRoaXMuam9iSW1hZ2UgPSBvcHRpb25zLmltYWdlID8/ICdpbWFnZToganNpaS9zdXBlcmNoYWluOjEtYnVzdGVyLXNsaW0tbm9kZTE4JztcblxuICAgIHRoaXMuc2V0dXBTbmlwcGV0cygpO1xuXG4gICAgdGhpcy5jcmVhdGVTeW50aCgpO1xuXG4gICAgdGhpcy5jcmVhdGVBc3NldFVwbG9hZCgpO1xuXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBvcHRpb25zLnN0YWdlcykge1xuICAgICAgdGhpcy5jcmVhdGVEZXBsb3ltZW50KHN0YWdlKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIChvcHRpb25zLmluZGVwZW5kZW50U3RhZ2VzID8/IFtdKSkge1xuICAgICAgdGhpcy5jcmVhdGVJbmRlcGVuZGVudERlcGxveW1lbnQoc3RhZ2UpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmZlYXR1cmVTdGFnZXMpIHtcbiAgICAgIHRoaXMuY3JlYXRlRmVhdHVyZVdvcmtmbG93cygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIGJhc2Ugam9iIHNuaXBwZXRzIGZvciBhcnRpZmFjdCBoYW5kbGluZyBhbmQgQVdTIGNvbmZpZ3VyYXRpb24uXG4gICAqIFRoaXMgbWV0aG9kIGRlZmluZXMgcmV1c2FibGUgam9iIGNvbmZpZ3VyYXRpb25zIHRvIGJlIGV4dGVuZGVkIGJ5IHNwZWNpZmljIHBpcGVsaW5lIGpvYnMsXG4gICAqIGZhY2lsaXRhdGluZyBhcnRpZmFjdCBjYWNoaW5nIGFuZCBBV1MgYXV0aGVudGljYXRpb24gc2V0dXAuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0dXBTbmlwcGV0cygpIHtcbiAgICB0aGlzLmNvbmZpZy5hZGRKb2JzKHtcbiAgICAgICcuYXJ0aWZhY3RzX2Nkayc6IHtcbiAgICAgICAgYXJ0aWZhY3RzOiB7XG4gICAgICAgICAgd2hlbjogZ2l0bGFiLkNhY2hlV2hlbi5PTl9TVUNDRVNTLFxuICAgICAgICAgIGV4cGlyZUluOiAnMzAgZGF5cycsXG4gICAgICAgICAgbmFtZTogJ0NESyBBc3NlbWJseSAtICRDSV9KT0JfTkFNRS0kQ0lfQ09NTUlUX1JFRl9TTFVHJyxcbiAgICAgICAgICB1bnRyYWNrZWQ6IGZhbHNlLFxuICAgICAgICAgIHBhdGhzOiBbJ2Nkay5vdXQnXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAnLmFydGlmYWN0c19jZGtkZXBsb3knOiB7XG4gICAgICAgIGFydGlmYWN0czoge1xuICAgICAgICAgIHdoZW46IGdpdGxhYi5DYWNoZVdoZW4uT05fU1VDQ0VTUyxcbiAgICAgICAgICBleHBpcmVJbjogJzMwIGRheXMnLFxuICAgICAgICAgIG5hbWU6ICdDREsgT3V0cHV0cyAtICRDSV9KT0JfTkFNRS0kQ0lfQ09NTUlUX1JFRl9TTFVHJyxcbiAgICAgICAgICB1bnRyYWNrZWQ6IGZhbHNlLFxuICAgICAgICAgIHBhdGhzOiBbJ2Nkay1vdXRwdXRzLSouanNvbiddLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgICcuYXdzX2Jhc2UnOiB7XG4gICAgICAgIGltYWdlOiB7IG5hbWU6IHRoaXMuam9iSW1hZ2UgfSxcbiAgICAgICAgaWRUb2tlbnM6IHtcbiAgICAgICAgICBBV1NfVE9LRU46IHtcbiAgICAgICAgICAgIGF1ZDogJ2h0dHBzOi8vc3RzLmFtYXpvbmF3cy5jb20nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIENJOiAndHJ1ZScsXG4gICAgICAgICAgLy8gTlBNX1JFR0lTVFJZOiAneHh4J1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVGZWF0dXJlV29ya2Zsb3dzKCk6IHZvaWQge1xuICAgIC8vIFRPRE8gZGVwbG95IGFuZCBkZXN0cm95IGZlYXR1cmUgc3RhZ2VzXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgJ3N5bnRoJyBzdGFnZSBvZiB0aGUgcGlwZWxpbmUgdG8gc3ludGhlc2l6ZSBBV1MgQ0RLIGFwcGxpY2F0aW9ucy5cbiAgICogVGhpcyBtZXRob2QgY29uZmlndXJlcyB0aGUgam9iIHRvIGV4ZWN1dGUgQ0RLIHN5bnRoZXNpcywgYXBwbHlpbmcgdGhlIGFwcHJvcHJpYXRlIElBTSByb2xlXG4gICAqIGZvciBBV1MgY29tbWFuZHMgYW5kIHNwZWNpZnlpbmcgcnVubmVyIHRhZ3MgZm9yIGpvYiBleGVjdXRpb24uIFRoZSBzeW50aGVzaXplZCBvdXRwdXRzIGFyZVxuICAgKiBjb25maWd1cmVkIHRvIGJlIGNhY2hlZCBhcyBhcnRpZmFjdHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlU3ludGgoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHM6IFBpcGVsaW5lU3RlcFtdID0gW1xuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZVN5bnRoU3RlcCgpLFxuICAgIF07XG5cbiAgICBjb25zdCBnaXRsYWJTdGVwcyA9IHN0ZXBzLm1hcChzID0+IHMudG9HaXRsYWIoKSk7XG5cbiAgICB0aGlzLmNvbmZpZy5hZGRTdGFnZXMoJ3N5bnRoJyk7XG4gICAgdGhpcy5jb25maWcuYWRkSm9icyh7XG4gICAgICBzeW50aDoge1xuICAgICAgICBleHRlbmRzOiBbJy5hd3NfYmFzZScsICcuYXJ0aWZhY3RzX2NkaycsIC4uLmdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLmV4dGVuc2lvbnMpXSxcbiAgICAgICAgbmVlZHM6IGdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKSxcbiAgICAgICAgc3RhZ2U6ICdzeW50aCcsXG4gICAgICAgIHRhZ3M6IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5zeW50aCA/PyB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVmYXVsdCxcbiAgICAgICAgc2NyaXB0OiBnaXRsYWJTdGVwcy5mbGF0TWFwKHMgPT4gcy5jb21tYW5kcyksXG4gICAgICAgIHZhcmlhYmxlczogZ2l0bGFiU3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCB0aGUgYXNzZXQgcHVibGlzaGluZyBzdGFnZSBvZiB0aGUgcGlwZWxpbmUuXG4gICAqIFRoaXMgbWV0aG9kIGNvbmZpZ3VyZXMgYSBqb2IgdG8gdXBsb2FkIHN5bnRoZXNpemVkIGFzc2V0cyB0byBBV1MsIGhhbmRsaW5nIElBTSByb2xlXG4gICAqIGF1dGhlbnRpY2F0aW9uIGFuZCBzcGVjaWZ5aW5nIHJ1bm5lciB0YWdzLiBJdCBkZXBlbmRzIG9uIHRoZSBzdWNjZXNzZnVsIGNvbXBsZXRpb25cbiAgICogb2YgdGhlICdzeW50aCcgc3RhZ2UsIGVuc3VyaW5nIGFzc2V0cyBhcmUgb25seSBwdWJsaXNoZWQgYWZ0ZXIgc3VjY2Vzc2Z1bCBzeW50aGVzaXMuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlQXNzZXRVcGxvYWQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlQXNzZXRVcGxvYWRTdGVwKCksXG4gICAgXTtcblxuICAgIGlmICh0aGlzLm5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzKSB7XG4gICAgICBzdGVwcy5wdXNoKHRoaXMucHJvdmlkZUFzc2VtYmx5VXBsb2FkU3RlcCgpKTtcbiAgICB9XG5cbiAgICBjb25zdCBnaXRsYWJTdGVwcyA9IHN0ZXBzLm1hcChzID0+IHMudG9HaXRsYWIoKSk7XG5cbiAgICB0aGlzLmNvbmZpZy5hZGRTdGFnZXMoJ3B1Ymxpc2hfYXNzZXRzJyk7XG4gICAgdGhpcy5jb25maWcuYWRkSm9icyh7XG4gICAgICBwdWJsaXNoX2Fzc2V0czoge1xuICAgICAgICBleHRlbmRzOiBbJy5hd3NfYmFzZScsIC4uLmdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLmV4dGVuc2lvbnMpXSxcbiAgICAgICAgc3RhZ2U6ICdwdWJsaXNoX2Fzc2V0cycsXG4gICAgICAgIHRhZ3M6IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5hc3NldFB1Ymxpc2hpbmcgPz8gdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRlZmF1bHQsXG4gICAgICAgIG5lZWRzOiBbeyBqb2I6ICdzeW50aCcsIGFydGlmYWN0czogdHJ1ZSB9LCAuLi5naXRsYWJTdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyldLFxuICAgICAgICBzY3JpcHQ6IGdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLmNvbW1hbmRzKSxcbiAgICAgICAgdmFyaWFibGVzOiBnaXRsYWJTdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEeW5hbWljYWxseSBjcmVhdGVzIGRlcGxveW1lbnQgc3RhZ2VzIGJhc2VkIG9uIHRoZSBkZXBsb3ltZW50IGNvbmZpZ3VyYXRpb24uXG4gICAqIEZvciBlYWNoIHByb3ZpZGVkIGRlcGxveW1lbnQgc3RhZ2UsIHRoaXMgbWV0aG9kIHNldHMgdXAgam9icyBmb3IgJ2RpZmYnIGFuZCAnZGVwbG95JyBhY3Rpb25zLFxuICAgKiBhcHBseWluZyB0aGUgY29ycmVjdCBJQU0gcm9sZXMgYW5kIHJ1bm5lciB0YWdzLiBJdCBzdXBwb3J0cyBjb25kaXRpb25hbCBtYW51YWwgYXBwcm92YWwgZm9yXG4gICAqIGRlcGxveW1lbnQgc3RhZ2VzLCBwcm92aWRpbmcgZmxleGliaWxpdHkgaW4gdGhlIGRlcGxveW1lbnQgd29ya2Zsb3cuXG4gICAqXG4gICAqIEBwYXJhbSB7RGVwbG95bWVudFN0YWdlfSBzdGFnZSAtIFRoZSBkZXBsb3ltZW50IHN0YWdlIGNvbmZpZ3VyYXRpb24gdG8gc2V0IHVwLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZURlcGxveW1lbnQoc3RhZ2U6IERlcGxveW1lbnRTdGFnZSk6IHZvaWQge1xuICAgIGNvbnN0IGRpZmZTdGVwcyA9IFtcbiAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICB0aGlzLnByb3ZpZGVEaWZmU3RlcChzdGFnZSwgc3RhZ2UuZGlmZlR5cGUgPT09IENka0RpZmZUeXBlLkZBU1QpLFxuICAgIF0ubWFwKHMgPT4gcy50b0dpdGxhYigpKTtcblxuXG4gICAgY29uc3QgZGVwbG95U3RlcHMgPSBbXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlRGVwbG95U3RlcChzdGFnZSksXG4gICAgICBuZXcgQ2RrT3V0cHV0c1N1bW1hcnlTdGVwKHRoaXMucHJvamVjdCwgeyBzdGFnZU5hbWU6IHN0YWdlLm5hbWUgfSksXG4gICAgXS5tYXAocyA9PiBzLnRvR2l0bGFiKCkpO1xuXG4gICAgdGhpcy5jb25maWcuYWRkU3RhZ2VzKHN0YWdlLm5hbWUpO1xuICAgIHRoaXMuY29uZmlnLmFkZEpvYnMoe1xuICAgICAgLi4uKHN0YWdlLmRpZmZUeXBlICE9PSBDZGtEaWZmVHlwZS5OT05FKSAmJiB7XG4gICAgICAgIFtgZGlmZi0ke3N0YWdlLm5hbWV9YF06IHtcbiAgICAgICAgICBleHRlbmRzOiBbJy5hd3NfYmFzZScsIC4uLmRpZmZTdGVwcy5mbGF0TWFwKHMgPT4gcy5leHRlbnNpb25zKV0sXG4gICAgICAgICAgc3RhZ2U6IHN0YWdlLm5hbWUsXG4gICAgICAgICAgdGFnczogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRpZmY/LltzdGFnZS5uYW1lXSA/PyB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVwbG95bWVudD8uW3N0YWdlLm5hbWVdID8/IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5kZWZhdWx0LFxuICAgICAgICAgIG9ubHk6IHtcbiAgICAgICAgICAgIHJlZnM6IFt0aGlzLmJyYW5jaE5hbWVdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmVlZHM6IFtcbiAgICAgICAgICAgIHsgam9iOiAnc3ludGgnLCBhcnRpZmFjdHM6IHRydWUgfSxcbiAgICAgICAgICAgIHsgam9iOiAncHVibGlzaF9hc3NldHMnIH0sXG4gICAgICAgICAgICAuLi5kaWZmU3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgc2NyaXB0OiBkaWZmU3RlcHMuZmxhdE1hcChzID0+IHMuY29tbWFuZHMpLFxuICAgICAgICAgIHZhcmlhYmxlczogZGlmZlN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgW2BkZXBsb3ktJHtzdGFnZS5uYW1lfWBdOiB7XG4gICAgICAgIGV4dGVuZHM6IFsnLmF3c19iYXNlJywgJy5hcnRpZmFjdHNfY2RrZGVwbG95JywgLi4uZGVwbG95U3RlcHMuZmxhdE1hcChzID0+IHMuZXh0ZW5zaW9ucyldLFxuICAgICAgICBzdGFnZTogc3RhZ2UubmFtZSxcbiAgICAgICAgdGFnczogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRlcGxveW1lbnQ/LltzdGFnZS5uYW1lXSA/PyB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVmYXVsdCxcbiAgICAgICAgLi4uc3RhZ2UubWFudWFsQXBwcm92YWwgJiYge1xuICAgICAgICAgIHdoZW46IGdpdGxhYi5Kb2JXaGVuLk1BTlVBTCxcbiAgICAgICAgfSxcbiAgICAgICAgb25seToge1xuICAgICAgICAgIHJlZnM6IFt0aGlzLmJyYW5jaE5hbWVdLFxuICAgICAgICB9LFxuICAgICAgICBuZWVkczogW1xuICAgICAgICAgIHsgam9iOiAnc3ludGgnLCBhcnRpZmFjdHM6IHRydWUgfSxcbiAgICAgICAgICB7IGpvYjogJ3B1Ymxpc2hfYXNzZXRzJyB9LFxuICAgICAgICAgIC4uLihzdGFnZS5kaWZmVHlwZSAhPT0gQ2RrRGlmZlR5cGUuTk9ORSkgPyBbeyBqb2I6IGBkaWZmLSR7c3RhZ2UubmFtZX1gIH1dIDogW10sXG4gICAgICAgICAgLi4uZGVwbG95U3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpLFxuICAgICAgICBdLFxuICAgICAgICBzY3JpcHQ6IGRlcGxveVN0ZXBzLmZsYXRNYXAocyA9PiBzLmNvbW1hbmRzKSxcbiAgICAgICAgdmFyaWFibGVzOiBkZXBsb3lTdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLmRlcGxveW1lbnRTdGFnZXMucHVzaChzdGFnZS5uYW1lKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBqb2IgdG8gZGVwbG95IHRoZSBDREsgYXBwbGljYXRpb24gdG8gQVdTLlxuICAgKiBAcGFyYW0gc3RhZ2UgLSBUaGUgaW5kZXBlbmRlbnQgc3RhZ2UgdG8gY3JlYXRlLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZUluZGVwZW5kZW50RGVwbG95bWVudChzdGFnZTogSW5kZXBlbmRlbnRTdGFnZSk6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXBzID0gW1xuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZVN5bnRoU3RlcCgpLFxuICAgICAgLi4uKHN0YWdlLmRpZmZUeXBlICE9PSBDZGtEaWZmVHlwZS5OT05FID8gW3RoaXMucHJvdmlkZURpZmZTdGVwKHN0YWdlLCBzdGFnZS5kaWZmVHlwZSA9PSBDZGtEaWZmVHlwZS5GQVNUKV0gOiBbXSksXG4gICAgICB0aGlzLnByb3ZpZGVEZXBsb3lTdGVwKHN0YWdlKSxcbiAgICAgIG5ldyBDZGtPdXRwdXRzU3VtbWFyeVN0ZXAodGhpcy5wcm9qZWN0LCB7IHN0YWdlTmFtZTogc3RhZ2UubmFtZSB9KSxcbiAgICBdLm1hcChzID0+IHMudG9HaXRsYWIoKSk7XG5cbiAgICB0aGlzLmNvbmZpZy5hZGRTdGFnZXMoc3RhZ2UubmFtZSk7XG4gICAgdGhpcy5jb25maWcuYWRkSm9icyh7XG4gICAgICBbYGRlcGxveS0ke3N0YWdlLm5hbWV9YF06IHtcbiAgICAgICAgZXh0ZW5kczogWycuYXdzX2Jhc2UnLCAnLmFydGlmYWN0c19jZGtkZXBsb3knLCAuLi5zdGVwcy5mbGF0TWFwKHMgPT4gcy5leHRlbnNpb25zKV0sXG4gICAgICAgIHN0YWdlOiBzdGFnZS5uYW1lLFxuICAgICAgICB0YWdzOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVwbG95bWVudD8uW3N0YWdlLm5hbWVdID8/IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5kZWZhdWx0LFxuICAgICAgICAuLi5zdGFnZS5kZXBsb3lPblB1c2ggJiYge1xuICAgICAgICAgIG9ubHk6IHtcbiAgICAgICAgICAgIHJlZnM6IFt0aGlzLmJyYW5jaE5hbWVdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC4uLiFzdGFnZS5kZXBsb3lPblB1c2ggJiYge1xuICAgICAgICAgIHdoZW46IGdpdGxhYi5Kb2JXaGVuLk1BTlVBTCxcbiAgICAgICAgfSxcbiAgICAgICAgbmVlZHM6IHN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKSxcbiAgICAgICAgc2NyaXB0OiBzdGVwcy5mbGF0TWFwKHMgPT4gcy5jb21tYW5kcyksXG4gICAgICAgIHZhcmlhYmxlczogc3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgfVxuXG4gIHB1YmxpYyBlbmdpbmVUeXBlKCk6IFBpcGVsaW5lRW5naW5lIHtcbiAgICByZXR1cm4gUGlwZWxpbmVFbmdpbmUuR0lUTEFCO1xuICB9XG5cbn1cblxuIl19