@cqa-lib/cqa-ui 1.1.548-gamma.24 → 1.1.548-gamma.25
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/esm2020/lib/execution-screen/condition-debug-step/condition-branch-editor.component.mjs +1 -1
- package/esm2020/lib/step-builder/step-builder-action/step-builder-action.component.mjs +7 -4
- package/esm2020/lib/step-builder/step-builder-ai-agent/step-builder-ai-agent.component.mjs +3 -3
- package/esm2020/lib/step-builder/step-builder-condition/step-builder-condition.component.mjs +5 -4
- package/esm2020/lib/step-builder/step-builder-database/step-builder-database.component.mjs +3 -3
- package/esm2020/lib/step-builder/step-builder-loop/step-builder-loop.component.mjs +226 -11
- package/esm2020/lib/step-builder/template-variables-form/template-variables-form.component.mjs +214 -8
- package/esm2020/lib/test-case-details/api-edit-step/api-edit-step.component.mjs +3 -3
- package/esm2020/lib/test-case-details/test-case-details-edit/test-case-details-edit.component.mjs +3 -3
- package/esm2020/lib/test-case-details/test-case-details.models.mjs +5 -3
- package/esm2020/lib/test-case-details/variables-panel/available-variable-row.component.mjs +3 -3
- package/esm2020/lib/test-case-details/variables-panel/used-variable-row.component.mjs +3 -3
- package/esm2020/lib/test-case-details/variables-panel/variables-panel.component.mjs +3 -3
- package/esm2020/lib/ui-kit.module.mjs +6 -1
- package/esm2020/lib/variable-picker/variable-picker.component.mjs +426 -0
- package/esm2020/lib/variable-picker/variable-picker.models.mjs +14 -0
- package/esm2020/public-api.mjs +3 -1
- package/fesm2015/cqa-lib-cqa-ui.mjs +947 -74
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +918 -61
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/execution-screen/condition-debug-step/condition-branch-editor.component.d.ts +2 -0
- package/lib/step-builder/step-builder-action/step-builder-action.component.d.ts +6 -1
- package/lib/step-builder/step-builder-condition/step-builder-condition.component.d.ts +4 -1
- package/lib/step-builder/step-builder-loop/step-builder-loop.component.d.ts +87 -1
- package/lib/step-builder/template-variables-form/template-variables-form.component.d.ts +41 -1
- package/lib/ui-kit.module.d.ts +100 -99
- package/lib/variable-picker/variable-picker.component.d.ts +130 -0
- package/lib/variable-picker/variable-picker.models.d.ts +122 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/styles.css +1 -1
package/esm2020/lib/execution-screen/condition-debug-step/condition-branch-editor.component.mjs
CHANGED
|
@@ -446,4 +446,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
446
446
|
}], searchGlobalVariables: [{
|
|
447
447
|
type: Output
|
|
448
448
|
}] } });
|
|
449
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWJyYW5jaC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL2NvbmRpdGlvbi1kZWJ1Zy1zdGVwL2NvbmRpdGlvbi1icmFuY2gtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9jb25kaXRpb24tZGVidWctc3RlcC9jb25kaXRpb24tYnJhbmNoLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUN0Qyx1QkFBdUIsRUFDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBMEIsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBbUI1Rjs7Ozs7O0dBTUc7QUFRSCxNQUFNLE9BQU8sOEJBQThCO0lBc0h6QyxZQUFvQixFQUFlLEVBQVUsR0FBc0I7UUFBL0MsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBcEhuRSxpR0FBaUc7UUFDeEYsU0FBSSxHQUEyQixhQUFhLENBQUM7UUFFdEQseUVBQXlFO1FBQ2hFLHVCQUFrQixHQUFxQixFQUFFLENBQUM7UUFFbkQsbUVBQW1FO1FBQzFELGtDQUE2QixHQUF3RCxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFFdkcsbURBQW1EO1FBQzFDLGlDQUE0QixHQUF3RCxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFLdEcseUNBQXlDO1FBQ2hDLG1CQUFjLEdBQVUsRUFBRSxDQUFDO1FBQzNCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxzQkFBaUIs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cHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEeW5hbWljU2VsZWN0RmllbGRDb25maWcsIFNlbGVjdE9wdGlvbiB9IGZyb20gJy4uLy4uL2R5bmFtaWMtc2VsZWN0L2R5bmFtaWMtc2VsZWN0LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25UZW1wbGF0ZSB9IGZyb20gJy4uLy4uL3N0ZXAtYnVpbGRlci9zdGVwLWJ1aWxkZXItYWN0aW9uL3N0ZXAtYnVpbGRlci1hY3Rpb24uY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25CcmFuY2hTYXZlRGF0YSB7XG4gIHRlbXBsYXRlOiBBY3Rpb25UZW1wbGF0ZSB8IG51bGw7XG4gIHRlbXBsYXRlVmFyaWFibGVzOiBhbnlbXTtcbiAgYWR2YW5jZWRTZXR0aW5nc1ZhcmlhYmxlczogYW55W107XG4gIGFjdGlvbjogc3RyaW5nO1xuICAvKiogUmVzb2x2ZWQgSFRNTCBncmFtbWFyIHdpdGggYWN0dWFsIHZhcmlhYmxlIHZhbHVlcyBzdWJzdGl0dXRlZCDigJQgdXNlIGZvciBkaXNwbGF5L2NvbmRpdGlvblRleHQgKi9cbiAgcmVzb2x2ZWRBY3Rpb246IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgbWV0YWRhdGE6IHN0cmluZztcbiAgLyoqIERlcml2ZWQgZnJvbSBhZHZhbmNlZFNldHRpbmdzVmFyaWFibGVzICdzaG91bGRTa2lwJyBlbnRyeSDigJQgc3RlcCBzaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgZXhlY3V0aW9uICovXG4gIHNob3VsZFNraXA6IGJvb2xlYW47XG4gIC8qKiBEZXJpdmVkIGZyb20gYWR2YW5jZWRTZXR0aW5nc1ZhcmlhYmxlcyAnaXNTdGVwT3B0aW9uYWwnIGVudHJ5IOKAlCBzdGVwIGZhaWx1cmUgc2hvdWxkIG5vdCBmYWlsIHRoZSB0ZXN0ICovXG4gIGlnbm9yZVN0ZXBSZXN1bHQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogTGlnaHR3ZWlnaHQgc2luZ2xlLWNvbmRpdGlvbiBlZGl0b3IgdXNlZCBpbiBkZWJ1ZyBtb2RlIHRvOlxuICogIC0gQWRkIGEgbmV3IEVMU0UgSUYgYnJhbmNoIChtb2RlID0gJ2FkZC1lbHNlLWlmJylcbiAqICAtIEVkaXQgYW4gZXhpc3RpbmcgSUYgb3IgRUxTRSBJRiBjb25kaXRpb24gKG1vZGUgPSAnZWRpdCcpXG4gKlxuICogVGhpcyBpcyBhIHNpbXBsaWZpZWQgdmFyaWFudCBvZiBTdGVwQnVpbGRlckNvbmRpdGlvbkNvbXBvbmVudCB3aXRoIG9uZSBjb25kaXRpb24gcm93LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtY29uZGl0aW9uLWJyYW5jaC1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZGl0aW9uLWJyYW5jaC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENvbmRpdGlvbkJyYW5jaEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICAvKiogJ2FkZC1lbHNlLWlmJyBzaG93cyBcIkFkZCBFTFNFIElGXCIgdGl0bGUvYnV0dG9uOyAnZWRpdCcgc2hvd3MgXCJFZGl0IENvbmRpdGlvblwiIHRpdGxlL2J1dHRvbiAqL1xuICBASW5wdXQoKSBtb2RlOiAnYWRkLWVsc2UtaWYnIHwgJ2VkaXQnID0gJ2FkZC1lbHNlLWlmJztcblxuICAvKiogTGlzdCBvZiBjb25kaXRpb24gYWN0aW9uIHRlbXBsYXRlcyAoZmlsdGVyZWQgdG8gSUZfQ09ORElUSU9OIHR5cGUpICovXG4gIEBJbnB1dCgpIGNvbmRpdGlvblRlbXBsYXRlczogQWN0aW9uVGVtcGxhdGVbXSA9IFtdO1xuXG4gIC8qKiBDYWxsZWQgdG8gZGVyaXZlIHRlbXBsYXRlIHZhcmlhYmxlcyBmcm9tIGEgc2VsZWN0ZWQgdGVtcGxhdGUgKi9cbiAgQElucHV0KCkgc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXM6ICh0ZW1wbGF0ZTogQWN0aW9uVGVtcGxhdGUsIHRlc3RTdGVwPzogYW55KSA9PiBhbnlbXSA9ICgpID0+IFtdO1xuXG4gIC8qKiBDYWxsZWQgdG8gZGVyaXZlIGFkdmFuY2VkIHNldHRpbmdzIHZhcmlhYmxlcyAqL1xuICBASW5wdXQoKSBzZXRBZHZhbmNlZFNldHRpbmdzVmFyaWFibGVzOiAodGVtcGxhdGU6IEFjdGlvblRlbXBsYXRlLCB0ZXN0U3RlcD86IGFueSkgPT4gYW55W10gPSAoKSA9PiBbXTtcblxuICAvKiogQ2VudHJhbGlzZWQgSFRNTCBncmFtbWFyIGNvbXB1dGF0aW9uIGZ1bmN0aW9uICovXG4gIEBJbnB1dCgpIGNvbXB1dGVIdG1sR3JhbW1hckZuPzogKHRlbXBsYXRlOiBhbnksIHZhcmlhYmxlczogYW55W10pID0+IHN0cmluZztcblxuICAvKiogRWxlbWVudCBvcHRpb25zIGZvciB2YXJpYWJsZSBmb3JtcyAqL1xuICBASW5wdXQoKSBlbGVtZW50T3B0aW9uczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgaGFzTW9yZUVsZW1lbnRzOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzTG9hZGluZ0VsZW1lbnRzOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNjcmVlbk5hbWVPcHRpb25zOiB7IGlkPzogbnVtYmVyOyBuYW1lOiBzdHJpbmcgfVtdID0gW107XG4gIEBJbnB1dCgpIGhhc01vcmVTY3JlZW5OYW1lczogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0xvYWRpbmdTY3JlZW5OYW1lczogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwYXJhbWV0ZXJPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBoYXNNb3JlUGFyYW1ldGVyczogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0xvYWRpbmdQYXJhbWV0ZXJzOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVudmlyb25tZW50T3B0aW9uczogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IGVudmlyb25tZW50OiBzdHJpbmcgfVtdID0gW107XG4gIEBJbnB1dCgpIGhhc01vcmVFbnZpcm9ubWVudHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNMb2FkaW5nRW52aXJvbm1lbnRzOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBSZXNvbHZlZCB0ZXN0LWNhc2UgZW52IG5hbWU7IGRyaXZlcyBiYW5uZXIgKyBlbnYtZHJvcGRvd24gYXV0by1zZWxlY3QgKyBsb2NrIGluIGlubmVyIHRlbXBsYXRlLXZhcmlhYmxlcy1mb3JtLiAqL1xuICBASW5wdXQoKSB0ZXN0Q2FzZUVudmlyb25tZW50TmFtZT86IHN0cmluZztcbiAgLyoqIFN1ZmZpeCBvbiB0aGUgZW52LW5hbWUgb3B0aW9uIGxhYmVsIChlLmcuICcoZGVmYXVsdCknKS4gQWxzbyBsb2NrcyB0aGUgZW52IGRyb3Bkb3duLiAqL1xuICBASW5wdXQoKSB0ZXN0Q2FzZUVudmlyb25tZW50TGFiZWxTdWZmaXg/OiBzdHJpbmc7XG4gIC8qKiBJdGFsaWMgbm90ZSByZW5kZXJlZCB1bmRlciBlbnYgZHJvcGRvd24gaW4gdGhlIGlubmVyIGZvcm0uICovXG4gIEBJbnB1dCgpIGVudmlyb25tZW50TGVnYWN5RGVwcmVjYXRpb25NZXNzYWdlPzogc3RyaW5nO1xuICAvKiogVGVzdCBjYXNlJ3MgVERQIGlkIOKAlCBnYXRlcyB0aGUgVGVzdCBEYXRhIFByb2ZpbGUgdGFiIGluIHRoZSBpbm5lciBmb3JtLiAqL1xuICBASW5wdXQoKSB0ZXN0Q2FzZVRlc3REYXRhSWQ/OiBudW1iZXIgfCBudWxsO1xuICAvKiogV2hlbiB0cnVlIChvciBgaXNJbnNpZGVGb3JMb29wU3RlcGAgdHJ1ZSksIHRoZSBpbm5lciBmb3JtIHNob3dzIHRoZSBUZXN0XG4gICAqICBEYXRhIFByb2ZpbGUgc2VnbWVudC4gV2l0aG91dCB0aGlzLCB0aGUgbGliIGRlZmF1bHRzIHRoZSBzZWdtZW50IGluLFxuICAgKiAgZXZlbiB0aG91Z2ggdGhlIHRlc3QgY2FzZSBoYXMgbm8gVERQIOKAlCB3aGljaCBpcyB3aGF0IHNob3dzIHRoZSB0YWIgaW4gdGhlXG4gICAqICBkZWJ1Zy1zY3JlZW4gY29uZGl0aW9uLWJyYW5jaCBlZGl0b3IuICovXG4gIEBJbnB1dCgpIGhhc1Rlc3REYXRhUHJvZmlsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogVHJ1ZSB3aGVuIHRoaXMgYnJhbmNoIGxpdmVzIGluc2lkZSBhIEZPUi1sb29wIHN0ZXAuICovXG4gIEBJbnB1dCgpIGlzSW5zaWRlRm9yTG9vcFN0ZXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqIFdvcmtzcGFjZS1zY29wZWQgZ2xvYmFsIHZhcmlhYmxlcyBmb3IgdGhlIEdsb2JhbCBEYXRhIHRhYi4gKi9cbiAgQElucHV0KCkgZ2xvYmFsVmFyaWFibGVPcHRpb25zOiB7IGlkOiBudW1iZXIgfCBzdHJpbmc7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgdHlwZT86IHN0cmluZzsgcmVhZFdyaXRlTW9kZT86IHN0cmluZyB9W10gPSBbXTtcbiAgQElucHV0KCkgaXNMb2FkaW5nR2xvYmFsVmFyaWFibGVzOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRlZmF1bHRUZXN0RGF0YVByb2ZpbGVJZD86IG51bWJlcjtcbiAgQElucHV0KCkgZGVmYXVsdFRlc3REYXRhU3RhcnRJbmRleD86IG51bWJlcjtcbiAgLyoqXG4gICAqIEVuZCBpbmRleCBvZiB0aGUgaW5oZXJpdGVkIGRhdGFzZXQgcmFuZ2UgKDAtYmFzZWQpLiBEcml2ZXMgYm90aCB0aGVcbiAgICogRGF0YSBTZXQgRW5kIGRyb3Bkb3duIGxvY2sgYW5kIHRoZSBhdXRvLXBvcHVsYXRpb24gb2YgdGVzdC1kYXRhIHZhcmlhYmxlc1xuICAgKiBmcm9tIHRoZSBlbmQtcm93IGluc2lkZSBjcWEtdGVtcGxhdGUtdmFyaWFibGVzLWZvcm0uIEZvcndhcmRlZCB0byB0aGVcbiAgICogaW5uZXIgZm9ybS4gV2l0aG91dCB0aGlzLCB0aGUgcGFyZW50IChlLmcuIGRlYnVnLXNjcmVlbiBjb25kaXRpb24tYnJhbmNoXG4gICAqIGZsb3cpIGNhbid0IGZ1bGx5IHJlcHJvZHVjZSB0aGUgbG9jayBwYXJpdHkgdGhhdFxuICAgKiBjcWEtc3RlcC1idWlsZGVyLWFjdGlvbiBnZXRzIHZpYSBhcHAtc3RlcC1idWlsZGVyLlxuICAgKi9cbiAgQElucHV0KCkgZGVmYXVsdFRlc3REYXRhRW5kSW5kZXg/OiBudW1iZXI7XG5cbiAgLyoqIFdoZW4gcHJvdmlkZWQsIHByZS1wb3B1bGF0ZXMgdGhlIGZvcm0gZm9yIGVkaXQgbW9kZS4gc2hhcGU6IHsgdGVtcGxhdGVJZCwgdGVtcGxhdGVWYXJpYWJsZXMsIGFjdGlvbiB9ICovXG4gIEBJbnB1dCgpIGluaXRpYWxDb25kaXRpb25EYXRhPzoge1xuICAgIHRlbXBsYXRlSWQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgdGVtcGxhdGVWYXJpYWJsZXM/OiBhbnlbXTtcbiAgICBhY3Rpb24/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgbWV0YWRhdGE/OiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqIFJhdyBicmFuY2ggc3RlcCBvYmplY3Qg4oCUIHBhc3NlZCB0aHJvdWdoIHRvIHNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzIHNvIHRoZSBzZXJ2aWNlIGNhbiBleHRyYWN0IHNhdmVkIHZhbHVlcyBmcm9tIHN0ZXAuZXZlbnQgKi9cbiAgQElucHV0KCkgZWRpdFRlc3RTdGVwPzogYW55O1xuXG4gIC8qKiBMYWJlbCBzaG93biBuZXh0IHRvIHRoZSBjb25kaXRpb24gdGVtcGxhdGUgZHJvcGRvd24gKGUuZy4gJ0lGJywgJ0VMU0UgSUYnKS4gSW5mZXJyZWQgZnJvbSBtb2RlIHdoZW4gbm90IHByb3ZpZGVkLiAqL1xuICBASW5wdXQoKSBicmFuY2hMYWJlbD86IHN0cmluZztcblxuICAvKiogVHJ1ZSB3aGlsZSB0aGUgcGFyZW50IGlzIHNhdmluZyAoZGlzYWJsZXMvc2hvd3MgbG9hZGVyIG9uIFNhdmUgYnV0dG9uKSAqL1xuICBASW5wdXQoKSBpc1NhdmluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBzYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxDb25kaXRpb25CcmFuY2hTYXZlRGF0YT4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbGxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGxvYWRNb3JlRWxlbWVudHMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzZWFyY2hFbGVtZW50cyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgc2VhcmNoRWxlbWVudHNCeVNjcmVlbk5hbWUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgc2NyZWVuTmFtZUlkOiBudW1iZXI7IHNlYXJjaFRlcm0/OiBzdHJpbmcgfT4oKTtcbiAgQE91dHB1dCgpIGNyZWF0ZUVsZW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaFNjcmVlbk5hbWUgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGxvYWRNb3JlU2NyZWVuTmFtZXMgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGNyZWF0ZVNjcmVlbk5hbWVSZXF1ZXN0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBzZWFyY2hQYXJhbWV0ZXJzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBsb2FkTW9yZVBhcmFtZXRlcnMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzZWFyY2hFbnZpcm9ubWVudHMgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGxvYWRNb3JlRW52aXJvbm1lbnRzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc2VhcmNoR2xvYmFsVmFyaWFibGVzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgY29uZGl0aW9uRm9ybSE6IEZvcm1Hcm91cDtcblxuICBwcml2YXRlIHNlbGVjdGVkVGVtcGxhdGU6IEFjdGlvblRlbXBsYXRlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdGVtcGxhdGVWYXJpYWJsZXM6IGFueVtdID0gW107XG4gIHByaXZhdGUgdmFyaWFibGVzRm9ybSE6IEZvcm1BcnJheTtcbiAgcHJpdmF0ZSBhZHZhbmNlZFNldHRpbmdzVmFyaWFibGVzOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIGFkdmFuY2VkVmFyaWFibGVzRm9ybSE6IEZvcm1BcnJheTtcbiAgcHJpdmF0ZSBhZHZhbmNlZEV4cGFuZGVkID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZEh0bWxHcmFtbWFyID0gJyc7XG5cbiAgcHJpdmF0ZSB2YWx1ZUNvbmZpZ0NhY2hlOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB2YWx1ZUNvbmZpZ1dpdGhIYW5kbGVyOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWcgfCBudWxsID0gbnVsbDtcblxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZWRpdCcgPyAnRWRpdCBDb25kaXRpb24nIDogJ0FkZCBFTFNFIElGJztcbiAgfVxuXG4gIGdldCBzYXZlQnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZWRpdCcgPyAnU2F2ZScgOiAnQWRkIEVMU0UgSUYnO1xuICB9XG5cbiAgZ2V0IGNvbmRpdGlvblJvd0xhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYnJhbmNoTGFiZWwgPz8gKHRoaXMubW9kZSA9PT0gJ2VkaXQnID8gJ0lGJyA6ICdFTFNFIElGJyk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmFyaWFibGVzRm9ybSA9IHRoaXMuZmIuYXJyYXkoW10pO1xuICAgIHRoaXMuYWR2YW5jZWRWYXJpYWJsZXNGb3JtID0gdGhpcy5mYi5hcnJheShbXSk7XG5cbiAgICB0aGlzLmNvbmRpdGlvbkZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIHZhbHVlOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBkZXNjcmlwdGlvbjogWycnXSxcbiAgICAgIG1ldGFkYXRhOiBbJyddLFxuICAgIH0pO1xuXG4gICAgdGhpcy51cGRhdGVWYWx1ZUNvbmZpZ0NhY2hlKCk7XG5cbiAgICAvLyBQcmUtcG9wdWxhdGUgZm9yIGVkaXQgbW9kZVxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdlZGl0JyAmJiB0aGlzLmluaXRpYWxDb25kaXRpb25EYXRhKSB7XG4gICAgICB0aGlzLnByZWZpbGxGcm9tSW5pdGlhbERhdGEoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY29uZGl0aW9uVGVtcGxhdGVzJ10gJiYgIWNoYW5nZXNbJ2NvbmRpdGlvblRlbXBsYXRlcyddLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlQ29uZmlnQ2FjaGUoKTtcbiAgICAgIHRoaXMudmFsdWVDb25maWdXaXRoSGFuZGxlciA9IG51bGw7XG4gICAgICAvLyBSZS1wcmVmaWxsIGlmIHdlIG5vdyBoYXZlIHRlbXBsYXRlcyBhbmQgd2VyZSB3YWl0aW5nXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnZWRpdCcgJiYgdGhpcy5pbml0aWFsQ29uZGl0aW9uRGF0YSAmJiAhdGhpcy5zZWxlY3RlZFRlbXBsYXRlKSB7XG4gICAgICAgIHRoaXMucHJlZmlsbEZyb21Jbml0aWFsRGF0YSgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlZmlsbEZyb21Jbml0aWFsRGF0YSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbENvbmRpdGlvbkRhdGEgfHwgIXRoaXMuY29uZGl0aW9uVGVtcGxhdGVzPy5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IHsgdGVtcGxhdGVJZCwgYWN0aW9uLCBkZXNjcmlwdGlvbiwgbWV0YWRhdGEgfSA9IHRoaXMuaW5pdGlhbENvbmRpdGlvbkRhdGE7XG5cbiAgICAvLyBGaW5kIG1hdGNoaW5nIHRlbXBsYXRlXG4gICAgbGV0IHRlbXBsYXRlOiBBY3Rpb25UZW1wbGF0ZSB8IHVuZGVmaW5lZDtcbiAgICBpZiAodGVtcGxhdGVJZCAhPSBudWxsKSB7XG4gICAgICB0ZW1wbGF0ZSA9IHRoaXMuY29uZGl0aW9uVGVtcGxhdGVzLmZpbmQoXG4gICAgICAgIHQgPT4gU3RyaW5nKHQuaWQpID09PSBTdHJpbmcodGVtcGxhdGVJZCkgfHwgdC5kaXNwbGF5TmFtZSA9PT0gU3RyaW5nKHRlbXBsYXRlSWQpXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIXRlbXBsYXRlICYmIGFjdGlvbikge1xuICAgICAgdGVtcGxhdGUgPSB0aGlzLmNvbmRpdGlvblRlbXBsYXRlcy5maW5kKFxuICAgICAgICB0ID0+IHQubmF0dXJhbFRleHQgPT09IGFjdGlvbiB8fCB0Lmh0bWxHcmFtbWFyID09PSBhY3Rpb24gfHwgdC5kaXNwbGF5TmFtZSA9PT0gYWN0aW9uXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgY29uc3Qgc2VsZWN0SWQgPSB0ZW1wbGF0ZS5pZD8udG9TdHJpbmcoKSB8fCB0ZW1wbGF0ZS5kaXNwbGF5TmFtZSB8fCAnJztcbiAgICAgIHRoaXMuY29uZGl0aW9uRm9ybT8uZ2V0KCd2YWx1ZScpPy5zZXRWYWx1ZShzZWxlY3RJZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlID0gdGVtcGxhdGU7XG5cbiAgICAgIC8vIEdldCBmcmVzaCB2YXJpYWJsZXMgc3RydWN0dXJlIHdpdGggc2F2ZWQgdmFsdWVzIGJ5IHBhc3NpbmcgdGhlIHJhdyBzdGVwXG4gICAgICBjb25zdCB2YXJzID0gdGhpcy5zZXRDb25kaXRpb25UZW1wbGF0ZVZhcmlhYmxlcyh0ZW1wbGF0ZSwgdGhpcy5lZGl0VGVzdFN0ZXApO1xuICAgICAgdGhpcy50ZW1wbGF0ZVZhcmlhYmxlcyA9IHZhcnM7XG5cbiAgICAgIHRoaXMuYnVpbGRWYXJpYWJsZXNGb3JtKCk7XG4gICAgICB0aGlzLnVwZGF0ZUh0bWxHcmFtbWFyKCk7XG5cbiAgICAgIC8vIEFkdmFuY2VkIHZhcmlhYmxlc1xuICAgICAgaWYgKHRoaXMuc2V0QWR2YW5jZWRTZXR0aW5nc1ZhcmlhYmxlcykge1xuICAgICAgICB0aGlzLmFkdmFuY2VkU2V0dGluZ3NWYXJpYWJsZXMgPSB0aGlzLnNldEFkdmFuY2VkU2V0dGluZ3NWYXJpYWJsZXModGVtcGxhdGUsIHRoaXMuZWRpdFRlc3RTdGVwKTtcbiAgICAgICAgdGhpcy5idWlsZEFkdmFuY2VkVmFyaWFibGVzRm9ybSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZXNjcmlwdGlvbikgdGhpcy5jb25kaXRpb25Gb3JtPy5nZXQoJ2Rlc2NyaXB0aW9uJyk/LnNldFZhbHVlKGRlc2NyaXB0aW9uLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgaWYgKG1ldGFkYXRhKSB0aGlzLmNvbmRpdGlvbkZvcm0/LmdldCgnbWV0YWRhdGEnKT8uc2V0VmFsdWUobWV0YWRhdGEsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVmFsdWVDb25maWdDYWNoZSgpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRzOiBTZWxlY3RPcHRpb25bXSA9ICh0aGlzLmNvbmRpdGlvblRlbXBsYXRlcyB8fCBbXSkubWFwKHQgPT4gKHtcbiAgICAgIGlkOiB0LmlkPy50b1N0cmluZygpIHx8IHQuZGlzcGxheU5hbWUgfHwgJycsXG4gICAgICB2YWx1ZTogdC5pZD8udG9TdHJpbmcoKSB8fCB0LmRpc3BsYXlOYW1lIHx8ICcnLFxuICAgICAgbmFtZTogdC5odG1sR3JhbW1hciB8fCB0Lm5hdHVyYWxUZXh0IHx8ICcnLFxuICAgICAgbGFiZWw6IHQuaHRtbEdyYW1tYXIgfHwgdC5uYXR1cmFsVGV4dCB8fCAnJ1xuICAgIH0pKTtcbiAgICB0aGlzLnZhbHVlQ29uZmlnQ2FjaGUgPSB7XG4gICAgICBrZXk6ICd2YWx1ZScsXG4gICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBDb25kaXRpb24gVGVtcGxhdGUqJyxcbiAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgIHNlYXJjaGFibGU6IHRydWUsXG4gICAgICBkaXNwbGF5TGFiZWxBc0lubmVySHRtbDogdHJ1ZSxcbiAgICAgIG9wdGlvbnM6IG9wdHNcbiAgICB9O1xuICB9XG5cbiAgZ2V0VmFsdWVDb25maWcoKTogRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnIHtcbiAgICBpZiAodGhpcy52YWx1ZUNvbmZpZ1dpdGhIYW5kbGVyKSByZXR1cm4gdGhpcy52YWx1ZUNvbmZpZ1dpdGhIYW5kbGVyO1xuICAgIGlmICghdGhpcy52YWx1ZUNvbmZpZ0NhY2hlKSB0aGlzLnVwZGF0ZVZhbHVlQ29uZmlnQ2FjaGUoKTtcbiAgICB0aGlzLnZhbHVlQ29uZmlnV2l0aEhhbmRsZXIgPSB7XG4gICAgICAuLi50aGlzLnZhbHVlQ29uZmlnQ2FjaGUhLFxuICAgICAgb25DaGFuZ2U6ICh2OiBhbnkpID0+IHRoaXMub25UZW1wbGF0ZVZhbHVlQ2hhbmdlKHYpXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy52YWx1ZUNvbmZpZ1dpdGhIYW5kbGVyO1xuICB9XG5cbiAgb25UZW1wbGF0ZVZhbHVlQ2hhbmdlKHRlbXBsYXRlSWQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy5jb25kaXRpb25UZW1wbGF0ZXMuZmluZChcbiAgICAgIHQgPT4gU3RyaW5nKHQuaWQpID09PSBTdHJpbmcodGVtcGxhdGVJZCkgfHwgdC5kaXNwbGF5TmFtZSA9PT0gU3RyaW5nKHRlbXBsYXRlSWQpXG4gICAgKTtcbiAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgdGhpcy50ZW1wbGF0ZVZhcmlhYmxlcyA9IHRoaXMuc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXModGVtcGxhdGUpO1xuICAgICAgdGhpcy5idWlsZFZhcmlhYmxlc0Zvcm0oKTtcbiAgICAgIHRoaXMudXBkYXRlSHRtbEdyYW1tYXIoKTtcbiAgICAgIGlmICh0aGlzLnNldEFkdmFuY2VkU2V0dGluZ3NWYXJpYWJsZXMpIHtcbiAgICAgICAgdGhpcy5hZHZhbmNlZFNldHRpbmdzVmFyaWFibGVzID0gdGhpcy5zZXRBZHZhbmNlZFNldHRpbmdzVmFyaWFibGVzKHRlbXBsYXRlKTtcbiAgICAgICAgdGhpcy5idWlsZEFkdmFuY2VkVmFyaWFibGVzRm9ybSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGVtcGxhdGUgPSBudWxsO1xuICAgICAgdGhpcy50ZW1wbGF0ZVZhcmlhYmxlcyA9IFtdO1xuICAgICAgdGhpcy5jbGVhclZhcmlhYmxlc0Zvcm0oKTtcbiAgICAgIHRoaXMuYWR2YW5jZWRTZXR0aW5nc1ZhcmlhYmxlcyA9IFtdO1xuICAgICAgdGhpcy5jbGVhckFkdmFuY2VkVmFyaWFibGVzRm9ybSgpO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRWYXJpYWJsZXNGb3JtKCk6IHZvaWQge1xuICAgIHdoaWxlICh0aGlzLnZhcmlhYmxlc0Zvcm0ubGVuZ3RoKSB0aGlzLnZhcmlhYmxlc0Zvcm0ucmVtb3ZlQXQoMCk7XG4gICAgdGhpcy50ZW1wbGF0ZVZhcmlhYmxlcy5mb3JFYWNoKHZhcmlhYmxlID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHZhcmlhYmxlLnR5cGUgPT09ICdib29sZWFuJ1xuICAgICAgICA/ICh2YXJpYWJsZS52YWx1ZSA9PT0gdHJ1ZSB8fCB2YXJpYWJsZS52YWx1ZSA9PT0gJ3RydWUnIHx8IHZhcmlhYmxlLnZhbHVlID09PSAxKVxuICAgICAgICA6ICh2YXJpYWJsZS52YWx1ZSB8fCAnJyk7XG4gICAgICBjb25zdCBncm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICBuYW1lOiBbdmFyaWFibGUubmFtZV0sXG4gICAgICAgIHZhbHVlOiBbZGVmYXVsdFZhbHVlXSxcbiAgICAgICAgdHlwZTogW3ZhcmlhYmxlLnR5cGUgfHwgJ3N0cmluZyddLFxuICAgICAgICBsYWJlbDogW3ZhcmlhYmxlLmxhYmVsIHx8ICcnXSxcbiAgICAgICAgb3B0aW9uczogW3ZhcmlhYmxlLm9wdGlvbnMgfHwgW11dXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGxhYmVsID0gdmFyaWFibGUubGFiZWw/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XG4gICAgICBpZiAobGFiZWwgPT09ICd0ZXN0LWRhdGEnIHx8IGxhYmVsID09PSAnc291cmNlLXZhbHVlJyB8fCBsYWJlbCA9PT0gJ3RhcmdldC12YWx1ZScgfHxcbiAgICAgICAgICBsYWJlbCA9PT0gJ3NvdXJjZV92YWx1ZScgfHwgbGFiZWwgPT09ICd0YXJnZXRfdmFsdWUnKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlU3RyID0gU3RyaW5nKGRlZmF1bHRWYWx1ZSB8fCAnJyk7XG4gICAgICAgIGxldCBkYXRhVHlwZSA9ICdwbGFpbi10ZXh0JztcbiAgICAgICAgaWYgKHZhbHVlU3RyLnN0YXJ0c1dpdGgoJ0B8JykgJiYgdmFsdWVTdHIuZW5kc1dpdGgoJ3wnKSkgZGF0YVR5cGUgPSAncGFyYW1ldGVyJztcbiAgICAgICAgZWxzZSBpZiAodmFsdWVTdHIuc3RhcnRzV2l0aCgnJHwnKSAmJiB2YWx1ZVN0ci5lbmRzV2l0aCgnfCcpKSBkYXRhVHlwZSA9ICdydW50aW1lJztcbiAgICAgICAgZWxzZSBpZiAodmFsdWVTdHIuc3RhcnRzV2l0aCgnKnwnKSAmJiB2YWx1ZVN0ci5lbmRzV2l0aCgnfCcpKSBkYXRhVHlwZSA9ICdlbnZpcm9ubWVudCc7XG4gICAgICAgIGdyb3VwLmFkZENvbnRyb2woJ2RhdGFUeXBlJywgbmV3IEZvcm1Db250cm9sKGRhdGFUeXBlKSk7XG4gICAgICB9XG4gICAgICB0aGlzLnZhcmlhYmxlc0Zvcm0ucHVzaChncm91cCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyVmFyaWFibGVzRm9ybSgpOiB2b2lkIHtcbiAgICB3aGlsZSAodGhpcy52YXJpYWJsZXNGb3JtLmxlbmd0aCkgdGhpcy52YXJpYWJsZXNGb3JtLnJlbW92ZUF0KDApO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEFkdmFuY2VkVmFyaWFibGVzRm9ybSgpOiB2b2lkIHtcbiAgICB3aGlsZSAodGhpcy5hZHZhbmNlZFZhcmlhYmxlc0Zvcm0ubGVuZ3RoKSB0aGlzLmFkdmFuY2VkVmFyaWFibGVzRm9ybS5yZW1vdmVBdCgwKTtcbiAgICB0aGlzLmFkdmFuY2VkU2V0dGluZ3NWYXJpYWJsZXMuZm9yRWFjaCh2YXJpYWJsZSA9PiB7XG4gICAgICBsZXQgZGVmYXVsdFZhbHVlOiBhbnk7XG4gICAgICBpZiAodmFyaWFibGUudHlwZSA9PT0gJ3N0cl9saXN0Jykge1xuICAgICAgICBjb25zdCBhcnIgPSBBcnJheS5pc0FycmF5KHZhcmlhYmxlLnZhbHVlKSA/IHZhcmlhYmxlLnZhbHVlIDogW107XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMuZmIuYXJyYXkoYXJyLmxlbmd0aCA+IDAgPyBhcnIubWFwKChpOiBzdHJpbmcpID0+IHRoaXMuZmIuY29udHJvbChpKSkgOiBbdGhpcy5mYi5jb250cm9sKCcnKV0pO1xuICAgICAgfSBlbHNlIGlmICh2YXJpYWJsZS50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gdmFyaWFibGUudmFsdWUgPT09IHRydWUgfHwgdmFyaWFibGUudmFsdWUgPT09ICd0cnVlJyB8fCB2YXJpYWJsZS52YWx1ZSA9PT0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IHZhcmlhYmxlLnZhbHVlIHx8ICcnO1xuICAgICAgfVxuICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgbmFtZTogW3ZhcmlhYmxlLm5hbWVdLFxuICAgICAgICB2YWx1ZTogdmFyaWFibGUudHlwZSA9PT0gJ3N0cl9saXN0JyA/IGRlZmF1bHRWYWx1ZSA6IFtkZWZhdWx0VmFsdWVdLFxuICAgICAgICB0eXBlOiBbdmFyaWFibGUudHlwZSB8fCAnc3RyaW5nJ10sXG4gICAgICAgIGxhYmVsOiBbdmFyaWFibGUubGFiZWwgfHwgJyddXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWR2YW5jZWRWYXJpYWJsZXNGb3JtLnB1c2goZ3JvdXApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckFkdmFuY2VkVmFyaWFibGVzRm9ybSgpOiB2b2lkIHtcbiAgICB3aGlsZSAodGhpcy5hZHZhbmNlZFZhcmlhYmxlc0Zvcm0ubGVuZ3RoKSB0aGlzLmFkdmFuY2VkVmFyaWFibGVzRm9ybS5yZW1vdmVBdCgwKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSHRtbEdyYW1tYXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkVGVtcGxhdGU/Lmh0bWxHcmFtbWFyKSB7IHRoaXMudXBkYXRlZEh0bWxHcmFtbWFyID0gJyc7IHJldHVybjsgfVxuICAgIGlmICh0aGlzLmNvbXB1dGVIdG1sR3JhbW1hckZuKSB7XG4gICAgICB0aGlzLnVwZGF0ZWRIdG1sR3JhbW1hciA9IHRoaXMuY29tcHV0ZUh0bWxHcmFtbWFyRm4odGhpcy5zZWxlY3RlZFRlbXBsYXRlLCB0aGlzLnRlbXBsYXRlVmFyaWFibGVzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGcgPSB0aGlzLnNlbGVjdGVkVGVtcGxhdGUuaHRtbEdyYW1tYXI7XG4gICAgdGhpcy50ZW1wbGF0ZVZhcmlhYmxlcy5mb3JFYWNoKHYgPT4ge1xuICAgICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKGA8c3BhbltePl0qZGF0YS1ldmVudC1rZXk9XCIke3YubmFtZX1cIltePl0qPi4qPzwvc3Bhbj5gLCAnZ2knKTtcbiAgICAgIGNvbnN0IGVzY2FwZWQgPSBTdHJpbmcodi52YWx1ZSB8fCAnJykucmVwbGFjZSgvJi9nLCAnJmFtcDsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICAgICAgZyA9IGcucmVwbGFjZShyZSwgZXNjYXBlZCk7XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVkSHRtbEdyYW1tYXIgPSBnO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRIdG1sR3JhbW1hcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWRIdG1sR3JhbW1hciB8fCB0aGlzLnNlbGVjdGVkVGVtcGxhdGU/Lmh0bWxHcmFtbWFyIHx8IHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZT8ubmF0dXJhbFRleHQgfHwgJyc7XG4gIH1cblxuICBnZXRUZW1wbGF0ZVZhcmlhYmxlcygpOiBhbnlbXSB7IHJldHVybiB0aGlzLnRlbXBsYXRlVmFyaWFibGVzOyB9XG4gIGdldFZhcmlhYmxlc0Zvcm0oKTogRm9ybUFycmF5IHsgcmV0dXJuIHRoaXMudmFyaWFibGVzRm9ybTsgfVxuICBnZXRBZHZhbmNlZFZhcmlhYmxlcygpOiBhbnlbXSB7IHJldHVybiB0aGlzLmFkdmFuY2VkU2V0dGluZ3NWYXJpYWJsZXM7IH1cbiAgZ2V0QWR2YW5jZWRWYXJpYWJsZXNGb3JtKCk6IEZvcm1BcnJheSB7IHJldHVybiB0aGlzLmFkdmFuY2VkVmFyaWFibGVzRm9ybTsgfVxuICBnZXQgaXNBZHZhbmNlZEV4cGFuZGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5hZHZhbmNlZEV4cGFuZGVkOyB9XG4gIHRvZ2dsZUFkdmFuY2VkKCk6IHZvaWQgeyB0aGlzLmFkdmFuY2VkRXhwYW5kZWQgPSAhdGhpcy5hZHZhbmNlZEV4cGFuZGVkOyB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTsgfVxuICBnZXQgaGFzU2VsZWN0ZWRUZW1wbGF0ZSgpOiBBY3Rpb25UZW1wbGF0ZSB8IG51bGwgeyByZXR1cm4gdGhpcy5zZWxlY3RlZFRlbXBsYXRlOyB9XG5cbiAgb25WYXJpYWJsZVZhbHVlQ2hhbmdlKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHYgPSB0aGlzLnRlbXBsYXRlVmFyaWFibGVzLmZpbmQodHYgPT4gdHYubmFtZSA9PT0gbmFtZSk7XG4gICAgaWYgKHYpIHYudmFsdWUgPSB2YWx1ZTtcbiAgICBjb25zdCBpZHggPSB0aGlzLnZhcmlhYmxlc0Zvcm0uY29udHJvbHMuZmluZEluZGV4KGMgPT4gYy5nZXQoJ25hbWUnKT8udmFsdWUgPT09IG5hbWUpO1xuICAgIGlmIChpZHggIT09IC0xKSB0aGlzLnZhcmlhYmxlc0Zvcm0uYXQoaWR4KS5nZXQoJ3ZhbHVlJyk/LnNldFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgdGhpcy51cGRhdGVIdG1sR3JhbW1hcigpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25WYXJpYWJsZUJvb2xlYW5DaGFuZ2UobmFtZTogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMub25WYXJpYWJsZVZhbHVlQ2hhbmdlKG5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIG9uQWR2YW5jZWRWYXJpYWJsZVZhbHVlQ2hhbmdlKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHYgPSB0aGlzLmFkdmFuY2VkU2V0dGluZ3NWYXJpYWJsZXMuZmluZCh0diA9PiB0di5uYW1lID09PSBuYW1lKTtcbiAgICBpZiAodikgdi52YWx1ZSA9IHZhbHVlO1xuICAgIGNvbnN0IGlkeCA9IHRoaXMuYWR2YW5jZWRWYXJpYWJsZXNGb3JtLmNvbnRyb2xzLmZpbmRJbmRleChjID0+IGMuZ2V0KCduYW1lJyk/LnZhbHVlID09PSBuYW1lKTtcbiAgICBpZiAoaWR4ICE9PSAtMSAmJiB2Py50eXBlICE9PSAnc3RyX2xpc3QnKSB7XG4gICAgICAodGhpcy5hZHZhbmNlZFZhcmlhYmxlc0Zvcm0uYXQoaWR4KSBhcyBGb3JtR3JvdXApLmdldCgndmFsdWUnKT8uc2V0VmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gIH1cblxuICBvbkFkdmFuY2VkVmFyaWFibGVCb29sZWFuQ2hhbmdlKG5hbWU6IHN0cmluZywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLm9uQWR2YW5jZWRWYXJpYWJsZVZhbHVlQ2hhbmdlKG5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIGlzRm9ybVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5jb25kaXRpb25Gb3JtLnZhbGlkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVWYXJpYWJsZXMuZXZlcnkodiA9PiB7XG4gICAgICBpZiAodi5kYXRhS2V5ID09PSAnZWxlbWVudCcgfHwgdi5kYXRhS2V5ID09PSAndGVzdF9kYXRhJyB8fCB2LmRhdGFLZXkgPT09ICdzb3VyY2VfdmFsdWUnIHx8IHYuZGF0YUtleSA9PT0gJ3RhcmdldF92YWx1ZScpIHtcbiAgICAgICAgcmV0dXJuIHYudmFsdWUgIT09IG51bGwgJiYgdi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHYudmFsdWUgIT09ICcnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBvbkNhbmNlbCgpOiB2b2lkIHsgdGhpcy5jYW5jZWxsZWQuZW1pdCgpOyB9XG5cbiAgb25TYXZlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0Zvcm1WYWxpZCgpKSByZXR1cm47XG4gICAgLy8gU3luYyBhZHZhbmNlZCBmb3JtIHZhbHVlcyBiYWNrIHRvIGFycmF5XG4gICAgdGhpcy5hZHZhbmNlZFNldHRpbmdzVmFyaWFibGVzLmZvckVhY2goKHZhcmlhYmxlLCBpKSA9PiB7XG4gICAgICBjb25zdCBmZyA9IHRoaXMuYWR2YW5jZWRWYXJpYWJsZXNGb3JtLmF0KGkpIGFzIEZvcm1Hcm91cDtcbiAgICAgIGlmICghZmcpIHJldHVybjtcbiAgICAgIGNvbnN0IGZ2ID0gZmcuZ2V0KCd2YWx1ZScpPy52YWx1ZTtcbiAgICAgIGlmICh2YXJpYWJsZS50eXBlID09PSAnc3RyX2xpc3QnICYmIGZ2IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgICAgIHZhcmlhYmxlLnZhbHVlID0gZnYuY29udHJvbHMubWFwKGMgPT4gYy52YWx1ZSkuZmlsdGVyKCh2YWw6IHN0cmluZykgPT4gdmFsPy50cmltKCkgIT09ICcnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhcmlhYmxlLnZhbHVlID0gZnY7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBmaW5hbEFkdmFuY2VkVmFycyA9IFsuLi50aGlzLmFkdmFuY2VkU2V0dGluZ3NWYXJpYWJsZXNdO1xuICAgIGNvbnN0IHNob3VsZFNraXBWYXIgPSBmaW5hbEFkdmFuY2VkVmFycy5maW5kKHYgPT4gdi5uYW1lID09PSAnc2hvdWxkU2tpcCcpO1xuICAgIGNvbnN0IGlzU3RlcE9wdGlvbmFsVmFyID0gZmluYWxBZHZhbmNlZFZhcnMuZmluZCh2ID0+IHYubmFtZSA9PT0gJ2lzU3RlcE9wdGlvbmFsJyk7XG5cbiAgICB0aGlzLnNhdmUuZW1pdCh7XG4gICAgICB0ZW1wbGF0ZTogdGhpcy5zZWxlY3RlZFRlbXBsYXRlLFxuICAgICAgdGVtcGxhdGVWYXJpYWJsZXM6IFsuLi50aGlzLnRlbXBsYXRlVmFyaWFibGVzXSxcbiAgICAgIGFkdmFuY2VkU2V0dGluZ3NWYXJpYWJsZXM6IGZpbmFsQWR2YW5jZWRWYXJzLFxuICAgICAgYWN0aW9uOiB0aGlzLnNlbGVjdGVkVGVtcGxhdGU/Lm5hdHVyYWxUZXh0IHx8IHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZT8uaHRtbEdyYW1tYXIgfHwgJycsXG4gICAgICByZXNvbHZlZEFjdGlvbjogdGhpcy5jdXJyZW50SHRtbEdyYW1tYXIsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5jb25kaXRpb25Gb3JtLmdldCgnZGVzY3JpcHRpb24nKT8udmFsdWUgfHwgJycsXG4gICAgICBtZXRhZGF0YTogdGhpcy5jb25kaXRpb25Gb3JtLmdldCgnbWV0YWRhdGEnKT8udmFsdWUgfHwgJycsXG4gICAgICBzaG91bGRTa2lwOiBzaG91bGRTa2lwVmFyID8gISFzaG91bGRTa2lwVmFyLnZhbHVlIDogZmFsc2UsXG4gICAgICBpZ25vcmVTdGVwUmVzdWx0OiBpc1N0ZXBPcHRpb25hbFZhciA/ICEhaXNTdGVwT3B0aW9uYWxWYXIudmFsdWUgOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtaC1mdWxsIGNxYS1iZy13aGl0ZSBjcWEtcHgtNCBjcWEtcHktMlwiPlxuICA8IS0tIEhlYWRlciAtLT5cbiAgPGgyIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LWJsYWNrLTEwMCBjcWEtbWItNFwiPlxuICAgIHt7IHRpdGxlIH19XG4gIDwvaDI+XG5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZmxleC0xIGNxYS1vdmVyZmxvdy15LWF1dG9cIj5cbiAgICA8IS0tIENvbmRpdGlvbiBCdWlsZGVyIFNlY3Rpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1tYi02XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLW1iLTNcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLXRleHQtWzEycHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LWdyYXktOTAwXCI+XG4gICAgICAgICAgQ29uZGl0aW9uIEJ1aWxkZXJcbiAgICAgICAgPC9oMz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFNpbmdsZSBDb25kaXRpb24gUm93IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIiBbZm9ybUdyb3VwXT1cImNvbmRpdGlvbkZvcm1cIj5cbiAgICAgICAgPCEtLSBDb25kaXRpb24gTGFiZWwgKyBUZW1wbGF0ZSBEcm9wZG93biAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgPCEtLSBMYWJlbCAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1mb250LXNlbWlib2xkXCI+XG4gICAgICAgICAgICB7eyBjb25kaXRpb25Sb3dMYWJlbCB9fVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBWYWx1ZSBUZW1wbGF0ZSBEcm9wZG93biAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtbWluLXctWzE1MHB4XSBjcWEtdGV4dC1bMTBweF1cIj5cbiAgICAgICAgICAgIDxjcWEtZHluYW1pYy1zZWxlY3QgW2Zvcm1dPVwiY29uZGl0aW9uRm9ybVwiIFtjb25maWddPVwiZ2V0VmFsdWVDb25maWcoKVwiPlxuICAgICAgICAgICAgPC9jcWEtZHluYW1pYy1zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gVGVtcGxhdGUgVmFyaWFibGVzIFNlY3Rpb24gKHNob3duIHdoZW4gdGVtcGxhdGUgaXMgc2VsZWN0ZWQpIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaGFzU2VsZWN0ZWRUZW1wbGF0ZVwiIGNsYXNzPVwiY3FhLW10LTJcIj5cbiAgICAgICAgICA8IS0tIFRlbXBsYXRlIEdyYW1tYXIgRGlzcGxheSAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLW1iLTQgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZmxleC13cmFwIGNxYS1nYXAtMSBjcWEtdGV4dC1zbSBjcWEtdGV4dC1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1hY3Rpb24tZm9ybWF0IGNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMjNweF0gY3FhLXRleHQtYmxhY2stMTAwXCJcbiAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjdXJyZW50SHRtbEdyYW1tYXJcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBUZW1wbGF0ZSBWYXJpYWJsZXMgRm9ybSAtLT5cbiAgICAgICAgICA8Y3FhLXRlbXBsYXRlLXZhcmlhYmxlcy1mb3JtXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxMDAlO1wiXG4gICAgICAgICAgICBbdGVtcGxhdGVWYXJpYWJsZXNdPVwiZ2V0VGVtcGxhdGVWYXJpYWJsZXMoKVwiXG4gICAgICAgICAgICBbdmFyaWFibGVzRm9ybV09XCJnZXRWYXJpYWJsZXNGb3JtKClcIlxuICAgICAgICAgICAgW21ldGFkYXRhXT1cImNvbmRpdGlvbkZvcm0uZ2V0KCdtZXRhZGF0YScpPy52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiY29uZGl0aW9uRm9ybS5nZXQoJ2Rlc2NyaXB0aW9uJyk/LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgIFtlbGVtZW50T3B0aW9uc109XCJlbGVtZW50T3B0aW9uc1wiXG4gICAgICAgICAgICBbaGFzTW9yZUVsZW1lbnRzXT1cImhhc01vcmVFbGVtZW50c1wiXG4gICAgICAgICAgICBbaXNMb2FkaW5nRWxlbWVudHNdPVwiaXNMb2FkaW5nRWxlbWVudHNcIlxuICAgICAgICAgICAgW3NjcmVlbk5hbWVPcHRpb25zXT1cInNjcmVlbk5hbWVPcHRpb25zXCJcbiAgICAgICAgICAgIFtoYXNNb3JlU2NyZWVuTmFtZXNdPVwiaGFzTW9yZVNjcmVlbk5hbWVzXCJcbiAgICAgICAgICAgIFtpc0xvYWRpbmdTY3JlZW5OYW1lc109XCJpc0xvYWRpbmdTY3JlZW5OYW1lc1wiXG4gICAgICAgICAgICBbcGFyYW1ldGVyT3B0aW9uc109XCJwYXJhbWV0ZXJPcHRpb25zXCJcbiAgICAgICAgICAgIFtoYXNNb3JlUGFyYW1ldGVyc109XCJoYXNNb3JlUGFyYW1ldGVyc1wiXG4gICAgICAgICAgICBbaXNMb2FkaW5nUGFyYW1ldGVyc109XCJpc0xvYWRpbmdQYXJhbWV0ZXJzXCJcbiAgICAgICAgICAgIFtlbnZpcm9ubWVudE9wdGlvbnNdPVwiZW52aXJvbm1lbnRPcHRpb25zXCJcbiAgICAgICAgICAgIFtoYXNNb3JlRW52aXJvbm1lbnRzXT1cImhhc01vcmVFbnZpcm9ubWVudHNcIlxuICAgICAgICAgICAgW2lzTG9hZGluZ0Vudmlyb25tZW50c109XCJpc0xvYWRpbmdFbnZpcm9ubWVudHNcIlxuICAgICAgICAgICAgW3Rlc3RDYXNlRW52aXJvbm1lbnROYW1lXT1cInRlc3RDYXNlRW52aXJvbm1lbnROYW1lXCJcbiAgICAgICAgICAgIFt0ZXN0Q2FzZUVudmlyb25tZW50TGFiZWxTdWZmaXhdPVwidGVzdENhc2VFbnZpcm9ubWVudExhYmVsU3VmZml4XCJcbiAgICAgICAgICAgIFtlbnZpcm9ubWVudExlZ2FjeURlcHJlY2F0aW9uTWVzc2FnZV09XCJlbnZpcm9ubWVudExlZ2FjeURlcHJlY2F0aW9uTWVzc2FnZVwiXG4gICAgICAgICAgICBbdGVzdENhc2VUZXN0RGF0YUlkXT1cInRlc3RDYXNlVGVzdERhdGFJZFwiXG4gICAgICAgICAgICBbaGFzVGVzdERhdGFQcm9maWxlXT1cImhhc1Rlc3REYXRhUHJvZmlsZVwiXG4gICAgICAgICAgICBbaXNJbnNpZGVGb3JMb29wU3RlcF09XCJpc0luc2lkZUZvckxvb3BTdGVwXCJcbiAgICAgICAgICAgIFtnbG9iYWxWYXJpYWJsZU9wdGlvbnNdPVwiZ2xvYmFsVmFyaWFibGVPcHRpb25zXCJcbiAgICAgICAgICAgIFtpc0xvYWRpbmdHbG9iYWxWYXJpYWJsZXNdPVwiaXNMb2FkaW5nR2xvYmFsVmFyaWFibGVzXCJcbiAgICAgICAgICAgIFtkZWZhdWx0VGVzdERhdGFQcm9maWxlSWRdPVwiZGVmYXVsdFRlc3REYXRhUHJvZmlsZUlkXCJcbiAgICAgICAgICAgIFtkZWZhdWx0VGVzdERhdGFTdGFydEluZGV4XT1cImRlZmF1bHRUZXN0RGF0YVN0YXJ0SW5kZXhcIlxuICAgICAgICAgICAgW2RlZmF1bHRUZXN0RGF0YUVuZEluZGV4XT1cImRlZmF1bHRUZXN0RGF0YUVuZEluZGV4XCJcbiAgICAgICAgICAgICh2YXJpYWJsZVZhbHVlQ2hhbmdlKT1cIm9uVmFyaWFibGVWYWx1ZUNoYW5nZSgkZXZlbnQubmFtZSwgJGV2ZW50LnZhbHVlKVwiXG4gICAgICAgICAgICAodmFyaWFibGVCb29sZWFuQ2hhbmdlKT1cIm9uVmFyaWFibGVCb29sZWFuQ2hhbmdlKCRldmVudC5uYW1lLCAkZXZlbnQudmFsdWUpXCJcbiAgICAgICAgICAgIChtZXRhZGF0YUNoYW5nZSk9XCJjb25kaXRpb25Gb3JtLmdldCgnbWV0YWRhdGEnKT8uc2V0VmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgICAoZGVzY3JpcHRpb25DaGFuZ2UpPVwiY29uZGl0aW9uRm9ybS5nZXQoJ2Rlc2NyaXB0aW9uJyk/LnNldFZhbHVlKCRldmVudClcIlxuICAgICAgICAgICAgKGxvYWRNb3JlRWxlbWVudHMpPVwibG9hZE1vcmVFbGVtZW50cy5lbWl0KClcIlxuICAgICAgICAgICAgKHNlYXJjaEVsZW1lbnRzKT1cInNlYXJjaEVsZW1lbnRzLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc2VhcmNoRWxlbWVudHNCeVNjcmVlbk5hbWUpPVwic2VhcmNoRWxlbWVudHNCeVNjcmVlbk5hbWUuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjcmVhdGVFbGVtZW50KT1cImNyZWF0ZUVsZW1lbnQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChzZWFyY2hTY3JlZW5OYW1lKT1cInNlYXJjaFNjcmVlbk5hbWUuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChsb2FkTW9yZVNjcmVlbk5hbWVzKT1cImxvYWRNb3JlU2NyZWVuTmFtZXMuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjcmVhdGVTY3JlZW5OYW1lUmVxdWVzdCk9XCJjcmVhdGVTY3JlZW5OYW1lUmVxdWVzdC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgKHNlYXJjaFBhcmFtZXRlcnMpPVwic2VhcmNoUGFyYW1ldGVycy5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgKGxvYWRNb3JlUGFyYW1ldGVycyk9XCJsb2FkTW9yZVBhcmFtZXRlcnMuZW1pdCgpXCJcbiAgICAgICAgICAgIChzZWFyY2hFbnZpcm9ubWVudHMpPVwic2VhcmNoRW52aXJvbm1lbnRzLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAobG9hZE1vcmVFbnZpcm9ubWVudHMpPVwibG9hZE1vcmVFbnZpcm9ubWVudHMuZW1pdCgpXCJcbiAgICAgICAgICAgIChzZWFyY2hHbG9iYWxWYXJpYWJsZXMpPVwic2VhcmNoR2xvYmFsVmFyaWFibGVzLmVtaXQoJGV2ZW50KVwiPlxuICAgICAgICAgIDwvY3FhLXRlbXBsYXRlLXZhcmlhYmxlcy1mb3JtPlxuXG4gICAgICAgICAgPCEtLSBBZHZhbmNlZCBTZXR0aW5ncyBWYXJpYWJsZXMgRm9ybSAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0QWR2YW5jZWRWYXJpYWJsZXMoKS5sZW5ndGggPiAwXCIgY2xhc3M9XCJjcWEtbXQtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtdy1mdWxsXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtdy1mdWxsIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZ2FwLTIgY3FhLXRleHQtc20gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LWdyYXktNzAwIGNxYS1iZy10cmFuc3BhcmVudCBjcWEtYm9yZGVyLW5vbmUgY3FhLWN1cnNvci1wb2ludGVyIGNxYS1wLTAgY3FhLW1iLTEuNVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFkdmFuY2VkKClcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XVwiPkFkdmFuY2VkPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS10ZXh0LWJhc2VcIiBbY2xhc3MuY3FhLXJvdGF0ZS0xODBdPVwiaXNBZHZhbmNlZEV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICBleHBhbmRfbW9yZVxuICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNBZHZhbmNlZEV4cGFuZGVkXCIgY2xhc3M9XCJjcWEtbXQtMlwiPlxuICAgICAgICAgICAgICAgIDxjcWEtYWR2YW5jZWQtdmFyaWFibGVzLWZvcm1cbiAgICAgICAgICAgICAgICAgIFthZHZhbmNlZFZhcmlhYmxlc109XCJnZXRBZHZhbmNlZFZhcmlhYmxlcygpXCJcbiAgICAgICAgICAgICAgICAgIFthZHZhbmNlZFZhcmlhYmxlRm9ybV09XCJnZXRBZHZhbmNlZFZhcmlhYmxlc0Zvcm0oKVwiXG4gICAgICAgICAgICAgICAgICAodmFyaWFibGVCb29sZWFuQ2hhbmdlKT1cIm9uQWR2YW5jZWRWYXJpYWJsZUJvb2xlYW5DaGFuZ2UoJGV2ZW50Lm5hbWUsICRldmVudC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgKHZhcmlhYmxlVmFsdWVDaGFuZ2UpPVwib25BZHZhbmNlZFZhcmlhYmxlVmFsdWVDaGFuZ2UoJGV2ZW50Lm5hbWUsICRldmVudC52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICA8L2NxYS1hZHZhbmNlZC12YXJpYWJsZXMtZm9ybT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBBY3Rpb24gQnV0dG9ucyAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS13LWZ1bGwgY3FhLWdhcC0yIGNxYS1tdC1hdXRvIGNxYS1wdC00IGNxYS1ib3JkZXItdCBjcWEtYm9yZGVyLWdyYXktMjAwXCI+XG4gICAgPGNxYS1idXR0b24gY2xhc3M9XCJjcWEtdy0xLzJcIiB2YXJpYW50PVwib3V0bGluZWRcIiB0ZXh0PVwiQ2FuY2VsXCIgW2N1c3RvbUNsYXNzXT1cIidjcWEtZmxleC0xIGNxYS13LWZ1bGwnXCJcbiAgICAgIChjbGlja2VkKT1cIm9uQ2FuY2VsKClcIj5cbiAgICA8L2NxYS1idXR0b24+XG4gICAgPGNxYS1idXR0b24gKm5nSWY9XCIhaXNTYXZpbmdcIiBjbGFzcz1cImNxYS13LTEvMlwiIHZhcmlhbnQ9XCJmaWxsZWRcIiBbdGV4dF09XCJzYXZlQnV0dG9uTGFiZWxcIlxuICAgICAgW2N1c3RvbUNsYXNzXT1cIidjcWEtZmxleC0xIGNxYS13LWZ1bGwnXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhaXNGb3JtVmFsaWQoKVwiXG4gICAgICAoY2xpY2tlZCk9XCJvblNhdmUoKVwiPlxuICAgIDwvY3FhLWJ1dHRvbj5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNTYXZpbmdcIiBjbGFzcz1cImNxYS13LTEvMiBjcWEtZmxleC0xIGNxYS1taW4taC1bMzhweF0gY3FhLXJvdW5kZWQtWzhweF1cIj5cbiAgICAgIDxjcWEtYmFkZ2UgbGFiZWw9XCJTYXZpbmfigKZcIiBpY29uPVwiYXV0b3JlbmV3XCIgW2lzTG9hZGluZ109XCJ0cnVlXCIgW2Z1bGxXaWR0aF09XCJ0cnVlXCIgW2NlbnRlckNvbnRlbnRdPVwidHJ1ZVwiXG4gICAgICAgIFtpbmxpbmVTdHlsZXNdPVwiJ21pbi1oZWlnaHQ6IDM4cHg7IGhlaWdodDogMzhweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7J1wiXG4gICAgICAgIHZhcmlhbnQ9XCJpbmZvXCIgc2l6ZT1cIm1lZGl1bVwiPjwvY3FhLWJhZGdlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
449
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWJyYW5jaC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL2NvbmRpdGlvbi1kZWJ1Zy1zdGVwL2NvbmRpdGlvbi1icmFuY2gtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9jb25kaXRpb24tZGVidWctc3RlcC9jb25kaXRpb24tYnJhbmNoLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUN0Qyx1QkFBdUIsRUFDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBMEIsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBbUI1Rjs7Ozs7O0dBTUc7QUFRSCxNQUFNLE9BQU8sOEJBQThCO0lBc0h6QyxZQUFvQixFQUFlLEVBQVUsR0FBc0I7UUFBL0MsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBcEhuRSxpR0FBaUc7UUFDeEYsU0FBSSxHQUEyQixhQUFhLENBQUM7UUFFdEQseUVBQXlFO1FBQ2hFLHVCQUFrQixHQUFxQixFQUFFLENBQUM7UUFFbkQsbUVBQW1FO1FBQzFELGtDQUE2QixHQUF3RCxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFFdkcsbURBQW1EO1FBQzFDLGlDQUE0QixHQUF3RCxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFLdEcseUNBQXlDO1FBQ2hDLG1CQUFjLEdBQVUsRUFBRSxDQUFDO1FBQzNCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxzQkFBaUIs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cHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEeW5hbWljU2VsZWN0RmllbGRDb25maWcsIFNlbGVjdE9wdGlvbiB9IGZyb20gJy4uLy4uL2R5bmFtaWMtc2VsZWN0L2R5bmFtaWMtc2VsZWN0LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25UZW1wbGF0ZSB9IGZyb20gJy4uLy4uL3N0ZXAtYnVpbGRlci9zdGVwLWJ1aWxkZXItYWN0aW9uL3N0ZXAtYnVpbGRlci1hY3Rpb24uY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25CcmFuY2hTYXZlRGF0YSB7XG4gIHRlbXBsYXRlOiBBY3Rpb25UZW1wbGF0ZSB8IG51bGw7XG4gIHRlbXBsYXRlVmFyaWFibGVzOiBhbnlbXTtcbiAgYWR2YW5jZWRTZXR0aW5nc1ZhcmlhYmxlczogYW55W107XG4gIGFjdGlvbjogc3RyaW5nO1xuICAvKiogUmVzb2x2ZWQgSFRNTCBncmFtbWFyIHdpdGggYWN0dWFsIHZhcmlhYmxlIHZhbHVlcyBzdWJzdGl0dXRlZCDigJQgdXNlIGZvciBkaXNwbGF5L2NvbmRpdGlvblRleHQgKi9cbiAgcmVzb2x2ZWRBY3Rpb246IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgbWV0YWRhdGE6IHN0cmluZztcbiAgLyoqIERlcml2ZWQgZnJvbSBhZHZhbmNlZFNldHRpbmdzVmFyaWFibGVzICdzaG91bGRTa2lwJyBlbnRyeSDigJQgc3RlcCBzaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgZXhlY3V0aW9uICovXG4gIHNob3VsZFNraXA6IGJvb2xlYW47XG4gIC8qKiBEZXJpdmVkIGZyb20gYWR2YW5jZWRTZXR0aW5nc1ZhcmlhYmxlcyAnaXNTdGVwT3B0aW9uYWwnIGVudHJ5IOKAlCBzdGVwIGZhaWx1cmUgc2hvdWxkIG5vdCBmYWlsIHRoZSB0ZXN0ICovXG4gIGlnbm9yZVN0ZXBSZXN1bHQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogTGlnaHR3ZWlnaHQgc2luZ2xlLWNvbmRpdGlvbiBlZGl0b3IgdXNlZCBpbiBkZWJ1ZyBtb2RlIHRvOlxuICogIC0gQWRkIGEgbmV3IEVMU0UgSUYgYnJhbmNoIChtb2RlID0gJ2FkZC1lbHNlLWlmJylcbiAqICAtIEVkaXQgYW4gZXhpc3RpbmcgSUYgb3IgRUxTRSBJRiBjb25kaXRpb24gKG1vZGUgPSAnZWRpdCcpXG4gKlxuICogVGhpcyBpcyBhIHNpbXBsaWZpZWQgdmFyaWFudCBvZiBTdGVwQnVpbGRlckNvbmRpdGlvbkNvbXBvbmVudCB3aXRoIG9uZSBjb25kaXRpb24gcm93LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtY29uZGl0aW9uLWJyYW5jaC1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZGl0aW9uLWJyYW5jaC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENvbmRpdGlvbkJyYW5jaEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICAvKiogJ2FkZC1lbHNlLWlmJyBzaG93cyBcIkFkZCBFTFNFIElGXCIgdGl0bGUvYnV0dG9uOyAnZWRpdCcgc2hvd3MgXCJFZGl0IENvbmRpdGlvblwiIHRpdGxlL2J1dHRvbiAqL1xuICBASW5wdXQoKSBtb2RlOiAnYWRkLWVsc2UtaWYnIHwgJ2VkaXQnID0gJ2FkZC1lbHNlLWlmJztcblxuICAvKiogTGlzdCBvZiBjb25kaXRpb24gYWN0aW9uIHRlbXBsYXRlcyAoZmlsdGVyZWQgdG8gSUZfQ09ORElUSU9OIHR5cGUpICovXG4gIEBJbnB1dCgpIGNvbmRpdGlvblRlbXBsYXRlczogQWN0aW9uVGVtcGxhdGVbXSA9IFtdO1xuXG4gIC8qKiBDYWxsZWQgdG8gZGVyaXZlIHRlbXBsYXRlIHZhcmlhYmxlcyBmcm9tIGEgc2VsZWN0ZWQgdGVtcGxhdGUgKi9cbiAgQElucHV0KCkgc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXM6ICh0ZW1wbGF0ZTogQWN0aW9uVGVtcGxhdGUsIHRlc3RTdGVwPzogYW55KSA9PiBhbnlbXSA9ICgpID0+IFtdO1xuXG4gIC8qKiBDYWxsZWQgdG8gZGVyaXZlIGFkdmFuY2VkIHNldHRpbmdzIHZhcmlhYmxlcyAqL1xuICBASW5wdXQoKSBzZXRBZHZhbmNlZFNldHRpbmdzVmFyaWFibGVzOiAodGVtcGxhdGU6IEFjdGlvblRlbXBsYXRlLCB0ZXN0U3RlcD86IGFueSkgPT4gYW55W10gPSAoKSA9PiBbXTtcblxuICAvKiogQ2VudHJhbGlzZWQgSFRNTCBncmFtbWFyIGNvbXB1dGF0aW9uIGZ1bmN0aW9uICovXG4gIEBJbnB1dCgpIGNvbXB1dGVIdG1sR3JhbW1hckZuPzogKHRlbXBsYXRlOiBhbnksIHZhcmlhYmxlczogYW55W10pID0+IHN0cmluZztcblxuICAvKiogRWxlbWVudCBvcHRpb25zIGZvciB2YXJpYWJsZSBmb3JtcyAqL1xuICBASW5wdXQoKSBlbGVtZW50T3B0aW9uczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgaGFzTW9yZUVsZW1lbnRzOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzTG9hZGluZ0VsZW1lbnRzOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNjcmVlbk5hbWVPcHRpb25zOiB7IGlkPzogbnVtYmVyOyBuYW1lOiBzdHJpbmcgfVtdID0gW107XG4gIEBJbnB1dCgpIGhhc01vcmVTY3JlZW5OYW1lczogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0xvYWRpbmdTY3JlZW5OYW1lczogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwYXJhbWV0ZXJPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBoYXNNb3JlUGFyYW1ldGVyczogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0xvYWRpbmdQYXJhbWV0ZXJzOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVudmlyb25tZW50T3B0aW9uczogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IGVudmlyb25tZW50OiBzdHJpbmc7IHR5cGU/OiBzdHJpbmc7IHBlcm1pc3Npb25Nb2RlPzogc3RyaW5nIH1bXSA9IFtdO1xuICBASW5wdXQoKSBoYXNNb3JlRW52aXJvbm1lbnRzOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzTG9hZGluZ0Vudmlyb25tZW50czogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogUmVzb2x2ZWQgdGVzdC1jYXNlIGVudiBuYW1lOyBkcml2ZXMgYmFubmVyICsgZW52LWRyb3Bkb3duIGF1dG8tc2VsZWN0ICsgbG9jayBpbiBpbm5lciB0ZW1wbGF0ZS12YXJpYWJsZXMtZm9ybS4gKi9cbiAgQElucHV0KCkgdGVzdENhc2VFbnZpcm9ubWVudE5hbWU/OiBzdHJpbmc7XG4gIC8qKiBTdWZmaXggb24gdGhlIGVudi1uYW1lIG9wdGlvbiBsYWJlbCAoZS5nLiAnKGRlZmF1bHQpJykuIEFsc28gbG9ja3MgdGhlIGVudiBkcm9wZG93bi4gKi9cbiAgQElucHV0KCkgdGVzdENhc2VFbnZpcm9ubWVudExhYmVsU3VmZml4Pzogc3RyaW5nO1xuICAvKiogSXRhbGljIG5vdGUgcmVuZGVyZWQgdW5kZXIgZW52IGRyb3Bkb3duIGluIHRoZSBpbm5lciBmb3JtLiAqL1xuICBASW5wdXQoKSBlbnZpcm9ubWVudExlZ2FjeURlcHJlY2F0aW9uTWVzc2FnZT86IHN0cmluZztcbiAgLyoqIFRlc3QgY2FzZSdzIFREUCBpZCDigJQgZ2F0ZXMgdGhlIFRlc3QgRGF0YSBQcm9maWxlIHRhYiBpbiB0aGUgaW5uZXIgZm9ybS4gKi9cbiAgQElucHV0KCkgdGVzdENhc2VUZXN0RGF0YUlkPzogbnVtYmVyIHwgbnVsbDtcbiAgLyoqIFdoZW4gdHJ1ZSAob3IgYGlzSW5zaWRlRm9yTG9vcFN0ZXBgIHRydWUpLCB0aGUgaW5uZXIgZm9ybSBzaG93cyB0aGUgVGVzdFxuICAgKiAgRGF0YSBQcm9maWxlIHNlZ21lbnQuIFdpdGhvdXQgdGhpcywgdGhlIGxpYiBkZWZhdWx0cyB0aGUgc2VnbWVudCBpbixcbiAgICogIGV2ZW4gdGhvdWdoIHRoZSB0ZXN0IGNhc2UgaGFzIG5vIFREUCDigJQgd2hpY2ggaXMgd2hhdCBzaG93cyB0aGUgdGFiIGluIHRoZVxuICAgKiAgZGVidWctc2NyZWVuIGNvbmRpdGlvbi1icmFuY2ggZWRpdG9yLiAqL1xuICBASW5wdXQoKSBoYXNUZXN0RGF0YVByb2ZpbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqIFRydWUgd2hlbiB0aGlzIGJyYW5jaCBsaXZlcyBpbnNpZGUgYSBGT1ItbG9vcCBzdGVwLiAqL1xuICBASW5wdXQoKSBpc0luc2lkZUZvckxvb3BTdGVwOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBXb3Jrc3BhY2Utc2NvcGVkIGdsb2JhbCB2YXJpYWJsZXMgZm9yIHRoZSBHbG9iYWwgRGF0YSB0YWIuICovXG4gIEBJbnB1dCgpIGdsb2JhbFZhcmlhYmxlT3B0aW9uczogeyBpZDogbnVtYmVyIHwgc3RyaW5nOyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IHR5cGU/OiBzdHJpbmc7IHJlYWRXcml0ZU1vZGU/OiBzdHJpbmcgfVtdID0gW107XG4gIEBJbnB1dCgpIGlzTG9hZGluZ0dsb2JhbFZhcmlhYmxlczogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkZWZhdWx0VGVzdERhdGFQcm9maWxlSWQ/OiBudW1iZXI7XG4gIEBJbnB1dCgpIGRlZmF1bHRUZXN0RGF0YVN0YXJ0SW5kZXg/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBFbmQgaW5kZXggb2YgdGhlIGluaGVyaXRlZCBkYXRhc2V0IHJhbmdlICgwLWJhc2VkKS4gRHJpdmVzIGJvdGggdGhlXG4gICAqIERhdGEgU2V0IEVuZCBkcm9wZG93biBsb2NrIGFuZCB0aGUgYXV0by1wb3B1bGF0aW9uIG9mIHRlc3QtZGF0YSB2YXJpYWJsZXNcbiAgICogZnJvbSB0aGUgZW5kLXJvdyBpbnNpZGUgY3FhLXRlbXBsYXRlLXZhcmlhYmxlcy1mb3JtLiBGb3J3YXJkZWQgdG8gdGhlXG4gICAqIGlubmVyIGZvcm0uIFdpdGhvdXQgdGhpcywgdGhlIHBhcmVudCAoZS5nLiBkZWJ1Zy1zY3JlZW4gY29uZGl0aW9uLWJyYW5jaFxuICAgKiBmbG93KSBjYW4ndCBmdWxseSByZXByb2R1Y2UgdGhlIGxvY2sgcGFyaXR5IHRoYXRcbiAgICogY3FhLXN0ZXAtYnVpbGRlci1hY3Rpb24gZ2V0cyB2aWEgYXBwLXN0ZXAtYnVpbGRlci5cbiAgICovXG4gIEBJbnB1dCgpIGRlZmF1bHRUZXN0RGF0YUVuZEluZGV4PzogbnVtYmVyO1xuXG4gIC8qKiBXaGVuIHByb3ZpZGVkLCBwcmUtcG9wdWxhdGVzIHRoZSBmb3JtIGZvciBlZGl0IG1vZGUuIHNoYXBlOiB7IHRlbXBsYXRlSWQsIHRlbXBsYXRlVmFyaWFibGVzLCBhY3Rpb24gfSAqL1xuICBASW5wdXQoKSBpbml0aWFsQ29uZGl0aW9uRGF0YT86IHtcbiAgICB0ZW1wbGF0ZUlkPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHRlbXBsYXRlVmFyaWFibGVzPzogYW55W107XG4gICAgYWN0aW9uPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIG1ldGFkYXRhPzogc3RyaW5nO1xuICB9O1xuXG4gIC8qKiBSYXcgYnJhbmNoIHN0ZXAgb2JqZWN0IOKAlCBwYXNzZWQgdGhyb3VnaCB0byBzZXRDb25kaXRpb25UZW1wbGF0ZVZhcmlhYmxlcyBzbyB0aGUgc2VydmljZSBjYW4gZXh0cmFjdCBzYXZlZCB2YWx1ZXMgZnJvbSBzdGVwLmV2ZW50ICovXG4gIEBJbnB1dCgpIGVkaXRUZXN0U3RlcD86IGFueTtcblxuICAvKiogTGFiZWwgc2hvd24gbmV4dCB0byB0aGUgY29uZGl0aW9uIHRlbXBsYXRlIGRyb3Bkb3duIChlLmcuICdJRicsICdFTFNFIElGJykuIEluZmVycmVkIGZyb20gbW9kZSB3aGVuIG5vdCBwcm92aWRlZC4gKi9cbiAgQElucHV0KCkgYnJhbmNoTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqIFRydWUgd2hpbGUgdGhlIHBhcmVudCBpcyBzYXZpbmcgKGRpc2FibGVzL3Nob3dzIGxvYWRlciBvbiBTYXZlIGJ1dHRvbikgKi9cbiAgQElucHV0KCkgaXNTYXZpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29uZGl0aW9uQnJhbmNoU2F2ZURhdGE+KCk7XG4gIEBPdXRwdXQoKSBjYW5jZWxsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBsb2FkTW9yZUVsZW1lbnRzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc2VhcmNoRWxlbWVudHMgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaEVsZW1lbnRzQnlTY3JlZW5OYW1lID0gbmV3IEV2ZW50RW1pdHRlcjx7IHNjcmVlbk5hbWVJZDogbnVtYmVyOyBzZWFyY2hUZXJtPzogc3RyaW5nIH0+KCk7XG4gIEBPdXRwdXQoKSBjcmVhdGVFbGVtZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBzZWFyY2hTY3JlZW5OYW1lID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBsb2FkTW9yZVNjcmVlbk5hbWVzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBjcmVhdGVTY3JlZW5OYW1lUmVxdWVzdCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgc2VhcmNoUGFyYW1ldGVycyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgbG9hZE1vcmVQYXJhbWV0ZXJzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc2VhcmNoRW52aXJvbm1lbnRzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBsb2FkTW9yZUVudmlyb25tZW50cyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaEdsb2JhbFZhcmlhYmxlcyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGNvbmRpdGlvbkZvcm0hOiBGb3JtR3JvdXA7XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZFRlbXBsYXRlOiBBY3Rpb25UZW1wbGF0ZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHRlbXBsYXRlVmFyaWFibGVzOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIHZhcmlhYmxlc0Zvcm0hOiBGb3JtQXJyYXk7XG4gIHByaXZhdGUgYWR2YW5jZWRTZXR0aW5nc1ZhcmlhYmxlczogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSBhZHZhbmNlZFZhcmlhYmxlc0Zvcm0hOiBGb3JtQXJyYXk7XG4gIHByaXZhdGUgYWR2YW5jZWRFeHBhbmRlZCA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWRIdG1sR3JhbW1hciA9ICcnO1xuXG4gIHByaXZhdGUgdmFsdWVDb25maWdDYWNoZTogRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdmFsdWVDb25maWdXaXRoSGFuZGxlcjogRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnIHwgbnVsbCA9IG51bGw7XG5cbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ2VkaXQnID8gJ0VkaXQgQ29uZGl0aW9uJyA6ICdBZGQgRUxTRSBJRic7XG4gIH1cblxuICBnZXQgc2F2ZUJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ2VkaXQnID8gJ1NhdmUnIDogJ0FkZCBFTFNFIElGJztcbiAgfVxuXG4gIGdldCBjb25kaXRpb25Sb3dMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmJyYW5jaExhYmVsID8/ICh0aGlzLm1vZGUgPT09ICdlZGl0JyA/ICdJRicgOiAnRUxTRSBJRicpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZhcmlhYmxlc0Zvcm0gPSB0aGlzLmZiLmFycmF5KFtdKTtcbiAgICB0aGlzLmFkdmFuY2VkVmFyaWFibGVzRm9ybSA9IHRoaXMuZmIuYXJyYXkoW10pO1xuXG4gICAgdGhpcy5jb25kaXRpb25Gb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICB2YWx1ZTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgZGVzY3JpcHRpb246IFsnJ10sXG4gICAgICBtZXRhZGF0YTogWycnXSxcbiAgICB9KTtcblxuICAgIHRoaXMudXBkYXRlVmFsdWVDb25maWdDYWNoZSgpO1xuXG4gICAgLy8gUHJlLXBvcHVsYXRlIGZvciBlZGl0IG1vZGVcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZWRpdCcgJiYgdGhpcy5pbml0aWFsQ29uZGl0aW9uRGF0YSkge1xuICAgICAgdGhpcy5wcmVmaWxsRnJvbUluaXRpYWxEYXRhKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2NvbmRpdGlvblRlbXBsYXRlcyddICYmICFjaGFuZ2VzWydjb25kaXRpb25UZW1wbGF0ZXMnXS5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZUNvbmZpZ0NhY2hlKCk7XG4gICAgICB0aGlzLnZhbHVlQ29uZmlnV2l0aEhhbmRsZXIgPSBudWxsO1xuICAgICAgLy8gUmUtcHJlZmlsbCBpZiB3ZSBub3cgaGF2ZSB0ZW1wbGF0ZXMgYW5kIHdlcmUgd2FpdGluZ1xuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ2VkaXQnICYmIHRoaXMuaW5pdGlhbENvbmRpdGlvbkRhdGEgJiYgIXRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSkge1xuICAgICAgICB0aGlzLnByZWZpbGxGcm9tSW5pdGlhbERhdGEoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHByZWZpbGxGcm9tSW5pdGlhbERhdGEoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmluaXRpYWxDb25kaXRpb25EYXRhIHx8ICF0aGlzLmNvbmRpdGlvblRlbXBsYXRlcz8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zdCB7IHRlbXBsYXRlSWQsIGFjdGlvbiwgZGVzY3JpcHRpb24sIG1ldGFkYXRhIH0gPSB0aGlzLmluaXRpYWxDb25kaXRpb25EYXRhO1xuXG4gICAgLy8gRmluZCBtYXRjaGluZyB0ZW1wbGF0ZVxuICAgIGxldCB0ZW1wbGF0ZTogQWN0aW9uVGVtcGxhdGUgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHRlbXBsYXRlSWQgIT0gbnVsbCkge1xuICAgICAgdGVtcGxhdGUgPSB0aGlzLmNvbmRpdGlvblRlbXBsYXRlcy5maW5kKFxuICAgICAgICB0ID0+IFN0cmluZyh0LmlkKSA9PT0gU3RyaW5nKHRlbXBsYXRlSWQpIHx8IHQuZGlzcGxheU5hbWUgPT09IFN0cmluZyh0ZW1wbGF0ZUlkKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCF0ZW1wbGF0ZSAmJiBhY3Rpb24pIHtcbiAgICAgIHRlbXBsYXRlID0gdGhpcy5jb25kaXRpb25UZW1wbGF0ZXMuZmluZChcbiAgICAgICAgdCA9PiB0Lm5hdHVyYWxUZXh0ID09PSBhY3Rpb24gfHwgdC5odG1sR3JhbW1hciA9PT0gYWN0aW9uIHx8IHQuZGlzcGxheU5hbWUgPT09IGFjdGlvblxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgIGNvbnN0IHNlbGVjdElkID0gdGVtcGxhdGUuaWQ/LnRvU3RyaW5nKCkgfHwgdGVtcGxhdGUuZGlzcGxheU5hbWUgfHwgJyc7XG4gICAgICB0aGlzLmNvbmRpdGlvbkZvcm0/LmdldCgndmFsdWUnKT8uc2V0VmFsdWUoc2VsZWN0SWQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuXG4gICAgICAvLyBHZXQgZnJlc2ggdmFyaWFibGVzIHN0cnVjdHVyZSB3aXRoIHNhdmVkIHZhbHVlcyBieSBwYXNzaW5nIHRoZSByYXcgc3RlcFxuICAgICAgY29uc3QgdmFycyA9IHRoaXMuc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXModGVtcGxhdGUsIHRoaXMuZWRpdFRlc3RTdGVwKTtcbiAgICAgIHRoaXMudGVtcGxhdGVWYXJpYWJsZXMgPSB2YXJzO1xuXG4gICAgICB0aGlzLmJ1aWxkVmFyaWFibGVzRm9ybSgpO1xuICAgICAgdGhpcy51cGRhdGVIdG1sR3JhbW1hcigpO1xuXG4gICAgICAvLyBBZHZhbmNlZCB2YXJpYWJsZXNcbiAgICAgIGlmICh0aGlzLnNldEFkdmFuY2VkU2V0dGluZ3NWYXJpYWJsZXMpIHtcbiAgICAgICAgdGhpcy5hZHZhbmNlZFNldHRpbmdzVmFyaWFibGVzID0gdGhpcy5zZXRBZHZhbmNlZFNldHRpbmdzVmFyaWFibGVzKHRlbXBsYXRlLCB0aGlzLmVkaXRUZXN0U3RlcCk7XG4gICAgICAgIHRoaXMuYnVpbGRBZHZhbmNlZFZhcmlhYmxlc0Zvcm0oKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVzY3JpcHRpb24pIHRoaXMuY29uZGl0aW9uRm9ybT8uZ2V0KCdkZXNjcmlwdGlvbicpPy5zZXRWYWx1ZShkZXNjcmlwdGlvbiwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIGlmIChtZXRhZGF0YSkgdGhpcy5jb25kaXRpb25Gb3JtPy5nZXQoJ21ldGFkYXRhJyk/LnNldFZhbHVlKG1ldGFkYXRhLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZhbHVlQ29uZmlnQ2FjaGUoKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0czogU2VsZWN0T3B0aW9uW10gPSAodGhpcy5jb25kaXRpb25UZW1wbGF0ZXMgfHwgW10pLm1hcCh0ID0+ICh7XG4gICAgICBpZDogdC5pZD8udG9TdHJpbmcoKSB8fCB0LmRpc3BsYXlOYW1lIHx8ICcnLFxuICAgICAgdmFsdWU6IHQuaWQ/LnRvU3RyaW5nKCkgfHwgdC5kaXNwbGF5TmFtZSB8fCAnJyxcbiAgICAgIG5hbWU6IHQuaHRtbEdyYW1tYXIgfHwgdC5uYXR1cmFsVGV4dCB8fCAnJyxcbiAgICAgIGxhYmVsOiB0Lmh0bWxHcmFtbWFyIHx8IHQubmF0dXJhbFRleHQgfHwgJydcbiAgICB9KSk7XG4gICAgdGhpcy52YWx1ZUNvbmZpZ0NhY2hlID0ge1xuICAgICAga2V5OiAndmFsdWUnLFxuICAgICAgcGxhY2Vob2xkZXI6ICdTZWxlY3QgQ29uZGl0aW9uIFRlbXBsYXRlKicsXG4gICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICBzZWFyY2hhYmxlOiB0cnVlLFxuICAgICAgZGlzcGxheUxhYmVsQXNJbm5lckh0bWw6IHRydWUsXG4gICAgICBvcHRpb25zOiBvcHRzXG4gICAgfTtcbiAgfVxuXG4gIGdldFZhbHVlQ29uZmlnKCk6IER5bmFtaWNTZWxlY3RGaWVsZENvbmZpZyB7XG4gICAgaWYgKHRoaXMudmFsdWVDb25maWdXaXRoSGFuZGxlcikgcmV0dXJuIHRoaXMudmFsdWVDb25maWdXaXRoSGFuZGxlcjtcbiAgICBpZiAoIXRoaXMudmFsdWVDb25maWdDYWNoZSkgdGhpcy51cGRhdGVWYWx1ZUNvbmZpZ0NhY2hlKCk7XG4gICAgdGhpcy52YWx1ZUNvbmZpZ1dpdGhIYW5kbGVyID0ge1xuICAgICAgLi4udGhpcy52YWx1ZUNvbmZpZ0NhY2hlISxcbiAgICAgIG9uQ2hhbmdlOiAodjogYW55KSA9PiB0aGlzLm9uVGVtcGxhdGVWYWx1ZUNoYW5nZSh2KVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMudmFsdWVDb25maWdXaXRoSGFuZGxlcjtcbiAgfVxuXG4gIG9uVGVtcGxhdGVWYWx1ZUNoYW5nZSh0ZW1wbGF0ZUlkOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuY29uZGl0aW9uVGVtcGxhdGVzLmZpbmQoXG4gICAgICB0ID0+IFN0cmluZyh0LmlkKSA9PT0gU3RyaW5nKHRlbXBsYXRlSWQpIHx8IHQuZGlzcGxheU5hbWUgPT09IFN0cmluZyh0ZW1wbGF0ZUlkKVxuICAgICk7XG4gICAgaWYgKHRlbXBsYXRlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICAgIHRoaXMudGVtcGxhdGVWYXJpYWJsZXMgPSB0aGlzLnNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzKHRlbXBsYXRlKTtcbiAgICAgIHRoaXMuYnVpbGRWYXJpYWJsZXNGb3JtKCk7XG4gICAgICB0aGlzLnVwZGF0ZUh0bWxHcmFtbWFyKCk7XG4gICAgICBpZiAodGhpcy5zZXRBZHZhbmNlZFNldHRpbmdzVmFyaWFibGVzKSB7XG4gICAgICAgIHRoaXMuYWR2YW5jZWRTZXR0aW5nc1ZhcmlhYmxlcyA9IHRoaXMuc2V0QWR2YW5jZWRTZXR0aW5nc1ZhcmlhYmxlcyh0ZW1wbGF0ZSk7XG4gICAgICAgIHRoaXMuYnVpbGRBZHZhbmNlZFZhcmlhYmxlc0Zvcm0oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlID0gbnVsbDtcbiAgICAgIHRoaXMudGVtcGxhdGVWYXJpYWJsZXMgPSBbXTtcbiAgICAgIHRoaXMuY2xlYXJWYXJpYWJsZXNGb3JtKCk7XG4gICAgICB0aGlzLmFkdmFuY2VkU2V0dGluZ3NWYXJpYWJsZXMgPSBbXTtcbiAgICAgIHRoaXMuY2xlYXJBZHZhbmNlZFZhcmlhYmxlc0Zvcm0oKTtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVmFyaWFibGVzRm9ybSgpOiB2b2lkIHtcbiAgICB3aGlsZSAodGhpcy52YXJpYWJsZXNGb3JtLmxlbmd0aCkgdGhpcy52YXJpYWJsZXNGb3JtLnJlbW92ZUF0KDApO1xuICAgIHRoaXMudGVtcGxhdGVWYXJpYWJsZXMuZm9yRWFjaCh2YXJpYWJsZSA9PiB7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB2YXJpYWJsZS50eXBlID09PSAnYm9vbGVhbidcbiAgICAgICAgPyAodmFyaWFibGUudmFsdWUgPT09IHRydWUgfHwgdmFyaWFibGUudmFsdWUgPT09ICd0cnVlJyB8fCB2YXJpYWJsZS52YWx1ZSA9PT0gMSlcbiAgICAgICAgOiAodmFyaWFibGUudmFsdWUgfHwgJycpO1xuICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgbmFtZTogW3ZhcmlhYmxlLm5hbWVdLFxuICAgICAgICB2YWx1ZTogW2RlZmF1bHRWYWx1ZV0sXG4gICAgICAgIHR5cGU6IFt2YXJpYWJsZS50eXBlIHx8ICdzdHJpbmcnXSxcbiAgICAgICAgbGFiZWw6IFt2YXJpYWJsZS5sYWJlbCB8fCAnJ10sXG4gICAgICAgIG9wdGlvbnM6IFt2YXJpYWJsZS5vcHRpb25zIHx8IFtdXVxuICAgICAgfSk7XG4gICAgICBjb25zdCBsYWJlbCA9IHZhcmlhYmxlLmxhYmVsPy50b0xvd2VyQ2FzZSgpIHx8ICcnO1xuICAgICAgaWYgKGxhYmVsID09PSAndGVzdC1kYXRhJyB8fCBsYWJlbCA9PT0gJ3NvdXJjZS12YWx1ZScgfHwgbGFiZWwgPT09ICd0YXJnZXQtdmFsdWUnIHx8XG4gICAgICAgICAgbGFiZWwgPT09ICdzb3VyY2VfdmFsdWUnIHx8IGxhYmVsID09PSAndGFyZ2V0X3ZhbHVlJykge1xuICAgICAgICBjb25zdCB2YWx1ZVN0ciA9IFN0cmluZyhkZWZhdWx0VmFsdWUgfHwgJycpO1xuICAgICAgICBsZXQgZGF0YVR5cGUgPSAncGxhaW4tdGV4dCc7XG4gICAgICAgIGlmICh2YWx1ZVN0ci5zdGFydHNXaXRoKCdAfCcpICYmIHZhbHVlU3RyLmVuZHNXaXRoKCd8JykpIGRhdGFUeXBlID0gJ3BhcmFtZXRlcic7XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlU3RyLnN0YXJ0c1dpdGgoJyR8JykgJiYgdmFsdWVTdHIuZW5kc1dpdGgoJ3wnKSkgZGF0YVR5cGUgPSAncnVudGltZSc7XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlU3RyLnN0YXJ0c1dpdGgoJyp8JykgJiYgdmFsdWVTdHIuZW5kc1dpdGgoJ3wnKSkgZGF0YVR5cGUgPSAnZW52aXJvbm1lbnQnO1xuICAgICAgICBncm91cC5hZGRDb250cm9sKCdkYXRhVHlwZScsIG5ldyBGb3JtQ29udHJvbChkYXRhVHlwZSkpO1xuICAgICAgfVxuICAgICAgdGhpcy52YXJpYWJsZXNGb3JtLnB1c2goZ3JvdXApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclZhcmlhYmxlc0Zvcm0oKTogdm9pZCB7XG4gICAgd2hpbGUgKHRoaXMudmFyaWFibGVzRm9ybS5sZW5ndGgpIHRoaXMudmFyaWFibGVzRm9ybS5yZW1vdmVBdCgwKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRBZHZhbmNlZFZhcmlhYmxlc0Zvcm0oKTogdm9pZCB7XG4gICAgd2hpbGUgKHRoaXMuYWR2YW5jZWRWYXJpYWJsZXNGb3JtLmxlbmd0aCkgdGhpcy5hZHZhbmNlZFZhcmlhYmxlc0Zvcm0ucmVtb3ZlQXQoMCk7XG4gICAgdGhpcy5hZHZhbmNlZFNldHRpbmdzVmFyaWFibGVzLmZvckVhY2godmFyaWFibGUgPT4ge1xuICAgICAgbGV0IGRlZmF1bHRWYWx1ZTogYW55O1xuICAgICAgaWYgKHZhcmlhYmxlLnR5cGUgPT09ICdzdHJfbGlzdCcpIHtcbiAgICAgICAgY29uc3QgYXJyID0gQXJyYXkuaXNBcnJheSh2YXJpYWJsZS52YWx1ZSkgPyB2YXJpYWJsZS52YWx1ZSA6IFtdO1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSB0aGlzLmZiLmFycmF5KGFyci5sZW5ndGggPiAwID8gYXJyLm1hcCgoaTogc3RyaW5nKSA9PiB0aGlzLmZiLmNvbnRyb2woaSkpIDogW3RoaXMuZmIuY29udHJvbCgnJyldKTtcbiAgICAgIH0gZWxzZSBpZiAodmFyaWFibGUudHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IHZhcmlhYmxlLnZhbHVlID09PSB0cnVlIHx8IHZhcmlhYmxlLnZhbHVlID09PSAndHJ1ZScgfHwgdmFyaWFibGUudmFsdWUgPT09IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSB2YXJpYWJsZS52YWx1ZSB8fCAnJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIG5hbWU6IFt2YXJpYWJsZS5uYW1lXSxcbiAgICAgICAgdmFsdWU6IHZhcmlhYmxlLnR5cGUgPT09ICdzdHJfbGlzdCcgPyBkZWZhdWx0VmFsdWUgOiBbZGVmYXVsdFZhbHVlXSxcbiAgICAgICAgdHlwZTogW3ZhcmlhYmxlLnR5cGUgfHwgJ3N0cmluZyddLFxuICAgICAgICBsYWJlbDogW3ZhcmlhYmxlLmxhYmVsIHx8ICcnXVxuICAgICAgfSk7XG4gICAgICB0aGlzLmFkdmFuY2VkVmFyaWFibGVzRm9ybS5wdXNoKGdyb3VwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJBZHZhbmNlZFZhcmlhYmxlc0Zvcm0oKTogdm9pZCB7XG4gICAgd2hpbGUgKHRoaXMuYWR2YW5jZWRWYXJpYWJsZXNGb3JtLmxlbmd0aCkgdGhpcy5hZHZhbmNlZFZhcmlhYmxlc0Zvcm0ucmVtb3ZlQXQoMCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUh0bWxHcmFtbWFyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFRlbXBsYXRlPy5odG1sR3JhbW1hcikgeyB0aGlzLnVwZGF0ZWRIdG1sR3JhbW1hciA9ICcnOyByZXR1cm47IH1cbiAgICBpZiAodGhpcy5jb21wdXRlSHRtbEdyYW1tYXJGbikge1xuICAgICAgdGhpcy51cGRhdGVkSHRtbEdyYW1tYXIgPSB0aGlzLmNvbXB1dGVIdG1sR3JhbW1hckZuKHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSwgdGhpcy50ZW1wbGF0ZVZhcmlhYmxlcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBnID0gdGhpcy5zZWxlY3RlZFRlbXBsYXRlLmh0bWxHcmFtbWFyO1xuICAgIHRoaXMudGVtcGxhdGVWYXJpYWJsZXMuZm9yRWFjaCh2ID0+IHtcbiAgICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChgPHNwYW5bXj5dKmRhdGEtZXZlbnQta2V5PVwiJHt2Lm5hbWV9XCJbXj5dKj4uKj88L3NwYW4+YCwgJ2dpJyk7XG4gICAgICBjb25zdCBlc2NhcGVkID0gU3RyaW5nKHYudmFsdWUgfHwgJycpLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKTtcbiAgICAgIGcgPSBnLnJlcGxhY2UocmUsIGVzY2FwZWQpO1xuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlZEh0bWxHcmFtbWFyID0gZztcbiAgfVxuXG4gIGdldCBjdXJyZW50SHRtbEdyYW1tYXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkSHRtbEdyYW1tYXIgfHwgdGhpcy5zZWxlY3RlZFRlbXBsYXRlPy5odG1sR3JhbW1hciB8fCB0aGlzLnNlbGVjdGVkVGVtcGxhdGU/Lm5hdHVyYWxUZXh0IHx8ICcnO1xuICB9XG5cbiAgZ2V0VGVtcGxhdGVWYXJpYWJsZXMoKTogYW55W10geyByZXR1cm4gdGhpcy50ZW1wbGF0ZVZhcmlhYmxlczsgfVxuICBnZXRWYXJpYWJsZXNGb3JtKCk6IEZvcm1BcnJheSB7IHJldHVybiB0aGlzLnZhcmlhYmxlc0Zvcm07IH1cbiAgZ2V0QWR2YW5jZWRWYXJpYWJsZXMoKTogYW55W10geyByZXR1cm4gdGhpcy5hZHZhbmNlZFNldHRpbmdzVmFyaWFibGVzOyB9XG4gIGdldEFkdmFuY2VkVmFyaWFibGVzRm9ybSgpOiBGb3JtQXJyYXkgeyByZXR1cm4gdGhpcy5hZHZhbmNlZFZhcmlhYmxlc0Zvcm07IH1cbiAgZ2V0IGlzQWR2YW5jZWRFeHBhbmRlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuYWR2YW5jZWRFeHBhbmRlZDsgfVxuICB0b2dnbGVBZHZhbmNlZCgpOiB2b2lkIHsgdGhpcy5hZHZhbmNlZEV4cGFuZGVkID0gIXRoaXMuYWR2YW5jZWRFeHBhbmRlZDsgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7IH1cbiAgZ2V0IGhhc1NlbGVjdGVkVGVtcGxhdGUoKTogQWN0aW9uVGVtcGxhdGUgfCBudWxsIHsgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZTsgfVxuXG4gIG9uVmFyaWFibGVWYWx1ZUNoYW5nZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB2ID0gdGhpcy50ZW1wbGF0ZVZhcmlhYmxlcy5maW5kKHR2ID0+IHR2Lm5hbWUgPT09IG5hbWUpO1xuICAgIGlmICh2KSB2LnZhbHVlID0gdmFsdWU7XG4gICAgY29uc3QgaWR4ID0gdGhpcy52YXJpYWJsZXNGb3JtLmNvbnRyb2xzLmZpbmRJbmRleChjID0+IGMuZ2V0KCduYW1lJyk/LnZhbHVlID09PSBuYW1lKTtcbiAgICBpZiAoaWR4ICE9PSAtMSkgdGhpcy52YXJpYWJsZXNGb3JtLmF0KGlkeCkuZ2V0KCd2YWx1ZScpPy5zZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIHRoaXMudXBkYXRlSHRtbEdyYW1tYXIoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uVmFyaWFibGVCb29sZWFuQ2hhbmdlKG5hbWU6IHN0cmluZywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLm9uVmFyaWFibGVWYWx1ZUNoYW5nZShuYW1lLCB2YWx1ZSk7XG4gIH1cblxuICBvbkFkdmFuY2VkVmFyaWFibGVWYWx1ZUNoYW5nZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB2ID0gdGhpcy5hZHZhbmNlZFNldHRpbmdzVmFyaWFibGVzLmZpbmQodHYgPT4gdHYubmFtZSA9PT0gbmFtZSk7XG4gICAgaWYgKHYpIHYudmFsdWUgPSB2YWx1ZTtcbiAgICBjb25zdCBpZHggPSB0aGlzLmFkdmFuY2VkVmFyaWFibGVzRm9ybS5jb250cm9scy5maW5kSW5kZXgoYyA9PiBjLmdldCgnbmFtZScpPy52YWx1ZSA9PT0gbmFtZSk7XG4gICAgaWYgKGlkeCAhPT0gLTEgJiYgdj8udHlwZSAhPT0gJ3N0cl9saXN0Jykge1xuICAgICAgKHRoaXMuYWR2YW5jZWRWYXJpYWJsZXNGb3JtLmF0KGlkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3ZhbHVlJyk/LnNldFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICB9XG5cbiAgb25BZHZhbmNlZFZhcmlhYmxlQm9vbGVhbkNoYW5nZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5vbkFkdmFuY2VkVmFyaWFibGVWYWx1ZUNoYW5nZShuYW1lLCB2YWx1ZSk7XG4gIH1cblxuICBpc0Zvcm1WYWxpZCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY29uZGl0aW9uRm9ybS52YWxpZCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlVmFyaWFibGVzLmV2ZXJ5KHYgPT4ge1xuICAgICAgaWYgKHYuZGF0YUtleSA9PT0gJ2VsZW1lbnQnIHx8IHYuZGF0YUtleSA9PT0gJ3Rlc3RfZGF0YScgfHwgdi5kYXRhS2V5ID09PSAnc291cmNlX3ZhbHVlJyB8fCB2LmRhdGFLZXkgPT09ICd0YXJnZXRfdmFsdWUnKSB7XG4gICAgICAgIHJldHVybiB2LnZhbHVlICE9PSBudWxsICYmIHYudmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2LnZhbHVlICE9PSAnJztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgb25DYW5jZWwoKTogdm9pZCB7IHRoaXMuY2FuY2VsbGVkLmVtaXQoKTsgfVxuXG4gIG9uU2F2ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNGb3JtVmFsaWQoKSkgcmV0dXJuO1xuICAgIC8vIFN5bmMgYWR2YW5jZWQgZm9ybSB2YWx1ZXMgYmFjayB0byBhcnJheVxuICAgIHRoaXMuYWR2YW5jZWRTZXR0aW5nc1ZhcmlhYmxlcy5mb3JFYWNoKCh2YXJpYWJsZSwgaSkgPT4ge1xuICAgICAgY29uc3QgZmcgPSB0aGlzLmFkdmFuY2VkVmFyaWFibGVzRm9ybS5hdChpKSBhcyBGb3JtR3JvdXA7XG4gICAgICBpZiAoIWZnKSByZXR1cm47XG4gICAgICBjb25zdCBmdiA9IGZnLmdldCgndmFsdWUnKT8udmFsdWU7XG4gICAgICBpZiAodmFyaWFibGUudHlwZSA9PT0gJ3N0cl9saXN0JyAmJiBmdiBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgICB2YXJpYWJsZS52YWx1ZSA9IGZ2LmNvbnRyb2xzLm1hcChjID0+IGMudmFsdWUpLmZpbHRlcigodmFsOiBzdHJpbmcpID0+IHZhbD8udHJpbSgpICE9PSAnJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXJpYWJsZS52YWx1ZSA9IGZ2O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgZmluYWxBZHZhbmNlZFZhcnMgPSBbLi4udGhpcy5hZHZhbmNlZFNldHRpbmdzVmFyaWFibGVzXTtcbiAgICBjb25zdCBzaG91bGRTa2lwVmFyID0gZmluYWxBZHZhbmNlZFZhcnMuZmluZCh2ID0+IHYubmFtZSA9PT0gJ3Nob3VsZFNraXAnKTtcbiAgICBjb25zdCBpc1N0ZXBPcHRpb25hbFZhciA9IGZpbmFsQWR2YW5jZWRWYXJzLmZpbmQodiA9PiB2Lm5hbWUgPT09ICdpc1N0ZXBPcHRpb25hbCcpO1xuXG4gICAgdGhpcy5zYXZlLmVtaXQoe1xuICAgICAgdGVtcGxhdGU6IHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSxcbiAgICAgIHRlbXBsYXRlVmFyaWFibGVzOiBbLi4udGhpcy50ZW1wbGF0ZVZhcmlhYmxlc10sXG4gICAgICBhZHZhbmNlZFNldHRpbmdzVmFyaWFibGVzOiBmaW5hbEFkdmFuY2VkVmFycyxcbiAgICAgIGFjdGlvbjogdGhpcy5zZWxlY3RlZFRlbXBsYXRlPy5uYXR1cmFsVGV4dCB8fCB0aGlzLnNlbGVjdGVkVGVtcGxhdGU/Lmh0bWxHcmFtbWFyIHx8ICcnLFxuICAgICAgcmVzb2x2ZWRBY3Rpb246IHRoaXMuY3VycmVudEh0bWxHcmFtbWFyLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuY29uZGl0aW9uRm9ybS5nZXQoJ2Rlc2NyaXB0aW9uJyk/LnZhbHVlIHx8ICcnLFxuICAgICAgbWV0YWRhdGE6IHRoaXMuY29uZGl0aW9uRm9ybS5nZXQoJ21ldGFkYXRhJyk/LnZhbHVlIHx8ICcnLFxuICAgICAgc2hvdWxkU2tpcDogc2hvdWxkU2tpcFZhciA/ICEhc2hvdWxkU2tpcFZhci52YWx1ZSA6IGZhbHNlLFxuICAgICAgaWdub3JlU3RlcFJlc3VsdDogaXNTdGVwT3B0aW9uYWxWYXIgPyAhIWlzU3RlcE9wdGlvbmFsVmFyLnZhbHVlIDogZmFsc2UsXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWgtZnVsbCBjcWEtYmctd2hpdGUgY3FhLXB4LTQgY3FhLXB5LTJcIj5cbiAgPCEtLSBIZWFkZXIgLS0+XG4gIDxoMiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1ibGFjay0xMDAgY3FhLW1iLTRcIj5cbiAgICB7eyB0aXRsZSB9fVxuICA8L2gyPlxuXG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWZsZXgtMSBjcWEtb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgPCEtLSBDb25kaXRpb24gQnVpbGRlciBTZWN0aW9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtbWItNlwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1tYi0zXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1ncmF5LTkwMFwiPlxuICAgICAgICAgIENvbmRpdGlvbiBCdWlsZGVyXG4gICAgICAgIDwvaDM+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBTaW5nbGUgQ29uZGl0aW9uIFJvdyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yXCIgW2Zvcm1Hcm91cF09XCJjb25kaXRpb25Gb3JtXCI+XG4gICAgICAgIDwhLS0gQ29uZGl0aW9uIExhYmVsICsgVGVtcGxhdGUgRHJvcGRvd24gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDwhLS0gTGFiZWwgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZFwiPlxuICAgICAgICAgICAge3sgY29uZGl0aW9uUm93TGFiZWwgfX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gVmFsdWUgVGVtcGxhdGUgRHJvcGRvd24gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLW1pbi13LVsxNTBweF0gY3FhLXRleHQtWzEwcHhdXCI+XG4gICAgICAgICAgICA8Y3FhLWR5bmFtaWMtc2VsZWN0IFtmb3JtXT1cImNvbmRpdGlvbkZvcm1cIiBbY29uZmlnXT1cImdldFZhbHVlQ29uZmlnKClcIj5cbiAgICAgICAgICAgIDwvY3FhLWR5bmFtaWMtc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFRlbXBsYXRlIFZhcmlhYmxlcyBTZWN0aW9uIChzaG93biB3aGVuIHRlbXBsYXRlIGlzIHNlbGVjdGVkKSAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImhhc1NlbGVjdGVkVGVtcGxhdGVcIiBjbGFzcz1cImNxYS1tdC0yXCI+XG4gICAgICAgICAgPCEtLSBUZW1wbGF0ZSBHcmFtbWFyIERpc3BsYXkgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1tYi00IGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWZsZXgtd3JhcCBjcWEtZ2FwLTEgY3FhLXRleHQtc20gY3FhLXRleHQtZ3JheS03MDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYWN0aW9uLWZvcm1hdCBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzIzcHhdIGNxYS10ZXh0LWJsYWNrLTEwMFwiXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY3VycmVudEh0bWxHcmFtbWFyXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gVGVtcGxhdGUgVmFyaWFibGVzIEZvcm0gLS0+XG4gICAgICAgICAgPGNxYS10ZW1wbGF0ZS12YXJpYWJsZXMtZm9ybVxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIlxuICAgICAgICAgICAgW3RlbXBsYXRlVmFyaWFibGVzXT1cImdldFRlbXBsYXRlVmFyaWFibGVzKClcIlxuICAgICAgICAgICAgW3ZhcmlhYmxlc0Zvcm1dPVwiZ2V0VmFyaWFibGVzRm9ybSgpXCJcbiAgICAgICAgICAgIFttZXRhZGF0YV09XCJjb25kaXRpb25Gb3JtLmdldCgnbWV0YWRhdGEnKT8udmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cImNvbmRpdGlvbkZvcm0uZ2V0KCdkZXNjcmlwdGlvbicpPy52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICBbZWxlbWVudE9wdGlvbnNdPVwiZWxlbWVudE9wdGlvbnNcIlxuICAgICAgICAgICAgW2hhc01vcmVFbGVtZW50c109XCJoYXNNb3JlRWxlbWVudHNcIlxuICAgICAgICAgICAgW2lzTG9hZGluZ0VsZW1lbnRzXT1cImlzTG9hZGluZ0VsZW1lbnRzXCJcbiAgICAgICAgICAgIFtzY3JlZW5OYW1lT3B0aW9uc109XCJzY3JlZW5OYW1lT3B0aW9uc1wiXG4gICAgICAgICAgICBbaGFzTW9yZVNjcmVlbk5hbWVzXT1cImhhc01vcmVTY3JlZW5OYW1lc1wiXG4gICAgICAgICAgICBbaXNMb2FkaW5nU2NyZWVuTmFtZXNdPVwiaXNMb2FkaW5nU2NyZWVuTmFtZXNcIlxuICAgICAgICAgICAgW3BhcmFtZXRlck9wdGlvbnNdPVwicGFyYW1ldGVyT3B0aW9uc1wiXG4gICAgICAgICAgICBbaGFzTW9yZVBhcmFtZXRlcnNdPVwiaGFzTW9yZVBhcmFtZXRlcnNcIlxuICAgICAgICAgICAgW2lzTG9hZGluZ1BhcmFtZXRlcnNdPVwiaXNMb2FkaW5nUGFyYW1ldGVyc1wiXG4gICAgICAgICAgICBbZW52aXJvbm1lbnRPcHRpb25zXT1cImVudmlyb25tZW50T3B0aW9uc1wiXG4gICAgICAgICAgICBbaGFzTW9yZUVudmlyb25tZW50c109XCJoYXNNb3JlRW52aXJvbm1lbnRzXCJcbiAgICAgICAgICAgIFtpc0xvYWRpbmdFbnZpcm9ubWVudHNdPVwiaXNMb2FkaW5nRW52aXJvbm1lbnRzXCJcbiAgICAgICAgICAgIFt0ZXN0Q2FzZUVudmlyb25tZW50TmFtZV09XCJ0ZXN0Q2FzZUVudmlyb25tZW50TmFtZVwiXG4gICAgICAgICAgICBbdGVzdENhc2VFbnZpcm9ubWVudExhYmVsU3VmZml4XT1cInRlc3RDYXNlRW52aXJvbm1lbnRMYWJlbFN1ZmZpeFwiXG4gICAgICAgICAgICBbZW52aXJvbm1lbnRMZWdhY3lEZXByZWNhdGlvbk1lc3NhZ2VdPVwiZW52aXJvbm1lbnRMZWdhY3lEZXByZWNhdGlvbk1lc3NhZ2VcIlxuICAgICAgICAgICAgW3Rlc3RDYXNlVGVzdERhdGFJZF09XCJ0ZXN0Q2FzZVRlc3REYXRhSWRcIlxuICAgICAgICAgICAgW2hhc1Rlc3REYXRhUHJvZmlsZV09XCJoYXNUZXN0RGF0YVByb2ZpbGVcIlxuICAgICAgICAgICAgW2lzSW5zaWRlRm9yTG9vcFN0ZXBdPVwiaXNJbnNpZGVGb3JMb29wU3RlcFwiXG4gICAgICAgICAgICBbZ2xvYmFsVmFyaWFibGVPcHRpb25zXT1cImdsb2JhbFZhcmlhYmxlT3B0aW9uc1wiXG4gICAgICAgICAgICBbaXNMb2FkaW5nR2xvYmFsVmFyaWFibGVzXT1cImlzTG9hZGluZ0dsb2JhbFZhcmlhYmxlc1wiXG4gICAgICAgICAgICBbZGVmYXVsdFRlc3REYXRhUHJvZmlsZUlkXT1cImRlZmF1bHRUZXN0RGF0YVByb2ZpbGVJZFwiXG4gICAgICAgICAgICBbZGVmYXVsdFRlc3REYXRhU3RhcnRJbmRleF09XCJkZWZhdWx0VGVzdERhdGFTdGFydEluZGV4XCJcbiAgICAgICAgICAgIFtkZWZhdWx0VGVzdERhdGFFbmRJbmRleF09XCJkZWZhdWx0VGVzdERhdGFFbmRJbmRleFwiXG4gICAgICAgICAgICAodmFyaWFibGVWYWx1ZUNoYW5nZSk9XCJvblZhcmlhYmxlVmFsdWVDaGFuZ2UoJGV2ZW50Lm5hbWUsICRldmVudC52YWx1ZSlcIlxuICAgICAgICAgICAgKHZhcmlhYmxlQm9vbGVhbkNoYW5nZSk9XCJvblZhcmlhYmxlQm9vbGVhbkNoYW5nZSgkZXZlbnQubmFtZSwgJGV2ZW50LnZhbHVlKVwiXG4gICAgICAgICAgICAobWV0YWRhdGFDaGFuZ2UpPVwiY29uZGl0aW9uRm9ybS5nZXQoJ21ldGFkYXRhJyk/LnNldFZhbHVlKCRldmVudClcIlxuICAgICAgICAgICAgKGRlc2NyaXB0aW9uQ2hhbmdlKT1cImNvbmRpdGlvbkZvcm0uZ2V0KCdkZXNjcmlwdGlvbicpPy5zZXRWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChsb2FkTW9yZUVsZW1lbnRzKT1cImxvYWRNb3JlRWxlbWVudHMuZW1pdCgpXCJcbiAgICAgICAgICAgIChzZWFyY2hFbGVtZW50cyk9XCJzZWFyY2hFbGVtZW50cy5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgKHNlYXJjaEVsZW1lbnRzQnlTY3JlZW5OYW1lKT1cInNlYXJjaEVsZW1lbnRzQnlTY3JlZW5OYW1lLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY3JlYXRlRWxlbWVudCk9XCJjcmVhdGVFbGVtZW50LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc2VhcmNoU2NyZWVuTmFtZSk9XCJzZWFyY2hTY3JlZW5OYW1lLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAobG9hZE1vcmVTY3JlZW5OYW1lcyk9XCJsb2FkTW9yZVNjcmVlbk5hbWVzLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY3JlYXRlU2NyZWVuTmFtZVJlcXVlc3QpPVwiY3JlYXRlU2NyZWVuTmFtZVJlcXVlc3QuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChzZWFyY2hQYXJhbWV0ZXJzKT1cInNlYXJjaFBhcmFtZXRlcnMuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChsb2FkTW9yZVBhcmFtZXRlcnMpPVwibG9hZE1vcmVQYXJhbWV0ZXJzLmVtaXQoKVwiXG4gICAgICAgICAgICAoc2VhcmNoRW52aXJvbm1lbnRzKT1cInNlYXJjaEVudmlyb25tZW50cy5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgKGxvYWRNb3JlRW52aXJvbm1lbnRzKT1cImxvYWRNb3JlRW52aXJvbm1lbnRzLmVtaXQoKVwiXG4gICAgICAgICAgICAoc2VhcmNoR2xvYmFsVmFyaWFibGVzKT1cInNlYXJjaEdsb2JhbFZhcmlhYmxlcy5lbWl0KCRldmVudClcIj5cbiAgICAgICAgICA8L2NxYS10ZW1wbGF0ZS12YXJpYWJsZXMtZm9ybT5cblxuICAgICAgICAgIDwhLS0gQWR2YW5jZWQgU2V0dGluZ3MgVmFyaWFibGVzIEZvcm0gLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFkdmFuY2VkVmFyaWFibGVzKCkubGVuZ3RoID4gMFwiIGNsYXNzPVwiY3FhLW10LTRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLXctZnVsbFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLXctZnVsbCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWdhcC0yIGNxYS10ZXh0LXNtIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1ncmF5LTcwMCBjcWEtYmctdHJhbnNwYXJlbnQgY3FhLWJvcmRlci1ub25lIGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtcC0wIGNxYS1tYi0xLjVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBZHZhbmNlZCgpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTBweF1cIj5BZHZhbmNlZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjcWEtdGV4dC1iYXNlXCIgW2NsYXNzLmNxYS1yb3RhdGUtMTgwXT1cImlzQWR2YW5jZWRFeHBhbmRlZFwiPlxuICAgICAgICAgICAgICAgICAgZXhwYW5kX21vcmVcbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzQWR2YW5jZWRFeHBhbmRlZFwiIGNsYXNzPVwiY3FhLW10LTJcIj5cbiAgICAgICAgICAgICAgICA8Y3FhLWFkdmFuY2VkLXZhcmlhYmxlcy1mb3JtXG4gICAgICAgICAgICAgICAgICBbYWR2YW5jZWRWYXJpYWJsZXNdPVwiZ2V0QWR2YW5jZWRWYXJpYWJsZXMoKVwiXG4gICAgICAgICAgICAgICAgICBbYWR2YW5jZWRWYXJpYWJsZUZvcm1dPVwiZ2V0QWR2YW5jZWRWYXJpYWJsZXNGb3JtKClcIlxuICAgICAgICAgICAgICAgICAgKHZhcmlhYmxlQm9vbGVhbkNoYW5nZSk9XCJvbkFkdmFuY2VkVmFyaWFibGVCb29sZWFuQ2hhbmdlKCRldmVudC5uYW1lLCAkZXZlbnQudmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICh2YXJpYWJsZVZhbHVlQ2hhbmdlKT1cIm9uQWR2YW5jZWRWYXJpYWJsZVZhbHVlQ2hhbmdlKCRldmVudC5uYW1lLCAkZXZlbnQudmFsdWUpXCI+XG4gICAgICAgICAgICAgICAgPC9jcWEtYWR2YW5jZWQtdmFyaWFibGVzLWZvcm0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQWN0aW9uIEJ1dHRvbnMgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtdy1mdWxsIGNxYS1nYXAtMiBjcWEtbXQtYXV0byBjcWEtcHQtNCBjcWEtYm9yZGVyLXQgY3FhLWJvcmRlci1ncmF5LTIwMFwiPlxuICAgIDxjcWEtYnV0dG9uIGNsYXNzPVwiY3FhLXctMS8yXCIgdmFyaWFudD1cIm91dGxpbmVkXCIgdGV4dD1cIkNhbmNlbFwiIFtjdXN0b21DbGFzc109XCInY3FhLWZsZXgtMSBjcWEtdy1mdWxsJ1wiXG4gICAgICAoY2xpY2tlZCk9XCJvbkNhbmNlbCgpXCI+XG4gICAgPC9jcWEtYnV0dG9uPlxuICAgIDxjcWEtYnV0dG9uICpuZ0lmPVwiIWlzU2F2aW5nXCIgY2xhc3M9XCJjcWEtdy0xLzJcIiB2YXJpYW50PVwiZmlsbGVkXCIgW3RleHRdPVwic2F2ZUJ1dHRvbkxhYmVsXCJcbiAgICAgIFtjdXN0b21DbGFzc109XCInY3FhLWZsZXgtMSBjcWEtdy1mdWxsJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiIWlzRm9ybVZhbGlkKClcIlxuICAgICAgKGNsaWNrZWQpPVwib25TYXZlKClcIj5cbiAgICA8L2NxYS1idXR0b24+XG4gICAgPGRpdiAqbmdJZj1cImlzU2F2aW5nXCIgY2xhc3M9XCJjcWEtdy0xLzIgY3FhLWZsZXgtMSBjcWEtbWluLWgtWzM4cHhdIGNxYS1yb3VuZGVkLVs4cHhdXCI+XG4gICAgICA8Y3FhLWJhZGdlIGxhYmVsPVwiU2F2aW5n4oCmXCIgaWNvbj1cImF1dG9yZW5ld1wiIFtpc0xvYWRpbmddPVwidHJ1ZVwiIFtmdWxsV2lkdGhdPVwidHJ1ZVwiIFtjZW50ZXJDb250ZW50XT1cInRydWVcIlxuICAgICAgICBbaW5saW5lU3R5bGVzXT1cIidtaW4taGVpZ2h0OiAzOHB4OyBoZWlnaHQ6IDM4cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOydcIlxuICAgICAgICB2YXJpYW50PVwiaW5mb1wiIHNpemU9XCJtZWRpdW1cIj48L2NxYS1iYWRnZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|