ngx-wapp-components 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/button/w-button/w-button.component.mjs +4 -15
- package/esm2020/lib/edit/w-edit-multiselect/w-edit-multiselect.component.mjs +2 -7
- package/esm2020/lib/edit/w-edit-select/w-edit-select.component.mjs +2 -7
- package/esm2020/lib/edit/w-edit-treeselect/w-edit-treeselect.component.mjs +2 -7
- package/esm2020/lib/layout/w-header-panel/w-header-panel.component.mjs +20 -5
- package/esm2020/lib/search/w-input-search/w-input-search.component.mjs +1 -1
- package/esm2020/lib/shared/enums/enum.mjs +9 -1
- package/esm2020/lib/tables/w-table/w-table.component.mjs +3 -3
- package/esm2020/lib/tables/w-table-lazy/w-table-lazy.component.mjs +3 -3
- package/fesm2015/ngx-wapp-components.mjs +46 -55
- package/fesm2015/ngx-wapp-components.mjs.map +1 -1
- package/fesm2020/ngx-wapp-components.mjs +46 -55
- package/fesm2020/ngx-wapp-components.mjs.map +1 -1
- package/lib/button/w-button/w-button.component.d.ts +1 -11
- package/lib/edit/w-edit-multiselect/w-edit-multiselect.component.d.ts +1 -6
- package/lib/edit/w-edit-select/w-edit-select.component.d.ts +1 -6
- package/lib/edit/w-edit-treeselect/w-edit-treeselect.component.d.ts +1 -6
- package/lib/layout/w-header-panel/w-header-panel.component.d.ts +5 -1
- package/lib/shared/enums/enum.d.ts +8 -1
- package/package.json +1 -1
|
@@ -103,4 +103,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
103
103
|
type: Input,
|
|
104
104
|
args: ['formControl']
|
|
105
105
|
}] } });
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy1pbnB1dC1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvc2VhcmNoL3ctaW5wdXQtc2VhcmNoL3ctaW5wdXQtc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3NlYXJjaC93LWlucHV0LXNlYXJjaC93LWlucHV0LXNlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFnQixLQUFLLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUE4QixpQkFBaUIsRUFBZSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFjNUYsTUFBTSxPQUFPLHFCQUFxQjtJQVpsQztRQWNrQixVQUFLLEdBQVcsZUFBZSxDQUFDO1FBQzFCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRTFCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUVsQyxTQUFJLEdBQVcsUUFBUSxDQUFDO1FBRXZCLFVBQUssR0FBVTtZQUM3QixFQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztZQUNyQyxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztZQUNoQyxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztZQUNqQyxFQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDO1NBQ3pDLENBQUM7UUFLRixnQkFBVyxHQUFVLEVBQUUsQ0FBQztRQUd4QixjQUFTLEdBQWEs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bnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBTZWxmLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpemVUeXBlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2VudW1zL2VudW0nO1xyXG5pbXBvcnQgeyBOZ0NvbnRyb2wsIEZvcm1Db250cm9sTmFtZSwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3LWlucHV0LXNlYXJjaCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ctaW5wdXQtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93LWlucHV0LXNlYXJjaC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV0lucHV0U2VhcmNoQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXSW5wdXRTZWFyY2hDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoJ2xhYmVsJykgbGFiZWw6IHN0cmluZyA9IFwiRGVmYXVsdCBMYWJlbFwiO1xyXG4gIEBJbnB1dCgncGxhY2Vob2xkZXInKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgQElucHV0KCdpc1JlcXVpcmVkJykgaXNSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgnaXNEaXNhYmxlZCcpIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCdzaXplJykgc2l6ZTogc3RyaW5nID0gXCJtZWRpdW1cIjtcclxuXHJcbiAgQElucHV0KCdpdGVtcycpIGl0ZW1zOiBhbnlbXSA9IFtcclxuICAgIHtcIm5hbWVcIjogXCJBZmdoYW5pc3RhblwiLCBcImNvZGVcIjogXCJBRlwifSxcclxuICAgIHtcIm5hbWVcIjogXCJNw6l4aWNvXCIsIFwiY29kZVwiOiBcIk1YXCJ9LFxyXG4gICAge1wibmFtZVwiOiBcIlR1cnF1w61hXCIsIFwiY29kZVwiOiBcIlRRXCJ9LFxyXG4gICAge1wibmFtZVwiOiBcIkVzdGFkb3MgdW5pZG9zXCIsIFwiY29kZVwiOiBcIkVVXCJ9LFxyXG4gIF07XHJcbiAgXHJcbiAgQElucHV0KCdmb3JtQ29udHJvbCcpIGZvcm1Db250cm9sITogRm9ybUNvbnRyb2wgfCBudWxsO1xyXG4gIFxyXG4gIHNlbGVjdGVkSXRlbTogYW55O1xyXG4gIHN1Z2dlc3Rpb25zOiBhbnlbXSA9IFtdO1xyXG4gIHZhbHVlOiBhbnkgO1xyXG5cclxuICBpc1RvdWNoZWQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgb25DaGFuZ2UgPSAoXzphbnkpID0+IHsgfVxyXG4gIG9uVG91Y2ggPSAoKSA9PiB7IH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBvbkNoYW5nZTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2g6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gb25Ub3VjaDtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBvblZhbHVlQ2hhbmdlZCgpIHtcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLm9uVG91Y2goKTtcclxuICB9XHJcblxyXG4gIG9uSW5wdXRCbHVyKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgbmV3VmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gIH1cclxuICBcclxuICBzZWFyY2goZXZlbnQ6IGFueSkge1xyXG5cclxuICAgIGxldCBmaWx0ZXJlZDogYW55W10gPSBbXTtcclxuICAgIGxldCBxdWVyeSA9IGV2ZW50LnF1ZXJ5O1xyXG5cclxuICAgIGZvcihsZXQgaT0wOyBpIDwgKHRoaXMuaXRlbXMgYXMgYW55W10pLmxlbmd0aDsgaSsrKVxyXG4gICAge1xyXG4gICAgICBsZXQgaXRlbSA9ICh0aGlzLml0ZW1zIGFzIGFueVtdKVtpXTtcclxuICAgICAgaWYoaXRlbS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxdWVyeS50b0xvd2VyQ2FzZSgpKSA9PSAwKVxyXG4gICAgICB7XHJcbiAgICAgICAgZmlsdGVyZWQucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zdWdnZXN0aW9ucyA9IGZpbHRlcmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2l6ZU5hbWUodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gU2l6ZVR5cGVbdmFsdWVdO1xyXG4gIH1cclxuICBcclxuICBnZXQgc2l6ZVR5cGUoKTogdHlwZW9mIFNpemVUeXBlIHtcclxuICAgIHJldHVybiBTaXplVHlwZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cImZvcm1Db250cm9sICE9IG51bGw7IGVsc2Ugbm9OZ0NvbnRyb2xcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJnZXRTaXplTmFtZShzaXplVHlwZS5tZWRpdW0pID09IHNpemU7IGVsc2UgaW5wdXRTbWFsbFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnQgdy1jb250YWluZXIgdy1mdWxsXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG4gICAgICAgICAgICA8cC1hdXRvQ29tcGxldGVcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwieyd3aWR0aCc6JzEwMCUnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0U3R5bGVdPVwieyd3aWR0aCc6JzEwMCUnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3YXBwLWF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N1Z2dlc3Rpb25zXT1cInN1Z2dlc3Rpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAoY29tcGxldGVNZXRob2QpPVwic2VhcmNoKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZD1cIm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29udGVudFwiPnt7aXRlbS5uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjaW5wdXRTbWFsbD5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0IHctY29udGFpbmVyLXNtYWxsIHctZnVsbFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICAgICAgPHAtYXV0b0NvbXBsZXRlXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInsnd2lkdGgnOicxMDAlJ31cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbnB1dFN0eWxlXT1cInsnd2lkdGgnOicxMDAlJ31cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2FwcC1hdXRvY29tcGxldGUtc21hbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdWdnZXN0aW9uc109XCJzdWdnZXN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNvbXBsZXRlTWV0aG9kKT1cInNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ9XCJuYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtIHBUZW1wbGF0ZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbnRlbnQtc21hbGxcIj57e2l0ZW0ubmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvcC1hdXRvQ29tcGxldGU+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZSAjbm9OZ0NvbnRyb2w+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZ2V0U2l6ZU5hbWUoc2l6ZVR5cGUubWVkaXVtKSA9PSBzaXplOyBlbHNlIGlucHV0U21hbGxcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0IHctY29udGFpbmVyIHctZnVsbFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICAgICAgPHAtYXV0b0NvbXBsZXRlXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInsnd2lkdGgnOicxMDAlJ31cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbnB1dFN0eWxlXT1cInsnd2lkdGgnOicxMDAlJ31cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2FwcC1hdXRvY29tcGxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdWdnZXN0aW9uc109XCJzdWdnZXN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNvbXBsZXRlTWV0aG9kKT1cInNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIiBcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlZCgpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkPVwibmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jb250ZW50XCI+e3tpdGVtLm5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3AtYXV0b0NvbXBsZXRlPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICNpbnB1dFNtYWxsPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnQgdy1jb250YWluZXItc21hbGwgdy1mdWxsXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG4gICAgICAgICAgICA8cC1hdXRvQ29tcGxldGVcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwieyd3aWR0aCc6JzEwMCUnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0U3R5bGVdPVwieyd3aWR0aCc6JzEwMCUnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3YXBwLWF1dG9jb21wbGV0ZS1zbWFsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N1Z2dlc3Rpb25zXT1cInN1Z2dlc3Rpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uVmFsdWVDaGFuZ2VkKClcIiBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNvbXBsZXRlTWV0aG9kKT1cInNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkPVwibmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jb250ZW50LXNtYWxsXCI+e3tpdGVtLm5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3AtYXV0b0NvbXBsZXRlPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy1pbnB1dC1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvc2VhcmNoL3ctaW5wdXQtc2VhcmNoL3ctaW5wdXQtc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3NlYXJjaC93LWlucHV0LXNlYXJjaC93LWlucHV0LXNlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFnQixLQUFLLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUE4QixpQkFBaUIsRUFBZSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFjNUYsTUFBTSxPQUFPLHFCQUFxQjtJQVpsQztRQWFrQixVQUFLLEdBQVcsZUFBZSxDQUFDO1FBQzFCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRTFCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUVsQyxTQUFJLEdBQVcsUUFBUSxDQUFDO1FBRXZCLFVBQUssR0FBVTtZQUM3QixFQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztZQUNyQyxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztZQUNoQyxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztZQUNqQyxFQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDO1NBQ3pDLENBQUM7UUFLRixnQkFBVyxHQUFVLEVBQUUsQ0FBQztRQUd4QixjQUFTLEdBQWEs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bnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBTZWxmLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpemVUeXBlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2VudW1zL2VudW0nO1xyXG5pbXBvcnQgeyBOZ0NvbnRyb2wsIEZvcm1Db250cm9sTmFtZSwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3LWlucHV0LXNlYXJjaCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ctaW5wdXQtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93LWlucHV0LXNlYXJjaC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV0lucHV0U2VhcmNoQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXSW5wdXRTZWFyY2hDb21wb25lbnQge1xyXG4gIEBJbnB1dCgnbGFiZWwnKSBsYWJlbDogc3RyaW5nID0gXCJEZWZhdWx0IExhYmVsXCI7XHJcbiAgQElucHV0KCdwbGFjZWhvbGRlcicpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBASW5wdXQoJ2lzUmVxdWlyZWQnKSBpc1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCdpc0Rpc2FibGVkJykgaXNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoJ3NpemUnKSBzaXplOiBzdHJpbmcgPSBcIm1lZGl1bVwiO1xyXG5cclxuICBASW5wdXQoJ2l0ZW1zJykgaXRlbXM6IGFueVtdID0gW1xyXG4gICAge1wibmFtZVwiOiBcIkFmZ2hhbmlzdGFuXCIsIFwiY29kZVwiOiBcIkFGXCJ9LFxyXG4gICAge1wibmFtZVwiOiBcIk3DqXhpY29cIiwgXCJjb2RlXCI6IFwiTVhcIn0sXHJcbiAgICB7XCJuYW1lXCI6IFwiVHVycXXDrWFcIiwgXCJjb2RlXCI6IFwiVFFcIn0sXHJcbiAgICB7XCJuYW1lXCI6IFwiRXN0YWRvcyB1bmlkb3NcIiwgXCJjb2RlXCI6IFwiRVVcIn0sXHJcbiAgXTtcclxuICBcclxuICBASW5wdXQoJ2Zvcm1Db250cm9sJykgZm9ybUNvbnRyb2whOiBGb3JtQ29udHJvbCB8IG51bGw7XHJcbiAgXHJcbiAgc2VsZWN0ZWRJdGVtOiBhbnk7XHJcbiAgc3VnZ2VzdGlvbnM6IGFueVtdID0gW107XHJcbiAgdmFsdWU6IGFueSA7XHJcblxyXG4gIGlzVG91Y2hlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBvbkNoYW5nZSA9IChfOmFueSkgPT4geyB9XHJcbiAgb25Ub3VjaCA9ICgpID0+IHsgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2ggPSBvblRvdWNoO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIG9uVmFsdWVDaGFuZ2VkKCkge1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gIH1cclxuXHJcbiAgb25JbnB1dEJsdXIoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgfVxyXG4gIFxyXG4gIHNlYXJjaChldmVudDogYW55KSB7XHJcblxyXG4gICAgbGV0IGZpbHRlcmVkOiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IHF1ZXJ5ID0gZXZlbnQucXVlcnk7XHJcblxyXG4gICAgZm9yKGxldCBpPTA7IGkgPCAodGhpcy5pdGVtcyBhcyBhbnlbXSkubGVuZ3RoOyBpKyspXHJcbiAgICB7XHJcbiAgICAgIGxldCBpdGVtID0gKHRoaXMuaXRlbXMgYXMgYW55W10pW2ldO1xyXG4gICAgICBpZihpdGVtLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpID09IDApXHJcbiAgICAgIHtcclxuICAgICAgICBmaWx0ZXJlZC5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnN1Z2dlc3Rpb25zID0gZmlsdGVyZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRTaXplTmFtZSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBTaXplVHlwZVt2YWx1ZV07XHJcbiAgfVxyXG4gIFxyXG4gIGdldCBzaXplVHlwZSgpOiB0eXBlb2YgU2l6ZVR5cGUge1xyXG4gICAgcmV0dXJuIFNpemVUeXBlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiZm9ybUNvbnRyb2wgIT0gbnVsbDsgZWxzZSBub05nQ29udHJvbFwiPlxyXG4gICAgPGRpdiAqbmdJZj1cImdldFNpemVOYW1lKHNpemVUeXBlLm1lZGl1bSkgPT0gc2l6ZTsgZWxzZSBpbnB1dFNtYWxsXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdCB3LWNvbnRhaW5lciB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgICAgIDxwLWF1dG9Db21wbGV0ZVxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7J3dpZHRoJzonMTAwJSd9XCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRTdHlsZV09XCJ7J3dpZHRoJzonMTAwJSd9XCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndhcHAtYXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3VnZ2VzdGlvbnNdPVwic3VnZ2VzdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2goJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkPVwibmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jb250ZW50XCI+e3tpdGVtLm5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3AtYXV0b0NvbXBsZXRlPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICNpbnB1dFNtYWxsPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnQgdy1jb250YWluZXItc21hbGwgdy1mdWxsXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG4gICAgICAgICAgICA8cC1hdXRvQ29tcGxldGVcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwieyd3aWR0aCc6JzEwMCUnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0U3R5bGVdPVwieyd3aWR0aCc6JzEwMCUnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3YXBwLWF1dG9jb21wbGV0ZS1zbWFsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N1Z2dlc3Rpb25zXT1cInN1Z2dlc3Rpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAoY29tcGxldGVNZXRob2QpPVwic2VhcmNoKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZD1cIm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29udGVudC1zbWFsbFwiPnt7aXRlbS5uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuPG5nLXRlbXBsYXRlICNub05nQ29udHJvbD5cclxuICAgIDxkaXYgKm5nSWY9XCJnZXRTaXplTmFtZShzaXplVHlwZS5tZWRpdW0pID09IHNpemU7IGVsc2UgaW5wdXRTbWFsbFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnQgdy1jb250YWluZXIgdy1mdWxsXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG4gICAgICAgICAgICA8cC1hdXRvQ29tcGxldGVcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwieyd3aWR0aCc6JzEwMCUnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0U3R5bGVdPVwieyd3aWR0aCc6JzEwMCUnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3YXBwLWF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N1Z2dlc3Rpb25zXT1cInN1Z2dlc3Rpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAoY29tcGxldGVNZXRob2QpPVwic2VhcmNoKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2VkKClcIiBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ9XCJuYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtIHBUZW1wbGF0ZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbnRlbnRcIj57e2l0ZW0ubmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvcC1hdXRvQ29tcGxldGU+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgI2lucHV0U21hbGw+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdCB3LWNvbnRhaW5lci1zbWFsbCB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgICAgIDxwLWF1dG9Db21wbGV0ZVxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7J3dpZHRoJzonMTAwJSd9XCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRTdHlsZV09XCJ7J3dpZHRoJzonMTAwJSd9XCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndhcHAtYXV0b2NvbXBsZXRlLXNtYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3VnZ2VzdGlvbnNdPVwic3VnZ2VzdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIiBcclxuICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZWQoKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAoY29tcGxldGVNZXRob2QpPVwic2VhcmNoKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ9XCJuYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtIHBUZW1wbGF0ZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbnRlbnQtc21hbGxcIj57e2l0ZW0ubmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvcC1hdXRvQ29tcGxldGU+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -2,5 +2,13 @@ export var SizeType;
|
|
|
2
2
|
(function (SizeType) {
|
|
3
3
|
SizeType[SizeType["small"] = 0] = "small";
|
|
4
4
|
SizeType[SizeType["medium"] = 1] = "medium";
|
|
5
|
+
SizeType[SizeType["large"] = 2] = "large";
|
|
5
6
|
})(SizeType || (SizeType = {}));
|
|
6
|
-
|
|
7
|
+
export var ButtonType;
|
|
8
|
+
(function (ButtonType) {
|
|
9
|
+
ButtonType[ButtonType["primary"] = 0] = "primary";
|
|
10
|
+
ButtonType[ButtonType["secondary"] = 1] = "secondary";
|
|
11
|
+
ButtonType[ButtonType["tertiary"] = 2] = "tertiary";
|
|
12
|
+
ButtonType[ButtonType["text"] = 3] = "text";
|
|
13
|
+
})(ButtonType || (ButtonType = {}));
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC9lbnVtcy9lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFFBSVg7QUFKRCxXQUFZLFFBQVE7SUFDaEIseUNBQVMsQ0FBQTtJQUNULDJDQUFVLENBQUE7SUFDVix5Q0FBUyxDQUFBO0FBQ2IsQ0FBQyxFQUpXLFFBQVEsS0FBUixRQUFRLFFBSW5CO0FBRUQsTUFBTSxDQUFOLElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQixpREFBVyxDQUFBO0lBQ1gscURBQWEsQ0FBQTtJQUNiLG1EQUFZLENBQUE7SUFDWiwyQ0FBUSxDQUFBO0FBQ1YsQ0FBQyxFQUxXLFVBQVUsS0FBVixVQUFVLFFBS3JCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gU2l6ZVR5cGUge1xyXG4gICAgc21hbGwgPSAwLFxyXG4gICAgbWVkaXVtID0gMSxcclxuICAgIGxhcmdlID0gMlxyXG59XHJcblxyXG5leHBvcnQgZW51bSBCdXR0b25UeXBle1xyXG4gIHByaW1hcnkgPSAwLFxyXG4gIHNlY29uZGFyeSA9IDEsXHJcbiAgdGVydGlhcnkgPSAyLFxyXG4gIHRleHQgPSAzXHJcbn0iXX0=
|
|
@@ -149,10 +149,10 @@ export class WTableComponent {
|
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
WTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: WTableComponent, deps: [{ token: i1.ConfirmationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
152
|
-
WTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: WTableComponent, selector: "w-table", inputs: { elements: "elements", rowsPerPage: "rowsPerPage", loading: "loading", wappTableObject: "wappTableObject" }, outputs: { onElementSelect: "onElementSelect", onViewElementSelect: "onViewElementSelect", onCopyElementSelect: "onCopyElementSelect", onEditElementSelect: "onEditElementSelect", onCustomElementSelect: "onCustomElementSelect", onDeleteElementSelect: "onDeleteElementSelect", onNewElementSelect: "onNewElementSelect" }, providers: [ConfirmationService], viewQueries: [{ propertyName: "filter", first: true, predicate: ["filter"], descendants: true }, { propertyName: "dataTable", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-content select=\".filter-panel\"></ng-content>\r\n<div *ngIf=\"wappTableObject\" [class.table-container]=\"wappTableObject.tableContainer\">\r\n <p-table class=\"wapp-table-styles\" \r\n *ngIf=\"!loading; else loadingTable\" #table \r\n [value]=\"elements\" dataKey=\"{{wappTableObject.identificator}}\" \r\n [paginator]=\"true\"\r\n [selection]=\"selectedElements\" (selectionChange)=\"onSelectionChange($event)\"\r\n [selectAll]=\"selectAll\" (selectAllChange)=\"onSelectAllChange($event)\"\r\n [totalRecords]=\"totalRecords\" [showCurrentPageReport]=\"true\" \r\n [rows]=\"rowsPerPage\"\r\n [currentPageReportTemplate]=\"wappTableObject.currentPageReportTemplate ? wappTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n [globalFilterFields]=\"wappTableObject.globalFilterFields!\" responsiveLayout=\"scroll\"\r\n [rowHover]=\"true\" [tableStyle]=\"{'min-width': '70rem'}\"\r\n styleClass=\"p-datatable-striped\">\r\n <ng-template *ngIf=\"wappTableObject?.hasClearButton || wappTableObject.hasGlobalSearch\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <!-- <button *ngIf=\"wappTableObject.hasClearButton\" pButton [label]=\"wappTableObject.clearPlaceholder!\" class=\"p-button-outlined\" icon=\"pi pi-filter-slash\" (click)=\"clear(table)\"></button> -->\r\n <span class=\"showing-per-page\"> {{wappTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber \r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\">\r\n </p-inputNumber>\r\n <span *ngIf=\"wappTableObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter (input)=\"onGlobalFilter(table, $event)\" \r\n [placeholder]=\"wappTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngIf=\"!wappTableObject.hasColumnFilters && wappTableObject.hasCheckbox; else noCheckbox\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-template #noCheckbox><th *ngIf=\"wappTableObject.hasCheckbox\"></th></ng-template>\r\n <ng-container *ngIf=\"!wappTableObject.hasSortableColumns; else hasNotSortableColumns\">\r\n <th *ngFor=\"let header of wappTableObject?.headers\">\r\n {{header}}\r\n </th>\r\n </ng-container>\r\n <ng-template #hasNotSortableColumns>\r\n <ng-template ngFor let-filterType [ngForOf]=\"wappTableObject.headers\" let-i=\"index\"> \r\n <th [pSortableColumn]=\"wappTableObject.sortableNames[i]\">\r\n {{wappTableObject.headers[i]}} \r\n <p-sortIcon *ngIf=\"wappTableObject.sortableNames[i] != null\" [field]=\"wappTableObject.sortableNames[i]\"></p-sortIcon>\r\n </th>\r\n </ng-template>\r\n </ng-template>\r\n <th *ngIf=\"wappTableObject.hasDeleteButton || wappTableObject.hasEditButton\"></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-element>\r\n <tr [ngClass]=\"wappTableObject.hasSelectableRow ? 'p-selectable-row' : ''\" (click)=\"wappTableObject.hasSelectableRow ? onElement(element) : ''\">\r\n <ng-template ngFor let-columnType [ngForOf]=\"wappTableObject.columnTypes!\" let-i=\"index\">\r\n <td *ngIf=\"columnType == tableColumnTypes?.Checkbox! && wappTableObject.hasCheckbox\" [style]=\"'width: '+wappTableObject.columnWidths![i]\">\r\n <div *ngIf=\"wappTableObject.disableCheckbox; else activeCheckbox\">\r\n <p-tableCheckbox [value]=\"element\" [disabled]=\"readProperty(element, wappTableObject.disableCheckbox)\"></p-tableCheckbox>\r\n </div>\r\n <ng-template #activeCheckbox>\r\n <p-tableCheckbox [value]=\"element\"></p-tableCheckbox>\r\n </ng-template> </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Image\" class=\"text-center\">\r\n <img *ngIf=\"readProperty(element, wappTableObject.elementObjectRoutes[i])\" \r\n [src]=\"readProperty(element, wappTableObject.elementObjectRoutes[i])\" \r\n class=\"shadow-4 element-image-width\" [style]=\"'width: '+wappTableObject.columnWidths[i]\"/>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Text\" [style]=\"'width: '+wappTableObject.columnWidths[i]\">\r\n {{ readProperty(element, wappTableObject.elementObjectRoutes[i]) }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Currency\" [style]=\"'width: '+wappTableObject.columnWidths[i]\">\r\n {{ readProperty(element, wappTableObject.elementObjectRoutes[i]) | currency }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Badge\" [style]=\"'width: '+wappTableObject.columnWidths[i]\">\r\n <!-- ToDo hacer componente badge -->\r\n <!-- <wapp-view-badge [label]=\"readProperty(element, wappTableObject.elementObjectRoutes[i])\"\r\n [color]=\"'cyan'\">\r\n </wapp-view-badge> -->\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Boolean\">\r\n <i class=\"pi\" [ngClass]=\"getBooleanColumnClass(i, readProperty(element, wappTableObject.elementObjectRoutes[i]))\"></i>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Date\">\r\n {{ readProperty(element, wappTableObject.elementObjectRoutes[i]) | date }}\r\n </td>\r\n </ng-template>\r\n <td>\r\n <div class=\"flex justify-content-end\">\r\n <button *ngIf=\"wappTableObject?.hasViewButton\" \r\n pButton pRipple (click)=\"viewElement(element)\" \r\n icon=\"pi pi-eye\" class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject.customButtonConfig?.hasCustomButton\"\r\n pButton pRipple (click)=\"customElement(element)\"\r\n [icon]=\"wappTableObject.customButtonConfig?.icon!\"\r\n class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject?.hasEditButton && !wappTableObject.disableEditProperty\" \r\n pButton pRipple (click)=\"editElement(element)\"\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject.disableEditProperty\" \r\n pButton pRipple (click)=\"editElement(element)\" [disabled]=\"readProperty(element, wappTableObject.disableEditProperty)\"\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject?.hasCopyButton\" \r\n pButton pRipple (click)=\"confirmCopy($event, element)\" \r\n icon=\"pi pi-copy\" class=\"p-button-text p-button-help mr-2\">\r\n </button>\r\n <button *ngIf=\"!wappTableObject?.disableDelete && wappTableObject?.hasDeleteButton && !wappTableObject.disableDeleteProperty\" \r\n pButton pRipple (click)=\"confirmDelete($event, element)\"\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n <button *ngIf=\"!wappTableObject?.disableDelete && wappTableObject.disableDeleteProperty\" \r\n pButton pRipple (click)=\"confirmDelete($event, element)\" [disabled]=\"readProperty(element, wappTableObject.disableDeleteProperty)\"\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td colspan=\"8\">No elements.</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr>\r\n <td colspan=\"8\">Loading elements.</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n \r\n <ng-template #loadingTable>\r\n <p-table class=\"wapp-table-styles\" [value]=\"tableSkeletons\" responsiveLayout=\"scroll\" [paginator]=\"true\" [rows]=\"rowsPerPage\" [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\" \r\n [currentPageReportTemplate]=\"wappTableObject.currentPageReportTemplate ? wappTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords : 'Showing ' + rowsPerPage + ' of ' + totalRecords\"\r\n styleClass=\"p-datatable-striped\">\r\n <ng-template *ngIf=\"wappTableObject?.hasClearButton || wappTableObject.hasGlobalSearch\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <!-- <button *ngIf=\"wappTableObject.hasClearButton\" pButton label=\"Clear\" class=\"p-button-outlined\" icon=\"pi pi-filter-slash\"></button> -->\r\n <span class=\"showing-per-page\"> {{wappTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber \r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\">\r\n </p-inputNumber>\r\n <span *ngIf=\"wappTableObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter \r\n [placeholder]=\"wappTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngIf=\"!wappTableObject.hasColumnFilters && wappTableObject.hasCheckbox; else selectAllCheckbox\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-template #selectAllCheckbox><th></th></ng-template>\r\n <th *ngFor=\"let header of wappTableObject?.headers\">\r\n {{header}}\r\n </th>\r\n <th *ngIf=\"wappTableObject.hasDeleteButton || wappTableObject.hasEditButton\"></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\">\r\n <tr height=\"70px\">\r\n <td *ngFor=\"let item of wappTableObject.columnTypes\" [style.width]=\"item == tableColumnTypes.Checkbox ? '8rem' : ''\" >\r\n <p-tableCheckbox *ngIf=\"item == tableColumnTypes.Checkbox && wappTableObject.hasCheckbox\"></p-tableCheckbox>\r\n <p-skeleton *ngIf=\"item != tableColumnTypes.Checkbox\"></p-skeleton>\r\n </td>\r\n <td *ngIf=\"wappTableObject.hasEditButton || wappTableObject.hasDeleteButton\">\r\n <div class=\"flex justify-content-end\">\r\n <button *ngIf=\"wappTableObject?.hasViewButton\" \r\n pButton pRipple \r\n icon=\"pi pi-eye\" class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject.customButtonConfig?.hasCustomButton\"\r\n pButton pRipple\r\n [icon]=\"wappTableObject.customButtonConfig?.icon!\"\r\n class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject?.hasEditButton\" \r\n pButton pRipple\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject?.hasCopyButton\" \r\n pButton pRipple \r\n icon=\"pi pi-copy\" class=\"p-button-text p-button-help mr-2\">\r\n </button>\r\n <button *ngIf=\"!wappTableObject?.disableDelete && wappTableObject?.hasDeleteButton\" \r\n pButton pRipple\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ng-template>\r\n</div>\r\n<p-confirmPopup></p-confirmPopup>", styles: [".heading1{font-size:3.1428571429rem;line-height:3.4285714286rem;font-weight:700}.heading2{font-size:2.8571428571rem;line-height:3.1428571429rem;font-weight:700}.heading3{font-size:2.5714285714rem;line-height:2.8571428571rem;font-weight:700}.heading4{font-size:2.2857142857rem;line-height:2.5714285714rem;font-weight:700}.heading5{font-size:2rem;line-height:2.2857142857rem;font-weight:700}.heading6{font-size:1.7142857143rem;line-height:2rem;font-weight:700}.subtitle1{font-size:1.4285714286rem;line-height:1.7142857143rem;font-weight:700}.subtitle2{font-size:1.1428571429rem;line-height:1.4285714286rem;font-weight:700}.body,.input-generic-placeholder-small,.input-generic-small{font-size:1rem;line-height:1.1428571429rem;font-weight:600}.caption{font-size:.8571428571rem;line-height:1.1428571429rem;font-weight:600}.icon-small-size{font-size:8px}.icon-small-x-size{font-size:12px}.icon-medium-size{font-size:16px}.icon-large-size{font-size:24px}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:2px solid #0085c7}.button-large-typography{font-size:20px;line-height:24px;font-weight:700}.button-medium-typography{font-size:16px;line-height:16px;font-weight:700}.button-small-typography{font-size:12px;line-height:16px;font-weight:700}.button-text-typography,.input-generic-label{font-size:14px;line-height:16px;font-weight:700}.input-generic-placeholder,.input-generic{font-size:16px;line-height:24px;font-weight:600}.input-generic-placeholder-small{padding:8px 12px 12px}.input-generic-valid{border-radius:8px;border:2px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:2px solid #B3FFD3!important;box-shadow:0 0 2px 2px #b3ffd3!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:2px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:2px solid #FFECB8!important;box-shadow:0 0 2px 2px #ffecb8!important;padding-left:16px}.input-generic-error{border-radius:8px;border:2px solid #FFBDBD}.tag-generic{font-size:14px;line-height:16px;font-weight:700}.tag-generic-small{font-size:12px;line-height:16px;font-weight:700}.table-container{padding:0 20px;background-color:#fff;border-radius:8px;box-shadow:0 4px 8px #0000001a}.showing-per-page{color:#bdc1c6;font-weight:600}::ng-deep .wapp-table-styles .showing-per-page .p-button{border-radius:8px}::ng-deep .wapp-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#bdc1c6;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator{border-width:0;padding:16px 20px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#e0f5fc;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-current{color:#bdc1c6;padding:0}::ng-deep .wapp-table-styles .p-datatable .p-sortable-column .p-sortable-column-icon{color:#bdc1c6;margin-left:.5rem}::ng-deep .wapp-table-styles .p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#000}::ng-deep .wapp-table-styles .p-datatable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .wapp-table-styles .p-datatable .p-datatable-thead>tr>th{color:#bdc1c6;background:#ffffff}::ng-deep .wapp-table-styles .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background:#f8f9fa}::ng-deep .wapp-table-styles .p-datatable .p-paginator-bottom{justify-content:normal!important}::ng-deep .wapp-table-styles .p-datatable .p-paginator-bottom>button{color:#bdc1c6}::ng-deep .wapp-table-styles .p-datatable .p-datatable-header{background:#ffffff;border-width:0px;padding:16px 0!important;font-weight:600}::ng-deep .wapp-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:2px 0px 2px 0px;border-color:#e8eaed;color:#dadce0;text-align:center}::ng-deep .wapp-table-styles .p-button.p-button-outlined{color:#e8eaed;border-width:2px}::ng-deep .wapp-table-styles .p-datatable .p-datatable-tbody>tr>td{columns:#2E3134;font-weight:600;text-align:left;border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:8px}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box{border:2px solid #e8eaed;width:16px;height:16px;color:#e8eaed;border-radius:4px;align-self:center}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:bolder}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#0085c7!important;background:#0085c7;color:#0085c7!important}::ng-deep .wapp-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .wapp-table-styles .p-inputtext:enabled:hover{border-color:#e8eaed}::ng-deep .wapp-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8eaed;border:2px solid;background-color:#f1f3f4}::ng-deep .wapp-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#2e3134}::ng-deep .wapp-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .wapp-table-styles .p-datatable .p-datatable-thead>tr>th:hover{color:#000;background:#ffffff}.height-input{height:32px}.wapp-input{border-radius:8px;border-width:2px;border-color:#e8eaed;font-size:16px;line-height:5px;font-weight:100;gap:16px}::-webkit-input-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}::-moz-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}:-ms-input-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}:-moz-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}.wapp-input:hover{border:2px solid #0085c7!important}.wapp-input:focus{box-shadow:0 0 3px 3px #e0f5fc!important;background-color:transparent!important}.pi-search{left:.75rem;color:#bdc1c6!important}::ng-deep .wapp-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .wapp-table-styles .p-avatar{border:1px solid #e8eaed}\n"], dependencies: [{ kind: "directive", type: i2.InputText, selector: "[pInputText]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i6.Ripple, selector: "[pRipple]" }, { kind: "component", type: i7.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: i8.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i9.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i9.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i9.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i9.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i9.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i10.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "pipe", type: i4.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
|
|
152
|
+
WTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: WTableComponent, selector: "w-table", inputs: { elements: "elements", rowsPerPage: "rowsPerPage", loading: "loading", wappTableObject: "wappTableObject" }, outputs: { onElementSelect: "onElementSelect", onViewElementSelect: "onViewElementSelect", onCopyElementSelect: "onCopyElementSelect", onEditElementSelect: "onEditElementSelect", onCustomElementSelect: "onCustomElementSelect", onDeleteElementSelect: "onDeleteElementSelect", onNewElementSelect: "onNewElementSelect" }, providers: [ConfirmationService], viewQueries: [{ propertyName: "filter", first: true, predicate: ["filter"], descendants: true }, { propertyName: "dataTable", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-content select=\".filter-panel\"></ng-content>\r\n<div *ngIf=\"wappTableObject\" [class.table-container]=\"wappTableObject.tableContainer\">\r\n <p-table class=\"wapp-table-styles\" \r\n *ngIf=\"!loading; else loadingTable\" #table \r\n [value]=\"elements\" dataKey=\"{{wappTableObject.identificator}}\" \r\n [paginator]=\"true\"\r\n [selection]=\"selectedElements\" (selectionChange)=\"onSelectionChange($event)\"\r\n [selectAll]=\"selectAll\" (selectAllChange)=\"onSelectAllChange($event)\"\r\n [totalRecords]=\"totalRecords\" [showCurrentPageReport]=\"true\" \r\n [rows]=\"rowsPerPage\"\r\n [currentPageReportTemplate]=\"wappTableObject.currentPageReportTemplate ? wappTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n [globalFilterFields]=\"wappTableObject.globalFilterFields!\" responsiveLayout=\"scroll\"\r\n [rowHover]=\"true\" [tableStyle]=\"{'min-width': '70rem'}\"\r\n styleClass=\"p-datatable-striped\">\r\n <ng-template *ngIf=\"wappTableObject?.hasClearButton || wappTableObject.hasGlobalSearch\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <!-- <button *ngIf=\"wappTableObject.hasClearButton\" pButton [label]=\"wappTableObject.clearPlaceholder!\" class=\"p-button-outlined\" icon=\"pi pi-filter-slash\" (click)=\"clear(table)\"></button> -->\r\n <span class=\"showing-per-page\"> {{wappTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber \r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\">\r\n </p-inputNumber>\r\n <span *ngIf=\"wappTableObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter (input)=\"onGlobalFilter(table, $event)\" \r\n [placeholder]=\"wappTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngIf=\"!wappTableObject.hasColumnFilters && wappTableObject.hasCheckbox; else noCheckbox\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-template #noCheckbox><th *ngIf=\"wappTableObject.hasCheckbox\"></th></ng-template>\r\n <ng-container *ngIf=\"!wappTableObject.hasSortableColumns; else hasNotSortableColumns\">\r\n <th *ngFor=\"let header of wappTableObject?.headers\" [class]=\"header == ('Imagen' || 'Image') ? 'image-header': ''\">\r\n {{header}}\r\n </th>\r\n </ng-container>\r\n <ng-template #hasNotSortableColumns>\r\n <ng-template ngFor let-filterType [ngForOf]=\"wappTableObject.headers\" let-i=\"index\"> \r\n <th [pSortableColumn]=\"wappTableObject.sortableNames[i]\" [class]=\"wappTableObject.headers[i] == ('Imagen' || 'Image') ? 'image-header': ''\">\r\n {{wappTableObject.headers[i]}} \r\n <p-sortIcon *ngIf=\"wappTableObject.sortableNames[i] != null\" [field]=\"wappTableObject.sortableNames[i]\"></p-sortIcon>\r\n </th>\r\n </ng-template>\r\n </ng-template>\r\n <th *ngIf=\"wappTableObject.hasDeleteButton || wappTableObject.hasEditButton\"></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-element>\r\n <tr [ngClass]=\"wappTableObject.hasSelectableRow ? 'p-selectable-row' : ''\" (click)=\"wappTableObject.hasSelectableRow ? onElement(element) : ''\">\r\n <ng-template ngFor let-columnType [ngForOf]=\"wappTableObject.columnTypes!\" let-i=\"index\">\r\n <td *ngIf=\"columnType == tableColumnTypes?.Checkbox! && wappTableObject.hasCheckbox\" [style]=\"'width: '+wappTableObject.columnWidths![i]+'; text-align: center;'\">\r\n <div *ngIf=\"wappTableObject.disableCheckbox; else activeCheckbox\">\r\n <p-tableCheckbox [value]=\"element\" [style]=\"\" [disabled]=\"readProperty(element, wappTableObject.disableCheckbox)\"></p-tableCheckbox>\r\n </div>\r\n <ng-template #activeCheckbox>\r\n <p-tableCheckbox [value]=\"element\"></p-tableCheckbox>\r\n </ng-template> </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Image\" class=\"text-center\">\r\n <img *ngIf=\"readProperty(element, wappTableObject.elementObjectRoutes[i])\" \r\n [src]=\"readProperty(element, wappTableObject.elementObjectRoutes[i])\" \r\n class=\"shadow-4 element-image-width\" [style]=\"'width: '+wappTableObject.columnWidths[i]\"/>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Text\" [style]=\"'width: '+wappTableObject.columnWidths[i]\">\r\n {{ readProperty(element, wappTableObject.elementObjectRoutes[i]) }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Currency\" [style]=\"'width: '+wappTableObject.columnWidths[i]\">\r\n {{ readProperty(element, wappTableObject.elementObjectRoutes[i]) | currency }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Badge\" [style]=\"'width: '+wappTableObject.columnWidths[i]\">\r\n <!-- ToDo hacer componente badge -->\r\n <!-- <wapp-view-badge [label]=\"readProperty(element, wappTableObject.elementObjectRoutes[i])\"\r\n [color]=\"'cyan'\">\r\n </wapp-view-badge> -->\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Boolean\">\r\n <i class=\"pi\" [ngClass]=\"getBooleanColumnClass(i, readProperty(element, wappTableObject.elementObjectRoutes[i]))\"></i>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Date\">\r\n {{ readProperty(element, wappTableObject.elementObjectRoutes[i]) | date }}\r\n </td>\r\n </ng-template>\r\n <td>\r\n <div class=\"flex justify-content-end\">\r\n <button *ngIf=\"wappTableObject?.hasViewButton\" \r\n pButton pRipple (click)=\"viewElement(element)\" \r\n icon=\"pi pi-eye\" class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject.customButtonConfig?.hasCustomButton\"\r\n pButton pRipple (click)=\"customElement(element)\"\r\n [icon]=\"wappTableObject.customButtonConfig?.icon!\"\r\n class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject?.hasEditButton && !wappTableObject.disableEditProperty\" \r\n pButton pRipple (click)=\"editElement(element)\"\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject.disableEditProperty\" \r\n pButton pRipple (click)=\"editElement(element)\" [disabled]=\"readProperty(element, wappTableObject.disableEditProperty)\"\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject?.hasCopyButton\" \r\n pButton pRipple (click)=\"confirmCopy($event, element)\" \r\n icon=\"pi pi-copy\" class=\"p-button-text p-button-help mr-2\">\r\n </button>\r\n <button *ngIf=\"!wappTableObject?.disableDelete && wappTableObject?.hasDeleteButton && !wappTableObject.disableDeleteProperty\" \r\n pButton pRipple (click)=\"confirmDelete($event, element)\"\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n <button *ngIf=\"!wappTableObject?.disableDelete && wappTableObject.disableDeleteProperty\" \r\n pButton pRipple (click)=\"confirmDelete($event, element)\" [disabled]=\"readProperty(element, wappTableObject.disableDeleteProperty)\"\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td colspan=\"8\">No elements.</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr>\r\n <td colspan=\"8\">Loading elements.</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n \r\n <ng-template #loadingTable>\r\n <p-table class=\"wapp-table-styles\" [value]=\"tableSkeletons\" responsiveLayout=\"scroll\" [paginator]=\"true\" [rows]=\"rowsPerPage\" [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\" \r\n [currentPageReportTemplate]=\"wappTableObject.currentPageReportTemplate ? wappTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords : 'Showing ' + rowsPerPage + ' of ' + totalRecords\"\r\n styleClass=\"p-datatable-striped\">\r\n <ng-template *ngIf=\"wappTableObject?.hasClearButton || wappTableObject.hasGlobalSearch\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <!-- <button *ngIf=\"wappTableObject.hasClearButton\" pButton label=\"Clear\" class=\"p-button-outlined\" icon=\"pi pi-filter-slash\"></button> -->\r\n <span class=\"showing-per-page\"> {{wappTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber \r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\">\r\n </p-inputNumber>\r\n <span *ngIf=\"wappTableObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter \r\n [placeholder]=\"wappTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngIf=\"!wappTableObject.hasColumnFilters && wappTableObject.hasCheckbox; else selectAllCheckbox\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-template #selectAllCheckbox><th></th></ng-template>\r\n <th *ngFor=\"let header of wappTableObject?.headers\">\r\n {{header}}\r\n </th>\r\n <th *ngIf=\"wappTableObject.hasDeleteButton || wappTableObject.hasEditButton\"></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\">\r\n <tr height=\"70px\">\r\n <td *ngFor=\"let item of wappTableObject.columnTypes\" [style.width]=\"item == tableColumnTypes.Checkbox ? '8rem' : ''\" >\r\n <p-tableCheckbox *ngIf=\"item == tableColumnTypes.Checkbox && wappTableObject.hasCheckbox\"></p-tableCheckbox>\r\n <p-skeleton *ngIf=\"item != tableColumnTypes.Checkbox\"></p-skeleton>\r\n </td>\r\n <td *ngIf=\"wappTableObject.hasEditButton || wappTableObject.hasDeleteButton\">\r\n <div class=\"flex justify-content-end\">\r\n <button *ngIf=\"wappTableObject?.hasViewButton\" \r\n pButton pRipple \r\n icon=\"pi pi-eye\" class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject.customButtonConfig?.hasCustomButton\"\r\n pButton pRipple\r\n [icon]=\"wappTableObject.customButtonConfig?.icon!\"\r\n class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject?.hasEditButton\" \r\n pButton pRipple\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject?.hasCopyButton\" \r\n pButton pRipple \r\n icon=\"pi pi-copy\" class=\"p-button-text p-button-help mr-2\">\r\n </button>\r\n <button *ngIf=\"!wappTableObject?.disableDelete && wappTableObject?.hasDeleteButton\" \r\n pButton pRipple\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ng-template>\r\n</div>\r\n<p-confirmPopup></p-confirmPopup>", styles: [".heading1{font-size:3.1428571429rem;line-height:3.4285714286rem;font-weight:700}.heading2{font-size:2.8571428571rem;line-height:3.1428571429rem;font-weight:700}.heading3{font-size:2.5714285714rem;line-height:2.8571428571rem;font-weight:700}.heading4{font-size:2.2857142857rem;line-height:2.5714285714rem;font-weight:700}.heading5{font-size:2rem;line-height:2.2857142857rem;font-weight:700}.heading6{font-size:1.7142857143rem;line-height:2rem;font-weight:700}.subtitle1{font-size:1.4285714286rem;line-height:1.7142857143rem;font-weight:700}.subtitle2{font-size:1.1428571429rem;line-height:1.4285714286rem;font-weight:700}.body,.input-generic-placeholder-small,.input-generic-small{font-size:1rem;line-height:1.1428571429rem;font-weight:600}.caption{font-size:.8571428571rem;line-height:1.1428571429rem;font-weight:600}.icon-small-size{font-size:8px}.icon-small-x-size{font-size:12px}.icon-medium-size{font-size:16px}.icon-large-size{font-size:24px}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:2px solid #0085c7}.button-large-typography{font-size:20px;line-height:24px;font-weight:700}.button-medium-typography{font-size:16px;line-height:16px;font-weight:700}.button-small-typography{font-size:12px;line-height:16px;font-weight:700}.button-text-typography,.input-generic-label{font-size:14px;line-height:16px;font-weight:700}.input-generic-placeholder,.input-generic{font-size:16px;line-height:24px;font-weight:600}.input-generic-placeholder-small{padding:8px 12px 12px}.input-generic-valid{border-radius:8px;border:2px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:2px solid #B3FFD3!important;box-shadow:0 0 2px 2px #b3ffd3!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:2px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:2px solid #FFECB8!important;box-shadow:0 0 2px 2px #ffecb8!important;padding-left:16px}.input-generic-error{border-radius:8px;border:2px solid #FFBDBD}.tag-generic{font-size:14px;line-height:16px;font-weight:700}.tag-generic-small{font-size:12px;line-height:16px;font-weight:700}.table-container{padding:0 20px;background-color:#fff;border-radius:8px;box-shadow:0 4px 8px #0000001a}.showing-per-page{color:#bdc1c6;font-weight:600}::ng-deep .wapp-table-styles .showing-per-page .p-button{border-radius:8px}::ng-deep .wapp-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#bdc1c6;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator{border-width:0;padding:16px 20px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#e0f5fc;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-current{color:#bdc1c6;padding:0}::ng-deep .wapp-table-styles .p-datatable .p-sortable-column .p-sortable-column-icon{color:#bdc1c6;margin-left:.5rem}::ng-deep .wapp-table-styles .p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#000}::ng-deep .wapp-table-styles .p-datatable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .wapp-table-styles .p-datatable .p-datatable-thead>tr>th{color:#bdc1c6;background:#ffffff}::ng-deep .wapp-table-styles .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background:#f8f9fa}::ng-deep .wapp-table-styles .p-datatable .p-paginator-bottom{justify-content:normal!important}::ng-deep .wapp-table-styles .p-datatable .p-paginator-bottom>button{color:#bdc1c6}::ng-deep .wapp-table-styles .p-datatable .p-datatable-header{background:#ffffff;border-width:0px;padding:16px 0!important;font-weight:600}::ng-deep .wapp-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:2px 0px 2px 0px;border-color:#e8eaed;color:#dadce0;text-align:center}::ng-deep .wapp-table-styles .p-button.p-button-outlined{color:#e8eaed;border-width:2px}::ng-deep .wapp-table-styles .p-datatable .p-datatable-tbody>tr>td{columns:#2E3134;font-weight:600;text-align:left;border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:8px}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box{border:2px solid #e8eaed;width:16px;height:16px;color:#e8eaed;border-radius:4px;align-self:center}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:bolder}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#0085c7!important;background:#0085c7;color:#0085c7!important}::ng-deep .wapp-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .wapp-table-styles .p-inputtext:enabled:hover{border-color:#e8eaed}::ng-deep .wapp-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8eaed;border:2px solid;background-color:#f1f3f4}::ng-deep .wapp-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#2e3134}::ng-deep .wapp-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .wapp-table-styles .p-datatable .p-datatable-thead>tr>th:hover{color:#000;background:#ffffff}.height-input{height:32px}.wapp-input{border-radius:8px;border-width:2px;border-color:#e8eaed;font-size:16px;line-height:5px;font-weight:100;gap:16px}::-webkit-input-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}::-moz-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}:-ms-input-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}:-moz-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}.wapp-input:hover{border:2px solid #0085c7!important}.wapp-input:focus{box-shadow:0 0 3px 3px #e0f5fc!important;background-color:transparent!important}.pi-search{left:.75rem;color:#bdc1c6!important}.image-header{text-align:center!important}::ng-deep .wapp-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .wapp-table-styles .p-avatar{border:1px solid #e8eaed}\n"], dependencies: [{ kind: "directive", type: i2.InputText, selector: "[pInputText]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i6.Ripple, selector: "[pRipple]" }, { kind: "component", type: i7.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: i8.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i9.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i9.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i9.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i9.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i9.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i10.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "pipe", type: i4.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
|
|
153
153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: WTableComponent, decorators: [{
|
|
154
154
|
type: Component,
|
|
155
|
-
args: [{ selector: 'w-table', providers: [ConfirmationService], template: "<ng-content select=\".filter-panel\"></ng-content>\r\n<div *ngIf=\"wappTableObject\" [class.table-container]=\"wappTableObject.tableContainer\">\r\n <p-table class=\"wapp-table-styles\" \r\n *ngIf=\"!loading; else loadingTable\" #table \r\n [value]=\"elements\" dataKey=\"{{wappTableObject.identificator}}\" \r\n [paginator]=\"true\"\r\n [selection]=\"selectedElements\" (selectionChange)=\"onSelectionChange($event)\"\r\n [selectAll]=\"selectAll\" (selectAllChange)=\"onSelectAllChange($event)\"\r\n [totalRecords]=\"totalRecords\" [showCurrentPageReport]=\"true\" \r\n [rows]=\"rowsPerPage\"\r\n [currentPageReportTemplate]=\"wappTableObject.currentPageReportTemplate ? wappTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n [globalFilterFields]=\"wappTableObject.globalFilterFields!\" responsiveLayout=\"scroll\"\r\n [rowHover]=\"true\" [tableStyle]=\"{'min-width': '70rem'}\"\r\n styleClass=\"p-datatable-striped\">\r\n <ng-template *ngIf=\"wappTableObject?.hasClearButton || wappTableObject.hasGlobalSearch\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <!-- <button *ngIf=\"wappTableObject.hasClearButton\" pButton [label]=\"wappTableObject.clearPlaceholder!\" class=\"p-button-outlined\" icon=\"pi pi-filter-slash\" (click)=\"clear(table)\"></button> -->\r\n <span class=\"showing-per-page\"> {{wappTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber \r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\">\r\n </p-inputNumber>\r\n <span *ngIf=\"wappTableObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter (input)=\"onGlobalFilter(table, $event)\" \r\n [placeholder]=\"wappTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngIf=\"!wappTableObject.hasColumnFilters && wappTableObject.hasCheckbox; else noCheckbox\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-template #noCheckbox><th *ngIf=\"wappTableObject.hasCheckbox\"></th></ng-template>\r\n <ng-container *ngIf=\"!wappTableObject.hasSortableColumns; else hasNotSortableColumns\">\r\n <th *ngFor=\"let header of wappTableObject?.headers\">\r\n {{header}}\r\n </th>\r\n </ng-container>\r\n <ng-template #hasNotSortableColumns>\r\n <ng-template ngFor let-filterType [ngForOf]=\"wappTableObject.headers\" let-i=\"index\"> \r\n <th [pSortableColumn]=\"wappTableObject.sortableNames[i]\">\r\n {{wappTableObject.headers[i]}} \r\n <p-sortIcon *ngIf=\"wappTableObject.sortableNames[i] != null\" [field]=\"wappTableObject.sortableNames[i]\"></p-sortIcon>\r\n </th>\r\n </ng-template>\r\n </ng-template>\r\n <th *ngIf=\"wappTableObject.hasDeleteButton || wappTableObject.hasEditButton\"></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-element>\r\n <tr [ngClass]=\"wappTableObject.hasSelectableRow ? 'p-selectable-row' : ''\" (click)=\"wappTableObject.hasSelectableRow ? onElement(element) : ''\">\r\n <ng-template ngFor let-columnType [ngForOf]=\"wappTableObject.columnTypes!\" let-i=\"index\">\r\n <td *ngIf=\"columnType == tableColumnTypes?.Checkbox! && wappTableObject.hasCheckbox\" [style]=\"'width: '+wappTableObject.columnWidths![i]\">\r\n <div *ngIf=\"wappTableObject.disableCheckbox; else activeCheckbox\">\r\n <p-tableCheckbox [value]=\"element\" [disabled]=\"readProperty(element, wappTableObject.disableCheckbox)\"></p-tableCheckbox>\r\n </div>\r\n <ng-template #activeCheckbox>\r\n <p-tableCheckbox [value]=\"element\"></p-tableCheckbox>\r\n </ng-template> </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Image\" class=\"text-center\">\r\n <img *ngIf=\"readProperty(element, wappTableObject.elementObjectRoutes[i])\" \r\n [src]=\"readProperty(element, wappTableObject.elementObjectRoutes[i])\" \r\n class=\"shadow-4 element-image-width\" [style]=\"'width: '+wappTableObject.columnWidths[i]\"/>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Text\" [style]=\"'width: '+wappTableObject.columnWidths[i]\">\r\n {{ readProperty(element, wappTableObject.elementObjectRoutes[i]) }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Currency\" [style]=\"'width: '+wappTableObject.columnWidths[i]\">\r\n {{ readProperty(element, wappTableObject.elementObjectRoutes[i]) | currency }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Badge\" [style]=\"'width: '+wappTableObject.columnWidths[i]\">\r\n <!-- ToDo hacer componente badge -->\r\n <!-- <wapp-view-badge [label]=\"readProperty(element, wappTableObject.elementObjectRoutes[i])\"\r\n [color]=\"'cyan'\">\r\n </wapp-view-badge> -->\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Boolean\">\r\n <i class=\"pi\" [ngClass]=\"getBooleanColumnClass(i, readProperty(element, wappTableObject.elementObjectRoutes[i]))\"></i>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Date\">\r\n {{ readProperty(element, wappTableObject.elementObjectRoutes[i]) | date }}\r\n </td>\r\n </ng-template>\r\n <td>\r\n <div class=\"flex justify-content-end\">\r\n <button *ngIf=\"wappTableObject?.hasViewButton\" \r\n pButton pRipple (click)=\"viewElement(element)\" \r\n icon=\"pi pi-eye\" class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject.customButtonConfig?.hasCustomButton\"\r\n pButton pRipple (click)=\"customElement(element)\"\r\n [icon]=\"wappTableObject.customButtonConfig?.icon!\"\r\n class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject?.hasEditButton && !wappTableObject.disableEditProperty\" \r\n pButton pRipple (click)=\"editElement(element)\"\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject.disableEditProperty\" \r\n pButton pRipple (click)=\"editElement(element)\" [disabled]=\"readProperty(element, wappTableObject.disableEditProperty)\"\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject?.hasCopyButton\" \r\n pButton pRipple (click)=\"confirmCopy($event, element)\" \r\n icon=\"pi pi-copy\" class=\"p-button-text p-button-help mr-2\">\r\n </button>\r\n <button *ngIf=\"!wappTableObject?.disableDelete && wappTableObject?.hasDeleteButton && !wappTableObject.disableDeleteProperty\" \r\n pButton pRipple (click)=\"confirmDelete($event, element)\"\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n <button *ngIf=\"!wappTableObject?.disableDelete && wappTableObject.disableDeleteProperty\" \r\n pButton pRipple (click)=\"confirmDelete($event, element)\" [disabled]=\"readProperty(element, wappTableObject.disableDeleteProperty)\"\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td colspan=\"8\">No elements.</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr>\r\n <td colspan=\"8\">Loading elements.</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n \r\n <ng-template #loadingTable>\r\n <p-table class=\"wapp-table-styles\" [value]=\"tableSkeletons\" responsiveLayout=\"scroll\" [paginator]=\"true\" [rows]=\"rowsPerPage\" [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\" \r\n [currentPageReportTemplate]=\"wappTableObject.currentPageReportTemplate ? wappTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords : 'Showing ' + rowsPerPage + ' of ' + totalRecords\"\r\n styleClass=\"p-datatable-striped\">\r\n <ng-template *ngIf=\"wappTableObject?.hasClearButton || wappTableObject.hasGlobalSearch\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <!-- <button *ngIf=\"wappTableObject.hasClearButton\" pButton label=\"Clear\" class=\"p-button-outlined\" icon=\"pi pi-filter-slash\"></button> -->\r\n <span class=\"showing-per-page\"> {{wappTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber \r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\">\r\n </p-inputNumber>\r\n <span *ngIf=\"wappTableObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter \r\n [placeholder]=\"wappTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngIf=\"!wappTableObject.hasColumnFilters && wappTableObject.hasCheckbox; else selectAllCheckbox\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-template #selectAllCheckbox><th></th></ng-template>\r\n <th *ngFor=\"let header of wappTableObject?.headers\">\r\n {{header}}\r\n </th>\r\n <th *ngIf=\"wappTableObject.hasDeleteButton || wappTableObject.hasEditButton\"></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\">\r\n <tr height=\"70px\">\r\n <td *ngFor=\"let item of wappTableObject.columnTypes\" [style.width]=\"item == tableColumnTypes.Checkbox ? '8rem' : ''\" >\r\n <p-tableCheckbox *ngIf=\"item == tableColumnTypes.Checkbox && wappTableObject.hasCheckbox\"></p-tableCheckbox>\r\n <p-skeleton *ngIf=\"item != tableColumnTypes.Checkbox\"></p-skeleton>\r\n </td>\r\n <td *ngIf=\"wappTableObject.hasEditButton || wappTableObject.hasDeleteButton\">\r\n <div class=\"flex justify-content-end\">\r\n <button *ngIf=\"wappTableObject?.hasViewButton\" \r\n pButton pRipple \r\n icon=\"pi pi-eye\" class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject.customButtonConfig?.hasCustomButton\"\r\n pButton pRipple\r\n [icon]=\"wappTableObject.customButtonConfig?.icon!\"\r\n class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject?.hasEditButton\" \r\n pButton pRipple\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject?.hasCopyButton\" \r\n pButton pRipple \r\n icon=\"pi pi-copy\" class=\"p-button-text p-button-help mr-2\">\r\n </button>\r\n <button *ngIf=\"!wappTableObject?.disableDelete && wappTableObject?.hasDeleteButton\" \r\n pButton pRipple\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ng-template>\r\n</div>\r\n<p-confirmPopup></p-confirmPopup>", styles: [".heading1{font-size:3.1428571429rem;line-height:3.4285714286rem;font-weight:700}.heading2{font-size:2.8571428571rem;line-height:3.1428571429rem;font-weight:700}.heading3{font-size:2.5714285714rem;line-height:2.8571428571rem;font-weight:700}.heading4{font-size:2.2857142857rem;line-height:2.5714285714rem;font-weight:700}.heading5{font-size:2rem;line-height:2.2857142857rem;font-weight:700}.heading6{font-size:1.7142857143rem;line-height:2rem;font-weight:700}.subtitle1{font-size:1.4285714286rem;line-height:1.7142857143rem;font-weight:700}.subtitle2{font-size:1.1428571429rem;line-height:1.4285714286rem;font-weight:700}.body,.input-generic-placeholder-small,.input-generic-small{font-size:1rem;line-height:1.1428571429rem;font-weight:600}.caption{font-size:.8571428571rem;line-height:1.1428571429rem;font-weight:600}.icon-small-size{font-size:8px}.icon-small-x-size{font-size:12px}.icon-medium-size{font-size:16px}.icon-large-size{font-size:24px}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:2px solid #0085c7}.button-large-typography{font-size:20px;line-height:24px;font-weight:700}.button-medium-typography{font-size:16px;line-height:16px;font-weight:700}.button-small-typography{font-size:12px;line-height:16px;font-weight:700}.button-text-typography,.input-generic-label{font-size:14px;line-height:16px;font-weight:700}.input-generic-placeholder,.input-generic{font-size:16px;line-height:24px;font-weight:600}.input-generic-placeholder-small{padding:8px 12px 12px}.input-generic-valid{border-radius:8px;border:2px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:2px solid #B3FFD3!important;box-shadow:0 0 2px 2px #b3ffd3!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:2px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:2px solid #FFECB8!important;box-shadow:0 0 2px 2px #ffecb8!important;padding-left:16px}.input-generic-error{border-radius:8px;border:2px solid #FFBDBD}.tag-generic{font-size:14px;line-height:16px;font-weight:700}.tag-generic-small{font-size:12px;line-height:16px;font-weight:700}.table-container{padding:0 20px;background-color:#fff;border-radius:8px;box-shadow:0 4px 8px #0000001a}.showing-per-page{color:#bdc1c6;font-weight:600}::ng-deep .wapp-table-styles .showing-per-page .p-button{border-radius:8px}::ng-deep .wapp-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#bdc1c6;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator{border-width:0;padding:16px 20px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#e0f5fc;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-current{color:#bdc1c6;padding:0}::ng-deep .wapp-table-styles .p-datatable .p-sortable-column .p-sortable-column-icon{color:#bdc1c6;margin-left:.5rem}::ng-deep .wapp-table-styles .p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#000}::ng-deep .wapp-table-styles .p-datatable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .wapp-table-styles .p-datatable .p-datatable-thead>tr>th{color:#bdc1c6;background:#ffffff}::ng-deep .wapp-table-styles .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background:#f8f9fa}::ng-deep .wapp-table-styles .p-datatable .p-paginator-bottom{justify-content:normal!important}::ng-deep .wapp-table-styles .p-datatable .p-paginator-bottom>button{color:#bdc1c6}::ng-deep .wapp-table-styles .p-datatable .p-datatable-header{background:#ffffff;border-width:0px;padding:16px 0!important;font-weight:600}::ng-deep .wapp-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:2px 0px 2px 0px;border-color:#e8eaed;color:#dadce0;text-align:center}::ng-deep .wapp-table-styles .p-button.p-button-outlined{color:#e8eaed;border-width:2px}::ng-deep .wapp-table-styles .p-datatable .p-datatable-tbody>tr>td{columns:#2E3134;font-weight:600;text-align:left;border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:8px}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box{border:2px solid #e8eaed;width:16px;height:16px;color:#e8eaed;border-radius:4px;align-self:center}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:bolder}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#0085c7!important;background:#0085c7;color:#0085c7!important}::ng-deep .wapp-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .wapp-table-styles .p-inputtext:enabled:hover{border-color:#e8eaed}::ng-deep .wapp-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8eaed;border:2px solid;background-color:#f1f3f4}::ng-deep .wapp-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#2e3134}::ng-deep .wapp-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .wapp-table-styles .p-datatable .p-datatable-thead>tr>th:hover{color:#000;background:#ffffff}.height-input{height:32px}.wapp-input{border-radius:8px;border-width:2px;border-color:#e8eaed;font-size:16px;line-height:5px;font-weight:100;gap:16px}::-webkit-input-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}::-moz-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}:-ms-input-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}:-moz-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}.wapp-input:hover{border:2px solid #0085c7!important}.wapp-input:focus{box-shadow:0 0 3px 3px #e0f5fc!important;background-color:transparent!important}.pi-search{left:.75rem;color:#bdc1c6!important}::ng-deep .wapp-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .wapp-table-styles .p-avatar{border:1px solid #e8eaed}\n"] }]
|
|
155
|
+
args: [{ selector: 'w-table', providers: [ConfirmationService], template: "<ng-content select=\".filter-panel\"></ng-content>\r\n<div *ngIf=\"wappTableObject\" [class.table-container]=\"wappTableObject.tableContainer\">\r\n <p-table class=\"wapp-table-styles\" \r\n *ngIf=\"!loading; else loadingTable\" #table \r\n [value]=\"elements\" dataKey=\"{{wappTableObject.identificator}}\" \r\n [paginator]=\"true\"\r\n [selection]=\"selectedElements\" (selectionChange)=\"onSelectionChange($event)\"\r\n [selectAll]=\"selectAll\" (selectAllChange)=\"onSelectAllChange($event)\"\r\n [totalRecords]=\"totalRecords\" [showCurrentPageReport]=\"true\" \r\n [rows]=\"rowsPerPage\"\r\n [currentPageReportTemplate]=\"wappTableObject.currentPageReportTemplate ? wappTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n [globalFilterFields]=\"wappTableObject.globalFilterFields!\" responsiveLayout=\"scroll\"\r\n [rowHover]=\"true\" [tableStyle]=\"{'min-width': '70rem'}\"\r\n styleClass=\"p-datatable-striped\">\r\n <ng-template *ngIf=\"wappTableObject?.hasClearButton || wappTableObject.hasGlobalSearch\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <!-- <button *ngIf=\"wappTableObject.hasClearButton\" pButton [label]=\"wappTableObject.clearPlaceholder!\" class=\"p-button-outlined\" icon=\"pi pi-filter-slash\" (click)=\"clear(table)\"></button> -->\r\n <span class=\"showing-per-page\"> {{wappTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber \r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\">\r\n </p-inputNumber>\r\n <span *ngIf=\"wappTableObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter (input)=\"onGlobalFilter(table, $event)\" \r\n [placeholder]=\"wappTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngIf=\"!wappTableObject.hasColumnFilters && wappTableObject.hasCheckbox; else noCheckbox\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-template #noCheckbox><th *ngIf=\"wappTableObject.hasCheckbox\"></th></ng-template>\r\n <ng-container *ngIf=\"!wappTableObject.hasSortableColumns; else hasNotSortableColumns\">\r\n <th *ngFor=\"let header of wappTableObject?.headers\" [class]=\"header == ('Imagen' || 'Image') ? 'image-header': ''\">\r\n {{header}}\r\n </th>\r\n </ng-container>\r\n <ng-template #hasNotSortableColumns>\r\n <ng-template ngFor let-filterType [ngForOf]=\"wappTableObject.headers\" let-i=\"index\"> \r\n <th [pSortableColumn]=\"wappTableObject.sortableNames[i]\" [class]=\"wappTableObject.headers[i] == ('Imagen' || 'Image') ? 'image-header': ''\">\r\n {{wappTableObject.headers[i]}} \r\n <p-sortIcon *ngIf=\"wappTableObject.sortableNames[i] != null\" [field]=\"wappTableObject.sortableNames[i]\"></p-sortIcon>\r\n </th>\r\n </ng-template>\r\n </ng-template>\r\n <th *ngIf=\"wappTableObject.hasDeleteButton || wappTableObject.hasEditButton\"></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-element>\r\n <tr [ngClass]=\"wappTableObject.hasSelectableRow ? 'p-selectable-row' : ''\" (click)=\"wappTableObject.hasSelectableRow ? onElement(element) : ''\">\r\n <ng-template ngFor let-columnType [ngForOf]=\"wappTableObject.columnTypes!\" let-i=\"index\">\r\n <td *ngIf=\"columnType == tableColumnTypes?.Checkbox! && wappTableObject.hasCheckbox\" [style]=\"'width: '+wappTableObject.columnWidths![i]+'; text-align: center;'\">\r\n <div *ngIf=\"wappTableObject.disableCheckbox; else activeCheckbox\">\r\n <p-tableCheckbox [value]=\"element\" [style]=\"\" [disabled]=\"readProperty(element, wappTableObject.disableCheckbox)\"></p-tableCheckbox>\r\n </div>\r\n <ng-template #activeCheckbox>\r\n <p-tableCheckbox [value]=\"element\"></p-tableCheckbox>\r\n </ng-template> </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Image\" class=\"text-center\">\r\n <img *ngIf=\"readProperty(element, wappTableObject.elementObjectRoutes[i])\" \r\n [src]=\"readProperty(element, wappTableObject.elementObjectRoutes[i])\" \r\n class=\"shadow-4 element-image-width\" [style]=\"'width: '+wappTableObject.columnWidths[i]\"/>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Text\" [style]=\"'width: '+wappTableObject.columnWidths[i]\">\r\n {{ readProperty(element, wappTableObject.elementObjectRoutes[i]) }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Currency\" [style]=\"'width: '+wappTableObject.columnWidths[i]\">\r\n {{ readProperty(element, wappTableObject.elementObjectRoutes[i]) | currency }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Badge\" [style]=\"'width: '+wappTableObject.columnWidths[i]\">\r\n <!-- ToDo hacer componente badge -->\r\n <!-- <wapp-view-badge [label]=\"readProperty(element, wappTableObject.elementObjectRoutes[i])\"\r\n [color]=\"'cyan'\">\r\n </wapp-view-badge> -->\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Boolean\">\r\n <i class=\"pi\" [ngClass]=\"getBooleanColumnClass(i, readProperty(element, wappTableObject.elementObjectRoutes[i]))\"></i>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Date\">\r\n {{ readProperty(element, wappTableObject.elementObjectRoutes[i]) | date }}\r\n </td>\r\n </ng-template>\r\n <td>\r\n <div class=\"flex justify-content-end\">\r\n <button *ngIf=\"wappTableObject?.hasViewButton\" \r\n pButton pRipple (click)=\"viewElement(element)\" \r\n icon=\"pi pi-eye\" class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject.customButtonConfig?.hasCustomButton\"\r\n pButton pRipple (click)=\"customElement(element)\"\r\n [icon]=\"wappTableObject.customButtonConfig?.icon!\"\r\n class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject?.hasEditButton && !wappTableObject.disableEditProperty\" \r\n pButton pRipple (click)=\"editElement(element)\"\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject.disableEditProperty\" \r\n pButton pRipple (click)=\"editElement(element)\" [disabled]=\"readProperty(element, wappTableObject.disableEditProperty)\"\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject?.hasCopyButton\" \r\n pButton pRipple (click)=\"confirmCopy($event, element)\" \r\n icon=\"pi pi-copy\" class=\"p-button-text p-button-help mr-2\">\r\n </button>\r\n <button *ngIf=\"!wappTableObject?.disableDelete && wappTableObject?.hasDeleteButton && !wappTableObject.disableDeleteProperty\" \r\n pButton pRipple (click)=\"confirmDelete($event, element)\"\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n <button *ngIf=\"!wappTableObject?.disableDelete && wappTableObject.disableDeleteProperty\" \r\n pButton pRipple (click)=\"confirmDelete($event, element)\" [disabled]=\"readProperty(element, wappTableObject.disableDeleteProperty)\"\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td colspan=\"8\">No elements.</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr>\r\n <td colspan=\"8\">Loading elements.</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n \r\n <ng-template #loadingTable>\r\n <p-table class=\"wapp-table-styles\" [value]=\"tableSkeletons\" responsiveLayout=\"scroll\" [paginator]=\"true\" [rows]=\"rowsPerPage\" [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\" \r\n [currentPageReportTemplate]=\"wappTableObject.currentPageReportTemplate ? wappTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords : 'Showing ' + rowsPerPage + ' of ' + totalRecords\"\r\n styleClass=\"p-datatable-striped\">\r\n <ng-template *ngIf=\"wappTableObject?.hasClearButton || wappTableObject.hasGlobalSearch\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <!-- <button *ngIf=\"wappTableObject.hasClearButton\" pButton label=\"Clear\" class=\"p-button-outlined\" icon=\"pi pi-filter-slash\"></button> -->\r\n <span class=\"showing-per-page\"> {{wappTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber \r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\">\r\n </p-inputNumber>\r\n <span *ngIf=\"wappTableObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter \r\n [placeholder]=\"wappTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngIf=\"!wappTableObject.hasColumnFilters && wappTableObject.hasCheckbox; else selectAllCheckbox\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-template #selectAllCheckbox><th></th></ng-template>\r\n <th *ngFor=\"let header of wappTableObject?.headers\">\r\n {{header}}\r\n </th>\r\n <th *ngIf=\"wappTableObject.hasDeleteButton || wappTableObject.hasEditButton\"></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\">\r\n <tr height=\"70px\">\r\n <td *ngFor=\"let item of wappTableObject.columnTypes\" [style.width]=\"item == tableColumnTypes.Checkbox ? '8rem' : ''\" >\r\n <p-tableCheckbox *ngIf=\"item == tableColumnTypes.Checkbox && wappTableObject.hasCheckbox\"></p-tableCheckbox>\r\n <p-skeleton *ngIf=\"item != tableColumnTypes.Checkbox\"></p-skeleton>\r\n </td>\r\n <td *ngIf=\"wappTableObject.hasEditButton || wappTableObject.hasDeleteButton\">\r\n <div class=\"flex justify-content-end\">\r\n <button *ngIf=\"wappTableObject?.hasViewButton\" \r\n pButton pRipple \r\n icon=\"pi pi-eye\" class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject.customButtonConfig?.hasCustomButton\"\r\n pButton pRipple\r\n [icon]=\"wappTableObject.customButtonConfig?.icon!\"\r\n class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject?.hasEditButton\" \r\n pButton pRipple\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableObject?.hasCopyButton\" \r\n pButton pRipple \r\n icon=\"pi pi-copy\" class=\"p-button-text p-button-help mr-2\">\r\n </button>\r\n <button *ngIf=\"!wappTableObject?.disableDelete && wappTableObject?.hasDeleteButton\" \r\n pButton pRipple\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ng-template>\r\n</div>\r\n<p-confirmPopup></p-confirmPopup>", styles: [".heading1{font-size:3.1428571429rem;line-height:3.4285714286rem;font-weight:700}.heading2{font-size:2.8571428571rem;line-height:3.1428571429rem;font-weight:700}.heading3{font-size:2.5714285714rem;line-height:2.8571428571rem;font-weight:700}.heading4{font-size:2.2857142857rem;line-height:2.5714285714rem;font-weight:700}.heading5{font-size:2rem;line-height:2.2857142857rem;font-weight:700}.heading6{font-size:1.7142857143rem;line-height:2rem;font-weight:700}.subtitle1{font-size:1.4285714286rem;line-height:1.7142857143rem;font-weight:700}.subtitle2{font-size:1.1428571429rem;line-height:1.4285714286rem;font-weight:700}.body,.input-generic-placeholder-small,.input-generic-small{font-size:1rem;line-height:1.1428571429rem;font-weight:600}.caption{font-size:.8571428571rem;line-height:1.1428571429rem;font-weight:600}.icon-small-size{font-size:8px}.icon-small-x-size{font-size:12px}.icon-medium-size{font-size:16px}.icon-large-size{font-size:24px}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:2px solid #0085c7}.button-large-typography{font-size:20px;line-height:24px;font-weight:700}.button-medium-typography{font-size:16px;line-height:16px;font-weight:700}.button-small-typography{font-size:12px;line-height:16px;font-weight:700}.button-text-typography,.input-generic-label{font-size:14px;line-height:16px;font-weight:700}.input-generic-placeholder,.input-generic{font-size:16px;line-height:24px;font-weight:600}.input-generic-placeholder-small{padding:8px 12px 12px}.input-generic-valid{border-radius:8px;border:2px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:2px solid #B3FFD3!important;box-shadow:0 0 2px 2px #b3ffd3!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:2px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:2px solid #FFECB8!important;box-shadow:0 0 2px 2px #ffecb8!important;padding-left:16px}.input-generic-error{border-radius:8px;border:2px solid #FFBDBD}.tag-generic{font-size:14px;line-height:16px;font-weight:700}.tag-generic-small{font-size:12px;line-height:16px;font-weight:700}.table-container{padding:0 20px;background-color:#fff;border-radius:8px;box-shadow:0 4px 8px #0000001a}.showing-per-page{color:#bdc1c6;font-weight:600}::ng-deep .wapp-table-styles .showing-per-page .p-button{border-radius:8px}::ng-deep .wapp-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#bdc1c6;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator{border-width:0;padding:16px 20px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#e0f5fc;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-current{color:#bdc1c6;padding:0}::ng-deep .wapp-table-styles .p-datatable .p-sortable-column .p-sortable-column-icon{color:#bdc1c6;margin-left:.5rem}::ng-deep .wapp-table-styles .p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#000}::ng-deep .wapp-table-styles .p-datatable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .wapp-table-styles .p-datatable .p-datatable-thead>tr>th{color:#bdc1c6;background:#ffffff}::ng-deep .wapp-table-styles .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background:#f8f9fa}::ng-deep .wapp-table-styles .p-datatable .p-paginator-bottom{justify-content:normal!important}::ng-deep .wapp-table-styles .p-datatable .p-paginator-bottom>button{color:#bdc1c6}::ng-deep .wapp-table-styles .p-datatable .p-datatable-header{background:#ffffff;border-width:0px;padding:16px 0!important;font-weight:600}::ng-deep .wapp-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:2px 0px 2px 0px;border-color:#e8eaed;color:#dadce0;text-align:center}::ng-deep .wapp-table-styles .p-button.p-button-outlined{color:#e8eaed;border-width:2px}::ng-deep .wapp-table-styles .p-datatable .p-datatable-tbody>tr>td{columns:#2E3134;font-weight:600;text-align:left;border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:8px}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box{border:2px solid #e8eaed;width:16px;height:16px;color:#e8eaed;border-radius:4px;align-self:center}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:bolder}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#0085c7!important;background:#0085c7;color:#0085c7!important}::ng-deep .wapp-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .wapp-table-styles .p-inputtext:enabled:hover{border-color:#e8eaed}::ng-deep .wapp-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8eaed;border:2px solid;background-color:#f1f3f4}::ng-deep .wapp-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#2e3134}::ng-deep .wapp-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .wapp-table-styles .p-datatable .p-datatable-thead>tr>th:hover{color:#000;background:#ffffff}.height-input{height:32px}.wapp-input{border-radius:8px;border-width:2px;border-color:#e8eaed;font-size:16px;line-height:5px;font-weight:100;gap:16px}::-webkit-input-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}::-moz-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}:-ms-input-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}:-moz-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}.wapp-input:hover{border:2px solid #0085c7!important}.wapp-input:focus{box-shadow:0 0 3px 3px #e0f5fc!important;background-color:transparent!important}.pi-search{left:.75rem;color:#bdc1c6!important}.image-header{text-align:center!important}::ng-deep .wapp-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .wapp-table-styles .p-avatar{border:1px solid #e8eaed}\n"] }]
|
|
156
156
|
}], ctorParameters: function () { return [{ type: i1.ConfirmationService }]; }, propDecorators: { elements: [{
|
|
157
157
|
type: Input,
|
|
158
158
|
args: ['elements']
|
|
@@ -193,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
193
193
|
type: ViewChild,
|
|
194
194
|
args: ['table']
|
|
195
195
|
}] } });
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YXBwLWNvbXBvbmVudHMvc3JjL2xpYi90YWJsZXMvdy10YWJsZS93LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3RhYmxlcy93LXRhYmxlL3ctdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJbEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7OztBQVMzRixNQUFNLE9BQU8sZUFBZTtJQW9DMUIsWUFDVSxtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQXBDbEQscUJBQWdCLEdBQVUsRUFBRSxDQUFDO1FBRTdCLHdCQUFtQixHQUFXLFFBQVEsQ0FBQTtRQUN0QyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBSTNCLG1CQUFjLEdBQVEsQ0FBQyxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsQ0FBQyxDQUFDO1FBRS9ELGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBV1osZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDN0IsWUFBTyxHQUFZLElBQUksQ0FBQztRQUdmLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN0Qyx3QkFBbUIsR0FB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QkFBb0I7Z0JBRVAsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNDLFNBQVM7c0JBQTVCLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBXYXBwVGFibGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL3dhcHAtdGFibGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbkZpbHRlclR5cGVzLCBUYWJsZUNvbHVtblR5cGVzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9lbnVtcy5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3ctdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93LXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93LXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbQ29uZmlybWF0aW9uU2VydmljZV1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlc3tcclxuICBzZWxlY3RlZEVsZW1lbnRzOiBhbnlbXSA9IFtdO1xyXG4gIHRyYW5zbGF0aW9uczogYW55O1xyXG4gIHRyYW5zbGF0ZU9iamVjdE5hbWU6IHN0cmluZyA9IFwib2JqZWN0XCJcclxuICBzZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZGlhbG9nUmVmITogRHluYW1pY0RpYWxvZ1JlZjtcclxuXHJcbiAgdGFibGVTa2VsZXRvbnM6IGFueSA9IFt7bmFtZTogJyd9LCB7bmFtZTogJyd9LCB7bmFtZTogJyd9LCB7bmFtZTogJyd9XTtcclxuICBcclxuICBwcml2YXRlIF90b3RhbFJlY29yZHM6IG51bWJlciA9IDA7XHJcblxyXG4gIHNldCB0b3RhbFJlY29yZHModmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fdG90YWxSZWNvcmRzID0gdmFsdWU7XHJcbiAgfSAgXHJcblxyXG4gIGdldCB0b3RhbFJlY29yZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdG90YWxSZWNvcmRzO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCdlbGVtZW50cycpIGVsZW1lbnRzITogYW55W107XHJcbiAgQElucHV0KCdyb3dzUGVyUGFnZScpIHJvd3NQZXJQYWdlOiBudW1iZXIgPSAxMDtcclxuICBASW5wdXQoJ2xvYWRpbmcnKSBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoJ3dhcHBUYWJsZU9iamVjdCcpIHdhcHBUYWJsZU9iamVjdCE6IFdhcHBUYWJsZTtcclxuXHJcbiAgQE91dHB1dCgnb25FbGVtZW50U2VsZWN0Jykgb25FbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgnb25WaWV3RWxlbWVudFNlbGVjdCcpIG9uVmlld0VsZW1lbnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCdvbkNvcHlFbGVtZW50U2VsZWN0Jykgb25Db3B5RWxlbWVudFNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoJ29uRWRpdEVsZW1lbnRTZWxlY3QnKSBvbkVkaXRFbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgnb25DdXN0b21FbGVtZW50U2VsZWN0Jykgb25DdXN0b21FbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgnb25EZWxldGVFbGVtZW50U2VsZWN0Jykgb25EZWxldGVFbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuICBAT3V0cHV0KCdvbk5ld0VsZW1lbnRTZWxlY3QnKSBvbk5ld0VsZW1lbnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlcicpIGZpbHRlciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgndGFibGUnKSBkYXRhVGFibGUhOiBUYWJsZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYoY2hhbmdlcz8uWydlbGVtZW50cyddICYmIGNoYW5nZXM/LlsnZWxlbWVudHMnXT8uY3VycmVudFZhbHVlLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gY2hhbmdlcz8uWydlbGVtZW50cyddPy5jdXJyZW50VmFsdWUubGVuZ3RoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7IH1cclxuICBcclxuICBjcmVhdGUoKSB7XHJcbiAgICB0aGlzLm9uTmV3RWxlbWVudFNlbGVjdC5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgb25FbGVtZW50KGVsZW1lbnQ6IGFueSl7XHJcbiAgICB0aGlzLm9uRWxlbWVudFNlbGVjdC5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgdmlld0VsZW1lbnQoZWxlbWVudDogYW55KXtcclxuICAgIHRoaXMub25WaWV3RWxlbWVudFNlbGVjdC5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgZWRpdEVsZW1lbnQoZWxlbWVudDphbnkpIHtcclxuICAgIHRoaXMub25FZGl0RWxlbWVudFNlbGVjdC5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9tRWxlbWVudChlbGVtZW50OmFueSl7XHJcbiAgICB0aGlzLm9uQ3VzdG9tRWxlbWVudFNlbGVjdC5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcmVhZFByb3BlcnR5KG9iajogYW55LCBwcm9wOnN0cmluZyk6YW55IHtcclxuICAgIGlmKHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdmFyIF9pbmRleCA9IHByb3AuaW5kZXhPZignLicpXHJcbiAgICBpZihfaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRQcm9wZXJ0eShvYmpbcHJvcC5zdWJzdHJpbmcoMCwgX2luZGV4KV0sIHByb3Auc3Vic3RyKF9pbmRleCArIDEpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBvYmpbcHJvcF07XHJcbiAgfVxyXG5cclxuICBjb25maXJtRGVsZXRlU2VsZWN0ZWQoZXZlbnQ6YW55KSB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0IGFzIEV2ZW50VGFyZ2V0LFxyXG4gICAgICBtZXNzYWdlOiB0aGlzLndhcHBUYWJsZU9iamVjdC5jb25maXJtTXVsdGlwbGVEZWxldGVMYWJlbCxcclxuICAgICAgaWNvbjogXCJwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiLFxyXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy53YXBwVGFibGVPYmplY3QuY29uZmlybURlbGV0ZUJ0bkxhYmVsLFxyXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmRlbGV0ZVNlbGVjdGVkRWxlbWVudHMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVTZWxlY3RlZEVsZW1lbnRzKCkge1xyXG4gICAgdGhpcy5vbkRlbGV0ZUVsZW1lbnRTZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGVkRWxlbWVudHMpXHJcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBbXTtcclxuICB9XHJcblxyXG4gIGNvbmZpcm1EZWxldGUoZXZlbnQ6IEV2ZW50LCBlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcclxuICAgICAgdGFyZ2V0OiBldmVudC50YXJnZXQgYXMgRXZlbnRUYXJnZXQsXHJcbiAgICAgIG1lc3NhZ2U6IHRoaXMud2FwcFRhYmxlT2JqZWN0LmNvbmZpcm1TaW5nbGVEZWxldGVMYWJlbCxcclxuICAgICAgaWNvbjogXCJwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiLFxyXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy53YXBwVGFibGVPYmplY3QuY29uZmlybURlbGV0ZUJ0bkxhYmVsLFxyXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmRlbGV0ZVNpbmdsZUVsZW1lbnQoZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlU2luZ2xlRWxlbWVudChlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25EZWxldGVFbGVtZW50U2VsZWN0LmVtaXQoW2VsZW1lbnRdKVxyXG4gIH1cclxuXHJcbiAgY29weUVsZW1lbnQoZWxlbWVudDogYW55KXtcclxuICAgIHRoaXMub25Db3B5RWxlbWVudFNlbGVjdC5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuICBcclxuICBjb25maXJtQ29weShldmVudDogRXZlbnQsIGVsZW1lbnQ6IGFueSkge1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xyXG4gICAgICB0YXJnZXQ6IGV2ZW50LnRhcmdldCBhcyBFdmVudFRhcmdldCxcclxuICAgICAgbWVzc2FnZTogdGhpcy53YXBwVGFibGVPYmplY3QuY29uZmlybUNvcHlMYWJlbCxcclxuICAgICAgaWNvbjogXCJwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiLFxyXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy53YXBwVGFibGVPYmplY3QuY29uZmlybUNvcHlCdG5MYWJlbCxcclxuICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb3B5RWxlbWVudChlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZSh2YWx1ZSA9IFtdKSB7XHJcbiAgICB0aGlzLnNlbGVjdEFsbCA9IHZhbHVlLmxlbmd0aCA9PT0gdGhpcy5lbGVtZW50cy5sZW5ndGg7XHJcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0QWxsQ2hhbmdlKGV2ZW50OmFueSkge1xyXG4gICAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LmNoZWNrZWQ7XHJcblxyXG4gICAgaWYgKGNoZWNrZWQpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSAgdGhpcy53YXBwVGFibGVPYmplY3QuZGlzYWJsZUNoZWNrYm94ID8gdGhpcy5nZXRTZWxlY3RhYmxlRWxlbWVudHModGhpcy5lbGVtZW50cykgOiB0aGlzLmVsZW1lbnRzO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWxsID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RhYmxlRWxlbWVudHMoYWxsRWxlbWVudHM6IGFueVtdKSB7XHJcbiAgICByZXR1cm4gYWxsRWxlbWVudHMuZmlsdGVyKChlbGVtZW50OmFueSkgPT4gIXRoaXMucmVhZFByb3BlcnR5KGVsZW1lbnQsIHRoaXMud2FwcFRhYmxlT2JqZWN0LmRpc2FibGVDaGVja2JveCEpKTtcclxuICB9XHJcblxyXG4gIG9uR2xvYmFsRmlsdGVyKHRhYmxlOiBUYWJsZSwgZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0YWJsZS5maWx0ZXJHbG9iYWwoKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSwgJ2NvbnRhaW5zJyk7XHJcbiAgfVxyXG5cclxuICBjbGVhcih0YWJsZTogVGFibGUpIHtcclxuICAgIHRhYmxlLmNsZWFyKCk7XHJcbiAgfVxyXG4gIFxyXG4gIHB1YmxpYyBnZXQgdGFibGVDb2x1bW5GaWx0ZXJUeXBlcygpOiB0eXBlb2YgVGFibGVDb2x1bW5GaWx0ZXJUeXBlcyB7XHJcbiAgICByZXR1cm4gVGFibGVDb2x1bW5GaWx0ZXJUeXBlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdGFibGVDb2x1bW5UeXBlcygpOiB0eXBlb2YgVGFibGVDb2x1bW5UeXBlcyB7XHJcbiAgICByZXR1cm4gVGFibGVDb2x1bW5UeXBlcztcclxuICB9XHJcblxyXG4gIGdldEJvb2xlYW5Db2x1bW5DbGFzcyhpbmRleDogbnVtYmVyLCB2YWx1ZVByb3BlcnR5OiBib29sZWFuKXtcclxuICAgIHJldHVybiB7IFtgJHt0aGlzLndhcHBUYWJsZU9iamVjdC5jb2x1bW5Cb29sZWFuVHlwZUljb25zW2luZGV4XS50cnVlSWNvbkNvbG9yfSAke3RoaXMud2FwcFRhYmxlT2JqZWN0LmNvbHVtbkJvb2xlYW5UeXBlSWNvbnNbaW5kZXhdLnRydWVJY29ufWBdOiB2YWx1ZVByb3BlcnR5LCBcclxuICAgICAgICAgICAgIFtgJHt0aGlzLndhcHBUYWJsZU9iamVjdC5jb2x1bW5Cb29sZWFuVHlwZUljb25zW2luZGV4XS5mYWxzZUljb25Db2xvcn0gJHt0aGlzLndhcHBUYWJsZU9iamVjdC5jb2x1bW5Cb29sZWFuVHlwZUljb25zW2luZGV4XS5mYWxzZUljb259YF06ICF2YWx1ZVByb3BlcnR5IH0gXHJcbiAgfVxyXG5cclxuICBjbGVhckZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmRhdGFUYWJsZS5jbGVhcigpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCIuZmlsdGVyLXBhbmVsXCI+PC9uZy1jb250ZW50PlxyXG48ZGl2ICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0XCIgW2NsYXNzLnRhYmxlLWNvbnRhaW5lcl09XCJ3YXBwVGFibGVPYmplY3QudGFibGVDb250YWluZXJcIj5cclxuICAgIDxwLXRhYmxlIGNsYXNzPVwid2FwcC10YWJsZS1zdHlsZXNcIiBcclxuICAgICAgICAgICAgKm5nSWY9XCIhbG9hZGluZzsgZWxzZSBsb2FkaW5nVGFibGVcIiAjdGFibGUgXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJlbGVtZW50c1wiIGRhdGFLZXk9XCJ7e3dhcHBUYWJsZU9iamVjdC5pZGVudGlmaWNhdG9yfX1cIiBcclxuICAgICAgICAgICAgW3BhZ2luYXRvcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW3NlbGVjdGlvbl09XCJzZWxlY3RlZEVsZW1lbnRzXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW3NlbGVjdEFsbF09XCJzZWxlY3RBbGxcIiAoc2VsZWN0QWxsQ2hhbmdlKT1cIm9uU2VsZWN0QWxsQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiIFxyXG4gICAgICAgICAgICBbcm93c109XCJyb3dzUGVyUGFnZVwiXHJcbiAgICAgICAgICAgIFtjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlXT1cIndhcHBUYWJsZU9iamVjdC5jdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlID8gd2FwcFRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgKyAnICcgKyAgcm93c1BlclBhZ2UgKyAnIGRlICcgKyB0b3RhbFJlY29yZHMhIDogJ1Nob3dpbmcgJyArIHJvd3NQZXJQYWdlICsgJyBvZiAnICsgdG90YWxSZWNvcmRzIVwiXHJcbiAgICAgICAgICAgIFtnbG9iYWxGaWx0ZXJGaWVsZHNdPVwid2FwcFRhYmxlT2JqZWN0Lmdsb2JhbEZpbHRlckZpZWxkcyFcIiByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCJcclxuICAgICAgICAgICAgW3Jvd0hvdmVyXT1cInRydWVcIiBbdGFibGVTdHlsZV09XCJ7J21pbi13aWR0aCc6ICc3MHJlbSd9XCJcclxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLXN0cmlwZWRcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc0NsZWFyQnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdC5oYXNHbG9iYWxTZWFyY2hcIiBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdGFibGUtcGFnaW5hdG9yIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsZWFyQnV0dG9uXCIgcEJ1dHRvbiBbbGFiZWxdPVwid2FwcFRhYmxlT2JqZWN0LmNsZWFyUGxhY2Vob2xkZXIhXCIgY2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiIGljb249XCJwaSBwaS1maWx0ZXItc2xhc2hcIiAoY2xpY2spPVwiY2xlYXIodGFibGUpXCI+PC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaG93aW5nLXBlci1wYWdlXCI+IHt7d2FwcFRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGV9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBsLTIgc2hvd2luZy1wZXItcGFnZVwiIFtzaXplXT1cIjFcIiBbKG5nTW9kZWwpXT1cInJvd3NQZXJQYWdlXCIgW3Nob3dCdXR0b25zXT1cInRydWVcIiBcclxuICAgICAgICAgICAgICAgICAgICBidXR0b25MYXlvdXQ9XCJob3Jpem9udGFsXCIgaW5wdXRJZD1cImhvcml6b250YWxcIiBzcGlubmVyTW9kZT1cImhvcml6b250YWxcIiBbc3RlcF09XCIxXCIgW21pbl09XCIxXCIgW21heF09XCJ0b3RhbFJlY29yZHMhXCJcclxuICAgICAgICAgICAgICAgICAgICBkZWNyZW1lbnRCdXR0b25DbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50QnV0dG9uQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudEJ1dHRvbkljb249XCJwaSBwaS1wbHVzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50QnV0dG9uSWNvbj1cInBpIHBpLW1pbnVzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kZT1cImRlY2ltYWxcIj5cclxuICAgICAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNHbG9iYWxTZWFyY2hcIiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0IG1sLWF1dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCB0eXBlPVwidGV4dFwiICNmaWx0ZXIgKGlucHV0KT1cIm9uR2xvYmFsRmlsdGVyKHRhYmxlLCAkZXZlbnQpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ3YXBwVGFibGVPYmplY3Quc2VhcmNoUGxhY2Vob2xkZXJcIiBjbGFzcz1cInctZnVsbCBoZWlnaHQtaW5wdXQgd2FwcC1pbnB1dFwiLz5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiIXdhcHBUYWJsZU9iamVjdC5oYXNDb2x1bW5GaWx0ZXJzICYmIHdhcHBUYWJsZU9iamVjdC5oYXNDaGVja2JveDsgZWxzZSBub0NoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtdGFibGVIZWFkZXJDaGVja2JveD48L3AtdGFibGVIZWFkZXJDaGVja2JveD5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vQ2hlY2tib3g+PHRoICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NoZWNrYm94XCI+PC90aD48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3YXBwVGFibGVPYmplY3QuaGFzU29ydGFibGVDb2x1bW5zOyBlbHNlIGhhc05vdFNvcnRhYmxlQ29sdW1uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHdhcHBUYWJsZU9iamVjdD8uaGVhZGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7aGVhZGVyfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2hhc05vdFNvcnRhYmxlQ29sdW1ucz5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWZpbHRlclR5cGUgW25nRm9yT2ZdPVwid2FwcFRhYmxlT2JqZWN0LmhlYWRlcnNcIiBsZXQtaT1cImluZGV4XCI+IFxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBbcFNvcnRhYmxlQ29sdW1uXT1cIndhcHBUYWJsZU9iamVjdC5zb3J0YWJsZU5hbWVzW2ldXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7d2FwcFRhYmxlT2JqZWN0LmhlYWRlcnNbaV19fSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Quc29ydGFibGVOYW1lc1tpXSAhPSBudWxsXCIgW2ZpZWxkXT1cIndhcHBUYWJsZU9iamVjdC5zb3J0YWJsZU5hbWVzW2ldXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJ3YXBwVGFibGVPYmplY3QuaGFzRGVsZXRlQnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdC5oYXNFZGl0QnV0dG9uXCI+PC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1lbGVtZW50PlxyXG4gICAgICAgICAgICA8dHIgW25nQ2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0Lmhhc1NlbGVjdGFibGVSb3cgPyAncC1zZWxlY3RhYmxlLXJvdycgOiAnJ1wiIChjbGljayk9XCJ3YXBwVGFibGVPYmplY3QuaGFzU2VsZWN0YWJsZVJvdyA/IG9uRWxlbWVudChlbGVtZW50KSA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWNvbHVtblR5cGUgW25nRm9yT2ZdPVwid2FwcFRhYmxlT2JqZWN0LmNvbHVtblR5cGVzIVwiIGxldC1pPVwiaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXM/LkNoZWNrYm94ISAmJiAgd2FwcFRhYmxlT2JqZWN0Lmhhc0NoZWNrYm94XCIgW3N0eWxlXT1cIid3aWR0aDogJyt3YXBwVGFibGVPYmplY3QuY29sdW1uV2lkdGhzIVtpXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ3YXBwVGFibGVPYmplY3QuZGlzYWJsZUNoZWNrYm94OyBlbHNlIGFjdGl2ZUNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRhYmxlQ2hlY2tib3ggW3ZhbHVlXT1cImVsZW1lbnRcIiBbZGlzYWJsZWRdPVwicmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5kaXNhYmxlQ2hlY2tib3gpXCI+PC9wLXRhYmxlQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhY3RpdmVDaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtdGFibGVDaGVja2JveCBbdmFsdWVdPVwiZWxlbWVudFwiPjwvcC10YWJsZUNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5JbWFnZVwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwicmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5lbGVtZW50T2JqZWN0Um91dGVzW2ldKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmVsZW1lbnRPYmplY3RSb3V0ZXNbaV0pXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNoYWRvdy00IGVsZW1lbnQtaW1hZ2Utd2lkdGhcIiBbc3R5bGVdPVwiJ3dpZHRoOiAnK3dhcHBUYWJsZU9iamVjdC5jb2x1bW5XaWR0aHNbaV1cIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuVGV4dFwiICBbc3R5bGVdPVwiJ3dpZHRoOiAnK3dhcHBUYWJsZU9iamVjdC5jb2x1bW5XaWR0aHNbaV1cIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyByZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmVsZW1lbnRPYmplY3RSb3V0ZXNbaV0pIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuQ3VycmVuY3lcIiBbc3R5bGVdPVwiJ3dpZHRoOiAnK3dhcHBUYWJsZU9iamVjdC5jb2x1bW5XaWR0aHNbaV1cIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyByZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmVsZW1lbnRPYmplY3RSb3V0ZXNbaV0pIHwgY3VycmVuY3kgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5CYWRnZVwiIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRhYmxlT2JqZWN0LmNvbHVtbldpZHRoc1tpXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVG9EbyBoYWNlciBjb21wb25lbnRlIGJhZGdlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPHdhcHAtdmlldy1iYWRnZSBbbGFiZWxdPVwicmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5lbGVtZW50T2JqZWN0Um91dGVzW2ldKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ2N5YW4nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC93YXBwLXZpZXctYmFkZ2U+ICAgICAgICAgICAgICAgICAgIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkJvb2xlYW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpXCIgW25nQ2xhc3NdPVwiZ2V0Qm9vbGVhbkNvbHVtbkNsYXNzKGksIHJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuZWxlbWVudE9iamVjdFJvdXRlc1tpXSkpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkRhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyByZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmVsZW1lbnRPYmplY3RSb3V0ZXNbaV0pIHwgZGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNWaWV3QnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uIHBSaXBwbGUgKGNsaWNrKT1cInZpZXdFbGVtZW50KGVsZW1lbnQpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktZXllXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWluZm8gbXItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3QuY3VzdG9tQnV0dG9uQ29uZmlnPy5oYXNDdXN0b21CdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvbiBwUmlwcGxlIChjbGljayk9XCJjdXN0b21FbGVtZW50KGVsZW1lbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cIndhcHBUYWJsZU9iamVjdC5jdXN0b21CdXR0b25Db25maWc/Lmljb24hXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1pbmZvIG1yLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdD8uaGFzRWRpdEJ1dHRvbiAmJiAhd2FwcFRhYmxlT2JqZWN0LmRpc2FibGVFZGl0UHJvcGVydHlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b24gcFJpcHBsZSAoY2xpY2spPVwiZWRpdEVsZW1lbnQoZWxlbWVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXBlbmNpbFwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zdWNjZXNzIG1yLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0LmRpc2FibGVFZGl0UHJvcGVydHlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b24gcFJpcHBsZSAoY2xpY2spPVwiZWRpdEVsZW1lbnQoZWxlbWVudClcIiBbZGlzYWJsZWRdPVwicmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5kaXNhYmxlRWRpdFByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktcGVuY2lsXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXN1Y2Nlc3MgbXItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc0NvcHlCdXR0b25cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b24gcFJpcHBsZSAoY2xpY2spPVwiY29uZmlybUNvcHkoJGV2ZW50LCBlbGVtZW50KVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLWNvcHlcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24taGVscCBtci0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiF3YXBwVGFibGVPYmplY3Q/LmRpc2FibGVEZWxldGUgJiYgd2FwcFRhYmxlT2JqZWN0Py5oYXNEZWxldGVCdXR0b24gJiYgIXdhcHBUYWJsZU9iamVjdC5kaXNhYmxlRGVsZXRlUHJvcGVydHlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b24gcFJpcHBsZSAoY2xpY2spPVwiY29uZmlybURlbGV0ZSgkZXZlbnQsIGVsZW1lbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS10cmFzaFwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1kYW5nZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXdhcHBUYWJsZU9iamVjdD8uZGlzYWJsZURlbGV0ZSAmJiB3YXBwVGFibGVPYmplY3QuZGlzYWJsZURlbGV0ZVByb3BlcnR5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uIHBSaXBwbGUgKGNsaWNrKT1cImNvbmZpcm1EZWxldGUoJGV2ZW50LCBlbGVtZW50KVwiIFtkaXNhYmxlZF09XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmRpc2FibGVEZWxldGVQcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXRyYXNoXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI4XCI+Tm8gZWxlbWVudHMuPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJsb2FkaW5nYm9keVwiPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjhcIj5Mb2FkaW5nIGVsZW1lbnRzLjwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvcC10YWJsZT5cclxuICAgIFxyXG4gICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nVGFibGU+XHJcbiAgICA8cC10YWJsZSBjbGFzcz1cIndhcHAtdGFibGUtc3R5bGVzXCIgW3ZhbHVlXT1cInRhYmxlU2tlbGV0b25zXCIgcmVzcG9uc2l2ZUxheW91dD1cInNjcm9sbFwiIFtwYWdpbmF0b3JdPVwidHJ1ZVwiIFtyb3dzXT1cInJvd3NQZXJQYWdlXCIgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxyXG4gICAgICAgICAgICBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIiBcclxuICAgICAgICAgICAgW2N1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGVdPVwid2FwcFRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgPyB3YXBwVGFibGVPYmplY3QuY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZSArICcgJyArICByb3dzUGVyUGFnZSArICcgZGUgJyArIHRvdGFsUmVjb3JkcyA6ICdTaG93aW5nICcgKyByb3dzUGVyUGFnZSArICcgb2YgJyArIHRvdGFsUmVjb3Jkc1wiXHJcbiAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc3RyaXBlZFwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIndhcHBUYWJsZU9iamVjdD8uaGFzQ2xlYXJCdXR0b24gfHwgd2FwcFRhYmxlT2JqZWN0Lmhhc0dsb2JhbFNlYXJjaFwiIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB0YWJsZS1wYWdpbmF0b3IgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xlYXJCdXR0b25cIiBwQnV0dG9uIGxhYmVsPVwiQ2xlYXJcIiBjbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkXCIgaWNvbj1cInBpIHBpLWZpbHRlci1zbGFzaFwiPjwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2hvd2luZy1wZXItcGFnZVwiPiB7e3dhcHBUYWJsZU9iamVjdC5jdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwbC0yIHNob3dpbmctcGVyLXBhZ2VcIiBbc2l6ZV09XCIxXCIgWyhuZ01vZGVsKV09XCJyb3dzUGVyUGFnZVwiIFtzaG93QnV0dG9uc109XCJ0cnVlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uTGF5b3V0PVwiaG9yaXpvbnRhbFwiIGlucHV0SWQ9XCJob3Jpem9udGFsXCIgc3Bpbm5lck1vZGU9XCJob3Jpem9udGFsXCIgW3N0ZXBdPVwiMVwiIFttaW5dPVwiMVwiIFttYXhdPVwidG90YWxSZWNvcmRzXCJcclxuICAgICAgICAgICAgICAgICAgICBkZWNyZW1lbnRCdXR0b25DbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50QnV0dG9uQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudEJ1dHRvbkljb249XCJwaSBwaS1wbHVzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50QnV0dG9uSWNvbj1cInBpIHBpLW1pbnVzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kZT1cImRlY2ltYWxcIj5cclxuICAgICAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNHbG9iYWxTZWFyY2hcIiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0IG1sLWF1dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCB0eXBlPVwidGV4dFwiICNmaWx0ZXIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ3YXBwVGFibGVPYmplY3Quc2VhcmNoUGxhY2Vob2xkZXJcIiBjbGFzcz1cInctZnVsbCBoZWlnaHQtaW5wdXQgd2FwcC1pbnB1dFwiLz5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRoICpuZ0lmPVwiIXdhcHBUYWJsZU9iamVjdC5oYXNDb2x1bW5GaWx0ZXJzICYmIHdhcHBUYWJsZU9iamVjdC5oYXNDaGVja2JveDsgZWxzZSBzZWxlY3RBbGxDaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgPHAtdGFibGVIZWFkZXJDaGVja2JveD48L3AtdGFibGVIZWFkZXJDaGVja2JveD5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzZWxlY3RBbGxDaGVja2JveD48dGg+PC90aD48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGhlYWRlciBvZiB3YXBwVGFibGVPYmplY3Q/LmhlYWRlcnNcIj5cclxuICAgICAgICAgICAge3toZWFkZXJ9fVxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGggKm5nSWY9XCJ3YXBwVGFibGVPYmplY3QuaGFzRGVsZXRlQnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdC5oYXNFZGl0QnV0dG9uXCI+PC90aD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIj5cclxuICAgICAgICAgICAgPHRyIGhlaWdodD1cIjcwcHhcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgaXRlbSBvZiB3YXBwVGFibGVPYmplY3QuY29sdW1uVHlwZXNcIiBbc3R5bGUud2lkdGhdPVwiaXRlbSA9PSB0YWJsZUNvbHVtblR5cGVzLkNoZWNrYm94ID8gJzhyZW0nIDogJydcIiA+XHJcbiAgICAgICAgICAgICAgICA8cC10YWJsZUNoZWNrYm94ICpuZ0lmPVwiaXRlbSA9PSB0YWJsZUNvbHVtblR5cGVzLkNoZWNrYm94ICYmICB3YXBwVGFibGVPYmplY3QuaGFzQ2hlY2tib3hcIj48L3AtdGFibGVDaGVja2JveD5cclxuICAgICAgICAgICAgICAgIDxwLXNrZWxldG9uICpuZ0lmPVwiaXRlbSAhPSB0YWJsZUNvbHVtblR5cGVzLkNoZWNrYm94XCI+PC9wLXNrZWxldG9uPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIndhcHBUYWJsZU9iamVjdC5oYXNFZGl0QnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdC5oYXNEZWxldGVCdXR0b25cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNWaWV3QnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b24gcFJpcHBsZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLWV5ZVwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1pbmZvIG1yLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0LmN1c3RvbUJ1dHRvbkNvbmZpZz8uaGFzQ3VzdG9tQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvbiBwUmlwcGxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cIndhcHBUYWJsZU9iamVjdC5jdXN0b21CdXR0b25Db25maWc/Lmljb24hXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWluZm8gbXItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc0VkaXRCdXR0b25cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b24gcFJpcHBsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXBlbmNpbFwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zdWNjZXNzIG1yLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNDb3B5QnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b24gcFJpcHBsZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLWNvcHlcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24taGVscCBtci0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiF3YXBwVGFibGVPYmplY3Q/LmRpc2FibGVEZWxldGUgJiYgd2FwcFRhYmxlT2JqZWN0Py5oYXNEZWxldGVCdXR0b25cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b24gcFJpcHBsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXRyYXNoXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3AtdGFibGU+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuPHAtY29uZmlybVBvcHVwPjwvcC1jb25maXJtUG9wdXA+Il19
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YXBwLWNvbXBvbmVudHMvc3JjL2xpYi90YWJsZXMvdy10YWJsZS93LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3RhYmxlcy93LXRhYmxlL3ctdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJbEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7OztBQVMzRixNQUFNLE9BQU8sZUFBZTtJQW9DMUIsWUFDVSxtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQXBDbEQscUJBQWdCLEdBQVUsRUFBRSxDQUFDO1FBRTdCLHdCQUFtQixHQUFXLFFBQVEsQ0FBQTtRQUN0QyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBSTNCLG1CQUFjLEdBQVEsQ0FBQyxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsQ0FBQyxDQUFDO1FBRS9ELGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBV1osZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDN0IsWUFBTyxHQUFZLElBQUksQ0FBQztRQUdmLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN0Qyx3QkFBbUIsR0FB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QkFBb0I7Z0JBRVAsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNDLFNBQVM7c0JBQTVCLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBXYXBwVGFibGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL3dhcHAtdGFibGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbkZpbHRlclR5cGVzLCBUYWJsZUNvbHVtblR5cGVzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9lbnVtcy5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3ctdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93LXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93LXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbQ29uZmlybWF0aW9uU2VydmljZV1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlc3tcclxuICBzZWxlY3RlZEVsZW1lbnRzOiBhbnlbXSA9IFtdO1xyXG4gIHRyYW5zbGF0aW9uczogYW55O1xyXG4gIHRyYW5zbGF0ZU9iamVjdE5hbWU6IHN0cmluZyA9IFwib2JqZWN0XCJcclxuICBzZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZGlhbG9nUmVmITogRHluYW1pY0RpYWxvZ1JlZjtcclxuXHJcbiAgdGFibGVTa2VsZXRvbnM6IGFueSA9IFt7bmFtZTogJyd9LCB7bmFtZTogJyd9LCB7bmFtZTogJyd9LCB7bmFtZTogJyd9XTtcclxuICBcclxuICBwcml2YXRlIF90b3RhbFJlY29yZHM6IG51bWJlciA9IDA7XHJcblxyXG4gIHNldCB0b3RhbFJlY29yZHModmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fdG90YWxSZWNvcmRzID0gdmFsdWU7XHJcbiAgfSAgXHJcblxyXG4gIGdldCB0b3RhbFJlY29yZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdG90YWxSZWNvcmRzO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCdlbGVtZW50cycpIGVsZW1lbnRzITogYW55W107XHJcbiAgQElucHV0KCdyb3dzUGVyUGFnZScpIHJvd3NQZXJQYWdlOiBudW1iZXIgPSAxMDtcclxuICBASW5wdXQoJ2xvYWRpbmcnKSBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoJ3dhcHBUYWJsZU9iamVjdCcpIHdhcHBUYWJsZU9iamVjdCE6IFdhcHBUYWJsZTtcclxuXHJcbiAgQE91dHB1dCgnb25FbGVtZW50U2VsZWN0Jykgb25FbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgnb25WaWV3RWxlbWVudFNlbGVjdCcpIG9uVmlld0VsZW1lbnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCdvbkNvcHlFbGVtZW50U2VsZWN0Jykgb25Db3B5RWxlbWVudFNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoJ29uRWRpdEVsZW1lbnRTZWxlY3QnKSBvbkVkaXRFbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgnb25DdXN0b21FbGVtZW50U2VsZWN0Jykgb25DdXN0b21FbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgnb25EZWxldGVFbGVtZW50U2VsZWN0Jykgb25EZWxldGVFbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuICBAT3V0cHV0KCdvbk5ld0VsZW1lbnRTZWxlY3QnKSBvbk5ld0VsZW1lbnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlcicpIGZpbHRlciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgndGFibGUnKSBkYXRhVGFibGUhOiBUYWJsZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYoY2hhbmdlcz8uWydlbGVtZW50cyddICYmIGNoYW5nZXM/LlsnZWxlbWVudHMnXT8uY3VycmVudFZhbHVlLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gY2hhbmdlcz8uWydlbGVtZW50cyddPy5jdXJyZW50VmFsdWUubGVuZ3RoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7IH1cclxuICBcclxuICBjcmVhdGUoKSB7XHJcbiAgICB0aGlzLm9uTmV3RWxlbWVudFNlbGVjdC5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgb25FbGVtZW50KGVsZW1lbnQ6IGFueSl7XHJcbiAgICB0aGlzLm9uRWxlbWVudFNlbGVjdC5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgdmlld0VsZW1lbnQoZWxlbWVudDogYW55KXtcclxuICAgIHRoaXMub25WaWV3RWxlbWVudFNlbGVjdC5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgZWRpdEVsZW1lbnQoZWxlbWVudDphbnkpIHtcclxuICAgIHRoaXMub25FZGl0RWxlbWVudFNlbGVjdC5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9tRWxlbWVudChlbGVtZW50OmFueSl7XHJcbiAgICB0aGlzLm9uQ3VzdG9tRWxlbWVudFNlbGVjdC5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcmVhZFByb3BlcnR5KG9iajogYW55LCBwcm9wOnN0cmluZyk6YW55IHtcclxuICAgIGlmKHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdmFyIF9pbmRleCA9IHByb3AuaW5kZXhPZignLicpXHJcbiAgICBpZihfaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRQcm9wZXJ0eShvYmpbcHJvcC5zdWJzdHJpbmcoMCwgX2luZGV4KV0sIHByb3Auc3Vic3RyKF9pbmRleCArIDEpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBvYmpbcHJvcF07XHJcbiAgfVxyXG5cclxuICBjb25maXJtRGVsZXRlU2VsZWN0ZWQoZXZlbnQ6YW55KSB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0IGFzIEV2ZW50VGFyZ2V0LFxyXG4gICAgICBtZXNzYWdlOiB0aGlzLndhcHBUYWJsZU9iamVjdC5jb25maXJtTXVsdGlwbGVEZWxldGVMYWJlbCxcclxuICAgICAgaWNvbjogXCJwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiLFxyXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy53YXBwVGFibGVPYmplY3QuY29uZmlybURlbGV0ZUJ0bkxhYmVsLFxyXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmRlbGV0ZVNlbGVjdGVkRWxlbWVudHMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVTZWxlY3RlZEVsZW1lbnRzKCkge1xyXG4gICAgdGhpcy5vbkRlbGV0ZUVsZW1lbnRTZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGVkRWxlbWVudHMpXHJcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBbXTtcclxuICB9XHJcblxyXG4gIGNvbmZpcm1EZWxldGUoZXZlbnQ6IEV2ZW50LCBlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcclxuICAgICAgdGFyZ2V0OiBldmVudC50YXJnZXQgYXMgRXZlbnRUYXJnZXQsXHJcbiAgICAgIG1lc3NhZ2U6IHRoaXMud2FwcFRhYmxlT2JqZWN0LmNvbmZpcm1TaW5nbGVEZWxldGVMYWJlbCxcclxuICAgICAgaWNvbjogXCJwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiLFxyXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy53YXBwVGFibGVPYmplY3QuY29uZmlybURlbGV0ZUJ0bkxhYmVsLFxyXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmRlbGV0ZVNpbmdsZUVsZW1lbnQoZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlU2luZ2xlRWxlbWVudChlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25EZWxldGVFbGVtZW50U2VsZWN0LmVtaXQoW2VsZW1lbnRdKVxyXG4gIH1cclxuXHJcbiAgY29weUVsZW1lbnQoZWxlbWVudDogYW55KXtcclxuICAgIHRoaXMub25Db3B5RWxlbWVudFNlbGVjdC5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuICBcclxuICBjb25maXJtQ29weShldmVudDogRXZlbnQsIGVsZW1lbnQ6IGFueSkge1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xyXG4gICAgICB0YXJnZXQ6IGV2ZW50LnRhcmdldCBhcyBFdmVudFRhcmdldCxcclxuICAgICAgbWVzc2FnZTogdGhpcy53YXBwVGFibGVPYmplY3QuY29uZmlybUNvcHlMYWJlbCxcclxuICAgICAgaWNvbjogXCJwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiLFxyXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy53YXBwVGFibGVPYmplY3QuY29uZmlybUNvcHlCdG5MYWJlbCxcclxuICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb3B5RWxlbWVudChlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZSh2YWx1ZSA9IFtdKSB7XHJcbiAgICB0aGlzLnNlbGVjdEFsbCA9IHZhbHVlLmxlbmd0aCA9PT0gdGhpcy5lbGVtZW50cy5sZW5ndGg7XHJcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0QWxsQ2hhbmdlKGV2ZW50OmFueSkge1xyXG4gICAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LmNoZWNrZWQ7XHJcblxyXG4gICAgaWYgKGNoZWNrZWQpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSAgdGhpcy53YXBwVGFibGVPYmplY3QuZGlzYWJsZUNoZWNrYm94ID8gdGhpcy5nZXRTZWxlY3RhYmxlRWxlbWVudHModGhpcy5lbGVtZW50cykgOiB0aGlzLmVsZW1lbnRzO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWxsID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RhYmxlRWxlbWVudHMoYWxsRWxlbWVudHM6IGFueVtdKSB7XHJcbiAgICByZXR1cm4gYWxsRWxlbWVudHMuZmlsdGVyKChlbGVtZW50OmFueSkgPT4gIXRoaXMucmVhZFByb3BlcnR5KGVsZW1lbnQsIHRoaXMud2FwcFRhYmxlT2JqZWN0LmRpc2FibGVDaGVja2JveCEpKTtcclxuICB9XHJcblxyXG4gIG9uR2xvYmFsRmlsdGVyKHRhYmxlOiBUYWJsZSwgZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0YWJsZS5maWx0ZXJHbG9iYWwoKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSwgJ2NvbnRhaW5zJyk7XHJcbiAgfVxyXG5cclxuICBjbGVhcih0YWJsZTogVGFibGUpIHtcclxuICAgIHRhYmxlLmNsZWFyKCk7XHJcbiAgfVxyXG4gIFxyXG4gIHB1YmxpYyBnZXQgdGFibGVDb2x1bW5GaWx0ZXJUeXBlcygpOiB0eXBlb2YgVGFibGVDb2x1bW5GaWx0ZXJUeXBlcyB7XHJcbiAgICByZXR1cm4gVGFibGVDb2x1bW5GaWx0ZXJUeXBlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdGFibGVDb2x1bW5UeXBlcygpOiB0eXBlb2YgVGFibGVDb2x1bW5UeXBlcyB7XHJcbiAgICByZXR1cm4gVGFibGVDb2x1bW5UeXBlcztcclxuICB9XHJcblxyXG4gIGdldEJvb2xlYW5Db2x1bW5DbGFzcyhpbmRleDogbnVtYmVyLCB2YWx1ZVByb3BlcnR5OiBib29sZWFuKXtcclxuICAgIHJldHVybiB7IFtgJHt0aGlzLndhcHBUYWJsZU9iamVjdC5jb2x1bW5Cb29sZWFuVHlwZUljb25zW2luZGV4XS50cnVlSWNvbkNvbG9yfSAke3RoaXMud2FwcFRhYmxlT2JqZWN0LmNvbHVtbkJvb2xlYW5UeXBlSWNvbnNbaW5kZXhdLnRydWVJY29ufWBdOiB2YWx1ZVByb3BlcnR5LCBcclxuICAgICAgICAgICAgIFtgJHt0aGlzLndhcHBUYWJsZU9iamVjdC5jb2x1bW5Cb29sZWFuVHlwZUljb25zW2luZGV4XS5mYWxzZUljb25Db2xvcn0gJHt0aGlzLndhcHBUYWJsZU9iamVjdC5jb2x1bW5Cb29sZWFuVHlwZUljb25zW2luZGV4XS5mYWxzZUljb259YF06ICF2YWx1ZVByb3BlcnR5IH0gXHJcbiAgfVxyXG5cclxuICBjbGVhckZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmRhdGFUYWJsZS5jbGVhcigpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCIuZmlsdGVyLXBhbmVsXCI+PC9uZy1jb250ZW50PlxyXG48ZGl2ICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0XCIgW2NsYXNzLnRhYmxlLWNvbnRhaW5lcl09XCJ3YXBwVGFibGVPYmplY3QudGFibGVDb250YWluZXJcIj5cclxuICAgIDxwLXRhYmxlIGNsYXNzPVwid2FwcC10YWJsZS1zdHlsZXNcIiBcclxuICAgICAgICAgICAgKm5nSWY9XCIhbG9hZGluZzsgZWxzZSBsb2FkaW5nVGFibGVcIiAjdGFibGUgXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJlbGVtZW50c1wiIGRhdGFLZXk9XCJ7e3dhcHBUYWJsZU9iamVjdC5pZGVudGlmaWNhdG9yfX1cIiBcclxuICAgICAgICAgICAgW3BhZ2luYXRvcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW3NlbGVjdGlvbl09XCJzZWxlY3RlZEVsZW1lbnRzXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW3NlbGVjdEFsbF09XCJzZWxlY3RBbGxcIiAoc2VsZWN0QWxsQ2hhbmdlKT1cIm9uU2VsZWN0QWxsQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiIFxyXG4gICAgICAgICAgICBbcm93c109XCJyb3dzUGVyUGFnZVwiXHJcbiAgICAgICAgICAgIFtjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlXT1cIndhcHBUYWJsZU9iamVjdC5jdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlID8gd2FwcFRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgKyAnICcgKyAgcm93c1BlclBhZ2UgKyAnIGRlICcgKyB0b3RhbFJlY29yZHMhIDogJ1Nob3dpbmcgJyArIHJvd3NQZXJQYWdlICsgJyBvZiAnICsgdG90YWxSZWNvcmRzIVwiXHJcbiAgICAgICAgICAgIFtnbG9iYWxGaWx0ZXJGaWVsZHNdPVwid2FwcFRhYmxlT2JqZWN0Lmdsb2JhbEZpbHRlckZpZWxkcyFcIiByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCJcclxuICAgICAgICAgICAgW3Jvd0hvdmVyXT1cInRydWVcIiBbdGFibGVTdHlsZV09XCJ7J21pbi13aWR0aCc6ICc3MHJlbSd9XCJcclxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLXN0cmlwZWRcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc0NsZWFyQnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdC5oYXNHbG9iYWxTZWFyY2hcIiBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdGFibGUtcGFnaW5hdG9yIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsZWFyQnV0dG9uXCIgcEJ1dHRvbiBbbGFiZWxdPVwid2FwcFRhYmxlT2JqZWN0LmNsZWFyUGxhY2Vob2xkZXIhXCIgY2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiIGljb249XCJwaSBwaS1maWx0ZXItc2xhc2hcIiAoY2xpY2spPVwiY2xlYXIodGFibGUpXCI+PC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaG93aW5nLXBlci1wYWdlXCI+IHt7d2FwcFRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGV9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBsLTIgc2hvd2luZy1wZXItcGFnZVwiIFtzaXplXT1cIjFcIiBbKG5nTW9kZWwpXT1cInJvd3NQZXJQYWdlXCIgW3Nob3dCdXR0b25zXT1cInRydWVcIiBcclxuICAgICAgICAgICAgICAgICAgICBidXR0b25MYXlvdXQ9XCJob3Jpem9udGFsXCIgaW5wdXRJZD1cImhvcml6b250YWxcIiBzcGlubmVyTW9kZT1cImhvcml6b250YWxcIiBbc3RlcF09XCIxXCIgW21pbl09XCIxXCIgW21heF09XCJ0b3RhbFJlY29yZHMhXCJcclxuICAgICAgICAgICAgICAgICAgICBkZWNyZW1lbnRCdXR0b25DbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50QnV0dG9uQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudEJ1dHRvbkljb249XCJwaSBwaS1wbHVzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50QnV0dG9uSWNvbj1cInBpIHBpLW1pbnVzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kZT1cImRlY2ltYWxcIj5cclxuICAgICAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNHbG9iYWxTZWFyY2hcIiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0IG1sLWF1dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCB0eXBlPVwidGV4dFwiICNmaWx0ZXIgKGlucHV0KT1cIm9uR2xvYmFsRmlsdGVyKHRhYmxlLCAkZXZlbnQpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ3YXBwVGFibGVPYmplY3Quc2VhcmNoUGxhY2Vob2xkZXJcIiBjbGFzcz1cInctZnVsbCBoZWlnaHQtaW5wdXQgd2FwcC1pbnB1dFwiLz5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiIXdhcHBUYWJsZU9iamVjdC5oYXNDb2x1bW5GaWx0ZXJzICYmIHdhcHBUYWJsZU9iamVjdC5oYXNDaGVja2JveDsgZWxzZSBub0NoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtdGFibGVIZWFkZXJDaGVja2JveD48L3AtdGFibGVIZWFkZXJDaGVja2JveD5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vQ2hlY2tib3g+PHRoICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NoZWNrYm94XCI+PC90aD48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3YXBwVGFibGVPYmplY3QuaGFzU29ydGFibGVDb2x1bW5zOyBlbHNlIGhhc05vdFNvcnRhYmxlQ29sdW1uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHdhcHBUYWJsZU9iamVjdD8uaGVhZGVyc1wiIFtjbGFzc109XCJoZWFkZXIgPT0gKCdJbWFnZW4nIHx8ICdJbWFnZScpID8gJ2ltYWdlLWhlYWRlcic6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3toZWFkZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGFzTm90U29ydGFibGVDb2x1bW5zPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtZmlsdGVyVHlwZSBbbmdGb3JPZl09XCJ3YXBwVGFibGVPYmplY3QuaGVhZGVyc1wiIGxldC1pPVwiaW5kZXhcIj4gXHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIFtwU29ydGFibGVDb2x1bW5dPVwid2FwcFRhYmxlT2JqZWN0LnNvcnRhYmxlTmFtZXNbaV1cIiAgW2NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5oZWFkZXJzW2ldID09ICgnSW1hZ2VuJyB8fCAnSW1hZ2UnKSA/ICdpbWFnZS1oZWFkZXInOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3dhcHBUYWJsZU9iamVjdC5oZWFkZXJzW2ldfX0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0LnNvcnRhYmxlTmFtZXNbaV0gIT0gbnVsbFwiIFtmaWVsZF09XCJ3YXBwVGFibGVPYmplY3Quc29ydGFibGVOYW1lc1tpXVwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0RlbGV0ZUJ1dHRvbiB8fCB3YXBwVGFibGVPYmplY3QuaGFzRWRpdEJ1dHRvblwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtZWxlbWVudD5cclxuICAgICAgICAgICAgPHRyIFtuZ0NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5oYXNTZWxlY3RhYmxlUm93ID8gJ3Atc2VsZWN0YWJsZS1yb3cnIDogJydcIiAoY2xpY2spPVwid2FwcFRhYmxlT2JqZWN0Lmhhc1NlbGVjdGFibGVSb3cgPyBvbkVsZW1lbnQoZWxlbWVudCkgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1jb2x1bW5UeXBlIFtuZ0Zvck9mXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5UeXBlcyFcIiBsZXQtaT1cImluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzPy5DaGVja2JveCEgJiYgIHdhcHBUYWJsZU9iamVjdC5oYXNDaGVja2JveFwiIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRhYmxlT2JqZWN0LmNvbHVtbldpZHRocyFbaV0rJzsgdGV4dC1hbGlnbjogY2VudGVyOydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0LmRpc2FibGVDaGVja2JveDsgZWxzZSBhY3RpdmVDaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC10YWJsZUNoZWNrYm94IFt2YWx1ZV09XCJlbGVtZW50XCIgW3N0eWxlXT1cIlwiIFtkaXNhYmxlZF09XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmRpc2FibGVDaGVja2JveClcIj48L3AtdGFibGVDaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2FjdGl2ZUNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC10YWJsZUNoZWNrYm94IFt2YWx1ZV09XCJlbGVtZW50XCI+PC9wLXRhYmxlQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkltYWdlXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmVsZW1lbnRPYmplY3RSb3V0ZXNbaV0pXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cInJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuZWxlbWVudE9iamVjdFJvdXRlc1tpXSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2hhZG93LTQgZWxlbWVudC1pbWFnZS13aWR0aFwiIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRhYmxlT2JqZWN0LmNvbHVtbldpZHRoc1tpXVwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5UZXh0XCIgIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRhYmxlT2JqZWN0LmNvbHVtbldpZHRoc1tpXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuZWxlbWVudE9iamVjdFJvdXRlc1tpXSkgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5DdXJyZW5jeVwiIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRhYmxlT2JqZWN0LmNvbHVtbldpZHRoc1tpXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuZWxlbWVudE9iamVjdFJvdXRlc1tpXSkgfCBjdXJyZW5jeSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkJhZGdlXCIgW3N0eWxlXT1cIid3aWR0aDogJyt3YXBwVGFibGVPYmplY3QuY29sdW1uV2lkdGhzW2ldXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUb0RvIGhhY2VyIGNvbXBvbmVudGUgYmFkZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8d2FwcC12aWV3LWJhZGdlIFtsYWJlbF09XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmVsZW1lbnRPYmplY3RSb3V0ZXNbaV0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCInY3lhbidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3dhcHAtdmlldy1iYWRnZT4gICAgICAgICAgICAgICAgICAgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuQm9vbGVhblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGlcIiBbbmdDbGFzc109XCJnZXRCb29sZWFuQ29sdW1uQ2xhc3MoaSwgcmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5lbGVtZW50T2JqZWN0Um91dGVzW2ldKSlcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuRGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuZWxlbWVudE9iamVjdFJvdXRlc1tpXSkgfCBkYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc1ZpZXdCdXR0b25cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b24gcFJpcHBsZSAoY2xpY2spPVwidmlld0VsZW1lbnQoZWxlbWVudClcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS1leWVcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24taW5mbyBtci0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdC5jdXN0b21CdXR0b25Db25maWc/Lmhhc0N1c3RvbUJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uIHBSaXBwbGUgKGNsaWNrKT1cImN1c3RvbUVsZW1lbnQoZWxlbWVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwid2FwcFRhYmxlT2JqZWN0LmN1c3RvbUJ1dHRvbkNvbmZpZz8uaWNvbiFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWluZm8gbXItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNFZGl0QnV0dG9uICYmICF3YXBwVGFibGVPYmplY3QuZGlzYWJsZUVkaXRQcm9wZXJ0eVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvbiBwUmlwcGxlIChjbGljayk9XCJlZGl0RWxlbWVudChlbGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktcGVuY2lsXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXN1Y2Nlc3MgbXItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3QuZGlzYWJsZUVkaXRQcm9wZXJ0eVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvbiBwUmlwcGxlIChjbGljayk9XCJlZGl0RWxlbWVudChlbGVtZW50KVwiIFtkaXNhYmxlZF09XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmRpc2FibGVFZGl0UHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS1wZW5jaWxcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tc3VjY2VzcyBtci0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdD8uaGFzQ29weUJ1dHRvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvbiBwUmlwcGxlIChjbGljayk9XCJjb25maXJtQ29weSgkZXZlbnQsIGVsZW1lbnQpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktY29weVwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1oZWxwIG1yLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXdhcHBUYWJsZU9iamVjdD8uZGlzYWJsZURlbGV0ZSAmJiB3YXBwVGFibGVPYmplY3Q/Lmhhc0RlbGV0ZUJ1dHRvbiAmJiAhd2FwcFRhYmxlT2JqZWN0LmRpc2FibGVEZWxldGVQcm9wZXJ0eVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvbiBwUmlwcGxlIChjbGljayk9XCJjb25maXJtRGVsZXRlKCRldmVudCwgZWxlbWVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXRyYXNoXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhd2FwcFRhYmxlT2JqZWN0Py5kaXNhYmxlRGVsZXRlICYmIHdhcHBUYWJsZU9iamVjdC5kaXNhYmxlRGVsZXRlUHJvcGVydHlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b24gcFJpcHBsZSAoY2xpY2spPVwiY29uZmlybURlbGV0ZSgkZXZlbnQsIGVsZW1lbnQpXCIgW2Rpc2FibGVkXT1cInJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuZGlzYWJsZURlbGV0ZVByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdHJhc2hcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjhcIj5ObyBlbGVtZW50cy48L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImxvYWRpbmdib2R5XCI+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiOFwiPkxvYWRpbmcgZWxlbWVudHMuPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9wLXRhYmxlPlxyXG4gICAgXHJcbiAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmdUYWJsZT5cclxuICAgIDxwLXRhYmxlIGNsYXNzPVwid2FwcC10YWJsZS1zdHlsZXNcIiBbdmFsdWVdPVwidGFibGVTa2VsZXRvbnNcIiByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCIgW3BhZ2luYXRvcl09XCJ0cnVlXCIgW3Jvd3NdPVwicm93c1BlclBhZ2VcIiBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAgICAgICAgICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiIFxyXG4gICAgICAgICAgICBbY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZV09XCJ3YXBwVGFibGVPYmplY3QuY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZSA/IHdhcHBUYWJsZU9iamVjdC5jdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlICsgJyAnICsgIHJvd3NQZXJQYWdlICsgJyBkZSAnICsgdG90YWxSZWNvcmRzIDogJ1Nob3dpbmcgJyArIHJvd3NQZXJQYWdlICsgJyBvZiAnICsgdG90YWxSZWNvcmRzXCJcclxuICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zdHJpcGVkXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNDbGVhckJ1dHRvbiB8fCB3YXBwVGFibGVPYmplY3QuaGFzR2xvYmFsU2VhcmNoXCIgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIHRhYmxlLXBhZ2luYXRvciBwLTBcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGVhckJ1dHRvblwiIHBCdXR0b24gbGFiZWw9XCJDbGVhclwiIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWRcIiBpY29uPVwicGkgcGktZmlsdGVyLXNsYXNoXCI+PC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaG93aW5nLXBlci1wYWdlXCI+IHt7d2FwcFRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGV9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBsLTIgc2hvd2luZy1wZXItcGFnZVwiIFtzaXplXT1cIjFcIiBbKG5nTW9kZWwpXT1cInJvd3NQZXJQYWdlXCIgW3Nob3dCdXR0b25zXT1cInRydWVcIiBcclxuICAgICAgICAgICAgICAgICAgICBidXR0b25MYXlvdXQ9XCJob3Jpem9udGFsXCIgaW5wdXRJZD1cImhvcml6b250YWxcIiBzcGlubmVyTW9kZT1cImhvcml6b250YWxcIiBbc3RlcF09XCIxXCIgW21pbl09XCIxXCIgW21heF09XCJ0b3RhbFJlY29yZHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIGRlY3JlbWVudEJ1dHRvbkNsYXNzPVwicC1idXR0b24tb3V0bGluZWRcIiBcclxuICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRCdXR0b25DbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50QnV0dG9uSWNvbj1cInBpIHBpLXBsdXNcIiBcclxuICAgICAgICAgICAgICAgICAgICBkZWNyZW1lbnRCdXR0b25JY29uPVwicGkgcGktbWludXNcIiBcclxuICAgICAgICAgICAgICAgICAgICBtb2RlPVwiZGVjaW1hbFwiPlxyXG4gICAgICAgICAgICAgICAgPC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc0dsb2JhbFNlYXJjaFwiIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnQgbWwtYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IHR5cGU9XCJ0ZXh0XCIgI2ZpbHRlciBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIndhcHBUYWJsZU9iamVjdC5zZWFyY2hQbGFjZWhvbGRlclwiIGNsYXNzPVwidy1mdWxsIGhlaWdodC1pbnB1dCB3YXBwLWlucHV0XCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGggKm5nSWY9XCIhd2FwcFRhYmxlT2JqZWN0Lmhhc0NvbHVtbkZpbHRlcnMgJiYgd2FwcFRhYmxlT2JqZWN0Lmhhc0NoZWNrYm94OyBlbHNlIHNlbGVjdEFsbENoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8cC10YWJsZUhlYWRlckNoZWNrYm94PjwvcC10YWJsZUhlYWRlckNoZWNrYm94PlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NlbGVjdEFsbENoZWNrYm94Pjx0aD48L3RoPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHdhcHBUYWJsZU9iamVjdD8uaGVhZGVyc1wiPlxyXG4gICAgICAgICAgICB7e2hlYWRlcn19XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aCAqbmdJZj1cIndhcHBUYWJsZU9iamVjdC5oYXNEZWxldGVCdXR0b24gfHwgd2FwcFRhYmxlT2JqZWN0Lmhhc0VkaXRCdXR0b25cIj48L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiPlxyXG4gICAgICAgICAgICA8dHIgaGVpZ2h0PVwiNzBweFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBpdGVtIG9mIHdhcHBUYWJsZU9iamVjdC5jb2x1bW5UeXBlc1wiIFtzdHlsZS53aWR0aF09XCJpdGVtID09IHRhYmxlQ29sdW1uVHlwZXMuQ2hlY2tib3ggPyAnOHJlbScgOiAnJ1wiID5cclxuICAgICAgICAgICAgICAgIDxwLXRhYmxlQ2hlY2tib3ggKm5nSWY9XCJpdGVtID09IHRhYmxlQ29sdW1uVHlwZXMuQ2hlY2tib3ggJiYgIHdhcHBUYWJsZU9iamVjdC5oYXNDaGVja2JveFwiPjwvcC10YWJsZUNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgPHAtc2tlbGV0b24gKm5nSWY9XCJpdGVtICE9IHRhYmxlQ29sdW1uVHlwZXMuQ2hlY2tib3hcIj48L3Atc2tlbGV0b24+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0VkaXRCdXR0b24gfHwgd2FwcFRhYmxlT2JqZWN0Lmhhc0RlbGV0ZUJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc1ZpZXdCdXR0b25cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvbiBwUmlwcGxlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktZXllXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWluZm8gbXItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3QuY3VzdG9tQnV0dG9uQ29uZmlnPy5oYXNDdXN0b21CdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uIHBSaXBwbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwid2FwcFRhYmxlT2JqZWN0LmN1c3RvbUJ1dHRvbkNvbmZpZz8uaWNvbiFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24taW5mbyBtci0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdD8uaGFzRWRpdEJ1dHRvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvbiBwUmlwcGxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktcGVuY2lsXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXN1Y2Nlc3MgbXItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc0NvcHlCdXR0b25cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvbiBwUmlwcGxlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktY29weVwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1oZWxwIG1yLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXdhcHBUYWJsZU9iamVjdD8uZGlzYWJsZURlbGV0ZSAmJiB3YXBwVGFibGVPYmplY3Q/Lmhhc0RlbGV0ZUJ1dHRvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvbiBwUmlwcGxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdHJhc2hcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvcC10YWJsZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG48cC1jb25maXJtUG9wdXA+PC9wLWNvbmZpcm1Qb3B1cD4iXX0=
|