ato-water-lib 0.0.125 → 0.0.126
Sign up to get free protection for your applications and to get access to all the features.
@@ -1181,9 +1181,15 @@ export class AtoDefaultGojsEditor {
|
|
1181
1181
|
AtoDefaultGojsEditor.ENUM_ACTIONS.DELETE,
|
1182
1182
|
])
|
1183
1183
|
: {})),
|
1184
|
+
toolTip: this.$('ToolTip', this.$(go.TextBlock, {
|
1185
|
+
margin: 4,
|
1186
|
+
}, new go.Binding('text', 'name').makeTwoWay())),
|
1184
1187
|
},
|
1185
1188
|
// new go.Binding('location', 'loc', go.Point.parse),
|
1186
|
-
new go.Binding('movable', 'movable'), new go.Binding('selectable', 'selectable'), new go.Binding('location', 'loc', go.Point.parse).makeTwoWay(go.Point.stringify), new go.Binding('visible', 'visible'), this.$(go.Panel, 'Auto', {
|
1189
|
+
new go.Binding('movable', 'movable'), new go.Binding('selectable', 'selectable'), new go.Binding('location', 'loc', go.Point.parse).makeTwoWay(go.Point.stringify), new go.Binding('visible', 'visible'), this.$(go.Panel, 'Auto', {
|
1190
|
+
width: size.w,
|
1191
|
+
height: size.h,
|
1192
|
+
}, this.$(go.Shape, 'RoundedRectangle', {
|
1187
1193
|
fill: 'white',
|
1188
1194
|
stroke: AtoGojsEditorModel.ENUM_COLORS.LINK_WATER,
|
1189
1195
|
strokeWidth: 1,
|
@@ -1194,10 +1200,13 @@ export class AtoDefaultGojsEditor {
|
|
1194
1200
|
desiredSize: new go.Size(size.w - 20, size.h - 50),
|
1195
1201
|
// maxSize: new go.Size(60, 60),
|
1196
1202
|
imageStretch: go.GraphObject.Uniform,
|
1197
|
-
toolTip: this.$(
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1203
|
+
// toolTip: this.$(
|
1204
|
+
// 'ToolTip',
|
1205
|
+
// this.$(go.TextBlock, {
|
1206
|
+
// margin: 4,
|
1207
|
+
// text: title,
|
1208
|
+
// })
|
1209
|
+
// ),
|
1201
1210
|
}), this.$(go.TextBlock, {
|
1202
1211
|
row: 2,
|
1203
1212
|
margin: new go.Margin(10, 0, 3, 0),
|
@@ -1266,7 +1275,13 @@ export class AtoDefaultGojsEditor {
|
|
1266
1275
|
AtoDefaultGojsEditor.ENUM_ACTIONS.OUTFLOW,
|
1267
1276
|
AtoDefaultGojsEditor.ENUM_ACTIONS.DELETE,
|
1268
1277
|
]))),
|
1269
|
-
|
1278
|
+
toolTip: this.$('ToolTip', this.$(go.TextBlock, {
|
1279
|
+
margin: 4,
|
1280
|
+
}, new go.Binding('text', 'name').makeTwoWay())),
|
1281
|
+
}, new go.Binding('visible', 'visible'), new go.Binding('movable', 'movable'), new go.Binding('selectable', 'selectable'), new go.Binding('location', 'loc', go.Point.parse).makeTwoWay(go.Point.stringify), this.$(go.Panel, 'Auto', {
|
1282
|
+
width: size.w,
|
1283
|
+
height: size.h,
|
1284
|
+
}, this.$(go.Shape, 'RoundedRectangle', {
|
1270
1285
|
fill: 'white',
|
1271
1286
|
stroke: AtoGojsEditorModel.ENUM_COLORS.LINK_WATER,
|
1272
1287
|
// strokeDashArray: [5, 5],
|
@@ -1277,10 +1292,13 @@ export class AtoDefaultGojsEditor {
|
|
1277
1292
|
stroke: '#444444',
|
1278
1293
|
font: 'normal 10pt Arial',
|
1279
1294
|
textAlign: 'center',
|
1280
|
-
toolTip: this.$(
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1295
|
+
// toolTip: this.$(
|
1296
|
+
// 'ToolTip',
|
1297
|
+
// this.$(go.TextBlock, {
|
1298
|
+
// margin: 4,
|
1299
|
+
// text: title,
|
1300
|
+
// })
|
1301
|
+
// ),
|
1284
1302
|
}), this.$(go.Picture, icon, {
|
1285
1303
|
row: 1,
|
1286
1304
|
alignment: go.Spot.Center,
|
@@ -1404,6 +1422,9 @@ export class AtoDefaultGojsEditor {
|
|
1404
1422
|
// }),
|
1405
1423
|
// ),
|
1406
1424
|
),
|
1425
|
+
toolTip: this.$('ToolTip', this.$(go.TextBlock, {
|
1426
|
+
margin: 4,
|
1427
|
+
}, new go.Binding('text', 'name').makeTwoWay())),
|
1407
1428
|
}, new go.Binding('location', 'loc', go.Point.parse).makeTwoWay(go.Point.stringify), this.$(go.Panel, 'Auto', { width: size.w, height: size.h },
|
1408
1429
|
// this.$(go.Shape, 'RoundedRectangle', {
|
1409
1430
|
// fill: 'white',
|
@@ -1425,10 +1446,13 @@ export class AtoDefaultGojsEditor {
|
|
1425
1446
|
stroke: '#444444',
|
1426
1447
|
font: 'normal 10pt Arial',
|
1427
1448
|
textAlign: 'center',
|
1428
|
-
toolTip: this.$(
|
1429
|
-
|
1430
|
-
|
1431
|
-
|
1449
|
+
// toolTip: this.$(
|
1450
|
+
// 'ToolTip',
|
1451
|
+
// this.$(go.TextBlock, {
|
1452
|
+
// margin: 4,
|
1453
|
+
// text: title,
|
1454
|
+
// })
|
1455
|
+
// ),
|
1432
1456
|
}), this.$(go.Picture, icon, {
|
1433
1457
|
row: 1,
|
1434
1458
|
alignment: go.Spot.Center,
|
@@ -1500,7 +1524,13 @@ export class AtoDefaultGojsEditor {
|
|
1500
1524
|
AtoDefaultGojsEditor.ENUM_ACTIONS.OUTFLOW,
|
1501
1525
|
AtoDefaultGojsEditor.ENUM_ACTIONS.DELETE,
|
1502
1526
|
]))),
|
1503
|
-
|
1527
|
+
toolTip: this.$('ToolTip', this.$(go.TextBlock, {
|
1528
|
+
margin: 4,
|
1529
|
+
}, new go.Binding('text', 'name').makeTwoWay())),
|
1530
|
+
}, new go.Binding('visible', 'visible'), new go.Binding('movable', 'movable'), new go.Binding('selectable', 'selectable'), new go.Binding('location', 'loc', go.Point.parse).makeTwoWay(go.Point.stringify), this.$(go.Panel, 'Auto', {
|
1531
|
+
width: size.w,
|
1532
|
+
height: size.h,
|
1533
|
+
}, this.$(go.Shape, 'RoundedRectangle', {
|
1504
1534
|
fill: 'white',
|
1505
1535
|
stroke: AtoGojsEditorModel.ENUM_COLORS.LINK_WATER,
|
1506
1536
|
// strokeDashArray: [5, 5],
|
@@ -3745,4 +3775,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
3745
3775
|
};
|
3746
3776
|
AtoDefaultGojsEditor.DISTANCE_2_OUTPUT = 60;
|
3747
3777
|
})(AtoDefaultGojsEditor || (AtoDefaultGojsEditor = {}));
|
3748
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1nb2pzLWVkaXRvci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F0by13YXRlci1saWIvc3JjL2xpYi9tb2RlbHMvZGVmYXVsdC1nb2pzLWVkaXRvci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixPQUFPLEVBQ1AsWUFBWSxFQUNaLFFBQVEsR0FDVCxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQU83RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFQN0UsTUFBTSxVQUFVLEdBQUcsa0NBQWtDLENBQUM7QUFDdEQsTUFBTSxLQUFLLEdBQUcsZ0NBQWdDLENBQUM7QUFDL0MsTUFBTSxVQUFVLEdBQUcscUNBQXFDLENBQUM7QUFD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YUFBYSxFQUFFLHlCQUF5QjtZQUN4QyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztTQUNsQjtRQUNELENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzFCLElBQUksRUFBRSxZQUFZLENBQUMsV0FBVztZQUM5QixhQUFhLEVBQUUsY0FBYztZQUM3QixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztTQUNsQjtLQUNGLENBQUM7SUFFVyxzQ0FBaUIsR0FBRyxFQUFFLENBQUM7QUFDdEMsQ0FBQyxFQWhGZ0Isb0JBQW9CLEtBQXBCLG9CQUFvQixRQWdGcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXRvR29qc0VkaXRvck1vZGVsIH0gZnJvbSAnLi9nb2pzLWVkaXRvci5tb2RlbCc7XG5pbXBvcnQgKiBhcyBnbyBmcm9tICdnb2pzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBHT19MSUNFTlNFX0tFWSB9IGZyb20gJy4uL2NvbnN0YW50cy9rZXkuY29uc3QnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdXRpbHMvdXRpbHMuc2VydmljZSc7XG5pbXBvcnQge1xuICBBVE9fRU5VTV9GTE9XX0RJUkVDVElPTixcbiAgQVRPX0VDT01QT05FTlRfUExBTlRfVFlQRSxcbiAgTk9fREFUQSxcbiAgVEVYVF9VTktOT1dOLFxuICBWQUxVRV9OQSxcbn0gZnJvbSAnLi4vY29uc3RhbnRzL3ZhbHVlLmNvbnN0JztcbmltcG9ydCB7IEFUT19FUGxhbnRUeXBlIH0gZnJvbSAnLi4vY29uc3RhbnRzL3BsYW50LmNvbnN0YW50JztcblxuY29uc3QgSUNPTl9BTEVSVCA9ICcvYXNzZXRzL2ltYWdlcy9pY29ucy9TdGF0aW9uLnN2Zyc7XG5jb25zdCBBUlJPVyA9ICcvYXNzZXRzL2ltYWdlcy9pY29ucy9hcnJvdy5zdmcnO1xuY29uc3QgQVJST1dfR1JBWSA9ICcvYXNzZXRzL2ltYWdlcy9pY29ucy9hcnJvdy1ncmF5LnN2Zyc7XG5jb25zdCBST19MSU5FX0RJUlRZID0gJy9hc3NldHMvaW1hZ2VzL2ljb25zL3JvX2xpbmVfZGlydHkuc3ZnJztcbmNvbnN0IE9VVEZMT1dfTElORV9ESVJUWSA9ICcvYXNzZXRzL2ltYWdlcy9pY29ucy9vdXRmbG93X2xpbmVfZGlydHkucG5nJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUNPTlNfQkFTRTY0IH0gZnJvbSAnLi4vY29uc3RhbnRzL2ljb24tYmFzZTY0LmNvbnN0JztcbmltcG9ydCB7IEFUT19TUE9UX0xPQ0FUSU9OX1RZUEUgfSBmcm9tICcuLi9jb25zdGFudHMvY29tcG9uZW50cy1ncm91cC1jb25zdCc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIEF0b0RlZmF1bHRHb2pzRWRpdG9yIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnbWVudVRyaWdnZXInKSBtZW51VHJpZ2dlcjogYW55O1xuICBASW5wdXQoKSBsaW5rVmFsaWRhdGlvbjogKFxuICAgIGZyb21Ob2RlOiBnby5Ob2RlLFxuICAgIGZyb21Qb3J0OiBnby5HcmFwaE9iamVjdCxcbiAgICB0b05vZGU6IGdvLk5vZGUsXG4gICAgdG9Qb3J0OiBnby5HcmFwaE9iamVjdCxcbiAgICBsaW5rOiBnby5MaW5rXG4gICkgPT4gYm9vbGVhbjtcblxuICBhY3Rpb25zOiBhbnlbXSA9IFtdO1xuICBhY3Rpb25NZW51SWQ6IHN0cmluZyA9ICdhY3Rpb25NZW51SWQnO1xuXG4gIG15RGlhZ3JhbURpdjogYW55ID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgJy0nICsgbW9tZW50KCkudmFsdWVPZigpO1xuICBteURpYWdyYW06IGFueTtcbiAgJCA9IGdvLkdyYXBoT2JqZWN0Lm1ha2U7XG4gIGFuaW1hdGlvbkludGVydmFsOiBhbnk7XG4gIGRlZmF1bHRTY2FsZVpvb21Ub0ZpdD86IG51bWJlcjtcblxuICBwcml2YXRlIF9pbml0aWFsT3B0aW9uczogYW55ID0ge1xuICAgICd0b29sTWFuYWdlci5ob3ZlckRlbGF5JzogMjAwLFxuICAgIC8vICdkcmFnZ2luZ1Rvb2wuaXNFbmFibGVkJzogZmFsc2UsXG4gICAgLy8gaW5pdGlhbEF1dG9TY2FsZTogZ28uRGlhZ3JhbS5Vbmlmb3JtVG9GaWxsLFxuICAgIC8vIGF1dG9TY3JvbGxSZWdpb246IEF0b0dvanNFZGl0b3JNb2RlbC5HUklEX1NJWkUgKiA1LFxuICAgIGxheW91dDogdGhpcy4kKGdvLkxheWVyZWREaWdyYXBoTGF5b3V0LCB7IGRpcmVjdGlvbjogMCB9KSxcbiAgICBpbml0aWFsQ29udGVudEFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIsXG4gICAgaW5pdGlhbEF1dG9TY2FsZTogZ28uRGlhZ3JhbS5Vbmlmb3JtLFxuICAgIC8vIGNvbnRlbnRBbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLFxuICAgIC8vIHRoaXMuJChnby5Gb3JjZURpcmVjdGVkTGF5b3V0KSxcbiAgICAndW5kb01hbmFnZXIuaXNFbmFibGVkJzogdHJ1ZSwgLy8gZW5hYmxlIHVuZG8gJiByZWRvXG4gICAgLy8gXCJhbmltYXRpb25NYW5hZ2VyLmlzSW5pdGlhbFwiOiBmYWxzZSxcbiAgICAvLyBcImFuaW1hdGlvbk1hbmFnZXIuaXNFbmFibGVkXCI6IGZhbHNlLFxuICAgIC8vIFwiZHJhZ2dpbmdUb29sLmlzR3JpZFNuYXBFbmFibGVkXCI6IHRydWVcbiAgICBkcmFnU2VsZWN0aW5nVG9vbDogdGhpcy4kKFxuICAgICAgZ28uRHJhZ1NlbGVjdGluZ1Rvb2wsXG4gICAgICB7IGlzUGFydGlhbEluY2x1c2lvbjogdHJ1ZSwgZGVsYXk6IDUwIH0sXG4gICAgICB7XG4gICAgICAgIGJveDogdGhpcy4kKFxuICAgICAgICAgIGdvLlBhcnQsIC8vIHJlcGxhY2UgdGhlIG1hZ2VudGEgYm94IHdpdGggYSByZWQgb25lXG4gICAgICAgICAgeyBsYXllck5hbWU6ICdUb29sJywgc2VsZWN0YWJsZTogZmFsc2UgfSxcbiAgICAgICAgICB0aGlzLiQoZ28uU2hhcGUsIHtcbiAgICAgICAgICAgIG5hbWU6ICdTSEFQRScsXG4gICAgICAgICAgICBmaWxsOiAncmdiYSgyNTUsMCwwLDApJyxcbiAgICAgICAgICAgIHN0cm9rZTogJyNFOTVGNDcnLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgIH1cbiAgICApLFxuICAgICdsaW5raW5nVG9vbC5saW5rVmFsaWRhdGlvbic6IHRoaXMuY2hlY2tMaW5rQ29uZGl0aW9uLmJpbmQodGhpcyksXG4gICAgJ2RyYWdnaW5nVG9vbC5kb01vdXNlTW92ZSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGRvIHRoZSBzdGFuZGFyZCBiZWhhdmlvciBieSBjYWxsaW5nIHRoZSBzdXBlciBtZXRob2RcbiAgICAgIGdvLkRyYWdnaW5nVG9vbC5wcm90b3R5cGUuZG9Nb3VzZU1vdmUuY2FsbCh0aGlzKTtcbiAgICAgIC8vIGlmIGRyYWdnaW5nLW91dCBmcm9tIHRoZSBkaWFncmFtIGlzIG5vdCBhbGxvd2VkLCBhbmRcbiAgICAgIC8vIGlmIG1vdXNlIGlzIG91dHNpZGUgb2Ygdmlld3BvcnRcbiAgICAgIGlmIChcbiAgICAgICAgIXRoaXMuZGlhZ3JhbS5hbGxvd0RyYWdPdXQgJiZcbiAgICAgICAgIXRoaXMuZGlhZ3JhbS52aWV3cG9ydEJvdW5kcy5jb250YWluc1BvaW50KFxuICAgICAgICAgIHRoaXMuZGlhZ3JhbS5sYXN0SW5wdXQuZG9jdW1lbnRQb2ludFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5kaWFncmFtLmVuc3VyZUJvdW5kcygpO1xuICAgICAgICBjb25zdCB2cCA9IHRoaXMuZGlhZ3JhbS5sYXN0SW5wdXQudmlld1BvaW50O1xuICAgICAgICBjb25zdCBkcCA9IHRoaXMuZGlhZ3JhbS5wb3NpdGlvbi5jb3B5KCk7XG4gICAgICAgIGlmICh2cC54IDwgMCkgZHAueCAtPSAxMDtcbiAgICAgICAgZWxzZSBpZiAodnAueCA+IDApIGRwLnggKz0gMTA7XG4gICAgICAgIGlmICh2cC55IDwgMCkgZHAueSAtPSAxMDtcbiAgICAgICAgZWxzZSBpZiAodnAueSA+IDApIGRwLnkgKz0gMTA7XG4gICAgICAgIHRoaXMuZGlhZ3JhbS5wb3NpdGlvbiA9IGRwOyAvLyBzY3JvbGwgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgbW91c2VcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIExheW91dENvbXBsZXRlZDogKCkgPT4ge1xuICAgIC8vICAgICB0aGlzLm15RGlhZ3JhbS56b29tVG9GaXQoKTtcbiAgICAvLyAgICAgdGhpcy5kZWZhdWx0U2NhbGVab29tVG9GaXQgPSB0aGlzLm15RGlhZ3JhbS5zY2FsZTtcbiAgICAvLyAgICAgaWYgKCF0aGlzLmluaXRpYWxPcHRpb25zLmlzUmVhZE9ubHkpIHtcbiAgICAvLyAgICAgICAgIGNvbnN0IHNpemVNYXJnaW4gPSBBdG9Hb2pzRWRpdG9yTW9kZWwuR1JJRF9TSVpFICogMTU7XG4gICAgLy8gICAgICAgICB0aGlzLm15RGlhZ3JhbS5wYWRkaW5nID0gbmV3IGdvLk1hcmdpbihzaXplTWFyZ2luKTtcbiAgICAvLyAgICAgfVxuICAgIC8vIH0sXG4gIH07XG5cbiAgY2hlY2tMaW5rQ29uZGl0aW9uKFxuICAgIGZyb21Ob2RlOiBnby5Ob2RlLFxuICAgIGZyb21Qb3J0OiBnby5HcmFwaE9iamVjdCxcbiAgICB0b05vZGU6IGdvLk5vZGUsXG4gICAgdG9Qb3J0OiBnby5HcmFwaE9iamVjdCxcbiAgICBsaW5rOiBnby5MaW5rXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmxpbmtWYWxpZGF0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5saW5rVmFsaWRhdGlvbihmcm9tTm9kZSwgZnJvbVBvcnQsIHRvTm9kZSwgdG9Qb3J0LCBsaW5rKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7IC8vIE3hurdjIMSR4buLbmggY2hvIHRyxrDhu51uZyBo4bujcCBraMO0bmcgY8OzIGjDoG0gbGlua1ZhbGlkYXRpb24gxJHGsOG7o2MgdHJ1eeG7gW4gdsOgb1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGluaXRpYWxPcHRpb25zKHY6IGFueSkge1xuICAgIHRoaXMuX2luaXRpYWxPcHRpb25zID0gXy5tZXJnZSh0aGlzLl9pbml0aWFsT3B0aW9ucywgdik7XG4gICAgLy8gXy5leHRlbmQodiwgdGhpcy5faW5pdGlhbE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0IGluaXRpYWxPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9pbml0aWFsT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgX2VkaXRvcjogQXRvR29qc0VkaXRvck1vZGVsO1xuICBASW5wdXQoKSBzZXQgZWRpdG9yKHY6IEF0b0dvanNFZGl0b3JNb2RlbCkge1xuICAgIHRoaXMuX2VkaXRvciA9IHY7XG4gICAgaWYgKHYpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmluaXREaWFncmFtKCk7XG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgfVxuXG4gIGdldCBlZGl0b3IoKTogQXRvR29qc0VkaXRvck1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5fZWRpdG9yO1xuICB9XG5cbiAgQElucHV0KCkgaXNTaG93Tm9kZUluZm86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcGxhbnRTYXR1czogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsUmVmOiBFbGVtZW50UmVmKSB7XG4gICAgZ28uRGlhZ3JhbS5saWNlbnNlS2V5ID0gR09fTElDRU5TRV9LRVk7XG4gIH1cblxuICBAT3V0cHV0KCkgb25Nb2RlbENoYW5nZUxpc3RlbmVyRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uQ2xpY2tJbmZvQnV0dG9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb25PcGVuV2l6YXJkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb25PcGVuRGV0YWlsOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb25PcGVuQXNzZXRQYXJhbWV0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvbk9wZW5JbnNpZ2h0TWFwcGluZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uSG92ZXJJbmZvQnV0dG9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb25Ib3ZlckFsZXJ0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb25Eb3VibGVDbGlja05vZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvbk9wZW5DaGFuZ2VJY29uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvLyBDbGljayBjb21wb25lbnRcbiAgQE91dHB1dCgpIG9uQ2xpY2tDb21wb2VudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNhbGxiYWNrSW1hZ2VUb3BvbG9neTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvLyBDbGljayBwYXJhbSBvbiBQYXJhbVRhYmxlXG4gIEBPdXRwdXQoKSBvbkNsaWtQYXJhbU9mVGFibGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLy8gRGVsZXRlIE5vZGVcbiAgQE91dHB1dCgpIG9uRGVsZXRlTm9kZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uVW5kbzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gUmVuYW1lXG4gIEBPdXRwdXQoKSBvblJlbmFtZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBpc0FkZGVkTW9kZWxDaGFuZ2VkTGlzdGVuZXJzOiBib29sZWFuO1xuICBjb21taXR0ZWRUcmFuc2FjdGlvblN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgLy8gQWRkU3ViIGFuZCBVblN1YlxuICBfc3Vic2NyaXB0aW9uTGlzdDogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmVBbGwoKTtcbiAgICB0aGlzLnN0b3BBbmltYXRpb24oKTtcbiAgICAvLyB0aGlzLm15RGlhZ3JhbT8uY2xlYXIoKTtcbiAgICBpZiAoISF0aGlzLm15RGlhZ3JhbT8uZGl2KSB7XG4gICAgICB0aGlzLm15RGlhZ3JhbS5kaXYgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5teURpYWdyYW0pIHtcbiAgICAgIHRoaXMubXlEaWFncmFtLmNsZWFyKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm15RGlhZ3JhbSAhPSBudWxsICYmIHRoaXMubXlEaWFncmFtLm5vZGVUZW1wbGF0ZU1hcCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm15RGlhZ3JhbS5ub2RlVGVtcGxhdGVNYXAuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5teURpYWdyYW0gIT0gbnVsbCAmJiB0aGlzLm15RGlhZ3JhbS5ncm91cFRlbXBsYXRlTWFwICE9IG51bGwpIHtcbiAgICAgIHRoaXMubXlEaWFncmFtLmdyb3VwVGVtcGxhdGVNYXAuY2xlYXIoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubXlEaWFncmFtICE9IG51bGwgJiYgdGhpcy5teURpYWdyYW0ubGlua1RlbXBsYXRlICE9IG51bGwpIHtcbiAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLm15RGlhZ3JhbS5saW5rVGVtcGxhdGVNYXAudG9BcnJheSgpKSB7XG4gICAgICAgIHRoaXMubXlEaWFncmFtLmxpbmtUZW1wbGF0ZU1hcC5yZW1vdmUoa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5teURpYWdyYW0gPSBudWxsO1xuICB9XG5cbiAgYWRkT3JSZW1vdmVDb21wb2VudFRlbXBsYXRlKCkge1xuICAgIC8vIEFkZCBOb2RlIGFuZCBOb2RlIEdyb3VwXG4gICAgXy5mb3JFYWNoKHRoaXMuZWRpdG9yLmRhdGE/Lm5vZGVEYXRhQXJyYXksIChub2RlKSA9PiB7XG4gICAgICB0aGlzLmFkZFRlbXBsYXRlKG5vZGUpO1xuICAgIH0pO1xuICAgIC8vIFJlbW92ZSBOb2RlIGFuZCBOb2RlIEdyb3VwXG4gICAgXy5mb3JFYWNoKHRoaXMubXlEaWFncmFtLm5vZGVUZW1wbGF0ZU1hcD8uSGIsICh0ZW1wKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHRlbXA/LmtleSAmJlxuICAgICAgICAhdGhpcy5lZGl0b3IuZGF0YT8ubm9kZURhdGFBcnJheT8uc29tZShcbiAgICAgICAgICAobm9kZSkgPT4gbm9kZT8udHlwZSA9PT0gdGVtcD8ua2V5XG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICB0aGlzLm15RGlhZ3JhbS5ub2RlVGVtcGxhdGVNYXAucmVtb3ZlKHRlbXA/LmtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgXy5mb3JFYWNoKHRoaXMubXlEaWFncmFtLmdyb3VwVGVtcGxhdGVNYXA/LkhiLCAodGVtcCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB0ZW1wPy5rZXkgJiZcbiAgICAgICAgIXRoaXMuZWRpdG9yLmRhdGE/Lm5vZGVEYXRhQXJyYXk/LnNvbWUoXG4gICAgICAgICAgKG5vZGUpID0+IG5vZGU/LnR5cGUgPT09IHRlbXA/LmtleVxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5teURpYWdyYW0uZ3JvdXBUZW1wbGF0ZU1hcC5yZW1vdmUodGVtcD8ua2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFkZFRlbXBsYXRlKG5vZGUpIHtcbiAgICB0aGlzLmFkZE5vZGVUZW1wbGF0ZShub2RlKTtcbiAgICB0aGlzLmFkZEdyb3VwVGVtcGxhdGUobm9kZSk7XG4gIH1cblxuICBhZGRHcm91cFRlbXBsYXRlKG5vZGUpIHtcbiAgICBpZiAodGhpcy5teURpYWdyYW0uZ3JvdXBUZW1wbGF0ZU1hcD8uSGI/Lltub2RlPy50eXBlXSB8fCAhbm9kZT8uaXNHcm91cCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBHcm91cFxuICAgIGlmIChub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuUk9fV0FURVJfVFJFQVRNRU5UKSB7XG4gICAgICB0aGlzLm1ha2VHcm91cFJPUGxhbnRUZW1wbGF0ZShcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLmljb24sXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5uYW1lXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuQk9JTEVSKSB7XG4gICAgICB0aGlzLm1ha2VHcm91cEJvaWxlclRlbXBsYXRlKFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0uaWNvbixcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLm5hbWVcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG5vZGU/LnR5cGUgPT09IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5DT09MSU5HX1RPV0VSKSB7XG4gICAgICB0aGlzLm1ha2VHcm91cENvb2xpbmdUb3dlclRlbXBsYXRlKFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0uaWNvbixcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLm5hbWVcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgbm9kZT8udHlwZSA9PT1cbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5JTU1FUlNFRF9VRl9XQVRFUl9UUkVBVE1FTlRTXG4gICAgKSB7XG4gICAgICB0aGlzLm1ha2VHcm91cEltbWVyc2VkVUZUZW1wbGF0ZShcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLmljb24sXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5uYW1lXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIG5vZGU/LnR5cGUgPT09XG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuUFJFU1NVUklaRURfVUZfV0FURVJfVFJFQVRNRU5UU1xuICAgICkge1xuICAgICAgdGhpcy5tYWtlR3JvdXBDb29saW5nVG93ZXJUZW1wbGF0ZShcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLmljb24sXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5uYW1lXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuWk9ORSkge1xuICAgICAgdGhpcy5tYWtlR3JvdXBab25lVGVtcGxhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuUExBTlRfQ0VMTCAmJlxuICAgICAgbm9kZT8uaXNHcm91cFxuICAgICkge1xuICAgICAgdGhpcy5ncm91cFBsYW50Q2VsbFRlbXBsYXRlKFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0uaWNvbixcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLm5hbWVcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChcbiAgICAgIG5vZGU/LnR5cGUgPT09IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5QTEFOVF9DRUxMX0lOUFVUX0dST1VQXG4gICAgKSB7XG4gICAgICB0aGlzLmdyb3VwUENJbnB1dE9yT3V0VGVtcGxhdGUoXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5pY29uLFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0ubmFtZSxcbiAgICAgICAgbmV3IGdvLk1hcmdpbigwLCA1MCwgMCwgMClcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChcbiAgICAgIG5vZGU/LnR5cGUgPT09IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5QTEFOVF9DRUxMX09VVFBVVF9HUk9VUFxuICAgICkge1xuICAgICAgdGhpcy5ncm91cFBDSW5wdXRPck91dFRlbXBsYXRlKFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0uaWNvbixcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLm5hbWUsXG4gICAgICAgIG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgNTApXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuR1JPVVBfQkFTSUNfQ09NUE9ORU5UXG4gICAgKSB7XG4gICAgICB0aGlzLm1ha2VHcm91cEJhc2ljQ29tcG9uZW50KFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0uaWNvbixcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLm5hbWVcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tYWtlR3JvdXBUZW1wbGF0ZShcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5pY29uLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLm5hbWVcbiAgICApO1xuICB9XG5cbiAgYWRkTm9kZVRlbXBsYXRlKG5vZGUpIHtcbiAgICBpZiAodGhpcy5teURpYWdyYW0ubm9kZVRlbXBsYXRlTWFwPy5IYltub2RlPy50eXBlXSB8fCBub2RlPy5pc0dyb3VwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIE5vdCBHcm91cFxuICAgIC8vIENvbXBvbmVudCBXYXRlciBOb3JtYWxcbiAgICBpZiAoXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuVFlQRV9URU1QTEFURV9XQVRFUl9OT1JNQUw/LmluY2x1ZGVzKG5vZGU/LnR5cGUpICYmXG4gICAgICAhbm9kZT8uaXNHcm91cFxuICAgICkge1xuICAgICAgdGhpcy5tYWtlRW50aXR5VGVtcGxhdGUoXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5pY29uID8/ICcnLFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0ubmFtZSA/PyAnJ1xuICAgICAgKTtcbiAgICB9XG4gICAgLy8gQ29tcG9uZW50IFdhdGVyIFdpdGhkcmF3IE9yIERpc2NoYXJnZVxuICAgIGlmIChcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5UWVBFX1RFTVBMQVRFX1dBVEVSX1dJVEhEUkFXX09SX0RJU0NIQVJHRT8uaW5jbHVkZXMoXG4gICAgICAgIG5vZGU/LnR5cGVcbiAgICAgICkgJiZcbiAgICAgICFub2RlPy5pc0dyb3VwXG4gICAgKSB7XG4gICAgICB0aGlzLm1ha2VFbnRpdHlXaXRoZHJhd09yRGlzY2hhcmdlKFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0uaWNvbiA/PyAnJyxcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLm5hbWUgPz8gJydcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ29tcG9uZW50IEVuZXJneSBOb3JtYWxcbiAgICBpZiAoXG4gICAgICAoQXRvR29qc0VkaXRvck1vZGVsLlRZUEVfVEVNUExBVEVfRUxFQ1RSSUNJVFk/LmluY2x1ZGVzKG5vZGU/LnR5cGUpIHx8XG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5UWVBFX1RFTVBMQVRFX05BVFVSQUxfR0FTPy5pbmNsdWRlcyhub2RlPy50eXBlKSB8fFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuVFlQRV9URU1QTEFURV9GVUVMPy5pbmNsdWRlcyhub2RlPy50eXBlKSB8fFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuVFlQRV9URU1QTEFURV9TVEVBTT8uaW5jbHVkZXMobm9kZT8udHlwZSkpICYmXG4gICAgICAhbm9kZT8uaXNHcm91cFxuICAgICkge1xuICAgICAgdGhpcy5tYWtlRW50aXR5VGVtcGxhdGVFbmVyZ3koXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5pY29uID8/ICcnLFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0ubmFtZSA/PyAnJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAobm9kZT8udHlwZSA9PT0gQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLklNQUdFX1RFTVBMQVRFKSB7XG4gICAgICB0aGlzLm1ha2VJbWFnZVRlbXBsYXRlKCk7XG4gICAgfVxuICAgIGlmIChub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuUEFSQU1fVEFCTEUpIHtcbiAgICAgIHRoaXMubWFrZVBhcmFtVGFibGUoKTtcbiAgICB9XG4gICAgaWYgKG5vZGU/LnR5cGUgPT09IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5NQVNTX0JBTEFOQ0UpIHtcbiAgICAgIHRoaXMubWFrZU1hc3NCYWxhbmNlKCk7XG4gICAgfVxuICAgIC8vIFRleHQgTm9kZVxuICAgIGlmIChub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuVEVYVF9OT0RFKSB7XG4gICAgICB0aGlzLm1ha2VUZXh0VGVtcGxhdGUoKTtcbiAgICB9XG4gICAgLy8gVmFsdWUgTm9kZVxuICAgIGlmIChub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuVkFMVUVfTk9ERSkge1xuICAgICAgdGhpcy5tYWtlVmFsdWVOb2RlVGVtcGxhdGUoKTtcbiAgICB9XG5cbiAgICAvLyBWYWx1ZSBOb2RlXG4gICAgaWYgKG5vZGU/LnR5cGUgPT09IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5FTVBUWSkge1xuICAgICAgdGhpcy5tYWtlRW1wdHlOb2RlVGVtcGxhdGUoKTtcbiAgICB9XG5cbiAgICAvLyBWYWx1ZSBMYWJlbFxuICAgIGlmIChub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuVkFMVUVfTEFCRUwpIHtcbiAgICAgIHRoaXMubWFrZVZhbHVlTGFiZWxUZW1wbGF0ZSgpO1xuICAgIH1cbiAgICAvLyBMYWJlbFxuICAgIGlmIChub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuVEVYVF9MQUJFTCkge1xuICAgICAgdGhpcy5tYWtlVGV4dExhYmVsVGVtcGxhdGUoKTtcbiAgICB9XG4gICAgLy8gWm9uZSBpdGVtXG4gICAgaWYgKG5vZGU/LnR5cGUgPT09IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5aT05FX0VORVJHWV9JVEVNKSB7XG4gICAgICB0aGlzLm1ha2Vab25lSXRlbVRlbXBsYXRlKCk7XG4gICAgfVxuICAgIC8vIGRhdGEgYm94XG4gICAgaWYgKG5vZGU/LnR5cGUgPT09IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5EQVRBX0JPWCkge1xuICAgICAgdGhpcy5tYWtlRGF0YUJveFRlbXBsYXRlKCk7XG4gICAgfVxuXG4gICAgLy8gU3BlY2lhbCB0ZW1wbGF0ZVxuICAgIGlmIChBdG9Hb2pzRWRpdG9yTW9kZWwuVFlQRV9URU1QTEFURV9TUEVDSUFMPy5pbmNsdWRlcyhub2RlPy50eXBlKSkge1xuICAgICAgdGhpcy5tYWtlU3BlY2lhbFRlbXBsYXRlKFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0uaWNvbixcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLm5hbWVcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUGxhbnQgQ2VsbFxuICAgIGlmIChcbiAgICAgIG5vZGU/LnR5cGUgPT09IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5QTEFOVF9DRUxMICYmXG4gICAgICAhbm9kZT8uaXNHcm91cFxuICAgICkge1xuICAgICAgdGhpcy5wbGFudENlbGxUZW1wbGF0ZShcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLmljb24sXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5uYW1lXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGluaXREaWFncmFtKCkge1xuICAgIGlmICghIXRoaXMubXlEaWFncmFtPy5kaXYpIHtcbiAgICAgIC8vIHRoaXMubXlEaWFncmFtLmRpdiA9IG51bGw7XG4gICAgICBpZiAodGhpcy5pbml0aWFsT3B0aW9ucz8uZ3JpZCkge1xuICAgICAgICB0aGlzLm15RGlhZ3JhbVsnZ3JpZCddID0gdGhpcy5pbml0aWFsT3B0aW9ucz8uZ3JpZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubXlEaWFncmFtWydncmlkJ10gPSB0aGlzLiQoZ28uUGFuZWwsICdHcmlkJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pbml0aWFsT3B0aW9ucz8uTGF5b3V0Q29tcGxldGVkKSB7XG4gICAgICAgIHRoaXMubXlEaWFncmFtLmFkZERpYWdyYW1MaXN0ZW5lcihcbiAgICAgICAgICAnTGF5b3V0Q29tcGxldGVkJyxcbiAgICAgICAgICB0aGlzLmluaXRpYWxPcHRpb25zPy5MYXlvdXRDb21wbGV0ZWRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmluaXRpYWxPcHRpb25zPy5MaW5rUmVzaGFwZWQpIHtcbiAgICAgICAgdGhpcy5teURpYWdyYW0uYWRkRGlhZ3JhbUxpc3RlbmVyKFxuICAgICAgICAgICdMaW5rUmVzaGFwZWQnLFxuICAgICAgICAgIHRoaXMuaW5pdGlhbE9wdGlvbnM/LkxpbmtSZXNoYXBlZFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaW5pdGlhbE9wdGlvbnM/LlNlbGVjdGlvbk1vdmVkKSB7XG4gICAgICAgIHRoaXMubXlEaWFncmFtLmFkZERpYWdyYW1MaXN0ZW5lcihcbiAgICAgICAgICAnU2VsZWN0aW9uTW92ZWQnLFxuICAgICAgICAgIHRoaXMuaW5pdGlhbE9wdGlvbnM/LlNlbGVjdGlvbk1vdmVkXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pbml0aWFsT3B0aW9ucz8uQ2hhbmdlZFNlbGVjdGlvbikge1xuICAgICAgICB0aGlzLm15RGlhZ3JhbS5hZGREaWFncmFtTGlzdGVuZXIoXG4gICAgICAgICAgJ0NoYW5nZWRTZWxlY3Rpb24nLFxuICAgICAgICAgIHRoaXMuaW5pdGlhbE9wdGlvbnM/LkNoYW5nZWRTZWxlY3Rpb25cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubXlEaWFncmFtLmRyYWdTZWxlY3RpbmdUb29sID0gdGhpcy5pbml0aWFsT3B0aW9ucz8uZHJhZ1NlbGVjdGluZ1Rvb2w7XG4gICAgICB0aGlzLm15RGlhZ3JhbS50b29sTWFuYWdlci5kcmFnZ2luZ1Rvb2wuaXNHcmlkU25hcEVuYWJsZWQgPVxuICAgICAgICB0aGlzLmluaXRpYWxPcHRpb25zPy5bJ2RyYWdnaW5nVG9vbC5pc0dyaWRTbmFwRW5hYmxlZCddID8/IGZhbHNlO1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLm15RGlhZ3JhbS50b29sTWFuYWdlciAmJlxuICAgICAgICB0aGlzLm15RGlhZ3JhbS50b29sTWFuYWdlci5kcmFnZ2luZ1Rvb2xcbiAgICAgICkge1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsT3B0aW9ucz8uWydkcmFnZ2luZ1Rvb2wuZ3JpZFNuYXBDZWxsU2l6ZSddKSB7XG4gICAgICAgICAgdGhpcy5teURpYWdyYW0udG9vbE1hbmFnZXIuZHJhZ2dpbmdUb29sLmdyaWRTbmFwQ2VsbFNpemUgPVxuICAgICAgICAgICAgdGhpcy5pbml0aWFsT3B0aW9ucz8uWydkcmFnZ2luZ1Rvb2wuZ3JpZFNuYXBDZWxsU2l6ZSddO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmICh0aGlzLmluaXRpYWxPcHRpb25zPy5bJ2RyYWdnaW5nVG9vbC5pc0dyaWRTbmFwRW5hYmxlZCddKSB7XG4gICAgICAgIC8vICAgICB0aGlzLm15RGlhZ3JhbS50b29sTWFuYWdlci5kcmFnZ2luZ1Rvb2wuaXNHcmlkU25hcEVuYWJsZWQgPVxuICAgICAgICAvLyAgICAgICAgIHRoaXMuaW5pdGlhbE9wdGlvbnM/LlsnZHJhZ2dpbmdUb29sLmlzR3JpZFNuYXBFbmFibGVkJ107XG4gICAgICAgIC8vIH1cbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbE9wdGlvbnM/LlsnZHJhZ2dpbmdUb29sLmRvTW91c2VNb3ZlJ10pIHtcbiAgICAgICAgICB0aGlzLm15RGlhZ3JhbS50b29sTWFuYWdlci5kcmFnZ2luZ1Rvb2wuZG9Nb3VzZU1vdmUgPVxuICAgICAgICAgICAgdGhpcy5pbml0aWFsT3B0aW9ucz8uWydkcmFnZ2luZ1Rvb2wuZG9Nb3VzZU1vdmUnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxPcHRpb25zPy5bJ2xpbmtpbmdUb29sLmxpbmtWYWxpZGF0aW9uJ10pIHtcbiAgICAgICAgICB0aGlzLm15RGlhZ3JhbS50b29sTWFuYWdlci5saW5raW5nVG9vbC5saW5rVmFsaWRhdGlvbiA9XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxPcHRpb25zPy5bJ2xpbmtpbmdUb29sLmxpbmtWYWxpZGF0aW9uJ107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMubXlEaWFncmFtLmNvbnRlbnRBbGlnbm1lbnQgPVxuICAgICAgICB0aGlzLmluaXRpYWxPcHRpb25zPy5jb250ZW50QWxpZ25tZW50ID8/IGdvLlNwb3QuQ2VudGVyO1xuICAgICAgdGhpcy5teURpYWdyYW0ubGF5b3V0ID0gdGhpcy5pbml0aWFsT3B0aW9ucz8ubGF5b3V0O1xuICAgICAgLy8gdGhpcy5teURpYWdyYW0ubWluVmlld3BvcnRCb3VuZHMgPSBuZXcgZ28uUmVjdCgwLCAwLCAxMjAwLCAxMjAwKTtcbiAgICAgIGlmICghIXRoaXMuZWRpdG9yPy5kYXRhKSB7XG4gICAgICAgIHRoaXMuYWRkT3JSZW1vdmVDb21wb2VudFRlbXBsYXRlKCk7XG4gICAgICAgIHRoaXMubXlEaWFncmFtLm1vZGVsID0gZ28uTW9kZWwuZnJvbUpzb24odGhpcy5lZGl0b3IuZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuYW5pbWF0aW9uSW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5hbmltYXRpb25JbnRlcnZhbCk7XG4gICAgfVxuICAgIGNvbnN0IGRpYWdyYW1EaXYgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50Py5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxuICAgICAgdGhpcy5teURpYWdyYW1EaXZcbiAgICApPy5bMF07XG4gICAgdGhpcy5teURpYWdyYW0gPSB0aGlzLiQoZ28uRGlhZ3JhbSwgZGlhZ3JhbURpdiwgdGhpcy5pbml0aWFsT3B0aW9ucyk7XG4gICAgLy8gdGhpcy5teURpYWdyYW0uaW5pdGlhbFBvc2l0aW9uID0gbmV3IGdvLlBvaW50KDAsIDApO1xuICAgIHRoaXMuYWRkT3JSZW1vdmVDb21wb2VudFRlbXBsYXRlKCk7XG5cbiAgICB0aGlzLm1ha2VMaW5rVGVtcGxhdGUoKTtcbiAgICAvLyBhbmltYXRpb25cbiAgICB0aGlzLnN0YXJ0QW5pbWF0aW9uKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgLy8gaWYgKCF0aGlzLmlzQWRkZWRNb2RlbENoYW5nZWRMaXN0ZW5lcnMpIHtcbiAgICAgIHRoaXMuaXNBZGRlZE1vZGVsQ2hhbmdlZExpc3RlbmVycyA9IHRydWU7XG4gICAgICB0aGlzLm15RGlhZ3JhbS5hZGRNb2RlbENoYW5nZWRMaXN0ZW5lcihmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZS5jaGFuZ2UgPT09IGdvLkNoYW5nZWRFdmVudC5SZW1vdmUgJiZcbiAgICAgICAgICBlLnByb3BlcnR5TmFtZSA9PT0gJ25vZGVEYXRhQXJyYXknXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBlLm9sZFZhbHVlO1xuICAgICAgICAgIHNlbGYub25EZWxldGVOb2RlLmVtaXQoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGUuaXNUcmFuc2FjdGlvbkZpbmlzaGVkKSB7XG4gICAgICAgICAgc2VsZi5jb21taXR0ZWRUcmFuc2FjdGlvblN1YmplY3Q/Lm5leHQoZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5teURpYWdyYW0uY29tbWFuZEhhbmRsZXIudW5kbyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2VsZi5vblVuZG8uZW1pdCgpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGlmICghIXRoaXMuZWRpdG9yKSB7XG4gICAgICB0aGlzLm15RGlhZ3JhbS5tb2RlbCA9IGdvLk1vZGVsLmZyb21Kc29uKHRoaXMuZWRpdG9yLmRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRHcm91cFRlbXBsYXRlRW5lcmd5KCkge1xuICAgIC8vIGZvciB3YXRlclxuICAgIGNvbnN0IHtcbiAgICAgIFNUT1JBR0UsXG4gICAgICBXQVRFUl9UUkVBVE1FTlQsXG4gICAgICBERU1JTl9XQVRFUl9UUkVBVE1FTlQsXG4gICAgICAvLyBST19XQVRFUl9UUkVBVE1FTlQsXG4gICAgICBQUk9DRVNTLFxuICAgICAgV0FTVEVXQVRFUl9UUkVBVE1FTlQsXG4gICAgICBEQUZfV0FTVEVXQVRFUl9UUkVBVE1FTlQsXG4gICAgICBFVFBfV0FTVEVXQVRFUl9UUkVBVE1FTlQsXG4gICAgICBNQlJfV0FTVEVXQVRFUl9UUkVBVE1FTlQsXG4gICAgICBaTERfV0FTVEVXQVRFUl9UUkVBVE1FTlQsXG4gICAgICBDT09MSU5HX1RPV0VSLFxuICAgICAgQk9JTEVSLFxuICAgICAgT1RIRVIsXG4gICAgICBMQU5EU0NBUElOR19JUlJJR0FUSU9OLFxuICAgICAgUFJFU1NVUklaRURfVUZfV0FURVJfVFJFQVRNRU5UUyxcbiAgICAgIElNTUVSU0VEX1VGX1dBVEVSX1RSRUFUTUVOVFMsXG4gICAgfSA9IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUztcbiAgICBjb25zdCB3YXRlckdyb3VwcyA9IFtcbiAgICAgIFNUT1JBR0UsXG4gICAgICBXQVRFUl9UUkVBVE1FTlQsXG4gICAgICBERU1JTl9XQVRFUl9UUkVBVE1FTlQsXG4gICAgICAvLyBST19XQVRFUl9UUkVBVE1FTlQsXG4gICAgICBQUk9DRVNTLFxuICAgICAgV0FTVEVXQVRFUl9UUkVBVE1FTlQsXG4gICAgICBEQUZfV0FTVEVXQVRFUl9UUkVBVE1FTlQsXG4gICAgICBFVFBfV0FTVEVXQVRFUl9UUkVBVE1FTlQsXG4gICAgICBNQlJfV0FTVEVXQVRFUl9UUkVBVE1FTlQsXG4gICAgICBaTERfV0FTVEVXQVRFUl9UUkVBVE1FTlQsXG4gICAgICBDT09MSU5HX1RPV0VSLFxuICAgICAgQk9JTEVSLFxuICAgICAgT1RIRVIsXG4gICAgICBMQU5EU0NBUElOR19JUlJJR0FUSU9OLFxuICAgICAgUFJFU1NVUklaRURfVUZfV0FURVJfVFJFQVRNRU5UUyxcbiAgICAgIElNTUVSU0VEX1VGX1dBVEVSX1RSRUFUTUVOVFMsXG4gICAgXTtcbiAgICB3YXRlckdyb3Vwcy5tYXAoKGUpID0+IHtcbiAgICAgIGlmICghIUF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tlXSkge1xuICAgICAgICB0aGlzLm1ha2VHcm91cFRlbXBsYXRlKFxuICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tlXS5pY29uLFxuICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tlXS5uYW1lXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBlbGVjdHJpY2FsXG4gICAgdGhpcy5pbml0RWxlY3RyaWNHcm91cFRlbXBsYXRlKCk7XG5cbiAgICAvLyBGdWVsXG4gICAgdGhpcy5pbml0RnVlbEdyb3VwVGVtcGxhdGUoKTtcblxuICAgIC8vIEdhc1xuICAgIHRoaXMuaW5pdEdhc0dyb3VwVGVtcGxhdGUoKTtcbiAgfVxuXG4gIGluaXRFbGVjdHJpY0RpYWdyYW0oKSB7XG4gICAgY29uc3Qge1xuICAgICAgR1JJRCxcbiAgICAgIERJRVNFTF9HRU5FUkFUT1JTLFxuICAgICAgQkFUVEVSWV9FTkVSR1lfU1RPUkFHRSxcbiAgICAgIExJR0hUSU5HX1NZU1RFTVMsXG4gICAgICBMSUdIVElOR1MsXG4gICAgICBFTEVDVFJJQ19NRVRFUlMsXG4gICAgICBUUkFOU0ZPUk1FUlMsXG4gICAgICBFTEVDVFJJQ19GTFlXSEVFTF9FTkVSR1lfU1RPUkFHRSxcbiAgICAgIFBVTVBFRF9IWURST19TVE9SQUdFLFxuICAgICAgVEhFUk1BTF9FTkVSR1lfU1RPUkFHRSxcbiAgICAgIFNVUEVSX0NBUEFDSVRPUl9FTkVSR1lfU1RPUkFHRSxcbiAgICAgIFNXSVRDSF9HRUFSUyxcbiAgICAgIFBST0NFU1NfQ09OVFJPTF9BVVRPTUFUSU9OX1NZU1RFTVMsXG4gICAgICBQUk9DRVNTX0VRVUlQTUVOVF9NQUNISU5FUyxcbiAgICAgIE9GRklDRV9FUVVJUE1FTlQsXG4gICAgICBQT1dFUl9ESVNUUklCVVRJT05fQ09OVFJPTF9TWVNURU1TLFxuICAgICAgUE9XRVJfRElTVFJJQlVUSU9OX1NZU1RFTVMsXG4gICAgICBOQVRVUkFMX0dBU19HRU5FUkFUT1JTLFxuICAgICAgTU9UT1JfQ09OVFJPTFMsXG4gICAgICBWQVJJQUJMRV9GUkVRVUVOQ1lfRFJJVkVSUyxcbiAgICAgIEVMRUNUUklDX0hWQUMsXG4gICAgICBDT01QUkVTU0VEX0FJUl9TWVNURU1TLFxuICAgICAgUkVGUklHRVJBVElPTl9DT09MSU5HX1NZU1RFTVMsXG4gICAgICBNQVRFUklBTF9IQU5ETElOR19FUVVJUE1FTlQsXG4gICAgICBXSU5EX1BPV0VSLFxuICAgICAgRUxFQ1RSSUNfSU5EVVNUUklBTF9NT1RPUlMsXG4gICAgICBHUk9VTkRJTkcsXG4gICAgfSA9IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUztcbiAgICBjb25zdCBMaXN0SXRlbXNDcmVhdGVFbnRpdHlUZW1wbGF0ZSA9IFtcbiAgICAgIEdSSUQsXG4gICAgICBESUVTRUxfR0VORVJBVE9SUyxcbiAgICAgIEJBVFRFUllfRU5FUkdZX1NUT1JBR0UsXG4gICAgICBMSUdIVElOR19TWVNURU1TLFxuICAgICAgTElHSFRJTkdTLFxuICAgICAgRUxFQ1RSSUNfTUVURVJTLFxuICAgICAgVFJBTlNGT1JNRVJTLFxuICAgICAgRUxFQ1RSSUNfRkxZV0hFRUxfRU5FUkdZX1NUT1JBR0UsXG4gICAgICBQVU1QRURfSFlEUk9fU1RPUkFHRSxcbiAgICAgIFRIRVJNQUxfRU5FUkdZX1NUT1JBR0UsXG4gICAgICBTVVBFUl9DQVBBQ0lUT1JfRU5FUkdZX1NUT1JBR0UsXG4gICAgICBTV0lUQ0hfR0VBUlMsXG4gICAgICBQUk9DRVNTX0NPTlRST0xfQVVUT01BVElPTl9TWVNURU1TLFxuICAgICAgUFJPQ0VTU19FUVVJUE1FTlRfTUFDSElORVMsXG4gICAgICBPRkZJQ0VfRVFVSVBNRU5ULFxuICAgICAgUE9XRVJfRElTVFJJQlVUSU9OX0NPTlRST0xfU1lTVEVNUyxcbiAgICAgIFBPV0VSX0RJU1RSSUJVVElPTl9TWVNURU1TLFxuICAgICAgTkFUVVJBTF9HQVNfR0VORVJBVE9SUyxcbiAgICAgIE1PVE9SX0NPTlRST0xTLFxuICAgICAgVkFSSUFCTEVfRlJFUVVFTkNZX0RSSVZFUlMsXG4gICAgICBFTEVDVFJJQ19IVkFDLFxuICAgICAgQ09NUFJFU1NFRF9BSVJfU1lTVEVNUyxcbiAgICAgIFJFRlJJR0VSQVRJT05fQ09PTElOR19TWVNURU1TLFxuICAgICAgTUFURVJJQUxfSEFORExJTkdfRVFVSVBNRU5ULFxuICAgICAgV0lORF9QT1dFUixcbiAgICAgIEVMRUNUUklDX0lORFVTVFJJQUxfTU9UT1JTLFxuICAgICAgR1JPVU5ESU5HLFxuICAgIF07XG4gICAgTGlzdEl0ZW1zQ3JlYXRlRW50aXR5VGVtcGxhdGUubWFwKChlKSA9PiB7XG4gICAgICBpZiAoISFBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbZV0pIHtcbiAgICAgICAgdGhpcy5tYWtlRW50aXR5VGVtcGxhdGVFbmVyZ3koXG4gICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW2VdLmljb24sXG4gICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW2VdLm5hbWVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGluaXRFbGVjdHJpY0dyb3VwVGVtcGxhdGUoKSB7XG4gICAgY29uc3QgbGlzdEl0ZW1zID0gW1xuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuQkFUVEVSWV9FTkVSR1lfU1RPUkFHRVxuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlRSQU5TRk9STUVSU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkVMRUNUUklDX01FVEVSU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkxJR0hUSU5HU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlBPV0VSX0RJU1RSSUJVVElPTl9TWVNURU1TXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuU1dJVENIX0dFQVJTXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRUxFQ1RSSUNfSU5EVVNUUklBTF9NT1RPUlNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5HUk9VTkRJTkdcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5NT1RPUl9DT05UUk9MU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkxJR0hUSU5HX1NZU1RFTVNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5FTEVDVFJJQ19IVkFDXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuUkVGUklHRVJBVElPTl9DT09MSU5HX1NZU1RFTVNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5QUk9DRVNTX0NPTlRST0xfQVVUT01BVElPTl9TWVNURU1TXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuT0ZGSUNFX0VRVUlQTUVOVFxuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkNPTVBSRVNTRURfQUlSX1NZU1RFTVNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5QUk9DRVNTX0VRVUlQTUVOVF9NQUNISU5FU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLk1BVEVSSUFMX0hBTkRMSU5HX0VRVUlQTUVOVFxuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlBPV0VSX0RJU1RSSUJVVElPTl9DT05UUk9MX1NZU1RFTVNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5CQVRURVJJRVNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5WQVJJQUJMRV9GUkVRVUVOQ1lfRFJJVkVSU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkVMRUNUUklDX0ZMWVdIRUVMX0VORVJHWV9TVE9SQUdFXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuUFVNUEVEX0hZRFJPX1NUT1JBR0VcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5USEVSTUFMX0VORVJHWV9TVE9SQUdFXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuU1VQRVJfQ0FQQUNJVE9SX0VORVJHWV9TVE9SQUdFXG4gICAgICBdLFxuICAgIF07XG4gICAgbGlzdEl0ZW1zLmZvckVhY2goKGUpID0+IHtcbiAgICAgIHRoaXMubWFrZUdyb3VwVGVtcGxhdGUoZT8uaWNvbiwgZS5uYW1lKTtcbiAgICB9KTtcbiAgfVxuXG4gIGluaXRGdWVsR3JvdXBUZW1wbGF0ZSgpIHtcbiAgICBjb25zdCBsaXN0SXRlbXMgPSBbXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5ESUVTRUxfRlVFTFNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5HQVNPTl9MSU5FU1xuICAgICAgXSxcblxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuQklPRElFU0VMU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLktFUk9TRU5TRVxuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlBST1BBTkVTXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuVEFOS0VSX1RSVUNLU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlBJUEVMSU5FXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuSU5EVVNUUklBTF9CT0lMRVJTXG4gICAgICBdLFxuXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5HRU5FUkFUT1JTXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuSU5EVVNUUklBTF9GVVJOQUNFU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLklORFVTVFJJQUxfT1ZFTlNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5JTkRVU1RSSUFMX1ZFSElDTEVTX0FORF9FUVVJUE1FTlRcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5GVUVMX01FVEVSU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfRElTUEVOU0VSU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfU1RST1JBR0VfVEFOS1NcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5FTEVDVFJJQ19IVkFDXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9GSUxUUkFUSU9OU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfTUFOQUdFTUVOVFNcbiAgICAgIF0sXG4gICAgXTtcblxuICAgIHRoaXMubWFrZUdyb3VwVGVtcGxhdGUoXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5GVUVMX0RJU1BFTlNFUlNcbiAgICAgIF0uaWNvbixcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfRElTUEVOU0VSU1xuICAgICAgXS5uYW1lXG4gICAgKTtcbiAgICB0aGlzLm1ha2VHcm91cFRlbXBsYXRlKFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9TVFJPUkFHRV9UQU5LU1xuICAgICAgXS5pY29uLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9TVFJPUkFHRV9UQU5LU1xuICAgICAgXS5uYW1lXG4gICAgKTtcbiAgICB0aGlzLm1ha2VHcm91cFRlbXBsYXRlKFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9GSUxUUkFUSU9OU1xuICAgICAgXS5pY29uLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9GSUxUUkFUSU9OU1xuICAgICAgXS5uYW1lXG4gICAgKTtcbiAgICB0aGlzLm1ha2VHcm91cFRlbXBsYXRlKFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9NQU5BR0VNRU5UU1xuICAgICAgXS5pY29uLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9NQU5BR0VNRU5UU1xuICAgICAgXS5uYW1lXG4gICAgKTtcbiAgICBsaXN0SXRlbXMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgdGhpcy5tYWtlR3JvdXBUZW1wbGF0ZShlPy5pY29uLCBlLm5hbWUpO1xuICAgIH0pO1xuICB9XG5cbiAgaW5pdEdhc0dyb3VwVGVtcGxhdGUoKSB7XG4gICAgY29uc3QgbGlzdEl0ZW1zID0gW1xuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuQ09NUFJFU1NFRF9OQVRVUkFMX0dBU19QSVBFTElORVxuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkJPSUxFUlNfQU5EX0hFQVRFUlNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5GVVJOQUNFU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlBPV0VSX0dFTkVSQVRJT05cbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5DT0dFTkVSQVRJT05cbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5DT01CSU5FRF9DWUNMRV9QT1dFUl9QTEFOVFNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5GVUVMX0ZPUl9WRUhJQ0xFU19BTkRfRVFVSVBNRU5UXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuR0FTX01FVEVSU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkJVUk5FUlNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5GTFVFX0dBU19BTkFMWVpFUlNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5DT01CVVNUSU9OX0NPTlRST0xfU1lTVEVNU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkdBU19TVE9SQUdFX1RBTktTXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuR0FTX1BSRVNTVVJFX1JFR1VMQVRPUlNcbiAgICAgIF0sXG4gICAgXTtcblxuICAgIHRoaXMubWFrZUdyb3VwVGVtcGxhdGUoXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5GVUVMX0RJU1BFTlNFUlNcbiAgICAgIF0uaWNvbixcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfRElTUEVOU0VSU1xuICAgICAgXS5uYW1lXG4gICAgKTtcbiAgICB0aGlzLm1ha2VHcm91cFRlbXBsYXRlKFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9TVFJPUkFHRV9UQU5LU1xuICAgICAgXS5pY29uLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9TVFJPUkFHRV9UQU5LU1xuICAgICAgXS5uYW1lXG4gICAgKTtcbiAgICB0aGlzLm1ha2VHcm91cFRlbXBsYXRlKFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9GSUxUUkFUSU9OU1xuICAgICAgXS5pY29uLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9GSUxUUkFUSU9OU1xuICAgICAgXS5uYW1lXG4gICAgKTtcbiAgICB0aGlzLm1ha2VHcm91cFRlbXBsYXRlKFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9NQU5BR0VNRU5UU1xuICAgICAgXS5pY29uLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9NQU5BR0VNRU5UU1xuICAgICAgXS5uYW1lXG4gICAgKTtcbiAgICBsaXN0SXRlbXMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgdGhpcy5tYWtlR3JvdXBUZW1wbGF0ZShlPy5pY29uLCBlLm5hbWUpO1xuICAgIH0pO1xuICB9XG5cbiAgaW5pdEdhc0RpYWdyYW0oKSB7XG4gICAgY29uc3Qge1xuICAgICAgTkFUVVJBTF9HQVNfUElQRUxJTkVTLFxuICAgICAgTElRVUVGSUVEX05BVFVSQUxfR0FTLFxuICAgICAgQ09NUFJFU1NFRF9OQVRVUkFMX0dBU19QSVBFTElORSxcbiAgICAgIENPTVBSRVNTRURfTkFUVVJBTF9HQVNfUFJPRFVDVElPTixcbiAgICAgIEJPSUxFUlNfQU5EX0hFQVRFUlMsXG4gICAgICBGVVJOQUNFUyxcbiAgICAgIFBPV0VSX0dFTkVSQVRJT04sXG4gICAgICBDT0dFTkVSQVRJT04sXG4gICAgICBDT01CSU5FRF9DWUNMRV9QT1dFUl9QTEFOVFMsXG4gICAgICBGVUVMX0ZPUl9WRUhJQ0xFU19BTkRfRVFVSVBNRU5ULFxuICAgICAgR0FTX01FVEVSUyxcbiAgICAgIEJVUk5FUlMsXG4gICAgICBGTFVFX0dBU19BTkFMWVpFUlMsXG4gICAgICBDT01CVVNUSU9OX0NPTlRST0xfU1lTVEVNUyxcbiAgICAgIEdBU19TVE9SQUdFX1RBTktTLFxuICAgICAgR0FTX1BSRVNTVVJFX1JFR1VMQVRPUlMsXG4gICAgICBOQVRVUkFMX0dBUyxcbiAgICB9ID0gQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTO1xuICAgIGNvbnN0IExpc3RJdGVtc0NyZWF0ZUVudGl0eVRlbXBsYXRlID0gW1xuICAgICAgTkFUVVJBTF9HQVNfUElQRUxJTkVTLFxuICAgICAgTElRVUVGSUVEX05BVFVSQUxfR0FTLFxuICAgICAgQ09NUFJFU1NFRF9OQVRVUkFMX0dBU19QSVBFTElORSxcbiAgICAgIENPTVBSRVNTRURfTkFUVVJBTF9HQVNfUFJPRFVDVElPTixcbiAgICAgIEJPSUxFUlNfQU5EX0hFQVRFUlMsXG4gICAgICBGVVJOQUNFUyxcbiAgICAgIFBPV0VSX0dFTkVSQVRJT04sXG4gICAgICBDT0dFTkVSQVRJT04sXG4gICAgICBDT01CSU5FRF9DWUNMRV9QT1dFUl9QTEFOVFMsXG4gICAgICBGVUVMX0ZPUl9WRUhJQ0xFU19BTkRfRVFVSVBNRU5ULFxuICAgICAgR0FTX01FVEVSUyxcbiAgICAgIEJVUk5FUlMsXG4gICAgICBGTFVFX0dBU19BTkFMWVpFUlMsXG4gICAgICBDT01CVVNUSU9OX0NPTlRST0xfU1lTVEVNUyxcbiAgICAgIEdBU19TVE9SQUdFX1RBTktTLFxuICAgICAgR0FTX1BSRVNTVVJFX1JFR1VMQVRPUlMsXG4gICAgICBOQVRVUkFMX0dBUyxcbiAgICBdO1xuICAgIExpc3RJdGVtc0NyZWF0ZUVudGl0eVRlbXBsYXRlLm1hcCgoZSkgPT4ge1xuICAgICAgaWYgKCEhQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW2VdKSB7XG4gICAgICAgIHRoaXMubWFrZUVudGl0eVRlbXBsYXRlRW5lcmd5KFxuICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tlXS5pY29uLFxuICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tlXS5uYW1lXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpbml0RnVlbERpYWdyYW0oKSB7XG4gICAgY29uc3Qge1xuICAgICAgRElFU0VMX0ZVRUxTLFxuICAgICAgR0FTT05fTElORVMsXG4gICAgICBCSU9ESUVTRUxTLFxuICAgICAgS0VST1NFTlNFLFxuICAgICAgUFJPUEFORVMsXG4gICAgICBUQU5LRVJfVFJVQ0tTLFxuICAgICAgUElQRUxJTkUsXG4gICAgICBJTkRVU1RSSUFMX0JPSUxFUlMsXG4gICAgICBHRU5FUkFUT1JTLFxuICAgICAgSU5EVVNUUklBTF9GVVJOQUNFUyxcbiAgICAgIElORFVTVFJJQUxfT1ZFTlMsXG4gICAgICBJTkRVU1RSSUFMX1ZFSElDTEVTX0FORF9FUVVJUE1FTlQsXG4gICAgICBGVUVMX01FVEVSUyxcbiAgICAgIEZVRUxfRElTUEVOU0VSUyxcbiAgICAgIEZVRUxfU1RST1JBR0VfVEFOS1MsXG4gICAgICBGVUVMX0ZJTFRSQVRJT05TLFxuICAgICAgRlVFTF9NQU5BR0VNRU5UUyxcbiAgICAgIEZVRUxTLFxuICAgIH0gPSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVM7XG4gICAgY29uc3QgTGlzdEl0ZW1zQ3JlYXRlRW50aXR5VGVtcGxhdGUgPSBbXG4gICAgICBESUVTRUxfRlVFTFMsXG4gICAgICBHQVNPTl9MSU5FUyxcbiAgICAgIEJJT0RJRVNFTFMsXG4gICAgICBLRVJPU0VOU0UsXG4gICAgICBQUk9QQU5FUyxcbiAgICAgIFRBTktFUl9UUlVDS1MsXG4gICAgICBQSVBFTElORSxcbiAgICAgIElORFVTVFJJQUxfQk9JTEVSUyxcbiAgICAgIEdFTkVSQVRPUlMsXG4gICAgICBJTkRVU1RSSUFMX0ZVUk5BQ0VTLFxuICAgICAgSU5EVVNUUklBTF9PVkVOUyxcbiAgICAgIElORFVTVFJJQUxfVkVISUNMRVNfQU5EX0VRVUlQTUVOVCxcbiAgICAgIEZVRUxfTUVURVJTLFxuICAgICAgRlVFTF9ESVNQRU5TRVJTLFxuICAgICAgRlVFTF9TVFJPUkFHRV9UQU5LUyxcbiAgICAgIEZVRUxfRklMVFJBVElPTlMsXG4gICAgICBGVUVMX01BTkFHRU1FTlRTLFxuICAgICAgRlVFTFMsXG4gICAgXTtcbiAgICBMaXN0SXRlbXNDcmVhdGVFbnRpdHlUZW1wbGF0ZS5tYXAoKGUpID0+IHtcbiAgICAgIGlmICghIUF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tlXSkge1xuICAgICAgICB0aGlzLm1ha2VFbnRpdHlUZW1wbGF0ZUVuZXJneShcbiAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbZV0uaWNvbixcbiAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbZV0ubmFtZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaW5pdFNvbGFyRGlhZ3JhbSgpIHtcbiAgICBjb25zdCB7XG4gICAgICBTT0xBUl9QT1dFUixcbiAgICAgIFBPV0VSX0NPTkRJVElPTklOR19VTklULFxuICAgICAgQkFUVEVSSUVTOiBCQVRURVJZLFxuICAgICAgSU5WRVJURVJTOiBJTlZFUlRFUixcbiAgICB9ID0gQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTO1xuICAgIGNvbnN0IExpc3RJdGVtc0NyZWF0ZUVudGl0eVRlbXBsYXRlID0gW1xuICAgICAgU09MQVJfUE9XRVIsXG4gICAgICBQT1dFUl9DT05ESVRJT05JTkdfVU5JVCxcbiAgICAgIEJBVFRFUlksXG4gICAgICBJTlZFUlRFUixcbiAgICBdO1xuICAgIExpc3RJdGVtc0NyZWF0ZUVudGl0eVRlbXBsYXRlLm1hcCgoZSkgPT4ge1xuICAgICAgaWYgKCEhQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW2VdKSB7XG4gICAgICAgIHRoaXMubWFrZUVudGl0eVRlbXBsYXRlRW5lcmd5KFxuICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tlXS5pY29uLFxuICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tlXS5uYW1lXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpbml0U3RlYW1EaWFncmFtKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIFZBTFVFUyxcbiAgICAgIFNURUFNX1RSQVBTLFxuICAgICAgUFJFU1NVUkVfUkVHVUxBVE9SUyxcbiAgICAgIFNBRkVUWV9WQUxVRVNfQU5EX0VRVUlQTUVOVCxcbiAgICAgIENPTkRFTlNBVEVfUkVUVVJOX1NZU1RFTSxcbiAgICAgIERFQUVSQVRPUlMsXG4gICAgICBGRUVEV0FURVJfUFVNUFMsXG4gICAgICBCTE9XRE9XTl9UQU5LUyxcbiAgICAgIEVYUEFOU0lPTl9UQU5LUyxcbiAgICAgIEhFQVRfRVhDSEFOR0VSUyxcbiAgICAgIFRVUkJJTkVTLFxuICAgIH0gPSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVM7XG4gICAgY29uc3QgTGlzdEl0ZW1zQ3JlYXRlRW50aXR5VGVtcGxhdGUgPSBbXG4gICAgICBWQUxVRVMsXG4gICAgICBTVEVBTV9UUkFQUyxcbiAgICAgIFBSRVNTVVJFX1JFR1VMQVRPUlMsXG4gICAgICBTQUZFVFlfVkFMVUVTX0FORF9FUVVJUE1FTlQsXG4gICAgICBDT05ERU5TQVRFX1JFVFVSTl9TWVNURU0sXG4gICAgICBERUFFUkFUT1JTLFxuICAgICAgRkVFRFdBVEVSX1BVTVBTLFxuICAgICAgQkxPV0RPV05fVEFOS1MsXG4gICAgICBFWFBBTlNJT05fVEFOS1MsXG4gICAgICBIRUFUX0VYQ0hBTkdFUlMsXG4gICAgICBUVVJCSU5FUyxcbiAgICBdO1xuICAgIExpc3RJdGVtc0NyZWF0ZUVudGl0eVRlbXBsYXRlLm1hcCgoZSkgPT4ge1xuICAgICAgaWYgKCEhQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW2VdKSB7XG4gICAgICAgIHRoaXMubWFrZUVudGl0eVRlbXBsYXRlRW5lcmd5KFxuICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tlXS5pY29uLFxuICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tlXS5uYW1lXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbk1vZGVsQ2hhbmdlTGlzdGVuZXIoZTogZ28uQ2hhbmdlZEV2ZW50KSB7XG4gICAgLy8gdGhpcy5vbk1vZGVsQ2hhbmdlTGlzdGVuZXJFdmVudC5lbWl0KGUpO1xuICB9XG5cbiAgbWFrZUxpbmtUZW1wbGF0ZSgpIHtcbiAgICBjb25zdCBlbGVtZW50czogYW55W10gPSBbXTtcbiAgICAvLyBsaW5lXG4gICAgZWxlbWVudHMucHVzaChcbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uU2hhcGUsXG4gICAgICAgIHtcbiAgICAgICAgICBpc1BhbmVsTWFpbjogdHJ1ZSxcbiAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5HUkFZLFxuICAgICAgICAgIHN0cm9rZVdpZHRoOlxuICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkxJTktfVEVNUExBVEVTW1xuICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9MSU5LX1RZUEVTLlNJTVBMRVxuICAgICAgICAgICAgXT8uc3Ryb2tlV2lkdGgsXG4gICAgICAgICAgLy8gc3Ryb2tlV2lkdGg6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIG5ldyBnby5CaW5kaW5nKCdzdHJva2UnLCAnY29sb3InKSxcbiAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3NlbGVjdGFibGUnLCAnc2VsZWN0YWJsZScpLFxuICAgICAgICBuZXcgZ28uQmluZGluZyhcbiAgICAgICAgICAnc3Ryb2tlV2lkdGgnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAoeCkgPT4gQXRvR29qc0VkaXRvck1vZGVsLkxJTktfVEVNUExBVEVTW3hdPy5zdHJva2VXaWR0aFxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcblxuICAgIC8vIGFuaW1hdGlvblxuICAgIGVsZW1lbnRzLnB1c2goXG4gICAgICB0aGlzLiQoZ28uU2hhcGUsIHtcbiAgICAgICAgLi4uQXRvR29qc0VkaXRvck1vZGVsLkxJTktfVEVNUExBVEVTW1xuICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0xJTktfVFlQRVMuUElQRV9BTklNQVRJT05cbiAgICAgICAgXT8uYW5pbWF0aW9uLFxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICBmaWxsOiAndHJhbnNwYXJlbnQnLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgZWxlbWVudHMucHVzaChcbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdUb3AnLFxuICAgICAgICB7XG4gICAgICAgICAgaGVpZ2h0OiAzOCxcbiAgICAgICAgICAvLyBtYXhTaXplOiBuZXcgZ28uU2l6ZShOYU4sIDM2KSxcbiAgICAgICAgICAvLyB3aWR0aDogMTAwLFxuICAgICAgICAgIC8vIG1pblNpemU6IG5ldyBnby5TaXplKDEwMCwgNSksIC8vIMSQ4bq3dCBrw61jaCB0aMaw4bubYyB04buRaSB0aGnhu4N1IGzDoCAxMDB4NTBcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgIC8vIGxheWVyTmFtZTogJ0JhY2tncm91bmRMYXllcicsXG4gICAgICAgICAgLy8gYWxpZ25tZW50OiBnby5TcG90LlRvcCxcbiAgICAgICAgICAvLyBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5MZWZ0LFxuICAgICAgICAgIC8vIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCAwLCA1MCwgMCksXG4gICAgICAgICAgLy8gc2VsZWN0YWJsZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJ3RleHRDb21wb25lbnQnLCAoeCkgPT4ge1xuICAgICAgICAgIHJldHVybiB4ID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB9KSxcbiAgICAgICAgLy8gdGhpcy4kKGdvLlNoYXBlLCB7XG4gICAgICAgIC8vICAgICBoZWlnaHQ6IDMwLFxuICAgICAgICAvLyAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgLy8gICAgIGZpbGw6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIC8vICAgICAvLyB2aXNpYmxlOiBmYWxzZSxcbiAgICAgICAgLy8gfSksXG4gICAgICAgIHRoaXMuJChcbiAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDUwLCAwKSxcbiAgICAgICAgICAgIHN0cm9rZTogJyM0NDQ0NDQnLFxuICAgICAgICAgICAgZm9udDogJ25vcm1hbCAxMHB0IEFyaWFsJyxcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgIC8vIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIC8vIGFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIsIC8vIMSQ4bqjbSBi4bqjbyB2xINuIGLhuqNuIG7hurFtIOG7nyB0cnVuZyB0w6JtIGPhu6dhIG7DunRcbiAgICAgICAgICAgIC8vIGFsaWdubWVudEZvY3VzOiBnby5TcG90LkNlbnRlciwgLy8gxJDhuqNtIGLhuqNvIHbEg24gYuG6o24ga2jDtG5nIGLhu4sgZOG7i2NoIGNodXnhu4NuIHJhIGto4buPaSB0cnVuZyB0w6JtXG4gICAgICAgICAgICB3cmFwOiBnby5UZXh0QmxvY2suV3JhcEZpdCwgLy8gQ2h1eeG7g24gZMOybmcgxJHhu4MgdsSDbiBi4bqjbiBraMO0bmcgdsaw4bujdCByYSBuZ2/DoGlcbiAgICAgICAgICAgIC8vIHNlbGVjdGFibGU6IHRydWUsXG4gICAgICAgICAgICBvdmVyZmxvdzogZ28uVGV4dEJsb2NrLk92ZXJmbG93RWxsaXBzaXMsXG4gICAgICAgICAgICB0b29sVGlwOiB0aGlzLiQoXG4gICAgICAgICAgICAgICdUb29sVGlwJyxcbiAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICd0ZXh0Q29tcG9uZW50JylcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJ3RleHRDb21wb25lbnQnKSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygnYmFja2dyb3VuZCcsICd0ZXh0Q29tcG9uZW50JywgKHgpID0+XG4gICAgICAgICAgICB4ID8gJ3doaXRlJyA6ICd0cmFuc3BhcmVudCdcbiAgICAgICAgICApXG4gICAgICAgICAgLy8gICAgIG5ldyBnby5CaW5kaW5nKCdtYXJnaW4nLCAnaXNGb3JtYXQnLCAoeCkgPT5cbiAgICAgICAgICAvLyAgICAgeCA/IG5ldyBnby5NYXJnaW4oNSwgMCwgNSwgNSkgOiBuZXcgZ28uTWFyZ2luKDUsIDUsIDUsIDUpLFxuICAgICAgICAgIC8vICksXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuXG4gICAgLy8gYXJyb3dcbiAgICBlbGVtZW50cy5wdXNoKFxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5TaGFwZSwgLy8gdGhlIFwiZnJvbVwiIGFycm93aGVhZFxuICAgICAgICB7XG4gICAgICAgICAgLi4uQXRvR29qc0VkaXRvck1vZGVsLkxJTktfVEVNUExBVEVTW1xuICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fTElOS19UWVBFUy5TSU1QTEVcbiAgICAgICAgICBdPy5hcnJvdyxcbiAgICAgICAgfSxcbiAgICAgICAgbmV3IGdvLkJpbmRpbmcoXG4gICAgICAgICAgJ3Zpc2libGUnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICFbXG4gICAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0xJTktfVFlQRVMuUElQRV9BTklNQVRJT04sXG4gICAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0xJTktfVFlQRVMuUElQRSxcbiAgICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fTElOS19UWVBFUy5QSVBFX0hJRERFTixcbiAgICAgICAgICAgIF0uaW5jbHVkZXMoeClcbiAgICAgICAgKSxcbiAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2ZpbGwnLCAnY29sb3InKSxcbiAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3N0cm9rZScsICdjb2xvcicpXG4gICAgICApXG4gICAgKTtcblxuICAgIC8vIFRPRE8gZml4IGxpbmsgY2Fubm90IHNlbGVjdGVkIGluc2lkZSBncm91cCB0ZW1wbGF0ZVxuICAgIHRoaXMubXlEaWFncmFtLmxpbmtUZW1wbGF0ZSA9IHRoaXMuJChcbiAgICAgIGdvLkxpbmssXG4gICAgICBnby5MaW5rLk9ydGhvZ29uYWwsXG4gICAgICB7XG4gICAgICAgIC8vIGxheWVyTmFtZTogJ0JhY2tncm91bmQnLCAvLyBsaW5rIGNhbm5vdCBzZWxlY3QgaW5zaWRlIGdyb3VwIHRlbXBsYXRlXG4gICAgICAgIC8vIGN1cnZpbmVzczogMjAsXG4gICAgICAgIC8vIGNvcm5lcjogNSxcbiAgICAgICAgcm91dGluZzogZ28uTGluay5Bdm9pZHNOb2RlcyxcbiAgICAgICAgcmVzaGFwYWJsZTogdHJ1ZSxcbiAgICAgICAgcmVzZWdtZW50YWJsZTogdHJ1ZSxcbiAgICAgICAgcmVsaW5rYWJsZUZyb206IHRydWUsXG4gICAgICAgIHJlbGlua2FibGVUbzogdHJ1ZSxcbiAgICAgICAgc2VsZWN0YWJsZTogdHJ1ZSxcbiAgICAgICAgdG9TaG9ydExlbmd0aDpcbiAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTElOS19URU1QTEFURVNbXG4gICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9MSU5LX1RZUEVTLlNJTVBMRVxuICAgICAgICAgIF0udG9TaG9ydExlbmd0aCwgLy8gYXNzdW1lIGFycm93aGVhZCBhdCBcInRvXCIgZW5kLCBuZWVkIHRvIGF2b2lkIGJhZCBhcHBlYXJhbmNlIHdoZW4gcGF0aCBpcyB0aGlja1xuICAgICAgfSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdsYXllck5hbWUnLCAnJywgKGRhdGEpID0+IHtcbiAgICAgICAgcmV0dXJuIGRhdGE/LnRleHRDb21wb25lbnQgPyAnQmFja2dyb3VuZCcgOiAnJztcbiAgICAgIH0pLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ3pPcmRlcicsICd0eXBlJywgKHgpID0+XG4gICAgICAgIHggPT09IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0xJTktfVFlQRVMuUElQRV9BTklNQVRJT04gPyAxMSA6IDEwXG4gICAgICApLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoXG4gICAgICAgICd0b1Nob3J0TGVuZ3RoJyxcbiAgICAgICAgJ3R5cGUnLFxuICAgICAgICAoeCkgPT4gQXRvR29qc0VkaXRvck1vZGVsLkxJTktfVEVNUExBVEVTW3hdLnRvU2hvcnRMZW5ndGggfHwgMFxuICAgICAgKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdzZWxlY3RhYmxlJywgJ3NlbGVjdGFibGUnKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJ3Zpc2libGUnKSxcblxuICAgICAgLy8gbWFrZSBzdXJlIGxpbmtzIGNvbWUgaW4gZnJvbSB0aGUgcHJvcGVyIGRpcmVjdGlvbiBhbmQgZ28gb3V0IGFwcHJvcHJpYXRlbHlcbiAgICAgIC4uLmVsZW1lbnRzXG4gICAgKTtcbiAgfVxuXG4gIG1ha2VWYWx1ZU5vZGVUZW1wbGF0ZShzaXplOiB7IHc6IG51bWJlcjsgaDogbnVtYmVyIH0gPSB7IHc6IDgyLCBoOiAzNiB9KSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuJChcbiAgICAgIGdvLk5vZGUsXG4gICAgICAnU3BvdCcsXG4gICAgICB7fSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdsb2NhdGlvbicsICdsb2MnLCBnby5Qb2ludC5wYXJzZSkubWFrZVR3b1dheShcbiAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICApLFxuXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnQXV0bycsXG4gICAgICAgIHsgbWluU2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53LCBzaXplLmgpIH0sXG4gICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ1JlY3RhbmdsZScsIHtcbiAgICAgICAgICBmaWxsOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuTElHSFRfQkxVRSxcbiAgICAgICAgICBzdHJva2U6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIH0pLFxuICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgJ0hvcml6b250YWwnLFxuICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcm93OiAyLFxuICAgICAgICAgICAgICBmb250OiAnYm9sZCAxNHB4IEFyaWFsJyxcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuQ0VSVUxFQU4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2VkaXRhYmxlJywgJ2lzRWRpdGFibGUnKSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJ3Nob3J0ZW5lZE51bWJlcicpLm1ha2VUd29XYXkoKSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdzdHJva2UnLCAnY29sb3InKSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdtYXJnaW4nLCAnaXNGb3JtYXQnLCAoeCkgPT5cbiAgICAgICAgICAgICAgeCA/IG5ldyBnby5NYXJnaW4oNSwgMCwgNSwgNSkgOiBuZXcgZ28uTWFyZ2luKDUsIDUsIDUsIDUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnJywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRhdGEudmFsdWUgIT09IFZBTFVFX05BO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIC8vIEljb24gRXJyIHdoZW4gbGFjayBvZiB2YWx1ZVxuICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDEwLCAxMCwgMTAsIDEwKSxcbiAgICAgICAgICAgICAgdGV4dDogVkFMVUVfTkEsIC8vIE9sZCB2ZXJzaW9uOiBURVhUX0VSUk9SXG4gICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGZvbnQ6ICdib2xkIDEwcHQgc2Fucy1zZXJpZicsXG4gICAgICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLlNBTE1PTixcbiAgICAgICAgICAgICAgd3JhcDogZ28uVGV4dEJsb2NrLldyYXBGaXQsXG4gICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgaXNNdWx0aWxpbmU6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJycsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICAgIHJldHVybiBkYXRhLnZhbHVlID09PSBWQUxVRV9OQTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLm15RGlhZ3JhbS5ub2RlVGVtcGxhdGVNYXAuc2V0KFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlZBTFVFX05PREUsXG4gICAgICBub2RlXG4gICAgKTtcbiAgfVxuXG4gIG1ha2VFbXB0eU5vZGVUZW1wbGF0ZShzaXplOiB7IHc6IG51bWJlcjsgaDogbnVtYmVyIH0gPSB7IHc6IDAsIGg6IDAgfSkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Ob2RlLFxuICAgICAgJ1Nwb3QnLFxuICAgICAge30sXG4gICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgIGdvLlBvaW50LnN0cmluZ2lmeVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5teURpYWdyYW0ubm9kZVRlbXBsYXRlTWFwLnNldChcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5FTVBUWSxcbiAgICAgIG5vZGVcbiAgICApO1xuICB9XG5cbiAgbWFrZVZhbHVlTGFiZWxUZW1wbGF0ZShzaXplOiB7IHc6IG51bWJlcjsgaDogbnVtYmVyIH0gPSB7IHc6IDgyLCBoOiAzNiB9KSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuJChcbiAgICAgIGdvLk5vZGUsXG4gICAgICAnQXV0bycsXG4gICAgICB7XG4gICAgICAgIG1vdmFibGU6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdsb2NhdGlvbicsICdsb2MnLCBnby5Qb2ludC5wYXJzZSkubWFrZVR3b1dheShcbiAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICApLFxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgJ0F1dG8nLFxuICAgICAgICB7IG1pblNpemU6IG5ldyBnby5TaXplKHNpemUudywgc2l6ZS5oKSB9LFxuICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgJ0hvcml6b250YWwnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCAxMCwgMCwgMTApLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgNSwgMTAsIDApLFxuICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICAgICAgICBmb250OiAnYm9sZCAxNXB4IHNhbnMtc2VyaWYnLFxuICAgICAgICAgICAgICB3cmFwOiBnby5UZXh0QmxvY2suV3JhcEZpdCxcbiAgICAgICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuQ0VSVUxFQU4sXG4gICAgICAgICAgICAgIG1pblNpemU6IG5ldyBnby5TaXplKDE1MCwgMzApLCAvLyBTZXQgdGhlIHdpZHRoIG9mIHRoZSB0ZXh0IGJsb2NrXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3N0cm9rZScsICdjb2xvcicpLFxuICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnZGF0YScsICh4KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgeD8ucXVhbnRpdHkgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZDogYW55ID0gVXRpbHNTZXJ2aWNlLmNvbnZlcnRQcmVmaXhlc0RhdGEoe1xuICAgICAgICAgICAgICAgIHZhbHVlOiB4Py5xdWFudGl0eSxcbiAgICAgICAgICAgICAgICB1bml0OiBVdGlsc1NlcnZpY2UuY29udmVydFNwZWNpYWxVbml0KHg/LnVuaXQpLFxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBsZXQgcmV0VmFsdWUgPVxuICAgICAgICAgICAgICAgIGZvcm1hdHRlZC5zaG9ydGVuZWROdW1iZXIgK1xuICAgICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZC51bml0UHJlZml4ZXMgK1xuICAgICAgICAgICAgICAgICAgVXRpbHNTZXJ2aWNlLmNvbnZlcnRTcGVjaWFsVW5pdCh4Py51bml0KSA/PyAnJztcbiAgICAgICAgICAgICAgaWYgKHg/LnBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICByZXRWYWx1ZSArPSBgICgke3g/LnBlcmNlbnR9JSlgO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiByZXRWYWx1ZTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoXG4gICAgICAgICAgICAgICd2aXNpYmxlJyxcbiAgICAgICAgICAgICAgJ2RhdGEnLFxuICAgICAgICAgICAgICAoeCkgPT4gdHlwZW9mIHg/LnF1YW50aXR5ID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5teURpYWdyYW0ubm9kZVRlbXBsYXRlTWFwLnNldChcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5WQUxVRV9MQUJFTCxcbiAgICAgIG5vZGVcbiAgICApO1xuICB9XG5cbiAgbWFrZVRleHRMYWJlbFRlbXBsYXRlKHNpemU6IHsgdzogbnVtYmVyOyBoOiBudW1iZXIgfSA9IHsgdzogTmFOLCBoOiAyMCB9KSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuJChcbiAgICAgIGdvLk5vZGUsXG4gICAgICAnQXV0bycsXG4gICAgICB7XG4gICAgICAgIG1vdmFibGU6IGZhbHNlLFxuICAgICAgICBpc1NlbGVjdGVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgIGdvLlBvaW50LnN0cmluZ2lmeVxuICAgICAgKSxcbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICdIb3Jpem9udGFsJyxcblxuICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDAsIDUsIDEwLCAwKSxcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZm9udDogJ2JvbGQgMTZweCBBcmlhbCcsXG4gICAgICAgICAgICAgIHdyYXA6IGdvLlRleHRCbG9jay5XcmFwRml0LFxuICAgICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5DRVJVTEVBTixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygnc3Ryb2tlJywgJ2NvbG9yJyksXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJyksXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICd2aXNpYmxlJylcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMubXlEaWFncmFtLm5vZGVUZW1wbGF0ZU1hcC5zZXQoXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuVEVYVF9MQUJFTCxcbiAgICAgIG5vZGVcbiAgICApO1xuICB9XG5cbiAgbWFrZVRleHRUZW1wbGF0ZShcbiAgICBzaXplOiB7IHc6IG51bWJlcjsgaDogbnVtYmVyIH0gPSB7XG4gICAgICB3OiBBdG9Hb2pzRWRpdG9yTW9kZWwuR1JJRF9TSVpFICogNSxcbiAgICAgIGg6IEF0b0dvanNFZGl0b3JNb2RlbC5HUklEX1NJWkUgKiAyLFxuICAgIH1cbiAgKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgY29udGV4dE1lbnUgPSB0aGlzLiQoXG4gICAgICBnby5BZG9ybm1lbnQsXG4gICAgICAnVmVydGljYWwnLFxuICAgICAgdGhpcy4kKCdDb250ZXh0TWVudUJ1dHRvbicsIHRoaXMuJChnby5UZXh0QmxvY2ssICdPcHRpb24gMScpLCB7XG4gICAgICAgIGNsaWNrOiBmdW5jdGlvbiAoZSwgb2JqKSB7XG4gICAgICAgICAgYWxlcnQoJ09wdGlvbiAxIGNsaWNrZWQhJyk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIHRoaXMuJCgnQ29udGV4dE1lbnVCdXR0b24nLCB0aGlzLiQoZ28uVGV4dEJsb2NrLCAnT3B0aW9uIDInKSwge1xuICAgICAgICBjbGljazogZnVuY3Rpb24gKGUsIG9iaikge1xuICAgICAgICAgIGFsZXJ0KCdPcHRpb24gMiBjbGlja2VkIScpO1xuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC8vIC4uLiBhZGQgbW9yZSBvcHRpb25zIGFzIG5lZWRlZCAuLi5cbiAgICApO1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Ob2RlLFxuICAgICAgJ1Nwb3QnLFxuICAgICAge1xuICAgICAgICAvLyBmcm9tU3BvdDogZ28uU3BvdC5SaWdodFNpZGUsXG4gICAgICAgIC8vIHRvU3BvdDogZ28uU3BvdC5MZWZ0U2lkZSxcbiAgICAgICAgbG9jYXRpb25TcG90OiBnby5TcG90LkNlbnRlcixcbiAgICAgICAgLy8gc2VsZWN0aW9uQ2hhbmdlZDogKGUpID0+IHtcbiAgICAgICAgLy8gICAgIGlmIChlPy5kYXRhLm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgLy8gICAgICAgICBlPy5kYXRhLm9uU2VsZWN0ZWQoZT8uZGF0YSk7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH0sXG4gICAgICAgIC8vIG1vdXNlSG92ZXI6IChlLCBvYmopID0+IHtcbiAgICAgICAgLy8gICAgIGNvbnN0IG5vZGUgPSBvYmoucGFydDtcbiAgICAgICAgLy8gICAgIGlmICgob2JqIGFzIGFueSkucGFydD8ub2I/LnZhbHVlID09PSBWQUxVRV9OQSkge1xuICAgICAgICAvLyAgICAgICAgIHNlbGYub25Ib3ZlckluZm9CdXR0b24uZW1pdCh7XG4gICAgICAgIC8vICAgICAgICAgICAgIGxlZnQ6IGU/LlsnV3InXT8ueCArIDgsXG4gICAgICAgIC8vICAgICAgICAgICAgIHRvcDogZT8uWydXciddPy55LFxuICAgICAgICAvLyAgICAgICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAvLyAgICAgICAgIH0pO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9LFxuICAgICAgICAvLyBtb3VzZUxlYXZlOiAoZSwgb2JqKSA9PiB7XG4gICAgICAgIC8vICAgICBpZiAoKG9iaiBhcyBhbnkpLnBhcnQ/Lm9iPy52YWx1ZSA9PT0gVkFMVUVfTkEpIHtcbiAgICAgICAgLy8gICAgICAgICBzZWxmLm9uSG92ZXJJbmZvQnV0dG9uLmVtaXQobnVsbCk7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH0sXG4gICAgICAgIGNsaWNrOiAoZSwgb2JqOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBub2RlID0gb2JqLnBhcnQ7XG4gICAgICAgICAgaWYgKG5vZGU/Lm9iPy5pc1R5cGVJbmZsb3dPZlBsYW50Q2VsbCkge1xuICAgICAgICAgICAgLy8gb2JqPy5kYXRhPy5vblNlbGVjdGVkKG5vZGU/Lm9iPy5ub2RlUGxhbnRDZWxsUGFyZW50KTtcbiAgICAgICAgICAgIC8vIHNlbGYub25DbGlja0NvbXBvZW50LmVtaXQoe1xuICAgICAgICAgICAgLy8gICAgIGxlZnQ6IGU/LlsnV3InXT8ueCxcbiAgICAgICAgICAgIC8vICAgICB0b3A6IGU/LlsnV3InXT8ueSxcbiAgICAgICAgICAgIC8vICAgICBub2RlOiB7XG4gICAgICAgICAgICAvLyAgICAgICAgIG9iOiBub2RlPy5vYj8ubm9kZVBsYW50Q2VsbFBhcmVudCxcbiAgICAgICAgICAgIC8vICAgICB9LFxuICAgICAgICAgICAgLy8gICAgIGNvbXBvbmVudDogbm9kZT8ub2I/Lm5vZGVQbGFudENlbGxQYXJlbnQsXG4gICAgICAgICAgICAvLyB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMuX2luaXRpYWxPcHRpb25zPy5pc1JlYWRPbmx5KSB7XG4gICAgICAgICAgICB0aGlzLmlzU2hvd05vZGVJbmZvXG4gICAgICAgICAgICAgID8gc2VsZi5vbkNsaWNrSW5mb0J1dHRvbi5lbWl0KHtcbiAgICAgICAgICAgICAgICAgIGxlZnQ6IGU/LlsnV3InXT8ueCxcbiAgICAgICAgICAgICAgICAgIHRvcDogZT8uWydXciddPy55LFxuICAgICAgICAgICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkb3VibGVDbGljazogKGUsIG9iajogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3Qgbm9kZSA9IG9iai5wYXJ0O1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG5vZGU/Lm9iPy5pc1R5cGVJbmZsb3dPZlBsYW50Q2VsbCAmJlxuICAgICAgICAgICAgIXRoaXMuX2luaXRpYWxPcHRpb25zPy5pc1JlYWRPbmx5XG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQobm9kZT8ub2I/Lm5vZGVQbGFudENlbGxQYXJlbnQpO1xuICAgICAgICAgICAgLy8gdGhpcy5pc1Nob3dOb2RlSW5mb1xuICAgICAgICAgICAgLy8gICAgID8gc2VsZi5vbkRvdWJsZUNsaWNrTm9kZS5lbWl0KHtcbiAgICAgICAgICAgIC8vICAgICAgICAgICBsZWZ0OiBlPy5bJ1dyJ10/LngsXG4gICAgICAgICAgICAvLyAgICAgICAgICAgdG9wOiBlPy5bJ1dyJ10/LnksXG4gICAgICAgICAgICAvLyAgICAgICAgICAgbm9kZToge1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICBvYjogbm9kZT8ub2I/Lm5vZGVQbGFudENlbGxQYXJlbnQsXG4gICAgICAgICAgICAvLyAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vICAgICAgIH0pXG4gICAgICAgICAgICAvLyAgICAgOiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXRoaXMuX2luaXRpYWxPcHRpb25zPy5pc1JlYWRPbmx5KSB7XG4gICAgICAgICAgICB0aGlzLmlzU2hvd05vZGVJbmZvXG4gICAgICAgICAgICAgID8gc2VsZi5vbkNsaWNrSW5mb0J1dHRvbi5lbWl0KHtcbiAgICAgICAgICAgICAgICAgIGxlZnQ6IGU/LlsnV3InXT8ueCxcbiAgICAgICAgICAgICAgICAgIHRvcDogZT8uWydXciddPy55LFxuICAgICAgICAgICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzZWxlY3Rpb25BZG9ybm1lbnRUZW1wbGF0ZTogdGhpcy4kKFxuICAgICAgICAgIGdvLkFkb3JubWVudCxcbiAgICAgICAgICAnU3BvdCcsXG4gICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAnQXV0bycsXG4gICAgICAgICAgICAvLyB7IGhlaWdodDogNjIgfSxcbiAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwge1xuICAgICAgICAgICAgICBmaWxsOiBudWxsLFxuICAgICAgICAgICAgICBzdHJva2U6ICdkb2RnZXJibHVlJyxcbiAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgZ28uUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgIC8vIHsgcGFkZGluZzogbmV3IGdvLk1hcmdpbig4LCAzLCAwLCAzKSB9LFxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygncGFkZGluZycsICcnLCAoeCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB4Py5pc1R5cGVJbmZsb3dPZlBsYW50Q2VsbFxuICAgICAgICAgICAgICAgICAgPyB4Py5mbG93T2ZQbGFudENlbGwgPT09IEFUT19FTlVNX0ZMT1dfRElSRUNUSU9OLklORkxPV1xuICAgICAgICAgICAgICAgICAgICA/IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMjApXG4gICAgICAgICAgICAgICAgICAgIDogbmV3IGdvLk1hcmdpbigwLCAyMCwgMCwgMClcbiAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAvLyB0aGlzLiQoZ28uUGxhY2Vob2xkZXIsIHsgcGFkZGluZzogMyB9KSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdoZWlnaHQnLCAnJywgKHgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHg/LmlzVHlwZUluZmxvd09mUGxhbnRDZWxsID8geD8uaGVpZ2h0ICsgMTAgOiBudWxsO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygnd2lkdGgnLCAnJywgKHgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHg/LmlzVHlwZUluZmxvd09mUGxhbnRDZWxsID8geD8ud2lkdGggKyAxMiA6IG51bGw7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICksXG4gICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAnSG9yaXpvbnRhbCcsXG4gICAgICAgICAgICB7IGFsaWdubWVudDogZ28uU3BvdC5Ub3BSaWdodCwgYWxpZ25tZW50Rm9jdXM6IGdvLlNwb3QuQm90dG9tIH0sXG4gICAgICAgICAgICAvLyBtb3JlXG4gICAgICAgICAgICAhdGhpcy5faW5pdGlhbE9wdGlvbnMuaXNSZWFkT25seVxuICAgICAgICAgICAgICA/IHRoaXMuZ2VuZXJhdGVBY3Rpb25Hcm91cChbXG4gICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuUkVOQU1FLFxuICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLklOU0lHSFQsXG4gICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuT1VURkxPVyxcbiAgICAgICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5ERUxFVEUsXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgOiB7fVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICd2aXNpYmxlJyksXG4gICAgICBuZXcgZ28uQmluZGluZygnZnJvbVNwb3QnLCAnZnJvbVNwb3QnKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCd0b1Nwb3QnLCAndG9TcG90JyksXG4gICAgICBuZXcgZ28uQmluZGluZygnbW92YWJsZScsICdtb3ZhYmxlJyksXG4gICAgICBuZXcgZ28uQmluZGluZygnc2VsZWN0YWJsZScsICdzZWxlY3RhYmxlJyksXG4gICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgIGdvLlBvaW50LnN0cmluZ2lmeVxuICAgICAgKSxcbiAgICAgIC8vIG5ldyBnby5CaW5kaW5nKCdhbGlnbm1lbnQnLCAnYWxpZ25tZW50JywgZnVuY3Rpb24obG9jKSB7XG4gICAgICAvLyAgICAgcmV0dXJuIG5ldyBnby5TcG90KDAsIDAsIGxvYy54LCAwKTtcbiAgICAgIC8vIH0pLm9mT2JqZWN0KCksXG5cbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAge1xuICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICdUb29sVGlwJyxcbiAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAyLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICcnLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIGlmICghc2VsZi5faW5pdGlhbE9wdGlvbnMuaXNSZWFkT25seSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE/Lm5hbWUgPz8gVkFMVUVfTkE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChkYXRhPy52YWx1ZSA9PT0gVkFMVUVfTkEgfHwgXy5pc05pbChkYXRhPy52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBOT19EQVRBO1xuICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIFRFWFRfVU5LTk9XTjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIF8ucm91bmQoZGF0YT8udmFsdWUsIDIpLnRvRml4ZWQoMik7XG4gICAgICAgICAgICAgIH0pLm1ha2VUd29XYXkoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuJChcbiAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAnVGFibGUnLFxuICAgICAgICAgIHRoaXMuYXJyb3dGb3JQbGFudENlbGwoc2l6ZSwgQVRPX0VOVU1fRkxPV19ESVJFQ1RJT04uT1VURkxPVyksXG4gICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAnQXV0bycsXG4gICAgICAgICAgICAvLyB7IHdpZHRoOiBzaXplLncsIGhlaWdodDogc2l6ZS5oIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC8vIG1pblNpemU6IG5ldyBnby5TaXplKHNpemUudywgc2l6ZS5oKSxcbiAgICAgICAgICAgICAgLy8gbWF4U2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53LCBzaXplLmgpLFxuICAgICAgICAgICAgICBkZXNpcmVkU2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53LCBzaXplLmgpLFxuICAgICAgICAgICAgICBjb2x1bW46IDEsXG4gICAgICAgICAgICAgIHJvdzogMixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygnd2lkdGgnLCAnd2lkdGgnKSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdoZWlnaHQnLCAnaGVpZ2h0JyksXG5cbiAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgZ28uU2hhcGUsXG4gICAgICAgICAgICAgICdSb3VuZGVkUmVjdGFuZ2xlJyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpbGw6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5MSUdIVF9CTFVFLFxuICAgICAgICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLkxJTktfV0FURVIsXG4gICAgICAgICAgICAgICAgbmFtZTogJ3RleHROb2RlU2hhcGUnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygnZmlsbCcsICdmaWxsJyksXG4gICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdzdHJva2UnLCAnc3Ryb2tlJylcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgICAnVmVydGljYWwnLFxuICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAgICAgJ0hvcml6b250YWwnLFxuICAgICAgICAgICAgICAgIHsgYWxpZ25tZW50OiBnby5TcG90LkNlbnRlciB9LFxuICAgICAgICAgICAgICAgIC8vIEFsZXJ0XG5cbiAgICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgICAgICdBdXRvJyxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDUpLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICdyZWNvbW1lbmRhdGlvbicpLFxuICAgICAgICAgICAgICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnQ2lyY2xlJywge1xuICAgICAgICAgICAgICAgICAgICBmaWxsOiAnI0U5NUY0NycsXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogJyNFOTVGNDcnLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTUsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTUsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIHRoaXMuJChnby5UZXh0QmxvY2ssIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJ1xcdWY2NDknLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMS41LCAwLCAwLCAwKSxcbiAgICAgICAgICAgICAgICAgICAgZm9udDogJzhweCBcIkZvbnQgQXdlc29tZSA2IFByb1wiJyxcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiAnI2ZmZicsXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbE9wdGlvbnMuaXNSZWFkT25seVxuICAgICAgICAgICAgICAgICAgPyB0aGlzLiQoXG4gICAgICAgICAgICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAgICAgICAgICAgJ1Bvc2l0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTgsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VFbnRlcjogKGUsIG9iaikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9uSG92ZXJBbGVydC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBlPy5bJ1dyJ10/LnggKyA4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogZT8uWydXciddPy55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VBbGVydDogKG9iaiBhcyBhbnkpLnBhcnQ/Lm9iPy5tZXNzYWdlQWxlcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlTGVhdmU6IChlLCBvYmopID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vbkhvdmVyQWxlcnQuZW1pdChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICdhbGVydCcpLFxuXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy4kKGdvLlBpY3R1cmUsIElDT05fQUxFUlQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZSgzMCwgMzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VTdHJldGNoOiBnby5HcmFwaE9iamVjdC5Vbmlmb3JtLFxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAgICAgJ0F1dG8nLFxuICAgICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3RleHRCbG9ja1ZhbHVlJyxcbiAgICAgICAgICAgICAgICAgICAgcm93OiAyLFxuICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGRlc2lyZWRTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSA4LCAxOCksXG4gICAgICAgICAgICAgICAgICAgIGZvbnQ6ICdib2xkIDIycHggQXJpYWwnLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5HUkFZLFxuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogZ28uVGV4dEJsb2NrLk92ZXJmbG93RWxsaXBzaXMsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgLy8gbmV3IGdvLkJpbmRpbmcoJ2VkaXRhYmxlJywgJ2lzRWRpdGFibGUnKSxcbiAgICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdhbmdsZScsICdhbmdsZScpLFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ21hcmdpbicsICcnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YT8uYWxlcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGdvLk1hcmdpbigwLCAwLCAwLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGdvLk1hcmdpbigwLCAwLCAwLCAwKTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3N0cm9rZScsICdjb2xvcicpLFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnJywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VGV4dERhdGFCb3goZGF0YSk7XG4gICAgICAgICAgICAgICAgICB9KS5tYWtlVHdvV2F5KCksXG4gICAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICcnLCAoZGF0YSkgPT4gIWRhdGE/LmlzSGlkZGVuVmFsdWUpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICB0aGlzLm1ha2VQb3J0KCdUJywgZ28uU3BvdC5Ub3AsIGdvLlNwb3QuVG9wU2lkZSwgZmFsc2UsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5tYWtlUG9ydCgnTCcsIGdvLlNwb3QuTGVmdCwgZ28uU3BvdC5MZWZ0U2lkZSwgZmFsc2UsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5tYWtlUG9ydCgnUicsIGdvLlNwb3QuUmlnaHQsIGdvLlNwb3QuUmlnaHRTaWRlLCB0cnVlLCBmYWxzZSksXG4gICAgICAgICAgICB0aGlzLm1ha2VQb3J0KCdCJywgZ28uU3BvdC5Cb3R0b20sIGdvLlNwb3QuQm90dG9tU2lkZSwgdHJ1ZSwgZmFsc2UpXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0aGlzLmFycm93Rm9yUGxhbnRDZWxsKHNpemUsIEFUT19FTlVNX0ZMT1dfRElSRUNUSU9OLklORkxPVylcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5teURpYWdyYW0ubm9kZVRlbXBsYXRlTWFwLnNldChcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5URVhUX05PREUsXG4gICAgICBub2RlXG4gICAgKTtcbiAgfVxuXG4gIGFycm93Rm9yUGxhbnRDZWxsKHNpemUsIGZsb3dEaXJlY3Rpb24pIHtcbiAgICByZXR1cm4gdGhpcy4kKFxuICAgICAgZ28uUGFuZWwsXG4gICAgICAnVGFibGUnLFxuICAgICAge1xuICAgICAgICBoZWlnaHQ6IHNpemUuaCxcbiAgICAgIH0sXG4gICAgICBuZXcgZ28uQmluZGluZygnaGVpZ2h0JywgJ2hlaWdodCcpLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoXG4gICAgICAgICd2aXNpYmxlJyxcbiAgICAgICAgJycsXG4gICAgICAgIChkYXRhKSA9PiBkYXRhPy5mbG93T2ZQbGFudENlbGwgPT09IGZsb3dEaXJlY3Rpb25cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNvbHVtbjogZmxvd0RpcmVjdGlvbiA9PT0gQVRPX0VOVU1fRkxPV19ESVJFQ1RJT04uT1VURkxPVyA/IDAgOiAyLFxuICAgICAgICByb3c6IDIsXG4gICAgICB9LFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2l0ZW1BcnJheScsICdkYXRhTGlua0FycmF5JyksXG4gICAgICB7XG4gICAgICAgIGl0ZW1UZW1wbGF0ZTogdGhpcy4kKFxuICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdyb3cnLCAnaW5kZXhSb3cnKSxcbiAgICAgICAgICAvLyBuZXcgZ28uQmluZGluZygnaGVpZ2h0JywgJ2hlaWdodCcpLFxuICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgIGdvLlBpY3R1cmUsXG4gICAgICAgICAgICBBUlJPVyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkNlbnRlcixcbiAgICAgICAgICAgICAgbWF4U2l6ZTogbmV3IGdvLlNpemUoMjAsIDQwKSxcbiAgICAgICAgICAgICAgLy8gaW1hZ2VTdHJldGNoOiBnby5HcmFwaE9iamVjdC5Vbmlmb3JtLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdzb3VyY2UnLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgIC8vIHBhbmVsLnBhcnQ/LmRhdGE/LmlkXG4gICAgICAgICAgICAgIHJldHVybiBkYXRhPy5pc0NyZWF0ZWQgPyBwYW5lbD8uJHAgOiBBUlJPV19HUkFZO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdldFRleHREYXRhQm94KGRhdGEpIHtcbiAgICBpZiAoZGF0YT8udmFsdWUgPT09IFZBTFVFX05BKSB7XG4gICAgICByZXR1cm4gVEVYVF9VTktOT1dOO1xuICAgIH1cbiAgICByZXR1cm4gYCR7ZGF0YT8uc2hvcnRlbmVkTnVtYmVyfSR7XG4gICAgICBkYXRhPy51bml0UHJlZml4ZXMgPyAnICcgKyBkYXRhPy51bml0UHJlZml4ZXMgOiAnJ1xuICAgIH1gO1xuICB9XG5cbiAgbWFrZURhdGFCb3hUZW1wbGF0ZShcbiAgICBzaXplOiB7IHc6IG51bWJlcjsgaDogbnVtYmVyIH0gPSB7XG4gICAgICB3OiBBdG9Hb2pzRWRpdG9yTW9kZWwuR1JJRF9TSVpFICogNSxcbiAgICAgIGg6IEF0b0dvanNFZGl0b3JNb2RlbC5HUklEX1NJWkUgKiA1LFxuICAgIH1cbiAgKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgbGV0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Ob2RlLFxuICAgICAgJ1Nwb3QnLFxuICAgICAge1xuICAgICAgICBsb2NhdGlvblNwb3Q6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICBtb3VzZU92ZXI6IGZ1bmN0aW9uIChlLCBvYmopIHt9LFxuICAgICAgICBjbGljazogKGUsIG9iajogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKG9iaj8uZGF0YT8ub25TZWxlY3RlZCkge1xuICAgICAgICAgICAgb2JqPy5kYXRhPy5vblNlbGVjdGVkKG9iaj8uZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkOiAoZSkgPT4ge1xuICAgICAgICAgIGlmICghZS5pc1NlbGVjdGVkICYmIGU/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGU/LmRhdGE/Lm9uU2VsZWN0ZWQobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgICksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnQXV0bycsXG4gICAgICAgIHRoaXMuJChcbiAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAnVGFibGUnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vdXNlSG92ZXI6IChlLCBvYmopID0+IHtcbiAgICAgICAgICAgICAgaWYgKChvYmogYXMgYW55KS5wYXJ0Py5vYj8udmFsdWUgPT09IFZBTFVFX05BKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5vbkhvdmVySW5mb0J1dHRvbi5lbWl0KHtcbiAgICAgICAgICAgICAgICAgIGxlZnQ6IGU/LlsnV3InXT8ueCArIDgsXG4gICAgICAgICAgICAgICAgICB0b3A6IGU/LlsnV3InXT8ueSxcbiAgICAgICAgICAgICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtb3VzZUxlYXZlOiAoZSwgb2JqKSA9PiB7XG4gICAgICAgICAgICAgIGlmICgob2JqIGFzIGFueSkucGFydD8ub2I/LnZhbHVlID09PSBWQUxVRV9OQSkge1xuICAgICAgICAgICAgICAgIHNlbGYub25Ib3ZlckluZm9CdXR0b24uZW1pdChudWxsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuXG4gICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAnQXV0bycsXG4gICAgICAgICAgICB7IHJvdzogMCwgc3RyZXRjaDogZ28uR3JhcGhPYmplY3QuSG9yaXpvbnRhbCB9LFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5TaGFwZSxcbiAgICAgICAgICAgICAgJ1JlY3RhbmdsZScsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWxsOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuTElHSFRfQkxVRSxcbiAgICAgICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5SRVNPTFVUSU9OX0JMVUUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdmaWxsJywgJ2NvbG9yJylcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJvdzogMCxcbiAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMTAsIDEwLCA1LCAxMCksXG4gICAgICAgICAgICAgICAgbWF4U2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53LCBOYU4pLFxuICAgICAgICAgICAgICAgIHN0cm9rZTogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICBmb250OiAnbm9ybWFsIDEwcHQgQXJpYWwnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgc3BhY2luZ0JlbG93OiA1LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICdBdXRvJyxcbiAgICAgICAgICAgIHsgcm93OiAxLCBzdHJldGNoOiBnby5HcmFwaE9iamVjdC5Ib3Jpem9udGFsIH0sXG4gICAgICAgICAgICB0aGlzLiQoZ28uU2hhcGUsICdSZWN0YW5nbGUnLCB7XG4gICAgICAgICAgICAgIGZpbGw6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5MSUdIVF9CTFVFLFxuICAgICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5SRVNPTFVUSU9OX0JMVUUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAgICdIb3Jpem9udGFsJyxcbiAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICByb3c6IDIsXG4gICAgICAgICAgICAgICAgICAvLyBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIC8vIG1heFNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDEwLCA0MCksXG4gICAgICAgICAgICAgICAgICAvLyBtaW5TaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAxMCwgc2l6ZS5oKSxcbiAgICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbig1LCAwLCA1LCA1KSxcbiAgICAgICAgICAgICAgICAgIGZvbnQ6ICdib2xkIDEycHQgQXJpYWwnLFxuICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLkdSQVksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygnZWRpdGFibGUnLCAnaXNFZGl0YWJsZScpLFxuICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJ3Nob3J0ZW5lZE51bWJlcicpLm1ha2VUd29XYXkoKSxcbiAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygnc3Ryb2tlJywgJ2NvbG9yJyksXG4gICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnJywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLnZhbHVlICE9PSBWQUxVRV9OQTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHJvdzogMixcbiAgICAgICAgICAgICAgICAgIC8vIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgLy8gbWF4U2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53IC0gMTAsIDQwKSxcbiAgICAgICAgICAgICAgICAgIC8vIG1pblNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDEwLCBzaXplLmgpLFxuICAgICAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDUsIDUsIDUsIDApLFxuICAgICAgICAgICAgICAgICAgZm9udDogJ2JvbGQgMTJwdCBBcmlhbCcsXG4gICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuR1JBWSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJycsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS52YWx1ZSAhPT0gVkFMVUVfTkE7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAndW5pdFByZWZpeGVzJyksXG4gICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3N0cm9rZScsICdjb2xvcicpXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIC8vIEljb24gRXJyIHdoZW4gbGFjayBvZiB2YWx1ZVxuICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigxMCwgMTAsIDEwLCAxMCksXG4gICAgICAgICAgICAgICAgICB0ZXh0OiBWQUxVRV9OQSwgLy8gT2xkIHZlcnNpb246IFRFWFRfRVJST1JcbiAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBmb250OiAnYm9sZCAxMHB0IHNhbnMtc2VyaWYnLFxuICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuU0FMTU9OLFxuICAgICAgICAgICAgICAgICAgd3JhcDogZ28uVGV4dEJsb2NrLldyYXBGaXQsXG4gICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICBpc011bHRpbGluZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICcnLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEudmFsdWUgPT09IFZBTFVFX05BO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICB0aGlzLiQoZ28uUGFuZWwsICdWZXJ0aWNhbCcsIHtcbiAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkxlZnQsXG4gICAgICAgIGFsaWdubWVudEZvY3VzOiBuZXcgZ28uU3BvdCgwLCAwLjUsIDgsIDApLFxuICAgICAgfSksXG4gICAgICB0aGlzLiQoZ28uUGFuZWwsICdWZXJ0aWNhbCcsIHtcbiAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LlJpZ2h0LFxuICAgICAgICBhbGlnbm1lbnRGb2N1czogbmV3IGdvLlNwb3QoMSwgMC41LCAtOCwgMCksXG4gICAgICB9KSxcbiAgICAgIC8vIGZvdXIgbmFtZWQgcG9ydHMsIG9uZSBvbiBlYWNoIHNpZGU6XG5cbiAgICAgIHRoaXMubWFrZVBvcnQoJ1QnLCBnby5TcG90LlRvcCwgZ28uU3BvdC5Ub3BTaWRlLCBmYWxzZSwgdHJ1ZSksXG4gICAgICB0aGlzLm1ha2VQb3J0KCdMJywgZ28uU3BvdC5MZWZ0LCBnby5TcG90LkxlZnRTaWRlLCB0cnVlLCB0cnVlKSxcbiAgICAgIHRoaXMubWFrZVBvcnQoJ1InLCBnby5TcG90LlJpZ2h0LCBnby5TcG90LlJpZ2h0U2lkZSwgdHJ1ZSwgdHJ1ZSksXG4gICAgICB0aGlzLm1ha2VQb3J0KCdCJywgZ28uU3BvdC5Cb3R0b20sIGdvLlNwb3QuQm90dG9tU2lkZSwgdHJ1ZSwgZmFsc2UpXG4gICAgKTtcbiAgICB0aGlzLm15RGlhZ3JhbS5ub2RlVGVtcGxhdGVNYXAuc2V0KFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkRBVEFfQk9YLFxuICAgICAgbm9kZVxuICAgICk7XG4gIH1cblxuICBzaG93UG9pbnQobG9jKSB7XG4gICAgY29uc3QgZG9jTG9jID0gdGhpcy5teURpYWdyYW0udHJhbnNmb3JtRG9jVG9WaWV3KGxvYyk7XG4gIH1cblxuICBtYWtlRW50aXR5VGVtcGxhdGUoXG4gICAgaWNvbixcbiAgICB0aXRsZSxcbiAgICBzaXplOiB7IHc6IG51bWJlcjsgaDogbnVtYmVyIH0gPSB7XG4gICAgICB3OiBBdG9Hb2pzRWRpdG9yTW9kZWwuR1JJRF9TSVpFICogNSxcbiAgICAgIGg6IEF0b0dvanNFZGl0b3JNb2RlbC5HUklEX1NJWkUgKiA1LFxuICAgIH1cbiAgKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgbGV0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Ob2RlLFxuICAgICAgJ1Nwb3QnLFxuICAgICAge1xuICAgICAgICBsb2NhdGlvblNwb3Q6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICBtb3VzZU92ZXI6IGZ1bmN0aW9uIChlLCBvYmopIHtcbiAgICAgICAgICAvLyBzZWxmLnNob3dQb2ludChvYmo/LnBhcnQ/LmxvY2F0aW9uKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xpY2s6IChlLCBvYmo6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIG9iaj8uZGF0YT8ub25TZWxlY3RlZChvYmo/LmRhdGEpO1xuICAgICAgICAgICAgc2VsZi5vbkNsaWNrQ29tcG9lbnQuZW1pdCh7XG4gICAgICAgICAgICAgIGxlZnQ6IGU/LlsnV3InXT8ueCxcbiAgICAgICAgICAgICAgdG9wOiBlPy5bJ1dyJ10/LnksXG4gICAgICAgICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogb2JqPy5kYXRhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkOiAoZSkgPT4ge1xuICAgICAgICAgIGlmICghZS5pc1NlbGVjdGVkICYmIGU/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGU/LmRhdGE/Lm9uU2VsZWN0ZWQobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzZWxlY3Rpb25BZG9ybm1lbnRUZW1wbGF0ZTogdGhpcy5faW5pdGlhbE9wdGlvbnMuaXNSZWFkT25seVxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDogdGhpcy4kKFxuICAgICAgICAgICAgICBnby5BZG9ybm1lbnQsXG4gICAgICAgICAgICAgICdTcG90JyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNoYWRvd1Zpc2libGU6IHRydWUsXG4gICAgICAgICAgICAgICAgc2hhZG93Qmx1cjogNixcbiAgICAgICAgICAgICAgICBzaGFkb3dPZmZzZXQ6IG5ldyBnby5Qb2ludCgwLCAyKSxcbiAgICAgICAgICAgICAgICBzaGFkb3dDb2xvcjogJyMwMDAwMDAyOScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgICAnQXV0bycsXG4gICAgICAgICAgICAgICAgdGhpcy4kKGdvLlNoYXBlLCB7XG4gICAgICAgICAgICAgICAgICBmaWxsOiBudWxsLFxuICAgICAgICAgICAgICAgICAgc3Ryb2tlOiAnZG9kZ2VyYmx1ZScsXG4gICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogNCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0aGlzLiQoZ28uUGxhY2Vob2xkZXIsIHsgcGFkZGluZzogMyB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAgICAgJ0hvcml6b250YWwnLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5Ub3BSaWdodCxcbiAgICAgICAgICAgICAgICAgIGFsaWdubWVudEZvY3VzOiBnby5TcG90LkJvdHRvbSxcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd3aGl0ZScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyBtb3JlXG4gICAgICAgICAgICAgICAgIXRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5nZW5lcmF0ZUFjdGlvbkdyb3VwKFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlJPX1dBVEVSX1RSRUFUTUVOVFxuICAgICAgICAgICAgICAgICAgICAgICAgXS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuQ09PTElOR19UT1dFUlxuICAgICAgICAgICAgICAgICAgICAgICAgXS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuQk9JTEVSXG4gICAgICAgICAgICAgICAgICAgICAgICBdLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5JTU1FUlNFRF9VRl9XQVRFUl9UUkVBVE1FTlRTXG4gICAgICAgICAgICAgICAgICAgICAgICBdLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5QUkVTU1VSSVpFRF9VRl9XQVRFUl9UUkVBVE1FTlRTXG4gICAgICAgICAgICAgICAgICAgICAgICBdLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgXS5pbmNsdWRlcyh0aXRsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5SRU5BTUUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLkZMT1dfREVUQUlMUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuQVNTRVRfUEFSQU1FVEVSUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuT1VURkxPVyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREVMRVRFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuUkVOQU1FLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5ERVRBSUxTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5PVVRGTE9XLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5ERUxFVEUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgOiB7fVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIC8vIG5ldyBnby5CaW5kaW5nKCdsb2NhdGlvbicsICdsb2MnLCBnby5Qb2ludC5wYXJzZSksXG4gICAgICBuZXcgZ28uQmluZGluZygnbW92YWJsZScsICdtb3ZhYmxlJyksXG4gICAgICBuZXcgZ28uQmluZGluZygnc2VsZWN0YWJsZScsICdzZWxlY3RhYmxlJyksXG4gICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgIGdvLlBvaW50LnN0cmluZ2lmeVxuICAgICAgKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJ3Zpc2libGUnKSxcbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAgeyB3aWR0aDogc2l6ZS53LCBoZWlnaHQ6IHNpemUuaCB9LFxuICAgICAgICB0aGlzLiQoZ28uU2hhcGUsICdSb3VuZGVkUmVjdGFuZ2xlJywge1xuICAgICAgICAgIGZpbGw6ICd3aGl0ZScsXG4gICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuTElOS19XQVRFUixcbiAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAvLyBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMuJChcbiAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAnVGFibGUnLFxuICAgICAgICAgIHRoaXMuJChnby5QaWN0dXJlLCBpY29uLCB7XG4gICAgICAgICAgICByb3c6IDEsXG4gICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICAgICAgZGVzaXJlZFNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDIwLCBzaXplLmggLSA1MCksXG4gICAgICAgICAgICAvLyBtYXhTaXplOiBuZXcgZ28uU2l6ZSg2MCwgNjApLFxuICAgICAgICAgICAgaW1hZ2VTdHJldGNoOiBnby5HcmFwaE9iamVjdC5Vbmlmb3JtLFxuICAgICAgICAgICAgdG9vbFRpcDogdGhpcy4kKFxuICAgICAgICAgICAgICAnVG9vbFRpcCcsXG4gICAgICAgICAgICAgIHRoaXMuJChnby5UZXh0QmxvY2ssIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgdGV4dDogdGl0bGUsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcm93OiAyLFxuICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMTAsIDAsIDMsIDApLFxuICAgICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZGVzaXJlZFNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDIwLCAxNSksXG4gICAgICAgICAgICAgIHN0cm9rZTogJyMwMDBENDInLFxuICAgICAgICAgICAgICBmb250OiAnYm9sZCAxMHB0IEFyaWFsJyxcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgLy8gd3JhcDogZ28uVGV4dEJsb2NrLk5vbmUsXG4gICAgICAgICAgICAgIG92ZXJmbG93OiBnby5UZXh0QmxvY2suT3ZlcmZsb3dFbGxpcHNpcyxcbiAgICAgICAgICAgICAgdG9vbFRpcDogdGhpcy4kKFxuICAgICAgICAgICAgICAgICdUb29sVGlwJyxcbiAgICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgICAgICB7IG1hcmdpbjogNCB9LFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJ25hbWUnKS5tYWtlVHdvV2F5KCksXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygnZWRpdGFibGUnLCAnJywgKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLlRZUEVfQ09NUE9ORU5UX1dBVEVSPy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgIGRhdGE/LnN5c3RlbVR5cGVcbiAgICAgICAgICAgICAgICApICYmXG4gICAgICAgICAgICAgICAgZGF0YT8udG9wb2xvZ3lUeXBlICE9PSBBVE9fRUNPTVBPTkVOVF9QTEFOVF9UWVBFLldBVEVSICYmXG4gICAgICAgICAgICAgICAgZGF0YT8udG9wb2xvZ3lUeXBlICE9PVxuICAgICAgICAgICAgICAgICAgQVRPX0VDT01QT05FTlRfUExBTlRfVFlQRS5XQVRFUl9QTEFOVF9DRUxMXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKSxcblxuICAgICAgdGhpcy4kKGdvLlBhbmVsLCAnVmVydGljYWwnLCB7XG4gICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICBhbGlnbm1lbnRGb2N1czogbmV3IGdvLlNwb3QoMCwgMC41LCA4LCAwKSxcbiAgICAgIH0pLFxuICAgICAgdGhpcy4kKGdvLlBhbmVsLCAnVmVydGljYWwnLCB7XG4gICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5SaWdodCxcbiAgICAgICAgYWxpZ25tZW50Rm9jdXM6IG5ldyBnby5TcG90KDEsIDAuNSwgLTgsIDApLFxuICAgICAgfSksXG5cbiAgICAgIHRoaXMubWFrZVBvcnQoJ1QnLCBnby5TcG90LlRvcCwgZ28uU3BvdC5Ub3BTaWRlLCBmYWxzZSwgdHJ1ZSksXG4gICAgICB0aGlzLm1ha2VQb3J0KCdMJywgZ28uU3BvdC5MZWZ0LCBnby5TcG90LkxlZnRTaWRlLCBmYWxzZSwgdHJ1ZSksXG4gICAgICB0aGlzLm1ha2VQb3J0KCdSJywgZ28uU3BvdC5SaWdodCwgZ28uU3BvdC5SaWdodFNpZGUsIHRydWUsIGZhbHNlKSxcbiAgICAgIHRoaXMubWFrZVBvcnQoJ0InLCBnby5TcG90LkJvdHRvbSwgZ28uU3BvdC5Cb3R0b21TaWRlLCB0cnVlLCBmYWxzZSlcbiAgICApO1xuICAgIHRoaXMubXlEaWFncmFtLm5vZGVUZW1wbGF0ZU1hcC5zZXQodGl0bGUsIG5vZGUpO1xuICB9XG5cbiAgbWFrZUVudGl0eVRlbXBsYXRlRW5lcmd5KFxuICAgIGljb24sXG4gICAgdGl0bGUsXG4gICAgc2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9ID0ge1xuICAgICAgdzogQXRvR29qc0VkaXRvck1vZGVsLkdSSURfU0laRSAqIDUsXG4gICAgICBoOiBBdG9Hb2pzRWRpdG9yTW9kZWwuR1JJRF9TSVpFICogNSxcbiAgICB9XG4gICkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGxldCBub2RlID0gdGhpcy4kKFxuICAgICAgZ28uTm9kZSxcbiAgICAgICdTcG90JyxcbiAgICAgIHtcbiAgICAgICAgbG9jYXRpb25TcG90OiBnby5TcG90LkNlbnRlcixcbiAgICAgICAgbW91c2VPdmVyOiBmdW5jdGlvbiAoZSwgb2JqKSB7XG4gICAgICAgICAgLy8gc2VsZi5zaG93UG9pbnQob2JqPy5wYXJ0Py5sb2NhdGlvbik7XG4gICAgICAgIH0sXG4gICAgICAgIGNsaWNrOiAoZSwgb2JqOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAob2JqPy5kYXRhPy5vblNlbGVjdGVkKSB7XG4gICAgICAgICAgICBvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQob2JqPy5kYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNlbGVjdGlvbkNoYW5nZWQ6IChlKSA9PiB7XG4gICAgICAgICAgaWYgKCFlLmlzU2VsZWN0ZWQgJiYgZT8uZGF0YT8ub25TZWxlY3RlZCkge1xuICAgICAgICAgICAgZT8uZGF0YT8ub25TZWxlY3RlZChudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNlbGVjdGlvbkFkb3JubWVudFRlbXBsYXRlOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5XG4gICAgICAgICAgPyBudWxsXG4gICAgICAgICAgOiB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLkFkb3JubWVudCxcbiAgICAgICAgICAgICAgJ1Nwb3QnLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2hhZG93VmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzaGFkb3dCbHVyOiA2LFxuICAgICAgICAgICAgICAgIHNoYWRvd09mZnNldDogbmV3IGdvLlBvaW50KDAsIDIpLFxuICAgICAgICAgICAgICAgIHNoYWRvd0NvbG9yOiAnIzAwMDAwMDI5JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgICAgICdBdXRvJyxcbiAgICAgICAgICAgICAgICB0aGlzLiQoZ28uU2hhcGUsIHtcbiAgICAgICAgICAgICAgICAgIGZpbGw6IG51bGwsXG4gICAgICAgICAgICAgICAgICBzdHJva2U6ICdkb2RnZXJibHVlJyxcbiAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiA0LFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRoaXMuJChnby5QbGFjZWhvbGRlciwgeyBwYWRkaW5nOiAzIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgICAnSG9yaXpvbnRhbCcsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LlRvcFJpZ2h0LFxuICAgICAgICAgICAgICAgICAgYWxpZ25tZW50Rm9jdXM6IGdvLlNwb3QuQm90dG9tLFxuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC8vIG1vcmVcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlQWN0aW9uR3JvdXAoW1xuICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLlJFTkFNRSxcbiAgICAgICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5ERVRBSUxTLFxuICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLk9VVEZMT1csXG4gICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREVMRVRFLFxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICB9LFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAndmlzaWJsZScpLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ21vdmFibGUnLCAnbW92YWJsZScpLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ3NlbGVjdGFibGUnLCAnc2VsZWN0YWJsZScpLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgICksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnQXV0bycsXG4gICAgICAgIHsgd2lkdGg6IHNpemUudywgaGVpZ2h0OiBzaXplLmggfSxcbiAgICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnUm91bmRlZFJlY3RhbmdsZScsIHtcbiAgICAgICAgICBmaWxsOiAnd2hpdGUnLFxuICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLkxJTktfV0FURVIsXG4gICAgICAgICAgLy8gc3Ryb2tlRGFzaEFycmF5OiBbNSwgNV0sXG4gICAgICAgIH0pLFxuICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuVEVNUExBVEVfRFVQTElDQVRFW3RpdGxlXSA/PyB0aXRsZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcm93OiAwLFxuICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMywgMywgMTAsIDMpLFxuICAgICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgMTUpLFxuICAgICAgICAgICAgICBzdHJva2U6ICcjNDQ0NDQ0JyxcbiAgICAgICAgICAgICAgZm9udDogJ25vcm1hbCAxMHB0IEFyaWFsJyxcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgdG9vbFRpcDogdGhpcy4kKFxuICAgICAgICAgICAgICAgICdUb29sVGlwJyxcbiAgICAgICAgICAgICAgICB0aGlzLiQoZ28uVGV4dEJsb2NrLCB7XG4gICAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgICB0ZXh0OiB0aXRsZSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICksXG4gICAgICAgICAgdGhpcy4kKGdvLlBpY3R1cmUsIGljb24sIHtcbiAgICAgICAgICAgIHJvdzogMSxcbiAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgICAgICBkZXNpcmVkU2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53IC0gMjAsIHNpemUuaCAtIDY1KSxcbiAgICAgICAgICAgIGltYWdlU3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVW5pZm9ybSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHJvdzogMixcbiAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDEwLCAzLCAzLCAzKSxcbiAgICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDIwLCAxNSksXG4gICAgICAgICAgICAgIHN0cm9rZTogJyMyQzJDMkMnLFxuICAgICAgICAgICAgICBmb250OiAnYm9sZCAxMHB0IEFyaWFsJyxcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgLy8gd3JhcDogZ28uVGV4dEJsb2NrLk5vbmUsXG4gICAgICAgICAgICAgIG92ZXJmbG93OiBnby5UZXh0QmxvY2suT3ZlcmZsb3dFbGxpcHNpcyxcbiAgICAgICAgICAgICAgdG9vbFRpcDogdGhpcy4kKFxuICAgICAgICAgICAgICAgICdUb29sVGlwJyxcbiAgICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogNCxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJ25hbWUnKS5tYWtlVHdvV2F5KClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICB0aGlzLiQoZ28uUGFuZWwsICdWZXJ0aWNhbCcsIHtcbiAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkxlZnQsXG4gICAgICAgIGFsaWdubWVudEZvY3VzOiBuZXcgZ28uU3BvdCgwLCAwLjUsIDgsIDApLFxuICAgICAgfSksXG4gICAgICB0aGlzLiQoZ28uUGFuZWwsICdWZXJ0aWNhbCcsIHtcbiAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LlJpZ2h0LFxuICAgICAgICBhbGlnbm1lbnRGb2N1czogbmV3IGdvLlNwb3QoMSwgMC41LCAtOCwgMCksXG4gICAgICB9KSxcbiAgICAgIC8vIGZvdXIgbmFtZWQgcG9ydHMsIG9uZSBvbiBlYWNoIHNpZGU6XG5cbiAgICAgIHRoaXMubWFrZVBvcnQoJ1QnLCBnby5TcG90LlRvcCwgZ28uU3BvdC5Ub3BTaWRlLCBmYWxzZSwgdHJ1ZSksXG4gICAgICB0aGlzLm1ha2VQb3J0KCdMJywgZ28uU3BvdC5MZWZ0LCBnby5TcG90LkxlZnRTaWRlLCBmYWxzZSwgdHJ1ZSksXG4gICAgICB0aGlzLm1ha2VQb3J0KCdSJywgZ28uU3BvdC5SaWdodCwgZ28uU3BvdC5SaWdodFNpZGUsIHRydWUsIGZhbHNlKSxcbiAgICAgIHRoaXMubWFrZVBvcnQoJ0InLCBnby5TcG90LkJvdHRvbSwgZ28uU3BvdC5Cb3R0b21TaWRlLCB0cnVlLCBmYWxzZSlcbiAgICApO1xuICAgIHRoaXMubXlEaWFncmFtLm5vZGVUZW1wbGF0ZU1hcC5zZXQodGl0bGUsIG5vZGUpO1xuICB9XG5cbiAgLy8gUGxhbnQgQ2VsbFxuICBwbGFudENlbGxUZW1wbGF0ZShcbiAgICBpY29uLFxuICAgIHRpdGxlLFxuICAgIHNpemU6IHsgdzogbnVtYmVyOyBoOiBudW1iZXIgfSA9IHtcbiAgICAgIHc6IDI2MCxcbiAgICAgIGg6IEF0b0dvanNFZGl0b3JNb2RlbC5QTEFOVF9DRUxMX0hFSUdIVCxcbiAgICB9XG4gICkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGxldCBub2RlID0gdGhpcy4kKFxuICAgICAgZ28uR3JvdXAsXG4gICAgICAnU3BvdCcsXG4gICAgICB7XG4gICAgICAgIGxvY2F0aW9uU3BvdDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgIG1vdXNlT3ZlcjogZnVuY3Rpb24gKGUsIG9iaikge1xuICAgICAgICAgIC8vIHNlbGYuc2hvd1BvaW50KG9iaj8ucGFydD8ubG9jYXRpb24pO1xuICAgICAgICB9LFxuXG4gICAgICAgIG1vdXNlRW50ZXI6IChlLCBvYmopID0+IHtcbiAgICAgICAgICAvLyBzZWxmLm9uSG92ZXJBbGVydC5lbWl0KHtcbiAgICAgICAgICAvLyAgICAgbGVmdDogZT8uWydXciddPy54ICsgOCxcbiAgICAgICAgICAvLyAgICAgdG9wOiBlPy5bJ1dyJ10/LnksXG4gICAgICAgICAgLy8gICAgIG1lc3NhZ2VBbGVydDogKG9iaiBhcyBhbnkpLnBhcnQ/Lm9iPy5tZXNzYWdlQWxlcnQsXG4gICAgICAgICAgLy8gfSk7XG4gICAgICAgICAgY29uc3Qgbm9kZSA9IG9iai5wYXJ0O1xuICAgICAgICAgIHNlbGYub25Ib3ZlckluZm9CdXR0b24uZW1pdCh7XG4gICAgICAgICAgICBsZWZ0OiBlPy5bJ1dyJ10/LnggKyA4LFxuICAgICAgICAgICAgdG9wOiBlPy5bJ1dyJ10/LnksXG4gICAgICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgbGV0IHNoYXBlID0gKG5vZGUgYXMgYW55KT8uZmluZE9iamVjdCgnU0hBUEVfS0VZJyk7IC8vIFRoYXkgJ1NIQVBFX0tFWScgYuG6sW5nIGtow7NhIGLhuqFuIMSR4bq3dCBjaG8gaMOsbmggU2hhcGVcbiAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICBpZiAoc2hhcGUpIHtcbiAgICAgICAgICAgIHNoYXBlLnN0cm9rZSA9ICdibHVlJzsgLy8gVGhheSDEkeG7lWkgbcOgdSBzdHJva2UgdGjDoG5oIGJsdWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vdXNlTGVhdmU6IChlLCBvYmopID0+IHtcbiAgICAgICAgICBzZWxmLm9uSG92ZXJJbmZvQnV0dG9uLmVtaXQobnVsbCk7XG4gICAgICAgICAgLy8gc2VsZi5vbkhvdmVyQWxlcnQuZW1pdChudWxsKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjbGljazogKGUsIG9iajogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKG9iaj8uZGF0YT8ub25TZWxlY3RlZCkge1xuICAgICAgICAgICAgb2JqPy5kYXRhPy5vblNlbGVjdGVkKG9iaj8uZGF0YSk7XG4gICAgICAgICAgICBzZWxmLm9uQ2xpY2tDb21wb2VudC5lbWl0KHtcbiAgICAgICAgICAgICAgbGVmdDogZT8uWydXciddPy54LFxuICAgICAgICAgICAgICB0b3A6IGU/LlsnV3InXT8ueSxcbiAgICAgICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBvYmo/LmRhdGEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZG91YmxlQ2xpY2s6IChlLCBvYmo6IGFueSkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5faW5pdGlhbE9wdGlvbnM/LmlzUmVhZE9ubHkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBvYmoucGFydDtcbiAgICAgICAgICAgIHRoaXMuaXNTaG93Tm9kZUluZm9cbiAgICAgICAgICAgICAgPyBzZWxmLm9uRG91YmxlQ2xpY2tOb2RlLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgbGVmdDogZT8uWydXciddPy54LFxuICAgICAgICAgICAgICAgICAgdG9wOiBlPy5bJ1dyJ10/LnksXG4gICAgICAgICAgICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gVG9kb1xuXG4gICAgICAgIHNlbGVjdGlvbkNoYW5nZWQ6IChlKSA9PiB7XG4gICAgICAgICAgaWYgKCFlLmlzU2VsZWN0ZWQgJiYgZT8uZGF0YT8ub25TZWxlY3RlZCkge1xuICAgICAgICAgICAgZT8uZGF0YT8ub25TZWxlY3RlZChudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgc2VsZWN0aW9uQWRvcm5tZW50VGVtcGxhdGU6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6IHRoaXMuJChcbiAgICAgICAgICAgICAgZ28uQWRvcm5tZW50LFxuICAgICAgICAgICAgICAnU3BvdCcsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaGFkb3dWaXNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNoYWRvd0JsdXI6IDYsXG4gICAgICAgICAgICAgICAgc2hhZG93T2Zmc2V0OiBuZXcgZ28uUG9pbnQoMCwgMiksXG4gICAgICAgICAgICAgICAgc2hhZG93Q29sb3I6ICcjMDAwMDAwMjknLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAgICAgJ0F1dG8nLFxuICAgICAgICAgICAgICAgIHsgd2lkdGg6IDE3MCB9LFxuICAgICAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwge1xuICAgICAgICAgICAgICAgICAgZmlsbDogbnVsbCxcbiAgICAgICAgICAgICAgICAgIHN0cm9rZTogJ2RvZGdlcmJsdWUnLFxuICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDQsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGhpcy4kKGdvLlBsYWNlaG9sZGVyLCB7IHBhZGRpbmc6IDMgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgICAgICdIb3Jpem9udGFsJyxcbiAgICAgICAgICAgICAgICB7IGFsaWdubWVudDogZ28uU3BvdC5Ub3BSaWdodCwgYWxpZ25tZW50Rm9jdXM6IGdvLlNwb3QuQm90dG9tIH0sXG4gICAgICAgICAgICAgICAgLy8gbW9yZVxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVBY3Rpb25Hcm91cChbXG4gICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuUkVOQU1FLFxuICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLkNIQU5HRV9JQ09OLFxuICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLk9OTFlfREVUQUlMUyxcbiAgICAgICAgICAgICAgICAgIC8vICAgRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLk9VVEZMT1csXG4gICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREVMRVRFLFxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgLy8gICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICdpc05vdEFjdGlvbicsICh4KSA9PiAheCksXG4gICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAvLyAgIHRoaXMuJChcbiAgICAgICAgICAgICAgLy8gICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAgIC8vICAgICAgICdIb3Jpem9udGFsJyxcbiAgICAgICAgICAgICAgLy8gICAgICAgeyBhbGlnbm1lbnQ6IGdvLlNwb3QuVG9wUmlnaHQsIGFsaWdubWVudEZvY3VzOiBnby5TcG90LkJvdHRvbSB9LFxuICAgICAgICAgICAgICAvLyAgICAgICB0aGlzLmdlbmVyYXRlQWN0aW9uR3JvdXAoW0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5PTkxZX0RFVEFJTFNdKSxcbiAgICAgICAgICAgICAgLy8gICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnJywgKHgpID0+IHtcbiAgICAgICAgICAgICAgLy8gICAgICAgICAgIHJldHVybiB4Py5pc09ubHlEZXRhaWxzICYmICF4Py5pc05vdEFjdGlvbiA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICAgICAgLy8gICAgICAgfSksXG4gICAgICAgICAgICAgIC8vICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICB9LFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgICksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnQXV0bycsXG4gICAgICAgIHsgd2lkdGg6IHNpemUudywgaGVpZ2h0OiBzaXplLmggfSxcbiAgICAgICAgLy8gdGhpcy4kKGdvLlNoYXBlLCAnUm91bmRlZFJlY3RhbmdsZScsIHtcbiAgICAgICAgLy8gICAgIGZpbGw6ICd3aGl0ZScsXG4gICAgICAgIC8vICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5MSU5LX1dBVEVSLFxuICAgICAgICAvLyAgICAgLy8gc3Ryb2tlRGFzaEFycmF5OiBbNSwgNV0sXG4gICAgICAgIC8vIH0pLFxuICAgICAgICAvLyB0aGlzLiQoZ28uUGxhY2Vob2xkZXIsIHsgcGFkZGluZzogbmV3IGdvLk1hcmdpbigwLCAwLCAwLCAwKSwgdmlzaWJsZTogZmFsc2UgfSksXG4gICAgICAgIHRoaXMuJChcbiAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAnQXV0bycsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWxpZ25tZW50Rm9jdXM6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDAsIDUwLCAwLCA1MCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aGlzLiQoZ28uU2hhcGUsICdSb3VuZGVkUmVjdGFuZ2xlJywge1xuICAgICAgICAgICAgZmlsbDogJ3doaXRlJyxcbiAgICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLkxJTktfV0FURVIsXG4gICAgICAgICAgICBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICdUYWJsZScsXG4gICAgICAgICAgICB0aGlzLiQoZ28uVGV4dEJsb2NrLCB0aXRsZSwge1xuICAgICAgICAgICAgICByb3c6IDAsXG4gICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigzLCAwLCAxMCwgMCksXG4gICAgICAgICAgICAgIGRlc2lyZWRTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgMTUpLFxuICAgICAgICAgICAgICBzdHJva2U6ICcjNDQ0NDQ0JyxcbiAgICAgICAgICAgICAgZm9udDogJ25vcm1hbCAxMHB0IEFyaWFsJyxcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgdG9vbFRpcDogdGhpcy4kKFxuICAgICAgICAgICAgICAgICdUb29sVGlwJyxcbiAgICAgICAgICAgICAgICB0aGlzLiQoZ28uVGV4dEJsb2NrLCB7XG4gICAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgICB0ZXh0OiB0aXRsZSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLlBpY3R1cmUsXG4gICAgICAgICAgICAgIGljb24sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByb3c6IDEsXG4gICAgICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkNlbnRlcixcbiAgICAgICAgICAgICAgICBkZXNpcmVkU2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53IC0gMjAsIHNpemUuaCAtIDY1KSxcbiAgICAgICAgICAgICAgICBpbWFnZVN0cmV0Y2g6IGdvLkdyYXBoT2JqZWN0LlVuaWZvcm0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKFxuICAgICAgICAgICAgICAgICdzb3VyY2UnLFxuICAgICAgICAgICAgICAgICdwYXRoSW1hZ2UnLFxuICAgICAgICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgICAgICAgeCA/P1xuICAgICAgICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuUExBTlRfQ0VMTFxuICAgICAgICAgICAgICAgICAgXS5pY29uXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJvdzogMixcbiAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMTAsIDAsIDMsIDApLFxuICAgICAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRlc2lyZWRTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgMTUpLFxuICAgICAgICAgICAgICAgIHN0cm9rZTogJyMyQzJDMkMnLFxuICAgICAgICAgICAgICAgIGZvbnQ6ICdib2xkIDEwcHQgQXJpYWwnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgLy8gd3JhcDogZ28uVGV4dEJsb2NrLk5vbmUsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGdvLlRleHRCbG9jay5PdmVyZmxvd0VsbGlwc2lzLFxuICAgICAgICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICAgICAgICdUb29sVGlwJyxcbiAgICAgICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiA0LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpLm1ha2VUd29XYXkoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKSxcblxuICAgICAgdGhpcy4kKGdvLlBhbmVsLCAnVmVydGljYWwnLCB7XG4gICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICBhbGlnbm1lbnRGb2N1czogbmV3IGdvLlNwb3QoMCwgMC41LCA4LCAwKSxcbiAgICAgIH0pLFxuICAgICAgdGhpcy4kKGdvLlBhbmVsLCAnVmVydGljYWwnLCB7XG4gICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5SaWdodCxcbiAgICAgICAgYWxpZ25tZW50Rm9jdXM6IG5ldyBnby5TcG90KDEsIDAuNSwgLTgsIDApLFxuICAgICAgfSlcblxuICAgICAgLy8gdGhpcy5tYWtlUG9ydCgnVCcsIGdvLlNwb3QuVG9wLCBnby5TcG90LlRvcFNpZGUsIGZhbHNlLCB0cnVlKSxcbiAgICAgIC8vIHRoaXMubWFrZVBvcnQoJ0wnLCBnby5TcG90LkxlZnQsIGdvLlNwb3QuTGVmdFNpZGUsIGZhbHNlLCB0cnVlKSxcbiAgICAgIC8vIHRoaXMubWFrZVBvcnQoJ1InLCBnby5TcG90LlJpZ2h0LCBnby5TcG90LlJpZ2h0U2lkZSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgLy8gdGhpcy5tYWtlUG9ydCgnQicsIGdvLlNwb3QuQm90dG9tLCBnby5TcG90LkJvdHRvbVNpZGUsIHRydWUsIGZhbHNlKSxcbiAgICApO1xuICAgIHRoaXMubXlEaWFncmFtLm5vZGVUZW1wbGF0ZU1hcC5zZXQodGl0bGUsIG5vZGUpO1xuICB9XG5cbiAgbWFrZUVudGl0eVdpdGhkcmF3T3JEaXNjaGFyZ2UoXG4gICAgaWNvbixcbiAgICB0aXRsZSxcbiAgICBzaXplOiB7IHc6IG51bWJlcjsgaDogbnVtYmVyIH0gPSB7XG4gICAgICB3OiBBdG9Hb2pzRWRpdG9yTW9kZWwuR1JJRF9TSVpFICogNSxcbiAgICAgIGg6IEF0b0dvanNFZGl0b3JNb2RlbC5HUklEX1NJWkUgKiA1LFxuICAgIH1cbiAgKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgbGV0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Ob2RlLFxuICAgICAgJ1Nwb3QnLFxuICAgICAge1xuICAgICAgICBsb2NhdGlvblNwb3Q6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICBtb3VzZU92ZXI6IGZ1bmN0aW9uIChlLCBvYmopIHtcbiAgICAgICAgICAvLyBzZWxmLnNob3dQb2ludChvYmo/LnBhcnQ/LmxvY2F0aW9uKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xpY2s6IChlLCBvYmo6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIG9iaj8uZGF0YT8ub25TZWxlY3RlZChvYmo/LmRhdGEpO1xuICAgICAgICAgICAgc2VsZi5vbkNsaWNrQ29tcG9lbnQuZW1pdCh7XG4gICAgICAgICAgICAgIGxlZnQ6IGU/LlsnV3InXT8ueCxcbiAgICAgICAgICAgICAgdG9wOiBlPy5bJ1dyJ10/LnksXG4gICAgICAgICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogb2JqPy5kYXRhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkOiAoZSkgPT4ge1xuICAgICAgICAgIGlmICghZS5pc1NlbGVjdGVkICYmIGU/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGU/LmRhdGE/Lm9uU2VsZWN0ZWQobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzZWxlY3Rpb25BZG9ybm1lbnRUZW1wbGF0ZTogdGhpcy5faW5pdGlhbE9wdGlvbnMuaXNSZWFkT25seVxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDogdGhpcy4kKFxuICAgICAgICAgICAgICBnby5BZG9ybm1lbnQsXG4gICAgICAgICAgICAgICdTcG90JyxcbiAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgICAgICdBdXRvJyxcbiAgICAgICAgICAgICAgICB0aGlzLiQoZ28uU2hhcGUsIHtcbiAgICAgICAgICAgICAgICAgIGZpbGw6IG51bGwsXG4gICAgICAgICAgICAgICAgICBzdHJva2U6ICdkb2RnZXJibHVlJyxcbiAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiA0LFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRoaXMuJChnby5QbGFjZWhvbGRlciwgeyBwYWRkaW5nOiAzIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgICAnSG9yaXpvbnRhbCcsXG4gICAgICAgICAgICAgICAgeyBhbGlnbm1lbnQ6IGdvLlNwb3QuVG9wUmlnaHQsIGFsaWdubWVudEZvY3VzOiBnby5TcG90LkJvdHRvbSB9LFxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVBY3Rpb25Hcm91cChbXG4gICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuUkVOQU1FLFxuICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLkRFVEFJTFMsXG4gICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuT1VURkxPVyxcbiAgICAgICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5ERUxFVEUsXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICd2aXNpYmxlJyksXG4gICAgICBuZXcgZ28uQmluZGluZygnbW92YWJsZScsICdtb3ZhYmxlJyksXG4gICAgICBuZXcgZ28uQmluZGluZygnc2VsZWN0YWJsZScsICdzZWxlY3RhYmxlJyksXG4gICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgIGdvLlBvaW50LnN0cmluZ2lmeVxuICAgICAgKSxcblxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgJ0F1dG8nLFxuICAgICAgICB7IHdpZHRoOiBzaXplLncsIGhlaWdodDogc2l6ZS5oIH0sXG4gICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ1JvdW5kZWRSZWN0YW5nbGUnLCB7XG4gICAgICAgICAgZmlsbDogJ3doaXRlJyxcbiAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5MSU5LX1dBVEVSLFxuICAgICAgICAgIC8vIHN0cm9rZURhc2hBcnJheTogWzUsIDVdLFxuICAgICAgICB9KSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICdUYWJsZScsXG4gICAgICAgICAgLy8gdGhpcy4kKGdvLlRleHRCbG9jaywgdGl0bGUsIHtcbiAgICAgICAgICAvLyAgICAgcm93OiAwLFxuICAgICAgICAgIC8vICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMywgMywgMTAsIDMpLFxuICAgICAgICAgIC8vICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgTmFOKSxcbiAgICAgICAgICAvLyAgICAgc3Ryb2tlOiAnIzQ0NDQ0NCcsXG4gICAgICAgICAgLy8gICAgIGZvbnQ6ICdub3JtYWwgMTBwdCBBcmlhbCcsXG4gICAgICAgICAgLy8gICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgLy8gfSksXG4gICAgICAgICAgdGhpcy4kKGdvLlBpY3R1cmUsIGljb24sIHtcbiAgICAgICAgICAgIHJvdzogMSxcbiAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgICAgICBkZXNpcmVkU2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53IC0gMjAsIHNpemUuaCAtIDUwKSxcbiAgICAgICAgICAgIGltYWdlU3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVW5pZm9ybSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHJvdzogMixcbiAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDEwLCAwLCAzLCAwKSxcbiAgICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgIGRlc2lyZWRTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgMTUpLFxuICAgICAgICAgICAgICBzdHJva2U6ICcjMDAwRDQyJyxcbiAgICAgICAgICAgICAgZm9udDogJ2JvbGQgMTBwdCBBcmlhbCcsXG4gICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIC8vIHdyYXA6IGdvLlRleHRCbG9jay5Ob25lLFxuICAgICAgICAgICAgICBvdmVyZmxvdzogZ28uVGV4dEJsb2NrLk92ZXJmbG93RWxsaXBzaXMsXG4gICAgICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICAgICAnVG9vbFRpcCcsXG4gICAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpLm1ha2VUd29XYXkoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpXG4gICAgICAgICAgICAvLyB7XG4gICAgICAgICAgICAvLyAgICAgLy8gZGVmaW5lIGEgdG9vbHRpcCBmb3IgZWFjaCBub2RlIHRoYXQgZGlzcGxheXMgdGhlIGNvbG9yIGFzIHRleHRcbiAgICAgICAgICAgIC8vICAgICB0b29sVGlwOiB0aGlzLiQoXG4gICAgICAgICAgICAvLyAgICAgICAgICdUb29sVGlwJyxcbiAgICAgICAgICAgIC8vICAgICAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgeyBtYXJnaW46IDQgfSwgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpKSxcbiAgICAgICAgICAgIC8vICAgICApLCAvLyBlbmQgb2YgQWRvcm5tZW50XG4gICAgICAgICAgICAvLyB9LFxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHRoaXMuJChnby5QYW5lbCwgJ1ZlcnRpY2FsJywge1xuICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgYWxpZ25tZW50Rm9jdXM6IG5ldyBnby5TcG90KDAsIDAuNSwgOCwgMCksXG4gICAgICB9KSxcbiAgICAgIHRoaXMuJChnby5QYW5lbCwgJ1ZlcnRpY2FsJywge1xuICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuUmlnaHQsXG4gICAgICAgIGFsaWdubWVudEZvY3VzOiBuZXcgZ28uU3BvdCgxLCAwLjUsIC04LCAwKSxcbiAgICAgIH0pLFxuICAgICAgLy8gZm91ciBuYW1lZCBwb3J0cywgb25lIG9uIGVhY2ggc2lkZTpcblxuICAgICAgdGhpcy5tYWtlUG9ydCgnVCcsIGdvLlNwb3QuVG9wLCBnby5TcG90LlRvcFNpZGUsIGZhbHNlLCB0cnVlKSxcbiAgICAgIHRoaXMubWFrZVBvcnQoJ0wnLCBnby5TcG90LkxlZnQsIGdvLlNwb3QuTGVmdFNpZGUsIGZhbHNlLCB0cnVlKSxcbiAgICAgIHRoaXMubWFrZVBvcnQoJ1InLCBnby5TcG90LlJpZ2h0LCBnby5TcG90LlJpZ2h0U2lkZSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgdGhpcy5tYWtlUG9ydCgnQicsIGdvLlNwb3QuQm90dG9tLCBnby5TcG90LkJvdHRvbVNpZGUsIHRydWUsIGZhbHNlKVxuICAgICk7XG4gICAgdGhpcy5teURpYWdyYW0ubm9kZVRlbXBsYXRlTWFwLnNldCh0aXRsZSwgbm9kZSk7XG4gIH1cblxuICBlZGl0VGV4dEdyb3VwWm9uZShlLCBidXR0b24pIHtcbiAgICBjb25zdCBub2RlR3JvdXAgPSBidXR0b24ucGFydC5hZG9ybmVkUGFydDtcbiAgICBjb25zdCBkaWFncmFtID0gbm9kZUdyb3VwLmRpYWdyYW07XG4gICAgZS5kaWFncmFtLmNvbW1hbmRIYW5kbGVyLmVkaXRUZXh0QmxvY2sobm9kZUdyb3VwLmZpbmRPYmplY3QoJ1RFWFRCTE9DSycpKTtcbiAgfVxuXG4gIGVkaXRUZXh0KGUsIGJ1dHRvbikge1xuICAgIGNvbnN0IG5vZGUgPSBidXR0b24ucGFydC5hZG9ybmVkUGFydDtcbiAgICBlLmRpYWdyYW0uY29tbWFuZEhhbmRsZXIuZWRpdFRleHRCbG9jayhub2RlLmZpbmRPYmplY3QoJ1RFWFRCTE9DSycpKTtcbiAgfVxuXG4gIGFzeW5jIGRyYWdOZXdOb2RlKGUsIGJ1dHRvbikge1xuICAgIGNvbnN0IHRvb2wgPSBlLmRpYWdyYW0udG9vbE1hbmFnZXIuZHJhZ2dpbmdUb29sO1xuXG4gICAgaWYgKHRvb2wuaXNCZXlvbmREcmFnU2l6ZSgpKSB7XG4gICAgICBjb25zdCBkYXRhID0gYnV0dG9uLl9kcmFnRGF0YTtcbiAgICAgIGlmICghZGF0YSkgcmV0dXJuO1xuICAgICAgZS5kaWFncmFtLnN0YXJ0VHJhbnNhY3Rpb24oJ2J1dHRvbiBkcmFnJyk7IC8vIHNlZSBkb0RlYWN0aXZhdGUsIGJlbG93XG5cbiAgICAgIGNvbnN0IGZyb21ub2RlID0gYnV0dG9uLnBhcnQuYWRvcm5lZFBhcnQ7XG4gICAgICBjb25zdCBkaWFncmFtID0gZnJvbW5vZGUuZGlhZ3JhbTtcbiAgICAgIGNvbnN0IG1vZGVsID0gZGlhZ3JhbS5tb2RlbDtcbiAgICAgIGNvbnN0IG5vZGVkYXRhID0ge1xuICAgICAgICAuLi5tb2RlbC5jb3B5Tm9kZURhdGEoZGF0YSksXG4gICAgICAgIGtleTogVXRpbHNTZXJ2aWNlLmdlbmVyYXRlVVVJRCgpLFxuICAgICAgfTtcbiAgICAgIG1vZGVsLmFkZE5vZGVEYXRhKG5vZGVkYXRhKTtcbiAgICAgIGNvbnN0IG5ld25vZGUgPSBkaWFncmFtLmZpbmROb2RlRm9yRGF0YShub2RlZGF0YSk7XG4gICAgICBjb25zdCBsaW5rZGF0YSA9IG1vZGVsLmNvcHlMaW5rRGF0YSh7fSk7XG4gICAgICBtb2RlbC5zZXRGcm9tS2V5Rm9yTGlua0RhdGEoXG4gICAgICAgIGxpbmtkYXRhLFxuICAgICAgICBtb2RlbC5nZXRLZXlGb3JOb2RlRGF0YShmcm9tbm9kZS5kYXRhKVxuICAgICAgKTtcbiAgICAgIG1vZGVsLnNldFRvS2V5Rm9yTGlua0RhdGEoXG4gICAgICAgIGxpbmtkYXRhLFxuICAgICAgICBtb2RlbC5nZXRLZXlGb3JOb2RlRGF0YShuZXdub2RlLmRhdGEpXG4gICAgICApO1xuICAgICAgbW9kZWwuYWRkTGlua0RhdGEobGlua2RhdGEpO1xuICAgICAgZGlhZ3JhbS5zZWxlY3QobmV3bm9kZSk7XG4gICAgICAvLyAgIHRoaXMuY3JlYXRlTm9kZUFuZExpbmsoZGF0YSwgYnV0dG9uLnBhcnQuYWRvcm5lZFBhcnQpO1xuXG4gICAgICBuZXdub2RlLmxvY2F0aW9uID0gZS5kaWFncmFtLmxhc3RJbnB1dC5kb2N1bWVudFBvaW50O1xuICAgICAgLy8gZG9uJ3QgY29tbWl0VHJhbnNhY3Rpb24gaGVyZSwgYnV0IGluIHRvb2wuZG9EZWFjdGl2YXRlLCBhZnRlciBkcmFnIG9wZXJhdGlvbiBmaW5pc2hlZFxuICAgICAgLy8gc2V0IHRvb2wuY3VycmVudFBhcnQgdG8gYSBzZWxlY3RlZCBtb3ZhYmxlIFBhcnQgYW5kIHRoZW4gYWN0aXZhdGUgdGhlIERyYWdnaW5nVG9vbFxuICAgICAgdG9vbC5jdXJyZW50UGFydCA9IG5ld25vZGU7XG4gICAgICBlLmRpYWdyYW0uY3VycmVudFRvb2wgPSB0b29sO1xuICAgICAgdG9vbC5kb0FjdGl2YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgYWRkSXRlbU9uR3JvdXBab25lKGUsIGJ1dHRvbikge1xuICAgIGNvbnN0IGRhdGEgPSBidXR0b24uX2RyYWdEYXRhO1xuICAgIGlmICghZGF0YSkgcmV0dXJuO1xuICAgIGUuZGlhZ3JhbS5zdGFydFRyYW5zYWN0aW9uKCdBZGQgSXRlbSBPbiBHcm91cCBab25lJyk7XG4gICAgY29uc3QgZnJvbW5vZGUgPSBidXR0b24ucGFydC5hZG9ybmVkUGFydDtcbiAgICBjb25zdCBkcmFnRGF0YSA9IGJ1dHRvbi5fZHJhZ0RhdGE7XG4gICAgY29uc3QgZGlhZ3JhbSA9IGZyb21ub2RlLmRpYWdyYW07XG4gICAgY29uc3QgbW9kZWwgPSBkaWFncmFtLm1vZGVsO1xuICAgIGNvbnN0IG5vZGVkYXRhID0gbW9kZWwuY29weU5vZGVEYXRhKGRyYWdEYXRhKTtcbiAgICBtb2RlbC5hZGROb2RlRGF0YSh7XG4gICAgICAuLi5ub2RlZGF0YSxcbiAgICAgIHR5cGU6ICdTdWJTeXN0ZW0nLFxuICAgICAgbmFtZTogJ1tUaXRsZS4uLl0nLFxuICAgICAgbmFtZUl0ZW06ICdbTmFtZS4uLl0nLFxuICAgICAgZ3JvdXA6IGZyb21ub2RlPy5vYj8ua2V5LFxuICAgIH0pO1xuICAgIGUuZGlhZ3JhbS5jb21taXRUcmFuc2FjdGlvbignQWRkIEl0ZW0gT24gR3JvdXAgWm9uZScpO1xuICAgIC8vIGNvbnN0IG5ld25vZGUgPSBkaWFncmFtLmZpbmROb2RlRm9yRGF0YShub2RlZGF0YSk7XG4gICAgLy8gY29uc3QgbGlua2RhdGEgPSBtb2RlbC5jb3B5TGlua0RhdGEoe30pO1xuICAgIC8vIG1vZGVsLnNldEZyb21LZXlGb3JMaW5rRGF0YShsaW5rZGF0YSwgbW9kZWwuZ2V0S2V5Rm9yTm9kZURhdGEoZnJvbW5vZGUuZGF0YSkpO1xuICAgIC8vIG1vZGVsLnNldFRvS2V5Rm9yTGlua0RhdGEobGlua2RhdGEsIG1vZGVsLmdldEtleUZvck5vZGVEYXRhKG5ld25vZGUuZGF0YSkpO1xuICAgIC8vIG1vZGVsLmFkZExpbmtEYXRhKGxpbmtkYXRhKTtcbiAgICAvLyBkaWFncmFtLnNlbGVjdChuZXdub2RlKTtcblxuICAgIC8vIG5ld25vZGUubG9jYXRpb24gPSBuZXcgZ28uUG9pbnQoZnJvbW5vZGUubG9jYXRpb24ueCArIDIwMCwgZnJvbW5vZGUubG9jYXRpb24ueSk7XG4gICAgLy8gZS5kaWFncmFtLmNvbW1pdFRyYW5zYWN0aW9uKCdDcmVhdGUgTm9kZSBhbmQgTGluaycpO1xuICB9XG5cbiAgZ2VuZXJhdGVBY3Rpb25Hcm91cChhY3Rpb25zOiBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlNbXSkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiB0aGlzLiQoXG4gICAgICAnQnV0dG9uJyxcbiAgICAgIHtcbiAgICAgICAgY2xpY2s6IGZ1bmN0aW9uIChlLCBvYmopIHtcbiAgICAgICAgICBzZWxmLm9wZW5BY3Rpb25NZW51KCk7XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRBY3Rpb25zID0gXy5maWx0ZXIoXG4gICAgICAgICAgICBvYmoucGFydD8uWydvYiddPy5hY3Rpb25zID8/IGFjdGlvbnMsXG4gICAgICAgICAgICAoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIC8vIEZpbHRlciBJbnNpZ2h0IGJ1dHRvblxuICAgICAgICAgICAgICBpZiAoYWN0aW9uID09PSBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuSU5TSUdIVCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIW9iai5wYXJ0Py5bJ29iJ10/LmlkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBhY3Rpb24gPT09IEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5SRU5BTUUgJiZcbiAgICAgICAgICAgICAgICBvYmoucGFydD8uWydvYiddPy50eXBlICE9PVxuICAgICAgICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlRFWFRfTk9ERSAmJlxuICAgICAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5UWVBFX0NPTVBPTkVOVF9XQVRFUj8uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICBvYmoucGFydD8uWydvYiddPy5zeXN0ZW1UeXBlXG4gICAgICAgICAgICAgICAgKSAmJlxuICAgICAgICAgICAgICAgIG9iai5wYXJ0Py5bJ29iJ10/LnRvcG9sb2d5VHlwZSAhPT1cbiAgICAgICAgICAgICAgICAgIEFUT19FQ09NUE9ORU5UX1BMQU5UX1RZUEUuV0FURVIgJiZcbiAgICAgICAgICAgICAgICBvYmoucGFydD8uWydvYiddPy50b3BvbG9neVR5cGUgIT09XG4gICAgICAgICAgICAgICAgICBBVE9fRUNPTVBPTkVOVF9QTEFOVF9UWVBFLldBVEVSX1BMQU5UX0NFTExcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBhY3Rpb24gPT09IEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5PVVRGTE9XICYmXG4gICAgICAgICAgICAgICAgc2VsZi5wbGFudFNhdHVzID09PSBBVE9fRVBsYW50VHlwZS5CQVNJQ19QTEFOVCAmJlxuICAgICAgICAgICAgICAgIG9iai5wYXJ0Py5kYXRhPy50eXBlID09PVxuICAgICAgICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlRFWFRfTk9ERVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKS5tYXAoKGUpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgQVRPX0VDT01QT05FTlRfUExBTlRfVFlQRS5TVEVBTSA9PT1cbiAgICAgICAgICAgICAgICBvYmoucGFydD8uWydvYiddPy50b3BvbG9neVR5cGUgJiZcbiAgICAgICAgICAgICAgZSA9PT0gQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLklOU0lHSFRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm4gQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLkRBVEFfTUFQUElORztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZSA9PT0gQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLkZMT1dfREVUQUlMUyAmJlxuICAgICAgICAgICAgICBvYmo/LnBhcnQ/Llsnb2InXT8uc3lzdGVtVHlwZSA9PT1cbiAgICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9UWVBFUy5DT09MSU5HX1RPV0VSXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5GTE9XX0RFVEFJTFNfQU5EX1dJWkFSRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHNlbGYuYWN0aW9ucyA9IGZpbHRlcmVkQWN0aW9ucy5tYXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgbGV0IG9uQ2xpY2tGbiA9ICgpID0+IHt9O1xuICAgICAgICAgICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgICAgICAgICAgY2FzZSBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuSU5TSUdIVDpcbiAgICAgICAgICAgICAgY2FzZSBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREFUQV9NQVBQSU5HOlxuICAgICAgICAgICAgICAgIG9uQ2xpY2tGbiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHNlbGYub25PcGVuSW5zaWdodE1hcHBpbmcuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIG5vZGU6IG9iai5wYXJ0LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREVUQUlMUzpcbiAgICAgICAgICAgICAgY2FzZSBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuRkxPV19ERVRBSUxTOlxuICAgICAgICAgICAgICBjYXNlIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5GTE9XX0RFVEFJTFNfQU5EX1dJWkFSRDpcbiAgICAgICAgICAgICAgICBvbkNsaWNrRm4gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBzZWxmLm9uT3BlbkRldGFpbC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZTogb2JqLnBhcnQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5PTkxZX0RFVEFJTFM6XG4gICAgICAgICAgICAgICAgb25DbGlja0ZuID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgc2VsZi5vbk9wZW5EZXRhaWwuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIG5vZGU6IG9iai5wYXJ0LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuQVNTRVRfUEFSQU1FVEVSUzpcbiAgICAgICAgICAgICAgICBvbkNsaWNrRm4gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBzZWxmLm9uT3BlbkFzc2V0UGFyYW1ldGVyLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBub2RlOiBvYmoucGFydCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLlJFTkFNRTpcbiAgICAgICAgICAgICAgICBvbkNsaWNrRm4gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIG9iai5wYXJ0Py5kYXRhPy50eXBlID09PVxuICAgICAgICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuVEVYVF9OT0RFXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5vblJlbmFtZS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBlPy5bJ1dyJ10/LnggLSA1MCxcbiAgICAgICAgICAgICAgICAgICAgICB0b3A6IGU/LlsnV3InXT8ueSxcbiAgICAgICAgICAgICAgICAgICAgICAuLi5vYmoucGFydD8uZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIExheW91dFNlcnZpY2Uuc2V0VG9vbFRpcENvbXBvbmVudERhdGFTdGF0aWMoe1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgY29tcG9uZW50OiBSZW5hbWVCb3hDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgbGVmdDogZT8uWydXciddPy54IC0gNTAsXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgdG9wOiBlPy5bJ1dyJ10/LnksXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgLi4ub2JqLnBhcnQ/LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAvLyB9KTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZWRpdFRleHQoZSwgb2JqKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5PVVRGTE9XOlxuICAgICAgICAgICAgICAgIG9uQ2xpY2tGbiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHNlbGYuY2xpY2tOZXdOb2RlKFxuICAgICAgICAgICAgICAgICAgICBlLFxuICAgICAgICAgICAgICAgICAgICBfLm1lcmdlKG9iaiwge1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbk1vdmU6IHNlbGYuZHJhZ05ld05vZGUsIC8vIGRlZmluZWQgYmVsb3csIHRvIHN1cHBvcnQgZHJhZ2dpbmcgZnJvbSB0aGUgYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgX2RyYWdEYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi57XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5URVhUX05PREUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5BQ1RJT05fUklHSFRfTUVOVV9HUk9VUC5EQVRBX0JPWFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XyR7bW9tZW50KCkudmFsdWVPZigpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuQkxVRSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5zZWxmLnNldFByb0ZPck5ld05vZGUoc2VsZiksXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREVMRVRFOlxuICAgICAgICAgICAgICAgIG9uQ2xpY2tGbiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHNlbGYuZGVsZXRlTm9kZShlKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5DSEFOR0VfSUNPTjpcbiAgICAgICAgICAgICAgICBvbkNsaWNrRm4gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBzZWxmLm9uT3BlbkNoYW5nZUljb24uZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIG5vZGU6IG9iai5wYXJ0LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLkF0b0RlZmF1bHRHb2pzRWRpdG9yLkFDVElPTlNbYWN0aW9uXSxcbiAgICAgICAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgIG9uQ2xpY2tGbigpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgJ0J1dHRvbkJvcmRlci5zdHJva2VXaWR0aCc6IDAsXG4gICAgICAgICdCdXR0b25Cb3JkZXIuZmlsbCc6ICd3aGl0ZScsXG4gICAgICB9LFxuICAgICAgLy8gbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnaXNOb3REcmFnTmV3Tm9kZScsICh4KSA9PiAheCksXG4gICAgICAvLyBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICdpc05vdERlbGV0ZScsICh4KSA9PiAheCksXG4gICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICdpc05vdEFjdGlvbicsICh4KSA9PiAheCksXG4gICAgICB0aGlzLiQoZ28uVGV4dEJsb2NrLCB7XG4gICAgICAgIG1hcmdpbjogNCxcbiAgICAgICAgdGV4dDogJ1xcdWU0ODknLFxuICAgICAgICBmb250OiAnMjBweCBcIkZvbnQgQXdlc29tZSA2IFByb1wiJyxcbiAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzZXRQcm9GT3JOZXdOb2RlKHNlbGYpIHtcbiAgICBpZiAoc2VsZi5wbGFudFNhdHVzID09PSBBVE9fRVBsYW50VHlwZS5CQVNJQ19QTEFOVCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbW92YWJsZTogZmFsc2UsXG4gICAgICAgIGlzTm90QWxsb3dDb25uZWN0OiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgYXN5bmMgY2xpY2tOZXdOb2RlKGUsIGJ1dHRvbikge1xuICAgIGNvbnN0IGRhdGEgPSBidXR0b24uX2RyYWdEYXRhO1xuICAgIGlmICghZGF0YSkgcmV0dXJuO1xuICAgIGUuZGlhZ3JhbS5zdGFydFRyYW5zYWN0aW9uKCdDcmVhdGUgTm9kZSBhbmQgTGluaycpO1xuICAgIGNvbnN0IGZyb21ub2RlID0gYnV0dG9uLnBhcnQuYWRvcm5lZFBhcnQ7XG5cbiAgICAvLyB0aGlzLmNyZWF0ZU5vZGVBbmRMaW5rKGJ1dHRvbi5fZHJhZ0RhdGEsIGZyb21ub2RlKTtcbiAgICBjb25zdCBkcmFnRGF0YSA9IGJ1dHRvbi5fZHJhZ0RhdGE7XG4gICAgY29uc3QgZGlhZ3JhbSA9IGZyb21ub2RlLmRpYWdyYW07XG4gICAgY29uc3QgbW9kZWwgPSBkaWFncmFtLm1vZGVsO1xuICAgIGNvbnN0IG5vZGVkYXRhID0ge1xuICAgICAgLi4ubW9kZWwuY29weU5vZGVEYXRhKGRyYWdEYXRhKSxcbiAgICAgIGtleTogVXRpbHNTZXJ2aWNlLmdlbmVyYXRlVVVJRCgpLFxuICAgIH07XG4gICAgbW9kZWwuYWRkTm9kZURhdGEoe1xuICAgICAgLi4ubm9kZWRhdGEsXG4gICAgICBpc0VkaXRhYmxlOiB0cnVlLFxuICAgICAgc2hvcnRlbmVkTnVtYmVyOiAwLFxuICAgICAgaXNGb3JtYXQ6IGZhbHNlLFxuICAgICAgZGF0YUNvbGxlY3Rpb25NZXRob2Q6IEF0b0dvanNFZGl0b3JNb2RlbC5EQVRBX0NPTExFQ1RJT05fTUVUSE9ELk1BTlVBTCxcbiAgICAgIGNvbG9yOlxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuQ09MT1JfQ09MTEVDVElPTl9NRVRIT0RbXG4gICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkRBVEFfQ09MTEVDVElPTl9NRVRIT0QuTUFOVUFMXG4gICAgICAgIF0uY29sb3IsXG4gICAgICBncm91cDogZnJvbW5vZGU/Lm9iPy5ncm91cCxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0pO1xuICAgIGNvbnN0IG5ld25vZGUgPSBkaWFncmFtLmZpbmROb2RlRm9yRGF0YShub2RlZGF0YSk7XG5cbiAgICBjb25zdCBsaW5rZGF0YSA9IG1vZGVsLmNvcHlMaW5rRGF0YSh7fSk7XG4gICAgbW9kZWwuc2V0RnJvbUtleUZvckxpbmtEYXRhKFxuICAgICAgbGlua2RhdGEsXG4gICAgICBtb2RlbC5nZXRLZXlGb3JOb2RlRGF0YShmcm9tbm9kZS5kYXRhKVxuICAgICk7XG4gICAgbW9kZWwuc2V0VG9LZXlGb3JMaW5rRGF0YShsaW5rZGF0YSwgbW9kZWwuZ2V0S2V5Rm9yTm9kZURhdGEobmV3bm9kZS5kYXRhKSk7XG4gICAgbW9kZWwuYWRkTGlua0RhdGEobGlua2RhdGEpO1xuICAgIGRpYWdyYW0uc2VsZWN0KG5ld25vZGUpO1xuICAgIGlmIChub2RlZGF0YT8ubW92YWJsZSAhPT0gdW5kZWZpbmVkICYmIG5vZGVkYXRhPy5tb3ZhYmxlICE9PSBudWxsKSB7XG4gICAgICBuZXdub2RlLm1vdmFibGUgPSBub2RlZGF0YT8ubW92YWJsZTtcbiAgICB9XG5cbiAgICBuZXdub2RlLmxvY2F0aW9uID0gbmV3IGdvLlBvaW50KFxuICAgICAgZnJvbW5vZGUubG9jYXRpb24ueCArIDE2MCxcbiAgICAgIGZyb21ub2RlLmxvY2F0aW9uLnkgK1xuICAgICAgICB0aGlzLmZpbmRMb2NZRnJvbW5vZGUoZnJvbW5vZGUpICogQXRvRGVmYXVsdEdvanNFZGl0b3IuRElTVEFOQ0VfMl9PVVRQVVRcbiAgICApO1xuICAgIGUuZGlhZ3JhbS5jb21taXRUcmFuc2FjdGlvbignQ3JlYXRlIE5vZGUgYW5kIExpbmsnKTtcbiAgfVxuXG4gIGZpbmRMb2NZRnJvbW5vZGUoZnJvbW5vZGUpIHtcbiAgICAvLyBGaW5kIGxvY2F0aW9uIGF1dG8gcmlnaHRcbiAgICBjb25zdCBsb2NZRnJvbW5vZGUgPSBmcm9tbm9kZS5kYXRhPy5sb2M/LnNwbGl0KCcgJyk/LlsxXTtcbiAgICBjb25zdCBsb2NZQWxyZWFkeUV4aXN0OiBhbnkgPSBbXTtcbiAgICBmcm9tbm9kZS5maW5kTGlua3NPdXRPZigpLmVhY2goZnVuY3Rpb24gKGxpbmspIHtcbiAgICAgIGNvbnN0IHRhcmdldE5vZGUgPSBsaW5rLnRvTm9kZTtcbiAgICAgIGlmICh0YXJnZXROb2RlKSB7XG4gICAgICAgIGxvY1lBbHJlYWR5RXhpc3QucHVzaChcbiAgICAgICAgICB0YXJnZXROb2RlLmRhdGE/LmxvYz8uc3BsaXQoJyAnKT8uWzFdIC0gbG9jWUZyb21ub2RlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgaSA9IDA7XG4gICAgd2hpbGUgKHRoaXMuaXNFbXB0eVlMb2MobG9jWUFscmVhZHlFeGlzdCwgaSkgPT09IG51bGwgJiYgaSA8IDEwMCkge1xuICAgICAgaSsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pc0VtcHR5WUxvYyhsb2NZQWxyZWFkeUV4aXN0LCBpKTtcbiAgfVxuXG4gIGlzRW1wdHlZTG9jKGxvY1lBbHJlYWR5RXhpc3QsIGkpIHtcbiAgICBpZiAoXG4gICAgICAhXy5zb21lKFxuICAgICAgICBsb2NZQWxyZWFkeUV4aXN0LFxuICAgICAgICAoeCkgPT5cbiAgICAgICAgICB4IDxcbiAgICAgICAgICAgIGkgKiBBdG9EZWZhdWx0R29qc0VkaXRvci5ESVNUQU5DRV8yX09VVFBVVCArXG4gICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkRJU1RBTkNFXzJfT1VUUFVUIC8gMiAmJlxuICAgICAgICAgIHggPlxuICAgICAgICAgICAgaSAqIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkRJU1RBTkNFXzJfT1VUUFVUIC1cbiAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRElTVEFOQ0VfMl9PVVRQVVQgLyAyXG4gICAgICApXG4gICAgKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIV8uc29tZShcbiAgICAgICAgbG9jWUFscmVhZHlFeGlzdCxcbiAgICAgICAgKHgpID0+XG4gICAgICAgICAgeCA8XG4gICAgICAgICAgICAtaSAqIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkRJU1RBTkNFXzJfT1VUUFVUICtcbiAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRElTVEFOQ0VfMl9PVVRQVVQgLyAyICYmXG4gICAgICAgICAgeCA+XG4gICAgICAgICAgICAtaSAqIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkRJU1RBTkNFXzJfT1VUUFVUIC1cbiAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRElTVEFOQ0VfMl9PVVRQVVQgLyAyXG4gICAgICApXG4gICAgKSB7XG4gICAgICByZXR1cm4gLWk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY3JlYXRlTmV3Tm9kZShuZXdub2RlKSB7XG4gICAgdGhpcy5hZGRUZW1wbGF0ZShuZXdub2RlKTtcbiAgICB0aGlzLm15RGlhZ3JhbS5zdGFydFRyYW5zYWN0aW9uKCdhZGQgZ3JvdXAgbm9kZScpO1xuICAgIHRoaXMubXlEaWFncmFtLm1vZGVsLmFkZE5vZGVEYXRhKG5ld25vZGUpO1xuICAgIHRoaXMubXlEaWFncmFtLmNvbW1pdFRyYW5zYWN0aW9uKCdhZGQgZ3JvdXAgbm9kZScpO1xuICB9XG5cbiAgZGVsZXRlTm9kZShlKSB7XG4gICAgZS5kaWFncmFtLnN0YXJ0VHJhbnNhY3Rpb24oJ0RlbGV0ZSBncm91cCBub2RlJyk7XG4gICAgZS5kaWFncmFtLnJlbW92ZVBhcnRzKGUuZGlhZ3JhbS5zZWxlY3Rpb24pO1xuICAgIGUuZGlhZ3JhbS5jb21taXRUcmFuc2FjdGlvbignRGVsZXRlIGdyb3VwIG5vZGUnKTtcbiAgfVxuXG4gIGRlbGV0ZU5vZGVPbkRpYWdyYW0oZSkge1xuICAgIGUuc3RhcnRUcmFuc2FjdGlvbignRGVsZXRlIGdyb3VwIG5vZGUnKTtcbiAgICBlLnJlbW92ZVBhcnRzKGUuc2VsZWN0aW9uKTtcbiAgICBlLmNvbW1pdFRyYW5zYWN0aW9uKCdEZWxldGUgZ3JvdXAgbm9kZScpO1xuICB9XG5cbiAgaW5zaWdodE5vZGUoZSkge31cblxuICBkcmF3TGluayhlLCBidXR0b24pIHtcbiAgICBjb25zdCBub2RlID0gYnV0dG9uLnBhcnQuYWRvcm5lZFBhcnQ7XG4gICAgY29uc3QgdG9vbCA9IGUuZGlhZ3JhbS50b29sTWFuYWdlci5saW5raW5nVG9vbDtcbiAgICB0b29sLnN0YXJ0T2JqZWN0ID0gbm9kZS5wb3J0O1xuICAgIGUuZGlhZ3JhbS5jdXJyZW50VG9vbCA9IHRvb2w7XG4gICAgdG9vbC5kb0FjdGl2YXRlKCk7XG4gIH1cblxuICBtYWtlUG9ydEdyb3VwKG5hbWUsIGFsaWduLCBzcG90LCBvdXRwdXQsIGlucHV0KSB7XG4gICAgY29uc3QgaG9yaXpvbnRhbCA9XG4gICAgICBhbGlnbi5lcXVhbHMoZ28uU3BvdC5Ub3ApIHx8IGFsaWduLmVxdWFscyhnby5TcG90LkJvdHRvbSk7XG4gICAgcmV0dXJuIHRoaXMuJChcbiAgICAgIGdvLlBhbmVsLFxuICAgICAgJ1RhYmxlJyxcbiAgICAgIHtcbiAgICAgICAgYmFja2dyb3VuZDogJyM5MTlDQTUnLFxuICAgICAgICB3aWR0aDogNDAsXG4gICAgICAgIGhlaWdodDogNDAsXG4gICAgICAgIGFsaWdubWVudDogYWxpZ24sXG4gICAgICAgIHN0cmV0Y2g6IGhvcml6b250YWxcbiAgICAgICAgICA/IGdvLkdyYXBoT2JqZWN0Lkhvcml6b250YWxcbiAgICAgICAgICA6IGdvLkdyYXBoT2JqZWN0LlZlcnRpY2FsLFxuICAgICAgICBwb3J0SWQ6IG5hbWUsXG4gICAgICAgIGZyb21TcG90OiBzcG90LFxuICAgICAgICBmcm9tTGlua2FibGU6IG91dHB1dCxcbiAgICAgICAgdG9TcG90OiBzcG90LFxuICAgICAgICB0b0xpbmthYmxlOiBpbnB1dCxcbiAgICAgICAgY3Vyc29yOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5ID8gJycgOiAncG9pbnRlcicsXG4gICAgICAgIGFsaWdubWVudEZvY3VzOiBnby5TcG90LkNlbnRlciwgLy8gdOG6rXAgdHJ1bmcgdsOgbyB0cnVuZyB0w6JtIGPhu6dhIFBhbmVsXG4gICAgICAgIC8vIG1vdXNlRW50ZXI6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgLy8gICAgID8gbnVsbFxuICAgICAgICAvLyAgICAgOiAoZSwgcGFuZWwpID0+IHtcbiAgICAgICAgLy8gICAgICAgICAgIGNvbnN0IHRleHRCbG9jayA9IChwYW5lbCBhcyBhbnkpPy5maW5kT2JqZWN0KCd0ZXh0QmxvY2snKSBhcyBnby5UZXh0QmxvY2sgfCBudWxsO1xuICAgICAgICAvLyAgICAgICAgICAgaWYgKHRleHRCbG9jaykge1xuICAgICAgICAvLyAgICAgICAgICAgICAgIC8vICYmIG91dHB1dFxuICAgICAgICAvLyAgICAgICAgICAgICAgIHRleHRCbG9jay52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgLy8gICAgICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgY2FzZSAnQic6XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgIGNhc2UgJ1InOiB7XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICBwYW5lbC5iYWNrZ3JvdW5kID0gJ3JnYigyNDMgMTQ0IDE3MSknO1xuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgY2FzZSAnVCc6XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgIGNhc2UgJ0wnOiB7XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICBwYW5lbC5iYWNrZ3JvdW5kID0gJ3JnYigxMDMsMTUxLDIwNyknO1xuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgcGFuZWwuYmFja2dyb3VuZCA9ICdyZ2IoMjQzIDE0NCAxNzEpJztcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgfSxcblxuICAgICAgICAvLyBtb3VzZUxlYXZlOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5XG4gICAgICAgIC8vICAgICA/IG51bGxcbiAgICAgICAgLy8gICAgIDogKGUsIHBhbmVsKSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgICBjb25zdCB0ZXh0QmxvY2sgPSAocGFuZWwgYXMgYW55KS5maW5kT2JqZWN0KCd0ZXh0QmxvY2snKSBhcyBnby5UZXh0QmxvY2sgfCBudWxsO1xuICAgICAgICAvLyAgICAgICAgICAgaWYgKHRleHRCbG9jaykge1xuICAgICAgICAvLyAgICAgICAgICAgICAgIHRleHRCbG9jay52aXNpYmxlID0gZmFsc2U7IC8vIOG6qG4gVGV4dEJsb2NrIGtoaSBy4budaSBraOG7j2kgUGFuZWxcbiAgICAgICAgLy8gICAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgICAgIHBhbmVsLmJhY2tncm91bmQgPSAndHJhbnNwYXJlbnQnO1xuICAgICAgICAvLyAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnRWxsaXBzZScsIHtcbiAgICAgICAgZmlsbDogJ3doaXRlJywgLy8gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgY2lyY2xlXG4gICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICBzdHJva2U6ICcjOTE5Q0E1JywgLy8gQm9yZGVyIGNvbG9yIG9mIHRoZSBjaXJjbGVcbiAgICAgICAgd2lkdGg6IDQwLCAvLyBNYXRjaCB0aGUgcGFuZWwncyB3aWR0aFxuICAgICAgICBoZWlnaHQ6IDQwLCAvLyBNYXRjaCB0aGUgcGFuZWwncyBoZWlnaHRcbiAgICAgIH0pXG5cbiAgICAgIC8vIHRoaXMuJChcbiAgICAgIC8vICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAvLyAgICAge1xuICAgICAgLy8gICAgICAgICBuYW1lOiAndGV4dEJsb2NrJyxcbiAgICAgIC8vICAgICAgICAgbWFyZ2luOiA0LFxuICAgICAgLy8gICAgICAgICB0ZXh0OiAnXFx1ZjBkYScsIC8vIE3DoyBVbmljb2RlIHTGsMahbmcg4bupbmcgduG7m2kgZmEtY2FyZXQtbGVmdFxuICAgICAgLy8gICAgICAgICBmb250OiAnOTAwIDEycHggXCJGb250IEF3ZXNvbWUgNiBQcm9cIicsXG4gICAgICAvLyAgICAgICAgIHN0cm9rZTogJ3doaXRlJywgLy8gxJDhurd0IG3DoHUgY2jhu68gdGjDoG5oIG3DoHUgdHLhuq9uZ1xuICAgICAgLy8gICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgIC8vICAgICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJywgKF8pID0+IHtcbiAgICAgIC8vICAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAvLyAgICAgICAgICAgICBjYXNlICdUJzpcbiAgICAgIC8vICAgICAgICAgICAgIGNhc2UgJ0InOiB7XG4gICAgICAvLyAgICAgICAgICAgICAgICAgcmV0dXJuICdcXHVmMGQ3JztcbiAgICAgIC8vICAgICAgICAgICAgIH1cbiAgICAgIC8vICAgICAgICAgICAgIGNhc2UgJ0wnOlxuICAgICAgLy8gICAgICAgICAgICAgY2FzZSAnUic6IHtcbiAgICAgIC8vICAgICAgICAgICAgICAgICByZXR1cm4gJ1xcdWYwZGEnO1xuICAgICAgLy8gICAgICAgICAgICAgfVxuICAgICAgLy8gICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgLy8gICAgICAgICAgICAgICAgIHJldHVybiAnXFx1ZjBkNyc7XG4gICAgICAvLyAgICAgICAgICAgICB9XG4gICAgICAvLyAgICAgICAgIH1cbiAgICAgIC8vICAgICB9KSxcbiAgICAgIC8vICksXG4gICAgKTtcbiAgfVxuXG4gIG1ha2VQb3J0KG5hbWUsIGFsaWduLCBzcG90LCBvdXRwdXQsIGlucHV0KSB7XG4gICAgLy8gaWYgKHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHkpIHtcbiAgICAvLyAgICAgcmV0dXJuIHt9O1xuICAgIC8vIH1cbiAgICBjb25zdCBob3Jpem9udGFsID1cbiAgICAgIGFsaWduLmVxdWFscyhnby5TcG90LlRvcCkgfHwgYWxpZ24uZXF1YWxzKGdvLlNwb3QuQm90dG9tKTtcbiAgICAvLyBjb25zdCB2ZXJ0aWNhbCA9IGFsaWduLmVxdWFscyhnby5TcG90LkxlZnQpIHx8IGFsaWduLmVxdWFscyhnby5TcG90LlJpZ2h0KTtcbiAgICAvLyB0aGUgcG9ydCBpcyBiYXNpY2FsbHkganVzdCBhIHRyYW5zcGFyZW50IHJlY3RhbmdsZSB0aGF0IHN0cmV0Y2hlcyBhbG9uZyB0aGUgc2lkZSBvZiB0aGUgbm9kZSxcbiAgICAvLyBhbmQgYmVjb21lcyBjb2xvcmVkIHdoZW4gdGhlIG1vdXNlIHBhc3NlcyBvdmVyIGl0XG4gICAgcmV0dXJuIHRoaXMuJChcbiAgICAgIGdvLlBhbmVsLFxuICAgICAgJ1RhYmxlJyxcbiAgICAgIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgd2lkdGg6IGhvcml6b250YWwgPyBOYU4gOiA4LFxuICAgICAgICBoZWlnaHQ6ICFob3Jpem9udGFsID8gTmFOIDogOCxcbiAgICAgICAgYWxpZ25tZW50OiBhbGlnbixcbiAgICAgICAgc3RyZXRjaDogaG9yaXpvbnRhbFxuICAgICAgICAgID8gZ28uR3JhcGhPYmplY3QuSG9yaXpvbnRhbFxuICAgICAgICAgIDogZ28uR3JhcGhPYmplY3QuVmVydGljYWwsXG4gICAgICAgIHBvcnRJZDogbmFtZSxcbiAgICAgICAgZnJvbVNwb3Q6IHNwb3QsXG4gICAgICAgIGZyb21MaW5rYWJsZTogb3V0cHV0LFxuICAgICAgICB0b1Nwb3Q6IHNwb3QsXG4gICAgICAgIHRvTGlua2FibGU6IGlucHV0LFxuICAgICAgICBjdXJzb3I6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHkgPyAnJyA6ICdwb2ludGVyJyxcbiAgICAgICAgYWxpZ25tZW50Rm9jdXM6IGdvLlNwb3QuQ2VudGVyLCAvLyB04bqtcCB0cnVuZyB2w6BvIHRydW5nIHTDom0gY+G7p2EgUGFuZWxcbiAgICAgICAgbW91c2VFbnRlcjogdGhpcy5faW5pdGlhbE9wdGlvbnMuaXNSZWFkT25seVxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDogKGUsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHRleHRCbG9jayA9IChwYW5lbCBhcyBhbnkpPy5maW5kT2JqZWN0KFxuICAgICAgICAgICAgICAgICd0ZXh0QmxvY2snXG4gICAgICAgICAgICAgICkgYXMgZ28uVGV4dEJsb2NrIHwgbnVsbDtcbiAgICAgICAgICAgICAgaWYgKHRleHRCbG9jaykge1xuICAgICAgICAgICAgICAgIC8vICYmIG91dHB1dFxuICAgICAgICAgICAgICAgIHRleHRCbG9jay52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ0InOlxuICAgICAgICAgICAgICAgICAgY2FzZSAnUic6IHtcbiAgICAgICAgICAgICAgICAgICAgcGFuZWwuYmFja2dyb3VuZCA9ICdyZ2IoMjQzIDE0NCAxNzEpJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBjYXNlICdUJzpcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ0wnOiB7XG4gICAgICAgICAgICAgICAgICAgIHBhbmVsLmJhY2tncm91bmQgPSAncmdiKDEwMywxNTEsMjA3KSc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgICAgICBwYW5lbC5iYWNrZ3JvdW5kID0gJ3JnYigyNDMgMTQ0IDE3MSknO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICBtb3VzZUxlYXZlOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5XG4gICAgICAgICAgPyBudWxsXG4gICAgICAgICAgOiAoZSwgcGFuZWwpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdGV4dEJsb2NrID0gKHBhbmVsIGFzIGFueSkuZmluZE9iamVjdChcbiAgICAgICAgICAgICAgICAndGV4dEJsb2NrJ1xuICAgICAgICAgICAgICApIGFzIGdvLlRleHRCbG9jayB8IG51bGw7XG4gICAgICAgICAgICAgIGlmICh0ZXh0QmxvY2spIHtcbiAgICAgICAgICAgICAgICB0ZXh0QmxvY2sudmlzaWJsZSA9IGZhbHNlOyAvLyDhuqhuIFRleHRCbG9jayBraGkgcuG7nWkga2jhu49pIFBhbmVsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcGFuZWwuYmFja2dyb3VuZCA9ICd0cmFuc3BhcmVudCc7XG4gICAgICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnJywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgaWYgKGRhdGE/LmlzTm90QWxsb3dDb25uZWN0KSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhPy5zZWxlY3RhYmxlID09PSBmYWxzZSAmJiAhZGF0YT8uaXNBbGxvd0Nvbm5lY3QpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGE/LmZsb3dPZlBsYW50Q2VsbCkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGRhdGE/LmZsb3dPZlBsYW50Q2VsbCA9PT0gQVRPX0VOVU1fRkxPV19ESVJFQ1RJT04uSU5GTE9XICYmXG4gICAgICAgICAgICBuYW1lID09PSAnTCdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBkYXRhPy5mbG93T2ZQbGFudENlbGwgPT09IEFUT19FTlVNX0ZMT1dfRElSRUNUSU9OLk9VVEZMT1cgJiZcbiAgICAgICAgICAgIG5hbWUgPT09ICdSJ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICBjYXNlICdCJzpcbiAgICAgICAgICBjYXNlICdSJzoge1xuICAgICAgICAgICAgcmV0dXJuICFkYXRhPy5pc05vdFNlbGVjdE91dHB1dDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnVCc6XG4gICAgICAgICAgY2FzZSAnTCc6IHtcbiAgICAgICAgICAgIHJldHVybiAhZGF0YT8uaXNOb3RTZWxlY3RJbnB1dDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSxcblxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAndGV4dEJsb2NrJyxcbiAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgdGV4dDogJ1xcdWYwZGEnLCAvLyBNw6MgVW5pY29kZSB0xrDGoW5nIOG7qW5nIHbhu5tpIGZhLWNhcmV0LWxlZnRcbiAgICAgICAgICBmb250OiAnOTAwIDEycHggXCJGb250IEF3ZXNvbWUgNiBQcm9cIicsXG4gICAgICAgICAgc3Ryb2tlOiAnd2hpdGUnLCAvLyDEkOG6t3QgbcOgdSBjaOG7ryB0aMOgbmggbcOgdSB0cuG6r25nXG4gICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJ25hbWUnLCAoXykgPT4ge1xuICAgICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnVCc6XG4gICAgICAgICAgICBjYXNlICdCJzoge1xuICAgICAgICAgICAgICByZXR1cm4gJ1xcdWYwZDcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICBjYXNlICdSJzoge1xuICAgICAgICAgICAgICByZXR1cm4gJ1xcdWYwZGEnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICByZXR1cm4gJ1xcdWYwZDcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgLy8gcmV0dXJuIHRoaXMuJChnby5TaGFwZSwge1xuICAgIC8vICAgICBmaWxsOiAndHJhbnNwYXJlbnQnLCAvLyBjaGFuZ2VkIHRvIGEgY29sb3IgaW4gdGhlIG1vdXNlRW50ZXIgZXZlbnQgaGFuZGxlclxuICAgIC8vICAgICBzdHJva2VXaWR0aDogMCwgLy8gbm8gc3Ryb2tlXG4gICAgLy8gICAgIHdpZHRoOiBob3Jpem9udGFsID8gTmFOIDogOCwgLy8gaWYgbm90IHN0cmV0Y2hpbmcgaG9yaXpvbnRhbGx5LCBqdXN0IDggd2lkZVxuICAgIC8vICAgICBoZWlnaHQ6ICFob3Jpem9udGFsID8gTmFOIDogOCwgLy8gaWYgbm90IHN0cmV0Y2hpbmcgdmVydGljYWxseSwganVzdCA4IHRhbGxcbiAgICAvLyAgICAgYWxpZ25tZW50OiBhbGlnbiwgLy8gYWxpZ24gdGhlIHBvcnQgb24gdGhlIG1haW4gU2hhcGVcbiAgICAvLyAgICAgc3RyZXRjaDogaG9yaXpvbnRhbCA/IGdvLkdyYXBoT2JqZWN0Lkhvcml6b250YWwgOiBnby5HcmFwaE9iamVjdC5WZXJ0aWNhbCxcbiAgICAvLyAgICAgcG9ydElkOiBuYW1lLCAvLyBkZWNsYXJlIHRoaXMgb2JqZWN0IHRvIGJlIGEgXCJwb3J0XCJcbiAgICAvLyAgICAgZnJvbVNwb3Q6IHNwb3QsIC8vIGRlY2xhcmUgd2hlcmUgbGlua3MgbWF5IGNvbm5lY3QgYXQgdGhpcyBwb3J0XG4gICAgLy8gICAgIGZyb21MaW5rYWJsZTogb3V0cHV0LCAvLyBkZWNsYXJlIHdoZXRoZXIgdGhlIHVzZXIgbWF5IGRyYXcgbGlua3MgZnJvbSBoZXJlXG4gICAgLy8gICAgIHRvU3BvdDogc3BvdCwgLy8gZGVjbGFyZSB3aGVyZSBsaW5rcyBtYXkgY29ubmVjdCBhdCB0aGlzIHBvcnRcbiAgICAvLyAgICAgdG9MaW5rYWJsZTogaW5wdXQsIC8vIGRlY2xhcmUgd2hldGhlciB0aGUgdXNlciBtYXkgZHJhdyBsaW5rcyB0byBoZXJlXG4gICAgLy8gICAgIGN1cnNvcjogJ3BvaW50ZXInLCAvLyBzaG93IGEgZGlmZmVyZW50IGN1cnNvciB0byBpbmRpY2F0ZSBwb3RlbnRpYWwgbGluayBwb2ludFxuICAgIC8vICAgICBtb3VzZUVudGVyOiAoZSwgcG9ydCkgPT4ge1xuICAgIC8vICAgICAgICAgLy8gdGhlIFBPUlQgYXJndW1lbnQgd2lsbCBiZSB0aGlzIFNoYXBlXG4gICAgLy8gICAgICAgICBpZiAoIWUuZGlhZ3JhbS5pc1JlYWRPbmx5ICYmIG91dHB1dCkge1xuICAgIC8vICAgICAgICAgICAgIHBvcnQuZmlsbCA9ICdyZ2JhKDI1NSwwLDI1NSwwLjUpJ1xuICAgIC8vICAgICAgICAgfTtcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgbW91c2VMZWF2ZTogKGUsIHBvcnQpID0+IHtcbiAgICAvLyAgICAgICAgIHJldHVybiAocG9ydC5maWxsID0gJ3RyYW5zcGFyZW50Jyk7XG4gICAgLy8gICAgIH0sXG4gICAgLy8gfSk7XG4gIH1cblxuICBtYWtlR3JvdXBCYXNpY0NvbXBvbmVudChcbiAgICBpY29uLFxuICAgIHRpdGxlLFxuICAgIHNpemU6IHsgdzogbnVtYmVyOyBoOiBudW1iZXIgfSA9IHsgdzogODAsIGg6IDgwIH1cbiAgKSB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Hcm91cCxcbiAgICAgICdTcG90JyxcbiAgICAgIHtcbiAgICAgICAgLy8gbGF5b3V0OiB0aGlzLiQoZ28uTGF5ZXJlZERpZ3JhcGhMYXlvdXQsIHsgZGlyZWN0aW9uOiAwIH0pLFxuICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICBsYXlvdXQ6IHRoaXMuJChnby5MYXlvdXQpLFxuICAgICAgICBtb3ZhYmxlOiBmYWxzZSxcbiAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXG4gICAgICAgIC8vIG1vdmFibGU6IHRydWUsXG4gICAgICAgIC8vIHNlbGVjdGFibGU6IHRydWUsXG4gICAgICAgIGRyYWdDb21wdXRhdGlvbjogKG5vZGUsIHB0LCBncmlkcHQpID0+IHtcbiAgICAgICAgICBwdC54ID1cbiAgICAgICAgICAgIE1hdGgucm91bmQocHQueCAvIEF0b0dvanNFZGl0b3JNb2RlbC5CQVNJQ19HUklEX1NJWkVfV0lEVEgpICpcbiAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5CQVNJQ19HUklEX1NJWkVfV0lEVEg7XG4gICAgICAgICAgcHQueSA9XG4gICAgICAgICAgICBNYXRoLnJvdW5kKHB0LnkgLyBBdG9Hb2pzRWRpdG9yTW9kZWwuQkFTSUNfR1JJRF9TSVpFX0hFSUdIVCkgKlxuICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkJBU0lDX0dSSURfU0laRV9IRUlHSFQ7XG4gICAgICAgICAgcmV0dXJuIHB0O1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gbWluU2l6ZTogbmV3IGdvLlNpemUoQXRvR29qc0VkaXRvck1vZGVsLkJBU0lDX0dSSURfU0laRV9XSURUSCwgQXRvR29qc0VkaXRvck1vZGVsLkJBU0lDX0dSSURfU0laRV9IRUlHSFQpLFxuICAgICAgICBtaW5TaXplOiBuZXcgZ28uU2l6ZSgxLCAxKSxcbiAgICAgICAgbWF4U2l6ZTogbmV3IGdvLlNpemUoMSwgMSksXG4gICAgICAgIC8vIG1pblNpemU6IG5ldyBnby5TaXplKDEwMCwgMTAwKSxcbiAgICAgIH0sXG4gICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgIGdvLlBvaW50LnN0cmluZ2lmeVxuICAgICAgKSxcbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnUm91bmRlZFJlY3RhbmdsZScsIHtcbiAgICAgICAgICBmaWxsOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgIHN0cm9rZTogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAvLyBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5SRVNPTFVUSU9OX0JMVUUsXG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgLy8gc3Ryb2tlRGFzaEFycmF5OiBbNSwgNV0sXG4gICAgICAgIH0pXG4gICAgICAgIC8vIHRoaXMuJChnby5QbGFjZWhvbGRlciksXG4gICAgICAgIC8vIHRoaXMuJChnby5QbGFjZWhvbGRlciwgeyBwYWRkaW5nOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDApIH0pLFxuICAgICAgKVxuICAgICAgLy8gdGhpcy4kKGdvLlRleHRCbG9jaywgdGl0bGUsIHtcbiAgICAgIC8vICAgICByb3c6IDAsXG4gICAgICAvLyAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDApLFxuICAgICAgLy8gICAgIHN0cm9rZTogJyM0NDQ0NDQnLFxuICAgICAgLy8gICAgIGZvbnQ6ICdub3JtYWwgMTBwdCBBcmlhbCcsXG4gICAgICAvLyAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgIC8vICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuTGVmdCxcbiAgICAgIC8vIH0sXG4gICAgICAvLyBuZXcgZ28uQmluZGluZygndGV4dCcsICdrZXknKS5tYWtlVHdvV2F5KCksKSxcblxuICAgICAgLy8gdGhpcy4kKFxuICAgICAgLy8gICAgIGdvLlBhbmVsLFxuICAgICAgLy8gICAgICdUYWJsZScsXG4gICAgICAvLyAgICAge1xuICAgICAgLy8gICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuVG9wTGVmdCxcbiAgICAgIC8vICAgICAgICAgYWxpZ25tZW50Rm9jdXM6IG5ldyBnby5TcG90KDAsIDAsIC0xMCwgLTEwKSxcbiAgICAgIC8vICAgICAgICAgLy8gcGFkZGluZzogbmV3IGdvLk1hcmdpbigwLCAwLCA1MCwgMCksXG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICB0aGlzLiQoXG4gICAgICAvLyAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgLy8gICAgICAgICAnSG9yaXpvbnRhbCcsXG4gICAgICAvLyAgICAgICAgIHtcbiAgICAgIC8vICAgICAgICAgICAgIHJvdzogMCxcbiAgICAgIC8vICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgLy8gICAgICAgICB9LFxuICAgICAgLy8gICAgICAgICB0aGlzLiQoZ28uUGljdHVyZSwgaWNvbiwge1xuICAgICAgLy8gICAgICAgICAgICAgcm93OiAwLFxuICAgICAgLy8gICAgICAgICAgICAgLy8gYWxpZ25tZW50OiBnby5TcG90LkNlbnRlcixcbiAgICAgIC8vICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgLy8gICAgICAgICAgICAgbWF4U2l6ZTogbmV3IGdvLlNpemUoNDAsIDQwKSxcbiAgICAgIC8vICAgICAgICAgICAgIGltYWdlU3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVW5pZm9ybSxcbiAgICAgIC8vICAgICAgICAgfSksXG4gICAgICAvLyAgICAgICAgIHRoaXMuJChcbiAgICAgIC8vICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgLy8gICAgICAgICAgICAgJ1RhYmxlJyxcbiAgICAgIC8vICAgICAgICAgICAgIHtcbiAgICAgIC8vICAgICAgICAgICAgICAgICBjb2x1bW46IDEsXG4gICAgICAvLyAgICAgICAgICAgICAgICAgZGVmYXVsdEFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgLy8gICAgICAgICAgICAgICAgIGFsaWdubWVudEZvY3VzOiBuZXcgZ28uU3BvdCgwLCAwLCAwLCAyMCksXG4gICAgICAvLyAgICAgICAgICAgICB9LFxuICAgICAgLy8gICAgICAgICAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgdGl0bGUsIHtcbiAgICAgIC8vICAgICAgICAgICAgICAgICByb3c6IDAsXG4gICAgICAvLyAgICAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDMsIDMsIDUsIDEwKSxcbiAgICAgIC8vICAgICAgICAgICAgICAgICAvLyBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgTmFOKSxcbiAgICAgIC8vICAgICAgICAgICAgICAgICBzdHJva2U6ICcjNDQ0NDQ0JyxcbiAgICAgIC8vICAgICAgICAgICAgICAgICBmb250OiAnbm9ybWFsIDEwcHQgQXJpYWwnLFxuICAgICAgLy8gICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAvLyAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkxlZnQsXG4gICAgICAvLyAgICAgICAgICAgICB9KSxcbiAgICAgIC8vICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgIC8vICAgICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAvLyAgICAgICAgICAgICAgICAge1xuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICByb3c6IDEsXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCAzLCAzLCAxMCksXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAvLyBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgNDApLFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICBzdHJva2U6ICcjMDAwRDQyJyxcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2JvbGQgMTBwdCBBcmlhbCcsXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgIHdyYXA6IGdvLlRleHRCbG9jay5Ob25lLFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogZ28uVGV4dEJsb2NrLk92ZXJmbG93RWxsaXBzaXMsXG4gICAgICAvLyAgICAgICAgICAgICAgICAgfSxcbiAgICAgIC8vICAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpLFxuICAgICAgLy8gICAgICAgICAgICAgICAgIHtcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgLy8gZGVmaW5lIGEgdG9vbHRpcCBmb3IgZWFjaCBub2RlIHRoYXQgZGlzcGxheXMgdGhlIGNvbG9yIGFzIHRleHRcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgdG9vbFRpcDogdGhpcy4kKFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgJ1Rvb2xUaXAnLFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgeyBtYXJnaW46IDQgfSwgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpKSxcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgKSwgLy8gZW5kIG9mIEFkb3JubWVudFxuICAgICAgLy8gICAgICAgICAgICAgICAgIH0sXG4gICAgICAvLyAgICAgICAgICAgICApLFxuICAgICAgLy8gICAgICAgICApLFxuICAgICAgLy8gICAgICksXG4gICAgICAvLyApLFxuICAgICk7XG4gICAgdGhpcy5teURpYWdyYW0uZ3JvdXBUZW1wbGF0ZU1hcC5zZXQodGl0bGUsIG5vZGUpO1xuICB9XG5cbiAgbWFrZUdyb3VwVGVtcGxhdGUoXG4gICAgaWNvbixcbiAgICB0aXRsZSxcbiAgICBzaXplOiB7IHc6IG51bWJlcjsgaDogbnVtYmVyIH0gPSB7IHc6IDgwLCBoOiA4MCB9XG4gICkge1xuICAgIGxldCBub2RlID0gdGhpcy4kKFxuICAgICAgZ28uR3JvdXAsXG4gICAgICAnU3BvdCcsXG4gICAgICB7XG4gICAgICAgIC8vICAgICAvLyBsYXlvdXQ6IHRoaXMuJChnby5Gb3JjZURpcmVjdGVkTGF5b3V0ICwge1xuICAgICAgICAvLyAgICAgLy8gICAgIGRpcmVjdGlvbjogMCxcbiAgICAgICAgLy8gICAgIC8vICAgICBzZXRzUG9ydFNwb3RzOiBmYWxzZSxcbiAgICAgICAgLy8gICAgIC8vIH0pLFxuXG4gICAgICAgIC8vIGxheW91dDogdGhpcy4kKGdvLkxheWVyZWREaWdyYXBoTGF5b3V0LCB7XG4gICAgICAgIC8vICAgICBkaXJlY3Rpb246IDAsXG4gICAgICAgIC8vICAgICBzZXRzUG9ydFNwb3RzOiBmYWxzZSxcbiAgICAgICAgLy8gfSksXG5cbiAgICAgICAgbGF5b3V0OiB0aGlzLiQoZ28uTGF5b3V0KSxcblxuICAgICAgICAvLyAvLyAgICAgLy8gYWRvcm5tZW50IHdoZW4gYSBncm91cCBpcyBzZWxlY3RlZFxuICAgICAgICAvLyAvLyAgICAgLy8gc2VsZWN0aW9uQWRvcm5tZW50VGVtcGxhdGU6IHRoaXMuJChcbiAgICAgICAgLy8gLy8gICAgIC8vICAgICBnby5BZG9ybm1lbnQsXG4gICAgICAgIC8vIC8vICAgICAvLyAgICAgJ0F1dG8nLFxuICAgICAgICAvLyAvLyAgICAgLy8gICAgIHRoaXMuJChnby5TaGFwZSwgJ1JlY3RhbmdsZScsIHsgZmlsbDogbnVsbCwgc3Ryb2tlOiAnZG9kZ2VyYmx1ZScsIHN0cm9rZVdpZHRoOiA4IH0pLFxuICAgICAgICAvLyAvLyAgICAgLy8gICAgIHRoaXMuJChnby5QbGFjZWhvbGRlciksXG4gICAgICAgIC8vIC8vICAgICAvLyApLFxuICAgICAgfSxcblxuICAgICAgLy8gbmV3IGdvLkJpbmRpbmcoJ2xheW91dCcsICdsYXlvdXQnLCAoeCkgPT5cbiAgICAgIC8vIHtcbiAgICAgIC8vICAgICByZXR1cm4gdGhpcy4kKGdvLkZvcmNlRGlyZWN0ZWRMYXlvdXQgLCB7XG4gICAgICAvLyAgICAgICAgIGRpcmVjdGlvbjogMCxcbiAgICAgIC8vICAgICAgICAgc2V0c1BvcnRTcG90czogZmFsc2UsXG4gICAgICAvLyAgICAgfSk7XG4gICAgICAvLyB9XG4gICAgICAvLyApLFxuICAgICAge1xuICAgICAgICBtaW5TaXplOiBuZXcgZ28uU2l6ZSg0MDAsIDQwMCksXG4gICAgICB9LFxuICAgICAgLy8gbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KGdvLlBvaW50LnN0cmluZ2lmeSksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnQXV0bycsXG4gICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ1JvdW5kZWRSZWN0YW5nbGUnLCB7XG4gICAgICAgICAgZmlsbDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5SRVNPTFVUSU9OX0JMVUUsXG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgLy8gc3Ryb2tlRGFzaEFycmF5OiBbNSwgNV0sXG4gICAgICAgIH0pLFxuICAgICAgICB0aGlzLiQoZ28uUGxhY2Vob2xkZXIsIHsgcGFkZGluZzogbmV3IGdvLk1hcmdpbig2MCwgMjAsIDIwLCAyMCkgfSlcbiAgICAgICksXG5cbiAgICAgIC8vIHRoaXMuJChcbiAgICAgIC8vICAgICBnby5QYW5lbCxcbiAgICAgIC8vICAgICAnVGFibGUnLFxuICAgICAgLy8gICAgIHtcbiAgICAgIC8vICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LlRvcExlZnQsXG4gICAgICAvLyAgICAgICAgIGFsaWdubWVudEZvY3VzOiBuZXcgZ28uU3BvdCgwLCAwLCAtMTAsIC0xMCksXG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICB0aGlzLiQoZ28uVGV4dEJsb2NrLCB0aXRsZSwge1xuICAgICAgLy8gICAgICAgICByb3c6IDAsXG4gICAgICAvLyAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigzLCAzLCA1LCAzKSxcbiAgICAgIC8vICAgICAgICAgbWF4U2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53IC0gMjAsIE5hTiksXG4gICAgICAvLyAgICAgICAgIHN0cm9rZTogJyM0NDQ0NDQnLFxuICAgICAgLy8gICAgICAgICBmb250OiAnbm9ybWFsIDhwdCBBcmlhbCcsXG4gICAgICAvLyAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAvLyAgICAgfSksXG4gICAgICAvLyAgICAgdGhpcy4kKGdvLlBpY3R1cmUsIGljb24sIHtcbiAgICAgIC8vICAgICAgICAgcm93OiAxLFxuICAgICAgLy8gICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgLy8gICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZSg0MCwgNDApLFxuICAgICAgLy8gICAgICAgICBpbWFnZVN0cmV0Y2g6IGdvLkdyYXBoT2JqZWN0LlVuaWZvcm0sXG4gICAgICAvLyAgICAgfSksXG4gICAgICAvLyAgICAgdGhpcy4kKFxuICAgICAgLy8gICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAvLyAgICAgICAgIHtcbiAgICAgIC8vICAgICAgICAgICAgIHJvdzogMixcbiAgICAgIC8vICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigxMCwgMywgMywgMyksXG4gICAgICAvLyAgICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgIC8vICAgICAgICAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDIwLCA0MCksXG4gICAgICAvLyAgICAgICAgICAgICBzdHJva2U6ICcjMDAwRDQyJyxcbiAgICAgIC8vICAgICAgICAgICAgIGZvbnQ6ICdib2xkIDhwdCBBcmlhbCcsXG4gICAgICAvLyAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgLy8gICAgICAgICAgICAgd3JhcDogZ28uVGV4dEJsb2NrLk5vbmUsXG4gICAgICAvLyAgICAgICAgICAgICBvdmVyZmxvdzogZ28uVGV4dEJsb2NrLk92ZXJmbG93RWxsaXBzaXMsXG4gICAgICAvLyAgICAgICAgIH0sXG4gICAgICAvLyAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJ25hbWUnKS5tYWtlVHdvV2F5KCksXG4gICAgICAvLyAgICAgICAgIHtcbiAgICAgIC8vICAgICAgICAgICAgIC8vIGRlZmluZSBhIHRvb2x0aXAgZm9yIGVhY2ggbm9kZSB0aGF0IGRpc3BsYXlzIHRoZSBjb2xvciBhcyB0ZXh0XG4gICAgICAvLyAgICAgICAgICAgICB0b29sVGlwOiB0aGlzLiQoJ1Rvb2xUaXAnLCB0aGlzLiQoZ28uVGV4dEJsb2NrLCB7IG1hcmdpbjogNCB9LCBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykpKSwgLy8gZW5kIG9mIEFkb3JubWVudFxuICAgICAgLy8gICAgICAgICB9LFxuICAgICAgLy8gICAgICksXG4gICAgICAvLyAgICAgLy8gbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KGdvLlBvaW50LnN0cmluZ2lmeSksXG4gICAgICAvLyApLFxuXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnVGFibGUnLFxuICAgICAgICB7XG4gICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LlRvcExlZnQsXG4gICAgICAgICAgYWxpZ25tZW50Rm9jdXM6IG5ldyBnby5TcG90KDAsIDAsIC0xMCwgLTEwKSxcbiAgICAgICAgICAvLyBwYWRkaW5nOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDUwLCAwKSxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICdIb3Jpem9udGFsJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICByb3c6IDAsXG4gICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRoaXMuJChnby5QaWN0dXJlLCBpY29uLCB7XG4gICAgICAgICAgICByb3c6IDAsXG4gICAgICAgICAgICAvLyBhbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkxlZnQsXG4gICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZSg0MCwgNDApLFxuICAgICAgICAgICAgaW1hZ2VTdHJldGNoOiBnby5HcmFwaE9iamVjdC5Vbmlmb3JtLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29sdW1uOiAxLFxuICAgICAgICAgICAgICBkZWZhdWx0QWxpZ25tZW50OiBnby5TcG90LkxlZnQsXG4gICAgICAgICAgICAgIGFsaWdubWVudEZvY3VzOiBuZXcgZ28uU3BvdCgwLCAwLCAwLCAyMCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5URU1QTEFURV9EVVBMSUNBVEVbdGl0bGVdID8/IHRpdGxlLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcm93OiAwLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigzLCAzLCA1LCAxMCksXG4gICAgICAgICAgICAgICAgLy8gbWF4U2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53IC0gMjAsIE5hTiksXG4gICAgICAgICAgICAgICAgc3Ryb2tlOiAnIzQ0NDQ0NCcsXG4gICAgICAgICAgICAgICAgZm9udDogJ25vcm1hbCAxMHB0IEFyaWFsJyxcbiAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByb3c6IDEsXG4gICAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDAsIDMsIDMsIDEwKSxcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAvLyBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgNDApLFxuICAgICAgICAgICAgICAgIHN0cm9rZTogJyMwMDBENDInLFxuICAgICAgICAgICAgICAgIGZvbnQ6ICdib2xkIDEwcHQgQXJpYWwnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgd3JhcDogZ28uVGV4dEJsb2NrLk5vbmUsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGdvLlRleHRCbG9jay5PdmVyZmxvd0VsbGlwc2lzLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gZGVmaW5lIGEgdG9vbHRpcCBmb3IgZWFjaCBub2RlIHRoYXQgZGlzcGxheXMgdGhlIGNvbG9yIGFzIHRleHRcbiAgICAgICAgICAgICAgICB0b29sVGlwOiB0aGlzLiQoXG4gICAgICAgICAgICAgICAgICAnVG9vbFRpcCcsXG4gICAgICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAgICAgICAgeyBtYXJnaW46IDQgfSxcbiAgICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSwgLy8gZW5kIG9mIEFkb3JubWVudFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMubXlEaWFncmFtLmdyb3VwVGVtcGxhdGVNYXAuc2V0KHRpdGxlLCBub2RlKTtcbiAgfVxuXG4gIG1ha2VJbWFnZVRlbXBsYXRlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Ob2RlLFxuICAgICAgJ1Nwb3QnLFxuICAgICAge1xuICAgICAgICB6T3JkZXI6IDEsXG4gICAgICB9LFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnJywgKGRhdGEpID0+IHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBkYXRhPy52aXNpYmxlID09PSAnYm9vbGVhbicgPyBkYXRhPy52aXNpYmxlIDogdHJ1ZTtcbiAgICAgIH0pLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ3NlbGVjdGFibGUnLCAnc2VsZWN0YWJsZScpLFxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgJ0hvcml6b250YWwnLFxuICAgICAgICB7XG4gICAgICAgICAgcm93OiAwLFxuICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICB9LFxuICAgICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICAgICksXG4gICAgICAgIHRoaXMuJChcbiAgICAgICAgICBnby5QaWN0dXJlLFxuICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5JTUFHRV9ST19XQVRFUl9UUkVBVE1FTlRfUEFUSCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICAgICAgLy8gbWF4U2l6ZTogbmV3IGdvLlNpemUoNTAwLCA1MDApLFxuICAgICAgICAgICAgLy8gaW1hZ2VTdHJldGNoOiBnby5HcmFwaE9iamVjdC5Vbmlmb3JtLFxuICAgICAgICAgICAgLy8gbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDEzMCwgMCwgMCwgMCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygnbWFyZ2luJywgJ21hcmdpbicpLFxuICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd3aWR0aCcsICd3aWR0aCcpLFxuICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdoZWlnaHQnLCAnaGVpZ2h0JyksXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3NvdXJjZScsICcnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE/LnNvdXJjZVxuICAgICAgICAgICAgICA/IGRhdGE/LnNvdXJjZVxuICAgICAgICAgICAgICA6IEF0b0dvanNFZGl0b3JNb2RlbC5JTUFHRV9ST19XQVRFUl9UUkVBVE1FTlRfUEFUSDtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLm15RGlhZ3JhbS5ub2RlVGVtcGxhdGVNYXAuc2V0KFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLklNQUdFX1RFTVBMQVRFLFxuICAgICAgbm9kZVxuICAgICk7XG4gIH1cblxuICBtYWtlUGFyYW1UYWJsZSgpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBub2RlID0gdGhpcy4kKFxuICAgICAgZ28uUGFydCxcbiAgICAgICdWZXJ0aWNhbCcsXG4gICAgICAvLyB0aGlzLiQoZ28uU2hhcGUsIHsgZmlsbDogJyNFNkYwRjcnLCBzdHJva2U6ICcjMDA2M0E5Jywgc3Ryb2tlV2lkdGg6IDMsIGdlb21ldHJ5U3RyaW5nOiAnTSA1IDAgTCA5NSAwIFEgMTAwIDAgMTAwIDUgTCAxMDAgOTUgUSAxMDAgMTAwIDk1IDEwMCBMIDUgMTAwIFEgMCAxMDAgMCA5NSBMIDAgNSBRIDAgMCA1IDAnICB9KSxcbiAgICAgIHtcbiAgICAgICAgek9yZGVyOiAyLFxuICAgICAgICAvLyBwYWRkaW5nOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDIwMCksXG4gICAgICB9LFxuXG4gICAgICBuZXcgZ28uQmluZGluZygncGFkZGluZycsICdwYWRkaW5nJyksXG4gICAgICBuZXcgZ28uQmluZGluZygnc2VsZWN0YWJsZScsICdzZWxlY3RhYmxlJyksXG4gICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgIGdvLlBvaW50LnN0cmluZ2lmeVxuICAgICAgKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJycsIChkYXRhKSA9PiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgZGF0YT8udmlzaWJsZSA9PT0gJ2Jvb2xlYW4nID8gZGF0YT8udmlzaWJsZSA6IHRydWU7XG4gICAgICB9KSxcbiAgICAgIC8vIEhlYWRlclxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgJ0F1dG8nLFxuICAgICAgICB7XG4gICAgICAgICAgc3RyZXRjaDogZ28uR3JhcGhPYmplY3QuRmlsbCxcbiAgICAgICAgICBtaW5TaXplOiBuZXcgZ28uU2l6ZShOYU4sIDI3KSxcbiAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgMCwgLTYsIDApLFxuICAgICAgICB9LFxuICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICcnLCAoZGF0YSkgPT4gISFkYXRhPy50aXRsZSksXG4gICAgICAgIHRoaXMuJChcbiAgICAgICAgICBnby5TaGFwZSxcbiAgICAgICAgICAnUm91bmRlZFJlY3RhbmdsZScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGFyYW1ldGVyMTogNSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdmaWxsJywgJycsIChkYXRhKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YT8uY29sb3I7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3N0cm9rZScsICcnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE/LmNvbG9yO1xuICAgICAgICAgIH0pXG4gICAgICAgICksXG5cbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgNSksXG4gICAgICAgICAgICBzdHJldGNoOiBnby5HcmFwaE9iamVjdC5GaWxsLFxuICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkxlZnQsXG4gICAgICAgICAgICB2ZXJ0aWNhbEFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgICAgICBmb250OiAnYm9sZCAxNHB4IHNhbnMtc2VyaWYnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAndGl0bGUnKSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygnc3Ryb2tlJywgJycsIChkYXRhKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YT8udGl0bGVUZXh0Q29sb3IgfHwgJ3doaXRlJztcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5TaGFwZSxcbiAgICAgICAgJ1JlY3RhbmdsZScsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDAsIDAsIC02LCAwKSxcbiAgICAgICAgICBzdHJldGNoOiBnby5HcmFwaE9iamVjdC5GaWxsLFxuICAgICAgICB9LFxuICAgICAgICBuZXcgZ28uQmluZGluZygnZmlsbCcsICcnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgIHJldHVybiBkYXRhPy5jb2xvcjtcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBnby5CaW5kaW5nKCdzdHJva2UnLCAnJywgKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gZGF0YT8uY29sb3I7XG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICcnLCAoZGF0YSkgPT4gISFkYXRhPy50aXRsZSlcbiAgICAgICksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnQXV0bycsXG4gICAgICAgIHRoaXMuJChcbiAgICAgICAgICBnby5TaGFwZSxcbiAgICAgICAgICAnUm91bmRlZFJlY3RhbmdsZScsXG4gICAgICAgICAgeyBmaWxsOiAnI0U2RjBGNycsIHN0cm9rZTogJyMwMDYzQTknLCBzdHJva2VXaWR0aDogNCwgcGFyYW1ldGVyMTogNSB9LFxuICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdmaWxsJywgJ2JnQ29sb3InKSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygnc3Ryb2tlJywgJ2JvcmRlclRhYmxlJylcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICdUYWJsZScsXG4gICAgICAgICAgLy8gU2V0IGRlZmF1bHRzIGZvciBhbGwgcm93cyBhbmQgY29sdW1uczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwYWRkaW5nOiAxLjUsXG4gICAgICAgICAgICBkZWZhdWx0Um93U2VwYXJhdG9yU3Ryb2tlOiAnIzAwNjJBOScsXG4gICAgICAgICAgICBkZWZhdWx0Q29sdW1uU2VwYXJhdG9yU3Ryb2tlOiAnIzAwNjJBOScsXG4gICAgICAgICAgICBkZWZhdWx0U2VwYXJhdG9yUGFkZGluZzogbmV3IGdvLk1hcmdpbig1LCAyLCA1LCAyKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdkZWZhdWx0Um93U2VwYXJhdG9yU3Ryb2tlJywgJ2JvcmRlclRhYmxlJyksXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2RlZmF1bHRDb2x1bW5TZXBhcmF0b3JTdHJva2UnLCAnYm9yZGVyVGFibGUnKSxcbiAgICAgICAgICAvLyB0aGlzLiQoXG4gICAgICAgICAgLy8gICAgIGdvLlBhbmVsLFxuICAgICAgICAgIC8vICAgICAnVGFibGVSb3cnLFxuICAgICAgICAgIC8vICAgICB7IHJvdzogMCB9LFxuICAgICAgICAgIC8vICAgICB0aGlzLiQoZ28uVGV4dEJsb2NrLCAncm93IDEgY29sIDEnLCB7IGNvbHVtbjogMCwgbWFyZ2luOiAyIH0pLFxuICAgICAgICAgIC8vICAgICB0aGlzLiQoZ28uVGV4dEJsb2NrLCAncm93IDEgY29sIDInLCB7IGNvbHVtbjogMSwgbWFyZ2luOiAyIH0pLFxuICAgICAgICAgIC8vICksXG4gICAgICAgICAgLy8gdGhpcy4kKFxuICAgICAgICAgIC8vICAgICBnby5QYW5lbCxcbiAgICAgICAgICAvLyAgICAgJ1RhYmxlUm93JyxcbiAgICAgICAgICAvLyAgICAgeyByb3c6IDEgfSxcbiAgICAgICAgICAvLyAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgJ3JvdyAyIGNvbCAxJywgeyBjb2x1bW46IDAsIG1hcmdpbjogMiB9KSxcbiAgICAgICAgICAvLyAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgJ3JvdyAyIGNvbCAyJywgeyBjb2x1bW46IDEsIG1hcmdpbjogMiB9KSxcbiAgICAgICAgICAvLyApLFxuICAgICAgICAgIC8vIG5ldyBnby5CaW5kaW5nKCdpdGVtQXJyYXknLCAnZGF0YVRhYmxlJyksXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2l0ZW1BcnJheScsICcnLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgLy8gcmV0dXJuIGRhdGEuZGF0YVRhYmxlLmZpbHRlcigoeCkgPT4geD8udmlzaWJsZSAhPT0gZmFsc2UpO1xuICAgICAgICAgICAgY29uc3QgZGF0YVRhYmxlID0gZGF0YS5kYXRhVGFibGUuZmlsdGVyKFxuICAgICAgICAgICAgICAoeCkgPT4geD8udmlzaWJsZSAhPT0gZmFsc2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoZGF0YT8uaXNTaG93RGF0YUxvbmdpdHVkaW5hbCkge1xuICAgICAgICAgICAgICByZXR1cm4gXy5tYXAoZGF0YVRhYmxlLCAoeCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLngsIGlzT25seVNob3dQYXJhbU5hbWU6IHRydWUgfTtcbiAgICAgICAgICAgICAgfSk/LmNvbmNhdChcbiAgICAgICAgICAgICAgICBfLm1hcChkYXRhVGFibGUsICh4KSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi54LFxuICAgICAgICAgICAgICAgICAgICBpc09ubHlTaG93VmFsdWU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG1pblNpemVWYWx1ZTogbmV3IGdvLlNpemUoMTcwLCAxNSksXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGF0YVRhYmxlO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIGl0ZW1UZW1wbGF0ZTogdGhpcy4kKFxuICAgICAgICAgICAgLy8gICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgLy8gICAgIG5ldyBnby5CaW5kaW5nKCdyb3cnLCAnaW5kZXhSb3cnKSxcbiAgICAgICAgICAgIC8vICAgICAvLyBuZXcgZ28uQmluZGluZygnaGVpZ2h0JywgJ2hlaWdodCcpLFxuICAgICAgICAgICAgLy8gICAgIHRoaXMuJChcbiAgICAgICAgICAgIC8vICAgICAgICAgZ28uUGljdHVyZSxcbiAgICAgICAgICAgIC8vICAgICAgICAgQVJST1csXG4gICAgICAgICAgICAvLyAgICAgICAgIHtcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZSgyMCwgNDApLFxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgLy8gaW1hZ2VTdHJldGNoOiBnby5HcmFwaE9iamVjdC5Vbmlmb3JtLFxuICAgICAgICAgICAgLy8gICAgICAgICB9LFxuICAgICAgICAgICAgLy8gICAgICAgICBuZXcgZ28uQmluZGluZygnc291cmNlJywgJycsIChkYXRhLCBwYW5lbCkgPT4ge1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgLy8gcGFuZWwucGFydD8uZGF0YT8uaWRcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIHJldHVybiBkYXRhPy5pc0NyZWF0ZWQgPyBwYW5lbD8uJHAgOiBBUlJPV19HUkFZO1xuICAgICAgICAgICAgLy8gICAgICAgICB9KSxcbiAgICAgICAgICAgIC8vICAgICApLFxuICAgICAgICAgICAgLy8gKSxcbiAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZTogdGhpcy4kKFxuICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgJ1RhYmxlUm93JyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgIGNsaWNrOiAoZSwgb2JqOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgb2JqLnBhbmVsLnBhcnQuZGF0YT8uZGF0YVRhYmxlW29iai5yb3ddPy5pc0VkaXRhYmxlID09PVxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHNlbGYub25DbGlrUGFyYW1PZlRhYmxlLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICAuLi5vYmoucGFuZWwucGFydC5kYXRhPy5kYXRhVGFibGVbXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLnBhbmVsLnBhcnQuZGF0YT8uaXNTaG93RGF0YUxvbmdpdHVkaW5hbCA/IDAgOiBvYmoucm93XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY29sdW1uOiAwLFxuICAgICAgICAgICAgICAgICAgbWFyZ2luOiAyLFxuICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBnby5UZXh0QmxvY2suT3ZlcmZsb3dFbGxpcHNpcyxcbiAgICAgICAgICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICAgICAgICAgJ1Rvb2xUaXAnLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogNCxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJycsIChkYXRhLCBwYW5lbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE/Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJycsIChkYXRhLCBwYW5lbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE/Lm5hbWU7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ21heFNpemUnLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YT8ubWF4U2l6ZU5hbWVQYXJhbTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygnZGVzaXJlZFNpemUnLCAnJywgKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhPy5kZXNpcmVkU2l6ZU5hbWVQYXJhbTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICcnLCAoZGF0YSwgcGFuZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAhZGF0YT8uaXNPbmx5U2hvd1ZhbHVlO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgICAnVGFibGUnLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGNvbHVtbjogMSxcbiAgICAgICAgICAgICAgICAgIG1hcmdpbjogMixcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0U2VwYXJhdG9yUGFkZGluZzogbmV3IGdvLk1hcmdpbigwLCAwLCAwLCAwKSxcbiAgICAgICAgICAgICAgICAgIHN0cmV0Y2g6IGdvLkdyYXBoT2JqZWN0LkZpbGwsXG4gICAgICAgICAgICAgICAgICAvLyBtaW5TaXplOiBuZXcgZ28uU2l6ZSgxNzAsIDE1KSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJycsIChkYXRhLCBwYW5lbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuICFkYXRhPy5pc09ubHlTaG93UGFyYW1OYW1lO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdjb2x1bW4nLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YT8uaXNPbmx5U2hvd1ZhbHVlID8gMCA6IDE7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ21pblNpemUnLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YT8ubWluU2l6ZVZhbHVlID8/IG5ldyBnby5TaXplKDkwLCAxNCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ21heFNpemUnLCAnJywgKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhPy5tYXhTaXplVmFsdWU7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2Rlc2lyZWRTaXplJywgJycsIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YT8uZGVzaXJlZFNpemVWYWx1ZTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uOiAwLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDAsXG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogZ28uVGV4dEJsb2NrLk92ZXJmbG93RWxsaXBzaXMsXG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICB3cmFwOiBnby5UZXh0QmxvY2suTm9uZSxcbiAgICAgICAgICAgICAgICAgICAgbWF4U2l6ZTogbmV3IGdvLlNpemUoSW5maW5pdHksIE5hTiksXG4gICAgICAgICAgICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICAgICAgICAgICAnVG9vbFRpcCcsXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIXRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYCR7ZGF0YT8udGFnTmFtZSB8fCAnJ30gYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9JHtkYXRhPy52YWx1ZX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICcnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgISF0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8udGFnTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWRhdGE/LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhPy52YWx1ZTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3N0cm9rZScsICcnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuY29sb3I7XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdtYXhTaXplJywgJycsIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0YT8uaXNSZWFkT25seSAmJiAhdGhpcy5faW5pdGlhbE9wdGlvbnMuaXNSZWFkT25seSkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgZ28uU2l6ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE/Lm1heFNpemVWYWx1ZT8ud2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBkYXRhPy5tYXhTaXplVmFsdWU/LndpZHRoIC0gMTVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBOYU4sXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhPy5tYXhTaXplVmFsdWU/LmhlaWdodCA/PyBOYU5cbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhPy5tYXhTaXplVmFsdWU7XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdmb250JywgJycsIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhPy5mb250O1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgICAgIGdvLlBpY3R1cmUsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5SaWdodCxcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uOiAxLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgNSksXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogSUNPTlNfQkFTRTY0Wyd1ZjA0NCddLFxuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICAgICAgICAgICAnVG9vbFRpcCcsXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhPy50b29sVGlwQWN0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGF0YSkgPT4gISFkYXRhPy50b29sVGlwQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE0LFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgIWRhdGE/LmlzUmVhZE9ubHkgJiYgIXRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ29wYWNpdHknLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhPy5pc0VkaXRhYmxlID09PSBmYWxzZSA/IDAuNiA6IDE7XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMubXlEaWFncmFtLm5vZGVUZW1wbGF0ZU1hcC5zZXQoXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuUEFSQU1fVEFCTEUsXG4gICAgICBub2RlXG4gICAgKTtcbiAgfVxuXG4gIG1ha2VNYXNzQmFsYW5jZSgpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBub2RlID0gdGhpcy4kKFxuICAgICAgZ28uUGFydCxcbiAgICAgICdBdXRvJyxcbiAgICAgIHt9LFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgICksXG4gICAgICBuZXcgZ28uQmluZGluZygnc2VsZWN0YWJsZScsICdzZWxlY3RhYmxlJyksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnSG9yaXpvbnRhbCcsXG4gICAgICAgIC8vIFNldCBkZWZhdWx0cyBmb3IgYWxsIHJvd3MgYW5kIGNvbHVtbnM6XG4gICAgICAgIHtcbiAgICAgICAgICBwYWRkaW5nOiA0LFxuICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICdUb29sVGlwJyxcbiAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiA0LFxuICAgICAgICAgICAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKDQ1MCwgMzApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICd0b29sdGlwJylcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICAgIHZpc2libGU6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHksXG4gICAgICAgIH0sXG4gICAgICAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJ3Zpc2libGUnKSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgNSwgMCwgMCksXG4gICAgICAgICAgICB0ZXh0OiAnTWFzcyBCYWxhbmNlOicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygnZm9udCcsICdmb250JylcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5BTElaQVJJTixcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdmb250JywgJ2ZvbnQnKSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygnc3Ryb2tlJywgJ2NvbG9yVmFsdWUnKSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICcnLCAoZGF0YSwgcGFuZWwpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhPy52YWx1ZTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLm15RGlhZ3JhbS5ub2RlVGVtcGxhdGVNYXAuc2V0KFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLk1BU1NfQkFMQU5DRSxcbiAgICAgIG5vZGVcbiAgICApO1xuICB9XG5cbiAgbWFrZUdyb3VwUk9QbGFudFRlbXBsYXRlKFxuICAgIGljb24sXG4gICAgdGl0bGUsXG4gICAgc2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9ID0geyB3OiA4MCwgaDogODAgfVxuICApIHtcbiAgICBsZXQgbm9kZSA9IHRoaXMuJChcbiAgICAgIGdvLkdyb3VwLFxuICAgICAgJ1Nwb3QnLFxuICAgICAge1xuICAgICAgICBsYXlvdXQ6IHRoaXMuJChnby5MYXlvdXQpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gbWluU2l6ZTogbmV3IGdvLlNpemUoTmFOLCA2MDApLFxuICAgICAgfSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdzZWxlY3RhYmxlJywgJ3NlbGVjdGFibGUnKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdsb2NhdGlvbicsICdsb2MnLCBnby5Qb2ludC5wYXJzZSkubWFrZVR3b1dheShcbiAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICApLFxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgJ1RhYmxlJyxcblxuICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgJ0F1dG8nLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJvdzogMCxcbiAgICAgICAgICAgIHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aGlzLiQoZ28uU2hhcGUsICdSb3VuZGVkUmVjdGFuZ2xlJywge1xuICAgICAgICAgICAgbmFtZTogJ1NIQVBFX0tFWScsXG4gICAgICAgICAgICBmaWxsOiAnI0ZDRkNGRCcsXG4gICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5SRVNPTFVUSU9OX0JMVUUsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICAgIC8vIHN0cm9rZURhc2hBcnJheTogWzUsIDVdLFxuICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgdGhpcy4kKGdvLlBsYWNlaG9sZGVyLCB7IHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMTUsIDAsIDAsIDApIH0pXG4gICAgICAgICksXG4gICAgICAgIHRoaXMuJChcbiAgICAgICAgICBnby5QaWN0dXJlLFxuICAgICAgICAgIFJPX0xJTkVfRElSVFksXG4gICAgICAgICAge1xuICAgICAgICAgICAgcm93OiAxLFxuICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDgpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnJywgKHgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB4Py5pc1ZpZXdHZW5lcmFsICYmIHg/Lmhhc091dEZsb3cgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSxcblxuICAgICAgdGhpcy4kKGdvLlBhbmVsLCAnVGFibGUnLCB7XG4gICAgICAgIHdpZHRoOiAwLFxuICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgIGFsaWdubWVudDogbmV3IGdvLlNwb3QoMCwgMCwgMCwgMjE4KSxcbiAgICAgICAgYWxpZ25tZW50Rm9jdXM6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgLy8gc3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVmVydGljYWwsXG4gICAgICAgIHBvcnRJZDogJ0luZmxvdycsXG4gICAgICAgIGN1cnNvcjogdGhpcy5faW5pdGlhbE9wdGlvbnMuaXNSZWFkT25seSA/ICcnIDogJ3BvaW50ZXInLFxuICAgICAgICAvLyBhbGlnbm1lbnRGb2N1czogbmV3IGdvLlNwb3QoMCwgMCwgMCwgMTUwKSxcbiAgICAgICAgZnJvbVNwb3Q6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgdG9TcG90OiBnby5TcG90LkxlZnQsXG4gICAgICAgIGZyb21MaW5rYWJsZTogdHJ1ZSxcbiAgICAgICAgdG9MaW5rYWJsZTogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICAgdGhpcy4kKGdvLlBhbmVsLCAnVGFibGUnLCB7XG4gICAgICAgIHdpZHRoOiAwLFxuICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgIGFsaWdubWVudDogbmV3IGdvLlNwb3QoMCwgMCwgMTAyNSwgMzA1KSxcbiAgICAgICAgYWxpZ25tZW50Rm9jdXM6IGdvLlNwb3QuQm90dG9tLFxuICAgICAgICBwb3J0SWQ6ICdPdXRGbG93X0NsZWFuJyxcbiAgICAgICAgY3Vyc29yOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5ID8gJycgOiAncG9pbnRlcicsXG4gICAgICAgIGZyb21TcG90OiBnby5TcG90LkJvdHRvbSxcbiAgICAgICAgdG9TcG90OiBnby5TcG90LkJvdHRvbSxcbiAgICAgICAgZnJvbUxpbmthYmxlOiB0cnVlLFxuICAgICAgICB0b0xpbmthYmxlOiB0cnVlLFxuICAgICAgfSksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnVGFibGUnLFxuICAgICAgICB7XG4gICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgIC8vIGFsaWdubWVudDogbmV3IGdvLlNwb3QoMCwgMCwgNDgwLCA1MjUpLFxuICAgICAgICAgIC8vIGFsaWdubWVudDogbmV3IGdvLlNwb3QoMCwgMCwgNDc1LCA1NTIpLFxuICAgICAgICAgIGFsaWdubWVudEZvY3VzOiBnby5TcG90LkJvdHRvbSxcbiAgICAgICAgICBwb3J0SWQ6ICdPdXRGbG93X0RpcnR5JyxcbiAgICAgICAgICBjdXJzb3I6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHkgPyAnJyA6ICdwb2ludGVyJyxcbiAgICAgICAgICBmcm9tU3BvdDogZ28uU3BvdC5Cb3R0b20sXG4gICAgICAgICAgdG9TcG90OiBnby5TcG90LkJvdHRvbSxcbiAgICAgICAgICBmcm9tTGlua2FibGU6IHRydWUsXG4gICAgICAgICAgdG9MaW5rYWJsZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2FsaWdubWVudCcsICcnLCAoeCkgPT4ge1xuICAgICAgICAgIHJldHVybiB4Py5pc1ZpZXdHZW5lcmFsICYmIHg/Lmhhc091dEZsb3dcbiAgICAgICAgICAgID8gbmV3IGdvLlNwb3QoMCwgMCwgNTA1LCA2NjUpXG4gICAgICAgICAgICA6IG5ldyBnby5TcG90KDAsIDAsIDQ4MCwgNTI1KTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5teURpYWdyYW0uZ3JvdXBUZW1wbGF0ZU1hcC5zZXQodGl0bGUsIG5vZGUpO1xuICB9XG5cbiAgbWFrZUdyb3VwQm9pbGVyVGVtcGxhdGUoXG4gICAgaWNvbixcbiAgICB0aXRsZSxcbiAgICBzaXplOiB7IHc6IG51bWJlcjsgaDogbnVtYmVyIH0gPSB7IHc6IDgwLCBoOiA4MCB9XG4gICkge1xuICAgIGxldCBub2RlID0gdGhpcy4kKFxuICAgICAgZ28uR3JvdXAsXG4gICAgICAnU3BvdCcsXG4gICAgICB7XG4gICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gbWluU2l6ZTogbmV3IGdvLlNpemUoTmFOLCA2MDApLFxuICAgICAgfSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdzZWxlY3RhYmxlJywgJ3NlbGVjdGFibGUnKSxcbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAge1xuICAgICAgICAgIHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCksXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ1JvdW5kZWRSZWN0YW5nbGUnLCB7XG4gICAgICAgICAgbmFtZTogJ1NIQVBFX0tFWScsXG4gICAgICAgICAgZmlsbDogJyNGQ0ZDRkQnLFxuICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLlJFU09MVVRJT05fQkxVRSxcbiAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgfSksXG5cbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBsYWNlaG9sZGVyLFxuICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdsb2NhdGlvbicsICdsb2MnLCBnby5Qb2ludC5wYXJzZSkubWFrZVR3b1dheShcbiAgICAgICAgICAgIGdvLlBvaW50LnN0cmluZ2lmeVxuICAgICAgICAgICksXG4gICAgICAgICAgeyBwYWRkaW5nOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDApIH1cbiAgICAgICAgKVxuICAgICAgKSxcblxuICAgICAgdGhpcy4kKGdvLlBhbmVsLCAnU3BvdCcsIHtcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgYWxpZ25tZW50OiBuZXcgZ28uU3BvdCgwLCAwLjUsIDAsIDExMiksXG4gICAgICAgIGFsaWdubWVudEZvY3VzOiBnby5TcG90LkxlZnQsXG4gICAgICAgIHBvcnRJZDogJ0luZmxvdycsXG4gICAgICAgIGN1cnNvcjogdGhpcy5faW5pdGlhbE9wdGlvbnMuaXNSZWFkT25seSA/ICcnIDogJ3BvaW50ZXInLFxuICAgICAgICBmcm9tU3BvdDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICB0b1Nwb3Q6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgZnJvbUxpbmthYmxlOiB0cnVlLFxuICAgICAgICB0b0xpbmthYmxlOiB0cnVlLFxuICAgICAgfSksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnU3BvdCcsXG4gICAgICAgIHtcbiAgICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Ub3AsXG4gICAgICAgICAgYWxpZ25tZW50OiBuZXcgZ28uU3BvdCgxLCAxLCAtMjE1LCAwKSxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBpY3R1cmUsXG4gICAgICAgICAgT1VURkxPV19MSU5FX0RJUlRZLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMCxcbiAgICAgICAgICAgIGhlaWdodDogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICcnLCAoeCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHg/LmlzVmlld0dlbmVyYWwgJiYgeD8uaGFzT3V0RmxvdyA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICB0aGlzLiQoZ28uUGFuZWwsIHtcbiAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuQm90dG9tTGVmdCxcbiAgICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Ub3AsXG4gICAgICAgICAgcG9ydElkOiAnT3V0RmxvdycsXG4gICAgICAgICAgY3Vyc29yOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5ID8gJycgOiAncG9pbnRlcicsXG4gICAgICAgICAgZnJvbVNwb3Q6IGdvLlNwb3QuQm90dG9tLFxuICAgICAgICAgIGZyb21MaW5rYWJsZTogdHJ1ZSxcbiAgICAgICAgICB0b0xpbmthYmxlOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLm15RGlhZ3JhbS5ncm91cFRlbXBsYXRlTWFwLnNldCh0aXRsZSwgbm9kZSk7XG4gIH1cblxuICBtYWtlR3JvdXBDb29saW5nVG93ZXJUZW1wbGF0ZShcbiAgICBpY29uLFxuICAgIHRpdGxlLFxuICAgIHNpemU6IHsgdzogbnVtYmVyOyBoOiBudW1iZXIgfSA9IHsgdzogODAsIGg6IDgwIH1cbiAgKSB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Hcm91cCxcbiAgICAgICdTcG90JyxcbiAgICAgIHtcbiAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXG4gICAgICAgIGxheW91dDogdGhpcy4kKGdvLkxheW91dCksXG4gICAgICAgIHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMCwgMzAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdsb2NhdGlvbicsICdsb2MnLCBnby5Qb2ludC5wYXJzZSkubWFrZVR3b1dheShcbiAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICApLFxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgJ0F1dG8nLFxuICAgICAgICB7XG4gICAgICAgICAgcm93OiAwLFxuICAgICAgICAgIHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCksXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ1JvdW5kZWRSZWN0YW5nbGUnLCB7XG4gICAgICAgICAgbmFtZTogJ1NIQVBFX0tFWScsXG4gICAgICAgICAgZmlsbDogJyNGQ0ZDRkQnLFxuICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLlJFU09MVVRJT05fQkxVRSxcbiAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgdGhpcy4kKGdvLlBsYWNlaG9sZGVyLCB7IHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCkgfSlcbiAgICAgICksXG4gICAgICB0aGlzLiQoZ28uUGFuZWwsICdUYWJsZScsIHtcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgYWxpZ25tZW50OiBuZXcgZ28uU3BvdCgwLCAwLCAwLCA1MzMpLFxuICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Cb3R0b20sXG4gICAgICAgIHBvcnRJZDogJ0luZmxvdycsXG4gICAgICAgIGN1cnNvcjogdGhpcy5faW5pdGlhbE9wdGlvbnMuaXNSZWFkT25seSA/ICcnIDogJ3BvaW50ZXInLFxuICAgICAgICBmcm9tU3BvdDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICB0b1Nwb3Q6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgZnJvbUxpbmthYmxlOiB0cnVlLFxuICAgICAgICB0b0xpbmthYmxlOiB0cnVlLFxuICAgICAgfSksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnU3BvdCcsXG4gICAgICAgIHtcbiAgICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Ub3AsXG4gICAgICAgICAgYWxpZ25tZW50OiBuZXcgZ28uU3BvdCgwLjUsIDEsIDIzLCAwKSxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBpY3R1cmUsXG4gICAgICAgICAgT1VURkxPV19MSU5FX0RJUlRZLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMCxcbiAgICAgICAgICAgIGhlaWdodDogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICcnLCAoeCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHg/LmlzVmlld0dlbmVyYWwgJiYgeD8uaGFzT3V0RmxvdyA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICB0aGlzLiQoZ28uUGFuZWwsIHtcbiAgICAgICAgICBhbGlnbm1lbnQ6IG5ldyBnby5TcG90KDAsIDAsIDAsIDE4KSxcbiAgICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Ub3AsXG4gICAgICAgICAgcG9ydElkOiAnT3V0RmxvdycsXG4gICAgICAgICAgY3Vyc29yOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5ID8gJycgOiAncG9pbnRlcicsXG4gICAgICAgICAgZnJvbVNwb3Q6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICAgIHRvU3BvdDogZ28uU3BvdC5SaWdodCxcbiAgICAgICAgICBmcm9tTGlua2FibGU6IHRydWUsXG4gICAgICAgICAgdG9MaW5rYWJsZTogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5teURpYWdyYW0uZ3JvdXBUZW1wbGF0ZU1hcC5zZXQodGl0bGUsIG5vZGUpO1xuICB9XG5cbiAgbWFrZUdyb3VwSW1tZXJzZWRVRlRlbXBsYXRlKFxuICAgIGljb24sXG4gICAgdGl0bGUsXG4gICAgc2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9ID0geyB3OiA4MCwgaDogODAgfVxuICApIHtcbiAgICBsZXQgbm9kZSA9IHRoaXMuJChcbiAgICAgIGdvLkdyb3VwLFxuICAgICAgJ1Nwb3QnLFxuICAgICAge1xuICAgICAgICBsYXlvdXQ6IHRoaXMuJChnby5MYXlvdXQpLFxuICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIG1pblNpemU6IG5ldyBnby5TaXplKE5hTiwgNjAwKSxcbiAgICAgIH0sXG4gICAgICAvLyBuZXcgZ28uQmluZGluZygnc2VsZWN0YWJsZScsICcnLCAoeCkgPT4ge1xuICAgICAgLy8gICByZXR1cm4geD8uc2VsZWN0YWJsZTtcbiAgICAgIC8vIH0pLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgICksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnQXV0bycsXG4gICAgICAgIHtcbiAgICAgICAgICByb3c6IDAsXG4gICAgICAgICAgcGFkZGluZzogbmV3IGdvLk1hcmdpbigwLCAwLCAwLCAwKSxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnUm91bmRlZFJlY3RhbmdsZScsIHtcbiAgICAgICAgICBuYW1lOiAnU0hBUEVfS0VZJyxcbiAgICAgICAgICBmaWxsOiAnI0ZDRkNGRCcsXG4gICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuUkVTT0xVVElPTl9CTFVFLFxuICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgIHN0cm9rZURhc2hBcnJheTogWzUsIDVdLFxuICAgICAgICB9KSxcbiAgICAgICAgdGhpcy4kKGdvLlBsYWNlaG9sZGVyLCB7IHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCkgfSlcbiAgICAgICksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnVGFibGUnLFxuICAgICAgICB7XG4gICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgIGFsaWdubWVudDogbmV3IGdvLlNwb3QoMCwgMCwgMCwgMzIwKSxcbiAgICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Cb3R0b20sXG4gICAgICAgICAgcG9ydElkOiAnSW5mbG93JyxcbiAgICAgICAgICBjdXJzb3I6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHkgPyAnJyA6ICdwb2ludGVyJyxcbiAgICAgICAgICBmcm9tU3BvdDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICAgIHRvU3BvdDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICAgIGZyb21MaW5rYWJsZTogdHJ1ZSxcbiAgICAgICAgICB0b0xpbmthYmxlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBuZXcgZ28uQmluZGluZyhcbiAgICAgICAgICAnYWxpZ25tZW50JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAoeCkgPT4geD8uW0FUT19TUE9UX0xPQ0FUSU9OX1RZUEUuU1BPVF9JTkZMT1ddXG4gICAgICAgIClcbiAgICAgICksXG5cbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdUYWJsZScsXG4gICAgICAgIHtcbiAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgYWxpZ25tZW50OiBuZXcgZ28uU3BvdCgwLCAwLCAwLCAzMjApLFxuICAgICAgICAgIGFsaWdubWVudEZvY3VzOiBnby5TcG90LkJvdHRvbSxcbiAgICAgICAgICBwb3J0SWQ6ICdPdXRGbG93X0NsZWFuJyxcbiAgICAgICAgICBjdXJzb3I6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHkgPyAnJyA6ICdwb2ludGVyJyxcbiAgICAgICAgICBmcm9tU3BvdDogZ28uU3BvdC5SaWdodCxcbiAgICAgICAgICAvLyB0b1Nwb3Q6IGdvLlNwb3QuUmlnaHQsXG4gICAgICAgICAgZnJvbUxpbmthYmxlOiB0cnVlLFxuICAgICAgICAgIHRvTGlua2FibGU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG5ldyBnby5CaW5kaW5nKCdhbGlnbm1lbnQnLCAnJywgKHgpID0+IHtcbiAgICAgICAgICByZXR1cm4geD8uW0FUT19TUE9UX0xPQ0FUSU9OX1RZUEUuU1BPVF9PVVRGTE9XXTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5teURpYWdyYW0uZ3JvdXBUZW1wbGF0ZU1hcC5zZXQodGl0bGUsIG5vZGUpO1xuICB9XG5cbiAgLy8gbWFrZUdyb3VwSW1tZXJzZWRVRlRlbXBsYXRlKFxuICAvLyAgIGljb24sXG4gIC8vICAgdGl0bGUsXG4gIC8vICAgc2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9ID0geyB3OiA4MCwgaDogODAgfVxuICAvLyApIHtcbiAgLy8gICBsZXQgbm9kZSA9IHRoaXMuJChcbiAgLy8gICAgIGdvLkdyb3VwLFxuICAvLyAgICAgJ1Nwb3QnLFxuICAvLyAgICAge1xuICAvLyAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcbiAgLy8gICAgICAgbGF5b3V0OiB0aGlzLiQoZ28uTGF5b3V0KSxcbiAgLy8gICAgICAgcGFkZGluZzogbmV3IGdvLk1hcmdpbigwLCAzMCwgMCwgMCksXG4gIC8vICAgICB9LFxuICAvLyAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAvLyAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgLy8gICAgICksXG4gIC8vICAgICB0aGlzLiQoXG4gIC8vICAgICAgIGdvLlBhbmVsLFxuICAvLyAgICAgICAnQXV0bycsXG4gIC8vICAgICAgIHtcbiAgLy8gICAgICAgICByb3c6IDAsXG4gIC8vICAgICAgICAgcGFkZGluZzogbmV3IGdvLk1hcmdpbigwLCAwLCAwLCAwKSxcbiAgLy8gICAgICAgfSxcbiAgLy8gICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnUm91bmRlZFJlY3RhbmdsZScsIHtcbiAgLy8gICAgICAgICBuYW1lOiAnU0hBUEVfS0VZJyxcbiAgLy8gICAgICAgICBmaWxsOiAnI0ZDRkNGRCcsXG4gIC8vICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuUkVTT0xVVElPTl9CTFVFLFxuICAvLyAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAvLyAgICAgICAgIHN0cm9rZURhc2hBcnJheTogWzUsIDVdLFxuICAvLyAgICAgICB9KSxcblxuICAvLyAgICAgICB0aGlzLiQoZ28uUGxhY2Vob2xkZXIsIHsgcGFkZGluZzogbmV3IGdvLk1hcmdpbigwLCAwLCAwLCAwKSB9KVxuICAvLyAgICAgKSxcbiAgLy8gICAgIHRoaXMuJChnby5QYW5lbCwgJ1RhYmxlJywge1xuICAvLyAgICAgICB3aWR0aDogMCxcbiAgLy8gICAgICAgaGVpZ2h0OiAwLFxuICAvLyAgICAgICBhbGlnbm1lbnQ6IG5ldyBnby5TcG90KDAsIDAsIDAsIDM0MCksXG4gIC8vICAgICAgIGFsaWdubWVudEZvY3VzOiBnby5TcG90LkJvdHRvbSxcbiAgLy8gICAgICAgcG9ydElkOiAnSW5mbG93JyxcbiAgLy8gICAgICAgY3Vyc29yOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5ID8gJycgOiAncG9pbnRlcicsXG4gIC8vICAgICAgIGZyb21TcG90OiBnby5TcG90LkxlZnQsXG4gIC8vICAgICAgIHRvU3BvdDogZ28uU3BvdC5MZWZ0LFxuICAvLyAgICAgICBmcm9tTGlua2FibGU6IHRydWUsXG4gIC8vICAgICAgIHRvTGlua2FibGU6IHRydWUsXG4gIC8vICAgICB9KSxcbiAgLy8gICAgIHRoaXMuJChcbiAgLy8gICAgICAgZ28uUGFuZWwsXG4gIC8vICAgICAgICdTcG90JyxcbiAgLy8gICAgICAge1xuICAvLyAgICAgICAgIGFsaWdubWVudEZvY3VzOiBnby5TcG90LlRvcCxcbiAgLy8gICAgICAgICBhbGlnbm1lbnQ6IG5ldyBnby5TcG90KDAsIDAsIDAsIDApLFxuICAvLyAgICAgICB9LFxuICAvLyAgICAgICAvLyB0aGlzLiQoXG4gIC8vICAgICAgIC8vICAgZ28uUGljdHVyZSxcbiAgLy8gICAgICAgLy8gICBPVVRGTE9XX0xJTkVfRElSVFksXG4gIC8vICAgICAgIC8vICAge1xuICAvLyAgICAgICAvLyAgICAgd2lkdGg6IDEwLFxuICAvLyAgICAgICAvLyAgICAgaGVpZ2h0OiAyMCxcbiAgLy8gICAgICAgLy8gICB9LFxuICAvLyAgICAgICAvLyAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJycsICh4KSA9PiB7XG4gIC8vICAgICAgIC8vICAgICByZXR1cm4geD8uaXNWaWV3R2VuZXJhbCAmJiB4Py5oYXNPdXRGbG93ID8gdHJ1ZSA6IGZhbHNlO1xuICAvLyAgICAgICAvLyAgIH0pXG4gIC8vICAgICAgIC8vICksXG4gIC8vICAgICAgIHRoaXMuJChnby5QYW5lbCwge1xuICAvLyAgICAgICAgIGFsaWdubWVudDogbmV3IGdvLlNwb3QoMCwgMCwgMCwgLTUwKSxcbiAgLy8gICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Ub3AsXG4gIC8vICAgICAgICAgcG9ydElkOiAnT3V0RmxvdycsXG4gIC8vICAgICAgICAgY3Vyc29yOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5ID8gJycgOiAncG9pbnRlcicsXG4gIC8vICAgICAgICAgZnJvbVNwb3Q6IGdvLlNwb3QuQ2VudGVyLFxuICAvLyAgICAgICAgIHRvU3BvdDogZ28uU3BvdC5SaWdodCxcbiAgLy8gICAgICAgICBmcm9tTGlua2FibGU6IHRydWUsXG4gIC8vICAgICAgICAgdG9MaW5rYWJsZTogdHJ1ZSxcbiAgLy8gICAgICAgfSlcbiAgLy8gICAgIClcbiAgLy8gICApO1xuXG4gIC8vICAgdGhpcy5teURpYWdyYW0uZ3JvdXBUZW1wbGF0ZU1hcC5zZXQodGl0bGUsIG5vZGUpO1xuICAvLyB9XG5cbiAgZ3JvdXBQbGFudENlbGxUZW1wbGF0ZShcbiAgICBpY29uLFxuICAgIHRpdGxlLFxuICAgIHNpemU6IHsgdzogbnVtYmVyOyBoOiBudW1iZXIgfSA9IHsgdzogODAsIGg6IDgwIH1cbiAgKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgbGV0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Hcm91cCxcbiAgICAgICdTcG90JyxcbiAgICAgIHtcbiAgICAgICAgLy8gbGF5b3V0OiB0aGlzLiQoZ28uTGF5b3V0KSxcbiAgICAgICAgLy8gbGF5b3V0OiB0aGlzLiQoZ28uTGF5ZXJlZERpZ3JhcGhMYXlvdXQsIHsgZGlyZWN0aW9uOiAwIH0pLFxuICAgICAgICAvLyBpc1N1YkdyYXBoRXhwYW5kZWQ6IGZhbHNlLFxuICAgICAgICAvLyBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAvLyBsYXllck5hbWU6ICdGb3JlZ3JvdW5kJyxcbiAgICAgICAgLy8gd2FzU3ViR3JhcGhFeHBhbmRlZDogZmFsc2UsXG4gICAgICAgIG1vdmFibGU6IGZhbHNlLFxuICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcbiAgICAgICAgYXZvaWRhYmxlOiBmYWxzZSxcbiAgICAgICAgLy8gcmVzaXphYmxlOiB0cnVlLFxuXG4gICAgICAgIC8vIHJlc2l6YWJsZTogZmFsc2UsXG4gICAgICAgIC8vIHdpZHRoOiBkYXRhPy5vYj8ubWluV2l0aCA/PyA1MCxcbiAgICAgICAgLy8gaGVpZ2h0OiA1MDAsXG5cbiAgICAgICAgLy8gaXNTdWJHcmFwaEV4cGFuZGVkOiB0cnVlLCAvLyBlbnN1cmUgdGhlIGdyb3VwIGlzIGFsd2F5cyBleHBhbmRlZFxuICAgICAgICAvLyBjb21wdXRlc0JvdW5kc0FmdGVyRHJhZzogdHJ1ZSxcbiAgICAgICAgLy8gaGFuZGxlc0RyYWdEcm9wRm9yTWVtYmVyczogdHJ1ZSwgLy8gaGFuZGxlIGRyYWctYW5kLWRyb3AgZXZlbnRzIGZvciBpdHMgbWVtYmVyIG5vZGVzXG5cbiAgICAgICAgLy8gbWF4U2l6ZTogbmV3IGdvLlNpemUoNTAwLCA1MDApLFxuICAgICAgICAvLyBtaW5TaXplOiBuZXcgZ28uU2l6ZSg1MDAsIDUwMCksXG5cbiAgICAgICAgLy8gaXNTdWJHcmFwaEV4cGFuZGVkOiB0cnVlLFxuICAgICAgICAvLyBsYXllck5hbWU6IERJQUdSQU0uTEFZRVJTLkJBQ0tHUk9VTkQsXG5cbiAgICAgICAgLy8gbW91c2VEcm9wOiBmdW5jdGlvbiAoZSwgZ3JwKSB7XG4gICAgICAgIC8vICAgICAvLyBkaXNhbGxvdyBkcm9wcGluZyBhbnl0aGluZyBvbnRvIGFuIEFkb3JubWVudFxuICAgICAgICAvLyAgICAgaWYgKGdycCBpbnN0YW5jZW9mIGdvLkFkb3JubWVudCkgcmV0dXJuO1xuICAgICAgICAvLyB9LFxuICAgICAgICAvLyBkcmFnQ29tcHV0YXRpb246IGZ1bmN0aW9uIChub2RlLCBwdCwgZ3JpZFB0KSB7XG4gICAgICAgIC8vICAgICBsZXQgZ3JwID0gbm9kZS5jb250YWluaW5nR3JvdXA7XG4gICAgICAgIC8vICAgICBpZiAoZ3JwICE9PSBudWxsKSB7XG4gICAgICAgIC8vICAgICAgICAgbGV0IHJlY3QgPSBncnAuYWN0dWFsQm91bmRzO1xuICAgICAgICAvLyAgICAgICAgIHB0LnggPSBNYXRoLm1heChyZWN0LmxlZnQsIE1hdGgubWluKHB0LngsIHJlY3QucmlnaHQpKTtcbiAgICAgICAgLy8gICAgICAgICBwdC55ID0gTWF0aC5tYXgocmVjdC50b3AsIE1hdGgubWluKHB0LnksIHJlY3QuYm90dG9tKSk7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vICAgICByZXR1cm4gcHQ7XG4gICAgICAgIC8vIH0sXG5cbiAgICAgICAgLy8gZHJvcENvbXB1dGF0aW9uOiBmdW5jdGlvbiAobm9kZSwgcHQsIGdyaWRQdCkge1xuICAgICAgICAvLyAgICAgbGV0IGdycCA9IG5vZGUuY29udGFpbmluZ0dyb3VwO1xuICAgICAgICAvLyAgICAgaWYgKGdycCAhPT0gbnVsbCkge1xuICAgICAgICAvLyAgICAgICAgIGxldCByZWN0ID0gZ3JwLmFjdHVhbEJvdW5kcztcbiAgICAgICAgLy8gICAgICAgICBwdC54ID0gTWF0aC5tYXgocmVjdC5sZWZ0LCBNYXRoLm1pbihwdC54LCByZWN0LnJpZ2h0KSk7XG4gICAgICAgIC8vICAgICAgICAgcHQueSA9IE1hdGgubWF4KHJlY3QudG9wLCBNYXRoLm1pbihwdC55LCByZWN0LmJvdHRvbSkpO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgICAgcmV0dXJuIHB0O1xuICAgICAgICAvLyB9LFxuXG4gICAgICAgIC8vIGRyYWdDb21wdXRhdGlvbjogZnVuY3Rpb24gKHBhcnQsIHB0LCBncmlkcHQpIHtcbiAgICAgICAgLy8gICAgIC8vIEdldCB0aGUgY3VycmVudCBncm91cCdzIGFjdHVhbCBib3VuZHNcbiAgICAgICAgLy8gICAgIGNvbnN0IGdycCA9IHBhcnQuY29udGFpbmluZ0dyb3VwO1xuICAgICAgICAvLyAgICAgaWYgKGdycCkge1xuICAgICAgICAvLyAgICAgICAgIGNvbnN0IGJuZHMgPSBncnAuYWN0dWFsQm91bmRzO1xuICAgICAgICAvLyAgICAgICAgIGNvbnN0IGxvYyA9IHBhcnQubG9jYXRpb247XG5cbiAgICAgICAgLy8gICAgICAgICAvLyBTZWUgaWYgdGhlIHBhcnQncyBuZXcgbG9jYXRpb24gd291bGQgYmUgb3V0IG9mIGJvdW5kc1xuICAgICAgICAvLyAgICAgICAgIGNvbnN0IG5ld3ggPSBNYXRoLm1heChibmRzLngsIE1hdGgubWluKHB0LngsIGJuZHMucmlnaHQgLSBwYXJ0LmFjdHVhbEJvdW5kcy53aWR0aCAvIDIpKTtcbiAgICAgICAgLy8gICAgICAgICBjb25zdCBuZXd5ID0gTWF0aC5tYXgoYm5kcy55LCBNYXRoLm1pbihwdC55LCBibmRzLmJvdHRvbSAtIHBhcnQuYWN0dWFsQm91bmRzLmhlaWdodCAvIDIpKTtcblxuICAgICAgICAvLyAgICAgICAgIC8vIE1vZGlmeSB0aGUgcmVzdWx0IHBvaW50IHRvIGtlZXAgdGhlIFBhcnQgaW5zaWRlIHRoZSBHcm91cFxuICAgICAgICAvLyAgICAgICAgIHJldHVybiBuZXcgZ28uUG9pbnQobmV3eCwgbmV3eSk7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vICAgICByZXR1cm4gcHQ7XG4gICAgICAgIC8vIH0sXG4gICAgICAgIGNsaWNrOiAoZSwgb2JqOiBhbnkpID0+IHtcbiAgICAgICAgICBzZWxmLm15RGlhZ3JhbT8uY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIG1vdXNlRHJhZ0VudGVyOiAoZSwgIG9iaikgPT4ge1xuICAgICAgICAvLyB9LFxuICAgICAgICAvLyBtb3VzZURyb3A6IChlLCAgb2JqKSA9PiB7XG4gICAgICAgIC8vIH0sXG4gICAgICAgIC8vIG1vdXNlRW50ZXI6IChlLCBvYmopID0+IHtcbiAgICAgICAgLy8gICAgIGNvbnN0IG5vZGUgPSBvYmoucGFydDtcbiAgICAgICAgLy8gICAgIHNlbGYub25Ib3ZlckluZm9CdXR0b24uZW1pdCh7XG4gICAgICAgIC8vICAgICAgICAgbGVmdDogZT8uWydXciddPy54ICsgOCxcbiAgICAgICAgLy8gICAgICAgICB0b3A6IGU/LlsnV3InXT8ueSxcbiAgICAgICAgLy8gICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAvLyAgICAgfSk7XG4gICAgICAgIC8vICAgICAvLyBsZXQgc2hhcGUgPSAobm9kZSBhcyBhbnkpPy5maW5kT2JqZWN0KCdTSEFQRV9LRVknKTtcbiAgICAgICAgLy8gICAgIC8vIGlmIChzaGFwZSkge1xuICAgICAgICAvLyAgICAgLy8gICAgIHNoYXBlLnN0cm9rZSA9ICdibHVlJztcbiAgICAgICAgLy8gICAgIC8vIH1cbiAgICAgICAgLy8gfSxcbiAgICAgICAgLy8gbW91c2VMZWF2ZTogKGUsIG9iaikgPT4ge1xuICAgICAgICAvLyAgICAgc2VsZi5vbkhvdmVySW5mb0J1dHRvbi5lbWl0KG51bGwpO1xuICAgICAgICAvLyAgICAgLy8gbGV0IHNoYXBlID0gKG5vZGUgYXMgYW55KT8uZmluZE9iamVjdCgnU0hBUEVfS0VZJyk7XG4gICAgICAgIC8vICAgICAvLyBpZiAoc2hhcGUpIHtcbiAgICAgICAgLy8gICAgIC8vICAgICBzaGFwZS5zdHJva2UgPSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuV0hJVEU7XG4gICAgICAgIC8vICAgICAvLyB9XG4gICAgICAgIC8vIH0sXG4gICAgICB9LFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xheW91dCcsICcnLCBmdW5jdGlvbiAoZGF0YSwgbm9kZSkge1xuICAgICAgICAvLyByZXR1cm4gZGF0YT8ubGF5b3V0VmFsdWUgPT09IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0xBWU9VVF9FRElUT1IuQVVUT1xuICAgICAgICAvLyAgICAgPyBzZWxmLiQoZ28uTGF5ZXJlZERpZ3JhcGhMYXlvdXQsIHsgZGlyZWN0aW9uOiAwIH0pXG4gICAgICAgIC8vICAgICA6IG5vZGU/LmxheW91dDtcbiAgICAgICAgaWYgKGRhdGE/LmxheW91dFZhbHVlICE9PSBkYXRhPy5sYXlvdXRWYWx1ZUNsb25lKSB7XG4gICAgICAgICAgZGF0YS5sYXlvdXRWYWx1ZUNsb25lID0gZGF0YT8ubGF5b3V0VmFsdWU7XG4gICAgICAgICAgcmV0dXJuIGRhdGE/LmxheW91dFZhbHVlID09PVxuICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fTEFZT1VUX0VESVRPUi5BVVRPXG4gICAgICAgICAgICA/IHNlbGYuJChnby5MYXllcmVkRGlncmFwaExheW91dCwgeyBkaXJlY3Rpb246IDAgfSlcbiAgICAgICAgICAgIDogc2VsZi4kKGdvLkxheW91dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGU/LmxheW91dDtcbiAgICAgICAgfVxuICAgICAgICAvLyA6IHNlbGYuJChnby5MYXlvdXQpO1xuICAgICAgICAvLyByZXR1cm4gZGF0YT8ubGF5b3V0O1xuICAgICAgICAvLyByZXR1cm4gZGF0YT8ucHJldmlvdXNMYXlvdXQgfHwgc2VsZi4kKGdvLkxheWVyZWREaWdyYXBoTGF5b3V0LCB7IGRpcmVjdGlvbjogMCB9KTtcbiAgICAgICAgLy8gcmV0dXJuIHNlbGYuJChnby5MYXllcmVkRGlncmFwaExheW91dCwgeyBkaXJlY3Rpb246IDAgfSk7XG4gICAgICB9KSxcbiAgICAgIC8vIG5ldyBnby5CaW5kaW5nKCdncmlkJywgJ2dyaWQnKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdzZWxlY3RhYmxlJywgJ3NlbGVjdGFibGUnKSxcbiAgICAgIC8vIG5ldyBnby5CaW5kaW5nKCd3aWR0aCcsICcnLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgLy8gICAgIHJldHVybiBkYXRhPy5vYj8ubWluV2l0aCA/PyA1MDtcbiAgICAgIC8vIH0pLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ21pblNpemUnLCAnJywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBnby5TaXplKGRhdGE/Lm9iPy5taW5XaXRoID8/IDUwLCBkYXRhPy5vYj8ubWluSGVpZ2h0ID8/IDUwKTsgLy8gQ3VzdG9taXplIG1pblNpemUgYmFzZWQgb24gZGF0YVxuICAgICAgfSkub2ZPYmplY3QoKSxcbiAgICAgIC8vIG5ldyBnby5CaW5kaW5nKCd3aWR0aCcsICcnLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgLy8gICAgIHJldHVybiBkYXRhPy5vYj8ubWluV2l0aCA/PyA1MDsgLy8gQ3VzdG9taXplIG1pblNpemUgYmFzZWQgb24gZGF0YVxuICAgICAgLy8gfSkub2ZPYmplY3QoKSxcbiAgICAgIC8vIG5ldyBnby5CaW5kaW5nKCdoZWlnaHQnLCAnJywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIC8vICAgICByZXR1cm4gZGF0YT8ub2I/Lm1pbkhlaWdodCA/PyA1MDsgLy8gQ3VzdG9taXplIG1pblNpemUgYmFzZWQgb24gZGF0YVxuICAgICAgLy8gfSkub2ZPYmplY3QoKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdsb2NhdGlvbicsICdsb2MnLCBnby5Qb2ludC5wYXJzZSkubWFrZVR3b1dheShcbiAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICApLFxuICAgICAgLy8gbmV3IGdvLkJpbmRpbmcoJ2lzU3ViR3JhcGhFeHBhbmRlZCcsICdleHBhbmRlZCcpLm1ha2VUd29XYXkoKSxcbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAge1xuICAgICAgICAgIHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCksXG4gICAgICAgICAgLy8gbWFyZ2luOm5ldyBnby5NYXJnaW4oMCwgNTAsIDAsIDUwKSxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnUm91bmRlZFJlY3RhbmdsZScsIHtcbiAgICAgICAgICBuYW1lOiAnU0hBUEVfS0VZJyxcbiAgICAgICAgICBmaWxsOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLlJFU09MVVRJT05fQkxVRSxcbiAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMuJChnby5QbGFjZWhvbGRlciwgeyBwYWRkaW5nOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDApIH0pXG4gICAgICApXG4gICAgKTtcblxuICAgIC8vIG5vZGUubWVtYmVyVmFsaWRhdGlvbiA9IGZ1bmN0aW9uIChub2RlLCBncm91cCkge1xuICAgIC8vICAgICBpZiAoIWdyb3VwKSByZXR1cm4gdHJ1ZTsgLy8gYWxsb3cgdW5ncm91cGluZ1xuICAgIC8vICAgICBjb25zdCBncm91cEJvdW5kcyA9IGdyb3VwLmFjdHVhbEJvdW5kcztcbiAgICAvLyAgICAgY29uc3Qgbm9kZUJvdW5kcyA9IG5vZGUuYWN0dWFsQm91bmRzO1xuICAgIC8vICAgICByZXR1cm4gZ3JvdXBCb3VuZHMuY29udGFpbnNSZWN0KG5vZGVCb3VuZHMpO1xuICAgIC8vIH07XG4gICAgdGhpcy5teURpYWdyYW0uZ3JvdXBUZW1wbGF0ZU1hcC5zZXQodGl0bGUsIG5vZGUpO1xuICB9XG5cbiAgZ3JvdXBQQ0lucHV0T3JPdXRUZW1wbGF0ZShpY29uLCB0aXRsZSwgcGFkZGluZzogZ28uTWFyZ2luKSB7XG4gICAgLy8gbGV0IG5vZGUgPSB0aGlzLiQoXG4gICAgLy8gICAgIGdvLkdyb3VwLFxuICAgIC8vICAgICAnU3BvdCcsXG4gICAgLy8gICAgIHtcbiAgICAvLyAgICAgICAgIGxheW91dDogdGhpcy4kKGdvLkxheW91dCksXG4gICAgLy8gICAgICAgICBtb3ZhYmxlOiBmYWxzZSxcbiAgICAvLyAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxuICAgIC8vICAgICB9LFxuICAgIC8vICAgICAvLyB7XG4gICAgLy8gICAgIC8vICAgICAvLyBtaW5TaXplOiBuZXcgZ28uU2l6ZSg1MDAsIDUwMCksXG4gICAgLy8gICAgIC8vICAgICBtb3ZhYmxlOiBmYWxzZSxcbiAgICAvLyAgICAgLy8gICAgIGFyaWFSZWFkT25seTogdHJ1ZSxcbiAgICAvLyAgICAgLy8gfSxcbiAgICAvLyAgICAgdGhpcy4kKFxuICAgIC8vICAgICAgICAgZ28uUGFuZWwsXG4gICAgLy8gICAgICAgICAnQXV0bycsXG4gICAgLy8gICAgICAgICB7XG4gICAgLy8gICAgICAgICAgICAgcGFkZGluZzogbmV3IGdvLk1hcmdpbigwLCAwLCAwLCAwKSxcbiAgICAvLyAgICAgICAgIH0sXG4gICAgLy8gICAgICAgICB0aGlzLiQoZ28uU2hhcGUsICdSb3VuZGVkUmVjdGFuZ2xlJywge1xuICAgIC8vICAgICAgICAgICAgIGZpbGw6ICd0cmFuc3BhcmVudCcsXG4gICAgLy8gICAgICAgICAgICAgLy8gc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuUkVTT0xVVElPTl9CTFVFLFxuICAgIC8vICAgICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLldISVRFLFxuICAgIC8vICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgIC8vICAgICAgICAgICAgIHN0cm9rZURhc2hBcnJheTogWzUsIDVdLFxuICAgIC8vICAgICAgICAgfSksXG4gICAgLy8gICAgICAgICB0aGlzLiQoZ28uUGxhY2Vob2xkZXIsIHtcbiAgICAvLyAgICAgICAgICAgICBwYWRkaW5nOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDApLFxuICAgIC8vICAgICAgICAgfSksXG4gICAgLy8gICAgICksXG4gICAgLy8gKTtcbiAgICBsZXQgbm9kZSA9IHRoaXMuJChcbiAgICAgIGdvLkdyb3VwLFxuICAgICAgJ1Nwb3QnLFxuICAgICAge1xuICAgICAgICBsYXlvdXQ6IHRoaXMuJChnby5MYXllcmVkRGlncmFwaExheW91dCwgeyBkaXJlY3Rpb246IDAgfSksXG4gICAgICAgIG1vdmFibGU6IGZhbHNlLFxuICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcbiAgICAgICAgYXZvaWRhYmxlOiBmYWxzZSxcbiAgICAgICAgLy8gaXNTdWJHcmFwaEV4cGFuZGVkOiBmYWxzZSxcbiAgICAgICAgLy8gaXNTdWJHcmFwaEV4cGFuZGVkOiBmYWxzZSxcbiAgICAgICAgLy8gbGF5ZXJOYW1lOiAnRm9yZWdyb3VuZCcsXG4gICAgICB9LFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgICksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnQXV0bycsXG4gICAgICAgIHtcbiAgICAgICAgICBwYWRkaW5nOiBwYWRkaW5nID8/IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCksXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ1JvdW5kZWRSZWN0YW5nbGUnLCB7XG4gICAgICAgICAgZmlsbDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5XSElURSxcbiAgICAgICAgICAvLyBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5BTElaQVJJTixcbiAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICAvLyBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMuJChnby5QbGFjZWhvbGRlciwge1xuICAgICAgICAgIHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCksXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLm15RGlhZ3JhbS5ncm91cFRlbXBsYXRlTWFwLnNldCh0aXRsZSwgbm9kZSk7XG4gIH1cblxuICBtYWtlR3JvdXBab25lVGVtcGxhdGUoXG4gICAgc2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9ID0ge1xuICAgICAgdzogQXRvR29qc0VkaXRvck1vZGVsLkdSSURfU0laRSAqIDE0LFxuICAgICAgaDogQXRvR29qc0VkaXRvck1vZGVsLkdSSURfU0laRSAqIDUsXG4gICAgfVxuICApIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBsZXQgbm9kZSA9IHRoaXMuJChcbiAgICAgIGdvLkdyb3VwLFxuICAgICAgJ1ZlcnRpY2FsJyxcbiAgICAgIHtcbiAgICAgICAgbGF5b3V0OiB0aGlzLiQoZ28uR3JpZExheW91dCwge1xuICAgICAgICAgIHdyYXBwaW5nQ29sdW1uOiAxLFxuICAgICAgICAgIHNwYWNpbmc6IG5ldyBnby5TaXplKDAsIDApLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG5cbiAgICAgIHtcbiAgICAgICAgbG9jYXRpb25TcG90OiBnby5TcG90LkNlbnRlcixcbiAgICAgICAgbW91c2VPdmVyOiBmdW5jdGlvbiAoZSwgb2JqKSB7XG4gICAgICAgICAgLy8gc2VsZi5zaG93UG9pbnQob2JqPy5wYXJ0Py5sb2NhdGlvbik7XG4gICAgICAgIH0sXG4gICAgICAgIGNsaWNrOiAoZSwgb2JqOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAob2JqPy5kYXRhPy5vblNlbGVjdGVkKSB7XG4gICAgICAgICAgICBvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQob2JqPy5kYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNlbGVjdGlvbkNoYW5nZWQ6IChlKSA9PiB7XG4gICAgICAgICAgaWYgKCFlLmlzU2VsZWN0ZWQgJiYgZT8uZGF0YT8ub25TZWxlY3RlZCkge1xuICAgICAgICAgICAgZT8uZGF0YT8ub25TZWxlY3RlZChudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgc2VsZWN0aW9uQWRvcm5tZW50VGVtcGxhdGU6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6IHRoaXMuJChcbiAgICAgICAgICAgICAgZ28uQWRvcm5tZW50LFxuICAgICAgICAgICAgICAnU3BvdCcsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaGFkb3dWaXNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNoYWRvd0JsdXI6IDYsXG4gICAgICAgICAgICAgICAgc2hhZG93T2Zmc2V0OiBuZXcgZ28uUG9pbnQoMCwgMiksXG4gICAgICAgICAgICAgICAgc2hhZG93Q29sb3I6ICcjMDAwMDAwMjknLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAgICAgJ0F1dG8nLFxuICAgICAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwge1xuICAgICAgICAgICAgICAgICAgZmlsbDogbnVsbCxcbiAgICAgICAgICAgICAgICAgIHN0cm9rZTogJ2RvZGdlcmJsdWUnLFxuICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDQsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGhpcy4kKGdvLlBsYWNlaG9sZGVyLCB7IHBhZGRpbmc6IDMgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgICAgICdIb3Jpem9udGFsJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuVG9wUmlnaHQsXG4gICAgICAgICAgICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Cb3R0b20sXG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAnd2hpdGUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgICAgJ0J1dHRvbicsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIF9kcmFnRGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5URVhUX05PREUsXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogMCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLkJMVUUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNsaWNrOiBzZWxmLmFkZEl0ZW1Pbkdyb3VwWm9uZSwgLy8gZGVmaW5lZCBiZWxvdywgdG8gc3VwcG9ydCBhIGNsaWNrIG9uIHRoZSBidXR0b25cbiAgICAgICAgICAgICAgICAgICAgJ0J1dHRvbkJvcmRlci5zdHJva2VXaWR0aCc6IDAsXG4gICAgICAgICAgICAgICAgICAgICdCdXR0b25Cb3JkZXIuZmlsbCc6ICd3aGl0ZScsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICdcXHVmMDU1JyxcbiAgICAgICAgICAgICAgICAgICAgZm9udDogJzIwcHggXCJGb250IEF3ZXNvbWUgNiBQcm9cIicsXG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBzdHJva2U6ICcjMmMyYzJjJyxcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAvLyBtb3JlXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUFjdGlvbkdyb3VwKFtcbiAgICAgICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5SRU5BTUUsXG4gICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREVUQUlMUyxcbiAgICAgICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5PVVRGTE9XLFxuICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLkRFTEVURSxcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIC8vIHRoaXMuJChcbiAgICAgICAgICAgICAgICAvLyAgICAgLy8gRWRpdCBUZXh0XG4gICAgICAgICAgICAgICAgLy8gICAgICdCdXR0b24nLFxuICAgICAgICAgICAgICAgIC8vICAgICB7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgICBjbGljazogc2VsZi5lZGl0VGV4dEdyb3VwWm9uZSxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICdCdXR0b25Cb3JkZXIuc3Ryb2tlV2lkdGgnOiAwLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgJ0J1dHRvbkJvcmRlci5maWxsJzogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICAvLyAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywge1xuICAgICAgICAgICAgICAgIC8vICAgICAgICAgbWFyZ2luOiA0LFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgdGV4dDogJ1xcdWUxYmYnLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgZm9udDogJzIwcHggXCJGb250IEF3ZXNvbWUgNiBQcm9cIicsXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIHN0cm9rZTogJyMyYzJjMmMnLFxuICAgICAgICAgICAgICAgIC8vICAgICB9KSxcbiAgICAgICAgICAgICAgICAvLyApLFxuICAgICAgICAgICAgICAgIC8vIHRoaXMuJChcbiAgICAgICAgICAgICAgICAvLyAgICAgLy8gT3BlbiBEZXRhaWxcbiAgICAgICAgICAgICAgICAvLyAgICAgJ0J1dHRvbicsXG4gICAgICAgICAgICAgICAgLy8gICAgIHtcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIGNsaWNrOiAoZSwgb2JqOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICBjb25zdCBub2RlID0gb2JqLnBhcnQ7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgc2VsZi5vbk9wZW5EZXRhaWwuZW1pdCh7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgJ0J1dHRvbkJvcmRlci5zdHJva2VXaWR0aCc6IDAsXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAnQnV0dG9uQm9yZGVyLmZpbGwnOiAnd2hpdGUnLFxuICAgICAgICAgICAgICAgIC8vICAgICB9LFxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuJChnby5UZXh0QmxvY2ssIHtcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIG1hcmdpbjogNCxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIHRleHQ6ICdcXHVlNDlhJyxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIGZvbnQ6ICcyMHB4IFwiRm9udCBBd2Vzb21lIDYgUHJvXCInLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgLy8gICAgIH0pLFxuICAgICAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICAgICAgLy8gIXRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgICAgICAgICAvLyAgICAgPyB0aGlzLiQoXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICdCdXR0b24nLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICBhY3Rpb25Nb3ZlOiBzZWxmLmRyYWdOZXdOb2RlLCAvLyBkZWZpbmVkIGJlbG93LCB0byBzdXBwb3J0IGRyYWdnaW5nIGZyb20gdGhlIGJ1dHRvblxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgX2RyYWdEYXRhOiB7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgdHlwZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlRFWFRfTk9ERSxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICBuYW1lOiAwLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgIGNvbG9yOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuQkxVRSxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICBjbGljazogc2VsZi5jbGlja05ld05vZGUsIC8vIGRlZmluZWQgYmVsb3csIHRvIHN1cHBvcnQgYSBjbGljayBvbiB0aGUgYnV0dG9uXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAnQnV0dG9uQm9yZGVyLnN0cm9rZVdpZHRoJzogMCxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICdCdXR0b25Cb3JkZXIuZmlsbCc6ICd3aGl0ZScsXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgIHRoaXMuJChnby5UZXh0QmxvY2ssIHtcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgIG1hcmdpbjogNCxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgIHRleHQ6ICdcXHVlMTU3JyxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgIGZvbnQ6ICcyMHB4IFwiRm9udCBBd2Vzb21lIDYgUHJvXCInLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICBzdHJva2U6ICcjMmMyYzJjJyxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgLy8gICAgICAgKVxuICAgICAgICAgICAgICAgIC8vICAgICA6IHt9LFxuXG4gICAgICAgICAgICAgICAgLy8gdGhpcy4kKFxuICAgICAgICAgICAgICAgIC8vICAgICAnQnV0dG9uJyxcbiAgICAgICAgICAgICAgICAvLyAgICAge1xuICAgICAgICAgICAgICAgIC8vICAgICAgICAgY2xpY2s6IHNlbGYuZGVsZXRlTm9kZSxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICdCdXR0b25Cb3JkZXIuc3Ryb2tlV2lkdGgnOiAwLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgJ0J1dHRvbkJvcmRlci5maWxsJzogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICAvLyAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywge1xuICAgICAgICAgICAgICAgIC8vICAgICAgICAgbWFyZ2luOiA0LFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgdGV4dDogJ1xcdWYyZWQnLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgZm9udDogJzIwcHggXCJGb250IEF3ZXNvbWUgNiBQcm9cIicsXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAvLyAgICAgfSksXG4gICAgICAgICAgICAgICAgLy8gKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgIH0sXG5cbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnUm91bmRlZFJlY3RhbmdsZScsIHtcbiAgICAgICAgICBmaWxsOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLlJFU09MVVRJT05fQkxVRSxcbiAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncsIE5hTiksXG4gICAgICAgIH0pLFxuICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuVG9wLFxuICAgICAgICAgICAgcGFkZGluZzogbmV3IGdvLk1hcmdpbigxNywgMTAsIDE2LCAxMCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHJvdzogMCxcbiAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDUsIDAsIDEwLCAwKSxcbiAgICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgIGRlc2lyZWRTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgMjUpLFxuICAgICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5OSUdIVF9SSURFUixcbiAgICAgICAgICAgICAgZm9udDogJ2JvbGQgMTZweCBBcmlhbCcsXG4gICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIHdyYXA6IGdvLlRleHRCbG9jay5Ob25lLFxuICAgICAgICAgICAgICBvdmVyZmxvdzogZ28uVGV4dEJsb2NrLk92ZXJmbG93RWxsaXBzaXMsXG4gICAgICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICAgICAnVG9vbFRpcCcsXG4gICAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpLm1ha2VUd29XYXkoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0aGlzLiQoZ28uUGxhY2Vob2xkZXIsICdWZXJ0aWNhbCcsIHtcbiAgICAgICAgICAgIHJvdzogMSxcbiAgICAgICAgICB9KVxuICAgICAgICApLFxuXG4gICAgICAgIHRoaXMubWFrZVBvcnQoJ1QnLCBnby5TcG90LlRvcCwgZ28uU3BvdC5Ub3BTaWRlLCBmYWxzZSwgdHJ1ZSksXG4gICAgICAgIHRoaXMubWFrZVBvcnQoJ0wnLCBnby5TcG90LkxlZnQsIGdvLlNwb3QuTGVmdFNpZGUsIHRydWUsIHRydWUpLFxuICAgICAgICB0aGlzLm1ha2VQb3J0KCdSJywgZ28uU3BvdC5SaWdodCwgZ28uU3BvdC5SaWdodFNpZGUsIHRydWUsIHRydWUpLFxuICAgICAgICB0aGlzLm1ha2VQb3J0KCdCJywgZ28uU3BvdC5Cb3R0b20sIGdvLlNwb3QuQm90dG9tU2lkZSwgdHJ1ZSwgZmFsc2UpXG4gICAgICApLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMubXlEaWFncmFtLmdyb3VwVGVtcGxhdGVNYXAuc2V0KFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlpPTkUsXG4gICAgICBub2RlXG4gICAgKTtcbiAgfVxuXG4gIG1ha2Vab25lSXRlbVRlbXBsYXRlKFxuICAgIHNpemU6IHsgdzogbnVtYmVyOyBoOiBudW1iZXIgfSA9IHtcbiAgICAgIHc6IEF0b0dvanNFZGl0b3JNb2RlbC5HUklEX1NJWkUgKiAxMixcbiAgICAgIGg6IEF0b0dvanNFZGl0b3JNb2RlbC5HUklEX1NJWkUgKiAyLFxuICAgIH1cbiAgKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuJChcbiAgICAgIGdvLk5vZGUsXG4gICAgICAnQXV0bycsXG4gICAgICAvLyB7XG4gICAgICAvLyAgICAgbW91c2VIb3ZlcjogKGUsIG9iaikgPT4ge1xuICAgICAgLy8gICAgICAgICBjb25zdCBub2RlID0gb2JqLnBhcnQ7XG4gICAgICAvLyAgICAgICAgIGlmICgob2JqIGFzIGFueSkucGFydD8ub2I/LnZhbHVlID09PSBWQUxVRV9OQSkge1xuICAgICAgLy8gICAgICAgICAgICAgc2VsZi5vbkhvdmVySW5mb0J1dHRvbi5lbWl0KHtcbiAgICAgIC8vICAgICAgICAgICAgICAgICBsZWZ0OiBlPy5bJ1dyJ10/LnggKyA4LFxuICAgICAgLy8gICAgICAgICAgICAgICAgIHRvcDogZT8uWydXciddPy55LFxuICAgICAgLy8gICAgICAgICAgICAgICAgIG5vZGU6IG5vZGVcbiAgICAgIC8vICAgICAgICAgICAgIH0pO1xuICAgICAgLy8gICAgICAgICB9XG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICBtb3VzZUxlYXZlOiAoZSwgb2JqKSA9PiB7XG4gICAgICAvLyAgICAgICAgIGlmICgob2JqIGFzIGFueSkucGFydD8ub2I/LnZhbHVlID09PSBWQUxVRV9OQSkge1xuICAgICAgLy8gICAgICAgICAgICAgc2VsZi5vbkhvdmVySW5mb0J1dHRvbi5lbWl0KG51bGwpO1xuICAgICAgLy8gICAgICAgICB9XG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICBjbGljazogKGUsIG9iajogYW55KSA9PiB7XG4gICAgICAvLyAgICAgICAgIGNvbnN0IG5vZGUgPSBvYmoucGFydDtcbiAgICAgIC8vICAgICAgICAgdGhpcy5pc1Nob3dOb2RlSW5mbyA/IHNlbGYub25DbGlja0luZm9CdXR0b24uZW1pdCh7XG4gICAgICAvLyAgICAgICAgICAgICBsZWZ0OiBlPy5bJ1dyJ10/LngsXG4gICAgICAvLyAgICAgICAgICAgICB0b3A6IGU/LlsnV3InXT8ueSxcbiAgICAgIC8vICAgICAgICAgICAgIG5vZGU6IG5vZGVcbiAgICAgIC8vICAgICAgICAgfSkgOiBudWxsO1xuICAgICAgLy8gICAgIH0sXG4gICAgICAvLyB9LFxuICAgICAgLy8gbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KGdvLlBvaW50LnN0cmluZ2lmeSksXG4gICAgICB7XG4gICAgICAgIG1vdmFibGU6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAge1xuICAgICAgICAgIHdpZHRoOiBzaXplLncsXG4gICAgICAgICAgaGVpZ2h0OiBzaXplLmgsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ1JlY3RhbmdsZScsIHtcbiAgICAgICAgICBmaWxsOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuTElHSFRfQkxVRSxcbiAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5MSU5LX1dBVEVSLFxuICAgICAgICB9KSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICdWZXJ0aWNhbCcsXG4gICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgcm93OiAyLFxuICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMTAsIDAsIDUsIDApLFxuICAgICAgICAgICAgICBmb250OiAnYm9sZCAxMnB4IEFyaWFsJyxcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuTklHSFRfUklERVIsXG4gICAgICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICAgICAnVG9vbFRpcCcsXG4gICAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpLm1ha2VUd29XYXkoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpLFxuICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnbmFtZScsICh4KSA9PiAhIXgpXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICdIb3Jpem9udGFsJyxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgMTAsIDAsIDEwKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCA1LCAxMCwgMCksXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBmb250OiAnMTJweCBzYW5zLXNlcmlmJyxcbiAgICAgICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5OSUdIVF9SSURFUixcbiAgICAgICAgICAgICAgICB3cmFwOiBnby5UZXh0QmxvY2suV3JhcEZpdCxcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc011bHRpbGluZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgbWF4U2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53IC0gMTAwLCAxNSksXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGdvLlRleHRCbG9jay5PdmVyZmxvd0VsbGlwc2lzLFxuICAgICAgICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICAgICAgICdUb29sVGlwJyxcbiAgICAgICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiA0LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lSXRlbScpLm1ha2VUd29XYXkoKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJ25hbWVJdGVtJykubWFrZVR3b1dheSgpLFxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICduYW1lSXRlbScsICh4KSA9PiAhIXgpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgNSwgMTAsIDApLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgZm9udDogJzEycHggc2Fucy1zZXJpZicsXG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuQ0VSVUxFQU4sXG4gICAgICAgICAgICAgICAgd3JhcDogZ28uVGV4dEJsb2NrLldyYXBGaXQsXG4gICAgICAgICAgICAgICAgdGV4dDogJzwgJyxcbiAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZyhcbiAgICAgICAgICAgICAgICAndmlzaWJsZScsXG4gICAgICAgICAgICAgICAgJ2RhdGEnLFxuICAgICAgICAgICAgICAgICh4KSA9PiB0eXBlb2YgeD8ucXVhbnRpdHkgPT09ICdudW1iZXInXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCA1LCAxMCwgMCksXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBmb250OiAnMTJweCBzYW5zLXNlcmlmJyxcbiAgICAgICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5DRVJVTEVBTixcbiAgICAgICAgICAgICAgICB3cmFwOiBnby5UZXh0QmxvY2suV3JhcEZpdCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnZGF0YScsICh4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB4Py5xdWFudGl0eSAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkOiBhbnkgPSBVdGlsc1NlcnZpY2UuY29udmVydFByZWZpeGVzRGF0YSh7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogeD8ucXVhbnRpdHksXG4gICAgICAgICAgICAgICAgICB1bml0OiB4Py51bml0LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQuc2hvcnRlbmVkTnVtYmVyICtcbiAgICAgICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkLnVuaXRQcmVmaXhlcyArXG4gICAgICAgICAgICAgICAgICAgIHg/LnVuaXQgPz8gJydcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoXG4gICAgICAgICAgICAgICAgJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgICdkYXRhJyxcbiAgICAgICAgICAgICAgICAoeCkgPT4gdHlwZW9mIHg/LnF1YW50aXR5ID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCA1LCAxMCwgMCksXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBmb250OiAnMTJweCBzYW5zLXNlcmlmJyxcbiAgICAgICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5DRVJVTEVBTixcbiAgICAgICAgICAgICAgICB3cmFwOiBnby5UZXh0QmxvY2suV3JhcEZpdCxcbiAgICAgICAgICAgICAgICB0ZXh0OiAnID4nLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZyhcbiAgICAgICAgICAgICAgICAndmlzaWJsZScsXG4gICAgICAgICAgICAgICAgJ2RhdGEnLFxuICAgICAgICAgICAgICAgICh4KSA9PiB0eXBlb2YgeD8ucXVhbnRpdHkgPT09ICdudW1iZXInXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMubXlEaWFncmFtLm5vZGVUZW1wbGF0ZU1hcC5zZXQoXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuWk9ORV9FTkVSR1lfSVRFTSxcbiAgICAgIG5vZGVcbiAgICApO1xuICB9XG5cbiAgbWFrZVNwZWNpYWxUZW1wbGF0ZShcbiAgICBpY29uLFxuICAgIHRpdGxlLFxuICAgIHNpemU6IHsgdzogbnVtYmVyOyBoOiBudW1iZXIgfSA9IHtcbiAgICAgIHc6IEF0b0dvanNFZGl0b3JNb2RlbC5HUklEX1NJWkUgKiA1LFxuICAgICAgaDogQXRvR29qc0VkaXRvck1vZGVsLkdSSURfU0laRSAqIDUsXG4gICAgfVxuICApIHtcbiAgICBsZXQgbm9kZTogYW55ID0gbnVsbDtcbiAgICBzd2l0Y2ggKHRpdGxlKSB7XG4gICAgICBjYXNlIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5TUEVDSUFMX1BST0NFU1M6XG4gICAgICAgIG5vZGUgPSB0aGlzLiQoXG4gICAgICAgICAgZ28uTm9kZSxcbiAgICAgICAgICAnU3BvdCcsXG4gICAgICAgICAgLy8ge1xuICAgICAgICAgIC8vICAgICBmcm9tU3BvdDogZ28uU3BvdC5SaWdodCwgIC8vIGNvbWluZyBvdXQgZnJvbSBtaWRkbGUtcmlnaHRcbiAgICAgICAgICAvLyAgICAgdG9TcG90OiBnby5TcG90LkxlZnRcbiAgICAgICAgICAvLyB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsaWNrOiAoZSwgb2JqOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG9iaj8uZGF0YT8ub25TZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIG9iaj8uZGF0YT8ub25TZWxlY3RlZChvYmo/LmRhdGEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZDogKGUpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFlLmlzU2VsZWN0ZWQgJiYgZT8uZGF0YT8ub25TZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIGU/LmRhdGE/Lm9uU2VsZWN0ZWQobnVsbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgICAgICApLFxuICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgJ0F1dG8nLFxuICAgICAgICAgICAgeyB3aWR0aDogc2l6ZS53LCBoZWlnaHQ6IHNpemUuaCB9LFxuICAgICAgICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnQ2lyY2xlJywge1xuICAgICAgICAgICAgICBmaWxsOiAnd2hpdGUnLFxuICAgICAgICAgICAgICBzdHJva2U6ICcjMkQzQjc3JyxcbiAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgICAgIC8vIHN0cm9rZURhc2hBcnJheTogWzUsIDVdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgICAnVGFibGUnLFxuICAgICAgICAgICAgICB0aGlzLiQoZ28uVGV4dEJsb2NrLCBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuUFJPQ0VTUywge1xuICAgICAgICAgICAgICAgIHJvdzogMCxcbiAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMywgMywgMTAsIDMpLFxuICAgICAgICAgICAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDIwLCBOYU4pLFxuICAgICAgICAgICAgICAgIHN0cm9rZTogJyM0NDQ0NDQnLFxuICAgICAgICAgICAgICAgIGZvbnQ6ICdub3JtYWwgMTBwdCBBcmlhbCcsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHRoaXMuJChnby5QaWN0dXJlLCBpY29uLCB7XG4gICAgICAgICAgICAgICAgcm93OiAxLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCAwLCAxMCwgMCksXG4gICAgICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkNlbnRlcixcbiAgICAgICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZSg2MCwgNjApLFxuICAgICAgICAgICAgICAgIGltYWdlU3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVW5pZm9ybSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuXG4gICAgICAgICAgdGhpcy4kKGdvLlBhbmVsLCAnVmVydGljYWwnLCB7XG4gICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgICAgIGFsaWdubWVudEZvY3VzOiBuZXcgZ28uU3BvdCgwLCAwLjUsIDgsIDApLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRoaXMuJChnby5QYW5lbCwgJ1ZlcnRpY2FsJywge1xuICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LlJpZ2h0LFxuICAgICAgICAgICAgYWxpZ25tZW50Rm9jdXM6IG5ldyBnby5TcG90KDEsIDAuNSwgLTgsIDApLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC8vIGZvdXIgbmFtZWQgcG9ydHMsIG9uZSBvbiBlYWNoIHNpZGU6XG5cbiAgICAgICAgICB0aGlzLm1ha2VQb3J0KCdUJywgZ28uU3BvdC5Ub3AsIGdvLlNwb3QuVG9wU2lkZSwgZmFsc2UsIHRydWUpLFxuICAgICAgICAgIHRoaXMubWFrZVBvcnQoJ0wnLCBnby5TcG90LkxlZnQsIGdvLlNwb3QuTGVmdFNpZGUsIHRydWUsIHRydWUpLFxuICAgICAgICAgIHRoaXMubWFrZVBvcnQoJ1InLCBnby5TcG90LlJpZ2h0LCBnby5TcG90LlJpZ2h0U2lkZSwgdHJ1ZSwgdHJ1ZSksXG4gICAgICAgICAgdGhpcy5tYWtlUG9ydCgnQicsIGdvLlNwb3QuQm90dG9tLCBnby5TcG90LkJvdHRvbVNpZGUsIHRydWUsIGZhbHNlKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlNQRUNJQUxfU1RPUkFHRTpcbiAgICAgICAgbm9kZSA9IHRoaXMuJChcbiAgICAgICAgICBnby5Ob2RlLFxuICAgICAgICAgICdTcG90JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGljazogKGUsIG9iajogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQob2JqPy5kYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQ6IChlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghZS5pc1NlbGVjdGVkICYmIGU/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBlPy5kYXRhPy5vblNlbGVjdGVkKG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICAgICAgKSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICdBdXRvJyxcbiAgICAgICAgICAgIHsgd2lkdGg6IHNpemUudywgaGVpZ2h0OiBzaXplLmggfSxcbiAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ0NpcmNsZScsIHtcbiAgICAgICAgICAgICAgZmlsbDogJ3doaXRlJyxcbiAgICAgICAgICAgICAgc3Ryb2tlOiAnIzJEM0I3NycsXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgICAgICAvLyBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlNUT1JBR0UsIHtcbiAgICAgICAgICAgICAgICByb3c6IDAsXG4gICAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDMsIDMsIDEwLCAzKSxcbiAgICAgICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgTmFOKSxcbiAgICAgICAgICAgICAgICBzdHJva2U6ICcjNDQ0NDQ0JyxcbiAgICAgICAgICAgICAgICBmb250OiAnbm9ybWFsIDEwcHQgQXJpYWwnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgZ28uUGljdHVyZSxcbiAgICAgICAgICAgICAgICBpY29uLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHJvdzogMSxcbiAgICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCAwLCAxMCwgMCksXG4gICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICAgICAgICAgICAgbWluU2l6ZTogbmV3IGdvLlNpemUoNDAsIDQwKSxcbiAgICAgICAgICAgICAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKDUwLCA1MCksXG4gICAgICAgICAgICAgICAgICBpbWFnZVN0cmV0Y2g6IGdvLkdyYXBoT2JqZWN0LlVuaWZvcm0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygnc291cmNlJywgJ2ljb24nKS5tYWtlVHdvV2F5KClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG5cbiAgICAgICAgICB0aGlzLiQoZ28uUGFuZWwsICdWZXJ0aWNhbCcsIHtcbiAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICAgICAgYWxpZ25tZW50Rm9jdXM6IG5ldyBnby5TcG90KDAsIDAuNSwgOCwgMCksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGhpcy4kKGdvLlBhbmVsLCAnVmVydGljYWwnLCB7XG4gICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuUmlnaHQsXG4gICAgICAgICAgICBhbGlnbm1lbnRGb2N1czogbmV3IGdvLlNwb3QoMSwgMC41LCAtOCwgMCksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLy8gZm91ciBuYW1lZCBwb3J0cywgb25lIG9uIGVhY2ggc2lkZTpcblxuICAgICAgICAgIHRoaXMubWFrZVBvcnQoJ1QnLCBnby5TcG90LlRvcCwgZ28uU3BvdC5Ub3BTaWRlLCBmYWxzZSwgdHJ1ZSksXG4gICAgICAgICAgdGhpcy5tYWtlUG9ydCgnTCcsIGdvLlNwb3QuTGVmdCwgZ28uU3BvdC5MZWZ0U2lkZSwgdHJ1ZSwgdHJ1ZSksXG4gICAgICAgICAgdGhpcy5tYWtlUG9ydCgnUicsIGdvLlNwb3QuUmlnaHQsIGdvLlNwb3QuUmlnaHRTaWRlLCB0cnVlLCB0cnVlKSxcbiAgICAgICAgICB0aGlzLm1ha2VQb3J0KCdCJywgZ28uU3BvdC5Cb3R0b20sIGdvLlNwb3QuQm90dG9tU2lkZSwgdHJ1ZSwgZmFsc2UpXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuU1BFQ0lBTF9TVE9SRTpcbiAgICAgICAgbm9kZSA9IHRoaXMuJChcbiAgICAgICAgICBnby5Ob2RlLFxuICAgICAgICAgICdTcG90JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGljazogKGUsIG9iajogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQob2JqPy5kYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQ6IChlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghZS5pc1NlbGVjdGVkICYmIGU/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBlPy5kYXRhPy5vblNlbGVjdGVkKG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICAgICAgKSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICdBdXRvJyxcbiAgICAgICAgICAgIHsgd2lkdGg6IHNpemUudywgaGVpZ2h0OiBzaXplLmggfSxcbiAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ0NpcmNsZScsIHtcbiAgICAgICAgICAgICAgZmlsbDogJ3doaXRlJyxcbiAgICAgICAgICAgICAgc3Ryb2tlOiAnIzJEM0I3NycsXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgICAgICAvLyBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgJ1N0b3JlJywge1xuICAgICAgICAgICAgICAgIHJvdzogMCxcbiAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMywgMywgMTAsIDMpLFxuICAgICAgICAgICAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDIwLCBOYU4pLFxuICAgICAgICAgICAgICAgIHN0cm9rZTogJyM0NDQ0NDQnLFxuICAgICAgICAgICAgICAgIGZvbnQ6ICdub3JtYWwgMTBwdCBBcmlhbCcsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHRoaXMuJChnby5QaWN0dXJlLCBpY29uLCB7XG4gICAgICAgICAgICAgICAgcm93OiAxLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCAwLCAxMCwgMCksXG4gICAgICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkNlbnRlcixcbiAgICAgICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZSg2MCwgNjApLFxuICAgICAgICAgICAgICAgIGltYWdlU3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVW5pZm9ybSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5TUEVDSUFMX0RJU0NIQVJHRTpcbiAgICAgICAgbm9kZSA9IHRoaXMuJChcbiAgICAgICAgICBnby5Ob2RlLFxuICAgICAgICAgICdTcG90JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGljazogKGUsIG9iajogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQob2JqPy5kYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQ6IChlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghZS5pc1NlbGVjdGVkICYmIGU/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBlPy5kYXRhPy5vblNlbGVjdGVkKG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICAgICAgKSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICdBdXRvJyxcbiAgICAgICAgICAgIHsgd2lkdGg6IHNpemUudywgaGVpZ2h0OiBzaXplLmggfSxcbiAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ0NpcmNsZScsIHtcbiAgICAgICAgICAgICAgZmlsbDogJ3doaXRlJyxcbiAgICAgICAgICAgICAgc3Ryb2tlOiAnIzJEM0I3NycsXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgICAgICAvLyBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgJ0Rpc2NoYXJnZScsIHtcbiAgICAgICAgICAgICAgICByb3c6IDAsXG4gICAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDMsIDMsIDEwLCAzKSxcbiAgICAgICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgTmFOKSxcbiAgICAgICAgICAgICAgICBzdHJva2U6ICcjNDQ0NDQ0JyxcbiAgICAgICAgICAgICAgICBmb250OiAnbm9ybWFsIDEwcHQgQXJpYWwnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB0aGlzLiQoZ28uUGljdHVyZSwgaWNvbiwge1xuICAgICAgICAgICAgICAgIHJvdzogMSxcbiAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgMCwgMTAsIDApLFxuICAgICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgICAgICAgICAgbWF4U2l6ZTogbmV3IGdvLlNpemUoNjAsIDYwKSxcbiAgICAgICAgICAgICAgICBpbWFnZVN0cmV0Y2g6IGdvLkdyYXBoT2JqZWN0LlVuaWZvcm0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuU1BFQ0lBTF9PVEhFUjpcbiAgICAgICAgbm9kZSA9IHRoaXMuJChcbiAgICAgICAgICBnby5Ob2RlLFxuICAgICAgICAgICdTcG90JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGljazogKGUsIG9iajogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQob2JqPy5kYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQ6IChlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghZS5pc1NlbGVjdGVkICYmIGU/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBlPy5kYXRhPy5vblNlbGVjdGVkKG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICAgICAgKSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICdBdXRvJyxcbiAgICAgICAgICAgIHsgd2lkdGg6IHNpemUudywgaGVpZ2h0OiBzaXplLmggfSxcbiAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ0NpcmNsZScsIHtcbiAgICAgICAgICAgICAgZmlsbDogJ3doaXRlJyxcbiAgICAgICAgICAgICAgc3Ryb2tlOiAnIzJEM0I3NycsXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgICAgICAvLyBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgJ090aGVyJywge1xuICAgICAgICAgICAgICAgIHJvdzogMCxcbiAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMywgMywgMTAsIDMpLFxuICAgICAgICAgICAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDIwLCBOYU4pLFxuICAgICAgICAgICAgICAgIHN0cm9rZTogJyM0NDQ0NDQnLFxuICAgICAgICAgICAgICAgIGZvbnQ6ICdub3JtYWwgMTBwdCBBcmlhbCcsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHRoaXMuJChnby5QaWN0dXJlLCBpY29uLCB7XG4gICAgICAgICAgICAgICAgcm93OiAxLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCAwLCAxMCwgMCksXG4gICAgICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkNlbnRlcixcbiAgICAgICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZSg2MCwgNjApLFxuICAgICAgICAgICAgICAgIGltYWdlU3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVW5pZm9ybSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChub2RlKSB7XG4gICAgICB0aGlzLm15RGlhZ3JhbS5ub2RlVGVtcGxhdGVNYXAuc2V0KHRpdGxlLCBub2RlKTtcbiAgICB9XG4gIH1cblxuICBzdGFydEFuaW1hdGlvbigpIHtcbiAgICBjb25zdCBkaWFncmFtID0gdGhpcy5teURpYWdyYW07XG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgLy8gICAgIGRpYWdyYW0ubGlua3MuZWFjaCgobGluaykgPT4ge1xuICAgIC8vICAgICB9KTtcbiAgICAvLyB9KTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5hbmltYXRpb25JbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgY29uc3Qgb2xkc2tpcHMgPSBkaWFncmFtLnNraXBzVW5kb01hbmFnZXI7XG4gICAgICAgIGRpYWdyYW0uc2tpcHNVbmRvTWFuYWdlciA9IHRydWU7XG5cbiAgICAgICAgZGlhZ3JhbS5saW5rcy5lYWNoKChsaW5rKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2hhcGUgPSBsaW5rLmZpbmRPYmplY3QoJ1BJUEUnKTtcbiAgICAgICAgICBpZiAoISFzaGFwZSkge1xuICAgICAgICAgICAgLy8gY29uc3Qgb2ZmID0gc2hhcGU/LnN0cm9rZURhc2hPZmZzZXQgLSAzO1xuICAgICAgICAgICAgY29uc3Qgb2ZmID0gc2hhcGU/LnN0cm9rZURhc2hPZmZzZXQgLSA5O1xuICAgICAgICAgICAgLy8gYW5pbWF0ZSAobW92ZSkgdGhlIHN0cm9rZSBkYXNoXG4gICAgICAgICAgICBzaGFwZS5zdHJva2VEYXNoT2Zmc2V0ID0gb2ZmIDw9IDAgPyA2MCA6IG9mZjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBkaWFncmFtLnNraXBzVW5kb01hbmFnZXIgPSBvbGRza2lwcztcbiAgICAgIH0sIDYwMCk7XG4gICAgICAvLyA2MFxuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cblxuICBzdG9wQW5pbWF0aW9uKCkge1xuICAgIGlmICh0aGlzLmFuaW1hdGlvbkludGVydmFsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuYW5pbWF0aW9uSW50ZXJ2YWwpO1xuICAgIH1cbiAgfVxuXG4gIHRvRGF0YVVSTCh1cmwsIGNhbGxiYWNrKSB7XG4gICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIub25sb2FkZW5kID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjYWxsYmFjayhyZWFkZXIucmVzdWx0KTtcbiAgICAgIH07XG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTCh4aHIucmVzcG9uc2UpO1xuICAgIH07XG4gICAgeGhyLm9wZW4oJ0dFVCcsIHVybCk7XG4gICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJztcbiAgICB4aHIuc2VuZCgpO1xuICB9XG5cbiAgZ2V0QmFzZTY0RGlhZ3JhbVdpdGhFbXB0eURhdGEoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgLy8gVGVzdFxuICAgIC8vIGNvbnN0IG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKCcnLCAnbmV3V2luZG93Jyk7XG4gICAgLy8gaWYgKCFuZXdXaW5kb3cpIHtcbiAgICAvLyAgICAgcmV0dXJuO1xuICAgIC8vIH1cbiAgICAvLyBjb25zdCBuZXdEb2N1bWVudCA9IG5ld1dpbmRvdz8uZG9jdW1lbnQ7XG4gICAgaWYgKFxuICAgICAgIXRoaXMubXlEaWFncmFtPy5tb2RlbD8ubm9kZURhdGFBcnJheT8ubGVuZ3RoICYmXG4gICAgICAhdGhpcy5teURpYWdyYW0/Lm1vZGVsPy5saW5rRGF0YUFycmF5Py5sZW5ndGhcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdmcgPSB0aGlzLm15RGlhZ3JhbS5tYWtlU3ZnKHtcbiAgICAgIHNjYWxlOiB0aGlzLmRlZmF1bHRTY2FsZVpvb21Ub0ZpdCxcbiAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKDEyMDAsIE5hTiksXG4gICAgICBiYWNrZ3JvdW5kOiAnd2hpdGUnLFxuICAgICAgcGFkZGluZzogMjAsXG4gICAgICBlbGVtZW50RmluaXNoZWQ6IGZ1bmN0aW9uIChncmFwaE9iamVjdCwgc3ZnRWxlbWVudCkge1xuICAgICAgICBzdmdFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnY2xpcC1wYXRoJyk7XG4gICAgICAgIC8vIFJlcGxhY2UgSW1hZ2UgVVJMIHRvIGJhc2U2NCAtPiBGb3Igc2hvd2luZyBQaWN0dXJlIGVsZW1lbnRcbiAgICAgICAgaWYgKGdyYXBoT2JqZWN0IGluc3RhbmNlb2YgZ28uUGljdHVyZSkge1xuICAgICAgICAgIHNlbGYudG9EYXRhVVJMKHN2Z0VsZW1lbnQuaHJlZi5iYXNlVmFsLCBmdW5jdGlvbiAoZGF0YVVybCkge1xuICAgICAgICAgICAgc3ZnRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBkYXRhVXJsKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBNYWtlIFRleHQgTm9kZSBTaGFwZSBCb3JkZXJcbiAgICAgICAgaWYgKGdyYXBoT2JqZWN0Py5uYW1lID09PSAndGV4dE5vZGVTaGFwZScpIHtcbiAgICAgICAgICBzdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgJ3JnYmEoNjQsIDE4MSwgMjA2LCAwLjYpJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRW1wdHkgVmFsdWVcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGdyYXBoT2JqZWN0Py5uYW1lID09PSAndGV4dEJsb2NrVmFsdWUnIHx8XG4gICAgICAgICAgZ3JhcGhPYmplY3Q/Lm5hbWUgPT09ICd0ZXh0QmxvY2tVbml0UHJlZml4ZXMnXG4gICAgICAgICkge1xuICAgICAgICAgIHN2Z0VsZW1lbnQudGV4dENvbnRlbnQgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3ZnRWxlbWVudC5jbGlwUGF0aCkge1xuICAgICAgICAgIHN2Z0VsZW1lbnQuY2xpcFBhdGggPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY2FsbGJhY2s6IChzdmcpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3ZnU3RyID0gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhzdmcpO1xuICAgICAgICAgIC8vIEZvciBUZXN0XG4gICAgICAgICAgLy8gbmV3RG9jdW1lbnQ/LmJvZHk/LmFwcGVuZENoaWxkKHN2Zyk7XG5cbiAgICAgICAgICBjb25zdCBiYXNlNjRTdmcgPSBgZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwke3dpbmRvdy5idG9hKFxuICAgICAgICAgICAgdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHN2Z1N0cikpXG4gICAgICAgICAgKX1gO1xuICAgICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgIGltZy5zcmMgPSBiYXNlNjRTdmc7XG4gICAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgICAgLy8gZ2V0IGNhbnZhcyBjb250ZXh0IGZvciBkcmF3aW5nIG9uIGNhbnZhc1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY29uc3Qgc3ZnV2lkdGggPSBpbWcud2lkdGg7XG4gICAgICAgICAgICBjb25zdCBzdmdIZWlnaHQgPSBpbWcuaGVpZ2h0O1xuXG4gICAgICAgICAgICBjYW52YXMud2lkdGggPSBzdmdXaWR0aDtcbiAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBzdmdIZWlnaHQ7XG5cbiAgICAgICAgICAgIGlmIChjb250ZXh0KSB7XG4gICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltZywgMCwgMCk7XG4gICAgICAgICAgICAgIGNvbnN0IGJhc2U2NFBORyA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnKTtcbiAgICAgICAgICAgICAgc2VsZi5lbWl0SW1hZ2VUb3BvbG9neShcbiAgICAgICAgICAgICAgICBiYXNlNjRQTkcucmVwbGFjZSgnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnLCAnJylcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9LCAxMDAwKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBlbWl0SW1hZ2VUb3BvbG9neShiYXNlNjQpIHtcbiAgICB0aGlzLmNhbGxiYWNrSW1hZ2VUb3BvbG9neS5lbWl0KGJhc2U2NCk7XG4gIH1cblxuICBvcGVuQWN0aW9uTWVudSgpIHtcbiAgICAvLyBXaGVuIHRoaXMgbm9kZSBpcyBjbGlja2VkLCBhZGp1c3QgdGhlIG1lbnUgcG9zaXRpb25cbiAgICBjb25zdCBtb3VzZVB0ID0gdGhpcy5teURpYWdyYW0ubGFzdElucHV0LnZpZXdQb2ludDtcblxuICAgIC8vIC8vIFdoZW4gdGhpcyBub2RlIGlzIGNsaWNrZWQsIGRpc3BsYXkgdGhlIGRyb3Bkb3duIG1lbnVcbiAgICBjb25zdCBtZW51ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5hY3Rpb25NZW51SWQpO1xuICAgIGlmIChtZW51KSB7XG4gICAgICBtZW51LnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgICAgIG1lbnUuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgbWVudS5zdHlsZS5sZWZ0ID0gbW91c2VQdC54ICsgJ3B4JztcbiAgICAgIG1lbnUuc3R5bGUudG9wID0gbW91c2VQdC55ICsgJ3B4JztcblxuICAgICAgdGhpcy5tZW51VHJpZ2dlci5vcGVuTWVudSgpO1xuICAgIH1cbiAgfVxuXG4gIHVuc3Vic2NyaWJlQWxsKCkge1xuICAgIGlmICh0aGlzLl9zdWJzY3JpcHRpb25MaXN0KSB7XG4gICAgICB0aGlzLl9zdWJzY3JpcHRpb25MaXN0LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbkxpc3QgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBhZGRTdWJzY3JpYmVzKC4uLnN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdKSB7XG4gICAgc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uTGlzdC5hZGQoZWwpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgQXRvRGVmYXVsdEdvanNFZGl0b3Ige1xuICBleHBvcnQgZW51bSBFTlVNX0FDVElPTlMge1xuICAgIERFVEFJTFMgPSAnT3BlbiBkZXRhaWxzICYgd2l6YXJkJyxcbiAgICBPTkxZX0RFVEFJTFMgPSAnT3BlbiBkZXRhaWxzJyxcbiAgICBSRU5BTUUgPSAnUmVuYW1lIHRoaXMgYm94JyxcbiAgICBPVVRGTE9XID0gJ0NyZWF0ZSBhbiBvdXRmbG93JyxcbiAgICBERUxFVEUgPSAnRGVsZXRlJyxcbiAgICBJTlNJR0hUID0gJ0luU2lnaHQgdGFnIG1hcHBpbmcnLFxuICAgIERBVEFfTUFQUElORyA9ICdEYXRhIE1hcHBpbmcnLFxuICAgIE1PUkUgPSAnTW9yZScsXG4gICAgRkxPV19ERVRBSUxTID0gJ0Zsb3cgZGV0YWlscycsXG4gICAgRkxPV19ERVRBSUxTX0FORF9XSVpBUkQgPSAnRmxvdyBkZXRhaWxzICYgd2l6YXJkJywgLy8gb25seSBub3cgZm9yIENvb2xpbmcgVG93ZXJcbiAgICBBU1NFVF9QQVJBTUVURVJTID0gJ0Fzc2V0IHBhcmFtZXRlcnMnLFxuICAgIENIQU5HRV9JQ09OID0gJ0NoYW5nZSBpY29uJyxcbiAgfVxuXG4gIGV4cG9ydCBjb25zdCBBQ1RJT05TOiBhbnkgPSB7XG4gICAgW0VOVU1fQUNUSU9OUy5ERVRBSUxTXToge1xuICAgICAgbmFtZTogRU5VTV9BQ1RJT05TLkRFVEFJTFMsXG4gICAgICBpY29uQ2xhc3NOYW1lOiAnZmFyIGZhLW1lbW8tY2lyY2xlLWluZm8nLFxuICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgfSxcbiAgICBbRU5VTV9BQ1RJT05TLkZMT1dfREVUQUlMU106IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5GTE9XX0RFVEFJTFMsXG4gICAgICBpY29uQ2xhc3NOYW1lOiAnZmFyIGZhLWFycm93LXByb2dyZXNzJyxcbiAgICAgIG9uQ2xpY2s6ICgpID0+IHt9LFxuICAgIH0sXG4gICAgW0VOVU1fQUNUSU9OUy5GTE9XX0RFVEFJTFNfQU5EX1dJWkFSRF06IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5GTE9XX0RFVEFJTFNfQU5EX1dJWkFSRCxcbiAgICAgIGljb25DbGFzc05hbWU6ICdmYXIgZmEtYXJyb3ctcHJvZ3Jlc3MnLFxuICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgfSxcbiAgICBbRU5VTV9BQ1RJT05TLkFTU0VUX1BBUkFNRVRFUlNdOiB7XG4gICAgICBuYW1lOiBFTlVNX0FDVElPTlMuQVNTRVRfUEFSQU1FVEVSUyxcbiAgICAgIGljb25DbGFzc05hbWU6ICdmYXIgZmEtYm94LWFyY2hpdmUnLFxuICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgfSxcbiAgICBbRU5VTV9BQ1RJT05TLk9OTFlfREVUQUlMU106IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5PTkxZX0RFVEFJTFMsXG4gICAgICBpY29uQ2xhc3NOYW1lOiAnZmFyIGZhLW1lbW8tY2lyY2xlLWluZm8nLFxuICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgfSxcbiAgICBbRU5VTV9BQ1RJT05TLlJFTkFNRV06IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5SRU5BTUUsXG4gICAgICBpY29uQ2xhc3NOYW1lOiAnZmFyIGZhLWlucHV0LXRleHQnLFxuICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgfSxcbiAgICBbRU5VTV9BQ1RJT05TLk9VVEZMT1ddOiB7XG4gICAgICBuYW1lOiBFTlVNX0FDVElPTlMuT1VURkxPVyxcbiAgICAgIGljb25DbGFzc05hbWU6ICdmYXIgZmEtZGlhZ3JhbS1uZXN0ZWQnLFxuICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgfSxcbiAgICBbRU5VTV9BQ1RJT05TLkRFTEVURV06IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5ERUxFVEUsXG4gICAgICBpY29uQ2xhc3NOYW1lOiAnZmFsIGZhLXRyYXNoLWNhbicsXG4gICAgICBvbkNsaWNrOiAoKSA9PiB7fSxcbiAgICB9LFxuICAgIFtFTlVNX0FDVElPTlMuSU5TSUdIVF06IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5JTlNJR0hULFxuICAgICAgaWNvbkNsYXNzTmFtZTogJ2ZhciBmYS10YWcnLFxuICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgfSxcbiAgICBbRU5VTV9BQ1RJT05TLkRBVEFfTUFQUElOR106IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5EQVRBX01BUFBJTkcsXG4gICAgICBpY29uQ2xhc3NOYW1lOiAnZmFyIGZhLXRhZycsXG4gICAgICBvbkNsaWNrOiAoKSA9PiB7fSxcbiAgICB9LFxuICAgIFtFTlVNX0FDVElPTlMuTU9SRV06IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5NT1JFLFxuICAgICAgaWNvbkNsYXNzTmFtZTogJ2ZhbCBmYS1tZW1vLWNpcmNsZS1pbmZvJyxcbiAgICAgIG9uQ2xpY2s6ICgpID0+IHt9LFxuICAgIH0sXG4gICAgW0VOVU1fQUNUSU9OUy5DSEFOR0VfSUNPTl06IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5DSEFOR0VfSUNPTixcbiAgICAgIGljb25DbGFzc05hbWU6ICdmYXIgZmEtaW1hZ2UnLFxuICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgfSxcbiAgfTtcblxuICBleHBvcnQgY29uc3QgRElTVEFOQ0VfMl9PVVRQVVQgPSA2MDtcbn1cbiJdfQ==
|
3778
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1nb2pzLWVkaXRvci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F0by13YXRlci1saWIvc3JjL2xpYi9tb2RlbHMvZGVmYXVsdC1nb2pzLWVkaXRvci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixPQUFPLEVBQ1AsWUFBWSxFQUNaLFFBQVEsR0FDVCxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQU83RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFQN0UsTUFBTSxVQUFVLEdBQUcsa0NBQWtDLENBQUM7QUFDdEQsTUFBTSxLQUFLLEdBQUcsZ0NBQWdDLENBQUM7QUFDL0MsTUFBTSxVQUFVLEdBQUcscUNBQXFDLENBQUM7QUFD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aXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF0b0dvanNFZGl0b3JNb2RlbCB9IGZyb20gJy4vZ29qcy1lZGl0b3IubW9kZWwnO1xuaW1wb3J0ICogYXMgZ28gZnJvbSAnZ29qcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgR09fTElDRU5TRV9LRVkgfSBmcm9tICcuLi9jb25zdGFudHMva2V5LmNvbnN0JztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3V0aWxzL3V0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQVRPX0VOVU1fRkxPV19ESVJFQ1RJT04sXG4gIEFUT19FQ09NUE9ORU5UX1BMQU5UX1RZUEUsXG4gIE5PX0RBVEEsXG4gIFRFWFRfVU5LTk9XTixcbiAgVkFMVUVfTkEsXG59IGZyb20gJy4uL2NvbnN0YW50cy92YWx1ZS5jb25zdCc7XG5pbXBvcnQgeyBBVE9fRVBsYW50VHlwZSB9IGZyb20gJy4uL2NvbnN0YW50cy9wbGFudC5jb25zdGFudCc7XG5cbmNvbnN0IElDT05fQUxFUlQgPSAnL2Fzc2V0cy9pbWFnZXMvaWNvbnMvU3RhdGlvbi5zdmcnO1xuY29uc3QgQVJST1cgPSAnL2Fzc2V0cy9pbWFnZXMvaWNvbnMvYXJyb3cuc3ZnJztcbmNvbnN0IEFSUk9XX0dSQVkgPSAnL2Fzc2V0cy9pbWFnZXMvaWNvbnMvYXJyb3ctZ3JheS5zdmcnO1xuY29uc3QgUk9fTElORV9ESVJUWSA9ICcvYXNzZXRzL2ltYWdlcy9pY29ucy9yb19saW5lX2RpcnR5LnN2Zyc7XG5jb25zdCBPVVRGTE9XX0xJTkVfRElSVFkgPSAnL2Fzc2V0cy9pbWFnZXMvaWNvbnMvb3V0Zmxvd19saW5lX2RpcnR5LnBuZyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElDT05TX0JBU0U2NCB9IGZyb20gJy4uL2NvbnN0YW50cy9pY29uLWJhc2U2NC5jb25zdCc7XG5pbXBvcnQgeyBBVE9fU1BPVF9MT0NBVElPTl9UWVBFIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbXBvbmVudHMtZ3JvdXAtY29uc3QnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBBdG9EZWZhdWx0R29qc0VkaXRvciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ21lbnVUcmlnZ2VyJykgbWVudVRyaWdnZXI6IGFueTtcbiAgQElucHV0KCkgbGlua1ZhbGlkYXRpb246IChcbiAgICBmcm9tTm9kZTogZ28uTm9kZSxcbiAgICBmcm9tUG9ydDogZ28uR3JhcGhPYmplY3QsXG4gICAgdG9Ob2RlOiBnby5Ob2RlLFxuICAgIHRvUG9ydDogZ28uR3JhcGhPYmplY3QsXG4gICAgbGluazogZ28uTGlua1xuICApID0+IGJvb2xlYW47XG5cbiAgYWN0aW9uczogYW55W10gPSBbXTtcbiAgYWN0aW9uTWVudUlkOiBzdHJpbmcgPSAnYWN0aW9uTWVudUlkJztcblxuICBteURpYWdyYW1EaXY6IGFueSA9IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctJyArIG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgbXlEaWFncmFtOiBhbnk7XG4gICQgPSBnby5HcmFwaE9iamVjdC5tYWtlO1xuICBhbmltYXRpb25JbnRlcnZhbDogYW55O1xuICBkZWZhdWx0U2NhbGVab29tVG9GaXQ/OiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBfaW5pdGlhbE9wdGlvbnM6IGFueSA9IHtcbiAgICAndG9vbE1hbmFnZXIuaG92ZXJEZWxheSc6IDIwMCxcbiAgICAvLyAnZHJhZ2dpbmdUb29sLmlzRW5hYmxlZCc6IGZhbHNlLFxuICAgIC8vIGluaXRpYWxBdXRvU2NhbGU6IGdvLkRpYWdyYW0uVW5pZm9ybVRvRmlsbCxcbiAgICAvLyBhdXRvU2Nyb2xsUmVnaW9uOiBBdG9Hb2pzRWRpdG9yTW9kZWwuR1JJRF9TSVpFICogNSxcbiAgICBsYXlvdXQ6IHRoaXMuJChnby5MYXllcmVkRGlncmFwaExheW91dCwgeyBkaXJlY3Rpb246IDAgfSksXG4gICAgaW5pdGlhbENvbnRlbnRBbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLFxuICAgIGluaXRpYWxBdXRvU2NhbGU6IGdvLkRpYWdyYW0uVW5pZm9ybSxcbiAgICAvLyBjb250ZW50QWxpZ25tZW50OiBnby5TcG90LkNlbnRlcixcbiAgICAvLyB0aGlzLiQoZ28uRm9yY2VEaXJlY3RlZExheW91dCksXG4gICAgJ3VuZG9NYW5hZ2VyLmlzRW5hYmxlZCc6IHRydWUsIC8vIGVuYWJsZSB1bmRvICYgcmVkb1xuICAgIC8vIFwiYW5pbWF0aW9uTWFuYWdlci5pc0luaXRpYWxcIjogZmFsc2UsXG4gICAgLy8gXCJhbmltYXRpb25NYW5hZ2VyLmlzRW5hYmxlZFwiOiBmYWxzZSxcbiAgICAvLyBcImRyYWdnaW5nVG9vbC5pc0dyaWRTbmFwRW5hYmxlZFwiOiB0cnVlXG4gICAgZHJhZ1NlbGVjdGluZ1Rvb2w6IHRoaXMuJChcbiAgICAgIGdvLkRyYWdTZWxlY3RpbmdUb29sLFxuICAgICAgeyBpc1BhcnRpYWxJbmNsdXNpb246IHRydWUsIGRlbGF5OiA1MCB9LFxuICAgICAge1xuICAgICAgICBib3g6IHRoaXMuJChcbiAgICAgICAgICBnby5QYXJ0LCAvLyByZXBsYWNlIHRoZSBtYWdlbnRhIGJveCB3aXRoIGEgcmVkIG9uZVxuICAgICAgICAgIHsgbGF5ZXJOYW1lOiAnVG9vbCcsIHNlbGVjdGFibGU6IGZhbHNlIH0sXG4gICAgICAgICAgdGhpcy4kKGdvLlNoYXBlLCB7XG4gICAgICAgICAgICBuYW1lOiAnU0hBUEUnLFxuICAgICAgICAgICAgZmlsbDogJ3JnYmEoMjU1LDAsMCwwKScsXG4gICAgICAgICAgICBzdHJva2U6ICcjRTk1RjQ3JyxcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICB9XG4gICAgKSxcbiAgICAnbGlua2luZ1Rvb2wubGlua1ZhbGlkYXRpb24nOiB0aGlzLmNoZWNrTGlua0NvbmRpdGlvbi5iaW5kKHRoaXMpLFxuICAgICdkcmFnZ2luZ1Rvb2wuZG9Nb3VzZU1vdmUnOiBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBkbyB0aGUgc3RhbmRhcmQgYmVoYXZpb3IgYnkgY2FsbGluZyB0aGUgc3VwZXIgbWV0aG9kXG4gICAgICBnby5EcmFnZ2luZ1Rvb2wucHJvdG90eXBlLmRvTW91c2VNb3ZlLmNhbGwodGhpcyk7XG4gICAgICAvLyBpZiBkcmFnZ2luZy1vdXQgZnJvbSB0aGUgZGlhZ3JhbSBpcyBub3QgYWxsb3dlZCwgYW5kXG4gICAgICAvLyBpZiBtb3VzZSBpcyBvdXRzaWRlIG9mIHZpZXdwb3J0XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLmRpYWdyYW0uYWxsb3dEcmFnT3V0ICYmXG4gICAgICAgICF0aGlzLmRpYWdyYW0udmlld3BvcnRCb3VuZHMuY29udGFpbnNQb2ludChcbiAgICAgICAgICB0aGlzLmRpYWdyYW0ubGFzdElucHV0LmRvY3VtZW50UG9pbnRcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuZGlhZ3JhbS5lbnN1cmVCb3VuZHMoKTtcbiAgICAgICAgY29uc3QgdnAgPSB0aGlzLmRpYWdyYW0ubGFzdElucHV0LnZpZXdQb2ludDtcbiAgICAgICAgY29uc3QgZHAgPSB0aGlzLmRpYWdyYW0ucG9zaXRpb24uY29weSgpO1xuICAgICAgICBpZiAodnAueCA8IDApIGRwLnggLT0gMTA7XG4gICAgICAgIGVsc2UgaWYgKHZwLnggPiAwKSBkcC54ICs9IDEwO1xuICAgICAgICBpZiAodnAueSA8IDApIGRwLnkgLT0gMTA7XG4gICAgICAgIGVsc2UgaWYgKHZwLnkgPiAwKSBkcC55ICs9IDEwO1xuICAgICAgICB0aGlzLmRpYWdyYW0ucG9zaXRpb24gPSBkcDsgLy8gc2Nyb2xsIGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIG1vdXNlXG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBMYXlvdXRDb21wbGV0ZWQ6ICgpID0+IHtcbiAgICAvLyAgICAgdGhpcy5teURpYWdyYW0uem9vbVRvRml0KCk7XG4gICAgLy8gICAgIHRoaXMuZGVmYXVsdFNjYWxlWm9vbVRvRml0ID0gdGhpcy5teURpYWdyYW0uc2NhbGU7XG4gICAgLy8gICAgIGlmICghdGhpcy5pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5KSB7XG4gICAgLy8gICAgICAgICBjb25zdCBzaXplTWFyZ2luID0gQXRvR29qc0VkaXRvck1vZGVsLkdSSURfU0laRSAqIDE1O1xuICAgIC8vICAgICAgICAgdGhpcy5teURpYWdyYW0ucGFkZGluZyA9IG5ldyBnby5NYXJnaW4oc2l6ZU1hcmdpbik7XG4gICAgLy8gICAgIH1cbiAgICAvLyB9LFxuICB9O1xuXG4gIGNoZWNrTGlua0NvbmRpdGlvbihcbiAgICBmcm9tTm9kZTogZ28uTm9kZSxcbiAgICBmcm9tUG9ydDogZ28uR3JhcGhPYmplY3QsXG4gICAgdG9Ob2RlOiBnby5Ob2RlLFxuICAgIHRvUG9ydDogZ28uR3JhcGhPYmplY3QsXG4gICAgbGluazogZ28uTGlua1xuICApOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5saW5rVmFsaWRhdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMubGlua1ZhbGlkYXRpb24oZnJvbU5vZGUsIGZyb21Qb3J0LCB0b05vZGUsIHRvUG9ydCwgbGluayk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlOyAvLyBN4bq3YyDEkeG7i25oIGNobyB0csaw4budbmcgaOG7o3Aga2jDtG5nIGPDsyBow6BtIGxpbmtWYWxpZGF0aW9uIMSRxrDhu6NjIHRydXnhu4FuIHbDoG9cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBpbml0aWFsT3B0aW9ucyh2OiBhbnkpIHtcbiAgICB0aGlzLl9pbml0aWFsT3B0aW9ucyA9IF8ubWVyZ2UodGhpcy5faW5pdGlhbE9wdGlvbnMsIHYpO1xuICAgIC8vIF8uZXh0ZW5kKHYsIHRoaXMuX2luaXRpYWxPcHRpb25zKTtcbiAgfVxuXG4gIGdldCBpbml0aWFsT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5faW5pdGlhbE9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIF9lZGl0b3I6IEF0b0dvanNFZGl0b3JNb2RlbDtcbiAgQElucHV0KCkgc2V0IGVkaXRvcih2OiBBdG9Hb2pzRWRpdG9yTW9kZWwpIHtcbiAgICB0aGlzLl9lZGl0b3IgPSB2O1xuICAgIGlmICh2KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pbml0RGlhZ3JhbSgpO1xuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZWRpdG9yKCk6IEF0b0dvanNFZGl0b3JNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuX2VkaXRvcjtcbiAgfVxuXG4gIEBJbnB1dCgpIGlzU2hvd05vZGVJbmZvOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHBsYW50U2F0dXM6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbFJlZjogRWxlbWVudFJlZikge1xuICAgIGdvLkRpYWdyYW0ubGljZW5zZUtleSA9IEdPX0xJQ0VOU0VfS0VZO1xuICB9XG5cbiAgQE91dHB1dCgpIG9uTW9kZWxDaGFuZ2VMaXN0ZW5lckV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvbkNsaWNrSW5mb0J1dHRvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uT3BlbldpemFyZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uT3BlbkRldGFpbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uT3BlbkFzc2V0UGFyYW1ldGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb25PcGVuSW5zaWdodE1hcHBpbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvbkhvdmVySW5mb0J1dHRvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uSG92ZXJBbGVydDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uRG91YmxlQ2xpY2tOb2RlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb25PcGVuQ2hhbmdlSWNvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gQ2xpY2sgY29tcG9uZW50XG4gIEBPdXRwdXQoKSBvbkNsaWNrQ29tcG9lbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjYWxsYmFja0ltYWdlVG9wb2xvZ3k6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLy8gQ2xpY2sgcGFyYW0gb24gUGFyYW1UYWJsZVxuICBAT3V0cHV0KCkgb25DbGlrUGFyYW1PZlRhYmxlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8vIERlbGV0ZSBOb2RlXG4gIEBPdXRwdXQoKSBvbkRlbGV0ZU5vZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvblVuZG86IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIC8vIFJlbmFtZVxuICBAT3V0cHV0KCkgb25SZW5hbWU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgaXNBZGRlZE1vZGVsQ2hhbmdlZExpc3RlbmVyczogYm9vbGVhbjtcbiAgY29tbWl0dGVkVHJhbnNhY3Rpb25TdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIC8vIEFkZFN1YiBhbmQgVW5TdWJcbiAgX3N1YnNjcmlwdGlvbkxpc3Q6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsKCk7XG4gICAgdGhpcy5zdG9wQW5pbWF0aW9uKCk7XG4gICAgLy8gdGhpcy5teURpYWdyYW0/LmNsZWFyKCk7XG4gICAgaWYgKCEhdGhpcy5teURpYWdyYW0/LmRpdikge1xuICAgICAgdGhpcy5teURpYWdyYW0uZGl2ID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRoaXMubXlEaWFncmFtKSB7XG4gICAgICB0aGlzLm15RGlhZ3JhbS5jbGVhcigpO1xuICAgIH1cbiAgICBpZiAodGhpcy5teURpYWdyYW0gIT0gbnVsbCAmJiB0aGlzLm15RGlhZ3JhbS5ub2RlVGVtcGxhdGVNYXAgIT0gbnVsbCkge1xuICAgICAgdGhpcy5teURpYWdyYW0ubm9kZVRlbXBsYXRlTWFwLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubXlEaWFncmFtICE9IG51bGwgJiYgdGhpcy5teURpYWdyYW0uZ3JvdXBUZW1wbGF0ZU1hcCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm15RGlhZ3JhbS5ncm91cFRlbXBsYXRlTWFwLmNsZWFyKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm15RGlhZ3JhbSAhPSBudWxsICYmIHRoaXMubXlEaWFncmFtLmxpbmtUZW1wbGF0ZSAhPSBudWxsKSB7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5teURpYWdyYW0ubGlua1RlbXBsYXRlTWFwLnRvQXJyYXkoKSkge1xuICAgICAgICB0aGlzLm15RGlhZ3JhbS5saW5rVGVtcGxhdGVNYXAucmVtb3ZlKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubXlEaWFncmFtID0gbnVsbDtcbiAgfVxuXG4gIGFkZE9yUmVtb3ZlQ29tcG9lbnRUZW1wbGF0ZSgpIHtcbiAgICAvLyBBZGQgTm9kZSBhbmQgTm9kZSBHcm91cFxuICAgIF8uZm9yRWFjaCh0aGlzLmVkaXRvci5kYXRhPy5ub2RlRGF0YUFycmF5LCAobm9kZSkgPT4ge1xuICAgICAgdGhpcy5hZGRUZW1wbGF0ZShub2RlKTtcbiAgICB9KTtcbiAgICAvLyBSZW1vdmUgTm9kZSBhbmQgTm9kZSBHcm91cFxuICAgIF8uZm9yRWFjaCh0aGlzLm15RGlhZ3JhbS5ub2RlVGVtcGxhdGVNYXA/LkhiLCAodGVtcCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB0ZW1wPy5rZXkgJiZcbiAgICAgICAgIXRoaXMuZWRpdG9yLmRhdGE/Lm5vZGVEYXRhQXJyYXk/LnNvbWUoXG4gICAgICAgICAgKG5vZGUpID0+IG5vZGU/LnR5cGUgPT09IHRlbXA/LmtleVxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5teURpYWdyYW0ubm9kZVRlbXBsYXRlTWFwLnJlbW92ZSh0ZW1wPy5rZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF8uZm9yRWFjaCh0aGlzLm15RGlhZ3JhbS5ncm91cFRlbXBsYXRlTWFwPy5IYiwgKHRlbXApID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgdGVtcD8ua2V5ICYmXG4gICAgICAgICF0aGlzLmVkaXRvci5kYXRhPy5ub2RlRGF0YUFycmF5Py5zb21lKFxuICAgICAgICAgIChub2RlKSA9PiBub2RlPy50eXBlID09PSB0ZW1wPy5rZXlcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubXlEaWFncmFtLmdyb3VwVGVtcGxhdGVNYXAucmVtb3ZlKHRlbXA/LmtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGRUZW1wbGF0ZShub2RlKSB7XG4gICAgdGhpcy5hZGROb2RlVGVtcGxhdGUobm9kZSk7XG4gICAgdGhpcy5hZGRHcm91cFRlbXBsYXRlKG5vZGUpO1xuICB9XG5cbiAgYWRkR3JvdXBUZW1wbGF0ZShub2RlKSB7XG4gICAgaWYgKHRoaXMubXlEaWFncmFtLmdyb3VwVGVtcGxhdGVNYXA/LkhiPy5bbm9kZT8udHlwZV0gfHwgIW5vZGU/LmlzR3JvdXApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gR3JvdXBcbiAgICBpZiAobm9kZT8udHlwZSA9PT0gQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlJPX1dBVEVSX1RSRUFUTUVOVCkge1xuICAgICAgdGhpcy5tYWtlR3JvdXBST1BsYW50VGVtcGxhdGUoXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5pY29uLFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0ubmFtZVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobm9kZT8udHlwZSA9PT0gQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkJPSUxFUikge1xuICAgICAgdGhpcy5tYWtlR3JvdXBCb2lsZXJUZW1wbGF0ZShcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLmljb24sXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5uYW1lXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuQ09PTElOR19UT1dFUikge1xuICAgICAgdGhpcy5tYWtlR3JvdXBDb29saW5nVG93ZXJUZW1wbGF0ZShcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLmljb24sXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5uYW1lXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIG5vZGU/LnR5cGUgPT09XG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuSU1NRVJTRURfVUZfV0FURVJfVFJFQVRNRU5UU1xuICAgICkge1xuICAgICAgdGhpcy5tYWtlR3JvdXBJbW1lcnNlZFVGVGVtcGxhdGUoXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5pY29uLFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0ubmFtZVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBub2RlPy50eXBlID09PVxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlBSRVNTVVJJWkVEX1VGX1dBVEVSX1RSRUFUTUVOVFNcbiAgICApIHtcbiAgICAgIHRoaXMubWFrZUdyb3VwQ29vbGluZ1Rvd2VyVGVtcGxhdGUoXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5pY29uLFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0ubmFtZVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobm9kZT8udHlwZSA9PT0gQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlpPTkUpIHtcbiAgICAgIHRoaXMubWFrZUdyb3VwWm9uZVRlbXBsYXRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgbm9kZT8udHlwZSA9PT0gQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlBMQU5UX0NFTEwgJiZcbiAgICAgIG5vZGU/LmlzR3JvdXBcbiAgICApIHtcbiAgICAgIHRoaXMuZ3JvdXBQbGFudENlbGxUZW1wbGF0ZShcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLmljb24sXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5uYW1lXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuUExBTlRfQ0VMTF9JTlBVVF9HUk9VUFxuICAgICkge1xuICAgICAgdGhpcy5ncm91cFBDSW5wdXRPck91dFRlbXBsYXRlKFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0uaWNvbixcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLm5hbWUsXG4gICAgICAgIG5ldyBnby5NYXJnaW4oMCwgNTAsIDAsIDApXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuUExBTlRfQ0VMTF9PVVRQVVRfR1JPVVBcbiAgICApIHtcbiAgICAgIHRoaXMuZ3JvdXBQQ0lucHV0T3JPdXRUZW1wbGF0ZShcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLmljb24sXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5uYW1lLFxuICAgICAgICBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDUwKVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbm9kZT8udHlwZSA9PT0gQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkdST1VQX0JBU0lDX0NPTVBPTkVOVFxuICAgICkge1xuICAgICAgdGhpcy5tYWtlR3JvdXBCYXNpY0NvbXBvbmVudChcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLmljb24sXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5uYW1lXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWFrZUdyb3VwVGVtcGxhdGUoXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0uaWNvbixcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5uYW1lXG4gICAgKTtcbiAgfVxuXG4gIGFkZE5vZGVUZW1wbGF0ZShub2RlKSB7XG4gICAgaWYgKHRoaXMubXlEaWFncmFtLm5vZGVUZW1wbGF0ZU1hcD8uSGJbbm9kZT8udHlwZV0gfHwgbm9kZT8uaXNHcm91cCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBOb3QgR3JvdXBcbiAgICAvLyBDb21wb25lbnQgV2F0ZXIgTm9ybWFsXG4gICAgaWYgKFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLlRZUEVfVEVNUExBVEVfV0FURVJfTk9STUFMPy5pbmNsdWRlcyhub2RlPy50eXBlKSAmJlxuICAgICAgIW5vZGU/LmlzR3JvdXBcbiAgICApIHtcbiAgICAgIHRoaXMubWFrZUVudGl0eVRlbXBsYXRlKFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0uaWNvbiA/PyAnJyxcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLm5hbWUgPz8gJydcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIENvbXBvbmVudCBXYXRlciBXaXRoZHJhdyBPciBEaXNjaGFyZ2VcbiAgICBpZiAoXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuVFlQRV9URU1QTEFURV9XQVRFUl9XSVRIRFJBV19PUl9ESVNDSEFSR0U/LmluY2x1ZGVzKFxuICAgICAgICBub2RlPy50eXBlXG4gICAgICApICYmXG4gICAgICAhbm9kZT8uaXNHcm91cFxuICAgICkge1xuICAgICAgdGhpcy5tYWtlRW50aXR5V2l0aGRyYXdPckRpc2NoYXJnZShcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLmljb24gPz8gJycsXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5uYW1lID8/ICcnXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENvbXBvbmVudCBFbmVyZ3kgTm9ybWFsXG4gICAgaWYgKFxuICAgICAgKEF0b0dvanNFZGl0b3JNb2RlbC5UWVBFX1RFTVBMQVRFX0VMRUNUUklDSVRZPy5pbmNsdWRlcyhub2RlPy50eXBlKSB8fFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuVFlQRV9URU1QTEFURV9OQVRVUkFMX0dBUz8uaW5jbHVkZXMobm9kZT8udHlwZSkgfHxcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLlRZUEVfVEVNUExBVEVfRlVFTD8uaW5jbHVkZXMobm9kZT8udHlwZSkgfHxcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLlRZUEVfVEVNUExBVEVfU1RFQU0/LmluY2x1ZGVzKG5vZGU/LnR5cGUpKSAmJlxuICAgICAgIW5vZGU/LmlzR3JvdXBcbiAgICApIHtcbiAgICAgIHRoaXMubWFrZUVudGl0eVRlbXBsYXRlRW5lcmd5KFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0uaWNvbiA/PyAnJyxcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLm5hbWUgPz8gJydcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKG5vZGU/LnR5cGUgPT09IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5JTUFHRV9URU1QTEFURSkge1xuICAgICAgdGhpcy5tYWtlSW1hZ2VUZW1wbGF0ZSgpO1xuICAgIH1cbiAgICBpZiAobm9kZT8udHlwZSA9PT0gQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlBBUkFNX1RBQkxFKSB7XG4gICAgICB0aGlzLm1ha2VQYXJhbVRhYmxlKCk7XG4gICAgfVxuICAgIGlmIChub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuTUFTU19CQUxBTkNFKSB7XG4gICAgICB0aGlzLm1ha2VNYXNzQmFsYW5jZSgpO1xuICAgIH1cbiAgICAvLyBUZXh0IE5vZGVcbiAgICBpZiAobm9kZT8udHlwZSA9PT0gQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlRFWFRfTk9ERSkge1xuICAgICAgdGhpcy5tYWtlVGV4dFRlbXBsYXRlKCk7XG4gICAgfVxuICAgIC8vIFZhbHVlIE5vZGVcbiAgICBpZiAobm9kZT8udHlwZSA9PT0gQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlZBTFVFX05PREUpIHtcbiAgICAgIHRoaXMubWFrZVZhbHVlTm9kZVRlbXBsYXRlKCk7XG4gICAgfVxuXG4gICAgLy8gVmFsdWUgTm9kZVxuICAgIGlmIChub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRU1QVFkpIHtcbiAgICAgIHRoaXMubWFrZUVtcHR5Tm9kZVRlbXBsYXRlKCk7XG4gICAgfVxuXG4gICAgLy8gVmFsdWUgTGFiZWxcbiAgICBpZiAobm9kZT8udHlwZSA9PT0gQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlZBTFVFX0xBQkVMKSB7XG4gICAgICB0aGlzLm1ha2VWYWx1ZUxhYmVsVGVtcGxhdGUoKTtcbiAgICB9XG4gICAgLy8gTGFiZWxcbiAgICBpZiAobm9kZT8udHlwZSA9PT0gQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlRFWFRfTEFCRUwpIHtcbiAgICAgIHRoaXMubWFrZVRleHRMYWJlbFRlbXBsYXRlKCk7XG4gICAgfVxuICAgIC8vIFpvbmUgaXRlbVxuICAgIGlmIChub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuWk9ORV9FTkVSR1lfSVRFTSkge1xuICAgICAgdGhpcy5tYWtlWm9uZUl0ZW1UZW1wbGF0ZSgpO1xuICAgIH1cbiAgICAvLyBkYXRhIGJveFxuICAgIGlmIChub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuREFUQV9CT1gpIHtcbiAgICAgIHRoaXMubWFrZURhdGFCb3hUZW1wbGF0ZSgpO1xuICAgIH1cblxuICAgIC8vIFNwZWNpYWwgdGVtcGxhdGVcbiAgICBpZiAoQXRvR29qc0VkaXRvck1vZGVsLlRZUEVfVEVNUExBVEVfU1BFQ0lBTD8uaW5jbHVkZXMobm9kZT8udHlwZSkpIHtcbiAgICAgIHRoaXMubWFrZVNwZWNpYWxUZW1wbGF0ZShcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW25vZGU/LnR5cGVdLmljb24sXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5uYW1lXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFBsYW50IENlbGxcbiAgICBpZiAoXG4gICAgICBub2RlPy50eXBlID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuUExBTlRfQ0VMTCAmJlxuICAgICAgIW5vZGU/LmlzR3JvdXBcbiAgICApIHtcbiAgICAgIHRoaXMucGxhbnRDZWxsVGVtcGxhdGUoXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tub2RlPy50eXBlXS5pY29uLFxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbbm9kZT8udHlwZV0ubmFtZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpbml0RGlhZ3JhbSgpIHtcbiAgICBpZiAoISF0aGlzLm15RGlhZ3JhbT8uZGl2KSB7XG4gICAgICAvLyB0aGlzLm15RGlhZ3JhbS5kaXYgPSBudWxsO1xuICAgICAgaWYgKHRoaXMuaW5pdGlhbE9wdGlvbnM/LmdyaWQpIHtcbiAgICAgICAgdGhpcy5teURpYWdyYW1bJ2dyaWQnXSA9IHRoaXMuaW5pdGlhbE9wdGlvbnM/LmdyaWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm15RGlhZ3JhbVsnZ3JpZCddID0gdGhpcy4kKGdvLlBhbmVsLCAnR3JpZCcpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaW5pdGlhbE9wdGlvbnM/LkxheW91dENvbXBsZXRlZCkge1xuICAgICAgICB0aGlzLm15RGlhZ3JhbS5hZGREaWFncmFtTGlzdGVuZXIoXG4gICAgICAgICAgJ0xheW91dENvbXBsZXRlZCcsXG4gICAgICAgICAgdGhpcy5pbml0aWFsT3B0aW9ucz8uTGF5b3V0Q29tcGxldGVkXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pbml0aWFsT3B0aW9ucz8uTGlua1Jlc2hhcGVkKSB7XG4gICAgICAgIHRoaXMubXlEaWFncmFtLmFkZERpYWdyYW1MaXN0ZW5lcihcbiAgICAgICAgICAnTGlua1Jlc2hhcGVkJyxcbiAgICAgICAgICB0aGlzLmluaXRpYWxPcHRpb25zPy5MaW5rUmVzaGFwZWRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmluaXRpYWxPcHRpb25zPy5TZWxlY3Rpb25Nb3ZlZCkge1xuICAgICAgICB0aGlzLm15RGlhZ3JhbS5hZGREaWFncmFtTGlzdGVuZXIoXG4gICAgICAgICAgJ1NlbGVjdGlvbk1vdmVkJyxcbiAgICAgICAgICB0aGlzLmluaXRpYWxPcHRpb25zPy5TZWxlY3Rpb25Nb3ZlZFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaW5pdGlhbE9wdGlvbnM/LkNoYW5nZWRTZWxlY3Rpb24pIHtcbiAgICAgICAgdGhpcy5teURpYWdyYW0uYWRkRGlhZ3JhbUxpc3RlbmVyKFxuICAgICAgICAgICdDaGFuZ2VkU2VsZWN0aW9uJyxcbiAgICAgICAgICB0aGlzLmluaXRpYWxPcHRpb25zPy5DaGFuZ2VkU2VsZWN0aW9uXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLm15RGlhZ3JhbS5kcmFnU2VsZWN0aW5nVG9vbCA9IHRoaXMuaW5pdGlhbE9wdGlvbnM/LmRyYWdTZWxlY3RpbmdUb29sO1xuICAgICAgdGhpcy5teURpYWdyYW0udG9vbE1hbmFnZXIuZHJhZ2dpbmdUb29sLmlzR3JpZFNuYXBFbmFibGVkID1cbiAgICAgICAgdGhpcy5pbml0aWFsT3B0aW9ucz8uWydkcmFnZ2luZ1Rvb2wuaXNHcmlkU25hcEVuYWJsZWQnXSA/PyBmYWxzZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5teURpYWdyYW0udG9vbE1hbmFnZXIgJiZcbiAgICAgICAgdGhpcy5teURpYWdyYW0udG9vbE1hbmFnZXIuZHJhZ2dpbmdUb29sXG4gICAgICApIHtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbE9wdGlvbnM/LlsnZHJhZ2dpbmdUb29sLmdyaWRTbmFwQ2VsbFNpemUnXSkge1xuICAgICAgICAgIHRoaXMubXlEaWFncmFtLnRvb2xNYW5hZ2VyLmRyYWdnaW5nVG9vbC5ncmlkU25hcENlbGxTaXplID1cbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbE9wdGlvbnM/LlsnZHJhZ2dpbmdUb29sLmdyaWRTbmFwQ2VsbFNpemUnXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiAodGhpcy5pbml0aWFsT3B0aW9ucz8uWydkcmFnZ2luZ1Rvb2wuaXNHcmlkU25hcEVuYWJsZWQnXSkge1xuICAgICAgICAvLyAgICAgdGhpcy5teURpYWdyYW0udG9vbE1hbmFnZXIuZHJhZ2dpbmdUb29sLmlzR3JpZFNuYXBFbmFibGVkID1cbiAgICAgICAgLy8gICAgICAgICB0aGlzLmluaXRpYWxPcHRpb25zPy5bJ2RyYWdnaW5nVG9vbC5pc0dyaWRTbmFwRW5hYmxlZCddO1xuICAgICAgICAvLyB9XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxPcHRpb25zPy5bJ2RyYWdnaW5nVG9vbC5kb01vdXNlTW92ZSddKSB7XG4gICAgICAgICAgdGhpcy5teURpYWdyYW0udG9vbE1hbmFnZXIuZHJhZ2dpbmdUb29sLmRvTW91c2VNb3ZlID1cbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbE9wdGlvbnM/LlsnZHJhZ2dpbmdUb29sLmRvTW91c2VNb3ZlJ107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pbml0aWFsT3B0aW9ucz8uWydsaW5raW5nVG9vbC5saW5rVmFsaWRhdGlvbiddKSB7XG4gICAgICAgICAgdGhpcy5teURpYWdyYW0udG9vbE1hbmFnZXIubGlua2luZ1Rvb2wubGlua1ZhbGlkYXRpb24gPVxuICAgICAgICAgICAgdGhpcy5pbml0aWFsT3B0aW9ucz8uWydsaW5raW5nVG9vbC5saW5rVmFsaWRhdGlvbiddO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLm15RGlhZ3JhbS5jb250ZW50QWxpZ25tZW50ID1cbiAgICAgICAgdGhpcy5pbml0aWFsT3B0aW9ucz8uY29udGVudEFsaWdubWVudCA/PyBnby5TcG90LkNlbnRlcjtcbiAgICAgIHRoaXMubXlEaWFncmFtLmxheW91dCA9IHRoaXMuaW5pdGlhbE9wdGlvbnM/LmxheW91dDtcbiAgICAgIC8vIHRoaXMubXlEaWFncmFtLm1pblZpZXdwb3J0Qm91bmRzID0gbmV3IGdvLlJlY3QoMCwgMCwgMTIwMCwgMTIwMCk7XG4gICAgICBpZiAoISF0aGlzLmVkaXRvcj8uZGF0YSkge1xuICAgICAgICB0aGlzLmFkZE9yUmVtb3ZlQ29tcG9lbnRUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLm15RGlhZ3JhbS5tb2RlbCA9IGdvLk1vZGVsLmZyb21Kc29uKHRoaXMuZWRpdG9yLmRhdGEpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmFuaW1hdGlvbkludGVydmFsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuYW5pbWF0aW9uSW50ZXJ2YWwpO1xuICAgIH1cbiAgICBjb25zdCBkaWFncmFtRGl2ID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudD8uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcbiAgICAgIHRoaXMubXlEaWFncmFtRGl2XG4gICAgKT8uWzBdO1xuICAgIHRoaXMubXlEaWFncmFtID0gdGhpcy4kKGdvLkRpYWdyYW0sIGRpYWdyYW1EaXYsIHRoaXMuaW5pdGlhbE9wdGlvbnMpO1xuICAgIC8vIHRoaXMubXlEaWFncmFtLmluaXRpYWxQb3NpdGlvbiA9IG5ldyBnby5Qb2ludCgwLCAwKTtcbiAgICB0aGlzLmFkZE9yUmVtb3ZlQ29tcG9lbnRUZW1wbGF0ZSgpO1xuXG4gICAgdGhpcy5tYWtlTGlua1RlbXBsYXRlKCk7XG4gICAgLy8gYW5pbWF0aW9uXG4gICAgdGhpcy5zdGFydEFuaW1hdGlvbigpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgIC8vIGlmICghdGhpcy5pc0FkZGVkTW9kZWxDaGFuZ2VkTGlzdGVuZXJzKSB7XG4gICAgICB0aGlzLmlzQWRkZWRNb2RlbENoYW5nZWRMaXN0ZW5lcnMgPSB0cnVlO1xuICAgICAgdGhpcy5teURpYWdyYW0uYWRkTW9kZWxDaGFuZ2VkTGlzdGVuZXIoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGUuY2hhbmdlID09PSBnby5DaGFuZ2VkRXZlbnQuUmVtb3ZlICYmXG4gICAgICAgICAgZS5wcm9wZXJ0eU5hbWUgPT09ICdub2RlRGF0YUFycmF5J1xuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gZS5vbGRWYWx1ZTtcbiAgICAgICAgICBzZWxmLm9uRGVsZXRlTm9kZS5lbWl0KGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlLmlzVHJhbnNhY3Rpb25GaW5pc2hlZCkge1xuICAgICAgICAgIHNlbGYuY29tbWl0dGVkVHJhbnNhY3Rpb25TdWJqZWN0Py5uZXh0KGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMubXlEaWFncmFtLmNvbW1hbmRIYW5kbGVyLnVuZG8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNlbGYub25VbmRvLmVtaXQoKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBpZiAoISF0aGlzLmVkaXRvcikge1xuICAgICAgdGhpcy5teURpYWdyYW0ubW9kZWwgPSBnby5Nb2RlbC5mcm9tSnNvbih0aGlzLmVkaXRvci5kYXRhKTtcbiAgICB9XG4gIH1cblxuICBpbml0R3JvdXBUZW1wbGF0ZUVuZXJneSgpIHtcbiAgICAvLyBmb3Igd2F0ZXJcbiAgICBjb25zdCB7XG4gICAgICBTVE9SQUdFLFxuICAgICAgV0FURVJfVFJFQVRNRU5ULFxuICAgICAgREVNSU5fV0FURVJfVFJFQVRNRU5ULFxuICAgICAgLy8gUk9fV0FURVJfVFJFQVRNRU5ULFxuICAgICAgUFJPQ0VTUyxcbiAgICAgIFdBU1RFV0FURVJfVFJFQVRNRU5ULFxuICAgICAgREFGX1dBU1RFV0FURVJfVFJFQVRNRU5ULFxuICAgICAgRVRQX1dBU1RFV0FURVJfVFJFQVRNRU5ULFxuICAgICAgTUJSX1dBU1RFV0FURVJfVFJFQVRNRU5ULFxuICAgICAgWkxEX1dBU1RFV0FURVJfVFJFQVRNRU5ULFxuICAgICAgQ09PTElOR19UT1dFUixcbiAgICAgIEJPSUxFUixcbiAgICAgIE9USEVSLFxuICAgICAgTEFORFNDQVBJTkdfSVJSSUdBVElPTixcbiAgICAgIFBSRVNTVVJJWkVEX1VGX1dBVEVSX1RSRUFUTUVOVFMsXG4gICAgICBJTU1FUlNFRF9VRl9XQVRFUl9UUkVBVE1FTlRTLFxuICAgIH0gPSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVM7XG4gICAgY29uc3Qgd2F0ZXJHcm91cHMgPSBbXG4gICAgICBTVE9SQUdFLFxuICAgICAgV0FURVJfVFJFQVRNRU5ULFxuICAgICAgREVNSU5fV0FURVJfVFJFQVRNRU5ULFxuICAgICAgLy8gUk9fV0FURVJfVFJFQVRNRU5ULFxuICAgICAgUFJPQ0VTUyxcbiAgICAgIFdBU1RFV0FURVJfVFJFQVRNRU5ULFxuICAgICAgREFGX1dBU1RFV0FURVJfVFJFQVRNRU5ULFxuICAgICAgRVRQX1dBU1RFV0FURVJfVFJFQVRNRU5ULFxuICAgICAgTUJSX1dBU1RFV0FURVJfVFJFQVRNRU5ULFxuICAgICAgWkxEX1dBU1RFV0FURVJfVFJFQVRNRU5ULFxuICAgICAgQ09PTElOR19UT1dFUixcbiAgICAgIEJPSUxFUixcbiAgICAgIE9USEVSLFxuICAgICAgTEFORFNDQVBJTkdfSVJSSUdBVElPTixcbiAgICAgIFBSRVNTVVJJWkVEX1VGX1dBVEVSX1RSRUFUTUVOVFMsXG4gICAgICBJTU1FUlNFRF9VRl9XQVRFUl9UUkVBVE1FTlRTLFxuICAgIF07XG4gICAgd2F0ZXJHcm91cHMubWFwKChlKSA9PiB7XG4gICAgICBpZiAoISFBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbZV0pIHtcbiAgICAgICAgdGhpcy5tYWtlR3JvdXBUZW1wbGF0ZShcbiAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbZV0uaWNvbixcbiAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbZV0ubmFtZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gZWxlY3RyaWNhbFxuICAgIHRoaXMuaW5pdEVsZWN0cmljR3JvdXBUZW1wbGF0ZSgpO1xuXG4gICAgLy8gRnVlbFxuICAgIHRoaXMuaW5pdEZ1ZWxHcm91cFRlbXBsYXRlKCk7XG5cbiAgICAvLyBHYXNcbiAgICB0aGlzLmluaXRHYXNHcm91cFRlbXBsYXRlKCk7XG4gIH1cblxuICBpbml0RWxlY3RyaWNEaWFncmFtKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIEdSSUQsXG4gICAgICBESUVTRUxfR0VORVJBVE9SUyxcbiAgICAgIEJBVFRFUllfRU5FUkdZX1NUT1JBR0UsXG4gICAgICBMSUdIVElOR19TWVNURU1TLFxuICAgICAgTElHSFRJTkdTLFxuICAgICAgRUxFQ1RSSUNfTUVURVJTLFxuICAgICAgVFJBTlNGT1JNRVJTLFxuICAgICAgRUxFQ1RSSUNfRkxZV0hFRUxfRU5FUkdZX1NUT1JBR0UsXG4gICAgICBQVU1QRURfSFlEUk9fU1RPUkFHRSxcbiAgICAgIFRIRVJNQUxfRU5FUkdZX1NUT1JBR0UsXG4gICAgICBTVVBFUl9DQVBBQ0lUT1JfRU5FUkdZX1NUT1JBR0UsXG4gICAgICBTV0lUQ0hfR0VBUlMsXG4gICAgICBQUk9DRVNTX0NPTlRST0xfQVVUT01BVElPTl9TWVNURU1TLFxuICAgICAgUFJPQ0VTU19FUVVJUE1FTlRfTUFDSElORVMsXG4gICAgICBPRkZJQ0VfRVFVSVBNRU5ULFxuICAgICAgUE9XRVJfRElTVFJJQlVUSU9OX0NPTlRST0xfU1lTVEVNUyxcbiAgICAgIFBPV0VSX0RJU1RSSUJVVElPTl9TWVNURU1TLFxuICAgICAgTkFUVVJBTF9HQVNfR0VORVJBVE9SUyxcbiAgICAgIE1PVE9SX0NPTlRST0xTLFxuICAgICAgVkFSSUFCTEVfRlJFUVVFTkNZX0RSSVZFUlMsXG4gICAgICBFTEVDVFJJQ19IVkFDLFxuICAgICAgQ09NUFJFU1NFRF9BSVJfU1lTVEVNUyxcbiAgICAgIFJFRlJJR0VSQVRJT05fQ09PTElOR19TWVNURU1TLFxuICAgICAgTUFURVJJQUxfSEFORExJTkdfRVFVSVBNRU5ULFxuICAgICAgV0lORF9QT1dFUixcbiAgICAgIEVMRUNUUklDX0lORFVTVFJJQUxfTU9UT1JTLFxuICAgICAgR1JPVU5ESU5HLFxuICAgIH0gPSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVM7XG4gICAgY29uc3QgTGlzdEl0ZW1zQ3JlYXRlRW50aXR5VGVtcGxhdGUgPSBbXG4gICAgICBHUklELFxuICAgICAgRElFU0VMX0dFTkVSQVRPUlMsXG4gICAgICBCQVRURVJZX0VORVJHWV9TVE9SQUdFLFxuICAgICAgTElHSFRJTkdfU1lTVEVNUyxcbiAgICAgIExJR0hUSU5HUyxcbiAgICAgIEVMRUNUUklDX01FVEVSUyxcbiAgICAgIFRSQU5TRk9STUVSUyxcbiAgICAgIEVMRUNUUklDX0ZMWVdIRUVMX0VORVJHWV9TVE9SQUdFLFxuICAgICAgUFVNUEVEX0hZRFJPX1NUT1JBR0UsXG4gICAgICBUSEVSTUFMX0VORVJHWV9TVE9SQUdFLFxuICAgICAgU1VQRVJfQ0FQQUNJVE9SX0VORVJHWV9TVE9SQUdFLFxuICAgICAgU1dJVENIX0dFQVJTLFxuICAgICAgUFJPQ0VTU19DT05UUk9MX0FVVE9NQVRJT05fU1lTVEVNUyxcbiAgICAgIFBST0NFU1NfRVFVSVBNRU5UX01BQ0hJTkVTLFxuICAgICAgT0ZGSUNFX0VRVUlQTUVOVCxcbiAgICAgIFBPV0VSX0RJU1RSSUJVVElPTl9DT05UUk9MX1NZU1RFTVMsXG4gICAgICBQT1dFUl9ESVNUUklCVVRJT05fU1lTVEVNUyxcbiAgICAgIE5BVFVSQUxfR0FTX0dFTkVSQVRPUlMsXG4gICAgICBNT1RPUl9DT05UUk9MUyxcbiAgICAgIFZBUklBQkxFX0ZSRVFVRU5DWV9EUklWRVJTLFxuICAgICAgRUxFQ1RSSUNfSFZBQyxcbiAgICAgIENPTVBSRVNTRURfQUlSX1NZU1RFTVMsXG4gICAgICBSRUZSSUdFUkFUSU9OX0NPT0xJTkdfU1lTVEVNUyxcbiAgICAgIE1BVEVSSUFMX0hBTkRMSU5HX0VRVUlQTUVOVCxcbiAgICAgIFdJTkRfUE9XRVIsXG4gICAgICBFTEVDVFJJQ19JTkRVU1RSSUFMX01PVE9SUyxcbiAgICAgIEdST1VORElORyxcbiAgICBdO1xuICAgIExpc3RJdGVtc0NyZWF0ZUVudGl0eVRlbXBsYXRlLm1hcCgoZSkgPT4ge1xuICAgICAgaWYgKCEhQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW2VdKSB7XG4gICAgICAgIHRoaXMubWFrZUVudGl0eVRlbXBsYXRlRW5lcmd5KFxuICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tlXS5pY29uLFxuICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tlXS5uYW1lXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpbml0RWxlY3RyaWNHcm91cFRlbXBsYXRlKCkge1xuICAgIGNvbnN0IGxpc3RJdGVtcyA9IFtcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkJBVFRFUllfRU5FUkdZX1NUT1JBR0VcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5UUkFOU0ZPUk1FUlNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5FTEVDVFJJQ19NRVRFUlNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5MSUdIVElOR1NcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5QT1dFUl9ESVNUUklCVVRJT05fU1lTVEVNU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlNXSVRDSF9HRUFSU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkVMRUNUUklDX0lORFVTVFJJQUxfTU9UT1JTXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuR1JPVU5ESU5HXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuTU9UT1JfQ09OVFJPTFNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5MSUdIVElOR19TWVNURU1TXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRUxFQ1RSSUNfSFZBQ1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlJFRlJJR0VSQVRJT05fQ09PTElOR19TWVNURU1TXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuUFJPQ0VTU19DT05UUk9MX0FVVE9NQVRJT05fU1lTVEVNU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLk9GRklDRV9FUVVJUE1FTlRcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5DT01QUkVTU0VEX0FJUl9TWVNURU1TXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuUFJPQ0VTU19FUVVJUE1FTlRfTUFDSElORVNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5NQVRFUklBTF9IQU5ETElOR19FUVVJUE1FTlRcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5QT1dFUl9ESVNUUklCVVRJT05fQ09OVFJPTF9TWVNURU1TXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuQkFUVEVSSUVTXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuVkFSSUFCTEVfRlJFUVVFTkNZX0RSSVZFUlNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5FTEVDVFJJQ19GTFlXSEVFTF9FTkVSR1lfU1RPUkFHRVxuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlBVTVBFRF9IWURST19TVE9SQUdFXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuVEhFUk1BTF9FTkVSR1lfU1RPUkFHRVxuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlNVUEVSX0NBUEFDSVRPUl9FTkVSR1lfU1RPUkFHRVxuICAgICAgXSxcbiAgICBdO1xuICAgIGxpc3RJdGVtcy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICB0aGlzLm1ha2VHcm91cFRlbXBsYXRlKGU/Lmljb24sIGUubmFtZSk7XG4gICAgfSk7XG4gIH1cblxuICBpbml0RnVlbEdyb3VwVGVtcGxhdGUoKSB7XG4gICAgY29uc3QgbGlzdEl0ZW1zID0gW1xuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRElFU0VMX0ZVRUxTXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuR0FTT05fTElORVNcbiAgICAgIF0sXG5cbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkJJT0RJRVNFTFNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5LRVJPU0VOU0VcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5QUk9QQU5FU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlRBTktFUl9UUlVDS1NcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5QSVBFTElORVxuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLklORFVTVFJJQUxfQk9JTEVSU1xuICAgICAgXSxcblxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuR0VORVJBVE9SU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLklORFVTVFJJQUxfRlVSTkFDRVNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5JTkRVU1RSSUFMX09WRU5TXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuSU5EVVNUUklBTF9WRUhJQ0xFU19BTkRfRVFVSVBNRU5UXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9NRVRFUlNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5GVUVMX0RJU1BFTlNFUlNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5GVUVMX1NUUk9SQUdFX1RBTktTXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRUxFQ1RSSUNfSFZBQ1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfRklMVFJBVElPTlNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5GVUVMX01BTkFHRU1FTlRTXG4gICAgICBdLFxuICAgIF07XG5cbiAgICB0aGlzLm1ha2VHcm91cFRlbXBsYXRlKFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9ESVNQRU5TRVJTXG4gICAgICBdLmljb24sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5GVUVMX0RJU1BFTlNFUlNcbiAgICAgIF0ubmFtZVxuICAgICk7XG4gICAgdGhpcy5tYWtlR3JvdXBUZW1wbGF0ZShcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfU1RST1JBR0VfVEFOS1NcbiAgICAgIF0uaWNvbixcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfU1RST1JBR0VfVEFOS1NcbiAgICAgIF0ubmFtZVxuICAgICk7XG4gICAgdGhpcy5tYWtlR3JvdXBUZW1wbGF0ZShcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfRklMVFJBVElPTlNcbiAgICAgIF0uaWNvbixcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfRklMVFJBVElPTlNcbiAgICAgIF0ubmFtZVxuICAgICk7XG4gICAgdGhpcy5tYWtlR3JvdXBUZW1wbGF0ZShcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfTUFOQUdFTUVOVFNcbiAgICAgIF0uaWNvbixcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfTUFOQUdFTUVOVFNcbiAgICAgIF0ubmFtZVxuICAgICk7XG4gICAgbGlzdEl0ZW1zLmZvckVhY2goKGUpID0+IHtcbiAgICAgIHRoaXMubWFrZUdyb3VwVGVtcGxhdGUoZT8uaWNvbiwgZS5uYW1lKTtcbiAgICB9KTtcbiAgfVxuXG4gIGluaXRHYXNHcm91cFRlbXBsYXRlKCkge1xuICAgIGNvbnN0IGxpc3RJdGVtcyA9IFtcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkNPTVBSRVNTRURfTkFUVVJBTF9HQVNfUElQRUxJTkVcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5CT0lMRVJTX0FORF9IRUFURVJTXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVSTkFDRVNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5QT1dFUl9HRU5FUkFUSU9OXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuQ09HRU5FUkFUSU9OXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuQ09NQklORURfQ1lDTEVfUE9XRVJfUExBTlRTXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9GT1JfVkVISUNMRVNfQU5EX0VRVUlQTUVOVFxuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkdBU19NRVRFUlNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5CVVJORVJTXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRkxVRV9HQVNfQU5BTFlaRVJTXG4gICAgICBdLFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuQ09NQlVTVElPTl9DT05UUk9MX1NZU1RFTVNcbiAgICAgIF0sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5HQVNfU1RPUkFHRV9UQU5LU1xuICAgICAgXSxcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkdBU19QUkVTU1VSRV9SRUdVTEFUT1JTXG4gICAgICBdLFxuICAgIF07XG5cbiAgICB0aGlzLm1ha2VHcm91cFRlbXBsYXRlKFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRlVFTF9ESVNQRU5TRVJTXG4gICAgICBdLmljb24sXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5GVUVMX0RJU1BFTlNFUlNcbiAgICAgIF0ubmFtZVxuICAgICk7XG4gICAgdGhpcy5tYWtlR3JvdXBUZW1wbGF0ZShcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfU1RST1JBR0VfVEFOS1NcbiAgICAgIF0uaWNvbixcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfU1RST1JBR0VfVEFOS1NcbiAgICAgIF0ubmFtZVxuICAgICk7XG4gICAgdGhpcy5tYWtlR3JvdXBUZW1wbGF0ZShcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfRklMVFJBVElPTlNcbiAgICAgIF0uaWNvbixcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfRklMVFJBVElPTlNcbiAgICAgIF0ubmFtZVxuICAgICk7XG4gICAgdGhpcy5tYWtlR3JvdXBUZW1wbGF0ZShcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfTUFOQUdFTUVOVFNcbiAgICAgIF0uaWNvbixcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkZVRUxfTUFOQUdFTUVOVFNcbiAgICAgIF0ubmFtZVxuICAgICk7XG4gICAgbGlzdEl0ZW1zLmZvckVhY2goKGUpID0+IHtcbiAgICAgIHRoaXMubWFrZUdyb3VwVGVtcGxhdGUoZT8uaWNvbiwgZS5uYW1lKTtcbiAgICB9KTtcbiAgfVxuXG4gIGluaXRHYXNEaWFncmFtKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIE5BVFVSQUxfR0FTX1BJUEVMSU5FUyxcbiAgICAgIExJUVVFRklFRF9OQVRVUkFMX0dBUyxcbiAgICAgIENPTVBSRVNTRURfTkFUVVJBTF9HQVNfUElQRUxJTkUsXG4gICAgICBDT01QUkVTU0VEX05BVFVSQUxfR0FTX1BST0RVQ1RJT04sXG4gICAgICBCT0lMRVJTX0FORF9IRUFURVJTLFxuICAgICAgRlVSTkFDRVMsXG4gICAgICBQT1dFUl9HRU5FUkFUSU9OLFxuICAgICAgQ09HRU5FUkFUSU9OLFxuICAgICAgQ09NQklORURfQ1lDTEVfUE9XRVJfUExBTlRTLFxuICAgICAgRlVFTF9GT1JfVkVISUNMRVNfQU5EX0VRVUlQTUVOVCxcbiAgICAgIEdBU19NRVRFUlMsXG4gICAgICBCVVJORVJTLFxuICAgICAgRkxVRV9HQVNfQU5BTFlaRVJTLFxuICAgICAgQ09NQlVTVElPTl9DT05UUk9MX1NZU1RFTVMsXG4gICAgICBHQVNfU1RPUkFHRV9UQU5LUyxcbiAgICAgIEdBU19QUkVTU1VSRV9SRUdVTEFUT1JTLFxuICAgICAgTkFUVVJBTF9HQVMsXG4gICAgfSA9IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUztcbiAgICBjb25zdCBMaXN0SXRlbXNDcmVhdGVFbnRpdHlUZW1wbGF0ZSA9IFtcbiAgICAgIE5BVFVSQUxfR0FTX1BJUEVMSU5FUyxcbiAgICAgIExJUVVFRklFRF9OQVRVUkFMX0dBUyxcbiAgICAgIENPTVBSRVNTRURfTkFUVVJBTF9HQVNfUElQRUxJTkUsXG4gICAgICBDT01QUkVTU0VEX05BVFVSQUxfR0FTX1BST0RVQ1RJT04sXG4gICAgICBCT0lMRVJTX0FORF9IRUFURVJTLFxuICAgICAgRlVSTkFDRVMsXG4gICAgICBQT1dFUl9HRU5FUkFUSU9OLFxuICAgICAgQ09HRU5FUkFUSU9OLFxuICAgICAgQ09NQklORURfQ1lDTEVfUE9XRVJfUExBTlRTLFxuICAgICAgRlVFTF9GT1JfVkVISUNMRVNfQU5EX0VRVUlQTUVOVCxcbiAgICAgIEdBU19NRVRFUlMsXG4gICAgICBCVVJORVJTLFxuICAgICAgRkxVRV9HQVNfQU5BTFlaRVJTLFxuICAgICAgQ09NQlVTVElPTl9DT05UUk9MX1NZU1RFTVMsXG4gICAgICBHQVNfU1RPUkFHRV9UQU5LUyxcbiAgICAgIEdBU19QUkVTU1VSRV9SRUdVTEFUT1JTLFxuICAgICAgTkFUVVJBTF9HQVMsXG4gICAgXTtcbiAgICBMaXN0SXRlbXNDcmVhdGVFbnRpdHlUZW1wbGF0ZS5tYXAoKGUpID0+IHtcbiAgICAgIGlmICghIUF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tlXSkge1xuICAgICAgICB0aGlzLm1ha2VFbnRpdHlUZW1wbGF0ZUVuZXJneShcbiAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbZV0uaWNvbixcbiAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbZV0ubmFtZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaW5pdEZ1ZWxEaWFncmFtKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIERJRVNFTF9GVUVMUyxcbiAgICAgIEdBU09OX0xJTkVTLFxuICAgICAgQklPRElFU0VMUyxcbiAgICAgIEtFUk9TRU5TRSxcbiAgICAgIFBST1BBTkVTLFxuICAgICAgVEFOS0VSX1RSVUNLUyxcbiAgICAgIFBJUEVMSU5FLFxuICAgICAgSU5EVVNUUklBTF9CT0lMRVJTLFxuICAgICAgR0VORVJBVE9SUyxcbiAgICAgIElORFVTVFJJQUxfRlVSTkFDRVMsXG4gICAgICBJTkRVU1RSSUFMX09WRU5TLFxuICAgICAgSU5EVVNUUklBTF9WRUhJQ0xFU19BTkRfRVFVSVBNRU5ULFxuICAgICAgRlVFTF9NRVRFUlMsXG4gICAgICBGVUVMX0RJU1BFTlNFUlMsXG4gICAgICBGVUVMX1NUUk9SQUdFX1RBTktTLFxuICAgICAgRlVFTF9GSUxUUkFUSU9OUyxcbiAgICAgIEZVRUxfTUFOQUdFTUVOVFMsXG4gICAgICBGVUVMUyxcbiAgICB9ID0gQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTO1xuICAgIGNvbnN0IExpc3RJdGVtc0NyZWF0ZUVudGl0eVRlbXBsYXRlID0gW1xuICAgICAgRElFU0VMX0ZVRUxTLFxuICAgICAgR0FTT05fTElORVMsXG4gICAgICBCSU9ESUVTRUxTLFxuICAgICAgS0VST1NFTlNFLFxuICAgICAgUFJPUEFORVMsXG4gICAgICBUQU5LRVJfVFJVQ0tTLFxuICAgICAgUElQRUxJTkUsXG4gICAgICBJTkRVU1RSSUFMX0JPSUxFUlMsXG4gICAgICBHRU5FUkFUT1JTLFxuICAgICAgSU5EVVNUUklBTF9GVVJOQUNFUyxcbiAgICAgIElORFVTVFJJQUxfT1ZFTlMsXG4gICAgICBJTkRVU1RSSUFMX1ZFSElDTEVTX0FORF9FUVVJUE1FTlQsXG4gICAgICBGVUVMX01FVEVSUyxcbiAgICAgIEZVRUxfRElTUEVOU0VSUyxcbiAgICAgIEZVRUxfU1RST1JBR0VfVEFOS1MsXG4gICAgICBGVUVMX0ZJTFRSQVRJT05TLFxuICAgICAgRlVFTF9NQU5BR0VNRU5UUyxcbiAgICAgIEZVRUxTLFxuICAgIF07XG4gICAgTGlzdEl0ZW1zQ3JlYXRlRW50aXR5VGVtcGxhdGUubWFwKChlKSA9PiB7XG4gICAgICBpZiAoISFBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbZV0pIHtcbiAgICAgICAgdGhpcy5tYWtlRW50aXR5VGVtcGxhdGVFbmVyZ3koXG4gICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW2VdLmljb24sXG4gICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW2VdLm5hbWVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGluaXRTb2xhckRpYWdyYW0oKSB7XG4gICAgY29uc3Qge1xuICAgICAgU09MQVJfUE9XRVIsXG4gICAgICBQT1dFUl9DT05ESVRJT05JTkdfVU5JVCxcbiAgICAgIEJBVFRFUklFUzogQkFUVEVSWSxcbiAgICAgIElOVkVSVEVSUzogSU5WRVJURVIsXG4gICAgfSA9IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUztcbiAgICBjb25zdCBMaXN0SXRlbXNDcmVhdGVFbnRpdHlUZW1wbGF0ZSA9IFtcbiAgICAgIFNPTEFSX1BPV0VSLFxuICAgICAgUE9XRVJfQ09ORElUSU9OSU5HX1VOSVQsXG4gICAgICBCQVRURVJZLFxuICAgICAgSU5WRVJURVIsXG4gICAgXTtcbiAgICBMaXN0SXRlbXNDcmVhdGVFbnRpdHlUZW1wbGF0ZS5tYXAoKGUpID0+IHtcbiAgICAgIGlmICghIUF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tlXSkge1xuICAgICAgICB0aGlzLm1ha2VFbnRpdHlUZW1wbGF0ZUVuZXJneShcbiAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbZV0uaWNvbixcbiAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbZV0ubmFtZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaW5pdFN0ZWFtRGlhZ3JhbSgpIHtcbiAgICBjb25zdCB7XG4gICAgICBWQUxVRVMsXG4gICAgICBTVEVBTV9UUkFQUyxcbiAgICAgIFBSRVNTVVJFX1JFR1VMQVRPUlMsXG4gICAgICBTQUZFVFlfVkFMVUVTX0FORF9FUVVJUE1FTlQsXG4gICAgICBDT05ERU5TQVRFX1JFVFVSTl9TWVNURU0sXG4gICAgICBERUFFUkFUT1JTLFxuICAgICAgRkVFRFdBVEVSX1BVTVBTLFxuICAgICAgQkxPV0RPV05fVEFOS1MsXG4gICAgICBFWFBBTlNJT05fVEFOS1MsXG4gICAgICBIRUFUX0VYQ0hBTkdFUlMsXG4gICAgICBUVVJCSU5FUyxcbiAgICB9ID0gQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTO1xuICAgIGNvbnN0IExpc3RJdGVtc0NyZWF0ZUVudGl0eVRlbXBsYXRlID0gW1xuICAgICAgVkFMVUVTLFxuICAgICAgU1RFQU1fVFJBUFMsXG4gICAgICBQUkVTU1VSRV9SRUdVTEFUT1JTLFxuICAgICAgU0FGRVRZX1ZBTFVFU19BTkRfRVFVSVBNRU5ULFxuICAgICAgQ09OREVOU0FURV9SRVRVUk5fU1lTVEVNLFxuICAgICAgREVBRVJBVE9SUyxcbiAgICAgIEZFRURXQVRFUl9QVU1QUyxcbiAgICAgIEJMT1dET1dOX1RBTktTLFxuICAgICAgRVhQQU5TSU9OX1RBTktTLFxuICAgICAgSEVBVF9FWENIQU5HRVJTLFxuICAgICAgVFVSQklORVMsXG4gICAgXTtcbiAgICBMaXN0SXRlbXNDcmVhdGVFbnRpdHlUZW1wbGF0ZS5tYXAoKGUpID0+IHtcbiAgICAgIGlmICghIUF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tlXSkge1xuICAgICAgICB0aGlzLm1ha2VFbnRpdHlUZW1wbGF0ZUVuZXJneShcbiAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbZV0uaWNvbixcbiAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbZV0ubmFtZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25Nb2RlbENoYW5nZUxpc3RlbmVyKGU6IGdvLkNoYW5nZWRFdmVudCkge1xuICAgIC8vIHRoaXMub25Nb2RlbENoYW5nZUxpc3RlbmVyRXZlbnQuZW1pdChlKTtcbiAgfVxuXG4gIG1ha2VMaW5rVGVtcGxhdGUoKSB7XG4gICAgY29uc3QgZWxlbWVudHM6IGFueVtdID0gW107XG4gICAgLy8gbGluZVxuICAgIGVsZW1lbnRzLnB1c2goXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlNoYXBlLFxuICAgICAgICB7XG4gICAgICAgICAgaXNQYW5lbE1haW46IHRydWUsXG4gICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuR1JBWSxcbiAgICAgICAgICBzdHJva2VXaWR0aDpcbiAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5MSU5LX1RFTVBMQVRFU1tcbiAgICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fTElOS19UWVBFUy5TSU1QTEVcbiAgICAgICAgICAgIF0/LnN0cm9rZVdpZHRoLFxuICAgICAgICAgIC8vIHN0cm9rZVdpZHRoOiAwLFxuICAgICAgICB9LFxuICAgICAgICBuZXcgZ28uQmluZGluZygnc3Ryb2tlJywgJ2NvbG9yJyksXG4gICAgICAgIG5ldyBnby5CaW5kaW5nKCdzZWxlY3RhYmxlJywgJ3NlbGVjdGFibGUnKSxcbiAgICAgICAgbmV3IGdvLkJpbmRpbmcoXG4gICAgICAgICAgJ3N0cm9rZVdpZHRoJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgKHgpID0+IEF0b0dvanNFZGl0b3JNb2RlbC5MSU5LX1RFTVBMQVRFU1t4XT8uc3Ryb2tlV2lkdGhcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBhbmltYXRpb25cbiAgICBlbGVtZW50cy5wdXNoKFxuICAgICAgdGhpcy4kKGdvLlNoYXBlLCB7XG4gICAgICAgIC4uLkF0b0dvanNFZGl0b3JNb2RlbC5MSU5LX1RFTVBMQVRFU1tcbiAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9MSU5LX1RZUEVTLlBJUEVfQU5JTUFUSU9OXG4gICAgICAgIF0/LmFuaW1hdGlvbixcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgZmlsbDogJ3RyYW5zcGFyZW50JyxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGVsZW1lbnRzLnB1c2goXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnVG9wJyxcbiAgICAgICAge1xuICAgICAgICAgIGhlaWdodDogMzgsXG4gICAgICAgICAgLy8gbWF4U2l6ZTogbmV3IGdvLlNpemUoTmFOLCAzNiksXG4gICAgICAgICAgLy8gd2lkdGg6IDEwMCxcbiAgICAgICAgICAvLyBtaW5TaXplOiBuZXcgZ28uU2l6ZSgxMDAsIDUpLCAvLyDEkOG6t3Qga8OtY2ggdGjGsOG7m2MgdOG7kWkgdGhp4buDdSBsw6AgMTAweDUwXG4gICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAvLyBsYXllck5hbWU6ICdCYWNrZ3JvdW5kTGF5ZXInLFxuICAgICAgICAgIC8vIGFsaWdubWVudDogZ28uU3BvdC5Ub3AsXG4gICAgICAgICAgLy8gYWxpZ25tZW50Rm9jdXM6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgICAvLyBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgMCwgNTAsIDApLFxuICAgICAgICAgIC8vIHNlbGVjdGFibGU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICd0ZXh0Q29tcG9uZW50JywgKHgpID0+IHtcbiAgICAgICAgICByZXR1cm4geCA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICAgIC8vIHRoaXMuJChnby5TaGFwZSwge1xuICAgICAgICAvLyAgICAgaGVpZ2h0OiAzMCxcbiAgICAgICAgLy8gICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIC8vICAgICBmaWxsOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAvLyAgICAgLy8gdmlzaWJsZTogZmFsc2UsXG4gICAgICAgIC8vIH0pLFxuICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCAwLCA1MCwgMCksXG4gICAgICAgICAgICBzdHJva2U6ICcjNDQ0NDQ0JyxcbiAgICAgICAgICAgIGZvbnQ6ICdub3JtYWwgMTBwdCBBcmlhbCcsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0JyxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAvLyBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAvLyBhbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLCAvLyDEkOG6o20gYuG6o28gdsSDbiBi4bqjbiBu4bqxbSDhu58gdHJ1bmcgdMOibSBj4bunYSBuw7p0XG4gICAgICAgICAgICAvLyBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5DZW50ZXIsIC8vIMSQ4bqjbSBi4bqjbyB2xINuIGLhuqNuIGtow7RuZyBi4buLIGThu4tjaCBjaHV54buDbiByYSBraOG7j2kgdHJ1bmcgdMOibVxuICAgICAgICAgICAgd3JhcDogZ28uVGV4dEJsb2NrLldyYXBGaXQsIC8vIENodXnhu4NuIGTDsm5nIMSR4buDIHbEg24gYuG6o24ga2jDtG5nIHbGsOG7o3QgcmEgbmdvw6BpXG4gICAgICAgICAgICAvLyBzZWxlY3RhYmxlOiB0cnVlLFxuICAgICAgICAgICAgb3ZlcmZsb3c6IGdvLlRleHRCbG9jay5PdmVyZmxvd0VsbGlwc2lzLFxuICAgICAgICAgICAgdG9vbFRpcDogdGhpcy4kKFxuICAgICAgICAgICAgICAnVG9vbFRpcCcsXG4gICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbWFyZ2luOiA0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAndGV4dENvbXBvbmVudCcpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICd0ZXh0Q29tcG9uZW50JyksXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2JhY2tncm91bmQnLCAndGV4dENvbXBvbmVudCcsICh4KSA9PlxuICAgICAgICAgICAgeCA/ICd3aGl0ZScgOiAndHJhbnNwYXJlbnQnXG4gICAgICAgICAgKVxuICAgICAgICAgIC8vICAgICBuZXcgZ28uQmluZGluZygnbWFyZ2luJywgJ2lzRm9ybWF0JywgKHgpID0+XG4gICAgICAgICAgLy8gICAgIHggPyBuZXcgZ28uTWFyZ2luKDUsIDAsIDUsIDUpIDogbmV3IGdvLk1hcmdpbig1LCA1LCA1LCA1KSxcbiAgICAgICAgICAvLyApLFxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcblxuICAgIC8vIGFycm93XG4gICAgZWxlbWVudHMucHVzaChcbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uU2hhcGUsIC8vIHRoZSBcImZyb21cIiBhcnJvd2hlYWRcbiAgICAgICAge1xuICAgICAgICAgIC4uLkF0b0dvanNFZGl0b3JNb2RlbC5MSU5LX1RFTVBMQVRFU1tcbiAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0xJTktfVFlQRVMuU0lNUExFXG4gICAgICAgICAgXT8uYXJyb3csXG4gICAgICAgIH0sXG4gICAgICAgIG5ldyBnby5CaW5kaW5nKFxuICAgICAgICAgICd2aXNpYmxlJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICAhW1xuICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9MSU5LX1RZUEVTLlBJUEVfQU5JTUFUSU9OLFxuICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9MSU5LX1RZUEVTLlBJUEUsXG4gICAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0xJTktfVFlQRVMuUElQRV9ISURERU4sXG4gICAgICAgICAgICBdLmluY2x1ZGVzKHgpXG4gICAgICAgICksXG4gICAgICAgIG5ldyBnby5CaW5kaW5nKCdmaWxsJywgJ2NvbG9yJyksXG4gICAgICAgIG5ldyBnby5CaW5kaW5nKCdzdHJva2UnLCAnY29sb3InKVxuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBUT0RPIGZpeCBsaW5rIGNhbm5vdCBzZWxlY3RlZCBpbnNpZGUgZ3JvdXAgdGVtcGxhdGVcbiAgICB0aGlzLm15RGlhZ3JhbS5saW5rVGVtcGxhdGUgPSB0aGlzLiQoXG4gICAgICBnby5MaW5rLFxuICAgICAgZ28uTGluay5PcnRob2dvbmFsLFxuICAgICAge1xuICAgICAgICAvLyBsYXllck5hbWU6ICdCYWNrZ3JvdW5kJywgLy8gbGluayBjYW5ub3Qgc2VsZWN0IGluc2lkZSBncm91cCB0ZW1wbGF0ZVxuICAgICAgICAvLyBjdXJ2aW5lc3M6IDIwLFxuICAgICAgICAvLyBjb3JuZXI6IDUsXG4gICAgICAgIHJvdXRpbmc6IGdvLkxpbmsuQXZvaWRzTm9kZXMsXG4gICAgICAgIHJlc2hhcGFibGU6IHRydWUsXG4gICAgICAgIHJlc2VnbWVudGFibGU6IHRydWUsXG4gICAgICAgIHJlbGlua2FibGVGcm9tOiB0cnVlLFxuICAgICAgICByZWxpbmthYmxlVG86IHRydWUsXG4gICAgICAgIHNlbGVjdGFibGU6IHRydWUsXG4gICAgICAgIHRvU2hvcnRMZW5ndGg6XG4gICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkxJTktfVEVNUExBVEVTW1xuICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fTElOS19UWVBFUy5TSU1QTEVcbiAgICAgICAgICBdLnRvU2hvcnRMZW5ndGgsIC8vIGFzc3VtZSBhcnJvd2hlYWQgYXQgXCJ0b1wiIGVuZCwgbmVlZCB0byBhdm9pZCBiYWQgYXBwZWFyYW5jZSB3aGVuIHBhdGggaXMgdGhpY2tcbiAgICAgIH0sXG4gICAgICBuZXcgZ28uQmluZGluZygnbGF5ZXJOYW1lJywgJycsIChkYXRhKSA9PiB7XG4gICAgICAgIHJldHVybiBkYXRhPy50ZXh0Q29tcG9uZW50ID8gJ0JhY2tncm91bmQnIDogJyc7XG4gICAgICB9KSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCd6T3JkZXInLCAndHlwZScsICh4KSA9PlxuICAgICAgICB4ID09PSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9MSU5LX1RZUEVTLlBJUEVfQU5JTUFUSU9OID8gMTEgOiAxMFxuICAgICAgKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKFxuICAgICAgICAndG9TaG9ydExlbmd0aCcsXG4gICAgICAgICd0eXBlJyxcbiAgICAgICAgKHgpID0+IEF0b0dvanNFZGl0b3JNb2RlbC5MSU5LX1RFTVBMQVRFU1t4XS50b1Nob3J0TGVuZ3RoIHx8IDBcbiAgICAgICksXG4gICAgICBuZXcgZ28uQmluZGluZygnc2VsZWN0YWJsZScsICdzZWxlY3RhYmxlJyksXG4gICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICd2aXNpYmxlJyksXG5cbiAgICAgIC8vIG1ha2Ugc3VyZSBsaW5rcyBjb21lIGluIGZyb20gdGhlIHByb3BlciBkaXJlY3Rpb24gYW5kIGdvIG91dCBhcHByb3ByaWF0ZWx5XG4gICAgICAuLi5lbGVtZW50c1xuICAgICk7XG4gIH1cblxuICBtYWtlVmFsdWVOb2RlVGVtcGxhdGUoc2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9ID0geyB3OiA4MiwgaDogMzYgfSkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Ob2RlLFxuICAgICAgJ1Nwb3QnLFxuICAgICAge30sXG4gICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgIGdvLlBvaW50LnN0cmluZ2lmeVxuICAgICAgKSxcblxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgJ0F1dG8nLFxuICAgICAgICB7IG1pblNpemU6IG5ldyBnby5TaXplKHNpemUudywgc2l6ZS5oKSB9LFxuICAgICAgICB0aGlzLiQoZ28uU2hhcGUsICdSZWN0YW5nbGUnLCB7XG4gICAgICAgICAgZmlsbDogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLkxJR0hUX0JMVUUsXG4gICAgICAgICAgc3Ryb2tlOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICB9KSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICdIb3Jpem9udGFsJyxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHJvdzogMixcbiAgICAgICAgICAgICAgZm9udDogJ2JvbGQgMTRweCBBcmlhbCcsXG4gICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLkNFUlVMRUFOLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdlZGl0YWJsZScsICdpc0VkaXRhYmxlJyksXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICdzaG9ydGVuZWROdW1iZXInKS5tYWtlVHdvV2F5KCksXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygnc3Ryb2tlJywgJ2NvbG9yJyksXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygnbWFyZ2luJywgJ2lzRm9ybWF0JywgKHgpID0+XG4gICAgICAgICAgICAgIHggPyBuZXcgZ28uTWFyZ2luKDUsIDAsIDUsIDUpIDogbmV3IGdvLk1hcmdpbig1LCA1LCA1LCA1KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJycsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICAgIHJldHVybiBkYXRhLnZhbHVlICE9PSBWQUxVRV9OQTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKSxcbiAgICAgICAgICAvLyBJY29uIEVyciB3aGVuIGxhY2sgb2YgdmFsdWVcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigxMCwgMTAsIDEwLCAxMCksXG4gICAgICAgICAgICAgIHRleHQ6IFZBTFVFX05BLCAvLyBPbGQgdmVyc2lvbjogVEVYVF9FUlJPUlxuICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICAgICAgICBmb250OiAnYm9sZCAxMHB0IHNhbnMtc2VyaWYnLFxuICAgICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5TQUxNT04sXG4gICAgICAgICAgICAgIHdyYXA6IGdvLlRleHRCbG9jay5XcmFwRml0LFxuICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgIGlzTXVsdGlsaW5lOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICcnLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgICByZXR1cm4gZGF0YS52YWx1ZSA9PT0gVkFMVUVfTkE7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5teURpYWdyYW0ubm9kZVRlbXBsYXRlTWFwLnNldChcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5WQUxVRV9OT0RFLFxuICAgICAgbm9kZVxuICAgICk7XG4gIH1cblxuICBtYWtlRW1wdHlOb2RlVGVtcGxhdGUoc2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9ID0geyB3OiAwLCBoOiAwIH0pIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy4kKFxuICAgICAgZ28uTm9kZSxcbiAgICAgICdTcG90JyxcbiAgICAgIHt9LFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMubXlEaWFncmFtLm5vZGVUZW1wbGF0ZU1hcC5zZXQoXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuRU1QVFksXG4gICAgICBub2RlXG4gICAgKTtcbiAgfVxuXG4gIG1ha2VWYWx1ZUxhYmVsVGVtcGxhdGUoc2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9ID0geyB3OiA4MiwgaDogMzYgfSkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Ob2RlLFxuICAgICAgJ0F1dG8nLFxuICAgICAge1xuICAgICAgICBtb3ZhYmxlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgIGdvLlBvaW50LnN0cmluZ2lmeVxuICAgICAgKSxcbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAgeyBtaW5TaXplOiBuZXcgZ28uU2l6ZShzaXplLncsIHNpemUuaCkgfSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICdIb3Jpem9udGFsJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgMTAsIDAsIDEwKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDAsIDUsIDEwLCAwKSxcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZm9udDogJ2JvbGQgMTVweCBzYW5zLXNlcmlmJyxcbiAgICAgICAgICAgICAgd3JhcDogZ28uVGV4dEJsb2NrLldyYXBGaXQsXG4gICAgICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLkNFUlVMRUFOLFxuICAgICAgICAgICAgICBtaW5TaXplOiBuZXcgZ28uU2l6ZSgxNTAsIDMwKSwgLy8gU2V0IHRoZSB3aWR0aCBvZiB0aGUgdGV4dCBibG9ja1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdzdHJva2UnLCAnY29sb3InKSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJ2RhdGEnLCAoeCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIHg/LnF1YW50aXR5ICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQ6IGFueSA9IFV0aWxzU2VydmljZS5jb252ZXJ0UHJlZml4ZXNEYXRhKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogeD8ucXVhbnRpdHksXG4gICAgICAgICAgICAgICAgdW5pdDogVXRpbHNTZXJ2aWNlLmNvbnZlcnRTcGVjaWFsVW5pdCh4Py51bml0KSxcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgbGV0IHJldFZhbHVlID1cbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWQuc2hvcnRlbmVkTnVtYmVyICtcbiAgICAgICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQudW5pdFByZWZpeGVzICtcbiAgICAgICAgICAgICAgICAgIFV0aWxzU2VydmljZS5jb252ZXJ0U3BlY2lhbFVuaXQoeD8udW5pdCkgPz8gJyc7XG4gICAgICAgICAgICAgIGlmICh4Py5wZXJjZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0VmFsdWUgKz0gYCAoJHt4Py5wZXJjZW50fSUpYDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gcmV0VmFsdWU7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKFxuICAgICAgICAgICAgICAndmlzaWJsZScsXG4gICAgICAgICAgICAgICdkYXRhJyxcbiAgICAgICAgICAgICAgKHgpID0+IHR5cGVvZiB4Py5xdWFudGl0eSA9PT0gJ251bWJlcidcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMubXlEaWFncmFtLm5vZGVUZW1wbGF0ZU1hcC5zZXQoXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuVkFMVUVfTEFCRUwsXG4gICAgICBub2RlXG4gICAgKTtcbiAgfVxuXG4gIG1ha2VUZXh0TGFiZWxUZW1wbGF0ZShzaXplOiB7IHc6IG51bWJlcjsgaDogbnVtYmVyIH0gPSB7IHc6IE5hTiwgaDogMjAgfSkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Ob2RlLFxuICAgICAgJ0F1dG8nLFxuICAgICAge1xuICAgICAgICBtb3ZhYmxlOiBmYWxzZSxcbiAgICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgICksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnQXV0bycsXG4gICAgICAgIHRoaXMuJChcbiAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAnSG9yaXpvbnRhbCcsXG5cbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCA1LCAxMCwgMCksXG4gICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGZvbnQ6ICdib2xkIDE2cHggQXJpYWwnLFxuICAgICAgICAgICAgICB3cmFwOiBnby5UZXh0QmxvY2suV3JhcEZpdCxcbiAgICAgICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuQ0VSVUxFQU4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3N0cm9rZScsICdjb2xvcicpLFxuICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpLFxuICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAndmlzaWJsZScpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLm15RGlhZ3JhbS5ub2RlVGVtcGxhdGVNYXAuc2V0KFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlRFWFRfTEFCRUwsXG4gICAgICBub2RlXG4gICAgKTtcbiAgfVxuXG4gIG1ha2VUZXh0VGVtcGxhdGUoXG4gICAgc2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9ID0ge1xuICAgICAgdzogQXRvR29qc0VkaXRvck1vZGVsLkdSSURfU0laRSAqIDUsXG4gICAgICBoOiBBdG9Hb2pzRWRpdG9yTW9kZWwuR1JJRF9TSVpFICogMixcbiAgICB9XG4gICkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IGNvbnRleHRNZW51ID0gdGhpcy4kKFxuICAgICAgZ28uQWRvcm5tZW50LFxuICAgICAgJ1ZlcnRpY2FsJyxcbiAgICAgIHRoaXMuJCgnQ29udGV4dE1lbnVCdXR0b24nLCB0aGlzLiQoZ28uVGV4dEJsb2NrLCAnT3B0aW9uIDEnKSwge1xuICAgICAgICBjbGljazogZnVuY3Rpb24gKGUsIG9iaikge1xuICAgICAgICAgIGFsZXJ0KCdPcHRpb24gMSBjbGlja2VkIScpO1xuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICB0aGlzLiQoJ0NvbnRleHRNZW51QnV0dG9uJywgdGhpcy4kKGdvLlRleHRCbG9jaywgJ09wdGlvbiAyJyksIHtcbiAgICAgICAgY2xpY2s6IGZ1bmN0aW9uIChlLCBvYmopIHtcbiAgICAgICAgICBhbGVydCgnT3B0aW9uIDIgY2xpY2tlZCEnKTtcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAvLyAuLi4gYWRkIG1vcmUgb3B0aW9ucyBhcyBuZWVkZWQgLi4uXG4gICAgKTtcbiAgICBjb25zdCBub2RlID0gdGhpcy4kKFxuICAgICAgZ28uTm9kZSxcbiAgICAgICdTcG90JyxcbiAgICAgIHtcbiAgICAgICAgLy8gZnJvbVNwb3Q6IGdvLlNwb3QuUmlnaHRTaWRlLFxuICAgICAgICAvLyB0b1Nwb3Q6IGdvLlNwb3QuTGVmdFNpZGUsXG4gICAgICAgIGxvY2F0aW9uU3BvdDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgIC8vIHNlbGVjdGlvbkNoYW5nZWQ6IChlKSA9PiB7XG4gICAgICAgIC8vICAgICBpZiAoZT8uZGF0YS5vblNlbGVjdGVkKSB7XG4gICAgICAgIC8vICAgICAgICAgZT8uZGF0YS5vblNlbGVjdGVkKGU/LmRhdGEpO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9LFxuICAgICAgICAvLyBtb3VzZUhvdmVyOiAoZSwgb2JqKSA9PiB7XG4gICAgICAgIC8vICAgICBjb25zdCBub2RlID0gb2JqLnBhcnQ7XG4gICAgICAgIC8vICAgICBpZiAoKG9iaiBhcyBhbnkpLnBhcnQ/Lm9iPy52YWx1ZSA9PT0gVkFMVUVfTkEpIHtcbiAgICAgICAgLy8gICAgICAgICBzZWxmLm9uSG92ZXJJbmZvQnV0dG9uLmVtaXQoe1xuICAgICAgICAvLyAgICAgICAgICAgICBsZWZ0OiBlPy5bJ1dyJ10/LnggKyA4LFxuICAgICAgICAvLyAgICAgICAgICAgICB0b3A6IGU/LlsnV3InXT8ueSxcbiAgICAgICAgLy8gICAgICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgLy8gICAgICAgICB9KTtcbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfSxcbiAgICAgICAgLy8gbW91c2VMZWF2ZTogKGUsIG9iaikgPT4ge1xuICAgICAgICAvLyAgICAgaWYgKChvYmogYXMgYW55KS5wYXJ0Py5vYj8udmFsdWUgPT09IFZBTFVFX05BKSB7XG4gICAgICAgIC8vICAgICAgICAgc2VsZi5vbkhvdmVySW5mb0J1dHRvbi5lbWl0KG51bGwpO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9LFxuICAgICAgICBjbGljazogKGUsIG9iajogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3Qgbm9kZSA9IG9iai5wYXJ0O1xuICAgICAgICAgIGlmIChub2RlPy5vYj8uaXNUeXBlSW5mbG93T2ZQbGFudENlbGwpIHtcbiAgICAgICAgICAgIC8vIG9iaj8uZGF0YT8ub25TZWxlY3RlZChub2RlPy5vYj8ubm9kZVBsYW50Q2VsbFBhcmVudCk7XG4gICAgICAgICAgICAvLyBzZWxmLm9uQ2xpY2tDb21wb2VudC5lbWl0KHtcbiAgICAgICAgICAgIC8vICAgICBsZWZ0OiBlPy5bJ1dyJ10/LngsXG4gICAgICAgICAgICAvLyAgICAgdG9wOiBlPy5bJ1dyJ10/LnksXG4gICAgICAgICAgICAvLyAgICAgbm9kZToge1xuICAgICAgICAgICAgLy8gICAgICAgICBvYjogbm9kZT8ub2I/Lm5vZGVQbGFudENlbGxQYXJlbnQsXG4gICAgICAgICAgICAvLyAgICAgfSxcbiAgICAgICAgICAgIC8vICAgICBjb21wb25lbnQ6IG5vZGU/Lm9iPy5ub2RlUGxhbnRDZWxsUGFyZW50LFxuICAgICAgICAgICAgLy8gfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLl9pbml0aWFsT3B0aW9ucz8uaXNSZWFkT25seSkge1xuICAgICAgICAgICAgdGhpcy5pc1Nob3dOb2RlSW5mb1xuICAgICAgICAgICAgICA/IHNlbGYub25DbGlja0luZm9CdXR0b24uZW1pdCh7XG4gICAgICAgICAgICAgICAgICBsZWZ0OiBlPy5bJ1dyJ10/LngsXG4gICAgICAgICAgICAgICAgICB0b3A6IGU/LlsnV3InXT8ueSxcbiAgICAgICAgICAgICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZG91YmxlQ2xpY2s6IChlLCBvYmo6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5vZGUgPSBvYmoucGFydDtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBub2RlPy5vYj8uaXNUeXBlSW5mbG93T2ZQbGFudENlbGwgJiZcbiAgICAgICAgICAgICF0aGlzLl9pbml0aWFsT3B0aW9ucz8uaXNSZWFkT25seVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gb2JqPy5kYXRhPy5vblNlbGVjdGVkKG5vZGU/Lm9iPy5ub2RlUGxhbnRDZWxsUGFyZW50KTtcbiAgICAgICAgICAgIC8vIHRoaXMuaXNTaG93Tm9kZUluZm9cbiAgICAgICAgICAgIC8vICAgICA/IHNlbGYub25Eb3VibGVDbGlja05vZGUuZW1pdCh7XG4gICAgICAgICAgICAvLyAgICAgICAgICAgbGVmdDogZT8uWydXciddPy54LFxuICAgICAgICAgICAgLy8gICAgICAgICAgIHRvcDogZT8uWydXciddPy55LFxuICAgICAgICAgICAgLy8gICAgICAgICAgIG5vZGU6IHtcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgb2I6IG5vZGU/Lm9iPy5ub2RlUGxhbnRDZWxsUGFyZW50LFxuICAgICAgICAgICAgLy8gICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyAgICAgICB9KVxuICAgICAgICAgICAgLy8gICAgIDogbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFsT3B0aW9ucz8uaXNSZWFkT25seSkge1xuICAgICAgICAgICAgdGhpcy5pc1Nob3dOb2RlSW5mb1xuICAgICAgICAgICAgICA/IHNlbGYub25DbGlja0luZm9CdXR0b24uZW1pdCh7XG4gICAgICAgICAgICAgICAgICBsZWZ0OiBlPy5bJ1dyJ10/LngsXG4gICAgICAgICAgICAgICAgICB0b3A6IGU/LlsnV3InXT8ueSxcbiAgICAgICAgICAgICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0aW9uQWRvcm5tZW50VGVtcGxhdGU6IHRoaXMuJChcbiAgICAgICAgICBnby5BZG9ybm1lbnQsXG4gICAgICAgICAgJ1Nwb3QnLFxuICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgJ0F1dG8nLFxuICAgICAgICAgICAgLy8geyBoZWlnaHQ6IDYyIH0sXG4gICAgICAgICAgICB0aGlzLiQoZ28uU2hhcGUsIHtcbiAgICAgICAgICAgICAgZmlsbDogbnVsbCxcbiAgICAgICAgICAgICAgc3Ryb2tlOiAnZG9kZ2VyYmx1ZScsXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiA0LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLlBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAvLyB7IHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oOCwgMywgMCwgMykgfSxcbiAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3BhZGRpbmcnLCAnJywgKHgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geD8uaXNUeXBlSW5mbG93T2ZQbGFudENlbGxcbiAgICAgICAgICAgICAgICAgID8geD8uZmxvd09mUGxhbnRDZWxsID09PSBBVE9fRU5VTV9GTE9XX0RJUkVDVElPTi5JTkZMT1dcbiAgICAgICAgICAgICAgICAgICAgPyBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDIwKVxuICAgICAgICAgICAgICAgICAgICA6IG5ldyBnby5NYXJnaW4oMCwgMjAsIDAsIDApXG4gICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgLy8gdGhpcy4kKGdvLlBsYWNlaG9sZGVyLCB7IHBhZGRpbmc6IDMgfSksXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygnaGVpZ2h0JywgJycsICh4KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB4Py5pc1R5cGVJbmZsb3dPZlBsYW50Q2VsbCA/IHg/LmhlaWdodCArIDEwIDogbnVsbDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3dpZHRoJywgJycsICh4KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB4Py5pc1R5cGVJbmZsb3dPZlBsYW50Q2VsbCA/IHg/LndpZHRoICsgMTIgOiBudWxsO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgJ0hvcml6b250YWwnLFxuICAgICAgICAgICAgeyBhbGlnbm1lbnQ6IGdvLlNwb3QuVG9wUmlnaHQsIGFsaWdubWVudEZvY3VzOiBnby5TcG90LkJvdHRvbSB9LFxuICAgICAgICAgICAgLy8gbW9yZVxuICAgICAgICAgICAgIXRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgICAgICAgPyB0aGlzLmdlbmVyYXRlQWN0aW9uR3JvdXAoW1xuICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLlJFTkFNRSxcbiAgICAgICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5JTlNJR0hULFxuICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLk9VVEZMT1csXG4gICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREVMRVRFLFxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIDoge31cbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAndmlzaWJsZScpLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2Zyb21TcG90JywgJ2Zyb21TcG90JyksXG4gICAgICBuZXcgZ28uQmluZGluZygndG9TcG90JywgJ3RvU3BvdCcpLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ21vdmFibGUnLCAnbW92YWJsZScpLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ3NlbGVjdGFibGUnLCAnc2VsZWN0YWJsZScpLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgICksXG4gICAgICAvLyBuZXcgZ28uQmluZGluZygnYWxpZ25tZW50JywgJ2FsaWdubWVudCcsIGZ1bmN0aW9uKGxvYykge1xuICAgICAgLy8gICAgIHJldHVybiBuZXcgZ28uU3BvdCgwLCAwLCBsb2MueCwgMCk7XG4gICAgICAvLyB9KS5vZk9iamVjdCgpLFxuXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnQXV0bycsXG4gICAgICAgIHtcbiAgICAgICAgICB0b29sVGlwOiB0aGlzLiQoXG4gICAgICAgICAgICAnVG9vbFRpcCcsXG4gICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnJywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXNlbGYuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhPy5uYW1lID8/IFZBTFVFX05BO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGF0YT8udmFsdWUgPT09IFZBTFVFX05BIHx8IF8uaXNOaWwoZGF0YT8udmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gTk9fREFUQTtcbiAgICAgICAgICAgICAgICAgIC8vIHJldHVybiBURVhUX1VOS05PV047XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBfLnJvdW5kKGRhdGE/LnZhbHVlLCAyKS50b0ZpeGVkKDIpO1xuICAgICAgICAgICAgICB9KS5tYWtlVHdvV2F5KClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICB0aGlzLmFycm93Rm9yUGxhbnRDZWxsKHNpemUsIEFUT19FTlVNX0ZMT1dfRElSRUNUSU9OLk9VVEZMT1cpLFxuICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgJ0F1dG8nLFxuICAgICAgICAgICAgLy8geyB3aWR0aDogc2l6ZS53LCBoZWlnaHQ6IHNpemUuaCB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAvLyBtaW5TaXplOiBuZXcgZ28uU2l6ZShzaXplLncsIHNpemUuaCksXG4gICAgICAgICAgICAgIC8vIG1heFNpemU6IG5ldyBnby5TaXplKHNpemUudywgc2l6ZS5oKSxcbiAgICAgICAgICAgICAgZGVzaXJlZFNpemU6IG5ldyBnby5TaXplKHNpemUudywgc2l6ZS5oKSxcbiAgICAgICAgICAgICAgY29sdW1uOiAxLFxuICAgICAgICAgICAgICByb3c6IDIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3dpZHRoJywgJ3dpZHRoJyksXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygnaGVpZ2h0JywgJ2hlaWdodCcpLFxuXG4gICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLlNoYXBlLFxuICAgICAgICAgICAgICAnUm91bmRlZFJlY3RhbmdsZScsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWxsOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuTElHSFRfQkxVRSxcbiAgICAgICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5MSU5LX1dBVEVSLFxuICAgICAgICAgICAgICAgIG5hbWU6ICd0ZXh0Tm9kZVNoYXBlJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2ZpbGwnLCAnZmlsbCcpLFxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygnc3Ryb2tlJywgJ3N0cm9rZScpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgJ1ZlcnRpY2FsJyxcbiAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgICAgICdIb3Jpem9udGFsJyxcbiAgICAgICAgICAgICAgICB7IGFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIgfSxcbiAgICAgICAgICAgICAgICAvLyBBbGVydFxuXG4gICAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAgICAgICAnQXV0bycsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCAwLCAwLCA1KSxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAncmVjb21tZW5kYXRpb24nKSxcbiAgICAgICAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ0NpcmNsZScsIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogJyNFOTVGNDcnLFxuICAgICAgICAgICAgICAgICAgICBzdHJva2U6ICcjRTk1RjQ3JyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE1LFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE1LFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICB0aGlzLiQoZ28uVGV4dEJsb2NrLCB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICdcXHVmNjQ5JyxcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDEuNSwgMCwgMCwgMCksXG4gICAgICAgICAgICAgICAgICAgIGZvbnQ6ICc4cHggXCJGb250IEF3ZXNvbWUgNiBQcm9cIicsXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogJyNmZmYnLFxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgID8gdGhpcy4kKFxuICAgICAgICAgICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgICAgICAgICAgICdQb3NpdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE4LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkNlbnRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCAwLCAwLCA1KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlRW50ZXI6IChlLCBvYmopID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vbkhvdmVyQWxlcnQuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogZT8uWydXciddPy54ICsgOCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGU/LlsnV3InXT8ueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlQWxlcnQ6IChvYmogYXMgYW55KS5wYXJ0Py5vYj8ubWVzc2FnZUFsZXJ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3VzZUxlYXZlOiAoZSwgb2JqKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub25Ib3ZlckFsZXJ0LmVtaXQobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnYWxlcnQnKSxcblxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJChnby5QaWN0dXJlLCBJQ09OX0FMRVJULCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4U2l6ZTogbmV3IGdvLlNpemUoMzAsIDMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlU3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVW5pZm9ybSxcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgICAgICdBdXRvJyxcbiAgICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0ZXh0QmxvY2tWYWx1ZScsXG4gICAgICAgICAgICAgICAgICAgIHJvdzogMixcbiAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBkZXNpcmVkU2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53IC0gOCwgMTgpLFxuICAgICAgICAgICAgICAgICAgICBmb250OiAnYm9sZCAyMnB4IEFyaWFsJyxcbiAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuR1JBWSxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGdvLlRleHRCbG9jay5PdmVyZmxvd0VsbGlwc2lzLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIC8vIG5ldyBnby5CaW5kaW5nKCdlZGl0YWJsZScsICdpc0VkaXRhYmxlJyksXG4gICAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygnYW5nbGUnLCAnYW5nbGUnKSxcbiAgICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdtYXJnaW4nLCAnJywgKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGE/LmFsZXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdzdHJva2UnLCAnY29sb3InKSxcbiAgICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJycsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRleHREYXRhQm94KGRhdGEpO1xuICAgICAgICAgICAgICAgICAgfSkubWFrZVR3b1dheSgpLFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnJywgKGRhdGEpID0+ICFkYXRhPy5pc0hpZGRlblZhbHVlKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgdGhpcy5tYWtlUG9ydCgnVCcsIGdvLlNwb3QuVG9wLCBnby5TcG90LlRvcFNpZGUsIGZhbHNlLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMubWFrZVBvcnQoJ0wnLCBnby5TcG90LkxlZnQsIGdvLlNwb3QuTGVmdFNpZGUsIGZhbHNlLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMubWFrZVBvcnQoJ1InLCBnby5TcG90LlJpZ2h0LCBnby5TcG90LlJpZ2h0U2lkZSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgICAgICAgdGhpcy5tYWtlUG9ydCgnQicsIGdvLlNwb3QuQm90dG9tLCBnby5TcG90LkJvdHRvbVNpZGUsIHRydWUsIGZhbHNlKVxuICAgICAgICAgICksXG4gICAgICAgICAgdGhpcy5hcnJvd0ZvclBsYW50Q2VsbChzaXplLCBBVE9fRU5VTV9GTE9XX0RJUkVDVElPTi5JTkZMT1cpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMubXlEaWFncmFtLm5vZGVUZW1wbGF0ZU1hcC5zZXQoXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuVEVYVF9OT0RFLFxuICAgICAgbm9kZVxuICAgICk7XG4gIH1cblxuICBhcnJvd0ZvclBsYW50Q2VsbChzaXplLCBmbG93RGlyZWN0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuJChcbiAgICAgIGdvLlBhbmVsLFxuICAgICAgJ1RhYmxlJyxcbiAgICAgIHtcbiAgICAgICAgaGVpZ2h0OiBzaXplLmgsXG4gICAgICB9LFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2hlaWdodCcsICdoZWlnaHQnKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKFxuICAgICAgICAndmlzaWJsZScsXG4gICAgICAgICcnLFxuICAgICAgICAoZGF0YSkgPT4gZGF0YT8uZmxvd09mUGxhbnRDZWxsID09PSBmbG93RGlyZWN0aW9uXG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjb2x1bW46IGZsb3dEaXJlY3Rpb24gPT09IEFUT19FTlVNX0ZMT1dfRElSRUNUSU9OLk9VVEZMT1cgPyAwIDogMixcbiAgICAgICAgcm93OiAyLFxuICAgICAgfSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdpdGVtQXJyYXknLCAnZGF0YUxpbmtBcnJheScpLFxuICAgICAge1xuICAgICAgICBpdGVtVGVtcGxhdGU6IHRoaXMuJChcbiAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygncm93JywgJ2luZGV4Um93JyksXG4gICAgICAgICAgLy8gbmV3IGdvLkJpbmRpbmcoJ2hlaWdodCcsICdoZWlnaHQnKSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5QaWN0dXJlLFxuICAgICAgICAgICAgQVJST1csXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgICAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKDIwLCA0MCksXG4gICAgICAgICAgICAgIC8vIGltYWdlU3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVW5pZm9ybSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygnc291cmNlJywgJycsIChkYXRhLCBwYW5lbCkgPT4ge1xuICAgICAgICAgICAgICAvLyBwYW5lbC5wYXJ0Py5kYXRhPy5pZFxuICAgICAgICAgICAgICByZXR1cm4gZGF0YT8uaXNDcmVhdGVkID8gcGFuZWw/LiRwIDogQVJST1dfR1JBWTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnZXRUZXh0RGF0YUJveChkYXRhKSB7XG4gICAgaWYgKGRhdGE/LnZhbHVlID09PSBWQUxVRV9OQSkge1xuICAgICAgcmV0dXJuIFRFWFRfVU5LTk9XTjtcbiAgICB9XG4gICAgcmV0dXJuIGAke2RhdGE/LnNob3J0ZW5lZE51bWJlcn0ke1xuICAgICAgZGF0YT8udW5pdFByZWZpeGVzID8gJyAnICsgZGF0YT8udW5pdFByZWZpeGVzIDogJydcbiAgICB9YDtcbiAgfVxuXG4gIG1ha2VEYXRhQm94VGVtcGxhdGUoXG4gICAgc2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9ID0ge1xuICAgICAgdzogQXRvR29qc0VkaXRvck1vZGVsLkdSSURfU0laRSAqIDUsXG4gICAgICBoOiBBdG9Hb2pzRWRpdG9yTW9kZWwuR1JJRF9TSVpFICogNSxcbiAgICB9XG4gICkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGxldCBub2RlID0gdGhpcy4kKFxuICAgICAgZ28uTm9kZSxcbiAgICAgICdTcG90JyxcbiAgICAgIHtcbiAgICAgICAgbG9jYXRpb25TcG90OiBnby5TcG90LkNlbnRlcixcbiAgICAgICAgbW91c2VPdmVyOiBmdW5jdGlvbiAoZSwgb2JqKSB7fSxcbiAgICAgICAgY2xpY2s6IChlLCBvYmo6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIG9iaj8uZGF0YT8ub25TZWxlY3RlZChvYmo/LmRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZDogKGUpID0+IHtcbiAgICAgICAgICBpZiAoIWUuaXNTZWxlY3RlZCAmJiBlPy5kYXRhPy5vblNlbGVjdGVkKSB7XG4gICAgICAgICAgICBlPy5kYXRhPy5vblNlbGVjdGVkKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0sXG5cbiAgICAgIG5ldyBnby5CaW5kaW5nKCdsb2NhdGlvbicsICdsb2MnLCBnby5Qb2ludC5wYXJzZSkubWFrZVR3b1dheShcbiAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICApLFxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgJ0F1dG8nLFxuICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtb3VzZUhvdmVyOiAoZSwgb2JqKSA9PiB7XG4gICAgICAgICAgICAgIGlmICgob2JqIGFzIGFueSkucGFydD8ub2I/LnZhbHVlID09PSBWQUxVRV9OQSkge1xuICAgICAgICAgICAgICAgIHNlbGYub25Ib3ZlckluZm9CdXR0b24uZW1pdCh7XG4gICAgICAgICAgICAgICAgICBsZWZ0OiBlPy5bJ1dyJ10/LnggKyA4LFxuICAgICAgICAgICAgICAgICAgdG9wOiBlPy5bJ1dyJ10/LnksXG4gICAgICAgICAgICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbW91c2VMZWF2ZTogKGUsIG9iaikgPT4ge1xuICAgICAgICAgICAgICBpZiAoKG9iaiBhcyBhbnkpLnBhcnQ/Lm9iPy52YWx1ZSA9PT0gVkFMVUVfTkEpIHtcbiAgICAgICAgICAgICAgICBzZWxmLm9uSG92ZXJJbmZvQnV0dG9uLmVtaXQobnVsbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcblxuICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgJ0F1dG8nLFxuICAgICAgICAgICAgeyByb3c6IDAsIHN0cmV0Y2g6IGdvLkdyYXBoT2JqZWN0Lkhvcml6b250YWwgfSxcbiAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgZ28uU2hhcGUsXG4gICAgICAgICAgICAgICdSZWN0YW5nbGUnLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmlsbDogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLkxJR0hUX0JMVUUsXG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuUkVTT0xVVElPTl9CTFVFLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygnZmlsbCcsICdjb2xvcicpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByb3c6IDAsXG4gICAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDEwLCAxMCwgNSwgMTApLFxuICAgICAgICAgICAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKHNpemUudywgTmFOKSxcbiAgICAgICAgICAgICAgICBzdHJva2U6ICd3aGl0ZScsXG4gICAgICAgICAgICAgICAgZm9udDogJ25vcm1hbCAxMHB0IEFyaWFsJyxcbiAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIHNwYWNpbmdCZWxvdzogNSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpLm1ha2VUd29XYXkoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAnQXV0bycsXG4gICAgICAgICAgICB7IHJvdzogMSwgc3RyZXRjaDogZ28uR3JhcGhPYmplY3QuSG9yaXpvbnRhbCB9LFxuICAgICAgICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnUmVjdGFuZ2xlJywge1xuICAgICAgICAgICAgICBmaWxsOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuTElHSFRfQkxVRSxcbiAgICAgICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuUkVTT0xVVElPTl9CTFVFLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgICAnSG9yaXpvbnRhbCcsXG4gICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgcm93OiAyLFxuICAgICAgICAgICAgICAgICAgLy8gZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAvLyBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAxMCwgNDApLFxuICAgICAgICAgICAgICAgICAgLy8gbWluU2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53IC0gMTAsIHNpemUuaCksXG4gICAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oNSwgMCwgNSwgNSksXG4gICAgICAgICAgICAgICAgICBmb250OiAnYm9sZCAxMnB0IEFyaWFsJyxcbiAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5HUkFZLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2VkaXRhYmxlJywgJ2lzRWRpdGFibGUnKSxcbiAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICdzaG9ydGVuZWROdW1iZXInKS5tYWtlVHdvV2F5KCksXG4gICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3N0cm9rZScsICdjb2xvcicpLFxuICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJycsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS52YWx1ZSAhPT0gVkFMVUVfTkE7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICByb3c6IDIsXG4gICAgICAgICAgICAgICAgICAvLyBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIC8vIG1heFNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDEwLCA0MCksXG4gICAgICAgICAgICAgICAgICAvLyBtaW5TaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAxMCwgc2l6ZS5oKSxcbiAgICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbig1LCA1LCA1LCAwKSxcbiAgICAgICAgICAgICAgICAgIGZvbnQ6ICdib2xkIDEycHQgQXJpYWwnLFxuICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLkdSQVksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICcnLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEudmFsdWUgIT09IFZBTFVFX05BO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJ3VuaXRQcmVmaXhlcycpLFxuICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdzdHJva2UnLCAnY29sb3InKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAvLyBJY29uIEVyciB3aGVuIGxhY2sgb2YgdmFsdWVcbiAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMTAsIDEwLCAxMCwgMTApLFxuICAgICAgICAgICAgICAgICAgdGV4dDogVkFMVUVfTkEsIC8vIE9sZCB2ZXJzaW9uOiBURVhUX0VSUk9SXG4gICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgZm9udDogJ2JvbGQgMTBwdCBzYW5zLXNlcmlmJyxcbiAgICAgICAgICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLlNBTE1PTixcbiAgICAgICAgICAgICAgICAgIHdyYXA6IGdvLlRleHRCbG9jay5XcmFwRml0LFxuICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgaXNNdWx0aWxpbmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnJywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLnZhbHVlID09PSBWQUxVRV9OQTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgdGhpcy4kKGdvLlBhbmVsLCAnVmVydGljYWwnLCB7XG4gICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICBhbGlnbm1lbnRGb2N1czogbmV3IGdvLlNwb3QoMCwgMC41LCA4LCAwKSxcbiAgICAgIH0pLFxuICAgICAgdGhpcy4kKGdvLlBhbmVsLCAnVmVydGljYWwnLCB7XG4gICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5SaWdodCxcbiAgICAgICAgYWxpZ25tZW50Rm9jdXM6IG5ldyBnby5TcG90KDEsIDAuNSwgLTgsIDApLFxuICAgICAgfSksXG4gICAgICAvLyBmb3VyIG5hbWVkIHBvcnRzLCBvbmUgb24gZWFjaCBzaWRlOlxuXG4gICAgICB0aGlzLm1ha2VQb3J0KCdUJywgZ28uU3BvdC5Ub3AsIGdvLlNwb3QuVG9wU2lkZSwgZmFsc2UsIHRydWUpLFxuICAgICAgdGhpcy5tYWtlUG9ydCgnTCcsIGdvLlNwb3QuTGVmdCwgZ28uU3BvdC5MZWZ0U2lkZSwgdHJ1ZSwgdHJ1ZSksXG4gICAgICB0aGlzLm1ha2VQb3J0KCdSJywgZ28uU3BvdC5SaWdodCwgZ28uU3BvdC5SaWdodFNpZGUsIHRydWUsIHRydWUpLFxuICAgICAgdGhpcy5tYWtlUG9ydCgnQicsIGdvLlNwb3QuQm90dG9tLCBnby5TcG90LkJvdHRvbVNpZGUsIHRydWUsIGZhbHNlKVxuICAgICk7XG4gICAgdGhpcy5teURpYWdyYW0ubm9kZVRlbXBsYXRlTWFwLnNldChcbiAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5EQVRBX0JPWCxcbiAgICAgIG5vZGVcbiAgICApO1xuICB9XG5cbiAgc2hvd1BvaW50KGxvYykge1xuICAgIGNvbnN0IGRvY0xvYyA9IHRoaXMubXlEaWFncmFtLnRyYW5zZm9ybURvY1RvVmlldyhsb2MpO1xuICB9XG5cbiAgbWFrZUVudGl0eVRlbXBsYXRlKFxuICAgIGljb24sXG4gICAgdGl0bGUsXG4gICAgc2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9ID0ge1xuICAgICAgdzogQXRvR29qc0VkaXRvck1vZGVsLkdSSURfU0laRSAqIDUsXG4gICAgICBoOiBBdG9Hb2pzRWRpdG9yTW9kZWwuR1JJRF9TSVpFICogNSxcbiAgICB9XG4gICkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGxldCBub2RlID0gdGhpcy4kKFxuICAgICAgZ28uTm9kZSxcbiAgICAgICdTcG90JyxcbiAgICAgIHtcbiAgICAgICAgbG9jYXRpb25TcG90OiBnby5TcG90LkNlbnRlcixcbiAgICAgICAgbW91c2VPdmVyOiBmdW5jdGlvbiAoZSwgb2JqKSB7XG4gICAgICAgICAgLy8gc2VsZi5zaG93UG9pbnQob2JqPy5wYXJ0Py5sb2NhdGlvbik7XG4gICAgICAgIH0sXG4gICAgICAgIGNsaWNrOiAoZSwgb2JqOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAob2JqPy5kYXRhPy5vblNlbGVjdGVkKSB7XG4gICAgICAgICAgICBvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQob2JqPy5kYXRhKTtcbiAgICAgICAgICAgIHNlbGYub25DbGlja0NvbXBvZW50LmVtaXQoe1xuICAgICAgICAgICAgICBsZWZ0OiBlPy5bJ1dyJ10/LngsXG4gICAgICAgICAgICAgIHRvcDogZT8uWydXciddPy55LFxuICAgICAgICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAgICAgICBjb21wb25lbnQ6IG9iaj8uZGF0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZDogKGUpID0+IHtcbiAgICAgICAgICBpZiAoIWUuaXNTZWxlY3RlZCAmJiBlPy5kYXRhPy5vblNlbGVjdGVkKSB7XG4gICAgICAgICAgICBlPy5kYXRhPy5vblNlbGVjdGVkKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0aW9uQWRvcm5tZW50VGVtcGxhdGU6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6IHRoaXMuJChcbiAgICAgICAgICAgICAgZ28uQWRvcm5tZW50LFxuICAgICAgICAgICAgICAnU3BvdCcsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaGFkb3dWaXNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNoYWRvd0JsdXI6IDYsXG4gICAgICAgICAgICAgICAgc2hhZG93T2Zmc2V0OiBuZXcgZ28uUG9pbnQoMCwgMiksXG4gICAgICAgICAgICAgICAgc2hhZG93Q29sb3I6ICcjMDAwMDAwMjknLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAgICAgJ0F1dG8nLFxuICAgICAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwge1xuICAgICAgICAgICAgICAgICAgZmlsbDogbnVsbCxcbiAgICAgICAgICAgICAgICAgIHN0cm9rZTogJ2RvZGdlcmJsdWUnLFxuICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDQsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGhpcy4kKGdvLlBsYWNlaG9sZGVyLCB7IHBhZGRpbmc6IDMgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgICAgICdIb3Jpem9udGFsJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuVG9wUmlnaHQsXG4gICAgICAgICAgICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Cb3R0b20sXG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAnd2hpdGUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8gbW9yZVxuICAgICAgICAgICAgICAgICF0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5XG4gICAgICAgICAgICAgICAgICA/IHRoaXMuZ2VuZXJhdGVBY3Rpb25Hcm91cChcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5ST19XQVRFUl9UUkVBVE1FTlRcbiAgICAgICAgICAgICAgICAgICAgICAgIF0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkNPT0xJTkdfVE9XRVJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5OT0RFX1RFTVBMQVRFU1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLkJPSUxFUlxuICAgICAgICAgICAgICAgICAgICAgICAgXS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuSU1NRVJTRURfVUZfV0FURVJfVFJFQVRNRU5UU1xuICAgICAgICAgICAgICAgICAgICAgICAgXS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLk5PREVfVEVNUExBVEVTW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuUFJFU1NVUklaRURfVUZfV0FURVJfVFJFQVRNRU5UU1xuICAgICAgICAgICAgICAgICAgICAgICAgXS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIF0uaW5jbHVkZXModGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuUkVOQU1FLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5GTE9XX0RFVEFJTFMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLkFTU0VUX1BBUkFNRVRFUlMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLk9VVEZMT1csXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLkRFTEVURSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLlJFTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREVUQUlMUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuT1VURkxPVyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREVMRVRFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIDoge31cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgdG9vbFRpcDogdGhpcy4kKFxuICAgICAgICAgICdUb29sVGlwJyxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1hcmdpbjogNCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIC8vIG5ldyBnby5CaW5kaW5nKCdsb2NhdGlvbicsICdsb2MnLCBnby5Qb2ludC5wYXJzZSksXG4gICAgICBuZXcgZ28uQmluZGluZygnbW92YWJsZScsICdtb3ZhYmxlJyksXG4gICAgICBuZXcgZ28uQmluZGluZygnc2VsZWN0YWJsZScsICdzZWxlY3RhYmxlJyksXG4gICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgIGdvLlBvaW50LnN0cmluZ2lmeVxuICAgICAgKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJ3Zpc2libGUnKSxcbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAge1xuICAgICAgICAgIHdpZHRoOiBzaXplLncsXG4gICAgICAgICAgaGVpZ2h0OiBzaXplLmgsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ1JvdW5kZWRSZWN0YW5nbGUnLCB7XG4gICAgICAgICAgZmlsbDogJ3doaXRlJyxcbiAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5MSU5LX1dBVEVSLFxuICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgIC8vIHN0cm9rZURhc2hBcnJheTogWzUsIDVdLFxuICAgICAgICB9KSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICdUYWJsZScsXG4gICAgICAgICAgdGhpcy4kKGdvLlBpY3R1cmUsIGljb24sIHtcbiAgICAgICAgICAgIHJvdzogMSxcbiAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgICAgICBkZXNpcmVkU2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53IC0gMjAsIHNpemUuaCAtIDUwKSxcbiAgICAgICAgICAgIC8vIG1heFNpemU6IG5ldyBnby5TaXplKDYwLCA2MCksXG4gICAgICAgICAgICBpbWFnZVN0cmV0Y2g6IGdvLkdyYXBoT2JqZWN0LlVuaWZvcm0sXG4gICAgICAgICAgICAvLyB0b29sVGlwOiB0aGlzLiQoXG4gICAgICAgICAgICAvLyAgICdUb29sVGlwJyxcbiAgICAgICAgICAgIC8vICAgdGhpcy4kKGdvLlRleHRCbG9jaywge1xuICAgICAgICAgICAgLy8gICAgIG1hcmdpbjogNCxcbiAgICAgICAgICAgIC8vICAgICB0ZXh0OiB0aXRsZSxcbiAgICAgICAgICAgIC8vICAgfSlcbiAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICByb3c6IDIsXG4gICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigxMCwgMCwgMywgMCksXG4gICAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICBkZXNpcmVkU2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53IC0gMjAsIDE1KSxcbiAgICAgICAgICAgICAgc3Ryb2tlOiAnIzAwMEQ0MicsXG4gICAgICAgICAgICAgIGZvbnQ6ICdib2xkIDEwcHQgQXJpYWwnLFxuICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICAgICAgICAvLyB3cmFwOiBnby5UZXh0QmxvY2suTm9uZSxcbiAgICAgICAgICAgICAgb3ZlcmZsb3c6IGdvLlRleHRCbG9jay5PdmVyZmxvd0VsbGlwc2lzLFxuICAgICAgICAgICAgICB0b29sVGlwOiB0aGlzLiQoXG4gICAgICAgICAgICAgICAgJ1Rvb2xUaXAnLFxuICAgICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAgICAgIHsgbWFyZ2luOiA0IH0sXG4gICAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpLm1ha2VUd29XYXkoKSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdlZGl0YWJsZScsICcnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gIShcbiAgICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuVFlQRV9DT01QT05FTlRfV0FURVI/LmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgZGF0YT8uc3lzdGVtVHlwZVxuICAgICAgICAgICAgICAgICkgJiZcbiAgICAgICAgICAgICAgICBkYXRhPy50b3BvbG9neVR5cGUgIT09IEFUT19FQ09NUE9ORU5UX1BMQU5UX1RZUEUuV0FURVIgJiZcbiAgICAgICAgICAgICAgICBkYXRhPy50b3BvbG9neVR5cGUgIT09XG4gICAgICAgICAgICAgICAgICBBVE9fRUNPTVBPTkVOVF9QTEFOVF9UWVBFLldBVEVSX1BMQU5UX0NFTExcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApLFxuXG4gICAgICB0aGlzLiQoZ28uUGFuZWwsICdWZXJ0aWNhbCcsIHtcbiAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkxlZnQsXG4gICAgICAgIGFsaWdubWVudEZvY3VzOiBuZXcgZ28uU3BvdCgwLCAwLjUsIDgsIDApLFxuICAgICAgfSksXG4gICAgICB0aGlzLiQoZ28uUGFuZWwsICdWZXJ0aWNhbCcsIHtcbiAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LlJpZ2h0LFxuICAgICAgICBhbGlnbm1lbnRGb2N1czogbmV3IGdvLlNwb3QoMSwgMC41LCAtOCwgMCksXG4gICAgICB9KSxcblxuICAgICAgdGhpcy5tYWtlUG9ydCgnVCcsIGdvLlNwb3QuVG9wLCBnby5TcG90LlRvcFNpZGUsIGZhbHNlLCB0cnVlKSxcbiAgICAgIHRoaXMubWFrZVBvcnQoJ0wnLCBnby5TcG90LkxlZnQsIGdvLlNwb3QuTGVmdFNpZGUsIGZhbHNlLCB0cnVlKSxcbiAgICAgIHRoaXMubWFrZVBvcnQoJ1InLCBnby5TcG90LlJpZ2h0LCBnby5TcG90LlJpZ2h0U2lkZSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgdGhpcy5tYWtlUG9ydCgnQicsIGdvLlNwb3QuQm90dG9tLCBnby5TcG90LkJvdHRvbVNpZGUsIHRydWUsIGZhbHNlKVxuICAgICk7XG4gICAgdGhpcy5teURpYWdyYW0ubm9kZVRlbXBsYXRlTWFwLnNldCh0aXRsZSwgbm9kZSk7XG4gIH1cblxuICBtYWtlRW50aXR5VGVtcGxhdGVFbmVyZ3koXG4gICAgaWNvbixcbiAgICB0aXRsZSxcbiAgICBzaXplOiB7IHc6IG51bWJlcjsgaDogbnVtYmVyIH0gPSB7XG4gICAgICB3OiBBdG9Hb2pzRWRpdG9yTW9kZWwuR1JJRF9TSVpFICogNSxcbiAgICAgIGg6IEF0b0dvanNFZGl0b3JNb2RlbC5HUklEX1NJWkUgKiA1LFxuICAgIH1cbiAgKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgbGV0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Ob2RlLFxuICAgICAgJ1Nwb3QnLFxuICAgICAge1xuICAgICAgICBsb2NhdGlvblNwb3Q6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICBtb3VzZU92ZXI6IGZ1bmN0aW9uIChlLCBvYmopIHtcbiAgICAgICAgICAvLyBzZWxmLnNob3dQb2ludChvYmo/LnBhcnQ/LmxvY2F0aW9uKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xpY2s6IChlLCBvYmo6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIG9iaj8uZGF0YT8ub25TZWxlY3RlZChvYmo/LmRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZDogKGUpID0+IHtcbiAgICAgICAgICBpZiAoIWUuaXNTZWxlY3RlZCAmJiBlPy5kYXRhPy5vblNlbGVjdGVkKSB7XG4gICAgICAgICAgICBlPy5kYXRhPy5vblNlbGVjdGVkKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0aW9uQWRvcm5tZW50VGVtcGxhdGU6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6IHRoaXMuJChcbiAgICAgICAgICAgICAgZ28uQWRvcm5tZW50LFxuICAgICAgICAgICAgICAnU3BvdCcsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaGFkb3dWaXNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNoYWRvd0JsdXI6IDYsXG4gICAgICAgICAgICAgICAgc2hhZG93T2Zmc2V0OiBuZXcgZ28uUG9pbnQoMCwgMiksXG4gICAgICAgICAgICAgICAgc2hhZG93Q29sb3I6ICcjMDAwMDAwMjknLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAgICAgJ0F1dG8nLFxuICAgICAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwge1xuICAgICAgICAgICAgICAgICAgZmlsbDogbnVsbCxcbiAgICAgICAgICAgICAgICAgIHN0cm9rZTogJ2RvZGdlcmJsdWUnLFxuICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDQsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGhpcy4kKGdvLlBsYWNlaG9sZGVyLCB7IHBhZGRpbmc6IDMgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgICAgICdIb3Jpem9udGFsJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuVG9wUmlnaHQsXG4gICAgICAgICAgICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Cb3R0b20sXG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAnd2hpdGUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8gbW9yZVxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVBY3Rpb25Hcm91cChbXG4gICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuUkVOQU1FLFxuICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLkRFVEFJTFMsXG4gICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuT1VURkxPVyxcbiAgICAgICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5ERUxFVEUsXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgdG9vbFRpcDogdGhpcy4kKFxuICAgICAgICAgICdUb29sVGlwJyxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1hcmdpbjogNCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJ3Zpc2libGUnKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdtb3ZhYmxlJywgJ21vdmFibGUnKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdzZWxlY3RhYmxlJywgJ3NlbGVjdGFibGUnKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdsb2NhdGlvbicsICdsb2MnLCBnby5Qb2ludC5wYXJzZSkubWFrZVR3b1dheShcbiAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICApLFxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgJ0F1dG8nLFxuICAgICAgICB7XG4gICAgICAgICAgd2lkdGg6IHNpemUudyxcbiAgICAgICAgICBoZWlnaHQ6IHNpemUuaCxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnUm91bmRlZFJlY3RhbmdsZScsIHtcbiAgICAgICAgICBmaWxsOiAnd2hpdGUnLFxuICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLkxJTktfV0FURVIsXG4gICAgICAgICAgLy8gc3Ryb2tlRGFzaEFycmF5OiBbNSwgNV0sXG4gICAgICAgIH0pLFxuICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuVEVNUExBVEVfRFVQTElDQVRFW3RpdGxlXSA/PyB0aXRsZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcm93OiAwLFxuICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMywgMywgMTAsIDMpLFxuICAgICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgMTUpLFxuICAgICAgICAgICAgICBzdHJva2U6ICcjNDQ0NDQ0JyxcbiAgICAgICAgICAgICAgZm9udDogJ25vcm1hbCAxMHB0IEFyaWFsJyxcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgLy8gdG9vbFRpcDogdGhpcy4kKFxuICAgICAgICAgICAgICAvLyAgICdUb29sVGlwJyxcbiAgICAgICAgICAgICAgLy8gICB0aGlzLiQoZ28uVGV4dEJsb2NrLCB7XG4gICAgICAgICAgICAgIC8vICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgIC8vICAgICB0ZXh0OiB0aXRsZSxcbiAgICAgICAgICAgICAgLy8gICB9KVxuICAgICAgICAgICAgICAvLyApLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICksXG4gICAgICAgICAgdGhpcy4kKGdvLlBpY3R1cmUsIGljb24sIHtcbiAgICAgICAgICAgIHJvdzogMSxcbiAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgICAgICBkZXNpcmVkU2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53IC0gMjAsIHNpemUuaCAtIDY1KSxcbiAgICAgICAgICAgIGltYWdlU3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVW5pZm9ybSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHJvdzogMixcbiAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDEwLCAzLCAzLCAzKSxcbiAgICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDIwLCAxNSksXG4gICAgICAgICAgICAgIHN0cm9rZTogJyMyQzJDMkMnLFxuICAgICAgICAgICAgICBmb250OiAnYm9sZCAxMHB0IEFyaWFsJyxcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgLy8gd3JhcDogZ28uVGV4dEJsb2NrLk5vbmUsXG4gICAgICAgICAgICAgIG92ZXJmbG93OiBnby5UZXh0QmxvY2suT3ZlcmZsb3dFbGxpcHNpcyxcbiAgICAgICAgICAgICAgdG9vbFRpcDogdGhpcy4kKFxuICAgICAgICAgICAgICAgICdUb29sVGlwJyxcbiAgICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogNCxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJ25hbWUnKS5tYWtlVHdvV2F5KClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICB0aGlzLiQoZ28uUGFuZWwsICdWZXJ0aWNhbCcsIHtcbiAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkxlZnQsXG4gICAgICAgIGFsaWdubWVudEZvY3VzOiBuZXcgZ28uU3BvdCgwLCAwLjUsIDgsIDApLFxuICAgICAgfSksXG4gICAgICB0aGlzLiQoZ28uUGFuZWwsICdWZXJ0aWNhbCcsIHtcbiAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LlJpZ2h0LFxuICAgICAgICBhbGlnbm1lbnRGb2N1czogbmV3IGdvLlNwb3QoMSwgMC41LCAtOCwgMCksXG4gICAgICB9KSxcbiAgICAgIC8vIGZvdXIgbmFtZWQgcG9ydHMsIG9uZSBvbiBlYWNoIHNpZGU6XG5cbiAgICAgIHRoaXMubWFrZVBvcnQoJ1QnLCBnby5TcG90LlRvcCwgZ28uU3BvdC5Ub3BTaWRlLCBmYWxzZSwgdHJ1ZSksXG4gICAgICB0aGlzLm1ha2VQb3J0KCdMJywgZ28uU3BvdC5MZWZ0LCBnby5TcG90LkxlZnRTaWRlLCBmYWxzZSwgdHJ1ZSksXG4gICAgICB0aGlzLm1ha2VQb3J0KCdSJywgZ28uU3BvdC5SaWdodCwgZ28uU3BvdC5SaWdodFNpZGUsIHRydWUsIGZhbHNlKSxcbiAgICAgIHRoaXMubWFrZVBvcnQoJ0InLCBnby5TcG90LkJvdHRvbSwgZ28uU3BvdC5Cb3R0b21TaWRlLCB0cnVlLCBmYWxzZSlcbiAgICApO1xuICAgIHRoaXMubXlEaWFncmFtLm5vZGVUZW1wbGF0ZU1hcC5zZXQodGl0bGUsIG5vZGUpO1xuICB9XG5cbiAgLy8gUGxhbnQgQ2VsbFxuICBwbGFudENlbGxUZW1wbGF0ZShcbiAgICBpY29uLFxuICAgIHRpdGxlLFxuICAgIHNpemU6IHsgdzogbnVtYmVyOyBoOiBudW1iZXIgfSA9IHtcbiAgICAgIHc6IDI2MCxcbiAgICAgIGg6IEF0b0dvanNFZGl0b3JNb2RlbC5QTEFOVF9DRUxMX0hFSUdIVCxcbiAgICB9XG4gICkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGxldCBub2RlID0gdGhpcy4kKFxuICAgICAgZ28uR3JvdXAsXG4gICAgICAnU3BvdCcsXG4gICAgICB7XG4gICAgICAgIGxvY2F0aW9uU3BvdDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgIG1vdXNlT3ZlcjogZnVuY3Rpb24gKGUsIG9iaikge1xuICAgICAgICAgIC8vIHNlbGYuc2hvd1BvaW50KG9iaj8ucGFydD8ubG9jYXRpb24pO1xuICAgICAgICB9LFxuXG4gICAgICAgIG1vdXNlRW50ZXI6IChlLCBvYmopID0+IHtcbiAgICAgICAgICAvLyBzZWxmLm9uSG92ZXJBbGVydC5lbWl0KHtcbiAgICAgICAgICAvLyAgICAgbGVmdDogZT8uWydXciddPy54ICsgOCxcbiAgICAgICAgICAvLyAgICAgdG9wOiBlPy5bJ1dyJ10/LnksXG4gICAgICAgICAgLy8gICAgIG1lc3NhZ2VBbGVydDogKG9iaiBhcyBhbnkpLnBhcnQ/Lm9iPy5tZXNzYWdlQWxlcnQsXG4gICAgICAgICAgLy8gfSk7XG4gICAgICAgICAgY29uc3Qgbm9kZSA9IG9iai5wYXJ0O1xuICAgICAgICAgIHNlbGYub25Ib3ZlckluZm9CdXR0b24uZW1pdCh7XG4gICAgICAgICAgICBsZWZ0OiBlPy5bJ1dyJ10/LnggKyA4LFxuICAgICAgICAgICAgdG9wOiBlPy5bJ1dyJ10/LnksXG4gICAgICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgbGV0IHNoYXBlID0gKG5vZGUgYXMgYW55KT8uZmluZE9iamVjdCgnU0hBUEVfS0VZJyk7IC8vIFRoYXkgJ1NIQVBFX0tFWScgYuG6sW5nIGtow7NhIGLhuqFuIMSR4bq3dCBjaG8gaMOsbmggU2hhcGVcbiAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICBpZiAoc2hhcGUpIHtcbiAgICAgICAgICAgIHNoYXBlLnN0cm9rZSA9ICdibHVlJzsgLy8gVGhheSDEkeG7lWkgbcOgdSBzdHJva2UgdGjDoG5oIGJsdWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vdXNlTGVhdmU6IChlLCBvYmopID0+IHtcbiAgICAgICAgICBzZWxmLm9uSG92ZXJJbmZvQnV0dG9uLmVtaXQobnVsbCk7XG4gICAgICAgICAgLy8gc2VsZi5vbkhvdmVyQWxlcnQuZW1pdChudWxsKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjbGljazogKGUsIG9iajogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKG9iaj8uZGF0YT8ub25TZWxlY3RlZCkge1xuICAgICAgICAgICAgb2JqPy5kYXRhPy5vblNlbGVjdGVkKG9iaj8uZGF0YSk7XG4gICAgICAgICAgICBzZWxmLm9uQ2xpY2tDb21wb2VudC5lbWl0KHtcbiAgICAgICAgICAgICAgbGVmdDogZT8uWydXciddPy54LFxuICAgICAgICAgICAgICB0b3A6IGU/LlsnV3InXT8ueSxcbiAgICAgICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBvYmo/LmRhdGEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZG91YmxlQ2xpY2s6IChlLCBvYmo6IGFueSkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5faW5pdGlhbE9wdGlvbnM/LmlzUmVhZE9ubHkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBvYmoucGFydDtcbiAgICAgICAgICAgIHRoaXMuaXNTaG93Tm9kZUluZm9cbiAgICAgICAgICAgICAgPyBzZWxmLm9uRG91YmxlQ2xpY2tOb2RlLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgbGVmdDogZT8uWydXciddPy54LFxuICAgICAgICAgICAgICAgICAgdG9wOiBlPy5bJ1dyJ10/LnksXG4gICAgICAgICAgICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gVG9kb1xuXG4gICAgICAgIHNlbGVjdGlvbkNoYW5nZWQ6IChlKSA9PiB7XG4gICAgICAgICAgaWYgKCFlLmlzU2VsZWN0ZWQgJiYgZT8uZGF0YT8ub25TZWxlY3RlZCkge1xuICAgICAgICAgICAgZT8uZGF0YT8ub25TZWxlY3RlZChudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgc2VsZWN0aW9uQWRvcm5tZW50VGVtcGxhdGU6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6IHRoaXMuJChcbiAgICAgICAgICAgICAgZ28uQWRvcm5tZW50LFxuICAgICAgICAgICAgICAnU3BvdCcsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaGFkb3dWaXNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNoYWRvd0JsdXI6IDYsXG4gICAgICAgICAgICAgICAgc2hhZG93T2Zmc2V0OiBuZXcgZ28uUG9pbnQoMCwgMiksXG4gICAgICAgICAgICAgICAgc2hhZG93Q29sb3I6ICcjMDAwMDAwMjknLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAgICAgJ0F1dG8nLFxuICAgICAgICAgICAgICAgIHsgd2lkdGg6IDE3MCB9LFxuICAgICAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwge1xuICAgICAgICAgICAgICAgICAgZmlsbDogbnVsbCxcbiAgICAgICAgICAgICAgICAgIHN0cm9rZTogJ2RvZGdlcmJsdWUnLFxuICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDQsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGhpcy4kKGdvLlBsYWNlaG9sZGVyLCB7IHBhZGRpbmc6IDMgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgICAgICdIb3Jpem9udGFsJyxcbiAgICAgICAgICAgICAgICB7IGFsaWdubWVudDogZ28uU3BvdC5Ub3BSaWdodCwgYWxpZ25tZW50Rm9jdXM6IGdvLlNwb3QuQm90dG9tIH0sXG4gICAgICAgICAgICAgICAgLy8gbW9yZVxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVBY3Rpb25Hcm91cChbXG4gICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuUkVOQU1FLFxuICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLkNIQU5HRV9JQ09OLFxuICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLk9OTFlfREVUQUlMUyxcbiAgICAgICAgICAgICAgICAgIC8vICAgRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLk9VVEZMT1csXG4gICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREVMRVRFLFxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgLy8gICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICdpc05vdEFjdGlvbicsICh4KSA9PiAheCksXG4gICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAvLyAgIHRoaXMuJChcbiAgICAgICAgICAgICAgLy8gICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAgIC8vICAgICAgICdIb3Jpem9udGFsJyxcbiAgICAgICAgICAgICAgLy8gICAgICAgeyBhbGlnbm1lbnQ6IGdvLlNwb3QuVG9wUmlnaHQsIGFsaWdubWVudEZvY3VzOiBnby5TcG90LkJvdHRvbSB9LFxuICAgICAgICAgICAgICAvLyAgICAgICB0aGlzLmdlbmVyYXRlQWN0aW9uR3JvdXAoW0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5PTkxZX0RFVEFJTFNdKSxcbiAgICAgICAgICAgICAgLy8gICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnJywgKHgpID0+IHtcbiAgICAgICAgICAgICAgLy8gICAgICAgICAgIHJldHVybiB4Py5pc09ubHlEZXRhaWxzICYmICF4Py5pc05vdEFjdGlvbiA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICAgICAgLy8gICAgICAgfSksXG4gICAgICAgICAgICAgIC8vICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAnVG9vbFRpcCcsXG4gICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpLm1ha2VUd29XYXkoKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgIGdvLlBvaW50LnN0cmluZ2lmeVxuICAgICAgKSxcbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAgeyB3aWR0aDogc2l6ZS53LCBoZWlnaHQ6IHNpemUuaCB9LFxuICAgICAgICAvLyB0aGlzLiQoZ28uU2hhcGUsICdSb3VuZGVkUmVjdGFuZ2xlJywge1xuICAgICAgICAvLyAgICAgZmlsbDogJ3doaXRlJyxcbiAgICAgICAgLy8gICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLkxJTktfV0FURVIsXG4gICAgICAgIC8vICAgICAvLyBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgLy8gfSksXG4gICAgICAgIC8vIHRoaXMuJChnby5QbGFjZWhvbGRlciwgeyBwYWRkaW5nOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDApLCB2aXNpYmxlOiBmYWxzZSB9KSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICdBdXRvJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgNTAsIDAsIDUwKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ1JvdW5kZWRSZWN0YW5nbGUnLCB7XG4gICAgICAgICAgICBmaWxsOiAnd2hpdGUnLFxuICAgICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuTElOS19XQVRFUixcbiAgICAgICAgICAgIHN0cm9rZURhc2hBcnJheTogWzUsIDVdLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICAgIHRoaXMuJChnby5UZXh0QmxvY2ssIHRpdGxlLCB7XG4gICAgICAgICAgICAgIHJvdzogMCxcbiAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDMsIDAsIDEwLCAwKSxcbiAgICAgICAgICAgICAgZGVzaXJlZFNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDIwLCAxNSksXG4gICAgICAgICAgICAgIHN0cm9rZTogJyM0NDQ0NDQnLFxuICAgICAgICAgICAgICBmb250OiAnbm9ybWFsIDEwcHQgQXJpYWwnLFxuICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICAgICAgICAvLyB0b29sVGlwOiB0aGlzLiQoXG4gICAgICAgICAgICAgIC8vICAgJ1Rvb2xUaXAnLFxuICAgICAgICAgICAgICAvLyAgIHRoaXMuJChnby5UZXh0QmxvY2ssIHtcbiAgICAgICAgICAgICAgLy8gICAgIG1hcmdpbjogNCxcbiAgICAgICAgICAgICAgLy8gICAgIHRleHQ6IHRpdGxlLFxuICAgICAgICAgICAgICAvLyAgIH0pXG4gICAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgZ28uUGljdHVyZSxcbiAgICAgICAgICAgICAgaWNvbixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJvdzogMSxcbiAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICAgICAgICAgIGRlc2lyZWRTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgc2l6ZS5oIC0gNjUpLFxuICAgICAgICAgICAgICAgIGltYWdlU3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVW5pZm9ybSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoXG4gICAgICAgICAgICAgICAgJ3NvdXJjZScsXG4gICAgICAgICAgICAgICAgJ3BhdGhJbWFnZScsXG4gICAgICAgICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICAgICAgICB4ID8/XG4gICAgICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuTk9ERV9URU1QTEFURVNbXG4gICAgICAgICAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5QTEFOVF9DRUxMXG4gICAgICAgICAgICAgICAgICBdLmljb25cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcm93OiAyLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigxMCwgMCwgMywgMCksXG4gICAgICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZGVzaXJlZFNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDIwLCAxNSksXG4gICAgICAgICAgICAgICAgc3Ryb2tlOiAnIzJDMkMyQycsXG4gICAgICAgICAgICAgICAgZm9udDogJ2JvbGQgMTBwdCBBcmlhbCcsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAvLyB3cmFwOiBnby5UZXh0QmxvY2suTm9uZSxcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogZ28uVGV4dEJsb2NrLk92ZXJmbG93RWxsaXBzaXMsXG4gICAgICAgICAgICAgICAgdG9vbFRpcDogdGhpcy4kKFxuICAgICAgICAgICAgICAgICAgJ1Rvb2xUaXAnLFxuICAgICAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJ25hbWUnKS5tYWtlVHdvV2F5KClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApLFxuXG4gICAgICB0aGlzLiQoZ28uUGFuZWwsICdWZXJ0aWNhbCcsIHtcbiAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkxlZnQsXG4gICAgICAgIGFsaWdubWVudEZvY3VzOiBuZXcgZ28uU3BvdCgwLCAwLjUsIDgsIDApLFxuICAgICAgfSksXG4gICAgICB0aGlzLiQoZ28uUGFuZWwsICdWZXJ0aWNhbCcsIHtcbiAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LlJpZ2h0LFxuICAgICAgICBhbGlnbm1lbnRGb2N1czogbmV3IGdvLlNwb3QoMSwgMC41LCAtOCwgMCksXG4gICAgICB9KVxuXG4gICAgICAvLyB0aGlzLm1ha2VQb3J0KCdUJywgZ28uU3BvdC5Ub3AsIGdvLlNwb3QuVG9wU2lkZSwgZmFsc2UsIHRydWUpLFxuICAgICAgLy8gdGhpcy5tYWtlUG9ydCgnTCcsIGdvLlNwb3QuTGVmdCwgZ28uU3BvdC5MZWZ0U2lkZSwgZmFsc2UsIHRydWUpLFxuICAgICAgLy8gdGhpcy5tYWtlUG9ydCgnUicsIGdvLlNwb3QuUmlnaHQsIGdvLlNwb3QuUmlnaHRTaWRlLCB0cnVlLCBmYWxzZSksXG4gICAgICAvLyB0aGlzLm1ha2VQb3J0KCdCJywgZ28uU3BvdC5Cb3R0b20sIGdvLlNwb3QuQm90dG9tU2lkZSwgdHJ1ZSwgZmFsc2UpLFxuICAgICk7XG4gICAgdGhpcy5teURpYWdyYW0ubm9kZVRlbXBsYXRlTWFwLnNldCh0aXRsZSwgbm9kZSk7XG4gIH1cblxuICBtYWtlRW50aXR5V2l0aGRyYXdPckRpc2NoYXJnZShcbiAgICBpY29uLFxuICAgIHRpdGxlLFxuICAgIHNpemU6IHsgdzogbnVtYmVyOyBoOiBudW1iZXIgfSA9IHtcbiAgICAgIHc6IEF0b0dvanNFZGl0b3JNb2RlbC5HUklEX1NJWkUgKiA1LFxuICAgICAgaDogQXRvR29qc0VkaXRvck1vZGVsLkdSSURfU0laRSAqIDUsXG4gICAgfVxuICApIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBsZXQgbm9kZSA9IHRoaXMuJChcbiAgICAgIGdvLk5vZGUsXG4gICAgICAnU3BvdCcsXG4gICAgICB7XG4gICAgICAgIGxvY2F0aW9uU3BvdDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgIG1vdXNlT3ZlcjogZnVuY3Rpb24gKGUsIG9iaikge1xuICAgICAgICAgIC8vIHNlbGYuc2hvd1BvaW50KG9iaj8ucGFydD8ubG9jYXRpb24pO1xuICAgICAgICB9LFxuICAgICAgICBjbGljazogKGUsIG9iajogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKG9iaj8uZGF0YT8ub25TZWxlY3RlZCkge1xuICAgICAgICAgICAgb2JqPy5kYXRhPy5vblNlbGVjdGVkKG9iaj8uZGF0YSk7XG4gICAgICAgICAgICBzZWxmLm9uQ2xpY2tDb21wb2VudC5lbWl0KHtcbiAgICAgICAgICAgICAgbGVmdDogZT8uWydXciddPy54LFxuICAgICAgICAgICAgICB0b3A6IGU/LlsnV3InXT8ueSxcbiAgICAgICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBvYmo/LmRhdGEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNlbGVjdGlvbkNoYW5nZWQ6IChlKSA9PiB7XG4gICAgICAgICAgaWYgKCFlLmlzU2VsZWN0ZWQgJiYgZT8uZGF0YT8ub25TZWxlY3RlZCkge1xuICAgICAgICAgICAgZT8uZGF0YT8ub25TZWxlY3RlZChudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNlbGVjdGlvbkFkb3JubWVudFRlbXBsYXRlOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5XG4gICAgICAgICAgPyBudWxsXG4gICAgICAgICAgOiB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLkFkb3JubWVudCxcbiAgICAgICAgICAgICAgJ1Nwb3QnLFxuICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAgICAgJ0F1dG8nLFxuICAgICAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwge1xuICAgICAgICAgICAgICAgICAgZmlsbDogbnVsbCxcbiAgICAgICAgICAgICAgICAgIHN0cm9rZTogJ2RvZGdlcmJsdWUnLFxuICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDQsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGhpcy4kKGdvLlBsYWNlaG9sZGVyLCB7IHBhZGRpbmc6IDMgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgICAgICdIb3Jpem9udGFsJyxcbiAgICAgICAgICAgICAgICB7IGFsaWdubWVudDogZ28uU3BvdC5Ub3BSaWdodCwgYWxpZ25tZW50Rm9jdXM6IGdvLlNwb3QuQm90dG9tIH0sXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUFjdGlvbkdyb3VwKFtcbiAgICAgICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5SRU5BTUUsXG4gICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREVUQUlMUyxcbiAgICAgICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5PVVRGTE9XLFxuICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLkRFTEVURSxcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICB0b29sVGlwOiB0aGlzLiQoXG4gICAgICAgICAgJ1Rvb2xUaXAnLFxuICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWFyZ2luOiA0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJ25hbWUnKS5tYWtlVHdvV2F5KClcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAndmlzaWJsZScpLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ21vdmFibGUnLCAnbW92YWJsZScpLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ3NlbGVjdGFibGUnLCAnc2VsZWN0YWJsZScpLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgICksXG5cbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAge1xuICAgICAgICAgIHdpZHRoOiBzaXplLncsXG4gICAgICAgICAgaGVpZ2h0OiBzaXplLmgsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ1JvdW5kZWRSZWN0YW5nbGUnLCB7XG4gICAgICAgICAgZmlsbDogJ3doaXRlJyxcbiAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5MSU5LX1dBVEVSLFxuICAgICAgICAgIC8vIHN0cm9rZURhc2hBcnJheTogWzUsIDVdLFxuICAgICAgICB9KSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICdUYWJsZScsXG4gICAgICAgICAgLy8gdGhpcy4kKGdvLlRleHRCbG9jaywgdGl0bGUsIHtcbiAgICAgICAgICAvLyAgICAgcm93OiAwLFxuICAgICAgICAgIC8vICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMywgMywgMTAsIDMpLFxuICAgICAgICAgIC8vICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgTmFOKSxcbiAgICAgICAgICAvLyAgICAgc3Ryb2tlOiAnIzQ0NDQ0NCcsXG4gICAgICAgICAgLy8gICAgIGZvbnQ6ICdub3JtYWwgMTBwdCBBcmlhbCcsXG4gICAgICAgICAgLy8gICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgLy8gfSksXG4gICAgICAgICAgdGhpcy4kKGdvLlBpY3R1cmUsIGljb24sIHtcbiAgICAgICAgICAgIHJvdzogMSxcbiAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgICAgICBkZXNpcmVkU2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53IC0gMjAsIHNpemUuaCAtIDUwKSxcbiAgICAgICAgICAgIGltYWdlU3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVW5pZm9ybSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHJvdzogMixcbiAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDEwLCAwLCAzLCAwKSxcbiAgICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgIGRlc2lyZWRTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgMTUpLFxuICAgICAgICAgICAgICBzdHJva2U6ICcjMDAwRDQyJyxcbiAgICAgICAgICAgICAgZm9udDogJ2JvbGQgMTBwdCBBcmlhbCcsXG4gICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIC8vIHdyYXA6IGdvLlRleHRCbG9jay5Ob25lLFxuICAgICAgICAgICAgICBvdmVyZmxvdzogZ28uVGV4dEJsb2NrLk92ZXJmbG93RWxsaXBzaXMsXG4gICAgICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICAgICAnVG9vbFRpcCcsXG4gICAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpLm1ha2VUd29XYXkoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpXG4gICAgICAgICAgICAvLyB7XG4gICAgICAgICAgICAvLyAgICAgLy8gZGVmaW5lIGEgdG9vbHRpcCBmb3IgZWFjaCBub2RlIHRoYXQgZGlzcGxheXMgdGhlIGNvbG9yIGFzIHRleHRcbiAgICAgICAgICAgIC8vICAgICB0b29sVGlwOiB0aGlzLiQoXG4gICAgICAgICAgICAvLyAgICAgICAgICdUb29sVGlwJyxcbiAgICAgICAgICAgIC8vICAgICAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgeyBtYXJnaW46IDQgfSwgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpKSxcbiAgICAgICAgICAgIC8vICAgICApLCAvLyBlbmQgb2YgQWRvcm5tZW50XG4gICAgICAgICAgICAvLyB9LFxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHRoaXMuJChnby5QYW5lbCwgJ1ZlcnRpY2FsJywge1xuICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgYWxpZ25tZW50Rm9jdXM6IG5ldyBnby5TcG90KDAsIDAuNSwgOCwgMCksXG4gICAgICB9KSxcbiAgICAgIHRoaXMuJChnby5QYW5lbCwgJ1ZlcnRpY2FsJywge1xuICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuUmlnaHQsXG4gICAgICAgIGFsaWdubWVudEZvY3VzOiBuZXcgZ28uU3BvdCgxLCAwLjUsIC04LCAwKSxcbiAgICAgIH0pLFxuICAgICAgLy8gZm91ciBuYW1lZCBwb3J0cywgb25lIG9uIGVhY2ggc2lkZTpcblxuICAgICAgdGhpcy5tYWtlUG9ydCgnVCcsIGdvLlNwb3QuVG9wLCBnby5TcG90LlRvcFNpZGUsIGZhbHNlLCB0cnVlKSxcbiAgICAgIHRoaXMubWFrZVBvcnQoJ0wnLCBnby5TcG90LkxlZnQsIGdvLlNwb3QuTGVmdFNpZGUsIGZhbHNlLCB0cnVlKSxcbiAgICAgIHRoaXMubWFrZVBvcnQoJ1InLCBnby5TcG90LlJpZ2h0LCBnby5TcG90LlJpZ2h0U2lkZSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgdGhpcy5tYWtlUG9ydCgnQicsIGdvLlNwb3QuQm90dG9tLCBnby5TcG90LkJvdHRvbVNpZGUsIHRydWUsIGZhbHNlKVxuICAgICk7XG4gICAgdGhpcy5teURpYWdyYW0ubm9kZVRlbXBsYXRlTWFwLnNldCh0aXRsZSwgbm9kZSk7XG4gIH1cblxuICBlZGl0VGV4dEdyb3VwWm9uZShlLCBidXR0b24pIHtcbiAgICBjb25zdCBub2RlR3JvdXAgPSBidXR0b24ucGFydC5hZG9ybmVkUGFydDtcbiAgICBjb25zdCBkaWFncmFtID0gbm9kZUdyb3VwLmRpYWdyYW07XG4gICAgZS5kaWFncmFtLmNvbW1hbmRIYW5kbGVyLmVkaXRUZXh0QmxvY2sobm9kZUdyb3VwLmZpbmRPYmplY3QoJ1RFWFRCTE9DSycpKTtcbiAgfVxuXG4gIGVkaXRUZXh0KGUsIGJ1dHRvbikge1xuICAgIGNvbnN0IG5vZGUgPSBidXR0b24ucGFydC5hZG9ybmVkUGFydDtcbiAgICBlLmRpYWdyYW0uY29tbWFuZEhhbmRsZXIuZWRpdFRleHRCbG9jayhub2RlLmZpbmRPYmplY3QoJ1RFWFRCTE9DSycpKTtcbiAgfVxuXG4gIGFzeW5jIGRyYWdOZXdOb2RlKGUsIGJ1dHRvbikge1xuICAgIGNvbnN0IHRvb2wgPSBlLmRpYWdyYW0udG9vbE1hbmFnZXIuZHJhZ2dpbmdUb29sO1xuXG4gICAgaWYgKHRvb2wuaXNCZXlvbmREcmFnU2l6ZSgpKSB7XG4gICAgICBjb25zdCBkYXRhID0gYnV0dG9uLl9kcmFnRGF0YTtcbiAgICAgIGlmICghZGF0YSkgcmV0dXJuO1xuICAgICAgZS5kaWFncmFtLnN0YXJ0VHJhbnNhY3Rpb24oJ2J1dHRvbiBkcmFnJyk7IC8vIHNlZSBkb0RlYWN0aXZhdGUsIGJlbG93XG5cbiAgICAgIGNvbnN0IGZyb21ub2RlID0gYnV0dG9uLnBhcnQuYWRvcm5lZFBhcnQ7XG4gICAgICBjb25zdCBkaWFncmFtID0gZnJvbW5vZGUuZGlhZ3JhbTtcbiAgICAgIGNvbnN0IG1vZGVsID0gZGlhZ3JhbS5tb2RlbDtcbiAgICAgIGNvbnN0IG5vZGVkYXRhID0ge1xuICAgICAgICAuLi5tb2RlbC5jb3B5Tm9kZURhdGEoZGF0YSksXG4gICAgICAgIGtleTogVXRpbHNTZXJ2aWNlLmdlbmVyYXRlVVVJRCgpLFxuICAgICAgfTtcbiAgICAgIG1vZGVsLmFkZE5vZGVEYXRhKG5vZGVkYXRhKTtcbiAgICAgIGNvbnN0IG5ld25vZGUgPSBkaWFncmFtLmZpbmROb2RlRm9yRGF0YShub2RlZGF0YSk7XG4gICAgICBjb25zdCBsaW5rZGF0YSA9IG1vZGVsLmNvcHlMaW5rRGF0YSh7fSk7XG4gICAgICBtb2RlbC5zZXRGcm9tS2V5Rm9yTGlua0RhdGEoXG4gICAgICAgIGxpbmtkYXRhLFxuICAgICAgICBtb2RlbC5nZXRLZXlGb3JOb2RlRGF0YShmcm9tbm9kZS5kYXRhKVxuICAgICAgKTtcbiAgICAgIG1vZGVsLnNldFRvS2V5Rm9yTGlua0RhdGEoXG4gICAgICAgIGxpbmtkYXRhLFxuICAgICAgICBtb2RlbC5nZXRLZXlGb3JOb2RlRGF0YShuZXdub2RlLmRhdGEpXG4gICAgICApO1xuICAgICAgbW9kZWwuYWRkTGlua0RhdGEobGlua2RhdGEpO1xuICAgICAgZGlhZ3JhbS5zZWxlY3QobmV3bm9kZSk7XG4gICAgICAvLyAgIHRoaXMuY3JlYXRlTm9kZUFuZExpbmsoZGF0YSwgYnV0dG9uLnBhcnQuYWRvcm5lZFBhcnQpO1xuXG4gICAgICBuZXdub2RlLmxvY2F0aW9uID0gZS5kaWFncmFtLmxhc3RJbnB1dC5kb2N1bWVudFBvaW50O1xuICAgICAgLy8gZG9uJ3QgY29tbWl0VHJhbnNhY3Rpb24gaGVyZSwgYnV0IGluIHRvb2wuZG9EZWFjdGl2YXRlLCBhZnRlciBkcmFnIG9wZXJhdGlvbiBmaW5pc2hlZFxuICAgICAgLy8gc2V0IHRvb2wuY3VycmVudFBhcnQgdG8gYSBzZWxlY3RlZCBtb3ZhYmxlIFBhcnQgYW5kIHRoZW4gYWN0aXZhdGUgdGhlIERyYWdnaW5nVG9vbFxuICAgICAgdG9vbC5jdXJyZW50UGFydCA9IG5ld25vZGU7XG4gICAgICBlLmRpYWdyYW0uY3VycmVudFRvb2wgPSB0b29sO1xuICAgICAgdG9vbC5kb0FjdGl2YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgYWRkSXRlbU9uR3JvdXBab25lKGUsIGJ1dHRvbikge1xuICAgIGNvbnN0IGRhdGEgPSBidXR0b24uX2RyYWdEYXRhO1xuICAgIGlmICghZGF0YSkgcmV0dXJuO1xuICAgIGUuZGlhZ3JhbS5zdGFydFRyYW5zYWN0aW9uKCdBZGQgSXRlbSBPbiBHcm91cCBab25lJyk7XG4gICAgY29uc3QgZnJvbW5vZGUgPSBidXR0b24ucGFydC5hZG9ybmVkUGFydDtcbiAgICBjb25zdCBkcmFnRGF0YSA9IGJ1dHRvbi5fZHJhZ0RhdGE7XG4gICAgY29uc3QgZGlhZ3JhbSA9IGZyb21ub2RlLmRpYWdyYW07XG4gICAgY29uc3QgbW9kZWwgPSBkaWFncmFtLm1vZGVsO1xuICAgIGNvbnN0IG5vZGVkYXRhID0gbW9kZWwuY29weU5vZGVEYXRhKGRyYWdEYXRhKTtcbiAgICBtb2RlbC5hZGROb2RlRGF0YSh7XG4gICAgICAuLi5ub2RlZGF0YSxcbiAgICAgIHR5cGU6ICdTdWJTeXN0ZW0nLFxuICAgICAgbmFtZTogJ1tUaXRsZS4uLl0nLFxuICAgICAgbmFtZUl0ZW06ICdbTmFtZS4uLl0nLFxuICAgICAgZ3JvdXA6IGZyb21ub2RlPy5vYj8ua2V5LFxuICAgIH0pO1xuICAgIGUuZGlhZ3JhbS5jb21taXRUcmFuc2FjdGlvbignQWRkIEl0ZW0gT24gR3JvdXAgWm9uZScpO1xuICAgIC8vIGNvbnN0IG5ld25vZGUgPSBkaWFncmFtLmZpbmROb2RlRm9yRGF0YShub2RlZGF0YSk7XG4gICAgLy8gY29uc3QgbGlua2RhdGEgPSBtb2RlbC5jb3B5TGlua0RhdGEoe30pO1xuICAgIC8vIG1vZGVsLnNldEZyb21LZXlGb3JMaW5rRGF0YShsaW5rZGF0YSwgbW9kZWwuZ2V0S2V5Rm9yTm9kZURhdGEoZnJvbW5vZGUuZGF0YSkpO1xuICAgIC8vIG1vZGVsLnNldFRvS2V5Rm9yTGlua0RhdGEobGlua2RhdGEsIG1vZGVsLmdldEtleUZvck5vZGVEYXRhKG5ld25vZGUuZGF0YSkpO1xuICAgIC8vIG1vZGVsLmFkZExpbmtEYXRhKGxpbmtkYXRhKTtcbiAgICAvLyBkaWFncmFtLnNlbGVjdChuZXdub2RlKTtcblxuICAgIC8vIG5ld25vZGUubG9jYXRpb24gPSBuZXcgZ28uUG9pbnQoZnJvbW5vZGUubG9jYXRpb24ueCArIDIwMCwgZnJvbW5vZGUubG9jYXRpb24ueSk7XG4gICAgLy8gZS5kaWFncmFtLmNvbW1pdFRyYW5zYWN0aW9uKCdDcmVhdGUgTm9kZSBhbmQgTGluaycpO1xuICB9XG5cbiAgZ2VuZXJhdGVBY3Rpb25Hcm91cChhY3Rpb25zOiBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlNbXSkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiB0aGlzLiQoXG4gICAgICAnQnV0dG9uJyxcbiAgICAgIHtcbiAgICAgICAgY2xpY2s6IGZ1bmN0aW9uIChlLCBvYmopIHtcbiAgICAgICAgICBzZWxmLm9wZW5BY3Rpb25NZW51KCk7XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRBY3Rpb25zID0gXy5maWx0ZXIoXG4gICAgICAgICAgICBvYmoucGFydD8uWydvYiddPy5hY3Rpb25zID8/IGFjdGlvbnMsXG4gICAgICAgICAgICAoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIC8vIEZpbHRlciBJbnNpZ2h0IGJ1dHRvblxuICAgICAgICAgICAgICBpZiAoYWN0aW9uID09PSBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuSU5TSUdIVCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIW9iai5wYXJ0Py5bJ29iJ10/LmlkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBhY3Rpb24gPT09IEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5SRU5BTUUgJiZcbiAgICAgICAgICAgICAgICBvYmoucGFydD8uWydvYiddPy50eXBlICE9PVxuICAgICAgICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlRFWFRfTk9ERSAmJlxuICAgICAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5UWVBFX0NPTVBPTkVOVF9XQVRFUj8uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICBvYmoucGFydD8uWydvYiddPy5zeXN0ZW1UeXBlXG4gICAgICAgICAgICAgICAgKSAmJlxuICAgICAgICAgICAgICAgIG9iai5wYXJ0Py5bJ29iJ10/LnRvcG9sb2d5VHlwZSAhPT1cbiAgICAgICAgICAgICAgICAgIEFUT19FQ09NUE9ORU5UX1BMQU5UX1RZUEUuV0FURVIgJiZcbiAgICAgICAgICAgICAgICBvYmoucGFydD8uWydvYiddPy50b3BvbG9neVR5cGUgIT09XG4gICAgICAgICAgICAgICAgICBBVE9fRUNPTVBPTkVOVF9QTEFOVF9UWVBFLldBVEVSX1BMQU5UX0NFTExcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBhY3Rpb24gPT09IEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5PVVRGTE9XICYmXG4gICAgICAgICAgICAgICAgc2VsZi5wbGFudFNhdHVzID09PSBBVE9fRVBsYW50VHlwZS5CQVNJQ19QTEFOVCAmJlxuICAgICAgICAgICAgICAgIG9iai5wYXJ0Py5kYXRhPy50eXBlID09PVxuICAgICAgICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlRFWFRfTk9ERVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKS5tYXAoKGUpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgQVRPX0VDT01QT05FTlRfUExBTlRfVFlQRS5TVEVBTSA9PT1cbiAgICAgICAgICAgICAgICBvYmoucGFydD8uWydvYiddPy50b3BvbG9neVR5cGUgJiZcbiAgICAgICAgICAgICAgZSA9PT0gQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLklOU0lHSFRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm4gQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLkRBVEFfTUFQUElORztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZSA9PT0gQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLkZMT1dfREVUQUlMUyAmJlxuICAgICAgICAgICAgICBvYmo/LnBhcnQ/Llsnb2InXT8uc3lzdGVtVHlwZSA9PT1cbiAgICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9UWVBFUy5DT09MSU5HX1RPV0VSXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5GTE9XX0RFVEFJTFNfQU5EX1dJWkFSRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHNlbGYuYWN0aW9ucyA9IGZpbHRlcmVkQWN0aW9ucy5tYXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgbGV0IG9uQ2xpY2tGbiA9ICgpID0+IHt9O1xuICAgICAgICAgICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgICAgICAgICAgY2FzZSBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuSU5TSUdIVDpcbiAgICAgICAgICAgICAgY2FzZSBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREFUQV9NQVBQSU5HOlxuICAgICAgICAgICAgICAgIG9uQ2xpY2tGbiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHNlbGYub25PcGVuSW5zaWdodE1hcHBpbmcuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIG5vZGU6IG9iai5wYXJ0LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREVUQUlMUzpcbiAgICAgICAgICAgICAgY2FzZSBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuRkxPV19ERVRBSUxTOlxuICAgICAgICAgICAgICBjYXNlIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5GTE9XX0RFVEFJTFNfQU5EX1dJWkFSRDpcbiAgICAgICAgICAgICAgICBvbkNsaWNrRm4gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBzZWxmLm9uT3BlbkRldGFpbC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZTogb2JqLnBhcnQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5PTkxZX0RFVEFJTFM6XG4gICAgICAgICAgICAgICAgb25DbGlja0ZuID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgc2VsZi5vbk9wZW5EZXRhaWwuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIG5vZGU6IG9iai5wYXJ0LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuQVNTRVRfUEFSQU1FVEVSUzpcbiAgICAgICAgICAgICAgICBvbkNsaWNrRm4gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBzZWxmLm9uT3BlbkFzc2V0UGFyYW1ldGVyLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBub2RlOiBvYmoucGFydCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLlJFTkFNRTpcbiAgICAgICAgICAgICAgICBvbkNsaWNrRm4gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIG9iai5wYXJ0Py5kYXRhPy50eXBlID09PVxuICAgICAgICAgICAgICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuVEVYVF9OT0RFXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5vblJlbmFtZS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBlPy5bJ1dyJ10/LnggLSA1MCxcbiAgICAgICAgICAgICAgICAgICAgICB0b3A6IGU/LlsnV3InXT8ueSxcbiAgICAgICAgICAgICAgICAgICAgICAuLi5vYmoucGFydD8uZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIExheW91dFNlcnZpY2Uuc2V0VG9vbFRpcENvbXBvbmVudERhdGFTdGF0aWMoe1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgY29tcG9uZW50OiBSZW5hbWVCb3hDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgbGVmdDogZT8uWydXciddPy54IC0gNTAsXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgdG9wOiBlPy5bJ1dyJ10/LnksXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgLi4ub2JqLnBhcnQ/LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAvLyB9KTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZWRpdFRleHQoZSwgb2JqKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5PVVRGTE9XOlxuICAgICAgICAgICAgICAgIG9uQ2xpY2tGbiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHNlbGYuY2xpY2tOZXdOb2RlKFxuICAgICAgICAgICAgICAgICAgICBlLFxuICAgICAgICAgICAgICAgICAgICBfLm1lcmdlKG9iaiwge1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbk1vdmU6IHNlbGYuZHJhZ05ld05vZGUsIC8vIGRlZmluZWQgYmVsb3csIHRvIHN1cHBvcnQgZHJhZ2dpbmcgZnJvbSB0aGUgYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgX2RyYWdEYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi57XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5URVhUX05PREUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5BQ1RJT05fUklHSFRfTUVOVV9HUk9VUC5EQVRBX0JPWFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XyR7bW9tZW50KCkudmFsdWVPZigpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuQkxVRSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5zZWxmLnNldFByb0ZPck5ld05vZGUoc2VsZiksXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREVMRVRFOlxuICAgICAgICAgICAgICAgIG9uQ2xpY2tGbiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHNlbGYuZGVsZXRlTm9kZShlKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5DSEFOR0VfSUNPTjpcbiAgICAgICAgICAgICAgICBvbkNsaWNrRm4gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBzZWxmLm9uT3BlbkNoYW5nZUljb24uZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIG5vZGU6IG9iai5wYXJ0LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLkF0b0RlZmF1bHRHb2pzRWRpdG9yLkFDVElPTlNbYWN0aW9uXSxcbiAgICAgICAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgIG9uQ2xpY2tGbigpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgJ0J1dHRvbkJvcmRlci5zdHJva2VXaWR0aCc6IDAsXG4gICAgICAgICdCdXR0b25Cb3JkZXIuZmlsbCc6ICd3aGl0ZScsXG4gICAgICB9LFxuICAgICAgLy8gbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnaXNOb3REcmFnTmV3Tm9kZScsICh4KSA9PiAheCksXG4gICAgICAvLyBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICdpc05vdERlbGV0ZScsICh4KSA9PiAheCksXG4gICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICdpc05vdEFjdGlvbicsICh4KSA9PiAheCksXG4gICAgICB0aGlzLiQoZ28uVGV4dEJsb2NrLCB7XG4gICAgICAgIG1hcmdpbjogNCxcbiAgICAgICAgdGV4dDogJ1xcdWU0ODknLFxuICAgICAgICBmb250OiAnMjBweCBcIkZvbnQgQXdlc29tZSA2IFByb1wiJyxcbiAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzZXRQcm9GT3JOZXdOb2RlKHNlbGYpIHtcbiAgICBpZiAoc2VsZi5wbGFudFNhdHVzID09PSBBVE9fRVBsYW50VHlwZS5CQVNJQ19QTEFOVCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbW92YWJsZTogZmFsc2UsXG4gICAgICAgIGlzTm90QWxsb3dDb25uZWN0OiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgYXN5bmMgY2xpY2tOZXdOb2RlKGUsIGJ1dHRvbikge1xuICAgIGNvbnN0IGRhdGEgPSBidXR0b24uX2RyYWdEYXRhO1xuICAgIGlmICghZGF0YSkgcmV0dXJuO1xuICAgIGUuZGlhZ3JhbS5zdGFydFRyYW5zYWN0aW9uKCdDcmVhdGUgTm9kZSBhbmQgTGluaycpO1xuICAgIGNvbnN0IGZyb21ub2RlID0gYnV0dG9uLnBhcnQuYWRvcm5lZFBhcnQ7XG5cbiAgICAvLyB0aGlzLmNyZWF0ZU5vZGVBbmRMaW5rKGJ1dHRvbi5fZHJhZ0RhdGEsIGZyb21ub2RlKTtcbiAgICBjb25zdCBkcmFnRGF0YSA9IGJ1dHRvbi5fZHJhZ0RhdGE7XG4gICAgY29uc3QgZGlhZ3JhbSA9IGZyb21ub2RlLmRpYWdyYW07XG4gICAgY29uc3QgbW9kZWwgPSBkaWFncmFtLm1vZGVsO1xuICAgIGNvbnN0IG5vZGVkYXRhID0ge1xuICAgICAgLi4ubW9kZWwuY29weU5vZGVEYXRhKGRyYWdEYXRhKSxcbiAgICAgIGtleTogVXRpbHNTZXJ2aWNlLmdlbmVyYXRlVVVJRCgpLFxuICAgIH07XG4gICAgbW9kZWwuYWRkTm9kZURhdGEoe1xuICAgICAgLi4ubm9kZWRhdGEsXG4gICAgICBpc0VkaXRhYmxlOiB0cnVlLFxuICAgICAgc2hvcnRlbmVkTnVtYmVyOiAwLFxuICAgICAgaXNGb3JtYXQ6IGZhbHNlLFxuICAgICAgZGF0YUNvbGxlY3Rpb25NZXRob2Q6IEF0b0dvanNFZGl0b3JNb2RlbC5EQVRBX0NPTExFQ1RJT05fTUVUSE9ELk1BTlVBTCxcbiAgICAgIGNvbG9yOlxuICAgICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuQ09MT1JfQ09MTEVDVElPTl9NRVRIT0RbXG4gICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkRBVEFfQ09MTEVDVElPTl9NRVRIT0QuTUFOVUFMXG4gICAgICAgIF0uY29sb3IsXG4gICAgICBncm91cDogZnJvbW5vZGU/Lm9iPy5ncm91cCxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0pO1xuICAgIGNvbnN0IG5ld25vZGUgPSBkaWFncmFtLmZpbmROb2RlRm9yRGF0YShub2RlZGF0YSk7XG5cbiAgICBjb25zdCBsaW5rZGF0YSA9IG1vZGVsLmNvcHlMaW5rRGF0YSh7fSk7XG4gICAgbW9kZWwuc2V0RnJvbUtleUZvckxpbmtEYXRhKFxuICAgICAgbGlua2RhdGEsXG4gICAgICBtb2RlbC5nZXRLZXlGb3JOb2RlRGF0YShmcm9tbm9kZS5kYXRhKVxuICAgICk7XG4gICAgbW9kZWwuc2V0VG9LZXlGb3JMaW5rRGF0YShsaW5rZGF0YSwgbW9kZWwuZ2V0S2V5Rm9yTm9kZURhdGEobmV3bm9kZS5kYXRhKSk7XG4gICAgbW9kZWwuYWRkTGlua0RhdGEobGlua2RhdGEpO1xuICAgIGRpYWdyYW0uc2VsZWN0KG5ld25vZGUpO1xuICAgIGlmIChub2RlZGF0YT8ubW92YWJsZSAhPT0gdW5kZWZpbmVkICYmIG5vZGVkYXRhPy5tb3ZhYmxlICE9PSBudWxsKSB7XG4gICAgICBuZXdub2RlLm1vdmFibGUgPSBub2RlZGF0YT8ubW92YWJsZTtcbiAgICB9XG5cbiAgICBuZXdub2RlLmxvY2F0aW9uID0gbmV3IGdvLlBvaW50KFxuICAgICAgZnJvbW5vZGUubG9jYXRpb24ueCArIDE2MCxcbiAgICAgIGZyb21ub2RlLmxvY2F0aW9uLnkgK1xuICAgICAgICB0aGlzLmZpbmRMb2NZRnJvbW5vZGUoZnJvbW5vZGUpICogQXRvRGVmYXVsdEdvanNFZGl0b3IuRElTVEFOQ0VfMl9PVVRQVVRcbiAgICApO1xuICAgIGUuZGlhZ3JhbS5jb21taXRUcmFuc2FjdGlvbignQ3JlYXRlIE5vZGUgYW5kIExpbmsnKTtcbiAgfVxuXG4gIGZpbmRMb2NZRnJvbW5vZGUoZnJvbW5vZGUpIHtcbiAgICAvLyBGaW5kIGxvY2F0aW9uIGF1dG8gcmlnaHRcbiAgICBjb25zdCBsb2NZRnJvbW5vZGUgPSBmcm9tbm9kZS5kYXRhPy5sb2M/LnNwbGl0KCcgJyk/LlsxXTtcbiAgICBjb25zdCBsb2NZQWxyZWFkeUV4aXN0OiBhbnkgPSBbXTtcbiAgICBmcm9tbm9kZS5maW5kTGlua3NPdXRPZigpLmVhY2goZnVuY3Rpb24gKGxpbmspIHtcbiAgICAgIGNvbnN0IHRhcmdldE5vZGUgPSBsaW5rLnRvTm9kZTtcbiAgICAgIGlmICh0YXJnZXROb2RlKSB7XG4gICAgICAgIGxvY1lBbHJlYWR5RXhpc3QucHVzaChcbiAgICAgICAgICB0YXJnZXROb2RlLmRhdGE/LmxvYz8uc3BsaXQoJyAnKT8uWzFdIC0gbG9jWUZyb21ub2RlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgaSA9IDA7XG4gICAgd2hpbGUgKHRoaXMuaXNFbXB0eVlMb2MobG9jWUFscmVhZHlFeGlzdCwgaSkgPT09IG51bGwgJiYgaSA8IDEwMCkge1xuICAgICAgaSsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pc0VtcHR5WUxvYyhsb2NZQWxyZWFkeUV4aXN0LCBpKTtcbiAgfVxuXG4gIGlzRW1wdHlZTG9jKGxvY1lBbHJlYWR5RXhpc3QsIGkpIHtcbiAgICBpZiAoXG4gICAgICAhXy5zb21lKFxuICAgICAgICBsb2NZQWxyZWFkeUV4aXN0LFxuICAgICAgICAoeCkgPT5cbiAgICAgICAgICB4IDxcbiAgICAgICAgICAgIGkgKiBBdG9EZWZhdWx0R29qc0VkaXRvci5ESVNUQU5DRV8yX09VVFBVVCArXG4gICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkRJU1RBTkNFXzJfT1VUUFVUIC8gMiAmJlxuICAgICAgICAgIHggPlxuICAgICAgICAgICAgaSAqIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkRJU1RBTkNFXzJfT1VUUFVUIC1cbiAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRElTVEFOQ0VfMl9PVVRQVVQgLyAyXG4gICAgICApXG4gICAgKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIV8uc29tZShcbiAgICAgICAgbG9jWUFscmVhZHlFeGlzdCxcbiAgICAgICAgKHgpID0+XG4gICAgICAgICAgeCA8XG4gICAgICAgICAgICAtaSAqIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkRJU1RBTkNFXzJfT1VUUFVUICtcbiAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRElTVEFOQ0VfMl9PVVRQVVQgLyAyICYmXG4gICAgICAgICAgeCA+XG4gICAgICAgICAgICAtaSAqIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkRJU1RBTkNFXzJfT1VUUFVUIC1cbiAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRElTVEFOQ0VfMl9PVVRQVVQgLyAyXG4gICAgICApXG4gICAgKSB7XG4gICAgICByZXR1cm4gLWk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY3JlYXRlTmV3Tm9kZShuZXdub2RlKSB7XG4gICAgdGhpcy5hZGRUZW1wbGF0ZShuZXdub2RlKTtcbiAgICB0aGlzLm15RGlhZ3JhbS5zdGFydFRyYW5zYWN0aW9uKCdhZGQgZ3JvdXAgbm9kZScpO1xuICAgIHRoaXMubXlEaWFncmFtLm1vZGVsLmFkZE5vZGVEYXRhKG5ld25vZGUpO1xuICAgIHRoaXMubXlEaWFncmFtLmNvbW1pdFRyYW5zYWN0aW9uKCdhZGQgZ3JvdXAgbm9kZScpO1xuICB9XG5cbiAgZGVsZXRlTm9kZShlKSB7XG4gICAgZS5kaWFncmFtLnN0YXJ0VHJhbnNhY3Rpb24oJ0RlbGV0ZSBncm91cCBub2RlJyk7XG4gICAgZS5kaWFncmFtLnJlbW92ZVBhcnRzKGUuZGlhZ3JhbS5zZWxlY3Rpb24pO1xuICAgIGUuZGlhZ3JhbS5jb21taXRUcmFuc2FjdGlvbignRGVsZXRlIGdyb3VwIG5vZGUnKTtcbiAgfVxuXG4gIGRlbGV0ZU5vZGVPbkRpYWdyYW0oZSkge1xuICAgIGUuc3RhcnRUcmFuc2FjdGlvbignRGVsZXRlIGdyb3VwIG5vZGUnKTtcbiAgICBlLnJlbW92ZVBhcnRzKGUuc2VsZWN0aW9uKTtcbiAgICBlLmNvbW1pdFRyYW5zYWN0aW9uKCdEZWxldGUgZ3JvdXAgbm9kZScpO1xuICB9XG5cbiAgaW5zaWdodE5vZGUoZSkge31cblxuICBkcmF3TGluayhlLCBidXR0b24pIHtcbiAgICBjb25zdCBub2RlID0gYnV0dG9uLnBhcnQuYWRvcm5lZFBhcnQ7XG4gICAgY29uc3QgdG9vbCA9IGUuZGlhZ3JhbS50b29sTWFuYWdlci5saW5raW5nVG9vbDtcbiAgICB0b29sLnN0YXJ0T2JqZWN0ID0gbm9kZS5wb3J0O1xuICAgIGUuZGlhZ3JhbS5jdXJyZW50VG9vbCA9IHRvb2w7XG4gICAgdG9vbC5kb0FjdGl2YXRlKCk7XG4gIH1cblxuICBtYWtlUG9ydEdyb3VwKG5hbWUsIGFsaWduLCBzcG90LCBvdXRwdXQsIGlucHV0KSB7XG4gICAgY29uc3QgaG9yaXpvbnRhbCA9XG4gICAgICBhbGlnbi5lcXVhbHMoZ28uU3BvdC5Ub3ApIHx8IGFsaWduLmVxdWFscyhnby5TcG90LkJvdHRvbSk7XG4gICAgcmV0dXJuIHRoaXMuJChcbiAgICAgIGdvLlBhbmVsLFxuICAgICAgJ1RhYmxlJyxcbiAgICAgIHtcbiAgICAgICAgYmFja2dyb3VuZDogJyM5MTlDQTUnLFxuICAgICAgICB3aWR0aDogNDAsXG4gICAgICAgIGhlaWdodDogNDAsXG4gICAgICAgIGFsaWdubWVudDogYWxpZ24sXG4gICAgICAgIHN0cmV0Y2g6IGhvcml6b250YWxcbiAgICAgICAgICA/IGdvLkdyYXBoT2JqZWN0Lkhvcml6b250YWxcbiAgICAgICAgICA6IGdvLkdyYXBoT2JqZWN0LlZlcnRpY2FsLFxuICAgICAgICBwb3J0SWQ6IG5hbWUsXG4gICAgICAgIGZyb21TcG90OiBzcG90LFxuICAgICAgICBmcm9tTGlua2FibGU6IG91dHB1dCxcbiAgICAgICAgdG9TcG90OiBzcG90LFxuICAgICAgICB0b0xpbmthYmxlOiBpbnB1dCxcbiAgICAgICAgY3Vyc29yOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5ID8gJycgOiAncG9pbnRlcicsXG4gICAgICAgIGFsaWdubWVudEZvY3VzOiBnby5TcG90LkNlbnRlciwgLy8gdOG6rXAgdHJ1bmcgdsOgbyB0cnVuZyB0w6JtIGPhu6dhIFBhbmVsXG4gICAgICAgIC8vIG1vdXNlRW50ZXI6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgLy8gICAgID8gbnVsbFxuICAgICAgICAvLyAgICAgOiAoZSwgcGFuZWwpID0+IHtcbiAgICAgICAgLy8gICAgICAgICAgIGNvbnN0IHRleHRCbG9jayA9IChwYW5lbCBhcyBhbnkpPy5maW5kT2JqZWN0KCd0ZXh0QmxvY2snKSBhcyBnby5UZXh0QmxvY2sgfCBudWxsO1xuICAgICAgICAvLyAgICAgICAgICAgaWYgKHRleHRCbG9jaykge1xuICAgICAgICAvLyAgICAgICAgICAgICAgIC8vICYmIG91dHB1dFxuICAgICAgICAvLyAgICAgICAgICAgICAgIHRleHRCbG9jay52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgLy8gICAgICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgY2FzZSAnQic6XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgIGNhc2UgJ1InOiB7XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICBwYW5lbC5iYWNrZ3JvdW5kID0gJ3JnYigyNDMgMTQ0IDE3MSknO1xuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgY2FzZSAnVCc6XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgIGNhc2UgJ0wnOiB7XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICBwYW5lbC5iYWNrZ3JvdW5kID0gJ3JnYigxMDMsMTUxLDIwNyknO1xuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgcGFuZWwuYmFja2dyb3VuZCA9ICdyZ2IoMjQzIDE0NCAxNzEpJztcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgfSxcblxuICAgICAgICAvLyBtb3VzZUxlYXZlOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5XG4gICAgICAgIC8vICAgICA/IG51bGxcbiAgICAgICAgLy8gICAgIDogKGUsIHBhbmVsKSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgICBjb25zdCB0ZXh0QmxvY2sgPSAocGFuZWwgYXMgYW55KS5maW5kT2JqZWN0KCd0ZXh0QmxvY2snKSBhcyBnby5UZXh0QmxvY2sgfCBudWxsO1xuICAgICAgICAvLyAgICAgICAgICAgaWYgKHRleHRCbG9jaykge1xuICAgICAgICAvLyAgICAgICAgICAgICAgIHRleHRCbG9jay52aXNpYmxlID0gZmFsc2U7IC8vIOG6qG4gVGV4dEJsb2NrIGtoaSBy4budaSBraOG7j2kgUGFuZWxcbiAgICAgICAgLy8gICAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgICAgIHBhbmVsLmJhY2tncm91bmQgPSAndHJhbnNwYXJlbnQnO1xuICAgICAgICAvLyAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnRWxsaXBzZScsIHtcbiAgICAgICAgZmlsbDogJ3doaXRlJywgLy8gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgY2lyY2xlXG4gICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICBzdHJva2U6ICcjOTE5Q0E1JywgLy8gQm9yZGVyIGNvbG9yIG9mIHRoZSBjaXJjbGVcbiAgICAgICAgd2lkdGg6IDQwLCAvLyBNYXRjaCB0aGUgcGFuZWwncyB3aWR0aFxuICAgICAgICBoZWlnaHQ6IDQwLCAvLyBNYXRjaCB0aGUgcGFuZWwncyBoZWlnaHRcbiAgICAgIH0pXG5cbiAgICAgIC8vIHRoaXMuJChcbiAgICAgIC8vICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAvLyAgICAge1xuICAgICAgLy8gICAgICAgICBuYW1lOiAndGV4dEJsb2NrJyxcbiAgICAgIC8vICAgICAgICAgbWFyZ2luOiA0LFxuICAgICAgLy8gICAgICAgICB0ZXh0OiAnXFx1ZjBkYScsIC8vIE3DoyBVbmljb2RlIHTGsMahbmcg4bupbmcgduG7m2kgZmEtY2FyZXQtbGVmdFxuICAgICAgLy8gICAgICAgICBmb250OiAnOTAwIDEycHggXCJGb250IEF3ZXNvbWUgNiBQcm9cIicsXG4gICAgICAvLyAgICAgICAgIHN0cm9rZTogJ3doaXRlJywgLy8gxJDhurd0IG3DoHUgY2jhu68gdGjDoG5oIG3DoHUgdHLhuq9uZ1xuICAgICAgLy8gICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgIC8vICAgICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJywgKF8pID0+IHtcbiAgICAgIC8vICAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAvLyAgICAgICAgICAgICBjYXNlICdUJzpcbiAgICAgIC8vICAgICAgICAgICAgIGNhc2UgJ0InOiB7XG4gICAgICAvLyAgICAgICAgICAgICAgICAgcmV0dXJuICdcXHVmMGQ3JztcbiAgICAgIC8vICAgICAgICAgICAgIH1cbiAgICAgIC8vICAgICAgICAgICAgIGNhc2UgJ0wnOlxuICAgICAgLy8gICAgICAgICAgICAgY2FzZSAnUic6IHtcbiAgICAgIC8vICAgICAgICAgICAgICAgICByZXR1cm4gJ1xcdWYwZGEnO1xuICAgICAgLy8gICAgICAgICAgICAgfVxuICAgICAgLy8gICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgLy8gICAgICAgICAgICAgICAgIHJldHVybiAnXFx1ZjBkNyc7XG4gICAgICAvLyAgICAgICAgICAgICB9XG4gICAgICAvLyAgICAgICAgIH1cbiAgICAgIC8vICAgICB9KSxcbiAgICAgIC8vICksXG4gICAgKTtcbiAgfVxuXG4gIG1ha2VQb3J0KG5hbWUsIGFsaWduLCBzcG90LCBvdXRwdXQsIGlucHV0KSB7XG4gICAgLy8gaWYgKHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHkpIHtcbiAgICAvLyAgICAgcmV0dXJuIHt9O1xuICAgIC8vIH1cbiAgICBjb25zdCBob3Jpem9udGFsID1cbiAgICAgIGFsaWduLmVxdWFscyhnby5TcG90LlRvcCkgfHwgYWxpZ24uZXF1YWxzKGdvLlNwb3QuQm90dG9tKTtcbiAgICAvLyBjb25zdCB2ZXJ0aWNhbCA9IGFsaWduLmVxdWFscyhnby5TcG90LkxlZnQpIHx8IGFsaWduLmVxdWFscyhnby5TcG90LlJpZ2h0KTtcbiAgICAvLyB0aGUgcG9ydCBpcyBiYXNpY2FsbHkganVzdCBhIHRyYW5zcGFyZW50IHJlY3RhbmdsZSB0aGF0IHN0cmV0Y2hlcyBhbG9uZyB0aGUgc2lkZSBvZiB0aGUgbm9kZSxcbiAgICAvLyBhbmQgYmVjb21lcyBjb2xvcmVkIHdoZW4gdGhlIG1vdXNlIHBhc3NlcyBvdmVyIGl0XG4gICAgcmV0dXJuIHRoaXMuJChcbiAgICAgIGdvLlBhbmVsLFxuICAgICAgJ1RhYmxlJyxcbiAgICAgIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgd2lkdGg6IGhvcml6b250YWwgPyBOYU4gOiA4LFxuICAgICAgICBoZWlnaHQ6ICFob3Jpem9udGFsID8gTmFOIDogOCxcbiAgICAgICAgYWxpZ25tZW50OiBhbGlnbixcbiAgICAgICAgc3RyZXRjaDogaG9yaXpvbnRhbFxuICAgICAgICAgID8gZ28uR3JhcGhPYmplY3QuSG9yaXpvbnRhbFxuICAgICAgICAgIDogZ28uR3JhcGhPYmplY3QuVmVydGljYWwsXG4gICAgICAgIHBvcnRJZDogbmFtZSxcbiAgICAgICAgZnJvbVNwb3Q6IHNwb3QsXG4gICAgICAgIGZyb21MaW5rYWJsZTogb3V0cHV0LFxuICAgICAgICB0b1Nwb3Q6IHNwb3QsXG4gICAgICAgIHRvTGlua2FibGU6IGlucHV0LFxuICAgICAgICBjdXJzb3I6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHkgPyAnJyA6ICdwb2ludGVyJyxcbiAgICAgICAgYWxpZ25tZW50Rm9jdXM6IGdvLlNwb3QuQ2VudGVyLCAvLyB04bqtcCB0cnVuZyB2w6BvIHRydW5nIHTDom0gY+G7p2EgUGFuZWxcbiAgICAgICAgbW91c2VFbnRlcjogdGhpcy5faW5pdGlhbE9wdGlvbnMuaXNSZWFkT25seVxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDogKGUsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHRleHRCbG9jayA9IChwYW5lbCBhcyBhbnkpPy5maW5kT2JqZWN0KFxuICAgICAgICAgICAgICAgICd0ZXh0QmxvY2snXG4gICAgICAgICAgICAgICkgYXMgZ28uVGV4dEJsb2NrIHwgbnVsbDtcbiAgICAgICAgICAgICAgaWYgKHRleHRCbG9jaykge1xuICAgICAgICAgICAgICAgIC8vICYmIG91dHB1dFxuICAgICAgICAgICAgICAgIHRleHRCbG9jay52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ0InOlxuICAgICAgICAgICAgICAgICAgY2FzZSAnUic6IHtcbiAgICAgICAgICAgICAgICAgICAgcGFuZWwuYmFja2dyb3VuZCA9ICdyZ2IoMjQzIDE0NCAxNzEpJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBjYXNlICdUJzpcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ0wnOiB7XG4gICAgICAgICAgICAgICAgICAgIHBhbmVsLmJhY2tncm91bmQgPSAncmdiKDEwMywxNTEsMjA3KSc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgICAgICBwYW5lbC5iYWNrZ3JvdW5kID0gJ3JnYigyNDMgMTQ0IDE3MSknO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICBtb3VzZUxlYXZlOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5XG4gICAgICAgICAgPyBudWxsXG4gICAgICAgICAgOiAoZSwgcGFuZWwpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdGV4dEJsb2NrID0gKHBhbmVsIGFzIGFueSkuZmluZE9iamVjdChcbiAgICAgICAgICAgICAgICAndGV4dEJsb2NrJ1xuICAgICAgICAgICAgICApIGFzIGdvLlRleHRCbG9jayB8IG51bGw7XG4gICAgICAgICAgICAgIGlmICh0ZXh0QmxvY2spIHtcbiAgICAgICAgICAgICAgICB0ZXh0QmxvY2sudmlzaWJsZSA9IGZhbHNlOyAvLyDhuqhuIFRleHRCbG9jayBraGkgcuG7nWkga2jhu49pIFBhbmVsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcGFuZWwuYmFja2dyb3VuZCA9ICd0cmFuc3BhcmVudCc7XG4gICAgICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnJywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgaWYgKGRhdGE/LmlzTm90QWxsb3dDb25uZWN0KSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhPy5zZWxlY3RhYmxlID09PSBmYWxzZSAmJiAhZGF0YT8uaXNBbGxvd0Nvbm5lY3QpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGE/LmZsb3dPZlBsYW50Q2VsbCkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGRhdGE/LmZsb3dPZlBsYW50Q2VsbCA9PT0gQVRPX0VOVU1fRkxPV19ESVJFQ1RJT04uSU5GTE9XICYmXG4gICAgICAgICAgICBuYW1lID09PSAnTCdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBkYXRhPy5mbG93T2ZQbGFudENlbGwgPT09IEFUT19FTlVNX0ZMT1dfRElSRUNUSU9OLk9VVEZMT1cgJiZcbiAgICAgICAgICAgIG5hbWUgPT09ICdSJ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICBjYXNlICdCJzpcbiAgICAgICAgICBjYXNlICdSJzoge1xuICAgICAgICAgICAgcmV0dXJuICFkYXRhPy5pc05vdFNlbGVjdE91dHB1dDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnVCc6XG4gICAgICAgICAgY2FzZSAnTCc6IHtcbiAgICAgICAgICAgIHJldHVybiAhZGF0YT8uaXNOb3RTZWxlY3RJbnB1dDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSxcblxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAndGV4dEJsb2NrJyxcbiAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgdGV4dDogJ1xcdWYwZGEnLCAvLyBNw6MgVW5pY29kZSB0xrDGoW5nIOG7qW5nIHbhu5tpIGZhLWNhcmV0LWxlZnRcbiAgICAgICAgICBmb250OiAnOTAwIDEycHggXCJGb250IEF3ZXNvbWUgNiBQcm9cIicsXG4gICAgICAgICAgc3Ryb2tlOiAnd2hpdGUnLCAvLyDEkOG6t3QgbcOgdSBjaOG7ryB0aMOgbmggbcOgdSB0cuG6r25nXG4gICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJ25hbWUnLCAoXykgPT4ge1xuICAgICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnVCc6XG4gICAgICAgICAgICBjYXNlICdCJzoge1xuICAgICAgICAgICAgICByZXR1cm4gJ1xcdWYwZDcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICBjYXNlICdSJzoge1xuICAgICAgICAgICAgICByZXR1cm4gJ1xcdWYwZGEnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICByZXR1cm4gJ1xcdWYwZDcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgLy8gcmV0dXJuIHRoaXMuJChnby5TaGFwZSwge1xuICAgIC8vICAgICBmaWxsOiAndHJhbnNwYXJlbnQnLCAvLyBjaGFuZ2VkIHRvIGEgY29sb3IgaW4gdGhlIG1vdXNlRW50ZXIgZXZlbnQgaGFuZGxlclxuICAgIC8vICAgICBzdHJva2VXaWR0aDogMCwgLy8gbm8gc3Ryb2tlXG4gICAgLy8gICAgIHdpZHRoOiBob3Jpem9udGFsID8gTmFOIDogOCwgLy8gaWYgbm90IHN0cmV0Y2hpbmcgaG9yaXpvbnRhbGx5LCBqdXN0IDggd2lkZVxuICAgIC8vICAgICBoZWlnaHQ6ICFob3Jpem9udGFsID8gTmFOIDogOCwgLy8gaWYgbm90IHN0cmV0Y2hpbmcgdmVydGljYWxseSwganVzdCA4IHRhbGxcbiAgICAvLyAgICAgYWxpZ25tZW50OiBhbGlnbiwgLy8gYWxpZ24gdGhlIHBvcnQgb24gdGhlIG1haW4gU2hhcGVcbiAgICAvLyAgICAgc3RyZXRjaDogaG9yaXpvbnRhbCA/IGdvLkdyYXBoT2JqZWN0Lkhvcml6b250YWwgOiBnby5HcmFwaE9iamVjdC5WZXJ0aWNhbCxcbiAgICAvLyAgICAgcG9ydElkOiBuYW1lLCAvLyBkZWNsYXJlIHRoaXMgb2JqZWN0IHRvIGJlIGEgXCJwb3J0XCJcbiAgICAvLyAgICAgZnJvbVNwb3Q6IHNwb3QsIC8vIGRlY2xhcmUgd2hlcmUgbGlua3MgbWF5IGNvbm5lY3QgYXQgdGhpcyBwb3J0XG4gICAgLy8gICAgIGZyb21MaW5rYWJsZTogb3V0cHV0LCAvLyBkZWNsYXJlIHdoZXRoZXIgdGhlIHVzZXIgbWF5IGRyYXcgbGlua3MgZnJvbSBoZXJlXG4gICAgLy8gICAgIHRvU3BvdDogc3BvdCwgLy8gZGVjbGFyZSB3aGVyZSBsaW5rcyBtYXkgY29ubmVjdCBhdCB0aGlzIHBvcnRcbiAgICAvLyAgICAgdG9MaW5rYWJsZTogaW5wdXQsIC8vIGRlY2xhcmUgd2hldGhlciB0aGUgdXNlciBtYXkgZHJhdyBsaW5rcyB0byBoZXJlXG4gICAgLy8gICAgIGN1cnNvcjogJ3BvaW50ZXInLCAvLyBzaG93IGEgZGlmZmVyZW50IGN1cnNvciB0byBpbmRpY2F0ZSBwb3RlbnRpYWwgbGluayBwb2ludFxuICAgIC8vICAgICBtb3VzZUVudGVyOiAoZSwgcG9ydCkgPT4ge1xuICAgIC8vICAgICAgICAgLy8gdGhlIFBPUlQgYXJndW1lbnQgd2lsbCBiZSB0aGlzIFNoYXBlXG4gICAgLy8gICAgICAgICBpZiAoIWUuZGlhZ3JhbS5pc1JlYWRPbmx5ICYmIG91dHB1dCkge1xuICAgIC8vICAgICAgICAgICAgIHBvcnQuZmlsbCA9ICdyZ2JhKDI1NSwwLDI1NSwwLjUpJ1xuICAgIC8vICAgICAgICAgfTtcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgbW91c2VMZWF2ZTogKGUsIHBvcnQpID0+IHtcbiAgICAvLyAgICAgICAgIHJldHVybiAocG9ydC5maWxsID0gJ3RyYW5zcGFyZW50Jyk7XG4gICAgLy8gICAgIH0sXG4gICAgLy8gfSk7XG4gIH1cblxuICBtYWtlR3JvdXBCYXNpY0NvbXBvbmVudChcbiAgICBpY29uLFxuICAgIHRpdGxlLFxuICAgIHNpemU6IHsgdzogbnVtYmVyOyBoOiBudW1iZXIgfSA9IHsgdzogODAsIGg6IDgwIH1cbiAgKSB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Hcm91cCxcbiAgICAgICdTcG90JyxcbiAgICAgIHtcbiAgICAgICAgLy8gbGF5b3V0OiB0aGlzLiQoZ28uTGF5ZXJlZERpZ3JhcGhMYXlvdXQsIHsgZGlyZWN0aW9uOiAwIH0pLFxuICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICBsYXlvdXQ6IHRoaXMuJChnby5MYXlvdXQpLFxuICAgICAgICBtb3ZhYmxlOiBmYWxzZSxcbiAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXG4gICAgICAgIC8vIG1vdmFibGU6IHRydWUsXG4gICAgICAgIC8vIHNlbGVjdGFibGU6IHRydWUsXG4gICAgICAgIGRyYWdDb21wdXRhdGlvbjogKG5vZGUsIHB0LCBncmlkcHQpID0+IHtcbiAgICAgICAgICBwdC54ID1cbiAgICAgICAgICAgIE1hdGgucm91bmQocHQueCAvIEF0b0dvanNFZGl0b3JNb2RlbC5CQVNJQ19HUklEX1NJWkVfV0lEVEgpICpcbiAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5CQVNJQ19HUklEX1NJWkVfV0lEVEg7XG4gICAgICAgICAgcHQueSA9XG4gICAgICAgICAgICBNYXRoLnJvdW5kKHB0LnkgLyBBdG9Hb2pzRWRpdG9yTW9kZWwuQkFTSUNfR1JJRF9TSVpFX0hFSUdIVCkgKlxuICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkJBU0lDX0dSSURfU0laRV9IRUlHSFQ7XG4gICAgICAgICAgcmV0dXJuIHB0O1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gbWluU2l6ZTogbmV3IGdvLlNpemUoQXRvR29qc0VkaXRvck1vZGVsLkJBU0lDX0dSSURfU0laRV9XSURUSCwgQXRvR29qc0VkaXRvck1vZGVsLkJBU0lDX0dSSURfU0laRV9IRUlHSFQpLFxuICAgICAgICBtaW5TaXplOiBuZXcgZ28uU2l6ZSgxLCAxKSxcbiAgICAgICAgbWF4U2l6ZTogbmV3IGdvLlNpemUoMSwgMSksXG4gICAgICAgIC8vIG1pblNpemU6IG5ldyBnby5TaXplKDEwMCwgMTAwKSxcbiAgICAgIH0sXG4gICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgIGdvLlBvaW50LnN0cmluZ2lmeVxuICAgICAgKSxcbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnUm91bmRlZFJlY3RhbmdsZScsIHtcbiAgICAgICAgICBmaWxsOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgIHN0cm9rZTogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAvLyBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5SRVNPTFVUSU9OX0JMVUUsXG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgLy8gc3Ryb2tlRGFzaEFycmF5OiBbNSwgNV0sXG4gICAgICAgIH0pXG4gICAgICAgIC8vIHRoaXMuJChnby5QbGFjZWhvbGRlciksXG4gICAgICAgIC8vIHRoaXMuJChnby5QbGFjZWhvbGRlciwgeyBwYWRkaW5nOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDApIH0pLFxuICAgICAgKVxuICAgICAgLy8gdGhpcy4kKGdvLlRleHRCbG9jaywgdGl0bGUsIHtcbiAgICAgIC8vICAgICByb3c6IDAsXG4gICAgICAvLyAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDApLFxuICAgICAgLy8gICAgIHN0cm9rZTogJyM0NDQ0NDQnLFxuICAgICAgLy8gICAgIGZvbnQ6ICdub3JtYWwgMTBwdCBBcmlhbCcsXG4gICAgICAvLyAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgIC8vICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuTGVmdCxcbiAgICAgIC8vIH0sXG4gICAgICAvLyBuZXcgZ28uQmluZGluZygndGV4dCcsICdrZXknKS5tYWtlVHdvV2F5KCksKSxcblxuICAgICAgLy8gdGhpcy4kKFxuICAgICAgLy8gICAgIGdvLlBhbmVsLFxuICAgICAgLy8gICAgICdUYWJsZScsXG4gICAgICAvLyAgICAge1xuICAgICAgLy8gICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuVG9wTGVmdCxcbiAgICAgIC8vICAgICAgICAgYWxpZ25tZW50Rm9jdXM6IG5ldyBnby5TcG90KDAsIDAsIC0xMCwgLTEwKSxcbiAgICAgIC8vICAgICAgICAgLy8gcGFkZGluZzogbmV3IGdvLk1hcmdpbigwLCAwLCA1MCwgMCksXG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICB0aGlzLiQoXG4gICAgICAvLyAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgLy8gICAgICAgICAnSG9yaXpvbnRhbCcsXG4gICAgICAvLyAgICAgICAgIHtcbiAgICAgIC8vICAgICAgICAgICAgIHJvdzogMCxcbiAgICAgIC8vICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgLy8gICAgICAgICB9LFxuICAgICAgLy8gICAgICAgICB0aGlzLiQoZ28uUGljdHVyZSwgaWNvbiwge1xuICAgICAgLy8gICAgICAgICAgICAgcm93OiAwLFxuICAgICAgLy8gICAgICAgICAgICAgLy8gYWxpZ25tZW50OiBnby5TcG90LkNlbnRlcixcbiAgICAgIC8vICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgLy8gICAgICAgICAgICAgbWF4U2l6ZTogbmV3IGdvLlNpemUoNDAsIDQwKSxcbiAgICAgIC8vICAgICAgICAgICAgIGltYWdlU3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVW5pZm9ybSxcbiAgICAgIC8vICAgICAgICAgfSksXG4gICAgICAvLyAgICAgICAgIHRoaXMuJChcbiAgICAgIC8vICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgLy8gICAgICAgICAgICAgJ1RhYmxlJyxcbiAgICAgIC8vICAgICAgICAgICAgIHtcbiAgICAgIC8vICAgICAgICAgICAgICAgICBjb2x1bW46IDEsXG4gICAgICAvLyAgICAgICAgICAgICAgICAgZGVmYXVsdEFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgLy8gICAgICAgICAgICAgICAgIGFsaWdubWVudEZvY3VzOiBuZXcgZ28uU3BvdCgwLCAwLCAwLCAyMCksXG4gICAgICAvLyAgICAgICAgICAgICB9LFxuICAgICAgLy8gICAgICAgICAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgdGl0bGUsIHtcbiAgICAgIC8vICAgICAgICAgICAgICAgICByb3c6IDAsXG4gICAgICAvLyAgICAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDMsIDMsIDUsIDEwKSxcbiAgICAgIC8vICAgICAgICAgICAgICAgICAvLyBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgTmFOKSxcbiAgICAgIC8vICAgICAgICAgICAgICAgICBzdHJva2U6ICcjNDQ0NDQ0JyxcbiAgICAgIC8vICAgICAgICAgICAgICAgICBmb250OiAnbm9ybWFsIDEwcHQgQXJpYWwnLFxuICAgICAgLy8gICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAvLyAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkxlZnQsXG4gICAgICAvLyAgICAgICAgICAgICB9KSxcbiAgICAgIC8vICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgIC8vICAgICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAvLyAgICAgICAgICAgICAgICAge1xuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICByb3c6IDEsXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCAzLCAzLCAxMCksXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAvLyBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgNDApLFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICBzdHJva2U6ICcjMDAwRDQyJyxcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2JvbGQgMTBwdCBBcmlhbCcsXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgIHdyYXA6IGdvLlRleHRCbG9jay5Ob25lLFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogZ28uVGV4dEJsb2NrLk92ZXJmbG93RWxsaXBzaXMsXG4gICAgICAvLyAgICAgICAgICAgICAgICAgfSxcbiAgICAgIC8vICAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpLFxuICAgICAgLy8gICAgICAgICAgICAgICAgIHtcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgLy8gZGVmaW5lIGEgdG9vbHRpcCBmb3IgZWFjaCBub2RlIHRoYXQgZGlzcGxheXMgdGhlIGNvbG9yIGFzIHRleHRcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgdG9vbFRpcDogdGhpcy4kKFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgJ1Rvb2xUaXAnLFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgeyBtYXJnaW46IDQgfSwgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpKSxcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgKSwgLy8gZW5kIG9mIEFkb3JubWVudFxuICAgICAgLy8gICAgICAgICAgICAgICAgIH0sXG4gICAgICAvLyAgICAgICAgICAgICApLFxuICAgICAgLy8gICAgICAgICApLFxuICAgICAgLy8gICAgICksXG4gICAgICAvLyApLFxuICAgICk7XG4gICAgdGhpcy5teURpYWdyYW0uZ3JvdXBUZW1wbGF0ZU1hcC5zZXQodGl0bGUsIG5vZGUpO1xuICB9XG5cbiAgbWFrZUdyb3VwVGVtcGxhdGUoXG4gICAgaWNvbixcbiAgICB0aXRsZSxcbiAgICBzaXplOiB7IHc6IG51bWJlcjsgaDogbnVtYmVyIH0gPSB7IHc6IDgwLCBoOiA4MCB9XG4gICkge1xuICAgIGxldCBub2RlID0gdGhpcy4kKFxuICAgICAgZ28uR3JvdXAsXG4gICAgICAnU3BvdCcsXG4gICAgICB7XG4gICAgICAgIC8vICAgICAvLyBsYXlvdXQ6IHRoaXMuJChnby5Gb3JjZURpcmVjdGVkTGF5b3V0ICwge1xuICAgICAgICAvLyAgICAgLy8gICAgIGRpcmVjdGlvbjogMCxcbiAgICAgICAgLy8gICAgIC8vICAgICBzZXRzUG9ydFNwb3RzOiBmYWxzZSxcbiAgICAgICAgLy8gICAgIC8vIH0pLFxuXG4gICAgICAgIC8vIGxheW91dDogdGhpcy4kKGdvLkxheWVyZWREaWdyYXBoTGF5b3V0LCB7XG4gICAgICAgIC8vICAgICBkaXJlY3Rpb246IDAsXG4gICAgICAgIC8vICAgICBzZXRzUG9ydFNwb3RzOiBmYWxzZSxcbiAgICAgICAgLy8gfSksXG5cbiAgICAgICAgbGF5b3V0OiB0aGlzLiQoZ28uTGF5b3V0KSxcblxuICAgICAgICAvLyAvLyAgICAgLy8gYWRvcm5tZW50IHdoZW4gYSBncm91cCBpcyBzZWxlY3RlZFxuICAgICAgICAvLyAvLyAgICAgLy8gc2VsZWN0aW9uQWRvcm5tZW50VGVtcGxhdGU6IHRoaXMuJChcbiAgICAgICAgLy8gLy8gICAgIC8vICAgICBnby5BZG9ybm1lbnQsXG4gICAgICAgIC8vIC8vICAgICAvLyAgICAgJ0F1dG8nLFxuICAgICAgICAvLyAvLyAgICAgLy8gICAgIHRoaXMuJChnby5TaGFwZSwgJ1JlY3RhbmdsZScsIHsgZmlsbDogbnVsbCwgc3Ryb2tlOiAnZG9kZ2VyYmx1ZScsIHN0cm9rZVdpZHRoOiA4IH0pLFxuICAgICAgICAvLyAvLyAgICAgLy8gICAgIHRoaXMuJChnby5QbGFjZWhvbGRlciksXG4gICAgICAgIC8vIC8vICAgICAvLyApLFxuICAgICAgfSxcblxuICAgICAgLy8gbmV3IGdvLkJpbmRpbmcoJ2xheW91dCcsICdsYXlvdXQnLCAoeCkgPT5cbiAgICAgIC8vIHtcbiAgICAgIC8vICAgICByZXR1cm4gdGhpcy4kKGdvLkZvcmNlRGlyZWN0ZWRMYXlvdXQgLCB7XG4gICAgICAvLyAgICAgICAgIGRpcmVjdGlvbjogMCxcbiAgICAgIC8vICAgICAgICAgc2V0c1BvcnRTcG90czogZmFsc2UsXG4gICAgICAvLyAgICAgfSk7XG4gICAgICAvLyB9XG4gICAgICAvLyApLFxuICAgICAge1xuICAgICAgICBtaW5TaXplOiBuZXcgZ28uU2l6ZSg0MDAsIDQwMCksXG4gICAgICB9LFxuICAgICAgLy8gbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KGdvLlBvaW50LnN0cmluZ2lmeSksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnQXV0bycsXG4gICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ1JvdW5kZWRSZWN0YW5nbGUnLCB7XG4gICAgICAgICAgZmlsbDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5SRVNPTFVUSU9OX0JMVUUsXG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgLy8gc3Ryb2tlRGFzaEFycmF5OiBbNSwgNV0sXG4gICAgICAgIH0pLFxuICAgICAgICB0aGlzLiQoZ28uUGxhY2Vob2xkZXIsIHsgcGFkZGluZzogbmV3IGdvLk1hcmdpbig2MCwgMjAsIDIwLCAyMCkgfSlcbiAgICAgICksXG5cbiAgICAgIC8vIHRoaXMuJChcbiAgICAgIC8vICAgICBnby5QYW5lbCxcbiAgICAgIC8vICAgICAnVGFibGUnLFxuICAgICAgLy8gICAgIHtcbiAgICAgIC8vICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LlRvcExlZnQsXG4gICAgICAvLyAgICAgICAgIGFsaWdubWVudEZvY3VzOiBuZXcgZ28uU3BvdCgwLCAwLCAtMTAsIC0xMCksXG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICB0aGlzLiQoZ28uVGV4dEJsb2NrLCB0aXRsZSwge1xuICAgICAgLy8gICAgICAgICByb3c6IDAsXG4gICAgICAvLyAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigzLCAzLCA1LCAzKSxcbiAgICAgIC8vICAgICAgICAgbWF4U2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53IC0gMjAsIE5hTiksXG4gICAgICAvLyAgICAgICAgIHN0cm9rZTogJyM0NDQ0NDQnLFxuICAgICAgLy8gICAgICAgICBmb250OiAnbm9ybWFsIDhwdCBBcmlhbCcsXG4gICAgICAvLyAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAvLyAgICAgfSksXG4gICAgICAvLyAgICAgdGhpcy4kKGdvLlBpY3R1cmUsIGljb24sIHtcbiAgICAgIC8vICAgICAgICAgcm93OiAxLFxuICAgICAgLy8gICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgLy8gICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZSg0MCwgNDApLFxuICAgICAgLy8gICAgICAgICBpbWFnZVN0cmV0Y2g6IGdvLkdyYXBoT2JqZWN0LlVuaWZvcm0sXG4gICAgICAvLyAgICAgfSksXG4gICAgICAvLyAgICAgdGhpcy4kKFxuICAgICAgLy8gICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAvLyAgICAgICAgIHtcbiAgICAgIC8vICAgICAgICAgICAgIHJvdzogMixcbiAgICAgIC8vICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigxMCwgMywgMywgMyksXG4gICAgICAvLyAgICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgIC8vICAgICAgICAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDIwLCA0MCksXG4gICAgICAvLyAgICAgICAgICAgICBzdHJva2U6ICcjMDAwRDQyJyxcbiAgICAgIC8vICAgICAgICAgICAgIGZvbnQ6ICdib2xkIDhwdCBBcmlhbCcsXG4gICAgICAvLyAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgLy8gICAgICAgICAgICAgd3JhcDogZ28uVGV4dEJsb2NrLk5vbmUsXG4gICAgICAvLyAgICAgICAgICAgICBvdmVyZmxvdzogZ28uVGV4dEJsb2NrLk92ZXJmbG93RWxsaXBzaXMsXG4gICAgICAvLyAgICAgICAgIH0sXG4gICAgICAvLyAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJ25hbWUnKS5tYWtlVHdvV2F5KCksXG4gICAgICAvLyAgICAgICAgIHtcbiAgICAgIC8vICAgICAgICAgICAgIC8vIGRlZmluZSBhIHRvb2x0aXAgZm9yIGVhY2ggbm9kZSB0aGF0IGRpc3BsYXlzIHRoZSBjb2xvciBhcyB0ZXh0XG4gICAgICAvLyAgICAgICAgICAgICB0b29sVGlwOiB0aGlzLiQoJ1Rvb2xUaXAnLCB0aGlzLiQoZ28uVGV4dEJsb2NrLCB7IG1hcmdpbjogNCB9LCBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykpKSwgLy8gZW5kIG9mIEFkb3JubWVudFxuICAgICAgLy8gICAgICAgICB9LFxuICAgICAgLy8gICAgICksXG4gICAgICAvLyAgICAgLy8gbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KGdvLlBvaW50LnN0cmluZ2lmeSksXG4gICAgICAvLyApLFxuXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnVGFibGUnLFxuICAgICAgICB7XG4gICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LlRvcExlZnQsXG4gICAgICAgICAgYWxpZ25tZW50Rm9jdXM6IG5ldyBnby5TcG90KDAsIDAsIC0xMCwgLTEwKSxcbiAgICAgICAgICAvLyBwYWRkaW5nOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDUwLCAwKSxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICdIb3Jpem9udGFsJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICByb3c6IDAsXG4gICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRoaXMuJChnby5QaWN0dXJlLCBpY29uLCB7XG4gICAgICAgICAgICByb3c6IDAsXG4gICAgICAgICAgICAvLyBhbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkxlZnQsXG4gICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZSg0MCwgNDApLFxuICAgICAgICAgICAgaW1hZ2VTdHJldGNoOiBnby5HcmFwaE9iamVjdC5Vbmlmb3JtLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29sdW1uOiAxLFxuICAgICAgICAgICAgICBkZWZhdWx0QWxpZ25tZW50OiBnby5TcG90LkxlZnQsXG4gICAgICAgICAgICAgIGFsaWdubWVudEZvY3VzOiBuZXcgZ28uU3BvdCgwLCAwLCAwLCAyMCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5URU1QTEFURV9EVVBMSUNBVEVbdGl0bGVdID8/IHRpdGxlLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcm93OiAwLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigzLCAzLCA1LCAxMCksXG4gICAgICAgICAgICAgICAgLy8gbWF4U2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53IC0gMjAsIE5hTiksXG4gICAgICAgICAgICAgICAgc3Ryb2tlOiAnIzQ0NDQ0NCcsXG4gICAgICAgICAgICAgICAgZm9udDogJ25vcm1hbCAxMHB0IEFyaWFsJyxcbiAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByb3c6IDEsXG4gICAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDAsIDMsIDMsIDEwKSxcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAvLyBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgNDApLFxuICAgICAgICAgICAgICAgIHN0cm9rZTogJyMwMDBENDInLFxuICAgICAgICAgICAgICAgIGZvbnQ6ICdib2xkIDEwcHQgQXJpYWwnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgd3JhcDogZ28uVGV4dEJsb2NrLk5vbmUsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGdvLlRleHRCbG9jay5PdmVyZmxvd0VsbGlwc2lzLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gZGVmaW5lIGEgdG9vbHRpcCBmb3IgZWFjaCBub2RlIHRoYXQgZGlzcGxheXMgdGhlIGNvbG9yIGFzIHRleHRcbiAgICAgICAgICAgICAgICB0b29sVGlwOiB0aGlzLiQoXG4gICAgICAgICAgICAgICAgICAnVG9vbFRpcCcsXG4gICAgICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAgICAgICAgeyBtYXJnaW46IDQgfSxcbiAgICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSwgLy8gZW5kIG9mIEFkb3JubWVudFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMubXlEaWFncmFtLmdyb3VwVGVtcGxhdGVNYXAuc2V0KHRpdGxlLCBub2RlKTtcbiAgfVxuXG4gIG1ha2VJbWFnZVRlbXBsYXRlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Ob2RlLFxuICAgICAgJ1Nwb3QnLFxuICAgICAge1xuICAgICAgICB6T3JkZXI6IDEsXG4gICAgICB9LFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnJywgKGRhdGEpID0+IHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBkYXRhPy52aXNpYmxlID09PSAnYm9vbGVhbicgPyBkYXRhPy52aXNpYmxlIDogdHJ1ZTtcbiAgICAgIH0pLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ3NlbGVjdGFibGUnLCAnc2VsZWN0YWJsZScpLFxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgJ0hvcml6b250YWwnLFxuICAgICAgICB7XG4gICAgICAgICAgcm93OiAwLFxuICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICB9LFxuICAgICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICAgICksXG4gICAgICAgIHRoaXMuJChcbiAgICAgICAgICBnby5QaWN0dXJlLFxuICAgICAgICAgIEF0b0dvanNFZGl0b3JNb2RlbC5JTUFHRV9ST19XQVRFUl9UUkVBVE1FTlRfUEFUSCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICAgICAgLy8gbWF4U2l6ZTogbmV3IGdvLlNpemUoNTAwLCA1MDApLFxuICAgICAgICAgICAgLy8gaW1hZ2VTdHJldGNoOiBnby5HcmFwaE9iamVjdC5Vbmlmb3JtLFxuICAgICAgICAgICAgLy8gbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDEzMCwgMCwgMCwgMCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygnbWFyZ2luJywgJ21hcmdpbicpLFxuICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd3aWR0aCcsICd3aWR0aCcpLFxuICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdoZWlnaHQnLCAnaGVpZ2h0JyksXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3NvdXJjZScsICcnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE/LnNvdXJjZVxuICAgICAgICAgICAgICA/IGRhdGE/LnNvdXJjZVxuICAgICAgICAgICAgICA6IEF0b0dvanNFZGl0b3JNb2RlbC5JTUFHRV9ST19XQVRFUl9UUkVBVE1FTlRfUEFUSDtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLm15RGlhZ3JhbS5ub2RlVGVtcGxhdGVNYXAuc2V0KFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLklNQUdFX1RFTVBMQVRFLFxuICAgICAgbm9kZVxuICAgICk7XG4gIH1cblxuICBtYWtlUGFyYW1UYWJsZSgpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBub2RlID0gdGhpcy4kKFxuICAgICAgZ28uUGFydCxcbiAgICAgICdWZXJ0aWNhbCcsXG4gICAgICAvLyB0aGlzLiQoZ28uU2hhcGUsIHsgZmlsbDogJyNFNkYwRjcnLCBzdHJva2U6ICcjMDA2M0E5Jywgc3Ryb2tlV2lkdGg6IDMsIGdlb21ldHJ5U3RyaW5nOiAnTSA1IDAgTCA5NSAwIFEgMTAwIDAgMTAwIDUgTCAxMDAgOTUgUSAxMDAgMTAwIDk1IDEwMCBMIDUgMTAwIFEgMCAxMDAgMCA5NSBMIDAgNSBRIDAgMCA1IDAnICB9KSxcbiAgICAgIHtcbiAgICAgICAgek9yZGVyOiAyLFxuICAgICAgICAvLyBwYWRkaW5nOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDIwMCksXG4gICAgICB9LFxuXG4gICAgICBuZXcgZ28uQmluZGluZygncGFkZGluZycsICdwYWRkaW5nJyksXG4gICAgICBuZXcgZ28uQmluZGluZygnc2VsZWN0YWJsZScsICdzZWxlY3RhYmxlJyksXG4gICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgIGdvLlBvaW50LnN0cmluZ2lmeVxuICAgICAgKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJycsIChkYXRhKSA9PiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgZGF0YT8udmlzaWJsZSA9PT0gJ2Jvb2xlYW4nID8gZGF0YT8udmlzaWJsZSA6IHRydWU7XG4gICAgICB9KSxcbiAgICAgIC8vIEhlYWRlclxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgJ0F1dG8nLFxuICAgICAgICB7XG4gICAgICAgICAgc3RyZXRjaDogZ28uR3JhcGhPYmplY3QuRmlsbCxcbiAgICAgICAgICBtaW5TaXplOiBuZXcgZ28uU2l6ZShOYU4sIDI3KSxcbiAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgMCwgLTYsIDApLFxuICAgICAgICB9LFxuICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICcnLCAoZGF0YSkgPT4gISFkYXRhPy50aXRsZSksXG4gICAgICAgIHRoaXMuJChcbiAgICAgICAgICBnby5TaGFwZSxcbiAgICAgICAgICAnUm91bmRlZFJlY3RhbmdsZScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGFyYW1ldGVyMTogNSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdmaWxsJywgJycsIChkYXRhKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YT8uY29sb3I7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3N0cm9rZScsICcnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE/LmNvbG9yO1xuICAgICAgICAgIH0pXG4gICAgICAgICksXG5cbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgNSksXG4gICAgICAgICAgICBzdHJldGNoOiBnby5HcmFwaE9iamVjdC5GaWxsLFxuICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkxlZnQsXG4gICAgICAgICAgICB2ZXJ0aWNhbEFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgICAgICBmb250OiAnYm9sZCAxNHB4IHNhbnMtc2VyaWYnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAndGl0bGUnKSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygnc3Ryb2tlJywgJycsIChkYXRhKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YT8udGl0bGVUZXh0Q29sb3IgfHwgJ3doaXRlJztcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5TaGFwZSxcbiAgICAgICAgJ1JlY3RhbmdsZScsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDAsIDAsIC02LCAwKSxcbiAgICAgICAgICBzdHJldGNoOiBnby5HcmFwaE9iamVjdC5GaWxsLFxuICAgICAgICB9LFxuICAgICAgICBuZXcgZ28uQmluZGluZygnZmlsbCcsICcnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgIHJldHVybiBkYXRhPy5jb2xvcjtcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBnby5CaW5kaW5nKCdzdHJva2UnLCAnJywgKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gZGF0YT8uY29sb3I7XG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICcnLCAoZGF0YSkgPT4gISFkYXRhPy50aXRsZSlcbiAgICAgICksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnQXV0bycsXG4gICAgICAgIHRoaXMuJChcbiAgICAgICAgICBnby5TaGFwZSxcbiAgICAgICAgICAnUm91bmRlZFJlY3RhbmdsZScsXG4gICAgICAgICAgeyBmaWxsOiAnI0U2RjBGNycsIHN0cm9rZTogJyMwMDYzQTknLCBzdHJva2VXaWR0aDogNCwgcGFyYW1ldGVyMTogNSB9LFxuICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdmaWxsJywgJ2JnQ29sb3InKSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygnc3Ryb2tlJywgJ2JvcmRlclRhYmxlJylcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICdUYWJsZScsXG4gICAgICAgICAgLy8gU2V0IGRlZmF1bHRzIGZvciBhbGwgcm93cyBhbmQgY29sdW1uczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwYWRkaW5nOiAxLjUsXG4gICAgICAgICAgICBkZWZhdWx0Um93U2VwYXJhdG9yU3Ryb2tlOiAnIzAwNjJBOScsXG4gICAgICAgICAgICBkZWZhdWx0Q29sdW1uU2VwYXJhdG9yU3Ryb2tlOiAnIzAwNjJBOScsXG4gICAgICAgICAgICBkZWZhdWx0U2VwYXJhdG9yUGFkZGluZzogbmV3IGdvLk1hcmdpbig1LCAyLCA1LCAyKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdkZWZhdWx0Um93U2VwYXJhdG9yU3Ryb2tlJywgJ2JvcmRlclRhYmxlJyksXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2RlZmF1bHRDb2x1bW5TZXBhcmF0b3JTdHJva2UnLCAnYm9yZGVyVGFibGUnKSxcbiAgICAgICAgICAvLyB0aGlzLiQoXG4gICAgICAgICAgLy8gICAgIGdvLlBhbmVsLFxuICAgICAgICAgIC8vICAgICAnVGFibGVSb3cnLFxuICAgICAgICAgIC8vICAgICB7IHJvdzogMCB9LFxuICAgICAgICAgIC8vICAgICB0aGlzLiQoZ28uVGV4dEJsb2NrLCAncm93IDEgY29sIDEnLCB7IGNvbHVtbjogMCwgbWFyZ2luOiAyIH0pLFxuICAgICAgICAgIC8vICAgICB0aGlzLiQoZ28uVGV4dEJsb2NrLCAncm93IDEgY29sIDInLCB7IGNvbHVtbjogMSwgbWFyZ2luOiAyIH0pLFxuICAgICAgICAgIC8vICksXG4gICAgICAgICAgLy8gdGhpcy4kKFxuICAgICAgICAgIC8vICAgICBnby5QYW5lbCxcbiAgICAgICAgICAvLyAgICAgJ1RhYmxlUm93JyxcbiAgICAgICAgICAvLyAgICAgeyByb3c6IDEgfSxcbiAgICAgICAgICAvLyAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgJ3JvdyAyIGNvbCAxJywgeyBjb2x1bW46IDAsIG1hcmdpbjogMiB9KSxcbiAgICAgICAgICAvLyAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgJ3JvdyAyIGNvbCAyJywgeyBjb2x1bW46IDEsIG1hcmdpbjogMiB9KSxcbiAgICAgICAgICAvLyApLFxuICAgICAgICAgIC8vIG5ldyBnby5CaW5kaW5nKCdpdGVtQXJyYXknLCAnZGF0YVRhYmxlJyksXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2l0ZW1BcnJheScsICcnLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgLy8gcmV0dXJuIGRhdGEuZGF0YVRhYmxlLmZpbHRlcigoeCkgPT4geD8udmlzaWJsZSAhPT0gZmFsc2UpO1xuICAgICAgICAgICAgY29uc3QgZGF0YVRhYmxlID0gZGF0YS5kYXRhVGFibGUuZmlsdGVyKFxuICAgICAgICAgICAgICAoeCkgPT4geD8udmlzaWJsZSAhPT0gZmFsc2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoZGF0YT8uaXNTaG93RGF0YUxvbmdpdHVkaW5hbCkge1xuICAgICAgICAgICAgICByZXR1cm4gXy5tYXAoZGF0YVRhYmxlLCAoeCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLngsIGlzT25seVNob3dQYXJhbU5hbWU6IHRydWUgfTtcbiAgICAgICAgICAgICAgfSk/LmNvbmNhdChcbiAgICAgICAgICAgICAgICBfLm1hcChkYXRhVGFibGUsICh4KSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi54LFxuICAgICAgICAgICAgICAgICAgICBpc09ubHlTaG93VmFsdWU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG1pblNpemVWYWx1ZTogbmV3IGdvLlNpemUoMTcwLCAxNSksXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGF0YVRhYmxlO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIGl0ZW1UZW1wbGF0ZTogdGhpcy4kKFxuICAgICAgICAgICAgLy8gICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgLy8gICAgIG5ldyBnby5CaW5kaW5nKCdyb3cnLCAnaW5kZXhSb3cnKSxcbiAgICAgICAgICAgIC8vICAgICAvLyBuZXcgZ28uQmluZGluZygnaGVpZ2h0JywgJ2hlaWdodCcpLFxuICAgICAgICAgICAgLy8gICAgIHRoaXMuJChcbiAgICAgICAgICAgIC8vICAgICAgICAgZ28uUGljdHVyZSxcbiAgICAgICAgICAgIC8vICAgICAgICAgQVJST1csXG4gICAgICAgICAgICAvLyAgICAgICAgIHtcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZSgyMCwgNDApLFxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgLy8gaW1hZ2VTdHJldGNoOiBnby5HcmFwaE9iamVjdC5Vbmlmb3JtLFxuICAgICAgICAgICAgLy8gICAgICAgICB9LFxuICAgICAgICAgICAgLy8gICAgICAgICBuZXcgZ28uQmluZGluZygnc291cmNlJywgJycsIChkYXRhLCBwYW5lbCkgPT4ge1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgLy8gcGFuZWwucGFydD8uZGF0YT8uaWRcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIHJldHVybiBkYXRhPy5pc0NyZWF0ZWQgPyBwYW5lbD8uJHAgOiBBUlJPV19HUkFZO1xuICAgICAgICAgICAgLy8gICAgICAgICB9KSxcbiAgICAgICAgICAgIC8vICAgICApLFxuICAgICAgICAgICAgLy8gKSxcbiAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZTogdGhpcy4kKFxuICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgJ1RhYmxlUm93JyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgIGNsaWNrOiAoZSwgb2JqOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgb2JqLnBhbmVsLnBhcnQuZGF0YT8uZGF0YVRhYmxlW29iai5yb3ddPy5pc0VkaXRhYmxlID09PVxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHNlbGYub25DbGlrUGFyYW1PZlRhYmxlLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICAuLi5vYmoucGFuZWwucGFydC5kYXRhPy5kYXRhVGFibGVbXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLnBhbmVsLnBhcnQuZGF0YT8uaXNTaG93RGF0YUxvbmdpdHVkaW5hbCA/IDAgOiBvYmoucm93XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY29sdW1uOiAwLFxuICAgICAgICAgICAgICAgICAgbWFyZ2luOiAyLFxuICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBnby5UZXh0QmxvY2suT3ZlcmZsb3dFbGxpcHNpcyxcbiAgICAgICAgICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICAgICAgICAgJ1Rvb2xUaXAnLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogNCxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJycsIChkYXRhLCBwYW5lbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE/Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJycsIChkYXRhLCBwYW5lbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE/Lm5hbWU7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ21heFNpemUnLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YT8ubWF4U2l6ZU5hbWVQYXJhbTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygnZGVzaXJlZFNpemUnLCAnJywgKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhPy5kZXNpcmVkU2l6ZU5hbWVQYXJhbTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICcnLCAoZGF0YSwgcGFuZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAhZGF0YT8uaXNPbmx5U2hvd1ZhbHVlO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgICAnVGFibGUnLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGNvbHVtbjogMSxcbiAgICAgICAgICAgICAgICAgIG1hcmdpbjogMixcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0U2VwYXJhdG9yUGFkZGluZzogbmV3IGdvLk1hcmdpbigwLCAwLCAwLCAwKSxcbiAgICAgICAgICAgICAgICAgIHN0cmV0Y2g6IGdvLkdyYXBoT2JqZWN0LkZpbGwsXG4gICAgICAgICAgICAgICAgICAvLyBtaW5TaXplOiBuZXcgZ28uU2l6ZSgxNzAsIDE1KSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJycsIChkYXRhLCBwYW5lbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuICFkYXRhPy5pc09ubHlTaG93UGFyYW1OYW1lO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdjb2x1bW4nLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YT8uaXNPbmx5U2hvd1ZhbHVlID8gMCA6IDE7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ21pblNpemUnLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YT8ubWluU2l6ZVZhbHVlID8/IG5ldyBnby5TaXplKDkwLCAxNCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ21heFNpemUnLCAnJywgKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhPy5tYXhTaXplVmFsdWU7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2Rlc2lyZWRTaXplJywgJycsIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YT8uZGVzaXJlZFNpemVWYWx1ZTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uOiAwLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDAsXG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogZ28uVGV4dEJsb2NrLk92ZXJmbG93RWxsaXBzaXMsXG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICB3cmFwOiBnby5UZXh0QmxvY2suTm9uZSxcbiAgICAgICAgICAgICAgICAgICAgbWF4U2l6ZTogbmV3IGdvLlNpemUoSW5maW5pdHksIE5hTiksXG4gICAgICAgICAgICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICAgICAgICAgICAnVG9vbFRpcCcsXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIXRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYCR7ZGF0YT8udGFnTmFtZSB8fCAnJ30gYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9JHtkYXRhPy52YWx1ZX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICcnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgISF0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8udGFnTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWRhdGE/LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhPy52YWx1ZTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3N0cm9rZScsICcnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuY29sb3I7XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdtYXhTaXplJywgJycsIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0YT8uaXNSZWFkT25seSAmJiAhdGhpcy5faW5pdGlhbE9wdGlvbnMuaXNSZWFkT25seSkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgZ28uU2l6ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE/Lm1heFNpemVWYWx1ZT8ud2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBkYXRhPy5tYXhTaXplVmFsdWU/LndpZHRoIC0gMTVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBOYU4sXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhPy5tYXhTaXplVmFsdWU/LmhlaWdodCA/PyBOYU5cbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhPy5tYXhTaXplVmFsdWU7XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdmb250JywgJycsIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhPy5mb250O1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgICAgIGdvLlBpY3R1cmUsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5SaWdodCxcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uOiAxLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgNSksXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogSUNPTlNfQkFTRTY0Wyd1ZjA0NCddLFxuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICAgICAgICAgICAnVG9vbFRpcCcsXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhPy50b29sVGlwQWN0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGF0YSkgPT4gISFkYXRhPy50b29sVGlwQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE0LFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgIWRhdGE/LmlzUmVhZE9ubHkgJiYgIXRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ29wYWNpdHknLCAnJywgKGRhdGEsIHBhbmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhPy5pc0VkaXRhYmxlID09PSBmYWxzZSA/IDAuNiA6IDE7XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMubXlEaWFncmFtLm5vZGVUZW1wbGF0ZU1hcC5zZXQoXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuUEFSQU1fVEFCTEUsXG4gICAgICBub2RlXG4gICAgKTtcbiAgfVxuXG4gIG1ha2VNYXNzQmFsYW5jZSgpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBub2RlID0gdGhpcy4kKFxuICAgICAgZ28uUGFydCxcbiAgICAgICdBdXRvJyxcbiAgICAgIHt9LFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgICksXG4gICAgICBuZXcgZ28uQmluZGluZygnc2VsZWN0YWJsZScsICdzZWxlY3RhYmxlJyksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnSG9yaXpvbnRhbCcsXG4gICAgICAgIC8vIFNldCBkZWZhdWx0cyBmb3IgYWxsIHJvd3MgYW5kIGNvbHVtbnM6XG4gICAgICAgIHtcbiAgICAgICAgICBwYWRkaW5nOiA0LFxuICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICdUb29sVGlwJyxcbiAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiA0LFxuICAgICAgICAgICAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKDQ1MCwgMzApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICd0b29sdGlwJylcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICAgIHZpc2libGU6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHksXG4gICAgICAgIH0sXG4gICAgICAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJ3Zpc2libGUnKSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgNSwgMCwgMCksXG4gICAgICAgICAgICB0ZXh0OiAnTWFzcyBCYWxhbmNlOicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygnZm9udCcsICdmb250JylcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5BTElaQVJJTixcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdmb250JywgJ2ZvbnQnKSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygnc3Ryb2tlJywgJ2NvbG9yVmFsdWUnKSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICcnLCAoZGF0YSwgcGFuZWwpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhPy52YWx1ZTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLm15RGlhZ3JhbS5ub2RlVGVtcGxhdGVNYXAuc2V0KFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLk1BU1NfQkFMQU5DRSxcbiAgICAgIG5vZGVcbiAgICApO1xuICB9XG5cbiAgbWFrZUdyb3VwUk9QbGFudFRlbXBsYXRlKFxuICAgIGljb24sXG4gICAgdGl0bGUsXG4gICAgc2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9ID0geyB3OiA4MCwgaDogODAgfVxuICApIHtcbiAgICBsZXQgbm9kZSA9IHRoaXMuJChcbiAgICAgIGdvLkdyb3VwLFxuICAgICAgJ1Nwb3QnLFxuICAgICAge1xuICAgICAgICBsYXlvdXQ6IHRoaXMuJChnby5MYXlvdXQpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gbWluU2l6ZTogbmV3IGdvLlNpemUoTmFOLCA2MDApLFxuICAgICAgfSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdzZWxlY3RhYmxlJywgJ3NlbGVjdGFibGUnKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdsb2NhdGlvbicsICdsb2MnLCBnby5Qb2ludC5wYXJzZSkubWFrZVR3b1dheShcbiAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICApLFxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgJ1RhYmxlJyxcblxuICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgJ0F1dG8nLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJvdzogMCxcbiAgICAgICAgICAgIHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aGlzLiQoZ28uU2hhcGUsICdSb3VuZGVkUmVjdGFuZ2xlJywge1xuICAgICAgICAgICAgbmFtZTogJ1NIQVBFX0tFWScsXG4gICAgICAgICAgICBmaWxsOiAnI0ZDRkNGRCcsXG4gICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5SRVNPTFVUSU9OX0JMVUUsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICAgIC8vIHN0cm9rZURhc2hBcnJheTogWzUsIDVdLFxuICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgdGhpcy4kKGdvLlBsYWNlaG9sZGVyLCB7IHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMTUsIDAsIDAsIDApIH0pXG4gICAgICAgICksXG4gICAgICAgIHRoaXMuJChcbiAgICAgICAgICBnby5QaWN0dXJlLFxuICAgICAgICAgIFJPX0xJTkVfRElSVFksXG4gICAgICAgICAge1xuICAgICAgICAgICAgcm93OiAxLFxuICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDgpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnJywgKHgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB4Py5pc1ZpZXdHZW5lcmFsICYmIHg/Lmhhc091dEZsb3cgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSxcblxuICAgICAgdGhpcy4kKGdvLlBhbmVsLCAnVGFibGUnLCB7XG4gICAgICAgIHdpZHRoOiAwLFxuICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgIGFsaWdubWVudDogbmV3IGdvLlNwb3QoMCwgMCwgMCwgMjE4KSxcbiAgICAgICAgYWxpZ25tZW50Rm9jdXM6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgLy8gc3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVmVydGljYWwsXG4gICAgICAgIHBvcnRJZDogJ0luZmxvdycsXG4gICAgICAgIGN1cnNvcjogdGhpcy5faW5pdGlhbE9wdGlvbnMuaXNSZWFkT25seSA/ICcnIDogJ3BvaW50ZXInLFxuICAgICAgICAvLyBhbGlnbm1lbnRGb2N1czogbmV3IGdvLlNwb3QoMCwgMCwgMCwgMTUwKSxcbiAgICAgICAgZnJvbVNwb3Q6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgdG9TcG90OiBnby5TcG90LkxlZnQsXG4gICAgICAgIGZyb21MaW5rYWJsZTogdHJ1ZSxcbiAgICAgICAgdG9MaW5rYWJsZTogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICAgdGhpcy4kKGdvLlBhbmVsLCAnVGFibGUnLCB7XG4gICAgICAgIHdpZHRoOiAwLFxuICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgIGFsaWdubWVudDogbmV3IGdvLlNwb3QoMCwgMCwgMTAyNSwgMzA1KSxcbiAgICAgICAgYWxpZ25tZW50Rm9jdXM6IGdvLlNwb3QuQm90dG9tLFxuICAgICAgICBwb3J0SWQ6ICdPdXRGbG93X0NsZWFuJyxcbiAgICAgICAgY3Vyc29yOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5ID8gJycgOiAncG9pbnRlcicsXG4gICAgICAgIGZyb21TcG90OiBnby5TcG90LkJvdHRvbSxcbiAgICAgICAgdG9TcG90OiBnby5TcG90LkJvdHRvbSxcbiAgICAgICAgZnJvbUxpbmthYmxlOiB0cnVlLFxuICAgICAgICB0b0xpbmthYmxlOiB0cnVlLFxuICAgICAgfSksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnVGFibGUnLFxuICAgICAgICB7XG4gICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgIC8vIGFsaWdubWVudDogbmV3IGdvLlNwb3QoMCwgMCwgNDgwLCA1MjUpLFxuICAgICAgICAgIC8vIGFsaWdubWVudDogbmV3IGdvLlNwb3QoMCwgMCwgNDc1LCA1NTIpLFxuICAgICAgICAgIGFsaWdubWVudEZvY3VzOiBnby5TcG90LkJvdHRvbSxcbiAgICAgICAgICBwb3J0SWQ6ICdPdXRGbG93X0RpcnR5JyxcbiAgICAgICAgICBjdXJzb3I6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHkgPyAnJyA6ICdwb2ludGVyJyxcbiAgICAgICAgICBmcm9tU3BvdDogZ28uU3BvdC5Cb3R0b20sXG4gICAgICAgICAgdG9TcG90OiBnby5TcG90LkJvdHRvbSxcbiAgICAgICAgICBmcm9tTGlua2FibGU6IHRydWUsXG4gICAgICAgICAgdG9MaW5rYWJsZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2FsaWdubWVudCcsICcnLCAoeCkgPT4ge1xuICAgICAgICAgIHJldHVybiB4Py5pc1ZpZXdHZW5lcmFsICYmIHg/Lmhhc091dEZsb3dcbiAgICAgICAgICAgID8gbmV3IGdvLlNwb3QoMCwgMCwgNTA1LCA2NjUpXG4gICAgICAgICAgICA6IG5ldyBnby5TcG90KDAsIDAsIDQ4MCwgNTI1KTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5teURpYWdyYW0uZ3JvdXBUZW1wbGF0ZU1hcC5zZXQodGl0bGUsIG5vZGUpO1xuICB9XG5cbiAgbWFrZUdyb3VwQm9pbGVyVGVtcGxhdGUoXG4gICAgaWNvbixcbiAgICB0aXRsZSxcbiAgICBzaXplOiB7IHc6IG51bWJlcjsgaDogbnVtYmVyIH0gPSB7IHc6IDgwLCBoOiA4MCB9XG4gICkge1xuICAgIGxldCBub2RlID0gdGhpcy4kKFxuICAgICAgZ28uR3JvdXAsXG4gICAgICAnU3BvdCcsXG4gICAgICB7XG4gICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gbWluU2l6ZTogbmV3IGdvLlNpemUoTmFOLCA2MDApLFxuICAgICAgfSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdzZWxlY3RhYmxlJywgJ3NlbGVjdGFibGUnKSxcbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAge1xuICAgICAgICAgIHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCksXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ1JvdW5kZWRSZWN0YW5nbGUnLCB7XG4gICAgICAgICAgbmFtZTogJ1NIQVBFX0tFWScsXG4gICAgICAgICAgZmlsbDogJyNGQ0ZDRkQnLFxuICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLlJFU09MVVRJT05fQkxVRSxcbiAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgfSksXG5cbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBsYWNlaG9sZGVyLFxuICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCdsb2NhdGlvbicsICdsb2MnLCBnby5Qb2ludC5wYXJzZSkubWFrZVR3b1dheShcbiAgICAgICAgICAgIGdvLlBvaW50LnN0cmluZ2lmeVxuICAgICAgICAgICksXG4gICAgICAgICAgeyBwYWRkaW5nOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDApIH1cbiAgICAgICAgKVxuICAgICAgKSxcblxuICAgICAgdGhpcy4kKGdvLlBhbmVsLCAnU3BvdCcsIHtcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgYWxpZ25tZW50OiBuZXcgZ28uU3BvdCgwLCAwLjUsIDAsIDExMiksXG4gICAgICAgIGFsaWdubWVudEZvY3VzOiBnby5TcG90LkxlZnQsXG4gICAgICAgIHBvcnRJZDogJ0luZmxvdycsXG4gICAgICAgIGN1cnNvcjogdGhpcy5faW5pdGlhbE9wdGlvbnMuaXNSZWFkT25seSA/ICcnIDogJ3BvaW50ZXInLFxuICAgICAgICBmcm9tU3BvdDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICB0b1Nwb3Q6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgZnJvbUxpbmthYmxlOiB0cnVlLFxuICAgICAgICB0b0xpbmthYmxlOiB0cnVlLFxuICAgICAgfSksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnU3BvdCcsXG4gICAgICAgIHtcbiAgICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Ub3AsXG4gICAgICAgICAgYWxpZ25tZW50OiBuZXcgZ28uU3BvdCgxLCAxLCAtMjE1LCAwKSxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBpY3R1cmUsXG4gICAgICAgICAgT1VURkxPV19MSU5FX0RJUlRZLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMCxcbiAgICAgICAgICAgIGhlaWdodDogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICcnLCAoeCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHg/LmlzVmlld0dlbmVyYWwgJiYgeD8uaGFzT3V0RmxvdyA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICB0aGlzLiQoZ28uUGFuZWwsIHtcbiAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuQm90dG9tTGVmdCxcbiAgICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Ub3AsXG4gICAgICAgICAgcG9ydElkOiAnT3V0RmxvdycsXG4gICAgICAgICAgY3Vyc29yOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5ID8gJycgOiAncG9pbnRlcicsXG4gICAgICAgICAgZnJvbVNwb3Q6IGdvLlNwb3QuQm90dG9tLFxuICAgICAgICAgIGZyb21MaW5rYWJsZTogdHJ1ZSxcbiAgICAgICAgICB0b0xpbmthYmxlOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLm15RGlhZ3JhbS5ncm91cFRlbXBsYXRlTWFwLnNldCh0aXRsZSwgbm9kZSk7XG4gIH1cblxuICBtYWtlR3JvdXBDb29saW5nVG93ZXJUZW1wbGF0ZShcbiAgICBpY29uLFxuICAgIHRpdGxlLFxuICAgIHNpemU6IHsgdzogbnVtYmVyOyBoOiBudW1iZXIgfSA9IHsgdzogODAsIGg6IDgwIH1cbiAgKSB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Hcm91cCxcbiAgICAgICdTcG90JyxcbiAgICAgIHtcbiAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXG4gICAgICAgIGxheW91dDogdGhpcy4kKGdvLkxheW91dCksXG4gICAgICAgIHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMCwgMzAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdsb2NhdGlvbicsICdsb2MnLCBnby5Qb2ludC5wYXJzZSkubWFrZVR3b1dheShcbiAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICApLFxuICAgICAgdGhpcy4kKFxuICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgJ0F1dG8nLFxuICAgICAgICB7XG4gICAgICAgICAgcm93OiAwLFxuICAgICAgICAgIHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCksXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ1JvdW5kZWRSZWN0YW5nbGUnLCB7XG4gICAgICAgICAgbmFtZTogJ1NIQVBFX0tFWScsXG4gICAgICAgICAgZmlsbDogJyNGQ0ZDRkQnLFxuICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLlJFU09MVVRJT05fQkxVRSxcbiAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgdGhpcy4kKGdvLlBsYWNlaG9sZGVyLCB7IHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCkgfSlcbiAgICAgICksXG4gICAgICB0aGlzLiQoZ28uUGFuZWwsICdUYWJsZScsIHtcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgYWxpZ25tZW50OiBuZXcgZ28uU3BvdCgwLCAwLCAwLCA1MzMpLFxuICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Cb3R0b20sXG4gICAgICAgIHBvcnRJZDogJ0luZmxvdycsXG4gICAgICAgIGN1cnNvcjogdGhpcy5faW5pdGlhbE9wdGlvbnMuaXNSZWFkT25seSA/ICcnIDogJ3BvaW50ZXInLFxuICAgICAgICBmcm9tU3BvdDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICB0b1Nwb3Q6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgZnJvbUxpbmthYmxlOiB0cnVlLFxuICAgICAgICB0b0xpbmthYmxlOiB0cnVlLFxuICAgICAgfSksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnU3BvdCcsXG4gICAgICAgIHtcbiAgICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Ub3AsXG4gICAgICAgICAgYWxpZ25tZW50OiBuZXcgZ28uU3BvdCgwLjUsIDEsIDIzLCAwKSxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBpY3R1cmUsXG4gICAgICAgICAgT1VURkxPV19MSU5FX0RJUlRZLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMCxcbiAgICAgICAgICAgIGhlaWdodDogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICcnLCAoeCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHg/LmlzVmlld0dlbmVyYWwgJiYgeD8uaGFzT3V0RmxvdyA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICB0aGlzLiQoZ28uUGFuZWwsIHtcbiAgICAgICAgICBhbGlnbm1lbnQ6IG5ldyBnby5TcG90KDAsIDAsIDAsIDE4KSxcbiAgICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Ub3AsXG4gICAgICAgICAgcG9ydElkOiAnT3V0RmxvdycsXG4gICAgICAgICAgY3Vyc29yOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5ID8gJycgOiAncG9pbnRlcicsXG4gICAgICAgICAgZnJvbVNwb3Q6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICAgIHRvU3BvdDogZ28uU3BvdC5SaWdodCxcbiAgICAgICAgICBmcm9tTGlua2FibGU6IHRydWUsXG4gICAgICAgICAgdG9MaW5rYWJsZTogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5teURpYWdyYW0uZ3JvdXBUZW1wbGF0ZU1hcC5zZXQodGl0bGUsIG5vZGUpO1xuICB9XG5cbiAgbWFrZUdyb3VwSW1tZXJzZWRVRlRlbXBsYXRlKFxuICAgIGljb24sXG4gICAgdGl0bGUsXG4gICAgc2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9ID0geyB3OiA4MCwgaDogODAgfVxuICApIHtcbiAgICBsZXQgbm9kZSA9IHRoaXMuJChcbiAgICAgIGdvLkdyb3VwLFxuICAgICAgJ1Nwb3QnLFxuICAgICAge1xuICAgICAgICBsYXlvdXQ6IHRoaXMuJChnby5MYXlvdXQpLFxuICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIG1pblNpemU6IG5ldyBnby5TaXplKE5hTiwgNjAwKSxcbiAgICAgIH0sXG4gICAgICAvLyBuZXcgZ28uQmluZGluZygnc2VsZWN0YWJsZScsICcnLCAoeCkgPT4ge1xuICAgICAgLy8gICByZXR1cm4geD8uc2VsZWN0YWJsZTtcbiAgICAgIC8vIH0pLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgICksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnQXV0bycsXG4gICAgICAgIHtcbiAgICAgICAgICByb3c6IDAsXG4gICAgICAgICAgcGFkZGluZzogbmV3IGdvLk1hcmdpbigwLCAwLCAwLCAwKSxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnUm91bmRlZFJlY3RhbmdsZScsIHtcbiAgICAgICAgICBuYW1lOiAnU0hBUEVfS0VZJyxcbiAgICAgICAgICBmaWxsOiAnI0ZDRkNGRCcsXG4gICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuUkVTT0xVVElPTl9CTFVFLFxuICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgIHN0cm9rZURhc2hBcnJheTogWzUsIDVdLFxuICAgICAgICB9KSxcbiAgICAgICAgdGhpcy4kKGdvLlBsYWNlaG9sZGVyLCB7IHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCkgfSlcbiAgICAgICksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnVGFibGUnLFxuICAgICAgICB7XG4gICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgIGFsaWdubWVudDogbmV3IGdvLlNwb3QoMCwgMCwgMCwgMzIwKSxcbiAgICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Cb3R0b20sXG4gICAgICAgICAgcG9ydElkOiAnSW5mbG93JyxcbiAgICAgICAgICBjdXJzb3I6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHkgPyAnJyA6ICdwb2ludGVyJyxcbiAgICAgICAgICBmcm9tU3BvdDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICAgIHRvU3BvdDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICAgIGZyb21MaW5rYWJsZTogdHJ1ZSxcbiAgICAgICAgICB0b0xpbmthYmxlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBuZXcgZ28uQmluZGluZyhcbiAgICAgICAgICAnYWxpZ25tZW50JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAoeCkgPT4geD8uW0FUT19TUE9UX0xPQ0FUSU9OX1RZUEUuU1BPVF9JTkZMT1ddXG4gICAgICAgIClcbiAgICAgICksXG5cbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdUYWJsZScsXG4gICAgICAgIHtcbiAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgYWxpZ25tZW50OiBuZXcgZ28uU3BvdCgwLCAwLCAwLCAzMjApLFxuICAgICAgICAgIGFsaWdubWVudEZvY3VzOiBnby5TcG90LkJvdHRvbSxcbiAgICAgICAgICBwb3J0SWQ6ICdPdXRGbG93X0NsZWFuJyxcbiAgICAgICAgICBjdXJzb3I6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHkgPyAnJyA6ICdwb2ludGVyJyxcbiAgICAgICAgICBmcm9tU3BvdDogZ28uU3BvdC5SaWdodCxcbiAgICAgICAgICAvLyB0b1Nwb3Q6IGdvLlNwb3QuUmlnaHQsXG4gICAgICAgICAgZnJvbUxpbmthYmxlOiB0cnVlLFxuICAgICAgICAgIHRvTGlua2FibGU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG5ldyBnby5CaW5kaW5nKCdhbGlnbm1lbnQnLCAnJywgKHgpID0+IHtcbiAgICAgICAgICByZXR1cm4geD8uW0FUT19TUE9UX0xPQ0FUSU9OX1RZUEUuU1BPVF9PVVRGTE9XXTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5teURpYWdyYW0uZ3JvdXBUZW1wbGF0ZU1hcC5zZXQodGl0bGUsIG5vZGUpO1xuICB9XG5cbiAgLy8gbWFrZUdyb3VwSW1tZXJzZWRVRlRlbXBsYXRlKFxuICAvLyAgIGljb24sXG4gIC8vICAgdGl0bGUsXG4gIC8vICAgc2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9ID0geyB3OiA4MCwgaDogODAgfVxuICAvLyApIHtcbiAgLy8gICBsZXQgbm9kZSA9IHRoaXMuJChcbiAgLy8gICAgIGdvLkdyb3VwLFxuICAvLyAgICAgJ1Nwb3QnLFxuICAvLyAgICAge1xuICAvLyAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcbiAgLy8gICAgICAgbGF5b3V0OiB0aGlzLiQoZ28uTGF5b3V0KSxcbiAgLy8gICAgICAgcGFkZGluZzogbmV3IGdvLk1hcmdpbigwLCAzMCwgMCwgMCksXG4gIC8vICAgICB9LFxuICAvLyAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAvLyAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgLy8gICAgICksXG4gIC8vICAgICB0aGlzLiQoXG4gIC8vICAgICAgIGdvLlBhbmVsLFxuICAvLyAgICAgICAnQXV0bycsXG4gIC8vICAgICAgIHtcbiAgLy8gICAgICAgICByb3c6IDAsXG4gIC8vICAgICAgICAgcGFkZGluZzogbmV3IGdvLk1hcmdpbigwLCAwLCAwLCAwKSxcbiAgLy8gICAgICAgfSxcbiAgLy8gICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnUm91bmRlZFJlY3RhbmdsZScsIHtcbiAgLy8gICAgICAgICBuYW1lOiAnU0hBUEVfS0VZJyxcbiAgLy8gICAgICAgICBmaWxsOiAnI0ZDRkNGRCcsXG4gIC8vICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuUkVTT0xVVElPTl9CTFVFLFxuICAvLyAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAvLyAgICAgICAgIHN0cm9rZURhc2hBcnJheTogWzUsIDVdLFxuICAvLyAgICAgICB9KSxcblxuICAvLyAgICAgICB0aGlzLiQoZ28uUGxhY2Vob2xkZXIsIHsgcGFkZGluZzogbmV3IGdvLk1hcmdpbigwLCAwLCAwLCAwKSB9KVxuICAvLyAgICAgKSxcbiAgLy8gICAgIHRoaXMuJChnby5QYW5lbCwgJ1RhYmxlJywge1xuICAvLyAgICAgICB3aWR0aDogMCxcbiAgLy8gICAgICAgaGVpZ2h0OiAwLFxuICAvLyAgICAgICBhbGlnbm1lbnQ6IG5ldyBnby5TcG90KDAsIDAsIDAsIDM0MCksXG4gIC8vICAgICAgIGFsaWdubWVudEZvY3VzOiBnby5TcG90LkJvdHRvbSxcbiAgLy8gICAgICAgcG9ydElkOiAnSW5mbG93JyxcbiAgLy8gICAgICAgY3Vyc29yOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5ID8gJycgOiAncG9pbnRlcicsXG4gIC8vICAgICAgIGZyb21TcG90OiBnby5TcG90LkxlZnQsXG4gIC8vICAgICAgIHRvU3BvdDogZ28uU3BvdC5MZWZ0LFxuICAvLyAgICAgICBmcm9tTGlua2FibGU6IHRydWUsXG4gIC8vICAgICAgIHRvTGlua2FibGU6IHRydWUsXG4gIC8vICAgICB9KSxcbiAgLy8gICAgIHRoaXMuJChcbiAgLy8gICAgICAgZ28uUGFuZWwsXG4gIC8vICAgICAgICdTcG90JyxcbiAgLy8gICAgICAge1xuICAvLyAgICAgICAgIGFsaWdubWVudEZvY3VzOiBnby5TcG90LlRvcCxcbiAgLy8gICAgICAgICBhbGlnbm1lbnQ6IG5ldyBnby5TcG90KDAsIDAsIDAsIDApLFxuICAvLyAgICAgICB9LFxuICAvLyAgICAgICAvLyB0aGlzLiQoXG4gIC8vICAgICAgIC8vICAgZ28uUGljdHVyZSxcbiAgLy8gICAgICAgLy8gICBPVVRGTE9XX0xJTkVfRElSVFksXG4gIC8vICAgICAgIC8vICAge1xuICAvLyAgICAgICAvLyAgICAgd2lkdGg6IDEwLFxuICAvLyAgICAgICAvLyAgICAgaGVpZ2h0OiAyMCxcbiAgLy8gICAgICAgLy8gICB9LFxuICAvLyAgICAgICAvLyAgIG5ldyBnby5CaW5kaW5nKCd2aXNpYmxlJywgJycsICh4KSA9PiB7XG4gIC8vICAgICAgIC8vICAgICByZXR1cm4geD8uaXNWaWV3R2VuZXJhbCAmJiB4Py5oYXNPdXRGbG93ID8gdHJ1ZSA6IGZhbHNlO1xuICAvLyAgICAgICAvLyAgIH0pXG4gIC8vICAgICAgIC8vICksXG4gIC8vICAgICAgIHRoaXMuJChnby5QYW5lbCwge1xuICAvLyAgICAgICAgIGFsaWdubWVudDogbmV3IGdvLlNwb3QoMCwgMCwgMCwgLTUwKSxcbiAgLy8gICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Ub3AsXG4gIC8vICAgICAgICAgcG9ydElkOiAnT3V0RmxvdycsXG4gIC8vICAgICAgICAgY3Vyc29yOiB0aGlzLl9pbml0aWFsT3B0aW9ucy5pc1JlYWRPbmx5ID8gJycgOiAncG9pbnRlcicsXG4gIC8vICAgICAgICAgZnJvbVNwb3Q6IGdvLlNwb3QuQ2VudGVyLFxuICAvLyAgICAgICAgIHRvU3BvdDogZ28uU3BvdC5SaWdodCxcbiAgLy8gICAgICAgICBmcm9tTGlua2FibGU6IHRydWUsXG4gIC8vICAgICAgICAgdG9MaW5rYWJsZTogdHJ1ZSxcbiAgLy8gICAgICAgfSlcbiAgLy8gICAgIClcbiAgLy8gICApO1xuXG4gIC8vICAgdGhpcy5teURpYWdyYW0uZ3JvdXBUZW1wbGF0ZU1hcC5zZXQodGl0bGUsIG5vZGUpO1xuICAvLyB9XG5cbiAgZ3JvdXBQbGFudENlbGxUZW1wbGF0ZShcbiAgICBpY29uLFxuICAgIHRpdGxlLFxuICAgIHNpemU6IHsgdzogbnVtYmVyOyBoOiBudW1iZXIgfSA9IHsgdzogODAsIGg6IDgwIH1cbiAgKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgbGV0IG5vZGUgPSB0aGlzLiQoXG4gICAgICBnby5Hcm91cCxcbiAgICAgICdTcG90JyxcbiAgICAgIHtcbiAgICAgICAgLy8gbGF5b3V0OiB0aGlzLiQoZ28uTGF5b3V0KSxcbiAgICAgICAgLy8gbGF5b3V0OiB0aGlzLiQoZ28uTGF5ZXJlZERpZ3JhcGhMYXlvdXQsIHsgZGlyZWN0aW9uOiAwIH0pLFxuICAgICAgICAvLyBpc1N1YkdyYXBoRXhwYW5kZWQ6IGZhbHNlLFxuICAgICAgICAvLyBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAvLyBsYXllck5hbWU6ICdGb3JlZ3JvdW5kJyxcbiAgICAgICAgLy8gd2FzU3ViR3JhcGhFeHBhbmRlZDogZmFsc2UsXG4gICAgICAgIG1vdmFibGU6IGZhbHNlLFxuICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcbiAgICAgICAgYXZvaWRhYmxlOiBmYWxzZSxcbiAgICAgICAgLy8gcmVzaXphYmxlOiB0cnVlLFxuXG4gICAgICAgIC8vIHJlc2l6YWJsZTogZmFsc2UsXG4gICAgICAgIC8vIHdpZHRoOiBkYXRhPy5vYj8ubWluV2l0aCA/PyA1MCxcbiAgICAgICAgLy8gaGVpZ2h0OiA1MDAsXG5cbiAgICAgICAgLy8gaXNTdWJHcmFwaEV4cGFuZGVkOiB0cnVlLCAvLyBlbnN1cmUgdGhlIGdyb3VwIGlzIGFsd2F5cyBleHBhbmRlZFxuICAgICAgICAvLyBjb21wdXRlc0JvdW5kc0FmdGVyRHJhZzogdHJ1ZSxcbiAgICAgICAgLy8gaGFuZGxlc0RyYWdEcm9wRm9yTWVtYmVyczogdHJ1ZSwgLy8gaGFuZGxlIGRyYWctYW5kLWRyb3AgZXZlbnRzIGZvciBpdHMgbWVtYmVyIG5vZGVzXG5cbiAgICAgICAgLy8gbWF4U2l6ZTogbmV3IGdvLlNpemUoNTAwLCA1MDApLFxuICAgICAgICAvLyBtaW5TaXplOiBuZXcgZ28uU2l6ZSg1MDAsIDUwMCksXG5cbiAgICAgICAgLy8gaXNTdWJHcmFwaEV4cGFuZGVkOiB0cnVlLFxuICAgICAgICAvLyBsYXllck5hbWU6IERJQUdSQU0uTEFZRVJTLkJBQ0tHUk9VTkQsXG5cbiAgICAgICAgLy8gbW91c2VEcm9wOiBmdW5jdGlvbiAoZSwgZ3JwKSB7XG4gICAgICAgIC8vICAgICAvLyBkaXNhbGxvdyBkcm9wcGluZyBhbnl0aGluZyBvbnRvIGFuIEFkb3JubWVudFxuICAgICAgICAvLyAgICAgaWYgKGdycCBpbnN0YW5jZW9mIGdvLkFkb3JubWVudCkgcmV0dXJuO1xuICAgICAgICAvLyB9LFxuICAgICAgICAvLyBkcmFnQ29tcHV0YXRpb246IGZ1bmN0aW9uIChub2RlLCBwdCwgZ3JpZFB0KSB7XG4gICAgICAgIC8vICAgICBsZXQgZ3JwID0gbm9kZS5jb250YWluaW5nR3JvdXA7XG4gICAgICAgIC8vICAgICBpZiAoZ3JwICE9PSBudWxsKSB7XG4gICAgICAgIC8vICAgICAgICAgbGV0IHJlY3QgPSBncnAuYWN0dWFsQm91bmRzO1xuICAgICAgICAvLyAgICAgICAgIHB0LnggPSBNYXRoLm1heChyZWN0LmxlZnQsIE1hdGgubWluKHB0LngsIHJlY3QucmlnaHQpKTtcbiAgICAgICAgLy8gICAgICAgICBwdC55ID0gTWF0aC5tYXgocmVjdC50b3AsIE1hdGgubWluKHB0LnksIHJlY3QuYm90dG9tKSk7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vICAgICByZXR1cm4gcHQ7XG4gICAgICAgIC8vIH0sXG5cbiAgICAgICAgLy8gZHJvcENvbXB1dGF0aW9uOiBmdW5jdGlvbiAobm9kZSwgcHQsIGdyaWRQdCkge1xuICAgICAgICAvLyAgICAgbGV0IGdycCA9IG5vZGUuY29udGFpbmluZ0dyb3VwO1xuICAgICAgICAvLyAgICAgaWYgKGdycCAhPT0gbnVsbCkge1xuICAgICAgICAvLyAgICAgICAgIGxldCByZWN0ID0gZ3JwLmFjdHVhbEJvdW5kcztcbiAgICAgICAgLy8gICAgICAgICBwdC54ID0gTWF0aC5tYXgocmVjdC5sZWZ0LCBNYXRoLm1pbihwdC54LCByZWN0LnJpZ2h0KSk7XG4gICAgICAgIC8vICAgICAgICAgcHQueSA9IE1hdGgubWF4KHJlY3QudG9wLCBNYXRoLm1pbihwdC55LCByZWN0LmJvdHRvbSkpO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgICAgcmV0dXJuIHB0O1xuICAgICAgICAvLyB9LFxuXG4gICAgICAgIC8vIGRyYWdDb21wdXRhdGlvbjogZnVuY3Rpb24gKHBhcnQsIHB0LCBncmlkcHQpIHtcbiAgICAgICAgLy8gICAgIC8vIEdldCB0aGUgY3VycmVudCBncm91cCdzIGFjdHVhbCBib3VuZHNcbiAgICAgICAgLy8gICAgIGNvbnN0IGdycCA9IHBhcnQuY29udGFpbmluZ0dyb3VwO1xuICAgICAgICAvLyAgICAgaWYgKGdycCkge1xuICAgICAgICAvLyAgICAgICAgIGNvbnN0IGJuZHMgPSBncnAuYWN0dWFsQm91bmRzO1xuICAgICAgICAvLyAgICAgICAgIGNvbnN0IGxvYyA9IHBhcnQubG9jYXRpb247XG5cbiAgICAgICAgLy8gICAgICAgICAvLyBTZWUgaWYgdGhlIHBhcnQncyBuZXcgbG9jYXRpb24gd291bGQgYmUgb3V0IG9mIGJvdW5kc1xuICAgICAgICAvLyAgICAgICAgIGNvbnN0IG5ld3ggPSBNYXRoLm1heChibmRzLngsIE1hdGgubWluKHB0LngsIGJuZHMucmlnaHQgLSBwYXJ0LmFjdHVhbEJvdW5kcy53aWR0aCAvIDIpKTtcbiAgICAgICAgLy8gICAgICAgICBjb25zdCBuZXd5ID0gTWF0aC5tYXgoYm5kcy55LCBNYXRoLm1pbihwdC55LCBibmRzLmJvdHRvbSAtIHBhcnQuYWN0dWFsQm91bmRzLmhlaWdodCAvIDIpKTtcblxuICAgICAgICAvLyAgICAgICAgIC8vIE1vZGlmeSB0aGUgcmVzdWx0IHBvaW50IHRvIGtlZXAgdGhlIFBhcnQgaW5zaWRlIHRoZSBHcm91cFxuICAgICAgICAvLyAgICAgICAgIHJldHVybiBuZXcgZ28uUG9pbnQobmV3eCwgbmV3eSk7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vICAgICByZXR1cm4gcHQ7XG4gICAgICAgIC8vIH0sXG4gICAgICAgIGNsaWNrOiAoZSwgb2JqOiBhbnkpID0+IHtcbiAgICAgICAgICBzZWxmLm15RGlhZ3JhbT8uY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIG1vdXNlRHJhZ0VudGVyOiAoZSwgIG9iaikgPT4ge1xuICAgICAgICAvLyB9LFxuICAgICAgICAvLyBtb3VzZURyb3A6IChlLCAgb2JqKSA9PiB7XG4gICAgICAgIC8vIH0sXG4gICAgICAgIC8vIG1vdXNlRW50ZXI6IChlLCBvYmopID0+IHtcbiAgICAgICAgLy8gICAgIGNvbnN0IG5vZGUgPSBvYmoucGFydDtcbiAgICAgICAgLy8gICAgIHNlbGYub25Ib3ZlckluZm9CdXR0b24uZW1pdCh7XG4gICAgICAgIC8vICAgICAgICAgbGVmdDogZT8uWydXciddPy54ICsgOCxcbiAgICAgICAgLy8gICAgICAgICB0b3A6IGU/LlsnV3InXT8ueSxcbiAgICAgICAgLy8gICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAvLyAgICAgfSk7XG4gICAgICAgIC8vICAgICAvLyBsZXQgc2hhcGUgPSAobm9kZSBhcyBhbnkpPy5maW5kT2JqZWN0KCdTSEFQRV9LRVknKTtcbiAgICAgICAgLy8gICAgIC8vIGlmIChzaGFwZSkge1xuICAgICAgICAvLyAgICAgLy8gICAgIHNoYXBlLnN0cm9rZSA9ICdibHVlJztcbiAgICAgICAgLy8gICAgIC8vIH1cbiAgICAgICAgLy8gfSxcbiAgICAgICAgLy8gbW91c2VMZWF2ZTogKGUsIG9iaikgPT4ge1xuICAgICAgICAvLyAgICAgc2VsZi5vbkhvdmVySW5mb0J1dHRvbi5lbWl0KG51bGwpO1xuICAgICAgICAvLyAgICAgLy8gbGV0IHNoYXBlID0gKG5vZGUgYXMgYW55KT8uZmluZE9iamVjdCgnU0hBUEVfS0VZJyk7XG4gICAgICAgIC8vICAgICAvLyBpZiAoc2hhcGUpIHtcbiAgICAgICAgLy8gICAgIC8vICAgICBzaGFwZS5zdHJva2UgPSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuV0hJVEU7XG4gICAgICAgIC8vICAgICAvLyB9XG4gICAgICAgIC8vIH0sXG4gICAgICB9LFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xheW91dCcsICcnLCBmdW5jdGlvbiAoZGF0YSwgbm9kZSkge1xuICAgICAgICAvLyByZXR1cm4gZGF0YT8ubGF5b3V0VmFsdWUgPT09IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0xBWU9VVF9FRElUT1IuQVVUT1xuICAgICAgICAvLyAgICAgPyBzZWxmLiQoZ28uTGF5ZXJlZERpZ3JhcGhMYXlvdXQsIHsgZGlyZWN0aW9uOiAwIH0pXG4gICAgICAgIC8vICAgICA6IG5vZGU/LmxheW91dDtcbiAgICAgICAgaWYgKGRhdGE/LmxheW91dFZhbHVlICE9PSBkYXRhPy5sYXlvdXRWYWx1ZUNsb25lKSB7XG4gICAgICAgICAgZGF0YS5sYXlvdXRWYWx1ZUNsb25lID0gZGF0YT8ubGF5b3V0VmFsdWU7XG4gICAgICAgICAgcmV0dXJuIGRhdGE/LmxheW91dFZhbHVlID09PVxuICAgICAgICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fTEFZT1VUX0VESVRPUi5BVVRPXG4gICAgICAgICAgICA/IHNlbGYuJChnby5MYXllcmVkRGlncmFwaExheW91dCwgeyBkaXJlY3Rpb246IDAgfSlcbiAgICAgICAgICAgIDogc2VsZi4kKGdvLkxheW91dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGU/LmxheW91dDtcbiAgICAgICAgfVxuICAgICAgICAvLyA6IHNlbGYuJChnby5MYXlvdXQpO1xuICAgICAgICAvLyByZXR1cm4gZGF0YT8ubGF5b3V0O1xuICAgICAgICAvLyByZXR1cm4gZGF0YT8ucHJldmlvdXNMYXlvdXQgfHwgc2VsZi4kKGdvLkxheWVyZWREaWdyYXBoTGF5b3V0LCB7IGRpcmVjdGlvbjogMCB9KTtcbiAgICAgICAgLy8gcmV0dXJuIHNlbGYuJChnby5MYXllcmVkRGlncmFwaExheW91dCwgeyBkaXJlY3Rpb246IDAgfSk7XG4gICAgICB9KSxcbiAgICAgIC8vIG5ldyBnby5CaW5kaW5nKCdncmlkJywgJ2dyaWQnKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdzZWxlY3RhYmxlJywgJ3NlbGVjdGFibGUnKSxcbiAgICAgIC8vIG5ldyBnby5CaW5kaW5nKCd3aWR0aCcsICcnLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgLy8gICAgIHJldHVybiBkYXRhPy5vYj8ubWluV2l0aCA/PyA1MDtcbiAgICAgIC8vIH0pLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ21pblNpemUnLCAnJywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBnby5TaXplKGRhdGE/Lm9iPy5taW5XaXRoID8/IDUwLCBkYXRhPy5vYj8ubWluSGVpZ2h0ID8/IDUwKTsgLy8gQ3VzdG9taXplIG1pblNpemUgYmFzZWQgb24gZGF0YVxuICAgICAgfSkub2ZPYmplY3QoKSxcbiAgICAgIC8vIG5ldyBnby5CaW5kaW5nKCd3aWR0aCcsICcnLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgLy8gICAgIHJldHVybiBkYXRhPy5vYj8ubWluV2l0aCA/PyA1MDsgLy8gQ3VzdG9taXplIG1pblNpemUgYmFzZWQgb24gZGF0YVxuICAgICAgLy8gfSkub2ZPYmplY3QoKSxcbiAgICAgIC8vIG5ldyBnby5CaW5kaW5nKCdoZWlnaHQnLCAnJywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIC8vICAgICByZXR1cm4gZGF0YT8ub2I/Lm1pbkhlaWdodCA/PyA1MDsgLy8gQ3VzdG9taXplIG1pblNpemUgYmFzZWQgb24gZGF0YVxuICAgICAgLy8gfSkub2ZPYmplY3QoKSxcbiAgICAgIG5ldyBnby5CaW5kaW5nKCdsb2NhdGlvbicsICdsb2MnLCBnby5Qb2ludC5wYXJzZSkubWFrZVR3b1dheShcbiAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICApLFxuICAgICAgLy8gbmV3IGdvLkJpbmRpbmcoJ2lzU3ViR3JhcGhFeHBhbmRlZCcsICdleHBhbmRlZCcpLm1ha2VUd29XYXkoKSxcbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAge1xuICAgICAgICAgIHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCksXG4gICAgICAgICAgLy8gbWFyZ2luOm5ldyBnby5NYXJnaW4oMCwgNTAsIDAsIDUwKSxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnUm91bmRlZFJlY3RhbmdsZScsIHtcbiAgICAgICAgICBuYW1lOiAnU0hBUEVfS0VZJyxcbiAgICAgICAgICBmaWxsOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLlJFU09MVVRJT05fQkxVRSxcbiAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMuJChnby5QbGFjZWhvbGRlciwgeyBwYWRkaW5nOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDApIH0pXG4gICAgICApXG4gICAgKTtcblxuICAgIC8vIG5vZGUubWVtYmVyVmFsaWRhdGlvbiA9IGZ1bmN0aW9uIChub2RlLCBncm91cCkge1xuICAgIC8vICAgICBpZiAoIWdyb3VwKSByZXR1cm4gdHJ1ZTsgLy8gYWxsb3cgdW5ncm91cGluZ1xuICAgIC8vICAgICBjb25zdCBncm91cEJvdW5kcyA9IGdyb3VwLmFjdHVhbEJvdW5kcztcbiAgICAvLyAgICAgY29uc3Qgbm9kZUJvdW5kcyA9IG5vZGUuYWN0dWFsQm91bmRzO1xuICAgIC8vICAgICByZXR1cm4gZ3JvdXBCb3VuZHMuY29udGFpbnNSZWN0KG5vZGVCb3VuZHMpO1xuICAgIC8vIH07XG4gICAgdGhpcy5teURpYWdyYW0uZ3JvdXBUZW1wbGF0ZU1hcC5zZXQodGl0bGUsIG5vZGUpO1xuICB9XG5cbiAgZ3JvdXBQQ0lucHV0T3JPdXRUZW1wbGF0ZShpY29uLCB0aXRsZSwgcGFkZGluZzogZ28uTWFyZ2luKSB7XG4gICAgLy8gbGV0IG5vZGUgPSB0aGlzLiQoXG4gICAgLy8gICAgIGdvLkdyb3VwLFxuICAgIC8vICAgICAnU3BvdCcsXG4gICAgLy8gICAgIHtcbiAgICAvLyAgICAgICAgIGxheW91dDogdGhpcy4kKGdvLkxheW91dCksXG4gICAgLy8gICAgICAgICBtb3ZhYmxlOiBmYWxzZSxcbiAgICAvLyAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxuICAgIC8vICAgICB9LFxuICAgIC8vICAgICAvLyB7XG4gICAgLy8gICAgIC8vICAgICAvLyBtaW5TaXplOiBuZXcgZ28uU2l6ZSg1MDAsIDUwMCksXG4gICAgLy8gICAgIC8vICAgICBtb3ZhYmxlOiBmYWxzZSxcbiAgICAvLyAgICAgLy8gICAgIGFyaWFSZWFkT25seTogdHJ1ZSxcbiAgICAvLyAgICAgLy8gfSxcbiAgICAvLyAgICAgdGhpcy4kKFxuICAgIC8vICAgICAgICAgZ28uUGFuZWwsXG4gICAgLy8gICAgICAgICAnQXV0bycsXG4gICAgLy8gICAgICAgICB7XG4gICAgLy8gICAgICAgICAgICAgcGFkZGluZzogbmV3IGdvLk1hcmdpbigwLCAwLCAwLCAwKSxcbiAgICAvLyAgICAgICAgIH0sXG4gICAgLy8gICAgICAgICB0aGlzLiQoZ28uU2hhcGUsICdSb3VuZGVkUmVjdGFuZ2xlJywge1xuICAgIC8vICAgICAgICAgICAgIGZpbGw6ICd0cmFuc3BhcmVudCcsXG4gICAgLy8gICAgICAgICAgICAgLy8gc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuUkVTT0xVVElPTl9CTFVFLFxuICAgIC8vICAgICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLldISVRFLFxuICAgIC8vICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgIC8vICAgICAgICAgICAgIHN0cm9rZURhc2hBcnJheTogWzUsIDVdLFxuICAgIC8vICAgICAgICAgfSksXG4gICAgLy8gICAgICAgICB0aGlzLiQoZ28uUGxhY2Vob2xkZXIsIHtcbiAgICAvLyAgICAgICAgICAgICBwYWRkaW5nOiBuZXcgZ28uTWFyZ2luKDAsIDAsIDAsIDApLFxuICAgIC8vICAgICAgICAgfSksXG4gICAgLy8gICAgICksXG4gICAgLy8gKTtcbiAgICBsZXQgbm9kZSA9IHRoaXMuJChcbiAgICAgIGdvLkdyb3VwLFxuICAgICAgJ1Nwb3QnLFxuICAgICAge1xuICAgICAgICBsYXlvdXQ6IHRoaXMuJChnby5MYXllcmVkRGlncmFwaExheW91dCwgeyBkaXJlY3Rpb246IDAgfSksXG4gICAgICAgIG1vdmFibGU6IGZhbHNlLFxuICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcbiAgICAgICAgYXZvaWRhYmxlOiBmYWxzZSxcbiAgICAgICAgLy8gaXNTdWJHcmFwaEV4cGFuZGVkOiBmYWxzZSxcbiAgICAgICAgLy8gaXNTdWJHcmFwaEV4cGFuZGVkOiBmYWxzZSxcbiAgICAgICAgLy8gbGF5ZXJOYW1lOiAnRm9yZWdyb3VuZCcsXG4gICAgICB9LFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgICksXG4gICAgICB0aGlzLiQoXG4gICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAnQXV0bycsXG4gICAgICAgIHtcbiAgICAgICAgICBwYWRkaW5nOiBwYWRkaW5nID8/IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCksXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ1JvdW5kZWRSZWN0YW5nbGUnLCB7XG4gICAgICAgICAgZmlsbDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5XSElURSxcbiAgICAgICAgICAvLyBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5BTElaQVJJTixcbiAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICAvLyBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMuJChnby5QbGFjZWhvbGRlciwge1xuICAgICAgICAgIHBhZGRpbmc6IG5ldyBnby5NYXJnaW4oMCwgMCwgMCwgMCksXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLm15RGlhZ3JhbS5ncm91cFRlbXBsYXRlTWFwLnNldCh0aXRsZSwgbm9kZSk7XG4gIH1cblxuICBtYWtlR3JvdXBab25lVGVtcGxhdGUoXG4gICAgc2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9ID0ge1xuICAgICAgdzogQXRvR29qc0VkaXRvck1vZGVsLkdSSURfU0laRSAqIDE0LFxuICAgICAgaDogQXRvR29qc0VkaXRvck1vZGVsLkdSSURfU0laRSAqIDUsXG4gICAgfVxuICApIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBsZXQgbm9kZSA9IHRoaXMuJChcbiAgICAgIGdvLkdyb3VwLFxuICAgICAgJ1ZlcnRpY2FsJyxcbiAgICAgIHtcbiAgICAgICAgbGF5b3V0OiB0aGlzLiQoZ28uR3JpZExheW91dCwge1xuICAgICAgICAgIHdyYXBwaW5nQ29sdW1uOiAxLFxuICAgICAgICAgIHNwYWNpbmc6IG5ldyBnby5TaXplKDAsIDApLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG5cbiAgICAgIHtcbiAgICAgICAgbG9jYXRpb25TcG90OiBnby5TcG90LkNlbnRlcixcbiAgICAgICAgbW91c2VPdmVyOiBmdW5jdGlvbiAoZSwgb2JqKSB7XG4gICAgICAgICAgLy8gc2VsZi5zaG93UG9pbnQob2JqPy5wYXJ0Py5sb2NhdGlvbik7XG4gICAgICAgIH0sXG4gICAgICAgIGNsaWNrOiAoZSwgb2JqOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAob2JqPy5kYXRhPy5vblNlbGVjdGVkKSB7XG4gICAgICAgICAgICBvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQob2JqPy5kYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNlbGVjdGlvbkNoYW5nZWQ6IChlKSA9PiB7XG4gICAgICAgICAgaWYgKCFlLmlzU2VsZWN0ZWQgJiYgZT8uZGF0YT8ub25TZWxlY3RlZCkge1xuICAgICAgICAgICAgZT8uZGF0YT8ub25TZWxlY3RlZChudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgc2VsZWN0aW9uQWRvcm5tZW50VGVtcGxhdGU6IHRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6IHRoaXMuJChcbiAgICAgICAgICAgICAgZ28uQWRvcm5tZW50LFxuICAgICAgICAgICAgICAnU3BvdCcsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaGFkb3dWaXNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNoYWRvd0JsdXI6IDYsXG4gICAgICAgICAgICAgICAgc2hhZG93T2Zmc2V0OiBuZXcgZ28uUG9pbnQoMCwgMiksXG4gICAgICAgICAgICAgICAgc2hhZG93Q29sb3I6ICcjMDAwMDAwMjknLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgICAgICAgJ0F1dG8nLFxuICAgICAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwge1xuICAgICAgICAgICAgICAgICAgZmlsbDogbnVsbCxcbiAgICAgICAgICAgICAgICAgIHN0cm9rZTogJ2RvZGdlcmJsdWUnLFxuICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDQsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGhpcy4kKGdvLlBsYWNlaG9sZGVyLCB7IHBhZGRpbmc6IDMgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgICAgICdIb3Jpem9udGFsJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuVG9wUmlnaHQsXG4gICAgICAgICAgICAgICAgICBhbGlnbm1lbnRGb2N1czogZ28uU3BvdC5Cb3R0b20sXG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAnd2hpdGUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgICAgJ0J1dHRvbicsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIF9kcmFnRGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5URVhUX05PREUsXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogMCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLkJMVUUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNsaWNrOiBzZWxmLmFkZEl0ZW1Pbkdyb3VwWm9uZSwgLy8gZGVmaW5lZCBiZWxvdywgdG8gc3VwcG9ydCBhIGNsaWNrIG9uIHRoZSBidXR0b25cbiAgICAgICAgICAgICAgICAgICAgJ0J1dHRvbkJvcmRlci5zdHJva2VXaWR0aCc6IDAsXG4gICAgICAgICAgICAgICAgICAgICdCdXR0b25Cb3JkZXIuZmlsbCc6ICd3aGl0ZScsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICdcXHVmMDU1JyxcbiAgICAgICAgICAgICAgICAgICAgZm9udDogJzIwcHggXCJGb250IEF3ZXNvbWUgNiBQcm9cIicsXG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBzdHJva2U6ICcjMmMyYzJjJyxcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAvLyBtb3JlXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUFjdGlvbkdyb3VwKFtcbiAgICAgICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5SRU5BTUUsXG4gICAgICAgICAgICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREVUQUlMUyxcbiAgICAgICAgICAgICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5PVVRGTE9XLFxuICAgICAgICAgICAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLkRFTEVURSxcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIC8vIHRoaXMuJChcbiAgICAgICAgICAgICAgICAvLyAgICAgLy8gRWRpdCBUZXh0XG4gICAgICAgICAgICAgICAgLy8gICAgICdCdXR0b24nLFxuICAgICAgICAgICAgICAgIC8vICAgICB7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgICBjbGljazogc2VsZi5lZGl0VGV4dEdyb3VwWm9uZSxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICdCdXR0b25Cb3JkZXIuc3Ryb2tlV2lkdGgnOiAwLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgJ0J1dHRvbkJvcmRlci5maWxsJzogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICAvLyAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywge1xuICAgICAgICAgICAgICAgIC8vICAgICAgICAgbWFyZ2luOiA0LFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgdGV4dDogJ1xcdWUxYmYnLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgZm9udDogJzIwcHggXCJGb250IEF3ZXNvbWUgNiBQcm9cIicsXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIHN0cm9rZTogJyMyYzJjMmMnLFxuICAgICAgICAgICAgICAgIC8vICAgICB9KSxcbiAgICAgICAgICAgICAgICAvLyApLFxuICAgICAgICAgICAgICAgIC8vIHRoaXMuJChcbiAgICAgICAgICAgICAgICAvLyAgICAgLy8gT3BlbiBEZXRhaWxcbiAgICAgICAgICAgICAgICAvLyAgICAgJ0J1dHRvbicsXG4gICAgICAgICAgICAgICAgLy8gICAgIHtcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIGNsaWNrOiAoZSwgb2JqOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICBjb25zdCBub2RlID0gb2JqLnBhcnQ7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgc2VsZi5vbk9wZW5EZXRhaWwuZW1pdCh7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgJ0J1dHRvbkJvcmRlci5zdHJva2VXaWR0aCc6IDAsXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAnQnV0dG9uQm9yZGVyLmZpbGwnOiAnd2hpdGUnLFxuICAgICAgICAgICAgICAgIC8vICAgICB9LFxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuJChnby5UZXh0QmxvY2ssIHtcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIG1hcmdpbjogNCxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIHRleHQ6ICdcXHVlNDlhJyxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIGZvbnQ6ICcyMHB4IFwiRm9udCBBd2Vzb21lIDYgUHJvXCInLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgLy8gICAgIH0pLFxuICAgICAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICAgICAgLy8gIXRoaXMuX2luaXRpYWxPcHRpb25zLmlzUmVhZE9ubHlcbiAgICAgICAgICAgICAgICAvLyAgICAgPyB0aGlzLiQoXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICdCdXR0b24nLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICBhY3Rpb25Nb3ZlOiBzZWxmLmRyYWdOZXdOb2RlLCAvLyBkZWZpbmVkIGJlbG93LCB0byBzdXBwb3J0IGRyYWdnaW5nIGZyb20gdGhlIGJ1dHRvblxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgX2RyYWdEYXRhOiB7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgdHlwZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlRFWFRfTk9ERSxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICBuYW1lOiAwLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgIGNvbG9yOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuQkxVRSxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICBjbGljazogc2VsZi5jbGlja05ld05vZGUsIC8vIGRlZmluZWQgYmVsb3csIHRvIHN1cHBvcnQgYSBjbGljayBvbiB0aGUgYnV0dG9uXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAnQnV0dG9uQm9yZGVyLnN0cm9rZVdpZHRoJzogMCxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICdCdXR0b25Cb3JkZXIuZmlsbCc6ICd3aGl0ZScsXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgIHRoaXMuJChnby5UZXh0QmxvY2ssIHtcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgIG1hcmdpbjogNCxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgIHRleHQ6ICdcXHVlMTU3JyxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgIGZvbnQ6ICcyMHB4IFwiRm9udCBBd2Vzb21lIDYgUHJvXCInLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICBzdHJva2U6ICcjMmMyYzJjJyxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgLy8gICAgICAgKVxuICAgICAgICAgICAgICAgIC8vICAgICA6IHt9LFxuXG4gICAgICAgICAgICAgICAgLy8gdGhpcy4kKFxuICAgICAgICAgICAgICAgIC8vICAgICAnQnV0dG9uJyxcbiAgICAgICAgICAgICAgICAvLyAgICAge1xuICAgICAgICAgICAgICAgIC8vICAgICAgICAgY2xpY2s6IHNlbGYuZGVsZXRlTm9kZSxcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICdCdXR0b25Cb3JkZXIuc3Ryb2tlV2lkdGgnOiAwLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgJ0J1dHRvbkJvcmRlci5maWxsJzogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICAvLyAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywge1xuICAgICAgICAgICAgICAgIC8vICAgICAgICAgbWFyZ2luOiA0LFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgdGV4dDogJ1xcdWYyZWQnLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgZm9udDogJzIwcHggXCJGb250IEF3ZXNvbWUgNiBQcm9cIicsXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAvLyAgICAgfSksXG4gICAgICAgICAgICAgICAgLy8gKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgIH0sXG5cbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnUm91bmRlZFJlY3RhbmdsZScsIHtcbiAgICAgICAgICBmaWxsOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgIHN0cm9rZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fQ09MT1JTLlJFU09MVVRJT05fQkxVRSxcbiAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncsIE5hTiksXG4gICAgICAgIH0pLFxuICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuVG9wLFxuICAgICAgICAgICAgcGFkZGluZzogbmV3IGdvLk1hcmdpbigxNywgMTAsIDE2LCAxMCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHJvdzogMCxcbiAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDUsIDAsIDEwLCAwKSxcbiAgICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgIGRlc2lyZWRTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgMjUpLFxuICAgICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5OSUdIVF9SSURFUixcbiAgICAgICAgICAgICAgZm9udDogJ2JvbGQgMTZweCBBcmlhbCcsXG4gICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIHdyYXA6IGdvLlRleHRCbG9jay5Ob25lLFxuICAgICAgICAgICAgICBvdmVyZmxvdzogZ28uVGV4dEJsb2NrLk92ZXJmbG93RWxsaXBzaXMsXG4gICAgICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICAgICAnVG9vbFRpcCcsXG4gICAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpLm1ha2VUd29XYXkoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0aGlzLiQoZ28uUGxhY2Vob2xkZXIsICdWZXJ0aWNhbCcsIHtcbiAgICAgICAgICAgIHJvdzogMSxcbiAgICAgICAgICB9KVxuICAgICAgICApLFxuXG4gICAgICAgIHRoaXMubWFrZVBvcnQoJ1QnLCBnby5TcG90LlRvcCwgZ28uU3BvdC5Ub3BTaWRlLCBmYWxzZSwgdHJ1ZSksXG4gICAgICAgIHRoaXMubWFrZVBvcnQoJ0wnLCBnby5TcG90LkxlZnQsIGdvLlNwb3QuTGVmdFNpZGUsIHRydWUsIHRydWUpLFxuICAgICAgICB0aGlzLm1ha2VQb3J0KCdSJywgZ28uU3BvdC5SaWdodCwgZ28uU3BvdC5SaWdodFNpZGUsIHRydWUsIHRydWUpLFxuICAgICAgICB0aGlzLm1ha2VQb3J0KCdCJywgZ28uU3BvdC5Cb3R0b20sIGdvLlNwb3QuQm90dG9tU2lkZSwgdHJ1ZSwgZmFsc2UpXG4gICAgICApLFxuICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMubXlEaWFncmFtLmdyb3VwVGVtcGxhdGVNYXAuc2V0KFxuICAgICAgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlpPTkUsXG4gICAgICBub2RlXG4gICAgKTtcbiAgfVxuXG4gIG1ha2Vab25lSXRlbVRlbXBsYXRlKFxuICAgIHNpemU6IHsgdzogbnVtYmVyOyBoOiBudW1iZXIgfSA9IHtcbiAgICAgIHc6IEF0b0dvanNFZGl0b3JNb2RlbC5HUklEX1NJWkUgKiAxMixcbiAgICAgIGg6IEF0b0dvanNFZGl0b3JNb2RlbC5HUklEX1NJWkUgKiAyLFxuICAgIH1cbiAgKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuJChcbiAgICAgIGdvLk5vZGUsXG4gICAgICAnQXV0bycsXG4gICAgICAvLyB7XG4gICAgICAvLyAgICAgbW91c2VIb3ZlcjogKGUsIG9iaikgPT4ge1xuICAgICAgLy8gICAgICAgICBjb25zdCBub2RlID0gb2JqLnBhcnQ7XG4gICAgICAvLyAgICAgICAgIGlmICgob2JqIGFzIGFueSkucGFydD8ub2I/LnZhbHVlID09PSBWQUxVRV9OQSkge1xuICAgICAgLy8gICAgICAgICAgICAgc2VsZi5vbkhvdmVySW5mb0J1dHRvbi5lbWl0KHtcbiAgICAgIC8vICAgICAgICAgICAgICAgICBsZWZ0OiBlPy5bJ1dyJ10/LnggKyA4LFxuICAgICAgLy8gICAgICAgICAgICAgICAgIHRvcDogZT8uWydXciddPy55LFxuICAgICAgLy8gICAgICAgICAgICAgICAgIG5vZGU6IG5vZGVcbiAgICAgIC8vICAgICAgICAgICAgIH0pO1xuICAgICAgLy8gICAgICAgICB9XG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICBtb3VzZUxlYXZlOiAoZSwgb2JqKSA9PiB7XG4gICAgICAvLyAgICAgICAgIGlmICgob2JqIGFzIGFueSkucGFydD8ub2I/LnZhbHVlID09PSBWQUxVRV9OQSkge1xuICAgICAgLy8gICAgICAgICAgICAgc2VsZi5vbkhvdmVySW5mb0J1dHRvbi5lbWl0KG51bGwpO1xuICAgICAgLy8gICAgICAgICB9XG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICBjbGljazogKGUsIG9iajogYW55KSA9PiB7XG4gICAgICAvLyAgICAgICAgIGNvbnN0IG5vZGUgPSBvYmoucGFydDtcbiAgICAgIC8vICAgICAgICAgdGhpcy5pc1Nob3dOb2RlSW5mbyA/IHNlbGYub25DbGlja0luZm9CdXR0b24uZW1pdCh7XG4gICAgICAvLyAgICAgICAgICAgICBsZWZ0OiBlPy5bJ1dyJ10/LngsXG4gICAgICAvLyAgICAgICAgICAgICB0b3A6IGU/LlsnV3InXT8ueSxcbiAgICAgIC8vICAgICAgICAgICAgIG5vZGU6IG5vZGVcbiAgICAgIC8vICAgICAgICAgfSkgOiBudWxsO1xuICAgICAgLy8gICAgIH0sXG4gICAgICAvLyB9LFxuICAgICAgLy8gbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KGdvLlBvaW50LnN0cmluZ2lmeSksXG4gICAgICB7XG4gICAgICAgIG1vdmFibGU6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHRoaXMuJChcbiAgICAgICAgZ28uUGFuZWwsXG4gICAgICAgICdBdXRvJyxcbiAgICAgICAge1xuICAgICAgICAgIHdpZHRoOiBzaXplLncsXG4gICAgICAgICAgaGVpZ2h0OiBzaXplLmgsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ1JlY3RhbmdsZScsIHtcbiAgICAgICAgICBmaWxsOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuTElHSFRfQkxVRSxcbiAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5MSU5LX1dBVEVSLFxuICAgICAgICB9KSxcbiAgICAgICAgdGhpcy4kKFxuICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICdWZXJ0aWNhbCcsXG4gICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgcm93OiAyLFxuICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMTAsIDAsIDUsIDApLFxuICAgICAgICAgICAgICBmb250OiAnYm9sZCAxMnB4IEFyaWFsJyxcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuTklHSFRfUklERVIsXG4gICAgICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICAgICAnVG9vbFRpcCcsXG4gICAgICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnbmFtZScpLm1ha2VUd29XYXkoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lJykubWFrZVR3b1dheSgpLFxuICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3Zpc2libGUnLCAnbmFtZScsICh4KSA9PiAhIXgpXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICdIb3Jpem9udGFsJyxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgMTAsIDAsIDEwKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCA1LCAxMCwgMCksXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBmb250OiAnMTJweCBzYW5zLXNlcmlmJyxcbiAgICAgICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5OSUdIVF9SSURFUixcbiAgICAgICAgICAgICAgICB3cmFwOiBnby5UZXh0QmxvY2suV3JhcEZpdCxcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc011bHRpbGluZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgbWF4U2l6ZTogbmV3IGdvLlNpemUoc2l6ZS53IC0gMTAwLCAxNSksXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGdvLlRleHRCbG9jay5PdmVyZmxvd0VsbGlwc2lzLFxuICAgICAgICAgICAgICAgIHRvb2xUaXA6IHRoaXMuJChcbiAgICAgICAgICAgICAgICAgICdUb29sVGlwJyxcbiAgICAgICAgICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgICAgICAgICAgZ28uVGV4dEJsb2NrLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiA0LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndGV4dCcsICduYW1lSXRlbScpLm1ha2VUd29XYXkoKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCd0ZXh0JywgJ25hbWVJdGVtJykubWFrZVR3b1dheSgpLFxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygndmlzaWJsZScsICduYW1lSXRlbScsICh4KSA9PiAhIXgpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5UZXh0QmxvY2ssXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgNSwgMTAsIDApLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgZm9udDogJzEycHggc2Fucy1zZXJpZicsXG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9DT0xPUlMuQ0VSVUxFQU4sXG4gICAgICAgICAgICAgICAgd3JhcDogZ28uVGV4dEJsb2NrLldyYXBGaXQsXG4gICAgICAgICAgICAgICAgdGV4dDogJzwgJyxcbiAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZyhcbiAgICAgICAgICAgICAgICAndmlzaWJsZScsXG4gICAgICAgICAgICAgICAgJ2RhdGEnLFxuICAgICAgICAgICAgICAgICh4KSA9PiB0eXBlb2YgeD8ucXVhbnRpdHkgPT09ICdudW1iZXInXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCA1LCAxMCwgMCksXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBmb250OiAnMTJweCBzYW5zLXNlcmlmJyxcbiAgICAgICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5DRVJVTEVBTixcbiAgICAgICAgICAgICAgICB3cmFwOiBnby5UZXh0QmxvY2suV3JhcEZpdCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ3RleHQnLCAnZGF0YScsICh4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB4Py5xdWFudGl0eSAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkOiBhbnkgPSBVdGlsc1NlcnZpY2UuY29udmVydFByZWZpeGVzRGF0YSh7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogeD8ucXVhbnRpdHksXG4gICAgICAgICAgICAgICAgICB1bml0OiB4Py51bml0LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQuc2hvcnRlbmVkTnVtYmVyICtcbiAgICAgICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkLnVuaXRQcmVmaXhlcyArXG4gICAgICAgICAgICAgICAgICAgIHg/LnVuaXQgPz8gJydcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoXG4gICAgICAgICAgICAgICAgJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgICdkYXRhJyxcbiAgICAgICAgICAgICAgICAoeCkgPT4gdHlwZW9mIHg/LnF1YW50aXR5ID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLlRleHRCbG9jayxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCA1LCAxMCwgMCksXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBmb250OiAnMTJweCBzYW5zLXNlcmlmJyxcbiAgICAgICAgICAgICAgICBzdHJva2U6IEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX0NPTE9SUy5DRVJVTEVBTixcbiAgICAgICAgICAgICAgICB3cmFwOiBnby5UZXh0QmxvY2suV3JhcEZpdCxcbiAgICAgICAgICAgICAgICB0ZXh0OiAnID4nLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZyhcbiAgICAgICAgICAgICAgICAndmlzaWJsZScsXG4gICAgICAgICAgICAgICAgJ2RhdGEnLFxuICAgICAgICAgICAgICAgICh4KSA9PiB0eXBlb2YgeD8ucXVhbnRpdHkgPT09ICdudW1iZXInXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMubXlEaWFncmFtLm5vZGVUZW1wbGF0ZU1hcC5zZXQoXG4gICAgICBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuWk9ORV9FTkVSR1lfSVRFTSxcbiAgICAgIG5vZGVcbiAgICApO1xuICB9XG5cbiAgbWFrZVNwZWNpYWxUZW1wbGF0ZShcbiAgICBpY29uLFxuICAgIHRpdGxlLFxuICAgIHNpemU6IHsgdzogbnVtYmVyOyBoOiBudW1iZXIgfSA9IHtcbiAgICAgIHc6IEF0b0dvanNFZGl0b3JNb2RlbC5HUklEX1NJWkUgKiA1LFxuICAgICAgaDogQXRvR29qc0VkaXRvck1vZGVsLkdSSURfU0laRSAqIDUsXG4gICAgfVxuICApIHtcbiAgICBsZXQgbm9kZTogYW55ID0gbnVsbDtcbiAgICBzd2l0Y2ggKHRpdGxlKSB7XG4gICAgICBjYXNlIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5TUEVDSUFMX1BST0NFU1M6XG4gICAgICAgIG5vZGUgPSB0aGlzLiQoXG4gICAgICAgICAgZ28uTm9kZSxcbiAgICAgICAgICAnU3BvdCcsXG4gICAgICAgICAgLy8ge1xuICAgICAgICAgIC8vICAgICBmcm9tU3BvdDogZ28uU3BvdC5SaWdodCwgIC8vIGNvbWluZyBvdXQgZnJvbSBtaWRkbGUtcmlnaHRcbiAgICAgICAgICAvLyAgICAgdG9TcG90OiBnby5TcG90LkxlZnRcbiAgICAgICAgICAvLyB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsaWNrOiAoZSwgb2JqOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG9iaj8uZGF0YT8ub25TZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIG9iaj8uZGF0YT8ub25TZWxlY3RlZChvYmo/LmRhdGEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZDogKGUpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFlLmlzU2VsZWN0ZWQgJiYgZT8uZGF0YT8ub25TZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIGU/LmRhdGE/Lm9uU2VsZWN0ZWQobnVsbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXcgZ28uQmluZGluZygnbG9jYXRpb24nLCAnbG9jJywgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoXG4gICAgICAgICAgICBnby5Qb2ludC5zdHJpbmdpZnlcbiAgICAgICAgICApLFxuICAgICAgICAgIHRoaXMuJChcbiAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgJ0F1dG8nLFxuICAgICAgICAgICAgeyB3aWR0aDogc2l6ZS53LCBoZWlnaHQ6IHNpemUuaCB9LFxuICAgICAgICAgICAgdGhpcy4kKGdvLlNoYXBlLCAnQ2lyY2xlJywge1xuICAgICAgICAgICAgICBmaWxsOiAnd2hpdGUnLFxuICAgICAgICAgICAgICBzdHJva2U6ICcjMkQzQjc3JyxcbiAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgICAgIC8vIHN0cm9rZURhc2hBcnJheTogWzUsIDVdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgIGdvLlBhbmVsLFxuICAgICAgICAgICAgICAnVGFibGUnLFxuICAgICAgICAgICAgICB0aGlzLiQoZ28uVGV4dEJsb2NrLCBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuUFJPQ0VTUywge1xuICAgICAgICAgICAgICAgIHJvdzogMCxcbiAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMywgMywgMTAsIDMpLFxuICAgICAgICAgICAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDIwLCBOYU4pLFxuICAgICAgICAgICAgICAgIHN0cm9rZTogJyM0NDQ0NDQnLFxuICAgICAgICAgICAgICAgIGZvbnQ6ICdub3JtYWwgMTBwdCBBcmlhbCcsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHRoaXMuJChnby5QaWN0dXJlLCBpY29uLCB7XG4gICAgICAgICAgICAgICAgcm93OiAxLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCAwLCAxMCwgMCksXG4gICAgICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkNlbnRlcixcbiAgICAgICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZSg2MCwgNjApLFxuICAgICAgICAgICAgICAgIGltYWdlU3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVW5pZm9ybSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuXG4gICAgICAgICAgdGhpcy4kKGdvLlBhbmVsLCAnVmVydGljYWwnLCB7XG4gICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuTGVmdCxcbiAgICAgICAgICAgIGFsaWdubWVudEZvY3VzOiBuZXcgZ28uU3BvdCgwLCAwLjUsIDgsIDApLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRoaXMuJChnby5QYW5lbCwgJ1ZlcnRpY2FsJywge1xuICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LlJpZ2h0LFxuICAgICAgICAgICAgYWxpZ25tZW50Rm9jdXM6IG5ldyBnby5TcG90KDEsIDAuNSwgLTgsIDApLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC8vIGZvdXIgbmFtZWQgcG9ydHMsIG9uZSBvbiBlYWNoIHNpZGU6XG5cbiAgICAgICAgICB0aGlzLm1ha2VQb3J0KCdUJywgZ28uU3BvdC5Ub3AsIGdvLlNwb3QuVG9wU2lkZSwgZmFsc2UsIHRydWUpLFxuICAgICAgICAgIHRoaXMubWFrZVBvcnQoJ0wnLCBnby5TcG90LkxlZnQsIGdvLlNwb3QuTGVmdFNpZGUsIHRydWUsIHRydWUpLFxuICAgICAgICAgIHRoaXMubWFrZVBvcnQoJ1InLCBnby5TcG90LlJpZ2h0LCBnby5TcG90LlJpZ2h0U2lkZSwgdHJ1ZSwgdHJ1ZSksXG4gICAgICAgICAgdGhpcy5tYWtlUG9ydCgnQicsIGdvLlNwb3QuQm90dG9tLCBnby5TcG90LkJvdHRvbVNpZGUsIHRydWUsIGZhbHNlKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlNQRUNJQUxfU1RPUkFHRTpcbiAgICAgICAgbm9kZSA9IHRoaXMuJChcbiAgICAgICAgICBnby5Ob2RlLFxuICAgICAgICAgICdTcG90JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGljazogKGUsIG9iajogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQob2JqPy5kYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQ6IChlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghZS5pc1NlbGVjdGVkICYmIGU/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBlPy5kYXRhPy5vblNlbGVjdGVkKG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICAgICAgKSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICdBdXRvJyxcbiAgICAgICAgICAgIHsgd2lkdGg6IHNpemUudywgaGVpZ2h0OiBzaXplLmggfSxcbiAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ0NpcmNsZScsIHtcbiAgICAgICAgICAgICAgZmlsbDogJ3doaXRlJyxcbiAgICAgICAgICAgICAgc3Ryb2tlOiAnIzJEM0I3NycsXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgICAgICAvLyBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlNUT1JBR0UsIHtcbiAgICAgICAgICAgICAgICByb3c6IDAsXG4gICAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDMsIDMsIDEwLCAzKSxcbiAgICAgICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgTmFOKSxcbiAgICAgICAgICAgICAgICBzdHJva2U6ICcjNDQ0NDQ0JyxcbiAgICAgICAgICAgICAgICBmb250OiAnbm9ybWFsIDEwcHQgQXJpYWwnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICAgICAgZ28uUGljdHVyZSxcbiAgICAgICAgICAgICAgICBpY29uLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHJvdzogMSxcbiAgICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCAwLCAxMCwgMCksXG4gICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLFxuICAgICAgICAgICAgICAgICAgbWluU2l6ZTogbmV3IGdvLlNpemUoNDAsIDQwKSxcbiAgICAgICAgICAgICAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKDUwLCA1MCksXG4gICAgICAgICAgICAgICAgICBpbWFnZVN0cmV0Y2g6IGdvLkdyYXBoT2JqZWN0LlVuaWZvcm0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBuZXcgZ28uQmluZGluZygnc291cmNlJywgJ2ljb24nKS5tYWtlVHdvV2F5KClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG5cbiAgICAgICAgICB0aGlzLiQoZ28uUGFuZWwsICdWZXJ0aWNhbCcsIHtcbiAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5MZWZ0LFxuICAgICAgICAgICAgYWxpZ25tZW50Rm9jdXM6IG5ldyBnby5TcG90KDAsIDAuNSwgOCwgMCksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGhpcy4kKGdvLlBhbmVsLCAnVmVydGljYWwnLCB7XG4gICAgICAgICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuUmlnaHQsXG4gICAgICAgICAgICBhbGlnbm1lbnRGb2N1czogbmV3IGdvLlNwb3QoMSwgMC41LCAtOCwgMCksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLy8gZm91ciBuYW1lZCBwb3J0cywgb25lIG9uIGVhY2ggc2lkZTpcblxuICAgICAgICAgIHRoaXMubWFrZVBvcnQoJ1QnLCBnby5TcG90LlRvcCwgZ28uU3BvdC5Ub3BTaWRlLCBmYWxzZSwgdHJ1ZSksXG4gICAgICAgICAgdGhpcy5tYWtlUG9ydCgnTCcsIGdvLlNwb3QuTGVmdCwgZ28uU3BvdC5MZWZ0U2lkZSwgdHJ1ZSwgdHJ1ZSksXG4gICAgICAgICAgdGhpcy5tYWtlUG9ydCgnUicsIGdvLlNwb3QuUmlnaHQsIGdvLlNwb3QuUmlnaHRTaWRlLCB0cnVlLCB0cnVlKSxcbiAgICAgICAgICB0aGlzLm1ha2VQb3J0KCdCJywgZ28uU3BvdC5Cb3R0b20sIGdvLlNwb3QuQm90dG9tU2lkZSwgdHJ1ZSwgZmFsc2UpXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuU1BFQ0lBTF9TVE9SRTpcbiAgICAgICAgbm9kZSA9IHRoaXMuJChcbiAgICAgICAgICBnby5Ob2RlLFxuICAgICAgICAgICdTcG90JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGljazogKGUsIG9iajogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQob2JqPy5kYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQ6IChlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghZS5pc1NlbGVjdGVkICYmIGU/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBlPy5kYXRhPy5vblNlbGVjdGVkKG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICAgICAgKSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICdBdXRvJyxcbiAgICAgICAgICAgIHsgd2lkdGg6IHNpemUudywgaGVpZ2h0OiBzaXplLmggfSxcbiAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ0NpcmNsZScsIHtcbiAgICAgICAgICAgICAgZmlsbDogJ3doaXRlJyxcbiAgICAgICAgICAgICAgc3Ryb2tlOiAnIzJEM0I3NycsXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgICAgICAvLyBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgJ1N0b3JlJywge1xuICAgICAgICAgICAgICAgIHJvdzogMCxcbiAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMywgMywgMTAsIDMpLFxuICAgICAgICAgICAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDIwLCBOYU4pLFxuICAgICAgICAgICAgICAgIHN0cm9rZTogJyM0NDQ0NDQnLFxuICAgICAgICAgICAgICAgIGZvbnQ6ICdub3JtYWwgMTBwdCBBcmlhbCcsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHRoaXMuJChnby5QaWN0dXJlLCBpY29uLCB7XG4gICAgICAgICAgICAgICAgcm93OiAxLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCAwLCAxMCwgMCksXG4gICAgICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkNlbnRlcixcbiAgICAgICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZSg2MCwgNjApLFxuICAgICAgICAgICAgICAgIGltYWdlU3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVW5pZm9ybSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEF0b0dvanNFZGl0b3JNb2RlbC5FTlVNX1RFTVBMQVRFUy5TUEVDSUFMX0RJU0NIQVJHRTpcbiAgICAgICAgbm9kZSA9IHRoaXMuJChcbiAgICAgICAgICBnby5Ob2RlLFxuICAgICAgICAgICdTcG90JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGljazogKGUsIG9iajogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQob2JqPy5kYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQ6IChlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghZS5pc1NlbGVjdGVkICYmIGU/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBlPy5kYXRhPy5vblNlbGVjdGVkKG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICAgICAgKSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICdBdXRvJyxcbiAgICAgICAgICAgIHsgd2lkdGg6IHNpemUudywgaGVpZ2h0OiBzaXplLmggfSxcbiAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ0NpcmNsZScsIHtcbiAgICAgICAgICAgICAgZmlsbDogJ3doaXRlJyxcbiAgICAgICAgICAgICAgc3Ryb2tlOiAnIzJEM0I3NycsXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgICAgICAvLyBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgJ0Rpc2NoYXJnZScsIHtcbiAgICAgICAgICAgICAgICByb3c6IDAsXG4gICAgICAgICAgICAgICAgbWFyZ2luOiBuZXcgZ28uTWFyZ2luKDMsIDMsIDEwLCAzKSxcbiAgICAgICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZShzaXplLncgLSAyMCwgTmFOKSxcbiAgICAgICAgICAgICAgICBzdHJva2U6ICcjNDQ0NDQ0JyxcbiAgICAgICAgICAgICAgICBmb250OiAnbm9ybWFsIDEwcHQgQXJpYWwnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB0aGlzLiQoZ28uUGljdHVyZSwgaWNvbiwge1xuICAgICAgICAgICAgICAgIHJvdzogMSxcbiAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMCwgMCwgMTAsIDApLFxuICAgICAgICAgICAgICAgIGFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIsXG4gICAgICAgICAgICAgICAgbWF4U2l6ZTogbmV3IGdvLlNpemUoNjAsIDYwKSxcbiAgICAgICAgICAgICAgICBpbWFnZVN0cmV0Y2g6IGdvLkdyYXBoT2JqZWN0LlVuaWZvcm0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBBdG9Hb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuU1BFQ0lBTF9PVEhFUjpcbiAgICAgICAgbm9kZSA9IHRoaXMuJChcbiAgICAgICAgICBnby5Ob2RlLFxuICAgICAgICAgICdTcG90JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGljazogKGUsIG9iajogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBvYmo/LmRhdGE/Lm9uU2VsZWN0ZWQob2JqPy5kYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQ6IChlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghZS5pc1NlbGVjdGVkICYmIGU/LmRhdGE/Lm9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBlPy5kYXRhPy5vblNlbGVjdGVkKG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV3IGdvLkJpbmRpbmcoJ2xvY2F0aW9uJywgJ2xvYycsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KFxuICAgICAgICAgICAgZ28uUG9pbnQuc3RyaW5naWZ5XG4gICAgICAgICAgKSxcbiAgICAgICAgICB0aGlzLiQoXG4gICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICdBdXRvJyxcbiAgICAgICAgICAgIHsgd2lkdGg6IHNpemUudywgaGVpZ2h0OiBzaXplLmggfSxcbiAgICAgICAgICAgIHRoaXMuJChnby5TaGFwZSwgJ0NpcmNsZScsIHtcbiAgICAgICAgICAgICAgZmlsbDogJ3doaXRlJyxcbiAgICAgICAgICAgICAgc3Ryb2tlOiAnIzJEM0I3NycsXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgICAgICAvLyBzdHJva2VEYXNoQXJyYXk6IFs1LCA1XSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy4kKFxuICAgICAgICAgICAgICBnby5QYW5lbCxcbiAgICAgICAgICAgICAgJ1RhYmxlJyxcbiAgICAgICAgICAgICAgdGhpcy4kKGdvLlRleHRCbG9jaywgJ090aGVyJywge1xuICAgICAgICAgICAgICAgIHJvdzogMCxcbiAgICAgICAgICAgICAgICBtYXJnaW46IG5ldyBnby5NYXJnaW4oMywgMywgMTAsIDMpLFxuICAgICAgICAgICAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKHNpemUudyAtIDIwLCBOYU4pLFxuICAgICAgICAgICAgICAgIHN0cm9rZTogJyM0NDQ0NDQnLFxuICAgICAgICAgICAgICAgIGZvbnQ6ICdub3JtYWwgMTBwdCBBcmlhbCcsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHRoaXMuJChnby5QaWN0dXJlLCBpY29uLCB7XG4gICAgICAgICAgICAgICAgcm93OiAxLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogbmV3IGdvLk1hcmdpbigwLCAwLCAxMCwgMCksXG4gICAgICAgICAgICAgICAgYWxpZ25tZW50OiBnby5TcG90LkNlbnRlcixcbiAgICAgICAgICAgICAgICBtYXhTaXplOiBuZXcgZ28uU2l6ZSg2MCwgNjApLFxuICAgICAgICAgICAgICAgIGltYWdlU3RyZXRjaDogZ28uR3JhcGhPYmplY3QuVW5pZm9ybSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChub2RlKSB7XG4gICAgICB0aGlzLm15RGlhZ3JhbS5ub2RlVGVtcGxhdGVNYXAuc2V0KHRpdGxlLCBub2RlKTtcbiAgICB9XG4gIH1cblxuICBzdGFydEFuaW1hdGlvbigpIHtcbiAgICBjb25zdCBkaWFncmFtID0gdGhpcy5teURpYWdyYW07XG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgLy8gICAgIGRpYWdyYW0ubGlua3MuZWFjaCgobGluaykgPT4ge1xuICAgIC8vICAgICB9KTtcbiAgICAvLyB9KTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5hbmltYXRpb25JbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgY29uc3Qgb2xkc2tpcHMgPSBkaWFncmFtLnNraXBzVW5kb01hbmFnZXI7XG4gICAgICAgIGRpYWdyYW0uc2tpcHNVbmRvTWFuYWdlciA9IHRydWU7XG5cbiAgICAgICAgZGlhZ3JhbS5saW5rcy5lYWNoKChsaW5rKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2hhcGUgPSBsaW5rLmZpbmRPYmplY3QoJ1BJUEUnKTtcbiAgICAgICAgICBpZiAoISFzaGFwZSkge1xuICAgICAgICAgICAgLy8gY29uc3Qgb2ZmID0gc2hhcGU/LnN0cm9rZURhc2hPZmZzZXQgLSAzO1xuICAgICAgICAgICAgY29uc3Qgb2ZmID0gc2hhcGU/LnN0cm9rZURhc2hPZmZzZXQgLSA5O1xuICAgICAgICAgICAgLy8gYW5pbWF0ZSAobW92ZSkgdGhlIHN0cm9rZSBkYXNoXG4gICAgICAgICAgICBzaGFwZS5zdHJva2VEYXNoT2Zmc2V0ID0gb2ZmIDw9IDAgPyA2MCA6IG9mZjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBkaWFncmFtLnNraXBzVW5kb01hbmFnZXIgPSBvbGRza2lwcztcbiAgICAgIH0sIDYwMCk7XG4gICAgICAvLyA2MFxuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cblxuICBzdG9wQW5pbWF0aW9uKCkge1xuICAgIGlmICh0aGlzLmFuaW1hdGlvbkludGVydmFsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuYW5pbWF0aW9uSW50ZXJ2YWwpO1xuICAgIH1cbiAgfVxuXG4gIHRvRGF0YVVSTCh1cmwsIGNhbGxiYWNrKSB7XG4gICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIub25sb2FkZW5kID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjYWxsYmFjayhyZWFkZXIucmVzdWx0KTtcbiAgICAgIH07XG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTCh4aHIucmVzcG9uc2UpO1xuICAgIH07XG4gICAgeGhyLm9wZW4oJ0dFVCcsIHVybCk7XG4gICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJztcbiAgICB4aHIuc2VuZCgpO1xuICB9XG5cbiAgZ2V0QmFzZTY0RGlhZ3JhbVdpdGhFbXB0eURhdGEoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgLy8gVGVzdFxuICAgIC8vIGNvbnN0IG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKCcnLCAnbmV3V2luZG93Jyk7XG4gICAgLy8gaWYgKCFuZXdXaW5kb3cpIHtcbiAgICAvLyAgICAgcmV0dXJuO1xuICAgIC8vIH1cbiAgICAvLyBjb25zdCBuZXdEb2N1bWVudCA9IG5ld1dpbmRvdz8uZG9jdW1lbnQ7XG4gICAgaWYgKFxuICAgICAgIXRoaXMubXlEaWFncmFtPy5tb2RlbD8ubm9kZURhdGFBcnJheT8ubGVuZ3RoICYmXG4gICAgICAhdGhpcy5teURpYWdyYW0/Lm1vZGVsPy5saW5rRGF0YUFycmF5Py5sZW5ndGhcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdmcgPSB0aGlzLm15RGlhZ3JhbS5tYWtlU3ZnKHtcbiAgICAgIHNjYWxlOiB0aGlzLmRlZmF1bHRTY2FsZVpvb21Ub0ZpdCxcbiAgICAgIG1heFNpemU6IG5ldyBnby5TaXplKDEyMDAsIE5hTiksXG4gICAgICBiYWNrZ3JvdW5kOiAnd2hpdGUnLFxuICAgICAgcGFkZGluZzogMjAsXG4gICAgICBlbGVtZW50RmluaXNoZWQ6IGZ1bmN0aW9uIChncmFwaE9iamVjdCwgc3ZnRWxlbWVudCkge1xuICAgICAgICBzdmdFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnY2xpcC1wYXRoJyk7XG4gICAgICAgIC8vIFJlcGxhY2UgSW1hZ2UgVVJMIHRvIGJhc2U2NCAtPiBGb3Igc2hvd2luZyBQaWN0dXJlIGVsZW1lbnRcbiAgICAgICAgaWYgKGdyYXBoT2JqZWN0IGluc3RhbmNlb2YgZ28uUGljdHVyZSkge1xuICAgICAgICAgIHNlbGYudG9EYXRhVVJMKHN2Z0VsZW1lbnQuaHJlZi5iYXNlVmFsLCBmdW5jdGlvbiAoZGF0YVVybCkge1xuICAgICAgICAgICAgc3ZnRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBkYXRhVXJsKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBNYWtlIFRleHQgTm9kZSBTaGFwZSBCb3JkZXJcbiAgICAgICAgaWYgKGdyYXBoT2JqZWN0Py5uYW1lID09PSAndGV4dE5vZGVTaGFwZScpIHtcbiAgICAgICAgICBzdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgJ3JnYmEoNjQsIDE4MSwgMjA2LCAwLjYpJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRW1wdHkgVmFsdWVcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGdyYXBoT2JqZWN0Py5uYW1lID09PSAndGV4dEJsb2NrVmFsdWUnIHx8XG4gICAgICAgICAgZ3JhcGhPYmplY3Q/Lm5hbWUgPT09ICd0ZXh0QmxvY2tVbml0UHJlZml4ZXMnXG4gICAgICAgICkge1xuICAgICAgICAgIHN2Z0VsZW1lbnQudGV4dENvbnRlbnQgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3ZnRWxlbWVudC5jbGlwUGF0aCkge1xuICAgICAgICAgIHN2Z0VsZW1lbnQuY2xpcFBhdGggPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY2FsbGJhY2s6IChzdmcpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3ZnU3RyID0gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhzdmcpO1xuICAgICAgICAgIC8vIEZvciBUZXN0XG4gICAgICAgICAgLy8gbmV3RG9jdW1lbnQ/LmJvZHk/LmFwcGVuZENoaWxkKHN2Zyk7XG5cbiAgICAgICAgICBjb25zdCBiYXNlNjRTdmcgPSBgZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwke3dpbmRvdy5idG9hKFxuICAgICAgICAgICAgdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHN2Z1N0cikpXG4gICAgICAgICAgKX1gO1xuICAgICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgIGltZy5zcmMgPSBiYXNlNjRTdmc7XG4gICAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgICAgLy8gZ2V0IGNhbnZhcyBjb250ZXh0IGZvciBkcmF3aW5nIG9uIGNhbnZhc1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY29uc3Qgc3ZnV2lkdGggPSBpbWcud2lkdGg7XG4gICAgICAgICAgICBjb25zdCBzdmdIZWlnaHQgPSBpbWcuaGVpZ2h0O1xuXG4gICAgICAgICAgICBjYW52YXMud2lkdGggPSBzdmdXaWR0aDtcbiAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBzdmdIZWlnaHQ7XG5cbiAgICAgICAgICAgIGlmIChjb250ZXh0KSB7XG4gICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltZywgMCwgMCk7XG4gICAgICAgICAgICAgIGNvbnN0IGJhc2U2NFBORyA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnKTtcbiAgICAgICAgICAgICAgc2VsZi5lbWl0SW1hZ2VUb3BvbG9neShcbiAgICAgICAgICAgICAgICBiYXNlNjRQTkcucmVwbGFjZSgnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnLCAnJylcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9LCAxMDAwKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBlbWl0SW1hZ2VUb3BvbG9neShiYXNlNjQpIHtcbiAgICB0aGlzLmNhbGxiYWNrSW1hZ2VUb3BvbG9neS5lbWl0KGJhc2U2NCk7XG4gIH1cblxuICBvcGVuQWN0aW9uTWVudSgpIHtcbiAgICAvLyBXaGVuIHRoaXMgbm9kZSBpcyBjbGlja2VkLCBhZGp1c3QgdGhlIG1lbnUgcG9zaXRpb25cbiAgICBjb25zdCBtb3VzZVB0ID0gdGhpcy5teURpYWdyYW0ubGFzdElucHV0LnZpZXdQb2ludDtcblxuICAgIC8vIC8vIFdoZW4gdGhpcyBub2RlIGlzIGNsaWNrZWQsIGRpc3BsYXkgdGhlIGRyb3Bkb3duIG1lbnVcbiAgICBjb25zdCBtZW51ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5hY3Rpb25NZW51SWQpO1xuICAgIGlmIChtZW51KSB7XG4gICAgICBtZW51LnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgICAgIG1lbnUuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgbWVudS5zdHlsZS5sZWZ0ID0gbW91c2VQdC54ICsgJ3B4JztcbiAgICAgIG1lbnUuc3R5bGUudG9wID0gbW91c2VQdC55ICsgJ3B4JztcblxuICAgICAgdGhpcy5tZW51VHJpZ2dlci5vcGVuTWVudSgpO1xuICAgIH1cbiAgfVxuXG4gIHVuc3Vic2NyaWJlQWxsKCkge1xuICAgIGlmICh0aGlzLl9zdWJzY3JpcHRpb25MaXN0KSB7XG4gICAgICB0aGlzLl9zdWJzY3JpcHRpb25MaXN0LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbkxpc3QgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBhZGRTdWJzY3JpYmVzKC4uLnN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdKSB7XG4gICAgc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uTGlzdC5hZGQoZWwpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgQXRvRGVmYXVsdEdvanNFZGl0b3Ige1xuICBleHBvcnQgZW51bSBFTlVNX0FDVElPTlMge1xuICAgIERFVEFJTFMgPSAnT3BlbiBkZXRhaWxzICYgd2l6YXJkJyxcbiAgICBPTkxZX0RFVEFJTFMgPSAnT3BlbiBkZXRhaWxzJyxcbiAgICBSRU5BTUUgPSAnUmVuYW1lIHRoaXMgYm94JyxcbiAgICBPVVRGTE9XID0gJ0NyZWF0ZSBhbiBvdXRmbG93JyxcbiAgICBERUxFVEUgPSAnRGVsZXRlJyxcbiAgICBJTlNJR0hUID0gJ0luU2lnaHQgdGFnIG1hcHBpbmcnLFxuICAgIERBVEFfTUFQUElORyA9ICdEYXRhIE1hcHBpbmcnLFxuICAgIE1PUkUgPSAnTW9yZScsXG4gICAgRkxPV19ERVRBSUxTID0gJ0Zsb3cgZGV0YWlscycsXG4gICAgRkxPV19ERVRBSUxTX0FORF9XSVpBUkQgPSAnRmxvdyBkZXRhaWxzICYgd2l6YXJkJywgLy8gb25seSBub3cgZm9yIENvb2xpbmcgVG93ZXJcbiAgICBBU1NFVF9QQVJBTUVURVJTID0gJ0Fzc2V0IHBhcmFtZXRlcnMnLFxuICAgIENIQU5HRV9JQ09OID0gJ0NoYW5nZSBpY29uJyxcbiAgfVxuXG4gIGV4cG9ydCBjb25zdCBBQ1RJT05TOiBhbnkgPSB7XG4gICAgW0VOVU1fQUNUSU9OUy5ERVRBSUxTXToge1xuICAgICAgbmFtZTogRU5VTV9BQ1RJT05TLkRFVEFJTFMsXG4gICAgICBpY29uQ2xhc3NOYW1lOiAnZmFyIGZhLW1lbW8tY2lyY2xlLWluZm8nLFxuICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgfSxcbiAgICBbRU5VTV9BQ1RJT05TLkZMT1dfREVUQUlMU106IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5GTE9XX0RFVEFJTFMsXG4gICAgICBpY29uQ2xhc3NOYW1lOiAnZmFyIGZhLWFycm93LXByb2dyZXNzJyxcbiAgICAgIG9uQ2xpY2s6ICgpID0+IHt9LFxuICAgIH0sXG4gICAgW0VOVU1fQUNUSU9OUy5GTE9XX0RFVEFJTFNfQU5EX1dJWkFSRF06IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5GTE9XX0RFVEFJTFNfQU5EX1dJWkFSRCxcbiAgICAgIGljb25DbGFzc05hbWU6ICdmYXIgZmEtYXJyb3ctcHJvZ3Jlc3MnLFxuICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgfSxcbiAgICBbRU5VTV9BQ1RJT05TLkFTU0VUX1BBUkFNRVRFUlNdOiB7XG4gICAgICBuYW1lOiBFTlVNX0FDVElPTlMuQVNTRVRfUEFSQU1FVEVSUyxcbiAgICAgIGljb25DbGFzc05hbWU6ICdmYXIgZmEtYm94LWFyY2hpdmUnLFxuICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgfSxcbiAgICBbRU5VTV9BQ1RJT05TLk9OTFlfREVUQUlMU106IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5PTkxZX0RFVEFJTFMsXG4gICAgICBpY29uQ2xhc3NOYW1lOiAnZmFyIGZhLW1lbW8tY2lyY2xlLWluZm8nLFxuICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgfSxcbiAgICBbRU5VTV9BQ1RJT05TLlJFTkFNRV06IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5SRU5BTUUsXG4gICAgICBpY29uQ2xhc3NOYW1lOiAnZmFyIGZhLWlucHV0LXRleHQnLFxuICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgfSxcbiAgICBbRU5VTV9BQ1RJT05TLk9VVEZMT1ddOiB7XG4gICAgICBuYW1lOiBFTlVNX0FDVElPTlMuT1VURkxPVyxcbiAgICAgIGljb25DbGFzc05hbWU6ICdmYXIgZmEtZGlhZ3JhbS1uZXN0ZWQnLFxuICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgfSxcbiAgICBbRU5VTV9BQ1RJT05TLkRFTEVURV06IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5ERUxFVEUsXG4gICAgICBpY29uQ2xhc3NOYW1lOiAnZmFsIGZhLXRyYXNoLWNhbicsXG4gICAgICBvbkNsaWNrOiAoKSA9PiB7fSxcbiAgICB9LFxuICAgIFtFTlVNX0FDVElPTlMuSU5TSUdIVF06IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5JTlNJR0hULFxuICAgICAgaWNvbkNsYXNzTmFtZTogJ2ZhciBmYS10YWcnLFxuICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgfSxcbiAgICBbRU5VTV9BQ1RJT05TLkRBVEFfTUFQUElOR106IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5EQVRBX01BUFBJTkcsXG4gICAgICBpY29uQ2xhc3NOYW1lOiAnZmFyIGZhLXRhZycsXG4gICAgICBvbkNsaWNrOiAoKSA9PiB7fSxcbiAgICB9LFxuICAgIFtFTlVNX0FDVElPTlMuTU9SRV06IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5NT1JFLFxuICAgICAgaWNvbkNsYXNzTmFtZTogJ2ZhbCBmYS1tZW1vLWNpcmNsZS1pbmZvJyxcbiAgICAgIG9uQ2xpY2s6ICgpID0+IHt9LFxuICAgIH0sXG4gICAgW0VOVU1fQUNUSU9OUy5DSEFOR0VfSUNPTl06IHtcbiAgICAgIG5hbWU6IEVOVU1fQUNUSU9OUy5DSEFOR0VfSUNPTixcbiAgICAgIGljb25DbGFzc05hbWU6ICdmYXIgZmEtaW1hZ2UnLFxuICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgfSxcbiAgfTtcblxuICBleHBvcnQgY29uc3QgRElTVEFOQ0VfMl9PVVRQVVQgPSA2MDtcbn1cbiJdfQ==
|