@colijnit/transaction 253.1.12 → 253.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/colijnit-transaction.umd.js +716 -606
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.d.ts +581 -580
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/colijnit-transaction.js +582 -581
- package/esm2015/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.js +14 -3
- package/esm2015/lib/component/core/core.module.js +4 -1
- package/esm2015/lib/component/core/relation/customer-groups.component.js +1 -1
- package/esm2015/lib/component/core/relation/customer-languages.component.js +1 -1
- package/esm2015/lib/component/core/relation/customer-titles.component.js +69 -0
- package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-cc/dialog-transaction-line-warehouse-cc.component.js +2 -1
- package/esm2015/lib/component/relation/relation-general/relation-general.component.js +21 -21
- package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse.component.js +2 -2
- package/esm2015/lib/enum/checkout-cfg-name.enum.js +2 -1
- package/esm2015/lib/enum/transaction-cfg-name.enum.js +2 -1
- package/esm2015/lib/service/transaction-connector-adapter.service.js +14 -1
- package/esm2015/lib/service/transaction-connector.service.js +7 -1
- package/esm2015/lib/service/transaction.service.js +11 -4
- package/esm2015/lib/transaction-version.js +3 -3
- package/fesm2015/colijnit-transaction.js +137 -31
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.d.ts +2 -0
- package/lib/component/checkout/style/_layout.scss +1 -1
- package/lib/component/core/relation/customer-titles.component.d.ts +25 -0
- package/lib/component/core/relation/relation-customer-groups.component.scss +1 -6
- package/lib/component/core/relation/relation-customer-languages.component.scss +1 -6
- package/lib/component/core/relation/relation-customer-titles.component.scss +1 -0
- package/lib/enum/checkout-cfg-name.enum.d.ts +1 -0
- package/lib/enum/transaction-cfg-name.enum.d.ts +1 -0
- package/lib/service/transaction-connector-adapter.service.d.ts +2 -0
- package/lib/service/transaction-connector.service.d.ts +2 -0
- package/lib/service/transaction.service.d.ts +2 -1
- package/package.json +2 -2
|
@@ -27,6 +27,7 @@ import { CashDrawer } from '@colijnit/transactionapi/build/model/cash-drawer.bo'
|
|
|
27
27
|
import { RetailStadium } from '@colijnit/transactionapi/build/model/retail-stadium.bo';
|
|
28
28
|
import { WorkFlowStatus } from '@colijnit/transactionapi/build/model/workflow-status.bo';
|
|
29
29
|
import { BehaviorSubject } from 'rxjs';
|
|
30
|
+
import { Title } from "@colijnit/transactionapi/build/model/title.bo";
|
|
30
31
|
import * as i0 from "@angular/core";
|
|
31
32
|
import * as i1 from "./transaction-connector-adapter.service";
|
|
32
33
|
import * as i2 from "../cache/service/transaction-select-single-cache.service";
|
|
@@ -89,6 +90,11 @@ export class TransactionConnectorService {
|
|
|
89
90
|
return this._adapterService.getLanguages();
|
|
90
91
|
}).getValue();
|
|
91
92
|
}
|
|
93
|
+
getTitles() {
|
|
94
|
+
return this._selectMultipleCacheService.requestCache(Title, () => {
|
|
95
|
+
return this._adapterService.getTitles();
|
|
96
|
+
}).getValue();
|
|
97
|
+
}
|
|
92
98
|
getCustomerGroups() {
|
|
93
99
|
return __awaiter(this, void 0, void 0, function* () {
|
|
94
100
|
return this._selectMultipleCacheService.requestCache(CustomerGroup, () => {
|
|
@@ -1393,4 +1399,4 @@ TransactionConnectorService.ctorParameters = () => [
|
|
|
1393
1399
|
{ type: TransactionSelectMultipleParameterizedCacheService },
|
|
1394
1400
|
{ type: TransactionSelectSingleParameterizedCacheService }
|
|
1395
1401
|
];
|
|
1396
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRzVFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUN4RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFFMUUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUt2RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUUzRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFFckYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBRWhGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUMxRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFHN0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQWtCNUUsT0FBTyxFQUFDLHFDQUFxQyxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDakgsT0FBTyxFQUNMLGtEQUFrRCxFQUNuRCxNQUFNLDBFQUEwRSxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzNGLE9BQU8s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RSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEYsQ0FBQztLQUFBO0lBRVksa0JBQWtCLENBQUMsaUJBQXlCLEVBQUUsbUJBQTJCLEVBQUUsVUFBa0I7O1lBQ3hHLE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNHLENBQUM7S0FBQTtJQUVZLFFBQVEsQ0FBQyxFQUFVOztZQUM5QixPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQztLQUFBO0lBRVksY0FBYyxDQUFDLFFBQWtCOztZQUM1QyxPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsQ0FBQztLQUFBO0lBRVksMENBQTBDLENBQUMsSUFBWTs7WUFDbEUsT0FBTyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsMENBQTBDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckYsQ0FBQztLQUFBO0lBRVksWUFBWSxDQUFDLE9BQWU7O1lBQ3ZDLE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxRCxDQUFDO0tBQUE7SUFFWSxvQ0FBb0MsQ0FBQyxJQUFZOztZQUM1RCxPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQ0FBb0MsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvRSxDQUFDO0tBQUE7Ozs7WUEzbUNGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBckxPLGtDQUFrQztZQUNsQyxtQ0FBbUM7WUFMbkMscUNBQXFDO1lBRTNDLGtEQUFrRDtZQThDbEQsZ0RBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWFya2V0aW5nfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbWFya2V0aW5nLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25LaW5kfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS90cmFuc2FjdGlvbi1raW5kLmVudW0nO1xuaW1wb3J0IHtDb3VudHJ5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY291bnRyeS5ibyc7XG5pbXBvcnQge0xhbmd1YWdlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbGFuZ3VhZ2UuYm8nO1xuaW1wb3J0IHtTZXF1ZW5jZU5hbWV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3NlcXVlbmNlLW5hbWUuZW51bSc7XG5pbXBvcnQge0RlbGl2ZXJ5TWV0aG9kfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktbWV0aG9kLmJvJztcbmltcG9ydCB7RGVsaXZlcnlPcHRpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxpdmVyeS1vcHRpb24uYm8nO1xuaW1wb3J0IHtcbiAgR2V0UG9zdGFsQ29kZVJldHJpZXZhbE91dHB1dFBhcmFtc1xufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXBvc3RhbC1jb2RlLXJldHJpZXZhbC1vdXRwdXQtcGFyYW1zJztcbmltcG9ydCB7VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tYXJ0aWNsZS13YXJlaG91c2UuYm8nO1xuaW1wb3J0IHtBcnRpY2xlRnVsbE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZnVsbC1vYmplY3QnO1xuaW1wb3J0IHtTdGFuZGFyZFRleHR9IGZyb20gJy4uL21vZGVsL3N0YW5kYXJkLXRleHQnO1xuaW1wb3J0IHtDdXN0b21lckdyb3VwfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3VzdG9tZXItZ3JvdXAuYm8nO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVJbmZvfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1pbmZvLmJvJztcbmltcG9ydCB7Q2FzaFJlZ2lzdGVyfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2FzaC1yZWdpc3Rlcic7XG5pbXBvcnQge1Jlc29sdmVMaW5lUGVuZGluZ1JlYXNvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvbHZlLXBlbmRpbmctcmVhc29uLXJlcXVlc3QuYm8nO1xuaW1wb3J0IHtQcmljZUxpc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmljZS1saXN0JztcbmltcG9ydCB7VmF0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdmF0JztcbmltcG9ydCB7RGlzY291bnRUeXBlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9kaXNjb3VudC10eXBlLmVudW0nO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFZpZXdSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXZpZXctcmVxdWVzdCc7XG5pbXBvcnQge09uSG9sZENvZGV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vbi1ob2xkLWNvZGUuYm8nO1xuaW1wb3J0IHtXYXJlaG91c2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC93YXJlaG91c2UuYm8nO1xuaW1wb3J0IHtDb2RlRGVzY3JpcHRpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jb2RlLWRlc2NyaXB0aW9uJztcbmltcG9ydCB7XG4gIFJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWNlaXZlLWdvb2RzLWZvci1wdXJjaGFzZS1vcmRlci1yZXF1ZXN0LmJvJztcbmltcG9ydCB7XG4gIFJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJDb3JyZWN0aW9uUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVjZWl2ZS1nb29kcy1mb3ItcHVyY2hhc2Utb3JkZXItY29ycmVjdGlvbi1yZXF1ZXN0LmJvJztcbmltcG9ydCB7Q2FzaE9uRGVsaXZlcnlEYXRhfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2FzaC1vbi1kZWxpdmVyeS1kYXRhJztcbmltcG9ydCB7Q2hhbmdlSGVhZGVyQ2FzaE9uRGVsaXZlcnlBbW91bnRSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1oZWFkZXItY2FzaC1vbi1kZWxpdmVyeS1hbW91bnQtcmVxdWVzdFwiO1xuaW1wb3J0IHtHZXRQdXJjaGFzZVBvcnRhbExpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtcHVyY2hhc2UtcG9ydGFsLWxpbmUnO1xuaW1wb3J0IHtQdXJjaGFzZVBvcnRhbExpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wdXJjaGFzZS1wb3J0YWwtbGluZS5ibyc7XG5pbXBvcnQge0NyZWF0ZVBheW1lbnRMaW5rUmVzdWx0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXBheW1lbnQtbGluay1yZXN1bHQuYm8nO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFJlc3VsdH0gZnJvbSAnLi4vbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXJlc3VsdCc7XG5pbXBvcnQge1xuICBSZXNvbHZlSGVhZGVyUGVuZGluZ1JlYXNvblJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Jlc29sdmUtaGVhZGVyLXBlbmRpbmctcmVhc29uLXJlcXVlc3QuYm8nO1xuaW1wb3J0IHtQYXltZW50TGlua1N0YXR1c30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BheW1lbnQtbGluay1zdGF0dXMuYm8nO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi9jYWNoZS9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNlbGVjdC1tdWx0aXBsZS1jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uU2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlXG59IGZyb20gJy4uL2NhY2hlL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2VsZWN0LW11bHRpcGxlLXBhcmFtZXRlcml6ZWQtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQge1RyYW5zYWN0aW9uQ29ubmVjdG9yQWRhcHRlclNlcnZpY2V9IGZyb20gJy4vdHJhbnNhY3Rpb24tY29ubmVjdG9yLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi9jYWNoZS9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNlbGVjdC1zaW5nbGUtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQge0dldFB1cmNoYXNlT3JkZXJDb25maXJtYXRpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtcHVyY2hhc2Utb3JkZXItY29uZmlybWF0aW9uJztcbmltcG9ydCB7VHJhbnNhY3Rpb25Mb2NrUmVzdWx0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbG9jay1yZXN1bHQuYm8nO1xuaW1wb3J0IHtQcml2YWN5U2V0dGluZ30gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcHJpdmFjeS1zZXR0aW5nLmJvJztcbmltcG9ydCB7UmVsYXRpb25Qcml2YWN5U2V0dGluZ30gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLXByaXZhY3ktc2V0dGluZy5ibyc7XG5pbXBvcnQge0NvRG9tYWluVmFsdWV9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2NvLWRvbWFpbi12YWx1ZS5ibyc7XG5pbXBvcnQge1NhbGVzUGVyc29ufSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvc2FsZXMtcGVyc29uLmJvJztcbmltcG9ydCB7VGFnfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC90YWcnO1xuaW1wb3J0IHtTdG9ja1N0aWNrZXJzUHJpbnRMYXlvdXRzfSBmcm9tICdAY29saWpuaXQvc2hhcmVkYXBpL2J1aWxkL21vZGVsL3JlcG9ydC9zdG9jay1zdGlja2Vycy1wcmludC1sYXlvdXRzLmJvJztcbmltcG9ydCB7QXZhaWxhYmxlU3RvY2t9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hdmFpbGFibGUtc3RvY2suYm8nO1xuaW1wb3J0IHtcbiAgQWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hbGxvY2F0ZS1nb29kcy1mb3Itc2FsZXMtb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge1xuICBBbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlckNvcnJlY3Rpb25SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hbGxvY2F0ZS1nb29kcy1mb3Itc2FsZXMtb3JkZXItY29ycmVjdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWx9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydC1sYXlvdXQtc2VsZWN0aW9uLWVtYWlsLmJvJztcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydC1sYXlvdXQtc2VsZWN0aW9uLXByaW50LmJvJztcbmltcG9ydCB7Q3JlYXRlU2FsZXNPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtc2FsZXMtb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge0NyZWF0ZUNhc2hSZWdpc3Rlck9yZGVyUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1jYXNoLXJlZ2lzdGVyLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtDcmVhdGVQdXJjaGFzZU9yZGVyUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1wdXJjaGFzZS1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7Q3JlYXRlU2VydmljZU9yZGVyUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1zZXJ2aWNlLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtDcmVhdGVTYWxlc1F1b3RhdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtc2FsZXMtcXVvdGF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtQdXJjaGFzZUFkdmljZUZpbHRlcnN9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wdXJjaGFzZS1hZHZpY2UtZmlsdGVycyc7XG5pbXBvcnQge1B1cmNoYXNlQWR2aWNlTGluZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3B1cmNoYXNlLWFkdmljZS1saW5lLmJvJztcbmltcG9ydCB7RW1haWxEZWxpdmVyeU5vdGVSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcbmltcG9ydCB7UGRmRGVsaXZlcnlOb3RlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9IaXN0b3J5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1oaXN0b3J5LmJvJztcbmltcG9ydCB7RW1haWxJbnZvaWNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWludm9pY2UtcmVxdWVzdCc7XG5pbXBvcnQge1BkZkludm9pY2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLWludm9pY2UtcmVxdWVzdCc7XG5pbXBvcnQge1ByaW50SW52b2ljZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtSZWZUcmFuc2FjdGlvbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlZi10cmFuc2FjdGlvbi5ibyc7XG5pbXBvcnQge1RhZ1RyZWVJdGVtfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC90YWctdHJlZS1pdGVtLmJvJztcbmltcG9ydCB7SW50ZXJuYWxQYXJhbX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9pbnRlcm5hbC1wYXJhbS5lbnVtJztcbmltcG9ydCB7R29vZHNSZWNlaXB0SGlzdG9yeX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dvb2RzLXJlY2VpcHQtaGlzdG9yeS5ibyc7XG5pbXBvcnQge0dvb2RzQWxsb2NhdGlvbkhpc3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy1hbGxvY2F0aW9uLWhpc3RvcnkuYm8nO1xuaW1wb3J0IHtMYXlvdXRDb2RlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9sYXlvdXQtY29kZS5lbnVtJztcbmltcG9ydCB7SGlzdG9yaWNSZXBvcnR9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9oaXN0b3JpYy1yZXBvcnQuYm8nO1xuaW1wb3J0IHtQcmludGVyfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9wcmludGVyLmJvJztcbmltcG9ydCB7Q3VycmVuY3l9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2N1cnJlbmN5LmJvJztcbmltcG9ydCB7UGF5bWVudENvbmRpdGlvbn0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcGF5bWVudC1jb25kaXRpb24uYm8nO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25TZWxlY3RTaW5nbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlXG59IGZyb20gJy4uL2NhY2hlL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2VsZWN0LXNpbmdsZS1wYXJhbWV0ZXJpemVkLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgR29vZHNUb0JlUGlja2VkRm9yT3JkZXJSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy10by1iZS1waWNrZWQtZm9yLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtXYXJlaG91c2VTdG9ja0luZm99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC93YXJlaG91c2Utc3RvY2staW5mby5ibyc7XG5pbXBvcnQge0dvb2RzVG9CZVBpY2tlZEhpc3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy10by1iZS1waWNrZWQtaGlzdG9yeSc7XG5pbXBvcnQge0dvb2RzUGlja2VkSGlzdG9yeX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dvb2RzLXBpY2tlZC1oaXN0b3J5JztcbmltcG9ydCB7UGRmSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLWhpc3RvcmljLWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XG5pbXBvcnQge1xuICBFbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtaGlzdG9yaWMtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIFByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1oaXN0b3JpYy1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgUHJpbnRIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtaGlzdG9yaWMtb3JkZXItY29uZmlybWF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgRW1haWxIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtaGlzdG9yaWMtb3JkZXItY29uZmlybWF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtQZGZIaXN0b3JpY0ludm9pY2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLWhpc3RvcmljLWludm9pY2UtcmVxdWVzdCc7XG5pbXBvcnQge1ByaW50SGlzdG9yaWNJbnZvaWNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWhpc3RvcmljLWludm9pY2UtcmVxdWVzdCc7XG5pbXBvcnQge0VtYWlsSGlzdG9yaWNJbnZvaWNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWhpc3RvcmljLWludm9pY2UtcmVxdWVzdCc7XG5pbXBvcnQge1ByaW50UHVyY2hhc2VPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1wdXJjaGFzZS1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7UGRmUHVyY2hhc2VPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtcHVyY2hhc2Utb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge1ByaW50T3JkZXJDb25maXJtYXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtb3JkZXItY29uZmlybWF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtQZGZPcmRlckNvbmZpcm1hdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtb3JkZXItY29uZmlybWF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtFbWFpbE9yZGVyQ29uZmlybWF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7RW1haWxQdXJjaGFzZU9yZGVyUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLXB1cmNoYXNlLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtPYmplY3RDb25maWd1cmF0aW9ufSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9vYmplY3QtY29uZmlndXJhdGlvbic7XG5pbXBvcnQge0NvRG9jdW1lbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2NvLWRvY3VtZW50JztcbmltcG9ydCB7R29vZHNQaWNrZWRSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtcGlja2VkLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgRGVsZXRlR29vZHNQaWNrZWRGb3JPcmRlclJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGV0ZS1nb29kcy1waWNrZWQtZm9yLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgRGVsZXRlR29vZHNUb0JlUGlja2VkRm9yT3JkZXJSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxldGUtZ29vZHMtdG8tYmUtcGlja2VkLWZvci1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7Q2FzaERyYXdlcnNSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2FzaC1kcmF3ZXJzLXJlcXVlc3QnO1xuaW1wb3J0IHtDYXNoRHJhd2VyfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2FzaC1kcmF3ZXIuYm8nO1xuaW1wb3J0IHtQcmludFBvc1JlY2VpcHRSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtcG9zLXJlY2VpcHQtcmVxdWVzdCc7XG5pbXBvcnQge1ByaW50SGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWhpc3RvcmljLXBvcy1yZWNlaXB0LXJlcXVlc3QnO1xuaW1wb3J0IHtFbWFpbFBvc1JlY2VpcHRSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtcG9zLXJlY2VpcHQtcmVxdWVzdCc7XG5pbXBvcnQge0VtYWlsSGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWhpc3RvcmljLXBvcy1yZWNlaXB0LXJlcXVlc3QnO1xuaW1wb3J0IHtUYWdDYXRlZ29yeX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS90YWItY2F0ZWdvcnkuZW51bSc7XG5pbXBvcnQge0NvcHlUcmFuc2FjdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jb3B5LXRyYW5zYWN0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtFbWFpbFF1b3RhdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1xdW90YXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge0VtYWlsSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtaGlzdG9yaWMtcXVvdGF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtQZGZRdW90YXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UGRmSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLWhpc3RvcmljLXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UHJpbnRRdW90YXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtcXVvdGF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWhpc3RvcmljLXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIENoYW5nZUhlYWRlclNjb3JpbmdDaGFuY2VSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2UtaGVhZGVyLXNjb3JpbmctY2hhbmNlLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlSGVhZGVyRXhwZWN0ZWRTY29yaW5nRGF0ZVJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1oZWFkZXItZXhwZWN0ZWQtc2NvcmluZy1kYXRlLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlSGVhZGVyUmV0YWlsU3RhZGl1bVJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1oZWFkZXItcmV0YWlsLXN0YWRpdW0tcmVxdWVzdCc7XG5pbXBvcnQge1JldGFpbFN0YWRpdW19IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXRhaWwtc3RhZGl1bS5ibyc7XG5pbXBvcnQge1dvcmtGbG93U3RhdHVzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvd29ya2Zsb3ctc3RhdHVzLmJvJztcbmltcG9ydCB7XG4gIENoYW5nZUxpbmVRdWFudGl0eVNlbGVjdGVkTGluZVJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1saW5lLXF1YW50aXR5LXNlbGVjdGVkLWxpbmUtcmVxdWVzdCc7XG5pbXBvcnQge09yZGVyTGluZVNldENhdGVnb3J5fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9vcmRlci1saW5lLXNldC1jYXRlZ29yeS5ibyc7XG5pbXBvcnQge09yZGVyTGluZVNldERUT30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWxpbmUtc2V0LWR0byc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkFkZE9yZGVyTGluZVNldFRleHRMaW5lUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tYWRkLW9yZGVyLWxpbmUtc2V0LXRleHQtbGluZS1yZXF1ZXN0JztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIE9yZGVyQ29uZmlybWF0aW9uQW5hbHlzaXNSZXN1bHRcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWNvbmZpcm1hdGlvbi1hbmFseXNpcy1yZXN1bHQuYm8nO1xuaW1wb3J0IHtBcnRpY2xlRXh0ZW5kZWR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZXh0ZW5kZWQuYm8nO1xuaW1wb3J0IHtQZGZQb3NSZWNlaXB0UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1wb3MtcmVjZWlwdC1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uTHNwSW5mb3JtYXRpb25SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1sc3AtaW5mb3JtYXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1BhY2thZ2VMU1B9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wYWNrYWdlLWxzcC5ibyc7XG5pbXBvcnQge0FuYWx5emVkT3JkZXJDb25maXJtYXRpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hbmFseXplZC1vcmRlci1jb25maXJtYXRpb24uYm8nO1xuaW1wb3J0IHtcbiAgT3JkZXJDb25maXJtYXRpb25UcmFuc2FjdGlvbkxpbmtcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWNvbmZpcm1hdGlvbi10cmFuc2FjdGlvbi1saW5rLmJvJztcbmltcG9ydCB7UGRmUG9zUmVjZWlwdFJlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLXBvcy1yZWNlaXB0LXJlc3BvbnNlLmJvJztcbmltcG9ydCB7UHJvamVjdENvZGV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcm9qZWN0LWNvZGUuYm8nO1xuaW1wb3J0IHtDYXNoVHlwZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtdHlwZS5ibyc7XG5pbXBvcnQge1Bvc0dyb3VwfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcG9zLWdyb3VwLmJvJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uQWRkUGF5bWVudExpbmVSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1hZGQtcGF5bWVudC1saW5lLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgUGRmSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvblJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1oaXN0b3JpYy1vcmRlci1jb25maXJtYXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge0NhdXNlQ29kZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jYXVzZS1jb2RlLmJvXCI7XG5pbXBvcnQge1ZhbGlkYXRpb25SZXN1bHR9IGZyb20gXCJAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC92YWxpZGF0aW9uLXJlc3VsdFwiO1xuaW1wb3J0IHtcbiAgUGRmVHJhbnNhY3Rpb25TZWFyY2hPdmVydmlld1Jlc3BvbnNlXG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLXRyYW5zYWN0aW9uLXNlYXJjaC1vdmVydmlldy1yZXNwb25zZVwiO1xuaW1wb3J0IHtcbiAgUHJpbnRQdXJjaGFzZU9yZGVyRm9yU2FsZXNPcmRlclJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1wdXJjaGFzZS1vcmRlci1mb3Itc2FsZXMtb3JkZXItcmVxdWVzdFwiO1xuaW1wb3J0IHtBY3Rpdml0eX0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2FjdGl2aXR5LmJvXCI7XG5pbXBvcnQge1BsYW5uaW5nfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLmJvXCI7XG5pbXBvcnQge1BsYW5uaW5nRmlsdGVyT2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLWZpbHRlci1vYmplY3QuYm9cIjtcbmltcG9ydCB7UGxhbk9yZGVyfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXIuYm9cIjtcbmltcG9ydCB7UGxhbm5pbmdUcmFuc3BvcnRXZWVrfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLXRyYW5zcG9ydC13ZWVrLmJvXCI7XG5pbXBvcnQge0dldFRyYW5zcG9ydE9yZGVyc1JlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXRyYW5zcG9ydC1vcmRlcnMtcmVxdWVzdC5ib1wiO1xuaW1wb3J0IHtPcmRlckxpbmVzVG9QbGFuUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1saW5lcy10by1wbGFuLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7UGxhbk9yZGVyTGluZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFuLW9yZGVyLWxpbmUuYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25NYXJnaW5JbmZvfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLW1hcmdpbi1pbmZvLmJvXCI7XG5pbXBvcnQge0RhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhfSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9kYXRhLXNlcnZpY2UtcmVzcG9uc2UtZGF0YSc7XG5pbXBvcnQge09yZGVyTGluZXNQbGFubmVkUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1saW5lcy1wbGFubmVkLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7XG4gIENyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VUcmFuc2FjdGlvbkxpbmVSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXNlcnZpY2Utb3JkZXItd2l0aC1zb3VyY2UtdHJhbnNhY3Rpb24tbGluZS1yZXF1ZXN0XCI7XG5pbXBvcnQge1ByaW50RGVsaXZlcnlOb3Rlc1JlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtZGVsaXZlcnktbm90ZXMtcmVxdWVzdFwiO1xuaW1wb3J0IHtcbiAgQ3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZUdvb2RSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXNlcnZpY2Utb3JkZXItd2l0aC1zb3VyY2UtZ29vZC1yZXF1ZXN0XCI7XG5pbXBvcnQge1xuICBDcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU0xBUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1zZXJ2aWNlLW9yZGVyLXdpdGgtU0xBLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIENyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VPcmRlck5yQW5kQXJ0aWNsZURlc2NyaXB0aW9uUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1zZXJ2aWNlLW9yZGVyLXdpdGgtc291cmNlLW9yZGVybnItYW5kLWFydGljbGUtZGVzY3JpcHRpb24tcmVxdWVzdFwiO1xuaW1wb3J0IHtcbiAgQ2hhbmdlU2VydmljZUhlYWRlclJlcG9ydE1lc3NhZ2VSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLXNlcnZpY2UtaGVhZGVyLXJlcG9ydC1tZXNzYWdlLXJlcXVlc3RcIjtcbmltcG9ydCB7U3VwcGxpZXJBcnRpY2xlU3RvY2tGb3JlY2FzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9zdXBwbGllci1hcnRpY2xlLXN0b2NrLWZvcmVjYXN0XCI7XG5pbXBvcnQge0NoYW5nZUxpbmVEaXJlY3RTZWxsUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2UtbGluZS1kaXJlY3Qtc2VsbC1yZXF1ZXN0XCI7XG5pbXBvcnQge1NlcnZpY2VXaXphcmR9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvc2VydmljZS13aXphcmRcIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIlxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2Uge1xuXG4gIHB1YmxpYyBjb25uZWN0aW9uSW5pdGlhbGl6ZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2FkYXB0ZXJTZXJ2aWNlOiBUcmFuc2FjdGlvbkNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NlbGVjdFNpbmdsZUNhY2hlU2VydmljZTogVHJhbnNhY3Rpb25TZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2U6IFRyYW5zYWN0aW9uU2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlOiBUcmFuc2FjdGlvblNlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIF9zZWxlY3RTaW5sZ2VQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlOiBUcmFuc2FjdGlvblNlbGVjdFNpbmdsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UsXG4gICkge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvbm5lY3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuY29ubmVjdCgpO1xuICAgIHRoaXMuY29ubmVjdGlvbkluaXRpYWxpemVkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9nT3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvZ091dCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERvY3VtZW50Q29udGVudChkb2NJZDogbnVtYmVyLCB0aHVtYm5haWw6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RG9jdW1lbnRDb250ZW50KGRvY0lkLCB0aHVtYm5haWwpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFydGljbGVFeHRlbmRlZChhcnRpY2xlTnI6IHN0cmluZyk6IFByb21pc2U8QXJ0aWNsZUV4dGVuZGVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEFydGljbGVFeHRlbmRlZChhcnRpY2xlTnIpO1xuICB9XG5cbiAgcHVibGljIHN0b3JlU2lnbmVkRG9jKGRvY3VtZW50SWQ6IG51bWJlciwgZG9jdW1lbnRCb2R5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2Uuc3RvcmVTaWduZWREb2MoZG9jdW1lbnRJZCwgZG9jdW1lbnRCb2R5KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBcnRpY2xlRnVsbE9iamVjdChnb29kSWQ6IG51bWJlcik6IFByb21pc2U8QXJ0aWNsZUZ1bGxPYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxBcnRpY2xlRnVsbE9iamVjdD4oQXJ0aWNsZUZ1bGxPYmplY3QsIGdvb2RJZCwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEFydGljbGVGdWxsT2JqZWN0KGdvb2RJZClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldEdvb2RJZEZyb21BcnRpY2xlTnIoYXJ0aWNsZU5yOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRHb29kSWRGcm9tQXJ0aWNsZU5yKGFydGljbGVOcik7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2luZ2xlSW1hZ2Uobm9kZUlkOiBudW1iZXIgfCBzdHJpbmcsIHB1YmxpY2F0aW9uOiBudW1iZXIsIGluY2x1ZGVNaW1ldHlwZTogYm9vbGVhbiwgdGh1bWI6IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTaW5nbGVJbWFnZShub2RlSWQsIHB1YmxpY2F0aW9uLCBpbmNsdWRlTWltZXR5cGUsIHRodW1iKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb3VudHJpZXMoKTogUHJvbWlzZTxDb3VudHJ5W10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENvdW50cnk+KENvdW50cnksICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDb3VudHJpZXMoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFuZ3VhZ2VzKCk6IFByb21pc2U8TGFuZ3VhZ2VbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8TGFuZ3VhZ2U+KExhbmd1YWdlLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0TGFuZ3VhZ2VzKClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEN1c3RvbWVyR3JvdXBzKCk6IFByb21pc2U8Q3VzdG9tZXJHcm91cFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDdXN0b21lckdyb3VwPihDdXN0b21lckdyb3VwLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q3VzdG9tZXJHcm91cHMoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0V29ya0Zsb3dTdGF0dXNlcyh0cmFuc2FjdGlvbktpbmQ6IFRyYW5zYWN0aW9uS2luZCk6IFByb21pc2U8V29ya0Zsb3dTdGF0dXNbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8V29ya0Zsb3dTdGF0dXM+KFdvcmtGbG93U3RhdHVzLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0V29ya0Zsb3dTdGF0dXNlcyh0cmFuc2FjdGlvbktpbmQpO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q291bnRyeShjb3VudHJ5Q29kZTogc3RyaW5nKTogUHJvbWlzZTxDb3VudHJ5PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENvdW50cnkoY291bnRyeUNvZGUpO1xuICB9XG5cbiAgcHVibGljIGdldFByaXZhY3lTZXR0aW5ncygpOiBQcm9taXNlPFByaXZhY3lTZXR0aW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFByaXZhY3lTZXR0aW5nPihQcml2YWN5U2V0dGluZywgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFByaXZhY3lTZXR0aW5ncygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSZWxhdGlvblByaXZhY3lTZXR0aW5ncygpOiBQcm9taXNlPFJlbGF0aW9uUHJpdmFjeVNldHRpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRSZWxhdGlvblByaXZhY3lTZXR0aW5ncygpO1xuICB9XG5cbiAgcHVibGljIGdldE1hcmtldGluZ0NvZGVzKCk6IFByb21pc2U8TWFya2V0aW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPE1hcmtldGluZz4oTWFya2V0aW5nLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0TWFya2V0aW5nQ29kZXMoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlVHJhbnNhY3Rpb24oa2luZDogVHJhbnNhY3Rpb25LaW5kLCBicmFuY2hOcjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVUcmFuc2FjdGlvbihraW5kLCBicmFuY2hOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlU2FsZXNPcmRlcihyZXF1ZXN0OiBDcmVhdGVTYWxlc09yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlU2FsZXNPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVDYXNoUmVnaXN0ZXJPcmRlcihyZXF1ZXN0OiBDcmVhdGVDYXNoUmVnaXN0ZXJPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZUNhc2hSZWdpc3Rlck9yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVB1cmNoYXNlT3JkZXIocmVxdWVzdDogQ3JlYXRlUHVyY2hhc2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVB1cmNoYXNlT3JkZXIocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlU2VydmljZU9yZGVyKHJlcXVlc3Q6IENyZWF0ZVNlcnZpY2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVNlcnZpY2VPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlVHJhbnNhY3Rpb25MaW5lKHJlcXVlc3Q6IENyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VUcmFuc2FjdGlvbkxpbmVSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlVHJhbnNhY3Rpb25MaW5lKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VHb29kKHJlcXVlc3Q6IENyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VHb29kUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZUdvb2QocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZU9yZGVyTnJBbmRBcnRpY2xlRGVzY3JpcHRpb24ocmVxdWVzdDogQ3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZU9yZGVyTnJBbmRBcnRpY2xlRGVzY3JpcHRpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlT3JkZXJOckFuZEFydGljbGVEZXNjcmlwdGlvbihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU0xBKHJlcXVlc3Q6IENyZWF0ZVNlcnZpY2VPcmRlcldpdGhTTEFSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU0xBKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVNhbGVzUXVvdGF0aW9uKHJlcXVlc3Q6IENyZWF0ZVNhbGVzUXVvdGF0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlU2FsZXNRdW90YXRpb24ocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY29udmVydFNhbGVzUXVvdGF0aW9uVG9TYWxlc09yZGVyKHJlcXVlc3Q6IENvcHlUcmFuc2FjdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvbnZlcnRTYWxlc1F1b3RhdGlvblRvU2FsZXNPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBcnRpY2xlQm91bmRUZXh0TGluZXNPZkFydGljbGVMaW5lKGFydGljbGVMaW5lVXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkxpbmVJbmZvW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QXJ0aWNsZUJvdW5kVGV4dExpbmVzT2ZBcnRpY2xlTGluZShhcnRpY2xlTGluZVV1aWQpO1xuICB9XG5cbiAgcHVibGljIGdldFRyYW5zYWN0aW9uQnlOckFuZEtpbmQoa2luZDogVHJhbnNhY3Rpb25LaW5kLCB0cmFuc2FjdGlvbk5vOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zYWN0aW9uQnlOckFuZEtpbmQoa2luZCwgdHJhbnNhY3Rpb25Obyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25CeUlkKHRyYW5zYWN0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25CeUlkKHRyYW5zYWN0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFdlYlNlc3Npb25TYWxlc09yZGVyKHRyYW5zYWN0aW9uVXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRXZWJTZXNzaW9uU2FsZXNPcmRlcih0cmFuc2FjdGlvblV1aWQpO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZVRyYW5zYWN0aW9uQnlVdUlkKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlVHJhbnNhY3Rpb25CeVV1SWQodXVpZCk7XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsVHJhbnNhY3Rpb25CeVV1SWQodXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jYW5jZWxUcmFuc2FjdGlvbkJ5VXVJZCh1dWlkKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2NrVHJhbnNhY3Rpb25CeUlkKHRyYW5zSWQ6IG51bWJlciwgdmVyc2lvbjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkxvY2tSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UubG9ja1RyYW5zYWN0aW9uQnlJZCh0cmFuc0lkLCB2ZXJzaW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBjb21taXQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvbW1pdCgpO1xuICB9XG5cbiAgcHVibGljIHJvbGxiYWNrKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5yb2xsYmFjaygpO1xuICB9XG5cbiAgcHVibGljIHNhdmVUcmFuc2FjdGlvbih1dWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnNhdmVUcmFuc2FjdGlvbih1dWlkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDYXNoUmVnaXN0ZXJzKGJyYW5jaD86IHN0cmluZywgZ3JvdXA/OiBudW1iZXIpOiBQcm9taXNlPENhc2hSZWdpc3RlcltdPiB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYnJhbmNoOiBicmFuY2gsXG4gICAgICBncm91cDogZ3JvdXBcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q2FzaFJlZ2lzdGVyPihDYXNoUmVnaXN0ZXIsIChicmFuY2gsIGdyb3VwKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q2FzaFJlZ2lzdGVycyhicmFuY2gsIGdyb3VwKVxuICAgIH0pLmdldFZhbHVlKGJyYW5jaCwgZ3JvdXApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENhc2hEcmF3ZXJzKGNhc2hEcmF3ZXJzUmVxdWVzdDogQ2FzaERyYXdlcnNSZXF1ZXN0KTogUHJvbWlzZTxDYXNoRHJhd2VyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDYXNoRHJhd2VyPihDYXNoRHJhd2VyLCAoY2FzaERyYXdlcnNSZXF1ZXN0KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q2FzaERyYXdlcnMoY2FzaERyYXdlcnNSZXF1ZXN0KVxuICAgIH0pLmdldFZhbHVlKGNhc2hEcmF3ZXJzUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHJpY2VMaXN0cyhjb2RlPzogc3RyaW5nKTogUHJvbWlzZTxQcmljZUxpc3RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFByaWNlTGlzdD4oUHJpY2VMaXN0LCAoY29kZT86IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFByaWNlTGlzdHMoY29kZSlcbiAgICB9KS5nZXRWYWx1ZShjb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRWYXRMaXN0KG9ubHlWYWxpZDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxWYXRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFZhdD4oVmF0LCAob25seVZhbGlkOiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRWYXRMaXN0KG9ubHlWYWxpZClcbiAgICB9KS5nZXRWYWx1ZShvbmx5VmFsaWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRyYW5zVmF0Q29kZXModHlwZTogc3RyaW5nLCBkYXRlOiBEYXRlKTogUHJvbWlzZTxWYXRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFZhdD4oVmF0LCAodHlwZTogc3RyaW5nLCBkYXRlOiBEYXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNWYXRDb2Rlcyh0eXBlLCBkYXRlKVxuICAgIH0pLmdldFZhbHVlKHR5cGUsIGRhdGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlYXJjaFRyYW5zYWN0aW9ucyhyZXF1ZXN0OiBUcmFuc2FjdGlvblNlYXJjaFZpZXdSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvblNlYXJjaFJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5zZWFyY2hUcmFuc2FjdGlvbnMocmVxdWVzdClcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTZXF1ZW5jZVZhbHVlKHNlcXVlbmNlTmFtZTogU2VxdWVuY2VOYW1lKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2VxdWVuY2VWYWx1ZShzZXF1ZW5jZU5hbWUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5TWV0aG9kcygpOiBQcm9taXNlPERlbGl2ZXJ5TWV0aG9kW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPERlbGl2ZXJ5TWV0aG9kPihEZWxpdmVyeU1ldGhvZCwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlbGl2ZXJ5TWV0aG9kcygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU9wdGlvbnMoKTogUHJvbWlzZTxEZWxpdmVyeU9wdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxEZWxpdmVyeU9wdGlvbj4oRGVsaXZlcnlPcHRpb24sICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeU9wdGlvbnMoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkUmVsYXRpb25Ub1RyYW5zYWN0aW9uKHV1aWQ6IHN0cmluZywgcmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24odXVpZCwgcmVsYXRpb25JZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UG9zdGFsQ29kZVJldHJpZXZhbChwb3N0Y2FsQ29kZTogc3RyaW5nLCBob3VzZU5vOiBzdHJpbmcpOiBQcm9taXNlPEdldFBvc3RhbENvZGVSZXRyaWV2YWxPdXRwdXRQYXJhbXM+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UG9zdGFsQ29kZVJldHJpZXZhbChwb3N0Y2FsQ29kZSwgaG91c2VObyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkV2ViU2Vzc2lvblRyYW5zYWN0aW9uTGluZSh0cmFuc2FjdGlvblV1aWQ6IHN0cmluZywgYXJ0aWNsZU51bWJlcjogc3RyaW5nLCBxdWFudGl0eTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRXZWJTZXNzaW9uVHJhbnNhY3Rpb25MaW5lKHRyYW5zYWN0aW9uVXVpZCwgYXJ0aWNsZU51bWJlciwgcXVhbnRpdHkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRyYW5zYWN0aW9uTGluZSh1dWlkOiBzdHJpbmcsIGFydGljbGVObzogc3RyaW5nLCBxdWFudGl0eTogbnVtYmVyLCBhYm92ZUxpbmVOcjogbnVtYmVyLCBiZWxvd0xpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRUcmFuc2FjdGlvbkxpbmUodXVpZCwgYXJ0aWNsZU5vLCBxdWFudGl0eSwgYWJvdmVMaW5lTnIsIGJlbG93TGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRUZXh0TGluZVRvVHJhbnNhY3Rpb24odXVpZDogc3RyaW5nLCBzaG93T25Eb2N1bWVudHM6IG51bWJlciwgdGV4dDogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgYXJ0aWNsZUJvdW5kOiBib29sZWFuLCByZWZBcnRpY2xlTGluZU5yOiBudW1iZXIsIGFib3ZlTGluZU5yPzogbnVtYmVyLCBiZWxvd0xpbmVOcj86IG51bWJlcik6XG4gICAgUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRUZXh0TGluZVRvVHJhbnNhY3Rpb24odXVpZCwgc2hvd09uRG9jdW1lbnRzLCB0ZXh0LCBhbW91bnQsIGFydGljbGVCb3VuZCwgcmVmQXJ0aWNsZUxpbmVOciwgYWJvdmVMaW5lTnIsIGJlbG93TGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVUZXh0TGluZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHNob3dPbkRvY3VtZW50czogbnVtYmVyLCB0ZXh0OiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnVwZGF0ZVRleHRMaW5lKHV1aWQsIGxpbmVVdWlkLCBzaG93T25Eb2N1bWVudHMsIHRleHQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUxpbmVTZXF1ZW5jZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGFib3ZlTGluZU5yPzogbnVtYmVyLCBiZWxvd0xpbmVOcj86IG51bWJlcik6XG4gICAgUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VMaW5lU2VxdWVuY2UodXVpZCwgbGluZVV1aWQsIGFib3ZlTGluZU5yLCBiZWxvd0xpbmVOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2FuY2VsQWRkVHJhbnNhY3Rpb25MaW5lKGxpbmVVdWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNhbmNlbEFkZFRyYW5zYWN0aW9uTGluZShsaW5lVXVpZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlVHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlVHJhbnNhY3Rpb25MaW5lKHV1aWQsIGxpbmVVdWlkKTtcbiAgfVxuXG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVF1YW50aXR5KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgbmV3UXVhbnRpdHk6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHkodXVpZCwgbGluZVV1aWQsIG5ld1F1YW50aXR5KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eVNlbGVjdGVkKHV1aWQ6IHN0cmluZywgbGluZXM6IENoYW5nZUxpbmVRdWFudGl0eVNlbGVjdGVkTGluZVJlcXVlc3RbXSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHlTZWxlY3RlZCh1dWlkLCBsaW5lcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHBlbmRpbmdMaW5lVmFsdWVzOiBSZXNvbHZlTGluZVBlbmRpbmdSZWFzb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5yZXNvbHZlUGVuZGluZ0xpbmVSZWFzb24ocGVuZGluZ0xpbmVWYWx1ZXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlc29sdmVQZW5kaW5nSGVhZGVyUmVhc29uKHBlbmRpbmdIZWFkZXJWYWx1ZXM6IFJlc29sdmVIZWFkZXJQZW5kaW5nUmVhc29uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UucmVzb2x2ZVBlbmRpbmdIZWFkZXJSZWFzb24ocGVuZGluZ0hlYWRlclZhbHVlcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q29tbWlzc2lvbkNvZGVzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q29tbWlzc2lvbkNvZGVzKGxhbmd1YWdlQ29kZSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbk91dENvbGxlY3Rpb24obGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbk91dENvbGxlY3Rpb24obGFuZ3VhZ2VDb2RlKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFllc05vQ29sbGVjdGlvbihsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFllc05vQ29sbGVjdGlvbihsYW5ndWFnZUNvZGUpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHJpY2VLaW5kQ29sbGVjdGlvbihsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFByaWNlS2luZENvbGxlY3Rpb24obGFuZ3VhZ2VDb2RlKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByaW9yaXR5Q29sbGVjdGlvbihsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFByaW9yaXR5Q29sbGVjdGlvbihsYW5ndWFnZUNvZGUpXG4gIH1cblxuICBwdWJsaWMgZ2V0RW50cnlUeXBlcyhsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEVudHJ5VHlwZXMobGFuZ3VhZ2VDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXVzZUNvZGVzKCk6IFByb21pc2U8Q2F1c2VDb2RlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q2F1c2VDb2RlcygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZXMoZ29vZElkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZXMoZ29vZElkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRSZWxhdGlvbkJ5VXNlcih1dWlkOiBzdHJpbmcsIHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2Uuc2V0UmVsYXRpb25CeVVzZXIodXVpZCwgdXNlcm5hbWUsIHBhc3N3b3JkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUZXh0VHlwZXMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUZXh0VHlwZXMobGFuZ3VhZ2VDb2RlKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFN0YW5kYXJkVGV4dHMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFN0YW5kYXJkVGV4dFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFN0YW5kYXJkVGV4dHMobGFuZ3VhZ2VDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTYWxlc1BlcnNvbnMoZGF0ZT86IERhdGUpOiBQcm9taXNlPFNhbGVzUGVyc29uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxTYWxlc1BlcnNvbj4oU2FsZXNQZXJzb24sIChkYXRlPzogRGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFNhbGVzUGVyc29ucyhkYXRlKVxuICAgIH0pLmdldFZhbHVlKGRhdGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFJldGFpbFN0YWRpdW1zKCk6IFByb21pc2U8UmV0YWlsU3RhZGl1bVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxSZXRhaWxTdGFkaXVtPihSZXRhaWxTdGFkaXVtLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UmV0YWlsU3RhZGl1bXMoKTtcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRhZ3MoY2F0ZWdvcnk6IG51bWJlcik6IFByb21pc2U8VGFnW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxUYWc+KFRhZywgKGNhdGVnb3J5OiBudW1iZXIpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUYWdzKGNhdGVnb3J5KVxuICAgIH0pLmdldFZhbHVlKGNhdGVnb3J5KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPbkhvbGRDb2RlcygpOiBQcm9taXNlPE9uSG9sZENvZGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8T25Ib2xkQ29kZT4oT25Ib2xkQ29kZSwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9uSG9sZENvZGVzKClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFdhcmVob3VzZXMoYnJhbmNoTnI/OiBzdHJpbmcpOiBQcm9taXNlPFdhcmVob3VzZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8V2FyZWhvdXNlPihXYXJlaG91c2UsIChicmFuY2hOcj86IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFdhcmVob3VzZXMoYnJhbmNoTnIpXG4gICAgfSkuZ2V0VmFsdWUoYnJhbmNoTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFdhcmVob3VzZVN0b2NrSW5mb0J5R29vZEFuZEJyYW5jaChnb29kSWQ6IG51bWJlciwgYnJhbmNoTnI6IHN0cmluZyk6IFByb21pc2U8V2FyZWhvdXNlU3RvY2tJbmZvW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0V2FyZWhvdXNlU3RvY2tJbmZvQnlHb29kQW5kQnJhbmNoKGdvb2RJZCwgYnJhbmNoTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEhpc3RvcmljU3RhdGVWYWx1ZXMoKTogUHJvbWlzZTxDb2RlRGVzY3JpcHRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRIaXN0b3JpY1N0YXRlVmFsdWVzKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TWF4Q29uZmlybWVkRGVsaXZlcnlEYXRlRm9yUHVyY2hhc2VPcmRlcih0cmFuc0lkOiBudW1iZXIpOiBQcm9taXNlPERhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0TWF4Q29uZmlybWVkRGVsaXZlcnlEYXRlRm9yUHVyY2hhc2VPcmRlcih0cmFuc0lkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVDb21taXNzaW9uQ29kZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lQ29tbWlzc2lvbkNvZGUodXVpZCwgbGluZVV1aWQsIGNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVN1cHBsaWVyKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgaWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lU3VwcGxpZXIodXVpZCwgbGluZVV1aWQsIGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVXYXJlaG91c2UodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCB3YXJlaG91c2VOdW1iZXI6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lV2FyZWhvdXNlKHV1aWQsIGxpbmVVdWlkLCB3YXJlaG91c2VOdW1iZXIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVByaWNlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcHJpY2U6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHJpY2UodXVpZCwgbGluZVV1aWQsIHByaWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVQdXJjaGFzZVByaWNlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcHJpY2U6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHVyY2hhc2VQcmljZSh1dWlkLCBsaW5lVXVpZCwgcHJpY2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVB1cmNoYXNlRGVzY3JpcHRpb24odXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVQdXJjaGFzZURlc2NyaXB0aW9uKHV1aWQsIGxpbmVVdWlkLCBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHJpY2VMaXN0KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcHJpY2VMaXN0OiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVByaWNlTGlzdCh1dWlkLCBsaW5lVXVpZCwgcHJpY2VMaXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVWYXQodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBpZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVWYXQodXVpZCwgbGluZVV1aWQsIGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVMaW5lRGlzY291bnQodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCB0eXBlOiBEaXNjb3VudFR5cGUsIGRpc2NvdW50OiBudW1iZXIsIHJlYXNvbjogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUxpbmVEaXNjb3VudCh1dWlkLCBsaW5lVXVpZCwgdHlwZSwgZGlzY291bnQsIHJlYXNvbiwgY29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lRHJvcFNoaXBtZW50KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgbmV3RHJvcFNoaXBtZW50OiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVEcm9wU2hpcG1lbnQodXVpZCwgbGluZVV1aWQsIG5ld0Ryb3BTaGlwbWVudCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlNZXRob2QodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlNZXRob2QodXVpZCwgbGluZVV1aWQsIG1ldGhvZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlEYXRlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgZGF0ZTogRGF0ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlEYXRlKHV1aWQsIGxpbmVVdWlkLCBkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVBc3NlbWJseVRpbWUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCB0aW1lOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUFzc2VtYmx5VGltZSh1dWlkLCBsaW5lVXVpZCwgdGltZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lRWRpdFRpbWUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCB0aW1lOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUVkaXRUaW1lKHV1aWQsIGxpbmVVdWlkLCB0aW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVTdXBwbGllckFydGljbGVOdW1iZXIodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBhcnRpY2xlTnVtYmVyOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVN1cHBsaWVyQXJ0aWNsZU51bWJlcih1dWlkLCBsaW5lVXVpZCwgYXJ0aWNsZU51bWJlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUmVmZXJlbmNlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVJlZmVyZW5jZSh1dWlkLCBsaW5lVXVpZCwgcmVmZXJlbmNlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVHb29kRGVzY3JpcHRpb24odXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBnb29kRGVzY3JpcHRpb246IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lR29vZERlc2NyaXB0aW9uKHV1aWQsIGxpbmVVdWlkLCBnb29kRGVzY3JpcHRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUNvbGxlY3Rpb25Db2RlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVDb2xsZWN0aW9uQ29kZSh1dWlkLCBsaW5lVXVpZCwgY29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWZpbml0aXZlKHV1aWQ6IHN0cmluZywgZGVmaW5pdGl2ZTogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWZpbml0aXZlKHV1aWQsIGRlZmluaXRpdmUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckRlbGl2ZXJ5QWRkcmVzcyh1dWlkOiBzdHJpbmcsIG5ld05hd05yOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckRlbGl2ZXJ5QWRkcmVzcyh1dWlkLCBuZXdOYXdOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVySW52b2ljZUFkZHJlc3ModXVpZDogc3RyaW5nLCBuZXdOYXdOcjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJJbnZvaWNlQWRkcmVzcyh1dWlkLCBuZXdOYXdOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeURhdGUodXVpZDogc3RyaW5nLCBkYXRlOiBEYXRlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5RGF0ZSh1dWlkLCBkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5RGF0ZURlZmluaXRpdmUodXVpZDogc3RyaW5nLCBkZWZpbml0aXZlOiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5RGF0ZURlZmluaXRpdmUodXVpZCwgZGVmaW5pdGl2ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZW1hcmsodXVpZDogc3RyaW5nLCByZW1hcms6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZW1hcmsodXVpZCwgcmVtYXJrKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlZmVyZW5jZSh1dWlkOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlZmVyZW5jZSh1dWlkLCByZWZlcmVuY2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUmVsYXRpb25SZWZlcmVuY2UodXVpZDogc3RyaW5nLCByZWZlcmVuY2U6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZWxhdGlvblJlZmVyZW5jZSh1dWlkLCByZWZlcmVuY2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckRlcG9zaXRQZXJjZW50YWdlKHV1aWQ6IHN0cmluZywgYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckRlcG9zaXRQZXJjZW50YWdlKHV1aWQsIGFtb3VudCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyRGVwb3NpdEFtb3VudCh1dWlkOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJEZXBvc2l0QW1vdW50KHV1aWQsIGFtb3VudCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QcmVmZXJyZWREZWxpdmVyeURhdGUodXVpZDogc3RyaW5nLCBkYXRlOiBEYXRlLCBvcHRpb246IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QcmVmZXJyZWREZWxpdmVyeURhdGUodXVpZCwgZGF0ZSwgb3B0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5TWV0aG9kKHV1aWQ6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlNZXRob2QodXVpZCwgbWV0aG9kKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9ucyh1dWlkOiBzdHJpbmcsIG9wdGlvbnM6IHN0cmluZ1tdKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9ucyh1dWlkLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblBhcnRpYWxEZWxpdmVyeSh1dWlkOiBzdHJpbmcsIGFsbG93UGFydGlhbDogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QYXJ0aWFsRGVsaXZlcnkodXVpZCwgYWxsb3dQYXJ0aWFsKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkJyYW5jaCh1dWlkOiBzdHJpbmcsIGJyYW5jaDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkJyYW5jaCh1dWlkLCBicmFuY2gpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uT25Ib2xkQ29kZXModXVpZDogc3RyaW5nLCBjb2Rlczogc3RyaW5nW10pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uT25Ib2xkQ29kZXModXVpZCwgY29kZXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGl2aWRlRXZlbmx5KHV1aWQ6IHN0cmluZywgZGl2aWRlRXZlbmx5OiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRpdmlkZUV2ZW5seSh1dWlkLCBkaXZpZGVFdmVubHkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQW1vdW50VG9TZXR0bGUodXVpZDogc3RyaW5nLCBhbW91bnRUb1NldHRsZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkFtb3VudFRvU2V0dGxlKHV1aWQsIGFtb3VudFRvU2V0dGxlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByaWNlS2luZCh1dWlkOiBzdHJpbmcsIHByaWNlS2luZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByaWNlS2luZCh1dWlkLCBwcmljZUtpbmQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQWRtQ29vcmRpbmF0b3IodXVpZDogc3RyaW5nLCByZWxhdGlvbjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkFkbUNvb3JkaW5hdG9yKHV1aWQsIHJlbGF0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkN1cnJlbmN5KHV1aWQ6IHN0cmluZywgY3VycmVuY3lDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQ3VycmVuY3kodXVpZCwgY3VycmVuY3lDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByb2plY3RDb2RlKHV1aWQ6IHN0cmluZywgcHJvamVjdENvZGU6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25Qcm9qZWN0Q29kZSh1dWlkLCBwcm9qZWN0Q29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QYXltZW50Q29uZGl0aW9uKHV1aWQ6IHN0cmluZywgY29uZGl0aW9uOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUGF5bWVudENvbmRpdGlvbih1dWlkLCBjb25kaXRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uSGFuZGxlZEJ5KHV1aWQ6IHN0cmluZywgaGFuZGxlZEJ5OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uSGFuZGxlZEJ5KHV1aWQsIGhhbmRsZWRCeSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25NYXJrZXRpbmcodXVpZDogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uTWFya2V0aW5nKHV1aWQsIGNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGlzY291bnQodXVpZDogc3RyaW5nLCB0eXBlOiBEaXNjb3VudFR5cGUsIGFtb3VudDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRpc2NvdW50KHV1aWQsIHR5cGUsIGFtb3VudCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyU2NvcmluZ0NoYW5jZShyZXF1ZXN0OiBDaGFuZ2VIZWFkZXJTY29yaW5nQ2hhbmNlUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyU2NvcmluZ0NoYW5jZShyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJFeHBlY3RlZFNjb3JpbmdEYXRlKHJlcXVlc3Q6IENoYW5nZUhlYWRlckV4cGVjdGVkU2NvcmluZ0RhdGVSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJFeHBlY3RlZFNjb3JpbmdEYXRlKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclJldGFpbFN0YWRpdW0ocmVxdWVzdDogQ2hhbmdlSGVhZGVyUmV0YWlsU3RhZGl1bVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclJldGFpbFN0YWRpdW0ocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyQXV0b1JlY2FsY3VsYXRlRGVwb3NpdCh1dWlkOiBzdHJpbmcsIG5ld0F1dG9SZWNhbGN1bGF0ZURlcG9zaXQpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckF1dG9SZWNhbGN1bGF0ZURlcG9zaXQodXVpZCwgbmV3QXV0b1JlY2FsY3VsYXRlRGVwb3NpdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVXNlRGVwb3NpdFJ1bGUodXVpZDogc3RyaW5nLCBuZXdVc2VEZXBvc2l0UnVsZTogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVXNlRGVwb3NpdFJ1bGUodXVpZCwgbmV3VXNlRGVwb3NpdFJ1bGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVNlcnZpY2VIZWFkZXJSZXBvcnRNZXNzYWdlKHJlcXVlc3Q6IENoYW5nZVNlcnZpY2VIZWFkZXJSZXBvcnRNZXNzYWdlUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlU2VydmljZUhlYWRlclJlcG9ydE1lc3NhZ2UocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlSW9uZVBheW1lbnRMaW5rQW5kUVJDb2RlKHV1aWQ6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIHBheW1lbnRNZXRob2RDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENyZWF0ZVBheW1lbnRMaW5rUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZUlvbmVQYXltZW50TGlua0FuZFFSQ29kZSh1dWlkLCBhbW91bnQsIHBheW1lbnRNZXRob2RDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQYXltZW50TGlua1N0YXR1cyhwYXltZW50TGlua1VVSUQ6IHN0cmluZyk6IFByb21pc2U8UGF5bWVudExpbmtTdGF0dXM+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGF5bWVudExpbmtTdGF0dXMocGF5bWVudExpbmtVVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRHb29kc1JlY2VpcHRIaXN0b3J5KHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEdvb2RzUmVjZWlwdEhpc3Rvcnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0R29vZHNSZWNlaXB0SGlzdG9yeSh0cmFuc0lkLCBsaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXIocmVxdWVzdDogUmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXIocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlckNvcnJlY3Rpb24ocmVxdWVzdDogUmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlckNvcnJlY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5yZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvbihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQdXJjaGFzZVBvcnRhbExpbmVzKHJlcXVlc3Q6IEdldFB1cmNoYXNlUG9ydGFsTGluZSk6IFByb21pc2U8UHVyY2hhc2VQb3J0YWxMaW5lW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHVyY2hhc2VQb3J0YWxMaW5lcyhyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVQdXJjaGFzZVBvcnRhbExpbmVzKHB1cmNoYXNlUG9ydGFsTGluZTogUHVyY2hhc2VQb3J0YWxMaW5lKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnVwZGF0ZVB1cmNoYXNlUG9ydGFsTGluZXMocHVyY2hhc2VQb3J0YWxMaW5lKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uKHB1cmNoYXNlT3JkZXJDb25maXJtYXRpb246IEdldFB1cmNoYXNlT3JkZXJDb25maXJtYXRpb24pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UucHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbihwdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsaW5rVHJhbnNhY3Rpb25Ub09yZGVyQ29uZmlybWF0aW9uKGFuYWx5c2lzSWQ6IG51bWJlciwgbGluZXM6IE9yZGVyQ29uZmlybWF0aW9uVHJhbnNhY3Rpb25MaW5rW10pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UubGlua1RyYW5zYWN0aW9uVG9PcmRlckNvbmZpcm1hdGlvbihhbmFseXNpc0lkLCBsaW5lcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9ja1B1cmNoYXNlUG9ydGFsTGluZXModHJhbnNJZFB1cmNoYXNlOiBudW1iZXIsIGxpbmVJZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tQdXJjaGFzZVBvcnRhbExpbmVzKHRyYW5zSWRQdXJjaGFzZSwgbGluZUlkKVxuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlQ29tbWlzc2lvbk9yZGVycyh0cmFuc0lkOiBudW1iZXIsIG9ubHlHZW5lcmF0ZUZvckRpcmVjdFNlbGxTdXBwbGllcnM6IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2VuZXJhdGVDb21taXNzaW9uT3JkZXJzKHRyYW5zSWQsIG9ubHlHZW5lcmF0ZUZvckRpcmVjdFNlbGxTdXBwbGllcnMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFuYWx5c2lzUmVzdWx0c0J5QW5hbHlzaXNJZChhbmFseXNpc0lkOiBudW1iZXIpOiBQcm9taXNlPE9yZGVyQ29uZmlybWF0aW9uQW5hbHlzaXNSZXN1bHRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBbmFseXNpc1Jlc3VsdHNCeUFuYWx5c2lzSWQoYW5hbHlzaXNJZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QW5hbHl6ZWRPcmRlckNvbmZpcm1hdGlvbnMoKTogUHJvbWlzZTxBbmFseXplZE9yZGVyQ29uZmlybWF0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QW5hbHl6ZWRPcmRlckNvbmZpcm1hdGlvbnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTdG9ja1N0aWNrZXJUZW1wbGF0ZXMoZGF0YTogU3RvY2tTdGlja2Vyc1ByaW50TGF5b3V0cyk6IFByb21pc2U8U3RvY2tTdGlja2Vyc1ByaW50TGF5b3V0c1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFN0b2NrU3RpY2tlclRlbXBsYXRlcyhkYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBdmFpbGFibGVTdG9ja0dyb3VwZWRCeVdMQlNCeVRyYW5zSWRMaW5lTnIodHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8QXZhaWxhYmxlU3RvY2tbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBdmFpbGFibGVTdG9ja0dyb3VwZWRCeVdMQlNCeVRyYW5zSWRMaW5lTnIodHJhbnNJZCwgbGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBdmFpbGFibGVTdG9ja0ZvclN1cHBsaWVyKGdvb2RJZDogbnVtYmVyLCBzdXBwbGllclJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8U3VwcGxpZXJBcnRpY2xlU3RvY2tGb3JlY2FzdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBdmFpbGFibGVTdG9ja0ZvclN1cHBsaWVyKGdvb2RJZCwgc3VwcGxpZXJSZWxhdGlvbklkKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VMaW5lRGlyZWN0U2VsbChyZXF1ZXN0OiBDaGFuZ2VMaW5lRGlyZWN0U2VsbFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlTGluZURpcmVjdFNlbGwocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXIocmVxdWVzdDogQWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5hbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlckNvcnJlY3Rpb24ocmVxdWVzdDogQWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJDb3JyZWN0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuYWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJDb3JyZWN0aW9uKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdvb2RzQWxsb2NhdGlvbkhpc3RvcnkodHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8R29vZHNBbGxvY2F0aW9uSGlzdG9yeT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRHb29kc0FsbG9jYXRpb25IaXN0b3J5KHRyYW5zSWQsIGxpbmVOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZHNUb0JlUGlja2VkSGlzdG9yeSh0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxHb29kc1RvQmVQaWNrZWRIaXN0b3J5PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEdvb2RzVG9CZVBpY2tlZEhpc3RvcnkodHJhbnNJZCwgbGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRHb29kc1BpY2tlZEhpc3RvcnkodHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8R29vZHNQaWNrZWRIaXN0b3J5PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEdvb2RzUGlja2VkSGlzdG9yeSh0cmFuc0lkLCBsaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZUdvb2RzUGlja2VkKGRlbGV0ZUdvb2RzUGlja2VkRm9yT3JkZXJSZXF1ZXN0OiBEZWxldGVHb29kc1BpY2tlZEZvck9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlR29vZHNQaWNrZWQoZGVsZXRlR29vZHNQaWNrZWRGb3JPcmRlclJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZUdvb2RzVG9CZVBpY2tlZChkZWxldGVHb29kc1RvQmVQaWNrZWRGb3JPcmRlclJlcXVlc3Q6IERlbGV0ZUdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlR29vZHNUb0JlUGlja2VkKGRlbGV0ZUdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0R29vZHNUb0JlUGlja2VkRm9yU2FsZXNPcmRlcihyZXF1ZXN0OiBHb29kc1RvQmVQaWNrZWRGb3JPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnNldEdvb2RzVG9CZVBpY2tlZEZvclNhbGVzT3JkZXIocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0R29vZHNQaWNrZWRGb3JPcmRlcihyZXF1ZXN0OiBHb29kc1BpY2tlZFJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnNldEdvb2RzUGlja2VkRm9yT3JkZXIocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJDb25maXJtYXRpb25FbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0T3JkZXJDb25maXJtYXRpb25FbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDYXNoT25EZWxpdmVyeURhdGEodXVpZDogc3RyaW5nKTogUHJvbWlzZTxDYXNoT25EZWxpdmVyeURhdGE+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q2FzaE9uRGVsaXZlcnlEYXRhKHV1aWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckNhc2hPbkRlbGl2ZXJ5QW1vdW50KHJlcXVlc3Q6IENoYW5nZUhlYWRlckNhc2hPbkRlbGl2ZXJ5QW1vdW50UmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJDYXNoT25EZWxpdmVyeUFtb3VudChyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckNvbmZpcm1hdGlvblByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckNvbmZpcm1hdGlvblByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9yZGVyQ29uZmlybWF0aW9uRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0T3JkZXJDb25maXJtYXRpb25EZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvck9yZGVyQ29uZmlybWF0aW9uKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvck9yZGVyQ29uZmlybWF0aW9uKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0OiBQcmludE9yZGVyQ29uZmlybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludEhpc3RvcmljT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdDogUHJpbnRIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludEhpc3RvcmljT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0OiBFbWFpbE9yZGVyQ29uZmlybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbEhpc3RvcmljT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdDogRW1haWxIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbEhpc3RvcmljT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdDogUGRmT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3Q6IFBkZkhpc3RvcmljT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZkhpc3RvcmljT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRQdXJjaGFzZU9yZGVyKHJlcXVlc3Q6IFByaW50UHVyY2hhc2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRQdXJjaGFzZU9yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsUHVyY2hhc2VPcmRlcihyZXF1ZXN0OiBFbWFpbFB1cmNoYXNlT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsUHVyY2hhc2VPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZQdXJjaGFzZU9yZGVyKHJlcXVlc3Q6IFBkZlB1cmNoYXNlT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZlB1cmNoYXNlT3JkZXIocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHVyY2hhc2VPcmRlckVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQdXJjaGFzZU9yZGVyRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHVyY2hhc2VPcmRlclByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQdXJjaGFzZU9yZGVyUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHVyY2hhc2VPcmRlckRlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFB1cmNoYXNlT3JkZXJEZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZW5lcmF0ZUFuZFNlbmRQdXJjaGFzZU9yZGVyc0ZvclNhbGVzT3JkZXIocmVxdWVzdDogUHJpbnRQdXJjaGFzZU9yZGVyRm9yU2FsZXNPcmRlclJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2VuZXJhdGVBbmRTZW5kUHVyY2hhc2VPcmRlcnNGb3JTYWxlc09yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFB1cmNoYXNlQWR2aWNlTGluZXMoZmlsdGVyczogUHVyY2hhc2VBZHZpY2VGaWx0ZXJzLCBnb29kSWQ/OiBudW1iZXIsIHNob3dMb2FkZXI/OiBib29sZWFuKTogUHJvbWlzZTxQdXJjaGFzZUFkdmljZUxpbmVbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQdXJjaGFzZUFkdmljZUxpbmVzKGZpbHRlcnMsIGdvb2RJZCwgc2hvd0xvYWRlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2VuZXJhdGVBbmRTZW5kUHVyY2hhc2VPcmRlcnMocHVyY2hhc2VBZHZpY2VMaW5lczogUHVyY2hhc2VBZHZpY2VMaW5lW10pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2VuZXJhdGVBbmRTZW5kUHVyY2hhc2VPcmRlcnMocHVyY2hhc2VBZHZpY2VMaW5lcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxEZWxpdmVyeU5vdGUoZW1haWxEZWxpdmVyeU5vdGVSZXF1ZXN0OiBFbWFpbERlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsRGVsaXZlcnlOb3RlKGVtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZShlbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdDogRW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZShlbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmRGVsaXZlcnlOb3RlKHBkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IFBkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucGRmRGVsaXZlcnlOb3RlKHBkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZkhpc3RvcmljRGVsaXZlcnlOb3RlKHBkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdDogUGRmSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZkhpc3RvcmljRGVsaXZlcnlOb3RlKHBkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnREZWxpdmVyeU5vdGUocHJpbnREZWxpdmVyeU5vdGVSZXF1ZXN0OiBQcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50RGVsaXZlcnlOb3RlKHByaW50RGVsaXZlcnlOb3RlUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnREZWxpdmVyeU5vdGVzKHByaW50RGVsaXZlcnlOb3Rlc1JlcXVlc3Q6IFByaW50RGVsaXZlcnlOb3Rlc1JlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50RGVsaXZlcnlOb3RlcyhwcmludERlbGl2ZXJ5Tm90ZXNSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludEhpc3RvcmljRGVsaXZlcnlOb3RlKHByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0OiBQcmludEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludEhpc3RvcmljRGVsaXZlcnlOb3RlKHByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU5vdGVEZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeU5vdGVEZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU5vdGVFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVsaXZlcnlOb3RlUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlbGl2ZXJ5Tm90ZVByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9ySW52b2ljZSh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JJbnZvaWNlKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxJbnZvaWNlKGVtYWlsSW52b2ljZVJlcXVlc3Q6IEVtYWlsSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsSW52b2ljZShlbWFpbEludm9pY2VSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbEhpc3RvcmljSW52b2ljZShlbWFpbEhpc3RvcmljSW52b2ljZVJlcXVlc3Q6IEVtYWlsSGlzdG9yaWNJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbEhpc3RvcmljSW52b2ljZShlbWFpbEhpc3RvcmljSW52b2ljZVJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZkludm9pY2UocGRmSW52b2ljZVJlcXVlc3Q6IFBkZkludm9pY2VSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZkludm9pY2UocGRmSW52b2ljZVJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZkhpc3RvcmljSW52b2ljZShwZGZIaXN0b3JpY0ludm9pY2VSZXF1ZXN0OiBQZGZIaXN0b3JpY0ludm9pY2VSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZkhpc3RvcmljSW52b2ljZShwZGZIaXN0b3JpY0ludm9pY2VSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludEludm9pY2UocHJpbnRJbnZvaWNlUmVxdWVzdDogUHJpbnRJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRJbnZvaWNlKHByaW50SW52b2ljZVJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50SGlzdG9yaWNJbnZvaWNlKHByaW50SGlzdG9yaWNJbnZvaWNlUmVxdWVzdDogUHJpbnRIaXN0b3JpY0ludm9pY2VSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50SGlzdG9yaWNJbnZvaWNlKHByaW50SGlzdG9yaWNJbnZvaWNlUmVxdWVzdCk7XG4gIH1cblxuICAvLyBwdWJsaWMgYXN5bmMgZ2V0SW52b2ljZURlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gIC8vICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEludm9pY2VEZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkKTtcbiAgLy8gfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZQb3NSZWNlaXB0KHBkZlBvc1JlY2VpcHRSZXF1ZXN0OiBQZGZQb3NSZWNlaXB0UmVxdWVzdCk6IFByb21pc2U8UGRmUG9zUmVjZWlwdFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZlBvc1JlY2VpcHQocGRmUG9zUmVjZWlwdFJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50UG9zUmVjZWlwdChwcmludFBvc1JlY2VpcHRSZXF1ZXN0OiBQcmludFBvc1JlY2VpcHRSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50UG9zUmVjZWlwdChwcmludFBvc1JlY2VpcHRSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludEhpc3RvcmljUG9zUmVjZWlwdChwcmludEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3Q6IFByaW50SGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludEhpc3RvcmljUG9zUmVjZWlwdChwcmludEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsUG9zUmVjZWlwdChlbWFpbFBvc1JlY2VpcHRSZXF1ZXN0OiBFbWFpbFBvc1JlY2VpcHRSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsUG9zUmVjZWlwdChlbWFpbFBvc1JlY2VpcHRSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbEhpc3RvcmljUG9zUmVjZWlwdChlbWFpbEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3Q6IEVtYWlsSGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbEhpc3RvcmljUG9zUmVjZWlwdChlbWFpbEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBvc1JlY2VpcHRFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UG9zUmVjZWlwdEVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBvc1JlY2VpcHRQcmludExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UG9zUmVjZWlwdFByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yUG9zUmVjZWlwdCh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JQb3NSZWNlaXB0KHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW52b2ljZUVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbnZvaWNlRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW52b2ljZVByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbnZvaWNlUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UXVvdGF0aW9uRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UXVvdGF0aW9uRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxRdW90YXRpb24oZW1haWxRdW90YXRpb25SZXF1ZXN0OiBFbWFpbFF1b3RhdGlvblJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsUXVvdGF0aW9uKGVtYWlsUXVvdGF0aW9uUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxIaXN0b3JpY1F1b3RhdGlvbihlbWFpbEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdDogRW1haWxIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxIaXN0b3JpY1F1b3RhdGlvbihlbWFpbEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmUXVvdGF0aW9uKHBkZlF1b3RhdGlvblJlcXVlc3Q6IFBkZlF1b3RhdGlvblJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucGRmUXVvdGF0aW9uKHBkZlF1b3RhdGlvblJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZkhpc3RvcmljUXVvdGF0aW9uKHBkZkhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdDogUGRmSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZkhpc3RvcmljUXVvdGF0aW9uKHBkZkhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRRdW90YXRpb24ocHJpbnRRdW90YXRpb25SZXF1ZXN0OiBQcmludFF1b3RhdGlvblJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50UXVvdGF0aW9uKHByaW50UXVvdGF0aW9uUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRIaXN0b3JpY1F1b3RhdGlvbihwcmludEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdDogUHJpbnRIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRIaXN0b3JpY1F1b3RhdGlvbihwcmludEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UXVvdGF0aW9uRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFF1b3RhdGlvbkVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFF1b3RhdGlvblByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRRdW90YXRpb25QcmludExheW91dHModHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvclF1b3RhdGlvbih0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JRdW90YXRpb24odHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQcmludGVycygpOiBQcm9taXNlPFByaW50ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8UHJpbnRlcj4oUHJpbnRlciwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFByaW50ZXJzKClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEN1cnJlbmNpZXMoYWN0aXZlOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8Q3VycmVuY3lbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDdXJyZW5jaWVzKGFjdGl2ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q2FzaFR5cGVzKHR5cGU6IHN0cmluZyk6IFByb21pc2U8Q2FzaFR5cGVbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDYXNoVHlwZXModHlwZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UG9zR3JvdXBzKCk6IFByb21pc2U8UG9zR3JvdXBbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQb3NHcm91cHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQcm9qZWN0Q29kZXMoZGF0ZTogRGF0ZSk6IFByb21pc2U8UHJvamVjdENvZGVbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQcm9qZWN0Q29kZXMoZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGF5bWVudENvbmRpdGlvbnMobmFtZT86IHN0cmluZyk6IFByb21pc2U8UGF5bWVudENvbmRpdGlvbltdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBheW1lbnRDb25kaXRpb25zKG5hbWUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9yZGVyTGluZVNldENhdGVnb3JpZXMoKTogUHJvbWlzZTxPcmRlckxpbmVTZXRDYXRlZ29yeVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9yZGVyTGluZVNldENhdGVnb3JpZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTZXJ2aWNlV2l6YXJkKCk6IFByb21pc2U8U2VydmljZVdpemFyZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTZXJ2aWNlV2l6YXJkKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkT3JkZXJMaW5lU2V0KHJlcXVlc3Q6IFRyYW5zYWN0aW9uQWRkT3JkZXJMaW5lU2V0VGV4dExpbmVSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRPcmRlckxpbmVTZXQocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlT3JkZXJMaW5lU2V0KHJlcXVlc3Q6IE9yZGVyTGluZVNldERUTyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlT3JkZXJMaW5lU2V0KHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZU9yZGVyTGluZVNldCh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lT3JkZXJMaW5lU2V0KHV1aWQsIGxpbmVVdWlkLCBjb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRKb2luZWRUYWdzKHRhYmxlOiBzdHJpbmcsIGtleTogc3RyaW5nKTogUHJvbWlzZTxUYWdUcmVlSXRlbVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEpvaW5lZFRhZ3ModGFibGUsIGtleSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbWVyZ2VKb2luZWRUYWdzKHRhYmxlOiBzdHJpbmcsIGtleTogc3RyaW5nLCB0YWdzOiBUYWdUcmVlSXRlbVtdKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLm1lcmdlSm9pbmVkVGFncyh0YWJsZSwga2V5LCB0YWdzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUYWdzRnVsbFRyZWUoY2F0ZWdvcnk6IFRhZ0NhdGVnb3J5LCBpbmNsdWRlVGFnczogYm9vbGVhbik6IFByb21pc2U8VGFnVHJlZUl0ZW1bXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUYWdzRnVsbFRyZWUoY2F0ZWdvcnksIGluY2x1ZGVUYWdzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc2FjdGlvbkluZm8odHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvSGlzdG9yeVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zYWN0aW9uSW5mbyh0cmFuc0lkLCBsaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFJlZlRyYW5zYWN0aW9ucyh0cmFuc0lkOiBudW1iZXIpOiBQcm9taXNlPFJlZlRyYW5zYWN0aW9uW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UmVmVHJhbnNhY3Rpb25zKHRyYW5zSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEludGVybmFsUGFyYW1ldGVyVmFsdWUocGFyYW06IEludGVybmFsUGFyYW0pOiBQcm9taXNlPEludGVybmFsUGFyYW0+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0U2lubGdlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8SW50ZXJuYWxQYXJhbT4oSW50ZXJuYWxQYXJhbSwgKHBhcmFtOiBJbnRlcm5hbFBhcmFtKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SW50ZXJuYWxQYXJhbWV0ZXJWYWx1ZShwYXJhbSk7XG4gICAgfSkuZ2V0VmFsdWUocGFyYW0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9iamVjdENvbmZpZ3VyYXRpb24oc2NyZWVuQ2ZnTW9kdWxlOiBzdHJpbmcsIHBhcmFtcz86IHN0cmluZyB8IHN0cmluZ1tdLCBpbnNlcnRNb2RlPzogYm9vbGVhbik6IFByb21pc2U8T2JqZWN0Q29uZmlndXJhdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8T2JqZWN0Q29uZmlndXJhdGlvbj4oT2JqZWN0Q29uZmlndXJhdGlvbiwgKHNjcmVlbkNmZ01vZHVsZTogc3RyaW5nLCBwYXJhbXM/OiBzdHJpbmcgfCBzdHJpbmdbXSwgaW5zZXJ0TW9kZT86IGJvb2xlYW4pID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPYmplY3RDb25maWd1cmF0aW9uKHNjcmVlbkNmZ01vZHVsZSwgcGFyYW1zLCBpbnNlcnRNb2RlKTtcbiAgICB9KS5nZXRWYWx1ZShzY3JlZW5DZmdNb2R1bGUsIHBhcmFtcywgaW5zZXJ0TW9kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SGlzdG9yaWNEb2N1bWVudHModHJhbnNJZDogbnVtYmVyLCBkb2N1bWVudENvZGU6IExheW91dENvZGUpOiBQcm9taXNlPEhpc3RvcmljUmVwb3J0W10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SGlzdG9yaWNEb2N1bWVudHModHJhbnNJZCwgZG9jdW1lbnRDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQYWNrYWdlU3RpY2tlclByaW50TGF5b3V0cygpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGFja2FnZVN0aWNrZXJQcmludExheW91dHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb3B5U2FsZXNPcmRlcihjb3B5VHJhbnNhY3Rpb25SZXF1ZXN0OiBDb3B5VHJhbnNhY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5jb3B5U2FsZXNPcmRlcihjb3B5VHJhbnNhY3Rpb25SZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb3B5UHVyY2hhc2VPcmRlcihjb3B5VHJhbnNhY3Rpb25SZXF1ZXN0OiBDb3B5VHJhbnNhY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5jb3B5UHVyY2hhc2VPcmRlcihjb3B5VHJhbnNhY3Rpb25SZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb3B5U2FsZXNRdW90YXRpb24oY29weVRyYW5zYWN0aW9uUmVxdWVzdDogQ29weVRyYW5zYWN0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuY29weVNhbGVzUXVvdGF0aW9uKGNvcHlUcmFuc2FjdGlvblJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZEV4dGVybmFsQ2F0YWxvZ0FydGljbGVzVG9UcmFuc2FjdGlvbih1dWlkOiBzdHJpbmcsIGNhdGFsb2dJZDogbnVtYmVyLCByYXdEYXRhOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZEV4dGVybmFsQ2F0YWxvZ0FydGljbGVzVG9UcmFuc2FjdGlvbih1dWlkLCBjYXRhbG9nSWQsIHJhd0RhdGEpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFBheW1lbnRMaW5lVG9UcmFuc2FjdGlvbihyZXF1ZXN0OiBUcmFuc2FjdGlvbkFkZFBheW1lbnRMaW5lUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuYWRkUGF5bWVudExpbmVUb1RyYW5zYWN0aW9uKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50U2FsZXNPcmRlcnNPdmVydmlldyhyZXF1ZXN0OiBUcmFuc2FjdGlvblNlYXJjaFZpZXdSZXF1ZXN0KTogUHJvbWlzZTxQZGZUcmFuc2FjdGlvblNlYXJjaE92ZXJ2aWV3UmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRTYWxlc09yZGVyc092ZXJ2aWV3KHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlbmRQYWNrYWdlSW5mb3JtYXRpb25Ub0xTUChyZXF1ZXN0OiBUcmFuc2FjdGlvbkxzcEluZm9ybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2Uuc2VuZFBhY2thZ2VJbmZvcm1hdGlvblRvTFNQKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBhY2thZ2VJbmZvcm1hdGlvbih0cmFuc2FjdGlvblVVSUQ6IHN0cmluZywgbGluZVVVSUQ6IHN0cmluZyk6IFByb21pc2U8UGFja2FnZUxTUFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBhY2thZ2VJbmZvcm1hdGlvbih0cmFuc2FjdGlvblVVSUQsIGxpbmVVVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRMb2dpc3RpY3NQYXJ0bmVycygpOiBQcm9taXNlPERlbGl2ZXJ5TWV0aG9kW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0TG9naXN0aWNzUGFydG5lcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQbGFubmluZ1NvdXJjZXMoKTogUHJvbWlzZTxQbGFubmluZ1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBsYW5uaW5nU291cmNlcygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBsYW5PcmRlcnMoZmlsdGVyT2JqZWN0OiBQbGFubmluZ0ZpbHRlck9iamVjdCwgcGxhbm5pbmdJZDogbnVtYmVyKTogUHJvbWlzZTxQbGFuT3JkZXJbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQbGFuT3JkZXJzKGZpbHRlck9iamVjdCwgcGxhbm5pbmdJZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGxhblRyYW5zcG9ydFdlZWsoc3RhcnREYXRlOiBEYXRlLCBwbGFubmluZ0lkOiBudW1iZXIpOiBQcm9taXNlPFBsYW5uaW5nVHJhbnNwb3J0V2Vla1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBsYW5UcmFuc3BvcnRXZWVrKHN0YXJ0RGF0ZSwgcGxhbm5pbmdJZCk7XG4gIH1cblxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVQbGFuVHJhbnNwb3J0V2VlayhwbGFuVHJhbnNwb3J0V2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrKTogUHJvbWlzZTxQbGFubmluZ1RyYW5zcG9ydFdlZWs+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlUGxhblRyYW5zcG9ydFdlZWsocGxhblRyYW5zcG9ydFdlZWspO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWREb2N1bWVudHNPZlRyYW5zYWN0aW9uKGtleTogc3RyaW5nKTogUHJvbWlzZTxDb0RvY3VtZW50W10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UubG9hZERvY3VtZW50c09mVHJhbnNhY3Rpb24oa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkRG9jdW1lbnRDb250ZW50KGRvY0lkOiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREb2N1bWVudENvbnRlbnQoZG9jSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG1lcmdlRG9jdW1lbnRPblRyYW5zYWN0aW9uKGtleTogc3RyaW5nLCBkb2N1bWVudDogQ29Eb2N1bWVudCk6IFByb21pc2U8Q29Eb2N1bWVudD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5tZXJnZURvY3VtZW50T25UcmFuc2FjdGlvbihrZXksIGRvY3VtZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVEb2N1bWVudChkb2N1bWVudElkOiBudW1iZXIpOiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlRG9jdW1lbnQoZG9jdW1lbnRJZCk7XG4gIH1cbiAgcHVibGljIGFzeW5jIGluc2VydEFjdGl2aXR5KGFjdGl2aXR5OiBBY3Rpdml0eSk6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5pbnNlcnRBY3Rpdml0eShhY3Rpdml0eSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlQWN0aXZpdHkoYWN0aXZpdHk6IEFjdGl2aXR5KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnVwZGF0ZUFjdGl2aXR5KGFjdGl2aXR5KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDb21wb25lbnRBY3Rpdml0aWVzV2l0aG91dFJlbGF0aW9uRmlsdGVyaW5nKHRyYW5zYWN0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8QWN0aXZpdHlbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDb21wb25lbnRBY3Rpdml0aWVzV2l0aG91dFJlbGF0aW9uRmlsdGVyaW5nKHRyYW5zYWN0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEhpc3RvcmljQWN0aXZpdGllcyh0cmFuc2FjdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPEFjdGl2aXR5W10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SGlzdG9yaWNBY3Rpdml0aWVzKHRyYW5zYWN0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRyYW5zYWN0aW9uTWFyZ2luSW5mbyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25NYXJnaW5JbmZvPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zYWN0aW9uTWFyZ2luSW5mbyh0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRyYW5zcG9ydE9yZGVycyhyZXF1ZXN0OiBHZXRUcmFuc3BvcnRPcmRlcnNSZXF1ZXN0KTogUHJvbWlzZTxQbGFuT3JkZXJbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc3BvcnRPcmRlcnMocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJMaW5lc1RvUGxhbihyZXF1ZXN0OiBPcmRlckxpbmVzVG9QbGFuUmVxdWVzdCk6IFByb21pc2U8UGxhbk9yZGVyTGluZVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9yZGVyTGluZXNUb1BsYW4ocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJMaW5lc1BsYW5uZWQocmVxdWVzdDogT3JkZXJMaW5lc1BsYW5uZWRSZXF1ZXN0KTogUHJvbWlzZTxQbGFuT3JkZXJMaW5lW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0T3JkZXJMaW5lc1BsYW5uZWQocmVxdWVzdCk7XG4gIH1cblxuXG5cbiAgcHVibGljIGFzeW5jIHVuZG9EZWxpdmVyeUJ5UmVwb3J0SWQocmVwb3J0SWQ6IG51bWJlcik6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UudW5kb0RlbGl2ZXJ5QnlSZXBvcnRJZChyZXBvcnRJZCk7XG4gIH1cbiAgcHVibGljIGFzeW5jIGZpcmVUcmlnZ2VyKHdvcmtGbG93UHJvY2Vzc0lkOiBudW1iZXIsIHNlcXVlbmNlOiBudW1iZXIsIHRyaWdnZXJJZDogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZpcmVUcmlnZ2VyKHdvcmtGbG93UHJvY2Vzc0lkLCBzZXF1ZW5jZSwgdHJpZ2dlcklkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBmaXJlR2VuZXJpY1RyaWdnZXIod29ya0Zsb3dQcm9jZXNzSWQ6IG51bWJlciwgZ2VuZXJpY1RyYW5zaXRpb25JZDogbnVtYmVyLCByZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZmlyZUdlbmVyaWNUcmlnZ2VyKHdvcmtGbG93UHJvY2Vzc0lkLCBnZW5lcmljVHJhbnNpdGlvbklkLCByZWxhdGlvbklkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2NrVGFzayhpZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tUYXNrKGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVBY3Rpdml0eShhY3Rpdml0eTogQWN0aXZpdHkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlQWN0aXZpdHkoYWN0aXZpdHkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yUHVyY2hhc2VPcmRlcih1dWlkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yUHVyY2hhc2VPcmRlcih1dWlkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQbGFuT3JkZXIodHJhbnNJZDogbnVtYmVyKTogUHJvbWlzZTxQbGFuT3JkZXI+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGxhbk9yZGVyKHRyYW5zSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvbnZlcnRDYXNoUmVnaXN0ZXJPcmRlclRvU2FsZXNPcmRlcih1dWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvbnZlcnRDYXNoUmVnaXN0ZXJPcmRlclRvU2FsZXNPcmRlcih1dWlkKTtcbiAgfVxuXG5cbn1cbiJdfQ==
|
|
1402
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRzVFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUN4RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFFMUUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUt2RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUUzRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFFckYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBRWhGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUMxRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFHN0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQWtCNUUsT0FBTyxFQUFDLHFDQUFxQyxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDakgsT0FBTyxFQUNMLGtEQUFrRCxFQUNuRCxNQUFNLDBFQUEwRSxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzNGLE9BQU8s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Ozs7O1lBam5DRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQXRMTyxrQ0FBa0M7WUFDbEMsbUNBQW1DO1lBTG5DLHFDQUFxQztZQUUzQyxrREFBa0Q7WUE4Q2xELGdEQUFnRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hcmtldGluZ30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL21hcmtldGluZy5ibyc7XG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1yZXNwb25zZS5ibyc7XG5pbXBvcnQge1RyYW5zYWN0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vdHJhbnNhY3Rpb24ta2luZC5lbnVtJztcbmltcG9ydCB7Q291bnRyeX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NvdW50cnkuYm8nO1xuaW1wb3J0IHtMYW5ndWFnZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2xhbmd1YWdlLmJvJztcbmltcG9ydCB7U2VxdWVuY2VOYW1lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9zZXF1ZW5jZS1uYW1lLmVudW0nO1xuaW1wb3J0IHtEZWxpdmVyeU1ldGhvZH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LW1ldGhvZC5ibyc7XG5pbXBvcnQge0RlbGl2ZXJ5T3B0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktb3B0aW9uLmJvJztcbmltcG9ydCB7XG4gIEdldFBvc3RhbENvZGVSZXRyaWV2YWxPdXRwdXRQYXJhbXNcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dldC1wb3N0YWwtY29kZS1yZXRyaWV2YWwtb3V0cHV0LXBhcmFtcyc7XG5pbXBvcnQge1RyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWFydGljbGUtd2FyZWhvdXNlLmJvJztcbmltcG9ydCB7QXJ0aWNsZUZ1bGxPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWZ1bGwtb2JqZWN0JztcbmltcG9ydCB7U3RhbmRhcmRUZXh0fSBmcm9tICcuLi9tb2RlbC9zdGFuZGFyZC10ZXh0JztcbmltcG9ydCB7Q3VzdG9tZXJHcm91cH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2N1c3RvbWVyLWdyb3VwLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ibyc7XG5pbXBvcnQge0Nhc2hSZWdpc3Rlcn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtcmVnaXN0ZXInO1xuaW1wb3J0IHtSZXNvbHZlTGluZVBlbmRpbmdSZWFzb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVzb2x2ZS1wZW5kaW5nLXJlYXNvbi1yZXF1ZXN0LmJvJztcbmltcG9ydCB7UHJpY2VMaXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpY2UtbGlzdCc7XG5pbXBvcnQge1ZhdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ZhdCc7XG5pbXBvcnQge0Rpc2NvdW50VHlwZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vZGlzY291bnQtdHlwZS5lbnVtJztcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hWaWV3UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLXNlYXJjaC12aWV3LXJlcXVlc3QnO1xuaW1wb3J0IHtPbkhvbGRDb2RlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb24taG9sZC1jb2RlLmJvJztcbmltcG9ydCB7V2FyZWhvdXNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvd2FyZWhvdXNlLmJvJztcbmltcG9ydCB7Q29kZURlc2NyaXB0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY29kZS1kZXNjcmlwdGlvbic7XG5pbXBvcnQge1xuICBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVjZWl2ZS1nb29kcy1mb3ItcHVyY2hhc2Utb3JkZXItcmVxdWVzdC5ibyc7XG5pbXBvcnQge1xuICBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvblJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlY2VpdmUtZ29vZHMtZm9yLXB1cmNoYXNlLW9yZGVyLWNvcnJlY3Rpb24tcmVxdWVzdC5ibyc7XG5pbXBvcnQge0Nhc2hPbkRlbGl2ZXJ5RGF0YX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtb24tZGVsaXZlcnktZGF0YSc7XG5pbXBvcnQge0NoYW5nZUhlYWRlckNhc2hPbkRlbGl2ZXJ5QW1vdW50UmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2UtaGVhZGVyLWNhc2gtb24tZGVsaXZlcnktYW1vdW50LXJlcXVlc3RcIjtcbmltcG9ydCB7R2V0UHVyY2hhc2VQb3J0YWxMaW5lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXB1cmNoYXNlLXBvcnRhbC1saW5lJztcbmltcG9ydCB7UHVyY2hhc2VQb3J0YWxMaW5lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHVyY2hhc2UtcG9ydGFsLWxpbmUuYm8nO1xuaW1wb3J0IHtDcmVhdGVQYXltZW50TGlua1Jlc3VsdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1wYXltZW50LWxpbmstcmVzdWx0LmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hSZXN1bHR9IGZyb20gJy4uL21vZGVsL3RyYW5zYWN0aW9uLXNlYXJjaC1yZXN1bHQnO1xuaW1wb3J0IHtcbiAgUmVzb2x2ZUhlYWRlclBlbmRpbmdSZWFzb25SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvbHZlLWhlYWRlci1wZW5kaW5nLXJlYXNvbi1yZXF1ZXN0LmJvJztcbmltcG9ydCB7UGF5bWVudExpbmtTdGF0dXN9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wYXltZW50LWxpbmstc3RhdHVzLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvc2VydmljZS90cmFuc2FjdGlvbi1zZWxlY3QtbXVsdGlwbGUtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvblNlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZVxufSBmcm9tICcuLi9jYWNoZS9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNlbGVjdC1tdWx0aXBsZS1wYXJhbWV0ZXJpemVkLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlfSBmcm9tICcuL3RyYW5zYWN0aW9uLWNvbm5lY3Rvci1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlbGVjdFNpbmdsZUNhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvc2VydmljZS90cmFuc2FjdGlvbi1zZWxlY3Qtc2luZ2xlLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHtHZXRQdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXB1cmNoYXNlLW9yZGVyLWNvbmZpcm1hdGlvbic7XG5pbXBvcnQge1RyYW5zYWN0aW9uTG9ja1Jlc3VsdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxvY2stcmVzdWx0LmJvJztcbmltcG9ydCB7UHJpdmFjeVNldHRpbmd9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3ByaXZhY3ktc2V0dGluZy5ibyc7XG5pbXBvcnQge1JlbGF0aW9uUHJpdmFjeVNldHRpbmd9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1wcml2YWN5LXNldHRpbmcuYm8nO1xuaW1wb3J0IHtDb0RvbWFpblZhbHVlfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb21haW4tdmFsdWUuYm8nO1xuaW1wb3J0IHtTYWxlc1BlcnNvbn0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3NhbGVzLXBlcnNvbi5ibyc7XG5pbXBvcnQge1RhZ30gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvdGFnJztcbmltcG9ydCB7U3RvY2tTdGlja2Vyc1ByaW50TGF5b3V0c30gZnJvbSAnQGNvbGlqbml0L3NoYXJlZGFwaS9idWlsZC9tb2RlbC9yZXBvcnQvc3RvY2stc3RpY2tlcnMtcHJpbnQtbGF5b3V0cy5ibyc7XG5pbXBvcnQge0F2YWlsYWJsZVN0b2NrfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYXZhaWxhYmxlLXN0b2NrLmJvJztcbmltcG9ydCB7XG4gIEFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWxsb2NhdGUtZ29vZHMtZm9yLXNhbGVzLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgQWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJDb3JyZWN0aW9uUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWxsb2NhdGUtZ29vZHMtZm9yLXNhbGVzLW9yZGVyLWNvcnJlY3Rpb24tcmVxdWVzdCc7XG5pbXBvcnQge1JlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQtbGF5b3V0LXNlbGVjdGlvbi1lbWFpbC5ibyc7XG5pbXBvcnQge1JlcG9ydExheW91dFNlbGVjdGlvblByaW50fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQtbGF5b3V0LXNlbGVjdGlvbi1wcmludC5ibyc7XG5pbXBvcnQge0NyZWF0ZVNhbGVzT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXNhbGVzLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtDcmVhdGVDYXNoUmVnaXN0ZXJPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtY2FzaC1yZWdpc3Rlci1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7Q3JlYXRlUHVyY2hhc2VPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtcHVyY2hhc2Utb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge0NyZWF0ZVNlcnZpY2VPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtc2VydmljZS1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7Q3JlYXRlU2FsZXNRdW90YXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXNhbGVzLXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UHVyY2hhc2VBZHZpY2VGaWx0ZXJzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHVyY2hhc2UtYWR2aWNlLWZpbHRlcnMnO1xuaW1wb3J0IHtQdXJjaGFzZUFkdmljZUxpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wdXJjaGFzZS1hZHZpY2UtbGluZS5ibyc7XG5pbXBvcnQge0VtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XG5pbXBvcnQge1BkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcbmltcG9ydCB7UHJpbnREZWxpdmVyeU5vdGVSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvSGlzdG9yeX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWluZm8taGlzdG9yeS5ibyc7XG5pbXBvcnQge0VtYWlsSW52b2ljZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtQZGZJbnZvaWNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludEludm9pY2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtaW52b2ljZS1yZXF1ZXN0JztcbmltcG9ydCB7UmVmVHJhbnNhY3Rpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWYtdHJhbnNhY3Rpb24uYm8nO1xuaW1wb3J0IHtUYWdUcmVlSXRlbX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvdGFnLXRyZWUtaXRlbS5ibyc7XG5pbXBvcnQge0ludGVybmFsUGFyYW19IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vaW50ZXJuYWwtcGFyYW0uZW51bSc7XG5pbXBvcnQge0dvb2RzUmVjZWlwdEhpc3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy1yZWNlaXB0LWhpc3RvcnkuYm8nO1xuaW1wb3J0IHtHb29kc0FsbG9jYXRpb25IaXN0b3J5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtYWxsb2NhdGlvbi1oaXN0b3J5LmJvJztcbmltcG9ydCB7TGF5b3V0Q29kZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vbGF5b3V0LWNvZGUuZW51bSc7XG5pbXBvcnQge0hpc3RvcmljUmVwb3J0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvaGlzdG9yaWMtcmVwb3J0LmJvJztcbmltcG9ydCB7UHJpbnRlcn0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcHJpbnRlci5ibyc7XG5pbXBvcnQge0N1cnJlbmN5fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jdXJyZW5jeS5ibyc7XG5pbXBvcnQge1BheW1lbnRDb25kaXRpb259IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3BheW1lbnQtY29uZGl0aW9uLmJvJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uU2VsZWN0U2luZ2xlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZVxufSBmcm9tICcuLi9jYWNoZS9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNlbGVjdC1zaW5nbGUtcGFyYW1ldGVyaXplZC1jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtdG8tYmUtcGlja2VkLWZvci1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7V2FyZWhvdXNlU3RvY2tJbmZvfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvd2FyZWhvdXNlLXN0b2NrLWluZm8uYm8nO1xuaW1wb3J0IHtHb29kc1RvQmVQaWNrZWRIaXN0b3J5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtdG8tYmUtcGlja2VkLWhpc3RvcnknO1xuaW1wb3J0IHtHb29kc1BpY2tlZEhpc3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy1waWNrZWQtaGlzdG9yeSc7XG5pbXBvcnQge1BkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1oaXN0b3JpYy1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgRW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWhpc3RvcmljLWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XG5pbXBvcnQge1xuICBQcmludEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtaGlzdG9yaWMtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIFByaW50SGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvblJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWhpc3RvcmljLW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIEVtYWlsSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvblJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWhpc3RvcmljLW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UGRmSGlzdG9yaWNJbnZvaWNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1oaXN0b3JpYy1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludEhpc3RvcmljSW52b2ljZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1oaXN0b3JpYy1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtFbWFpbEhpc3RvcmljSW52b2ljZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1oaXN0b3JpYy1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludFB1cmNoYXNlT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtcHVyY2hhc2Utb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge1BkZlB1cmNoYXNlT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLXB1cmNoYXNlLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludE9yZGVyQ29uZmlybWF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UGRmT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7RW1haWxPcmRlckNvbmZpcm1hdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1vcmRlci1jb25maXJtYXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge0VtYWlsUHVyY2hhc2VPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1wdXJjaGFzZS1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7T2JqZWN0Q29uZmlndXJhdGlvbn0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvb2JqZWN0LWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtDb0RvY3VtZW50fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudCc7XG5pbXBvcnQge0dvb2RzUGlja2VkUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dvb2RzLXBpY2tlZC1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIERlbGV0ZUdvb2RzUGlja2VkRm9yT3JkZXJSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxldGUtZ29vZHMtcGlja2VkLWZvci1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIERlbGV0ZUdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsZXRlLWdvb2RzLXRvLWJlLXBpY2tlZC1mb3Itb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge0Nhc2hEcmF3ZXJzUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtZHJhd2Vycy1yZXF1ZXN0JztcbmltcG9ydCB7Q2FzaERyYXdlcn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtZHJhd2VyLmJvJztcbmltcG9ydCB7UHJpbnRQb3NSZWNlaXB0UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LXBvcy1yZWNlaXB0LXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1oaXN0b3JpYy1wb3MtcmVjZWlwdC1yZXF1ZXN0JztcbmltcG9ydCB7RW1haWxQb3NSZWNlaXB0UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLXBvcy1yZWNlaXB0LXJlcXVlc3QnO1xuaW1wb3J0IHtFbWFpbEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1oaXN0b3JpYy1wb3MtcmVjZWlwdC1yZXF1ZXN0JztcbmltcG9ydCB7VGFnQ2F0ZWdvcnl9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vdGFiLWNhdGVnb3J5LmVudW0nO1xuaW1wb3J0IHtDb3B5VHJhbnNhY3Rpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY29weS10cmFuc2FjdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7RW1haWxRdW90YXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtcXVvdGF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtFbWFpbEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWhpc3RvcmljLXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UGRmUXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1xdW90YXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1BkZkhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1oaXN0b3JpYy1xdW90YXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1ByaW50UXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UHJpbnRIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1oaXN0b3JpYy1xdW90YXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1xuICBDaGFuZ2VIZWFkZXJTY29yaW5nQ2hhbmNlUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLWhlYWRlci1zY29yaW5nLWNoYW5jZS1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIENoYW5nZUhlYWRlckV4cGVjdGVkU2NvcmluZ0RhdGVSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2UtaGVhZGVyLWV4cGVjdGVkLXNjb3JpbmctZGF0ZS1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIENoYW5nZUhlYWRlclJldGFpbFN0YWRpdW1SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2UtaGVhZGVyLXJldGFpbC1zdGFkaXVtLXJlcXVlc3QnO1xuaW1wb3J0IHtSZXRhaWxTdGFkaXVtfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmV0YWlsLXN0YWRpdW0uYm8nO1xuaW1wb3J0IHtXb3JrRmxvd1N0YXR1c30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3dvcmtmbG93LXN0YXR1cy5ibyc7XG5pbXBvcnQge1xuICBDaGFuZ2VMaW5lUXVhbnRpdHlTZWxlY3RlZExpbmVSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2UtbGluZS1xdWFudGl0eS1zZWxlY3RlZC1saW5lLXJlcXVlc3QnO1xuaW1wb3J0IHtPcmRlckxpbmVTZXRDYXRlZ29yeX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZS1zZXQtY2F0ZWdvcnkuYm8nO1xuaW1wb3J0IHtPcmRlckxpbmVTZXREVE99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1saW5lLXNldC1kdG8nO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25BZGRPcmRlckxpbmVTZXRUZXh0TGluZVJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWFkZC1vcmRlci1saW5lLXNldC10ZXh0LWxpbmUtcmVxdWVzdCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBPcmRlckNvbmZpcm1hdGlvbkFuYWx5c2lzUmVzdWx0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1jb25maXJtYXRpb24tYW5hbHlzaXMtcmVzdWx0LmJvJztcbmltcG9ydCB7QXJ0aWNsZUV4dGVuZGVkfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWV4dGVuZGVkLmJvJztcbmltcG9ydCB7UGRmUG9zUmVjZWlwdFJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtcG9zLXJlY2VpcHQtcmVxdWVzdCc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkxzcEluZm9ybWF0aW9uUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbHNwLWluZm9ybWF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtQYWNrYWdlTFNQfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGFja2FnZS1sc3AuYm8nO1xuaW1wb3J0IHtBbmFseXplZE9yZGVyQ29uZmlybWF0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYW5hbHl6ZWQtb3JkZXItY29uZmlybWF0aW9uLmJvJztcbmltcG9ydCB7XG4gIE9yZGVyQ29uZmlybWF0aW9uVHJhbnNhY3Rpb25MaW5rXG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1jb25maXJtYXRpb24tdHJhbnNhY3Rpb24tbGluay5ibyc7XG5pbXBvcnQge1BkZlBvc1JlY2VpcHRSZXNwb25zZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1wb3MtcmVjZWlwdC1yZXNwb25zZS5ibyc7XG5pbXBvcnQge1Byb2plY3RDb2RlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJvamVjdC1jb2RlLmJvJztcbmltcG9ydCB7Q2FzaFR5cGV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jYXNoLXR5cGUuYm8nO1xuaW1wb3J0IHtQb3NHcm91cH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Bvcy1ncm91cC5ibyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkFkZFBheW1lbnRMaW5lUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tYWRkLXBheW1lbnQtbGluZS1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIFBkZkhpc3RvcmljT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtaGlzdG9yaWMtb3JkZXItY29uZmlybWF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtDYXVzZUNvZGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2F1c2UtY29kZS5ib1wiO1xuaW1wb3J0IHtWYWxpZGF0aW9uUmVzdWx0fSBmcm9tIFwiQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvdmFsaWRhdGlvbi1yZXN1bHRcIjtcbmltcG9ydCB7XG4gIFBkZlRyYW5zYWN0aW9uU2VhcmNoT3ZlcnZpZXdSZXNwb25zZVxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi10cmFuc2FjdGlvbi1zZWFyY2gtb3ZlcnZpZXctcmVzcG9uc2VcIjtcbmltcG9ydCB7XG4gIFByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtcHVyY2hhc2Utb3JkZXItZm9yLXNhbGVzLW9yZGVyLXJlcXVlc3RcIjtcbmltcG9ydCB7QWN0aXZpdHl9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9hY3Rpdml0eS5ib1wiO1xuaW1wb3J0IHtQbGFubmluZ30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy5ib1wiO1xuaW1wb3J0IHtQbGFubmluZ0ZpbHRlck9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy1maWx0ZXItb2JqZWN0LmJvXCI7XG5pbXBvcnQge1BsYW5PcmRlcn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFuLW9yZGVyLmJvXCI7XG5pbXBvcnQge1BsYW5uaW5nVHJhbnNwb3J0V2Vla30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy10cmFuc3BvcnQtd2Vlay5ib1wiO1xuaW1wb3J0IHtHZXRUcmFuc3BvcnRPcmRlcnNSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dldC10cmFuc3BvcnQtb3JkZXJzLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7T3JkZXJMaW5lc1RvUGxhblJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZXMtdG8tcGxhbi1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge1BsYW5PcmRlckxpbmV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci1saW5lLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uTWFyZ2luSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1tYXJnaW4taW5mby5ib1wiO1xuaW1wb3J0IHtEYXRhU2VydmljZVJlc3BvbnNlRGF0YX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvZGF0YS1zZXJ2aWNlLXJlc3BvbnNlLWRhdGEnO1xuaW1wb3J0IHtPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZXMtcGxhbm5lZC1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge1xuICBDcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlVHJhbnNhY3Rpb25MaW5lUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1zZXJ2aWNlLW9yZGVyLXdpdGgtc291cmNlLXRyYW5zYWN0aW9uLWxpbmUtcmVxdWVzdFwiO1xuaW1wb3J0IHtQcmludERlbGl2ZXJ5Tm90ZXNSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWRlbGl2ZXJ5LW5vdGVzLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIENyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VHb29kUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1zZXJ2aWNlLW9yZGVyLXdpdGgtc291cmNlLWdvb2QtcmVxdWVzdFwiO1xuaW1wb3J0IHtcbiAgQ3JlYXRlU2VydmljZU9yZGVyV2l0aFNMQVJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtc2VydmljZS1vcmRlci13aXRoLVNMQS1yZXF1ZXN0XCI7XG5pbXBvcnQge1xuICBDcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlT3JkZXJOckFuZEFydGljbGVEZXNjcmlwdGlvblJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtc2VydmljZS1vcmRlci13aXRoLXNvdXJjZS1vcmRlcm5yLWFuZC1hcnRpY2xlLWRlc2NyaXB0aW9uLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIENoYW5nZVNlcnZpY2VIZWFkZXJSZXBvcnRNZXNzYWdlUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1zZXJ2aWNlLWhlYWRlci1yZXBvcnQtbWVzc2FnZS1yZXF1ZXN0XCI7XG5pbXBvcnQge1N1cHBsaWVyQXJ0aWNsZVN0b2NrRm9yZWNhc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvc3VwcGxpZXItYXJ0aWNsZS1zdG9jay1mb3JlY2FzdFwiO1xuaW1wb3J0IHtDaGFuZ2VMaW5lRGlyZWN0U2VsbFJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLWxpbmUtZGlyZWN0LXNlbGwtcmVxdWVzdFwiO1xuaW1wb3J0IHtTZXJ2aWNlV2l6YXJkfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3NlcnZpY2Utd2l6YXJkXCI7XG5pbXBvcnQge1RpdGxlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RpdGxlLmJvXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlIHtcblxuICBwdWJsaWMgY29ubmVjdGlvbkluaXRpYWxpemVkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9hZGFwdGVyU2VydmljZTogVHJhbnNhY3Rpb25Db25uZWN0b3JBZGFwdGVyU2VydmljZSxcbiAgICBwcml2YXRlIF9zZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2U6IFRyYW5zYWN0aW9uU2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlOiBUcmFuc2FjdGlvblNlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZTogVHJhbnNhY3Rpb25TZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2VsZWN0U2lubGdlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZTogVHJhbnNhY3Rpb25TZWxlY3RTaW5nbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb25uZWN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvbm5lY3QoKTtcbiAgICB0aGlzLmNvbm5lY3Rpb25Jbml0aWFsaXplZC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvZ091dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5sb2dPdXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREb2N1bWVudENvbnRlbnQoZG9jSWQ6IG51bWJlciwgdGh1bWJuYWlsOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERvY3VtZW50Q29udGVudChkb2NJZCwgdGh1bWJuYWlsKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBcnRpY2xlRXh0ZW5kZWQoYXJ0aWNsZU5yOiBzdHJpbmcpOiBQcm9taXNlPEFydGljbGVFeHRlbmRlZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBcnRpY2xlRXh0ZW5kZWQoYXJ0aWNsZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBzdG9yZVNpZ25lZERvYyhkb2N1bWVudElkOiBudW1iZXIsIGRvY3VtZW50Qm9keTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnN0b3JlU2lnbmVkRG9jKGRvY3VtZW50SWQsIGRvY3VtZW50Qm9keSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QXJ0aWNsZUZ1bGxPYmplY3QoZ29vZElkOiBudW1iZXIpOiBQcm9taXNlPEFydGljbGVGdWxsT2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdFNpbmdsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8QXJ0aWNsZUZ1bGxPYmplY3Q+KEFydGljbGVGdWxsT2JqZWN0LCBnb29kSWQsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBcnRpY2xlRnVsbE9iamVjdChnb29kSWQpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRHb29kSWRGcm9tQXJ0aWNsZU5yKGFydGljbGVOcjogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0R29vZElkRnJvbUFydGljbGVOcihhcnRpY2xlTnIpO1xuICB9XG5cbiAgcHVibGljIGdldFNpbmdsZUltYWdlKG5vZGVJZDogbnVtYmVyIHwgc3RyaW5nLCBwdWJsaWNhdGlvbjogbnVtYmVyLCBpbmNsdWRlTWltZXR5cGU6IGJvb2xlYW4sIHRodW1iOiBib29sZWFuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2luZ2xlSW1hZ2Uobm9kZUlkLCBwdWJsaWNhdGlvbiwgaW5jbHVkZU1pbWV0eXBlLCB0aHVtYik7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnRyaWVzKCk6IFByb21pc2U8Q291bnRyeVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDb3VudHJ5PihDb3VudHJ5LCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q291bnRyaWVzKClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldExhbmd1YWdlcygpOiBQcm9taXNlPExhbmd1YWdlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPExhbmd1YWdlPihMYW5ndWFnZSwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldExhbmd1YWdlcygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUaXRsZXMoKTogUHJvbWlzZTxUaXRsZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxUaXRsZT4oVGl0bGUsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUaXRsZXMoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q3VzdG9tZXJHcm91cHMoKTogUHJvbWlzZTxDdXN0b21lckdyb3VwW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPEN1c3RvbWVyR3JvdXA+KEN1c3RvbWVyR3JvdXAsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDdXN0b21lckdyb3VwcygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRXb3JrRmxvd1N0YXR1c2VzKHRyYW5zYWN0aW9uS2luZDogVHJhbnNhY3Rpb25LaW5kKTogUHJvbWlzZTxXb3JrRmxvd1N0YXR1c1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxXb3JrRmxvd1N0YXR1cz4oV29ya0Zsb3dTdGF0dXMsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRXb3JrRmxvd1N0YXR1c2VzKHRyYW5zYWN0aW9uS2luZCk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDb3VudHJ5KGNvdW50cnlDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvdW50cnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q291bnRyeShjb3VudHJ5Q29kZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJpdmFjeVNldHRpbmdzKCk6IFByb21pc2U8UHJpdmFjeVNldHRpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8UHJpdmFjeVNldHRpbmc+KFByaXZhY3lTZXR0aW5nLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHJpdmFjeVNldHRpbmdzKClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFJlbGF0aW9uUHJpdmFjeVNldHRpbmdzKCk6IFByb21pc2U8UmVsYXRpb25Qcml2YWN5U2V0dGluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFJlbGF0aW9uUHJpdmFjeVNldHRpbmdzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TWFya2V0aW5nQ29kZXMoKTogUHJvbWlzZTxNYXJrZXRpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8TWFya2V0aW5nPihNYXJrZXRpbmcsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRNYXJrZXRpbmdDb2RlcygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVUcmFuc2FjdGlvbihraW5kOiBUcmFuc2FjdGlvbktpbmQsIGJyYW5jaE5yOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVRyYW5zYWN0aW9uKGtpbmQsIGJyYW5jaE5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVTYWxlc09yZGVyKHJlcXVlc3Q6IENyZWF0ZVNhbGVzT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVTYWxlc09yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUNhc2hSZWdpc3Rlck9yZGVyKHJlcXVlc3Q6IENyZWF0ZUNhc2hSZWdpc3Rlck9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlQ2FzaFJlZ2lzdGVyT3JkZXIocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlUHVyY2hhc2VPcmRlcihyZXF1ZXN0OiBDcmVhdGVQdXJjaGFzZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlUHVyY2hhc2VPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVTZXJ2aWNlT3JkZXIocmVxdWVzdDogQ3JlYXRlU2VydmljZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlU2VydmljZU9yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VUcmFuc2FjdGlvbkxpbmUocmVxdWVzdDogQ3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZVRyYW5zYWN0aW9uTGluZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VUcmFuc2FjdGlvbkxpbmUocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZUdvb2QocmVxdWVzdDogQ3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZUdvb2RSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlR29vZChyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlT3JkZXJOckFuZEFydGljbGVEZXNjcmlwdGlvbihyZXF1ZXN0OiBDcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlT3JkZXJOckFuZEFydGljbGVEZXNjcmlwdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VPcmRlck5yQW5kQXJ0aWNsZURlc2NyaXB0aW9uKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVNlcnZpY2VPcmRlcldpdGhTTEEocmVxdWVzdDogQ3JlYXRlU2VydmljZU9yZGVyV2l0aFNMQVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVNlcnZpY2VPcmRlcldpdGhTTEEocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlU2FsZXNRdW90YXRpb24ocmVxdWVzdDogQ3JlYXRlU2FsZXNRdW90YXRpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVTYWxlc1F1b3RhdGlvbihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb252ZXJ0U2FsZXNRdW90YXRpb25Ub1NhbGVzT3JkZXIocmVxdWVzdDogQ29weVRyYW5zYWN0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY29udmVydFNhbGVzUXVvdGF0aW9uVG9TYWxlc09yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFydGljbGVCb3VuZFRleHRMaW5lc09mQXJ0aWNsZUxpbmUoYXJ0aWNsZUxpbmVVdWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uTGluZUluZm9bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBcnRpY2xlQm91bmRUZXh0TGluZXNPZkFydGljbGVMaW5lKGFydGljbGVMaW5lVXVpZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25CeU5yQW5kS2luZChraW5kOiBUcmFuc2FjdGlvbktpbmQsIHRyYW5zYWN0aW9uTm86IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25CeU5yQW5kS2luZChraW5kLCB0cmFuc2FjdGlvbk5vKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkJ5SWQodHJhbnNhY3Rpb25JZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc2FjdGlvbkJ5SWQodHJhbnNhY3Rpb25JZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0V2ViU2Vzc2lvblNhbGVzT3JkZXIodHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFdlYlNlc3Npb25TYWxlc09yZGVyKHRyYW5zYWN0aW9uVXVpZCk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlVHJhbnNhY3Rpb25CeVV1SWQodXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5kZWxldGVUcmFuc2FjdGlvbkJ5VXVJZCh1dWlkKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWxUcmFuc2FjdGlvbkJ5VXVJZCh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNhbmNlbFRyYW5zYWN0aW9uQnlVdUlkKHV1aWQpO1xuICB9XG5cbiAgcHVibGljIGxvY2tUcmFuc2FjdGlvbkJ5SWQodHJhbnNJZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uTG9ja1Jlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5sb2NrVHJhbnNhY3Rpb25CeUlkKHRyYW5zSWQsIHZlcnNpb24pO1xuICB9XG5cbiAgcHVibGljIGNvbW1pdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY29tbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgcm9sbGJhY2soKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJvbGxiYWNrKCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZVRyYW5zYWN0aW9uKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2Uuc2F2ZVRyYW5zYWN0aW9uKHV1aWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENhc2hSZWdpc3RlcnMoYnJhbmNoPzogc3RyaW5nLCBncm91cD86IG51bWJlcik6IFByb21pc2U8Q2FzaFJlZ2lzdGVyW10+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBicmFuY2g6IGJyYW5jaCxcbiAgICAgIGdyb3VwOiBncm91cFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDYXNoUmVnaXN0ZXI+KENhc2hSZWdpc3RlciwgKGJyYW5jaCwgZ3JvdXApID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDYXNoUmVnaXN0ZXJzKGJyYW5jaCwgZ3JvdXApXG4gICAgfSkuZ2V0VmFsdWUoYnJhbmNoLCBncm91cCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q2FzaERyYXdlcnMoY2FzaERyYXdlcnNSZXF1ZXN0OiBDYXNoRHJhd2Vyc1JlcXVlc3QpOiBQcm9taXNlPENhc2hEcmF3ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENhc2hEcmF3ZXI+KENhc2hEcmF3ZXIsIChjYXNoRHJhd2Vyc1JlcXVlc3QpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDYXNoRHJhd2VycyhjYXNoRHJhd2Vyc1JlcXVlc3QpXG4gICAgfSkuZ2V0VmFsdWUoY2FzaERyYXdlcnNSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQcmljZUxpc3RzKGNvZGU/OiBzdHJpbmcpOiBQcm9taXNlPFByaWNlTGlzdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8UHJpY2VMaXN0PihQcmljZUxpc3QsIChjb2RlPzogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHJpY2VMaXN0cyhjb2RlKVxuICAgIH0pLmdldFZhbHVlKGNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFZhdExpc3Qob25seVZhbGlkOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPFZhdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8VmF0PihWYXQsIChvbmx5VmFsaWQ6IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFZhdExpc3Qob25seVZhbGlkKVxuICAgIH0pLmdldFZhbHVlKG9ubHlWYWxpZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNWYXRDb2Rlcyh0eXBlOiBzdHJpbmcsIGRhdGU6IERhdGUpOiBQcm9taXNlPFZhdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8VmF0PihWYXQsICh0eXBlOiBzdHJpbmcsIGRhdGU6IERhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc1ZhdENvZGVzKHR5cGUsIGRhdGUpXG4gICAgfSkuZ2V0VmFsdWUodHlwZSwgZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VhcmNoVHJhbnNhY3Rpb25zKHJlcXVlc3Q6IFRyYW5zYWN0aW9uU2VhcmNoVmlld1JlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uU2VhcmNoUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnNlYXJjaFRyYW5zYWN0aW9ucyhyZXF1ZXN0KVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNlcXVlbmNlVmFsdWUoc2VxdWVuY2VOYW1lOiBTZXF1ZW5jZU5hbWUpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTZXF1ZW5jZVZhbHVlKHNlcXVlbmNlTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVsaXZlcnlNZXRob2RzKCk6IFByb21pc2U8RGVsaXZlcnlNZXRob2RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8RGVsaXZlcnlNZXRob2Q+KERlbGl2ZXJ5TWV0aG9kLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVsaXZlcnlNZXRob2RzKClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5T3B0aW9ucygpOiBQcm9taXNlPERlbGl2ZXJ5T3B0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPERlbGl2ZXJ5T3B0aW9uPihEZWxpdmVyeU9wdGlvbiwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlbGl2ZXJ5T3B0aW9ucygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24odXVpZDogc3RyaW5nLCByZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZFJlbGF0aW9uVG9UcmFuc2FjdGlvbih1dWlkLCByZWxhdGlvbklkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQb3N0YWxDb2RlUmV0cmlldmFsKHBvc3RjYWxDb2RlOiBzdHJpbmcsIGhvdXNlTm86IHN0cmluZyk6IFByb21pc2U8R2V0UG9zdGFsQ29kZVJldHJpZXZhbE91dHB1dFBhcmFtcz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQb3N0YWxDb2RlUmV0cmlldmFsKHBvc3RjYWxDb2RlLCBob3VzZU5vKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRXZWJTZXNzaW9uVHJhbnNhY3Rpb25MaW5lKHRyYW5zYWN0aW9uVXVpZDogc3RyaW5nLCBhcnRpY2xlTnVtYmVyOiBzdHJpbmcsIHF1YW50aXR5OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZFdlYlNlc3Npb25UcmFuc2FjdGlvbkxpbmUodHJhbnNhY3Rpb25VdWlkLCBhcnRpY2xlTnVtYmVyLCBxdWFudGl0eSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgYXJ0aWNsZU5vOiBzdHJpbmcsIHF1YW50aXR5OiBudW1iZXIsIGFib3ZlTGluZU5yOiBudW1iZXIsIGJlbG93TGluZU5yOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZFRyYW5zYWN0aW9uTGluZSh1dWlkLCBhcnRpY2xlTm8sIHF1YW50aXR5LCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbih1dWlkOiBzdHJpbmcsIHNob3dPbkRvY3VtZW50czogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBhcnRpY2xlQm91bmQ6IGJvb2xlYW4sIHJlZkFydGljbGVMaW5lTnI6IG51bWJlciwgYWJvdmVMaW5lTnI/OiBudW1iZXIsIGJlbG93TGluZU5yPzogbnVtYmVyKTpcbiAgICBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbih1dWlkLCBzaG93T25Eb2N1bWVudHMsIHRleHQsIGFtb3VudCwgYXJ0aWNsZUJvdW5kLCByZWZBcnRpY2xlTGluZU5yLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVRleHRMaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgc2hvd09uRG9jdW1lbnRzOiBudW1iZXIsIHRleHQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlVGV4dExpbmUodXVpZCwgbGluZVV1aWQsIHNob3dPbkRvY3VtZW50cywgdGV4dCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlTGluZVNlcXVlbmNlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgYWJvdmVMaW5lTnI/OiBudW1iZXIsIGJlbG93TGluZU5yPzogbnVtYmVyKTpcbiAgICBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUxpbmVTZXF1ZW5jZSh1dWlkLCBsaW5lVXVpZCwgYWJvdmVMaW5lTnIsIGJlbG93TGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjYW5jZWxBZGRUcmFuc2FjdGlvbkxpbmUobGluZVV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2FuY2VsQWRkVHJhbnNhY3Rpb25MaW5lKGxpbmVVdWlkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVUcmFuc2FjdGlvbkxpbmUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5kZWxldGVUcmFuc2FjdGlvbkxpbmUodXVpZCwgbGluZVV1aWQpO1xuICB9XG5cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHkodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBuZXdRdWFudGl0eTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eSh1dWlkLCBsaW5lVXVpZCwgbmV3UXVhbnRpdHkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVF1YW50aXR5U2VsZWN0ZWQodXVpZDogc3RyaW5nLCBsaW5lczogQ2hhbmdlTGluZVF1YW50aXR5U2VsZWN0ZWRMaW5lUmVxdWVzdFtdKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eVNlbGVjdGVkKHV1aWQsIGxpbmVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXNvbHZlUGVuZGluZ0xpbmVSZWFzb24ocGVuZGluZ0xpbmVWYWx1ZXM6IFJlc29sdmVMaW5lUGVuZGluZ1JlYXNvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbihwZW5kaW5nTGluZVZhbHVlcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVzb2x2ZVBlbmRpbmdIZWFkZXJSZWFzb24ocGVuZGluZ0hlYWRlclZhbHVlczogUmVzb2x2ZUhlYWRlclBlbmRpbmdSZWFzb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5yZXNvbHZlUGVuZGluZ0hlYWRlclJlYXNvbihwZW5kaW5nSGVhZGVyVmFsdWVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDb21taXNzaW9uQ29kZXMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDb21taXNzaW9uQ29kZXMobGFuZ3VhZ2VDb2RlKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEluT3V0Q29sbGVjdGlvbihsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEluT3V0Q29sbGVjdGlvbihsYW5ndWFnZUNvZGUpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0WWVzTm9Db2xsZWN0aW9uKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0WWVzTm9Db2xsZWN0aW9uKGxhbmd1YWdlQ29kZSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQcmljZUtpbmRDb2xsZWN0aW9uKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHJpY2VLaW5kQ29sbGVjdGlvbihsYW5ndWFnZUNvZGUpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHJpb3JpdHlDb2xsZWN0aW9uKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHJpb3JpdHlDb2xsZWN0aW9uKGxhbmd1YWdlQ29kZSlcbiAgfVxuXG4gIHB1YmxpYyBnZXRFbnRyeVR5cGVzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RW50cnlUeXBlcyhsYW5ndWFnZUNvZGUpO1xuICB9XG5cbiAgcHVibGljIGdldENhdXNlQ29kZXMoKTogUHJvbWlzZTxDYXVzZUNvZGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDYXVzZUNvZGVzKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlcyhnb29kSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlcyhnb29kSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldFJlbGF0aW9uQnlVc2VyKHV1aWQ6IHN0cmluZywgdXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5zZXRSZWxhdGlvbkJ5VXNlcih1dWlkLCB1c2VybmFtZSwgcGFzc3dvcmQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRleHRUeXBlcyhsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRleHRUeXBlcyhsYW5ndWFnZUNvZGUpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3RhbmRhcmRUZXh0cyhsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8U3RhbmRhcmRUZXh0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U3RhbmRhcmRUZXh0cyhsYW5ndWFnZUNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNhbGVzUGVyc29ucyhkYXRlPzogRGF0ZSk6IFByb21pc2U8U2FsZXNQZXJzb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFNhbGVzUGVyc29uPihTYWxlc1BlcnNvbiwgKGRhdGU/OiBEYXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2FsZXNQZXJzb25zKGRhdGUpXG4gICAgfSkuZ2V0VmFsdWUoZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UmV0YWlsU3RhZGl1bXMoKTogUHJvbWlzZTxSZXRhaWxTdGFkaXVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFJldGFpbFN0YWRpdW0+KFJldGFpbFN0YWRpdW0sICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRSZXRhaWxTdGFkaXVtcygpO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VGFncyhjYXRlZ29yeTogbnVtYmVyKTogUHJvbWlzZTxUYWdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFRhZz4oVGFnLCAoY2F0ZWdvcnk6IG51bWJlcikgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRhZ3MoY2F0ZWdvcnkpXG4gICAgfSkuZ2V0VmFsdWUoY2F0ZWdvcnkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9uSG9sZENvZGVzKCk6IFByb21pc2U8T25Ib2xkQ29kZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxPbkhvbGRDb2RlPihPbkhvbGRDb2RlLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0T25Ib2xkQ29kZXMoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0V2FyZWhvdXNlcyhicmFuY2hOcj86IHN0cmluZyk6IFByb21pc2U8V2FyZWhvdXNlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxXYXJlaG91c2U+KFdhcmVob3VzZSwgKGJyYW5jaE5yPzogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0V2FyZWhvdXNlcyhicmFuY2hOcilcbiAgICB9KS5nZXRWYWx1ZShicmFuY2hOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0V2FyZWhvdXNlU3RvY2tJbmZvQnlHb29kQW5kQnJhbmNoKGdvb2RJZDogbnVtYmVyLCBicmFuY2hOcjogc3RyaW5nKTogUHJvbWlzZTxXYXJlaG91c2VTdG9ja0luZm9bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRXYXJlaG91c2VTdG9ja0luZm9CeUdvb2RBbmRCcmFuY2goZ29vZElkLCBicmFuY2hOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SGlzdG9yaWNTdGF0ZVZhbHVlcygpOiBQcm9taXNlPENvZGVEZXNjcmlwdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEhpc3RvcmljU3RhdGVWYWx1ZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRNYXhDb25maXJtZWREZWxpdmVyeURhdGVGb3JQdXJjaGFzZU9yZGVyKHRyYW5zSWQ6IG51bWJlcik6IFByb21pc2U8RGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRNYXhDb25maXJtZWREZWxpdmVyeURhdGVGb3JQdXJjaGFzZU9yZGVyKHRyYW5zSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUNvbW1pc3Npb25Db2RlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVDb21taXNzaW9uQ29kZSh1dWlkLCBsaW5lVXVpZCwgY29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lU3VwcGxpZXIodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBpZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVTdXBwbGllcih1dWlkLCBsaW5lVXVpZCwgaWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVdhcmVob3VzZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHdhcmVob3VzZU51bWJlcjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVXYXJlaG91c2UodXVpZCwgbGluZVV1aWQsIHdhcmVob3VzZU51bWJlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHJpY2UodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBwcmljZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVQcmljZSh1dWlkLCBsaW5lVXVpZCwgcHJpY2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVB1cmNoYXNlUHJpY2UodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBwcmljZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVQdXJjaGFzZVByaWNlKHV1aWQsIGxpbmVVdWlkLCBwcmljZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHVyY2hhc2VEZXNjcmlwdGlvbih1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVB1cmNoYXNlRGVzY3JpcHRpb24odXVpZCwgbGluZVV1aWQsIGRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVQcmljZUxpc3QodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBwcmljZUxpc3Q6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHJpY2VMaXN0KHV1aWQsIGxpbmVVdWlkLCBwcmljZUxpc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVZhdCh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGlkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVZhdCh1dWlkLCBsaW5lVXVpZCwgaWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUxpbmVEaXNjb3VudCh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHR5cGU6IERpc2NvdW50VHlwZSwgZGlzY291bnQ6IG51bWJlciwgcmVhc29uOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lTGluZURpc2NvdW50KHV1aWQsIGxpbmVVdWlkLCB0eXBlLCBkaXNjb3VudCwgcmVhc29uLCBjb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVEcm9wU2hpcG1lbnQodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBuZXdEcm9wU2hpcG1lbnQ6IGJvb2xlYW4pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZURyb3BTaGlwbWVudCh1dWlkLCBsaW5lVXVpZCwgbmV3RHJvcFNoaXBtZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVEZWxpdmVyeU1ldGhvZCh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVEZWxpdmVyeU1ldGhvZCh1dWlkLCBsaW5lVXVpZCwgbWV0aG9kKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVEZWxpdmVyeURhdGUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBkYXRlOiBEYXRlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVEZWxpdmVyeURhdGUodXVpZCwgbGluZVV1aWQsIGRhdGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUFzc2VtYmx5VGltZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHRpbWU6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lQXNzZW1ibHlUaW1lKHV1aWQsIGxpbmVVdWlkLCB0aW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVFZGl0VGltZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHRpbWU6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRWRpdFRpbWUodXVpZCwgbGluZVV1aWQsIHRpbWUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVN1cHBsaWVyQXJ0aWNsZU51bWJlcih1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGFydGljbGVOdW1iZXI6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lU3VwcGxpZXJBcnRpY2xlTnVtYmVyKHV1aWQsIGxpbmVVdWlkLCBhcnRpY2xlTnVtYmVyKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVSZWZlcmVuY2UodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCByZWZlcmVuY2U6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUmVmZXJlbmNlKHV1aWQsIGxpbmVVdWlkLCByZWZlcmVuY2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUdvb2REZXNjcmlwdGlvbih1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGdvb2REZXNjcmlwdGlvbjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVHb29kRGVzY3JpcHRpb24odXVpZCwgbGluZVV1aWQsIGdvb2REZXNjcmlwdGlvbik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lQ29sbGVjdGlvbkNvZGUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUNvbGxlY3Rpb25Db2RlKHV1aWQsIGxpbmVVdWlkLCBjb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlZmluaXRpdmUodXVpZDogc3RyaW5nLCBkZWZpbml0aXZlOiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlZmluaXRpdmUodXVpZCwgZGVmaW5pdGl2ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyRGVsaXZlcnlBZGRyZXNzKHV1aWQ6IHN0cmluZywgbmV3TmF3TnI6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyRGVsaXZlcnlBZGRyZXNzKHV1aWQsIG5ld05hd05yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJJbnZvaWNlQWRkcmVzcyh1dWlkOiBzdHJpbmcsIG5ld05hd05yOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckludm9pY2VBZGRyZXNzKHV1aWQsIG5ld05hd05yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5RGF0ZSh1dWlkOiBzdHJpbmcsIGRhdGU6IERhdGUpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlEYXRlKHV1aWQsIGRhdGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlEYXRlRGVmaW5pdGl2ZSh1dWlkOiBzdHJpbmcsIGRlZmluaXRpdmU6IGJvb2xlYW4pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlEYXRlRGVmaW5pdGl2ZSh1dWlkLCBkZWZpbml0aXZlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlbWFyayh1dWlkOiBzdHJpbmcsIHJlbWFyazogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlbWFyayh1dWlkLCByZW1hcmspO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUmVmZXJlbmNlKHV1aWQ6IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUmVmZXJlbmNlKHV1aWQsIHJlZmVyZW5jZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZWxhdGlvblJlZmVyZW5jZSh1dWlkOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlbGF0aW9uUmVmZXJlbmNlKHV1aWQsIHJlZmVyZW5jZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyRGVwb3NpdFBlcmNlbnRhZ2UodXVpZDogc3RyaW5nLCBhbW91bnQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyRGVwb3NpdFBlcmNlbnRhZ2UodXVpZCwgYW1vdW50KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJEZXBvc2l0QW1vdW50KHV1aWQ6IHN0cmluZywgYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckRlcG9zaXRBbW91bnQodXVpZCwgYW1vdW50KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByZWZlcnJlZERlbGl2ZXJ5RGF0ZSh1dWlkOiBzdHJpbmcsIGRhdGU6IERhdGUsIG9wdGlvbjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByZWZlcnJlZERlbGl2ZXJ5RGF0ZSh1dWlkLCBkYXRlLCBvcHRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlNZXRob2QodXVpZDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeU1ldGhvZCh1dWlkLCBtZXRob2QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zKHV1aWQ6IHN0cmluZywgb3B0aW9uczogc3RyaW5nW10pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zKHV1aWQsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUGFydGlhbERlbGl2ZXJ5KHV1aWQ6IHN0cmluZywgYWxsb3dQYXJ0aWFsOiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblBhcnRpYWxEZWxpdmVyeSh1dWlkLCBhbGxvd1BhcnRpYWwpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQnJhbmNoKHV1aWQ6IHN0cmluZywgYnJhbmNoOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQnJhbmNoKHV1aWQsIGJyYW5jaCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25PbkhvbGRDb2Rlcyh1dWlkOiBzdHJpbmcsIGNvZGVzOiBzdHJpbmdbXSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25PbkhvbGRDb2Rlcyh1dWlkLCBjb2Rlcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EaXZpZGVFdmVubHkodXVpZDogc3RyaW5nLCBkaXZpZGVFdmVubHk6IGJvb2xlYW4pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGl2aWRlRXZlbmx5KHV1aWQsIGRpdmlkZUV2ZW5seSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25BbW91bnRUb1NldHRsZSh1dWlkOiBzdHJpbmcsIGFtb3VudFRvU2V0dGxlOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQW1vdW50VG9TZXR0bGUodXVpZCwgYW1vdW50VG9TZXR0bGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUHJpY2VLaW5kKHV1aWQ6IHN0cmluZywgcHJpY2VLaW5kOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUHJpY2VLaW5kKHV1aWQsIHByaWNlS2luZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25BZG1Db29yZGluYXRvcih1dWlkOiBzdHJpbmcsIHJlbGF0aW9uOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQWRtQ29vcmRpbmF0b3IodXVpZCwgcmVsYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQ3VycmVuY3kodXVpZDogc3RyaW5nLCBjdXJyZW5jeUNvZGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25DdXJyZW5jeSh1dWlkLCBjdXJyZW5jeUNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUHJvamVjdENvZGUodXVpZDogc3RyaW5nLCBwcm9qZWN0Q29kZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByb2plY3RDb2RlKHV1aWQsIHByb2plY3RDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblBheW1lbnRDb25kaXRpb24odXVpZDogc3RyaW5nLCBjb25kaXRpb246IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QYXltZW50Q29uZGl0aW9uKHV1aWQsIGNvbmRpdGlvbik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25IYW5kbGVkQnkodXVpZDogc3RyaW5nLCBoYW5kbGVkQnk6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25IYW5kbGVkQnkodXVpZCwgaGFuZGxlZEJ5KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbk1hcmtldGluZyh1dWlkOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25NYXJrZXRpbmcodXVpZCwgY29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EaXNjb3VudCh1dWlkOiBzdHJpbmcsIHR5cGU6IERpc2NvdW50VHlwZSwgYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGlzY291bnQodXVpZCwgdHlwZSwgYW1vdW50KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJTY29yaW5nQ2hhbmNlKHJlcXVlc3Q6IENoYW5nZUhlYWRlclNjb3JpbmdDaGFuY2VSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJTY29yaW5nQ2hhbmNlKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckV4cGVjdGVkU2NvcmluZ0RhdGUocmVxdWVzdDogQ2hhbmdlSGVhZGVyRXhwZWN0ZWRTY29yaW5nRGF0ZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckV4cGVjdGVkU2NvcmluZ0RhdGUocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyUmV0YWlsU3RhZGl1bShyZXF1ZXN0OiBDaGFuZ2VIZWFkZXJSZXRhaWxTdGFkaXVtUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyUmV0YWlsU3RhZGl1bShyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJBdXRvUmVjYWxjdWxhdGVEZXBvc2l0KHV1aWQ6IHN0cmluZywgbmV3QXV0b1JlY2FsY3VsYXRlRGVwb3NpdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyQXV0b1JlY2FsY3VsYXRlRGVwb3NpdCh1dWlkLCBuZXdBdXRvUmVjYWxjdWxhdGVEZXBvc2l0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJVc2VEZXBvc2l0UnVsZSh1dWlkOiBzdHJpbmcsIG5ld1VzZURlcG9zaXRSdWxlOiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJVc2VEZXBvc2l0UnVsZSh1dWlkLCBuZXdVc2VEZXBvc2l0UnVsZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlU2VydmljZUhlYWRlclJlcG9ydE1lc3NhZ2UocmVxdWVzdDogQ2hhbmdlU2VydmljZUhlYWRlclJlcG9ydE1lc3NhZ2VSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VTZXJ2aWNlSGVhZGVyUmVwb3J0TWVzc2FnZShyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVJb25lUGF5bWVudExpbmtBbmRRUkNvZGUodXVpZDogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgcGF5bWVudE1ldGhvZENvZGU6IHN0cmluZyk6IFByb21pc2U8Q3JlYXRlUGF5bWVudExpbmtSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlSW9uZVBheW1lbnRMaW5rQW5kUVJDb2RlKHV1aWQsIGFtb3VudCwgcGF5bWVudE1ldGhvZENvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBheW1lbnRMaW5rU3RhdHVzKHBheW1lbnRMaW5rVVVJRDogc3RyaW5nKTogUHJvbWlzZTxQYXltZW50TGlua1N0YXR1cz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQYXltZW50TGlua1N0YXR1cyhwYXltZW50TGlua1VVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdvb2RzUmVjZWlwdEhpc3RvcnkodHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8R29vZHNSZWNlaXB0SGlzdG9yeT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRHb29kc1JlY2VpcHRIaXN0b3J5KHRyYW5zSWQsIGxpbmVOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlcihyZXF1ZXN0OiBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UucmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvbihyZXF1ZXN0OiBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJDb3JyZWN0aW9uKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFB1cmNoYXNlUG9ydGFsTGluZXMocmVxdWVzdDogR2V0UHVyY2hhc2VQb3J0YWxMaW5lKTogUHJvbWlzZTxQdXJjaGFzZVBvcnRhbExpbmVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQdXJjaGFzZVBvcnRhbExpbmVzKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVB1cmNoYXNlUG9ydGFsTGluZXMocHVyY2hhc2VQb3J0YWxMaW5lOiBQdXJjaGFzZVBvcnRhbExpbmUpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlUHVyY2hhc2VQb3J0YWxMaW5lcyhwdXJjaGFzZVBvcnRhbExpbmUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHB1cmNoYXNlT3JkZXJDb25maXJtYXRpb24ocHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbjogR2V0UHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5wdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uKHB1cmNoYXNlT3JkZXJDb25maXJtYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxpbmtUcmFuc2FjdGlvblRvT3JkZXJDb25maXJtYXRpb24oYW5hbHlzaXNJZDogbnVtYmVyLCBsaW5lczogT3JkZXJDb25maXJtYXRpb25UcmFuc2FjdGlvbkxpbmtbXSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5saW5rVHJhbnNhY3Rpb25Ub09yZGVyQ29uZmlybWF0aW9uKGFuYWx5c2lzSWQsIGxpbmVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2NrUHVyY2hhc2VQb3J0YWxMaW5lcyh0cmFuc0lkUHVyY2hhc2U6IG51bWJlciwgbGluZUlkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UubG9ja1B1cmNoYXNlUG9ydGFsTGluZXModHJhbnNJZFB1cmNoYXNlLCBsaW5lSWQpXG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVDb21taXNzaW9uT3JkZXJzKHRyYW5zSWQ6IG51bWJlciwgb25seUdlbmVyYXRlRm9yRGlyZWN0U2VsbFN1cHBsaWVyczogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZW5lcmF0ZUNvbW1pc3Npb25PcmRlcnModHJhbnNJZCwgb25seUdlbmVyYXRlRm9yRGlyZWN0U2VsbFN1cHBsaWVycyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QW5hbHlzaXNSZXN1bHRzQnlBbmFseXNpc0lkKGFuYWx5c2lzSWQ6IG51bWJlcik6IFByb21pc2U8T3JkZXJDb25maXJtYXRpb25BbmFseXNpc1Jlc3VsdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEFuYWx5c2lzUmVzdWx0c0J5QW5hbHlzaXNJZChhbmFseXNpc0lkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBbmFseXplZE9yZGVyQ29uZmlybWF0aW9ucygpOiBQcm9taXNlPEFuYWx5emVkT3JkZXJDb25maXJtYXRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBbmFseXplZE9yZGVyQ29uZmlybWF0aW9ucygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFN0b2NrU3RpY2tlclRlbXBsYXRlcyhkYXRhOiBTdG9ja1N0aWNrZXJzUHJpbnRMYXlvdXRzKTogUHJvbWlzZTxTdG9ja1N0aWNrZXJzUHJpbnRMYXlvdXRzW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U3RvY2tTdGlja2VyVGVtcGxhdGVzKGRhdGEpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEF2YWlsYWJsZVN0b2NrR3JvdXBlZEJ5V0xCU0J5VHJhbnNJZExpbmVOcih0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxBdmFpbGFibGVTdG9ja1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEF2YWlsYWJsZVN0b2NrR3JvdXBlZEJ5V0xCU0J5VHJhbnNJZExpbmVOcih0cmFuc0lkLCBsaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEF2YWlsYWJsZVN0b2NrRm9yU3VwcGxpZXIoZ29vZElkOiBudW1iZXIsIHN1cHBsaWVyUmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxTdXBwbGllckFydGljbGVTdG9ja0ZvcmVjYXN0PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEF2YWlsYWJsZVN0b2NrRm9yU3VwcGxpZXIoZ29vZElkLCBzdXBwbGllclJlbGF0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZUxpbmVEaXJlY3RTZWxsKHJlcXVlc3Q6IENoYW5nZUxpbmVEaXJlY3RTZWxsUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VMaW5lRGlyZWN0U2VsbChyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlcihyZXF1ZXN0OiBBbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyQ29ycmVjdGlvbihyZXF1ZXN0OiBBbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlckNvcnJlY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5hbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlckNvcnJlY3Rpb24ocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZHNBbGxvY2F0aW9uSGlzdG9yeSh0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxHb29kc0FsbG9jYXRpb25IaXN0b3J5PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEdvb2RzQWxsb2NhdGlvbkhpc3RvcnkodHJhbnNJZCwgbGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRHb29kc1RvQmVQaWNrZWRIaXN0b3J5KHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEdvb2RzVG9CZVBpY2tlZEhpc3Rvcnk+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0R29vZHNUb0JlUGlja2VkSGlzdG9yeSh0cmFuc0lkLCBsaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdvb2RzUGlja2VkSGlzdG9yeSh0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxHb29kc1BpY2tlZEhpc3Rvcnk+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0R29vZHNQaWNrZWRIaXN0b3J5KHRyYW5zSWQsIGxpbmVOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlR29vZHNQaWNrZWQoZGVsZXRlR29vZHNQaWNrZWRGb3JPcmRlclJlcXVlc3Q6IERlbGV0ZUdvb2RzUGlja2VkRm9yT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5kZWxldGVHb29kc1BpY2tlZChkZWxldGVHb29kc1BpY2tlZEZvck9yZGVyUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlR29vZHNUb0JlUGlja2VkKGRlbGV0ZUdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdDogRGVsZXRlR29vZHNUb0JlUGlja2VkRm9yT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5kZWxldGVHb29kc1RvQmVQaWNrZWQoZGVsZXRlR29vZHNUb0JlUGlja2VkRm9yT3JkZXJSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRHb29kc1RvQmVQaWNrZWRGb3JTYWxlc09yZGVyKHJlcXVlc3Q6IEdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2Uuc2V0R29vZHNUb0JlUGlja2VkRm9yU2FsZXNPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRHb29kc1BpY2tlZEZvck9yZGVyKHJlcXVlc3Q6IEdvb2RzUGlja2VkUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2Uuc2V0R29vZHNQaWNrZWRGb3JPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckNvbmZpcm1hdGlvbkVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckNvbmZpcm1hdGlvbkVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENhc2hPbkRlbGl2ZXJ5RGF0YSh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPENhc2hPbkRlbGl2ZXJ5RGF0YT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDYXNoT25EZWxpdmVyeURhdGEodXVpZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyQ2FzaE9uRGVsaXZlcnlBbW91bnQocmVxdWVzdDogQ2hhbmdlSGVhZGVyQ2FzaE9uRGVsaXZlcnlBbW91bnRSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckNhc2hPbkRlbGl2ZXJ5QW1vdW50KHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9yZGVyQ29uZmlybWF0aW9uUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9yZGVyQ29uZmlybWF0aW9uUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJDb25maXJtYXRpb25EZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckNvbmZpcm1hdGlvbkRlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yT3JkZXJDb25maXJtYXRpb24odHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yT3JkZXJDb25maXJtYXRpb24odHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludE9yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3Q6IFByaW50T3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludE9yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50SGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0OiBQcmludEhpc3RvcmljT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50SGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbE9yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3Q6IEVtYWlsT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbE9yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0OiBFbWFpbEhpc3RvcmljT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0OiBQZGZPcmRlckNvbmZpcm1hdGlvblJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZk9yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZkhpc3RvcmljT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdDogUGRmSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvblJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucGRmSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludFB1cmNoYXNlT3JkZXIocmVxdWVzdDogUHJpbnRQdXJjaGFzZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludFB1cmNoYXNlT3JkZXIocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxQdXJjaGFzZU9yZGVyKHJlcXVlc3Q6IEVtYWlsUHVyY2hhc2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxQdXJjaGFzZU9yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZlB1cmNoYXNlT3JkZXIocmVxdWVzdDogUGRmUHVyY2hhc2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucGRmUHVyY2hhc2VPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQdXJjaGFzZU9yZGVyRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFB1cmNoYXNlT3JkZXJFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQdXJjaGFzZU9yZGVyUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFB1cmNoYXNlT3JkZXJQcmludExheW91dHModHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQdXJjaGFzZU9yZGVyRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHVyY2hhc2VPcmRlckRlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdlbmVyYXRlQW5kU2VuZFB1cmNoYXNlT3JkZXJzRm9yU2FsZXNPcmRlcihyZXF1ZXN0OiBQcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZW5lcmF0ZUFuZFNlbmRQdXJjaGFzZU9yZGVyc0ZvclNhbGVzT3JkZXIocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHVyY2hhc2VBZHZpY2VMaW5lcyhmaWx0ZXJzOiBQdXJjaGFzZUFkdmljZUZpbHRlcnMsIGdvb2RJZD86IG51bWJlciwgc2hvd0xvYWRlcj86IGJvb2xlYW4pOiBQcm9taXNlPFB1cmNoYXNlQWR2aWNlTGluZVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFB1cmNoYXNlQWR2aWNlTGluZXMoZmlsdGVycywgZ29vZElkLCBzaG93TG9hZGVyKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZW5lcmF0ZUFuZFNlbmRQdXJjaGFzZU9yZGVycyhwdXJjaGFzZUFkdmljZUxpbmVzOiBQdXJjaGFzZUFkdmljZUxpbmVbXSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZW5lcmF0ZUFuZFNlbmRQdXJjaGFzZU9yZGVycyhwdXJjaGFzZUFkdmljZUxpbmVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbERlbGl2ZXJ5Tm90ZShlbWFpbERlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IEVtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxEZWxpdmVyeU5vdGUoZW1haWxEZWxpdmVyeU5vdGVSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlKGVtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0OiBFbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlKGVtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZEZWxpdmVyeU5vdGUocGRmRGVsaXZlcnlOb3RlUmVxdWVzdDogUGRmRGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZEZWxpdmVyeU5vdGUocGRmRGVsaXZlcnlOb3RlUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmSGlzdG9yaWNEZWxpdmVyeU5vdGUocGRmSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0OiBQZGZIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucGRmSGlzdG9yaWNEZWxpdmVyeU5vdGUocGRmSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludERlbGl2ZXJ5Tm90ZShwcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IFByaW50RGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnREZWxpdmVyeU5vdGUocHJpbnREZWxpdmVyeU5vdGVSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludERlbGl2ZXJ5Tm90ZXMocHJpbnREZWxpdmVyeU5vdGVzUmVxdWVzdDogUHJpbnREZWxpdmVyeU5vdGVzUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnREZWxpdmVyeU5vdGVzKHByaW50RGVsaXZlcnlOb3Rlc1JlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGUocHJpbnRIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IFByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGUocHJpbnRIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5Tm90ZURlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlbGl2ZXJ5Tm90ZURlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5Tm90ZUVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeU5vdGVFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU5vdGVQcmludExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JJbnZvaWNlKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvckludm9pY2UodHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbEludm9pY2UoZW1haWxJbnZvaWNlUmVxdWVzdDogRW1haWxJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxJbnZvaWNlKGVtYWlsSW52b2ljZVJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsSGlzdG9yaWNJbnZvaWNlKGVtYWlsSGlzdG9yaWNJbnZvaWNlUmVxdWVzdDogRW1haWxIaXN0b3JpY0ludm9pY2VSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsSGlzdG9yaWNJbnZvaWNlKGVtYWlsSGlzdG9yaWNJbnZvaWNlUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmSW52b2ljZShwZGZJbnZvaWNlUmVxdWVzdDogUGRmSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucGRmSW52b2ljZShwZGZJbnZvaWNlUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmSGlzdG9yaWNJbnZvaWNlKHBkZkhpc3RvcmljSW52b2ljZVJlcXVlc3Q6IFBkZkhpc3RvcmljSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucGRmSGlzdG9yaWNJbnZvaWNlKHBkZkhpc3RvcmljSW52b2ljZVJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50SW52b2ljZShwcmludEludm9pY2VSZXF1ZXN0OiBQcmludEludm9pY2VSZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludEludm9pY2UocHJpbnRJbnZvaWNlUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRIaXN0b3JpY0ludm9pY2UocHJpbnRIaXN0b3JpY0ludm9pY2VSZXF1ZXN0OiBQcmludEhpc3RvcmljSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRIaXN0b3JpY0ludm9pY2UocHJpbnRIaXN0b3JpY0ludm9pY2VSZXF1ZXN0KTtcbiAgfVxuXG4gIC8vIHB1YmxpYyBhc3luYyBnZXRJbnZvaWNlRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgLy8gICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SW52b2ljZURlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQpO1xuICAvLyB9XG5cbiAgcHVibGljIGFzeW5jIHBkZlBvc1JlY2VpcHQocGRmUG9zUmVjZWlwdFJlcXVlc3Q6IFBkZlBvc1JlY2VpcHRSZXF1ZXN0KTogUHJvbWlzZTxQZGZQb3NSZWNlaXB0UmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucGRmUG9zUmVjZWlwdChwZGZQb3NSZWNlaXB0UmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRQb3NSZWNlaXB0KHByaW50UG9zUmVjZWlwdFJlcXVlc3Q6IFByaW50UG9zUmVjZWlwdFJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRQb3NSZWNlaXB0KHByaW50UG9zUmVjZWlwdFJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50SGlzdG9yaWNQb3NSZWNlaXB0KHByaW50SGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdDogUHJpbnRIaXN0b3JpY1Bvc1JlY2VpcHRSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50SGlzdG9yaWNQb3NSZWNlaXB0KHByaW50SGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxQb3NSZWNlaXB0KGVtYWlsUG9zUmVjZWlwdFJlcXVlc3Q6IEVtYWlsUG9zUmVjZWlwdFJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxQb3NSZWNlaXB0KGVtYWlsUG9zUmVjZWlwdFJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsSGlzdG9yaWNQb3NSZWNlaXB0KGVtYWlsSGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdDogRW1haWxIaXN0b3JpY1Bvc1JlY2VpcHRSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsSGlzdG9yaWNQb3NSZWNlaXB0KGVtYWlsSGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UG9zUmVjZWlwdEVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQb3NSZWNlaXB0RW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UG9zUmVjZWlwdFByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQb3NSZWNlaXB0UHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JQb3NSZWNlaXB0KHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvclBvc1JlY2VpcHQodHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbnZvaWNlRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEludm9pY2VFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbnZvaWNlUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEludm9pY2VQcmludExheW91dHModHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRRdW90YXRpb25EZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRRdW90YXRpb25EZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbFF1b3RhdGlvbihlbWFpbFF1b3RhdGlvblJlcXVlc3Q6IEVtYWlsUXVvdGF0aW9uUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxRdW90YXRpb24oZW1haWxRdW90YXRpb25SZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbEhpc3RvcmljUXVvdGF0aW9uKGVtYWlsSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0OiBFbWFpbEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbEhpc3RvcmljUXVvdGF0aW9uKGVtYWlsSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZRdW90YXRpb24ocGRmUXVvdGF0aW9uUmVxdWVzdDogUGRmUXVvdGF0aW9uUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZRdW90YXRpb24ocGRmUXVvdGF0aW9uUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmSGlzdG9yaWNRdW90YXRpb24ocGRmSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0OiBQZGZIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucGRmSGlzdG9yaWNRdW90YXRpb24ocGRmSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludFF1b3RhdGlvbihwcmludFF1b3RhdGlvblJlcXVlc3Q6IFByaW50UXVvdGF0aW9uUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRRdW90YXRpb24ocHJpbnRRdW90YXRpb25SZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludEhpc3RvcmljUXVvdGF0aW9uKHByaW50SGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0OiBQcmludEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludEhpc3RvcmljUXVvdGF0aW9uKHByaW50SGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRRdW90YXRpb25FbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UXVvdGF0aW9uRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UXVvdGF0aW9uUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFF1b3RhdGlvblByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yUXVvdGF0aW9uKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvclF1b3RhdGlvbih0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByaW50ZXJzKCk6IFByb21pc2U8UHJpbnRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxQcmludGVyPihQcmludGVyLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHJpbnRlcnMoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q3VycmVuY2llcyhhY3RpdmU6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxDdXJyZW5jeVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEN1cnJlbmNpZXMoYWN0aXZlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDYXNoVHlwZXModHlwZTogc3RyaW5nKTogUHJvbWlzZTxDYXNoVHlwZVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENhc2hUeXBlcyh0eXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQb3NHcm91cHMoKTogUHJvbWlzZTxQb3NHcm91cFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBvc0dyb3VwcygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByb2plY3RDb2RlcyhkYXRlOiBEYXRlKTogUHJvbWlzZTxQcm9qZWN0Q29kZVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFByb2plY3RDb2RlcyhkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQYXltZW50Q29uZGl0aW9ucyhuYW1lPzogc3RyaW5nKTogUHJvbWlzZTxQYXltZW50Q29uZGl0aW9uW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGF5bWVudENvbmRpdGlvbnMobmFtZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJMaW5lU2V0Q2F0ZWdvcmllcygpOiBQcm9taXNlPE9yZGVyTGluZVNldENhdGVnb3J5W10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0T3JkZXJMaW5lU2V0Q2F0ZWdvcmllcygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNlcnZpY2VXaXphcmQoKTogUHJvbWlzZTxTZXJ2aWNlV2l6YXJkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFNlcnZpY2VXaXphcmQoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRPcmRlckxpbmVTZXQocmVxdWVzdDogVHJhbnNhY3Rpb25BZGRPcmRlckxpbmVTZXRUZXh0TGluZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZE9yZGVyTGluZVNldChyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVPcmRlckxpbmVTZXQocmVxdWVzdDogT3JkZXJMaW5lU2V0RFRPKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS51cGRhdGVPcmRlckxpbmVTZXQocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lT3JkZXJMaW5lU2V0KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVPcmRlckxpbmVTZXQodXVpZCwgbGluZVV1aWQsIGNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEpvaW5lZFRhZ3ModGFibGU6IHN0cmluZywga2V5OiBzdHJpbmcpOiBQcm9taXNlPFRhZ1RyZWVJdGVtW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Sm9pbmVkVGFncyh0YWJsZSwga2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBtZXJnZUpvaW5lZFRhZ3ModGFibGU6IHN0cmluZywga2V5OiBzdHJpbmcsIHRhZ3M6IFRhZ1RyZWVJdGVtW10pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UubWVyZ2VKb2luZWRUYWdzKHRhYmxlLCBrZXksIHRhZ3MpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRhZ3NGdWxsVHJlZShjYXRlZ29yeTogVGFnQ2F0ZWdvcnksIGluY2x1ZGVUYWdzOiBib29sZWFuKTogUHJvbWlzZTxUYWdUcmVlSXRlbVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRhZ3NGdWxsVHJlZShjYXRlZ29yeSwgaW5jbHVkZVRhZ3MpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRyYW5zYWN0aW9uSW5mbyh0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9IaXN0b3J5W10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25JbmZvKHRyYW5zSWQsIGxpbmVOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UmVmVHJhbnNhY3Rpb25zKHRyYW5zSWQ6IG51bWJlcik6IFByb21pc2U8UmVmVHJhbnNhY3Rpb25bXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRSZWZUcmFuc2FjdGlvbnModHJhbnNJZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW50ZXJuYWxQYXJhbWV0ZXJWYWx1ZShwYXJhbTogSW50ZXJuYWxQYXJhbSk6IFByb21pc2U8SW50ZXJuYWxQYXJhbT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RTaW5sZ2VQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxJbnRlcm5hbFBhcmFtPihJbnRlcm5hbFBhcmFtLCAocGFyYW06IEludGVybmFsUGFyYW0pID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbnRlcm5hbFBhcmFtZXRlclZhbHVlKHBhcmFtKTtcbiAgICB9KS5nZXRWYWx1ZShwYXJhbSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T2JqZWN0Q29uZmlndXJhdGlvbihzY3JlZW5DZmdNb2R1bGU6IHN0cmluZywgcGFyYW1zPzogc3RyaW5nIHwgc3RyaW5nW10sIGluc2VydE1vZGU/OiBib29sZWFuKTogUHJvbWlzZTxPYmplY3RDb25maWd1cmF0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxPYmplY3RDb25maWd1cmF0aW9uPihPYmplY3RDb25maWd1cmF0aW9uLCAoc2NyZWVuQ2ZnTW9kdWxlOiBzdHJpbmcsIHBhcmFtcz86IHN0cmluZyB8IHN0cmluZ1tdLCBpbnNlcnRNb2RlPzogYm9vbGVhbikgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb24oc2NyZWVuQ2ZnTW9kdWxlLCBwYXJhbXMsIGluc2VydE1vZGUpO1xuICAgIH0pLmdldFZhbHVlKHNjcmVlbkNmZ01vZHVsZSwgcGFyYW1zLCBpbnNlcnRNb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRIaXN0b3JpY0RvY3VtZW50cyh0cmFuc0lkOiBudW1iZXIsIGRvY3VtZW50Q29kZTogTGF5b3V0Q29kZSk6IFByb21pc2U8SGlzdG9yaWNSZXBvcnRbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRIaXN0b3JpY0RvY3VtZW50cyh0cmFuc0lkLCBkb2N1bWVudENvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBhY2thZ2VTdGlja2VyUHJpbnRMYXlvdXRzKCk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQYWNrYWdlU3RpY2tlclByaW50TGF5b3V0cygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvcHlTYWxlc09yZGVyKGNvcHlUcmFuc2FjdGlvblJlcXVlc3Q6IENvcHlUcmFuc2FjdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvcHlTYWxlc09yZGVyKGNvcHlUcmFuc2FjdGlvblJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvcHlQdXJjaGFzZU9yZGVyKGNvcHlUcmFuc2FjdGlvblJlcXVlc3Q6IENvcHlUcmFuc2FjdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvcHlQdXJjaGFzZU9yZGVyKGNvcHlUcmFuc2FjdGlvblJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvcHlTYWxlc1F1b3RhdGlvbihjb3B5VHJhbnNhY3Rpb25SZXF1ZXN0OiBDb3B5VHJhbnNhY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5jb3B5U2FsZXNRdW90YXRpb24oY29weVRyYW5zYWN0aW9uUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkRXh0ZXJuYWxDYXRhbG9nQXJ0aWNsZXNUb1RyYW5zYWN0aW9uKHV1aWQ6IHN0cmluZywgY2F0YWxvZ0lkOiBudW1iZXIsIHJhd0RhdGE6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuYWRkRXh0ZXJuYWxDYXRhbG9nQXJ0aWNsZXNUb1RyYW5zYWN0aW9uKHV1aWQsIGNhdGFsb2dJZCwgcmF3RGF0YSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkUGF5bWVudExpbmVUb1RyYW5zYWN0aW9uKHJlcXVlc3Q6IFRyYW5zYWN0aW9uQWRkUGF5bWVudExpbmVSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRQYXltZW50TGluZVRvVHJhbnNhY3Rpb24ocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRTYWxlc09yZGVyc092ZXJ2aWV3KHJlcXVlc3Q6IFRyYW5zYWN0aW9uU2VhcmNoVmlld1JlcXVlc3QpOiBQcm9taXNlPFBkZlRyYW5zYWN0aW9uU2VhcmNoT3ZlcnZpZXdSZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludFNhbGVzT3JkZXJzT3ZlcnZpZXcocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VuZFBhY2thZ2VJbmZvcm1hdGlvblRvTFNQKHJlcXVlc3Q6IFRyYW5zYWN0aW9uTHNwSW5mb3JtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5zZW5kUGFja2FnZUluZm9ybWF0aW9uVG9MU1AocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGFja2FnZUluZm9ybWF0aW9uKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nLCBsaW5lVVVJRDogc3RyaW5nKTogUHJvbWlzZTxQYWNrYWdlTFNQW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGFja2FnZUluZm9ybWF0aW9uKHRyYW5zYWN0aW9uVVVJRCwgbGluZVVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldExvZ2lzdGljc1BhcnRuZXJzKCk6IFByb21pc2U8RGVsaXZlcnlNZXRob2RbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRMb2dpc3RpY3NQYXJ0bmVycygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBsYW5uaW5nU291cmNlcygpOiBQcm9taXNlPFBsYW5uaW5nW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGxhbm5pbmdTb3VyY2VzKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGxhbk9yZGVycyhmaWx0ZXJPYmplY3Q6IFBsYW5uaW5nRmlsdGVyT2JqZWN0LCBwbGFubmluZ0lkOiBudW1iZXIpOiBQcm9taXNlPFBsYW5PcmRlcltdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBsYW5PcmRlcnMoZmlsdGVyT2JqZWN0LCBwbGFubmluZ0lkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQbGFuVHJhbnNwb3J0V2VlayhzdGFydERhdGU6IERhdGUsIHBsYW5uaW5nSWQ6IG51bWJlcik6IFByb21pc2U8UGxhbm5pbmdUcmFuc3BvcnRXZWVrW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGxhblRyYW5zcG9ydFdlZWsoc3RhcnREYXRlLCBwbGFubmluZ0lkKTtcbiAgfVxuXG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVBsYW5UcmFuc3BvcnRXZWVrKHBsYW5UcmFuc3BvcnRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWspOiBQcm9taXNlPFBsYW5uaW5nVHJhbnNwb3J0V2Vlaz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS51cGRhdGVQbGFuVHJhbnNwb3J0V2VlayhwbGFuVHJhbnNwb3J0V2Vlayk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZERvY3VtZW50c09mVHJhbnNhY3Rpb24oa2V5OiBzdHJpbmcpOiBQcm9taXNlPENvRG9jdW1lbnRbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5sb2FkRG9jdW1lbnRzT2ZUcmFuc2FjdGlvbihrZXkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWREb2N1bWVudENvbnRlbnQoZG9jSWQ6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERvY3VtZW50Q29udGVudChkb2NJZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbWVyZ2VEb2N1bWVudE9uVHJhbnNhY3Rpb24oa2V5OiBzdHJpbmcsIGRvY3VtZW50OiBDb0RvY3VtZW50KTogUHJvbWlzZTxDb0RvY3VtZW50PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLm1lcmdlRG9jdW1lbnRPblRyYW5zYWN0aW9uKGtleSwgZG9jdW1lbnQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZURvY3VtZW50KGRvY3VtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5kZWxldGVEb2N1bWVudChkb2N1bWVudElkKTtcbiAgfVxuICBwdWJsaWMgYXN5bmMgaW5zZXJ0QWN0aXZpdHkoYWN0aXZpdHk6IEFjdGl2aXR5KTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmluc2VydEFjdGl2aXR5KGFjdGl2aXR5KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVBY3Rpdml0eShhY3Rpdml0eTogQWN0aXZpdHkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlQWN0aXZpdHkoYWN0aXZpdHkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENvbXBvbmVudEFjdGl2aXRpZXNXaXRob3V0UmVsYXRpb25GaWx0ZXJpbmcodHJhbnNhY3Rpb25JZDogbnVtYmVyKTogUHJvbWlzZTxBY3Rpdml0eVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENvbXBvbmVudEFjdGl2aXRpZXNXaXRob3V0UmVsYXRpb25GaWx0ZXJpbmcodHJhbnNhY3Rpb25JZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SGlzdG9yaWNBY3Rpdml0aWVzKHRyYW5zYWN0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8QWN0aXZpdHlbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRIaXN0b3JpY0FjdGl2aXRpZXModHJhbnNhY3Rpb25JZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNhY3Rpb25NYXJnaW5JbmZvKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbk1hcmdpbkluZm8+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25NYXJnaW5JbmZvKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNwb3J0T3JkZXJzKHJlcXVlc3Q6IEdldFRyYW5zcG9ydE9yZGVyc1JlcXVlc3QpOiBQcm9taXNlPFBsYW5PcmRlcltdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zcG9ydE9yZGVycyhyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckxpbmVzVG9QbGFuKHJlcXVlc3Q6IE9yZGVyTGluZXNUb1BsYW5SZXF1ZXN0KTogUHJvbWlzZTxQbGFuT3JkZXJMaW5lW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0T3JkZXJMaW5lc1RvUGxhbihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckxpbmVzUGxhbm5lZChyZXF1ZXN0OiBPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3QpOiBQcm9taXNlPFBsYW5PcmRlckxpbmVbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckxpbmVzUGxhbm5lZChyZXF1ZXN0KTtcbiAgfVxuXG5cblxuICBwdWJsaWMgYXN5bmMgdW5kb0RlbGl2ZXJ5QnlSZXBvcnRJZChyZXBvcnRJZDogbnVtYmVyKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS51bmRvRGVsaXZlcnlCeVJlcG9ydElkKHJlcG9ydElkKTtcbiAgfVxuICBwdWJsaWMgYXN5bmMgZmlyZVRyaWdnZXIod29ya0Zsb3dQcm9jZXNzSWQ6IG51bWJlciwgc2VxdWVuY2U6IG51bWJlciwgdHJpZ2dlcklkOiBudW1iZXIpOiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZmlyZVRyaWdnZXIod29ya0Zsb3dQcm9jZXNzSWQsIHNlcXVlbmNlLCB0cmlnZ2VySWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGZpcmVHZW5lcmljVHJpZ2dlcih3b3JrRmxvd1Byb2Nlc3NJZDogbnVtYmVyLCBnZW5lcmljVHJhbnNpdGlvbklkOiBudW1iZXIsIHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5maXJlR2VuZXJpY1RyaWdnZXIod29ya0Zsb3dQcm9jZXNzSWQsIGdlbmVyaWNUcmFuc2l0aW9uSWQsIHJlbGF0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvY2tUYXNrKGlkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UubG9ja1Rhc2soaWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZUFjdGl2aXR5KGFjdGl2aXR5OiBBY3Rpdml0eSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5kZWxldGVBY3Rpdml0eShhY3Rpdml0eSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JQdXJjaGFzZU9yZGVyKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JQdXJjaGFzZU9yZGVyKHV1aWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBsYW5PcmRlcih0cmFuc0lkOiBudW1iZXIpOiBQcm9taXNlPFBsYW5PcmRlcj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQbGFuT3JkZXIodHJhbnNJZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY29udmVydENhc2hSZWdpc3Rlck9yZGVyVG9TYWxlc09yZGVyKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuY29udmVydENhc2hSZWdpc3Rlck9yZGVyVG9TYWxlc09yZGVyKHV1aWQpO1xuICB9XG5cblxufVxuIl19
|