@wildmio/excalidraw 0.18.0-custom-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -0
- package/dist/dev/chunk-4BGRJMQS.js +7 -0
- package/dist/dev/chunk-4BGRJMQS.js.map +7 -0
- package/dist/dev/chunk-55IZTNXR.js +5472 -0
- package/dist/dev/chunk-55IZTNXR.js.map +7 -0
- package/dist/dev/chunk-6JJSWC4C.js +4132 -0
- package/dist/dev/chunk-6JJSWC4C.js.map +7 -0
- package/dist/dev/chunk-OCFTI2BU.js +743 -0
- package/dist/dev/chunk-OCFTI2BU.js.map +7 -0
- package/dist/dev/chunk-WCM2OLWY.js +69 -0
- package/dist/dev/chunk-WCM2OLWY.js.map +7 -0
- package/dist/dev/chunk-XDFCUUT6.js +31 -0
- package/dist/dev/chunk-XDFCUUT6.js.map +7 -0
- package/dist/dev/data/image-HFX5FVZR.js +13 -0
- package/dist/dev/data/image-HFX5FVZR.js.map +7 -0
- package/dist/dev/fonts/Assistant/Assistant-Bold.woff2 +0 -0
- package/dist/dev/fonts/Assistant/Assistant-Medium.woff2 +0 -0
- package/dist/dev/fonts/Assistant/Assistant-Regular.woff2 +0 -0
- package/dist/dev/fonts/Assistant/Assistant-SemiBold.woff2 +0 -0
- package/dist/dev/fonts/Cascadia/CascadiaCode-Regular.woff2 +0 -0
- package/dist/dev/fonts/ComicShanns/ComicShanns-Regular-279a7b317d12eb88de06167bd672b4b4.woff2 +0 -0
- package/dist/dev/fonts/ComicShanns/ComicShanns-Regular-6e066e8de2ac57ea9283adb9c24d7f0c.woff2 +0 -0
- package/dist/dev/fonts/ComicShanns/ComicShanns-Regular-dc6a8806fa96795d7b3be5026f989a17.woff2 +0 -0
- package/dist/dev/fonts/ComicShanns/ComicShanns-Regular-fcb0fc02dcbee4c9846b3e2508668039.woff2 +0 -0
- package/dist/dev/fonts/Excalifont/Excalifont-Regular-349fac6ca4700ffec595a7150a0d1e1d.woff2 +0 -0
- package/dist/dev/fonts/Excalifont/Excalifont-Regular-3f2c5db56cc93c5a6873b1361d730c16.woff2 +0 -0
- package/dist/dev/fonts/Excalifont/Excalifont-Regular-41b173a47b57366892116a575a43e2b6.woff2 +0 -0
- package/dist/dev/fonts/Excalifont/Excalifont-Regular-623ccf21b21ef6b3a0d87738f77eb071.woff2 +0 -0
- package/dist/dev/fonts/Excalifont/Excalifont-Regular-a88b72a24fb54c9f94e3b5fdaa7481c9.woff2 +0 -0
- package/dist/dev/fonts/Excalifont/Excalifont-Regular-b9dcf9d2e50a1eaf42fc664b50a3fd0d.woff2 +0 -0
- package/dist/dev/fonts/Excalifont/Excalifont-Regular-be310b9bcd4f1a43f571c46df7809174.woff2 +0 -0
- package/dist/dev/fonts/Liberation/LiberationSans-Regular.woff2 +0 -0
- package/dist/dev/fonts/Lilita/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYE98RXi4EwSsbg.woff2 +0 -0
- package/dist/dev/fonts/Lilita/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYEF8RXi4EwQ.woff2 +0 -0
- package/dist/dev/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTA3j6zbXWjgevT5.woff2 +0 -0
- package/dist/dev/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTQ3j6zbXWjgeg.woff2 +0 -0
- package/dist/dev/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTk3j6zbXWjgevT5.woff2 +0 -0
- package/dist/dev/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTo3j6zbXWjgevT5.woff2 +0 -0
- package/dist/dev/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTs3j6zbXWjgevT5.woff2 +0 -0
- package/dist/dev/fonts/Virgil/Virgil-Regular.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-019d66dcad46dc156b162d267f981c20.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-04b718e5623574919c8b0dea5f301444.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-069e77aac84590e2e991d0a0176d34f2.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-06c77b8c66e51ed6c63ccb502dd8b8af.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-08e0dc436ad0ad61ba5558db0674d762.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-093b9ef39a46ceae95a1df18a0a3a326.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-095c169f3314805276f603a362766abd.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-09850c4077f3fffe707905872e0e2460.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-0986d134c05864f5025962eef9f994a0.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-0b5d723fdc4e249c140f0909e87d03b4.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-0f626226ba1272e832aea87bafd9720e.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-0f7fb1e0d5015bb1371343153ecf7ce3.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-0fa55a080fcd0f9dc2e0b0058b793df8.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-0facdf1ea213ba40261022f5d5ed4493.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-10a7ae9a371830a80c3d844acf1c02d7.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-112c051027b2d766c19a519f6ee1f4f7.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-11c345711937f0ba4b8f7b6b919c8440.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-12b52b58eb3df36804b9a654ec9ee194.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-13ae07ed2e272d26d59bc0691cd7117a.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-13d2887ec8ee73c43acdabc52a05af7b.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-145aa02cdd91946e67dc934e1acffe75.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-15dc6d811c9cd078f9086a740d5a1038.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-173945821411c09f70c95f98d590e697.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-1b611157cd46bb184d4fa4dae2d6a2b8.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-1e6fd68f1f3902ce48ce8c69df385622.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-1ee544f0f1dac422545c505baa788992.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-1fdc0c67ed57263a80fd108c1f6ccf24.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-203b0e569e3b14aac86a003dc3fa523e.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-20cc1bbf50e7efb442756cb605672c1f.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-20e7bf72fa05de9adf7dbcc7bf51dde6.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-21430ee05a1248901da8d0de08744d47.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-23686f7f29da6e8008c36dd3a80c83d6.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-23ad2d71b280f00b1363b95b7bea94eb.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-23f228f3999c01983860012330e4be08.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-24476a126f129212beb33f66853ea151.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-24a21c1e4449222e8d1898d69ff3a404.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-25b7f38e18f035f96cb5e547bd2bd08c.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-29cec36cd205b211da97acabaa62f055.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-2a26d20a23b00898ce82f09d2ee47c3f.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-2adbc89c11e65905393d3dfc468b9d5b.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-2b7441d46298788ac94e610ffcc709b6.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-2b77e8ebfb2367ab2662396a60e7d320.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-2cf96d082d35ea3d8106851223ad0d16.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-2d43040e86ff03ba677f6f9c04cd0805.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-2e33e8dc771ef5e1d9127d60a6b73679.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-33432927cd87d40cfe393c7482bf221f.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-353f33792a8f60dc69323ddf635a269e.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-36925dfe329a45086cbb7fc5c20d45ac.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-3717077e38f98d89eae729b6c14e56dc.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-3756e81d3e149cf6099163ee79944fec.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-395c35dd584b56b0789f58a0559beaf1.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-3c9de2ae0ea4bc91a510942dfa4be8d2.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-3cc70dbb64df5b21f1326cc24dee2195.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-3e1f8f654357353bf0e04ba5c34b5f7f.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-3e63ed8162808a9e425ed80a8bc79114.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-3eaa538115d76932653c21d8dc28f207.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-4095eb84ef3874e2600247bee0b04026.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-41521fade99856108931b4768b1b2648.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-450da755d5bcb70906e1295e559b9602.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-452225341522a7942f0f6aab1a5c91a3.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-4535823663ad81405188a528d8f2b1a2.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-4806e761d750087c2d734fc64596eaff.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-4a0fdb40036e87b40aa08dd30584cb85.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-4a38cc3e9cf104e69ba246d37f8cf135.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-4aca6a43e59aceee2166b0c7e4e85ef1.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-4bfaa8ffa64c5ee560aa2daba7c9cbd3.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-4dc6d5f188d5c96d44815cd1e81aa885.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-4ddc14ed3eb0c3e46364317dfc0144a3.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-4ee10ae43505e2e0bc62656ced49c0fa.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-4f50e5136e136527280bc902c5817561.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-51502f1206be09c565f1547c406e9558.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-51a0e808bbc8361236ac521a119758a3.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-52a84a22fd1369bffeaf21da2d6158dc.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-5330a2119a716e4e7224ed108b085dac.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-543fa46ace099a7099dad69123399400.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-544fc28abe2c5c30e62383fd4dac255f.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-54acdfc2166ad7fcbd074f75fd4a56ba.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-5572b3513ba8df57a3d5d7303ee6b11b.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-56467a5c8840c4d23a60b2f935114848.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-56a32a7689abd0326e57c10c6c069bb4.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-57862b464a55b18c7bf234ce22907d73.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-583d166e56ba0de4b77eabb47ef67839.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-5882ffa04f32584d26109137e2da4352.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-58fd02350d0bc52cf1ca3bb32ce9766e.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-5935a5775af3d5c6307ac667bd9ae74e.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-59e9ff77b0efaf684bc09274fb6908c9.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-5a1ce3117cfe90c48e8fb4a9a00f694d.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-5a45d991244d4c7140217e1e5f5ca4f4.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-5a7fac4b8b23a6e4e5ba0c9bf1756c91.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-5b0ed6971aaab9c8ad563230bd5471a7.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-5d2898fbc097a7e24c6f38d80587621e.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-603aefd23e350ba7eb124273e3c9bcf1.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-60a3089806700d379f11827ee9843b6b.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-60a41c7e1c68f22424e6d22df544bc82.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-642b26e2e5f5fb780b51b593dbc8c851.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-66493ba5a8367f2928812f446f47b56a.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-670ba603758d94268e8606f240a42e12.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-671a2c20b1eb9e4ef8a192833940e319.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-684d65f1793cac449dde5d59cb3c47fb.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-69c09cc5fa3e55c74fc4821f76909cc3.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-6ae5b42180ad70b971c91e7eefb8eba2.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-6e092f71c1e634059ada0e52abadce67.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-6f3256af8454371776bc46670d33cc65.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-6fe5c5973cc06f74b2387a631ea36b88.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-70c2eb8d64e71a42a834eb857ea9df51.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-70e811fd7994e61f408c923de6ddd078.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-7197d6fda6cba7c3874c53d6381ca239.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-72252d73220fa3cd856677888cee1635.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-72536a3d71b694a0d53dd90ddceae41e.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-726303e0774b4e678bff8c2deb6ca603.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-733171b4ffcd17ea1fe1c0ba627173bf.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-739bc1a567439c7cffcd1614644593d2.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-73e309718fd16cea44b4d54a33581811.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-7494dc504ae00ee9cd0505f990f88c5d.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-74e2263a91439c25b91d5132ce9f4d62.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-761d05e3cd968cf574166867998ef06a.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-7718fe60986d8b42b1be9c5ace5ccf25.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-774d4f764a1299da5d28ec2f2ffe0d69.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-79d494361ae093b69e74ee9dbe65bfd4.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-79f007c1c6d07557120982951ea67998.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-7a07ddc0f0c0f5f4a9bad6ee3dda66b5.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-7ab2bed91166a9dca83a5ebfbe2a7f38.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-7ccce86603f80a099ddb0cb21d4ae3e3.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-7e4bde7e9c7f84cd34d8a845e384c746.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-7e929f262f30c8ee78bf398150b1a7cd.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-7eb9fffd1aa890d07d0f88cc82e6cfe4.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-7f855356ab893b0d2b9c1c83b8116f0e.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-829615148e6357d826b9242eb7fbbd1e.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-866fa7613df6b3fd272bcfd4530c0bb9.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-87599f94b6cc129d505b375798d0d751.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-8c2f33cee3993174f7e87c28e4bf42ee.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-8d3bcabb847b56243b16afe62adaaf21.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-8de5b863cb50dfefdd07cb11c774d579.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-8e9f97f01034820170065b2921b4fb5e.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-8f476c4c99813d57cbe6eca4727388ad.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-903bb6865f3452e2fda42e3a25547bc5.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-91ddb2969bf2d31ba02ad82998d1314c.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-938d90c10ff8c20386af7f242c05d6b0.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-93fc8f28a33234bcadf1527cafabd502.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-95429962233afd82db1c27df1500a28c.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-9544732d2e62d1a429674f8ee41b5d3a.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-9592bfc861f07bcb8d75c196b370e548.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-95bfd249da4902577b4b7d76ebdd0b44.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-968cffdc8ee679da094e77ebf50f58ef.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-97f7f48ce90c9429bf32ae51469db74d.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-982b630266d87db93d2539affb1275c6.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-98f2ad84457de7f3740d9920b8fa8667.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-99a16ef6a64934d5781933dbd9c46b2e.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-9cfb2a77a4e45025105ad29a1748b90d.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-9d81066dd2b337c938df6e90380a00dc.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-9eb5a99df4e76ac3363453ac9ca288b1.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-a004ddfcb26e67bd6e678c8ed19e25ce.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-a0ca5df4258213d7fc9fce80f65ce760.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-a1f916d6039285c4ffb900cd654e418f.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-a203b91dad570bf05a58c3c3ddb529bf.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-a365e82ed54697a52f27adcea1315fe8.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-a4c34be6d42152e64b0df90bc4607f64.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-a7accba310e821da5505f71c03b76bdb.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-aa0d470430e6391eca720c7cfa44446f.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-aa5c9ca6cf4fba00433b7aa3fa10671a.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-ac9ceb44437becc3e9c4dbfebab7fc2d.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-b1220a3c61f85cc0408deedb4c5f57a2.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-b358f7a51ece39a3247942b1feabdb29.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-b57aaedfd8ebdf3931f25119dc6a5eb2.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-b5c1596551c256e0e9cf02028595b092.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-b6d128682ee29e471486354d486a1b90.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-b6fd38ca30869792244804b04bc058da.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-b7d203b051eff504ff59ddca7576b6a9.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-b96d9226ce77ec94ceca043d712182e6.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-ba3de316d63c7e339987b16f41a0b879.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-bafff7a14c27403dcc6cf1432e8ea836.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-bd77e3c7f9e0b072d96af37f73d1aa32.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-be549ab72f0719d606a5c01e2c0219b6.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-c16ed9740b85badf16e86ea782a3062f.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-c1f94158256bb1f3bf665b053d895af9.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-c40533fdf4cc57177b12803598af7e59.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-c4a687ac4f0c2766eefc9f77ed99cddf.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-c69f61a4ab18d0488c8d1fc12e7028e8.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-c8b71798409ccc126ee264a00aadcf21.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-c99eda15fc26a2941579560f76c3a5cf.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-cb17fc3db95f6d139afc9d31a8e93293.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-cbaaefaaf326668277aa24dfa93c4d28.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-cd145ce4a0ea18469358df53c207bc1b.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-cdbce89e82cc1ab53a2decbf5819278f.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-ce4884f96f11589608b76b726a755803.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-cf2cc71752631e579e35b0e423bf2638.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-cf6ff4e0f491ca0cf3038187a997b9b4.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-cfb211578629b7e8153b37240de6a9d5.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-d0cf73942fea1c74edbdf0b3011f4656.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-d2666cbed13462c5dc36fa2f15c202ca.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-d3716376641d615e2995605b29bca7b6.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-dac48066b5883d8b4551fc584f0c2a3e.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-dbea1af6dcd9860be40c3d18254338f5.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-e11567fd2accf9957cd0d3c2be937d87.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-e2ead7ea7da0437f085f42ffc05f8d13.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-e3fcf5180fd466c8915c4e8069491054.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-e480d9c614742d05f0e78f274f1e69e6.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-e4bca6cfa53e499cae0a6be4894a90e9.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-e51ef413167c6e14e0c0fdcc585f2fc9.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-e5f453bb04da18eed01675eeebd88bf8.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-e656f091b9dc4709722c9f4b84d3c797.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-ec181b795ac1fb5a50d700b6e996d745.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-ee8bae97908d5147b423f77ad0d3c1bb.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-f0f13b5c60e0af5553bd359f5513be1b.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-f2b54d4e7be0eaefe1c2c56836fa5368.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-f56414bf9bced67990def8660e306759.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-f5d079153c99a25b9be5b8583c4cc8a7.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-f6032fc06eb20480f096199713f70885.woff2 +0 -0
- package/dist/dev/fonts/Xiaolai/Xiaolai-Regular-f8ee5d36068a42b51d0e4a1116cfcec1.woff2 +0 -0
- package/dist/dev/index.css +7174 -0
- package/dist/dev/index.css.map +7 -0
- package/dist/dev/index.js +42406 -0
- package/dist/dev/index.js.map +7 -0
- package/dist/dev/locales/ar-SA-JK5MQ7TT.js +744 -0
- package/dist/dev/locales/ar-SA-JK5MQ7TT.js.map +7 -0
- package/dist/dev/locales/az-AZ-2PAD62G4.js +744 -0
- package/dist/dev/locales/az-AZ-2PAD62G4.js.map +7 -0
- package/dist/dev/locales/bg-BG-HUKVYCRK.js +744 -0
- package/dist/dev/locales/bg-BG-HUKVYCRK.js.map +7 -0
- package/dist/dev/locales/bn-BD-V2CQI46P.js +744 -0
- package/dist/dev/locales/bn-BD-V2CQI46P.js.map +7 -0
- package/dist/dev/locales/bn-IN-MBEO4C3J.js +744 -0
- package/dist/dev/locales/bn-IN-MBEO4C3J.js.map +7 -0
- package/dist/dev/locales/ca-ES-KWEKW4C3.js +744 -0
- package/dist/dev/locales/ca-ES-KWEKW4C3.js.map +7 -0
- package/dist/dev/locales/cs-CZ-W5AHZB5H.js +744 -0
- package/dist/dev/locales/cs-CZ-W5AHZB5H.js.map +7 -0
- package/dist/dev/locales/da-DK-ITTM6YM4.js +744 -0
- package/dist/dev/locales/da-DK-ITTM6YM4.js.map +7 -0
- package/dist/dev/locales/de-CH-OAWPDQFJ.js +744 -0
- package/dist/dev/locales/de-CH-OAWPDQFJ.js.map +7 -0
- package/dist/dev/locales/de-DE-HE4SJIAA.js +744 -0
- package/dist/dev/locales/de-DE-HE4SJIAA.js.map +7 -0
- package/dist/dev/locales/el-GR-QXASZLPE.js +744 -0
- package/dist/dev/locales/el-GR-QXASZLPE.js.map +7 -0
- package/dist/dev/locales/en-MLZIHOCR.js +80 -0
- package/dist/dev/locales/en-MLZIHOCR.js.map +7 -0
- package/dist/dev/locales/es-ES-EDA76ZAF.js +744 -0
- package/dist/dev/locales/es-ES-EDA76ZAF.js.map +7 -0
- package/dist/dev/locales/eu-ES-TF2DGTZU.js +744 -0
- package/dist/dev/locales/eu-ES-TF2DGTZU.js.map +7 -0
- package/dist/dev/locales/fa-IR-ITKFQ7QV.js +744 -0
- package/dist/dev/locales/fa-IR-ITKFQ7QV.js.map +7 -0
- package/dist/dev/locales/fi-FI-UWZRVXFI.js +744 -0
- package/dist/dev/locales/fi-FI-UWZRVXFI.js.map +7 -0
- package/dist/dev/locales/fr-FR-Z3SBW42Y.js +744 -0
- package/dist/dev/locales/fr-FR-Z3SBW42Y.js.map +7 -0
- package/dist/dev/locales/gl-ES-2QCVIBFP.js +744 -0
- package/dist/dev/locales/gl-ES-2QCVIBFP.js.map +7 -0
- package/dist/dev/locales/he-IL-WJNUHU26.js +744 -0
- package/dist/dev/locales/he-IL-WJNUHU26.js.map +7 -0
- package/dist/dev/locales/hi-IN-XGMO235V.js +744 -0
- package/dist/dev/locales/hi-IN-XGMO235V.js.map +7 -0
- package/dist/dev/locales/hu-HU-37FDQFIS.js +744 -0
- package/dist/dev/locales/hu-HU-37FDQFIS.js.map +7 -0
- package/dist/dev/locales/id-ID-EJIDCO4E.js +744 -0
- package/dist/dev/locales/id-ID-EJIDCO4E.js.map +7 -0
- package/dist/dev/locales/it-IT-HD26UZNF.js +744 -0
- package/dist/dev/locales/it-IT-HD26UZNF.js.map +7 -0
- package/dist/dev/locales/ja-JP-37FC23PR.js +744 -0
- package/dist/dev/locales/ja-JP-37FC23PR.js.map +7 -0
- package/dist/dev/locales/kaa-7ZYDFVKA.js +744 -0
- package/dist/dev/locales/kaa-7ZYDFVKA.js.map +7 -0
- package/dist/dev/locales/kab-KAB-MILWXBA6.js +744 -0
- package/dist/dev/locales/kab-KAB-MILWXBA6.js.map +7 -0
- package/dist/dev/locales/kk-KZ-7BWTPIAV.js +744 -0
- package/dist/dev/locales/kk-KZ-7BWTPIAV.js.map +7 -0
- package/dist/dev/locales/km-KH-BV4P2KSZ.js +744 -0
- package/dist/dev/locales/km-KH-BV4P2KSZ.js.map +7 -0
- package/dist/dev/locales/ko-KR-TSXE5P7B.js +744 -0
- package/dist/dev/locales/ko-KR-TSXE5P7B.js.map +7 -0
- package/dist/dev/locales/ku-TR-ASSXNN3U.js +744 -0
- package/dist/dev/locales/ku-TR-ASSXNN3U.js.map +7 -0
- package/dist/dev/locales/lt-LT-G7RZYQQU.js +744 -0
- package/dist/dev/locales/lt-LT-G7RZYQQU.js.map +7 -0
- package/dist/dev/locales/lv-LV-DXNPBJZU.js +744 -0
- package/dist/dev/locales/lv-LV-DXNPBJZU.js.map +7 -0
- package/dist/dev/locales/mr-IN-7F2ZCTCF.js +744 -0
- package/dist/dev/locales/mr-IN-7F2ZCTCF.js.map +7 -0
- package/dist/dev/locales/my-MM-NBI3KQGW.js +744 -0
- package/dist/dev/locales/my-MM-NBI3KQGW.js.map +7 -0
- package/dist/dev/locales/nb-NO-4DCTQT6L.js +744 -0
- package/dist/dev/locales/nb-NO-4DCTQT6L.js.map +7 -0
- package/dist/dev/locales/nl-NL-RCSOXLW3.js +744 -0
- package/dist/dev/locales/nl-NL-RCSOXLW3.js.map +7 -0
- package/dist/dev/locales/nn-NO-FR534JV5.js +744 -0
- package/dist/dev/locales/nn-NO-FR534JV5.js.map +7 -0
- package/dist/dev/locales/oc-FR-YQCIKZIK.js +744 -0
- package/dist/dev/locales/oc-FR-YQCIKZIK.js.map +7 -0
- package/dist/dev/locales/pa-IN-UM43JGD2.js +744 -0
- package/dist/dev/locales/pa-IN-UM43JGD2.js.map +7 -0
- package/dist/dev/locales/percentages-TR7IWPFY.js +12 -0
- package/dist/dev/locales/percentages-TR7IWPFY.js.map +7 -0
- package/dist/dev/locales/pl-PL-2UGKA6HK.js +744 -0
- package/dist/dev/locales/pl-PL-2UGKA6HK.js.map +7 -0
- package/dist/dev/locales/pt-BR-H23QFYE3.js +744 -0
- package/dist/dev/locales/pt-BR-H23QFYE3.js.map +7 -0
- package/dist/dev/locales/pt-PT-RHKJH5I5.js +744 -0
- package/dist/dev/locales/pt-PT-RHKJH5I5.js.map +7 -0
- package/dist/dev/locales/ro-RO-IIFONL3T.js +744 -0
- package/dist/dev/locales/ro-RO-IIFONL3T.js.map +7 -0
- package/dist/dev/locales/ru-RU-QEP6D7GK.js +744 -0
- package/dist/dev/locales/ru-RU-QEP6D7GK.js.map +7 -0
- package/dist/dev/locales/si-LK-LZYJQLHF.js +744 -0
- package/dist/dev/locales/si-LK-LZYJQLHF.js.map +7 -0
- package/dist/dev/locales/sk-SK-G2J6PSCB.js +744 -0
- package/dist/dev/locales/sk-SK-G2J6PSCB.js.map +7 -0
- package/dist/dev/locales/sl-SI-QJT2CAUO.js +744 -0
- package/dist/dev/locales/sl-SI-QJT2CAUO.js.map +7 -0
- package/dist/dev/locales/sv-SE-3MAT3NDX.js +744 -0
- package/dist/dev/locales/sv-SE-3MAT3NDX.js.map +7 -0
- package/dist/dev/locales/ta-IN-J7XOYF2T.js +744 -0
- package/dist/dev/locales/ta-IN-J7XOYF2T.js.map +7 -0
- package/dist/dev/locales/th-TH-2OI52EOQ.js +744 -0
- package/dist/dev/locales/th-TH-2OI52EOQ.js.map +7 -0
- package/dist/dev/locales/tr-TR-G7TAUHUI.js +744 -0
- package/dist/dev/locales/tr-TR-G7TAUHUI.js.map +7 -0
- package/dist/dev/locales/uk-UA-IVSVBJIG.js +744 -0
- package/dist/dev/locales/uk-UA-IVSVBJIG.js.map +7 -0
- package/dist/dev/locales/uz-UZ-KCVDUVDE.js +744 -0
- package/dist/dev/locales/uz-UZ-KCVDUVDE.js.map +7 -0
- package/dist/dev/locales/vi-VN-XF3AYKJ7.js +744 -0
- package/dist/dev/locales/vi-VN-XF3AYKJ7.js.map +7 -0
- package/dist/dev/locales/zh-CN-IS26RG2D.js +744 -0
- package/dist/dev/locales/zh-CN-IS26RG2D.js.map +7 -0
- package/dist/dev/locales/zh-HK-KBWQ6SJC.js +744 -0
- package/dist/dev/locales/zh-HK-KBWQ6SJC.js.map +7 -0
- package/dist/dev/locales/zh-TW-JKJWJQ4J.js +744 -0
- package/dist/dev/locales/zh-TW-JKJWJQ4J.js.map +7 -0
- package/dist/dev/subset-shared.chunk.js +15 -0
- package/dist/dev/subset-shared.chunk.js.map +7 -0
- package/dist/dev/subset-worker.chunk.js +26 -0
- package/dist/dev/subset-worker.chunk.js.map +7 -0
- package/dist/prod/chunk-2KZTCREM.js +4 -0
- package/dist/prod/chunk-Q7BNPSJU.js +1 -0
- package/dist/prod/chunk-QNG5NH6R.js +12 -0
- package/dist/prod/chunk-RKNJTMKK.js +7 -0
- package/dist/prod/chunk-SRAX5OIU.js +1 -0
- package/dist/prod/chunk-Z5NKEFVG.js +86 -0
- package/dist/prod/data/image-CRABYHXF.js +1 -0
- package/dist/prod/fonts/Assistant/Assistant-Bold.woff2 +0 -0
- package/dist/prod/fonts/Assistant/Assistant-Medium.woff2 +0 -0
- package/dist/prod/fonts/Assistant/Assistant-Regular.woff2 +0 -0
- package/dist/prod/fonts/Assistant/Assistant-SemiBold.woff2 +0 -0
- package/dist/prod/fonts/Cascadia/CascadiaCode-Regular.woff2 +0 -0
- package/dist/prod/fonts/ComicShanns/ComicShanns-Regular-279a7b317d12eb88de06167bd672b4b4.woff2 +0 -0
- package/dist/prod/fonts/ComicShanns/ComicShanns-Regular-6e066e8de2ac57ea9283adb9c24d7f0c.woff2 +0 -0
- package/dist/prod/fonts/ComicShanns/ComicShanns-Regular-dc6a8806fa96795d7b3be5026f989a17.woff2 +0 -0
- package/dist/prod/fonts/ComicShanns/ComicShanns-Regular-fcb0fc02dcbee4c9846b3e2508668039.woff2 +0 -0
- package/dist/prod/fonts/Excalifont/Excalifont-Regular-349fac6ca4700ffec595a7150a0d1e1d.woff2 +0 -0
- package/dist/prod/fonts/Excalifont/Excalifont-Regular-3f2c5db56cc93c5a6873b1361d730c16.woff2 +0 -0
- package/dist/prod/fonts/Excalifont/Excalifont-Regular-41b173a47b57366892116a575a43e2b6.woff2 +0 -0
- package/dist/prod/fonts/Excalifont/Excalifont-Regular-623ccf21b21ef6b3a0d87738f77eb071.woff2 +0 -0
- package/dist/prod/fonts/Excalifont/Excalifont-Regular-a88b72a24fb54c9f94e3b5fdaa7481c9.woff2 +0 -0
- package/dist/prod/fonts/Excalifont/Excalifont-Regular-b9dcf9d2e50a1eaf42fc664b50a3fd0d.woff2 +0 -0
- package/dist/prod/fonts/Excalifont/Excalifont-Regular-be310b9bcd4f1a43f571c46df7809174.woff2 +0 -0
- package/dist/prod/fonts/Liberation/LiberationSans-Regular.woff2 +0 -0
- package/dist/prod/fonts/Lilita/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYE98RXi4EwSsbg.woff2 +0 -0
- package/dist/prod/fonts/Lilita/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYEF8RXi4EwQ.woff2 +0 -0
- package/dist/prod/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTA3j6zbXWjgevT5.woff2 +0 -0
- package/dist/prod/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTQ3j6zbXWjgeg.woff2 +0 -0
- package/dist/prod/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTk3j6zbXWjgevT5.woff2 +0 -0
- package/dist/prod/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTo3j6zbXWjgevT5.woff2 +0 -0
- package/dist/prod/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTs3j6zbXWjgevT5.woff2 +0 -0
- package/dist/prod/fonts/Virgil/Virgil-Regular.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-019d66dcad46dc156b162d267f981c20.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-04b718e5623574919c8b0dea5f301444.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-069e77aac84590e2e991d0a0176d34f2.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-06c77b8c66e51ed6c63ccb502dd8b8af.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-08e0dc436ad0ad61ba5558db0674d762.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-093b9ef39a46ceae95a1df18a0a3a326.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-095c169f3314805276f603a362766abd.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-09850c4077f3fffe707905872e0e2460.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-0986d134c05864f5025962eef9f994a0.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-0b5d723fdc4e249c140f0909e87d03b4.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-0f626226ba1272e832aea87bafd9720e.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-0f7fb1e0d5015bb1371343153ecf7ce3.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-0fa55a080fcd0f9dc2e0b0058b793df8.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-0facdf1ea213ba40261022f5d5ed4493.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-10a7ae9a371830a80c3d844acf1c02d7.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-112c051027b2d766c19a519f6ee1f4f7.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-11c345711937f0ba4b8f7b6b919c8440.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-12b52b58eb3df36804b9a654ec9ee194.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-13ae07ed2e272d26d59bc0691cd7117a.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-13d2887ec8ee73c43acdabc52a05af7b.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-145aa02cdd91946e67dc934e1acffe75.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-15dc6d811c9cd078f9086a740d5a1038.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-173945821411c09f70c95f98d590e697.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-1b611157cd46bb184d4fa4dae2d6a2b8.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-1e6fd68f1f3902ce48ce8c69df385622.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-1ee544f0f1dac422545c505baa788992.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-1fdc0c67ed57263a80fd108c1f6ccf24.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-203b0e569e3b14aac86a003dc3fa523e.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-20cc1bbf50e7efb442756cb605672c1f.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-20e7bf72fa05de9adf7dbcc7bf51dde6.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-21430ee05a1248901da8d0de08744d47.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-23686f7f29da6e8008c36dd3a80c83d6.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-23ad2d71b280f00b1363b95b7bea94eb.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-23f228f3999c01983860012330e4be08.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-24476a126f129212beb33f66853ea151.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-24a21c1e4449222e8d1898d69ff3a404.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-25b7f38e18f035f96cb5e547bd2bd08c.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-29cec36cd205b211da97acabaa62f055.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-2a26d20a23b00898ce82f09d2ee47c3f.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-2adbc89c11e65905393d3dfc468b9d5b.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-2b7441d46298788ac94e610ffcc709b6.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-2b77e8ebfb2367ab2662396a60e7d320.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-2cf96d082d35ea3d8106851223ad0d16.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-2d43040e86ff03ba677f6f9c04cd0805.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-2e33e8dc771ef5e1d9127d60a6b73679.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-33432927cd87d40cfe393c7482bf221f.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-353f33792a8f60dc69323ddf635a269e.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-36925dfe329a45086cbb7fc5c20d45ac.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-3717077e38f98d89eae729b6c14e56dc.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-3756e81d3e149cf6099163ee79944fec.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-395c35dd584b56b0789f58a0559beaf1.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-3c9de2ae0ea4bc91a510942dfa4be8d2.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-3cc70dbb64df5b21f1326cc24dee2195.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-3e1f8f654357353bf0e04ba5c34b5f7f.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-3e63ed8162808a9e425ed80a8bc79114.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-3eaa538115d76932653c21d8dc28f207.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-4095eb84ef3874e2600247bee0b04026.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-41521fade99856108931b4768b1b2648.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-450da755d5bcb70906e1295e559b9602.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-452225341522a7942f0f6aab1a5c91a3.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-4535823663ad81405188a528d8f2b1a2.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-4806e761d750087c2d734fc64596eaff.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-4a0fdb40036e87b40aa08dd30584cb85.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-4a38cc3e9cf104e69ba246d37f8cf135.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-4aca6a43e59aceee2166b0c7e4e85ef1.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-4bfaa8ffa64c5ee560aa2daba7c9cbd3.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-4dc6d5f188d5c96d44815cd1e81aa885.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-4ddc14ed3eb0c3e46364317dfc0144a3.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-4ee10ae43505e2e0bc62656ced49c0fa.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-4f50e5136e136527280bc902c5817561.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-51502f1206be09c565f1547c406e9558.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-51a0e808bbc8361236ac521a119758a3.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-52a84a22fd1369bffeaf21da2d6158dc.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-5330a2119a716e4e7224ed108b085dac.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-543fa46ace099a7099dad69123399400.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-544fc28abe2c5c30e62383fd4dac255f.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-54acdfc2166ad7fcbd074f75fd4a56ba.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-5572b3513ba8df57a3d5d7303ee6b11b.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-56467a5c8840c4d23a60b2f935114848.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-56a32a7689abd0326e57c10c6c069bb4.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-57862b464a55b18c7bf234ce22907d73.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-583d166e56ba0de4b77eabb47ef67839.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-5882ffa04f32584d26109137e2da4352.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-58fd02350d0bc52cf1ca3bb32ce9766e.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-5935a5775af3d5c6307ac667bd9ae74e.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-59e9ff77b0efaf684bc09274fb6908c9.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-5a1ce3117cfe90c48e8fb4a9a00f694d.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-5a45d991244d4c7140217e1e5f5ca4f4.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-5a7fac4b8b23a6e4e5ba0c9bf1756c91.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-5b0ed6971aaab9c8ad563230bd5471a7.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-5d2898fbc097a7e24c6f38d80587621e.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-603aefd23e350ba7eb124273e3c9bcf1.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-60a3089806700d379f11827ee9843b6b.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-60a41c7e1c68f22424e6d22df544bc82.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-642b26e2e5f5fb780b51b593dbc8c851.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-66493ba5a8367f2928812f446f47b56a.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-670ba603758d94268e8606f240a42e12.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-671a2c20b1eb9e4ef8a192833940e319.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-684d65f1793cac449dde5d59cb3c47fb.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-69c09cc5fa3e55c74fc4821f76909cc3.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-6ae5b42180ad70b971c91e7eefb8eba2.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-6e092f71c1e634059ada0e52abadce67.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-6f3256af8454371776bc46670d33cc65.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-6fe5c5973cc06f74b2387a631ea36b88.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-70c2eb8d64e71a42a834eb857ea9df51.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-70e811fd7994e61f408c923de6ddd078.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-7197d6fda6cba7c3874c53d6381ca239.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-72252d73220fa3cd856677888cee1635.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-72536a3d71b694a0d53dd90ddceae41e.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-726303e0774b4e678bff8c2deb6ca603.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-733171b4ffcd17ea1fe1c0ba627173bf.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-739bc1a567439c7cffcd1614644593d2.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-73e309718fd16cea44b4d54a33581811.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-7494dc504ae00ee9cd0505f990f88c5d.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-74e2263a91439c25b91d5132ce9f4d62.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-761d05e3cd968cf574166867998ef06a.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-7718fe60986d8b42b1be9c5ace5ccf25.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-774d4f764a1299da5d28ec2f2ffe0d69.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-79d494361ae093b69e74ee9dbe65bfd4.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-79f007c1c6d07557120982951ea67998.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-7a07ddc0f0c0f5f4a9bad6ee3dda66b5.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-7ab2bed91166a9dca83a5ebfbe2a7f38.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-7ccce86603f80a099ddb0cb21d4ae3e3.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-7e4bde7e9c7f84cd34d8a845e384c746.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-7e929f262f30c8ee78bf398150b1a7cd.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-7eb9fffd1aa890d07d0f88cc82e6cfe4.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-7f855356ab893b0d2b9c1c83b8116f0e.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-829615148e6357d826b9242eb7fbbd1e.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-866fa7613df6b3fd272bcfd4530c0bb9.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-87599f94b6cc129d505b375798d0d751.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-8c2f33cee3993174f7e87c28e4bf42ee.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-8d3bcabb847b56243b16afe62adaaf21.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-8de5b863cb50dfefdd07cb11c774d579.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-8e9f97f01034820170065b2921b4fb5e.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-8f476c4c99813d57cbe6eca4727388ad.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-903bb6865f3452e2fda42e3a25547bc5.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-91ddb2969bf2d31ba02ad82998d1314c.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-938d90c10ff8c20386af7f242c05d6b0.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-93fc8f28a33234bcadf1527cafabd502.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-95429962233afd82db1c27df1500a28c.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-9544732d2e62d1a429674f8ee41b5d3a.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-9592bfc861f07bcb8d75c196b370e548.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-95bfd249da4902577b4b7d76ebdd0b44.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-968cffdc8ee679da094e77ebf50f58ef.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-97f7f48ce90c9429bf32ae51469db74d.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-982b630266d87db93d2539affb1275c6.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-98f2ad84457de7f3740d9920b8fa8667.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-99a16ef6a64934d5781933dbd9c46b2e.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-9cfb2a77a4e45025105ad29a1748b90d.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-9d81066dd2b337c938df6e90380a00dc.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-9eb5a99df4e76ac3363453ac9ca288b1.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-a004ddfcb26e67bd6e678c8ed19e25ce.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-a0ca5df4258213d7fc9fce80f65ce760.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-a1f916d6039285c4ffb900cd654e418f.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-a203b91dad570bf05a58c3c3ddb529bf.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-a365e82ed54697a52f27adcea1315fe8.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-a4c34be6d42152e64b0df90bc4607f64.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-a7accba310e821da5505f71c03b76bdb.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-aa0d470430e6391eca720c7cfa44446f.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-aa5c9ca6cf4fba00433b7aa3fa10671a.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-ac9ceb44437becc3e9c4dbfebab7fc2d.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-b1220a3c61f85cc0408deedb4c5f57a2.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-b358f7a51ece39a3247942b1feabdb29.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-b57aaedfd8ebdf3931f25119dc6a5eb2.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-b5c1596551c256e0e9cf02028595b092.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-b6d128682ee29e471486354d486a1b90.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-b6fd38ca30869792244804b04bc058da.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-b7d203b051eff504ff59ddca7576b6a9.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-b96d9226ce77ec94ceca043d712182e6.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-ba3de316d63c7e339987b16f41a0b879.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-bafff7a14c27403dcc6cf1432e8ea836.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-bd77e3c7f9e0b072d96af37f73d1aa32.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-be549ab72f0719d606a5c01e2c0219b6.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-c16ed9740b85badf16e86ea782a3062f.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-c1f94158256bb1f3bf665b053d895af9.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-c40533fdf4cc57177b12803598af7e59.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-c4a687ac4f0c2766eefc9f77ed99cddf.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-c69f61a4ab18d0488c8d1fc12e7028e8.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-c8b71798409ccc126ee264a00aadcf21.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-c99eda15fc26a2941579560f76c3a5cf.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-cb17fc3db95f6d139afc9d31a8e93293.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-cbaaefaaf326668277aa24dfa93c4d28.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-cd145ce4a0ea18469358df53c207bc1b.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-cdbce89e82cc1ab53a2decbf5819278f.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-ce4884f96f11589608b76b726a755803.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-cf2cc71752631e579e35b0e423bf2638.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-cf6ff4e0f491ca0cf3038187a997b9b4.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-cfb211578629b7e8153b37240de6a9d5.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-d0cf73942fea1c74edbdf0b3011f4656.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-d2666cbed13462c5dc36fa2f15c202ca.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-d3716376641d615e2995605b29bca7b6.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-dac48066b5883d8b4551fc584f0c2a3e.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-dbea1af6dcd9860be40c3d18254338f5.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-e11567fd2accf9957cd0d3c2be937d87.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-e2ead7ea7da0437f085f42ffc05f8d13.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-e3fcf5180fd466c8915c4e8069491054.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-e480d9c614742d05f0e78f274f1e69e6.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-e4bca6cfa53e499cae0a6be4894a90e9.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-e51ef413167c6e14e0c0fdcc585f2fc9.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-e5f453bb04da18eed01675eeebd88bf8.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-e656f091b9dc4709722c9f4b84d3c797.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-ec181b795ac1fb5a50d700b6e996d745.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-ee8bae97908d5147b423f77ad0d3c1bb.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-f0f13b5c60e0af5553bd359f5513be1b.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-f2b54d4e7be0eaefe1c2c56836fa5368.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-f56414bf9bced67990def8660e306759.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-f5d079153c99a25b9be5b8583c4cc8a7.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-f6032fc06eb20480f096199713f70885.woff2 +0 -0
- package/dist/prod/fonts/Xiaolai/Xiaolai-Regular-f8ee5d36068a42b51d0e4a1116cfcec1.woff2 +0 -0
- package/dist/prod/index.css +1 -0
- package/dist/prod/index.js +119 -0
- package/dist/prod/locales/ar-SA-IYHKZRSE.js +8 -0
- package/dist/prod/locales/az-AZ-WL5GYRHK.js +1 -0
- package/dist/prod/locales/bg-BG-FXZYTRPD.js +5 -0
- package/dist/prod/locales/bn-BD-KO6YL5G2.js +3 -0
- package/dist/prod/locales/bn-IN-PC6JHKYB.js +3 -0
- package/dist/prod/locales/ca-ES-AREX5NEO.js +8 -0
- package/dist/prod/locales/cs-CZ-HXAZMFYH.js +7 -0
- package/dist/prod/locales/da-DK-5X7ZLFU3.js +2 -0
- package/dist/prod/locales/de-CH-76ZNVSOF.js +7 -0
- package/dist/prod/locales/de-DE-KU2ABQRN.js +7 -0
- package/dist/prod/locales/el-GR-4AZTZGY6.js +7 -0
- package/dist/prod/locales/en-BARVNJLJ.js +1 -0
- package/dist/prod/locales/es-ES-MXQVAWTQ.js +7 -0
- package/dist/prod/locales/eu-ES-BIF4XBMT.js +7 -0
- package/dist/prod/locales/fa-IR-D4HHKAAI.js +9 -0
- package/dist/prod/locales/fi-FI-O35ZY7UI.js +6 -0
- package/dist/prod/locales/fr-FR-PJOMXPCV.js +12 -0
- package/dist/prod/locales/gl-ES-U4NYM3X5.js +6 -0
- package/dist/prod/locales/he-IL-656ABAVQ.js +8 -0
- package/dist/prod/locales/hi-IN-Z55GAFFR.js +3 -0
- package/dist/prod/locales/hu-HU-UJ62DVIW.js +3 -0
- package/dist/prod/locales/id-ID-FLZFU3OO.js +8 -0
- package/dist/prod/locales/it-IT-DQZT3VFE.js +12 -0
- package/dist/prod/locales/ja-JP-43VXGDWI.js +7 -0
- package/dist/prod/locales/kaa-L3IMSDYL.js +1 -0
- package/dist/prod/locales/kab-KAB-XKPWJLNL.js +4 -0
- package/dist/prod/locales/kk-KZ-SXPDDY2H.js +1 -0
- package/dist/prod/locales/km-KH-DOS4CPGC.js +7 -0
- package/dist/prod/locales/ko-KR-BGC6VCY4.js +5 -0
- package/dist/prod/locales/ku-TR-J7IUITIA.js +6 -0
- package/dist/prod/locales/lt-LT-AC3LV5KG.js +3 -0
- package/dist/prod/locales/lv-LV-I6AY7QG2.js +4 -0
- package/dist/prod/locales/mr-IN-5SP4HV5B.js +9 -0
- package/dist/prod/locales/my-MM-S7ECRBYZ.js +1 -0
- package/dist/prod/locales/nb-NO-6PNHTF4R.js +8 -0
- package/dist/prod/locales/nl-NL-AVTAYVB7.js +7 -0
- package/dist/prod/locales/nn-NO-3TFXTM7Y.js +4 -0
- package/dist/prod/locales/oc-FR-IK6GIE7H.js +4 -0
- package/dist/prod/locales/pa-IN-YAKHYJET.js +4 -0
- package/dist/prod/locales/percentages-FZSTHYWV.js +1 -0
- package/dist/prod/locales/pl-PL-BIY22ZWU.js +12 -0
- package/dist/prod/locales/pt-BR-Q23NUPD6.js +6 -0
- package/dist/prod/locales/pt-PT-LOPEJLPJ.js +8 -0
- package/dist/prod/locales/ro-RO-W3D2ZATV.js +12 -0
- package/dist/prod/locales/ru-RU-DCTW7QSH.js +10 -0
- package/dist/prod/locales/si-LK-FYRRHO3C.js +1 -0
- package/dist/prod/locales/sk-SK-2KAMKFW5.js +7 -0
- package/dist/prod/locales/sl-SI-L6B6HFY5.js +6 -0
- package/dist/prod/locales/sv-SE-KMY6L2BA.js +8 -0
- package/dist/prod/locales/ta-IN-ZQCYE2JK.js +6 -0
- package/dist/prod/locales/th-TH-WS7ECBAV.js +1 -0
- package/dist/prod/locales/tr-TR-S5FI7JRW.js +4 -0
- package/dist/prod/locales/uk-UA-4EZUWUSQ.js +6 -0
- package/dist/prod/locales/uz-UZ-OKHL6AFA.js +1 -0
- package/dist/prod/locales/vi-VN-I6Q2YS4S.js +7 -0
- package/dist/prod/locales/zh-CN-JE4UZWNO.js +11 -0
- package/dist/prod/locales/zh-HK-RM35YDXX.js +1 -0
- package/dist/prod/locales/zh-TW-ONGLV6Y5.js +9 -0
- package/dist/prod/subset-shared.chunk.js +1 -0
- package/dist/prod/subset-worker.chunk.js +1 -0
- package/dist/types/common/src/binary-heap.d.ts +12 -0
- package/dist/types/common/src/bounds.d.ts +10 -0
- package/dist/types/common/src/colors.d.ts +62 -0
- package/dist/types/common/src/constants.d.ts +352 -0
- package/dist/types/common/src/editorInterface.d.ts +34 -0
- package/dist/types/common/src/emitter.d.ts +16 -0
- package/dist/types/common/src/font-metadata.d.ts +46 -0
- package/dist/types/common/src/index.d.ts +15 -0
- package/dist/types/common/src/keys.d.ts +189 -0
- package/dist/types/common/src/points.d.ts +9 -0
- package/dist/types/common/src/promise-pool.d.ts +6 -0
- package/dist/types/common/src/queue.d.ts +9 -0
- package/dist/types/common/src/random.d.ts +3 -0
- package/dist/types/common/src/url.d.ts +7 -0
- package/dist/types/common/src/utility-types.d.ts +37 -0
- package/dist/types/common/src/utils.d.ts +279 -0
- package/dist/types/common/src/visualdebug.d.ts +41 -0
- package/dist/types/element/src/Scene.d.ts +80 -0
- package/dist/types/element/src/align.d.ts +8 -0
- package/dist/types/element/src/binding.d.ts +124 -0
- package/dist/types/element/src/bounds.d.ts +81 -0
- package/dist/types/element/src/collision.d.ts +36 -0
- package/dist/types/element/src/comparisons.d.ts +8 -0
- package/dist/types/element/src/containerCache.d.ts +11 -0
- package/dist/types/element/src/cropElement.d.ts +19 -0
- package/dist/types/element/src/delta.d.ts +228 -0
- package/dist/types/element/src/distance.d.ts +3 -0
- package/dist/types/element/src/distribute.d.ts +7 -0
- package/dist/types/element/src/dragElements.d.ts +33 -0
- package/dist/types/element/src/duplicate.d.ts +63 -0
- package/dist/types/element/src/elbowArrow.d.ts +17 -0
- package/dist/types/element/src/elementLink.d.ts +13 -0
- package/dist/types/element/src/embeddable.d.ts +10 -0
- package/dist/types/element/src/flowchart.d.ts +26 -0
- package/dist/types/element/src/fractionalIndex.d.ts +57 -0
- package/dist/types/element/src/frame.d.ts +74 -0
- package/dist/types/element/src/groups.d.ts +34 -0
- package/dist/types/element/src/heading.d.ts +16 -0
- package/dist/types/element/src/image.d.ts +22 -0
- package/dist/types/element/src/index.d.ts +56 -0
- package/dist/types/element/src/linearElementEditor.d.ts +113 -0
- package/dist/types/element/src/mutateElement.d.ts +23 -0
- package/dist/types/element/src/newElement.d.ts +62 -0
- package/dist/types/element/src/positionElementsOnGrid.d.ts +2 -0
- package/dist/types/element/src/renderElement.d.ts +31 -0
- package/dist/types/element/src/resizeElements.d.ts +32 -0
- package/dist/types/element/src/resizeTest.d.ts +16 -0
- package/dist/types/element/src/selection.d.ts +34 -0
- package/dist/types/element/src/shape.d.ts +42 -0
- package/dist/types/element/src/showSelectedShapeActions.d.ts +3 -0
- package/dist/types/element/src/sizeHelpers.d.ts +35 -0
- package/dist/types/element/src/sortElements.d.ts +2 -0
- package/dist/types/element/src/store.d.ts +237 -0
- package/dist/types/element/src/textElement.d.ts +40 -0
- package/dist/types/element/src/textMeasurements.d.ts +39 -0
- package/dist/types/element/src/textWrapping.d.ts +13 -0
- package/dist/types/element/src/transform.d.ts +81 -0
- package/dist/types/element/src/transformHandles.d.ts +36 -0
- package/dist/types/element/src/typeChecks.d.ts +54 -0
- package/dist/types/element/src/types.d.ts +291 -0
- package/dist/types/element/src/utils.d.ts +34 -0
- package/dist/types/element/src/zindex.d.ts +13 -0
- package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +482 -0
- package/dist/types/excalidraw/actions/actionAlign.d.ts +109 -0
- package/dist/types/excalidraw/actions/actionBoundText.d.ts +358 -0
- package/dist/types/excalidraw/actions/actionCanvas.d.ts +2047 -0
- package/dist/types/excalidraw/actions/actionClipboard.d.ts +397 -0
- package/dist/types/excalidraw/actions/actionCropEditor.d.ts +173 -0
- package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +516 -0
- package/dist/types/excalidraw/actions/actionDistribute.d.ts +34 -0
- package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +17 -0
- package/dist/types/excalidraw/actions/actionElementLink.d.ts +193 -0
- package/dist/types/excalidraw/actions/actionElementLock.d.ts +344 -0
- package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +170 -0
- package/dist/types/excalidraw/actions/actionExport.d.ts +679 -0
- package/dist/types/excalidraw/actions/actionFinalize.d.ts +13 -0
- package/dist/types/excalidraw/actions/actionFlip.d.ts +34 -0
- package/dist/types/excalidraw/actions/actionFrame.d.ts +1146 -0
- package/dist/types/excalidraw/actions/actionGroup.d.ts +348 -0
- package/dist/types/excalidraw/actions/actionHistory.d.ts +6 -0
- package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +658 -0
- package/dist/types/excalidraw/actions/actionLink.d.ts +174 -0
- package/dist/types/excalidraw/actions/actionMenu.d.ts +162 -0
- package/dist/types/excalidraw/actions/actionNavigate.d.ts +20 -0
- package/dist/types/excalidraw/actions/actionProperties.d.ts +400 -0
- package/dist/types/excalidraw/actions/actionSelectAll.d.ts +169 -0
- package/dist/types/excalidraw/actions/actionStyles.d.ts +187 -0
- package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +17 -0
- package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +176 -0
- package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +174 -0
- package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +165 -0
- package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +19 -0
- package/dist/types/excalidraw/actions/actionToggleStats.d.ts +173 -0
- package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +174 -0
- package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +174 -0
- package/dist/types/excalidraw/actions/actionZindex.d.ts +74 -0
- package/dist/types/excalidraw/actions/index.d.ts +28 -0
- package/dist/types/excalidraw/actions/manager.d.ts +21 -0
- package/dist/types/excalidraw/actions/register.d.ts +5 -0
- package/dist/types/excalidraw/actions/shortcuts.d.ts +4 -0
- package/dist/types/excalidraw/actions/types.d.ts +47 -0
- package/dist/types/excalidraw/analytics.d.ts +1 -0
- package/dist/types/excalidraw/animated-trail.d.ts +39 -0
- package/dist/types/excalidraw/animation-frame-handler.d.ts +16 -0
- package/dist/types/excalidraw/appState.d.ts +101 -0
- package/dist/types/excalidraw/charts.d.ts +27 -0
- package/dist/types/excalidraw/clients.d.ts +14 -0
- package/dist/types/excalidraw/clipboard.d.ts +105 -0
- package/dist/types/excalidraw/components/Actions.d.ts +47 -0
- package/dist/types/excalidraw/components/ActiveConfirmDialog.d.ts +4 -0
- package/dist/types/excalidraw/components/App.d.ts +562 -0
- package/dist/types/excalidraw/components/Avatar.d.ts +11 -0
- package/dist/types/excalidraw/components/BraveMeasureTextError.d.ts +2 -0
- package/dist/types/excalidraw/components/Button.d.ts +17 -0
- package/dist/types/excalidraw/components/ButtonIcon.d.ts +16 -0
- package/dist/types/excalidraw/components/ButtonIconCycle.d.ts +11 -0
- package/dist/types/excalidraw/components/ButtonSeparator.d.ts +1 -0
- package/dist/types/excalidraw/components/Card.d.ts +6 -0
- package/dist/types/excalidraw/components/CheckboxItem.d.ts +8 -0
- package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +10 -0
- package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +23 -0
- package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +8 -0
- package/dist/types/excalidraw/components/ColorPicker/HotkeyLabel.d.ts +7 -0
- package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +19 -0
- package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +10 -0
- package/dist/types/excalidraw/components/ColorPicker/PickerHeading.d.ts +5 -0
- package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +9 -0
- package/dist/types/excalidraw/components/ColorPicker/TopPicks.d.ts +9 -0
- package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +21 -0
- package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +20 -0
- package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +19 -0
- package/dist/types/excalidraw/components/CommandPalette/defaultCommandPaletteItems.d.ts +2 -0
- package/dist/types/excalidraw/components/CommandPalette/types.d.ts +24 -0
- package/dist/types/excalidraw/components/ConfirmDialog.d.ts +10 -0
- package/dist/types/excalidraw/components/ContextMenu.d.ts +16 -0
- package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +23 -0
- package/dist/types/excalidraw/components/DarkModeToggle.d.ts +7 -0
- package/dist/types/excalidraw/components/DefaultSidebar.d.ts +27 -0
- package/dist/types/excalidraw/components/DiagramToCodePlugin/DiagramToCodePlugin.d.ts +4 -0
- package/dist/types/excalidraw/components/Dialog.d.ts +13 -0
- package/dist/types/excalidraw/components/DialogActionButton.d.ts +10 -0
- package/dist/types/excalidraw/components/ElementCanvasButtons.d.ts +7 -0
- package/dist/types/excalidraw/components/ElementLinkDialog.d.ts +12 -0
- package/dist/types/excalidraw/components/Ellipsify.d.ts +3 -0
- package/dist/types/excalidraw/components/ErrorDialog.d.ts +5 -0
- package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +15 -0
- package/dist/types/excalidraw/components/EyeDropper.d.ts +27 -0
- package/dist/types/excalidraw/components/FilledButton.d.ts +18 -0
- package/dist/types/excalidraw/components/FixedSideContainer.d.ts +9 -0
- package/dist/types/excalidraw/components/FollowMode/FollowMode.d.ts +10 -0
- package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +22 -0
- package/dist/types/excalidraw/components/FontPicker/FontPickerList.d.ts +26 -0
- package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +8 -0
- package/dist/types/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +13 -0
- package/dist/types/excalidraw/components/HandButton.d.ts +10 -0
- package/dist/types/excalidraw/components/HelpButton.d.ts +7 -0
- package/dist/types/excalidraw/components/HelpDialog.d.ts +4 -0
- package/dist/types/excalidraw/components/HintViewer.d.ts +11 -0
- package/dist/types/excalidraw/components/IconPicker.d.ts +15 -0
- package/dist/types/excalidraw/components/ImageExportDialog.d.ts +14 -0
- package/dist/types/excalidraw/components/InitializeApp.d.ts +10 -0
- package/dist/types/excalidraw/components/InlineIcon.d.ts +5 -0
- package/dist/types/excalidraw/components/Island.d.ts +10 -0
- package/dist/types/excalidraw/components/JSONExportDialog.d.ts +15 -0
- package/dist/types/excalidraw/components/LaserPointerButton.d.ts +10 -0
- package/dist/types/excalidraw/components/LayerUI.d.ts +32 -0
- package/dist/types/excalidraw/components/LibraryMenu.d.ts +10 -0
- package/dist/types/excalidraw/components/LibraryMenuBrowseButton.d.ts +7 -0
- package/dist/types/excalidraw/components/LibraryMenuControlButtons.d.ts +9 -0
- package/dist/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +17 -0
- package/dist/types/excalidraw/components/LibraryMenuItems.d.ts +14 -0
- package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +23 -0
- package/dist/types/excalidraw/components/LibraryUnit.d.ts +14 -0
- package/dist/types/excalidraw/components/LinkButton.d.ts +4 -0
- package/dist/types/excalidraw/components/LoadingMessage.d.ts +5 -0
- package/dist/types/excalidraw/components/LockButton.d.ts +10 -0
- package/dist/types/excalidraw/components/MagicButton.d.ts +10 -0
- package/dist/types/excalidraw/components/MobileMenu.d.ts +23 -0
- package/dist/types/excalidraw/components/MobileToolBar.d.ts +10 -0
- package/dist/types/excalidraw/components/Modal.d.ts +11 -0
- package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirm.d.ts +17 -0
- package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirmActions.d.ts +17 -0
- package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirmState.d.ts +22 -0
- package/dist/types/excalidraw/components/Paragraph.d.ts +4 -0
- package/dist/types/excalidraw/components/PasteChartDialog.d.ts +8 -0
- package/dist/types/excalidraw/components/PenModeButton.d.ts +12 -0
- package/dist/types/excalidraw/components/Popover.d.ts +16 -0
- package/dist/types/excalidraw/components/ProjectName.d.ts +10 -0
- package/dist/types/excalidraw/components/PropertiesPopover.d.ts +16 -0
- package/dist/types/excalidraw/components/PublishLibrary.d.ts +16 -0
- package/dist/types/excalidraw/components/QuickSearch.d.ts +9 -0
- package/dist/types/excalidraw/components/RadioGroup.d.ts +13 -0
- package/dist/types/excalidraw/components/RadioSelection.d.ts +20 -0
- package/dist/types/excalidraw/components/Range.d.ts +8 -0
- package/dist/types/excalidraw/components/SVGLayer.d.ts +7 -0
- package/dist/types/excalidraw/components/ScrollableList.d.ts +8 -0
- package/dist/types/excalidraw/components/SearchMenu.d.ts +5 -0
- package/dist/types/excalidraw/components/Section.d.ts +6 -0
- package/dist/types/excalidraw/components/ShareableLinkDialog.d.ts +7 -0
- package/dist/types/excalidraw/components/Sidebar/Sidebar.d.ts +70 -0
- package/dist/types/excalidraw/components/Sidebar/SidebarHeader.d.ts +7 -0
- package/dist/types/excalidraw/components/Sidebar/SidebarTab.d.ts +8 -0
- package/dist/types/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +9 -0
- package/dist/types/excalidraw/components/Sidebar/SidebarTabTriggers.d.ts +6 -0
- package/dist/types/excalidraw/components/Sidebar/SidebarTabs.d.ts +6 -0
- package/dist/types/excalidraw/components/Sidebar/SidebarTrigger.d.ts +6 -0
- package/dist/types/excalidraw/components/Sidebar/common.d.ts +34 -0
- package/dist/types/excalidraw/components/Spinner.d.ts +8 -0
- package/dist/types/excalidraw/components/Stack.d.ts +15 -0
- package/dist/types/excalidraw/components/Stats/Angle.d.ts +11 -0
- package/dist/types/excalidraw/components/Stats/CanvasGrid.d.ts +10 -0
- package/dist/types/excalidraw/components/Stats/Collapsible.d.ts +10 -0
- package/dist/types/excalidraw/components/Stats/Dimension.d.ts +11 -0
- package/dist/types/excalidraw/components/Stats/DragInput.d.ts +44 -0
- package/dist/types/excalidraw/components/Stats/FontSize.d.ts +11 -0
- package/dist/types/excalidraw/components/Stats/MultiAngle.d.ts +11 -0
- package/dist/types/excalidraw/components/Stats/MultiDimension.d.ts +14 -0
- package/dist/types/excalidraw/components/Stats/MultiFontSize.d.ts +12 -0
- package/dist/types/excalidraw/components/Stats/MultiPosition.d.ts +14 -0
- package/dist/types/excalidraw/components/Stats/Position.d.ts +12 -0
- package/dist/types/excalidraw/components/Stats/index.d.ts +35 -0
- package/dist/types/excalidraw/components/Stats/utils.d.ts +19 -0
- package/dist/types/excalidraw/components/Switch.d.ts +9 -0
- package/dist/types/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +6 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDDialog.d.ts +29 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +9 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +7 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +17 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogPanels.d.ts +4 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogSubmitShortcut.d.ts +1 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTab.d.ts +7 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTrigger.d.ts +8 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTriggers.d.ts +6 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabs.d.ts +11 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +8 -0
- package/dist/types/excalidraw/components/TTDDialog/common.d.ts +32 -0
- package/dist/types/excalidraw/components/TextField.d.ts +22 -0
- package/dist/types/excalidraw/components/Toast.d.ts +9 -0
- package/dist/types/excalidraw/components/ToolButton.d.ts +49 -0
- package/dist/types/excalidraw/components/ToolPopover.d.ts +25 -0
- package/dist/types/excalidraw/components/Tooltip.d.ts +18 -0
- package/dist/types/excalidraw/components/Trans.d.ts +9 -0
- package/dist/types/excalidraw/components/UnlockPopup.d.ts +8 -0
- package/dist/types/excalidraw/components/UserList.d.ts +18 -0
- package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +33 -0
- package/dist/types/excalidraw/components/canvases/NewElementCanvas.d.ts +14 -0
- package/dist/types/excalidraw/components/canvases/StaticCanvas.d.ts +19 -0
- package/dist/types/excalidraw/components/canvases/index.d.ts +3 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +84 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +16 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuGroup.d.ts +11 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +38 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +8 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +17 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCustom.d.ts +7 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemLink.d.ts +16 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSeparator.d.ts +5 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuTrigger.d.ts +10 -0
- package/dist/types/excalidraw/components/dropdownMenu/common.d.ts +6 -0
- package/dist/types/excalidraw/components/dropdownMenu/dropdownMenuUtils.d.ts +3 -0
- package/dist/types/excalidraw/components/footer/Footer.d.ts +15 -0
- package/dist/types/excalidraw/components/footer/FooterCenter.d.ts +8 -0
- package/dist/types/excalidraw/components/hoc/withInternalFallback.d.ts +4 -0
- package/dist/types/excalidraw/components/hyperlink/Hyperlink.d.ts +19 -0
- package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +10 -0
- package/dist/types/excalidraw/components/icons.d.ts +235 -0
- package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +11 -0
- package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +64 -0
- package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +76 -0
- package/dist/types/excalidraw/components/shapes.d.ts +190 -0
- package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Center.d.ts +58 -0
- package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Hints.d.ts +19 -0
- package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.d.ts +84 -0
- package/dist/types/excalidraw/context/tunnels.d.ts +21 -0
- package/dist/types/excalidraw/context/ui-appState.d.ts +4 -0
- package/dist/types/excalidraw/cursor.d.ts +5 -0
- package/dist/types/excalidraw/data/EditorLocalStorage.d.ts +8 -0
- package/dist/types/excalidraw/data/ai/types.d.ts +242 -0
- package/dist/types/excalidraw/data/blob.d.ts +57 -0
- package/dist/types/excalidraw/data/encode.d.ts +55 -0
- package/dist/types/excalidraw/data/encryption.d.ts +9 -0
- package/dist/types/excalidraw/data/filesystem.d.ts +21 -0
- package/dist/types/excalidraw/data/image.d.ts +9 -0
- package/dist/types/excalidraw/data/index.d.ts +22 -0
- package/dist/types/excalidraw/data/json.d.ts +18 -0
- package/dist/types/excalidraw/data/library.d.ts +127 -0
- package/dist/types/excalidraw/data/reconcile.d.ts +7 -0
- package/dist/types/excalidraw/data/resave.d.ts +5 -0
- package/dist/types/excalidraw/data/restore.d.ts +35 -0
- package/dist/types/excalidraw/data/types.d.ts +48 -0
- package/dist/types/excalidraw/deburr.d.ts +1 -0
- package/dist/types/excalidraw/editor-jotai.d.ts +56 -0
- package/dist/types/excalidraw/eraser/index.d.ts +12 -0
- package/dist/types/excalidraw/errors.d.ts +29 -0
- package/dist/types/excalidraw/fonts/Cascadia/index.d.ts +2 -0
- package/dist/types/excalidraw/fonts/ComicShanns/index.d.ts +2 -0
- package/dist/types/excalidraw/fonts/Emoji/index.d.ts +2 -0
- package/dist/types/excalidraw/fonts/ExcalidrawFontFace.d.ts +25 -0
- package/dist/types/excalidraw/fonts/Excalifont/index.d.ts +2 -0
- package/dist/types/excalidraw/fonts/Fonts.d.ts +79 -0
- package/dist/types/excalidraw/fonts/Helvetica/index.d.ts +2 -0
- package/dist/types/excalidraw/fonts/Liberation/index.d.ts +2 -0
- package/dist/types/excalidraw/fonts/Lilita/index.d.ts +2 -0
- package/dist/types/excalidraw/fonts/Nunito/index.d.ts +2 -0
- package/dist/types/excalidraw/fonts/Virgil/index.d.ts +2 -0
- package/dist/types/excalidraw/fonts/Xiaolai/index.d.ts +8 -0
- package/dist/types/excalidraw/fonts/index.d.ts +1 -0
- package/dist/types/excalidraw/gesture.d.ts +6 -0
- package/dist/types/excalidraw/history.d.ts +48 -0
- package/dist/types/excalidraw/hooks/useCallbackRefState.d.ts +1 -0
- package/dist/types/excalidraw/hooks/useCopiedIndicator.d.ts +5 -0
- package/dist/types/excalidraw/hooks/useCreatePortalContainer.d.ts +4 -0
- package/dist/types/excalidraw/hooks/useEmitter.d.ts +2 -0
- package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +11 -0
- package/dist/types/excalidraw/hooks/useOutsideClick.d.ts +21 -0
- package/dist/types/excalidraw/hooks/useScrollPosition.d.ts +1 -0
- package/dist/types/excalidraw/hooks/useStable.d.ts +1 -0
- package/dist/types/excalidraw/hooks/useStableCallback.d.ts +4 -0
- package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +14 -0
- package/dist/types/excalidraw/hooks/useTransition.d.ts +2 -0
- package/dist/types/excalidraw/i18n.d.ts +24 -0
- package/dist/types/excalidraw/index-node.d.ts +1 -0
- package/dist/types/excalidraw/index.d.ts +45 -0
- package/dist/types/excalidraw/laser-trails.d.ts +20 -0
- package/dist/types/excalidraw/lasso/index.d.ts +16 -0
- package/dist/types/excalidraw/lasso/utils.d.ts +13 -0
- package/dist/types/excalidraw/mermaid.d.ts +2 -0
- package/dist/types/excalidraw/polyfill.d.ts +2 -0
- package/dist/types/excalidraw/reactUtils.d.ts +14 -0
- package/dist/types/excalidraw/renderer/animation.d.ts +12 -0
- package/dist/types/excalidraw/renderer/helpers.d.ts +16 -0
- package/dist/types/excalidraw/renderer/interactiveScene.d.ts +14 -0
- package/dist/types/excalidraw/renderer/renderNewElementScene.d.ts +7 -0
- package/dist/types/excalidraw/renderer/renderSnaps.d.ts +2 -0
- package/dist/types/excalidraw/renderer/roundRect.d.ts +11 -0
- package/dist/types/excalidraw/renderer/staticScene.d.ts +14 -0
- package/dist/types/excalidraw/renderer/staticSvgScene.d.ts +5 -0
- package/dist/types/excalidraw/scene/Renderer.d.ts +29 -0
- package/dist/types/excalidraw/scene/export.d.ts +36 -0
- package/dist/types/excalidraw/scene/index.d.ts +4 -0
- package/dist/types/excalidraw/scene/normalize.d.ts +4 -0
- package/dist/types/excalidraw/scene/scroll.d.ts +18 -0
- package/dist/types/excalidraw/scene/scrollbars.d.ts +11 -0
- package/dist/types/excalidraw/scene/types.d.ts +132 -0
- package/dist/types/excalidraw/scene/zoom.d.ts +12 -0
- package/dist/types/excalidraw/shortcut.d.ts +1 -0
- package/dist/types/excalidraw/snapping.d.ts +111 -0
- package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-bindings.d.ts +45 -0
- package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-loader.d.ts +13 -0
- package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-wasm.d.ts +2 -0
- package/dist/types/excalidraw/subset/subset-main.d.ts +12 -0
- package/dist/types/excalidraw/subset/subset-shared.chunk.d.ts +32 -0
- package/dist/types/excalidraw/subset/subset-worker.chunk.d.ts +15 -0
- package/dist/types/excalidraw/subset/woff2/woff2-bindings.d.ts +31 -0
- package/dist/types/excalidraw/subset/woff2/woff2-loader.d.ts +14 -0
- package/dist/types/excalidraw/subset/woff2/woff2-wasm.d.ts +2 -0
- package/dist/types/excalidraw/types.d.ts +735 -0
- package/dist/types/excalidraw/workers.d.ts +36 -0
- package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +24 -0
- package/dist/types/math/src/angle.d.ts +19 -0
- package/dist/types/math/src/constants.d.ts +3 -0
- package/dist/types/math/src/curve.d.ts +74 -0
- package/dist/types/math/src/ellipse.d.ts +44 -0
- package/dist/types/math/src/index.d.ts +13 -0
- package/dist/types/math/src/line.d.ts +17 -0
- package/dist/types/math/src/point.d.ts +122 -0
- package/dist/types/math/src/polygon.d.ts +6 -0
- package/dist/types/math/src/range.d.ts +44 -0
- package/dist/types/math/src/rectangle.d.ts +5 -0
- package/dist/types/math/src/segment.d.ts +40 -0
- package/dist/types/math/src/triangle.d.ts +11 -0
- package/dist/types/math/src/types.d.ts +106 -0
- package/dist/types/math/src/utils.d.ts +7 -0
- package/dist/types/math/src/vector.d.ts +94 -0
- package/dist/types/utils/src/bbox.d.ts +9 -0
- package/dist/types/utils/src/export.d.ts +35 -0
- package/dist/types/utils/src/index.d.ts +4 -0
- package/dist/types/utils/src/shape.d.ts +58 -0
- package/dist/types/utils/src/withinBounds.d.ts +19 -0
- package/package.json +138 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../data/image.ts", "../../data/blob.ts", "../../appState.ts", "../../errors.ts", "../../scene/index.ts", "../../scene/scroll.ts", "../../scene/normalize.ts", "../../scene/export.ts", "../../data/encode.ts", "../../data/encryption.ts", "../../data/json.ts", "../../data/filesystem.ts", "../../fonts/Fonts.ts", "../../fonts/Cascadia/index.ts", "../../fonts/ComicShanns/index.ts", "../../fonts/Emoji/index.ts", "../../fonts/ExcalidrawFontFace.ts", "../../subset/subset-main.ts", "../../workers.ts", "../../fonts/Excalifont/index.ts", "../../fonts/Helvetica/index.ts", "../../fonts/Liberation/index.ts", "../../fonts/Lilita/index.ts", "../../fonts/Nunito/index.ts", "../../fonts/Virgil/index.ts", "../../fonts/Xiaolai/index.ts", "../../renderer/staticScene.ts", "../../components/hyperlink/helpers.ts", "../../renderer/helpers.ts", "../../renderer/staticSvgScene.ts", "../../data/restore.ts"],
|
|
4
|
+
"sourcesContent": ["import tEXt from \"png-chunk-text\";\nimport encodePng from \"png-chunks-encode\";\nimport decodePng from \"png-chunks-extract\";\n\nimport { EXPORT_DATA_TYPES, MIME_TYPES } from \"@excalidraw/common\";\n\nimport { blobToArrayBuffer } from \"./blob\";\nimport { encode, decode } from \"./encode\";\n\n// -----------------------------------------------------------------------------\n// PNG\n// -----------------------------------------------------------------------------\n\nexport const getTEXtChunk = async (\n blob: Blob,\n): Promise<{ keyword: string; text: string } | null> => {\n const chunks = decodePng(new Uint8Array(await blobToArrayBuffer(blob)));\n const metadataChunk = chunks.find((chunk) => chunk.name === \"tEXt\");\n if (metadataChunk) {\n return tEXt.decode(metadataChunk.data);\n }\n return null;\n};\n\nexport const encodePngMetadata = async ({\n blob,\n metadata,\n}: {\n blob: Blob;\n metadata: string;\n}) => {\n const chunks = decodePng(new Uint8Array(await blobToArrayBuffer(blob)));\n\n const metadataChunk = tEXt.encode(\n MIME_TYPES.excalidraw,\n JSON.stringify(\n encode({\n text: metadata,\n compress: true,\n }),\n ),\n );\n // insert metadata before last chunk (iEND)\n chunks.splice(-1, 0, metadataChunk);\n\n return new Blob([encodePng(chunks)], { type: MIME_TYPES.png });\n};\n\nexport const decodePngMetadata = async (blob: Blob) => {\n const metadata = await getTEXtChunk(blob);\n if (metadata?.keyword === MIME_TYPES.excalidraw) {\n try {\n const encodedData = JSON.parse(metadata.text);\n if (!(\"encoded\" in encodedData)) {\n // legacy, un-encoded scene JSON\n if (\n \"type\" in encodedData &&\n encodedData.type === EXPORT_DATA_TYPES.excalidraw\n ) {\n return metadata.text;\n }\n throw new Error(\"FAILED\");\n }\n return decode(encodedData);\n } catch (error: any) {\n console.error(error);\n throw new Error(\"FAILED\");\n }\n }\n throw new Error(\"INVALID\");\n};\n", "import { nanoid } from \"nanoid\";\n\nimport {\n IMAGE_MIME_TYPES,\n MIME_TYPES,\n bytesToHexString,\n isPromiseLike,\n} from \"@excalidraw/common\";\n\nimport type { ValueOf } from \"@excalidraw/common/utility-types\";\nimport type { ExcalidrawElement, FileId } from \"@excalidraw/element/types\";\n\nimport { cleanAppStateForExport } from \"../appState\";\n\nimport { CanvasError, ImageSceneDataError } from \"../errors\";\nimport { calculateScrollCenter } from \"../scene\";\nimport { decodeSvgBase64Payload } from \"../scene/export\";\n\nimport { base64ToString, stringToBase64, toByteString } from \"./encode\";\nimport { nativeFileSystemSupported } from \"./filesystem\";\nimport { isValidExcalidrawData, isValidLibrary } from \"./json\";\nimport { restore, restoreLibraryItems } from \"./restore\";\n\nimport type { AppState, DataURL, LibraryItem } from \"../types\";\n\nimport type { FileSystemHandle } from \"browser-fs-access\";\nimport type { ImportedLibraryData } from \"./types\";\n\nconst parseFileContents = async (blob: Blob | File): Promise<string> => {\n let contents: string;\n\n if (blob.type === MIME_TYPES.png) {\n try {\n return await (await import(\"./image\")).decodePngMetadata(blob);\n } catch (error: any) {\n if (error.message === \"INVALID\") {\n throw new ImageSceneDataError(\n \"Image doesn't contain scene\",\n \"IMAGE_NOT_CONTAINS_SCENE_DATA\",\n );\n } else {\n throw new ImageSceneDataError(\"Error: cannot restore image\");\n }\n }\n } else {\n if (\"text\" in Blob) {\n contents = await blob.text();\n } else {\n contents = await new Promise((resolve) => {\n const reader = new FileReader();\n reader.readAsText(blob, \"utf8\");\n reader.onloadend = () => {\n if (reader.readyState === FileReader.DONE) {\n resolve(reader.result as string);\n }\n };\n });\n }\n if (blob.type === MIME_TYPES.svg) {\n try {\n return decodeSvgBase64Payload({\n svg: contents,\n });\n } catch (error: any) {\n if (error.message === \"INVALID\") {\n throw new ImageSceneDataError(\n \"Image doesn't contain scene\",\n \"IMAGE_NOT_CONTAINS_SCENE_DATA\",\n );\n } else {\n throw new ImageSceneDataError(\"Error: cannot restore image\");\n }\n }\n }\n }\n return contents;\n};\n\nexport const getMimeType = (blob: Blob | string): string => {\n let name: string;\n if (typeof blob === \"string\") {\n name = blob;\n } else {\n if (blob.type) {\n return blob.type;\n }\n name = blob.name || \"\";\n }\n if (/\\.(excalidraw|json)$/.test(name)) {\n return MIME_TYPES.json;\n } else if (/\\.png$/.test(name)) {\n return MIME_TYPES.png;\n } else if (/\\.jpe?g$/.test(name)) {\n return MIME_TYPES.jpg;\n } else if (/\\.svg$/.test(name)) {\n return MIME_TYPES.svg;\n } else if (/\\.excalidrawlib$/.test(name)) {\n return MIME_TYPES.excalidrawlib;\n }\n return \"\";\n};\n\nexport const getFileHandleType = (handle: FileSystemHandle | null) => {\n if (!handle) {\n return null;\n }\n\n return handle.name.match(/\\.(json|excalidraw|png|svg)$/)?.[1] || null;\n};\n\nexport const isImageFileHandleType = (\n type: string | null,\n): type is \"png\" | \"svg\" => {\n return type === \"png\" || type === \"svg\";\n};\n\nexport const isImageFileHandle = (handle: FileSystemHandle | null) => {\n const type = getFileHandleType(handle);\n return type === \"png\" || type === \"svg\";\n};\n\nexport const isSupportedImageFileType = (type: string | null | undefined) => {\n return !!type && (Object.values(IMAGE_MIME_TYPES) as string[]).includes(type);\n};\n\nexport const isSupportedImageFile = (\n blob: Blob | null | undefined,\n): blob is Blob & { type: ValueOf<typeof IMAGE_MIME_TYPES> } => {\n const { type } = blob || {};\n return isSupportedImageFileType(type);\n};\n\nexport const loadSceneOrLibraryFromBlob = async (\n blob: Blob | File,\n /** @see restore.localAppState */\n localAppState: AppState | null,\n localElements: readonly ExcalidrawElement[] | null,\n /** FileSystemHandle. Defaults to `blob.handle` if defined, otherwise null. */\n fileHandle?: FileSystemHandle | null,\n) => {\n const contents = await parseFileContents(blob);\n let data;\n try {\n try {\n data = JSON.parse(contents);\n } catch (error: any) {\n if (isSupportedImageFile(blob)) {\n throw new ImageSceneDataError(\n \"Image doesn't contain scene\",\n \"IMAGE_NOT_CONTAINS_SCENE_DATA\",\n );\n }\n throw error;\n }\n if (isValidExcalidrawData(data)) {\n return {\n type: MIME_TYPES.excalidraw,\n data: restore(\n {\n elements: data.elements || [],\n appState: {\n theme: localAppState?.theme,\n fileHandle: fileHandle || blob.handle || null,\n ...cleanAppStateForExport(data.appState || {}),\n ...(localAppState\n ? calculateScrollCenter(data.elements || [], localAppState)\n : {}),\n },\n files: data.files,\n },\n localAppState,\n localElements,\n {\n repairBindings: true,\n refreshDimensions: false,\n deleteInvisibleElements: true,\n },\n ),\n };\n } else if (isValidLibrary(data)) {\n return {\n type: MIME_TYPES.excalidrawlib,\n data,\n };\n }\n throw new Error(\"Error: invalid file\");\n } catch (error: any) {\n if (error instanceof ImageSceneDataError) {\n throw error;\n }\n throw new Error(\"Error: invalid file\");\n }\n};\n\nexport const loadFromBlob = async (\n blob: Blob,\n /** @see restore.localAppState */\n localAppState: AppState | null,\n localElements: readonly ExcalidrawElement[] | null,\n /** FileSystemHandle. Defaults to `blob.handle` if defined, otherwise null. */\n fileHandle?: FileSystemHandle | null,\n) => {\n const ret = await loadSceneOrLibraryFromBlob(\n blob,\n localAppState,\n localElements,\n fileHandle,\n );\n if (ret.type !== MIME_TYPES.excalidraw) {\n throw new Error(\"Error: invalid file\");\n }\n return ret.data;\n};\n\nexport const parseLibraryJSON = (\n json: string,\n defaultStatus: LibraryItem[\"status\"] = \"unpublished\",\n) => {\n const data: ImportedLibraryData | undefined = JSON.parse(json);\n if (!isValidLibrary(data)) {\n throw new Error(\"Invalid library\");\n }\n const libraryItems = data.libraryItems || data.library;\n return restoreLibraryItems(libraryItems, defaultStatus);\n};\n\nexport const loadLibraryFromBlob = async (\n blob: Blob,\n defaultStatus: LibraryItem[\"status\"] = \"unpublished\",\n) => {\n return parseLibraryJSON(await parseFileContents(blob), defaultStatus);\n};\n\nexport const canvasToBlob = async (\n canvas: HTMLCanvasElement | Promise<HTMLCanvasElement>,\n): Promise<Blob> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (isPromiseLike(canvas)) {\n canvas = await canvas;\n }\n canvas.toBlob((blob) => {\n if (!blob) {\n return reject(\n new CanvasError(\"Error: Canvas too big\", \"CANVAS_POSSIBLY_TOO_BIG\"),\n );\n }\n resolve(blob);\n });\n } catch (error: any) {\n reject(error);\n }\n });\n};\n\n/** generates SHA-1 digest from supplied file (if not supported, falls back\n to a 40-char base64 random id) */\nexport const generateIdFromFile = async (file: File): Promise<FileId> => {\n try {\n const hashBuffer = await window.crypto.subtle.digest(\n \"SHA-1\",\n await blobToArrayBuffer(file),\n );\n return bytesToHexString(new Uint8Array(hashBuffer)) as FileId;\n } catch (error: any) {\n console.error(error);\n // length 40 to align with the HEX length of SHA-1 (which is 160 bit)\n return nanoid(40) as FileId;\n }\n};\n\n/** async. For sync variant, use getDataURL_sync */\nexport const getDataURL = async (file: Blob | File): Promise<DataURL> => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const dataURL = reader.result as DataURL;\n resolve(dataURL);\n };\n reader.onerror = (error) => reject(error);\n reader.readAsDataURL(file);\n });\n};\n\nexport const getDataURL_sync = (\n data: string | Uint8Array | ArrayBuffer,\n mimeType: ValueOf<typeof MIME_TYPES>,\n): DataURL => {\n return `data:${mimeType};base64,${stringToBase64(\n toByteString(data),\n true,\n )}` as DataURL;\n};\n\nexport const dataURLToFile = (dataURL: DataURL, filename = \"\") => {\n const dataIndexStart = dataURL.indexOf(\",\");\n const byteString = atob(dataURL.slice(dataIndexStart + 1));\n const mimeType = dataURL.slice(0, dataIndexStart).split(\":\")[1].split(\";\")[0];\n\n const ab = new ArrayBuffer(byteString.length);\n const ia = new Uint8Array(ab);\n for (let i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n return new File([ab], filename, { type: mimeType });\n};\n\nexport const dataURLToString = (dataURL: DataURL) => {\n return base64ToString(dataURL.slice(dataURL.indexOf(\",\") + 1));\n};\n\nexport const resizeImageFile = async (\n file: File,\n opts: {\n /** undefined indicates auto */\n outputType?: typeof MIME_TYPES[\"jpg\"];\n maxWidthOrHeight: number;\n },\n): Promise<File> => {\n // SVG files shouldn't a can't be resized\n if (file.type === MIME_TYPES.svg) {\n return file;\n }\n\n const [pica, imageBlobReduce] = await Promise.all([\n import(\"pica\").then((res) => res.default),\n // a wrapper for pica for better API\n import(\"image-blob-reduce\").then((res) => res.default),\n ]);\n\n // CRA's minification settings break pica in WebWorkers, so let's disable\n // them for now\n // https://github.com/nodeca/image-blob-reduce/issues/21#issuecomment-757365513\n const reduce = imageBlobReduce({\n pica: pica({ features: [\"js\", \"wasm\"] }),\n });\n\n if (opts.outputType) {\n const { outputType } = opts;\n reduce._create_blob = function (env) {\n return this.pica.toBlob(env.out_canvas, outputType, 0.8).then((blob) => {\n env.out_blob = blob;\n return env;\n });\n };\n }\n\n if (!isSupportedImageFile(file)) {\n throw new Error(\"Error: unsupported file type\", { cause: \"UNSUPPORTED\" });\n }\n\n return new File(\n [await reduce.toBlob(file, { max: opts.maxWidthOrHeight, alpha: true })],\n file.name,\n {\n type: opts.outputType || file.type,\n },\n );\n};\n\nexport const SVGStringToFile = (SVGString: string, filename: string = \"\") => {\n return new File([new TextEncoder().encode(SVGString)], filename, {\n type: MIME_TYPES.svg,\n }) as File & { type: typeof MIME_TYPES.svg };\n};\n\nexport const ImageURLToFile = async (\n imageUrl: string,\n filename: string = \"\",\n): Promise<File | undefined> => {\n let response;\n try {\n response = await fetch(imageUrl);\n } catch (error: any) {\n throw new Error(\"Error: failed to fetch image\", { cause: \"FETCH_ERROR\" });\n }\n\n if (!response.ok) {\n throw new Error(\"Error: failed to fetch image\", { cause: \"FETCH_ERROR\" });\n }\n\n const blob = await response.blob();\n\n if (blob.type && isSupportedImageFile(blob)) {\n const name = filename || blob.name || \"\";\n return new File([blob], name, { type: blob.type });\n }\n\n throw new Error(\"Error: unsupported file type\", { cause: \"UNSUPPORTED\" });\n};\n\nexport const getFileHandle = async (\n event: DragEvent | React.DragEvent | DataTransferItem,\n): Promise<FileSystemHandle | null> => {\n if (nativeFileSystemSupported) {\n try {\n const dataTransferItem =\n event instanceof DataTransferItem\n ? event\n : (event as DragEvent).dataTransfer?.items?.[0];\n\n const handle: FileSystemHandle | null =\n (await (dataTransferItem as any).getAsFileSystemHandle()) || null;\n\n return handle;\n } catch (error: any) {\n console.warn(error.name, error.message);\n return null;\n }\n }\n return null;\n};\n\n/**\n * attempts to detect if a buffer is a valid image by checking its leading bytes\n */\nconst getActualMimeTypeFromImage = async (file: Blob | File) => {\n let mimeType: ValueOf<\n Pick<typeof MIME_TYPES, \"png\" | \"jpg\" | \"gif\" | \"webp\">\n > | null = null;\n\n const leadingBytes = [\n ...new Uint8Array(await blobToArrayBuffer(file.slice(0, 15))),\n ].join(\" \");\n\n // uint8 leading bytes\n const bytes = {\n // https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header\n png: /^137 80 78 71 13 10 26 10\\b/,\n // https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure\n // jpg is a bit wonky. Checking the first three bytes should be enough,\n // but may yield false positives. (https://stackoverflow.com/a/23360709/927631)\n jpg: /^255 216 255\\b/,\n // https://en.wikipedia.org/wiki/GIF#Example_GIF_file\n gif: /^71 73 70 56 57 97\\b/,\n // 4 bytes for RIFF + 4 bytes for chunk size + WEBP identifier\n webp: /^82 73 70 70 \\d+ \\d+ \\d+ \\d+ 87 69 66 80 86 80 56\\b/,\n };\n\n for (const type of Object.keys(bytes) as (keyof typeof bytes)[]) {\n if (leadingBytes.match(bytes[type])) {\n mimeType = MIME_TYPES[type];\n break;\n }\n }\n\n return mimeType || file.type || null;\n};\n\nexport const createFile = (\n blob: File | Blob | ArrayBuffer,\n mimeType: string,\n name: string | undefined,\n) => {\n return new File([blob], name || \"\", {\n type: mimeType,\n });\n};\n\nconst normalizedFileSymbol = Symbol(\"fileNormalized\");\n\n/** attempts to detect correct mimeType if none is set, or if an image\n * has an incorrect extension.\n * Note: doesn't handle missing .excalidraw/.excalidrawlib extension */\nexport const normalizeFile = async (file: File) => {\n // to prevent double normalization (perf optim)\n if ((file as any)[normalizedFileSymbol]) {\n return file;\n }\n\n if (file?.name?.endsWith(\".excalidrawlib\")) {\n file = createFile(file, MIME_TYPES.excalidrawlib, file.name);\n } else if (file?.name?.endsWith(\".excalidraw\")) {\n file = createFile(file, MIME_TYPES.excalidraw, file.name);\n } else if (!file.type || file.type?.startsWith(\"image/\")) {\n // when the file is an image, make sure the extension corresponds to the\n // actual mimeType (this is an edge case, but happens - especially\n // with AI generated images)\n const mimeType = await getActualMimeTypeFromImage(file);\n if (mimeType && mimeType !== file.type) {\n file = createFile(file, mimeType, file.name);\n }\n }\n\n (file as any)[normalizedFileSymbol] = true;\n\n return file;\n};\n\nexport const blobToArrayBuffer = (blob: Blob): Promise<ArrayBuffer> => {\n if (\"arrayBuffer\" in blob) {\n return blob.arrayBuffer();\n }\n // Safari\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (event) => {\n if (!event.target?.result) {\n return reject(new Error(\"Couldn't convert blob to ArrayBuffer\"));\n }\n resolve(event.target.result as ArrayBuffer);\n };\n reader.readAsArrayBuffer(blob);\n });\n};\n", "import {\n COLOR_PALETTE,\n ARROW_TYPE,\n DEFAULT_ELEMENT_PROPS,\n DEFAULT_FONT_FAMILY,\n DEFAULT_FONT_SIZE,\n DEFAULT_TEXT_ALIGN,\n DEFAULT_GRID_SIZE,\n EXPORT_SCALES,\n STATS_PANELS,\n THEME,\n DEFAULT_GRID_STEP,\n isTestEnv,\n} from \"@excalidraw/common\";\n\nimport type { AppState, NormalizedZoomValue } from \"./types\";\n\nconst defaultExportScale = EXPORT_SCALES.includes(devicePixelRatio)\n ? devicePixelRatio\n : 1;\n\nexport const getDefaultAppState = (): Omit<\n AppState,\n \"offsetTop\" | \"offsetLeft\" | \"width\" | \"height\"\n> => {\n return {\n showWelcomeScreen: false,\n theme: THEME.LIGHT,\n collaborators: new Map(),\n currentChartType: \"bar\",\n currentItemBackgroundColor: DEFAULT_ELEMENT_PROPS.backgroundColor,\n currentItemEndArrowhead: \"arrow\",\n currentItemFillStyle: DEFAULT_ELEMENT_PROPS.fillStyle,\n currentItemFontFamily: DEFAULT_FONT_FAMILY,\n currentItemFontSize: DEFAULT_FONT_SIZE,\n currentItemOpacity: DEFAULT_ELEMENT_PROPS.opacity,\n currentItemRoughness: DEFAULT_ELEMENT_PROPS.roughness,\n currentItemStartArrowhead: null,\n currentItemStrokeColor: DEFAULT_ELEMENT_PROPS.strokeColor,\n currentItemRoundness: isTestEnv() ? \"sharp\" : \"round\",\n currentItemArrowType: ARROW_TYPE.round,\n currentItemStrokeStyle: DEFAULT_ELEMENT_PROPS.strokeStyle,\n currentItemStrokeWidth: DEFAULT_ELEMENT_PROPS.strokeWidth,\n currentItemTextAlign: DEFAULT_TEXT_ALIGN,\n currentHoveredFontFamily: null,\n cursorButton: \"up\",\n activeEmbeddable: null,\n newElement: null,\n editingTextElement: null,\n editingGroupId: null,\n activeTool: {\n type: \"selection\",\n customType: null,\n locked: DEFAULT_ELEMENT_PROPS.locked,\n fromSelection: false,\n lastActiveTool: null,\n },\n preferredSelectionTool: {\n type: \"selection\",\n initialized: false,\n },\n penMode: false,\n penDetected: false,\n errorMessage: null,\n exportBackground: true,\n exportScale: defaultExportScale,\n exportEmbedScene: false,\n exportWithDarkMode: false,\n fileHandle: null,\n gridSize: DEFAULT_GRID_SIZE,\n gridStep: DEFAULT_GRID_STEP,\n gridModeEnabled: false,\n isBindingEnabled: true,\n defaultSidebarDockedPreference: false,\n isLoading: false,\n isResizing: false,\n isRotating: false,\n lastPointerDownWith: \"mouse\",\n multiElement: null,\n name: null,\n contextMenu: null,\n openMenu: null,\n openPopup: null,\n openSidebar: null,\n openDialog: null,\n pasteDialog: { shown: false, data: null },\n previousSelectedElementIds: {},\n resizingElement: null,\n scrolledOutside: false,\n scrollX: 0,\n scrollY: 0,\n selectedElementIds: {},\n hoveredElementIds: {},\n selectedGroupIds: {},\n selectedElementsAreBeingDragged: false,\n selectionElement: null,\n shouldCacheIgnoreZoom: false,\n stats: {\n open: false,\n panels: STATS_PANELS.generalStats | STATS_PANELS.elementProperties,\n },\n startBoundElement: null,\n suggestedBinding: null,\n frameRendering: { enabled: true, clip: true, name: true, outline: true },\n frameToHighlight: null,\n editingFrame: null,\n elementsToHighlight: null,\n toast: null,\n viewBackgroundColor: COLOR_PALETTE.white,\n zenModeEnabled: false,\n zoom: {\n value: 1 as NormalizedZoomValue,\n },\n viewModeEnabled: false,\n showHyperlinkPopup: false,\n selectedLinearElement: null,\n snapLines: [],\n originSnapOffset: {\n x: 0,\n y: 0,\n },\n objectsSnapModeEnabled: false,\n userToFollow: null,\n followedBy: new Set(),\n isCropping: false,\n croppingElementId: null,\n searchMatches: null,\n lockedMultiSelections: {},\n activeLockedId: null,\n bindMode: \"orbit\",\n };\n};\n\n/**\n * Config containing all AppState keys. Used to determine whether given state\n * prop should be stripped when exporting to given storage type.\n */\nconst APP_STATE_STORAGE_CONF = (<\n Values extends {\n /** whether to keep when storing to browser storage (localStorage/IDB) */\n browser: boolean;\n /** whether to keep when exporting to file/database */\n export: boolean;\n /** server (shareLink/collab/...) */\n server: boolean;\n },\n T extends Record<keyof AppState, Values>,\n>(config: { [K in keyof T]: K extends keyof AppState ? T[K] : never }) =>\n config)({\n showWelcomeScreen: { browser: true, export: false, server: false },\n theme: { browser: true, export: false, server: false },\n collaborators: { browser: false, export: false, server: false },\n currentChartType: { browser: true, export: false, server: false },\n currentItemBackgroundColor: { browser: true, export: false, server: false },\n currentItemEndArrowhead: { browser: true, export: false, server: false },\n currentItemFillStyle: { browser: true, export: false, server: false },\n currentItemFontFamily: { browser: true, export: false, server: false },\n currentItemFontSize: { browser: true, export: false, server: false },\n currentItemRoundness: {\n browser: true,\n export: false,\n server: false,\n },\n currentItemArrowType: {\n browser: true,\n export: false,\n server: false,\n },\n currentItemOpacity: { browser: true, export: false, server: false },\n currentItemRoughness: { browser: true, export: false, server: false },\n currentItemStartArrowhead: { browser: true, export: false, server: false },\n currentItemStrokeColor: { browser: true, export: false, server: false },\n currentItemStrokeStyle: { browser: true, export: false, server: false },\n currentItemStrokeWidth: { browser: true, export: false, server: false },\n currentItemTextAlign: { browser: true, export: false, server: false },\n currentHoveredFontFamily: { browser: false, export: false, server: false },\n cursorButton: { browser: true, export: false, server: false },\n activeEmbeddable: { browser: false, export: false, server: false },\n newElement: { browser: false, export: false, server: false },\n editingTextElement: { browser: false, export: false, server: false },\n editingGroupId: { browser: true, export: false, server: false },\n activeTool: { browser: true, export: false, server: false },\n preferredSelectionTool: { browser: true, export: false, server: false },\n penMode: { browser: true, export: false, server: false },\n penDetected: { browser: true, export: false, server: false },\n errorMessage: { browser: false, export: false, server: false },\n exportBackground: { browser: true, export: false, server: false },\n exportEmbedScene: { browser: true, export: false, server: false },\n exportScale: { browser: true, export: false, server: false },\n exportWithDarkMode: { browser: true, export: false, server: false },\n fileHandle: { browser: false, export: false, server: false },\n gridSize: { browser: true, export: true, server: true },\n gridStep: { browser: true, export: true, server: true },\n gridModeEnabled: { browser: true, export: true, server: true },\n height: { browser: false, export: false, server: false },\n isBindingEnabled: { browser: false, export: false, server: false },\n defaultSidebarDockedPreference: {\n browser: true,\n export: false,\n server: false,\n },\n isLoading: { browser: false, export: false, server: false },\n isResizing: { browser: false, export: false, server: false },\n isRotating: { browser: false, export: false, server: false },\n lastPointerDownWith: { browser: true, export: false, server: false },\n multiElement: { browser: false, export: false, server: false },\n name: { browser: true, export: false, server: false },\n offsetLeft: { browser: false, export: false, server: false },\n offsetTop: { browser: false, export: false, server: false },\n contextMenu: { browser: false, export: false, server: false },\n openMenu: { browser: true, export: false, server: false },\n openPopup: { browser: false, export: false, server: false },\n openSidebar: { browser: true, export: false, server: false },\n openDialog: { browser: false, export: false, server: false },\n pasteDialog: { browser: false, export: false, server: false },\n previousSelectedElementIds: { browser: true, export: false, server: false },\n resizingElement: { browser: false, export: false, server: false },\n scrolledOutside: { browser: true, export: false, server: false },\n scrollX: { browser: true, export: false, server: false },\n scrollY: { browser: true, export: false, server: false },\n selectedElementIds: { browser: true, export: false, server: false },\n hoveredElementIds: { browser: false, export: false, server: false },\n selectedGroupIds: { browser: true, export: false, server: false },\n selectedElementsAreBeingDragged: {\n browser: false,\n export: false,\n server: false,\n },\n selectionElement: { browser: false, export: false, server: false },\n shouldCacheIgnoreZoom: { browser: true, export: false, server: false },\n stats: { browser: true, export: false, server: false },\n startBoundElement: { browser: false, export: false, server: false },\n suggestedBinding: { browser: false, export: false, server: false },\n frameRendering: { browser: false, export: false, server: false },\n frameToHighlight: { browser: false, export: false, server: false },\n editingFrame: { browser: false, export: false, server: false },\n elementsToHighlight: { browser: false, export: false, server: false },\n toast: { browser: false, export: false, server: false },\n viewBackgroundColor: { browser: true, export: true, server: true },\n width: { browser: false, export: false, server: false },\n zenModeEnabled: { browser: true, export: false, server: false },\n zoom: { browser: true, export: false, server: false },\n viewModeEnabled: { browser: false, export: false, server: false },\n showHyperlinkPopup: { browser: false, export: false, server: false },\n selectedLinearElement: { browser: true, export: false, server: false },\n snapLines: { browser: false, export: false, server: false },\n originSnapOffset: { browser: false, export: false, server: false },\n objectsSnapModeEnabled: { browser: true, export: false, server: false },\n userToFollow: { browser: false, export: false, server: false },\n followedBy: { browser: false, export: false, server: false },\n isCropping: { browser: false, export: false, server: false },\n croppingElementId: { browser: false, export: false, server: false },\n searchMatches: { browser: false, export: false, server: false },\n lockedMultiSelections: { browser: true, export: true, server: true },\n activeLockedId: { browser: false, export: false, server: false },\n bindMode: { browser: true, export: false, server: false },\n});\n\nconst _clearAppStateForStorage = <\n ExportType extends \"export\" | \"browser\" | \"server\",\n>(\n appState: Partial<AppState>,\n exportType: ExportType,\n) => {\n type ExportableKeys = {\n [K in keyof typeof APP_STATE_STORAGE_CONF]: typeof APP_STATE_STORAGE_CONF[K][ExportType] extends true\n ? K\n : never;\n }[keyof typeof APP_STATE_STORAGE_CONF];\n const stateForExport = {} as { [K in ExportableKeys]?: typeof appState[K] };\n for (const key of Object.keys(appState) as (keyof typeof appState)[]) {\n const propConfig = APP_STATE_STORAGE_CONF[key];\n if (propConfig?.[exportType]) {\n const nextValue = appState[key];\n\n // https://github.com/microsoft/TypeScript/issues/31445\n (stateForExport as any)[key] = nextValue;\n }\n }\n return stateForExport;\n};\n\nexport const clearAppStateForLocalStorage = (appState: Partial<AppState>) => {\n return _clearAppStateForStorage(appState, \"browser\");\n};\n\nexport const cleanAppStateForExport = (appState: Partial<AppState>) => {\n return _clearAppStateForStorage(appState, \"export\");\n};\n\nexport const clearAppStateForDatabase = (appState: Partial<AppState>) => {\n return _clearAppStateForStorage(appState, \"server\");\n};\n\nexport const isEraserActive = ({\n activeTool,\n}: {\n activeTool: AppState[\"activeTool\"];\n}) => activeTool.type === \"eraser\";\n\nexport const isHandToolActive = ({\n activeTool,\n}: {\n activeTool: AppState[\"activeTool\"];\n}) => {\n return activeTool.type === \"hand\";\n};\n", "type CANVAS_ERROR_NAMES = \"CANVAS_ERROR\" | \"CANVAS_POSSIBLY_TOO_BIG\";\n\nexport class CanvasError extends Error {\n constructor(\n message: string = \"Couldn't export canvas.\",\n name: CANVAS_ERROR_NAMES = \"CANVAS_ERROR\",\n ) {\n super();\n this.name = name;\n this.message = message;\n }\n}\n\nexport class AbortError extends DOMException {\n constructor(message: string = \"Request Aborted\") {\n super(message, \"AbortError\");\n }\n}\n\ntype ImageSceneDataErrorCode =\n | \"IMAGE_NOT_CONTAINS_SCENE_DATA\"\n | \"IMAGE_SCENE_DATA_ERROR\";\n\nexport class ImageSceneDataError extends Error {\n public code;\n constructor(\n message = \"Image Scene Data Error\",\n code: ImageSceneDataErrorCode = \"IMAGE_SCENE_DATA_ERROR\",\n ) {\n super(message);\n this.name = \"EncodingError\";\n this.code = code;\n }\n}\n\ntype WorkerErrorCodes = \"WORKER_URL_NOT_DEFINED\" | \"WORKER_IN_THE_MAIN_CHUNK\";\n\nexport class WorkerUrlNotDefinedError extends Error {\n public code;\n constructor(\n message = \"Worker URL is not defined!\",\n code: WorkerErrorCodes = \"WORKER_URL_NOT_DEFINED\",\n ) {\n super(message);\n this.name = \"WorkerUrlNotDefinedError\";\n this.code = code;\n }\n}\n\nexport class WorkerInTheMainChunkError extends Error {\n public code;\n constructor(\n message = \"Worker has to be in a separate chunk!\",\n code: WorkerErrorCodes = \"WORKER_IN_THE_MAIN_CHUNK\",\n ) {\n super(message);\n this.name = \"WorkerInTheMainChunkError\";\n this.code = code;\n }\n}\n\n/**\n * Use this for generic, handled errors, so you can check against them\n * and rethrow if needed\n */\nexport class ExcalidrawError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ExcalidrawError\";\n }\n}\n", "export {\n isSomeElementSelected,\n getElementsWithinSelection,\n getSelectedElements,\n getTargetElements,\n} from \"@excalidraw/element\";\nexport { calculateScrollCenter } from \"./scroll\";\nexport {\n hasBackground,\n hasStrokeWidth,\n hasStrokeStyle,\n canHaveArrowheads,\n canChangeRoundness,\n} from \"@excalidraw/element\";\nexport {\n getNormalizedZoom,\n getNormalizedGridSize,\n getNormalizedGridStep,\n} from \"./normalize\";\n", "import { getVisibleElements } from \"@excalidraw/element\";\nimport {\n sceneCoordsToViewportCoords,\n viewportCoordsToSceneCoords,\n} from \"@excalidraw/common\";\n\nimport { getClosestElementBounds } from \"@excalidraw/element\";\n\nimport { getCommonBounds } from \"@excalidraw/element\";\n\nimport type { ExcalidrawElement } from \"@excalidraw/element/types\";\n\nimport type { AppState, Offsets, PointerCoords, Zoom } from \"../types\";\n\nconst isOutsideViewPort = (appState: AppState, cords: Array<number>) => {\n const [x1, y1, x2, y2] = cords;\n const { x: viewportX1, y: viewportY1 } = sceneCoordsToViewportCoords(\n { sceneX: x1, sceneY: y1 },\n appState,\n );\n const { x: viewportX2, y: viewportY2 } = sceneCoordsToViewportCoords(\n { sceneX: x2, sceneY: y2 },\n appState,\n );\n return (\n viewportX2 - viewportX1 > appState.width ||\n viewportY2 - viewportY1 > appState.height\n );\n};\n\nexport const centerScrollOn = ({\n scenePoint,\n viewportDimensions,\n zoom,\n offsets,\n}: {\n scenePoint: PointerCoords;\n viewportDimensions: { height: number; width: number };\n zoom: Zoom;\n offsets?: Offsets;\n}) => {\n let scrollX =\n (viewportDimensions.width - (offsets?.right ?? 0)) / 2 / zoom.value -\n scenePoint.x;\n\n scrollX += (offsets?.left ?? 0) / 2 / zoom.value;\n\n let scrollY =\n (viewportDimensions.height - (offsets?.bottom ?? 0)) / 2 / zoom.value -\n scenePoint.y;\n\n scrollY += (offsets?.top ?? 0) / 2 / zoom.value;\n\n return {\n scrollX,\n scrollY,\n };\n};\n\nexport const calculateScrollCenter = (\n elements: readonly ExcalidrawElement[],\n appState: AppState,\n): { scrollX: number; scrollY: number } => {\n elements = getVisibleElements(elements);\n\n if (!elements.length) {\n return {\n scrollX: 0,\n scrollY: 0,\n };\n }\n let [x1, y1, x2, y2] = getCommonBounds(elements);\n\n if (isOutsideViewPort(appState, [x1, y1, x2, y2])) {\n [x1, y1, x2, y2] = getClosestElementBounds(\n elements,\n viewportCoordsToSceneCoords(\n { clientX: appState.scrollX, clientY: appState.scrollY },\n appState,\n ),\n );\n }\n\n const centerX = (x1 + x2) / 2;\n const centerY = (y1 + y2) / 2;\n\n return centerScrollOn({\n scenePoint: { x: centerX, y: centerY },\n viewportDimensions: { width: appState.width, height: appState.height },\n zoom: appState.zoom,\n });\n};\n", "import { MAX_ZOOM, MIN_ZOOM } from \"@excalidraw/common\";\n\nimport { clamp, round } from \"@excalidraw/math\";\n\nimport type { NormalizedZoomValue } from \"../types\";\n\nexport const getNormalizedZoom = (zoom: number): NormalizedZoomValue => {\n return clamp(round(zoom, 6), MIN_ZOOM, MAX_ZOOM) as NormalizedZoomValue;\n};\n\nexport const getNormalizedGridSize = (gridStep: number) => {\n return clamp(Math.round(gridStep), 1, 100);\n};\n\nexport const getNormalizedGridStep = (gridStep: number) => {\n return clamp(Math.round(gridStep), 1, 100);\n};\n", "import rough from \"roughjs/bin/rough\";\n\nimport {\n DEFAULT_EXPORT_PADDING,\n FRAME_STYLE,\n FONT_FAMILY,\n SVG_NS,\n THEME,\n THEME_FILTER,\n MIME_TYPES,\n EXPORT_DATA_TYPES,\n arrayToMap,\n distance,\n getFontString,\n toBrandedType,\n} from \"@excalidraw/common\";\n\nimport { getCommonBounds, getElementAbsoluteCoords } from \"@excalidraw/element\";\n\nimport {\n getInitializedImageElements,\n updateImageCache,\n} from \"@excalidraw/element\";\n\nimport { newElementWith } from \"@excalidraw/element\";\n\nimport { isFrameLikeElement } from \"@excalidraw/element\";\n\nimport {\n getElementsOverlappingFrame,\n getFrameLikeElements,\n getFrameLikeTitle,\n getRootElements,\n} from \"@excalidraw/element\";\n\nimport { syncInvalidIndices } from \"@excalidraw/element\";\n\nimport { type Mutable } from \"@excalidraw/common/utility-types\";\n\nimport { newTextElement } from \"@excalidraw/element\";\n\nimport type { Bounds } from \"@excalidraw/common\";\n\nimport type {\n ExcalidrawElement,\n ExcalidrawFrameLikeElement,\n ExcalidrawTextElement,\n NonDeletedExcalidrawElement,\n NonDeletedSceneElementsMap,\n} from \"@excalidraw/element/types\";\n\nimport { getDefaultAppState } from \"../appState\";\nimport { base64ToString, decode, encode, stringToBase64 } from \"../data/encode\";\nimport { serializeAsJSON } from \"../data/json\";\n\nimport { Fonts } from \"../fonts\";\n\nimport { renderStaticScene } from \"../renderer/staticScene\";\nimport { renderSceneToSvg } from \"../renderer/staticSvgScene\";\n\nimport type { RenderableElementsMap } from \"./types\";\n\nimport type { AppState, BinaryFiles } from \"../types\";\n\nconst truncateText = (element: ExcalidrawTextElement, maxWidth: number) => {\n if (element.width <= maxWidth) {\n return element;\n }\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\")!;\n ctx.font = getFontString({\n fontFamily: element.fontFamily,\n fontSize: element.fontSize,\n });\n\n let text = element.text;\n\n const metrics = ctx.measureText(text);\n\n if (metrics.width > maxWidth) {\n // we iterate from the right, removing characters one by one instead\n // of bulding the string up. This assumes that it's more likely\n // your frame names will overflow by not that many characters\n // (if ever), so it sohuld be faster this way.\n for (let i = text.length; i > 0; i--) {\n const newText = `${text.slice(0, i)}...`;\n if (ctx.measureText(newText).width <= maxWidth) {\n text = newText;\n break;\n }\n }\n }\n return newElementWith(element, { text, width: maxWidth });\n};\n\n/**\n * When exporting frames, we need to render frame labels which are currently\n * being rendered in DOM when editing. Adding the labels as regular text\n * elements seems like a simple hack. In the future we'll want to move to\n * proper canvas rendering, even within editor (instead of DOM).\n */\nconst addFrameLabelsAsTextElements = (\n elements: readonly NonDeletedExcalidrawElement[],\n opts: Pick<AppState, \"exportWithDarkMode\">,\n) => {\n const nextElements: NonDeletedExcalidrawElement[] = [];\n for (const element of elements) {\n if (isFrameLikeElement(element)) {\n let textElement: Mutable<ExcalidrawTextElement> = newTextElement({\n x: element.x,\n y: element.y - FRAME_STYLE.nameOffsetY,\n fontFamily: FONT_FAMILY.Helvetica,\n fontSize: FRAME_STYLE.nameFontSize,\n lineHeight:\n FRAME_STYLE.nameLineHeight as ExcalidrawTextElement[\"lineHeight\"],\n strokeColor: opts.exportWithDarkMode\n ? FRAME_STYLE.nameColorDarkTheme\n : FRAME_STYLE.nameColorLightTheme,\n text: getFrameLikeTitle(element),\n });\n textElement.y -= textElement.height;\n\n textElement = truncateText(textElement, element.width);\n\n nextElements.push(textElement);\n }\n nextElements.push(element);\n }\n\n return nextElements;\n};\n\nconst getFrameRenderingConfig = (\n exportingFrame: ExcalidrawFrameLikeElement | null,\n frameRendering: AppState[\"frameRendering\"] | null,\n): AppState[\"frameRendering\"] => {\n frameRendering = frameRendering || getDefaultAppState().frameRendering;\n return {\n enabled: exportingFrame ? true : frameRendering.enabled,\n outline: exportingFrame ? false : frameRendering.outline,\n name: exportingFrame ? false : frameRendering.name,\n clip: exportingFrame ? true : frameRendering.clip,\n };\n};\n\nconst prepareElementsForRender = ({\n elements,\n exportingFrame,\n frameRendering,\n exportWithDarkMode,\n}: {\n elements: readonly ExcalidrawElement[];\n exportingFrame: ExcalidrawFrameLikeElement | null | undefined;\n frameRendering: AppState[\"frameRendering\"];\n exportWithDarkMode: AppState[\"exportWithDarkMode\"];\n}) => {\n let nextElements: readonly ExcalidrawElement[];\n\n if (exportingFrame) {\n nextElements = getElementsOverlappingFrame(elements, exportingFrame);\n } else if (frameRendering.enabled && frameRendering.name) {\n nextElements = addFrameLabelsAsTextElements(elements, {\n exportWithDarkMode,\n });\n } else {\n nextElements = elements;\n }\n\n return nextElements;\n};\n\nexport const exportToCanvas = async (\n elements: readonly NonDeletedExcalidrawElement[],\n appState: AppState,\n files: BinaryFiles,\n {\n exportBackground,\n exportPadding = DEFAULT_EXPORT_PADDING,\n viewBackgroundColor,\n exportingFrame,\n }: {\n exportBackground: boolean;\n exportPadding?: number;\n viewBackgroundColor: string;\n exportingFrame?: ExcalidrawFrameLikeElement | null;\n },\n createCanvas: (\n width: number,\n height: number,\n ) => { canvas: HTMLCanvasElement; scale: number } = (width, height) => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width * appState.exportScale;\n canvas.height = height * appState.exportScale;\n return { canvas, scale: appState.exportScale };\n },\n loadFonts: () => Promise<void> = async () => {\n await Fonts.loadElementsFonts(elements);\n },\n) => {\n // load font faces before continuing, by default leverages browsers' [FontFace API](https://developer.mozilla.org/en-US/docs/Web/API/FontFace)\n await loadFonts();\n\n const frameRendering = getFrameRenderingConfig(\n exportingFrame ?? null,\n appState.frameRendering ?? null,\n );\n // for canvas export, don't clip if exporting a specific frame as it would\n // clip the corners of the content\n if (exportingFrame) {\n frameRendering.clip = false;\n }\n\n const elementsForRender = prepareElementsForRender({\n elements,\n exportingFrame,\n exportWithDarkMode: appState.exportWithDarkMode,\n frameRendering,\n });\n\n if (exportingFrame) {\n exportPadding = 0;\n }\n\n const [minX, minY, width, height] = getCanvasSize(\n exportingFrame ? [exportingFrame] : getRootElements(elementsForRender),\n exportPadding,\n );\n\n const { canvas, scale = 1 } = createCanvas(width, height);\n\n const defaultAppState = getDefaultAppState();\n\n const { imageCache } = await updateImageCache({\n imageCache: new Map(),\n fileIds: getInitializedImageElements(elementsForRender).map(\n (element) => element.fileId,\n ),\n files,\n });\n\n renderStaticScene({\n canvas,\n rc: rough.canvas(canvas),\n elementsMap: toBrandedType<RenderableElementsMap>(\n arrayToMap(elementsForRender),\n ),\n allElementsMap: toBrandedType<NonDeletedSceneElementsMap>(\n arrayToMap(syncInvalidIndices(elements)),\n ),\n visibleElements: elementsForRender,\n scale,\n appState: {\n ...appState,\n frameRendering,\n viewBackgroundColor: exportBackground ? viewBackgroundColor : null,\n scrollX: -minX + exportPadding,\n scrollY: -minY + exportPadding,\n zoom: defaultAppState.zoom,\n shouldCacheIgnoreZoom: false,\n theme: appState.exportWithDarkMode ? THEME.DARK : THEME.LIGHT,\n },\n renderConfig: {\n canvasBackgroundColor: viewBackgroundColor,\n imageCache,\n renderGrid: false,\n isExporting: true,\n // empty disables embeddable rendering\n embedsValidationStatus: new Map(),\n elementsPendingErasure: new Set(),\n pendingFlowchartNodes: null,\n },\n });\n\n return canvas;\n};\n\nconst createHTMLComment = (text: string) => {\n // surrounding with spaces to maintain prettified consistency with previous\n // iterations\n // <!-- comment -->\n return document.createComment(` ${text} `);\n};\n\nexport const exportToSvg = async (\n elements: readonly NonDeletedExcalidrawElement[],\n appState: {\n exportBackground: boolean;\n exportPadding?: number;\n exportScale?: number;\n viewBackgroundColor: string;\n exportWithDarkMode?: boolean;\n exportEmbedScene?: boolean;\n frameRendering?: AppState[\"frameRendering\"];\n },\n files: BinaryFiles | null,\n opts?: {\n /**\n * if true, all embeddables passed in will be rendered when possible.\n */\n renderEmbeddables?: boolean;\n exportingFrame?: ExcalidrawFrameLikeElement | null;\n skipInliningFonts?: true;\n reuseImages?: boolean;\n },\n): Promise<SVGSVGElement> => {\n const frameRendering = getFrameRenderingConfig(\n opts?.exportingFrame ?? null,\n appState.frameRendering ?? null,\n );\n\n let {\n exportPadding = DEFAULT_EXPORT_PADDING,\n exportWithDarkMode = false,\n viewBackgroundColor,\n exportScale = 1,\n exportEmbedScene,\n } = appState;\n\n const { exportingFrame = null } = opts || {};\n\n const elementsForRender = prepareElementsForRender({\n elements,\n exportingFrame,\n exportWithDarkMode,\n frameRendering,\n });\n\n if (exportingFrame) {\n exportPadding = 0;\n }\n\n const [minX, minY, width, height] = getCanvasSize(\n exportingFrame ? [exportingFrame] : getRootElements(elementsForRender),\n exportPadding,\n );\n\n const offsetX = -minX + exportPadding;\n const offsetY = -minY + exportPadding;\n\n // ---------------------------------------------------------------------------\n // initialize SVG root element\n // ---------------------------------------------------------------------------\n\n const svgRoot = document.createElementNS(SVG_NS, \"svg\");\n\n svgRoot.setAttribute(\"version\", \"1.1\");\n svgRoot.setAttribute(\"xmlns\", SVG_NS);\n svgRoot.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n svgRoot.setAttribute(\"width\", `${width * exportScale}`);\n svgRoot.setAttribute(\"height\", `${height * exportScale}`);\n if (exportWithDarkMode) {\n svgRoot.setAttribute(\"filter\", THEME_FILTER);\n }\n\n const defsElement = svgRoot.ownerDocument.createElementNS(SVG_NS, \"defs\");\n\n const metadataElement = svgRoot.ownerDocument.createElementNS(\n SVG_NS,\n \"metadata\",\n );\n\n svgRoot.appendChild(createHTMLComment(\"svg-source:excalidraw\"));\n svgRoot.appendChild(metadataElement);\n svgRoot.appendChild(defsElement);\n\n // ---------------------------------------------------------------------------\n // scene embed\n // ---------------------------------------------------------------------------\n\n // we need to serialize the \"original\" elements before we put them through\n // the tempScene hack which duplicates and regenerates ids\n if (exportEmbedScene) {\n try {\n encodeSvgBase64Payload({\n metadataElement,\n // when embedding scene, we want to embed the origionally supplied\n // elements which don't contain the temp frame labels.\n // But it also requires that the exportToSvg is being supplied with\n // only the elements that we're exporting, and no extra.\n payload: serializeAsJSON(elements, appState, files || {}, \"local\"),\n });\n } catch (error: any) {\n console.error(error);\n }\n }\n\n // ---------------------------------------------------------------------------\n // frame clip paths\n // ---------------------------------------------------------------------------\n\n const frameElements = getFrameLikeElements(elements);\n\n if (frameElements.length) {\n const elementsMap = arrayToMap(elements);\n\n for (const frame of frameElements) {\n const clipPath = svgRoot.ownerDocument.createElementNS(\n SVG_NS,\n \"clipPath\",\n );\n\n clipPath.setAttribute(\"id\", frame.id);\n\n const [x1, y1, x2, y2] = getElementAbsoluteCoords(frame, elementsMap);\n const cx = (x2 - x1) / 2 - (frame.x - x1);\n const cy = (y2 - y1) / 2 - (frame.y - y1);\n\n const rect = svgRoot.ownerDocument.createElementNS(SVG_NS, \"rect\");\n rect.setAttribute(\n \"transform\",\n `translate(${frame.x + offsetX} ${frame.y + offsetY}) rotate(${\n frame.angle\n } ${cx} ${cy})`,\n );\n rect.setAttribute(\"width\", `${frame.width}`);\n rect.setAttribute(\"height\", `${frame.height}`);\n\n if (!exportingFrame) {\n rect.setAttribute(\"rx\", `${FRAME_STYLE.radius}`);\n rect.setAttribute(\"ry\", `${FRAME_STYLE.radius}`);\n }\n\n clipPath.appendChild(rect);\n\n defsElement.appendChild(clipPath);\n }\n }\n\n // ---------------------------------------------------------------------------\n // inline font faces\n // ---------------------------------------------------------------------------\n\n const fontFaces = !opts?.skipInliningFonts\n ? await Fonts.generateFontFaceDeclarations(elements)\n : [];\n\n const delimiter = \"\\n \"; // 6 spaces\n\n const style = svgRoot.ownerDocument.createElementNS(SVG_NS, \"style\");\n style.classList.add(\"style-fonts\");\n style.appendChild(\n document.createTextNode(`${delimiter}${fontFaces.join(delimiter)}`),\n );\n\n defsElement.appendChild(style);\n\n // ---------------------------------------------------------------------------\n // background\n // ---------------------------------------------------------------------------\n\n // render background rect\n if (appState.exportBackground && viewBackgroundColor) {\n const rect = svgRoot.ownerDocument.createElementNS(SVG_NS, \"rect\");\n rect.setAttribute(\"x\", \"0\");\n rect.setAttribute(\"y\", \"0\");\n rect.setAttribute(\"width\", `${width}`);\n rect.setAttribute(\"height\", `${height}`);\n rect.setAttribute(\"fill\", viewBackgroundColor);\n svgRoot.appendChild(rect);\n }\n\n // ---------------------------------------------------------------------------\n // render elements\n // ---------------------------------------------------------------------------\n\n const rsvg = rough.svg(svgRoot);\n\n const renderEmbeddables = opts?.renderEmbeddables ?? false;\n\n renderSceneToSvg(\n elementsForRender,\n toBrandedType<RenderableElementsMap>(arrayToMap(elementsForRender)),\n rsvg,\n svgRoot,\n files || {},\n {\n offsetX,\n offsetY,\n isExporting: true,\n exportWithDarkMode,\n renderEmbeddables,\n frameRendering,\n canvasBackgroundColor: viewBackgroundColor,\n embedsValidationStatus: renderEmbeddables\n ? new Map(\n elementsForRender\n .filter((element) => isFrameLikeElement(element))\n .map((element) => [element.id, true]),\n )\n : new Map(),\n reuseImages: opts?.reuseImages ?? true,\n },\n );\n\n // ---------------------------------------------------------------------------\n\n return svgRoot;\n};\n\nexport const encodeSvgBase64Payload = ({\n payload,\n metadataElement,\n}: {\n payload: string;\n metadataElement: SVGMetadataElement;\n}) => {\n const base64 = stringToBase64(\n JSON.stringify(encode({ text: payload })),\n true /* is already byte string */,\n );\n\n metadataElement.appendChild(\n createHTMLComment(`payload-type:${MIME_TYPES.excalidraw}`),\n );\n metadataElement.appendChild(createHTMLComment(\"payload-version:2\"));\n metadataElement.appendChild(createHTMLComment(\"payload-start\"));\n metadataElement.appendChild(document.createTextNode(base64));\n metadataElement.appendChild(createHTMLComment(\"payload-end\"));\n};\n\nexport const decodeSvgBase64Payload = ({ svg }: { svg: string }) => {\n if (svg.includes(`payload-type:${MIME_TYPES.excalidraw}`)) {\n const match = svg.match(\n /<!-- payload-start -->\\s*(.+?)\\s*<!-- payload-end -->/,\n );\n if (!match) {\n throw new Error(\"INVALID\");\n }\n const versionMatch = svg.match(/<!-- payload-version:(\\d+) -->/);\n const version = versionMatch?.[1] || \"1\";\n const isByteString = version !== \"1\";\n\n try {\n const json = base64ToString(match[1], isByteString);\n const encodedData = JSON.parse(json);\n if (!(\"encoded\" in encodedData)) {\n // legacy, un-encoded scene JSON\n if (\n \"type\" in encodedData &&\n encodedData.type === EXPORT_DATA_TYPES.excalidraw\n ) {\n return json;\n }\n throw new Error(\"FAILED\");\n }\n return decode(encodedData);\n } catch (error: any) {\n console.error(error);\n throw new Error(\"FAILED\");\n }\n }\n throw new Error(\"INVALID\");\n};\n\n// calculate smallest area to fit the contents in\nconst getCanvasSize = (\n elements: readonly NonDeletedExcalidrawElement[],\n exportPadding: number,\n): Bounds => {\n const [minX, minY, maxX, maxY] = getCommonBounds(elements);\n const width = distance(minX, maxX) + exportPadding * 2;\n const height = distance(minY, maxY) + exportPadding * 2;\n\n return [minX, minY, width, height];\n};\n\nexport const getExportSize = (\n elements: readonly NonDeletedExcalidrawElement[],\n exportPadding: number,\n scale: number,\n): [number, number] => {\n const [, , width, height] = getCanvasSize(elements, exportPadding).map(\n (dimension) => Math.trunc(dimension * scale),\n );\n\n return [width, height];\n};\n", "import { deflate, inflate } from \"pako\";\n\nimport { encryptData, decryptData } from \"./encryption\";\n\n// -----------------------------------------------------------------------------\n// byte (binary) strings\n// -----------------------------------------------------------------------------\n\n// Buffer-compatible implem.\n//\n// Note that in V8, spreading the uint8array (by chunks) into\n// `String.fromCharCode(...uint8array)` tends to be faster for large\n// strings/buffers, in case perf is needed in the future.\nexport const toByteString = (data: string | Uint8Array | ArrayBuffer) => {\n const bytes =\n typeof data === \"string\"\n ? new TextEncoder().encode(data)\n : data instanceof Uint8Array\n ? data\n : new Uint8Array(data);\n let bstring = \"\";\n for (const byte of bytes) {\n bstring += String.fromCharCode(byte);\n }\n return bstring;\n};\n\nconst byteStringToArrayBuffer = (byteString: string) => {\n const buffer = new ArrayBuffer(byteString.length);\n const bufferView = new Uint8Array(buffer);\n for (let i = 0, len = byteString.length; i < len; i++) {\n bufferView[i] = byteString.charCodeAt(i);\n }\n return buffer;\n};\n\nconst byteStringToString = (byteString: string) => {\n return new TextDecoder(\"utf-8\").decode(byteStringToArrayBuffer(byteString));\n};\n\n// -----------------------------------------------------------------------------\n// base64\n// -----------------------------------------------------------------------------\n\n/**\n * @param isByteString set to true if already byte string to prevent bloat\n * due to reencoding\n */\nexport const stringToBase64 = (str: string, isByteString = false) => {\n return isByteString ? window.btoa(str) : window.btoa(toByteString(str));\n};\n\n// async to align with stringToBase64\nexport const base64ToString = (base64: string, isByteString = false) => {\n return isByteString\n ? window.atob(base64)\n : byteStringToString(window.atob(base64));\n};\n\nexport const base64ToArrayBuffer = (base64: string): ArrayBuffer => {\n if (typeof Buffer !== \"undefined\") {\n // Node.js environment\n return Buffer.from(base64, \"base64\").buffer;\n }\n // Browser environment\n return byteStringToArrayBuffer(atob(base64));\n};\n\n// -----------------------------------------------------------------------------\n// base64url\n// -----------------------------------------------------------------------------\n\nexport const base64urlToString = (str: string) => {\n return window.atob(\n // normalize base64URL to base64\n str\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(str.length + ((4 - (str.length % 4)) % 4), \"=\"),\n );\n};\n\n// -----------------------------------------------------------------------------\n// text encoding\n// -----------------------------------------------------------------------------\n\ntype EncodedData = {\n encoded: string;\n encoding: \"bstring\";\n /** whether text is compressed (zlib) */\n compressed: boolean;\n /** version for potential migration purposes */\n version?: string;\n};\n\n/**\n * Encodes (and potentially compresses via zlib) text to byte string\n */\nexport const encode = ({\n text,\n compress,\n}: {\n text: string;\n /** defaults to `true`. If compression fails, falls back to bstring alone. */\n compress?: boolean;\n}): EncodedData => {\n let deflated!: string;\n if (compress !== false) {\n try {\n deflated = toByteString(deflate(text));\n } catch (error: any) {\n console.error(\"encode: cannot deflate\", error);\n }\n }\n return {\n version: \"1\",\n encoding: \"bstring\",\n compressed: !!deflated,\n encoded: deflated || toByteString(text),\n };\n};\n\nexport const decode = (data: EncodedData): string => {\n let decoded: string;\n\n switch (data.encoding) {\n case \"bstring\":\n // if compressed, do not double decode the bstring\n decoded = data.compressed\n ? data.encoded\n : byteStringToString(data.encoded);\n break;\n default:\n throw new Error(`decode: unknown encoding \"${data.encoding}\"`);\n }\n\n if (data.compressed) {\n return inflate(new Uint8Array(byteStringToArrayBuffer(decoded)), {\n to: \"string\",\n });\n }\n\n return decoded;\n};\n\n// -----------------------------------------------------------------------------\n// binary encoding\n// -----------------------------------------------------------------------------\n\ntype FileEncodingInfo = {\n /* version 2 is the version we're shipping the initial image support with.\n version 1 was a PR version that a lot of people were using anyway.\n Thus, if there are issues we can check whether they're not using the\n unoffic version */\n version: 1 | 2;\n compression: \"pako@1\" | null;\n encryption: \"AES-GCM\" | null;\n};\n\n// -----------------------------------------------------------------------------\nconst CONCAT_BUFFERS_VERSION = 1;\n/** how many bytes we use to encode how many bytes the next chunk has.\n * Corresponds to DataView setter methods (setUint32, setUint16, etc).\n *\n * NOTE ! values must not be changed, which would be backwards incompatible !\n */\nconst VERSION_DATAVIEW_BYTES = 4;\nconst NEXT_CHUNK_SIZE_DATAVIEW_BYTES = 4;\n// -----------------------------------------------------------------------------\n\nconst DATA_VIEW_BITS_MAP = { 1: 8, 2: 16, 4: 32 } as const;\n\n// getter\nfunction dataView(buffer: Uint8Array, bytes: 1 | 2 | 4, offset: number): number;\n// setter\nfunction dataView(\n buffer: Uint8Array,\n bytes: 1 | 2 | 4,\n offset: number,\n value: number,\n): Uint8Array;\n/**\n * abstraction over DataView that serves as a typed getter/setter in case\n * you're using constants for the byte size and want to ensure there's no\n * discrepenancy in the encoding across refactors.\n *\n * DataView serves for an endian-agnostic handling of numbers in ArrayBuffers.\n */\nfunction dataView(\n buffer: Uint8Array,\n bytes: 1 | 2 | 4,\n offset: number,\n value?: number,\n): Uint8Array | number {\n if (value != null) {\n if (value > Math.pow(2, DATA_VIEW_BITS_MAP[bytes]) - 1) {\n throw new Error(\n `attempting to set value higher than the allocated bytes (value: ${value}, bytes: ${bytes})`,\n );\n }\n const method = `setUint${DATA_VIEW_BITS_MAP[bytes]}` as const;\n new DataView(buffer.buffer)[method](offset, value);\n return buffer;\n }\n const method = `getUint${DATA_VIEW_BITS_MAP[bytes]}` as const;\n return new DataView(buffer.buffer)[method](offset);\n}\n\n// -----------------------------------------------------------------------------\n\n/**\n * Resulting concatenated buffer has this format:\n *\n * [\n * VERSION chunk (4 bytes)\n * LENGTH chunk 1 (4 bytes)\n * DATA chunk 1 (up to 2^32 bits)\n * LENGTH chunk 2 (4 bytes)\n * DATA chunk 2 (up to 2^32 bits)\n * ...\n * ]\n *\n * @param buffers each buffer (chunk) must be at most 2^32 bits large (~4GB)\n */\nconst concatBuffers = (...buffers: Uint8Array[]): Uint8Array<ArrayBuffer> => {\n const bufferView = new Uint8Array(\n VERSION_DATAVIEW_BYTES +\n NEXT_CHUNK_SIZE_DATAVIEW_BYTES * buffers.length +\n buffers.reduce((acc, buffer) => acc + buffer.byteLength, 0),\n );\n\n let cursor = 0;\n\n // as the first chunk we'll encode the version for backwards compatibility\n dataView(bufferView, VERSION_DATAVIEW_BYTES, cursor, CONCAT_BUFFERS_VERSION);\n cursor += VERSION_DATAVIEW_BYTES;\n\n for (const buffer of buffers) {\n dataView(\n bufferView,\n NEXT_CHUNK_SIZE_DATAVIEW_BYTES,\n cursor,\n buffer.byteLength,\n );\n cursor += NEXT_CHUNK_SIZE_DATAVIEW_BYTES;\n\n bufferView.set(buffer, cursor);\n cursor += buffer.byteLength;\n }\n\n return bufferView;\n};\n\n/** can only be used on buffers created via `concatBuffers()` */\nconst splitBuffers = (concatenatedBuffer: Uint8Array) => {\n const buffers = [];\n\n let cursor = 0;\n\n // first chunk is the version\n const version = dataView(\n concatenatedBuffer,\n NEXT_CHUNK_SIZE_DATAVIEW_BYTES,\n cursor,\n );\n // If version is outside of the supported versions, throw an error.\n // This usually means the buffer wasn't encoded using this API, so we'd only\n // waste compute.\n if (version > CONCAT_BUFFERS_VERSION) {\n throw new Error(`invalid version ${version}`);\n }\n\n cursor += VERSION_DATAVIEW_BYTES;\n\n while (true) {\n const chunkSize = dataView(\n concatenatedBuffer,\n NEXT_CHUNK_SIZE_DATAVIEW_BYTES,\n cursor,\n );\n cursor += NEXT_CHUNK_SIZE_DATAVIEW_BYTES;\n\n buffers.push(concatenatedBuffer.slice(cursor, cursor + chunkSize));\n cursor += chunkSize;\n if (cursor >= concatenatedBuffer.byteLength) {\n break;\n }\n }\n\n return buffers;\n};\n\n// helpers for (de)compressing data with JSON metadata including encryption\n// -----------------------------------------------------------------------------\n\n/** @private */\nconst _encryptAndCompress = async (\n data: Uint8Array<ArrayBuffer> | string,\n encryptionKey: string,\n) => {\n const { encryptedBuffer, iv } = await encryptData(\n encryptionKey,\n deflate(data) as Uint8Array<ArrayBuffer>,\n );\n\n return { iv, buffer: new Uint8Array(encryptedBuffer) };\n};\n\n/**\n * The returned buffer has following format:\n * `[]` refers to a buffers wrapper (see `concatBuffers`)\n *\n * [\n * encodingMetadataBuffer,\n * iv,\n * [\n * contentsMetadataBuffer\n * contentsBuffer\n * ]\n * ]\n */\nexport const compressData = async <T extends Record<string, any> = never>(\n dataBuffer: Uint8Array,\n options: {\n encryptionKey: string;\n } & ([T] extends [never]\n ? {\n metadata?: T;\n }\n : {\n metadata: T;\n }),\n): Promise<Uint8Array<ArrayBuffer>> => {\n const fileInfo: FileEncodingInfo = {\n version: 2,\n compression: \"pako@1\",\n encryption: \"AES-GCM\",\n };\n\n const encodingMetadataBuffer = new TextEncoder().encode(\n JSON.stringify(fileInfo),\n );\n\n const contentsMetadataBuffer = new TextEncoder().encode(\n JSON.stringify(options.metadata || null),\n );\n\n const { iv, buffer } = await _encryptAndCompress(\n concatBuffers(contentsMetadataBuffer, dataBuffer),\n options.encryptionKey,\n );\n\n return concatBuffers(encodingMetadataBuffer, iv, buffer);\n};\n\n/** @private */\nconst _decryptAndDecompress = async (\n iv: Uint8Array<ArrayBuffer>,\n decryptedBuffer: Uint8Array<ArrayBuffer>,\n decryptionKey: string,\n isCompressed: boolean,\n) => {\n decryptedBuffer = new Uint8Array(\n await decryptData(iv, decryptedBuffer, decryptionKey),\n );\n\n if (isCompressed) {\n return inflate(decryptedBuffer);\n }\n\n return decryptedBuffer;\n};\n\nexport const decompressData = async <T extends Record<string, any>>(\n bufferView: Uint8Array,\n options: { decryptionKey: string },\n) => {\n // first chunk is encoding metadata (ignored for now)\n const [encodingMetadataBuffer, iv, buffer] = splitBuffers(bufferView);\n\n const encodingMetadata: FileEncodingInfo = JSON.parse(\n new TextDecoder().decode(encodingMetadataBuffer),\n );\n\n try {\n const [contentsMetadataBuffer, contentsBuffer] = splitBuffers(\n await _decryptAndDecompress(\n iv,\n buffer,\n options.decryptionKey,\n !!encodingMetadata.compression,\n ),\n );\n\n const metadata = JSON.parse(\n new TextDecoder().decode(contentsMetadataBuffer),\n ) as T;\n\n return {\n /** metadata source is always JSON so we can decode it here */\n metadata,\n /** data can be anything so the caller must decode it */\n data: contentsBuffer,\n };\n } catch (error: any) {\n console.error(\n `Error during decompressing and decrypting the file.`,\n encodingMetadata,\n );\n throw error;\n }\n};\n\n// -----------------------------------------------------------------------------\n", "import { ENCRYPTION_KEY_BITS } from \"@excalidraw/common\";\n\nimport { blobToArrayBuffer } from \"./blob\";\n\nexport const IV_LENGTH_BYTES = 12;\n\nexport const createIV = (): Uint8Array<ArrayBuffer> => {\n const arr = new Uint8Array(IV_LENGTH_BYTES);\n return window.crypto.getRandomValues(arr);\n};\n\nexport const generateEncryptionKey = async <\n T extends \"string\" | \"cryptoKey\" = \"string\",\n>(\n returnAs?: T,\n): Promise<T extends \"cryptoKey\" ? CryptoKey : string> => {\n const key = await window.crypto.subtle.generateKey(\n {\n name: \"AES-GCM\",\n length: ENCRYPTION_KEY_BITS,\n },\n true, // extractable\n [\"encrypt\", \"decrypt\"],\n );\n return (\n returnAs === \"cryptoKey\"\n ? key\n : (await window.crypto.subtle.exportKey(\"jwk\", key)).k\n ) as T extends \"cryptoKey\" ? CryptoKey : string;\n};\n\nexport const getCryptoKey = (key: string, usage: KeyUsage) =>\n window.crypto.subtle.importKey(\n \"jwk\",\n {\n alg: \"A128GCM\",\n ext: true,\n k: key,\n key_ops: [\"encrypt\", \"decrypt\"],\n kty: \"oct\",\n },\n {\n name: \"AES-GCM\",\n length: ENCRYPTION_KEY_BITS,\n },\n false, // extractable\n [usage],\n );\n\nexport const encryptData = async (\n key: string | CryptoKey,\n data: Uint8Array<ArrayBuffer> | ArrayBuffer | Blob | File | string,\n): Promise<{ encryptedBuffer: ArrayBuffer; iv: Uint8Array<ArrayBuffer> }> => {\n const importedKey =\n typeof key === \"string\" ? await getCryptoKey(key, \"encrypt\") : key;\n const iv = createIV();\n const buffer: ArrayBuffer | Uint8Array<ArrayBuffer> =\n typeof data === \"string\"\n ? new TextEncoder().encode(data)\n : data instanceof Uint8Array\n ? data\n : data instanceof Blob\n ? await blobToArrayBuffer(data)\n : data;\n\n // We use symmetric encryption. AES-GCM is the recommended algorithm and\n // includes checks that the ciphertext has not been modified by an attacker.\n const encryptedBuffer = await window.crypto.subtle.encrypt(\n {\n name: \"AES-GCM\",\n iv,\n },\n importedKey,\n buffer,\n );\n\n return { encryptedBuffer, iv };\n};\n\nexport const decryptData = async (\n iv: Uint8Array<ArrayBuffer>,\n encrypted: Uint8Array<ArrayBuffer> | ArrayBuffer,\n privateKey: string,\n): Promise<ArrayBuffer> => {\n const key = await getCryptoKey(privateKey, \"decrypt\");\n return window.crypto.subtle.decrypt(\n {\n name: \"AES-GCM\",\n iv,\n },\n key,\n encrypted,\n );\n};\n", "import {\n DEFAULT_FILENAME,\n EXPORT_DATA_TYPES,\n getExportSource,\n MIME_TYPES,\n VERSIONS,\n} from \"@excalidraw/common\";\n\nimport type { ExcalidrawElement } from \"@excalidraw/element/types\";\n\nimport { cleanAppStateForExport, clearAppStateForDatabase } from \"../appState\";\n\nimport { isImageFileHandle, loadFromBlob } from \"./blob\";\nimport { fileOpen, fileSave } from \"./filesystem\";\n\nimport type { AppState, BinaryFiles, LibraryItems } from \"../types\";\nimport type {\n ExportedDataState,\n ImportedDataState,\n ExportedLibraryData,\n ImportedLibraryData,\n} from \"./types\";\n\n/**\n * Strips out files which are only referenced by deleted elements\n */\nconst filterOutDeletedFiles = (\n elements: readonly ExcalidrawElement[],\n files: BinaryFiles,\n) => {\n const nextFiles: BinaryFiles = {};\n for (const element of elements) {\n if (\n !element.isDeleted &&\n \"fileId\" in element &&\n element.fileId &&\n files[element.fileId]\n ) {\n nextFiles[element.fileId] = files[element.fileId];\n }\n }\n return nextFiles;\n};\n\nexport const serializeAsJSON = (\n elements: readonly ExcalidrawElement[],\n appState: Partial<AppState>,\n files: BinaryFiles,\n type: \"local\" | \"database\",\n): string => {\n const data: ExportedDataState = {\n type: EXPORT_DATA_TYPES.excalidraw,\n version: VERSIONS.excalidraw,\n source: getExportSource(),\n elements,\n appState:\n type === \"local\"\n ? cleanAppStateForExport(appState)\n : clearAppStateForDatabase(appState),\n files:\n type === \"local\"\n ? filterOutDeletedFiles(elements, files)\n : // will be stripped from JSON\n undefined,\n };\n\n return JSON.stringify(data, null, 2);\n};\n\nexport const saveAsJSON = async (\n elements: readonly ExcalidrawElement[],\n appState: AppState,\n files: BinaryFiles,\n /** filename */\n name: string = appState.name || DEFAULT_FILENAME,\n) => {\n const serialized = serializeAsJSON(elements, appState, files, \"local\");\n const blob = new Blob([serialized], {\n type: MIME_TYPES.excalidraw,\n });\n\n const fileHandle = await fileSave(blob, {\n name,\n extension: \"excalidraw\",\n description: \"Excalidraw file\",\n fileHandle: isImageFileHandle(appState.fileHandle)\n ? null\n : appState.fileHandle,\n });\n return { fileHandle };\n};\n\nexport const loadFromJSON = async (\n localAppState: AppState,\n localElements: readonly ExcalidrawElement[] | null,\n) => {\n const file = await fileOpen({\n description: \"Excalidraw files\",\n // ToDo: Be over-permissive until https://bugs.webkit.org/show_bug.cgi?id=34442\n // gets resolved. Else, iOS users cannot open `.excalidraw` files.\n // extensions: [\"json\", \"excalidraw\", \"png\", \"svg\"],\n });\n return loadFromBlob(file, localAppState, localElements, file.handle);\n};\n\nexport const isValidExcalidrawData = (data?: {\n type?: any;\n elements?: any;\n appState?: any;\n}): data is ImportedDataState => {\n return (\n data?.type === EXPORT_DATA_TYPES.excalidraw &&\n (!data.elements ||\n (Array.isArray(data.elements) &&\n (!data.appState || typeof data.appState === \"object\")))\n );\n};\n\nexport const isValidLibrary = (json: any): json is ImportedLibraryData => {\n return (\n typeof json === \"object\" &&\n json &&\n json.type === EXPORT_DATA_TYPES.excalidrawLibrary &&\n (json.version === 1 || json.version === 2)\n );\n};\n\nexport const serializeLibraryAsJSON = (libraryItems: LibraryItems) => {\n const data: ExportedLibraryData = {\n type: EXPORT_DATA_TYPES.excalidrawLibrary,\n version: VERSIONS.excalidrawLibrary,\n source: getExportSource(),\n libraryItems,\n };\n return JSON.stringify(data, null, 2);\n};\n\nexport const saveLibraryAsJSON = async (libraryItems: LibraryItems) => {\n const serialized = serializeLibraryAsJSON(libraryItems);\n await fileSave(\n new Blob([serialized], {\n type: MIME_TYPES.excalidrawlib,\n }),\n {\n name: \"library\",\n extension: \"excalidrawlib\",\n description: \"Excalidraw library file\",\n },\n );\n};\n", "import {\n fileOpen as _fileOpen,\n fileSave as _fileSave,\n supported as nativeFileSystemSupported,\n} from \"browser-fs-access\";\n\nimport { EVENT, MIME_TYPES, debounce } from \"@excalidraw/common\";\n\nimport { AbortError } from \"../errors\";\n\nimport { normalizeFile } from \"./blob\";\n\nimport type { FileSystemHandle } from \"browser-fs-access\";\n\ntype FILE_EXTENSION = Exclude<keyof typeof MIME_TYPES, \"binary\">;\n\nconst INPUT_CHANGE_INTERVAL_MS = 5000;\n\nexport const fileOpen = async <M extends boolean | undefined = false>(opts: {\n extensions?: FILE_EXTENSION[];\n description: string;\n multiple?: M;\n}): Promise<M extends false | undefined ? File : File[]> => {\n // an unsafe TS hack, alas not much we can do AFAIK\n type RetType = M extends false | undefined ? File : File[];\n\n const mimeTypes = opts.extensions?.reduce((mimeTypes, type) => {\n mimeTypes.push(MIME_TYPES[type]);\n\n return mimeTypes;\n }, [] as string[]);\n\n const extensions = opts.extensions?.reduce((acc, ext) => {\n if (ext === \"jpg\") {\n return acc.concat(\".jpg\", \".jpeg\");\n }\n return acc.concat(`.${ext}`);\n }, [] as string[]);\n\n const files = await _fileOpen({\n description: opts.description,\n extensions,\n mimeTypes,\n multiple: opts.multiple ?? false,\n legacySetup: (resolve, reject, input) => {\n const scheduleRejection = debounce(reject, INPUT_CHANGE_INTERVAL_MS);\n const focusHandler = () => {\n checkForFile();\n document.addEventListener(EVENT.KEYUP, scheduleRejection);\n document.addEventListener(EVENT.POINTER_UP, scheduleRejection);\n scheduleRejection();\n };\n const checkForFile = () => {\n // this hack might not work when expecting multiple files\n if (input.files?.length) {\n const ret = opts.multiple ? [...input.files] : input.files[0];\n resolve(ret as RetType);\n }\n };\n requestAnimationFrame(() => {\n window.addEventListener(EVENT.FOCUS, focusHandler);\n });\n const interval = window.setInterval(() => {\n checkForFile();\n }, INPUT_CHANGE_INTERVAL_MS);\n return (rejectPromise) => {\n clearInterval(interval);\n scheduleRejection.cancel();\n window.removeEventListener(EVENT.FOCUS, focusHandler);\n document.removeEventListener(EVENT.KEYUP, scheduleRejection);\n document.removeEventListener(EVENT.POINTER_UP, scheduleRejection);\n if (rejectPromise) {\n // so that something is shown in console if we need to debug this\n console.warn(\"Opening the file was canceled (legacy-fs).\");\n rejectPromise(new AbortError());\n }\n };\n },\n });\n\n if (Array.isArray(files)) {\n return (await Promise.all(\n files.map((file) => normalizeFile(file)),\n )) as RetType;\n }\n return (await normalizeFile(files)) as RetType;\n};\n\nexport const fileSave = (\n blob: Blob | Promise<Blob>,\n opts: {\n /** supply without the extension */\n name: string;\n /** file extension */\n extension: FILE_EXTENSION;\n mimeTypes?: string[];\n description: string;\n /** existing FileSystemHandle */\n fileHandle?: FileSystemHandle | null;\n },\n) => {\n return _fileSave(\n blob,\n {\n fileName: `${opts.name}.${opts.extension}`,\n description: opts.description,\n extensions: [`.${opts.extension}`],\n mimeTypes: opts.mimeTypes,\n },\n opts.fileHandle,\n );\n};\n\nexport { nativeFileSystemSupported };\nexport type { FileSystemHandle };\n", "import {\n FONT_FAMILY,\n FONT_FAMILY_FALLBACKS,\n CJK_HAND_DRAWN_FALLBACK_FONT,\n WINDOWS_EMOJI_FALLBACK_FONT,\n getFontFamilyFallbacks,\n FONT_SIZES,\n} from \"@excalidraw/common\";\nimport { getContainerElement } from \"@excalidraw/element\";\nimport { charWidth } from \"@excalidraw/element\";\nimport { containsCJK } from \"@excalidraw/element\";\n\nimport {\n FONT_METADATA,\n type FontMetadata,\n getFontString,\n PromisePool,\n promiseTry,\n} from \"@excalidraw/common\";\n\nimport { ShapeCache } from \"@excalidraw/element\";\n\nimport { isTextElement } from \"@excalidraw/element\";\n\nimport type {\n ExcalidrawElement,\n ExcalidrawTextElement,\n} from \"@excalidraw/element/types\";\n\nimport type { ValueOf } from \"@excalidraw/common/utility-types\";\n\nimport type { Scene } from \"@excalidraw/element\";\n\nimport { CascadiaFontFaces } from \"./Cascadia\";\nimport { ComicShannsFontFaces } from \"./ComicShanns\";\nimport { EmojiFontFaces } from \"./Emoji\";\nimport { ExcalidrawFontFace } from \"./ExcalidrawFontFace\";\nimport { ExcalifontFontFaces } from \"./Excalifont\";\nimport { HelveticaFontFaces } from \"./Helvetica\";\nimport { LiberationFontFaces } from \"./Liberation\";\nimport { LilitaFontFaces } from \"./Lilita\";\nimport { NunitoFontFaces } from \"./Nunito\";\nimport { VirgilFontFaces } from \"./Virgil\";\nimport { XiaolaiFontFaces } from \"./Xiaolai\";\n\nexport class Fonts {\n // it's ok to track fonts across multiple instances only once, so let's use\n // a static member to reduce memory footprint\n public static readonly loadedFontsCache = new Set<string>();\n\n private static _registered:\n | Map<\n number,\n {\n metadata: FontMetadata;\n fontFaces: ExcalidrawFontFace[];\n }\n >\n | undefined;\n\n private static _initialized: boolean = false;\n\n public static get registered() {\n // lazy load the font registration\n if (!Fonts._registered) {\n Fonts._registered = Fonts.init();\n } else if (!Fonts._initialized) {\n // case when host app register fonts before they are lazy loaded\n // don't override whatever has been previously registered\n Fonts._registered = new Map([\n ...Fonts.init().entries(),\n ...Fonts._registered.entries(),\n ]);\n }\n\n return Fonts._registered;\n }\n\n public get registered() {\n return Fonts.registered;\n }\n\n private readonly scene: Scene;\n\n constructor(scene: Scene) {\n this.scene = scene;\n }\n\n /**\n * Get all the font families for the given scene.\n */\n public getSceneFamilies = () => {\n return Fonts.getUniqueFamilies(this.scene.getNonDeletedElements());\n };\n\n /**\n * if we load a (new) font, it's likely that text elements using it have\n * already been rendered using a fallback font. Thus, we want invalidate\n * their shapes and rerender. See #637.\n *\n * Invalidates text elements and rerenders scene, provided that at least one\n * of the supplied fontFaces has not already been processed.\n */\n public onLoaded = (fontFaces: readonly FontFace[]): void => {\n // bail if all fonts with have been processed. We're checking just a\n // subset of the font properties (though it should be enough), so it\n // can technically bail on a false positive.\n let shouldBail = true;\n\n for (const fontFace of fontFaces) {\n const sig = `${fontFace.family}-${fontFace.style}-${fontFace.weight}-${fontFace.unicodeRange}`;\n\n // make sure to update our cache with all the loaded font faces\n if (!Fonts.loadedFontsCache.has(sig)) {\n Fonts.loadedFontsCache.add(sig);\n shouldBail = false;\n }\n }\n\n if (shouldBail) {\n return;\n }\n\n let didUpdate = false;\n\n const elementsMap = this.scene.getNonDeletedElementsMap();\n\n for (const element of this.scene.getNonDeletedElements()) {\n if (isTextElement(element)) {\n didUpdate = true;\n ShapeCache.delete(element);\n\n // clear the width cache, so that we don't perform subsequent wrapping based on the stale fallback font metrics\n charWidth.clearCache(getFontString(element));\n\n const container = getContainerElement(element, elementsMap);\n if (container) {\n ShapeCache.delete(container);\n }\n }\n }\n\n if (didUpdate) {\n this.scene.triggerUpdate();\n }\n };\n\n /**\n * Load font faces for a given scene and trigger scene update.\n */\n public loadSceneFonts = async (): Promise<FontFace[]> => {\n const sceneFamilies = this.getSceneFamilies();\n const charsPerFamily = Fonts.getCharsPerFamily(\n this.scene.getNonDeletedElements(),\n );\n\n return Fonts.loadFontFaces(sceneFamilies, charsPerFamily);\n };\n\n /**\n * Load font faces for passed elements - use when the scene is unavailable (i.e. export).\n */\n public static loadElementsFonts = async (\n elements: readonly ExcalidrawElement[],\n ): Promise<FontFace[]> => {\n const fontFamilies = Fonts.getUniqueFamilies(elements);\n const charsPerFamily = Fonts.getCharsPerFamily(elements);\n\n return Fonts.loadFontFaces(fontFamilies, charsPerFamily);\n };\n\n /**\n * Generate CSS @font-face declarations for the given elements.\n */\n public static async generateFontFaceDeclarations(\n elements: readonly ExcalidrawElement[],\n ) {\n const families = Fonts.getUniqueFamilies(elements);\n const charsPerFamily = Fonts.getCharsPerFamily(elements);\n\n // for simplicity, assuming we have just one family with the CJK handdrawn fallback\n const familyWithCJK = families.find((x) =>\n getFontFamilyFallbacks(x).includes(CJK_HAND_DRAWN_FALLBACK_FONT),\n );\n\n if (familyWithCJK) {\n const characters = Fonts.getCharacters(charsPerFamily, familyWithCJK);\n\n if (containsCJK(characters)) {\n const family = FONT_FAMILY_FALLBACKS[CJK_HAND_DRAWN_FALLBACK_FONT];\n\n // adding the same characters to the CJK handrawn family\n charsPerFamily[family] = new Set(characters);\n\n // the order between the families and fallbacks is important, as fallbacks need to be defined first and in the reversed order\n // so that they get overriden with the later defined font faces, i.e. in case they share some codepoints\n families.unshift(FONT_FAMILY_FALLBACKS[CJK_HAND_DRAWN_FALLBACK_FONT]);\n }\n }\n\n // don't trigger hundreds of concurrent requests (each performing fetch, creating a worker, etc.),\n // instead go three requests at a time, in a controlled manner, without completely blocking the main thread\n // and avoiding potential issues such as rate limits\n const iterator = Fonts.fontFacesStylesGenerator(families, charsPerFamily);\n const concurrency = 3;\n const fontFaces = await new PromisePool(iterator, concurrency).all();\n\n // dedup just in case (i.e. could be the same font faces with 0 glyphs)\n return Array.from(new Set(fontFaces));\n }\n\n private static async loadFontFaces(\n fontFamilies: Array<ExcalidrawTextElement[\"fontFamily\"]>,\n charsPerFamily: Record<number, Set<string>>,\n ) {\n // add all registered font faces into the `document.fonts` (if not added already)\n for (const { fontFaces, metadata } of Fonts.registered.values()) {\n // skip registering font faces for local fonts (i.e. Helvetica)\n if (metadata.local) {\n continue;\n }\n\n for (const { fontFace } of fontFaces) {\n if (!window.document.fonts.has(fontFace)) {\n window.document.fonts.add(fontFace);\n }\n }\n }\n\n // loading 10 font faces at a time, in a controlled manner\n const iterator = Fonts.fontFacesLoader(fontFamilies, charsPerFamily);\n const concurrency = 10;\n const fontFaces = await new PromisePool(iterator, concurrency).all();\n return fontFaces.flat().filter(Boolean);\n }\n\n private static *fontFacesLoader(\n fontFamilies: Array<ExcalidrawTextElement[\"fontFamily\"]>,\n charsPerFamily: Record<number, Set<string>>,\n ): Generator<Promise<void | readonly [number, FontFace[]]>> {\n for (const [index, fontFamily] of fontFamilies.entries()) {\n const font = getFontString({\n fontFamily,\n fontSize: FONT_SIZES.sm,\n });\n\n // WARN: without \"text\" param it does not have to mean that all font faces are loaded as it could be just one irrelevant font face!\n // instead, we are always checking chars used in the family, so that no required font faces remain unloaded\n const text = Fonts.getCharacters(charsPerFamily, fontFamily);\n\n if (!window.document.fonts.check(font, text)) {\n yield promiseTry(async () => {\n try {\n // WARN: browser prioritizes loading only font faces with unicode ranges for characters which are present in the document (html & canvas), other font faces could stay unloaded\n // we might want to retry here, i.e. in case CDN is down, but so far I didn't experience any issues - maybe it handles retry-like logic under the hood\n const fontFaces = await window.document.fonts.load(font, text);\n\n return [index, fontFaces];\n } catch (e) {\n // don't let it all fail if just one font fails to load\n console.error(\n `Failed to load font \"${font}\" from urls \"${Fonts.registered\n .get(fontFamily)\n ?.fontFaces.map((x) => x.urls)}\"`,\n e,\n );\n }\n });\n }\n }\n }\n\n private static *fontFacesStylesGenerator(\n families: Array<number>,\n charsPerFamily: Record<number, Set<string>>,\n ): Generator<Promise<void | readonly [number, string]>> {\n for (const [familyIndex, family] of families.entries()) {\n const { fontFaces, metadata } = Fonts.registered.get(family) ?? {};\n\n if (!Array.isArray(fontFaces)) {\n console.error(\n `Couldn't find registered fonts for font-family \"${family}\"`,\n Fonts.registered,\n );\n continue;\n }\n\n if (metadata?.local) {\n // don't inline local fonts\n continue;\n }\n\n for (const [fontFaceIndex, fontFace] of fontFaces.entries()) {\n yield promiseTry(async () => {\n try {\n const characters = Fonts.getCharacters(charsPerFamily, family);\n const fontFaceCSS = await fontFace.toCSS(characters);\n\n if (!fontFaceCSS) {\n return;\n }\n\n // giving a buffer of 10K font faces per family\n const fontFaceOrder = familyIndex * 10_000 + fontFaceIndex;\n const fontFaceTuple = [fontFaceOrder, fontFaceCSS] as const;\n\n return fontFaceTuple;\n } catch (error) {\n console.error(\n `Couldn't transform font-face to css for family \"${fontFace.fontFace.family}\"`,\n error,\n );\n }\n });\n }\n }\n }\n\n /**\n * Register a new font.\n *\n * @param family font family\n * @param metadata font metadata\n * @param fontFacesDecriptors font faces descriptors\n */\n private static register(\n this:\n | Fonts\n | {\n registered: Map<\n number,\n { metadata: FontMetadata; fontFaces: ExcalidrawFontFace[] }\n >;\n },\n family: string,\n metadata: FontMetadata,\n ...fontFacesDecriptors: ExcalidrawFontFaceDescriptor[]\n ) {\n // TODO: likely we will need to abandon number value in order to support custom fonts\n const fontFamily =\n FONT_FAMILY[family as keyof typeof FONT_FAMILY] ??\n FONT_FAMILY_FALLBACKS[family as keyof typeof FONT_FAMILY_FALLBACKS];\n\n const registeredFamily = this.registered.get(fontFamily);\n\n if (!registeredFamily) {\n this.registered.set(fontFamily, {\n metadata,\n fontFaces: fontFacesDecriptors.map(\n ({ uri, descriptors }) =>\n new ExcalidrawFontFace(family, uri, descriptors),\n ),\n });\n }\n\n return this.registered;\n }\n\n /**\n * WARN: should be called just once on init, even across multiple instances.\n */\n private static init() {\n const fonts = {\n registered: new Map<\n ValueOf<typeof FONT_FAMILY | typeof FONT_FAMILY_FALLBACKS>,\n { metadata: FontMetadata; fontFaces: ExcalidrawFontFace[] }\n >(),\n };\n\n const init = (\n family: keyof typeof FONT_FAMILY | keyof typeof FONT_FAMILY_FALLBACKS,\n ...fontFacesDescriptors: ExcalidrawFontFaceDescriptor[]\n ) => {\n const fontFamily =\n FONT_FAMILY[family as keyof typeof FONT_FAMILY] ??\n FONT_FAMILY_FALLBACKS[family as keyof typeof FONT_FAMILY_FALLBACKS];\n\n // default to Excalifont metrics\n const metadata =\n FONT_METADATA[fontFamily] ?? FONT_METADATA[FONT_FAMILY.Excalifont];\n\n Fonts.register.call(fonts, family, metadata, ...fontFacesDescriptors);\n };\n\n init(\"Cascadia\", ...CascadiaFontFaces);\n init(\"Comic Shanns\", ...ComicShannsFontFaces);\n init(\"Excalifont\", ...ExcalifontFontFaces);\n // keeping for backwards compatibility reasons, uses system font (Helvetica on MacOS, Arial on Win)\n init(\"Helvetica\", ...HelveticaFontFaces);\n // used for server-side pdf & png export instead of helvetica (technically does not need metrics, but kept in for consistency)\n init(\"Liberation Sans\", ...LiberationFontFaces);\n init(\"Lilita One\", ...LilitaFontFaces);\n init(\"Nunito\", ...NunitoFontFaces);\n init(\"Virgil\", ...VirgilFontFaces);\n\n // fallback font faces\n init(CJK_HAND_DRAWN_FALLBACK_FONT, ...XiaolaiFontFaces);\n init(WINDOWS_EMOJI_FALLBACK_FONT, ...EmojiFontFaces);\n\n Fonts._initialized = true;\n\n return fonts.registered;\n }\n\n /**\n * Get all the unique font families for the given elements.\n */\n private static getUniqueFamilies(\n elements: ReadonlyArray<ExcalidrawElement>,\n ): Array<ExcalidrawTextElement[\"fontFamily\"]> {\n return Array.from(\n elements.reduce((families, element) => {\n if (isTextElement(element)) {\n families.add(element.fontFamily);\n }\n return families;\n }, new Set<number>()),\n );\n }\n\n /**\n * Get all the unique characters per font family for the given scene.\n */\n private static getCharsPerFamily(\n elements: ReadonlyArray<ExcalidrawElement>,\n ): Record<number, Set<string>> {\n const charsPerFamily: Record<number, Set<string>> = {};\n\n for (const element of elements) {\n if (!isTextElement(element)) {\n continue;\n }\n\n // gather unique codepoints only when inlining fonts\n for (const char of element.originalText) {\n if (!charsPerFamily[element.fontFamily]) {\n charsPerFamily[element.fontFamily] = new Set();\n }\n\n charsPerFamily[element.fontFamily].add(char);\n }\n }\n\n return charsPerFamily;\n }\n\n /**\n * Get characters for a given family.\n */\n private static getCharacters(\n charsPerFamily: Record<number, Set<string>>,\n family: number,\n ) {\n return charsPerFamily[family]\n ? Array.from(charsPerFamily[family]).join(\"\")\n : \"\";\n }\n\n /**\n * Get all registered font families.\n */\n private static getAllFamilies() {\n return Array.from(Fonts.registered.keys());\n }\n}\n\nexport interface ExcalidrawFontFaceDescriptor {\n uri: string;\n descriptors?: FontFaceDescriptors;\n}\n", "import { type ExcalidrawFontFaceDescriptor } from \"../Fonts\";\n\nimport CascadiaCodeRegular from \"./CascadiaCode-Regular.woff2\";\n\nexport const CascadiaFontFaces: ExcalidrawFontFaceDescriptor[] = [\n {\n uri: CascadiaCodeRegular,\n },\n];\n", "// The following file content was generated with https://chinese-font.netlify.app/online-split,\n// but has been manully rewritten from `@font-face` rules into TS while leveraging FontFace API.\n\nimport { type ExcalidrawFontFaceDescriptor } from \"../Fonts\";\n\nimport _0 from \"./ComicShanns-Regular-279a7b317d12eb88de06167bd672b4b4.woff2\";\nimport _3 from \"./ComicShanns-Regular-6e066e8de2ac57ea9283adb9c24d7f0c.woff2\";\nimport _2 from \"./ComicShanns-Regular-dc6a8806fa96795d7b3be5026f989a17.woff2\";\nimport _1 from \"./ComicShanns-Regular-fcb0fc02dcbee4c9846b3e2508668039.woff2\";\n\n/* Generated By cn-font-split@5.2.2 https://www.npmjs.com/package/cn-font-split\nCreateTime: Thu, 17 Oct 2024 09:57:51 GMT;\nOrigin File Name Table:\ncopyright: MIT License\n\nCopyright (c) 2018 Shannon Miwa\nCopyright (c) 2023 Jesus Gonzalez\nCopyright (c) 2023 Rodrigo Batista de Moraes\nCopyright (c) 2024 Fini Jastrow\nCopyright (c) 2024 Kyle Beechly\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\nfontFamily: Comic Shanns Mono-Regular\nfontSubfamily: Regular\nuniqueID: FontForge 2.0 : Comic Shanns Mono Regular : 17-10-2024\nfullName: Comic Shanns Mono Regular\nversion: 1.3.0\npostScriptName: ComicShannsMono-Regular\nlicense: MIT License\n\nCopyright (c) 2018 Shannon Miwa\nCopyright (c) 2023 Jesus Gonzalez\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\npreferredFamily: Comic Shanns Mono\n */\n\nexport const ComicShannsFontFaces: ExcalidrawFontFaceDescriptor[] = [\n {\n uri: _0,\n descriptors: {\n unicodeRange:\n \"U+20-7e,U+a1-a6,U+a8,U+ab-ac,U+af-b1,U+b4,U+b8,U+bb-bc,U+bf-cf,U+d1-d7,U+d9-de,U+e0-ef,U+f1-f7,U+f9-ff,U+131,U+152-153,U+2c6,U+2da,U+2dc,U+2013-2014,U+2018-201a,U+201c-201d,U+2020-2022,U+2026,U+2039-203a,U+2044,U+20ac,U+2191,U+2193,U+2212\",\n },\n },\n {\n uri: _1,\n descriptors: {\n unicodeRange:\n \"U+100-10f,U+112-125,U+128-130,U+134-137,U+139-13c,U+141-148,U+14c-151,U+154-161,U+164-165,U+168-17f,U+1bf,U+1f7,U+218-21b,U+237,U+1e80-1e85,U+1ef2-1ef3,U+a75b\",\n },\n },\n {\n uri: _2,\n descriptors: {\n unicodeRange:\n \"U+2c7,U+2d8-2d9,U+2db,U+2dd,U+315,U+2190,U+2192,U+2200,U+2203-2204,U+2264-2265,U+f6c3\",\n },\n },\n {\n uri: _3,\n descriptors: { unicodeRange: \"U+3bb\" },\n },\n];\n", "import { LOCAL_FONT_PROTOCOL } from \"@excalidraw/common\";\n\nimport { type ExcalidrawFontFaceDescriptor } from \"../Fonts\";\n\nexport const EmojiFontFaces: ExcalidrawFontFaceDescriptor[] = [\n {\n uri: LOCAL_FONT_PROTOCOL,\n },\n];\n", "import { promiseTry, LOCAL_FONT_PROTOCOL } from \"@excalidraw/common\";\n\nimport { subsetWoff2GlyphsByCodepoints } from \"../subset/subset-main\";\n\ntype DataURL = string;\n\nexport class ExcalidrawFontFace {\n public readonly urls: URL[] | DataURL[];\n public readonly fontFace: FontFace;\n\n private static readonly ASSETS_FALLBACK_URL = `https://esm.sh/${\n import.meta.env.PKG_NAME\n ? `${import.meta.env.PKG_NAME}@${import.meta.env.PKG_VERSION}` // is provided during package build\n : \"@excalidraw/excalidraw\" // fallback to the latest package version (i.e. for app)\n }/dist/prod/`;\n\n constructor(family: string, uri: string, descriptors?: FontFaceDescriptors) {\n this.urls = ExcalidrawFontFace.createUrls(uri);\n\n const sources = this.urls\n .map((url) => `url(${url}) ${ExcalidrawFontFace.getFormat(url)}`)\n .join(\", \");\n\n this.fontFace = new FontFace(family, sources, {\n display: \"swap\",\n style: \"normal\",\n weight: \"400\",\n ...descriptors,\n });\n }\n\n /**\n * Generates CSS `@font-face` definition with the (subsetted) font source as a data url for the characters within the unicode range.\n *\n * Retrieves `undefined` otherwise.\n */\n public toCSS(characters: string): Promise<string> | undefined {\n // quick exit in case the characters are not within this font face's unicode range\n if (!this.getUnicodeRangeRegex().test(characters)) {\n return;\n }\n\n const codepoints = Array.from(characters).map(\n (char) => char.codePointAt(0)!,\n );\n\n return this.getContent(codepoints).then(\n (content) =>\n `@font-face { font-family: ${this.fontFace.family}; src: url(${content}); }`,\n );\n }\n\n /**\n * Tries to fetch woff2 content, based on the registered urls (from first to last, treated as fallbacks).\n *\n * @returns base64 with subsetted glyphs based on the passed codepoint, last defined url otherwise\n */\n public async getContent(codePoints: Array<number>): Promise<string> {\n let i = 0;\n const errorMessages = [];\n\n while (i < this.urls.length) {\n const url = this.urls[i];\n\n try {\n const arrayBuffer = await this.fetchFont(url);\n const base64 = await subsetWoff2GlyphsByCodepoints(\n arrayBuffer,\n codePoints,\n );\n\n return base64;\n } catch (e) {\n errorMessages.push(`\"${url.toString()}\" returned error \"${e}\"`);\n }\n\n i++;\n }\n\n console.error(\n `Failed to fetch font family \"${this.fontFace.family}\"`,\n JSON.stringify(errorMessages, undefined, 2),\n );\n\n // in case of issues, at least return the last url as a content\n // defaults to unpkg for bundled fonts (so that we don't have to host them forever) and http url for others\n return this.urls.length ? this.urls[this.urls.length - 1].toString() : \"\";\n }\n\n public fetchFont(url: URL | DataURL): Promise<ArrayBuffer> {\n return promiseTry(async () => {\n const response = await fetch(url, {\n // always prefer cache (even stale), otherwise it always triggers an unnecessary validation request\n // which we don't need as we are controlling freshness of the fonts with the stable hash suffix in the url\n // https://developer.mozilla.org/en-US/docs/Web/API/Request/cache\n cache: \"force-cache\",\n headers: {\n Accept: \"font/woff2\",\n },\n });\n\n if (!response.ok) {\n const urlString = url instanceof URL ? url.toString() : \"dataurl\";\n throw new Error(\n `Failed to fetch \"${urlString}\": ${response.statusText}`,\n );\n }\n\n const arrayBuffer = await response.arrayBuffer();\n return arrayBuffer;\n });\n }\n\n private getUnicodeRangeRegex() {\n // using \\u{h} or \\u{hhhhh} to match any number of hex digits,\n // otherwise we would get an \"Invalid Unicode escape\" error\n // e.g. U+0-1007F -> \\u{0}-\\u{1007F}\n const unicodeRangeRegex = this.fontFace.unicodeRange\n .split(/,\\s*/)\n .map((range) => {\n const [start, end] = range.replace(\"U+\", \"\").split(\"-\");\n if (end) {\n return `\\\\u{${start}}-\\\\u{${end}}`;\n }\n\n return `\\\\u{${start}}`;\n })\n .join(\"\");\n\n return new RegExp(`[${unicodeRangeRegex}]`, \"u\");\n }\n\n private static createUrls(uri: string): URL[] | DataURL[] {\n if (uri.startsWith(\"data\")) {\n // don't create the URL instance, as parsing the huge dataurl string is expensive\n return [uri];\n }\n\n if (uri.startsWith(LOCAL_FONT_PROTOCOL)) {\n // no url for local fonts\n return [];\n }\n\n if (uri.startsWith(\"http\")) {\n // one url for http imports or data url\n return [new URL(uri)];\n }\n\n // absolute assets paths, which are found in tests and excalidraw-app build, won't work with base url, so we are stripping initial slash away\n const assetUrl: string = uri.replace(/^\\/+/, \"\");\n const urls: URL[] = [];\n\n if (typeof window.EXCALIDRAW_ASSET_PATH === \"string\") {\n const normalizedBaseUrl = this.normalizeBaseUrl(\n window.EXCALIDRAW_ASSET_PATH,\n );\n\n urls.push(new URL(assetUrl, normalizedBaseUrl));\n } else if (Array.isArray(window.EXCALIDRAW_ASSET_PATH)) {\n window.EXCALIDRAW_ASSET_PATH.forEach((path) => {\n const normalizedBaseUrl = this.normalizeBaseUrl(path);\n urls.push(new URL(assetUrl, normalizedBaseUrl));\n });\n }\n\n // fallback url for bundled fonts\n urls.push(new URL(assetUrl, ExcalidrawFontFace.ASSETS_FALLBACK_URL));\n\n return urls;\n }\n\n private static getFormat(url: URL | DataURL) {\n if (!(url instanceof URL)) {\n // format is irrelevant for data url\n return \"\";\n }\n\n try {\n const parts = new URL(url).pathname.split(\".\");\n\n if (parts.length === 1) {\n return \"\";\n }\n\n return `format('${parts.pop()}')`;\n } catch (error) {\n return \"\";\n }\n }\n\n private static normalizeBaseUrl(baseUrl: string) {\n let result = baseUrl;\n\n // in case user passed a root-relative url (~absolute path),\n // like \"/\" or \"/some/path\", or relative (starts with \"./\"),\n // prepend it with `location.origin`\n if (/^\\.?\\//.test(result)) {\n result = new URL(\n result.replace(/^\\.?\\/+/, \"\"),\n window?.location?.origin,\n ).toString();\n }\n\n // ensure there is a trailing slash, otherwise url won't be correctly concatenated\n result = `${result.replace(/\\/+$/, \"\")}/`;\n\n return result;\n }\n}\n", "import { isServerEnv, promiseTry } from \"@excalidraw/common\";\n\nimport { WorkerInTheMainChunkError, WorkerUrlNotDefinedError } from \"../errors\";\nimport { WorkerPool } from \"../workers\";\n\nimport type { Commands } from \"./subset-shared.chunk\";\n\nlet shouldUseWorkers = typeof Worker !== \"undefined\";\n\n/**\n * Tries to subset glyphs in a font based on the used codepoints, returning the font as dataurl.\n * Under the hood utilizes worker threads (Web Workers, if available), otherwise fallbacks to the main thread.\n *\n * Check the following diagram for details: link.excalidraw.com/readonly/MbbnWPSWXgadXdtmzgeO\n *\n * @param arrayBuffer font data buffer in the woff2 format\n * @param codePoints codepoints used to subset the glyphs\n *\n * @returns font with subsetted glyphs (all glyphs in case of errors) converted into a dataurl\n */\nexport const subsetWoff2GlyphsByCodepoints = async (\n arrayBuffer: ArrayBuffer,\n codePoints: Array<number>,\n): Promise<string> => {\n const { Commands, subsetToBase64, toBase64 } =\n await lazyLoadSharedSubsetChunk();\n\n if (!shouldUseWorkers) {\n return subsetToBase64(arrayBuffer, codePoints);\n }\n\n return promiseTry(async () => {\n try {\n const workerPool = await getOrCreateWorkerPool();\n // copy the buffer to avoid working on top of the detached array buffer in the fallback\n // i.e. in case the worker throws, the array buffer does not get automatically detached, even if the worker is terminated\n const arrayBufferCopy = arrayBuffer.slice(0);\n const result = await workerPool.postMessage(\n {\n command: Commands.Subset,\n arrayBuffer: arrayBufferCopy,\n codePoints,\n } as const,\n { transfer: [arrayBufferCopy] },\n );\n\n // encode on the main thread to avoid copying large binary strings (as dataurl) between threads\n return toBase64(result);\n } catch (e) {\n // don't use workers if they are failing\n shouldUseWorkers = false;\n\n if (\n // don't log the expected errors server-side\n !(\n isServerEnv() &&\n (e instanceof WorkerUrlNotDefinedError ||\n e instanceof WorkerInTheMainChunkError)\n )\n ) {\n // eslint-disable-next-line no-console\n console.error(\n \"Failed to use workers for subsetting, falling back to the main thread.\",\n e,\n );\n }\n\n // fallback to the main thread\n return subsetToBase64(arrayBuffer, codePoints);\n }\n });\n};\n\n// lazy-loaded and cached chunks\nlet subsetWorker: Promise<typeof import(\"./subset-worker.chunk\")> | null = null;\nlet subsetShared: Promise<typeof import(\"./subset-shared.chunk\")> | null = null;\n\nconst lazyLoadWorkerSubsetChunk = async () => {\n if (!subsetWorker) {\n subsetWorker = import(\"./subset-worker.chunk\");\n }\n\n return subsetWorker;\n};\n\nconst lazyLoadSharedSubsetChunk = async () => {\n if (!subsetShared) {\n // load dynamically to force create a shared chunk reused between main thread and the worker thread\n subsetShared = import(\"./subset-shared.chunk\");\n }\n\n return subsetShared;\n};\n\n// could be extended with multiple commands in the future\ntype SubsetWorkerData = {\n command: typeof Commands.Subset;\n arrayBuffer: ArrayBuffer;\n codePoints: Array<number>;\n};\n\ntype SubsetWorkerResult<T extends SubsetWorkerData[\"command\"]> =\n T extends typeof Commands.Subset ? ArrayBuffer : never;\n\nlet workerPool: Promise<\n WorkerPool<SubsetWorkerData, SubsetWorkerResult<SubsetWorkerData[\"command\"]>>\n> | null = null;\n\n/**\n * Lazy initialize or get the worker pool singleton.\n *\n * @throws implicitly if anything goes wrong - worker pool creation, loading wasm, initializing worker, etc.\n */\nconst getOrCreateWorkerPool = () => {\n if (!workerPool) {\n // immediate concurrent-friendly return, to ensure we have only one pool instance\n workerPool = promiseTry(async () => {\n const { WorkerUrl } = await lazyLoadWorkerSubsetChunk();\n\n const pool = WorkerPool.create<\n SubsetWorkerData,\n SubsetWorkerResult<SubsetWorkerData[\"command\"]>\n >(WorkerUrl);\n\n return pool;\n });\n }\n\n return workerPool;\n};\n", "import { debounce } from \"@excalidraw/common\";\n\nimport { WorkerInTheMainChunkError, WorkerUrlNotDefinedError } from \"./errors\";\n\nclass IdleWorker {\n public instance: Worker;\n\n constructor(workerUrl: URL) {\n this.instance = new Worker(workerUrl, { type: \"module\" });\n }\n\n /**\n * Use to prolong the worker's life by `workerTTL` or terminate it with a flush immediately.\n */\n public debounceTerminate!: ReturnType<typeof debounce>;\n}\n\n/**\n * Pool of idle short-lived workers.\n *\n * IMPORTANT: for simplicity it does not limit the number of newly created workers, leaving it up to the caller to manage the pool size.\n */\nexport class WorkerPool<T, R> {\n private idleWorkers: Set<IdleWorker> = new Set();\n private readonly workerUrl: URL;\n private readonly workerTTL: number;\n\n private constructor(\n workerUrl: URL,\n options: {\n ttl?: number;\n },\n ) {\n this.workerUrl = workerUrl;\n // by default, active & idle workers will be terminated after 1s of inactivity\n this.workerTTL = options.ttl || 1000;\n }\n\n /**\n * Create a new worker pool.\n *\n * @param workerUrl - The URL of the worker file.\n * @param options - The options for the worker pool.\n * @throws If the worker is bundled into the main chunk.\n * @returns A new worker pool instance.\n */\n public static create<T, R>(\n workerUrl: URL | undefined,\n options: {\n ttl?: number;\n } = {},\n ): WorkerPool<T, R> {\n if (!workerUrl) {\n throw new WorkerUrlNotDefinedError();\n }\n\n if (!import.meta.url || workerUrl.toString() === import.meta.url) {\n // in case the worker code is bundled into the main chunk\n throw new WorkerInTheMainChunkError();\n }\n\n return new WorkerPool(workerUrl, options);\n }\n\n /**\n * Take idle worker from the pool or create a new one and post a message to it.\n */\n public async postMessage(\n data: T,\n options: StructuredSerializeOptions,\n ): Promise<R> {\n let worker: IdleWorker;\n\n const idleWorker = Array.from(this.idleWorkers).shift();\n if (idleWorker) {\n this.idleWorkers.delete(idleWorker);\n worker = idleWorker;\n } else {\n worker = await this.createWorker();\n }\n\n return new Promise((resolve, reject) => {\n worker.instance.onmessage = this.onMessageHandler(worker, resolve);\n worker.instance.onerror = this.onErrorHandler(worker, reject);\n\n worker.instance.postMessage(data, options);\n worker.debounceTerminate(() =>\n reject(\n new Error(`Active worker did not respond for ${this.workerTTL}ms!`),\n ),\n );\n });\n }\n\n /**\n * Terminate the idle workers in the pool.\n */\n public async clear() {\n for (const worker of this.idleWorkers) {\n worker.debounceTerminate.cancel();\n worker.instance.terminate();\n }\n\n this.idleWorkers.clear();\n }\n\n /**\n * Used to get a worker from the pool or create a new one if there is no idle available.\n */\n private async createWorker(): Promise<IdleWorker> {\n const worker = new IdleWorker(this.workerUrl);\n\n worker.debounceTerminate = debounce((reject?: () => void) => {\n worker.instance.terminate();\n\n if (this.idleWorkers.has(worker)) {\n this.idleWorkers.delete(worker);\n\n // eslint-disable-next-line no-console\n console.debug(\n \"Job finished! Idle worker has been released from the pool.\",\n );\n } else if (reject) {\n reject();\n } else {\n console.error(\"Worker has been terminated!\");\n }\n }, this.workerTTL);\n\n return worker;\n }\n\n private onMessageHandler(worker: IdleWorker, resolve: (value: R) => void) {\n return (e: { data: R }) => {\n worker.debounceTerminate();\n this.idleWorkers.add(worker);\n resolve(e.data);\n };\n }\n\n private onErrorHandler(\n worker: IdleWorker,\n reject: (reason: ErrorEvent) => void,\n ) {\n return (e: ErrorEvent) => {\n // terminate the worker immediately before rejection\n worker.debounceTerminate(() => reject(e));\n worker.debounceTerminate.flush();\n\n // clear the worker pool in case there are some idle workers left\n this.clear();\n };\n }\n}\n", "import { type ExcalidrawFontFaceDescriptor } from \"../Fonts\";\n\nimport _5 from \"./Excalifont-Regular-349fac6ca4700ffec595a7150a0d1e1d.woff2\";\nimport _4 from \"./Excalifont-Regular-3f2c5db56cc93c5a6873b1361d730c16.woff2\";\nimport _3 from \"./Excalifont-Regular-41b173a47b57366892116a575a43e2b6.woff2\";\nimport _6 from \"./Excalifont-Regular-623ccf21b21ef6b3a0d87738f77eb071.woff2\";\nimport _0 from \"./Excalifont-Regular-a88b72a24fb54c9f94e3b5fdaa7481c9.woff2\";\nimport _2 from \"./Excalifont-Regular-b9dcf9d2e50a1eaf42fc664b50a3fd0d.woff2\";\nimport _1 from \"./Excalifont-Regular-be310b9bcd4f1a43f571c46df7809174.woff2\";\n\n/* Generated By cn-font-split@5.2.2 https://www.npmjs.com/package/cn-font-split\nCreateTime: Mon, 14 Oct 2024 18:59:19 GMT;\nOrigin File Name Table:\ncopyright: Copyright (c) 2024 by Excalidraw. All rights reserved.\nfontFamily: Excalifont\nfontSubfamily: Regular\nuniqueID: 1.000;DSGN;Excalifont\nfullName: Excalifont Regular\nversion: Version 1.000;Glyphs 3.2 (3227)\npostScriptName: Excalifont-Regular\ntrademark: Excalifont is a trademark of Excalidraw.\nmanufacturer: Your Own Font Foundry (Virgil); J\u00E1n Fil\u00EDpek / DizajnDesign (Excalifont, modifications)\ndesigner: Your Own Font Foundry (Virgil); J\u00E1n Fil\u00EDpek / DizajnDesign (Excalifont, modifications)\nmanufacturerURL: https://dizajndesign.sk\ndesignerURL: https://dizajndesign.sk\nlicense: This Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE.\nlicenseURL: http://scripts.sil.org/OFL\npreferredFamily: Excalifont\npreferredSubfamily: Regular\n */\n\nexport const ExcalifontFontFaces: ExcalidrawFontFaceDescriptor[] = [\n {\n uri: _0,\n descriptors: {\n unicodeRange:\n \"U+20-7e,U+a0-a3,U+a5-a6,U+a8-ab,U+ad-b1,U+b4,U+b6-b8,U+ba-ff,U+131,U+152-153,U+2bc,U+2c6,U+2da,U+2dc,U+304,U+308,U+2013-2014,U+2018-201a,U+201c-201e,U+2020,U+2022,U+2024-2026,U+2030,U+2039-203a,U+20ac,U+2122,U+2212\",\n },\n },\n {\n uri: _1,\n descriptors: {\n unicodeRange:\n \"U+100-130,U+132-137,U+139-149,U+14c-151,U+154-17e,U+192,U+1fc-1ff,U+218-21b,U+237,U+1e80-1e85,U+1ef2-1ef3,U+2113\",\n },\n },\n { uri: _2, descriptors: { unicodeRange: \"U+400-45f,U+490-491,U+2116\" } },\n {\n uri: _3,\n descriptors: {\n unicodeRange:\n \"U+37e,U+384-38a,U+38c,U+38e-393,U+395-3a1,U+3a3-3a8,U+3aa-3cf,U+3d7\",\n },\n },\n {\n uri: _4,\n descriptors: {\n unicodeRange:\n \"U+2c7,U+2d8-2d9,U+2db,U+2dd,U+302,U+306-307,U+30a-30c,U+326-328,U+212e,U+2211,U+fb01-fb02\",\n },\n },\n {\n uri: _5,\n descriptors: {\n unicodeRange:\n \"U+462-463,U+472-475,U+4d8-4d9,U+4e2-4e3,U+4e6-4e9,U+4ee-4ef\",\n },\n },\n { uri: _6, descriptors: { unicodeRange: \"U+300-301,U+303\" } },\n];\n", "import { LOCAL_FONT_PROTOCOL } from \"@excalidraw/common\";\n\nimport { type ExcalidrawFontFaceDescriptor } from \"../Fonts\";\n\nexport const HelveticaFontFaces: ExcalidrawFontFaceDescriptor[] = [\n {\n uri: LOCAL_FONT_PROTOCOL,\n },\n];\n", "import { type ExcalidrawFontFaceDescriptor } from \"../Fonts\";\n\nimport LiberationSansRegular from \"./LiberationSans-Regular.woff2\";\n\nexport const LiberationFontFaces: ExcalidrawFontFaceDescriptor[] = [\n {\n uri: LiberationSansRegular,\n },\n];\n", "import { GOOGLE_FONTS_RANGES } from \"@excalidraw/common\";\n\nimport { type ExcalidrawFontFaceDescriptor } from \"../Fonts\";\n\nimport LilitaLatinExt from \"./Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYE98RXi4EwSsbg.woff2\";\nimport LilitaLatin from \"./Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYEF8RXi4EwQ.woff2\";\n\nexport const LilitaFontFaces: ExcalidrawFontFaceDescriptor[] = [\n {\n uri: LilitaLatinExt,\n descriptors: { unicodeRange: GOOGLE_FONTS_RANGES.LATIN_EXT },\n },\n {\n uri: LilitaLatin,\n descriptors: { unicodeRange: GOOGLE_FONTS_RANGES.LATIN },\n },\n];\n", "import { GOOGLE_FONTS_RANGES } from \"@excalidraw/common\";\n\nimport { type ExcalidrawFontFaceDescriptor } from \"../Fonts\";\n\nimport Cyrilic from \"./Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTA3j6zbXWjgevT5.woff2\";\nimport Latin from \"./Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTQ3j6zbXWjgeg.woff2\";\nimport CyrilicExt from \"./Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTk3j6zbXWjgevT5.woff2\";\nimport LatinExt from \"./Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTo3j6zbXWjgevT5.woff2\";\nimport Vietnamese from \"./Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTs3j6zbXWjgevT5.woff2\";\n\nexport const NunitoFontFaces: ExcalidrawFontFaceDescriptor[] = [\n {\n uri: CyrilicExt,\n descriptors: {\n unicodeRange: GOOGLE_FONTS_RANGES.CYRILIC_EXT,\n weight: \"500\",\n },\n },\n {\n uri: Cyrilic,\n descriptors: { unicodeRange: GOOGLE_FONTS_RANGES.CYRILIC, weight: \"500\" },\n },\n {\n uri: Vietnamese,\n descriptors: {\n unicodeRange: GOOGLE_FONTS_RANGES.VIETNAMESE,\n weight: \"500\",\n },\n },\n {\n uri: LatinExt,\n descriptors: { unicodeRange: GOOGLE_FONTS_RANGES.LATIN_EXT, weight: \"500\" },\n },\n {\n uri: Latin,\n descriptors: { unicodeRange: GOOGLE_FONTS_RANGES.LATIN, weight: \"500\" },\n },\n];\n", "import { type ExcalidrawFontFaceDescriptor } from \"../Fonts\";\n\nimport Virgil from \"./Virgil-Regular.woff2\";\n\nexport const VirgilFontFaces: ExcalidrawFontFaceDescriptor[] = [\n {\n uri: Virgil,\n },\n];\n", "// The following file content was generated with https://chinese-font.netlify.app/online-split,\n// but has been manully rewritten from `@font-face` rules into TS while leveraging FontFace API.\n\nimport { type ExcalidrawFontFaceDescriptor } from \"../Fonts\";\n\nimport _80 from \"./Xiaolai-Regular-019d66dcad46dc156b162d267f981c20.woff2\";\nimport _16 from \"./Xiaolai-Regular-04b718e5623574919c8b0dea5f301444.woff2\";\nimport _13 from \"./Xiaolai-Regular-069e77aac84590e2e991d0a0176d34f2.woff2\";\nimport _166 from \"./Xiaolai-Regular-06c77b8c66e51ed6c63ccb502dd8b8af.woff2\";\nimport _71 from \"./Xiaolai-Regular-08e0dc436ad0ad61ba5558db0674d762.woff2\";\nimport _161 from \"./Xiaolai-Regular-093b9ef39a46ceae95a1df18a0a3a326.woff2\";\nimport _183 from \"./Xiaolai-Regular-095c169f3314805276f603a362766abd.woff2\";\nimport _0 from \"./Xiaolai-Regular-09850c4077f3fffe707905872e0e2460.woff2\";\nimport _14 from \"./Xiaolai-Regular-41521fade99856108931b4768b1b2648.woff2\";\nimport _10 from \"./Xiaolai-Regular-544fc28abe2c5c30e62383fd4dac255f.woff2\";\nimport _2 from \"./Xiaolai-Regular-60a3089806700d379f11827ee9843b6b.woff2\";\nimport _1 from \"./Xiaolai-Regular-7eb9fffd1aa890d07d0f88cc82e6cfe4.woff2\";\nimport _3 from \"./Xiaolai-Regular-6fe5c5973cc06f74b2387a631ea36b88.woff2\";\nimport _6 from \"./Xiaolai-Regular-a4c34be6d42152e64b0df90bc4607f64.woff2\";\nimport _4 from \"./Xiaolai-Regular-b96d9226ce77ec94ceca043d712182e6.woff2\";\nimport _5 from \"./Xiaolai-Regular-6ae5b42180ad70b971c91e7eefb8eba2.woff2\";\nimport _7 from \"./Xiaolai-Regular-c69f61a4ab18d0488c8d1fc12e7028e8.woff2\";\nimport _30 from \"./Xiaolai-Regular-cb17fc3db95f6d139afc9d31a8e93293.woff2\";\nimport _8 from \"./Xiaolai-Regular-e3fcf5180fd466c8915c4e8069491054.woff2\";\nimport _9 from \"./Xiaolai-Regular-c1f94158256bb1f3bf665b053d895af9.woff2\";\nimport _11 from \"./Xiaolai-Regular-7197d6fda6cba7c3874c53d6381ca239.woff2\";\nimport _12 from \"./Xiaolai-Regular-70c2eb8d64e71a42a834eb857ea9df51.woff2\";\nimport _15 from \"./Xiaolai-Regular-a004ddfcb26e67bd6e678c8ed19e25ce.woff2\";\nimport _17 from \"./Xiaolai-Regular-7e4bde7e9c7f84cd34d8a845e384c746.woff2\";\nimport _18 from \"./Xiaolai-Regular-23686f7f29da6e8008c36dd3a80c83d6.woff2\";\nimport _19 from \"./Xiaolai-Regular-69c09cc5fa3e55c74fc4821f76909cc3.woff2\";\nimport _20 from \"./Xiaolai-Regular-25b7f38e18f035f96cb5e547bd2bd08c.woff2\";\nimport _21 from \"./Xiaolai-Regular-ba3de316d63c7e339987b16f41a0b879.woff2\";\nimport _22 from \"./Xiaolai-Regular-12b52b58eb3df36804b9a654ec9ee194.woff2\";\nimport _23 from \"./Xiaolai-Regular-b1220a3c61f85cc0408deedb4c5f57a2.woff2\";\nimport _24 from \"./Xiaolai-Regular-4535823663ad81405188a528d8f2b1a2.woff2\";\nimport _25 from \"./Xiaolai-Regular-3eaa538115d76932653c21d8dc28f207.woff2\";\nimport _26 from \"./Xiaolai-Regular-7e929f262f30c8ee78bf398150b1a7cd.woff2\";\nimport _27 from \"./Xiaolai-Regular-73e309718fd16cea44b4d54a33581811.woff2\";\nimport _28 from \"./Xiaolai-Regular-9eb5a99df4e76ac3363453ac9ca288b1.woff2\";\nimport _29 from \"./Xiaolai-Regular-3e63ed8162808a9e425ed80a8bc79114.woff2\";\nimport _31 from \"./Xiaolai-Regular-c8b71798409ccc126ee264a00aadcf21.woff2\";\nimport _32 from \"./Xiaolai-Regular-11c345711937f0ba4b8f7b6b919c8440.woff2\";\nimport _33 from \"./Xiaolai-Regular-e480d9c614742d05f0e78f274f1e69e6.woff2\";\nimport _34 from \"./Xiaolai-Regular-95429962233afd82db1c27df1500a28c.woff2\";\nimport _35 from \"./Xiaolai-Regular-2cf96d082d35ea3d8106851223ad0d16.woff2\";\nimport _36 from \"./Xiaolai-Regular-2d43040e86ff03ba677f6f9c04cd0805.woff2\";\nimport _37 from \"./Xiaolai-Regular-2a26d20a23b00898ce82f09d2ee47c3f.woff2\";\nimport _38 from \"./Xiaolai-Regular-a365e82ed54697a52f27adcea1315fe8.woff2\";\nimport _41 from \"./Xiaolai-Regular-e4bca6cfa53e499cae0a6be4894a90e9.woff2\";\nimport _105 from \"./Xiaolai-Regular-e51ef413167c6e14e0c0fdcc585f2fc9.woff2\";\nimport _82 from \"./Xiaolai-Regular-e5f453bb04da18eed01675eeebd88bf8.woff2\";\nimport _45 from \"./Xiaolai-Regular-e656f091b9dc4709722c9f4b84d3c797.woff2\";\nimport _47 from \"./Xiaolai-Regular-f0f13b5c60e0af5553bd359f5513be1b.woff2\";\nimport _39 from \"./Xiaolai-Regular-f5d079153c99a25b9be5b8583c4cc8a7.woff2\";\nimport _40 from \"./Xiaolai-Regular-10a7ae9a371830a80c3d844acf1c02d7.woff2\";\nimport _42 from \"./Xiaolai-Regular-60a41c7e1c68f22424e6d22df544bc82.woff2\";\nimport _43 from \"./Xiaolai-Regular-7ab2bed91166a9dca83a5ebfbe2a7f38.woff2\";\nimport _44 from \"./Xiaolai-Regular-670ba603758d94268e8606f240a42e12.woff2\";\nimport _46 from \"./Xiaolai-Regular-15dc6d811c9cd078f9086a740d5a1038.woff2\";\nimport _48 from \"./Xiaolai-Regular-8c2f33cee3993174f7e87c28e4bf42ee.woff2\";\nimport _49 from \"./Xiaolai-Regular-761d05e3cd968cf574166867998ef06a.woff2\";\nimport _50 from \"./Xiaolai-Regular-642b26e2e5f5fb780b51b593dbc8c851.woff2\";\nimport _51 from \"./Xiaolai-Regular-5572b3513ba8df57a3d5d7303ee6b11b.woff2\";\nimport _52 from \"./Xiaolai-Regular-3c9de2ae0ea4bc91a510942dfa4be8d2.woff2\";\nimport _53 from \"./Xiaolai-Regular-671a2c20b1eb9e4ef8a192833940e319.woff2\";\nimport _54 from \"./Xiaolai-Regular-4dc6d5f188d5c96d44815cd1e81aa885.woff2\";\nimport _55 from \"./Xiaolai-Regular-ce4884f96f11589608b76b726a755803.woff2\";\nimport _56 from \"./Xiaolai-Regular-8f476c4c99813d57cbe6eca4727388ad.woff2\";\nimport _57 from \"./Xiaolai-Regular-5935a5775af3d5c6307ac667bd9ae74e.woff2\";\nimport _58 from \"./Xiaolai-Regular-79f007c1c6d07557120982951ea67998.woff2\";\nimport _59 from \"./Xiaolai-Regular-bafff7a14c27403dcc6cf1432e8ea836.woff2\";\nimport _60 from \"./Xiaolai-Regular-543fa46ace099a7099dad69123399400.woff2\";\nimport _61 from \"./Xiaolai-Regular-4ddc14ed3eb0c3e46364317dfc0144a3.woff2\";\nimport _62 from \"./Xiaolai-Regular-0fa55a080fcd0f9dc2e0b0058b793df8.woff2\";\nimport _63 from \"./Xiaolai-Regular-66493ba5a8367f2928812f446f47b56a.woff2\";\nimport _64 from \"./Xiaolai-Regular-57862b464a55b18c7bf234ce22907d73.woff2\";\nimport _65 from \"./Xiaolai-Regular-8d3bcabb847b56243b16afe62adaaf21.woff2\";\nimport _66 from \"./Xiaolai-Regular-2b77e8ebfb2367ab2662396a60e7d320.woff2\";\nimport _67 from \"./Xiaolai-Regular-0b5d723fdc4e249c140f0909e87d03b4.woff2\";\nimport _68 from \"./Xiaolai-Regular-cdbce89e82cc1ab53a2decbf5819278f.woff2\";\nimport _69 from \"./Xiaolai-Regular-739bc1a567439c7cffcd1614644593d2.woff2\";\nimport _70 from \"./Xiaolai-Regular-72252d73220fa3cd856677888cee1635.woff2\";\nimport _72 from \"./Xiaolai-Regular-cf6ff4e0f491ca0cf3038187a997b9b4.woff2\";\nimport _73 from \"./Xiaolai-Regular-9cfb2a77a4e45025105ad29a1748b90d.woff2\";\nimport _74 from \"./Xiaolai-Regular-450da755d5bcb70906e1295e559b9602.woff2\";\nimport _75 from \"./Xiaolai-Regular-0986d134c05864f5025962eef9f994a0.woff2\";\nimport _76 from \"./Xiaolai-Regular-1ee544f0f1dac422545c505baa788992.woff2\";\nimport _77 from \"./Xiaolai-Regular-4806e761d750087c2d734fc64596eaff.woff2\";\nimport _78 from \"./Xiaolai-Regular-33432927cd87d40cfe393c7482bf221f.woff2\";\nimport _79 from \"./Xiaolai-Regular-be549ab72f0719d606a5c01e2c0219b6.woff2\";\nimport _81 from \"./Xiaolai-Regular-b5c1596551c256e0e9cf02028595b092.woff2\";\nimport _83 from \"./Xiaolai-Regular-cf2cc71752631e579e35b0e423bf2638.woff2\";\nimport _84 from \"./Xiaolai-Regular-6f3256af8454371776bc46670d33cc65.woff2\";\nimport _85 from \"./Xiaolai-Regular-23f228f3999c01983860012330e4be08.woff2\";\nimport _86 from \"./Xiaolai-Regular-21430ee05a1248901da8d0de08744d47.woff2\";\nimport _87 from \"./Xiaolai-Regular-5330a2119a716e4e7224ed108b085dac.woff2\";\nimport _88 from \"./Xiaolai-Regular-cd145ce4a0ea18469358df53c207bc1b.woff2\";\nimport _89 from \"./Xiaolai-Regular-36925dfe329a45086cbb7fc5c20d45ac.woff2\";\nimport _90 from \"./Xiaolai-Regular-4bfaa8ffa64c5ee560aa2daba7c9cbd3.woff2\";\nimport _91 from \"./Xiaolai-Regular-112c051027b2d766c19a519f6ee1f4f7.woff2\";\nimport _92 from \"./Xiaolai-Regular-5b0ed6971aaab9c8ad563230bd5471a7.woff2\";\nimport _93 from \"./Xiaolai-Regular-98f2ad84457de7f3740d9920b8fa8667.woff2\";\nimport _94 from \"./Xiaolai-Regular-733171b4ffcd17ea1fe1c0ba627173bf.woff2\";\nimport _95 from \"./Xiaolai-Regular-684d65f1793cac449dde5d59cb3c47fb.woff2\";\nimport _96 from \"./Xiaolai-Regular-cbaaefaaf326668277aa24dfa93c4d28.woff2\";\nimport _97 from \"./Xiaolai-Regular-58fd02350d0bc52cf1ca3bb32ce9766e.woff2\";\nimport _98 from \"./Xiaolai-Regular-7ccce86603f80a099ddb0cb21d4ae3e3.woff2\";\nimport _99 from \"./Xiaolai-Regular-3717077e38f98d89eae729b6c14e56dc.woff2\";\nimport _100 from \"./Xiaolai-Regular-dbea1af6dcd9860be40c3d18254338f5.woff2\";\nimport _101 from \"./Xiaolai-Regular-4a0fdb40036e87b40aa08dd30584cb85.woff2\";\nimport _102 from \"./Xiaolai-Regular-0f626226ba1272e832aea87bafd9720e.woff2\";\nimport _103 from \"./Xiaolai-Regular-938d90c10ff8c20386af7f242c05d6b0.woff2\";\nimport _104 from \"./Xiaolai-Regular-b6d128682ee29e471486354d486a1b90.woff2\";\nimport _106 from \"./Xiaolai-Regular-9d81066dd2b337c938df6e90380a00dc.woff2\";\nimport _107 from \"./Xiaolai-Regular-20e7bf72fa05de9adf7dbcc7bf51dde6.woff2\";\nimport _108 from \"./Xiaolai-Regular-4095eb84ef3874e2600247bee0b04026.woff2\";\nimport _109 from \"./Xiaolai-Regular-4ee10ae43505e2e0bc62656ced49c0fa.woff2\";\nimport _110 from \"./Xiaolai-Regular-7494dc504ae00ee9cd0505f990f88c5d.woff2\";\nimport _111 from \"./Xiaolai-Regular-8de5b863cb50dfefdd07cb11c774d579.woff2\";\nimport _112 from \"./Xiaolai-Regular-3e1f8f654357353bf0e04ba5c34b5f7f.woff2\";\nimport _113 from \"./Xiaolai-Regular-2e33e8dc771ef5e1d9127d60a6b73679.woff2\";\nimport _114 from \"./Xiaolai-Regular-173945821411c09f70c95f98d590e697.woff2\";\nimport _115 from \"./Xiaolai-Regular-b358f7a51ece39a3247942b1feabdb29.woff2\";\nimport _116 from \"./Xiaolai-Regular-23ad2d71b280f00b1363b95b7bea94eb.woff2\";\nimport _117 from \"./Xiaolai-Regular-5882ffa04f32584d26109137e2da4352.woff2\";\nimport _118 from \"./Xiaolai-Regular-a203b91dad570bf05a58c3c3ddb529bf.woff2\";\nimport _119 from \"./Xiaolai-Regular-bd77e3c7f9e0b072d96af37f73d1aa32.woff2\";\nimport _120 from \"./Xiaolai-Regular-5a45d991244d4c7140217e1e5f5ca4f4.woff2\";\nimport _121 from \"./Xiaolai-Regular-f56414bf9bced67990def8660e306759.woff2\";\nimport _122 from \"./Xiaolai-Regular-583d166e56ba0de4b77eabb47ef67839.woff2\";\nimport _123 from \"./Xiaolai-Regular-7f855356ab893b0d2b9c1c83b8116f0e.woff2\";\nimport _124 from \"./Xiaolai-Regular-b57aaedfd8ebdf3931f25119dc6a5eb2.woff2\";\nimport _125 from \"./Xiaolai-Regular-b6fd38ca30869792244804b04bc058da.woff2\";\nimport _126 from \"./Xiaolai-Regular-452225341522a7942f0f6aab1a5c91a3.woff2\";\nimport _127 from \"./Xiaolai-Regular-866fa7613df6b3fd272bcfd4530c0bb9.woff2\";\nimport _128 from \"./Xiaolai-Regular-52a84a22fd1369bffeaf21da2d6158dc.woff2\";\nimport _129 from \"./Xiaolai-Regular-829615148e6357d826b9242eb7fbbd1e.woff2\";\nimport _130 from \"./Xiaolai-Regular-c99eda15fc26a2941579560f76c3a5cf.woff2\";\nimport _131 from \"./Xiaolai-Regular-395c35dd584b56b0789f58a0559beaf1.woff2\";\nimport _132 from \"./Xiaolai-Regular-203b0e569e3b14aac86a003dc3fa523e.woff2\";\nimport _133 from \"./Xiaolai-Regular-51a0e808bbc8361236ac521a119758a3.woff2\";\nimport _134 from \"./Xiaolai-Regular-6e092f71c1e634059ada0e52abadce67.woff2\";\nimport _135 from \"./Xiaolai-Regular-0f7fb1e0d5015bb1371343153ecf7ce3.woff2\";\nimport _136 from \"./Xiaolai-Regular-d0cf73942fea1c74edbdf0b3011f4656.woff2\";\nimport _137 from \"./Xiaolai-Regular-968cffdc8ee679da094e77ebf50f58ef.woff2\";\nimport _138 from \"./Xiaolai-Regular-7a07ddc0f0c0f5f4a9bad6ee3dda66b5.woff2\";\nimport _139 from \"./Xiaolai-Regular-ec181b795ac1fb5a50d700b6e996d745.woff2\";\nimport _140 from \"./Xiaolai-Regular-cfb211578629b7e8153b37240de6a9d5.woff2\";\nimport _141 from \"./Xiaolai-Regular-59e9ff77b0efaf684bc09274fb6908c9.woff2\";\nimport _142 from \"./Xiaolai-Regular-2adbc89c11e65905393d3dfc468b9d5b.woff2\";\nimport _143 from \"./Xiaolai-Regular-70e811fd7994e61f408c923de6ddd078.woff2\";\nimport _144 from \"./Xiaolai-Regular-c4a687ac4f0c2766eefc9f77ed99cddf.woff2\";\nimport _145 from \"./Xiaolai-Regular-51502f1206be09c565f1547c406e9558.woff2\";\nimport _146 from \"./Xiaolai-Regular-1fdc0c67ed57263a80fd108c1f6ccf24.woff2\";\nimport _147 from \"./Xiaolai-Regular-e11567fd2accf9957cd0d3c2be937d87.woff2\";\nimport _148 from \"./Xiaolai-Regular-20cc1bbf50e7efb442756cb605672c1f.woff2\";\nimport _149 from \"./Xiaolai-Regular-5d2898fbc097a7e24c6f38d80587621e.woff2\";\nimport _150 from \"./Xiaolai-Regular-ac9ceb44437becc3e9c4dbfebab7fc2d.woff2\";\nimport _151 from \"./Xiaolai-Regular-c16ed9740b85badf16e86ea782a3062f.woff2\";\nimport _152 from \"./Xiaolai-Regular-aa0d470430e6391eca720c7cfa44446f.woff2\";\nimport _153 from \"./Xiaolai-Regular-f2b54d4e7be0eaefe1c2c56836fa5368.woff2\";\nimport _154 from \"./Xiaolai-Regular-99a16ef6a64934d5781933dbd9c46b2e.woff2\";\nimport _155 from \"./Xiaolai-Regular-c40533fdf4cc57177b12803598af7e59.woff2\";\nimport _156 from \"./Xiaolai-Regular-91ddb2969bf2d31ba02ad82998d1314c.woff2\";\nimport _157 from \"./Xiaolai-Regular-774d4f764a1299da5d28ec2f2ffe0d69.woff2\";\nimport _158 from \"./Xiaolai-Regular-7718fe60986d8b42b1be9c5ace5ccf25.woff2\";\nimport _159 from \"./Xiaolai-Regular-aa5c9ca6cf4fba00433b7aa3fa10671a.woff2\";\nimport _160 from \"./Xiaolai-Regular-4f50e5136e136527280bc902c5817561.woff2\";\nimport _162 from \"./Xiaolai-Regular-a0ca5df4258213d7fc9fce80f65ce760.woff2\";\nimport _163 from \"./Xiaolai-Regular-d2666cbed13462c5dc36fa2f15c202ca.woff2\";\nimport _164 from \"./Xiaolai-Regular-1e6fd68f1f3902ce48ce8c69df385622.woff2\";\nimport _165 from \"./Xiaolai-Regular-87599f94b6cc129d505b375798d0d751.woff2\";\nimport _167 from \"./Xiaolai-Regular-13ae07ed2e272d26d59bc0691cd7117a.woff2\";\nimport _168 from \"./Xiaolai-Regular-353f33792a8f60dc69323ddf635a269e.woff2\";\nimport _169 from \"./Xiaolai-Regular-0facdf1ea213ba40261022f5d5ed4493.woff2\";\nimport _202 from \"./Xiaolai-Regular-f6032fc06eb20480f096199713f70885.woff2\";\nimport _170 from \"./Xiaolai-Regular-f8ee5d36068a42b51d0e4a1116cfcec1.woff2\";\nimport _171 from \"./Xiaolai-Regular-79d494361ae093b69e74ee9dbe65bfd4.woff2\";\nimport _172 from \"./Xiaolai-Regular-74e2263a91439c25b91d5132ce9f4d62.woff2\";\nimport _173 from \"./Xiaolai-Regular-ee8bae97908d5147b423f77ad0d3c1bb.woff2\";\nimport _174 from \"./Xiaolai-Regular-56467a5c8840c4d23a60b2f935114848.woff2\";\nimport _175 from \"./Xiaolai-Regular-145aa02cdd91946e67dc934e1acffe75.woff2\";\nimport _176 from \"./Xiaolai-Regular-54acdfc2166ad7fcbd074f75fd4a56ba.woff2\";\nimport _177 from \"./Xiaolai-Regular-29cec36cd205b211da97acabaa62f055.woff2\";\nimport _178 from \"./Xiaolai-Regular-3756e81d3e149cf6099163ee79944fec.woff2\";\nimport _179 from \"./Xiaolai-Regular-8e9f97f01034820170065b2921b4fb5e.woff2\";\nimport _180 from \"./Xiaolai-Regular-13d2887ec8ee73c43acdabc52a05af7b.woff2\";\nimport _181 from \"./Xiaolai-Regular-72536a3d71b694a0d53dd90ddceae41e.woff2\";\nimport _182 from \"./Xiaolai-Regular-603aefd23e350ba7eb124273e3c9bcf1.woff2\";\nimport _184 from \"./Xiaolai-Regular-9544732d2e62d1a429674f8ee41b5d3a.woff2\";\nimport _185 from \"./Xiaolai-Regular-d3716376641d615e2995605b29bca7b6.woff2\";\nimport _186 from \"./Xiaolai-Regular-5a1ce3117cfe90c48e8fb4a9a00f694d.woff2\";\nimport _187 from \"./Xiaolai-Regular-b7d203b051eff504ff59ddca7576b6a9.woff2\";\nimport _188 from \"./Xiaolai-Regular-4a38cc3e9cf104e69ba246d37f8cf135.woff2\";\nimport _189 from \"./Xiaolai-Regular-982b630266d87db93d2539affb1275c6.woff2\";\nimport _190 from \"./Xiaolai-Regular-9592bfc861f07bcb8d75c196b370e548.woff2\";\nimport _191 from \"./Xiaolai-Regular-a7accba310e821da5505f71c03b76bdb.woff2\";\nimport _192 from \"./Xiaolai-Regular-dac48066b5883d8b4551fc584f0c2a3e.woff2\";\nimport _193 from \"./Xiaolai-Regular-a1f916d6039285c4ffb900cd654e418f.woff2\";\nimport _194 from \"./Xiaolai-Regular-95bfd249da4902577b4b7d76ebdd0b44.woff2\";\nimport _195 from \"./Xiaolai-Regular-93fc8f28a33234bcadf1527cafabd502.woff2\";\nimport _196 from \"./Xiaolai-Regular-903bb6865f3452e2fda42e3a25547bc5.woff2\";\nimport _197 from \"./Xiaolai-Regular-4aca6a43e59aceee2166b0c7e4e85ef1.woff2\";\nimport _198 from \"./Xiaolai-Regular-24476a126f129212beb33f66853ea151.woff2\";\nimport _199 from \"./Xiaolai-Regular-1b611157cd46bb184d4fa4dae2d6a2b8.woff2\";\nimport _200 from \"./Xiaolai-Regular-56a32a7689abd0326e57c10c6c069bb4.woff2\";\nimport _201 from \"./Xiaolai-Regular-3cc70dbb64df5b21f1326cc24dee2195.woff2\";\nimport _203 from \"./Xiaolai-Regular-e2ead7ea7da0437f085f42ffc05f8d13.woff2\";\nimport _204 from \"./Xiaolai-Regular-97f7f48ce90c9429bf32ae51469db74d.woff2\";\nimport _205 from \"./Xiaolai-Regular-24a21c1e4449222e8d1898d69ff3a404.woff2\";\nimport _206 from \"./Xiaolai-Regular-726303e0774b4e678bff8c2deb6ca603.woff2\";\nimport _207 from \"./Xiaolai-Regular-5a7fac4b8b23a6e4e5ba0c9bf1756c91.woff2\";\nimport _208 from \"./Xiaolai-Regular-2b7441d46298788ac94e610ffcc709b6.woff2\";\n\n/* Generated By cn-font-split@5.2.2 https://www.npmjs.com/package/cn-font-split\nCreateTime: Tue, 08 Oct 2024 18:34:44 GMT;\nOrigin File Name Table:\nfontFamily: Xiaolai SC\nfontSubfamily: Regular\npreferredFamily: \u5C0F\u8CF4\u5B57\u9AD4 SC\npostScriptFindFontName: \ncopyright: Copyright \u00A9 2020 LXGW\nuniqueID: Xiaolai SC:Version 3.11\nfullName: Xiaolai SC\nversion: Version 3.11;December 4, 2020;FontCreator 13.0.0.2613 64-bit\npostScriptName: XiaolaiSC\ntrademark: \u5C0F\u8D56\u5B57\u4F53 SC\ndesigner: Nozomi Seto \u702C\u6238\u306E\u305E\u307F\ndescription: This font was created using FontCreator from High-Logic.com\nlicense: This Font Software is licensed under the SIL Open Font License, Version 1.1. This Font Software is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software.\nlicenseURL: http://scripts.sil.org/OFL\n */\n\n/**\n * The original font was modified with the following changes:\n * - removed non-CJK codepoints\n * - reduced any Hangul side-bearings to 40%\n * - centered in width of inproperly centered CJK codepoints\n */\n\nexport const XiaolaiFontFaces: ExcalidrawFontFaceDescriptor[] = [\n {\n uri: _0,\n descriptors: {\n unicodeRange:\n \"U+f9b8-fa6d,U+fe32,U+fe45-fe4f,U+ff02-ff0b,U+ff0d-ff1e,U+ff20-ff2a\",\n },\n },\n {\n uri: _1,\n descriptors: {\n unicodeRange:\n \"U+20dd-20de,U+25ef,U+ff2b-ffbe,U+ffc2-ffc7,U+ffca-ffcf,U+ffd2-ffd7,U+ffda-ffdc,U+ffe0-ffe6,U+ffe8-ffee\",\n },\n },\n { uri: _2, descriptors: { unicodeRange: \"U+d7eb-d7fb,U+f900-f9b7\" } },\n {\n uri: _3,\n descriptors: { unicodeRange: \"U+d6f2-d7a3,U+d7b0-d7c6,U+d7cb-d7ea\" },\n },\n { uri: _4, descriptors: { unicodeRange: \"U+d609-d6f1\" } },\n { uri: _5, descriptors: { unicodeRange: \"U+d520-d608\" } },\n { uri: _6, descriptors: { unicodeRange: \"U+d437-d51f\" } },\n { uri: _7, descriptors: { unicodeRange: \"U+d34e-d436\" } },\n { uri: _8, descriptors: { unicodeRange: \"U+d265-d34d\" } },\n { uri: _9, descriptors: { unicodeRange: \"U+d17c-d264\" } },\n { uri: _10, descriptors: { unicodeRange: \"U+d093-d17b\" } },\n { uri: _11, descriptors: { unicodeRange: \"U+cfaa-d092\" } },\n { uri: _12, descriptors: { unicodeRange: \"U+cec1-cfa9\" } },\n { uri: _13, descriptors: { unicodeRange: \"U+cdd8-cec0\" } },\n { uri: _14, descriptors: { unicodeRange: \"U+ccf1-cdd7\" } },\n { uri: _15, descriptors: { unicodeRange: \"U+cc08-ccf0\" } },\n { uri: _16, descriptors: { unicodeRange: \"U+cb43-cc07\" } },\n { uri: _17, descriptors: { unicodeRange: \"U+ca83-cb42\" } },\n { uri: _18, descriptors: { unicodeRange: \"U+c9a1-ca82\" } },\n { uri: _19, descriptors: { unicodeRange: \"U+c8b8-c9a0\" } },\n { uri: _20, descriptors: { unicodeRange: \"U+c7cf-c8b7\" } },\n { uri: _21, descriptors: { unicodeRange: \"U+c6e6-c7ce\" } },\n { uri: _22, descriptors: { unicodeRange: \"U+c5fd-c6e5\" } },\n { uri: _23, descriptors: { unicodeRange: \"U+c514-c5fc\" } },\n { uri: _24, descriptors: { unicodeRange: \"U+c42b-c513\" } },\n { uri: _25, descriptors: { unicodeRange: \"U+c341-c34e,U+c350-c42a\" } },\n { uri: _26, descriptors: { unicodeRange: \"U+c258-c340\" } },\n { uri: _27, descriptors: { unicodeRange: \"U+c16f-c257\" } },\n { uri: _28, descriptors: { unicodeRange: \"U+c086-c16e\" } },\n { uri: _29, descriptors: { unicodeRange: \"U+bf9d-c085\" } },\n { uri: _30, descriptors: { unicodeRange: \"U+beb4-bf9c\" } },\n { uri: _31, descriptors: { unicodeRange: \"U+bdcb-beb3\" } },\n { uri: _32, descriptors: { unicodeRange: \"U+bce2-bdca\" } },\n { uri: _33, descriptors: { unicodeRange: \"U+bbf9-bce1\" } },\n { uri: _34, descriptors: { unicodeRange: \"U+bb10-bbf8\" } },\n { uri: _35, descriptors: { unicodeRange: \"U+ba27-bb0f\" } },\n { uri: _36, descriptors: { unicodeRange: \"U+b93e-ba26\" } },\n { uri: _37, descriptors: { unicodeRange: \"U+b855-b93d\" } },\n { uri: _38, descriptors: { unicodeRange: \"U+b76c-b854\" } },\n { uri: _39, descriptors: { unicodeRange: \"U+b683-b76b\" } },\n { uri: _40, descriptors: { unicodeRange: \"U+b59a-b682\" } },\n { uri: _41, descriptors: { unicodeRange: \"U+b4b1-b599\" } },\n { uri: _42, descriptors: { unicodeRange: \"U+11fb-11ff,U+b3cd-b4b0\" } },\n { uri: _43, descriptors: { unicodeRange: \"U+11e6-11fa,U+b2f9-b3cc\" } },\n { uri: _44, descriptors: { unicodeRange: \"U+11d1-11e5,U+b225-b2f8\" } },\n { uri: _45, descriptors: { unicodeRange: \"U+11bc-11d0,U+b151-b224\" } },\n { uri: _46, descriptors: { unicodeRange: \"U+11a7-11bb,U+b07d-b150\" } },\n { uri: _47, descriptors: { unicodeRange: \"U+1191-11a6,U+afaa-b07c\" } },\n { uri: _48, descriptors: { unicodeRange: \"U+117c-1190,U+aed6-afa9\" } },\n { uri: _49, descriptors: { unicodeRange: \"U+1167-117b,U+ae02-aed5\" } },\n {\n uri: _50,\n descriptors: { unicodeRange: \"U+1152-115e,U+1160-1166,U+ad2d-ae01\" },\n },\n { uri: _51, descriptors: { unicodeRange: \"U+113d-1151,U+ac59-ad2c\" } },\n {\n uri: _52,\n descriptors: {\n unicodeRange:\n \"U+1100-113c,U+9f95-9f98,U+9f9c-9f9e,U+9fa1-9fce,U+9fd0,U+a960-a97c,U+ac00-ac58\",\n },\n },\n {\n uri: _53,\n descriptors: {\n unicodeRange:\n \"U+9771-9772,U+9775,U+9777-977b,U+977d-9784,U+9786-978a,U+978c,U+978e-9790,U+9793,U+9795-9797,U+9799-979f,U+97a1-97a2,U+97a4-97aa,U+97ac,U+97ae,U+97b0-97b1,U+97b3,U+97b5-97e5,U+97e8,U+97ee-97f2,U+97f4,U+97f7-982d\",\n },\n },\n {\n uri: _54,\n descriptors: {\n unicodeRange:\n \"U+9491,U+9496,U+9498,U+94c7,U+94cf,U+94d3-94d4,U+94da,U+94e6,U+94fb,U+951c,U+9520,U+9527,U+9533,U+953d,U+9543,U+9548,U+954b,U+9555,U+955a,U+9560,U+956e,U+9574-9575,U+9577-957e,U+9580-95e7,U+95ec,U+95ff,U+9607,U+9613,U+9618,U+961b,U+961e,U+9620,U+9623-9629,U+962b-962d,U+962f-9630,U+9637-963a,U+963e,U+9641,U+9643,U+964a,U+964e-964f,U+9651-9653,U+9656-965a,U+965c-965e,U+9660,U+9663,U+9665-9666,U+966b,U+966d-9671,U+9673,U+9678-9684,U+9687,U+9689-968a,U+968c,U+968e,U+9691-9693\",\n },\n },\n {\n uri: _55,\n descriptors: {\n unicodeRange:\n \"U+923c-9273,U+9275-928d,U+928f-92ad,U+92af-92c7,U+92c9-92ee\",\n },\n },\n {\n uri: _56,\n descriptors: {\n unicodeRange:\n \"U+9159,U+915b-915c,U+915f-9160,U+9166-9168,U+916b,U+916d,U+9173,U+917a-917c,U+9180-9184,U+9186,U+9188,U+918a,U+918e-918f,U+9193-9199,U+919c-91a1,U+91a4-91a9,U+91ab-91ac,U+91b0-91b3,U+91b6-91b9,U+91bb-91c6,U+91c8,U+91cb,U+91d0,U+91d2-91db,U+91dd-923b\",\n },\n },\n {\n uri: _57,\n descriptors: {\n unicodeRange:\n \"U+902b-902c,U+9030-9034,U+9037,U+9039-903a,U+903d,U+903f-9040,U+9043,U+9045-9046,U+9048-904c,U+904e,U+9054-9056,U+9059-905a,U+905c-9061,U+9064,U+9066-9067,U+9069-906c,U+906f-9073,U+9076-907c,U+907e,U+9081,U+9084-9087,U+9089-908a,U+908c-9090,U+9092,U+9094,U+9096,U+9098,U+909a,U+909c,U+909e-90a0,U+90a4-90a5,U+90a7-90a9,U+90ab,U+90ad,U+90b2,U+90b7,U+90bc-90bd,U+90bf-90c0,U+90c2-90c3,U+90c6,U+90c8-90c9,U+90cb-90cd,U+90d2,U+90d4-90d6,U+90d8-90da,U+90de-90e0,U+90e3-90e5,U+90e9-90ea,U+90ec,U+90ee,U+90f0-90f3,U+90f5-90f7,U+90f9-90fc,U+90ff-9101,U+9103,U+9105-9118,U+911a-911d,U+911f-9121,U+9124-912e,U+9130,U+9132-9138,U+913a-9142,U+9144-9145,U+9147-9148,U+9151,U+9153-9156,U+9158\",\n },\n },\n {\n uri: _58,\n descriptors: {\n unicodeRange:\n \"U+8f03-8f65,U+8f6a,U+8f80,U+8f8c,U+8f92,U+8f9d,U+8fa0-8fa2,U+8fa4-8fa7,U+8faa,U+8fac-8faf,U+8fb2-8fb5,U+8fb7-8fb8,U+8fba-8fbc,U+8fbf-8fc0,U+8fc3,U+8fc6,U+8fc9-8fcd,U+8fcf,U+8fd2,U+8fd6-8fd7,U+8fda,U+8fe0-8fe1,U+8fe3,U+8fe7,U+8fec,U+8fef,U+8ff1-8ff2,U+8ff4-8ff6,U+8ffa-8ffc,U+8ffe-8fff,U+9007-9008,U+900c,U+900e,U+9013,U+9015,U+9018-9019,U+901c,U+9023-9025,U+9027-902a\",\n },\n },\n {\n uri: _59,\n descriptors: {\n unicodeRange:\n \"U+8d03-8d1c,U+8d20,U+8d51-8d52,U+8d57,U+8d5f,U+8d65,U+8d68-8d6a,U+8d6c,U+8d6e-8d6f,U+8d71-8d72,U+8d78-8d80,U+8d82-8d83,U+8d86-8d89,U+8d8c-8d90,U+8d92-8d93,U+8d95-8d9e,U+8da0-8da2,U+8da4-8db0,U+8db2,U+8db6-8db7,U+8db9,U+8dbb,U+8dbd,U+8dc0-8dc2,U+8dc5,U+8dc7-8dca,U+8dcd,U+8dd0,U+8dd2-8dd5,U+8dd8-8dd9,U+8ddc,U+8de0-8de2,U+8de5-8de7,U+8de9,U+8ded-8dee,U+8df0-8df2,U+8df4,U+8df6,U+8dfc,U+8dfe-8e04,U+8e06-8e08,U+8e0b,U+8e0d-8e0e,U+8e10-8e13,U+8e15-8e1c,U+8e20-8e21,U+8e24-8e28,U+8e2b,U+8e2d,U+8e30,U+8e32-8e34,U+8e36-8e38,U+8e3b-8e3c,U+8e3e-8e3f,U+8e43,U+8e45-8e46\",\n },\n },\n {\n uri: _60,\n descriptors: {\n unicodeRange:\n \"U+8bea,U+8c09,U+8c1e,U+8c38-8c40,U+8c42-8c45,U+8c48,U+8c4a-8c4b,U+8c4d-8c54,U+8c56-8c59,U+8c5b-8c60,U+8c63-8c69,U+8c6c-8c72,U+8c74-8c77,U+8c7b-8c81,U+8c83-8c84,U+8c86-8c88,U+8c8b,U+8c8d-8c93,U+8c95-8c97,U+8c99-8d02\",\n },\n },\n {\n uri: _61,\n descriptors: {\n unicodeRange:\n \"U+8a64-8a78,U+8a7a-8a88,U+8a8b-8a92,U+8a94-8b06,U+8b08-8b1b\",\n },\n },\n {\n uri: _62,\n descriptors: {\n unicodeRange:\n \"U+8987-89c0,U+89c3,U+89cd,U+89d3-89d5,U+89d7-89d9,U+89db,U+89dd,U+89df-89e2,U+89e4,U+89e7-89ea,U+89ec-89ee,U+89f0-89f2,U+89f4-89ff,U+8a01-8a06,U+8a08-8a3d,U+8a3f-8a47,U+8a49-8a63\",\n },\n },\n {\n uri: _63,\n descriptors: {\n unicodeRange:\n \"U+87e3-87e4,U+87e6-87e9,U+87eb-87ed,U+87ef-87f8,U+87fa-87fd,U+87ff-8802,U+8804-8809,U+880b-8812,U+8814,U+8817-881a,U+881c-8820,U+8823-8831,U+8833-8838,U+883a-883b,U+883d-883f,U+8841-8843,U+8846-884b,U+884e-8853,U+8855-8856,U+8858,U+885a-8860,U+8866-8867,U+886a,U+886d,U+886f,U+8871,U+8873-8876,U+8878-887c,U+8880,U+8883,U+8886-8887,U+8889-888a,U+888c,U+888e-8891,U+8893-8895,U+8897-889b,U+889d-88a1,U+88a3,U+88a5-88aa,U+88ac,U+88ae-88b0,U+88b2-88b6,U+88b8-88bb\",\n },\n },\n {\n uri: _64,\n descriptors: {\n unicodeRange:\n \"U+86e7-86e8,U+86ea-86ec,U+86ef,U+86f5-86f7,U+86fa-86fd,U+86ff,U+8701,U+8704-8706,U+870b-870c,U+870e-8711,U+8714,U+8716,U+8719,U+871b,U+871d,U+871f-8720,U+8724,U+8726-8728,U+872a-872d,U+872f-8730,U+8732-8733,U+8735-8736,U+8738-873a,U+873c-873d,U+8740-8746,U+874a-874b,U+874d,U+874f-8752,U+8754-8756,U+8758,U+875a-875f,U+8761-8762,U+8766-876d,U+876f,U+8771-8773,U+8775,U+8777-877a,U+877f-8781,U+8784,U+8786-8787,U+8789-878a,U+878c,U+878e-8792,U+8794-8796,U+8798-879e,U+87a0-87a7,U+87a9-87aa,U+87ae,U+87b0-87b2,U+87b4,U+87b6-87b9,U+87bb-87bc,U+87be-87bf,U+87c1-87c5,U+87c7-87c9,U+87cc-87d0,U+87d4-87da,U+87dc-87df,U+87e1-87e2\",\n },\n },\n {\n uri: _65,\n descriptors: {\n unicodeRange:\n \"U+8604,U+8606-8610,U+8612-8615,U+8617-8626,U+8628,U+862a-8637,U+8639-863b,U+863d-864c,U+8652-8653,U+8655-8659,U+865b-865d,U+865f-8661,U+8663-866a,U+866d,U+866f-8670,U+8672-8678,U+8683-8689,U+868e-8692,U+8694,U+8696-869b,U+869e-86a2,U+86a5-86a6,U+86ab,U+86ad-86ae,U+86b2-86b3,U+86b7-86b9,U+86bb-86bf,U+86c1-86c3,U+86c5,U+86c8,U+86cc-86cd,U+86d2-86d3,U+86d5-86d7,U+86da,U+86dc-86dd,U+86e0-86e3,U+86e5-86e6\",\n },\n },\n {\n uri: _66,\n descriptors: {\n unicodeRange:\n \"U+8456,U+8458,U+845d-8460,U+8462,U+8464-8468,U+846a,U+846e-8470,U+8472,U+8474,U+8477,U+8479,U+847b-8481,U+8483-8486,U+848a,U+848d,U+848f-8496,U+8498,U+849a-849b,U+849d-84a0,U+84a2-84ae,U+84b0-84b1,U+84b3,U+84b5-84b7,U+84bb-84bc,U+84be,U+84c0,U+84c2-84c3,U+84c5-84c8,U+84cb-84cc,U+84ce-84cf,U+84d2,U+84d4-84d5,U+84d7-84dc,U+84de,U+84e1-84e2,U+84e4,U+84e7-84eb,U+84ed-84ef,U+84f1-84fb,U+84fd-84fe,U+8500-850b,U+850d-8510,U+8512,U+8514-8516,U+8518-8519,U+851b-851e,U+8520,U+8522-852a,U+852d-8536,U+853e-8542,U+8544-8547,U+854b-854f\",\n },\n },\n {\n uri: _67,\n descriptors: {\n unicodeRange:\n \"U+82c2-82c3,U+82c5-82c6,U+82c9,U+82d0,U+82d6,U+82d9-82da,U+82dd,U+82e2,U+82e7-82ea,U+82ec-82ee,U+82f0,U+82f2-82f3,U+82f5-82f6,U+82f8,U+82fa,U+82fc-8300,U+830a-830b,U+830d,U+8310,U+8312-8313,U+8316,U+8318-8319,U+831d-8326,U+8329-832a,U+832e,U+8330,U+8332,U+8337,U+833b,U+833d-833f,U+8341-8342,U+8344-8345,U+8348,U+834a-834e,U+8353,U+8355-8359,U+835d,U+8362,U+8370-8376,U+8379-837a,U+837e-8384,U+8387-8388,U+838a-838d,U+838f-8391,U+8394-8397,U+8399-839a,U+839d,U+839f,U+83a1-83a7,U+83ac-83af,U+83b5,U+83bb,U+83be-83bf,U+83c2-83c4,U+83c6,U+83c8-83c9,U+83cb,U+83cd-83ce,U+83d0-83d3,U+83d5,U+83d7,U+83d9-83db,U+83de,U+83e2-83e4,U+83e6-83e8,U+83eb-83ef,U+83f3-83f7,U+83fa-83fc,U+83fe-8400,U+8402,U+8405,U+8407-840a,U+8410,U+8412-8417,U+8419-841b,U+841e-8423,U+8429-8430,U+8432-8437,U+8439-843b,U+843e-8445,U+8447-8450,U+8452-8455\",\n },\n },\n {\n uri: _68,\n descriptors: {\n unicodeRange:\n \"U+81a4-81a5,U+81a7,U+81a9,U+81ab-81b2,U+81b4-81b9,U+81bc-81bf,U+81c4-81c5,U+81c7-81c9,U+81cb,U+81cd-81e2,U+81e4-81e6,U+81e8-81e9,U+81eb,U+81ee-81f2,U+81f5-81fa,U+81fd,U+81ff,U+8203,U+8207-820b,U+820e-820f,U+8211,U+8213,U+8215-821a,U+821d,U+8220,U+8224-8227,U+8229,U+822e,U+8232,U+823a,U+823c-823d,U+823f-8243,U+8245-8246,U+8248,U+824a,U+824c-824e,U+8250-8257,U+8259,U+825b-825e,U+8260-8267,U+8269-826d,U+8271,U+8275-8278,U+827b-827c,U+8280-8281,U+8283,U+8285-8287,U+8289,U+828c,U+8290,U+8293-8296,U+829a-829b,U+829e,U+82a0,U+82a2-82a3,U+82a7,U+82b2,U+82b5-82b6,U+82ba-82bc,U+82bf-82c0\",\n },\n },\n {\n uri: _69,\n descriptors: {\n unicodeRange:\n \"U+8059,U+805b-8068,U+806b-8070,U+8072-807e,U+8081-8082,U+8085,U+8088,U+808a,U+808d-8092,U+8094-8095,U+8097,U+8099,U+809e,U+80a3,U+80a6-80a8,U+80ac,U+80b0,U+80b3,U+80b5-80b6,U+80b8-80b9,U+80bb,U+80c5,U+80c7-80cb,U+80cf-80d5,U+80d8,U+80df-80e0,U+80e2-80e3,U+80e6,U+80ee,U+80f5,U+80f7,U+80f9,U+80fb,U+80fe-8101,U+8103-8105,U+8107-8108,U+810b-810c,U+8115,U+8117,U+8119,U+811b-811d,U+811f-812b,U+812d-812e,U+8130,U+8133-8135,U+8137,U+8139-813d,U+813f-8145,U+8147,U+8149,U+814d-814f,U+8152,U+8156-8158,U+815b-815f,U+8161-8164,U+8166,U+8168,U+816a-816c,U+816f,U+8172-8173,U+8175-8178,U+8181,U+8183-8187,U+8189,U+818b-818e,U+8190,U+8192-8197,U+8199-819a,U+819e-81a2\",\n },\n },\n {\n uri: _70,\n descriptors: {\n unicodeRange:\n \"U+7f3c-7f41,U+7f43,U+7f46-7f4f,U+7f52-7f53,U+7f56,U+7f59,U+7f5b-7f5e,U+7f60,U+7f63-7f67,U+7f6b-7f6d,U+7f6f-7f70,U+7f73,U+7f75-7f78,U+7f7a-7f7d,U+7f7f-7f80,U+7f82-7f89,U+7f8b,U+7f8d,U+7f8f-7f93,U+7f95-7f99,U+7f9b-7f9c,U+7fa0,U+7fa2-7fa3,U+7fa5-7fa6,U+7fa8-7fae,U+7fb1,U+7fb3-7fb7,U+7fba-7fbb,U+7fbe,U+7fc0,U+7fc2-7fc4,U+7fc6-7fc9,U+7fcb,U+7fcd,U+7fcf-7fd3,U+7fd6-7fd7,U+7fd9-7fde,U+7fe2-7fe4,U+7fe7-7fe8,U+7fea-7fed,U+7fef,U+7ff2,U+7ff4-7ffa,U+7ffd-7fff,U+8002,U+8007-800a,U+800e-800f,U+8011,U+8013,U+801a-801b,U+801d-801f,U+8021,U+8023-8024,U+802b-8030,U+8032,U+8034,U+8039-803a,U+803c,U+803e,U+8040-8041,U+8044-8045,U+8047-8049,U+804e-8051,U+8053,U+8055-8057\",\n },\n },\n {\n uri: _71,\n descriptors: {\n unicodeRange:\n \"U+7cd8,U+7cda-7cdb,U+7cdd-7cde,U+7ce1-7ce7,U+7ce9-7cee,U+7cf0-7cf7,U+7cf9-7cfa,U+7cfc-7d09,U+7d0b-7d1f,U+7d21,U+7d23-7d26,U+7d28-7d2a,U+7d2c-7d2e,U+7d30-7d6d,U+7d6f-7d76,U+7d78-7d94\",\n },\n },\n {\n uri: _72,\n descriptors: {\n unicodeRange:\n \"U+7afe,U+7b00-7b02,U+7b05,U+7b07,U+7b09,U+7b0c-7b0e,U+7b10,U+7b12-7b13,U+7b16-7b18,U+7b1a,U+7b1c-7b1d,U+7b1f,U+7b21-7b23,U+7b27,U+7b29,U+7b2d,U+7b2f-7b30,U+7b32,U+7b34-7b37,U+7b39,U+7b3b,U+7b3d,U+7b3f-7b44,U+7b46,U+7b48,U+7b4a,U+7b4d-7b4e,U+7b53,U+7b55,U+7b57,U+7b59,U+7b5c,U+7b5e-7b5f,U+7b61,U+7b63-7b6d,U+7b6f-7b70,U+7b73-7b74,U+7b76,U+7b78,U+7b7a,U+7b7c-7b7d,U+7b7f,U+7b81-7b84,U+7b86-7b8c,U+7b8e-7b8f,U+7b91-7b93,U+7b96,U+7b98-7b9b,U+7b9e-7ba0,U+7ba3-7ba5,U+7bae-7bb0,U+7bb2-7bb3,U+7bb5-7bb7,U+7bb9-7bc0,U+7bc2-7bc5,U+7bc8-7bcb,U+7bcd-7bd0,U+7bd2,U+7bd4-7bd8,U+7bdb-7bdc,U+7bde-7be0,U+7be2-7be4,U+7be7-7be9,U+7beb-7bed,U+7bef-7bf0,U+7bf2-7bf6,U+7bf8-7bfb,U+7bfd,U+7bff-7c06,U+7c08-7c0a,U+7c0d-7c0e,U+7c10-7c13\",\n },\n },\n {\n uri: _73,\n descriptors: {\n unicodeRange:\n \"U+7a10-7a13,U+7a15-7a16,U+7a18-7a19,U+7a1b-7a1d,U+7a1f,U+7a21-7a22,U+7a24-7a32,U+7a34-7a36,U+7a38,U+7a3a,U+7a3e,U+7a40-7a45,U+7a47-7a50,U+7a52-7a56,U+7a58-7a6f,U+7a71-7a73,U+7a75,U+7a7b-7a7e,U+7a82,U+7a85,U+7a87,U+7a89-7a8c,U+7a8e-7a90,U+7a93-7a94,U+7a99-7a9b,U+7a9e,U+7aa1-7aa4,U+7aa7,U+7aa9-7aab,U+7aae-7ab2,U+7ab4-7abe,U+7ac0-7aca,U+7acc-7ad5,U+7ad7-7ad8,U+7ada-7add,U+7ae1-7ae2,U+7ae4,U+7ae7-7aec,U+7aee,U+7af0-7af8,U+7afb-7afc\",\n },\n },\n {\n uri: _74,\n descriptors: {\n unicodeRange:\n \"U+790d-7912,U+7914-791d,U+791f-7923,U+7925-7933,U+7935-7939,U+793d,U+793f,U+7942-7945,U+7947,U+794a-7952,U+7954-7955,U+7958-7959,U+7961,U+7963-7964,U+7966,U+7969-796c,U+796e,U+7970-7976,U+7979,U+797b-797f,U+7982-7983,U+7986-7989,U+798b-798e,U+7990-7999,U+799b-79a6,U+79a8-79b2,U+79b4-79b8,U+79bc,U+79bf,U+79c2,U+79c4-79c5,U+79c7-79c8,U+79ca,U+79cc,U+79ce-79d0,U+79d3-79d4,U+79d6-79d7,U+79d9-79de,U+79e0-79e2,U+79e5,U+79e8,U+79ea,U+79ec,U+79ee,U+79f1-79f7,U+79f9-79fa,U+79fc,U+79fe-79ff,U+7a01,U+7a04-7a05,U+7a07-7a0a,U+7a0c,U+7a0f\",\n },\n },\n {\n uri: _75,\n descriptors: {\n unicodeRange:\n \"U+77d8-77da,U+77dd-77e1,U+77e4,U+77e6,U+77e8,U+77ea,U+77ef-77f2,U+77f4-77f5,U+77f7,U+77f9-77fc,U+7803-7808,U+780a-780b,U+780e-7810,U+7813,U+7815,U+7819,U+781b,U+781e,U+7820-7822,U+7824,U+7828,U+782a-782b,U+782e-782f,U+7831-7833,U+7835-7836,U+783d,U+783f,U+7841-7844,U+7846,U+7848-784b,U+784d,U+784f,U+7851,U+7853-7854,U+7858-785c,U+785e-7869,U+786f-7876,U+7878-787b,U+787d-7886,U+7888,U+788a-788b,U+788f-7890,U+7892,U+7894-7896,U+7899,U+789d-789e,U+78a0,U+78a2,U+78a4,U+78a6,U+78a8-78af,U+78b5-78b8,U+78ba-78bd,U+78bf-78c0,U+78c2-78c4,U+78c6-78c8,U+78cc-78cf,U+78d1-78d3,U+78d6-78d8,U+78da-78e7,U+78e9-78eb,U+78ed-78f1,U+78f3,U+78f5-78f6,U+78f8-78f9,U+78fb-7900,U+7902-7904,U+7906-790c\",\n },\n },\n {\n uri: _76,\n descriptors: {\n unicodeRange:\n \"U+76af-76b0,U+76b3,U+76b5-76be,U+76c0-76c1,U+76c3-76c4,U+76c7,U+76c9,U+76cb-76cc,U+76d3,U+76d5,U+76d9-76da,U+76dc-76de,U+76e0-76e4,U+76e6-76ed,U+76f0,U+76f3,U+76f5-76f7,U+76fa-76fb,U+76fd,U+76ff-7703,U+7705-7706,U+770a,U+770c,U+770e-7718,U+771b-771e,U+7721,U+7723-7725,U+7727,U+772a-772c,U+772e,U+7730-7734,U+7739,U+773b,U+773d-773f,U+7742,U+7744-7746,U+7748-774f,U+7752-7759,U+775c-7760,U+7764,U+7767,U+7769-776a,U+776d-7778,U+777a-777c,U+7781-7783,U+7786-778b,U+778f-7790,U+7793-779e,U+77a1,U+77a3-77a4,U+77a6,U+77a8,U+77ab,U+77ad-77af,U+77b1-77b2,U+77b4,U+77b6-77ba,U+77bc,U+77be,U+77c0-77cc,U+77ce-77d6\",\n },\n },\n {\n uri: _77,\n descriptors: {\n unicodeRange:\n \"U+7589-758a,U+758c-758e,U+7590,U+7593,U+7595,U+7598,U+759b-759c,U+759e,U+75a2,U+75a6-75aa,U+75ad,U+75b6-75b7,U+75ba-75bb,U+75bf-75c1,U+75c6,U+75cb-75cc,U+75ce-75d1,U+75d3,U+75d7,U+75d9-75da,U+75dc-75dd,U+75df-75e1,U+75e5,U+75e9,U+75ec-75ef,U+75f2-75f3,U+75f5-75f8,U+75fa-75fb,U+75fd-75fe,U+7602,U+7604,U+7606-7609,U+760b,U+760d-760f,U+7611-7614,U+7616,U+761a,U+761c-761e,U+7621,U+7623,U+7627-7628,U+762c,U+762e-762f,U+7631-7632,U+7636-7637,U+7639-763b,U+763d,U+7641-7642,U+7644-764b,U+764e-7653,U+7655,U+7657-765b,U+765d,U+765f-7662,U+7664-766a,U+766c-766e,U+7670-7677,U+7679-767a,U+767c,U+767f-7681,U+7683,U+7685,U+7689-768a,U+768c-768d,U+768f-7690,U+7692,U+7694-7695,U+7697-7698,U+769a-76a3,U+76a5-76ad\",\n },\n },\n {\n uri: _78,\n descriptors: {\n unicodeRange:\n \"U+7492-749b,U+749d,U+749f-74a6,U+74aa-74b9,U+74bb-74d1,U+74d3-74db,U+74dd,U+74df,U+74e1,U+74e5,U+74e7-74ed,U+74f0-74f3,U+74f5,U+74f8-74fe,U+7500-7503,U+7505-750c,U+750e,U+7510,U+7512,U+7514-7517,U+751b,U+751d-751e,U+7520-7524,U+7526-7527,U+752a,U+752e,U+7534,U+7536,U+7539,U+753c-753d,U+753f,U+7541-7544,U+7546-7547,U+7549-754a,U+754d,U+7550-7553,U+7555-7558,U+755d-7564,U+7567-7569,U+756b-7571,U+7573,U+7575-7577,U+757a-757e,U+7580-7582,U+7584-7585,U+7587-7588\",\n },\n },\n {\n uri: _79,\n descriptors: {\n unicodeRange:\n \"U+7372-737d,U+737f-7383,U+7385-7386,U+7388,U+738a,U+738c-738d,U+738f-7390,U+7392-7395,U+7397-739a,U+739c-739e,U+73a0-73a1,U+73a3-73a8,U+73aa,U+73ac-73ad,U+73b1,U+73b4-73b6,U+73b8-73b9,U+73bc-73bf,U+73c1,U+73c3-73c7,U+73cb-73cc,U+73ce,U+73d2-73d8,U+73da-73dd,U+73df,U+73e1-73e4,U+73e6,U+73e8,U+73ea-73ec,U+73ee-73f1,U+73f3-7402,U+7404,U+7407-7408,U+740b-740e,U+7411-7419,U+741c-7421,U+7423-7424,U+7427,U+7429,U+742b,U+742d,U+742f,U+7431-7432,U+7437-743b,U+743d-7440,U+7442-7454,U+7456,U+7458,U+745d,U+7460-746c,U+746e-746f,U+7471-7475,U+7478-747d,U+747f,U+7482,U+7484-7486,U+7488-748a,U+748c-748d,U+748f,U+7491\",\n },\n },\n {\n uri: _80,\n descriptors: {\n unicodeRange:\n \"U+7054-705d,U+705f-706a,U+706e,U+7071-7074,U+7077,U+7079-707b,U+707d,U+7081-7084,U+7086-7088,U+708b-708d,U+708f-7091,U+7093,U+7097-7098,U+709a-709b,U+709e-70aa,U+70b0,U+70b2,U+70b4-70b6,U+70ba,U+70be-70bf,U+70c4-70c7,U+70c9,U+70cb-70d7,U+70da,U+70dc-70de,U+70e0-70e3,U+70e5,U+70ea,U+70ee,U+70f0-70f6,U+70f8,U+70fa-70fc,U+70fe-7108,U+710b-710f,U+7111-7112,U+7114,U+7117,U+711b-7125,U+7127-712e,U+7132-7135,U+7137-7144,U+7146-7149,U+714b,U+714d,U+714f-715b,U+715d,U+715f-7163,U+7165,U+7169-716d,U+716f-7171,U+7174-7177\",\n },\n },\n {\n uri: _81,\n descriptors: {\n unicodeRange:\n \"U+722e-722f,U+7232-7234,U+723a,U+723c,U+723e,U+7240-7246,U+7249-724b,U+724e-7251,U+7253-7255,U+7257-7258,U+725a,U+725c,U+725e,U+7260,U+7263-7265,U+7268,U+726a-726d,U+7270-7271,U+7273-7274,U+7276-7278,U+727b-727d,U+7282-7283,U+7285-7289,U+728c,U+728e,U+7290-7291,U+7293-729e,U+72a0-72ab,U+72ae,U+72b1-72b3,U+72b5,U+72ba-72c0,U+72c5-72c7,U+72c9-72cc,U+72cf,U+72d1,U+72d3-72d6,U+72d8,U+72da-72dd,U+72df,U+72e2-72e7,U+72ea-72eb,U+72f5-72f6,U+72f9,U+72fd-7300,U+7302,U+7304-7309,U+730b-730d,U+730f-7312,U+7314,U+7318-731a,U+731f-7320,U+7323-7324,U+7326-7328,U+732d,U+732f-7330,U+7332-7333,U+7335-7336,U+733a-733d,U+7340-734c,U+734e-734f,U+7351,U+7353-7356,U+7358-735f,U+7361-736b,U+736e,U+7370-7371\",\n },\n },\n {\n uri: _82,\n descriptors: {\n unicodeRange:\n \"U+6ec5-6ec6,U+6ec8-6eca,U+6ecc-6ece,U+6ed0,U+6ed2,U+6ed6,U+6ed8-6ed9,U+6edb-6edd,U+6ee3,U+6ee7,U+6eea-6ef3,U+6ef5-6ef8,U+6efa-6f01,U+6f03-6f05,U+6f07-6f08,U+6f0a-6f0e,U+6f10-6f12,U+6f16-6f1f,U+6f21-6f23,U+6f25-6f28,U+6f2c,U+6f2e,U+6f30,U+6f32,U+6f34-6f35,U+6f37-6f3d,U+6f3f-6f45,U+6f48-6f4a,U+6f4c,U+6f4e-6f57,U+6f59-6f5b,U+6f5d,U+6f5f-6f61,U+6f63-6f65,U+6f67-6f6c,U+6f6f-6f71,U+6f73,U+6f75-6f77,U+6f79,U+6f7b,U+6f7d-6f83,U+6f85-6f87,U+6f8a-6f8b,U+6f8f-6f9b,U+6f9d-6fa0,U+6fa2-6fa6,U+6fa8-6fb1\",\n },\n },\n {\n uri: _83,\n descriptors: {\n unicodeRange:\n \"U+6d73,U+6d75-6d76,U+6d79-6d7b,U+6d7d-6d81,U+6d83-6d84,U+6d86-6d87,U+6d8a-6d8b,U+6d8d,U+6d8f-6d90,U+6d92,U+6d96-6d9a,U+6d9c,U+6da2,U+6da5,U+6dac-6dad,U+6db0-6db1,U+6db3-6db4,U+6db6-6db7,U+6db9-6dbe,U+6dc1-6dc3,U+6dc8-6dca,U+6dcd-6dd0,U+6dd2-6dd5,U+6dd7,U+6dda-6ddc,U+6ddf,U+6de2-6de3,U+6de5,U+6de7-6dea,U+6ded,U+6def-6df0,U+6df2,U+6df4-6df6,U+6df8,U+6dfa,U+6dfd-6e04,U+6e06-6e09,U+6e0b,U+6e0f,U+6e12-6e13,U+6e15,U+6e18-6e19,U+6e1b-6e1c,U+6e1e-6e1f,U+6e22,U+6e26-6e28,U+6e2a,U+6e2c,U+6e2e,U+6e30-6e31,U+6e33,U+6e35-6e37,U+6e39,U+6e3b-6e42,U+6e45-6e4c,U+6e4f-6e52,U+6e55,U+6e57,U+6e59-6e5a,U+6e5c-6e5e,U+6e60-6e6a,U+6e6c-6e6d,U+6e6f-6e7d,U+6e80-6e82,U+6e84,U+6e87-6e88,U+6e8a-6e8e,U+6e91-6e97,U+6e99-6e9b,U+6e9d-6e9e,U+6ea0-6ea1,U+6ea3-6ea4,U+6ea6,U+6ea8-6ea9,U+6eab-6eae,U+6eb0,U+6eb3,U+6eb5,U+6eb8-6eb9,U+6ebc,U+6ebe-6ec0,U+6ec3-6ec4\",\n },\n },\n {\n uri: _84,\n descriptors: {\n unicodeRange:\n \"U+6bbb-6bbe,U+6bc0,U+6bc3-6bc4,U+6bc6-6bca,U+6bcc,U+6bce,U+6bd0-6bd1,U+6bd8,U+6bda,U+6bdc-6be0,U+6be2-6be9,U+6bec-6bee,U+6bf0-6bf2,U+6bf4,U+6bf6-6bf8,U+6bfa-6bfc,U+6bfe-6c04,U+6c08-6c0c,U+6c0e,U+6c12,U+6c17,U+6c1c-6c1e,U+6c20,U+6c23,U+6c25,U+6c2b-6c2d,U+6c31,U+6c33,U+6c36-6c37,U+6c39-6c3c,U+6c3e-6c3f,U+6c43-6c45,U+6c48,U+6c4b-6c4f,U+6c51-6c53,U+6c56,U+6c58-6c5a,U+6c62-6c63,U+6c65-6c67,U+6c6b-6c6f,U+6c71,U+6c73,U+6c75,U+6c77-6c78,U+6c7a-6c7c,U+6c7f-6c80,U+6c84,U+6c87,U+6c8a-6c8b,U+6c8d-6c8e,U+6c91-6c92,U+6c95-6c98,U+6c9a,U+6c9c-6c9e,U+6ca0,U+6ca2,U+6ca8,U+6cac,U+6caf-6cb0,U+6cb4-6cb7,U+6cba,U+6cc0-6cc3,U+6cc6-6cc8,U+6ccb,U+6ccd-6ccf,U+6cd1-6cd2,U+6cd8-6cda,U+6cdc-6cdd,U+6cdf,U+6ce4,U+6ce6-6ce7,U+6ce9,U+6cec-6ced,U+6cf2,U+6cf4,U+6cf9,U+6cff-6d00,U+6d02-6d03,U+6d05-6d06,U+6d08-6d0a,U+6d0d,U+6d0f-6d11,U+6d13-6d16,U+6d18,U+6d1c-6d1d,U+6d1f-6d24,U+6d26,U+6d28-6d29,U+6d2c-6d2d,U+6d2f-6d30,U+6d34,U+6d36-6d38,U+6d3a,U+6d3f-6d40,U+6d42,U+6d44,U+6d49,U+6d4c,U+6d50,U+6d55-6d58,U+6d5b,U+6d5d,U+6d5f,U+6d61-6d62,U+6d64-6d65,U+6d67-6d68,U+6d6b-6d6d,U+6d70-6d72\",\n },\n },\n {\n uri: _85,\n descriptors: {\n unicodeRange:\n \"U+6967-696a,U+696c-696d,U+696f-6970,U+6972-6976,U+697a-697b,U+697d-697f,U+6981,U+6983,U+6985,U+698a-698c,U+698e-6993,U+6996-6997,U+6999-699a,U+699d-69a6,U+69a9-69aa,U+69ac,U+69ae-69b0,U+69b2-69b3,U+69b5-69b6,U+69b8-69ba,U+69bc-69c0,U+69c2-69c9,U+69cb,U+69cd,U+69cf,U+69d1-69d3,U+69d5-69da,U+69dc-69de,U+69e1-69ec,U+69ee-69f1,U+69f3-69fc,U+69fe,U+6a00-6a09,U+6a0b-6a16,U+6a19-6a1e,U+6a20,U+6a22-6a27,U+6a29,U+6a2b-6a2e,U+6a30,U+6a32-6a34,U+6a36-6a3c,U+6a3f-6a43,U+6a45-6a46,U+6a48-6a4a\",\n },\n },\n {\n uri: _86,\n descriptors: {\n unicodeRange:\n \"U+6830-6831,U+6834-6836,U+683a-683b,U+683f,U+6847,U+684b,U+684d,U+684f,U+6852,U+6856-685f,U+686a,U+686c-6873,U+6875,U+6878-6880,U+6882,U+6884,U+6887-688e,U+6890-6892,U+6894-6896,U+6898-68a1,U+68a3-68a5,U+68a9-68ac,U+68ae,U+68b1-68b2,U+68b4,U+68b6-68bf,U+68c1,U+68c3-68c8,U+68ca,U+68cc,U+68ce-68d1,U+68d3-68d4,U+68d6-68d7,U+68d9,U+68db-68df,U+68e1-68e2,U+68e4-68ed,U+68ef,U+68f2-68f4,U+68f6-68f8,U+68fb,U+68fd-6900,U+6902-6904,U+6906-690a,U+690c,U+690f,U+6911,U+6913-691e,U+6921-6923,U+6925-692c,U+692e-692f,U+6931-6933,U+6935-6938,U+693a-693c,U+693e,U+6940-6941,U+6943-6953,U+6955-6956,U+6958-6959,U+695b-695c,U+695f,U+6961-6962,U+6964-6965\",\n },\n },\n {\n uri: _87,\n descriptors: {\n unicodeRange:\n \"U+66b8,U+66ba-66bd,U+66bf-66d8,U+66da,U+66de-66e5,U+66e7-66e8,U+66ea-66ef,U+66f1,U+66f5-66f6,U+66f8,U+66fa-66fb,U+66fd,U+6701-6707,U+670c,U+670e-670f,U+6711-6713,U+6716,U+6718-671a,U+671c,U+671e,U+6720-6725,U+6727,U+6729,U+672e,U+6730,U+6732-6733,U+6736-6739,U+673b-673c,U+673e-673f,U+6741,U+6744-6745,U+6747,U+674a-674b,U+674d,U+6752,U+6754-6755,U+6757-675b,U+675d,U+6762-6764,U+6766-6767,U+676b-676c,U+676e,U+6771,U+6774,U+6776,U+6778-677b,U+677d,U+6780,U+6782-6783,U+6785-6786,U+6788,U+678a,U+678c-678f,U+6791-6794,U+6796,U+6799,U+679b,U+679f-67a1,U+67a4,U+67a6,U+67a9,U+67ac,U+67ae,U+67b1-67b2,U+67b4,U+67b9-67c0,U+67c2,U+67c5-67ce,U+67d5-67d7,U+67db,U+67df,U+67e1,U+67e3-67e4,U+67e6-67e8,U+67ea-67eb,U+67ed-67ee,U+67f2,U+67f5-67fc,U+67fe,U+6801-6804,U+6806,U+680d,U+6810,U+6812,U+6814-6815,U+6818-681c,U+681e-6820,U+6822-6828,U+682b-682f\",\n },\n },\n {\n uri: _88,\n descriptors: {\n unicodeRange:\n \"U+6569-656a,U+656d-656f,U+6571,U+6573,U+6575-6576,U+6578-6586,U+6588-658a,U+658d-658f,U+6592,U+6594-6596,U+6598,U+659a,U+659d-659e,U+65a0,U+65a2-65a3,U+65a6,U+65a8,U+65aa,U+65ac,U+65ae,U+65b1-65b8,U+65ba-65bb,U+65be-65c0,U+65c2,U+65c7-65ca,U+65cd,U+65d0-65d1,U+65d3-65d5,U+65d8-65df,U+65e1,U+65e3-65e4,U+65ea-65eb,U+65f2-65f5,U+65f8-65f9,U+65fb-65ff,U+6601,U+6604-6605,U+6607-6609,U+660b,U+660d,U+6610-6612,U+6616-6618,U+661a-661c,U+661e,U+6621-6624,U+6626,U+6629-662c,U+662e,U+6630,U+6632-6633,U+6637-663b,U+663d,U+663f-6640,U+6642,U+6644-664a,U+664d-664e,U+6650-6651,U+6658-6659,U+665b-665e,U+6660,U+6662-6663,U+6665,U+6667,U+6669-666d,U+6671-6673,U+6675,U+6678-6679,U+667b-667d,U+667f-6681,U+6683,U+6685-6686,U+6688-668b,U+668d-6690,U+6692-6695,U+6698-669c,U+669e-66a6,U+66a9-66ad,U+66af-66b3,U+66b5-66b7\",\n },\n },\n {\n uri: _89,\n descriptors: {\n unicodeRange:\n \"U+5f30,U+5f32-5f38,U+5f3b,U+5f3d-5f3f,U+5f41-5f4f,U+5f51,U+5f54,U+5f59-5f5c,U+5f5e-5f60,U+5f63,U+5f65,U+5f67-5f68,U+5f6b,U+5f6e-5f6f,U+5f72,U+5f74-5f76,U+5f78,U+5f7a,U+5f7d-5f7f,U+5f83,U+5f86,U+5f8d-5f8f,U+5f91,U+5f93-5f94,U+5f96,U+5f9a-5f9b,U+5f9d-5fa0,U+5fa2-5fa7,U+5fa9,U+5fab-5fac,U+5faf-5fb4,U+5fb6,U+5fb8-5fbb,U+5fbe-5fc2,U+5fc7-5fc8,U+5fca-5fcb,U+5fce,U+5fd3-5fd5,U+5fda-5fdc,U+5fde-5fdf,U+5fe2-5fe3,U+5fe5-5fe6,U+5fe8-5fe9,U+5fec,U+5fef-5ff0,U+5ff2-5ff4,U+5ff6-5ff7,U+5ff9-5ffa,U+5ffc,U+6007-6009,U+600b-600c,U+6010-6011,U+6013,U+6017-6018,U+601a,U+601e-601f,U+6022-6024,U+602c-602e,U+6030-6034,U+6036-603a,U+603d-603e,U+6040,U+6044-604a,U+604c,U+604e-604f,U+6051,U+6053-6054,U+6056-6058,U+605b-605c,U+605e-6061,U+6065-6066,U+606e,U+6071-6072,U+6074-6075,U+6077,U+607e,U+6080-6082,U+6085-6088,U+608a-608b,U+608e-6091,U+6093,U+6095,U+6097-6099,U+609c,U+609e,U+60a1-60a2,U+60a4-60a5,U+60a7,U+60a9-60aa,U+60ae,U+60b0,U+60b3,U+60b5-60b7,U+60b9-60ba,U+60bd-60c4,U+60c7-60c9,U+60cc\",\n },\n },\n {\n uri: _90,\n descriptors: {\n unicodeRange:\n \"U+635a-635d,U+6360,U+6364-6366,U+6368,U+636a-636c,U+636f-6370,U+6372-6375,U+6378-6379,U+637c-637f,U+6381,U+6383-6386,U+638b,U+638d,U+6391,U+6393-6395,U+6397,U+6399-639f,U+63a1,U+63a4,U+63a6,U+63ab,U+63af,U+63b1-63b2,U+63b5-63b6,U+63b9,U+63bb,U+63bd,U+63bf-63c3,U+63c5,U+63c7-63c8,U+63ca-63cc,U+63d1,U+63d3-63d5,U+63d7-63dd,U+63df,U+63e2,U+63e4-63e8,U+63eb-63ec,U+63ee-63f1,U+63f3,U+63f5,U+63f7,U+63f9-63fc,U+63fe,U+6403-6404,U+6406-640a,U+640d-640e,U+6411-6412,U+6415-641a,U+641d,U+641f,U+6422-6425,U+6427-6429,U+642b,U+642e-6433,U+6435-6439,U+643b-643c,U+643e,U+6440,U+6442-6443,U+6449,U+644b-6451,U+6453,U+6455-6457,U+6459-645d,U+645f-6466,U+6468,U+646a-646c,U+646e-6477,U+647b-6481,U+6483,U+6486,U+6488-648f\",\n },\n },\n {\n uri: _91,\n descriptors: {\n unicodeRange:\n \"U+61c5-61c7,U+61c9,U+61cc-61d0,U+61d3,U+61d5-61e5,U+61e7-61f4,U+61f6-61fe,U+6200-6205,U+6207,U+6209,U+6213-6214,U+6219,U+621c-621e,U+6220,U+6223,U+6226-6229,U+622b,U+622d,U+622f-6232,U+6235-6236,U+6238-623c,U+6242,U+6244-6246,U+624a,U+624f-6250,U+6255-6257,U+6259-625a,U+625c-6262,U+6264-6265,U+6268,U+6271-6272,U+6274-6275,U+6277-6278,U+627a-627b,U+627d,U+6281-6283,U+6285-6288,U+628b-6290,U+6294,U+6299,U+629c-629e,U+62a3,U+62a6-62a7,U+62a9-62aa,U+62ad-62b0,U+62b2-62b4,U+62b6-62b8,U+62ba,U+62be,U+62c0-62c1,U+62c3,U+62cb,U+62cf,U+62d1,U+62d5,U+62dd-62de,U+62e0-62e1,U+62e4,U+62ea-62eb,U+62f0,U+62f2,U+62f5,U+62f8-62fb,U+6300,U+6303-6306,U+630a-630d,U+630f-6310,U+6312-6315,U+6317-6319,U+631c,U+6326-6327,U+6329,U+632c-632e,U+6330-6331,U+6333-6338,U+633b-633c,U+633e-6341,U+6344,U+6347-6348,U+634a,U+6351-6354,U+6356-6359\",\n },\n },\n {\n uri: _92,\n descriptors: {\n unicodeRange:\n \"U+5dd0-5dda,U+5ddc,U+5ddf-5de0,U+5de3-5de4,U+5dea,U+5dec-5ded,U+5df0,U+5df5-5df6,U+5df8-5dfc,U+5dff-5e00,U+5e04,U+5e07,U+5e09-5e0b,U+5e0d-5e0e,U+5e12-5e13,U+5e17,U+5e1e-5e25,U+5e28-5e2c,U+5e2f-5e30,U+5e32-5e36,U+5e39-5e3a,U+5e3e-5e41,U+5e43,U+5e46-5e4b,U+5e4d-5e53,U+5e56-5e5a,U+5e5c-5e5d,U+5e5f-5e60,U+5e63-5e71,U+5e75,U+5e77,U+5e79,U+5e7e,U+5e81-5e83,U+5e85,U+5e88-5e89,U+5e8c-5e8e,U+5e92,U+5e98,U+5e9b,U+5e9d,U+5ea1-5ea4,U+5ea8-5eac,U+5eae-5eb2,U+5eb4,U+5eba-5ebd,U+5ebf-5ec8,U+5ecb-5ed0,U+5ed4-5ed5,U+5ed7-5eda,U+5edc-5ee7,U+5ee9,U+5eeb-5ef3,U+5ef5,U+5ef8-5ef9,U+5efb-5efd,U+5f05-5f07,U+5f09,U+5f0c-5f0e,U+5f10,U+5f12,U+5f14,U+5f16,U+5f19-5f1a,U+5f1c-5f1e,U+5f21-5f24,U+5f28,U+5f2b-5f2c,U+5f2e\",\n },\n },\n {\n uri: _93,\n descriptors: {\n unicodeRange:\n \"U+60cd-60d0,U+60d2-60d4,U+60d6-60d7,U+60d9,U+60db,U+60de,U+60e1-60e5,U+60ea,U+60f1-60f2,U+60f5,U+60f7-60f8,U+60fb-60ff,U+6102-6105,U+6107,U+610a-610c,U+6110-6114,U+6116-6119,U+611b-611e,U+6121-6122,U+6125,U+6128-612a,U+612c-613e,U+6140-6147,U+6149,U+614b,U+614d,U+614f-6150,U+6152-6154,U+6156-615c,U+615e-6161,U+6163-6166,U+6169-616f,U+6171-6174,U+6176,U+6178-618a,U+618c-618d,U+618f-6193,U+6195-619c,U+619e-61a6,U+61aa-61ab,U+61ad-61b6,U+61b8-61bd,U+61bf-61c1,U+61c3-61c4\",\n },\n },\n {\n uri: _94,\n descriptors: {\n unicodeRange:\n \"U+5cf4-5cfa,U+5cfc-5d01,U+5d04-5d05,U+5d08-5d0d,U+5d0f-5d13,U+5d15,U+5d17-5d1a,U+5d1c-5d1d,U+5d1f-5d23,U+5d25,U+5d28,U+5d2a-5d2c,U+5d2f-5d33,U+5d35-5d3c,U+5d3f-5d46,U+5d48-5d49,U+5d4d-5d57,U+5d59-5d5a,U+5d5c,U+5d5e-5d68,U+5d6a,U+5d6d-5d6e,U+5d70-5d73,U+5d75-5d81,U+5d83-5d98,U+5d9a-5d9c,U+5d9e-5db6,U+5db8-5dc4,U+5dc6-5dcc,U+5dce-5dcf\",\n },\n },\n {\n uri: _95,\n descriptors: {\n unicodeRange:\n \"U+5b52,U+5b56,U+5b5e,U+5b60-5b61,U+5b67-5b68,U+5b6b,U+5b6d-5b6f,U+5b72,U+5b74,U+5b76-5b79,U+5b7b-5b7c,U+5b7e-5b7f,U+5b82,U+5b86,U+5b8a,U+5b8d-5b8e,U+5b90-5b92,U+5b94,U+5b96,U+5b9f,U+5ba7-5ba9,U+5bac-5baf,U+5bb1-5bb2,U+5bb7,U+5bba-5bbc,U+5bc0-5bc1,U+5bc3,U+5bc8-5bcb,U+5bcd-5bcf,U+5bd1,U+5bd4-5bdc,U+5be0,U+5be2-5be3,U+5be6-5be7,U+5be9-5bed,U+5bef,U+5bf1-5bf7,U+5bfd-5bfe,U+5c00,U+5c02-5c03,U+5c05,U+5c07-5c08,U+5c0b-5c0e,U+5c10,U+5c12-5c13,U+5c17,U+5c19,U+5c1b,U+5c1e-5c21,U+5c23,U+5c26,U+5c28-5c2b,U+5c2d-5c30,U+5c32-5c33,U+5c35-5c37,U+5c43-5c44,U+5c46-5c47,U+5c4c-5c4d,U+5c52-5c54,U+5c56-5c58,U+5c5a-5c5d,U+5c5f,U+5c62,U+5c64,U+5c67-5c6d,U+5c70,U+5c72-5c78,U+5c7b-5c7e,U+5c80,U+5c83-5c87,U+5c89-5c8b,U+5c8e-5c8f,U+5c92-5c93,U+5c95,U+5c9d-5ca1,U+5ca4-5ca8,U+5caa,U+5cae-5cb0,U+5cb2,U+5cb4,U+5cb6,U+5cb9-5cbc,U+5cbe,U+5cc0,U+5cc2-5cc3,U+5cc5-5cca,U+5ccc-5cd1,U+5cd3-5cd8,U+5cda-5ce0,U+5ce2-5ce3,U+5ce7,U+5ce9,U+5ceb-5cec,U+5cee-5cef,U+5cf1-5cf3\",\n },\n },\n {\n uri: _96,\n descriptors: {\n unicodeRange:\n \"U+593b,U+593d-5940,U+5943,U+5945-5946,U+594a,U+594c-594d,U+5950,U+5952-5953,U+5959,U+595b-595f,U+5961,U+5963-5964,U+5966-5972,U+5975,U+5977,U+597a-597c,U+597e-5980,U+5985,U+5989,U+598b-598c,U+598e-5991,U+5994-5995,U+5998,U+599a-599d,U+599f-59a2,U+59a6-59a7,U+59ac-59ad,U+59b0-59b1,U+59b3-59b8,U+59ba,U+59bc-59bd,U+59bf-59c5,U+59c7-59c9,U+59cc-59cf,U+59d5-59d6,U+59d9,U+59db,U+59de-59e2,U+59e4,U+59e6-59e7,U+59e9-59eb,U+59ed-59f8,U+59fa,U+59fc-59fe,U+5a00,U+5a02,U+5a0a-5a0b,U+5a0d-5a10,U+5a12,U+5a14-5a17,U+5a19-5a1b,U+5a1d-5a1e,U+5a21-5a22,U+5a24,U+5a26-5a28,U+5a2a-5a30,U+5a33,U+5a35,U+5a37-5a3b,U+5a3d-5a3f,U+5a41-5a45,U+5a47-5a48,U+5a4b-5a54,U+5a56-5a59,U+5a5b-5a61,U+5a63-5a66,U+5a68-5a69,U+5a6b-5a73,U+5a78-5a79,U+5a7b-5a7e,U+5a80-5a90\",\n },\n },\n {\n uri: _97,\n descriptors: {\n unicodeRange:\n \"U+5a91,U+5a93-5a99,U+5a9c-5aa9,U+5aab-5ab1,U+5ab4,U+5ab6-5ab7,U+5ab9-5abd,U+5abf-5ac0,U+5ac3-5ac8,U+5aca-5acb,U+5acd-5ad1,U+5ad3,U+5ad5,U+5ad7,U+5ad9-5adb,U+5add-5adf,U+5ae2,U+5ae4-5ae5,U+5ae7-5ae8,U+5aea,U+5aec-5af0,U+5af2-5b08,U+5b0a-5b15,U+5b18-5b31,U+5b33,U+5b35-5b36,U+5b38-5b3f,U+5b41-5b4f\",\n },\n },\n {\n uri: _98,\n descriptors: {\n unicodeRange:\n \"U+5843,U+5845-584b,U+584e-5850,U+5852-5853,U+5855-5857,U+5859-585d,U+585f-5864,U+5866-586a,U+586d-587d,U+587f,U+5882,U+5884,U+5886-5888,U+588a-5891,U+5894-5898,U+589b-589d,U+58a0-58a7,U+58aa-58bb,U+58bd-58c0,U+58c2-58c4,U+58c6-58d0,U+58d2-58d4,U+58d6-58e3,U+58e5-58ea,U+58ed,U+58ef,U+58f1-58f2,U+58f4-58f5,U+58f7-58f8,U+58fa-5901,U+5903,U+5905-5906,U+5908-590c,U+590e,U+5910-5913,U+5917-5918,U+591b,U+591d-591e,U+5920-5923,U+5926,U+5928,U+592c,U+5930,U+5932-5933,U+5935-5936\",\n },\n },\n {\n uri: _99,\n descriptors: {\n unicodeRange:\n \"U+56d0-56d3,U+56d5-56d6,U+56d8-56d9,U+56dc,U+56e3,U+56e5-56ea,U+56ec,U+56ee-56ef,U+56f2-56f3,U+56f6-56f8,U+56fb-56fc,U+5700-5702,U+5705,U+5707,U+570b-571b,U+571d-571e,U+5720-5722,U+5724-5727,U+572b,U+5731-5732,U+5734-5738,U+573c-573d,U+573f,U+5741,U+5743-5746,U+5748-5749,U+574b,U+5752-5756,U+5758-5759,U+5762-5763,U+5765,U+5767,U+576c,U+576e,U+5770-5772,U+5774-5775,U+5778-577a,U+577d-5781,U+5787-578a,U+578d-5791,U+5794-579a,U+579c-579f,U+57a5,U+57a8,U+57aa,U+57ac,U+57af-57b1,U+57b3,U+57b5-57b7,U+57b9-57c1,U+57c4-57ca,U+57cc-57cd,U+57d0-57d1,U+57d3,U+57d6-57d7,U+57db-57dc,U+57de,U+57e1-57e3,U+57e5-57ec,U+57ee,U+57f0-57f3,U+57f5-57f7,U+57fb-57fc,U+57fe-57ff,U+5801,U+5803-5805,U+5808-580a,U+580c,U+580e-5810,U+5812-5814,U+5816-5818,U+581a-581d,U+581f,U+5822-5823,U+5825-5829,U+582b-582f,U+5831-5834,U+5836-5842\",\n },\n },\n {\n uri: _100,\n descriptors: {\n unicodeRange:\n \"U+55f9-55fc,U+55ff,U+5602-5607,U+560a-560b,U+560d,U+5610-5617,U+5619-561a,U+561c-561d,U+5620-5622,U+5625-5626,U+5628-562b,U+562e-5630,U+5633,U+5635,U+5637-5638,U+563a,U+563c-563e,U+5640-564b,U+564f-5653,U+5655-5656,U+565a-565b,U+565d-5661,U+5663,U+5665-5667,U+566d-5670,U+5672-5675,U+5677-567a,U+567d-5684,U+5687-568d,U+5690-5692,U+5694-56a2,U+56a4-56ae,U+56b0-56b6,U+56b8-56bb,U+56bd-56c9,U+56cb-56cf\",\n },\n },\n {\n uri: _101,\n descriptors: {\n unicodeRange:\n \"U+5286-5287,U+5289-528f,U+5291-5292,U+5294-529a,U+529c,U+52a4-52a7,U+52ae-52b0,U+52b4-52bd,U+52c0-52c2,U+52c4-52c6,U+52c8,U+52ca,U+52cc-52cf,U+52d1,U+52d3-52d5,U+52d7,U+52d9-52de,U+52e0-52e3,U+52e5-52ef,U+52f1-52f8,U+52fb-52fd,U+5301-5304,U+5307,U+5309-530c,U+530e,U+5311-5314,U+5318,U+531b-531c,U+531e-531f,U+5322,U+5324-5325,U+5327-5329,U+532b-532d,U+532f-5338,U+533c-533d,U+5340,U+5342,U+5344,U+5346,U+534b-534d,U+5350,U+5354,U+5358-5359,U+535b,U+535d,U+5365,U+5368,U+536a,U+536c-536d,U+5372,U+5376,U+5379,U+537b-537e,U+5380-5381,U+5383,U+5387-5388,U+538a,U+538e-5394,U+5396-5397,U+5399,U+539b-539c,U+539e,U+53a0-53a1,U+53a4,U+53a7,U+53aa-53ad,U+53af-53b5,U+53b7-53ba,U+53bc-53be,U+53c0,U+53c3-53c7,U+53ce-53d0,U+53d2-53d3,U+53d5,U+53da,U+53dc-53de,U+53e1-53e2,U+53e7,U+53f4,U+53fa,U+53fe-5400,U+5402,U+5405,U+5407,U+540b,U+5414,U+5418-541a,U+541c,U+5422,U+5424-5425,U+542a,U+5430,U+5433,U+5436-5437,U+543a\",\n },\n },\n {\n uri: _102,\n descriptors: {\n unicodeRange:\n \"U+5101-5105,U+5108-510a,U+510c-5111,U+5113-5120,U+5122-513e,U+5142,U+5147,U+514a,U+514c,U+514e-5150,U+5152-5153,U+5157-5159,U+515b,U+515d-5161,U+5163-5164,U+5166-5167,U+5169-516a,U+516f,U+5172,U+517a,U+517e-517f,U+5183-5184,U+5186-5187,U+518a-518b,U+518e-5191,U+5193-5194,U+5198,U+519a,U+519d-519f,U+51a1,U+51a3,U+51a6-51aa,U+51ad-51ae,U+51b4,U+51b8-51ba,U+51be-51bf,U+51c1-51c3,U+51c5,U+51c8,U+51ca,U+51cd-51ce,U+51d0,U+51d2-51da,U+51dc,U+51de-51df,U+51e2-51e3,U+51e5-51ea,U+51ec,U+51ee,U+51f1-51f2,U+51f4,U+51f7,U+51fe,U+5204-5205,U+5209,U+520b-520c,U+520f-5210,U+5213-5215,U+521c,U+521e-521f,U+5221-5223,U+5225-5227,U+522a,U+522c,U+522f,U+5231-5232,U+5234-5235,U+523c,U+523e,U+5244-5249,U+524b,U+524e-524f,U+5252-5253,U+5255,U+5257-525b,U+525d,U+525f-5260,U+5262-5264,U+5266,U+5268,U+526b-526e,U+5270-5271,U+5273-527c,U+527e,U+5280,U+5283-5285\",\n },\n },\n {\n uri: _103,\n descriptors: {\n unicodeRange:\n \"U+543d,U+543f,U+5441-5442,U+5444-5445,U+5447,U+5449,U+544c-544f,U+5451,U+545a,U+545d-5461,U+5463,U+5465,U+5467,U+5469-5470,U+5474,U+5479-547a,U+547e-547f,U+5481,U+5483,U+5485,U+5487-548a,U+548d,U+5491,U+5493,U+5497-5498,U+549c,U+549e-54a2,U+54a5,U+54ae,U+54b0,U+54b2,U+54b5-54b7,U+54b9-54ba,U+54bc,U+54be,U+54c3,U+54c5,U+54ca-54cb,U+54d6,U+54d8,U+54db,U+54e0-54e4,U+54eb-54ec,U+54ef-54f1,U+54f4-54f9,U+54fb,U+54fe,U+5500,U+5502-5505,U+5508,U+550a-550e,U+5512-5513,U+5515-551a,U+551c-551f,U+5521,U+5525-5526,U+5528-5529,U+552b,U+552d,U+5532,U+5534-5536,U+5538-553b,U+553d,U+5540,U+5542,U+5545,U+5547-5548,U+554b-554f,U+5551-5554,U+5557-555b,U+555d-5560,U+5562-5563,U+5568-5569,U+556b,U+556f-5574,U+5579-557a,U+557d,U+557f,U+5585-5586,U+558c-558e,U+5590,U+5592-5593,U+5595-5597,U+559a-559b,U+559e,U+55a0-55a6,U+55a8-55b0,U+55b2,U+55b4,U+55b6,U+55b8,U+55ba,U+55bc,U+55bf-55c3,U+55c6-55c8,U+55ca-55cb,U+55ce-55d0,U+55d5,U+55d7-55db,U+55de,U+55e0,U+55e2,U+55e7,U+55e9,U+55ed-55ee,U+55f0-55f1,U+55f4,U+55f6,U+55f8\",\n },\n },\n {\n uri: _104,\n descriptors: {\n unicodeRange:\n \"U+4fe0,U+4fe2,U+4fe4-4fe5,U+4fe7,U+4feb-4fec,U+4ff0,U+4ff2,U+4ff4-4ff7,U+4ff9,U+4ffb-4ffd,U+4fff-500b,U+500e,U+5010-5011,U+5013,U+5015-5017,U+501b,U+501d-501e,U+5020,U+5022-5024,U+5027,U+502b,U+502f-5039,U+503b,U+503d,U+503f-5042,U+5044-5046,U+5049-504b,U+504d,U+5050-5054,U+5056-5059,U+505b,U+505d-5064,U+5066-506b,U+506d-5075,U+5078-507a,U+507c-507d,U+5081-5084,U+5086-5087,U+5089-508c,U+508e-50a2,U+50a4,U+50a6,U+50aa-50ab,U+50ad-50b1,U+50b3-50b9,U+50bc-50ce,U+50d0-50d5,U+50d7-50d9,U+50db-50e5,U+50e8-50eb,U+50ef-50f2,U+50f4,U+50f6-50fa,U+50fc-5100\",\n },\n },\n { uri: _105, descriptors: { unicodeRange: \"U+49d5-4a77\" } },\n {\n uri: _106,\n descriptors: {\n unicodeRange:\n \"U+4dac-4dad,U+4daf-4db5,U+4e02,U+4e04-4e06,U+4e0f,U+4e12,U+4e17,U+4e1f-4e21,U+4e23,U+4e26,U+4e29,U+4e2e-4e2f,U+4e31,U+4e33,U+4e35,U+4e37,U+4e3c,U+4e40-4e42,U+4e44,U+4e46,U+4e4a,U+4e51,U+4e55,U+4e57,U+4e5a-4e5b,U+4e62-4e65,U+4e67-4e68,U+4e6a-4e6f,U+4e72,U+4e74-4e7d,U+4e7f-4e85,U+4e87,U+4e8a,U+4e90,U+4e96-4e97,U+4e99,U+4e9c-4e9e,U+4ea3,U+4eaa,U+4eaf-4eb1,U+4eb4,U+4eb6-4eb9,U+4ebc-4ebe,U+4ec8,U+4ecc,U+4ecf-4ed0,U+4ed2,U+4eda-4edc,U+4ee0,U+4ee2,U+4ee6-4ee7,U+4ee9,U+4eed-4eef,U+4ef1,U+4ef4,U+4ef8-4efa,U+4efc,U+4efe,U+4f00,U+4f02-4f08,U+4f0b-4f0c,U+4f12-4f16,U+4f1c-4f1d,U+4f21,U+4f23,U+4f28-4f29,U+4f2c-4f2e,U+4f31,U+4f33,U+4f35,U+4f37,U+4f39,U+4f3b,U+4f3e-4f42,U+4f44-4f45,U+4f47-4f4c,U+4f52,U+4f54,U+4f56,U+4f61-4f62,U+4f66,U+4f68,U+4f6a-4f6b,U+4f6d-4f6e,U+4f71-4f72,U+4f75,U+4f77-4f7a,U+4f7d,U+4f80-4f82,U+4f85-4f87,U+4f8a,U+4f8c,U+4f8e,U+4f90,U+4f92-4f93,U+4f95-4f96,U+4f98-4f9a,U+4f9c,U+4f9e-4f9f,U+4fa1-4fa2,U+4fa4,U+4fab,U+4fad,U+4fb0-4fb4,U+4fb6-4fbe,U+4fc0-4fc2,U+4fc6-4fc9,U+4fcb-4fcd,U+4fd2-4fd6,U+4fd9,U+4fdb\",\n },\n },\n { uri: _107, descriptors: { unicodeRange: \"U+4933-49d4\" } },\n { uri: _108, descriptors: { unicodeRange: \"U+487a-4932\" } },\n {\n uri: _109,\n descriptors: { unicodeRange: \"U+47d2-4879,U+2ce7c,U+2ce88,U+2ce93\" },\n },\n {\n uri: _110,\n descriptors: {\n unicodeRange:\n \"U+4756-47d1,U+2ca02,U+2ca0e,U+2ca7d,U+2caa9,U+2cb29,U+2cb2e,U+2cb31,U+2cb38-2cb39,U+2cb3f,U+2cb41,U+2cb4e,U+2cb5a,U+2cb64,U+2cb69,U+2cb6c,U+2cb6f,U+2cb76,U+2cb78,U+2cb7c,U+2cbb1,U+2cbbf-2cbc0,U+2cbce,U+2cc5f,U+2ccf5-2ccf6,U+2ccfd,U+2ccff,U+2cd02-2cd03,U+2cd0a,U+2cd8b,U+2cd8d,U+2cd8f-2cd90,U+2cd9f-2cda0,U+2cda8,U+2cdad-2cdae,U+2cdd5,U+2ce18,U+2ce1a,U+2ce23,U+2ce26,U+2ce2a\",\n },\n },\n {\n uri: _111,\n descriptors: {\n unicodeRange:\n \"U+46c3-4755,U+2c488,U+2c494,U+2c497,U+2c542,U+2c613,U+2c618,U+2c621,U+2c629,U+2c62b-2c62d,U+2c62f,U+2c642,U+2c64a-2c64b,U+2c72c,U+2c72f,U+2c79f,U+2c7c1,U+2c7fd,U+2c8d9,U+2c8de,U+2c8e1,U+2c8f3,U+2c907,U+2c90a,U+2c91d\",\n },\n },\n {\n uri: _112,\n descriptors: {\n unicodeRange:\n \"U+4629-46c2,U+2bdf7,U+2be29,U+2c029-2c02a,U+2c0a9,U+2c0ca,U+2c1d5,U+2c1d9,U+2c1f9,U+2c27c,U+2c288,U+2c2a4,U+2c317,U+2c35b,U+2c361,U+2c364\",\n },\n },\n {\n uri: _113,\n descriptors: {\n unicodeRange:\n \"U+458e-4628,U+2b7a9,U+2b7c5,U+2b7e6,U+2b7f9,U+2b806,U+2b80a,U+2b81c,U+2b8b8,U+2bac7,U+2bb5f,U+2bb62,U+2bb7c,U+2bb83,U+2bc1b,U+2bd77,U+2bd87\",\n },\n },\n {\n uri: _114,\n descriptors: {\n unicodeRange: \"U+4449-4511,U+2afa2,U+2b127-2b128,U+2b137-2b138,U+2b1ed\",\n },\n },\n {\n uri: _115,\n descriptors: {\n unicodeRange:\n \"U+439b-4448,U+2a437,U+2a5f1,U+2a602,U+2a61a,U+2a6b2,U+2a7dd,U+2a8fb,U+2a917,U+2aa30,U+2aa36,U+2aa58\",\n },\n },\n {\n uri: _116,\n descriptors: {\n unicodeRange:\n \"U+4275-430d,U+298c6,U+29a72,U+29d98,U+29ddb,U+29e15,U+29e3d,U+29e49\",\n },\n },\n {\n uri: _117,\n descriptors: {\n unicodeRange:\n \"U+4132-41de,U+28bef,U+28c47,U+28c4f,U+28c51,U+28c54,U+28d10,U+28d71,U+28dfb,U+28e1f,U+28e36,U+28e89,U+28e99,U+28eeb,U+28f32,U+28ff8,U+292a0\",\n },\n },\n {\n uri: _118,\n descriptors: {\n unicodeRange:\n \"U+41df-4274,U+292b1,U+29490,U+295cf,U+2967f,U+296f0,U+29719,U+29750\",\n },\n },\n {\n uri: _119,\n descriptors: {\n unicodeRange:\n \"U+408e-4131,U+285c8-285c9,U+28678,U+28695,U+286d7,U+286fa,U+287e0,U+28946,U+28949,U+2896b,U+28987-28988,U+289ba-289bb,U+28a1e,U+28a29,U+28a43,U+28a71,U+28a99,U+28acd,U+28add,U+28ae4,U+28b49,U+28bc1\",\n },\n },\n {\n uri: _120,\n descriptors: {\n unicodeRange:\n \"U+3e83-3f2f,U+27139,U+273da-273db,U+273fe,U+27410,U+27449,U+27614-27615,U+27631,U+27684,U+27693,U+2770e,U+27723,U+27752\",\n },\n },\n {\n uri: _121,\n descriptors: {\n unicodeRange:\n \"U+3f30-3fdb,U+27985,U+27a84,U+27bb3,U+27bbe,U+27bc7,U+27cb8,U+27da0,U+27e10\",\n },\n },\n {\n uri: _122,\n descriptors: {\n unicodeRange:\n \"U+3fdc-408d,U+27fb7,U+27ff9,U+2808a,U+280bb,U+2815d,U+28277,U+28282,U+282e2,U+282f3,U+283cd,U+28408,U+2840c,U+28455,U+28468,U+2856b\",\n },\n },\n {\n uri: _123,\n descriptors: {\n unicodeRange:\n \"U+3dd2-3e82,U+26a58,U+26a8c,U+26ab7,U+26aff,U+26b5c,U+26c21,U+26c29,U+26c73,U+26cdd,U+26e40,U+26e65,U+26f94,U+26ff6-26ff8,U+270f4,U+2710d\",\n },\n },\n {\n uri: _124,\n descriptors: {\n unicodeRange:\n \"U+3d34-3dd1,U+2648d,U+26676,U+2667e,U+266b0,U+2671d,U+2677c,U+267cc,U+268dd,U+268ea,U+26951,U+2696f,U+269dd,U+269fa,U+26a1e\",\n },\n },\n {\n uri: _125,\n descriptors: {\n unicodeRange:\n \"U+3c76-3d33,U+25d0a,U+25da1,U+25e2e,U+25e56,U+25e62,U+25e65,U+25ec2,U+25ed7-25ed8,U+25ee8,U+25f23,U+25f5c,U+25fd4,U+25fe0,U+25ffb,U+2600c,U+26017,U+26060,U+260ed,U+26221,U+26270,U+26286,U+2634c,U+26402\",\n },\n },\n {\n uri: _126,\n descriptors: {\n unicodeRange:\n \"U+3bda-3c75,U+25771,U+257a9,U+257b4,U+259c4,U+259d4,U+25ae3-25ae4,U+25af1,U+25bb2,U+25c14,U+25c4b,U+25c64\",\n },\n },\n {\n uri: _127,\n descriptors: {\n unicodeRange:\n \"U+3b25-3bd9,U+2504a,U+25055,U+25122,U+2512b,U+251a9,U+251cd,U+251e5,U+2521e,U+2524c,U+2542e,U+2548e,U+254d9,U+2550e,U+25532,U+25562,U+255a7-255a8\",\n },\n },\n {\n uri: _128,\n descriptors: {\n unicodeRange:\n \"U+3a6b-3b24,U+24896,U+249db,U+24a4d,U+24a7d,U+24ac9,U+24b56,U+24b6f,U+24c16,U+24d14,U+24dea,U+24e0e,U+24e37,U+24e6a,U+24e8b,U+24eaa\",\n },\n },\n {\n uri: _129,\n descriptors: {\n unicodeRange:\n \"U+39a9-3a6a,U+24096,U+24103,U+241ac,U+241c6,U+241fe,U+243bc,U+243f8,U+244d3,U+24629,U+246a5,U+247f1\",\n },\n },\n {\n uri: _130,\n descriptors: {\n unicodeRange:\n \"U+38e3-39a8,U+23a98,U+23c7f,U+23c97-23c98,U+23cfe,U+23d00,U+23d0e,U+23d40,U+23dd3,U+23df9-23dfa,U+23e23,U+23f7e\",\n },\n },\n {\n uri: _131,\n descriptors: {\n unicodeRange:\n \"U+3760-382a,U+22ab8,U+22b43,U+22b46,U+22b4f-22b50,U+22ba6,U+22bca,U+22c1d,U+22c24,U+22c55,U+22d4c,U+22de1\",\n },\n },\n {\n uri: _132,\n descriptors: {\n unicodeRange:\n \"U+382b-38e2,U+231b6,U+231c3-231c4,U+231f5,U+23350,U+23372,U+233d0,U+233d2-233d3,U+233d5,U+233da,U+233df,U+233e4,U+2344a-2344b,U+23451,U+23465,U+234e4,U+2355a,U+23594,U+235c4,U+235cb,U+23638-2363a,U+23647,U+2370c,U+2371c,U+2373f,U+23763-23764,U+237e7,U+237ff,U+23824,U+2383d\",\n },\n },\n {\n uri: _133,\n descriptors: {\n unicodeRange:\n \"U+3698-375f,U+22218,U+2231e,U+223ad,U+224dc,U+226f3,U+2285b,U+228ab,U+2298f\",\n },\n },\n {\n uri: _134,\n descriptors: {\n unicodeRange:\n \"U+35e6-3697,U+21c56,U+21cde,U+21d2d,U+21d45,U+21d62,U+21d78,U+21d92,U+21d9c,U+21da1,U+21db7,U+21de0,U+21e33-21e34,U+21f1e,U+21f76,U+21ffa,U+2217b\",\n },\n },\n {\n uri: _135,\n descriptors: {\n unicodeRange:\n \"U+3444-350e,U+20ad3,U+20b1d,U+20b9f,U+20c41,U+20cbf,U+20cd0,U+20d45,U+20de1,U+20e64,U+20e6d,U+20e95,U+20e9d,U+20ea2,U+20f5f,U+210c1,U+21201,U+2123d,U+21255,U+21274,U+2127b\",\n },\n },\n {\n uri: _136,\n descriptors: {\n unicodeRange:\n \"U+350f-35e5,U+212d7,U+212e4,U+212fd,U+2131b,U+21336,U+21344,U+2139a,U+213c4,U+21413,U+2146d-2146e,U+215d7,U+21647,U+216b4,U+21706,U+21742,U+218bd,U+219c3\",\n },\n },\n {\n uri: _137,\n descriptors: {\n unicodeRange:\n \"U+336d-3443,U+2032b,U+20371,U+20381,U+203f9,U+2044a,U+20509,U+20547,U+205d6,U+20628,U+20676,U+2074f,U+20779,U+20807,U+2083a,U+20895,U+208b9,U+2097c,U+2099d\",\n },\n },\n {\n uri: _138,\n descriptors: {\n unicodeRange:\n \"U+328b-336c,U+2000b,U+20089,U+200a2,U+200a4,U+20164,U+201a2,U+20213\",\n },\n },\n {\n uri: _139,\n descriptors: {\n unicodeRange:\n \"U+3192-31ba,U+31c0-31e3,U+31f0-321e,U+3220-328a,U+1f250-1f251\",\n },\n },\n {\n uri: _140,\n descriptors: {\n unicodeRange:\n \"U+2f74-2fd5,U+3000,U+3003-3007,U+3012-3013,U+3018-301c,U+3020-3029,U+302f-303f,U+3041-3096,U+3099-30a1\",\n },\n },\n {\n uri: _141,\n descriptors: {\n unicodeRange: \"U+30a2-30ff,U+3105-312f,U+3131-318e,U+3190-3191\",\n },\n },\n {\n uri: _142,\n descriptors: {\n unicodeRange:\n \"U+4e36,U+4ea0,U+4f74,U+4f91,U+4f94,U+4fc5,U+507e,U+50ed,U+5182,U+51f5,U+525e,U+5282,U+52f9,U+5326,U+537a,U+53a3,U+5423,U+5459,U+54b4,U+54d9,U+55c9,U+57f4,U+580b,U+5902,U+5925,U+5a08,U+5ab5,U+5b84,U+5be4,U+5c22,U+5cb5,U+5cbd,U+5d3e,U+5e31,U+5e5e,U+5e80,U+5ee8,U+5f82,U+5fc9,U+5fed,U+600a,U+605d,U+609b,U+609d,U+60dd,U+6243,U+6322,U+63ce,U+640c,U+643f,U+6445,U+64d7,U+6534,U+6549,U+656b,U+6603,U+674c,U+680a,U+6864,U+69d4,U+6a65,U+6c2a,U+6c46,U+6c5c,U+6d0e,U+6d48,U+6e2b,U+6eb2,U+6eb7,U+6f89,U+706c,U+70b1,U+7113,U+71d4,U+727f,U+72f3,U+7303,U+7321,U+736c,U+736f,U+74a9,U+74de,U+750d,U+7513,U+7592,U+75c4,U+7605,U+760a,U+761b,U+7625,U+762d,U+7643,U+7707,U+7747,U+77b5,U+7839,U+784e,U+78a5,U+7924,U+793b,U+798a,U+7a03,U+7a06,U+7a78,U+7a80,U+7aad,U+7ba8,U+7be5,U+7cc8,U+7ec1,U+7f0b,U+7f0f,U+7f12,U+7f68,U+7f9d,U+8025,U+809c,U+80ad,U+80b7,U+80e8,U+811e,U+8204,U+8223,U+822d,U+823b,U+824b,U+825a,U+827d,U+827f,U+828f,U+82c8,U+8307,U+831b,U+8347,U+837d,U+839b,U+83a9,U+83f9,U+84b9,U+8579,U+864d,U+867f,U+86b0,U+86d1,U+86d8,U+86f2,U+8764,U+8770,U+8788,U+8797,U+87ac-87ad,U+87b5,U+881b,U+8844,U+88bc,U+88fc,U+8930,U+89cf,U+89d6,U+8ba0,U+8bd4,U+8c02,U+8c2b,U+8c85,U+8e23,U+8f81-8f82,U+8fd5,U+90b6,U+90db,U+914e,U+9164,U+91ad,U+943e,U+94b7-94b8,U+94eb,U+950d,U+9514,U+9516,U+9518,U+9529,U+9538,U+953f,U+954e,U+955f,U+95fc,U+9667,U+96b3,U+9792,U+97b2,U+98a1,U+9969,U+9987,U+9998,U+9a80,U+9a92,U+9a96,U+9adf,U+9cb4,U+9cbd,U+9cd0,U+9cd4,U+9e31,U+9e3a,U+9e71,U+9ee5,U+9eea,U+9ef9,U+9fa0\",\n },\n },\n {\n uri: _143,\n descriptors: {\n unicodeRange:\n \"U+4e0c,U+4e28,U+4e3f,U+4ec2,U+502e,U+50ba,U+5155,U+5181,U+522d,U+5281,U+5290,U+5369,U+53b6,U+54d5,U+54dc,U+54ff,U+552a,U+553c,U+5588,U+55b5,U+5686,U+570a,U+5776,U+5786,U+57a4,U+5820,U+5865,U+58bc,U+5b32,U+5b65,U+5c1c,U+5c66,U+5c6e,U+5c8d,U+5ddb,U+5f2a,U+5f50,U+5f61,U+6067,U+614a,U+615d,U+619d,U+61d4,U+620b,U+6224-6225,U+6343,U+63ad,U+63f2,U+640b,U+6420,U+6434,U+6496,U+64d0,U+6509,U+652e,U+67a8,U+6833,U+6844,U+684a,U+6920,U+6957,U+6971,U+6a8e,U+6a91,U+6aa0,U+6b43,U+6bea,U+6bf5,U+6c15,U+6cd0,U+6ee0,U+6f24,U+6f2d,U+70c0,U+721d,U+728b,U+72c3,U+72e8,U+730a,U+7338-7339,U+734d,U+746d,U+752f,U+754e,U+770d,U+7735,U+778d,U+77a2,U+77e7,U+7857,U+786d,U+78c9,U+78f2,U+791e,U+7953,U+7b58,U+7b9d,U+7bda,U+7cd7,U+7f32-7f33,U+8022,U+8028-8029,U+8035,U+804d,U+8080,U+80c2,U+80e9,U+80ec,U+80f2,U+810e,U+8221,U+8274,U+82b0,U+82e0,U+83b0,U+8487-8488,U+848e,U+84cd,U+84d0,U+8539,U+857a,U+85a8,U+85b7,U+867c,U+871e,U+8723,U+877e,U+878b,U+8793,U+8803,U+88d2,U+8966,U+89cc,U+89eb,U+8b26,U+8c8a,U+8c98,U+8d33,U+8d47,U+8d55,U+8dbc,U+8e40,U+8e94,U+8f77,U+8f79,U+9058,U+91a2,U+91b5,U+928e,U+9494,U+94b6,U+94de,U+94f4,U+94f9,U+950a,U+950e,U+951e,U+952b,U+953c,U+953e,U+9544,U+9561,U+9564,U+9569,U+95f6,U+9603,U+960d,U+963d,U+9674,U+9794,U+97ab,U+98a5,U+9a9f,U+9ab1,U+9ad1,U+9b0f,U+9b2f,U+9c92,U+9c95,U+9cba,U+9cbc,U+9cc6,U+9ccb,U+9cd8,U+9e32,U+9e38,U+9e5b,U+9e7e,U+9eb4,U+9efb-9efc,U+9f3d\",\n },\n },\n {\n uri: _144,\n descriptors: {\n unicodeRange: \"U+2e3b,U+2e80-2e99,U+2e9b-2ef3,U+2f00-2f73,U+ffffd\",\n },\n },\n {\n uri: _145,\n descriptors: {\n unicodeRange:\n \"U+4e69,U+4f1b,U+4f67,U+4f7e,U+4fdc,U+50e6,U+5196,U+5202,U+5233,U+523f,U+52a2,U+536e,U+5476,U+54ad,U+54cf,U+5537,U+561e,U+56dd,U+56df,U+5709,U+572c,U+57cf,U+57f8,U+580d,U+5881,U+589a,U+5941,U+59b2,U+5c25,U+5d24,U+5d74,U+5e42,U+5e8b,U+5eb3,U+5ed2,U+5fad,U+6003,U+603c,U+6083,U+6100,U+6126,U+6206,U+62ca,U+638e,U+63b4,U+6426,U+646d,U+6535,U+65c4,U+66db,U+6715,U+6769,U+6798,U+67c3,U+6861,U+698d,U+69ca,U+69ed,U+69f2,U+69ff,U+6a18,U+6b39,U+6bb3,U+6c0d,U+6cb2,U+6cd6,U+6cf7,U+6cfa,U+6d33,U+6e16,U+6e53-6e54,U+6ebb,U+6fb6,U+709d,U+72ad,U+72f7,U+72fb,U+7313,U+739f,U+74ba,U+754b,U+755b,U+758b,U+75ac,U+75d6,U+7617,U+7635,U+7640,U+76a4,U+76b2,U+775a,U+77bd,U+781f,U+79b3,U+7b2b,U+7b31,U+7b3e,U+7b6e,U+7b9c,U+7c0b,U+7c9e,U+7cc1,U+7ce8,U+7ea5,U+7f21,U+7f27,U+7f74,U+7fb0,U+8031,U+8071,U+80ea,U+8114,U+8160,U+81a6,U+81c1,U+829f,U+82a4,U+82fb,U+831a,U+8333,U+836c,U+83b6,U+83f8,U+8411,U+841c,U+8489,U+848c,U+85a4,U+8627,U+8629,U+866e,U+86b5,U+872e,U+8731,U+877b,U+877d,U+87ea,U+8813,U+8816,U+8864,U+88ce,U+88e5,U+897b,U+89cb,U+89f3,U+8bfc,U+8c35,U+8d46,U+8d4d,U+8dba,U+8e3a,U+8f75,U+8f7e,U+8fd3,U+9161,U+9179,U+917e,U+91a3,U+94ac,U+94d7,U+94e5,U+952a,U+952c,U+9545,U+9565,U+9568,U+956a,U+961d,U+96e0,U+972a,U+9730,U+989f,U+98e7,U+990d,U+9967,U+9993,U+9aa3,U+9ac0,U+9ae1,U+9aeb,U+9af9,U+9c86,U+9c8b,U+9ca0-9ca1,U+9ca3,U+9ce2,U+9e48,U+9e6a,U+9e87,U+9ee2,U+9ee9,U+9f17,U+9f19,U+9f2c,U+9f80\",\n },\n },\n {\n uri: _146,\n descriptors: {\n unicodeRange:\n \"U+4ef3,U+50d6,U+50ec,U+51ab,U+51b1,U+52d6,U+54a9,U+54da,U+55be,U+55cd,U+564d,U+572f,U+574c,U+576b,U+57d8,U+57fd,U+5844,U+59d2,U+5ae0,U+5b16,U+5b37,U+5b5b,U+5b80,U+5d1e,U+5d6b,U+5efe,U+5f11,U+5f56,U+5f58,U+5f73,U+5f8c,U+5fc4,U+5fe4,U+602b,U+6106,U+610d,U+63de,U+63f8,U+641b,U+64e4,U+6634,U+676a,U+67b5,U+681d,U+6883,U+69b1,U+69e0,U+6b37,U+6b9b,U+6d7c,U+6ed7,U+6f36,U+6f72,U+6f8c,U+7035,U+7039,U+7173,U+7178,U+7228,U+728f,U+72b4,U+72ef,U+72f4,U+7331,U+7481,U+74e0,U+7540,U+75c3,U+75e6,U+763c,U+764d,U+76cd,U+7704,U+7743,U+7780,U+7847,U+786a,U+78b9,U+7962,U+7a02,U+7aac,U+7ab3,U+7b0a,U+7b4c,U+7b7b,U+7bfc,U+7c0f,U+7c16,U+7c40,U+7ca2,U+7cc7,U+7cf8,U+7d77,U+7e3b,U+7ea1,U+7ea9,U+7ef2,U+7f02,U+7f07,U+7f0c,U+7f23,U+7f2f,U+7fbc,U+8016,U+8020,U+812c,U+8136,U+8182,U+822f,U+8233,U+825f,U+8268,U+8284,U+8288,U+8291,U+8308,U+8311,U+835b,U+836d,U+83dd,U+8406,U+840f,U+845c,U+84b4,U+84e3,U+850c,U+855e,U+863c,U+86ba,U+86c4,U+86de,U+86f1,U+873e,U+87bd,U+87db,U+880a,U+883c,U+887f,U+88f0,U+890a,U+892b,U+895e,U+89ef,U+8a48,U+8bdc,U+8c18,U+8c33,U+8c94,U+8db1,U+8dcf,U+8dd6,U+8de3,U+8e6f,U+8e90,U+8f7a,U+8fb6,U+902d,U+90be,U+91af,U+936a,U+948b,U+94d8,U+9513,U+953a,U+956c,U+963c,U+9654,U+966c,U+9688,U+97b4,U+996b,U+9a75,U+9a7a,U+9aba,U+9aed,U+9b08,U+9b43,U+9c8e,U+9c94,U+9c9a,U+9e2b,U+9e36,U+9e4b,U+9e4e,U+9e55,U+9e63,U+9e68-9e69,U+9ebd,U+9ec9,U+9f0d,U+9f37,U+9f51\",\n },\n },\n {\n uri: _147,\n descriptors: {\n unicodeRange:\n \"U+50a7,U+5240,U+5261,U+52ac,U+531a,U+5363,U+5432,U+5452,U+5456,U+5472,U+5478,U+553f,U+5575,U+5581,U+55cc,U+55fe,U+5601,U+572e,U+57d2,U+57ef,U+581e,U+5924,U+5981,U+5997,U+59a3,U+5aaa,U+5ab8,U+5b34,U+5d5d,U+5def,U+5e11,U+5e91,U+5ed1,U+5ef4,U+5f40,U+600d,U+6019,U+601b,U+605a,U+6092,U+60ab,U+6217,U+623d,U+6369,U+65d2,U+6661,U+670a,U+6753,U+67a7,U+6855,U+68f9,U+6939,U+696e,U+6980,U+6a7c,U+6aab,U+6b82,U+6bf3,U+6bf9,U+6c05,U+6c19-6c1a,U+6ca9,U+6cf6,U+6d1a,U+6dab,U+6f74,U+7085,U+7198,U+71b5,U+7256,U+725d,U+727e,U+72fa,U+7322,U+738e,U+73e5,U+750f,U+755a,U+7594,U+75b3,U+760c,U+7615,U+7630,U+763f,U+77ec,U+7817,U+78a1,U+78d9,U+7905,U+7b2a,U+7b2e,U+7b62,U+7b85,U+7bcc,U+7bea,U+7c26,U+7c74,U+7c9c-7c9d,U+7e47,U+7e9b,U+7e9f,U+7ee0,U+7ee8,U+7ef1,U+7f01,U+7f11,U+7f17,U+7f36,U+7f7e,U+7fee,U+802a,U+80cd,U+8112,U+8169,U+8234,U+8279,U+8298,U+82ca,U+82d8,U+82e1,U+83c0,U+83d4,U+83df,U+8401,U+8451,U+845a,U+8476,U+8478,U+84ba,U+84bd,U+84e0,U+851f,U+8548,U+8556,U+8585,U+868d,U+86e9,U+86f4,U+86f8,U+8765,U+8785,U+87ab,U+87ee,U+8832,U+8872,U+88b7,U+88e2-88e3,U+89da,U+8bce,U+8bd3,U+8bd6,U+8bf9,U+8c16,U+8c73,U+8d5c,U+8dde,U+8f6d,U+8f94,U+8fe8,U+9011,U+915e,U+9185,U+918c,U+94ab,U+94d1,U+94f3,U+9515,U+951d,U+9558,U+9567,U+96ce,U+96e9,U+9785,U+9878,U+987c,U+9883,U+98d1,U+9954,U+9963,U+9a93,U+9ac1,U+9acc,U+9b1f,U+9b49,U+9b4d,U+9b51,U+9ca7,U+9cae,U+9cce,U+9cd3,U+9e37,U+9e39,U+9e41,U+9e46,U+9f22,U+9f2f,U+9f39,U+9f85\",\n },\n },\n {\n uri: _148,\n descriptors: {\n unicodeRange:\n \"U+4e5c,U+4edf,U+4f25,U+4f32,U+4f5e,U+4f76,U+4faa,U+4fe6,U+5028,U+5048,U+5250,U+535f,U+538d,U+53c1,U+5412,U+5443,U+54d4,U+54dd,U+5541,U+5550,U+5577,U+55dd,U+55f3,U+560f,U+562c,U+5657-5658,U+5664,U+56af,U+575c,U+577c,U+57b2,U+57da,U+5800,U+5a62,U+5aeb,U+5c3b,U+5ca3,U+5d26,U+5d9d,U+5f01,U+5fb5,U+5fdd,U+5ff8,U+6029,U+6041,U+6079,U+60b1,U+6222,U+629f,U+6332,U+63bc,U+63e0,U+6485,U+65ab,U+65c3,U+65c6,U+668c,U+669d,U+66be,U+67fd,U+6800,U+68fc,U+690b,U+6924,U+6978,U+69a7,U+6a3e,U+6a50,U+6a5b,U+6a97,U+6b24,U+6b8d,U+6baa,U+6c10,U+6c54,U+6ceb,U+6d04,U+6d4d,U+6eb1,U+6ebd,U+7110,U+71b3,U+71f9,U+7230,U+728d,U+7292,U+72b8,U+72d2,U+7360,U+73a2,U+7511,U+75a0,U+75c8,U+779f,U+7826,U+7877,U+7a39,U+7aa8,U+7ae6,U+7b04,U+7b0f,U+7baa,U+7bac,U+7c1f,U+7ccd,U+7ecb,U+7ed4,U+7ed7,U+7efb,U+7f0d,U+7f5f,U+7faf,U+7fd5,U+7fe5,U+8027,U+80bc,U+80dd,U+80fc,U+8132,U+815a,U+8167,U+816d,U+81ca,U+8228,U+82a1,U+82a9,U+82ab,U+82cc,U+8351,U+8368,U+83b8,U+83d8,U+83ea,U+83f0,U+8497,U+84c1,U+858f,U+85ff,U+867b,U+86a8-86a9,U+870a,U+8722,U+876e,U+877c,U+87e5,U+8888,U+88df,U+8919,U+8bcc,U+8bdf,U+8be8,U+8bee,U+8c20,U+8c2f,U+8d36,U+8df8,U+8e05,U+8e2f,U+8f9a,U+9021,U+908b,U+90b4,U+90ba,U+90d0,U+90eb,U+90fe,U+91aa,U+933e,U+9486-9487,U+948d,U+9490,U+94ad,U+94bd,U+94d6,U+94d9,U+9507,U+9546,U+955e,U+956b,U+95e9,U+9604,U+960b,U+9612,U+9615,U+9617,U+96b9,U+989a-989b,U+989e,U+9a78,U+9a7d,U+9aa0,U+9aa2,U+9ac2,U+9b23,U+9b3b,U+9c82,U+9cca,U+9cd9,U+9e28,U+9e5a,U+9e5e,U+9e6c,U+9efe,U+9f0b\",\n },\n },\n {\n uri: _149,\n descriptors: {\n unicodeRange:\n \"U+4e47,U+4e8d,U+4f65,U+4f89,U+50ee,U+520e,U+5416,U+5454,U+54bb,U+54c2,U+54d3,U+54de,U+5591,U+55e5,U+560c,U+566b,U+5769,U+578c,U+5793,U+57e4,U+5889,U+593c,U+59ab,U+5ad4,U+5ad8,U+5af1,U+5b53,U+5ba5,U+5c59,U+5c63,U+5d5b,U+5e0f,U+5e14,U+5edb,U+5fbc,U+6004,U+60ad,U+610e,U+61b7,U+624c,U+634c,U+647a,U+64ba,U+65f0,U+6600,U+66f7,U+67e2,U+67f0,U+680c,U+686b,U+6874,U+691f,U+6989,U+6a17,U+6b81,U+6b84,U+6c06-6c07,U+6c3d,U+6d07,U+6d27,U+6d2b,U+6d91,U+6e6b,U+6e8f,U+6fde,U+70bb,U+723b,U+726e,U+72b0,U+72ce,U+72f2,U+7301,U+731e,U+737e,U+7477,U+748e,U+74ff,U+7633,U+7654,U+771a,U+7726,U+7765,U+7768,U+781c,U+7829,U+78d4,U+7913,U+7957,U+79d5,U+79eb,U+7a70,U+7a86,U+7b25,U+7b38,U+7b47,U+7b72,U+7ba6-7ba7,U+7dae,U+7ee1,U+7efe,U+7f26,U+7f31,U+7f35,U+801c,U+8043,U+809f,U+80ab,U+80d7,U+8118,U+8188,U+81cc,U+823e,U+8244,U+824f,U+82b4,U+82c1,U+82e4,U+82f4,U+8306,U+833a,U+835c,U+839c,U+83b3,U+83bc,U+846d,U+867a,U+868b,U+8734,U+87ca,U+886e,U+887e,U+88a2,U+88c9,U+8921,U+8bb5,U+8bf3,U+8c04,U+8c17,U+8c1d,U+8c25,U+8c36,U+8c55,U+8c78,U+8d3d,U+8d40,U+8d59,U+8d67,U+8d91,U+8dbf,U+8deb-8dec,U+8dfd,U+8e14,U+8e41,U+8f8e,U+900b,U+9044,U+9062,U+90cf,U+9123,U+9146,U+9162,U+9172,U+918d,U+9190,U+92c8,U+93ca,U+948c,U+94aa,U+94b2,U+94c8,U+94ca,U+94d5,U+94df,U+94e9-94ea,U+94f7,U+94fc-94fd,U+951b,U+954f,U+9554,U+9559,U+9566,U+9571-9572,U+95f1,U+9608,U+960f,U+97af,U+988f,U+98d5,U+992e,U+9955,U+9ab0,U+9b32,U+9c90,U+9c9e,U+9ca5,U+9ca9,U+9cad,U+9cb1,U+9cc3,U+9e47,U+9ee7,U+9f87\",\n },\n },\n {\n uri: _150,\n descriptors: {\n unicodeRange:\n \"U+4e93,U+4ec4,U+4ef5,U+4f27,U+4f7b,U+4fe3,U+5080,U+5121,U+51eb,U+5208,U+52f0,U+53f5,U+5453,U+5466,U+54a6,U+54bf,U+54d0,U+5533,U+5549,U+5556,U+556d,U+558f,U+55f2,U+55f5,U+5627,U+567b,U+56d4,U+571c,U+5739,U+57b4,U+5807,U+58c5,U+59a4,U+59af,U+59d8,U+5a09,U+5a0c,U+5a4a,U+5ad2,U+5b6c,U+5ca2,U+5cac,U+5d03,U+5d6c,U+5db7,U+5ebe,U+5f2d,U+5fea,U+6042,U+6120,U+6175,U+6221,U+623e,U+6339,U+638a,U+643d,U+64b8,U+64e2,U+66e9,U+67b3,U+67c1,U+67d2,U+6832,U+6877,U+68f0,U+6934,U+6966,U+6987,U+6998,U+69c1,U+69ce,U+6a3d,U+6a84,U+6aa9,U+6b87,U+6bd6,U+6c16,U+6c18,U+6cd4,U+6cee,U+6de0,U+6e0c,U+6ecf,U+6f4b,U+70b7,U+7168,U+72d9,U+7352,U+73b3,U+73d0,U+7441,U+74d2,U+75a5,U+75e7-75e8,U+7610,U+7619,U+765e,U+772d,U+7812,U+782c,U+784c,U+7850,U+7856,U+789b,U+78f4,U+7a51,U+7b15,U+7b1e,U+7b24,U+7b5a,U+7bb8,U+7bc1,U+7bd9,U+7ed0,U+7ee6,U+7efa,U+7f1b,U+7f1f,U+7f22,U+7f45,U+7f71,U+7fa7,U+7fbf,U+7ff3,U+8052,U+80b1,U+80db,U+80f4,U+81bb,U+81ec,U+8202,U+8210,U+8249,U+828a,U+828e,U+82e3,U+8315,U+8369,U+8378,U+83a8,U+83aa,U+83b4,U+83e1,U+84fc,U+8538,U+853b,U+859c,U+85ae,U+86b4,U+86c9,U+86cf,U+8725,U+879f,U+87b3,U+887d,U+88fe,U+8a8a,U+8ba7,U+8c07,U+8c14,U+8c30,U+8c47,U+8db5,U+8dd7,U+8e1f,U+8e69,U+8e70,U+8e85,U+8f78,U+8f87,U+8f8b,U+8f8f,U+90c4,U+9143,U+917d,U+948f,U+94cd,U+94d2,U+94ef,U+954a,U+9609-960a,U+96d2,U+9708,U+9765,U+97ea,U+9880,U+98a7,U+996c,U+9980,U+9991,U+9a88,U+9ab6,U+9afb,U+9b47,U+9c87,U+9c9b,U+9cb5,U+9cc7,U+9e2c,U+9e42,U+9e58,U+9ecd,U+9ecf,U+9f8a,U+9f8c\",\n },\n },\n {\n uri: _151,\n descriptors: {\n unicodeRange:\n \"U+4ebb,U+4edd,U+4fa9,U+502c,U+50a5,U+51c7,U+51fc,U+523d,U+5241,U+530f,U+5464,U+549d,U+54a3,U+5514,U+5527,U+555c,U+556e,U+5576,U+55b1,U+55b9,U+55eb,U+5624,U+564c,U+5671,U+5685,U+568f,U+56d7,U+56e1,U+57a1,U+57d9,U+5942,U+5a67,U+5c50,U+5c7a,U+5c98,U+5d06,U+5d27,U+5d6f,U+5df3,U+5dfd,U+5e19,U+5ea0,U+5eb9,U+5eea,U+5ffe,U+600f,U+606b,U+6215,U+622c,U+6266,U+62bb,U+62bf,U+6308,U+6387,U+63b8,U+63c4,U+63c6,U+63f6,U+6441,U+6555,U+659b,U+6677,U+66a7,U+6775,U+678b,U+679e,U+6840,U+6849,U+6860,U+68c2,U+6910,U+6a28,U+6a2f,U+6a79,U+6b92-6b93,U+6bc2,U+6bfd,U+6c29,U+6c32,U+6c86,U+6cc5,U+6d0c,U+6d60,U+6da0,U+6ddd,U+6e86,U+6ed3,U+6edf,U+6fb9,U+6fd1,U+6fef,U+7023,U+7080,U+70ca,U+712f,U+7145,U+7284,U+732c,U+73c8,U+73d9,U+740a,U+7457,U+7596,U+759d,U+75a3,U+75d8,U+75e3-75e4,U+75ff,U+7622,U+7688,U+76b4,U+76e5,U+7818,U+7887,U+789a,U+78b2,U+7b08,U+7b33,U+7c2a,U+7ccc,U+7ea8,U+7ec0,U+7fe6,U+8012,U+8084,U+8093,U+80e4,U+80ef,U+8297,U+82a8,U+82be,U+8331,U+8366,U+83c5,U+83fd,U+8473,U+84a1,U+84ca,U+84d1,U+857b,U+85c1,U+85d3,U+8605,U+8662,U+86aa,U+86b1,U+86d4,U+86ed,U+86f3,U+8709,U+8748,U+874c,U+8763,U+89c7,U+89de,U+89e5,U+8a3e,U+8ba6,U+8c00,U+8c21,U+8c49,U+8c7a,U+8d30,U+8df9,U+8e51,U+8e59,U+8f6b,U+8f73,U+8ff3,U+9016,U+9026,U+902f,U+9099,U+909b,U+90c7,U+914a,U+91ae,U+91ba,U+9495,U+94a3,U+94af,U+94ba,U+94bf,U+94cc,U+94e1,U+94f0,U+9531,U+955d,U+95f3,U+9697,U+96bc,U+975b,U+977c,U+98a2,U+998a,U+9994-9995,U+9a9b,U+9ab7,U+9ac5,U+9c91,U+9ccf,U+9cd5,U+9e29,U+9edc,U+9edf,U+9f83,U+9f88-9f89\",\n },\n },\n {\n uri: _152,\n descriptors: {\n unicodeRange:\n \"U+4ee8,U+4f22,U+4f43,U+4f57,U+4f5d,U+4f6f,U+4ff8,U+502d,U+507b,U+5345,U+53df,U+53fb,U+544b,U+5482,U+54a7,U+54cc,U+550f,U+5544,U+5555,U+5594,U+55e8,U+55ec,U+55ef,U+564e,U+56f9,U+5704,U+576d,U+5785,U+57ad,U+5914,U+5958,U+599e,U+59aa,U+59be,U+5a06,U+5abe,U+5ae1,U+5b40,U+5bee,U+5cbf,U+5cc4,U+5ccb,U+5d47,U+603f,U+6078,U+607d,U+607f,U+608c,U+609a,U+60fa,U+61ff,U+621b,U+622e,U+626a,U+6371,U+63ae,U+63cd,U+63d6,U+6410,U+6414,U+6421,U+6448,U+64d8,U+6710,U+6748,U+6772,U+680e,U+6954,U+69ab,U+6c68,U+6c8f,U+6ca4,U+6d2e,U+6e4e,U+6e98,U+6fe0,U+7094,U+70e9,U+7116,U+7119,U+723f,U+73c9,U+74e4,U+753e,U+7548,U+75bd,U+75cd,U+7618,U+7634,U+76c5,U+76f1,U+7708,U+7719,U+777e,U+7791,U+77b3,U+7823,U+7827,U+7830,U+7889,U+7893,U+7949,U+795c,U+79e3,U+7a14,U+7a88,U+7a95,U+7aa0,U+7afd,U+7b90,U+7bd1,U+7bfe,U+7da6,U+7ec2,U+7eef,U+7f03-7f04,U+7f08,U+7f58,U+7f61,U+7f9f,U+8174,U+8200,U+828d,U+82c4,U+82d5,U+82dc,U+82f7,U+832d,U+835a,U+840b,U+8438,U+852b,U+869d,U+86ac,U+86d0,U+86f0,U+8782,U+87a8,U+87d1-87d2,U+87e0,U+8839,U+8913,U+891b,U+8934,U+8941,U+89ca,U+89ce,U+8a07,U+8ba3,U+8bc5,U+8bcb,U+8bdb,U+8c11,U+8c15,U+8c29,U+8c32,U+8dc4,U+8dce,U+8ddb,U+8dfa,U+8e09,U+8e1d,U+8e39,U+8e42,U+8e49,U+8e4b,U+8e8f,U+8f71-8f72,U+9004,U+9036,U+9097,U+90dc,U+90e2,U+90e6,U+90ef,U+9104,U+919a,U+91b4,U+938f,U+9497,U+950f,U+9557,U+9562-9563,U+9573,U+9606,U+9649,U+972d,U+973e,U+97a3,U+97eb,U+988c,U+9894,U+98a6,U+9974,U+9977,U+997d,U+9a90,U+9a9d,U+9aef,U+9ca2,U+9ccd,U+9cdf,U+9e20,U+9e4c,U+9e6b,U+9f3e\",\n },\n },\n {\n uri: _153,\n descriptors: {\n unicodeRange:\n \"U+4ede,U+4ee1,U+4eeb,U+4fda,U+4ffe,U+5025,U+506c,U+50f3,U+5106,U+520d,U+525c,U+52ad,U+530d,U+5310,U+539d,U+53a9,U+53fc,U+5421,U+5477,U+54e7,U+551b,U+5530,U+557e,U+5599,U+55c4,U+55d1,U+55d4,U+55df,U+55e4,U+55ea,U+5623,U+562d,U+5654,U+56eb,U+56f5,U+57a7,U+57d5,U+57dd,U+584d,U+5880,U+58ec,U+59dd,U+5a32,U+5a55,U+5a75,U+5b51,U+5b71,U+5b73,U+5cd2,U+5ce4,U+5e5b,U+5e96,U+5fd2,U+607b,U+61d1,U+634b,U+636d,U+63b3,U+63ff,U+64c0,U+661d,U+6657,U+66dc,U+67a5,U+6841,U+6867,U+6901,U+699b,U+6a47,U+6b46,U+6c21,U+6c24,U+6c35,U+6c4a,U+6c94,U+6ca3,U+6d39,U+6d63,U+6d6f,U+6d94,U+705e,U+71e7,U+726f,U+72cd,U+72de,U+72f0,U+7325,U+7350,U+7391,U+741a,U+757f,U+7583,U+75b1,U+75b4,U+75b8,U+75c2,U+75f1,U+766f,U+7699,U+7751,U+789c,U+7a17,U+7be6,U+7cb2,U+7ea3,U+7eb0,U+7ebe,U+7eeb,U+7f25,U+7f2c,U+7fb8,U+8026,U+8037,U+8153,U+8171,U+8191,U+8214,U+821b,U+8222,U+826e,U+82eb,U+830c,U+8314,U+8334,U+83d6,U+8418,U+843c,U+84ff,U+8564,U+8572,U+8616,U+866c,U+8693,U+86a3,U+86a7,U+86af,U+86b6,U+86c6,U+86ca,U+8708,U+870d,U+8759,U+8760,U+87af,U+87c6,U+8869,U+88c6,U+89d0,U+8b07,U+8baa-8bab,U+8bc2,U+8be4,U+8bf0,U+8c2a,U+8c62,U+8c89,U+8d49,U+8d6d,U+8d84,U+8d94,U+8db8,U+8dc6,U+8e2e,U+8e3d,U+8e47,U+8e7f,U+9005,U+9051,U+907d,U+9082,U+9088,U+90b0,U+90d3,U+9150,U+949c,U+94a4,U+94b9,U+94cb,U+94e0,U+9509,U+9512,U+951f,U+9534,U+9552-9553,U+965f,U+96b0,U+9791,U+9889,U+9990,U+9a9c,U+9aa7,U+9c88,U+9cb2-9cb3,U+9cb6-9cb7,U+9cc5,U+9cdc,U+9e22,U+9e2a,U+9e57,U+9e67,U+9e73,U+9e82,U+9eb8,U+9ee0,U+9f9b\",\n },\n },\n {\n uri: _154,\n descriptors: {\n unicodeRange:\n \"U+4eb5,U+4f09,U+4f5a,U+4f8f,U+4fce,U+4fdf,U+4fea,U+4ff3,U+500c,U+500f,U+504e,U+5088,U+52be,U+5420,U+5457,U+5499,U+549b,U+54c6,U+54d2,U+558b,U+559f,U+55bd,U+55d6,U+565c,U+567c,U+568e,U+5768,U+577b,U+57a9,U+57ed,U+59f9,U+5a11,U+5a40,U+5ae6,U+5b6a,U+5b93,U+5bb8,U+5c15,U+5c99,U+5c9c,U+5cc1,U+5d2e,U+5d4b,U+5d99,U+5e54,U+5e61,U+5fcf-5fd1,U+6002,U+6006,U+6014,U+60af,U+60c6,U+60da,U+60f4,U+621f,U+62c8,U+631b,U+631e,U+63e9,U+64b5,U+655d,U+6619,U+6635,U+6641,U+67ad,U+67b0,U+67b7,U+67e9,U+684e,U+688f,U+695d,U+696b,U+69b7,U+6a58,U+6c26,U+6d35,U+6d43,U+6d9e,U+6dd9,U+6dec,U+6e11,U+6e6e,U+6e9f,U+6ec2,U+6ee2,U+6ef9,U+6f09,U+6f66,U+6f8d,U+6fc2,U+6fc9,U+729f,U+72c8,U+73de,U+7430,U+7566,U+7579,U+75c9,U+75e2,U+75fc,U+762a,U+7638,U+7678,U+76c2,U+76f9,U+778c,U+77cd,U+77dc,U+7800,U+781d,U+782d,U+783b-783c,U+78a3,U+78ec,U+7980,U+7a23,U+7b95,U+7bdd,U+7c0c,U+7c41,U+7c91,U+7cb3,U+7cc5,U+7ecc,U+7f19,U+7fca,U+8006,U+8069,U+807f,U+80bd,U+80ed,U+814b,U+8198,U+82cb,U+82d2,U+834f,U+8360,U+847a,U+84d6,U+84e5,U+8537,U+85d0,U+8671,U+86a4,U+86ce,U+86f9,U+8703,U+8707,U+8737,U+873b,U+8815,U+8936,U+8bc3,U+8bcf,U+8bd2,U+8bd8,U+8be9,U+8c0c,U+8c0f,U+8c4c,U+8d45,U+8d5d,U+8d73,U+8e31,U+8e6d,U+8e76,U+8fe4,U+9041,U+90d7,U+9169,U+92ae,U+94a1,U+94c4,U+94c9,U+94db,U+94e7,U+9503,U+9506,U+9517,U+9528,U+9537,U+9542,U+9549,U+95fe,U+9616,U+961a,U+96c9,U+96f3,U+9701,U+970e,U+9739,U+9753,U+9798,U+98d2-98d3,U+98d9-98da,U+9968,U+996f,U+9984,U+9997,U+9acb,U+9b03,U+9c85,U+9ca8,U+9cab,U+9e49,U+9e51,U+9e66,U+9f10\",\n },\n },\n {\n uri: _155,\n descriptors: {\n unicodeRange:\n \"U+4e15,U+4e1e,U+4e2b,U+4eb3,U+4ec9,U+4f0e,U+4f64,U+501c,U+50a9,U+510b,U+51a2,U+51bc,U+527d,U+52d0,U+53fd,U+5429,U+542e,U+5486,U+54af,U+5506,U+5511,U+5522,U+552c,U+556c,U+55b3,U+55d2,U+55e6,U+55fd,U+561f,U+5639,U+5659,U+5662,U+5693,U+572a,U+5892,U+598a,U+5992,U+59a9,U+5a20,U+5ae3,U+5b17,U+5b7d,U+5d34,U+5d3d,U+5d4a,U+5d82,U+5e1a-5e1b,U+5ea5,U+5f0b,U+5f77,U+5fd6,U+5fff,U+6026,U+6035,U+6063,U+60b4,U+60bb,U+60ee,U+612b,U+6194,U+61ca,U+61e6,U+61f5,U+620a,U+6248,U+62a1,U+62d7,U+6376,U+637b,U+652b,U+65bc,U+65cc,U+65ce,U+65d6,U+664c,U+665f,U+6666,U+6684,U+66b9,U+6773,U+6777,U+6787,U+67de,U+6845,U+693d,U+6994,U+6a35,U+6d54,U+6d5c,U+6d8e,U+6dd6,U+6eb4,U+6f2a,U+6f78,U+704f,U+70ec,U+7118,U+714a,U+7172,U+71b9,U+724d,U+728a,U+7337,U+733e,U+7396,U+73b7,U+73cf,U+7428,U+742c,U+742e,U+74ee,U+74f4,U+7525,U+753a,U+7572,U+75d4,U+765c,U+768e,U+7762,U+777d,U+77fd,U+7825,U+7837,U+78b4,U+795f,U+79ed,U+7a1e,U+7b06,U+7b20,U+7ba9,U+7bab,U+7c7c,U+7cbd,U+7cdc,U+7ec9,U+7ef6,U+7f30,U+7f42,U+7f44,U+7f54,U+7f94,U+8004,U+800b,U+8019,U+809b,U+80ae,U+80c4,U+80f1,U+8146,U+816e,U+817c,U+81c0,U+81fc,U+81fe,U+822b,U+830f,U+832f,U+8340,U+8365,U+8385,U+8392,U+83a0,U+8424,U+84af,U+869c,U+8713,U+8717-8718,U+87c0,U+87cb,U+87fe,U+8821,U+8902,U+89d1,U+8bb9,U+8c12,U+8d32,U+8d53,U+8df7,U+8e7c,U+8f7c,U+8f95,U+8fab,U+9052,U+905b,U+9095,U+909d,U+90c5,U+911e,U+9122,U+916a,U+919b,U+948e,U+9492,U+949a,U+94b5,U+94bc,U+94c6,U+94f1,U+9502,U+9511,U+9536,U+956f-9570,U+9602,U+9621,U+9631,U+998b,U+99a5,U+9a81,U+9a9e,U+9ebe,U+9f8b\",\n },\n },\n {\n uri: _156,\n descriptors: {\n unicodeRange:\n \"U+4f2b,U+4f3d,U+4fac,U+5043,U+5055,U+5140,U+5156,U+51cb,U+5243,U+531d,U+536f,U+53a5,U+53ae,U+53f1,U+541d,U+5431,U+547b,U+5492,U+5494,U+54a4,U+54aa,U+54ce,U+54fd,U+5509,U+5520,U+553e,U+557b,U+55c5,U+55e1,U+55f7,U+5608,U+5636,U+563b,U+5773,U+57a0,U+5811,U+587e,U+58d5,U+59e3,U+5a29,U+5a6a,U+5a76,U+5a7a,U+5ac9,U+5b62,U+5b95,U+5c49,U+5c8c,U+5cab,U+5cb7,U+5d02,U+5d58,U+5e44,U+5e7a,U+5eff,U+5f29,U+5f89,U+5f9c,U+5fa8,U+6005,U+6043,U+60b8,U+60d8,U+60ec,U+60f0,U+6115,U+618e,U+630e,U+637a,U+6390,U+63ac,U+63b0,U+64de,U+6525,U+6538,U+65ee-65ef,U+6631,U+6636,U+6654,U+677c,U+67b8,U+67d8,U+683e,U+6886,U+68b5,U+692d,U+6963,U+6979,U+6988,U+6b59,U+6b9a,U+6c69,U+6c74,U+6cae,U+6ce0,U+6cef,U+6d95,U+6dc5,U+6dde,U+6de6,U+6dfc,U+6ea7,U+6f15,U+6f29,U+7096,U+70c3,U+7131,U+715c,U+7166,U+7266,U+7317,U+731d,U+7329,U+73e9,U+7425,U+7455,U+7490,U+74ef,U+7519,U+75b5,U+75b9,U+75de,U+7656,U+7663,U+7691,U+7729,U+77fe,U+783e,U+787c,U+795a,U+7a79,U+7abf,U+7b3a,U+7b4f,U+7b60,U+7b75,U+7b8d,U+7bb4,U+7bd3,U+7be1,U+7cbc,U+7edb,U+7f1c,U+7f8c,U+7fb2,U+7fb9,U+7fce,U+7ff1,U+810d,U+81c6,U+82a5,U+82aa,U+82de,U+8317,U+8343,U+835e,U+8364,U+836a,U+853a,U+8543,U+854a,U+8559,U+8568,U+85b0,U+85b9,U+864f,U+86e4,U+8715,U+8845,U+8884,U+88e8,U+88f1,U+8983,U+8be1,U+8c1f,U+8c27,U+8c5a,U+8c82,U+8d58,U+8dbe,U+8f98,U+9035,U+9074,U+90a1,U+9149,U+9157,U+93d6,U+949d,U+94c2,U+94e3-94e4,U+95eb,U+95f0,U+9611,U+9619,U+9642,U+968d,U+9706,U+970f,U+97ed,U+988a,U+9893,U+98e8,U+9a77,U+9a87,U+9aa1,U+9abc,U+9cdd,U+9e2f,U+9e33,U+9e44,U+9e5c,U+9e9d,U+9edd\",\n },\n },\n {\n uri: _157,\n descriptors: {\n unicodeRange:\n \"U+4f58,U+4f6c,U+4f70,U+4fd0,U+5014,U+51bd,U+524c,U+5315,U+5323,U+535e,U+540f,U+542d,U+545b,U+548e,U+549a,U+54ab,U+54fc,U+5567,U+556a,U+5600,U+5618,U+563f,U+5669,U+56f1,U+56ff,U+573b,U+574d,U+579b,U+57b8,U+57c2,U+586c,U+58f9,U+595a,U+598d,U+5993,U+5996,U+59d7,U+5b7a,U+5ba6,U+5c4e,U+5c96,U+5ce5,U+5eb6,U+5f08,U+5f99,U+602f,U+6059,U+606c,U+607a,U+60ed,U+61a9,U+620c,U+6249,U+62a8,U+62c4,U+62ed,U+62fd,U+6342,U+6345,U+6396,U+63a3,U+6402,U+6413,U+642a,U+6487,U+64a9,U+64ac,U+64ae,U+64b7,U+659f,U+65a1,U+667e,U+66f3,U+67e0,U+69db,U+69df,U+6aac,U+6b86,U+6c50,U+6c5e,U+6c76,U+6c85,U+6c8c,U+6cde,U+6d19,U+6d52,U+6da7,U+6db8,U+6e1a,U+6e25,U+6e4d,U+6e5f,U+6ec1,U+6f31,U+6f7a,U+6fa7,U+6fe1,U+701b,U+70ab,U+70f7,U+717d,U+71a8,U+7252,U+72c4,U+72e1,U+7315,U+736d,U+73ae,U+73c0,U+73c2,U+740f,U+75a4,U+7600-7601,U+768b,U+76bf,U+76d4,U+7728,U+772f,U+776c,U+77a0,U+77b0,U+77f8,U+783a,U+78d0,U+78fa,U+7977,U+7a37,U+7a92,U+7afa,U+7b71,U+7b94,U+7cef,U+7f28,U+7fe1,U+808b,U+80e5,U+80eb,U+8110,U+8113,U+812f,U+814c,U+81c3,U+8235,U+82d4,U+8309,U+83c1,U+8431,U+8469,U+84bf,U+84d3,U+84df,U+84e6,U+8511,U+8638,U+86c0,U+86db,U+86fe,U+8757,U+8822,U+8882,U+8885,U+8892,U+88f3,U+892a,U+8ba5,U+8bd9,U+8be0,U+8be7,U+8bfd,U+8c1a,U+8d4a,U+8d4e,U+8d66,U+8dda,U+8e0c,U+8e52,U+8e74,U+8e87,U+8f76,U+8fc2,U+8fe6,U+900d,U+9068,U+90ac,U+90b3,U+90b8,U+90e7,U+9119,U+9131,U+915a,U+916e,U+94b4,U+94d0,U+94e2,U+94ec,U+94ff,U+9522,U+9535,U+9556,U+965b,U+96f9,U+9774,U+9981,U+998d,U+998f,U+9a6e,U+9a7f,U+9a8a,U+9b13,U+9c9f,U+9e3e,U+9e43,U+9e6d,U+9e8b,U+9e92,U+9edb,U+9eef\",\n },\n },\n {\n uri: _158,\n descriptors: {\n unicodeRange:\n \"U+4e10,U+4e56,U+4e98,U+4ec3,U+4f3a,U+4f5f,U+4f88,U+4f97,U+4fa5,U+4fe8,U+504c,U+5197,U+52fa,U+5364,U+53e8,U+5406,U+543c,U+545c,U+5471,U+5480,U+5495,U+54b3,U+54df,U+54e6,U+54ee,U+557c,U+5583,U+55dc,U+55e3,U+566c,U+592f,U+5944,U+5983,U+59ca,U+59e5,U+5a13,U+5a7f,U+5b09,U+5bd0,U+5e4c,U+5eb5,U+5f1b,U+5f3c,U+608d,U+60cb,U+61a7,U+61ac,U+61cb,U+6233,U+62a0,U+62e7,U+62ee,U+62f4,U+62f7,U+634e,U+6382,U+63c9,U+63ea,U+6400,U+645e,U+6482,U+6556,U+6593,U+6615,U+664f,U+66e6,U+672d,U+675e,U+67da,U+6805,U+6808,U+6868,U+68a2,U+695e,U+69ad,U+6a80,U+6a90,U+6b83,U+6be1,U+6c30,U+6cad,U+6cb1,U+6cf1,U+6d31,U+6d93,U+6dae,U+6dbf,U+6dc6-6dc7,U+6e0d,U+6e32,U+6e3a,U+6e85,U+6eba,U+6f3e,U+6f5e,U+6f7c,U+6fee,U+71ee,U+722a,U+72b7,U+72e9,U+73ba,U+73d1,U+7409,U+7435-7436,U+7459-745a,U+747e,U+7487,U+74e2,U+7504,U+752c-752d,U+7599,U+759f,U+75a1,U+75ca,U+75f0,U+761f,U+7629,U+777f,U+7785,U+77a5,U+77bf,U+78d5,U+7934,U+7940,U+79a7,U+7b19,U+7c38,U+7c95,U+7cb1,U+7ce0,U+7eca,U+7ef7,U+7f2b,U+7f81,U+7fcc,U+8046,U+8148,U+8165,U+819b,U+81ba,U+828b,U+82ae,U+82b7,U+82d3,U+8301,U+830e,U+831c,U+8338,U+837c,U+8393,U+8398,U+83ba,U+83e0,U+83e9,U+853c,U+8654,U+86df,U+8712,U+873f,U+874e,U+8783,U+8859,U+88a4,U+8925,U+8bb7,U+8bff,U+8c19,U+8c1b,U+8c24,U+8c2c,U+8d61,U+8db4,U+8e6c,U+8f8a,U+8fe5,U+8ff8,U+901e,U+90f4,U+912f,U+9163,U+9170,U+91dc,U+949b,U+94a8,U+94b3,U+94c0,U+94e8,U+9525,U+9530,U+9539,U+954c-954d,U+9550,U+955b,U+962a,U+9685,U+96cc,U+9776,U+988d,U+9975,U+9985,U+9a6f,U+9aa5,U+9ab8,U+9c7f,U+9ca4,U+9cb8,U+9e25,U+9e35,U+9e4a\",\n },\n },\n {\n uri: _159,\n descriptors: {\n unicodeRange:\n \"U+4ea2,U+4ea5,U+4f36,U+4f84,U+4f8d,U+501a,U+5029,U+516e,U+51a5,U+51c4,U+51f8,U+5201,U+527f,U+5321,U+5352,U+5366,U+53e9,U+54c7,U+5632,U+5676,U+56b7,U+56bc,U+56da,U+56e4,U+5703,U+5729,U+5742,U+57a2-57a3,U+5815,U+58d1,U+5919,U+592d,U+5955,U+5a05,U+5a25,U+5a34,U+5b70,U+5b75,U+5bdd,U+5bf0,U+5c41,U+5c79,U+5c91,U+5c94,U+5ce6,U+5ced,U+5d69,U+5dc5,U+5e16,U+5e27,U+5f27,U+5f95,U+5ffb,U+6020,U+604d,U+6055,U+60e6,U+60eb,U+6123,U+618b,U+61a8,U+620d,U+62c7,U+62ce,U+62d9,U+631f,U+634d,U+6452,U+6479,U+64ce,U+64d2,U+655b,U+660a,U+6726,U+67c4,U+6809,U+6853,U+68e3,U+68f1,U+68fa,U+693f,U+6942,U+6995,U+69a8,U+69b4,U+6a71,U+6b89,U+6bcb,U+6bd3,U+6bd9,U+6c40,U+6cf8,U+6cfe,U+6d85,U+6da3,U+6daa,U+6e0e,U+6e43-6e44,U+6f88,U+7078,U+7099,U+70bd,U+70d9,U+70fd,U+7109,U+7184,U+7239,U+733f,U+73f2,U+748b,U+749c,U+749e,U+759a,U+75d2,U+75eb,U+7620,U+766b,U+7693,U+76cf,U+7738,U+773a,U+776b,U+778e,U+77aa,U+7852,U+78be,U+7948,U+795b,U+7960,U+796f,U+79ba,U+7a20,U+7a96,U+7aa5,U+7b03,U+7b28,U+7b50,U+7b77,U+7bc6,U+7bf1,U+7c27,U+7d0a,U+7ead,U+7ec5,U+7ee2,U+7ef0,U+7efd,U+7f0e,U+7f2e,U+7f79,U+7f9a,U+8098,U+80da,U+80e7,U+80f0,U+80f3,U+80fa,U+818a,U+81e7,U+8237-8238,U+8299,U+82b8,U+82ce,U+837b,U+83bd,U+83cf,U+8426,U+8475,U+85c9,U+85d5,U+85dc,U+85e9,U+871a,U+8747,U+8749,U+888d,U+8910,U+891a,U+8bb4,U+8be3,U+8bec,U+8bf2,U+8c06,U+8c0d,U+8d31,U+8d48,U+8de4,U+8e1e,U+8e4a,U+8e66,U+8f84,U+8f97,U+9083,U+90e1,U+9165,U+91c9,U+94b0,U+94f5,U+9504,U+9532,U+956d,U+95f5,U+95fa,U+9668,U+9698,U+96bd,U+9704,U+9773,U+9890,U+996a,U+997a,U+9a74,U+9a8b,U+9cc4,U+9ccc\",\n },\n },\n {\n uri: _160,\n descriptors: {\n unicodeRange:\n \"U+4ea8,U+4f1e,U+4f51,U+4f63,U+4f7c,U+4f83,U+4fa0,U+4fd1,U+4ffa,U+5018,U+5026,U+508d,U+50bb,U+50f5,U+50fb,U+5162,U+5319,U+5320,U+538c,U+5413,U+541f,U+5475,U+54bd,U+54d1,U+5589,U+5598,U+575f,U+57ae,U+57e0,U+5937,U+5974,U+5978,U+59ae,U+5a1f,U+5a49,U+5ab3,U+5b99,U+5b9b,U+5ba0,U+5be1,U+5be5,U+5c09,U+5c27,U+5de2,U+5e9a,U+5f26,U+5f8a,U+5f98,U+6021,U+606d,U+60bc,U+60d5,U+60e7,U+611a,U+614c,U+6254,U+626f,U+6292,U+6296,U+62b9,U+62e2,U+631a,U+631d,U+6320,U+6346,U+63ba,U+6467,U+64bc,U+658b,U+663c,U+6643,U+6652,U+6656,U+6687,U+66d9,U+66dd,U+66f0,U+673d,U+67ab,U+6816-6817,U+68a7,U+68ad,U+68cd,U+68e0,U+6986,U+69fd,U+6b47,U+6bd7,U+6c1f,U+6c2e-6c2f,U+6cbe,U+6de4,U+6e1d,U+6e83,U+6e9c,U+6ed4-6ed5,U+6f4d,U+70f9,U+7130,U+716e,U+718f,U+71ac,U+71e5,U+72fc,U+731c,U+7334,U+73ca,U+7422,U+7426,U+745f,U+7470,U+75af,U+75f4,U+762b,U+763e,U+7696,U+7737,U+7741,U+77a7,U+77bb,U+77ee,U+785d,U+788c,U+78ca,U+7901,U+796d,U+7985,U+79fd,U+7a3c,U+7a57,U+7a74,U+7b5b,U+7caa,U+7cb9,U+7cd5,U+7eac,U+7eb6,U+7ed1,U+7ee5,U+7f20,U+7f2a,U+7f38,U+7f69,U+7fa1,U+8018,U+8038,U+803f,U+804b,U+80a2,U+80be,U+80d6,U+817a,U+81fb,U+820c,U+82ad,U+82af,U+82bd,U+8327,U+8354,U+835f,U+8367,U+836b,U+840c,U+841d,U+8471,U+849c,U+84b2,U+84c9,U+8517,U+851a,U+8549,U+8681,U+8721,U+8776,U+88d9,U+88f9,U+89c5,U+8c1c,U+8c34,U+8d81,U+8d9f,U+8e0a,U+8e72,U+8eb2,U+8fed,U+901b,U+902e,U+906e,U+9091,U+90aa,U+90af,U+915d,U+9171,U+946b,U+9489,U+9499,U+94a5,U+9508,U+9524,U+952d,U+9551,U+9576,U+95f7,U+9600,U+96b6,U+96c0,U+9756,U+97f6,U+98a0,U+98a4,U+997f,U+9a73,U+9a86,U+9ad3,U+9e3d,U+9ed4\",\n },\n },\n {\n uri: _161,\n descriptors: {\n unicodeRange:\n \"U+4e4d,U+4e5e,U+4ec7,U+4ed5,U+50da,U+50e7,U+515c,U+51a4,U+51ff,U+5203,U+5254,U+5300,U+533e,U+5375,U+53ee,U+5435,U+543b,U+5455,U+548b,U+548f,U+54d7,U+54fa,U+5578,U+5587,U+55a7,U+560e,U+5760,U+576f,U+5777,U+5830,U+58a9,U+5962,U+59e8,U+5a07,U+5a23,U+5a3c,U+5b5a,U+5bb5,U+5bc5,U+5bde,U+5c7f,U+5cb1,U+5ce8,U+5cea,U+5d29,U+5d4c,U+5e18,U+5f57,U+5f5d,U+5f87,U+5ff1,U+6016,U+601c,U+6064,U+6177,U+61d2,U+625b,U+62e3,U+62f1,U+634f,U+63a0,U+6401,U+6405,U+6495,U+64c2,U+6512,U+6577,U+6590,U+65a7,U+65a9,U+65f7,U+6627,U+6655,U+6714,U+6795,U+67d1,U+67ff,U+68b3,U+68d5,U+68d8,U+6930,U+6960,U+6977,U+69bb,U+69d0,U+6a31,U+6b7c,U+6bb4,U+6c22,U+6c72,U+6c79,U+6c7e,U+6c81,U+6c93,U+6ca5,U+6cbc,U+6ce3,U+6cfb,U+6d3c,U+6da9,U+6df3,U+6e2d,U+6eaf,U+6ec7,U+6f13,U+6f33,U+6f62,U+6fa1,U+7011,U+707c,U+708a,U+70c1,U+70d8,U+70eb,U+711a,U+7194,U+7281,U+7316,U+7357,U+7384,U+7405,U+742a,U+745b,U+7574,U+7578,U+75ea,U+7682,U+7792,U+77d7,U+77e9,U+77eb,U+77f6,U+780c,U+78c5,U+7941,U+79e4,U+7a1a,U+7a9c,U+7ad6,U+7b5d,U+7bf7,U+7c07,U+7c3f,U+7c9f,U+7ca5,U+7cdf,U+7e82,U+7eab,U+7ece,U+7eda,U+7f09,U+7f15,U+7f9e,U+7fdf,U+7fe9,U+803b,U+803d,U+80aa,U+80b4,U+813e,U+8155,U+817b,U+819d,U+821c,U+82b9,U+82df,U+82ef,U+8304,U+83b9,U+8446,U+853d,U+85af,U+85fb,U+8650,U+865e,U+86d9,U+86ee,U+8700,U+8862,U+889c,U+88d4,U+88f8,U+895f,U+8a79,U+8bb3,U+8bb6,U+8bc0,U+8beb,U+8bf5,U+8c23,U+8c79,U+8d1e,U+8dcb,U+8e29,U+8e44,U+8e81,U+8eac,U+8eaf,U+8f8d,U+9050,U+90f8,U+914b,U+948a,U+94be,U+94ee,U+950c,U+9540,U+962e,U+9647,U+9661,U+9699,U+96cf,U+9716,U+9761,U+97a0,U+97e7,U+9a7c,U+9a8f,U+9ae6,U+9cd6,U+9e26\",\n },\n },\n {\n uri: _162,\n descriptors: {\n unicodeRange:\n \"U+4fa3,U+4fae,U+4fd8,U+4fef,U+50a3,U+5189,U+5195,U+51db,U+51f3,U+51f9,U+5220,U+5228,U+5288,U+52ff,U+532e,U+533f,U+5351,U+53db,U+53ed,U+5450,U+5484,U+5490,U+54c9,U+54e9,U+5501,U+5507,U+5543,U+55d3,U+56a3,U+575e,U+589f,U+5984,U+59ec,U+5a04,U+5a36,U+5a77,U+5a9a-5a9b,U+5ab2,U+5ac2,U+5ad6,U+5bc7,U+5c2c,U+5c34,U+5c51,U+5cd9,U+5d0e,U+5deb,U+5e3c,U+5e87,U+5ed3,U+5f13,U+5f64,U+5fe1,U+606a,U+6096,U+60df,U+60f6,U+60f9,U+6151,U+620e,U+6241,U+6252,U+6273,U+627c,U+6289,U+62c2,U+62cc,U+62ef,U+6361,U+6363,U+63b7,U+63e3,U+6518,U+66ae,U+6756,U+6789,U+6813,U+6829,U+6862,U+6866,U+6893,U+6897,U+690e,U+6984,U+69cc,U+6a1f,U+6a44,U+6a59,U+6ba1,U+6c13,U+6c90,U+6ca6,U+6cbd,U+6ccc,U+6cd3,U+6cd7,U+6d4a,U+6d4f,U+6d5a,U+6d9f,U+6da1,U+6dcc,U+6ea5,U+6ee4,U+6ee6,U+6f2f,U+6f8e,U+701a,U+7095,U+709c,U+70af,U+70db,U+70e8,U+714e,U+715e,U+71a0,U+71ce,U+7235,U+7280,U+72d0,U+72f8,U+73ab,U+7410,U+745c,U+7480,U+74a7-74a8,U+74e3,U+75ae,U+75f9,U+76b1,U+76ce,U+7736,U+77e2-77e3,U+781a,U+789f,U+797a,U+79be,U+79c3,U+79c6,U+79f8,U+7a8d,U+7a98,U+7aa6,U+7aff,U+7b1b,U+7cd9,U+7d6e,U+7ede,U+7eee,U+7f00,U+7f24,U+7f2d,U+7fd8,U+800d,U+8116,U+8151,U+81b3,U+8205,U+82c7,U+82db,U+832c,U+8335,U+8339,U+8386,U+846b,U+8587,U+8611,U+8682,U+868a,U+868c,U+8774,U+88d8,U+88f4,U+8912,U+8b6c,U+8bbd,U+8c0e,U+8c41,U+8d26,U+8d3b-8d3c,U+8d50,U+8dea,U+8e35,U+8f99,U+8fe2,U+8fe9,U+9017,U+914c,U+916f,U+9175-9176,U+918b,U+94a0,U+94ae,U+94ce,U+94f2,U+951a,U+952f,U+9541,U+9640,U+9672,U+968b,U+96cd,U+96ef,U+9713,U+97ec,U+9885,U+9992,U+9a6d,U+9a79,U+9a85,U+9cbb,U+9cd7,U+9cde,U+9e93,U+9f9f\",\n },\n },\n {\n uri: _163,\n descriptors: {\n unicodeRange:\n \"U+4e11,U+4ed7,U+4fcf,U+4fe9,U+4fed,U+50ac,U+50b2,U+5112,U+5180,U+5188,U+51f6,U+522e,U+5265,U+52cb,U+52df,U+5349,U+5367,U+5378,U+537f,U+5395,U+5398,U+53d4,U+543e,U+5440,U+5446,U+54b8,U+5565-5566,U+5580,U+55bb,U+56ca,U+572d,U+573e,U+574e,U+5782-5784,U+58f3,U+5938-5939,U+5948,U+594e,U+5a1c,U+5a74,U+5ae9,U+5b55,U+5b5c,U+5bb0,U+5bd3,U+5bf8,U+5c3f,U+5d14,U+5d2d,U+5df7,U+5dfe,U+5e05-5e06,U+5e1c,U+5e62,U+5e7b,U+5e7d,U+5ed6,U+5f2f,U+5f66,U+5f6c,U+5fa1,U+604b,U+609f,U+60a6,U+60e8,U+6101,U+6124,U+6127,U+6148,U+61be,U+6247,U+62d8,U+62da,U+633d,U+635e,U+6367,U+6380,U+638f,U+63a9,U+63fd,U+641c,U+64e6,U+655e,U+6572,U+6591,U+65a5,U+6691,U+6735,U+67a2-67a3,U+67ef,U+680b,U+6876,U+6905,U+6a0a,U+6a61,U+6b79,U+6bb7,U+6bbf,U+6c41,U+6c55,U+6c83,U+6c9b,U+6ca7,U+6cfc,U+6d46,U+6d51,U+6d74,U+6d9d,U+6daf,U+6dc0,U+6deb,U+6e17,U+6e24,U+6e89,U+6ea2,U+6ef4,U+6f6d,U+707f,U+70b3,U+70e4,U+70ef,U+710a,U+722c,U+725f,U+7261,U+72ee,U+72f1,U+730e,U+732b,U+7433,U+7538,U+75bc,U+7624,U+7709,U+7750,U+7779,U+7802,U+7898,U+78a7,U+78b1,U+78cb,U+78f7,U+7984,U+7a83,U+7aed,U+7b3c,U+7b4b,U+7c92,U+7c98,U+7ca4,U+7eb9,U+7ee3,U+7ef3,U+7ef5,U+7f05,U+7f55,U+7f62,U+7fc1,U+7fd4,U+7fe0,U+8042,U+806a,U+80a0,U+80a4,U+80c3,U+8102,U+8106,U+814a,U+8154,U+8247,U+8258,U+82cd,U+8328,U+832b,U+8389,U+83ca,U+845b,U+846c,U+84b8,U+8574,U+859b,U+8680,U+8695,U+86c7,U+8702,U+886c,U+8896,U+88b1,U+88e4,U+8bc8,U+8c10,U+8c26,U+8c28,U+8c2d,U+8d4c,U+8d63,U+8f67,U+8f74,U+8fc4,U+9006,U+9063,U+90a2,U+90b1,U+90c1,U+9177,U+9189,U+9493,U+949e,U+94fe,U+9610,U+961c,U+96a7,U+96fe,U+978d,U+97f5,U+9888,U+997c,U+9a84,U+9b3c,U+9b44-9b45,U+9b54,U+9e64,U+9f0e,U+9f9a\",\n },\n },\n {\n uri: _164,\n descriptors: {\n unicodeRange:\n \"U+4e19,U+4e38,U+4e53,U+4e7e,U+4e9f,U+4ec6,U+4f50,U+4fde,U+502a,U+5154,U+517d,U+51d1,U+51f0,U+5239,U+5256,U+52c9,U+52fe,U+5308,U+532a,U+535c,U+5384,U+53a2,U+53a8,U+53c9,U+53e0,U+5496,U+54ac,U+54c0,U+54c4,U+54e8,U+5561,U+5582,U+561b,U+5631,U+566a,U+5764,U+576a,U+5792,U+57ab,U+584c,U+5885,U+58f6,U+59a8,U+5acc,U+5bc2,U+5c38-5c39,U+5c60,U+5c6f,U+5c82,U+5c90,U+5d16,U+5dcd,U+5e37,U+5e90,U+5eb8,U+5f6a,U+5fcc,U+6012,U+6068,U+6073,U+607c,U+6094,U+6109,U+621a,U+626e,U+6284,U+62d0,U+62e6,U+62fe,U+6321,U+6328,U+632b,U+6349,U+6454,U+65ed,U+660f,U+6674,U+66a8,U+6749,U+674f,U+6760,U+67af,U+6850,U+6854,U+6869,U+68a8,U+68d2,U+68f5,U+6912,U+6b49,U+6b6a,U+6bef,U+6c28,U+6c5d,U+6c82,U+6cab,U+6cb8,U+6cc4,U+6cf5,U+6d47,U+6d78,U+6da4,U+6dc4,U+6dcb,U+6df9,U+6e0a,U+6e23,U+6e5b,U+6eb6,U+6f06,U+6f47,U+6f84,U+6f9c,U+6fd2,U+7076,U+70ac,U+7199,U+723d,U+72ac,U+72ed,U+7476,U+7529,U+752b,U+754f,U+7554,U+75d5,U+7626,U+76ef,U+7720,U+7766,U+7784,U+77ac,U+780d,U+7838,U+7845,U+786b,U+78b3,U+7978,U+79b9,U+79c9,U+79e7,U+7a3d,U+7a84,U+7a9f,U+7b0b,U+7b52,U+7c7d,U+7f1a,U+7fc5,U+7ff0,U+804a,U+8086-8087,U+808c,U+809a,U+80ba,U+810a,U+8180,U+818f,U+81c2,U+81ed,U+8231,U+8292,U+829c,U+82a6,U+82d1,U+8346,U+838e,U+839e,U+83c7,U+83f1,U+8403,U+840e,U+8513,U+857e,U+85e4,U+867e,U+871c,U+87ba,U+87f9,U+884d,U+8944,U+8a93,U+8c05,U+8d2c,U+8d2e,U+8d42-8d43,U+8dfb,U+8e22,U+8eba,U+8f69,U+8f9c,U+8fa3,U+8fa8,U+8fb1,U+900a,U+9038,U+903b,U+9042,U+904f,U+90b5,U+90dd,U+9102,U+9187,U+94a7,U+94c5,U+9523,U+95f8,U+95fd,U+960e,U+964b-964c,U+96c1,U+9709,U+971c,U+97ad,U+9882,U+9965,U+9976,U+9988,U+99a8,U+9a82,U+9a9a,U+9b41,U+9c8d,U+9e45,U+9e70,U+9e9f,U+9f3b,U+9f7f\",\n },\n },\n {\n uri: _165,\n descriptors: {\n unicodeRange:\n \"U+4e08,U+4e18,U+4e1b,U+4e22,U+4e27,U+4e32,U+4e52,U+4e73,U+4ead,U+4ed4,U+4ed9,U+4ef0,U+4fa6,U+5076,U+5179,U+51bb,U+51c9,U+51ef,U+51fd,U+524a,U+526a,U+529d,U+52ab,U+5306,U+5339,U+53d9,U+540a,U+5410,U+541e,U+5439,U+54b1,U+54ed,U+5564,U+558a,U+55b7,U+5634,U+574a,U+5751,U+57a6,U+57cb,U+57d4,U+5824,U+582a,U+5835,U+5858,U+5893,U+58e4,U+5951,U+5986,U+59da,U+59fb,U+59ff,U+5a03,U+5a46,U+5ac1,U+5b5d,U+5bfa,U+5c18,U+5c3a,U+5c48,U+5c4f,U+5c61,U+5cb3,U+5d1b,U+5e15,U+5e3d,U+5e99,U+5e9e,U+5eca,U+5f0a,U+5f17-5f18,U+5f25,U+5f7c,U+5fcd,U+6028,U+60a0,U+60ac,U+60d1,U+614e,U+6155,U+6168,U+61c8,U+6208,U+6212,U+6251,U+629a-629b,U+62ab-62ac,U+62fc,U+6323,U+632a,U+63d2,U+643a,U+6491-6492,U+649e,U+64b0,U+64c5,U+659c,U+6614,U+662d,U+6664,U+6670,U+6676,U+6746,U+67cf,U+67d4,U+682a,U+6843,U+6846,U+68da,U+6b3a,U+6b67,U+6c27,U+6c5b,U+6c64,U+6c70,U+6caa,U+6cca,U+6ce1,U+6d12,U+6d45,U+6dd1,U+6dd8,U+6e34,U+6e7f,U+6ee5,U+6f02,U+7092,U+70c2,U+70e6,U+7115,U+7237,U+7272,U+727a,U+72c2,U+739b,U+73b2,U+743c,U+751c,U+758f,U+75b2,U+7686,U+76c6,U+76d2,U+76fc,U+775b,U+77a9,U+7816,U+788e,U+7897,U+78b0,U+79bd,U+7a0d,U+7a91,U+7a9d,U+7ae3,U+7bad,U+7cca,U+7d2b,U+7eb1,U+7f06,U+7f14,U+7f1d,U+7f50,U+7ffc,U+8036,U+80bf,U+80c1,U+80ce,U+80f8,U+8109,U+810f,U+8170,U+8179,U+819c,U+821f,U+8230,U+8236,U+8273,U+829d,U+82f9,U+8305,U+8350,U+83b2,U+83cc,U+8404,U+840d,U+8427,U+8482,U+8679,U+8854,U+886b,U+8bbc,U+8be6,U+8c31,U+8c6b,U+8d4b,U+8dcc,U+8e2a,U+8e48,U+8f90,U+8fb0,U+9022,U+903c,U+903e,U+9065,U+916c,U+917f,U+94a9,U+94c3,U+94dd,U+94ed,U+9510,U+953b,U+96c7,U+970d,U+9738,U+9877,U+987d,U+989c,U+98d8,U+9a70,U+9a91,U+9aa4,U+9b42,U+9b4f,U+9e2d,U+9e3f,U+9e7f,U+9f20\",\n },\n },\n {\n uri: _166,\n descriptors: {\n unicodeRange:\n \"U+4e59,U+4ed3,U+4f0f,U+4f38,U+4f69,U+4fa7,U+4faf,U+4ff1,U+5077,U+5085,U+5144,U+5151,U+51af,U+51b6,U+51cc,U+523a,U+5251,U+5269,U+5272,U+52d8,U+5353,U+5389,U+53f9,U+5401,U+5415,U+541b,U+54f2,U+5524,U+554a,U+559d,U+5609,U+5740,U+575d,U+5806,U+5821,U+586b,U+5915,U+594f,U+5960,U+5999,U+59a5,U+59b9,U+59c6,U+59d1,U+59dc,U+5b5f,U+5b64,U+5b87,U+5bb4,U+5bbf,U+5c16,U+5c1d,U+5c3e,U+5c9a,U+5ca9,U+5cad,U+5cfb,U+5de1,U+5de7,U+5de9,U+5ef7,U+5f04,U+5f70,U+5f79,U+5fc6,U+602a,U+6050,U+6052,U+6070,U+6084,U+60b2,U+60dc,U+60e9,U+6167,U+6170,U+61c2,U+6270,U+6291,U+62b1,U+62bc,U+62dc,U+62df,U+62f3,U+6324,U+633a,U+6377,U+6398,U+63cf,U+640f,U+642c-642d,U+6458,U+6478,U+6500,U+654c,U+6566,U+658c,U+65c1,U+65cb,U+65e8,U+65ec,U+6696-6697,U+6734,U+679a,U+679d,U+67dc,U+67f3-67f4,U+680f,U+683d,U+684c,U+68af,U+699c,U+6bc1,U+6c0f,U+6c1b,U+6c57,U+6c6a,U+6d3d,U+6d6e,U+6d82,U+6db5,U+6dee,U+6e58,U+6eaa,U+6ecb,U+6ede,U+6ee9,U+6f0f,U+6f20,U+6f58,U+704c,U+7070,U+70b8,U+718a,U+7238,U+7262,U+7275,U+72b9,U+72d7,U+72e0,U+741b,U+7434,U+7483,U+74f6-74f7,U+75ab,U+764c,U+7761,U+7855,U+7891,U+78c1,U+79d2,U+7a00,U+7a3b,U+7c97,U+7ea4,U+7eb2,U+7ed2,U+7eea,U+7ef8,U+7f18,U+7fbd,U+8000,U+8010,U+8096,U+809d,U+80a9,U+817f,U+81e3,U+8206,U+8212,U+82ac,U+8302,U+8361,U+8377,U+83f2,U+8461,U+848b,U+84ec,U+8521,U+85aa,U+8870,U+8877,U+8881,U+888b,U+88ad,U+88c2,U+8986,U+8bd1,U+8bf1,U+8d24,U+8d2a,U+8d3e-8d3f,U+8d41,U+8d56,U+8d64,U+8d6b,U+8e0f,U+8f70,U+8f85,U+8f88,U+8fa9,U+9003,U+901d,U+90b9,U+90ce,U+94a6,U+94f8,U+9505,U+95ea,U+95ef,U+95f2,U+95f9,U+9601,U+9605,U+9634,U+966a,U+9677,U+9690,U+9694,U+96d5,U+971e,U+9896-9897,U+9972,U+9a71,U+9a76,U+9a7e,U+9e1f,U+9e23\",\n },\n },\n {\n uri: _167,\n descriptors: {\n unicodeRange:\n \"U+4e01,U+4e43,U+4ea6,U+4ef2,U+4eff,U+4f26,U+4f2a,U+4f2f,U+4f5b,U+4fa8,U+4fca,U+4fd7,U+5021,U+504f,U+5141,U+51c0,U+51dd,U+51e4,U+51ed,U+5200,U+5237,U+5427,U+5448,U+54a8,U+5706,U+5708,U+5723,U+575b,U+57c3,U+5899,U+58a8,U+58c1,U+5976,U+5988,U+59bb,U+59d0,U+59d3,U+5a18,U+5a31,U+5a92,U+5b54,U+5b85,U+5baa-5bab,U+5bc4,U+5bd2,U+5be8,U+5bff,U+5c65,U+5d07,U+5e1d,U+5e78,U+5e7c,U+5f03,U+5f1f,U+5f39,U+5f6d,U+5f92,U+5faa,U+5fbd,U+5fe7,U+5ffd,U+60a8,U+60ef,U+6108,U+6162,U+622a,U+6234,U+626b,U+626d,U+62c6,U+62d2,U+62d4,U+62d6,U+62e8,U+6316,U+6355,U+63ed,U+6447,U+64a4,U+65f1,U+6606,U+6628,U+664b,U+6668,U+6682,U+66f9,U+66fc,U+66ff,U+6717,U+6740,U+676d,U+67aa,U+67ec,U+67f1,U+6842,U+6851,U+695a,U+6982,U+6a2a,U+6b20,U+6b23,U+6b32,U+6b96,U+6bc5,U+6beb,U+6c60,U+6c9f,U+6cea,U+6cf3,U+6d1e,U+6d53,U+6d66,U+6d69,U+6d8c,U+6d9b,U+6db2,U+6de1,U+6dfb,U+6e14,U+6ed1,U+6eda,U+6ee8,U+6f2b,U+706d,U+7089,U+708e,U+70ad-70ae,U+70e7,U+7126,U+714c,U+71c3,U+71d5,U+7206,U+7259,U+731b,U+73a9,U+73bb,U+74dc,U+7532,U+7545,U+755c,U+75c7,U+7687,U+76d7,U+76f2,U+788d,U+78e8,U+79e6,U+79e9,U+7a3f,U+7a46,U+7a97,U+7af9,U+7bee,U+7c4d,U+7c89,U+7cd6,U+7eb5,U+7ebd,U+7ed8,U+8017,U+8033,U+80c0,U+80de,U+80f6,U+8138,U+817e,U+81a8,U+820d,U+827e,U+82b3,U+82d7,U+83b1,U+84c4,U+84dd,U+8584,U+864e,U+865a,U+866b,U+86cb,U+88d5,U+89e6,U+8bca,U+8bde,U+8bfa,U+8c0a,U+8c37,U+8c46,U+8c6a,U+8c8c,U+8d1d,U+8d29,U+8d4f,U+8d54,U+8d5a,U+8d60,U+8d62,U+8f7f,U+8f96,U+8f9e-8f9f,U+8fc1,U+8fdf,U+8fea,U+8ff7,U+9012,U+906d,U+9075,U+90a6,U+90bb,U+90ca,U+9178,U+9192,U+91ca,U+94bb,U+94dc,U+94fa,U+9501,U+950b,U+9521,U+955c,U+963b,U+9655,U+9675-9676,U+9887,U+9891,U+9971,U+9a97,U+9ece,U+9ed8\",\n },\n },\n {\n uri: _168,\n descriptors: {\n unicodeRange:\n \"U+4e1d,U+4e39,U+4e4c,U+4e4f,U+4e54,U+4e58,U+4e95,U+4ea1,U+4eab,U+4eae,U+4ec1,U+4f10,U+4f19,U+4f30,U+4f34,U+4fb5,U+503e,U+518c,U+5192,U+51a0,U+51ac,U+51b0,U+51e1,U+5211,U+5242,U+52a3,U+52b2,U+52c3,U+52c7,U+52d2,U+52e4,U+5377,U+539a,U+53a6,U+53e5,U+5417,U+5510,U+552f,U+5531,U+574f-5750,U+5761,U+5851,U+5854,U+58ee,U+593a,U+5949,U+5954,U+5a5a,U+5b8b,U+5bbd,U+5c04,U+5c0a,U+5c4b,U+5ce1,U+5cf0,U+5e10,U+5e8a,U+5e9f,U+5ec9,U+5f31,U+5f84,U+5fd8-5fd9,U+5fe0,U+6015,U+6062,U+6069,U+6076,U+6089,U+60a3,U+60ca,U+620f,U+624e,U+6263,U+6298,U+62a2,U+62bd,U+6311,U+6350,U+6389,U+638c,U+63f4,U+6446,U+644a,U+6469,U+64cd,U+654f,U+6562,U+656c,U+65d7,U+65e6,U+65fa,U+660c,U+6653,U+66b4,U+670b,U+672b,U+676f-6770,U+6881,U+6885,U+68a6,U+68cb,U+68ee,U+6b8a,U+6c88-6c89,U+6cc9,U+6ce5,U+6d01,U+6d17,U+6d1b,U+6d59,U+6d6a,U+6da8,U+6df7,U+6e10,U+6e20-6e21,U+6f5c,U+706f,U+70bc,U+719f,U+7267,U+732a,U+73cd,U+7518,U+756a,U+7586,U+7591,U+75db,U+76c8,U+76d0,U+76d6,U+76d8,U+76df,U+76fe,U+77db,U+7801,U+786c,U+795d,U+7965,U+79cb,U+7a77,U+7a7f,U+7aef,U+7b11,U+7bb1,U+7bc7,U+7ea0,U+7eaf,U+7ed5,U+7edc,U+7f13,U+7f29,U+7f34,U+7f8a,U+7ffb,U+8015,U+8058,U+805a,U+8083,U+80af,U+80c6,U+80cc,U+811a,U+8150,U+82e5,U+8336,U+8352,U+83ab,U+8428,U+8463,U+852c,U+8861,U+89c8,U+8bcd,U+8bd7,U+8bda,U+8be2,U+8bef,U+8bf8,U+8c0b,U+8c13,U+8d34,U+8d3a,U+8d74,U+8d76,U+8da3,U+8dd1,U+8ddd,U+8ddf,U+8df3,U+8f68,U+8f6f,U+8f7d,U+8f91,U+8f9b,U+8fbd,U+8fc8,U+8fd4,U+8feb,U+8ff9,U+900f,U+9057,U+907f-9080,U+90d1,U+90ed,U+91ce,U+9519,U+9526,U+95ed,U+9614,U+9635,U+9644,U+9686,U+96c5,U+96ea,U+9707,U+9732,U+9759,U+978b,U+9876,U+9881,U+9910,U+996e,U+9970,U+9c81,U+9e21,U+9ebb,U+9f84\",\n },\n },\n {\n uri: _169,\n descriptors: {\n unicodeRange:\n \"U+4e3d,U+4e4e,U+4e71,U+4e8f,U+4ed8,U+4eea,U+4f0a,U+4f0d,U+4f11,U+4f1f,U+4f24,U+4f3c,U+4f73,U+4fc4,U+500d,U+5012,U+501f,U+503a,U+505c,U+507f,U+50a8,U+514d,U+5178,U+517c,U+51b2,U+51b7,U+520a,U+5238,U+523b,U+52b1,U+535a,U+5371,U+5385,U+53eb-53ec,U+53f3,U+53f6,U+5409,U+542b,U+542f,U+5434,U+5462,U+5473,U+547c,U+54c8,U+54ea,U+56fa,U+5733,U+5757,U+5766,U+5802,U+585e,U+590f,U+591c,U+591f,U+5947,U+594b,U+5987,U+5a01,U+5b59,U+5b63,U+5b88,U+5b97,U+5b9c,U+5bbe,U+5bfb,U+5c01,U+5c1a,U+5c24,U+5c3c,U+5c97,U+5c9b,U+5cb8,U+5de6,U+5e01,U+5e2e,U+5e45,U+5e55,U+5e84,U+5ef6,U+5f02,U+5f52,U+5f69,U+5f7b,U+5f90,U+5fae,U+6000,U+600e,U+6025,U+60e0,U+6276,U+6297,U+62b5,U+62cd,U+62d3,U+62e5,U+62e9,U+62ff,U+6302,U+632f,U+63e1,U+6444,U+64ad,U+653b,U+6551,U+6563,U+65a4,U+65e7,U+6620,U+667a,U+66f2,U+671d,U+6731,U+6742,U+675f,U+6768,U+677e-677f,U+6790,U+67b6,U+67d3,U+6863,U+68b0,U+68c9,U+690d,U+6b8b,U+6bcd,U+6bd2,U+6bd5,U+6c38,U+6c61,U+6cbf,U+6cdb,U+6cf0,U+6d2a,U+6d89,U+6da6,U+6f6e,U+6fb3,U+7075,U+707e,U+70df,U+7164,U+7236,U+725b,U+7389,U+73e0,U+745e,U+74e6,U+751a,U+7537,U+75be,U+76ae,U+76db,U+793c,U+7956,U+7981,U+79d8,U+79df,U+79fb,U+7adf,U+7ae5,U+7b14,U+7b26,U+7b54,U+7b79,U+7d2f,U+7eb8,U+7eba,U+7ec6,U+7ee9,U+7eff,U+7f5a,U+7f6a,U+7f72,U+8089,U+80a5,U+80e1,U+8111,U+8131,U+821e,U+822c,U+8270,U+8499,U+8651,U+867d,U+8840,U+8857,U+8863,U+88c1,U+89c9,U+89d2,U+8a89,U+8bed,U+8bfe,U+8c01,U+8c22,U+8d21,U+8d25,U+8d2f,U+8d5e,U+8d75,U+8d8b,U+8dc3,U+8de8,U+8df5,U+8f6e,U+8f86,U+8f89,U+8fc5,U+8ff0,U+8ffd,U+9014,U+904d,U+90ae,U+9274,U+949f,U+952e,U+969c,U+96c4,U+96e8,U+96f6-96f7,U+97e9,U+987f,U+996d,U+9a7b,U+9aa8,U+9c7c,U+9c9c,U+9e4f,U+9f13,U+9f50\",\n },\n },\n {\n uri: _170,\n descriptors: {\n unicodeRange:\n \"U+4e13,U+4e16,U+4e1c,U+4e24,U+4e3e,U+4e49,U+4e61,U+4e66,U+4e89,U+4e8c,U+4e94,U+4e9b,U+4ea4,U+4eac,U+4ebf,U+4eca,U+4ef6-4ef7,U+4efb,U+4f18,U+4f20,U+4f46,U+4f7f,U+4fe1,U+503c,U+505a,U+5146,U+5148,U+515a,U+5171,U+5177,U+519b,U+51b3,U+51c6,U+51e0,U+5212,U+521b,U+522b,U+529e,U+52bf,U+534e-534f,U+5355,U+5357,U+5382,U+539f,U+53bb,U+53bf,U+53c2,U+53c8,U+53ca,U+53d6-53d8,U+53e3,U+53ea,U+53f0,U+540d,U+5411,U+56db,U+56de,U+56e0,U+56e2,U+578b,U+57ce,U+57fa,U+589e,U+5904,U+5934,U+5982,U+5b89,U+5b8c,U+5bfc,U+5c06,U+5c11,U+5c40,U+5c71,U+5e38,U+5e72,U+5e76,U+5e7f,U+5e94,U+5e9c,U+5f0f,U+5f15,U+5f20,U+5f3a,U+5f62,U+5f88,U+5fc5,U+5fd7,U+5feb,U+601d,U+6027,U+60c5,U+60f3,U+610f,U+6216,U+6218,U+624b,U+624d,U+6279,U+628a,U+6295,U+6301,U+6307,U+636e,U+63a5,U+63a8,U+652f,U+6536,U+653e,U+6548,U+6559,U+6570,U+65bd,U+65e0,U+6602,U+660e,U+6613,U+66f4,U+6700,U+670d,U+671f,U+672f,U+6743,U+674e,U+6751,U+6761,U+6784,U+6797,U+679c,U+67e5,U+6807,U+6837,U+683c,U+6b21,U+6b63-6b65,U+6bcf,U+6bd4,U+6c42,U+6c5f,U+6ca1,U+6cbb,U+6d3b,U+6d41,U+6d88,U+6df1,U+70b9,U+7136,U+7269,U+7279,U+7531,U+754c,U+767e,U+76ca,U+76f8,U+770b,U+7740,U+7814,U+79ef,U+7a0b,U+7a0e,U+7a76,U+7b80,U+7cbe,U+7cfb,U+7e41,U+7ea7,U+7ec4,U+7ec7,U+7ed3,U+7ed9,U+7edf,U+7f8e,U+8001,U+804c,U+8054,U+80b2,U+81f3,U+8425,U+8868,U+88ab,U+897f,U+89c1-89c2,U+89c4,U+89c6,U+89e3,U+8ba1,U+8ba4,U+8bae,U+8bb0,U+8bba,U+8bc1,U+8c03,U+8d28,U+8d39,U+8def,U+8f66,U+8f6c,U+8fd0-8fd1,U+9020,U+9053,U+90a3,U+90fd,U+91cc,U+9500,U+9547,U+95e8,U+95f4,U+961f,U+9645,U+9662,U+96be,U+96c6,U+9700,U+9769,U+97e6,U+9875,U+9879,U+9886,U+9898,U+98ce,U+9996,U+2b5af,U+2cc56,U+2e9f5,U+30edd-30ede\",\n },\n },\n {\n uri: _171,\n descriptors: {\n unicodeRange:\n \"U+4e03,U+4e30,U+4e34,U+4e45,U+4e60,U+4e70,U+4e88,U+4e91-4e92,U+4ea9,U+4eb2,U+4ec0,U+4ecb,U+4ecd,U+4ee4,U+4fee,U+5019,U+5047,U+50cf,U+5145,U+516d,U+5170,U+5175,U+5199,U+51cf,U+51fb,U+521a,U+5224,U+5267,U+52aa,U+5347-5348,U+534a,U+5356,U+5361,U+536b,U+5370,U+538b,U+53e4,U+53e6,U+5403,U+5426,U+5428,U+542c,U+5438,U+5668,U+56ed,U+56f4,U+56fe,U+57df,U+592a,U+5957,U+5b69,U+5b81,U+5b8f,U+5b98,U+5b9d,U+5ba1,U+5ba4,U+5bb3,U+5bc6,U+5bdf,U+5c3d,U+5c5e,U+5c81,U+5ddd,U+5de8,U+5dee,U+5e0c,U+5e86,U+5e8f,U+5e93,U+5e95,U+5e97,U+5ea7,U+5ead,U+5eb7,U+5f55,U+5f81,U+5f85,U+5ff5,U+6001,U+613f,U+6258,U+6267,U+6269,U+626c,U+627e,U+62db,U+62ec,U+6325,U+635f,U+6362,U+6388,U+6392,U+63a2,U+63a7,U+63aa,U+641e,U+6545,U+6597,U+65e2,U+65e9,U+661f,U+665a,U+666e-666f,U+66fe,U+6728,U+67d0,U+6811,U+6838,U+6865,U+697c,U+6b22,U+6b27,U+6b4c,U+6b62,U+6b66,U+6b7b,U+6bdb,U+6c47,U+6c49,U+6c7d,U+6c99,U+6cfd,U+6d0b,U+6d25,U+6d32,U+6d3e,U+6d4b,U+6e29,U+6e56,U+6e7e,U+6f14,U+6fc0,U+706b,U+70c8,U+7247,U+72af,U+72b6,U+72ec,U+732e,U+73ed,U+7403,U+7533,U+753b,U+7559,U+7565,U+7597,U+767b,U+773c,U+7763,U+77ed,U+77ff,U+7968,U+798f,U+79bb,U+79c0-79c1,U+7ad9,U+7ae0,U+7b51,U+7b7e,U+7cae,U+7d22,U+7ea2,U+7eb3,U+7eb7,U+7ec3,U+7ec8,U+7ecd,U+7edd,U+7efc,U+7f16,U+7f3a,U+7f51,U+7f57,U+7f6e,U+80dc,U+822a,U+8239,U+826f,U+82cf,U+82e6,U+8349,U+8363,U+83dc,U+8457,U+85cf,U+878d,U+8865,U+8a00,U+8b66,U+8ba2,U+8ba8,U+8bad,U+8bb2,U+8bc9,U+8bd5,U+8bfb,U+8d2b,U+8d35,U+8d37,U+8f7b,U+8f93,U+8fce,U+8fdd,U+9000-9002,U+9010,U+9047,U+9093,U+9152,U+9488,U+94a2,U+9633,U+9636,U+963f,U+9646,U+9648,U+964d,U+9664,U+9669,U+9760,U+97f3,U+987a,U+987e,U+9884,U+98de,U+9986,U+9ed1\",\n },\n },\n {\n uri: _172,\n descriptors: {\n unicodeRange:\n \"U+4e14,U+4e25,U+4e48,U+4e50,U+4e5d,U+4e9a,U+4ec5,U+4efd,U+4f17,U+4f4e-4f4f,U+4f55,U+4f59,U+4f60,U+4f8b,U+4f9b,U+4f9d,U+4fbf,U+4fc3,U+5065,U+513f,U+5149,U+514b,U+516b,U+5174,U+517b,U+518d,U+51b5,U+5207,U+5217-5219,U+521d,U+526f,U+529f,U+52a9,U+52b3,U+5305,U+533b,U+5343,U+5360,U+5373-5374,U+5386,U+53cb-53cd,U+53f2,U+53f7,U+544a,U+5468,U+547d,U+54cd,U+552e,U+5584,U+56f0,U+571f,U+5747,U+575a,U+57f9,U+5883,U+58eb,U+58f0,U+5907,U+590d,U+592e,U+5931,U+5956,U+5965,U+5973,U+5979,U+59cb,U+5b57-5b58,U+5b83,U+5ba2-5ba3,U+5bb9,U+5bcc,U+5c42,U+5c45,U+5c4a,U+5dde,U+5df1,U+5df4,U+5e03,U+5e08,U+5e26,U+5e2d,U+5f71,U+5f80,U+5f8b,U+5fb7,U+606f,U+611f,U+6237,U+623f,U+6253,U+627f,U+6293,U+62a4,U+62c5,U+62c9,U+6309,U+6574,U+6599,U+65ad,U+65af,U+65c5,U+65cf,U+6625,U+663e,U+671b,U+672a,U+6750,U+6781,U+6821,U+6839,U+6848,U+68c0,U+6a21,U+6b3e,U+6bb5,U+6c14,U+6cb3,U+6cb9,U+6ce8,U+6e05,U+6e2f,U+6e38,U+6e90,U+6ee1,U+70ed,U+7167,U+7231,U+7248,U+724c,U+7387,U+738b,U+73af,U+7530,U+75c5,U+767d,U+76d1,U+76f4,U+771f,U+77e5,U+77f3,U+7834,U+7840,U+786e,U+793a,U+795e,U+79f0,U+7a33,U+7a7a,U+7a81,U+7ade,U+7b56,U+7b97,U+7c73,U+7c7b,U+7d20,U+7d27,U+7ea6,U+7eaa,U+7ebf,U+7ee7,U+7eed,U+7ef4,U+7fa4,U+8003,U+80a1,U+81f4,U+8272,U+827a,U+8282,U+82b1,U+82f1,U+8303,U+836f,U+83b7,U+843d,U+88c5,U+8ba9,U+8baf,U+8bb8,U+8bbf,U+8bc4,U+8bc6,U+8bdd,U+8be5,U+8bf7,U+8c08,U+8c61,U+8d1f,U+8d22-8d23,U+8d27,U+8d2d,U+8d38,U+8d5b,U+8d70,U+8d85,U+8d8a,U+8db3,U+8eab,U+8f83,U+8fb9,U+8fdc,U+8fde,U+9009,U+901f,U+914d,U+91c7,U+94b1,U+94c1,U+94f6,U+95fb,U+9632,U+9650,U+968f,U+9752,U+975e,U+987b,U+989d,U+98df,U+9999,U+9a6c,U+9a8c,U+9ec4,U+9feb-9fec\",\n },\n },\n {\n uri: _173,\n descriptors: {\n unicodeRange:\n \"U+98fb-990c,U+990e-990f,U+9911-992d,U+992f-9953,U+9956-9962,U+9964,U+9966,U+9973,U+9978-9979,U+997b,U+997e,U+9982-9983,U+9989,U+998c,U+998e,U+999a-99a4,U+99a6-99a7,U+99a9-99c8\",\n },\n },\n {\n uri: _174,\n descriptors: {\n unicodeRange:\n \"U+8e4c-8e50,U+8e53-8e58,U+8e5a-8e65,U+8e67-8e68,U+8e6a-8e6b,U+8e6e,U+8e71,U+8e73,U+8e75,U+8e77-8e7b,U+8e7d-8e7e,U+8e80,U+8e82-8e84,U+8e86,U+8e88-8e8e,U+8e91-8e93,U+8e95-8e9b,U+8e9d,U+8e9f-8eaa,U+8ead-8eae,U+8eb0-8eb1,U+8eb3-8eb9,U+8ebb-8ecd,U+8ecf-8f02\",\n },\n },\n {\n uri: _175,\n descriptors: {\n unicodeRange:\n \"U+2e3a,U+3001-3002,U+3008-3011,U+3014-3017,U+301d-301f,U+4dae,U+4e00,U+4e07,U+4e09-4e0b,U+4e0d-4e0e,U+4e1a,U+4e2a,U+4e2d,U+4e3a-4e3b,U+4e4b,U+4e5f,U+4e86,U+4e8b,U+4e8e,U+4ea7,U+4eba,U+4ece,U+4ed1,U+4ed6,U+4ee3,U+4ee5,U+4eec,U+4f01,U+4f1a,U+4f4d,U+4f53,U+4f5c,U+4fdd,U+5143,U+5165,U+5168,U+516c,U+5173,U+5176,U+5185,U+519c,U+51fa,U+5206,U+5229,U+5230,U+5236,U+524d,U+529b,U+52a0-52a1,U+52a8,U+5316-5317,U+533a,U+5341,U+5362,U+53d1,U+53ef,U+53f8,U+5404,U+5408,U+540c,U+540e,U+5458,U+548c,U+54c1,U+54e5,U+5546,U+559c,U+56fd,U+5728,U+5730,U+573a,U+5916,U+591a,U+5927,U+5929,U+592b,U+597d,U+59d4,U+5b50,U+5b66,U+5b9a,U+5b9e,U+5bb6,U+5bf9,U+5c0f,U+5c14,U+5c31,U+5c55,U+5de5,U+5df2,U+5e02,U+5e73-5e74,U+5ea6,U+5efa,U+5f00,U+5f53,U+5f97,U+5fc3,U+603b,U+6210-6211,U+6240,U+6280,U+62a5,U+63d0,U+6539,U+653f,U+6587,U+65b0,U+65b9,U+65e5,U+65f6,U+662f,U+6708-6709,U+672c,U+673a,U+675c,U+6765,U+6c11,U+6c34,U+6cd5,U+6ce2,U+6d4e,U+6d77,U+73b0,U+7406,U+751f,U+7528,U+7535,U+7684,U+76ee,U+793e,U+79cd,U+79d1,U+7acb,U+7b2c,U+7b49,U+7ba1,U+7ecf,U+8005,U+800c,U+80fd,U+81ea,U+884c,U+8981,U+8bbe,U+8bf4,U+8d44,U+8d77,U+8fbe,U+8fc7,U+8fd8-8fd9,U+8fdb,U+901a,U+90e8,U+91cd,U+91cf,U+91d1,U+9485,U+957f,U+95ee,U+9762,U+9ad8,U+9ea6,U+9f99,U+9fcf,U+9fd4,U+9fed,U+fe10-fe19,U+fe30-fe31,U+fe33-fe44,U+ff01,U+ff0c,U+ff1f,U+2b4e7,U+2b7f7,U+2b7fc,U+2cb2d,U+2cb3b,U+2cb4a,U+2cb5b,U+2cb73\",\n },\n },\n {\n uri: _176,\n descriptors: {\n unicodeRange:\n \"U+6490,U+6493-6494,U+6497-6498,U+649a-649d,U+649f-64a3,U+64a5-64a8,U+64aa-64ab,U+64af,U+64b1-64b4,U+64b6,U+64b9,U+64bb,U+64bd-64bf,U+64c1,U+64c3-64c4,U+64c6-64cc,U+64cf,U+64d1,U+64d3-64d6,U+64d9-64dd,U+64df-64e1,U+64e3,U+64e5,U+64e7-64ff,U+6501-6508,U+650a-6511,U+6513-6517,U+6519-6524,U+6526-652a,U+652c-652d,U+6530-6533,U+6537,U+653a,U+653c-653d,U+6540-6544,U+6546-6547,U+654a-654b,U+654d-654e,U+6550,U+6552-6554,U+6557-6558,U+655a,U+655c,U+655f-6561,U+6564-6565,U+6567-6568\",\n },\n },\n {\n uri: _177,\n descriptors: {\n unicodeRange:\n \"U+9695-9696,U+969a-969b,U+969d-96a6,U+96a8-96af,U+96b1-96b2,U+96b4-96b5,U+96b7-96b8,U+96ba-96bb,U+96bf,U+96c2-96c3,U+96c8,U+96ca-96cb,U+96d0-96d1,U+96d3-96d4,U+96d6-96df,U+96e1-96e7,U+96eb-96ee,U+96f0-96f2,U+96f4-96f5,U+96f8,U+96fa-96fd,U+96ff,U+9702-9703,U+9705,U+970a-970c,U+9710-9712,U+9714-9715,U+9717-971b,U+971d,U+971f-9729,U+972b-972c,U+972e-972f,U+9731,U+9733-9737,U+973a-973d,U+973f-9751,U+9754-9755,U+9757-9758,U+975a,U+975c-975d,U+975f,U+9763-9764,U+9766-9768,U+976a-9770\",\n },\n },\n {\n uri: _178,\n descriptors: {\n unicodeRange:\n \"U+6af0-6b1f,U+6b25-6b26,U+6b28-6b31,U+6b33-6b36,U+6b38,U+6b3b-6b3d,U+6b3f-6b42,U+6b44-6b45,U+6b48,U+6b4a-6b4b,U+6b4d-6b58,U+6b5a-6b61,U+6b68-6b69,U+6b6b-6b78,U+6b7a,U+6b7d-6b80,U+6b85,U+6b88,U+6b8c,U+6b8e-6b91,U+6b94-6b95,U+6b97-6b99,U+6b9c-6ba0,U+6ba2-6ba9,U+6bab-6bb2,U+6bb6,U+6bb8-6bba\",\n },\n },\n {\n uri: _179,\n descriptors: {\n unicodeRange:\n \"U+430e-439a,U+29e8a,U+29ec4,U+29edb,U+29ee9,U+29f7e,U+29f83,U+29f8c,U+29fce,U+2a01a,U+2a02f,U+2a082,U+2a0f9,U+2a190,U+2a38c\",\n },\n },\n {\n uri: _180,\n descriptors: { unicodeRange: \"U+92ef-933d,U+933f-9369,U+936b-9388\" },\n },\n {\n uri: _181,\n descriptors: {\n unicodeRange:\n \"U+4512-458d,U+2b300,U+2b363,U+2b36f,U+2b372,U+2b37d,U+2b404,U+2b410,U+2b413,U+2b461,U+2b4ef,U+2b4f6,U+2b4f9,U+2b50d-2b50e,U+2b536,U+2b5ae,U+2b5b3,U+2b5e7,U+2b5f4,U+2b61c-2b61d,U+2b626-2b628,U+2b62a,U+2b62c,U+2b695-2b696,U+2b6ad,U+2b6ed\",\n },\n },\n {\n uri: _182,\n descriptors: {\n unicodeRange:\n \"U+88bd-88c0,U+88c3-88c4,U+88c7-88c8,U+88ca-88cd,U+88cf-88d1,U+88d3,U+88d6-88d7,U+88da-88de,U+88e0-88e1,U+88e6-88e7,U+88e9-88ef,U+88f2,U+88f5-88f7,U+88fa-88fb,U+88fd,U+88ff-8901,U+8903-8909,U+890b-890f,U+8911,U+8914-8918,U+891c-8920,U+8922-8924,U+8926-8929,U+892c-892f,U+8931-8933,U+8935,U+8937-8940,U+8942-8943,U+8945-895d,U+8960-8965,U+8967-897a,U+897c-897e,U+8980,U+8982,U+8984-8985\",\n },\n },\n { uri: _183, descriptors: { unicodeRange: \"U+4b0b-4ba0\" } },\n {\n uri: _184,\n descriptors: {\n unicodeRange:\n \"U+7179,U+717b-717c,U+717e-7183,U+7185-7189,U+718b-718e,U+7190-7193,U+7195-7197,U+719a-719e,U+71a1-71a7,U+71a9-71ab,U+71ad-71b2,U+71b4,U+71b6-71b8,U+71ba-71c2,U+71c4-71cd,U+71cf-71d3,U+71d6-71df,U+71e1-71e4,U+71e6,U+71e8-71ed,U+71ef-71f8,U+71fa-7205,U+7207-721c,U+721e-7227,U+7229,U+722b,U+722d\",\n },\n },\n {\n uri: _185,\n descriptors: {\n unicodeRange:\n \"U+982e-9874,U+988b,U+988e,U+9892,U+9895,U+9899,U+98a3,U+98a8-98cd,U+98cf-98d0,U+98d4,U+98d6-98d7,U+98db-98dd,U+98e0-98e6,U+98e9-98fa\",\n },\n },\n {\n uri: _186,\n descriptors: {\n unicodeRange:\n \"U+7c14-7c15,U+7c17-7c1e,U+7c20-7c25,U+7c28-7c29,U+7c2b-7c37,U+7c39-7c3e,U+7c42-7c4c,U+7c4e-7c72,U+7c75-7c7a,U+7c7e-7c88,U+7c8a-7c90,U+7c93-7c94,U+7c96,U+7c99-7c9b,U+7ca0-7ca1,U+7ca3,U+7ca6-7ca9,U+7cab-7cad,U+7caf-7cb0,U+7cb4-7cb8,U+7cba-7cbb,U+7cbf-7cc0,U+7cc2-7cc4,U+7cc6,U+7cc9,U+7ccb,U+7cce-7cd4\",\n },\n },\n {\n uri: _187,\n descriptors: { unicodeRange: \"U+7d95-7da5,U+7da7-7dad,U+7daf-7e2a\" },\n },\n { uri: _188, descriptors: { unicodeRange: \"U+4a78-4b0a\" } },\n {\n uri: _189,\n descriptors: {\n unicodeRange:\n \"U+9b30-9b31,U+9b33-9b3a,U+9b3d-9b40,U+9b46,U+9b4a-9b4c,U+9b4e,U+9b50,U+9b52-9b53,U+9b55-9bcf\",\n },\n },\n {\n uri: _190,\n descriptors: {\n unicodeRange:\n \"U+6a4b-6a4f,U+6a51-6a57,U+6a5a,U+6a5c-6a60,U+6a62-6a64,U+6a66-6a70,U+6a72-6a78,U+6a7a-6a7b,U+6a7d-6a7f,U+6a81-6a83,U+6a85-6a8d,U+6a8f,U+6a92-6a96,U+6a98-6a9f,U+6aa1-6aa8,U+6aaa,U+6aad-6aef\",\n },\n },\n { uri: _191, descriptors: { unicodeRange: \"U+99c9-9a53\" } },\n {\n uri: _192,\n descriptors: {\n unicodeRange:\n \"U+8550-8555,U+8557-8558,U+855a-855d,U+855f-8563,U+8565-8567,U+8569-8571,U+8573,U+8575-8578,U+857c-857d,U+857f-8583,U+8586,U+8588-858e,U+8590-859a,U+859d-85a3,U+85a5-85a7,U+85a9,U+85ab-85ad,U+85b1-85b6,U+85b8,U+85ba-85c0,U+85c2-85c8,U+85ca-85ce,U+85d1-85d2,U+85d4,U+85d6-85db,U+85dd-85e3,U+85e5-85e8,U+85ea-85fa,U+85fc-85fe,U+8600-8603\",\n },\n },\n {\n uri: _193,\n descriptors: {\n unicodeRange:\n \"U+6fb2,U+6fb4-6fb5,U+6fb7-6fb8,U+6fba-6fbf,U+6fc1,U+6fc3-6fc8,U+6fca-6fd0,U+6fd3-6fdd,U+6fdf,U+6fe2-6fed,U+6ff0-7010,U+7012-7019,U+701c-7022,U+7024-7034,U+7036-7038,U+703a-704b,U+704d-704e,U+7050-7053\",\n },\n },\n { uri: _194, descriptors: { unicodeRange: \"U+4ba1-4c2c\" } },\n {\n uri: _195,\n descriptors: {\n unicodeRange:\n \"U+9a54-9a6b,U+9a72,U+9a83,U+9a89,U+9a8d-9a8e,U+9a94-9a95,U+9a99,U+9aa6,U+9aa9-9aaf,U+9ab2-9ab5,U+9ab9,U+9abb,U+9abd-9abf,U+9ac3-9ac4,U+9ac6-9aca,U+9acd-9ad0,U+9ad2,U+9ad4-9ad7,U+9ad9-9ade,U+9ae0,U+9ae2-9ae5,U+9ae7-9aea,U+9aec,U+9aee,U+9af0-9af8,U+9afa,U+9afc-9b02,U+9b04-9b07,U+9b09-9b0e,U+9b10-9b12,U+9b14-9b1e,U+9b20-9b22,U+9b24-9b2e\",\n },\n },\n { uri: _196, descriptors: { unicodeRange: \"U+9d1a-9da1\" } },\n {\n uri: _197,\n descriptors: {\n unicodeRange:\n \"U+9e13-9e1e,U+9e24,U+9e27,U+9e2e,U+9e30,U+9e34,U+9e3b-9e3c,U+9e40,U+9e4d,U+9e50,U+9e52-9e54,U+9e56,U+9e59,U+9e5d,U+9e5f-9e62,U+9e65,U+9e6e-9e6f,U+9e72,U+9e74-9e7d,U+9e80-9e81,U+9e83-9e86,U+9e89-9e8a,U+9e8c-9e91,U+9e94-9e9c,U+9e9e,U+9ea0-9ea5,U+9ea7-9eb3,U+9eb5-9eb7,U+9eb9-9eba,U+9ebc,U+9ebf-9ec3,U+9ec5-9ec8,U+9eca-9ecc,U+9ed0,U+9ed2-9ed3,U+9ed5-9ed7,U+9ed9-9eda,U+9ede,U+9ee1,U+9ee3-9ee4,U+9ee6,U+9ee8,U+9eeb-9eee,U+9ef0-9ef8\",\n },\n },\n {\n uri: _198,\n descriptors: {\n unicodeRange:\n \"U+8b1c-8b25,U+8b27-8b65,U+8b67-8b6b,U+8b6d-8b9f,U+8bac,U+8bb1,U+8bbb,U+8bc7,U+8bd0\",\n },\n },\n { uri: _199, descriptors: { unicodeRange: \"U+4cad-4d2f\" } },\n {\n uri: _200,\n descriptors: {\n unicodeRange:\n \"U+9c4b-9c7b,U+9c7d-9c7e,U+9c80,U+9c83-9c84,U+9c89-9c8a,U+9c8c,U+9c8f,U+9c93,U+9c96-9c99,U+9c9d,U+9caa,U+9cac,U+9caf,U+9cb9,U+9cbe-9cc2,U+9cc8-9cc9,U+9cd1-9cd2,U+9cda-9cdb,U+9ce0-9ce1,U+9ce3-9d19\",\n },\n },\n {\n uri: _201,\n descriptors: {\n unicodeRange: \"U+9389-938e,U+9390-93c9,U+93cb-93d5,U+93d7-9410\",\n },\n },\n {\n uri: _202,\n descriptors: {\n unicodeRange:\n \"U+20a0-20b5,U+20b9-20ba,U+20bc-20bd,U+4e2c,U+5107,U+5216,U+5293,U+54f3,U+5523,U+5819,U+5adc,U+5c88,U+5e3b,U+5fee,U+62f6,U+63be,U+6484,U+6499,U+67d9,U+67dd,U+6d5e,U+6f46,U+717a,U+71e0,U+72c1,U+73e7,U+75b0,U+7603,U+7722,U+7809,U+7811,U+7946,U+7967,U+799a,U+7b45,U+7ba2,U+8014,U+80d9,U+8159,U+817d,U+81a3,U+81aa,U+8201,U+833c,U+836e,U+83e5,U+8459,U+84f0,U+8729,U+8753,U+87d3,U+89dc,U+8bf6,U+8c2e,U+8e2c,U+8e9c,U+8e9e,U+8ece,U+8fee,U+9139,U+914f,U+9174,U+9191,U+960c,U+9622,U+9a98,U+9b48,U+9ca6,U+9cb0,U+9da2-9e12,U+9e88,U+9f44,U+9f86\",\n },\n },\n { uri: _203, descriptors: { unicodeRange: \"U+9bd0-9c4a\" } },\n { uri: _204, descriptors: { unicodeRange: \"U+4c2d-4cac\" } },\n { uri: _205, descriptors: { unicodeRange: \"U+4d30-4dab\" } },\n {\n uri: _206,\n descriptors: { unicodeRange: \"U+9411-943d,U+943f-946a,U+946c-9484\" },\n },\n {\n uri: _207,\n descriptors: {\n unicodeRange:\n \"U+9efa,U+9efd,U+9eff-9f0a,U+9f0c,U+9f0f,U+9f11-9f12,U+9f14-9f16,U+9f18,U+9f1a-9f1f,U+9f21,U+9f23-9f2b,U+9f2d-9f2e,U+9f30-9f36,U+9f38,U+9f3a,U+9f3c,U+9f3f-9f43,U+9f45-9f4f,U+9f52-9f7e,U+9f81-9f82,U+9f8d-9f94\",\n },\n },\n {\n uri: _208,\n descriptors: {\n unicodeRange:\n \"U+7e2b-7e3a,U+7e3c-7e40,U+7e42-7e46,U+7e48-7e81,U+7e83-7e9a,U+7e9c-7e9e,U+7eae,U+7eb4,U+7ebb-7ebc,U+7ed6,U+7ee4,U+7eec,U+7ef9,U+7f0a,U+7f10,U+7f1e,U+7f37,U+7f39,U+7f3b\",\n },\n },\n];\n", "import { FRAME_STYLE, throttleRAF } from \"@excalidraw/common\";\nimport { isElementLink } from \"@excalidraw/element\";\nimport { createPlaceholderEmbeddableLabel } from \"@excalidraw/element\";\nimport { getBoundTextElement } from \"@excalidraw/element\";\nimport {\n isEmbeddableElement,\n isIframeLikeElement,\n isTextElement,\n} from \"@excalidraw/element\";\nimport {\n elementOverlapsWithFrame,\n getTargetFrame,\n shouldApplyFrameClip,\n} from \"@excalidraw/element\";\n\nimport { renderElement } from \"@excalidraw/element\";\n\nimport { getElementAbsoluteCoords } from \"@excalidraw/element\";\n\nimport type {\n ElementsMap,\n ExcalidrawFrameLikeElement,\n NonDeletedExcalidrawElement,\n} from \"@excalidraw/element/types\";\n\nimport {\n EXTERNAL_LINK_IMG,\n ELEMENT_LINK_IMG,\n getLinkHandleFromCoords,\n} from \"../components/hyperlink/helpers\";\n\nimport { bootstrapCanvas, getNormalizedCanvasDimensions } from \"./helpers\";\n\nimport type {\n StaticCanvasRenderConfig,\n StaticSceneRenderConfig,\n} from \"../scene/types\";\nimport type { StaticCanvasAppState, Zoom } from \"../types\";\n\nconst GridLineColor = {\n Bold: \"#dddddd\",\n Regular: \"#e5e5e5\",\n} as const;\n\nconst strokeGrid = (\n context: CanvasRenderingContext2D,\n /** grid cell pixel size */\n gridSize: number,\n /** setting to 1 will disble bold lines */\n gridStep: number,\n scrollX: number,\n scrollY: number,\n zoom: Zoom,\n width: number,\n height: number,\n) => {\n const offsetX = (scrollX % gridSize) - gridSize;\n const offsetY = (scrollY % gridSize) - gridSize;\n\n const actualGridSize = gridSize * zoom.value;\n\n const spaceWidth = 1 / zoom.value;\n\n context.save();\n\n // Offset rendering by 0.5 to ensure that 1px wide lines are crisp.\n // We only do this when zoomed to 100% because otherwise the offset is\n // fractional, and also visibly offsets the elements.\n // We also do this per-axis, as each axis may already be offset by 0.5.\n if (zoom.value === 1) {\n context.translate(offsetX % 1 ? 0 : 0.5, offsetY % 1 ? 0 : 0.5);\n }\n\n // vertical lines\n for (let x = offsetX; x < offsetX + width + gridSize * 2; x += gridSize) {\n const isBold =\n gridStep > 1 && Math.round(x - scrollX) % (gridStep * gridSize) === 0;\n // don't render regular lines when zoomed out and they're barely visible\n if (!isBold && actualGridSize < 10) {\n continue;\n }\n\n const lineWidth = Math.min(1 / zoom.value, isBold ? 4 : 1);\n context.lineWidth = lineWidth;\n const lineDash = [lineWidth * 3, spaceWidth + (lineWidth + spaceWidth)];\n\n context.beginPath();\n context.setLineDash(isBold ? [] : lineDash);\n context.strokeStyle = isBold ? GridLineColor.Bold : GridLineColor.Regular;\n context.moveTo(x, offsetY - gridSize);\n context.lineTo(x, Math.ceil(offsetY + height + gridSize * 2));\n context.stroke();\n }\n\n for (let y = offsetY; y < offsetY + height + gridSize * 2; y += gridSize) {\n const isBold =\n gridStep > 1 && Math.round(y - scrollY) % (gridStep * gridSize) === 0;\n if (!isBold && actualGridSize < 10) {\n continue;\n }\n\n const lineWidth = Math.min(1 / zoom.value, isBold ? 4 : 1);\n context.lineWidth = lineWidth;\n const lineDash = [lineWidth * 3, spaceWidth + (lineWidth + spaceWidth)];\n\n context.beginPath();\n context.setLineDash(isBold ? [] : lineDash);\n context.strokeStyle = isBold ? GridLineColor.Bold : GridLineColor.Regular;\n context.moveTo(offsetX - gridSize, y);\n context.lineTo(Math.ceil(offsetX + width + gridSize * 2), y);\n context.stroke();\n }\n context.restore();\n};\n\nexport const frameClip = (\n frame: ExcalidrawFrameLikeElement,\n context: CanvasRenderingContext2D,\n renderConfig: StaticCanvasRenderConfig,\n appState: StaticCanvasAppState,\n) => {\n context.translate(frame.x + appState.scrollX, frame.y + appState.scrollY);\n context.beginPath();\n if (context.roundRect) {\n context.roundRect(\n 0,\n 0,\n frame.width,\n frame.height,\n FRAME_STYLE.radius / appState.zoom.value,\n );\n } else {\n context.rect(0, 0, frame.width, frame.height);\n }\n context.clip();\n context.translate(\n -(frame.x + appState.scrollX),\n -(frame.y + appState.scrollY),\n );\n};\n\ntype LinkIconCanvas = HTMLCanvasElement & { zoom: number };\n\nconst linkIconCanvasCache: {\n regularLink: LinkIconCanvas | null;\n elementLink: LinkIconCanvas | null;\n} = {\n regularLink: null,\n elementLink: null,\n};\n\nconst renderLinkIcon = (\n element: NonDeletedExcalidrawElement,\n context: CanvasRenderingContext2D,\n appState: StaticCanvasAppState,\n elementsMap: ElementsMap,\n) => {\n if (element.link && !appState.selectedElementIds[element.id]) {\n const [x1, y1, x2, y2] = getElementAbsoluteCoords(element, elementsMap);\n const [x, y, width, height] = getLinkHandleFromCoords(\n [x1, y1, x2, y2],\n element.angle,\n appState,\n );\n const centerX = x + width / 2;\n const centerY = y + height / 2;\n context.save();\n context.translate(appState.scrollX + centerX, appState.scrollY + centerY);\n context.rotate(element.angle);\n\n const canvasKey = isElementLink(element.link)\n ? \"elementLink\"\n : \"regularLink\";\n\n let linkCanvas = linkIconCanvasCache[canvasKey];\n\n if (!linkCanvas || linkCanvas.zoom !== appState.zoom.value) {\n linkCanvas = Object.assign(document.createElement(\"canvas\"), {\n zoom: appState.zoom.value,\n });\n linkCanvas.width = width * window.devicePixelRatio * appState.zoom.value;\n linkCanvas.height =\n height * window.devicePixelRatio * appState.zoom.value;\n linkIconCanvasCache[canvasKey] = linkCanvas;\n\n const linkCanvasCacheContext = linkCanvas.getContext(\"2d\")!;\n linkCanvasCacheContext.scale(\n window.devicePixelRatio * appState.zoom.value,\n window.devicePixelRatio * appState.zoom.value,\n );\n linkCanvasCacheContext.fillStyle = appState.viewBackgroundColor || \"#fff\";\n linkCanvasCacheContext.fillRect(0, 0, width, height);\n\n if (canvasKey === \"elementLink\") {\n linkCanvasCacheContext.drawImage(ELEMENT_LINK_IMG, 0, 0, width, height);\n } else {\n linkCanvasCacheContext.drawImage(\n EXTERNAL_LINK_IMG,\n 0,\n 0,\n width,\n height,\n );\n }\n\n linkCanvasCacheContext.restore();\n }\n context.drawImage(linkCanvas, x - centerX, y - centerY, width, height);\n context.restore();\n }\n};\nconst _renderStaticScene = ({\n canvas,\n rc,\n elementsMap,\n allElementsMap,\n visibleElements,\n scale,\n appState,\n renderConfig,\n}: StaticSceneRenderConfig) => {\n if (canvas === null) {\n return;\n }\n\n const { renderGrid = true, isExporting } = renderConfig;\n\n const [normalizedWidth, normalizedHeight] = getNormalizedCanvasDimensions(\n canvas,\n scale,\n );\n\n const context = bootstrapCanvas({\n canvas,\n scale,\n normalizedWidth,\n normalizedHeight,\n theme: appState.theme,\n isExporting,\n viewBackgroundColor: appState.viewBackgroundColor,\n });\n\n // Apply zoom\n context.scale(appState.zoom.value, appState.zoom.value);\n\n // Grid\n if (renderGrid) {\n strokeGrid(\n context,\n appState.gridSize,\n appState.gridStep,\n appState.scrollX,\n appState.scrollY,\n appState.zoom,\n normalizedWidth / appState.zoom.value,\n normalizedHeight / appState.zoom.value,\n );\n }\n\n const groupsToBeAddedToFrame = new Set<string>();\n\n visibleElements.forEach((element) => {\n if (\n element.groupIds.length > 0 &&\n appState.frameToHighlight &&\n appState.selectedElementIds[element.id] &&\n (elementOverlapsWithFrame(\n element,\n appState.frameToHighlight,\n elementsMap,\n ) ||\n element.groupIds.find((groupId) => groupsToBeAddedToFrame.has(groupId)))\n ) {\n element.groupIds.forEach((groupId) =>\n groupsToBeAddedToFrame.add(groupId),\n );\n }\n });\n\n const inFrameGroupsMap = new Map<string, boolean>();\n\n // Paint visible elements\n visibleElements\n .filter((el) => !isIframeLikeElement(el))\n .forEach((element) => {\n try {\n const frameId = element.frameId || appState.frameToHighlight?.id;\n\n if (\n isTextElement(element) &&\n element.containerId &&\n elementsMap.has(element.containerId)\n ) {\n // will be rendered with the container\n return;\n }\n\n context.save();\n\n if (\n frameId &&\n appState.frameRendering.enabled &&\n appState.frameRendering.clip\n ) {\n const frame = getTargetFrame(element, elementsMap, appState);\n if (\n frame &&\n shouldApplyFrameClip(\n element,\n frame,\n appState,\n elementsMap,\n inFrameGroupsMap,\n )\n ) {\n frameClip(frame, context, renderConfig, appState);\n }\n renderElement(\n element,\n elementsMap,\n allElementsMap,\n rc,\n context,\n renderConfig,\n appState,\n );\n } else {\n renderElement(\n element,\n elementsMap,\n allElementsMap,\n rc,\n context,\n renderConfig,\n appState,\n );\n }\n\n const boundTextElement = getBoundTextElement(element, elementsMap);\n if (boundTextElement) {\n renderElement(\n boundTextElement,\n elementsMap,\n allElementsMap,\n rc,\n context,\n renderConfig,\n appState,\n );\n }\n\n context.restore();\n\n if (!isExporting) {\n renderLinkIcon(element, context, appState, elementsMap);\n }\n } catch (error: any) {\n console.error(\n error,\n element.id,\n element.x,\n element.y,\n element.width,\n element.height,\n );\n }\n });\n\n // render embeddables on top\n visibleElements\n .filter((el) => isIframeLikeElement(el))\n .forEach((element) => {\n try {\n const render = () => {\n renderElement(\n element,\n elementsMap,\n allElementsMap,\n rc,\n context,\n renderConfig,\n appState,\n );\n\n if (\n isIframeLikeElement(element) &&\n (isExporting ||\n (isEmbeddableElement(element) &&\n renderConfig.embedsValidationStatus.get(element.id) !==\n true)) &&\n element.width &&\n element.height\n ) {\n const label = createPlaceholderEmbeddableLabel(element);\n renderElement(\n label,\n elementsMap,\n allElementsMap,\n rc,\n context,\n renderConfig,\n appState,\n );\n }\n if (!isExporting) {\n renderLinkIcon(element, context, appState, elementsMap);\n }\n };\n // - when exporting the whole canvas, we DO NOT apply clipping\n // - when we are exporting a particular frame, apply clipping\n // if the containing frame is not selected, apply clipping\n const frameId = element.frameId || appState.frameToHighlight?.id;\n\n if (\n frameId &&\n appState.frameRendering.enabled &&\n appState.frameRendering.clip\n ) {\n context.save();\n\n const frame = getTargetFrame(element, elementsMap, appState);\n\n if (\n frame &&\n shouldApplyFrameClip(\n element,\n frame,\n appState,\n elementsMap,\n inFrameGroupsMap,\n )\n ) {\n frameClip(frame, context, renderConfig, appState);\n }\n render();\n context.restore();\n } else {\n render();\n }\n } catch (error: any) {\n console.error(error);\n }\n });\n\n // render pending nodes for flowcharts\n renderConfig.pendingFlowchartNodes?.forEach((element) => {\n try {\n renderElement(\n element,\n elementsMap,\n allElementsMap,\n rc,\n context,\n renderConfig,\n appState,\n );\n } catch (error) {\n console.error(error);\n }\n });\n};\n\n/** throttled to animation framerate */\nexport const renderStaticSceneThrottled = throttleRAF(\n (config: StaticSceneRenderConfig) => {\n _renderStaticScene(config);\n },\n { trailing: true },\n);\n\n/**\n * Static scene is the non-ui canvas where we render elements.\n */\nexport const renderStaticScene = (\n renderConfig: StaticSceneRenderConfig,\n throttle?: boolean,\n) => {\n if (throttle) {\n renderStaticSceneThrottled(renderConfig);\n return;\n }\n\n _renderStaticScene(renderConfig);\n};\n", "import { pointFrom, pointRotateRads } from \"@excalidraw/math\";\n\nimport { MIME_TYPES } from \"@excalidraw/common\";\nimport { getElementAbsoluteCoords } from \"@excalidraw/element\";\nimport { hitElementBoundingBox } from \"@excalidraw/element\";\n\nimport type { GlobalPoint, Radians } from \"@excalidraw/math\";\n\nimport type { Bounds } from \"@excalidraw/common\";\nimport type {\n ElementsMap,\n NonDeletedExcalidrawElement,\n} from \"@excalidraw/element/types\";\n\nimport type { AppState, UIAppState } from \"../../types\";\n\nexport const DEFAULT_LINK_SIZE = 12;\n\nexport const EXTERNAL_LINK_IMG = document.createElement(\"img\");\nEXTERNAL_LINK_IMG.src = `data:${MIME_TYPES.svg}, ${encodeURIComponent(\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#1971c2\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-external-link\"><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"></path><polyline points=\"15 3 21 3 21 9\"></polyline><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"></line></svg>`,\n)}`;\n\nexport const ELEMENT_LINK_IMG = document.createElement(\"img\");\nELEMENT_LINK_IMG.src = `data:${MIME_TYPES.svg}, ${encodeURIComponent(\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#1971c2\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"icon icon-tabler icons-tabler-outline icon-tabler-arrow-big-right-line\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M12 9v-3.586a1 1 0 0 1 1.707 -.707l6.586 6.586a1 1 0 0 1 0 1.414l-6.586 6.586a1 1 0 0 1 -1.707 -.707v-3.586h-6v-6h6z\" /><path d=\"M3 9v6\" /></svg>`,\n)}`;\n\nexport const getLinkHandleFromCoords = (\n [x1, y1, x2, y2]: Bounds,\n angle: Radians,\n appState: Pick<UIAppState, \"zoom\">,\n): Bounds => {\n const size = DEFAULT_LINK_SIZE;\n const zoom = appState.zoom.value > 1 ? appState.zoom.value : 1;\n const linkWidth = size / zoom;\n const linkHeight = size / zoom;\n const linkMarginY = size / zoom;\n const centerX = (x1 + x2) / 2;\n const centerY = (y1 + y2) / 2;\n const centeringOffset = (size - 8) / (2 * zoom);\n const dashedLineMargin = 4 / zoom;\n\n // Same as `ne` resize handle\n const x = x2 + dashedLineMargin - centeringOffset;\n const y = y1 - dashedLineMargin - linkMarginY + centeringOffset;\n\n const [rotatedX, rotatedY] = pointRotateRads(\n pointFrom(x + linkWidth / 2, y + linkHeight / 2),\n pointFrom(centerX, centerY),\n angle,\n );\n return [\n rotatedX - linkWidth / 2,\n rotatedY - linkHeight / 2,\n linkWidth,\n linkHeight,\n ];\n};\n\nexport const isPointHittingLinkIcon = (\n element: NonDeletedExcalidrawElement,\n elementsMap: ElementsMap,\n appState: AppState,\n [x, y]: GlobalPoint,\n) => {\n const threshold = 4 / appState.zoom.value;\n const [x1, y1, x2, y2] = getElementAbsoluteCoords(element, elementsMap);\n const [linkX, linkY, linkWidth, linkHeight] = getLinkHandleFromCoords(\n [x1, y1, x2, y2],\n element.angle,\n appState,\n );\n const hitLink =\n x > linkX - threshold &&\n x < linkX + threshold + linkWidth &&\n y > linkY - threshold &&\n y < linkY + linkHeight + threshold;\n return hitLink;\n};\n\nexport const isPointHittingLink = (\n element: NonDeletedExcalidrawElement,\n elementsMap: ElementsMap,\n appState: AppState,\n [x, y]: GlobalPoint,\n isMobile: boolean,\n) => {\n if (!element.link || appState.selectedElementIds[element.id]) {\n return false;\n }\n if (\n !isMobile &&\n appState.viewModeEnabled &&\n hitElementBoundingBox(pointFrom(x, y), element, elementsMap)\n ) {\n return true;\n }\n return isPointHittingLinkIcon(\n element,\n elementsMap,\n appState,\n pointFrom(x, y),\n );\n};\n", "import { THEME, THEME_FILTER } from \"@excalidraw/common\";\n\nimport type { StaticCanvasRenderConfig } from \"../scene/types\";\nimport type { AppState, StaticCanvasAppState } from \"../types\";\n\nexport const fillCircle = (\n context: CanvasRenderingContext2D,\n cx: number,\n cy: number,\n radius: number,\n stroke: boolean,\n fill = true,\n) => {\n context.beginPath();\n context.arc(cx, cy, radius, 0, Math.PI * 2);\n if (fill) {\n context.fill();\n }\n if (stroke) {\n context.stroke();\n }\n};\n\nexport const getNormalizedCanvasDimensions = (\n canvas: HTMLCanvasElement,\n scale: number,\n): [number, number] => {\n // When doing calculations based on canvas width we should used normalized one\n return [canvas.width / scale, canvas.height / scale];\n};\n\nexport const bootstrapCanvas = ({\n canvas,\n scale,\n normalizedWidth,\n normalizedHeight,\n theme,\n isExporting,\n viewBackgroundColor,\n}: {\n canvas: HTMLCanvasElement;\n scale: number;\n normalizedWidth: number;\n normalizedHeight: number;\n theme?: AppState[\"theme\"];\n isExporting?: StaticCanvasRenderConfig[\"isExporting\"];\n viewBackgroundColor?: StaticCanvasAppState[\"viewBackgroundColor\"];\n}): CanvasRenderingContext2D => {\n const context = canvas.getContext(\"2d\")!;\n\n context.setTransform(1, 0, 0, 1, 0, 0);\n context.scale(scale, scale);\n\n if (isExporting && theme === THEME.DARK) {\n context.filter = THEME_FILTER;\n }\n\n // Paint background\n if (typeof viewBackgroundColor === \"string\") {\n const hasTransparence =\n viewBackgroundColor === \"transparent\" ||\n viewBackgroundColor.length === 5 || // #RGBA\n viewBackgroundColor.length === 9 || // #RRGGBBA\n /(hsla|rgba)\\(/.test(viewBackgroundColor);\n if (hasTransparence) {\n context.clearRect(0, 0, normalizedWidth, normalizedHeight);\n }\n context.save();\n context.fillStyle = viewBackgroundColor;\n context.fillRect(0, 0, normalizedWidth, normalizedHeight);\n context.restore();\n } else {\n context.clearRect(0, 0, normalizedWidth, normalizedHeight);\n }\n\n return context;\n};\n\nexport const strokeRectWithRotation_simple = (\n context: CanvasRenderingContext2D,\n x: number,\n y: number,\n width: number,\n height: number,\n cx: number,\n cy: number,\n angle: number,\n fill: boolean = false,\n /** should account for zoom */\n radius: number = 0,\n) => {\n context.save();\n context.translate(cx, cy);\n context.rotate(angle);\n if (fill) {\n context.fillRect(x - cx, y - cy, width, height);\n }\n if (radius && context.roundRect) {\n context.beginPath();\n context.roundRect(x - cx, y - cy, width, height, radius);\n context.stroke();\n context.closePath();\n } else {\n context.strokeRect(x - cx, y - cy, width, height);\n }\n context.restore();\n};\n", "import {\n FRAME_STYLE,\n MAX_DECIMALS_FOR_SVG_EXPORT,\n MIME_TYPES,\n SVG_NS,\n getFontFamilyString,\n isRTL,\n isTestEnv,\n getVerticalOffset,\n} from \"@excalidraw/common\";\nimport { normalizeLink, toValidURL } from \"@excalidraw/common\";\nimport { hashString } from \"@excalidraw/element\";\nimport { getUncroppedWidthAndHeight } from \"@excalidraw/element\";\nimport {\n createPlaceholderEmbeddableLabel,\n getEmbedLink,\n} from \"@excalidraw/element\";\nimport { LinearElementEditor } from \"@excalidraw/element\";\nimport { getBoundTextElement, getContainerElement } from \"@excalidraw/element\";\nimport { getLineHeightInPx } from \"@excalidraw/element\";\nimport {\n isArrowElement,\n isIframeLikeElement,\n isInitializedImageElement,\n isTextElement,\n} from \"@excalidraw/element\";\n\nimport { getContainingFrame } from \"@excalidraw/element\";\n\nimport { getCornerRadius, isPathALoop } from \"@excalidraw/element\";\n\nimport { ShapeCache } from \"@excalidraw/element\";\n\nimport { getFreeDrawSvgPath, IMAGE_INVERT_FILTER } from \"@excalidraw/element\";\n\nimport { getElementAbsoluteCoords } from \"@excalidraw/element\";\n\nimport type {\n ExcalidrawElement,\n ExcalidrawTextElementWithContainer,\n NonDeletedExcalidrawElement,\n} from \"@excalidraw/element/types\";\n\nimport type { RenderableElementsMap, SVGRenderConfig } from \"../scene/types\";\nimport type { AppState, BinaryFiles } from \"../types\";\nimport type { Drawable } from \"roughjs/bin/core\";\nimport type { RoughSVG } from \"roughjs/bin/svg\";\n\nconst roughSVGDrawWithPrecision = (\n rsvg: RoughSVG,\n drawable: Drawable,\n precision?: number,\n) => {\n if (typeof precision === \"undefined\") {\n return rsvg.draw(drawable);\n }\n const pshape: Drawable = {\n sets: drawable.sets,\n shape: drawable.shape,\n options: { ...drawable.options, fixedDecimalPlaceDigits: precision },\n };\n return rsvg.draw(pshape);\n};\n\nconst maybeWrapNodesInFrameClipPath = (\n element: NonDeletedExcalidrawElement,\n root: SVGElement,\n nodes: SVGElement[],\n frameRendering: AppState[\"frameRendering\"],\n elementsMap: RenderableElementsMap,\n) => {\n if (!frameRendering.enabled || !frameRendering.clip) {\n return null;\n }\n const frame = getContainingFrame(element, elementsMap);\n if (frame) {\n const g = root.ownerDocument!.createElementNS(SVG_NS, \"g\");\n g.setAttributeNS(SVG_NS, \"clip-path\", `url(#${frame.id})`);\n nodes.forEach((node) => g.appendChild(node));\n return g;\n }\n\n return null;\n};\n\nconst renderElementToSvg = (\n element: NonDeletedExcalidrawElement,\n elementsMap: RenderableElementsMap,\n rsvg: RoughSVG,\n svgRoot: SVGElement,\n files: BinaryFiles,\n offsetX: number,\n offsetY: number,\n renderConfig: SVGRenderConfig,\n) => {\n const offset = { x: offsetX, y: offsetY };\n const [x1, y1, x2, y2] = getElementAbsoluteCoords(element, elementsMap);\n let cx = (x2 - x1) / 2 - (element.x - x1);\n let cy = (y2 - y1) / 2 - (element.y - y1);\n if (isTextElement(element)) {\n const container = getContainerElement(element, elementsMap);\n if (isArrowElement(container)) {\n const [x1, y1, x2, y2] = getElementAbsoluteCoords(container, elementsMap);\n\n const boundTextCoords = LinearElementEditor.getBoundTextElementPosition(\n container,\n element as ExcalidrawTextElementWithContainer,\n elementsMap,\n );\n cx = (x2 - x1) / 2 - (boundTextCoords.x - x1);\n cy = (y2 - y1) / 2 - (boundTextCoords.y - y1);\n offsetX = offsetX + boundTextCoords.x - element.x;\n offsetY = offsetY + boundTextCoords.y - element.y;\n }\n }\n const degree = (180 * element.angle) / Math.PI;\n\n // element to append node to, most of the time svgRoot\n let root = svgRoot;\n\n // if the element has a link, create an anchor tag and make that the new root\n if (element.link) {\n const anchorTag = svgRoot.ownerDocument!.createElementNS(SVG_NS, \"a\");\n anchorTag.setAttribute(\"href\", normalizeLink(element.link));\n root.appendChild(anchorTag);\n root = anchorTag;\n }\n\n const addToRoot = (node: SVGElement, element: ExcalidrawElement) => {\n if (isTestEnv()) {\n node.setAttribute(\"data-id\", element.id);\n }\n root.appendChild(node);\n };\n\n const opacity =\n ((getContainingFrame(element, elementsMap)?.opacity ?? 100) *\n element.opacity) /\n 10000;\n\n switch (element.type) {\n case \"selection\": {\n // Since this is used only during editing experience, which is canvas based,\n // this should not happen\n throw new Error(\"Selection rendering is not supported for SVG\");\n }\n case \"rectangle\":\n case \"diamond\":\n case \"ellipse\": {\n const shape = ShapeCache.generateElementShape(element, null);\n const node = roughSVGDrawWithPrecision(\n rsvg,\n shape,\n MAX_DECIMALS_FOR_SVG_EXPORT,\n );\n if (opacity !== 1) {\n node.setAttribute(\"stroke-opacity\", `${opacity}`);\n node.setAttribute(\"fill-opacity\", `${opacity}`);\n }\n node.setAttribute(\"stroke-linecap\", \"round\");\n node.setAttribute(\n \"transform\",\n `translate(${offsetX || 0} ${\n offsetY || 0\n }) rotate(${degree} ${cx} ${cy})`,\n );\n\n const g = maybeWrapNodesInFrameClipPath(\n element,\n root,\n [node],\n renderConfig.frameRendering,\n elementsMap,\n );\n\n addToRoot(g || node, element);\n break;\n }\n case \"iframe\":\n case \"embeddable\": {\n // render placeholder rectangle\n const shape = ShapeCache.generateElementShape(element, renderConfig);\n const node = roughSVGDrawWithPrecision(\n rsvg,\n shape,\n MAX_DECIMALS_FOR_SVG_EXPORT,\n );\n const opacity = element.opacity / 100;\n if (opacity !== 1) {\n node.setAttribute(\"stroke-opacity\", `${opacity}`);\n node.setAttribute(\"fill-opacity\", `${opacity}`);\n }\n node.setAttribute(\"stroke-linecap\", \"round\");\n node.setAttribute(\n \"transform\",\n `translate(${offsetX || 0} ${\n offsetY || 0\n }) rotate(${degree} ${cx} ${cy})`,\n );\n addToRoot(node, element);\n\n const label: ExcalidrawElement =\n createPlaceholderEmbeddableLabel(element);\n renderElementToSvg(\n label,\n elementsMap,\n rsvg,\n root,\n files,\n label.x + offset.x - element.x,\n label.y + offset.y - element.y,\n renderConfig,\n );\n\n // render embeddable element + iframe\n const embeddableNode = roughSVGDrawWithPrecision(\n rsvg,\n shape,\n MAX_DECIMALS_FOR_SVG_EXPORT,\n );\n embeddableNode.setAttribute(\"stroke-linecap\", \"round\");\n embeddableNode.setAttribute(\n \"transform\",\n `translate(${offsetX || 0} ${\n offsetY || 0\n }) rotate(${degree} ${cx} ${cy})`,\n );\n while (embeddableNode.firstChild) {\n embeddableNode.removeChild(embeddableNode.firstChild);\n }\n const radius = getCornerRadius(\n Math.min(element.width, element.height),\n element,\n );\n\n const embedLink = getEmbedLink(toValidURL(element.link || \"\"));\n\n // if rendering embeddables explicitly disabled or\n // embedding documents via srcdoc (which doesn't seem to work for SVGs)\n // replace with a link instead\n if (\n renderConfig.renderEmbeddables === false ||\n embedLink?.type === \"document\"\n ) {\n const anchorTag = svgRoot.ownerDocument!.createElementNS(SVG_NS, \"a\");\n anchorTag.setAttribute(\"href\", normalizeLink(element.link || \"\"));\n anchorTag.setAttribute(\"target\", \"_blank\");\n anchorTag.setAttribute(\"rel\", \"noopener noreferrer\");\n anchorTag.style.borderRadius = `${radius}px`;\n\n embeddableNode.appendChild(anchorTag);\n } else {\n const foreignObject = svgRoot.ownerDocument!.createElementNS(\n SVG_NS,\n \"foreignObject\",\n );\n foreignObject.style.width = `${element.width}px`;\n foreignObject.style.height = `${element.height}px`;\n foreignObject.style.border = \"none\";\n const div = foreignObject.ownerDocument!.createElementNS(SVG_NS, \"div\");\n div.setAttribute(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n div.style.width = \"100%\";\n div.style.height = \"100%\";\n const iframe = div.ownerDocument!.createElement(\"iframe\");\n iframe.src = embedLink?.link ?? \"\";\n iframe.style.width = \"100%\";\n iframe.style.height = \"100%\";\n iframe.style.border = \"none\";\n iframe.style.borderRadius = `${radius}px`;\n iframe.style.top = \"0\";\n iframe.style.left = \"0\";\n iframe.allowFullscreen = true;\n div.appendChild(iframe);\n foreignObject.appendChild(div);\n\n embeddableNode.appendChild(foreignObject);\n }\n addToRoot(embeddableNode, element);\n break;\n }\n case \"line\":\n case \"arrow\": {\n const boundText = getBoundTextElement(element, elementsMap);\n const maskPath = svgRoot.ownerDocument!.createElementNS(SVG_NS, \"mask\");\n if (boundText) {\n maskPath.setAttribute(\"id\", `mask-${element.id}`);\n const maskRectVisible = svgRoot.ownerDocument!.createElementNS(\n SVG_NS,\n \"rect\",\n );\n offsetX = offsetX || 0;\n offsetY = offsetY || 0;\n maskRectVisible.setAttribute(\"x\", \"0\");\n maskRectVisible.setAttribute(\"y\", \"0\");\n maskRectVisible.setAttribute(\"fill\", \"#fff\");\n maskRectVisible.setAttribute(\n \"width\",\n `${element.width + 100 + offsetX}`,\n );\n maskRectVisible.setAttribute(\n \"height\",\n `${element.height + 100 + offsetY}`,\n );\n\n maskPath.appendChild(maskRectVisible);\n const maskRectInvisible = svgRoot.ownerDocument!.createElementNS(\n SVG_NS,\n \"rect\",\n );\n const boundTextCoords = LinearElementEditor.getBoundTextElementPosition(\n element,\n boundText,\n elementsMap,\n );\n\n const maskX = offsetX + boundTextCoords.x - element.x;\n const maskY = offsetY + boundTextCoords.y - element.y;\n\n maskRectInvisible.setAttribute(\"x\", maskX.toString());\n maskRectInvisible.setAttribute(\"y\", maskY.toString());\n maskRectInvisible.setAttribute(\"fill\", \"#000\");\n maskRectInvisible.setAttribute(\"width\", `${boundText.width}`);\n maskRectInvisible.setAttribute(\"height\", `${boundText.height}`);\n maskRectInvisible.setAttribute(\"opacity\", \"1\");\n maskPath.appendChild(maskRectInvisible);\n }\n const group = svgRoot.ownerDocument!.createElementNS(SVG_NS, \"g\");\n if (boundText) {\n group.setAttribute(\"mask\", `url(#mask-${element.id})`);\n }\n group.setAttribute(\"stroke-linecap\", \"round\");\n\n const shapes = ShapeCache.generateElementShape(element, renderConfig);\n shapes.forEach((shape) => {\n const node = roughSVGDrawWithPrecision(\n rsvg,\n shape,\n MAX_DECIMALS_FOR_SVG_EXPORT,\n );\n if (opacity !== 1) {\n node.setAttribute(\"stroke-opacity\", `${opacity}`);\n node.setAttribute(\"fill-opacity\", `${opacity}`);\n }\n node.setAttribute(\n \"transform\",\n `translate(${offsetX || 0} ${\n offsetY || 0\n }) rotate(${degree} ${cx} ${cy})`,\n );\n if (\n element.type === \"line\" &&\n isPathALoop(element.points) &&\n element.backgroundColor !== \"transparent\"\n ) {\n node.setAttribute(\"fill-rule\", \"evenodd\");\n }\n group.appendChild(node);\n });\n\n const g = maybeWrapNodesInFrameClipPath(\n element,\n root,\n [group, maskPath],\n renderConfig.frameRendering,\n elementsMap,\n );\n if (g) {\n addToRoot(g, element);\n root.appendChild(g);\n } else {\n addToRoot(group, element);\n root.append(maskPath);\n }\n break;\n }\n case \"freedraw\": {\n const backgroundFillShape = ShapeCache.generateElementShape(\n element,\n renderConfig,\n );\n const node = backgroundFillShape\n ? roughSVGDrawWithPrecision(\n rsvg,\n backgroundFillShape,\n MAX_DECIMALS_FOR_SVG_EXPORT,\n )\n : svgRoot.ownerDocument!.createElementNS(SVG_NS, \"g\");\n if (opacity !== 1) {\n node.setAttribute(\"stroke-opacity\", `${opacity}`);\n node.setAttribute(\"fill-opacity\", `${opacity}`);\n }\n node.setAttribute(\n \"transform\",\n `translate(${offsetX || 0} ${\n offsetY || 0\n }) rotate(${degree} ${cx} ${cy})`,\n );\n node.setAttribute(\"stroke\", \"none\");\n const path = svgRoot.ownerDocument!.createElementNS(SVG_NS, \"path\");\n path.setAttribute(\"fill\", element.strokeColor);\n path.setAttribute(\"d\", getFreeDrawSvgPath(element));\n node.appendChild(path);\n\n const g = maybeWrapNodesInFrameClipPath(\n element,\n root,\n [node],\n renderConfig.frameRendering,\n elementsMap,\n );\n\n addToRoot(g || node, element);\n break;\n }\n case \"image\": {\n const width = Math.round(element.width);\n const height = Math.round(element.height);\n const fileData =\n isInitializedImageElement(element) && files[element.fileId];\n if (fileData) {\n const { reuseImages = true } = renderConfig;\n\n let symbolId = `image-${fileData.id}`;\n\n let uncroppedWidth = element.width;\n let uncroppedHeight = element.height;\n if (element.crop) {\n ({ width: uncroppedWidth, height: uncroppedHeight } =\n getUncroppedWidthAndHeight(element));\n\n symbolId = `image-crop-${fileData.id}-${hashString(\n `${uncroppedWidth}x${uncroppedHeight}`,\n )}`;\n }\n\n if (!reuseImages) {\n symbolId = `image-${element.id}`;\n }\n\n let symbol = svgRoot.querySelector(`#${symbolId}`);\n if (!symbol) {\n symbol = svgRoot.ownerDocument!.createElementNS(SVG_NS, \"symbol\");\n symbol.id = symbolId;\n\n const image = svgRoot.ownerDocument!.createElementNS(SVG_NS, \"image\");\n image.setAttribute(\"href\", fileData.dataURL);\n image.setAttribute(\"preserveAspectRatio\", \"none\");\n\n if (element.crop || !reuseImages) {\n image.setAttribute(\"width\", `${uncroppedWidth}`);\n image.setAttribute(\"height\", `${uncroppedHeight}`);\n } else {\n image.setAttribute(\"width\", \"100%\");\n image.setAttribute(\"height\", \"100%\");\n }\n\n symbol.appendChild(image);\n\n (root.querySelector(\"defs\") || root).prepend(symbol);\n }\n\n const use = svgRoot.ownerDocument!.createElementNS(SVG_NS, \"use\");\n use.setAttribute(\"href\", `#${symbolId}`);\n\n // in dark theme, revert the image color filter\n if (\n renderConfig.exportWithDarkMode &&\n fileData.mimeType !== MIME_TYPES.svg\n ) {\n use.setAttribute(\"filter\", IMAGE_INVERT_FILTER);\n }\n\n let normalizedCropX = 0;\n let normalizedCropY = 0;\n\n if (element.crop) {\n const { width: uncroppedWidth, height: uncroppedHeight } =\n getUncroppedWidthAndHeight(element);\n normalizedCropX =\n element.crop.x / (element.crop.naturalWidth / uncroppedWidth);\n normalizedCropY =\n element.crop.y / (element.crop.naturalHeight / uncroppedHeight);\n }\n\n const adjustedCenterX = cx + normalizedCropX;\n const adjustedCenterY = cy + normalizedCropY;\n\n use.setAttribute(\"width\", `${width + normalizedCropX}`);\n use.setAttribute(\"height\", `${height + normalizedCropY}`);\n use.setAttribute(\"opacity\", `${opacity}`);\n\n // We first apply `scale` transforms (horizontal/vertical mirroring)\n // on the <use> element, then apply translation and rotation\n // on the <g> element which wraps the <use>.\n // Doing this separately is a quick hack to to work around compositing\n // the transformations correctly (the transform-origin was not being\n // applied correctly).\n if (element.scale[0] !== 1 || element.scale[1] !== 1) {\n use.setAttribute(\n \"transform\",\n `translate(${adjustedCenterX} ${adjustedCenterY}) scale(${\n element.scale[0]\n } ${\n element.scale[1]\n }) translate(${-adjustedCenterX} ${-adjustedCenterY})`,\n );\n }\n\n const g = svgRoot.ownerDocument!.createElementNS(SVG_NS, \"g\");\n\n if (element.crop) {\n const mask = svgRoot.ownerDocument!.createElementNS(SVG_NS, \"mask\");\n mask.setAttribute(\"id\", `mask-image-crop-${element.id}`);\n mask.setAttribute(\"fill\", \"#fff\");\n const maskRect = svgRoot.ownerDocument!.createElementNS(\n SVG_NS,\n \"rect\",\n );\n\n maskRect.setAttribute(\"x\", `${normalizedCropX}`);\n maskRect.setAttribute(\"y\", `${normalizedCropY}`);\n maskRect.setAttribute(\"width\", `${width}`);\n maskRect.setAttribute(\"height\", `${height}`);\n\n mask.appendChild(maskRect);\n root.appendChild(mask);\n g.setAttribute(\"mask\", `url(#${mask.id})`);\n }\n\n g.appendChild(use);\n g.setAttribute(\n \"transform\",\n `translate(${offsetX - normalizedCropX} ${\n offsetY - normalizedCropY\n }) rotate(${degree} ${adjustedCenterX} ${adjustedCenterY})`,\n );\n\n if (element.roundness) {\n const clipPath = svgRoot.ownerDocument!.createElementNS(\n SVG_NS,\n \"clipPath\",\n );\n clipPath.id = `image-clipPath-${element.id}`;\n clipPath.setAttribute(\"clipPathUnits\", \"userSpaceOnUse\");\n const clipRect = svgRoot.ownerDocument!.createElementNS(\n SVG_NS,\n \"rect\",\n );\n const radius = getCornerRadius(\n Math.min(element.width, element.height),\n element,\n );\n const clipOffsetX = element.crop ? normalizedCropX : 0;\n const clipOffsetY = element.crop ? normalizedCropY : 0;\n clipRect.setAttribute(\"x\", `${clipOffsetX}`);\n clipRect.setAttribute(\"y\", `${clipOffsetY}`);\n clipRect.setAttribute(\"width\", `${element.width}`);\n clipRect.setAttribute(\"height\", `${element.height}`);\n clipRect.setAttribute(\"rx\", `${radius}`);\n clipRect.setAttribute(\"ry\", `${radius}`);\n clipPath.appendChild(clipRect);\n addToRoot(clipPath, element);\n\n g.setAttributeNS(SVG_NS, \"clip-path\", `url(#${clipPath.id})`);\n }\n\n const clipG = maybeWrapNodesInFrameClipPath(\n element,\n root,\n [g],\n renderConfig.frameRendering,\n elementsMap,\n );\n addToRoot(clipG || g, element);\n }\n break;\n }\n // frames are not rendered and only acts as a container\n case \"frame\":\n case \"magicframe\": {\n if (\n renderConfig.frameRendering.enabled &&\n renderConfig.frameRendering.outline\n ) {\n const rect = document.createElementNS(SVG_NS, \"rect\");\n\n rect.setAttribute(\n \"transform\",\n `translate(${offsetX || 0} ${\n offsetY || 0\n }) rotate(${degree} ${cx} ${cy})`,\n );\n\n rect.setAttribute(\"width\", `${element.width}px`);\n rect.setAttribute(\"height\", `${element.height}px`);\n // Rounded corners\n rect.setAttribute(\"rx\", FRAME_STYLE.radius.toString());\n rect.setAttribute(\"ry\", FRAME_STYLE.radius.toString());\n\n rect.setAttribute(\"fill\", \"none\");\n rect.setAttribute(\"stroke\", FRAME_STYLE.strokeColor);\n rect.setAttribute(\"stroke-width\", FRAME_STYLE.strokeWidth.toString());\n\n addToRoot(rect, element);\n }\n break;\n }\n default: {\n if (isTextElement(element)) {\n const node = svgRoot.ownerDocument!.createElementNS(SVG_NS, \"g\");\n if (opacity !== 1) {\n node.setAttribute(\"stroke-opacity\", `${opacity}`);\n node.setAttribute(\"fill-opacity\", `${opacity}`);\n }\n\n node.setAttribute(\n \"transform\",\n `translate(${offsetX || 0} ${\n offsetY || 0\n }) rotate(${degree} ${cx} ${cy})`,\n );\n const lines = element.text.replace(/\\r\\n?/g, \"\\n\").split(\"\\n\");\n const lineHeightPx = getLineHeightInPx(\n element.fontSize,\n element.lineHeight,\n );\n const horizontalOffset =\n element.textAlign === \"center\"\n ? element.width / 2\n : element.textAlign === \"right\"\n ? element.width\n : 0;\n const verticalOffset = getVerticalOffset(\n element.fontFamily,\n element.fontSize,\n lineHeightPx,\n );\n const direction = isRTL(element.text) ? \"rtl\" : \"ltr\";\n const textAnchor =\n element.textAlign === \"center\"\n ? \"middle\"\n : element.textAlign === \"right\" || direction === \"rtl\"\n ? \"end\"\n : \"start\";\n for (let i = 0; i < lines.length; i++) {\n const text = svgRoot.ownerDocument!.createElementNS(SVG_NS, \"text\");\n text.textContent = lines[i];\n text.setAttribute(\"x\", `${horizontalOffset}`);\n text.setAttribute(\"y\", `${i * lineHeightPx + verticalOffset}`);\n text.setAttribute(\"font-family\", getFontFamilyString(element));\n text.setAttribute(\"font-size\", `${element.fontSize}px`);\n text.setAttribute(\"fill\", element.strokeColor);\n text.setAttribute(\"text-anchor\", textAnchor);\n text.setAttribute(\"style\", \"white-space: pre;\");\n text.setAttribute(\"direction\", direction);\n text.setAttribute(\"dominant-baseline\", \"alphabetic\");\n node.appendChild(text);\n }\n\n const g = maybeWrapNodesInFrameClipPath(\n element,\n root,\n [node],\n renderConfig.frameRendering,\n elementsMap,\n );\n\n addToRoot(g || node, element);\n } else {\n // @ts-ignore\n throw new Error(`Unimplemented type ${element.type}`);\n }\n }\n }\n};\n\nexport const renderSceneToSvg = (\n elements: readonly NonDeletedExcalidrawElement[],\n elementsMap: RenderableElementsMap,\n rsvg: RoughSVG,\n svgRoot: SVGElement,\n files: BinaryFiles,\n renderConfig: SVGRenderConfig,\n) => {\n if (!svgRoot) {\n return;\n }\n\n // render elements\n elements\n .filter((el) => !isIframeLikeElement(el))\n .forEach((element) => {\n if (!element.isDeleted) {\n if (\n isTextElement(element) &&\n element.containerId &&\n elementsMap.has(element.containerId)\n ) {\n // will be rendered with the container\n return;\n }\n\n try {\n renderElementToSvg(\n element,\n elementsMap,\n rsvg,\n svgRoot,\n files,\n element.x + renderConfig.offsetX,\n element.y + renderConfig.offsetY,\n renderConfig,\n );\n\n const boundTextElement = getBoundTextElement(element, elementsMap);\n if (boundTextElement) {\n renderElementToSvg(\n boundTextElement,\n elementsMap,\n rsvg,\n svgRoot,\n files,\n boundTextElement.x + renderConfig.offsetX,\n boundTextElement.y + renderConfig.offsetY,\n renderConfig,\n );\n }\n } catch (error: any) {\n console.error(error);\n }\n }\n });\n\n // render embeddables on top\n elements\n .filter((el) => isIframeLikeElement(el))\n .forEach((element) => {\n if (!element.isDeleted) {\n try {\n renderElementToSvg(\n element,\n elementsMap,\n rsvg,\n svgRoot,\n files,\n element.x + renderConfig.offsetX,\n element.y + renderConfig.offsetY,\n renderConfig,\n );\n } catch (error: any) {\n console.error(error);\n }\n }\n });\n};\n", "import { isFiniteNumber, pointFrom } from \"@excalidraw/math\";\n\nimport {\n DEFAULT_FONT_FAMILY,\n DEFAULT_TEXT_ALIGN,\n DEFAULT_VERTICAL_ALIGN,\n FONT_FAMILY,\n ROUNDNESS,\n DEFAULT_SIDEBAR,\n DEFAULT_ELEMENT_PROPS,\n DEFAULT_GRID_SIZE,\n DEFAULT_GRID_STEP,\n randomId,\n getUpdatedTimestamp,\n updateActiveTool,\n arrayToMap,\n getSizeFromPoints,\n normalizeLink,\n getLineHeight,\n} from \"@excalidraw/common\";\nimport {\n calculateFixedPointForNonElbowArrowBinding,\n getNonDeletedElements,\n isPointInElement,\n isValidPolygon,\n projectFixedPointOntoDiagonal,\n} from \"@excalidraw/element\";\nimport { normalizeFixedPoint } from \"@excalidraw/element\";\nimport {\n updateElbowArrowPoints,\n validateElbowPoints,\n} from \"@excalidraw/element\";\nimport { LinearElementEditor } from \"@excalidraw/element\";\nimport { bumpVersion } from \"@excalidraw/element\";\nimport { getContainerElement } from \"@excalidraw/element\";\nimport { detectLineHeight } from \"@excalidraw/element\";\nimport {\n isArrowBoundToElement,\n isArrowElement,\n isElbowArrow,\n isLinearElement,\n isLineElement,\n isTextElement,\n isUsingAdaptiveRadius,\n} from \"@excalidraw/element\";\n\nimport { syncInvalidIndices } from \"@excalidraw/element\";\n\nimport { refreshTextDimensions } from \"@excalidraw/element\";\n\nimport { getNormalizedDimensions } from \"@excalidraw/element\";\n\nimport { isInvisiblySmallElement } from \"@excalidraw/element\";\n\nimport type { LocalPoint, Radians } from \"@excalidraw/math\";\n\nimport type {\n ElementsMap,\n ElementsMapOrArray,\n ExcalidrawArrowElement,\n ExcalidrawBindableElement,\n ExcalidrawElbowArrowElement,\n ExcalidrawElement,\n ExcalidrawLinearElement,\n ExcalidrawSelectionElement,\n ExcalidrawTextElement,\n FixedPointBinding,\n FontFamilyValues,\n NonDeletedSceneElementsMap,\n OrderedExcalidrawElement,\n StrokeRoundness,\n} from \"@excalidraw/element/types\";\n\nimport type { MarkOptional, Mutable } from \"@excalidraw/common/utility-types\";\n\nimport { getDefaultAppState } from \"../appState\";\n\nimport {\n getNormalizedGridSize,\n getNormalizedGridStep,\n getNormalizedZoom,\n} from \"../scene\";\n\nimport type { AppState, BinaryFiles, LibraryItem } from \"../types\";\nimport type { ImportedDataState, LegacyAppState } from \"./types\";\n\ntype RestoredAppState = Omit<\n AppState,\n \"offsetTop\" | \"offsetLeft\" | \"width\" | \"height\"\n>;\n\nexport const AllowedExcalidrawActiveTools: Record<\n AppState[\"activeTool\"][\"type\"],\n boolean\n> = {\n selection: true,\n lasso: true,\n text: true,\n rectangle: true,\n diamond: true,\n ellipse: true,\n line: true,\n image: true,\n arrow: true,\n freedraw: true,\n eraser: false,\n custom: true,\n frame: true,\n embeddable: true,\n hand: true,\n laser: false,\n magicframe: false,\n};\n\nexport type RestoredDataState = {\n elements: OrderedExcalidrawElement[];\n appState: RestoredAppState;\n files: BinaryFiles;\n};\n\nconst getFontFamilyByName = (fontFamilyName: string): FontFamilyValues => {\n if (Object.keys(FONT_FAMILY).includes(fontFamilyName)) {\n return FONT_FAMILY[\n fontFamilyName as keyof typeof FONT_FAMILY\n ] as FontFamilyValues;\n }\n return DEFAULT_FONT_FAMILY;\n};\n\nconst repairBinding = <T extends ExcalidrawArrowElement>(\n element: T,\n binding: FixedPointBinding | null,\n targetElementsMap: Readonly<ElementsMap>,\n localElementsMap: Readonly<ElementsMap> | null | undefined,\n startOrEnd: \"start\" | \"end\",\n): FixedPointBinding | null => {\n if (!binding) {\n return null;\n }\n\n if (isElbowArrow(element)) {\n const fixedPointBinding:\n | ExcalidrawElbowArrowElement[\"startBinding\"]\n | ExcalidrawElbowArrowElement[\"endBinding\"] = {\n ...binding,\n fixedPoint: normalizeFixedPoint(binding.fixedPoint ?? [0, 0]),\n mode: binding.mode || \"orbit\",\n };\n\n return fixedPointBinding;\n }\n\n // Fallback if the bound element is missing but the binding is at least\n // looking like a valid one shape-wise\n if (binding.mode && binding.fixedPoint && binding.elementId) {\n return {\n elementId: binding.elementId,\n mode: binding.mode,\n fixedPoint: normalizeFixedPoint(binding.fixedPoint || [0.5, 0.5]),\n } as FixedPointBinding | null;\n }\n\n const targetBoundElement =\n (targetElementsMap.get(binding.elementId) as ExcalidrawBindableElement) ||\n undefined;\n const boundElement =\n targetBoundElement ||\n (localElementsMap?.get(binding.elementId) as ExcalidrawBindableElement) ||\n undefined;\n const elementsMap = targetBoundElement ? targetElementsMap : localElementsMap;\n\n // migrating legacy focus point bindings\n if (boundElement && elementsMap) {\n const p = LinearElementEditor.getPointAtIndexGlobalCoordinates(\n element,\n startOrEnd === \"start\" ? 0 : element.points.length - 1,\n elementsMap,\n );\n const mode = isPointInElement(p, boundElement, elementsMap)\n ? \"inside\"\n : \"orbit\";\n const focusPoint =\n mode === \"inside\"\n ? p\n : projectFixedPointOntoDiagonal(\n element,\n p,\n boundElement,\n startOrEnd,\n elementsMap,\n ) || p;\n const { fixedPoint } = calculateFixedPointForNonElbowArrowBinding(\n element,\n boundElement,\n startOrEnd,\n elementsMap,\n focusPoint,\n );\n\n return {\n mode,\n elementId: binding.elementId,\n fixedPoint,\n };\n }\n\n console.error(`could not repair binding for element`);\n\n return null;\n};\n\nconst restoreElementWithProperties = <\n T extends Required<Omit<ExcalidrawElement, \"customData\">> & {\n customData?: ExcalidrawElement[\"customData\"];\n /** @deprecated */\n boundElementIds?: readonly ExcalidrawElement[\"id\"][];\n /** @deprecated */\n strokeSharpness?: StrokeRoundness;\n },\n K extends Pick<T, keyof Omit<Required<T>, keyof ExcalidrawElement>>,\n>(\n element: T,\n extra: Pick<\n T,\n // This extra Pick<T, keyof K> ensure no excess properties are passed.\n // @ts-ignore TS complains here but type checks the call sites fine.\n keyof K\n > &\n Partial<Pick<ExcalidrawElement, \"type\" | \"x\" | \"y\" | \"customData\">>,\n): T => {\n const base: Pick<T, keyof ExcalidrawElement> = {\n type: extra.type || element.type,\n // all elements must have version > 0 so getSceneVersion() will pick up\n // newly added elements\n version: element.version || 1,\n versionNonce: element.versionNonce ?? 0,\n index: element.index ?? null,\n isDeleted: element.isDeleted ?? false,\n id: element.id || randomId(),\n fillStyle: element.fillStyle || DEFAULT_ELEMENT_PROPS.fillStyle,\n strokeWidth: element.strokeWidth || DEFAULT_ELEMENT_PROPS.strokeWidth,\n strokeStyle: element.strokeStyle ?? DEFAULT_ELEMENT_PROPS.strokeStyle,\n roughness: element.roughness ?? DEFAULT_ELEMENT_PROPS.roughness,\n opacity:\n element.opacity == null ? DEFAULT_ELEMENT_PROPS.opacity : element.opacity,\n angle: element.angle || (0 as Radians),\n x: extra.x ?? element.x ?? 0,\n y: extra.y ?? element.y ?? 0,\n strokeColor: element.strokeColor || DEFAULT_ELEMENT_PROPS.strokeColor,\n backgroundColor:\n element.backgroundColor || DEFAULT_ELEMENT_PROPS.backgroundColor,\n width: element.width || 0,\n height: element.height || 0,\n seed: element.seed ?? 1,\n groupIds: element.groupIds ?? [],\n frameId: element.frameId ?? null,\n roundness: element.roundness\n ? element.roundness\n : element.strokeSharpness === \"round\"\n ? {\n // for old elements that would now use adaptive radius algo,\n // use legacy algo instead\n type: isUsingAdaptiveRadius(element.type)\n ? ROUNDNESS.LEGACY\n : ROUNDNESS.PROPORTIONAL_RADIUS,\n }\n : null,\n boundElements: element.boundElementIds\n ? element.boundElementIds.map((id) => ({ type: \"arrow\", id }))\n : element.boundElements ?? [],\n updated: element.updated ?? getUpdatedTimestamp(),\n link: element.link ? normalizeLink(element.link) : null,\n locked: element.locked ?? false,\n };\n\n if (\"customData\" in element || \"customData\" in extra) {\n base.customData =\n \"customData\" in extra ? extra.customData : element.customData;\n }\n\n const ret = {\n // spread the original element properties to not lose unknown ones\n // for forward-compatibility\n ...element,\n // normalized properties\n ...base,\n ...getNormalizedDimensions(base),\n ...extra,\n } as unknown as T;\n\n // strip legacy props (migrated in previous steps)\n delete ret.strokeSharpness;\n delete ret.boundElementIds;\n\n return ret;\n};\n\nexport const restoreElement = (\n element: Exclude<ExcalidrawElement, ExcalidrawSelectionElement>,\n targetElementsMap: Readonly<ElementsMap>,\n localElementsMap: Readonly<ElementsMap> | null | undefined,\n opts?: {\n deleteInvisibleElements?: boolean;\n },\n): typeof element | null => {\n element = { ...element };\n\n switch (element.type) {\n case \"text\":\n // temp fix: cleanup legacy obsidian-excalidraw attribute else it'll\n // conflict when porting between the apps\n delete (element as any).rawText;\n\n let fontSize = element.fontSize;\n let fontFamily = element.fontFamily;\n if (\"font\" in element) {\n const [fontPx, _fontFamily]: [string, string] = (\n element as any\n ).font.split(\" \");\n fontSize = parseFloat(fontPx);\n fontFamily = getFontFamilyByName(_fontFamily);\n }\n const text = (typeof element.text === \"string\" && element.text) || \"\";\n\n // line-height might not be specified either when creating elements\n // programmatically, or when importing old diagrams.\n // For the latter we want to detect the original line height which\n // will likely differ from our per-font fixed line height we now use,\n // to maintain backward compatibility.\n const lineHeight =\n element.lineHeight ||\n (element.height\n ? // detect line-height from current element height and font-size\n detectLineHeight(element)\n : // no element height likely means programmatic use, so default\n // to a fixed line height\n getLineHeight(element.fontFamily));\n element = restoreElementWithProperties(element, {\n fontSize,\n fontFamily,\n text,\n textAlign: element.textAlign || DEFAULT_TEXT_ALIGN,\n verticalAlign: element.verticalAlign || DEFAULT_VERTICAL_ALIGN,\n containerId: element.containerId ?? null,\n originalText: element.originalText || text,\n autoResize: element.autoResize ?? true,\n lineHeight,\n });\n\n // if empty text, mark as deleted. We keep in array\n // for data integrity purposes (collab etc.)\n if (opts?.deleteInvisibleElements && !text && !element.isDeleted) {\n // TODO: we should not do this since it breaks sync / versioning when we exchange / apply just deltas and restore the elements (deletion isn't recorded)\n element = { ...element, originalText: text, isDeleted: true };\n element = bumpVersion(element);\n }\n\n return element;\n case \"freedraw\": {\n return restoreElementWithProperties(element, {\n points: element.points,\n simulatePressure: element.simulatePressure,\n pressures: element.pressures,\n });\n }\n case \"image\":\n return restoreElementWithProperties(element, {\n status: element.status || \"pending\",\n fileId: element.fileId,\n scale: element.scale || [1, 1],\n crop: element.crop ?? null,\n });\n case \"line\":\n // @ts-ignore LEGACY type\n // eslint-disable-next-line no-fallthrough\n case \"draw\":\n const { startArrowhead = null, endArrowhead = null } = element;\n let x = element.x;\n let y = element.y;\n let points = // migrate old arrow model to new one\n !Array.isArray(element.points) || element.points.length < 2\n ? [pointFrom(0, 0), pointFrom(element.width, element.height)]\n : element.points;\n\n if (points[0][0] !== 0 || points[0][1] !== 0) {\n ({ points, x, y } =\n LinearElementEditor.getNormalizeElementPointsAndCoords(element));\n }\n\n return restoreElementWithProperties(element, {\n type: \"line\",\n startBinding: null,\n endBinding: null,\n startArrowhead,\n endArrowhead,\n points,\n x,\n y,\n ...(isLineElement(element)\n ? {\n polygon: isValidPolygon(element.points)\n ? element.polygon ?? false\n : false,\n }\n : {}),\n ...getSizeFromPoints(points),\n });\n case \"arrow\": {\n const { startArrowhead = null, endArrowhead = \"arrow\" } = element;\n const x: number | undefined = element.x;\n const y: number | undefined = element.y;\n const points: readonly LocalPoint[] | undefined = // migrate old arrow model to new one\n !Array.isArray(element.points) || element.points.length < 2\n ? [pointFrom(0, 0), pointFrom(element.width, element.height)]\n : element.points;\n\n const base = {\n type: element.type,\n startBinding: repairBinding(\n element as ExcalidrawArrowElement,\n element.startBinding,\n targetElementsMap,\n localElementsMap,\n \"start\",\n ),\n endBinding: repairBinding(\n element as ExcalidrawArrowElement,\n element.endBinding,\n targetElementsMap,\n localElementsMap,\n \"end\",\n ),\n startArrowhead,\n endArrowhead,\n points,\n x,\n y,\n elbowed: (element as ExcalidrawArrowElement).elbowed,\n ...getSizeFromPoints(points),\n };\n\n // TODO: Separate arrow from linear element\n const restoredElement = isElbowArrow(element)\n ? restoreElementWithProperties(element as ExcalidrawElbowArrowElement, {\n ...base,\n elbowed: true,\n fixedSegments:\n element.fixedSegments?.length && base.points.length >= 4\n ? element.fixedSegments\n : null,\n startIsSpecial: element.startIsSpecial,\n endIsSpecial: element.endIsSpecial,\n })\n : restoreElementWithProperties(element as ExcalidrawArrowElement, base);\n\n return {\n ...restoredElement,\n ...LinearElementEditor.getNormalizeElementPointsAndCoords(\n restoredElement,\n ),\n };\n }\n\n // generic elements\n case \"ellipse\":\n case \"rectangle\":\n case \"diamond\":\n case \"iframe\":\n case \"embeddable\":\n return restoreElementWithProperties(element, {});\n case \"magicframe\":\n case \"frame\":\n return restoreElementWithProperties(element, {\n name: element.name ?? null,\n });\n\n // Don't use default case so as to catch a missing an element type case.\n // We also don't want to throw, but instead return void so we filter\n // out these unsupported elements from the restored array.\n }\n return null;\n};\n\n/**\n * Repairs container element's boundElements array by removing duplicates and\n * fixing containerId of bound elements if not present. Also removes any\n * bound elements that do not exist in the elements array.\n *\n * NOTE mutates elements.\n */\nconst repairContainerElement = (\n container: Mutable<ExcalidrawElement>,\n elementsMap: Map<string, Mutable<ExcalidrawElement>>,\n) => {\n if (container.boundElements) {\n // copy because we're not cloning on restore, and we don't want to mutate upstream\n const boundElements = container.boundElements.slice();\n\n // dedupe bindings & fix boundElement.containerId if not set already\n const boundIds = new Set<ExcalidrawElement[\"id\"]>();\n container.boundElements = boundElements.reduce(\n (\n acc: Mutable<NonNullable<ExcalidrawElement[\"boundElements\"]>>,\n binding,\n ) => {\n const boundElement = elementsMap.get(binding.id);\n if (boundElement && !boundIds.has(binding.id)) {\n boundIds.add(binding.id);\n\n if (boundElement.isDeleted) {\n return acc;\n }\n\n acc.push(binding);\n\n if (\n isTextElement(boundElement) &&\n // being slightly conservative here, preserving existing containerId\n // if defined, lest boundElements is stale\n !boundElement.containerId\n ) {\n (boundElement as Mutable<typeof boundElement>).containerId =\n container.id;\n }\n }\n return acc;\n },\n [],\n );\n }\n};\n\n/**\n * Repairs target bound element's container's boundElements array,\n * or removes contaienrId if container does not exist.\n *\n * NOTE mutates elements.\n */\nconst repairBoundElement = (\n boundElement: Mutable<ExcalidrawTextElement>,\n elementsMap: Map<string, Mutable<ExcalidrawElement>>,\n) => {\n const container = boundElement.containerId\n ? elementsMap.get(boundElement.containerId)\n : null;\n\n (boundElement as Mutable<typeof boundElement>).angle = (\n isArrowElement(container) ? 0 : container?.angle ?? 0\n ) as Radians;\n\n if (!container) {\n boundElement.containerId = null;\n return;\n }\n\n if (boundElement.isDeleted) {\n return;\n }\n\n if (\n container.boundElements &&\n !container.boundElements.find((binding) => binding.id === boundElement.id)\n ) {\n // copy because we're not cloning on restore, and we don't want to mutate upstream\n const boundElements = (\n container.boundElements || (container.boundElements = [])\n ).slice();\n boundElements.push({ type: \"text\", id: boundElement.id });\n container.boundElements = boundElements;\n }\n};\n\n/**\n * Remove an element's frameId if its containing frame is non-existent\n *\n * NOTE mutates elements.\n */\nconst repairFrameMembership = (\n element: Mutable<ExcalidrawElement>,\n elementsMap: Map<string, Mutable<ExcalidrawElement>>,\n) => {\n if (element.frameId) {\n const containingFrame = elementsMap.get(element.frameId);\n\n if (!containingFrame) {\n element.frameId = null;\n }\n }\n};\n\nexport const restoreElements = (\n targetElements: ImportedDataState[\"elements\"],\n /** NOTE doesn't serve for reconciliation */\n localElements: Readonly<ElementsMapOrArray> | null | undefined,\n opts?:\n | {\n refreshDimensions?: boolean;\n repairBindings?: boolean;\n deleteInvisibleElements?: boolean;\n }\n | undefined,\n): OrderedExcalidrawElement[] => {\n // used to detect duplicate top-level element ids\n const existingIds = new Set<string>();\n const targetElementsMap = arrayToMap(targetElements || []);\n const localElementsMap = localElements ? arrayToMap(localElements) : null;\n const restoredElements = syncInvalidIndices(\n (targetElements || []).reduce((elements, element) => {\n // filtering out selection, which is legacy, no longer kept in elements,\n // and causing issues if retained\n if (element.type === \"selection\") {\n return elements;\n }\n\n let migratedElement: ExcalidrawElement | null = restoreElement(\n element,\n targetElementsMap,\n localElementsMap,\n {\n deleteInvisibleElements: opts?.deleteInvisibleElements,\n },\n );\n if (migratedElement) {\n const localElement = localElementsMap?.get(element.id);\n\n const shouldMarkAsDeleted =\n opts?.deleteInvisibleElements && isInvisiblySmallElement(element);\n\n if (\n shouldMarkAsDeleted ||\n (localElement && localElement.version > migratedElement.version)\n ) {\n migratedElement = bumpVersion(migratedElement, localElement?.version);\n }\n\n if (shouldMarkAsDeleted) {\n migratedElement = { ...migratedElement, isDeleted: true };\n }\n\n if (existingIds.has(migratedElement.id)) {\n migratedElement = { ...migratedElement, id: randomId() };\n }\n existingIds.add(migratedElement.id);\n\n elements.push(migratedElement);\n }\n\n return elements;\n }, [] as ExcalidrawElement[]),\n );\n\n if (!opts?.repairBindings) {\n return restoredElements;\n }\n\n // repair binding. Mutates elements.\n const restoredElementsMap = arrayToMap(restoredElements);\n for (const element of restoredElements) {\n if (element.frameId) {\n repairFrameMembership(element, restoredElementsMap);\n }\n\n if (isTextElement(element) && element.containerId) {\n repairBoundElement(element, restoredElementsMap);\n } else if (element.boundElements) {\n repairContainerElement(element, restoredElementsMap);\n }\n\n if (opts.refreshDimensions && isTextElement(element)) {\n Object.assign(\n element,\n refreshTextDimensions(\n element,\n getContainerElement(element, restoredElementsMap),\n restoredElementsMap,\n ),\n );\n }\n\n if (isLinearElement(element)) {\n if (\n element.startBinding &&\n (!restoredElementsMap.has(element.startBinding.elementId) ||\n !isArrowElement(element))\n ) {\n (element as Mutable<ExcalidrawLinearElement>).startBinding = null;\n }\n if (\n element.endBinding &&\n (!restoredElementsMap.has(element.endBinding.elementId) ||\n !isArrowElement(element))\n ) {\n (element as Mutable<ExcalidrawLinearElement>).endBinding = null;\n }\n }\n }\n\n // NOTE (mtolmacs): Temporary fix for extremely large arrows\n // Need to iterate again so we have attached text nodes in elementsMap\n return restoredElements.map((element) => {\n if (\n isElbowArrow(element) &&\n !isArrowBoundToElement(element) &&\n !validateElbowPoints(element.points)\n ) {\n return {\n ...element,\n ...updateElbowArrowPoints(\n element,\n restoredElementsMap as NonDeletedSceneElementsMap,\n {\n points: [\n pointFrom<LocalPoint>(0, 0),\n element.points[element.points.length - 1],\n ],\n },\n ),\n index: element.index,\n };\n }\n\n if (\n isElbowArrow(element) &&\n element.startBinding &&\n element.endBinding &&\n element.startBinding.elementId === element.endBinding.elementId &&\n element.points.length > 1 &&\n element.points.some(\n ([rx, ry]) => Math.abs(rx) > 1e6 || Math.abs(ry) > 1e6,\n )\n ) {\n console.error(\"Fixing self-bound elbow arrow\", element.id);\n const boundElement = restoredElementsMap.get(\n element.startBinding.elementId,\n );\n if (!boundElement) {\n console.error(\n \"Bound element not found\",\n element.startBinding.elementId,\n );\n return element;\n }\n\n return {\n ...element,\n x: boundElement.x + boundElement.width / 2,\n y: boundElement.y - 5,\n width: boundElement.width,\n height: boundElement.height,\n points: [\n pointFrom<LocalPoint>(0, 0),\n pointFrom<LocalPoint>(0, -10),\n pointFrom<LocalPoint>(boundElement.width / 2 + 5, -10),\n pointFrom<LocalPoint>(\n boundElement.width / 2 + 5,\n boundElement.height / 2 + 5,\n ),\n ],\n };\n }\n\n return element;\n });\n};\n\nconst coalesceAppStateValue = <\n T extends keyof ReturnType<typeof getDefaultAppState>,\n>(\n key: T,\n appState: Exclude<ImportedDataState[\"appState\"], null | undefined>,\n defaultAppState: ReturnType<typeof getDefaultAppState>,\n) => {\n const value = appState[key];\n // NOTE the value! assertion is needed in TS 4.5.5 (fixed in newer versions)\n return value !== undefined ? value! : defaultAppState[key];\n};\n\nconst LegacyAppStateMigrations: {\n [K in keyof LegacyAppState]: (\n ImportedDataState: Exclude<ImportedDataState[\"appState\"], null | undefined>,\n defaultAppState: ReturnType<typeof getDefaultAppState>,\n ) => [LegacyAppState[K][1], AppState[LegacyAppState[K][1]]];\n} = {\n isSidebarDocked: (appState, defaultAppState) => {\n return [\n \"defaultSidebarDockedPreference\",\n appState.isSidebarDocked ??\n coalesceAppStateValue(\n \"defaultSidebarDockedPreference\",\n appState,\n defaultAppState,\n ),\n ];\n },\n};\n\nexport const restoreAppState = (\n appState: ImportedDataState[\"appState\"],\n localAppState: Partial<AppState> | null | undefined,\n): RestoredAppState => {\n appState = appState || {};\n const defaultAppState = getDefaultAppState();\n const nextAppState = {} as typeof defaultAppState;\n\n // first, migrate all legacy AppState properties to new ones. We do it\n // in one go before migrate the rest of the properties in case the new ones\n // depend on checking any other key (i.e. they are coupled)\n for (const legacyKey of Object.keys(\n LegacyAppStateMigrations,\n ) as (keyof typeof LegacyAppStateMigrations)[]) {\n if (legacyKey in appState) {\n const [nextKey, nextValue] = LegacyAppStateMigrations[legacyKey](\n appState,\n defaultAppState,\n );\n (nextAppState as any)[nextKey] = nextValue;\n }\n }\n\n for (const [key, defaultValue] of Object.entries(defaultAppState) as [\n keyof typeof defaultAppState,\n any,\n ][]) {\n // if AppState contains a legacy key, prefer that one and migrate its\n // value to the new one\n const suppliedValue = appState[key];\n\n const localValue = localAppState ? localAppState[key] : undefined;\n (nextAppState as any)[key] =\n suppliedValue !== undefined\n ? suppliedValue\n : localValue !== undefined\n ? localValue\n : defaultValue;\n }\n\n return {\n ...nextAppState,\n cursorButton: localAppState?.cursorButton || \"up\",\n // reset on fresh restore so as to hide the UI button if penMode not active\n penDetected:\n localAppState?.penDetected ??\n (appState.penMode ? appState.penDetected ?? false : false),\n activeTool: {\n ...updateActiveTool(\n defaultAppState,\n nextAppState.activeTool.type &&\n AllowedExcalidrawActiveTools[nextAppState.activeTool.type]\n ? nextAppState.activeTool\n : { type: \"selection\" },\n ),\n lastActiveTool: null,\n locked: nextAppState.activeTool.locked ?? false,\n },\n // Migrates from previous version where appState.zoom was a number\n zoom: {\n value: getNormalizedZoom(\n isFiniteNumber(appState.zoom)\n ? appState.zoom\n : appState.zoom?.value ?? defaultAppState.zoom.value,\n ),\n },\n openSidebar:\n // string (legacy)\n typeof (appState.openSidebar as any as string) === \"string\"\n ? { name: DEFAULT_SIDEBAR.name }\n : nextAppState.openSidebar,\n gridSize: getNormalizedGridSize(\n isFiniteNumber(appState.gridSize) ? appState.gridSize : DEFAULT_GRID_SIZE,\n ),\n gridStep: getNormalizedGridStep(\n isFiniteNumber(appState.gridStep) ? appState.gridStep : DEFAULT_GRID_STEP,\n ),\n editingFrame: null,\n };\n};\n\nexport const restore = (\n data: Pick<ImportedDataState, \"appState\" | \"elements\" | \"files\"> | null,\n /**\n * Local AppState (`this.state` or initial state from localStorage) so that we\n * don't overwrite local state with default values (when values not\n * explicitly specified).\n * Supply `null` if you can't get access to it.\n */\n localAppState: Partial<AppState> | null | undefined,\n localElements: readonly ExcalidrawElement[] | null | undefined,\n elementsConfig?: {\n refreshDimensions?: boolean;\n repairBindings?: boolean;\n deleteInvisibleElements?: boolean;\n },\n): RestoredDataState => {\n return {\n elements: restoreElements(data?.elements, localElements, elementsConfig),\n appState: restoreAppState(data?.appState, localAppState || null),\n files: data?.files || {},\n };\n};\n\nconst restoreLibraryItem = (libraryItem: LibraryItem) => {\n const elements = restoreElements(\n getNonDeletedElements(libraryItem.elements),\n null,\n );\n return elements.length ? { ...libraryItem, elements } : null;\n};\n\nexport const restoreLibraryItems = (\n libraryItems: ImportedDataState[\"libraryItems\"] = [],\n defaultStatus: LibraryItem[\"status\"],\n) => {\n const restoredItems: LibraryItem[] = [];\n for (const item of libraryItems) {\n // migrate older libraries\n if (Array.isArray(item)) {\n const restoredItem = restoreLibraryItem({\n status: defaultStatus,\n elements: item,\n id: randomId(),\n created: Date.now(),\n });\n if (restoredItem) {\n restoredItems.push(restoredItem);\n }\n } else {\n const _item = item as MarkOptional<\n LibraryItem,\n \"id\" | \"status\" | \"created\"\n >;\n const restoredItem = restoreLibraryItem({\n ..._item,\n id: _item.id || randomId(),\n status: _item.status || defaultStatus,\n created: _item.created || Date.now(),\n });\n if (restoredItem) {\n restoredItems.push(restoredItem);\n }\n }\n }\n return restoredItems;\n};\n"],
|
|
5
|
+
"mappings": "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,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,0BAA0B,EAAE;AAAA,EACrE,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,KAAK,0DAAK,aAAa,EAAE,cAAc,cAAc,EAAE;AAAA,EACzD,EAAE,K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",
|
|
6
|
+
"names": ["EXPORT_DATA_TYPES", "MIME_TYPES", "MIME_TYPES", "FRAME_STYLE", "FONT_FAMILY", "SVG_NS", "THEME", "THEME_FILTER", "MIME_TYPES", "EXPORT_DATA_TYPES", "getFontString", "getCommonBounds", "getElementAbsoluteCoords", "MIME_TYPES", "mimeTypes", "MIME_TYPES", "promiseTry", "promiseTry", "LOCAL_FONT_PROTOCOL", "debounce", "debounce", "workerPool", "promiseTry", "LOCAL_FONT_PROTOCOL", "LOCAL_FONT_PROTOCOL", "GOOGLE_FONTS_RANGES", "GOOGLE_FONTS_RANGES", "fontFaces", "promiseTry", "isTextElement", "getElementAbsoluteCoords", "MIME_TYPES", "THEME", "getElementAbsoluteCoords", "isTextElement", "FRAME_STYLE", "MIME_TYPES", "isTestEnv", "createPlaceholderEmbeddableLabel", "getBoundTextElement", "getContainerElement", "isIframeLikeElement", "isTextElement", "ShapeCache", "getElementAbsoluteCoords", "x1", "y1", "x2", "y2", "element", "opacity", "uncroppedWidth", "uncroppedHeight", "getFontString", "FRAME_STYLE", "FONT_FAMILY", "THEME", "SVG_NS", "THEME_FILTER", "getElementAbsoluteCoords", "MIME_TYPES", "EXPORT_DATA_TYPES", "getCommonBounds", "pointFrom", "DEFAULT_FONT_FAMILY", "DEFAULT_TEXT_ALIGN", "FONT_FAMILY", "DEFAULT_ELEMENT_PROPS", "DEFAULT_GRID_SIZE", "DEFAULT_GRID_STEP", "arrayToMap", "normalizeLink", "LinearElementEditor", "getContainerElement", "isArrowElement", "isTextElement", "syncInvalidIndices", "FONT_FAMILY", "DEFAULT_FONT_FAMILY", "LinearElementEditor", "DEFAULT_ELEMENT_PROPS", "normalizeLink", "DEFAULT_TEXT_ALIGN", "pointFrom", "startArrowhead", "endArrowhead", "x", "y", "points", "isTextElement", "isArrowElement", "arrayToMap", "syncInvalidIndices", "getContainerElement", "DEFAULT_GRID_SIZE", "DEFAULT_GRID_STEP", "MIME_TYPES", "MIME_TYPES", "MIME_TYPES", "MIME_TYPES", "EXPORT_DATA_TYPES"]
|
|
7
|
+
}
|