@po-ui/ng-components 17.26.0 → 17.26.2
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/esm2022/lib/components/po-field/po-input/po-input-base.component.mjs +3 -1
- package/esm2022/lib/components/po-field/po-login/po-login.component.mjs +19 -6
- package/esm2022/lib/components/po-field/po-lookup/po-lookup-base.component.mjs +20 -2
- package/esm2022/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.mjs +21 -2
- package/esm2022/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.mjs +4 -4
- package/esm2022/lib/components/po-field/po-lookup/po-lookup.component.mjs +3 -2
- package/esm2022/lib/components/po-field/po-lookup/services/po-lookup-modal.service.mjs +3 -2
- package/esm2022/lib/components/po-field/po-password/po-password.component.mjs +13 -3
- package/esm2022/lib/components/po-table/interfaces/po-table-column.interface.mjs +1 -1
- package/esm2022/lib/components/po-table/po-table-base.component.mjs +26 -2
- package/esm2022/lib/components/po-table/po-table.component.mjs +644 -589
- package/fesm2022/po-ui-ng-components.mjs +741 -598
- package/fesm2022/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-field/po-input/po-input-base.component.d.ts +2 -0
- package/lib/components/po-field/po-login/po-login.component.d.ts +5 -1
- package/lib/components/po-field/po-lookup/po-lookup-base.component.d.ts +17 -1
- package/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.d.ts +18 -1
- package/lib/components/po-field/po-lookup/services/po-lookup-modal.service.d.ts +1 -0
- package/lib/components/po-field/po-password/po-password.component.d.ts +5 -2
- package/lib/components/po-table/interfaces/po-table-column.interface.d.ts +1 -0
- package/lib/components/po-table/po-table-base.component.d.ts +18 -1
- package/lib/components/po-table/po-table.component.d.ts +1 -0
- package/package.json +4 -4
- package/po-ui-ng-components-17.26.2.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v15/index.js +1 -1
- package/schematics/ng-update/v16/index.js +1 -1
- package/schematics/ng-update/v17/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-17.26.0.tgz +0 -0
|
@@ -185,6 +185,8 @@ export class PoInputBaseComponent {
|
|
|
185
185
|
*
|
|
186
186
|
* > No componente `po-password` será definido como `new-password`.
|
|
187
187
|
*
|
|
188
|
+
* Nos componentes `po-password` e `po-login` o valor padrão será `true`.
|
|
189
|
+
*
|
|
188
190
|
* @default `false`
|
|
189
191
|
*/
|
|
190
192
|
set noAutocomplete(value) {
|
|
@@ -515,4 +517,4 @@ export class PoInputBaseComponent {
|
|
|
515
517
|
type: Input,
|
|
516
518
|
args: ['p-mask-format-model']
|
|
517
519
|
}] }); })();
|
|
518
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8taW5wdXQtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8taW5wdXQvcG8taW5wdXQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFHdkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBRW5DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRDRztBQUVILE1BQU0sT0FBZ0Isb0JBQW9CO0lBNFVwQjtJQTNVcEI7Ozs7Ozs7Ozs7T0FVRztJQUM0RCxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRTFGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Qkc7SUFDYyxJQUFJLENBQThCO0lBRW5EOzs7Ozs7OztPQVFHO0lBQ2tFLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFFckcsdUJBQXVCO0lBQ0wsS0FBSyxDQUFVO0lBRWpDLCtCQUErQjtJQUNkLElBQUksQ0FBVTtJQUUvQixxQ0FBcUM7SUFDdEIsSUFBSSxDQUFTO0lBRTVCOzs7Ozs7T0FNRztJQUN1QixZQUFZLEdBQVksRUFBRSxDQUFDO0lBRXJEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNrQixRQUFRLENBQVU7SUFFdkM7Ozs7O09BS0c7SUFDNEQsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUUxRjs7Ozs7O09BTUc7SUFDZSxJQUFJLEdBQXNCLElBQUks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a0JBQWtCO2tCQUFuRCxLQUFLO21CQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgbWF4bGVuZ3BvYWlsZWQsIG1pbmxlbmdwb2FpbGVkLCBwYXR0ZXJuRmFpbGVkLCByZXF1aXJlZEZhaWxlZCB9IGZyb20gJy4vLi4vdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBQb01hc2sgfSBmcm9tICcuL3BvLW1hc2snO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIEVzdGUgw6kgdW0gY29tcG9uZW50ZSBiYXNlYWRvIGVtIGlucHV0LCBjb20gdsOhcmlhcyBwcm9wcmllZGFkZXMgZG8gaW5wdXQgbmF0aXZvIGUgb3V0cmFzXG4gKiBwcm9wcmllZGFkZXMgZXh0cmFzIGNvbW86IG3DoXNjYXJhLCBwYXR0ZXJuLCBtZW5zYWdlbSBkZSBlcnJvIGUgZXRjLlxuICogVm9jw6ogZGV2ZSBpbmZvcm1hciBhIHZhcmnDoXZlbCBxdWUgY29udMOpbSBvIHZhbG9yIGNvbW8gWyhuZ01vZGVsKV09XCJ2YXJpYXZlbFwiLCBwYXJhIHF1ZSBvXG4gKiBpbnB1dCByZWNlYmEgbyB2YWxvciBkYSB2YXJpw6F2ZWwgZSBwYXJhIHF1ZSBlbGEgcmVjZWJhIGFzIGFsdGVyYcOnw7VlcyBkbyB2YWxvciAodHdvLXdheS1kYXRhYmluZGluZykuXG4gKiBBIHByb3ByaWVkYWRlIG5hbWUgw6kgb2JyaWdhdMOzcmlhIHBhcmEgcXVlIG8gZm9ybXVsw6FyaW8gZSBvIG1vZGVsIGZ1bmNpb25lbSBjb3JyZXRhbWVudGUuXG4gKlxuICogSW1wb3J0YW50ZTpcbiAqXG4gKiAtIENhc28gbyBpbnB1dCB0ZW5oYSB1bSBbKG5nTW9kZWwpXSBzZW0gbyBhdHJpYnV0byBuYW1lLCBvY29ycmVyw6EgdW0gZXJybyBkZSBhbmd1bGFyLlxuICogRW50w6NvIHZvY8OqIHByZWNpc2EgaW5mb3JtYXIgbyBhdHJpYnV0byBuYW1lIG91IG8gYXRyaWJ1dG8gW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiLlxuICogRXhlbXBsbzogWyhuZ01vZGVsKV09XCJwZXNzb2Eubm9tZVwiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIi5cbiAqXG4gKiAjIyMjIFRva2VucyBjdXN0b21pesOhdmVpc1xuICpcbiAqIMOJIHBvc3PDrXZlbCBhbHRlcmFyIG8gZXN0aWxvIGRvIGNvbXBvbmVudGUgdXNhbmRvIG9zIHNlZ3VpbnRlcyB0b2tlbnMgKENTUyk6IDxicj5cbiAqIE9iczogU8OzIMOpIHBvc3PDrXZlbCByZWFsaXphciBhbHRlcmHDp8O1ZXMgYW8gYWRpY2lvbmFyIGEgY2xhc3NlIGAucG8taW5wdXRgXG4gKlxuICogPiBQYXJhIG1haW9yZXMgaW5mb3JtYcOnw7VlcywgYWNlc3NlIG8gZ3VpYSBbUGVyc29uYWxpemFuZG8gbyBUZW1hIFBhZHLDo28gY29tIFRva2VucyBDU1NdKGh0dHBzOi8vcG8tdWkuaW8vZ3VpZGVzL3RoZW1lLWN1c3RvbWl6YXRpb24pLlxuICpcbiAqIHwgUHJvcHJpZWRhZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmnDp8OjbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmFsb3IgUGFkcsOjbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgKipEZWZhdWx0IFZhbHVlcyoqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tZm9udC1mYW1pbHlgICAgICAgICAgICAgICAgICAgICAgICAgfCBGYW3DrWxpYSB0aXBvZ3LDoWZpY2EgdXNhZGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWZvbnQtZmFtaWx5LXRoZW1lKWAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1mb250LXNpemVgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRhbWFuaG8gZGEgZm9udGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWZvbnQtc2l6ZS1kZWZhdWx0KWAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS10ZXh0LWNvbG9yLXBsYWNlaG9sZGVyYCAgICAgICAgICAgICB8IENvciBkbyB0ZXh0byBwbGFjZWhvbGRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtbGlnaHQtMzApYCAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvcmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvciBwaW5jaXBhbCBkbyBpbnB1dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtZGFyay03MClgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1iYWNrZ3JvdW5kYCAgICAgICAgICAgICAgICAgICAgICAgICB8IENvciBkZSBiYWNrZ3JvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtbGlnaHQtMDUpYCAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1wYWRkaW5nYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByZWVuY2hpbWVudG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGAwIDAuNXJlbWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS10ZXh0LWNvbG9yYCAgICAgICAgICAgICAgICAgICAgICAgICB8IENvciBkbyB0ZXh0byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtZGFyay05MClgICAgICAgICAgICAgICAgICAgfFxuICogfCAqKkhvdmVyKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvci1ob3ZlcmAgICAgICAgICAgICAgICAgICAgICAgICB8IENvciBwcmluY2lwYWwgbm8gZXN0YWRvIGhvdmVyICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWJyYW5kLTAxLWRhcmspYCAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1iYWNrZ3JvdW5kLWhvdmVyYCAgICAgICAgICAgICAgICAgICB8IENvciBkZSBiYWNrZ3JvdW5kIG5vIGVzdGFkbyBob3ZlciAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWJyYW5kLTAxLWxpZ2h0ZXN0KWAgICAgICAgICAgICAgICAgfFxuICogfCAqKkZvY3VzZWQqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvci1mb2N1c2VkYCAgICAgICAgICAgICAgICAgICAgICB8IENvciBwcmluY2lwYWwgbm8gZXN0YWRvIGRlIGZvY3VzICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWFjdGlvbi1kZWZhdWx0KWAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1vdXRsaW5lLWNvbG9yLWZvY3VzZWRgICAgICAgICAgICAgICB8IENvciBkbyBvdXRsaW5lIGRvIGVzdGFkbyBkZSBmb2N1cyAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWFjdGlvbi1mb2N1cylgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAqKkRpc2FibGVkKiogICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvci1kaXNhYmxlZGAgICAgICAgICAgICAgICAgICAgICB8IENvciBwcmluY2lwYWwgbm8gZXN0YWRvIGRpc2FibGVkICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtbGlnaHQtMzApYCAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1iYWNrZ3JvdW5kLWRpc2FibGVkYCAgICAgICAgICAgICAgICB8IENvciBkZSBiYWNrZ3JvdW5kIG5vIGVzdGFkbyBkaXNhYmxlZCAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtbGlnaHQtMjApYCAgICAgICAgICAgICAgICAgfFxuICogfCBgLS10ZXh0LWNvbG9yLWRpc2FibGVkYCAgICAgICAgICAgICAgICB8IENvciBkbyB0ZXh0byBubyBlc3RhZG8gZGlzYWJsZWQgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtZGFyay03MClgICAgICAgICAgICAgICAgICAgfFxuICpcbiAqIDxicj5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9JbnB1dEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXBsaWNhIGZvY28gbm8gZWxlbWVudG8gYW8gc2VyIGluaWNpYWRvLlxuICAgKlxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWF1dG8tZm9jdXMnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgYXV0b0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIG8gw61jb25lIHF1ZSBzZXLDoSBleGliaWRvIG5vIGluw61jaW8gZG8gY2FtcG8uXG4gICAqXG4gICAqIMOJIHBvc3PDrXZlbCB1c2FyIHF1YWxxdWVyIHVtIGRvcyDDrWNvbmVzIGRhIFtCaWJsaW90ZWNhIGRlIMOtY29uZXNdKC9ndWlkZXMvaWNvbnMpLiBjb25mb3JtZSBleGVtcGxvIGFiYWl4bzpcbiAgICogYGBgXG4gICAqIDxwby1pbnB1dCBwLWljb249XCJwby1pY29uLXVzZXJcIiBwLWxhYmVsPVwiUE8gaW5wdXRcIj48L3BvLWlucHV0PlxuICAgKiBgYGBcbiAgICogVGFtYsOpbSDDqSBwb3Nzw612ZWwgdXRpbGl6YXIgb3V0cmFzIGZvbnRlcyBkZSDDrWNvbmVzLCBwb3IgZXhlbXBsbyBhIGJpYmxpb3RlY2EgKkZvbnQgQXdlc29tZSosIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKiBgYGBcbiAgICogPHBvLWlucHV0IHAtaWNvbj1cImZhIGZhLXBvZGNhc3RcIiBwLWxhYmVsPVwiUE8gaW5wdXRcIj48L3BvLWlucHV0PlxuICAgKiBgYGBcbiAgICogT3V0cmEgb3DDp8OjbyBzZXJpYSBhIGN1c3RvbWl6YcOnw6NvIGRvIMOtY29uZSBhdHJhdsOpcyBkbyBgVGVtcGxhdGVSZWZgLCBjb25mb3JtZSBleGVtcGxvIGFiYWl4bzpcbiAgICogYGBgXG4gICAqIDxwby1pbnB1dCBbcC1pY29uXT1cInRlbXBsYXRlXCIgcC1sYWJlbD1cImlucHV0IHRlbXBsYXRlIGlvbmljXCI+PC9wby1pbnB1dD5cbiAgICpcbiAgICogPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgICogIDxpb24taWNvbiBzdHlsZT1cImZvbnQtc2l6ZTogaW5oZXJpdFwiIG5hbWU9XCJoZWFydFwiPjwvaW9uLWljb24+XG4gICAqIDwvbmctdGVtcGxhdGU+XG4gICAqIGBgYFxuICAgKiA+IFBhcmEgbyDDrWNvbmUgZW5xdWFkcmFyIGNvcnJldGFtZW50ZSwgZGV2ZS1zZSB1dGlsaXphciBgZm9udC1zaXplOiBpbmhlcml0YCBjYXNvIG8gw61jb25lIHV0aWxpemFkbyBuw6NvIGFwbGlxdWUtby5cbiAgICovXG4gIEBJbnB1dCgncC1pY29uJykgaWNvbj86IHN0cmluZyB8IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFNlbXByZSBlbWl0ZSBhcyBhbHRlcmHDp8O1ZXMgZG8gbW9kZWwgbWVzbW8gcXVhbmRvIG8gdmFsb3IgYXR1YWwgZm9yIGlndWFsIGFvIHZhbG9yIGFudGVyaW9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtZW1pdC1hbGwtY2hhbmdlcycsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBlbWl0QWxsQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBSw7N0dWxvIGRvIGNhbXBvLiAqL1xuICBASW5wdXQoJ3AtbGFiZWwnKSBsYWJlbD86IHN0cmluZztcblxuICAvKiogVGV4dG8gZGUgYXBvaW8gZG8gY2FtcG8uICovXG4gIEBJbnB1dCgncC1oZWxwJykgaGVscD86IHN0cmluZztcblxuICAvKiogTm9tZSBlIGlkZW50aWZpY2Fkb3IgZG8gY2FtcG8uICovXG4gIEBJbnB1dCgnbmFtZScpIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE1lbnNhZ2VtIHF1ZSBzZXLDoSBhcHJlc2VudGFkYSBxdWFuZG8gbyBgcGF0dGVybmAgb3UgYSBtw6FzY2FyYSBuw6NvIGZvciBzYXRpc2ZlaXRhLlxuICAgKlxuICAgKiA+IEVzdGEgbWVuc2FnZW0gbsOjbyDDqSBhcHJlc2VudGFkYSBxdWFuZG8gbyBjYW1wbyBlc3RpdmVyIHZhemlvLCBtZXNtbyBxdWUgZWxlIHNlamEgcmVxdWVyaWRvLlxuICAgKi9cbiAgQElucHV0KCdwLWVycm9yLXBhdHRlcm4nKSBlcnJvclBhdHRlcm4/OiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgc2UgYSBpbmRpY2HDp8OjbyBkZSBjYW1wbyBvcGNpb25hbCBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE8gY2FtcG8gY29udGVyIGBwLXJlcXVpcmVkYDtcbiAgICogLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25hbCcpIG9wdGlvbmFsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQ29udmVydGUgbyBjb250ZcO6ZG8gZG8gY2FtcG8gZW0gbWFpw7pzdWxvIGF1dG9tYXRpY2FtZW50ZS5cbiAgICpcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC11cHBlci1jYXNlJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIHVwcGVyQ2FzZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gc2FpciBkbyBjYW1wby5cbiAgICovXG4gIEBPdXRwdXQoJ3AtYmx1cicpIGJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gZW50cmFyIGRvIGNhbXBvLlxuICAgKi9cbiAgQE91dHB1dCgncC1lbnRlcicpIGVudGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIGFsdGVyYXIgdmFsb3IgZSBkZWl4YXIgbyBjYW1wby5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlJykgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIGFsdGVyYXIgdmFsb3IgZG8gbW9kZWwuXG4gICAqL1xuICBAT3V0cHV0KCdwLWNoYW5nZS1tb2RlbCcpIGNoYW5nZU1vZGVsOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICB0eXBlOiBzdHJpbmc7XG5cbiAgb25DaGFuZ2VQcm9wYWdhdGU6IGFueSA9IG51bGw7XG4gIG9iak1hc2s6IGFueTtcbiAgbW9kZWxMYXN0VXBkYXRlOiBhbnk7XG4gIHByb3RlY3RlZCBvblRvdWNoZWQ6IGFueSA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIHBhc3NlZFdyaXRlVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHZhbGlkYXRvckNoYW5nZTogYW55O1xuXG4gIHByaXZhdGUgX21heGxlbmd0aD86IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWlubGVuZ3RoPzogbnVtYmVyO1xuICBwcml2YXRlIF9ub0F1dG9jb21wbGV0ZT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI/OiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgYSBwcm9wcmllZGFkZSBuYXRpdmEgYGF1dG9jb21wbGV0ZWAgZG8gY2FtcG8gY29tbyBgb2ZmYC5cbiAgICpcbiAgICogPiBObyBjb21wb25lbnRlIGBwby1wYXNzd29yZGAgc2Vyw6EgZGVmaW5pZG8gY29tbyBgbmV3LXBhc3N3b3JkYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW5vLWF1dG9jb21wbGV0ZScpIHNldCBub0F1dG9jb21wbGV0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX25vQXV0b2NvbXBsZXRlID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgbm9BdXRvY29tcGxldGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25vQXV0b2NvbXBsZXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTWVuc2FnZW0gcXVlIGFwYXJlY2Vyw6EgZW5xdWFudG8gbyBjYW1wbyBuw6NvIGVzdGl2ZXIgcHJlZW5jaGlkby5cbiAgICpcbiAgICogQGRlZmF1bHQgJydcbiAgICovXG4gIEBJbnB1dCgncC1wbGFjZWhvbGRlcicpIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZSB8fCAnJztcbiAgfVxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBTZSB2ZXJkYWRlaXJvLCBkZXNhYmlsaXRhIG8gY2FtcG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIGRpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ3AtZGlzYWJsZWQnKSBzZXQgc2V0RGlzYWJsZWQoZGlzYWJsZWQ6IHN0cmluZykge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZCA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihkaXNhYmxlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgfVxuXG4gIC8qKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6Egc29tZW50ZSBsZWl0dXJhLiAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICByZWFkb25seT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCdwLXJlYWRvbmx5Jykgc2V0IHNldFJlYWRvbmx5KHJlYWRvbmx5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlYWRvbmx5ID0gcmVhZG9ubHkgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4ocmVhZG9ubHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBvIGNhbXBvIHNlcsOhIG9icmlnYXTDs3Jpby5cbiAgICogPiBFc3RhIHByb3ByaWVkYWRlIMOpIGRlc2NvbnNpZGVyYWRhIHF1YW5kbyBvIGlucHV0IGVzdMOhIGRlc2FiaWxpdGFkbyBgKHAtZGlzYWJsZWQpYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgcmVxdWlyZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgncC1yZXF1aXJlZCcpIHNldCBzZXRSZXF1aXJlZChyZXF1aXJlZDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXF1aXJlZCA9IHJlcXVpcmVkID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKHJlcXVpcmVkKTtcblxuICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9icmlnYXTDs3JpbyBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICovXG4gIEBJbnB1dCgncC1zaG93LXJlcXVpcmVkJykgc2hvd1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFNlIHZlcmRhZGVpcm8sIG8gY2FtcG8gcmVjZWJlcsOhIHVtIGJvdMOjbyBwYXJhIHNlciBsaW1wby4gKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgY2xlYW4/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgncC1jbGVhbicpIHNldCBzZXRDbGVhbihjbGVhbjogc3RyaW5nKSB7XG4gICAgdGhpcy5jbGVhbiA9IGNsZWFuID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKGNsZWFuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXhwcmVzc8OjbyByZWd1bGFyIHBhcmEgdmFsaWRhciBvIGNhbXBvLlxuICAgKiBRdWFuZG8gbyBjYW1wbyBwb3NzdWlyIHVtYSBtw6FzY2FyYSBgKHAtbWFzaylgIHNlcsOhIGF1dG9tYXRpY2FtZW50ZSB2YWxpZGFkbyBwb3IgZWxhLCBwb3LDqW1cbiAgICogw6kgcG9zc8OtdmVsIGRlZmluaXIgdW0gcC1wYXR0ZXJuIHBhcmEgc3Vic3RpdHVpciBhIHZhbGlkYcOnw6NvIGRhIG3DoXNjYXJhLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgcGF0dGVybj86IHN0cmluZztcbiAgQElucHV0KCdwLXBhdHRlcm4nKSBzZXQgc2V0UGF0dGVybihwYXR0ZXJuOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKCk7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgYSBxdWFudGlkYWRlIG3DoXhpbWEgZGUgY2FyYWN0ZXJlcyBxdWUgbyBjYW1wbyBhY2VpdGEuXG4gICAqL1xuICBASW5wdXQoJ3AtbWF4bGVuZ3RoJykgc2V0IG1heGxlbmd0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKCFpc05hTihwYXJzZUludCg8YW55PnZhbHVlLCAxMCkpKSB7XG4gICAgICB0aGlzLl9tYXhsZW5ndGggPSBwYXJzZUludCg8YW55PnZhbHVlLCAxMCk7XG5cbiAgICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuICAgIH0gZWxzZSBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLl9tYXhsZW5ndGggPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBtYXhsZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21heGxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBhIHF1YW50aWRhZGUgbcOtbmltYSBkZSBjYXJhY3RlcmVzIHF1ZSBvIGNhbXBvIGFjZWl0YS5cbiAgICovXG4gIEBJbnB1dCgncC1taW5sZW5ndGgnKSBzZXQgbWlubGVuZ3RoKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAoIWlzTmFOKHBhcnNlSW50KDxhbnk+dmFsdWUsIDEwKSkpIHtcbiAgICAgIHRoaXMuX21pbmxlbmd0aCA9IHBhcnNlSW50KDxhbnk+dmFsdWUsIDEwKTtcblxuICAgICAgdGhpcy52YWxpZGF0ZU1vZGVsKCk7XG4gICAgfSBlbHNlIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMuX21pbmxlbmd0aCA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy52YWxpZGF0ZU1vZGVsKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG1pbmxlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWlubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgdW1hIG3DoXNjYXJhIHBhcmEgbyBjYW1wby4gRXhlbXBsb3M6ICgrOTkpICg5OSkgOTk5OTk/LTk5OTksIDk5OTk5LTk5OSwgOTk5Ljk5OS45OTktOTkuXG4gICAqIEEgbcOhc2NhcmEgZ2VyYSB1bWEgdmFsaWRhw6fDo28gYXV0b23DoXRpY2EgZG8gY2FtcG8sIHBvZGVuZG8gZXN0YSBzZXIgc3Vic3RpdHXDrWRhIHBvciB1bSBSRUdFWCBlc3BlY8OtZmljb1xuICAgKiBhdHJhdsOpcyBkYSBwcm9wcmllZGFkZSBwLXBhdHRlcm4uXG4gICAqIE8gY2FtcG8gc2Vyw6Egc2luYWxpemFkbyBlIG8gZm9ybXVsw6FyaW8gZmljYXLDoSBpbnbDoWxpZG8gcXVhbmRvIG8gdmFsb3IgaW5mb3JtYWRvIGVzdGl2ZXIgZm9yYSBkbyBwYWRyw6NvIGRlZmluaWRvLFxuICAgKiBtZXNtbyBxdWFuZG8gZGVzYWJpbGl0YWRvLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgbWFzaz86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoJ3AtbWFzaycpIHNldCBzZXRNYXNrKG1hc2s6IHN0cmluZykge1xuICAgIHRoaXMubWFzayA9IG1hc2s7XG5cbiAgICAvLyBBdHVhbGl6YSBNw6FzY2FyYSBkbyBDYW1wb1xuICAgIHRoaXMub2JqTWFzayA9IG5ldyBQb01hc2sodGhpcy5tYXNrLCB0aGlzLm1hc2tGb3JtYXRNb2RlbCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBzZSBvIGBtb2RlbGAgcmVjZWJlcsOhIG8gdmFsb3IgZm9ybWF0YWRvIHBlbGEgbcOhc2NhcmEgb3UgYXBlbmFzIG8gdmFsb3IgcHVybyAoc2VtIGZvcm1hdGHDp8OjbykuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIG1hc2tGb3JtYXRNb2RlbD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCdwLW1hc2stZm9ybWF0LW1vZGVsJykgc2V0IHNldE1hc2tGb3JtYXRNb2RlbChtYXNrRm9ybWF0TW9kZWw6IHN0cmluZykge1xuICAgIHRoaXMubWFza0Zvcm1hdE1vZGVsID0gbWFza0Zvcm1hdE1vZGVsID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKG1hc2tGb3JtYXRNb2RlbCk7XG5cbiAgICBpZiAodGhpcy5vYmpNYXNrIGluc3RhbmNlb2YgUG9NYXNrKSB7XG4gICAgICB0aGlzLm9iak1hc2suZm9ybWF0TW9kZWwgPSB0aGlzLm1hc2tGb3JtYXRNb2RlbDtcblxuICAgICAgdGhpcy52YWxpZGF0ZU1vZGVsKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZD86IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5vYmpNYXNrID0gbmV3IFBvTWFzayh0aGlzLm1hc2ssIHRoaXMubWFza0Zvcm1hdE1vZGVsKTtcbiAgfVxuXG4gIGNhbGxPbkNoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy51cGRhdGVNb2RlbCh2YWx1ZSk7XG5cbiAgICB0aGlzLmNvbnRyb2xDaGFuZ2VNb2RlbEVtaXR0ZXIodmFsdWUpO1xuICB9XG5cbiAgY2FsbFVwZGF0ZU1vZGVsV2l0aFRpbWVvdXQodmFsdWUpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlTW9kZWwodmFsdWUpKTtcbiAgfVxuXG4gIGNvbnRyb2xDaGFuZ2VNb2RlbEVtaXR0ZXIodmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLm1vZGVsTGFzdFVwZGF0ZSAhPT0gdmFsdWUgfHwgdGhpcy5lbWl0QWxsQ2hhbmdlcykge1xuICAgICAgdGhpcy5jaGFuZ2VNb2RlbC5lbWl0KHZhbHVlKTtcbiAgICAgIHRoaXMubW9kZWxMYXN0VXBkYXRlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgb3MgZXN0YWRvcyBkZSBoYWJpbGl0YWRvIHZpYSBmb3JtcyBhcGlcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZD8ubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBhcyBtdWRhbsOnYXMgZSBuw6NvIGF0dWFsaXphciBhdXRvbWF0aWNhbWVudGUgbyBNb2RlbFxuICByZWdpc3Rlck9uQ2hhbmdlKGZ1bmM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VQcm9wYWdhdGUgPSBmdW5jO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWxcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZnVuYzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmdW5jO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICB1cGRhdGVNb2RlbCh2YWx1ZTogYW55KSB7XG4gICAgLy8gUXVhbmRvIG8gaW5wdXQgbsOjbyBwb3NzdWkgdW0gZm9ybXVsw6FyaW8sIGVudMOjbyBlc3RhIGZ1bsOnw6NvIG7Do28gw6kgcmVnaXN0cmFkYVxuICAgIGlmICh0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBpZiAocmVxdWlyZWRGYWlsZWQodGhpcy5yZXF1aXJlZCwgdGhpcy5kaXNhYmxlZCwgdGhpcy5nZXRTY3JlZW5WYWx1ZSgpKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVxdWlyZWQ6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAobWF4bGVuZ3BvYWlsZWQodGhpcy5tYXhsZW5ndGgsIHRoaXMuZ2V0U2NyZWVuVmFsdWUoKSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1heGxlbmd0aDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChtaW5sZW5ncG9haWxlZCh0aGlzLm1pbmxlbmd0aCwgdGhpcy5nZXRTY3JlZW5WYWx1ZSgpKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWlubGVuZ3RoOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHBhdHRlcm5GYWlsZWQodGhpcy5wYXR0ZXJuLCBjLnZhbHVlKSkge1xuICAgICAgdGhpcy52YWxpZGF0ZVBhdHRlcm5PbldyaXRlVmFsdWUoYy52YWx1ZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXR0ZXJuOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXh0cmFWYWxpZGF0aW9uKGMpO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMud3JpdGVWYWx1ZU1vZGVsKHZhbHVlKTtcbiAgICB0aGlzLmNkPy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU1vZGVsKCkge1xuICAgIGlmICh0aGlzLnZhbGlkYXRvckNoYW5nZSkge1xuICAgICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICAvLyB1dGlsaXphZG8gcGFyYSB2YWxpZGFyIG8gcGF0dGVybiBuYSBpbmljaWFsaXphY2FvLCBmYXplbmRvIGRlc3NhIGZvcm1hIG8gY2FtcG8gZmljYSBzdWpvIChkaXJ0eSkuXG4gIHByaXZhdGUgdmFsaWRhdGVQYXR0ZXJuT25Xcml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgJiYgdGhpcy5wYXNzZWRXcml0ZVZhbHVlKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVNb2RlbCh2YWx1ZSk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5wYXNzZWRXcml0ZVZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZ1bsOnw6NvIHF1ZSBhdHJpYnVpIGZvY28gYW8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogUGFyYSB1dGlsaXrDoS1sYSDDqSBuZWNlc3PDoXJpbyB0ZXIgYSBpbnN0w6JuY2lhIGRvIGNvbXBvbmVudGUgbm8gRE9NLCBwb2RlbmRvIHNlciB1dGlsaXphZG8gbyBWaWV3Q2hpbGQgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiBpbXBvcnQgeyBQb05vbWVEb0NvbXBvbmVudGVDb21wb25lbnQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG4gICAqXG4gICAqIC4uLlxuICAgKlxuICAgKiBAVmlld0NoaWxkKFBvTm9tZURvQ29tcG9uZW50ZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgbm9tZURvQ29tcG9uZW50ZTogUG9Ob21lRG9Db21wb25lbnRlQ29tcG9uZW50O1xuICAgKlxuICAgKiBmb2N1c0NvbXBvbmVudCgpIHtcbiAgICogICB0aGlzLm5vbWVEb0NvbXBvbmVudGUuZm9jdXMoKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGFic3RyYWN0IGZvY3VzKCk6IHZvaWQ7XG5cbiAgLy8gTcOpdG9kbyBxdWUgcmVjZWJlcsOhIG8gdmFsb3IgZG8gbW9kZWxcbiAgYWJzdHJhY3Qgd3JpdGVWYWx1ZU1vZGVsKHZhbHVlOiBhbnkpOiB2b2lkO1xuXG4gIC8vIFZhbGlkYcOnw7VlcyBkbyBjYW1wb1xuICBhYnN0cmFjdCBleHRyYVZhbGlkYXRpb24oYzogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcblxuICAvLyBEZXZlIHJldG9ybmFyIG8gdmFsb3IgZG8gY2FtcG9cbiAgYWJzdHJhY3QgZ2V0U2NyZWVuVmFsdWUoKTogc3RyaW5nO1xufVxuIl19
|
|
520
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8taW5wdXQtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8taW5wdXQvcG8taW5wdXQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFHdkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBRW5DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRDRztBQUVILE1BQU0sT0FBZ0Isb0JBQW9CO0lBOFVwQjtJQTdVcEI7Ozs7Ozs7Ozs7T0FVRztJQUM0RCxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRTFGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Qkc7SUFDYyxJQUFJLENBQThCO0lBRW5EOzs7Ozs7OztPQVFHO0lBQ2tFLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFFckcsdUJBQXVCO0lBQ0wsS0FBSyxDQUFVO0lBRWpDLCtCQUErQjtJQUNkLElBQUksQ0FBVTtJQUUvQixxQ0FBcUM7SUFDdEIsSUFBSSxDQUFTO0lBRTVCOzs7Ozs7T0FNRztJQUN1QixZQUFZLEdBQVksRUFBRSxDQUFDO0lBRXJEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNrQixRQUFRLENBQVU7SUFFdkM7Ozs7O09BS0c7SUFDNEQsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUUxRjs7Ozs7O09BTUc7SUFDZSxJQUFJLEdBQXNCLElBQUks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QixrQkFBa0I7a0JBQW5ELEtBQUs7bUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBtYXhsZW5ncG9haWxlZCwgbWlubGVuZ3BvYWlsZWQsIHBhdHRlcm5GYWlsZWQsIHJlcXVpcmVkRmFpbGVkIH0gZnJvbSAnLi8uLi92YWxpZGF0b3JzJztcbmltcG9ydCB7IFBvTWFzayB9IGZyb20gJy4vcG8tbWFzayc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogRXN0ZSDDqSB1bSBjb21wb25lbnRlIGJhc2VhZG8gZW0gaW5wdXQsIGNvbSB2w6FyaWFzIHByb3ByaWVkYWRlcyBkbyBpbnB1dCBuYXRpdm8gZSBvdXRyYXNcbiAqIHByb3ByaWVkYWRlcyBleHRyYXMgY29tbzogbcOhc2NhcmEsIHBhdHRlcm4sIG1lbnNhZ2VtIGRlIGVycm8gZSBldGMuXG4gKiBWb2PDqiBkZXZlIGluZm9ybWFyIGEgdmFyacOhdmVsIHF1ZSBjb250w6ltIG8gdmFsb3IgY29tbyBbKG5nTW9kZWwpXT1cInZhcmlhdmVsXCIsIHBhcmEgcXVlIG9cbiAqIGlucHV0IHJlY2ViYSBvIHZhbG9yIGRhIHZhcmnDoXZlbCBlIHBhcmEgcXVlIGVsYSByZWNlYmEgYXMgYWx0ZXJhw6fDtWVzIGRvIHZhbG9yICh0d28td2F5LWRhdGFiaW5kaW5nKS5cbiAqIEEgcHJvcHJpZWRhZGUgbmFtZSDDqSBvYnJpZ2F0w7NyaWEgcGFyYSBxdWUgbyBmb3JtdWzDoXJpbyBlIG8gbW9kZWwgZnVuY2lvbmVtIGNvcnJldGFtZW50ZS5cbiAqXG4gKiBJbXBvcnRhbnRlOlxuICpcbiAqIC0gQ2FzbyBvIGlucHV0IHRlbmhhIHVtIFsobmdNb2RlbCldIHNlbSBvIGF0cmlidXRvIG5hbWUsIG9jb3JyZXLDoSB1bSBlcnJvIGRlIGFuZ3VsYXIuXG4gKiBFbnTDo28gdm9jw6ogcHJlY2lzYSBpbmZvcm1hciBvIGF0cmlidXRvIG5hbWUgb3UgbyBhdHJpYnV0byBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIuXG4gKiBFeGVtcGxvOiBbKG5nTW9kZWwpXT1cInBlc3NvYS5ub21lXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiLlxuICpcbiAqICMjIyMgVG9rZW5zIGN1c3RvbWl6w6F2ZWlzXG4gKlxuICogw4kgcG9zc8OtdmVsIGFsdGVyYXIgbyBlc3RpbG8gZG8gY29tcG9uZW50ZSB1c2FuZG8gb3Mgc2VndWludGVzIHRva2VucyAoQ1NTKTogPGJyPlxuICogT2JzOiBTw7Mgw6kgcG9zc8OtdmVsIHJlYWxpemFyIGFsdGVyYcOnw7VlcyBhbyBhZGljaW9uYXIgYSBjbGFzc2UgYC5wby1pbnB1dGBcbiAqXG4gKiA+IFBhcmEgbWFpb3JlcyBpbmZvcm1hw6fDtWVzLCBhY2Vzc2UgbyBndWlhIFtQZXJzb25hbGl6YW5kbyBvIFRlbWEgUGFkcsOjbyBjb20gVG9rZW5zIENTU10oaHR0cHM6Ly9wby11aS5pby9ndWlkZXMvdGhlbWUtY3VzdG9taXphdGlvbikuXG4gKlxuICogfCBQcm9wcmllZGFkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyacOnw6NvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWYWxvciBQYWRyw6NvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAqKkRlZmF1bHQgVmFsdWVzKiogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1mb250LWZhbWlseWAgICAgICAgICAgICAgICAgICAgICAgICB8IEZhbcOtbGlhIHRpcG9ncsOhZmljYSB1c2FkYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tZm9udC1mYW1pbHktdGhlbWUpYCAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWZvbnQtc2l6ZWAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGFtYW5obyBkYSBmb250ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tZm9udC1zaXplLWRlZmF1bHQpYCAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLXRleHQtY29sb3ItcGxhY2Vob2xkZXJgICAgICAgICAgICAgIHwgQ29yIGRvIHRleHRvIHBsYWNlaG9sZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0zMClgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIHBpbmNpcGFsIGRvIGlucHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1kYXJrLTcwKWAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWJhY2tncm91bmRgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIGRlIGJhY2tncm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0wNSlgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLXBhZGRpbmdgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJlZW5jaGltZW50byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgYDAgMC41cmVtYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLXRleHQtY29sb3JgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIGRvIHRleHRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1kYXJrLTkwKWAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqSG92ZXIqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yLWhvdmVyYCAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIHByaW5jaXBhbCBubyBlc3RhZG8gaG92ZXIgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItYnJhbmQtMDEtZGFyaylgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWJhY2tncm91bmQtaG92ZXJgICAgICAgICAgICAgICAgICAgIHwgQ29yIGRlIGJhY2tncm91bmQgbm8gZXN0YWRvIGhvdmVyICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItYnJhbmQtMDEtbGlnaHRlc3QpYCAgICAgICAgICAgICAgICB8XG4gKiB8ICoqRm9jdXNlZCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yLWZvY3VzZWRgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIHByaW5jaXBhbCBubyBlc3RhZG8gZGUgZm9jdXMgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItYWN0aW9uLWRlZmF1bHQpYCAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLW91dGxpbmUtY29sb3ItZm9jdXNlZGAgICAgICAgICAgICAgIHwgQ29yIGRvIG91dGxpbmUgZG8gZXN0YWRvIGRlIGZvY3VzICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItYWN0aW9uLWZvY3VzKWAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqRGlzYWJsZWQqKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yLWRpc2FibGVkYCAgICAgICAgICAgICAgICAgICAgIHwgQ29yIHByaW5jaXBhbCBubyBlc3RhZG8gZGlzYWJsZWQgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0zMClgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWJhY2tncm91bmQtZGlzYWJsZWRgICAgICAgICAgICAgICAgIHwgQ29yIGRlIGJhY2tncm91bmQgbm8gZXN0YWRvIGRpc2FibGVkICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0yMClgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLXRleHQtY29sb3ItZGlzYWJsZWRgICAgICAgICAgICAgICAgIHwgQ29yIGRvIHRleHRvIG5vIGVzdGFkbyBkaXNhYmxlZCAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1kYXJrLTcwKWAgICAgICAgICAgICAgICAgICB8XG4gKlxuICogPGJyPlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb0lucHV0QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBcGxpY2EgZm9jbyBubyBlbGVtZW50byBhbyBzZXIgaW5pY2lhZG8uXG4gICAqXG4gICAqID4gQ2FzbyBtYWlzIGRlIHVtIGVsZW1lbnRvIHNlamEgY29uZmlndXJhZG8gY29tIGVzc2EgcHJvcHJpZWRhZGUsIGFwZW5hcyBvIMO6bHRpbW8gZWxlbWVudG8gZGVjbGFyYWRvIGNvbSBlbGEgdGVyw6EgbyBmb2NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtYXV0by1mb2N1cycsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhdXRvRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgbyDDrWNvbmUgcXVlIHNlcsOhIGV4aWJpZG8gbm8gaW7DrWNpbyBkbyBjYW1wby5cbiAgICpcbiAgICogw4kgcG9zc8OtdmVsIHVzYXIgcXVhbHF1ZXIgdW0gZG9zIMOtY29uZXMgZGEgW0JpYmxpb3RlY2EgZGUgw61jb25lc10oL2d1aWRlcy9pY29ucykuIGNvbmZvcm1lIGV4ZW1wbG8gYWJhaXhvOlxuICAgKiBgYGBcbiAgICogPHBvLWlucHV0IHAtaWNvbj1cInBvLWljb24tdXNlclwiIHAtbGFiZWw9XCJQTyBpbnB1dFwiPjwvcG8taW5wdXQ+XG4gICAqIGBgYFxuICAgKiBUYW1iw6ltIMOpIHBvc3PDrXZlbCB1dGlsaXphciBvdXRyYXMgZm9udGVzIGRlIMOtY29uZXMsIHBvciBleGVtcGxvIGEgYmlibGlvdGVjYSAqRm9udCBBd2Vzb21lKiwgZGEgc2VndWludGUgZm9ybWE6XG4gICAqIGBgYFxuICAgKiA8cG8taW5wdXQgcC1pY29uPVwiZmEgZmEtcG9kY2FzdFwiIHAtbGFiZWw9XCJQTyBpbnB1dFwiPjwvcG8taW5wdXQ+XG4gICAqIGBgYFxuICAgKiBPdXRyYSBvcMOnw6NvIHNlcmlhIGEgY3VzdG9taXphw6fDo28gZG8gw61jb25lIGF0cmF2w6lzIGRvIGBUZW1wbGF0ZVJlZmAsIGNvbmZvcm1lIGV4ZW1wbG8gYWJhaXhvOlxuICAgKiBgYGBcbiAgICogPHBvLWlucHV0IFtwLWljb25dPVwidGVtcGxhdGVcIiBwLWxhYmVsPVwiaW5wdXQgdGVtcGxhdGUgaW9uaWNcIj48L3BvLWlucHV0PlxuICAgKlxuICAgKiA8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICAgKiAgPGlvbi1pY29uIHN0eWxlPVwiZm9udC1zaXplOiBpbmhlcml0XCIgbmFtZT1cImhlYXJ0XCI+PC9pb24taWNvbj5cbiAgICogPC9uZy10ZW1wbGF0ZT5cbiAgICogYGBgXG4gICAqID4gUGFyYSBvIMOtY29uZSBlbnF1YWRyYXIgY29ycmV0YW1lbnRlLCBkZXZlLXNlIHV0aWxpemFyIGBmb250LXNpemU6IGluaGVyaXRgIGNhc28gbyDDrWNvbmUgdXRpbGl6YWRvIG7Do28gYXBsaXF1ZS1vLlxuICAgKi9cbiAgQElucHV0KCdwLWljb24nKSBpY29uPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogU2VtcHJlIGVtaXRlIGFzIGFsdGVyYcOnw7VlcyBkbyBtb2RlbCBtZXNtbyBxdWFuZG8gbyB2YWxvciBhdHVhbCBmb3IgaWd1YWwgYW8gdmFsb3IgYW50ZXJpb3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1lbWl0LWFsbC1jaGFuZ2VzJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGVtaXRBbGxDaGFuZ2VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFLDs3R1bG8gZG8gY2FtcG8uICovXG4gIEBJbnB1dCgncC1sYWJlbCcpIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKiBUZXh0byBkZSBhcG9pbyBkbyBjYW1wby4gKi9cbiAgQElucHV0KCdwLWhlbHAnKSBoZWxwPzogc3RyaW5nO1xuXG4gIC8qKiBOb21lIGUgaWRlbnRpZmljYWRvciBkbyBjYW1wby4gKi9cbiAgQElucHV0KCduYW1lJykgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTWVuc2FnZW0gcXVlIHNlcsOhIGFwcmVzZW50YWRhIHF1YW5kbyBvIGBwYXR0ZXJuYCBvdSBhIG3DoXNjYXJhIG7Do28gZm9yIHNhdGlzZmVpdGEuXG4gICAqXG4gICAqID4gRXN0YSBtZW5zYWdlbSBuw6NvIMOpIGFwcmVzZW50YWRhIHF1YW5kbyBvIGNhbXBvIGVzdGl2ZXIgdmF6aW8sIG1lc21vIHF1ZSBlbGUgc2VqYSByZXF1ZXJpZG8uXG4gICAqL1xuICBASW5wdXQoJ3AtZXJyb3ItcGF0dGVybicpIGVycm9yUGF0dGVybj86IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9wY2lvbmFsIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTyBjYW1wbyBjb250ZXIgYHAtcmVxdWlyZWRgO1xuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbmFsJykgb3B0aW9uYWw6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBDb252ZXJ0ZSBvIGNvbnRlw7pkbyBkbyBjYW1wbyBlbSBtYWnDunN1bG8gYXV0b21hdGljYW1lbnRlLlxuICAgKlxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLXVwcGVyLWNhc2UnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgdXBwZXJDYXNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBzYWlyIGRvIGNhbXBvLlxuICAgKi9cbiAgQE91dHB1dCgncC1ibHVyJykgYmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBlbnRyYXIgZG8gY2FtcG8uXG4gICAqL1xuICBAT3V0cHV0KCdwLWVudGVyJykgZW50ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gYWx0ZXJhciB2YWxvciBlIGRlaXhhciBvIGNhbXBvLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UnKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gYWx0ZXJhciB2YWxvciBkbyBtb2RlbC5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlLW1vZGVsJykgY2hhbmdlTW9kZWw6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHR5cGU6IHN0cmluZztcblxuICBvbkNoYW5nZVByb3BhZ2F0ZTogYW55ID0gbnVsbDtcbiAgb2JqTWFzazogYW55O1xuICBtb2RlbExhc3RVcGRhdGU6IGFueTtcbiAgcHJvdGVjdGVkIG9uVG91Y2hlZDogYW55ID0gbnVsbDtcblxuICBwcm90ZWN0ZWQgcGFzc2VkV3JpdGVWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgdmFsaWRhdG9yQ2hhbmdlOiBhbnk7XG5cbiAgcHJpdmF0ZSBfbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBwcml2YXRlIF9taW5sZW5ndGg/OiBudW1iZXI7XG4gIHByaXZhdGUgX25vQXV0b2NvbXBsZXRlPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9wbGFjZWhvbGRlcj86IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBhIHByb3ByaWVkYWRlIG5hdGl2YSBgYXV0b2NvbXBsZXRlYCBkbyBjYW1wbyBjb21vIGBvZmZgLlxuICAgKlxuICAgKiA+IE5vIGNvbXBvbmVudGUgYHBvLXBhc3N3b3JkYCBzZXLDoSBkZWZpbmlkbyBjb21vIGBuZXctcGFzc3dvcmRgLlxuICAgKlxuICAgKiBOb3MgY29tcG9uZW50ZXMgYHBvLXBhc3N3b3JkYCBlIGBwby1sb2dpbmAgbyB2YWxvciBwYWRyw6NvIHNlcsOhIGB0cnVlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW5vLWF1dG9jb21wbGV0ZScpIHNldCBub0F1dG9jb21wbGV0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX25vQXV0b2NvbXBsZXRlID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgbm9BdXRvY29tcGxldGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25vQXV0b2NvbXBsZXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTWVuc2FnZW0gcXVlIGFwYXJlY2Vyw6EgZW5xdWFudG8gbyBjYW1wbyBuw6NvIGVzdGl2ZXIgcHJlZW5jaGlkby5cbiAgICpcbiAgICogQGRlZmF1bHQgJydcbiAgICovXG4gIEBJbnB1dCgncC1wbGFjZWhvbGRlcicpIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZSB8fCAnJztcbiAgfVxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBTZSB2ZXJkYWRlaXJvLCBkZXNhYmlsaXRhIG8gY2FtcG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIGRpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ3AtZGlzYWJsZWQnKSBzZXQgc2V0RGlzYWJsZWQoZGlzYWJsZWQ6IHN0cmluZykge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZCA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihkaXNhYmxlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgfVxuXG4gIC8qKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6Egc29tZW50ZSBsZWl0dXJhLiAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICByZWFkb25seT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCdwLXJlYWRvbmx5Jykgc2V0IHNldFJlYWRvbmx5KHJlYWRvbmx5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlYWRvbmx5ID0gcmVhZG9ubHkgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4ocmVhZG9ubHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBvIGNhbXBvIHNlcsOhIG9icmlnYXTDs3Jpby5cbiAgICogPiBFc3RhIHByb3ByaWVkYWRlIMOpIGRlc2NvbnNpZGVyYWRhIHF1YW5kbyBvIGlucHV0IGVzdMOhIGRlc2FiaWxpdGFkbyBgKHAtZGlzYWJsZWQpYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgcmVxdWlyZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgncC1yZXF1aXJlZCcpIHNldCBzZXRSZXF1aXJlZChyZXF1aXJlZDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXF1aXJlZCA9IHJlcXVpcmVkID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKHJlcXVpcmVkKTtcblxuICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9icmlnYXTDs3JpbyBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICovXG4gIEBJbnB1dCgncC1zaG93LXJlcXVpcmVkJykgc2hvd1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFNlIHZlcmRhZGVpcm8sIG8gY2FtcG8gcmVjZWJlcsOhIHVtIGJvdMOjbyBwYXJhIHNlciBsaW1wby4gKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgY2xlYW4/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgncC1jbGVhbicpIHNldCBzZXRDbGVhbihjbGVhbjogc3RyaW5nKSB7XG4gICAgdGhpcy5jbGVhbiA9IGNsZWFuID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKGNsZWFuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXhwcmVzc8OjbyByZWd1bGFyIHBhcmEgdmFsaWRhciBvIGNhbXBvLlxuICAgKiBRdWFuZG8gbyBjYW1wbyBwb3NzdWlyIHVtYSBtw6FzY2FyYSBgKHAtbWFzaylgIHNlcsOhIGF1dG9tYXRpY2FtZW50ZSB2YWxpZGFkbyBwb3IgZWxhLCBwb3LDqW1cbiAgICogw6kgcG9zc8OtdmVsIGRlZmluaXIgdW0gcC1wYXR0ZXJuIHBhcmEgc3Vic3RpdHVpciBhIHZhbGlkYcOnw6NvIGRhIG3DoXNjYXJhLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgcGF0dGVybj86IHN0cmluZztcbiAgQElucHV0KCdwLXBhdHRlcm4nKSBzZXQgc2V0UGF0dGVybihwYXR0ZXJuOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKCk7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgYSBxdWFudGlkYWRlIG3DoXhpbWEgZGUgY2FyYWN0ZXJlcyBxdWUgbyBjYW1wbyBhY2VpdGEuXG4gICAqL1xuICBASW5wdXQoJ3AtbWF4bGVuZ3RoJykgc2V0IG1heGxlbmd0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKCFpc05hTihwYXJzZUludCg8YW55PnZhbHVlLCAxMCkpKSB7XG4gICAgICB0aGlzLl9tYXhsZW5ndGggPSBwYXJzZUludCg8YW55PnZhbHVlLCAxMCk7XG5cbiAgICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuICAgIH0gZWxzZSBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLl9tYXhsZW5ndGggPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBtYXhsZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21heGxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBhIHF1YW50aWRhZGUgbcOtbmltYSBkZSBjYXJhY3RlcmVzIHF1ZSBvIGNhbXBvIGFjZWl0YS5cbiAgICovXG4gIEBJbnB1dCgncC1taW5sZW5ndGgnKSBzZXQgbWlubGVuZ3RoKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAoIWlzTmFOKHBhcnNlSW50KDxhbnk+dmFsdWUsIDEwKSkpIHtcbiAgICAgIHRoaXMuX21pbmxlbmd0aCA9IHBhcnNlSW50KDxhbnk+dmFsdWUsIDEwKTtcblxuICAgICAgdGhpcy52YWxpZGF0ZU1vZGVsKCk7XG4gICAgfSBlbHNlIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMuX21pbmxlbmd0aCA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy52YWxpZGF0ZU1vZGVsKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG1pbmxlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWlubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgdW1hIG3DoXNjYXJhIHBhcmEgbyBjYW1wby4gRXhlbXBsb3M6ICgrOTkpICg5OSkgOTk5OTk/LTk5OTksIDk5OTk5LTk5OSwgOTk5Ljk5OS45OTktOTkuXG4gICAqIEEgbcOhc2NhcmEgZ2VyYSB1bWEgdmFsaWRhw6fDo28gYXV0b23DoXRpY2EgZG8gY2FtcG8sIHBvZGVuZG8gZXN0YSBzZXIgc3Vic3RpdHXDrWRhIHBvciB1bSBSRUdFWCBlc3BlY8OtZmljb1xuICAgKiBhdHJhdsOpcyBkYSBwcm9wcmllZGFkZSBwLXBhdHRlcm4uXG4gICAqIE8gY2FtcG8gc2Vyw6Egc2luYWxpemFkbyBlIG8gZm9ybXVsw6FyaW8gZmljYXLDoSBpbnbDoWxpZG8gcXVhbmRvIG8gdmFsb3IgaW5mb3JtYWRvIGVzdGl2ZXIgZm9yYSBkbyBwYWRyw6NvIGRlZmluaWRvLFxuICAgKiBtZXNtbyBxdWFuZG8gZGVzYWJpbGl0YWRvLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgbWFzaz86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoJ3AtbWFzaycpIHNldCBzZXRNYXNrKG1hc2s6IHN0cmluZykge1xuICAgIHRoaXMubWFzayA9IG1hc2s7XG5cbiAgICAvLyBBdHVhbGl6YSBNw6FzY2FyYSBkbyBDYW1wb1xuICAgIHRoaXMub2JqTWFzayA9IG5ldyBQb01hc2sodGhpcy5tYXNrLCB0aGlzLm1hc2tGb3JtYXRNb2RlbCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBzZSBvIGBtb2RlbGAgcmVjZWJlcsOhIG8gdmFsb3IgZm9ybWF0YWRvIHBlbGEgbcOhc2NhcmEgb3UgYXBlbmFzIG8gdmFsb3IgcHVybyAoc2VtIGZvcm1hdGHDp8OjbykuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIG1hc2tGb3JtYXRNb2RlbD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCdwLW1hc2stZm9ybWF0LW1vZGVsJykgc2V0IHNldE1hc2tGb3JtYXRNb2RlbChtYXNrRm9ybWF0TW9kZWw6IHN0cmluZykge1xuICAgIHRoaXMubWFza0Zvcm1hdE1vZGVsID0gbWFza0Zvcm1hdE1vZGVsID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKG1hc2tGb3JtYXRNb2RlbCk7XG5cbiAgICBpZiAodGhpcy5vYmpNYXNrIGluc3RhbmNlb2YgUG9NYXNrKSB7XG4gICAgICB0aGlzLm9iak1hc2suZm9ybWF0TW9kZWwgPSB0aGlzLm1hc2tGb3JtYXRNb2RlbDtcblxuICAgICAgdGhpcy52YWxpZGF0ZU1vZGVsKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZD86IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5vYmpNYXNrID0gbmV3IFBvTWFzayh0aGlzLm1hc2ssIHRoaXMubWFza0Zvcm1hdE1vZGVsKTtcbiAgfVxuXG4gIGNhbGxPbkNoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy51cGRhdGVNb2RlbCh2YWx1ZSk7XG5cbiAgICB0aGlzLmNvbnRyb2xDaGFuZ2VNb2RlbEVtaXR0ZXIodmFsdWUpO1xuICB9XG5cbiAgY2FsbFVwZGF0ZU1vZGVsV2l0aFRpbWVvdXQodmFsdWUpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlTW9kZWwodmFsdWUpKTtcbiAgfVxuXG4gIGNvbnRyb2xDaGFuZ2VNb2RlbEVtaXR0ZXIodmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLm1vZGVsTGFzdFVwZGF0ZSAhPT0gdmFsdWUgfHwgdGhpcy5lbWl0QWxsQ2hhbmdlcykge1xuICAgICAgdGhpcy5jaGFuZ2VNb2RlbC5lbWl0KHZhbHVlKTtcbiAgICAgIHRoaXMubW9kZWxMYXN0VXBkYXRlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgb3MgZXN0YWRvcyBkZSBoYWJpbGl0YWRvIHZpYSBmb3JtcyBhcGlcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZD8ubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBhcyBtdWRhbsOnYXMgZSBuw6NvIGF0dWFsaXphciBhdXRvbWF0aWNhbWVudGUgbyBNb2RlbFxuICByZWdpc3Rlck9uQ2hhbmdlKGZ1bmM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VQcm9wYWdhdGUgPSBmdW5jO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWxcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZnVuYzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmdW5jO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICB1cGRhdGVNb2RlbCh2YWx1ZTogYW55KSB7XG4gICAgLy8gUXVhbmRvIG8gaW5wdXQgbsOjbyBwb3NzdWkgdW0gZm9ybXVsw6FyaW8sIGVudMOjbyBlc3RhIGZ1bsOnw6NvIG7Do28gw6kgcmVnaXN0cmFkYVxuICAgIGlmICh0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBpZiAocmVxdWlyZWRGYWlsZWQodGhpcy5yZXF1aXJlZCwgdGhpcy5kaXNhYmxlZCwgdGhpcy5nZXRTY3JlZW5WYWx1ZSgpKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVxdWlyZWQ6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAobWF4bGVuZ3BvYWlsZWQodGhpcy5tYXhsZW5ndGgsIHRoaXMuZ2V0U2NyZWVuVmFsdWUoKSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1heGxlbmd0aDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChtaW5sZW5ncG9haWxlZCh0aGlzLm1pbmxlbmd0aCwgdGhpcy5nZXRTY3JlZW5WYWx1ZSgpKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWlubGVuZ3RoOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHBhdHRlcm5GYWlsZWQodGhpcy5wYXR0ZXJuLCBjLnZhbHVlKSkge1xuICAgICAgdGhpcy52YWxpZGF0ZVBhdHRlcm5PbldyaXRlVmFsdWUoYy52YWx1ZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXR0ZXJuOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXh0cmFWYWxpZGF0aW9uKGMpO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMud3JpdGVWYWx1ZU1vZGVsKHZhbHVlKTtcbiAgICB0aGlzLmNkPy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU1vZGVsKCkge1xuICAgIGlmICh0aGlzLnZhbGlkYXRvckNoYW5nZSkge1xuICAgICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICAvLyB1dGlsaXphZG8gcGFyYSB2YWxpZGFyIG8gcGF0dGVybiBuYSBpbmljaWFsaXphY2FvLCBmYXplbmRvIGRlc3NhIGZvcm1hIG8gY2FtcG8gZmljYSBzdWpvIChkaXJ0eSkuXG4gIHByaXZhdGUgdmFsaWRhdGVQYXR0ZXJuT25Xcml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgJiYgdGhpcy5wYXNzZWRXcml0ZVZhbHVlKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVNb2RlbCh2YWx1ZSk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5wYXNzZWRXcml0ZVZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZ1bsOnw6NvIHF1ZSBhdHJpYnVpIGZvY28gYW8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogUGFyYSB1dGlsaXrDoS1sYSDDqSBuZWNlc3PDoXJpbyB0ZXIgYSBpbnN0w6JuY2lhIGRvIGNvbXBvbmVudGUgbm8gRE9NLCBwb2RlbmRvIHNlciB1dGlsaXphZG8gbyBWaWV3Q2hpbGQgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiBpbXBvcnQgeyBQb05vbWVEb0NvbXBvbmVudGVDb21wb25lbnQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG4gICAqXG4gICAqIC4uLlxuICAgKlxuICAgKiBAVmlld0NoaWxkKFBvTm9tZURvQ29tcG9uZW50ZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgbm9tZURvQ29tcG9uZW50ZTogUG9Ob21lRG9Db21wb25lbnRlQ29tcG9uZW50O1xuICAgKlxuICAgKiBmb2N1c0NvbXBvbmVudCgpIHtcbiAgICogICB0aGlzLm5vbWVEb0NvbXBvbmVudGUuZm9jdXMoKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGFic3RyYWN0IGZvY3VzKCk6IHZvaWQ7XG5cbiAgLy8gTcOpdG9kbyBxdWUgcmVjZWJlcsOhIG8gdmFsb3IgZG8gbW9kZWxcbiAgYWJzdHJhY3Qgd3JpdGVWYWx1ZU1vZGVsKHZhbHVlOiBhbnkpOiB2b2lkO1xuXG4gIC8vIFZhbGlkYcOnw7VlcyBkbyBjYW1wb1xuICBhYnN0cmFjdCBleHRyYVZhbGlkYXRpb24oYzogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcblxuICAvLyBEZXZlIHJldG9ybmFyIG8gdmFsb3IgZG8gY2FtcG9cbiAgYWJzdHJhY3QgZ2V0U2NyZWVuVmFsdWUoKTogc3RyaW5nO1xufVxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { uuid } from '../../../utils/util';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core';
|
|
2
|
+
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { convertToBoolean, uuid } from '../../../utils/util';
|
|
4
4
|
import { PoInputGeneric } from '../po-input-generic/po-input-generic';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@angular/common";
|
|
@@ -59,6 +59,16 @@ const providers = [
|
|
|
59
59
|
export class PoLoginComponent extends PoInputGeneric {
|
|
60
60
|
id = `po-login[${uuid()}]`;
|
|
61
61
|
type = 'text';
|
|
62
|
+
_noAutocompleteLogin = true;
|
|
63
|
+
set noAutocomplete(value) {
|
|
64
|
+
this._noAutocompleteLogin = convertToBoolean(value);
|
|
65
|
+
}
|
|
66
|
+
get noAutocomplete() {
|
|
67
|
+
return this._noAutocompleteLogin;
|
|
68
|
+
}
|
|
69
|
+
get autocomplete() {
|
|
70
|
+
return this.noAutocomplete ? 'off' : 'on';
|
|
71
|
+
}
|
|
62
72
|
/* istanbul ignore next */
|
|
63
73
|
constructor(el, cd) {
|
|
64
74
|
super(el, cd);
|
|
@@ -67,7 +77,7 @@ export class PoLoginComponent extends PoInputGeneric {
|
|
|
67
77
|
return null;
|
|
68
78
|
}
|
|
69
79
|
static ɵfac = function PoLoginComponent_Factory(t) { return new (t || PoLoginComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
70
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoLoginComponent, selectors: [["po-login"]], features: [i0.ɵɵProvidersFeature(providers), i0.ɵɵInheritDefinitionFeature], decls: 9, vars: 25, consts: [[3, "p-disabled", "p-id", "p-label", "p-optional", "p-required", "p-show-required"], [1, "po-field-container-content"], [1, "po-field-icon-container-left"], ["p-icon", "ICON_USER"], [1, "po-input", "po-input-icon-left", 3, "autocomplete", "disabled", "id", "placeholder", "readonly", "required", "type", "blur", "click", "focus", "input"], ["inp", ""], [1, "po-field-icon-container-right"], ["class", "po-icon-input", 3, "p-element-ref", "p-change-event", 4, "ngIf"], [3, "p-help", "p-disabled", "p-error-pattern"], [1, "po-icon-input", 3, "p-element-ref", "p-change-event"]], template: function PoLoginComponent_Template(rf, ctx) { if (rf & 1) {
|
|
80
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoLoginComponent, selectors: [["po-login"]], inputs: { noAutocomplete: [i0.ɵɵInputFlags.None, "p-no-autocomplete", "noAutocomplete"] }, features: [i0.ɵɵProvidersFeature(providers), i0.ɵɵInheritDefinitionFeature], decls: 9, vars: 25, consts: [[3, "p-disabled", "p-id", "p-label", "p-optional", "p-required", "p-show-required"], [1, "po-field-container-content"], [1, "po-field-icon-container-left"], ["p-icon", "ICON_USER"], [1, "po-input", "po-input-icon-left", 3, "autocomplete", "disabled", "id", "placeholder", "readonly", "required", "type", "blur", "click", "focus", "input"], ["inp", ""], [1, "po-field-icon-container-right"], ["class", "po-icon-input", 3, "p-element-ref", "p-change-event", 4, "ngIf"], [3, "p-help", "p-disabled", "p-error-pattern"], [1, "po-icon-input", 3, "p-element-ref", "p-change-event"]], template: function PoLoginComponent_Template(rf, ctx) { if (rf & 1) {
|
|
71
81
|
i0.ɵɵelementStart(0, "po-field-container", 0)(1, "div", 1)(2, "div", 2);
|
|
72
82
|
i0.ɵɵelement(3, "po-icon", 3);
|
|
73
83
|
i0.ɵɵelementEnd();
|
|
@@ -97,6 +107,9 @@ export class PoLoginComponent extends PoInputGeneric {
|
|
|
97
107
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoLoginComponent, [{
|
|
98
108
|
type: Component,
|
|
99
109
|
args: [{ selector: 'po-login', changeDetection: ChangeDetectionStrategy.OnPush, providers: providers, template: "<po-field-container\n [p-disabled]=\"disabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n>\n <div class=\"po-field-container-content\">\n <div class=\"po-field-icon-container-left\">\n <po-icon\n p-icon=\"ICON_USER\"\n class=\"po-field-icon {{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n [class.po-field-icon-disabled]=\"disabled\"\n ></po-icon>\n </div>\n\n <input\n #inp\n class=\"po-input po-input-icon-left\"\n [attr.name]=\"name\"\n [autocomplete]=\"autocomplete\"\n [class.po-input-icon-right]=\"clean\"\n [disabled]=\"disabled\"\n [id]=\"id\"\n [placeholder]=\"disabled ? '' : placeholder\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [type]=\"type\"\n (blur)=\"eventOnBlur($event)\"\n (click)=\"eventOnClick($event)\"\n (focus)=\"eventOnFocus($event)\"\n (input)=\"eventOnInput($event)\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean\n class=\"po-icon-input\"\n *ngIf=\"clean && !disabled && !readonly\"\n [p-element-ref]=\"inputEl\"\n (p-change-event)=\"clear($event)\"\n >\n </po-clean>\n </div>\n </div>\n\n <po-field-container-bottom [p-help]=\"help\" [p-disabled]=\"disabled\" [p-error-pattern]=\"getErrorPattern()\">\n </po-field-container-bottom>\n</po-field-container>\n" }]
|
|
100
|
-
}], () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }],
|
|
110
|
+
}], () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], { noAutocomplete: [{
|
|
111
|
+
type: Input,
|
|
112
|
+
args: ['p-no-autocomplete']
|
|
113
|
+
}] }); })();
|
|
101
114
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoLoginComponent, { className: "PoLoginComponent", filePath: "lib/components/po-field/po-login/po-login.component.ts", lineNumber: 54 }); })();
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWxvZ2luL3BvLWxvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1sb2dpbi9wby1sb2dpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBbUIsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7O0lDK0JoRSxtQ0FLQztJQURDLDRMQUFrQixlQUFBLG9CQUFhLENBQUEsSUFBQztJQUVsQyxpQkFBVzs7O0lBSFQsOENBQXlCOztBRGhDakMsMEJBQTBCO0FBQzFCLE1BQU0sU0FBUyxHQUFHO0lBQ2hCO1FBQ0UsT0FBTyxFQUFFLGlCQUFpQjtRQUMxQiwyQkFBMkI7UUFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxLQUFLLEVBQUUsSUFBSTtLQUNaO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsYUFBYTtRQUN0QiwyQkFBMkI7UUFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxLQUFLLEVBQUUsSUFBSTtLQUNaO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQU9ILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxjQUFjO0lBQ2xELEVBQUUsR0FBRyxZQUFZLElBQUksRUFBRSxHQUFHLENBQUM7SUFDM0IsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUNOLG9CQUFvQixHQUFhLElBQUksQ0FBQztJQUU5QyxJQUF5QyxjQUFjLENBQUMsS0FBYztRQUNwRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQWEsY0FBYztRQUN6QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBYSxZQUFZO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUMsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixZQUFZLEVBQWMsRUFBRSxFQUFxQjtRQUMvQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxlQUFlLENBQUMsQ0FBa0I7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzBFQXhCVSxnQkFBZ0I7NkRBQWhCLGdCQUFnQix5SkFGM0IsU0FBUztZQ25EWCw2Q0FPQyxhQUFBLGFBQUE7WUFHSyw2QkFJVztZQUNiLGlCQUFNO1lBRU4sbUNBZ0JFO1lBSkEsZ0dBQVEsdUJBQW1CLElBQUMscUZBQ25CLHdCQUFvQixJQURELHFGQUVuQix3QkFBb0IsSUFGRCxxRkFHbkIsd0JBQW9CLElBSEQ7WUFaOUIsaUJBZ0JFO1lBRUYsOEJBQTJDO1lBQ3pDLDJFQU1XO1lBQ2IsaUJBQU0sRUFBQTtZQUdSLCtDQUM0QjtZQUM5QixpQkFBcUI7O1lBL0NuQix5Q0FBdUIsZ0JBQUEsc0JBQUEsNEJBQUEsNEJBQUEscUNBQUE7WUFXakIsZUFBaUY7WUFBakYsMEdBQWlGO1lBQ2pGLHNEQUF5QztZQVMzQyxjQUFtQztZQUFuQyxnREFBbUM7WUFEbkMsK0NBQTZCLDBCQUFBLGNBQUEsb0RBQUEsMEJBQUEsMEJBQUEsa0JBQUE7WUFEN0IsZ0NBQWtCO1lBa0JmLGVBQXFDO1lBQXJDLGtFQUFxQztZQVFqQixjQUFlO1lBQWYsaUNBQWUsNEJBQUEsMENBQUE7OztpRkRPL0IsZ0JBQWdCO2NBTjVCLFNBQVM7MkJBQ0UsVUFBVSxtQkFFSCx1QkFBdUIsQ0FBQyxNQUFNLGFBQy9DLFNBQVM7MkVBT2dDLGNBQWM7a0JBQXRELEtBQUs7bUJBQUMsbUJBQW1COztrRkFMZixnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4sIHV1aWQgfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcblxuaW1wb3J0IHsgUG9JbnB1dEdlbmVyaWMgfSBmcm9tICcuLi9wby1pbnB1dC1nZW5lcmljL3BvLWlucHV0LWdlbmVyaWMnO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY29uc3QgcHJvdmlkZXJzID0gW1xuICB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9Mb2dpbkNvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbiAgfSxcbiAge1xuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9Mb2dpbkNvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbiAgfVxuXTtcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9JbnB1dEJhc2VDb21wb25lbnRcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIE8gYHBvLWxvZ2luYCDDqSB1bSBpbnB1dCBlc3BlY8OtZmljbyBwYXJhIGxvZ2luLiBKw6EgcG9zc3VpIHRpcG8sIGVzdGlsbyBlIMOtY29uZSBwcmVkZWZpbmlkb3MuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbG9naW4tYmFzaWNcIiB0aXRsZT1cIlBPIExvZ2luIEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb2dpbi1iYXNpYy9zYW1wbGUtcG8tbG9naW4tYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9naW4tYmFzaWMvc2FtcGxlLXBvLWxvZ2luLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWxvZ2luLWxhYnNcIiB0aXRsZT1cIlBPIExvZ2luIExhYnNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvZ2luLWxhYnMvc2FtcGxlLXBvLWxvZ2luLWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9naW4tbGFicy9zYW1wbGUtcG8tbG9naW4tbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1sb2dpbi1jb25maXJtXCIgdGl0bGU9XCJQTyBMb2dpbiAtIENvbmZpcm0gSWRlbnRpdHlcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvZ2luLWNvbmZpcm0vc2FtcGxlLXBvLWxvZ2luLWNvbmZpcm0uY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9naW4tY29uZmlybS9zYW1wbGUtcG8tbG9naW4tY29uZmlybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tbG9naW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tbG9naW4uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzXG59KVxuZXhwb3J0IGNsYXNzIFBvTG9naW5Db21wb25lbnQgZXh0ZW5kcyBQb0lucHV0R2VuZXJpYyB7XG4gIGlkID0gYHBvLWxvZ2luWyR7dXVpZCgpfV1gO1xuICB0eXBlID0gJ3RleHQnO1xuICBwcml2YXRlIF9ub0F1dG9jb21wbGV0ZUxvZ2luPzogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCdwLW5vLWF1dG9jb21wbGV0ZScpIG92ZXJyaWRlIHNldCBub0F1dG9jb21wbGV0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX25vQXV0b2NvbXBsZXRlTG9naW4gPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBub0F1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbm9BdXRvY29tcGxldGVMb2dpbjtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBhdXRvY29tcGxldGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ub0F1dG9jb21wbGV0ZSA/ICdvZmYnIDogJ29uJztcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGNvbnN0cnVjdG9yKGVsOiBFbGVtZW50UmVmLCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcihlbCwgY2QpO1xuICB9XG5cbiAgZXh0cmFWYWxpZGF0aW9uKGM6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iLCI8cG8tZmllbGQtY29udGFpbmVyXG4gIFtwLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW3AtaWRdPVwiaWRcIlxuICBbcC1sYWJlbF09XCJsYWJlbFwiXG4gIFtwLW9wdGlvbmFsXT1cIm9wdGlvbmFsXCJcbiAgW3AtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICBbcC1zaG93LXJlcXVpcmVkXT1cInNob3dSZXF1aXJlZFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwby1maWVsZC1pY29uLWNvbnRhaW5lci1sZWZ0XCI+XG4gICAgICA8cG8taWNvblxuICAgICAgICBwLWljb249XCJJQ09OX1VTRVJcIlxuICAgICAgICBjbGFzcz1cInBvLWZpZWxkLWljb24ge3sgZGlzYWJsZWQgPyAncG8taWNvbi1pbnB1dC1kaXNhYmxlZCcgOiAncG8taWNvbi1pbnB1dCcgfX1cIlxuICAgICAgICBbY2xhc3MucG8tZmllbGQtaWNvbi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICA+PC9wby1pY29uPlxuICAgIDwvZGl2PlxuXG4gICAgPGlucHV0XG4gICAgICAjaW5wXG4gICAgICBjbGFzcz1cInBvLWlucHV0IHBvLWlucHV0LWljb24tbGVmdFwiXG4gICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxuICAgICAgW2NsYXNzLnBvLWlucHV0LWljb24tcmlnaHRdPVwiY2xlYW5cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtpZF09XCJpZFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZGlzYWJsZWQgPyAnJyA6IHBsYWNlaG9sZGVyXCJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAoYmx1cik9XCJldmVudE9uQmx1cigkZXZlbnQpXCJcbiAgICAgIChjbGljayk9XCJldmVudE9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAoZm9jdXMpPVwiZXZlbnRPbkZvY3VzKCRldmVudClcIlxuICAgICAgKGlucHV0KT1cImV2ZW50T25JbnB1dCgkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLXJpZ2h0XCI+XG4gICAgICA8cG8tY2xlYW5cbiAgICAgICAgY2xhc3M9XCJwby1pY29uLWlucHV0XCJcbiAgICAgICAgKm5nSWY9XCJjbGVhbiAmJiAhZGlzYWJsZWQgJiYgIXJlYWRvbmx5XCJcbiAgICAgICAgW3AtZWxlbWVudC1yZWZdPVwiaW5wdXRFbFwiXG4gICAgICAgIChwLWNoYW5nZS1ldmVudCk9XCJjbGVhcigkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgIDwvcG8tY2xlYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxwby1maWVsZC1jb250YWluZXItYm90dG9tIFtwLWhlbHBdPVwiaGVscFwiIFtwLWRpc2FibGVkXT1cImRpc2FibGVkXCIgW3AtZXJyb3ItcGF0dGVybl09XCJnZXRFcnJvclBhdHRlcm4oKVwiPlxuICA8L3BvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20+XG48L3BvLWZpZWxkLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -268,9 +268,24 @@ export class PoLookupBaseComponent {
|
|
|
268
268
|
*
|
|
269
269
|
* Esta propriedade aplica-se ao texto contido nas células da tabela.
|
|
270
270
|
*
|
|
271
|
+
* > Incompatível com `virtual-scroll`, que requer altura fixa nas linhas.
|
|
272
|
+
*
|
|
271
273
|
* @default `false`
|
|
272
274
|
*/
|
|
273
275
|
textWrap = false;
|
|
276
|
+
/**
|
|
277
|
+
* @optional
|
|
278
|
+
*
|
|
279
|
+
* @description
|
|
280
|
+
*
|
|
281
|
+
* Habilita o `virtual-scroll` na tabela para melhorar a performance com grandes volumes de dados.
|
|
282
|
+
* A altura da tabela já é pré-definida, portanto o `virtual-scroll` será ativado automaticamente.
|
|
283
|
+
*
|
|
284
|
+
* > Incompatível com `p-text-wrap` e `master-detail`, pois o `virtual-scroll` exige altura fixa nas linhas.
|
|
285
|
+
*
|
|
286
|
+
* @default `true`
|
|
287
|
+
*/
|
|
288
|
+
virtualScroll = true;
|
|
274
289
|
/**
|
|
275
290
|
* Evento será disparado quando ocorrer algum erro na requisição de busca do item.
|
|
276
291
|
* Será passado por parâmetro o objeto de erro retornado.
|
|
@@ -643,7 +658,7 @@ export class PoLookupBaseComponent {
|
|
|
643
658
|
}
|
|
644
659
|
}
|
|
645
660
|
static ɵfac = function PoLookupBaseComponent_Factory(t) { return new (t || PoLookupBaseComponent)(i0.ɵɵdirectiveInject(i1.PoLookupFilterService), i0.ɵɵdirectiveInject(Injector), i0.ɵɵdirectiveInject(i2.PoLookupModalService)); };
|
|
646
|
-
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoLookupBaseComponent, inputs: { autoFocus: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-auto-focus", "autoFocus", convertToBoolean], label: [i0.ɵɵInputFlags.None, "p-label", "label"], literals: [i0.ɵɵInputFlags.None, "p-literals", "literals"], help: [i0.ɵɵInputFlags.None, "p-help", "help"], placeholder: [i0.ɵɵInputFlags.None, "p-placeholder", "placeholder"], name: "name", fieldValue: [i0.ɵɵInputFlags.None, "p-field-value", "fieldValue"], fieldLabel: [i0.ɵɵInputFlags.None, "p-field-label", "fieldLabel"], filterParams: [i0.ɵɵInputFlags.None, "p-filter-params", "filterParams"], fieldFormat: [i0.ɵɵInputFlags.None, "p-field-format", "fieldFormat"], columns: [i0.ɵɵInputFlags.None, "p-columns", "columns"], optional: [i0.ɵɵInputFlags.None, "p-optional", "optional"], advancedFilters: [i0.ɵɵInputFlags.None, "p-advanced-filters", "advancedFilters"], hideColumnsManager: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-hide-columns-manager", "hideColumnsManager", convertToBoolean], infiniteScroll: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-infinite-scroll", "infiniteScroll", convertToBoolean], clean: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-clean", "clean", convertToBoolean], multiple: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-multiple", "multiple", convertToBoolean], autoHeight: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-auto-height", "autoHeight", convertToBoolean], spacing: [i0.ɵɵInputFlags.None, "p-spacing", "spacing"], textWrap: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-text-wrap", "textWrap", convertToBoolean], filterService: [i0.ɵɵInputFlags.None, "p-filter-service", "filterService"], noAutocomplete: [i0.ɵɵInputFlags.None, "p-no-autocomplete", "noAutocomplete"], required: [i0.ɵɵInputFlags.None, "p-required", "required"], showRequired: [i0.ɵɵInputFlags.None, "p-show-required", "showRequired"], disabled: [i0.ɵɵInputFlags.None, "p-disabled", "disabled"] }, outputs: { onError: "p-error", selected: "p-selected", change: "p-change", changeVisibleColumns: "p-change-visible-columns", columnRestoreManager: "p-restore-column-manager" }, features: [i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature] });
|
|
661
|
+
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoLookupBaseComponent, inputs: { autoFocus: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-auto-focus", "autoFocus", convertToBoolean], label: [i0.ɵɵInputFlags.None, "p-label", "label"], literals: [i0.ɵɵInputFlags.None, "p-literals", "literals"], help: [i0.ɵɵInputFlags.None, "p-help", "help"], placeholder: [i0.ɵɵInputFlags.None, "p-placeholder", "placeholder"], name: "name", fieldValue: [i0.ɵɵInputFlags.None, "p-field-value", "fieldValue"], fieldLabel: [i0.ɵɵInputFlags.None, "p-field-label", "fieldLabel"], filterParams: [i0.ɵɵInputFlags.None, "p-filter-params", "filterParams"], fieldFormat: [i0.ɵɵInputFlags.None, "p-field-format", "fieldFormat"], columns: [i0.ɵɵInputFlags.None, "p-columns", "columns"], optional: [i0.ɵɵInputFlags.None, "p-optional", "optional"], advancedFilters: [i0.ɵɵInputFlags.None, "p-advanced-filters", "advancedFilters"], hideColumnsManager: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-hide-columns-manager", "hideColumnsManager", convertToBoolean], infiniteScroll: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-infinite-scroll", "infiniteScroll", convertToBoolean], clean: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-clean", "clean", convertToBoolean], multiple: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-multiple", "multiple", convertToBoolean], autoHeight: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-auto-height", "autoHeight", convertToBoolean], spacing: [i0.ɵɵInputFlags.None, "p-spacing", "spacing"], textWrap: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-text-wrap", "textWrap", convertToBoolean], virtualScroll: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-virtual-scroll", "virtualScroll", convertToBoolean], filterService: [i0.ɵɵInputFlags.None, "p-filter-service", "filterService"], noAutocomplete: [i0.ɵɵInputFlags.None, "p-no-autocomplete", "noAutocomplete"], required: [i0.ɵɵInputFlags.None, "p-required", "required"], showRequired: [i0.ɵɵInputFlags.None, "p-show-required", "showRequired"], disabled: [i0.ɵɵInputFlags.None, "p-disabled", "disabled"] }, outputs: { onError: "p-error", selected: "p-selected", change: "p-change", changeVisibleColumns: "p-change-visible-columns", columnRestoreManager: "p-restore-column-manager" }, features: [i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature] });
|
|
647
662
|
}
|
|
648
663
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoLookupBaseComponent, [{
|
|
649
664
|
type: Directive
|
|
@@ -710,6 +725,9 @@ export class PoLookupBaseComponent {
|
|
|
710
725
|
}], textWrap: [{
|
|
711
726
|
type: Input,
|
|
712
727
|
args: [{ alias: 'p-text-wrap', transform: convertToBoolean }]
|
|
728
|
+
}], virtualScroll: [{
|
|
729
|
+
type: Input,
|
|
730
|
+
args: [{ alias: 'p-virtual-scroll', transform: convertToBoolean }]
|
|
713
731
|
}], onError: [{
|
|
714
732
|
type: Output,
|
|
715
733
|
args: ['p-error']
|
|
@@ -741,4 +759,4 @@ export class PoLookupBaseComponent {
|
|
|
741
759
|
type: Input,
|
|
742
760
|
args: ['p-disabled']
|
|
743
761
|
}] }); })();
|
|
744
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWxvb2t1cC9wby1sb29rdXAtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUVOLFFBQVEsRUFDUixLQUFLLEVBSUwsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUMsU0FBUyxFQUFpQyxNQUFNLGdCQUFnQixDQUFDO0FBRWpILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU8vQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7OztBQUVsRjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxNQUFNLE9BQWdCLHFCQUFxQjtJQTJkL0I7SUFDa0I7SUFDbkI7SUExZFQ7Ozs7Ozs7Ozs7T0FVRztJQUM0RCxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRTFGOzs7OztPQUtHO0lBQ2UsS0FBSyxDQUFVO0lBRWpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMkNHO0lBQ2tCLFFBQVEsQ0FBb0I7SUFFakQsK0JBQStCO0lBQ2QsSUFBSSxDQUFVO0lBRS9CLHNFQUFzRTtJQUN0RSxJQUE0QixXQUFXLENBQUMsS0FBYTtRQUNuRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlB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QUFVO2tCQUF6RSxLQUFLO21CQUFDLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFhMUMsT0FBTztrQkFBMUIsS0FBSzttQkFBQyxXQUFXO1lBZTRDLFFBQVE7a0JBQXJFLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQU16QyxPQUFPO2tCQUF6QixNQUFNO21CQUFDLFNBQVM7WUFVSyxRQUFRO2tCQUE3QixNQUFNO21CQUFDLFlBQVk7WUFVQSxNQUFNO2tCQUF6QixNQUFNO21CQUFDLFVBQVU7WUFXa0Isb0JBQW9CO2tCQUF2RCxNQUFNO21CQUFDLDBCQUEwQjtZQVdFLG9CQUFvQjtrQkFBdkQsTUFBTTttQkFBQywwQkFBMEI7WUF3RkgsYUFBYTtrQkFBM0MsS0FBSzttQkFBQyxrQkFBa0I7WUFrQk8sY0FBYztrQkFBN0MsS0FBSzttQkFBQyxtQkFBbUI7WUFrQkQsUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBZ0JPLFlBQVk7a0JBQXJDLEtBQUs7bUJBQUMsaUJBQWlCO1lBVUMsUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0T3B0aW9ucyxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wsIFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBpc1R5cGVvZiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLi92YWxpZGF0b3JzJztcbmltcG9ydCB7IFBvTG9va3VwQWR2YW5jZWRGaWx0ZXIgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tbG9va3VwLWFkdmFuY2VkLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBDb2x1bW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tbG9va3VwLWNvbHVtbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBGaWx0ZXIgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tbG9va3VwLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBMaXRlcmFscyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1sb29rdXAtbGl0ZXJhbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwRmlsdGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbG9va3VwLWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTG9va3VwTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1sb29rdXAtbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uU3BhY2luZyB9IGZyb20gJy4uLy4uL3BvLXRhYmxlL2VudW1zL3BvLXRhYmxlLXNwYWNpbmcuZW51bSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogQ29tcG9uZW50ZSB1dGlsaXphZG8gcGFyYSBhYnJpciB1bWEgamFuZWxhIGRlIGJ1c2NhIGNvbSB1bWEgdGFiZWxhIHF1ZSBsaXN0YSBkYWRvcyBkZSB1bSBzZXJ2acOnby4gTmVzdGEgamFuZWxhIMOpIHBvc3PDrXZlbCBidXNjYXIgZVxuICogc2VsZWNpb25hciB1bSBvdSBtYWlzIHJlZ2lzdHJvcyBxdWUgc2Vyw6NvIGVudmlhZG9zIHBhcmEgbyBjYW1wby4gTyBgcG8tbG9va3VwYCBwZXJtaXRlIHF1ZSBvIHVzdcOhcmlvIGRpZ2l0ZSB1bSB2YWxvciBlIHByZXNzaW9uZSBhIHRlY2xhICpUQUIqIHBhcmFcbiAqIGJ1c2NhciB1bSByZWdpc3Ryby5cbiAqXG4gKiA+IENhc28gbyBjYW1wbyBzZWphIGluaWNpYWRvIG91IHByZWVuY2hpZG8gY29tIHVtIHZhbG9yIGluZXhpc3RlbnRlIG5hIGJ1c2NhLCBvIG1lc21vIHNlcsOhIGxpbXBhZG8uXG4gKiBObyBzZWd1bmRvIGNhc28gb2NvcnJlcsOhIGFww7NzIGVzdGUgcGVyZGVyIG8gZm9jbzsgYW1ib3Mgb3MgY2Fzb3MgbyBjYW1wbyBmaWNhcsOhIGludsOhbGlkbyBxdWFuZG8gcmVxdWVyaWRvLlxuICpcbiAqID4gRW5xdWFudG8gbyBjb21wb25lbnRlIHJlYWxpemEgYSByZXF1aXNpw6fDo28gYW8gc2Vydmlkb3IsIG8gY29tcG9uZW50ZSBmaWNhcsOhIGRlc2FiaWxpdGFkbyBlIGNvbSBvIHN0YXR1cyBpbnRlcm5vIGRvXG4gKiBbbW9kZWxvXShodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvZm9ybS12YWxpZGF0aW9uI2NyZWF0aW5nLWFzeW5jaHJvbm91cy12YWxpZGF0b3JzKSBjb21vIGBwZW5kaW5nYC5cbiAqXG4gKiBFc3RlIGNvbXBvbmVudGUgbsOjbyDDqSByZWNvbWVuZGFkbyBxdWFuZG8gYSBidXNjYSBkb3MgZGFkb3MgcG9zc3VpciBwb3VjYXMgaW5mb3JtYcOnw7VlcywgcGFyYSBpc3NvIHV0aWxpemUgb3V0cm9zIGNvbXBvbmVudGVzIGNvbW8gb1xuICogYHBvLXNlbGVjdGAgb3UgbyBgcG8tY29tYm9gLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb0xvb2t1cEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBPbkluaXQsIFZhbGlkYXRvciwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzXG57XG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEFwbGljYSBmb2NvIG5vIGVsZW1lbnRvIGFvIHNlciBpbmljaWFkby5cbiAgICpcbiAgICogPiBDYXNvIG1haXMgZGUgdW0gZWxlbWVudG8gc2VqYSBjb25maWd1cmFkbyBjb20gZXNzYSBwcm9wcmllZGFkZSwgYXBlbmFzIG8gw7psdGltbyBlbGVtZW50byBkZWNsYXJhZG8gY29tIGVsYSB0ZXLDoSBvIGZvY28uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1hdXRvLWZvY3VzJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGF1dG9Gb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBMYWJlbCBkbyBjYW1wby5cbiAgICpcbiAgICogPiBRdWFuZG8gdXRpbGl6YXIgZXN0YSBwcm9wcmllZGFkZSBvIHNldSB2YWxvciBzZXLDoSB1dGlsaXphZG8gY29tbyB0w610dWxvIGRhIG1vZGFsIGRvIGNvbXBvbmVudGUgY2FzbyBuw6NvIHRlbmhhXG4gICAqIHNpZG8gZGVmaW5pZG8gdW0gYG1vZGFsVGl0bGVgIG5hIHByb3ByaWVkYWRlIGBwLWxpdGVyYWxzYC5cbiAgICovXG4gIEBJbnB1dCgncC1sYWJlbCcpIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLWxvb2t1cGAuXG4gICAqXG4gICAqIEV4aXN0ZW0gZHVhcyBtYW5laXJhcyBkZSBjdXN0b21pemFyIG8gY29tcG9uZW50ZSwgcGFzc2FuZG8gdW0gb2JqZXRvIGNvbSB0b2RhcyBhcyBsaXRlcmFpcyBkaXNwb27DrXZlaXM6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvTG9va3VwTGl0ZXJhbHMgPSB7XG4gICAqICAgIG1vZGFsUHJpbWFyeUFjdGlvbkxhYmVsOiAnU2VsZWN0JyxcbiAgICogICAgbW9kYWxTZWNvbmRhcnlBY3Rpb25MYWJlbDogJ0NhbmNlbCcsXG4gICAqICAgIG1vZGFsUGxhY2Vob2xkZXI6ICdTZWFyY2ggVmFsdWUnLFxuICAgKiAgICBtb2RhbFRhYmxlTm9Db2x1bW5zOiAnTm8gY29sdW1ucycsXG4gICAqICAgIG1vZGFsVGFibGVOb0RhdGE6ICdObyBkYXRhJyxcbiAgICogICAgbW9kYWxUYWJsZUxvYWRpbmdEYXRhOiAnTG9hZGluZyBkYXRhJyxcbiAgICogICAgbW9kYWxUYWJsZUxvYWRNb3JlRGF0YTogJ0xvYWQgbW9yZScsXG4gICAqICAgIG1vZGFsVGl0bGU6ICdTZWxlY3QgYSB1c2VyJyxcbiAgICogICAgbW9kYWxBZHZhbmNlZFNlYXJjaDogJ0FkdmFuY2VkIHNlYXJjaCcsXG4gICAqICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hUaXRsZTogJ0FkdmFuY2VkIHNlYXJjaCcsXG4gICAqICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hQcmltYXJ5QWN0aW9uTGFiZWw6ICdGaWx0ZXInLFxuICAgKiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICdSZXR1cm4nLFxuICAgKiAgICBtb2RhbERpc2NsYWltZXJHcm91cFRpdGxlOiAnUHJlc2VudGluZyByZXN1bHRzIGZpbHRlcmVkIGJ5OidcbiAgICogIH07XG4gICAqIGBgYFxuICAgKlxuICAgKiBPdSBwYXNzYW5kbyBhcGVuYXMgYXMgbGl0ZXJhaXMgcXVlIGRlc2VqYSBjdXN0b21pemFyOlxuICAgKlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb0xvb2t1cExpdGVyYWxzID0ge1xuICAgKiAgICBtb2RhbFByaW1hcnlBY3Rpb25MYWJlbDogJ1NlbGVjdCdcbiAgICogIH07XG4gICAqIGBgYFxuICAgKlxuICAgKiBFIHBhcmEgY2FycmVnYXIgYXMgbGl0ZXJhaXMgY3VzdG9taXphZGFzLCBiYXN0YSBhcGVuYXMgcGFzc2FyIG8gb2JqZXRvIHBhcmEgbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBgYGBcbiAgICogPHBvLWxvb2t1cFxuICAgKiAgIFtwLWxpdGVyYWxzXT1cImN1c3RvbUxpdGVyYWxzXCI+XG4gICAqIDwvcG8tbG9va3VwPlxuICAgKiBgYGBcbiAgICpcbiAgICogPiBPIG9iamV0byBwYWRyw6NvIGRlIGxpdGVyYWlzIHNlcsOhIHRyYWR1emlkbyBkZSBhY29yZG8gY29tIG8gaWRpb21hIGRvXG4gICAqIFtgUG9JMThuU2VydmljZWBdKC9kb2N1bWVudGF0aW9uL3BvLWkxOG4pIG91IGRvIGJyb3dzZXIuXG4gICAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBsaXRlcmFscz86IFBvTG9va3VwTGl0ZXJhbHM7XG5cbiAgLyoqIFRleHRvIGRlIGFwb2lvIGRvIGNhbXBvLiAqL1xuICBASW5wdXQoJ3AtaGVscCcpIGhlbHA/OiBzdHJpbmc7XG5cbiAgLyoqIE1lbnNhZ2VtIHF1ZSBhcGFyZWNlcsOhIGVucXVhbnRvIG8gY2FtcG8gbsOjbyBlc3RpdmVyIHByZWVuY2hpZG8uICovXG4gIEBJbnB1dCgncC1wbGFjZWhvbGRlcicpIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZSB8fCAnJztcbiAgfVxuXG4gIGdldCBwbGFjZWhvbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cblxuICAvKiogTm9tZSBlIElkIGRvIGNvbXBvbmVudGUuICovXG4gIEBJbnB1dCgnbmFtZScpIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBhIGNvbHVuYSBxdWUgc2Vyw6EgdXRpbGl6YWRhIGNvbW8gdmFsb3IgZG8gY2FtcG8uXG4gICAqXG4gICAqID4gQXRlbsOnw6NvOiBDYXNvIG7Do28gc2VqYSBwYXNzYWRhIG91IHRlbmhhIG8gY29udGXDumRvIGluY29ycmV0bywgbsOjbyBpcsOhIGF0dWFsaXphciBvIG1vZGVsIGRvIGZvcm11bMOhcmlvLlxuICAgKi9cbiAgQElucHV0KCdwLWZpZWxkLXZhbHVlJykgZmllbGRWYWx1ZTogc3RyaW5nO1xuXG4gIC8qKiBJbmRpY2EgYSBjb2x1bmEgcXVlIHNlcsOhIHV0aWxpemFkYSBjb21vIGRlc2NyacOnw6NvIGRvIGNhbXBvIGUgY29tbyBmaWx0cm8gZGVudHJvIGRhIGphbmVsYS4gKi9cbiAgQElucHV0KCdwLWZpZWxkLWxhYmVsJykgc2V0IGZpZWxkTGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpZWxkTGFiZWwgPSB2YWx1ZTtcbiAgICB0aGlzLmtleXNEZXNjcmlwdGlvbiA9IFt0aGlzLmZpZWxkTGFiZWxdO1xuICB9XG5cbiAgZ2V0IGZpZWxkTGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkTGFiZWw7XG4gIH1cblxuICAvKiogVmFsb3IgcXVlIHNlcsOhIHJlcGFzc2FkbyBjb21vIHBhcsOibWV0cm8gcGFyYSBhIFVSTCBvdSBhb3MgbcOpdG9kb3MgZG8gc2VydmnDp28gcXVlIGltcGxlbWVudGFtIGEgaW50ZXJmYWNlIGBQb0xvb2t1cEZpbHRlcmAuICovXG4gIEBJbnB1dCgncC1maWx0ZXItcGFyYW1zJykgZmlsdGVyUGFyYW1zPzogYW55O1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEZvcm1hdG8gZGUgZXhpYmnDp8OjbyBkbyBjYW1wby5cbiAgICpcbiAgICogUmVjZWJlIHVtYSBmdW7Dp8OjbyBxdWUgZGV2ZSByZXRvcm5hciB1bWEgKnN0cmluZyogY29tIG8vb3MgdmFsb3JlcyBkbyBvYmpldG8gZm9ybWF0YWRvcyBwYXJhIGV4aWJpw6fDo28sIHBvciBleGVtcGxvOlxuICAgKlxuICAgKiBgYGBcbiAgICogZmllbGRGb3JtYXQob2JqKSB7XG4gICAqICAgcmV0dXJuIGAke29iai5pZH0gLSAke29iai5uYW1lfWA7XG4gICAqIH1cbiAgICogYGBgXG4gICAqID4gRXN0YSBwcm9wcmllZGFkZSBzb2JyZXDDtWUgbyB2YWxvciBkYSBwcm9wcmllZGFkZSBgcC1maWVsZC1sYWJlbGAgbmEgZGVzY3Jpw6fDo28gZG8gY2FtcG8uXG4gICAqXG4gICAqIFBvZGUtc2UgaW5mb3JtYXIgdW1hIGxpc3RhIGRlIHByb3ByaWVkYWRlcyBxdWUgZGVzZWphIGV4aWJpciBjb21vIGRlc2NyacOnw6NvIGRvIGNhbXBvLCBQb3IgZXhlbXBsbzpcbiAgICogYGBgXG4gICAqIDxwby1sb29rdXBcbiAgICogIC4uLlxuICAgKiAgW3AtZmllbGQtZm9ybWF0XT1cIlsnaWQnLCduaWNrbmFtZSddXCJcbiAgICogIC4uLlxuICAgKiA+XG4gICAqXG4gICAqIE9iamV0byByZXRvcm5hZG86XG4gICAqICAge1xuICAgKiAgICAgIGlkOjEyMyxcbiAgICogICAgICBuYW1lOiAnS2FrYXJvdG8nLFxuICAgKiAgICAgIG5pY2tuYW1lOiAnR29rdScsXG4gICAqICAgfVxuICAgKiBBcHJlc2VudGHDp8OjbyBubyBjYW1wbzogMTIzIC0gR29rdVxuICAgKiBgYGBcbiAgICpcbiAgICogPiBTZXLDoSB1dGlsaXphZG8gYCAtIGAgY29tbyBzZXBhcmFkb3IuXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtZm9ybWF0JykgZmllbGRGb3JtYXQ/OiAoKHZhbHVlKSA9PiBzdHJpbmcpIHwgQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogTGlzdGEgZGFzIGNvbHVuYXMgZGEgdGFiZWxhLlxuICAgKiBFc3NhIHByb3ByaWVkYWRlIGRldmUgcmVjZWJlciB1bSBhcnJheSBkZSBvYmpldG9zIHF1ZSBpbXBsZW1lbnRhbSBhIGludGVyZmFjZSBQb0xvb2t1cENvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgncC1jb2x1bW5zJykgY29sdW1ucz86IEFycmF5PFBvTG9va3VwQ29sdW1uPjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgc2UgYSBpbmRpY2HDp8OjbyBkZSBjYW1wbyBvcGNpb25hbCBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE8gY2FtcG8gY29udGVyIGBwLXJlcXVpcmVkYDtcbiAgICogLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25hbCcpIG9wdGlvbmFsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIExpc3RhIGRlIG9iamV0b3MgZG9zIGNhbXBvcyBxdWUgc2Vyw6NvIGNyaWFkb3MgbmEgYnVzY2EgYXZhbsOnYWRhLlxuICAgKlxuICAgKiA+IENhc28gbsOjbyBzZWphIHBhc3NhZG8gdW0gb2JqZXRvIG91IGVudMOjbyBlbGUgZXN0ZWphIGVtIGJyYW5jbyBvIGxpbmsgZGUgYnVzY2EgYXZhbsOnYWRhIGZpY2Fyw6EgZXNjb25kaWRvLlxuICAgKlxuICAgKiBFeGVtcGxvIGRlIFVSTCBjb20gYnVzY2EgYXZhbsOnYWRhOlxuICAgKlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0yMCZuYW1lPVRvbnklMjBTdGFyayZuaWNrbmFtZT1Ib21lbSUyMGRlJTIwRmVycm9cbiAgICogYGBgXG4gICAqXG4gICAqIENhc28gYWxndW0gcGFyw6JtZXRybyBzZWphIHVtYSBsaXN0YSwgYSBjb25jYXRlbmHDp8OjbyDDqSBmZWl0YSB1dGlsaXphbmRvIHbDrXJndWxhLlxuICAgKiBFeGVtcGxvOlxuICAgKlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0yMCZuYW1lPVRvbnklMjBTdGFyayxQZXRlciUyMFBhcmtlcixHb2hhblxuICAgKiBgYGBcbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1hZHZhbmNlZC1maWx0ZXJzJykgYWR2YW5jZWRGaWx0ZXJzOiBBcnJheTxQb0xvb2t1cEFkdmFuY2VkRmlsdGVyPjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIHF1ZSBvIGdlcmVuY2lhZG9yIGRlIGNvbHVuYXMsIHJlc3BvbnPDoXZlbCBwZWxhIGRlZmluacOnw6NvIGRlIHF1YWlzIGNvbHVuYXMgc2Vyw6NvIGV4aWJpZGFzLCBzZWphIGVzY29uZGlkby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWhpZGUtY29sdW1ucy1tYW5hZ2VyJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pXG4gIGhpZGVDb2x1bW5zTWFuYWdlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEF0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgc2Nyb2xsIGluZmluaXRvIHBhcmEgYSB0YWJlbGEgZXhpYmlkYSBubyByZXRvcm5vIGRhIGNvbnN1bHRhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtaW5maW5pdGUtc2Nyb2xsJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGluZmluaXRlU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEV4aWJlIHVtIMOtY29uZSBxdWUgcGVybWl0ZSBsaW1wYXIgbyBjYW1wby4gKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWNsZWFuJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGNsZWFuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVybWl0ZSBhIHNlbGXDp8OjbyBkZSBtw7psdGlwbG9zIGl0ZW5zLlxuICAgKlxuICAgKiA+IFF1YW5kbyBoYWJpbGl0YWRvIG8gdmFsb3IgZG8gY2FtcG8gcGFzc2Fyw6EgYSBzZXIgdW1hIGxpc3RhIGRlIHZhbG9yZXMsIHBvciBleGVtcGxvOiBgWyAxMjM0NSwgNjc4OTAgXWBcbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLW11bHRpcGxlJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBhIGFsdHVyYSBkbyBjb21wb25lbnRlIHNlcsOhIGF1dG8gYWp1c3TDoXZlbCwgcG9zc3VpbmRvIHVtYSBhbHR1cmEgbWluaW1hIHBvcsOpbSBhIGFsdHVyYSBtw6F4aW1hIHNlcsOhIGRlIGFjb3Jkb1xuICAgKiBjb20gbyBuw7ptZXJvIGRlIGl0ZW5zIHNlbGVjaW9uYWRvcyBlIGEgZXh0ZW5zw6NvIGRvcyBtZXNtb3MsIG1hbnRlbmRvLW9zIHNlbXByZSB2aXPDrXZlaXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1hdXRvLWhlaWdodCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhdXRvSGVpZ2h0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUmVzcG9uc8OhdmVsIHBvciBhcGxpY2FyIGVzcGHDp2FtZW50byBuYXMgY29sdW5hcyBkYSB0YWJlbGEgY29udGlkYSBubyBsb29rdXAuXG4gICAqXG4gICAqIERldmUgcmVjZWJlciB1bSBkb3MgdmFsb3JlcyBkbyBlbnVtIGBQb1RhYmxlQ29sdW1uU3BhY2luZ2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBtZWRpdW1gXG4gICAqL1xuICBASW5wdXQoJ3Atc3BhY2luZycpIHNwYWNpbmc6IFBvVGFibGVDb2x1bW5TcGFjaW5nID0gUG9UYWJsZUNvbHVtblNwYWNpbmcuTWVkaXVtO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEhhYmlsaXRhIG91IGRlc2FiaWxpdGEgYSBxdWVicmEgYXV0b23DoXRpY2EgZGUgdGV4dG8uIFF1YW5kbyBhdGl2YWRhLCBvIHRleHRvIHF1ZSBleGNlZGVcbiAgICogbyBlc3Bhw6dvIGRpc3BvbsOtdmVsIMOpIHRyYW5zZmVyaWRvIHBhcmEgYSBwcsOzeGltYSBsaW5oYSBlbSBwb250b3MgYXByb3ByaWFkb3MgcGFyYSB1bWFcbiAgICogbGVpdHVyYSBjbGFyYS5cbiAgICpcbiAgICogRXN0YSBwcm9wcmllZGFkZSBhcGxpY2Etc2UgYW8gdGV4dG8gY29udGlkbyBuYXMgY8OpbHVsYXMgZGEgdGFiZWxhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtdGV4dC13cmFwJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIHRleHRXcmFwPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBFdmVudG8gc2Vyw6EgZGlzcGFyYWRvIHF1YW5kbyBvY29ycmVyIGFsZ3VtIGVycm8gbmEgcmVxdWlzacOnw6NvIGRlIGJ1c2NhIGRvIGl0ZW0uXG4gICAqIFNlcsOhIHBhc3NhZG8gcG9yIHBhcsOibWV0cm8gbyBvYmpldG8gZGUgZXJybyByZXRvcm5hZG8uXG4gICAqL1xuICBAT3V0cHV0KCdwLWVycm9yJykgb25FcnJvcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gc2Vyw6EgZGlzcGFyYWRvIHF1YW5kbyBvY29ycmVyIGFsZ3VtYSBzZWxlw6fDo28uXG4gICAqIFNlcsOhIHBhc3NhZG8gcG9yIHBhcsOibWV0cm8gbyBvYmpldG8gY29tIG8gdmFsb3Igc2VsZWNpb25hZG8uXG4gICAqL1xuICBAT3V0cHV0KCdwLXNlbGVjdGVkJykgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogIEV2ZW50byBxdWUgc2Vyw6EgZGlzcGFyYWRvIGFvIGFsdGVyYXIgbyBtb2RlbC5cbiAgICogIFBvciBwYXLDom1ldHJvIHNlcsOhIHBhc3NhZG8gbyBub3ZvIHZhbG9yLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UnKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBmZWNoYXIgbyBwb3BvdmVyIGRvIGdlcmVuY2lhZG9yIGRlIGNvbHVuYXMgYXDDs3MgYWx0ZXJhciBhcyBjb2x1bmFzIHZpc8OtdmVpcy5cbiAgICpcbiAgICogTyBjb21wb25lbnRlIGVudmlhIGNvbW8gcGFyw6JtZXRybyB1bSBhcnJheSBkZSBzdHJpbmcgY29tIGFzIGNvbHVuYXMgdmlzw612ZWlzIGF0dWFsaXphZGFzLlxuICAgKiBQb3IgZXhlbXBsbzogW1wiaWRDYXJkXCIsIFwibmFtZVwiLCBcImhpcmVTdGF0dXNcIiwgXCJhZ2VcIl0uXG4gICAqL1xuICBAT3V0cHV0KCdwLWNoYW5nZS12aXNpYmxlLWNvbHVtbnMnKSBjaGFuZ2VWaXNpYmxlQ29sdW1ucyA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8c3RyaW5nPj4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIGNsaWNhciBubyBib3TDo28gZGUgcmVzdGF1cmFyIHBhZHLDo28gbm8gZ2VyZW5jaWFkb3IgZGUgY29sdW5hcy5cbiAgICpcbiAgICogTyBjb21wb25lbnRlIGVudmlhIGNvbW8gcGFyw6JtZXRybyB1bSBhcnJheSBkZSBzdHJpbmcgY29tIGFzIGNvbHVuYXMgY29uZmlndXJhZGFzIGluaWNpYWxtZW50ZS5cbiAgICogUG9yIGV4ZW1wbG86IFtcImlkQ2FyZFwiLCBcIm5hbWVcIiwgXCJoaXJlU3RhdHVzXCIsIFwiYWdlXCJdLlxuICAgKi9cbiAgQE91dHB1dCgncC1yZXN0b3JlLWNvbHVtbi1tYW5hZ2VyJykgY29sdW1uUmVzdG9yZU1hbmFnZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PFN0cmluZz4+KCk7XG5cbiAgc2VydmljZTogYW55O1xuXG4gIHByb3RlY3RlZCBzZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgcHJvdGVjdGVkIGdldFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQga2V5c0Rlc2NyaXB0aW9uOiBBcnJheTxhbnk+O1xuICBwcm90ZWN0ZWQgb2xkVmFsdWU6IHN0cmluZyA9ICcnO1xuICBwcm90ZWN0ZWQgdmFsdWVUb01vZGVsO1xuICBwcm90ZWN0ZWQgb2xkVmFsdWVUb01vZGVsID0gbnVsbDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIHByb3RlY3RlZCBvblRvdWNoZWQ6IGFueSA9IG51bGw7XG4gIHByb3RlY3RlZCByZXNpemVMaXN0ZW5lcjogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIF9kaXNhYmxlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmllbGRMYWJlbDogc3RyaW5nO1xuICBwcml2YXRlIF9maWx0ZXJTZXJ2aWNlOiBQb0xvb2t1cEZpbHRlciB8IHN0cmluZztcbiAgcHJpdmF0ZSBfbm9BdXRvY29tcGxldGU6IGJvb2xlYW47XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfcmVxdWlyZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2F1dG9IZWlnaHQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIGF1dG9IZWlnaHRJbml0aWFsVmFsdWU6IGJvb2xlYW47XG4gIHByaXZhdGUgb25DaGFuZ2VQcm9wYWdhdGU6IGFueSA9IG51bGw7XG4gIHByaXZhdGUgdmFsaWRhdG9yQ2hhbmdlOiBhbnk7XG5cbiAgcHJpdmF0ZSBjb250cm9sITogQWJzdHJhY3RDb250cm9sO1xuXG4gIHByaXZhdGUgaW5qZWN0T3B0aW9uczogSW5qZWN0T3B0aW9ucyA9IHtcbiAgICBzZWxmOiB0cnVlXG4gIH07XG5cbiAgLyoqXG4gICAqIFNlcnZpw6dvIHJlc3BvbnPDoXZlbCBwb3IgYnVzY2FyIG9zIGRhZG9zIGRhIHRhYmVsYSBuYSBqYW5lbGEuIFBvZGUgc2VyIGluZm9ybWFkbyB1bSBzZXJ2acOnbyBxdWUgaW1wbGVtZW50ZSBhIGludGVyZmFjZVxuICAgKiBgUG9Mb29rdXBGaWx0ZXJgIG91IHVtYSBVUkwuXG4gICAqXG4gICAqIFF1YW5kbyB1dGlsaXphZGEgdW1hIFVSTCBkZSB1bSBzZXJ2acOnbywgc2Vyw6EgY29uY2F0ZW5hZGEgbmVzdGEgVVJMIG8gdmFsb3IgcXVlIGRlc2VqYS1zZSBmaWx0cmFyLCBwb3IgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmZmlsdGVyPVBldGVyXG4gICAqIGBgYFxuICAgKlxuICAgKiBDYXNvIHV0aWxpemFyIG9yZGVuYcOnw6NvLCBhIGNvbHVuYSBvcmRlbmFkYSBzZXLDoSBlbnZpYWRhIGF0cmF2w6lzIGRvIHBhcsOibWV0cm8gYG9yZGVyYCwgcG9yIGV4ZW1wbG86XG4gICAqIC0gQ29sdW5hIGRlY3Jlc2NlbnRlOlxuICAgKiBgYGBcbiAgICogIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmZmlsdGVyPVBldGVyJm9yZGVyPS1uYW1lXG4gICAqIGBgYFxuICAgKlxuICAgKiAtIENvbHVuYSBhc2NlbmRlbnRlOlxuICAgKiBgYGBcbiAgICogIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmZmlsdGVyPVBldGVyJm9yZGVyPW5hbWVcbiAgICogYGBgXG4gICAqXG4gICAqIFNlIGZvciBkZWZpbmlkbyBhIHByb3ByaWVkYWRlIGBwLWZpbHRlci1wYXJhbXNgLCBvIG1lc21vIHRhbWLDqW0gc2Vyw6EgY29uY2F0ZW5hZG8uIFBvciBleGVtcGxvLCBwYXJhIG9cbiAgICogcGFyw6JtZXRybyBgeyBhZ2U6IDIzIH1gIGEgVVJMIGZpY2FyaWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJmFnZT0yMyZmaWx0ZXI9UGV0ZXJcbiAgICogYGBgXG4gICAqXG4gICAqIEFvIGluaWNpYXIgbyBjYW1wbyBjb20gdmFsb3IsIG9zIHJlZ2lzdHJvcyBzZXLDo28gYnVzY2Fkb3MgZGEgc2VndWludGUgZm9ybWE6XG4gICAqIGBgYFxuICAgKiBtb2RlbCA9IDEyMzQ7XG4gICAqXG4gICAqIEdFVCB1cmwvMTIzNFxuICAgKiBgYGBcbiAgICpcbiAgICogQ2FzbyBlc3RpdmVyIGNvbSBtw7psdGlwbGEgc2VsZcOnw6NvIGhhYmlsaXRhZGE6XG4gICAqIGBgYFxuICAgKiBtb2RlbCA9IFsxMjM0LCA1Njc4XVxuICAgKlxuICAgKiBHRVQgdXJsPyR7ZmllbGRWYWx1ZX09MTIzNCw1Njc4XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IEVzdGEgVVJMIGRldmUgcmV0b3JuYXIgZSByZWNlYmVyIG9zIGRhZG9zIG5vIHBhZHLDo28gZGUgW0FQSSBkbyBQTyBVSV0oaHR0cHM6Ly9wby11aS5pby9ndWlkZXMvYXBpKSBlIHV0aWxpemEgb3MgdmFsb3Jlc1xuICAgKiBkZWZpbmlkb3MgbmFzIHByb3ByaWVkYWRlcyBgcC1maWVsZC1sYWJlbGAgZSBgcC1maWVsZC12YWx1ZWAgcGFyYSBhIGNvbnN0cnXDp8OjbyBkbyBgcG8tbG9va3VwYC5cbiAgICpcbiAgICogQ2FzbyBvIHVzdcOhcmlvIGRpZ2l0ZSB1bSB2YWxvciBlIHByZXNzaW9uZSBhIHRlY2xhICpUQUIqIHBhcmEgcmVhbGl6YXIgYSBidXNjYSBkZSB1bSByZWdpc3RybyBlc3BlY8OtZmljbywgbyB2YWxvciBxdWUgc2VcbiAgICogZGVzZWphIGZpbHRyYXIgc2Vyw6EgY29kaWZpY2FkbyB1dGlsaXphbmRvIGEgZnVuw6fDo28gW2VuY29kZVVSSUNvbXBvbmVudF0oaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1lbmNvZGV1cmljb21wb25lbnQtdXJpY29tcG9uZW50KVxuICAgKiBlIGNvbmNhdGVuYWRvIG5hIFVSTCBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICpcbiAgICogYGBgXG4gICAqIHVybC92YWxvciUyMHF1ZSUyMHNlJTIwZGVzZWphJTIwZmlsdHJhclxuICAgKiBgYGBcbiAgICpcbiAgICogPiBRdWFuZG8gaW5mb3JtYWRvIHVtIHNlcnZpw6dvIHF1ZSBpbXBsZW1lbnRlIGEgaW50ZXJmYWNlIGBQb0xvb2t1cEZpbHRlcmAgbyB0cmF0YW1lbnRvIGRlIGVuY29kaW5nIGRvIHZhbG9yIGEgc2VyIGZpbHRyYWRvIGZpY2Fyw6EgYSBjYXJnbyBkbyBkZXNlbnZvbHZlZG9yLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWZpbHRlci1zZXJ2aWNlJykgc2V0IGZpbHRlclNlcnZpY2UoZmlsdGVyU2VydmljZTogUG9Mb29rdXBGaWx0ZXIgfCBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWx0ZXJTZXJ2aWNlID0gZmlsdGVyU2VydmljZTtcbiAgICB0aGlzLnNldFNlcnZpY2UodGhpcy5maWx0ZXJTZXJ2aWNlKTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJTZXJ2aWNlKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJTZXJ2aWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIGEgcHJvcHJpZWRhZGUgbmF0aXZhIGBhdXRvY29tcGxldGVgIGRvIGNhbXBvIGNvbW8gYG9mZmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1uby1hdXRvY29tcGxldGUnKSBzZXQgbm9BdXRvY29tcGxldGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9ub0F1dG9jb21wbGV0ZSA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IG5vQXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9ub0F1dG9jb21wbGV0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBxdWUgbyBjYW1wbyBzZXLDoSBvYnJpZ2F0w7NyaW8uXG4gICAqID4gRXN0YSBwcm9wcmllZGFkZSDDqSBkZXNjb25zaWRlcmFkYSBxdWFuZG8gbyBpbnB1dCBlc3TDoSBkZXNhYmlsaXRhZG8gYChwLWRpc2FibGVkKWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1yZXF1aXJlZCcpIHNldCByZXF1aXJlZChyZXF1aXJlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29udmVydFRvQm9vbGVhbihyZXF1aXJlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwodGhpcy52YWx1ZVRvTW9kZWwpO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgc2UgYSBpbmRpY2HDp8OjbyBkZSBjYW1wbyBvYnJpZ2F0w7NyaW8gc2Vyw6kgZXhpYmlkYS5cbiAgICpcbiAgICogPiBOw6NvIHNlcsOhIGV4aWJpZGEgYSBpbmRpY2HDp8OjbyBzZTpcbiAgICogLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXG4gICAqL1xuICBASW5wdXQoJ3Atc2hvdy1yZXF1aXJlZCcpIHNob3dSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIHF1ZSBvIGNhbXBvIHNlcsOhIGRlc2FiaWxpdGFkby5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBASW5wdXQoJ3AtZGlzYWJsZWQnKSBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IDxhbnk+ZGlzYWJsZWQgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4oZGlzYWJsZWQpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGVmYXVsdFNlcnZpY2U6IFBvTG9va3VwRmlsdGVyU2VydmljZSxcbiAgICBASW5qZWN0KEluamVjdG9yKSBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwdWJsaWMgcG9Mb29rdXBNb2RhbFNlcnZpY2U6IFBvTG9va3VwTW9kYWxTZXJ2aWNlXG4gICkge31cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5nZXRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZ2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplQ29sdW1uKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRDb250cm9sKCk7XG4gIH1cblxuICBjbGVhbk1vZGVsKCkge1xuICAgIHRoaXMuY2xlYW5WaWV3VmFsdWUoKTtcbiAgICB0aGlzLmNhbGxPbkNoYW5nZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmNvbHVtbnM/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5jb2x1bW5zID0gY2hhbmdlcy5jb2x1bW5zLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMucG9Mb29rdXBNb2RhbFNlcnZpY2U/LnNldENoYW5nZUNvbHVtbnModGhpcy5jb2x1bW5zKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5tdWx0aXBsZSAmJiBpc1R5cGVvZih0aGlzLmZpbHRlclNlcnZpY2UsICdzdHJpbmcnKSkge1xuICAgICAgdGhpcy5zZXJ2aWNlLnNldENvbmZpZyh0aGlzLmZpbHRlclNlcnZpY2UsIHRoaXMuZmllbGRWYWx1ZSwgdGhpcy5tdWx0aXBsZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgb3MgZXN0YWRvcyBkZSBoYWJpbGl0YWRvIHZpYSBmb3JtcyBhcGlcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBhcyBtdWRhbsOnYXMgZSBuw6NvIGF0dWFsaXphciBhdXRvbWF0aWNhbWVudGUgbyBNb2RlbC5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmdW5jOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlID0gZnVuYztcbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBhcyBtdWRhbsOnYXMgZSBuw6NvIGF0dWFsaXphciBhdXRvbWF0aWNhbWVudGUgbyBNb2RlbC5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZnVuYzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmdW5jO1xuICB9XG5cbiAgLy8gU2VsZWNpb25hIG8gdmFsb3IgZG8gbW9kZWwuXG4gIHNlbGVjdFZhbHVlKHZhbHVlU2VsZWN0ZWQ6IGFueSkge1xuICAgIHRoaXMudmFsdWVUb01vZGVsID0gdmFsdWVTZWxlY3RlZDtcbiAgICB0aGlzLm11bHRpcGxlXG4gICAgICA/IHRoaXMuY2FsbE9uQ2hhbmdlKHRoaXMudmFsdWVUb01vZGVsKVxuICAgICAgOiB0aGlzLnZhbHVlVG9Nb2RlbFxuICAgICAgICA/IHRoaXMuY2FsbE9uQ2hhbmdlKHRoaXMudmFsdWVUb01vZGVsW3RoaXMuZmllbGRWYWx1ZV0pXG4gICAgICAgIDogdGhpcy5jYWxsT25DaGFuZ2UodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkLmVtaXQodmFsdWVTZWxlY3RlZCk7XG4gIH1cblxuICBjYWxsT25DaGFuZ2UodmFsdWU6IGFueSkge1xuICAgIC8vIFF1YW5kbyBvIGlucHV0IG7Do28gcG9zc3VpIHVtIGZvcm11bMOhcmlvLCBlbnTDo28gZXN0YSBmdW7Dp8OjbyBuw6NvIMOpIHJlZ2lzdHJhZGEuXG4gICAgaWYgKHRoaXMub25DaGFuZ2VQcm9wYWdhdGUpIHtcbiAgICAgIHRoaXMub25DaGFuZ2VQcm9wYWdhdGUodmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9sZFZhbHVlVG9Nb2RlbCAhPT0gdGhpcy52YWx1ZVRvTW9kZWwpIHtcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEFybWF6ZW5hciBvIHZhbG9yIGFudGlnbyBkbyBtb2RlbFxuICAgIHRoaXMub2xkVmFsdWVUb01vZGVsID0gdGhpcy52YWx1ZVRvTW9kZWw7XG4gIH1cblxuICBzZWFyY2hCeUlkKHZhbHVlKSB7XG4gICAgbGV0IGNoZWNrZWRWYWx1ZSA9IHZhbHVlO1xuXG4gICAgaWYgKHR5cGVvZiBjaGVja2VkVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjaGVja2VkVmFsdWUgPSBjaGVja2VkVmFsdWUudHJpbSgpO1xuICAgIH1cblxuICAgIGlmIChjaGVja2VkVmFsdWUgIT09ICcnKSB7XG4gICAgICBjb25zdCBvbGREaXNhYmxlID0gdGhpcy5kaXNhYmxlZDtcbiAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xuXG4gICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgIC8vIDpUT0RPOiBSZXRpcmFyIG5vIGZ1dHVybyBwb2lzIGVzc2Ugc2V0VGltZW91dCBmb2kgZmVpdG9cbiAgICAgICAgLy8gcG9pcyBxdWFuZG8gbyBjYW1wbyDDqSBhY2lvbmFkbyBwZWxvcyBtw6l0b2RvcyBzZXRWYWx1ZSBvdSBwYXRjaFZhbHVlXG4gICAgICAgIC8vIGEgbXVkYW7Dp2EgbsOjbyDDqSBkZXRlY3RhZGFcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvbnRyb2wubWFya0FzUGVuZGluZygpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5nZXRTdWJzY3JpcHRpb24gPSB0aGlzLnNlcnZpY2VcbiAgICAgICAgLmdldE9iamVjdEJ5VmFsdWUodmFsdWUsIHRoaXMuZmlsdGVyUGFyYW1zKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gb2xkRGlzYWJsZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICBlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50Py5sZW5ndGggfHwgKCFBcnJheS5pc0FycmF5KGVsZW1lbnQpICYmIGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnQpICYmIGVsZW1lbnQubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlzY2xhaW1lcnMoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0TW9kZWwodGhpcy5tdWx0aXBsZSA/IGVsZW1lbnQgOiBbZWxlbWVudF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jbGVhbk1vZGVsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsZWFuTW9kZWwoKTtcbiAgICAgICAgICAgIHRoaXMub25FcnJvci5lbWl0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYW5Nb2RlbCgpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKGFic3RyYWN0Q29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgaWYgKHJlcXVpcmVkRmFpbGVkKHRoaXMucmVxdWlyZWQsIHRoaXMuZGlzYWJsZWQsIGFic3RyYWN0Q29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlcXVpcmVkOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlPy5sZW5ndGggfHwgKCFBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZSkpIHtcbiAgICAgIC8vIEVzdGEgY29uZGnDp8OjbyDDqSBleGVjdXRhZGEgc29tZW50ZSBxdWFuZG8gw6kgcGFzc2FkbyBvIElEIHBhcmEgcmVhbGl6YXIgYSBidXNjYSBwZWxvIElELlxuICAgICAgdGhpcy5zZWFyY2hCeUlkKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGVhblZpZXdWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldG9ybmEgbyBTdWJzY3JpYmVyIGRhIHByb3ByaWVkYWRlIGdldFN1YnNjcmlwdGlvbiBxdWUgb2NvcnJlXG4gIC8vIG5vIGV2ZW50byBkZSBibHVyIHF1ZSBleGVjdXRhIG8gbcOpdG9kbyBzZWFyY2hFdmVudCgpLlxuICBnZXRTdWJzY3JpcHRpb25GdW5jdGlvbigpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLmdldFN1YnNjcmlwdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhblZpZXdWYWx1ZSgpIHtcbiAgICB0aGlzLnNldERpc2NsYWltZXJzKFtdKTtcbiAgICB0aGlzLnNldFZpZXdWYWx1ZSgnJywge30pO1xuICAgIHRoaXMub2xkVmFsdWUgPSAnJztcbiAgICB0aGlzLnZhbHVlVG9Nb2RlbCA9IG51bGw7XG4gIH1cblxuICAvLyBGb3JtYXRhIGEgbGFiZWwgZG8gY2FtcG8uXG4gIHByb3RlY3RlZCBnZXRGb3JtYXR0ZWRMYWJlbCh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUgPyB0aGlzLmtleXNEZXNjcmlwdGlvbi5tYXAoY29sdW1uID0+IHZhbHVlW2NvbHVtbl0pLmpvaW4oJyAtICcpIDogJyc7XG4gIH1cblxuICAvLyBDaGFtYSBvIG3DqXRvZG8gd3JpdGVWYWx1ZSBlIHByZWVuY2hlIG8gbW9kZWwuXG4gIHByb3RlY3RlZCBzZWxlY3RNb2RlbChvcHRpb25zOiBBcnJheTxhbnk+KSB7XG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFsuLi5vcHRpb25zXTtcblxuICAgICAgY29uc3QgbmV3TW9kZWwgPSB0aGlzLm11bHRpcGxlID8gb3B0aW9ucy5tYXAob3B0aW9uID0+IG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdKSA6IG9wdGlvbnNbMF07XG4gICAgICB0aGlzLnNlbGVjdFZhbHVlKG5ld01vZGVsKTtcblxuICAgICAgaWYgKG9wdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHRoaXMub2xkVmFsdWUgPSBvcHRpb25zWzBdW3RoaXMuZmllbGRMYWJlbF07XG4gICAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKHRoaXMuZ2V0Rm9ybWF0dGVkTGFiZWwob3B0aW9uc1swXSksIG9wdGlvbnNbMF0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLmNsZWFuVmlld1ZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlTW9kZWwobW9kZWw6IGFueSkge1xuICAgIGlmICh0aGlzLnZhbGlkYXRvckNoYW5nZSkge1xuICAgICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UobW9kZWwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0U2VydmljZShzZXJ2aWNlOiBQb0xvb2t1cEZpbHRlciB8IHN0cmluZykge1xuICAgIGlmIChpc1R5cGVvZihzZXJ2aWNlLCAnb2JqZWN0JykpIHtcbiAgICAgIHRoaXMuc2VydmljZSA9IDxQb0xvb2t1cEZpbHRlclNlcnZpY2U+c2VydmljZTtcbiAgICB9XG5cbiAgICBpZiAoc2VydmljZSAmJiBpc1R5cGVvZihzZXJ2aWNlLCAnc3RyaW5nJykpIHtcbiAgICAgIHRoaXMuc2VydmljZSA9IHRoaXMuZGVmYXVsdFNlcnZpY2U7XG4gICAgICB0aGlzLnNlcnZpY2Uuc2V0Q29uZmlnKHNlcnZpY2UsIHRoaXMuZmllbGRWYWx1ZSwgdGhpcy5tdWx0aXBsZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb250cm9sKCkge1xuICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsLCB0aGlzLmluamVjdE9wdGlvbnMpO1xuXG4gICAgaWYgKG5nQ29udHJvbCkge1xuICAgICAgdGhpcy5jb250cm9sID0gbmdDb250cm9sLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNvbHVtbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWVsZExhYmVsKSB7XG4gICAgICB0aGlzLmtleXNEZXNjcmlwdGlvbiA9IFt0aGlzLmZpZWxkTGFiZWxdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtleXNEZXNjcmlwdGlvbiA9IFtdO1xuXG4gICAgICB0aGlzLmtleXNEZXNjcmlwdGlvbiA9IHRoaXMuY29sdW1ucy5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50LmZpZWxkTGFiZWwpLm1hcChlbGVtZW50ID0+IGVsZW1lbnQucHJvcGVydHkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEF0cmlidWkgdW0gb3UgbWFpcyB2YWxvcmVzIGFvIGNhbXBvLlxuICBhYnN0cmFjdCBzZXRWaWV3VmFsdWUodmFsdWU6IGFueSwgb2JqZWN0OiBhbnkpOiB2b2lkO1xuXG4gIC8vIE3DqXRvZG8gY29tIGEgaW1wbGVtZW50YcOnw6NvIHBhcmEgYWJyaXIgbyBsb29rdXAuXG4gIGFic3RyYWN0IG9wZW5Mb29rdXAoKTogdm9pZDtcblxuICBhYnN0cmFjdCBzZXREaXNjbGFpbWVycyhhKTtcbiAgYWJzdHJhY3QgdXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG59XG4iXX0=
|
|
762
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWxvb2t1cC9wby1sb29rdXAtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUVOLFFBQVEsRUFDUixLQUFLLEVBSUwsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUMsU0FBUyxFQUFpQyxNQUFNLGdCQUFnQixDQUFDO0FBRWpILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU8vQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7OztBQUVsRjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxNQUFNLE9BQWdCLHFCQUFxQjtJQTJlL0I7SUFDa0I7SUFDbkI7SUExZVQ7Ozs7Ozs7Ozs7T0FVRztJQUM0RCxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRTFGOzs7OztPQUtHO0lBQ2UsS0FBSyxDQUFVO0lBRWpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMkNHO0lBQ2tCLFFBQVEsQ0FBb0I7SUFFakQsK0JBQStCO0lBQ2QsSUFBSSxDQUFVO0lBRS9CLHNFQUFzRTtJQUN0RSxJQUE0QixXQUFXLENBQUMsS0FBYTtRQUNuRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlB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QUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQVlLLFVBQVU7a0JBQXpFLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQWExQyxPQUFPO2tCQUExQixLQUFLO21CQUFDLFdBQVc7WUFpQjRDLFFBQVE7a0JBQXJFLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQWNPLGFBQWE7a0JBQS9FLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBTTlDLE9BQU87a0JBQXpCLE1BQU07bUJBQUMsU0FBUztZQVVLLFFBQVE7a0JBQTdCLE1BQU07bUJBQUMsWUFBWTtZQVVBLE1BQU07a0JBQXpCLE1BQU07bUJBQUMsVUFBVTtZQVdrQixvQkFBb0I7a0JBQXZELE1BQU07bUJBQUMsMEJBQTBCO1lBV0Usb0JBQW9CO2tCQUF2RCxNQUFNO21CQUFDLDBCQUEwQjtZQXdGSCxhQUFhO2tCQUEzQyxLQUFLO21CQUFDLGtCQUFrQjtZQWtCTyxjQUFjO2tCQUE3QyxLQUFLO21CQUFDLG1CQUFtQjtZQWtCRCxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUFnQk8sWUFBWTtrQkFBckMsS0FBSzttQkFBQyxpQkFBaUI7WUFVQyxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbmplY3RPcHRpb25zLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzJztcbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4sIGlzVHlwZW9mIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyByZXF1aXJlZEZhaWxlZCB9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgUG9Mb29rdXBBZHZhbmNlZEZpbHRlciB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1sb29rdXAtYWR2YW5jZWQtZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cENvbHVtbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1sb29rdXAtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cEZpbHRlciB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1sb29rdXAtZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cExpdGVyYWxzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1sb29rdXAtZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBNb2RhbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLWxvb2t1cC1tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5TcGFjaW5nIH0gZnJvbSAnLi4vLi4vcG8tdGFibGUvZW51bXMvcG8tdGFibGUtc3BhY2luZy5lbnVtJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBDb21wb25lbnRlIHV0aWxpemFkbyBwYXJhIGFicmlyIHVtYSBqYW5lbGEgZGUgYnVzY2EgY29tIHVtYSB0YWJlbGEgcXVlIGxpc3RhIGRhZG9zIGRlIHVtIHNlcnZpw6dvLiBOZXN0YSBqYW5lbGEgw6kgcG9zc8OtdmVsIGJ1c2NhciBlXG4gKiBzZWxlY2lvbmFyIHVtIG91IG1haXMgcmVnaXN0cm9zIHF1ZSBzZXLDo28gZW52aWFkb3MgcGFyYSBvIGNhbXBvLiBPIGBwby1sb29rdXBgIHBlcm1pdGUgcXVlIG8gdXN1w6FyaW8gZGlnaXRlIHVtIHZhbG9yIGUgcHJlc3Npb25lIGEgdGVjbGEgKlRBQiogcGFyYVxuICogYnVzY2FyIHVtIHJlZ2lzdHJvLlxuICpcbiAqID4gQ2FzbyBvIGNhbXBvIHNlamEgaW5pY2lhZG8gb3UgcHJlZW5jaGlkbyBjb20gdW0gdmFsb3IgaW5leGlzdGVudGUgbmEgYnVzY2EsIG8gbWVzbW8gc2Vyw6EgbGltcGFkby5cbiAqIE5vIHNlZ3VuZG8gY2FzbyBvY29ycmVyw6EgYXDDs3MgZXN0ZSBwZXJkZXIgbyBmb2NvOyBhbWJvcyBvcyBjYXNvcyBvIGNhbXBvIGZpY2Fyw6EgaW52w6FsaWRvIHF1YW5kbyByZXF1ZXJpZG8uXG4gKlxuICogPiBFbnF1YW50byBvIGNvbXBvbmVudGUgcmVhbGl6YSBhIHJlcXVpc2nDp8OjbyBhbyBzZXJ2aWRvciwgbyBjb21wb25lbnRlIGZpY2Fyw6EgZGVzYWJpbGl0YWRvIGUgY29tIG8gc3RhdHVzIGludGVybm8gZG9cbiAqIFttb2RlbG9dKGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9mb3JtLXZhbGlkYXRpb24jY3JlYXRpbmctYXN5bmNocm9ub3VzLXZhbGlkYXRvcnMpIGNvbW8gYHBlbmRpbmdgLlxuICpcbiAqIEVzdGUgY29tcG9uZW50ZSBuw6NvIMOpIHJlY29tZW5kYWRvIHF1YW5kbyBhIGJ1c2NhIGRvcyBkYWRvcyBwb3NzdWlyIHBvdWNhcyBpbmZvcm1hw6fDtWVzLCBwYXJhIGlzc28gdXRpbGl6ZSBvdXRyb3MgY29tcG9uZW50ZXMgY29tbyBvXG4gKiBgcG8tc2VsZWN0YCBvdSBvIGBwby1jb21ib2AuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvTG9va3VwQmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmFsaWRhdG9yLCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXNcbntcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXBsaWNhIGZvY28gbm8gZWxlbWVudG8gYW8gc2VyIGluaWNpYWRvLlxuICAgKlxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWF1dG8tZm9jdXMnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgYXV0b0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIExhYmVsIGRvIGNhbXBvLlxuICAgKlxuICAgKiA+IFF1YW5kbyB1dGlsaXphciBlc3RhIHByb3ByaWVkYWRlIG8gc2V1IHZhbG9yIHNlcsOhIHV0aWxpemFkbyBjb21vIHTDrXR1bG8gZGEgbW9kYWwgZG8gY29tcG9uZW50ZSBjYXNvIG7Do28gdGVuaGFcbiAgICogc2lkbyBkZWZpbmlkbyB1bSBgbW9kYWxUaXRsZWAgbmEgcHJvcHJpZWRhZGUgYHAtbGl0ZXJhbHNgLlxuICAgKi9cbiAgQElucHV0KCdwLWxhYmVsJykgbGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBPYmpldG8gY29tIGFzIGxpdGVyYWlzIHVzYWRhcyBubyBgcG8tbG9va3VwYC5cbiAgICpcbiAgICogRXhpc3RlbSBkdWFzIG1hbmVpcmFzIGRlIGN1c3RvbWl6YXIgbyBjb21wb25lbnRlLCBwYXNzYW5kbyB1bSBvYmpldG8gY29tIHRvZGFzIGFzIGxpdGVyYWlzIGRpc3BvbsOtdmVpczpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9Mb29rdXBMaXRlcmFscyA9IHtcbiAgICogICAgbW9kYWxQcmltYXJ5QWN0aW9uTGFiZWw6ICdTZWxlY3QnLFxuICAgKiAgICBtb2RhbFNlY29uZGFyeUFjdGlvbkxhYmVsOiAnQ2FuY2VsJyxcbiAgICogICAgbW9kYWxQbGFjZWhvbGRlcjogJ1NlYXJjaCBWYWx1ZScsXG4gICAqICAgIG1vZGFsVGFibGVOb0NvbHVtbnM6ICdObyBjb2x1bW5zJyxcbiAgICogICAgbW9kYWxUYWJsZU5vRGF0YTogJ05vIGRhdGEnLFxuICAgKiAgICBtb2RhbFRhYmxlTG9hZGluZ0RhdGE6ICdMb2FkaW5nIGRhdGEnLFxuICAgKiAgICBtb2RhbFRhYmxlTG9hZE1vcmVEYXRhOiAnTG9hZCBtb3JlJyxcbiAgICogICAgbW9kYWxUaXRsZTogJ1NlbGVjdCBhIHVzZXInLFxuICAgKiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoOiAnQWR2YW5jZWQgc2VhcmNoJyxcbiAgICogICAgbW9kYWxBZHZhbmNlZFNlYXJjaFRpdGxlOiAnQWR2YW5jZWQgc2VhcmNoJyxcbiAgICogICAgbW9kYWxBZHZhbmNlZFNlYXJjaFByaW1hcnlBY3Rpb25MYWJlbDogJ0ZpbHRlcicsXG4gICAqICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hTZWNvbmRhcnlBY3Rpb25MYWJlbDogJ1JldHVybicsXG4gICAqICAgIG1vZGFsRGlzY2xhaW1lckdyb3VwVGl0bGU6ICdQcmVzZW50aW5nIHJlc3VsdHMgZmlsdGVyZWQgYnk6J1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIE91IHBhc3NhbmRvIGFwZW5hcyBhcyBsaXRlcmFpcyBxdWUgZGVzZWphIGN1c3RvbWl6YXI6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvTG9va3VwTGl0ZXJhbHMgPSB7XG4gICAqICAgIG1vZGFsUHJpbWFyeUFjdGlvbkxhYmVsOiAnU2VsZWN0J1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIEUgcGFyYSBjYXJyZWdhciBhcyBsaXRlcmFpcyBjdXN0b21pemFkYXMsIGJhc3RhIGFwZW5hcyBwYXNzYXIgbyBvYmpldG8gcGFyYSBvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tbG9va3VwXG4gICAqICAgW3AtbGl0ZXJhbHNdPVwiY3VzdG9tTGl0ZXJhbHNcIj5cbiAgICogPC9wby1sb29rdXA+XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IE8gb2JqZXRvIHBhZHLDo28gZGUgbGl0ZXJhaXMgc2Vyw6EgdHJhZHV6aWRvIGRlIGFjb3JkbyBjb20gbyBpZGlvbWEgZG9cbiAgICogW2BQb0kxOG5TZXJ2aWNlYF0oL2RvY3VtZW50YXRpb24vcG8taTE4bikgb3UgZG8gYnJvd3Nlci5cbiAgICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIGxpdGVyYWxzPzogUG9Mb29rdXBMaXRlcmFscztcblxuICAvKiogVGV4dG8gZGUgYXBvaW8gZG8gY2FtcG8uICovXG4gIEBJbnB1dCgncC1oZWxwJykgaGVscD86IHN0cmluZztcblxuICAvKiogTWVuc2FnZW0gcXVlIGFwYXJlY2Vyw6EgZW5xdWFudG8gbyBjYW1wbyBuw6NvIGVzdGl2ZXIgcHJlZW5jaGlkby4gKi9cbiAgQElucHV0KCdwLXBsYWNlaG9sZGVyJykgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHZhbHVlIHx8ICcnO1xuICB9XG5cbiAgZ2V0IHBsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIC8qKiBOb21lIGUgSWQgZG8gY29tcG9uZW50ZS4gKi9cbiAgQElucHV0KCduYW1lJykgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIGEgY29sdW5hIHF1ZSBzZXLDoSB1dGlsaXphZGEgY29tbyB2YWxvciBkbyBjYW1wby5cbiAgICpcbiAgICogPiBBdGVuw6fDo286IENhc28gbsOjbyBzZWphIHBhc3NhZGEgb3UgdGVuaGEgbyBjb250ZcO6ZG8gaW5jb3JyZXRvLCBuw6NvIGlyw6EgYXR1YWxpemFyIG8gbW9kZWwgZG8gZm9ybXVsw6FyaW8uXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtdmFsdWUnKSBmaWVsZFZhbHVlOiBzdHJpbmc7XG5cbiAgLyoqIEluZGljYSBhIGNvbHVuYSBxdWUgc2Vyw6EgdXRpbGl6YWRhIGNvbW8gZGVzY3Jpw6fDo28gZG8gY2FtcG8gZSBjb21vIGZpbHRybyBkZW50cm8gZGEgamFuZWxhLiAqL1xuICBASW5wdXQoJ3AtZmllbGQtbGFiZWwnKSBzZXQgZmllbGRMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmllbGRMYWJlbCA9IHZhbHVlO1xuICAgIHRoaXMua2V5c0Rlc2NyaXB0aW9uID0gW3RoaXMuZmllbGRMYWJlbF07XG4gIH1cblxuICBnZXQgZmllbGRMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRMYWJlbDtcbiAgfVxuXG4gIC8qKiBWYWxvciBxdWUgc2Vyw6EgcmVwYXNzYWRvIGNvbW8gcGFyw6JtZXRybyBwYXJhIGEgVVJMIG91IGFvcyBtw6l0b2RvcyBkbyBzZXJ2acOnbyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgYFBvTG9va3VwRmlsdGVyYC4gKi9cbiAgQElucHV0KCdwLWZpbHRlci1wYXJhbXMnKSBmaWx0ZXJQYXJhbXM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRm9ybWF0byBkZSBleGliacOnw6NvIGRvIGNhbXBvLlxuICAgKlxuICAgKiBSZWNlYmUgdW1hIGZ1bsOnw6NvIHF1ZSBkZXZlIHJldG9ybmFyIHVtYSAqc3RyaW5nKiBjb20gby9vcyB2YWxvcmVzIGRvIG9iamV0byBmb3JtYXRhZG9zIHBhcmEgZXhpYmnDp8OjbywgcG9yIGV4ZW1wbG86XG4gICAqXG4gICAqIGBgYFxuICAgKiBmaWVsZEZvcm1hdChvYmopIHtcbiAgICogICByZXR1cm4gYCR7b2JqLmlkfSAtICR7b2JqLm5hbWV9YDtcbiAgICogfVxuICAgKiBgYGBcbiAgICogPiBFc3RhIHByb3ByaWVkYWRlIHNvYnJlcMO1ZSBvIHZhbG9yIGRhIHByb3ByaWVkYWRlIGBwLWZpZWxkLWxhYmVsYCBuYSBkZXNjcmnDp8OjbyBkbyBjYW1wby5cbiAgICpcbiAgICogUG9kZS1zZSBpbmZvcm1hciB1bWEgbGlzdGEgZGUgcHJvcHJpZWRhZGVzIHF1ZSBkZXNlamEgZXhpYmlyIGNvbW8gZGVzY3Jpw6fDo28gZG8gY2FtcG8sIFBvciBleGVtcGxvOlxuICAgKiBgYGBcbiAgICogPHBvLWxvb2t1cFxuICAgKiAgLi4uXG4gICAqICBbcC1maWVsZC1mb3JtYXRdPVwiWydpZCcsJ25pY2tuYW1lJ11cIlxuICAgKiAgLi4uXG4gICAqID5cbiAgICpcbiAgICogT2JqZXRvIHJldG9ybmFkbzpcbiAgICogICB7XG4gICAqICAgICAgaWQ6MTIzLFxuICAgKiAgICAgIG5hbWU6ICdLYWthcm90bycsXG4gICAqICAgICAgbmlja25hbWU6ICdHb2t1JyxcbiAgICogICB9XG4gICAqIEFwcmVzZW50YcOnw6NvIG5vIGNhbXBvOiAxMjMgLSBHb2t1XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IFNlcsOhIHV0aWxpemFkbyBgIC0gYCBjb21vIHNlcGFyYWRvci5cbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC1mb3JtYXQnKSBmaWVsZEZvcm1hdD86ICgodmFsdWUpID0+IHN0cmluZykgfCBBcnJheTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBMaXN0YSBkYXMgY29sdW5hcyBkYSB0YWJlbGEuXG4gICAqIEVzc2EgcHJvcHJpZWRhZGUgZGV2ZSByZWNlYmVyIHVtIGFycmF5IGRlIG9iamV0b3MgcXVlIGltcGxlbWVudGFtIGEgaW50ZXJmYWNlIFBvTG9va3VwQ29sdW1uLlxuICAgKi9cbiAgQElucHV0KCdwLWNvbHVtbnMnKSBjb2x1bW5zPzogQXJyYXk8UG9Mb29rdXBDb2x1bW4+O1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9wY2lvbmFsIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTyBjYW1wbyBjb250ZXIgYHAtcmVxdWlyZWRgO1xuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbmFsJykgb3B0aW9uYWw6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTGlzdGEgZGUgb2JqZXRvcyBkb3MgY2FtcG9zIHF1ZSBzZXLDo28gY3JpYWRvcyBuYSBidXNjYSBhdmFuw6dhZGEuXG4gICAqXG4gICAqID4gQ2FzbyBuw6NvIHNlamEgcGFzc2FkbyB1bSBvYmpldG8gb3UgZW50w6NvIGVsZSBlc3RlamEgZW0gYnJhbmNvIG8gbGluayBkZSBidXNjYSBhdmFuw6dhZGEgZmljYXLDoSBlc2NvbmRpZG8uXG4gICAqXG4gICAqIEV4ZW1wbG8gZGUgVVJMIGNvbSBidXNjYSBhdmFuw6dhZGE6XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJm5hbWU9VG9ueSUyMFN0YXJrJm5pY2tuYW1lPUhvbWVtJTIwZGUlMjBGZXJyb1xuICAgKiBgYGBcbiAgICpcbiAgICogQ2FzbyBhbGd1bSBwYXLDom1ldHJvIHNlamEgdW1hIGxpc3RhLCBhIGNvbmNhdGVuYcOnw6NvIMOpIGZlaXRhIHV0aWxpemFuZG8gdsOtcmd1bGEuXG4gICAqIEV4ZW1wbG86XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJm5hbWU9VG9ueSUyMFN0YXJrLFBldGVyJTIwUGFya2VyLEdvaGFuXG4gICAqIGBgYFxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWFkdmFuY2VkLWZpbHRlcnMnKSBhZHZhbmNlZEZpbHRlcnM6IEFycmF5PFBvTG9va3VwQWR2YW5jZWRGaWx0ZXI+O1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgcXVlIG8gZ2VyZW5jaWFkb3IgZGUgY29sdW5hcywgcmVzcG9uc8OhdmVsIHBlbGEgZGVmaW5pw6fDo28gZGUgcXVhaXMgY29sdW5hcyBzZXLDo28gZXhpYmlkYXMsIHNlamEgZXNjb25kaWRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtaGlkZS1jb2x1bW5zLW1hbmFnZXInLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSlcbiAgaGlkZUNvbHVtbnNNYW5hZ2VyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXRpdmEgYSBmdW5jaW9uYWxpZGFkZSBkZSBzY3JvbGwgaW5maW5pdG8gcGFyYSBhIHRhYmVsYSBleGliaWRhIG5vIHJldG9ybm8gZGEgY29uc3VsdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1pbmZpbml0ZS1zY3JvbGwnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgaW5maW5pdGVTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogRXhpYmUgdW0gw61jb25lIHF1ZSBwZXJtaXRlIGxpbXBhciBvIGNhbXBvLiAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtY2xlYW4nLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgY2xlYW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIGEgc2VsZcOnw6NvIGRlIG3Dumx0aXBsb3MgaXRlbnMuXG4gICAqXG4gICAqID4gUXVhbmRvIGhhYmlsaXRhZG8gbyB2YWxvciBkbyBjYW1wbyBwYXNzYXLDoSBhIHNlciB1bWEgbGlzdGEgZGUgdmFsb3JlcywgcG9yIGV4ZW1wbG86IGBbIDEyMzQ1LCA2Nzg5MCBdYFxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtbXVsdGlwbGUnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgcXVlIGEgYWx0dXJhIGRvIGNvbXBvbmVudGUgc2Vyw6EgYXV0byBhanVzdMOhdmVsLCBwb3NzdWluZG8gdW1hIGFsdHVyYSBtaW5pbWEgcG9yw6ltIGEgYWx0dXJhIG3DoXhpbWEgc2Vyw6EgZGUgYWNvcmRvXG4gICAqIGNvbSBvIG7Dum1lcm8gZGUgaXRlbnMgc2VsZWNpb25hZG9zIGUgYSBleHRlbnPDo28gZG9zIG1lc21vcywgbWFudGVuZG8tb3Mgc2VtcHJlIHZpc8OtdmVpcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWF1dG8taGVpZ2h0JywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGF1dG9IZWlnaHQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBSZXNwb25zw6F2ZWwgcG9yIGFwbGljYXIgZXNwYcOnYW1lbnRvIG5hcyBjb2x1bmFzIGRhIHRhYmVsYSBjb250aWRhIG5vIGxvb2t1cC5cbiAgICpcbiAgICogRGV2ZSByZWNlYmVyIHVtIGRvcyB2YWxvcmVzIGRvIGVudW0gYFBvVGFibGVDb2x1bW5TcGFjaW5nYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYG1lZGl1bWBcbiAgICovXG4gIEBJbnB1dCgncC1zcGFjaW5nJykgc3BhY2luZzogUG9UYWJsZUNvbHVtblNwYWNpbmcgPSBQb1RhYmxlQ29sdW1uU3BhY2luZy5NZWRpdW07XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSGFiaWxpdGEgb3UgZGVzYWJpbGl0YSBhIHF1ZWJyYSBhdXRvbcOhdGljYSBkZSB0ZXh0by4gUXVhbmRvIGF0aXZhZGEsIG8gdGV4dG8gcXVlIGV4Y2VkZVxuICAgKiBvIGVzcGHDp28gZGlzcG9uw612ZWwgw6kgdHJhbnNmZXJpZG8gcGFyYSBhIHByw7N4aW1hIGxpbmhhIGVtIHBvbnRvcyBhcHJvcHJpYWRvcyBwYXJhIHVtYVxuICAgKiBsZWl0dXJhIGNsYXJhLlxuICAgKlxuICAgKiBFc3RhIHByb3ByaWVkYWRlIGFwbGljYS1zZSBhbyB0ZXh0byBjb250aWRvIG5hcyBjw6lsdWxhcyBkYSB0YWJlbGEuXG4gICAqXG4gICAqID4gSW5jb21wYXTDrXZlbCBjb20gYHZpcnR1YWwtc2Nyb2xsYCwgcXVlIHJlcXVlciBhbHR1cmEgZml4YSBuYXMgbGluaGFzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtdGV4dC13cmFwJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIHRleHRXcmFwPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEhhYmlsaXRhIG8gYHZpcnR1YWwtc2Nyb2xsYCBuYSB0YWJlbGEgcGFyYSBtZWxob3JhciBhIHBlcmZvcm1hbmNlIGNvbSBncmFuZGVzIHZvbHVtZXMgZGUgZGFkb3MuXG4gICAqIEEgYWx0dXJhIGRhIHRhYmVsYSBqw6Egw6kgcHLDqS1kZWZpbmlkYSwgcG9ydGFudG8gbyBgdmlydHVhbC1zY3JvbGxgIHNlcsOhIGF0aXZhZG8gYXV0b21hdGljYW1lbnRlLlxuICAgKlxuICAgKiA+IEluY29tcGF0w612ZWwgY29tIGBwLXRleHQtd3JhcGAgZSBgbWFzdGVyLWRldGFpbGAsIHBvaXMgbyBgdmlydHVhbC1zY3JvbGxgIGV4aWdlIGFsdHVyYSBmaXhhIG5hcyBsaW5oYXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLXZpcnR1YWwtc2Nyb2xsJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIHZpcnR1YWxTY3JvbGw/OiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogRXZlbnRvIHNlcsOhIGRpc3BhcmFkbyBxdWFuZG8gb2NvcnJlciBhbGd1bSBlcnJvIG5hIHJlcXVpc2nDp8OjbyBkZSBidXNjYSBkbyBpdGVtLlxuICAgKiBTZXLDoSBwYXNzYWRvIHBvciBwYXLDom1ldHJvIG8gb2JqZXRvIGRlIGVycm8gcmV0b3JuYWRvLlxuICAgKi9cbiAgQE91dHB1dCgncC1lcnJvcicpIG9uRXJyb3I6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIHNlcsOhIGRpc3BhcmFkbyBxdWFuZG8gb2NvcnJlciBhbGd1bWEgc2VsZcOnw6NvLlxuICAgKiBTZXLDoSBwYXNzYWRvIHBvciBwYXLDom1ldHJvIG8gb2JqZXRvIGNvbSBvIHZhbG9yIHNlbGVjaW9uYWRvLlxuICAgKi9cbiAgQE91dHB1dCgncC1zZWxlY3RlZCcpIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqICBFdmVudG8gcXVlIHNlcsOhIGRpc3BhcmFkbyBhbyBhbHRlcmFyIG8gbW9kZWwuXG4gICAqICBQb3IgcGFyw6JtZXRybyBzZXLDoSBwYXNzYWRvIG8gbm92byB2YWxvci5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlJykgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gZmVjaGFyIG8gcG9wb3ZlciBkbyBnZXJlbmNpYWRvciBkZSBjb2x1bmFzIGFww7NzIGFsdGVyYXIgYXMgY29sdW5hcyB2aXPDrXZlaXMuXG4gICAqXG4gICAqIE8gY29tcG9uZW50ZSBlbnZpYSBjb21vIHBhcsOibWV0cm8gdW0gYXJyYXkgZGUgc3RyaW5nIGNvbSBhcyBjb2x1bmFzIHZpc8OtdmVpcyBhdHVhbGl6YWRhcy5cbiAgICogUG9yIGV4ZW1wbG86IFtcImlkQ2FyZFwiLCBcIm5hbWVcIiwgXCJoaXJlU3RhdHVzXCIsIFwiYWdlXCJdLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UtdmlzaWJsZS1jb2x1bW5zJykgY2hhbmdlVmlzaWJsZUNvbHVtbnMgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PHN0cmluZz4+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBjbGljYXIgbm8gYm90w6NvIGRlIHJlc3RhdXJhciBwYWRyw6NvIG5vIGdlcmVuY2lhZG9yIGRlIGNvbHVuYXMuXG4gICAqXG4gICAqIE8gY29tcG9uZW50ZSBlbnZpYSBjb21vIHBhcsOibWV0cm8gdW0gYXJyYXkgZGUgc3RyaW5nIGNvbSBhcyBjb2x1bmFzIGNvbmZpZ3VyYWRhcyBpbmljaWFsbWVudGUuXG4gICAqIFBvciBleGVtcGxvOiBbXCJpZENhcmRcIiwgXCJuYW1lXCIsIFwiaGlyZVN0YXR1c1wiLCBcImFnZVwiXS5cbiAgICovXG4gIEBPdXRwdXQoJ3AtcmVzdG9yZS1jb2x1bW4tbWFuYWdlcicpIGNvbHVtblJlc3RvcmVNYW5hZ2VyID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxTdHJpbmc+PigpO1xuXG4gIHNlcnZpY2U6IGFueTtcblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWRPcHRpb25zID0gW107XG4gIHByb3RlY3RlZCBnZXRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIGtleXNEZXNjcmlwdGlvbjogQXJyYXk8YW55PjtcbiAgcHJvdGVjdGVkIG9sZFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgcHJvdGVjdGVkIHZhbHVlVG9Nb2RlbDtcbiAgcHJvdGVjdGVkIG9sZFZhbHVlVG9Nb2RlbCA9IG51bGw7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBwcm90ZWN0ZWQgb25Ub3VjaGVkOiBhbnkgPSBudWxsO1xuICBwcm90ZWN0ZWQgcmVzaXplTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZpZWxkTGFiZWw6IHN0cmluZztcbiAgcHJpdmF0ZSBfZmlsdGVyU2VydmljZTogUG9Mb29rdXBGaWx0ZXIgfCBzdHJpbmc7XG4gIHByaXZhdGUgX25vQXV0b2NvbXBsZXRlOiBib29sZWFuO1xuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX3JlcXVpcmVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9hdXRvSGVpZ2h0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBhdXRvSGVpZ2h0SW5pdGlhbFZhbHVlOiBib29sZWFuO1xuICBwcml2YXRlIG9uQ2hhbmdlUHJvcGFnYXRlOiBhbnkgPSBudWxsO1xuICBwcml2YXRlIHZhbGlkYXRvckNoYW5nZTogYW55O1xuXG4gIHByaXZhdGUgY29udHJvbCE6IEFic3RyYWN0Q29udHJvbDtcblxuICBwcml2YXRlIGluamVjdE9wdGlvbnM6IEluamVjdE9wdGlvbnMgPSB7XG4gICAgc2VsZjogdHJ1ZVxuICB9O1xuXG4gIC8qKlxuICAgKiBTZXJ2acOnbyByZXNwb25zw6F2ZWwgcG9yIGJ1c2NhciBvcyBkYWRvcyBkYSB0YWJlbGEgbmEgamFuZWxhLiBQb2RlIHNlciBpbmZvcm1hZG8gdW0gc2VydmnDp28gcXVlIGltcGxlbWVudGUgYSBpbnRlcmZhY2VcbiAgICogYFBvTG9va3VwRmlsdGVyYCBvdSB1bWEgVVJMLlxuICAgKlxuICAgKiBRdWFuZG8gdXRpbGl6YWRhIHVtYSBVUkwgZGUgdW0gc2VydmnDp28sIHNlcsOhIGNvbmNhdGVuYWRhIG5lc3RhIFVSTCBvIHZhbG9yIHF1ZSBkZXNlamEtc2UgZmlsdHJhciwgcG9yIGV4ZW1wbG86XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJmZpbHRlcj1QZXRlclxuICAgKiBgYGBcbiAgICpcbiAgICogQ2FzbyB1dGlsaXphciBvcmRlbmHDp8OjbywgYSBjb2x1bmEgb3JkZW5hZGEgc2Vyw6EgZW52aWFkYSBhdHJhdsOpcyBkbyBwYXLDom1ldHJvIGBvcmRlcmAsIHBvciBleGVtcGxvOlxuICAgKiAtIENvbHVuYSBkZWNyZXNjZW50ZTpcbiAgICogYGBgXG4gICAqICB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJmZpbHRlcj1QZXRlciZvcmRlcj0tbmFtZVxuICAgKiBgYGBcbiAgICpcbiAgICogLSBDb2x1bmEgYXNjZW5kZW50ZTpcbiAgICogYGBgXG4gICAqICB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJmZpbHRlcj1QZXRlciZvcmRlcj1uYW1lXG4gICAqIGBgYFxuICAgKlxuICAgKiBTZSBmb3IgZGVmaW5pZG8gYSBwcm9wcmllZGFkZSBgcC1maWx0ZXItcGFyYW1zYCwgbyBtZXNtbyB0YW1iw6ltIHNlcsOhIGNvbmNhdGVuYWRvLiBQb3IgZXhlbXBsbywgcGFyYSBvXG4gICAqIHBhcsOibWV0cm8gYHsgYWdlOiAyMyB9YCBhIFVSTCBmaWNhcmlhOlxuICAgKlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0yMCZhZ2U9MjMmZmlsdGVyPVBldGVyXG4gICAqIGBgYFxuICAgKlxuICAgKiBBbyBpbmljaWFyIG8gY2FtcG8gY29tIHZhbG9yLCBvcyByZWdpc3Ryb3Mgc2Vyw6NvIGJ1c2NhZG9zIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKiBgYGBcbiAgICogbW9kZWwgPSAxMjM0O1xuICAgKlxuICAgKiBHRVQgdXJsLzEyMzRcbiAgICogYGBgXG4gICAqXG4gICAqIENhc28gZXN0aXZlciBjb20gbcO6bHRpcGxhIHNlbGXDp8OjbyBoYWJpbGl0YWRhOlxuICAgKiBgYGBcbiAgICogbW9kZWwgPSBbMTIzNCwgNTY3OF1cbiAgICpcbiAgICogR0VUIHVybD8ke2ZpZWxkVmFsdWV9PTEyMzQsNTY3OFxuICAgKiBgYGBcbiAgICpcbiAgICogPiBFc3RhIFVSTCBkZXZlIHJldG9ybmFyIGUgcmVjZWJlciBvcyBkYWRvcyBubyBwYWRyw6NvIGRlIFtBUEkgZG8gUE8gVUldKGh0dHBzOi8vcG8tdWkuaW8vZ3VpZGVzL2FwaSkgZSB1dGlsaXphIG9zIHZhbG9yZXNcbiAgICogZGVmaW5pZG9zIG5hcyBwcm9wcmllZGFkZXMgYHAtZmllbGQtbGFiZWxgIGUgYHAtZmllbGQtdmFsdWVgIHBhcmEgYSBjb25zdHJ1w6fDo28gZG8gYHBvLWxvb2t1cGAuXG4gICAqXG4gICAqIENhc28gbyB1c3XDoXJpbyBkaWdpdGUgdW0gdmFsb3IgZSBwcmVzc2lvbmUgYSB0ZWNsYSAqVEFCKiBwYXJhIHJlYWxpemFyIGEgYnVzY2EgZGUgdW0gcmVnaXN0cm8gZXNwZWPDrWZpY28sIG8gdmFsb3IgcXVlIHNlXG4gICAqIGRlc2VqYSBmaWx0cmFyIHNlcsOhIGNvZGlmaWNhZG8gdXRpbGl6YW5kbyBhIGZ1bsOnw6NvIFtlbmNvZGVVUklDb21wb25lbnRdKGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZW5jb2RldXJpY29tcG9uZW50LXVyaWNvbXBvbmVudClcbiAgICogZSBjb25jYXRlbmFkbyBuYSBVUkwgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwvdmFsb3IlMjBxdWUlMjBzZSUyMGRlc2VqYSUyMGZpbHRyYXJcbiAgICogYGBgXG4gICAqXG4gICAqID4gUXVhbmRvIGluZm9ybWFkbyB1bSBzZXJ2acOnbyBxdWUgaW1wbGVtZW50ZSBhIGludGVyZmFjZSBgUG9Mb29rdXBGaWx0ZXJgIG8gdHJhdGFtZW50byBkZSBlbmNvZGluZyBkbyB2YWxvciBhIHNlciBmaWx0cmFkbyBmaWNhcsOhIGEgY2FyZ28gZG8gZGVzZW52b2x2ZWRvci5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXItc2VydmljZScpIHNldCBmaWx0ZXJTZXJ2aWNlKGZpbHRlclNlcnZpY2U6IFBvTG9va3VwRmlsdGVyIHwgc3RyaW5nKSB7XG4gICAgdGhpcy5fZmlsdGVyU2VydmljZSA9IGZpbHRlclNlcnZpY2U7XG4gICAgdGhpcy5zZXRTZXJ2aWNlKHRoaXMuZmlsdGVyU2VydmljZSk7XG4gIH1cblxuICBnZXQgZmlsdGVyU2VydmljZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyU2VydmljZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBhIHByb3ByaWVkYWRlIG5hdGl2YSBgYXV0b2NvbXBsZXRlYCBkbyBjYW1wbyBjb21vIGBvZmZgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atbm8tYXV0b2NvbXBsZXRlJykgc2V0IG5vQXV0b2NvbXBsZXRlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbm9BdXRvY29tcGxldGUgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBub0F1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbm9BdXRvY29tcGxldGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgcXVlIG8gY2FtcG8gc2Vyw6Egb2JyaWdhdMOzcmlvLlxuICAgKiA+IEVzdGEgcHJvcHJpZWRhZGUgw6kgZGVzY29uc2lkZXJhZGEgcXVhbmRvIG8gaW5wdXQgZXN0w6EgZGVzYWJpbGl0YWRvIGAocC1kaXNhYmxlZClgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtcmVxdWlyZWQnKSBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvbnZlcnRUb0Jvb2xlYW4ocmVxdWlyZWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMudmFsdWVUb01vZGVsKTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIHNlIGEgaW5kaWNhw6fDo28gZGUgY2FtcG8gb2JyaWdhdMOzcmlvIHNlcsOpIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTsOjbyBwb3NzdWlyIGBwLWhlbHBgIGUvb3UgYHAtbGFiZWxgLlxuICAgKi9cbiAgQElucHV0KCdwLXNob3ctcmVxdWlyZWQnKSBzaG93UmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBxdWUgbyBjYW1wbyBzZXLDoSBkZXNhYmlsaXRhZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgQElucHV0KCdwLWRpc2FibGVkJykgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSA8YW55PmRpc2FibGVkID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKGRpc2FibGVkKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRlZmF1bHRTZXJ2aWNlOiBQb0xvb2t1cEZpbHRlclNlcnZpY2UsXG4gICAgQEluamVjdChJbmplY3RvcikgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHVibGljIHBvTG9va3VwTW9kYWxTZXJ2aWNlOiBQb0xvb2t1cE1vZGFsU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZ2V0U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmdldFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbHVtbigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0Q29udHJvbCgpO1xuICB9XG5cbiAgY2xlYW5Nb2RlbCgpIHtcbiAgICB0aGlzLmNsZWFuVmlld1ZhbHVlKCk7XG4gICAgdGhpcy5jYWxsT25DaGFuZ2UodW5kZWZpbmVkKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5jb2x1bW5zPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuY29sdW1ucyA9IGNoYW5nZXMuY29sdW1ucy5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLnBvTG9va3VwTW9kYWxTZXJ2aWNlPy5zZXRDaGFuZ2VDb2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMubXVsdGlwbGUgJiYgaXNUeXBlb2YodGhpcy5maWx0ZXJTZXJ2aWNlLCAnc3RyaW5nJykpIHtcbiAgICAgIHRoaXMuc2VydmljZS5zZXRDb25maWcodGhpcy5maWx0ZXJTZXJ2aWNlLCB0aGlzLmZpZWxkVmFsdWUsIHRoaXMubXVsdGlwbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIG9zIGVzdGFkb3MgZGUgaGFiaWxpdGFkbyB2aWEgZm9ybXMgYXBpXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWwuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZnVuYzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZVByb3BhZ2F0ZSA9IGZ1bmM7XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWwuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZ1bmM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZnVuYztcbiAgfVxuXG4gIC8vIFNlbGVjaW9uYSBvIHZhbG9yIGRvIG1vZGVsLlxuICBzZWxlY3RWYWx1ZSh2YWx1ZVNlbGVjdGVkOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlVG9Nb2RlbCA9IHZhbHVlU2VsZWN0ZWQ7XG4gICAgdGhpcy5tdWx0aXBsZVxuICAgICAgPyB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnZhbHVlVG9Nb2RlbClcbiAgICAgIDogdGhpcy52YWx1ZVRvTW9kZWxcbiAgICAgICAgPyB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnZhbHVlVG9Nb2RlbFt0aGlzLmZpZWxkVmFsdWVdKVxuICAgICAgICA6IHRoaXMuY2FsbE9uQ2hhbmdlKHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZC5lbWl0KHZhbHVlU2VsZWN0ZWQpO1xuICB9XG5cbiAgY2FsbE9uQ2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICAvLyBRdWFuZG8gbyBpbnB1dCBuw6NvIHBvc3N1aSB1bSBmb3JtdWzDoXJpbywgZW50w6NvIGVzdGEgZnVuw6fDo28gbsOjbyDDqSByZWdpc3RyYWRhLlxuICAgIGlmICh0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vbGRWYWx1ZVRvTW9kZWwgIT09IHRoaXMudmFsdWVUb01vZGVsKSB7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBBcm1hemVuYXIgbyB2YWxvciBhbnRpZ28gZG8gbW9kZWxcbiAgICB0aGlzLm9sZFZhbHVlVG9Nb2RlbCA9IHRoaXMudmFsdWVUb01vZGVsO1xuICB9XG5cbiAgc2VhcmNoQnlJZCh2YWx1ZSkge1xuICAgIGxldCBjaGVja2VkVmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmICh0eXBlb2YgY2hlY2tlZFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgY2hlY2tlZFZhbHVlID0gY2hlY2tlZFZhbHVlLnRyaW0oKTtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tlZFZhbHVlICE9PSAnJykge1xuICAgICAgY29uc3Qgb2xkRGlzYWJsZSA9IHRoaXMuZGlzYWJsZWQ7XG4gICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAvLyA6VE9ETzogUmV0aXJhciBubyBmdXR1cm8gcG9pcyBlc3NlIHNldFRpbWVvdXQgZm9pIGZlaXRvXG4gICAgICAgIC8vIHBvaXMgcXVhbmRvIG8gY2FtcG8gw6kgYWNpb25hZG8gcGVsb3MgbcOpdG9kb3Mgc2V0VmFsdWUgb3UgcGF0Y2hWYWx1ZVxuICAgICAgICAvLyBhIG11ZGFuw6dhIG7Do28gw6kgZGV0ZWN0YWRhXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb250cm9sLm1hcmtBc1BlbmRpbmcoKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ2V0U3Vic2NyaXB0aW9uID0gdGhpcy5zZXJ2aWNlXG4gICAgICAgIC5nZXRPYmplY3RCeVZhbHVlKHZhbHVlLCB0aGlzLmZpbHRlclBhcmFtcylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IG9sZERpc2FibGU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudD8ubGVuZ3RoIHx8ICghQXJyYXkuaXNBcnJheShlbGVtZW50KSAmJiBlbGVtZW50KSkge1xuICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbGVtZW50KSAmJiBlbGVtZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERpc2NsYWltZXJzKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdE1vZGVsKHRoaXMubXVsdGlwbGUgPyBlbGVtZW50IDogW2VsZW1lbnRdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xlYW5Nb2RlbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbGVhbk1vZGVsKCk7XG4gICAgICAgICAgICB0aGlzLm9uRXJyb3IuZW1pdChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFuTW9kZWwoKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZShhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmIChyZXF1aXJlZEZhaWxlZCh0aGlzLnJlcXVpcmVkLCB0aGlzLmRpc2FibGVkLCBhYnN0cmFjdENvbnRyb2wudmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXF1aXJlZDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZT8ubGVuZ3RoIHx8ICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUpKSB7XG4gICAgICAvLyBFc3RhIGNvbmRpw6fDo28gw6kgZXhlY3V0YWRhIHNvbWVudGUgcXVhbmRvIMOpIHBhc3NhZG8gbyBJRCBwYXJhIHJlYWxpemFyIGEgYnVzY2EgcGVsbyBJRC5cbiAgICAgIHRoaXMuc2VhcmNoQnlJZCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYW5WaWV3VmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXRvcm5hIG8gU3Vic2NyaWJlciBkYSBwcm9wcmllZGFkZSBnZXRTdWJzY3JpcHRpb24gcXVlIG9jb3JyZVxuICAvLyBubyBldmVudG8gZGUgYmx1ciBxdWUgZXhlY3V0YSBvIG3DqXRvZG8gc2VhcmNoRXZlbnQoKS5cbiAgZ2V0U3Vic2NyaXB0aW9uRnVuY3Rpb24oKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdWJzY3JpcHRpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xlYW5WaWV3VmFsdWUoKSB7XG4gICAgdGhpcy5zZXREaXNjbGFpbWVycyhbXSk7XG4gICAgdGhpcy5zZXRWaWV3VmFsdWUoJycsIHt9KTtcbiAgICB0aGlzLm9sZFZhbHVlID0gJyc7XG4gICAgdGhpcy52YWx1ZVRvTW9kZWwgPSBudWxsO1xuICB9XG5cbiAgLy8gRm9ybWF0YSBhIGxhYmVsIGRvIGNhbXBvLlxuICBwcm90ZWN0ZWQgZ2V0Rm9ybWF0dGVkTGFiZWwodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlID8gdGhpcy5rZXlzRGVzY3JpcHRpb24ubWFwKGNvbHVtbiA9PiB2YWx1ZVtjb2x1bW5dKS5qb2luKCcgLSAnKSA6ICcnO1xuICB9XG5cbiAgLy8gQ2hhbWEgbyBtw6l0b2RvIHdyaXRlVmFsdWUgZSBwcmVlbmNoZSBvIG1vZGVsLlxuICBwcm90ZWN0ZWQgc2VsZWN0TW9kZWwob3B0aW9uczogQXJyYXk8YW55Pikge1xuICAgIGlmIChvcHRpb25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbLi4ub3B0aW9uc107XG5cbiAgICAgIGNvbnN0IG5ld01vZGVsID0gdGhpcy5tdWx0aXBsZSA/IG9wdGlvbnMubWFwKG9wdGlvbiA9PiBvcHRpb25bdGhpcy5maWVsZFZhbHVlXSkgOiBvcHRpb25zWzBdO1xuICAgICAgdGhpcy5zZWxlY3RWYWx1ZShuZXdNb2RlbCk7XG5cbiAgICAgIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICB0aGlzLm9sZFZhbHVlID0gb3B0aW9uc1swXVt0aGlzLmZpZWxkTGFiZWxdO1xuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZSh0aGlzLmdldEZvcm1hdHRlZExhYmVsKG9wdGlvbnNbMF0pLCBvcHRpb25zWzBdKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5jbGVhblZpZXdWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU1vZGVsKG1vZGVsOiBhbnkpIHtcbiAgICBpZiAodGhpcy52YWxpZGF0b3JDaGFuZ2UpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlKG1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFNlcnZpY2Uoc2VydmljZTogUG9Mb29rdXBGaWx0ZXIgfCBzdHJpbmcpIHtcbiAgICBpZiAoaXNUeXBlb2Yoc2VydmljZSwgJ29iamVjdCcpKSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSA8UG9Mb29rdXBGaWx0ZXJTZXJ2aWNlPnNlcnZpY2U7XG4gICAgfVxuXG4gICAgaWYgKHNlcnZpY2UgJiYgaXNUeXBlb2Yoc2VydmljZSwgJ3N0cmluZycpKSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSB0aGlzLmRlZmF1bHRTZXJ2aWNlO1xuICAgICAgdGhpcy5zZXJ2aWNlLnNldENvbmZpZyhzZXJ2aWNlLCB0aGlzLmZpZWxkVmFsdWUsIHRoaXMubXVsdGlwbGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29udHJvbCgpIHtcbiAgICBjb25zdCBuZ0NvbnRyb2w6IE5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCwgdGhpcy5pbmplY3RPcHRpb25zKTtcblxuICAgIGlmIChuZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVDb2x1bW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmllbGRMYWJlbCkge1xuICAgICAgdGhpcy5rZXlzRGVzY3JpcHRpb24gPSBbdGhpcy5maWVsZExhYmVsXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rZXlzRGVzY3JpcHRpb24gPSBbXTtcblxuICAgICAgdGhpcy5rZXlzRGVzY3JpcHRpb24gPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGVsZW1lbnQgPT4gZWxlbWVudC5maWVsZExhYmVsKS5tYXAoZWxlbWVudCA9PiBlbGVtZW50LnByb3BlcnR5KTtcbiAgICB9XG4gIH1cblxuICAvLyBBdHJpYnVpIHVtIG91IG1haXMgdmFsb3JlcyBhbyBjYW1wby5cbiAgYWJzdHJhY3Qgc2V0Vmlld1ZhbHVlKHZhbHVlOiBhbnksIG9iamVjdDogYW55KTogdm9pZDtcblxuICAvLyBNw6l0b2RvIGNvbSBhIGltcGxlbWVudGHDp8OjbyBwYXJhIGFicmlyIG8gbG9va3VwLlxuICBhYnN0cmFjdCBvcGVuTG9va3VwKCk6IHZvaWQ7XG5cbiAgYWJzdHJhY3Qgc2V0RGlzY2xhaW1lcnMoYSk7XG4gIGFic3RyYWN0IHVwZGF0ZVZpc2libGVJdGVtcygpO1xufVxuIl19
|