cdk-dms-replication 0.1.12 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/API.md CHANGED
@@ -2916,6 +2916,260 @@ Subnet selection for the replication subnet group.
2916
2916
 
2917
2917
  ---
2918
2918
 
2919
+ ### DynamoDbAttributeMapping <a name="DynamoDbAttributeMapping" id="cdk-dms-replication.DynamoDbAttributeMapping"></a>
2920
+
2921
+ Mapping from a source column (or DMS expression) to a non-key attribute on the DynamoDB target.
2922
+
2923
+ Exactly one of `sourceColumn` or `value` must be set.
2924
+ Source columns not listed in `attributeMappings` or `excludeColumns` pass
2925
+ through with the source column name.
2926
+
2927
+ #### Initializer <a name="Initializer" id="cdk-dms-replication.DynamoDbAttributeMapping.Initializer"></a>
2928
+
2929
+ ```typescript
2930
+ import { DynamoDbAttributeMapping } from 'cdk-dms-replication'
2931
+
2932
+ const dynamoDbAttributeMapping: DynamoDbAttributeMapping = { ... }
2933
+ ```
2934
+
2935
+ #### Properties <a name="Properties" id="Properties"></a>
2936
+
2937
+ | **Name** | **Type** | **Description** |
2938
+ | --- | --- | --- |
2939
+ | <code><a href="#cdk-dms-replication.DynamoDbAttributeMapping.property.attributeSubType">attributeSubType</a></code> | <code><a href="#cdk-dms-replication.DynamoDbAttributeSubType">DynamoDbAttributeSubType</a></code> | DynamoDB attribute sub-type (`string`, `number`, or `binary`). |
2940
+ | <code><a href="#cdk-dms-replication.DynamoDbAttributeMapping.property.targetAttributeName">targetAttributeName</a></code> | <code>string</code> | Name of the attribute on the DynamoDB target item. |
2941
+ | <code><a href="#cdk-dms-replication.DynamoDbAttributeMapping.property.sourceColumn">sourceColumn</a></code> | <code>string</code> | Name of a single column on the relational source. |
2942
+ | <code><a href="#cdk-dms-replication.DynamoDbAttributeMapping.property.value">value</a></code> | <code>string</code> | Raw DMS value expression, used verbatim. |
2943
+
2944
+ ---
2945
+
2946
+ ##### `attributeSubType`<sup>Required</sup> <a name="attributeSubType" id="cdk-dms-replication.DynamoDbAttributeMapping.property.attributeSubType"></a>
2947
+
2948
+ ```typescript
2949
+ public readonly attributeSubType: DynamoDbAttributeSubType;
2950
+ ```
2951
+
2952
+ - *Type:* <a href="#cdk-dms-replication.DynamoDbAttributeSubType">DynamoDbAttributeSubType</a>
2953
+
2954
+ DynamoDB attribute sub-type (`string`, `number`, or `binary`).
2955
+
2956
+ ---
2957
+
2958
+ ##### `targetAttributeName`<sup>Required</sup> <a name="targetAttributeName" id="cdk-dms-replication.DynamoDbAttributeMapping.property.targetAttributeName"></a>
2959
+
2960
+ ```typescript
2961
+ public readonly targetAttributeName: string;
2962
+ ```
2963
+
2964
+ - *Type:* string
2965
+
2966
+ Name of the attribute on the DynamoDB target item.
2967
+
2968
+ ---
2969
+
2970
+ ##### `sourceColumn`<sup>Optional</sup> <a name="sourceColumn" id="cdk-dms-replication.DynamoDbAttributeMapping.property.sourceColumn"></a>
2971
+
2972
+ ```typescript
2973
+ public readonly sourceColumn: string;
2974
+ ```
2975
+
2976
+ - *Type:* string
2977
+
2978
+ Name of a single column on the relational source.
2979
+
2980
+ The builder wraps this
2981
+ in the DMS expression `${sourceColumn}`. Mutually exclusive with `value`.
2982
+
2983
+ ---
2984
+
2985
+ ##### `value`<sup>Optional</sup> <a name="value" id="cdk-dms-replication.DynamoDbAttributeMapping.property.value"></a>
2986
+
2987
+ ```typescript
2988
+ public readonly value: string;
2989
+ ```
2990
+
2991
+ - *Type:* string
2992
+
2993
+ Raw DMS value expression, used verbatim.
2994
+
2995
+ Use this for composite values or
2996
+ other expressions like `'STATUS#${status}'`. Mutually exclusive with
2997
+ `sourceColumn`.
2998
+
2999
+ ---
3000
+
3001
+ ### DynamoDbKeyMapping <a name="DynamoDbKeyMapping" id="cdk-dms-replication.DynamoDbKeyMapping"></a>
3002
+
3003
+ Mapping from a source column (or DMS expression) to a DynamoDB partition or sort key attribute.
3004
+
3005
+ Exactly one of `sourceColumn` or `value` must be set.
3006
+
3007
+ #### Initializer <a name="Initializer" id="cdk-dms-replication.DynamoDbKeyMapping.Initializer"></a>
3008
+
3009
+ ```typescript
3010
+ import { DynamoDbKeyMapping } from 'cdk-dms-replication'
3011
+
3012
+ const dynamoDbKeyMapping: DynamoDbKeyMapping = { ... }
3013
+ ```
3014
+
3015
+ #### Properties <a name="Properties" id="Properties"></a>
3016
+
3017
+ | **Name** | **Type** | **Description** |
3018
+ | --- | --- | --- |
3019
+ | <code><a href="#cdk-dms-replication.DynamoDbKeyMapping.property.attributeSubType">attributeSubType</a></code> | <code><a href="#cdk-dms-replication.DynamoDbAttributeSubType">DynamoDbAttributeSubType</a></code> | DynamoDB attribute sub-type (`string`, `number`, or `binary`). |
3020
+ | <code><a href="#cdk-dms-replication.DynamoDbKeyMapping.property.targetAttributeName">targetAttributeName</a></code> | <code>string</code> | Name of the partition/sort key attribute on the DynamoDB target item. |
3021
+ | <code><a href="#cdk-dms-replication.DynamoDbKeyMapping.property.sourceColumn">sourceColumn</a></code> | <code>string</code> | Name of a single column on the relational source. |
3022
+ | <code><a href="#cdk-dms-replication.DynamoDbKeyMapping.property.value">value</a></code> | <code>string</code> | Raw DMS value expression, used verbatim. |
3023
+
3024
+ ---
3025
+
3026
+ ##### `attributeSubType`<sup>Required</sup> <a name="attributeSubType" id="cdk-dms-replication.DynamoDbKeyMapping.property.attributeSubType"></a>
3027
+
3028
+ ```typescript
3029
+ public readonly attributeSubType: DynamoDbAttributeSubType;
3030
+ ```
3031
+
3032
+ - *Type:* <a href="#cdk-dms-replication.DynamoDbAttributeSubType">DynamoDbAttributeSubType</a>
3033
+
3034
+ DynamoDB attribute sub-type (`string`, `number`, or `binary`).
3035
+
3036
+ ---
3037
+
3038
+ ##### `targetAttributeName`<sup>Required</sup> <a name="targetAttributeName" id="cdk-dms-replication.DynamoDbKeyMapping.property.targetAttributeName"></a>
3039
+
3040
+ ```typescript
3041
+ public readonly targetAttributeName: string;
3042
+ ```
3043
+
3044
+ - *Type:* string
3045
+
3046
+ Name of the partition/sort key attribute on the DynamoDB target item.
3047
+
3048
+ ---
3049
+
3050
+ ##### `sourceColumn`<sup>Optional</sup> <a name="sourceColumn" id="cdk-dms-replication.DynamoDbKeyMapping.property.sourceColumn"></a>
3051
+
3052
+ ```typescript
3053
+ public readonly sourceColumn: string;
3054
+ ```
3055
+
3056
+ - *Type:* string
3057
+
3058
+ Name of a single column on the relational source.
3059
+
3060
+ The builder wraps this
3061
+ in the DMS expression `${sourceColumn}`. Mutually exclusive with `value`.
3062
+
3063
+ ---
3064
+
3065
+ ##### `value`<sup>Optional</sup> <a name="value" id="cdk-dms-replication.DynamoDbKeyMapping.property.value"></a>
3066
+
3067
+ ```typescript
3068
+ public readonly value: string;
3069
+ ```
3070
+
3071
+ - *Type:* string
3072
+
3073
+ Raw DMS value expression, used verbatim.
3074
+
3075
+ Use this for composite keys or
3076
+ other expressions like `'CUSTOMER#${customer_id}'`. Mutually exclusive
3077
+ with `sourceColumn`.
3078
+
3079
+ ---
3080
+
3081
+ ### DynamoDbObjectMappingOptions <a name="DynamoDbObjectMappingOptions" id="cdk-dms-replication.DynamoDbObjectMappingOptions"></a>
3082
+
3083
+ Options for `TableMappings.mapToDynamoDb`.
3084
+
3085
+ #### Initializer <a name="Initializer" id="cdk-dms-replication.DynamoDbObjectMappingOptions.Initializer"></a>
3086
+
3087
+ ```typescript
3088
+ import { DynamoDbObjectMappingOptions } from 'cdk-dms-replication'
3089
+
3090
+ const dynamoDbObjectMappingOptions: DynamoDbObjectMappingOptions = { ... }
3091
+ ```
3092
+
3093
+ #### Properties <a name="Properties" id="Properties"></a>
3094
+
3095
+ | **Name** | **Type** | **Description** |
3096
+ | --- | --- | --- |
3097
+ | <code><a href="#cdk-dms-replication.DynamoDbObjectMappingOptions.property.partitionKey">partitionKey</a></code> | <code><a href="#cdk-dms-replication.DynamoDbKeyMapping">DynamoDbKeyMapping</a></code> | Mapping for the DynamoDB partition (hash) key. |
3098
+ | <code><a href="#cdk-dms-replication.DynamoDbObjectMappingOptions.property.targetTableName">targetTableName</a></code> | <code>string</code> | Name of the target DynamoDB table. |
3099
+ | <code><a href="#cdk-dms-replication.DynamoDbObjectMappingOptions.property.attributeMappings">attributeMappings</a></code> | <code><a href="#cdk-dms-replication.DynamoDbAttributeMapping">DynamoDbAttributeMapping</a>[]</code> | Additional column-to-attribute mappings. |
3100
+ | <code><a href="#cdk-dms-replication.DynamoDbObjectMappingOptions.property.excludeColumns">excludeColumns</a></code> | <code>string[]</code> | Source columns to exclude from the migrated item. |
3101
+ | <code><a href="#cdk-dms-replication.DynamoDbObjectMappingOptions.property.sortKey">sortKey</a></code> | <code><a href="#cdk-dms-replication.DynamoDbKeyMapping">DynamoDbKeyMapping</a></code> | Mapping for the DynamoDB sort (range) key. |
3102
+
3103
+ ---
3104
+
3105
+ ##### `partitionKey`<sup>Required</sup> <a name="partitionKey" id="cdk-dms-replication.DynamoDbObjectMappingOptions.property.partitionKey"></a>
3106
+
3107
+ ```typescript
3108
+ public readonly partitionKey: DynamoDbKeyMapping;
3109
+ ```
3110
+
3111
+ - *Type:* <a href="#cdk-dms-replication.DynamoDbKeyMapping">DynamoDbKeyMapping</a>
3112
+
3113
+ Mapping for the DynamoDB partition (hash) key.
3114
+
3115
+ Required.
3116
+
3117
+ ---
3118
+
3119
+ ##### `targetTableName`<sup>Required</sup> <a name="targetTableName" id="cdk-dms-replication.DynamoDbObjectMappingOptions.property.targetTableName"></a>
3120
+
3121
+ ```typescript
3122
+ public readonly targetTableName: string;
3123
+ ```
3124
+
3125
+ - *Type:* string
3126
+
3127
+ Name of the target DynamoDB table.
3128
+
3129
+ ---
3130
+
3131
+ ##### `attributeMappings`<sup>Optional</sup> <a name="attributeMappings" id="cdk-dms-replication.DynamoDbObjectMappingOptions.property.attributeMappings"></a>
3132
+
3133
+ ```typescript
3134
+ public readonly attributeMappings: DynamoDbAttributeMapping[];
3135
+ ```
3136
+
3137
+ - *Type:* <a href="#cdk-dms-replication.DynamoDbAttributeMapping">DynamoDbAttributeMapping</a>[]
3138
+
3139
+ Additional column-to-attribute mappings.
3140
+
3141
+ Use this to rename non-key
3142
+ columns or change their DynamoDB sub-type. Columns not listed here pass
3143
+ through with the source column name.
3144
+
3145
+ ---
3146
+
3147
+ ##### `excludeColumns`<sup>Optional</sup> <a name="excludeColumns" id="cdk-dms-replication.DynamoDbObjectMappingOptions.property.excludeColumns"></a>
3148
+
3149
+ ```typescript
3150
+ public readonly excludeColumns: string[];
3151
+ ```
3152
+
3153
+ - *Type:* string[]
3154
+
3155
+ Source columns to exclude from the migrated item.
3156
+
3157
+ ---
3158
+
3159
+ ##### `sortKey`<sup>Optional</sup> <a name="sortKey" id="cdk-dms-replication.DynamoDbObjectMappingOptions.property.sortKey"></a>
3160
+
3161
+ ```typescript
3162
+ public readonly sortKey: DynamoDbKeyMapping;
3163
+ ```
3164
+
3165
+ - *Type:* <a href="#cdk-dms-replication.DynamoDbKeyMapping">DynamoDbKeyMapping</a>
3166
+
3167
+ Mapping for the DynamoDB sort (range) key.
3168
+
3169
+ Optional.
3170
+
3171
+ ---
3172
+
2919
3173
  ### DynamoDbSettings <a name="DynamoDbSettings" id="cdk-dms-replication.DynamoDbSettings"></a>
2920
3174
 
2921
3175
  Settings for Amazon DynamoDB target endpoints.
@@ -6541,6 +6795,7 @@ new TableMappings()
6541
6795
  | <code><a href="#cdk-dms-replication.TableMappings.explicitTable">explicitTable</a></code> | Explicitly include a single table. |
6542
6796
  | <code><a href="#cdk-dms-replication.TableMappings.includeSchema">includeSchema</a></code> | Include all tables in a schema. |
6543
6797
  | <code><a href="#cdk-dms-replication.TableMappings.includeTable">includeTable</a></code> | Include a specific table (or a wildcard pattern) within a schema. |
6798
+ | <code><a href="#cdk-dms-replication.TableMappings.mapToDynamoDb">mapToDynamoDb</a></code> | Map a relational source table to a DynamoDB target table. |
6544
6799
  | <code><a href="#cdk-dms-replication.TableMappings.removeColumn">removeColumn</a></code> | Remove a column from a table. |
6545
6800
  | <code><a href="#cdk-dms-replication.TableMappings.renameColumn">renameColumn</a></code> | Rename a column in a table. |
6546
6801
  | <code><a href="#cdk-dms-replication.TableMappings.renameSchema">renameSchema</a></code> | Rename a schema. |
@@ -6779,6 +7034,80 @@ Use `%` for `tableName` to match all tables in the schema.
6779
7034
 
6780
7035
  ---
6781
7036
 
7037
+ ##### `mapToDynamoDb` <a name="mapToDynamoDb" id="cdk-dms-replication.TableMappings.mapToDynamoDb"></a>
7038
+
7039
+ ```typescript
7040
+ public mapToDynamoDb(schemaName: string, tableName: string, options: DynamoDbObjectMappingOptions): TableMappings
7041
+ ```
7042
+
7043
+ Map a relational source table to a DynamoDB target table.
7044
+
7045
+ Emits a DMS `object-mapping` rule with `rule-action: map-record-to-record`.
7046
+ DMS requires this rule type when the target endpoint is DynamoDB; the
7047
+ partition key (and optional sort key) tell DMS how to build the item key
7048
+ from source columns.
7049
+
7050
+ Source columns not listed in `attributeMappings` or `excludeColumns` are
7051
+ migrated with the source column name as the attribute name.
7052
+
7053
+ For each key or attribute mapping, set either `sourceColumn` (a single
7054
+ column wrapped as `${col}`) or `value` (a raw DMS expression, e.g.
7055
+ `'CUSTOMER#${customer_id}'` for composite keys). Exactly one is required.
7056
+
7057
+ Calling this method twice with the same `schemaName`/`tableName` emits two
7058
+ separate rules; DMS will reject duplicate object-mapping rules at deploy
7059
+ time. Call it once per source table.
7060
+
7061
+ *Example*
7062
+
7063
+ ```typescript
7064
+ const mappings = new TableMappings()
7065
+ .includeTable('public', 'orders')
7066
+ .mapToDynamoDb('public', 'orders', {
7067
+ targetTableName: 'Orders',
7068
+ // Composite partition key from a literal prefix + source column:
7069
+ partitionKey: {
7070
+ value: 'CUSTOMER#${customer_id}',
7071
+ targetAttributeName: 'PK',
7072
+ attributeSubType: DynamoDbAttributeSubType.STRING,
7073
+ },
7074
+ // Bare source column for the sort key:
7075
+ sortKey: {
7076
+ sourceColumn: 'created_at',
7077
+ targetAttributeName: 'CreatedAt',
7078
+ attributeSubType: DynamoDbAttributeSubType.STRING,
7079
+ },
7080
+ excludeColumns: ['internal_flag'],
7081
+ attributeMappings: [
7082
+ {
7083
+ sourceColumn: 'customer_id',
7084
+ targetAttributeName: 'CustomerId',
7085
+ attributeSubType: DynamoDbAttributeSubType.STRING,
7086
+ },
7087
+ ],
7088
+ })
7089
+ .toJson();
7090
+ ```
7091
+
7092
+
7093
+ ###### `schemaName`<sup>Required</sup> <a name="schemaName" id="cdk-dms-replication.TableMappings.mapToDynamoDb.parameter.schemaName"></a>
7094
+
7095
+ - *Type:* string
7096
+
7097
+ ---
7098
+
7099
+ ###### `tableName`<sup>Required</sup> <a name="tableName" id="cdk-dms-replication.TableMappings.mapToDynamoDb.parameter.tableName"></a>
7100
+
7101
+ - *Type:* string
7102
+
7103
+ ---
7104
+
7105
+ ###### `options`<sup>Required</sup> <a name="options" id="cdk-dms-replication.TableMappings.mapToDynamoDb.parameter.options"></a>
7106
+
7107
+ - *Type:* <a href="#cdk-dms-replication.DynamoDbObjectMappingOptions">DynamoDbObjectMappingOptions</a>
7108
+
7109
+ ---
7110
+
6782
7111
  ##### `removeColumn` <a name="removeColumn" id="cdk-dms-replication.TableMappings.removeColumn"></a>
6783
7112
 
6784
7113
  ```typescript
@@ -7451,6 +7780,35 @@ Date partition sequence for S3 date-partitioned output.
7451
7780
  ---
7452
7781
 
7453
7782
 
7783
+ ### DynamoDbAttributeSubType <a name="DynamoDbAttributeSubType" id="cdk-dms-replication.DynamoDbAttributeSubType"></a>
7784
+
7785
+ DynamoDB attribute sub-type for object-mapping rules.
7786
+
7787
+ #### Members <a name="Members" id="Members"></a>
7788
+
7789
+ | **Name** | **Description** |
7790
+ | --- | --- |
7791
+ | <code><a href="#cdk-dms-replication.DynamoDbAttributeSubType.STRING">STRING</a></code> | *No description.* |
7792
+ | <code><a href="#cdk-dms-replication.DynamoDbAttributeSubType.NUMBER">NUMBER</a></code> | *No description.* |
7793
+ | <code><a href="#cdk-dms-replication.DynamoDbAttributeSubType.BINARY">BINARY</a></code> | *No description.* |
7794
+
7795
+ ---
7796
+
7797
+ ##### `STRING` <a name="STRING" id="cdk-dms-replication.DynamoDbAttributeSubType.STRING"></a>
7798
+
7799
+ ---
7800
+
7801
+
7802
+ ##### `NUMBER` <a name="NUMBER" id="cdk-dms-replication.DynamoDbAttributeSubType.NUMBER"></a>
7803
+
7804
+ ---
7805
+
7806
+
7807
+ ##### `BINARY` <a name="BINARY" id="cdk-dms-replication.DynamoDbAttributeSubType.BINARY"></a>
7808
+
7809
+ ---
7810
+
7811
+
7454
7812
  ### EncodingType <a name="EncodingType" id="cdk-dms-replication.EncodingType"></a>
7455
7813
 
7456
7814
  Encoding type for S3 parquet output.
package/README.md CHANGED
@@ -393,6 +393,10 @@ targetEndpoint: {
393
393
  },
394
394
  ```
395
395
 
396
+ DynamoDB targets also require an `object-mapping` rule per source table in the
397
+ table mappings. See [DynamoDB target (object mapping)](#dynamodb-target-object-mapping)
398
+ below.
399
+
396
400
  ---
397
401
 
398
402
  ## Table mappings
@@ -445,6 +449,71 @@ new TableMappings()
445
449
  .toJson()
446
450
  ```
447
451
 
452
+ ### DynamoDB target (object mapping)
453
+
454
+ When the target endpoint is DynamoDB, DMS requires an `object-mapping` rule per
455
+ source table that defines the partition key (and optionally a sort key) and
456
+ how source columns become DynamoDB attributes. Use `mapToDynamoDb()` alongside
457
+ the usual `includeTable()`:
458
+
459
+ ```typescript
460
+ new TableMappings()
461
+ .includeTable('public', 'orders')
462
+ .mapToDynamoDb('public', 'orders', {
463
+ targetTableName: 'Orders',
464
+ partitionKey: {
465
+ sourceColumn: 'order_id',
466
+ targetAttributeName: 'OrderId',
467
+ attributeSubType: DynamoDbAttributeSubType.STRING,
468
+ },
469
+ sortKey: {
470
+ sourceColumn: 'created_at',
471
+ targetAttributeName: 'CreatedAt',
472
+ attributeSubType: DynamoDbAttributeSubType.STRING,
473
+ },
474
+ excludeColumns: ['internal_flag'],
475
+ attributeMappings: [
476
+ {
477
+ sourceColumn: 'customer_id',
478
+ targetAttributeName: 'CustomerId',
479
+ attributeSubType: DynamoDbAttributeSubType.STRING,
480
+ },
481
+ ],
482
+ })
483
+ .toJson()
484
+ ```
485
+
486
+ Source columns not listed in `attributeMappings` or `excludeColumns` are
487
+ migrated under their source column name.
488
+
489
+ #### Composite key values
490
+
491
+ For DynamoDB single-table designs you often need composite keys built from a
492
+ literal prefix plus one or more source columns. Use `value` instead of
493
+ `sourceColumn` to provide a raw DMS expression:
494
+
495
+ ```typescript
496
+ new TableMappings()
497
+ .includeTable('public', 'orders')
498
+ .mapToDynamoDb('public', 'orders', {
499
+ targetTableName: 'AppTable',
500
+ partitionKey: {
501
+ value: 'CUSTOMER#${customer_id}',
502
+ targetAttributeName: 'PK',
503
+ attributeSubType: DynamoDbAttributeSubType.STRING,
504
+ },
505
+ sortKey: {
506
+ value: 'ORDER#${order_id}',
507
+ targetAttributeName: 'SK',
508
+ attributeSubType: DynamoDbAttributeSubType.STRING,
509
+ },
510
+ })
511
+ .toJson()
512
+ ```
513
+
514
+ Exactly one of `sourceColumn` or `value` must be set on each key/attribute
515
+ mapping — the builder throws at synth time otherwise.
516
+
448
517
  ---
449
518
 
450
519
  ## Task settings
package/lib/endpoint.js CHANGED
@@ -384,7 +384,7 @@ class DmsEndpoint extends constructs_1.Construct {
384
384
  }
385
385
  exports.DmsEndpoint = DmsEndpoint;
386
386
  _a = JSII_RTTI_SYMBOL_1;
387
- DmsEndpoint[_a] = { fqn: "cdk-dms-replication.DmsEndpoint", version: "0.1.12" };
387
+ DmsEndpoint[_a] = { fqn: "cdk-dms-replication.DmsEndpoint", version: "0.1.13" };
388
388
  // ---------------------------------------------------------------------------
389
389
  // Static validation data — declared first to satisfy member-ordering rules
390
390
  // ---------------------------------------------------------------------------
package/lib/index.d.ts CHANGED
@@ -3,7 +3,7 @@ export { DmsMigrationPipeline, DmsMigrationPipelineProps, SourceEndpointOptions,
3
3
  export { DmsReplicationInstance, DmsReplicationInstanceProps } from './replication-instance';
4
4
  export { DmsReplicationTask, DmsReplicationTaskProps } from './replication-task';
5
5
  export { DmsServerlessPipeline, DmsServerlessPipelineProps, } from './serverless-pipeline';
6
- export { AddColumnDefinition, ColumnDataType, RuleObjectLocator, RuleObjectLocatorValue, SelectionAction, TableMappingRule, TableMappings, TransformationAction, } from './table-mappings';
6
+ export { AddColumnDefinition, ColumnDataType, DynamoDbAttributeMapping, DynamoDbAttributeSubType, DynamoDbKeyMapping, DynamoDbObjectMappingOptions, RuleObjectLocator, RuleObjectLocatorValue, SelectionAction, TableMappingRule, TableMappings, TransformationAction, } from './table-mappings';
7
7
  export { CdcSettings, ErrorAction, ErrorHandlingSettings, FullLoadSettings, LobMode, LogComponentSettings, LoggingLevel, TaskSettings, } from './task-settings';
8
8
  export { Db2Settings, DynamoDbSettings, KafkaSettings, KinesisSettings, MongoDbSettings, MySqlSettings, NeptuneSettings, OpenSearchSettings, OracleSettings, PostgreSqlSettings, RedisSettings, RedshiftSettings, S3Settings, SapAseSettings, SqlServerSettings, } from './endpoint-settings';
9
9
  export { DatePartitionDelimiter, DatePartitionSequence, EncodingType, EncryptionMode, EndpointEngine, EndpointType, KafkaSecurityProtocol, MessageFormat, MigrationType, MongoAuthMechanism, MongoAuthType, MongoNestingLevel, MySqlTargetDbType, OracleCdcPlugin, OracleNumberDatatypeScale, ParquetVersion, PostgresCdcPlugin, ReplicationInstanceClass, S3DataFormat, SqlServerSafeguardPolicy, } from './enums';
package/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SqlServerSafeguardPolicy = exports.S3DataFormat = exports.ReplicationInstanceClass = exports.PostgresCdcPlugin = exports.ParquetVersion = exports.OracleNumberDatatypeScale = exports.OracleCdcPlugin = exports.MySqlTargetDbType = exports.MongoNestingLevel = exports.MongoAuthType = exports.MongoAuthMechanism = exports.MigrationType = exports.MessageFormat = exports.KafkaSecurityProtocol = exports.EndpointType = exports.EndpointEngine = exports.EncryptionMode = exports.EncodingType = exports.DatePartitionSequence = exports.DatePartitionDelimiter = exports.TaskSettings = exports.LoggingLevel = exports.LobMode = exports.ErrorAction = exports.TransformationAction = exports.TableMappings = exports.SelectionAction = exports.RuleObjectLocator = exports.ColumnDataType = exports.DmsServerlessPipeline = exports.DmsReplicationTask = exports.DmsReplicationInstance = exports.DmsMigrationPipeline = exports.DmsEndpoint = void 0;
3
+ exports.SqlServerSafeguardPolicy = exports.S3DataFormat = exports.ReplicationInstanceClass = exports.PostgresCdcPlugin = exports.ParquetVersion = exports.OracleNumberDatatypeScale = exports.OracleCdcPlugin = exports.MySqlTargetDbType = exports.MongoNestingLevel = exports.MongoAuthType = exports.MongoAuthMechanism = exports.MigrationType = exports.MessageFormat = exports.KafkaSecurityProtocol = exports.EndpointType = exports.EndpointEngine = exports.EncryptionMode = exports.EncodingType = exports.DatePartitionSequence = exports.DatePartitionDelimiter = exports.TaskSettings = exports.LoggingLevel = exports.LobMode = exports.ErrorAction = exports.TransformationAction = exports.TableMappings = exports.SelectionAction = exports.RuleObjectLocator = exports.DynamoDbAttributeSubType = exports.ColumnDataType = exports.DmsServerlessPipeline = exports.DmsReplicationTask = exports.DmsReplicationInstance = exports.DmsMigrationPipeline = exports.DmsEndpoint = void 0;
4
4
  // Constructs
5
5
  var endpoint_1 = require("./endpoint");
6
6
  Object.defineProperty(exports, "DmsEndpoint", { enumerable: true, get: function () { return endpoint_1.DmsEndpoint; } });
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "DmsServerlessPipeline", { enumerable: true, get:
15
15
  // Builders
16
16
  var table_mappings_1 = require("./table-mappings");
17
17
  Object.defineProperty(exports, "ColumnDataType", { enumerable: true, get: function () { return table_mappings_1.ColumnDataType; } });
18
+ Object.defineProperty(exports, "DynamoDbAttributeSubType", { enumerable: true, get: function () { return table_mappings_1.DynamoDbAttributeSubType; } });
18
19
  Object.defineProperty(exports, "RuleObjectLocator", { enumerable: true, get: function () { return table_mappings_1.RuleObjectLocator; } });
19
20
  Object.defineProperty(exports, "SelectionAction", { enumerable: true, get: function () { return table_mappings_1.SelectionAction; } });
20
21
  Object.defineProperty(exports, "TableMappings", { enumerable: true, get: function () { return table_mappings_1.TableMappings; } });
@@ -46,4 +47,4 @@ Object.defineProperty(exports, "PostgresCdcPlugin", { enumerable: true, get: fun
46
47
  Object.defineProperty(exports, "ReplicationInstanceClass", { enumerable: true, get: function () { return enums_1.ReplicationInstanceClass; } });
47
48
  Object.defineProperty(exports, "S3DataFormat", { enumerable: true, get: function () { return enums_1.S3DataFormat; } });
48
49
  Object.defineProperty(exports, "SqlServerSafeguardPolicy", { enumerable: true, get: function () { return enums_1.SqlServerSafeguardPolicy; } });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsYUFBYTtBQUNiLHVDQUF5RTtBQUFoRSx1R0FBQSxXQUFXLE9BQUE7QUFDcEIsMkRBSzhCO0FBSjVCLDBIQUFBLG9CQUFvQixPQUFBO0FBS3RCLCtEQUE2RjtBQUFwRiw4SEFBQSxzQkFBc0IsT0FBQTtBQUMvQix1REFBaUY7QUFBeEUsc0hBQUEsa0JBQWtCLE9BQUE7QUFDM0IsNkRBRytCO0FBRjdCLDRIQUFBLHFCQUFxQixPQUFBO0FBSXZCLFdBQVc7QUFDWCxtREFTMEI7QUFQeEIsZ0hBQUEsY0FBYyxPQUFBO0FBQ2QsbUhBQUEsaUJBQWlCLE9BQUE7QUFFakIsaUhBQUEsZUFBZSxPQUFBO0FBRWYsK0dBQUEsYUFBYSxPQUFBO0FBQ2Isc0hBQUEsb0JBQW9CLE9BQUE7QUFFdEIsaURBU3lCO0FBUHZCLDRHQUFBLFdBQVcsT0FBQTtBQUdYLHdHQUFBLE9BQU8sT0FBQTtBQUVQLDZHQUFBLFlBQVksT0FBQTtBQUNaLDZHQUFBLFlBQVksT0FBQTtBQXNCZCxRQUFRO0FBQ1IsaUNBcUJpQjtBQXBCZiwrR0FBQSxzQkFBc0IsT0FBQTtBQUN0Qiw4R0FBQSxxQkFBcUIsT0FBQTtBQUNyQixxR0FBQSxZQUFZLE9BQUE7QUFDWix1R0FBQSxjQUFjLE9BQUE7QUFDZCx1R0FBQSxjQUFjLE9BQUE7QUFDZCxxR0FBQSxZQUFZLE9BQUE7QUFDWiw4R0FBQSxxQkFBcUIsT0FBQTtBQUNyQixzR0FBQSxhQUFhLE9BQUE7QUFDYixzR0FBQSxhQUFhLE9BQUE7QUFDYiwyR0FBQSxrQkFBa0IsT0FBQTtBQUNsQixzR0FBQSxhQUFhLE9BQUE7QUFDYiwwR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwwR0FBQSxpQkFBaUIsT0FBQTtBQUNqQix3R0FBQSxlQUFlLE9BQUE7QUFDZixrSEFBQSx5QkFBeUIsT0FBQTtBQUN6Qix1R0FBQSxjQUFjLE9BQUE7QUFDZCwwR0FBQSxpQkFBaUIsT0FBQTtBQUNqQixpSEFBQSx3QkFBd0IsT0FBQTtBQUN4QixxR0FBQSxZQUFZLE9BQUE7QUFDWixpSEFBQSx3QkFBd0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvbnN0cnVjdHNcbmV4cG9ydCB7IERtc0VuZHBvaW50LCBEbXNFbmRwb2ludFByb3BzLCBJRG1zRW5kcG9pbnQgfSBmcm9tICcuL2VuZHBvaW50JztcbmV4cG9ydCB7XG4gIERtc01pZ3JhdGlvblBpcGVsaW5lLFxuICBEbXNNaWdyYXRpb25QaXBlbGluZVByb3BzLFxuICBTb3VyY2VFbmRwb2ludE9wdGlvbnMsXG4gIFRhcmdldEVuZHBvaW50T3B0aW9ucyxcbn0gZnJvbSAnLi9taWdyYXRpb24tcGlwZWxpbmUnO1xuZXhwb3J0IHsgRG1zUmVwbGljYXRpb25JbnN0YW5jZSwgRG1zUmVwbGljYXRpb25JbnN0YW5jZVByb3BzIH0gZnJvbSAnLi9yZXBsaWNhdGlvbi1pbnN0YW5jZSc7XG5leHBvcnQgeyBEbXNSZXBsaWNhdGlvblRhc2ssIERtc1JlcGxpY2F0aW9uVGFza1Byb3BzIH0gZnJvbSAnLi9yZXBsaWNhdGlvbi10YXNrJztcbmV4cG9ydCB7XG4gIERtc1NlcnZlcmxlc3NQaXBlbGluZSxcbiAgRG1zU2VydmVybGVzc1BpcGVsaW5lUHJvcHMsXG59IGZyb20gJy4vc2VydmVybGVzcy1waXBlbGluZSc7XG5cbi8vIEJ1aWxkZXJzXG5leHBvcnQge1xuICBBZGRDb2x1bW5EZWZpbml0aW9uLFxuICBDb2x1bW5EYXRhVHlwZSxcbiAgUnVsZU9iamVjdExvY2F0b3IsXG4gIFJ1bGVPYmplY3RMb2NhdG9yVmFsdWUsXG4gIFNlbGVjdGlvbkFjdGlvbixcbiAgVGFibGVNYXBwaW5nUnVsZSxcbiAgVGFibGVNYXBwaW5ncyxcbiAgVHJhbnNmb3JtYXRpb25BY3Rpb24sXG59IGZyb20gJy4vdGFibGUtbWFwcGluZ3MnO1xuZXhwb3J0IHtcbiAgQ2RjU2V0dGluZ3MsXG4gIEVycm9yQWN0aW9uLFxuICBFcnJvckhhbmRsaW5nU2V0dGluZ3MsXG4gIEZ1bGxMb2FkU2V0dGluZ3MsXG4gIExvYk1vZGUsXG4gIExvZ0NvbXBvbmVudFNldHRpbmdzLFxuICBMb2dnaW5nTGV2ZWwsXG4gIFRhc2tTZXR0aW5ncyxcbn0gZnJvbSAnLi90YXNrLXNldHRpbmdzJztcblxuLy8gRW5naW5lLXNwZWNpZmljIHNldHRpbmdzIGludGVyZmFjZXNcbmV4cG9ydCB7XG4gIERiMlNldHRpbmdzLFxuICBEeW5hbW9EYlNldHRpbmdzLFxuICBLYWZrYVNldHRpbmdzLFxuICBLaW5lc2lzU2V0dGluZ3MsXG4gIE1vbmdvRGJTZXR0aW5ncyxcbiAgTXlTcWxTZXR0aW5ncyxcbiAgTmVwdHVuZVNldHRpbmdzLFxuICBPcGVuU2VhcmNoU2V0dGluZ3MsXG4gIE9yYWNsZVNldHRpbmdzLFxuICBQb3N0Z3JlU3FsU2V0dGluZ3MsXG4gIFJlZGlzU2V0dGluZ3MsXG4gIFJlZHNoaWZ0U2V0dGluZ3MsXG4gIFMzU2V0dGluZ3MsXG4gIFNhcEFzZVNldHRpbmdzLFxuICBTcWxTZXJ2ZXJTZXR0aW5ncyxcbn0gZnJvbSAnLi9lbmRwb2ludC1zZXR0aW5ncyc7XG5cbi8vIEVudW1zXG5leHBvcnQge1xuICBEYXRlUGFydGl0aW9uRGVsaW1pdGVyLFxuICBEYXRlUGFydGl0aW9uU2VxdWVuY2UsXG4gIEVuY29kaW5nVHlwZSxcbiAgRW5jcnlwdGlvbk1vZGUsXG4gIEVuZHBvaW50RW5naW5lLFxuICBFbmRwb2ludFR5cGUsXG4gIEthZmthU2VjdXJpdHlQcm90b2NvbCxcbiAgTWVzc2FnZUZvcm1hdCxcbiAgTWlncmF0aW9uVHlwZSxcbiAgTW9uZ29BdXRoTWVjaGFuaXNtLFxuICBNb25nb0F1dGhUeXBlLFxuICBNb25nb05lc3RpbmdMZXZlbCxcbiAgTXlTcWxUYXJnZXREYlR5cGUsXG4gIE9yYWNsZUNkY1BsdWdpbixcbiAgT3JhY2xlTnVtYmVyRGF0YXR5cGVTY2FsZSxcbiAgUGFycXVldFZlcnNpb24sXG4gIFBvc3RncmVzQ2RjUGx1Z2luLFxuICBSZXBsaWNhdGlvbkluc3RhbmNlQ2xhc3MsXG4gIFMzRGF0YUZvcm1hdCxcbiAgU3FsU2VydmVyU2FmZWd1YXJkUG9saWN5LFxufSBmcm9tICcuL2VudW1zJztcbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsYUFBYTtBQUNiLHVDQUF5RTtBQUFoRSx1R0FBQSxXQUFXLE9BQUE7QUFDcEIsMkRBSzhCO0FBSjVCLDBIQUFBLG9CQUFvQixPQUFBO0FBS3RCLCtEQUE2RjtBQUFwRiw4SEFBQSxzQkFBc0IsT0FBQTtBQUMvQix1REFBaUY7QUFBeEUsc0hBQUEsa0JBQWtCLE9BQUE7QUFDM0IsNkRBRytCO0FBRjdCLDRIQUFBLHFCQUFxQixPQUFBO0FBSXZCLFdBQVc7QUFDWCxtREFhMEI7QUFYeEIsZ0hBQUEsY0FBYyxPQUFBO0FBRWQsMEhBQUEsd0JBQXdCLE9BQUE7QUFHeEIsbUhBQUEsaUJBQWlCLE9BQUE7QUFFakIsaUhBQUEsZUFBZSxPQUFBO0FBRWYsK0dBQUEsYUFBYSxPQUFBO0FBQ2Isc0hBQUEsb0JBQW9CLE9BQUE7QUFFdEIsaURBU3lCO0FBUHZCLDRHQUFBLFdBQVcsT0FBQTtBQUdYLHdHQUFBLE9BQU8sT0FBQTtBQUVQLDZHQUFBLFlBQVksT0FBQTtBQUNaLDZHQUFBLFlBQVksT0FBQTtBQXNCZCxRQUFRO0FBQ1IsaUNBcUJpQjtBQXBCZiwrR0FBQSxzQkFBc0IsT0FBQTtBQUN0Qiw4R0FBQSxxQkFBcUIsT0FBQTtBQUNyQixxR0FBQSxZQUFZLE9BQUE7QUFDWix1R0FBQSxjQUFjLE9BQUE7QUFDZCx1R0FBQSxjQUFjLE9BQUE7QUFDZCxxR0FBQSxZQUFZLE9BQUE7QUFDWiw4R0FBQSxxQkFBcUIsT0FBQTtBQUNyQixzR0FBQSxhQUFhLE9BQUE7QUFDYixzR0FBQSxhQUFhLE9BQUE7QUFDYiwyR0FBQSxrQkFBa0IsT0FBQTtBQUNsQixzR0FBQSxhQUFhLE9BQUE7QUFDYiwwR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwwR0FBQSxpQkFBaUIsT0FBQTtBQUNqQix3R0FBQSxlQUFlLE9BQUE7QUFDZixrSEFBQSx5QkFBeUIsT0FBQTtBQUN6Qix1R0FBQSxjQUFjLE9BQUE7QUFDZCwwR0FBQSxpQkFBaUIsT0FBQTtBQUNqQixpSEFBQSx3QkFBd0IsT0FBQTtBQUN4QixxR0FBQSxZQUFZLE9BQUE7QUFDWixpSEFBQSx3QkFBd0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvbnN0cnVjdHNcbmV4cG9ydCB7IERtc0VuZHBvaW50LCBEbXNFbmRwb2ludFByb3BzLCBJRG1zRW5kcG9pbnQgfSBmcm9tICcuL2VuZHBvaW50JztcbmV4cG9ydCB7XG4gIERtc01pZ3JhdGlvblBpcGVsaW5lLFxuICBEbXNNaWdyYXRpb25QaXBlbGluZVByb3BzLFxuICBTb3VyY2VFbmRwb2ludE9wdGlvbnMsXG4gIFRhcmdldEVuZHBvaW50T3B0aW9ucyxcbn0gZnJvbSAnLi9taWdyYXRpb24tcGlwZWxpbmUnO1xuZXhwb3J0IHsgRG1zUmVwbGljYXRpb25JbnN0YW5jZSwgRG1zUmVwbGljYXRpb25JbnN0YW5jZVByb3BzIH0gZnJvbSAnLi9yZXBsaWNhdGlvbi1pbnN0YW5jZSc7XG5leHBvcnQgeyBEbXNSZXBsaWNhdGlvblRhc2ssIERtc1JlcGxpY2F0aW9uVGFza1Byb3BzIH0gZnJvbSAnLi9yZXBsaWNhdGlvbi10YXNrJztcbmV4cG9ydCB7XG4gIERtc1NlcnZlcmxlc3NQaXBlbGluZSxcbiAgRG1zU2VydmVybGVzc1BpcGVsaW5lUHJvcHMsXG59IGZyb20gJy4vc2VydmVybGVzcy1waXBlbGluZSc7XG5cbi8vIEJ1aWxkZXJzXG5leHBvcnQge1xuICBBZGRDb2x1bW5EZWZpbml0aW9uLFxuICBDb2x1bW5EYXRhVHlwZSxcbiAgRHluYW1vRGJBdHRyaWJ1dGVNYXBwaW5nLFxuICBEeW5hbW9EYkF0dHJpYnV0ZVN1YlR5cGUsXG4gIER5bmFtb0RiS2V5TWFwcGluZyxcbiAgRHluYW1vRGJPYmplY3RNYXBwaW5nT3B0aW9ucyxcbiAgUnVsZU9iamVjdExvY2F0b3IsXG4gIFJ1bGVPYmplY3RMb2NhdG9yVmFsdWUsXG4gIFNlbGVjdGlvbkFjdGlvbixcbiAgVGFibGVNYXBwaW5nUnVsZSxcbiAgVGFibGVNYXBwaW5ncyxcbiAgVHJhbnNmb3JtYXRpb25BY3Rpb24sXG59IGZyb20gJy4vdGFibGUtbWFwcGluZ3MnO1xuZXhwb3J0IHtcbiAgQ2RjU2V0dGluZ3MsXG4gIEVycm9yQWN0aW9uLFxuICBFcnJvckhhbmRsaW5nU2V0dGluZ3MsXG4gIEZ1bGxMb2FkU2V0dGluZ3MsXG4gIExvYk1vZGUsXG4gIExvZ0NvbXBvbmVudFNldHRpbmdzLFxuICBMb2dnaW5nTGV2ZWwsXG4gIFRhc2tTZXR0aW5ncyxcbn0gZnJvbSAnLi90YXNrLXNldHRpbmdzJztcblxuLy8gRW5naW5lLXNwZWNpZmljIHNldHRpbmdzIGludGVyZmFjZXNcbmV4cG9ydCB7XG4gIERiMlNldHRpbmdzLFxuICBEeW5hbW9EYlNldHRpbmdzLFxuICBLYWZrYVNldHRpbmdzLFxuICBLaW5lc2lzU2V0dGluZ3MsXG4gIE1vbmdvRGJTZXR0aW5ncyxcbiAgTXlTcWxTZXR0aW5ncyxcbiAgTmVwdHVuZVNldHRpbmdzLFxuICBPcGVuU2VhcmNoU2V0dGluZ3MsXG4gIE9yYWNsZVNldHRpbmdzLFxuICBQb3N0Z3JlU3FsU2V0dGluZ3MsXG4gIFJlZGlzU2V0dGluZ3MsXG4gIFJlZHNoaWZ0U2V0dGluZ3MsXG4gIFMzU2V0dGluZ3MsXG4gIFNhcEFzZVNldHRpbmdzLFxuICBTcWxTZXJ2ZXJTZXR0aW5ncyxcbn0gZnJvbSAnLi9lbmRwb2ludC1zZXR0aW5ncyc7XG5cbi8vIEVudW1zXG5leHBvcnQge1xuICBEYXRlUGFydGl0aW9uRGVsaW1pdGVyLFxuICBEYXRlUGFydGl0aW9uU2VxdWVuY2UsXG4gIEVuY29kaW5nVHlwZSxcbiAgRW5jcnlwdGlvbk1vZGUsXG4gIEVuZHBvaW50RW5naW5lLFxuICBFbmRwb2ludFR5cGUsXG4gIEthZmthU2VjdXJpdHlQcm90b2NvbCxcbiAgTWVzc2FnZUZvcm1hdCxcbiAgTWlncmF0aW9uVHlwZSxcbiAgTW9uZ29BdXRoTWVjaGFuaXNtLFxuICBNb25nb0F1dGhUeXBlLFxuICBNb25nb05lc3RpbmdMZXZlbCxcbiAgTXlTcWxUYXJnZXREYlR5cGUsXG4gIE9yYWNsZUNkY1BsdWdpbixcbiAgT3JhY2xlTnVtYmVyRGF0YXR5cGVTY2FsZSxcbiAgUGFycXVldFZlcnNpb24sXG4gIFBvc3RncmVzQ2RjUGx1Z2luLFxuICBSZXBsaWNhdGlvbkluc3RhbmNlQ2xhc3MsXG4gIFMzRGF0YUZvcm1hdCxcbiAgU3FsU2VydmVyU2FmZWd1YXJkUG9saWN5LFxufSBmcm9tICcuL2VudW1zJztcbiJdfQ==
@@ -215,5 +215,5 @@ class DmsMigrationPipeline extends constructs_1.Construct {
215
215
  }
216
216
  exports.DmsMigrationPipeline = DmsMigrationPipeline;
217
217
  _a = JSII_RTTI_SYMBOL_1;
218
- DmsMigrationPipeline[_a] = { fqn: "cdk-dms-replication.DmsMigrationPipeline", version: "0.1.12" };
218
+ DmsMigrationPipeline[_a] = { fqn: "cdk-dms-replication.DmsMigrationPipeline", version: "0.1.13" };
219
219
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLXBpcGVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21pZ3JhdGlvbi1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFtQztBQUduQyw2Q0FBNkM7QUFDN0MsMkNBQXVDO0FBQ3ZDLDJDQUF3RTtBQUN4RSx5Q0FBeUU7QUFDekUsbUNBQWdGO0FBQ2hGLGlFQUFnRTtBQUNoRSx5REFBd0Q7QUFDeEQscURBQWlEO0FBaVBqRCw4RUFBOEU7QUFDOUUsWUFBWTtBQUNaLDhFQUE4RTtBQUU5RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ0c7QUFDSCxNQUFhLG9CQUFxQixTQUFRLHNCQUFTO0lBZ0NqRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWdDO1FBQ3hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxQixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO1FBQ3ZFLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUM7UUFFeEQsMEVBQTBFO1FBQzFFLGtFQUFrRTtRQUNsRSxrRUFBa0U7UUFDbEUsb0RBQW9EO1FBQ3BELGtFQUFrRTtRQUNsRSwwRUFBMEU7UUFDMUUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUEsNEJBQWdCLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBRUQsMEVBQTBFO1FBQzFFLGtDQUFrQztRQUNsQywwRUFBMEU7UUFDMUUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixJQUFJLElBQUksQ0FB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QyxDQUFDO0lBRUwsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxrQkFBa0I7SUFDbEIsOEVBQThFO0lBRXRFLGFBQWEsQ0FBQyxLQUFnQztRQUNwRCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUN6QyxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUM7UUFDekQsSUFBSSxTQUFTLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksS0FBSyxDQUNiLHdFQUF3RSxDQUN6RSxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQ2Isa0VBQWtFLENBQ25FLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDekMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDO1FBQ3pELElBQUksU0FBUyxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FDYix3RUFBd0UsQ0FDekUsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUNiLGtFQUFrRSxDQUNuRSxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7O0FBck5ILG9EQXNOQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgZW5zdXJlRG1zQ2xvdWRXYXRjaFJvbGUsIGVuc3VyZURtc1ZwY1JvbGUgfSBmcm9tICcuL2Rtcy1yb2xlcyc7XG5pbXBvcnQgeyBEbXNFbmRwb2ludCwgRG1zRW5kcG9pbnRQcm9wcywgSURtc0VuZHBvaW50IH0gZnJvbSAnLi9lbmRwb2ludCc7XG5pbXBvcnQgeyBFbmRwb2ludFR5cGUsIE1pZ3JhdGlvblR5cGUsIFJlcGxpY2F0aW9uSW5zdGFuY2VDbGFzcyB9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHsgRG1zUmVwbGljYXRpb25JbnN0YW5jZSB9IGZyb20gJy4vcmVwbGljYXRpb24taW5zdGFuY2UnO1xuaW1wb3J0IHsgRG1zUmVwbGljYXRpb25UYXNrIH0gZnJvbSAnLi9yZXBsaWNhdGlvbi10YXNrJztcbmltcG9ydCB7IFRhYmxlTWFwcGluZ3MgfSBmcm9tICcuL3RhYmxlLW1hcHBpbmdzJztcbmltcG9ydCB7IFRhc2tTZXR0aW5ncyB9IGZyb20gJy4vdGFzay1zZXR0aW5ncyc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHJvcHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBzb3VyY2UgZW5kcG9pbnQgb2YgYSB7QGxpbmsgRG1zTWlncmF0aW9uUGlwZWxpbmV9LlxuICogRXh0ZW5kcyB7QGxpbmsgRG1zRW5kcG9pbnRQcm9wc30gYnV0IG9taXRzIGBlbmRwb2ludFR5cGVgIChhbHdheXMgU09VUkNFKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VFbmRwb2ludE9wdGlvbnMge1xuICByZWFkb25seSBlbmdpbmU6IERtc0VuZHBvaW50UHJvcHNbJ2VuZ2luZSddO1xuICByZWFkb25seSBlbmRwb2ludElkZW50aWZpZXI/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNlcnZlck5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHVzZXJuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWJhc2UgcGFzc3dvcmQuIFRoZSByZXNvbHZlZCB2YWx1ZSBpcyBzdG9yZWQgYXMgKipwbGFpbnRleHQqKiBpbiB0aGVcbiAgICogQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUuIFByZWZlciBgc2VjcmV0c01hbmFnZXJTZWNyZXRJZGAgaW4gdGhlXG4gICAqIGVuZ2luZS1zcGVjaWZpYyBzZXR0aW5ncyBmb3IgcHJvZHVjdGlvbiB3b3JrbG9hZHMuXG4gICAqL1xuICByZWFkb25seSBwYXNzd29yZD86IGNkay5TZWNyZXRWYWx1ZTtcbiAgcmVhZG9ubHkgZGF0YWJhc2VOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBleHRyYUNvbm5lY3Rpb25BdHRyaWJ1dGVzPzogc3RyaW5nO1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZUFybj86IHN0cmluZztcbiAgcmVhZG9ubHkgc3NsTW9kZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbXlTcWxTZXR0aW5ncz86IERtc0VuZHBvaW50UHJvcHNbJ215U3FsU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgcG9zdGdyZVNxbFNldHRpbmdzPzogRG1zRW5kcG9pbnRQcm9wc1sncG9zdGdyZVNxbFNldHRpbmdzJ107XG4gIHJlYWRvbmx5IG9yYWNsZVNldHRpbmdzPzogRG1zRW5kcG9pbnRQcm9wc1snb3JhY2xlU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgc3FsU2VydmVyU2V0dGluZ3M/OiBEbXNFbmRwb2ludFByb3BzWydzcWxTZXJ2ZXJTZXR0aW5ncyddO1xuICByZWFkb25seSBzYXBBc2VTZXR0aW5ncz86IERtc0VuZHBvaW50UHJvcHNbJ3NhcEFzZVNldHRpbmdzJ107XG4gIHJlYWRvbmx5IGRiMlNldHRpbmdzPzogRG1zRW5kcG9pbnRQcm9wc1snZGIyU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgbW9uZ29EYlNldHRpbmdzPzogRG1zRW5kcG9pbnRQcm9wc1snbW9uZ29EYlNldHRpbmdzJ107XG4gIHJlYWRvbmx5IHMzU2V0dGluZ3M/OiBEbXNFbmRwb2ludFByb3BzWydzM1NldHRpbmdzJ107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIHRhcmdldCBlbmRwb2ludCBvZiBhIHtAbGluayBEbXNNaWdyYXRpb25QaXBlbGluZX0uXG4gKiBFeHRlbmRzIHtAbGluayBEbXNFbmRwb2ludFByb3BzfSBidXQgb21pdHMgYGVuZHBvaW50VHlwZWAgKGFsd2F5cyBUQVJHRVQpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldEVuZHBvaW50T3B0aW9ucyB7XG4gIHJlYWRvbmx5IGVuZ2luZTogRG1zRW5kcG9pbnRQcm9wc1snZW5naW5lJ107XG4gIHJlYWRvbmx5IGVuZHBvaW50SWRlbnRpZmllcj86IHN0cmluZztcbiAgcmVhZG9ubHkgc2VydmVyTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydD86IG51bWJlcjtcbiAgcmVhZG9ubHkgdXNlcm5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXRhYmFzZSBwYXNzd29yZC4gVGhlIHJlc29sdmVkIHZhbHVlIGlzIHN0b3JlZCBhcyAqKnBsYWludGV4dCoqIGluIHRoZVxuICAgKiBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZS4gUHJlZmVyIGBzZWNyZXRzTWFuYWdlclNlY3JldElkYCBpbiB0aGVcbiAgICogZW5naW5lLXNwZWNpZmljIHNldHRpbmdzIGZvciBwcm9kdWN0aW9uIHdvcmtsb2Fkcy5cbiAgICovXG4gIHJlYWRvbmx5IHBhc3N3b3JkPzogY2RrLlNlY3JldFZhbHVlO1xuICByZWFkb25seSBkYXRhYmFzZU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGV4dHJhQ29ubmVjdGlvbkF0dHJpYnV0ZXM/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNlcnRpZmljYXRlQXJuPzogc3RyaW5nO1xuICByZWFkb25seSBzc2xNb2RlPzogc3RyaW5nO1xuICByZWFkb25seSBteVNxbFNldHRpbmdzPzogRG1zRW5kcG9pbnRQcm9wc1snbXlTcWxTZXR0aW5ncyddO1xuICByZWFkb25seSBwb3N0Z3JlU3FsU2V0dGluZ3M/OiBEbXNFbmRwb2ludFByb3BzWydwb3N0Z3JlU3FsU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgb3JhY2xlU2V0dGluZ3M/OiBEbXNFbmRwb2ludFByb3BzWydvcmFjbGVTZXR0aW5ncyddO1xuICByZWFkb25seSBzcWxTZXJ2ZXJTZXR0aW5ncz86IERtc0VuZHBvaW50UHJvcHNbJ3NxbFNlcnZlclNldHRpbmdzJ107XG4gIHJlYWRvbmx5IHNhcEFzZVNldHRpbmdzPzogRG1zRW5kcG9pbnRQcm9wc1snc2FwQXNlU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgZGIyU2V0dGluZ3M/OiBEbXNFbmRwb2ludFByb3BzWydkYjJTZXR0aW5ncyddO1xuICByZWFkb25seSBtb25nb0RiU2V0dGluZ3M/OiBEbXNFbmRwb2ludFByb3BzWydtb25nb0RiU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgczNTZXR0aW5ncz86IERtc0VuZHBvaW50UHJvcHNbJ3MzU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgZHluYW1vRGJTZXR0aW5ncz86IERtc0VuZHBvaW50UHJvcHNbJ2R5bmFtb0RiU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgcmVkc2hpZnRTZXR0aW5ncz86IERtc0VuZHBvaW50UHJvcHNbJ3JlZHNoaWZ0U2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkga2luZXNpc1NldHRpbmdzPzogRG1zRW5kcG9pbnRQcm9wc1sna2luZXNpc1NldHRpbmdzJ107XG4gIHJlYWRvbmx5IGthZmthU2V0dGluZ3M/OiBEbXNFbmRwb2ludFByb3BzWydrYWZrYVNldHRpbmdzJ107XG4gIHJlYWRvbmx5IG9wZW5TZWFyY2hTZXR0aW5ncz86IERtc0VuZHBvaW50UHJvcHNbJ29wZW5TZWFyY2hTZXR0aW5ncyddO1xuICByZWFkb25seSBuZXB0dW5lU2V0dGluZ3M/OiBEbXNFbmRwb2ludFByb3BzWyduZXB0dW5lU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgcmVkaXNTZXR0aW5ncz86IERtc0VuZHBvaW50UHJvcHNbJ3JlZGlzU2V0dGluZ3MnXTtcbn1cblxuLyoqIFRvcC1sZXZlbCBwcm9wcyBmb3Ige0BsaW5rIERtc01pZ3JhdGlvblBpcGVsaW5lfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG1zTWlncmF0aW9uUGlwZWxpbmVQcm9wcyB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gUmVwbGljYXRpb24gaW5zdGFuY2VcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBWUEMgaW4gd2hpY2ggdG8gcGxhY2UgdGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKiBUaGUgaW5zdGFuY2UgaXMgcGxhY2VkIGluIHByaXZhdGUgc3VibmV0cy5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFN1Ym5ldCBzZWxlY3Rpb24gZm9yIHRoZSByZXBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICogQGRlZmF1bHQgcHJpdmF0ZSBzdWJuZXRzIHdpdGggZWdyZXNzXG4gICAqL1xuICByZWFkb25seSB2cGNTdWJuZXRzPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogUmVwbGljYXRpb24gaW5zdGFuY2UgY2xhc3MuXG4gICAqIEBkZWZhdWx0IFJlcGxpY2F0aW9uSW5zdGFuY2VDbGFzcy5SNklfTEFSR0VcbiAgICovXG4gIHJlYWRvbmx5IHJlcGxpY2F0aW9uSW5zdGFuY2VDbGFzcz86IFJlcGxpY2F0aW9uSW5zdGFuY2VDbGFzcztcblxuICAvKipcbiAgICogQWxsb2NhdGVkIHN0b3JhZ2UgZm9yIHRoZSByZXBsaWNhdGlvbiBpbnN0YW5jZSBpbiBHQi5cbiAgICogQGRlZmF1bHQgMTAwXG4gICAqL1xuICByZWFkb25seSBhbGxvY2F0ZWRTdG9yYWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByZXBsaWNhdGlvbiBpbnN0YW5jZSBpcyBNdWx0aS1BWi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG11bHRpQXo/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmdpbmUgdmVyc2lvbiBmb3IgdGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKiBAZGVmYXVsdCBsYXRlc3QgdmVyc2lvbiBhdmFpbGFibGUgaW4gdGhlIHJlZ2lvbiAoY2hvc2VuIGJ5IERNUylcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEtNUyBrZXkgZm9yIGVuY3J5cHRpbmcgdGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlIHN0b3JhZ2UgYXQgcmVzdC5cbiAgICogQSBuZXcga2V5IGlzIGNyZWF0ZWQgaWYgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IGttcy5JS2V5O1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gRW5kcG9pbnRzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogU291cmNlIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24uXG4gICAqIFByb3ZpZGUgdGhpcyBPUiBgZXhpc3RpbmdTb3VyY2VFbmRwb2ludGAg4oCUIG5vdCBib3RoLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlRW5kcG9pbnQ/OiBTb3VyY2VFbmRwb2ludE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEFuIGV4aXN0aW5nIHtAbGluayBJRG1zRW5kcG9pbnR9IHRvIHVzZSBhcyB0aGUgc291cmNlLlxuICAgKiBQcm92aWRlIHRoaXMgT1IgYHNvdXJjZUVuZHBvaW50YCDigJQgbm90IGJvdGguXG4gICAqL1xuICByZWFkb25seSBleGlzdGluZ1NvdXJjZUVuZHBvaW50PzogSURtc0VuZHBvaW50O1xuXG4gIC8qKlxuICAgKiBUYXJnZXQgZW5kcG9pbnQgY29uZmlndXJhdGlvbi5cbiAgICogUHJvdmlkZSB0aGlzIE9SIGBleGlzdGluZ1RhcmdldEVuZHBvaW50YCDigJQgbm90IGJvdGguXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRFbmRwb2ludD86IFRhcmdldEVuZHBvaW50T3B0aW9ucztcblxuICAvKipcbiAgICogQW4gZXhpc3Rpbmcge0BsaW5rIElEbXNFbmRwb2ludH0gdG8gdXNlIGFzIHRoZSB0YXJnZXQuXG4gICAqIFByb3ZpZGUgdGhpcyBPUiBgdGFyZ2V0RW5kcG9pbnRgIOKAlCBub3QgYm90aC5cbiAgICovXG4gIHJlYWRvbmx5IGV4aXN0aW5nVGFyZ2V0RW5kcG9pbnQ/OiBJRG1zRW5kcG9pbnQ7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBSZXBsaWNhdGlvbiB0YXNrXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKiogVGhlIHR5cGUgb2YgbWlncmF0aW9uIHRvIHBlcmZvcm0uICovXG4gIHJlYWRvbmx5IG1pZ3JhdGlvblR5cGU6IE1pZ3JhdGlvblR5cGU7XG5cbiAgLyoqXG4gICAqIFRhYmxlIG1hcHBpbmdzIEpTT04gc3RyaW5nLlxuICAgKiBVc2Uge0BsaW5rIFRhYmxlTWFwcGluZ3N9IHRvIGJ1aWxkIHRoaXMuXG4gICAqIERlZmF1bHRzIHRvIFwiaW5jbHVkZSBhbGwgdGFibGVzIGluIGFsbCBzY2hlbWFzXCIgaWYgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVNYXBwaW5ncz86IHN0cmluZztcblxuICAvKipcbiAgICogVGFzayBzZXR0aW5ncyBKU09OIHN0cmluZy5cbiAgICogVXNlIHtAbGluayBUYXNrU2V0dGluZ3N9IHRvIGJ1aWxkIHRoaXMuXG4gICAqIFNlbnNpYmxlIGRlZmF1bHRzIGFyZSBhcHBsaWVkIGlmIG5vdCBwcm92aWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHRhc2tTZXR0aW5ncz86IHN0cmluZztcblxuICAvKipcbiAgICogQ0RDIHN0YXJ0IHRpbWUgKElTTy04NjAxIHN0cmluZyBvciBVbml4IGVwb2NoIHNlY29uZHMpLlxuICAgKiBPbmx5IHVzZWQgd2hlbiBtaWdyYXRpb25UeXBlIGluY2x1ZGVzIENEQy5cbiAgICovXG4gIHJlYWRvbmx5IGNkY1N0YXJ0VGltZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ0RDIHN0YXJ0IHBvc2l0aW9uIChMU04gb3IgZXF1aXZhbGVudCkuXG4gICAqIE9ubHkgdXNlZCB3aGVuIG1pZ3JhdGlvblR5cGUgaW5jbHVkZXMgQ0RDLlxuICAgKi9cbiAgcmVhZG9ubHkgY2RjU3RhcnRQb3NpdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQ0RDIHN0b3AgcG9zaXRpb24uXG4gICAqIE9ubHkgdXNlZCB3aGVuIG1pZ3JhdGlvblR5cGUgaW5jbHVkZXMgQ0RDLlxuICAgKi9cbiAgcmVhZG9ubHkgY2RjU3RvcFBvc2l0aW9uPzogc3RyaW5nO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gT2JzZXJ2YWJpbGl0eVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY3JlYXRlIGEgQ2xvdWRXYXRjaCBsb2cgZ3JvdXAgZm9yIHRoZSB0YXNrLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVDbG91ZFdhdGNoTG9ncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJldGVudGlvbiBwZXJpb2QgZm9yIHRoZSBDbG91ZFdhdGNoIGxvZyBncm91cC5cbiAgICogQGRlZmF1bHQgbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nUmV0ZW50aW9uPzogbG9ncy5SZXRlbnRpb25EYXlzO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gSUFNIC8gc2VydmljZSByb2xlc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY3JlYXRlIHRoZSB0d28gYWNjb3VudC1sZXZlbCBETVMgc2VydmljZSByb2xlcyAoYGRtcy12cGMtcm9sZWBcbiAgICogYW5kIGBkbXMtY2xvdWR3YXRjaC1sb2dzLXJvbGVgKSByZXF1aXJlZCBieSBETVMuXG4gICAqXG4gICAqIFdoZW4gYHRydWVgLCB0aGUgcm9sZXMgYXJlIGNyZWF0ZWQgaWRlbXBvdGVudGx5IHZpYSBhIGN1c3RvbSByZXNvdXJjZTogaWZcbiAgICogZWl0aGVyIHJvbGUgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGFjY291bnQgKGNyZWF0ZWQgYnkgYW5vdGhlciBzdGFjayBvclxuICAgKiBtYW51YWxseSksIHRoZSBleGlzdGluZyByb2xlIGlzIHNpbGVudGx5IHJldXNlZCBhbmQgaXRzIHRydXN0IHBvbGljeSBpc1xuICAgKiBjb3JyZWN0ZWQgaWYgbmVjZXNzYXJ5LiBUaGUgcm9sZXMgYXJlIGNyZWF0ZWQgd2l0aCBgUmVtb3ZhbFBvbGljeS5SRVRBSU5gXG4gICAqIGFuZCBhcmUgKipub3QqKiBsaWZlY3ljbGUtbWFuYWdlZCBieSB0aGlzIHN0YWNrIOKAlCB0aGV5IHdpbGwgbm90IGJlIGRlbGV0ZWRcbiAgICogd2hlbiB0aGUgc3RhY2sgaXMgZGVzdHJveWVkLiBJZiB5b3UgcmVxdWlyZSB0aGUgcm9sZXMgdG8gYmVcbiAgICogbGlmZWN5Y2xlLW1hbmFnZWQsIGNyZWF0ZSB0aGVtIGluIGEgZGVkaWNhdGVkIHN0YWNrIGFuZCBzZXQgdGhpcyB0b1xuICAgKiBgZmFsc2VgLCB0aGVuIHBhc3MgY3Jvc3Mtc3RhY2sgcmVmZXJlbmNlcyBhcyBuZWVkZWQuXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCwgdGhlIGNvbnN0cnVjdCBleHBlY3RzIHRoZSByb2xlcyB0byBhbHJlYWR5IGJlIHByZXNlbnQgYW5kXG4gICAqIHNraXBzIGNyZWF0aW5nIHRoZW0uIFRoZSBgZG1zVnBjUm9sZWAgYW5kIGBkbXNDbG91ZFdhdGNoUm9sZWAgcHJvcGVydGllc1xuICAgKiB3aWxsIGJlIGB1bmRlZmluZWRgLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVEbXNTZXJ2aWNlUm9sZXM/OiBib29sZWFuO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gTGlmZWN5Y2xlXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogUmVtb3ZhbCBwb2xpY3kgYXBwbGllZCB0byBhbGwgcmVzb3VyY2VzIGluIHRoZSBwaXBlbGluZS5cbiAgICogQGRlZmF1bHQgY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IGNkay5SZW1vdmFsUG9saWN5O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvbnN0cnVjdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQW4gTDMgQ0RLIHBhdHRlcm4gY29uc3RydWN0IHRoYXQgcHJvdmlzaW9ucyBhIGNvbXBsZXRlIERNUyBtaWdyYXRpb24gcGlwZWxpbmU6XG4gKlxuICogLSAqKlJlcGxpY2F0aW9uIGluc3RhbmNlKiog4oCUIHBsYWNlZCBpbiBwcml2YXRlIHN1Ym5ldHMgd2l0aCBLTVMgZW5jcnlwdGlvblxuICogICBhbmQgYSBkZWRpY2F0ZWQgc2VjdXJpdHkgZ3JvdXAuXG4gKiAtICoqU291cmNlIGVuZHBvaW50Kiog4oCUIHN1cHBvcnRzIGV2ZXJ5IGVuZ2luZSBETVMgc3VwcG9ydHMuXG4gKiAtICoqVGFyZ2V0IGVuZHBvaW50Kiog4oCUIHN1cHBvcnRzIGV2ZXJ5IGVuZ2luZSBETVMgc3VwcG9ydHMuXG4gKiAtICoqUmVwbGljYXRpb24gdGFzayoqIOKAlCB3aXJlcyB0aGUgaW5zdGFuY2UsIGVuZHBvaW50cywgdGFibGUgbWFwcGluZ3MgYW5kXG4gKiAgIHRhc2sgc2V0dGluZ3MgdG9nZXRoZXIuXG4gKiAtICoqSUFNIHJvbGUqKiDigJQgZ3JhbnRzIERNUyBwZXJtaXNzaW9uIHRvIHdyaXRlIHRvIENsb3VkV2F0Y2ggTG9ncy5cbiAqIC0gKipDbG91ZFdhdGNoIGxvZyBncm91cCoqIOKAlCAob3B0aW9uYWwpIHJldGFpbnMgdGFzayBsb2dzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNeVNRTCDihpIgQXVyb3JhIFBvc3RncmVTUUwsIGZ1bGwtbG9hZC1hbmQtQ0RDXG4gKiBjb25zdCBwaXBlbGluZSA9IG5ldyBEbXNNaWdyYXRpb25QaXBlbGluZSh0aGlzLCAnTWlncmF0aW9uUGlwZWxpbmUnLCB7XG4gKiAgIHZwYyxcbiAqICAgbWlncmF0aW9uVHlwZTogTWlncmF0aW9uVHlwZS5GVUxMX0xPQURfQU5EX0NEQyxcbiAqICAgc291cmNlRW5kcG9pbnQ6IHtcbiAqICAgICBlbmdpbmU6IEVuZHBvaW50RW5naW5lLk1ZU1FMLFxuICogICAgIHNlcnZlck5hbWU6ICdteXNxbC5leGFtcGxlLmNvbScsXG4gKiAgICAgcG9ydDogMzMwNixcbiAqICAgICB1c2VybmFtZTogJ2Rtc191c2VyJyxcbiAqICAgICBwYXNzd29yZDogY2RrLlNlY3JldFZhbHVlLnNlY3JldHNNYW5hZ2VyKCdteXNxbC1kbXMtc2VjcmV0JyksXG4gKiAgICAgZGF0YWJhc2VOYW1lOiAnbXlkYicsXG4gKiAgIH0sXG4gKiAgIHRhcmdldEVuZHBvaW50OiB7XG4gKiAgICAgZW5naW5lOiBFbmRwb2ludEVuZ2luZS5BVVJPUkFfUE9TVEdSRVNRTCxcbiAqICAgICBzZXJ2ZXJOYW1lOiBjbHVzdGVyLmNsdXN0ZXJFbmRwb2ludC5ob3N0bmFtZSxcbiAqICAgICBwb3J0OiA1NDMyLFxuICogICAgIHVzZXJuYW1lOiAnZG1zX3VzZXInLFxuICogICAgIHBhc3N3b3JkOiBjZGsuU2VjcmV0VmFsdWUuc2VjcmV0c01hbmFnZXIoJ2F1cm9yYS1kbXMtc2VjcmV0JyksXG4gKiAgICAgZGF0YWJhc2VOYW1lOiAnbXlkYicsXG4gKiAgIH0sXG4gKiAgIHRhYmxlTWFwcGluZ3M6IG5ldyBUYWJsZU1hcHBpbmdzKCkuaW5jbHVkZVNjaGVtYSgncHVibGljJykudG9Kc29uKCksXG4gKiB9KTtcbiAqL1xuZXhwb3J0IGNsYXNzIERtc01pZ3JhdGlvblBpcGVsaW5lIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEluc3RhbmNlIGZpZWxkc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKiogVGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlIHByb3Zpc2lvbmVkIGJ5IHRoaXMgcGlwZWxpbmUuICovXG4gIHJlYWRvbmx5IHJlcGxpY2F0aW9uSW5zdGFuY2U6IERtc1JlcGxpY2F0aW9uSW5zdGFuY2U7XG5cbiAgLyoqIFRoZSBzb3VyY2UgZW5kcG9pbnQgdXNlZCBieSB0aGlzIHBpcGVsaW5lLiAqL1xuICByZWFkb25seSBzb3VyY2U6IElEbXNFbmRwb2ludDtcblxuICAvKiogVGhlIHRhcmdldCBlbmRwb2ludCB1c2VkIGJ5IHRoaXMgcGlwZWxpbmUuICovXG4gIHJlYWRvbmx5IHRhcmdldDogSURtc0VuZHBvaW50O1xuXG4gIC8qKiBUaGUgcmVwbGljYXRpb24gdGFzayB0aGF0IGRyaXZlcyB0aGUgbWlncmF0aW9uLiAqL1xuICByZWFkb25seSByZXBsaWNhdGlvblRhc2s6IERtc1JlcGxpY2F0aW9uVGFzaztcblxuICAvKiogQ2xvdWRXYXRjaCBsb2cgZ3JvdXAgZm9yIHRoZSB0YXNrIChpZiBlbmFibGVDbG91ZFdhdGNoTG9ncyBpcyB0cnVlKS4gKi9cbiAgcmVhZG9ubHkgbG9nR3JvdXA/OiBsb2dzLkxvZ0dyb3VwO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Qgd3JhcHBpbmcgdGhlIGN1c3RvbSByZXNvdXJjZXMgdGhhdCBjcmVhdGVkIHRoZSBgZG1zLWNsb3Vkd2F0Y2gtbG9ncy1yb2xlYC5cbiAgICogYHVuZGVmaW5lZGAgd2hlbiBgY3JlYXRlRG1zU2VydmljZVJvbGVzYCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgcmVhZG9ubHkgZG1zQ2xvdWRXYXRjaFJvbGU/OiBDb25zdHJ1Y3Q7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdCB3cmFwcGluZyB0aGUgY3VzdG9tIHJlc291cmNlcyB0aGF0IGNyZWF0ZWQgdGhlIGBkbXMtdnBjLXJvbGVgLlxuICAgKiBgdW5kZWZpbmVkYCB3aGVuIGBjcmVhdGVEbXNTZXJ2aWNlUm9sZXNgIGlzIGBmYWxzZWAuXG4gICAqL1xuICByZWFkb25seSBkbXNWcGNSb2xlPzogQ29uc3RydWN0O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEbXNNaWdyYXRpb25QaXBlbGluZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMudmFsaWRhdGVQcm9wcyhwcm9wcyk7XG5cbiAgICBjb25zdCByZW1vdmFsUG9saWN5ID0gcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZO1xuICAgIGNvbnN0IGNyZWF0ZVJvbGVzID0gcHJvcHMuY3JlYXRlRG1zU2VydmljZVJvbGVzID8/IHRydWU7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIGRtcy12cGMtcm9sZSDigJQgYWNjb3VudC1sZXZlbCBzaW5nbGV0b24gcmVxdWlyZWQgYnkgRE1TIHRvIHBsYWNlXG4gICAgLy8gcmVwbGljYXRpb24gaW5zdGFuY2VzIGluc2lkZSBhIFZQQy4gTXVzdCBleGlzdCBiZWZvcmUgdGhlIGZpcnN0XG4gICAgLy8gQ2ZuUmVwbGljYXRpb25JbnN0YW5jZSBpcyBjcmVhdGVkIGluIHRoZSBhY2NvdW50LlxuICAgIC8vIFNraXAgd2hlbiBjcmVhdGVEbXNTZXJ2aWNlUm9sZXMgaXMgZmFsc2UgKHJvbGVzIGFscmVhZHkgZXhpc3QpLlxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgaWYgKGNyZWF0ZVJvbGVzKSB7XG4gICAgICB0aGlzLmRtc1ZwY1JvbGUgPSBlbnN1cmVEbXNWcGNSb2xlKGNkay5TdGFjay5vZih0aGlzKSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBDbG91ZFdhdGNoIGxvZyBncm91cCAmIElBTSByb2xlXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBlbmFibGVMb2dzID0gcHJvcHMuZW5hYmxlQ2xvdWRXYXRjaExvZ3MgPz8gdHJ1ZTtcblxuICAgIGlmIChlbmFibGVMb2dzKSB7XG4gICAgICB0aGlzLmxvZ0dyb3VwID0gbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgJ1Rhc2tMb2dHcm91cCcsIHtcbiAgICAgICAgbG9nR3JvdXBOYW1lOiBgL2F3cy9kbXMvdGFza3MvJHtpZH1gLFxuICAgICAgICByZXRlbnRpb246IHByb3BzLmxvZ1JldGVudGlvbiA/PyBsb2dzLlJldGVudGlvbkRheXMuT05FX01PTlRILFxuICAgICAgICByZW1vdmFsUG9saWN5LFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChjcmVhdGVSb2xlcykge1xuICAgICAgICAvLyBkbXMtY2xvdWR3YXRjaC1sb2dzLXJvbGUgaXMgYW4gYWNjb3VudC1sZXZlbCBzaW5nbGV0b24g4oCUIERNUyByZXF1aXJlc1xuICAgICAgICAvLyB0aGlzIGV4YWN0IG5hbWUuIEd1YXJkIHdpdGggYSBzdGFjay1sZXZlbCBzaW5nbGV0b24gc28gZGVwbG95aW5nIG11bHRpcGxlXG4gICAgICAgIC8vIHBpcGVsaW5lcyBpbiB0aGUgc2FtZSBzdGFjayBkb2Vzbid0IGNyZWF0ZSBkdXBsaWNhdGUgcm9sZXMuXG4gICAgICAgIHRoaXMuZG1zQ2xvdWRXYXRjaFJvbGUgPSBlbnN1cmVEbXNDbG91ZFdhdGNoUm9sZShjZGsuU3RhY2sub2YodGhpcykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gUmVwbGljYXRpb24gaW5zdGFuY2VcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHRoaXMucmVwbGljYXRpb25JbnN0YW5jZSA9IG5ldyBEbXNSZXBsaWNhdGlvbkluc3RhbmNlKHRoaXMsICdSZXBsaWNhdGlvbkluc3RhbmNlJywge1xuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICB2cGNTdWJuZXRzOiBwcm9wcy52cGNTdWJuZXRzLFxuICAgICAgcmVwbGljYXRpb25JbnN0YW5jZUNsYXNzOiBwcm9wcy5yZXBsaWNhdGlvbkluc3RhbmNlQ2xhc3MsXG4gICAgICBhbGxvY2F0ZWRTdG9yYWdlOiBwcm9wcy5hbGxvY2F0ZWRTdG9yYWdlLFxuICAgICAgbXVsdGlBejogcHJvcHMubXVsdGlBeixcbiAgICAgIGVuZ2luZVZlcnNpb246IHByb3BzLmVuZ2luZVZlcnNpb24sXG4gICAgICBrbXNLZXk6IHByb3BzLmVuY3J5cHRpb25LZXksXG4gICAgICByZW1vdmFsUG9saWN5LFxuICAgIH0pO1xuICAgIC8vIGRtcy12cGMtcm9sZSBtdXN0IGV4aXN0IGJlZm9yZSBETVMgY2FuIGRlc2NyaWJlIFZQQyBzdWJuZXRzIChzdWJuZXQgZ3JvdXApXG4gICAgLy8gb3IgcGxhY2UgdGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlIGluc2lkZSBhIFZQQy5cbiAgICBpZiAodGhpcy5kbXNWcGNSb2xlKSB7XG4gICAgICB0aGlzLnJlcGxpY2F0aW9uSW5zdGFuY2Uuc3VibmV0R3JvdXAubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMuZG1zVnBjUm9sZSk7XG4gICAgICB0aGlzLnJlcGxpY2F0aW9uSW5zdGFuY2UuY2ZuUmVwbGljYXRpb25JbnN0YW5jZS5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5kbXNWcGNSb2xlKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFNvdXJjZSBlbmRwb2ludFxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgaWYgKHByb3BzLmV4aXN0aW5nU291cmNlRW5kcG9pbnQpIHtcbiAgICAgIHRoaXMuc291cmNlID0gcHJvcHMuZXhpc3RpbmdTb3VyY2VFbmRwb2ludDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc291cmNlT3B0cyA9IHByb3BzLnNvdXJjZUVuZHBvaW50ITtcbiAgICAgIHRoaXMuc291cmNlID0gbmV3IERtc0VuZHBvaW50KHRoaXMsICdTb3VyY2VFbmRwb2ludCcsIHtcbiAgICAgICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGUuU09VUkNFLFxuICAgICAgICBlbmdpbmU6IHNvdXJjZU9wdHMuZW5naW5lLFxuICAgICAgICBlbmRwb2ludElkZW50aWZpZXI6IHNvdXJjZU9wdHMuZW5kcG9pbnRJZGVudGlmaWVyLFxuICAgICAgICBzZXJ2ZXJOYW1lOiBzb3VyY2VPcHRzLnNlcnZlck5hbWUsXG4gICAgICAgIHBvcnQ6IHNvdXJjZU9wdHMucG9ydCxcbiAgICAgICAgdXNlcm5hbWU6IHNvdXJjZU9wdHMudXNlcm5hbWUsXG4gICAgICAgIHBhc3N3b3JkOiBzb3VyY2VPcHRzLnBhc3N3b3JkLFxuICAgICAgICBkYXRhYmFzZU5hbWU6IHNvdXJjZU9wdHMuZGF0YWJhc2VOYW1lLFxuICAgICAgICBleHRyYUNvbm5lY3Rpb25BdHRyaWJ1dGVzOiBzb3VyY2VPcHRzLmV4dHJhQ29ubmVjdGlvbkF0dHJpYnV0ZXMsXG4gICAgICAgIGNlcnRpZmljYXRlQXJuOiBzb3VyY2VPcHRzLmNlcnRpZmljYXRlQXJuLFxuICAgICAgICBzc2xNb2RlOiBzb3VyY2VPcHRzLnNzbE1vZGUsXG4gICAgICAgIG15U3FsU2V0dGluZ3M6IHNvdXJjZU9wdHMubXlTcWxTZXR0aW5ncyxcbiAgICAgICAgcG9zdGdyZVNxbFNldHRpbmdzOiBzb3VyY2VPcHRzLnBvc3RncmVTcWxTZXR0aW5ncyxcbiAgICAgICAgb3JhY2xlU2V0dGluZ3M6IHNvdXJjZU9wdHMub3JhY2xlU2V0dGluZ3MsXG4gICAgICAgIHNxbFNlcnZlclNldHRpbmdzOiBzb3VyY2VPcHRzLnNxbFNlcnZlclNldHRpbmdzLFxuICAgICAgICBzYXBBc2VTZXR0aW5nczogc291cmNlT3B0cy5zYXBBc2VTZXR0aW5ncyxcbiAgICAgICAgZGIyU2V0dGluZ3M6IHNvdXJjZU9wdHMuZGIyU2V0dGluZ3MsXG4gICAgICAgIG1vbmdvRGJTZXR0aW5nczogc291cmNlT3B0cy5tb25nb0RiU2V0dGluZ3MsXG4gICAgICAgIHMzU2V0dGluZ3M6IHNvdXJjZU9wdHMuczNTZXR0aW5ncyxcbiAgICAgICAgcmVtb3ZhbFBvbGljeSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gVGFyZ2V0IGVuZHBvaW50XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBpZiAocHJvcHMuZXhpc3RpbmdUYXJnZXRFbmRwb2ludCkge1xuICAgICAgdGhpcy50YXJnZXQgPSBwcm9wcy5leGlzdGluZ1RhcmdldEVuZHBvaW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0YXJnZXRPcHRzID0gcHJvcHMudGFyZ2V0RW5kcG9pbnQhO1xuICAgICAgdGhpcy50YXJnZXQgPSBuZXcgRG1zRW5kcG9pbnQodGhpcywgJ1RhcmdldEVuZHBvaW50Jywge1xuICAgICAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZS5UQVJHRVQsXG4gICAgICAgIGVuZ2luZTogdGFyZ2V0T3B0cy5lbmdpbmUsXG4gICAgICAgIGVuZHBvaW50SWRlbnRpZmllcjogdGFyZ2V0T3B0cy5lbmRwb2ludElkZW50aWZpZXIsXG4gICAgICAgIHNlcnZlck5hbWU6IHRhcmdldE9wdHMuc2VydmVyTmFtZSxcbiAgICAgICAgcG9ydDogdGFyZ2V0T3B0cy5wb3J0LFxuICAgICAgICB1c2VybmFtZTogdGFyZ2V0T3B0cy51c2VybmFtZSxcbiAgICAgICAgcGFzc3dvcmQ6IHRhcmdldE9wdHMucGFzc3dvcmQsXG4gICAgICAgIGRhdGFiYXNlTmFtZTogdGFyZ2V0T3B0cy5kYXRhYmFzZU5hbWUsXG4gICAgICAgIGV4dHJhQ29ubmVjdGlvbkF0dHJpYnV0ZXM6IHRhcmdldE9wdHMuZXh0cmFDb25uZWN0aW9uQXR0cmlidXRlcyxcbiAgICAgICAgY2VydGlmaWNhdGVBcm46IHRhcmdldE9wdHMuY2VydGlmaWNhdGVBcm4sXG4gICAgICAgIHNzbE1vZGU6IHRhcmdldE9wdHMuc3NsTW9kZSxcbiAgICAgICAgbXlTcWxTZXR0aW5nczogdGFyZ2V0T3B0cy5teVNxbFNldHRpbmdzLFxuICAgICAgICBwb3N0Z3JlU3FsU2V0dGluZ3M6IHRhcmdldE9wdHMucG9zdGdyZVNxbFNldHRpbmdzLFxuICAgICAgICBvcmFjbGVTZXR0aW5nczogdGFyZ2V0T3B0cy5vcmFjbGVTZXR0aW5ncyxcbiAgICAgICAgc3FsU2VydmVyU2V0dGluZ3M6IHRhcmdldE9wdHMuc3FsU2VydmVyU2V0dGluZ3MsXG4gICAgICAgIHNhcEFzZVNldHRpbmdzOiB0YXJnZXRPcHRzLnNhcEFzZVNldHRpbmdzLFxuICAgICAgICBkYjJTZXR0aW5nczogdGFyZ2V0T3B0cy5kYjJTZXR0aW5ncyxcbiAgICAgICAgbW9uZ29EYlNldHRpbmdzOiB0YXJnZXRPcHRzLm1vbmdvRGJTZXR0aW5ncyxcbiAgICAgICAgczNTZXR0aW5nczogdGFyZ2V0T3B0cy5zM1NldHRpbmdzLFxuICAgICAgICBkeW5hbW9EYlNldHRpbmdzOiB0YXJnZXRPcHRzLmR5bmFtb0RiU2V0dGluZ3MsXG4gICAgICAgIHJlZHNoaWZ0U2V0dGluZ3M6IHRhcmdldE9wdHMucmVkc2hpZnRTZXR0aW5ncyxcbiAgICAgICAga2luZXNpc1NldHRpbmdzOiB0YXJnZXRPcHRzLmtpbmVzaXNTZXR0aW5ncyxcbiAgICAgICAga2Fma2FTZXR0aW5nczogdGFyZ2V0T3B0cy5rYWZrYVNldHRpbmdzLFxuICAgICAgICBvcGVuU2VhcmNoU2V0dGluZ3M6IHRhcmdldE9wdHMub3BlblNlYXJjaFNldHRpbmdzLFxuICAgICAgICBuZXB0dW5lU2V0dGluZ3M6IHRhcmdldE9wdHMubmVwdHVuZVNldHRpbmdzLFxuICAgICAgICByZWRpc1NldHRpbmdzOiB0YXJnZXRPcHRzLnJlZGlzU2V0dGluZ3MsXG4gICAgICAgIHJlbW92YWxQb2xpY3ksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFRhYmxlIG1hcHBpbmdzIOKAlCBkZWZhdWx0IHRvIFwiaW5jbHVkZSBldmVyeXRoaW5nXCJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IHRhYmxlTWFwcGluZ3MgPVxuICAgICAgcHJvcHMudGFibGVNYXBwaW5ncyA/PyBuZXcgVGFibGVNYXBwaW5ncygpLmluY2x1ZGVTY2hlbWEoJyUnKS50b0pzb24oKTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gUmVwbGljYXRpb24gdGFza1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgdGhpcy5yZXBsaWNhdGlvblRhc2sgPSBuZXcgRG1zUmVwbGljYXRpb25UYXNrKHRoaXMsICdSZXBsaWNhdGlvblRhc2snLCB7XG4gICAgICByZXBsaWNhdGlvbkluc3RhbmNlQXJuOiB0aGlzLnJlcGxpY2F0aW9uSW5zdGFuY2UucmVwbGljYXRpb25JbnN0YW5jZUFybixcbiAgICAgIHNvdXJjZUVuZHBvaW50OiB0aGlzLnNvdXJjZSxcbiAgICAgIHRhcmdldEVuZHBvaW50OiB0aGlzLnRhcmdldCxcbiAgICAgIG1pZ3JhdGlvblR5cGU6IHByb3BzLm1pZ3JhdGlvblR5cGUsXG4gICAgICB0YWJsZU1hcHBpbmdzLFxuICAgICAgdGFza1NldHRpbmdzOiBwcm9wcy50YXNrU2V0dGluZ3MsXG4gICAgICBjZGNTdGFydFRpbWU6IHByb3BzLmNkY1N0YXJ0VGltZSxcbiAgICAgIGNkY1N0YXJ0UG9zaXRpb246IHByb3BzLmNkY1N0YXJ0UG9zaXRpb24sXG4gICAgICBjZGNTdG9wUG9zaXRpb246IHByb3BzLmNkY1N0b3BQb3NpdGlvbixcbiAgICAgIHJlbW92YWxQb2xpY3ksXG4gICAgfSk7XG5cbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBQcml2YXRlIGhlbHBlcnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVByb3BzKHByb3BzOiBEbXNNaWdyYXRpb25QaXBlbGluZVByb3BzKTogdm9pZCB7XG4gICAgY29uc3QgaGFzU291cmNlID0gISFwcm9wcy5zb3VyY2VFbmRwb2ludDtcbiAgICBjb25zdCBoYXNFeGlzdGluZ1NvdXJjZSA9ICEhcHJvcHMuZXhpc3RpbmdTb3VyY2VFbmRwb2ludDtcbiAgICBpZiAoaGFzU291cmNlICYmIGhhc0V4aXN0aW5nU291cmNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdQcm92aWRlIGVpdGhlciBgc291cmNlRW5kcG9pbnRgIG9yIGBleGlzdGluZ1NvdXJjZUVuZHBvaW50YCwgbm90IGJvdGguJyxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghaGFzU291cmNlICYmICFoYXNFeGlzdGluZ1NvdXJjZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnT25lIG9mIGBzb3VyY2VFbmRwb2ludGAgb3IgYGV4aXN0aW5nU291cmNlRW5kcG9pbnRgIGlzIHJlcXVpcmVkLicsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc1RhcmdldCA9ICEhcHJvcHMudGFyZ2V0RW5kcG9pbnQ7XG4gICAgY29uc3QgaGFzRXhpc3RpbmdUYXJnZXQgPSAhIXByb3BzLmV4aXN0aW5nVGFyZ2V0RW5kcG9pbnQ7XG4gICAgaWYgKGhhc1RhcmdldCAmJiBoYXNFeGlzdGluZ1RhcmdldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnUHJvdmlkZSBlaXRoZXIgYHRhcmdldEVuZHBvaW50YCBvciBgZXhpc3RpbmdUYXJnZXRFbmRwb2ludGAsIG5vdCBib3RoLicsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWhhc1RhcmdldCAmJiAhaGFzRXhpc3RpbmdUYXJnZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ09uZSBvZiBgdGFyZ2V0RW5kcG9pbnRgIG9yIGBleGlzdGluZ1RhcmdldEVuZHBvaW50YCBpcyByZXF1aXJlZC4nLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -89,5 +89,5 @@ class DmsReplicationInstance extends constructs_1.Construct {
89
89
  }
90
90
  exports.DmsReplicationInstance = DmsReplicationInstance;
91
91
  _a = JSII_RTTI_SYMBOL_1;
92
- DmsReplicationInstance[_a] = { fqn: "cdk-dms-replication.DmsReplicationInstance", version: "0.1.12" };
92
+ DmsReplicationInstance[_a] = { fqn: "cdk-dms-replication.DmsReplicationInstance", version: "0.1.13" };
93
93
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGljYXRpb24taW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVwbGljYXRpb24taW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBbUM7QUFDbkMsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MsMkNBQXVDO0FBQ3ZDLG1DQUFtRDtBQW9GbkQ7Ozs7O0dBS0c7QUFDSCxNQUFhLHNCQUF1QixTQUFRLHNCQUFTO0lBZ0JuRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWtDO1FBQzFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsMEVBQTBFO1FBQzFFLFVBQVU7UUFDViwwRUFBMEU7UUFDMUUsSUFBSSxDQUFDLGFBQWE7WUFDaEIsS0FBSyxDQUFDLE1BQU07Z0JBQ1osSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7b0JBQ2pDLFdBQVcsRUFBRSwrQ0FBK0MsRUFBRSxFQUFFO29CQUNoRSxpQkFBaUIsRUFBRSxJQUFJO29CQUN2QixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU87aUJBQ2hFLENBQUMsQ0FBQztRQUVMLDBFQUEwRTtRQUMxRSxpQkFBaUI7UUFDakIsMEVBQTBFO1FBQzFFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO1FBQzVDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixNQUFNLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtnQkFDdEQsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO2dCQUNkLFdBQVcsRUFBRSwrQ0FBK0MsRUFBRSxFQUFFO2dCQUNoRSxnQkFBZ0IsRUFBRSxJQUFJO2FBQ3ZCLENB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LWNkay1saWInO1xuaW1wb3J0ICogYXMgZG1zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1kbXMnO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBSZXBsaWNhdGlvbkluc3RhbmNlQ2xhc3MgfSBmcm9tICcuL2VudW1zJztcblxuLyoqIFByb3BzIGZvciB7QGxpbmsgRG1zUmVwbGljYXRpb25JbnN0YW5jZX0uICovXG5leHBvcnQgaW50ZXJmYWNlIERtc1JlcGxpY2F0aW9uSW5zdGFuY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBJbnN0YW5jZSBjbGFzcyBmb3IgdGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKiBAZGVmYXVsdCBSZXBsaWNhdGlvbkluc3RhbmNlQ2xhc3MuUjZJX0xBUkdFXG4gICAqL1xuICByZWFkb25seSByZXBsaWNhdGlvbkluc3RhbmNlQ2xhc3M/OiBSZXBsaWNhdGlvbkluc3RhbmNlQ2xhc3M7XG5cbiAgLyoqXG4gICAqIFZQQyBpbiB3aGljaCB0byBwbGFjZSB0aGUgcmVwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqIFRoZSBjb25zdHJ1Y3QgY3JlYXRlcyBhIGRlZGljYXRlZCBzdWJuZXQgZ3JvdXAgZnJvbSB0aGUgcHJpdmF0ZSBzdWJuZXRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcblxuICAvKipcbiAgICogU3BlY2lmaWMgc3VibmV0cyB0byB1c2UgZm9yIHRoZSByZXBsaWNhdGlvbiBzdWJuZXQgZ3JvdXAuXG4gICAqIERlZmF1bHRzIHRvIGFsbCBwcml2YXRlIHN1Ym5ldHMgaW4gdGhlIFZQQy5cbiAgICovXG4gIHJlYWRvbmx5IHZwY1N1Ym5ldHM/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cHMgdG8gYXR0YWNoIHRvIHRoZSByZXBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICogQSBuZXcgc2VjdXJpdHkgZ3JvdXAgaXMgY3JlYXRlZCBpZiBub25lIGFyZSBwcm92aWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLklTZWN1cml0eUdyb3VwW107XG5cbiAgLyoqXG4gICAqIEtNUyBrZXkgdXNlZCB0byBlbmNyeXB0IHRoZSByZXBsaWNhdGlvbiBpbnN0YW5jZSBzdG9yYWdlIGF0IHJlc3QuXG4gICAqIEEgbmV3IGtleSBpcyBjcmVhdGVkIGlmIG5vdCBwcm92aWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBBbGxvY2F0ZWQgc3RvcmFnZSBpbiBHQi5cbiAgICogQGRlZmF1bHQgMTAwXG4gICAqL1xuICByZWFkb25seSBhbGxvY2F0ZWRTdG9yYWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByZXBsaWNhdGlvbiBpbnN0YW5jZSBpcyBNdWx0aS1BWi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG11bHRpQXo/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByZXBsaWNhdGlvbiBpbnN0YW5jZSBpcyBwdWJsaWNseSBhY2Nlc3NpYmxlLlxuICAgKiBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZCBmb3IgcHJvZHVjdGlvbiB3b3JrbG9hZHMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNseUFjY2Vzc2libGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IG1pbm9yIHZlcnNpb24gdXBncmFkZXMgdG8gYmUgYXBwbGllZCBhdXRvbWF0aWNhbGx5IGR1cmluZyBtYWludGVuYW5jZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b01pbm9yVmVyc2lvblVwZ3JhZGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcmVmZXJyZWQgbWFpbnRlbmFuY2Ugd2luZG93LCBlLmcuIFwic3VuOjA0OjAwLXN1bjowNDozMFwiLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlcGxpY2F0aW9uIGVuZ2luZSB2ZXJzaW9uLlxuICAgKiBAZGVmYXVsdCBsYXRlc3QgdmVyc2lvbiBhdmFpbGFibGUgaW4gdGhlIHJlZ2lvbiAoY2hvc2VuIGJ5IERNUylcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExvZ2ljYWwgbmFtZSBvZiB0aGUgcmVwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqIFVzZWQgaW4gdGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlIGlkZW50aWZpZXIgYW5kIHJlc291cmNlIG5hbWluZy5cbiAgICogQGRlZmF1bHQgaWQgb2YgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbGljYXRpb25JbnN0YW5jZUlkZW50aWZpZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlbW92YWwgcG9saWN5IGFwcGxpZWQgdG8gdGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKiBAZGVmYXVsdCBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3k7XG59XG5cbi8qKlxuICogQW4gTDItc3R5bGUgY29uc3RydWN0IHRoYXQgcHJvdmlzaW9ucyBhIERNUyByZXBsaWNhdGlvbiBpbnN0YW5jZSB3aXRoOlxuICogLSBQcml2YXRlIHN1Ym5ldCBwbGFjZW1lbnQgdmlhIGEgZGVkaWNhdGVkIHN1Ym5ldCBncm91cFxuICogLSBLTVMgZW5jcnlwdGlvbiBhdCByZXN0IChrZXkgY3JlYXRlZCBpZiBub3QgcHJvdmlkZWQpXG4gKiAtIEEgZGVkaWNhdGVkIHNlY3VyaXR5IGdyb3VwIChjcmVhdGVkIGlmIG5vdCBwcm92aWRlZClcbiAqL1xuZXhwb3J0IGNsYXNzIERtc1JlcGxpY2F0aW9uSW5zdGFuY2UgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKiogVGhlIHVuZGVybHlpbmcgQ2xvdWRGb3JtYXRpb24gcmVwbGljYXRpb24gaW5zdGFuY2UgcmVzb3VyY2UuICovXG4gIHJlYWRvbmx5IGNmblJlcGxpY2F0aW9uSW5zdGFuY2U6IGRtcy5DZm5SZXBsaWNhdGlvbkluc3RhbmNlO1xuXG4gIC8qKiBUaGUgcmVwbGljYXRpb24gc3VibmV0IGdyb3VwIGNyZWF0ZWQgZm9yIHRoaXMgaW5zdGFuY2UuICovXG4gIHJlYWRvbmx5IHN1Ym5ldEdyb3VwOiBkbXMuQ2ZuUmVwbGljYXRpb25TdWJuZXRHcm91cDtcblxuICAvKiogVGhlIEtNUyBrZXkgdXNlZCBmb3Igc3RvcmFnZSBlbmNyeXB0aW9uLiAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5OiBrbXMuSUtleTtcblxuICAvKiogVGhlIHNlY3VyaXR5IGdyb3VwIGF0dGFjaGVkIHRvIHRoaXMgaW5zdGFuY2UuICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXA6IGVjMi5JU2VjdXJpdHlHcm91cDtcblxuICAvKiogVGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlIEFSTi4gKi9cbiAgcmVhZG9ubHkgcmVwbGljYXRpb25JbnN0YW5jZUFybjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEbXNSZXBsaWNhdGlvbkluc3RhbmNlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBLTVMga2V5XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICB0aGlzLmVuY3J5cHRpb25LZXkgPVxuICAgICAgcHJvcHMua21zS2V5ID8/XG4gICAgICBuZXcga21zLktleSh0aGlzLCAnRW5jcnlwdGlvbktleScsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBETVMgcmVwbGljYXRpb24gaW5zdGFuY2UgZW5jcnlwdGlvbiBrZXkgZm9yICR7aWR9YCxcbiAgICAgICAgZW5hYmxlS2V5Um90YXRpb246IHRydWUsXG4gICAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgPz8gY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIH0pO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBTZWN1cml0eSBncm91cFxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgcHJvdmlkZWQgPSBwcm9wcy5zZWN1cml0eUdyb3VwcyA/PyBbXTtcbiAgICBpZiAocHJvdmlkZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBzZyA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCAnU2VjdXJpdHlHcm91cCcsIHtcbiAgICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgRE1TIHJlcGxpY2F0aW9uIGluc3RhbmNlIHNlY3VyaXR5IGdyb3VwIGZvciAke2lkfWAsXG4gICAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2VjdXJpdHlHcm91cCA9IHNnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlY3VyaXR5R3JvdXAgPSBwcm92aWRlZFswXTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWN1cml0eUdyb3VwSWRzID0gcHJvdmlkZWQubGVuZ3RoID4gMFxuICAgICAgPyBwcm92aWRlZC5tYXAoKHNnKSA9PiBzZy5zZWN1cml0eUdyb3VwSWQpXG4gICAgICA6IFt0aGlzLnNlY3VyaXR5R3JvdXAuc2VjdXJpdHlHcm91cElkXTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gU3VibmV0IGdyb3VwXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBzdWJuZXRTZWxlY3Rpb24gPSBwcm9wcy52cGNTdWJuZXRzID8/IHtcbiAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgfTtcbiAgICBjb25zdCBzdWJuZXRzID0gcHJvcHMudnBjLnNlbGVjdFN1Ym5ldHMoc3VibmV0U2VsZWN0aW9uKTtcblxuICAgIHRoaXMuc3VibmV0R3JvdXAgPSBuZXcgZG1zLkNmblJlcGxpY2F0aW9uU3VibmV0R3JvdXAodGhpcywgJ1N1Ym5ldEdyb3VwJywge1xuICAgICAgcmVwbGljYXRpb25TdWJuZXRHcm91cERlc2NyaXB0aW9uOiBgRE1TIHN1Ym5ldCBncm91cCBmb3IgJHtpZH1gLFxuICAgICAgc3VibmV0SWRzOiBzdWJuZXRzLnN1Ym5ldElkcyxcbiAgICB9KTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gUmVwbGljYXRpb24gaW5zdGFuY2VcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGluc3RhbmNlSWRlbnRpZmllciA9XG4gICAgICBwcm9wcy5yZXBsaWNhdGlvbkluc3RhbmNlSWRlbnRpZmllciA/PyBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHsgbWF4TGVuZ3RoOiA2MyB9KS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgdGhpcy5jZm5SZXBsaWNhdGlvbkluc3RhbmNlID0gbmV3IGRtcy5DZm5SZXBsaWNhdGlvbkluc3RhbmNlKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIHJlcGxpY2F0aW9uSW5zdGFuY2VDbGFzczogcHJvcHMucmVwbGljYXRpb25JbnN0YW5jZUNsYXNzID8/IFJlcGxpY2F0aW9uSW5zdGFuY2VDbGFzcy5SNklfTEFSR0UsXG4gICAgICByZXBsaWNhdGlvbkluc3RhbmNlSWRlbnRpZmllcjogaW5zdGFuY2VJZGVudGlmaWVyLFxuICAgICAgYWxsb2NhdGVkU3RvcmFnZTogcHJvcHMuYWxsb2NhdGVkU3RvcmFnZSA/PyAxMDAsXG4gICAgICBlbmdpbmVWZXJzaW9uOiBwcm9wcy5lbmdpbmVWZXJzaW9uLFxuICAgICAga21zS2V5SWQ6IHRoaXMuZW5jcnlwdGlvbktleS5rZXlBcm4sXG4gICAgICBtdWx0aUF6OiBwcm9wcy5tdWx0aUF6ID8/IGZhbHNlLFxuICAgICAgcHVibGljbHlBY2Nlc3NpYmxlOiBwcm9wcy5wdWJsaWNseUFjY2Vzc2libGUgPz8gZmFsc2UsXG4gICAgICBhdXRvTWlub3JWZXJzaW9uVXBncmFkZTogcHJvcHMuYXV0b01pbm9yVmVyc2lvblVwZ3JhZGUgPz8gdHJ1ZSxcbiAgICAgIHJlcGxpY2F0aW9uU3VibmV0R3JvdXBJZGVudGlmaWVyOiB0aGlzLnN1Ym5ldEdyb3VwLnJlZixcbiAgICAgIHZwY1NlY3VyaXR5R3JvdXBJZHM6IHNlY3VyaXR5R3JvdXBJZHMsXG4gICAgICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdzogcHJvcHMucHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3csXG4gICAgfSk7XG4gICAgdGhpcy5jZm5SZXBsaWNhdGlvbkluc3RhbmNlLmFwcGx5UmVtb3ZhbFBvbGljeShcbiAgICAgIHByb3BzLnJlbW92YWxQb2xpY3kgPz8gY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICApO1xuXG4gICAgdGhpcy5yZXBsaWNhdGlvbkluc3RhbmNlQXJuID0gdGhpcy5jZm5SZXBsaWNhdGlvbkluc3RhbmNlLnJlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvdyBpbmJvdW5kIGFjY2VzcyB0byB0aGUgcmVwbGljYXRpb24gaW5zdGFuY2Ugb24gYSBnaXZlbiBwb3J0IGZyb20gYSBwZWVyLlxuICAgKiBVc2VmdWwgd2hlbiB0aGUgc291cmNlIG9yIHRhcmdldCBkYXRhYmFzZSBzZWN1cml0eSBncm91cCBuZWVkcyB0byB0cnVzdCB0aGUgaW5zdGFuY2UuXG4gICAqL1xuICBhbGxvd0luYm91bmRGcm9tKHBlZXI6IGVjMi5JUGVlciwgcG9ydDogZWMyLlBvcnQsIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VjdXJpdHlHcm91cCBpbnN0YW5jZW9mIGVjMi5TZWN1cml0eUdyb3VwKSB7XG4gICAgICB0aGlzLnNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUocGVlciwgcG9ydCwgZGVzY3JpcHRpb24gPz8gJ0FsbG93IERNUyByZXBsaWNhdGlvbiBpbnN0YW5jZScpO1xuICAgIH1cbiAgfVxufVxuIl19