design-angular-kit 1.0.0-7 → 1.0.0-9

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.
Files changed (54) hide show
  1. package/esm2020/lib/abstracts/abstract-form-component.mjs +16 -7
  2. package/esm2020/lib/abstracts/abstract.component.mjs +13 -6
  3. package/esm2020/lib/components/core/accordion/accordion.component.mjs +19 -8
  4. package/esm2020/lib/components/core/alert/alert.component.mjs +46 -6
  5. package/esm2020/lib/components/core/button/button.directive.mjs +14 -12
  6. package/esm2020/lib/components/core/carousel/carousel/carousel.component.mjs +3 -3
  7. package/esm2020/lib/components/core/collapse/collapse.component.mjs +23 -18
  8. package/esm2020/lib/components/core/dropdown/dropdown/dropdown.component.mjs +74 -4
  9. package/esm2020/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +8 -11
  10. package/esm2020/lib/components/core/link/link.component.mjs +9 -8
  11. package/esm2020/lib/components/core/modal/modal.component.mjs +5 -5
  12. package/esm2020/lib/components/core/notifications/notifications.component.mjs +55 -11
  13. package/esm2020/lib/components/core/popover/popover.directive.mjs +5 -2
  14. package/esm2020/lib/components/core/tab/tab-container/tab-container.component.mjs +37 -11
  15. package/esm2020/lib/components/core/tab/tab-item/tab-item.component.mjs +4 -4
  16. package/esm2020/lib/components/core/tooltip/tooltip.directive.mjs +4 -1
  17. package/esm2020/lib/components/form/input/input.component.mjs +2 -2
  18. package/esm2020/lib/components/form/password-input/password-input.component.mjs +1 -1
  19. package/esm2020/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +1 -1
  20. package/esm2020/lib/components/form/upload-file-list/upload-file-list.component.mjs +13 -10
  21. package/esm2020/lib/components/navigation/back-to-top/back-to-top.component.mjs +41 -6
  22. package/esm2020/lib/components/navigation/header/header.component.mjs +9 -7
  23. package/esm2020/lib/components/utils/language-switcher/language-switcher.component.mjs +1 -1
  24. package/esm2020/lib/interfaces/core.mjs +1 -1
  25. package/esm2020/lib/services/notifications/notifications.service.mjs +24 -26
  26. package/esm2020/lib/utils/file-utils.mjs +9 -1
  27. package/fesm2015/design-angular-kit.mjs +498 -226
  28. package/fesm2015/design-angular-kit.mjs.map +1 -1
  29. package/fesm2020/design-angular-kit.mjs +477 -222
  30. package/fesm2020/design-angular-kit.mjs.map +1 -1
  31. package/lib/abstracts/abstract-form-component.d.ts +9 -4
  32. package/lib/abstracts/abstract.component.d.ts +10 -4
  33. package/lib/components/core/accordion/accordion.component.d.ts +4 -8
  34. package/lib/components/core/alert/alert.component.d.ts +24 -2
  35. package/lib/components/core/button/button.directive.d.ts +5 -7
  36. package/lib/components/core/carousel/carousel/carousel.component.d.ts +1 -1
  37. package/lib/components/core/collapse/collapse.component.d.ts +8 -7
  38. package/lib/components/core/dropdown/dropdown/dropdown.component.d.ts +41 -3
  39. package/lib/components/core/dropdown/dropdown-item/dropdown-item.component.d.ts +0 -5
  40. package/lib/components/core/link/link.component.d.ts +2 -5
  41. package/lib/components/core/modal/modal.component.d.ts +2 -2
  42. package/lib/components/core/notifications/notifications.component.d.ts +21 -7
  43. package/lib/components/core/popover/popover.directive.d.ts +3 -2
  44. package/lib/components/core/tab/tab-container/tab-container.component.d.ts +6 -4
  45. package/lib/components/core/tooltip/tooltip.directive.d.ts +3 -2
  46. package/lib/components/form/password-input/password-input.component.d.ts +2 -1
  47. package/lib/components/form/upload-drag-drop/upload-drag-drop.component.d.ts +2 -1
  48. package/lib/components/form/upload-file-list/upload-file-list.component.d.ts +3 -3
  49. package/lib/components/navigation/back-to-top/back-to-top.component.d.ts +22 -3
  50. package/lib/components/navigation/header/header.component.d.ts +6 -4
  51. package/lib/interfaces/core.d.ts +24 -1
  52. package/lib/services/notifications/notifications.service.d.ts +17 -17
  53. package/lib/utils/file-utils.d.ts +5 -0
  54. package/package.json +2 -2
@@ -61,5 +61,13 @@ export class FileUtils {
61
61
  const fileBlob = FileUtils.base64ToBlob(base64, mimeType);
62
62
  return new File([fileBlob], filename, { type: mimeType });
63
63
  }
64
+ /**
65
+ * Extract the MIME type from base64 string
66
+ * @param base64 the base64 string
67
+ */
68
+ static getMimeTypeFromBase64(base64) {
69
+ const mime = base64.match(/data:([a-zA-Z0-9]+\/[a-zA-Z0-9-.+]+).*,.*/);
70
+ return (mime && mime.length) ? mime[1] : undefined;
71
+ }
64
72
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL3V0aWxzL2ZpbGUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQyxNQUFNLE9BQU8sU0FBUztJQUVwQjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQVUsRUFBRSxRQUFRLEdBQUcsQ0FBQztRQUN0RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUNYLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2YsTUFBTSxFQUFFLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXhFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNFLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQVU7UUFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNCLE9BQU8sSUFBSSxVQUFVLENBQVMsUUFBUSxDQUFDLEVBQUU7WUFDdkMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNwQixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUN4QixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxZQUFZLFdBQVcsRUFBRTtvQkFDckUsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7aUJBQ3pDO2dCQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDdkIsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFjLEVBQUUsUUFBZ0I7UUFDekQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekM7UUFDRCxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQWMsRUFBRSxRQUFnQixFQUFFLFFBQWdCO1FBQzNFLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFELE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBGaWxlVXRpbHMge1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGZpbGUgc2l6ZSBzdHJpbmdcbiAgICogQHBhcmFtIGZpbGUgdGhlIGZpbGVcbiAgICogQHBhcmFtIGRlY2ltYWxzIGRlY2ltYWwgdG8gc2hvd1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRGaWxlU2l6ZVN0cmluZyhmaWxlOiBGaWxlLCBkZWNpbWFscyA9IDIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJ5dGVzID0gZmlsZS5zaXplO1xuICAgIGlmICghK2J5dGVzKSB7XG4gICAgICByZXR1cm4gJzAgQnl0ZXMnO1xuICAgIH1cblxuICAgIGNvbnN0IGsgPSAxMDI0O1xuICAgIGNvbnN0IGRtID0gZGVjaW1hbHMgPCAwID8gMCA6IGRlY2ltYWxzO1xuICAgIGNvbnN0IHNpemVzID0gWydCeXRlcycsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xuXG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xuICAgIHJldHVybiBgJHtwYXJzZUZsb2F0KChieXRlcyAvIE1hdGgucG93KGssIGkpKS50b0ZpeGVkKGRtKSl9ICR7c2l6ZXNbaV19YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgZmlsZSB0byBiYXNlNjQgc3RyaW5nXG4gICAqIEBwYXJhbSBmaWxlIHRoZSBiYXNlNjQgc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZpbGVUb0Jhc2U2NChmaWxlOiBGaWxlKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHN0cmluZz4ob2JzZXJ2ZXIgPT4ge1xuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0LnJlc3VsdCB8fCB0YXJnZXQucmVzdWx0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgICByZXR1cm4gb2JzZXJ2ZXIuZXJyb3IoJ0Vycm9yIG9uIHBhcnNlJyk7XG4gICAgICAgIH1cbiAgICAgICAgb2JzZXJ2ZXIubmV4dCh0YXJnZXQucmVzdWx0KTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgIH07XG4gICAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHtcbiAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGJhc2U2NCB0byBCbG9iXG4gICAqIEBwYXJhbSBiYXNlNjQgdGhlIGJhc2U2NCBzdHJpbmdcbiAgICogQHBhcmFtIG1pbWVUeXBlIHRoZSA8YSBocmVmPVwiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9NSU1FX3R5cGVzL0NvbW1vbl90eXBlc1wiPk1JTUUgdHlwZTwvYT4gKGV4YW1wbGUgJ2FwcGxpY2F0aW9uL3BkZicpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGJhc2U2NFRvQmxvYihiYXNlNjQ6IHN0cmluZywgbWltZVR5cGU6IHN0cmluZyk6IEJsb2Ige1xuICAgIGNvbnN0IGJ5dGVTdHJpbmcgPSB3aW5kb3cuYXRvYihiYXNlNjQpO1xuICAgIGNvbnN0IGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVTdHJpbmcubGVuZ3RoKTtcbiAgICBjb25zdCBpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlU3RyaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbnQ4QXJyYXlbaV0gPSBieXRlU3RyaW5nLmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQmxvYihbaW50OEFycmF5XSwgeyB0eXBlOiBtaW1lVHlwZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGJhc2U2NCB0byBGaWxlXG4gICAqIEBwYXJhbSBiYXNlNjQgdGhlIGJhc2U2NCBzdHJpbmdcbiAgICogQHBhcmFtIG1pbWVUeXBlIHRoZSA8YSBocmVmPVwiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9NSU1FX3R5cGVzL0NvbW1vbl90eXBlc1wiPk1JTUUgdHlwZTwvYT4gKGV4YW1wbGUgJ2FwcGxpY2F0aW9uL3BkZicpXG4gICAqIEBwYXJhbSBmaWxlbmFtZSB0aGUgZmlsZSBuYW1lXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGJhc2U2NFRvRmlsZShiYXNlNjQ6IHN0cmluZywgbWltZVR5cGU6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IEZpbGUge1xuICAgIGNvbnN0IGZpbGVCbG9iID0gRmlsZVV0aWxzLmJhc2U2NFRvQmxvYihiYXNlNjQsIG1pbWVUeXBlKTtcbiAgICByZXR1cm4gbmV3IEZpbGUoW2ZpbGVCbG9iXSwgZmlsZW5hbWUsIHsgdHlwZTogbWltZVR5cGUgfSk7XG4gIH1cbn1cbiJdfQ==
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL3V0aWxzL2ZpbGUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQyxNQUFNLE9BQU8sU0FBUztJQUVwQjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQVUsRUFBRSxRQUFRLEdBQUcsQ0FBQztRQUN0RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUNYLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2YsTUFBTSxFQUFFLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXhFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNFLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQVU7UUFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNCLE9BQU8sSUFBSSxVQUFVLENBQVMsUUFBUSxDQUFDLEVBQUU7WUFDdkMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNwQixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUN4QixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxZQUFZLFdBQVcsRUFBRTtvQkFDckUsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7aUJBQ3pDO2dCQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDdkIsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFjLEVBQUUsUUFBZ0I7UUFDekQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekM7UUFDRCxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQWMsRUFBRSxRQUFnQixFQUFFLFFBQWdCO1FBQzNFLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFELE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLHFCQUFxQixDQUFDLE1BQWM7UUFDaEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNyRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBGaWxlVXRpbHMge1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGZpbGUgc2l6ZSBzdHJpbmdcbiAgICogQHBhcmFtIGZpbGUgdGhlIGZpbGVcbiAgICogQHBhcmFtIGRlY2ltYWxzIGRlY2ltYWwgdG8gc2hvd1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRGaWxlU2l6ZVN0cmluZyhmaWxlOiBGaWxlLCBkZWNpbWFscyA9IDIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJ5dGVzID0gZmlsZS5zaXplO1xuICAgIGlmICghK2J5dGVzKSB7XG4gICAgICByZXR1cm4gJzAgQnl0ZXMnO1xuICAgIH1cblxuICAgIGNvbnN0IGsgPSAxMDI0O1xuICAgIGNvbnN0IGRtID0gZGVjaW1hbHMgPCAwID8gMCA6IGRlY2ltYWxzO1xuICAgIGNvbnN0IHNpemVzID0gWydCeXRlcycsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xuXG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xuICAgIHJldHVybiBgJHtwYXJzZUZsb2F0KChieXRlcyAvIE1hdGgucG93KGssIGkpKS50b0ZpeGVkKGRtKSl9ICR7c2l6ZXNbaV19YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgZmlsZSB0byBiYXNlNjQgc3RyaW5nXG4gICAqIEBwYXJhbSBmaWxlIHRoZSBiYXNlNjQgc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZpbGVUb0Jhc2U2NChmaWxlOiBGaWxlKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHN0cmluZz4ob2JzZXJ2ZXIgPT4ge1xuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0LnJlc3VsdCB8fCB0YXJnZXQucmVzdWx0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgICByZXR1cm4gb2JzZXJ2ZXIuZXJyb3IoJ0Vycm9yIG9uIHBhcnNlJyk7XG4gICAgICAgIH1cbiAgICAgICAgb2JzZXJ2ZXIubmV4dCh0YXJnZXQucmVzdWx0KTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgIH07XG4gICAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHtcbiAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGJhc2U2NCB0byBCbG9iXG4gICAqIEBwYXJhbSBiYXNlNjQgdGhlIGJhc2U2NCBzdHJpbmdcbiAgICogQHBhcmFtIG1pbWVUeXBlIHRoZSA8YSBocmVmPVwiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9NSU1FX3R5cGVzL0NvbW1vbl90eXBlc1wiPk1JTUUgdHlwZTwvYT4gKGV4YW1wbGUgJ2FwcGxpY2F0aW9uL3BkZicpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGJhc2U2NFRvQmxvYihiYXNlNjQ6IHN0cmluZywgbWltZVR5cGU6IHN0cmluZyk6IEJsb2Ige1xuICAgIGNvbnN0IGJ5dGVTdHJpbmcgPSB3aW5kb3cuYXRvYihiYXNlNjQpO1xuICAgIGNvbnN0IGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVTdHJpbmcubGVuZ3RoKTtcbiAgICBjb25zdCBpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlU3RyaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbnQ4QXJyYXlbaV0gPSBieXRlU3RyaW5nLmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQmxvYihbaW50OEFycmF5XSwgeyB0eXBlOiBtaW1lVHlwZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGJhc2U2NCB0byBGaWxlXG4gICAqIEBwYXJhbSBiYXNlNjQgdGhlIGJhc2U2NCBzdHJpbmdcbiAgICogQHBhcmFtIG1pbWVUeXBlIHRoZSA8YSBocmVmPVwiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9NSU1FX3R5cGVzL0NvbW1vbl90eXBlc1wiPk1JTUUgdHlwZTwvYT4gKGV4YW1wbGUgJ2FwcGxpY2F0aW9uL3BkZicpXG4gICAqIEBwYXJhbSBmaWxlbmFtZSB0aGUgZmlsZSBuYW1lXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGJhc2U2NFRvRmlsZShiYXNlNjQ6IHN0cmluZywgbWltZVR5cGU6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IEZpbGUge1xuICAgIGNvbnN0IGZpbGVCbG9iID0gRmlsZVV0aWxzLmJhc2U2NFRvQmxvYihiYXNlNjQsIG1pbWVUeXBlKTtcbiAgICByZXR1cm4gbmV3IEZpbGUoW2ZpbGVCbG9iXSwgZmlsZW5hbWUsIHsgdHlwZTogbWltZVR5cGUgfSk7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCB0aGUgTUlNRSB0eXBlIGZyb20gYmFzZTY0IHN0cmluZ1xuICAgKiBAcGFyYW0gYmFzZTY0IHRoZSBiYXNlNjQgc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldE1pbWVUeXBlRnJvbUJhc2U2NChiYXNlNjQ6IHN0cmluZyk6IHN0cmluZ3x1bmRlZmluZWQge1xuICAgIGNvbnN0IG1pbWUgPSBiYXNlNjQubWF0Y2goL2RhdGE6KFthLXpBLVowLTldK1xcL1thLXpBLVowLTktLitdKykuKiwuKi8pO1xuICAgIHJldHVybiAobWltZSAmJiBtaW1lLmxlbmd0aCkgPyBtaW1lWzFdIDogdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=