@graphcommerce/image 2.105.8 → 2.105.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 (338) hide show
  1. package/example/.next/build-manifest.json +34 -0
  2. package/example/.next/cache/images/-HVj9kxSkhJbEZEzJL5NAtVW-u8TJ523pV0gOjw1--U=/1656761718343.g+b6VAyYfz-VIgqhPopw+-RX62-WCBq5CTxdVPJ75Vk=.webp +0 -0
  3. package/example/.next/cache/images/0AxIIzYSO-2GyMgpS4xIF3BFoscLS34mhauz5mXVqJI=/1656759656442.NBBV5492hL3QVNkmiFNlwRcY6wuplArFk0uPSkVzZ58=.webp +0 -0
  4. package/example/.next/cache/images/1uj6MCqnWAg9G4AXu+RJEh7K5QHy8VI4Y8ObOpU5IWQ=/1656757031249.VBybHurr5aiEFOzpuVXHhwBOCF1G+Hnp8-GFzxjCNKg=.webp +0 -0
  5. package/example/.next/cache/images/2CMowrXl2P7YIz49CHi5gPtsp-gXV9ZDKqoWiS5hkgg=/1625470305766.rUaLjCqfuLKwkvaizd3g3TjzYGo3W8ANpZIUgzZh00Y=.webp +0 -0
  6. package/example/.next/cache/images/2prvJygajL4oBYGVG5HGNf-JaL-XmFDIpbahHqRCWEg=/1625298564969.7tWao0CKoVY673JEnP1IP-G6bNjQvDP5sxvUAq1X3KM=.webp +0 -0
  7. package/example/.next/cache/images/3NxY-MLy0nY73yQFX-qsDAkXMgiMq8iWud4VVdU8I0o=/1625299547154.rpuCm5pugpQ6IK28LsWKUGLk+P2ZtehuBgJTOX-6zlA=.webp +0 -0
  8. package/example/.next/cache/images/3UPUXn6t--gJO9HNBHFJulrS3paVQoKP5-Wu41KkrR8=/1656758598282.BZMn4WYPgB+gq-BR3w1-5MwG1AdBRAVpYWGWxNVW-KE=.webp +0 -0
  9. package/example/.next/cache/images/3ucItT2KUqDcjKA+4Dl8YhPsb3qbPW8shQeD5JogEp0=/1656749533975.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  10. package/example/.next/cache/images/4aSxJpLrV7SgzFGFQe1JbHJTiVGRNl4YdKl2iZqTz6c=/1625299570724.mruw0gK2J1y6VIaCvayFrs7ltIasseRnQjCS1Rx7zNI=.webp +0 -0
  11. package/example/.next/cache/images/4u0SwKJhO4a+ZARfOmnUAY+bQvzdjsw8AOIk6sRiVTM=/1625469705760.rueREa67ebDmXGY+W3G-eopQp5EK-SQHOa4KHFuqVNo=.webp +0 -0
  12. package/example/.next/cache/images/5H41dGaHwg71zktiD3Ks9K8yaZ1e9lsBag4NHyoIUdo=/1625219570987.zIxZGRHl91NEtnV4nbyU0rB3EtEyR9Lxnri-+voKAvs=.webp +0 -0
  13. package/example/.next/cache/images/64IULfOR-D0oVW4sHrfc5WtPLdjLPbkoNKHdCwWGSuQ=/1625219570994.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  14. package/example/.next/cache/images/6Dgu5A6GajPsgDQ66k-pbq0Iyr0Byrn7+mivxE4fvVU=/1656758443091.KL97JxovJgisoPc5EXEfrrnnqyRymWEBTSqLA8Uy5lE=.webp +0 -0
  15. package/example/.next/cache/images/6Zcso+WcU0OlZ-atPSh40Gljk74hWpvqMF88bf-3Qys=/1656749578452.zIxZGRHl91NEtnV4nbyU0rB3EtEyR9Lxnri-+voKAvs=.webp +0 -0
  16. package/example/.next/cache/images/7Xkon9LFmZ6wE0IgEIsfUN0bOr0oCSOXaDnnrVjSoXo=/1625300548289.8yJB9XC45AIM6XoUsu8htXCK2wYvqnWCKbnxO3MmpsU=.webp +0 -0
  17. package/example/.next/cache/images/7vvZbnWp2pvmwNgUNIKXmCk9XhfIOYqyBy1xwOMmxZE=/1625470260322.onl4+lYWryHL62flX4FJdXEMQ1UVnyT5sBYF1DggMaQ=.webp +0 -0
  18. package/example/.next/cache/images/83VK7ld0YcmgdOG+R2h+ckiGWOVKzIn42CnTelSeAD0=/1657107410585.OC5j-AyaLksS78WoFh2ZPpURObFKvSCnpt9rqzn7tNY=.webp +0 -0
  19. package/example/.next/cache/images/8qtv2hTcdwZiVYN5j5XNVw4eDlHblWR91R1ilGPHF4g=/1625300457906.pVKudFsHslINh1TOUoOPSHb8op8iqiQ3IVE78QQH0qU=.webp +0 -0
  20. package/example/.next/cache/images/B8i6U4dvhS5QlonuTChvnVeIfVNcMFP5Ze9dGHpLu0A=/1625213911796.zMx5v1d6EgYxzhH5u9vceuQAZdrlkrwNiW-EzuaYMnw=.webp +0 -0
  21. package/example/.next/cache/images/BW0ysRJMh9oulzEYbELupyRAI1rZZ5be0xuxnDLc-bw=/1656761231260.zspGYR3AWdcc816W2F6Ne1-JNgSDBH1h6KEFeVLnWok=.webp +0 -0
  22. package/example/.next/cache/images/BY6YpwPh82mp5JiBEti5gmwC-9O4ohRUPluASqROc10=/1625498155146.EJMSOifv8id0Peguf7ikEne7xMi9Ac9iDe9kTIAAXvY=.webp +0 -0
  23. package/example/.next/cache/images/CUGp4g70zl+vsFGT41IZkj-Y2votkqh3Eezzs9H3H5w=/1625299521288.EnYAcm4cT6T5yKVAQDTY6cZti0zsxnVbImrF7LfgF1Y=.webp +0 -0
  24. package/example/.next/cache/images/DJ3B5hLxX-+UMbqed+x58+rl9juscSn+Ra7YA8CNkkY=/1625484120800.SAng7YQ8PDlPQNubgLkMMsiFwaPCuTeDBsfUyvmttG4=.webp +0 -0
  25. package/example/.next/cache/images/DW4yKnn+mYRfs8-2Ko5oE3DrZbJMhFNEmGp90CyT7O0=/1625300236026.VFNPRZf-z9qFOV2S5AbunCkRGCcPXzlwiTKrNjmNGi8=.webp +0 -0
  26. package/example/.next/cache/images/Dh5jFfTTZHXju+2VMueg1Lo7sM3GkEWBlgWZ37h29ME=/1625474260306.gkzHU98m9zIqApL3d93FWcZqGULcRirOdpOxzJgPTK8=.webp +0 -0
  27. package/example/.next/cache/images/Du4jaIoZ-PXvqN2avgQOOGlaQg-Vt4QUVcukv77Hm7w=/1656756770777.kZnEJ9pDGRP7pgjpXGDPuV-HLcq5hWt9eWAFm6G84OI=.webp +0 -0
  28. package/example/.next/cache/images/EqW5whXX7fgu5+SPdxyBZ4fE0fOWCLMo9b5W7hd28iY=/1625571324722.txUxO6DkO8veTJ1oLkXvvNgVuTbvHdj4MVBwHIu-eus=.webp +0 -0
  29. package/example/.next/cache/images/GKXPXPApDNp1ZIjYBtQk7dd3rnbKh7NElD+WIyHa8js=/1656756098400.lgHCIyknPFqSgPVSBuQffgINRpboZCYlBKftrwpBLkA=.webp +0 -0
  30. package/example/.next/cache/images/GTOHdx8sLxs79IJinD+Nk80LrOg0DaC9h3d8TAby3bs=/1657107680617.OC5j-AyaLksS78WoFh2ZPpURObFKvSCnpt9rqzn7tNY=.webp +0 -0
  31. package/example/.next/cache/images/GnqqaGL66JFx1j+fCokxnnujneezplnVU7gYhckh9+A=/1625299583173.dgcaCltbHvvFCi1sPMucuHCL9UCtWiFSyOAYH-v2LtU=.webp +0 -0
  32. package/example/.next/cache/images/HTqsLdQpcguBI7BE1SfU-i2MwHyN3krlryhF1BEPj3M=/1657107680404.c8k-vRV2T9vq1REo-K4LzVwKVUP5lQuho4ubYzHj544=.webp +0 -0
  33. package/example/.next/cache/images/HroIIPKGVQ42ycMx-gSdWVFfchcgf8J-XU3FJOZhpmk=/1625570328298.IUpe91jGi-RlVgrjYmX7wkMcXIIYvodu5j4BqaKZcss=.webp +0 -0
  34. package/example/.next/cache/images/HsTN95OGw5aJGpWWSep-H7pXMN32ZSfW86FEPFe02K8=/1625299498281.1gBokMmVVuor1gnCAbJvXKp1sytwxY0A-VcmYIwXm7g=.webp +0 -0
  35. package/example/.next/cache/images/JRIhYbicTTQFjjKlC-aW9QRo+2KiSk80+wi0T+FeWQ4=/1656756648992.kZnEJ9pDGRP7pgjpXGDPuV-HLcq5hWt9eWAFm6G84OI=.webp +0 -0
  36. package/example/.next/cache/images/KtPkhGYwacFij4NA7Z4VNrRLb21KQUty7jAgxxv7tAE=/1625565460203.83IxQdLmWiSE2uISXx1KtUWFzH+wlQzRq3azOBbUtnQ=.webp +0 -0
  37. package/example/.next/cache/images/MPZjiVEFZqHRi2TtFwyHot9phvfEIcDLWmmyrYFIHAQ=/1625299521601.0uwV84UCn-oB-gRLRxi8DD2sl7zK5emgxfblkV3Dvhc=.webp +0 -0
  38. package/example/.next/cache/images/MT6MCs8Nc+PJ2byqQCa1HW8Xp4OTRNnb6kLgLwDGLZo=/1656762484828.heenQ4-yt4r55ULQ0ofqHJ1j8eTKD8ksx640PPhaqP8=.webp +0 -0
  39. package/example/.next/cache/images/MiOwljI0QJwKEuOg3n2Gp3J0qyXXNOXE8ttWHB7CHa0=/1625567166356.KCzRRP4Cub2rpOYKetN+L9dCJTAsFVW-GkP0NRsQbcM=.webp +0 -0
  40. package/example/.next/cache/images/OcFEP0e8eNeBt9ck16eoMwSpfJleEwCMpm1ZbdqT4uo=/1656749533901.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  41. package/example/.next/cache/images/PPUtJ0W6DfemefElrKITkTNq7MVnHyMS38XuEtsy89U=/1656761403704.zlagepWT8AKDwOh4aJODpXTOFN+FobGMo1L6WuOVNwY=.webp +0 -0
  42. package/example/.next/cache/images/PaxNiuRifROBs1R1uM75REC6kUAfiYOLrtQAiK1P2nU=/1625213904646.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  43. package/example/.next/cache/images/PqLR89B4R1+qzyEVqVw9OQhSmFy5JuXLa64i3LYpJxE=/1625299444323.ThlpSva2rHbbbp958zCj1tdrgMqjFcGYnaDRo2wQQLU=.webp +0 -0
  44. package/example/.next/cache/images/Q8f9uZJBks2H-YkwdWd2QMgMX5mL5FBMo0VsHO-ctdo=/1656760649959.qh3caBPe-Th-zaMPDt-ZdhSBl91dRP8N9s3EJ6UMQCs=.webp +0 -0
  45. package/example/.next/cache/images/RP6k9Bj4-jsHEycAYxFHZhLqKTmbLMjucvDSvlyLLZs=/1657107680610.Yg+3ChC1edO6kEAwbaim2hCjb8Wyh4toEpEOzcilUL0=.webp +0 -0
  46. package/example/.next/cache/images/SHd0AXJTfPXkImZMKmp27MvqUvYI111zyzIOkLgtCb0=/1625299593567.TvdLtgnmAXbrBjg8nRUCWyBuQNstKWJTmF-wV4728B8=.webp +0 -0
  47. package/example/.next/cache/images/SHhlhVL9L57O78uM0iSaBgxVR9J7EKRa67Ito-z2rr4=/1625300308618.po7Imjgw32SuMQKt1-Oty+v5w-l64kmnJHzwul9giqo=.webp +0 -0
  48. package/example/.next/cache/images/SKUjqmwgFQbQ2Q6MjsEPStCv9Q-+CeDEv66+YXRb2wY=/1625299577727.ZqADH5sK9bpHXGGKzDBkLCjPfDO+oTBSZlFZyEAOo9w=.webp +0 -0
  49. package/example/.next/cache/images/ShHgXRk5XG5XLtxR20jbimMMzYyCjZYWCyrSOBcRyoU=/1625299553057.Tg2j6WSVMgii8RrZgrt4twY3IKhtmUMHplwYzi-hh70=.webp +0 -0
  50. package/example/.next/cache/images/TZiyZjIDqFs6d60EaSVU3oX2L1bCkImChBpIWqOREeg=/1625299514280.rC+4Pdzi1RPfIvqsEFdtuGJL9sPG4+sel+0v3cfnJpk=.webp +0 -0
  51. package/example/.next/cache/images/YKC4gyKqaL5abLjWnWAv+OgECV0oK00TZ1P5130s4ig=/1625300636674.q2+QpCTCb2zgc0H3rXxU17I4lALn3BLpChG0i7WZMew=.webp +0 -0
  52. package/example/.next/cache/images/Z0Y8VikQqHdIyl12mjEQKArSNnKgqb5MgUYp+RJ5EO4=/1656761463364.kZnEJ9pDGRP7pgjpXGDPuV-HLcq5hWt9eWAFm6G84OI=.webp +0 -0
  53. package/example/.next/cache/images/aoSFeHouZT4mEYTInYHZHTBtgeKvEELQADTBcRV6hkw=/1625298476457.T0UaZPCESw+8pja9oQlbUDVINYgmacs0lCsbFS5R7vc=.webp +0 -0
  54. package/example/.next/cache/images/c9dcuiQ8O5e6pwHRxJtUCx3tFTD5fk0GH07hStsE6Q0=/1657107680401.jwYrFWs2M9PlA3K2ZZaR7tQk1BCwIU3EyAw9b-RBJGc=.webp +0 -0
  55. package/example/.next/cache/images/cTF2A44FXn8nLM91wKUoIEqhphWsnHQeM19UXTYuCjU=/1625566943586.FsHRv9b2D1Qu0XuUCIC0AB2goFSO+maM7H+SE4GSn1U=.webp +0 -0
  56. package/example/.next/cache/images/cVH7moJ73vvxuB1En1mtSjyjCAn7ZedMLuWgvI8YD9U=/1656759920737.rpQVMyg-AaUmlLQcsNkRBcHwqIhhb5bVfXmej8NL3Ls=.webp +0 -0
  57. package/example/.next/cache/images/dSxPG4mvFB-hsFa2WNNKGVH+EM8F73q59MOz+d84wt0=/1625470290291.9SaCLJMI8CiS-JzFL7TaZTfWXnpzp2E6eTe+RFZYv-c=.webp +0 -0
  58. package/example/.next/cache/images/dw-FglYBg89Atjb1B0R85+AwxeHSPUjuO8Kh1CV0-m4=/1625497900295.xFYayjV9nBGOKUTVq5XxlGEIWR5B5NOtP2X6N9gcAUo=.webp +0 -0
  59. package/example/.next/cache/images/f0TzeTFnAY-0ltYUi9v76DWDq3xCt2-9uBbQx4xeK3E=/1625299582181.v4L5Aguf03P1aXwUUG2yzWa4jsIkRvG35rv7Xk2e3Yg=.webp +0 -0
  60. package/example/.next/cache/images/fy3he+3cRQ9wtXvPOgCMpbECVEZpx-cdDDs+J0bnCl0=/1625219592716.zIxZGRHl91NEtnV4nbyU0rB3EtEyR9Lxnri-+voKAvs=.webp +0 -0
  61. package/example/.next/cache/images/g9PwkkYlS8p6OZa5PbvEmIxLFhwMULmPZ4JXWpN+m9E=/1625299465140.loc887GnjFgThYkCZOwQOxrUnC1XK+hbFpOxLOZV2YE=.webp +0 -0
  62. package/example/.next/cache/images/gEWhGfMHCTTgqNTJGXoavWIjsPe5-XHrTCOZoM0K3A0=/1625299501484.jzxT8QO8RG7s8Kz3g63dSfVxZEFiu6uGPLFz3e2W7cU=.webp +0 -0
  63. package/example/.next/cache/images/iHANQk+34mFntRtrtUkKrthnmdjp6ruWLqwvBnj0shA=/1625219571001.+yVlIMc84gsVdgGr6dfpa+NKaYqXQLJb4rxP95iokjo=.webp +0 -0
  64. package/example/.next/cache/images/iTGjNMCKRRKWT6Se1ypy6B8G7VG3aE81NoYZWWuFkRM=/1625299505650.WGHxeAxX5Th696JjcRa8sgeI+xCA-D31-rJYa1TfqYc=.webp +0 -0
  65. package/example/.next/cache/images/iUy4uGqOpV5cYkmJQ6H1OenGKhlJKn8YXFjNrlAcoJM=/1625474121167.YG1FPtrJnhaldgLFyM0PYUrKRS4YzNPynIHRBAsZJpI=.webp +0 -0
  66. package/example/.next/cache/images/jiDD0qNI10KXQQAUzeRuRNNktq5a6AhagAaeeFC-TAQ=/1656761403766.MdJnQq7SbBrJRtJEjPRng-ovqekSsQAPxEoERZwU0AY=.webp +0 -0
  67. package/example/.next/cache/images/k6CGZJxOx65S31BJg2vWXcUUTInuc28HlY+vruC5p08=/1625300551403.vqRL7Mz7oVbXyhRHwxk5vtqXEHKbcR-xYitHMim2KoM=.webp +0 -0
  68. package/example/.next/cache/images/lUg+tPaN1bFXtqfifZGZF3zOXqUiJsVHbrj7P0CI9eE=/1656749479842.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  69. package/example/.next/cache/images/m2NzDIE4Ft53TdiwYp3ymfmxd-MB8H+NCDL9HP2heoQ=/1625570988005.GgcoTYV3RHmRWw83xvhRld3iVysMAhdfGrX91Zl0skk=.webp +0 -0
  70. package/example/.next/cache/images/n6WUQmM45C8h6AyLZQVtPJihzo+YXCGPZPoSLlieaeg=/1656749479842.+yVlIMc84gsVdgGr6dfpa+NKaYqXQLJb4rxP95iokjo=.webp +0 -0
  71. package/example/.next/cache/images/nRr2Uwi8fvy6WIpGEwEQdqIUrjmlZc6rJPhxxJa82Es=/1625213880032.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  72. package/example/.next/cache/images/o0N432kChXWOqK5UVRtqLsLDWb5+dYe2JvYO6d24vc0=/1625482549426.CaPu+NWbHtURILwAbvjOMW3vT0776ONf0tXGWzsaDnA=.webp +0 -0
  73. package/example/.next/cache/images/oCrD0LhpE+c2Igt0JD1Yw0kC7aOo62HQ-5wedgqBbzc=/1656761398353.f9SVRkSQOaIIA6GikQ8gIzTuFdteePWKPeSdEPKiVZ4=.webp +0 -0
  74. package/example/.next/cache/images/oQ6ibo6F3ySy2ESJgLZIdmbcWTiOP3Q0KhY2fpikQ5k=/1625299093245.wohGDcrAnckq4RxHw2+ScWJWe1Dk5fIwjyVoVBt5cEE=.webp +0 -0
  75. package/example/.next/cache/images/p7XzvB8oyN5nfu11eCA42SeEp7sL+LPQQoRU64YT1cc=/1625299322699.eYKIZha0lC4+LSV+ZINxWGGOfgqw30+9w2erMlPbFTA=.webp +0 -0
  76. package/example/.next/cache/images/pnG318NZ2UvU2k21miucoxLsd8wGC5T6lVtcIzbPgd0=/1625299443084.RDAllNEC0jZGUcFFZqqZrEKfEVth-wpANCdkO+jAVvE=.webp +0 -0
  77. package/example/.next/cache/images/sDmCscY0vQ6Ce3yhoIzfNRxh-aSDxq+RTOoq0cUN4cI=/1656756694154.vDQunPJtcqmDa5Dw3GNOsYnbPoyIC9zEHXjUgRX+5VI=.webp +0 -0
  78. package/example/.next/cache/images/tv5navWlSovKHHXAA+lKFltBgdnGNbCL3KnX761Ycus=/1625566936879.641rNXHFuO1fzs0BSgp5C+Sw+zWBQp6CJs4+utqZU1c=.webp +0 -0
  79. package/example/.next/cache/images/utC1kNaPpZdZepwnTfNu9cW-3ICXwUkEoLi+pTgGKO8=/1656749851790.zMx5v1d6EgYxzhH5u9vceuQAZdrlkrwNiW-EzuaYMnw=.webp +0 -0
  80. package/example/.next/cache/images/v156Um7QIAhI-jW4GZuohhI1SVZ3A-C5W7stSH6+Ex8=/1625571324722.GGkUlkTqDjM2yzNmjFvUx-dBg-dCLrVvQNFj1xYp+L4=.webp +0 -0
  81. package/example/.next/cache/images/ve17AGz6UzylkfjhegWUnZ4SUXdLbpBWd-M+DAbqhVo=/1625213911797.zMx5v1d6EgYxzhH5u9vceuQAZdrlkrwNiW-EzuaYMnw=.webp +0 -0
  82. package/example/.next/cache/images/w+++27-2ebMrzNGxoKhSr9vf0VqhIlpV3xO8-nmznSM=/1625219570994.+yVlIMc84gsVdgGr6dfpa+NKaYqXQLJb4rxP95iokjo=.webp +0 -0
  83. package/example/.next/cache/images/wEVHpFSN5nWkDzJM1zD9IzkT-5+9aLCjtzZlx7FnChA=/1625300569493.rBN4UJXzzvwnwMc6lkdFNiOodKZnuw9BElwqky7XTJ0=.webp +0 -0
  84. package/example/.next/cache/images/wOSsRjxgCIRti4Y51UNQVHeNw92Sg-OV6tSME5c2+RU=/1657107410586.c+9x+gNEkQckj5C8j9I5aZJiJf35+8bi-q7MlbQBOlk=.webp +0 -0
  85. package/example/.next/cache/images/wciNuT5QUpxVMjbdEd5KWYQAkxr4pu0mSsO8CrnNuRo=/1625300606596.WAxNBjGkgmTuieJ8l+3FtINuMozp8NMBQx9OfMbxvLY=.webp +0 -0
  86. package/example/.next/cache/images/xQ--vjMXdpyez6gYJhx5c22xjy6UfzN8shB+AT-WnQw=/1625213880032.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  87. package/example/.next/cache/images/xfzsIzvsjdsLHqIoLrdTT1AjZi9+RIje5JHlDlzw+LQ=/1625299556299.c43pjJ8oT5uj6rWCkZRR+sYJ2unczuZsJsvTPoYMCNg=.webp +0 -0
  88. package/example/.next/cache/images/xvjW0MVJv7OygHiGuo5gvdejePhehBB84DWWy0RobDg=/1625571376478.kZnEJ9pDGRP7pgjpXGDPuV-HLcq5hWt9eWAFm6G84OI=.webp +0 -0
  89. package/example/.next/cache/images/yEcVQvBB4mvzdzhAgu6yUci93hNSew5goqdazysmcaw=/1625299488426.1uAYRUalqmHfx5q0dqBXjl-shnwNiMuPt3-D6D6kgHw=.webp +0 -0
  90. package/example/.next/cache/images/yX0fhb7SMjwEomDwIq68YQHaZlZCZl7B8XxgNuNT2Ds=/1625219571007.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  91. package/example/.next/cache/images/zh5j6vOXiawy6rDIG3BLBs4itvIs0VVtnkvSFIKa5g4=/1625213904647.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  92. package/example/.next/cache/images/zmAZ9S2RPA8WIuVoev9YQINu8aQgcsNtDGNiLjNAYlU=/1656756588278.ifTqMK-gjLzo3qsY-0kwQOYgfnZzrDlPk0kqF90U9p8=.webp +0 -0
  93. package/example/.next/cache/webpack/client-development/0.pack +0 -0
  94. package/example/.next/cache/webpack/client-development/1.pack +0 -0
  95. package/example/.next/cache/webpack/client-development/2.pack +0 -0
  96. package/example/.next/cache/webpack/client-development/3.pack +0 -0
  97. package/example/.next/cache/webpack/client-development/4.pack +0 -0
  98. package/example/.next/cache/webpack/client-development/5.pack +0 -0
  99. package/example/.next/cache/webpack/client-development/6.pack +0 -0
  100. package/example/.next/cache/webpack/client-development/7.pack +0 -0
  101. package/example/.next/cache/webpack/client-development/8.pack +0 -0
  102. package/example/.next/cache/webpack/client-development/9.pack +0 -0
  103. package/example/.next/cache/webpack/client-development/index.pack +0 -0
  104. package/example/.next/cache/webpack/client-development/index.pack.old +0 -0
  105. package/example/.next/cache/webpack/server-development/0.pack +0 -0
  106. package/example/.next/cache/webpack/server-development/1.pack +0 -0
  107. package/example/.next/cache/webpack/server-development/2.pack +0 -0
  108. package/example/.next/cache/webpack/server-development/3.pack +0 -0
  109. package/example/.next/cache/webpack/server-development/4.pack +0 -0
  110. package/example/.next/cache/webpack/server-development/5.pack +0 -0
  111. package/example/.next/cache/webpack/server-development/6.pack +0 -0
  112. package/example/.next/cache/webpack/server-development/7.pack +0 -0
  113. package/example/.next/cache/webpack/server-development/8.pack +0 -0
  114. package/example/.next/cache/webpack/server-development/index.pack +0 -0
  115. package/example/.next/cache/webpack/server-development/index.pack.old +0 -0
  116. package/example/.next/cache/withYarn1Workspaces.3d60d45801.json +1 -0
  117. package/example/.next/cache/withYarn1Workspaces.d8e240ca09.json +1 -0
  118. package/example/.next/react-loadable-manifest.json +8 -0
  119. package/example/.next/server/pages/_app.js +47 -0
  120. package/example/.next/server/pages/_document.js +209 -0
  121. package/example/.next/server/pages/_error.js +68 -0
  122. package/example/.next/server/pages/index.js +135 -0
  123. package/example/.next/server/pages/next/dist/pages/_error.js +68 -0
  124. package/example/.next/server/pages-manifest.json +6 -0
  125. package/example/.next/server/static/image/components/image.66235d2f01fd4fba70eb3938db05810e.jpg +0 -0
  126. package/example/.next/server/webpack-runtime.js +168 -0
  127. package/example/.next/static/chunks/amp.js +84 -0
  128. package/example/.next/static/chunks/main.js +1140 -0
  129. package/example/.next/static/chunks/node_modules_next_dist_client_dev_noop_js.js +22 -0
  130. package/example/.next/static/chunks/pages/_app.js +74 -0
  131. package/example/.next/static/chunks/pages/_error.js +95 -0
  132. package/example/.next/static/chunks/pages/index.js +280 -0
  133. package/example/.next/static/chunks/pages/next/dist/pages/_error.js +148 -0
  134. package/example/.next/static/chunks/polyfills.js +40 -0
  135. package/example/.next/static/chunks/react-refresh.js +63 -0
  136. package/example/.next/static/chunks/webpack.js +1277 -0
  137. package/example/.next/static/development/_buildManifest.js +1 -0
  138. package/example/.next/static/development/_ssgManifest.js +1 -0
  139. package/example/.next/static/image/components/image.66235d2f01fd4fba70eb3938db05810e.jpg +0 -0
  140. package/example/.next/static/webpack/0588aaab49febd8cfe1c.webpack.hot-update.json +1 -0
  141. package/example/.next/static/webpack/072a7d130e228881d052.webpack.hot-update.json +1 -0
  142. package/example/.next/static/webpack/0762084187c63da9472d.webpack.hot-update.json +1 -0
  143. package/example/.next/static/webpack/0cea8b02db9004a9010b.webpack.hot-update.json +1 -0
  144. package/example/.next/static/webpack/0e5144f94622b3a25db6.webpack.hot-update.json +1 -0
  145. package/example/.next/static/webpack/1252cfc380272b4fe2e6.webpack.hot-update.json +1 -0
  146. package/example/.next/static/webpack/1402ac884dae19bf86c6.webpack.hot-update.json +1 -0
  147. package/example/.next/static/webpack/147aac9d3d7030a41f7f.webpack.hot-update.json +1 -0
  148. package/example/.next/static/webpack/1bda8bbbca0e0f13f045.webpack.hot-update.json +1 -0
  149. package/example/.next/static/webpack/234d4ce3b70ffd983ba8.webpack.hot-update.json +1 -0
  150. package/example/.next/static/webpack/26b79f15961d39636a40.webpack.hot-update.json +1 -0
  151. package/example/.next/static/webpack/2826318bc6ba4bd9d644.webpack.hot-update.json +1 -0
  152. package/example/.next/static/webpack/2a955e2b9072adb73190.webpack.hot-update.json +1 -0
  153. package/example/.next/static/webpack/2c2aaee83efae1379187.webpack.hot-update.json +1 -0
  154. package/example/.next/static/webpack/3555adce6517c2f7e42e.webpack.hot-update.json +1 -0
  155. package/example/.next/static/webpack/3588af142e46a835343c.webpack.hot-update.json +1 -0
  156. package/example/.next/static/webpack/37f12cbe9b48a34c52c2.webpack.hot-update.json +1 -0
  157. package/example/.next/static/webpack/3ac52037129af449eb72.webpack.hot-update.json +1 -0
  158. package/example/.next/static/webpack/3b42c94e63de900303b9.webpack.hot-update.json +1 -0
  159. package/example/.next/static/webpack/3c79280973f09aaa87fe.webpack.hot-update.json +1 -0
  160. package/example/.next/static/webpack/3c87c0ea5ce694e8d1c5.webpack.hot-update.json +1 -0
  161. package/example/.next/static/webpack/3de319507c766ee73bea.webpack.hot-update.json +1 -0
  162. package/example/.next/static/webpack/43b43eb8c73ce45f78f3.webpack.hot-update.json +1 -0
  163. package/example/.next/static/webpack/43c79a23f821cd622aee.webpack.hot-update.json +1 -0
  164. package/example/.next/static/webpack/4e0a0f884a956cbb5abe.webpack.hot-update.json +1 -0
  165. package/example/.next/static/webpack/50a19b6d8c63681a6f59.webpack.hot-update.json +1 -0
  166. package/example/.next/static/webpack/51822142283bf3a4fb5a.webpack.hot-update.json +1 -0
  167. package/example/.next/static/webpack/55ee69f8d85488769153.webpack.hot-update.json +1 -0
  168. package/example/.next/static/webpack/57d0775bfd690a4598a7.webpack.hot-update.json +1 -0
  169. package/example/.next/static/webpack/585753f40a2ba758aaeb.webpack.hot-update.json +1 -0
  170. package/example/.next/static/webpack/58da75bd3cf67c71206b.webpack.hot-update.json +1 -0
  171. package/example/.next/static/webpack/5d0aa62f686882951598.webpack.hot-update.json +1 -0
  172. package/example/.next/static/webpack/5de110501cdd600f11d7.webpack.hot-update.json +1 -0
  173. package/example/.next/static/webpack/63775ccd9a7849e5764c.webpack.hot-update.json +1 -0
  174. package/example/.next/static/webpack/6b4663280b1db8f5e905.webpack.hot-update.json +1 -0
  175. package/example/.next/static/webpack/6d11705f01219ee2fa3d.webpack.hot-update.json +1 -0
  176. package/example/.next/static/webpack/6d4eca6985c3546f0f71.webpack.hot-update.json +1 -0
  177. package/example/.next/static/webpack/6e6063845501820278cd.webpack.hot-update.json +1 -0
  178. package/example/.next/static/webpack/74a36e7ef8e1ce4fdf4a.webpack.hot-update.json +1 -0
  179. package/example/.next/static/webpack/796fe50a2b9d66aec2d7.webpack.hot-update.json +1 -0
  180. package/example/.next/static/webpack/878b2eb56dd102f8d1de.webpack.hot-update.json +1 -0
  181. package/example/.next/static/webpack/8d58abc5879781fbdb2f.webpack.hot-update.json +1 -0
  182. package/example/.next/static/webpack/8f405c984e4934b20605.webpack.hot-update.json +1 -0
  183. package/example/.next/static/webpack/90295054405377c77f5b.webpack.hot-update.json +1 -0
  184. package/example/.next/static/webpack/9310bbbf11c1977e9d98.webpack.hot-update.json +1 -0
  185. package/example/.next/static/webpack/9a0237d669946cc844e6.webpack.hot-update.json +1 -0
  186. package/example/.next/static/webpack/9aeee506244bc34b7b4b.webpack.hot-update.json +1 -0
  187. package/example/.next/static/webpack/9f473ce1942e5fdb3632.webpack.hot-update.json +1 -0
  188. package/example/.next/static/webpack/a1185fb9adfe5b70bc2f.webpack.hot-update.json +1 -0
  189. package/example/.next/static/webpack/a11eb25c0fca8e105e00.webpack.hot-update.json +1 -0
  190. package/example/.next/static/webpack/a48bbb1152e41e6a3cf2.webpack.hot-update.json +1 -0
  191. package/example/.next/static/webpack/aa3b500d2bc6950dbadd.webpack.hot-update.json +1 -0
  192. package/example/.next/static/webpack/ab0b9af23ef3fd93299c.webpack.hot-update.json +1 -0
  193. package/example/.next/static/webpack/aea6a75d56441fbbdaff.webpack.hot-update.json +1 -0
  194. package/example/.next/static/webpack/af81bfc5f0a8c32c3b51.webpack.hot-update.json +1 -0
  195. package/example/.next/static/webpack/b370b882a7b8cbf89abd.webpack.hot-update.json +1 -0
  196. package/example/.next/static/webpack/b3e2c4a7565fcfca527f.webpack.hot-update.json +1 -0
  197. package/example/.next/static/webpack/c6068e16d94c09cfd6b6.webpack.hot-update.json +1 -0
  198. package/example/.next/static/webpack/c73596b5b037cb23ec6b.webpack.hot-update.json +1 -0
  199. package/example/.next/static/webpack/c7dab37225cb7bc65af3.webpack.hot-update.json +1 -0
  200. package/example/.next/static/webpack/d2f930e23e921b06ed5c.webpack.hot-update.json +1 -0
  201. package/example/.next/static/webpack/d371d7c066578693521e.webpack.hot-update.json +1 -0
  202. package/example/.next/static/webpack/d965a3cf3815af872d29.webpack.hot-update.json +1 -0
  203. package/example/.next/static/webpack/da33d321cff0dda32eb0.webpack.hot-update.json +1 -0
  204. package/example/.next/static/webpack/dba31d980c30d691d16b.webpack.hot-update.json +1 -0
  205. package/example/.next/static/webpack/dd8aa6ef77cd74d84ec3.webpack.hot-update.json +1 -0
  206. package/example/.next/static/webpack/e15c892c8dbe9bc25020.webpack.hot-update.json +1 -0
  207. package/example/.next/static/webpack/e8bf5676cc19a6345ad3.webpack.hot-update.json +1 -0
  208. package/example/.next/static/webpack/eddd97db36cfbd0a1e7c.webpack.hot-update.json +1 -0
  209. package/example/.next/static/webpack/f031b79058783bc1558e.webpack.hot-update.json +1 -0
  210. package/example/.next/static/webpack/f3fa39ef803627283382.webpack.hot-update.json +1 -0
  211. package/example/.next/static/webpack/f48796a76815229d67ab.webpack.hot-update.json +1 -0
  212. package/example/.next/static/webpack/feb45f4041e620b79d86.webpack.hot-update.json +1 -0
  213. package/example/.next/static/webpack/ff24e5856387293df7e5.webpack.hot-update.json +1 -0
  214. package/example/.next/static/webpack/pages/index.072a7d130e228881d052.hot-update.js +22 -0
  215. package/example/.next/static/webpack/pages/index.0762084187c63da9472d.hot-update.js +22 -0
  216. package/example/.next/static/webpack/pages/index.0cea8b02db9004a9010b.hot-update.js +22 -0
  217. package/example/.next/static/webpack/pages/index.0e5144f94622b3a25db6.hot-update.js +22 -0
  218. package/example/.next/static/webpack/pages/index.1402ac884dae19bf86c6.hot-update.js +22 -0
  219. package/example/.next/static/webpack/pages/index.147aac9d3d7030a41f7f.hot-update.js +22 -0
  220. package/example/.next/static/webpack/pages/index.26b79f15961d39636a40.hot-update.js +22 -0
  221. package/example/.next/static/webpack/pages/index.2a955e2b9072adb73190.hot-update.js +22 -0
  222. package/example/.next/static/webpack/pages/index.3555adce6517c2f7e42e.hot-update.js +22 -0
  223. package/example/.next/static/webpack/pages/index.37f12cbe9b48a34c52c2.hot-update.js +22 -0
  224. package/example/.next/static/webpack/pages/index.3ac52037129af449eb72.hot-update.js +22 -0
  225. package/example/.next/static/webpack/pages/index.3c79280973f09aaa87fe.hot-update.js +22 -0
  226. package/example/.next/static/webpack/pages/index.43b43eb8c73ce45f78f3.hot-update.js +22 -0
  227. package/example/.next/static/webpack/pages/index.43c79a23f821cd622aee.hot-update.js +22 -0
  228. package/example/.next/static/webpack/pages/index.4e0a0f884a956cbb5abe.hot-update.js +22 -0
  229. package/example/.next/static/webpack/pages/index.50a19b6d8c63681a6f59.hot-update.js +22 -0
  230. package/example/.next/static/webpack/pages/index.51822142283bf3a4fb5a.hot-update.js +22 -0
  231. package/example/.next/static/webpack/pages/index.58da75bd3cf67c71206b.hot-update.js +22 -0
  232. package/example/.next/static/webpack/pages/index.5d0aa62f686882951598.hot-update.js +22 -0
  233. package/example/.next/static/webpack/pages/index.5de110501cdd600f11d7.hot-update.js +22 -0
  234. package/example/.next/static/webpack/pages/index.63775ccd9a7849e5764c.hot-update.js +22 -0
  235. package/example/.next/static/webpack/pages/index.6d11705f01219ee2fa3d.hot-update.js +22 -0
  236. package/example/.next/static/webpack/pages/index.6d4eca6985c3546f0f71.hot-update.js +22 -0
  237. package/example/.next/static/webpack/pages/index.6e6063845501820278cd.hot-update.js +22 -0
  238. package/example/.next/static/webpack/pages/index.74a36e7ef8e1ce4fdf4a.hot-update.js +22 -0
  239. package/example/.next/static/webpack/pages/index.796fe50a2b9d66aec2d7.hot-update.js +22 -0
  240. package/example/.next/static/webpack/pages/index.8d58abc5879781fbdb2f.hot-update.js +22 -0
  241. package/example/.next/static/webpack/pages/index.90295054405377c77f5b.hot-update.js +22 -0
  242. package/example/.next/static/webpack/pages/index.9310bbbf11c1977e9d98.hot-update.js +22 -0
  243. package/example/.next/static/webpack/pages/index.9a0237d669946cc844e6.hot-update.js +22 -0
  244. package/example/.next/static/webpack/pages/index.9aeee506244bc34b7b4b.hot-update.js +22 -0
  245. package/example/.next/static/webpack/pages/index.9f473ce1942e5fdb3632.hot-update.js +22 -0
  246. package/example/.next/static/webpack/pages/index.a48bbb1152e41e6a3cf2.hot-update.js +22 -0
  247. package/example/.next/static/webpack/pages/index.aa3b500d2bc6950dbadd.hot-update.js +22 -0
  248. package/example/.next/static/webpack/pages/index.aea6a75d56441fbbdaff.hot-update.js +22 -0
  249. package/example/.next/static/webpack/pages/index.b3e2c4a7565fcfca527f.hot-update.js +22 -0
  250. package/example/.next/static/webpack/pages/index.c6068e16d94c09cfd6b6.hot-update.js +22 -0
  251. package/example/.next/static/webpack/pages/index.c7dab37225cb7bc65af3.hot-update.js +22 -0
  252. package/example/.next/static/webpack/pages/index.d2f930e23e921b06ed5c.hot-update.js +22 -0
  253. package/example/.next/static/webpack/pages/index.d371d7c066578693521e.hot-update.js +22 -0
  254. package/example/.next/static/webpack/pages/index.d965a3cf3815af872d29.hot-update.js +22 -0
  255. package/example/.next/static/webpack/pages/index.dba31d980c30d691d16b.hot-update.js +22 -0
  256. package/example/.next/static/webpack/pages/index.dd8aa6ef77cd74d84ec3.hot-update.js +22 -0
  257. package/example/.next/static/webpack/pages/index.e15c892c8dbe9bc25020.hot-update.js +22 -0
  258. package/example/.next/static/webpack/pages/index.e8bf5676cc19a6345ad3.hot-update.js +22 -0
  259. package/example/.next/static/webpack/pages/index.eddd97db36cfbd0a1e7c.hot-update.js +22 -0
  260. package/example/.next/static/webpack/pages/index.f3fa39ef803627283382.hot-update.js +22 -0
  261. package/example/.next/static/webpack/pages/index.f48796a76815229d67ab.hot-update.js +22 -0
  262. package/example/.next/static/webpack/pages/index.feb45f4041e620b79d86.hot-update.js +22 -0
  263. package/example/.next/static/webpack/webpack.0588aaab49febd8cfe1c.hot-update.js +19 -0
  264. package/example/.next/static/webpack/webpack.072a7d130e228881d052.hot-update.js +19 -0
  265. package/example/.next/static/webpack/webpack.0762084187c63da9472d.hot-update.js +19 -0
  266. package/example/.next/static/webpack/webpack.0cea8b02db9004a9010b.hot-update.js +19 -0
  267. package/example/.next/static/webpack/webpack.0e5144f94622b3a25db6.hot-update.js +19 -0
  268. package/example/.next/static/webpack/webpack.1252cfc380272b4fe2e6.hot-update.js +19 -0
  269. package/example/.next/static/webpack/webpack.1402ac884dae19bf86c6.hot-update.js +19 -0
  270. package/example/.next/static/webpack/webpack.147aac9d3d7030a41f7f.hot-update.js +19 -0
  271. package/example/.next/static/webpack/webpack.1bda8bbbca0e0f13f045.hot-update.js +19 -0
  272. package/example/.next/static/webpack/webpack.234d4ce3b70ffd983ba8.hot-update.js +19 -0
  273. package/example/.next/static/webpack/webpack.26b79f15961d39636a40.hot-update.js +19 -0
  274. package/example/.next/static/webpack/webpack.2826318bc6ba4bd9d644.hot-update.js +19 -0
  275. package/example/.next/static/webpack/webpack.2a955e2b9072adb73190.hot-update.js +19 -0
  276. package/example/.next/static/webpack/webpack.2c2aaee83efae1379187.hot-update.js +19 -0
  277. package/example/.next/static/webpack/webpack.3555adce6517c2f7e42e.hot-update.js +19 -0
  278. package/example/.next/static/webpack/webpack.3588af142e46a835343c.hot-update.js +19 -0
  279. package/example/.next/static/webpack/webpack.37f12cbe9b48a34c52c2.hot-update.js +19 -0
  280. package/example/.next/static/webpack/webpack.3ac52037129af449eb72.hot-update.js +19 -0
  281. package/example/.next/static/webpack/webpack.3b42c94e63de900303b9.hot-update.js +19 -0
  282. package/example/.next/static/webpack/webpack.3c79280973f09aaa87fe.hot-update.js +19 -0
  283. package/example/.next/static/webpack/webpack.3c87c0ea5ce694e8d1c5.hot-update.js +19 -0
  284. package/example/.next/static/webpack/webpack.3de319507c766ee73bea.hot-update.js +19 -0
  285. package/example/.next/static/webpack/webpack.43b43eb8c73ce45f78f3.hot-update.js +19 -0
  286. package/example/.next/static/webpack/webpack.43c79a23f821cd622aee.hot-update.js +19 -0
  287. package/example/.next/static/webpack/webpack.4e0a0f884a956cbb5abe.hot-update.js +19 -0
  288. package/example/.next/static/webpack/webpack.50a19b6d8c63681a6f59.hot-update.js +19 -0
  289. package/example/.next/static/webpack/webpack.51822142283bf3a4fb5a.hot-update.js +19 -0
  290. package/example/.next/static/webpack/webpack.55ee69f8d85488769153.hot-update.js +19 -0
  291. package/example/.next/static/webpack/webpack.57d0775bfd690a4598a7.hot-update.js +19 -0
  292. package/example/.next/static/webpack/webpack.585753f40a2ba758aaeb.hot-update.js +19 -0
  293. package/example/.next/static/webpack/webpack.58da75bd3cf67c71206b.hot-update.js +19 -0
  294. package/example/.next/static/webpack/webpack.5d0aa62f686882951598.hot-update.js +19 -0
  295. package/example/.next/static/webpack/webpack.5de110501cdd600f11d7.hot-update.js +19 -0
  296. package/example/.next/static/webpack/webpack.63775ccd9a7849e5764c.hot-update.js +19 -0
  297. package/example/.next/static/webpack/webpack.6b4663280b1db8f5e905.hot-update.js +19 -0
  298. package/example/.next/static/webpack/webpack.6d11705f01219ee2fa3d.hot-update.js +19 -0
  299. package/example/.next/static/webpack/webpack.6d4eca6985c3546f0f71.hot-update.js +19 -0
  300. package/example/.next/static/webpack/webpack.6e6063845501820278cd.hot-update.js +19 -0
  301. package/example/.next/static/webpack/webpack.74a36e7ef8e1ce4fdf4a.hot-update.js +19 -0
  302. package/example/.next/static/webpack/webpack.796fe50a2b9d66aec2d7.hot-update.js +19 -0
  303. package/example/.next/static/webpack/webpack.878b2eb56dd102f8d1de.hot-update.js +19 -0
  304. package/example/.next/static/webpack/webpack.8d58abc5879781fbdb2f.hot-update.js +19 -0
  305. package/example/.next/static/webpack/webpack.8f405c984e4934b20605.hot-update.js +30 -0
  306. package/example/.next/static/webpack/webpack.90295054405377c77f5b.hot-update.js +19 -0
  307. package/example/.next/static/webpack/webpack.9310bbbf11c1977e9d98.hot-update.js +19 -0
  308. package/example/.next/static/webpack/webpack.9a0237d669946cc844e6.hot-update.js +19 -0
  309. package/example/.next/static/webpack/webpack.9aeee506244bc34b7b4b.hot-update.js +19 -0
  310. package/example/.next/static/webpack/webpack.9f473ce1942e5fdb3632.hot-update.js +19 -0
  311. package/example/.next/static/webpack/webpack.a1185fb9adfe5b70bc2f.hot-update.js +19 -0
  312. package/example/.next/static/webpack/webpack.a11eb25c0fca8e105e00.hot-update.js +19 -0
  313. package/example/.next/static/webpack/webpack.a48bbb1152e41e6a3cf2.hot-update.js +19 -0
  314. package/example/.next/static/webpack/webpack.aa3b500d2bc6950dbadd.hot-update.js +19 -0
  315. package/example/.next/static/webpack/webpack.ab0b9af23ef3fd93299c.hot-update.js +19 -0
  316. package/example/.next/static/webpack/webpack.aea6a75d56441fbbdaff.hot-update.js +19 -0
  317. package/example/.next/static/webpack/webpack.af81bfc5f0a8c32c3b51.hot-update.js +19 -0
  318. package/example/.next/static/webpack/webpack.b370b882a7b8cbf89abd.hot-update.js +19 -0
  319. package/example/.next/static/webpack/webpack.b3e2c4a7565fcfca527f.hot-update.js +19 -0
  320. package/example/.next/static/webpack/webpack.c6068e16d94c09cfd6b6.hot-update.js +19 -0
  321. package/example/.next/static/webpack/webpack.c73596b5b037cb23ec6b.hot-update.js +19 -0
  322. package/example/.next/static/webpack/webpack.c7dab37225cb7bc65af3.hot-update.js +19 -0
  323. package/example/.next/static/webpack/webpack.d2f930e23e921b06ed5c.hot-update.js +19 -0
  324. package/example/.next/static/webpack/webpack.d371d7c066578693521e.hot-update.js +19 -0
  325. package/example/.next/static/webpack/webpack.d965a3cf3815af872d29.hot-update.js +19 -0
  326. package/example/.next/static/webpack/webpack.da33d321cff0dda32eb0.hot-update.js +19 -0
  327. package/example/.next/static/webpack/webpack.dba31d980c30d691d16b.hot-update.js +19 -0
  328. package/example/.next/static/webpack/webpack.dd8aa6ef77cd74d84ec3.hot-update.js +19 -0
  329. package/example/.next/static/webpack/webpack.e15c892c8dbe9bc25020.hot-update.js +19 -0
  330. package/example/.next/static/webpack/webpack.e8bf5676cc19a6345ad3.hot-update.js +19 -0
  331. package/example/.next/static/webpack/webpack.eddd97db36cfbd0a1e7c.hot-update.js +19 -0
  332. package/example/.next/static/webpack/webpack.f031b79058783bc1558e.hot-update.js +19 -0
  333. package/example/.next/static/webpack/webpack.f3fa39ef803627283382.hot-update.js +19 -0
  334. package/example/.next/static/webpack/webpack.f48796a76815229d67ab.hot-update.js +19 -0
  335. package/example/.next/static/webpack/webpack.feb45f4041e620b79d86.hot-update.js +19 -0
  336. package/example/.next/static/webpack/webpack.ff24e5856387293df7e5.hot-update.js +19 -0
  337. package/example/package.json +4 -4
  338. package/package.json +7 -7
@@ -0,0 +1,22 @@
1
+ /*
2
+ * ATTENTION: An "eval-source-map" devtool has been used.
3
+ * This devtool is neither made for production nor for readable output files.
4
+ * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
5
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6
+ * or disable the default devtool with "devtool: false".
7
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8
+ */
9
+ self["webpackHotUpdate_N_E"]("pages/index",{
10
+
11
+ /***/ "../components/Image.tsx":
12
+ /*!*******************************!*\
13
+ !*** ../components/Image.tsx ***!
14
+ \*******************************/
15
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
16
+
17
+ "use strict";
18
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isStaticRequire\": function() { return /* binding */ isStaticRequire; },\n/* harmony export */ \"isStaticImageData\": function() { return /* binding */ isStaticImageData; },\n/* harmony export */ \"isStaticImport\": function() { return /* binding */ isStaticImport; },\n/* harmony export */ \"getInt\": function() { return /* binding */ getInt; },\n/* harmony export */ \"Image\": function() { return /* binding */ Image; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"../../../node_modules/react/jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @bedrock-layout/use-forwarded-ref */ \"../../../node_modules/@bedrock-layout/use-forwarded-ref/lib/index.m.js\");\n/* harmony import */ var next_dist_next_server_server_image_config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/next-server/server/image-config */ \"../../../node_modules/next/dist/next-server/server/image-config.js\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! next/head */ \"../../../node_modules/next/head.js\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _config_config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../config/config */ \"../config/config.ts\");\n/* module decorator */ module = __webpack_require__.hmd(module);\n\n\n\n\n\nvar _jsxFileName = \"/Users/paulhachmang/Sites/reachdigital-next/packages/image/components/Image.tsx\",\n _s = $RefreshSig$();\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0,_Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/* eslint-disable prefer-const */\n\n/* eslint-disable no-param-reassign */\n\n/* eslint-disable @next/next/no-img-element */\n\n/* eslint-disable jsx-a11y/alt-text */\n\n\n\n\n\n\nif (false) {}\n\nconst VALID_LOADING_VALUES = ['lazy', 'eager', undefined];\nconst loaders = new Map([['imgix', _config_config__WEBPACK_IMPORTED_MODULE_6__.imgixLoader], ['cloudinary', _config_config__WEBPACK_IMPORTED_MODULE_6__.cloudinaryLoader], ['akamai', _config_config__WEBPACK_IMPORTED_MODULE_6__.akamaiLoader], ['default', _config_config__WEBPACK_IMPORTED_MODULE_6__.defaultLoader]]);\nconst VALID_LAYOUT_VALUES = ['fill', 'responsive', 'intrinsic', 'fixed'];\nfunction isStaticRequire(src) {\n return src.default !== undefined;\n}\nfunction isStaticImageData(src) {\n return src.src !== undefined;\n}\nfunction isStaticImport(src) {\n return typeof src === 'object' && (isStaticRequire(src) || isStaticImageData(src));\n} // sort smallest to largest\n\nconst allSizes = [..._config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes, ..._config_config__WEBPACK_IMPORTED_MODULE_6__.configImageSizes];\n_config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes.sort((a, b) => a - b);\nallSizes.sort((a, b) => a - b);\n\nfunction getWidths(width, layout, sizes = '', scale) {\n if (sizes && layout === 'fill' || layout === 'responsive') {\n // Find all the \"vw\" percent sizes used in the sizes prop\n const viewportWidthRe = /(^|\\s)(1?\\d?\\d)vw/g;\n const percentSizes = []; // eslint-disable-next-line no-cond-assign\n\n for (let match; match = viewportWidthRe.exec(sizes); match) {\n var _match;\n\n percentSizes.push(parseInt((_match = match) === null || _match === void 0 ? void 0 : _match[2], 10));\n }\n\n if (percentSizes.length) {\n const smallestRatio = Math.min(...percentSizes) * 0.01;\n return {\n widths: allSizes.filter(s => s >= _config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes[0] * smallestRatio),\n kind: 'w'\n };\n } // Find all the \"px\" sizes used in the sizes prop\n\n\n const pxWidthRe = /(^|\\s)(1?\\d+)px/g;\n const pxSizes = []; // eslint-disable-next-line no-cond-assign\n\n for (let match; match = pxWidthRe.exec(sizes); match) {\n var _match2;\n\n pxSizes.push(parseInt((_match2 = match) === null || _match2 === void 0 ? void 0 : _match2[2], 10));\n }\n\n if (pxSizes.length) {\n return {\n widths: pxSizes.map(pxSize => {\n var _allSizes$filter, _allSizes$filter2;\n\n const scaled = (_allSizes$filter = allSizes.filter(s => s * scale > pxSize)) === null || _allSizes$filter === void 0 ? void 0 : _allSizes$filter[0];\n const dpr2 = (_allSizes$filter2 = allSizes.filter(s => s > pxSize)) === null || _allSizes$filter2 === void 0 ? void 0 : _allSizes$filter2[0];\n return scale > 1 ? Math.max(scaled, dpr2) : Math.min(scaled, dpr2);\n }),\n kind: 'w'\n };\n }\n\n return {\n widths: allSizes,\n kind: 'w'\n };\n }\n\n if (typeof width !== 'number' || layout === 'fill') {\n return {\n widths: _config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes,\n kind: 'w'\n };\n }\n\n const widths = [...new Set( // > This means that most OLED screens that say they are 3x resolution,\n // > are actually 3x in the green color, but only 1.5x in the red and\n // > blue colors. Showing a 3x resolution image in the app vs a 2x\n // > resolution image will be visually the same, though the 3x image\n // > takes significantly more data. Even true 3x resolution screens are\n // > wasteful as the human eye cannot see that level of detail without\n // > something like a magnifying glass.\n // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html\n [width, width * 2\n /* , width * 3*/\n ].map(w => allSizes.find(p => p >= w) || allSizes[allSizes.length - 1]))];\n return {\n widths,\n kind: 'x'\n };\n}\n\nfunction generateSourceAttrs({\n src,\n layout,\n width,\n quality = 44,\n sizes,\n loader,\n scale\n}) {\n const {\n widths,\n kind\n } = getWidths(width, layout, sizes, scale);\n return {\n sizes: !sizes && kind === 'w' ? `50vw` : sizes,\n srcSet: widths.map((w, i) => `${loader({\n src,\n quality,\n width: w\n })} ${kind === 'w' ? Math.round(w * scale) : i + 1}${kind}`).join(', ')\n };\n}\n\nfunction getInt(x) {\n if (typeof x === 'number') {\n return x;\n }\n\n if (typeof x === 'string') {\n return parseInt(x, 10);\n }\n\n return undefined;\n}\n\nfunction defaultImageLoader(loaderProps) {\n const load = loaders.get(_config_config__WEBPACK_IMPORTED_MODULE_6__.configLoader);\n\n if (load) {\n return load(_objectSpread({\n root: _config_config__WEBPACK_IMPORTED_MODULE_6__.configPath\n }, loaderProps));\n }\n\n throw new Error(`[@reachdigital/image]: Unknown \"loader\" found in \"next.config.js\". Expected: ${next_dist_next_server_server_image_config__WEBPACK_IMPORTED_MODULE_3__.VALID_LOADERS.join(', ')}. Received: ${_config_config__WEBPACK_IMPORTED_MODULE_6__.configLoader}`);\n} // See https://stackoverflow.com/q/39777833/266535 for why we use this ref\n// handler instead of the img's onLoad attribute.\n\n\nfunction removePlaceholder(img, placeholder) {\n if (placeholder === 'blur' && img) {\n const handleLoad = () => {\n if (!img.src.startsWith('data:')) {\n const p = 'decode' in img ? img.decode() : Promise.resolve(); // eslint-disable-next-line @typescript-eslint/no-floating-promises\n\n p.catch(() => {}).then(() => {\n img.style.filter = 'none';\n img.style.backgroundSize = 'none';\n img.style.backgroundImage = 'none';\n });\n }\n };\n\n if (img.complete) {\n // If the real image fails to load, this will still remove the placeholder.\n // This is the desired behavior for now, and will be revisited when error\n // handling is worked on for the image component itself.\n handleLoad();\n } else {\n img.onload = handleLoad;\n }\n }\n}\n/** Checks whether an image is currently in the viewport */\n\n\nfunction isInViewport(elem) {\n const {\n top,\n right,\n bottom,\n left\n } = elem.getBoundingClientRect();\n return bottom >= 0 && right >= 0 && top <= window.innerHeight && left <= window.innerWidth;\n}\n\nfunction isSizesRecord(sizes) {\n return typeof sizes === 'object';\n}\n\nfunction sizesEntries(sizes) {\n if (isSizesRecord(sizes)) {\n return Object.entries(sizes).map(([breakpoint, size]) => [Number(breakpoint), size]).sort(([sizeA], [sizeB]) => sizeB - sizeA);\n }\n\n return [[0, sizes]];\n}\n\nfunction generateSizesString(sizes) {\n return sizesEntries(sizes).map(([breakpoint, size]) => {\n if (breakpoint === 0) return size;\n return `(min-width: ${breakpoint}px) ${size}`;\n }).join(', ');\n}\n/** Since we're handling stuff ourselves we omit some stuff */\n\n\nconst Image = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().forwardRef(_c = _s((_ref, forwardedRef) => {\n var _generateSizesString, _loading;\n\n _s();\n\n let {\n src,\n sizes: sizesIncomming,\n unoptimized = false,\n loading,\n layout = 'responsive',\n quality,\n width,\n height,\n style,\n loader = defaultImageLoader,\n placeholder = 'empty',\n blurDataURL\n } = _ref,\n imgProps = (0,_Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__.default)(_ref, [\"src\", \"sizes\", \"unoptimized\", \"loading\", \"layout\", \"quality\", \"width\", \"height\", \"style\", \"loader\", \"placeholder\", \"blurDataURL\"]);\n\n const ref = (0,_bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__.default)(forwardedRef);\n const sizesOrig = layout === 'fixed' && width && !sizesIncomming ? `${width}px` : sizesIncomming;\n const sizes = (_generateSizesString = generateSizesString(sizesOrig)) !== null && _generateSizesString !== void 0 ? _generateSizesString : '50vw'; // If no responsive sizes are given, we're defaulting to 50vw on mobile\n // const [sizes, setSizes] = useState(toSizesString(sizesOrig) ?? `50vw`)\n\n (0,react__WEBPACK_IMPORTED_MODULE_5__.useEffect)(() => {\n if (false) {}\n if (!ref.current) return () => {};\n\n function reportSizes(img) {\n var _sizesEntries$find;\n\n let ratio;\n let msg = '';\n const [breakpoint, size] = (_sizesEntries$find = sizesEntries(sizesOrig).find(([s]) => s === 0 ? true : window.matchMedia(`(min-width: ${s})`))) !== null && _sizesEntries$find !== void 0 ? _sizesEntries$find : [0, '100vw'];\n\n if (size) {\n const el = document.createElement('div');\n el.setAttribute('style', `width: ${size}`);\n document.body.appendChild(el);\n const measuredWidth = el.getBoundingClientRect().width; // el.remove()\n\n ratio = measuredWidth ** 2 / img.naturalWidth ** 2;\n msg += `Image has \"sizes\" property set, but size 'min-width(${breakpoint}px) ${size}' is incorrect.`;\n } else {\n msg += `Image has no \"sizes\" property set.`;\n ratio = (window.innerWidth * 0.5) ** 2 / img.naturalWidth ** 2;\n }\n\n const round = nr => Math.round(nr * 100) / 100;\n\n if (ratio > 1.2) {\n console.warn(`[@reachdigital/image]: ${msg} Currently downloading an image that has ${round(ratio)}x too many pixels`, img);\n } else if (ratio < 0.8) {\n console.warn(`[@reachdigital/image]: ${msg} Currently downloading an image that has ${round(1 / ratio)}x too few pixels`, img);\n }\n } // Warn the user when he isn't providing sizes and how to proceed\n\n\n const ro = new ResizeObserver(([entry]) => {\n const img = entry.target;\n if (img.naturalWidth) reportSizes(img);\n\n img.onload = () => reportSizes(img);\n });\n ro.observe(ref.current);\n return () => ro.disconnect();\n }, [layout, ref, sizesOrig, src, width]);\n let staticSrc = '';\n\n if (isStaticImport(src)) {\n const staticImageData = isStaticRequire(src) ? src.default : src;\n\n if (!staticImageData.src) {\n throw new Error(`[@reachdigital/image]: An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(staticImageData)}`);\n }\n\n blurDataURL = blurDataURL || staticImageData.blurDataURL;\n staticSrc = staticImageData.src;\n\n if (!layout || layout !== 'fill') {\n height = height || staticImageData.height;\n width = width || staticImageData.width;\n\n if (!staticImageData.height || !staticImageData.width) {\n throw new Error(`[@reachdigital/image]: An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(staticImageData)}`);\n }\n }\n }\n\n src = typeof src === 'string' ? src : staticSrc;\n const widthInt = getInt(width);\n const heightInt = getInt(height);\n const qualityInt = getInt(quality);\n\n if (true) {\n if (!src) {\n throw new Error(`[@reachdigital/image]: Image is missing required \"src\" property. Make sure you pass \"src\" in props to the \\`@reachdigital/image\\` component. Received: ${JSON.stringify({\n width,\n height,\n quality\n })}`);\n }\n\n if (!VALID_LAYOUT_VALUES.includes(layout)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"layout\" property. Provided \"${layout}\" should be one of ${VALID_LAYOUT_VALUES.map(String).join(',')}.`);\n }\n\n if (typeof widthInt !== 'undefined' && Number.isNaN(widthInt) || typeof heightInt !== 'undefined' && Number.isNaN(heightInt)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"width\" or \"height\" property. These should be numeric values.`);\n }\n\n if (!VALID_LOADING_VALUES.includes(loading)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"loading\" property. Provided \"${loading}\" should be one of ${VALID_LOADING_VALUES.map(String).join(',')}.`);\n }\n\n if (placeholder === 'blur') {\n if (layout !== 'fill' && (widthInt || 0) * (heightInt || 0) < 1600) {\n console.warn(`[@reachdigital/image]: Image with src \"${src}\" is smaller than 40x40. Consider removing the \"placeholder='blur'\" property to improve performance.`);\n }\n\n if (!blurDataURL) {\n const VALID_BLUR_EXT = ['jpeg', 'png', 'webp']; // should match next-image-loader\n\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has \"placeholder='blur'\" property but is missing the \"blurDataURL\" property.\n Possible solutions:\n - Add a \"blurDataURL\" property, the contents should be a small Data URL to represent the image\n - Change the \"src\" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(',')}\n - Remove the \"placeholder\" property, effectively no blur effect\n Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url`);\n }\n }\n }\n\n if (typeof widthInt === 'undefined' && typeof heightInt === 'undefined') {\n if (layout === 'fill') {// handle fill\n } else if (true) {\n // <Image src=\"i.png\" />\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" must use \"width\" and \"height\" properties or \"layout='fill'\" property.`);\n }\n }\n\n (_loading = loading) !== null && _loading !== void 0 ? _loading : loading = 'lazy';\n\n if (src && src.startsWith('data:')) {\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n unoptimized = true;\n }\n\n const attributes3x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 1.5\n });\n const attributes2x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 1\n });\n const attributes1x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 0.5\n });\n if (layout !== 'fixed' && !style) style = {};\n if (layout === 'responsive') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: 'auto'\n });\n if (layout === 'intrinsic') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: 'auto',\n maxWidth: width\n });\n if (layout === 'fill') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: '100%'\n });\n return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [unoptimized ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", _objectSpread(_objectSpread({\n ref: ref\n }, imgProps), {}, {\n src: src,\n width: width,\n height: height,\n style: style\n }), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 617,\n columnNumber: 11\n }, undefined) : /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"picture\", {\n children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"source\", _objectSpread({\n media: \"(-webkit-min-device-pixel-ratio: 2.5)\"\n }, attributes3x), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 620,\n columnNumber: 13\n }, undefined), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"source\", _objectSpread({\n media: \"(-webkit-min-device-pixel-ratio: 1.5)\"\n }, attributes2x), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 621,\n columnNumber: 13\n }, undefined), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", _objectSpread(_objectSpread(_objectSpread({\n ref: ref\n }, imgProps), attributes1x), {}, {\n loading: loading,\n width: width,\n height: height,\n style: style\n }), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 622,\n columnNumber: 13\n }, undefined)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 619,\n columnNumber: 11\n }, undefined), loading === 'eager' && /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_4___default()), {\n children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"link\", {\n rel: \"preload\",\n as: \"image\",\n media: \"(-webkit-min-device-pixel-ratio: 2.5)\" // @ts-expect-error imagesrcset is not yet in the link element type\n ,\n imagesrcset: attributes1x.srcSet,\n imagesizes: sizes\n }, `__nimg-2x-${attributes1x.srcSet}${attributes1x.sizes}`, false, {\n fileName: _jsxFileName,\n lineNumber: 635,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 634,\n columnNumber: 11\n }, undefined)]\n }, void 0, true);\n}, \"uc1ywpQv+s/tGng4xj/L6VVOIq8=\", false, function () {\n return [_bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__.default];\n}));\n_c2 = Image;\nImage.displayName = 'NextPicture';\n\n\nvar _c, _c2;\n\n$RefreshReg$(_c, \"Image$React.forwardRef\");\n$RefreshReg$(_c2, \"Image\");\n\n;\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n var currentExports = module.__proto__.exports;\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uL2NvbXBvbmVudHMvSW1hZ2UudHN4PzJiNmQiXSwibmFtZXMiOlsiVkFMSURfTE9BRElOR19WQUxVRVMiLCJ1bmRlZmluZWQiLCJsb2FkZXJzIiwiTWFwIiwiaW1naXhMb2FkZXIiLCJjbG91ZGluYXJ5TG9hZGVyIiwiYWthbWFpTG9hZGVyIiwiZGVmYXVsdExvYWRlciIsIlZBTElEX0xBWU9VVF9WQUxVRVMiLCJpc1N0YXRpY1JlcXVpcmUiLCJzcmMiLCJkZWZhdWx0IiwiaXNTdGF0aWNJbWFnZURhdGEiLCJpc1N0YXRpY0ltcG9ydCIsImFsbFNpemVzIiwiY29uZmlnRGV2aWNlU2l6ZXMiLCJjb25maWdJbWFnZVNpemVzIiwiYSIsImIiLCJzb3J0IiwiZ2V0V2lkdGhzIiwid2lkdGgiLCJsYXlvdXQiLCJzaXplcyIsInNjYWxlIiwidmlld3BvcnRXaWR0aFJlIiwicGVyY2VudFNpemVzIiwibWF0Y2giLCJleGVjIiwicHVzaCIsInBhcnNlSW50IiwibGVuZ3RoIiwic21hbGxlc3RSYXRpbyIsIk1hdGgiLCJtaW4iLCJ3aWR0aHMiLCJmaWx0ZXIiLCJzIiwia2luZCIsInB4V2lkdGhSZSIsInB4U2l6ZXMiLCJtYXAiLCJweFNpemUiLCJzY2FsZWQiLCJkcHIyIiwibWF4IiwiU2V0IiwidyIsImZpbmQiLCJwIiwiZ2VuZXJhdGVTb3VyY2VBdHRycyIsInF1YWxpdHkiLCJsb2FkZXIiLCJzcmNTZXQiLCJpIiwicm91bmQiLCJqb2luIiwiZ2V0SW50IiwieCIsImRlZmF1bHRJbWFnZUxvYWRlciIsImxvYWRlclByb3BzIiwibG9hZCIsImdldCIsImNvbmZpZ0xvYWRlciIsInJvb3QiLCJjb25maWdQYXRoIiwiRXJyb3IiLCJWQUxJRF9MT0FERVJTIiwicmVtb3ZlUGxhY2Vob2xkZXIiLCJpbWciLCJwbGFjZWhvbGRlciIsImhhbmRsZUxvYWQiLCJzdGFydHNXaXRoIiwiZGVjb2RlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjYXRjaCIsInRoZW4iLCJzdHlsZSIsImJhY2tncm91bmRTaXplIiwiYmFja2dyb3VuZEltYWdlIiwiY29tcGxldGUiLCJvbmxvYWQiLCJpc0luVmlld3BvcnQiLCJlbGVtIiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiaXNTaXplc1JlY29yZCIsInNpemVzRW50cmllcyIsIk9iamVjdCIsImVudHJpZXMiLCJicmVha3BvaW50Iiwic2l6ZSIsIk51bWJlciIsInNpemVBIiwic2l6ZUIiLCJnZW5lcmF0ZVNpemVzU3RyaW5nIiwiSW1hZ2UiLCJSZWFjdCIsImZvcndhcmRlZFJlZiIsInNpemVzSW5jb21taW5nIiwidW5vcHRpbWl6ZWQiLCJsb2FkaW5nIiwiaGVpZ2h0IiwiYmx1ckRhdGFVUkwiLCJpbWdQcm9wcyIsInJlZiIsInVzZUZvcndhcmRlZFJlZiIsInNpemVzT3JpZyIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJyZXBvcnRTaXplcyIsInJhdGlvIiwibXNnIiwibWF0Y2hNZWRpYSIsImVsIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwic2V0QXR0cmlidXRlIiwiYm9keSIsImFwcGVuZENoaWxkIiwibWVhc3VyZWRXaWR0aCIsIm5hdHVyYWxXaWR0aCIsIm5yIiwiY29uc29sZSIsIndhcm4iLCJybyIsIlJlc2l6ZU9ic2VydmVyIiwiZW50cnkiLCJ0YXJnZXQiLCJvYnNlcnZlIiwiZGlzY29ubmVjdCIsInN0YXRpY1NyYyIsInN0YXRpY0ltYWdlRGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ3aWR0aEludCIsImhlaWdodEludCIsInF1YWxpdHlJbnQiLCJpbmNsdWRlcyIsIlN0cmluZyIsImlzTmFOIiwiVkFMSURfQkxVUl9FWFQiLCJhdHRyaWJ1dGVzM3giLCJhdHRyaWJ1dGVzMngiLCJhdHRyaWJ1dGVzMXgiLCJtYXhXaWR0aCIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdz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QU1FLGNBQU0sRUFBRXdGLE1BTlY7QUFPRSxhQUFLLEVBQUUvQjtBQVBUO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBSEY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGlCQUpKLEVBa0JHOEIsT0FBTyxLQUFLLE9BQVosaUJBQ0MsOERBQUMsa0RBQUQ7QUFBQSw2QkFDRTtBQUVFLFdBQUcsRUFBQyxTQUZOO0FBR0UsVUFBRSxFQUFDLE9BSEw7QUFJRSxhQUFLLEVBQUMsdUNBSlIsQ0FLRTtBQUxGO0FBTUUsbUJBQVcsRUFBRTJDLFlBQVksQ0FBQ2xHLE1BTjVCO0FBT0Usa0JBQVUsRUFBRTlCO0FBUGQsU0FDUSxhQUFZZ0ksWUFBWSxDQUFDbEcsTUFBTyxHQUFFa0csWUFBWSxDQUFDaEksS0FBTSxFQUQ3RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREY7QUFBQTtBQUFBO0FBQUE7QUFBQSxpQkFuQko7QUFBQSxrQkFERjtBQWtDRCxDQTlQVztBQUFBLFVBbUJFMEYsc0VBbkJGO0FBQUEsR0FBZDtNQUFNVixLO0FBZ1FOQSxLQUFLLENBQUNrRCxXQUFOLEdBQW9CLGFBQXBCO0FBRUEiLCJmaWxlIjoiLi4vY29tcG9uZW50cy9JbWFnZS50c3guanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItY29uc3QgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAbmV4dC9uZXh0L25vLWltZy1lbGVtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9hbHQtdGV4dCAqL1xuaW1wb3J0IHVzZUZvcndhcmRlZFJlZiBmcm9tICdAYmVkcm9jay1sYXlvdXQvdXNlLWZvcndhcmRlZC1yZWYnXG5pbXBvcnQgeyBMb2FkZXJWYWx1ZSwgVkFMSURfTE9BREVSUyB9IGZyb20gJ25leHQvZGlzdC9uZXh0LXNlcnZlci9zZXJ2ZXIvaW1hZ2UtY29uZmlnJ1xuaW1wb3J0IEhlYWQgZnJvbSAnbmV4dC9oZWFkJ1xuaW1wb3J0IHR5cGUgeyBJbWFnZUxvYWRlclByb3BzLCBJbWFnZUxvYWRlciB9IGZyb20gJ25leHQvaW1hZ2UnXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHVzZVJlc2l6ZU9ic2VydmVyIGZyb20gJ3VzZS1yZXNpemUtb2JzZXJ2ZXInXG5pbXBvcnQge1xuICBha2FtYWlMb2FkZXIsXG4gIGNsb3VkaW5hcnlMb2FkZXIsXG4gIGNvbmZpZ0RldmljZVNpemVzLFxuICBjb25maWdJbWFnZVNpemVzLFxuICBjb25maWdMb2FkZXIsXG4gIGNvbmZpZ1BhdGgsXG4gIERlZmF1bHRJbWFnZUxvYWRlclByb3BzLFxuICBkZWZhdWx0TG9hZGVyLFxuICBpbWdpeExvYWRlcixcbn0gZnJvbSAnLi4vY29uZmlnL2NvbmZpZydcbmltcG9ydCB1c2VDb25uZWN0aW9uVHlwZSBmcm9tICcuLi9ob29rcy91c2VDb25uZWN0aW9uVHlwZSdcblxuaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICBnbG9iYWwuX19ORVhUX0lNQUdFX0lNUE9SVEVEID0gdHJ1ZVxufVxuXG5leHBvcnQgdHlwZSB7IEltYWdlTG9hZGVyUHJvcHMsIEltYWdlTG9hZGVyIH1cblxuY29uc3QgVkFMSURfTE9BRElOR19WQUxVRVMgPSBbJ2xhenknLCAnZWFnZXInLCB1bmRlZmluZWRdIGFzIGNvbnN0XG50eXBlIExvYWRpbmdWYWx1ZSA9IHR5cGVvZiBWQUxJRF9MT0FESU5HX1ZBTFVFU1tudW1iZXJdXG5cbmNvbnN0IGxvYWRlcnMgPSBuZXcgTWFwPExvYWRlclZhbHVlLCAocHJvcHM6IERlZmF1bHRJbWFnZUxvYWRlclByb3BzKSA9PiBzdHJpbmc+KFtcbiAgWydpbWdpeCcsIGltZ2l4TG9hZGVyXSxcbiAgWydjbG91ZGluYXJ5JywgY2xvdWRpbmFyeUxvYWRlcl0sXG4gIFsnYWthbWFpJywgYWthbWFpTG9hZGVyXSxcbiAgWydkZWZhdWx0JywgZGVmYXVsdExvYWRlcl0sXG5dKVxuXG5jb25zdCBWQUxJRF9MQVlPVVRfVkFMVUVTID0gWydmaWxsJywgJ3Jlc3BvbnNpdmUnLCAnaW50cmluc2ljJywgJ2ZpeGVkJ10gYXMgY29uc3RcbnR5cGUgTGF5b3V0VmFsdWUgPSAnZmlsbCcgfCAnZml4ZWQnIHwgJ2ludHJpbnNpYycgfCAncmVzcG9uc2l2ZScgfCB1bmRlZmluZWRcblxudHlwZSBQbGFjZWhvbGRlclZhbHVlID0gJ2JsdXInIHwgJ2VtcHR5J1xuXG50eXBlIEltZ0VsZW1lbnRTdHlsZSA9IE5vbk51bGxhYmxlPEpTWC5JbnRyaW5zaWNFbGVtZW50c1snaW1nJ11bJ3N0eWxlJ10+XG5cbmludGVyZmFjZSBTdGF0aWNJbWFnZURhdGEge1xuICBzcmM6IHN0cmluZ1xuICBoZWlnaHQ6IG51bWJlclxuICB3aWR0aDogbnVtYmVyXG4gIGJsdXJEYXRhVVJMPzogc3RyaW5nXG59XG5cbmludGVyZmFjZSBTdGF0aWNSZXF1aXJlIHtcbiAgZGVmYXVsdDogU3RhdGljSW1hZ2VEYXRhXG59XG5cbnR5cGUgU3RhdGljSW1wb3J0ID0gU3RhdGljUmVxdWlyZSB8IFN0YXRpY0ltYWdlRGF0YVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdGF0aWNSZXF1aXJlKHNyYzogU3RhdGljUmVxdWlyZSB8IFN0YXRpY0ltYWdlRGF0YSk6IHNyYyBpcyBTdGF0aWNSZXF1aXJlIHtcbiAgcmV0dXJuIChzcmMgYXMgU3RhdGljUmVxdWlyZSkuZGVmYXVsdCAhPT0gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YXRpY0ltYWdlRGF0YShzcmM6IFN0YXRpY1JlcXVpcmUgfCBTdGF0aWNJbWFnZURhdGEpOiBzcmMgaXMgU3RhdGljSW1hZ2VEYXRhIHtcbiAgcmV0dXJuIChzcmMgYXMgU3RhdGljSW1hZ2VEYXRhKS5zcmMgIT09IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdGF0aWNJbXBvcnQoc3JjOiBzdHJpbmcgfCBTdGF0aWNJbXBvcnQpOiBzcmMgaXMgU3RhdGljSW1wb3J0IHtcbiAgcmV0dXJuIHR5cGVvZiBzcmMgPT09ICdvYmplY3QnICYmIChpc1N0YXRpY1JlcXVpcmUoc3JjKSB8fCBpc1N0YXRpY0ltYWdlRGF0YShzcmMpKVxufVxuXG4vLyBzb3J0IHNtYWxsZXN0IHRvIGxhcmdlc3RcbmNvbnN0IGFsbFNpemVzID0gWy4uLmNvbmZpZ0RldmljZVNpemVzLCAuLi5jb25maWdJbWFnZVNpemVzXVxuY29uZmlnRGV2aWNlU2l6ZXMuc29ydCgoYSwgYikgPT4gYSAtIGIpXG5hbGxTaXplcy5zb3J0KChhLCBiKSA9PiBhIC0gYilcblxuZnVuY3Rpb24gZ2V0V2lkdGhzKFxuICB3aWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBsYXlvdXQ6IExheW91dFZhbHVlLFxuICBzaXplcyA9ICcnLFxuICBzY2FsZTogbnVtYmVyLFxuKTogeyB3aWR0aHM6IG51bWJlcltdOyBraW5kOiAndycgfCAneCcgfSB7XG4gIGlmICgoc2l6ZXMgJiYgbGF5b3V0ID09PSAnZmlsbCcpIHx8IGxheW91dCA9PT0gJ3Jlc3BvbnNpdmUnKSB7XG4gICAgLy8gRmluZCBhbGwgdGhlIFwidndcIiBwZXJjZW50IHNpemVzIHVzZWQgaW4gdGhlIHNpemVzIHByb3BcbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoUmUgPSAvKF58XFxzKSgxP1xcZD9cXGQpdncvZ1xuICAgIGNvbnN0IHBlcmNlbnRTaXplczogbnVtYmVyW10gPSBbXVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25kLWFzc2lnblxuICAgIGZvciAobGV0IG1hdGNoOiBzdHJpbmdbXSB8IG51bGw7IChtYXRjaCA9IHZpZXdwb3J0V2lkdGhSZS5leGVjKHNpemVzKSk7IG1hdGNoKSB7XG4gICAgICBwZXJjZW50U2l6ZXMucHVzaChwYXJzZUludChtYXRjaD8uWzJdLCAxMCkpXG4gICAgfVxuICAgIGlmIChwZXJjZW50U2l6ZXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzbWFsbGVzdFJhdGlvID0gTWF0aC5taW4oLi4ucGVyY2VudFNpemVzKSAqIDAuMDFcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGhzOiBhbGxTaXplcy5maWx0ZXIoKHMpID0+IHMgPj0gY29uZmlnRGV2aWNlU2l6ZXNbMF0gKiBzbWFsbGVzdFJhdGlvKSxcbiAgICAgICAga2luZDogJ3cnLFxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpbmQgYWxsIHRoZSBcInB4XCIgc2l6ZXMgdXNlZCBpbiB0aGUgc2l6ZXMgcHJvcFxuICAgIGNvbnN0IHB4V2lkdGhSZSA9IC8oXnxcXHMpKDE/XFxkKylweC9nXG4gICAgY29uc3QgcHhTaXplczogbnVtYmVyW10gPSBbXVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25kLWFzc2lnblxuICAgIGZvciAobGV0IG1hdGNoOiBzdHJpbmdbXSB8IG51bGw7IChtYXRjaCA9IHB4V2lkdGhSZS5leGVjKHNpemVzKSk7IG1hdGNoKSB7XG4gICAgICBweFNpemVzLnB1c2gocGFyc2VJbnQobWF0Y2g/LlsyXSwgMTApKVxuICAgIH1cblxuICAgIGlmIChweFNpemVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGhzOiBweFNpemVzLm1hcCgocHhTaXplKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2NhbGVkID0gYWxsU2l6ZXMuZmlsdGVyKChzKSA9PiBzICogc2NhbGUgPiBweFNpemUpPy5bMF1cbiAgICAgICAgICBjb25zdCBkcHIyID0gYWxsU2l6ZXMuZmlsdGVyKChzKSA9PiBzID4gcHhTaXplKT8uWzBdXG4gICAgICAgICAgcmV0dXJuIHNjYWxlID4gMSA/IE1hdGgubWF4KHNjYWxlZCwgZHByMikgOiBNYXRoLm1pbihzY2FsZWQsIGRwcjIpXG4gICAgICAgIH0pLFxuICAgICAgICBraW5kOiAndycsXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgd2lkdGhzOiBhbGxTaXplcywga2luZDogJ3cnIH1cbiAgfVxuICBpZiAodHlwZW9mIHdpZHRoICE9PSAnbnVtYmVyJyB8fCBsYXlvdXQgPT09ICdmaWxsJykge1xuICAgIHJldHVybiB7IHdpZHRoczogY29uZmlnRGV2aWNlU2l6ZXMsIGtpbmQ6ICd3JyB9XG4gIH1cblxuICBjb25zdCB3aWR0aHMgPSBbXG4gICAgLi4ubmV3IFNldChcbiAgICAgIC8vID4gVGhpcyBtZWFucyB0aGF0IG1vc3QgT0xFRCBzY3JlZW5zIHRoYXQgc2F5IHRoZXkgYXJlIDN4IHJlc29sdXRpb24sXG4gICAgICAvLyA+IGFyZSBhY3R1YWxseSAzeCBpbiB0aGUgZ3JlZW4gY29sb3IsIGJ1dCBvbmx5IDEuNXggaW4gdGhlIHJlZCBhbmRcbiAgICAgIC8vID4gYmx1ZSBjb2xvcnMuIFNob3dpbmcgYSAzeCByZXNvbHV0aW9uIGltYWdlIGluIHRoZSBhcHAgdnMgYSAyeFxuICAgICAgLy8gPiByZXNvbHV0aW9uIGltYWdlIHdpbGwgYmUgdmlzdWFsbHkgdGhlIHNhbWUsIHRob3VnaCB0aGUgM3ggaW1hZ2VcbiAgICAgIC8vID4gdGFrZXMgc2lnbmlmaWNhbnRseSBtb3JlIGRhdGEuIEV2ZW4gdHJ1ZSAzeCByZXNvbHV0aW9uIHNjcmVlbnMgYXJlXG4gICAgICAvLyA+IHdhc3RlZnVsIGFzIHRoZSBodW1hbiBleWUgY2Fubm90IHNlZSB0aGF0IGxldmVsIG9mIGRldGFpbCB3aXRob3V0XG4gICAgICAvLyA+IHNvbWV0aGluZyBsaWtlIGEgbWFnbmlmeWluZyBnbGFzcy5cbiAgICAgIC8vIGh0dHBzOi8vYmxvZy50d2l0dGVyLmNvbS9lbmdpbmVlcmluZy9lbl91cy90b3BpY3MvaW5mcmFzdHJ1Y3R1cmUvMjAxOS9jYXBwaW5nLWltYWdlLWZpZGVsaXR5LW9uLXVsdHJhLWhpZ2gtcmVzb2x1dGlvbi1kZXZpY2VzLmh0bWxcbiAgICAgIFt3aWR0aCwgd2lkdGggKiAyIC8qICwgd2lkdGggKiAzKi9dLm1hcChcbiAgICAgICAgKHcpID0+IGFsbFNpemVzLmZpbmQoKHApID0+IHAgPj0gdykgfHwgYWxsU2l6ZXNbYWxsU2l6ZXMubGVuZ3RoIC0gMV0sXG4gICAgICApLFxuICAgICksXG4gIF1cbiAgcmV0dXJuIHsgd2lkdGhzLCBraW5kOiAneCcgfVxufVxuXG50eXBlIEdlbkltZ0F0dHJzRGF0YSA9IHtcbiAgc3JjOiBzdHJpbmdcbiAgbGF5b3V0OiBMYXlvdXRWYWx1ZVxuICBsb2FkZXI6IEltYWdlTG9hZGVyXG4gIHdpZHRoPzogbnVtYmVyXG4gIHF1YWxpdHk/OiBudW1iZXJcbiAgc2l6ZXM/OiBzdHJpbmdcbiAgc2NhbGU6IG51bWJlclxufVxuXG50eXBlIEdlbkltZ0F0dHJzUmVzdWx0ID0ge1xuICBzcmNTZXQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBzaXplczogc3RyaW5nIHwgdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlU291cmNlQXR0cnMoe1xuICBzcmMsXG4gIGxheW91dCxcbiAgd2lkdGgsXG4gIHF1YWxpdHkgPSA0NCxcbiAgc2l6ZXMsXG4gIGxvYWRlcixcbiAgc2NhbGUsXG59OiBHZW5JbWdBdHRyc0RhdGEpOiBHZW5JbWdBdHRyc1Jlc3VsdCB7XG4gIGNvbnN0IHsgd2lkdGhzLCBraW5kIH0gPSBnZXRXaWR0aHMod2lkdGgsIGxheW91dCwgc2l6ZXMsIHNjYWxlKVxuXG4gIHJldHVybiB7XG4gICAgc2l6ZXM6ICFzaXplcyAmJiBraW5kID09PSAndycgPyBgNTB2d2AgOiBzaXplcyxcbiAgICBzcmNTZXQ6IHdpZHRoc1xuICAgICAgLm1hcChcbiAgICAgICAgKHcsIGkpID0+XG4gICAgICAgICAgYCR7bG9hZGVyKHsgc3JjLCBxdWFsaXR5LCB3aWR0aDogdyB9KX0gJHtcbiAgICAgICAgICAgIGtpbmQgPT09ICd3JyA/IE1hdGgucm91bmQodyAqIHNjYWxlKSA6IGkgKyAxXG4gICAgICAgICAgfSR7a2luZH1gLFxuICAgICAgKVxuICAgICAgLmpvaW4oJywgJyksXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEludCh4OiB1bmtub3duKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHR5cGVvZiB4ID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB4XG4gIH1cbiAgaWYgKHR5cGVvZiB4ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXJzZUludCh4LCAxMClcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRJbWFnZUxvYWRlcihsb2FkZXJQcm9wczogSW1hZ2VMb2FkZXJQcm9wcykge1xuICBjb25zdCBsb2FkID0gbG9hZGVycy5nZXQoY29uZmlnTG9hZGVyKVxuICBpZiAobG9hZCkge1xuICAgIHJldHVybiBsb2FkKHsgcm9vdDogY29uZmlnUGF0aCwgLi4ubG9hZGVyUHJvcHMgfSlcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogVW5rbm93biBcImxvYWRlclwiIGZvdW5kIGluIFwibmV4dC5jb25maWcuanNcIi4gRXhwZWN0ZWQ6ICR7VkFMSURfTE9BREVSUy5qb2luKFxuICAgICAgJywgJyxcbiAgICApfS4gUmVjZWl2ZWQ6ICR7Y29uZmlnTG9hZGVyfWAsXG4gIClcbn1cblxuLy8gU2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcS8zOTc3NzgzMy8yNjY1MzUgZm9yIHdoeSB3ZSB1c2UgdGhpcyByZWZcbi8vIGhhbmRsZXIgaW5zdGVhZCBvZiB0aGUgaW1nJ3Mgb25Mb2FkIGF0dHJpYnV0ZS5cbmZ1bmN0aW9uIHJlbW92ZVBsYWNlaG9sZGVyKGltZzogSFRNTEltYWdlRWxlbWVudCB8IG51bGwsIHBsYWNlaG9sZGVyOiBQbGFjZWhvbGRlclZhbHVlKSB7XG4gIGlmIChwbGFjZWhvbGRlciA9PT0gJ2JsdXInICYmIGltZykge1xuICAgIGNvbnN0IGhhbmRsZUxvYWQgPSAoKSA9PiB7XG4gICAgICBpZiAoIWltZy5zcmMuc3RhcnRzV2l0aCgnZGF0YTonKSkge1xuICAgICAgICBjb25zdCBwID0gJ2RlY29kZScgaW4gaW1nID8gaW1nLmRlY29kZSgpIDogUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgICAgICBwLmNhdGNoKCgpID0+IHt9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICBpbWcuc3R5bGUuZmlsdGVyID0gJ25vbmUnXG4gICAgICAgICAgaW1nLnN0eWxlLmJhY2tncm91bmRTaXplID0gJ25vbmUnXG4gICAgICAgICAgaW1nLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICdub25lJ1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaW1nLmNvbXBsZXRlKSB7XG4gICAgICAvLyBJZiB0aGUgcmVhbCBpbWFnZSBmYWlscyB0byBsb2FkLCB0aGlzIHdpbGwgc3RpbGwgcmVtb3ZlIHRoZSBwbGFjZWhvbGRlci5cbiAgICAgIC8vIFRoaXMgaXMgdGhlIGRlc2lyZWQgYmVoYXZpb3IgZm9yIG5vdywgYW5kIHdpbGwgYmUgcmV2aXNpdGVkIHdoZW4gZXJyb3JcbiAgICAgIC8vIGhhbmRsaW5nIGlzIHdvcmtlZCBvbiBmb3IgdGhlIGltYWdlIGNvbXBvbmVudCBpdHNlbGYuXG4gICAgICBoYW5kbGVMb2FkKClcbiAgICB9IGVsc2Uge1xuICAgICAgaW1nLm9ubG9hZCA9IGhhbmRsZUxvYWRcbiAgICB9XG4gIH1cbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIGFuIGltYWdlIGlzIGN1cnJlbnRseSBpbiB0aGUgdmlld3BvcnQgKi9cbmZ1bmN0aW9uIGlzSW5WaWV3cG9ydChlbGVtOiBIVE1MSW1hZ2VFbGVtZW50KTogYm9vbGVhbiB7XG4gIGNvbnN0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0IH0gPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gIHJldHVybiBib3R0b20gPj0gMCAmJiByaWdodCA+PSAwICYmIHRvcCA8PSB3aW5kb3cuaW5uZXJIZWlnaHQgJiYgbGVmdCA8PSB3aW5kb3cuaW5uZXJXaWR0aFxufVxuXG50eXBlIFNpemVzU3RyaW5nID0gYCR7bnVtYmVyfXZ3YCB8IGAke251bWJlcn1weGBcbnR5cGUgU2l6ZXNSZWNvcmQgPSBSZWNvcmQ8bnVtYmVyLCBTaXplc1N0cmluZz5cbnR5cGUgU2l6ZXMgPSBTaXplc1N0cmluZyB8IFNpemVzUmVjb3JkIHwgdW5kZWZpbmVkXG5cbmZ1bmN0aW9uIGlzU2l6ZXNSZWNvcmQoc2l6ZXM/OiBTaXplcyk6IHNpemVzIGlzIFNpemVzUmVjb3JkIHtcbiAgcmV0dXJuIHR5cGVvZiBzaXplcyA9PT0gJ29iamVjdCdcbn1cblxuZnVuY3Rpb24gc2l6ZXNFbnRyaWVzKHNpemVzOiBTaXplcyk6IChyZWFkb25seSBbbnVtYmVyLCBTaXplc1N0cmluZyB8IHVuZGVmaW5lZF0pW10ge1xuICBpZiAoaXNTaXplc1JlY29yZChzaXplcykpIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoc2l6ZXMpXG4gICAgICAubWFwKChbYnJlYWtwb2ludCwgc2l6ZV0pID0+IFtOdW1iZXIoYnJlYWtwb2ludCksIHNpemVdIGFzIGNvbnN0KVxuICAgICAgLnNvcnQoKFtzaXplQV0sIFtzaXplQl0pID0+IHNpemVCIC0gc2l6ZUEpXG4gIH1cbiAgcmV0dXJuIFtbMCwgc2l6ZXNdIGFzIGNvbnN0XVxufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVNpemVzU3RyaW5nKHNpemVzPzogU2l6ZXMpIHtcbiAgcmV0dXJuIHNpemVzRW50cmllcyhzaXplcylcbiAgICAubWFwKChbYnJlYWtwb2ludCwgc2l6ZV0pID0+IHtcbiAgICAgIGlmIChicmVha3BvaW50ID09PSAwKSByZXR1cm4gc2l6ZVxuICAgICAgcmV0dXJuIGAobWluLXdpZHRoOiAke2JyZWFrcG9pbnR9cHgpICR7c2l6ZX1gXG4gICAgfSlcbiAgICAuam9pbignLCAnKVxufVxuXG4vKiogU2luY2Ugd2UncmUgaGFuZGxpbmcgc3R1ZmYgb3Vyc2VsdmVzIHdlIG9taXQgc29tZSBzdHVmZiAqL1xudHlwZSBJbnRyaXNpbmNJbWFnZSA9IE9taXQ8XG4gIEpTWC5JbnRyaW5zaWNFbGVtZW50c1snaW1nJ10sXG4gICdzcmMnIHwgJ3NyY1NldCcgfCAncmVmJyB8ICd3aWR0aCcgfCAnaGVpZ2h0JyB8ICdsb2FkaW5nJyB8ICdzaXplcycgfCAnd2lkdGgnIHwgJ2hlaWdodCdcbj4gJiB7IGxvYWRpbmc/OiBMb2FkaW5nVmFsdWUgfVxuXG5leHBvcnQgdHlwZSBCYXNlSW1hZ2VQcm9wcyA9IEludHJpc2luY0ltYWdlICYge1xuICBsb2FkZXI/OiBJbWFnZUxvYWRlclxuICBxdWFsaXR5PzogbnVtYmVyIHwgc3RyaW5nXG4gIHVub3B0aW1pemVkPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBQb3NzaWJsZSB2YWx1ZXM6XG4gICAqXG4gICAqIC0gYGZpeGVkYDogdGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBub3QgY2hhbmdlIGFzIHRoZSB2aWV3cG9ydCBjaGFuZ2VzIChubyByZXNwb25zaXZlbmVzcylcbiAgICogICBzaW1pbGFyIHRvIHRoZSBuYXRpdmUgaW1nIGVsZW1lbnQuXG4gICAqIC0gYGludHJpbnNpY2A6IHRoZSBpbWFnZSB3aWxsIHNjYWxlIHRoZSBkaW1lbnNpb25zIGRvd24gZm9yIHNtYWxsZXIgdmlld3BvcnRzIGJ1dCBtYWludGFpbiB0aGVcbiAgICogICBvcmlnaW5hbCBkaW1lbnNpb25zICh0aGUgd2lkdGggYW5kIGhlaWdodCBnaXZlbikgZm9yIGxhcmdlciB2aWV3cG9ydHMuXG4gICAqIC0gYHJlc3BvbnNpdmVgOiB0aGUgaW1hZ2Ugd2lsbCBzY2FsZSB0aGUgZGltZW5zaW9ucyBkb3duIGZvciBzbWFsbGVyIHZpZXdwb3J0cyBhbmQgc2NhbGUgdXAgZm9yXG4gICAqICAgbGFyZ2VyIHZpZXdwb3J0cy5cbiAgICovXG4gIGxheW91dD86IExheW91dFZhbHVlXG5cbiAgLyoqIFNpemUgdGhlIGltYWdlIGlzIHJlbmRlcmVkIG9uIG1vYmlsZSAqL1xuICBzaXplcz86IFNpemVzU3RyaW5nIHwgU2l6ZXNSZWNvcmRcbn1cblxuLyoqXG4gKiBXaGVuIGBmaXhlZGAsIHRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgbm90IGNoYW5nZSBhcyB0aGUgdmlld3BvcnQgY2hhbmdlcyAobm8gcmVzcG9uc2l2ZW5lc3MpXG4gKiBzaW1pbGFyIHRvIHRoZSBuYXRpdmUgaW1nIGVsZW1lbnQuXG4gKlxuICogYGBgdHN4XG4gKiA8aW1nIHdpZHRoPXt3aWR0aH0gaGVpZ2h0PXtoZWlnaHR9IC8+XG4gKiBgYGBcbiAqXG4gKiBVc2UgY2FzZTogV2hlbiB5b3Ugd2FudCB0byByZW5kZXIgdGhlIGltYWdlIGF0IHRoZSBnaXZlbiB3aWR0aC9oZWlnaHQgYW5kIG5vdCBjaGFuZ2UgYmFzZWQgb24gYnJvd3NlciBzaXplLlxuICovXG50eXBlIExheW91dFR5cGVOYXRpdmUgPSB7XG4gIGxheW91dD86ICdmaXhlZCdcbiAgLyoqXG4gICAqIFRoZSB3aWR0aCBhbmQgdGhlIGhlaWdodCB2YWx1ZXMgYXJlIHRoZSB2YWx1ZXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIGFzcGVjdCByYXRpbyBvbSB0aGUgaW1hZ2VcbiAgICogYW5kIHJlc2VydmUgc3BhY2UgaW4gdGhlIGJyb3dzZXIuXG4gICAqXG4gICAqIFdpdGggbGF5b3V0PWZpeGVkIGFuZCBubyBzdHlsaW5nIHRoZSBpbWFnZSBpcyByZW5kZXJlZCBhdCB0aGUgd2lkdGggYW5kIGhlaWdodCBnaXZlbi5cbiAgICovXG4gIHdpZHRoOiBudW1iZXJcbiAgaGVpZ2h0OiBudW1iZXJcbn1cblxuLyoqXG4gKiBXaGVuIGBpbnRyaW5zaWNgLCB0aGUgaW1hZ2Ugd2lsbCBzY2FsZSB0aGUgZGltZW5zaW9ucyBkb3duIGZvciBzbWFsbGVyIHZpZXdwb3J0cyBidXQgbWFpbnRhaW4gdGhlXG4gKiBvcmlnaW5hbCBkaW1lbnNpb25zICh0aGUgd2lkdGggYW5kIGhlaWdodCBnaXZlbikgZm9yIGxhcmdlciB2aWV3cG9ydHMuXG4gKlxuICogYGBgdHN4XG4gKiA8aW1nIHN0eWxlPXt7IHdpZHRoOiAnMTAwJScsIGhlaWdodDogJ2F1dG8nIG1heFdpZHRoOiBgJHt3aWR0aH1weGAgfX1cbiAqIGBgYFxuICpcbiAqIFVzZSBjYXNlOiBXaGVuIHlvdSB3YW50IHRvIHJlbmRlciBhbiBpbWFnZSBidXQgZG9uJ3Qgc2NhbGUgaXQgdXAuXG4gKi9cbnR5cGUgTGF5b3V0VHlwZUludHJpbnNpYyA9IHtcbiAgbGF5b3V0PzogJ2ludHJpbnNpYydcblxuICB3aWR0aDogbnVtYmVyXG4gIGhlaWdodDogbnVtYmVyXG5cbiAgc3R5bGU/OiBPbWl0PEltZ0VsZW1lbnRTdHlsZSwgJ3dpZHRoJyB8ICdoZWlnaHQnIHwgJ21heFdpZHRoJz5cbn1cblxuLyoqXG4gKiBXaGVuIGByZXNwb25zaXZlYCwgdGhlIGltYWdlIHdpbGwgc2NhbGUgdGhlIGRpbWVuc2lvbnMgZG93biBmb3Igc21hbGxlciB2aWV3cG9ydHMgYW5kIHNjYWxlIHVwXG4gKiBmb3IgbGFyZ2VyIHZpZXdwb3J0cy5cbiAqXG4gKiBgYGB0c3hcbiAqIDxpbWcgc3R5bGU9e3sgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnYXV0bycgbWF4V2lkdGg6ICR7d2lkdGh9IH19XG4gKiBgYGBcbiAqXG4gKiBVc2UgY2FzZTogV2hlbiB5b3Ugd2FudCB0aGUgaW1hZ2UgdG8gZmlsbCBpdCdzIHBhcmVudCBjb250YWluZXIgaW4gd2lkdGhcbiAqL1xudHlwZSBMYXlvdXRUeXBlUmVzcG9uc2l2ZSA9IHtcbiAgbGF5b3V0PzogJ3Jlc3BvbnNpdmUnXG5cbiAgd2lkdGg6IG51bWJlclxuICBoZWlnaHQ6IG51bWJlclxuXG4gIHN0eWxlPzogT21pdDxJbWdFbGVtZW50U3R5bGUsICd3aWR0aCcgfCAnaGVpZ2h0Jz5cbn1cblxuLyoqXG4gKiBXaGVuIGBmaWxsYCwgdGhlIGltYWdlIHdpbGwgc3RyZXRjaCBib3RoIHdpZHRoIGFuZCBoZWlnaHQgdG8gdGhlIGRpbWVuc2lvbnMgb2YgdGhlIHBhcmVudFxuICogZWxlbWVudCwgcGFpcmVkIHdpdGggdGhlIG9iamVjdEZpdCBwcm9wZXJ0eS5cbiAqXG4gKiBTaW5jZSB0aGUgd2lkdGgvaGVpZ2h0IGlzbid0IHJlcXVpcmVkIHRvIHJlbmRlciB0aGUgcGFnZSB3ZSBjYW4gb21pdCBpdC5cbiAqXG4gKiBgYGB0c3hcbiAqIDxpbWcgd2lkdGg9e3dpZHRofSBoZWlnaHQ9e2hlaWdodH0gc3R5bGU9e3sgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfX1cbiAqIGBgYFxuICpcbiAqIFVzZSBjYXNlOiBXaGVuIHlvdSBoYXZlIGEgcHJlZGVmaW5lZCBhcmVhIHNldCB0byByZW5kZXIgYW4gaW1hZ2VcbiAqL1xudHlwZSBMYXlvdXRUeXBlRmlsbCA9IHtcbiAgbGF5b3V0PzogJ2ZpbGwnXG5cbiAgd2lkdGg/OiBuZXZlclxuICBoZWlnaHQ/OiBuZXZlclxuXG4gIC8vIG9iamVjdEZpdDogSW1nRWxlbWVudFN0eWxlWydvYmplY3RGaXQnXVxuICBzdHlsZT86IE9taXQ8SW1nRWxlbWVudFN0eWxlLCAnd2lkdGgnIHwgJ2hlaWdodCc+XG59XG5cbmV4cG9ydCB0eXBlIFN0cmluZ0ltYWdlUHJvcHMgPSB7XG4gIHNyYzogc3RyaW5nXG59ICYgKExheW91dFR5cGVGaWxsIHwgTGF5b3V0VHlwZVJlc3BvbnNpdmUgfCBMYXlvdXRUeXBlTmF0aXZlIHwgTGF5b3V0VHlwZUludHJpbnNpYykgJlxuICAoXG4gICAgfCB7IHBsYWNlaG9sZGVyPzogRXhjbHVkZTxQbGFjZWhvbGRlclZhbHVlLCAnYmx1cic+OyBibHVyRGF0YVVSTD86IG5ldmVyIH1cbiAgICB8IHsgcGxhY2Vob2xkZXI6ICdibHVyJzsgYmx1ckRhdGFVUkw6IHN0cmluZyB9XG4gIClcblxuZXhwb3J0IHR5cGUgT2JqZWN0SW1hZ2VQcm9wcyA9IHtcbiAgc3JjOiBTdGF0aWNJbXBvcnRcbiAgd2lkdGg/OiBudW1iZXJcbiAgaGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nXG4gIGxheW91dD86IExheW91dFZhbHVlXG4gIHBsYWNlaG9sZGVyPzogUGxhY2Vob2xkZXJWYWx1ZVxuICBibHVyRGF0YVVSTD86IG5ldmVyXG59XG5cbmV4cG9ydCB0eXBlIEltYWdlUHJvcHMgPSBCYXNlSW1hZ2VQcm9wcyAmIChTdHJpbmdJbWFnZVByb3BzIHwgT2JqZWN0SW1hZ2VQcm9wcylcblxuZXhwb3J0IHR5cGUgU3RyaW5nSW1hZ2UgPSBCYXNlSW1hZ2VQcm9wcyAmIFN0cmluZ0ltYWdlUHJvcHNcbmV4cG9ydCB0eXBlIE9iamVjdEltYWdlID0gQmFzZUltYWdlUHJvcHMgJiBPYmplY3RJbWFnZVByb3BzXG5cbmNvbnN0IEltYWdlID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MSW1hZ2VFbGVtZW50LCBJbWFnZVByb3BzPihcbiAgKFxuICAgIHtcbiAgICAgIHNyYyxcbiAgICAgIHNpemVzOiBzaXplc0luY29tbWluZyxcbiAgICAgIHVub3B0aW1pemVkID0gZmFsc2UsXG4gICAgICBsb2FkaW5nLFxuICAgICAgbGF5b3V0ID0gJ3Jlc3BvbnNpdmUnLFxuICAgICAgcXVhbGl0eSxcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgICAgc3R5bGUsXG4gICAgICBsb2FkZXIgPSBkZWZhdWx0SW1hZ2VMb2FkZXIsXG4gICAgICBwbGFjZWhvbGRlciA9ICdlbXB0eScsXG4gICAgICBibHVyRGF0YVVSTCxcbiAgICAgIC4uLmltZ1Byb3BzXG4gICAgfSxcbiAgICBmb3J3YXJkZWRSZWYsXG4gICkgPT4ge1xuICAgIGNvbnN0IHJlZiA9IHVzZUZvcndhcmRlZFJlZihmb3J3YXJkZWRSZWYpXG5cbiAgICBjb25zdCBzaXplc09yaWcgPVxuICAgICAgbGF5b3V0ID09PSAnZml4ZWQnICYmIHdpZHRoICYmICFzaXplc0luY29tbWluZ1xuICAgICAgICA/IChgJHt3aWR0aH1weGAgYXMgU2l6ZXNTdHJpbmcpXG4gICAgICAgIDogc2l6ZXNJbmNvbW1pbmdcblxuICAgIGNvbnN0IHNpemVzID0gZ2VuZXJhdGVTaXplc1N0cmluZyhzaXplc09yaWcpID8/ICc1MHZ3J1xuXG4gICAgLy8gSWYgbm8gcmVzcG9uc2l2ZSBzaXplcyBhcmUgZ2l2ZW4sIHdlJ3JlIGRlZmF1bHRpbmcgdG8gNTB2dyBvbiBtb2JpbGVcbiAgICAvLyBjb25zdCBbc2l6ZXMsIHNldFNpemVzXSA9IHVzZVN0YXRlKHRvU2l6ZXNTdHJpbmcoc2l6ZXNPcmlnKSA/PyBgNTB2d2ApXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHJldHVybiAoKSA9PiB7fVxuICAgICAgaWYgKCFyZWYuY3VycmVudCkgcmV0dXJuICgpID0+IHt9XG5cbiAgICAgIGZ1bmN0aW9uIHJlcG9ydFNpemVzKGltZzogSFRNTEltYWdlRWxlbWVudCkge1xuICAgICAgICBsZXQgcmF0aW86IG51bWJlclxuXG4gICAgICAgIGxldCBtc2cgPSAnJ1xuICAgICAgICBjb25zdCBbYnJlYWtwb2ludCwgc2l6ZV0gPSBzaXplc0VudHJpZXMoc2l6ZXNPcmlnKS5maW5kKChbc10pID0+XG4gICAgICAgICAgcyA9PT0gMCA/IHRydWUgOiB3aW5kb3cubWF0Y2hNZWRpYShgKG1pbi13aWR0aDogJHtzfSlgKSxcbiAgICAgICAgKSA/PyBbMCwgJzEwMHZ3J11cbiAgICAgICAgaWYgKHNpemUpIHtcbiAgICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdzdHlsZScsIGB3aWR0aDogJHtzaXplfWApXG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbClcbiAgICAgICAgICBjb25zdCBtZWFzdXJlZFdpZHRoID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGhcbiAgICAgICAgICAvLyBlbC5yZW1vdmUoKVxuICAgICAgICAgIHJhdGlvID0gbWVhc3VyZWRXaWR0aCAqKiAyIC8gaW1nLm5hdHVyYWxXaWR0aCAqKiAyXG4gICAgICAgICAgbXNnICs9IGBJbWFnZSBoYXMgXCJzaXplc1wiIHByb3BlcnR5IHNldCwgYnV0IHNpemUgJ21pbi13aWR0aCgke2JyZWFrcG9pbnR9cHgpICR7c2l6ZX0nIGlzIGluY29ycmVjdC5gXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbXNnICs9IGBJbWFnZSBoYXMgbm8gXCJzaXplc1wiIHByb3BlcnR5IHNldC5gXG4gICAgICAgICAgcmF0aW8gPSAod2luZG93LmlubmVyV2lkdGggKiAwLjUpICoqIDIgLyBpbWcubmF0dXJhbFdpZHRoICoqIDJcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvdW5kID0gKG5yOiBudW1iZXIpID0+IE1hdGgucm91bmQobnIgKiAxMDApIC8gMTAwXG4gICAgICAgIGlmIChyYXRpbyA+IDEuMikge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06ICR7bXNnfSBDdXJyZW50bHkgZG93bmxvYWRpbmcgYW4gaW1hZ2UgdGhhdCBoYXMgJHtyb3VuZChcbiAgICAgICAgICAgICAgcmF0aW8sXG4gICAgICAgICAgICApfXggdG9vIG1hbnkgcGl4ZWxzYCxcbiAgICAgICAgICAgIGltZyxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSBpZiAocmF0aW8gPCAwLjgpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiAke21zZ30gQ3VycmVudGx5IGRvd25sb2FkaW5nIGFuIGltYWdlIHRoYXQgaGFzICR7cm91bmQoXG4gICAgICAgICAgICAgIDEgLyByYXRpbyxcbiAgICAgICAgICAgICl9eCB0b28gZmV3IHBpeGVsc2AsXG4gICAgICAgICAgICBpbWcsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFdhcm4gdGhlIHVzZXIgd2hlbiBoZSBpc24ndCBwcm92aWRpbmcgc2l6ZXMgYW5kIGhvdyB0byBwcm9jZWVkXG4gICAgICBjb25zdCBybyA9IG5ldyBSZXNpemVPYnNlcnZlcigoW2VudHJ5XSkgPT4ge1xuICAgICAgICBjb25zdCBpbWcgPSBlbnRyeS50YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudFxuICAgICAgICBpZiAoaW1nLm5hdHVyYWxXaWR0aCkgcmVwb3J0U2l6ZXMoaW1nKVxuXG4gICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiByZXBvcnRTaXplcyhpbWcpXG4gICAgICB9KVxuICAgICAgcm8ub2JzZXJ2ZShyZWYuY3VycmVudClcblxuICAgICAgcmV0dXJuICgpID0+IHJvLmRpc2Nvbm5lY3QoKVxuICAgIH0sIFtsYXlvdXQsIHJlZiwgc2l6ZXNPcmlnLCBzcmMsIHdpZHRoXSlcblxuICAgIGxldCBzdGF0aWNTcmMgPSAnJ1xuICAgIGlmIChpc1N0YXRpY0ltcG9ydChzcmMpKSB7XG4gICAgICBjb25zdCBzdGF0aWNJbWFnZURhdGEgPSBpc1N0YXRpY1JlcXVpcmUoc3JjKSA/IHNyYy5kZWZhdWx0IDogc3JjXG4gICAgICBpZiAoIXN0YXRpY0ltYWdlRGF0YS5zcmMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEFuIG9iamVjdCBzaG91bGQgb25seSBiZSBwYXNzZWQgdG8gdGhlIGltYWdlIGNvbXBvbmVudCBzcmMgcGFyYW1ldGVyIGlmIGl0IGNvbWVzIGZyb20gYSBzdGF0aWMgaW1hZ2UgaW1wb3J0LiBJdCBtdXN0IGluY2x1ZGUgc3JjLiBSZWNlaXZlZCAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgc3RhdGljSW1hZ2VEYXRhLFxuICAgICAgICAgICl9YCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgYmx1ckRhdGFVUkwgPSBibHVyRGF0YVVSTCB8fCBzdGF0aWNJbWFnZURhdGEuYmx1ckRhdGFVUkxcbiAgICAgIHN0YXRpY1NyYyA9IHN0YXRpY0ltYWdlRGF0YS5zcmNcbiAgICAgIGlmICghbGF5b3V0IHx8IGxheW91dCAhPT0gJ2ZpbGwnKSB7XG4gICAgICAgIGhlaWdodCA9IGhlaWdodCB8fCBzdGF0aWNJbWFnZURhdGEuaGVpZ2h0XG4gICAgICAgIHdpZHRoID0gd2lkdGggfHwgc3RhdGljSW1hZ2VEYXRhLndpZHRoXG4gICAgICAgIGlmICghc3RhdGljSW1hZ2VEYXRhLmhlaWdodCB8fCAhc3RhdGljSW1hZ2VEYXRhLndpZHRoKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogQW4gb2JqZWN0IHNob3VsZCBvbmx5IGJlIHBhc3NlZCB0byB0aGUgaW1hZ2UgY29tcG9uZW50IHNyYyBwYXJhbWV0ZXIgaWYgaXQgY29tZXMgZnJvbSBhIHN0YXRpYyBpbWFnZSBpbXBvcnQuIEl0IG11c3QgaW5jbHVkZSBoZWlnaHQgYW5kIHdpZHRoLiBSZWNlaXZlZCAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICBzdGF0aWNJbWFnZURhdGEsXG4gICAgICAgICAgICApfWAsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHNyYyA9IHR5cGVvZiBzcmMgPT09ICdzdHJpbmcnID8gc3JjIDogc3RhdGljU3JjXG5cbiAgICBjb25zdCB3aWR0aEludCA9IGdldEludCh3aWR0aClcbiAgICBjb25zdCBoZWlnaHRJbnQgPSBnZXRJbnQoaGVpZ2h0KVxuICAgIGNvbnN0IHF1YWxpdHlJbnQgPSBnZXRJbnQocXVhbGl0eSlcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoIXNyYykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogSW1hZ2UgaXMgbWlzc2luZyByZXF1aXJlZCBcInNyY1wiIHByb3BlcnR5LiBNYWtlIHN1cmUgeW91IHBhc3MgXCJzcmNcIiBpbiBwcm9wcyB0byB0aGUgXFxgQHJlYWNoZGlnaXRhbC9pbWFnZVxcYCBjb21wb25lbnQuIFJlY2VpdmVkOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgeyB3aWR0aCwgaGVpZ2h0LCBxdWFsaXR5IH0sXG4gICAgICAgICAgKX1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBpZiAoIVZBTElEX0xBWU9VVF9WQUxVRVMuaW5jbHVkZXMobGF5b3V0KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogSW1hZ2Ugd2l0aCBzcmMgXCIke3NyY31cIiBoYXMgaW52YWxpZCBcImxheW91dFwiIHByb3BlcnR5LiBQcm92aWRlZCBcIiR7bGF5b3V0fVwiIHNob3VsZCBiZSBvbmUgb2YgJHtWQUxJRF9MQVlPVVRfVkFMVUVTLm1hcChcbiAgICAgICAgICAgIFN0cmluZyxcbiAgICAgICAgICApLmpvaW4oJywnKX0uYCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICAodHlwZW9mIHdpZHRoSW50ICE9PSAndW5kZWZpbmVkJyAmJiBOdW1iZXIuaXNOYU4od2lkdGhJbnQpKSB8fFxuICAgICAgICAodHlwZW9mIGhlaWdodEludCAhPT0gJ3VuZGVmaW5lZCcgJiYgTnVtYmVyLmlzTmFOKGhlaWdodEludCkpXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEltYWdlIHdpdGggc3JjIFwiJHtzcmN9XCIgaGFzIGludmFsaWQgXCJ3aWR0aFwiIG9yIFwiaGVpZ2h0XCIgcHJvcGVydHkuIFRoZXNlIHNob3VsZCBiZSBudW1lcmljIHZhbHVlcy5gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBpZiAoIVZBTElEX0xPQURJTkdfVkFMVUVTLmluY2x1ZGVzKGxvYWRpbmcpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBJbWFnZSB3aXRoIHNyYyBcIiR7c3JjfVwiIGhhcyBpbnZhbGlkIFwibG9hZGluZ1wiIHByb3BlcnR5LiBQcm92aWRlZCBcIiR7bG9hZGluZ31cIiBzaG91bGQgYmUgb25lIG9mICR7VkFMSURfTE9BRElOR19WQUxVRVMubWFwKFxuICAgICAgICAgICAgU3RyaW5nLFxuICAgICAgICAgICkuam9pbignLCcpfS5gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBpZiAocGxhY2Vob2xkZXIgPT09ICdibHVyJykge1xuICAgICAgICBpZiAobGF5b3V0ICE9PSAnZmlsbCcgJiYgKHdpZHRoSW50IHx8IDApICogKGhlaWdodEludCB8fCAwKSA8IDE2MDApIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBJbWFnZSB3aXRoIHNyYyBcIiR7c3JjfVwiIGlzIHNtYWxsZXIgdGhhbiA0MHg0MC4gQ29uc2lkZXIgcmVtb3ZpbmcgdGhlIFwicGxhY2Vob2xkZXI9J2JsdXInXCIgcHJvcGVydHkgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS5gLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWJsdXJEYXRhVVJMKSB7XG4gICAgICAgICAgY29uc3QgVkFMSURfQkxVUl9FWFQgPSBbJ2pwZWcnLCAncG5nJywgJ3dlYnAnXSAvLyBzaG91bGQgbWF0Y2ggbmV4dC1pbWFnZS1sb2FkZXJcblxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEltYWdlIHdpdGggc3JjIFwiJHtzcmN9XCIgaGFzIFwicGxhY2Vob2xkZXI9J2JsdXInXCIgcHJvcGVydHkgYnV0IGlzIG1pc3NpbmcgdGhlIFwiYmx1ckRhdGFVUkxcIiBwcm9wZXJ0eS5cbiAgICAgICAgICBQb3NzaWJsZSBzb2x1dGlvbnM6XG4gICAgICAgICAgICAtIEFkZCBhIFwiYmx1ckRhdGFVUkxcIiBwcm9wZXJ0eSwgdGhlIGNvbnRlbnRzIHNob3VsZCBiZSBhIHNtYWxsIERhdGEgVVJMIHRvIHJlcHJlc2VudCB0aGUgaW1hZ2VcbiAgICAgICAgICAgIC0gQ2hhbmdlIHRoZSBcInNyY1wiIHByb3BlcnR5IHRvIGEgc3RhdGljIGltcG9ydCB3aXRoIG9uZSBvZiB0aGUgc3VwcG9ydGVkIGZpbGUgdHlwZXM6ICR7VkFMSURfQkxVUl9FWFQuam9pbihcbiAgICAgICAgICAgICAgJywnLFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIC0gUmVtb3ZlIHRoZSBcInBsYWNlaG9sZGVyXCIgcHJvcGVydHksIGVmZmVjdGl2ZWx5IG5vIGJsdXIgZWZmZWN0XG4gICAgICAgICAgUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9wbGFjZWhvbGRlci1ibHVyLWRhdGEtdXJsYCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHdpZHRoSW50ID09PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgaGVpZ2h0SW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKGxheW91dCA9PT0gJ2ZpbGwnKSB7XG4gICAgICAgIC8vIGhhbmRsZSBmaWxsXG4gICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgLy8gPEltYWdlIHNyYz1cImkucG5nXCIgLz5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEltYWdlIHdpdGggc3JjIFwiJHtzcmN9XCIgbXVzdCB1c2UgXCJ3aWR0aFwiIGFuZCBcImhlaWdodFwiIHByb3BlcnRpZXMgb3IgXCJsYXlvdXQ9J2ZpbGwnXCIgcHJvcGVydHkuYCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cblxuICAgIGxvYWRpbmcgPz89ICdsYXp5J1xuICAgIGlmIChzcmMgJiYgc3JjLnN0YXJ0c1dpdGgoJ2RhdGE6JykpIHtcbiAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQmFzaWNzX29mX0hUVFAvRGF0YV9VUklzXG4gICAgICB1bm9wdGltaXplZCA9IHRydWVcbiAgICB9XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzM3ggPSBnZW5lcmF0ZVNvdXJjZUF0dHJzKHtcbiAgICAgIHNyYyxcbiAgICAgIGxheW91dDogbGF5b3V0IGFzIExheW91dFZhbHVlLFxuICAgICAgbG9hZGVyLFxuICAgICAgcXVhbGl0eTogcXVhbGl0eUludCxcbiAgICAgIHNpemVzLFxuICAgICAgd2lkdGg6IHdpZHRoSW50LFxuICAgICAgc2NhbGU6IDEuNSxcbiAgICB9KVxuXG4gICAgY29uc3QgYXR0cmlidXRlczJ4ID0gZ2VuZXJhdGVTb3VyY2VBdHRycyh7XG4gICAgICBzcmMsXG4gICAgICBsYXlvdXQ6IGxheW91dCBhcyBMYXlvdXRWYWx1ZSxcbiAgICAgIGxvYWRlcixcbiAgICAgIHF1YWxpdHk6IHF1YWxpdHlJbnQsXG4gICAgICBzaXplcyxcbiAgICAgIHdpZHRoOiB3aWR0aEludCxcbiAgICAgIHNjYWxlOiAxLFxuICAgIH0pXG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzMXggPSBnZW5lcmF0ZVNvdXJjZUF0dHJzKHtcbiAgICAgIHNyYyxcbiAgICAgIGxheW91dDogbGF5b3V0IGFzIExheW91dFZhbHVlLFxuICAgICAgbG9hZGVyLFxuICAgICAgcXVhbGl0eTogcXVhbGl0eUludCxcbiAgICAgIHNpemVzLFxuICAgICAgd2lkdGg6IHdpZHRoSW50LFxuICAgICAgc2NhbGU6IDAuNSxcbiAgICB9KVxuXG4gICAgaWYgKGxheW91dCAhPT0gJ2ZpeGVkJyAmJiAhc3R5bGUpIHN0eWxlID0ge31cbiAgICBpZiAobGF5b3V0ID09PSAncmVzcG9uc2l2ZScpIHN0eWxlID0geyAuLi5zdHlsZSwgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnYXV0bycgfVxuICAgIGlmIChsYXlvdXQgPT09ICdpbnRyaW5zaWMnKSBzdHlsZSA9IHsgLi4uc3R5bGUsIHdpZHRoOiAnMTAwJScsIGhlaWdodDogJ2F1dG8nLCBtYXhXaWR0aDogd2lkdGggfVxuICAgIGlmIChsYXlvdXQgPT09ICdmaWxsJykgc3R5bGUgPSB7IC4uLnN0eWxlLCB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJyB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge3Vub3B0aW1pemVkID8gKFxuICAgICAgICAgIDxpbWcgcmVmPXtyZWZ9IHsuLi5pbWdQcm9wc30gc3JjPXtzcmN9IHdpZHRoPXt3aWR0aH0gaGVpZ2h0PXtoZWlnaHR9IHN0eWxlPXtzdHlsZX0gLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8cGljdHVyZT5cbiAgICAgICAgICAgIDxzb3VyY2UgbWVkaWE9Jygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIuNSknIHsuLi5hdHRyaWJ1dGVzM3h9IC8+XG4gICAgICAgICAgICA8c291cmNlIG1lZGlhPScoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpJyB7Li4uYXR0cmlidXRlczJ4fSAvPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICAgICAgey4uLmltZ1Byb3BzfVxuICAgICAgICAgICAgICB7Li4uYXR0cmlidXRlczF4fVxuICAgICAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgICAgICAgIGhlaWdodD17aGVpZ2h0fVxuICAgICAgICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvcGljdHVyZT5cbiAgICAgICAgKX1cbiAgICAgICAge2xvYWRpbmcgPT09ICdlYWdlcicgJiYgKFxuICAgICAgICAgIDxIZWFkPlxuICAgICAgICAgICAgPGxpbmtcbiAgICAgICAgICAgICAga2V5PXtgX19uaW1nLTJ4LSR7YXR0cmlidXRlczF4LnNyY1NldH0ke2F0dHJpYnV0ZXMxeC5zaXplc31gfVxuICAgICAgICAgICAgICByZWw9J3ByZWxvYWQnXG4gICAgICAgICAgICAgIGFzPSdpbWFnZSdcbiAgICAgICAgICAgICAgbWVkaWE9Jygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIuNSknXG4gICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgaW1hZ2VzcmNzZXQgaXMgbm90IHlldCBpbiB0aGUgbGluayBlbGVtZW50IHR5cGVcbiAgICAgICAgICAgICAgaW1hZ2VzcmNzZXQ9e2F0dHJpYnV0ZXMxeC5zcmNTZXR9XG4gICAgICAgICAgICAgIGltYWdlc2l6ZXM9e3NpemVzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0hlYWQ+XG4gICAgICAgICl9XG4gICAgICA8Lz5cbiAgICApXG4gIH0sXG4pXG5JbWFnZS5kaXNwbGF5TmFtZSA9ICdOZXh0UGljdHVyZSdcblxuZXhwb3J0IHsgSW1hZ2UgfVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../components/Image.tsx\n");
19
+
20
+ /***/ })
21
+
22
+ });
@@ -0,0 +1,22 @@
1
+ /*
2
+ * ATTENTION: An "eval-source-map" devtool has been used.
3
+ * This devtool is neither made for production nor for readable output files.
4
+ * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
5
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6
+ * or disable the default devtool with "devtool: false".
7
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8
+ */
9
+ self["webpackHotUpdate_N_E"]("pages/index",{
10
+
11
+ /***/ "../components/Image.tsx":
12
+ /*!*******************************!*\
13
+ !*** ../components/Image.tsx ***!
14
+ \*******************************/
15
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
16
+
17
+ "use strict";
18
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isStaticRequire\": function() { return /* binding */ isStaticRequire; },\n/* harmony export */ \"isStaticImageData\": function() { return /* binding */ isStaticImageData; },\n/* harmony export */ \"isStaticImport\": function() { return /* binding */ isStaticImport; },\n/* harmony export */ \"getInt\": function() { return /* binding */ getInt; },\n/* harmony export */ \"Image\": function() { return /* binding */ Image; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"../../../node_modules/react/jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @bedrock-layout/use-forwarded-ref */ \"../../../node_modules/@bedrock-layout/use-forwarded-ref/lib/index.m.js\");\n/* harmony import */ var next_dist_next_server_server_image_config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/next-server/server/image-config */ \"../../../node_modules/next/dist/next-server/server/image-config.js\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! next/head */ \"../../../node_modules/next/head.js\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _config_config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../config/config */ \"../config/config.ts\");\n/* module decorator */ module = __webpack_require__.hmd(module);\n\n\n\n\n\nvar _jsxFileName = \"/Users/paulhachmang/Sites/reachdigital-next/packages/image/components/Image.tsx\",\n _s = $RefreshSig$();\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0,_Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/* eslint-disable prefer-const */\n\n/* eslint-disable no-param-reassign */\n\n/* eslint-disable @next/next/no-img-element */\n\n/* eslint-disable jsx-a11y/alt-text */\n\n\n\n\n\n\nif (false) {}\n\nconst VALID_LOADING_VALUES = ['lazy', 'eager', undefined];\nconst loaders = new Map([['imgix', _config_config__WEBPACK_IMPORTED_MODULE_6__.imgixLoader], ['cloudinary', _config_config__WEBPACK_IMPORTED_MODULE_6__.cloudinaryLoader], ['akamai', _config_config__WEBPACK_IMPORTED_MODULE_6__.akamaiLoader], ['default', _config_config__WEBPACK_IMPORTED_MODULE_6__.defaultLoader]]);\nconst VALID_LAYOUT_VALUES = ['fill', 'responsive', 'intrinsic', 'fixed'];\nfunction isStaticRequire(src) {\n return src.default !== undefined;\n}\nfunction isStaticImageData(src) {\n return src.src !== undefined;\n}\nfunction isStaticImport(src) {\n return typeof src === 'object' && (isStaticRequire(src) || isStaticImageData(src));\n} // sort smallest to largest\n\nconst allSizes = [..._config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes, ..._config_config__WEBPACK_IMPORTED_MODULE_6__.configImageSizes];\n_config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes.sort((a, b) => a - b);\nallSizes.sort((a, b) => a - b);\n\nfunction getWidths(width, layout, sizes = '', scale) {\n if (sizes && layout === 'fill' || layout === 'responsive') {\n // Find all the \"vw\" percent sizes used in the sizes prop\n const viewportWidthRe = /(^|\\s)(1?\\d?\\d)vw/g;\n const percentSizes = []; // eslint-disable-next-line no-cond-assign\n\n for (let match; match = viewportWidthRe.exec(sizes); match) {\n var _match;\n\n percentSizes.push(parseInt((_match = match) === null || _match === void 0 ? void 0 : _match[2], 10));\n }\n\n if (percentSizes.length) {\n const smallestRatio = Math.min(...percentSizes) * 0.01;\n return {\n widths: allSizes.filter(s => s >= _config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes[0] * smallestRatio),\n kind: 'w'\n };\n } // Find all the \"px\" sizes used in the sizes prop\n\n\n const pxWidthRe = /(^|\\s)(1?\\d+)px/g;\n const pxSizes = []; // eslint-disable-next-line no-cond-assign\n\n for (let match; match = pxWidthRe.exec(sizes); match) {\n var _match2;\n\n pxSizes.push(parseInt((_match2 = match) === null || _match2 === void 0 ? void 0 : _match2[2], 10));\n }\n\n if (pxSizes.length) {\n return {\n widths: pxSizes.map(pxSize => {\n var _allSizes$filter, _allSizes$filter2;\n\n const scaled = (_allSizes$filter = allSizes.filter(s => s * scale > pxSize)) === null || _allSizes$filter === void 0 ? void 0 : _allSizes$filter[0];\n const dpr2 = (_allSizes$filter2 = allSizes.filter(s => s > pxSize)) === null || _allSizes$filter2 === void 0 ? void 0 : _allSizes$filter2[0];\n return scale > 1 ? Math.max(scaled, dpr2) : Math.min(scaled, dpr2);\n }),\n kind: 'w'\n };\n }\n\n return {\n widths: allSizes,\n kind: 'w'\n };\n }\n\n if (typeof width !== 'number' || layout === 'fill') {\n return {\n widths: _config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes,\n kind: 'w'\n };\n }\n\n const widths = [...new Set( // > This means that most OLED screens that say they are 3x resolution,\n // > are actually 3x in the green color, but only 1.5x in the red and\n // > blue colors. Showing a 3x resolution image in the app vs a 2x\n // > resolution image will be visually the same, though the 3x image\n // > takes significantly more data. Even true 3x resolution screens are\n // > wasteful as the human eye cannot see that level of detail without\n // > something like a magnifying glass.\n // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html\n [width, width * 2\n /* , width * 3*/\n ].map(w => allSizes.find(p => p >= w) || allSizes[allSizes.length - 1]))];\n return {\n widths,\n kind: 'x'\n };\n}\n\nfunction generateSourceAttrs({\n src,\n layout,\n width,\n quality = 44,\n sizes,\n loader,\n scale\n}) {\n const {\n widths,\n kind\n } = getWidths(width, layout, sizes, scale);\n return {\n sizes: !sizes && kind === 'w' ? `50vw` : sizes,\n srcSet: widths.map((w, i) => `${loader({\n src,\n quality,\n width: w\n })} ${kind === 'w' ? Math.round(w * scale) : i + 1}${kind}`).join(', ')\n };\n}\n\nfunction getInt(x) {\n if (typeof x === 'number') {\n return x;\n }\n\n if (typeof x === 'string') {\n return parseInt(x, 10);\n }\n\n return undefined;\n}\n\nfunction defaultImageLoader(loaderProps) {\n const load = loaders.get(_config_config__WEBPACK_IMPORTED_MODULE_6__.configLoader);\n\n if (load) {\n return load(_objectSpread({\n root: _config_config__WEBPACK_IMPORTED_MODULE_6__.configPath\n }, loaderProps));\n }\n\n throw new Error(`[@reachdigital/image]: Unknown \"loader\" found in \"next.config.js\". Expected: ${next_dist_next_server_server_image_config__WEBPACK_IMPORTED_MODULE_3__.VALID_LOADERS.join(', ')}. Received: ${_config_config__WEBPACK_IMPORTED_MODULE_6__.configLoader}`);\n} // See https://stackoverflow.com/q/39777833/266535 for why we use this ref\n// handler instead of the img's onLoad attribute.\n\n\nfunction removePlaceholder(img, placeholder) {\n if (placeholder === 'blur' && img) {\n const handleLoad = () => {\n if (!img.src.startsWith('data:')) {\n const p = 'decode' in img ? img.decode() : Promise.resolve(); // eslint-disable-next-line @typescript-eslint/no-floating-promises\n\n p.catch(() => {}).then(() => {\n img.style.filter = 'none';\n img.style.backgroundSize = 'none';\n img.style.backgroundImage = 'none';\n });\n }\n };\n\n if (img.complete) {\n // If the real image fails to load, this will still remove the placeholder.\n // This is the desired behavior for now, and will be revisited when error\n // handling is worked on for the image component itself.\n handleLoad();\n } else {\n img.onload = handleLoad;\n }\n }\n}\n/** Checks whether an image is currently in the viewport */\n\n\nfunction isInViewport(elem) {\n const {\n top,\n right,\n bottom,\n left\n } = elem.getBoundingClientRect();\n return bottom >= 0 && right >= 0 && top <= window.innerHeight && left <= window.innerWidth;\n}\n\nfunction isSizesRecord(sizes) {\n return typeof sizes === 'object';\n}\n\nfunction sizesEntries(sizes) {\n if (isSizesRecord(sizes)) {\n return Object.entries(sizes).map(([breakpoint, size]) => [Number(breakpoint), size]).sort(([sizeA], [sizeB]) => sizeB - sizeA);\n }\n\n return [[0, sizes]];\n}\n\nfunction generateSizesString(sizes) {\n return sizesEntries(sizes).map(([breakpoint, size]) => {\n if (breakpoint === 0) return size;\n return `(min-width: ${breakpoint}px) ${size}`;\n }).join(', ');\n}\n/** Since we're handling stuff ourselves we omit some stuff */\n\n\nconst Image = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().forwardRef(_c = _s((_ref, forwardedRef) => {\n var _generateSizesString, _loading;\n\n _s();\n\n let {\n src,\n sizes: sizesOrig,\n unoptimized = false,\n loading,\n layout = 'responsive',\n quality,\n width,\n height,\n style,\n loader = defaultImageLoader,\n placeholder = 'empty',\n blurDataURL\n } = _ref,\n imgProps = (0,_Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__.default)(_ref, [\"src\", \"sizes\", \"unoptimized\", \"loading\", \"layout\", \"quality\", \"width\", \"height\", \"style\", \"loader\", \"placeholder\", \"blurDataURL\"]);\n\n const ref = (0,_bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__.default)(forwardedRef);\n const sizes = (_generateSizesString = generateSizesString(layout === 'fixed' && width && !sizesOrig ? `${width}px` : sizesOrig)) !== null && _generateSizesString !== void 0 ? _generateSizesString : '50vw'; // If no responsive sizes are given, we're defaulting to 50vw on mobile\n // const [sizes, setSizes] = useState(toSizesString(sizesOrig) ?? `50vw`)\n\n (0,react__WEBPACK_IMPORTED_MODULE_5__.useEffect)(() => {\n if (!ref.current || false || layout === 'fixed' && width) return () => {}; // Warn the user when he isn't providing sizes and how to proceed\n\n const ro = new ResizeObserver(([entry]) => {\n var _sizesEntries$find;\n\n const currentvw = entry.contentRect.width;\n let ratio;\n let msg = '';\n const [breakpoint, size] = (_sizesEntries$find = sizesEntries(sizesOrig).find(([s]) => s === 0 ? true : window.matchMedia(`(min-width: ${s})`))) !== null && _sizesEntries$find !== void 0 ? _sizesEntries$find : [0, '100vw'];\n\n if (size) {\n const el = document.createElement('div');\n el.setAttribute('style', `width: ${size}`);\n document.body.appendChild(el);\n const measuredWidth = el.getBoundingClientRect().width; // el.remove()\n\n ratio = measuredWidth ** 2 / currentvw ** 2;\n msg += `Image has \"sizes\" property set, but size 'min-width(${breakpoint}px) ${size}' is incorrect.`;\n } else {\n msg += `Image has no \"sizes\" property set.`;\n ratio = (window.innerWidth * 0.5) ** 2 / currentvw ** 2;\n }\n\n const round = nr => Math.round(nr * 100) / 100;\n\n if (ratio > 1.2) {\n console.warn(`[@reachdigital/image]: ${msg} Currently downloading an image that has ${round(ratio)}x too many pixels`, entry.target);\n } else if (ratio < 0.8) {\n console.warn(`[@reachdigital/image]: ${msg} Currently downloading an image that has ${round(1 / ratio)}x too few pixels`, entry.target);\n }\n });\n ro.observe(ref.current);\n return () => ro.disconnect();\n }, [layout, ref, sizesOrig, src, width]);\n let staticSrc = '';\n\n if (isStaticImport(src)) {\n const staticImageData = isStaticRequire(src) ? src.default : src;\n\n if (!staticImageData.src) {\n throw new Error(`[@reachdigital/image]: An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(staticImageData)}`);\n }\n\n blurDataURL = blurDataURL || staticImageData.blurDataURL;\n staticSrc = staticImageData.src;\n\n if (!layout || layout !== 'fill') {\n height = height || staticImageData.height;\n width = width || staticImageData.width;\n\n if (!staticImageData.height || !staticImageData.width) {\n throw new Error(`[@reachdigital/image]: An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(staticImageData)}`);\n }\n }\n }\n\n src = typeof src === 'string' ? src : staticSrc;\n const widthInt = getInt(width);\n const heightInt = getInt(height);\n const qualityInt = getInt(quality);\n\n if (true) {\n if (!src) {\n throw new Error(`[@reachdigital/image]: Image is missing required \"src\" property. Make sure you pass \"src\" in props to the \\`@reachdigital/image\\` component. Received: ${JSON.stringify({\n width,\n height,\n quality\n })}`);\n }\n\n if (!VALID_LAYOUT_VALUES.includes(layout)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"layout\" property. Provided \"${layout}\" should be one of ${VALID_LAYOUT_VALUES.map(String).join(',')}.`);\n }\n\n if (typeof widthInt !== 'undefined' && Number.isNaN(widthInt) || typeof heightInt !== 'undefined' && Number.isNaN(heightInt)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"width\" or \"height\" property. These should be numeric values.`);\n }\n\n if (!VALID_LOADING_VALUES.includes(loading)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"loading\" property. Provided \"${loading}\" should be one of ${VALID_LOADING_VALUES.map(String).join(',')}.`);\n }\n\n if (placeholder === 'blur') {\n if (layout !== 'fill' && (widthInt || 0) * (heightInt || 0) < 1600) {\n console.warn(`[@reachdigital/image]: Image with src \"${src}\" is smaller than 40x40. Consider removing the \"placeholder='blur'\" property to improve performance.`);\n }\n\n if (!blurDataURL) {\n const VALID_BLUR_EXT = ['jpeg', 'png', 'webp']; // should match next-image-loader\n\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has \"placeholder='blur'\" property but is missing the \"blurDataURL\" property.\n Possible solutions:\n - Add a \"blurDataURL\" property, the contents should be a small Data URL to represent the image\n - Change the \"src\" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(',')}\n - Remove the \"placeholder\" property, effectively no blur effect\n Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url`);\n }\n }\n }\n\n if (typeof widthInt === 'undefined' && typeof heightInt === 'undefined') {\n if (layout === 'fill') {// handle fill\n } else if (true) {\n // <Image src=\"i.png\" />\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" must use \"width\" and \"height\" properties or \"layout='fill'\" property.`);\n }\n }\n\n (_loading = loading) !== null && _loading !== void 0 ? _loading : loading = 'lazy';\n\n if (src && src.startsWith('data:')) {\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n unoptimized = true;\n }\n\n const attributes3x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 1.5\n });\n const attributes2x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 1\n });\n const attributes1x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 0.5\n });\n if (layout !== 'fixed' && !style) style = {};\n if (layout === 'responsive') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: 'auto'\n });\n if (layout === 'intrinsic') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: 'auto',\n maxWidth: width\n });\n if (layout === 'fill') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: '100%'\n });\n return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [unoptimized ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", _objectSpread(_objectSpread({\n ref: ref\n }, imgProps), {}, {\n src: src,\n width: width,\n height: height,\n style: style\n }), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 609,\n columnNumber: 11\n }, undefined) : /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"picture\", {\n children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"source\", _objectSpread({\n media: \"(-webkit-min-device-pixel-ratio: 2.5)\"\n }, attributes3x), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 612,\n columnNumber: 13\n }, undefined), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"source\", _objectSpread({\n media: \"(-webkit-min-device-pixel-ratio: 1.5)\"\n }, attributes2x), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 613,\n columnNumber: 13\n }, undefined), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", _objectSpread(_objectSpread(_objectSpread({\n ref: ref\n }, imgProps), attributes1x), {}, {\n loading: loading,\n width: width,\n height: height,\n style: style\n }), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 614,\n columnNumber: 13\n }, undefined)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 611,\n columnNumber: 11\n }, undefined), loading === 'eager' && /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_4___default()), {\n children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"link\", {\n rel: \"preload\",\n as: \"image\",\n media: \"(-webkit-min-device-pixel-ratio: 2.5)\" // @ts-expect-error imagesrcset is not yet in the link element type\n ,\n imagesrcset: attributes1x.srcSet,\n imagesizes: sizes\n }, `__nimg-2x-${attributes1x.srcSet}${attributes1x.sizes}`, false, {\n fileName: _jsxFileName,\n lineNumber: 627,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 626,\n columnNumber: 11\n }, undefined)]\n }, void 0, true);\n}, \"uc1ywpQv+s/tGng4xj/L6VVOIq8=\", false, function () {\n return [_bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__.default];\n}));\n_c2 = Image;\nImage.displayName = 'NextPicture';\n\n\nvar _c, _c2;\n\n$RefreshReg$(_c, \"Image$React.forwardRef\");\n$RefreshReg$(_c2, \"Image\");\n\n;\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n var currentExports = module.__proto__.exports;\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uL2NvbXBvbmVudHMvSW1hZ2UudHN4PzJiNmQiXSwibmFtZXMiOlsiVkFMSURfTE9BRElOR19WQUxVRVMiLCJ1bmRlZmluZWQiLCJsb2FkZXJzIiwiTWFwIiwiaW1naXhMb2FkZXIiLCJjbG91ZGluYXJ5TG9hZGVyIiwiYWthbWFpTG9hZGVyIiwiZGVmYXVsdExvYWRlciIsIlZBTElEX0xBWU9VVF9WQUxVRVMiLCJpc1N0YXRpY1JlcXVpcmUiLCJzcmMiLCJkZWZhdWx0IiwiaXNTdGF0aWNJbWFnZURhdGEiLCJpc1N0YXRpY0ltcG9ydCIsImFsbFNpemVzIiwiY29uZmlnRGV2aWNlU2l6ZXMiLCJjb25maWdJbWFnZVNpemVzIiwiYSIsImIiLCJzb3J0IiwiZ2V0V2lkdGhzIiwid2lkdGgiLCJsYXlvdXQiLCJzaXplcyIsInNjYWxlIiwidmlld3BvcnRXaWR0aFJlIiwicGVyY2VudFNpemVzIiwibWF0Y2giLCJleGVjIiwicHVzaCIsInBhcnNlSW50IiwibGVuZ3RoIiwic21hbGxlc3RSYXRpbyIsIk1hdGgiLCJtaW4iLCJ3aWR0aHMiLCJmaWx0ZXIiLCJzIiwia2luZCIsInB4V2lkdGhSZSIsInB4U2l6ZXMiLCJtYXAiLCJweFNpemUiLCJzY2FsZWQiLCJkcHIyIiwibWF4IiwiU2V0IiwidyIsImZpbmQiLCJwIiwiZ2VuZXJhdGVTb3VyY2VBdHRycyIsInF1YWxpdHkiLCJsb2FkZXIiLCJzcmNTZXQiLCJpIiwicm91bmQiLCJqb2luIiwiZ2V0SW50IiwieCIsImRlZmF1bHRJbWFnZUxvYWRlciIsImxvYWRlclByb3BzIiwibG9hZCIsImdldCIsImNvbmZpZ0xvYWRlciIsInJvb3QiLCJjb25maWdQYXRoIiwiRXJyb3IiLCJWQUxJRF9MT0FERVJTIiwicmVtb3ZlUGxhY2Vob2xkZXIiLCJpbWciLCJwbGFjZWhvbGRlciIsImhhbmRsZUxvYWQiLCJzdGFydHNXaXRoIiwiZGVjb2RlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjYXRjaCIsInRoZW4iLCJzdHlsZSIsImJhY2tncm91bmRTaXplIiwiYmFja2dyb3VuZEltYWdlIiwiY29tcGxldGUiLCJvbmxvYWQiLCJpc0luVmlld3BvcnQiLCJlbGVtIiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiaXNTaXplc1JlY29yZCIsInNpemVzRW50cmllcyIsIk9iamVjdCIsImVudHJpZXMiLCJicmVha3BvaW50Iiwic2l6ZSIsIk51bWJlciIsInNpemVBIiwic2l6ZUIiLCJnZW5lcmF0ZVNpemVzU3RyaW5nIiwiSW1hZ2UiLCJSZWFjdCIsImZvcndhcmRlZFJlZiIsInNpemVzT3JpZyIsInVub3B0aW1pemVkIiwibG9hZGluZyIsImhlaWdodCIsImJsdXJEYXRhVVJMIiwiaW1nUHJvcHMiLCJyZWYiLCJ1c2VGb3J3YXJkZWRSZWYiLCJ1c2VFZmZlY3QiLCJjdXJyZW50Iiwicm8iLCJSZXNpemVPYnNlcnZlciIsImVudHJ5IiwiY3VycmVudHZ3IiwiY29udGVudFJlY3QiLCJyYXRpbyIsIm1zZyIsIm1hdGNoTWVkaWEiLCJlbCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsIm1lYXN1cmVkV2lkdGgiLCJuciIsImNvbnNvbGUiLCJ3YXJuIiwidGFyZ2V0Iiwib2JzZXJ2ZSIsImRpc2Nvbm5lY3QiLCJzdGF0aWNTcmMiLCJzdGF0aWNJbWFnZURhdGEiLCJKU09OIiwic3RyaW5naWZ5Iiwid2lkdGhJbnQiLCJoZWlnaHRJbnQiLCJxdWFsaXR5SW50IiwiaW5jbHVkZXMiLCJTdHJpbmciLCJpc05hTiIsIlZBTElEX0JMVVJfRVhUIiwiYXR0cmlidXRlczN4IiwiYXR0cmlidXRlczJ4IiwiYXR0cmlidXRlczF4IiwibWF4V2lkdGgiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7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RSxFQUFDLE9BSEw7QUFJRSxhQUFLLEVBQUMsdUNBSlIsQ0FLRTtBQUxGO0FBTUUsbUJBQVcsRUFBRTBDLFlBQVksQ0FBQ2pHLE1BTjVCO0FBT0Usa0JBQVUsRUFBRTlCO0FBUGQsU0FDUSxhQUFZK0gsWUFBWSxDQUFDakcsTUFBTyxHQUFFaUcsWUFBWSxDQUFDL0gsS0FBTSxFQUQ3RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREY7QUFBQTtBQUFBO0FBQUE7QUFBQSxpQkFuQko7QUFBQSxrQkFERjtBQWtDRCxDQXRQVztBQUFBLFVBbUJFMEYsc0VBbkJGO0FBQUEsR0FBZDtNQUFNVixLO0FBd1BOQSxLQUFLLENBQUNpRCxXQUFOLEdBQW9CLGFBQXBCO0FBRUEiLCJmaWxlIjoiLi4vY29tcG9uZW50cy9JbWFnZS50c3guanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItY29uc3QgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAbmV4dC9uZXh0L25vLWltZy1lbGVtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9hbHQtdGV4dCAqL1xuaW1wb3J0IHVzZUZvcndhcmRlZFJlZiBmcm9tICdAYmVkcm9jay1sYXlvdXQvdXNlLWZvcndhcmRlZC1yZWYnXG5pbXBvcnQgeyBMb2FkZXJWYWx1ZSwgVkFMSURfTE9BREVSUyB9IGZyb20gJ25leHQvZGlzdC9uZXh0LXNlcnZlci9zZXJ2ZXIvaW1hZ2UtY29uZmlnJ1xuaW1wb3J0IEhlYWQgZnJvbSAnbmV4dC9oZWFkJ1xuaW1wb3J0IHR5cGUgeyBJbWFnZUxvYWRlclByb3BzLCBJbWFnZUxvYWRlciB9IGZyb20gJ25leHQvaW1hZ2UnXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHVzZVJlc2l6ZU9ic2VydmVyIGZyb20gJ3VzZS1yZXNpemUtb2JzZXJ2ZXInXG5pbXBvcnQge1xuICBha2FtYWlMb2FkZXIsXG4gIGNsb3VkaW5hcnlMb2FkZXIsXG4gIGNvbmZpZ0RldmljZVNpemVzLFxuICBjb25maWdJbWFnZVNpemVzLFxuICBjb25maWdMb2FkZXIsXG4gIGNvbmZpZ1BhdGgsXG4gIERlZmF1bHRJbWFnZUxvYWRlclByb3BzLFxuICBkZWZhdWx0TG9hZGVyLFxuICBpbWdpeExvYWRlcixcbn0gZnJvbSAnLi4vY29uZmlnL2NvbmZpZydcbmltcG9ydCB1c2VDb25uZWN0aW9uVHlwZSBmcm9tICcuLi9ob29rcy91c2VDb25uZWN0aW9uVHlwZSdcblxuaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICBnbG9iYWwuX19ORVhUX0lNQUdFX0lNUE9SVEVEID0gdHJ1ZVxufVxuXG5leHBvcnQgdHlwZSB7IEltYWdlTG9hZGVyUHJvcHMsIEltYWdlTG9hZGVyIH1cblxuY29uc3QgVkFMSURfTE9BRElOR19WQUxVRVMgPSBbJ2xhenknLCAnZWFnZXInLCB1bmRlZmluZWRdIGFzIGNvbnN0XG50eXBlIExvYWRpbmdWYWx1ZSA9IHR5cGVvZiBWQUxJRF9MT0FESU5HX1ZBTFVFU1tudW1iZXJdXG5cbmNvbnN0IGxvYWRlcnMgPSBuZXcgTWFwPExvYWRlclZhbHVlLCAocHJvcHM6IERlZmF1bHRJbWFnZUxvYWRlclByb3BzKSA9PiBzdHJpbmc+KFtcbiAgWydpbWdpeCcsIGltZ2l4TG9hZGVyXSxcbiAgWydjbG91ZGluYXJ5JywgY2xvdWRpbmFyeUxvYWRlcl0sXG4gIFsnYWthbWFpJywgYWthbWFpTG9hZGVyXSxcbiAgWydkZWZhdWx0JywgZGVmYXVsdExvYWRlcl0sXG5dKVxuXG5jb25zdCBWQUxJRF9MQVlPVVRfVkFMVUVTID0gWydmaWxsJywgJ3Jlc3BvbnNpdmUnLCAnaW50cmluc2ljJywgJ2ZpeGVkJ10gYXMgY29uc3RcbnR5cGUgTGF5b3V0VmFsdWUgPSAnZmlsbCcgfCAnZml4ZWQnIHwgJ2ludHJpbnNpYycgfCAncmVzcG9uc2l2ZScgfCB1bmRlZmluZWRcblxudHlwZSBQbGFjZWhvbGRlclZhbHVlID0gJ2JsdXInIHwgJ2VtcHR5J1xuXG50eXBlIEltZ0VsZW1lbnRTdHlsZSA9IE5vbk51bGxhYmxlPEpTWC5JbnRyaW5zaWNFbGVtZW50c1snaW1nJ11bJ3N0eWxlJ10+XG5cbmludGVyZmFjZSBTdGF0aWNJbWFnZURhdGEge1xuICBzcmM6IHN0cmluZ1xuICBoZWlnaHQ6IG51bWJlclxuICB3aWR0aDogbnVtYmVyXG4gIGJsdXJEYXRhVVJMPzogc3RyaW5nXG59XG5cbmludGVyZmFjZSBTdGF0aWNSZXF1aXJlIHtcbiAgZGVmYXVsdDogU3RhdGljSW1hZ2VEYXRhXG59XG5cbnR5cGUgU3RhdGljSW1wb3J0ID0gU3RhdGljUmVxdWlyZSB8IFN0YXRpY0ltYWdlRGF0YVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdGF0aWNSZXF1aXJlKHNyYzogU3RhdGljUmVxdWlyZSB8IFN0YXRpY0ltYWdlRGF0YSk6IHNyYyBpcyBTdGF0aWNSZXF1aXJlIHtcbiAgcmV0dXJuIChzcmMgYXMgU3RhdGljUmVxdWlyZSkuZGVmYXVsdCAhPT0gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YXRpY0ltYWdlRGF0YShzcmM6IFN0YXRpY1JlcXVpcmUgfCBTdGF0aWNJbWFnZURhdGEpOiBzcmMgaXMgU3RhdGljSW1hZ2VEYXRhIHtcbiAgcmV0dXJuIChzcmMgYXMgU3RhdGljSW1hZ2VEYXRhKS5zcmMgIT09IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdGF0aWNJbXBvcnQoc3JjOiBzdHJpbmcgfCBTdGF0aWNJbXBvcnQpOiBzcmMgaXMgU3RhdGljSW1wb3J0IHtcbiAgcmV0dXJuIHR5cGVvZiBzcmMgPT09ICdvYmplY3QnICYmIChpc1N0YXRpY1JlcXVpcmUoc3JjKSB8fCBpc1N0YXRpY0ltYWdlRGF0YShzcmMpKVxufVxuXG4vLyBzb3J0IHNtYWxsZXN0IHRvIGxhcmdlc3RcbmNvbnN0IGFsbFNpemVzID0gWy4uLmNvbmZpZ0RldmljZVNpemVzLCAuLi5jb25maWdJbWFnZVNpemVzXVxuY29uZmlnRGV2aWNlU2l6ZXMuc29ydCgoYSwgYikgPT4gYSAtIGIpXG5hbGxTaXplcy5zb3J0KChhLCBiKSA9PiBhIC0gYilcblxuZnVuY3Rpb24gZ2V0V2lkdGhzKFxuICB3aWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBsYXlvdXQ6IExheW91dFZhbHVlLFxuICBzaXplcyA9ICcnLFxuICBzY2FsZTogbnVtYmVyLFxuKTogeyB3aWR0aHM6IG51bWJlcltdOyBraW5kOiAndycgfCAneCcgfSB7XG4gIGlmICgoc2l6ZXMgJiYgbGF5b3V0ID09PSAnZmlsbCcpIHx8IGxheW91dCA9PT0gJ3Jlc3BvbnNpdmUnKSB7XG4gICAgLy8gRmluZCBhbGwgdGhlIFwidndcIiBwZXJjZW50IHNpemVzIHVzZWQgaW4gdGhlIHNpemVzIHByb3BcbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoUmUgPSAvKF58XFxzKSgxP1xcZD9cXGQpdncvZ1xuICAgIGNvbnN0IHBlcmNlbnRTaXplczogbnVtYmVyW10gPSBbXVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25kLWFzc2lnblxuICAgIGZvciAobGV0IG1hdGNoOiBzdHJpbmdbXSB8IG51bGw7IChtYXRjaCA9IHZpZXdwb3J0V2lkdGhSZS5leGVjKHNpemVzKSk7IG1hdGNoKSB7XG4gICAgICBwZXJjZW50U2l6ZXMucHVzaChwYXJzZUludChtYXRjaD8uWzJdLCAxMCkpXG4gICAgfVxuICAgIGlmIChwZXJjZW50U2l6ZXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzbWFsbGVzdFJhdGlvID0gTWF0aC5taW4oLi4ucGVyY2VudFNpemVzKSAqIDAuMDFcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGhzOiBhbGxTaXplcy5maWx0ZXIoKHMpID0+IHMgPj0gY29uZmlnRGV2aWNlU2l6ZXNbMF0gKiBzbWFsbGVzdFJhdGlvKSxcbiAgICAgICAga2luZDogJ3cnLFxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpbmQgYWxsIHRoZSBcInB4XCIgc2l6ZXMgdXNlZCBpbiB0aGUgc2l6ZXMgcHJvcFxuICAgIGNvbnN0IHB4V2lkdGhSZSA9IC8oXnxcXHMpKDE/XFxkKylweC9nXG4gICAgY29uc3QgcHhTaXplczogbnVtYmVyW10gPSBbXVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25kLWFzc2lnblxuICAgIGZvciAobGV0IG1hdGNoOiBzdHJpbmdbXSB8IG51bGw7IChtYXRjaCA9IHB4V2lkdGhSZS5leGVjKHNpemVzKSk7IG1hdGNoKSB7XG4gICAgICBweFNpemVzLnB1c2gocGFyc2VJbnQobWF0Y2g/LlsyXSwgMTApKVxuICAgIH1cblxuICAgIGlmIChweFNpemVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGhzOiBweFNpemVzLm1hcCgocHhTaXplKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2NhbGVkID0gYWxsU2l6ZXMuZmlsdGVyKChzKSA9PiBzICogc2NhbGUgPiBweFNpemUpPy5bMF1cbiAgICAgICAgICBjb25zdCBkcHIyID0gYWxsU2l6ZXMuZmlsdGVyKChzKSA9PiBzID4gcHhTaXplKT8uWzBdXG4gICAgICAgICAgcmV0dXJuIHNjYWxlID4gMSA/IE1hdGgubWF4KHNjYWxlZCwgZHByMikgOiBNYXRoLm1pbihzY2FsZWQsIGRwcjIpXG4gICAgICAgIH0pLFxuICAgICAgICBraW5kOiAndycsXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgd2lkdGhzOiBhbGxTaXplcywga2luZDogJ3cnIH1cbiAgfVxuICBpZiAodHlwZW9mIHdpZHRoICE9PSAnbnVtYmVyJyB8fCBsYXlvdXQgPT09ICdmaWxsJykge1xuICAgIHJldHVybiB7IHdpZHRoczogY29uZmlnRGV2aWNlU2l6ZXMsIGtpbmQ6ICd3JyB9XG4gIH1cblxuICBjb25zdCB3aWR0aHMgPSBbXG4gICAgLi4ubmV3IFNldChcbiAgICAgIC8vID4gVGhpcyBtZWFucyB0aGF0IG1vc3QgT0xFRCBzY3JlZW5zIHRoYXQgc2F5IHRoZXkgYXJlIDN4IHJlc29sdXRpb24sXG4gICAgICAvLyA+IGFyZSBhY3R1YWxseSAzeCBpbiB0aGUgZ3JlZW4gY29sb3IsIGJ1dCBvbmx5IDEuNXggaW4gdGhlIHJlZCBhbmRcbiAgICAgIC8vID4gYmx1ZSBjb2xvcnMuIFNob3dpbmcgYSAzeCByZXNvbHV0aW9uIGltYWdlIGluIHRoZSBhcHAgdnMgYSAyeFxuICAgICAgLy8gPiByZXNvbHV0aW9uIGltYWdlIHdpbGwgYmUgdmlzdWFsbHkgdGhlIHNhbWUsIHRob3VnaCB0aGUgM3ggaW1hZ2VcbiAgICAgIC8vID4gdGFrZXMgc2lnbmlmaWNhbnRseSBtb3JlIGRhdGEuIEV2ZW4gdHJ1ZSAzeCByZXNvbHV0aW9uIHNjcmVlbnMgYXJlXG4gICAgICAvLyA+IHdhc3RlZnVsIGFzIHRoZSBodW1hbiBleWUgY2Fubm90IHNlZSB0aGF0IGxldmVsIG9mIGRldGFpbCB3aXRob3V0XG4gICAgICAvLyA+IHNvbWV0aGluZyBsaWtlIGEgbWFnbmlmeWluZyBnbGFzcy5cbiAgICAgIC8vIGh0dHBzOi8vYmxvZy50d2l0dGVyLmNvbS9lbmdpbmVlcmluZy9lbl91cy90b3BpY3MvaW5mcmFzdHJ1Y3R1cmUvMjAxOS9jYXBwaW5nLWltYWdlLWZpZGVsaXR5LW9uLXVsdHJhLWhpZ2gtcmVzb2x1dGlvbi1kZXZpY2VzLmh0bWxcbiAgICAgIFt3aWR0aCwgd2lkdGggKiAyIC8qICwgd2lkdGggKiAzKi9dLm1hcChcbiAgICAgICAgKHcpID0+IGFsbFNpemVzLmZpbmQoKHApID0+IHAgPj0gdykgfHwgYWxsU2l6ZXNbYWxsU2l6ZXMubGVuZ3RoIC0gMV0sXG4gICAgICApLFxuICAgICksXG4gIF1cbiAgcmV0dXJuIHsgd2lkdGhzLCBraW5kOiAneCcgfVxufVxuXG50eXBlIEdlbkltZ0F0dHJzRGF0YSA9IHtcbiAgc3JjOiBzdHJpbmdcbiAgbGF5b3V0OiBMYXlvdXRWYWx1ZVxuICBsb2FkZXI6IEltYWdlTG9hZGVyXG4gIHdpZHRoPzogbnVtYmVyXG4gIHF1YWxpdHk/OiBudW1iZXJcbiAgc2l6ZXM/OiBzdHJpbmdcbiAgc2NhbGU6IG51bWJlclxufVxuXG50eXBlIEdlbkltZ0F0dHJzUmVzdWx0ID0ge1xuICBzcmNTZXQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBzaXplczogc3RyaW5nIHwgdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlU291cmNlQXR0cnMoe1xuICBzcmMsXG4gIGxheW91dCxcbiAgd2lkdGgsXG4gIHF1YWxpdHkgPSA0NCxcbiAgc2l6ZXMsXG4gIGxvYWRlcixcbiAgc2NhbGUsXG59OiBHZW5JbWdBdHRyc0RhdGEpOiBHZW5JbWdBdHRyc1Jlc3VsdCB7XG4gIGNvbnN0IHsgd2lkdGhzLCBraW5kIH0gPSBnZXRXaWR0aHMod2lkdGgsIGxheW91dCwgc2l6ZXMsIHNjYWxlKVxuXG4gIHJldHVybiB7XG4gICAgc2l6ZXM6ICFzaXplcyAmJiBraW5kID09PSAndycgPyBgNTB2d2AgOiBzaXplcyxcbiAgICBzcmNTZXQ6IHdpZHRoc1xuICAgICAgLm1hcChcbiAgICAgICAgKHcsIGkpID0+XG4gICAgICAgICAgYCR7bG9hZGVyKHsgc3JjLCBxdWFsaXR5LCB3aWR0aDogdyB9KX0gJHtcbiAgICAgICAgICAgIGtpbmQgPT09ICd3JyA/IE1hdGgucm91bmQodyAqIHNjYWxlKSA6IGkgKyAxXG4gICAgICAgICAgfSR7a2luZH1gLFxuICAgICAgKVxuICAgICAgLmpvaW4oJywgJyksXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEludCh4OiB1bmtub3duKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHR5cGVvZiB4ID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB4XG4gIH1cbiAgaWYgKHR5cGVvZiB4ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXJzZUludCh4LCAxMClcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRJbWFnZUxvYWRlcihsb2FkZXJQcm9wczogSW1hZ2VMb2FkZXJQcm9wcykge1xuICBjb25zdCBsb2FkID0gbG9hZGVycy5nZXQoY29uZmlnTG9hZGVyKVxuICBpZiAobG9hZCkge1xuICAgIHJldHVybiBsb2FkKHsgcm9vdDogY29uZmlnUGF0aCwgLi4ubG9hZGVyUHJvcHMgfSlcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogVW5rbm93biBcImxvYWRlclwiIGZvdW5kIGluIFwibmV4dC5jb25maWcuanNcIi4gRXhwZWN0ZWQ6ICR7VkFMSURfTE9BREVSUy5qb2luKFxuICAgICAgJywgJyxcbiAgICApfS4gUmVjZWl2ZWQ6ICR7Y29uZmlnTG9hZGVyfWAsXG4gIClcbn1cblxuLy8gU2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcS8zOTc3NzgzMy8yNjY1MzUgZm9yIHdoeSB3ZSB1c2UgdGhpcyByZWZcbi8vIGhhbmRsZXIgaW5zdGVhZCBvZiB0aGUgaW1nJ3Mgb25Mb2FkIGF0dHJpYnV0ZS5cbmZ1bmN0aW9uIHJlbW92ZVBsYWNlaG9sZGVyKGltZzogSFRNTEltYWdlRWxlbWVudCB8IG51bGwsIHBsYWNlaG9sZGVyOiBQbGFjZWhvbGRlclZhbHVlKSB7XG4gIGlmIChwbGFjZWhvbGRlciA9PT0gJ2JsdXInICYmIGltZykge1xuICAgIGNvbnN0IGhhbmRsZUxvYWQgPSAoKSA9PiB7XG4gICAgICBpZiAoIWltZy5zcmMuc3RhcnRzV2l0aCgnZGF0YTonKSkge1xuICAgICAgICBjb25zdCBwID0gJ2RlY29kZScgaW4gaW1nID8gaW1nLmRlY29kZSgpIDogUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgICAgICBwLmNhdGNoKCgpID0+IHt9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICBpbWcuc3R5bGUuZmlsdGVyID0gJ25vbmUnXG4gICAgICAgICAgaW1nLnN0eWxlLmJhY2tncm91bmRTaXplID0gJ25vbmUnXG4gICAgICAgICAgaW1nLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICdub25lJ1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaW1nLmNvbXBsZXRlKSB7XG4gICAgICAvLyBJZiB0aGUgcmVhbCBpbWFnZSBmYWlscyB0byBsb2FkLCB0aGlzIHdpbGwgc3RpbGwgcmVtb3ZlIHRoZSBwbGFjZWhvbGRlci5cbiAgICAgIC8vIFRoaXMgaXMgdGhlIGRlc2lyZWQgYmVoYXZpb3IgZm9yIG5vdywgYW5kIHdpbGwgYmUgcmV2aXNpdGVkIHdoZW4gZXJyb3JcbiAgICAgIC8vIGhhbmRsaW5nIGlzIHdvcmtlZCBvbiBmb3IgdGhlIGltYWdlIGNvbXBvbmVudCBpdHNlbGYuXG4gICAgICBoYW5kbGVMb2FkKClcbiAgICB9IGVsc2Uge1xuICAgICAgaW1nLm9ubG9hZCA9IGhhbmRsZUxvYWRcbiAgICB9XG4gIH1cbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIGFuIGltYWdlIGlzIGN1cnJlbnRseSBpbiB0aGUgdmlld3BvcnQgKi9cbmZ1bmN0aW9uIGlzSW5WaWV3cG9ydChlbGVtOiBIVE1MSW1hZ2VFbGVtZW50KTogYm9vbGVhbiB7XG4gIGNvbnN0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0IH0gPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gIHJldHVybiBib3R0b20gPj0gMCAmJiByaWdodCA+PSAwICYmIHRvcCA8PSB3aW5kb3cuaW5uZXJIZWlnaHQgJiYgbGVmdCA8PSB3aW5kb3cuaW5uZXJXaWR0aFxufVxuXG50eXBlIFNpemVzU3RyaW5nID0gYCR7bnVtYmVyfXZ3YCB8IGAke251bWJlcn1weGBcbnR5cGUgU2l6ZXNSZWNvcmQgPSBSZWNvcmQ8bnVtYmVyLCBTaXplc1N0cmluZz5cbnR5cGUgU2l6ZXMgPSBTaXplc1N0cmluZyB8IFNpemVzUmVjb3JkIHwgdW5kZWZpbmVkXG5cbmZ1bmN0aW9uIGlzU2l6ZXNSZWNvcmQoc2l6ZXM/OiBTaXplcyk6IHNpemVzIGlzIFNpemVzUmVjb3JkIHtcbiAgcmV0dXJuIHR5cGVvZiBzaXplcyA9PT0gJ29iamVjdCdcbn1cblxuZnVuY3Rpb24gc2l6ZXNFbnRyaWVzKHNpemVzOiBTaXplcyk6IChyZWFkb25seSBbbnVtYmVyLCBTaXplc1N0cmluZyB8IHVuZGVmaW5lZF0pW10ge1xuICBpZiAoaXNTaXplc1JlY29yZChzaXplcykpIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoc2l6ZXMpXG4gICAgICAubWFwKChbYnJlYWtwb2ludCwgc2l6ZV0pID0+IFtOdW1iZXIoYnJlYWtwb2ludCksIHNpemVdIGFzIGNvbnN0KVxuICAgICAgLnNvcnQoKFtzaXplQV0sIFtzaXplQl0pID0+IHNpemVCIC0gc2l6ZUEpXG4gIH1cbiAgcmV0dXJuIFtbMCwgc2l6ZXNdIGFzIGNvbnN0XVxufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVNpemVzU3RyaW5nKHNpemVzPzogU2l6ZXMpIHtcbiAgcmV0dXJuIHNpemVzRW50cmllcyhzaXplcylcbiAgICAubWFwKChbYnJlYWtwb2ludCwgc2l6ZV0pID0+IHtcbiAgICAgIGlmIChicmVha3BvaW50ID09PSAwKSByZXR1cm4gc2l6ZVxuICAgICAgcmV0dXJuIGAobWluLXdpZHRoOiAke2JyZWFrcG9pbnR9cHgpICR7c2l6ZX1gXG4gICAgfSlcbiAgICAuam9pbignLCAnKVxufVxuXG4vKiogU2luY2Ugd2UncmUgaGFuZGxpbmcgc3R1ZmYgb3Vyc2VsdmVzIHdlIG9taXQgc29tZSBzdHVmZiAqL1xudHlwZSBJbnRyaXNpbmNJbWFnZSA9IE9taXQ8XG4gIEpTWC5JbnRyaW5zaWNFbGVtZW50c1snaW1nJ10sXG4gICdzcmMnIHwgJ3NyY1NldCcgfCAncmVmJyB8ICd3aWR0aCcgfCAnaGVpZ2h0JyB8ICdsb2FkaW5nJyB8ICdzaXplcycgfCAnd2lkdGgnIHwgJ2hlaWdodCdcbj4gJiB7IGxvYWRpbmc/OiBMb2FkaW5nVmFsdWUgfVxuXG5leHBvcnQgdHlwZSBCYXNlSW1hZ2VQcm9wcyA9IEludHJpc2luY0ltYWdlICYge1xuICBsb2FkZXI/OiBJbWFnZUxvYWRlclxuICBxdWFsaXR5PzogbnVtYmVyIHwgc3RyaW5nXG4gIHVub3B0aW1pemVkPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBQb3NzaWJsZSB2YWx1ZXM6XG4gICAqXG4gICAqIC0gYGZpeGVkYDogdGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBub3QgY2hhbmdlIGFzIHRoZSB2aWV3cG9ydCBjaGFuZ2VzIChubyByZXNwb25zaXZlbmVzcylcbiAgICogICBzaW1pbGFyIHRvIHRoZSBuYXRpdmUgaW1nIGVsZW1lbnQuXG4gICAqIC0gYGludHJpbnNpY2A6IHRoZSBpbWFnZSB3aWxsIHNjYWxlIHRoZSBkaW1lbnNpb25zIGRvd24gZm9yIHNtYWxsZXIgdmlld3BvcnRzIGJ1dCBtYWludGFpbiB0aGVcbiAgICogICBvcmlnaW5hbCBkaW1lbnNpb25zICh0aGUgd2lkdGggYW5kIGhlaWdodCBnaXZlbikgZm9yIGxhcmdlciB2aWV3cG9ydHMuXG4gICAqIC0gYHJlc3BvbnNpdmVgOiB0aGUgaW1hZ2Ugd2lsbCBzY2FsZSB0aGUgZGltZW5zaW9ucyBkb3duIGZvciBzbWFsbGVyIHZpZXdwb3J0cyBhbmQgc2NhbGUgdXAgZm9yXG4gICAqICAgbGFyZ2VyIHZpZXdwb3J0cy5cbiAgICovXG4gIGxheW91dD86IExheW91dFZhbHVlXG5cbiAgLyoqIFNpemUgdGhlIGltYWdlIGlzIHJlbmRlcmVkIG9uIG1vYmlsZSAqL1xuICBzaXplcz86IFNpemVzU3RyaW5nIHwgU2l6ZXNSZWNvcmRcbn1cblxuLyoqXG4gKiBXaGVuIGBmaXhlZGAsIHRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgbm90IGNoYW5nZSBhcyB0aGUgdmlld3BvcnQgY2hhbmdlcyAobm8gcmVzcG9uc2l2ZW5lc3MpXG4gKiBzaW1pbGFyIHRvIHRoZSBuYXRpdmUgaW1nIGVsZW1lbnQuXG4gKlxuICogYGBgdHN4XG4gKiA8aW1nIHdpZHRoPXt3aWR0aH0gaGVpZ2h0PXtoZWlnaHR9IC8+XG4gKiBgYGBcbiAqXG4gKiBVc2UgY2FzZTogV2hlbiB5b3Ugd2FudCB0byByZW5kZXIgdGhlIGltYWdlIGF0IHRoZSBnaXZlbiB3aWR0aC9oZWlnaHQgYW5kIG5vdCBjaGFuZ2UgYmFzZWQgb24gYnJvd3NlciBzaXplLlxuICovXG50eXBlIExheW91dFR5cGVOYXRpdmUgPSB7XG4gIGxheW91dD86ICdmaXhlZCdcbiAgLyoqXG4gICAqIFRoZSB3aWR0aCBhbmQgdGhlIGhlaWdodCB2YWx1ZXMgYXJlIHRoZSB2YWx1ZXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIGFzcGVjdCByYXRpbyBvbSB0aGUgaW1hZ2VcbiAgICogYW5kIHJlc2VydmUgc3BhY2UgaW4gdGhlIGJyb3dzZXIuXG4gICAqXG4gICAqIFdpdGggbGF5b3V0PWZpeGVkIGFuZCBubyBzdHlsaW5nIHRoZSBpbWFnZSBpcyByZW5kZXJlZCBhdCB0aGUgd2lkdGggYW5kIGhlaWdodCBnaXZlbi5cbiAgICovXG4gIHdpZHRoOiBudW1iZXJcbiAgaGVpZ2h0OiBudW1iZXJcbn1cblxuLyoqXG4gKiBXaGVuIGBpbnRyaW5zaWNgLCB0aGUgaW1hZ2Ugd2lsbCBzY2FsZSB0aGUgZGltZW5zaW9ucyBkb3duIGZvciBzbWFsbGVyIHZpZXdwb3J0cyBidXQgbWFpbnRhaW4gdGhlXG4gKiBvcmlnaW5hbCBkaW1lbnNpb25zICh0aGUgd2lkdGggYW5kIGhlaWdodCBnaXZlbikgZm9yIGxhcmdlciB2aWV3cG9ydHMuXG4gKlxuICogYGBgdHN4XG4gKiA8aW1nIHN0eWxlPXt7IHdpZHRoOiAnMTAwJScsIGhlaWdodDogJ2F1dG8nIG1heFdpZHRoOiBgJHt3aWR0aH1weGAgfX1cbiAqIGBgYFxuICpcbiAqIFVzZSBjYXNlOiBXaGVuIHlvdSB3YW50IHRvIHJlbmRlciBhbiBpbWFnZSBidXQgZG9uJ3Qgc2NhbGUgaXQgdXAuXG4gKi9cbnR5cGUgTGF5b3V0VHlwZUludHJpbnNpYyA9IHtcbiAgbGF5b3V0PzogJ2ludHJpbnNpYydcblxuICB3aWR0aDogbnVtYmVyXG4gIGhlaWdodDogbnVtYmVyXG5cbiAgc3R5bGU/OiBPbWl0PEltZ0VsZW1lbnRTdHlsZSwgJ3dpZHRoJyB8ICdoZWlnaHQnIHwgJ21heFdpZHRoJz5cbn1cblxuLyoqXG4gKiBXaGVuIGByZXNwb25zaXZlYCwgdGhlIGltYWdlIHdpbGwgc2NhbGUgdGhlIGRpbWVuc2lvbnMgZG93biBmb3Igc21hbGxlciB2aWV3cG9ydHMgYW5kIHNjYWxlIHVwXG4gKiBmb3IgbGFyZ2VyIHZpZXdwb3J0cy5cbiAqXG4gKiBgYGB0c3hcbiAqIDxpbWcgc3R5bGU9e3sgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnYXV0bycgbWF4V2lkdGg6ICR7d2lkdGh9IH19XG4gKiBgYGBcbiAqXG4gKiBVc2UgY2FzZTogV2hlbiB5b3Ugd2FudCB0aGUgaW1hZ2UgdG8gZmlsbCBpdCdzIHBhcmVudCBjb250YWluZXIgaW4gd2lkdGhcbiAqL1xudHlwZSBMYXlvdXRUeXBlUmVzcG9uc2l2ZSA9IHtcbiAgbGF5b3V0PzogJ3Jlc3BvbnNpdmUnXG5cbiAgd2lkdGg6IG51bWJlclxuICBoZWlnaHQ6IG51bWJlclxuXG4gIHN0eWxlPzogT21pdDxJbWdFbGVtZW50U3R5bGUsICd3aWR0aCcgfCAnaGVpZ2h0Jz5cbn1cblxuLyoqXG4gKiBXaGVuIGBmaWxsYCwgdGhlIGltYWdlIHdpbGwgc3RyZXRjaCBib3RoIHdpZHRoIGFuZCBoZWlnaHQgdG8gdGhlIGRpbWVuc2lvbnMgb2YgdGhlIHBhcmVudFxuICogZWxlbWVudCwgcGFpcmVkIHdpdGggdGhlIG9iamVjdEZpdCBwcm9wZXJ0eS5cbiAqXG4gKiBTaW5jZSB0aGUgd2lkdGgvaGVpZ2h0IGlzbid0IHJlcXVpcmVkIHRvIHJlbmRlciB0aGUgcGFnZSB3ZSBjYW4gb21pdCBpdC5cbiAqXG4gKiBgYGB0c3hcbiAqIDxpbWcgd2lkdGg9e3dpZHRofSBoZWlnaHQ9e2hlaWdodH0gc3R5bGU9e3sgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfX1cbiAqIGBgYFxuICpcbiAqIFVzZSBjYXNlOiBXaGVuIHlvdSBoYXZlIGEgcHJlZGVmaW5lZCBhcmVhIHNldCB0byByZW5kZXIgYW4gaW1hZ2VcbiAqL1xudHlwZSBMYXlvdXRUeXBlRmlsbCA9IHtcbiAgbGF5b3V0PzogJ2ZpbGwnXG5cbiAgd2lkdGg/OiBuZXZlclxuICBoZWlnaHQ/OiBuZXZlclxuXG4gIC8vIG9iamVjdEZpdDogSW1nRWxlbWVudFN0eWxlWydvYmplY3RGaXQnXVxuICBzdHlsZT86IE9taXQ8SW1nRWxlbWVudFN0eWxlLCAnd2lkdGgnIHwgJ2hlaWdodCc+XG59XG5cbmV4cG9ydCB0eXBlIFN0cmluZ0ltYWdlUHJvcHMgPSB7XG4gIHNyYzogc3RyaW5nXG59ICYgKExheW91dFR5cGVGaWxsIHwgTGF5b3V0VHlwZVJlc3BvbnNpdmUgfCBMYXlvdXRUeXBlTmF0aXZlIHwgTGF5b3V0VHlwZUludHJpbnNpYykgJlxuICAoXG4gICAgfCB7IHBsYWNlaG9sZGVyPzogRXhjbHVkZTxQbGFjZWhvbGRlclZhbHVlLCAnYmx1cic+OyBibHVyRGF0YVVSTD86IG5ldmVyIH1cbiAgICB8IHsgcGxhY2Vob2xkZXI6ICdibHVyJzsgYmx1ckRhdGFVUkw6IHN0cmluZyB9XG4gIClcblxuZXhwb3J0IHR5cGUgT2JqZWN0SW1hZ2VQcm9wcyA9IHtcbiAgc3JjOiBTdGF0aWNJbXBvcnRcbiAgd2lkdGg/OiBudW1iZXJcbiAgaGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nXG4gIGxheW91dD86IExheW91dFZhbHVlXG4gIHBsYWNlaG9sZGVyPzogUGxhY2Vob2xkZXJWYWx1ZVxuICBibHVyRGF0YVVSTD86IG5ldmVyXG59XG5cbmV4cG9ydCB0eXBlIEltYWdlUHJvcHMgPSBCYXNlSW1hZ2VQcm9wcyAmIChTdHJpbmdJbWFnZVByb3BzIHwgT2JqZWN0SW1hZ2VQcm9wcylcblxuZXhwb3J0IHR5cGUgU3RyaW5nSW1hZ2UgPSBCYXNlSW1hZ2VQcm9wcyAmIFN0cmluZ0ltYWdlUHJvcHNcbmV4cG9ydCB0eXBlIE9iamVjdEltYWdlID0gQmFzZUltYWdlUHJvcHMgJiBPYmplY3RJbWFnZVByb3BzXG5cbmNvbnN0IEltYWdlID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MSW1hZ2VFbGVtZW50LCBJbWFnZVByb3BzPihcbiAgKFxuICAgIHtcbiAgICAgIHNyYyxcbiAgICAgIHNpemVzOiBzaXplc09yaWcsXG4gICAgICB1bm9wdGltaXplZCA9IGZhbHNlLFxuICAgICAgbG9hZGluZyxcbiAgICAgIGxheW91dCA9ICdyZXNwb25zaXZlJyxcbiAgICAgIHF1YWxpdHksXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICAgIHN0eWxlLFxuICAgICAgbG9hZGVyID0gZGVmYXVsdEltYWdlTG9hZGVyLFxuICAgICAgcGxhY2Vob2xkZXIgPSAnZW1wdHknLFxuICAgICAgYmx1ckRhdGFVUkwsXG4gICAgICAuLi5pbWdQcm9wc1xuICAgIH0sXG4gICAgZm9yd2FyZGVkUmVmLFxuICApID0+IHtcbiAgICBjb25zdCByZWYgPSB1c2VGb3J3YXJkZWRSZWYoZm9yd2FyZGVkUmVmKVxuXG4gICAgY29uc3Qgc2l6ZXMgPVxuICAgICAgZ2VuZXJhdGVTaXplc1N0cmluZyhsYXlvdXQgPT09ICdmaXhlZCcgJiYgd2lkdGggJiYgIXNpemVzT3JpZyA/IGAke3dpZHRofXB4YCA6IHNpemVzT3JpZykgPz9cbiAgICAgICc1MHZ3J1xuXG4gICAgLy8gSWYgbm8gcmVzcG9uc2l2ZSBzaXplcyBhcmUgZ2l2ZW4sIHdlJ3JlIGRlZmF1bHRpbmcgdG8gNTB2dyBvbiBtb2JpbGVcbiAgICAvLyBjb25zdCBbc2l6ZXMsIHNldFNpemVzXSA9IHVzZVN0YXRlKHRvU2l6ZXNTdHJpbmcoc2l6ZXNPcmlnKSA/PyBgNTB2d2ApXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKCFyZWYuY3VycmVudCB8fCBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nIHx8IChsYXlvdXQgPT09ICdmaXhlZCcgJiYgd2lkdGgpKVxuICAgICAgICByZXR1cm4gKCkgPT4ge31cblxuICAgICAgLy8gV2FybiB0aGUgdXNlciB3aGVuIGhlIGlzbid0IHByb3ZpZGluZyBzaXplcyBhbmQgaG93IHRvIHByb2NlZWRcbiAgICAgIGNvbnN0IHJvID0gbmV3IFJlc2l6ZU9ic2VydmVyKChbZW50cnldKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnR2dyA9IGVudHJ5LmNvbnRlbnRSZWN0LndpZHRoXG5cbiAgICAgICAgbGV0IHJhdGlvOiBudW1iZXJcblxuICAgICAgICBsZXQgbXNnID0gJydcbiAgICAgICAgY29uc3QgW2JyZWFrcG9pbnQsIHNpemVdID0gc2l6ZXNFbnRyaWVzKHNpemVzT3JpZykuZmluZCgoW3NdKSA9PlxuICAgICAgICAgIHMgPT09IDAgPyB0cnVlIDogd2luZG93Lm1hdGNoTWVkaWEoYChtaW4td2lkdGg6ICR7c30pYCksXG4gICAgICAgICkgPz8gWzAsICcxMDB2dyddXG4gICAgICAgIGlmIChzaXplKSB7XG4gICAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBgd2lkdGg6ICR7c2l6ZX1gKVxuICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWwpXG4gICAgICAgICAgY29uc3QgbWVhc3VyZWRXaWR0aCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoXG4gICAgICAgICAgLy8gZWwucmVtb3ZlKClcbiAgICAgICAgICByYXRpbyA9IG1lYXN1cmVkV2lkdGggKiogMiAvIGN1cnJlbnR2dyAqKiAyXG4gICAgICAgICAgbXNnICs9IGBJbWFnZSBoYXMgXCJzaXplc1wiIHByb3BlcnR5IHNldCwgYnV0IHNpemUgJ21pbi13aWR0aCgke2JyZWFrcG9pbnR9cHgpICR7c2l6ZX0nIGlzIGluY29ycmVjdC5gXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbXNnICs9IGBJbWFnZSBoYXMgbm8gXCJzaXplc1wiIHByb3BlcnR5IHNldC5gXG4gICAgICAgICAgcmF0aW8gPSAod2luZG93LmlubmVyV2lkdGggKiAwLjUpICoqIDIgLyBjdXJyZW50dncgKiogMlxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgcm91bmQgPSAobnI6IG51bWJlcikgPT4gTWF0aC5yb3VuZChuciAqIDEwMCkgLyAxMDBcbiAgICAgICAgaWYgKHJhdGlvID4gMS4yKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogJHttc2d9IEN1cnJlbnRseSBkb3dubG9hZGluZyBhbiBpbWFnZSB0aGF0IGhhcyAke3JvdW5kKFxuICAgICAgICAgICAgICByYXRpbyxcbiAgICAgICAgICAgICl9eCB0b28gbWFueSBwaXhlbHNgLFxuICAgICAgICAgICAgZW50cnkudGFyZ2V0LFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIGlmIChyYXRpbyA8IDAuOCkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06ICR7bXNnfSBDdXJyZW50bHkgZG93bmxvYWRpbmcgYW4gaW1hZ2UgdGhhdCBoYXMgJHtyb3VuZChcbiAgICAgICAgICAgICAgMSAvIHJhdGlvLFxuICAgICAgICAgICAgKX14IHRvbyBmZXcgcGl4ZWxzYCxcbiAgICAgICAgICAgIGVudHJ5LnRhcmdldCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByby5vYnNlcnZlKHJlZi5jdXJyZW50KVxuXG4gICAgICByZXR1cm4gKCkgPT4gcm8uZGlzY29ubmVjdCgpXG4gICAgfSwgW2xheW91dCwgcmVmLCBzaXplc09yaWcsIHNyYywgd2lkdGhdKVxuXG4gICAgbGV0IHN0YXRpY1NyYyA9ICcnXG4gICAgaWYgKGlzU3RhdGljSW1wb3J0KHNyYykpIHtcbiAgICAgIGNvbnN0IHN0YXRpY0ltYWdlRGF0YSA9IGlzU3RhdGljUmVxdWlyZShzcmMpID8gc3JjLmRlZmF1bHQgOiBzcmNcbiAgICAgIGlmICghc3RhdGljSW1hZ2VEYXRhLnNyYykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogQW4gb2JqZWN0IHNob3VsZCBvbmx5IGJlIHBhc3NlZCB0byB0aGUgaW1hZ2UgY29tcG9uZW50IHNyYyBwYXJhbWV0ZXIgaWYgaXQgY29tZXMgZnJvbSBhIHN0YXRpYyBpbWFnZSBpbXBvcnQuIEl0IG11c3QgaW5jbHVkZSBzcmMuIFJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICBzdGF0aWNJbWFnZURhdGEsXG4gICAgICAgICAgKX1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBibHVyRGF0YVVSTCA9IGJsdXJEYXRhVVJMIHx8IHN0YXRpY0ltYWdlRGF0YS5ibHVyRGF0YVVSTFxuICAgICAgc3RhdGljU3JjID0gc3RhdGljSW1hZ2VEYXRhLnNyY1xuICAgICAgaWYgKCFsYXlvdXQgfHwgbGF5b3V0ICE9PSAnZmlsbCcpIHtcbiAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0IHx8IHN0YXRpY0ltYWdlRGF0YS5oZWlnaHRcbiAgICAgICAgd2lkdGggPSB3aWR0aCB8fCBzdGF0aWNJbWFnZURhdGEud2lkdGhcbiAgICAgICAgaWYgKCFzdGF0aWNJbWFnZURhdGEuaGVpZ2h0IHx8ICFzdGF0aWNJbWFnZURhdGEud2lkdGgpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBBbiBvYmplY3Qgc2hvdWxkIG9ubHkgYmUgcGFzc2VkIHRvIHRoZSBpbWFnZSBjb21wb25lbnQgc3JjIHBhcmFtZXRlciBpZiBpdCBjb21lcyBmcm9tIGEgc3RhdGljIGltYWdlIGltcG9ydC4gSXQgbXVzdCBpbmNsdWRlIGhlaWdodCBhbmQgd2lkdGguIFJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgIHN0YXRpY0ltYWdlRGF0YSxcbiAgICAgICAgICAgICl9YCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgc3JjID0gdHlwZW9mIHNyYyA9PT0gJ3N0cmluZycgPyBzcmMgOiBzdGF0aWNTcmNcblxuICAgIGNvbnN0IHdpZHRoSW50ID0gZ2V0SW50KHdpZHRoKVxuICAgIGNvbnN0IGhlaWdodEludCA9IGdldEludChoZWlnaHQpXG4gICAgY29uc3QgcXVhbGl0eUludCA9IGdldEludChxdWFsaXR5KVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICghc3JjKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBJbWFnZSBpcyBtaXNzaW5nIHJlcXVpcmVkIFwic3JjXCIgcHJvcGVydHkuIE1ha2Ugc3VyZSB5b3UgcGFzcyBcInNyY1wiIGluIHByb3BzIHRvIHRoZSBcXGBAcmVhY2hkaWdpdGFsL2ltYWdlXFxgIGNvbXBvbmVudC4gUmVjZWl2ZWQ6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICB7IHdpZHRoLCBoZWlnaHQsIHF1YWxpdHkgfSxcbiAgICAgICAgICApfWAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGlmICghVkFMSURfTEFZT1VUX1ZBTFVFUy5pbmNsdWRlcyhsYXlvdXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBJbWFnZSB3aXRoIHNyYyBcIiR7c3JjfVwiIGhhcyBpbnZhbGlkIFwibGF5b3V0XCIgcHJvcGVydHkuIFByb3ZpZGVkIFwiJHtsYXlvdXR9XCIgc2hvdWxkIGJlIG9uZSBvZiAke1ZBTElEX0xBWU9VVF9WQUxVRVMubWFwKFxuICAgICAgICAgICAgU3RyaW5nLFxuICAgICAgICAgICkuam9pbignLCcpfS5gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgICh0eXBlb2Ygd2lkdGhJbnQgIT09ICd1bmRlZmluZWQnICYmIE51bWJlci5pc05hTih3aWR0aEludCkpIHx8XG4gICAgICAgICh0eXBlb2YgaGVpZ2h0SW50ICE9PSAndW5kZWZpbmVkJyAmJiBOdW1iZXIuaXNOYU4oaGVpZ2h0SW50KSlcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogSW1hZ2Ugd2l0aCBzcmMgXCIke3NyY31cIiBoYXMgaW52YWxpZCBcIndpZHRoXCIgb3IgXCJoZWlnaHRcIiBwcm9wZXJ0eS4gVGhlc2Ugc2hvdWxkIGJlIG51bWVyaWMgdmFsdWVzLmAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGlmICghVkFMSURfTE9BRElOR19WQUxVRVMuaW5jbHVkZXMobG9hZGluZykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEltYWdlIHdpdGggc3JjIFwiJHtzcmN9XCIgaGFzIGludmFsaWQgXCJsb2FkaW5nXCIgcHJvcGVydHkuIFByb3ZpZGVkIFwiJHtsb2FkaW5nfVwiIHNob3VsZCBiZSBvbmUgb2YgJHtWQUxJRF9MT0FESU5HX1ZBTFVFUy5tYXAoXG4gICAgICAgICAgICBTdHJpbmcsXG4gICAgICAgICAgKS5qb2luKCcsJyl9LmAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGlmIChwbGFjZWhvbGRlciA9PT0gJ2JsdXInKSB7XG4gICAgICAgIGlmIChsYXlvdXQgIT09ICdmaWxsJyAmJiAod2lkdGhJbnQgfHwgMCkgKiAoaGVpZ2h0SW50IHx8IDApIDwgMTYwMCkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEltYWdlIHdpdGggc3JjIFwiJHtzcmN9XCIgaXMgc21hbGxlciB0aGFuIDQweDQwLiBDb25zaWRlciByZW1vdmluZyB0aGUgXCJwbGFjZWhvbGRlcj0nYmx1cidcIiBwcm9wZXJ0eSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLmAsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIGlmICghYmx1ckRhdGFVUkwpIHtcbiAgICAgICAgICBjb25zdCBWQUxJRF9CTFVSX0VYVCA9IFsnanBlZycsICdwbmcnLCAnd2VicCddIC8vIHNob3VsZCBtYXRjaCBuZXh0LWltYWdlLWxvYWRlclxuXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogSW1hZ2Ugd2l0aCBzcmMgXCIke3NyY31cIiBoYXMgXCJwbGFjZWhvbGRlcj0nYmx1cidcIiBwcm9wZXJ0eSBidXQgaXMgbWlzc2luZyB0aGUgXCJibHVyRGF0YVVSTFwiIHByb3BlcnR5LlxuICAgICAgICAgIFBvc3NpYmxlIHNvbHV0aW9uczpcbiAgICAgICAgICAgIC0gQWRkIGEgXCJibHVyRGF0YVVSTFwiIHByb3BlcnR5LCB0aGUgY29udGVudHMgc2hvdWxkIGJlIGEgc21hbGwgRGF0YSBVUkwgdG8gcmVwcmVzZW50IHRoZSBpbWFnZVxuICAgICAgICAgICAgLSBDaGFuZ2UgdGhlIFwic3JjXCIgcHJvcGVydHkgdG8gYSBzdGF0aWMgaW1wb3J0IHdpdGggb25lIG9mIHRoZSBzdXBwb3J0ZWQgZmlsZSB0eXBlczogJHtWQUxJRF9CTFVSX0VYVC5qb2luKFxuICAgICAgICAgICAgICAnLCcsXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgLSBSZW1vdmUgdGhlIFwicGxhY2Vob2xkZXJcIiBwcm9wZXJ0eSwgZWZmZWN0aXZlbHkgbm8gYmx1ciBlZmZlY3RcbiAgICAgICAgICBSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3BsYWNlaG9sZGVyLWJsdXItZGF0YS11cmxgLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygd2lkdGhJbnQgPT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBoZWlnaHRJbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAobGF5b3V0ID09PSAnZmlsbCcpIHtcbiAgICAgICAgLy8gaGFuZGxlIGZpbGxcbiAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAvLyA8SW1hZ2Ugc3JjPVwiaS5wbmdcIiAvPlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogSW1hZ2Ugd2l0aCBzcmMgXCIke3NyY31cIiBtdXN0IHVzZSBcIndpZHRoXCIgYW5kIFwiaGVpZ2h0XCIgcHJvcGVydGllcyBvciBcImxheW91dD0nZmlsbCdcIiBwcm9wZXJ0eS5gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgbG9hZGluZyA/Pz0gJ2xhenknXG4gICAgaWYgKHNyYyAmJiBzcmMuc3RhcnRzV2l0aCgnZGF0YTonKSkge1xuICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9EYXRhX1VSSXNcbiAgICAgIHVub3B0aW1pemVkID0gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMzeCA9IGdlbmVyYXRlU291cmNlQXR0cnMoe1xuICAgICAgc3JjLFxuICAgICAgbGF5b3V0OiBsYXlvdXQgYXMgTGF5b3V0VmFsdWUsXG4gICAgICBsb2FkZXIsXG4gICAgICBxdWFsaXR5OiBxdWFsaXR5SW50LFxuICAgICAgc2l6ZXMsXG4gICAgICB3aWR0aDogd2lkdGhJbnQsXG4gICAgICBzY2FsZTogMS41LFxuICAgIH0pXG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzMnggPSBnZW5lcmF0ZVNvdXJjZUF0dHJzKHtcbiAgICAgIHNyYyxcbiAgICAgIGxheW91dDogbGF5b3V0IGFzIExheW91dFZhbHVlLFxuICAgICAgbG9hZGVyLFxuICAgICAgcXVhbGl0eTogcXVhbGl0eUludCxcbiAgICAgIHNpemVzLFxuICAgICAgd2lkdGg6IHdpZHRoSW50LFxuICAgICAgc2NhbGU6IDEsXG4gICAgfSlcblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMxeCA9IGdlbmVyYXRlU291cmNlQXR0cnMoe1xuICAgICAgc3JjLFxuICAgICAgbGF5b3V0OiBsYXlvdXQgYXMgTGF5b3V0VmFsdWUsXG4gICAgICBsb2FkZXIsXG4gICAgICBxdWFsaXR5OiBxdWFsaXR5SW50LFxuICAgICAgc2l6ZXMsXG4gICAgICB3aWR0aDogd2lkdGhJbnQsXG4gICAgICBzY2FsZTogMC41LFxuICAgIH0pXG5cbiAgICBpZiAobGF5b3V0ICE9PSAnZml4ZWQnICYmICFzdHlsZSkgc3R5bGUgPSB7fVxuICAgIGlmIChsYXlvdXQgPT09ICdyZXNwb25zaXZlJykgc3R5bGUgPSB7IC4uLnN0eWxlLCB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICdhdXRvJyB9XG4gICAgaWYgKGxheW91dCA9PT0gJ2ludHJpbnNpYycpIHN0eWxlID0geyAuLi5zdHlsZSwgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnYXV0bycsIG1heFdpZHRoOiB3aWR0aCB9XG4gICAgaWYgKGxheW91dCA9PT0gJ2ZpbGwnKSBzdHlsZSA9IHsgLi4uc3R5bGUsIHdpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICB7dW5vcHRpbWl6ZWQgPyAoXG4gICAgICAgICAgPGltZyByZWY9e3JlZn0gey4uLmltZ1Byb3BzfSBzcmM9e3NyY30gd2lkdGg9e3dpZHRofSBoZWlnaHQ9e2hlaWdodH0gc3R5bGU9e3N0eWxlfSAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxwaWN0dXJlPlxuICAgICAgICAgICAgPHNvdXJjZSBtZWRpYT0nKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMi41KScgey4uLmF0dHJpYnV0ZXMzeH0gLz5cbiAgICAgICAgICAgIDxzb3VyY2UgbWVkaWE9Jygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDEuNSknIHsuLi5hdHRyaWJ1dGVzMnh9IC8+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIHJlZj17cmVmfVxuICAgICAgICAgICAgICB7Li4uaW1nUHJvcHN9XG4gICAgICAgICAgICAgIHsuLi5hdHRyaWJ1dGVzMXh9XG4gICAgICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAgICAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgICAgICAgICAgaGVpZ2h0PXtoZWlnaHR9XG4gICAgICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9waWN0dXJlPlxuICAgICAgICApfVxuICAgICAgICB7bG9hZGluZyA9PT0gJ2VhZ2VyJyAmJiAoXG4gICAgICAgICAgPEhlYWQ+XG4gICAgICAgICAgICA8bGlua1xuICAgICAgICAgICAgICBrZXk9e2BfX25pbWctMngtJHthdHRyaWJ1dGVzMXguc3JjU2V0fSR7YXR0cmlidXRlczF4LnNpemVzfWB9XG4gICAgICAgICAgICAgIHJlbD0ncHJlbG9hZCdcbiAgICAgICAgICAgICAgYXM9J2ltYWdlJ1xuICAgICAgICAgICAgICBtZWRpYT0nKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMi41KSdcbiAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBpbWFnZXNyY3NldCBpcyBub3QgeWV0IGluIHRoZSBsaW5rIGVsZW1lbnQgdHlwZVxuICAgICAgICAgICAgICBpbWFnZXNyY3NldD17YXR0cmlidXRlczF4LnNyY1NldH1cbiAgICAgICAgICAgICAgaW1hZ2VzaXplcz17c2l6ZXN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSGVhZD5cbiAgICAgICAgKX1cbiAgICAgIDwvPlxuICAgIClcbiAgfSxcbilcbkltYWdlLmRpc3BsYXlOYW1lID0gJ05leHRQaWN0dXJlJ1xuXG5leHBvcnQgeyBJbWFnZSB9XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../components/Image.tsx\n");
19
+
20
+ /***/ })
21
+
22
+ });
@@ -0,0 +1,22 @@
1
+ /*
2
+ * ATTENTION: An "eval-source-map" devtool has been used.
3
+ * This devtool is neither made for production nor for readable output files.
4
+ * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
5
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6
+ * or disable the default devtool with "devtool: false".
7
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8
+ */
9
+ self["webpackHotUpdate_N_E"]("pages/index",{
10
+
11
+ /***/ "../components/Image.tsx":
12
+ /*!*******************************!*\
13
+ !*** ../components/Image.tsx ***!
14
+ \*******************************/
15
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
16
+
17
+ "use strict";
18
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isStaticRequire\": function() { return /* binding */ isStaticRequire; },\n/* harmony export */ \"isStaticImageData\": function() { return /* binding */ isStaticImageData; },\n/* harmony export */ \"isStaticImport\": function() { return /* binding */ isStaticImport; },\n/* harmony export */ \"getInt\": function() { return /* binding */ getInt; },\n/* harmony export */ \"Image\": function() { return /* binding */ Image; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"../../../node_modules/react/jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @bedrock-layout/use-forwarded-ref */ \"../../../node_modules/@bedrock-layout/use-forwarded-ref/lib/index.m.js\");\n/* harmony import */ var next_dist_next_server_server_image_config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/next-server/server/image-config */ \"../../../node_modules/next/dist/next-server/server/image-config.js\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! next/head */ \"../../../node_modules/next/head.js\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _config_config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../config/config */ \"../config/config.ts\");\n/* module decorator */ module = __webpack_require__.hmd(module);\n\n\n\n\n\nvar _jsxFileName = \"/Users/paulhachmang/Sites/reachdigital-next/packages/image/components/Image.tsx\",\n _s = $RefreshSig$();\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0,_Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/* eslint-disable prefer-const */\n\n/* eslint-disable no-param-reassign */\n\n/* eslint-disable @next/next/no-img-element */\n\n/* eslint-disable jsx-a11y/alt-text */\n\n\n\n\n\n\nif (false) {}\n\nconst VALID_LOADING_VALUES = ['lazy', 'eager', undefined];\nconst loaders = new Map([['imgix', _config_config__WEBPACK_IMPORTED_MODULE_6__.imgixLoader], ['cloudinary', _config_config__WEBPACK_IMPORTED_MODULE_6__.cloudinaryLoader], ['akamai', _config_config__WEBPACK_IMPORTED_MODULE_6__.akamaiLoader], ['default', _config_config__WEBPACK_IMPORTED_MODULE_6__.defaultLoader]]);\nconst VALID_LAYOUT_VALUES = ['fill', 'responsive', 'intrinsic', 'fixed'];\nfunction isStaticRequire(src) {\n return src.default !== undefined;\n}\nfunction isStaticImageData(src) {\n return src.src !== undefined;\n}\nfunction isStaticImport(src) {\n return typeof src === 'object' && (isStaticRequire(src) || isStaticImageData(src));\n} // sort smallest to largest\n\nconst allSizes = [..._config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes, ..._config_config__WEBPACK_IMPORTED_MODULE_6__.configImageSizes];\n_config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes.sort((a, b) => a - b);\nallSizes.sort((a, b) => a - b);\n\nfunction getWidths(width, layout, sizes = '', scale) {\n if (sizes && layout === 'fill' || layout === 'responsive') {\n // Find all the \"vw\" percent sizes used in the sizes prop\n const viewportWidthRe = /(^|\\s)(1?\\d?\\d)vw/g;\n const percentSizes = []; // eslint-disable-next-line no-cond-assign\n\n for (let match; match = viewportWidthRe.exec(sizes); match) {\n var _match;\n\n percentSizes.push(parseInt((_match = match) === null || _match === void 0 ? void 0 : _match[2], 10));\n }\n\n if (percentSizes.length) {\n const smallestRatio = Math.min(...percentSizes) * 0.01;\n return {\n widths: allSizes.filter(s => s >= _config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes[0] * smallestRatio),\n kind: 'w'\n };\n } // Find all the \"px\" sizes used in the sizes prop\n\n\n const pxWidthRe = /(^|\\s)(1?\\d+)px/g;\n const pxSizes = []; // eslint-disable-next-line no-cond-assign\n\n for (let match; match = pxWidthRe.exec(sizes); match) {\n var _match2;\n\n pxSizes.push(parseInt((_match2 = match) === null || _match2 === void 0 ? void 0 : _match2[2], 10));\n }\n\n if (pxSizes.length) {\n return {\n widths: pxSizes.map(pxSize => {\n var _allSizes$filter, _allSizes$filter2;\n\n const scaled = (_allSizes$filter = allSizes.filter(s => s * scale > pxSize)) === null || _allSizes$filter === void 0 ? void 0 : _allSizes$filter[0];\n const dpr2 = (_allSizes$filter2 = allSizes.filter(s => s > pxSize)) === null || _allSizes$filter2 === void 0 ? void 0 : _allSizes$filter2[0];\n return scale > 1 ? Math.max(scaled, dpr2) : Math.min(scaled, dpr2);\n }),\n kind: 'w'\n };\n }\n\n return {\n widths: allSizes,\n kind: 'w'\n };\n }\n\n if (typeof width !== 'number' || layout === 'fill') {\n return {\n widths: _config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes,\n kind: 'w'\n };\n }\n\n const widths = [...new Set( // > This means that most OLED screens that say they are 3x resolution,\n // > are actually 3x in the green color, but only 1.5x in the red and\n // > blue colors. Showing a 3x resolution image in the app vs a 2x\n // > resolution image will be visually the same, though the 3x image\n // > takes significantly more data. Even true 3x resolution screens are\n // > wasteful as the human eye cannot see that level of detail without\n // > something like a magnifying glass.\n // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html\n [width, width * 2\n /* , width * 3*/\n ].map(w => allSizes.find(p => p >= w) || allSizes[allSizes.length - 1]))];\n return {\n widths,\n kind: 'x'\n };\n}\n\nfunction generateSourceAttrs({\n src,\n layout,\n width,\n quality = 44,\n sizes,\n loader,\n scale\n}) {\n const {\n widths,\n kind\n } = getWidths(width, layout, sizes, scale);\n return {\n sizes: !sizes && kind === 'w' ? `50vw` : sizes,\n srcSet: widths.map((w, i) => `${loader({\n src,\n quality,\n width: w\n })} ${kind === 'w' ? Math.round(w * scale) : i + 1}${kind}`).join(', ')\n };\n}\n\nfunction getInt(x) {\n if (typeof x === 'number') {\n return x;\n }\n\n if (typeof x === 'string') {\n return parseInt(x, 10);\n }\n\n return undefined;\n}\n\nfunction defaultImageLoader(loaderProps) {\n const load = loaders.get(_config_config__WEBPACK_IMPORTED_MODULE_6__.configLoader);\n\n if (load) {\n return load(_objectSpread({\n root: _config_config__WEBPACK_IMPORTED_MODULE_6__.configPath\n }, loaderProps));\n }\n\n throw new Error(`[@reachdigital/image]: Unknown \"loader\" found in \"next.config.js\". Expected: ${next_dist_next_server_server_image_config__WEBPACK_IMPORTED_MODULE_3__.VALID_LOADERS.join(', ')}. Received: ${_config_config__WEBPACK_IMPORTED_MODULE_6__.configLoader}`);\n} // See https://stackoverflow.com/q/39777833/266535 for why we use this ref\n// handler instead of the img's onLoad attribute.\n\n\nfunction removePlaceholder(img, placeholder) {\n if (placeholder === 'blur' && img) {\n const handleLoad = () => {\n if (!img.src.startsWith('data:')) {\n const p = 'decode' in img ? img.decode() : Promise.resolve(); // eslint-disable-next-line @typescript-eslint/no-floating-promises\n\n p.catch(() => {}).then(() => {\n img.style.filter = 'none';\n img.style.backgroundSize = 'none';\n img.style.backgroundImage = 'none';\n });\n }\n };\n\n if (img.complete) {\n // If the real image fails to load, this will still remove the placeholder.\n // This is the desired behavior for now, and will be revisited when error\n // handling is worked on for the image component itself.\n handleLoad();\n } else {\n img.onload = handleLoad;\n }\n }\n}\n/** Checks whether an image is currently in the viewport */\n\n\nfunction isInViewport(elem) {\n const {\n top,\n right,\n bottom,\n left\n } = elem.getBoundingClientRect();\n return bottom >= 0 && right >= 0 && top <= window.innerHeight && left <= window.innerWidth;\n}\n\nfunction isSizesRecord(sizes) {\n return typeof sizes === 'object';\n}\n\nfunction sizesEntries(sizes) {\n if (isSizesRecord(sizes)) {\n return Object.entries(sizes).map(([breakpoint, size]) => [Number(breakpoint), size]).sort(([sizeA], [sizeB]) => sizeB - sizeA);\n }\n\n return [[0, sizes]];\n}\n\nfunction generateSizesString(sizes) {\n return sizesEntries(sizes).map(([breakpoint, size]) => {\n if (breakpoint === 0) return size;\n return `(min-width: ${breakpoint}px) ${size}`;\n }).join(', ');\n}\n/** Since we're handling stuff ourselves we omit some stuff */\n\n\nconst Image = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().forwardRef(_c = _s((_ref, forwardedRef) => {\n var _generateSizesString, _loading;\n\n _s();\n\n let {\n src,\n sizes: sizesOrig,\n unoptimized = false,\n loading,\n layout = 'responsive',\n quality,\n width,\n height,\n style,\n loader = defaultImageLoader,\n placeholder = 'empty',\n blurDataURL\n } = _ref,\n imgProps = (0,_Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__.default)(_ref, [\"src\", \"sizes\", \"unoptimized\", \"loading\", \"layout\", \"quality\", \"width\", \"height\", \"style\", \"loader\", \"placeholder\", \"blurDataURL\"]);\n\n const ref = (0,_bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__.default)(forwardedRef);\n const sizes = (_generateSizesString = generateSizesString(layout === 'fixed' && width && !sizesOrig ? `${width}px` : sizesOrig)) !== null && _generateSizesString !== void 0 ? _generateSizesString : '50vw'; // If no responsive sizes are given, we're defaulting to 50vw on mobile\n // const [sizes, setSizes] = useState(toSizesString(sizesOrig) ?? `50vw`)\n\n (0,react__WEBPACK_IMPORTED_MODULE_5__.useEffect)(() => {\n if (!ref.current || false) return () => {}; // Warn the user when he isn't providing sizes and how to proceed\n\n const ro = new ResizeObserver(([entry]) => {\n var _sizesEntries$find;\n\n const currentvw = entry.contentRect.width;\n let ratio;\n let msg = '';\n const [breakpoint, size] = (_sizesEntries$find = sizesEntries(sizesOrig).find(([s]) => s === 0 ? true : window.matchMedia(`(min-width: ${s})`))) !== null && _sizesEntries$find !== void 0 ? _sizesEntries$find : [0, '100vw'];\n\n if (size) {\n const el = document.createElement('div');\n el.setAttribute('style', `width: ${size}`);\n document.body.appendChild(el);\n const measuredWidth = el.getBoundingClientRect().width; // el.remove()\n\n ratio = measuredWidth ** 2 / currentvw ** 2;\n msg += `Image has \"sizes\" property set, but size 'min-width(${breakpoint}px) ${size}' is incorrect.`;\n } else {\n msg += `Image has no \"sizes\" property set.`;\n ratio = (window.innerWidth * 0.5) ** 2 / currentvw ** 2;\n }\n\n const round = nr => Math.round(nr * 100) / 100;\n\n if (ratio > 1.2) {\n console.warn(`[@reachdigital/image]: ${msg} Currently downloading an image that has ${round(ratio)}x too many pixels`, entry.target);\n } else if (ratio < 0.8) {\n console.warn(`[@reachdigital/image]: ${msg} Currently downloading an image that has ${round(1 / ratio)}x too few pixels`, entry.target);\n }\n });\n ro.observe(ref.current);\n return () => ro.disconnect();\n }, [ref, sizesOrig, src]);\n let staticSrc = '';\n\n if (isStaticImport(src)) {\n const staticImageData = isStaticRequire(src) ? src.default : src;\n\n if (!staticImageData.src) {\n throw new Error(`[@reachdigital/image]: An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(staticImageData)}`);\n }\n\n blurDataURL = blurDataURL || staticImageData.blurDataURL;\n staticSrc = staticImageData.src;\n\n if (!layout || layout !== 'fill') {\n height = height || staticImageData.height;\n width = width || staticImageData.width;\n\n if (!staticImageData.height || !staticImageData.width) {\n throw new Error(`[@reachdigital/image]: An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(staticImageData)}`);\n }\n }\n }\n\n src = typeof src === 'string' ? src : staticSrc;\n const widthInt = getInt(width);\n const heightInt = getInt(height);\n const qualityInt = getInt(quality);\n\n if (true) {\n if (!src) {\n throw new Error(`[@reachdigital/image]: Image is missing required \"src\" property. Make sure you pass \"src\" in props to the \\`@reachdigital/image\\` component. Received: ${JSON.stringify({\n width,\n height,\n quality\n })}`);\n }\n\n if (!VALID_LAYOUT_VALUES.includes(layout)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"layout\" property. Provided \"${layout}\" should be one of ${VALID_LAYOUT_VALUES.map(String).join(',')}.`);\n }\n\n if (typeof widthInt !== 'undefined' && Number.isNaN(widthInt) || typeof heightInt !== 'undefined' && Number.isNaN(heightInt)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"width\" or \"height\" property. These should be numeric values.`);\n }\n\n if (!VALID_LOADING_VALUES.includes(loading)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"loading\" property. Provided \"${loading}\" should be one of ${VALID_LOADING_VALUES.map(String).join(',')}.`);\n }\n\n if (placeholder === 'blur') {\n if (layout !== 'fill' && (widthInt || 0) * (heightInt || 0) < 1600) {\n console.warn(`[@reachdigital/image]: Image with src \"${src}\" is smaller than 40x40. Consider removing the \"placeholder='blur'\" property to improve performance.`);\n }\n\n if (!blurDataURL) {\n const VALID_BLUR_EXT = ['jpeg', 'png', 'webp']; // should match next-image-loader\n\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has \"placeholder='blur'\" property but is missing the \"blurDataURL\" property.\n Possible solutions:\n - Add a \"blurDataURL\" property, the contents should be a small Data URL to represent the image\n - Change the \"src\" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(',')}\n - Remove the \"placeholder\" property, effectively no blur effect\n Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url`);\n }\n }\n }\n\n if (typeof widthInt === 'undefined' && typeof heightInt === 'undefined') {\n if (layout === 'fill') {// handle fill\n } else if (true) {\n // <Image src=\"i.png\" />\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" must use \"width\" and \"height\" properties or \"layout='fill'\" property.`);\n }\n }\n\n (_loading = loading) !== null && _loading !== void 0 ? _loading : loading = 'lazy';\n\n if (src && src.startsWith('data:')) {\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n unoptimized = true;\n }\n\n const attributes3x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 1.5\n });\n const attributes2x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 1\n });\n const attributes1x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 0.5\n });\n if (layout !== 'fixed' && !style) style = {};\n if (layout === 'responsive') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: 'auto'\n });\n if (layout === 'intrinsic') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: 'auto',\n maxWidth: width\n });\n if (layout === 'fill') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: '100%'\n });\n return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [unoptimized ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", _objectSpread(_objectSpread({\n ref: ref\n }, imgProps), {}, {\n src: src,\n width: width,\n height: height,\n style: style\n }), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 608,\n columnNumber: 11\n }, undefined) : /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"picture\", {\n children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"source\", _objectSpread({\n media: \"(-webkit-min-device-pixel-ratio: 2.5)\"\n }, attributes3x), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 611,\n columnNumber: 13\n }, undefined), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"source\", _objectSpread({\n media: \"(-webkit-min-device-pixel-ratio: 1.5)\"\n }, attributes2x), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 612,\n columnNumber: 13\n }, undefined), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", _objectSpread(_objectSpread(_objectSpread({\n ref: ref\n }, imgProps), attributes1x), {}, {\n loading: loading,\n width: width,\n height: height,\n style: style\n }), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 613,\n columnNumber: 13\n }, undefined)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 610,\n columnNumber: 11\n }, undefined), loading === 'eager' && /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_4___default()), {\n children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"link\", {\n rel: \"preload\",\n as: \"image\",\n media: \"(-webkit-min-device-pixel-ratio: 2.5)\" // @ts-expect-error imagesrcset is not yet in the link element type\n ,\n imagesrcset: attributes1x.srcSet,\n imagesizes: sizes\n }, `__nimg-2x-${attributes1x.srcSet}${attributes1x.sizes}`, false, {\n fileName: _jsxFileName,\n lineNumber: 626,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 625,\n columnNumber: 11\n }, undefined)]\n }, void 0, true);\n}, \"uc1ywpQv+s/tGng4xj/L6VVOIq8=\", false, function () {\n return [_bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__.default];\n}));\n_c2 = Image;\nImage.displayName = 'NextPicture';\n\n\nvar _c, _c2;\n\n$RefreshReg$(_c, \"Image$React.forwardRef\");\n$RefreshReg$(_c2, \"Image\");\n\n;\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n var currentExports = module.__proto__.exports;\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uL2NvbXBvbmVudHMvSW1hZ2UudHN4PzJiNmQiXSwibmFtZXMiOlsiVkFMSURfTE9BRElOR19WQUxVRVMiLCJ1bmRlZmluZWQiLCJsb2FkZXJzIiwiTWFwIiwiaW1naXhMb2FkZXIiLCJjbG91ZGluYXJ5TG9hZGVyIiwiYWthbWFpTG9hZGVyIiwiZGVmYXVsdExvYWRlciIsIlZBTElEX0xBWU9VVF9WQUxVRVMiLCJpc1N0YXRpY1JlcXVpcmUiLCJzcmMiLCJkZWZhdWx0IiwiaXNTdGF0aWNJbWFnZURhdGEiLCJpc1N0YXRpY0ltcG9ydCIsImFsbFNpemVzIiwiY29uZmlnRGV2aWNlU2l6ZXMiLCJjb25maWdJbWFnZVNpemVzIiwiYSIsImIiLCJzb3J0IiwiZ2V0V2lkdGhzIiwid2lkdGgiLCJsYXlvdXQiLCJzaXplcyIsInNjYWxlIiwidmlld3BvcnRXaWR0aFJlIiwicGVyY2VudFNpemVzIiwibWF0Y2giLCJleGVjIiwicHVzaCIsInBhcnNlSW50IiwibGVuZ3RoIiwic21hbGxlc3RSYXRpbyIsIk1hdGgiLCJtaW4iLCJ3aWR0aHMiLCJmaWx0ZXIiLCJzIiwia2luZCIsInB4V2lkdGhSZSIsInB4U2l6ZXMiLCJtYXAiLCJweFNpemUiLCJzY2FsZWQiLCJkcHIyIiwibWF4IiwiU2V0IiwidyIsImZpbmQiLCJwIiwiZ2VuZXJhdGVTb3VyY2VBdHRycyIsInF1YWxpdHkiLCJsb2FkZXIiLCJzcmNTZXQiLCJpIiwicm91bmQiLCJqb2luIiwiZ2V0SW50IiwieCIsImRlZmF1bHRJbWFnZUxvYWRlciIsImxvYWRlclByb3BzIiwibG9hZCIsImdldCIsImNvbmZpZ0xvYWRlciIsInJvb3QiLCJjb25maWdQYXRoIiwiRXJyb3IiLCJWQUxJRF9MT0FERVJTIiwicmVtb3ZlUGxhY2Vob2xkZXIiLCJpbWciLCJwbGFjZWhvbGRlciIsImhhbmRsZUxvYWQiLCJzdGFydHNXaXRoIiwiZGVjb2RlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjYXRjaCIsInRoZW4iLCJzdHlsZSIsImJhY2tncm91bmRTaXplIiwiYmFja2dyb3VuZEltYWdlIiwiY29tcGxldGUiLCJvbmxvYWQiLCJpc0luVmlld3BvcnQiLCJlbGVtIiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiaXNTaXplc1JlY29yZCIsInNpemVzRW50cmllcyIsIk9iamVjdCIsImVudHJpZXMiLCJicmVha3BvaW50Iiwic2l6ZSIsIk51bWJlciIsInNpemVBIiwic2l6ZUIiLCJnZW5lcmF0ZVNpemVzU3RyaW5nIiwiSW1hZ2UiLCJSZWFjdCIsImZvcndhcmRlZFJlZiIsInNpemVzT3JpZyIsInVub3B0aW1pemVkIiwibG9hZGluZyIsImhlaWdodCIsImJsdXJEYXRhVVJMIiwiaW1nUHJvcHMiLCJyZWYiLCJ1c2VGb3J3YXJkZWRSZWYiLCJ1c2VFZmZlY3QiLCJjdXJyZW50Iiwicm8iLCJSZXNpemVPYnNlcnZlciIsImVudHJ5IiwiY3VycmVudHZ3IiwiY29udGVudFJlY3QiLCJyYXRpbyIsIm1zZyIsIm1hdGNoTWVkaWEiLCJlbCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsIm1lYXN1cmVkV2lkdGgiLCJuciIsImNvbnNvbGUiLCJ3YXJuIiwidGFyZ2V0Iiwib2JzZXJ2ZSIsImRpc2Nvbm5lY3QiLCJzdGF0aWNTcmMiLCJzdGF0aWNJbWFnZURhdGEiLCJKU09OIiwic3RyaW5naWZ5Iiwid2lkdGhJbnQiLCJoZWlnaHRJbnQiLCJxdWFsaXR5SW50IiwiaW5jbHVkZXMiLCJTdHJpbmciLCJpc05hTiIsIlZBTElEX0JMVVJfRVhUIiwiYXR0cmlidXRlczN4IiwiYXR0cmlidXRlczJ4IiwiYXR0cmlidXRlczF4IiwibWF4V2lkdGgiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFFMEMsWUFBWSxDQUFDakcsTUFONUI7QUFPRSxrQkFBVSxFQUFFOUI7QUFQZCxTQUNRLGFBQVkrSCxZQUFZLENBQUNqRyxNQUFPLEdBQUVpRyxZQUFZLENBQUMvSCxLQUFNLEVBRDdEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFERjtBQUFBO0FBQUE7QUFBQTtBQUFBLGlCQW5CSjtBQUFBLGtCQURGO0FBa0NELENBclBXO0FBQUEsVUFtQkUwRixzRUFuQkY7QUFBQSxHQUFkO01BQU1WLEs7QUF1UE5BLEtBQUssQ0FBQ2lELFdBQU4sR0FBb0IsYUFBcEI7QUFFQSIsImZpbGUiOiIuLi9jb21wb25lbnRzL0ltYWdlLnRzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1jb25zdCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbi8qIGVzbGludC1kaXNhYmxlIEBuZXh0L25leHQvbm8taW1nLWVsZW1lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2FsdC10ZXh0ICovXG5pbXBvcnQgdXNlRm9yd2FyZGVkUmVmIGZyb20gJ0BiZWRyb2NrLWxheW91dC91c2UtZm9yd2FyZGVkLXJlZidcbmltcG9ydCB7IExvYWRlclZhbHVlLCBWQUxJRF9MT0FERVJTIH0gZnJvbSAnbmV4dC9kaXN0L25leHQtc2VydmVyL3NlcnZlci9pbWFnZS1jb25maWcnXG5pbXBvcnQgSGVhZCBmcm9tICduZXh0L2hlYWQnXG5pbXBvcnQgdHlwZSB7IEltYWdlTG9hZGVyUHJvcHMsIEltYWdlTG9hZGVyIH0gZnJvbSAnbmV4dC9pbWFnZSdcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdXNlUmVzaXplT2JzZXJ2ZXIgZnJvbSAndXNlLXJlc2l6ZS1vYnNlcnZlcidcbmltcG9ydCB7XG4gIGFrYW1haUxvYWRlcixcbiAgY2xvdWRpbmFyeUxvYWRlcixcbiAgY29uZmlnRGV2aWNlU2l6ZXMsXG4gIGNvbmZpZ0ltYWdlU2l6ZXMsXG4gIGNvbmZpZ0xvYWRlcixcbiAgY29uZmlnUGF0aCxcbiAgRGVmYXVsdEltYWdlTG9hZGVyUHJvcHMsXG4gIGRlZmF1bHRMb2FkZXIsXG4gIGltZ2l4TG9hZGVyLFxufSBmcm9tICcuLi9jb25maWcvY29uZmlnJ1xuaW1wb3J0IHVzZUNvbm5lY3Rpb25UeXBlIGZyb20gJy4uL2hvb2tzL3VzZUNvbm5lY3Rpb25UeXBlJ1xuXG5pZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gIGdsb2JhbC5fX05FWFRfSU1BR0VfSU1QT1JURUQgPSB0cnVlXG59XG5cbmV4cG9ydCB0eXBlIHsgSW1hZ2VMb2FkZXJQcm9wcywgSW1hZ2VMb2FkZXIgfVxuXG5jb25zdCBWQUxJRF9MT0FESU5HX1ZBTFVFUyA9IFsnbGF6eScsICdlYWdlcicsIHVuZGVmaW5lZF0gYXMgY29uc3RcbnR5cGUgTG9hZGluZ1ZhbHVlID0gdHlwZW9mIFZBTElEX0xPQURJTkdfVkFMVUVTW251bWJlcl1cblxuY29uc3QgbG9hZGVycyA9IG5ldyBNYXA8TG9hZGVyVmFsdWUsIChwcm9wczogRGVmYXVsdEltYWdlTG9hZGVyUHJvcHMpID0+IHN0cmluZz4oW1xuICBbJ2ltZ2l4JywgaW1naXhMb2FkZXJdLFxuICBbJ2Nsb3VkaW5hcnknLCBjbG91ZGluYXJ5TG9hZGVyXSxcbiAgWydha2FtYWknLCBha2FtYWlMb2FkZXJdLFxuICBbJ2RlZmF1bHQnLCBkZWZhdWx0TG9hZGVyXSxcbl0pXG5cbmNvbnN0IFZBTElEX0xBWU9VVF9WQUxVRVMgPSBbJ2ZpbGwnLCAncmVzcG9uc2l2ZScsICdpbnRyaW5zaWMnLCAnZml4ZWQnXSBhcyBjb25zdFxudHlwZSBMYXlvdXRWYWx1ZSA9ICdmaWxsJyB8ICdmaXhlZCcgfCAnaW50cmluc2ljJyB8ICdyZXNwb25zaXZlJyB8IHVuZGVmaW5lZFxuXG50eXBlIFBsYWNlaG9sZGVyVmFsdWUgPSAnYmx1cicgfCAnZW1wdHknXG5cbnR5cGUgSW1nRWxlbWVudFN0eWxlID0gTm9uTnVsbGFibGU8SlNYLkludHJpbnNpY0VsZW1lbnRzWydpbWcnXVsnc3R5bGUnXT5cblxuaW50ZXJmYWNlIFN0YXRpY0ltYWdlRGF0YSB7XG4gIHNyYzogc3RyaW5nXG4gIGhlaWdodDogbnVtYmVyXG4gIHdpZHRoOiBudW1iZXJcbiAgYmx1ckRhdGFVUkw/OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIFN0YXRpY1JlcXVpcmUge1xuICBkZWZhdWx0OiBTdGF0aWNJbWFnZURhdGFcbn1cblxudHlwZSBTdGF0aWNJbXBvcnQgPSBTdGF0aWNSZXF1aXJlIHwgU3RhdGljSW1hZ2VEYXRhXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YXRpY1JlcXVpcmUoc3JjOiBTdGF0aWNSZXF1aXJlIHwgU3RhdGljSW1hZ2VEYXRhKTogc3JjIGlzIFN0YXRpY1JlcXVpcmUge1xuICByZXR1cm4gKHNyYyBhcyBTdGF0aWNSZXF1aXJlKS5kZWZhdWx0ICE9PSB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RhdGljSW1hZ2VEYXRhKHNyYzogU3RhdGljUmVxdWlyZSB8IFN0YXRpY0ltYWdlRGF0YSk6IHNyYyBpcyBTdGF0aWNJbWFnZURhdGEge1xuICByZXR1cm4gKHNyYyBhcyBTdGF0aWNJbWFnZURhdGEpLnNyYyAhPT0gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YXRpY0ltcG9ydChzcmM6IHN0cmluZyB8IFN0YXRpY0ltcG9ydCk6IHNyYyBpcyBTdGF0aWNJbXBvcnQge1xuICByZXR1cm4gdHlwZW9mIHNyYyA9PT0gJ29iamVjdCcgJiYgKGlzU3RhdGljUmVxdWlyZShzcmMpIHx8IGlzU3RhdGljSW1hZ2VEYXRhKHNyYykpXG59XG5cbi8vIHNvcnQgc21hbGxlc3QgdG8gbGFyZ2VzdFxuY29uc3QgYWxsU2l6ZXMgPSBbLi4uY29uZmlnRGV2aWNlU2l6ZXMsIC4uLmNvbmZpZ0ltYWdlU2l6ZXNdXG5jb25maWdEZXZpY2VTaXplcy5zb3J0KChhLCBiKSA9PiBhIC0gYilcbmFsbFNpemVzLnNvcnQoKGEsIGIpID0+IGEgLSBiKVxuXG5mdW5jdGlvbiBnZXRXaWR0aHMoXG4gIHdpZHRoOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIGxheW91dDogTGF5b3V0VmFsdWUsXG4gIHNpemVzID0gJycsXG4gIHNjYWxlOiBudW1iZXIsXG4pOiB7IHdpZHRoczogbnVtYmVyW107IGtpbmQ6ICd3JyB8ICd4JyB9IHtcbiAgaWYgKChzaXplcyAmJiBsYXlvdXQgPT09ICdmaWxsJykgfHwgbGF5b3V0ID09PSAncmVzcG9uc2l2ZScpIHtcbiAgICAvLyBGaW5kIGFsbCB0aGUgXCJ2d1wiIHBlcmNlbnQgc2l6ZXMgdXNlZCBpbiB0aGUgc2l6ZXMgcHJvcFxuICAgIGNvbnN0IHZpZXdwb3J0V2lkdGhSZSA9IC8oXnxcXHMpKDE/XFxkP1xcZCl2dy9nXG4gICAgY29uc3QgcGVyY2VudFNpemVzOiBudW1iZXJbXSA9IFtdXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gICAgZm9yIChsZXQgbWF0Y2g6IHN0cmluZ1tdIHwgbnVsbDsgKG1hdGNoID0gdmlld3BvcnRXaWR0aFJlLmV4ZWMoc2l6ZXMpKTsgbWF0Y2gpIHtcbiAgICAgIHBlcmNlbnRTaXplcy5wdXNoKHBhcnNlSW50KG1hdGNoPy5bMl0sIDEwKSlcbiAgICB9XG4gICAgaWYgKHBlcmNlbnRTaXplcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHNtYWxsZXN0UmF0aW8gPSBNYXRoLm1pbiguLi5wZXJjZW50U2l6ZXMpICogMC4wMVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aHM6IGFsbFNpemVzLmZpbHRlcigocykgPT4gcyA+PSBjb25maWdEZXZpY2VTaXplc1swXSAqIHNtYWxsZXN0UmF0aW8pLFxuICAgICAgICBraW5kOiAndycsXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmluZCBhbGwgdGhlIFwicHhcIiBzaXplcyB1c2VkIGluIHRoZSBzaXplcyBwcm9wXG4gICAgY29uc3QgcHhXaWR0aFJlID0gLyhefFxccykoMT9cXGQrKXB4L2dcbiAgICBjb25zdCBweFNpemVzOiBudW1iZXJbXSA9IFtdXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gICAgZm9yIChsZXQgbWF0Y2g6IHN0cmluZ1tdIHwgbnVsbDsgKG1hdGNoID0gcHhXaWR0aFJlLmV4ZWMoc2l6ZXMpKTsgbWF0Y2gpIHtcbiAgICAgIHB4U2l6ZXMucHVzaChwYXJzZUludChtYXRjaD8uWzJdLCAxMCkpXG4gICAgfVxuXG4gICAgaWYgKHB4U2l6ZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aHM6IHB4U2l6ZXMubWFwKChweFNpemUpID0+IHtcbiAgICAgICAgICBjb25zdCBzY2FsZWQgPSBhbGxTaXplcy5maWx0ZXIoKHMpID0+IHMgKiBzY2FsZSA+IHB4U2l6ZSk/LlswXVxuICAgICAgICAgIGNvbnN0IGRwcjIgPSBhbGxTaXplcy5maWx0ZXIoKHMpID0+IHMgPiBweFNpemUpPy5bMF1cbiAgICAgICAgICByZXR1cm4gc2NhbGUgPiAxID8gTWF0aC5tYXgoc2NhbGVkLCBkcHIyKSA6IE1hdGgubWluKHNjYWxlZCwgZHByMilcbiAgICAgICAgfSksXG4gICAgICAgIGtpbmQ6ICd3JyxcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyB3aWR0aHM6IGFsbFNpemVzLCBraW5kOiAndycgfVxuICB9XG4gIGlmICh0eXBlb2Ygd2lkdGggIT09ICdudW1iZXInIHx8IGxheW91dCA9PT0gJ2ZpbGwnKSB7XG4gICAgcmV0dXJuIHsgd2lkdGhzOiBjb25maWdEZXZpY2VTaXplcywga2luZDogJ3cnIH1cbiAgfVxuXG4gIGNvbnN0IHdpZHRocyA9IFtcbiAgICAuLi5uZXcgU2V0KFxuICAgICAgLy8gPiBUaGlzIG1lYW5zIHRoYXQgbW9zdCBPTEVEIHNjcmVlbnMgdGhhdCBzYXkgdGhleSBhcmUgM3ggcmVzb2x1dGlvbixcbiAgICAgIC8vID4gYXJlIGFjdHVhbGx5IDN4IGluIHRoZSBncmVlbiBjb2xvciwgYnV0IG9ubHkgMS41eCBpbiB0aGUgcmVkIGFuZFxuICAgICAgLy8gPiBibHVlIGNvbG9ycy4gU2hvd2luZyBhIDN4IHJlc29sdXRpb24gaW1hZ2UgaW4gdGhlIGFwcCB2cyBhIDJ4XG4gICAgICAvLyA+IHJlc29sdXRpb24gaW1hZ2Ugd2lsbCBiZSB2aXN1YWxseSB0aGUgc2FtZSwgdGhvdWdoIHRoZSAzeCBpbWFnZVxuICAgICAgLy8gPiB0YWtlcyBzaWduaWZpY2FudGx5IG1vcmUgZGF0YS4gRXZlbiB0cnVlIDN4IHJlc29sdXRpb24gc2NyZWVucyBhcmVcbiAgICAgIC8vID4gd2FzdGVmdWwgYXMgdGhlIGh1bWFuIGV5ZSBjYW5ub3Qgc2VlIHRoYXQgbGV2ZWwgb2YgZGV0YWlsIHdpdGhvdXRcbiAgICAgIC8vID4gc29tZXRoaW5nIGxpa2UgYSBtYWduaWZ5aW5nIGdsYXNzLlxuICAgICAgLy8gaHR0cHM6Ly9ibG9nLnR3aXR0ZXIuY29tL2VuZ2luZWVyaW5nL2VuX3VzL3RvcGljcy9pbmZyYXN0cnVjdHVyZS8yMDE5L2NhcHBpbmctaW1hZ2UtZmlkZWxpdHktb24tdWx0cmEtaGlnaC1yZXNvbHV0aW9uLWRldmljZXMuaHRtbFxuICAgICAgW3dpZHRoLCB3aWR0aCAqIDIgLyogLCB3aWR0aCAqIDMqL10ubWFwKFxuICAgICAgICAodykgPT4gYWxsU2l6ZXMuZmluZCgocCkgPT4gcCA+PSB3KSB8fCBhbGxTaXplc1thbGxTaXplcy5sZW5ndGggLSAxXSxcbiAgICAgICksXG4gICAgKSxcbiAgXVxuICByZXR1cm4geyB3aWR0aHMsIGtpbmQ6ICd4JyB9XG59XG5cbnR5cGUgR2VuSW1nQXR0cnNEYXRhID0ge1xuICBzcmM6IHN0cmluZ1xuICBsYXlvdXQ6IExheW91dFZhbHVlXG4gIGxvYWRlcjogSW1hZ2VMb2FkZXJcbiAgd2lkdGg/OiBudW1iZXJcbiAgcXVhbGl0eT86IG51bWJlclxuICBzaXplcz86IHN0cmluZ1xuICBzY2FsZTogbnVtYmVyXG59XG5cbnR5cGUgR2VuSW1nQXR0cnNSZXN1bHQgPSB7XG4gIHNyY1NldDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIHNpemVzOiBzdHJpbmcgfCB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVTb3VyY2VBdHRycyh7XG4gIHNyYyxcbiAgbGF5b3V0LFxuICB3aWR0aCxcbiAgcXVhbGl0eSA9IDQ0LFxuICBzaXplcyxcbiAgbG9hZGVyLFxuICBzY2FsZSxcbn06IEdlbkltZ0F0dHJzRGF0YSk6IEdlbkltZ0F0dHJzUmVzdWx0IHtcbiAgY29uc3QgeyB3aWR0aHMsIGtpbmQgfSA9IGdldFdpZHRocyh3aWR0aCwgbGF5b3V0LCBzaXplcywgc2NhbGUpXG5cbiAgcmV0dXJuIHtcbiAgICBzaXplczogIXNpemVzICYmIGtpbmQgPT09ICd3JyA/IGA1MHZ3YCA6IHNpemVzLFxuICAgIHNyY1NldDogd2lkdGhzXG4gICAgICAubWFwKFxuICAgICAgICAodywgaSkgPT5cbiAgICAgICAgICBgJHtsb2FkZXIoeyBzcmMsIHF1YWxpdHksIHdpZHRoOiB3IH0pfSAke1xuICAgICAgICAgICAga2luZCA9PT0gJ3cnID8gTWF0aC5yb3VuZCh3ICogc2NhbGUpIDogaSArIDFcbiAgICAgICAgICB9JHtraW5kfWAsXG4gICAgICApXG4gICAgICAuam9pbignLCAnKSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50KHg6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAodHlwZW9mIHggPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHhcbiAgfVxuICBpZiAodHlwZW9mIHggPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhcnNlSW50KHgsIDEwKVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gZGVmYXVsdEltYWdlTG9hZGVyKGxvYWRlclByb3BzOiBJbWFnZUxvYWRlclByb3BzKSB7XG4gIGNvbnN0IGxvYWQgPSBsb2FkZXJzLmdldChjb25maWdMb2FkZXIpXG4gIGlmIChsb2FkKSB7XG4gICAgcmV0dXJuIGxvYWQoeyByb290OiBjb25maWdQYXRoLCAuLi5sb2FkZXJQcm9wcyB9KVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBVbmtub3duIFwibG9hZGVyXCIgZm91bmQgaW4gXCJuZXh0LmNvbmZpZy5qc1wiLiBFeHBlY3RlZDogJHtWQUxJRF9MT0FERVJTLmpvaW4oXG4gICAgICAnLCAnLFxuICAgICl9LiBSZWNlaXZlZDogJHtjb25maWdMb2FkZXJ9YCxcbiAgKVxufVxuXG4vLyBTZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzM5Nzc3ODMzLzI2NjUzNSBmb3Igd2h5IHdlIHVzZSB0aGlzIHJlZlxuLy8gaGFuZGxlciBpbnN0ZWFkIG9mIHRoZSBpbWcncyBvbkxvYWQgYXR0cmlidXRlLlxuZnVuY3Rpb24gcmVtb3ZlUGxhY2Vob2xkZXIoaW1nOiBIVE1MSW1hZ2VFbGVtZW50IHwgbnVsbCwgcGxhY2Vob2xkZXI6IFBsYWNlaG9sZGVyVmFsdWUpIHtcbiAgaWYgKHBsYWNlaG9sZGVyID09PSAnYmx1cicgJiYgaW1nKSB7XG4gICAgY29uc3QgaGFuZGxlTG9hZCA9ICgpID0+IHtcbiAgICAgIGlmICghaW1nLnNyYy5zdGFydHNXaXRoKCdkYXRhOicpKSB7XG4gICAgICAgIGNvbnN0IHAgPSAnZGVjb2RlJyBpbiBpbWcgPyBpbWcuZGVjb2RlKCkgOiBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgICAgIHAuY2F0Y2goKCkgPT4ge30pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGltZy5zdHlsZS5maWx0ZXIgPSAnbm9uZSdcbiAgICAgICAgICBpbWcuc3R5bGUuYmFja2dyb3VuZFNpemUgPSAnbm9uZSdcbiAgICAgICAgICBpbWcuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gJ25vbmUnXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpbWcuY29tcGxldGUpIHtcbiAgICAgIC8vIElmIHRoZSByZWFsIGltYWdlIGZhaWxzIHRvIGxvYWQsIHRoaXMgd2lsbCBzdGlsbCByZW1vdmUgdGhlIHBsYWNlaG9sZGVyLlxuICAgICAgLy8gVGhpcyBpcyB0aGUgZGVzaXJlZCBiZWhhdmlvciBmb3Igbm93LCBhbmQgd2lsbCBiZSByZXZpc2l0ZWQgd2hlbiBlcnJvclxuICAgICAgLy8gaGFuZGxpbmcgaXMgd29ya2VkIG9uIGZvciB0aGUgaW1hZ2UgY29tcG9uZW50IGl0c2VsZi5cbiAgICAgIGhhbmRsZUxvYWQoKVxuICAgIH0gZWxzZSB7XG4gICAgICBpbWcub25sb2FkID0gaGFuZGxlTG9hZFxuICAgIH1cbiAgfVxufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgYW4gaW1hZ2UgaXMgY3VycmVudGx5IGluIHRoZSB2aWV3cG9ydCAqL1xuZnVuY3Rpb24gaXNJblZpZXdwb3J0KGVsZW06IEhUTUxJbWFnZUVsZW1lbnQpOiBib29sZWFuIHtcbiAgY29uc3QgeyB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQgfSA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgcmV0dXJuIGJvdHRvbSA+PSAwICYmIHJpZ2h0ID49IDAgJiYgdG9wIDw9IHdpbmRvdy5pbm5lckhlaWdodCAmJiBsZWZ0IDw9IHdpbmRvdy5pbm5lcldpZHRoXG59XG5cbnR5cGUgU2l6ZXNTdHJpbmcgPSBgJHtudW1iZXJ9dndgIHwgYCR7bnVtYmVyfXB4YFxudHlwZSBTaXplc1JlY29yZCA9IFJlY29yZDxudW1iZXIsIFNpemVzU3RyaW5nPlxudHlwZSBTaXplcyA9IFNpemVzU3RyaW5nIHwgU2l6ZXNSZWNvcmQgfCB1bmRlZmluZWRcblxuZnVuY3Rpb24gaXNTaXplc1JlY29yZChzaXplcz86IFNpemVzKTogc2l6ZXMgaXMgU2l6ZXNSZWNvcmQge1xuICByZXR1cm4gdHlwZW9mIHNpemVzID09PSAnb2JqZWN0J1xufVxuXG5mdW5jdGlvbiBzaXplc0VudHJpZXMoc2l6ZXM6IFNpemVzKTogKHJlYWRvbmx5IFtudW1iZXIsIFNpemVzU3RyaW5nIHwgdW5kZWZpbmVkXSlbXSB7XG4gIGlmIChpc1NpemVzUmVjb3JkKHNpemVzKSkge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhzaXplcylcbiAgICAgIC5tYXAoKFticmVha3BvaW50LCBzaXplXSkgPT4gW051bWJlcihicmVha3BvaW50KSwgc2l6ZV0gYXMgY29uc3QpXG4gICAgICAuc29ydCgoW3NpemVBXSwgW3NpemVCXSkgPT4gc2l6ZUIgLSBzaXplQSlcbiAgfVxuICByZXR1cm4gW1swLCBzaXplc10gYXMgY29uc3RdXG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlU2l6ZXNTdHJpbmcoc2l6ZXM/OiBTaXplcykge1xuICByZXR1cm4gc2l6ZXNFbnRyaWVzKHNpemVzKVxuICAgIC5tYXAoKFticmVha3BvaW50LCBzaXplXSkgPT4ge1xuICAgICAgaWYgKGJyZWFrcG9pbnQgPT09IDApIHJldHVybiBzaXplXG4gICAgICByZXR1cm4gYChtaW4td2lkdGg6ICR7YnJlYWtwb2ludH1weCkgJHtzaXplfWBcbiAgICB9KVxuICAgIC5qb2luKCcsICcpXG59XG5cbi8qKiBTaW5jZSB3ZSdyZSBoYW5kbGluZyBzdHVmZiBvdXJzZWx2ZXMgd2Ugb21pdCBzb21lIHN0dWZmICovXG50eXBlIEludHJpc2luY0ltYWdlID0gT21pdDxcbiAgSlNYLkludHJpbnNpY0VsZW1lbnRzWydpbWcnXSxcbiAgJ3NyYycgfCAnc3JjU2V0JyB8ICdyZWYnIHwgJ3dpZHRoJyB8ICdoZWlnaHQnIHwgJ2xvYWRpbmcnIHwgJ3NpemVzJyB8ICd3aWR0aCcgfCAnaGVpZ2h0J1xuPiAmIHsgbG9hZGluZz86IExvYWRpbmdWYWx1ZSB9XG5cbmV4cG9ydCB0eXBlIEJhc2VJbWFnZVByb3BzID0gSW50cmlzaW5jSW1hZ2UgJiB7XG4gIGxvYWRlcj86IEltYWdlTG9hZGVyXG4gIHF1YWxpdHk/OiBudW1iZXIgfCBzdHJpbmdcbiAgdW5vcHRpbWl6ZWQ/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIFBvc3NpYmxlIHZhbHVlczpcbiAgICpcbiAgICogLSBgZml4ZWRgOiB0aGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIG5vdCBjaGFuZ2UgYXMgdGhlIHZpZXdwb3J0IGNoYW5nZXMgKG5vIHJlc3BvbnNpdmVuZXNzKVxuICAgKiAgIHNpbWlsYXIgdG8gdGhlIG5hdGl2ZSBpbWcgZWxlbWVudC5cbiAgICogLSBgaW50cmluc2ljYDogdGhlIGltYWdlIHdpbGwgc2NhbGUgdGhlIGRpbWVuc2lvbnMgZG93biBmb3Igc21hbGxlciB2aWV3cG9ydHMgYnV0IG1haW50YWluIHRoZVxuICAgKiAgIG9yaWdpbmFsIGRpbWVuc2lvbnMgKHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGdpdmVuKSBmb3IgbGFyZ2VyIHZpZXdwb3J0cy5cbiAgICogLSBgcmVzcG9uc2l2ZWA6IHRoZSBpbWFnZSB3aWxsIHNjYWxlIHRoZSBkaW1lbnNpb25zIGRvd24gZm9yIHNtYWxsZXIgdmlld3BvcnRzIGFuZCBzY2FsZSB1cCBmb3JcbiAgICogICBsYXJnZXIgdmlld3BvcnRzLlxuICAgKi9cbiAgbGF5b3V0PzogTGF5b3V0VmFsdWVcblxuICAvKiogU2l6ZSB0aGUgaW1hZ2UgaXMgcmVuZGVyZWQgb24gbW9iaWxlICovXG4gIHNpemVzPzogU2l6ZXNTdHJpbmcgfCBTaXplc1JlY29yZFxufVxuXG4vKipcbiAqIFdoZW4gYGZpeGVkYCwgdGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBub3QgY2hhbmdlIGFzIHRoZSB2aWV3cG9ydCBjaGFuZ2VzIChubyByZXNwb25zaXZlbmVzcylcbiAqIHNpbWlsYXIgdG8gdGhlIG5hdGl2ZSBpbWcgZWxlbWVudC5cbiAqXG4gKiBgYGB0c3hcbiAqIDxpbWcgd2lkdGg9e3dpZHRofSBoZWlnaHQ9e2hlaWdodH0gLz5cbiAqIGBgYFxuICpcbiAqIFVzZSBjYXNlOiBXaGVuIHlvdSB3YW50IHRvIHJlbmRlciB0aGUgaW1hZ2UgYXQgdGhlIGdpdmVuIHdpZHRoL2hlaWdodCBhbmQgbm90IGNoYW5nZSBiYXNlZCBvbiBicm93c2VyIHNpemUuXG4gKi9cbnR5cGUgTGF5b3V0VHlwZU5hdGl2ZSA9IHtcbiAgbGF5b3V0PzogJ2ZpeGVkJ1xuICAvKipcbiAgICogVGhlIHdpZHRoIGFuZCB0aGUgaGVpZ2h0IHZhbHVlcyBhcmUgdGhlIHZhbHVlcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgYXNwZWN0IHJhdGlvIG9tIHRoZSBpbWFnZVxuICAgKiBhbmQgcmVzZXJ2ZSBzcGFjZSBpbiB0aGUgYnJvd3Nlci5cbiAgICpcbiAgICogV2l0aCBsYXlvdXQ9Zml4ZWQgYW5kIG5vIHN0eWxpbmcgdGhlIGltYWdlIGlzIHJlbmRlcmVkIGF0IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGdpdmVuLlxuICAgKi9cbiAgd2lkdGg6IG51bWJlclxuICBoZWlnaHQ6IG51bWJlclxufVxuXG4vKipcbiAqIFdoZW4gYGludHJpbnNpY2AsIHRoZSBpbWFnZSB3aWxsIHNjYWxlIHRoZSBkaW1lbnNpb25zIGRvd24gZm9yIHNtYWxsZXIgdmlld3BvcnRzIGJ1dCBtYWludGFpbiB0aGVcbiAqIG9yaWdpbmFsIGRpbWVuc2lvbnMgKHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGdpdmVuKSBmb3IgbGFyZ2VyIHZpZXdwb3J0cy5cbiAqXG4gKiBgYGB0c3hcbiAqIDxpbWcgc3R5bGU9e3sgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnYXV0bycgbWF4V2lkdGg6IGAke3dpZHRofXB4YCB9fVxuICogYGBgXG4gKlxuICogVXNlIGNhc2U6IFdoZW4geW91IHdhbnQgdG8gcmVuZGVyIGFuIGltYWdlIGJ1dCBkb24ndCBzY2FsZSBpdCB1cC5cbiAqL1xudHlwZSBMYXlvdXRUeXBlSW50cmluc2ljID0ge1xuICBsYXlvdXQ/OiAnaW50cmluc2ljJ1xuXG4gIHdpZHRoOiBudW1iZXJcbiAgaGVpZ2h0OiBudW1iZXJcblxuICBzdHlsZT86IE9taXQ8SW1nRWxlbWVudFN0eWxlLCAnd2lkdGgnIHwgJ2hlaWdodCcgfCAnbWF4V2lkdGgnPlxufVxuXG4vKipcbiAqIFdoZW4gYHJlc3BvbnNpdmVgLCB0aGUgaW1hZ2Ugd2lsbCBzY2FsZSB0aGUgZGltZW5zaW9ucyBkb3duIGZvciBzbWFsbGVyIHZpZXdwb3J0cyBhbmQgc2NhbGUgdXBcbiAqIGZvciBsYXJnZXIgdmlld3BvcnRzLlxuICpcbiAqIGBgYHRzeFxuICogPGltZyBzdHlsZT17eyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICdhdXRvJyBtYXhXaWR0aDogJHt3aWR0aH0gfX1cbiAqIGBgYFxuICpcbiAqIFVzZSBjYXNlOiBXaGVuIHlvdSB3YW50IHRoZSBpbWFnZSB0byBmaWxsIGl0J3MgcGFyZW50IGNvbnRhaW5lciBpbiB3aWR0aFxuICovXG50eXBlIExheW91dFR5cGVSZXNwb25zaXZlID0ge1xuICBsYXlvdXQ/OiAncmVzcG9uc2l2ZSdcblxuICB3aWR0aDogbnVtYmVyXG4gIGhlaWdodDogbnVtYmVyXG5cbiAgc3R5bGU/OiBPbWl0PEltZ0VsZW1lbnRTdHlsZSwgJ3dpZHRoJyB8ICdoZWlnaHQnPlxufVxuXG4vKipcbiAqIFdoZW4gYGZpbGxgLCB0aGUgaW1hZ2Ugd2lsbCBzdHJldGNoIGJvdGggd2lkdGggYW5kIGhlaWdodCB0byB0aGUgZGltZW5zaW9ucyBvZiB0aGUgcGFyZW50XG4gKiBlbGVtZW50LCBwYWlyZWQgd2l0aCB0aGUgb2JqZWN0Rml0IHByb3BlcnR5LlxuICpcbiAqIFNpbmNlIHRoZSB3aWR0aC9oZWlnaHQgaXNuJ3QgcmVxdWlyZWQgdG8gcmVuZGVyIHRoZSBwYWdlIHdlIGNhbiBvbWl0IGl0LlxuICpcbiAqIGBgYHRzeFxuICogPGltZyB3aWR0aD17d2lkdGh9IGhlaWdodD17aGVpZ2h0fSBzdHlsZT17eyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJyB9fVxuICogYGBgXG4gKlxuICogVXNlIGNhc2U6IFdoZW4geW91IGhhdmUgYSBwcmVkZWZpbmVkIGFyZWEgc2V0IHRvIHJlbmRlciBhbiBpbWFnZVxuICovXG50eXBlIExheW91dFR5cGVGaWxsID0ge1xuICBsYXlvdXQ/OiAnZmlsbCdcblxuICB3aWR0aD86IG5ldmVyXG4gIGhlaWdodD86IG5ldmVyXG5cbiAgLy8gb2JqZWN0Rml0OiBJbWdFbGVtZW50U3R5bGVbJ29iamVjdEZpdCddXG4gIHN0eWxlPzogT21pdDxJbWdFbGVtZW50U3R5bGUsICd3aWR0aCcgfCAnaGVpZ2h0Jz5cbn1cblxuZXhwb3J0IHR5cGUgU3RyaW5nSW1hZ2VQcm9wcyA9IHtcbiAgc3JjOiBzdHJpbmdcbn0gJiAoTGF5b3V0VHlwZUZpbGwgfCBMYXlvdXRUeXBlUmVzcG9uc2l2ZSB8IExheW91dFR5cGVOYXRpdmUgfCBMYXlvdXRUeXBlSW50cmluc2ljKSAmXG4gIChcbiAgICB8IHsgcGxhY2Vob2xkZXI/OiBFeGNsdWRlPFBsYWNlaG9sZGVyVmFsdWUsICdibHVyJz47IGJsdXJEYXRhVVJMPzogbmV2ZXIgfVxuICAgIHwgeyBwbGFjZWhvbGRlcjogJ2JsdXInOyBibHVyRGF0YVVSTDogc3RyaW5nIH1cbiAgKVxuXG5leHBvcnQgdHlwZSBPYmplY3RJbWFnZVByb3BzID0ge1xuICBzcmM6IFN0YXRpY0ltcG9ydFxuICB3aWR0aD86IG51bWJlclxuICBoZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgbGF5b3V0PzogTGF5b3V0VmFsdWVcbiAgcGxhY2Vob2xkZXI/OiBQbGFjZWhvbGRlclZhbHVlXG4gIGJsdXJEYXRhVVJMPzogbmV2ZXJcbn1cblxuZXhwb3J0IHR5cGUgSW1hZ2VQcm9wcyA9IEJhc2VJbWFnZVByb3BzICYgKFN0cmluZ0ltYWdlUHJvcHMgfCBPYmplY3RJbWFnZVByb3BzKVxuXG5leHBvcnQgdHlwZSBTdHJpbmdJbWFnZSA9IEJhc2VJbWFnZVByb3BzICYgU3RyaW5nSW1hZ2VQcm9wc1xuZXhwb3J0IHR5cGUgT2JqZWN0SW1hZ2UgPSBCYXNlSW1hZ2VQcm9wcyAmIE9iamVjdEltYWdlUHJvcHNcblxuY29uc3QgSW1hZ2UgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbWFnZUVsZW1lbnQsIEltYWdlUHJvcHM+KFxuICAoXG4gICAge1xuICAgICAgc3JjLFxuICAgICAgc2l6ZXM6IHNpemVzT3JpZyxcbiAgICAgIHVub3B0aW1pemVkID0gZmFsc2UsXG4gICAgICBsb2FkaW5nLFxuICAgICAgbGF5b3V0ID0gJ3Jlc3BvbnNpdmUnLFxuICAgICAgcXVhbGl0eSxcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgICAgc3R5bGUsXG4gICAgICBsb2FkZXIgPSBkZWZhdWx0SW1hZ2VMb2FkZXIsXG4gICAgICBwbGFjZWhvbGRlciA9ICdlbXB0eScsXG4gICAgICBibHVyRGF0YVVSTCxcbiAgICAgIC4uLmltZ1Byb3BzXG4gICAgfSxcbiAgICBmb3J3YXJkZWRSZWYsXG4gICkgPT4ge1xuICAgIGNvbnN0IHJlZiA9IHVzZUZvcndhcmRlZFJlZihmb3J3YXJkZWRSZWYpXG5cbiAgICBjb25zdCBzaXplcyA9XG4gICAgICBnZW5lcmF0ZVNpemVzU3RyaW5nKGxheW91dCA9PT0gJ2ZpeGVkJyAmJiB3aWR0aCAmJiAhc2l6ZXNPcmlnID8gYCR7d2lkdGh9cHhgIDogc2l6ZXNPcmlnKSA/P1xuICAgICAgJzUwdncnXG5cbiAgICAvLyBJZiBubyByZXNwb25zaXZlIHNpemVzIGFyZSBnaXZlbiwgd2UncmUgZGVmYXVsdGluZyB0byA1MHZ3IG9uIG1vYmlsZVxuICAgIC8vIGNvbnN0IFtzaXplcywgc2V0U2l6ZXNdID0gdXNlU3RhdGUodG9TaXplc1N0cmluZyhzaXplc09yaWcpID8/IGA1MHZ3YClcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXJlZi5jdXJyZW50IHx8IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHJldHVybiAoKSA9PiB7fVxuXG4gICAgICAvLyBXYXJuIHRoZSB1c2VyIHdoZW4gaGUgaXNuJ3QgcHJvdmlkaW5nIHNpemVzIGFuZCBob3cgdG8gcHJvY2VlZFxuICAgICAgY29uc3Qgcm8gPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKFtlbnRyeV0pID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudHZ3ID0gZW50cnkuY29udGVudFJlY3Qud2lkdGhcblxuICAgICAgICBsZXQgcmF0aW86IG51bWJlclxuXG4gICAgICAgIGxldCBtc2cgPSAnJ1xuICAgICAgICBjb25zdCBbYnJlYWtwb2ludCwgc2l6ZV0gPSBzaXplc0VudHJpZXMoc2l6ZXNPcmlnKS5maW5kKChbc10pID0+XG4gICAgICAgICAgcyA9PT0gMCA/IHRydWUgOiB3aW5kb3cubWF0Y2hNZWRpYShgKG1pbi13aWR0aDogJHtzfSlgKSxcbiAgICAgICAgKSA/PyBbMCwgJzEwMHZ3J11cbiAgICAgICAgaWYgKHNpemUpIHtcbiAgICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdzdHlsZScsIGB3aWR0aDogJHtzaXplfWApXG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbClcbiAgICAgICAgICBjb25zdCBtZWFzdXJlZFdpZHRoID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGhcbiAgICAgICAgICAvLyBlbC5yZW1vdmUoKVxuICAgICAgICAgIHJhdGlvID0gbWVhc3VyZWRXaWR0aCAqKiAyIC8gY3VycmVudHZ3ICoqIDJcbiAgICAgICAgICBtc2cgKz0gYEltYWdlIGhhcyBcInNpemVzXCIgcHJvcGVydHkgc2V0LCBidXQgc2l6ZSAnbWluLXdpZHRoKCR7YnJlYWtwb2ludH1weCkgJHtzaXplfScgaXMgaW5jb3JyZWN0LmBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtc2cgKz0gYEltYWdlIGhhcyBubyBcInNpemVzXCIgcHJvcGVydHkgc2V0LmBcbiAgICAgICAgICByYXRpbyA9ICh3aW5kb3cuaW5uZXJXaWR0aCAqIDAuNSkgKiogMiAvIGN1cnJlbnR2dyAqKiAyXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByb3VuZCA9IChucjogbnVtYmVyKSA9PiBNYXRoLnJvdW5kKG5yICogMTAwKSAvIDEwMFxuICAgICAgICBpZiAocmF0aW8gPiAxLjIpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiAke21zZ30gQ3VycmVudGx5IGRvd25sb2FkaW5nIGFuIGltYWdlIHRoYXQgaGFzICR7cm91bmQoXG4gICAgICAgICAgICAgIHJhdGlvLFxuICAgICAgICAgICAgKX14IHRvbyBtYW55IHBpeGVsc2AsXG4gICAgICAgICAgICBlbnRyeS50YXJnZXQsXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2UgaWYgKHJhdGlvIDwgMC44KSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogJHttc2d9IEN1cnJlbnRseSBkb3dubG9hZGluZyBhbiBpbWFnZSB0aGF0IGhhcyAke3JvdW5kKFxuICAgICAgICAgICAgICAxIC8gcmF0aW8sXG4gICAgICAgICAgICApfXggdG9vIGZldyBwaXhlbHNgLFxuICAgICAgICAgICAgZW50cnkudGFyZ2V0LFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJvLm9ic2VydmUocmVmLmN1cnJlbnQpXG5cbiAgICAgIHJldHVybiAoKSA9PiByby5kaXNjb25uZWN0KClcbiAgICB9LCBbcmVmLCBzaXplc09yaWcsIHNyY10pXG5cbiAgICBsZXQgc3RhdGljU3JjID0gJydcbiAgICBpZiAoaXNTdGF0aWNJbXBvcnQoc3JjKSkge1xuICAgICAgY29uc3Qgc3RhdGljSW1hZ2VEYXRhID0gaXNTdGF0aWNSZXF1aXJlKHNyYykgPyBzcmMuZGVmYXVsdCA6IHNyY1xuICAgICAgaWYgKCFzdGF0aWNJbWFnZURhdGEuc3JjKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBBbiBvYmplY3Qgc2hvdWxkIG9ubHkgYmUgcGFzc2VkIHRvIHRoZSBpbWFnZSBjb21wb25lbnQgc3JjIHBhcmFtZXRlciBpZiBpdCBjb21lcyBmcm9tIGEgc3RhdGljIGltYWdlIGltcG9ydC4gSXQgbXVzdCBpbmNsdWRlIHNyYy4gUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHN0YXRpY0ltYWdlRGF0YSxcbiAgICAgICAgICApfWAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGJsdXJEYXRhVVJMID0gYmx1ckRhdGFVUkwgfHwgc3RhdGljSW1hZ2VEYXRhLmJsdXJEYXRhVVJMXG4gICAgICBzdGF0aWNTcmMgPSBzdGF0aWNJbWFnZURhdGEuc3JjXG4gICAgICBpZiAoIWxheW91dCB8fCBsYXlvdXQgIT09ICdmaWxsJykge1xuICAgICAgICBoZWlnaHQgPSBoZWlnaHQgfHwgc3RhdGljSW1hZ2VEYXRhLmhlaWdodFxuICAgICAgICB3aWR0aCA9IHdpZHRoIHx8IHN0YXRpY0ltYWdlRGF0YS53aWR0aFxuICAgICAgICBpZiAoIXN0YXRpY0ltYWdlRGF0YS5oZWlnaHQgfHwgIXN0YXRpY0ltYWdlRGF0YS53aWR0aCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEFuIG9iamVjdCBzaG91bGQgb25seSBiZSBwYXNzZWQgdG8gdGhlIGltYWdlIGNvbXBvbmVudCBzcmMgcGFyYW1ldGVyIGlmIGl0IGNvbWVzIGZyb20gYSBzdGF0aWMgaW1hZ2UgaW1wb3J0LiBJdCBtdXN0IGluY2x1ZGUgaGVpZ2h0IGFuZCB3aWR0aC4gUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgc3RhdGljSW1hZ2VEYXRhLFxuICAgICAgICAgICAgKX1gLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBzcmMgPSB0eXBlb2Ygc3JjID09PSAnc3RyaW5nJyA/IHNyYyA6IHN0YXRpY1NyY1xuXG4gICAgY29uc3Qgd2lkdGhJbnQgPSBnZXRJbnQod2lkdGgpXG4gICAgY29uc3QgaGVpZ2h0SW50ID0gZ2V0SW50KGhlaWdodClcbiAgICBjb25zdCBxdWFsaXR5SW50ID0gZ2V0SW50KHF1YWxpdHkpXG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCFzcmMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEltYWdlIGlzIG1pc3NpbmcgcmVxdWlyZWQgXCJzcmNcIiBwcm9wZXJ0eS4gTWFrZSBzdXJlIHlvdSBwYXNzIFwic3JjXCIgaW4gcHJvcHMgdG8gdGhlIFxcYEByZWFjaGRpZ2l0YWwvaW1hZ2VcXGAgY29tcG9uZW50LiBSZWNlaXZlZDogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHsgd2lkdGgsIGhlaWdodCwgcXVhbGl0eSB9LFxuICAgICAgICAgICl9YCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKCFWQUxJRF9MQVlPVVRfVkFMVUVTLmluY2x1ZGVzKGxheW91dCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEltYWdlIHdpdGggc3JjIFwiJHtzcmN9XCIgaGFzIGludmFsaWQgXCJsYXlvdXRcIiBwcm9wZXJ0eS4gUHJvdmlkZWQgXCIke2xheW91dH1cIiBzaG91bGQgYmUgb25lIG9mICR7VkFMSURfTEFZT1VUX1ZBTFVFUy5tYXAoXG4gICAgICAgICAgICBTdHJpbmcsXG4gICAgICAgICAgKS5qb2luKCcsJyl9LmAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgKHR5cGVvZiB3aWR0aEludCAhPT0gJ3VuZGVmaW5lZCcgJiYgTnVtYmVyLmlzTmFOKHdpZHRoSW50KSkgfHxcbiAgICAgICAgKHR5cGVvZiBoZWlnaHRJbnQgIT09ICd1bmRlZmluZWQnICYmIE51bWJlci5pc05hTihoZWlnaHRJbnQpKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBJbWFnZSB3aXRoIHNyYyBcIiR7c3JjfVwiIGhhcyBpbnZhbGlkIFwid2lkdGhcIiBvciBcImhlaWdodFwiIHByb3BlcnR5LiBUaGVzZSBzaG91bGQgYmUgbnVtZXJpYyB2YWx1ZXMuYCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKCFWQUxJRF9MT0FESU5HX1ZBTFVFUy5pbmNsdWRlcyhsb2FkaW5nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogSW1hZ2Ugd2l0aCBzcmMgXCIke3NyY31cIiBoYXMgaW52YWxpZCBcImxvYWRpbmdcIiBwcm9wZXJ0eS4gUHJvdmlkZWQgXCIke2xvYWRpbmd9XCIgc2hvdWxkIGJlIG9uZSBvZiAke1ZBTElEX0xPQURJTkdfVkFMVUVTLm1hcChcbiAgICAgICAgICAgIFN0cmluZyxcbiAgICAgICAgICApLmpvaW4oJywnKX0uYCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKHBsYWNlaG9sZGVyID09PSAnYmx1cicpIHtcbiAgICAgICAgaWYgKGxheW91dCAhPT0gJ2ZpbGwnICYmICh3aWR0aEludCB8fCAwKSAqIChoZWlnaHRJbnQgfHwgMCkgPCAxNjAwKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogSW1hZ2Ugd2l0aCBzcmMgXCIke3NyY31cIiBpcyBzbWFsbGVyIHRoYW4gNDB4NDAuIENvbnNpZGVyIHJlbW92aW5nIHRoZSBcInBsYWNlaG9sZGVyPSdibHVyJ1wiIHByb3BlcnR5IHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuYCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFibHVyRGF0YVVSTCkge1xuICAgICAgICAgIGNvbnN0IFZBTElEX0JMVVJfRVhUID0gWydqcGVnJywgJ3BuZycsICd3ZWJwJ10gLy8gc2hvdWxkIG1hdGNoIG5leHQtaW1hZ2UtbG9hZGVyXG5cbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBJbWFnZSB3aXRoIHNyYyBcIiR7c3JjfVwiIGhhcyBcInBsYWNlaG9sZGVyPSdibHVyJ1wiIHByb3BlcnR5IGJ1dCBpcyBtaXNzaW5nIHRoZSBcImJsdXJEYXRhVVJMXCIgcHJvcGVydHkuXG4gICAgICAgICAgUG9zc2libGUgc29sdXRpb25zOlxuICAgICAgICAgICAgLSBBZGQgYSBcImJsdXJEYXRhVVJMXCIgcHJvcGVydHksIHRoZSBjb250ZW50cyBzaG91bGQgYmUgYSBzbWFsbCBEYXRhIFVSTCB0byByZXByZXNlbnQgdGhlIGltYWdlXG4gICAgICAgICAgICAtIENoYW5nZSB0aGUgXCJzcmNcIiBwcm9wZXJ0eSB0byBhIHN0YXRpYyBpbXBvcnQgd2l0aCBvbmUgb2YgdGhlIHN1cHBvcnRlZCBmaWxlIHR5cGVzOiAke1ZBTElEX0JMVVJfRVhULmpvaW4oXG4gICAgICAgICAgICAgICcsJyxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICAtIFJlbW92ZSB0aGUgXCJwbGFjZWhvbGRlclwiIHByb3BlcnR5LCBlZmZlY3RpdmVseSBubyBibHVyIGVmZmVjdFxuICAgICAgICAgIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvcGxhY2Vob2xkZXItYmx1ci1kYXRhLXVybGAsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB3aWR0aEludCA9PT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGhlaWdodEludCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmIChsYXlvdXQgPT09ICdmaWxsJykge1xuICAgICAgICAvLyBoYW5kbGUgZmlsbFxuICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIC8vIDxJbWFnZSBzcmM9XCJpLnBuZ1wiIC8+XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBJbWFnZSB3aXRoIHNyYyBcIiR7c3JjfVwiIG11c3QgdXNlIFwid2lkdGhcIiBhbmQgXCJoZWlnaHRcIiBwcm9wZXJ0aWVzIG9yIFwibGF5b3V0PSdmaWxsJ1wiIHByb3BlcnR5LmAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsb2FkaW5nID8/PSAnbGF6eSdcbiAgICBpZiAoc3JjICYmIHNyYy5zdGFydHNXaXRoKCdkYXRhOicpKSB7XG4gICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0Jhc2ljc19vZl9IVFRQL0RhdGFfVVJJc1xuICAgICAgdW5vcHRpbWl6ZWQgPSB0cnVlXG4gICAgfVxuXG4gICAgY29uc3QgYXR0cmlidXRlczN4ID0gZ2VuZXJhdGVTb3VyY2VBdHRycyh7XG4gICAgICBzcmMsXG4gICAgICBsYXlvdXQ6IGxheW91dCBhcyBMYXlvdXRWYWx1ZSxcbiAgICAgIGxvYWRlcixcbiAgICAgIHF1YWxpdHk6IHF1YWxpdHlJbnQsXG4gICAgICBzaXplcyxcbiAgICAgIHdpZHRoOiB3aWR0aEludCxcbiAgICAgIHNjYWxlOiAxLjUsXG4gICAgfSlcblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMyeCA9IGdlbmVyYXRlU291cmNlQXR0cnMoe1xuICAgICAgc3JjLFxuICAgICAgbGF5b3V0OiBsYXlvdXQgYXMgTGF5b3V0VmFsdWUsXG4gICAgICBsb2FkZXIsXG4gICAgICBxdWFsaXR5OiBxdWFsaXR5SW50LFxuICAgICAgc2l6ZXMsXG4gICAgICB3aWR0aDogd2lkdGhJbnQsXG4gICAgICBzY2FsZTogMSxcbiAgICB9KVxuXG4gICAgY29uc3QgYXR0cmlidXRlczF4ID0gZ2VuZXJhdGVTb3VyY2VBdHRycyh7XG4gICAgICBzcmMsXG4gICAgICBsYXlvdXQ6IGxheW91dCBhcyBMYXlvdXRWYWx1ZSxcbiAgICAgIGxvYWRlcixcbiAgICAgIHF1YWxpdHk6IHF1YWxpdHlJbnQsXG4gICAgICBzaXplcyxcbiAgICAgIHdpZHRoOiB3aWR0aEludCxcbiAgICAgIHNjYWxlOiAwLjUsXG4gICAgfSlcblxuICAgIGlmIChsYXlvdXQgIT09ICdmaXhlZCcgJiYgIXN0eWxlKSBzdHlsZSA9IHt9XG4gICAgaWYgKGxheW91dCA9PT0gJ3Jlc3BvbnNpdmUnKSBzdHlsZSA9IHsgLi4uc3R5bGUsIHdpZHRoOiAnMTAwJScsIGhlaWdodDogJ2F1dG8nIH1cbiAgICBpZiAobGF5b3V0ID09PSAnaW50cmluc2ljJykgc3R5bGUgPSB7IC4uLnN0eWxlLCB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICdhdXRvJywgbWF4V2lkdGg6IHdpZHRoIH1cbiAgICBpZiAobGF5b3V0ID09PSAnZmlsbCcpIHN0eWxlID0geyAuLi5zdHlsZSwgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHt1bm9wdGltaXplZCA/IChcbiAgICAgICAgICA8aW1nIHJlZj17cmVmfSB7Li4uaW1nUHJvcHN9IHNyYz17c3JjfSB3aWR0aD17d2lkdGh9IGhlaWdodD17aGVpZ2h0fSBzdHlsZT17c3R5bGV9IC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPHBpY3R1cmU+XG4gICAgICAgICAgICA8c291cmNlIG1lZGlhPScoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyLjUpJyB7Li4uYXR0cmlidXRlczN4fSAvPlxuICAgICAgICAgICAgPHNvdXJjZSBtZWRpYT0nKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMS41KScgey4uLmF0dHJpYnV0ZXMyeH0gLz5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgICAgIHsuLi5pbWdQcm9wc31cbiAgICAgICAgICAgICAgey4uLmF0dHJpYnV0ZXMxeH1cbiAgICAgICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICAgICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3BpY3R1cmU+XG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkaW5nID09PSAnZWFnZXInICYmIChcbiAgICAgICAgICA8SGVhZD5cbiAgICAgICAgICAgIDxsaW5rXG4gICAgICAgICAgICAgIGtleT17YF9fbmltZy0yeC0ke2F0dHJpYnV0ZXMxeC5zcmNTZXR9JHthdHRyaWJ1dGVzMXguc2l6ZXN9YH1cbiAgICAgICAgICAgICAgcmVsPSdwcmVsb2FkJ1xuICAgICAgICAgICAgICBhcz0naW1hZ2UnXG4gICAgICAgICAgICAgIG1lZGlhPScoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyLjUpJ1xuICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGltYWdlc3Jjc2V0IGlzIG5vdCB5ZXQgaW4gdGhlIGxpbmsgZWxlbWVudCB0eXBlXG4gICAgICAgICAgICAgIGltYWdlc3Jjc2V0PXthdHRyaWJ1dGVzMXguc3JjU2V0fVxuICAgICAgICAgICAgICBpbWFnZXNpemVzPXtzaXplc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9IZWFkPlxuICAgICAgICApfVxuICAgICAgPC8+XG4gICAgKVxuICB9LFxuKVxuSW1hZ2UuZGlzcGxheU5hbWUgPSAnTmV4dFBpY3R1cmUnXG5cbmV4cG9ydCB7IEltYWdlIH1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../components/Image.tsx\n");
19
+
20
+ /***/ })
21
+
22
+ });